Built motion from commit de6d21e4.|2.5.35
authorAndrea Amorese <andrea.amorese@xenialab.it>
Thu, 14 Oct 2021 15:16:35 +0000 (17:16 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Thu, 14 Oct 2021 15:16:35 +0000 (17:16 +0200)
1309 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/ar.json
public/app/main/apps/dashboards/i18n/cs.json
public/app/main/apps/dashboards/i18n/da.json
public/app/main/apps/dashboards/i18n/de.json
public/app/main/apps/dashboards/i18n/en.json
public/app/main/apps/dashboards/i18n/es.json
public/app/main/apps/dashboards/i18n/et.json
public/app/main/apps/dashboards/i18n/fa.json
public/app/main/apps/dashboards/i18n/fi.json
public/app/main/apps/dashboards/i18n/fr.json
public/app/main/apps/dashboards/i18n/he.json
public/app/main/apps/dashboards/i18n/hi.json
public/app/main/apps/dashboards/i18n/id.json
public/app/main/apps/dashboards/i18n/it.json
public/app/main/apps/dashboards/i18n/ja.json
public/app/main/apps/dashboards/i18n/ko.json
public/app/main/apps/dashboards/i18n/lt.json
public/app/main/apps/dashboards/i18n/lv.json
public/app/main/apps/dashboards/i18n/nl.json
public/app/main/apps/dashboards/i18n/no.json
public/app/main/apps/dashboards/i18n/pl.json
public/app/main/apps/dashboards/i18n/pt-BR.json
public/app/main/apps/dashboards/i18n/pt-PT.json
public/app/main/apps/dashboards/i18n/ru.json
public/app/main/apps/dashboards/i18n/sv.json
public/app/main/apps/dashboards/i18n/tr.json
public/app/main/apps/dashboards/i18n/zh-CN.json
public/app/main/apps/dashboards/i18n/zh-TW.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/ar.json
public/app/main/apps/tools/i18n/cs.json
public/app/main/apps/tools/i18n/da.json
public/app/main/apps/tools/i18n/de.json
public/app/main/apps/tools/i18n/en.json
public/app/main/apps/tools/i18n/es.json
public/app/main/apps/tools/i18n/et.json
public/app/main/apps/tools/i18n/fa.json
public/app/main/apps/tools/i18n/fi.json
public/app/main/apps/tools/i18n/fr.json
public/app/main/apps/tools/i18n/he.json
public/app/main/apps/tools/i18n/hi.json
public/app/main/apps/tools/i18n/id.json
public/app/main/apps/tools/i18n/it.json
public/app/main/apps/tools/i18n/ja.json
public/app/main/apps/tools/i18n/ko.json
public/app/main/apps/tools/i18n/lt.json
public/app/main/apps/tools/i18n/lv.json
public/app/main/apps/tools/i18n/nl.json
public/app/main/apps/tools/i18n/no.json
public/app/main/apps/tools/i18n/pl.json
public/app/main/apps/tools/i18n/pt-BR.json
public/app/main/apps/tools/i18n/pt-PT.json
public/app/main/apps/tools/i18n/ru.json
public/app/main/apps/tools/i18n/sv.json
public/app/main/apps/tools/i18n/tr.json
public/app/main/apps/tools/i18n/zh-CN.json
public/app/main/apps/tools/i18n/zh-TW.json
public/app/main/apps/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.d440db8d.js [moved from public/scripts/app.5edda6d7.js with 53% similarity]
public/styles/app.0b303223.css [deleted file]
public/styles/app.2a49015a.css [new file with mode: 0644]
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 [new file with mode: 0644]
server/api/teamVoicePrefix/teamVoicePrefix.model.js [new file with mode: 0644]
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 [new file with mode: 0644]
server/api/userVoicePrefix/userVoicePrefix.model.js [new file with mode: 0644]
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/encryptor/index.js
server/components/export/csv.js
server/components/export/pdf.js
server/components/export/xlsx.js
server/components/extensions/rewrite.js
server/components/import/cm/csv.js
server/components/import/cm/csv2.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/config/express.js
server/config/license/hardware.js
server/config/license/index.js
server/config/license/util.js
server/config/local.env.js
server/config/logger.js
server/config/pm2/config.js
server/config/pm2/index.js
server/config/schedule/chat.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/index.js
server/migrations/2.5.35.js [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 ab60a32..17a1780 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.5.34",
+  "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-14T12:12:33.778Z",
+    "time": "2021-10-14T14:59:17.623Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 12e048a..691f084 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.5.34",
+  "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-14T12:12:33.778Z",
+    "time": "2021-10-14T14:59:17.623Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 225e85b..44490f4 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.34",
+  "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": {
@@ -50,6 +50,7 @@
     "aws-sdk": "2.610.0",
     "bimedia-machine-uuid": "1.0.1",
     "bluebird": "3.7.2",
+    "html-entities": "2.3.2",
     "body-parser": "1.19.0",
     "compare-versions": "3.6.0",
     "composable-middleware": "0.3.0",
index 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 cdfe883..954aad6 100644 (file)
     "AUTOCLOSE": "إغلاق علامة تبويب الاتصال تلقائيًا بعد التخلص منها",
     "AGENT_PRESENCE": "حضور الوكيل",
     "SELECT_TEAM": "اختر فريق",
-    "AVAILABLE": "متوفرة"
+    "AVAILABLE": "متوفرة",
+    "CONFIRM": "يتأكد",
+    "FILTERS": "المرشحات",
+    "FILTER_CHAT_WEBSITES": "تصفية مواقع الدردشة",
+    "FILTER_FAX_ACCOUNTS": "تصفية حسابات الفاكس",
+    "FILTER_MAIL_ACCOUNTS": "تصفية حسابات البريد",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "تصفية الحسابات المفتوحة",
+    "FILTER_SMS_ACCOUNTS": "تصفية حسابات الرسائل القصيرة",
+    "FILTER_WHATSAPP_ACCOUNTS": "تصفية حسابات Whatsapp",
+    "SETFILTERS": "تعيين عوامل التصفية"
   }
 }
index b0683a9..a6ed12d 100644 (file)
     "AUTOCLOSE": "Po likvidaci automaticky zavřete kartu kontaktů",
     "AGENT_PRESENCE": "Přítomnost agenta",
     "SELECT_TEAM": "Vybrat tým",
-    "AVAILABLE": "Dostupný"
+    "AVAILABLE": "Dostupný",
+    "CONFIRM": "Potvrdit",
+    "FILTERS": "Filtry",
+    "FILTER_CHAT_WEBSITES": "Filtrujte webové stránky chatu",
+    "FILTER_FAX_ACCOUNTS": "Filtrovat faxové účty",
+    "FILTER_MAIL_ACCOUNTS": "Filtrovat poštovní účty",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrovat účty Openchannel",
+    "FILTER_SMS_ACCOUNTS": "Filtrovat sms účty",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtrujte účty Whatsapp",
+    "SETFILTERS": "Nastavit filtry"
   }
 }
index 7e1efa1..71ce7df 100644 (file)
     "AUTOCLOSE": "Luk kontaktfanen automatisk efter bortskaffelse",
     "AGENT_PRESENCE": "Agent tilstedeværelse",
     "SELECT_TEAM": "Vælg Team",
-    "AVAILABLE": "Ledig"
+    "AVAILABLE": "Ledig",
+    "CONFIRM": "Bekræfte",
+    "FILTERS": "Filtre",
+    "FILTER_CHAT_WEBSITES": "Filtrer chatwebsteder",
+    "FILTER_FAX_ACCOUNTS": "Filtrer faxkonti",
+    "FILTER_MAIL_ACCOUNTS": "Filtrer postkonti",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrer Openchannel -konti",
+    "FILTER_SMS_ACCOUNTS": "Filtrer sms -konti",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtrer Whatsapp -konti",
+    "SETFILTERS": "Indstil filtre"
   }
 }
index df9fabe..7e10ef6 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"
+    "AVAILABLE": "Erhältlich",
+    "CONFIRM": "Bestätigen Sie",
+    "FILTERS": "Filter",
+    "FILTER_CHAT_WEBSITES": "Chat-Websites filtern",
+    "FILTER_FAX_ACCOUNTS": "Faxkonten filtern",
+    "FILTER_MAIL_ACCOUNTS": "E-Mail-Konten filtern",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Openchannel-Konten filtern",
+    "FILTER_SMS_ACCOUNTS": "SMS-Konten filtern",
+    "FILTER_WHATSAPP_ACCOUNTS": "WhatsApp-Konten filtern",
+    "SETFILTERS": "Filter einstellen",
+    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
+    "AGENT_PRESENCE": "Bereitschaftsstatus",
+    "SELECT_TEAM": "Team auswählen"
   }
 }
index 1851427..e11e99f 100644 (file)
     "SELECT_AGENT": "Select Agent",
     "MARK_AS_UNREAD": "Mark as unread",
     "FILTER_VOICE_QUEUES": "Filter Voice Queues",
+    "FILTER_CHAT_WEBSITES": "Filter Chat Websites",
+    "FILTER_SMS_ACCOUNTS": "Filter Sms Accounts",
+    "FILTER_FAX_ACCOUNTS": "Filter Fax Accounts",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filter Openchannel Accounts",
+    "FILTER_MAIL_ACCOUNTS": "Filter Mail Accounts",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filter Whatsapp Accounts",
+    "SETFILTERS": "Set Filters",
+    "FILTERS": "Filters",
+    "CONFIRM": "Confirm",
     "CHANNEL_WAITING_TEXT": "Waiting Queue Interactions",
     "CHANNEL_QUEUE": "Queue",
     "CHANNEL_FROM": "From",
index 24e2fde..3314ce2 100644 (file)
     "AUTOCLOSE": "Cerrar automáticamente la pestaña de contacto después de su eliminación",
     "AGENT_PRESENCE": "Presencia del agente",
     "SELECT_TEAM": "Selecciona un equipo",
-    "AVAILABLE": "Disponible"
+    "AVAILABLE": "Disponible",
+    "CONFIRM": "Confirmar",
+    "FILTERS": "Filtros",
+    "FILTER_CHAT_WEBSITES": "Filtrar sitios web de chat",
+    "FILTER_FAX_ACCOUNTS": "Filtrar cuentas de fax",
+    "FILTER_MAIL_ACCOUNTS": "Filtrar cuentas de correo",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrar cuentas de Openchannel",
+    "FILTER_SMS_ACCOUNTS": "Filtrar cuentas de SMS",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtrar cuentas de Whatsapp",
+    "SETFILTERS": "Establecer filtros"
   }
 }
index e584f60..ca0d646 100644 (file)
     "AUTOCLOSE": "Pärast utiliseerimist sulgege kontaktikaart automaatselt",
     "AGENT_PRESENCE": "Agendi kohalolek",
     "SELECT_TEAM": "Valige Meeskond",
-    "AVAILABLE": "Saadaval"
+    "AVAILABLE": "Saadaval",
+    "CONFIRM": "Kinnitage",
+    "FILTERS": "Filtrid",
+    "FILTER_CHAT_WEBSITES": "Filtreeri vestluse veebisaite",
+    "FILTER_FAX_ACCOUNTS": "Faksikontode filtreerimine",
+    "FILTER_MAIL_ACCOUNTS": "Filtreerige meilikontosid",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtreerige avatud kanalite kontod",
+    "FILTER_SMS_ACCOUNTS": "Sms -kontode filtreerimine",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtreerige Whatsappi kontosid",
+    "SETFILTERS": "Määrake filtrid"
   }
 }
index 3f4c065..b490de0 100644 (file)
     "AUTOCLOSE": "پس از دفع ، به طور خودکار برگه تماس را ببندید",
     "AGENT_PRESENCE": "حضور نماینده",
     "SELECT_TEAM": "تیم را انتخاب کنید",
-    "AVAILABLE": "در دسترس"
+    "AVAILABLE": "در دسترس",
+    "CONFIRM": "تایید",
+    "FILTERS": "فیلترها",
+    "FILTER_CHAT_WEBSITES": "وب سایت های چت را فیلتر کنید",
+    "FILTER_FAX_ACCOUNTS": "فیلتر کردن حسابهای فکس",
+    "FILTER_MAIL_ACCOUNTS": "فیلتر کردن حساب های ایمیل",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "فیلتر کردن حساب های بازکن",
+    "FILTER_SMS_ACCOUNTS": "فیلتر کردن حساب های اس ام اس",
+    "FILTER_WHATSAPP_ACCOUNTS": "حساب های Whatsapp را فیلتر کنید",
+    "SETFILTERS": "تنظیم فیلترها"
   }
 }
index aa90057..618a712 100644 (file)
     "AUTOCLOSE": "Sulje kosketusvälilehti automaattisesti hävittämisen jälkeen",
     "AGENT_PRESENCE": "Agentin läsnäolo",
     "SELECT_TEAM": "Valitse Tiimi",
-    "AVAILABLE": "Saatavilla"
+    "AVAILABLE": "Saatavilla",
+    "CONFIRM": "Vahvistaa",
+    "FILTERS": "Suodattimet",
+    "FILTER_CHAT_WEBSITES": "Suodata chat -verkkosivustot",
+    "FILTER_FAX_ACCOUNTS": "Suodata faksitilit",
+    "FILTER_MAIL_ACCOUNTS": "Suodata sähköpostitilit",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Suodata Openchannel -tilit",
+    "FILTER_SMS_ACCOUNTS": "Suodata tekstiviestit",
+    "FILTER_WHATSAPP_ACCOUNTS": "Suodata Whatsapp -tilit",
+    "SETFILTERS": "Aseta suodattimet"
   }
 }
index 6eb6d0a..c7cef89 100644 (file)
     "AUTOCLOSE": "Fermer automatiquement l'onglet de contact après l'élimination",
     "AGENT_PRESENCE": "Présence d'agent",
     "SELECT_TEAM": "Choisis une équipe",
-    "AVAILABLE": "Disponible"
+    "AVAILABLE": "Disponible",
+    "CONFIRM": "Confirmer",
+    "FILTERS": "Filtres",
+    "FILTER_CHAT_WEBSITES": "Filtrer les sites de chat",
+    "FILTER_FAX_ACCOUNTS": "Filtrer les comptes de télécopie",
+    "FILTER_MAIL_ACCOUNTS": "Filtrer les comptes de messagerie",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrer les comptes Openchannel",
+    "FILTER_SMS_ACCOUNTS": "Filtrer les comptes SMS",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtrer les comptes Whatsapp",
+    "SETFILTERS": "Définir des filtres"
   }
 }
index 9544ca1..cb42c8c 100644 (file)
     "AUTOCLOSE": "סגור אוטומטית את לשונית אנשי הקשר לאחר סילוק",
     "AGENT_PRESENCE": "נוכחות סוכנים",
     "SELECT_TEAM": "תבחר קבוצה",
-    "AVAILABLE": "זמין"
+    "AVAILABLE": "זמין",
+    "CONFIRM": "לְאַשֵׁר",
+    "FILTERS": "מסננים",
+    "FILTER_CHAT_WEBSITES": "סנן אתרי צ'אט",
+    "FILTER_FAX_ACCOUNTS": "סנן חשבונות פקס",
+    "FILTER_MAIL_ACCOUNTS": "סנן חשבונות דואר",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "סנן חשבונות ערוצים",
+    "FILTER_SMS_ACCOUNTS": "סנן חשבונות SMS",
+    "FILTER_WHATSAPP_ACCOUNTS": "סנן חשבונות וואטסאפ",
+    "SETFILTERS": "הגדר מסננים"
   }
 }
index 9e0ed86..bfab87d 100644 (file)
     "AUTOCLOSE": "निपटान के बाद संपर्क टैब को स्वचालित रूप से बंद करें",
     "AGENT_PRESENCE": "एजेंट उपस्थिति",
     "SELECT_TEAM": "टीम का चयन",
-    "AVAILABLE": "उपलब्ध"
+    "AVAILABLE": "उपलब्ध",
+    "CONFIRM": "पुष्टि करें",
+    "FILTERS": "फिल्टर",
+    "FILTER_CHAT_WEBSITES": "चैट वेबसाइटों को फ़िल्टर करें",
+    "FILTER_FAX_ACCOUNTS": "फ़ैक्स खाते फ़िल्टर करें",
+    "FILTER_MAIL_ACCOUNTS": "मेल खातों को फ़िल्टर करें",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "ओपनचैनल खातों को फ़िल्टर करें",
+    "FILTER_SMS_ACCOUNTS": "एसएमएस खातों को फ़िल्टर करें",
+    "FILTER_WHATSAPP_ACCOUNTS": "व्हाट्सएप खातों को फ़िल्टर करें",
+    "SETFILTERS": "फ़िल्टर सेट करें"
   }
 }
index 8922377..1739268 100644 (file)
     "AUTOCLOSE": "Tutup tab kontak secara otomatis setelah dibuang",
     "AGENT_PRESENCE": "Kehadiran Agen",
     "SELECT_TEAM": "Pilih Tim",
-    "AVAILABLE": "Tersedia"
+    "AVAILABLE": "Tersedia",
+    "CONFIRM": "Mengonfirmasi",
+    "FILTERS": "Filter",
+    "FILTER_CHAT_WEBSITES": "Filter Situs Web Obrolan",
+    "FILTER_FAX_ACCOUNTS": "Filter Akun Faks",
+    "FILTER_MAIL_ACCOUNTS": "Filter Akun Email",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filter Akun Saluran Terbuka",
+    "FILTER_SMS_ACCOUNTS": "Filter Akun Sms",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filter Akun Whatsapp",
+    "SETFILTERS": "Setel Filter"
   }
 }
index 18bc3b7..237bcd8 100644 (file)
     "SELECT_AGENT": "Seleziona Agente",
     "MARK_AS_UNREAD": "Segna come non letta",
     "FILTER_VOICE_QUEUES": "Filtra Code Voce",
+    "FILTER_CHAT_WEBSITES": "Filtra Chat Website",
+    "FILTER_SMS_ACCOUNTS": "Filtra Sms Account",
+    "FILTER_FAX_ACCOUNTS": "Filtra Fax Account",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtra Openchannel Account",
+    "FILTER_MAIL_ACCOUNTS": "Filtra Mail Account",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtra Whatsapp Account",
+    "SETFILTERS": "Seleziona i filtri",
+    "FILTERS": "Filtri",
+    "CONFIRM": "Conferma",
     "CHANNEL_WAITING_TEXT": "Interazioni in attesa in coda",
     "CHANNEL_QUEUE": "Coda",
     "CHANNEL_FROM": "Da",
index 2838ef3..c0d206f 100644 (file)
     "AUTOCLOSE": "廃棄後、コンタクトタブを自動的に閉じる",
     "AGENT_PRESENCE": "エージェントの存在",
     "SELECT_TEAM": "チームを選ぶ",
-    "AVAILABLE": "利用可能"
+    "AVAILABLE": "利用可能",
+    "CONFIRM": "確認",
+    "FILTERS": "フィルタ",
+    "FILTER_CHAT_WEBSITES": "チャットWebサイトのフィルター",
+    "FILTER_FAX_ACCOUNTS": "ファックスアカウントのフィルタリング",
+    "FILTER_MAIL_ACCOUNTS": "メールアカウントのフィルタリング",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Openchannelアカウントをフィルタリングする",
+    "FILTER_SMS_ACCOUNTS": "Smsアカウントをフィルタリングする",
+    "FILTER_WHATSAPP_ACCOUNTS": "Whatsappアカウントをフィルタリングする",
+    "SETFILTERS": "フィルタを設定する"
   }
 }
index a7495eb..01decd8 100644 (file)
     "AUTOCLOSE": "폐기 후 자동으로 접촉 탭 닫기",
     "AGENT_PRESENCE": "에이전트 존재",
     "SELECT_TEAM": "팀 선택",
-    "AVAILABLE": "사용 가능"
+    "AVAILABLE": "사용 가능",
+    "CONFIRM": "확인하다",
+    "FILTERS": "필터",
+    "FILTER_CHAT_WEBSITES": "채팅 웹사이트 필터링",
+    "FILTER_FAX_ACCOUNTS": "팩스 계정 필터링",
+    "FILTER_MAIL_ACCOUNTS": "메일 계정 필터링",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Openchannel 계정 필터링",
+    "FILTER_SMS_ACCOUNTS": "SMS 계정 필터링",
+    "FILTER_WHATSAPP_ACCOUNTS": "Whatsapp 계정 필터링",
+    "SETFILTERS": "필터 설정"
   }
 }
index 36ed40a..dc8e5f4 100644 (file)
     "AUTOCLOSE": "Po šalinimo automatiškai uždarykite kontaktų skirtuką",
     "AGENT_PRESENCE": "Agento buvimas",
     "SELECT_TEAM": "Pasirinkite Komanda",
-    "AVAILABLE": "Galima"
+    "AVAILABLE": "Galima",
+    "CONFIRM": "Patvirtinti",
+    "FILTERS": "Filtrai",
+    "FILTER_CHAT_WEBSITES": "Filtruokite pokalbių svetaines",
+    "FILTER_FAX_ACCOUNTS": "Filtruoti fakso paskyras",
+    "FILTER_MAIL_ACCOUNTS": "Filtruokite pašto paskyras",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtruokite „Openchannel“ paskyras",
+    "FILTER_SMS_ACCOUNTS": "Filtruoti SMS paskyras",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtruokite „Whatsapp“ paskyras",
+    "SETFILTERS": "Nustatykite filtrus"
   }
 }
index ac0b19a..530afae 100644 (file)
     "AUTOCLOSE": "Pēc iznīcināšanas automātiski aizveriet kontaktu cilni",
     "AGENT_PRESENCE": "Aģentu klātbūtne",
     "SELECT_TEAM": "Atlasiet Komanda",
-    "AVAILABLE": "Pieejams"
+    "AVAILABLE": "Pieejams",
+    "CONFIRM": "Apstiprināt",
+    "FILTERS": "Filtri",
+    "FILTER_CHAT_WEBSITES": "Filtrējiet tērzēšanas vietnes",
+    "FILTER_FAX_ACCOUNTS": "Filtrēt faksa kontus",
+    "FILTER_MAIL_ACCOUNTS": "Filtrējiet pasta kontus",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrējiet Openchannel kontus",
+    "FILTER_SMS_ACCOUNTS": "Filtrējiet īsziņu kontus",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtrējiet Whatsapp kontus",
+    "SETFILTERS": "Iestatiet filtrus"
   }
 }
index 9a5dea3..5a4d642 100644 (file)
     "AUTOCLOSE": "Sluit het contacttabblad automatisch na verwijdering",
     "AGENT_PRESENCE": "Aanwezigheid van agent",
     "SELECT_TEAM": "Selecteer team",
-    "AVAILABLE": "Beschikbaar"
+    "AVAILABLE": "Beschikbaar",
+    "CONFIRM": "Bevestigen",
+    "FILTERS": "Filters",
+    "FILTER_CHAT_WEBSITES": "Chat-websites filteren",
+    "FILTER_FAX_ACCOUNTS": "Faxaccounts filteren",
+    "FILTER_MAIL_ACCOUNTS": "E-mailaccounts filteren",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Openchannel-accounts filteren",
+    "FILTER_SMS_ACCOUNTS": "Sms-accounts filteren",
+    "FILTER_WHATSAPP_ACCOUNTS": "Whatsapp-accounts filteren",
+    "SETFILTERS": "Filters instellen"
   }
 }
index ffaf471..844e68d 100644 (file)
     "AUTOCLOSE": "Lukk kontaktfanen automatisk etter avhending",
     "AGENT_PRESENCE": "Agent Tilstedeværelse",
     "SELECT_TEAM": "Velg team",
-    "AVAILABLE": "Tilgjengelig"
+    "AVAILABLE": "Tilgjengelig",
+    "CONFIRM": "Bekrefte",
+    "FILTERS": "Filtre",
+    "FILTER_CHAT_WEBSITES": "Filtrer nettsteder for chat",
+    "FILTER_FAX_ACCOUNTS": "Filtrer fakskontoer",
+    "FILTER_MAIL_ACCOUNTS": "Filtrer postkontoer",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrer Openchannel -kontoer",
+    "FILTER_SMS_ACCOUNTS": "Filtrer sms -kontoer",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtrer Whatsapp -kontoer",
+    "SETFILTERS": "Sett filtre"
   }
 }
index a9d671e..869b28f 100644 (file)
     "AUTOCLOSE": "Automatycznie zamykaj zakładkę kontaktową po utylizacji",
     "AGENT_PRESENCE": "Obecność agenta",
     "SELECT_TEAM": "Wybierz drużynę",
-    "AVAILABLE": "Do dyspozycji"
+    "AVAILABLE": "Do dyspozycji",
+    "CONFIRM": "Potwierdzać",
+    "FILTERS": "Filtry",
+    "FILTER_CHAT_WEBSITES": "Filtruj strony internetowe czatu",
+    "FILTER_FAX_ACCOUNTS": "Filtruj konta faksów",
+    "FILTER_MAIL_ACCOUNTS": "Filtruj konta pocztowe",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtruj konta Openchannel",
+    "FILTER_SMS_ACCOUNTS": "Filtruj konta SMS",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtruj konta Whatsapp",
+    "SETFILTERS": "Ustaw filtry"
   }
 }
index e3a1740..72d2366 100644 (file)
     "AUTOCLOSE": "Fechar automaticamente a guia de contato após o descarte",
     "AGENT_PRESENCE": "Presença do Agente",
     "SELECT_TEAM": "Selecionar time",
-    "AVAILABLE": "Disponível"
+    "AVAILABLE": "Disponível",
+    "CONFIRM": "confirme",
+    "FILTERS": "Filtros",
+    "FILTER_CHAT_WEBSITES": "Filtrar sites de bate-papo",
+    "FILTER_FAX_ACCOUNTS": "Filtrar contas de fax",
+    "FILTER_MAIL_ACCOUNTS": "Filtrar contas de correio",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrar contas de canal aberto",
+    "FILTER_SMS_ACCOUNTS": "Filtrar contas de SMS",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtrar contas do Whatsapp",
+    "SETFILTERS": "Definir Filtros"
   }
 }
index 1789543..9598d6e 100644 (file)
     "AUTOCLOSE": "Fechar automaticamente a guia de contato após o descarte",
     "AGENT_PRESENCE": "Presença do Agente",
     "SELECT_TEAM": "Selecionar time",
-    "AVAILABLE": "Disponível"
+    "AVAILABLE": "Disponível",
+    "CONFIRM": "confirme",
+    "FILTERS": "Filtros",
+    "FILTER_CHAT_WEBSITES": "Filtrar sites de bate-papo",
+    "FILTER_FAX_ACCOUNTS": "Filtrar contas de fax",
+    "FILTER_MAIL_ACCOUNTS": "Filtrar contas de correio",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrar contas de canal aberto",
+    "FILTER_SMS_ACCOUNTS": "Filtrar contas de SMS",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtrar contas do Whatsapp",
+    "SETFILTERS": "Definir Filtros"
   }
 }
index 0de9ff7..93dda02 100644 (file)
     "AUTOCLOSE": "Автоматически закрывать вкладку контактов после удаления",
     "AGENT_PRESENCE": "Присутствие агента",
     "SELECT_TEAM": "Выбрать команду",
-    "AVAILABLE": "Имеется в наличии"
+    "AVAILABLE": "Имеется в наличии",
+    "CONFIRM": "Подтверждать",
+    "FILTERS": "Фильтры",
+    "FILTER_CHAT_WEBSITES": "Фильтр веб-сайтов чата",
+    "FILTER_FAX_ACCOUNTS": "Фильтр учетных записей факсов",
+    "FILTER_MAIL_ACCOUNTS": "Фильтр почтовых аккаунтов",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Фильтр учетных записей Openchannel",
+    "FILTER_SMS_ACCOUNTS": "Фильтр смс аккаунтов",
+    "FILTER_WHATSAPP_ACCOUNTS": "Фильтр учетных записей WhatsApp",
+    "SETFILTERS": "Установить фильтры"
   }
 }
index a80e2a3..1f8ac1c 100644 (file)
     "AUTOCLOSE": "Stäng kontaktfliken automatiskt efter bortskaffande",
     "AGENT_PRESENCE": "Agent närvaro",
     "SELECT_TEAM": "Välj lag",
-    "AVAILABLE": "Tillgängligt"
+    "AVAILABLE": "Tillgängligt",
+    "CONFIRM": "Bekräfta",
+    "FILTERS": "Filter",
+    "FILTER_CHAT_WEBSITES": "Filtrera chattwebbplatser",
+    "FILTER_FAX_ACCOUNTS": "Filtrera faxkonton",
+    "FILTER_MAIL_ACCOUNTS": "Filtrera e -postkonton",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrera Openchannel -konton",
+    "FILTER_SMS_ACCOUNTS": "Filtrera sms -konton",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtrera Whatsapp -konton",
+    "SETFILTERS": "Ställ in filter"
   }
 }
index d15fe72..3cb787d 100644 (file)
     "AUTOCLOSE": "Atıldıktan sonra temas sekmesini otomatik olarak kapatın",
     "AGENT_PRESENCE": "Temsilci Varlığı",
     "SELECT_TEAM": "Takım Seçin",
-    "AVAILABLE": "Mevcut"
+    "AVAILABLE": "Mevcut",
+    "CONFIRM": "Onaylamak",
+    "FILTERS": "Filtreler",
+    "FILTER_CHAT_WEBSITES": "Sohbet Web Sitelerini Filtrele",
+    "FILTER_FAX_ACCOUNTS": "Faks Hesaplarını Filtrele",
+    "FILTER_MAIL_ACCOUNTS": "Posta Hesaplarını Filtrele",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Açık Kanal Hesaplarını Filtrele",
+    "FILTER_SMS_ACCOUNTS": "Sms Hesaplarını Filtrele",
+    "FILTER_WHATSAPP_ACCOUNTS": "Whatsapp Hesaplarını Filtrele",
+    "SETFILTERS": "Filtreleri Ayarla"
   }
 }
index f45d697..0e25ca9 100644 (file)
     "AUTOCLOSE": "处置后自动关闭接触片",
     "AGENT_PRESENCE": "代理人在场",
     "SELECT_TEAM": "选择团队",
-    "AVAILABLE": "可用的"
+    "AVAILABLE": "可用的",
+    "CONFIRM": "确认",
+    "FILTERS": "过滤器",
+    "FILTER_CHAT_WEBSITES": "过滤聊天网站",
+    "FILTER_FAX_ACCOUNTS": "过滤传真帐户",
+    "FILTER_MAIL_ACCOUNTS": "过滤邮件帐户",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "过滤开放渠道账户",
+    "FILTER_SMS_ACCOUNTS": "过滤短信账户",
+    "FILTER_WHATSAPP_ACCOUNTS": "筛选 Whatsapp 帐户",
+    "SETFILTERS": "设置过滤器"
   }
 }
index c2cc3eb..aff2a86 100644 (file)
     "AUTOCLOSE": "處置後自動關閉接觸片",
     "AGENT_PRESENCE": "代理人在場",
     "SELECT_TEAM": "選擇團隊",
-    "AVAILABLE": "可用的"
+    "AVAILABLE": "可用的",
+    "CONFIRM": "確認",
+    "FILTERS": "過濾器",
+    "FILTER_CHAT_WEBSITES": "過濾聊天網站",
+    "FILTER_FAX_ACCOUNTS": "過濾傳真帳戶",
+    "FILTER_MAIL_ACCOUNTS": "過濾郵件帳戶",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "過濾開放渠道賬戶",
+    "FILTER_SMS_ACCOUNTS": "過濾短信賬戶",
+    "FILTER_WHATSAPP_ACCOUNTS": "篩選 Whatsapp 帳戶",
+    "SETFILTERS": "設置過濾器"
   }
 }
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 b5d2d5f..ec3946f 100644 (file)
@@ -62,7 +62,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أكبر من أو تساوي",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي",
       "TIMEOUT_REQUIRED": "حقل الزامي",
-      "AUTOCREATE_FIELD_REQUIRED": "حقل الزامي"
+      "AUTOCREATE_FIELD_REQUIRED": "حقل الزامي",
+      "CHANNEL_REQUIRED": "حقل الزامي"
     },
     "HELP": {
       "DEFAULTUSER": "المستخدم الافتراضي",
       "SCRIPT_INFO": "إدراج وصف للبرنامج النصي",
       "SCRIPT_TYPE": "أدخل تصنيفًا للبرنامج النصي (على سبيل المثال ، حليقة ، باش ...)",
       "HEADERS": "ملاحظة: يجب أن يكون قسم الرؤوس بتنسيق RAW JSON {\"key\": \"value\"}\nملاحظة: إذا لم يتم ملئها ، سيتم إرسال القيمة الافتراضية",
-      "TIMEOUT": "طلب مهلة بالثواني. يجب أن تكون القيمة بين 1 و 10 والقيمة الافتراضية هي 5."
+      "TIMEOUT": "طلب مهلة بالثواني. يجب أن تكون القيمة بين 1 و 10 والقيمة الافتراضية هي 5.",
+      "MANAGED": "العدد الإجمالي للتفاعلات المكتملة",
+      "OPENED": "العدد الإجمالي للتفاعلات النشطة"
     },
     "ADD_TRUNK": "أضف قناة",
     "AND_SECOND": "والثانية",
     "LEVEL": "مستوى",
     "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني",
     "SELECT_LEVEL": "حدد مستوى",
-    "TITLEFONTSIZE": "حجم عنوان الخط"
+    "TITLEFONTSIZE": "حجم عنوان الخط",
+    "EMAIL": "بريد إلكتروني",
+    "FILTERCHATWEBSITES": "تصفية مواقع الدردشة",
+    "FILTEREMAILACCOUNTS": "تصفية حسابات البريد الإلكتروني",
+    "FILTERFAXACCOUNTS": "تصفية حسابات الفاكس",
+    "FILTEROPENCHANNELACCOUNTS": "تصفية حسابات OpenChannel",
+    "FILTERSMSACCOUNTS": "تصفية حسابات الرسائل القصيرة",
+    "FILTERWHATSAPPACCOUNTS": "تصفية حسابات Whatsapp",
+    "MANAGED": "مُدار",
+    "MANAGED_TEXT": "التفاعلات المدارة",
+    "OPENED": "افتتح",
+    "OPENED_TEXT": "التفاعلات المفتوحة"
   }
 }
index b1b36ce..6b447ed 100644 (file)
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Hodnota musí být větší nebo rovna",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna",
       "TIMEOUT_REQUIRED": "Povinné pole",
-      "AUTOCREATE_FIELD_REQUIRED": "Povinné pole"
+      "AUTOCREATE_FIELD_REQUIRED": "Povinné pole",
+      "CHANNEL_REQUIRED": "Povinné pole"
     },
     "HOST": "Host",
     "SECRET": "Secret",
       "SCRIPT": "Vložte skript",
       "SCRIPT_INFO": "Vložte popis skriptu",
       "SCRIPT_TYPE": "Vložte typologii skriptu (např. Curl, bash ...)",
-      "TIMEOUT": "Vyžádejte si časový limit v sekundách. Hodnota musí být mezi 1 a 10 a výchozí hodnota je 5."
+      "TIMEOUT": "Vyžádejte si časový limit v sekundách. Hodnota musí být mezi 1 a 10 a výchozí hodnota je 5.",
+      "MANAGED": "Celkový počet dokončených interakcí",
+      "OPENED": "Celkový počet aktivních interakcí"
     },
     "EDIT_TRUNK": "Edit Trunk",
     "DELETE_TRUNK": "Delete Trunk",
     "LEVEL": "Úroveň",
     "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně",
     "SELECT_LEVEL": "Vyberte úroveň",
-    "TITLEFONTSIZE": "Velikost názvu písma"
+    "TITLEFONTSIZE": "Velikost názvu písma",
+    "EMAIL": "E-mailem",
+    "FILTERCHATWEBSITES": "Filtrujte webové stránky chatu",
+    "FILTEREMAILACCOUNTS": "Filtrovat e -mailové účty",
+    "FILTERFAXACCOUNTS": "Filtrovat faxové účty",
+    "FILTEROPENCHANNELACCOUNTS": "Filtrujte účty OpenChannel",
+    "FILTERSMSACCOUNTS": "Filtrovat sms účty",
+    "FILTERWHATSAPPACCOUNTS": "Filtrujte účty Whatsapp",
+    "MANAGED": "Podařilo se",
+    "MANAGED_TEXT": "Spravované interakce",
+    "OPENED": "Otevřeno",
+    "OPENED_TEXT": "Otevřené interakce"
   }
 }
index aae3bb1..11ec7a1 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Værdien skal være større end eller lig med",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med",
       "TIMEOUT_REQUIRED": "Obligatorisk felt",
-      "AUTOCREATE_FIELD_REQUIRED": "Obligatorisk felt"
+      "AUTOCREATE_FIELD_REQUIRED": "Obligatorisk felt",
+      "CHANNEL_REQUIRED": "Obligatorisk felt"
     },
     "HOST": "Host",
     "SECRET": "Hemmelig",
       "SCRIPT_INFO": "Indsæt en beskrivelse af scriptet",
       "SCRIPT_TYPE": "Indsæt en typologi for scriptet (f.eks. Curl, bash ...)",
       "HEADERS": "Bemærk: Headers-sektionen skal være i RAW JSON-format {\"key\": \"value\"}\nBemærk: Hvis ikke udfyldt, sendes standardværdien",
-      "TIMEOUT": "Anmod om timeout i sekunder. Værdien skal være mellem 1 og 10, og standardværdien er 5."
+      "TIMEOUT": "Anmod om timeout i sekunder. Værdien skal være mellem 1 og 10, og standardværdien er 5.",
+      "MANAGED": "Det samlede antal afsluttede interaktioner",
+      "OPENED": "Det samlede antal aktive interaktioner"
     },
     "EDIT_TRUNK": "Rediger Trunk",
     "DELETE_TRUNK": "Slet Trunk",
     "LEVEL": "Niveau",
     "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition",
     "SELECT_LEVEL": "Vælg et niveau",
-    "TITLEFONTSIZE": "Skrifttitelstørrelse"
+    "TITLEFONTSIZE": "Skrifttitelstørrelse",
+    "EMAIL": "E -mail",
+    "FILTERCHATWEBSITES": "Filtrer chatwebsteder",
+    "FILTEREMAILACCOUNTS": "Filtrer e -mail -konti",
+    "FILTERFAXACCOUNTS": "Filtrer faxkonti",
+    "FILTEROPENCHANNELACCOUNTS": "Filtrer OpenChannel -konti",
+    "FILTERSMSACCOUNTS": "Filtrer sms -konti",
+    "FILTERWHATSAPPACCOUNTS": "Filtrer Whatsapp -konti",
+    "MANAGED": "Lykkedes",
+    "MANAGED_TEXT": "Administrerede interaktioner",
+    "OPENED": "Åbnet",
+    "OPENED_TEXT": "Åbnede interaktioner"
   }
 }
index 6207bf0..13dcfaa 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"
+      "CHANNEL_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."
+      "MANAGED": "Die Gesamtzahl der abgeschlossenen Interaktionen",
+      "OPENED": "Die Gesamtzahl der aktiven Interaktionen",
+      "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"
+    "EMAIL": "Email",
+    "FILTERCHATWEBSITES": "Chat-Websites filtern",
+    "FILTEREMAILACCOUNTS": "E-Mail-Konten filtern",
+    "FILTERFAXACCOUNTS": "Faxkonten filtern",
+    "FILTEROPENCHANNELACCOUNTS": "OpenChannel-Konten filtern",
+    "FILTERSMSACCOUNTS": "SMS-Konten filtern",
+    "FILTERWHATSAPPACCOUNTS": "WhatsApp-Konten filtern",
+    "MANAGED": "Gelang es",
+    "MANAGED_TEXT": "Verwaltete Interaktionen",
+    "OPENED": "Geöffnet",
+    "OPENED_TEXT": "Geöffnete Interaktionen",
+    "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..3da53c1 100644 (file)
@@ -20,6 +20,7 @@
     "LINK": "Link [https://]",
     "BACKGROUND": "Background",
     "FOREGROUND": "Foreground",
+    "IGNOREDIALERCONTACTID": "Ignore dialer contact Id",
     "NONE": "None",
     "TOTAL": "Total",
     "ABANDONED": "Abandoned",
     "SCRIPT": "Script",
     "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Type",
+    "EMAIL": "Email",
+    "FILTERFAXACCOUNTS": "Filter Fax Accounts",
+    "FILTERSMSACCOUNTS": "Filter Sms Accounts",
+    "FILTERCHATWEBSITES": "Filter Chat Websites",
+    "FILTERWHATSAPPACCOUNTS": "Filter Whatsapp Accounts",
+    "FILTEREMAILACCOUNTS": "Filter Email Accounts",
+    "FILTEROPENCHANNELACCOUNTS": "Filter OpenChannel Accounts",
+    "OPENED": "Opened",
+    "OPENED_TEXT": "Opened Interactions",
+    "MANAGED": "Managed",
+    "MANAGED_TEXT": "Managed Interactions",
     "ERRORS": {
       "INFO_REQUIRED": "Mandatory field",
       "SCRIPT_REQUIRED": "Mandatory field",
@@ -74,6 +86,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",
       "AGENT_REQUIRED": "Mandatory field",
       "TIMEOUT_REQUIRED": "Mandatory field",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to"
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "CHANNEL_REQUIRED": "Mandatory field"
     },
     "HOST": "Host",
     "SECRET": "Secret",
     "DESCRIPTION": "Description",
     "ADD_TRUNK": "Add Trunk",
     "HELP": {
+      "OPENED": "The total number of Active Interactions",
+      "MANAGED": "The total number of Completed Interactions",
       "SCRIPT_INFO": "Insert a description for the script",
       "SCRIPT_TYPE": "Insert a typology for the script (eg. curl, bash...)",
       "INFO": "Insert title",
index 751cdf0..e41d101 100644 (file)
@@ -39,7 +39,9 @@
       "SCRIPT_INFO": "Insertar una descripción para el script",
       "SCRIPT_TYPE": "Inserte una tipología para el script (por ejemplo, curl, bash ...)",
       "HEADERS": "Nota: La sección de encabezados debe estar en formato RAW JSON {\"clave\": \"valor\"}\nNota: Si no se completa, se enviará el valor predeterminado",
-      "TIMEOUT": "Solicitar tiempo de espera en segundos. El valor debe estar entre 1 y 10 y el valor predeterminado es 5."
+      "TIMEOUT": "Solicitar tiempo de espera en segundos. El valor debe estar entre 1 y 10 y el valor predeterminado es 5.",
+      "MANAGED": "El número total de interacciones completadas",
+      "OPENED": "El número total de interacciones activas"
     },
     "ERRORS": {
       "ACCOUNT_REQUIRED": "Campo obligatorio",
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El valor debe ser mayor o igual que",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que",
       "TIMEOUT_REQUIRED": "Campo obligatorio",
-      "AUTOCREATE_FIELD_REQUIRED": "Campo obligatorio"
+      "AUTOCREATE_FIELD_REQUIRED": "Campo obligatorio",
+      "CHANNEL_REQUIRED": "Campo obligatorio"
     },
     "15MIN": "15 minutos",
     "1H": "1 hora",
     "LEVEL": "Nivel",
     "SECOND_LEVEL_DISPOSITION": "Tipificación de segundo nivel",
     "SELECT_LEVEL": "Seleccionar un nivel",
-    "TITLEFONTSIZE": "Tamaño del título de fuente"
+    "TITLEFONTSIZE": "Tamaño del título de fuente",
+    "EMAIL": "Correo electrónico",
+    "FILTERCHATWEBSITES": "Filtrar sitios web de chat",
+    "FILTEREMAILACCOUNTS": "Filtrar cuentas de correo electrónico",
+    "FILTERFAXACCOUNTS": "Filtrar cuentas de fax",
+    "FILTEROPENCHANNELACCOUNTS": "Filtrar cuentas de OpenChannel",
+    "FILTERSMSACCOUNTS": "Filtrar cuentas de SMS",
+    "FILTERWHATSAPPACCOUNTS": "Filtrar cuentas de Whatsapp",
+    "MANAGED": "Administrado",
+    "MANAGED_TEXT": "Interacciones gestionadas",
+    "OPENED": "Abrió",
+    "OPENED_TEXT": "Interacciones abiertas"
   }
 }
index a0feca2..dbe4bd6 100644 (file)
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "TIMEOUT_REQUIRED": "Kohustuslik väli",
-      "AUTOCREATE_FIELD_REQUIRED": "Kohustuslik väli"
+      "AUTOCREATE_FIELD_REQUIRED": "Kohustuslik väli",
+      "CHANNEL_REQUIRED": "Kohustuslik väli"
     },
     "HOST": "Host",
     "SECRET": "Secret",
       "SCRIPT": "Sisestage skript",
       "SCRIPT_INFO": "Sisestage skripti kirjeldus",
       "SCRIPT_TYPE": "Sisestage skripti tüpoloogia (nt curl, bash ...)",
-      "TIMEOUT": "Taotle sekundit sekundit. Väärtus peab olema vahemikus 1–10 ja vaikeväärtus 5."
+      "TIMEOUT": "Taotle sekundit sekundit. Väärtus peab olema vahemikus 1–10 ja vaikeväärtus 5.",
+      "MANAGED": "Lõpetatud interaktsioonide koguarv",
+      "OPENED": "Aktiivsete interaktsioonide koguarv"
     },
     "EDIT_TRUNK": "Edit Trunk",
     "DELETE_TRUNK": "Delete Trunk",
     "LEVEL": "Tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "SELECT_LEVEL": "Valige tase",
-    "TITLEFONTSIZE": "Fondi pealkirja suurus"
+    "TITLEFONTSIZE": "Fondi pealkirja suurus",
+    "EMAIL": "E -post",
+    "FILTERCHATWEBSITES": "Filtreeri vestluse veebisaite",
+    "FILTEREMAILACCOUNTS": "E -posti kontode filtreerimine",
+    "FILTERFAXACCOUNTS": "Faksikontode filtreerimine",
+    "FILTEROPENCHANNELACCOUNTS": "Filtreerige OpenChanneli kontosid",
+    "FILTERSMSACCOUNTS": "Sms -kontode filtreerimine",
+    "FILTERWHATSAPPACCOUNTS": "Filtreerige Whatsappi kontosid",
+    "MANAGED": "Hallatud",
+    "MANAGED_TEXT": "Hallatud interaktsioonid",
+    "OPENED": "Avatud",
+    "OPENED_TEXT": "Avatud interaktsioonid"
   }
 }
index aeac236..f07289f 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "مقدار باید بیشتر یا مساوی باشد",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر از یا مساوی باشد",
       "TIMEOUT_REQUIRED": "زمینه اجباری",
-      "AUTOCREATE_FIELD_REQUIRED": "زمینه اجباری"
+      "AUTOCREATE_FIELD_REQUIRED": "زمینه اجباری",
+      "CHANNEL_REQUIRED": "زمینه اجباری"
     },
     "HOST": "کشور میزبان",
     "SECRET": "راز",
       "SCRIPT_INFO": "توضیحی را برای فیلمنامه درج کنید",
       "SCRIPT_TYPE": "برای اسکریپت یک نوع شناسی درج کنید (به عنوان مثال ، حلقه ، خط ...)",
       "HEADERS": "توجه: بخش هدرها باید با فرمت RAW JSON باشد {\"key\": \"مقدار\"}\nتوجه: در صورت عدم تکمیل ، مقدار پیش فرض ارسال می شود",
-      "TIMEOUT": "ثانیه را درخواست کنید مقدار باید بین 1 تا 10 باشد و مقدار پیش فرض 5 است."
+      "TIMEOUT": "ثانیه را درخواست کنید مقدار باید بین 1 تا 10 باشد و مقدار پیش فرض 5 است.",
+      "MANAGED": "تعداد کل تعاملات تکمیل شده",
+      "OPENED": "تعداد کل فعل و انفعالات فعال"
     },
     "EDIT_TRUNK": "ویرایش تنه",
     "DELETE_TRUNK": "تنه را حذف کنید",
     "LEVEL": "مرحله",
     "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم",
     "SELECT_LEVEL": "یک سطح را انتخاب کنید",
-    "TITLEFONTSIZE": "اندازه عنوان قلم"
+    "TITLEFONTSIZE": "اندازه عنوان قلم",
+    "EMAIL": "پست الکترونیک",
+    "FILTERCHATWEBSITES": "وب سایت های چت را فیلتر کنید",
+    "FILTEREMAILACCOUNTS": "فیلتر کردن حساب های ایمیل",
+    "FILTERFAXACCOUNTS": "فیلتر کردن حسابهای فکس",
+    "FILTEROPENCHANNELACCOUNTS": "فیلتر کردن حسابهای OpenChannel",
+    "FILTERSMSACCOUNTS": "فیلتر کردن حساب های اس ام اس",
+    "FILTERWHATSAPPACCOUNTS": "حساب های Whatsapp را فیلتر کنید",
+    "MANAGED": "اداره می شود",
+    "MANAGED_TEXT": "تعاملات مدیریت شده",
+    "OPENED": "باز شد",
+    "OPENED_TEXT": "تعاملات باز شده"
   }
 }
index 5e64170..09d6d30 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Arvon on oltava suurempi tai yhtä suuri kuin",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin",
       "TIMEOUT_REQUIRED": "Pakollinen kenttä",
-      "AUTOCREATE_FIELD_REQUIRED": "Pakollinen kenttä"
+      "AUTOCREATE_FIELD_REQUIRED": "Pakollinen kenttä",
+      "CHANNEL_REQUIRED": "Pakollinen kenttä"
     },
     "HOST": "Host",
     "SECRET": "Salainen",
       "SCRIPT_INFO": "Lisää skriptin kuvaus",
       "SCRIPT_TYPE": "Lisää skriptin typologia (esim. Curl, bash ...)",
       "HEADERS": "Huomaa: Otsikkoosion on oltava RAW JSON -muodossa {\"avain\": \"arvo\"}\nHuomaa: Jos ole täytetty, oletusarvo lähetetään",
-      "TIMEOUT": "Pyydä aikakatkaisua sekunnissa. Arvon on oltava välillä 1–10 ja oletusarvo on 5."
+      "TIMEOUT": "Pyydä aikakatkaisua sekunnissa. Arvon on oltava välillä 1–10 ja oletusarvo on 5.",
+      "MANAGED": "Valmiiden vuorovaikutusten kokonaismäärä",
+      "OPENED": "Aktiivisten vuorovaikutusten kokonaismäärä"
     },
     "EDIT_TRUNK": "Muokkaa tavaratilaan",
     "DELETE_TRUNK": "Poista tavaratilaan",
     "LEVEL": "Taso",
     "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus",
     "SELECT_LEVEL": "Valitse taso",
-    "TITLEFONTSIZE": "Kirjasimen otsikon koko"
+    "TITLEFONTSIZE": "Kirjasimen otsikon koko",
+    "EMAIL": "Sähköposti",
+    "FILTERCHATWEBSITES": "Suodata chat -verkkosivustot",
+    "FILTEREMAILACCOUNTS": "Suodata sähköpostitilit",
+    "FILTERFAXACCOUNTS": "Suodata faksitilit",
+    "FILTEROPENCHANNELACCOUNTS": "Suodata OpenChannel -tilit",
+    "FILTERSMSACCOUNTS": "Suodata tekstiviestit",
+    "FILTERWHATSAPPACCOUNTS": "Suodata Whatsapp -tilit",
+    "MANAGED": "Hallinnoitu",
+    "MANAGED_TEXT": "Hallitut vuorovaikutukset",
+    "OPENED": "Avattu",
+    "OPENED_TEXT": "Avatut vuorovaikutukset"
   }
 }
index 9c210a8..4bdaafa 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La valeur doit être supérieure ou égale à",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à",
       "TIMEOUT_REQUIRED": "Champ obligatoire",
-      "AUTOCREATE_FIELD_REQUIRED": "Champ obligatoire"
+      "AUTOCREATE_FIELD_REQUIRED": "Champ obligatoire",
+      "CHANNEL_REQUIRED": "Champ obligatoire"
     },
     "HOST": "Host",
     "SECRET": "Secret",
       "SCRIPT_INFO": "Insérez une description du script",
       "SCRIPT_TYPE": "Insérez une typologie pour le script (par exemple, curl, bash ...)",
       "HEADERS": "Remarque: la section des en-têtes doit être au format RAW JSON {\"clé\": \"valeur\"}\nRemarque: S'il n'est pas rempli, la valeur par défaut sera envoyée",
-      "TIMEOUT": "Délai d'expiration de la demande en secondes. La valeur doit être comprise entre 1 et 10 et la valeur par défaut est 5."
+      "TIMEOUT": "Délai d'expiration de la demande en secondes. La valeur doit être comprise entre 1 et 10 et la valeur par défaut est 5.",
+      "MANAGED": "Le nombre total d'interactions terminées",
+      "OPENED": "Le nombre total d'interactions actives"
     },
     "EDIT_TRUNK": "Tronc Modifier",
     "DELETE_TRUNK": "Supprimer Trunk",
     "LEVEL": "Niveau",
     "SECOND_LEVEL_DISPOSITION": "Disposition de deuxième niveau",
     "SELECT_LEVEL": "Sélectionnez un niveau",
-    "TITLEFONTSIZE": "Taille du titre de la police"
+    "TITLEFONTSIZE": "Taille du titre de la police",
+    "EMAIL": "E-mail",
+    "FILTERCHATWEBSITES": "Filtrer les sites de chat",
+    "FILTEREMAILACCOUNTS": "Filtrer les comptes de messagerie",
+    "FILTERFAXACCOUNTS": "Filtrer les comptes de télécopie",
+    "FILTEROPENCHANNELACCOUNTS": "Filtrer les comptes OpenChannel",
+    "FILTERSMSACCOUNTS": "Filtrer les comptes SMS",
+    "FILTERWHATSAPPACCOUNTS": "Filtrer les comptes Whatsapp",
+    "MANAGED": "Géré",
+    "MANAGED_TEXT": "Interactions gérées",
+    "OPENED": "Ouvert",
+    "OPENED_TEXT": "Interactions ouvertes"
   }
 }
index 00697e4..a7ea0ee 100644 (file)
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "הערך חייב להיות גדול או שווה לו",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות פחות או שווה ל",
       "TIMEOUT_REQUIRED": "שדה חובה",
-      "AUTOCREATE_FIELD_REQUIRED": "שדה חובה"
+      "AUTOCREATE_FIELD_REQUIRED": "שדה חובה",
+      "CHANNEL_REQUIRED": "שדה חובה"
     },
     "HOST": "מארח",
     "SECRET": "סוד",
       "SCRIPT_INFO": "הוסף תיאור לתסריט",
       "SCRIPT_TYPE": "הוסף טיפולוגיה לתסריט (למשל תלתל, bash ...)",
       "HEADERS": "הערה: קטע הכותרות חייב להיות בפורמט RAW JSON {\"key\": \"value\"}\nהערה: אם לא מולא, ערך ברירת המחדל יישלח",
-      "TIMEOUT": "בקש פסק זמן בשניות. הערך חייב להיות בין 1 ל -10 וערך ברירת המחדל הוא 5."
+      "TIMEOUT": "בקש פסק זמן בשניות. הערך חייב להיות בין 1 ל -10 וערך ברירת המחדל הוא 5.",
+      "MANAGED": "המספר הכולל של אינטראקציות שהושלמו",
+      "OPENED": "המספר הכולל של אינטראקציות פעילות"
     },
     "EDIT_TRUNK": "ערוך קו ראשי",
     "DELETE_TRUNK": "מחק קו ראשי",
     "LEVEL": "רָמָה",
     "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה",
     "SELECT_LEVEL": "בחר רמה",
-    "TITLEFONTSIZE": "גודל כותרת הגופן"
+    "TITLEFONTSIZE": "גודל כותרת הגופן",
+    "EMAIL": "אימייל",
+    "FILTERCHATWEBSITES": "סנן אתרי צ'אט",
+    "FILTEREMAILACCOUNTS": "סנן חשבונות דוא\"ל",
+    "FILTERFAXACCOUNTS": "סנן חשבונות פקס",
+    "FILTEROPENCHANNELACCOUNTS": "סנן חשבונות OpenChannel",
+    "FILTERSMSACCOUNTS": "סנן חשבונות SMS",
+    "FILTERWHATSAPPACCOUNTS": "סנן חשבונות וואטסאפ",
+    "MANAGED": "מנוהל",
+    "MANAGED_TEXT": "אינטראקציות מנוהלות",
+    "OPENED": "נפתח",
+    "OPENED_TEXT": "אינטראקציות פתוחות"
   }
 }
index 7319cb7..eef7a3c 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "मान इससे अधिक या उसके बराबर होना चाहिए",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए",
       "TIMEOUT_REQUIRED": "आवश्यक स्थान",
-      "AUTOCREATE_FIELD_REQUIRED": "आवश्यक स्थान"
+      "AUTOCREATE_FIELD_REQUIRED": "आवश्यक स्थान",
+      "CHANNEL_REQUIRED": "आवश्यक स्थान"
     },
     "HOST": "होस्ट",
     "SECRET": "गुप्त",
       "SCRIPT_INFO": "स्क्रिप्ट के लिए विवरण डालें",
       "SCRIPT_TYPE": "स्क्रिप्ट के लिए एक टाइपोलॉजी डालें (जैसे। कर्ल, बैश ...)",
       "HEADERS": "नोट: हेडर्स खंड रॉ JSON प्रारूप में होना चाहिए {\"key\": \"value\"}\nनोट: यदि नहीं भरा गया है, तो डिफ़ॉल्ट मान भेजा जाएगा",
-      "TIMEOUT": "सेकंड में टाइमआउट का अनुरोध करें। मान 1 और 10 के बीच होना चाहिए और डिफ़ॉल्ट मान 5 है।"
+      "TIMEOUT": "सेकंड में टाइमआउट का अनुरोध करें। मान 1 और 10 के बीच होना चाहिए और डिफ़ॉल्ट मान 5 है।",
+      "MANAGED": "पूर्ण किए गए इंटरैक्शन की कुल संख्या",
+      "OPENED": "सक्रिय इंटरैक्शन की कुल संख्या"
     },
     "EDIT_TRUNK": "सूंड संपादित करें",
     "DELETE_TRUNK": "सूंड हटाएं",
     "LEVEL": "स्तर",
     "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद",
     "SELECT_LEVEL": "एक स्तर चुनें",
-    "TITLEFONTSIZE": "फ़ॉन्ट शीर्षक आकार"
+    "TITLEFONTSIZE": "फ़ॉन्ट शीर्षक आकार",
+    "EMAIL": "ईमेल",
+    "FILTERCHATWEBSITES": "चैट वेबसाइटों को फ़िल्टर करें",
+    "FILTEREMAILACCOUNTS": "ईमेल खातों को फ़िल्टर करें",
+    "FILTERFAXACCOUNTS": "फ़ैक्स खाते फ़िल्टर करें",
+    "FILTEROPENCHANNELACCOUNTS": "OpenChannel खातों को फ़िल्टर करें",
+    "FILTERSMSACCOUNTS": "एसएमएस खातों को फ़िल्टर करें",
+    "FILTERWHATSAPPACCOUNTS": "व्हाट्सएप खातों को फ़िल्टर करें",
+    "MANAGED": "प्रबंधित",
+    "MANAGED_TEXT": "प्रबंधित इंटरैक्शन",
+    "OPENED": "खुल गया",
+    "OPENED_TEXT": "खुली बातचीत"
   }
 }
index 1775184..2b8917b 100644 (file)
@@ -62,7 +62,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nilai harus lebih besar dari atau sama dengan",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilai harus kurang dari atau sama dengan",
       "TIMEOUT_REQUIRED": "Bidang wajib",
-      "AUTOCREATE_FIELD_REQUIRED": "Bidang wajib"
+      "AUTOCREATE_FIELD_REQUIRED": "Bidang wajib",
+      "CHANNEL_REQUIRED": "Bidang wajib"
     },
     "HELP": {
       "ADD_PHONE_TO_URI": "Tentukan jika penyedia membutuhkan '; user = phone' di URL",
       "SCRIPT_INFO": "Masukkan deskripsi untuk skrip",
       "SCRIPT_TYPE": "Masukkan tipologi untuk skrip (mis. Ikal, bash ...)",
       "HEADERS": "Catatan: Bagian tajuk harus dalam format RAW JSON {\"key\": \"value\"}\nCatatan: Jika tidak diisi, nilai default akan dikirim",
-      "TIMEOUT": "Minta batas waktu dalam hitungan detik. Nilai harus antara 1 dan 10 dan nilai standarnya adalah 5."
+      "TIMEOUT": "Minta batas waktu dalam hitungan detik. Nilai harus antara 1 dan 10 dan nilai standarnya adalah 5.",
+      "MANAGED": "Jumlah total Interaksi yang Selesai",
+      "OPENED": "Jumlah total Interaksi Aktif"
     },
     "15MIN": "15 menit",
     "1H": "1 jam",
     "LEVEL": "Tingkat",
     "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua",
     "SELECT_LEVEL": "Pilih level",
-    "TITLEFONTSIZE": "Ukuran Judul Font"
+    "TITLEFONTSIZE": "Ukuran Judul Font",
+    "EMAIL": "Surel",
+    "FILTERCHATWEBSITES": "Filter Situs Web Obrolan",
+    "FILTEREMAILACCOUNTS": "Filter Akun Email",
+    "FILTERFAXACCOUNTS": "Filter Akun Faks",
+    "FILTEROPENCHANNELACCOUNTS": "Filter Akun OpenChannel",
+    "FILTERSMSACCOUNTS": "Filter Akun Sms",
+    "FILTERWHATSAPPACCOUNTS": "Filter Akun Whatsapp",
+    "MANAGED": "Dikelola",
+    "MANAGED_TEXT": "Interaksi Terkelola",
+    "OPENED": "dibuka",
+    "OPENED_TEXT": "Interaksi Terbuka"
   }
 }
index c6b75fe..6ef722e 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",
     "SCRIPT": "Script",
     "SCRIPT_INFO": "Descrizione",
     "SCRIPT_TYPE": "Tipologia",
+    "EMAIL": "Email",
+    "FILTERFAXACCOUNTS": "Filtro Fax Accounts",
+    "FILTERSMSACCOUNTS": "Filtro Sms Accounts",
+    "FILTERCHATWEBSITES": "Filtro Chat Websites",
+    "FILTERWHATSAPPACCOUNTS": "Filtro Whatsapp Accounts",
+    "FILTEREMAILACCOUNTS": "Filtro Email Accounts",
+    "FILTEROPENCHANNELACCOUNTS": "Filtro OpenChannel Accounts",
+    "OPENED": "Aperte",
+    "OPENED_TEXT": "Interazioni Aperte",
+    "MANAGED": "Gestite",
+    "MANAGED_TEXT": "Interazioni Gestite",
     "ERRORS": {
+      "OPENED": "Il numero totale di interazioni attive in coda",
+      "MANAGED": "Il numero totale di interazioni gestite in coda",
       "INFO_REQUIRED": "Campo obbligatorio",
       "SCRIPT_REQUIRED": "Campo obbligatorio",
       "NAME_MAX_LENGTH": "Il valore deve avere una lunghezza massima pari a {{max}}",
       "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",
       "TITLE_MAX_LENGTH": "Il valore deve avere una lunghezza massima pari a {{max}}",
       "TIMEOUT_REQUIRED": "Campo obbligatorio",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere inferiore o uguale a",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a"
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+      "CHANNEL_REQUIRED": "Campo obbligatorio"
     },
     "HOST": "Host",
     "SECRET": "Secret",
       "EVENTVARIABLES": "Se abilitato, aggiunge tutte le variabili dell'evento all'url (Valore suggerito=No; Usare Yes solo per test valutativi)",
       "HEADERS": "Nota: sezione Headers deve essere scritta in formato RAW JSON {\"key\":\"value\"} \nNota: Se non compilato, verrà inviato il valore default",
       "BODY": "Nota: il body deve essere scritto in formato RAW JSON {\"key\":\"value\"} \nNota: Se non compilato, verrà inviato il valore default",
-      "TIMEOUT": "Timeout della richiesta in secondi. Il valore deve essere compreso tra 1 e 10 e il valore di default è 5."
+      "TIMEOUT": "Timeout della richiesta in secondi. Il valore deve essere compreso tra 1 e 10 e il valore di default è 5.",
+      "MANAGED": "Il numero totale di interazioni completate",
+      "OPENED": "Il numero totale di interazioni attive"
     },
     "EDIT_TRUNK": "Modifica Trunk",
     "DELETE_TRUNK": "Elimina Trunk",
index bb2a63f..7c9ae97 100644 (file)
@@ -62,7 +62,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "値は以上でなければなりません",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません",
       "TIMEOUT_REQUIRED": "必須フィールド",
-      "AUTOCREATE_FIELD_REQUIRED": "必須フィールド"
+      "AUTOCREATE_FIELD_REQUIRED": "必須フィールド",
+      "CHANNEL_REQUIRED": "必須フィールド"
     },
     "HELP": {
       "ADD_PHONE_TO_URI": "プロバイダーがURLに\";user=phone\"を要求するかどうかを定義します",
       "SCRIPT_INFO": "スクリプトの説明を挿入します",
       "SCRIPT_TYPE": "スクリプトの類型を挿入します(例:curl、bash ...)",
       "HEADERS": "注:ヘッダーセクションはRAW JSON形式{\"key\": \"value\"}である必要があります\n注:入力しない場合、デフォルト値が送信されます",
-      "TIMEOUT": "秒単位の要求タイムアウト。値は1から10の間でなければならず、デフォルト値は5です。"
+      "TIMEOUT": "秒単位の要求タイムアウト。値は1から10の間でなければならず、デフォルト値は5です。",
+      "MANAGED": "完了したインタラクションの総数",
+      "OPENED": "アクティブなインタラクションの総数"
     },
     "15MIN": "15分",
     "1H": "1時間",
     "LEVEL": "レベル",
     "SECOND_LEVEL_DISPOSITION": "第2レベルの気質",
     "SELECT_LEVEL": "レベルを選択してください",
-    "TITLEFONTSIZE": "フォントタイトルサイズ"
+    "TITLEFONTSIZE": "フォントタイトルサイズ",
+    "EMAIL": "Eメール",
+    "FILTERCHATWEBSITES": "チャットWebサイトのフィルター",
+    "FILTEREMAILACCOUNTS": "メールアカウントのフィルタリング",
+    "FILTERFAXACCOUNTS": "ファックスアカウントのフィルタリング",
+    "FILTEROPENCHANNELACCOUNTS": "OpenChannelアカウントをフィルタリングする",
+    "FILTERSMSACCOUNTS": "Smsアカウントをフィルタリングする",
+    "FILTERWHATSAPPACCOUNTS": "Whatsappアカウントをフィルタリングする",
+    "MANAGED": "管理",
+    "MANAGED_TEXT": "管理された相互作用",
+    "OPENED": "オープン",
+    "OPENED_TEXT": "開かれた相互作用"
   }
 }
index aa8aae2..48232d8 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "값은 크거나 같아야합니다",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 이하 여야합니다",
       "TIMEOUT_REQUIRED": "필수 필드",
-      "AUTOCREATE_FIELD_REQUIRED": "필수 필드"
+      "AUTOCREATE_FIELD_REQUIRED": "필수 필드",
+      "CHANNEL_REQUIRED": "필수 필드"
     },
     "HOST": "호스트",
     "SECRET": "비공개",
       "SCRIPT_INFO": "스크립트에 대한 설명을 삽입하십시오",
       "SCRIPT_TYPE": "스크립트에 대한 유형을 입력하십시오 (예 : curl, bash ...).",
       "HEADERS": "참고 : 헤더 섹션은 RAW JSON 형식이어야합니다 ({ \"key\": \"value\"}).\n참고 : 작성하지 않으면 기본값이 전송됩니다",
-      "TIMEOUT": "요청 시간 초과 (초) 값은 1과 10 사이 여야하며 기본값은 5입니다."
+      "TIMEOUT": "요청 시간 초과 (초) 값은 1과 10 사이 여야하며 기본값은 5입니다.",
+      "MANAGED": "완료된 상호작용의 총 수",
+      "OPENED": "총 활성 상호작용 수"
     },
     "EDIT_TRUNK": "시외전화 수정",
     "DELETE_TRUNK": "시외전화 삭제",
     "LEVEL": "수평",
     "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리",
     "SELECT_LEVEL": "레벨 선택",
-    "TITLEFONTSIZE": "글꼴 제목 크기"
+    "TITLEFONTSIZE": "글꼴 제목 크기",
+    "EMAIL": "이메일",
+    "FILTERCHATWEBSITES": "채팅 웹사이트 필터링",
+    "FILTEREMAILACCOUNTS": "이메일 계정 필터링",
+    "FILTERFAXACCOUNTS": "팩스 계정 필터링",
+    "FILTEROPENCHANNELACCOUNTS": "OpenChannel 계정 필터링",
+    "FILTERSMSACCOUNTS": "SMS 계정 필터링",
+    "FILTERWHATSAPPACCOUNTS": "Whatsapp 계정 필터링",
+    "MANAGED": "관리",
+    "MANAGED_TEXT": "관리 상호 작용",
+    "OPENED": "열림",
+    "OPENED_TEXT": "열린 상호 작용"
   }
 }
index 06d6df0..4452a67 100644 (file)
       "TIMEOUT_REQUIRED": "Privalomas laukas",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
-      "AUTOCREATE_FIELD_REQUIRED": "Privalomas laukas"
+      "AUTOCREATE_FIELD_REQUIRED": "Privalomas laukas",
+      "CHANNEL_REQUIRED": "Privalomas laukas"
     },
     "HOST": "Savininkas",
     "SECRET": "Slėpinys",
       "EVENTVARIABLES": "Jei įjungta, prie URL pridedami visi įvykių kintamieji (rekomenduojama reikšmė = Ne. Nustatykite į Taip tik vertinimo tikslais)",
       "HEADERS": "Pastaba: Antraštės skiltis turi būti RAW JSON formato {\"raktas\":\"reikšmė\"} Pastaba: jei neužpildyta, bus išsiųsta numatytoji reikšmė",
       "BODY": "Pastaba: turinys turi būti RAW JSON formato {\"raktas\":\"reikšmė\"} Pastaba: Jei neužpildysite, bus išsiųsta numatytoji reikšmė",
-      "TIMEOUT": "Pageidaujamas skirtasis laikas sekundėmis. Reikšmė turi būti nuo 1 iki 10, o numatytoji reikšmė yra 5."
+      "TIMEOUT": "Pageidaujamas skirtasis laikas sekundėmis. Reikšmė turi būti nuo 1 iki 10, o numatytoji reikšmė yra 5.",
+      "MANAGED": "Bendras užbaigtų sąveikų skaičius",
+      "OPENED": "Bendras aktyvių sąveikų skaičius"
     },
     "EDIT_TRUNK": "Redaguoti ryšio kanalą",
     "DELETE_TRUNK": "Ištrinti ryšio kanalą",
     "LEVEL": "Lygis",
     "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas",
     "SELECT_LEVEL": "Pasirinkite lygį",
-    "TITLEFONTSIZE": "Šrifto pavadinimo dydis"
+    "TITLEFONTSIZE": "Šrifto pavadinimo dydis",
+    "EMAIL": "Paštu",
+    "FILTERCHATWEBSITES": "Filtruokite pokalbių svetaines",
+    "FILTEREMAILACCOUNTS": "Filtruoti el. Pašto paskyras",
+    "FILTERFAXACCOUNTS": "Filtruoti fakso paskyras",
+    "FILTEROPENCHANNELACCOUNTS": "Filtruokite „OpenChannel“ paskyras",
+    "FILTERSMSACCOUNTS": "Filtruoti SMS paskyras",
+    "FILTERWHATSAPPACCOUNTS": "Filtruokite „Whatsapp“ paskyras",
+    "MANAGED": "Tvarko",
+    "MANAGED_TEXT": "Valdomos sąveikos",
+    "OPENED": "Atidaryta",
+    "OPENED_TEXT": "Atidarytos sąveikos"
   }
 }
index f9a67b6..4daf2f3 100644 (file)
@@ -62,7 +62,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vērtībai jābūt lielākai vai vienādai ar",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazai vai vienādai ar",
       "TIMEOUT_REQUIRED": "Obligāts lauks",
-      "AUTOCREATE_FIELD_REQUIRED": "Obligāts lauks"
+      "AUTOCREATE_FIELD_REQUIRED": "Obligāts lauks",
+      "CHANNEL_REQUIRED": "Obligāts lauks"
     },
     "HELP": {
       "T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400",
       "SCRIPT_INFO": "Ievietojiet skripta aprakstu",
       "SCRIPT_TYPE": "Ievietojiet skripta tipoloģiju (piemēram, čokurošanās, bash ...)",
       "HEADERS": "Piezīme: sadaļai galvenes jābūt RAW JSON formātā {\"key\": \"value\"}\nPiezīme: ja tā nav aizpildīta, tiks nosūtīta noklusējuma vērtība",
-      "TIMEOUT": "Pieprasiet noildzi sekundēs. Vērtībai jābūt no 1 līdz 10, bet noklusējuma vērtībai - 5."
+      "TIMEOUT": "Pieprasiet noildzi sekundēs. Vērtībai jābūt no 1 līdz 10, bet noklusējuma vērtībai - 5.",
+      "MANAGED": "Kopējais pabeigto mijiedarbību skaits",
+      "OPENED": "Kopējais aktīvo mijiedarbību skaits"
     },
     "OUTBOUND_ROUTE": "Izejošais maršruts",
     "EDIT_DASHBOARDITEM": "Rediģēt paneļa logrīku",
     "LEVEL": "Līmenis",
     "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums",
     "SELECT_LEVEL": "Atlasiet līmeni",
-    "TITLEFONTSIZE": "Fonta nosaukuma lielums"
+    "TITLEFONTSIZE": "Fonta nosaukuma lielums",
+    "EMAIL": "E -pasts",
+    "FILTERCHATWEBSITES": "Filtrējiet tērzēšanas vietnes",
+    "FILTEREMAILACCOUNTS": "Filtrējiet e -pasta kontus",
+    "FILTERFAXACCOUNTS": "Filtrēt faksa kontus",
+    "FILTEROPENCHANNELACCOUNTS": "Filtrējiet OpenChannel kontus",
+    "FILTERSMSACCOUNTS": "Filtrējiet īsziņu kontus",
+    "FILTERWHATSAPPACCOUNTS": "Filtrējiet Whatsapp kontus",
+    "MANAGED": "Pārvaldīts",
+    "MANAGED_TEXT": "Pārvaldīta mijiedarbība",
+    "OPENED": "Atvērts",
+    "OPENED_TEXT": "Atvērtā mijiedarbība"
   }
 }
index 1a9505d..abb60b1 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter dan of gelijk zijn aan",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan",
       "TIMEOUT_REQUIRED": "Verplicht veld",
-      "AUTOCREATE_FIELD_REQUIRED": "Verplicht veld"
+      "AUTOCREATE_FIELD_REQUIRED": "Verplicht veld",
+      "CHANNEL_REQUIRED": "Verplicht veld"
     },
     "HOST": "Host",
     "SECRET": "Geheime",
       "SCRIPT_INFO": "Voer een beschrijving in voor het script",
       "SCRIPT_TYPE": "Voer een typologie in voor het script (bijv. Curl, bash ...)",
       "HEADERS": "Opmerking: het gedeelte met headers moet de RAW JSON-indeling {\"key\": \"value\"} hebben\nOpmerking: indien niet ingevuld, wordt de standaardwaarde verzonden",
-      "TIMEOUT": "Verzoek time-out in seconden. De waarde moet tussen 1 en 10 liggen en de standaardwaarde is 5."
+      "TIMEOUT": "Verzoek time-out in seconden. De waarde moet tussen 1 en 10 liggen en de standaardwaarde is 5.",
+      "MANAGED": "Het totale aantal voltooide interacties",
+      "OPENED": "Het totale aantal actieve interacties"
     },
     "EDIT_TRUNK": "Edit transmissielijn",
     "DELETE_TRUNK": "Verwijderen",
     "LEVEL": "Niveau",
     "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie",
     "SELECT_LEVEL": "Kies een niveau",
-    "TITLEFONTSIZE": "Lettertype titelgrootte"
+    "TITLEFONTSIZE": "Lettertype titelgrootte",
+    "EMAIL": "E-mail",
+    "FILTERCHATWEBSITES": "Chat-websites filteren",
+    "FILTEREMAILACCOUNTS": "E-mailaccounts filteren",
+    "FILTERFAXACCOUNTS": "Faxaccounts filteren",
+    "FILTEROPENCHANNELACCOUNTS": "OpenChannel-accounts filteren",
+    "FILTERSMSACCOUNTS": "Sms-accounts filteren",
+    "FILTERWHATSAPPACCOUNTS": "Whatsapp-accounts filteren",
+    "MANAGED": "beheerd",
+    "MANAGED_TEXT": "Beheerde interacties",
+    "OPENED": "geopend",
+    "OPENED_TEXT": "Geopende interacties"
   }
 }
index d187d0c..15a73d3 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verdien må være større enn eller lik",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik",
       "TIMEOUT_REQUIRED": "Obligatoriske felt",
-      "AUTOCREATE_FIELD_REQUIRED": "Obligatoriske felt"
+      "AUTOCREATE_FIELD_REQUIRED": "Obligatoriske felt",
+      "CHANNEL_REQUIRED": "Obligatoriske felt"
     },
     "HOST": "Vert",
     "SECRET": "Hemmelige",
       "SCRIPT_INFO": "Sett inn en beskrivelse for skriptet",
       "SCRIPT_TYPE": "Sett inn en typologi for manuset (f.eks. Krøll, bash ...)",
       "HEADERS": "Merk: Headers-delen må være i RAW JSON-format {\"key\": \"value\"}\nMerk: Hvis ikke utfylt, blir standardverdien sendt",
-      "TIMEOUT": "Be om timeout i sekunder. Verdien må være mellom 1 og 10 og standardverdien er 5."
+      "TIMEOUT": "Be om timeout i sekunder. Verdien må være mellom 1 og 10 og standardverdien er 5.",
+      "MANAGED": "Det totale antallet fullførte interaksjoner",
+      "OPENED": "Det totale antallet aktive interaksjoner"
     },
     "EDIT_TRUNK": "Rediger Trunk",
     "DELETE_TRUNK": "Slette Trunk",
     "LEVEL": "Nivå",
     "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon",
     "SELECT_LEVEL": "Velg et nivå",
-    "TITLEFONTSIZE": "Skriftens tittelstørrelse"
+    "TITLEFONTSIZE": "Skriftens tittelstørrelse",
+    "EMAIL": "E -post",
+    "FILTERCHATWEBSITES": "Filtrer nettsteder for chat",
+    "FILTEREMAILACCOUNTS": "Filtrer e -postkontoer",
+    "FILTERFAXACCOUNTS": "Filtrer fakskontoer",
+    "FILTEROPENCHANNELACCOUNTS": "Filtrer OpenChannel -kontoer",
+    "FILTERSMSACCOUNTS": "Filtrer sms -kontoer",
+    "FILTERWHATSAPPACCOUNTS": "Filtrer Whatsapp -kontoer",
+    "MANAGED": "Fikk til",
+    "MANAGED_TEXT": "Administrerte interaksjoner",
+    "OPENED": "Åpnet",
+    "OPENED_TEXT": "Åpne interaksjoner"
   }
 }
index 3196599..861bb6a 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wartość musi być większa lub równa",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa",
       "TIMEOUT_REQUIRED": "Pole obowiązkowe",
-      "AUTOCREATE_FIELD_REQUIRED": "Pole obowiązkowe"
+      "AUTOCREATE_FIELD_REQUIRED": "Pole obowiązkowe",
+      "CHANNEL_REQUIRED": "Pole obowiązkowe"
     },
     "HOST": "Hosta",
     "SECRET": "Secret",
       "SCRIPT_INFO": "Wstaw opis skryptu",
       "SCRIPT_TYPE": "Wstaw typologię skryptu (np. Curl, bash ...)",
       "HEADERS": "Uwaga: sekcja nagłówków musi być w formacie RAW JSON {„klucz”: „wartość”}\nUwaga: Jeśli nie zostanie wypełniona, zostanie wysłana wartość domyślna",
-      "TIMEOUT": "Limit czasu żądania w sekundach. Wartość musi wynosić od 1 do 10, a wartość domyślna to 5."
+      "TIMEOUT": "Limit czasu żądania w sekundach. Wartość musi wynosić od 1 do 10, a wartość domyślna to 5.",
+      "MANAGED": "Całkowita liczba zakończonych interakcji",
+      "OPENED": "Całkowita liczba aktywnych interakcji"
     },
     "EDIT_TRUNK": "Edycja łącza trunkingowego",
     "DELETE_TRUNK": "Usuwanie łącza trunkingowego",
     "LEVEL": "Poziom",
     "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu",
     "SELECT_LEVEL": "Wybierz poziom",
-    "TITLEFONTSIZE": "Rozmiar tytułu czcionki"
+    "TITLEFONTSIZE": "Rozmiar tytułu czcionki",
+    "EMAIL": "E-mail",
+    "FILTERCHATWEBSITES": "Filtruj strony internetowe czatu",
+    "FILTEREMAILACCOUNTS": "Filtruj konta e-mail",
+    "FILTERFAXACCOUNTS": "Filtruj konta faksów",
+    "FILTEROPENCHANNELACCOUNTS": "Filtruj konta OpenChannel",
+    "FILTERSMSACCOUNTS": "Filtruj konta SMS",
+    "FILTERWHATSAPPACCOUNTS": "Filtruj konta Whatsapp",
+    "MANAGED": "Zarządzany",
+    "MANAGED_TEXT": "Zarządzane interakcje",
+    "OPENED": "Otwierany",
+    "OPENED_TEXT": "Otwarte interakcje"
   }
 }
index 95b7fa9..294686c 100644 (file)
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "TIMEOUT_REQUIRED": "Campo obrigatório",
-      "AUTOCREATE_FIELD_REQUIRED": "Campo obrigatório"
+      "AUTOCREATE_FIELD_REQUIRED": "Campo obrigatório",
+      "CHANNEL_REQUIRED": "Campo obrigatório"
     },
     "HOST": "Host",
     "SECRET": "Segredo",
       "SCRIPT_INFO": "Inserir uma descrição para o script",
       "SCRIPT_TYPE": "Insira uma tipologia para o script (por exemplo, curl, bash ...)",
       "HEADERS": "Nota: a seção Cabeçalhos deve estar no formato JSON RAW {\"key\": \"value\"}\nNota: Se não for preenchido, o valor padrão será enviado",
-      "TIMEOUT": "Solicitar tempo limite em segundos. O valor deve estar entre 1 e 10 e o valor padrão é 5."
+      "TIMEOUT": "Solicitar tempo limite em segundos. O valor deve estar entre 1 e 10 e o valor padrão é 5.",
+      "MANAGED": "O número total de interações concluídas",
+      "OPENED": "O número total de interações ativas"
     },
     "EDIT_TRUNK": "Editar Tronco",
     "DELETE_TRUNK": "Excluir Tronco",
     "LEVEL": "Nível",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "SELECT_LEVEL": "Selecione um nível",
-    "TITLEFONTSIZE": "Tamanho do título da fonte"
+    "TITLEFONTSIZE": "Tamanho do título da fonte",
+    "EMAIL": "E-mail",
+    "FILTERCHATWEBSITES": "Filtrar sites de bate-papo",
+    "FILTEREMAILACCOUNTS": "Filtrar contas de e-mail",
+    "FILTERFAXACCOUNTS": "Filtrar contas de fax",
+    "FILTEROPENCHANNELACCOUNTS": "Filtrar contas OpenChannel",
+    "FILTERSMSACCOUNTS": "Filtrar contas de SMS",
+    "FILTERWHATSAPPACCOUNTS": "Filtrar contas do Whatsapp",
+    "MANAGED": "Gerenciou",
+    "MANAGED_TEXT": "Interações gerenciadas",
+    "OPENED": "Aberto",
+    "OPENED_TEXT": "Interações abertas"
   }
 }
index 11c8858..6625833 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "TIMEOUT_REQUIRED": "Campo obrigatório",
-      "AUTOCREATE_FIELD_REQUIRED": "Campo obrigatório"
+      "AUTOCREATE_FIELD_REQUIRED": "Campo obrigatório",
+      "CHANNEL_REQUIRED": "Campo obrigatório"
     },
     "HOST": "Host",
     "SECRET": "Segredo",
       "SCRIPT_INFO": "Inserir uma descrição para o script",
       "SCRIPT_TYPE": "Insira uma tipologia para o script (por exemplo, curl, bash ...)",
       "HEADERS": "Nota: a seção Cabeçalhos deve estar no formato JSON RAW {\"key\": \"value\"}\nNota: Se não for preenchido, o valor padrão será enviado",
-      "TIMEOUT": "Solicitar tempo limite em segundos. O valor deve estar entre 1 e 10 e o valor padrão é 5."
+      "TIMEOUT": "Solicitar tempo limite em segundos. O valor deve estar entre 1 e 10 e o valor padrão é 5.",
+      "MANAGED": "O número total de interações concluídas",
+      "OPENED": "O número total de interações ativas"
     },
     "EDIT_TRUNK": "Editar tronco",
     "DELETE_TRUNK": "Excluir tronco",
     "LEVEL": "Nível",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "SELECT_LEVEL": "Selecione um nível",
-    "TITLEFONTSIZE": "Tamanho do título da fonte"
+    "TITLEFONTSIZE": "Tamanho do título da fonte",
+    "EMAIL": "E-mail",
+    "FILTERCHATWEBSITES": "Filtrar sites de bate-papo",
+    "FILTEREMAILACCOUNTS": "Filtrar contas de e-mail",
+    "FILTERFAXACCOUNTS": "Filtrar contas de fax",
+    "FILTEROPENCHANNELACCOUNTS": "Filtrar contas OpenChannel",
+    "FILTERSMSACCOUNTS": "Filtrar contas de SMS",
+    "FILTERWHATSAPPACCOUNTS": "Filtrar contas do Whatsapp",
+    "MANAGED": "Gerenciou",
+    "MANAGED_TEXT": "Interações gerenciadas",
+    "OPENED": "Aberto",
+    "OPENED_TEXT": "Interações abertas"
   }
 }
index bde0ed5..3161130 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
       "TIMEOUT_REQUIRED": "Обязательное поле",
-      "AUTOCREATE_FIELD_REQUIRED": "Обязательное поле"
+      "AUTOCREATE_FIELD_REQUIRED": "Обязательное поле",
+      "CHANNEL_REQUIRED": "Обязательное поле"
     },
     "HOST": "Принимающей",
     "SECRET": "Секрет",
       "SCRIPT_INFO": "Вставьте описание для скрипта",
       "SCRIPT_TYPE": "Вставьте типологию для сценария (например, curl, bash ...)",
       "HEADERS": "Примечание. Раздел заголовков должен быть в формате RAW JSON {\"ключ\": \"значение\"}\nПримечание: если не заполнено, будет отправлено значение по умолчанию",
-      "TIMEOUT": "Время ожидания запроса в секундах. Значение должно быть от 1 до 10, а значение по умолчанию - 5."
+      "TIMEOUT": "Время ожидания запроса в секундах. Значение должно быть от 1 до 10, а значение по умолчанию - 5.",
+      "MANAGED": "Общее количество завершенных взаимодействий",
+      "OPENED": "Общее количество активных взаимодействий"
     },
     "EDIT_TRUNK": "Редактировать СЛ",
     "DELETE_TRUNK": "Удалить СЛ",
     "LEVEL": "Уровень",
     "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня",
     "SELECT_LEVEL": "Выберите уровень",
-    "TITLEFONTSIZE": "Размер заголовка шрифта"
+    "TITLEFONTSIZE": "Размер заголовка шрифта",
+    "EMAIL": "Электронное письмо",
+    "FILTERCHATWEBSITES": "Фильтр веб-сайтов чата",
+    "FILTEREMAILACCOUNTS": "Фильтр учетных записей электронной почты",
+    "FILTERFAXACCOUNTS": "Фильтр учетных записей факсов",
+    "FILTEROPENCHANNELACCOUNTS": "Фильтрация учетных записей OpenChannel",
+    "FILTERSMSACCOUNTS": "Фильтр смс аккаунтов",
+    "FILTERWHATSAPPACCOUNTS": "Фильтр учетных записей WhatsApp",
+    "MANAGED": "Удалось",
+    "MANAGED_TEXT": "Управляемые взаимодействия",
+    "OPENED": "Открыт",
+    "OPENED_TEXT": "Открытые взаимодействия"
   }
 }
index 2e11356..08c3786 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Värdet måste vara större än eller lika med",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med",
       "TIMEOUT_REQUIRED": "Obligatoriskt fält",
-      "AUTOCREATE_FIELD_REQUIRED": "Obligatoriskt fält"
+      "AUTOCREATE_FIELD_REQUIRED": "Obligatoriskt fält",
+      "CHANNEL_REQUIRED": "Obligatoriskt fält"
     },
     "HOST": "Host",
     "SECRET": "Hemlig",
       "SCRIPT_INFO": "Sätt in en beskrivning för skriptet",
       "SCRIPT_TYPE": "Infoga en typologi för skriptet (t.ex. curl, bash ...)",
       "HEADERS": "Obs! Rubriken för rubriker måste vara i RAW JSON-format {\"key\": \"value\"}\nObs: Om det inte fylls i skickas standardvärdet",
-      "TIMEOUT": "Begär timeout i sekunder. Värdet måste vara mellan 1 och 10 och standardvärdet är 5."
+      "TIMEOUT": "Begär timeout i sekunder. Värdet måste vara mellan 1 och 10 och standardvärdet är 5.",
+      "MANAGED": "Det totala antalet avslutade interaktioner",
+      "OPENED": "Det totala antalet aktiva interaktioner"
     },
     "EDIT_TRUNK": "Redigera trunk",
     "DELETE_TRUNK": "Ta bort trunk",
     "LEVEL": "Nivå",
     "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition",
     "SELECT_LEVEL": "Välj en nivå",
-    "TITLEFONTSIZE": "Teckensnittsstorlek"
+    "TITLEFONTSIZE": "Teckensnittsstorlek",
+    "EMAIL": "E-post",
+    "FILTERCHATWEBSITES": "Filtrera chattwebbplatser",
+    "FILTEREMAILACCOUNTS": "Filtrera e -postkonton",
+    "FILTERFAXACCOUNTS": "Filtrera faxkonton",
+    "FILTEROPENCHANNELACCOUNTS": "Filtrera OpenChannel -konton",
+    "FILTERSMSACCOUNTS": "Filtrera sms -konton",
+    "FILTERWHATSAPPACCOUNTS": "Filtrera Whatsapp -konton",
+    "MANAGED": "Hanteras",
+    "MANAGED_TEXT": "Hanterade interaktioner",
+    "OPENED": "Öppnad",
+    "OPENED_TEXT": "Öppnade interaktioner"
   }
 }
index 80117e9..8389c41 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Değer şuna eşit veya daha büyük olmalıdır",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şuna eşit veya daha küçük olmalıdır",
       "TIMEOUT_REQUIRED": "Zorunlu alan",
-      "AUTOCREATE_FIELD_REQUIRED": "Zorunlu alan"
+      "AUTOCREATE_FIELD_REQUIRED": "Zorunlu alan",
+      "CHANNEL_REQUIRED": "Zorunlu alan"
     },
     "HOST": "Ana",
     "SECRET": "Gizli",
       "SCRIPT_INFO": "Komut dosyası için bir açıklama ekleyin",
       "SCRIPT_TYPE": "Komut dosyası için bir tipoloji ekleyin (ör. Curl, bash ...)",
       "HEADERS": "Not: Üstbilgiler bölümü {\"key\": \"value\"} RAW JSON biçiminde olmalıdır\nNot: Doldurulmazsa, varsayılan değer gönderilir",
-      "TIMEOUT": "Saniye cinsinden zaman aşımı isteğinde bulunun. Değer 1 ile 10 arasında ve varsayılan değer 5 olmalıdır."
+      "TIMEOUT": "Saniye cinsinden zaman aşımı isteğinde bulunun. Değer 1 ile 10 arasında ve varsayılan değer 5 olmalıdır.",
+      "MANAGED": "Tamamlanan Etkileşimlerin toplam sayısı",
+      "OPENED": "Toplam Etkin Etkileşim sayısı"
     },
     "EDIT_TRUNK": "Düzenleme Santral",
     "DELETE_TRUNK": "Delete Santral",
     "LEVEL": "Seviye",
     "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf",
     "SELECT_LEVEL": "Bir seviye seçin",
-    "TITLEFONTSIZE": "Yazı Tipi Başlık Boyutu"
+    "TITLEFONTSIZE": "Yazı Tipi Başlık Boyutu",
+    "EMAIL": "E-posta",
+    "FILTERCHATWEBSITES": "Sohbet Web Sitelerini Filtrele",
+    "FILTEREMAILACCOUNTS": "E-posta Hesaplarını Filtrele",
+    "FILTERFAXACCOUNTS": "Faks Hesaplarını Filtrele",
+    "FILTEROPENCHANNELACCOUNTS": "OpenChannel Hesaplarını Filtrele",
+    "FILTERSMSACCOUNTS": "Sms Hesaplarını Filtrele",
+    "FILTERWHATSAPPACCOUNTS": "Whatsapp Hesaplarını Filtrele",
+    "MANAGED": "Yönetilen",
+    "MANAGED_TEXT": "Yönetilen Etkileşimler",
+    "OPENED": "Açıldı",
+    "OPENED_TEXT": "Açık Etkileşimler"
   }
 }
index 3063b73..e5c6735 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "该值必须大于或等于",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于",
       "TIMEOUT_REQUIRED": "必填项",
-      "AUTOCREATE_FIELD_REQUIRED": "必填项"
+      "AUTOCREATE_FIELD_REQUIRED": "必填项",
+      "CHANNEL_REQUIRED": "必填项"
     },
     "HOST": "主机",
     "SECRET": "秘密",
       "SCRIPT_INFO": "插入脚本说明",
       "SCRIPT_TYPE": "插入脚本类型(例如curl,bash ...)",
       "HEADERS": "注意:标头部分必须为RAW JSON格式{“ key”:“ value”}\n注意:如果未填写,将发送默认值",
-      "TIMEOUT": "请求超时(以秒为单位)。该值必须介于1到10之间,默认值为5。"
+      "TIMEOUT": "请求超时(以秒为单位)。该值必须介于1到10之间,默认值为5。",
+      "MANAGED": "完成的交互总数",
+      "OPENED": "活跃互动总数"
     },
     "EDIT_TRUNK": "编辑中继线",
     "DELETE_TRUNK": "删除中继线",
     "LEVEL": "水平",
     "SECOND_LEVEL_DISPOSITION": "二级处置",
     "SELECT_LEVEL": "选择一个级别",
-    "TITLEFONTSIZE": "字体标题大小"
+    "TITLEFONTSIZE": "字体标题大小",
+    "EMAIL": "电子邮件",
+    "FILTERCHATWEBSITES": "过滤聊天网站",
+    "FILTEREMAILACCOUNTS": "过滤电子邮件帐户",
+    "FILTERFAXACCOUNTS": "过滤传真帐户",
+    "FILTEROPENCHANNELACCOUNTS": "过滤 OpenChannel 帐户",
+    "FILTERSMSACCOUNTS": "过滤短信账户",
+    "FILTERWHATSAPPACCOUNTS": "筛选 Whatsapp 帐户",
+    "MANAGED": "管理",
+    "MANAGED_TEXT": "托管交互",
+    "OPENED": "打开",
+    "OPENED_TEXT": "打开的交互"
   }
 }
index 3009e4b..3c9fc71 100644 (file)
@@ -66,7 +66,8 @@
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "該值必須大於或等於",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於",
       "TIMEOUT_REQUIRED": "必填項",
-      "AUTOCREATE_FIELD_REQUIRED": "必填項"
+      "AUTOCREATE_FIELD_REQUIRED": "必填項",
+      "CHANNEL_REQUIRED": "必填項"
     },
     "HOST": "主機",
     "SECRET": "秘密",
       "SCRIPT_INFO": "插入腳本說明",
       "SCRIPT_TYPE": "插入腳本類型(例如curl,bash ...)",
       "HEADERS": "注意:標頭部分必須為RAW JSON格式{“ key”:“ value”}\n注意:如果未填寫,將發送默認值",
-      "TIMEOUT": "請求超時(以秒為單位)。該值必須介於1到10之間,默認值為5。"
+      "TIMEOUT": "請求超時(以秒為單位)。該值必須介於1到10之間,默認值為5。",
+      "MANAGED": "完成的交互總數",
+      "OPENED": "活躍互動總數"
     },
     "EDIT_TRUNK": "編輯中繼線",
     "DELETE_TRUNK": "刪除中繼線",
     "LEVEL": "水平",
     "SECOND_LEVEL_DISPOSITION": "二級處置",
     "SELECT_LEVEL": "選擇一個級別",
-    "TITLEFONTSIZE": "字體標題大小"
+    "TITLEFONTSIZE": "字體標題大小",
+    "EMAIL": "電子郵件",
+    "FILTERCHATWEBSITES": "過濾聊天網站",
+    "FILTEREMAILACCOUNTS": "過濾電子郵件帳戶",
+    "FILTERFAXACCOUNTS": "過濾傳真帳戶",
+    "FILTEROPENCHANNELACCOUNTS": "過濾 OpenChannel 帳戶",
+    "FILTERSMSACCOUNTS": "過濾短信賬戶",
+    "FILTERWHATSAPPACCOUNTS": "篩選 Whatsapp 帳戶",
+    "MANAGED": "管理",
+    "MANAGED_TEXT": "託管交互",
+    "OPENED": "打開",
+    "OPENED_TEXT": "打開的交互"
   }
 }
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 3278422..0874969 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.def00a0c.css">
 
-  <link rel="stylesheet" href="styles/app.0b303223.css">
+  <link rel="stylesheet" href="styles/app.2a49015a.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.5edda6d7.js"></script>
+  <script src="scripts/app.d440db8d.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 53%
rename from public/scripts/app.5edda6d7.js
rename to public/scripts/app.d440db8d.js
index 0df6105..4666e4d 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){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(s,o,e,t){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function l(n){return e[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=e[r.selectedField.options.searchFields[n]]||"";e.displayValue+=t+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return o.when(n)}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function a(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function i(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),a()}function d(){var e=m();r.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),p(),r.pendingCondition.style=null,r.pendingCondition=void 0}function m(){return{name:r.selectedField.name,operator:s.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:u(r.value),displayEndValue:u(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=d,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=c,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){{if(r.selectedField.options.routes&&Array.isArray(r.selectedField.options.routes)){var e=angular.copy(r.selectedField.options.routes),n=_.map(e,function(e){return l(e)});return o.all(n).then(function(e){r.selectedField.values=_.flatten(e)})}var t=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var a=0;a<Object.keys(t.params).length;a++){var i=Object.keys(t.params)[a];"@autocomplete"===t.params[i]&&(t.params[i]=r.searchText)}if(!r.selectedField.values)return l(t).then(function(e){r.selectedField.values=_.flatten(e)});r.selectedField.values.forEach(function(e){e.translate&&(e.name=s.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));a()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?i():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),a()):a()},r.checkRange=i,r.handleKeyboardAction=function(){r.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){new Promise(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function x(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function N(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(l.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=x,u.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n){var t=this;function a(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return Promise.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n)return n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)});c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(n){var a={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"first"}}}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"second"}}}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"third"}}}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,c.ListId=c.contact.ListId||void 0):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(e){{if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:u.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(c.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function u(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&E(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)g(c.chatInteractions.rows[n])}function p(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&p(c.query.page)}}function b(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||p()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}],c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:m("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:m("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:m("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",f),l.on("chatInteraction:update",f),l.on("chatInteractionTags:save",b),l.on("chatMessage:save",A),l.on("chatMessage:update",A),l.on("user_has_chat_interactions:save",v),l.on("user_has_chat_interactions:remove",h),p(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&E()})},c.success=u,c.getChatInteractions=p,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=g,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)v(m.faxInteractions.rows[n])}function g(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else g(m.query.page)}}function A(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",b),l.on("faxInteraction:update",b),l.on("faxInteractionTags:save",A),l.on("faxMessage:save",E),l.on("faxMessage:update",E),l.on("user_has_fax_interactions:save",h),l.on("user_has_fax_interactions:remove",f),g(m.query.page)})},m.success=p,m.getFaxInteractions=g,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=v,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(u.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&S(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)h(u.mailInteractions.rows[n])}function g(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,p).$promise}function v(e,n){o.$parent.vm.addInteractionTab("mail",n)}function h(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function b(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&g(u.query.page)}}function E(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function y(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function S(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||g()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get().$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}],u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:s("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:s("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:s("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",A),i.on("mailInteraction:update",A),i.on("mailInteractionTags:save",E),i.on("mailMessage:save",y),i.on("mailMessage:update",y),i.on("user_has_mail_interactions:save",f),i.on("user_has_mail_interactions:remove",b),g(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&S()})},u.success=p,u.getMailInteractions=g,u.showMailInteraction=v,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=h,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,g())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,v(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)v(m.openchannelInteractions.rows[n])}function g(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,p).$promise}function v(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",b),l.on("openchannelInteraction:update",b),l.on("openchannelInteractionTags:save",A),l.on("openchannelMessage:save",E),l.on("openchannelMessage:update",E),l.on("user_has_openchannel_interactions:save",h),l.on("user_has_openchannel_interactions:remove",f),g(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&y()})},m.success=p,m.getOpenchannelInteractions=g,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=v,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)v(m.smsInteractions.rows[n])}function g(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",b),l.on("smsInteraction:update",b),l.on("smsInteractionTags:save",A),l.on("smsMessage:save",E),l.on("smsMessage:update",E),l.on("user_has_sms_interactions:save",h),l.on("user_has_sms_interactions:remove",f),g(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&y()})},m.success=p,m.getSmsInteractions=g,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=v,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get().$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)v(m.whatsappInteractions.rows[n])}function g(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",b),l.on("whatsappInteraction:update",b),l.on("whatsappInteractionTags:save",A),l.on("whatsappMessage:save",E),l.on("whatsappMessage:update",E),l.on("user_has_whatsapp_interactions:save",h),l.on("user_has_whatsapp_interactions:remove",f),g(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&y()})},m.success=p,m.getWhatsappInteractions=g,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=v,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").filter("secToTime",function(){return function(e){return new Date(1e3*e).toISOString().substr(11,8)}}).factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"first"}}}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"second"}}}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"third"}}}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"first"}}}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"second"}}}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"third"}}}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=2,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"first"}}}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"second"}}}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"third"}}}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"first"}}}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"second"}}}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"third"}}}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.agents=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:"bull"===c.channel?"voice":c.channel,type:c.direction,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:c.direction,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentqueueaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(n.disconnect(),n.connect(),a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voiceRecording=c||e.params.voiceRecording||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h){var f=this;function b(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),v(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"first"}}}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"second"}}}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{field:"name",route:{model:"disposition",action:"get",params:{fields:"name,level",nolimit:!0,level:"third"}}}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role&&T.currentUser.name===e.membername){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n              </div>\n\n              <form name="scriptForm" flex="100" novalidate>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n              </form>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'CHAT.PAGE' | translate}}:', rowsPerPage: '{{'CHAT.ROWSPERPAGE' | translate}}:', of: '{{'CHAT.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-init="vm.getCustomFields(vm.contact.ListId)" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n\n          <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row">\n          <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n            <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n            <md-card-header layout="row" layout-align="space-between">\n              <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                <timer start-time="call.answertime"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                </md-tooltip>\n              </span>\n              <span ng-if="call.disposedAt" class="text-boxed amber-200-bg mr-0">\n                <timer start-time="call.disposedAt"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                </md-tooltip>\n              </span>\n            </md-card-header>\n            <md-divider></md-divider>\n            <md-card-content>\n              <div layout="row" layout-align="end center" class="reload-container">\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </div>\n              <div layout="column" layout-align="space-between start" class="mr-16">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="mr-8">\n                  </md-icon>\n                  <span class="h1" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                </div>\n\n                <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                  <md-icon md-font-icon="icon-account"></md-icon>\n                  Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                </div>\n\n                <div class="text h4 pt-8" ng-if="call.queue">\n                  <md-icon md-font-icon="icon-stackoverflow"></md-icon>\n                  Queue: {{call.queue}}\n                </div>\n                <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                  <md-icon md-font-icon="icon-minus"></md-icon>\n                  Extra: {{call.variables.extravar}}\n                </div>\n              </div>\n              <div layout="row" layout-align="end center">\n                <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised">\n                  {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                </md-button>\n              </div>\n            </md-card-content>\n          </md-card>\n          <div flex layout="row" layout-align="end center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <md-input-container ng-if="!vm.dialerCall" class="md-block">\n          <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n          <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n            <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</md-option>\n          </md-select>\n          <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'FAX.PAGE' | translate}}:', rowsPerPage: '{{'FAX.ROWSPERPAGE' | translate}}:', of: '{{'FAX.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MAIL.PAGE' | translate}}:', rowsPerPage: '{{'MAIL.ROWSPERPAGE' | translate}}:', of: '{{'MAIL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'OPENCHANNEL.PAGE' | translate}}:', rowsPerPage: '{{'OPENCHANNEL.ROWSPERPAGE' | translate}}:', of: '{{'OPENCHANNEL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'SMS.PAGE' | translate}}:', rowsPerPage: '{{'SMS.ROWSPERPAGE' | translate}}:', of: '{{'SMS.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name ">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email ">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone ">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile ">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal ">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'WHATSAPP.PAGE' | translate}}:', rowsPerPage: '{{'WHATSAPP.ROWSPERPAGE' | translate}}:', of: '{{'WHATSAPP.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span translate="{{lang.translation}}">{{lang.title}}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" ng-if="vm.preview">\n        <div class="md-padding md-margin" layout="column" flex="30">\n          <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.ID">ID</label>\n            <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n            <label translate="VOICE.QUEUE">Queue</label>\n            <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <input type="text" ng-model="vm.preview.List.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.TAGS">Tags</label>\n            <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n          </md-input-container>\n        </div>\n        <md-divider></md-divider>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n            <input type="text" ng-model="value" disabled="true" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\n        </div>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ vm.customFieldsMap[key] || key }}</label>\n            <input type="text" ng-model="value" disabled="true">\n          </md-input-container>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!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 t,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 t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],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 s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;a&&(s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20,a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}}));return i}})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.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"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.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){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":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);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default: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){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":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);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default: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(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){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(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,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.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=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",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&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,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(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(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(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(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(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"}),s.smsAccount.get({fields:"id,name"}).$promise.then(function(e){o.smsAccounts=e||{count:0,rows:[]}}),s.faxAccount.get({fields:"id,name"}).$promise.then(function(e){o.faxAccounts=e||{count:0,rows:[]}}),s.mailAccount.get({fields:"id,name"}).$promise.then(function(e){o.mailAccounts=e||{count:0,rows:[]}}),s.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){o.openchannelAccounts=e||{count:0,rows:[]}}),s.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){o.whatsappAccounts=e||{count:0,rows:[]}}),s.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){o.chatWebsites=e||{count:0,rows:[]}}),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].smsAccounts=o.smsAccounts,e.rows[n].smsAccountsSelected=_.map(o.smsAccounts.rows,"id"),e.rows[n].faxAccounts=o.faxAccounts,e.rows[n].faxAccountsSelected=_.map(o.faxAccounts.rows,"id"),e.rows[n].mailAccounts=o.mailAccounts,e.rows[n].mailAccountsSelected=_.map(o.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=o.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(o.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=o.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(o.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=o.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(o.whatsappAccounts.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].smsAccounts=o.smsAccounts,o.customDashboard.widgets[n].smsAccountsSelected=_.map(o.smsAccounts.rows,"id"),o.customDashboard.widgets[n].faxAccounts=o.faxAccounts,o.customDashboard.widgets[n].faxAccountsSelected=_.map(o.faxAccounts.rows,"id"),o.customDashboard.widgets[n].mailAccounts=o.mailAccounts,o.customDashboard.widgets[n].mailAccountsSelected=_.map(o.mailAccounts.rows,"id"),o.customDashboard.widgets[n].openchannelAccounts=o.openchannelAccounts,o.customDashboard.widgets[n].openchannelAccountsSelected=_.map(o.openchannelAccounts.rows,"id"),o.customDashboard.widgets[n].chatWebsites=o.chatWebsites,o.customDashboard.widgets[n].chatWebsitesSelected=_.map(o.chatWebsites.rows,"id"),o.customDashboard.widgets[n].whatsappAccounts=o.whatsappAccounts,o.customDashboard.widgets[n].whatsappAccountsSelected=_.map(o.whatsappAccounts.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",attrChannel:"voice",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()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:MailAccounts}).$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.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:FaxAccounts}).$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.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:SmsAccounts}).$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.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:OpenchannelAccounts}).$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.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:WhatsappAccounts}).$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.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:ChatWebsites}).$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.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",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(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(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.\' +  vm.label | 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        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\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/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\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.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),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>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/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 ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$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 ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n        <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n        <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n          <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n        <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n        <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n          <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n        <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n        <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n          <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n        <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n        <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n          <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n        <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n        <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n          <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n        <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n        <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n          <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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) && vm.dashboarditem.attrChannel === \'voice\'" 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" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.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.0b303223.css b/public/styles/app.0b303223.css
deleted file mode 100644 (file)
index 9363192..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{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
diff --git a/public/styles/app.2a49015a.css b/public/styles/app.2a49015a.css
new file mode 100644 (file)
index 0000000..2d3e17f
--- /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}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#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
index a820c80..fb82325 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ee1=['contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','sequelize','getDataValue','action','STRING','integration','motionbar','jscripty','urlForward','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]'];(function(_0x211b6c,_0x426260){var _0x674451=function(_0xefbc67){while(--_0xefbc67){_0x211b6c['push'](_0x211b6c['shift']());}};_0x674451(++_0x426260);}(_0x7ee1,0x8d));var _0x17ee=function(_0x19cf55,_0x1503cf){_0x19cf55=_0x19cf55-0x0;var _0x3271f5=_0x7ee1[_0x19cf55];return _0x3271f5;};'use strict';var Sequelize=require(_0x17ee('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x549f74){return this[_0x17ee('0x1')](_0x17ee('0x2'));}},'action':{'type':Sequelize[_0x17ee('0x3')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0x17ee('0x4'),_0x17ee('0x5'),_0x17ee('0x6'),_0x17ee('0x7'),'browser',_0x17ee('0x8'),_0x17ee('0x9')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0x17ee('0xa')},'data1':{'type':Sequelize['STRING'](0x1000),'comment':_0x17ee('0xb')},'data2':{'type':Sequelize[_0x17ee('0x3')](0x1000),'comment':_0x17ee('0xc')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':'contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'},'data4':{'type':Sequelize['STRING'](0x1000),'comments':_0x17ee('0xd')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':_0x17ee('0xe')},'data6':{'type':Sequelize[_0x17ee('0x3')],'comments':_0x17ee('0xf')},'data7':{'type':Sequelize[_0x17ee('0x10')],'comments':'urlForward[body]'}};
\ No newline at end of file
+var _0xad24=['urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','TEXT','urlForward[body]','sequelize','exports','VIRTUAL','getDataValue','action','STRING','motionbar','urlForward','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','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]'];(function(_0xb07532,_0x19a450){var _0x38d8c3=function(_0x5237f2){while(--_0x5237f2){_0xb07532['push'](_0xb07532['shift']());}};_0x38d8c3(++_0x19a450);}(_0xad24,0x1ce));var _0x4ad2=function(_0x13f225,_0x2f9003){_0x13f225=_0x13f225-0x0;var _0x23fe4f=_0xad24[_0x13f225];return _0x23fe4f;};'use strict';var Sequelize=require(_0x4ad2('0x0'));module[_0x4ad2('0x1')]={'name':{'type':Sequelize[_0x4ad2('0x2')],'get':function(_0x1034c9){return this[_0x4ad2('0x3')](_0x4ad2('0x4'));}},'action':{'type':Sequelize[_0x4ad2('0x5')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager','integration',_0x4ad2('0x6'),'jscripty',_0x4ad2('0x7'),'browser',_0x4ad2('0x8'),_0x4ad2('0x9')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0x4ad2('0xa')},'data1':{'type':Sequelize[_0x4ad2('0x5')](0x1000),'comment':_0x4ad2('0xb')},'data2':{'type':Sequelize[_0x4ad2('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[_0x4ad2('0x5')](0x1000),'comment':_0x4ad2('0xc')},'data4':{'type':Sequelize[_0x4ad2('0x5')](0x1000),'comments':_0x4ad2('0xd')},'data5':{'type':Sequelize[_0x4ad2('0x5')](0x1000),'comments':_0x4ad2('0xe')},'data6':{'type':Sequelize[_0x4ad2('0x5')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize[_0x4ad2('0xf')],'comments':_0x4ad2('0x10')}};
\ No newline at end of file
index 31befa6..bdef7b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39f4=['to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','apply','save','update','then','destroy','error','stack','name','send','body','Action','params','catch','find','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','crypto','desk.js'];(function(_0x286f1d,_0x563563){var _0x10164a=function(_0x3890d8){while(--_0x3890d8){_0x286f1d['push'](_0x286f1d['shift']());}};_0x10164a(++_0x563563);}(_0x39f4,0x192));var _0x439f=function(_0x347252,_0x36b640){_0x347252=_0x347252-0x0;var _0x35d9f6=_0x39f4[_0x347252];return _0x35d9f6;};'use strict';var emlformat=require(_0x439f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x439f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x439f('0x2'));var moment=require(_0x439f('0x3'));var BPromise=require(_0x439f('0x4'));var Mustache=require(_0x439f('0x5'));var util=require(_0x439f('0x6'));var path=require('path');var sox=require(_0x439f('0x7'));var csv=require('to-csv');var ejs=require(_0x439f('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x439f('0x9'));var squel=require('squel');var crypto=require(_0x439f('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x439f('0xb'));var toCsv=require(_0x439f('0xc'));var querystring=require(_0x439f('0xd'));var Papa=require(_0x439f('0xe'));var Redis=require(_0x439f('0xf'));var authService=require(_0x439f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x439f('0x11'));var hardwareService=require(_0x439f('0x12'));var logger=require(_0x439f('0x13'))(_0x439f('0x14'));var utils=require('../../config/utils');var config=require(_0x439f('0x15'));var licenseUtil=require(_0x439f('0x16'));var db=require(_0x439f('0x17'))['db'];function respondWithStatusCode(_0x1cb480,_0x33055f){_0x33055f=_0x33055f||0xcc;return function(_0x504754){if(_0x504754){return _0x1cb480[_0x439f('0x18')](_0x33055f);}return _0x1cb480[_0x439f('0x19')](_0x33055f)[_0x439f('0x1a')]();};}function respondWithResult(_0x5ea3fd,_0x2cb3ba){_0x2cb3ba=_0x2cb3ba||0xc8;return function(_0x4f3917){if(_0x4f3917){return _0x5ea3fd[_0x439f('0x19')](_0x2cb3ba)['json'](_0x4f3917);}};}function respondWithFilteredResult(_0x18fde6,_0x4abd1c){return function(_0x515009){if(_0x515009){var _0x53331c=typeof _0x4abd1c['offset']===_0x439f('0x1b')&&typeof _0x4abd1c['limit']===_0x439f('0x1b');var _0x239f78=_0x515009[_0x439f('0x1c')];var _0x47063b=_0x53331c?0x0:_0x4abd1c[_0x439f('0x1d')];var _0x4fc073=_0x53331c?_0x515009[_0x439f('0x1c')]:_0x4abd1c['offset']+_0x4abd1c[_0x439f('0x1e')];var _0x4148b1;if(_0x4fc073>=_0x239f78){_0x4fc073=_0x239f78;_0x4148b1=0xc8;}else{_0x4148b1=0xce;}_0x18fde6[_0x439f('0x19')](_0x4148b1);return _0x18fde6[_0x439f('0x1f')]('Content-Range',_0x47063b+'-'+_0x4fc073+'/'+_0x239f78)['json'](_0x515009);}return null;};}function patchUpdates(_0x305381){return function(_0x3e9a53){try{jsonpatch[_0x439f('0x20')](_0x3e9a53,_0x305381,!![]);}catch(_0x2134b3){return BPromise['reject'](_0x2134b3);}return _0x3e9a53[_0x439f('0x21')]();};}function saveUpdates(_0x9d2c66,_0x47b6ec){return function(_0x4cf4fe){if(_0x4cf4fe){return _0x4cf4fe[_0x439f('0x22')](_0x9d2c66)[_0x439f('0x23')](function(_0x1f76fd){return _0x1f76fd;});}return null;};}function removeEntity(_0x2efe69,_0x1b95ab){return function(_0x2c0fa1){if(_0x2c0fa1){return _0x2c0fa1[_0x439f('0x24')]()[_0x439f('0x23')](function(){_0x2efe69[_0x439f('0x19')](0xcc)[_0x439f('0x1a')]();});}};}function handleEntityNotFound(_0x4fdfcd,_0x426190){return function(_0xe1f409){if(!_0xe1f409){_0x4fdfcd[_0x439f('0x18')](0x194);}return _0xe1f409;};}function handleError(_0xf29afb,_0x2d0237){_0x2d0237=_0x2d0237||0x1f4;return function(_0x2ece41){logger[_0x439f('0x25')](_0x2ece41[_0x439f('0x26')]);if(_0x2ece41[_0x439f('0x27')]){delete _0x2ece41[_0x439f('0x27')];}_0xf29afb[_0x439f('0x19')](_0x2d0237)[_0x439f('0x28')](_0x2ece41);};}exports['update']=function(_0x1e9355,_0x4c598c){if(_0x1e9355[_0x439f('0x29')]['id']){delete _0x1e9355[_0x439f('0x29')]['id'];}return db[_0x439f('0x2a')]['find']({'where':{'id':_0x1e9355[_0x439f('0x2b')]['id']}})['then'](handleEntityNotFound(_0x4c598c,null))[_0x439f('0x23')](saveUpdates(_0x1e9355[_0x439f('0x29')],null))[_0x439f('0x23')](respondWithResult(_0x4c598c,null))[_0x439f('0x2c')](handleError(_0x4c598c,null));};exports[_0x439f('0x24')]=function(_0x343d15,_0x1e97fa){return db['Action'][_0x439f('0x2d')]({'where':{'id':_0x343d15[_0x439f('0x2b')]['id']}})[_0x439f('0x23')](handleEntityNotFound(_0x1e97fa,null))['then'](removeEntity(_0x1e97fa,null))[_0x439f('0x2c')](handleError(_0x1e97fa,null));};
\ No newline at end of file
+var _0x66fb=['apply','save','then','destroy','sendStatus','error','name','update','body','params','catch','Action','find','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','undefined','count','offset','limit','set','Content-Range','json'];(function(_0x3ba0bf,_0x2a5165){var _0x475fe6=function(_0x29e058){while(--_0x29e058){_0x3ba0bf['push'](_0x3ba0bf['shift']());}};_0x475fe6(++_0x2a5165);}(_0x66fb,0xc1));var _0xb66f=function(_0xd2ab45,_0x4ef6f2){_0xd2ab45=_0xd2ab45-0x0;var _0x496637=_0x66fb[_0xd2ab45];return _0x496637;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb66f('0x0'));var jsonpatch=require(_0xb66f('0x1'));var rp=require(_0xb66f('0x2'));var moment=require(_0xb66f('0x3'));var BPromise=require(_0xb66f('0x4'));var Mustache=require(_0xb66f('0x5'));var util=require('util');var path=require(_0xb66f('0x6'));var sox=require('sox');var csv=require(_0xb66f('0x7'));var ejs=require(_0xb66f('0x8'));var fs=require('fs');var fs_extra=require(_0xb66f('0x9'));var _=require(_0xb66f('0xa'));var squel=require(_0xb66f('0xb'));var crypto=require('crypto');var jsforce=require(_0xb66f('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xb66f('0x7'));var querystring=require(_0xb66f('0xd'));var Papa=require(_0xb66f('0xe'));var Redis=require(_0xb66f('0xf'));var authService=require(_0xb66f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xb66f('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb66f('0x12'))(_0xb66f('0x13'));var utils=require(_0xb66f('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xb66f('0x15'));var db=require(_0xb66f('0x16'))['db'];function respondWithStatusCode(_0x6cf9e3,_0x2f39f9){_0x2f39f9=_0x2f39f9||0xcc;return function(_0x4cbfb8){if(_0x4cbfb8){return _0x6cf9e3['sendStatus'](_0x2f39f9);}return _0x6cf9e3[_0xb66f('0x17')](_0x2f39f9)[_0xb66f('0x18')]();};}function respondWithResult(_0x11dddf,_0x198fd8){_0x198fd8=_0x198fd8||0xc8;return function(_0x32cf25){if(_0x32cf25){return _0x11dddf[_0xb66f('0x17')](_0x198fd8)['json'](_0x32cf25);}};}function respondWithFilteredResult(_0xe037c0,_0x5426f4){return function(_0x33777f){if(_0x33777f){var _0x525afc=typeof _0x5426f4['offset']==='undefined'&&typeof _0x5426f4['limit']===_0xb66f('0x19');var _0x50e71e=_0x33777f[_0xb66f('0x1a')];var _0x435abb=_0x525afc?0x0:_0x5426f4[_0xb66f('0x1b')];var _0x219671=_0x525afc?_0x33777f['count']:_0x5426f4[_0xb66f('0x1b')]+_0x5426f4[_0xb66f('0x1c')];var _0x36b8f8;if(_0x219671>=_0x50e71e){_0x219671=_0x50e71e;_0x36b8f8=0xc8;}else{_0x36b8f8=0xce;}_0xe037c0[_0xb66f('0x17')](_0x36b8f8);return _0xe037c0[_0xb66f('0x1d')](_0xb66f('0x1e'),_0x435abb+'-'+_0x219671+'/'+_0x50e71e)[_0xb66f('0x1f')](_0x33777f);}return null;};}function patchUpdates(_0x507a53){return function(_0x5c6997){try{jsonpatch[_0xb66f('0x20')](_0x5c6997,_0x507a53,!![]);}catch(_0x250e16){return BPromise['reject'](_0x250e16);}return _0x5c6997[_0xb66f('0x21')]();};}function saveUpdates(_0x5a913d,_0x27b671){return function(_0x22c5cf){if(_0x22c5cf){return _0x22c5cf['update'](_0x5a913d)[_0xb66f('0x22')](function(_0x1490e7){return _0x1490e7;});}return null;};}function removeEntity(_0x9336f6,_0x331d02){return function(_0x8f6695){if(_0x8f6695){return _0x8f6695[_0xb66f('0x23')]()[_0xb66f('0x22')](function(){_0x9336f6[_0xb66f('0x17')](0xcc)[_0xb66f('0x18')]();});}};}function handleEntityNotFound(_0x3d2364,_0x390d45){return function(_0xd82d0e){if(!_0xd82d0e){_0x3d2364[_0xb66f('0x24')](0x194);}return _0xd82d0e;};}function handleError(_0x5c74b3,_0x1fb624){_0x1fb624=_0x1fb624||0x1f4;return function(_0x513128){logger[_0xb66f('0x25')](_0x513128['stack']);if(_0x513128[_0xb66f('0x26')]){delete _0x513128['name'];}_0x5c74b3[_0xb66f('0x17')](_0x1fb624)['send'](_0x513128);};}exports[_0xb66f('0x27')]=function(_0x428974,_0x531516){if(_0x428974[_0xb66f('0x28')]['id']){delete _0x428974[_0xb66f('0x28')]['id'];}return db['Action']['find']({'where':{'id':_0x428974[_0xb66f('0x29')]['id']}})[_0xb66f('0x22')](handleEntityNotFound(_0x531516,null))['then'](saveUpdates(_0x428974['body'],null))['then'](respondWithResult(_0x531516,null))[_0xb66f('0x2a')](handleError(_0x531516,null));};exports['destroy']=function(_0x4785dd,_0x1b99c0){return db[_0xb66f('0x2b')][_0xb66f('0x2c')]({'where':{'id':_0x4785dd['params']['id']}})[_0xb66f('0x22')](handleEntityNotFound(_0x1b99c0,null))[_0xb66f('0x22')](removeEntity(_0x1b99c0,null))[_0xb66f('0x2a')](handleError(_0x1b99c0,null));};
\ No newline at end of file
index a66c83b..b59439e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc10=['rimraf','./action.attributes','exports','define','Action','tools_actions','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5bb1ca,_0x284db8){var _0x3ab175=function(_0x3a1e5d){while(--_0x3a1e5d){_0x5bb1ca['push'](_0x5bb1ca['shift']());}};_0x3ab175(++_0x284db8);}(_0xbc10,0xa2));var _0x0bc1=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xbc10[_0xbe200f];return _0x192597;};'use strict';var _=require(_0x0bc1('0x0'));var util=require('util');var logger=require(_0x0bc1('0x1'))(_0x0bc1('0x2'));var moment=require(_0x0bc1('0x3'));var BPromise=require(_0x0bc1('0x4'));var rp=require(_0x0bc1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0bc1('0x6'));var config=require('../../config/environment');var attributes=require(_0x0bc1('0x7'));module[_0x0bc1('0x8')]=function(_0x495244,_0x5bb153){return _0x495244[_0x0bc1('0x9')](_0x0bc1('0xa'),attributes,{'tableName':_0x0bc1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x03cb=['path','rimraf','exports','define','Action','tools_actions','api','moment','bluebird','request-promise'];(function(_0xa713b1,_0x1d1734){var _0x56a3df=function(_0x75c640){while(--_0x75c640){_0xa713b1['push'](_0xa713b1['shift']());}};_0x56a3df(++_0x1d1734);}(_0x03cb,0x1dc));var _0xb03c=function(_0xb2b019,_0x53c3d7){_0xb2b019=_0xb2b019-0x0;var _0x4526a1=_0x03cb[_0xb2b019];return _0x4526a1;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xb03c('0x0'));var moment=require(_0xb03c('0x1'));var BPromise=require(_0xb03c('0x2'));var rp=require(_0xb03c('0x3'));var fs=require('fs');var path=require(_0xb03c('0x4'));var rimraf=require(_0xb03c('0x5'));var config=require('../../config/environment');var attributes=require('./action.attributes');module[_0xb03c('0x6')]=function(_0x524366,_0x4af05e){return _0x524366[_0xb03c('0x7')](_0xb03c('0x8'),attributes,{'tableName':_0xb03c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 65df8fb..26e2943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['../../config/environment','jayson/promise','client','http','then','info','Action,\x20%s,\x20%s','Action,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils'];(function(_0x4f4786,_0x39668f){var _0xbbf909=function(_0x20d675){while(--_0x20d675){_0x4f4786['push'](_0x4f4786['shift']());}};_0xbbf909(++_0x39668f);}(_0xe14b,0x93));var _0xbe14=function(_0x7cdaae,_0x55fb8d){_0x7cdaae=_0x7cdaae-0x0;var _0x39779f=_0xe14b[_0x7cdaae];return _0x39779f;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbe14('0x2'));var fs=require('fs');var Redis=require(_0xbe14('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe14('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbe14('0x5'));var jayson=require(_0xbe14('0x6'));var client=jayson[_0xbe14('0x7')][_0xbe14('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){return client['request'](_0x1d9ade,_0x196fca)[_0xbe14('0x9')](function(_0x6fceff){logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,'request\x20sent');logger['debug'](_0xbe14('0xc'),_0x39387e,_0xbe14('0xd'),JSON['stringify'](_0x6fceff));if(_0x6fceff[_0xbe14('0xe')]){if(_0x6fceff[_0xbe14('0xe')][_0xbe14('0xf')]===0x1f4){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x50f909(_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);}logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x566ae7(_0x6fceff['error']['message']);}else{logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,_0xbe14('0xd'));_0x566ae7(_0x6fceff[_0xbe14('0x11')]['message']);}})[_0xbe14('0x12')](function(_0xe9c3ec){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0xe9c3ec);_0x50f909(_0xe9c3ec);});});}
\ No newline at end of file
+var _0x7217=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Action,\x20%s,\x20%s','debug','Action,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x7217,0x19e));var _0x7721=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0x7217[_0x1b828b];return _0x98da1a;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var moment=require(_0x7721('0x1'));var BPromise=require(_0x7721('0x2'));var rs=require(_0x7721('0x3'));var fs=require('fs');var Redis=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7721('0x6'));var config=require(_0x7721('0x7'));var jayson=require(_0x7721('0x8'));var client=jayson[_0x7721('0x9')][_0x7721('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf7ff37,_0x18ab6b,_0x21f680){return new BPromise(function(_0x225610,_0x2f99ed){return client[_0x7721('0xb')](_0xf7ff37,_0x21f680)[_0x7721('0xc')](function(_0xfa8835){logger[_0x7721('0xd')](_0x7721('0xe'),_0x18ab6b,'request\x20sent');logger[_0x7721('0xf')](_0x7721('0x10'),_0x18ab6b,_0x7721('0x11'),JSON[_0x7721('0x12')](_0xfa8835));if(_0xfa8835[_0x7721('0x13')]){if(_0xfa8835[_0x7721('0x13')][_0x7721('0x14')]===0x1f4){logger[_0x7721('0x13')]('Action,\x20%s,\x20%s',_0x18ab6b,_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);return _0x2f99ed(_0xfa8835['error'][_0x7721('0x15')]);}logger[_0x7721('0x13')](_0x7721('0xe'),_0x18ab6b,_0xfa8835[_0x7721('0x13')]['message']);return _0x225610(_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);}else{logger['info']('Action,\x20%s,\x20%s',_0x18ab6b,'request\x20sent');_0x225610(_0xfa8835[_0x7721('0x16')][_0x7721('0x15')]);}})[_0x7721('0x17')](function(_0x32550d){logger['error'](_0x7721('0xe'),_0x18ab6b,_0x32550d);_0x2f99ed(_0x32550d);});});}
\ No newline at end of file
index fc195b7..2c795ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d99=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','/:id','isAuthenticated','update','destroy','exports'];(function(_0x1e4dc4,_0x1dc0fd){var _0x1fa331=function(_0xa60c97){while(--_0xa60c97){_0x1e4dc4['push'](_0x1e4dc4['shift']());}};_0x1fa331(++_0x1dc0fd);}(_0x1d99,0xf0));var _0x91d9=function(_0x126f7a,_0xa66a83){_0x126f7a=_0x126f7a-0x0;var _0x484228=_0x1d99[_0x126f7a];return _0x484228;};'use strict';var multer=require(_0x91d9('0x0'));var util=require(_0x91d9('0x1'));var path=require(_0x91d9('0x2'));var timeout=require(_0x91d9('0x3'));var express=require(_0x91d9('0x4'));var router=express['Router']();var fs_extra=require(_0x91d9('0x5'));var auth=require(_0x91d9('0x6'));var interaction=require(_0x91d9('0x7'));var config=require(_0x91d9('0x8'));var controller=require(_0x91d9('0x9'));router[_0x91d9('0xa')](_0x91d9('0xb'),auth[_0x91d9('0xc')](),controller[_0x91d9('0xd')]);router['delete'](_0x91d9('0xb'),auth['isAuthenticated'](),controller[_0x91d9('0xe')]);module[_0x91d9('0xf')]=router;
\ No newline at end of file
+var _0xb62b=['isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','/:id'];(function(_0xd4ea16,_0x25b25f){var _0x5dd5dc=function(_0x4c49da){while(--_0x4c49da){_0xd4ea16['push'](_0xd4ea16['shift']());}};_0x5dd5dc(++_0x25b25f);}(_0xb62b,0x105));var _0xbb62=function(_0x55bc85,_0x5db3e7){_0x55bc85=_0x55bc85-0x0;var _0x27c6b6=_0xb62b[_0x55bc85];return _0x27c6b6;};'use strict';var multer=require(_0xbb62('0x0'));var util=require(_0xbb62('0x1'));var path=require(_0xbb62('0x2'));var timeout=require(_0xbb62('0x3'));var express=require('express');var router=express[_0xbb62('0x4')]();var fs_extra=require(_0xbb62('0x5'));var auth=require(_0xbb62('0x6'));var interaction=require(_0xbb62('0x7'));var config=require(_0xbb62('0x8'));var controller=require(_0xbb62('0x9'));router['put'](_0xbb62('0xa'),auth[_0xbb62('0xb')](),controller[_0xbb62('0xc')]);router[_0xbb62('0xd')](_0xbb62('0xa'),auth[_0xbb62('0xb')](),controller[_0xbb62('0xe')]);module[_0xbb62('0xf')]=router;
\ No newline at end of file
index ae80398..3143482 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['sequelize','STRING','TEXT'];(function(_0x358e05,_0x167aed){var _0x549450=function(_0x485caf){while(--_0x485caf){_0x358e05['push'](_0x358e05['shift']());}};_0x549450(++_0x167aed);}(_0x7217,0x19e));var _0x7721=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x7217[_0x5ddb1c];return _0x354adc;};'use strict';var Sequelize=require(_0x7721('0x0'));module['exports']={'name':{'type':Sequelize[_0x7721('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x7721('0x1')]},'parent':{'type':Sequelize[_0x7721('0x1')]},'table':{'type':Sequelize[_0x7721('0x1')]},'conditions':{'type':Sequelize[_0x7721('0x2')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xeff8=['STRING','TEXT','sequelize','exports'];(function(_0x822a41,_0x2a35ff){var _0x27c816=function(_0x4ecfde){while(--_0x4ecfde){_0x822a41['push'](_0x822a41['shift']());}};_0x27c816(++_0x2a35ff);}(_0xeff8,0x186));var _0x8eff=function(_0x37756b,_0x24db76){_0x37756b=_0x37756b-0x0;var _0x46efec=_0xeff8[_0x37756b];return _0x46efec;};'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 f488be5..fde4b48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc20=['fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','options','find','create','user','role','Reports','UserProfileSection','userProfileId','autoAssociation','CustomReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','preview','left_join','right_join','cross_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','from','MetricId','metric','function','format','replace','groupBy','orderBy','DESC','alias','joins','parse','type','foreignKey','foreignTable','table','parentKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','join','SUM(%s)','MIN(%s)','IS\x20EMPTY','IS\x20NOT\x20EMPTY','select','order','%s.%s\x20=\x20%s.%s','output','web','fullPath','%s-%s.%s','csv','custom','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','info','Run\x20Query:','child_process','fork','../../components/export/','countTable','COUNT(*)','runReport','IS\x20NOT\x20NULL','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','destroy','get','UserProfileResource','then','end','sendStatus','error','name','send','index','AnalyticCustomReport','rawAttributes'];(function(_0x1e9e5c,_0x13fb10){var _0x191cb9=function(_0x323746){while(--_0x323746){_0x1e9e5c['push'](_0x1e9e5c['shift']());}};_0x191cb9(++_0x13fb10);}(_0xbc20,0x1c7));var _0x0bc2=function(_0x4a7389,_0xa99bd9){_0x4a7389=_0x4a7389-0x0;var _0x246ee8=_0xbc20[_0x4a7389];return _0x246ee8;};'use strict';var emlformat=require(_0x0bc2('0x0'));var rimraf=require(_0x0bc2('0x1'));var zipdir=require(_0x0bc2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0bc2('0x3'));var moment=require(_0x0bc2('0x4'));var BPromise=require(_0x0bc2('0x5'));var Mustache=require(_0x0bc2('0x6'));var util=require('util');var path=require(_0x0bc2('0x7'));var sox=require(_0x0bc2('0x8'));var csv=require(_0x0bc2('0x9'));var ejs=require(_0x0bc2('0xa'));var fs=require('fs');var fs_extra=require(_0x0bc2('0xb'));var _=require(_0x0bc2('0xc'));var squel=require('squel');var crypto=require(_0x0bc2('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0bc2('0xe'));var toCsv=require(_0x0bc2('0x9'));var querystring=require('querystring');var Papa=require(_0x0bc2('0xf'));var Redis=require('ioredis');var authService=require(_0x0bc2('0x10'));var qs=require(_0x0bc2('0x11'));var as=require(_0x0bc2('0x12'));var hardwareService=require(_0x0bc2('0x13'));var logger=require(_0x0bc2('0x14'))('api');var utils=require(_0x0bc2('0x15'));var config=require(_0x0bc2('0x16'));var licenseUtil=require(_0x0bc2('0x17'));var db=require(_0x0bc2('0x18'))['db'];var dbH=require(_0x0bc2('0x18'))[_0x0bc2('0x19')];function respondWithStatusCode(_0xcd4603,_0x23260e){_0x23260e=_0x23260e||0xcc;return function(_0x3e0ca7){if(_0x3e0ca7){return _0xcd4603['sendStatus'](_0x23260e);}return _0xcd4603['status'](_0x23260e)['end']();};}function respondWithResult(_0x41c192,_0x456344){_0x456344=_0x456344||0xc8;return function(_0x3523a0){if(_0x3523a0){return _0x41c192[_0x0bc2('0x1a')](_0x456344)[_0x0bc2('0x1b')](_0x3523a0);}};}function respondWithFilteredResult(_0x4b8d4f,_0x17326b){return function(_0x447e80){if(_0x447e80){var _0x36f7d4=typeof _0x17326b['offset']===_0x0bc2('0x1c')&&typeof _0x17326b[_0x0bc2('0x1d')]===_0x0bc2('0x1c');var _0x384e86=_0x447e80[_0x0bc2('0x1e')];var _0x599550=_0x36f7d4?0x0:_0x17326b[_0x0bc2('0x1f')];var _0x38c4ad=_0x36f7d4?_0x447e80[_0x0bc2('0x1e')]:_0x17326b[_0x0bc2('0x1f')]+_0x17326b[_0x0bc2('0x1d')];var _0x402436;if(_0x38c4ad>=_0x384e86){_0x38c4ad=_0x384e86;_0x402436=0xc8;}else{_0x402436=0xce;}_0x4b8d4f[_0x0bc2('0x1a')](_0x402436);return _0x4b8d4f[_0x0bc2('0x20')](_0x0bc2('0x21'),_0x599550+'-'+_0x38c4ad+'/'+_0x384e86)[_0x0bc2('0x1b')](_0x447e80);}return null;};}function patchUpdates(_0x477b1d){return function(_0x5112c4){try{jsonpatch[_0x0bc2('0x22')](_0x5112c4,_0x477b1d,!![]);}catch(_0x27c589){return BPromise[_0x0bc2('0x23')](_0x27c589);}return _0x5112c4[_0x0bc2('0x24')]();};}function saveUpdates(_0x60e956,_0x10cfbb){return function(_0x530cac){if(_0x530cac){return _0x530cac['update'](_0x60e956)['then'](function(_0x510c2e){return _0x510c2e;});}return null;};}function removeEntity(_0xa45bd9,_0x4d5e78){return function(_0x3f1c9b){if(_0x3f1c9b){return _0x3f1c9b[_0x0bc2('0x25')]()['then'](function(){var _0x5c6a07=_0x3f1c9b[_0x0bc2('0x26')]({'plain':!![]});var _0x4ad453='CustomReports';return db[_0x0bc2('0x27')][_0x0bc2('0x25')]({'where':{'type':_0x4ad453,'resourceId':_0x5c6a07['id']}})[_0x0bc2('0x28')](function(){return _0x3f1c9b;});})[_0x0bc2('0x28')](function(){_0xa45bd9[_0x0bc2('0x1a')](0xcc)[_0x0bc2('0x29')]();});}};}function handleEntityNotFound(_0x3add03,_0x3b41b1){return function(_0x5013ef){if(!_0x5013ef){_0x3add03[_0x0bc2('0x2a')](0x194);}return _0x5013ef;};}function handleError(_0x51c3bf,_0x262ebc){_0x262ebc=_0x262ebc||0x1f4;return function(_0x3c35a6){logger[_0x0bc2('0x2b')](_0x3c35a6['stack']);if(_0x3c35a6[_0x0bc2('0x2c')]){delete _0x3c35a6[_0x0bc2('0x2c')];}_0x51c3bf[_0x0bc2('0x1a')](_0x262ebc)[_0x0bc2('0x2d')](_0x3c35a6);};}exports[_0x0bc2('0x2e')]=function(_0x222d76,_0x4b0dda){var _0x46f98c={},_0x26b7df={},_0x117946={'count':0x0,'rows':[]};var _0x27c809=_['map'](db[_0x0bc2('0x2f')][_0x0bc2('0x30')],function(_0x3c567d){return{'name':_0x3c567d[_0x0bc2('0x31')],'type':_0x3c567d['type'][_0x0bc2('0x32')]};});_0x26b7df[_0x0bc2('0x33')]=_[_0x0bc2('0x34')](_0x27c809,'name');_0x26b7df[_0x0bc2('0x35')]=_[_0x0bc2('0x36')](_0x222d76['query']);_0x26b7df[_0x0bc2('0x37')]=_[_0x0bc2('0x38')](_0x26b7df[_0x0bc2('0x33')],_0x26b7df[_0x0bc2('0x35')]);_0x46f98c[_0x0bc2('0x39')]=_[_0x0bc2('0x38')](_0x26b7df[_0x0bc2('0x33')],qs[_0x0bc2('0x3a')](_0x222d76[_0x0bc2('0x35')][_0x0bc2('0x3a')]));_0x46f98c[_0x0bc2('0x39')]=_0x46f98c[_0x0bc2('0x39')][_0x0bc2('0x3b')]?_0x46f98c[_0x0bc2('0x39')]:_0x26b7df[_0x0bc2('0x33')];if(!_0x222d76[_0x0bc2('0x35')][_0x0bc2('0x3c')](_0x0bc2('0x3d'))){_0x46f98c['limit']=qs[_0x0bc2('0x1d')](_0x222d76[_0x0bc2('0x35')][_0x0bc2('0x1d')]);_0x46f98c[_0x0bc2('0x1f')]=qs['offset'](_0x222d76['query'][_0x0bc2('0x1f')]);}_0x46f98c['order']=qs[_0x0bc2('0x3e')](_0x222d76['query'][_0x0bc2('0x3e')]);_0x46f98c[_0x0bc2('0x3f')]=qs[_0x0bc2('0x37')](_[_0x0bc2('0x40')](_0x222d76[_0x0bc2('0x35')],_0x26b7df[_0x0bc2('0x37')]),_0x27c809);if(_0x222d76[_0x0bc2('0x35')][_0x0bc2('0x41')]){_0x46f98c[_0x0bc2('0x3f')]=_[_0x0bc2('0x42')](_0x46f98c[_0x0bc2('0x3f')],{'$or':_['map'](_0x27c809,function(_0x142c70){if(_0x142c70['type']!==_0x0bc2('0x43')){var _0x17d5f6={};_0x17d5f6[_0x142c70[_0x0bc2('0x2c')]]={'$like':'%'+_0x222d76[_0x0bc2('0x35')][_0x0bc2('0x41')]+'%'};return _0x17d5f6;}})});}_0x46f98c=_[_0x0bc2('0x42')]({},_0x46f98c,_0x222d76['options']);var _0x3e1f69={'where':_0x46f98c[_0x0bc2('0x3f')]};return db[_0x0bc2('0x2f')][_0x0bc2('0x1e')](_0x3e1f69)['then'](function(_0x40c7b7){_0x117946[_0x0bc2('0x1e')]=_0x40c7b7;if(_0x222d76[_0x0bc2('0x35')][_0x0bc2('0x44')]){_0x46f98c[_0x0bc2('0x45')]=[{'all':!![]}];}return db[_0x0bc2('0x2f')][_0x0bc2('0x46')](_0x46f98c);})['then'](function(_0xaefa7){_0x117946['rows']=_0xaefa7;return _0x117946;})[_0x0bc2('0x28')](respondWithFilteredResult(_0x4b0dda,_0x46f98c))[_0x0bc2('0x47')](handleError(_0x4b0dda,null));};exports[_0x0bc2('0x48')]=function(_0x3fa039,_0x21a076){var _0x365aad={'raw':![],'where':{'id':_0x3fa039[_0x0bc2('0x49')]['id']}},_0xef3c5d={};_0xef3c5d[_0x0bc2('0x33')]=_[_0x0bc2('0x36')](db[_0x0bc2('0x2f')][_0x0bc2('0x30')]);_0xef3c5d[_0x0bc2('0x35')]=_[_0x0bc2('0x36')](_0x3fa039[_0x0bc2('0x35')]);_0xef3c5d['filters']=_[_0x0bc2('0x38')](_0xef3c5d[_0x0bc2('0x33')],_0xef3c5d[_0x0bc2('0x35')]);_0x365aad['attributes']=_[_0x0bc2('0x38')](_0xef3c5d[_0x0bc2('0x33')],qs[_0x0bc2('0x3a')](_0x3fa039[_0x0bc2('0x35')][_0x0bc2('0x3a')]));_0x365aad[_0x0bc2('0x39')]=_0x365aad[_0x0bc2('0x39')][_0x0bc2('0x3b')]?_0x365aad[_0x0bc2('0x39')]:_0xef3c5d[_0x0bc2('0x33')];if(_0x3fa039[_0x0bc2('0x35')][_0x0bc2('0x44')]){_0x365aad[_0x0bc2('0x45')]=[{'all':!![]}];}_0x365aad=_[_0x0bc2('0x42')]({},_0x365aad,_0x3fa039[_0x0bc2('0x4a')]);return db[_0x0bc2('0x2f')][_0x0bc2('0x4b')](_0x365aad)[_0x0bc2('0x28')](handleEntityNotFound(_0x21a076,null))[_0x0bc2('0x28')](respondWithResult(_0x21a076,null))[_0x0bc2('0x47')](handleError(_0x21a076,null));};exports[_0x0bc2('0x4c')]=function(_0xab65ac,_0x201af2){return db['AnalyticCustomReport'][_0x0bc2('0x4c')](_0xab65ac['body'],{})['then'](function(_0x5d5a2f){var _0x1417da=_0xab65ac[_0x0bc2('0x4d')][_0x0bc2('0x26')]({'plain':!![]});if(!_0x1417da)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1417da[_0x0bc2('0x4e')]===_0x0bc2('0x4d')){var _0x43d5fe=_0x5d5a2f[_0x0bc2('0x26')]({'plain':!![]});var _0x4ff086=_0x0bc2('0x4f');return db[_0x0bc2('0x50')][_0x0bc2('0x4b')]({'where':{'name':_0x4ff086,'userProfileId':_0x1417da[_0x0bc2('0x51')]},'raw':!![]})[_0x0bc2('0x28')](function(_0x3ad21d){if(_0x3ad21d&&_0x3ad21d[_0x0bc2('0x52')]===0x0){return db[_0x0bc2('0x27')]['create']({'name':_0x43d5fe[_0x0bc2('0x2c')],'resourceId':_0x43d5fe['id'],'type':_0x0bc2('0x53'),'sectionId':_0x3ad21d['id']},{})[_0x0bc2('0x28')](function(){return _0x5d5a2f;});}else{return _0x5d5a2f;}})[_0x0bc2('0x47')](function(_0x46a380){logger[_0x0bc2('0x2b')](_0x0bc2('0x54'),_0x46a380);throw _0x46a380;});}return _0x5d5a2f;})['then'](respondWithResult(_0x201af2,0xc9))[_0x0bc2('0x47')](handleError(_0x201af2,null));};exports['update']=function(_0x393ce9,_0x3a7f94){if(_0x393ce9[_0x0bc2('0x55')]['id']){delete _0x393ce9[_0x0bc2('0x55')]['id'];}return db['AnalyticCustomReport'][_0x0bc2('0x4b')]({'where':{'id':_0x393ce9['params']['id']}})[_0x0bc2('0x28')](handleEntityNotFound(_0x3a7f94,null))[_0x0bc2('0x28')](saveUpdates(_0x393ce9[_0x0bc2('0x55')],null))[_0x0bc2('0x28')](respondWithResult(_0x3a7f94,null))['catch'](handleError(_0x3a7f94,null));};exports['destroy']=function(_0x39499c,_0x436f8a){return db[_0x0bc2('0x2f')][_0x0bc2('0x4b')]({'where':{'id':_0x39499c[_0x0bc2('0x49')]['id']}})[_0x0bc2('0x28')](handleEntityNotFound(_0x436f8a,null))['then'](removeEntity(_0x436f8a,null))[_0x0bc2('0x47')](handleError(_0x436f8a,null));};exports[_0x0bc2('0x56')]=function(_0x4c2337,_0x4bb765){var _0x305fbd=0xa;var _0x9a35dd=['join',_0x0bc2('0x57'),_0x0bc2('0x58'),_0x0bc2('0x59')];var _0x3a9437={'SUM':'SUM(%s)','COUNT':_0x0bc2('0x5a'),'COUNT DISTINCT':_0x0bc2('0x5b'),'MAX':_0x0bc2('0x5c'),'MIN':'MIN(%s)','AVG':_0x0bc2('0x5d'),'GROUP_CONCAT':_0x0bc2('0x5e'),'GROUP_CONCAT ASC':_0x0bc2('0x5f'),'GROUP_CONCAT DESC':_0x0bc2('0x60')};var _0x2f8fc9={'SEC_TO_TIME':_0x0bc2('0x61'),'DATE':_0x0bc2('0x62'),'HOUR':_0x0bc2('0x63'),'ROUND':_0x0bc2('0x64'),'UNIX_TIMESTAMP':_0x0bc2('0x65')};var _0x54d320=function(_0x2e644c){return!_[_0x0bc2('0x66')]([_0x0bc2('0x67'),'IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x2e644c);};var _0x266559=function(_0x5f2c25){if(!_0x5f2c25||!_0x5f2c25[_0x0bc2('0x68')]['length']){return'';}for(var _0x4fcc08='(',_0x54fa87=0x0;_0x54fa87<_0x5f2c25[_0x0bc2('0x68')][_0x0bc2('0x3b')];_0x54fa87+=0x1){_0x54fa87>0x0&&(_0x4fcc08+='\x20'+_0x5f2c25[_0x0bc2('0x69')]+'\x20');_0x4fcc08+=_0x5f2c25[_0x0bc2('0x68')][_0x54fa87][_0x0bc2('0x6a')]?_0x266559(_0x5f2c25[_0x0bc2('0x68')][_0x54fa87][_0x0bc2('0x6a')]):_0x5f2c25['rules'][_0x54fa87][_0x0bc2('0x6b')]+'\x20'+_0x5f2c25[_0x0bc2('0x68')][_0x54fa87][_0x0bc2('0x6c')]+(_0x54d320(_0x5f2c25[_0x0bc2('0x68')][_0x54fa87]['condition'])?'\x20'+_0x5f2c25[_0x0bc2('0x68')][_0x54fa87][_0x0bc2('0x6d')]:'');}return _0x4fcc08+')';};var _0x1611eb={'where':{'id':_0x4c2337[_0x0bc2('0x49')]['id']}},_0xcb9248,_0x29320c,_0x5d8fc5,_0x3abd40,_0x5734ac;_0x1611eb=_[_0x0bc2('0x42')]({},_0x1611eb,_0x4c2337[_0x0bc2('0x4a')]);return db[_0x0bc2('0x2f')][_0x0bc2('0x4b')](_0x1611eb)['then'](function(_0x52dd6d){if(_0x52dd6d){_0xcb9248=_0x52dd6d;return _0x52dd6d[_0x0bc2('0x6e')]();}return null;})[_0x0bc2('0x28')](function(_0xd67268){if(_0xd67268){if(!_0xd67268[_0x0bc2('0x3b')]){throw new db[(_0x0bc2('0x6f'))][(_0x0bc2('0x70'))](_0x0bc2('0x71'),0x193);}_0x29320c=_0xd67268;return db[_0x0bc2('0x72')][_0x0bc2('0x46')]({'raw':!![]});}return null;})[_0x0bc2('0x28')](function(_0x196ad7){if(_0x196ad7){_0x5d8fc5=_[_0x0bc2('0x73')](_0x196ad7,'id');var _0x300c6f;var _0x258005=squel['select']();_0x258005[_0x0bc2('0x74')](_0xcb9248['table']);for(var _0x4f2e07=0x0;_0x4f2e07<_0x29320c['length'];_0x4f2e07+=0x1){_0x300c6f=_0x29320c[_0x4f2e07][_0x0bc2('0x75')]?_0x5d8fc5[_0x29320c[_0x4f2e07][_0x0bc2('0x75')]][_0x0bc2('0x76')]:_0x29320c[_0x4f2e07][_0x0bc2('0x6b')];_0x300c6f=_0x29320c[_0x4f2e07][_0x0bc2('0x77')]?_['replace'](_0x3a9437[_0x29320c[_0x4f2e07][_0x0bc2('0x77')]],'%s',_0x300c6f):_0x300c6f;_0x300c6f=_0x29320c[_0x4f2e07][_0x0bc2('0x78')]?_[_0x0bc2('0x79')](_0x2f8fc9[_0x29320c[_0x4f2e07]['format']],'%s',_0x300c6f):_0x300c6f;if(_0x29320c[_0x4f2e07][_0x0bc2('0x7a')]){_0x258005[_0x0bc2('0x6a')](_0x300c6f);}_0x29320c[_0x4f2e07][_0x0bc2('0x7b')]&&_0x258005['order'](_0x300c6f,_0x29320c[_0x4f2e07][_0x0bc2('0x7b')]===_0x0bc2('0x7c')?![]:!![]);_0x258005[_0x0bc2('0x6b')](_0x300c6f,_0x29320c[_0x4f2e07][_0x0bc2('0x7d')]||_0x300c6f);}if(_0xcb9248[_0x0bc2('0x7e')]){_0xcb9248['joins']=JSON[_0x0bc2('0x7f')](_0xcb9248[_0x0bc2('0x7e')]);for(var _0xcff9fa=0x0;_0xcff9fa<_0xcb9248[_0x0bc2('0x7e')][_0x0bc2('0x3b')];_0xcff9fa+=0x1){if(_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa][_0x0bc2('0x80')]&&_[_0x0bc2('0x66')](_0x9a35dd,_0xcb9248['joins'][_0xcff9fa][_0x0bc2('0x80')])&&_0xcb9248['joins'][_0xcff9fa]['parentKey']&&_0xcb9248['joins'][_0xcff9fa]['foreignTable']&&_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa][_0x0bc2('0x81')]){_0x258005[_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa][_0x0bc2('0x80')]](_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa][_0x0bc2('0x82')],null,util[_0x0bc2('0x78')]('%s.%s\x20=\x20%s.%s',_0xcb9248[_0x0bc2('0x83')],_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa][_0x0bc2('0x84')],_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa]['foreignTable'],_0xcb9248[_0x0bc2('0x7e')][_0xcff9fa][_0x0bc2('0x81')]));}}}if(_0xcb9248[_0x0bc2('0x85')]){_0xcb9248[_0x0bc2('0x85')]=JSON[_0x0bc2('0x7f')](_0xcb9248[_0x0bc2('0x85')]);_0x258005[_0x0bc2('0x3f')](_0x266559(_0xcb9248[_0x0bc2('0x85')][_0x0bc2('0x6a')]));}_0x5734ac=_0x258005[_0x0bc2('0x86')]();_0x258005['limit'](_0x305fbd);_0x258005['offset'](0x0);logger[_0x0bc2('0x87')](_0x0bc2('0x88'),_0x258005[_0x0bc2('0x89')]());return dbH[_0x0bc2('0x8a')][_0x0bc2('0x35')](_0x258005[_0x0bc2('0x89')](),{'type':dbH[_0x0bc2('0x8a')][_0x0bc2('0x8b')][_0x0bc2('0x8c')]});}})['then'](respondWithResult(_0x4bb765,null))['catch'](handleError(_0x4bb765,null));};function runReport(_0x59cf38,_0x3df27a,_0x24f12c){var _0x1baf6d=_0x3df27a[_0x0bc2('0x2c')];var _0x4ccc74=0xa;var _0xbbbc19=[_0x0bc2('0x8d'),_0x0bc2('0x57'),_0x0bc2('0x58'),_0x0bc2('0x59')];var _0x319dcd={'SUM':_0x0bc2('0x8e'),'COUNT':_0x0bc2('0x5a'),'COUNT DISTINCT':_0x0bc2('0x5b'),'MAX':'MAX(%s)','MIN':_0x0bc2('0x8f'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x0bc2('0x5e'),'GROUP_CONCAT ASC':_0x0bc2('0x5f'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x217557={'SEC_TO_TIME':_0x0bc2('0x61'),'DATE':_0x0bc2('0x62'),'HOUR':_0x0bc2('0x63'),'ROUND':_0x0bc2('0x64'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x568010=function(_0x1f8f74){return!_[_0x0bc2('0x66')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x0bc2('0x90'),_0x0bc2('0x91')],_0x1f8f74);};var _0x2b2452=function(_0x14c08c){if(!_0x14c08c||!_0x14c08c['rules'][_0x0bc2('0x3b')]){return'';}for(var _0x46d7e='(',_0x3eb262=0x0;_0x3eb262<_0x14c08c[_0x0bc2('0x68')][_0x0bc2('0x3b')];_0x3eb262+=0x1){_0x3eb262>0x0&&(_0x46d7e+='\x20'+_0x14c08c[_0x0bc2('0x69')]+'\x20');_0x46d7e+=_0x14c08c[_0x0bc2('0x68')][_0x3eb262][_0x0bc2('0x6a')]?_0x2b2452(_0x14c08c['rules'][_0x3eb262][_0x0bc2('0x6a')]):_0x14c08c[_0x0bc2('0x68')][_0x3eb262][_0x0bc2('0x6b')]+'\x20'+_0x14c08c[_0x0bc2('0x68')][_0x3eb262][_0x0bc2('0x6c')]+(_0x568010(_0x14c08c[_0x0bc2('0x68')][_0x3eb262][_0x0bc2('0x6c')])?'\x20'+_0x14c08c[_0x0bc2('0x68')][_0x3eb262][_0x0bc2('0x6d')]:'');}return _0x46d7e+')';};var _0x4a4f0d={'where':{'id':_0x59cf38['id']}},_0x5d98fa,_0x476a40,_0x418b36,_0x2fad45,_0xcbb2b7;_0x4a4f0d=_[_0x0bc2('0x42')]({},_0x4a4f0d,_0x24f12c);return db[_0x0bc2('0x2f')][_0x0bc2('0x4b')](_0x4a4f0d)[_0x0bc2('0x28')](function(_0x374d4f){if(_0x374d4f){_0x5d98fa=_0x374d4f;return _0x374d4f[_0x0bc2('0x6e')]();}return null;})[_0x0bc2('0x28')](function(_0xd136e6){if(_0xd136e6){if(!_0xd136e6[_0x0bc2('0x3b')]){throw new db[(_0x0bc2('0x6f'))]['ValidationErrorItem'](_0x0bc2('0x71'),0x193);}_0x476a40=_0xd136e6;return db[_0x0bc2('0x72')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x47cf9f){if(_0x47cf9f){_0x418b36=_[_0x0bc2('0x73')](_0x47cf9f,'id');var _0x29872e;var _0x486b0f=squel[_0x0bc2('0x92')]();_0x486b0f[_0x0bc2('0x74')](_0x5d98fa['table']);for(var _0x37beed=0x0;_0x37beed<_0x476a40[_0x0bc2('0x3b')];_0x37beed+=0x1){_0x29872e=_0x476a40[_0x37beed][_0x0bc2('0x75')]?_0x418b36[_0x476a40[_0x37beed]['MetricId']]['metric']:_0x476a40[_0x37beed]['field'];_0x29872e=_0x476a40[_0x37beed][_0x0bc2('0x77')]?_[_0x0bc2('0x79')](_0x319dcd[_0x476a40[_0x37beed]['function']],'%s',_0x29872e):_0x29872e;_0x29872e=_0x476a40[_0x37beed][_0x0bc2('0x78')]?_['replace'](_0x217557[_0x476a40[_0x37beed][_0x0bc2('0x78')]],'%s',_0x29872e):_0x29872e;if(_0x476a40[_0x37beed][_0x0bc2('0x7a')]){_0x486b0f[_0x0bc2('0x6a')](_0x29872e);}_0x476a40[_0x37beed]['orderBy']&&_0x486b0f[_0x0bc2('0x93')](_0x29872e,_0x476a40[_0x37beed]['orderBy']===_0x0bc2('0x7c')?![]:!![]);_0x486b0f[_0x0bc2('0x6b')](_0x29872e,_0x476a40[_0x37beed][_0x0bc2('0x7d')]||_0x29872e);}if(_0x5d98fa['joins']){_0x5d98fa[_0x0bc2('0x7e')]=JSON[_0x0bc2('0x7f')](_0x5d98fa[_0x0bc2('0x7e')]);for(var _0x27798f=0x0;_0x27798f<_0x5d98fa[_0x0bc2('0x7e')][_0x0bc2('0x3b')];_0x27798f+=0x1){if(_0x5d98fa[_0x0bc2('0x7e')][_0x27798f][_0x0bc2('0x80')]&&_[_0x0bc2('0x66')](_0xbbbc19,_0x5d98fa['joins'][_0x27798f][_0x0bc2('0x80')])&&_0x5d98fa[_0x0bc2('0x7e')][_0x27798f]['parentKey']&&_0x5d98fa[_0x0bc2('0x7e')][_0x27798f]['foreignTable']&&_0x5d98fa[_0x0bc2('0x7e')][_0x27798f][_0x0bc2('0x81')]){_0x486b0f[_0x5d98fa[_0x0bc2('0x7e')][_0x27798f][_0x0bc2('0x80')]](_0x5d98fa[_0x0bc2('0x7e')][_0x27798f]['foreignTable'],null,util['format'](_0x0bc2('0x94'),_0x5d98fa[_0x0bc2('0x83')],_0x5d98fa['joins'][_0x27798f]['parentKey'],_0x5d98fa[_0x0bc2('0x7e')][_0x27798f][_0x0bc2('0x82')],_0x5d98fa[_0x0bc2('0x7e')][_0x27798f]['foreignKey']));}}}if(_0x5d98fa[_0x0bc2('0x85')]){_0x5d98fa[_0x0bc2('0x85')]=JSON['parse'](_0x5d98fa[_0x0bc2('0x85')]);_0x486b0f[_0x0bc2('0x3f')](_0x2b2452(_0x5d98fa[_0x0bc2('0x85')][_0x0bc2('0x6a')]));}_0xcbb2b7=_0x486b0f[_0x0bc2('0x86')]();_0x486b0f[_0x0bc2('0x1d')](_0x4ccc74);_0x486b0f[_0x0bc2('0x1f')](0x0);return;}})[_0x0bc2('0x28')](function(){if(_0x3df27a[_0x0bc2('0x95')]===_0x0bc2('0x96')){return null;}var _0x525c40=_[_0x0bc2('0x42')](_0x3df27a,{'name':_0x3df27a[_0x0bc2('0x97')]||_0x3df27a['name']||_0x5d98fa[_0x0bc2('0x2c')],'basename':_0x1baf6d,'savename':util['format'](_0x0bc2('0x98'),_0x3df27a[_0x0bc2('0x2c')]||_0x5d98fa[_0x0bc2('0x2c')],require('randomstring')['generate'](0x4),_0x3df27a[_0x0bc2('0x95')]||_0x0bc2('0x99')),'reportId':_0x5d98fa['id'],'reportType':_0x0bc2('0x9a')});return db[_0x0bc2('0x9b')][_0x0bc2('0x4c')](_0x525c40,{'raw':!![]});})[_0x0bc2('0x28')](function(_0x531023){if(_0x5d98fa[_0x0bc2('0x83')]==='cdr'){_0xcbb2b7[_0x0bc2('0x3f')](_0x5d98fa['table']+_0x0bc2('0x9c'),_0x3df27a[_0x0bc2('0x9d')],_0x3df27a[_0x0bc2('0x9e')]);}else{_0xcbb2b7['where'](_0x5d98fa[_0x0bc2('0x83')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3df27a[_0x0bc2('0x9d')],_0x3df27a[_0x0bc2('0x9e')]);}if(_0x531023){logger[_0x0bc2('0x9f')](_0x0bc2('0xa0'),_0xcbb2b7[_0x0bc2('0x89')]());require(_0x0bc2('0xa1'))[_0x0bc2('0xa2')](path[_0x0bc2('0x8d')](__dirname,_0x0bc2('0xa3'),_0x531023[_0x0bc2('0x95')]),[_0x531023['id'],_0xcbb2b7[_0x0bc2('0x89')](),path['join'](__dirname,'../../files/reports',_0x531023['savename']),_0x1baf6d]);return _0x531023;}else{var _0x4f34ac=squel[_0x0bc2('0x92')]();_0x4f34ac[_0x0bc2('0x74')]('('+_0xcbb2b7[_0x0bc2('0x89')]()+')',_0x0bc2('0xa4'));_0x4f34ac['field'](_0x0bc2('0xa5'),_0x0bc2('0x1e'));_0xcbb2b7['limit'](_0x3df27a[_0x0bc2('0x1d')]||_0x4ccc74);_0xcbb2b7[_0x0bc2('0x1f')](_0x3df27a[_0x0bc2('0x1f')]||0x0);return dbH[_0x0bc2('0x8a')]['query'](_0x4f34ac['toString'](),{'type':dbH[_0x0bc2('0x8a')]['QueryTypes'][_0x0bc2('0x8c')]})[_0x0bc2('0x28')](function(_0x5db7b7){if(!_0x5db7b7[_0x0bc2('0x3b')]){_0x2fad45=0x0;}else{_0x2fad45=_0x5db7b7[0x0][_0x0bc2('0x1e')]||0x0;}return dbH['sequelize']['query'](_0xcbb2b7[_0x0bc2('0x89')](),{'type':dbH[_0x0bc2('0x8a')][_0x0bc2('0x8b')][_0x0bc2('0x8c')]});})[_0x0bc2('0x28')](function(_0x170465){return{'rows':_0x170465||[],'count':_0x2fad45};});}});}exports['run']=function(_0x813b6b,_0x5e7645){return runReport(_0x813b6b['params'],_0x813b6b[_0x0bc2('0x35')],_0x813b6b['options'])['then'](respondWithResult(_0x5e7645,null))[_0x0bc2('0x47')](handleError(_0x5e7645,null));};exports[_0x0bc2('0xa6')]=runReport;exports[_0x0bc2('0x35')]=function(_0x3d3695,_0x47782a){var _0x1c7ec9=0xa;var _0x2ab1de=[_0x0bc2('0x8d'),_0x0bc2('0x57'),_0x0bc2('0x58'),_0x0bc2('0x59')];var _0x14d4f6={'SUM':_0x0bc2('0x8e'),'COUNT':_0x0bc2('0x5a'),'COUNT DISTINCT':_0x0bc2('0x5b'),'MAX':'MAX(%s)','MIN':_0x0bc2('0x8f'),'AVG':_0x0bc2('0x5d'),'GROUP_CONCAT':_0x0bc2('0x5e'),'GROUP_CONCAT ASC':_0x0bc2('0x5f'),'GROUP_CONCAT DESC':_0x0bc2('0x60')};var _0x53c54b={'SEC_TO_TIME':_0x0bc2('0x61'),'DATE':_0x0bc2('0x62'),'HOUR':_0x0bc2('0x63'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x0bc2('0x65')};var _0x304fde=function(_0x5ea3d8){return!_['includes']([_0x0bc2('0x67'),_0x0bc2('0xa7'),'IS\x20EMPTY',_0x0bc2('0x91')],_0x5ea3d8);};var _0x1ef3a2=function(_0x1af6c0){if(!_0x1af6c0||!_0x1af6c0[_0x0bc2('0x68')][_0x0bc2('0x3b')]){return'';}for(var _0x581ec8='(',_0x2846e0=0x0;_0x2846e0<_0x1af6c0[_0x0bc2('0x68')][_0x0bc2('0x3b')];_0x2846e0+=0x1){_0x2846e0>0x0&&(_0x581ec8+='\x20'+_0x1af6c0['operator']+'\x20');_0x581ec8+=_0x1af6c0['rules'][_0x2846e0][_0x0bc2('0x6a')]?_0x1ef3a2(_0x1af6c0['rules'][_0x2846e0][_0x0bc2('0x6a')]):_0x1af6c0[_0x0bc2('0x68')][_0x2846e0][_0x0bc2('0x6b')]+'\x20'+_0x1af6c0[_0x0bc2('0x68')][_0x2846e0][_0x0bc2('0x6c')]+(_0x304fde(_0x1af6c0[_0x0bc2('0x68')][_0x2846e0][_0x0bc2('0x6c')])?'\x20'+_0x1af6c0[_0x0bc2('0x68')][_0x2846e0][_0x0bc2('0x6d')]:'');}return _0x581ec8+')';};var _0x5637ce={'where':{'id':_0x3d3695[_0x0bc2('0x49')]['id']}},_0x4dcd96,_0x1b9dbf,_0x361538,_0x276b53,_0x51be3c;_0x5637ce=_[_0x0bc2('0x42')]({},_0x5637ce,_0x3d3695[_0x0bc2('0x4a')]);return db['AnalyticCustomReport'][_0x0bc2('0x4b')](_0x5637ce)[_0x0bc2('0x28')](function(_0x34c399){if(_0x34c399){_0x4dcd96=_0x34c399;return _0x34c399['getFields']();}return null;})[_0x0bc2('0x28')](function(_0x5b76e5){if(_0x5b76e5){if(!_0x5b76e5[_0x0bc2('0x3b')]){throw new db[(_0x0bc2('0x6f'))][(_0x0bc2('0x70'))](_0x0bc2('0x71'),0x193);}_0x1b9dbf=_0x5b76e5;return db[_0x0bc2('0x72')]['findAll']({'raw':!![]});}return null;})[_0x0bc2('0x28')](function(_0x422740){if(_0x422740){_0x361538=_[_0x0bc2('0x73')](_0x422740,'id');var _0x115d7e;var _0x298dfc=squel[_0x0bc2('0x92')]();_0x298dfc[_0x0bc2('0x74')](_0x4dcd96[_0x0bc2('0x83')]);for(var _0x244145=0x0;_0x244145<_0x1b9dbf[_0x0bc2('0x3b')];_0x244145+=0x1){_0x115d7e=_0x1b9dbf[_0x244145][_0x0bc2('0x75')]?_0x361538[_0x1b9dbf[_0x244145][_0x0bc2('0x75')]]['metric']:_0x1b9dbf[_0x244145][_0x0bc2('0x6b')];_0x115d7e=_0x1b9dbf[_0x244145]['function']?_['replace'](_0x14d4f6[_0x1b9dbf[_0x244145][_0x0bc2('0x77')]],'%s',_0x115d7e):_0x115d7e;_0x115d7e=_0x1b9dbf[_0x244145][_0x0bc2('0x78')]?_[_0x0bc2('0x79')](_0x53c54b[_0x1b9dbf[_0x244145]['format']],'%s',_0x115d7e):_0x115d7e;if(_0x1b9dbf[_0x244145][_0x0bc2('0x7a')]){_0x298dfc[_0x0bc2('0x6a')](_0x115d7e);}_0x1b9dbf[_0x244145][_0x0bc2('0x7b')]&&_0x298dfc[_0x0bc2('0x93')](_0x115d7e,_0x1b9dbf[_0x244145][_0x0bc2('0x7b')]===_0x0bc2('0x7c')?![]:!![]);_0x298dfc['field'](_0x115d7e,_0x1b9dbf[_0x244145][_0x0bc2('0x7d')]||_0x115d7e);}if(_0x4dcd96['joins']){_0x4dcd96[_0x0bc2('0x7e')]=JSON[_0x0bc2('0x7f')](_0x4dcd96[_0x0bc2('0x7e')]);for(var _0x2e1b8d=0x0;_0x2e1b8d<_0x4dcd96[_0x0bc2('0x7e')][_0x0bc2('0x3b')];_0x2e1b8d+=0x1){if(_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d][_0x0bc2('0x80')]&&_['includes'](_0x2ab1de,_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d][_0x0bc2('0x80')])&&_0x4dcd96['joins'][_0x2e1b8d][_0x0bc2('0x84')]&&_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d][_0x0bc2('0x82')]&&_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d]['foreignKey']){_0x298dfc[_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d][_0x0bc2('0x80')]](_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d][_0x0bc2('0x82')],null,util[_0x0bc2('0x78')]('%s.%s\x20=\x20%s.%s',_0x4dcd96[_0x0bc2('0x83')],_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d]['parentKey'],_0x4dcd96[_0x0bc2('0x7e')][_0x2e1b8d][_0x0bc2('0x82')],_0x4dcd96['joins'][_0x2e1b8d][_0x0bc2('0x81')]));}}}if(_0x4dcd96['conditions']){_0x4dcd96['conditions']=JSON[_0x0bc2('0x7f')](_0x4dcd96['conditions']);_0x298dfc[_0x0bc2('0x3f')](_0x1ef3a2(_0x4dcd96[_0x0bc2('0x85')]['group']));}_0x51be3c=_0x298dfc[_0x0bc2('0x86')]();_0x298dfc[_0x0bc2('0x1d')](_0x1c7ec9);_0x298dfc[_0x0bc2('0x1f')](0x0);logger[_0x0bc2('0x87')](_0x0bc2('0x88'),_0x298dfc['toString']());return dbH[_0x0bc2('0x8a')]['query'](_0x298dfc[_0x0bc2('0x89')](),{'type':dbH[_0x0bc2('0x8a')][_0x0bc2('0x8b')][_0x0bc2('0x8c')]});}})[_0x0bc2('0x28')](function(){return{'sql':_0x51be3c[_0x0bc2('0x89')]()};})[_0x0bc2('0x28')](respondWithResult(_0x47782a,null))[_0x0bc2('0x47')](handleError(_0x47782a,null));};
\ No newline at end of file
+var _0x3f5c=['options','AnalyticCustomReport','findAll','rows','catch','show','params','keys','length','includeAll','include','find','create','user','Reports','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','preview','join','left_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','AnalyticMetric','keyBy','select','from','MetricId','metric','replace','function','format','orderBy','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','conditions','debug','Limited\x20Query:','sequelize','toString','QueryTypes','SELECT','right_join','COUNT(%s)','MIN(%s)','UNIX_TIMESTAMP(%s)','includes','Please\x20insert\x20at\x20least\x20one\x20field','groupBy','DESC','clone','output','web','generate','csv','custom','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','info','Run\x20Query:','fork','../../files/reports','savename','countTable','COUNT(*)','run','alias','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','get','CustomReports','UserProfileResource','destroy','stack','name','index','map','rawAttributes','fieldName','key','query','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','merge'];(function(_0x13236c,_0x3bc3c4){var _0x115057=function(_0x550ba2){while(--_0x550ba2){_0x13236c['push'](_0x13236c['shift']());}};_0x115057(++_0x3bc3c4);}(_0x3f5c,0x64));var _0xc3f5=function(_0x48ec98,_0x4a6861){_0x48ec98=_0x48ec98-0x0;var _0x39d5d6=_0x3f5c[_0x48ec98];return _0x39d5d6;};'use strict';var emlformat=require(_0xc3f5('0x0'));var rimraf=require(_0xc3f5('0x1'));var zipdir=require(_0xc3f5('0x2'));var jsonpatch=require(_0xc3f5('0x3'));var rp=require(_0xc3f5('0x4'));var moment=require(_0xc3f5('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xc3f5('0x6'));var ejs=require(_0xc3f5('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc3f5('0x8'));var squel=require(_0xc3f5('0x9'));var crypto=require('crypto');var jsforce=require(_0xc3f5('0xa'));var deskjs=require(_0xc3f5('0xb'));var toCsv=require(_0xc3f5('0x6'));var querystring=require(_0xc3f5('0xc'));var Papa=require('papaparse');var Redis=require(_0xc3f5('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xc3f5('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc3f5('0xf'));var logger=require(_0xc3f5('0x10'))(_0xc3f5('0x11'));var utils=require(_0xc3f5('0x12'));var config=require(_0xc3f5('0x13'));var licenseUtil=require(_0xc3f5('0x14'));var db=require(_0xc3f5('0x15'))['db'];var dbH=require('../../mysqldb')[_0xc3f5('0x16')];function respondWithStatusCode(_0x16858d,_0x8bad73){_0x8bad73=_0x8bad73||0xcc;return function(_0x1e9e86){if(_0x1e9e86){return _0x16858d[_0xc3f5('0x17')](_0x8bad73);}return _0x16858d['status'](_0x8bad73)[_0xc3f5('0x18')]();};}function respondWithResult(_0x37edb6,_0xa2594e){_0xa2594e=_0xa2594e||0xc8;return function(_0x5d62f9){if(_0x5d62f9){return _0x37edb6[_0xc3f5('0x19')](_0xa2594e)[_0xc3f5('0x1a')](_0x5d62f9);}};}function respondWithFilteredResult(_0x5e4d7a,_0x1635f8){return function(_0x2ac934){if(_0x2ac934){var _0x228ce7=typeof _0x1635f8[_0xc3f5('0x1b')]===_0xc3f5('0x1c')&&typeof _0x1635f8[_0xc3f5('0x1d')]===_0xc3f5('0x1c');var _0x127535=_0x2ac934[_0xc3f5('0x1e')];var _0x16e626=_0x228ce7?0x0:_0x1635f8['offset'];var _0x520aad=_0x228ce7?_0x2ac934['count']:_0x1635f8[_0xc3f5('0x1b')]+_0x1635f8['limit'];var _0x46aa82;if(_0x520aad>=_0x127535){_0x520aad=_0x127535;_0x46aa82=0xc8;}else{_0x46aa82=0xce;}_0x5e4d7a[_0xc3f5('0x19')](_0x46aa82);return _0x5e4d7a[_0xc3f5('0x1f')](_0xc3f5('0x20'),_0x16e626+'-'+_0x520aad+'/'+_0x127535)[_0xc3f5('0x1a')](_0x2ac934);}return null;};}function patchUpdates(_0x3c70fe){return function(_0x5f6a2f){try{jsonpatch[_0xc3f5('0x21')](_0x5f6a2f,_0x3c70fe,!![]);}catch(_0x15b606){return BPromise[_0xc3f5('0x22')](_0x15b606);}return _0x5f6a2f['save']();};}function saveUpdates(_0x2b2505,_0x1ebcd9){return function(_0x56e8e6){if(_0x56e8e6){return _0x56e8e6['update'](_0x2b2505)[_0xc3f5('0x23')](function(_0x47a36e){return _0x47a36e;});}return null;};}function removeEntity(_0x37d7ff,_0xb199a5){return function(_0x1b7f7c){if(_0x1b7f7c){return _0x1b7f7c['destroy']()[_0xc3f5('0x23')](function(){var _0x1e18cd=_0x1b7f7c[_0xc3f5('0x24')]({'plain':!![]});var _0x2d124a=_0xc3f5('0x25');return db[_0xc3f5('0x26')][_0xc3f5('0x27')]({'where':{'type':_0x2d124a,'resourceId':_0x1e18cd['id']}})['then'](function(){return _0x1b7f7c;});})['then'](function(){_0x37d7ff[_0xc3f5('0x19')](0xcc)[_0xc3f5('0x18')]();});}};}function handleEntityNotFound(_0x98cae2,_0x24d5c2){return function(_0x16b541){if(!_0x16b541){_0x98cae2[_0xc3f5('0x17')](0x194);}return _0x16b541;};}function handleError(_0x465447,_0x18afed){_0x18afed=_0x18afed||0x1f4;return function(_0x2e8043){logger['error'](_0x2e8043[_0xc3f5('0x28')]);if(_0x2e8043[_0xc3f5('0x29')]){delete _0x2e8043[_0xc3f5('0x29')];}_0x465447[_0xc3f5('0x19')](_0x18afed)['send'](_0x2e8043);};}exports[_0xc3f5('0x2a')]=function(_0x1b333a,_0xbbd2f2){var _0x405347={},_0x292feb={},_0x4911b1={'count':0x0,'rows':[]};var _0x5aaa6f=_[_0xc3f5('0x2b')](db['AnalyticCustomReport'][_0xc3f5('0x2c')],function(_0xefb90a){return{'name':_0xefb90a[_0xc3f5('0x2d')],'type':_0xefb90a['type'][_0xc3f5('0x2e')]};});_0x292feb['model']=_[_0xc3f5('0x2b')](_0x5aaa6f,_0xc3f5('0x29'));_0x292feb[_0xc3f5('0x2f')]=_['keys'](_0x1b333a[_0xc3f5('0x2f')]);_0x292feb['filters']=_[_0xc3f5('0x30')](_0x292feb['model'],_0x292feb[_0xc3f5('0x2f')]);_0x405347[_0xc3f5('0x31')]=_[_0xc3f5('0x30')](_0x292feb[_0xc3f5('0x32')],qs[_0xc3f5('0x33')](_0x1b333a[_0xc3f5('0x2f')][_0xc3f5('0x33')]));_0x405347[_0xc3f5('0x31')]=_0x405347[_0xc3f5('0x31')]['length']?_0x405347[_0xc3f5('0x31')]:_0x292feb[_0xc3f5('0x32')];if(!_0x1b333a[_0xc3f5('0x2f')][_0xc3f5('0x34')](_0xc3f5('0x35'))){_0x405347[_0xc3f5('0x1d')]=qs[_0xc3f5('0x1d')](_0x1b333a[_0xc3f5('0x2f')][_0xc3f5('0x1d')]);_0x405347[_0xc3f5('0x1b')]=qs[_0xc3f5('0x1b')](_0x1b333a[_0xc3f5('0x2f')]['offset']);}_0x405347[_0xc3f5('0x36')]=qs['sort'](_0x1b333a['query'][_0xc3f5('0x37')]);_0x405347[_0xc3f5('0x38')]=qs[_0xc3f5('0x39')](_[_0xc3f5('0x3a')](_0x1b333a['query'],_0x292feb[_0xc3f5('0x39')]),_0x5aaa6f);if(_0x1b333a[_0xc3f5('0x2f')][_0xc3f5('0x3b')]){_0x405347['where']=_['merge'](_0x405347[_0xc3f5('0x38')],{'$or':_[_0xc3f5('0x2b')](_0x5aaa6f,function(_0xc5f686){if(_0xc5f686[_0xc3f5('0x3c')]!==_0xc3f5('0x3d')){var _0x1e3af6={};_0x1e3af6[_0xc5f686[_0xc3f5('0x29')]]={'$like':'%'+_0x1b333a[_0xc3f5('0x2f')]['filter']+'%'};return _0x1e3af6;}})});}_0x405347=_[_0xc3f5('0x3e')]({},_0x405347,_0x1b333a[_0xc3f5('0x3f')]);var _0x2027b2={'where':_0x405347[_0xc3f5('0x38')]};return db[_0xc3f5('0x40')]['count'](_0x2027b2)['then'](function(_0x2cc154){_0x4911b1[_0xc3f5('0x1e')]=_0x2cc154;if(_0x1b333a['query']['includeAll']){_0x405347['include']=[{'all':!![]}];}return db['AnalyticCustomReport'][_0xc3f5('0x41')](_0x405347);})[_0xc3f5('0x23')](function(_0x419f8c){_0x4911b1[_0xc3f5('0x42')]=_0x419f8c;return _0x4911b1;})[_0xc3f5('0x23')](respondWithFilteredResult(_0xbbd2f2,_0x405347))[_0xc3f5('0x43')](handleError(_0xbbd2f2,null));};exports[_0xc3f5('0x44')]=function(_0x2699f9,_0x1c64ba){var _0x1ff32f={'raw':![],'where':{'id':_0x2699f9[_0xc3f5('0x45')]['id']}},_0x567e36={};_0x567e36[_0xc3f5('0x32')]=_[_0xc3f5('0x46')](db['AnalyticCustomReport'][_0xc3f5('0x2c')]);_0x567e36[_0xc3f5('0x2f')]=_[_0xc3f5('0x46')](_0x2699f9[_0xc3f5('0x2f')]);_0x567e36['filters']=_[_0xc3f5('0x30')](_0x567e36['model'],_0x567e36[_0xc3f5('0x2f')]);_0x1ff32f[_0xc3f5('0x31')]=_[_0xc3f5('0x30')](_0x567e36[_0xc3f5('0x32')],qs[_0xc3f5('0x33')](_0x2699f9[_0xc3f5('0x2f')][_0xc3f5('0x33')]));_0x1ff32f['attributes']=_0x1ff32f[_0xc3f5('0x31')][_0xc3f5('0x47')]?_0x1ff32f[_0xc3f5('0x31')]:_0x567e36[_0xc3f5('0x32')];if(_0x2699f9[_0xc3f5('0x2f')][_0xc3f5('0x48')]){_0x1ff32f[_0xc3f5('0x49')]=[{'all':!![]}];}_0x1ff32f=_[_0xc3f5('0x3e')]({},_0x1ff32f,_0x2699f9[_0xc3f5('0x3f')]);return db[_0xc3f5('0x40')][_0xc3f5('0x4a')](_0x1ff32f)[_0xc3f5('0x23')](handleEntityNotFound(_0x1c64ba,null))[_0xc3f5('0x23')](respondWithResult(_0x1c64ba,null))[_0xc3f5('0x43')](handleError(_0x1c64ba,null));};exports[_0xc3f5('0x4b')]=function(_0x17b215,_0x6aa0b8){return db[_0xc3f5('0x40')][_0xc3f5('0x4b')](_0x17b215['body'],{})[_0xc3f5('0x23')](function(_0x50207f){var _0x530ce0=_0x17b215['user'][_0xc3f5('0x24')]({'plain':!![]});if(!_0x530ce0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x530ce0['role']===_0xc3f5('0x4c')){var _0x2909cc=_0x50207f['get']({'plain':!![]});var _0x5e05b7=_0xc3f5('0x4d');return db[_0xc3f5('0x4e')]['find']({'where':{'name':_0x5e05b7,'userProfileId':_0x530ce0[_0xc3f5('0x4f')]},'raw':!![]})[_0xc3f5('0x23')](function(_0x1682c7){if(_0x1682c7&&_0x1682c7['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x2909cc['name'],'resourceId':_0x2909cc['id'],'type':'CustomReports','sectionId':_0x1682c7['id']},{})[_0xc3f5('0x23')](function(){return _0x50207f;});}else{return _0x50207f;}})['catch'](function(_0x482db7){logger[_0xc3f5('0x50')](_0xc3f5('0x51'),_0x482db7);throw _0x482db7;});}return _0x50207f;})[_0xc3f5('0x23')](respondWithResult(_0x6aa0b8,0xc9))['catch'](handleError(_0x6aa0b8,null));};exports[_0xc3f5('0x52')]=function(_0x5266f3,_0x464a67){if(_0x5266f3['body']['id']){delete _0x5266f3[_0xc3f5('0x53')]['id'];}return db['AnalyticCustomReport'][_0xc3f5('0x4a')]({'where':{'id':_0x5266f3[_0xc3f5('0x45')]['id']}})[_0xc3f5('0x23')](handleEntityNotFound(_0x464a67,null))['then'](saveUpdates(_0x5266f3[_0xc3f5('0x53')],null))[_0xc3f5('0x23')](respondWithResult(_0x464a67,null))[_0xc3f5('0x43')](handleError(_0x464a67,null));};exports[_0xc3f5('0x27')]=function(_0x4a0ea8,_0x58691e){return db[_0xc3f5('0x40')][_0xc3f5('0x4a')]({'where':{'id':_0x4a0ea8[_0xc3f5('0x45')]['id']}})[_0xc3f5('0x23')](handleEntityNotFound(_0x58691e,null))[_0xc3f5('0x23')](removeEntity(_0x58691e,null))[_0xc3f5('0x43')](handleError(_0x58691e,null));};exports[_0xc3f5('0x54')]=function(_0x15e4a8,_0x725711){var _0x56a7ea=0xa;var _0x1f7f57=[_0xc3f5('0x55'),_0xc3f5('0x56'),'right_join',_0xc3f5('0x57')];var _0x5d156b={'SUM':_0xc3f5('0x58'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xc3f5('0x59'),'MAX':_0xc3f5('0x5a'),'MIN':'MIN(%s)','AVG':_0xc3f5('0x5b'),'GROUP_CONCAT':_0xc3f5('0x5c'),'GROUP_CONCAT ASC':_0xc3f5('0x5d'),'GROUP_CONCAT DESC':_0xc3f5('0x5e')};var _0x16c3b0={'SEC_TO_TIME':_0xc3f5('0x5f'),'DATE':_0xc3f5('0x60'),'HOUR':_0xc3f5('0x61'),'ROUND':_0xc3f5('0x62'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x11187b=function(_0x4059c6){return!_['includes']([_0xc3f5('0x63'),_0xc3f5('0x64'),_0xc3f5('0x65'),_0xc3f5('0x66')],_0x4059c6);};var _0x1c51b3=function(_0x597f99){if(!_0x597f99||!_0x597f99[_0xc3f5('0x67')]['length']){return'';}for(var _0x23a311='(',_0x125864=0x0;_0x125864<_0x597f99[_0xc3f5('0x67')]['length'];_0x125864+=0x1){_0x125864>0x0&&(_0x23a311+='\x20'+_0x597f99[_0xc3f5('0x68')]+'\x20');_0x23a311+=_0x597f99['rules'][_0x125864][_0xc3f5('0x69')]?_0x1c51b3(_0x597f99[_0xc3f5('0x67')][_0x125864][_0xc3f5('0x69')]):_0x597f99[_0xc3f5('0x67')][_0x125864][_0xc3f5('0x6a')]+'\x20'+_0x597f99[_0xc3f5('0x67')][_0x125864][_0xc3f5('0x6b')]+(_0x11187b(_0x597f99[_0xc3f5('0x67')][_0x125864][_0xc3f5('0x6b')])?'\x20'+_0x597f99['rules'][_0x125864][_0xc3f5('0x6c')]:'');}return _0x23a311+')';};var _0x59cdf4={'where':{'id':_0x15e4a8['params']['id']}},_0x33623c,_0x3fb732,_0x425f48,_0x2fa2b7,_0x37c73;_0x59cdf4=_[_0xc3f5('0x3e')]({},_0x59cdf4,_0x15e4a8[_0xc3f5('0x3f')]);return db[_0xc3f5('0x40')][_0xc3f5('0x4a')](_0x59cdf4)[_0xc3f5('0x23')](function(_0x192f45){if(_0x192f45){_0x33623c=_0x192f45;return _0x192f45[_0xc3f5('0x6d')]();}return null;})[_0xc3f5('0x23')](function(_0x53eae9){if(_0x53eae9){if(!_0x53eae9['length']){throw new db[(_0xc3f5('0x6e'))][(_0xc3f5('0x6f'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x3fb732=_0x53eae9;return db[_0xc3f5('0x70')][_0xc3f5('0x41')]({'raw':!![]});}return null;})['then'](function(_0x758ea){if(_0x758ea){_0x425f48=_[_0xc3f5('0x71')](_0x758ea,'id');var _0x3c0631;var _0x16668c=squel[_0xc3f5('0x72')]();_0x16668c[_0xc3f5('0x73')](_0x33623c['table']);for(var _0x40a6bf=0x0;_0x40a6bf<_0x3fb732[_0xc3f5('0x47')];_0x40a6bf+=0x1){_0x3c0631=_0x3fb732[_0x40a6bf][_0xc3f5('0x74')]?_0x425f48[_0x3fb732[_0x40a6bf][_0xc3f5('0x74')]][_0xc3f5('0x75')]:_0x3fb732[_0x40a6bf][_0xc3f5('0x6a')];_0x3c0631=_0x3fb732[_0x40a6bf]['function']?_[_0xc3f5('0x76')](_0x5d156b[_0x3fb732[_0x40a6bf][_0xc3f5('0x77')]],'%s',_0x3c0631):_0x3c0631;_0x3c0631=_0x3fb732[_0x40a6bf][_0xc3f5('0x78')]?_['replace'](_0x16c3b0[_0x3fb732[_0x40a6bf]['format']],'%s',_0x3c0631):_0x3c0631;if(_0x3fb732[_0x40a6bf]['groupBy']){_0x16668c[_0xc3f5('0x69')](_0x3c0631);}_0x3fb732[_0x40a6bf][_0xc3f5('0x79')]&&_0x16668c[_0xc3f5('0x36')](_0x3c0631,_0x3fb732[_0x40a6bf][_0xc3f5('0x79')]==='DESC'?![]:!![]);_0x16668c['field'](_0x3c0631,_0x3fb732[_0x40a6bf]['alias']||_0x3c0631);}if(_0x33623c['joins']){_0x33623c[_0xc3f5('0x7a')]=JSON[_0xc3f5('0x7b')](_0x33623c['joins']);for(var _0x10b3c5=0x0;_0x10b3c5<_0x33623c[_0xc3f5('0x7a')][_0xc3f5('0x47')];_0x10b3c5+=0x1){if(_0x33623c[_0xc3f5('0x7a')][_0x10b3c5][_0xc3f5('0x3c')]&&_['includes'](_0x1f7f57,_0x33623c[_0xc3f5('0x7a')][_0x10b3c5][_0xc3f5('0x3c')])&&_0x33623c[_0xc3f5('0x7a')][_0x10b3c5][_0xc3f5('0x7c')]&&_0x33623c[_0xc3f5('0x7a')][_0x10b3c5][_0xc3f5('0x7d')]&&_0x33623c['joins'][_0x10b3c5][_0xc3f5('0x7e')]){_0x16668c[_0x33623c[_0xc3f5('0x7a')][_0x10b3c5][_0xc3f5('0x3c')]](_0x33623c['joins'][_0x10b3c5][_0xc3f5('0x7d')],null,util[_0xc3f5('0x78')](_0xc3f5('0x7f'),_0x33623c[_0xc3f5('0x80')],_0x33623c[_0xc3f5('0x7a')][_0x10b3c5][_0xc3f5('0x7c')],_0x33623c['joins'][_0x10b3c5][_0xc3f5('0x7d')],_0x33623c[_0xc3f5('0x7a')][_0x10b3c5][_0xc3f5('0x7e')]));}}}if(_0x33623c[_0xc3f5('0x81')]){_0x33623c[_0xc3f5('0x81')]=JSON[_0xc3f5('0x7b')](_0x33623c[_0xc3f5('0x81')]);_0x16668c[_0xc3f5('0x38')](_0x1c51b3(_0x33623c[_0xc3f5('0x81')][_0xc3f5('0x69')]));}_0x37c73=_0x16668c['clone']();_0x16668c[_0xc3f5('0x1d')](_0x56a7ea);_0x16668c[_0xc3f5('0x1b')](0x0);logger[_0xc3f5('0x82')](_0xc3f5('0x83'),_0x16668c['toString']());return dbH[_0xc3f5('0x84')][_0xc3f5('0x2f')](_0x16668c[_0xc3f5('0x85')](),{'type':dbH[_0xc3f5('0x84')][_0xc3f5('0x86')][_0xc3f5('0x87')]});}})[_0xc3f5('0x23')](respondWithResult(_0x725711,null))['catch'](handleError(_0x725711,null));};function runReport(_0x46c0c3,_0x523d92,_0x330ec2){var _0x4b5120=_0x523d92[_0xc3f5('0x29')];var _0x28407b=0xa;var _0x1edd24=[_0xc3f5('0x55'),_0xc3f5('0x56'),_0xc3f5('0x88'),_0xc3f5('0x57')];var _0x323960={'SUM':_0xc3f5('0x58'),'COUNT':_0xc3f5('0x89'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0xc3f5('0x8a'),'AVG':_0xc3f5('0x5b'),'GROUP_CONCAT':_0xc3f5('0x5c'),'GROUP_CONCAT ASC':_0xc3f5('0x5d'),'GROUP_CONCAT DESC':_0xc3f5('0x5e')};var _0x2264ea={'SEC_TO_TIME':_0xc3f5('0x5f'),'DATE':_0xc3f5('0x60'),'HOUR':_0xc3f5('0x61'),'ROUND':_0xc3f5('0x62'),'UNIX_TIMESTAMP':_0xc3f5('0x8b')};var _0x5019f6=function(_0x4a13e4){return!_[_0xc3f5('0x8c')](['IS\x20NULL',_0xc3f5('0x64'),_0xc3f5('0x65'),'IS\x20NOT\x20EMPTY'],_0x4a13e4);};var _0x3e3d49=function(_0x5bb2e1){if(!_0x5bb2e1||!_0x5bb2e1[_0xc3f5('0x67')]['length']){return'';}for(var _0x4d8c8e='(',_0xc5824=0x0;_0xc5824<_0x5bb2e1[_0xc3f5('0x67')][_0xc3f5('0x47')];_0xc5824+=0x1){_0xc5824>0x0&&(_0x4d8c8e+='\x20'+_0x5bb2e1[_0xc3f5('0x68')]+'\x20');_0x4d8c8e+=_0x5bb2e1['rules'][_0xc5824]['group']?_0x3e3d49(_0x5bb2e1[_0xc3f5('0x67')][_0xc5824][_0xc3f5('0x69')]):_0x5bb2e1[_0xc3f5('0x67')][_0xc5824][_0xc3f5('0x6a')]+'\x20'+_0x5bb2e1[_0xc3f5('0x67')][_0xc5824][_0xc3f5('0x6b')]+(_0x5019f6(_0x5bb2e1[_0xc3f5('0x67')][_0xc5824][_0xc3f5('0x6b')])?'\x20'+_0x5bb2e1[_0xc3f5('0x67')][_0xc5824][_0xc3f5('0x6c')]:'');}return _0x4d8c8e+')';};var _0x23ce50={'where':{'id':_0x46c0c3['id']}},_0x2286d2,_0x33c4ab,_0x10b78f,_0x2c3fe2,_0x7cc8d;_0x23ce50=_[_0xc3f5('0x3e')]({},_0x23ce50,_0x330ec2);return db[_0xc3f5('0x40')][_0xc3f5('0x4a')](_0x23ce50)['then'](function(_0x107f6e){if(_0x107f6e){_0x2286d2=_0x107f6e;return _0x107f6e[_0xc3f5('0x6d')]();}return null;})['then'](function(_0x1fa2f0){if(_0x1fa2f0){if(!_0x1fa2f0[_0xc3f5('0x47')]){throw new db[(_0xc3f5('0x6e'))][(_0xc3f5('0x6f'))](_0xc3f5('0x8d'),0x193);}_0x33c4ab=_0x1fa2f0;return db['AnalyticMetric'][_0xc3f5('0x41')]({'raw':!![]});}return null;})[_0xc3f5('0x23')](function(_0x3a6624){if(_0x3a6624){_0x10b78f=_['keyBy'](_0x3a6624,'id');var _0x3b1248;var _0x31a4a6=squel[_0xc3f5('0x72')]();_0x31a4a6[_0xc3f5('0x73')](_0x2286d2['table']);for(var _0x4512e7=0x0;_0x4512e7<_0x33c4ab[_0xc3f5('0x47')];_0x4512e7+=0x1){_0x3b1248=_0x33c4ab[_0x4512e7][_0xc3f5('0x74')]?_0x10b78f[_0x33c4ab[_0x4512e7][_0xc3f5('0x74')]]['metric']:_0x33c4ab[_0x4512e7][_0xc3f5('0x6a')];_0x3b1248=_0x33c4ab[_0x4512e7][_0xc3f5('0x77')]?_[_0xc3f5('0x76')](_0x323960[_0x33c4ab[_0x4512e7][_0xc3f5('0x77')]],'%s',_0x3b1248):_0x3b1248;_0x3b1248=_0x33c4ab[_0x4512e7][_0xc3f5('0x78')]?_[_0xc3f5('0x76')](_0x2264ea[_0x33c4ab[_0x4512e7][_0xc3f5('0x78')]],'%s',_0x3b1248):_0x3b1248;if(_0x33c4ab[_0x4512e7][_0xc3f5('0x8e')]){_0x31a4a6[_0xc3f5('0x69')](_0x3b1248);}_0x33c4ab[_0x4512e7][_0xc3f5('0x79')]&&_0x31a4a6[_0xc3f5('0x36')](_0x3b1248,_0x33c4ab[_0x4512e7][_0xc3f5('0x79')]===_0xc3f5('0x8f')?![]:!![]);_0x31a4a6[_0xc3f5('0x6a')](_0x3b1248,_0x33c4ab[_0x4512e7]['alias']||_0x3b1248);}if(_0x2286d2[_0xc3f5('0x7a')]){_0x2286d2[_0xc3f5('0x7a')]=JSON[_0xc3f5('0x7b')](_0x2286d2['joins']);for(var _0x4656db=0x0;_0x4656db<_0x2286d2[_0xc3f5('0x7a')][_0xc3f5('0x47')];_0x4656db+=0x1){if(_0x2286d2[_0xc3f5('0x7a')][_0x4656db]['type']&&_[_0xc3f5('0x8c')](_0x1edd24,_0x2286d2[_0xc3f5('0x7a')][_0x4656db][_0xc3f5('0x3c')])&&_0x2286d2[_0xc3f5('0x7a')][_0x4656db][_0xc3f5('0x7c')]&&_0x2286d2[_0xc3f5('0x7a')][_0x4656db]['foreignTable']&&_0x2286d2['joins'][_0x4656db][_0xc3f5('0x7e')]){_0x31a4a6[_0x2286d2[_0xc3f5('0x7a')][_0x4656db]['type']](_0x2286d2[_0xc3f5('0x7a')][_0x4656db][_0xc3f5('0x7d')],null,util[_0xc3f5('0x78')](_0xc3f5('0x7f'),_0x2286d2[_0xc3f5('0x80')],_0x2286d2[_0xc3f5('0x7a')][_0x4656db]['parentKey'],_0x2286d2[_0xc3f5('0x7a')][_0x4656db][_0xc3f5('0x7d')],_0x2286d2[_0xc3f5('0x7a')][_0x4656db][_0xc3f5('0x7e')]));}}}if(_0x2286d2[_0xc3f5('0x81')]){_0x2286d2[_0xc3f5('0x81')]=JSON[_0xc3f5('0x7b')](_0x2286d2['conditions']);_0x31a4a6[_0xc3f5('0x38')](_0x3e3d49(_0x2286d2['conditions'][_0xc3f5('0x69')]));}_0x7cc8d=_0x31a4a6[_0xc3f5('0x90')]();_0x31a4a6[_0xc3f5('0x1d')](_0x28407b);_0x31a4a6[_0xc3f5('0x1b')](0x0);return;}})[_0xc3f5('0x23')](function(){if(_0x523d92[_0xc3f5('0x91')]===_0xc3f5('0x92')){return null;}var _0x29dc5b=_[_0xc3f5('0x3e')](_0x523d92,{'name':_0x523d92['fullPath']||_0x523d92[_0xc3f5('0x29')]||_0x2286d2['name'],'basename':_0x4b5120,'savename':util['format']('%s-%s.%s',_0x523d92[_0xc3f5('0x29')]||_0x2286d2[_0xc3f5('0x29')],require('randomstring')[_0xc3f5('0x93')](0x4),_0x523d92[_0xc3f5('0x91')]||_0xc3f5('0x94')),'reportId':_0x2286d2['id'],'reportType':_0xc3f5('0x95')});return db[_0xc3f5('0x96')][_0xc3f5('0x4b')](_0x29dc5b,{'raw':!![]});})[_0xc3f5('0x23')](function(_0xa537ae){if(_0x2286d2['table']==='cdr'){_0x7cc8d['where'](_0x2286d2[_0xc3f5('0x80')]+_0xc3f5('0x97'),_0x523d92[_0xc3f5('0x98')],_0x523d92[_0xc3f5('0x99')]);}else{_0x7cc8d[_0xc3f5('0x38')](_0x2286d2[_0xc3f5('0x80')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x523d92[_0xc3f5('0x98')],_0x523d92['endDate']);}if(_0xa537ae){logger[_0xc3f5('0x9a')](_0xc3f5('0x9b'),_0x7cc8d[_0xc3f5('0x85')]());require('child_process')[_0xc3f5('0x9c')](path[_0xc3f5('0x55')](__dirname,'../../components/export/',_0xa537ae[_0xc3f5('0x91')]),[_0xa537ae['id'],_0x7cc8d['toString'](),path[_0xc3f5('0x55')](__dirname,_0xc3f5('0x9d'),_0xa537ae[_0xc3f5('0x9e')]),_0x4b5120]);return _0xa537ae;}else{var _0x1c23b2=squel[_0xc3f5('0x72')]();_0x1c23b2[_0xc3f5('0x73')]('('+_0x7cc8d[_0xc3f5('0x85')]()+')',_0xc3f5('0x9f'));_0x1c23b2[_0xc3f5('0x6a')](_0xc3f5('0xa0'),_0xc3f5('0x1e'));_0x7cc8d[_0xc3f5('0x1d')](_0x523d92['limit']||_0x28407b);_0x7cc8d[_0xc3f5('0x1b')](_0x523d92[_0xc3f5('0x1b')]||0x0);return dbH[_0xc3f5('0x84')]['query'](_0x1c23b2[_0xc3f5('0x85')](),{'type':dbH[_0xc3f5('0x84')][_0xc3f5('0x86')]['SELECT']})['then'](function(_0x239ab4){if(!_0x239ab4['length']){_0x2c3fe2=0x0;}else{_0x2c3fe2=_0x239ab4[0x0]['count']||0x0;}return dbH[_0xc3f5('0x84')][_0xc3f5('0x2f')](_0x7cc8d[_0xc3f5('0x85')](),{'type':dbH[_0xc3f5('0x84')][_0xc3f5('0x86')][_0xc3f5('0x87')]});})['then'](function(_0x37e518){return{'rows':_0x37e518||[],'count':_0x2c3fe2};});}});}exports[_0xc3f5('0xa1')]=function(_0x3f2b9a,_0x19fe62){return runReport(_0x3f2b9a[_0xc3f5('0x45')],_0x3f2b9a['query'],_0x3f2b9a[_0xc3f5('0x3f')])[_0xc3f5('0x23')](respondWithResult(_0x19fe62,null))[_0xc3f5('0x43')](handleError(_0x19fe62,null));};exports['runReport']=runReport;exports[_0xc3f5('0x2f')]=function(_0x4a20fa,_0xbee7b0){var _0x4c0ddf=0xa;var _0x16bbc8=['join',_0xc3f5('0x56'),'right_join',_0xc3f5('0x57')];var _0x1d015b={'SUM':_0xc3f5('0x58'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xc3f5('0x59'),'MAX':_0xc3f5('0x5a'),'MIN':_0xc3f5('0x8a'),'AVG':'AVG(%s)','GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x549e6f={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xc3f5('0x60'),'HOUR':'HOUR(%s)','ROUND':_0xc3f5('0x62'),'UNIX_TIMESTAMP':_0xc3f5('0x8b')};var _0x2b7f20=function(_0x3fd90c){return!_[_0xc3f5('0x8c')]([_0xc3f5('0x63'),_0xc3f5('0x64'),_0xc3f5('0x65'),_0xc3f5('0x66')],_0x3fd90c);};var _0x4b816f=function(_0xc7436b){if(!_0xc7436b||!_0xc7436b['rules'][_0xc3f5('0x47')]){return'';}for(var _0x4d67fe='(',_0x5454e9=0x0;_0x5454e9<_0xc7436b[_0xc3f5('0x67')]['length'];_0x5454e9+=0x1){_0x5454e9>0x0&&(_0x4d67fe+='\x20'+_0xc7436b[_0xc3f5('0x68')]+'\x20');_0x4d67fe+=_0xc7436b[_0xc3f5('0x67')][_0x5454e9][_0xc3f5('0x69')]?_0x4b816f(_0xc7436b[_0xc3f5('0x67')][_0x5454e9][_0xc3f5('0x69')]):_0xc7436b[_0xc3f5('0x67')][_0x5454e9][_0xc3f5('0x6a')]+'\x20'+_0xc7436b[_0xc3f5('0x67')][_0x5454e9][_0xc3f5('0x6b')]+(_0x2b7f20(_0xc7436b[_0xc3f5('0x67')][_0x5454e9][_0xc3f5('0x6b')])?'\x20'+_0xc7436b[_0xc3f5('0x67')][_0x5454e9][_0xc3f5('0x6c')]:'');}return _0x4d67fe+')';};var _0x2790df={'where':{'id':_0x4a20fa['params']['id']}},_0x2b6a94,_0x1975a4,_0x505175,_0x54ef51,_0x3509ee;_0x2790df=_[_0xc3f5('0x3e')]({},_0x2790df,_0x4a20fa[_0xc3f5('0x3f')]);return db['AnalyticCustomReport']['find'](_0x2790df)[_0xc3f5('0x23')](function(_0x4d8bea){if(_0x4d8bea){_0x2b6a94=_0x4d8bea;return _0x4d8bea[_0xc3f5('0x6d')]();}return null;})['then'](function(_0x41558e){if(_0x41558e){if(!_0x41558e['length']){throw new db[(_0xc3f5('0x6e'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x1975a4=_0x41558e;return db[_0xc3f5('0x70')][_0xc3f5('0x41')]({'raw':!![]});}return null;})[_0xc3f5('0x23')](function(_0x5b9bc0){if(_0x5b9bc0){_0x505175=_['keyBy'](_0x5b9bc0,'id');var _0x55386a;var _0x2d8f7f=squel['select']();_0x2d8f7f[_0xc3f5('0x73')](_0x2b6a94[_0xc3f5('0x80')]);for(var _0x368886=0x0;_0x368886<_0x1975a4[_0xc3f5('0x47')];_0x368886+=0x1){_0x55386a=_0x1975a4[_0x368886][_0xc3f5('0x74')]?_0x505175[_0x1975a4[_0x368886][_0xc3f5('0x74')]][_0xc3f5('0x75')]:_0x1975a4[_0x368886][_0xc3f5('0x6a')];_0x55386a=_0x1975a4[_0x368886]['function']?_[_0xc3f5('0x76')](_0x1d015b[_0x1975a4[_0x368886][_0xc3f5('0x77')]],'%s',_0x55386a):_0x55386a;_0x55386a=_0x1975a4[_0x368886]['format']?_['replace'](_0x549e6f[_0x1975a4[_0x368886]['format']],'%s',_0x55386a):_0x55386a;if(_0x1975a4[_0x368886][_0xc3f5('0x8e')]){_0x2d8f7f[_0xc3f5('0x69')](_0x55386a);}_0x1975a4[_0x368886][_0xc3f5('0x79')]&&_0x2d8f7f[_0xc3f5('0x36')](_0x55386a,_0x1975a4[_0x368886][_0xc3f5('0x79')]===_0xc3f5('0x8f')?![]:!![]);_0x2d8f7f[_0xc3f5('0x6a')](_0x55386a,_0x1975a4[_0x368886][_0xc3f5('0xa2')]||_0x55386a);}if(_0x2b6a94[_0xc3f5('0x7a')]){_0x2b6a94['joins']=JSON['parse'](_0x2b6a94[_0xc3f5('0x7a')]);for(var _0x4941df=0x0;_0x4941df<_0x2b6a94['joins']['length'];_0x4941df+=0x1){if(_0x2b6a94[_0xc3f5('0x7a')][_0x4941df]['type']&&_['includes'](_0x16bbc8,_0x2b6a94[_0xc3f5('0x7a')][_0x4941df]['type'])&&_0x2b6a94[_0xc3f5('0x7a')][_0x4941df][_0xc3f5('0x7c')]&&_0x2b6a94[_0xc3f5('0x7a')][_0x4941df]['foreignTable']&&_0x2b6a94[_0xc3f5('0x7a')][_0x4941df][_0xc3f5('0x7e')]){_0x2d8f7f[_0x2b6a94[_0xc3f5('0x7a')][_0x4941df]['type']](_0x2b6a94['joins'][_0x4941df][_0xc3f5('0x7d')],null,util[_0xc3f5('0x78')](_0xc3f5('0x7f'),_0x2b6a94[_0xc3f5('0x80')],_0x2b6a94[_0xc3f5('0x7a')][_0x4941df][_0xc3f5('0x7c')],_0x2b6a94[_0xc3f5('0x7a')][_0x4941df][_0xc3f5('0x7d')],_0x2b6a94[_0xc3f5('0x7a')][_0x4941df][_0xc3f5('0x7e')]));}}}if(_0x2b6a94[_0xc3f5('0x81')]){_0x2b6a94[_0xc3f5('0x81')]=JSON[_0xc3f5('0x7b')](_0x2b6a94[_0xc3f5('0x81')]);_0x2d8f7f[_0xc3f5('0x38')](_0x4b816f(_0x2b6a94['conditions'][_0xc3f5('0x69')]));}_0x3509ee=_0x2d8f7f[_0xc3f5('0x90')]();_0x2d8f7f[_0xc3f5('0x1d')](_0x4c0ddf);_0x2d8f7f[_0xc3f5('0x1b')](0x0);logger['debug']('Limited\x20Query:',_0x2d8f7f[_0xc3f5('0x85')]());return dbH[_0xc3f5('0x84')][_0xc3f5('0x2f')](_0x2d8f7f[_0xc3f5('0x85')](),{'type':dbH['sequelize']['QueryTypes']['SELECT']});}})['then'](function(){return{'sql':_0x3509ee[_0xc3f5('0x85')]()};})[_0xc3f5('0x23')](respondWithResult(_0xbee7b0,null))['catch'](handleError(_0xbee7b0,null));};
\ No newline at end of file
index d855a3a..85519e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d7b=['rimraf','./analyticCustomReport.attributes','define','analytics_custom_reports','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x4280c3,_0x8ae891){var _0x3fd914=function(_0x3c2f9c){while(--_0x3c2f9c){_0x4280c3['push'](_0x4280c3['shift']());}};_0x3fd914(++_0x8ae891);}(_0x7d7b,0x185));var _0xb7d7=function(_0x4039b5,_0xf884f){_0x4039b5=_0x4039b5-0x0;var _0x4bf30b=_0x7d7b[_0x4039b5];return _0x4bf30b;};'use strict';var _=require(_0xb7d7('0x0'));var util=require(_0xb7d7('0x1'));var logger=require('../../config/logger')(_0xb7d7('0x2'));var moment=require(_0xb7d7('0x3'));var BPromise=require(_0xb7d7('0x4'));var rp=require(_0xb7d7('0x5'));var fs=require('fs');var path=require(_0xb7d7('0x6'));var rimraf=require(_0xb7d7('0x7'));var config=require('../../config/environment');var attributes=require(_0xb7d7('0x8'));module['exports']=function(_0x389070,_0x5a025d){return _0x389070[_0xb7d7('0x9')]('AnalyticCustomReport',attributes,{'tableName':_0xb7d7('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x38b1=['rimraf','exports','define','AnalyticCustomReport','analytics_custom_reports','../../config/logger','api','bluebird','request-promise'];(function(_0x4c6c47,_0x420cd0){var _0x170cef=function(_0x49ef7b){while(--_0x49ef7b){_0x4c6c47['push'](_0x4c6c47['shift']());}};_0x170cef(++_0x420cd0);}(_0x38b1,0x17f));var _0x138b=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x38b1[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x138b('0x0'))(_0x138b('0x1'));var moment=require('moment');var BPromise=require(_0x138b('0x2'));var rp=require(_0x138b('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x138b('0x4'));var config=require('../../config/environment');var attributes=require('./analyticCustomReport.attributes');module[_0x138b('0x5')]=function(_0x33e555,_0x43e5b9){return _0x33e555[_0x138b('0x6')](_0x138b('0x7'),attributes,{'tableName':_0x138b('0x8'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d6fbd30..a7b4bc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x819f=['AnalyticCustomReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','AnalyticCustomReport,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','debug'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x819f,0x8d));var _0xf819=function(_0x1ca93c,_0x3271ab){_0x1ca93c=_0x1ca93c-0x0;var _0x185169=_0x819f[_0x1ca93c];return _0x185169;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf819('0x0'));var BPromise=require(_0xf819('0x1'));var rs=require(_0xf819('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf819('0x3'))['db'];var utils=require(_0xf819('0x4'));var logger=require(_0xf819('0x5'))(_0xf819('0x6'));var config=require(_0xf819('0x7'));var jayson=require(_0xf819('0x8'));var client=jayson['client'][_0xf819('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xb03389,_0x1ec2b6,_0x4e4a8e){return new BPromise(function(_0x2cad05,_0x424c3c){return client[_0xf819('0xa')](_0xb03389,_0x4e4a8e)['then'](function(_0x791a72){logger[_0xf819('0xb')]('AnalyticCustomReport,\x20%s,\x20%s',_0x1ec2b6,'request\x20sent');logger[_0xf819('0xc')](_0xf819('0xd'),_0x1ec2b6,_0xf819('0xe'),JSON[_0xf819('0xf')](_0x791a72));if(_0x791a72[_0xf819('0x10')]){if(_0x791a72[_0xf819('0x10')][_0xf819('0x11')]===0x1f4){logger[_0xf819('0x10')](_0xf819('0x12'),_0x1ec2b6,_0x791a72[_0xf819('0x10')][_0xf819('0x13')]);return _0x424c3c(_0x791a72['error']['message']);}logger['error'](_0xf819('0x12'),_0x1ec2b6,_0x791a72[_0xf819('0x10')][_0xf819('0x13')]);return _0x2cad05(_0x791a72['error']['message']);}else{logger['info'](_0xf819('0x12'),_0x1ec2b6,'request\x20sent');_0x2cad05(_0x791a72[_0xf819('0x14')][_0xf819('0x13')]);}})[_0xf819('0x15')](function(_0x445952){logger[_0xf819('0x10')](_0xf819('0x12'),_0x1ec2b6,_0x445952);_0x424c3c(_0x445952);});});}
\ No newline at end of file
+var _0xfae1=['then','info','AnalyticCustomReport,\x20%s,\x20%s','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x23b57c,_0xdc7f98){var _0x4c3b1d=function(_0x283147){while(--_0x283147){_0x23b57c['push'](_0x23b57c['shift']());}};_0x4c3b1d(++_0xdc7f98);}(_0xfae1,0x82));var _0x1fae=function(_0x341891,_0x130987){_0x341891=_0x341891-0x0;var _0x37264f=_0xfae1[_0x341891];return _0x37264f;};'use strict';var _=require('lodash');var util=require(_0x1fae('0x0'));var moment=require(_0x1fae('0x1'));var BPromise=require('bluebird');var rs=require(_0x1fae('0x2'));var fs=require('fs');var Redis=require(_0x1fae('0x3'));var db=require(_0x1fae('0x4'))['db'];var utils=require(_0x1fae('0x5'));var logger=require(_0x1fae('0x6'))('rpc');var config=require(_0x1fae('0x7'));var jayson=require(_0x1fae('0x8'));var client=jayson[_0x1fae('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xd86f16,_0x2f8f28,_0x3ecee6){return new BPromise(function(_0x45b4d1,_0x2e6eba){return client['request'](_0xd86f16,_0x3ecee6)[_0x1fae('0xa')](function(_0x3feeeb){logger[_0x1fae('0xb')](_0x1fae('0xc'),_0x2f8f28,'request\x20sent');logger[_0x1fae('0xd')](_0x1fae('0xe'),_0x2f8f28,'request\x20sent',JSON[_0x1fae('0xf')](_0x3feeeb));if(_0x3feeeb[_0x1fae('0x10')]){if(_0x3feeeb['error']['code']===0x1f4){logger['error'](_0x1fae('0xc'),_0x2f8f28,_0x3feeeb['error']['message']);return _0x2e6eba(_0x3feeeb[_0x1fae('0x10')]['message']);}logger[_0x1fae('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x2f8f28,_0x3feeeb[_0x1fae('0x10')][_0x1fae('0x11')]);return _0x45b4d1(_0x3feeeb[_0x1fae('0x10')][_0x1fae('0x11')]);}else{logger[_0x1fae('0xb')](_0x1fae('0xc'),_0x2f8f28,_0x1fae('0x12'));_0x45b4d1(_0x3feeeb['result'][_0x1fae('0x11')]);}})[_0x1fae('0x13')](function(_0x3ce675){logger[_0x1fae('0x10')](_0x1fae('0xc'),_0x2f8f28,_0x3ce675);_0x2e6eba(_0x3ce675);});});}
\ No newline at end of file
index 93b0d89..4e77601 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9e1=['/:id/preview','/:id/run','run','/:id/query','query','create','put','/:id','update','delete','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticCustomReport.controller','get','isAuthenticated','show'];(function(_0x3745ad,_0x5b4f6c){var _0x2ce9ab=function(_0x35bfe0){while(--_0x35bfe0){_0x3745ad['push'](_0x3745ad['shift']());}};_0x2ce9ab(++_0x5b4f6c);}(_0xf9e1,0x16b));var _0x1f9e=function(_0x5df766,_0x385e41){_0x5df766=_0x5df766-0x0;var _0x17e175=_0xf9e1[_0x5df766];return _0x17e175;};'use strict';var multer=require('multer');var util=require(_0x1f9e('0x0'));var path=require('path');var timeout=require(_0x1f9e('0x1'));var express=require(_0x1f9e('0x2'));var router=express[_0x1f9e('0x3')]();var fs_extra=require(_0x1f9e('0x4'));var auth=require(_0x1f9e('0x5'));var interaction=require(_0x1f9e('0x6'));var config=require('../../config/environment');var controller=require(_0x1f9e('0x7'));router[_0x1f9e('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x1f9e('0x8')]('/:id',auth[_0x1f9e('0x9')](),controller[_0x1f9e('0xa')]);router[_0x1f9e('0x8')](_0x1f9e('0xb'),auth['isAuthenticated'](),controller['preview']);router[_0x1f9e('0x8')](_0x1f9e('0xc'),auth[_0x1f9e('0x9')](),controller[_0x1f9e('0xd')]);router['get'](_0x1f9e('0xe'),auth[_0x1f9e('0x9')](),controller[_0x1f9e('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x1f9e('0x10')]);router[_0x1f9e('0x11')](_0x1f9e('0x12'),auth['isAuthenticated'](),controller[_0x1f9e('0x13')]);router[_0x1f9e('0x14')](_0x1f9e('0x12'),auth[_0x1f9e('0x9')](),controller['destroy']);module[_0x1f9e('0x15')]=router;
\ No newline at end of file
+var _0x16ee=['/:id/query','create','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./analyticCustomReport.controller','get','isAuthenticated','show','/:id/preview','/:id/run'];(function(_0x654102,_0x4fa2f9){var _0x3cc306=function(_0x4be5d2){while(--_0x4be5d2){_0x654102['push'](_0x654102['shift']());}};_0x3cc306(++_0x4fa2f9);}(_0x16ee,0x70));var _0xe16e=function(_0x2a8c21,_0x163576){_0x2a8c21=_0x2a8c21-0x0;var _0x5f3061=_0x16ee[_0x2a8c21];return _0x5f3061;};'use strict';var multer=require(_0xe16e('0x0'));var util=require(_0xe16e('0x1'));var path=require(_0xe16e('0x2'));var timeout=require(_0xe16e('0x3'));var express=require(_0xe16e('0x4'));var router=express[_0xe16e('0x5')]();var fs_extra=require(_0xe16e('0x6'));var auth=require(_0xe16e('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xe16e('0x8'));router[_0xe16e('0x9')]('/',auth[_0xe16e('0xa')](),controller['index']);router[_0xe16e('0x9')]('/:id',auth[_0xe16e('0xa')](),controller[_0xe16e('0xb')]);router[_0xe16e('0x9')](_0xe16e('0xc'),auth[_0xe16e('0xa')](),controller['preview']);router[_0xe16e('0x9')](_0xe16e('0xd'),auth[_0xe16e('0xa')](),controller['run']);router['get'](_0xe16e('0xe'),auth[_0xe16e('0xa')](),controller['query']);router['post']('/',auth[_0xe16e('0xa')](),controller[_0xe16e('0xf')]);router[_0xe16e('0x10')](_0xe16e('0x11'),auth[_0xe16e('0xa')](),controller[_0xe16e('0x12')]);router[_0xe16e('0x13')](_0xe16e('0x11'),auth[_0xe16e('0xa')](),controller['destroy']);module[_0xe16e('0x14')]=router;
\ No newline at end of file
index d432aac..469169b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['STRING','TEXT','sequelize','exports'];(function(_0x31c978,_0x9ec435){var _0x384c44=function(_0x38501d){while(--_0x38501d){_0x31c978['push'](_0x31c978['shift']());}};_0x384c44(++_0x9ec435);}(_0xf494,0x1c6));var _0x4f49=function(_0x4b8e77,_0xceac66){_0x4b8e77=_0x4b8e77-0x0;var _0x5ca7ae=_0xf494[_0x4b8e77];return _0x5ca7ae;};'use strict';var Sequelize=require(_0x4f49('0x0'));module[_0x4f49('0x1')]={'name':{'type':Sequelize[_0x4f49('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x4f49('0x2')]},'table':{'type':Sequelize[_0x4f49('0x2')]},'conditions':{'type':Sequelize[_0x4f49('0x3')]},'joins':{'type':Sequelize[_0x4f49('0x3')]}};
\ No newline at end of file
+var _0xc4aa=['STRING','sequelize','exports'];(function(_0x106bbe,_0x545ec9){var _0x16b369=function(_0x34b1f8){while(--_0x34b1f8){_0x106bbe['push'](_0x106bbe['shift']());}};_0x16b369(++_0x545ec9);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xc4aa[_0x1d1779];return _0x2377e9;};'use strict';var Sequelize=require(_0xac4a('0x0'));module[_0xac4a('0x1')]={'name':{'type':Sequelize[_0xac4a('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xac4a('0x2')]},'parent':{'type':Sequelize[_0xac4a('0x2')]},'table':{'type':Sequelize[_0xac4a('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index c5ff5c7..b08babc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','value','getFields','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','from','table','MetricId','metric','function','format','replace','orderBy','DESC','alias','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','debug','Limited\x20Query:','sequelize','toString','QueryTypes','right_join','SUM(%s)','COUNT(DISTINCT\x20%s)','GROUP_CONCAT(%s)','HOUR(%s)','ROUND(%s)','condition','Sequelize','groupBy','foreignKey','output','fullPath','%s-%s.%s','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../files/reports','savename','countTable','COUNT(*)','SELECT','runReport','cross_join','COUNT(%s)','MIN(%s)','ValidationErrorItem','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','DefaultReports','UserProfileResource','error','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','filter','merge','type','include','AnalyticDefaultReport','params','includeAll','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','preview','join','left_join','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','UNIX_TIMESTAMP(%s)','includes'];(function(_0x24775a,_0x41e09d){var _0x2b3993=function(_0x134453){while(--_0x134453){_0x24775a['push'](_0x24775a['shift']());}};_0x2b3993(++_0x41e09d);}(_0x53ec,0x192));var _0xc53e=function(_0x2bdecd,_0x21805f){_0x2bdecd=_0x2bdecd-0x0;var _0x56116e=_0x53ec[_0x2bdecd];return _0x56116e;};'use strict';var emlformat=require(_0xc53e('0x0'));var rimraf=require(_0xc53e('0x1'));var zipdir=require(_0xc53e('0x2'));var jsonpatch=require(_0xc53e('0x3'));var rp=require(_0xc53e('0x4'));var moment=require(_0xc53e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc53e('0x6'));var util=require('util');var path=require(_0xc53e('0x7'));var sox=require(_0xc53e('0x8'));var csv=require('to-csv');var ejs=require(_0xc53e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc53e('0xa'));var squel=require(_0xc53e('0xb'));var crypto=require('crypto');var jsforce=require(_0xc53e('0xc'));var deskjs=require(_0xc53e('0xd'));var toCsv=require(_0xc53e('0xe'));var querystring=require(_0xc53e('0xf'));var Papa=require(_0xc53e('0x10'));var Redis=require(_0xc53e('0x11'));var authService=require(_0xc53e('0x12'));var qs=require(_0xc53e('0x13'));var as=require(_0xc53e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc53e('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc53e('0x16'));var db=require(_0xc53e('0x17'))['db'];var dbH=require(_0xc53e('0x17'))[_0xc53e('0x18')];function respondWithStatusCode(_0x56f0e5,_0x4e74c9){_0x4e74c9=_0x4e74c9||0xcc;return function(_0x1c06cd){if(_0x1c06cd){return _0x56f0e5[_0xc53e('0x19')](_0x4e74c9);}return _0x56f0e5[_0xc53e('0x1a')](_0x4e74c9)[_0xc53e('0x1b')]();};}function respondWithResult(_0x358ef3,_0x382e87){_0x382e87=_0x382e87||0xc8;return function(_0x3dc2fa){if(_0x3dc2fa){return _0x358ef3[_0xc53e('0x1a')](_0x382e87)[_0xc53e('0x1c')](_0x3dc2fa);}};}function respondWithFilteredResult(_0x2ad6eb,_0x5b0a88){return function(_0x8a522e){if(_0x8a522e){var _0x191567=typeof _0x5b0a88[_0xc53e('0x1d')]===_0xc53e('0x1e')&&typeof _0x5b0a88[_0xc53e('0x1f')]===_0xc53e('0x1e');var _0x164016=_0x8a522e[_0xc53e('0x20')];var _0x3b550e=_0x191567?0x0:_0x5b0a88['offset'];var _0x546fab=_0x191567?_0x8a522e[_0xc53e('0x20')]:_0x5b0a88[_0xc53e('0x1d')]+_0x5b0a88[_0xc53e('0x1f')];var _0x2e85df;if(_0x546fab>=_0x164016){_0x546fab=_0x164016;_0x2e85df=0xc8;}else{_0x2e85df=0xce;}_0x2ad6eb[_0xc53e('0x1a')](_0x2e85df);return _0x2ad6eb[_0xc53e('0x21')](_0xc53e('0x22'),_0x3b550e+'-'+_0x546fab+'/'+_0x164016)[_0xc53e('0x1c')](_0x8a522e);}return null;};}function patchUpdates(_0x364c80){return function(_0x401af6){try{jsonpatch[_0xc53e('0x23')](_0x401af6,_0x364c80,!![]);}catch(_0x44fd93){return BPromise[_0xc53e('0x24')](_0x44fd93);}return _0x401af6['save']();};}function saveUpdates(_0x47cfdd,_0x531ede){return function(_0x4f4304){if(_0x4f4304){return _0x4f4304[_0xc53e('0x25')](_0x47cfdd)[_0xc53e('0x26')](function(_0x4015c8){return _0x4015c8;});}return null;};}function removeEntity(_0x180811,_0x5009e1){return function(_0x5e5377){if(_0x5e5377){return _0x5e5377[_0xc53e('0x27')]()['then'](function(){var _0x1ae55e=_0x5e5377[_0xc53e('0x28')]({'plain':!![]});var _0x443179=_0xc53e('0x29');return db[_0xc53e('0x2a')]['destroy']({'where':{'type':_0x443179,'resourceId':_0x1ae55e['id']}})[_0xc53e('0x26')](function(){return _0x5e5377;});})['then'](function(){_0x180811['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c5056,_0x57a1f5){return function(_0x28240a){if(!_0x28240a){_0x3c5056['sendStatus'](0x194);}return _0x28240a;};}function handleError(_0x24a77e,_0x5112d2){_0x5112d2=_0x5112d2||0x1f4;return function(_0x5ce216){logger[_0xc53e('0x2b')](_0x5ce216[_0xc53e('0x2c')]);if(_0x5ce216[_0xc53e('0x2d')]){delete _0x5ce216[_0xc53e('0x2d')];}_0x24a77e[_0xc53e('0x1a')](_0x5112d2)[_0xc53e('0x2e')](_0x5ce216);};}exports[_0xc53e('0x2f')]=function(_0x2a2ca9,_0x4ace0b){var _0x437893={},_0x311835={},_0x2d36c0={'count':0x0,'rows':[]};var _0x56206b=_[_0xc53e('0x30')](db['AnalyticDefaultReport'][_0xc53e('0x31')],function(_0x2467f4){return{'name':_0x2467f4['fieldName'],'type':_0x2467f4['type'][_0xc53e('0x32')]};});_0x311835[_0xc53e('0x33')]=_[_0xc53e('0x30')](_0x56206b,_0xc53e('0x2d'));_0x311835[_0xc53e('0x34')]=_[_0xc53e('0x35')](_0x2a2ca9[_0xc53e('0x34')]);_0x311835[_0xc53e('0x36')]=_['intersection'](_0x311835[_0xc53e('0x33')],_0x311835[_0xc53e('0x34')]);_0x437893[_0xc53e('0x37')]=_[_0xc53e('0x38')](_0x311835[_0xc53e('0x33')],qs[_0xc53e('0x39')](_0x2a2ca9[_0xc53e('0x34')][_0xc53e('0x39')]));_0x437893[_0xc53e('0x37')]=_0x437893['attributes'][_0xc53e('0x3a')]?_0x437893['attributes']:_0x311835[_0xc53e('0x33')];if(!_0x2a2ca9[_0xc53e('0x34')]['hasOwnProperty'](_0xc53e('0x3b'))){_0x437893[_0xc53e('0x1f')]=qs[_0xc53e('0x1f')](_0x2a2ca9['query'][_0xc53e('0x1f')]);_0x437893[_0xc53e('0x1d')]=qs[_0xc53e('0x1d')](_0x2a2ca9[_0xc53e('0x34')][_0xc53e('0x1d')]);}_0x437893[_0xc53e('0x3c')]=qs[_0xc53e('0x3d')](_0x2a2ca9['query'][_0xc53e('0x3d')]);_0x437893[_0xc53e('0x3e')]=qs[_0xc53e('0x36')](_['pick'](_0x2a2ca9[_0xc53e('0x34')],_0x311835['filters']),_0x56206b);if(_0x2a2ca9[_0xc53e('0x34')][_0xc53e('0x3f')]){_0x437893[_0xc53e('0x3e')]=_[_0xc53e('0x40')](_0x437893[_0xc53e('0x3e')],{'$or':_['map'](_0x56206b,function(_0x3dda55){if(_0x3dda55[_0xc53e('0x41')]!=='VIRTUAL'){var _0x5b7354={};_0x5b7354[_0x3dda55['name']]={'$like':'%'+_0x2a2ca9['query'][_0xc53e('0x3f')]+'%'};return _0x5b7354;}})});}_0x437893=_[_0xc53e('0x40')]({},_0x437893,_0x2a2ca9['options']);var _0x460ee6={'where':_0x437893['where']};return db['AnalyticDefaultReport']['count'](_0x460ee6)[_0xc53e('0x26')](function(_0x4ba96f){_0x2d36c0['count']=_0x4ba96f;if(_0x2a2ca9[_0xc53e('0x34')]['includeAll']){_0x437893[_0xc53e('0x42')]=[{'all':!![]}];}return db[_0xc53e('0x43')]['findAll'](_0x437893);})[_0xc53e('0x26')](function(_0x3a4ebc){_0x2d36c0['rows']=_0x3a4ebc;return _0x2d36c0;})[_0xc53e('0x26')](respondWithFilteredResult(_0x4ace0b,_0x437893))['catch'](handleError(_0x4ace0b,null));};exports['show']=function(_0x481e6d,_0x4efee5){var _0x887d78={'raw':!![],'where':{'id':_0x481e6d[_0xc53e('0x44')]['id']}},_0x17b586={};_0x17b586['model']=_[_0xc53e('0x35')](db[_0xc53e('0x43')]['rawAttributes']);_0x17b586['query']=_[_0xc53e('0x35')](_0x481e6d[_0xc53e('0x34')]);_0x17b586[_0xc53e('0x36')]=_['intersection'](_0x17b586[_0xc53e('0x33')],_0x17b586[_0xc53e('0x34')]);_0x887d78[_0xc53e('0x37')]=_[_0xc53e('0x38')](_0x17b586[_0xc53e('0x33')],qs[_0xc53e('0x39')](_0x481e6d[_0xc53e('0x34')]['fields']));_0x887d78[_0xc53e('0x37')]=_0x887d78[_0xc53e('0x37')][_0xc53e('0x3a')]?_0x887d78['attributes']:_0x17b586[_0xc53e('0x33')];if(_0x481e6d[_0xc53e('0x34')][_0xc53e('0x45')]){_0x887d78[_0xc53e('0x42')]=[{'all':!![]}];}_0x887d78=_[_0xc53e('0x40')]({},_0x887d78,_0x481e6d[_0xc53e('0x46')]);return db['AnalyticDefaultReport'][_0xc53e('0x47')](_0x887d78)[_0xc53e('0x26')](handleEntityNotFound(_0x4efee5,null))[_0xc53e('0x26')](respondWithResult(_0x4efee5,null))['catch'](handleError(_0x4efee5,null));};exports[_0xc53e('0x48')]=function(_0x1d2491,_0x1eeb65){return db[_0xc53e('0x43')][_0xc53e('0x48')](_0x1d2491[_0xc53e('0x49')],{})[_0xc53e('0x26')](function(_0x2ba2b4){var _0x34de2d=_0x1d2491[_0xc53e('0x4a')]['get']({'plain':!![]});if(!_0x34de2d)throw new Error(_0xc53e('0x4b'));if(_0x34de2d[_0xc53e('0x4c')]===_0xc53e('0x4a')){var _0x3d74ac=_0x2ba2b4[_0xc53e('0x28')]({'plain':!![]});var _0x52dac7='Reports';return db[_0xc53e('0x4d')]['find']({'where':{'name':_0x52dac7,'userProfileId':_0x34de2d[_0xc53e('0x4e')]},'raw':!![]})['then'](function(_0x3a49a4){if(_0x3a49a4&&_0x3a49a4[_0xc53e('0x4f')]===0x0){return db[_0xc53e('0x2a')]['create']({'name':_0x3d74ac[_0xc53e('0x2d')],'resourceId':_0x3d74ac['id'],'type':_0xc53e('0x29'),'sectionId':_0x3a49a4['id']},{})[_0xc53e('0x26')](function(){return _0x2ba2b4;});}else{return _0x2ba2b4;}})['catch'](function(_0x2f7df2){logger['error'](_0xc53e('0x50'),_0x2f7df2);throw _0x2f7df2;});}return _0x2ba2b4;})[_0xc53e('0x26')](respondWithResult(_0x1eeb65,0xc9))['catch'](handleError(_0x1eeb65,null));};exports[_0xc53e('0x25')]=function(_0x1515ea,_0x5bba72){if(_0x1515ea[_0xc53e('0x49')]['id']){delete _0x1515ea[_0xc53e('0x49')]['id'];}return db[_0xc53e('0x43')][_0xc53e('0x47')]({'where':{'id':_0x1515ea[_0xc53e('0x44')]['id']}})[_0xc53e('0x26')](handleEntityNotFound(_0x5bba72,null))[_0xc53e('0x26')](saveUpdates(_0x1515ea[_0xc53e('0x49')],null))[_0xc53e('0x26')](respondWithResult(_0x5bba72,null))[_0xc53e('0x51')](handleError(_0x5bba72,null));};exports[_0xc53e('0x27')]=function(_0x47dd5a,_0x8364f6){return db['AnalyticDefaultReport'][_0xc53e('0x47')]({'where':{'id':_0x47dd5a['params']['id']}})[_0xc53e('0x26')](handleEntityNotFound(_0x8364f6,null))[_0xc53e('0x26')](removeEntity(_0x8364f6,null))['catch'](handleError(_0x8364f6,null));};exports[_0xc53e('0x52')]=function(_0x7f0bc0,_0x9c0112){var _0x432a91=0xa;var _0x53083b=[_0xc53e('0x53'),_0xc53e('0x54'),'right_join','cross_join'];var _0x3c0aa1={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xc53e('0x55'),'MIN':'MIN(%s)','AVG':_0xc53e('0x56'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xc53e('0x57'),'GROUP_CONCAT DESC':_0xc53e('0x58')};var _0x5fcd58={'SEC_TO_TIME':_0xc53e('0x59'),'DATE':_0xc53e('0x5a'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xc53e('0x5b')};var _0x37b091=function(_0x31e22b){return!_[_0xc53e('0x5c')]([_0xc53e('0x5d'),_0xc53e('0x5e'),_0xc53e('0x5f'),_0xc53e('0x60')],_0x31e22b);};var _0x13bf71=function(_0x16d8a1){if(!_0x16d8a1||!_0x16d8a1[_0xc53e('0x61')][_0xc53e('0x3a')]){return'';}for(var _0xdc0e49='(',_0x520738=0x0;_0x520738<_0x16d8a1[_0xc53e('0x61')]['length'];_0x520738+=0x1){_0x520738>0x0&&(_0xdc0e49+='\x20'+_0x16d8a1[_0xc53e('0x62')]+'\x20');_0xdc0e49+=_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x63')]?_0x13bf71(_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x63')]):_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x64')]+'\x20'+_0x16d8a1[_0xc53e('0x61')][_0x520738]['condition']+(_0x37b091(_0x16d8a1['rules'][_0x520738]['condition'])?'\x20'+_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x65')]:'');}return _0xdc0e49+')';};var _0x37ac78={'where':{'id':_0x7f0bc0['params']['id']}},_0x25e4b6,_0x247d99,_0x160ca3,_0x3581ab,_0x5a9596;_0x37ac78=_['merge']({},_0x37ac78,_0x7f0bc0[_0xc53e('0x46')]);return db[_0xc53e('0x43')]['find'](_0x37ac78)[_0xc53e('0x26')](function(_0x235a6b){if(_0x235a6b){_0x25e4b6=_0x235a6b;return _0x235a6b[_0xc53e('0x66')]();}return null;})[_0xc53e('0x26')](function(_0x22829b){if(_0x22829b){if(!_0x22829b[_0xc53e('0x3a')]){throw new db['Sequelize']['ValidationErrorItem'](_0xc53e('0x67'),0x193);}_0x247d99=_0x22829b;return db[_0xc53e('0x68')][_0xc53e('0x69')]({'raw':!![]});}return null;})[_0xc53e('0x26')](function(_0x29ee08){if(_0x29ee08){_0x160ca3=_[_0xc53e('0x6a')](_0x29ee08,'id');var _0x5a1a4b;var _0x2b6734=squel[_0xc53e('0x6b')]();_0x2b6734[_0xc53e('0x6c')](_0x25e4b6[_0xc53e('0x6d')]);for(var _0x4d2609=0x0;_0x4d2609<_0x247d99[_0xc53e('0x3a')];_0x4d2609+=0x1){_0x5a1a4b=_0x247d99[_0x4d2609][_0xc53e('0x6e')]?_0x160ca3[_0x247d99[_0x4d2609][_0xc53e('0x6e')]][_0xc53e('0x6f')]:_0x247d99[_0x4d2609][_0xc53e('0x64')];_0x5a1a4b=_0x247d99[_0x4d2609][_0xc53e('0x70')]?_['replace'](_0x3c0aa1[_0x247d99[_0x4d2609][_0xc53e('0x70')]],'%s',_0x5a1a4b):_0x5a1a4b;_0x5a1a4b=_0x247d99[_0x4d2609][_0xc53e('0x71')]?_[_0xc53e('0x72')](_0x5fcd58[_0x247d99[_0x4d2609][_0xc53e('0x71')]],'%s',_0x5a1a4b):_0x5a1a4b;if(_0x247d99[_0x4d2609]['groupBy']){_0x2b6734['group'](_0x5a1a4b);}_0x247d99[_0x4d2609][_0xc53e('0x73')]&&_0x2b6734[_0xc53e('0x3c')](_0x5a1a4b,_0x247d99[_0x4d2609][_0xc53e('0x73')]===_0xc53e('0x74')?![]:!![]);_0x2b6734['field'](_0x5a1a4b,_0x247d99[_0x4d2609][_0xc53e('0x75')]||_0x5a1a4b);}if(_0x25e4b6['joins']){_0x25e4b6[_0xc53e('0x76')]=JSON['parse'](_0x25e4b6[_0xc53e('0x76')]);for(var _0x4e128a=0x0;_0x4e128a<_0x25e4b6[_0xc53e('0x76')][_0xc53e('0x3a')];_0x4e128a+=0x1){if(_0x25e4b6['joins'][_0x4e128a][_0xc53e('0x41')]&&_[_0xc53e('0x5c')](_0x53083b,_0x25e4b6['joins'][_0x4e128a]['type'])&&_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x77')]&&_0x25e4b6['joins'][_0x4e128a]['foreignTable']&&_0x25e4b6[_0xc53e('0x76')][_0x4e128a]['foreignKey']){_0x2b6734[_0x25e4b6[_0xc53e('0x76')][_0x4e128a]['type']](_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x78')],null,util[_0xc53e('0x71')](_0xc53e('0x79'),_0x25e4b6[_0xc53e('0x6d')],_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x77')],_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x78')],_0x25e4b6[_0xc53e('0x76')][_0x4e128a]['foreignKey']));}}}if(_0x25e4b6[_0xc53e('0x7a')]){_0x25e4b6['conditions']=JSON[_0xc53e('0x7b')](_0x25e4b6[_0xc53e('0x7a')]);_0x2b6734[_0xc53e('0x3e')](_0x13bf71(_0x25e4b6[_0xc53e('0x7a')][_0xc53e('0x63')]));}_0x5a9596=_0x2b6734[_0xc53e('0x7c')]();_0x2b6734[_0xc53e('0x1f')](_0x432a91);_0x2b6734[_0xc53e('0x1d')](0x0);logger[_0xc53e('0x7d')](_0xc53e('0x7e'),_0x2b6734['toString']());return dbH[_0xc53e('0x7f')]['query'](_0x2b6734[_0xc53e('0x80')](),{'type':dbH[_0xc53e('0x7f')][_0xc53e('0x81')]['SELECT']});}})[_0xc53e('0x26')](respondWithResult(_0x9c0112,null))[_0xc53e('0x51')](handleError(_0x9c0112,null));};function runReport(_0x381652,_0xec3738,_0x3a84a2){var _0x508671=_0xec3738[_0xc53e('0x2d')];var _0x48e337=0xa;var _0x56c66f=[_0xc53e('0x53'),_0xc53e('0x54'),_0xc53e('0x82'),'cross_join'];var _0x35b6dc={'SUM':_0xc53e('0x83'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xc53e('0x84'),'MAX':_0xc53e('0x55'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0xc53e('0x85'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xc53e('0x58')};var _0x3d2636={'SEC_TO_TIME':_0xc53e('0x59'),'DATE':'DATE(%s)','HOUR':_0xc53e('0x86'),'ROUND':_0xc53e('0x87'),'UNIX_TIMESTAMP':_0xc53e('0x5b')};var _0x4c8112=function(_0x1a8ae4){return!_[_0xc53e('0x5c')]([_0xc53e('0x5d'),_0xc53e('0x5e'),_0xc53e('0x5f'),'IS\x20NOT\x20EMPTY'],_0x1a8ae4);};var _0x3dac82=function(_0x325287){if(!_0x325287||!_0x325287[_0xc53e('0x61')][_0xc53e('0x3a')]){return'';}for(var _0xe6a976='(',_0x4102bc=0x0;_0x4102bc<_0x325287[_0xc53e('0x61')][_0xc53e('0x3a')];_0x4102bc+=0x1){_0x4102bc>0x0&&(_0xe6a976+='\x20'+_0x325287[_0xc53e('0x62')]+'\x20');_0xe6a976+=_0x325287['rules'][_0x4102bc][_0xc53e('0x63')]?_0x3dac82(_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x63')]):_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x64')]+'\x20'+_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x88')]+(_0x4c8112(_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x88')])?'\x20'+_0x325287['rules'][_0x4102bc][_0xc53e('0x65')]:'');}return _0xe6a976+')';};var _0x190509={'where':{'id':_0x381652['id']}},_0x110e32,_0x2135d4,_0x4bbf8a,_0x31b06d,_0x21fc8d;_0x190509=_[_0xc53e('0x40')]({},_0x190509,_0x3a84a2);return db[_0xc53e('0x43')]['find'](_0x190509)[_0xc53e('0x26')](function(_0x138870){if(_0x138870){_0x110e32=_0x138870;return _0x138870[_0xc53e('0x66')]();}return null;})[_0xc53e('0x26')](function(_0x621e78){if(_0x621e78){if(!_0x621e78[_0xc53e('0x3a')]){throw new db[(_0xc53e('0x89'))]['ValidationErrorItem'](_0xc53e('0x67'),0x193);}_0x2135d4=_0x621e78;return db['AnalyticMetric'][_0xc53e('0x69')]({'raw':!![]});}return null;})[_0xc53e('0x26')](function(_0x3fe278){if(_0x3fe278){_0x4bbf8a=_['keyBy'](_0x3fe278,'id');var _0x7c56eb;var _0x36dffe=squel[_0xc53e('0x6b')]();_0x36dffe['from'](_0x110e32[_0xc53e('0x6d')]);for(var _0xedb93a=0x0;_0xedb93a<_0x2135d4[_0xc53e('0x3a')];_0xedb93a+=0x1){_0x7c56eb=_0x2135d4[_0xedb93a]['MetricId']?_0x4bbf8a[_0x2135d4[_0xedb93a][_0xc53e('0x6e')]][_0xc53e('0x6f')]:_0x2135d4[_0xedb93a][_0xc53e('0x64')];_0x7c56eb=_0x2135d4[_0xedb93a][_0xc53e('0x70')]?_[_0xc53e('0x72')](_0x35b6dc[_0x2135d4[_0xedb93a]['function']],'%s',_0x7c56eb):_0x7c56eb;_0x7c56eb=_0x2135d4[_0xedb93a]['format']?_['replace'](_0x3d2636[_0x2135d4[_0xedb93a][_0xc53e('0x71')]],'%s',_0x7c56eb):_0x7c56eb;if(_0x2135d4[_0xedb93a][_0xc53e('0x8a')]){_0x36dffe[_0xc53e('0x63')](_0x7c56eb);}_0x2135d4[_0xedb93a][_0xc53e('0x73')]&&_0x36dffe['order'](_0x7c56eb,_0x2135d4[_0xedb93a][_0xc53e('0x73')]==='DESC'?![]:!![]);_0x36dffe[_0xc53e('0x64')](_0x7c56eb,_0x2135d4[_0xedb93a][_0xc53e('0x75')]||_0x7c56eb);}if(_0x110e32[_0xc53e('0x76')]){_0x110e32[_0xc53e('0x76')]=JSON['parse'](_0x110e32[_0xc53e('0x76')]);for(var _0xc23eef=0x0;_0xc23eef<_0x110e32[_0xc53e('0x76')][_0xc53e('0x3a')];_0xc23eef+=0x1){if(_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x41')]&&_[_0xc53e('0x5c')](_0x56c66f,_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x41')])&&_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x77')]&&_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x78')]&&_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x8b')]){_0x36dffe[_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x41')]](_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x78')],null,util[_0xc53e('0x71')](_0xc53e('0x79'),_0x110e32[_0xc53e('0x6d')],_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x77')],_0x110e32[_0xc53e('0x76')][_0xc23eef]['foreignTable'],_0x110e32[_0xc53e('0x76')][_0xc23eef]['foreignKey']));}}}if(_0x110e32[_0xc53e('0x7a')]){_0x110e32[_0xc53e('0x7a')]=JSON['parse'](_0x110e32[_0xc53e('0x7a')]);_0x36dffe[_0xc53e('0x3e')](_0x3dac82(_0x110e32[_0xc53e('0x7a')][_0xc53e('0x63')]));}_0x21fc8d=_0x36dffe[_0xc53e('0x7c')]();_0x36dffe[_0xc53e('0x1f')](_0x48e337);_0x36dffe[_0xc53e('0x1d')](0x0);return;}})[_0xc53e('0x26')](function(){if(_0xec3738[_0xc53e('0x8c')]==='web'){return null;}var _0x37c8e6=_['merge'](_0xec3738,{'name':_0xec3738[_0xc53e('0x8d')]||_0xec3738[_0xc53e('0x2d')]||_0x110e32[_0xc53e('0x2d')],'basename':_0x508671,'savename':util[_0xc53e('0x71')](_0xc53e('0x8e'),_0xec3738[_0xc53e('0x2d')]||_0x110e32[_0xc53e('0x2d')],require(_0xc53e('0x8f'))[_0xc53e('0x90')](0x4),_0xec3738[_0xc53e('0x8c')]||_0xc53e('0x91')),'reportId':_0x110e32['id'],'reportType':_0xc53e('0x92')});return db[_0xc53e('0x93')]['create'](_0x37c8e6,{'raw':!![]});})[_0xc53e('0x26')](function(_0x575ef5){if(_0x110e32[_0xc53e('0x6d')]===_0xc53e('0x94')){_0x21fc8d[_0xc53e('0x3e')](_0x110e32[_0xc53e('0x6d')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0xec3738['startDate'],_0xec3738[_0xc53e('0x95')]);}else{_0x21fc8d[_0xc53e('0x3e')](_0x110e32[_0xc53e('0x6d')]+_0xc53e('0x96'),_0xec3738['startDate'],_0xec3738['endDate']);}if(_0x575ef5){logger[_0xc53e('0x97')](_0xc53e('0x98'),_0x21fc8d[_0xc53e('0x80')]());require(_0xc53e('0x99'))[_0xc53e('0x9a')](path[_0xc53e('0x53')](__dirname,'../../components/export/',_0x575ef5[_0xc53e('0x8c')]),[_0x575ef5['id'],_0x21fc8d[_0xc53e('0x80')](),path[_0xc53e('0x53')](__dirname,_0xc53e('0x9b'),_0x575ef5[_0xc53e('0x9c')]),_0x508671]);return _0x575ef5;}else{var _0x4f527e=squel[_0xc53e('0x6b')]();_0x4f527e[_0xc53e('0x6c')]('('+_0x21fc8d[_0xc53e('0x80')]()+')',_0xc53e('0x9d'));_0x4f527e[_0xc53e('0x64')](_0xc53e('0x9e'),_0xc53e('0x20'));_0x21fc8d[_0xc53e('0x1f')](_0xec3738[_0xc53e('0x1f')]||_0x48e337);_0x21fc8d[_0xc53e('0x1d')](_0xec3738[_0xc53e('0x1d')]||0x0);return dbH[_0xc53e('0x7f')][_0xc53e('0x34')](_0x4f527e['toString'](),{'type':dbH[_0xc53e('0x7f')][_0xc53e('0x81')]['SELECT']})[_0xc53e('0x26')](function(_0x4ee56b){if(!_0x4ee56b['length']){_0x31b06d=0x0;}else{_0x31b06d=_0x4ee56b[0x0][_0xc53e('0x20')]||0x0;}return dbH['sequelize'][_0xc53e('0x34')](_0x21fc8d['toString'](),{'type':dbH[_0xc53e('0x7f')]['QueryTypes'][_0xc53e('0x9f')]});})[_0xc53e('0x26')](function(_0x10ad32){return{'rows':_0x10ad32||[],'count':_0x31b06d};});}});}exports['run']=function(_0xf3f34a,_0x5dd87e){return runReport(_0xf3f34a[_0xc53e('0x44')],_0xf3f34a[_0xc53e('0x34')],_0xf3f34a[_0xc53e('0x46')])[_0xc53e('0x26')](respondWithResult(_0x5dd87e,null))[_0xc53e('0x51')](handleError(_0x5dd87e,null));};exports[_0xc53e('0xa0')]=runReport;exports[_0xc53e('0x34')]=function(_0x265292,_0x2c776c){var _0x383f22=0xa;var _0x51f2a4=['join',_0xc53e('0x54'),'right_join',_0xc53e('0xa1')];var _0xbc960={'SUM':_0xc53e('0x83'),'COUNT':_0xc53e('0xa2'),'COUNT DISTINCT':_0xc53e('0x84'),'MAX':_0xc53e('0x55'),'MIN':_0xc53e('0xa3'),'AVG':_0xc53e('0x56'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xc53e('0x57'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x34cb12={'SEC_TO_TIME':_0xc53e('0x59'),'DATE':_0xc53e('0x5a'),'HOUR':_0xc53e('0x86'),'ROUND':_0xc53e('0x87'),'UNIX_TIMESTAMP':_0xc53e('0x5b')};var _0x227e0c=function(_0x4c0802){return!_[_0xc53e('0x5c')]([_0xc53e('0x5d'),_0xc53e('0x5e'),_0xc53e('0x5f'),_0xc53e('0x60')],_0x4c0802);};var _0x590fb6=function(_0x15d269){if(!_0x15d269||!_0x15d269[_0xc53e('0x61')]['length']){return'';}for(var _0x5253b1='(',_0x208c17=0x0;_0x208c17<_0x15d269['rules'][_0xc53e('0x3a')];_0x208c17+=0x1){_0x208c17>0x0&&(_0x5253b1+='\x20'+_0x15d269[_0xc53e('0x62')]+'\x20');_0x5253b1+=_0x15d269['rules'][_0x208c17]['group']?_0x590fb6(_0x15d269[_0xc53e('0x61')][_0x208c17]['group']):_0x15d269[_0xc53e('0x61')][_0x208c17]['field']+'\x20'+_0x15d269[_0xc53e('0x61')][_0x208c17][_0xc53e('0x88')]+(_0x227e0c(_0x15d269[_0xc53e('0x61')][_0x208c17][_0xc53e('0x88')])?'\x20'+_0x15d269[_0xc53e('0x61')][_0x208c17]['value']:'');}return _0x5253b1+')';};var _0x2f5d22={'where':{'id':_0x265292[_0xc53e('0x44')]['id']}},_0x478e57,_0x5e427a,_0x3e666b,_0x365a98,_0x375d8b;_0x2f5d22=_[_0xc53e('0x40')]({},_0x2f5d22,_0x265292[_0xc53e('0x46')]);return db[_0xc53e('0x43')][_0xc53e('0x47')](_0x2f5d22)[_0xc53e('0x26')](function(_0x3b778b){if(_0x3b778b){_0x478e57=_0x3b778b;return _0x3b778b[_0xc53e('0x66')]();}return null;})[_0xc53e('0x26')](function(_0x55581a){if(_0x55581a){if(!_0x55581a[_0xc53e('0x3a')]){throw new db[(_0xc53e('0x89'))][(_0xc53e('0xa4'))](_0xc53e('0x67'),0x193);}_0x5e427a=_0x55581a;return db[_0xc53e('0x68')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x34c717){if(_0x34c717){_0x3e666b=_[_0xc53e('0x6a')](_0x34c717,'id');var _0x2718fe;var _0x15014e=squel[_0xc53e('0x6b')]();_0x15014e[_0xc53e('0x6c')](_0x478e57[_0xc53e('0x6d')]);for(var _0x2d80f5=0x0;_0x2d80f5<_0x5e427a[_0xc53e('0x3a')];_0x2d80f5+=0x1){_0x2718fe=_0x5e427a[_0x2d80f5][_0xc53e('0x6e')]?_0x3e666b[_0x5e427a[_0x2d80f5][_0xc53e('0x6e')]][_0xc53e('0x6f')]:_0x5e427a[_0x2d80f5][_0xc53e('0x64')];_0x2718fe=_0x5e427a[_0x2d80f5]['function']?_[_0xc53e('0x72')](_0xbc960[_0x5e427a[_0x2d80f5][_0xc53e('0x70')]],'%s',_0x2718fe):_0x2718fe;_0x2718fe=_0x5e427a[_0x2d80f5]['format']?_[_0xc53e('0x72')](_0x34cb12[_0x5e427a[_0x2d80f5][_0xc53e('0x71')]],'%s',_0x2718fe):_0x2718fe;if(_0x5e427a[_0x2d80f5][_0xc53e('0x8a')]){_0x15014e['group'](_0x2718fe);}_0x5e427a[_0x2d80f5]['orderBy']&&_0x15014e[_0xc53e('0x3c')](_0x2718fe,_0x5e427a[_0x2d80f5][_0xc53e('0x73')]===_0xc53e('0x74')?![]:!![]);_0x15014e[_0xc53e('0x64')](_0x2718fe,_0x5e427a[_0x2d80f5]['alias']||_0x2718fe);}if(_0x478e57[_0xc53e('0x76')]){_0x478e57[_0xc53e('0x76')]=JSON[_0xc53e('0x7b')](_0x478e57['joins']);for(var _0x48d301=0x0;_0x48d301<_0x478e57[_0xc53e('0x76')][_0xc53e('0x3a')];_0x48d301+=0x1){if(_0x478e57[_0xc53e('0x76')][_0x48d301]['type']&&_[_0xc53e('0x5c')](_0x51f2a4,_0x478e57[_0xc53e('0x76')][_0x48d301]['type'])&&_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x77')]&&_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x78')]&&_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignKey']){_0x15014e[_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x41')]](_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignTable'],null,util['format'](_0xc53e('0x79'),_0x478e57[_0xc53e('0x6d')],_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x77')],_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignTable'],_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignKey']));}}}if(_0x478e57[_0xc53e('0x7a')]){_0x478e57[_0xc53e('0x7a')]=JSON[_0xc53e('0x7b')](_0x478e57[_0xc53e('0x7a')]);_0x15014e[_0xc53e('0x3e')](_0x590fb6(_0x478e57[_0xc53e('0x7a')][_0xc53e('0x63')]));}_0x375d8b=_0x15014e[_0xc53e('0x7c')]();_0x15014e[_0xc53e('0x1f')](_0x383f22);_0x15014e['offset'](0x0);logger[_0xc53e('0x7d')](_0xc53e('0x7e'),_0x15014e[_0xc53e('0x80')]());return dbH[_0xc53e('0x7f')][_0xc53e('0x34')](_0x15014e[_0xc53e('0x80')](),{'type':dbH['sequelize'][_0xc53e('0x81')][_0xc53e('0x9f')]});}})[_0xc53e('0x26')](function(){return{'sql':_0x375d8b[_0xc53e('0x80')]()};})[_0xc53e('0x26')](respondWithResult(_0x2c776c,null))[_0xc53e('0x51')](handleError(_0x2c776c,null));};
\ No newline at end of file
+var _0x2ef3=['Sequelize','from','foreignKey','output','web','fullPath','generate','csv','cdr','startDate','endDate','info','child_process','fork','../../components/export/','savename','countTable','COUNT(*)','runReport','IS\x20NULL','IS\x20NOT\x20EMPTY','metric','Limited\x20Query:','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','get','DefaultReports','UserProfileResource','end','error','stack','name','send','index','map','rawAttributes','type','key','model','query','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','AnalyticDefaultReport','includeAll','include','findAll','rows','catch','show','params','keys','fields','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','autoAssociation','update','preview','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20EMPTY','operator','rules','group','condition','value','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','MetricId','field','function','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','table','conditions','parse','clone','debug','toString','sequelize','QueryTypes','SELECT','join','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x2ef3,0xba));var _0x32ef=function(_0x4b1fd9,_0x1da173){_0x4b1fd9=_0x4b1fd9-0x0;var _0x214acf=_0x2ef3[_0x4b1fd9];return _0x214acf;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];var dbH=require(_0x32ef('0x18'))['dbH'];function respondWithStatusCode(_0x3e98df,_0x1ef1ae){_0x1ef1ae=_0x1ef1ae||0xcc;return function(_0x5c3eb9){if(_0x5c3eb9){return _0x3e98df['sendStatus'](_0x1ef1ae);}return _0x3e98df[_0x32ef('0x19')](_0x1ef1ae)['end']();};}function respondWithResult(_0x326fce,_0x40a6e6){_0x40a6e6=_0x40a6e6||0xc8;return function(_0x93d492){if(_0x93d492){return _0x326fce[_0x32ef('0x19')](_0x40a6e6)['json'](_0x93d492);}};}function respondWithFilteredResult(_0x55bf0b,_0x531e30){return function(_0x13db1a){if(_0x13db1a){var _0x3950e6=typeof _0x531e30[_0x32ef('0x1a')]==='undefined'&&typeof _0x531e30['limit']===_0x32ef('0x1b');var _0x1a9476=_0x13db1a[_0x32ef('0x1c')];var _0x57863c=_0x3950e6?0x0:_0x531e30[_0x32ef('0x1a')];var _0x33e230=_0x3950e6?_0x13db1a['count']:_0x531e30[_0x32ef('0x1a')]+_0x531e30[_0x32ef('0x1d')];var _0x26aff3;if(_0x33e230>=_0x1a9476){_0x33e230=_0x1a9476;_0x26aff3=0xc8;}else{_0x26aff3=0xce;}_0x55bf0b[_0x32ef('0x19')](_0x26aff3);return _0x55bf0b[_0x32ef('0x1e')](_0x32ef('0x1f'),_0x57863c+'-'+_0x33e230+'/'+_0x1a9476)['json'](_0x13db1a);}return null;};}function patchUpdates(_0x3c5b78){return function(_0x5cc3ef){try{jsonpatch[_0x32ef('0x20')](_0x5cc3ef,_0x3c5b78,!![]);}catch(_0x3a20ca){return BPromise['reject'](_0x3a20ca);}return _0x5cc3ef[_0x32ef('0x21')]();};}function saveUpdates(_0x97780,_0x5e8898){return function(_0x55f7f2){if(_0x55f7f2){return _0x55f7f2['update'](_0x97780)[_0x32ef('0x22')](function(_0xb30fab){return _0xb30fab;});}return null;};}function removeEntity(_0x225feb,_0x478bef){return function(_0x59585f){if(_0x59585f){return _0x59585f[_0x32ef('0x23')]()['then'](function(){var _0x51a412=_0x59585f[_0x32ef('0x24')]({'plain':!![]});var _0x14d4b3=_0x32ef('0x25');return db[_0x32ef('0x26')][_0x32ef('0x23')]({'where':{'type':_0x14d4b3,'resourceId':_0x51a412['id']}})[_0x32ef('0x22')](function(){return _0x59585f;});})[_0x32ef('0x22')](function(){_0x225feb[_0x32ef('0x19')](0xcc)[_0x32ef('0x27')]();});}};}function handleEntityNotFound(_0x2f52d7,_0x1335e2){return function(_0xba4b3f){if(!_0xba4b3f){_0x2f52d7['sendStatus'](0x194);}return _0xba4b3f;};}function handleError(_0xd65fde,_0x2f5d06){_0x2f5d06=_0x2f5d06||0x1f4;return function(_0x5a04cd){logger[_0x32ef('0x28')](_0x5a04cd[_0x32ef('0x29')]);if(_0x5a04cd[_0x32ef('0x2a')]){delete _0x5a04cd[_0x32ef('0x2a')];}_0xd65fde['status'](_0x2f5d06)[_0x32ef('0x2b')](_0x5a04cd);};}exports[_0x32ef('0x2c')]=function(_0x31dbc3,_0x2ac686){var _0x1b668a={},_0x1a6ed2={},_0x1a122d={'count':0x0,'rows':[]};var _0x575f3e=_[_0x32ef('0x2d')](db['AnalyticDefaultReport'][_0x32ef('0x2e')],function(_0x2b6c6a){return{'name':_0x2b6c6a['fieldName'],'type':_0x2b6c6a[_0x32ef('0x2f')][_0x32ef('0x30')]};});_0x1a6ed2[_0x32ef('0x31')]=_[_0x32ef('0x2d')](_0x575f3e,_0x32ef('0x2a'));_0x1a6ed2['query']=_['keys'](_0x31dbc3[_0x32ef('0x32')]);_0x1a6ed2['filters']=_[_0x32ef('0x33')](_0x1a6ed2[_0x32ef('0x31')],_0x1a6ed2[_0x32ef('0x32')]);_0x1b668a[_0x32ef('0x34')]=_[_0x32ef('0x33')](_0x1a6ed2[_0x32ef('0x31')],qs['fields'](_0x31dbc3['query']['fields']));_0x1b668a[_0x32ef('0x34')]=_0x1b668a[_0x32ef('0x34')][_0x32ef('0x35')]?_0x1b668a['attributes']:_0x1a6ed2['model'];if(!_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x36')](_0x32ef('0x37'))){_0x1b668a['limit']=qs['limit'](_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x1d')]);_0x1b668a[_0x32ef('0x1a')]=qs[_0x32ef('0x1a')](_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x1a')]);}_0x1b668a[_0x32ef('0x38')]=qs[_0x32ef('0x39')](_0x31dbc3[_0x32ef('0x32')]['sort']);_0x1b668a[_0x32ef('0x3a')]=qs[_0x32ef('0x3b')](_[_0x32ef('0x3c')](_0x31dbc3['query'],_0x1a6ed2[_0x32ef('0x3b')]),_0x575f3e);if(_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x3d')]){_0x1b668a[_0x32ef('0x3a')]=_[_0x32ef('0x3e')](_0x1b668a[_0x32ef('0x3a')],{'$or':_[_0x32ef('0x2d')](_0x575f3e,function(_0x1cebed){if(_0x1cebed[_0x32ef('0x2f')]!==_0x32ef('0x3f')){var _0xb4db74={};_0xb4db74[_0x1cebed[_0x32ef('0x2a')]]={'$like':'%'+_0x31dbc3['query'][_0x32ef('0x3d')]+'%'};return _0xb4db74;}})});}_0x1b668a=_[_0x32ef('0x3e')]({},_0x1b668a,_0x31dbc3[_0x32ef('0x40')]);var _0x1733e3={'where':_0x1b668a[_0x32ef('0x3a')]};return db[_0x32ef('0x41')][_0x32ef('0x1c')](_0x1733e3)['then'](function(_0x538758){_0x1a122d[_0x32ef('0x1c')]=_0x538758;if(_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x42')]){_0x1b668a[_0x32ef('0x43')]=[{'all':!![]}];}return db['AnalyticDefaultReport'][_0x32ef('0x44')](_0x1b668a);})[_0x32ef('0x22')](function(_0x5d2f06){_0x1a122d[_0x32ef('0x45')]=_0x5d2f06;return _0x1a122d;})['then'](respondWithFilteredResult(_0x2ac686,_0x1b668a))[_0x32ef('0x46')](handleError(_0x2ac686,null));};exports[_0x32ef('0x47')]=function(_0x37a497,_0x3be46d){var _0x2c2b62={'raw':!![],'where':{'id':_0x37a497[_0x32ef('0x48')]['id']}},_0x2310ae={};_0x2310ae[_0x32ef('0x31')]=_[_0x32ef('0x49')](db[_0x32ef('0x41')]['rawAttributes']);_0x2310ae[_0x32ef('0x32')]=_['keys'](_0x37a497[_0x32ef('0x32')]);_0x2310ae[_0x32ef('0x3b')]=_[_0x32ef('0x33')](_0x2310ae['model'],_0x2310ae[_0x32ef('0x32')]);_0x2c2b62[_0x32ef('0x34')]=_[_0x32ef('0x33')](_0x2310ae[_0x32ef('0x31')],qs[_0x32ef('0x4a')](_0x37a497[_0x32ef('0x32')][_0x32ef('0x4a')]));_0x2c2b62['attributes']=_0x2c2b62['attributes'][_0x32ef('0x35')]?_0x2c2b62[_0x32ef('0x34')]:_0x2310ae[_0x32ef('0x31')];if(_0x37a497[_0x32ef('0x32')][_0x32ef('0x42')]){_0x2c2b62[_0x32ef('0x43')]=[{'all':!![]}];}_0x2c2b62=_[_0x32ef('0x3e')]({},_0x2c2b62,_0x37a497[_0x32ef('0x40')]);return db[_0x32ef('0x41')][_0x32ef('0x4b')](_0x2c2b62)[_0x32ef('0x22')](handleEntityNotFound(_0x3be46d,null))[_0x32ef('0x22')](respondWithResult(_0x3be46d,null))[_0x32ef('0x46')](handleError(_0x3be46d,null));};exports['create']=function(_0x420f00,_0x12fbd7){return db[_0x32ef('0x41')][_0x32ef('0x4c')](_0x420f00[_0x32ef('0x4d')],{})[_0x32ef('0x22')](function(_0x278696){var _0x1acded=_0x420f00[_0x32ef('0x4e')][_0x32ef('0x24')]({'plain':!![]});if(!_0x1acded)throw new Error(_0x32ef('0x4f'));if(_0x1acded[_0x32ef('0x50')]===_0x32ef('0x4e')){var _0x326445=_0x278696[_0x32ef('0x24')]({'plain':!![]});var _0x3fb4d8=_0x32ef('0x51');return db[_0x32ef('0x52')]['find']({'where':{'name':_0x3fb4d8,'userProfileId':_0x1acded['userProfileId']},'raw':!![]})[_0x32ef('0x22')](function(_0x259c32){if(_0x259c32&&_0x259c32[_0x32ef('0x53')]===0x0){return db[_0x32ef('0x26')][_0x32ef('0x4c')]({'name':_0x326445[_0x32ef('0x2a')],'resourceId':_0x326445['id'],'type':_0x32ef('0x25'),'sectionId':_0x259c32['id']},{})[_0x32ef('0x22')](function(){return _0x278696;});}else{return _0x278696;}})[_0x32ef('0x46')](function(_0x368bf1){logger[_0x32ef('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x368bf1);throw _0x368bf1;});}return _0x278696;})[_0x32ef('0x22')](respondWithResult(_0x12fbd7,0xc9))[_0x32ef('0x46')](handleError(_0x12fbd7,null));};exports[_0x32ef('0x54')]=function(_0x3fe01f,_0x38314a){if(_0x3fe01f[_0x32ef('0x4d')]['id']){delete _0x3fe01f['body']['id'];}return db[_0x32ef('0x41')][_0x32ef('0x4b')]({'where':{'id':_0x3fe01f[_0x32ef('0x48')]['id']}})['then'](handleEntityNotFound(_0x38314a,null))[_0x32ef('0x22')](saveUpdates(_0x3fe01f['body'],null))[_0x32ef('0x22')](respondWithResult(_0x38314a,null))[_0x32ef('0x46')](handleError(_0x38314a,null));};exports['destroy']=function(_0x206ad5,_0x59e5f9){return db[_0x32ef('0x41')][_0x32ef('0x4b')]({'where':{'id':_0x206ad5[_0x32ef('0x48')]['id']}})[_0x32ef('0x22')](handleEntityNotFound(_0x59e5f9,null))[_0x32ef('0x22')](removeEntity(_0x59e5f9,null))[_0x32ef('0x46')](handleError(_0x59e5f9,null));};exports[_0x32ef('0x55')]=function(_0x56260f,_0x56cc75){var _0xdfa103=0xa;var _0x52232a=['join',_0x32ef('0x56'),_0x32ef('0x57'),_0x32ef('0x58')];var _0x6aae59={'SUM':_0x32ef('0x59'),'COUNT':_0x32ef('0x5a'),'COUNT DISTINCT':_0x32ef('0x5b'),'MAX':_0x32ef('0x5c'),'MIN':_0x32ef('0x5d'),'AVG':_0x32ef('0x5e'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x32ef('0x5f')};var _0xbd059e={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x32ef('0x60'),'HOUR':_0x32ef('0x61'),'ROUND':_0x32ef('0x62'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x2ac877=function(_0x3c31d0){return!_[_0x32ef('0x63')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x32ef('0x64'),'IS\x20NOT\x20EMPTY'],_0x3c31d0);};var _0x17f447=function(_0x5bb114){if(!_0x5bb114||!_0x5bb114['rules'][_0x32ef('0x35')]){return'';}for(var _0x208989='(',_0x10cb37=0x0;_0x10cb37<_0x5bb114['rules'][_0x32ef('0x35')];_0x10cb37+=0x1){_0x10cb37>0x0&&(_0x208989+='\x20'+_0x5bb114[_0x32ef('0x65')]+'\x20');_0x208989+=_0x5bb114[_0x32ef('0x66')][_0x10cb37]['group']?_0x17f447(_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x67')]):_0x5bb114['rules'][_0x10cb37]['field']+'\x20'+_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x68')]+(_0x2ac877(_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x68')])?'\x20'+_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x69')]:'');}return _0x208989+')';};var _0x4c89e8={'where':{'id':_0x56260f[_0x32ef('0x48')]['id']}},_0x285330,_0x63b65,_0x25b6d6,_0x36ed97,_0x21e930;_0x4c89e8=_[_0x32ef('0x3e')]({},_0x4c89e8,_0x56260f[_0x32ef('0x40')]);return db[_0x32ef('0x41')]['find'](_0x4c89e8)[_0x32ef('0x22')](function(_0x29ff58){if(_0x29ff58){_0x285330=_0x29ff58;return _0x29ff58[_0x32ef('0x6a')]();}return null;})[_0x32ef('0x22')](function(_0x79ae28){if(_0x79ae28){if(!_0x79ae28['length']){throw new db['Sequelize'][(_0x32ef('0x6b'))](_0x32ef('0x6c'),0x193);}_0x63b65=_0x79ae28;return db[_0x32ef('0x6d')][_0x32ef('0x44')]({'raw':!![]});}return null;})[_0x32ef('0x22')](function(_0x526fb1){if(_0x526fb1){_0x25b6d6=_[_0x32ef('0x6e')](_0x526fb1,'id');var _0x544045;var _0x216e2f=squel[_0x32ef('0x6f')]();_0x216e2f['from'](_0x285330['table']);for(var _0x2c9f7a=0x0;_0x2c9f7a<_0x63b65[_0x32ef('0x35')];_0x2c9f7a+=0x1){_0x544045=_0x63b65[_0x2c9f7a][_0x32ef('0x70')]?_0x25b6d6[_0x63b65[_0x2c9f7a]['MetricId']]['metric']:_0x63b65[_0x2c9f7a][_0x32ef('0x71')];_0x544045=_0x63b65[_0x2c9f7a][_0x32ef('0x72')]?_[_0x32ef('0x73')](_0x6aae59[_0x63b65[_0x2c9f7a][_0x32ef('0x72')]],'%s',_0x544045):_0x544045;_0x544045=_0x63b65[_0x2c9f7a]['format']?_[_0x32ef('0x73')](_0xbd059e[_0x63b65[_0x2c9f7a][_0x32ef('0x74')]],'%s',_0x544045):_0x544045;if(_0x63b65[_0x2c9f7a][_0x32ef('0x75')]){_0x216e2f[_0x32ef('0x67')](_0x544045);}_0x63b65[_0x2c9f7a][_0x32ef('0x76')]&&_0x216e2f[_0x32ef('0x38')](_0x544045,_0x63b65[_0x2c9f7a][_0x32ef('0x76')]===_0x32ef('0x77')?![]:!![]);_0x216e2f[_0x32ef('0x71')](_0x544045,_0x63b65[_0x2c9f7a][_0x32ef('0x78')]||_0x544045);}if(_0x285330[_0x32ef('0x79')]){_0x285330[_0x32ef('0x79')]=JSON['parse'](_0x285330['joins']);for(var _0x3a9c97=0x0;_0x3a9c97<_0x285330[_0x32ef('0x79')]['length'];_0x3a9c97+=0x1){if(_0x285330[_0x32ef('0x79')][_0x3a9c97]['type']&&_[_0x32ef('0x63')](_0x52232a,_0x285330[_0x32ef('0x79')][_0x3a9c97][_0x32ef('0x2f')])&&_0x285330['joins'][_0x3a9c97][_0x32ef('0x7a')]&&_0x285330['joins'][_0x3a9c97][_0x32ef('0x7b')]&&_0x285330[_0x32ef('0x79')][_0x3a9c97]['foreignKey']){_0x216e2f[_0x285330['joins'][_0x3a9c97][_0x32ef('0x2f')]](_0x285330['joins'][_0x3a9c97][_0x32ef('0x7b')],null,util['format'](_0x32ef('0x7c'),_0x285330[_0x32ef('0x7d')],_0x285330[_0x32ef('0x79')][_0x3a9c97]['parentKey'],_0x285330['joins'][_0x3a9c97]['foreignTable'],_0x285330[_0x32ef('0x79')][_0x3a9c97]['foreignKey']));}}}if(_0x285330[_0x32ef('0x7e')]){_0x285330[_0x32ef('0x7e')]=JSON[_0x32ef('0x7f')](_0x285330[_0x32ef('0x7e')]);_0x216e2f[_0x32ef('0x3a')](_0x17f447(_0x285330[_0x32ef('0x7e')]['group']));}_0x21e930=_0x216e2f[_0x32ef('0x80')]();_0x216e2f['limit'](_0xdfa103);_0x216e2f['offset'](0x0);logger[_0x32ef('0x81')]('Limited\x20Query:',_0x216e2f[_0x32ef('0x82')]());return dbH[_0x32ef('0x83')]['query'](_0x216e2f[_0x32ef('0x82')](),{'type':dbH[_0x32ef('0x83')][_0x32ef('0x84')][_0x32ef('0x85')]});}})[_0x32ef('0x22')](respondWithResult(_0x56cc75,null))[_0x32ef('0x46')](handleError(_0x56cc75,null));};function runReport(_0x4b5506,_0x51736f,_0x35b10d){var _0x5e0b55=_0x51736f[_0x32ef('0x2a')];var _0x266688=0xa;var _0x114d8e=[_0x32ef('0x86'),_0x32ef('0x56'),_0x32ef('0x57'),'cross_join'];var _0x3232ca={'SUM':_0x32ef('0x59'),'COUNT':_0x32ef('0x5a'),'COUNT DISTINCT':_0x32ef('0x5b'),'MAX':_0x32ef('0x5c'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x32ef('0x87'),'GROUP_CONCAT ASC':_0x32ef('0x88'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x211fb1={'SEC_TO_TIME':_0x32ef('0x89'),'DATE':_0x32ef('0x60'),'HOUR':_0x32ef('0x61'),'ROUND':_0x32ef('0x62'),'UNIX_TIMESTAMP':_0x32ef('0x8a')};var _0xfb4845=function(_0x21067e){return!_[_0x32ef('0x63')](['IS\x20NULL',_0x32ef('0x8b'),_0x32ef('0x64'),'IS\x20NOT\x20EMPTY'],_0x21067e);};var _0x35653b=function(_0x5ea727){if(!_0x5ea727||!_0x5ea727[_0x32ef('0x66')]['length']){return'';}for(var _0x43f36e='(',_0x39300f=0x0;_0x39300f<_0x5ea727[_0x32ef('0x66')][_0x32ef('0x35')];_0x39300f+=0x1){_0x39300f>0x0&&(_0x43f36e+='\x20'+_0x5ea727['operator']+'\x20');_0x43f36e+=_0x5ea727[_0x32ef('0x66')][_0x39300f][_0x32ef('0x67')]?_0x35653b(_0x5ea727[_0x32ef('0x66')][_0x39300f]['group']):_0x5ea727['rules'][_0x39300f]['field']+'\x20'+_0x5ea727[_0x32ef('0x66')][_0x39300f][_0x32ef('0x68')]+(_0xfb4845(_0x5ea727[_0x32ef('0x66')][_0x39300f][_0x32ef('0x68')])?'\x20'+_0x5ea727[_0x32ef('0x66')][_0x39300f]['value']:'');}return _0x43f36e+')';};var _0x2678e3={'where':{'id':_0x4b5506['id']}},_0x5b3deb,_0x471de6,_0x7b0ea5,_0xc43e1,_0x4baa7a;_0x2678e3=_[_0x32ef('0x3e')]({},_0x2678e3,_0x35b10d);return db[_0x32ef('0x41')][_0x32ef('0x4b')](_0x2678e3)[_0x32ef('0x22')](function(_0x28bebb){if(_0x28bebb){_0x5b3deb=_0x28bebb;return _0x28bebb['getFields']();}return null;})[_0x32ef('0x22')](function(_0x484df0){if(_0x484df0){if(!_0x484df0[_0x32ef('0x35')]){throw new db[(_0x32ef('0x8c'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x471de6=_0x484df0;return db[_0x32ef('0x6d')][_0x32ef('0x44')]({'raw':!![]});}return null;})[_0x32ef('0x22')](function(_0x3b9896){if(_0x3b9896){_0x7b0ea5=_['keyBy'](_0x3b9896,'id');var _0x356fd4;var _0x51ca6e=squel['select']();_0x51ca6e[_0x32ef('0x8d')](_0x5b3deb['table']);for(var _0x2237cf=0x0;_0x2237cf<_0x471de6[_0x32ef('0x35')];_0x2237cf+=0x1){_0x356fd4=_0x471de6[_0x2237cf][_0x32ef('0x70')]?_0x7b0ea5[_0x471de6[_0x2237cf]['MetricId']]['metric']:_0x471de6[_0x2237cf][_0x32ef('0x71')];_0x356fd4=_0x471de6[_0x2237cf][_0x32ef('0x72')]?_[_0x32ef('0x73')](_0x3232ca[_0x471de6[_0x2237cf][_0x32ef('0x72')]],'%s',_0x356fd4):_0x356fd4;_0x356fd4=_0x471de6[_0x2237cf][_0x32ef('0x74')]?_[_0x32ef('0x73')](_0x211fb1[_0x471de6[_0x2237cf][_0x32ef('0x74')]],'%s',_0x356fd4):_0x356fd4;if(_0x471de6[_0x2237cf]['groupBy']){_0x51ca6e[_0x32ef('0x67')](_0x356fd4);}_0x471de6[_0x2237cf][_0x32ef('0x76')]&&_0x51ca6e[_0x32ef('0x38')](_0x356fd4,_0x471de6[_0x2237cf][_0x32ef('0x76')]==='DESC'?![]:!![]);_0x51ca6e['field'](_0x356fd4,_0x471de6[_0x2237cf][_0x32ef('0x78')]||_0x356fd4);}if(_0x5b3deb['joins']){_0x5b3deb[_0x32ef('0x79')]=JSON[_0x32ef('0x7f')](_0x5b3deb['joins']);for(var _0x5c7594=0x0;_0x5c7594<_0x5b3deb['joins'][_0x32ef('0x35')];_0x5c7594+=0x1){if(_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x2f')]&&_[_0x32ef('0x63')](_0x114d8e,_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x2f')])&&_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x7a')]&&_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x7b')]&&_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x8e')]){_0x51ca6e[_0x5b3deb[_0x32ef('0x79')][_0x5c7594]['type']](_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x7b')],null,util[_0x32ef('0x74')](_0x32ef('0x7c'),_0x5b3deb[_0x32ef('0x7d')],_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x7a')],_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x7b')],_0x5b3deb[_0x32ef('0x79')][_0x5c7594]['foreignKey']));}}}if(_0x5b3deb[_0x32ef('0x7e')]){_0x5b3deb['conditions']=JSON[_0x32ef('0x7f')](_0x5b3deb[_0x32ef('0x7e')]);_0x51ca6e[_0x32ef('0x3a')](_0x35653b(_0x5b3deb[_0x32ef('0x7e')][_0x32ef('0x67')]));}_0x4baa7a=_0x51ca6e['clone']();_0x51ca6e[_0x32ef('0x1d')](_0x266688);_0x51ca6e[_0x32ef('0x1a')](0x0);return;}})[_0x32ef('0x22')](function(){if(_0x51736f[_0x32ef('0x8f')]===_0x32ef('0x90')){return null;}var _0x1cfdd8=_[_0x32ef('0x3e')](_0x51736f,{'name':_0x51736f[_0x32ef('0x91')]||_0x51736f[_0x32ef('0x2a')]||_0x5b3deb['name'],'basename':_0x5e0b55,'savename':util['format']('%s-%s.%s',_0x51736f[_0x32ef('0x2a')]||_0x5b3deb[_0x32ef('0x2a')],require('randomstring')[_0x32ef('0x92')](0x4),_0x51736f['output']||_0x32ef('0x93')),'reportId':_0x5b3deb['id'],'reportType':'default'});return db['AnalyticExtractedReport'][_0x32ef('0x4c')](_0x1cfdd8,{'raw':!![]});})[_0x32ef('0x22')](function(_0x118d2e){if(_0x5b3deb[_0x32ef('0x7d')]===_0x32ef('0x94')){_0x4baa7a['where'](_0x5b3deb[_0x32ef('0x7d')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x51736f[_0x32ef('0x95')],_0x51736f['endDate']);}else{_0x4baa7a['where'](_0x5b3deb['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x51736f['startDate'],_0x51736f[_0x32ef('0x96')]);}if(_0x118d2e){logger[_0x32ef('0x97')]('Run\x20Query:',_0x4baa7a[_0x32ef('0x82')]());require(_0x32ef('0x98'))[_0x32ef('0x99')](path[_0x32ef('0x86')](__dirname,_0x32ef('0x9a'),_0x118d2e[_0x32ef('0x8f')]),[_0x118d2e['id'],_0x4baa7a['toString'](),path[_0x32ef('0x86')](__dirname,'../../files/reports',_0x118d2e[_0x32ef('0x9b')]),_0x5e0b55]);return _0x118d2e;}else{var _0x1be713=squel['select']();_0x1be713[_0x32ef('0x8d')]('('+_0x4baa7a['toString']()+')',_0x32ef('0x9c'));_0x1be713[_0x32ef('0x71')](_0x32ef('0x9d'),_0x32ef('0x1c'));_0x4baa7a['limit'](_0x51736f[_0x32ef('0x1d')]||_0x266688);_0x4baa7a[_0x32ef('0x1a')](_0x51736f[_0x32ef('0x1a')]||0x0);return dbH[_0x32ef('0x83')]['query'](_0x1be713[_0x32ef('0x82')](),{'type':dbH['sequelize'][_0x32ef('0x84')][_0x32ef('0x85')]})[_0x32ef('0x22')](function(_0x28ef17){if(!_0x28ef17[_0x32ef('0x35')]){_0xc43e1=0x0;}else{_0xc43e1=_0x28ef17[0x0][_0x32ef('0x1c')]||0x0;}return dbH['sequelize'][_0x32ef('0x32')](_0x4baa7a['toString'](),{'type':dbH['sequelize'][_0x32ef('0x84')][_0x32ef('0x85')]});})[_0x32ef('0x22')](function(_0x3956e7){return{'rows':_0x3956e7||[],'count':_0xc43e1};});}});}exports['run']=function(_0x8d3b24,_0x642716){return runReport(_0x8d3b24[_0x32ef('0x48')],_0x8d3b24[_0x32ef('0x32')],_0x8d3b24['options'])['then'](respondWithResult(_0x642716,null))['catch'](handleError(_0x642716,null));};exports[_0x32ef('0x9e')]=runReport;exports[_0x32ef('0x32')]=function(_0x4454f3,_0xc92dcc){var _0x3d18b9=0xa;var _0x9233cb=[_0x32ef('0x86'),_0x32ef('0x56'),_0x32ef('0x57'),_0x32ef('0x58')];var _0xa76912={'SUM':'SUM(%s)','COUNT':_0x32ef('0x5a'),'COUNT DISTINCT':_0x32ef('0x5b'),'MAX':_0x32ef('0x5c'),'MIN':_0x32ef('0x5d'),'AVG':_0x32ef('0x5e'),'GROUP_CONCAT':_0x32ef('0x87'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x32ef('0x5f')};var _0x1526a1={'SEC_TO_TIME':_0x32ef('0x89'),'DATE':_0x32ef('0x60'),'HOUR':_0x32ef('0x61'),'ROUND':_0x32ef('0x62'),'UNIX_TIMESTAMP':_0x32ef('0x8a')};var _0x2d4d2f=function(_0x292488){return!_[_0x32ef('0x63')]([_0x32ef('0x9f'),_0x32ef('0x8b'),_0x32ef('0x64'),_0x32ef('0xa0')],_0x292488);};var _0x50b674=function(_0x379d40){if(!_0x379d40||!_0x379d40[_0x32ef('0x66')][_0x32ef('0x35')]){return'';}for(var _0x4b7a4d='(',_0x16525b=0x0;_0x16525b<_0x379d40['rules'][_0x32ef('0x35')];_0x16525b+=0x1){_0x16525b>0x0&&(_0x4b7a4d+='\x20'+_0x379d40[_0x32ef('0x65')]+'\x20');_0x4b7a4d+=_0x379d40[_0x32ef('0x66')][_0x16525b]['group']?_0x50b674(_0x379d40[_0x32ef('0x66')][_0x16525b]['group']):_0x379d40[_0x32ef('0x66')][_0x16525b][_0x32ef('0x71')]+'\x20'+_0x379d40['rules'][_0x16525b][_0x32ef('0x68')]+(_0x2d4d2f(_0x379d40[_0x32ef('0x66')][_0x16525b][_0x32ef('0x68')])?'\x20'+_0x379d40[_0x32ef('0x66')][_0x16525b][_0x32ef('0x69')]:'');}return _0x4b7a4d+')';};var _0x264075={'where':{'id':_0x4454f3[_0x32ef('0x48')]['id']}},_0x3798d1,_0x4befa9,_0x493ae9,_0x143d39,_0x497948;_0x264075=_[_0x32ef('0x3e')]({},_0x264075,_0x4454f3['options']);return db[_0x32ef('0x41')][_0x32ef('0x4b')](_0x264075)['then'](function(_0x1200c9){if(_0x1200c9){_0x3798d1=_0x1200c9;return _0x1200c9[_0x32ef('0x6a')]();}return null;})[_0x32ef('0x22')](function(_0xa5f787){if(_0xa5f787){if(!_0xa5f787[_0x32ef('0x35')]){throw new db['Sequelize'][(_0x32ef('0x6b'))](_0x32ef('0x6c'),0x193);}_0x4befa9=_0xa5f787;return db['AnalyticMetric'][_0x32ef('0x44')]({'raw':!![]});}return null;})[_0x32ef('0x22')](function(_0x55ad11){if(_0x55ad11){_0x493ae9=_[_0x32ef('0x6e')](_0x55ad11,'id');var _0x2971a8;var _0x522c22=squel[_0x32ef('0x6f')]();_0x522c22[_0x32ef('0x8d')](_0x3798d1['table']);for(var _0xb41a01=0x0;_0xb41a01<_0x4befa9[_0x32ef('0x35')];_0xb41a01+=0x1){_0x2971a8=_0x4befa9[_0xb41a01][_0x32ef('0x70')]?_0x493ae9[_0x4befa9[_0xb41a01][_0x32ef('0x70')]][_0x32ef('0xa1')]:_0x4befa9[_0xb41a01][_0x32ef('0x71')];_0x2971a8=_0x4befa9[_0xb41a01][_0x32ef('0x72')]?_['replace'](_0xa76912[_0x4befa9[_0xb41a01]['function']],'%s',_0x2971a8):_0x2971a8;_0x2971a8=_0x4befa9[_0xb41a01][_0x32ef('0x74')]?_[_0x32ef('0x73')](_0x1526a1[_0x4befa9[_0xb41a01][_0x32ef('0x74')]],'%s',_0x2971a8):_0x2971a8;if(_0x4befa9[_0xb41a01]['groupBy']){_0x522c22[_0x32ef('0x67')](_0x2971a8);}_0x4befa9[_0xb41a01][_0x32ef('0x76')]&&_0x522c22['order'](_0x2971a8,_0x4befa9[_0xb41a01][_0x32ef('0x76')]===_0x32ef('0x77')?![]:!![]);_0x522c22['field'](_0x2971a8,_0x4befa9[_0xb41a01]['alias']||_0x2971a8);}if(_0x3798d1[_0x32ef('0x79')]){_0x3798d1[_0x32ef('0x79')]=JSON[_0x32ef('0x7f')](_0x3798d1['joins']);for(var _0x5f4eab=0x0;_0x5f4eab<_0x3798d1['joins'][_0x32ef('0x35')];_0x5f4eab+=0x1){if(_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x2f')]&&_['includes'](_0x9233cb,_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x2f')])&&_0x3798d1[_0x32ef('0x79')][_0x5f4eab]['parentKey']&&_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x7b')]&&_0x3798d1['joins'][_0x5f4eab]['foreignKey']){_0x522c22[_0x3798d1[_0x32ef('0x79')][_0x5f4eab]['type']](_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x7b')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3798d1[_0x32ef('0x7d')],_0x3798d1['joins'][_0x5f4eab][_0x32ef('0x7a')],_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x7b')],_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x8e')]));}}}if(_0x3798d1[_0x32ef('0x7e')]){_0x3798d1[_0x32ef('0x7e')]=JSON[_0x32ef('0x7f')](_0x3798d1[_0x32ef('0x7e')]);_0x522c22[_0x32ef('0x3a')](_0x50b674(_0x3798d1['conditions']['group']));}_0x497948=_0x522c22[_0x32ef('0x80')]();_0x522c22[_0x32ef('0x1d')](_0x3d18b9);_0x522c22[_0x32ef('0x1a')](0x0);logger[_0x32ef('0x81')](_0x32ef('0xa2'),_0x522c22[_0x32ef('0x82')]());return dbH[_0x32ef('0x83')][_0x32ef('0x32')](_0x522c22[_0x32ef('0x82')](),{'type':dbH[_0x32ef('0x83')]['QueryTypes'][_0x32ef('0x85')]});}})[_0x32ef('0x22')](function(){return{'sql':_0x497948[_0x32ef('0x82')]()};})[_0x32ef('0x22')](respondWithResult(_0xc92dcc,null))[_0x32ef('0x46')](handleError(_0xc92dcc,null));};
\ No newline at end of file
index a81ee59..6548e83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe384=['util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','define','AnalyticDefaultReport','analytics_default_reports','lodash'];(function(_0x12ca5f,_0x223d98){var _0xfc3ae9=function(_0x1928fb){while(--_0x1928fb){_0x12ca5f['push'](_0x12ca5f['shift']());}};_0xfc3ae9(++_0x223d98);}(_0xe384,0x99));var _0x4e38=function(_0x4889aa,_0x267b77){_0x4889aa=_0x4889aa-0x0;var _0x124cbc=_0xe384[_0x4889aa];return _0x124cbc;};'use strict';var _=require(_0x4e38('0x0'));var util=require(_0x4e38('0x1'));var logger=require(_0x4e38('0x2'))(_0x4e38('0x3'));var moment=require(_0x4e38('0x4'));var BPromise=require(_0x4e38('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4e38('0x6'));var config=require(_0x4e38('0x7'));var attributes=require('./analyticDefaultReport.attributes');module['exports']=function(_0x1edccc,_0x192896){return _0x1edccc[_0x4e38('0x8')](_0x4e38('0x9'),attributes,{'tableName':_0x4e38('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5dd7=['AnalyticDefaultReport','analytics_default_reports','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define'];(function(_0x130115,_0x378ef7){var _0xbe54e3=function(_0x42c5a9){while(--_0x42c5a9){_0x130115['push'](_0x130115['shift']());}};_0xbe54e3(++_0x378ef7);}(_0x5dd7,0x12d));var _0x75dd=function(_0x10d82a,_0x52826f){_0x10d82a=_0x10d82a-0x0;var _0xbf88b4=_0x5dd7[_0x10d82a];return _0xbf88b4;};'use strict';var _=require('lodash');var util=require(_0x75dd('0x0'));var logger=require(_0x75dd('0x1'))(_0x75dd('0x2'));var moment=require(_0x75dd('0x3'));var BPromise=require(_0x75dd('0x4'));var rp=require(_0x75dd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x75dd('0x6'));var config=require(_0x75dd('0x7'));var attributes=require(_0x75dd('0x8'));module[_0x75dd('0x9')]=function(_0x441d63,_0x210394){return _0x441d63[_0x75dd('0xa')](_0x75dd('0xb'),attributes,{'tableName':_0x75dd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ca78aac..8a7acef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e6d=['AnalyticDefaultReport,\x20%s,\x20%s','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x90d183,_0x2c06de){var _0x41fbb8=function(_0x1d4786){while(--_0x1d4786){_0x90d183['push'](_0x90d183['shift']());}};_0x41fbb8(++_0x2c06de);}(_0x2e6d,0xbb));var _0xd2e6=function(_0x7c257c,_0x26bd82){_0x7c257c=_0x7c257c-0x0;var _0x249fda=_0x2e6d[_0x7c257c];return _0x249fda;};'use strict';var _=require(_0xd2e6('0x0'));var util=require(_0xd2e6('0x1'));var moment=require('moment');var BPromise=require(_0xd2e6('0x2'));var rs=require(_0xd2e6('0x3'));var fs=require('fs');var Redis=require(_0xd2e6('0x4'));var db=require(_0xd2e6('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd2e6('0x6'))(_0xd2e6('0x7'));var config=require(_0xd2e6('0x8'));var jayson=require(_0xd2e6('0x9'));var client=jayson[_0xd2e6('0xa')][_0xd2e6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1011af,_0x453c0a,_0x1c82f7){return new BPromise(function(_0x1e3524,_0x1004e0){return client[_0xd2e6('0xc')](_0x1011af,_0x1c82f7)[_0xd2e6('0xd')](function(_0x2084df){logger['info']('AnalyticDefaultReport,\x20%s,\x20%s',_0x453c0a,'request\x20sent');logger[_0xd2e6('0xe')](_0xd2e6('0xf'),_0x453c0a,_0xd2e6('0x10'),JSON[_0xd2e6('0x11')](_0x2084df));if(_0x2084df[_0xd2e6('0x12')]){if(_0x2084df[_0xd2e6('0x12')][_0xd2e6('0x13')]===0x1f4){logger[_0xd2e6('0x12')](_0xd2e6('0x14'),_0x453c0a,_0x2084df[_0xd2e6('0x12')]['message']);return _0x1004e0(_0x2084df[_0xd2e6('0x12')][_0xd2e6('0x15')]);}logger[_0xd2e6('0x12')](_0xd2e6('0x14'),_0x453c0a,_0x2084df['error'][_0xd2e6('0x15')]);return _0x1e3524(_0x2084df['error']['message']);}else{logger['info'](_0xd2e6('0x14'),_0x453c0a,_0xd2e6('0x10'));_0x1e3524(_0x2084df['result']['message']);}})[_0xd2e6('0x16')](function(_0x3a1137){logger[_0xd2e6('0x12')](_0xd2e6('0x14'),_0x453c0a,_0x3a1137);_0x1004e0(_0x3a1137);});});}
\ No newline at end of file
+var _0x9e52=['then','info','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','AnalyticDefaultReport,\x20%s,\x20%s','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request'];(function(_0x1ac2e4,_0x5ecca1){var _0x1d383d=function(_0x35f103){while(--_0x35f103){_0x1ac2e4['push'](_0x1ac2e4['shift']());}};_0x1d383d(++_0x5ecca1);}(_0x9e52,0xa4));var _0x29e5=function(_0xe2ab78,_0xa179a4){_0xe2ab78=_0xe2ab78-0x0;var _0x24f799=_0x9e52[_0xe2ab78];return _0x24f799;};'use strict';var _=require(_0x29e5('0x0'));var util=require(_0x29e5('0x1'));var moment=require(_0x29e5('0x2'));var BPromise=require(_0x29e5('0x3'));var rs=require(_0x29e5('0x4'));var fs=require('fs');var Redis=require(_0x29e5('0x5'));var db=require(_0x29e5('0x6'))['db'];var utils=require(_0x29e5('0x7'));var logger=require('../../config/logger')(_0x29e5('0x8'));var config=require('../../config/environment');var jayson=require(_0x29e5('0x9'));var client=jayson[_0x29e5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e767b,_0x2e7fb3,_0x543c82){return new BPromise(function(_0x5e1306,_0x1f2993){return client[_0x29e5('0xb')](_0x4e767b,_0x543c82)[_0x29e5('0xc')](function(_0x560fe5){logger[_0x29e5('0xd')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x2e7fb3,'request\x20sent');logger[_0x29e5('0xe')](_0x29e5('0xf'),_0x2e7fb3,_0x29e5('0x10'),JSON[_0x29e5('0x11')](_0x560fe5));if(_0x560fe5[_0x29e5('0x12')]){if(_0x560fe5['error'][_0x29e5('0x13')]===0x1f4){logger[_0x29e5('0x12')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x2e7fb3,_0x560fe5['error'][_0x29e5('0x14')]);return _0x1f2993(_0x560fe5[_0x29e5('0x12')]['message']);}logger[_0x29e5('0x12')](_0x29e5('0x15'),_0x2e7fb3,_0x560fe5[_0x29e5('0x12')][_0x29e5('0x14')]);return _0x5e1306(_0x560fe5[_0x29e5('0x12')][_0x29e5('0x14')]);}else{logger[_0x29e5('0xd')](_0x29e5('0x15'),_0x2e7fb3,_0x29e5('0x10'));_0x5e1306(_0x560fe5['result'][_0x29e5('0x14')]);}})['catch'](function(_0x1b14e2){logger['error'](_0x29e5('0x15'),_0x2e7fb3,_0x1b14e2);_0x1f2993(_0x1b14e2);});});}
\ No newline at end of file
index 414c3f1..bc8ba59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb6d=['isAuthenticated','index','/:id','show','/:id/preview','preview','/:id/run','run','/:id/query','post','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../config/environment','get'];(function(_0x41daeb,_0x3f138d){var _0x5b142d=function(_0x195224){while(--_0x195224){_0x41daeb['push'](_0x41daeb['shift']());}};_0x5b142d(++_0x3f138d);}(_0xbb6d,0x168));var _0xdbb6=function(_0x434ee7,_0x1baf42){_0x434ee7=_0x434ee7-0x0;var _0x184f6b=_0xbb6d[_0x434ee7];return _0x184f6b;};'use strict';var multer=require(_0xdbb6('0x0'));var util=require(_0xdbb6('0x1'));var path=require(_0xdbb6('0x2'));var timeout=require('connect-timeout');var express=require(_0xdbb6('0x3'));var router=express[_0xdbb6('0x4')]();var fs_extra=require(_0xdbb6('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xdbb6('0x6'));var controller=require('./analyticDefaultReport.controller');router[_0xdbb6('0x7')]('/',auth[_0xdbb6('0x8')](),controller[_0xdbb6('0x9')]);router[_0xdbb6('0x7')](_0xdbb6('0xa'),auth['isAuthenticated'](),controller[_0xdbb6('0xb')]);router['get'](_0xdbb6('0xc'),auth[_0xdbb6('0x8')](),controller[_0xdbb6('0xd')]);router[_0xdbb6('0x7')](_0xdbb6('0xe'),auth[_0xdbb6('0x8')](),controller[_0xdbb6('0xf')]);router[_0xdbb6('0x7')](_0xdbb6('0x10'),auth[_0xdbb6('0x8')](),controller['query']);router[_0xdbb6('0x11')]('/',auth[_0xdbb6('0x8')](),controller['create']);router[_0xdbb6('0x12')](_0xdbb6('0xa'),auth[_0xdbb6('0x8')](),controller[_0xdbb6('0x13')]);router[_0xdbb6('0x14')](_0xdbb6('0xa'),auth[_0xdbb6('0x8')](),controller[_0xdbb6('0x15')]);module[_0xdbb6('0x16')]=router;
\ No newline at end of file
+var _0xf2d8=['multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','show','preview','run','/:id/query','post','create','put','update','delete','destroy','exports'];(function(_0x10df18,_0x13338c){var _0x1f9a1d=function(_0x3157f4){while(--_0x3157f4){_0x10df18['push'](_0x10df18['shift']());}};_0x1f9a1d(++_0x13338c);}(_0xf2d8,0xe6));var _0x8f2d=function(_0x8956db,_0x565a5f){_0x8956db=_0x8956db-0x0;var _0x175a41=_0xf2d8[_0x8956db];return _0x175a41;};'use strict';var multer=require(_0x8f2d('0x0'));var util=require(_0x8f2d('0x1'));var path=require(_0x8f2d('0x2'));var timeout=require(_0x8f2d('0x3'));var express=require(_0x8f2d('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8f2d('0x5'));var config=require(_0x8f2d('0x6'));var controller=require(_0x8f2d('0x7'));router[_0x8f2d('0x8')]('/',auth[_0x8f2d('0x9')](),controller[_0x8f2d('0xa')]);router[_0x8f2d('0x8')](_0x8f2d('0xb'),auth[_0x8f2d('0x9')](),controller[_0x8f2d('0xc')]);router['get']('/:id/preview',auth[_0x8f2d('0x9')](),controller[_0x8f2d('0xd')]);router[_0x8f2d('0x8')]('/:id/run',auth[_0x8f2d('0x9')](),controller[_0x8f2d('0xe')]);router[_0x8f2d('0x8')](_0x8f2d('0xf'),auth[_0x8f2d('0x9')](),controller['query']);router[_0x8f2d('0x10')]('/',auth[_0x8f2d('0x9')](),controller[_0x8f2d('0x11')]);router[_0x8f2d('0x12')](_0x8f2d('0xb'),auth[_0x8f2d('0x9')](),controller[_0x8f2d('0x13')]);router[_0x8f2d('0x14')]('/:id',auth[_0x8f2d('0x9')](),controller[_0x8f2d('0x15')]);module[_0x8f2d('0x16')]=router;
\ No newline at end of file
index c1f3f5d..d271aa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e09=['ENUM','csv','DATE','Loading','manual','sequelize','exports','STRING'];(function(_0x2114e3,_0x2c3028){var _0x6bff25=function(_0x197a39){while(--_0x197a39){_0x2114e3['push'](_0x2114e3['shift']());}};_0x6bff25(++_0x2c3028);}(_0x0e09,0x115));var _0x90e0=function(_0x195ce8,_0x370bbb){_0x195ce8=_0x195ce8-0x0;var _0x5f00eb=_0x0e09[_0x195ce8];return _0x5f00eb;};'use strict';var Sequelize=require(_0x90e0('0x0'));var moment=require('moment');module[_0x90e0('0x1')]={'name':{'type':Sequelize[_0x90e0('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x90e0('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x90e0('0x3')](_0x90e0('0x4'),'pdf','xlsx'),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0x90e0('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x90e0('0x5')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0x90e0('0x2')],'defaultValue':_0x90e0('0x6')},'type':{'type':Sequelize[_0x90e0('0x3')](_0x90e0('0x7'),'scheduled'),'allowNull':![],'defaultValue':_0x90e0('0x7')},'reportId':{'type':Sequelize['INTEGER'](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0x90e0('0x2')]}};
\ No newline at end of file
+var _0x7c04=['ENUM','csv','pdf','DATE','manual','scheduled','INTEGER','UNSIGNED','sequelize','exports','STRING'];(function(_0x4eb90e,_0x5b9abe){var _0x3bdc59=function(_0x3d8d30){while(--_0x3d8d30){_0x4eb90e['push'](_0x4eb90e['shift']());}};_0x3bdc59(++_0x5b9abe);}(_0x7c04,0x131));var _0x47c0=function(_0x36ca2e,_0x16388c){_0x36ca2e=_0x36ca2e-0x0;var _0x4ad5c5=_0x7c04[_0x36ca2e];return _0x4ad5c5;};'use strict';var Sequelize=require(_0x47c0('0x0'));var moment=require('moment');module[_0x47c0('0x1')]={'name':{'type':Sequelize[_0x47c0('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x47c0('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x47c0('0x3')](_0x47c0('0x4'),_0x47c0('0x5'),'xlsx'),'allowNull':![],'defaultValue':_0x47c0('0x4')},'savename':{'type':Sequelize[_0x47c0('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x47c0('0x6')]},'endDate':{'type':Sequelize[_0x47c0('0x6')]},'status':{'type':Sequelize[_0x47c0('0x2')],'defaultValue':'Loading'},'type':{'type':Sequelize[_0x47c0('0x3')](_0x47c0('0x7'),_0x47c0('0x8')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x47c0('0x9')](0xb)[_0x47c0('0xa')]},'reportType':{'type':Sequelize[_0x47c0('0x2')]}};
\ No newline at end of file
index 13a5a4c..87add18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b8b=['apply','reject','save','update','then','get','ExtractedReports','UserProfileResource','destroy','end','name','send','index','map','AnalyticExtractedReport','rawAttributes','type','key','model','keys','filters','intersection','query','attributes','fields','length','nolimit','order','where','pick','filter','VIRTUAL','options','include','findAll','rows','show','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','body','params','basename','savename','output','existsSync','join','root','server/files/reports','Sequelize','ValidationError','download','format','%s.%s','toLowerCase','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','undefined','count','offset','limit','status','set','Content-Range'];(function(_0x32320a,_0x5b9b6f){var _0x505d3e=function(_0x4efb9c){while(--_0x4efb9c){_0x32320a['push'](_0x32320a['shift']());}};_0x505d3e(++_0x5b9b6f);}(_0x2b8b,0x160));var _0xb2b8=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x2b8b[_0x465a0c];return _0x1e202e;};'use strict';var emlformat=require(_0xb2b8('0x0'));var rimraf=require(_0xb2b8('0x1'));var zipdir=require(_0xb2b8('0x2'));var jsonpatch=require(_0xb2b8('0x3'));var rp=require(_0xb2b8('0x4'));var moment=require(_0xb2b8('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb2b8('0x6'));var util=require(_0xb2b8('0x7'));var path=require(_0xb2b8('0x8'));var sox=require(_0xb2b8('0x9'));var csv=require(_0xb2b8('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb2b8('0xb'));var _=require(_0xb2b8('0xc'));var squel=require(_0xb2b8('0xd'));var crypto=require(_0xb2b8('0xe'));var jsforce=require(_0xb2b8('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xb2b8('0xa'));var querystring=require(_0xb2b8('0x10'));var Papa=require(_0xb2b8('0x11'));var Redis=require(_0xb2b8('0x12'));var authService=require(_0xb2b8('0x13'));var qs=require(_0xb2b8('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb2b8('0x15'));var logger=require(_0xb2b8('0x16'))(_0xb2b8('0x17'));var utils=require(_0xb2b8('0x18'));var config=require(_0xb2b8('0x19'));var licenseUtil=require(_0xb2b8('0x1a'));var db=require(_0xb2b8('0x1b'))['db'];function respondWithStatusCode(_0x13c388,_0x3867ad){_0x3867ad=_0x3867ad||0xcc;return function(_0x1ebfa9){if(_0x1ebfa9){return _0x13c388[_0xb2b8('0x1c')](_0x3867ad);}return _0x13c388['status'](_0x3867ad)['end']();};}function respondWithResult(_0x1594b4,_0x979ab7){_0x979ab7=_0x979ab7||0xc8;return function(_0x2d6646){if(_0x2d6646){return _0x1594b4['status'](_0x979ab7)['json'](_0x2d6646);}};}function respondWithFilteredResult(_0x464cde,_0x307960){return function(_0x9e3927){if(_0x9e3927){var _0x536cb4=typeof _0x307960['offset']===_0xb2b8('0x1d')&&typeof _0x307960['limit']===_0xb2b8('0x1d');var _0x3c1e6c=_0x9e3927[_0xb2b8('0x1e')];var _0x1beba6=_0x536cb4?0x0:_0x307960[_0xb2b8('0x1f')];var _0x10cde5=_0x536cb4?_0x9e3927[_0xb2b8('0x1e')]:_0x307960[_0xb2b8('0x1f')]+_0x307960[_0xb2b8('0x20')];var _0x1b61f6;if(_0x10cde5>=_0x3c1e6c){_0x10cde5=_0x3c1e6c;_0x1b61f6=0xc8;}else{_0x1b61f6=0xce;}_0x464cde[_0xb2b8('0x21')](_0x1b61f6);return _0x464cde[_0xb2b8('0x22')](_0xb2b8('0x23'),_0x1beba6+'-'+_0x10cde5+'/'+_0x3c1e6c)['json'](_0x9e3927);}return null;};}function patchUpdates(_0x5935ba){return function(_0x276d09){try{jsonpatch[_0xb2b8('0x24')](_0x276d09,_0x5935ba,!![]);}catch(_0x178fd6){return BPromise[_0xb2b8('0x25')](_0x178fd6);}return _0x276d09[_0xb2b8('0x26')]();};}function saveUpdates(_0x1e66fd,_0x1ea699){return function(_0x1f3197){if(_0x1f3197){return _0x1f3197[_0xb2b8('0x27')](_0x1e66fd)['then'](function(_0xf3370d){return _0xf3370d;});}return null;};}function removeEntity(_0x420d74,_0x5c213e){return function(_0x5ee39d){if(_0x5ee39d){return _0x5ee39d['destroy']()[_0xb2b8('0x28')](function(){var _0x43b94b=_0x5ee39d[_0xb2b8('0x29')]({'plain':!![]});var _0xcdda1b=_0xb2b8('0x2a');return db[_0xb2b8('0x2b')][_0xb2b8('0x2c')]({'where':{'type':_0xcdda1b,'resourceId':_0x43b94b['id']}})[_0xb2b8('0x28')](function(){return _0x5ee39d;});})[_0xb2b8('0x28')](function(){_0x420d74['status'](0xcc)[_0xb2b8('0x2d')]();});}};}function handleEntityNotFound(_0x46f377,_0x53c4b8){return function(_0x2d3e77){if(!_0x2d3e77){_0x46f377[_0xb2b8('0x1c')](0x194);}return _0x2d3e77;};}function handleError(_0xbf75c9,_0x47dd30){_0x47dd30=_0x47dd30||0x1f4;return function(_0x3bdd5a){logger['error'](_0x3bdd5a['stack']);if(_0x3bdd5a[_0xb2b8('0x2e')]){delete _0x3bdd5a[_0xb2b8('0x2e')];}_0xbf75c9[_0xb2b8('0x21')](_0x47dd30)[_0xb2b8('0x2f')](_0x3bdd5a);};}exports[_0xb2b8('0x30')]=function(_0x3570e3,_0x42e31f){var _0x16c49f={},_0x52299f={},_0x5b6631={'count':0x0,'rows':[]};var _0x5c1094=_[_0xb2b8('0x31')](db[_0xb2b8('0x32')][_0xb2b8('0x33')],function(_0x57d1b1){return{'name':_0x57d1b1['fieldName'],'type':_0x57d1b1[_0xb2b8('0x34')][_0xb2b8('0x35')]};});_0x52299f[_0xb2b8('0x36')]=_[_0xb2b8('0x31')](_0x5c1094,_0xb2b8('0x2e'));_0x52299f['query']=_[_0xb2b8('0x37')](_0x3570e3['query']);_0x52299f[_0xb2b8('0x38')]=_[_0xb2b8('0x39')](_0x52299f[_0xb2b8('0x36')],_0x52299f[_0xb2b8('0x3a')]);_0x16c49f[_0xb2b8('0x3b')]=_['intersection'](_0x52299f[_0xb2b8('0x36')],qs[_0xb2b8('0x3c')](_0x3570e3[_0xb2b8('0x3a')][_0xb2b8('0x3c')]));_0x16c49f['attributes']=_0x16c49f[_0xb2b8('0x3b')][_0xb2b8('0x3d')]?_0x16c49f[_0xb2b8('0x3b')]:_0x52299f[_0xb2b8('0x36')];if(!_0x3570e3[_0xb2b8('0x3a')]['hasOwnProperty'](_0xb2b8('0x3e'))){_0x16c49f['limit']=qs[_0xb2b8('0x20')](_0x3570e3[_0xb2b8('0x3a')][_0xb2b8('0x20')]);_0x16c49f[_0xb2b8('0x1f')]=qs['offset'](_0x3570e3['query'][_0xb2b8('0x1f')]);}_0x16c49f[_0xb2b8('0x3f')]=qs['sort'](_0x3570e3['query']['sort']);_0x16c49f[_0xb2b8('0x40')]=qs[_0xb2b8('0x38')](_[_0xb2b8('0x41')](_0x3570e3['query'],_0x52299f[_0xb2b8('0x38')]),_0x5c1094);if(_0x3570e3['query'][_0xb2b8('0x42')]){_0x16c49f[_0xb2b8('0x40')]=_['merge'](_0x16c49f['where'],{'$or':_['map'](_0x5c1094,function(_0x123d4c){if(_0x123d4c[_0xb2b8('0x34')]!==_0xb2b8('0x43')){var _0x4a2bfd={};_0x4a2bfd[_0x123d4c['name']]={'$like':'%'+_0x3570e3['query'][_0xb2b8('0x42')]+'%'};return _0x4a2bfd;}})});}_0x16c49f=_['merge']({},_0x16c49f,_0x3570e3[_0xb2b8('0x44')]);var _0x1bc67e={'where':_0x16c49f[_0xb2b8('0x40')]};return db['AnalyticExtractedReport'][_0xb2b8('0x1e')](_0x1bc67e)['then'](function(_0x4b9504){_0x5b6631[_0xb2b8('0x1e')]=_0x4b9504;if(_0x3570e3['query']['includeAll']){_0x16c49f[_0xb2b8('0x45')]=[{'all':!![]}];}return db[_0xb2b8('0x32')][_0xb2b8('0x46')](_0x16c49f);})[_0xb2b8('0x28')](function(_0x23426c){_0x5b6631[_0xb2b8('0x47')]=_0x23426c;return _0x5b6631;})[_0xb2b8('0x28')](respondWithFilteredResult(_0x42e31f,_0x16c49f))['catch'](handleError(_0x42e31f,null));};exports[_0xb2b8('0x48')]=function(_0x1c2d7b,_0x4af06d){var _0x3056c1={'raw':!![],'where':{'id':_0x1c2d7b['params']['id']}},_0x5a62f2={};_0x5a62f2[_0xb2b8('0x36')]=_['keys'](db[_0xb2b8('0x32')][_0xb2b8('0x33')]);_0x5a62f2[_0xb2b8('0x3a')]=_['keys'](_0x1c2d7b[_0xb2b8('0x3a')]);_0x5a62f2['filters']=_[_0xb2b8('0x39')](_0x5a62f2[_0xb2b8('0x36')],_0x5a62f2[_0xb2b8('0x3a')]);_0x3056c1[_0xb2b8('0x3b')]=_['intersection'](_0x5a62f2['model'],qs[_0xb2b8('0x3c')](_0x1c2d7b[_0xb2b8('0x3a')][_0xb2b8('0x3c')]));_0x3056c1[_0xb2b8('0x3b')]=_0x3056c1[_0xb2b8('0x3b')][_0xb2b8('0x3d')]?_0x3056c1[_0xb2b8('0x3b')]:_0x5a62f2[_0xb2b8('0x36')];if(_0x1c2d7b[_0xb2b8('0x3a')]['includeAll']){_0x3056c1['include']=[{'all':!![]}];}_0x3056c1=_['merge']({},_0x3056c1,_0x1c2d7b['options']);return db[_0xb2b8('0x32')][_0xb2b8('0x49')](_0x3056c1)[_0xb2b8('0x28')](handleEntityNotFound(_0x4af06d,null))['then'](respondWithResult(_0x4af06d,null))[_0xb2b8('0x4a')](handleError(_0x4af06d,null));};exports[_0xb2b8('0x4b')]=function(_0x1e0a9d,_0x17615f){return db['AnalyticExtractedReport'][_0xb2b8('0x4b')](_0x1e0a9d['body'],{})[_0xb2b8('0x28')](function(_0x1ff646){var _0x280729=_0x1e0a9d['user'][_0xb2b8('0x29')]({'plain':!![]});if(!_0x280729)throw new Error(_0xb2b8('0x4c'));if(_0x280729[_0xb2b8('0x4d')]===_0xb2b8('0x4e')){var _0x4bf933=_0x1ff646[_0xb2b8('0x29')]({'plain':!![]});var _0x151c47=_0xb2b8('0x2a');return db[_0xb2b8('0x4f')]['find']({'where':{'name':_0x151c47,'userProfileId':_0x280729[_0xb2b8('0x50')]},'raw':!![]})['then'](function(_0x2c431b){if(_0x2c431b&&_0x2c431b[_0xb2b8('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x4bf933[_0xb2b8('0x2e')],'resourceId':_0x4bf933['id'],'type':_0x2c431b['name'],'sectionId':_0x2c431b['id']},{})[_0xb2b8('0x28')](function(){return _0x1ff646;});}else{return _0x1ff646;}})[_0xb2b8('0x4a')](function(_0x228e50){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x228e50);throw _0x228e50;});}return _0x1ff646;})[_0xb2b8('0x28')](respondWithResult(_0x17615f,0xc9))[_0xb2b8('0x4a')](handleError(_0x17615f,null));};exports[_0xb2b8('0x27')]=function(_0x4db57e,_0xfa7316){if(_0x4db57e[_0xb2b8('0x52')]['id']){delete _0x4db57e['body']['id'];}return db[_0xb2b8('0x32')][_0xb2b8('0x49')]({'where':{'id':_0x4db57e['params']['id']}})[_0xb2b8('0x28')](handleEntityNotFound(_0xfa7316,null))['then'](saveUpdates(_0x4db57e[_0xb2b8('0x52')],null))[_0xb2b8('0x28')](respondWithResult(_0xfa7316,null))['catch'](handleError(_0xfa7316,null));};exports[_0xb2b8('0x2c')]=function(_0x5ee2d1,_0x180a19){return db[_0xb2b8('0x32')][_0xb2b8('0x49')]({'where':{'id':_0x5ee2d1[_0xb2b8('0x53')]['id']}})[_0xb2b8('0x28')](handleEntityNotFound(_0x180a19,null))[_0xb2b8('0x28')](removeEntity(_0x180a19,null))[_0xb2b8('0x4a')](handleError(_0x180a19,null));};exports['download']=function(_0x270fc9,_0x5d62e8,_0xcc518d){return db['AnalyticExtractedReport'][_0xb2b8('0x49')]({'where':{'id':_0x270fc9[_0xb2b8('0x53')]['id']},'attributes':['name',_0xb2b8('0x54'),_0xb2b8('0x55'),_0xb2b8('0x56')],'raw':!![]})['then'](handleEntityNotFound(_0x5d62e8,null))[_0xb2b8('0x28')](function(_0x298465){if(_0x298465){if(!fs[_0xb2b8('0x57')](path[_0xb2b8('0x58')](config[_0xb2b8('0x59')],_0xb2b8('0x5a'),_0x298465[_0xb2b8('0x55')]))){throw new db[(_0xb2b8('0x5b'))][(_0xb2b8('0x5c'))]('Report\x20not\x20found\x20or\x20empty');}if(_0x270fc9[_0xb2b8('0x3a')]['exists']){return _0x5d62e8[_0xb2b8('0x1c')](0xc8);}return _0x5d62e8[_0xb2b8('0x5d')](path['join'](config[_0xb2b8('0x59')],_0xb2b8('0x5a'),_0x298465[_0xb2b8('0x55')]),util[_0xb2b8('0x5e')](_0xb2b8('0x5f'),_0x298465[_0xb2b8('0x54')]||_0x298465[_0xb2b8('0x2e')],_0x298465[_0xb2b8('0x56')][_0xb2b8('0x60')]()));}})[_0xb2b8('0x4a')](handleError(_0x5d62e8,null));};
\ No newline at end of file
+var _0x1afc=['format','%s.%s','toLowerCase','eml-format','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','apply','save','destroy','then','get','UserProfileResource','sendStatus','error','stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','merge','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','update','download','basename','savename','output','existsSync','join','root','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty'];(function(_0x1034ca,_0x14ecd6){var _0x1a023a=function(_0x2cfa65){while(--_0x2cfa65){_0x1034ca['push'](_0x1034ca['shift']());}};_0x1a023a(++_0x14ecd6);}(_0x1afc,0x11d));var _0xc1af=function(_0x43cd25,_0x28c57a){_0x43cd25=_0x43cd25-0x0;var _0x39bcf2=_0x1afc[_0x43cd25];return _0x39bcf2;};'use strict';var emlformat=require(_0xc1af('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc1af('0x1'));var rp=require(_0xc1af('0x2'));var moment=require(_0xc1af('0x3'));var BPromise=require(_0xc1af('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xc1af('0x5'));var sox=require('sox');var csv=require(_0xc1af('0x6'));var ejs=require(_0xc1af('0x7'));var fs=require('fs');var fs_extra=require(_0xc1af('0x8'));var _=require(_0xc1af('0x9'));var squel=require(_0xc1af('0xa'));var crypto=require(_0xc1af('0xb'));var jsforce=require(_0xc1af('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xc1af('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc1af('0xd'));var authService=require(_0xc1af('0xe'));var qs=require(_0xc1af('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc1af('0x10'));var logger=require(_0xc1af('0x11'))(_0xc1af('0x12'));var utils=require('../../config/utils');var config=require(_0xc1af('0x13'));var licenseUtil=require(_0xc1af('0x14'));var db=require(_0xc1af('0x15'))['db'];function respondWithStatusCode(_0x2ed855,_0x212c15){_0x212c15=_0x212c15||0xcc;return function(_0x210d02){if(_0x210d02){return _0x2ed855['sendStatus'](_0x212c15);}return _0x2ed855[_0xc1af('0x16')](_0x212c15)[_0xc1af('0x17')]();};}function respondWithResult(_0x47a152,_0x4750d7){_0x4750d7=_0x4750d7||0xc8;return function(_0x2f879c){if(_0x2f879c){return _0x47a152[_0xc1af('0x16')](_0x4750d7)[_0xc1af('0x18')](_0x2f879c);}};}function respondWithFilteredResult(_0x5d9473,_0x178754){return function(_0x16c2c7){if(_0x16c2c7){var _0x2988f3=typeof _0x178754[_0xc1af('0x19')]===_0xc1af('0x1a')&&typeof _0x178754[_0xc1af('0x1b')]==='undefined';var _0x3a8566=_0x16c2c7['count'];var _0x5c9f4a=_0x2988f3?0x0:_0x178754[_0xc1af('0x19')];var _0x527034=_0x2988f3?_0x16c2c7[_0xc1af('0x1c')]:_0x178754[_0xc1af('0x19')]+_0x178754[_0xc1af('0x1b')];var _0x46e63e;if(_0x527034>=_0x3a8566){_0x527034=_0x3a8566;_0x46e63e=0xc8;}else{_0x46e63e=0xce;}_0x5d9473[_0xc1af('0x16')](_0x46e63e);return _0x5d9473['set']('Content-Range',_0x5c9f4a+'-'+_0x527034+'/'+_0x3a8566)[_0xc1af('0x18')](_0x16c2c7);}return null;};}function patchUpdates(_0x2a9fad){return function(_0x820fec){try{jsonpatch[_0xc1af('0x1d')](_0x820fec,_0x2a9fad,!![]);}catch(_0x8ec506){return BPromise['reject'](_0x8ec506);}return _0x820fec[_0xc1af('0x1e')]();};}function saveUpdates(_0x2587d6,_0xe552fc){return function(_0x417d02){if(_0x417d02){return _0x417d02['update'](_0x2587d6)['then'](function(_0x754b80){return _0x754b80;});}return null;};}function removeEntity(_0x105e09,_0x440d11){return function(_0x7dcea){if(_0x7dcea){return _0x7dcea[_0xc1af('0x1f')]()[_0xc1af('0x20')](function(){var _0x26fdf4=_0x7dcea[_0xc1af('0x21')]({'plain':!![]});var _0x37c788='ExtractedReports';return db[_0xc1af('0x22')]['destroy']({'where':{'type':_0x37c788,'resourceId':_0x26fdf4['id']}})['then'](function(){return _0x7dcea;});})[_0xc1af('0x20')](function(){_0x105e09[_0xc1af('0x16')](0xcc)[_0xc1af('0x17')]();});}};}function handleEntityNotFound(_0xc9be33,_0x59b4de){return function(_0x3c0f1a){if(!_0x3c0f1a){_0xc9be33[_0xc1af('0x23')](0x194);}return _0x3c0f1a;};}function handleError(_0x46731f,_0x23aac2){_0x23aac2=_0x23aac2||0x1f4;return function(_0x199b9f){logger[_0xc1af('0x24')](_0x199b9f[_0xc1af('0x25')]);if(_0x199b9f[_0xc1af('0x26')]){delete _0x199b9f[_0xc1af('0x26')];}_0x46731f[_0xc1af('0x16')](_0x23aac2)[_0xc1af('0x27')](_0x199b9f);};}exports[_0xc1af('0x28')]=function(_0x526ec7,_0x286c39){var _0x885c65={},_0x11f39c={},_0x45a6ce={'count':0x0,'rows':[]};var _0x5a829e=_[_0xc1af('0x29')](db[_0xc1af('0x2a')][_0xc1af('0x2b')],function(_0x62cc57){return{'name':_0x62cc57[_0xc1af('0x2c')],'type':_0x62cc57[_0xc1af('0x2d')][_0xc1af('0x2e')]};});_0x11f39c[_0xc1af('0x2f')]=_[_0xc1af('0x29')](_0x5a829e,_0xc1af('0x26'));_0x11f39c[_0xc1af('0x30')]=_['keys'](_0x526ec7[_0xc1af('0x30')]);_0x11f39c[_0xc1af('0x31')]=_[_0xc1af('0x32')](_0x11f39c[_0xc1af('0x2f')],_0x11f39c[_0xc1af('0x30')]);_0x885c65[_0xc1af('0x33')]=_[_0xc1af('0x32')](_0x11f39c[_0xc1af('0x2f')],qs[_0xc1af('0x34')](_0x526ec7[_0xc1af('0x30')]['fields']));_0x885c65['attributes']=_0x885c65[_0xc1af('0x33')][_0xc1af('0x35')]?_0x885c65[_0xc1af('0x33')]:_0x11f39c[_0xc1af('0x2f')];if(!_0x526ec7[_0xc1af('0x30')][_0xc1af('0x36')](_0xc1af('0x37'))){_0x885c65[_0xc1af('0x1b')]=qs[_0xc1af('0x1b')](_0x526ec7[_0xc1af('0x30')]['limit']);_0x885c65[_0xc1af('0x19')]=qs['offset'](_0x526ec7[_0xc1af('0x30')][_0xc1af('0x19')]);}_0x885c65[_0xc1af('0x38')]=qs['sort'](_0x526ec7[_0xc1af('0x30')][_0xc1af('0x39')]);_0x885c65[_0xc1af('0x3a')]=qs[_0xc1af('0x31')](_[_0xc1af('0x3b')](_0x526ec7[_0xc1af('0x30')],_0x11f39c[_0xc1af('0x31')]),_0x5a829e);if(_0x526ec7[_0xc1af('0x30')][_0xc1af('0x3c')]){_0x885c65[_0xc1af('0x3a')]=_['merge'](_0x885c65[_0xc1af('0x3a')],{'$or':_[_0xc1af('0x29')](_0x5a829e,function(_0x279e46){if(_0x279e46[_0xc1af('0x2d')]!==_0xc1af('0x3d')){var _0x38b9dc={};_0x38b9dc[_0x279e46[_0xc1af('0x26')]]={'$like':'%'+_0x526ec7[_0xc1af('0x30')][_0xc1af('0x3c')]+'%'};return _0x38b9dc;}})});}_0x885c65=_['merge']({},_0x885c65,_0x526ec7[_0xc1af('0x3e')]);var _0x31b373={'where':_0x885c65[_0xc1af('0x3a')]};return db[_0xc1af('0x2a')][_0xc1af('0x1c')](_0x31b373)[_0xc1af('0x20')](function(_0x3cbc25){_0x45a6ce[_0xc1af('0x1c')]=_0x3cbc25;if(_0x526ec7[_0xc1af('0x30')][_0xc1af('0x3f')]){_0x885c65[_0xc1af('0x40')]=[{'all':!![]}];}return db[_0xc1af('0x2a')][_0xc1af('0x41')](_0x885c65);})[_0xc1af('0x20')](function(_0x895dec){_0x45a6ce[_0xc1af('0x42')]=_0x895dec;return _0x45a6ce;})[_0xc1af('0x20')](respondWithFilteredResult(_0x286c39,_0x885c65))[_0xc1af('0x43')](handleError(_0x286c39,null));};exports[_0xc1af('0x44')]=function(_0x517ffa,_0x4e08a6){var _0x59c29f={'raw':!![],'where':{'id':_0x517ffa[_0xc1af('0x45')]['id']}},_0x57b0ca={};_0x57b0ca['model']=_['keys'](db[_0xc1af('0x2a')][_0xc1af('0x2b')]);_0x57b0ca[_0xc1af('0x30')]=_[_0xc1af('0x46')](_0x517ffa['query']);_0x57b0ca[_0xc1af('0x31')]=_[_0xc1af('0x32')](_0x57b0ca['model'],_0x57b0ca[_0xc1af('0x30')]);_0x59c29f[_0xc1af('0x33')]=_['intersection'](_0x57b0ca[_0xc1af('0x2f')],qs[_0xc1af('0x34')](_0x517ffa['query'][_0xc1af('0x34')]));_0x59c29f[_0xc1af('0x33')]=_0x59c29f['attributes'][_0xc1af('0x35')]?_0x59c29f[_0xc1af('0x33')]:_0x57b0ca['model'];if(_0x517ffa[_0xc1af('0x30')][_0xc1af('0x3f')]){_0x59c29f[_0xc1af('0x40')]=[{'all':!![]}];}_0x59c29f=_[_0xc1af('0x47')]({},_0x59c29f,_0x517ffa[_0xc1af('0x3e')]);return db[_0xc1af('0x2a')][_0xc1af('0x48')](_0x59c29f)[_0xc1af('0x20')](handleEntityNotFound(_0x4e08a6,null))[_0xc1af('0x20')](respondWithResult(_0x4e08a6,null))[_0xc1af('0x43')](handleError(_0x4e08a6,null));};exports[_0xc1af('0x49')]=function(_0x1bbba2,_0x556a5f){return db[_0xc1af('0x2a')][_0xc1af('0x49')](_0x1bbba2[_0xc1af('0x4a')],{})[_0xc1af('0x20')](function(_0x581709){var _0x471166=_0x1bbba2[_0xc1af('0x4b')][_0xc1af('0x21')]({'plain':!![]});if(!_0x471166)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x471166[_0xc1af('0x4c')]===_0xc1af('0x4b')){var _0x3b21ca=_0x581709['get']({'plain':!![]});var _0x1623be='ExtractedReports';return db[_0xc1af('0x4d')][_0xc1af('0x48')]({'where':{'name':_0x1623be,'userProfileId':_0x471166[_0xc1af('0x4e')]},'raw':!![]})['then'](function(_0x4e6b6e){if(_0x4e6b6e&&_0x4e6b6e[_0xc1af('0x4f')]===0x0){return db[_0xc1af('0x22')][_0xc1af('0x49')]({'name':_0x3b21ca[_0xc1af('0x26')],'resourceId':_0x3b21ca['id'],'type':_0x4e6b6e[_0xc1af('0x26')],'sectionId':_0x4e6b6e['id']},{})[_0xc1af('0x20')](function(){return _0x581709;});}else{return _0x581709;}})[_0xc1af('0x43')](function(_0x6f1718){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x6f1718);throw _0x6f1718;});}return _0x581709;})[_0xc1af('0x20')](respondWithResult(_0x556a5f,0xc9))[_0xc1af('0x43')](handleError(_0x556a5f,null));};exports[_0xc1af('0x50')]=function(_0x479abb,_0x53902e){if(_0x479abb['body']['id']){delete _0x479abb[_0xc1af('0x4a')]['id'];}return db['AnalyticExtractedReport'][_0xc1af('0x48')]({'where':{'id':_0x479abb['params']['id']}})[_0xc1af('0x20')](handleEntityNotFound(_0x53902e,null))['then'](saveUpdates(_0x479abb[_0xc1af('0x4a')],null))[_0xc1af('0x20')](respondWithResult(_0x53902e,null))[_0xc1af('0x43')](handleError(_0x53902e,null));};exports[_0xc1af('0x1f')]=function(_0x4879ba,_0x1ba504){return db[_0xc1af('0x2a')][_0xc1af('0x48')]({'where':{'id':_0x4879ba['params']['id']}})[_0xc1af('0x20')](handleEntityNotFound(_0x1ba504,null))[_0xc1af('0x20')](removeEntity(_0x1ba504,null))['catch'](handleError(_0x1ba504,null));};exports[_0xc1af('0x51')]=function(_0x46dbf7,_0xb997dc,_0x49c2a6){return db[_0xc1af('0x2a')][_0xc1af('0x48')]({'where':{'id':_0x46dbf7[_0xc1af('0x45')]['id']},'attributes':[_0xc1af('0x26'),_0xc1af('0x52'),_0xc1af('0x53'),_0xc1af('0x54')],'raw':!![]})[_0xc1af('0x20')](handleEntityNotFound(_0xb997dc,null))[_0xc1af('0x20')](function(_0x1d9f49){if(_0x1d9f49){if(!fs[_0xc1af('0x55')](path[_0xc1af('0x56')](config[_0xc1af('0x57')],'server/files/reports',_0x1d9f49[_0xc1af('0x53')]))){throw new db[(_0xc1af('0x58'))][(_0xc1af('0x59'))](_0xc1af('0x5a'));}if(_0x46dbf7[_0xc1af('0x30')]['exists']){return _0xb997dc['sendStatus'](0xc8);}return _0xb997dc[_0xc1af('0x51')](path[_0xc1af('0x56')](config[_0xc1af('0x57')],'server/files/reports',_0x1d9f49['savename']),util[_0xc1af('0x5b')](_0xc1af('0x5c'),_0x1d9f49[_0xc1af('0x52')]||_0x1d9f49[_0xc1af('0x26')],_0x1d9f49['output'][_0xc1af('0x5d')]()));}})[_0xc1af('0x43')](handleError(_0xb997dc,null));};
\ No newline at end of file
index bb347c4..2cefa93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cd9=['analytics_extracted_reports','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport'];(function(_0x487d78,_0x404605){var _0xa964c1=function(_0x267876){while(--_0x267876){_0x487d78['push'](_0x487d78['shift']());}};_0xa964c1(++_0x404605);}(_0x2cd9,0xe1));var _0x92cd=function(_0x62230d,_0x487dac){_0x62230d=_0x62230d-0x0;var _0x3d5b1a=_0x2cd9[_0x62230d];return _0x3d5b1a;};'use strict';var _=require(_0x92cd('0x0'));var util=require(_0x92cd('0x1'));var logger=require(_0x92cd('0x2'))(_0x92cd('0x3'));var moment=require(_0x92cd('0x4'));var BPromise=require(_0x92cd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x92cd('0x6'));var rimraf=require(_0x92cd('0x7'));var config=require(_0x92cd('0x8'));var attributes=require(_0x92cd('0x9'));module[_0x92cd('0xa')]=function(_0x401ded,_0xcf86f2){return _0x401ded[_0x92cd('0xb')](_0x92cd('0xc'),attributes,{'tableName':_0x92cd('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x03b8=['analytics_extracted_reports','util','../../config/logger','api','moment','bluebird','path','rimraf','exports','define'];(function(_0x1c3c41,_0xfdf818){var _0x3cd882=function(_0x421a09){while(--_0x421a09){_0x1c3c41['push'](_0x1c3c41['shift']());}};_0x3cd882(++_0xfdf818);}(_0x03b8,0x123));var _0x803b=function(_0x4abebb,_0x45eb5f){_0x4abebb=_0x4abebb-0x0;var _0x58fcea=_0x03b8[_0x4abebb];return _0x58fcea;};'use strict';var _=require('lodash');var util=require(_0x803b('0x0'));var logger=require(_0x803b('0x1'))(_0x803b('0x2'));var moment=require(_0x803b('0x3'));var BPromise=require(_0x803b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x803b('0x5'));var rimraf=require(_0x803b('0x6'));var config=require('../../config/environment');var attributes=require('./analyticExtractedReport.attributes');module[_0x803b('0x7')]=function(_0x184961,_0x32de8b){return _0x184961[_0x803b('0x8')]('AnalyticExtractedReport',attributes,{'tableName':_0x803b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1c1150b..d781963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa01e=['../../mysqldb','rpc','jayson/promise','client','http','then','info','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','AnalyticExtractedReport,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','ioredis'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xa01e,0x137));var _0xea01=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa01e[_0x1cfa0d];return _0xe33279;};'use strict';var _=require(_0xea01('0x0'));var util=require(_0xea01('0x1'));var moment=require('moment');var BPromise=require(_0xea01('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xea01('0x3'));var db=require(_0xea01('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xea01('0x5'));var config=require('../../config/environment');var jayson=require(_0xea01('0x6'));var client=jayson[_0xea01('0x7')][_0xea01('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x207453,_0x2533f3,_0x9599be){return new BPromise(function(_0x544ffb,_0x943ad0){return client['request'](_0x207453,_0x9599be)[_0xea01('0x9')](function(_0x1b335a){logger[_0xea01('0xa')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x2533f3,'request\x20sent');logger[_0xea01('0xb')](_0xea01('0xc'),_0x2533f3,_0xea01('0xd'),JSON[_0xea01('0xe')](_0x1b335a));if(_0x1b335a[_0xea01('0xf')]){if(_0x1b335a[_0xea01('0xf')][_0xea01('0x10')]===0x1f4){logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0x2533f3,_0x1b335a[_0xea01('0xf')]['message']);return _0x943ad0(_0x1b335a[_0xea01('0xf')]['message']);}logger[_0xea01('0xf')](_0xea01('0x11'),_0x2533f3,_0x1b335a[_0xea01('0xf')][_0xea01('0x12')]);return _0x544ffb(_0x1b335a[_0xea01('0xf')][_0xea01('0x12')]);}else{logger[_0xea01('0xa')](_0xea01('0x11'),_0x2533f3,_0xea01('0xd'));_0x544ffb(_0x1b335a[_0xea01('0x13')][_0xea01('0x12')]);}})[_0xea01('0x14')](function(_0x20c6d1){logger['error'](_0xea01('0x11'),_0x2533f3,_0x20c6d1);_0x943ad0(_0x20c6d1);});});}
\ No newline at end of file
+var _0xdb7e=['jayson/promise','request','then','AnalyticExtractedReport,\x20%s,\x20%s','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x555489,_0x177403){var _0xf84c40=function(_0x364dad){while(--_0x364dad){_0x555489['push'](_0x555489['shift']());}};_0xf84c40(++_0x177403);}(_0xdb7e,0x7b));var _0xedb7=function(_0x5890e5,_0x585048){_0x5890e5=_0x5890e5-0x0;var _0x187cc3=_0xdb7e[_0x5890e5];return _0x187cc3;};'use strict';var _=require(_0xedb7('0x0'));var util=require('util');var moment=require(_0xedb7('0x1'));var BPromise=require(_0xedb7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xedb7('0x3'));var db=require(_0xedb7('0x4'))['db'];var utils=require(_0xedb7('0x5'));var logger=require(_0xedb7('0x6'))(_0xedb7('0x7'));var config=require(_0xedb7('0x8'));var jayson=require(_0xedb7('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xf0ce15,_0x22163a,_0x4707b5){return new BPromise(function(_0x1ce902,_0x147c74){return client[_0xedb7('0xa')](_0xf0ce15,_0x4707b5)[_0xedb7('0xb')](function(_0x1d3eb5){logger['info'](_0xedb7('0xc'),_0x22163a,'request\x20sent');logger[_0xedb7('0xd')](_0xedb7('0xe'),_0x22163a,_0xedb7('0xf'),JSON[_0xedb7('0x10')](_0x1d3eb5));if(_0x1d3eb5[_0xedb7('0x11')]){if(_0x1d3eb5[_0xedb7('0x11')][_0xedb7('0x12')]===0x1f4){logger[_0xedb7('0x11')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x22163a,_0x1d3eb5['error'][_0xedb7('0x13')]);return _0x147c74(_0x1d3eb5['error'][_0xedb7('0x13')]);}logger[_0xedb7('0x11')](_0xedb7('0xc'),_0x22163a,_0x1d3eb5[_0xedb7('0x11')]['message']);return _0x1ce902(_0x1d3eb5[_0xedb7('0x11')][_0xedb7('0x13')]);}else{logger['info'](_0xedb7('0xc'),_0x22163a,_0xedb7('0xf'));_0x1ce902(_0x1d3eb5[_0xedb7('0x14')][_0xedb7('0x13')]);}})[_0xedb7('0x15')](function(_0x6503c5){logger[_0xedb7('0x11')](_0xedb7('0xc'),_0x22163a,_0x6503c5);_0x147c74(_0x6503c5);});});}
\ No newline at end of file
index 6438f13..3ba4e99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f53=['index','/:id','show','/:id/download','download','post','put','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticExtractedReport.controller','get','isAuthenticated'];(function(_0x101afa,_0x5c89d0){var _0x40ed10=function(_0x1f274e){while(--_0x1f274e){_0x101afa['push'](_0x101afa['shift']());}};_0x40ed10(++_0x5c89d0);}(_0x6f53,0xc8));var _0x36f5=function(_0x18dd7b,_0x15e3f6){_0x18dd7b=_0x18dd7b-0x0;var _0x263045=_0x6f53[_0x18dd7b];return _0x263045;};'use strict';var multer=require(_0x36f5('0x0'));var util=require(_0x36f5('0x1'));var path=require('path');var timeout=require(_0x36f5('0x2'));var express=require(_0x36f5('0x3'));var router=express['Router']();var fs_extra=require(_0x36f5('0x4'));var auth=require(_0x36f5('0x5'));var interaction=require(_0x36f5('0x6'));var config=require('../../config/environment');var controller=require(_0x36f5('0x7'));router[_0x36f5('0x8')]('/',auth[_0x36f5('0x9')](),controller[_0x36f5('0xa')]);router[_0x36f5('0x8')](_0x36f5('0xb'),auth[_0x36f5('0x9')](),controller[_0x36f5('0xc')]);router[_0x36f5('0x8')](_0x36f5('0xd'),auth['isAuthenticated'](),controller[_0x36f5('0xe')]);router[_0x36f5('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x36f5('0x10')]('/:id',auth[_0x36f5('0x9')](),controller[_0x36f5('0x11')]);router[_0x36f5('0x12')](_0x36f5('0xb'),auth[_0x36f5('0x9')](),controller[_0x36f5('0x13')]);module[_0x36f5('0x14')]=router;
\ No newline at end of file
+var _0x0d71=['../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','/:id','show','/:id/download','download','post','put','update','delete','exports','multer','util','connect-timeout','express','fs-extra'];(function(_0x4b5101,_0xe718d9){var _0x250541=function(_0x3581f0){while(--_0x3581f0){_0x4b5101['push'](_0x4b5101['shift']());}};_0x250541(++_0xe718d9);}(_0x0d71,0x1c3));var _0x10d7=function(_0x4ebb33,_0x22e2b7){_0x4ebb33=_0x4ebb33-0x0;var _0x3e1c78=_0x0d71[_0x4ebb33];return _0x3e1c78;};'use strict';var multer=require(_0x10d7('0x0'));var util=require(_0x10d7('0x1'));var path=require('path');var timeout=require(_0x10d7('0x2'));var express=require(_0x10d7('0x3'));var router=express['Router']();var fs_extra=require(_0x10d7('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x10d7('0x5'));var config=require(_0x10d7('0x6'));var controller=require(_0x10d7('0x7'));router[_0x10d7('0x8')]('/',auth[_0x10d7('0x9')](),controller['index']);router['get'](_0x10d7('0xa'),auth[_0x10d7('0x9')](),controller[_0x10d7('0xb')]);router[_0x10d7('0x8')](_0x10d7('0xc'),auth[_0x10d7('0x9')](),controller[_0x10d7('0xd')]);router[_0x10d7('0xe')]('/',auth[_0x10d7('0x9')](),controller['create']);router[_0x10d7('0xf')](_0x10d7('0xa'),auth['isAuthenticated'](),controller[_0x10d7('0x10')]);router[_0x10d7('0x11')](_0x10d7('0xa'),auth[_0x10d7('0x9')](),controller['destroy']);module[_0x10d7('0x12')]=router;
\ No newline at end of file
index 681e4a8..6d81845 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a5e=['exports','TEXT','STRING','BOOLEAN'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x2a5e,0x1b8));var _0xe2a5=function(_0x294e34,_0xf4dc01){_0x294e34=_0x294e34-0x0;var _0x1cd3d6=_0x2a5e[_0x294e34];return _0x1cd3d6;};'use strict';var Sequelize=require('sequelize');module[_0xe2a5('0x0')]={'field':{'type':Sequelize[_0xe2a5('0x1')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0xe2a5('0x2')]},'format':{'type':Sequelize[_0xe2a5('0x2')]},'groupBy':{'type':Sequelize[_0xe2a5('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xe2a5('0x2')]},'custom':{'type':Sequelize[_0xe2a5('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xd110=['exports','TEXT','STRING','BOOLEAN','sequelize'];(function(_0x5252ce,_0x133319){var _0x1f0fec=function(_0x1a7403){while(--_0x1a7403){_0x5252ce['push'](_0x5252ce['shift']());}};_0x1f0fec(++_0x133319);}(_0xd110,0xb8));var _0x0d11=function(_0x140d4f,_0x4c2651){_0x140d4f=_0x140d4f-0x0;var _0x3392c0=_0xd110[_0x140d4f];return _0x3392c0;};'use strict';var Sequelize=require(_0x0d11('0x0'));module[_0x0d11('0x1')]={'field':{'type':Sequelize[_0x0d11('0x2')]},'alias':{'type':Sequelize[_0x0d11('0x3')]},'function':{'type':Sequelize[_0x0d11('0x3')]},'format':{'type':Sequelize[_0x0d11('0x3')]},'groupBy':{'type':Sequelize[_0x0d11('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize['STRING']},'custom':{'type':Sequelize[_0x0d11('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 7612e2f..7bac327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa372=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','sendStatus','end','json','undefined','limit','count','offset','status','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','options','AnalyticFieldReport','includeAll','findAll','rows','catch','params','intersection','merge','find','create','body','bulkCreate','bulkDestroy','addFields','findOne','sequelize','transaction','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','jsforce'];(function(_0x2e6327,_0x138703){var _0x2f0ebd=function(_0x5a709f){while(--_0x5a709f){_0x2e6327['push'](_0x2e6327['shift']());}};_0x2f0ebd(++_0x138703);}(_0xa372,0x1dd));var _0x2a37=function(_0x2e4fa6,_0x5f20bf){_0x2e4fa6=_0x2e4fa6-0x0;var _0x22b795=_0xa372[_0x2e4fa6];return _0x22b795;};'use strict';var emlformat=require(_0x2a37('0x0'));var rimraf=require(_0x2a37('0x1'));var zipdir=require(_0x2a37('0x2'));var jsonpatch=require(_0x2a37('0x3'));var rp=require(_0x2a37('0x4'));var moment=require(_0x2a37('0x5'));var BPromise=require(_0x2a37('0x6'));var Mustache=require(_0x2a37('0x7'));var util=require(_0x2a37('0x8'));var path=require(_0x2a37('0x9'));var sox=require(_0x2a37('0xa'));var csv=require(_0x2a37('0xb'));var ejs=require(_0x2a37('0xc'));var fs=require('fs');var fs_extra=require(_0x2a37('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2a37('0xe'));var deskjs=require(_0x2a37('0xf'));var toCsv=require(_0x2a37('0xb'));var querystring=require(_0x2a37('0x10'));var Papa=require(_0x2a37('0x11'));var Redis=require(_0x2a37('0x12'));var authService=require(_0x2a37('0x13'));var qs=require(_0x2a37('0x14'));var as=require(_0x2a37('0x15'));var hardwareService=require(_0x2a37('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x2a37('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x2a37('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4ad3fb,_0x379824){_0x379824=_0x379824||0xcc;return function(_0xfaa463){if(_0xfaa463){return _0x4ad3fb[_0x2a37('0x19')](_0x379824);}return _0x4ad3fb['status'](_0x379824)[_0x2a37('0x1a')]();};}function respondWithResult(_0x31e8a1,_0x42be27){_0x42be27=_0x42be27||0xc8;return function(_0x5dd959){if(_0x5dd959){return _0x31e8a1['status'](_0x42be27)[_0x2a37('0x1b')](_0x5dd959);}};}function respondWithFilteredResult(_0x26cd57,_0x10d94b){return function(_0x28c5af){if(_0x28c5af){var _0x4cb9cd=typeof _0x10d94b['offset']===_0x2a37('0x1c')&&typeof _0x10d94b[_0x2a37('0x1d')]==='undefined';var _0x4ac640=_0x28c5af[_0x2a37('0x1e')];var _0x251cc9=_0x4cb9cd?0x0:_0x10d94b[_0x2a37('0x1f')];var _0xac556b=_0x4cb9cd?_0x28c5af[_0x2a37('0x1e')]:_0x10d94b['offset']+_0x10d94b[_0x2a37('0x1d')];var _0x3796f3;if(_0xac556b>=_0x4ac640){_0xac556b=_0x4ac640;_0x3796f3=0xc8;}else{_0x3796f3=0xce;}_0x26cd57[_0x2a37('0x20')](_0x3796f3);return _0x26cd57['set'](_0x2a37('0x21'),_0x251cc9+'-'+_0xac556b+'/'+_0x4ac640)[_0x2a37('0x1b')](_0x28c5af);}return null;};}function patchUpdates(_0x49c59b){return function(_0x3c7a8e){try{jsonpatch[_0x2a37('0x22')](_0x3c7a8e,_0x49c59b,!![]);}catch(_0x1eabc4){return BPromise[_0x2a37('0x23')](_0x1eabc4);}return _0x3c7a8e['save']();};}function saveUpdates(_0x4f5ad6,_0x3b6213){return function(_0x3644c6){if(_0x3644c6){return _0x3644c6[_0x2a37('0x24')](_0x4f5ad6)[_0x2a37('0x25')](function(_0x5c9683){return _0x5c9683;});}return null;};}function removeEntity(_0x4086fc,_0x5cc93c){return function(_0x4266e1){if(_0x4266e1){return _0x4266e1[_0x2a37('0x26')]()[_0x2a37('0x25')](function(){_0x4086fc[_0x2a37('0x20')](0xcc)[_0x2a37('0x1a')]();});}};}function handleEntityNotFound(_0x3f0d10,_0x4ac4ab){return function(_0x3060a4){if(!_0x3060a4){_0x3f0d10[_0x2a37('0x19')](0x194);}return _0x3060a4;};}function handleError(_0x2c0829,_0x2cb101){_0x2cb101=_0x2cb101||0x1f4;return function(_0x4df687){logger[_0x2a37('0x27')](_0x4df687[_0x2a37('0x28')]);if(_0x4df687['name']){delete _0x4df687[_0x2a37('0x29')];}_0x2c0829[_0x2a37('0x20')](_0x2cb101)[_0x2a37('0x2a')](_0x4df687);};}exports[_0x2a37('0x2b')]=function(_0x1fa47f,_0x3a321a){var _0x32e8cd={},_0x1d3cf5={},_0x227203={'count':0x0,'rows':[]};var _0x36d009=_[_0x2a37('0x2c')](db['AnalyticFieldReport'][_0x2a37('0x2d')],function(_0x798478){return{'name':_0x798478[_0x2a37('0x2e')],'type':_0x798478[_0x2a37('0x2f')][_0x2a37('0x30')]};});_0x1d3cf5['model']=_[_0x2a37('0x2c')](_0x36d009,'name');_0x1d3cf5[_0x2a37('0x31')]=_[_0x2a37('0x32')](_0x1fa47f['query']);_0x1d3cf5[_0x2a37('0x33')]=_['intersection'](_0x1d3cf5['model'],_0x1d3cf5['query']);_0x32e8cd[_0x2a37('0x34')]=_['intersection'](_0x1d3cf5[_0x2a37('0x35')],qs[_0x2a37('0x36')](_0x1fa47f[_0x2a37('0x31')]['fields']));_0x32e8cd['attributes']=_0x32e8cd['attributes'][_0x2a37('0x37')]?_0x32e8cd[_0x2a37('0x34')]:_0x1d3cf5['model'];if(!_0x1fa47f[_0x2a37('0x31')][_0x2a37('0x38')](_0x2a37('0x39'))){_0x32e8cd[_0x2a37('0x1d')]=qs[_0x2a37('0x1d')](_0x1fa47f['query'][_0x2a37('0x1d')]);_0x32e8cd[_0x2a37('0x1f')]=qs[_0x2a37('0x1f')](_0x1fa47f['query'][_0x2a37('0x1f')]);}_0x32e8cd[_0x2a37('0x3a')]=qs['sort'](_0x1fa47f['query'][_0x2a37('0x3b')]);_0x32e8cd['where']=qs[_0x2a37('0x33')](_[_0x2a37('0x3c')](_0x1fa47f[_0x2a37('0x31')],_0x1d3cf5['filters']),_0x36d009);if(_0x1fa47f['query'][_0x2a37('0x3d')]){_0x32e8cd[_0x2a37('0x3e')]=_['merge'](_0x32e8cd[_0x2a37('0x3e')],{'$or':_[_0x2a37('0x2c')](_0x36d009,function(_0xc4ba2f){if(_0xc4ba2f[_0x2a37('0x2f')]!==_0x2a37('0x3f')){var _0x37e7e2={};_0x37e7e2[_0xc4ba2f[_0x2a37('0x29')]]={'$like':'%'+_0x1fa47f['query'][_0x2a37('0x3d')]+'%'};return _0x37e7e2;}})});}_0x32e8cd=_['merge']({},_0x32e8cd,_0x1fa47f[_0x2a37('0x40')]);var _0x10f27d={'where':_0x32e8cd[_0x2a37('0x3e')]};return db[_0x2a37('0x41')][_0x2a37('0x1e')](_0x10f27d)['then'](function(_0x52218e){_0x227203[_0x2a37('0x1e')]=_0x52218e;if(_0x1fa47f[_0x2a37('0x31')][_0x2a37('0x42')]){_0x32e8cd['include']=[{'all':!![]}];}return db['AnalyticFieldReport'][_0x2a37('0x43')](_0x32e8cd);})[_0x2a37('0x25')](function(_0x39e1d2){_0x227203[_0x2a37('0x44')]=_0x39e1d2;return _0x227203;})[_0x2a37('0x25')](respondWithFilteredResult(_0x3a321a,_0x32e8cd))[_0x2a37('0x45')](handleError(_0x3a321a,null));};exports['show']=function(_0x2c1204,_0x15083d){var _0x5e6c31={'raw':![],'where':{'id':_0x2c1204[_0x2a37('0x46')]['id']}},_0x4379f6={};_0x4379f6['model']=_['keys'](db[_0x2a37('0x41')][_0x2a37('0x2d')]);_0x4379f6[_0x2a37('0x31')]=_[_0x2a37('0x32')](_0x2c1204[_0x2a37('0x31')]);_0x4379f6[_0x2a37('0x33')]=_[_0x2a37('0x47')](_0x4379f6['model'],_0x4379f6[_0x2a37('0x31')]);_0x5e6c31[_0x2a37('0x34')]=_[_0x2a37('0x47')](_0x4379f6[_0x2a37('0x35')],qs['fields'](_0x2c1204['query'][_0x2a37('0x36')]));_0x5e6c31['attributes']=_0x5e6c31['attributes'][_0x2a37('0x37')]?_0x5e6c31[_0x2a37('0x34')]:_0x4379f6[_0x2a37('0x35')];if(_0x2c1204['query'][_0x2a37('0x42')]){_0x5e6c31['include']=[{'all':!![]}];}_0x5e6c31=_[_0x2a37('0x48')]({},_0x5e6c31,_0x2c1204[_0x2a37('0x40')]);return db[_0x2a37('0x41')][_0x2a37('0x49')](_0x5e6c31)[_0x2a37('0x25')](handleEntityNotFound(_0x15083d,null))[_0x2a37('0x25')](respondWithResult(_0x15083d,null))[_0x2a37('0x45')](handleError(_0x15083d,null));};exports[_0x2a37('0x4a')]=function(_0x3bebca,_0x121671){return db[_0x2a37('0x41')][_0x2a37('0x4a')](_0x3bebca[_0x2a37('0x4b')],{})[_0x2a37('0x25')](respondWithResult(_0x121671,0xc9))[_0x2a37('0x45')](handleError(_0x121671,null));};exports['bulkCreate']=function(_0x97a42a,_0x43b3f0){return db[_0x2a37('0x41')][_0x2a37('0x4c')](_0x97a42a['body'],{'raw':![],'individualHooks':!![]})[_0x2a37('0x25')](respondWithResult(_0x43b3f0,0xc9))[_0x2a37('0x45')](handleError(_0x43b3f0,null));};exports[_0x2a37('0x24')]=function(_0xb5ee36,_0x1ef9cf){if(_0xb5ee36[_0x2a37('0x4b')]['id']){delete _0xb5ee36[_0x2a37('0x4b')]['id'];}return db['AnalyticFieldReport'][_0x2a37('0x49')]({'where':{'id':_0xb5ee36['params']['id']}})[_0x2a37('0x25')](handleEntityNotFound(_0x1ef9cf,null))['then'](saveUpdates(_0xb5ee36['body'],null))[_0x2a37('0x25')](respondWithResult(_0x1ef9cf,null))[_0x2a37('0x45')](handleError(_0x1ef9cf,null));};exports[_0x2a37('0x26')]=function(_0x3a962f,_0x58eb43){return db[_0x2a37('0x41')][_0x2a37('0x49')]({'where':{'id':_0x3a962f[_0x2a37('0x46')]['id']}})[_0x2a37('0x25')](handleEntityNotFound(_0x58eb43,null))[_0x2a37('0x25')](removeEntity(_0x58eb43,null))['catch'](handleError(_0x58eb43,null));};exports[_0x2a37('0x4d')]=function(_0x5eb3ee,_0x1a5a63){return db[_0x2a37('0x41')][_0x2a37('0x26')]({'where':{'id':_0x5eb3ee[_0x2a37('0x31')]['ids']||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x1a5a63,0xcc))[_0x2a37('0x45')](handleError(_0x1a5a63,null));};exports[_0x2a37('0x4e')]=function(_0x2650cf,_0x2eb6de,_0x40d1ec){return db['AnalyticCustomReport'][_0x2a37('0x4f')]({'where':{'id':_0x2650cf[_0x2a37('0x46')]['id']}})[_0x2a37('0x25')](handleEntityNotFound(_0x2eb6de,null))[_0x2a37('0x25')](function(_0x837a12){if(_0x837a12){return db[_0x2a37('0x50')][_0x2a37('0x51')](function(_0x3ff28b){return db[_0x2a37('0x41')][_0x2a37('0x26')]({'where':{'CustomReportId':_0x2650cf[_0x2a37('0x46')]['id']},'transaction':_0x3ff28b})[_0x2a37('0x25')](function(_0x319f34){var _0x5d8b1c=_['map'](_0x2650cf[_0x2a37('0x4b')],function(_0x3daa15){delete _0x3daa15['id'];_0x3daa15['CustomReportId']=_0x2650cf[_0x2a37('0x46')]['id'];return _0x3daa15;});return db['AnalyticFieldReport'][_0x2a37('0x4c')](_0x5d8b1c,{'transaction':_0x3ff28b});});})['then'](function(){return db[_0x2a37('0x41')]['findAll']({'where':{'CustomReportId':_0x2650cf[_0x2a37('0x46')]['id']}});});}})[_0x2a37('0x25')](respondWithResult(_0x2eb6de,null))['catch'](handleError(_0x2eb6de,null));};
\ No newline at end of file
+var _0x831f=['keys','include','find','create','bulkCreate','body','params','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','transaction','destroy','CustomReportId','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','update','then','stack','name','send','map','rawAttributes','fieldName','key','query','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','filters','filter','merge','type','VIRTUAL','options','AnalyticFieldReport','includeAll','findAll','catch','show'];(function(_0x20a14,_0x2a6e25){var _0x1ac4be=function(_0x5b1802){while(--_0x5b1802){_0x20a14['push'](_0x20a14['shift']());}};_0x1ac4be(++_0x2a6e25);}(_0x831f,0xb4));var _0xf831=function(_0x36734a,_0xdd12e1){_0x36734a=_0x36734a-0x0;var _0x565da1=_0x831f[_0x36734a];return _0x565da1;};'use strict';var emlformat=require(_0xf831('0x0'));var rimraf=require(_0xf831('0x1'));var zipdir=require(_0xf831('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xf831('0x3'));var BPromise=require(_0xf831('0x4'));var Mustache=require(_0xf831('0x5'));var util=require(_0xf831('0x6'));var path=require(_0xf831('0x7'));var sox=require(_0xf831('0x8'));var csv=require(_0xf831('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf831('0xa'));var squel=require(_0xf831('0xb'));var crypto=require(_0xf831('0xc'));var jsforce=require(_0xf831('0xd'));var deskjs=require(_0xf831('0xe'));var toCsv=require(_0xf831('0x9'));var querystring=require(_0xf831('0xf'));var Papa=require(_0xf831('0x10'));var Redis=require(_0xf831('0x11'));var authService=require(_0xf831('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf831('0x13'));var utils=require(_0xf831('0x14'));var config=require(_0xf831('0x15'));var licenseUtil=require(_0xf831('0x16'));var db=require(_0xf831('0x17'))['db'];function respondWithStatusCode(_0x3a76d5,_0x49b83e){_0x49b83e=_0x49b83e||0xcc;return function(_0xa9e938){if(_0xa9e938){return _0x3a76d5[_0xf831('0x18')](_0x49b83e);}return _0x3a76d5[_0xf831('0x19')](_0x49b83e)[_0xf831('0x1a')]();};}function respondWithResult(_0x3aad11,_0x3d0b85){_0x3d0b85=_0x3d0b85||0xc8;return function(_0x43090c){if(_0x43090c){return _0x3aad11[_0xf831('0x19')](_0x3d0b85)['json'](_0x43090c);}};}function respondWithFilteredResult(_0x4f5c17,_0x3a726c){return function(_0x168f64){if(_0x168f64){var _0xd094e6=typeof _0x3a726c[_0xf831('0x1b')]==='undefined'&&typeof _0x3a726c[_0xf831('0x1c')]===_0xf831('0x1d');var _0x20be21=_0x168f64['count'];var _0x38a463=_0xd094e6?0x0:_0x3a726c[_0xf831('0x1b')];var _0x37e3b2=_0xd094e6?_0x168f64[_0xf831('0x1e')]:_0x3a726c['offset']+_0x3a726c['limit'];var _0x5c122f;if(_0x37e3b2>=_0x20be21){_0x37e3b2=_0x20be21;_0x5c122f=0xc8;}else{_0x5c122f=0xce;}_0x4f5c17[_0xf831('0x19')](_0x5c122f);return _0x4f5c17[_0xf831('0x1f')](_0xf831('0x20'),_0x38a463+'-'+_0x37e3b2+'/'+_0x20be21)[_0xf831('0x21')](_0x168f64);}return null;};}function patchUpdates(_0x23720d){return function(_0x1164c6){try{jsonpatch[_0xf831('0x22')](_0x1164c6,_0x23720d,!![]);}catch(_0x1d2e60){return BPromise[_0xf831('0x23')](_0x1d2e60);}return _0x1164c6['save']();};}function saveUpdates(_0x586df7,_0x3d396f){return function(_0x14fc9f){if(_0x14fc9f){return _0x14fc9f[_0xf831('0x24')](_0x586df7)[_0xf831('0x25')](function(_0x335cba){return _0x335cba;});}return null;};}function removeEntity(_0x3bff68,_0x495036){return function(_0x35baa3){if(_0x35baa3){return _0x35baa3['destroy']()[_0xf831('0x25')](function(){_0x3bff68[_0xf831('0x19')](0xcc)[_0xf831('0x1a')]();});}};}function handleEntityNotFound(_0x1c6f4f,_0x320721){return function(_0x4a01af){if(!_0x4a01af){_0x1c6f4f[_0xf831('0x18')](0x194);}return _0x4a01af;};}function handleError(_0x38a605,_0x31d2b8){_0x31d2b8=_0x31d2b8||0x1f4;return function(_0x2d667a){logger['error'](_0x2d667a[_0xf831('0x26')]);if(_0x2d667a['name']){delete _0x2d667a[_0xf831('0x27')];}_0x38a605[_0xf831('0x19')](_0x31d2b8)[_0xf831('0x28')](_0x2d667a);};}exports['index']=function(_0x4ce052,_0x5f3308){var _0x1bbf51={},_0x2ba461={},_0x563476={'count':0x0,'rows':[]};var _0x293a3f=_[_0xf831('0x29')](db['AnalyticFieldReport'][_0xf831('0x2a')],function(_0x3bf4e1){return{'name':_0x3bf4e1[_0xf831('0x2b')],'type':_0x3bf4e1['type'][_0xf831('0x2c')]};});_0x2ba461['model']=_['map'](_0x293a3f,_0xf831('0x27'));_0x2ba461['query']=_['keys'](_0x4ce052[_0xf831('0x2d')]);_0x2ba461['filters']=_[_0xf831('0x2e')](_0x2ba461[_0xf831('0x2f')],_0x2ba461[_0xf831('0x2d')]);_0x1bbf51['attributes']=_[_0xf831('0x2e')](_0x2ba461[_0xf831('0x2f')],qs['fields'](_0x4ce052[_0xf831('0x2d')][_0xf831('0x30')]));_0x1bbf51[_0xf831('0x31')]=_0x1bbf51[_0xf831('0x31')][_0xf831('0x32')]?_0x1bbf51[_0xf831('0x31')]:_0x2ba461['model'];if(!_0x4ce052['query'][_0xf831('0x33')]('nolimit')){_0x1bbf51[_0xf831('0x1c')]=qs[_0xf831('0x1c')](_0x4ce052[_0xf831('0x2d')][_0xf831('0x1c')]);_0x1bbf51[_0xf831('0x1b')]=qs[_0xf831('0x1b')](_0x4ce052[_0xf831('0x2d')][_0xf831('0x1b')]);}_0x1bbf51[_0xf831('0x34')]=qs['sort'](_0x4ce052[_0xf831('0x2d')][_0xf831('0x35')]);_0x1bbf51[_0xf831('0x36')]=qs[_0xf831('0x37')](_['pick'](_0x4ce052[_0xf831('0x2d')],_0x2ba461[_0xf831('0x37')]),_0x293a3f);if(_0x4ce052[_0xf831('0x2d')][_0xf831('0x38')]){_0x1bbf51['where']=_[_0xf831('0x39')](_0x1bbf51[_0xf831('0x36')],{'$or':_[_0xf831('0x29')](_0x293a3f,function(_0xbd90f){if(_0xbd90f[_0xf831('0x3a')]!==_0xf831('0x3b')){var _0x51535={};_0x51535[_0xbd90f[_0xf831('0x27')]]={'$like':'%'+_0x4ce052[_0xf831('0x2d')]['filter']+'%'};return _0x51535;}})});}_0x1bbf51=_[_0xf831('0x39')]({},_0x1bbf51,_0x4ce052[_0xf831('0x3c')]);var _0x3e1a94={'where':_0x1bbf51[_0xf831('0x36')]};return db[_0xf831('0x3d')][_0xf831('0x1e')](_0x3e1a94)['then'](function(_0x22ab4f){_0x563476[_0xf831('0x1e')]=_0x22ab4f;if(_0x4ce052[_0xf831('0x2d')][_0xf831('0x3e')]){_0x1bbf51['include']=[{'all':!![]}];}return db[_0xf831('0x3d')][_0xf831('0x3f')](_0x1bbf51);})[_0xf831('0x25')](function(_0x1c84b7){_0x563476['rows']=_0x1c84b7;return _0x563476;})[_0xf831('0x25')](respondWithFilteredResult(_0x5f3308,_0x1bbf51))[_0xf831('0x40')](handleError(_0x5f3308,null));};exports[_0xf831('0x41')]=function(_0x828142,_0x1be672){var _0x114032={'raw':![],'where':{'id':_0x828142['params']['id']}},_0x404e97={};_0x404e97[_0xf831('0x2f')]=_['keys'](db[_0xf831('0x3d')][_0xf831('0x2a')]);_0x404e97[_0xf831('0x2d')]=_[_0xf831('0x42')](_0x828142[_0xf831('0x2d')]);_0x404e97[_0xf831('0x37')]=_['intersection'](_0x404e97[_0xf831('0x2f')],_0x404e97[_0xf831('0x2d')]);_0x114032[_0xf831('0x31')]=_[_0xf831('0x2e')](_0x404e97[_0xf831('0x2f')],qs[_0xf831('0x30')](_0x828142['query'][_0xf831('0x30')]));_0x114032[_0xf831('0x31')]=_0x114032[_0xf831('0x31')][_0xf831('0x32')]?_0x114032[_0xf831('0x31')]:_0x404e97[_0xf831('0x2f')];if(_0x828142[_0xf831('0x2d')][_0xf831('0x3e')]){_0x114032[_0xf831('0x43')]=[{'all':!![]}];}_0x114032=_['merge']({},_0x114032,_0x828142[_0xf831('0x3c')]);return db[_0xf831('0x3d')][_0xf831('0x44')](_0x114032)['then'](handleEntityNotFound(_0x1be672,null))[_0xf831('0x25')](respondWithResult(_0x1be672,null))[_0xf831('0x40')](handleError(_0x1be672,null));};exports[_0xf831('0x45')]=function(_0x21bd45,_0x534930){return db['AnalyticFieldReport'][_0xf831('0x45')](_0x21bd45['body'],{})['then'](respondWithResult(_0x534930,0xc9))['catch'](handleError(_0x534930,null));};exports[_0xf831('0x46')]=function(_0x20cb60,_0x84aba3){return db['AnalyticFieldReport']['bulkCreate'](_0x20cb60[_0xf831('0x47')],{'raw':![],'individualHooks':!![]})[_0xf831('0x25')](respondWithResult(_0x84aba3,0xc9))[_0xf831('0x40')](handleError(_0x84aba3,null));};exports[_0xf831('0x24')]=function(_0xcb39c1,_0x5efc0c){if(_0xcb39c1['body']['id']){delete _0xcb39c1[_0xf831('0x47')]['id'];}return db[_0xf831('0x3d')]['find']({'where':{'id':_0xcb39c1[_0xf831('0x48')]['id']}})[_0xf831('0x25')](handleEntityNotFound(_0x5efc0c,null))[_0xf831('0x25')](saveUpdates(_0xcb39c1[_0xf831('0x47')],null))[_0xf831('0x25')](respondWithResult(_0x5efc0c,null))[_0xf831('0x40')](handleError(_0x5efc0c,null));};exports['destroy']=function(_0x43e3fd,_0x248aa2){return db[_0xf831('0x3d')]['find']({'where':{'id':_0x43e3fd[_0xf831('0x48')]['id']}})['then'](handleEntityNotFound(_0x248aa2,null))[_0xf831('0x25')](removeEntity(_0x248aa2,null))[_0xf831('0x40')](handleError(_0x248aa2,null));};exports[_0xf831('0x49')]=function(_0x16606d,_0x6e0e5c){return db['AnalyticFieldReport']['destroy']({'where':{'id':_0x16606d[_0xf831('0x2d')][_0xf831('0x4a')]||[]},'raw':![],'individualHooks':!![]})[_0xf831('0x25')](respondWithResult(_0x6e0e5c,0xcc))[_0xf831('0x40')](handleError(_0x6e0e5c,null));};exports[_0xf831('0x4b')]=function(_0x477673,_0x51b65c,_0xc1214a){return db[_0xf831('0x4c')][_0xf831('0x4d')]({'where':{'id':_0x477673['params']['id']}})[_0xf831('0x25')](handleEntityNotFound(_0x51b65c,null))[_0xf831('0x25')](function(_0x304efb){if(_0x304efb){return db[_0xf831('0x4e')][_0xf831('0x4f')](function(_0x12df5d){return db[_0xf831('0x3d')][_0xf831('0x50')]({'where':{'CustomReportId':_0x477673[_0xf831('0x48')]['id']},'transaction':_0x12df5d})['then'](function(_0x48bed6){var _0x5036f6=_[_0xf831('0x29')](_0x477673['body'],function(_0x11de01){delete _0x11de01['id'];_0x11de01[_0xf831('0x51')]=_0x477673[_0xf831('0x48')]['id'];return _0x11de01;});return db[_0xf831('0x3d')][_0xf831('0x46')](_0x5036f6,{'transaction':_0x12df5d});});})[_0xf831('0x25')](function(){return db[_0xf831('0x3d')][_0xf831('0x3f')]({'where':{'CustomReportId':_0x477673[_0xf831('0x48')]['id']}});});}})[_0xf831('0x25')](respondWithResult(_0x51b65c,null))[_0xf831('0x40')](handleError(_0x51b65c,null));};
\ No newline at end of file
index 111475c..5bfd9f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9134=['./analyticFieldReport.attributes','exports','define','lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment'];(function(_0x4c89e4,_0x3fa7b3){var _0x224f68=function(_0x46e34d){while(--_0x46e34d){_0x4c89e4['push'](_0x4c89e4['shift']());}};_0x224f68(++_0x3fa7b3);}(_0x9134,0x189));var _0x4913=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9134[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x4913('0x0'));var util=require(_0x4913('0x1'));var logger=require(_0x4913('0x2'))('api');var moment=require(_0x4913('0x3'));var BPromise=require(_0x4913('0x4'));var rp=require(_0x4913('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x4913('0x6'));var attributes=require(_0x4913('0x7'));module[_0x4913('0x8')]=function(_0x58e010,_0x259f1a){return _0x58e010[_0x4913('0x9')]('AnalyticFieldReport',attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x44c3=['util','../../config/logger','api','request-promise','path','../../config/environment','./analyticFieldReport.attributes','exports','define','AnalyticFieldReport','lodash'];(function(_0x507878,_0x20e48a){var _0x58b77c=function(_0x28a719){while(--_0x28a719){_0x507878['push'](_0x507878['shift']());}};_0x58b77c(++_0x20e48a);}(_0x44c3,0x8e));var _0x344c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x44c3[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x344c('0x0'));var util=require(_0x344c('0x1'));var logger=require(_0x344c('0x2'))(_0x344c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x344c('0x4'));var fs=require('fs');var path=require(_0x344c('0x5'));var rimraf=require('rimraf');var config=require(_0x344c('0x6'));var attributes=require(_0x344c('0x7'));module[_0x344c('0x8')]=function(_0x590174,_0x4d7714){return _0x590174[_0x344c('0x9')](_0x344c('0xa'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a8f7fee..7d667d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdc5=['../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring'];(function(_0x2b1d83,_0x56c19e){var _0x26d53a=function(_0xe0f10f){while(--_0xe0f10f){_0x2b1d83['push'](_0x2b1d83['shift']());}};_0x26d53a(++_0x56c19e);}(_0xfdc5,0x176));var _0x5fdc=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0xfdc5[_0x9cd4c3];return _0x4c9025;};'use strict';var _=require(_0x5fdc('0x0'));var util=require('util');var moment=require(_0x5fdc('0x1'));var BPromise=require(_0x5fdc('0x2'));var rs=require(_0x5fdc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5fdc('0x4'))['db'];var utils=require(_0x5fdc('0x5'));var logger=require(_0x5fdc('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5fdc('0x7'));var client=jayson['client'][_0x5fdc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5b6bfe,_0x47e413,_0x5228c3){return new BPromise(function(_0x3dd577,_0x5ce1b4){return client[_0x5fdc('0x9')](_0x5b6bfe,_0x5228c3)[_0x5fdc('0xa')](function(_0x5c3942){logger[_0x5fdc('0xb')](_0x5fdc('0xc'),_0x47e413,_0x5fdc('0xd'));logger[_0x5fdc('0xe')](_0x5fdc('0xf'),_0x47e413,_0x5fdc('0xd'),JSON[_0x5fdc('0x10')](_0x5c3942));if(_0x5c3942['error']){if(_0x5c3942[_0x5fdc('0x11')][_0x5fdc('0x12')]===0x1f4){logger[_0x5fdc('0x11')](_0x5fdc('0xc'),_0x47e413,_0x5c3942[_0x5fdc('0x11')][_0x5fdc('0x13')]);return _0x5ce1b4(_0x5c3942[_0x5fdc('0x11')][_0x5fdc('0x13')]);}logger[_0x5fdc('0x11')]('AnalyticFieldReport,\x20%s,\x20%s',_0x47e413,_0x5c3942['error'][_0x5fdc('0x13')]);return _0x3dd577(_0x5c3942['error'][_0x5fdc('0x13')]);}else{logger[_0x5fdc('0xb')]('AnalyticFieldReport,\x20%s,\x20%s',_0x47e413,_0x5fdc('0xd'));_0x3dd577(_0x5c3942['result'][_0x5fdc('0x13')]);}})[_0x5fdc('0x14')](function(_0x122f7b){logger['error'](_0x5fdc('0xc'),_0x47e413,_0x122f7b);_0x5ce1b4(_0x122f7b);});});}
\ No newline at end of file
+var _0xcd79=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x5d328b,_0x36c2f3){var _0x3ea083=function(_0x244153){while(--_0x244153){_0x5d328b['push'](_0x5d328b['shift']());}};_0x3ea083(++_0x36c2f3);}(_0xcd79,0xe9));var _0x9cd7=function(_0x53848d,_0x74f685){_0x53848d=_0x53848d-0x0;var _0x4a3688=_0xcd79[_0x53848d];return _0x4a3688;};'use strict';var _=require('lodash');var util=require(_0x9cd7('0x0'));var moment=require(_0x9cd7('0x1'));var BPromise=require(_0x9cd7('0x2'));var rs=require(_0x9cd7('0x3'));var fs=require('fs');var Redis=require(_0x9cd7('0x4'));var db=require(_0x9cd7('0x5'))['db'];var utils=require(_0x9cd7('0x6'));var logger=require(_0x9cd7('0x7'))(_0x9cd7('0x8'));var config=require(_0x9cd7('0x9'));var jayson=require(_0x9cd7('0xa'));var client=jayson[_0x9cd7('0xb')][_0x9cd7('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x25e628,_0x4d8ab0,_0x533858){return new BPromise(function(_0x83292f,_0x2acee1){return client['request'](_0x25e628,_0x533858)[_0x9cd7('0xd')](function(_0x2bc3d){logger[_0x9cd7('0xe')](_0x9cd7('0xf'),_0x4d8ab0,_0x9cd7('0x10'));logger[_0x9cd7('0x11')]('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x4d8ab0,_0x9cd7('0x10'),JSON[_0x9cd7('0x12')](_0x2bc3d));if(_0x2bc3d[_0x9cd7('0x13')]){if(_0x2bc3d[_0x9cd7('0x13')][_0x9cd7('0x14')]===0x1f4){logger[_0x9cd7('0x13')](_0x9cd7('0xf'),_0x4d8ab0,_0x2bc3d[_0x9cd7('0x13')]['message']);return _0x2acee1(_0x2bc3d['error'][_0x9cd7('0x15')]);}logger[_0x9cd7('0x13')](_0x9cd7('0xf'),_0x4d8ab0,_0x2bc3d['error'][_0x9cd7('0x15')]);return _0x83292f(_0x2bc3d['error'][_0x9cd7('0x15')]);}else{logger[_0x9cd7('0xe')]('AnalyticFieldReport,\x20%s,\x20%s',_0x4d8ab0,_0x9cd7('0x10'));_0x83292f(_0x2bc3d[_0x9cd7('0x16')][_0x9cd7('0x15')]);}})[_0x9cd7('0x17')](function(_0x4f9b79){logger['error'](_0x9cd7('0xf'),_0x4d8ab0,_0x4f9b79);_0x2acee1(_0x4f9b79);});});}
\ No newline at end of file
index ac5ef0b..413c832 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(_0x23965a,_0x3498e8){var _0x146906=function(_0x1cb323){while(--_0x1cb323){_0x23965a['push'](_0x23965a['shift']());}};_0x146906(++_0x3498e8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
+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(_0x44c52c,_0x4b0e94){var _0x2047f6=function(_0xa5b108){while(--_0xa5b108){_0x44c52c['push'](_0x44c52c['shift']());}};_0x2047f6(++_0x4b0e94);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'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 80fe0eb..796028c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90db=['name','exports','STRING'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0x90db,0x1c0));var _0xb90d=function(_0x4e6ae6,_0x49dba6){_0x4e6ae6=_0x4e6ae6-0x0;var _0x23c108=_0x90db[_0x4e6ae6];return _0x23c108;};'use strict';var Sequelize=require('sequelize');module[_0xb90d('0x0')]={'name':{'type':Sequelize[_0xb90d('0x1')],'allowNull':![],'unique':_0xb90d('0x2')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb350=['TEXT','sequelize','exports','STRING','name'];(function(_0x19500a,_0x317e84){var _0x21f791=function(_0x437e7d){while(--_0x437e7d){_0x19500a['push'](_0x19500a['shift']());}};_0x21f791(++_0x317e84);}(_0xb350,0x6f));var _0x0b35=function(_0x538375,_0x365e8d){_0x538375=_0x538375-0x0;var _0x1c3531=_0xb350[_0x538375];return _0x1c3531;};'use strict';var Sequelize=require(_0x0b35('0x0'));module[_0x0b35('0x1')]={'name':{'type':Sequelize[_0x0b35('0x2')],'allowNull':![],'unique':_0x0b35('0x3')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0x0b35('0x4')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 496564d..21f2792 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','get','UserProfileResource','destroy','end','error','stack','name','send','index','AnalyticMetric','fieldName','type','key','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','rows','show','params','create','body','role','user','Metrics','find','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x235f7f,_0x5ea1a0){var _0x33ea79=function(_0x114e4c){while(--_0x114e4c){_0x235f7f['push'](_0x235f7f['shift']());}};_0x33ea79(++_0x5ea1a0);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x2e3dfc,_0x454d6c){_0x2e3dfc=_0x2e3dfc-0x0;var _0x4b1245=_0x7fbe[_0x2e3dfc];return _0x4b1245;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe7fb('0x0'));var jsonpatch=require(_0xe7fb('0x1'));var rp=require(_0xe7fb('0x2'));var moment=require(_0xe7fb('0x3'));var BPromise=require(_0xe7fb('0x4'));var Mustache=require(_0xe7fb('0x5'));var util=require(_0xe7fb('0x6'));var path=require(_0xe7fb('0x7'));var sox=require(_0xe7fb('0x8'));var csv=require(_0xe7fb('0x9'));var ejs=require(_0xe7fb('0xa'));var fs=require('fs');var fs_extra=require(_0xe7fb('0xb'));var _=require(_0xe7fb('0xc'));var squel=require(_0xe7fb('0xd'));var crypto=require('crypto');var jsforce=require(_0xe7fb('0xe'));var deskjs=require(_0xe7fb('0xf'));var toCsv=require(_0xe7fb('0x9'));var querystring=require(_0xe7fb('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe7fb('0x11'));var qs=require(_0xe7fb('0x12'));var as=require(_0xe7fb('0x13'));var hardwareService=require(_0xe7fb('0x14'));var logger=require(_0xe7fb('0x15'))(_0xe7fb('0x16'));var utils=require(_0xe7fb('0x17'));var config=require(_0xe7fb('0x18'));var licenseUtil=require(_0xe7fb('0x19'));var db=require(_0xe7fb('0x1a'))['db'];function respondWithStatusCode(_0x2437d4,_0x188e1d){_0x188e1d=_0x188e1d||0xcc;return function(_0xdf9760){if(_0xdf9760){return _0x2437d4[_0xe7fb('0x1b')](_0x188e1d);}return _0x2437d4[_0xe7fb('0x1c')](_0x188e1d)['end']();};}function respondWithResult(_0x278b75,_0x2225e5){_0x2225e5=_0x2225e5||0xc8;return function(_0x5573ab){if(_0x5573ab){return _0x278b75[_0xe7fb('0x1c')](_0x2225e5)[_0xe7fb('0x1d')](_0x5573ab);}};}function respondWithFilteredResult(_0x482f7d,_0xa76acf){return function(_0x559129){if(_0x559129){var _0x12fff6=typeof _0xa76acf[_0xe7fb('0x1e')]===_0xe7fb('0x1f')&&typeof _0xa76acf[_0xe7fb('0x20')]==='undefined';var _0x892b0f=_0x559129['count'];var _0x293a47=_0x12fff6?0x0:_0xa76acf['offset'];var _0x1e77fd=_0x12fff6?_0x559129[_0xe7fb('0x21')]:_0xa76acf[_0xe7fb('0x1e')]+_0xa76acf[_0xe7fb('0x20')];var _0x5df1a1;if(_0x1e77fd>=_0x892b0f){_0x1e77fd=_0x892b0f;_0x5df1a1=0xc8;}else{_0x5df1a1=0xce;}_0x482f7d[_0xe7fb('0x1c')](_0x5df1a1);return _0x482f7d['set'](_0xe7fb('0x22'),_0x293a47+'-'+_0x1e77fd+'/'+_0x892b0f)['json'](_0x559129);}return null;};}function patchUpdates(_0x15f7a4){return function(_0x4ea664){try{jsonpatch[_0xe7fb('0x23')](_0x4ea664,_0x15f7a4,!![]);}catch(_0x135624){return BPromise['reject'](_0x135624);}return _0x4ea664[_0xe7fb('0x24')]();};}function saveUpdates(_0x4742bd,_0x3ae8f1){return function(_0x4dcb4b){if(_0x4dcb4b){return _0x4dcb4b[_0xe7fb('0x25')](_0x4742bd)[_0xe7fb('0x26')](function(_0x5da3d9){return _0x5da3d9;});}return null;};}function removeEntity(_0x5bea27,_0x52f08b){return function(_0x35e4db){if(_0x35e4db){return _0x35e4db['destroy']()['then'](function(){var _0x4026b1=_0x35e4db[_0xe7fb('0x27')]({'plain':!![]});var _0x2996ae='Metrics';return db[_0xe7fb('0x28')][_0xe7fb('0x29')]({'where':{'type':_0x2996ae,'resourceId':_0x4026b1['id']}})[_0xe7fb('0x26')](function(){return _0x35e4db;});})[_0xe7fb('0x26')](function(){_0x5bea27[_0xe7fb('0x1c')](0xcc)[_0xe7fb('0x2a')]();});}};}function handleEntityNotFound(_0x380130,_0x59e015){return function(_0x5df9f2){if(!_0x5df9f2){_0x380130[_0xe7fb('0x1b')](0x194);}return _0x5df9f2;};}function handleError(_0x3bdee9,_0xead63){_0xead63=_0xead63||0x1f4;return function(_0x4fd290){logger[_0xe7fb('0x2b')](_0x4fd290[_0xe7fb('0x2c')]);if(_0x4fd290[_0xe7fb('0x2d')]){delete _0x4fd290[_0xe7fb('0x2d')];}_0x3bdee9[_0xe7fb('0x1c')](_0xead63)[_0xe7fb('0x2e')](_0x4fd290);};}exports[_0xe7fb('0x2f')]=function(_0x3dd0be,_0x4ce993){var _0x3d1fb5={},_0x1742f3={},_0x29d1ca={'count':0x0,'rows':[]};var _0x547a04=_['map'](db[_0xe7fb('0x30')]['rawAttributes'],function(_0xac56b4){return{'name':_0xac56b4[_0xe7fb('0x31')],'type':_0xac56b4[_0xe7fb('0x32')][_0xe7fb('0x33')]};});_0x1742f3['model']=_[_0xe7fb('0x34')](_0x547a04,_0xe7fb('0x2d'));_0x1742f3[_0xe7fb('0x35')]=_[_0xe7fb('0x36')](_0x3dd0be[_0xe7fb('0x35')]);_0x1742f3['filters']=_[_0xe7fb('0x37')](_0x1742f3[_0xe7fb('0x38')],_0x1742f3[_0xe7fb('0x35')]);_0x3d1fb5[_0xe7fb('0x39')]=_[_0xe7fb('0x37')](_0x1742f3[_0xe7fb('0x38')],qs[_0xe7fb('0x3a')](_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x3a')]));_0x3d1fb5['attributes']=_0x3d1fb5[_0xe7fb('0x39')][_0xe7fb('0x3b')]?_0x3d1fb5[_0xe7fb('0x39')]:_0x1742f3['model'];if(!_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x3c')](_0xe7fb('0x3d'))){_0x3d1fb5[_0xe7fb('0x20')]=qs[_0xe7fb('0x20')](_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x20')]);_0x3d1fb5[_0xe7fb('0x1e')]=qs[_0xe7fb('0x1e')](_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x1e')]);}_0x3d1fb5[_0xe7fb('0x3e')]=qs[_0xe7fb('0x3f')](_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x3f')]);_0x3d1fb5[_0xe7fb('0x40')]=qs[_0xe7fb('0x41')](_[_0xe7fb('0x42')](_0x3dd0be[_0xe7fb('0x35')],_0x1742f3['filters']),_0x547a04);if(_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x43')]){_0x3d1fb5[_0xe7fb('0x40')]=_[_0xe7fb('0x44')](_0x3d1fb5['where'],{'$or':_[_0xe7fb('0x34')](_0x547a04,function(_0x186418){if(_0x186418[_0xe7fb('0x32')]!==_0xe7fb('0x45')){var _0x49fe9d={};_0x49fe9d[_0x186418[_0xe7fb('0x2d')]]={'$like':'%'+_0x3dd0be[_0xe7fb('0x35')][_0xe7fb('0x43')]+'%'};return _0x49fe9d;}})});}_0x3d1fb5=_[_0xe7fb('0x44')]({},_0x3d1fb5,_0x3dd0be[_0xe7fb('0x46')]);var _0xb729fc={'where':_0x3d1fb5['where']};return db[_0xe7fb('0x30')][_0xe7fb('0x21')](_0xb729fc)[_0xe7fb('0x26')](function(_0x4b263d){_0x29d1ca[_0xe7fb('0x21')]=_0x4b263d;if(_0x3dd0be[_0xe7fb('0x35')]['includeAll']){_0x3d1fb5['include']=[{'all':!![]}];}return db['AnalyticMetric']['findAll'](_0x3d1fb5);})['then'](function(_0x900d67){_0x29d1ca[_0xe7fb('0x47')]=_0x900d67;return _0x29d1ca;})[_0xe7fb('0x26')](respondWithFilteredResult(_0x4ce993,_0x3d1fb5))['catch'](handleError(_0x4ce993,null));};exports[_0xe7fb('0x48')]=function(_0x58d743,_0x19277f){var _0x32cfa4={'raw':!![],'where':{'id':_0x58d743[_0xe7fb('0x49')]['id']}},_0x4d29d3={};_0x4d29d3[_0xe7fb('0x38')]=_[_0xe7fb('0x36')](db[_0xe7fb('0x30')]['rawAttributes']);_0x4d29d3[_0xe7fb('0x35')]=_[_0xe7fb('0x36')](_0x58d743[_0xe7fb('0x35')]);_0x4d29d3['filters']=_[_0xe7fb('0x37')](_0x4d29d3[_0xe7fb('0x38')],_0x4d29d3[_0xe7fb('0x35')]);_0x32cfa4[_0xe7fb('0x39')]=_[_0xe7fb('0x37')](_0x4d29d3['model'],qs[_0xe7fb('0x3a')](_0x58d743['query'][_0xe7fb('0x3a')]));_0x32cfa4[_0xe7fb('0x39')]=_0x32cfa4[_0xe7fb('0x39')][_0xe7fb('0x3b')]?_0x32cfa4[_0xe7fb('0x39')]:_0x4d29d3['model'];if(_0x58d743[_0xe7fb('0x35')]['includeAll']){_0x32cfa4['include']=[{'all':!![]}];}_0x32cfa4=_[_0xe7fb('0x44')]({},_0x32cfa4,_0x58d743[_0xe7fb('0x46')]);return db[_0xe7fb('0x30')]['find'](_0x32cfa4)[_0xe7fb('0x26')](handleEntityNotFound(_0x19277f,null))[_0xe7fb('0x26')](respondWithResult(_0x19277f,null))['catch'](handleError(_0x19277f,null));};exports['create']=function(_0x284bcb,_0x42270b){return db[_0xe7fb('0x30')][_0xe7fb('0x4a')](_0x284bcb[_0xe7fb('0x4b')],{})[_0xe7fb('0x26')](function(_0x18a590){var _0x347177=_0x284bcb['user'][_0xe7fb('0x27')]({'plain':!![]});if(!_0x347177)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x347177[_0xe7fb('0x4c')]===_0xe7fb('0x4d')){var _0x5cedfb=_0x18a590[_0xe7fb('0x27')]({'plain':!![]});var _0x5efd24=_0xe7fb('0x4e');return db['UserProfileSection'][_0xe7fb('0x4f')]({'where':{'name':_0x5efd24,'userProfileId':_0x347177['userProfileId']},'raw':!![]})[_0xe7fb('0x26')](function(_0x59158c){if(_0x59158c&&_0x59158c[_0xe7fb('0x50')]===0x0){return db[_0xe7fb('0x28')][_0xe7fb('0x4a')]({'name':_0x5cedfb[_0xe7fb('0x2d')],'resourceId':_0x5cedfb['id'],'type':_0x59158c[_0xe7fb('0x2d')],'sectionId':_0x59158c['id']},{})[_0xe7fb('0x26')](function(){return _0x18a590;});}else{return _0x18a590;}})[_0xe7fb('0x51')](function(_0x582a4a){logger['error'](_0xe7fb('0x52'),_0x582a4a);throw _0x582a4a;});}return _0x18a590;})['then'](respondWithResult(_0x42270b,0xc9))['catch'](handleError(_0x42270b,null));};exports['update']=function(_0x50b8df,_0x539252){if(_0x50b8df[_0xe7fb('0x4b')]['id']){delete _0x50b8df[_0xe7fb('0x4b')]['id'];}return db[_0xe7fb('0x30')][_0xe7fb('0x4f')]({'where':{'id':_0x50b8df['params']['id']}})[_0xe7fb('0x26')](handleEntityNotFound(_0x539252,null))[_0xe7fb('0x26')](saveUpdates(_0x50b8df[_0xe7fb('0x4b')],null))['then'](respondWithResult(_0x539252,null))['catch'](handleError(_0x539252,null));};exports[_0xe7fb('0x29')]=function(_0x377e5f,_0x300b8e){return db['AnalyticMetric'][_0xe7fb('0x4f')]({'where':{'id':_0x377e5f[_0xe7fb('0x49')]['id']}})[_0xe7fb('0x26')](handleEntityNotFound(_0x300b8e,null))[_0xe7fb('0x26')](removeEntity(_0x300b8e,null))['catch'](handleError(_0x300b8e,null));};
\ No newline at end of file
+var _0x9a19=['AnalyticMetric','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','options','find','body','user','UserProfileSection','autoAssociation','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','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','offset','undefined','limit','count','set','Content-Range','save','then','destroy','get','Metrics','stack','name','send','index','map'];(function(_0x215c8b,_0x1195eb){var _0x18d601=function(_0x117c23){while(--_0x117c23){_0x215c8b['push'](_0x215c8b['shift']());}};_0x18d601(++_0x1195eb);}(_0x9a19,0x114));var _0x99a1=function(_0x22ffbf,_0x16f31e){_0x22ffbf=_0x22ffbf-0x0;var _0x360c17=_0x9a19[_0x22ffbf];return _0x360c17;};'use strict';var emlformat=require(_0x99a1('0x0'));var rimraf=require(_0x99a1('0x1'));var zipdir=require(_0x99a1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x99a1('0x3'));var moment=require(_0x99a1('0x4'));var BPromise=require(_0x99a1('0x5'));var Mustache=require(_0x99a1('0x6'));var util=require(_0x99a1('0x7'));var path=require(_0x99a1('0x8'));var sox=require(_0x99a1('0x9'));var csv=require(_0x99a1('0xa'));var ejs=require(_0x99a1('0xb'));var fs=require('fs');var fs_extra=require(_0x99a1('0xc'));var _=require(_0x99a1('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x99a1('0xe'));var toCsv=require(_0x99a1('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x99a1('0xf'));var authService=require(_0x99a1('0x10'));var qs=require(_0x99a1('0x11'));var as=require(_0x99a1('0x12'));var hardwareService=require(_0x99a1('0x13'));var logger=require('../../config/logger')(_0x99a1('0x14'));var utils=require(_0x99a1('0x15'));var config=require(_0x99a1('0x16'));var licenseUtil=require(_0x99a1('0x17'));var db=require(_0x99a1('0x18'))['db'];function respondWithStatusCode(_0x1bc7aa,_0x2ff655){_0x2ff655=_0x2ff655||0xcc;return function(_0x532f56){if(_0x532f56){return _0x1bc7aa[_0x99a1('0x19')](_0x2ff655);}return _0x1bc7aa[_0x99a1('0x1a')](_0x2ff655)[_0x99a1('0x1b')]();};}function respondWithResult(_0x47815e,_0xe1a1f){_0xe1a1f=_0xe1a1f||0xc8;return function(_0x3c9ef4){if(_0x3c9ef4){return _0x47815e[_0x99a1('0x1a')](_0xe1a1f)['json'](_0x3c9ef4);}};}function respondWithFilteredResult(_0x2d81ed,_0x3e45d4){return function(_0x1bb464){if(_0x1bb464){var _0x3d40cc=typeof _0x3e45d4[_0x99a1('0x1c')]===_0x99a1('0x1d')&&typeof _0x3e45d4[_0x99a1('0x1e')]==='undefined';var _0x4f049c=_0x1bb464[_0x99a1('0x1f')];var _0xbf62f1=_0x3d40cc?0x0:_0x3e45d4[_0x99a1('0x1c')];var _0x1fcd00=_0x3d40cc?_0x1bb464[_0x99a1('0x1f')]:_0x3e45d4[_0x99a1('0x1c')]+_0x3e45d4[_0x99a1('0x1e')];var _0x3cd62c;if(_0x1fcd00>=_0x4f049c){_0x1fcd00=_0x4f049c;_0x3cd62c=0xc8;}else{_0x3cd62c=0xce;}_0x2d81ed[_0x99a1('0x1a')](_0x3cd62c);return _0x2d81ed[_0x99a1('0x20')](_0x99a1('0x21'),_0xbf62f1+'-'+_0x1fcd00+'/'+_0x4f049c)['json'](_0x1bb464);}return null;};}function patchUpdates(_0x3023a1){return function(_0x20007e){try{jsonpatch['apply'](_0x20007e,_0x3023a1,!![]);}catch(_0x38435b){return BPromise['reject'](_0x38435b);}return _0x20007e[_0x99a1('0x22')]();};}function saveUpdates(_0x2927b0,_0x2d6f20){return function(_0x2d3b82){if(_0x2d3b82){return _0x2d3b82['update'](_0x2927b0)[_0x99a1('0x23')](function(_0x1268a7){return _0x1268a7;});}return null;};}function removeEntity(_0x483c17,_0x44df2d){return function(_0x5b5dfa){if(_0x5b5dfa){return _0x5b5dfa[_0x99a1('0x24')]()[_0x99a1('0x23')](function(){var _0x179597=_0x5b5dfa[_0x99a1('0x25')]({'plain':!![]});var _0x3c813=_0x99a1('0x26');return db['UserProfileResource'][_0x99a1('0x24')]({'where':{'type':_0x3c813,'resourceId':_0x179597['id']}})['then'](function(){return _0x5b5dfa;});})['then'](function(){_0x483c17[_0x99a1('0x1a')](0xcc)[_0x99a1('0x1b')]();});}};}function handleEntityNotFound(_0xa6799b,_0x15a0b6){return function(_0x25d560){if(!_0x25d560){_0xa6799b[_0x99a1('0x19')](0x194);}return _0x25d560;};}function handleError(_0x183037,_0x549645){_0x549645=_0x549645||0x1f4;return function(_0xf41b0d){logger['error'](_0xf41b0d[_0x99a1('0x27')]);if(_0xf41b0d[_0x99a1('0x28')]){delete _0xf41b0d[_0x99a1('0x28')];}_0x183037['status'](_0x549645)[_0x99a1('0x29')](_0xf41b0d);};}exports[_0x99a1('0x2a')]=function(_0x5718b9,_0x37514e){var _0x1434a0={},_0x36aa34={},_0x303d1e={'count':0x0,'rows':[]};var _0x2a5b8c=_[_0x99a1('0x2b')](db[_0x99a1('0x2c')][_0x99a1('0x2d')],function(_0x52da8d){return{'name':_0x52da8d['fieldName'],'type':_0x52da8d[_0x99a1('0x2e')]['key']};});_0x36aa34[_0x99a1('0x2f')]=_[_0x99a1('0x2b')](_0x2a5b8c,'name');_0x36aa34[_0x99a1('0x30')]=_[_0x99a1('0x31')](_0x5718b9[_0x99a1('0x30')]);_0x36aa34[_0x99a1('0x32')]=_[_0x99a1('0x33')](_0x36aa34[_0x99a1('0x2f')],_0x36aa34[_0x99a1('0x30')]);_0x1434a0[_0x99a1('0x34')]=_[_0x99a1('0x33')](_0x36aa34[_0x99a1('0x2f')],qs[_0x99a1('0x35')](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x35')]));_0x1434a0[_0x99a1('0x34')]=_0x1434a0['attributes']['length']?_0x1434a0[_0x99a1('0x34')]:_0x36aa34[_0x99a1('0x2f')];if(!_0x5718b9[_0x99a1('0x30')][_0x99a1('0x36')](_0x99a1('0x37'))){_0x1434a0[_0x99a1('0x1e')]=qs[_0x99a1('0x1e')](_0x5718b9['query'][_0x99a1('0x1e')]);_0x1434a0[_0x99a1('0x1c')]=qs['offset'](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x1c')]);}_0x1434a0[_0x99a1('0x38')]=qs[_0x99a1('0x39')](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x39')]);_0x1434a0[_0x99a1('0x3a')]=qs[_0x99a1('0x32')](_[_0x99a1('0x3b')](_0x5718b9[_0x99a1('0x30')],_0x36aa34[_0x99a1('0x32')]),_0x2a5b8c);if(_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3c')]){_0x1434a0['where']=_['merge'](_0x1434a0['where'],{'$or':_[_0x99a1('0x2b')](_0x2a5b8c,function(_0x169df7){if(_0x169df7[_0x99a1('0x2e')]!==_0x99a1('0x3d')){var _0x40613a={};_0x40613a[_0x169df7['name']]={'$like':'%'+_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3c')]+'%'};return _0x40613a;}})});}_0x1434a0=_[_0x99a1('0x3e')]({},_0x1434a0,_0x5718b9['options']);var _0x49be37={'where':_0x1434a0[_0x99a1('0x3a')]};return db[_0x99a1('0x2c')][_0x99a1('0x1f')](_0x49be37)['then'](function(_0x6c4cb){_0x303d1e[_0x99a1('0x1f')]=_0x6c4cb;if(_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3f')]){_0x1434a0[_0x99a1('0x40')]=[{'all':!![]}];}return db[_0x99a1('0x2c')][_0x99a1('0x41')](_0x1434a0);})[_0x99a1('0x23')](function(_0x1c4ce4){_0x303d1e[_0x99a1('0x42')]=_0x1c4ce4;return _0x303d1e;})['then'](respondWithFilteredResult(_0x37514e,_0x1434a0))[_0x99a1('0x43')](handleError(_0x37514e,null));};exports[_0x99a1('0x44')]=function(_0x3d5373,_0x50d38b){var _0x1beed2={'raw':!![],'where':{'id':_0x3d5373[_0x99a1('0x45')]['id']}},_0x51536d={};_0x51536d[_0x99a1('0x2f')]=_[_0x99a1('0x31')](db[_0x99a1('0x2c')][_0x99a1('0x2d')]);_0x51536d[_0x99a1('0x30')]=_['keys'](_0x3d5373[_0x99a1('0x30')]);_0x51536d['filters']=_[_0x99a1('0x33')](_0x51536d[_0x99a1('0x2f')],_0x51536d[_0x99a1('0x30')]);_0x1beed2[_0x99a1('0x34')]=_[_0x99a1('0x33')](_0x51536d[_0x99a1('0x2f')],qs[_0x99a1('0x35')](_0x3d5373[_0x99a1('0x30')][_0x99a1('0x35')]));_0x1beed2[_0x99a1('0x34')]=_0x1beed2[_0x99a1('0x34')]['length']?_0x1beed2[_0x99a1('0x34')]:_0x51536d[_0x99a1('0x2f')];if(_0x3d5373['query'][_0x99a1('0x3f')]){_0x1beed2[_0x99a1('0x40')]=[{'all':!![]}];}_0x1beed2=_[_0x99a1('0x3e')]({},_0x1beed2,_0x3d5373[_0x99a1('0x46')]);return db[_0x99a1('0x2c')][_0x99a1('0x47')](_0x1beed2)[_0x99a1('0x23')](handleEntityNotFound(_0x50d38b,null))['then'](respondWithResult(_0x50d38b,null))[_0x99a1('0x43')](handleError(_0x50d38b,null));};exports['create']=function(_0x1d4d3f,_0x269798){return db['AnalyticMetric']['create'](_0x1d4d3f[_0x99a1('0x48')],{})[_0x99a1('0x23')](function(_0x462c15){var _0x4519fb=_0x1d4d3f[_0x99a1('0x49')]['get']({'plain':!![]});if(!_0x4519fb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4519fb['role']===_0x99a1('0x49')){var _0x4ae90e=_0x462c15[_0x99a1('0x25')]({'plain':!![]});var _0x30fdfb=_0x99a1('0x26');return db[_0x99a1('0x4a')][_0x99a1('0x47')]({'where':{'name':_0x30fdfb,'userProfileId':_0x4519fb['userProfileId']},'raw':!![]})[_0x99a1('0x23')](function(_0x22bfd8){if(_0x22bfd8&&_0x22bfd8[_0x99a1('0x4b')]===0x0){return db['UserProfileResource'][_0x99a1('0x4c')]({'name':_0x4ae90e['name'],'resourceId':_0x4ae90e['id'],'type':_0x22bfd8['name'],'sectionId':_0x22bfd8['id']},{})[_0x99a1('0x23')](function(){return _0x462c15;});}else{return _0x462c15;}})[_0x99a1('0x43')](function(_0x1dd17b){logger[_0x99a1('0x4d')](_0x99a1('0x4e'),_0x1dd17b);throw _0x1dd17b;});}return _0x462c15;})[_0x99a1('0x23')](respondWithResult(_0x269798,0xc9))[_0x99a1('0x43')](handleError(_0x269798,null));};exports[_0x99a1('0x4f')]=function(_0x16641e,_0x53e9eb){if(_0x16641e[_0x99a1('0x48')]['id']){delete _0x16641e['body']['id'];}return db[_0x99a1('0x2c')][_0x99a1('0x47')]({'where':{'id':_0x16641e['params']['id']}})[_0x99a1('0x23')](handleEntityNotFound(_0x53e9eb,null))[_0x99a1('0x23')](saveUpdates(_0x16641e[_0x99a1('0x48')],null))[_0x99a1('0x23')](respondWithResult(_0x53e9eb,null))[_0x99a1('0x43')](handleError(_0x53e9eb,null));};exports[_0x99a1('0x24')]=function(_0x157c49,_0x1a5658){return db[_0x99a1('0x2c')][_0x99a1('0x47')]({'where':{'id':_0x157c49[_0x99a1('0x45')]['id']}})[_0x99a1('0x23')](handleEntityNotFound(_0x1a5658,null))['then'](removeEntity(_0x1a5658,null))['catch'](handleError(_0x1a5658,null));};
\ No newline at end of file
index 6bc0117..7c4c1c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eb2=['bluebird','request-promise','rimraf','define','analytics_metrics','lodash','../../config/logger','api','moment'];(function(_0x946518,_0x22816f){var _0x909b69=function(_0x2fa5a4){while(--_0x2fa5a4){_0x946518['push'](_0x946518['shift']());}};_0x909b69(++_0x22816f);}(_0x0eb2,0x11c));var _0x20eb=function(_0x95a908,_0x227e95){_0x95a908=_0x95a908-0x0;var _0x436da9=_0x0eb2[_0x95a908];return _0x436da9;};'use strict';var _=require(_0x20eb('0x0'));var util=require('util');var logger=require(_0x20eb('0x1'))(_0x20eb('0x2'));var moment=require(_0x20eb('0x3'));var BPromise=require(_0x20eb('0x4'));var rp=require(_0x20eb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x20eb('0x6'));var config=require('../../config/environment');var attributes=require('./analyticMetric.attributes');module['exports']=function(_0x314f8a,_0x2f7d52){return _0x314f8a[_0x20eb('0x7')]('AnalyticMetric',attributes,{'tableName':_0x20eb('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x07d7=['path','rimraf','../../config/environment','./analyticMetric.attributes','exports','define','AnalyticMetric','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x377743,_0x584cab){var _0x30ae30=function(_0x5dde9b){while(--_0x5dde9b){_0x377743['push'](_0x377743['shift']());}};_0x30ae30(++_0x584cab);}(_0x07d7,0x85));var _0x707d=function(_0x1c06f4,_0x2feba6){_0x1c06f4=_0x1c06f4-0x0;var _0x1a727e=_0x07d7[_0x1c06f4];return _0x1a727e;};'use strict';var _=require(_0x707d('0x0'));var util=require(_0x707d('0x1'));var logger=require(_0x707d('0x2'))(_0x707d('0x3'));var moment=require(_0x707d('0x4'));var BPromise=require(_0x707d('0x5'));var rp=require(_0x707d('0x6'));var fs=require('fs');var path=require(_0x707d('0x7'));var rimraf=require(_0x707d('0x8'));var config=require(_0x707d('0x9'));var attributes=require(_0x707d('0xa'));module[_0x707d('0xb')]=function(_0x1808da,_0x1456bd){return _0x1808da[_0x707d('0xc')](_0x707d('0xd'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e7d7553..52ef319 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96e4=['stringify','error','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','AnalyticMetric,\x20%s,\x20%s,\x20%s'];(function(_0x1f8b5b,_0x21eff7){var _0x1417ba=function(_0x40a355){while(--_0x40a355){_0x1f8b5b['push'](_0x1f8b5b['shift']());}};_0x1417ba(++_0x21eff7);}(_0x96e4,0x158));var _0x496e=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x96e4[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x496e('0x0'));var util=require(_0x496e('0x1'));var moment=require(_0x496e('0x2'));var BPromise=require(_0x496e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x496e('0x4'));var db=require(_0x496e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x496e('0x6'))(_0x496e('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x496e('0x8')][_0x496e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x22ed3b,_0x5bb431,_0xa6cf0d){return new BPromise(function(_0x2f67f3,_0x49c2ec){return client[_0x496e('0xa')](_0x22ed3b,_0xa6cf0d)[_0x496e('0xb')](function(_0x4d233f){logger[_0x496e('0xc')](_0x496e('0xd'),_0x5bb431,_0x496e('0xe'));logger['debug'](_0x496e('0xf'),_0x5bb431,_0x496e('0xe'),JSON[_0x496e('0x10')](_0x4d233f));if(_0x4d233f[_0x496e('0x11')]){if(_0x4d233f[_0x496e('0x11')]['code']===0x1f4){logger[_0x496e('0x11')](_0x496e('0xd'),_0x5bb431,_0x4d233f[_0x496e('0x11')][_0x496e('0x12')]);return _0x49c2ec(_0x4d233f[_0x496e('0x11')][_0x496e('0x12')]);}logger['error'](_0x496e('0xd'),_0x5bb431,_0x4d233f[_0x496e('0x11')][_0x496e('0x12')]);return _0x2f67f3(_0x4d233f[_0x496e('0x11')][_0x496e('0x12')]);}else{logger[_0x496e('0xc')](_0x496e('0xd'),_0x5bb431,_0x496e('0xe'));_0x2f67f3(_0x4d233f[_0x496e('0x13')]['message']);}})['catch'](function(_0x2de41d){logger['error'](_0x496e('0xd'),_0x5bb431,_0x2de41d);_0x49c2ec(_0x2de41d);});});}
\ No newline at end of file
+var _0x8e06=['info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x53e38d,_0x615954){var _0x38da99=function(_0x3a55f5){while(--_0x3a55f5){_0x53e38d['push'](_0x53e38d['shift']());}};_0x38da99(++_0x615954);}(_0x8e06,0x120));var _0x68e0=function(_0x29311d,_0x3f9e23){_0x29311d=_0x29311d-0x0;var _0xa29b8f=_0x8e06[_0x29311d];return _0xa29b8f;};'use strict';var _=require(_0x68e0('0x0'));var util=require(_0x68e0('0x1'));var moment=require(_0x68e0('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x68e0('0x3'));var db=require(_0x68e0('0x4'))['db'];var utils=require(_0x68e0('0x5'));var logger=require(_0x68e0('0x6'))(_0x68e0('0x7'));var config=require(_0x68e0('0x8'));var jayson=require(_0x68e0('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x154032,_0x45dcb9,_0x478826){return new BPromise(function(_0x15a5ac,_0x13eb12){return client[_0x68e0('0xa')](_0x154032,_0x478826)[_0x68e0('0xb')](function(_0x49940c){logger[_0x68e0('0xc')](_0x68e0('0xd'),_0x45dcb9,_0x68e0('0xe'));logger[_0x68e0('0xf')]('AnalyticMetric,\x20%s,\x20%s,\x20%s',_0x45dcb9,'request\x20sent',JSON['stringify'](_0x49940c));if(_0x49940c[_0x68e0('0x10')]){if(_0x49940c[_0x68e0('0x10')][_0x68e0('0x11')]===0x1f4){logger[_0x68e0('0x10')]('AnalyticMetric,\x20%s,\x20%s',_0x45dcb9,_0x49940c[_0x68e0('0x10')][_0x68e0('0x12')]);return _0x13eb12(_0x49940c[_0x68e0('0x10')][_0x68e0('0x12')]);}logger[_0x68e0('0x10')]('AnalyticMetric,\x20%s,\x20%s',_0x45dcb9,_0x49940c[_0x68e0('0x10')][_0x68e0('0x12')]);return _0x15a5ac(_0x49940c[_0x68e0('0x10')][_0x68e0('0x12')]);}else{logger[_0x68e0('0xc')](_0x68e0('0xd'),_0x45dcb9,_0x68e0('0xe'));_0x15a5ac(_0x49940c['result'][_0x68e0('0x12')]);}})[_0x68e0('0x13')](function(_0x1fce6f){logger[_0x68e0('0x10')](_0x68e0('0xd'),_0x45dcb9,_0x1fce6f);_0x13eb12(_0x1fce6f);});});}
\ No newline at end of file
index e7ed1be..e48d947 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41fe=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','post','put','delete','exports'];(function(_0x3e436d,_0x33af04){var _0x2b95a5=function(_0x4f520b){while(--_0x4f520b){_0x3e436d['push'](_0x3e436d['shift']());}};_0x2b95a5(++_0x33af04);}(_0x41fe,0xd1));var _0xe41f=function(_0x462999,_0x24d200){_0x462999=_0x462999-0x0;var _0x4b1366=_0x41fe[_0x462999];return _0x4b1366;};'use strict';var multer=require(_0xe41f('0x0'));var util=require(_0xe41f('0x1'));var path=require(_0xe41f('0x2'));var timeout=require(_0xe41f('0x3'));var express=require(_0xe41f('0x4'));var router=express[_0xe41f('0x5')]();var fs_extra=require(_0xe41f('0x6'));var auth=require(_0xe41f('0x7'));var interaction=require(_0xe41f('0x8'));var config=require(_0xe41f('0x9'));var controller=require(_0xe41f('0xa'));router[_0xe41f('0xb')]('/',auth[_0xe41f('0xc')](),controller[_0xe41f('0xd')]);router[_0xe41f('0xb')](_0xe41f('0xe'),auth[_0xe41f('0xc')](),controller['show']);router[_0xe41f('0xf')]('/',auth[_0xe41f('0xc')](),controller['create']);router[_0xe41f('0x10')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xe41f('0x11')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xe41f('0x12')]=router;
\ No newline at end of file
+var _0x885a=['put','update','delete','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','index','/:id','show','post','isAuthenticated'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x885a,0x180));var _0xa885=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x885a[_0x2c91e9];return _0x13f0ff;};'use strict';var multer=require('multer');var util=require(_0xa885('0x0'));var path=require(_0xa885('0x1'));var timeout=require(_0xa885('0x2'));var express=require(_0xa885('0x3'));var router=express['Router']();var fs_extra=require(_0xa885('0x4'));var auth=require(_0xa885('0x5'));var interaction=require(_0xa885('0x6'));var config=require(_0xa885('0x7'));var controller=require(_0xa885('0x8'));router[_0xa885('0x9')]('/',auth['isAuthenticated'](),controller[_0xa885('0xa')]);router[_0xa885('0x9')](_0xa885('0xb'),auth['isAuthenticated'](),controller[_0xa885('0xc')]);router[_0xa885('0xd')]('/',auth[_0xa885('0xe')](),controller['create']);router[_0xa885('0xf')](_0xa885('0xb'),auth[_0xa885('0xe')](),controller[_0xa885('0x10')]);router[_0xa885('0x11')](_0xa885('0xb'),auth[_0xa885('0xe')](),controller['destroy']);module[_0xa885('0x12')]=router;
\ No newline at end of file
index 2b08018..aab7815 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd643=['sequelize','TEXT'];(function(_0x23c9f2,_0x1110db){var _0x4496b9=function(_0x1308fa){while(--_0x1308fa){_0x23c9f2['push'](_0x23c9f2['shift']());}};_0x4496b9(++_0x1110db);}(_0xd643,0x1ae));var _0x3d64=function(_0x3a4f3d,_0x1e54cc){_0x3a4f3d=_0x3a4f3d-0x0;var _0x44ecc7=_0xd643[_0x3a4f3d];return _0x44ecc7;};'use strict';var Sequelize=require(_0x3d64('0x0'));module['exports']={'tree':{'type':Sequelize[_0x3d64('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xfef2=['exports','sequelize'];(function(_0x22abdb,_0x4ef236){var _0x3bf281=function(_0x56098b){while(--_0x56098b){_0x22abdb['push'](_0x22abdb['shift']());}};_0x3bf281(++_0x4ef236);}(_0xfef2,0xe7));var _0x2fef=function(_0x499001,_0x3f27ae){_0x499001=_0x499001-0x0;var _0x320c65=_0xfef2[_0x499001];return _0x320c65;};'use strict';var Sequelize=require(_0x2fef('0x0'));module[_0x2fef('0x1')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
index 21ea3a5..8c78946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa0e=['intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','includeAll','include','rows','show','params','find','catch','create','body','destroy','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes'];(function(_0x23af2c,_0x1f0ed3){var _0x4e6982=function(_0x586020){while(--_0x586020){_0x23af2c['push'](_0x23af2c['shift']());}};_0x4e6982(++_0x1f0ed3);}(_0xaa0e,0x139));var _0xeaa0=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xaa0e[_0x43d11d];return _0x38cd08;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeaa0('0x0'));var zipdir=require(_0xeaa0('0x1'));var jsonpatch=require(_0xeaa0('0x2'));var rp=require(_0xeaa0('0x3'));var moment=require('moment');var BPromise=require(_0xeaa0('0x4'));var Mustache=require(_0xeaa0('0x5'));var util=require(_0xeaa0('0x6'));var path=require('path');var sox=require(_0xeaa0('0x7'));var csv=require(_0xeaa0('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xeaa0('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xeaa0('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xeaa0('0x8'));var querystring=require(_0xeaa0('0xb'));var Papa=require('papaparse');var Redis=require(_0xeaa0('0xc'));var authService=require(_0xeaa0('0xd'));var qs=require(_0xeaa0('0xe'));var as=require(_0xeaa0('0xf'));var hardwareService=require(_0xeaa0('0x10'));var logger=require(_0xeaa0('0x11'))(_0xeaa0('0x12'));var utils=require(_0xeaa0('0x13'));var config=require(_0xeaa0('0x14'));var licenseUtil=require(_0xeaa0('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e4a33,_0x177aa0){_0x177aa0=_0x177aa0||0xcc;return function(_0x3d9b6a){if(_0x3d9b6a){return _0x1e4a33[_0xeaa0('0x16')](_0x177aa0);}return _0x1e4a33[_0xeaa0('0x17')](_0x177aa0)[_0xeaa0('0x18')]();};}function respondWithResult(_0x5bde88,_0x3f2774){_0x3f2774=_0x3f2774||0xc8;return function(_0x47ca83){if(_0x47ca83){return _0x5bde88[_0xeaa0('0x17')](_0x3f2774)[_0xeaa0('0x19')](_0x47ca83);}};}function respondWithFilteredResult(_0x372f09,_0x8aa816){return function(_0x4aafcc){if(_0x4aafcc){var _0x4c60b3=typeof _0x8aa816[_0xeaa0('0x1a')]==='undefined'&&typeof _0x8aa816['limit']===_0xeaa0('0x1b');var _0x9869c3=_0x4aafcc['count'];var _0x1e6c1c=_0x4c60b3?0x0:_0x8aa816[_0xeaa0('0x1a')];var _0x109448=_0x4c60b3?_0x4aafcc[_0xeaa0('0x1c')]:_0x8aa816['offset']+_0x8aa816[_0xeaa0('0x1d')];var _0x1cc6d1;if(_0x109448>=_0x9869c3){_0x109448=_0x9869c3;_0x1cc6d1=0xc8;}else{_0x1cc6d1=0xce;}_0x372f09[_0xeaa0('0x17')](_0x1cc6d1);return _0x372f09[_0xeaa0('0x1e')](_0xeaa0('0x1f'),_0x1e6c1c+'-'+_0x109448+'/'+_0x9869c3)[_0xeaa0('0x19')](_0x4aafcc);}return null;};}function patchUpdates(_0x23f92c){return function(_0x4c7d2c){try{jsonpatch[_0xeaa0('0x20')](_0x4c7d2c,_0x23f92c,!![]);}catch(_0x1d3851){return BPromise[_0xeaa0('0x21')](_0x1d3851);}return _0x4c7d2c[_0xeaa0('0x22')]();};}function saveUpdates(_0x5933ad,_0x4aeee4){return function(_0x433bf0){if(_0x433bf0){return _0x433bf0[_0xeaa0('0x23')](_0x5933ad)[_0xeaa0('0x24')](function(_0x514467){return _0x514467;});}return null;};}function removeEntity(_0xb827c8,_0x18b783){return function(_0x4c50f8){if(_0x4c50f8){return _0x4c50f8['destroy']()[_0xeaa0('0x24')](function(){_0xb827c8[_0xeaa0('0x17')](0xcc)[_0xeaa0('0x18')]();});}};}function handleEntityNotFound(_0x5eaa7e,_0x486ce5){return function(_0x504d8c){if(!_0x504d8c){_0x5eaa7e[_0xeaa0('0x16')](0x194);}return _0x504d8c;};}function handleError(_0x84919a,_0x44e135){_0x44e135=_0x44e135||0x1f4;return function(_0x5809ec){logger[_0xeaa0('0x25')](_0x5809ec[_0xeaa0('0x26')]);if(_0x5809ec[_0xeaa0('0x27')]){delete _0x5809ec[_0xeaa0('0x27')];}_0x84919a[_0xeaa0('0x17')](_0x44e135)['send'](_0x5809ec);};}exports[_0xeaa0('0x28')]=function(_0x10c57e,_0x292296){var _0x41bf7b={},_0x33d821={},_0x465a1f={'count':0x0,'rows':[]};var _0x35b0af=_[_0xeaa0('0x29')](db[_0xeaa0('0x2a')][_0xeaa0('0x2b')],function(_0xffea96){return{'name':_0xffea96[_0xeaa0('0x2c')],'type':_0xffea96[_0xeaa0('0x2d')][_0xeaa0('0x2e')]};});_0x33d821[_0xeaa0('0x2f')]=_[_0xeaa0('0x29')](_0x35b0af,'name');_0x33d821[_0xeaa0('0x30')]=_[_0xeaa0('0x31')](_0x10c57e[_0xeaa0('0x30')]);_0x33d821[_0xeaa0('0x32')]=_['intersection'](_0x33d821[_0xeaa0('0x2f')],_0x33d821['query']);_0x41bf7b[_0xeaa0('0x33')]=_[_0xeaa0('0x34')](_0x33d821['model'],qs[_0xeaa0('0x35')](_0x10c57e[_0xeaa0('0x30')][_0xeaa0('0x35')]));_0x41bf7b['attributes']=_0x41bf7b[_0xeaa0('0x33')][_0xeaa0('0x36')]?_0x41bf7b[_0xeaa0('0x33')]:_0x33d821[_0xeaa0('0x2f')];if(!_0x10c57e['query'][_0xeaa0('0x37')](_0xeaa0('0x38'))){_0x41bf7b[_0xeaa0('0x1d')]=qs[_0xeaa0('0x1d')](_0x10c57e[_0xeaa0('0x30')][_0xeaa0('0x1d')]);_0x41bf7b[_0xeaa0('0x1a')]=qs[_0xeaa0('0x1a')](_0x10c57e[_0xeaa0('0x30')][_0xeaa0('0x1a')]);}_0x41bf7b[_0xeaa0('0x39')]=qs['sort'](_0x10c57e[_0xeaa0('0x30')]['sort']);_0x41bf7b[_0xeaa0('0x3a')]=qs[_0xeaa0('0x32')](_[_0xeaa0('0x3b')](_0x10c57e[_0xeaa0('0x30')],_0x33d821['filters']),_0x35b0af);if(_0x10c57e[_0xeaa0('0x30')][_0xeaa0('0x3c')]){_0x41bf7b['where']=_[_0xeaa0('0x3d')](_0x41bf7b['where'],{'$or':_[_0xeaa0('0x29')](_0x35b0af,function(_0x1802e2){if(_0x1802e2[_0xeaa0('0x2d')]!=='VIRTUAL'){var _0x32f4d6={};_0x32f4d6[_0x1802e2[_0xeaa0('0x27')]]={'$like':'%'+_0x10c57e['query'][_0xeaa0('0x3c')]+'%'};return _0x32f4d6;}})});}_0x41bf7b=_[_0xeaa0('0x3d')]({},_0x41bf7b,_0x10c57e[_0xeaa0('0x3e')]);var _0x42e0dc={'where':_0x41bf7b[_0xeaa0('0x3a')]};return db[_0xeaa0('0x2a')][_0xeaa0('0x1c')](_0x42e0dc)[_0xeaa0('0x24')](function(_0x3113b6){_0x465a1f['count']=_0x3113b6;if(_0x10c57e[_0xeaa0('0x30')][_0xeaa0('0x3f')]){_0x41bf7b[_0xeaa0('0x40')]=[{'all':!![]}];}return db['AnalyticTreeReport']['findAll'](_0x41bf7b);})[_0xeaa0('0x24')](function(_0xab7878){_0x465a1f[_0xeaa0('0x41')]=_0xab7878;return _0x465a1f;})['then'](respondWithFilteredResult(_0x292296,_0x41bf7b))['catch'](handleError(_0x292296,null));};exports[_0xeaa0('0x42')]=function(_0x40f984,_0x485b8f){var _0x56d331={'raw':!![],'where':{'id':_0x40f984[_0xeaa0('0x43')]['id']}},_0x46fb67={};_0x46fb67[_0xeaa0('0x2f')]=_[_0xeaa0('0x31')](db[_0xeaa0('0x2a')][_0xeaa0('0x2b')]);_0x46fb67[_0xeaa0('0x30')]=_[_0xeaa0('0x31')](_0x40f984['query']);_0x46fb67[_0xeaa0('0x32')]=_[_0xeaa0('0x34')](_0x46fb67[_0xeaa0('0x2f')],_0x46fb67[_0xeaa0('0x30')]);_0x56d331[_0xeaa0('0x33')]=_['intersection'](_0x46fb67['model'],qs[_0xeaa0('0x35')](_0x40f984[_0xeaa0('0x30')][_0xeaa0('0x35')]));_0x56d331[_0xeaa0('0x33')]=_0x56d331[_0xeaa0('0x33')]['length']?_0x56d331[_0xeaa0('0x33')]:_0x46fb67[_0xeaa0('0x2f')];if(_0x40f984[_0xeaa0('0x30')][_0xeaa0('0x3f')]){_0x56d331['include']=[{'all':!![]}];}_0x56d331=_[_0xeaa0('0x3d')]({},_0x56d331,_0x40f984['options']);return db['AnalyticTreeReport'][_0xeaa0('0x44')](_0x56d331)[_0xeaa0('0x24')](handleEntityNotFound(_0x485b8f,null))['then'](respondWithResult(_0x485b8f,null))[_0xeaa0('0x45')](handleError(_0x485b8f,null));};exports[_0xeaa0('0x46')]=function(_0x155062,_0xdcf879){return db[_0xeaa0('0x2a')]['create'](_0x155062[_0xeaa0('0x47')],{})[_0xeaa0('0x24')](respondWithResult(_0xdcf879,0xc9))[_0xeaa0('0x45')](handleError(_0xdcf879,null));};exports[_0xeaa0('0x23')]=function(_0x1dda27,_0x55ec78){if(_0x1dda27[_0xeaa0('0x47')]['id']){delete _0x1dda27[_0xeaa0('0x47')]['id'];}return db[_0xeaa0('0x2a')][_0xeaa0('0x44')]({'where':{'id':_0x1dda27['params']['id']}})[_0xeaa0('0x24')](handleEntityNotFound(_0x55ec78,null))[_0xeaa0('0x24')](saveUpdates(_0x1dda27[_0xeaa0('0x47')],null))[_0xeaa0('0x24')](respondWithResult(_0x55ec78,null))[_0xeaa0('0x45')](handleError(_0x55ec78,null));};exports[_0xeaa0('0x48')]=function(_0x1ac2df,_0x55165c){return db[_0xeaa0('0x2a')]['find']({'where':{'id':_0x1ac2df['params']['id']}})[_0xeaa0('0x24')](handleEntityNotFound(_0x55165c,null))['then'](removeEntity(_0x55165c,null))['catch'](handleError(_0x55165c,null));};
\ No newline at end of file
+var _0x75fb=['Content-Range','apply','update','then','sendStatus','error','stack','name','send','index','map','AnalyticTreeReport','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','length','hasOwnProperty','nolimit','sort','where','filter','merge','type','include','findAll','rows','show','params','fields','includeAll','options','find','catch','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','end','status','json','offset','undefined','limit','count'];(function(_0x1f17a4,_0x14835f){var _0x25c52a=function(_0x3205c9){while(--_0x3205c9){_0x1f17a4['push'](_0x1f17a4['shift']());}};_0x25c52a(++_0x14835f);}(_0x75fb,0x74));var _0xb75f=function(_0x54f66a,_0x30761f){_0x54f66a=_0x54f66a-0x0;var _0x291bf3=_0x75fb[_0x54f66a];return _0x291bf3;};'use strict';var emlformat=require(_0xb75f('0x0'));var rimraf=require(_0xb75f('0x1'));var zipdir=require(_0xb75f('0x2'));var jsonpatch=require(_0xb75f('0x3'));var rp=require(_0xb75f('0x4'));var moment=require(_0xb75f('0x5'));var BPromise=require(_0xb75f('0x6'));var Mustache=require(_0xb75f('0x7'));var util=require(_0xb75f('0x8'));var path=require(_0xb75f('0x9'));var sox=require(_0xb75f('0xa'));var csv=require(_0xb75f('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb75f('0xc'));var _=require(_0xb75f('0xd'));var squel=require(_0xb75f('0xe'));var crypto=require(_0xb75f('0xf'));var jsforce=require(_0xb75f('0x10'));var deskjs=require(_0xb75f('0x11'));var toCsv=require(_0xb75f('0xb'));var querystring=require(_0xb75f('0x12'));var Papa=require('papaparse');var Redis=require(_0xb75f('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xb75f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb75f('0x15'));var logger=require(_0xb75f('0x16'))(_0xb75f('0x17'));var utils=require(_0xb75f('0x18'));var config=require(_0xb75f('0x19'));var licenseUtil=require(_0xb75f('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21d2e2,_0x2bf84f){_0x2bf84f=_0x2bf84f||0xcc;return function(_0x3b9e2f){if(_0x3b9e2f){return _0x21d2e2['sendStatus'](_0x2bf84f);}return _0x21d2e2['status'](_0x2bf84f)[_0xb75f('0x1b')]();};}function respondWithResult(_0x4ee84b,_0x2700f8){_0x2700f8=_0x2700f8||0xc8;return function(_0x50833b){if(_0x50833b){return _0x4ee84b[_0xb75f('0x1c')](_0x2700f8)[_0xb75f('0x1d')](_0x50833b);}};}function respondWithFilteredResult(_0x144422,_0x328b81){return function(_0x3b6335){if(_0x3b6335){var _0x3a2869=typeof _0x328b81[_0xb75f('0x1e')]===_0xb75f('0x1f')&&typeof _0x328b81[_0xb75f('0x20')]===_0xb75f('0x1f');var _0x1db086=_0x3b6335[_0xb75f('0x21')];var _0x443137=_0x3a2869?0x0:_0x328b81[_0xb75f('0x1e')];var _0x1bf5c6=_0x3a2869?_0x3b6335['count']:_0x328b81['offset']+_0x328b81[_0xb75f('0x20')];var _0x3452b8;if(_0x1bf5c6>=_0x1db086){_0x1bf5c6=_0x1db086;_0x3452b8=0xc8;}else{_0x3452b8=0xce;}_0x144422[_0xb75f('0x1c')](_0x3452b8);return _0x144422['set'](_0xb75f('0x22'),_0x443137+'-'+_0x1bf5c6+'/'+_0x1db086)[_0xb75f('0x1d')](_0x3b6335);}return null;};}function patchUpdates(_0x25d2d9){return function(_0x4f03ed){try{jsonpatch[_0xb75f('0x23')](_0x4f03ed,_0x25d2d9,!![]);}catch(_0x49d654){return BPromise['reject'](_0x49d654);}return _0x4f03ed['save']();};}function saveUpdates(_0x419d97,_0x5efccf){return function(_0x15b2f3){if(_0x15b2f3){return _0x15b2f3[_0xb75f('0x24')](_0x419d97)[_0xb75f('0x25')](function(_0x321a55){return _0x321a55;});}return null;};}function removeEntity(_0x186cd0,_0x4122ee){return function(_0xfae573){if(_0xfae573){return _0xfae573['destroy']()[_0xb75f('0x25')](function(){_0x186cd0['status'](0xcc)[_0xb75f('0x1b')]();});}};}function handleEntityNotFound(_0x35afae,_0x4b967a){return function(_0x232971){if(!_0x232971){_0x35afae[_0xb75f('0x26')](0x194);}return _0x232971;};}function handleError(_0x3fa31b,_0xb04ba2){_0xb04ba2=_0xb04ba2||0x1f4;return function(_0x3b20e5){logger[_0xb75f('0x27')](_0x3b20e5[_0xb75f('0x28')]);if(_0x3b20e5[_0xb75f('0x29')]){delete _0x3b20e5['name'];}_0x3fa31b[_0xb75f('0x1c')](_0xb04ba2)[_0xb75f('0x2a')](_0x3b20e5);};}exports[_0xb75f('0x2b')]=function(_0x4f8bc0,_0x290502){var _0x455efb={},_0x17519c={},_0x3d9d45={'count':0x0,'rows':[]};var _0x36a678=_[_0xb75f('0x2c')](db[_0xb75f('0x2d')][_0xb75f('0x2e')],function(_0x26dca2){return{'name':_0x26dca2[_0xb75f('0x2f')],'type':_0x26dca2['type'][_0xb75f('0x30')]};});_0x17519c[_0xb75f('0x31')]=_[_0xb75f('0x2c')](_0x36a678,'name');_0x17519c[_0xb75f('0x32')]=_[_0xb75f('0x33')](_0x4f8bc0[_0xb75f('0x32')]);_0x17519c[_0xb75f('0x34')]=_['intersection'](_0x17519c[_0xb75f('0x31')],_0x17519c[_0xb75f('0x32')]);_0x455efb[_0xb75f('0x35')]=_[_0xb75f('0x36')](_0x17519c[_0xb75f('0x31')],qs['fields'](_0x4f8bc0[_0xb75f('0x32')]['fields']));_0x455efb['attributes']=_0x455efb[_0xb75f('0x35')][_0xb75f('0x37')]?_0x455efb['attributes']:_0x17519c[_0xb75f('0x31')];if(!_0x4f8bc0[_0xb75f('0x32')][_0xb75f('0x38')](_0xb75f('0x39'))){_0x455efb[_0xb75f('0x20')]=qs[_0xb75f('0x20')](_0x4f8bc0[_0xb75f('0x32')]['limit']);_0x455efb[_0xb75f('0x1e')]=qs[_0xb75f('0x1e')](_0x4f8bc0[_0xb75f('0x32')][_0xb75f('0x1e')]);}_0x455efb['order']=qs[_0xb75f('0x3a')](_0x4f8bc0[_0xb75f('0x32')][_0xb75f('0x3a')]);_0x455efb[_0xb75f('0x3b')]=qs['filters'](_['pick'](_0x4f8bc0[_0xb75f('0x32')],_0x17519c[_0xb75f('0x34')]),_0x36a678);if(_0x4f8bc0[_0xb75f('0x32')][_0xb75f('0x3c')]){_0x455efb[_0xb75f('0x3b')]=_[_0xb75f('0x3d')](_0x455efb[_0xb75f('0x3b')],{'$or':_['map'](_0x36a678,function(_0x3a5a6b){if(_0x3a5a6b[_0xb75f('0x3e')]!=='VIRTUAL'){var _0x1c9b9d={};_0x1c9b9d[_0x3a5a6b[_0xb75f('0x29')]]={'$like':'%'+_0x4f8bc0['query'][_0xb75f('0x3c')]+'%'};return _0x1c9b9d;}})});}_0x455efb=_['merge']({},_0x455efb,_0x4f8bc0['options']);var _0x516f8e={'where':_0x455efb['where']};return db['AnalyticTreeReport']['count'](_0x516f8e)[_0xb75f('0x25')](function(_0x1f1c91){_0x3d9d45[_0xb75f('0x21')]=_0x1f1c91;if(_0x4f8bc0[_0xb75f('0x32')]['includeAll']){_0x455efb[_0xb75f('0x3f')]=[{'all':!![]}];}return db[_0xb75f('0x2d')][_0xb75f('0x40')](_0x455efb);})['then'](function(_0x520877){_0x3d9d45[_0xb75f('0x41')]=_0x520877;return _0x3d9d45;})[_0xb75f('0x25')](respondWithFilteredResult(_0x290502,_0x455efb))['catch'](handleError(_0x290502,null));};exports[_0xb75f('0x42')]=function(_0x12f9ad,_0xba2672){var _0x303909={'raw':!![],'where':{'id':_0x12f9ad[_0xb75f('0x43')]['id']}},_0x1bcf3a={};_0x1bcf3a[_0xb75f('0x31')]=_['keys'](db[_0xb75f('0x2d')][_0xb75f('0x2e')]);_0x1bcf3a['query']=_[_0xb75f('0x33')](_0x12f9ad[_0xb75f('0x32')]);_0x1bcf3a[_0xb75f('0x34')]=_[_0xb75f('0x36')](_0x1bcf3a[_0xb75f('0x31')],_0x1bcf3a[_0xb75f('0x32')]);_0x303909['attributes']=_[_0xb75f('0x36')](_0x1bcf3a[_0xb75f('0x31')],qs[_0xb75f('0x44')](_0x12f9ad[_0xb75f('0x32')]['fields']));_0x303909[_0xb75f('0x35')]=_0x303909[_0xb75f('0x35')]['length']?_0x303909[_0xb75f('0x35')]:_0x1bcf3a['model'];if(_0x12f9ad[_0xb75f('0x32')][_0xb75f('0x45')]){_0x303909['include']=[{'all':!![]}];}_0x303909=_[_0xb75f('0x3d')]({},_0x303909,_0x12f9ad[_0xb75f('0x46')]);return db['AnalyticTreeReport'][_0xb75f('0x47')](_0x303909)[_0xb75f('0x25')](handleEntityNotFound(_0xba2672,null))['then'](respondWithResult(_0xba2672,null))[_0xb75f('0x48')](handleError(_0xba2672,null));};exports['create']=function(_0x3fe8e2,_0x2d1d49){return db[_0xb75f('0x2d')]['create'](_0x3fe8e2[_0xb75f('0x49')],{})[_0xb75f('0x25')](respondWithResult(_0x2d1d49,0xc9))[_0xb75f('0x48')](handleError(_0x2d1d49,null));};exports[_0xb75f('0x24')]=function(_0x73a7a6,_0x41a04f){if(_0x73a7a6[_0xb75f('0x49')]['id']){delete _0x73a7a6['body']['id'];}return db['AnalyticTreeReport']['find']({'where':{'id':_0x73a7a6[_0xb75f('0x43')]['id']}})[_0xb75f('0x25')](handleEntityNotFound(_0x41a04f,null))[_0xb75f('0x25')](saveUpdates(_0x73a7a6[_0xb75f('0x49')],null))['then'](respondWithResult(_0x41a04f,null))[_0xb75f('0x48')](handleError(_0x41a04f,null));};exports[_0xb75f('0x4a')]=function(_0x204e1e,_0x46ac0b){return db[_0xb75f('0x2d')]['find']({'where':{'id':_0x204e1e['params']['id']}})[_0xb75f('0x25')](handleEntityNotFound(_0x46ac0b,null))[_0xb75f('0x25')](removeEntity(_0x46ac0b,null))['catch'](handleError(_0x46ac0b,null));};
\ No newline at end of file
index 2be74c2..139fc73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bf1=['path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x48ac40,_0x1e3beb){var _0x55df02=function(_0x5e27d6){while(--_0x5e27d6){_0x48ac40['push'](_0x48ac40['shift']());}};_0x55df02(++_0x1e3beb);}(_0x8bf1,0x19e));var _0x18bf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8bf1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x18bf('0x0'));var util=require(_0x18bf('0x1'));var logger=require(_0x18bf('0x2'))(_0x18bf('0x3'));var moment=require('moment');var BPromise=require(_0x18bf('0x4'));var rp=require(_0x18bf('0x5'));var fs=require('fs');var path=require(_0x18bf('0x6'));var rimraf=require(_0x18bf('0x7'));var config=require(_0x18bf('0x8'));var attributes=require(_0x18bf('0x9'));module[_0x18bf('0xa')]=function(_0x43b1d7,_0x201da2){return _0x43b1d7[_0x18bf('0xb')](_0x18bf('0xc'),attributes,{'tableName':_0x18bf('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x88cc=['bluebird','request-promise','./analyticTreeReport.attributes','define','AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','moment'];(function(_0x542a9a,_0x3f7d1f){var _0x468acd=function(_0x4d71e3){while(--_0x4d71e3){_0x542a9a['push'](_0x542a9a['shift']());}};_0x468acd(++_0x3f7d1f);}(_0x88cc,0xc1));var _0xc88c=function(_0x244f5d,_0x3c98c6){_0x244f5d=_0x244f5d-0x0;var _0x1a3886=_0x88cc[_0x244f5d];return _0x1a3886;};'use strict';var _=require(_0xc88c('0x0'));var util=require(_0xc88c('0x1'));var logger=require(_0xc88c('0x2'))(_0xc88c('0x3'));var moment=require(_0xc88c('0x4'));var BPromise=require(_0xc88c('0x5'));var rp=require(_0xc88c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc88c('0x7'));module['exports']=function(_0x30eef2,_0x4caf1c){return _0x30eef2[_0xc88c('0x8')](_0xc88c('0x9'),attributes,{'tableName':_0xc88c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3c73d4f..e47530f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x1ee7a7,_0x2478b0){var _0x291a52=function(_0x54718c){while(--_0x54718c){_0x1ee7a7['push'](_0x1ee7a7['shift']());}};_0x291a52(++_0x2478b0);}(_0x2ef3,0xba));var _0x32ef=function(_0x4b30bf,_0x57d6a6){_0x4b30bf=_0x4b30bf-0x0;var _0x18dd3c=_0x2ef3[_0x4b30bf];return _0x18dd3c;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
+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(_0x13b9b6,_0x5df1b2){var _0x1a04e3=function(_0x4959b4){while(--_0x4959b4){_0x13b9b6['push'](_0x13b9b6['shift']());}};_0x1a04e3(++_0x5df1b2);}(_0x1261,0x144));var _0x1126=function(_0x261038,_0x2fab28){_0x261038=_0x261038-0x0;var _0x2fd230=_0x1261[_0x261038];return _0x2fd230;};'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
index 428e2bc..726c975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c6a=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticTreeReport.controller','isAuthenticated','show','/:id','update','delete','destroy','exports','multer','util'];(function(_0x177ea4,_0x5da123){var _0x34dbc7=function(_0x5b4426){while(--_0x5b4426){_0x177ea4['push'](_0x177ea4['shift']());}};_0x34dbc7(++_0x5da123);}(_0x5c6a,0x18e));var _0xa5c6=function(_0x26fa9b,_0x5992e2){_0x26fa9b=_0x26fa9b-0x0;var _0x1ab7df=_0x5c6a[_0x26fa9b];return _0x1ab7df;};'use strict';var multer=require(_0xa5c6('0x0'));var util=require(_0xa5c6('0x1'));var path=require(_0xa5c6('0x2'));var timeout=require(_0xa5c6('0x3'));var express=require('express');var router=express[_0xa5c6('0x4')]();var fs_extra=require(_0xa5c6('0x5'));var auth=require(_0xa5c6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa5c6('0x7'));var controller=require(_0xa5c6('0x8'));router['get']('/',auth[_0xa5c6('0x9')](),controller['index']);router['get']('/:id',auth[_0xa5c6('0x9')](),controller[_0xa5c6('0xa')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xa5c6('0xb'),auth['isAuthenticated'](),controller[_0xa5c6('0xc')]);router[_0xa5c6('0xd')](_0xa5c6('0xb'),auth[_0xa5c6('0x9')](),controller[_0xa5c6('0xe')]);module[_0xa5c6('0xf')]=router;
\ No newline at end of file
+var _0x858d=['../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x545ef9,_0x8bce57){var _0x5df334=function(_0x168b09){while(--_0x168b09){_0x545ef9['push'](_0x545ef9['shift']());}};_0x5df334(++_0x8bce57);}(_0x858d,0x1af));var _0xd858=function(_0x4f205e,_0x4e3b29){_0x4f205e=_0x4f205e-0x0;var _0x421ae7=_0x858d[_0x4f205e];return _0x421ae7;};'use strict';var multer=require(_0xd858('0x0'));var util=require(_0xd858('0x1'));var path=require(_0xd858('0x2'));var timeout=require(_0xd858('0x3'));var express=require(_0xd858('0x4'));var router=express[_0xd858('0x5')]();var fs_extra=require(_0xd858('0x6'));var auth=require(_0xd858('0x7'));var interaction=require(_0xd858('0x8'));var config=require(_0xd858('0x9'));var controller=require(_0xd858('0xa'));router[_0xd858('0xb')]('/',auth[_0xd858('0xc')](),controller[_0xd858('0xd')]);router[_0xd858('0xb')](_0xd858('0xe'),auth[_0xd858('0xc')](),controller[_0xd858('0xf')]);router[_0xd858('0x10')]('/',auth[_0xd858('0xc')](),controller[_0xd858('0x11')]);router[_0xd858('0x12')](_0xd858('0xe'),auth['isAuthenticated'](),controller[_0xd858('0x13')]);router['delete'](_0xd858('0xe'),auth['isAuthenticated'](),controller[_0xd858('0x14')]);module[_0xd858('0x15')]=router;
\ No newline at end of file
index 3fe3477..d6b3f3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd0c=['STRING','exports'];(function(_0x1fb7d1,_0x108781){var _0x2480d8=function(_0x9bc3d9){while(--_0x9bc3d9){_0x1fb7d1['push'](_0x1fb7d1['shift']());}};_0x2480d8(++_0x108781);}(_0xdd0c,0x165));var _0xcdd0=function(_0x2bb307,_0x393f95){_0x2bb307=_0x2bb307-0x0;var _0x1efad6=_0xdd0c[_0x2bb307];return _0x1efad6;};'use strict';var Sequelize=require('sequelize');module[_0xcdd0('0x0')]={'name':{'type':Sequelize[_0xcdd0('0x1')]},'basename':{'type':Sequelize[_0xcdd0('0x1')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xcee8=['sequelize','exports','STRING'];(function(_0x2b1847,_0x32f2b4){var _0x2135a0=function(_0x522327){while(--_0x522327){_0x2b1847['push'](_0x2b1847['shift']());}};_0x2135a0(++_0x32f2b4);}(_0xcee8,0xb1));var _0x8cee=function(_0x48ee52,_0x45fda5){_0x48ee52=_0x48ee52-0x0;var _0x72bb23=_0xcee8[_0x48ee52];return _0x72bb23;};'use strict';var Sequelize=require(_0x8cee('0x0'));module[_0x8cee('0x1')]={'name':{'type':Sequelize[_0x8cee('0x2')]},'basename':{'type':Sequelize[_0x8cee('0x2')]},'type':{'type':Sequelize[_0x8cee('0x2')]}};
\ No newline at end of file
index 2472b0b..cc42810 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b0a=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','sendStatus','error','stack','send','map','Attachment','rawAttributes','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','options','includeAll','findAll','rows','catch','show','params','keys','clone','include','find','omit','createdAt','updatedAt','body','update','destroy','name','file','originalname','filename','create','download','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x7b0a,0x10b));var _0xa7b0=function(_0x6d643c,_0x3fa775){_0x6d643c=_0x6d643c-0x0;var _0x183c56=_0x7b0a[_0x6d643c];return _0x183c56;};'use strict';var emlformat=require(_0xa7b0('0x0'));var rimraf=require(_0xa7b0('0x1'));var zipdir=require(_0xa7b0('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa7b0('0x3'));var moment=require(_0xa7b0('0x4'));var BPromise=require(_0xa7b0('0x5'));var Mustache=require(_0xa7b0('0x6'));var util=require(_0xa7b0('0x7'));var path=require(_0xa7b0('0x8'));var sox=require(_0xa7b0('0x9'));var csv=require(_0xa7b0('0xa'));var ejs=require(_0xa7b0('0xb'));var fs=require('fs');var fs_extra=require(_0xa7b0('0xc'));var _=require(_0xa7b0('0xd'));var squel=require(_0xa7b0('0xe'));var crypto=require(_0xa7b0('0xf'));var jsforce=require(_0xa7b0('0x10'));var deskjs=require(_0xa7b0('0x11'));var toCsv=require(_0xa7b0('0xa'));var querystring=require(_0xa7b0('0x12'));var Papa=require(_0xa7b0('0x13'));var Redis=require(_0xa7b0('0x14'));var authService=require(_0xa7b0('0x15'));var qs=require(_0xa7b0('0x16'));var as=require(_0xa7b0('0x17'));var hardwareService=require(_0xa7b0('0x18'));var logger=require('../../config/logger')(_0xa7b0('0x19'));var utils=require('../../config/utils');var config=require(_0xa7b0('0x1a'));var licenseUtil=require(_0xa7b0('0x1b'));var db=require(_0xa7b0('0x1c'))['db'];function respondWithStatusCode(_0xabd2d,_0x53e324){_0x53e324=_0x53e324||0xcc;return function(_0xda5217){if(_0xda5217){return _0xabd2d['sendStatus'](_0x53e324);}return _0xabd2d[_0xa7b0('0x1d')](_0x53e324)[_0xa7b0('0x1e')]();};}function respondWithResult(_0x2b137d,_0x4bef89){_0x4bef89=_0x4bef89||0xc8;return function(_0xd3005f){if(_0xd3005f){return _0x2b137d[_0xa7b0('0x1d')](_0x4bef89)[_0xa7b0('0x1f')](_0xd3005f);}};}function respondWithFilteredResult(_0x2f5299,_0x5d5d4e){return function(_0x319692){if(_0x319692){var _0x21e517=typeof _0x5d5d4e[_0xa7b0('0x20')]===_0xa7b0('0x21')&&typeof _0x5d5d4e[_0xa7b0('0x22')]===_0xa7b0('0x21');var _0xcd279e=_0x319692[_0xa7b0('0x23')];var _0x3a1c47=_0x21e517?0x0:_0x5d5d4e['offset'];var _0x163f31=_0x21e517?_0x319692['count']:_0x5d5d4e[_0xa7b0('0x20')]+_0x5d5d4e[_0xa7b0('0x22')];var _0x5e4b06;if(_0x163f31>=_0xcd279e){_0x163f31=_0xcd279e;_0x5e4b06=0xc8;}else{_0x5e4b06=0xce;}_0x2f5299['status'](_0x5e4b06);return _0x2f5299[_0xa7b0('0x24')](_0xa7b0('0x25'),_0x3a1c47+'-'+_0x163f31+'/'+_0xcd279e)[_0xa7b0('0x1f')](_0x319692);}return null;};}function patchUpdates(_0xfc549e){return function(_0x5455e2){try{jsonpatch[_0xa7b0('0x26')](_0x5455e2,_0xfc549e,!![]);}catch(_0x31b0d3){return BPromise[_0xa7b0('0x27')](_0x31b0d3);}return _0x5455e2[_0xa7b0('0x28')]();};}function saveUpdates(_0x1efba9,_0xb897ba){return function(_0x1ef238){if(_0x1ef238){return _0x1ef238['update'](_0x1efba9)[_0xa7b0('0x29')](function(_0xa46f4e){return _0xa46f4e;});}return null;};}function removeEntity(_0x4ba246,_0x5b5692){return function(_0x4af407){if(_0x4af407){return _0x4af407['destroy']()['then'](function(){_0x4ba246['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1bf03c,_0x37e63c){return function(_0x18a599){if(!_0x18a599){_0x1bf03c[_0xa7b0('0x2a')](0x194);}return _0x18a599;};}function handleError(_0x5cc75d,_0x1d4af3){_0x1d4af3=_0x1d4af3||0x1f4;return function(_0x4f1565){logger[_0xa7b0('0x2b')](_0x4f1565[_0xa7b0('0x2c')]);if(_0x4f1565['name']){delete _0x4f1565['name'];}_0x5cc75d[_0xa7b0('0x1d')](_0x1d4af3)[_0xa7b0('0x2d')](_0x4f1565);};}exports['index']=function(_0x13c888,_0x258084){var _0x4b7526={},_0x4e919e={},_0x3e665b={'count':0x0,'rows':[]};var _0x24f2e5=_[_0xa7b0('0x2e')](db[_0xa7b0('0x2f')][_0xa7b0('0x30')],function(_0x32a142){return{'name':_0x32a142['fieldName'],'type':_0x32a142[_0xa7b0('0x31')][_0xa7b0('0x32')]};});_0x4e919e['model']=_[_0xa7b0('0x2e')](_0x24f2e5,'name');_0x4e919e[_0xa7b0('0x33')]=_['keys'](_0x13c888[_0xa7b0('0x33')]);_0x4e919e[_0xa7b0('0x34')]=_[_0xa7b0('0x35')](_0x4e919e[_0xa7b0('0x36')],_0x4e919e[_0xa7b0('0x33')]);_0x4b7526[_0xa7b0('0x37')]=_['intersection'](_0x4e919e[_0xa7b0('0x36')],qs['fields'](_0x13c888['query'][_0xa7b0('0x38')]));_0x4b7526['attributes']=_0x4b7526['attributes'][_0xa7b0('0x39')]?_0x4b7526[_0xa7b0('0x37')]:_0x4e919e[_0xa7b0('0x36')];if(!_0x13c888[_0xa7b0('0x33')][_0xa7b0('0x3a')](_0xa7b0('0x3b'))){_0x4b7526[_0xa7b0('0x22')]=qs[_0xa7b0('0x22')](_0x13c888[_0xa7b0('0x33')][_0xa7b0('0x22')]);_0x4b7526[_0xa7b0('0x20')]=qs[_0xa7b0('0x20')](_0x13c888['query']['offset']);}_0x4b7526['order']=qs[_0xa7b0('0x3c')](_0x13c888['query']['sort']);_0x4b7526[_0xa7b0('0x3d')]=qs['filters'](_[_0xa7b0('0x3e')](_0x13c888['query'],_0x4e919e[_0xa7b0('0x34')]),_0x24f2e5);if(_0x13c888[_0xa7b0('0x33')]['filter']){_0x4b7526['where']=_[_0xa7b0('0x3f')](_0x4b7526['where'],{'$or':_['map'](_0x24f2e5,function(_0x45d32e){if(_0x45d32e['type']!=='VIRTUAL'){var _0x5b4277={};_0x5b4277[_0x45d32e['name']]={'$like':'%'+_0x13c888[_0xa7b0('0x33')][_0xa7b0('0x40')]+'%'};return _0x5b4277;}})});}_0x4b7526=_[_0xa7b0('0x3f')]({},_0x4b7526,_0x13c888[_0xa7b0('0x41')]);var _0x48aefc={'where':_0x4b7526[_0xa7b0('0x3d')]};return db[_0xa7b0('0x2f')][_0xa7b0('0x23')](_0x48aefc)[_0xa7b0('0x29')](function(_0x5e71e8){_0x3e665b['count']=_0x5e71e8;if(_0x13c888[_0xa7b0('0x33')][_0xa7b0('0x42')]){_0x4b7526['include']=[{'all':!![]}];}return db[_0xa7b0('0x2f')][_0xa7b0('0x43')](_0x4b7526);})[_0xa7b0('0x29')](function(_0x1de506){_0x3e665b[_0xa7b0('0x44')]=_0x1de506;return _0x3e665b;})[_0xa7b0('0x29')](respondWithFilteredResult(_0x258084,_0x4b7526))[_0xa7b0('0x45')](handleError(_0x258084,null));};exports[_0xa7b0('0x46')]=function(_0x5557f4,_0x21fbae){var _0x583785={'raw':!![],'where':{'id':_0x5557f4[_0xa7b0('0x47')]['id']}},_0x224322={};_0x224322[_0xa7b0('0x36')]=_[_0xa7b0('0x48')](db[_0xa7b0('0x2f')][_0xa7b0('0x30')]);_0x224322[_0xa7b0('0x33')]=_[_0xa7b0('0x48')](_0x5557f4['query']);_0x224322['filters']=_[_0xa7b0('0x35')](_0x224322['model'],_0x224322[_0xa7b0('0x33')]);_0x583785[_0xa7b0('0x37')]=_[_0xa7b0('0x35')](_0x224322['model'],qs[_0xa7b0('0x38')](_0x5557f4[_0xa7b0('0x33')][_0xa7b0('0x38')]));_0x583785[_0xa7b0('0x37')]=_0x583785[_0xa7b0('0x37')][_0xa7b0('0x39')]?_0x583785['attributes']:_0x224322[_0xa7b0('0x36')];if(_0x5557f4[_0xa7b0('0x33')][_0xa7b0('0x42')]){_0x583785['include']=[{'all':!![]}];}_0x583785=_[_0xa7b0('0x3f')]({},_0x583785,_0x5557f4[_0xa7b0('0x41')]);return db[_0xa7b0('0x2f')]['find'](_0x583785)['then'](handleEntityNotFound(_0x21fbae,null))['then'](respondWithResult(_0x21fbae,null))[_0xa7b0('0x45')](handleError(_0x21fbae,null));};exports[_0xa7b0('0x49')]=function(_0x1954b2,_0x4e2017){var _0xb7919b={'where':{'id':_0x1954b2[_0xa7b0('0x47')]['id']}},_0xf136c={};_0xf136c[_0xa7b0('0x36')]=_[_0xa7b0('0x48')](db[_0xa7b0('0x2f')][_0xa7b0('0x30')]);_0xb7919b[_0xa7b0('0x37')]=_['intersection'](_0xf136c[_0xa7b0('0x36')],qs[_0xa7b0('0x38')](_0x1954b2[_0xa7b0('0x33')][_0xa7b0('0x38')]));_0xb7919b[_0xa7b0('0x37')]=_0xb7919b[_0xa7b0('0x37')][_0xa7b0('0x39')]?_0xb7919b['attributes']:_0xf136c[_0xa7b0('0x36')];if(_0x1954b2[_0xa7b0('0x33')][_0xa7b0('0x42')]){_0xb7919b[_0xa7b0('0x4a')]=[{'all':!![]}];}_0xb7919b=_[_0xa7b0('0x3f')]({},_0xb7919b,_0x1954b2['options']);return db[_0xa7b0('0x2f')][_0xa7b0('0x4b')](_0xb7919b)[_0xa7b0('0x29')](handleEntityNotFound(_0x4e2017,null))[_0xa7b0('0x29')](function(_0x36f9ea){if(_0x36f9ea){var _0x1ce822=_0x36f9ea['get']({'plain':!![]});_0x1ce822=qs[_0xa7b0('0x4c')](_0x1ce822,['id',_0xa7b0('0x4d'),_0xa7b0('0x4e')]);_0x1954b2[_0xa7b0('0x4f')]=_[_0xa7b0('0x4c')](_0x1954b2[_0xa7b0('0x4f')],['id',_0xa7b0('0x4d'),_0xa7b0('0x4e')]);return db[_0xa7b0('0x2f')]['create'](_[_0xa7b0('0x3f')](_0x1ce822,_0x1954b2[_0xa7b0('0x4f')]),{'include':_0x1954b2[_0xa7b0('0x33')][_0xa7b0('0x42')]?[{'all':!![]}]:undefined});}})[_0xa7b0('0x29')](respondWithResult(_0x4e2017,0xc9))[_0xa7b0('0x45')](handleError(_0x4e2017,null));};exports[_0xa7b0('0x50')]=function(_0x5cb0c0,_0x22e84c){if(_0x5cb0c0[_0xa7b0('0x4f')]['id']){delete _0x5cb0c0[_0xa7b0('0x4f')]['id'];}return db[_0xa7b0('0x2f')][_0xa7b0('0x4b')]({'where':{'id':_0x5cb0c0['params']['id']}})['then'](handleEntityNotFound(_0x22e84c,null))[_0xa7b0('0x29')](saveUpdates(_0x5cb0c0[_0xa7b0('0x4f')],null))['then'](respondWithResult(_0x22e84c,null))[_0xa7b0('0x45')](handleError(_0x22e84c,null));};exports[_0xa7b0('0x51')]=function(_0x3c3e6a,_0x22242d){return db[_0xa7b0('0x2f')][_0xa7b0('0x4b')]({'where':{'id':_0x3c3e6a[_0xa7b0('0x47')]['id']}})[_0xa7b0('0x29')](handleEntityNotFound(_0x22242d,null))[_0xa7b0('0x29')](removeEntity(_0x22242d,null))[_0xa7b0('0x45')](handleError(_0x22242d,null));};exports['create']=function(_0x155ee4,_0x221915,_0x1ca1aa){_0x155ee4[_0xa7b0('0x4f')][_0xa7b0('0x52')]=_0x155ee4[_0xa7b0('0x53')][_0xa7b0('0x54')];_0x155ee4['body']['basename']=_0x155ee4[_0xa7b0('0x53')][_0xa7b0('0x55')];_0x155ee4[_0xa7b0('0x4f')]['type']=_0x155ee4[_0xa7b0('0x53')]['mimetype'];return db[_0xa7b0('0x2f')][_0xa7b0('0x56')](_0x155ee4[_0xa7b0('0x4f')])[_0xa7b0('0x29')](respondWithResult(_0x221915,0xc9))[_0xa7b0('0x45')](handleError(_0x221915,null));};exports[_0xa7b0('0x57')]=function(_0x56ddff,_0x200feb,_0x57ccdd){return db[_0xa7b0('0x2f')]['findOne']({'where':{'id':_0x56ddff[_0xa7b0('0x47')]['id']},'raw':!![]})[_0xa7b0('0x29')](handleEntityNotFound(_0x200feb,null))[_0xa7b0('0x29')](function(_0x2571f4){if(_0x2571f4){var _0x4bcb65=_0x2571f4[_0xa7b0('0x58')]!==null;var _0x5b7956=path[_0xa7b0('0x59')](config['root'],_0xa7b0('0x5a'));if(_0x4bcb65){_0x5b7956=path['join'](_0x5b7956,_0xa7b0('0x5b'));}var _0x14e3f8=path[_0xa7b0('0x59')](_0x5b7956,_0x2571f4['basename']);return _0x200feb[_0xa7b0('0x57')](_0x14e3f8);}})['catch'](handleError(_0x200feb,null));};
\ No newline at end of file
+var _0x847e=['VIRTUAL','Attachment','include','findAll','rows','catch','includeAll','options','params','length','find','get','omit','updatedAt','body','createdAt','create','update','file','basename','mimetype','findOne','ChatOfflineMessageId','root','server/files/attachments/','join','offline-chat/','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','save','then','destroy','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','merge'];(function(_0x1265fa,_0x1a1fed){var _0x1fe35e=function(_0x533d60){while(--_0x533d60){_0x1265fa['push'](_0x1265fa['shift']());}};_0x1fe35e(++_0x1a1fed);}(_0x847e,0x1c0));var _0xe847=function(_0x41a961,_0x22a9e4){_0x41a961=_0x41a961-0x0;var _0x6e65da=_0x847e[_0x41a961];return _0x6e65da;};'use strict';var emlformat=require(_0xe847('0x0'));var rimraf=require(_0xe847('0x1'));var zipdir=require(_0xe847('0x2'));var jsonpatch=require(_0xe847('0x3'));var rp=require(_0xe847('0x4'));var moment=require(_0xe847('0x5'));var BPromise=require(_0xe847('0x6'));var Mustache=require('mustache');var util=require(_0xe847('0x7'));var path=require(_0xe847('0x8'));var sox=require(_0xe847('0x9'));var csv=require(_0xe847('0xa'));var ejs=require(_0xe847('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe847('0xc'));var crypto=require('crypto');var jsforce=require(_0xe847('0xd'));var deskjs=require(_0xe847('0xe'));var toCsv=require(_0xe847('0xa'));var querystring=require(_0xe847('0xf'));var Papa=require(_0xe847('0x10'));var Redis=require(_0xe847('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xe847('0x12'));var as=require(_0xe847('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe847('0x14'))('api');var utils=require(_0xe847('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe847('0x16'))['db'];function respondWithStatusCode(_0x253f0d,_0x63ab89){_0x63ab89=_0x63ab89||0xcc;return function(_0x40a7a1){if(_0x40a7a1){return _0x253f0d[_0xe847('0x17')](_0x63ab89);}return _0x253f0d[_0xe847('0x18')](_0x63ab89)[_0xe847('0x19')]();};}function respondWithResult(_0x5cb862,_0x3e243b){_0x3e243b=_0x3e243b||0xc8;return function(_0x483a66){if(_0x483a66){return _0x5cb862[_0xe847('0x18')](_0x3e243b)[_0xe847('0x1a')](_0x483a66);}};}function respondWithFilteredResult(_0x48d45a,_0x59e1ba){return function(_0x47fda6){if(_0x47fda6){var _0x2ec983=typeof _0x59e1ba['offset']==='undefined'&&typeof _0x59e1ba[_0xe847('0x1b')]===_0xe847('0x1c');var _0x418cb2=_0x47fda6[_0xe847('0x1d')];var _0xba3195=_0x2ec983?0x0:_0x59e1ba[_0xe847('0x1e')];var _0x2a6335=_0x2ec983?_0x47fda6[_0xe847('0x1d')]:_0x59e1ba[_0xe847('0x1e')]+_0x59e1ba[_0xe847('0x1b')];var _0x404353;if(_0x2a6335>=_0x418cb2){_0x2a6335=_0x418cb2;_0x404353=0xc8;}else{_0x404353=0xce;}_0x48d45a[_0xe847('0x18')](_0x404353);return _0x48d45a[_0xe847('0x1f')](_0xe847('0x20'),_0xba3195+'-'+_0x2a6335+'/'+_0x418cb2)[_0xe847('0x1a')](_0x47fda6);}return null;};}function patchUpdates(_0x2fe056){return function(_0xfb7273){try{jsonpatch['apply'](_0xfb7273,_0x2fe056,!![]);}catch(_0x34f9ef){return BPromise['reject'](_0x34f9ef);}return _0xfb7273[_0xe847('0x21')]();};}function saveUpdates(_0x21d54a,_0xf64cd2){return function(_0x384bb1){if(_0x384bb1){return _0x384bb1['update'](_0x21d54a)[_0xe847('0x22')](function(_0x3bdc3a){return _0x3bdc3a;});}return null;};}function removeEntity(_0x47a7a0,_0x3a54c5){return function(_0x56feb8){if(_0x56feb8){return _0x56feb8[_0xe847('0x23')]()[_0xe847('0x22')](function(){_0x47a7a0[_0xe847('0x18')](0xcc)[_0xe847('0x19')]();});}};}function handleEntityNotFound(_0x496457,_0x436bed){return function(_0x140233){if(!_0x140233){_0x496457[_0xe847('0x17')](0x194);}return _0x140233;};}function handleError(_0x3dd018,_0x408e77){_0x408e77=_0x408e77||0x1f4;return function(_0x14e0c5){logger[_0xe847('0x24')](_0x14e0c5[_0xe847('0x25')]);if(_0x14e0c5[_0xe847('0x26')]){delete _0x14e0c5[_0xe847('0x26')];}_0x3dd018[_0xe847('0x18')](_0x408e77)[_0xe847('0x27')](_0x14e0c5);};}exports[_0xe847('0x28')]=function(_0x4edfad,_0x1c9cb6){var _0x50acde={},_0xfca3a8={},_0x30a695={'count':0x0,'rows':[]};var _0x108482=_[_0xe847('0x29')](db['Attachment'][_0xe847('0x2a')],function(_0x55dfe4){return{'name':_0x55dfe4['fieldName'],'type':_0x55dfe4[_0xe847('0x2b')][_0xe847('0x2c')]};});_0xfca3a8[_0xe847('0x2d')]=_[_0xe847('0x29')](_0x108482,_0xe847('0x26'));_0xfca3a8[_0xe847('0x2e')]=_[_0xe847('0x2f')](_0x4edfad[_0xe847('0x2e')]);_0xfca3a8[_0xe847('0x30')]=_[_0xe847('0x31')](_0xfca3a8['model'],_0xfca3a8[_0xe847('0x2e')]);_0x50acde[_0xe847('0x32')]=_['intersection'](_0xfca3a8[_0xe847('0x2d')],qs[_0xe847('0x33')](_0x4edfad[_0xe847('0x2e')][_0xe847('0x33')]));_0x50acde[_0xe847('0x32')]=_0x50acde[_0xe847('0x32')]['length']?_0x50acde['attributes']:_0xfca3a8[_0xe847('0x2d')];if(!_0x4edfad[_0xe847('0x2e')]['hasOwnProperty'](_0xe847('0x34'))){_0x50acde[_0xe847('0x1b')]=qs[_0xe847('0x1b')](_0x4edfad[_0xe847('0x2e')]['limit']);_0x50acde['offset']=qs[_0xe847('0x1e')](_0x4edfad[_0xe847('0x2e')][_0xe847('0x1e')]);}_0x50acde['order']=qs['sort'](_0x4edfad['query'][_0xe847('0x35')]);_0x50acde[_0xe847('0x36')]=qs['filters'](_['pick'](_0x4edfad[_0xe847('0x2e')],_0xfca3a8[_0xe847('0x30')]),_0x108482);if(_0x4edfad[_0xe847('0x2e')]['filter']){_0x50acde[_0xe847('0x36')]=_[_0xe847('0x37')](_0x50acde[_0xe847('0x36')],{'$or':_['map'](_0x108482,function(_0x33ef46){if(_0x33ef46[_0xe847('0x2b')]!==_0xe847('0x38')){var _0x34a4a7={};_0x34a4a7[_0x33ef46[_0xe847('0x26')]]={'$like':'%'+_0x4edfad[_0xe847('0x2e')]['filter']+'%'};return _0x34a4a7;}})});}_0x50acde=_[_0xe847('0x37')]({},_0x50acde,_0x4edfad['options']);var _0x3cf7c3={'where':_0x50acde[_0xe847('0x36')]};return db[_0xe847('0x39')][_0xe847('0x1d')](_0x3cf7c3)['then'](function(_0x51b346){_0x30a695[_0xe847('0x1d')]=_0x51b346;if(_0x4edfad[_0xe847('0x2e')]['includeAll']){_0x50acde[_0xe847('0x3a')]=[{'all':!![]}];}return db[_0xe847('0x39')][_0xe847('0x3b')](_0x50acde);})[_0xe847('0x22')](function(_0x18a708){_0x30a695[_0xe847('0x3c')]=_0x18a708;return _0x30a695;})[_0xe847('0x22')](respondWithFilteredResult(_0x1c9cb6,_0x50acde))[_0xe847('0x3d')](handleError(_0x1c9cb6,null));};exports['show']=function(_0x40784d,_0x3b760c){var _0x572b97={'raw':!![],'where':{'id':_0x40784d['params']['id']}},_0xb69bf={};_0xb69bf['model']=_[_0xe847('0x2f')](db[_0xe847('0x39')]['rawAttributes']);_0xb69bf['query']=_[_0xe847('0x2f')](_0x40784d['query']);_0xb69bf['filters']=_[_0xe847('0x31')](_0xb69bf['model'],_0xb69bf['query']);_0x572b97[_0xe847('0x32')]=_[_0xe847('0x31')](_0xb69bf[_0xe847('0x2d')],qs[_0xe847('0x33')](_0x40784d[_0xe847('0x2e')][_0xe847('0x33')]));_0x572b97[_0xe847('0x32')]=_0x572b97['attributes']['length']?_0x572b97[_0xe847('0x32')]:_0xb69bf[_0xe847('0x2d')];if(_0x40784d['query'][_0xe847('0x3e')]){_0x572b97[_0xe847('0x3a')]=[{'all':!![]}];}_0x572b97=_[_0xe847('0x37')]({},_0x572b97,_0x40784d[_0xe847('0x3f')]);return db[_0xe847('0x39')]['find'](_0x572b97)[_0xe847('0x22')](handleEntityNotFound(_0x3b760c,null))[_0xe847('0x22')](respondWithResult(_0x3b760c,null))[_0xe847('0x3d')](handleError(_0x3b760c,null));};exports['clone']=function(_0xba49ca,_0x4b376b){var _0x4868d9={'where':{'id':_0xba49ca[_0xe847('0x40')]['id']}},_0x26b5b1={};_0x26b5b1['model']=_[_0xe847('0x2f')](db[_0xe847('0x39')][_0xe847('0x2a')]);_0x4868d9[_0xe847('0x32')]=_[_0xe847('0x31')](_0x26b5b1[_0xe847('0x2d')],qs[_0xe847('0x33')](_0xba49ca[_0xe847('0x2e')][_0xe847('0x33')]));_0x4868d9[_0xe847('0x32')]=_0x4868d9[_0xe847('0x32')][_0xe847('0x41')]?_0x4868d9[_0xe847('0x32')]:_0x26b5b1['model'];if(_0xba49ca[_0xe847('0x2e')][_0xe847('0x3e')]){_0x4868d9[_0xe847('0x3a')]=[{'all':!![]}];}_0x4868d9=_[_0xe847('0x37')]({},_0x4868d9,_0xba49ca[_0xe847('0x3f')]);return db[_0xe847('0x39')][_0xe847('0x42')](_0x4868d9)['then'](handleEntityNotFound(_0x4b376b,null))[_0xe847('0x22')](function(_0xe66009){if(_0xe66009){var _0x23108e=_0xe66009[_0xe847('0x43')]({'plain':!![]});_0x23108e=qs[_0xe847('0x44')](_0x23108e,['id','createdAt',_0xe847('0x45')]);_0xba49ca[_0xe847('0x46')]=_[_0xe847('0x44')](_0xba49ca['body'],['id',_0xe847('0x47'),_0xe847('0x45')]);return db[_0xe847('0x39')][_0xe847('0x48')](_[_0xe847('0x37')](_0x23108e,_0xba49ca[_0xe847('0x46')]),{'include':_0xba49ca[_0xe847('0x2e')][_0xe847('0x3e')]?[{'all':!![]}]:undefined});}})[_0xe847('0x22')](respondWithResult(_0x4b376b,0xc9))[_0xe847('0x3d')](handleError(_0x4b376b,null));};exports[_0xe847('0x49')]=function(_0x1ad35d,_0x3ebfaf){if(_0x1ad35d[_0xe847('0x46')]['id']){delete _0x1ad35d[_0xe847('0x46')]['id'];}return db[_0xe847('0x39')][_0xe847('0x42')]({'where':{'id':_0x1ad35d['params']['id']}})[_0xe847('0x22')](handleEntityNotFound(_0x3ebfaf,null))[_0xe847('0x22')](saveUpdates(_0x1ad35d[_0xe847('0x46')],null))[_0xe847('0x22')](respondWithResult(_0x3ebfaf,null))[_0xe847('0x3d')](handleError(_0x3ebfaf,null));};exports['destroy']=function(_0x73880b,_0x5eb769){return db[_0xe847('0x39')]['find']({'where':{'id':_0x73880b[_0xe847('0x40')]['id']}})[_0xe847('0x22')](handleEntityNotFound(_0x5eb769,null))['then'](removeEntity(_0x5eb769,null))[_0xe847('0x3d')](handleError(_0x5eb769,null));};exports['create']=function(_0x18d44a,_0x1b5d80,_0x4c86ac){_0x18d44a[_0xe847('0x46')][_0xe847('0x26')]=_0x18d44a[_0xe847('0x4a')]['originalname'];_0x18d44a[_0xe847('0x46')][_0xe847('0x4b')]=_0x18d44a[_0xe847('0x4a')]['filename'];_0x18d44a[_0xe847('0x46')]['type']=_0x18d44a['file'][_0xe847('0x4c')];return db[_0xe847('0x39')][_0xe847('0x48')](_0x18d44a[_0xe847('0x46')])[_0xe847('0x22')](respondWithResult(_0x1b5d80,0xc9))[_0xe847('0x3d')](handleError(_0x1b5d80,null));};exports['download']=function(_0x4fc30e,_0x3419c1,_0x4e749a){return db['Attachment'][_0xe847('0x4d')]({'where':{'id':_0x4fc30e[_0xe847('0x40')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x3419c1,null))[_0xe847('0x22')](function(_0x495964){if(_0x495964){var _0x47fd74=_0x495964[_0xe847('0x4e')]!==null;var _0x2b583c=path['join'](config[_0xe847('0x4f')],_0xe847('0x50'));if(_0x47fd74){_0x2b583c=path[_0xe847('0x51')](_0x2b583c,_0xe847('0x52'));}var _0x43a0a0=path[_0xe847('0x51')](_0x2b583c,_0x495964[_0xe847('0x4b')]);return _0x3419c1[_0xe847('0x53')](_0x43a0a0);}})['catch'](handleError(_0x3419c1,null));};
\ No newline at end of file
index 9661631..fffd11e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaadb=['request-promise','path','../../config/environment','./attachment.attributes','Attachment','attachments','lodash','../../config/logger','api','moment','bluebird'];(function(_0x31e759,_0x521725){var _0x486d64=function(_0x126e7a){while(--_0x126e7a){_0x31e759['push'](_0x31e759['shift']());}};_0x486d64(++_0x521725);}(_0xaadb,0xed));var _0xbaad=function(_0x53e412,_0xef5c27){_0x53e412=_0x53e412-0x0;var _0x2ef367=_0xaadb[_0x53e412];return _0x2ef367;};'use strict';var _=require(_0xbaad('0x0'));var util=require('util');var logger=require(_0xbaad('0x1'))(_0xbaad('0x2'));var moment=require(_0xbaad('0x3'));var BPromise=require(_0xbaad('0x4'));var rp=require(_0xbaad('0x5'));var fs=require('fs');var path=require(_0xbaad('0x6'));var rimraf=require('rimraf');var config=require(_0xbaad('0x7'));var attributes=require(_0xbaad('0x8'));module['exports']=function(_0x1493f6,_0x39c572){return _0x1493f6['define'](_0xbaad('0x9'),attributes,{'tableName':_0xbaad('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe179=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./attachment.attributes','exports','attachments','lodash','../../config/logger'];(function(_0x47d6dc,_0xc036cc){var _0x1a1c93=function(_0x18ec96){while(--_0x18ec96){_0x47d6dc['push'](_0x47d6dc['shift']());}};_0x1a1c93(++_0xc036cc);}(_0xe179,0x1c6));var _0x9e17=function(_0x166742,_0x55520c){_0x166742=_0x166742-0x0;var _0xb7814a=_0xe179[_0x166742];return _0xb7814a;};'use strict';var _=require(_0x9e17('0x0'));var util=require('util');var logger=require(_0x9e17('0x1'))(_0x9e17('0x2'));var moment=require(_0x9e17('0x3'));var BPromise=require(_0x9e17('0x4'));var rp=require(_0x9e17('0x5'));var fs=require('fs');var path=require(_0x9e17('0x6'));var rimraf=require(_0x9e17('0x7'));var config=require(_0x9e17('0x8'));var attributes=require(_0x9e17('0x9'));module[_0x9e17('0xa')]=function(_0x4835c1,_0x241c6b){return _0x4835c1['define']('Attachment',attributes,{'tableName':_0x9e17('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ccfc8b0..b7bf6d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f37=['lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateAttachment','Attachment','create','raw','then'];(function(_0x4548f1,_0x2f973c){var _0xca6772=function(_0x51ef54){while(--_0x51ef54){_0x4548f1['push'](_0x4548f1['shift']());}};_0xca6772(++_0x2f973c);}(_0x8f37,0x190));var _0x78f3=function(_0x55e039,_0x42dfca){_0x55e039=_0x55e039-0x0;var _0x4c6e54=_0x8f37[_0x55e039];return _0x4c6e54;};'use strict';var _=require(_0x78f3('0x0'));var util=require(_0x78f3('0x1'));var moment=require(_0x78f3('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x78f3('0x3'));var db=require(_0x78f3('0x4'))['db'];var utils=require(_0x78f3('0x5'));var logger=require('../../config/logger')(_0x78f3('0x6'));var config=require('../../config/environment');var jayson=require(_0x78f3('0x7'));var client=jayson['client'][_0x78f3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3dc185,_0x492dc7,_0x58bd73){return new BPromise(function(_0x55e353,_0x35d861){return client[_0x78f3('0x9')](_0x3dc185,_0x58bd73)['then'](function(_0x20c081){logger[_0x78f3('0xa')](_0x78f3('0xb'),_0x492dc7,_0x78f3('0xc'));logger[_0x78f3('0xd')]('Attachment,\x20%s,\x20%s,\x20%s',_0x492dc7,_0x78f3('0xc'),JSON[_0x78f3('0xe')](_0x20c081));if(_0x20c081['error']){if(_0x20c081[_0x78f3('0xf')][_0x78f3('0x10')]===0x1f4){logger[_0x78f3('0xf')]('Attachment,\x20%s,\x20%s',_0x492dc7,_0x20c081[_0x78f3('0xf')][_0x78f3('0x11')]);return _0x35d861(_0x20c081[_0x78f3('0xf')][_0x78f3('0x11')]);}logger[_0x78f3('0xf')](_0x78f3('0xb'),_0x492dc7,_0x20c081[_0x78f3('0xf')][_0x78f3('0x11')]);return _0x55e353(_0x20c081[_0x78f3('0xf')][_0x78f3('0x11')]);}else{logger[_0x78f3('0xa')](_0x78f3('0xb'),_0x492dc7,_0x78f3('0xc'));_0x55e353(_0x20c081[_0x78f3('0x12')][_0x78f3('0x11')]);}})[_0x78f3('0x13')](function(_0x39adfc){logger[_0x78f3('0xf')](_0x78f3('0xb'),_0x492dc7,_0x39adfc);_0x35d861(_0x39adfc);});});}exports[_0x78f3('0x14')]=function(_0x3c76d2){var _0x1c25f2=this;return new Promise(function(_0x225176,_0x4a5db4){return db[_0x78f3('0x15')][_0x78f3('0x16')](_0x3c76d2['body'],{'raw':_0x3c76d2['options']?_0x3c76d2['options'][_0x78f3('0x17')]===undefined?!![]:![]:!![]})[_0x78f3('0x18')](function(_0x31621a){logger[_0x78f3('0xa')](_0x78f3('0x14'),_0x3c76d2);logger['debug'](_0x78f3('0x14'),_0x3c76d2,JSON[_0x78f3('0xe')](_0x31621a));_0x225176(_0x31621a);})[_0x78f3('0x13')](function(_0x3f623f){logger[_0x78f3('0xf')](_0x78f3('0x14'),_0x3f623f[_0x78f3('0x11')],_0x3c76d2);_0x4a5db4(_0x1c25f2[_0x78f3('0xf')](0x1f4,_0x3f623f[_0x78f3('0x11')]));});});};
\ No newline at end of file
+var _0xa7b4=['ioredis','rpc','../../config/environment','client','http','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateAttachment','body','options','debug','util','moment','randomstring'];(function(_0x3e14c3,_0x214814){var _0x23e6bd=function(_0x179de3){while(--_0x179de3){_0x3e14c3['push'](_0x3e14c3['shift']());}};_0x23e6bd(++_0x214814);}(_0xa7b4,0x8d));var _0x4a7b=function(_0x198247,_0x491c12){_0x198247=_0x198247-0x0;var _0x2b18bc=_0xa7b4[_0x198247];return _0x2b18bc;};'use strict';var _=require('lodash');var util=require(_0x4a7b('0x0'));var moment=require(_0x4a7b('0x1'));var BPromise=require('bluebird');var rs=require(_0x4a7b('0x2'));var fs=require('fs');var Redis=require(_0x4a7b('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4a7b('0x4'));var config=require(_0x4a7b('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x4a7b('0x6')][_0x4a7b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x14e777,_0x683a48,_0x2f9fe5){return new BPromise(function(_0x3fc66a,_0x2d5ffa){return client[_0x4a7b('0x8')](_0x14e777,_0x2f9fe5)[_0x4a7b('0x9')](function(_0x2fdd73){logger[_0x4a7b('0xa')](_0x4a7b('0xb'),_0x683a48,_0x4a7b('0xc'));logger['debug'](_0x4a7b('0xd'),_0x683a48,'request\x20sent',JSON[_0x4a7b('0xe')](_0x2fdd73));if(_0x2fdd73[_0x4a7b('0xf')]){if(_0x2fdd73[_0x4a7b('0xf')][_0x4a7b('0x10')]===0x1f4){logger['error']('Attachment,\x20%s,\x20%s',_0x683a48,_0x2fdd73[_0x4a7b('0xf')][_0x4a7b('0x11')]);return _0x2d5ffa(_0x2fdd73['error']['message']);}logger[_0x4a7b('0xf')](_0x4a7b('0xb'),_0x683a48,_0x2fdd73[_0x4a7b('0xf')][_0x4a7b('0x11')]);return _0x3fc66a(_0x2fdd73[_0x4a7b('0xf')][_0x4a7b('0x11')]);}else{logger[_0x4a7b('0xa')](_0x4a7b('0xb'),_0x683a48,_0x4a7b('0xc'));_0x3fc66a(_0x2fdd73[_0x4a7b('0x12')]['message']);}})[_0x4a7b('0x13')](function(_0x7458f1){logger[_0x4a7b('0xf')](_0x4a7b('0xb'),_0x683a48,_0x7458f1);_0x2d5ffa(_0x7458f1);});});}exports[_0x4a7b('0x14')]=function(_0x51fdfd){var _0x556151=this;return new Promise(function(_0x211d49,_0x5c35b1){return db['Attachment']['create'](_0x51fdfd[_0x4a7b('0x15')],{'raw':_0x51fdfd[_0x4a7b('0x16')]?_0x51fdfd['options']['raw']===undefined?!![]:![]:!![]})[_0x4a7b('0x9')](function(_0x2eae86){logger['info'](_0x4a7b('0x14'),_0x51fdfd);logger[_0x4a7b('0x17')](_0x4a7b('0x14'),_0x51fdfd,JSON['stringify'](_0x2eae86));_0x211d49(_0x2eae86);})[_0x4a7b('0x13')](function(_0x42c75d){logger['error']('CreateAttachment',_0x42c75d[_0x4a7b('0x11')],_0x51fdfd);_0x5c35b1(_0x556151[_0x4a7b('0xf')](0x1f4,_0x42c75d[_0x4a7b('0x11')]));});});};
\ No newline at end of file
index 0adddb4..9379ce3 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(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0x0b0e,0x187));var _0xe0b0=function(_0x2ef8f1,_0x1280a3){_0x2ef8f1=_0x2ef8f1-0x0;var _0x17498d=_0x0b0e[_0x2ef8f1];return _0x17498d;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['download']);router[_0xe0b0('0xe')](_0xe0b0('0xf'),auth['isAuthenticated'](),controller[_0xe0b0('0x10')]);var upload=multer({'storage':multer[_0xe0b0('0x11')]({'destination':function(_0x574d96,_0x399320,_0x2cdad2){_0x2cdad2(null,path[_0xe0b0('0x12')](config['root'],_0xe0b0('0x13')));},'filename':function(_0x1c358a,_0x3cc19a,_0x45f914){_0x45f914(null,util[_0xe0b0('0x14')]('%s-%s',Date[_0xe0b0('0x15')](),_0x3cc19a[_0xe0b0('0x16')][_0xe0b0('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xe0b0('0xe')]('/',upload[_0xe0b0('0x18')]('file'),controller[_0xe0b0('0x19')]);router['put'](_0xe0b0('0x1a'),auth[_0xe0b0('0xa')](),controller['update']);router[_0xe0b0('0x1b')]('/:id',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0xadb5=['root','format','%s-%s','originalname','replace','file','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','post','/:id/clone'];(function(_0x581114,_0x330ea2){var _0x4bab94=function(_0x55eb17){while(--_0x55eb17){_0x581114['push'](_0x581114['shift']());}};_0x4bab94(++_0x330ea2);}(_0xadb5,0xad));var _0x5adb=function(_0x34d116,_0x45f6b9){_0x34d116=_0x34d116-0x0;var _0x5ecb36=_0xadb5[_0x34d116];return _0x5ecb36;};'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('./attachment.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('0xe')](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller['clone']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1a8f66,_0x1ea238,_0x82e67e){_0x82e67e(null,path['join'](config[_0x5adb('0x10')],'server/files/attachments/'));},'filename':function(_0x2a0b70,_0x5433bf,_0x8cfcc6){_0x8cfcc6(null,util[_0x5adb('0x11')](_0x5adb('0x12'),Date['now'](),_0x5433bf[_0x5adb('0x13')][_0x5adb('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x5adb('0xe')]('/',upload['single'](_0x5adb('0x15')),controller['create']);router[_0x5adb('0x16')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x17')]);router[_0x5adb('0x18')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x19')]);module[_0x5adb('0x1a')]=router;
\ No newline at end of file
index 9dada91..8133f66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e3c=['then','getLicense','lodash','passport','passport-google-oauth20','Strategy','moment','../../mysqldb','../../config/environment','../../components/auth/service','signToken','../../config/utils','login','authenticate','email','callback','google','use','clientID','clientSecret','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','User','map','emails','value','admin','user','disabled','blockedAt','minutes','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','clearBlockUser'];(function(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0x8e3c,0x16a));var _0xc8e3=function(_0x5c436e,_0x145ed8){_0x5c436e=_0x5c436e-0x0;var _0x51d618=_0x8e3c[_0x5c436e];return _0x51d618;};'use strict';var _=require(_0xc8e3('0x0'));var passport=require(_0xc8e3('0x1'));var GoogleStrategy=require(_0xc8e3('0x2'))[_0xc8e3('0x3')];var moment=require(_0xc8e3('0x4'));var db=require(_0xc8e3('0x5'))['db'];var config=require(_0xc8e3('0x6'));var signToken=require(_0xc8e3('0x7'))[_0xc8e3('0x8')];var utils=require(_0xc8e3('0x9'));exports[_0xc8e3('0xa')]=passport[_0xc8e3('0xb')]('google',{'failureRedirect':'/login','scope':['profile',_0xc8e3('0xc')],'session':![]});exports[_0xc8e3('0xd')]=passport[_0xc8e3('0xb')](_0xc8e3('0xe'),{'failureRedirect':'/login','session':![]});passport[_0xc8e3('0xf')](new GoogleStrategy({'clientID':config[_0xc8e3('0xe')]?config[_0xc8e3('0xe')][_0xc8e3('0x10')]:'id','clientSecret':config['google']?config[_0xc8e3('0xe')][_0xc8e3('0x11')]:_0xc8e3('0x12'),'callbackURL':config['google']?config[_0xc8e3('0xe')][_0xc8e3('0x13')]:''},function(_0x29163f,_0x3fe148,_0x57e3f8,_0x482e03){var _0x475331,_0x26b484;return db['Setting'][_0xc8e3('0x14')]({'where':{'id':0x1},'attributes':[_0xc8e3('0x15'),_0xc8e3('0x16')],'raw':!![]})['then'](function(_0x1074fd){_0x475331=_0x1074fd;return db[_0xc8e3('0x17')]['find']({'where':{'email':_[_0xc8e3('0x18')](_0x57e3f8[_0xc8e3('0x19')],_0xc8e3('0x1a')),'role':{'$or':[_0xc8e3('0x1b'),_0xc8e3('0x1c'),'agent']}}});})['then'](function(_0x10bc55){_0x26b484=_0x10bc55;if(_0x26b484){if(_0x26b484[_0xc8e3('0x1d')]){return _0x482e03('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(_0x475331[_0xc8e3('0x16')]>0x0){if(_0x26b484['blocked']){if(moment(_0x26b484[_0xc8e3('0x1e')])['add'](_0x475331['blockDuration'],_0xc8e3('0x1f'))>moment()){return _0x482e03(_0xc8e3('0x20'));}else{return utils[_0xc8e3('0x21')](_0x26b484,0x0,![],null)[_0xc8e3('0x22')](function(){return utils[_0xc8e3('0x23')](_0x26b484);})[_0xc8e3('0x22')](function(){return _0x482e03(null,_0x26b484);});}}else{return utils['getLicense'](_0x26b484)[_0xc8e3('0x22')](function(){return _0x482e03(null,_0x26b484);});}}else{return utils[_0xc8e3('0x23')](_0x26b484)[_0xc8e3('0x22')](function(){return _0x482e03(null,_0x26b484);});}}return _0x482e03(_0xc8e3('0x20'));})['catch'](function(_0x13705b){_0x482e03(_0x13705b);});}));
\ No newline at end of file
+var _0xebf9=['passport-google-oauth20','moment','../../mysqldb','../../components/auth/service','signToken','../../config/utils','login','/login','profile','email','callback','google','use','clientSecret','secret','Setting','allowedLoginAttempts','blockDuration','then','User','map','emails','value','admin','user','disabled','blockedAt','add','minutes','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','clearBlockUser','getLicense','catch','lodash','passport'];(function(_0x536efe,_0x264c7d){var _0x5214a9=function(_0x376695){while(--_0x376695){_0x536efe['push'](_0x536efe['shift']());}};_0x5214a9(++_0x264c7d);}(_0xebf9,0x17f));var _0x9ebf=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xebf9[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x9ebf('0x0'));var passport=require(_0x9ebf('0x1'));var GoogleStrategy=require(_0x9ebf('0x2'))['Strategy'];var moment=require(_0x9ebf('0x3'));var db=require(_0x9ebf('0x4'))['db'];var config=require('../../config/environment');var signToken=require(_0x9ebf('0x5'))[_0x9ebf('0x6')];var utils=require(_0x9ebf('0x7'));exports[_0x9ebf('0x8')]=passport['authenticate']('google',{'failureRedirect':_0x9ebf('0x9'),'scope':[_0x9ebf('0xa'),_0x9ebf('0xb')],'session':![]});exports[_0x9ebf('0xc')]=passport['authenticate'](_0x9ebf('0xd'),{'failureRedirect':_0x9ebf('0x9'),'session':![]});passport[_0x9ebf('0xe')](new GoogleStrategy({'clientID':config[_0x9ebf('0xd')]?config[_0x9ebf('0xd')]['clientID']:'id','clientSecret':config[_0x9ebf('0xd')]?config[_0x9ebf('0xd')][_0x9ebf('0xf')]:_0x9ebf('0x10'),'callbackURL':config[_0x9ebf('0xd')]?config[_0x9ebf('0xd')]['callbackURL']:''},function(_0x221cc1,_0x1b8850,_0x25c778,_0x59e3f0){var _0x481a1c,_0x32407a;return db[_0x9ebf('0x11')]['findOne']({'where':{'id':0x1},'attributes':[_0x9ebf('0x12'),_0x9ebf('0x13')],'raw':!![]})[_0x9ebf('0x14')](function(_0x4fb7a8){_0x481a1c=_0x4fb7a8;return db[_0x9ebf('0x15')]['find']({'where':{'email':_[_0x9ebf('0x16')](_0x25c778[_0x9ebf('0x17')],_0x9ebf('0x18')),'role':{'$or':[_0x9ebf('0x19'),_0x9ebf('0x1a'),'agent']}}});})['then'](function(_0x10e97a){_0x32407a=_0x10e97a;if(_0x32407a){if(_0x32407a[_0x9ebf('0x1b')]){return _0x59e3f0('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(_0x481a1c['blockDuration']>0x0){if(_0x32407a['blocked']){if(moment(_0x32407a[_0x9ebf('0x1c')])[_0x9ebf('0x1d')](_0x481a1c[_0x9ebf('0x13')],_0x9ebf('0x1e'))>moment()){return _0x59e3f0(_0x9ebf('0x1f'));}else{return utils[_0x9ebf('0x20')](_0x32407a,0x0,![],null)['then'](function(){return utils[_0x9ebf('0x21')](_0x32407a);})[_0x9ebf('0x14')](function(){return _0x59e3f0(null,_0x32407a);});}}else{return utils[_0x9ebf('0x21')](_0x32407a)['then'](function(){return _0x59e3f0(null,_0x32407a);});}}else{return utils[_0x9ebf('0x21')](_0x32407a)['then'](function(){return _0x59e3f0(null,_0x32407a);});}}return _0x59e3f0(_0x9ebf('0x1f'));})[_0x9ebf('0x22')](function(_0x10a225){_0x59e3f0(_0x10a225);});}));
\ No newline at end of file
index 7671cef..067dfaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8996=['get','login','callback','setTokenCookie','exports','express','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0x8996,0x1d3));var _0x6899=function(_0x380e33,_0x51b842){_0x380e33=_0x380e33-0x0;var _0x56e499=_0x8996[_0x380e33];return _0x56e499;};'use strict';var express=require(_0x6899('0x0'));var passport=require(_0x6899('0x1'));var router=express[_0x6899('0x2')]();var controller=require(_0x6899('0x3'));var userController=require(_0x6899('0x4'));var authService=require(_0x6899('0x5'));router[_0x6899('0x6')]('/',controller[_0x6899('0x7')]);router['get']('/callback',controller[_0x6899('0x8')],authService['isMiddleware'],userController[_0x6899('0x7')],authService[_0x6899('0x9')]);module[_0x6899('0xa')]=router;
\ No newline at end of file
+var _0x2830=['login','setTokenCookie','exports','express','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','callback','isMiddleware'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0x2830,0x117));var _0x0283=function(_0x3bafa0,_0x5075fb){_0x3bafa0=_0x3bafa0-0x0;var _0x35dcfa=_0x2830[_0x3bafa0];return _0x35dcfa;};'use strict';var express=require(_0x0283('0x0'));var passport=require(_0x0283('0x1'));var router=express[_0x0283('0x2')]();var controller=require(_0x0283('0x3'));var userController=require(_0x0283('0x4'));var authService=require(_0x0283('0x5'));router[_0x0283('0x6')]('/',controller['login']);router[_0x0283('0x6')]('/callback',controller[_0x0283('0x7')],authService[_0x0283('0x8')],userController[_0x0283('0x9')],authService[_0x0283('0xa')]);module[_0x0283('0xb')]=router;
\ No newline at end of file
index af0acbd..69be6f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8243=['format','message','status','send','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','online','forgot','generate','body','toLowerCase','find','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','User','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','securePassword','validatePasswordPattern','previousPasswords','validatePasswordHistory','passwordHistoryLimit','Password\x20reset!','use','util','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt','role','blockedAt','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','disabled','blocked','add','minutes','clearBlockUser','getLicense','catch','Smtp','service','host','port','secure','authentication','auth','pass','\x22%s\x22\x20<%s>','email','request','error'];(function(_0x1d07c7,_0x28ba8f){var _0x9bff6=function(_0x512e59){while(--_0x512e59){_0x1d07c7['push'](_0x1d07c7['shift']());}};_0x9bff6(++_0x28ba8f);}(_0x8243,0x1ba));var _0x3824=function(_0x14e951,_0x5b2adf){_0x14e951=_0x14e951-0x0;var _0x47f211=_0x8243[_0x14e951];return _0x47f211;};'use strict';var util=require(_0x3824('0x0'));var passport=require('passport');var LocalStrategy=require(_0x3824('0x1'))[_0x3824('0x2')];var jayson=require(_0x3824('0x3'));var _=require(_0x3824('0x4'));var rs=require(_0x3824('0x5'));var moment=require(_0x3824('0x6'));var db=require(_0x3824('0x7'))['db'];var authService=require(_0x3824('0x8'));var utils=require(_0x3824('0x9'));var client=jayson[_0x3824('0xa')]['http']({'port':0x232b});function localAuthenticate(_0x362756,_0x452028,_0xc2d29f,_0x2bacde){var _0x103f4b,_0x120a91;return db[_0x3824('0xb')][_0x3824('0xc')]({'where':{'id':0x1},'attributes':[_0x3824('0xd'),_0x3824('0xe')],'raw':!![]})[_0x3824('0xf')](function(_0x2a97f4){_0x103f4b=_0x2a97f4;return _0x362756[_0x3824('0xc')]({'attributes':['id',_0x3824('0x10'),_0x3824('0x11'),_0x3824('0x12'),_0x3824('0x13'),'disabled','blocked',_0x3824('0x14'),'loginAttempts'],'where':{'name':_0x452028,'role':{'$or':['admin',_0x3824('0x15'),_0x3824('0x16')]}}});})[_0x3824('0xf')](function(_0x21df98){if(!_0x21df98||_0x21df98&&_0x21df98['name']!==_0x452028){throw new Error(_0x3824('0x17'));}else{_0x120a91=_0x21df98;return _0x120a91;}})['then'](function(){_0x120a91[_0x3824('0x18')](_0xc2d29f,function(_0xccd3f6,_0x36cbf4){var _0x550a0a=_0x120a91['loginAttempts']+0x1;if(_0xccd3f6){return _0x2bacde(_0xccd3f6);}else if(!_0x36cbf4){if(_0x120a91[_0x3824('0x19')]){return _0x2bacde(null,![],{'message':_0x3824('0x17')});}else if(_0x103f4b[_0x3824('0xd')]>0x0){if(_0x120a91[_0x3824('0x1a')]){if(_0x103f4b['blockDuration']>0x0){if(moment(_0x120a91[_0x3824('0x14')])[_0x3824('0x1b')](_0x103f4b['blockDuration'],_0x3824('0x1c'))>moment()){return _0x2bacde(null,![],{'message':_0x3824('0x17')});}else{return utils[_0x3824('0x1d')](_0x120a91,_0x550a0a,![],null)[_0x3824('0xf')](function(){return _0x2bacde(null,![],{'message':_0x3824('0x17')});});}}else{return _0x2bacde(null,![],{'message':_0x3824('0x17')});}}else{if(_0x550a0a>=_0x103f4b[_0x3824('0xd')]){return utils[_0x3824('0x1d')](_0x120a91,0x0,!![],moment())[_0x3824('0xf')](function(){return _0x2bacde(null,![],{'message':_0x3824('0x17')});});}else{return utils[_0x3824('0x1d')](_0x120a91,_0x550a0a,![],null)['then'](function(){return _0x2bacde(null,![],{'message':_0x3824('0x17')});});}}}else{return _0x2bacde(null,![],{'message':_0x3824('0x17')});}}else{if(_0x120a91[_0x3824('0x19')]){return _0x2bacde(null,![],{'message':_0x3824('0x17')});}else if(_0x103f4b[_0x3824('0xd')]>0x0){if(_0x120a91[_0x3824('0x1a')]){if(_0x103f4b['blockDuration']>0x0){if(moment(_0x120a91[_0x3824('0x14')])[_0x3824('0x1b')](_0x103f4b[_0x3824('0xe')],_0x3824('0x1c'))>moment()){return _0x2bacde(null,![],{'message':_0x3824('0x17')});}else{return utils['clearBlockUser'](_0x120a91,0x0,![],null)['then'](function(){return utils[_0x3824('0x1e')](_0x120a91);})['then'](function(){return _0x2bacde(null,_0x120a91);});}}else{return _0x2bacde(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0x3824('0x1d')](_0x120a91,0x0,![],null)[_0x3824('0xf')](function(){return utils[_0x3824('0x1e')](_0x120a91);})[_0x3824('0xf')](function(){return _0x2bacde(null,_0x120a91);})[_0x3824('0x1f')](function(_0x5a703c){return _0x2bacde(null,![],_0x5a703c);});}}else{if(_0x120a91[_0x3824('0x1a')]){return _0x2bacde(null,![],{'message':_0x3824('0x17')});}else{return utils[_0x3824('0x1e')](_0x120a91)['then'](function(){return _0x2bacde(null,_0x120a91);});}}}});})[_0x3824('0x1f')](function(_0x3e8fa8){return _0x2bacde(null,![],_0x3e8fa8);});}function sendServiceMail(_0x5b46ee){return db['MailAccount']['find']({'where':{'service':!![]},'attributes':['id',_0x3824('0x10'),'email'],'include':[{'model':db['MailServerOut'],'as':_0x3824('0x20')}]})[_0x3824('0xf')](function(_0x3928cc){if(!_0x3928cc){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x324ed7={'tls':{'rejectUnauthorized':![]}};if(_0x3928cc[_0x3824('0x20')][_0x3824('0x21')]){_0x324ed7['service']=_0x3928cc[_0x3824('0x20')][_0x3824('0x21')];}else{_0x324ed7['host']=_0x3928cc[_0x3824('0x20')][_0x3824('0x22')];_0x324ed7[_0x3824('0x23')]=_0x3928cc[_0x3824('0x20')]['port'];_0x324ed7[_0x3824('0x24')]=_0x3928cc[_0x3824('0x20')][_0x3824('0x24')];}if(_0x3928cc[_0x3824('0x20')][_0x3824('0x25')]){_0x324ed7[_0x3824('0x26')]={'user':_0x3928cc[_0x3824('0x20')][_0x3824('0x15')],'pass':_0x3928cc[_0x3824('0x20')][_0x3824('0x27')]};}var _0x5e47ac={'account':_0x324ed7,'message':_['merge']({'from':util['format'](_0x3824('0x28'),_0x3928cc['name'],_0x3928cc[_0x3824('0x29')]||_0x3928cc['Smtp'][_0x3824('0x15')])},_0x5b46ee)};return client[_0x3824('0x2a')]('SendMail',_0x5e47ac);})[_0x3824('0xf')](function(_0x1140db){if(_0x1140db[_0x3824('0x2b')]){throw new Error(util[_0x3824('0x2c')]('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x1140db['error'][_0x3824('0x2d')]||JSON['stringify'](_0x1140db[_0x3824('0x2b')])));}return!![];});}function handleError(_0x4e6874,_0x5b96dd,_0x3a0fff){return _0x4e6874[_0x3824('0x2e')](_0x5b96dd||0x1f4)[_0x3824('0x2f')]({'message':_0x3a0fff?_0x3a0fff['message']||_0x3a0fff:''});}exports['login']=function(_0x3c232d,_0x18513e,_0x1e48c5){passport['authenticate'](_0x3824('0x30'),function(_0x24d8e9,_0x3a17dd,_0x4fc9c7){var _0x4348a1=_0x24d8e9||_0x4fc9c7;if(_0x4348a1){return handleError(_0x18513e,0x191,_0x4348a1);}if(!_0x3a17dd){return handleError(_0x18513e,0x194,{'message':_0x3824('0x31')});}else{var _0x10b7c7={'payload':{'id':_0x3a17dd['id'],'role':_0x3a17dd[_0x3824('0x13')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x10b7c7)['then'](function(_0x93c43a){_0x18513e['json']({'id':_0x3a17dd['id'],'token':_0x93c43a,'statusCall':'','isAlreadyLogged':_0x3a17dd[_0x3824('0x32')]});});}})(_0x3c232d,_0x18513e,_0x1e48c5);};exports[_0x3824('0x33')]=function(_0x38a504,_0x2d807b,_0x14e860){if(!_0x38a504['body'][_0x3824('0x29')]){return handleError(_0x2d807b,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0xe2b758=rs[_0x3824('0x34')]();_0x38a504[_0x3824('0x35')][_0x3824('0x29')]=_0x38a504[_0x3824('0x35')][_0x3824('0x29')]['trim']()[_0x3824('0x36')]();var _0x19b2ff;return db[_0x3824('0xb')][_0x3824('0xc')]({'where':{'id':0x1},'attributes':[_0x3824('0xd'),_0x3824('0xe')],'raw':!![]})[_0x3824('0xf')](function(_0x5de042){_0x19b2ff=_0x5de042;return db['User'][_0x3824('0x37')]({'where':{'email':_0x38a504[_0x3824('0x35')][_0x3824('0x29')]}});})['then'](function(_0x4519df){if(!_0x4519df){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x4519df['disabled']){throw new Error(_0x3824('0x38'));}if(_0x4519df[_0x3824('0x1a')]){if(moment(_0x4519df['blockedAt'])[_0x3824('0x1b')](_0x19b2ff['blockDuration'],_0x3824('0x1c'))>moment()){throw new Error(_0x3824('0x39'));}else{_0x4519df[_0x3824('0x1a')]=![];_0x4519df[_0x3824('0x14')]=null;}}_0x4519df[_0x3824('0x3a')]=_0xe2b758;_0x4519df[_0x3824('0x3b')]=Date[_0x3824('0x3c')]()+0x36ee80;return _0x4519df[_0x3824('0x3d')]();})[_0x3824('0xf')](function(){return sendServiceMail({'to':_0x38a504[_0x3824('0x35')][_0x3824('0x29')],'subject':_0x3824('0x3e'),'text':_0x3824('0x3f')+_0x3824('0x40')+'https://'+_0x38a504['headers'][_0x3824('0x22')]+_0x3824('0x41')+_0xe2b758+'\x0a\x0a'+_0x3824('0x42')});})[_0x3824('0xf')](function(){_0x2d807b[_0x3824('0x2e')](0xc8)[_0x3824('0x2f')]({'message':_0x3824('0x43')});})[_0x3824('0x1f')](function(_0x144adf){return handleError(_0x2d807b,0x1f4,_0x144adf);});};exports[_0x3824('0x44')]=function(_0x1c4617,_0x56550b,_0x36571c){return db[_0x3824('0x45')][_0x3824('0x37')]({'where':{'resetPasswordToken':_0x1c4617[_0x3824('0x46')][_0x3824('0x47')],'resetPasswordExpires':{'$gt':Date[_0x3824('0x3c')]()}}})[_0x3824('0xf')](function(_0x507296){if(!_0x507296){throw new Error(_0x3824('0x48'));}return db['Setting']['findOne']({'attributes':['id','securePassword',_0x3824('0x49'),'passwordHistoryLimit']})[_0x3824('0xf')](function(_0x4cd033){if(_0x4cd033[_0x3824('0x4a')])authService[_0x3824('0x4b')](_0x1c4617[_0x3824('0x35')][_0x3824('0x11')]);if(!_0x4cd033['enforcePasswordHistory']||!_0x507296[_0x3824('0x4c')])return _0x507296;authService[_0x3824('0x4d')](_0x1c4617[_0x3824('0x35')][_0x3824('0x11')],_0x507296[_0x3824('0x4c')],_0x4cd033[_0x3824('0x4e')]);return _0x507296;})['then'](function(){_0x507296[_0x3824('0x11')]=_0x1c4617[_0x3824('0x35')][_0x3824('0x11')];_0x507296[_0x3824('0x3a')]=null;_0x507296['resetPasswordExpires']=null;return _0x507296[_0x3824('0x3d')]();});})[_0x3824('0xf')](function(){_0x56550b[_0x3824('0x2e')](0xc8)[_0x3824('0x2f')]({'message':_0x3824('0x4f')});})['catch'](function(_0x1f970a){return handleError(_0x56550b,0x1f4,_0x1f970a);});};passport[_0x3824('0x50')](new LocalStrategy({'usernameField':_0x3824('0x10'),'passwordField':_0x3824('0x11')},function(_0x32e66b,_0x39c3bf,_0x5838b8){return localAuthenticate(db[_0x3824('0x45')],_0x32e66b,_0x39c3bf,_0x5838b8);}));
\ No newline at end of file
+var _0xfe4e=['MailServerOut','Smtp','service','host','port','secure','auth','pass','merge','format','\x22%s\x22\x20<%s>','user','request','SendMail','message','stringify','error','status','send','login','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','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','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','passwordHistoryLimit','validatePasswordPattern','enforcePasswordHistory','previousPasswords','password','Password\x20reset!','use','util','passport-local','Strategy','jayson/promise','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','http','Setting','findOne','blockDuration','then','name','salt','role','disabled','blocked','loginAttempts','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','allowedLoginAttempts','blockedAt','add','clearBlockUser','minutes','getLicense','catch','MailAccount','find','email'];(function(_0x38bf9a,_0x285a12){var _0x59d561=function(_0x8beaeb){while(--_0x8beaeb){_0x38bf9a['push'](_0x38bf9a['shift']());}};_0x59d561(++_0x285a12);}(_0xfe4e,0x133));var _0xefe4=function(_0x20cca8,_0xf80ec3){_0x20cca8=_0x20cca8-0x0;var _0x43c489=_0xfe4e[_0x20cca8];return _0x43c489;};'use strict';var util=require(_0xefe4('0x0'));var passport=require('passport');var LocalStrategy=require(_0xefe4('0x1'))[_0xefe4('0x2')];var jayson=require(_0xefe4('0x3'));var _=require('lodash');var rs=require(_0xefe4('0x4'));var moment=require(_0xefe4('0x5'));var db=require(_0xefe4('0x6'))['db'];var authService=require(_0xefe4('0x7'));var utils=require(_0xefe4('0x8'));var client=jayson['client'][_0xefe4('0x9')]({'port':0x232b});function localAuthenticate(_0x393857,_0x2d4136,_0x2bab4e,_0x244ab0){var _0x33798d,_0x5e4d19;return db[_0xefe4('0xa')][_0xefe4('0xb')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xefe4('0xc')],'raw':!![]})[_0xefe4('0xd')](function(_0x3b0e75){_0x33798d=_0x3b0e75;return _0x393857[_0xefe4('0xb')]({'attributes':['id',_0xefe4('0xe'),'password',_0xefe4('0xf'),_0xefe4('0x10'),_0xefe4('0x11'),_0xefe4('0x12'),'blockedAt',_0xefe4('0x13')],'where':{'name':_0x2d4136,'role':{'$or':['admin','user',_0xefe4('0x14')]}}});})[_0xefe4('0xd')](function(_0x5744bf){if(!_0x5744bf||_0x5744bf&&_0x5744bf[_0xefe4('0xe')]!==_0x2d4136){throw new Error(_0xefe4('0x15'));}else{_0x5e4d19=_0x5744bf;return _0x5e4d19;}})['then'](function(){_0x5e4d19[_0xefe4('0x16')](_0x2bab4e,function(_0x14d39b,_0xe3f857){var _0x4353e0=_0x5e4d19[_0xefe4('0x13')]+0x1;if(_0x14d39b){return _0x244ab0(_0x14d39b);}else if(!_0xe3f857){if(_0x5e4d19[_0xefe4('0x11')]){return _0x244ab0(null,![],{'message':_0xefe4('0x15')});}else if(_0x33798d[_0xefe4('0x17')]>0x0){if(_0x5e4d19['blocked']){if(_0x33798d[_0xefe4('0xc')]>0x0){if(moment(_0x5e4d19[_0xefe4('0x18')])[_0xefe4('0x19')](_0x33798d[_0xefe4('0xc')],'minutes')>moment()){return _0x244ab0(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['clearBlockUser'](_0x5e4d19,_0x4353e0,![],null)['then'](function(){return _0x244ab0(null,![],{'message':_0xefe4('0x15')});});}}else{return _0x244ab0(null,![],{'message':_0xefe4('0x15')});}}else{if(_0x4353e0>=_0x33798d['allowedLoginAttempts']){return utils[_0xefe4('0x1a')](_0x5e4d19,0x0,!![],moment())[_0xefe4('0xd')](function(){return _0x244ab0(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0xefe4('0x1a')](_0x5e4d19,_0x4353e0,![],null)[_0xefe4('0xd')](function(){return _0x244ab0(null,![],{'message':_0xefe4('0x15')});});}}}else{return _0x244ab0(null,![],{'message':_0xefe4('0x15')});}}else{if(_0x5e4d19['disabled']){return _0x244ab0(null,![],{'message':_0xefe4('0x15')});}else if(_0x33798d[_0xefe4('0x17')]>0x0){if(_0x5e4d19[_0xefe4('0x12')]){if(_0x33798d[_0xefe4('0xc')]>0x0){if(moment(_0x5e4d19[_0xefe4('0x18')])[_0xefe4('0x19')](_0x33798d[_0xefe4('0xc')],_0xefe4('0x1b'))>moment()){return _0x244ab0(null,![],{'message':_0xefe4('0x15')});}else{return utils[_0xefe4('0x1a')](_0x5e4d19,0x0,![],null)[_0xefe4('0xd')](function(){return utils['getLicense'](_0x5e4d19);})[_0xefe4('0xd')](function(){return _0x244ab0(null,_0x5e4d19);});}}else{return _0x244ab0(null,![],{'message':_0xefe4('0x15')});}}else{return utils['clearBlockUser'](_0x5e4d19,0x0,![],null)[_0xefe4('0xd')](function(){return utils[_0xefe4('0x1c')](_0x5e4d19);})[_0xefe4('0xd')](function(){return _0x244ab0(null,_0x5e4d19);})[_0xefe4('0x1d')](function(_0x391666){return _0x244ab0(null,![],_0x391666);});}}else{if(_0x5e4d19[_0xefe4('0x12')]){return _0x244ab0(null,![],{'message':_0xefe4('0x15')});}else{return utils[_0xefe4('0x1c')](_0x5e4d19)[_0xefe4('0xd')](function(){return _0x244ab0(null,_0x5e4d19);});}}}});})[_0xefe4('0x1d')](function(_0x3ef7d0){return _0x244ab0(null,![],_0x3ef7d0);});}function sendServiceMail(_0x46aab4){return db[_0xefe4('0x1e')][_0xefe4('0x1f')]({'where':{'service':!![]},'attributes':['id',_0xefe4('0xe'),_0xefe4('0x20')],'include':[{'model':db[_0xefe4('0x21')],'as':_0xefe4('0x22')}]})[_0xefe4('0xd')](function(_0x246793){if(!_0x246793){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x529152={'tls':{'rejectUnauthorized':![]}};if(_0x246793[_0xefe4('0x22')][_0xefe4('0x23')]){_0x529152[_0xefe4('0x23')]=_0x246793[_0xefe4('0x22')]['service'];}else{_0x529152[_0xefe4('0x24')]=_0x246793[_0xefe4('0x22')][_0xefe4('0x24')];_0x529152['port']=_0x246793[_0xefe4('0x22')][_0xefe4('0x25')];_0x529152[_0xefe4('0x26')]=_0x246793[_0xefe4('0x22')]['secure'];}if(_0x246793[_0xefe4('0x22')]['authentication']){_0x529152[_0xefe4('0x27')]={'user':_0x246793[_0xefe4('0x22')]['user'],'pass':_0x246793[_0xefe4('0x22')][_0xefe4('0x28')]};}var _0xaa9222={'account':_0x529152,'message':_[_0xefe4('0x29')]({'from':util[_0xefe4('0x2a')](_0xefe4('0x2b'),_0x246793[_0xefe4('0xe')],_0x246793[_0xefe4('0x20')]||_0x246793[_0xefe4('0x22')][_0xefe4('0x2c')])},_0x46aab4)};return client[_0xefe4('0x2d')](_0xefe4('0x2e'),_0xaa9222);})[_0xefe4('0xd')](function(_0x4467c8){if(_0x4467c8['error']){throw new Error(util['format']('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x4467c8['error'][_0xefe4('0x2f')]||JSON[_0xefe4('0x30')](_0x4467c8[_0xefe4('0x31')])));}return!![];});}function handleError(_0x5c3a19,_0x3374be,_0x31e85d){return _0x5c3a19[_0xefe4('0x32')](_0x3374be||0x1f4)[_0xefe4('0x33')]({'message':_0x31e85d?_0x31e85d[_0xefe4('0x2f')]||_0x31e85d:''});}exports[_0xefe4('0x34')]=function(_0x3be5c2,_0x1b0957,_0x35178a){passport[_0xefe4('0x16')]('local',function(_0x428cbf,_0x47928c,_0x55f2c0){var _0x475bd9=_0x428cbf||_0x55f2c0;if(_0x475bd9){return handleError(_0x1b0957,0x191,_0x475bd9);}if(!_0x47928c){return handleError(_0x1b0957,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x38f27b={'payload':{'id':_0x47928c['id'],'role':_0x47928c[_0xefe4('0x10')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x38f27b)[_0xefe4('0xd')](function(_0x5e2d01){_0x1b0957[_0xefe4('0x35')]({'id':_0x47928c['id'],'token':_0x5e2d01,'statusCall':'','isAlreadyLogged':_0x47928c[_0xefe4('0x36')]});});}})(_0x3be5c2,_0x1b0957,_0x35178a);};exports[_0xefe4('0x37')]=function(_0x4c1485,_0x39a461,_0x59cdac){if(!_0x4c1485[_0xefe4('0x38')][_0xefe4('0x20')]){return handleError(_0x39a461,0x1f4,{'message':_0xefe4('0x39')});}var _0x3ae820=rs[_0xefe4('0x3a')]();_0x4c1485[_0xefe4('0x38')][_0xefe4('0x20')]=_0x4c1485[_0xefe4('0x38')][_0xefe4('0x20')][_0xefe4('0x3b')]()[_0xefe4('0x3c')]();var _0x3f8cfa;return db[_0xefe4('0xa')][_0xefe4('0xb')]({'where':{'id':0x1},'attributes':[_0xefe4('0x17'),'blockDuration'],'raw':!![]})[_0xefe4('0xd')](function(_0x57511f){_0x3f8cfa=_0x57511f;return db[_0xefe4('0x3d')][_0xefe4('0x1f')]({'where':{'email':_0x4c1485[_0xefe4('0x38')]['email']}});})['then'](function(_0x4015b){if(!_0x4015b){throw new Error(_0xefe4('0x3e'));}if(_0x4015b[_0xefe4('0x11')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x4015b['blocked']){if(moment(_0x4015b[_0xefe4('0x18')])[_0xefe4('0x19')](_0x3f8cfa[_0xefe4('0xc')],_0xefe4('0x1b'))>moment()){throw new Error(_0xefe4('0x3f'));}else{_0x4015b[_0xefe4('0x12')]=![];_0x4015b[_0xefe4('0x18')]=null;}}_0x4015b[_0xefe4('0x40')]=_0x3ae820;_0x4015b[_0xefe4('0x41')]=Date[_0xefe4('0x42')]()+0x36ee80;return _0x4015b[_0xefe4('0x43')]();})[_0xefe4('0xd')](function(){return sendServiceMail({'to':_0x4c1485[_0xefe4('0x38')][_0xefe4('0x20')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':_0xefe4('0x44')+_0xefe4('0x45')+'https://'+_0x4c1485[_0xefe4('0x46')][_0xefe4('0x24')]+_0xefe4('0x47')+_0x3ae820+'\x0a\x0a'+_0xefe4('0x48')});})[_0xefe4('0xd')](function(){_0x39a461[_0xefe4('0x32')](0xc8)[_0xefe4('0x33')]({'message':_0xefe4('0x49')});})[_0xefe4('0x1d')](function(_0x47747e){return handleError(_0x39a461,0x1f4,_0x47747e);});};exports[_0xefe4('0x4a')]=function(_0x3dd491,_0x38e68f,_0x8d135a){return db[_0xefe4('0x3d')][_0xefe4('0x1f')]({'where':{'resetPasswordToken':_0x3dd491['params'][_0xefe4('0x4b')],'resetPasswordExpires':{'$gt':Date[_0xefe4('0x42')]()}}})[_0xefe4('0xd')](function(_0x298725){if(!_0x298725){throw new Error(_0xefe4('0x4c'));}return db[_0xefe4('0xa')][_0xefe4('0xb')]({'attributes':['id',_0xefe4('0x4d'),'enforcePasswordHistory',_0xefe4('0x4e')]})[_0xefe4('0xd')](function(_0x1e64d5){if(_0x1e64d5[_0xefe4('0x4d')])authService[_0xefe4('0x4f')](_0x3dd491[_0xefe4('0x38')]['password']);if(!_0x1e64d5[_0xefe4('0x50')]||!_0x298725[_0xefe4('0x51')])return _0x298725;authService['validatePasswordHistory'](_0x3dd491['body'][_0xefe4('0x52')],_0x298725[_0xefe4('0x51')],_0x1e64d5['passwordHistoryLimit']);return _0x298725;})['then'](function(){_0x298725[_0xefe4('0x52')]=_0x3dd491['body']['password'];_0x298725[_0xefe4('0x40')]=null;_0x298725[_0xefe4('0x41')]=null;return _0x298725[_0xefe4('0x43')]();});})['then'](function(){_0x38e68f['status'](0xc8)[_0xefe4('0x33')]({'message':_0xefe4('0x53')});})[_0xefe4('0x1d')](function(_0x1a8a83){return handleError(_0x38e68f,0x1f4,_0x1a8a83);});};passport[_0xefe4('0x54')](new LocalStrategy({'usernameField':_0xefe4('0xe'),'passwordField':_0xefe4('0x52')},function(_0x2c13dd,_0xc46e2e,_0x50e1e0){return localAuthenticate(db['User'],_0x2c13dd,_0xc46e2e,_0x50e1e0);}));
\ No newline at end of file
index 3b7cf0f..778d3f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x521e=['reset','exports','express','Router','post','login','/forgot','/reset/:token'];(function(_0x577d4c,_0x3fa829){var _0x252c3d=function(_0x290826){while(--_0x290826){_0x577d4c['push'](_0x577d4c['shift']());}};_0x252c3d(++_0x3fa829);}(_0x521e,0x1c2));var _0xe521=function(_0x4bbc69,_0x2fc408){_0x4bbc69=_0x4bbc69-0x0;var _0x129c1f=_0x521e[_0x4bbc69];return _0x129c1f;};'use strict';var express=require(_0xe521('0x0'));var router=express[_0xe521('0x1')]();var controller=require('./authLocal.controller');router[_0xe521('0x2')]('/',controller[_0xe521('0x3')]);router['post'](_0xe521('0x4'),controller['forgot']);router[_0xe521('0x2')](_0xe521('0x5'),controller[_0xe521('0x6')]);module[_0xe521('0x7')]=router;
\ No newline at end of file
+var _0x1713=['reset','express','Router','./authLocal.controller','login','post','/forgot','forgot'];(function(_0x5ad8f4,_0x30a48e){var _0x4298be=function(_0x27f4f4){while(--_0x27f4f4){_0x5ad8f4['push'](_0x5ad8f4['shift']());}};_0x4298be(++_0x30a48e);}(_0x1713,0x119));var _0x3171=function(_0x5331ac,_0x194590){_0x5331ac=_0x5331ac-0x0;var _0x204079=_0x1713[_0x5331ac];return _0x204079;};'use strict';var express=require(_0x3171('0x0'));var router=express[_0x3171('0x1')]();var controller=require(_0x3171('0x2'));router['post']('/',controller[_0x3171('0x3')]);router[_0x3171('0x4')](_0x3171('0x5'),controller[_0x3171('0x6')]);router[_0x3171('0x4')]('/reset/:token',controller[_0x3171('0x7')]);module['exports']=router;
\ No newline at end of file
index d59c21a..4f1974c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8124=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x4d636e,_0x33a03e){var _0x2a4454=function(_0x13c484){while(--_0x13c484){_0x4d636e['push'](_0x4d636e['shift']());}};_0x2a4454(++_0x33a03e);}(_0x8124,0x1c4));var _0x4812=function(_0x542d6b,_0x1615bd){_0x542d6b=_0x542d6b-0x0;var _0x22d616=_0x8124[_0x542d6b];return _0x22d616;};'use strict';var Sequelize=require(_0x4812('0x0'));module[_0x4812('0x1')]={'name':{'type':Sequelize[_0x4812('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x4812('0x2')]},'description':{'type':Sequelize[_0x4812('0x2')]},'status':{'type':Sequelize[_0x4812('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x4812('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0xccd7=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x19abb6,_0xba2653){var _0x27d546=function(_0x184539){while(--_0x184539){_0x19abb6['push'](_0x19abb6['shift']());}};_0x27d546(++_0xba2653);}(_0xccd7,0x1ab));var _0x7ccd=function(_0x35a140,_0x3aeac6){_0x35a140=_0x35a140-0x0;var _0x30ab82=_0xccd7[_0x35a140];return _0x30ab82;};'use strict';var Sequelize=require(_0x7ccd('0x0'));module[_0x7ccd('0x1')]={'name':{'type':Sequelize[_0x7ccd('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x7ccd('0x2')]},'description':{'type':Sequelize[_0x7ccd('0x2')]},'status':{'type':Sequelize[_0x7ccd('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x7ccd('0x4')],'defaultValue':0xa}};
\ No newline at end of file
index c2e6a1f..b7f1a35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cef=['includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','addConditions','ids','omit','getConditions','findOne','Condition','addActions','Action','getActions','rimraf','fast-json-patch','request-promise','bluebird','util','path','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','limit','count','set','Content-Range','json','reject','save','update','then','destroy','end','error','name','index','Automation','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x11008e,_0x3c9be6){var _0x4ae70d=function(_0x1f9c52){while(--_0x1f9c52){_0x11008e['push'](_0x11008e['shift']());}};_0x4ae70d(++_0x3c9be6);}(_0x6cef,0xb6));var _0xf6ce=function(_0x4a48cf,_0x5f1870){_0x4a48cf=_0x4a48cf-0x0;var _0x24a970=_0x6cef[_0x4a48cf];return _0x24a970;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf6ce('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf6ce('0x1'));var rp=require(_0xf6ce('0x2'));var moment=require('moment');var BPromise=require(_0xf6ce('0x3'));var Mustache=require('mustache');var util=require(_0xf6ce('0x4'));var path=require(_0xf6ce('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf6ce('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf6ce('0x7'));var squel=require('squel');var crypto=require(_0xf6ce('0x8'));var jsforce=require(_0xf6ce('0x9'));var deskjs=require(_0xf6ce('0xa'));var toCsv=require(_0xf6ce('0xb'));var querystring=require(_0xf6ce('0xc'));var Papa=require(_0xf6ce('0xd'));var Redis=require('ioredis');var authService=require(_0xf6ce('0xe'));var qs=require(_0xf6ce('0xf'));var as=require(_0xf6ce('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf6ce('0x11'))(_0xf6ce('0x12'));var utils=require(_0xf6ce('0x13'));var config=require(_0xf6ce('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xf6ce('0x15'))['db'];function respondWithStatusCode(_0xeee64d,_0x146a5b){_0x146a5b=_0x146a5b||0xcc;return function(_0x20e323){if(_0x20e323){return _0xeee64d[_0xf6ce('0x16')](_0x146a5b);}return _0xeee64d['status'](_0x146a5b)['end']();};}function respondWithResult(_0x399b2d,_0x4545c1){_0x4545c1=_0x4545c1||0xc8;return function(_0x3f2bfb){if(_0x3f2bfb){return _0x399b2d[_0xf6ce('0x17')](_0x4545c1)['json'](_0x3f2bfb);}};}function respondWithFilteredResult(_0x46ee31,_0x2f3ecb){return function(_0x5bdb44){if(_0x5bdb44){var _0x37a366=typeof _0x2f3ecb[_0xf6ce('0x18')]==='undefined'&&typeof _0x2f3ecb[_0xf6ce('0x19')]==='undefined';var _0x443f7c=_0x5bdb44[_0xf6ce('0x1a')];var _0x3056fe=_0x37a366?0x0:_0x2f3ecb[_0xf6ce('0x18')];var _0x281943=_0x37a366?_0x5bdb44[_0xf6ce('0x1a')]:_0x2f3ecb['offset']+_0x2f3ecb[_0xf6ce('0x19')];var _0x1b2268;if(_0x281943>=_0x443f7c){_0x281943=_0x443f7c;_0x1b2268=0xc8;}else{_0x1b2268=0xce;}_0x46ee31[_0xf6ce('0x17')](_0x1b2268);return _0x46ee31[_0xf6ce('0x1b')](_0xf6ce('0x1c'),_0x3056fe+'-'+_0x281943+'/'+_0x443f7c)[_0xf6ce('0x1d')](_0x5bdb44);}return null;};}function patchUpdates(_0x29a2df){return function(_0x38d6c2){try{jsonpatch['apply'](_0x38d6c2,_0x29a2df,!![]);}catch(_0x2cac30){return BPromise[_0xf6ce('0x1e')](_0x2cac30);}return _0x38d6c2[_0xf6ce('0x1f')]();};}function saveUpdates(_0x3cf335,_0x194abd){return function(_0x4b4bbc){if(_0x4b4bbc){return _0x4b4bbc[_0xf6ce('0x20')](_0x3cf335)[_0xf6ce('0x21')](function(_0x90c253){return _0x90c253;});}return null;};}function removeEntity(_0x4ed721,_0x82cbda){return function(_0x5bcadd){if(_0x5bcadd){return _0x5bcadd[_0xf6ce('0x22')]()[_0xf6ce('0x21')](function(){_0x4ed721['status'](0xcc)[_0xf6ce('0x23')]();});}};}function handleEntityNotFound(_0x2f7729,_0x2d0a56){return function(_0x5b0030){if(!_0x5b0030){_0x2f7729['sendStatus'](0x194);}return _0x5b0030;};}function handleError(_0x1fdd98,_0x1a1461){_0x1a1461=_0x1a1461||0x1f4;return function(_0x553dc9){logger[_0xf6ce('0x24')](_0x553dc9['stack']);if(_0x553dc9[_0xf6ce('0x25')]){delete _0x553dc9[_0xf6ce('0x25')];}_0x1fdd98['status'](_0x1a1461)['send'](_0x553dc9);};}exports[_0xf6ce('0x26')]=function(_0x4abab6,_0x416864){var _0x3352b2={},_0x3d0a6a={},_0x1b8ac9={'count':0x0,'rows':[]};var _0xa6e54a=_['map'](db[_0xf6ce('0x27')]['rawAttributes'],function(_0x167a0d){return{'name':_0x167a0d[_0xf6ce('0x28')],'type':_0x167a0d['type'][_0xf6ce('0x29')]};});_0x3d0a6a[_0xf6ce('0x2a')]=_[_0xf6ce('0x2b')](_0xa6e54a,'name');_0x3d0a6a[_0xf6ce('0x2c')]=_[_0xf6ce('0x2d')](_0x4abab6[_0xf6ce('0x2c')]);_0x3d0a6a[_0xf6ce('0x2e')]=_[_0xf6ce('0x2f')](_0x3d0a6a[_0xf6ce('0x2a')],_0x3d0a6a[_0xf6ce('0x2c')]);_0x3352b2['attributes']=_[_0xf6ce('0x2f')](_0x3d0a6a[_0xf6ce('0x2a')],qs['fields'](_0x4abab6['query'][_0xf6ce('0x30')]));_0x3352b2[_0xf6ce('0x31')]=_0x3352b2[_0xf6ce('0x31')][_0xf6ce('0x32')]?_0x3352b2[_0xf6ce('0x31')]:_0x3d0a6a[_0xf6ce('0x2a')];if(!_0x4abab6[_0xf6ce('0x2c')][_0xf6ce('0x33')](_0xf6ce('0x34'))){_0x3352b2['limit']=qs[_0xf6ce('0x19')](_0x4abab6[_0xf6ce('0x2c')][_0xf6ce('0x19')]);_0x3352b2['offset']=qs[_0xf6ce('0x18')](_0x4abab6[_0xf6ce('0x2c')][_0xf6ce('0x18')]);}_0x3352b2[_0xf6ce('0x35')]=qs[_0xf6ce('0x36')](_0x4abab6[_0xf6ce('0x2c')][_0xf6ce('0x36')]);_0x3352b2[_0xf6ce('0x37')]=qs[_0xf6ce('0x2e')](_[_0xf6ce('0x38')](_0x4abab6[_0xf6ce('0x2c')],_0x3d0a6a[_0xf6ce('0x2e')]),_0xa6e54a);if(_0x4abab6[_0xf6ce('0x2c')][_0xf6ce('0x39')]){_0x3352b2[_0xf6ce('0x37')]=_[_0xf6ce('0x3a')](_0x3352b2[_0xf6ce('0x37')],{'$or':_[_0xf6ce('0x2b')](_0xa6e54a,function(_0x9197bc){if(_0x9197bc['type']!==_0xf6ce('0x3b')){var _0x4af382={};_0x4af382[_0x9197bc['name']]={'$like':'%'+_0x4abab6['query'][_0xf6ce('0x39')]+'%'};return _0x4af382;}})});}_0x3352b2=_[_0xf6ce('0x3a')]({},_0x3352b2,_0x4abab6[_0xf6ce('0x3c')]);var _0x27d024={'where':_0x3352b2[_0xf6ce('0x37')]};return db[_0xf6ce('0x27')][_0xf6ce('0x1a')](_0x27d024)[_0xf6ce('0x21')](function(_0x525932){_0x1b8ac9[_0xf6ce('0x1a')]=_0x525932;if(_0x4abab6[_0xf6ce('0x2c')][_0xf6ce('0x3d')]){_0x3352b2[_0xf6ce('0x3e')]=[{'all':!![]}];}return db[_0xf6ce('0x27')][_0xf6ce('0x3f')](_0x3352b2);})[_0xf6ce('0x21')](function(_0x2102af){_0x1b8ac9[_0xf6ce('0x40')]=_0x2102af;return _0x1b8ac9;})[_0xf6ce('0x21')](respondWithFilteredResult(_0x416864,_0x3352b2))[_0xf6ce('0x41')](handleError(_0x416864,null));};exports[_0xf6ce('0x42')]=function(_0x5cb118,_0x4db790){var _0x1cb13c={'raw':![],'where':{'id':_0x5cb118[_0xf6ce('0x43')]['id']}},_0x92f9f5={};_0x92f9f5[_0xf6ce('0x2a')]=_[_0xf6ce('0x2d')](db[_0xf6ce('0x27')][_0xf6ce('0x44')]);_0x92f9f5[_0xf6ce('0x2c')]=_['keys'](_0x5cb118[_0xf6ce('0x2c')]);_0x92f9f5[_0xf6ce('0x2e')]=_[_0xf6ce('0x2f')](_0x92f9f5[_0xf6ce('0x2a')],_0x92f9f5[_0xf6ce('0x2c')]);_0x1cb13c[_0xf6ce('0x31')]=_[_0xf6ce('0x2f')](_0x92f9f5[_0xf6ce('0x2a')],qs['fields'](_0x5cb118[_0xf6ce('0x2c')][_0xf6ce('0x30')]));_0x1cb13c[_0xf6ce('0x31')]=_0x1cb13c[_0xf6ce('0x31')][_0xf6ce('0x32')]?_0x1cb13c[_0xf6ce('0x31')]:_0x92f9f5[_0xf6ce('0x2a')];if(_0x5cb118[_0xf6ce('0x2c')][_0xf6ce('0x3d')]){_0x1cb13c[_0xf6ce('0x3e')]=[{'all':!![]}];}_0x1cb13c=_[_0xf6ce('0x3a')]({},_0x1cb13c,_0x5cb118['options']);return db[_0xf6ce('0x27')][_0xf6ce('0x45')](_0x1cb13c)[_0xf6ce('0x21')](handleEntityNotFound(_0x4db790,null))[_0xf6ce('0x21')](respondWithResult(_0x4db790,null))['catch'](handleError(_0x4db790,null));};exports['create']=function(_0x248d90,_0x3c183a){return db[_0xf6ce('0x27')][_0xf6ce('0x46')](_0x248d90['body'],{})[_0xf6ce('0x21')](respondWithResult(_0x3c183a,0xc9))['catch'](handleError(_0x3c183a,null));};exports[_0xf6ce('0x20')]=function(_0x1debee,_0x5c62d2){if(_0x1debee[_0xf6ce('0x47')]['id']){delete _0x1debee['body']['id'];}return db[_0xf6ce('0x27')][_0xf6ce('0x45')]({'where':{'id':_0x1debee[_0xf6ce('0x43')]['id']}})['then'](handleEntityNotFound(_0x5c62d2,null))['then'](saveUpdates(_0x1debee[_0xf6ce('0x47')],null))[_0xf6ce('0x21')](respondWithResult(_0x5c62d2,null))[_0xf6ce('0x41')](handleError(_0x5c62d2,null));};exports[_0xf6ce('0x22')]=function(_0x434de8,_0x4152e5){return db[_0xf6ce('0x27')][_0xf6ce('0x45')]({'where':{'id':_0x434de8[_0xf6ce('0x43')]['id']}})[_0xf6ce('0x21')](handleEntityNotFound(_0x4152e5,null))['then'](removeEntity(_0x4152e5,null))[_0xf6ce('0x41')](handleError(_0x4152e5,null));};exports[_0xf6ce('0x48')]=function(_0x19d0ba,_0x1acc7a,_0x3fea2c){return db['Condition'][_0xf6ce('0x45')]({'where':{'id':_0x19d0ba['params']['id']}})[_0xf6ce('0x21')](handleEntityNotFound(_0x1acc7a,null))[_0xf6ce('0x21')](function(_0x1b32fd){if(_0x1b32fd){return _0x1b32fd[_0xf6ce('0x48')](_0x19d0ba[_0xf6ce('0x47')][_0xf6ce('0x49')],_[_0xf6ce('0x4a')](_0x19d0ba[_0xf6ce('0x47')],[_0xf6ce('0x49'),'id'])||{});}})[_0xf6ce('0x21')](respondWithResult(_0x1acc7a,null))[_0xf6ce('0x41')](handleError(_0x1acc7a,null));};exports[_0xf6ce('0x4b')]=function(_0x51ea2b,_0x56c89e,_0x537d7e){var _0x4fbcdb={};var _0x2d0865={};var _0x3ee344;var _0x556007;return db['Automation'][_0xf6ce('0x4c')]({'where':{'id':_0x51ea2b['params']['id']}})['then'](handleEntityNotFound(_0x56c89e,null))[_0xf6ce('0x21')](function(_0xe51ee2){if(_0xe51ee2){_0x3ee344=_0xe51ee2;_0x2d0865[_0xf6ce('0x2a')]=_[_0xf6ce('0x2d')](db[_0xf6ce('0x4d')][_0xf6ce('0x44')]);_0x2d0865[_0xf6ce('0x2c')]=_[_0xf6ce('0x2d')](_0x51ea2b['query']);_0x2d0865['filters']=_[_0xf6ce('0x2f')](_0x2d0865[_0xf6ce('0x2a')],_0x2d0865[_0xf6ce('0x2c')]);_0x4fbcdb[_0xf6ce('0x31')]=_[_0xf6ce('0x2f')](_0x2d0865[_0xf6ce('0x2a')],qs[_0xf6ce('0x30')](_0x51ea2b[_0xf6ce('0x2c')][_0xf6ce('0x30')]));_0x4fbcdb[_0xf6ce('0x31')]=_0x4fbcdb[_0xf6ce('0x31')][_0xf6ce('0x32')]?_0x4fbcdb[_0xf6ce('0x31')]:_0x2d0865['model'];_0x4fbcdb[_0xf6ce('0x35')]=qs[_0xf6ce('0x36')](_0x51ea2b[_0xf6ce('0x2c')]['sort']);_0x4fbcdb[_0xf6ce('0x37')]=qs[_0xf6ce('0x2e')](_[_0xf6ce('0x38')](_0x51ea2b[_0xf6ce('0x2c')],_0x2d0865[_0xf6ce('0x2e')]));if(_0x51ea2b[_0xf6ce('0x2c')][_0xf6ce('0x39')]){_0x4fbcdb[_0xf6ce('0x37')]=_['merge'](_0x4fbcdb[_0xf6ce('0x37')],{'$or':_[_0xf6ce('0x2b')](_0x4fbcdb[_0xf6ce('0x31')],function(_0x4b43c5){var _0x1ba31e={};_0x1ba31e[_0x4b43c5]={'$like':'%'+_0x51ea2b[_0xf6ce('0x2c')]['filter']+'%'};return _0x1ba31e;})});}_0x4fbcdb=_[_0xf6ce('0x3a')]({},_0x4fbcdb,_0x51ea2b['options']);return _0x3ee344['getConditions'](_0x4fbcdb);}})[_0xf6ce('0x21')](function(_0x593c38){if(_0x593c38){_0x556007=_0x593c38[_0xf6ce('0x32')];if(!_0x51ea2b[_0xf6ce('0x2c')][_0xf6ce('0x33')](_0xf6ce('0x34'))){_0x4fbcdb[_0xf6ce('0x19')]=qs[_0xf6ce('0x19')](_0x51ea2b[_0xf6ce('0x2c')]['limit']);_0x4fbcdb[_0xf6ce('0x18')]=qs[_0xf6ce('0x18')](_0x51ea2b[_0xf6ce('0x2c')][_0xf6ce('0x18')]);}return _0x3ee344[_0xf6ce('0x4b')](_0x4fbcdb);}})[_0xf6ce('0x21')](function(_0x2626f0){if(_0x2626f0){return _0x2626f0?{'count':_0x556007,'rows':_0x2626f0}:null;}})['then'](respondWithResult(_0x56c89e,null))[_0xf6ce('0x41')](handleError(_0x56c89e,null));};exports[_0xf6ce('0x4e')]=function(_0x1d3c92,_0x19bc7a,_0x566a02){return db[_0xf6ce('0x4f')][_0xf6ce('0x45')]({'where':{'id':_0x1d3c92[_0xf6ce('0x43')]['id']}})[_0xf6ce('0x21')](handleEntityNotFound(_0x19bc7a,null))[_0xf6ce('0x21')](function(_0x326ea5){if(_0x326ea5){return _0x326ea5['addActions'](_0x1d3c92[_0xf6ce('0x47')][_0xf6ce('0x49')],_[_0xf6ce('0x4a')](_0x1d3c92['body'],[_0xf6ce('0x49'),'id'])||{});}})[_0xf6ce('0x21')](respondWithResult(_0x19bc7a,null))[_0xf6ce('0x41')](handleError(_0x19bc7a,null));};exports[_0xf6ce('0x50')]=function(_0x3fc2bb,_0x16cb59,_0x462dd9){var _0xb10df7={};var _0x542fe5={};var _0x264339;var _0x16216d;return db[_0xf6ce('0x27')]['findOne']({'where':{'id':_0x3fc2bb[_0xf6ce('0x43')]['id']}})[_0xf6ce('0x21')](handleEntityNotFound(_0x16cb59,null))['then'](function(_0x391429){if(_0x391429){_0x264339=_0x391429;_0x542fe5['model']=_['keys'](db[_0xf6ce('0x4f')]['rawAttributes']);_0x542fe5[_0xf6ce('0x2c')]=_['keys'](_0x3fc2bb['query']);_0x542fe5[_0xf6ce('0x2e')]=_[_0xf6ce('0x2f')](_0x542fe5[_0xf6ce('0x2a')],_0x542fe5[_0xf6ce('0x2c')]);_0xb10df7[_0xf6ce('0x31')]=_[_0xf6ce('0x2f')](_0x542fe5[_0xf6ce('0x2a')],qs[_0xf6ce('0x30')](_0x3fc2bb[_0xf6ce('0x2c')]['fields']));_0xb10df7[_0xf6ce('0x31')]=_0xb10df7['attributes'][_0xf6ce('0x32')]?_0xb10df7['attributes']:_0x542fe5[_0xf6ce('0x2a')];_0xb10df7[_0xf6ce('0x35')]=qs['sort'](_0x3fc2bb['query'][_0xf6ce('0x36')]);_0xb10df7['where']=qs[_0xf6ce('0x2e')](_['pick'](_0x3fc2bb[_0xf6ce('0x2c')],_0x542fe5[_0xf6ce('0x2e')]));if(_0x3fc2bb['query']['filter']){_0xb10df7[_0xf6ce('0x37')]=_[_0xf6ce('0x3a')](_0xb10df7['where'],{'$or':_[_0xf6ce('0x2b')](_0xb10df7[_0xf6ce('0x31')],function(_0x1e9240){var _0x517590={};_0x517590[_0x1e9240]={'$like':'%'+_0x3fc2bb['query'][_0xf6ce('0x39')]+'%'};return _0x517590;})});}_0xb10df7=_[_0xf6ce('0x3a')]({},_0xb10df7,_0x3fc2bb[_0xf6ce('0x3c')]);return _0x264339[_0xf6ce('0x50')](_0xb10df7);}})['then'](function(_0x2c71a3){if(_0x2c71a3){_0x16216d=_0x2c71a3[_0xf6ce('0x32')];if(!_0x3fc2bb[_0xf6ce('0x2c')][_0xf6ce('0x33')](_0xf6ce('0x34'))){_0xb10df7[_0xf6ce('0x19')]=qs[_0xf6ce('0x19')](_0x3fc2bb[_0xf6ce('0x2c')][_0xf6ce('0x19')]);_0xb10df7[_0xf6ce('0x18')]=qs[_0xf6ce('0x18')](_0x3fc2bb[_0xf6ce('0x2c')][_0xf6ce('0x18')]);}return _0x264339[_0xf6ce('0x50')](_0xb10df7);}})[_0xf6ce('0x21')](function(_0x1376e1){if(_0x1376e1){return _0x1376e1?{'count':_0x16216d,'rows':_0x1376e1}:null;}})[_0xf6ce('0x21')](respondWithResult(_0x16cb59,null))[_0xf6ce('0x41')](handleError(_0x16cb59,null));};
\ No newline at end of file
+var _0xf54a=['query','filters','attributes','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','includeAll','include','params','intersection','find','create','catch','body','Condition','addConditions','ids','omit','getConditions','length','sort','Action','addActions','getActions','findOne','eml-format','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','map','Automation','rawAttributes','fieldName','type','key','model','keys'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf54a,0x1c3));var _0xaf54=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf54a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xaf54('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xaf54('0x1'));var rp=require(_0xaf54('0x2'));var moment=require(_0xaf54('0x3'));var BPromise=require(_0xaf54('0x4'));var Mustache=require('mustache');var util=require(_0xaf54('0x5'));var path=require(_0xaf54('0x6'));var sox=require(_0xaf54('0x7'));var csv=require('to-csv');var ejs=require(_0xaf54('0x8'));var fs=require('fs');var fs_extra=require(_0xaf54('0x9'));var _=require(_0xaf54('0xa'));var squel=require('squel');var crypto=require(_0xaf54('0xb'));var jsforce=require(_0xaf54('0xc'));var deskjs=require(_0xaf54('0xd'));var toCsv=require(_0xaf54('0xe'));var querystring=require('querystring');var Papa=require(_0xaf54('0xf'));var Redis=require(_0xaf54('0x10'));var authService=require(_0xaf54('0x11'));var qs=require(_0xaf54('0x12'));var as=require(_0xaf54('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xaf54('0x14'))(_0xaf54('0x15'));var utils=require(_0xaf54('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xaf54('0x17'));var db=require(_0xaf54('0x18'))['db'];function respondWithStatusCode(_0x19d9f7,_0x13224e){_0x13224e=_0x13224e||0xcc;return function(_0x26fead){if(_0x26fead){return _0x19d9f7[_0xaf54('0x19')](_0x13224e);}return _0x19d9f7['status'](_0x13224e)[_0xaf54('0x1a')]();};}function respondWithResult(_0x4981ba,_0xefe77a){_0xefe77a=_0xefe77a||0xc8;return function(_0x5c2984){if(_0x5c2984){return _0x4981ba[_0xaf54('0x1b')](_0xefe77a)[_0xaf54('0x1c')](_0x5c2984);}};}function respondWithFilteredResult(_0x48963a,_0x273aa5){return function(_0x21ea71){if(_0x21ea71){var _0x5bcdc2=typeof _0x273aa5[_0xaf54('0x1d')]===_0xaf54('0x1e')&&typeof _0x273aa5[_0xaf54('0x1f')]===_0xaf54('0x1e');var _0x14d039=_0x21ea71[_0xaf54('0x20')];var _0x1afa57=_0x5bcdc2?0x0:_0x273aa5[_0xaf54('0x1d')];var _0x3ae0d3=_0x5bcdc2?_0x21ea71['count']:_0x273aa5[_0xaf54('0x1d')]+_0x273aa5[_0xaf54('0x1f')];var _0xf62b87;if(_0x3ae0d3>=_0x14d039){_0x3ae0d3=_0x14d039;_0xf62b87=0xc8;}else{_0xf62b87=0xce;}_0x48963a[_0xaf54('0x1b')](_0xf62b87);return _0x48963a[_0xaf54('0x21')](_0xaf54('0x22'),_0x1afa57+'-'+_0x3ae0d3+'/'+_0x14d039)[_0xaf54('0x1c')](_0x21ea71);}return null;};}function patchUpdates(_0x226a43){return function(_0x42979b){try{jsonpatch[_0xaf54('0x23')](_0x42979b,_0x226a43,!![]);}catch(_0x4579ef){return BPromise[_0xaf54('0x24')](_0x4579ef);}return _0x42979b[_0xaf54('0x25')]();};}function saveUpdates(_0xb1bafe,_0x2e0b19){return function(_0x30adc0){if(_0x30adc0){return _0x30adc0[_0xaf54('0x26')](_0xb1bafe)['then'](function(_0x29b20e){return _0x29b20e;});}return null;};}function removeEntity(_0x39caf0,_0x38a425){return function(_0x404be9){if(_0x404be9){return _0x404be9[_0xaf54('0x27')]()[_0xaf54('0x28')](function(){_0x39caf0[_0xaf54('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1b58f7,_0x2312e5){return function(_0x3efda2){if(!_0x3efda2){_0x1b58f7[_0xaf54('0x19')](0x194);}return _0x3efda2;};}function handleError(_0x493dfb,_0x273e4d){_0x273e4d=_0x273e4d||0x1f4;return function(_0x21e5b5){logger['error'](_0x21e5b5[_0xaf54('0x29')]);if(_0x21e5b5[_0xaf54('0x2a')]){delete _0x21e5b5[_0xaf54('0x2a')];}_0x493dfb[_0xaf54('0x1b')](_0x273e4d)[_0xaf54('0x2b')](_0x21e5b5);};}exports[_0xaf54('0x2c')]=function(_0x3db1cf,_0x57c5f7){var _0x27af8b={},_0x4d5609={},_0x166d95={'count':0x0,'rows':[]};var _0x4b9646=_[_0xaf54('0x2d')](db[_0xaf54('0x2e')][_0xaf54('0x2f')],function(_0x2a46c0){return{'name':_0x2a46c0[_0xaf54('0x30')],'type':_0x2a46c0[_0xaf54('0x31')][_0xaf54('0x32')]};});_0x4d5609[_0xaf54('0x33')]=_[_0xaf54('0x2d')](_0x4b9646,_0xaf54('0x2a'));_0x4d5609['query']=_[_0xaf54('0x34')](_0x3db1cf[_0xaf54('0x35')]);_0x4d5609[_0xaf54('0x36')]=_['intersection'](_0x4d5609['model'],_0x4d5609[_0xaf54('0x35')]);_0x27af8b[_0xaf54('0x37')]=_['intersection'](_0x4d5609[_0xaf54('0x33')],qs['fields'](_0x3db1cf[_0xaf54('0x35')][_0xaf54('0x38')]));_0x27af8b[_0xaf54('0x37')]=_0x27af8b[_0xaf54('0x37')]['length']?_0x27af8b[_0xaf54('0x37')]:_0x4d5609[_0xaf54('0x33')];if(!_0x3db1cf[_0xaf54('0x35')][_0xaf54('0x39')](_0xaf54('0x3a'))){_0x27af8b[_0xaf54('0x1f')]=qs[_0xaf54('0x1f')](_0x3db1cf[_0xaf54('0x35')][_0xaf54('0x1f')]);_0x27af8b['offset']=qs[_0xaf54('0x1d')](_0x3db1cf['query'][_0xaf54('0x1d')]);}_0x27af8b[_0xaf54('0x3b')]=qs['sort'](_0x3db1cf[_0xaf54('0x35')]['sort']);_0x27af8b[_0xaf54('0x3c')]=qs['filters'](_[_0xaf54('0x3d')](_0x3db1cf[_0xaf54('0x35')],_0x4d5609[_0xaf54('0x36')]),_0x4b9646);if(_0x3db1cf['query'][_0xaf54('0x3e')]){_0x27af8b['where']=_[_0xaf54('0x3f')](_0x27af8b[_0xaf54('0x3c')],{'$or':_[_0xaf54('0x2d')](_0x4b9646,function(_0x3780ba){if(_0x3780ba[_0xaf54('0x31')]!=='VIRTUAL'){var _0x210169={};_0x210169[_0x3780ba[_0xaf54('0x2a')]]={'$like':'%'+_0x3db1cf['query'][_0xaf54('0x3e')]+'%'};return _0x210169;}})});}_0x27af8b=_[_0xaf54('0x3f')]({},_0x27af8b,_0x3db1cf[_0xaf54('0x40')]);var _0xe89743={'where':_0x27af8b[_0xaf54('0x3c')]};return db[_0xaf54('0x2e')][_0xaf54('0x20')](_0xe89743)[_0xaf54('0x28')](function(_0x22e0f6){_0x166d95['count']=_0x22e0f6;if(_0x3db1cf[_0xaf54('0x35')][_0xaf54('0x41')]){_0x27af8b[_0xaf54('0x42')]=[{'all':!![]}];}return db[_0xaf54('0x2e')]['findAll'](_0x27af8b);})[_0xaf54('0x28')](function(_0x361312){_0x166d95['rows']=_0x361312;return _0x166d95;})[_0xaf54('0x28')](respondWithFilteredResult(_0x57c5f7,_0x27af8b))['catch'](handleError(_0x57c5f7,null));};exports['show']=function(_0x4d11eb,_0x4e5519){var _0x2eb178={'raw':![],'where':{'id':_0x4d11eb[_0xaf54('0x43')]['id']}},_0x1c2b8f={};_0x1c2b8f[_0xaf54('0x33')]=_[_0xaf54('0x34')](db[_0xaf54('0x2e')][_0xaf54('0x2f')]);_0x1c2b8f[_0xaf54('0x35')]=_['keys'](_0x4d11eb[_0xaf54('0x35')]);_0x1c2b8f[_0xaf54('0x36')]=_[_0xaf54('0x44')](_0x1c2b8f[_0xaf54('0x33')],_0x1c2b8f[_0xaf54('0x35')]);_0x2eb178[_0xaf54('0x37')]=_['intersection'](_0x1c2b8f[_0xaf54('0x33')],qs[_0xaf54('0x38')](_0x4d11eb[_0xaf54('0x35')][_0xaf54('0x38')]));_0x2eb178[_0xaf54('0x37')]=_0x2eb178[_0xaf54('0x37')]['length']?_0x2eb178[_0xaf54('0x37')]:_0x1c2b8f['model'];if(_0x4d11eb[_0xaf54('0x35')]['includeAll']){_0x2eb178[_0xaf54('0x42')]=[{'all':!![]}];}_0x2eb178=_[_0xaf54('0x3f')]({},_0x2eb178,_0x4d11eb['options']);return db[_0xaf54('0x2e')][_0xaf54('0x45')](_0x2eb178)[_0xaf54('0x28')](handleEntityNotFound(_0x4e5519,null))['then'](respondWithResult(_0x4e5519,null))['catch'](handleError(_0x4e5519,null));};exports['create']=function(_0x4020f0,_0x21da5e){return db[_0xaf54('0x2e')][_0xaf54('0x46')](_0x4020f0['body'],{})['then'](respondWithResult(_0x21da5e,0xc9))[_0xaf54('0x47')](handleError(_0x21da5e,null));};exports[_0xaf54('0x26')]=function(_0x51df92,_0x92d9c7){if(_0x51df92[_0xaf54('0x48')]['id']){delete _0x51df92['body']['id'];}return db[_0xaf54('0x2e')][_0xaf54('0x45')]({'where':{'id':_0x51df92[_0xaf54('0x43')]['id']}})['then'](handleEntityNotFound(_0x92d9c7,null))[_0xaf54('0x28')](saveUpdates(_0x51df92[_0xaf54('0x48')],null))[_0xaf54('0x28')](respondWithResult(_0x92d9c7,null))[_0xaf54('0x47')](handleError(_0x92d9c7,null));};exports['destroy']=function(_0xa55afc,_0x909d78){return db[_0xaf54('0x2e')][_0xaf54('0x45')]({'where':{'id':_0xa55afc[_0xaf54('0x43')]['id']}})[_0xaf54('0x28')](handleEntityNotFound(_0x909d78,null))['then'](removeEntity(_0x909d78,null))['catch'](handleError(_0x909d78,null));};exports['addConditions']=function(_0x20e240,_0x9d5550,_0xc89ae9){return db[_0xaf54('0x49')][_0xaf54('0x45')]({'where':{'id':_0x20e240[_0xaf54('0x43')]['id']}})['then'](handleEntityNotFound(_0x9d5550,null))[_0xaf54('0x28')](function(_0x5b3fbc){if(_0x5b3fbc){return _0x5b3fbc[_0xaf54('0x4a')](_0x20e240[_0xaf54('0x48')][_0xaf54('0x4b')],_[_0xaf54('0x4c')](_0x20e240['body'],[_0xaf54('0x4b'),'id'])||{});}})[_0xaf54('0x28')](respondWithResult(_0x9d5550,null))['catch'](handleError(_0x9d5550,null));};exports[_0xaf54('0x4d')]=function(_0x5dd1c8,_0x5513e9,_0x6db619){var _0x1c4985={};var _0x3b28fd={};var _0x5af409;var _0x332460;return db['Automation']['findOne']({'where':{'id':_0x5dd1c8[_0xaf54('0x43')]['id']}})['then'](handleEntityNotFound(_0x5513e9,null))['then'](function(_0x28c882){if(_0x28c882){_0x5af409=_0x28c882;_0x3b28fd[_0xaf54('0x33')]=_[_0xaf54('0x34')](db[_0xaf54('0x49')][_0xaf54('0x2f')]);_0x3b28fd[_0xaf54('0x35')]=_[_0xaf54('0x34')](_0x5dd1c8[_0xaf54('0x35')]);_0x3b28fd['filters']=_[_0xaf54('0x44')](_0x3b28fd[_0xaf54('0x33')],_0x3b28fd[_0xaf54('0x35')]);_0x1c4985[_0xaf54('0x37')]=_[_0xaf54('0x44')](_0x3b28fd[_0xaf54('0x33')],qs[_0xaf54('0x38')](_0x5dd1c8[_0xaf54('0x35')][_0xaf54('0x38')]));_0x1c4985[_0xaf54('0x37')]=_0x1c4985['attributes'][_0xaf54('0x4e')]?_0x1c4985[_0xaf54('0x37')]:_0x3b28fd[_0xaf54('0x33')];_0x1c4985[_0xaf54('0x3b')]=qs['sort'](_0x5dd1c8[_0xaf54('0x35')][_0xaf54('0x4f')]);_0x1c4985[_0xaf54('0x3c')]=qs[_0xaf54('0x36')](_['pick'](_0x5dd1c8[_0xaf54('0x35')],_0x3b28fd['filters']));if(_0x5dd1c8[_0xaf54('0x35')][_0xaf54('0x3e')]){_0x1c4985['where']=_[_0xaf54('0x3f')](_0x1c4985['where'],{'$or':_[_0xaf54('0x2d')](_0x1c4985[_0xaf54('0x37')],function(_0xf82ee4){var _0x3b9ae8={};_0x3b9ae8[_0xf82ee4]={'$like':'%'+_0x5dd1c8['query'][_0xaf54('0x3e')]+'%'};return _0x3b9ae8;})});}_0x1c4985=_[_0xaf54('0x3f')]({},_0x1c4985,_0x5dd1c8[_0xaf54('0x40')]);return _0x5af409[_0xaf54('0x4d')](_0x1c4985);}})[_0xaf54('0x28')](function(_0x148ae2){if(_0x148ae2){_0x332460=_0x148ae2[_0xaf54('0x4e')];if(!_0x5dd1c8[_0xaf54('0x35')][_0xaf54('0x39')]('nolimit')){_0x1c4985[_0xaf54('0x1f')]=qs[_0xaf54('0x1f')](_0x5dd1c8[_0xaf54('0x35')][_0xaf54('0x1f')]);_0x1c4985['offset']=qs[_0xaf54('0x1d')](_0x5dd1c8[_0xaf54('0x35')]['offset']);}return _0x5af409['getConditions'](_0x1c4985);}})[_0xaf54('0x28')](function(_0x454f0b){if(_0x454f0b){return _0x454f0b?{'count':_0x332460,'rows':_0x454f0b}:null;}})[_0xaf54('0x28')](respondWithResult(_0x5513e9,null))[_0xaf54('0x47')](handleError(_0x5513e9,null));};exports['addActions']=function(_0x2c683b,_0x378ce5,_0x29e752){return db[_0xaf54('0x50')][_0xaf54('0x45')]({'where':{'id':_0x2c683b[_0xaf54('0x43')]['id']}})[_0xaf54('0x28')](handleEntityNotFound(_0x378ce5,null))['then'](function(_0x4d346f){if(_0x4d346f){return _0x4d346f[_0xaf54('0x51')](_0x2c683b[_0xaf54('0x48')]['ids'],_[_0xaf54('0x4c')](_0x2c683b['body'],[_0xaf54('0x4b'),'id'])||{});}})['then'](respondWithResult(_0x378ce5,null))[_0xaf54('0x47')](handleError(_0x378ce5,null));};exports[_0xaf54('0x52')]=function(_0x344d5d,_0x278461,_0x5be08b){var _0x171985={};var _0x20f04d={};var _0x1d761e;var _0x1c7269;return db['Automation'][_0xaf54('0x53')]({'where':{'id':_0x344d5d[_0xaf54('0x43')]['id']}})[_0xaf54('0x28')](handleEntityNotFound(_0x278461,null))[_0xaf54('0x28')](function(_0x4ae1e2){if(_0x4ae1e2){_0x1d761e=_0x4ae1e2;_0x20f04d[_0xaf54('0x33')]=_[_0xaf54('0x34')](db[_0xaf54('0x50')][_0xaf54('0x2f')]);_0x20f04d[_0xaf54('0x35')]=_[_0xaf54('0x34')](_0x344d5d[_0xaf54('0x35')]);_0x20f04d[_0xaf54('0x36')]=_[_0xaf54('0x44')](_0x20f04d[_0xaf54('0x33')],_0x20f04d[_0xaf54('0x35')]);_0x171985[_0xaf54('0x37')]=_['intersection'](_0x20f04d[_0xaf54('0x33')],qs[_0xaf54('0x38')](_0x344d5d[_0xaf54('0x35')][_0xaf54('0x38')]));_0x171985[_0xaf54('0x37')]=_0x171985[_0xaf54('0x37')]['length']?_0x171985[_0xaf54('0x37')]:_0x20f04d[_0xaf54('0x33')];_0x171985[_0xaf54('0x3b')]=qs[_0xaf54('0x4f')](_0x344d5d[_0xaf54('0x35')][_0xaf54('0x4f')]);_0x171985[_0xaf54('0x3c')]=qs[_0xaf54('0x36')](_[_0xaf54('0x3d')](_0x344d5d['query'],_0x20f04d[_0xaf54('0x36')]));if(_0x344d5d[_0xaf54('0x35')]['filter']){_0x171985['where']=_[_0xaf54('0x3f')](_0x171985[_0xaf54('0x3c')],{'$or':_[_0xaf54('0x2d')](_0x171985[_0xaf54('0x37')],function(_0x4b431f){var _0x3c7345={};_0x3c7345[_0x4b431f]={'$like':'%'+_0x344d5d['query'][_0xaf54('0x3e')]+'%'};return _0x3c7345;})});}_0x171985=_[_0xaf54('0x3f')]({},_0x171985,_0x344d5d[_0xaf54('0x40')]);return _0x1d761e[_0xaf54('0x52')](_0x171985);}})['then'](function(_0x40c0d6){if(_0x40c0d6){_0x1c7269=_0x40c0d6['length'];if(!_0x344d5d[_0xaf54('0x35')][_0xaf54('0x39')](_0xaf54('0x3a'))){_0x171985[_0xaf54('0x1f')]=qs[_0xaf54('0x1f')](_0x344d5d[_0xaf54('0x35')]['limit']);_0x171985[_0xaf54('0x1d')]=qs[_0xaf54('0x1d')](_0x344d5d[_0xaf54('0x35')][_0xaf54('0x1d')]);}return _0x1d761e[_0xaf54('0x52')](_0x171985);}})[_0xaf54('0x28')](function(_0x2da178){if(_0x2da178){return _0x2da178?{'count':_0x1c7269,'rows':_0x2da178}:null;}})[_0xaf54('0x28')](respondWithResult(_0x278461,null))[_0xaf54('0x47')](handleError(_0x278461,null));};
\ No newline at end of file
index 8a14f50..ad7578f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3da=['define','tools_automations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./automation.attributes','exports'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xe3da,0xb8));var _0xae3d=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xe3da[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var logger=require(_0xae3d('0x2'))(_0xae3d('0x3'));var moment=require(_0xae3d('0x4'));var BPromise=require(_0xae3d('0x5'));var rp=require(_0xae3d('0x6'));var fs=require('fs');var path=require(_0xae3d('0x7'));var rimraf=require(_0xae3d('0x8'));var config=require(_0xae3d('0x9'));var attributes=require(_0xae3d('0xa'));module[_0xae3d('0xb')]=function(_0x2ee7c1,_0x3256e2){return _0x2ee7c1[_0xae3d('0xc')]('Automation',attributes,{'tableName':_0xae3d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2d47=['define','Automation','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./automation.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2d47,0x146));var _0x72d4=function(_0x4d11e3,_0x2c2fca){_0x4d11e3=_0x4d11e3-0x0;var _0x3efe71=_0x2d47[_0x4d11e3];return _0x3efe71;};'use strict';var _=require(_0x72d4('0x0'));var util=require('util');var logger=require(_0x72d4('0x1'))(_0x72d4('0x2'));var moment=require(_0x72d4('0x3'));var BPromise=require(_0x72d4('0x4'));var rp=require(_0x72d4('0x5'));var fs=require('fs');var path=require(_0x72d4('0x6'));var rimraf=require('rimraf');var config=require(_0x72d4('0x7'));var attributes=require(_0x72d4('0x8'));module[_0x72d4('0x9')]=function(_0x3e89a8,_0x400127){return _0x3e89a8[_0x72d4('0xa')](_0x72d4('0xb'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b7304b5..5e241b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6132=['../../config/logger','../../config/environment','client','http','then','info','Automation,\x20%s,\x20%s','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','bluebird','randomstring','ioredis'];(function(_0x5b6988,_0x67e002){var _0x4e2cc9=function(_0x1f3a40){while(--_0x1f3a40){_0x5b6988['push'](_0x5b6988['shift']());}};_0x4e2cc9(++_0x67e002);}(_0x6132,0xf3));var _0x2613=function(_0x435149,_0x4d9424){_0x435149=_0x435149-0x0;var _0x360fcd=_0x6132[_0x435149];return _0x360fcd;};'use strict';var _=require('lodash');var util=require(_0x2613('0x0'));var moment=require('moment');var BPromise=require(_0x2613('0x1'));var rs=require(_0x2613('0x2'));var fs=require('fs');var Redis=require(_0x2613('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2613('0x4'))('rpc');var config=require(_0x2613('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x2613('0x6')][_0x2613('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1083a6,_0x546fd4,_0x43c9d4){return new BPromise(function(_0x43c876,_0x51f79d){return client['request'](_0x1083a6,_0x43c9d4)[_0x2613('0x8')](function(_0x47dfc5){logger[_0x2613('0x9')](_0x2613('0xa'),_0x546fd4,_0x2613('0xb'));logger[_0x2613('0xc')](_0x2613('0xd'),_0x546fd4,_0x2613('0xb'),JSON['stringify'](_0x47dfc5));if(_0x47dfc5[_0x2613('0xe')]){if(_0x47dfc5[_0x2613('0xe')][_0x2613('0xf')]===0x1f4){logger[_0x2613('0xe')]('Automation,\x20%s,\x20%s',_0x546fd4,_0x47dfc5[_0x2613('0xe')][_0x2613('0x10')]);return _0x51f79d(_0x47dfc5[_0x2613('0xe')][_0x2613('0x10')]);}logger[_0x2613('0xe')](_0x2613('0xa'),_0x546fd4,_0x47dfc5[_0x2613('0xe')][_0x2613('0x10')]);return _0x43c876(_0x47dfc5[_0x2613('0xe')][_0x2613('0x10')]);}else{logger[_0x2613('0x9')](_0x2613('0xa'),_0x546fd4,_0x2613('0xb'));_0x43c876(_0x47dfc5[_0x2613('0x11')][_0x2613('0x10')]);}})[_0x2613('0x12')](function(_0xb99fd7){logger[_0x2613('0xe')](_0x2613('0xa'),_0x546fd4,_0xb99fd7);_0x51f79d(_0xb99fd7);});});}
\ No newline at end of file
+var _0xf811=['Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','Automation,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug'];(function(_0x21da3e,_0x421d88){var _0x1f1dcf=function(_0x521e99){while(--_0x521e99){_0x21da3e['push'](_0x21da3e['shift']());}};_0x1f1dcf(++_0x421d88);}(_0xf811,0x6f));var _0x1f81=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0xf811[_0x2dea24];return _0x309d58;};'use strict';var _=require(_0x1f81('0x0'));var util=require(_0x1f81('0x1'));var moment=require(_0x1f81('0x2'));var BPromise=require(_0x1f81('0x3'));var rs=require(_0x1f81('0x4'));var fs=require('fs');var Redis=require(_0x1f81('0x5'));var db=require(_0x1f81('0x6'))['db'];var utils=require(_0x1f81('0x7'));var logger=require(_0x1f81('0x8'))(_0x1f81('0x9'));var config=require(_0x1f81('0xa'));var jayson=require(_0x1f81('0xb'));var client=jayson[_0x1f81('0xc')][_0x1f81('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x57c512,_0x2238b2,_0x42b31b){return new BPromise(function(_0x3635bf,_0x5e6256){return client[_0x1f81('0xe')](_0x57c512,_0x42b31b)[_0x1f81('0xf')](function(_0x4af394){logger[_0x1f81('0x10')]('Automation,\x20%s,\x20%s',_0x2238b2,_0x1f81('0x11'));logger[_0x1f81('0x12')](_0x1f81('0x13'),_0x2238b2,_0x1f81('0x11'),JSON[_0x1f81('0x14')](_0x4af394));if(_0x4af394[_0x1f81('0x15')]){if(_0x4af394[_0x1f81('0x15')][_0x1f81('0x16')]===0x1f4){logger[_0x1f81('0x15')](_0x1f81('0x17'),_0x2238b2,_0x4af394[_0x1f81('0x15')][_0x1f81('0x18')]);return _0x5e6256(_0x4af394[_0x1f81('0x15')][_0x1f81('0x18')]);}logger[_0x1f81('0x15')](_0x1f81('0x17'),_0x2238b2,_0x4af394['error'][_0x1f81('0x18')]);return _0x3635bf(_0x4af394[_0x1f81('0x15')]['message']);}else{logger['info'](_0x1f81('0x17'),_0x2238b2,_0x1f81('0x11'));_0x3635bf(_0x4af394['result'][_0x1f81('0x18')]);}})[_0x1f81('0x19')](function(_0x37434a){logger[_0x1f81('0x15')]('Automation,\x20%s,\x20%s',_0x2238b2,_0x37434a);_0x5e6256(_0x37434a);});});}
\ No newline at end of file
index d933787..1742cfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe638=['post','/:id/conditions','addConditions','addActions','put','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/:id','show','getConditions','/:id/actions','getActions'];(function(_0xb68438,_0x21c2c0){var _0xbb3e85=function(_0x564de7){while(--_0x564de7){_0xb68438['push'](_0xb68438['shift']());}};_0xbb3e85(++_0x21c2c0);}(_0xe638,0x92));var _0x8e63=function(_0x57c160,_0x480ebe){_0x57c160=_0x57c160-0x0;var _0xd95dd7=_0xe638[_0x57c160];return _0xd95dd7;};'use strict';var multer=require(_0x8e63('0x0'));var util=require(_0x8e63('0x1'));var path=require(_0x8e63('0x2'));var timeout=require(_0x8e63('0x3'));var express=require('express');var router=express[_0x8e63('0x4')]();var fs_extra=require(_0x8e63('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8e63('0x6'));var controller=require('./automation.controller');router[_0x8e63('0x7')]('/',auth[_0x8e63('0x8')](),controller[_0x8e63('0x9')]);router['get'](_0x8e63('0xa'),auth[_0x8e63('0x8')](),controller[_0x8e63('0xb')]);router[_0x8e63('0x7')]('/:id/conditions',auth[_0x8e63('0x8')](),controller[_0x8e63('0xc')]);router[_0x8e63('0x7')](_0x8e63('0xd'),auth[_0x8e63('0x8')](),controller[_0x8e63('0xe')]);router[_0x8e63('0xf')]('/',auth[_0x8e63('0x8')](),controller['create']);router[_0x8e63('0xf')](_0x8e63('0x10'),auth[_0x8e63('0x8')](),controller[_0x8e63('0x11')]);router[_0x8e63('0xf')](_0x8e63('0xd'),auth['isAuthenticated'](),controller[_0x8e63('0x12')]);router[_0x8e63('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x8e63('0x14')]);router[_0x8e63('0x15')](_0x8e63('0xa'),auth['isAuthenticated'](),controller[_0x8e63('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xf822=['addConditions','addActions','put','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./automation.controller','get','index','/:id','isAuthenticated','show','/:id/conditions','/:id/actions','getActions','post'];(function(_0x232cbf,_0x3e2f33){var _0x1cd460=function(_0x29b4f3){while(--_0x29b4f3){_0x232cbf['push'](_0x232cbf['shift']());}};_0x1cd460(++_0x3e2f33);}(_0xf822,0x19e));var _0x2f82=function(_0xdbec4d,_0x4758f6){_0xdbec4d=_0xdbec4d-0x0;var _0x33b3db=_0xf822[_0xdbec4d];return _0x33b3db;};'use strict';var multer=require(_0x2f82('0x0'));var util=require('util');var path=require(_0x2f82('0x1'));var timeout=require(_0x2f82('0x2'));var express=require(_0x2f82('0x3'));var router=express[_0x2f82('0x4')]();var fs_extra=require(_0x2f82('0x5'));var auth=require(_0x2f82('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x2f82('0x7'));var controller=require(_0x2f82('0x8'));router[_0x2f82('0x9')]('/',auth['isAuthenticated'](),controller[_0x2f82('0xa')]);router['get'](_0x2f82('0xb'),auth[_0x2f82('0xc')](),controller[_0x2f82('0xd')]);router[_0x2f82('0x9')](_0x2f82('0xe'),auth[_0x2f82('0xc')](),controller['getConditions']);router[_0x2f82('0x9')](_0x2f82('0xf'),auth[_0x2f82('0xc')](),controller[_0x2f82('0x10')]);router[_0x2f82('0x11')]('/',auth[_0x2f82('0xc')](),controller['create']);router['post'](_0x2f82('0xe'),auth[_0x2f82('0xc')](),controller[_0x2f82('0x12')]);router[_0x2f82('0x11')]('/:id/actions',auth['isAuthenticated'](),controller[_0x2f82('0x13')]);router[_0x2f82('0x14')](_0x2f82('0xb'),auth['isAuthenticated'](),controller[_0x2f82('0x15')]);router[_0x2f82('0x16')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x2f82('0x17')]=router;
\ No newline at end of file
index 6a288c5..99be3c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9341=['STRING','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','ENUM','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','name','ivr'];(function(_0x57b643,_0x387e6a){var _0x401817=function(_0x2a4181){while(--_0x2a4181){_0x57b643['push'](_0x57b643['shift']());}};_0x401817(++_0x387e6a);}(_0x9341,0xff));var _0x1934=function(_0x9b100e,_0x278556){_0x9b100e=_0x9b100e-0x0;var _0x215940=_0x9341[_0x9b100e];return _0x215940;};'use strict';var Sequelize=require(_0x1934('0x0'));module[_0x1934('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x1934('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0x1934('0x3')),'allowNull':![],'defaultValue':_0x1934('0x3')},'description':{'type':Sequelize[_0x1934('0x4')]},'active':{'type':Sequelize[_0x1934('0x5')],'defaultValue':0x0,'comment':_0x1934('0x6')},'limitCalls':{'type':Sequelize[_0x1934('0x7')](0x4)[_0x1934('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x1934('0x9')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x1934('0x4')]},'dialOriginateTimeout':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1934('0xa')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1934('0xb')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x1934('0x8')],'defaultValue':0x3,'comment':_0x1934('0xc')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1934('0xd')},'dialGlobalMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x1934('0x4')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x1934('0x4')],'defaultValue':_0x1934('0xe')},'dialCheckDuplicateType':{'type':Sequelize[_0x1934('0xf')](_0x1934('0x10'),_0x1934('0x11'),_0x1934('0x12')),'defaultValue':_0x1934('0x10')},'dialAMDActive':{'type':Sequelize[_0x1934('0x5')],'defaultValue':0x0,'comment':_0x1934('0x13')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x1934('0x14')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x1934('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x1934('0x15')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x1934('0x7')](0x9)[_0x1934('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x1934('0x16')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x1934('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x1934('0x17')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x1934('0x7')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x1934('0x18')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x1934('0x19')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x1934('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x1934('0x1a')},'dialOrderByScheduledAt':{'type':Sequelize[_0x1934('0xf')]('DESC','ASC'),'defaultValue':_0x1934('0x1b')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x1934('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x1934('0x1c')},'dialCutDigit':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x1934('0x1d')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1934('0x1e')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1934('0x1f')},'dialDropMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1934('0x20')},'dialDropRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1934('0x21')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1934('0x22')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x1934('0x7')](0x3)[_0x1934('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x1934('0x23')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x1934('0x7')](0x5)[_0x1934('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x1934('0x24')}};
\ No newline at end of file
+var _0x54e6=['Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Busy\x20Retry\x20(min:1,\x20max:999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\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)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','sequelize','exports','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','Max\x20200\x20calls.','INTEGER','UNSIGNED'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0x54e6,0x160));var _0x654e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x54e6[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x654e('0x0'));module[_0x654e('0x1')]={'name':{'type':Sequelize[_0x654e('0x2')],'unique':_0x654e('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x654e('0x4')](_0x654e('0x5')),'allowNull':![],'defaultValue':_0x654e('0x5')},'description':{'type':Sequelize[_0x654e('0x2')]},'active':{'type':Sequelize[_0x654e('0x6')],'defaultValue':0x0,'comment':_0x654e('0x7')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x654e('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0x654e('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0x654e('0x9')](0x3)[_0x654e('0xa')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x654e('0xb')},'dialCongestionMaxRetry':{'type':Sequelize[_0x654e('0x9')](0x3)[_0x654e('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x654e('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x654e('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x654e('0xc')},'dialBusyRetryFrequency':{'type':Sequelize[_0x654e('0x9')](0x5)[_0x654e('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x654e('0x9')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x654e('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x654e('0x9')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x654e('0xe')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x654e('0xf')},'dialTimezone':{'type':Sequelize[_0x654e('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0x654e('0x4')](_0x654e('0x10'),_0x654e('0x11'),_0x654e('0x12')),'defaultValue':_0x654e('0x10')},'dialAMDActive':{'type':Sequelize[_0x654e('0x6')],'defaultValue':0x0,'comment':_0x654e('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0x654e('0x9')](0x9)[_0x654e('0xa')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x654e('0x9')](0x9)[_0x654e('0xa')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x654e('0x9')](0x9)[_0x654e('0xa')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x654e('0x14')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0x654e('0xa')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0x654e('0x9')](0x9)[_0x654e('0xa')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x654e('0x9')](0x9)[_0x654e('0xa')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x654e('0x15')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x654e('0x9')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x654e('0x16')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x654e('0x9')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x654e('0x17')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x654e('0x9')](0x9)[_0x654e('0xa')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x654e('0x18')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM']('DESC','ASC'),'defaultValue':_0x654e('0x19')},'dialPrefix':{'type':Sequelize[_0x654e('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x654e('0x9')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x654e('0x1a')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x654e('0xa')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x654e('0x1b')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x654e('0x9')](0x3)[_0x654e('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x654e('0x9')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x654e('0x1c')},'dialDropMaxRetry':{'type':Sequelize[_0x654e('0x9')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x654e('0x1d')},'dialDropRetryFrequency':{'type':Sequelize[_0x654e('0x9')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x654e('0x1e')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x654e('0x9')](0x3)[_0x654e('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x654e('0x1f')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x654e('0x9')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0x654e('0x9')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x654e('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x654e('0x9')](0x3)[_0x654e('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x654e('0x20')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x654e('0x9')](0x5)[_0x654e('0xa')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'}};
\ No newline at end of file
index 823f062..9a40235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2305=['bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','update','then','destroy','IvrCampaigns','UserProfileResource','end','error','stack','name','send','index','map','Campaign','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','role','getHoppers','findOne','CmHopper','getHopperHistories','CmHopperHistory','order','CampaignId','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','select','field','NOW()','toString','ListId','from','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','CmListId','cm_contacts','ListId\x20=\x20?','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','push','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2305,0x88));var _0x5230=function(_0x187718,_0x427383){_0x187718=_0x187718-0x0;var _0x29ddf4=_0x2305[_0x187718];return _0x29ddf4;};'use strict';var emlformat=require(_0x5230('0x0'));var rimraf=require(_0x5230('0x1'));var zipdir=require(_0x5230('0x2'));var jsonpatch=require(_0x5230('0x3'));var rp=require(_0x5230('0x4'));var moment=require('moment');var BPromise=require(_0x5230('0x5'));var Mustache=require('mustache');var util=require(_0x5230('0x6'));var path=require(_0x5230('0x7'));var sox=require(_0x5230('0x8'));var csv=require(_0x5230('0x9'));var ejs=require(_0x5230('0xa'));var fs=require('fs');var fs_extra=require(_0x5230('0xb'));var _=require(_0x5230('0xc'));var squel=require(_0x5230('0xd'));var crypto=require(_0x5230('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x5230('0xf'));var toCsv=require(_0x5230('0x9'));var querystring=require('querystring');var Papa=require(_0x5230('0x10'));var Redis=require(_0x5230('0x11'));var authService=require(_0x5230('0x12'));var qs=require(_0x5230('0x13'));var as=require(_0x5230('0x14'));var hardwareService=require(_0x5230('0x15'));var logger=require(_0x5230('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x5230('0x17'));var licenseUtil=require(_0x5230('0x18'));var db=require(_0x5230('0x19'))['db'];function respondWithStatusCode(_0x1fc498,_0x349994){_0x349994=_0x349994||0xcc;return function(_0x2d74a9){if(_0x2d74a9){return _0x1fc498[_0x5230('0x1a')](_0x349994);}return _0x1fc498[_0x5230('0x1b')](_0x349994)['end']();};}function respondWithResult(_0x4facbb,_0x4e68a2){_0x4e68a2=_0x4e68a2||0xc8;return function(_0x559f1e){if(_0x559f1e){return _0x4facbb[_0x5230('0x1b')](_0x4e68a2)['json'](_0x559f1e);}};}function respondWithFilteredResult(_0x2a4b71,_0x4e9a7d){return function(_0x47a6da){if(_0x47a6da){var _0x3f3dde=typeof _0x4e9a7d[_0x5230('0x1c')]===_0x5230('0x1d')&&typeof _0x4e9a7d['limit']===_0x5230('0x1d');var _0x7d2a13=_0x47a6da[_0x5230('0x1e')];var _0x4dfb0e=_0x3f3dde?0x0:_0x4e9a7d[_0x5230('0x1c')];var _0x14ce1b=_0x3f3dde?_0x47a6da['count']:_0x4e9a7d[_0x5230('0x1c')]+_0x4e9a7d[_0x5230('0x1f')];var _0x244f20;if(_0x14ce1b>=_0x7d2a13){_0x14ce1b=_0x7d2a13;_0x244f20=0xc8;}else{_0x244f20=0xce;}_0x2a4b71[_0x5230('0x1b')](_0x244f20);return _0x2a4b71[_0x5230('0x20')](_0x5230('0x21'),_0x4dfb0e+'-'+_0x14ce1b+'/'+_0x7d2a13)[_0x5230('0x22')](_0x47a6da);}return null;};}function patchUpdates(_0x18e955){return function(_0x5b3a98){try{jsonpatch[_0x5230('0x23')](_0x5b3a98,_0x18e955,!![]);}catch(_0x50abaa){return BPromise[_0x5230('0x24')](_0x50abaa);}return _0x5b3a98['save']();};}function saveUpdates(_0xf43652,_0xa3bdc6){return function(_0x2dedbb){if(_0x2dedbb){return _0x2dedbb[_0x5230('0x25')](_0xf43652)[_0x5230('0x26')](function(_0x1fcd2a){return _0x1fcd2a;});}return null;};}function removeEntity(_0x54d5fe,_0x7ddc76){return function(_0x981b93){if(_0x981b93){return _0x981b93[_0x5230('0x27')]()[_0x5230('0x26')](function(){var _0x18bff6=_0x981b93['get']({'plain':!![]});var _0xe7b527=_0x5230('0x28');return db[_0x5230('0x29')][_0x5230('0x27')]({'where':{'type':_0xe7b527,'resourceId':_0x18bff6['id']}})[_0x5230('0x26')](function(){return _0x981b93;});})[_0x5230('0x26')](function(){_0x54d5fe[_0x5230('0x1b')](0xcc)[_0x5230('0x2a')]();});}};}function handleEntityNotFound(_0x148b14,_0xb933ae){return function(_0x2493d9){if(!_0x2493d9){_0x148b14[_0x5230('0x1a')](0x194);}return _0x2493d9;};}function handleError(_0x3015e2,_0xc50794){_0xc50794=_0xc50794||0x1f4;return function(_0x5991a9){logger[_0x5230('0x2b')](_0x5991a9[_0x5230('0x2c')]);if(_0x5991a9[_0x5230('0x2d')]){delete _0x5991a9['name'];}_0x3015e2[_0x5230('0x1b')](_0xc50794)[_0x5230('0x2e')](_0x5991a9);};}exports[_0x5230('0x2f')]=function(_0x478664,_0x542315){var _0x56b71e={},_0x45507a={},_0x4db9e0={'count':0x0,'rows':[]};var _0x57e90e=_[_0x5230('0x30')](db[_0x5230('0x31')][_0x5230('0x32')],function(_0x38249a){return{'name':_0x38249a[_0x5230('0x33')],'type':_0x38249a[_0x5230('0x34')][_0x5230('0x35')]};});_0x45507a[_0x5230('0x36')]=_[_0x5230('0x30')](_0x57e90e,_0x5230('0x2d'));_0x45507a[_0x5230('0x37')]=_[_0x5230('0x38')](_0x478664['query']);_0x45507a['filters']=_[_0x5230('0x39')](_0x45507a[_0x5230('0x36')],_0x45507a[_0x5230('0x37')]);_0x56b71e[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x45507a[_0x5230('0x36')],qs[_0x5230('0x3b')](_0x478664[_0x5230('0x37')][_0x5230('0x3b')]));_0x56b71e[_0x5230('0x3a')]=_0x56b71e[_0x5230('0x3a')][_0x5230('0x3c')]?_0x56b71e['attributes']:_0x45507a[_0x5230('0x36')];if(!_0x478664[_0x5230('0x37')][_0x5230('0x3d')](_0x5230('0x3e'))){_0x56b71e[_0x5230('0x1f')]=qs[_0x5230('0x1f')](_0x478664[_0x5230('0x37')][_0x5230('0x1f')]);_0x56b71e['offset']=qs[_0x5230('0x1c')](_0x478664[_0x5230('0x37')]['offset']);}_0x56b71e['order']=qs[_0x5230('0x3f')](_0x478664[_0x5230('0x37')][_0x5230('0x3f')]);_0x56b71e[_0x5230('0x40')]=qs[_0x5230('0x41')](_[_0x5230('0x42')](_0x478664[_0x5230('0x37')],_0x45507a[_0x5230('0x41')]),_0x57e90e);if(_0x478664[_0x5230('0x37')][_0x5230('0x43')]){_0x56b71e['where']=_[_0x5230('0x44')](_0x56b71e[_0x5230('0x40')],{'$or':_[_0x5230('0x30')](_0x57e90e,function(_0x598884){if(_0x598884[_0x5230('0x34')]!==_0x5230('0x45')){var _0x120ba8={};_0x120ba8[_0x598884[_0x5230('0x2d')]]={'$like':'%'+_0x478664['query'][_0x5230('0x43')]+'%'};return _0x120ba8;}})});}_0x56b71e=_['merge']({},_0x56b71e,_0x478664[_0x5230('0x46')]);var _0x4e7a78={'where':_0x56b71e['where']};return db[_0x5230('0x31')][_0x5230('0x1e')](_0x4e7a78)['then'](function(_0x1037f9){_0x4db9e0[_0x5230('0x1e')]=_0x1037f9;if(_0x478664['query']['includeAll']){_0x56b71e[_0x5230('0x47')]=[{'all':!![]}];}return db[_0x5230('0x31')][_0x5230('0x48')](_0x56b71e);})[_0x5230('0x26')](function(_0x57c7db){_0x4db9e0[_0x5230('0x49')]=_0x57c7db;return _0x4db9e0;})['then'](respondWithFilteredResult(_0x542315,_0x56b71e))[_0x5230('0x4a')](handleError(_0x542315,null));};exports['show']=function(_0x38ffaf,_0x7c334a){var _0x2e1aff={'raw':![],'where':{'id':_0x38ffaf['params']['id']}},_0x123ded={};_0x123ded[_0x5230('0x36')]=_[_0x5230('0x38')](db[_0x5230('0x31')][_0x5230('0x32')]);_0x123ded[_0x5230('0x37')]=_[_0x5230('0x38')](_0x38ffaf[_0x5230('0x37')]);_0x123ded[_0x5230('0x41')]=_[_0x5230('0x39')](_0x123ded[_0x5230('0x36')],_0x123ded['query']);_0x2e1aff[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x123ded['model'],qs[_0x5230('0x3b')](_0x38ffaf[_0x5230('0x37')][_0x5230('0x3b')]));_0x2e1aff[_0x5230('0x3a')]=_0x2e1aff[_0x5230('0x3a')]['length']?_0x2e1aff[_0x5230('0x3a')]:_0x123ded[_0x5230('0x36')];if(_0x38ffaf['query'][_0x5230('0x4b')]){_0x2e1aff['include']=[{'all':!![]}];}_0x2e1aff=_[_0x5230('0x44')]({},_0x2e1aff,_0x38ffaf[_0x5230('0x46')]);return db[_0x5230('0x31')][_0x5230('0x4c')](_0x2e1aff)[_0x5230('0x26')](handleEntityNotFound(_0x7c334a,null))[_0x5230('0x26')](respondWithResult(_0x7c334a,null))[_0x5230('0x4a')](handleError(_0x7c334a,null));};exports[_0x5230('0x4d')]=function(_0x1e4961,_0x1553c5){return db[_0x5230('0x31')][_0x5230('0x4d')](_0x1e4961[_0x5230('0x4e')],{})[_0x5230('0x26')](function(_0x5c03a8){var _0x2cdbf1=_0x1e4961[_0x5230('0x4f')]['get']({'plain':!![]});if(!_0x2cdbf1)throw new Error(_0x5230('0x50'));if(_0x2cdbf1['role']==='user'){var _0xaa757f=_0x5c03a8[_0x5230('0x51')]({'plain':!![]});var _0xa8f1c=_0x5230('0x28');return db[_0x5230('0x52')]['find']({'where':{'name':_0xa8f1c,'userProfileId':_0x2cdbf1[_0x5230('0x53')]},'raw':!![]})['then'](function(_0x568c2c){if(_0x568c2c&&_0x568c2c[_0x5230('0x54')]===0x0){return db[_0x5230('0x29')][_0x5230('0x4d')]({'name':_0xaa757f[_0x5230('0x2d')],'resourceId':_0xaa757f['id'],'type':_0x568c2c[_0x5230('0x2d')],'sectionId':_0x568c2c['id']},{})['then'](function(){return _0x5c03a8;});}else{return _0x5c03a8;}})['catch'](function(_0x253208){logger[_0x5230('0x2b')](_0x5230('0x55'),_0x253208);throw _0x253208;});}return _0x5c03a8;})['then'](respondWithResult(_0x1553c5,0xc9))[_0x5230('0x4a')](handleError(_0x1553c5,null));};exports[_0x5230('0x56')]=function(_0x5eb85e,_0x259d70){var _0xebcda9={'where':{'id':_0x5eb85e[_0x5230('0x57')]['id']}},_0x4025cb={};_0x4025cb[_0x5230('0x36')]=_['keys'](db[_0x5230('0x31')][_0x5230('0x32')]);_0xebcda9[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x4025cb['model'],qs[_0x5230('0x3b')](_0x5eb85e['query'][_0x5230('0x3b')]));_0xebcda9[_0x5230('0x3a')]=_0xebcda9[_0x5230('0x3a')][_0x5230('0x3c')]?_0xebcda9[_0x5230('0x3a')]:_0x4025cb[_0x5230('0x36')];if(_0x5eb85e[_0x5230('0x37')][_0x5230('0x4b')]){_0xebcda9[_0x5230('0x47')]=[{'all':!![]}];}_0xebcda9=_[_0x5230('0x44')]({},_0xebcda9,_0x5eb85e[_0x5230('0x46')]);return db[_0x5230('0x31')][_0x5230('0x4c')](_0xebcda9)['then'](handleEntityNotFound(_0x259d70,null))[_0x5230('0x26')](function(_0x36c442){if(_0x36c442){var _0x23be23=_0x36c442[_0x5230('0x51')]({'plain':!![]});_0x23be23=qs[_0x5230('0x58')](_0x23be23,['id',_0x5230('0x59'),_0x5230('0x5a')]);_0x5eb85e['body']=_[_0x5230('0x58')](_0x5eb85e[_0x5230('0x4e')],['id',_0x5230('0x59'),_0x5230('0x5a')]);return db[_0x5230('0x31')][_0x5230('0x4d')](_['merge'](_0x23be23,_0x5eb85e[_0x5230('0x4e')]),{'include':_0x5eb85e[_0x5230('0x37')][_0x5230('0x4b')]?[{'all':!![]}]:undefined})[_0x5230('0x26')](function(_0x2b0879){var _0x388bd5=_0x5eb85e[_0x5230('0x4f')][_0x5230('0x51')]({'plain':!![]});if(!_0x388bd5)throw new Error(_0x5230('0x50'));if(_0x388bd5[_0x5230('0x5b')]===_0x5230('0x4f')){var _0x489a3b=_0x2b0879[_0x5230('0x51')]({'plain':!![]});var _0xa0916f='IvrCampaigns';return db[_0x5230('0x52')][_0x5230('0x4c')]({'where':{'name':_0xa0916f,'userProfileId':_0x388bd5[_0x5230('0x53')]},'raw':!![]})[_0x5230('0x26')](function(_0x2fe385){if(_0x2fe385&&_0x2fe385[_0x5230('0x54')]===0x0){return db['UserProfileResource'][_0x5230('0x4d')]({'name':_0x489a3b[_0x5230('0x2d')],'resourceId':_0x489a3b['id'],'type':_0x2fe385[_0x5230('0x2d')],'sectionId':_0x2fe385['id']},{})['then'](function(){return _0x2b0879;});}else{return _0x2b0879;}})[_0x5230('0x4a')](function(_0x380301){logger[_0x5230('0x2b')](_0x5230('0x55'),_0x380301);throw _0x380301;});}return _0x2b0879;});}})['then'](respondWithResult(_0x259d70,0xc9))['catch'](handleError(_0x259d70,null));};exports['update']=function(_0x51e9f1,_0x46de3b){if(_0x51e9f1[_0x5230('0x4e')]['id']){delete _0x51e9f1[_0x5230('0x4e')]['id'];}return db[_0x5230('0x31')][_0x5230('0x4c')]({'where':{'id':_0x51e9f1[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x46de3b,null))[_0x5230('0x26')](saveUpdates(_0x51e9f1['body'],null))[_0x5230('0x26')](respondWithResult(_0x46de3b,null))[_0x5230('0x4a')](handleError(_0x46de3b,null));};exports['destroy']=function(_0x583a3d,_0x2b49a3){return db[_0x5230('0x31')][_0x5230('0x4c')]({'where':{'id':_0x583a3d[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x2b49a3,null))[_0x5230('0x26')](removeEntity(_0x2b49a3,null))[_0x5230('0x4a')](handleError(_0x2b49a3,null));};exports[_0x5230('0x5c')]=function(_0x649df6,_0x269075,_0x21a126){var _0x5ece09={'raw':!![],'where':{}};var _0x5428e3={};var _0x463afa={'count':0x0,'rows':[]};return db['Campaign'][_0x5230('0x5d')]({'where':{'id':_0x649df6[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x269075,null))[_0x5230('0x26')](function(_0x4d777c){if(_0x4d777c){_0x5428e3['model']=_[_0x5230('0x38')](db[_0x5230('0x5e')]['rawAttributes']);_0x5428e3[_0x5230('0x37')]=_['keys'](_0x649df6[_0x5230('0x37')]);_0x5428e3[_0x5230('0x41')]=_[_0x5230('0x39')](_0x5428e3['model'],_0x5428e3[_0x5230('0x37')]);_0x5ece09[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x5428e3[_0x5230('0x36')],qs['fields'](_0x649df6[_0x5230('0x37')][_0x5230('0x3b')]));_0x5ece09['attributes']=_0x5ece09[_0x5230('0x3a')][_0x5230('0x3c')]?_0x5ece09[_0x5230('0x3a')]:_0x5428e3['model'];if(!_0x649df6['query'][_0x5230('0x3d')](_0x5230('0x3e'))){_0x5ece09[_0x5230('0x1f')]=qs[_0x5230('0x1f')](_0x649df6['query'][_0x5230('0x1f')]);_0x5ece09[_0x5230('0x1c')]=qs[_0x5230('0x1c')](_0x649df6[_0x5230('0x37')][_0x5230('0x1c')]);}_0x5ece09['order']=qs[_0x5230('0x3f')](_0x649df6[_0x5230('0x37')][_0x5230('0x3f')]);_0x5ece09['where']=qs[_0x5230('0x41')](_[_0x5230('0x42')](_0x649df6[_0x5230('0x37')],_0x5428e3[_0x5230('0x41')]));_0x5ece09[_0x5230('0x40')]['CampaignId']=_0x4d777c['id'];if(_0x649df6[_0x5230('0x37')][_0x5230('0x43')]){_0x5ece09[_0x5230('0x40')]=_[_0x5230('0x44')](_0x5ece09[_0x5230('0x40')],{'$or':_[_0x5230('0x30')](_0x5ece09[_0x5230('0x3a')],function(_0x4165c1){var _0x21d29f={};_0x21d29f[_0x4165c1]={'$like':'%'+_0x649df6[_0x5230('0x37')][_0x5230('0x43')]+'%'};return _0x21d29f;})});}_0x5ece09=_[_0x5230('0x44')]({},_0x5ece09,_0x649df6['options']);return db[_0x5230('0x5e')][_0x5230('0x1e')]({'where':_0x5ece09[_0x5230('0x40')]})[_0x5230('0x26')](function(_0x2c0b47){_0x463afa[_0x5230('0x1e')]=_0x2c0b47;if(_0x649df6[_0x5230('0x37')][_0x5230('0x4b')]){_0x5ece09[_0x5230('0x47')]=[{'all':!![]}];}return db[_0x5230('0x5e')][_0x5230('0x48')](_0x5ece09);})[_0x5230('0x26')](function(_0x75a1){_0x463afa[_0x5230('0x49')]=_0x75a1;return _0x463afa;});}})[_0x5230('0x26')](respondWithFilteredResult(_0x269075,_0x5ece09))[_0x5230('0x4a')](handleError(_0x269075,null));};exports[_0x5230('0x5f')]=function(_0x1605d3,_0x226da0,_0x276bae){var _0x1dfcd6={'raw':!![],'where':{}};var _0x275fd8={};var _0x163ff3={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x1605d3[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x226da0,null))[_0x5230('0x26')](function(_0x116619){if(_0x116619){_0x275fd8[_0x5230('0x36')]=_['keys'](db[_0x5230('0x60')][_0x5230('0x32')]);_0x275fd8[_0x5230('0x37')]=_[_0x5230('0x38')](_0x1605d3['query']);_0x275fd8[_0x5230('0x41')]=_[_0x5230('0x39')](_0x275fd8[_0x5230('0x36')],_0x275fd8[_0x5230('0x37')]);_0x1dfcd6[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x275fd8[_0x5230('0x36')],qs[_0x5230('0x3b')](_0x1605d3[_0x5230('0x37')][_0x5230('0x3b')]));_0x1dfcd6['attributes']=_0x1dfcd6['attributes']['length']?_0x1dfcd6[_0x5230('0x3a')]:_0x275fd8[_0x5230('0x36')];if(!_0x1605d3[_0x5230('0x37')][_0x5230('0x3d')](_0x5230('0x3e'))){_0x1dfcd6[_0x5230('0x1f')]=qs[_0x5230('0x1f')](_0x1605d3[_0x5230('0x37')][_0x5230('0x1f')]);_0x1dfcd6[_0x5230('0x1c')]=qs[_0x5230('0x1c')](_0x1605d3[_0x5230('0x37')][_0x5230('0x1c')]);}_0x1dfcd6[_0x5230('0x61')]=qs['sort'](_0x1605d3[_0x5230('0x37')][_0x5230('0x3f')]);_0x1dfcd6[_0x5230('0x40')]=qs[_0x5230('0x41')](_[_0x5230('0x42')](_0x1605d3['query'],_0x275fd8[_0x5230('0x41')]));_0x1dfcd6[_0x5230('0x40')][_0x5230('0x62')]=_0x116619['id'];if(_0x1605d3[_0x5230('0x37')]['filter']){_0x1dfcd6['where']=_[_0x5230('0x44')](_0x1dfcd6['where'],{'$or':_[_0x5230('0x30')](_0x1dfcd6[_0x5230('0x3a')],function(_0x4d3e6a){var _0x1b3633={};_0x1b3633[_0x4d3e6a]={'$like':'%'+_0x1605d3['query']['filter']+'%'};return _0x1b3633;})});}_0x1dfcd6=_[_0x5230('0x44')]({},_0x1dfcd6,_0x1605d3[_0x5230('0x46')]);return db['CmHopperHistory']['count']({'where':_0x1dfcd6[_0x5230('0x40')]})[_0x5230('0x26')](function(_0xee310){_0x163ff3[_0x5230('0x1e')]=_0xee310;if(_0x1605d3[_0x5230('0x37')][_0x5230('0x4b')]){_0x1dfcd6['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x5230('0x48')](_0x1dfcd6);})[_0x5230('0x26')](function(_0x212e94){_0x163ff3[_0x5230('0x49')]=_0x212e94;return _0x163ff3;});}})[_0x5230('0x26')](respondWithFilteredResult(_0x226da0,_0x1dfcd6))[_0x5230('0x4a')](handleError(_0x226da0,null));};exports['getHopperFinals']=function(_0x51e2df,_0x1be2bf,_0x18fb0b){var _0x2c3d42={'raw':!![],'where':{}};var _0x185b39={};var _0x1e4fdd={'count':0x0,'rows':[]};return db['Campaign'][_0x5230('0x5d')]({'where':{'id':_0x51e2df[_0x5230('0x57')]['id']}})['then'](handleEntityNotFound(_0x1be2bf,null))[_0x5230('0x26')](function(_0x542b38){if(_0x542b38){_0x185b39[_0x5230('0x36')]=_[_0x5230('0x38')](db['CmHopperFinal']['rawAttributes']);_0x185b39[_0x5230('0x37')]=_[_0x5230('0x38')](_0x51e2df['query']);_0x185b39[_0x5230('0x41')]=_['intersection'](_0x185b39[_0x5230('0x36')],_0x185b39[_0x5230('0x37')]);_0x2c3d42[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x185b39['model'],qs[_0x5230('0x3b')](_0x51e2df[_0x5230('0x37')]['fields']));_0x2c3d42[_0x5230('0x3a')]=_0x2c3d42[_0x5230('0x3a')][_0x5230('0x3c')]?_0x2c3d42[_0x5230('0x3a')]:_0x185b39['model'];if(!_0x51e2df[_0x5230('0x37')][_0x5230('0x3d')](_0x5230('0x3e'))){_0x2c3d42[_0x5230('0x1f')]=qs[_0x5230('0x1f')](_0x51e2df['query'][_0x5230('0x1f')]);_0x2c3d42[_0x5230('0x1c')]=qs['offset'](_0x51e2df['query'][_0x5230('0x1c')]);}_0x2c3d42[_0x5230('0x61')]=qs[_0x5230('0x3f')](_0x51e2df['query']['sort']);_0x2c3d42[_0x5230('0x40')]=qs[_0x5230('0x41')](_[_0x5230('0x42')](_0x51e2df[_0x5230('0x37')],_0x185b39['filters']));_0x2c3d42['where']['CampaignId']=_0x542b38['id'];if(_0x51e2df['query'][_0x5230('0x43')]){_0x2c3d42[_0x5230('0x40')]=_[_0x5230('0x44')](_0x2c3d42[_0x5230('0x40')],{'$or':_['map'](_0x2c3d42[_0x5230('0x3a')],function(_0x41be45){var _0x5204a1={};_0x5204a1[_0x41be45]={'$like':'%'+_0x51e2df[_0x5230('0x37')][_0x5230('0x43')]+'%'};return _0x5204a1;})});}_0x2c3d42=_['merge']({},_0x2c3d42,_0x51e2df[_0x5230('0x46')]);return db[_0x5230('0x63')][_0x5230('0x1e')]({'where':_0x2c3d42[_0x5230('0x40')]})[_0x5230('0x26')](function(_0x44302d){_0x1e4fdd[_0x5230('0x1e')]=_0x44302d;if(_0x51e2df[_0x5230('0x37')][_0x5230('0x4b')]){_0x2c3d42[_0x5230('0x47')]=[{'all':!![]}];}return db[_0x5230('0x63')][_0x5230('0x48')](_0x2c3d42);})[_0x5230('0x26')](function(_0x30b4b5){_0x1e4fdd[_0x5230('0x49')]=_0x30b4b5;return _0x1e4fdd;});}})[_0x5230('0x26')](respondWithFilteredResult(_0x1be2bf,_0x2c3d42))['catch'](handleError(_0x1be2bf,null));};exports[_0x5230('0x64')]=function(_0x1f1349,_0x13a3f9,_0x2fd6d2){var _0x2424d5={'raw':!![],'where':{}};var _0x51ccf6={};var _0x20cb52={'count':0x0,'rows':[]};return db[_0x5230('0x31')]['findOne']({'where':{'id':_0x1f1349['params']['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x13a3f9,null))['then'](function(_0x1dce7b){if(_0x1dce7b){_0x51ccf6[_0x5230('0x36')]=_[_0x5230('0x38')](db[_0x5230('0x65')][_0x5230('0x32')]);_0x51ccf6['query']=_['keys'](_0x1f1349[_0x5230('0x37')]);_0x51ccf6[_0x5230('0x41')]=_[_0x5230('0x39')](_0x51ccf6[_0x5230('0x36')],_0x51ccf6['query']);_0x2424d5[_0x5230('0x3a')]=_['intersection'](_0x51ccf6['model'],qs[_0x5230('0x3b')](_0x1f1349[_0x5230('0x37')][_0x5230('0x3b')]));_0x2424d5[_0x5230('0x3a')]=_0x2424d5[_0x5230('0x3a')][_0x5230('0x3c')]?_0x2424d5['attributes']:_0x51ccf6[_0x5230('0x36')];if(!_0x1f1349[_0x5230('0x37')][_0x5230('0x3d')](_0x5230('0x3e'))){_0x2424d5['limit']=qs[_0x5230('0x1f')](_0x1f1349[_0x5230('0x37')]['limit']);_0x2424d5[_0x5230('0x1c')]=qs[_0x5230('0x1c')](_0x1f1349[_0x5230('0x37')][_0x5230('0x1c')]);}_0x2424d5[_0x5230('0x61')]=qs[_0x5230('0x3f')](_0x1f1349[_0x5230('0x37')][_0x5230('0x3f')]);_0x2424d5[_0x5230('0x40')]=qs['filters'](_[_0x5230('0x42')](_0x1f1349['query'],_0x51ccf6['filters']));_0x2424d5[_0x5230('0x40')][_0x5230('0x62')]=_0x1dce7b['id'];if(_0x1f1349['query'][_0x5230('0x43')]){_0x2424d5[_0x5230('0x40')]=_[_0x5230('0x44')](_0x2424d5[_0x5230('0x40')],{'$or':_['map'](_0x2424d5[_0x5230('0x3a')],function(_0x53efe9){var _0x539a47={};_0x539a47[_0x53efe9]={'$like':'%'+_0x1f1349[_0x5230('0x37')]['filter']+'%'};return _0x539a47;})});}_0x2424d5=_[_0x5230('0x44')]({},_0x2424d5,_0x1f1349[_0x5230('0x46')]);return db[_0x5230('0x65')][_0x5230('0x1e')]({'where':_0x2424d5[_0x5230('0x40')]})[_0x5230('0x26')](function(_0x191bbc){_0x20cb52[_0x5230('0x1e')]=_0x191bbc;if(_0x1f1349['query']['includeAll']){_0x2424d5['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0x5230('0x48')](_0x2424d5);})[_0x5230('0x26')](function(_0x41f0c2){_0x20cb52[_0x5230('0x49')]=_0x41f0c2;return _0x20cb52;});}})['then'](respondWithFilteredResult(_0x13a3f9,_0x2424d5))[_0x5230('0x4a')](handleError(_0x13a3f9,null));};exports[_0x5230('0x66')]=function(_0x21c2e2,_0x1b27cf,_0x40bd73){var _0x1f7374={};var _0x4c9832={};var _0x4b3d35;var _0x9182c;return db['Campaign'][_0x5230('0x5d')]({'where':{'id':_0x21c2e2['params']['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x1b27cf,null))[_0x5230('0x26')](function(_0x4b2c39){if(_0x4b2c39){_0x4b3d35=_0x4b2c39;_0x4c9832[_0x5230('0x36')]=_[_0x5230('0x38')](db[_0x5230('0x67')][_0x5230('0x32')]);_0x4c9832[_0x5230('0x37')]=_['keys'](_0x21c2e2[_0x5230('0x37')]);_0x4c9832[_0x5230('0x41')]=_[_0x5230('0x39')](_0x4c9832[_0x5230('0x36')],_0x4c9832['query']);_0x1f7374[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x4c9832[_0x5230('0x36')],qs['fields'](_0x21c2e2[_0x5230('0x37')][_0x5230('0x3b')]));_0x1f7374[_0x5230('0x3a')]=_0x1f7374[_0x5230('0x3a')]['length']?_0x1f7374[_0x5230('0x3a')]:_0x4c9832[_0x5230('0x36')];_0x1f7374[_0x5230('0x61')]=qs[_0x5230('0x3f')](_0x21c2e2['query'][_0x5230('0x3f')]);_0x1f7374['where']=qs[_0x5230('0x41')](_[_0x5230('0x42')](_0x21c2e2['query'],_0x4c9832[_0x5230('0x41')]));if(_0x21c2e2[_0x5230('0x37')][_0x5230('0x43')]){_0x1f7374['where']=_[_0x5230('0x44')](_0x1f7374['where'],{'$or':_[_0x5230('0x30')](_0x1f7374[_0x5230('0x3a')],function(_0x1252c8){var _0x2d08ea={};_0x2d08ea[_0x1252c8]={'$like':'%'+_0x21c2e2[_0x5230('0x37')]['filter']+'%'};return _0x2d08ea;})});}_0x1f7374=_[_0x5230('0x44')]({},_0x1f7374,_0x21c2e2[_0x5230('0x46')]);return _0x4b3d35[_0x5230('0x66')](_0x1f7374);}})['then'](function(_0x35954f){if(_0x35954f){_0x9182c=_0x35954f[_0x5230('0x3c')];if(!_0x21c2e2[_0x5230('0x37')]['hasOwnProperty'](_0x5230('0x3e'))){_0x1f7374[_0x5230('0x1f')]=qs[_0x5230('0x1f')](_0x21c2e2[_0x5230('0x37')]['limit']);_0x1f7374['offset']=qs['offset'](_0x21c2e2[_0x5230('0x37')][_0x5230('0x1c')]);}return _0x4b3d35[_0x5230('0x66')](_0x1f7374);}})['then'](function(_0x108f77){if(_0x108f77){return _0x108f77?{'count':_0x9182c,'rows':_0x108f77}:null;}})['then'](respondWithResult(_0x1b27cf,null))[_0x5230('0x4a')](handleError(_0x1b27cf,null));};exports[_0x5230('0x68')]=function(_0x4c80b1,_0x35df25,_0x92dd9f){var _0xcf5fbe,_0x9bb6bb;return db[_0x5230('0x31')]['find']({'where':{'id':_0x4c80b1['params']['id']}})['then'](handleEntityNotFound(_0x35df25,null))[_0x5230('0x26')](function(_0x4ab3da){if(_0x4ab3da){_0x9bb6bb=_0x4ab3da;return _0x4ab3da['addLists'](_0x4c80b1['body'][_0x5230('0x69')],_[_0x5230('0x58')](_0x4c80b1['body'],['ids','id'])||{});}return null;})[_0x5230('0x6a')](function(_0x9374d4){var _0xe6abaa;_0xcf5fbe=_0x9374d4||[];var _0x45247a=[];if(_0x9374d4){for(var _0x4fbac8=0x0;_0x4fbac8<_0x9374d4[_0x5230('0x3c')];_0x4fbac8+=0x1){var _0x11e774=_0x9374d4[_0x4fbac8][_0x5230('0x51')]({'plain':!![]});_0x9bb6bb[_0x5230('0x6b')]=_0x4c80b1[_0x5230('0x4e')][_0x5230('0x6b')]?_0x4c80b1[_0x5230('0x4e')][_0x5230('0x6b')]:_0x9bb6bb[_0x5230('0x6b')];switch(_0x9bb6bb[_0x5230('0x6b')]){case _0x5230('0x6c'):_0xe6abaa=squel['insert']()[_0x5230('0x6d')](_0x5230('0x6e'))[_0x5230('0x6f')]([_0x5230('0x70'),_0x5230('0x71'),_0x5230('0x72'),'ListId',_0x5230('0x62'),_0x5230('0x59'),_0x5230('0x5a')],squel[_0x5230('0x73')]()[_0x5230('0x74')]('phone',_0x5230('0x70'))[_0x5230('0x74')](_0x5230('0x75'),_0x5230('0x71'))[_0x5230('0x74')]('id',_0x5230('0x72'))[_0x5230('0x74')](_0x11e774['CmListId'][_0x5230('0x76')](),_0x5230('0x77'))[_0x5230('0x74')](_0x4c80b1[_0x5230('0x57')]['id'][_0x5230('0x76')](),_0x5230('0x62'))[_0x5230('0x74')]('NOW()',_0x5230('0x59'))['field'](_0x5230('0x75'),'updatedAt')[_0x5230('0x78')]('cm_contacts')[_0x5230('0x40')](_0x5230('0x79'))[_0x5230('0x40')]('ListId\x20=\x20?',_0x11e774['CmListId']['toString']())[_0x5230('0x40')](_0x5230('0x7a'))[_0x5230('0x40')](_0x5230('0x7b'),squel['select']()[_0x5230('0x74')](_0x5230('0x7c'))[_0x5230('0x78')](_0x5230('0x7d'))[_0x5230('0x40')](_0x5230('0x7e'),_0x4c80b1[_0x5230('0x57')]['id']['toString']()))['where'](_0x5230('0x7b'),squel[_0x5230('0x73')]()[_0x5230('0x74')](_0x5230('0x7f'))[_0x5230('0x78')]('cm_hopper')[_0x5230('0x40')](_0x5230('0x7e'),_0x4c80b1[_0x5230('0x57')]['id'][_0x5230('0x76')]())))[_0x5230('0x76')]();break;case _0x5230('0x80'):_0xe6abaa=squel[_0x5230('0x81')]()['into'](_0x5230('0x6e'))[_0x5230('0x6f')]([_0x5230('0x70'),_0x5230('0x71'),_0x5230('0x72'),_0x5230('0x77'),_0x5230('0x62'),_0x5230('0x59'),_0x5230('0x5a')],squel['select']()[_0x5230('0x74')]('phone',_0x5230('0x70'))[_0x5230('0x74')](_0x5230('0x75'),_0x5230('0x71'))['field']('id',_0x5230('0x72'))['field'](_0x11e774[_0x5230('0x82')][_0x5230('0x76')](),_0x5230('0x77'))['field'](_0x4c80b1[_0x5230('0x57')]['id'][_0x5230('0x76')](),_0x5230('0x62'))[_0x5230('0x74')](_0x5230('0x75'),'createdAt')['field'](_0x5230('0x75'),_0x5230('0x5a'))[_0x5230('0x78')]('cm_contacts')[_0x5230('0x40')]('deletedAt\x20IS\x20NULL')[_0x5230('0x40')]('ListId\x20=\x20?',_0x11e774[_0x5230('0x82')][_0x5230('0x76')]())['where'](_0x5230('0x7a'))['where'](_0x5230('0x7b'),squel[_0x5230('0x73')]()['field'](_0x5230('0x7f'))['from'](_0x5230('0x6e'))[_0x5230('0x40')](_0x5230('0x7e'),_0x4c80b1[_0x5230('0x57')]['id'][_0x5230('0x76')]())))[_0x5230('0x76')]();break;default:_0xe6abaa=squel[_0x5230('0x81')]()[_0x5230('0x6d')](_0x5230('0x6e'))[_0x5230('0x6f')]([_0x5230('0x70'),'scheduledAt',_0x5230('0x72'),'ListId',_0x5230('0x62'),_0x5230('0x59'),_0x5230('0x5a')],squel[_0x5230('0x73')]()[_0x5230('0x74')](_0x5230('0x70'),'phone')['field']('NOW()',_0x5230('0x71'))[_0x5230('0x74')]('id',_0x5230('0x72'))[_0x5230('0x74')](_0x11e774[_0x5230('0x82')]['toString'](),_0x5230('0x77'))['field'](_0x4c80b1[_0x5230('0x57')]['id'][_0x5230('0x76')](),_0x5230('0x62'))['field']('NOW()',_0x5230('0x59'))['field'](_0x5230('0x75'),_0x5230('0x5a'))[_0x5230('0x78')](_0x5230('0x83'))[_0x5230('0x40')](_0x5230('0x79'))[_0x5230('0x40')](_0x5230('0x84'),_0x11e774['CmListId'][_0x5230('0x76')]())[_0x5230('0x40')](_0x5230('0x7a')))[_0x5230('0x76')]();}_0x45247a['push'](db[_0x5230('0x85')]['query'](_0xe6abaa));}return BPromise[_0x5230('0x86')](_0x45247a);}})[_0x5230('0x26')](function(){return _0xcf5fbe;})[_0x5230('0x26')](respondWithResult(_0x35df25,null))['catch'](handleError(_0x35df25,null));};exports[_0x5230('0x87')]=function(_0x2c167b,_0x5e6ff1,_0x2891f2){return db[_0x5230('0x31')][_0x5230('0x4c')]({'where':{'id':_0x2c167b[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x5e6ff1,null))[_0x5230('0x26')](function(_0xe8a492){if(_0xe8a492){return _0xe8a492[_0x5230('0x87')](_0x2c167b[_0x5230('0x37')][_0x5230('0x69')]);}})['then'](function(_0x422425){if(_0x422425){return db['CmHopper'][_0x5230('0x27')]({'where':{'ListId':_0x2c167b[_0x5230('0x37')][_0x5230('0x69')],'CampaignId':_0x2c167b[_0x5230('0x57')]['id']}})[_0x5230('0x26')](function(){return _0x422425;});}})[_0x5230('0x26')](respondWithStatusCode(_0x5e6ff1,null))[_0x5230('0x4a')](handleError(_0x5e6ff1,null));};exports[_0x5230('0x88')]=function(_0x5dbc27,_0x12c7de,_0x14230b){var _0x3a92cf={};var _0x55b741={};var _0x38f470;var _0x1e09ae;return db[_0x5230('0x31')][_0x5230('0x5d')]({'where':{'id':_0x5dbc27[_0x5230('0x57')]['id']}})['then'](handleEntityNotFound(_0x12c7de,null))[_0x5230('0x26')](function(_0x2eb530){if(_0x2eb530){_0x38f470=_0x2eb530;_0x55b741['model']=_['keys'](db[_0x5230('0x67')][_0x5230('0x32')]);_0x55b741[_0x5230('0x37')]=_[_0x5230('0x38')](_0x5dbc27[_0x5230('0x37')]);_0x55b741[_0x5230('0x41')]=_[_0x5230('0x39')](_0x55b741[_0x5230('0x36')],_0x55b741[_0x5230('0x37')]);_0x3a92cf[_0x5230('0x3a')]=_[_0x5230('0x39')](_0x55b741[_0x5230('0x36')],qs[_0x5230('0x3b')](_0x5dbc27[_0x5230('0x37')][_0x5230('0x3b')]));_0x3a92cf[_0x5230('0x3a')]=_0x3a92cf[_0x5230('0x3a')][_0x5230('0x3c')]?_0x3a92cf[_0x5230('0x3a')]:_0x55b741[_0x5230('0x36')];_0x3a92cf[_0x5230('0x61')]=qs[_0x5230('0x3f')](_0x5dbc27['query'][_0x5230('0x3f')]);_0x3a92cf[_0x5230('0x40')]=qs['filters'](_[_0x5230('0x42')](_0x5dbc27['query'],_0x55b741[_0x5230('0x41')]));if(_0x5dbc27['query'][_0x5230('0x43')]){_0x3a92cf[_0x5230('0x40')]=_[_0x5230('0x44')](_0x3a92cf[_0x5230('0x40')],{'$or':_['map'](_0x3a92cf[_0x5230('0x3a')],function(_0x5acbdd){var _0x193626={};_0x193626[_0x5acbdd]={'$like':'%'+_0x5dbc27[_0x5230('0x37')][_0x5230('0x43')]+'%'};return _0x193626;})});}_0x3a92cf=_[_0x5230('0x44')]({},_0x3a92cf,_0x5dbc27['options']);return _0x38f470[_0x5230('0x88')](_0x3a92cf);}})[_0x5230('0x26')](function(_0x59ca17){if(_0x59ca17){_0x1e09ae=_0x59ca17['length'];if(!_0x5dbc27['query']['hasOwnProperty'](_0x5230('0x3e'))){_0x3a92cf[_0x5230('0x1f')]=qs[_0x5230('0x1f')](_0x5dbc27[_0x5230('0x37')][_0x5230('0x1f')]);_0x3a92cf['offset']=qs[_0x5230('0x1c')](_0x5dbc27['query']['offset']);}return _0x38f470[_0x5230('0x88')](_0x3a92cf);}})[_0x5230('0x26')](function(_0xeefe29){if(_0xeefe29){return _0xeefe29?{'count':_0x1e09ae,'rows':_0xeefe29}:null;}})['then'](respondWithResult(_0x12c7de,null))[_0x5230('0x4a')](handleError(_0x12c7de,null));};exports[_0x5230('0x89')]=function(_0x2a1f85,_0x528d69,_0x1a6713){var _0x28ef0b,_0xd20f0e;return db[_0x5230('0x31')]['find']({'where':{'id':_0x2a1f85[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x528d69,null))[_0x5230('0x26')](function(_0x364bce){if(_0x364bce){_0xd20f0e=_0x364bce;return _0x364bce[_0x5230('0x89')](_0x2a1f85['body']['ids'],_[_0x5230('0x58')](_0x2a1f85[_0x5230('0x4e')],[_0x5230('0x69'),'id'])||{});}return null;})['spread'](function(_0x45ee8a){var _0x3d9b26;_0x28ef0b=_0x45ee8a||[];var _0x1c80c1=[];if(_0x45ee8a){for(var _0x1030d5=0x0;_0x1030d5<_0x45ee8a[_0x5230('0x3c')];_0x1030d5+=0x1){var _0x22818d=_0x45ee8a[_0x1030d5][_0x5230('0x51')]({'plain':!![]});_0x3d9b26=squel[_0x5230('0x81')]()[_0x5230('0x6d')](_0x5230('0x8a'))['fromQuery'](['phone',_0x5230('0x72'),_0x5230('0x77'),_0x5230('0x62'),_0x5230('0x59'),_0x5230('0x5a')],squel[_0x5230('0x73')]()[_0x5230('0x74')]('phone','phone')[_0x5230('0x74')]('id',_0x5230('0x72'))['field'](_0x22818d['CmListId'][_0x5230('0x76')](),_0x5230('0x77'))[_0x5230('0x74')](_0x2a1f85[_0x5230('0x57')]['id'][_0x5230('0x76')](),_0x5230('0x62'))[_0x5230('0x74')](_0x5230('0x75'),_0x5230('0x59'))[_0x5230('0x74')]('NOW()',_0x5230('0x5a'))[_0x5230('0x78')](_0x5230('0x83'))[_0x5230('0x40')](_0x5230('0x79'))[_0x5230('0x40')](_0x5230('0x84'),_0x22818d['CmListId']['toString']())['where'](_0x5230('0x7a')))[_0x5230('0x76')]();_0x1c80c1[_0x5230('0x8b')](db[_0x5230('0x85')]['query'](_0x3d9b26));}return BPromise['all'](_0x1c80c1);}})[_0x5230('0x26')](function(){return _0x28ef0b;})[_0x5230('0x26')](respondWithResult(_0x528d69,null))[_0x5230('0x4a')](handleError(_0x528d69,null));};exports[_0x5230('0x8c')]=function(_0x309278,_0x155ab7,_0x26d09e){return db[_0x5230('0x31')][_0x5230('0x4c')]({'where':{'id':_0x309278[_0x5230('0x57')]['id']}})[_0x5230('0x26')](handleEntityNotFound(_0x155ab7,null))[_0x5230('0x26')](function(_0x28eb74){if(_0x28eb74){return _0x28eb74[_0x5230('0x8c')](_0x309278[_0x5230('0x37')]['ids']);}})[_0x5230('0x26')](function(_0x29be9c){if(_0x29be9c){return db[_0x5230('0x65')][_0x5230('0x27')]({'where':{'ListId':_0x309278[_0x5230('0x37')][_0x5230('0x69')],'CampaignId':_0x309278['params']['id']}})[_0x5230('0x26')](function(){return _0x29be9c;});}})[_0x5230('0x26')](respondWithStatusCode(_0x155ab7,null))[_0x5230('0x4a')](handleError(_0x155ab7,null));};
\ No newline at end of file
+var _0x2a70=['find','catch','create','body','user','UserProfileSection','userProfileId','UserProfileResource','clone','params','createdAt','updatedAt','omit','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getHoppers','findOne','CmHopper','hasOwnProperty','nolimit','CampaignId','getHopperHistories','CmHopperHistory','rows','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','dialCheckDuplicateType','insert','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','select','field','phone','NOW()','CmListId','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','onlyIfOpen','into','phone\x20IS\x20NOT\x20NULL','COALESCE(phone,\x27\x27)','push','removeLists','getBlackLists','addBlackLists','cm_hopper_black','sequelize','all','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','json','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','IvrCampaigns','end','error','stack','send','map','Campaign','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','offset','order','sort','where','pick','filter','merge','options','include','findAll','show','includeAll'];(function(_0x3aeb36,_0x312dc9){var _0xa2ef21=function(_0x50a46b){while(--_0x50a46b){_0x3aeb36['push'](_0x3aeb36['shift']());}};_0xa2ef21(++_0x312dc9);}(_0x2a70,0x1db));var _0x02a7=function(_0xd94111,_0x4d1c97){_0xd94111=_0xd94111-0x0;var _0x27546f=_0x2a70[_0xd94111];return _0x27546f;};'use strict';var emlformat=require(_0x02a7('0x0'));var rimraf=require(_0x02a7('0x1'));var zipdir=require(_0x02a7('0x2'));var jsonpatch=require(_0x02a7('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x02a7('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x02a7('0x5'));var sox=require(_0x02a7('0x6'));var csv=require(_0x02a7('0x7'));var ejs=require(_0x02a7('0x8'));var fs=require('fs');var fs_extra=require(_0x02a7('0x9'));var _=require(_0x02a7('0xa'));var squel=require(_0x02a7('0xb'));var crypto=require(_0x02a7('0xc'));var jsforce=require(_0x02a7('0xd'));var deskjs=require(_0x02a7('0xe'));var toCsv=require(_0x02a7('0x7'));var querystring=require(_0x02a7('0xf'));var Papa=require(_0x02a7('0x10'));var Redis=require(_0x02a7('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x02a7('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x02a7('0x13'));var logger=require(_0x02a7('0x14'))('api');var utils=require(_0x02a7('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x02a7('0x16'))['db'];function respondWithStatusCode(_0x39715c,_0x3dab66){_0x3dab66=_0x3dab66||0xcc;return function(_0x112607){if(_0x112607){return _0x39715c[_0x02a7('0x17')](_0x3dab66);}return _0x39715c[_0x02a7('0x18')](_0x3dab66)['end']();};}function respondWithResult(_0x146cf8,_0x5e68fe){_0x5e68fe=_0x5e68fe||0xc8;return function(_0x2379b6){if(_0x2379b6){return _0x146cf8[_0x02a7('0x18')](_0x5e68fe)[_0x02a7('0x19')](_0x2379b6);}};}function respondWithFilteredResult(_0x56e3d0,_0x5926d1){return function(_0x2771a5){if(_0x2771a5){var _0x914bd2=typeof _0x5926d1['offset']===_0x02a7('0x1a')&&typeof _0x5926d1[_0x02a7('0x1b')]==='undefined';var _0x5c3e30=_0x2771a5[_0x02a7('0x1c')];var _0x41c5e7=_0x914bd2?0x0:_0x5926d1['offset'];var _0x29d666=_0x914bd2?_0x2771a5[_0x02a7('0x1c')]:_0x5926d1['offset']+_0x5926d1['limit'];var _0x56e324;if(_0x29d666>=_0x5c3e30){_0x29d666=_0x5c3e30;_0x56e324=0xc8;}else{_0x56e324=0xce;}_0x56e3d0['status'](_0x56e324);return _0x56e3d0['set'](_0x02a7('0x1d'),_0x41c5e7+'-'+_0x29d666+'/'+_0x5c3e30)[_0x02a7('0x19')](_0x2771a5);}return null;};}function patchUpdates(_0x3b0134){return function(_0x270aa9){try{jsonpatch[_0x02a7('0x1e')](_0x270aa9,_0x3b0134,!![]);}catch(_0x57a724){return BPromise[_0x02a7('0x1f')](_0x57a724);}return _0x270aa9[_0x02a7('0x20')]();};}function saveUpdates(_0x5c674c,_0x5346c6){return function(_0x411d79){if(_0x411d79){return _0x411d79[_0x02a7('0x21')](_0x5c674c)[_0x02a7('0x22')](function(_0x3e088e){return _0x3e088e;});}return null;};}function removeEntity(_0x226f49,_0x5770c9){return function(_0x3004d8){if(_0x3004d8){return _0x3004d8[_0x02a7('0x23')]()['then'](function(){var _0x19243a=_0x3004d8[_0x02a7('0x24')]({'plain':!![]});var _0x22688b=_0x02a7('0x25');return db['UserProfileResource']['destroy']({'where':{'type':_0x22688b,'resourceId':_0x19243a['id']}})[_0x02a7('0x22')](function(){return _0x3004d8;});})[_0x02a7('0x22')](function(){_0x226f49[_0x02a7('0x18')](0xcc)[_0x02a7('0x26')]();});}};}function handleEntityNotFound(_0x261bb2,_0x5ce8d8){return function(_0x478117){if(!_0x478117){_0x261bb2[_0x02a7('0x17')](0x194);}return _0x478117;};}function handleError(_0x225e78,_0x257a5b){_0x257a5b=_0x257a5b||0x1f4;return function(_0x21350e){logger[_0x02a7('0x27')](_0x21350e[_0x02a7('0x28')]);if(_0x21350e['name']){delete _0x21350e['name'];}_0x225e78[_0x02a7('0x18')](_0x257a5b)[_0x02a7('0x29')](_0x21350e);};}exports['index']=function(_0x36e842,_0x1fc5ed){var _0x5f037d={},_0x12a865={},_0x4a87b4={'count':0x0,'rows':[]};var _0x2d945b=_[_0x02a7('0x2a')](db[_0x02a7('0x2b')][_0x02a7('0x2c')],function(_0x51b3dc){return{'name':_0x51b3dc[_0x02a7('0x2d')],'type':_0x51b3dc[_0x02a7('0x2e')][_0x02a7('0x2f')]};});_0x12a865[_0x02a7('0x30')]=_['map'](_0x2d945b,_0x02a7('0x31'));_0x12a865[_0x02a7('0x32')]=_[_0x02a7('0x33')](_0x36e842[_0x02a7('0x32')]);_0x12a865[_0x02a7('0x34')]=_[_0x02a7('0x35')](_0x12a865[_0x02a7('0x30')],_0x12a865['query']);_0x5f037d[_0x02a7('0x36')]=_['intersection'](_0x12a865['model'],qs[_0x02a7('0x37')](_0x36e842[_0x02a7('0x32')][_0x02a7('0x37')]));_0x5f037d[_0x02a7('0x36')]=_0x5f037d[_0x02a7('0x36')][_0x02a7('0x38')]?_0x5f037d['attributes']:_0x12a865[_0x02a7('0x30')];if(!_0x36e842[_0x02a7('0x32')]['hasOwnProperty']('nolimit')){_0x5f037d[_0x02a7('0x1b')]=qs[_0x02a7('0x1b')](_0x36e842[_0x02a7('0x32')][_0x02a7('0x1b')]);_0x5f037d['offset']=qs[_0x02a7('0x39')](_0x36e842[_0x02a7('0x32')]['offset']);}_0x5f037d[_0x02a7('0x3a')]=qs[_0x02a7('0x3b')](_0x36e842[_0x02a7('0x32')][_0x02a7('0x3b')]);_0x5f037d[_0x02a7('0x3c')]=qs[_0x02a7('0x34')](_[_0x02a7('0x3d')](_0x36e842['query'],_0x12a865[_0x02a7('0x34')]),_0x2d945b);if(_0x36e842[_0x02a7('0x32')][_0x02a7('0x3e')]){_0x5f037d[_0x02a7('0x3c')]=_['merge'](_0x5f037d[_0x02a7('0x3c')],{'$or':_['map'](_0x2d945b,function(_0x2f90bf){if(_0x2f90bf[_0x02a7('0x2e')]!=='VIRTUAL'){var _0x1a9f9f={};_0x1a9f9f[_0x2f90bf[_0x02a7('0x31')]]={'$like':'%'+_0x36e842[_0x02a7('0x32')]['filter']+'%'};return _0x1a9f9f;}})});}_0x5f037d=_[_0x02a7('0x3f')]({},_0x5f037d,_0x36e842[_0x02a7('0x40')]);var _0x208bde={'where':_0x5f037d['where']};return db[_0x02a7('0x2b')][_0x02a7('0x1c')](_0x208bde)[_0x02a7('0x22')](function(_0x1fc233){_0x4a87b4[_0x02a7('0x1c')]=_0x1fc233;if(_0x36e842['query']['includeAll']){_0x5f037d[_0x02a7('0x41')]=[{'all':!![]}];}return db[_0x02a7('0x2b')][_0x02a7('0x42')](_0x5f037d);})['then'](function(_0x2df168){_0x4a87b4['rows']=_0x2df168;return _0x4a87b4;})[_0x02a7('0x22')](respondWithFilteredResult(_0x1fc5ed,_0x5f037d))['catch'](handleError(_0x1fc5ed,null));};exports[_0x02a7('0x43')]=function(_0x45c4e2,_0x3719bf){var _0x33d93b={'raw':![],'where':{'id':_0x45c4e2['params']['id']}},_0x21c894={};_0x21c894[_0x02a7('0x30')]=_[_0x02a7('0x33')](db[_0x02a7('0x2b')][_0x02a7('0x2c')]);_0x21c894[_0x02a7('0x32')]=_['keys'](_0x45c4e2[_0x02a7('0x32')]);_0x21c894[_0x02a7('0x34')]=_[_0x02a7('0x35')](_0x21c894[_0x02a7('0x30')],_0x21c894[_0x02a7('0x32')]);_0x33d93b[_0x02a7('0x36')]=_['intersection'](_0x21c894[_0x02a7('0x30')],qs[_0x02a7('0x37')](_0x45c4e2[_0x02a7('0x32')][_0x02a7('0x37')]));_0x33d93b[_0x02a7('0x36')]=_0x33d93b[_0x02a7('0x36')][_0x02a7('0x38')]?_0x33d93b['attributes']:_0x21c894['model'];if(_0x45c4e2['query'][_0x02a7('0x44')]){_0x33d93b[_0x02a7('0x41')]=[{'all':!![]}];}_0x33d93b=_['merge']({},_0x33d93b,_0x45c4e2['options']);return db[_0x02a7('0x2b')][_0x02a7('0x45')](_0x33d93b)['then'](handleEntityNotFound(_0x3719bf,null))[_0x02a7('0x22')](respondWithResult(_0x3719bf,null))[_0x02a7('0x46')](handleError(_0x3719bf,null));};exports[_0x02a7('0x47')]=function(_0x98de6d,_0x4540b1){return db[_0x02a7('0x2b')][_0x02a7('0x47')](_0x98de6d[_0x02a7('0x48')],{})['then'](function(_0x54e09d){var _0x5461f5=_0x98de6d[_0x02a7('0x49')]['get']({'plain':!![]});if(!_0x5461f5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5461f5['role']==='user'){var _0x5abe7e=_0x54e09d[_0x02a7('0x24')]({'plain':!![]});var _0x5489be='IvrCampaigns';return db[_0x02a7('0x4a')]['find']({'where':{'name':_0x5489be,'userProfileId':_0x5461f5[_0x02a7('0x4b')]},'raw':!![]})['then'](function(_0x22bff4){if(_0x22bff4&&_0x22bff4['autoAssociation']===0x0){return db[_0x02a7('0x4c')][_0x02a7('0x47')]({'name':_0x5abe7e[_0x02a7('0x31')],'resourceId':_0x5abe7e['id'],'type':_0x22bff4[_0x02a7('0x31')],'sectionId':_0x22bff4['id']},{})[_0x02a7('0x22')](function(){return _0x54e09d;});}else{return _0x54e09d;}})[_0x02a7('0x46')](function(_0x582fc0){logger[_0x02a7('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x582fc0);throw _0x582fc0;});}return _0x54e09d;})['then'](respondWithResult(_0x4540b1,0xc9))['catch'](handleError(_0x4540b1,null));};exports[_0x02a7('0x4d')]=function(_0x313748,_0x16550a){var _0x45ad18={'where':{'id':_0x313748[_0x02a7('0x4e')]['id']}},_0x2743af={};_0x2743af[_0x02a7('0x30')]=_['keys'](db['Campaign'][_0x02a7('0x2c')]);_0x45ad18[_0x02a7('0x36')]=_[_0x02a7('0x35')](_0x2743af[_0x02a7('0x30')],qs[_0x02a7('0x37')](_0x313748[_0x02a7('0x32')][_0x02a7('0x37')]));_0x45ad18['attributes']=_0x45ad18['attributes'][_0x02a7('0x38')]?_0x45ad18[_0x02a7('0x36')]:_0x2743af[_0x02a7('0x30')];if(_0x313748[_0x02a7('0x32')][_0x02a7('0x44')]){_0x45ad18[_0x02a7('0x41')]=[{'all':!![]}];}_0x45ad18=_[_0x02a7('0x3f')]({},_0x45ad18,_0x313748[_0x02a7('0x40')]);return db[_0x02a7('0x2b')][_0x02a7('0x45')](_0x45ad18)[_0x02a7('0x22')](handleEntityNotFound(_0x16550a,null))[_0x02a7('0x22')](function(_0x57cff9){if(_0x57cff9){var _0x1ff5ec=_0x57cff9[_0x02a7('0x24')]({'plain':!![]});_0x1ff5ec=qs['omit'](_0x1ff5ec,['id',_0x02a7('0x4f'),_0x02a7('0x50')]);_0x313748[_0x02a7('0x48')]=_[_0x02a7('0x51')](_0x313748[_0x02a7('0x48')],['id',_0x02a7('0x4f'),_0x02a7('0x50')]);return db['Campaign'][_0x02a7('0x47')](_[_0x02a7('0x3f')](_0x1ff5ec,_0x313748[_0x02a7('0x48')]),{'include':_0x313748[_0x02a7('0x32')][_0x02a7('0x44')]?[{'all':!![]}]:undefined})[_0x02a7('0x22')](function(_0x1a49c5){var _0x30e5c4=_0x313748[_0x02a7('0x49')]['get']({'plain':!![]});if(!_0x30e5c4)throw new Error(_0x02a7('0x52'));if(_0x30e5c4[_0x02a7('0x53')]==='user'){var _0x3c7b41=_0x1a49c5[_0x02a7('0x24')]({'plain':!![]});var _0x2ae769=_0x02a7('0x25');return db[_0x02a7('0x4a')][_0x02a7('0x45')]({'where':{'name':_0x2ae769,'userProfileId':_0x30e5c4[_0x02a7('0x4b')]},'raw':!![]})[_0x02a7('0x22')](function(_0x41ab68){if(_0x41ab68&&_0x41ab68[_0x02a7('0x54')]===0x0){return db[_0x02a7('0x4c')]['create']({'name':_0x3c7b41[_0x02a7('0x31')],'resourceId':_0x3c7b41['id'],'type':_0x41ab68[_0x02a7('0x31')],'sectionId':_0x41ab68['id']},{})[_0x02a7('0x22')](function(){return _0x1a49c5;});}else{return _0x1a49c5;}})[_0x02a7('0x46')](function(_0xd2b47b){logger[_0x02a7('0x27')](_0x02a7('0x55'),_0xd2b47b);throw _0xd2b47b;});}return _0x1a49c5;});}})['then'](respondWithResult(_0x16550a,0xc9))[_0x02a7('0x46')](handleError(_0x16550a,null));};exports[_0x02a7('0x21')]=function(_0x52cb46,_0x3c7710){if(_0x52cb46['body']['id']){delete _0x52cb46[_0x02a7('0x48')]['id'];}return db[_0x02a7('0x2b')][_0x02a7('0x45')]({'where':{'id':_0x52cb46['params']['id']}})[_0x02a7('0x22')](handleEntityNotFound(_0x3c7710,null))['then'](saveUpdates(_0x52cb46[_0x02a7('0x48')],null))[_0x02a7('0x22')](respondWithResult(_0x3c7710,null))[_0x02a7('0x46')](handleError(_0x3c7710,null));};exports['destroy']=function(_0x5336e6,_0x4c011e){return db[_0x02a7('0x2b')][_0x02a7('0x45')]({'where':{'id':_0x5336e6[_0x02a7('0x4e')]['id']}})[_0x02a7('0x22')](handleEntityNotFound(_0x4c011e,null))[_0x02a7('0x22')](removeEntity(_0x4c011e,null))[_0x02a7('0x46')](handleError(_0x4c011e,null));};exports[_0x02a7('0x56')]=function(_0x47568a,_0x85d4c5,_0x4734eb){var _0x47fc18={'raw':!![],'where':{}};var _0x6e6b73={};var _0x2b81d7={'count':0x0,'rows':[]};return db[_0x02a7('0x2b')][_0x02a7('0x57')]({'where':{'id':_0x47568a[_0x02a7('0x4e')]['id']}})['then'](handleEntityNotFound(_0x85d4c5,null))['then'](function(_0xf9fae9){if(_0xf9fae9){_0x6e6b73[_0x02a7('0x30')]=_[_0x02a7('0x33')](db[_0x02a7('0x58')][_0x02a7('0x2c')]);_0x6e6b73[_0x02a7('0x32')]=_[_0x02a7('0x33')](_0x47568a[_0x02a7('0x32')]);_0x6e6b73[_0x02a7('0x34')]=_['intersection'](_0x6e6b73['model'],_0x6e6b73[_0x02a7('0x32')]);_0x47fc18[_0x02a7('0x36')]=_[_0x02a7('0x35')](_0x6e6b73[_0x02a7('0x30')],qs[_0x02a7('0x37')](_0x47568a[_0x02a7('0x32')][_0x02a7('0x37')]));_0x47fc18[_0x02a7('0x36')]=_0x47fc18['attributes'][_0x02a7('0x38')]?_0x47fc18['attributes']:_0x6e6b73[_0x02a7('0x30')];if(!_0x47568a[_0x02a7('0x32')][_0x02a7('0x59')](_0x02a7('0x5a'))){_0x47fc18[_0x02a7('0x1b')]=qs[_0x02a7('0x1b')](_0x47568a[_0x02a7('0x32')][_0x02a7('0x1b')]);_0x47fc18[_0x02a7('0x39')]=qs[_0x02a7('0x39')](_0x47568a[_0x02a7('0x32')][_0x02a7('0x39')]);}_0x47fc18['order']=qs[_0x02a7('0x3b')](_0x47568a['query'][_0x02a7('0x3b')]);_0x47fc18[_0x02a7('0x3c')]=qs[_0x02a7('0x34')](_['pick'](_0x47568a[_0x02a7('0x32')],_0x6e6b73[_0x02a7('0x34')]));_0x47fc18[_0x02a7('0x3c')][_0x02a7('0x5b')]=_0xf9fae9['id'];if(_0x47568a[_0x02a7('0x32')][_0x02a7('0x3e')]){_0x47fc18[_0x02a7('0x3c')]=_[_0x02a7('0x3f')](_0x47fc18[_0x02a7('0x3c')],{'$or':_[_0x02a7('0x2a')](_0x47fc18[_0x02a7('0x36')],function(_0x2b5b06){var _0x1bea7a={};_0x1bea7a[_0x2b5b06]={'$like':'%'+_0x47568a[_0x02a7('0x32')][_0x02a7('0x3e')]+'%'};return _0x1bea7a;})});}_0x47fc18=_[_0x02a7('0x3f')]({},_0x47fc18,_0x47568a['options']);return db[_0x02a7('0x58')]['count']({'where':_0x47fc18[_0x02a7('0x3c')]})[_0x02a7('0x22')](function(_0x2da0c1){_0x2b81d7[_0x02a7('0x1c')]=_0x2da0c1;if(_0x47568a['query']['includeAll']){_0x47fc18[_0x02a7('0x41')]=[{'all':!![]}];}return db['CmHopper'][_0x02a7('0x42')](_0x47fc18);})[_0x02a7('0x22')](function(_0x480991){_0x2b81d7['rows']=_0x480991;return _0x2b81d7;});}})[_0x02a7('0x22')](respondWithFilteredResult(_0x85d4c5,_0x47fc18))[_0x02a7('0x46')](handleError(_0x85d4c5,null));};exports[_0x02a7('0x5c')]=function(_0x4fda2c,_0x29162a,_0x50217b){var _0x5416b4={'raw':!![],'where':{}};var _0x5dd974={};var _0xde948={'count':0x0,'rows':[]};return db['Campaign'][_0x02a7('0x57')]({'where':{'id':_0x4fda2c[_0x02a7('0x4e')]['id']}})[_0x02a7('0x22')](handleEntityNotFound(_0x29162a,null))['then'](function(_0x5bdde0){if(_0x5bdde0){_0x5dd974[_0x02a7('0x30')]=_[_0x02a7('0x33')](db[_0x02a7('0x5d')][_0x02a7('0x2c')]);_0x5dd974['query']=_[_0x02a7('0x33')](_0x4fda2c[_0x02a7('0x32')]);_0x5dd974[_0x02a7('0x34')]=_['intersection'](_0x5dd974['model'],_0x5dd974['query']);_0x5416b4[_0x02a7('0x36')]=_[_0x02a7('0x35')](_0x5dd974[_0x02a7('0x30')],qs[_0x02a7('0x37')](_0x4fda2c[_0x02a7('0x32')][_0x02a7('0x37')]));_0x5416b4['attributes']=_0x5416b4[_0x02a7('0x36')][_0x02a7('0x38')]?_0x5416b4[_0x02a7('0x36')]:_0x5dd974[_0x02a7('0x30')];if(!_0x4fda2c[_0x02a7('0x32')]['hasOwnProperty'](_0x02a7('0x5a'))){_0x5416b4[_0x02a7('0x1b')]=qs[_0x02a7('0x1b')](_0x4fda2c[_0x02a7('0x32')]['limit']);_0x5416b4[_0x02a7('0x39')]=qs[_0x02a7('0x39')](_0x4fda2c[_0x02a7('0x32')][_0x02a7('0x39')]);}_0x5416b4[_0x02a7('0x3a')]=qs['sort'](_0x4fda2c[_0x02a7('0x32')][_0x02a7('0x3b')]);_0x5416b4[_0x02a7('0x3c')]=qs['filters'](_[_0x02a7('0x3d')](_0x4fda2c[_0x02a7('0x32')],_0x5dd974['filters']));_0x5416b4[_0x02a7('0x3c')][_0x02a7('0x5b')]=_0x5bdde0['id'];if(_0x4fda2c['query']['filter']){_0x5416b4[_0x02a7('0x3c')]=_['merge'](_0x5416b4[_0x02a7('0x3c')],{'$or':_[_0x02a7('0x2a')](_0x5416b4[_0x02a7('0x36')],function(_0x5e3250){var _0xabfac3={};_0xabfac3[_0x5e3250]={'$like':'%'+_0x4fda2c[_0x02a7('0x32')][_0x02a7('0x3e')]+'%'};return _0xabfac3;})});}_0x5416b4=_['merge']({},_0x5416b4,_0x4fda2c['options']);return db['CmHopperHistory']['count']({'where':_0x5416b4[_0x02a7('0x3c')]})[_0x02a7('0x22')](function(_0x5f3340){_0xde948[_0x02a7('0x1c')]=_0x5f3340;if(_0x4fda2c[_0x02a7('0x32')][_0x02a7('0x44')]){_0x5416b4[_0x02a7('0x41')]=[{'all':!![]}];}return db[_0x02a7('0x5d')]['findAll'](_0x5416b4);})[_0x02a7('0x22')](function(_0x1ea3ae){_0xde948[_0x02a7('0x5e')]=_0x1ea3ae;return _0xde948;});}})['then'](respondWithFilteredResult(_0x29162a,_0x5416b4))[_0x02a7('0x46')](handleError(_0x29162a,null));};exports[_0x02a7('0x5f')]=function(_0x232638,_0x24db53,_0x397afa){var _0x1ffae6={'raw':!![],'where':{}};var _0x3bd4a0={};var _0x9ac79a={'count':0x0,'rows':[]};return db['Campaign'][_0x02a7('0x57')]({'where':{'id':_0x232638[_0x02a7('0x4e')]['id']}})[_0x02a7('0x22')](handleEntityNotFound(_0x24db53,null))[_0x02a7('0x22')](function(_0x463e90){if(_0x463e90){_0x3bd4a0['model']=_[_0x02a7('0x33')](db[_0x02a7('0x60')][_0x02a7('0x2c')]);_0x3bd4a0[_0x02a7('0x32')]=_['keys'](_0x232638[_0x02a7('0x32')]);_0x3bd4a0['filters']=_[_0x02a7('0x35')](_0x3bd4a0[_0x02a7('0x30')],_0x3bd4a0[_0x02a7('0x32')]);_0x1ffae6[_0x02a7('0x36')]=_[_0x02a7('0x35')](_0x3bd4a0[_0x02a7('0x30')],qs[_0x02a7('0x37')](_0x232638['query'][_0x02a7('0x37')]));_0x1ffae6[_0x02a7('0x36')]=_0x1ffae6[_0x02a7('0x36')]['length']?_0x1ffae6[_0x02a7('0x36')]:_0x3bd4a0[_0x02a7('0x30')];if(!_0x232638[_0x02a7('0x32')][_0x02a7('0x59')](_0x02a7('0x5a'))){_0x1ffae6[_0x02a7('0x1b')]=qs['limit'](_0x232638[_0x02a7('0x32')][_0x02a7('0x1b')]);_0x1ffae6[_0x02a7('0x39')]=qs[_0x02a7('0x39')](_0x232638[_0x02a7('0x32')][_0x02a7('0x39')]);}_0x1ffae6[_0x02a7('0x3a')]=qs[_0x02a7('0x3b')](_0x232638['query'][_0x02a7('0x3b')]);_0x1ffae6[_0x02a7('0x3c')]=qs['filters'](_['pick'](_0x232638['query'],_0x3bd4a0[_0x02a7('0x34')]));_0x1ffae6[_0x02a7('0x3c')][_0x02a7('0x5b')]=_0x463e90['id'];if(_0x232638[_0x02a7('0x32')][_0x02a7('0x3e')]){_0x1ffae6[_0x02a7('0x3c')]=_[_0x02a7('0x3f')](_0x1ffae6[_0x02a7('0x3c')],{'$or':_[_0x02a7('0x2a')](_0x1ffae6[_0x02a7('0x36')],function(_0x4b4a13){var _0x1fcf15={};_0x1fcf15[_0x4b4a13]={'$like':'%'+_0x232638[_0x02a7('0x32')]['filter']+'%'};return _0x1fcf15;})});}_0x1ffae6=_[_0x02a7('0x3f')]({},_0x1ffae6,_0x232638[_0x02a7('0x40')]);return db[_0x02a7('0x60')][_0x02a7('0x1c')]({'where':_0x1ffae6['where']})['then'](function(_0xdba3c4){_0x9ac79a['count']=_0xdba3c4;if(_0x232638[_0x02a7('0x32')]['includeAll']){_0x1ffae6[_0x02a7('0x41')]=[{'all':!![]}];}return db[_0x02a7('0x60')][_0x02a7('0x42')](_0x1ffae6);})[_0x02a7('0x22')](function(_0x12e8a8){_0x9ac79a[_0x02a7('0x5e')]=_0x12e8a8;return _0x9ac79a;});}})[_0x02a7('0x22')](respondWithFilteredResult(_0x24db53,_0x1ffae6))[_0x02a7('0x46')](handleError(_0x24db53,null));};exports[_0x02a7('0x61')]=function(_0x5d5138,_0x148235,_0x1fa36f){var _0x577678={'raw':!![],'where':{}};var _0x15b02b={};var _0xd5bc41={'count':0x0,'rows':[]};return db[_0x02a7('0x2b')][_0x02a7('0x57')]({'where':{'id':_0x5d5138[_0x02a7('0x4e')]['id']}})[_0x02a7('0x22')](handleEntityNotFound(_0x148235,null))[_0x02a7('0x22')](function(_0x55f621){if(_0x55f621){_0x15b02b[_0x02a7('0x30')]=_[_0x02a7('0x33')](db[_0x02a7('0x62')]['rawAttributes']);_0x15b02b[_0x02a7('0x32')]=_['keys'](_0x5d5138[_0x02a7('0x32')]);_0x15b02b[_0x02a7('0x34')]=_[_0x02a7('0x35')](_0x15b02b[_0x02a7('0x30')],_0x15b02b['query']);_0x577678[_0x02a7('0x36')]=_[_0x02a7('0x35')](_0x15b02b['model'],qs['fields'](_0x5d5138[_0x02a7('0x32')][_0x02a7('0x37')]));_0x577678[_0x02a7('0x36')]=_0x577678['attributes'][_0x02a7('0x38')]?_0x577678['attributes']:_0x15b02b['model'];if(!_0x5d5138['query']['hasOwnProperty'](_0x02a7('0x5a'))){_0x577678['limit']=qs[_0x02a7('0x1b')](_0x5d5138[_0x02a7('0x32')][_0x02a7('0x1b')]);_0x577678[_0x02a7('0x39')]=qs['offset'](_0x5d5138['query']['offset']);}_0x577678[_0x02a7('0x3a')]=qs[_0x02a7('0x3b')](_0x5d5138[_0x02a7('0x32')][_0x02a7('0x3b')]);_0x577678[_0x02a7('0x3c')]=qs['filters'](_[_0x02a7('0x3d')](_0x5d5138[_0x02a7('0x32')],_0x15b02b[_0x02a7('0x34')]));_0x577678['where']['CampaignId']=_0x55f621['id'];if(_0x5d5138['query'][_0x02a7('0x3e')]){_0x577678[_0x02a7('0x3c')]=_[_0x02a7('0x3f')](_0x577678['where'],{'$or':_[_0x02a7('0x2a')](_0x577678[_0x02a7('0x36')],function(_0x323899){var _0x184d77={};_0x184d77[_0x323899]={'$like':'%'+_0x5d5138['query'][_0x02a7('0x3e')]+'%'};return _0x184d77;})});}_0x577678=_[_0x02a7('0x3f')]({},_0x577678,_0x5d5138['options']);return db[_0x02a7('0x62')][_0x02a7('0x1c')]({'where':_0x577678[_0x02a7('0x3c')]})[_0x02a7('0x22')](function(_0x52f064){_0xd5bc41['count']=_0x52f064;if(_0x5d5138[_0x02a7('0x32')][_0x02a7('0x44')]){_0x577678[_0x02a7('0x41')]=[{'all':!![]}];}return db[_0x02a7('0x62')][_0x02a7('0x42')](_0x577678);})[_0x02a7('0x22')](function(_0x3c0acc){_0xd5bc41[_0x02a7('0x5e')]=_0x3c0acc;return _0xd5bc41;});}})['then'](respondWithFilteredResult(_0x148235,_0x577678))[_0x02a7('0x46')](handleError(_0x148235,null));};exports[_0x02a7('0x63')]=function(_0x457a15,_0x325c86,_0x42c1a7){var _0x3f0ee3={};var _0x22433a={};var _0x115d18;var _0x40c92f;return db['Campaign'][_0x02a7('0x57')]({'where':{'id':_0x457a15[_0x02a7('0x4e')]['id']}})[_0x02a7('0x22')](handleEntityNotFound(_0x325c86,null))[_0x02a7('0x22')](function(_0x1114c0){if(_0x1114c0){_0x115d18=_0x1114c0;_0x22433a[_0x02a7('0x30')]=_[_0x02a7('0x33')](db[_0x02a7('0x64')][_0x02a7('0x2c')]);_0x22433a['query']=_[_0x02a7('0x33')](_0x457a15[_0x02a7('0x32')]);_0x22433a[_0x02a7('0x34')]=_['intersection'](_0x22433a[_0x02a7('0x30')],_0x22433a[_0x02a7('0x32')]);_0x3f0ee3[_0x02a7('0x36')]=_[_0x02a7('0x35')](_0x22433a[_0x02a7('0x30')],qs[_0x02a7('0x37')](_0x457a15[_0x02a7('0x32')]['fields']));_0x3f0ee3[_0x02a7('0x36')]=_0x3f0ee3['attributes']['length']?_0x3f0ee3['attributes']:_0x22433a[_0x02a7('0x30')];_0x3f0ee3[_0x02a7('0x3a')]=qs[_0x02a7('0x3b')](_0x457a15['query'][_0x02a7('0x3b')]);_0x3f0ee3['where']=qs[_0x02a7('0x34')](_[_0x02a7('0x3d')](_0x457a15[_0x02a7('0x32')],_0x22433a[_0x02a7('0x34')]));if(_0x457a15[_0x02a7('0x32')]['filter']){_0x3f0ee3[_0x02a7('0x3c')]=_[_0x02a7('0x3f')](_0x3f0ee3[_0x02a7('0x3c')],{'$or':_[_0x02a7('0x2a')](_0x3f0ee3[_0x02a7('0x36')],function(_0x2a8641){var _0x12b2ac={};_0x12b2ac[_0x2a8641]={'$like':'%'+_0x457a15[_0x02a7('0x32')]['filter']+'%'};return _0x12b2ac;})});}_0x3f0ee3=_[_0x02a7('0x3f')]({},_0x3f0ee3,_0x457a15[_0x02a7('0x40')]);return _0x115d18[_0x02a7('0x63')](_0x3f0ee3);}})[_0x02a7('0x22')](function(_0x8f2079){if(_0x8f2079){_0x40c92f=_0x8f2079[_0x02a7('0x38')];if(!_0x457a15[_0x02a7('0x32')]['hasOwnProperty']('nolimit')){_0x3f0ee3[_0x02a7('0x1b')]=qs['limit'](_0x457a15['query'][_0x02a7('0x1b')]);_0x3f0ee3['offset']=qs['offset'](_0x457a15[_0x02a7('0x32')][_0x02a7('0x39')]);}return _0x115d18[_0x02a7('0x63')](_0x3f0ee3);}})[_0x02a7('0x22')](function(_0x41e32d){if(_0x41e32d){return _0x41e32d?{'count':_0x40c92f,'rows':_0x41e32d}:null;}})['then'](respondWithResult(_0x325c86,null))[_0x02a7('0x46')](handleError(_0x325c86,null));};exports[_0x02a7('0x65')]=function(_0x15cb37,_0x192022,_0x44fb22){var _0x4ba8b4,_0x1bf0b6;return db['Campaign'][_0x02a7('0x45')]({'where':{'id':_0x15cb37['params']['id']}})['then'](handleEntityNotFound(_0x192022,null))[_0x02a7('0x22')](function(_0x4349ad){if(_0x4349ad){_0x1bf0b6=_0x4349ad;return _0x4349ad[_0x02a7('0x65')](_0x15cb37['body']['ids'],_[_0x02a7('0x51')](_0x15cb37[_0x02a7('0x48')],[_0x02a7('0x66'),'id'])||{});}return null;})['spread'](function(_0x1a0802){var _0x4ee877;_0x4ba8b4=_0x1a0802||[];var _0x1b08ea=[];if(_0x1a0802){for(var _0x25fb93=0x0;_0x25fb93<_0x1a0802[_0x02a7('0x38')];_0x25fb93+=0x1){var _0x5374c8=_0x1a0802[_0x25fb93][_0x02a7('0x24')]({'plain':!![]});_0x1bf0b6[_0x02a7('0x67')]=_0x15cb37[_0x02a7('0x48')][_0x02a7('0x67')]?_0x15cb37[_0x02a7('0x48')][_0x02a7('0x67')]:_0x1bf0b6[_0x02a7('0x67')];switch(_0x1bf0b6[_0x02a7('0x67')]){case'always':_0x4ee877=squel[_0x02a7('0x68')]()['into'](_0x02a7('0x69'))[_0x02a7('0x6a')](['phone',_0x02a7('0x6b'),_0x02a7('0x6c'),_0x02a7('0x6d'),_0x02a7('0x5b'),_0x02a7('0x4f'),_0x02a7('0x50')],squel[_0x02a7('0x6e')]()[_0x02a7('0x6f')]('phone',_0x02a7('0x70'))[_0x02a7('0x6f')](_0x02a7('0x71'),_0x02a7('0x6b'))[_0x02a7('0x6f')]('id','ContactId')[_0x02a7('0x6f')](_0x5374c8[_0x02a7('0x72')][_0x02a7('0x73')](),_0x02a7('0x6d'))[_0x02a7('0x6f')](_0x15cb37['params']['id'][_0x02a7('0x73')](),'CampaignId')[_0x02a7('0x6f')](_0x02a7('0x71'),_0x02a7('0x4f'))[_0x02a7('0x6f')]('NOW()',_0x02a7('0x50'))[_0x02a7('0x74')](_0x02a7('0x75'))['where'](_0x02a7('0x76'))['where'](_0x02a7('0x77'),_0x5374c8[_0x02a7('0x72')]['toString']())[_0x02a7('0x3c')]('phone\x20IS\x20NOT\x20NULL')[_0x02a7('0x3c')](_0x02a7('0x78'),squel[_0x02a7('0x6e')]()['field'](_0x02a7('0x79'))[_0x02a7('0x74')](_0x02a7('0x7a'))['where'](_0x02a7('0x7b'),_0x15cb37[_0x02a7('0x4e')]['id'][_0x02a7('0x73')]()))['where'](_0x02a7('0x78'),squel[_0x02a7('0x6e')]()[_0x02a7('0x6f')]('COALESCE(phone,\x27\x27)')[_0x02a7('0x74')]('cm_hopper')[_0x02a7('0x3c')](_0x02a7('0x7b'),_0x15cb37['params']['id'][_0x02a7('0x73')]())))[_0x02a7('0x73')]();break;case _0x02a7('0x7c'):_0x4ee877=squel['insert']()[_0x02a7('0x7d')](_0x02a7('0x69'))[_0x02a7('0x6a')]([_0x02a7('0x70'),_0x02a7('0x6b'),_0x02a7('0x6c'),_0x02a7('0x6d'),'CampaignId',_0x02a7('0x4f'),_0x02a7('0x50')],squel[_0x02a7('0x6e')]()[_0x02a7('0x6f')](_0x02a7('0x70'),'phone')[_0x02a7('0x6f')](_0x02a7('0x71'),_0x02a7('0x6b'))[_0x02a7('0x6f')]('id',_0x02a7('0x6c'))[_0x02a7('0x6f')](_0x5374c8[_0x02a7('0x72')][_0x02a7('0x73')](),_0x02a7('0x6d'))[_0x02a7('0x6f')](_0x15cb37[_0x02a7('0x4e')]['id'][_0x02a7('0x73')](),_0x02a7('0x5b'))[_0x02a7('0x6f')]('NOW()',_0x02a7('0x4f'))[_0x02a7('0x6f')](_0x02a7('0x71'),_0x02a7('0x50'))[_0x02a7('0x74')](_0x02a7('0x75'))[_0x02a7('0x3c')](_0x02a7('0x76'))[_0x02a7('0x3c')](_0x02a7('0x77'),_0x5374c8['CmListId'][_0x02a7('0x73')]())[_0x02a7('0x3c')](_0x02a7('0x7e'))['where'](_0x02a7('0x78'),squel[_0x02a7('0x6e')]()[_0x02a7('0x6f')](_0x02a7('0x7f'))[_0x02a7('0x74')]('cm_hopper')['where'](_0x02a7('0x7b'),_0x15cb37[_0x02a7('0x4e')]['id']['toString']())))[_0x02a7('0x73')]();break;default:_0x4ee877=squel[_0x02a7('0x68')]()['into']('cm_hopper')[_0x02a7('0x6a')]([_0x02a7('0x70'),_0x02a7('0x6b'),_0x02a7('0x6c'),'ListId',_0x02a7('0x5b'),_0x02a7('0x4f'),_0x02a7('0x50')],squel[_0x02a7('0x6e')]()[_0x02a7('0x6f')](_0x02a7('0x70'),_0x02a7('0x70'))[_0x02a7('0x6f')](_0x02a7('0x71'),_0x02a7('0x6b'))[_0x02a7('0x6f')]('id',_0x02a7('0x6c'))[_0x02a7('0x6f')](_0x5374c8[_0x02a7('0x72')][_0x02a7('0x73')](),_0x02a7('0x6d'))['field'](_0x15cb37[_0x02a7('0x4e')]['id']['toString'](),_0x02a7('0x5b'))[_0x02a7('0x6f')]('NOW()',_0x02a7('0x4f'))[_0x02a7('0x6f')](_0x02a7('0x71'),_0x02a7('0x50'))['from'](_0x02a7('0x75'))['where'](_0x02a7('0x76'))['where']('ListId\x20=\x20?',_0x5374c8[_0x02a7('0x72')][_0x02a7('0x73')]())[_0x02a7('0x3c')](_0x02a7('0x7e')))['toString']();}_0x1b08ea[_0x02a7('0x80')](db['sequelize'][_0x02a7('0x32')](_0x4ee877));}return BPromise['all'](_0x1b08ea);}})[_0x02a7('0x22')](function(){return _0x4ba8b4;})[_0x02a7('0x22')](respondWithResult(_0x192022,null))[_0x02a7('0x46')](handleError(_0x192022,null));};exports[_0x02a7('0x81')]=function(_0x5c947b,_0x19d352,_0x3f6194){return db[_0x02a7('0x2b')][_0x02a7('0x45')]({'where':{'id':_0x5c947b[_0x02a7('0x4e')]['id']}})['then'](handleEntityNotFound(_0x19d352,null))[_0x02a7('0x22')](function(_0x5550b8){if(_0x5550b8){return _0x5550b8[_0x02a7('0x81')](_0x5c947b['query'][_0x02a7('0x66')]);}})[_0x02a7('0x22')](function(_0x26f39f){if(_0x26f39f){return db['CmHopper'][_0x02a7('0x23')]({'where':{'ListId':_0x5c947b[_0x02a7('0x32')][_0x02a7('0x66')],'CampaignId':_0x5c947b['params']['id']}})['then'](function(){return _0x26f39f;});}})[_0x02a7('0x22')](respondWithStatusCode(_0x19d352,null))[_0x02a7('0x46')](handleError(_0x19d352,null));};exports[_0x02a7('0x82')]=function(_0x138697,_0x3373fe,_0x1f389f){var _0x113511={};var _0x5a15d4={};var _0x58ac0c;var _0x14b8d9;return db[_0x02a7('0x2b')][_0x02a7('0x57')]({'where':{'id':_0x138697['params']['id']}})[_0x02a7('0x22')](handleEntityNotFound(_0x3373fe,null))[_0x02a7('0x22')](function(_0xea8264){if(_0xea8264){_0x58ac0c=_0xea8264;_0x5a15d4[_0x02a7('0x30')]=_[_0x02a7('0x33')](db['CmList'][_0x02a7('0x2c')]);_0x5a15d4['query']=_['keys'](_0x138697['query']);_0x5a15d4['filters']=_[_0x02a7('0x35')](_0x5a15d4[_0x02a7('0x30')],_0x5a15d4[_0x02a7('0x32')]);_0x113511['attributes']=_[_0x02a7('0x35')](_0x5a15d4[_0x02a7('0x30')],qs[_0x02a7('0x37')](_0x138697[_0x02a7('0x32')][_0x02a7('0x37')]));_0x113511[_0x02a7('0x36')]=_0x113511[_0x02a7('0x36')][_0x02a7('0x38')]?_0x113511['attributes']:_0x5a15d4[_0x02a7('0x30')];_0x113511[_0x02a7('0x3a')]=qs['sort'](_0x138697[_0x02a7('0x32')][_0x02a7('0x3b')]);_0x113511[_0x02a7('0x3c')]=qs[_0x02a7('0x34')](_['pick'](_0x138697[_0x02a7('0x32')],_0x5a15d4[_0x02a7('0x34')]));if(_0x138697[_0x02a7('0x32')][_0x02a7('0x3e')]){_0x113511[_0x02a7('0x3c')]=_['merge'](_0x113511[_0x02a7('0x3c')],{'$or':_['map'](_0x113511[_0x02a7('0x36')],function(_0x2a4f96){var _0x44d443={};_0x44d443[_0x2a4f96]={'$like':'%'+_0x138697[_0x02a7('0x32')][_0x02a7('0x3e')]+'%'};return _0x44d443;})});}_0x113511=_[_0x02a7('0x3f')]({},_0x113511,_0x138697[_0x02a7('0x40')]);return _0x58ac0c['getBlackLists'](_0x113511);}})[_0x02a7('0x22')](function(_0x2b246e){if(_0x2b246e){_0x14b8d9=_0x2b246e[_0x02a7('0x38')];if(!_0x138697[_0x02a7('0x32')][_0x02a7('0x59')](_0x02a7('0x5a'))){_0x113511[_0x02a7('0x1b')]=qs[_0x02a7('0x1b')](_0x138697[_0x02a7('0x32')][_0x02a7('0x1b')]);_0x113511[_0x02a7('0x39')]=qs['offset'](_0x138697[_0x02a7('0x32')][_0x02a7('0x39')]);}return _0x58ac0c[_0x02a7('0x82')](_0x113511);}})['then'](function(_0x2cc7e2){if(_0x2cc7e2){return _0x2cc7e2?{'count':_0x14b8d9,'rows':_0x2cc7e2}:null;}})[_0x02a7('0x22')](respondWithResult(_0x3373fe,null))['catch'](handleError(_0x3373fe,null));};exports[_0x02a7('0x83')]=function(_0x50a887,_0xb335d5,_0x2ed7c5){var _0x332dd0,_0x347a34;return db['Campaign'][_0x02a7('0x45')]({'where':{'id':_0x50a887[_0x02a7('0x4e')]['id']}})['then'](handleEntityNotFound(_0xb335d5,null))[_0x02a7('0x22')](function(_0x3c104c){if(_0x3c104c){_0x347a34=_0x3c104c;return _0x3c104c[_0x02a7('0x83')](_0x50a887[_0x02a7('0x48')]['ids'],_['omit'](_0x50a887[_0x02a7('0x48')],['ids','id'])||{});}return null;})['spread'](function(_0x411567){var _0x5cf0ab;_0x332dd0=_0x411567||[];var _0x283ecc=[];if(_0x411567){for(var _0x4a8b54=0x0;_0x4a8b54<_0x411567[_0x02a7('0x38')];_0x4a8b54+=0x1){var _0x34900a=_0x411567[_0x4a8b54][_0x02a7('0x24')]({'plain':!![]});_0x5cf0ab=squel[_0x02a7('0x68')]()[_0x02a7('0x7d')](_0x02a7('0x84'))[_0x02a7('0x6a')]([_0x02a7('0x70'),_0x02a7('0x6c'),'ListId',_0x02a7('0x5b'),_0x02a7('0x4f'),_0x02a7('0x50')],squel[_0x02a7('0x6e')]()[_0x02a7('0x6f')]('phone',_0x02a7('0x70'))['field']('id',_0x02a7('0x6c'))[_0x02a7('0x6f')](_0x34900a[_0x02a7('0x72')][_0x02a7('0x73')](),_0x02a7('0x6d'))[_0x02a7('0x6f')](_0x50a887[_0x02a7('0x4e')]['id'][_0x02a7('0x73')](),_0x02a7('0x5b'))['field'](_0x02a7('0x71'),'createdAt')[_0x02a7('0x6f')]('NOW()',_0x02a7('0x50'))['from'](_0x02a7('0x75'))['where']('deletedAt\x20IS\x20NULL')[_0x02a7('0x3c')](_0x02a7('0x77'),_0x34900a[_0x02a7('0x72')][_0x02a7('0x73')]())['where'](_0x02a7('0x7e')))['toString']();_0x283ecc[_0x02a7('0x80')](db[_0x02a7('0x85')]['query'](_0x5cf0ab));}return BPromise[_0x02a7('0x86')](_0x283ecc);}})['then'](function(){return _0x332dd0;})['then'](respondWithResult(_0xb335d5,null))[_0x02a7('0x46')](handleError(_0xb335d5,null));};exports[_0x02a7('0x87')]=function(_0x617f47,_0x5513fa,_0x42ef0e){return db[_0x02a7('0x2b')][_0x02a7('0x45')]({'where':{'id':_0x617f47['params']['id']}})[_0x02a7('0x22')](handleEntityNotFound(_0x5513fa,null))[_0x02a7('0x22')](function(_0x10f1d5){if(_0x10f1d5){return _0x10f1d5[_0x02a7('0x87')](_0x617f47['query'][_0x02a7('0x66')]);}})[_0x02a7('0x22')](function(_0x421648){if(_0x421648){return db[_0x02a7('0x62')][_0x02a7('0x23')]({'where':{'ListId':_0x617f47['query'][_0x02a7('0x66')],'CampaignId':_0x617f47[_0x02a7('0x4e')]['id']}})[_0x02a7('0x22')](function(){return _0x421648;});}})[_0x02a7('0x22')](respondWithStatusCode(_0x5513fa,null))[_0x02a7('0x46')](handleError(_0x5513fa,null));};
\ No newline at end of file
index ddac6be..c61d8d4 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(_0x48ebe8,_0x300832){var _0x5c65fb=function(_0x55a95b){while(--_0x55a95b){_0x48ebe8['push'](_0x48ebe8['shift']());}};_0x5c65fb(++_0x300832);}(_0x7a54,0x106));var _0x47a5=function(_0x5f2f25,_0x303080){_0x5f2f25=_0x5f2f25-0x0;var _0x435c1d=_0x7a54[_0x5f2f25];return _0x435c1d;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x56857c,_0x4868cb){var _0x4027e7=function(_0x1b452f){while(--_0x1b452f){_0x56857c['push'](_0x56857c['shift']());}};_0x4027e7(++_0x4868cb);}(_0x7a54,0x106));var _0x47a5=function(_0x4cc501,_0x46a871){_0x4cc501=_0x4cc501-0x0;var _0x36b11b=_0x7a54[_0x4cc501];return _0x36b11b;};'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 36ff300..9312872 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89e8=['GetCampaign','Campaign','findAll','options','raw','where','attributes','limit','include','map','model','then','stringify','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','info','Campaign,\x20%s,\x20%s','request\x20sent','Campaign,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x131019,_0x2b969d){var _0x470cd4=function(_0xc064de){while(--_0xc064de){_0x131019['push'](_0x131019['shift']());}};_0x470cd4(++_0x2b969d);}(_0x89e8,0x74));var _0x889e=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x89e8[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x889e('0x0'));var util=require(_0x889e('0x1'));var moment=require(_0x889e('0x2'));var BPromise=require(_0x889e('0x3'));var rs=require(_0x889e('0x4'));var fs=require('fs');var Redis=require(_0x889e('0x5'));var db=require(_0x889e('0x6'))['db'];var utils=require(_0x889e('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x889e('0x8'));var client=jayson[_0x889e('0x9')][_0x889e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ed85f,_0x38eeae,_0x54f734){return new BPromise(function(_0x2bfae4,_0x42be62){return client[_0x889e('0xb')](_0x5ed85f,_0x54f734)['then'](function(_0x21c1d9){logger[_0x889e('0xc')](_0x889e('0xd'),_0x38eeae,_0x889e('0xe'));logger['debug'](_0x889e('0xf'),_0x38eeae,_0x889e('0xe'),JSON['stringify'](_0x21c1d9));if(_0x21c1d9[_0x889e('0x10')]){if(_0x21c1d9[_0x889e('0x10')][_0x889e('0x11')]===0x1f4){logger[_0x889e('0x10')]('Campaign,\x20%s,\x20%s',_0x38eeae,_0x21c1d9[_0x889e('0x10')][_0x889e('0x12')]);return _0x42be62(_0x21c1d9[_0x889e('0x10')]['message']);}logger[_0x889e('0x10')](_0x889e('0xd'),_0x38eeae,_0x21c1d9[_0x889e('0x10')][_0x889e('0x12')]);return _0x2bfae4(_0x21c1d9[_0x889e('0x10')]['message']);}else{logger['info'](_0x889e('0xd'),_0x38eeae,_0x889e('0xe'));_0x2bfae4(_0x21c1d9[_0x889e('0x13')][_0x889e('0x12')]);}})['catch'](function(_0x22fbf6){logger[_0x889e('0x10')]('Campaign,\x20%s,\x20%s',_0x38eeae,_0x22fbf6);_0x42be62(_0x22fbf6);});});}exports[_0x889e('0x14')]=function(_0x4f9b2c){var _0x75e219=this;return new Promise(function(_0x168fed,_0x232452){return db[_0x889e('0x15')][_0x889e('0x16')]({'raw':_0x4f9b2c['options']?_0x4f9b2c[_0x889e('0x17')][_0x889e('0x18')]===undefined?!![]:![]:!![],'where':_0x4f9b2c['options']?_0x4f9b2c[_0x889e('0x17')][_0x889e('0x19')]||null:null,'attributes':_0x4f9b2c[_0x889e('0x17')]?_0x4f9b2c['options'][_0x889e('0x1a')]||null:null,'limit':_0x4f9b2c[_0x889e('0x17')]?_0x4f9b2c[_0x889e('0x17')][_0x889e('0x1b')]||null:null,'include':_0x4f9b2c['options']?_0x4f9b2c['options'][_0x889e('0x1c')]?_[_0x889e('0x1d')](_0x4f9b2c[_0x889e('0x17')]['include'],function(_0x956dae){return{'model':db[_0x956dae[_0x889e('0x1e')]],'as':_0x956dae['as'],'attributes':_0x956dae[_0x889e('0x1a')],'include':_0x956dae['include']?_[_0x889e('0x1d')](_0x956dae['include'],function(_0x37fb09){return{'model':db[_0x37fb09[_0x889e('0x1e')]],'as':_0x37fb09['as'],'attributes':_0x37fb09[_0x889e('0x1a')],'include':_0x37fb09['include']?_[_0x889e('0x1d')](_0x37fb09['include'],function(_0x34db77){return{'model':db[_0x34db77[_0x889e('0x1e')]],'as':_0x34db77['as'],'attributes':_0x34db77[_0x889e('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x889e('0x1f')](function(_0x5e0267){logger['info'](_0x889e('0x14'),_0x4f9b2c);logger['debug'](_0x889e('0x14'),_0x4f9b2c,JSON[_0x889e('0x20')](_0x5e0267));_0x168fed(_0x5e0267);})[_0x889e('0x21')](function(_0x9e8192){logger[_0x889e('0x10')]('GetCampaign',_0x9e8192['message'],_0x4f9b2c);_0x232452(_0x75e219['error'](0x1f4,_0x9e8192['message']));});});};
\ No newline at end of file
+var _0x18a5=['../../config/utils','../../config/logger','rpc','../../config/environment','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetCampaign','Campaign','findAll','options','raw','attributes','limit','include','map','model','catch','lodash','util','randomstring','../../mysqldb'];(function(_0x50747e,_0x4fc9ad){var _0x363176=function(_0x2fe703){while(--_0x2fe703){_0x50747e['push'](_0x50747e['shift']());}};_0x363176(++_0x4fc9ad);}(_0x18a5,0x164));var _0x518a=function(_0x54b34c,_0x626cd6){_0x54b34c=_0x54b34c-0x0;var _0x429867=_0x18a5[_0x54b34c];return _0x429867;};'use strict';var _=require(_0x518a('0x0'));var util=require(_0x518a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x518a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x518a('0x3'))['db'];var utils=require(_0x518a('0x4'));var logger=require(_0x518a('0x5'))(_0x518a('0x6'));var config=require(_0x518a('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2ea311,_0x1d4199,_0x19a2df){return new BPromise(function(_0x2a5fa6,_0x8bd966){return client[_0x518a('0x8')](_0x2ea311,_0x19a2df)[_0x518a('0x9')](function(_0xb996c3){logger[_0x518a('0xa')](_0x518a('0xb'),_0x1d4199,_0x518a('0xc'));logger[_0x518a('0xd')](_0x518a('0xe'),_0x1d4199,_0x518a('0xc'),JSON[_0x518a('0xf')](_0xb996c3));if(_0xb996c3['error']){if(_0xb996c3[_0x518a('0x10')]['code']===0x1f4){logger[_0x518a('0x10')]('Campaign,\x20%s,\x20%s',_0x1d4199,_0xb996c3[_0x518a('0x10')][_0x518a('0x11')]);return _0x8bd966(_0xb996c3[_0x518a('0x10')][_0x518a('0x11')]);}logger[_0x518a('0x10')](_0x518a('0xb'),_0x1d4199,_0xb996c3[_0x518a('0x10')]['message']);return _0x2a5fa6(_0xb996c3[_0x518a('0x10')][_0x518a('0x11')]);}else{logger[_0x518a('0xa')]('Campaign,\x20%s,\x20%s',_0x1d4199,_0x518a('0xc'));_0x2a5fa6(_0xb996c3[_0x518a('0x12')]['message']);}})['catch'](function(_0x177882){logger['error'](_0x518a('0xb'),_0x1d4199,_0x177882);_0x8bd966(_0x177882);});});}exports[_0x518a('0x13')]=function(_0x244e66){var _0x336da8=this;return new Promise(function(_0xa5f6ac,_0x26330e){return db[_0x518a('0x14')][_0x518a('0x15')]({'raw':_0x244e66[_0x518a('0x16')]?_0x244e66[_0x518a('0x16')][_0x518a('0x17')]===undefined?!![]:![]:!![],'where':_0x244e66[_0x518a('0x16')]?_0x244e66[_0x518a('0x16')]['where']||null:null,'attributes':_0x244e66[_0x518a('0x16')]?_0x244e66['options'][_0x518a('0x18')]||null:null,'limit':_0x244e66['options']?_0x244e66[_0x518a('0x16')][_0x518a('0x19')]||null:null,'include':_0x244e66[_0x518a('0x16')]?_0x244e66[_0x518a('0x16')][_0x518a('0x1a')]?_[_0x518a('0x1b')](_0x244e66['options']['include'],function(_0x590fc2){return{'model':db[_0x590fc2[_0x518a('0x1c')]],'as':_0x590fc2['as'],'attributes':_0x590fc2['attributes'],'include':_0x590fc2[_0x518a('0x1a')]?_[_0x518a('0x1b')](_0x590fc2[_0x518a('0x1a')],function(_0x941f58){return{'model':db[_0x941f58[_0x518a('0x1c')]],'as':_0x941f58['as'],'attributes':_0x941f58[_0x518a('0x18')],'include':_0x941f58[_0x518a('0x1a')]?_[_0x518a('0x1b')](_0x941f58[_0x518a('0x1a')],function(_0x262260){return{'model':db[_0x262260[_0x518a('0x1c')]],'as':_0x262260['as'],'attributes':_0x262260[_0x518a('0x18')]};}):[]};}):[]};}):[]:[]})[_0x518a('0x9')](function(_0x3eadb2){logger['info']('GetCampaign',_0x244e66);logger['debug'](_0x518a('0x13'),_0x244e66,JSON[_0x518a('0xf')](_0x3eadb2));_0xa5f6ac(_0x3eadb2);})[_0x518a('0x1d')](function(_0x4cf043){logger['error'](_0x518a('0x13'),_0x4cf043['message'],_0x244e66);_0x26330e(_0x336da8['error'](0x1f4,_0x4cf043[_0x518a('0x11')]));});});};
\ No newline at end of file
index a2a5ea6..de94215 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5b5=['/:id/hopper_finals','getHopperFinals','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addLists','addBlackLists','put','update','delete','removeLists','removeBlackLists','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./campaign.controller','get','isAuthenticated','index','/:id','show','/:id/hopper_histories','getHopperHistories'];(function(_0x4636e9,_0x33aefb){var _0x358ef1=function(_0x21479f){while(--_0x21479f){_0x4636e9['push'](_0x4636e9['shift']());}};_0x358ef1(++_0x33aefb);}(_0xc5b5,0x1b2));var _0x5c5b=function(_0x571d85,_0xda439c){_0x571d85=_0x571d85-0x0;var _0x3c2e07=_0xc5b5[_0x571d85];return _0x3c2e07;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5c5b('0x0'));var timeout=require(_0x5c5b('0x1'));var express=require('express');var router=express[_0x5c5b('0x2')]();var fs_extra=require(_0x5c5b('0x3'));var auth=require(_0x5c5b('0x4'));var interaction=require(_0x5c5b('0x5'));var config=require('../../config/environment');var controller=require(_0x5c5b('0x6'));router[_0x5c5b('0x7')]('/',auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x9')]);router[_0x5c5b('0x7')](_0x5c5b('0xa'),auth['isAuthenticated'](),controller[_0x5c5b('0xb')]);router[_0x5c5b('0x7')]('/:id/hoppers',auth[_0x5c5b('0x8')](),controller['getHoppers']);router[_0x5c5b('0x7')](_0x5c5b('0xc'),auth[_0x5c5b('0x8')](),controller[_0x5c5b('0xd')]);router['get'](_0x5c5b('0xe'),auth[_0x5c5b('0x8')](),controller[_0x5c5b('0xf')]);router['get']('/:id/hopper_black',auth['isAuthenticated'](),controller[_0x5c5b('0x10')]);router[_0x5c5b('0x7')](_0x5c5b('0x11'),auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x12')]);router['get'](_0x5c5b('0x13'),auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x14')]);router[_0x5c5b('0x15')]('/',auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x16')]);router[_0x5c5b('0x15')](_0x5c5b('0x17'),auth[_0x5c5b('0x8')](),controller['clone']);router[_0x5c5b('0x15')](_0x5c5b('0x11'),auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x18')]);router[_0x5c5b('0x15')](_0x5c5b('0x13'),auth['isAuthenticated'](),controller[_0x5c5b('0x19')]);router[_0x5c5b('0x1a')](_0x5c5b('0xa'),auth['isAuthenticated'](),controller[_0x5c5b('0x1b')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0x5c5b('0x1c')](_0x5c5b('0x11'),auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x1d')]);router[_0x5c5b('0x1c')]('/:id/blacklists',auth[_0x5c5b('0x8')](),controller[_0x5c5b('0x1e')]);module[_0x5c5b('0x1f')]=router;
\ No newline at end of file
+var _0x02ff=['/:id/hopper_histories','getHopperHistories','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','getBlackLists','create','post','/:id/clone','clone','addLists','/:id/blacklists','addBlackLists','put','/:id','update','delete','removeLists','removeBlackLists','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','show','/:id/hoppers','getHoppers'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x02ff,0x16c));var _0xf02f=function(_0x182751,_0x49f767){_0x182751=_0x182751-0x0;var _0x1e27be=_0x02ff[_0x182751];return _0x1e27be;};'use strict';var multer=require(_0xf02f('0x0'));var util=require(_0xf02f('0x1'));var path=require(_0xf02f('0x2'));var timeout=require(_0xf02f('0x3'));var express=require(_0xf02f('0x4'));var router=express[_0xf02f('0x5')]();var fs_extra=require(_0xf02f('0x6'));var auth=require(_0xf02f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xf02f('0x8'));var controller=require(_0xf02f('0x9'));router[_0xf02f('0xa')]('/',auth[_0xf02f('0xb')](),controller[_0xf02f('0xc')]);router[_0xf02f('0xa')]('/:id',auth[_0xf02f('0xb')](),controller[_0xf02f('0xd')]);router['get'](_0xf02f('0xe'),auth[_0xf02f('0xb')](),controller[_0xf02f('0xf')]);router[_0xf02f('0xa')](_0xf02f('0x10'),auth[_0xf02f('0xb')](),controller[_0xf02f('0x11')]);router['get']('/:id/hopper_finals',auth[_0xf02f('0xb')](),controller[_0xf02f('0x12')]);router[_0xf02f('0xa')](_0xf02f('0x13'),auth['isAuthenticated'](),controller[_0xf02f('0x14')]);router[_0xf02f('0xa')](_0xf02f('0x15'),auth[_0xf02f('0xb')](),controller[_0xf02f('0x16')]);router['get']('/:id/blacklists',auth[_0xf02f('0xb')](),controller[_0xf02f('0x17')]);router['post']('/',auth[_0xf02f('0xb')](),controller[_0xf02f('0x18')]);router[_0xf02f('0x19')](_0xf02f('0x1a'),auth[_0xf02f('0xb')](),controller[_0xf02f('0x1b')]);router[_0xf02f('0x19')](_0xf02f('0x15'),auth[_0xf02f('0xb')](),controller[_0xf02f('0x1c')]);router['post'](_0xf02f('0x1d'),auth[_0xf02f('0xb')](),controller[_0xf02f('0x1e')]);router[_0xf02f('0x1f')](_0xf02f('0x20'),auth[_0xf02f('0xb')](),controller[_0xf02f('0x21')]);router[_0xf02f('0x22')](_0xf02f('0x20'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0xf02f('0x15'),auth[_0xf02f('0xb')](),controller[_0xf02f('0x23')]);router[_0xf02f('0x22')]('/:id/blacklists',auth[_0xf02f('0xb')](),controller[_0xf02f('0x24')]);module[_0xf02f('0x25')]=router;
\ No newline at end of file
index de45b3c..6652b10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eb9=['sequelize','TEXT','STRING','getDataValue','key'];(function(_0x5a0373,_0x2dc45c){var _0x302833=function(_0x8e5e7e){while(--_0x8e5e7e){_0x5a0373['push'](_0x5a0373['shift']());}};_0x302833(++_0x2dc45c);}(_0x7eb9,0xff));var _0x97eb=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7eb9[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x97eb('0x0'));module['exports']={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x97eb('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x97eb('0x2')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x97eb('0x3')](_0x97eb('0x4'));}}};
\ No newline at end of file
+var _0x67a3=['key','sequelize','exports','STRING','TEXT','VIRTUAL','getDataValue'];(function(_0x325673,_0x13c10b){var _0x741c5b=function(_0x33eeb2){while(--_0x33eeb2){_0x325673['push'](_0x325673['shift']());}};_0x741c5b(++_0x13c10b);}(_0x67a3,0xe1));var _0x367a=function(_0x2b164a,_0x3ef2ca){_0x2b164a=_0x2b164a-0x0;var _0x259ef8=_0x67a3[_0x2b164a];return _0x259ef8;};'use strict';var Sequelize=require(_0x367a('0x0'));module[_0x367a('0x1')]={'key':{'type':Sequelize[_0x367a('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0x367a('0x3')],'allowNull':![]},'description':{'type':Sequelize[_0x367a('0x2')]},'name':{'type':Sequelize[_0x367a('0x4')],'get':function(){return this[_0x367a('0x5')](_0x367a('0x6'));}}};
\ No newline at end of file
index 31eedc1..857c535 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3a5=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','json','apply','save','update','then','get','CannedAnswers','UserProfileResource','end','error','name','send','index','CannedAnswer','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','catch','show','params','find','body','destroy','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','The\x20inserted\x20key\x20already\x20exists.','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger'];(function(_0x5d51e9,_0x8d4ad6){var _0x262f1c=function(_0x1ea530){while(--_0x1ea530){_0x5d51e9['push'](_0x5d51e9['shift']());}};_0x262f1c(++_0x8d4ad6);}(_0xe3a5,0x9a));var _0x5e3a=function(_0x49b667,_0x540309){_0x49b667=_0x49b667-0x0;var _0xcbbf84=_0xe3a5[_0x49b667];return _0xcbbf84;};'use strict';var emlformat=require(_0x5e3a('0x0'));var rimraf=require(_0x5e3a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5e3a('0x2'));var rp=require('request-promise');var moment=require(_0x5e3a('0x3'));var BPromise=require(_0x5e3a('0x4'));var Mustache=require(_0x5e3a('0x5'));var util=require(_0x5e3a('0x6'));var path=require(_0x5e3a('0x7'));var sox=require(_0x5e3a('0x8'));var csv=require(_0x5e3a('0x9'));var ejs=require(_0x5e3a('0xa'));var fs=require('fs');var fs_extra=require(_0x5e3a('0xb'));var _=require(_0x5e3a('0xc'));var squel=require('squel');var crypto=require(_0x5e3a('0xd'));var jsforce=require(_0x5e3a('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5e3a('0xf'));var Papa=require(_0x5e3a('0x10'));var Redis=require(_0x5e3a('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5e3a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e3a('0x13'))(_0x5e3a('0x14'));var utils=require(_0x5e3a('0x15'));var config=require(_0x5e3a('0x16'));var licenseUtil=require(_0x5e3a('0x17'));var db=require(_0x5e3a('0x18'))['db'];function respondWithStatusCode(_0x304f3a,_0x5899f3){_0x5899f3=_0x5899f3||0xcc;return function(_0x13209b){if(_0x13209b){return _0x304f3a[_0x5e3a('0x19')](_0x5899f3);}return _0x304f3a[_0x5e3a('0x1a')](_0x5899f3)['end']();};}function respondWithResult(_0x442855,_0x175ddc){_0x175ddc=_0x175ddc||0xc8;return function(_0x4bf2dc){if(_0x4bf2dc){return _0x442855[_0x5e3a('0x1a')](_0x175ddc)['json'](_0x4bf2dc);}};}function respondWithFilteredResult(_0x55abe1,_0x3017c6){return function(_0x4415a8){if(_0x4415a8){var _0x7f4fc4=typeof _0x3017c6[_0x5e3a('0x1b')]===_0x5e3a('0x1c')&&typeof _0x3017c6[_0x5e3a('0x1d')]===_0x5e3a('0x1c');var _0x505e04=_0x4415a8[_0x5e3a('0x1e')];var _0x1d59a2=_0x7f4fc4?0x0:_0x3017c6['offset'];var _0x13825e=_0x7f4fc4?_0x4415a8[_0x5e3a('0x1e')]:_0x3017c6[_0x5e3a('0x1b')]+_0x3017c6['limit'];var _0x2fda1d;if(_0x13825e>=_0x505e04){_0x13825e=_0x505e04;_0x2fda1d=0xc8;}else{_0x2fda1d=0xce;}_0x55abe1[_0x5e3a('0x1a')](_0x2fda1d);return _0x55abe1[_0x5e3a('0x1f')]('Content-Range',_0x1d59a2+'-'+_0x13825e+'/'+_0x505e04)[_0x5e3a('0x20')](_0x4415a8);}return null;};}function patchUpdates(_0x49d667){return function(_0xd1e770){try{jsonpatch[_0x5e3a('0x21')](_0xd1e770,_0x49d667,!![]);}catch(_0x2fded6){return BPromise['reject'](_0x2fded6);}return _0xd1e770[_0x5e3a('0x22')]();};}function saveUpdates(_0x43fb18,_0x1356a4){return function(_0x41d83d){if(_0x41d83d){return _0x41d83d[_0x5e3a('0x23')](_0x43fb18)[_0x5e3a('0x24')](function(_0x4ea4a8){return _0x4ea4a8;});}return null;};}function removeEntity(_0x21e34d,_0x2803f2){return function(_0x3e6d6b){if(_0x3e6d6b){return _0x3e6d6b['destroy']()[_0x5e3a('0x24')](function(){var _0x11dc4a=_0x3e6d6b[_0x5e3a('0x25')]({'plain':!![]});var _0x4f1fd8=_0x5e3a('0x26');return db[_0x5e3a('0x27')]['destroy']({'where':{'type':_0x4f1fd8,'resourceId':_0x11dc4a['id']}})[_0x5e3a('0x24')](function(){return _0x3e6d6b;});})['then'](function(){_0x21e34d[_0x5e3a('0x1a')](0xcc)[_0x5e3a('0x28')]();});}};}function handleEntityNotFound(_0x5750eb,_0x3fe222){return function(_0x3f1df4){if(!_0x3f1df4){_0x5750eb[_0x5e3a('0x19')](0x194);}return _0x3f1df4;};}function handleError(_0x5a4317,_0x450258){_0x450258=_0x450258||0x1f4;return function(_0x7dd20c){logger[_0x5e3a('0x29')](_0x7dd20c['stack']);if(_0x7dd20c['name']){delete _0x7dd20c[_0x5e3a('0x2a')];}_0x5a4317[_0x5e3a('0x1a')](_0x450258)[_0x5e3a('0x2b')](_0x7dd20c);};}exports[_0x5e3a('0x2c')]=function(_0x1ede8a,_0x3e5a0f){var _0x48824c={},_0x18af4c={},_0x4cca23={'count':0x0,'rows':[]};var _0x1a886f=_['map'](db[_0x5e3a('0x2d')][_0x5e3a('0x2e')],function(_0x21f955){return{'name':_0x21f955[_0x5e3a('0x2f')],'type':_0x21f955['type'][_0x5e3a('0x30')]};});_0x18af4c[_0x5e3a('0x31')]=_[_0x5e3a('0x32')](_0x1a886f,_0x5e3a('0x2a'));_0x18af4c[_0x5e3a('0x33')]=_[_0x5e3a('0x34')](_0x1ede8a[_0x5e3a('0x33')]);_0x18af4c[_0x5e3a('0x35')]=_[_0x5e3a('0x36')](_0x18af4c[_0x5e3a('0x31')],_0x18af4c[_0x5e3a('0x33')]);_0x48824c['attributes']=_[_0x5e3a('0x36')](_0x18af4c['model'],qs[_0x5e3a('0x37')](_0x1ede8a['query'][_0x5e3a('0x37')]));_0x48824c[_0x5e3a('0x38')]=_0x48824c[_0x5e3a('0x38')][_0x5e3a('0x39')]?_0x48824c[_0x5e3a('0x38')]:_0x18af4c['model'];if(!_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x3a')](_0x5e3a('0x3b'))){_0x48824c[_0x5e3a('0x1d')]=qs[_0x5e3a('0x1d')](_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x1d')]);_0x48824c[_0x5e3a('0x1b')]=qs[_0x5e3a('0x1b')](_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x1b')]);}_0x48824c[_0x5e3a('0x3c')]=qs['sort'](_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x3d')]);_0x48824c[_0x5e3a('0x3e')]=qs[_0x5e3a('0x35')](_[_0x5e3a('0x3f')](_0x1ede8a['query'],_0x18af4c['filters']),_0x1a886f);if(_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x40')]){_0x48824c[_0x5e3a('0x3e')]=_[_0x5e3a('0x41')](_0x48824c['where'],{'$or':[{'key':{'$like':'%'+_0x1ede8a[_0x5e3a('0x33')]['filter']+'%'}},{'value':{'$like':'%'+_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x40')]+'%'}}]});}_0x48824c=_['merge']({},_0x48824c,_0x1ede8a[_0x5e3a('0x42')]);var _0x526075={'where':_0x48824c['where']};return db[_0x5e3a('0x2d')][_0x5e3a('0x1e')](_0x526075)[_0x5e3a('0x24')](function(_0x11bfb6){_0x4cca23[_0x5e3a('0x1e')]=_0x11bfb6;if(_0x1ede8a[_0x5e3a('0x33')][_0x5e3a('0x43')]){_0x48824c[_0x5e3a('0x44')]=[{'all':!![]}];}return db[_0x5e3a('0x2d')]['findAll'](_0x48824c);})['then'](function(_0x31278e){_0x4cca23['rows']=_0x31278e;return _0x4cca23;})[_0x5e3a('0x24')](respondWithFilteredResult(_0x3e5a0f,_0x48824c))[_0x5e3a('0x45')](handleError(_0x3e5a0f,null));};exports[_0x5e3a('0x46')]=function(_0x5576e0,_0x3f3f47){var _0x408ab3={'raw':!![],'where':{'id':_0x5576e0[_0x5e3a('0x47')]['id']}},_0x29495e={};_0x29495e[_0x5e3a('0x31')]=_[_0x5e3a('0x34')](db[_0x5e3a('0x2d')][_0x5e3a('0x2e')]);_0x29495e[_0x5e3a('0x33')]=_[_0x5e3a('0x34')](_0x5576e0[_0x5e3a('0x33')]);_0x29495e[_0x5e3a('0x35')]=_['intersection'](_0x29495e[_0x5e3a('0x31')],_0x29495e[_0x5e3a('0x33')]);_0x408ab3[_0x5e3a('0x38')]=_['intersection'](_0x29495e[_0x5e3a('0x31')],qs[_0x5e3a('0x37')](_0x5576e0[_0x5e3a('0x33')][_0x5e3a('0x37')]));_0x408ab3[_0x5e3a('0x38')]=_0x408ab3[_0x5e3a('0x38')][_0x5e3a('0x39')]?_0x408ab3['attributes']:_0x29495e[_0x5e3a('0x31')];if(_0x5576e0['query'][_0x5e3a('0x43')]){_0x408ab3[_0x5e3a('0x44')]=[{'all':!![]}];}_0x408ab3=_[_0x5e3a('0x41')]({},_0x408ab3,_0x5576e0['options']);return db[_0x5e3a('0x2d')][_0x5e3a('0x48')](_0x408ab3)[_0x5e3a('0x24')](handleEntityNotFound(_0x3f3f47,null))['then'](respondWithResult(_0x3f3f47,null))[_0x5e3a('0x45')](handleError(_0x3f3f47,null));};exports[_0x5e3a('0x23')]=function(_0x5c42f6,_0x423a43){if(_0x5c42f6['body']['id']){delete _0x5c42f6['body']['id'];}return db['CannedAnswer'][_0x5e3a('0x48')]({'where':{'id':_0x5c42f6[_0x5e3a('0x47')]['id']}})[_0x5e3a('0x24')](handleEntityNotFound(_0x423a43,null))[_0x5e3a('0x24')](saveUpdates(_0x5c42f6[_0x5e3a('0x49')],null))[_0x5e3a('0x24')](respondWithResult(_0x423a43,null))[_0x5e3a('0x45')](handleError(_0x423a43,null));};exports[_0x5e3a('0x4a')]=function(_0x5110c4,_0x5d4518){return db[_0x5e3a('0x2d')][_0x5e3a('0x48')]({'where':{'id':_0x5110c4[_0x5e3a('0x47')]['id']}})[_0x5e3a('0x24')](handleEntityNotFound(_0x5d4518,null))['then'](removeEntity(_0x5d4518,null))[_0x5e3a('0x45')](handleError(_0x5d4518,null));};exports[_0x5e3a('0x4b')]=function(_0x1677c0,_0x5621f0){var _0x2e5c15={'key':_0x1677c0['body']['key']};if(_0x1677c0[_0x5e3a('0x49')][_0x5e3a('0x4c')]){_0x2e5c15['MailAccountId']=_0x1677c0[_0x5e3a('0x49')][_0x5e3a('0x4c')];}else if(_0x1677c0[_0x5e3a('0x49')][_0x5e3a('0x4d')]){_0x2e5c15['SmsAccountId']=_0x1677c0[_0x5e3a('0x49')][_0x5e3a('0x4d')];}else if(_0x1677c0[_0x5e3a('0x49')][_0x5e3a('0x4e')]){_0x2e5c15[_0x5e3a('0x4e')]=_0x1677c0[_0x5e3a('0x49')][_0x5e3a('0x4e')];}else if(_0x1677c0[_0x5e3a('0x49')]['ChatWebsiteId']){_0x2e5c15[_0x5e3a('0x4f')]=_0x1677c0['body'][_0x5e3a('0x4f')];}return db[_0x5e3a('0x2d')]['find']({'where':_0x2e5c15})['then'](function(_0x403866){if(_0x403866){throw new db['Sequelize']['ValidationError'](_0x5e3a('0x50'));}return db['CannedAnswer'][_0x5e3a('0x4b')](_0x1677c0['body']);})['then'](function(_0x37df37){var _0x574aab=_0x1677c0['user'][_0x5e3a('0x25')]({'plain':!![]});if(!_0x574aab)throw new Error(_0x5e3a('0x51'));if(_0x574aab[_0x5e3a('0x52')]===_0x5e3a('0x53')){var _0x3dfd41=_0x37df37[_0x5e3a('0x25')]({'plain':!![]});return db[_0x5e3a('0x54')][_0x5e3a('0x48')]({'where':{'name':'CannedAnswers','userProfileId':_0x574aab[_0x5e3a('0x55')]},'raw':!![]})[_0x5e3a('0x24')](function(_0x104c03){if(_0x104c03&&_0x104c03[_0x5e3a('0x56')]===0x0){return db[_0x5e3a('0x27')]['create']({'name':_0x3dfd41[_0x5e3a('0x2a')],'resourceId':_0x3dfd41['id'],'type':_0x104c03[_0x5e3a('0x2a')],'sectionId':_0x104c03['id']},{})[_0x5e3a('0x24')](function(){return _0x37df37;});}else{return _0x37df37;}})['catch'](function(_0x46262d){logger[_0x5e3a('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x46262d);throw _0x46262d;});}return _0x37df37;})[_0x5e3a('0x24')](respondWithResult(_0x5621f0,0xc9))[_0x5e3a('0x45')](handleError(_0x5621f0,null));};
\ No newline at end of file
+var _0x8424=['CannedAnswer','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','show','keys','options','find','catch','body','params','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','user','role','UserProfileSection','CannedAnswers','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','get','UserProfileResource','destroy','error','stack','name','index'];(function(_0x567d0a,_0x8a11db){var _0xfa0781=function(_0x58d8cb){while(--_0x58d8cb){_0x567d0a['push'](_0x567d0a['shift']());}};_0xfa0781(++_0x8a11db);}(_0x8424,0x81));var _0x4842=function(_0x5738a0,_0x174765){_0x5738a0=_0x5738a0-0x0;var _0x394439=_0x8424[_0x5738a0];return _0x394439;};'use strict';var emlformat=require(_0x4842('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4842('0x1'));var jsonpatch=require(_0x4842('0x2'));var rp=require(_0x4842('0x3'));var moment=require(_0x4842('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4842('0x5'));var path=require(_0x4842('0x6'));var sox=require(_0x4842('0x7'));var csv=require(_0x4842('0x8'));var ejs=require(_0x4842('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4842('0xa'));var squel=require('squel');var crypto=require(_0x4842('0xb'));var jsforce=require(_0x4842('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4842('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x4842('0xe'));var as=require(_0x4842('0xf'));var hardwareService=require(_0x4842('0x10'));var logger=require(_0x4842('0x11'))(_0x4842('0x12'));var utils=require(_0x4842('0x13'));var config=require(_0x4842('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x4842('0x15'))['db'];function respondWithStatusCode(_0x1d28b1,_0x4d5e28){_0x4d5e28=_0x4d5e28||0xcc;return function(_0x414d14){if(_0x414d14){return _0x1d28b1[_0x4842('0x16')](_0x4d5e28);}return _0x1d28b1[_0x4842('0x17')](_0x4d5e28)[_0x4842('0x18')]();};}function respondWithResult(_0x4b98d9,_0x454da4){_0x454da4=_0x454da4||0xc8;return function(_0x525e30){if(_0x525e30){return _0x4b98d9[_0x4842('0x17')](_0x454da4)[_0x4842('0x19')](_0x525e30);}};}function respondWithFilteredResult(_0xb32a27,_0x2b1754){return function(_0x218974){if(_0x218974){var _0x37b55d=typeof _0x2b1754[_0x4842('0x1a')]===_0x4842('0x1b')&&typeof _0x2b1754[_0x4842('0x1c')]===_0x4842('0x1b');var _0x2d1a9c=_0x218974[_0x4842('0x1d')];var _0x5eeece=_0x37b55d?0x0:_0x2b1754[_0x4842('0x1a')];var _0x14800e=_0x37b55d?_0x218974[_0x4842('0x1d')]:_0x2b1754[_0x4842('0x1a')]+_0x2b1754[_0x4842('0x1c')];var _0x1aab78;if(_0x14800e>=_0x2d1a9c){_0x14800e=_0x2d1a9c;_0x1aab78=0xc8;}else{_0x1aab78=0xce;}_0xb32a27[_0x4842('0x17')](_0x1aab78);return _0xb32a27[_0x4842('0x1e')](_0x4842('0x1f'),_0x5eeece+'-'+_0x14800e+'/'+_0x2d1a9c)[_0x4842('0x19')](_0x218974);}return null;};}function patchUpdates(_0x3b9e0e){return function(_0x1f47e7){try{jsonpatch['apply'](_0x1f47e7,_0x3b9e0e,!![]);}catch(_0x457e90){return BPromise[_0x4842('0x20')](_0x457e90);}return _0x1f47e7[_0x4842('0x21')]();};}function saveUpdates(_0x13d326,_0x15089a){return function(_0x511690){if(_0x511690){return _0x511690[_0x4842('0x22')](_0x13d326)['then'](function(_0x865689){return _0x865689;});}return null;};}function removeEntity(_0x522d5a,_0x5ca2a4){return function(_0x1f941a){if(_0x1f941a){return _0x1f941a['destroy']()[_0x4842('0x23')](function(){var _0x4265e7=_0x1f941a[_0x4842('0x24')]({'plain':!![]});var _0x72723c='CannedAnswers';return db[_0x4842('0x25')][_0x4842('0x26')]({'where':{'type':_0x72723c,'resourceId':_0x4265e7['id']}})[_0x4842('0x23')](function(){return _0x1f941a;});})[_0x4842('0x23')](function(){_0x522d5a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d1278,_0x379785){return function(_0x4d1c50){if(!_0x4d1c50){_0x3d1278[_0x4842('0x16')](0x194);}return _0x4d1c50;};}function handleError(_0x38a70d,_0x56bfca){_0x56bfca=_0x56bfca||0x1f4;return function(_0x54d848){logger[_0x4842('0x27')](_0x54d848[_0x4842('0x28')]);if(_0x54d848[_0x4842('0x29')]){delete _0x54d848[_0x4842('0x29')];}_0x38a70d[_0x4842('0x17')](_0x56bfca)['send'](_0x54d848);};}exports[_0x4842('0x2a')]=function(_0x1e3ea8,_0x1bf576){var _0x461d87={},_0x152227={},_0x487738={'count':0x0,'rows':[]};var _0x1f3329=_['map'](db[_0x4842('0x2b')][_0x4842('0x2c')],function(_0x2f77de){return{'name':_0x2f77de[_0x4842('0x2d')],'type':_0x2f77de[_0x4842('0x2e')][_0x4842('0x2f')]};});_0x152227['model']=_['map'](_0x1f3329,_0x4842('0x29'));_0x152227[_0x4842('0x30')]=_['keys'](_0x1e3ea8['query']);_0x152227[_0x4842('0x31')]=_[_0x4842('0x32')](_0x152227[_0x4842('0x33')],_0x152227[_0x4842('0x30')]);_0x461d87[_0x4842('0x34')]=_[_0x4842('0x32')](_0x152227[_0x4842('0x33')],qs[_0x4842('0x35')](_0x1e3ea8[_0x4842('0x30')][_0x4842('0x35')]));_0x461d87[_0x4842('0x34')]=_0x461d87['attributes'][_0x4842('0x36')]?_0x461d87[_0x4842('0x34')]:_0x152227[_0x4842('0x33')];if(!_0x1e3ea8[_0x4842('0x30')][_0x4842('0x37')](_0x4842('0x38'))){_0x461d87['limit']=qs[_0x4842('0x1c')](_0x1e3ea8[_0x4842('0x30')][_0x4842('0x1c')]);_0x461d87[_0x4842('0x1a')]=qs['offset'](_0x1e3ea8['query'][_0x4842('0x1a')]);}_0x461d87[_0x4842('0x39')]=qs[_0x4842('0x3a')](_0x1e3ea8[_0x4842('0x30')][_0x4842('0x3a')]);_0x461d87[_0x4842('0x3b')]=qs[_0x4842('0x31')](_[_0x4842('0x3c')](_0x1e3ea8[_0x4842('0x30')],_0x152227[_0x4842('0x31')]),_0x1f3329);if(_0x1e3ea8[_0x4842('0x30')][_0x4842('0x3d')]){_0x461d87['where']=_[_0x4842('0x3e')](_0x461d87[_0x4842('0x3b')],{'$or':[{'key':{'$like':'%'+_0x1e3ea8[_0x4842('0x30')][_0x4842('0x3d')]+'%'}},{'value':{'$like':'%'+_0x1e3ea8[_0x4842('0x30')][_0x4842('0x3d')]+'%'}}]});}_0x461d87=_[_0x4842('0x3e')]({},_0x461d87,_0x1e3ea8['options']);var _0x4e58fe={'where':_0x461d87['where']};return db[_0x4842('0x2b')][_0x4842('0x1d')](_0x4e58fe)[_0x4842('0x23')](function(_0x135cd2){_0x487738[_0x4842('0x1d')]=_0x135cd2;if(_0x1e3ea8[_0x4842('0x30')][_0x4842('0x3f')]){_0x461d87[_0x4842('0x40')]=[{'all':!![]}];}return db[_0x4842('0x2b')][_0x4842('0x41')](_0x461d87);})[_0x4842('0x23')](function(_0x43cbf7){_0x487738[_0x4842('0x42')]=_0x43cbf7;return _0x487738;})['then'](respondWithFilteredResult(_0x1bf576,_0x461d87))['catch'](handleError(_0x1bf576,null));};exports[_0x4842('0x43')]=function(_0x13d707,_0x31909b){var _0x4cceac={'raw':!![],'where':{'id':_0x13d707['params']['id']}},_0x445921={};_0x445921[_0x4842('0x33')]=_[_0x4842('0x44')](db[_0x4842('0x2b')][_0x4842('0x2c')]);_0x445921[_0x4842('0x30')]=_[_0x4842('0x44')](_0x13d707[_0x4842('0x30')]);_0x445921[_0x4842('0x31')]=_['intersection'](_0x445921[_0x4842('0x33')],_0x445921['query']);_0x4cceac['attributes']=_['intersection'](_0x445921[_0x4842('0x33')],qs['fields'](_0x13d707[_0x4842('0x30')][_0x4842('0x35')]));_0x4cceac[_0x4842('0x34')]=_0x4cceac[_0x4842('0x34')]['length']?_0x4cceac[_0x4842('0x34')]:_0x445921[_0x4842('0x33')];if(_0x13d707[_0x4842('0x30')]['includeAll']){_0x4cceac[_0x4842('0x40')]=[{'all':!![]}];}_0x4cceac=_[_0x4842('0x3e')]({},_0x4cceac,_0x13d707[_0x4842('0x45')]);return db[_0x4842('0x2b')][_0x4842('0x46')](_0x4cceac)[_0x4842('0x23')](handleEntityNotFound(_0x31909b,null))['then'](respondWithResult(_0x31909b,null))[_0x4842('0x47')](handleError(_0x31909b,null));};exports['update']=function(_0xaf5c17,_0x16be32){if(_0xaf5c17[_0x4842('0x48')]['id']){delete _0xaf5c17['body']['id'];}return db[_0x4842('0x2b')][_0x4842('0x46')]({'where':{'id':_0xaf5c17['params']['id']}})[_0x4842('0x23')](handleEntityNotFound(_0x16be32,null))[_0x4842('0x23')](saveUpdates(_0xaf5c17[_0x4842('0x48')],null))[_0x4842('0x23')](respondWithResult(_0x16be32,null))[_0x4842('0x47')](handleError(_0x16be32,null));};exports[_0x4842('0x26')]=function(_0x3bd287,_0x135fe0){return db[_0x4842('0x2b')][_0x4842('0x46')]({'where':{'id':_0x3bd287[_0x4842('0x49')]['id']}})[_0x4842('0x23')](handleEntityNotFound(_0x135fe0,null))[_0x4842('0x23')](removeEntity(_0x135fe0,null))[_0x4842('0x47')](handleError(_0x135fe0,null));};exports[_0x4842('0x4a')]=function(_0x3fa7b9,_0x46decd){var _0x481d0={'key':_0x3fa7b9['body'][_0x4842('0x2f')]};if(_0x3fa7b9['body'][_0x4842('0x4b')]){_0x481d0[_0x4842('0x4b')]=_0x3fa7b9[_0x4842('0x48')][_0x4842('0x4b')];}else if(_0x3fa7b9[_0x4842('0x48')][_0x4842('0x4c')]){_0x481d0['SmsAccountId']=_0x3fa7b9[_0x4842('0x48')]['SmsAccountId'];}else if(_0x3fa7b9[_0x4842('0x48')]['OpenchannelAccountId']){_0x481d0[_0x4842('0x4d')]=_0x3fa7b9[_0x4842('0x48')][_0x4842('0x4d')];}else if(_0x3fa7b9[_0x4842('0x48')][_0x4842('0x4e')]){_0x481d0[_0x4842('0x4e')]=_0x3fa7b9['body'][_0x4842('0x4e')];}return db[_0x4842('0x2b')][_0x4842('0x46')]({'where':_0x481d0})['then'](function(_0x4bc8c7){if(_0x4bc8c7){throw new db[(_0x4842('0x4f'))][(_0x4842('0x50'))]('The\x20inserted\x20key\x20already\x20exists.');}return db[_0x4842('0x2b')][_0x4842('0x4a')](_0x3fa7b9[_0x4842('0x48')]);})[_0x4842('0x23')](function(_0xf8deb5){var _0x389c49=_0x3fa7b9[_0x4842('0x51')]['get']({'plain':!![]});if(!_0x389c49)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x389c49[_0x4842('0x52')]===_0x4842('0x51')){var _0x35e443=_0xf8deb5[_0x4842('0x24')]({'plain':!![]});return db[_0x4842('0x53')]['find']({'where':{'name':_0x4842('0x54'),'userProfileId':_0x389c49['userProfileId']},'raw':!![]})[_0x4842('0x23')](function(_0x5521a9){if(_0x5521a9&&_0x5521a9['autoAssociation']===0x0){return db['UserProfileResource'][_0x4842('0x4a')]({'name':_0x35e443[_0x4842('0x29')],'resourceId':_0x35e443['id'],'type':_0x5521a9[_0x4842('0x29')],'sectionId':_0x5521a9['id']},{})['then'](function(){return _0xf8deb5;});}else{return _0xf8deb5;}})['catch'](function(_0x2637e6){logger['error'](_0x4842('0x55'),_0x2637e6);throw _0x2637e6;});}return _0xf8deb5;})[_0x4842('0x23')](respondWithResult(_0x46decd,0xc9))['catch'](handleError(_0x46decd,null));};
\ No newline at end of file
index 22a978d..4d42b99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b2c=['api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x30ce9b,_0x2225c6){var _0x2dbab0=function(_0x3e982e){while(--_0x3e982e){_0x30ce9b['push'](_0x30ce9b['shift']());}};_0x2dbab0(++_0x2225c6);}(_0x4b2c,0x1b0));var _0xc4b2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4b2c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc4b2('0x0'));var util=require(_0xc4b2('0x1'));var logger=require(_0xc4b2('0x2'))(_0xc4b2('0x3'));var moment=require(_0xc4b2('0x4'));var BPromise=require(_0xc4b2('0x5'));var rp=require(_0xc4b2('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc4b2('0x7'));var config=require(_0xc4b2('0x8'));var attributes=require('./cannedAnswer.attributes');module[_0xc4b2('0x9')]=function(_0x2f1535,_0x27c1b2){return _0x2f1535[_0xc4b2('0xa')](_0xc4b2('0xb'),attributes,{'tableName':_0xc4b2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc4b2('0xd'),'collate':_0xc4b2('0xe')});};
\ No newline at end of file
+var _0x7537=['../../config/logger','api','moment','bluebird','request-promise','rimraf','./cannedAnswer.attributes','exports','define','CannedAnswer','tools_canned_answers','utf8mb4_unicode_ci','lodash','util'];(function(_0x583bf0,_0x4b59aa){var _0x210ec6=function(_0x3a7abb){while(--_0x3a7abb){_0x583bf0['push'](_0x583bf0['shift']());}};_0x210ec6(++_0x4b59aa);}(_0x7537,0x7c));var _0x7753=function(_0x2874bd,_0x387d58){_0x2874bd=_0x2874bd-0x0;var _0x3746cc=_0x7537[_0x2874bd];return _0x3746cc;};'use strict';var _=require(_0x7753('0x0'));var util=require(_0x7753('0x1'));var logger=require(_0x7753('0x2'))(_0x7753('0x3'));var moment=require(_0x7753('0x4'));var BPromise=require(_0x7753('0x5'));var rp=require(_0x7753('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7753('0x7'));var config=require('../../config/environment');var attributes=require(_0x7753('0x8'));module[_0x7753('0x9')]=function(_0x645ea2,_0x495904){return _0x645ea2[_0x7753('0xa')](_0x7753('0xb'),attributes,{'tableName':_0x7753('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x7753('0xd')});};
\ No newline at end of file
index fdf9865..00df41c 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(_0x467e2b,_0x167973){var _0x41993b=function(_0x51260d){while(--_0x51260d){_0x467e2b['push'](_0x467e2b['shift']());}};_0x41993b(++_0x167973);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+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(_0x58d6bf,_0x4cb7c3){var _0x6207f8=function(_0x4d2576){while(--_0x4d2576){_0x58d6bf['push'](_0x58d6bf['shift']());}};_0x6207f8(++_0x4cb7c3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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 6c2d83c..f28950f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5926=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./cannedAnswer.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','multer','util','path'];(function(_0x4ea755,_0x3512e4){var _0x3c37bb=function(_0x54ca3a){while(--_0x54ca3a){_0x4ea755['push'](_0x4ea755['shift']());}};_0x3c37bb(++_0x3512e4);}(_0x5926,0x101));var _0x6592=function(_0x19288f,_0x30b58f){_0x19288f=_0x19288f-0x0;var _0x1c7046=_0x5926[_0x19288f];return _0x1c7046;};'use strict';var multer=require(_0x6592('0x0'));var util=require(_0x6592('0x1'));var path=require(_0x6592('0x2'));var timeout=require(_0x6592('0x3'));var express=require(_0x6592('0x4'));var router=express[_0x6592('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6592('0x6'));var interaction=require(_0x6592('0x7'));var config=require('../../config/environment');var controller=require(_0x6592('0x8'));router[_0x6592('0x9')]('/',auth[_0x6592('0xa')](),controller[_0x6592('0xb')]);router[_0x6592('0x9')](_0x6592('0xc'),auth['isAuthenticated'](),controller[_0x6592('0xd')]);router[_0x6592('0xe')]('/',auth[_0x6592('0xa')](),controller[_0x6592('0xf')]);router[_0x6592('0x10')](_0x6592('0xc'),auth['isAuthenticated'](),controller[_0x6592('0x11')]);router['delete']('/:id',auth[_0x6592('0xa')](),controller[_0x6592('0x12')]);module[_0x6592('0x13')]=router;
\ No newline at end of file
+var _0x5207=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','util'];(function(_0x4bfc37,_0x3d1c90){var _0x550c40=function(_0x45ccc5){while(--_0x45ccc5){_0x4bfc37['push'](_0x4bfc37['shift']());}};_0x550c40(++_0x3d1c90);}(_0x5207,0x154));var _0x7520=function(_0x24719b,_0x45688d){_0x24719b=_0x24719b-0x0;var _0x66eb7b=_0x5207[_0x24719b];return _0x66eb7b;};'use strict';var multer=require(_0x7520('0x0'));var util=require(_0x7520('0x1'));var path=require(_0x7520('0x2'));var timeout=require('connect-timeout');var express=require(_0x7520('0x3'));var router=express[_0x7520('0x4')]();var fs_extra=require(_0x7520('0x5'));var auth=require(_0x7520('0x6'));var interaction=require(_0x7520('0x7'));var config=require('../../config/environment');var controller=require('./cannedAnswer.controller');router[_0x7520('0x8')]('/',auth[_0x7520('0x9')](),controller[_0x7520('0xa')]);router[_0x7520('0x8')](_0x7520('0xb'),auth[_0x7520('0x9')](),controller[_0x7520('0xc')]);router[_0x7520('0xd')]('/',auth[_0x7520('0x9')](),controller[_0x7520('0xe')]);router[_0x7520('0xf')](_0x7520('0xb'),auth[_0x7520('0x9')](),controller[_0x7520('0x10')]);router[_0x7520('0x11')](_0x7520('0xb'),auth[_0x7520('0x9')](),controller['destroy']);module[_0x7520('0x12')]=router;
\ No newline at end of file
index 45b89dd..c04b852 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6427=['exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x7f3f23,_0x1f794b){var _0xfef172=function(_0x3964f3){while(--_0x3964f3){_0x7f3f23['push'](_0x7f3f23['shift']());}};_0xfef172(++_0x1f794b);}(_0x6427,0xbe));var _0x7642=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0x6427[_0x4baae2];return _0x1a2285;};'use strict';var Sequelize=require('sequelize');module[_0x7642('0x0')]={'calldate':{'type':Sequelize[_0x7642('0x1')],'allowNull':![],'defaultValue':_0x7642('0x2')},'clid':{'type':Sequelize[_0x7642('0x3')]},'src':{'type':Sequelize[_0x7642('0x3')]},'dst':{'type':Sequelize[_0x7642('0x3')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x7642('0x3')]},'dstchannel':{'type':Sequelize[_0x7642('0x3')]},'lastapp':{'type':Sequelize[_0x7642('0x3')]},'lastdata':{'type':Sequelize[_0x7642('0x3')]},'duration':{'type':Sequelize[_0x7642('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x7642('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x7642('0x3')]},'amaflags':{'type':Sequelize[_0x7642('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x7642('0x3')]},'userfield':{'type':Sequelize[_0x7642('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0x7642('0x3')]},'peeraccount':{'type':Sequelize[_0x7642('0x3')]},'type':{'type':Sequelize[_0x7642('0x3')]},'tag':{'type':Sequelize[_0x7642('0x3')]}};
\ No newline at end of file
+var _0x4d04=['1970-01-01\x2000:00:01','STRING','INTEGER','exports','DATE'];(function(_0x2d91c6,_0x10ae0e){var _0x3a8d19=function(_0x27a3ce){while(--_0x27a3ce){_0x2d91c6['push'](_0x2d91c6['shift']());}};_0x3a8d19(++_0x10ae0e);}(_0x4d04,0xf3));var _0x44d0=function(_0x372d2e,_0x8090e5){_0x372d2e=_0x372d2e-0x0;var _0xc27603=_0x4d04[_0x372d2e];return _0xc27603;};'use strict';var Sequelize=require('sequelize');module[_0x44d0('0x0')]={'calldate':{'type':Sequelize[_0x44d0('0x1')],'allowNull':![],'defaultValue':_0x44d0('0x2')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0x44d0('0x3')]},'dst':{'type':Sequelize[_0x44d0('0x3')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x44d0('0x3')]},'dstchannel':{'type':Sequelize[_0x44d0('0x3')]},'lastapp':{'type':Sequelize[_0x44d0('0x3')]},'lastdata':{'type':Sequelize[_0x44d0('0x3')]},'duration':{'type':Sequelize[_0x44d0('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x44d0('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x44d0('0x3')]},'amaflags':{'type':Sequelize[_0x44d0('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x44d0('0x3')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0x44d0('0x3')]},'sequence':{'type':Sequelize[_0x44d0('0x3')]},'peeraccount':{'type':Sequelize[_0x44d0('0x3')]},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0x44d0('0x3')]}};
\ No newline at end of file
index 38c7cc7..eef315f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d17=['to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','name','send','index','Cdr','rawAttributes','fieldName','type','model','map','query','intersection','attributes','fields','length','nolimit','sort','where','filters','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','create','update','body','find','describe','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox'];(function(_0x5cfc86,_0x2fa759){var _0x3003c1=function(_0x84976){while(--_0x84976){_0x5cfc86['push'](_0x5cfc86['shift']());}};_0x3003c1(++_0x2fa759);}(_0x5d17,0x114));var _0x75d1=function(_0x4ba3c4,_0x24842d){_0x4ba3c4=_0x4ba3c4-0x0;var _0x2b6605=_0x5d17[_0x4ba3c4];return _0x2b6605;};'use strict';var emlformat=require(_0x75d1('0x0'));var rimraf=require(_0x75d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x75d1('0x2'));var moment=require(_0x75d1('0x3'));var BPromise=require(_0x75d1('0x4'));var Mustache=require('mustache');var util=require(_0x75d1('0x5'));var path=require(_0x75d1('0x6'));var sox=require(_0x75d1('0x7'));var csv=require(_0x75d1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x75d1('0x9'));var _=require(_0x75d1('0xa'));var squel=require(_0x75d1('0xb'));var crypto=require(_0x75d1('0xc'));var jsforce=require(_0x75d1('0xd'));var deskjs=require(_0x75d1('0xe'));var toCsv=require(_0x75d1('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x75d1('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x75d1('0x10'));var hardwareService=require(_0x75d1('0x11'));var logger=require('../../config/logger')(_0x75d1('0x12'));var utils=require(_0x75d1('0x13'));var config=require(_0x75d1('0x14'));var licenseUtil=require(_0x75d1('0x15'));var db=require(_0x75d1('0x16'))['db'];function respondWithStatusCode(_0xd089cf,_0x49667a){_0x49667a=_0x49667a||0xcc;return function(_0x19e825){if(_0x19e825){return _0xd089cf[_0x75d1('0x17')](_0x49667a);}return _0xd089cf[_0x75d1('0x18')](_0x49667a)[_0x75d1('0x19')]();};}function respondWithResult(_0x49d723,_0x553697){_0x553697=_0x553697||0xc8;return function(_0x55b8a0){if(_0x55b8a0){return _0x49d723[_0x75d1('0x18')](_0x553697)[_0x75d1('0x1a')](_0x55b8a0);}};}function respondWithFilteredResult(_0x2fd022,_0x52e649){return function(_0x1f9620){if(_0x1f9620){var _0x3fff9b=typeof _0x52e649[_0x75d1('0x1b')]===_0x75d1('0x1c')&&typeof _0x52e649[_0x75d1('0x1d')]===_0x75d1('0x1c');var _0x2845bc=_0x1f9620[_0x75d1('0x1e')];var _0x1bc5de=_0x3fff9b?0x0:_0x52e649[_0x75d1('0x1b')];var _0x2c2a6d=_0x3fff9b?_0x1f9620['count']:_0x52e649['offset']+_0x52e649[_0x75d1('0x1d')];var _0x42b7ac;if(_0x2c2a6d>=_0x2845bc){_0x2c2a6d=_0x2845bc;_0x42b7ac=0xc8;}else{_0x42b7ac=0xce;}_0x2fd022['status'](_0x42b7ac);return _0x2fd022[_0x75d1('0x1f')](_0x75d1('0x20'),_0x1bc5de+'-'+_0x2c2a6d+'/'+_0x2845bc)[_0x75d1('0x1a')](_0x1f9620);}return null;};}function patchUpdates(_0xf6cc70){return function(_0xa42dbe){try{jsonpatch[_0x75d1('0x21')](_0xa42dbe,_0xf6cc70,!![]);}catch(_0x51d3b0){return BPromise[_0x75d1('0x22')](_0x51d3b0);}return _0xa42dbe[_0x75d1('0x23')]();};}function saveUpdates(_0x501cc7,_0x1cb58c){return function(_0x641ea4){if(_0x641ea4){return _0x641ea4['update'](_0x501cc7)[_0x75d1('0x24')](function(_0x5e70ec){return _0x5e70ec;});}return null;};}function removeEntity(_0x3a85c0,_0xc256af){return function(_0x345cf5){if(_0x345cf5){return _0x345cf5['destroy']()['then'](function(){_0x3a85c0[_0x75d1('0x18')](0xcc)[_0x75d1('0x19')]();});}};}function handleEntityNotFound(_0x315ce5,_0x18184b){return function(_0x51d043){if(!_0x51d043){_0x315ce5[_0x75d1('0x17')](0x194);}return _0x51d043;};}function handleError(_0x2b5848,_0x367238){_0x367238=_0x367238||0x1f4;return function(_0x51138e){logger['error'](_0x51138e['stack']);if(_0x51138e[_0x75d1('0x25')]){delete _0x51138e[_0x75d1('0x25')];}_0x2b5848[_0x75d1('0x18')](_0x367238)[_0x75d1('0x26')](_0x51138e);};}exports[_0x75d1('0x27')]=function(_0x519ceb,_0x4d292e){var _0x410e16={},_0x197f52={},_0x4967b5={'count':0x0,'rows':[]};var _0x2408b6=_['map'](db[_0x75d1('0x28')][_0x75d1('0x29')],function(_0x91e7c9){return{'name':_0x91e7c9[_0x75d1('0x2a')],'type':_0x91e7c9[_0x75d1('0x2b')]['key']};});_0x197f52[_0x75d1('0x2c')]=_[_0x75d1('0x2d')](_0x2408b6,_0x75d1('0x25'));_0x197f52[_0x75d1('0x2e')]=_['keys'](_0x519ceb[_0x75d1('0x2e')]);_0x197f52['filters']=_[_0x75d1('0x2f')](_0x197f52[_0x75d1('0x2c')],_0x197f52['query']);_0x410e16[_0x75d1('0x30')]=_[_0x75d1('0x2f')](_0x197f52[_0x75d1('0x2c')],qs[_0x75d1('0x31')](_0x519ceb[_0x75d1('0x2e')]['fields']));_0x410e16[_0x75d1('0x30')]=_0x410e16[_0x75d1('0x30')][_0x75d1('0x32')]?_0x410e16[_0x75d1('0x30')]:_0x197f52['model'];if(!_0x519ceb['query']['hasOwnProperty'](_0x75d1('0x33'))){_0x410e16[_0x75d1('0x1d')]=qs[_0x75d1('0x1d')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x1d')]);_0x410e16[_0x75d1('0x1b')]=qs[_0x75d1('0x1b')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x1b')]);}_0x410e16['order']=qs[_0x75d1('0x34')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x34')]);_0x410e16[_0x75d1('0x35')]=qs[_0x75d1('0x36')](_['pick'](_0x519ceb['query'],_0x197f52['filters']),_0x2408b6);if(_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x37')]){_0x410e16[_0x75d1('0x35')]=_[_0x75d1('0x38')](_0x410e16[_0x75d1('0x35')],{'$or':_[_0x75d1('0x2d')](_0x2408b6,function(_0x48f9f3){if(_0x48f9f3['type']!=='VIRTUAL'){var _0x3f2569={};_0x3f2569[_0x48f9f3['name']]={'$like':'%'+_0x519ceb['query'][_0x75d1('0x37')]+'%'};return _0x3f2569;}})});}_0x410e16=_[_0x75d1('0x38')]({},_0x410e16,_0x519ceb[_0x75d1('0x39')]);var _0x46854c={'where':_0x410e16['where']};return db[_0x75d1('0x28')][_0x75d1('0x1e')](_0x46854c)[_0x75d1('0x24')](function(_0x3d4137){_0x4967b5[_0x75d1('0x1e')]=_0x3d4137;if(_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x3a')]){_0x410e16[_0x75d1('0x3b')]=[{'all':!![]}];}return db[_0x75d1('0x28')][_0x75d1('0x3c')](_0x410e16);})[_0x75d1('0x24')](function(_0x93922f){_0x4967b5[_0x75d1('0x3d')]=_0x93922f;return _0x4967b5;})[_0x75d1('0x24')](respondWithFilteredResult(_0x4d292e,_0x410e16))[_0x75d1('0x3e')](handleError(_0x4d292e,null));};exports[_0x75d1('0x3f')]=function(_0x25f689,_0x2ad3ef){var _0x42c18c={'raw':!![],'where':{'id':_0x25f689[_0x75d1('0x40')]['id']}},_0x2384aa={};_0x2384aa[_0x75d1('0x2c')]=_['keys'](db['Cdr'][_0x75d1('0x29')]);_0x2384aa[_0x75d1('0x2e')]=_[_0x75d1('0x41')](_0x25f689[_0x75d1('0x2e')]);_0x2384aa['filters']=_[_0x75d1('0x2f')](_0x2384aa[_0x75d1('0x2c')],_0x2384aa[_0x75d1('0x2e')]);_0x42c18c[_0x75d1('0x30')]=_['intersection'](_0x2384aa[_0x75d1('0x2c')],qs[_0x75d1('0x31')](_0x25f689[_0x75d1('0x2e')][_0x75d1('0x31')]));_0x42c18c['attributes']=_0x42c18c[_0x75d1('0x30')]['length']?_0x42c18c[_0x75d1('0x30')]:_0x2384aa[_0x75d1('0x2c')];if(_0x25f689[_0x75d1('0x2e')][_0x75d1('0x3a')]){_0x42c18c[_0x75d1('0x3b')]=[{'all':!![]}];}_0x42c18c=_[_0x75d1('0x38')]({},_0x42c18c,_0x25f689['options']);return db[_0x75d1('0x28')]['find'](_0x42c18c)['then'](handleEntityNotFound(_0x2ad3ef,null))[_0x75d1('0x24')](respondWithResult(_0x2ad3ef,null))[_0x75d1('0x3e')](handleError(_0x2ad3ef,null));};exports[_0x75d1('0x42')]=function(_0x12bd67,_0x16f744){return db[_0x75d1('0x28')][_0x75d1('0x42')](_0x12bd67['body'],{})['then'](respondWithResult(_0x16f744,0xc9))[_0x75d1('0x3e')](handleError(_0x16f744,null));};exports[_0x75d1('0x43')]=function(_0x50def3,_0x2d380d){if(_0x50def3[_0x75d1('0x44')]['id']){delete _0x50def3[_0x75d1('0x44')]['id'];}return db['Cdr'][_0x75d1('0x45')]({'where':{'id':_0x50def3[_0x75d1('0x40')]['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x2d380d,null))[_0x75d1('0x24')](saveUpdates(_0x50def3[_0x75d1('0x44')],null))[_0x75d1('0x24')](respondWithResult(_0x2d380d,null))[_0x75d1('0x3e')](handleError(_0x2d380d,null));};exports['destroy']=function(_0x1eaa66,_0x382195){return db[_0x75d1('0x28')][_0x75d1('0x45')]({'where':{'id':_0x1eaa66[_0x75d1('0x40')]['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x382195,null))[_0x75d1('0x24')](removeEntity(_0x382195,null))['catch'](handleError(_0x382195,null));};exports[_0x75d1('0x46')]=function(_0x3af9c5,_0x42d587){return db['Cdr'][_0x75d1('0x46')]()[_0x75d1('0x24')](respondWithResult(_0x42d587,null))[_0x75d1('0x3e')](handleError(_0x42d587,null));};
\ No newline at end of file
+var _0x0faf=['includeAll','options','find','create','body','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','error','name','send','index','Cdr','rawAttributes','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','merge','VIRTUAL','filter','include','findAll','rows','catch','show','params','keys'];(function(_0x29e030,_0x1c60cd){var _0x375763=function(_0x16f5f8){while(--_0x16f5f8){_0x29e030['push'](_0x29e030['shift']());}};_0x375763(++_0x1c60cd);}(_0x0faf,0x132));var _0xf0fa=function(_0x284bc3,_0x22dffe){_0x284bc3=_0x284bc3-0x0;var _0x41ac81=_0x0faf[_0x284bc3];return _0x41ac81;};'use strict';var emlformat=require(_0xf0fa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf0fa('0x1'));var jsonpatch=require(_0xf0fa('0x2'));var rp=require(_0xf0fa('0x3'));var moment=require(_0xf0fa('0x4'));var BPromise=require(_0xf0fa('0x5'));var Mustache=require(_0xf0fa('0x6'));var util=require(_0xf0fa('0x7'));var path=require(_0xf0fa('0x8'));var sox=require(_0xf0fa('0x9'));var csv=require('to-csv');var ejs=require(_0xf0fa('0xa'));var fs=require('fs');var fs_extra=require(_0xf0fa('0xb'));var _=require(_0xf0fa('0xc'));var squel=require(_0xf0fa('0xd'));var crypto=require(_0xf0fa('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xf0fa('0xf'));var toCsv=require(_0xf0fa('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf0fa('0x11'));var authService=require(_0xf0fa('0x12'));var qs=require(_0xf0fa('0x13'));var as=require(_0xf0fa('0x14'));var hardwareService=require(_0xf0fa('0x15'));var logger=require(_0xf0fa('0x16'))(_0xf0fa('0x17'));var utils=require(_0xf0fa('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xf0fa('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2f46ff,_0x521034){_0x521034=_0x521034||0xcc;return function(_0x39ae2b){if(_0x39ae2b){return _0x2f46ff[_0xf0fa('0x1a')](_0x521034);}return _0x2f46ff[_0xf0fa('0x1b')](_0x521034)['end']();};}function respondWithResult(_0x5821ae,_0x42591b){_0x42591b=_0x42591b||0xc8;return function(_0x540a04){if(_0x540a04){return _0x5821ae[_0xf0fa('0x1b')](_0x42591b)[_0xf0fa('0x1c')](_0x540a04);}};}function respondWithFilteredResult(_0x10ce43,_0x3203ce){return function(_0x467d5f){if(_0x467d5f){var _0x33df80=typeof _0x3203ce[_0xf0fa('0x1d')]===_0xf0fa('0x1e')&&typeof _0x3203ce['limit']===_0xf0fa('0x1e');var _0x477914=_0x467d5f[_0xf0fa('0x1f')];var _0x1d3c22=_0x33df80?0x0:_0x3203ce[_0xf0fa('0x1d')];var _0x386e5f=_0x33df80?_0x467d5f['count']:_0x3203ce['offset']+_0x3203ce[_0xf0fa('0x20')];var _0x2751cc;if(_0x386e5f>=_0x477914){_0x386e5f=_0x477914;_0x2751cc=0xc8;}else{_0x2751cc=0xce;}_0x10ce43[_0xf0fa('0x1b')](_0x2751cc);return _0x10ce43[_0xf0fa('0x21')](_0xf0fa('0x22'),_0x1d3c22+'-'+_0x386e5f+'/'+_0x477914)[_0xf0fa('0x1c')](_0x467d5f);}return null;};}function patchUpdates(_0x32c9bc){return function(_0x3de639){try{jsonpatch[_0xf0fa('0x23')](_0x3de639,_0x32c9bc,!![]);}catch(_0x15942b){return BPromise[_0xf0fa('0x24')](_0x15942b);}return _0x3de639['save']();};}function saveUpdates(_0x10c93e,_0x306f3e){return function(_0x39e82d){if(_0x39e82d){return _0x39e82d[_0xf0fa('0x25')](_0x10c93e)[_0xf0fa('0x26')](function(_0x2b22c5){return _0x2b22c5;});}return null;};}function removeEntity(_0x3901aa,_0x1f0eaf){return function(_0x3feb0c){if(_0x3feb0c){return _0x3feb0c['destroy']()[_0xf0fa('0x26')](function(){_0x3901aa[_0xf0fa('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b5d7d,_0x3703b5){return function(_0x2efe88){if(!_0x2efe88){_0x3b5d7d['sendStatus'](0x194);}return _0x2efe88;};}function handleError(_0xded80d,_0x284499){_0x284499=_0x284499||0x1f4;return function(_0x3d10fb){logger[_0xf0fa('0x27')](_0x3d10fb['stack']);if(_0x3d10fb['name']){delete _0x3d10fb[_0xf0fa('0x28')];}_0xded80d[_0xf0fa('0x1b')](_0x284499)[_0xf0fa('0x29')](_0x3d10fb);};}exports[_0xf0fa('0x2a')]=function(_0x57b8e9,_0x4058d6){var _0x409a8c={},_0x1279cf={},_0x5a4fd3={'count':0x0,'rows':[]};var _0x9ad0e3=_['map'](db[_0xf0fa('0x2b')][_0xf0fa('0x2c')],function(_0x28e057){return{'name':_0x28e057['fieldName'],'type':_0x28e057[_0xf0fa('0x2d')][_0xf0fa('0x2e')]};});_0x1279cf[_0xf0fa('0x2f')]=_[_0xf0fa('0x30')](_0x9ad0e3,_0xf0fa('0x28'));_0x1279cf[_0xf0fa('0x31')]=_['keys'](_0x57b8e9['query']);_0x1279cf[_0xf0fa('0x32')]=_[_0xf0fa('0x33')](_0x1279cf['model'],_0x1279cf[_0xf0fa('0x31')]);_0x409a8c['attributes']=_['intersection'](_0x1279cf['model'],qs[_0xf0fa('0x34')](_0x57b8e9['query'][_0xf0fa('0x34')]));_0x409a8c[_0xf0fa('0x35')]=_0x409a8c[_0xf0fa('0x35')][_0xf0fa('0x36')]?_0x409a8c[_0xf0fa('0x35')]:_0x1279cf[_0xf0fa('0x2f')];if(!_0x57b8e9[_0xf0fa('0x31')][_0xf0fa('0x37')]('nolimit')){_0x409a8c[_0xf0fa('0x20')]=qs[_0xf0fa('0x20')](_0x57b8e9[_0xf0fa('0x31')]['limit']);_0x409a8c[_0xf0fa('0x1d')]=qs[_0xf0fa('0x1d')](_0x57b8e9[_0xf0fa('0x31')][_0xf0fa('0x1d')]);}_0x409a8c['order']=qs['sort'](_0x57b8e9[_0xf0fa('0x31')][_0xf0fa('0x38')]);_0x409a8c[_0xf0fa('0x39')]=qs[_0xf0fa('0x32')](_[_0xf0fa('0x3a')](_0x57b8e9['query'],_0x1279cf['filters']),_0x9ad0e3);if(_0x57b8e9['query']['filter']){_0x409a8c[_0xf0fa('0x39')]=_[_0xf0fa('0x3b')](_0x409a8c['where'],{'$or':_['map'](_0x9ad0e3,function(_0xdada45){if(_0xdada45[_0xf0fa('0x2d')]!==_0xf0fa('0x3c')){var _0xcd5ae5={};_0xcd5ae5[_0xdada45[_0xf0fa('0x28')]]={'$like':'%'+_0x57b8e9[_0xf0fa('0x31')][_0xf0fa('0x3d')]+'%'};return _0xcd5ae5;}})});}_0x409a8c=_['merge']({},_0x409a8c,_0x57b8e9['options']);var _0x344bb0={'where':_0x409a8c[_0xf0fa('0x39')]};return db[_0xf0fa('0x2b')][_0xf0fa('0x1f')](_0x344bb0)[_0xf0fa('0x26')](function(_0x1d0129){_0x5a4fd3['count']=_0x1d0129;if(_0x57b8e9[_0xf0fa('0x31')]['includeAll']){_0x409a8c[_0xf0fa('0x3e')]=[{'all':!![]}];}return db[_0xf0fa('0x2b')][_0xf0fa('0x3f')](_0x409a8c);})[_0xf0fa('0x26')](function(_0x14bee8){_0x5a4fd3[_0xf0fa('0x40')]=_0x14bee8;return _0x5a4fd3;})[_0xf0fa('0x26')](respondWithFilteredResult(_0x4058d6,_0x409a8c))[_0xf0fa('0x41')](handleError(_0x4058d6,null));};exports[_0xf0fa('0x42')]=function(_0x57fbc5,_0x51ea79){var _0x52221a={'raw':!![],'where':{'id':_0x57fbc5[_0xf0fa('0x43')]['id']}},_0x304bae={};_0x304bae['model']=_[_0xf0fa('0x44')](db[_0xf0fa('0x2b')][_0xf0fa('0x2c')]);_0x304bae[_0xf0fa('0x31')]=_['keys'](_0x57fbc5[_0xf0fa('0x31')]);_0x304bae[_0xf0fa('0x32')]=_[_0xf0fa('0x33')](_0x304bae[_0xf0fa('0x2f')],_0x304bae[_0xf0fa('0x31')]);_0x52221a[_0xf0fa('0x35')]=_[_0xf0fa('0x33')](_0x304bae[_0xf0fa('0x2f')],qs[_0xf0fa('0x34')](_0x57fbc5['query'][_0xf0fa('0x34')]));_0x52221a[_0xf0fa('0x35')]=_0x52221a[_0xf0fa('0x35')][_0xf0fa('0x36')]?_0x52221a[_0xf0fa('0x35')]:_0x304bae[_0xf0fa('0x2f')];if(_0x57fbc5['query'][_0xf0fa('0x45')]){_0x52221a[_0xf0fa('0x3e')]=[{'all':!![]}];}_0x52221a=_['merge']({},_0x52221a,_0x57fbc5[_0xf0fa('0x46')]);return db[_0xf0fa('0x2b')][_0xf0fa('0x47')](_0x52221a)[_0xf0fa('0x26')](handleEntityNotFound(_0x51ea79,null))[_0xf0fa('0x26')](respondWithResult(_0x51ea79,null))[_0xf0fa('0x41')](handleError(_0x51ea79,null));};exports[_0xf0fa('0x48')]=function(_0x32bf89,_0x35272e){return db['Cdr'][_0xf0fa('0x48')](_0x32bf89['body'],{})[_0xf0fa('0x26')](respondWithResult(_0x35272e,0xc9))[_0xf0fa('0x41')](handleError(_0x35272e,null));};exports[_0xf0fa('0x25')]=function(_0x569ba9,_0x324765){if(_0x569ba9[_0xf0fa('0x49')]['id']){delete _0x569ba9[_0xf0fa('0x49')]['id'];}return db[_0xf0fa('0x2b')][_0xf0fa('0x47')]({'where':{'id':_0x569ba9['params']['id']}})[_0xf0fa('0x26')](handleEntityNotFound(_0x324765,null))['then'](saveUpdates(_0x569ba9[_0xf0fa('0x49')],null))[_0xf0fa('0x26')](respondWithResult(_0x324765,null))[_0xf0fa('0x41')](handleError(_0x324765,null));};exports[_0xf0fa('0x4a')]=function(_0x8090a7,_0x5dd098){return db[_0xf0fa('0x2b')][_0xf0fa('0x47')]({'where':{'id':_0x8090a7[_0xf0fa('0x43')]['id']}})[_0xf0fa('0x26')](handleEntityNotFound(_0x5dd098,null))[_0xf0fa('0x26')](removeEntity(_0x5dd098,null))[_0xf0fa('0x41')](handleError(_0x5dd098,null));};exports['describe']=function(_0x44a3bf,_0x5e1e8e){return db['Cdr']['describe']()[_0xf0fa('0x26')](respondWithResult(_0x5e1e8e,null))[_0xf0fa('0x41')](handleError(_0x5e1e8e,null));};
\ No newline at end of file
index 537af5f..2122ba9 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(_0x48139c,_0x393763){var _0x5b6efc=function(_0x499cf5){while(--_0x499cf5){_0x48139c['push'](_0x48139c['shift']());}};_0x5b6efc(++_0x393763);}(_0x7a54,0x106));var _0x47a5=function(_0x2fbe1d,_0x1f2737){_0x2fbe1d=_0x2fbe1d-0x0;var _0x421dc5=_0x7a54[_0x2fbe1d];return _0x421dc5;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x4a9094,_0xd146a3){var _0x14686f=function(_0x24a4db){while(--_0x24a4db){_0x4a9094['push'](_0x4a9094['shift']());}};_0x14686f(++_0xd146a3);}(_0x7a54,0x106));var _0x47a5=function(_0x2cfb74,_0x361c5d){_0x2cfb74=_0x2cfb74-0x0;var _0x2d30e1=_0x7a54[_0x2cfb74];return _0x2d30e1;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
index a0182f1..79d1ca1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25bc=['Cdr,\x20%s,\x20%s','debug','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x2df537,_0x1359a8){var _0x288850=function(_0x2468a1){while(--_0x2468a1){_0x2df537['push'](_0x2df537['shift']());}};_0x288850(++_0x1359a8);}(_0x25bc,0x87));var _0xc25b=function(_0x184662,_0x335dec){_0x184662=_0x184662-0x0;var _0x101bd2=_0x25bc[_0x184662];return _0x101bd2;};'use strict';var _=require(_0xc25b('0x0'));var util=require(_0xc25b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc25b('0x2'));var db=require(_0xc25b('0x3'))['db'];var utils=require(_0xc25b('0x4'));var logger=require(_0xc25b('0x5'))(_0xc25b('0x6'));var config=require(_0xc25b('0x7'));var jayson=require(_0xc25b('0x8'));var client=jayson[_0xc25b('0x9')][_0xc25b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3866b8,_0x5ec4b1,_0x16e840){return new BPromise(function(_0x39ee6e,_0x1daebd){return client['request'](_0x3866b8,_0x16e840)[_0xc25b('0xb')](function(_0x595735){logger['info'](_0xc25b('0xc'),_0x5ec4b1,'request\x20sent');logger[_0xc25b('0xd')](_0xc25b('0xe'),_0x5ec4b1,_0xc25b('0xf'),JSON[_0xc25b('0x10')](_0x595735));if(_0x595735[_0xc25b('0x11')]){if(_0x595735[_0xc25b('0x11')][_0xc25b('0x12')]===0x1f4){logger['error'](_0xc25b('0xc'),_0x5ec4b1,_0x595735[_0xc25b('0x11')][_0xc25b('0x13')]);return _0x1daebd(_0x595735[_0xc25b('0x11')][_0xc25b('0x13')]);}logger['error'](_0xc25b('0xc'),_0x5ec4b1,_0x595735['error'][_0xc25b('0x13')]);return _0x39ee6e(_0x595735['error']['message']);}else{logger[_0xc25b('0x14')]('Cdr,\x20%s,\x20%s',_0x5ec4b1,_0xc25b('0xf'));_0x39ee6e(_0x595735['result'][_0xc25b('0x13')]);}})['catch'](function(_0x228d4c){logger['error']('Cdr,\x20%s,\x20%s',_0x5ec4b1,_0x228d4c);_0x1daebd(_0x228d4c);});});}
\ No newline at end of file
+var _0x4db1=['info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then'];(function(_0x3a7ab8,_0x35dbf3){var _0x2734fa=function(_0x14b78e){while(--_0x14b78e){_0x3a7ab8['push'](_0x3a7ab8['shift']());}};_0x2734fa(++_0x35dbf3);}(_0x4db1,0x1b3));var _0x14db=function(_0x2e7f96,_0x2ffe43){_0x2e7f96=_0x2e7f96-0x0;var _0x315277=_0x4db1[_0x2e7f96];return _0x315277;};'use strict';var _=require(_0x14db('0x0'));var util=require(_0x14db('0x1'));var moment=require(_0x14db('0x2'));var BPromise=require(_0x14db('0x3'));var rs=require(_0x14db('0x4'));var fs=require('fs');var Redis=require(_0x14db('0x5'));var db=require(_0x14db('0x6'))['db'];var utils=require(_0x14db('0x7'));var logger=require(_0x14db('0x8'))(_0x14db('0x9'));var config=require(_0x14db('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x14db('0xb')][_0x14db('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1ded4e,_0x17f355,_0x108441){return new BPromise(function(_0xef1f47,_0x79c437){return client[_0x14db('0xd')](_0x1ded4e,_0x108441)[_0x14db('0xe')](function(_0x249679){logger[_0x14db('0xf')](_0x14db('0x10'),_0x17f355,_0x14db('0x11'));logger[_0x14db('0x12')](_0x14db('0x13'),_0x17f355,'request\x20sent',JSON[_0x14db('0x14')](_0x249679));if(_0x249679[_0x14db('0x15')]){if(_0x249679[_0x14db('0x15')]['code']===0x1f4){logger['error'](_0x14db('0x10'),_0x17f355,_0x249679[_0x14db('0x15')][_0x14db('0x16')]);return _0x79c437(_0x249679['error'][_0x14db('0x16')]);}logger[_0x14db('0x15')](_0x14db('0x10'),_0x17f355,_0x249679[_0x14db('0x15')]['message']);return _0xef1f47(_0x249679[_0x14db('0x15')][_0x14db('0x16')]);}else{logger['info'](_0x14db('0x10'),_0x17f355,_0x14db('0x11'));_0xef1f47(_0x249679[_0x14db('0x17')]['message']);}})[_0x14db('0x18')](function(_0x2aec32){logger[_0x14db('0x15')](_0x14db('0x10'),_0x17f355,_0x2aec32);_0x79c437(_0x2aec32);});});}
\ No newline at end of file
index 0a194c1..538a5be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','index','/describe','show','post'];(function(_0x4b5813,_0x5769de){var _0x423465=function(_0x18071f){while(--_0x18071f){_0x4b5813['push'](_0x4b5813['shift']());}};_0x423465(++_0x5769de);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
+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(_0x47fa10,_0x39b01c){var _0x204f30=function(_0x4f87b0){while(--_0x4f87b0){_0x47fa10['push'](_0x47fa10['shift']());}};_0x204f30(++_0x39b01c);}(_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('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index 7e7bcac..2dd0862 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48a7=['TEXT','sequelize','exports','INTEGER','STRING'];(function(_0x366855,_0xd0dd9a){var _0x4e251a=function(_0x5448d2){while(--_0x5448d2){_0x366855['push'](_0x366855['shift']());}};_0x4e251a(++_0xd0dd9a);}(_0x48a7,0xe7));var _0x748a=function(_0x3952f8,_0x239e56){_0x3952f8=_0x3952f8-0x0;var _0x38e19c=_0x48a7[_0x3952f8];return _0x38e19c;};'use strict';var Sequelize=require(_0x748a('0x0'));module[_0x748a('0x1')]={'priority':{'type':Sequelize[_0x748a('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x748a('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x748a('0x4')]()},'description':{'type':Sequelize[_0x748a('0x3')]},'interval':{'type':Sequelize[_0x748a('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x2944=['exports','INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x19677a,_0x12aace){var _0x1669be=function(_0x405007){while(--_0x405007){_0x19677a['push'](_0x19677a['shift']());}};_0x1669be(++_0x12aace);}(_0x2944,0xfb));var _0x4294=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2944[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x4294('0x0'));module[_0x4294('0x1')]={'priority':{'type':Sequelize[_0x4294('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x4294('0x3')],'allowNull':![],'defaultValue':_0x4294('0x4')},'appdata':{'type':Sequelize[_0x4294('0x5')]()},'description':{'type':Sequelize[_0x4294('0x3')]},'interval':{'type':Sequelize[_0x4294('0x3')],'defaultValue':_0x4294('0x6')}};
\ No newline at end of file
index 73dedb7..5cb218c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd71d=['fields','length','includeAll','merge','find','body','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','name','show','keys','ChatApplication','rawAttributes','query','filters','intersection','model','attributes'];(function(_0x19fc54,_0xcfeb5d){var _0x515a5f=function(_0x194360){while(--_0x194360){_0x19fc54['push'](_0x19fc54['shift']());}};_0x515a5f(++_0xcfeb5d);}(_0xd71d,0x1a5));var _0xdd71=function(_0x2080a3,_0x48acfa){_0x2080a3=_0x2080a3-0x0;var _0x8d7d17=_0xd71d[_0x2080a3];return _0x8d7d17;};'use strict';var emlformat=require(_0xdd71('0x0'));var rimraf=require(_0xdd71('0x1'));var zipdir=require(_0xdd71('0x2'));var jsonpatch=require(_0xdd71('0x3'));var rp=require(_0xdd71('0x4'));var moment=require('moment');var BPromise=require(_0xdd71('0x5'));var Mustache=require(_0xdd71('0x6'));var util=require(_0xdd71('0x7'));var path=require('path');var sox=require(_0xdd71('0x8'));var csv=require(_0xdd71('0x9'));var ejs=require(_0xdd71('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdd71('0xb'));var squel=require(_0xdd71('0xc'));var crypto=require(_0xdd71('0xd'));var jsforce=require(_0xdd71('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xdd71('0x9'));var querystring=require(_0xdd71('0xf'));var Papa=require(_0xdd71('0x10'));var Redis=require(_0xdd71('0x11'));var authService=require(_0xdd71('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xdd71('0x13'));var hardwareService=require(_0xdd71('0x14'));var logger=require(_0xdd71('0x15'))(_0xdd71('0x16'));var utils=require('../../config/utils');var config=require(_0xdd71('0x17'));var licenseUtil=require(_0xdd71('0x18'));var db=require(_0xdd71('0x19'))['db'];function respondWithStatusCode(_0x29f12a,_0x21ebd3){_0x21ebd3=_0x21ebd3||0xcc;return function(_0x2e5393){if(_0x2e5393){return _0x29f12a['sendStatus'](_0x21ebd3);}return _0x29f12a[_0xdd71('0x1a')](_0x21ebd3)[_0xdd71('0x1b')]();};}function respondWithResult(_0x36a531,_0x3ede09){_0x3ede09=_0x3ede09||0xc8;return function(_0x4b1f2d){if(_0x4b1f2d){return _0x36a531[_0xdd71('0x1a')](_0x3ede09)[_0xdd71('0x1c')](_0x4b1f2d);}};}function respondWithFilteredResult(_0x654fda,_0x364dc9){return function(_0x27c527){if(_0x27c527){var _0x42b476=typeof _0x364dc9[_0xdd71('0x1d')]===_0xdd71('0x1e')&&typeof _0x364dc9[_0xdd71('0x1f')]===_0xdd71('0x1e');var _0x11accc=_0x27c527['count'];var _0x4c3601=_0x42b476?0x0:_0x364dc9[_0xdd71('0x1d')];var _0x689edf=_0x42b476?_0x27c527[_0xdd71('0x20')]:_0x364dc9[_0xdd71('0x1d')]+_0x364dc9[_0xdd71('0x1f')];var _0x3b4c67;if(_0x689edf>=_0x11accc){_0x689edf=_0x11accc;_0x3b4c67=0xc8;}else{_0x3b4c67=0xce;}_0x654fda['status'](_0x3b4c67);return _0x654fda[_0xdd71('0x21')](_0xdd71('0x22'),_0x4c3601+'-'+_0x689edf+'/'+_0x11accc)[_0xdd71('0x1c')](_0x27c527);}return null;};}function patchUpdates(_0x3635fc){return function(_0x3905d8){try{jsonpatch[_0xdd71('0x23')](_0x3905d8,_0x3635fc,!![]);}catch(_0x928bb8){return BPromise[_0xdd71('0x24')](_0x928bb8);}return _0x3905d8[_0xdd71('0x25')]();};}function saveUpdates(_0x3e1faa,_0x13f10e){return function(_0x5a9960){if(_0x5a9960){return _0x5a9960['update'](_0x3e1faa)[_0xdd71('0x26')](function(_0x10d988){return _0x10d988;});}return null;};}function removeEntity(_0x50ba0a,_0x10ebb0){return function(_0x52d386){if(_0x52d386){return _0x52d386[_0xdd71('0x27')]()['then'](function(){_0x50ba0a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ae9b3,_0x168a14){return function(_0x5bb250){if(!_0x5bb250){_0x4ae9b3[_0xdd71('0x28')](0x194);}return _0x5bb250;};}function handleError(_0x37846b,_0xd8739d){_0xd8739d=_0xd8739d||0x1f4;return function(_0x11850a){logger['error'](_0x11850a['stack']);if(_0x11850a[_0xdd71('0x29')]){delete _0x11850a[_0xdd71('0x29')];}_0x37846b[_0xdd71('0x1a')](_0xd8739d)['send'](_0x11850a);};}exports[_0xdd71('0x2a')]=function(_0x3a57fc,_0x38093d){var _0x5f1d12={'raw':!![],'where':{'id':_0x3a57fc['params']['id']}},_0x9eb773={};_0x9eb773['model']=_[_0xdd71('0x2b')](db[_0xdd71('0x2c')][_0xdd71('0x2d')]);_0x9eb773[_0xdd71('0x2e')]=_[_0xdd71('0x2b')](_0x3a57fc[_0xdd71('0x2e')]);_0x9eb773[_0xdd71('0x2f')]=_[_0xdd71('0x30')](_0x9eb773[_0xdd71('0x31')],_0x9eb773['query']);_0x5f1d12[_0xdd71('0x32')]=_[_0xdd71('0x30')](_0x9eb773[_0xdd71('0x31')],qs[_0xdd71('0x33')](_0x3a57fc['query'][_0xdd71('0x33')]));_0x5f1d12['attributes']=_0x5f1d12['attributes'][_0xdd71('0x34')]?_0x5f1d12[_0xdd71('0x32')]:_0x9eb773[_0xdd71('0x31')];if(_0x3a57fc['query'][_0xdd71('0x35')]){_0x5f1d12['include']=[{'all':!![]}];}_0x5f1d12=_[_0xdd71('0x36')]({},_0x5f1d12,_0x3a57fc['options']);return db['ChatApplication'][_0xdd71('0x37')](_0x5f1d12)[_0xdd71('0x26')](handleEntityNotFound(_0x38093d,null))[_0xdd71('0x26')](respondWithResult(_0x38093d,null))['catch'](handleError(_0x38093d,null));};exports['update']=function(_0x1ce984,_0x5a4668){if(_0x1ce984['body']['id']){delete _0x1ce984[_0xdd71('0x38')]['id'];}return db['ChatApplication']['find']({'where':{'id':_0x1ce984[_0xdd71('0x39')]['id']}})[_0xdd71('0x26')](handleEntityNotFound(_0x5a4668,null))[_0xdd71('0x26')](saveUpdates(_0x1ce984[_0xdd71('0x38')],null))[_0xdd71('0x26')](respondWithResult(_0x5a4668,null))[_0xdd71('0x3a')](handleError(_0x5a4668,null));};exports[_0xdd71('0x27')]=function(_0x45ec8d,_0x4650b6){return db[_0xdd71('0x2c')][_0xdd71('0x37')]({'where':{'id':_0x45ec8d[_0xdd71('0x39')]['id']}})[_0xdd71('0x26')](handleEntityNotFound(_0x4650b6,null))[_0xdd71('0x26')](removeEntity(_0x4650b6,null))[_0xdd71('0x3a')](handleError(_0x4650b6,null));};
\ No newline at end of file
+var _0x8482=['length','find','catch','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','show','params','ChatApplication','rawAttributes','query','keys','filters','intersection','model','attributes','fields'];(function(_0x1ab94e,_0x49774e){var _0x30dd9d=function(_0x2b1085){while(--_0x2b1085){_0x1ab94e['push'](_0x1ab94e['shift']());}};_0x30dd9d(++_0x49774e);}(_0x8482,0x14e));var _0x2848=function(_0x2026f3,_0x4f9f7a){_0x2026f3=_0x2026f3-0x0;var _0x427140=_0x8482[_0x2026f3];return _0x427140;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2848('0x0'));var zipdir=require(_0x2848('0x1'));var jsonpatch=require(_0x2848('0x2'));var rp=require(_0x2848('0x3'));var moment=require(_0x2848('0x4'));var BPromise=require(_0x2848('0x5'));var Mustache=require(_0x2848('0x6'));var util=require(_0x2848('0x7'));var path=require(_0x2848('0x8'));var sox=require(_0x2848('0x9'));var csv=require('to-csv');var ejs=require(_0x2848('0xa'));var fs=require('fs');var fs_extra=require(_0x2848('0xb'));var _=require('lodash');var squel=require(_0x2848('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2848('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2848('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2848('0xf'));var as=require(_0x2848('0x10'));var hardwareService=require(_0x2848('0x11'));var logger=require(_0x2848('0x12'))(_0x2848('0x13'));var utils=require(_0x2848('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2848('0x15'))['db'];function respondWithStatusCode(_0x465380,_0xf0658d){_0xf0658d=_0xf0658d||0xcc;return function(_0x566a0b){if(_0x566a0b){return _0x465380[_0x2848('0x16')](_0xf0658d);}return _0x465380[_0x2848('0x17')](_0xf0658d)[_0x2848('0x18')]();};}function respondWithResult(_0x5e64c7,_0xbddd26){_0xbddd26=_0xbddd26||0xc8;return function(_0x501a0e){if(_0x501a0e){return _0x5e64c7[_0x2848('0x17')](_0xbddd26)['json'](_0x501a0e);}};}function respondWithFilteredResult(_0x1002d2,_0xeba65b){return function(_0x6600c5){if(_0x6600c5){var _0x59f39a=typeof _0xeba65b['offset']==='undefined'&&typeof _0xeba65b['limit']===_0x2848('0x19');var _0x1acd41=_0x6600c5[_0x2848('0x1a')];var _0x46755c=_0x59f39a?0x0:_0xeba65b[_0x2848('0x1b')];var _0x3b4eeb=_0x59f39a?_0x6600c5[_0x2848('0x1a')]:_0xeba65b[_0x2848('0x1b')]+_0xeba65b[_0x2848('0x1c')];var _0x193ffa;if(_0x3b4eeb>=_0x1acd41){_0x3b4eeb=_0x1acd41;_0x193ffa=0xc8;}else{_0x193ffa=0xce;}_0x1002d2[_0x2848('0x17')](_0x193ffa);return _0x1002d2['set'](_0x2848('0x1d'),_0x46755c+'-'+_0x3b4eeb+'/'+_0x1acd41)[_0x2848('0x1e')](_0x6600c5);}return null;};}function patchUpdates(_0x1a1f79){return function(_0x5748ae){try{jsonpatch[_0x2848('0x1f')](_0x5748ae,_0x1a1f79,!![]);}catch(_0x1f67a7){return BPromise[_0x2848('0x20')](_0x1f67a7);}return _0x5748ae[_0x2848('0x21')]();};}function saveUpdates(_0x3b99a2,_0x555279){return function(_0x3dd7db){if(_0x3dd7db){return _0x3dd7db[_0x2848('0x22')](_0x3b99a2)[_0x2848('0x23')](function(_0x436709){return _0x436709;});}return null;};}function removeEntity(_0xea4128,_0x40f510){return function(_0x5f38e2){if(_0x5f38e2){return _0x5f38e2[_0x2848('0x24')]()['then'](function(){_0xea4128[_0x2848('0x17')](0xcc)[_0x2848('0x18')]();});}};}function handleEntityNotFound(_0x2d936a,_0x4517d3){return function(_0x51c924){if(!_0x51c924){_0x2d936a[_0x2848('0x16')](0x194);}return _0x51c924;};}function handleError(_0xecd4f4,_0xdba069){_0xdba069=_0xdba069||0x1f4;return function(_0x2dc32e){logger[_0x2848('0x25')](_0x2dc32e[_0x2848('0x26')]);if(_0x2dc32e[_0x2848('0x27')]){delete _0x2dc32e['name'];}_0xecd4f4['status'](_0xdba069)['send'](_0x2dc32e);};}exports[_0x2848('0x28')]=function(_0x18df37,_0x3b9c0d){var _0x3f915b={'raw':!![],'where':{'id':_0x18df37[_0x2848('0x29')]['id']}},_0x189701={};_0x189701['model']=_['keys'](db[_0x2848('0x2a')][_0x2848('0x2b')]);_0x189701[_0x2848('0x2c')]=_[_0x2848('0x2d')](_0x18df37[_0x2848('0x2c')]);_0x189701[_0x2848('0x2e')]=_[_0x2848('0x2f')](_0x189701[_0x2848('0x30')],_0x189701[_0x2848('0x2c')]);_0x3f915b[_0x2848('0x31')]=_[_0x2848('0x2f')](_0x189701['model'],qs[_0x2848('0x32')](_0x18df37[_0x2848('0x2c')][_0x2848('0x32')]));_0x3f915b[_0x2848('0x31')]=_0x3f915b['attributes'][_0x2848('0x33')]?_0x3f915b[_0x2848('0x31')]:_0x189701[_0x2848('0x30')];if(_0x18df37[_0x2848('0x2c')]['includeAll']){_0x3f915b['include']=[{'all':!![]}];}_0x3f915b=_['merge']({},_0x3f915b,_0x18df37['options']);return db[_0x2848('0x2a')][_0x2848('0x34')](_0x3f915b)['then'](handleEntityNotFound(_0x3b9c0d,null))['then'](respondWithResult(_0x3b9c0d,null))[_0x2848('0x35')](handleError(_0x3b9c0d,null));};exports[_0x2848('0x22')]=function(_0x31a27d,_0x274b5a){if(_0x31a27d[_0x2848('0x36')]['id']){delete _0x31a27d['body']['id'];}return db[_0x2848('0x2a')][_0x2848('0x34')]({'where':{'id':_0x31a27d[_0x2848('0x29')]['id']}})['then'](handleEntityNotFound(_0x274b5a,null))[_0x2848('0x23')](saveUpdates(_0x31a27d[_0x2848('0x36')],null))[_0x2848('0x23')](respondWithResult(_0x274b5a,null))[_0x2848('0x35')](handleError(_0x274b5a,null));};exports[_0x2848('0x24')]=function(_0x510a53,_0x5578fe){return db[_0x2848('0x2a')][_0x2848('0x34')]({'where':{'id':_0x510a53[_0x2848('0x29')]['id']}})[_0x2848('0x23')](handleEntityNotFound(_0x5578fe,null))[_0x2848('0x23')](removeEntity(_0x5578fe,null))[_0x2848('0x35')](handleError(_0x5578fe,null));};
\ No newline at end of file
index e58d023..27a7bb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x189e=['exports','define','chat_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./chatApplication.attributes'];(function(_0x50d3ca,_0x5ec74c){var _0x5a7b8f=function(_0x4121f5){while(--_0x4121f5){_0x50d3ca['push'](_0x50d3ca['shift']());}};_0x5a7b8f(++_0x5ec74c);}(_0x189e,0x14a));var _0xe189=function(_0x2f8b05,_0x425a73){_0x2f8b05=_0x2f8b05-0x0;var _0x3143c4=_0x189e[_0x2f8b05];return _0x3143c4;};'use strict';var _=require('lodash');var util=require(_0xe189('0x0'));var logger=require(_0xe189('0x1'))(_0xe189('0x2'));var moment=require(_0xe189('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe189('0x4'));var rimraf=require(_0xe189('0x5'));var config=require(_0xe189('0x6'));var attributes=require(_0xe189('0x7'));module[_0xe189('0x8')]=function(_0x28d165,_0x245ab9){return _0x28d165[_0xe189('0x9')]('ChatApplication',attributes,{'tableName':_0xe189('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe189('0xb'),'collate':_0xe189('0xc')});};
\ No newline at end of file
+var _0x3da6=['api','bluebird','path','rimraf','exports','ChatApplication','chat_applications','utf8mb4','lodash','../../config/logger'];(function(_0x263cfa,_0x443531){var _0x14b8ec=function(_0x4fe59a){while(--_0x4fe59a){_0x263cfa['push'](_0x263cfa['shift']());}};_0x14b8ec(++_0x443531);}(_0x3da6,0x17a));var _0x63da=function(_0x17ce99,_0x3147c8){_0x17ce99=_0x17ce99-0x0;var _0x1f9bca=_0x3da6[_0x17ce99];return _0x1f9bca;};'use strict';var _=require(_0x63da('0x0'));var util=require('util');var logger=require(_0x63da('0x1'))(_0x63da('0x2'));var moment=require('moment');var BPromise=require(_0x63da('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x63da('0x4'));var rimraf=require(_0x63da('0x5'));var config=require('../../config/environment');var attributes=require('./chatApplication.attributes');module[_0x63da('0x6')]=function(_0x390e89,_0xfe4d0){return _0x390e89['define'](_0x63da('0x7'),attributes,{'tableName':_0x63da('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x63da('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 99bf2ed..15a82c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62e=['http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','ChatApplication,\x20%s,\x20%s,\x20%s','error','message','result','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x594d0f,_0x4a0407){var _0x501577=function(_0x3b2543){while(--_0x3b2543){_0x594d0f['push'](_0x594d0f['shift']());}};_0x501577(++_0x4a0407);}(_0xb62e,0x1d6));var _0xeb62=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xb62e[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xeb62('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xeb62('0x1'));var rs=require(_0xeb62('0x2'));var fs=require('fs');var Redis=require(_0xeb62('0x3'));var db=require(_0xeb62('0x4'))['db'];var utils=require(_0xeb62('0x5'));var logger=require(_0xeb62('0x6'))(_0xeb62('0x7'));var config=require('../../config/environment');var jayson=require(_0xeb62('0x8'));var client=jayson[_0xeb62('0x9')][_0xeb62('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x20530c,_0x5966d7,_0x26accd){return new BPromise(function(_0x54c2d5,_0x1e96fa){return client[_0xeb62('0xb')](_0x20530c,_0x26accd)[_0xeb62('0xc')](function(_0x5251ba){logger[_0xeb62('0xd')](_0xeb62('0xe'),_0x5966d7,_0xeb62('0xf'));logger['debug'](_0xeb62('0x10'),_0x5966d7,'request\x20sent',JSON['stringify'](_0x5251ba));if(_0x5251ba[_0xeb62('0x11')]){if(_0x5251ba[_0xeb62('0x11')]['code']===0x1f4){logger[_0xeb62('0x11')](_0xeb62('0xe'),_0x5966d7,_0x5251ba[_0xeb62('0x11')][_0xeb62('0x12')]);return _0x1e96fa(_0x5251ba[_0xeb62('0x11')][_0xeb62('0x12')]);}logger['error']('ChatApplication,\x20%s,\x20%s',_0x5966d7,_0x5251ba[_0xeb62('0x11')][_0xeb62('0x12')]);return _0x54c2d5(_0x5251ba['error'][_0xeb62('0x12')]);}else{logger['info'](_0xeb62('0xe'),_0x5966d7,_0xeb62('0xf'));_0x54c2d5(_0x5251ba[_0xeb62('0x13')]['message']);}})['catch'](function(_0x3fae9c){logger['error'](_0xeb62('0xe'),_0x5966d7,_0x3fae9c);_0x1e96fa(_0x3fae9c);});});}
\ No newline at end of file
+var _0x1527=['http','request','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x1527,0x18b));var _0x7152=function(_0x4aa838,_0x4aa14f){_0x4aa838=_0x4aa838-0x0;var _0x3abff0=_0x1527[_0x4aa838];return _0x3abff0;};'use strict';var _=require(_0x7152('0x0'));var util=require(_0x7152('0x1'));var moment=require(_0x7152('0x2'));var BPromise=require(_0x7152('0x3'));var rs=require(_0x7152('0x4'));var fs=require('fs');var Redis=require(_0x7152('0x5'));var db=require(_0x7152('0x6'))['db'];var utils=require(_0x7152('0x7'));var logger=require(_0x7152('0x8'))(_0x7152('0x9'));var config=require(_0x7152('0xa'));var jayson=require(_0x7152('0xb'));var client=jayson[_0x7152('0xc')][_0x7152('0xd')]({'port':0x232a});function respondWithRpcPromise(_0xa46f57,_0x49cc6b,_0xa87bbf){return new BPromise(function(_0x281761,_0x310677){return client[_0x7152('0xe')](_0xa46f57,_0xa87bbf)['then'](function(_0x3616b0){logger[_0x7152('0xf')](_0x7152('0x10'),_0x49cc6b,_0x7152('0x11'));logger[_0x7152('0x12')](_0x7152('0x13'),_0x49cc6b,_0x7152('0x11'),JSON['stringify'](_0x3616b0));if(_0x3616b0[_0x7152('0x14')]){if(_0x3616b0[_0x7152('0x14')]['code']===0x1f4){logger[_0x7152('0x14')](_0x7152('0x10'),_0x49cc6b,_0x3616b0['error']['message']);return _0x310677(_0x3616b0[_0x7152('0x14')][_0x7152('0x15')]);}logger[_0x7152('0x14')](_0x7152('0x10'),_0x49cc6b,_0x3616b0['error'][_0x7152('0x15')]);return _0x281761(_0x3616b0[_0x7152('0x14')][_0x7152('0x15')]);}else{logger[_0x7152('0xf')](_0x7152('0x10'),_0x49cc6b,'request\x20sent');_0x281761(_0x3616b0[_0x7152('0x16')]['message']);}})[_0x7152('0x17')](function(_0x5e886d){logger[_0x7152('0x14')](_0x7152('0x10'),_0x49cc6b,_0x5e886d);_0x310677(_0x5e886d);});});}
\ No newline at end of file
index 6db2f92..fea6fff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f37=['Router','./chatApplication.controller','/:id','isAuthenticated','show','put','update','destroy','multer'];(function(_0x1f00f0,_0x40bb93){var _0x291a2f=function(_0x2d5414){while(--_0x2d5414){_0x1f00f0['push'](_0x1f00f0['shift']());}};_0x291a2f(++_0x40bb93);}(_0x0f37,0x116));var _0x70f3=function(_0xc051b2,_0x3d6d9d){_0xc051b2=_0xc051b2-0x0;var _0x599dc2=_0x0f37[_0xc051b2];return _0x599dc2;};'use strict';var multer=require(_0x70f3('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x70f3('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x70f3('0x2'));router['get'](_0x70f3('0x3'),auth[_0x70f3('0x4')](),controller[_0x70f3('0x5')]);router[_0x70f3('0x6')](_0x70f3('0x3'),auth[_0x70f3('0x4')](),controller[_0x70f3('0x7')]);router['delete'](_0x70f3('0x3'),auth[_0x70f3('0x4')](),controller[_0x70f3('0x8')]);module['exports']=router;
\ No newline at end of file
+var _0x4670=['destroy','exports','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','isAuthenticated','show','put','/:id'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x4670,0x13a));var _0x0467=function(_0x448332,_0xab3899){_0x448332=_0x448332-0x0;var _0x525ba3=_0x4670[_0x448332];return _0x525ba3;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x0467('0x0'));var express=require(_0x0467('0x1'));var router=express['Router']();var fs_extra=require(_0x0467('0x2'));var auth=require(_0x0467('0x3'));var interaction=require(_0x0467('0x4'));var config=require(_0x0467('0x5'));var controller=require(_0x0467('0x6'));router['get']('/:id',auth[_0x0467('0x7')](),controller[_0x0467('0x8')]);router[_0x0467('0x9')](_0x0467('0xa'),auth[_0x0467('0x7')](),controller['update']);router['delete']('/:id',auth[_0x0467('0x7')](),controller[_0x0467('0xb')]);module[_0x0467('0xc')]=router;
\ No newline at end of file
index 59a3546..16c9c5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fd6=['BOOLEAN','sequelize','STRING'];(function(_0x5e0833,_0x261c36){var _0x536c31=function(_0xf019b0){while(--_0xf019b0){_0x5e0833['push'](_0x5e0833['shift']());}};_0x536c31(++_0x261c36);}(_0x7fd6,0x157));var _0x67fd=function(_0x11588e,_0x27fb16){_0x11588e=_0x11588e-0x0;var _0x3c2c3b=_0x7fd6[_0x11588e];return _0x3c2c3b;};'use strict';var Sequelize=require(_0x67fd('0x0'));module['exports']={'name':{'type':Sequelize[_0x67fd('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x67fd('0x1')]},'write':{'type':Sequelize[_0x67fd('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x3ca6=['exports','STRING','BOOLEAN'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x3ca6,0xe1));var _0x63ca=function(_0x447df3,_0x4ea6b8){_0x447df3=_0x447df3-0x0;var _0x118cb6=_0x3ca6[_0x447df3];return _0x118cb6;};'use strict';var Sequelize=require('sequelize');module[_0x63ca('0x0')]={'name':{'type':Sequelize[_0x63ca('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x63ca('0x1')]},'write':{'type':Sequelize[_0x63ca('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 73aaba4..4d66580 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf23b=['sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','include','ChatGroup','findAll','rows','catch','params','keys','includeAll','find','create','body','destroy','describe','getUnread','addMembers','omit','ids','getMembers','findOne','User','removeMembers','addMessage','ChatInternalMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','getMessages','nolimit','zip-dir','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register'];(function(_0x36d831,_0x6c602a){var _0x5bc013=function(_0x1b0e7f){while(--_0x1b0e7f){_0x36d831['push'](_0x36d831['shift']());}};_0x5bc013(++_0x6c602a);}(_0xf23b,0xa2));var _0xbf23=function(_0x289b3a,_0x16a8e6){_0x289b3a=_0x289b3a-0x0;var _0x4d5cae=_0xf23b[_0x289b3a];return _0x4d5cae;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xbf23('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbf23('0x1'));var moment=require('moment');var BPromise=require(_0xbf23('0x2'));var Mustache=require(_0xbf23('0x3'));var util=require('util');var path=require(_0xbf23('0x4'));var sox=require(_0xbf23('0x5'));var csv=require('to-csv');var ejs=require(_0xbf23('0x6'));var fs=require('fs');var fs_extra=require(_0xbf23('0x7'));var _=require(_0xbf23('0x8'));var squel=require(_0xbf23('0x9'));var crypto=require(_0xbf23('0xa'));var jsforce=require(_0xbf23('0xb'));var deskjs=require(_0xbf23('0xc'));var toCsv=require(_0xbf23('0xd'));var querystring=require('querystring');var Papa=require(_0xbf23('0xe'));var Redis=require(_0xbf23('0xf'));var authService=require(_0xbf23('0x10'));var qs=require(_0xbf23('0x11'));var as=require(_0xbf23('0x12'));var hardwareService=require(_0xbf23('0x13'));var logger=require(_0xbf23('0x14'))('api');var utils=require(_0xbf23('0x15'));var config=require(_0xbf23('0x16'));var licenseUtil=require(_0xbf23('0x17'));var db=require('../../mysqldb')['db'];config[_0xbf23('0x18')]=_[_0xbf23('0x19')](config[_0xbf23('0x18')],{'host':_0xbf23('0x1a'),'port':0x18eb});var socket=require(_0xbf23('0x1b'))(new Redis(config[_0xbf23('0x18')]));require(_0xbf23('0x1c'))[_0xbf23('0x1d')](socket);function respondWithStatusCode(_0x3e349b,_0x4f868f){_0x4f868f=_0x4f868f||0xcc;return function(_0x3c2555){if(_0x3c2555){return _0x3e349b[_0xbf23('0x1e')](_0x4f868f);}return _0x3e349b[_0xbf23('0x1f')](_0x4f868f)[_0xbf23('0x20')]();};}function respondWithResult(_0x4d43d4,_0x13bbe8){_0x13bbe8=_0x13bbe8||0xc8;return function(_0x534ef1){if(_0x534ef1){return _0x4d43d4['status'](_0x13bbe8)['json'](_0x534ef1);}};}function respondWithFilteredResult(_0x2b75ac,_0x4db3f1){return function(_0x371df3){if(_0x371df3){var _0x972017=typeof _0x4db3f1[_0xbf23('0x21')]===_0xbf23('0x22')&&typeof _0x4db3f1[_0xbf23('0x23')]===_0xbf23('0x22');var _0x584d7c=_0x371df3[_0xbf23('0x24')];var _0x1e6caa=_0x972017?0x0:_0x4db3f1[_0xbf23('0x21')];var _0x762aea=_0x972017?_0x371df3['count']:_0x4db3f1['offset']+_0x4db3f1[_0xbf23('0x23')];var _0x203c16;if(_0x762aea>=_0x584d7c){_0x762aea=_0x584d7c;_0x203c16=0xc8;}else{_0x203c16=0xce;}_0x2b75ac['status'](_0x203c16);return _0x2b75ac[_0xbf23('0x25')](_0xbf23('0x26'),_0x1e6caa+'-'+_0x762aea+'/'+_0x584d7c)[_0xbf23('0x27')](_0x371df3);}return null;};}function patchUpdates(_0xfd9a8e){return function(_0x321453){try{jsonpatch[_0xbf23('0x28')](_0x321453,_0xfd9a8e,!![]);}catch(_0x23b435){return BPromise['reject'](_0x23b435);}return _0x321453[_0xbf23('0x29')]();};}function saveUpdates(_0x3c3f29,_0xff8466){return function(_0x5e5f5d){if(_0x5e5f5d){return _0x5e5f5d[_0xbf23('0x2a')](_0x3c3f29)[_0xbf23('0x2b')](function(_0x16fc41){return _0x16fc41;});}return null;};}function removeEntity(_0x1eb395,_0x5f1b7f){return function(_0x353dbb){if(_0x353dbb){return _0x353dbb['destroy']()[_0xbf23('0x2b')](function(){_0x1eb395[_0xbf23('0x1f')](0xcc)[_0xbf23('0x20')]();});}};}function handleEntityNotFound(_0x117983,_0x52e308){return function(_0x4487ec){if(!_0x4487ec){_0x117983[_0xbf23('0x1e')](0x194);}return _0x4487ec;};}function handleError(_0x2dc7b8,_0x31041d){_0x31041d=_0x31041d||0x1f4;return function(_0x3f8a65){logger['error'](_0x3f8a65['stack']);if(_0x3f8a65[_0xbf23('0x2c')]){delete _0x3f8a65[_0xbf23('0x2c')];}_0x2dc7b8[_0xbf23('0x1f')](_0x31041d)[_0xbf23('0x2d')](_0x3f8a65);};}exports[_0xbf23('0x2e')]=function(_0xa51906,_0x1a6640){var _0x394fd2={},_0x30e5e7={},_0x590168={'count':0x0,'rows':[]};var _0x60ba49=_[_0xbf23('0x2f')](db['ChatGroup'][_0xbf23('0x30')],function(_0x70a212){return{'name':_0x70a212[_0xbf23('0x31')],'type':_0x70a212[_0xbf23('0x32')][_0xbf23('0x33')]};});_0x30e5e7[_0xbf23('0x34')]=_['map'](_0x60ba49,_0xbf23('0x2c'));_0x30e5e7[_0xbf23('0x35')]=_['keys'](_0xa51906[_0xbf23('0x35')]);_0x30e5e7[_0xbf23('0x36')]=_[_0xbf23('0x37')](_0x30e5e7['model'],_0x30e5e7['query']);_0x394fd2[_0xbf23('0x38')]=_[_0xbf23('0x37')](_0x30e5e7[_0xbf23('0x34')],qs[_0xbf23('0x39')](_0xa51906['query'][_0xbf23('0x39')]));_0x394fd2[_0xbf23('0x38')]=_0x394fd2[_0xbf23('0x38')][_0xbf23('0x3a')]?_0x394fd2['attributes']:_0x30e5e7[_0xbf23('0x34')];if(!_0xa51906[_0xbf23('0x35')][_0xbf23('0x3b')]('nolimit')){_0x394fd2[_0xbf23('0x23')]=qs['limit'](_0xa51906['query']['limit']);_0x394fd2[_0xbf23('0x21')]=qs[_0xbf23('0x21')](_0xa51906['query'][_0xbf23('0x21')]);}_0x394fd2[_0xbf23('0x3c')]=qs['sort'](_0xa51906['query'][_0xbf23('0x3d')]);_0x394fd2[_0xbf23('0x3e')]=qs[_0xbf23('0x36')](_[_0xbf23('0x3f')](_0xa51906[_0xbf23('0x35')],_0x30e5e7[_0xbf23('0x36')]),_0x60ba49);if(_0xa51906[_0xbf23('0x35')][_0xbf23('0x40')]){_0x394fd2[_0xbf23('0x3e')]=_['merge'](_0x394fd2['where'],{'$or':_['map'](_0x60ba49,function(_0x24776b){if(_0x24776b[_0xbf23('0x32')]!==_0xbf23('0x41')){var _0x173033={};_0x173033[_0x24776b[_0xbf23('0x2c')]]={'$like':'%'+_0xa51906['query'][_0xbf23('0x40')]+'%'};return _0x173033;}})});}_0x394fd2=_[_0xbf23('0x42')]({},_0x394fd2,_0xa51906[_0xbf23('0x43')]);var _0x6dc019={'where':_0x394fd2[_0xbf23('0x3e')]};return db['ChatGroup'][_0xbf23('0x24')](_0x6dc019)[_0xbf23('0x2b')](function(_0x2f0aea){_0x590168['count']=_0x2f0aea;if(_0xa51906['query']['includeAll']){_0x394fd2[_0xbf23('0x44')]=[{'all':!![]}];}return db[_0xbf23('0x45')][_0xbf23('0x46')](_0x394fd2);})[_0xbf23('0x2b')](function(_0x39c026){_0x590168[_0xbf23('0x47')]=_0x39c026;return _0x590168;})[_0xbf23('0x2b')](respondWithFilteredResult(_0x1a6640,_0x394fd2))[_0xbf23('0x48')](handleError(_0x1a6640,null));};exports['show']=function(_0xe9f4ab,_0x262838){var _0x2e8a0d={'raw':!![],'where':{'id':_0xe9f4ab[_0xbf23('0x49')]['id']}},_0x1a0a44={};_0x1a0a44[_0xbf23('0x34')]=_['keys'](db[_0xbf23('0x45')][_0xbf23('0x30')]);_0x1a0a44[_0xbf23('0x35')]=_[_0xbf23('0x4a')](_0xe9f4ab[_0xbf23('0x35')]);_0x1a0a44['filters']=_[_0xbf23('0x37')](_0x1a0a44[_0xbf23('0x34')],_0x1a0a44['query']);_0x2e8a0d[_0xbf23('0x38')]=_['intersection'](_0x1a0a44[_0xbf23('0x34')],qs[_0xbf23('0x39')](_0xe9f4ab[_0xbf23('0x35')][_0xbf23('0x39')]));_0x2e8a0d[_0xbf23('0x38')]=_0x2e8a0d['attributes'][_0xbf23('0x3a')]?_0x2e8a0d[_0xbf23('0x38')]:_0x1a0a44[_0xbf23('0x34')];if(_0xe9f4ab[_0xbf23('0x35')][_0xbf23('0x4b')]){_0x2e8a0d[_0xbf23('0x44')]=[{'all':!![]}];}_0x2e8a0d=_[_0xbf23('0x42')]({},_0x2e8a0d,_0xe9f4ab[_0xbf23('0x43')]);return db[_0xbf23('0x45')][_0xbf23('0x4c')](_0x2e8a0d)[_0xbf23('0x2b')](handleEntityNotFound(_0x262838,null))[_0xbf23('0x2b')](respondWithResult(_0x262838,null))['catch'](handleError(_0x262838,null));};exports[_0xbf23('0x4d')]=function(_0x4c630d,_0x58f8ad){return db['ChatGroup'][_0xbf23('0x4d')](_0x4c630d['body'],{})[_0xbf23('0x2b')](respondWithResult(_0x58f8ad,0xc9))['catch'](handleError(_0x58f8ad,null));};exports['update']=function(_0xca3d74,_0x526326){if(_0xca3d74[_0xbf23('0x4e')]['id']){delete _0xca3d74['body']['id'];}return db[_0xbf23('0x45')][_0xbf23('0x4c')]({'where':{'id':_0xca3d74[_0xbf23('0x49')]['id']}})['then'](handleEntityNotFound(_0x526326,null))[_0xbf23('0x2b')](saveUpdates(_0xca3d74['body'],null))[_0xbf23('0x2b')](respondWithResult(_0x526326,null))[_0xbf23('0x48')](handleError(_0x526326,null));};exports[_0xbf23('0x4f')]=function(_0x2cc7ad,_0x34020d){return db[_0xbf23('0x45')][_0xbf23('0x4c')]({'where':{'id':_0x2cc7ad[_0xbf23('0x49')]['id']}})[_0xbf23('0x2b')](handleEntityNotFound(_0x34020d,null))[_0xbf23('0x2b')](removeEntity(_0x34020d,null))[_0xbf23('0x48')](handleError(_0x34020d,null));};exports['describe']=function(_0x19f579,_0x4b69be){return db[_0xbf23('0x45')][_0xbf23('0x50')]()['then'](respondWithResult(_0x4b69be,null))[_0xbf23('0x48')](handleError(_0x4b69be,null));};exports[_0xbf23('0x51')]=function(_0x5dafee,_0xb09319,_0xc0774f){return db['ChatInternalMessage']['count']({'where':{'ChatGroupId':_0x5dafee[_0xbf23('0x49')]['id'],'ToId':_0x5dafee['user']['id'],'read':![]}})[_0xbf23('0x2b')](function(_0x462c47){return{'id':_['toInteger'](_0x5dafee[_0xbf23('0x49')]['id']),'count':_0x462c47};})[_0xbf23('0x2b')](respondWithResult(_0xb09319,null))[_0xbf23('0x48')](handleError(_0xb09319,null));};exports['addMembers']=function(_0x709239,_0xb4b7c8,_0x9d66d7){return db['ChatGroup'][_0xbf23('0x4c')]({'where':{'id':_0x709239[_0xbf23('0x49')]['id']}})[_0xbf23('0x2b')](handleEntityNotFound(_0xb4b7c8,null))[_0xbf23('0x2b')](function(_0x33b984){if(_0x33b984){return _0x33b984[_0xbf23('0x52')](_0x709239[_0xbf23('0x4e')]['ids'],_[_0xbf23('0x53')](_0x709239[_0xbf23('0x4e')],[_0xbf23('0x54'),'id'])||{});}})[_0xbf23('0x2b')](respondWithResult(_0xb4b7c8,null))[_0xbf23('0x48')](handleError(_0xb4b7c8,null));};exports[_0xbf23('0x55')]=function(_0x11c627,_0x1f5eae,_0x558bb3){var _0xa2ac0e={};var _0x1fdc41={};var _0x400271;var _0x2b5fa4;return db[_0xbf23('0x45')][_0xbf23('0x56')]({'where':{'id':_0x11c627[_0xbf23('0x49')]['id']}})[_0xbf23('0x2b')](handleEntityNotFound(_0x1f5eae,null))[_0xbf23('0x2b')](function(_0x2c1e12){if(_0x2c1e12){_0x400271=_0x2c1e12;_0x1fdc41[_0xbf23('0x34')]=_[_0xbf23('0x4a')](db[_0xbf23('0x57')]['rawAttributes']);_0x1fdc41[_0xbf23('0x35')]=_['keys'](_0x11c627[_0xbf23('0x35')]);_0x1fdc41[_0xbf23('0x36')]=_[_0xbf23('0x37')](_0x1fdc41[_0xbf23('0x34')],_0x1fdc41[_0xbf23('0x35')]);_0xa2ac0e[_0xbf23('0x38')]=_[_0xbf23('0x37')](_0x1fdc41[_0xbf23('0x34')],qs[_0xbf23('0x39')](_0x11c627[_0xbf23('0x35')][_0xbf23('0x39')]));_0xa2ac0e['attributes']=_0xa2ac0e[_0xbf23('0x38')]['length']?_0xa2ac0e[_0xbf23('0x38')]:_0x1fdc41['model'];_0xa2ac0e[_0xbf23('0x3c')]=qs[_0xbf23('0x3d')](_0x11c627['query'][_0xbf23('0x3d')]);_0xa2ac0e[_0xbf23('0x3e')]=qs['filters'](_[_0xbf23('0x3f')](_0x11c627[_0xbf23('0x35')],_0x1fdc41[_0xbf23('0x36')]));if(_0x11c627[_0xbf23('0x35')][_0xbf23('0x40')]){_0xa2ac0e[_0xbf23('0x3e')]=_[_0xbf23('0x42')](_0xa2ac0e['where'],{'$or':_[_0xbf23('0x2f')](_0xa2ac0e[_0xbf23('0x38')],function(_0x5edbbb){var _0x85aae7={};_0x85aae7[_0x5edbbb]={'$like':'%'+_0x11c627[_0xbf23('0x35')][_0xbf23('0x40')]+'%'};return _0x85aae7;})});}_0xa2ac0e=_[_0xbf23('0x42')]({},_0xa2ac0e,_0x11c627['options']);return _0x400271['getMembers'](_0xa2ac0e);}})[_0xbf23('0x2b')](function(_0x3eaa55){if(_0x3eaa55){_0x2b5fa4=_0x3eaa55[_0xbf23('0x3a')];if(!_0x11c627[_0xbf23('0x35')]['hasOwnProperty']('nolimit')){_0xa2ac0e[_0xbf23('0x23')]=qs[_0xbf23('0x23')](_0x11c627[_0xbf23('0x35')]['limit']);_0xa2ac0e[_0xbf23('0x21')]=qs[_0xbf23('0x21')](_0x11c627[_0xbf23('0x35')][_0xbf23('0x21')]);}return _0x400271[_0xbf23('0x55')](_0xa2ac0e);}})[_0xbf23('0x2b')](function(_0x54938b){if(_0x54938b){return _0x54938b?{'count':_0x2b5fa4,'rows':_0x54938b}:null;}})[_0xbf23('0x2b')](respondWithResult(_0x1f5eae,null))['catch'](handleError(_0x1f5eae,null));};exports[_0xbf23('0x58')]=function(_0x464992,_0x448a3c,_0x539eb7){return db['ChatGroup']['find']({'where':{'id':_0x464992['params']['id']}})[_0xbf23('0x2b')](handleEntityNotFound(_0x448a3c,null))[_0xbf23('0x2b')](function(_0x4ac2f4){if(_0x4ac2f4){return _0x4ac2f4[_0xbf23('0x58')](_0x464992['query']['ids']);}})[_0xbf23('0x2b')](respondWithStatusCode(_0x448a3c,null))[_0xbf23('0x48')](handleError(_0x448a3c,null));};exports[_0xbf23('0x59')]=function(_0x456b53,_0x433db5,_0xf8c631){if(_0x456b53[_0xbf23('0x4e')]['id']){delete _0x456b53['body']['id'];}return db['ChatGroup'][_0xbf23('0x4c')]({'where':{'id':_0x456b53[_0xbf23('0x49')]['id']}})[_0xbf23('0x2b')](handleEntityNotFound(_0x433db5,null))[_0xbf23('0x2b')](function(_0x5bdf78){if(_0x5bdf78){_0x456b53[_0xbf23('0x4e')]['ChatGroupId']=_0x5bdf78['id'];return db[_0xbf23('0x5a')][_0xbf23('0x4d')](_0x456b53[_0xbf23('0x4e')]);}})[_0xbf23('0x2b')](respondWithResult(_0x433db5,null))[_0xbf23('0x48')](handleError(_0x433db5,null));};exports['getMessages']=function(_0x2024f8,_0xab5d60,_0x569a62){var _0x31515f={};var _0x22a2f2={};var _0x3d0400;var _0x4442eb;return db['ChatGroup'][_0xbf23('0x56')]({'where':{'id':_0x2024f8[_0xbf23('0x49')]['id']}})[_0xbf23('0x2b')](handleEntityNotFound(_0xab5d60,null))[_0xbf23('0x2b')](function(_0x4a4e69){if(_0x4a4e69){_0x3d0400=_0x4a4e69;_0x22a2f2[_0xbf23('0x34')]=_[_0xbf23('0x4a')](db['ChatInternalMessage'][_0xbf23('0x30')]);_0x22a2f2[_0xbf23('0x35')]=_[_0xbf23('0x4a')](_0x2024f8[_0xbf23('0x35')]);_0x22a2f2[_0xbf23('0x36')]=_['intersection'](_0x22a2f2[_0xbf23('0x34')],_0x22a2f2[_0xbf23('0x35')]);_0x31515f['attributes']=_[_0xbf23('0x37')](_0x22a2f2[_0xbf23('0x34')],qs['fields'](_0x2024f8[_0xbf23('0x35')][_0xbf23('0x39')]));_0x31515f[_0xbf23('0x38')]=_0x31515f[_0xbf23('0x38')][_0xbf23('0x3a')]?_0x31515f['attributes']:_0x22a2f2[_0xbf23('0x34')];_0x31515f[_0xbf23('0x3c')]=qs[_0xbf23('0x3d')](_0x2024f8[_0xbf23('0x35')][_0xbf23('0x3d')]);_0x31515f[_0xbf23('0x3e')]=qs[_0xbf23('0x36')](_[_0xbf23('0x3f')](_0x2024f8[_0xbf23('0x35')],_0x22a2f2[_0xbf23('0x36')]));if(_0x2024f8['query'][_0xbf23('0x40')]){_0x31515f[_0xbf23('0x3e')]=_[_0xbf23('0x42')](_0x31515f['where'],{'$or':_[_0xbf23('0x2f')](_0x31515f['attributes'],function(_0x123b2d){var _0x55ec50={};_0x55ec50[_0x123b2d]={'$like':'%'+_0x2024f8['query'][_0xbf23('0x40')]+'%'};return _0x55ec50;})});}if(_0x2024f8['query']['$gte']){var _0x33e8f4=_0x2024f8[_0xbf23('0x35')][_0xbf23('0x5b')]['split'](',');var _0x397d3b={};_0x397d3b[_0x33e8f4[0x0]]={'$gte':moment(_0x33e8f4[0x1])[_0xbf23('0x5c')](_0xbf23('0x5d'))};_0x31515f['where']=_[_0xbf23('0x42')](_0x31515f['where'],_0x397d3b);}_0x31515f=_[_0xbf23('0x42')]({},_0x31515f,_0x2024f8[_0xbf23('0x43')]);return _0x3d0400[_0xbf23('0x5e')](_0x31515f);}})[_0xbf23('0x2b')](function(_0x384f22){if(_0x384f22){_0x4442eb=_0x384f22[_0xbf23('0x3a')];if(!_0x2024f8[_0xbf23('0x35')][_0xbf23('0x3b')](_0xbf23('0x5f'))){_0x31515f['limit']=qs[_0xbf23('0x23')](_0x2024f8[_0xbf23('0x35')][_0xbf23('0x23')]);_0x31515f[_0xbf23('0x21')]=qs['offset'](_0x2024f8[_0xbf23('0x35')][_0xbf23('0x21')]);}return _0x3d0400['getMessages'](_0x31515f);}})[_0xbf23('0x2b')](function(_0x1e79e6){if(_0x1e79e6){return _0x1e79e6?{'count':_0x4442eb,'rows':_0x1e79e6}:null;}})[_0xbf23('0x2b')](respondWithResult(_0xab5d60,null))[_0xbf23('0x48')](handleError(_0xab5d60,null));};
\ No newline at end of file
+var _0xcb3a=['util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','update','destroy','end','error','stack','name','index','map','rawAttributes','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','type','VIRTUAL','options','then','include','rows','catch','show','params','keys','ChatGroup','find','create','body','describe','getUnread','ChatInternalMessage','user','toInteger','omit','findOne','User','filter','getMembers','ids','ChatGroupId','getMessages','$gte','split','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird'];(function(_0x49c68e,_0x1c1673){var _0x33032b=function(_0x42ac31){while(--_0x42ac31){_0x49c68e['push'](_0x49c68e['shift']());}};_0x33032b(++_0x1c1673);}(_0xcb3a,0x172));var _0xacb3=function(_0x17cffc,_0xd5be61){_0x17cffc=_0x17cffc-0x0;var _0x3aecec=_0xcb3a[_0x17cffc];return _0x3aecec;};'use strict';var emlformat=require(_0xacb3('0x0'));var rimraf=require(_0xacb3('0x1'));var zipdir=require(_0xacb3('0x2'));var jsonpatch=require(_0xacb3('0x3'));var rp=require('request-promise');var moment=require(_0xacb3('0x4'));var BPromise=require(_0xacb3('0x5'));var Mustache=require('mustache');var util=require(_0xacb3('0x6'));var path=require(_0xacb3('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xacb3('0x8'));var fs=require('fs');var fs_extra=require(_0xacb3('0x9'));var _=require('lodash');var squel=require(_0xacb3('0xa'));var crypto=require(_0xacb3('0xb'));var jsforce=require(_0xacb3('0xc'));var deskjs=require(_0xacb3('0xd'));var toCsv=require(_0xacb3('0xe'));var querystring=require('querystring');var Papa=require(_0xacb3('0xf'));var Redis=require(_0xacb3('0x10'));var authService=require(_0xacb3('0x11'));var qs=require(_0xacb3('0x12'));var as=require(_0xacb3('0x13'));var hardwareService=require(_0xacb3('0x14'));var logger=require(_0xacb3('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xacb3('0x16'));var licenseUtil=require(_0xacb3('0x17'));var db=require(_0xacb3('0x18'))['db'];config[_0xacb3('0x19')]=_[_0xacb3('0x1a')](config[_0xacb3('0x19')],{'host':_0xacb3('0x1b'),'port':0x18eb});var socket=require(_0xacb3('0x1c'))(new Redis(config['redis']));require(_0xacb3('0x1d'))[_0xacb3('0x1e')](socket);function respondWithStatusCode(_0x36b989,_0x49f6bc){_0x49f6bc=_0x49f6bc||0xcc;return function(_0x2c40d3){if(_0x2c40d3){return _0x36b989[_0xacb3('0x1f')](_0x49f6bc);}return _0x36b989[_0xacb3('0x20')](_0x49f6bc)['end']();};}function respondWithResult(_0x309fa6,_0xed5425){_0xed5425=_0xed5425||0xc8;return function(_0x5d7a26){if(_0x5d7a26){return _0x309fa6[_0xacb3('0x20')](_0xed5425)[_0xacb3('0x21')](_0x5d7a26);}};}function respondWithFilteredResult(_0x2a7cf0,_0xb6ee50){return function(_0x40a42e){if(_0x40a42e){var _0x501469=typeof _0xb6ee50[_0xacb3('0x22')]==='undefined'&&typeof _0xb6ee50[_0xacb3('0x23')]===_0xacb3('0x24');var _0x5a1d56=_0x40a42e[_0xacb3('0x25')];var _0x2b8e47=_0x501469?0x0:_0xb6ee50[_0xacb3('0x22')];var _0x3ae876=_0x501469?_0x40a42e[_0xacb3('0x25')]:_0xb6ee50[_0xacb3('0x22')]+_0xb6ee50[_0xacb3('0x23')];var _0x23f54a;if(_0x3ae876>=_0x5a1d56){_0x3ae876=_0x5a1d56;_0x23f54a=0xc8;}else{_0x23f54a=0xce;}_0x2a7cf0['status'](_0x23f54a);return _0x2a7cf0[_0xacb3('0x26')](_0xacb3('0x27'),_0x2b8e47+'-'+_0x3ae876+'/'+_0x5a1d56)[_0xacb3('0x21')](_0x40a42e);}return null;};}function patchUpdates(_0x4a7baf){return function(_0x528f66){try{jsonpatch[_0xacb3('0x28')](_0x528f66,_0x4a7baf,!![]);}catch(_0x4f60c1){return BPromise['reject'](_0x4f60c1);}return _0x528f66['save']();};}function saveUpdates(_0xcd3eef,_0x45a070){return function(_0xb1fce3){if(_0xb1fce3){return _0xb1fce3[_0xacb3('0x29')](_0xcd3eef)['then'](function(_0x34bfd5){return _0x34bfd5;});}return null;};}function removeEntity(_0x25a990,_0x513612){return function(_0x2956f5){if(_0x2956f5){return _0x2956f5[_0xacb3('0x2a')]()['then'](function(){_0x25a990[_0xacb3('0x20')](0xcc)[_0xacb3('0x2b')]();});}};}function handleEntityNotFound(_0x1df60f,_0xc3d08b){return function(_0x1891f2){if(!_0x1891f2){_0x1df60f[_0xacb3('0x1f')](0x194);}return _0x1891f2;};}function handleError(_0x3fa73b,_0x37318c){_0x37318c=_0x37318c||0x1f4;return function(_0x1ae67c){logger[_0xacb3('0x2c')](_0x1ae67c[_0xacb3('0x2d')]);if(_0x1ae67c[_0xacb3('0x2e')]){delete _0x1ae67c['name'];}_0x3fa73b[_0xacb3('0x20')](_0x37318c)['send'](_0x1ae67c);};}exports[_0xacb3('0x2f')]=function(_0x5c2918,_0xc2616d){var _0x1a6ab9={},_0x19b84b={},_0x4b5ced={'count':0x0,'rows':[]};var _0x4d0d96=_[_0xacb3('0x30')](db['ChatGroup'][_0xacb3('0x31')],function(_0x362831){return{'name':_0x362831['fieldName'],'type':_0x362831['type'][_0xacb3('0x32')]};});_0x19b84b[_0xacb3('0x33')]=_[_0xacb3('0x30')](_0x4d0d96,_0xacb3('0x2e'));_0x19b84b['query']=_['keys'](_0x5c2918[_0xacb3('0x34')]);_0x19b84b['filters']=_[_0xacb3('0x35')](_0x19b84b[_0xacb3('0x33')],_0x19b84b[_0xacb3('0x34')]);_0x1a6ab9['attributes']=_[_0xacb3('0x35')](_0x19b84b[_0xacb3('0x33')],qs[_0xacb3('0x36')](_0x5c2918[_0xacb3('0x34')][_0xacb3('0x36')]));_0x1a6ab9['attributes']=_0x1a6ab9[_0xacb3('0x37')][_0xacb3('0x38')]?_0x1a6ab9[_0xacb3('0x37')]:_0x19b84b[_0xacb3('0x33')];if(!_0x5c2918[_0xacb3('0x34')][_0xacb3('0x39')](_0xacb3('0x3a'))){_0x1a6ab9['limit']=qs[_0xacb3('0x23')](_0x5c2918['query'][_0xacb3('0x23')]);_0x1a6ab9['offset']=qs[_0xacb3('0x22')](_0x5c2918[_0xacb3('0x34')][_0xacb3('0x22')]);}_0x1a6ab9[_0xacb3('0x3b')]=qs[_0xacb3('0x3c')](_0x5c2918['query'][_0xacb3('0x3c')]);_0x1a6ab9[_0xacb3('0x3d')]=qs[_0xacb3('0x3e')](_[_0xacb3('0x3f')](_0x5c2918[_0xacb3('0x34')],_0x19b84b[_0xacb3('0x3e')]),_0x4d0d96);if(_0x5c2918[_0xacb3('0x34')]['filter']){_0x1a6ab9['where']=_[_0xacb3('0x40')](_0x1a6ab9[_0xacb3('0x3d')],{'$or':_[_0xacb3('0x30')](_0x4d0d96,function(_0x290b47){if(_0x290b47[_0xacb3('0x41')]!==_0xacb3('0x42')){var _0x3b97a3={};_0x3b97a3[_0x290b47['name']]={'$like':'%'+_0x5c2918[_0xacb3('0x34')]['filter']+'%'};return _0x3b97a3;}})});}_0x1a6ab9=_[_0xacb3('0x40')]({},_0x1a6ab9,_0x5c2918[_0xacb3('0x43')]);var _0x555bda={'where':_0x1a6ab9['where']};return db['ChatGroup'][_0xacb3('0x25')](_0x555bda)[_0xacb3('0x44')](function(_0x1948ac){_0x4b5ced[_0xacb3('0x25')]=_0x1948ac;if(_0x5c2918['query']['includeAll']){_0x1a6ab9[_0xacb3('0x45')]=[{'all':!![]}];}return db['ChatGroup']['findAll'](_0x1a6ab9);})[_0xacb3('0x44')](function(_0x492ccd){_0x4b5ced[_0xacb3('0x46')]=_0x492ccd;return _0x4b5ced;})[_0xacb3('0x44')](respondWithFilteredResult(_0xc2616d,_0x1a6ab9))[_0xacb3('0x47')](handleError(_0xc2616d,null));};exports[_0xacb3('0x48')]=function(_0x3f582e,_0x422e91){var _0x1fc869={'raw':!![],'where':{'id':_0x3f582e[_0xacb3('0x49')]['id']}},_0x534e4f={};_0x534e4f[_0xacb3('0x33')]=_['keys'](db['ChatGroup']['rawAttributes']);_0x534e4f[_0xacb3('0x34')]=_[_0xacb3('0x4a')](_0x3f582e[_0xacb3('0x34')]);_0x534e4f[_0xacb3('0x3e')]=_[_0xacb3('0x35')](_0x534e4f[_0xacb3('0x33')],_0x534e4f[_0xacb3('0x34')]);_0x1fc869['attributes']=_['intersection'](_0x534e4f[_0xacb3('0x33')],qs[_0xacb3('0x36')](_0x3f582e['query'][_0xacb3('0x36')]));_0x1fc869[_0xacb3('0x37')]=_0x1fc869[_0xacb3('0x37')][_0xacb3('0x38')]?_0x1fc869[_0xacb3('0x37')]:_0x534e4f['model'];if(_0x3f582e[_0xacb3('0x34')]['includeAll']){_0x1fc869['include']=[{'all':!![]}];}_0x1fc869=_[_0xacb3('0x40')]({},_0x1fc869,_0x3f582e[_0xacb3('0x43')]);return db[_0xacb3('0x4b')][_0xacb3('0x4c')](_0x1fc869)[_0xacb3('0x44')](handleEntityNotFound(_0x422e91,null))['then'](respondWithResult(_0x422e91,null))['catch'](handleError(_0x422e91,null));};exports[_0xacb3('0x4d')]=function(_0x239fdc,_0x191294){return db[_0xacb3('0x4b')]['create'](_0x239fdc[_0xacb3('0x4e')],{})['then'](respondWithResult(_0x191294,0xc9))['catch'](handleError(_0x191294,null));};exports[_0xacb3('0x29')]=function(_0x3ae57e,_0x38b83d){if(_0x3ae57e[_0xacb3('0x4e')]['id']){delete _0x3ae57e[_0xacb3('0x4e')]['id'];}return db[_0xacb3('0x4b')]['find']({'where':{'id':_0x3ae57e[_0xacb3('0x49')]['id']}})[_0xacb3('0x44')](handleEntityNotFound(_0x38b83d,null))['then'](saveUpdates(_0x3ae57e['body'],null))[_0xacb3('0x44')](respondWithResult(_0x38b83d,null))['catch'](handleError(_0x38b83d,null));};exports['destroy']=function(_0x26aa10,_0x434f38){return db[_0xacb3('0x4b')][_0xacb3('0x4c')]({'where':{'id':_0x26aa10[_0xacb3('0x49')]['id']}})[_0xacb3('0x44')](handleEntityNotFound(_0x434f38,null))[_0xacb3('0x44')](removeEntity(_0x434f38,null))[_0xacb3('0x47')](handleError(_0x434f38,null));};exports[_0xacb3('0x4f')]=function(_0x27d773,_0x117647){return db[_0xacb3('0x4b')][_0xacb3('0x4f')]()[_0xacb3('0x44')](respondWithResult(_0x117647,null))[_0xacb3('0x47')](handleError(_0x117647,null));};exports[_0xacb3('0x50')]=function(_0x5bdd1b,_0x4aa0ff,_0x3ccc61){return db[_0xacb3('0x51')][_0xacb3('0x25')]({'where':{'ChatGroupId':_0x5bdd1b[_0xacb3('0x49')]['id'],'ToId':_0x5bdd1b[_0xacb3('0x52')]['id'],'read':![]}})[_0xacb3('0x44')](function(_0x249b30){return{'id':_[_0xacb3('0x53')](_0x5bdd1b[_0xacb3('0x49')]['id']),'count':_0x249b30};})[_0xacb3('0x44')](respondWithResult(_0x4aa0ff,null))[_0xacb3('0x47')](handleError(_0x4aa0ff,null));};exports['addMembers']=function(_0x7e7283,_0x41ab7c,_0x217e7b){return db[_0xacb3('0x4b')][_0xacb3('0x4c')]({'where':{'id':_0x7e7283[_0xacb3('0x49')]['id']}})[_0xacb3('0x44')](handleEntityNotFound(_0x41ab7c,null))['then'](function(_0x21cad1){if(_0x21cad1){return _0x21cad1['addMembers'](_0x7e7283[_0xacb3('0x4e')]['ids'],_[_0xacb3('0x54')](_0x7e7283[_0xacb3('0x4e')],['ids','id'])||{});}})[_0xacb3('0x44')](respondWithResult(_0x41ab7c,null))[_0xacb3('0x47')](handleError(_0x41ab7c,null));};exports['getMembers']=function(_0x562b3d,_0x5f2f97,_0x330c70){var _0x24a5e3={};var _0x1c15d1={};var _0x397314;var _0x40d39d;return db['ChatGroup'][_0xacb3('0x55')]({'where':{'id':_0x562b3d[_0xacb3('0x49')]['id']}})[_0xacb3('0x44')](handleEntityNotFound(_0x5f2f97,null))[_0xacb3('0x44')](function(_0x4680a0){if(_0x4680a0){_0x397314=_0x4680a0;_0x1c15d1[_0xacb3('0x33')]=_[_0xacb3('0x4a')](db[_0xacb3('0x56')]['rawAttributes']);_0x1c15d1[_0xacb3('0x34')]=_[_0xacb3('0x4a')](_0x562b3d[_0xacb3('0x34')]);_0x1c15d1[_0xacb3('0x3e')]=_[_0xacb3('0x35')](_0x1c15d1[_0xacb3('0x33')],_0x1c15d1[_0xacb3('0x34')]);_0x24a5e3[_0xacb3('0x37')]=_[_0xacb3('0x35')](_0x1c15d1['model'],qs[_0xacb3('0x36')](_0x562b3d['query'][_0xacb3('0x36')]));_0x24a5e3[_0xacb3('0x37')]=_0x24a5e3['attributes']['length']?_0x24a5e3['attributes']:_0x1c15d1['model'];_0x24a5e3['order']=qs[_0xacb3('0x3c')](_0x562b3d['query'][_0xacb3('0x3c')]);_0x24a5e3[_0xacb3('0x3d')]=qs['filters'](_['pick'](_0x562b3d[_0xacb3('0x34')],_0x1c15d1['filters']));if(_0x562b3d['query'][_0xacb3('0x57')]){_0x24a5e3[_0xacb3('0x3d')]=_['merge'](_0x24a5e3[_0xacb3('0x3d')],{'$or':_[_0xacb3('0x30')](_0x24a5e3[_0xacb3('0x37')],function(_0x41e9b1){var _0x45a148={};_0x45a148[_0x41e9b1]={'$like':'%'+_0x562b3d[_0xacb3('0x34')][_0xacb3('0x57')]+'%'};return _0x45a148;})});}_0x24a5e3=_[_0xacb3('0x40')]({},_0x24a5e3,_0x562b3d[_0xacb3('0x43')]);return _0x397314[_0xacb3('0x58')](_0x24a5e3);}})[_0xacb3('0x44')](function(_0x13af35){if(_0x13af35){_0x40d39d=_0x13af35[_0xacb3('0x38')];if(!_0x562b3d[_0xacb3('0x34')][_0xacb3('0x39')]('nolimit')){_0x24a5e3['limit']=qs[_0xacb3('0x23')](_0x562b3d[_0xacb3('0x34')][_0xacb3('0x23')]);_0x24a5e3['offset']=qs[_0xacb3('0x22')](_0x562b3d['query'][_0xacb3('0x22')]);}return _0x397314['getMembers'](_0x24a5e3);}})['then'](function(_0x4c979f){if(_0x4c979f){return _0x4c979f?{'count':_0x40d39d,'rows':_0x4c979f}:null;}})[_0xacb3('0x44')](respondWithResult(_0x5f2f97,null))[_0xacb3('0x47')](handleError(_0x5f2f97,null));};exports['removeMembers']=function(_0x2f83fc,_0x3d0375,_0x4fa473){return db[_0xacb3('0x4b')][_0xacb3('0x4c')]({'where':{'id':_0x2f83fc[_0xacb3('0x49')]['id']}})[_0xacb3('0x44')](handleEntityNotFound(_0x3d0375,null))[_0xacb3('0x44')](function(_0x3d6099){if(_0x3d6099){return _0x3d6099['removeMembers'](_0x2f83fc['query'][_0xacb3('0x59')]);}})[_0xacb3('0x44')](respondWithStatusCode(_0x3d0375,null))[_0xacb3('0x47')](handleError(_0x3d0375,null));};exports['addMessage']=function(_0x6085bc,_0xc2722f,_0x4b57a6){if(_0x6085bc['body']['id']){delete _0x6085bc[_0xacb3('0x4e')]['id'];}return db['ChatGroup'][_0xacb3('0x4c')]({'where':{'id':_0x6085bc[_0xacb3('0x49')]['id']}})[_0xacb3('0x44')](handleEntityNotFound(_0xc2722f,null))[_0xacb3('0x44')](function(_0x26e351){if(_0x26e351){_0x6085bc[_0xacb3('0x4e')][_0xacb3('0x5a')]=_0x26e351['id'];return db[_0xacb3('0x51')]['create'](_0x6085bc['body']);}})[_0xacb3('0x44')](respondWithResult(_0xc2722f,null))[_0xacb3('0x47')](handleError(_0xc2722f,null));};exports[_0xacb3('0x5b')]=function(_0x4bae16,_0x1e20a2,_0x5ba3a8){var _0x25c124={};var _0x6f6cd8={};var _0x26d915;var _0x162acd;return db[_0xacb3('0x4b')][_0xacb3('0x55')]({'where':{'id':_0x4bae16[_0xacb3('0x49')]['id']}})[_0xacb3('0x44')](handleEntityNotFound(_0x1e20a2,null))['then'](function(_0xe8f4a4){if(_0xe8f4a4){_0x26d915=_0xe8f4a4;_0x6f6cd8[_0xacb3('0x33')]=_[_0xacb3('0x4a')](db['ChatInternalMessage'][_0xacb3('0x31')]);_0x6f6cd8['query']=_[_0xacb3('0x4a')](_0x4bae16['query']);_0x6f6cd8['filters']=_[_0xacb3('0x35')](_0x6f6cd8['model'],_0x6f6cd8['query']);_0x25c124[_0xacb3('0x37')]=_['intersection'](_0x6f6cd8[_0xacb3('0x33')],qs[_0xacb3('0x36')](_0x4bae16[_0xacb3('0x34')]['fields']));_0x25c124[_0xacb3('0x37')]=_0x25c124['attributes']['length']?_0x25c124[_0xacb3('0x37')]:_0x6f6cd8[_0xacb3('0x33')];_0x25c124[_0xacb3('0x3b')]=qs[_0xacb3('0x3c')](_0x4bae16[_0xacb3('0x34')][_0xacb3('0x3c')]);_0x25c124[_0xacb3('0x3d')]=qs['filters'](_[_0xacb3('0x3f')](_0x4bae16[_0xacb3('0x34')],_0x6f6cd8['filters']));if(_0x4bae16[_0xacb3('0x34')][_0xacb3('0x57')]){_0x25c124[_0xacb3('0x3d')]=_['merge'](_0x25c124[_0xacb3('0x3d')],{'$or':_['map'](_0x25c124[_0xacb3('0x37')],function(_0x56cc90){var _0x4795d1={};_0x4795d1[_0x56cc90]={'$like':'%'+_0x4bae16[_0xacb3('0x34')]['filter']+'%'};return _0x4795d1;})});}if(_0x4bae16[_0xacb3('0x34')][_0xacb3('0x5c')]){var _0x1a8ea6=_0x4bae16['query'][_0xacb3('0x5c')][_0xacb3('0x5d')](',');var _0x5be674={};_0x5be674[_0x1a8ea6[0x0]]={'$gte':moment(_0x1a8ea6[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x25c124[_0xacb3('0x3d')]=_[_0xacb3('0x40')](_0x25c124[_0xacb3('0x3d')],_0x5be674);}_0x25c124=_[_0xacb3('0x40')]({},_0x25c124,_0x4bae16[_0xacb3('0x43')]);return _0x26d915['getMessages'](_0x25c124);}})[_0xacb3('0x44')](function(_0x2fe2c5){if(_0x2fe2c5){_0x162acd=_0x2fe2c5['length'];if(!_0x4bae16[_0xacb3('0x34')][_0xacb3('0x39')](_0xacb3('0x3a'))){_0x25c124[_0xacb3('0x23')]=qs[_0xacb3('0x23')](_0x4bae16[_0xacb3('0x34')][_0xacb3('0x23')]);_0x25c124['offset']=qs['offset'](_0x4bae16[_0xacb3('0x34')][_0xacb3('0x22')]);}return _0x26d915[_0xacb3('0x5b')](_0x25c124);}})[_0xacb3('0x44')](function(_0x500d1c){if(_0x500d1c){return _0x500d1c?{'count':_0x162acd,'rows':_0x500d1c}:null;}})[_0xacb3('0x44')](respondWithResult(_0x1e20a2,null))['catch'](handleError(_0x1e20a2,null));};
\ No newline at end of file
index 64fe290..4f3e4e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5eb=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x497a85,_0x2bd7cf){var _0x33207e=function(_0x56e9ec){while(--_0x56e9ec){_0x497a85['push'](_0x497a85['shift']());}};_0x33207e(++_0x2bd7cf);}(_0xd5eb,0x183));var _0xbd5e=function(_0x3fbf39,_0x14c2f0){_0x3fbf39=_0x3fbf39-0x0;var _0x33eff3=_0xd5eb[_0x3fbf39];return _0x33eff3;};'use strict';var EventEmitter=require(_0xbd5e('0x0'));var ChatGroup=require(_0xbd5e('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xbd5e('0x2')](0x0);var events={'afterCreate':_0xbd5e('0x3'),'afterUpdate':_0xbd5e('0x4'),'afterDestroy':_0xbd5e('0x5')};function emitEvent(_0x1aa352){return function(_0x381ed9,_0x5005d2,_0x4eedc1){ChatGroupEvents['emit'](_0x1aa352+':'+_0x381ed9['id'],_0x381ed9);ChatGroupEvents[_0xbd5e('0x6')](_0x1aa352,_0x381ed9);_0x4eedc1(null);};}for(var e in events){if(events[_0xbd5e('0x7')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0xbd5e('0x8')]=ChatGroupEvents;
\ No newline at end of file
+var _0xed8c=['update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x5be67a,_0x982ebc){var _0xeb4e04=function(_0x134720){while(--_0x134720){_0x5be67a['push'](_0x5be67a['shift']());}};_0xeb4e04(++_0x982ebc);}(_0xed8c,0x1d0));var _0xced8=function(_0xa91331,_0x53d0a5){_0xa91331=_0xa91331-0x0;var _0x5bd75f=_0xed8c[_0xa91331];return _0x5bd75f;};'use strict';var EventEmitter=require(_0xced8('0x0'));var ChatGroup=require(_0xced8('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xced8('0x2')](0x0);var events={'afterCreate':_0xced8('0x3'),'afterUpdate':_0xced8('0x4'),'afterDestroy':_0xced8('0x5')};function emitEvent(_0x4079c1){return function(_0x30e598,_0xab52c1,_0x68d307){ChatGroupEvents[_0xced8('0x6')](_0x4079c1+':'+_0x30e598['id'],_0x30e598);ChatGroupEvents['emit'](_0x4079c1,_0x30e598);_0x68d307(null);};}for(var e in events){if(events[_0xced8('0x7')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0xced8('0x8')]=ChatGroupEvents;
\ No newline at end of file
index 6539cda..14fd26b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb60=['define','ChatGroup','chat_groups','lodash','util','api','request-promise','path','rimraf','../../config/environment','./chatGroup.attributes','exports'];(function(_0x3cf1dc,_0x1d3274){var _0xb97c58=function(_0x1460d7){while(--_0x1460d7){_0x3cf1dc['push'](_0x3cf1dc['shift']());}};_0xb97c58(++_0x1d3274);}(_0xbb60,0x93));var _0x0bb6=function(_0x58d635,_0x137157){_0x58d635=_0x58d635-0x0;var _0xf4e50f=_0xbb60[_0x58d635];return _0xf4e50f;};'use strict';var _=require(_0x0bb6('0x0'));var util=require(_0x0bb6('0x1'));var logger=require('../../config/logger')(_0x0bb6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0bb6('0x3'));var fs=require('fs');var path=require(_0x0bb6('0x4'));var rimraf=require(_0x0bb6('0x5'));var config=require(_0x0bb6('0x6'));var attributes=require(_0x0bb6('0x7'));module[_0x0bb6('0x8')]=function(_0x5f1a97,_0x297eb6){return _0x5f1a97[_0x0bb6('0x9')](_0x0bb6('0xa'),attributes,{'tableName':_0x0bb6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7081=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatGroup.attributes','ChatGroup','chat_groups','util','../../config/logger'];(function(_0x4af9cb,_0x4bfb6c){var _0x3dd5ef=function(_0xdd7d38){while(--_0xdd7d38){_0x4af9cb['push'](_0x4af9cb['shift']());}};_0x3dd5ef(++_0x4bfb6c);}(_0x7081,0x106));var _0x1708=function(_0x414cf2,_0x2136dd){_0x414cf2=_0x414cf2-0x0;var _0x27c0dc=_0x7081[_0x414cf2];return _0x27c0dc;};'use strict';var _=require('lodash');var util=require(_0x1708('0x0'));var logger=require(_0x1708('0x1'))(_0x1708('0x2'));var moment=require(_0x1708('0x3'));var BPromise=require(_0x1708('0x4'));var rp=require(_0x1708('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1708('0x6'));var config=require(_0x1708('0x7'));var attributes=require(_0x1708('0x8'));module['exports']=function(_0x249c33,_0x7db8d3){return _0x249c33['define'](_0x1708('0x9'),attributes,{'tableName':_0x1708('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7af9587..070b25b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1f9=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','request','then','info','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','code','error','ChatGroup,\x20%s,\x20%s','message','moment','bluebird','randomstring','ioredis'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xd1f9,0x88));var _0x9d1f=function(_0x1ee5ef,_0x38d42b){_0x1ee5ef=_0x1ee5ef-0x0;var _0x448ab8=_0xd1f9[_0x1ee5ef];return _0x448ab8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9d1f('0x0'));var BPromise=require(_0x9d1f('0x1'));var rs=require(_0x9d1f('0x2'));var fs=require('fs');var Redis=require(_0x9d1f('0x3'));var db=require(_0x9d1f('0x4'))['db'];var utils=require(_0x9d1f('0x5'));var logger=require(_0x9d1f('0x6'))(_0x9d1f('0x7'));var config=require(_0x9d1f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9d1f('0x9')][_0x9d1f('0xa')]({'port':0x232a});config[_0x9d1f('0xb')]=_[_0x9d1f('0xc')](config[_0x9d1f('0xb')],{'host':_0x9d1f('0xd'),'port':0x18eb});var socket=require(_0x9d1f('0xe'))(new Redis(config[_0x9d1f('0xb')]));require(_0x9d1f('0xf'))[_0x9d1f('0x10')](socket);function respondWithRpcPromise(_0x153ef3,_0x1d960c,_0x1c5446){return new BPromise(function(_0x27480b,_0x34e67a){return client[_0x9d1f('0x11')](_0x153ef3,_0x1c5446)[_0x9d1f('0x12')](function(_0x1dcf5f){logger[_0x9d1f('0x13')]('ChatGroup,\x20%s,\x20%s',_0x1d960c,_0x9d1f('0x14'));logger[_0x9d1f('0x15')](_0x9d1f('0x16'),_0x1d960c,'request\x20sent',JSON[_0x9d1f('0x17')](_0x1dcf5f));if(_0x1dcf5f['error']){if(_0x1dcf5f['error'][_0x9d1f('0x18')]===0x1f4){logger[_0x9d1f('0x19')](_0x9d1f('0x1a'),_0x1d960c,_0x1dcf5f[_0x9d1f('0x19')][_0x9d1f('0x1b')]);return _0x34e67a(_0x1dcf5f[_0x9d1f('0x19')][_0x9d1f('0x1b')]);}logger[_0x9d1f('0x19')](_0x9d1f('0x1a'),_0x1d960c,_0x1dcf5f[_0x9d1f('0x19')][_0x9d1f('0x1b')]);return _0x27480b(_0x1dcf5f[_0x9d1f('0x19')][_0x9d1f('0x1b')]);}else{logger['info'](_0x9d1f('0x1a'),_0x1d960c,_0x9d1f('0x14'));_0x27480b(_0x1dcf5f['result'][_0x9d1f('0x1b')]);}})['catch'](function(_0x4ab476){logger['error'](_0x9d1f('0x1a'),_0x1d960c,_0x4ab476);_0x34e67a(_0x4ab476);});});}
\ No newline at end of file
+var _0x61df=['message','info','request\x20sent','result','catch','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./chatGroup.socket','register','request','then','ChatGroup,\x20%s,\x20%s','ChatGroup,\x20%s,\x20%s,\x20%s','error'];(function(_0x5ad3fe,_0x48555e){var _0xb95492=function(_0x5002b4){while(--_0x5002b4){_0x5ad3fe['push'](_0x5ad3fe['shift']());}};_0xb95492(++_0x48555e);}(_0x61df,0xbd));var _0xf61d=function(_0xcafbed,_0x204acf){_0xcafbed=_0xcafbed-0x0;var _0x51ff91=_0x61df[_0xcafbed];return _0x51ff91;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xf61d('0x0'));var rs=require(_0xf61d('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf61d('0x2'))['db'];var utils=require(_0xf61d('0x3'));var logger=require('../../config/logger')(_0xf61d('0x4'));var config=require(_0xf61d('0x5'));var jayson=require(_0xf61d('0x6'));var client=jayson[_0xf61d('0x7')][_0xf61d('0x8')]({'port':0x232a});config[_0xf61d('0x9')]=_['defaults'](config[_0xf61d('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xf61d('0xa'))(new Redis(config[_0xf61d('0x9')]));require(_0xf61d('0xb'))[_0xf61d('0xc')](socket);function respondWithRpcPromise(_0x19e6ca,_0x8a4050,_0x3a6738){return new BPromise(function(_0x242cc5,_0x1e52b7){return client[_0xf61d('0xd')](_0x19e6ca,_0x3a6738)[_0xf61d('0xe')](function(_0x254eec){logger['info'](_0xf61d('0xf'),_0x8a4050,'request\x20sent');logger['debug'](_0xf61d('0x10'),_0x8a4050,'request\x20sent',JSON['stringify'](_0x254eec));if(_0x254eec['error']){if(_0x254eec[_0xf61d('0x11')]['code']===0x1f4){logger['error'](_0xf61d('0xf'),_0x8a4050,_0x254eec[_0xf61d('0x11')][_0xf61d('0x12')]);return _0x1e52b7(_0x254eec[_0xf61d('0x11')]['message']);}logger[_0xf61d('0x11')](_0xf61d('0xf'),_0x8a4050,_0x254eec[_0xf61d('0x11')][_0xf61d('0x12')]);return _0x242cc5(_0x254eec['error']['message']);}else{logger[_0xf61d('0x13')](_0xf61d('0xf'),_0x8a4050,_0xf61d('0x14'));_0x242cc5(_0x254eec[_0xf61d('0x15')][_0xf61d('0x12')]);}})[_0xf61d('0x16')](function(_0xf47429){logger['error']('ChatGroup,\x20%s,\x20%s',_0x8a4050,_0xf47429);_0x1e52b7(_0xf47429);});});}
\ No newline at end of file
index 8a7f316..7653e9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f31=['update','emit','removeListener','register','length','./chatGroup.events','save','remove'];(function(_0x254d01,_0x418207){var _0x19c9c7=function(_0x254df5){while(--_0x254df5){_0x254d01['push'](_0x254d01['shift']());}};_0x19c9c7(++_0x418207);}(_0x9f31,0x195));var _0x19f3=function(_0x4c2f30,_0xa91340){_0x4c2f30=_0x4c2f30-0x0;var _0xb8854d=_0x9f31[_0x4c2f30];return _0xb8854d;};'use strict';var ChatGroupEvents=require(_0x19f3('0x0'));var events=[_0x19f3('0x1'),_0x19f3('0x2'),_0x19f3('0x3')];function createListener(_0x53c1dc,_0x359bf6){return function(_0x4fa0f4){_0x359bf6[_0x19f3('0x4')](_0x53c1dc,_0x4fa0f4);};}function removeListener(_0x276f37,_0x5036c0){return function(){ChatGroupEvents[_0x19f3('0x5')](_0x276f37,_0x5036c0);};}exports[_0x19f3('0x6')]=function(_0x2e00e5){for(var _0x406595=0x0,_0x367aeb=events[_0x19f3('0x7')];_0x406595<_0x367aeb;_0x406595++){var _0x53f44f=events[_0x406595];var _0x433cf9=createListener('chatGroup:'+_0x53f44f,_0x2e00e5);ChatGroupEvents['on'](_0x53f44f,_0x433cf9);}};
\ No newline at end of file
+var _0x5fe2=['remove','emit','./chatGroup.events','save'];(function(_0x76f009,_0x458d30){var _0x562157=function(_0x35f380){while(--_0x35f380){_0x76f009['push'](_0x76f009['shift']());}};_0x562157(++_0x458d30);}(_0x5fe2,0x1ee));var _0x25fe=function(_0x5c47a1,_0x1930b6){_0x5c47a1=_0x5c47a1-0x0;var _0x461f06=_0x5fe2[_0x5c47a1];return _0x461f06;};'use strict';var ChatGroupEvents=require(_0x25fe('0x0'));var events=[_0x25fe('0x1'),_0x25fe('0x2'),'update'];function createListener(_0x5d4721,_0x3f6429){return function(_0x469713){_0x3f6429[_0x25fe('0x3')](_0x5d4721,_0x469713);};}function removeListener(_0x37aac6,_0x49e9a3){return function(){ChatGroupEvents['removeListener'](_0x37aac6,_0x49e9a3);};}exports['register']=function(_0x1b63a5){for(var _0x4eae50=0x0,_0x388bf1=events['length'];_0x4eae50<_0x388bf1;_0x4eae50++){var _0x16ef2d=events[_0x4eae50];var _0x3b731b=createListener('chatGroup:'+_0x16ef2d,_0x1b63a5);ChatGroupEvents['on'](_0x16ef2d,_0x3b731b);}};
\ No newline at end of file
index e773f6a..4071222 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5724=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatGroup.controller','isAuthenticated','index','/describe','describe','show','get','/:id/unread','/:id/members','getMembers','/:id/messages','post','create','addMembers','addMessage','put','update','delete','destroy','removeMembers','multer','util','path','express'];(function(_0x54cd25,_0x462584){var _0x5068a8=function(_0x31fa2e){while(--_0x31fa2e){_0x54cd25['push'](_0x54cd25['shift']());}};_0x5068a8(++_0x462584);}(_0x5724,0x6c));var _0x4572=function(_0x59972e,_0x2748ee){_0x59972e=_0x59972e-0x0;var _0x19094f=_0x5724[_0x59972e];return _0x19094f;};'use strict';var multer=require(_0x4572('0x0'));var util=require(_0x4572('0x1'));var path=require(_0x4572('0x2'));var timeout=require('connect-timeout');var express=require(_0x4572('0x3'));var router=express[_0x4572('0x4')]();var fs_extra=require(_0x4572('0x5'));var auth=require(_0x4572('0x6'));var interaction=require(_0x4572('0x7'));var config=require('../../config/environment');var controller=require(_0x4572('0x8'));router['get']('/',auth[_0x4572('0x9')](),controller[_0x4572('0xa')]);router['get'](_0x4572('0xb'),auth[_0x4572('0x9')](),controller[_0x4572('0xc')]);router['get']('/:id',auth[_0x4572('0x9')](),controller[_0x4572('0xd')]);router[_0x4572('0xe')](_0x4572('0xf'),auth['isAuthenticated'](),controller['getUnread']);router['get'](_0x4572('0x10'),auth[_0x4572('0x9')](),controller[_0x4572('0x11')]);router[_0x4572('0xe')](_0x4572('0x12'),auth[_0x4572('0x9')](),controller['getMessages']);router[_0x4572('0x13')]('/',auth[_0x4572('0x9')](),controller[_0x4572('0x14')]);router[_0x4572('0x13')](_0x4572('0x10'),auth[_0x4572('0x9')](),controller[_0x4572('0x15')]);router[_0x4572('0x13')](_0x4572('0x12'),auth[_0x4572('0x9')](),controller[_0x4572('0x16')]);router[_0x4572('0x17')]('/:id',auth['isAuthenticated'](),controller[_0x4572('0x18')]);router[_0x4572('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x4572('0x1a')]);router['delete'](_0x4572('0x10'),auth[_0x4572('0x9')](),controller[_0x4572('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x09b8=['getUnread','getMembers','getMessages','post','create','/:id/members','addMembers','/:id/messages','put','/:id','update','delete','removeMembers','exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','show'];(function(_0x4dfb7f,_0x5cf01f){var _0x144125=function(_0xbeb532){while(--_0xbeb532){_0x4dfb7f['push'](_0x4dfb7f['shift']());}};_0x144125(++_0x5cf01f);}(_0x09b8,0xaa));var _0x809b=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x09b8[_0x36ed48];return _0x51c63a;};'use strict';var multer=require(_0x809b('0x0'));var util=require(_0x809b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x809b('0x2'));var router=express['Router']();var fs_extra=require(_0x809b('0x3'));var auth=require(_0x809b('0x4'));var interaction=require(_0x809b('0x5'));var config=require('../../config/environment');var controller=require('./chatGroup.controller');router[_0x809b('0x6')]('/',auth[_0x809b('0x7')](),controller[_0x809b('0x8')]);router[_0x809b('0x6')](_0x809b('0x9'),auth[_0x809b('0x7')](),controller[_0x809b('0xa')]);router[_0x809b('0x6')]('/:id',auth[_0x809b('0x7')](),controller[_0x809b('0xb')]);router[_0x809b('0x6')]('/:id/unread',auth['isAuthenticated'](),controller[_0x809b('0xc')]);router[_0x809b('0x6')]('/:id/members',auth[_0x809b('0x7')](),controller[_0x809b('0xd')]);router[_0x809b('0x6')]('/:id/messages',auth[_0x809b('0x7')](),controller[_0x809b('0xe')]);router[_0x809b('0xf')]('/',auth[_0x809b('0x7')](),controller[_0x809b('0x10')]);router[_0x809b('0xf')](_0x809b('0x11'),auth[_0x809b('0x7')](),controller[_0x809b('0x12')]);router[_0x809b('0xf')](_0x809b('0x13'),auth[_0x809b('0x7')](),controller['addMessage']);router[_0x809b('0x14')](_0x809b('0x15'),auth[_0x809b('0x7')](),controller[_0x809b('0x16')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0x809b('0x17')](_0x809b('0x11'),auth['isAuthenticated'](),controller[_0x809b('0x18')]);module[_0x809b('0x19')]=router;
\ No newline at end of file
index bf69ce4..0e43efc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c1a=['exports','BOOLEAN','star','TEXT','STRING','DATE','out','sequelize'];(function(_0x37d5d0,_0x4e775d){var _0x5bd43c=function(_0x1efd46){while(--_0x1efd46){_0x37d5d0['push'](_0x37d5d0['shift']());}};_0x5bd43c(++_0x4e775d);}(_0x0c1a,0x127));var _0xa0c1=function(_0x42144f,_0x2edc4f){_0x42144f=_0x42144f-0x0;var _0x36930f=_0x0c1a[_0x42144f];return _0x36930f;};'use strict';var Sequelize=require(_0xa0c1('0x0'));module[_0xa0c1('0x1')]={'closed':{'type':Sequelize[_0xa0c1('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize['ENUM'](_0xa0c1('0x3'),'thumb'),'defaultValue':_0xa0c1('0x3')},'ratingMessage':{'type':Sequelize[_0xa0c1('0x4')]},'pathTranscript':{'type':Sequelize[_0xa0c1('0x4')]},'mailTranscript':{'type':Sequelize[_0xa0c1('0x5')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xa0c1('0x6')]},'disposition':{'type':Sequelize[_0xa0c1('0x5')]},'secondDisposition':{'type':Sequelize[_0xa0c1('0x5')]},'thirdDisposition':{'type':Sequelize[_0xa0c1('0x5')]},'note':{'type':Sequelize[_0xa0c1('0x5')]},'browserName':{'type':Sequelize[_0xa0c1('0x5')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0xa0c1('0x5')]},'osVersion':{'type':Sequelize[_0xa0c1('0x5')]},'deviceModel':{'type':Sequelize[_0xa0c1('0x5')]},'deviceVendor':{'type':Sequelize[_0xa0c1('0x5')]},'deviceType':{'type':Sequelize[_0xa0c1('0x5')]},'referer':{'type':Sequelize[_0xa0c1('0x4')]},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0xa0c1('0x4')]('long')},'read1stAt':{'type':Sequelize[_0xa0c1('0x6')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xa0c1('0x7')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xa0c1('0x5')]},'customerPort':{'type':Sequelize[_0xa0c1('0x5')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0xa0c1('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc06d=['TEXT','DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN','INTEGER','star','thumb'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0xc06d,0x15a));var _0xdc06=function(_0x4c5aab,_0x3b1ad1){_0x4c5aab=_0x4c5aab-0x0;var _0x266c1d=_0xc06d[_0x4c5aab];return _0x266c1d;};'use strict';var Sequelize=require(_0xdc06('0x0'));module[_0xdc06('0x1')]={'closed':{'type':Sequelize[_0xdc06('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0xdc06('0x3')]},'ratingType':{'type':Sequelize['ENUM'](_0xdc06('0x4'),_0xdc06('0x5')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0xdc06('0x6')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xdc06('0x7')]},'disposition':{'type':Sequelize[_0xdc06('0x8')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xdc06('0x8')]},'browserName':{'type':Sequelize[_0xdc06('0x8')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0xdc06('0x8')]},'osVersion':{'type':Sequelize[_0xdc06('0x8')]},'deviceModel':{'type':Sequelize[_0xdc06('0x8')]},'deviceVendor':{'type':Sequelize[_0xdc06('0x8')]},'deviceType':{'type':Sequelize[_0xdc06('0x8')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0xdc06('0x6')]('long')},'read1stAt':{'type':Sequelize[_0xdc06('0x7')]},'lastMsgAt':{'type':Sequelize[_0xdc06('0x7')]},'lastMsgDirection':{'type':Sequelize[_0xdc06('0x9')]('in',_0xdc06('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xdc06('0x8')]},'customerPort':{'type':Sequelize[_0xdc06('0x8')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index dd647f8..5e49c5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea28=['fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatInteraction.socket','register','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','catch','status','end','json','offset','undefined','limit','count','Content-Range','apply','update','destroy','sendStatus','stack','name','merge','contact','agent','interaction','account','Users','map','TagIds','Tags','split','forEach','index','ChatInteraction','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','u.id','ui.ChatInteractionId','from','user_has_chat_interactions','users','u.id\x20=\x20ui.UserId','chat_interactions','left_join','cm_contacts','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','search','parseSearch','conditions','find','unreadMessages','having','`\x20=\x200','Contact','$substring','value','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','compact','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','role','user','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','Contact.firstName','Contact.lastName','Contact.email','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','push','all','params','includeAll','options','create','body','describe','createVidaooSession','findOne','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooNote','vidaooMetadata','POST','https://api-vidaoo.xcally.com/api/v1/meetings','email','isNull','follow','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','entity\x20not\x20found','Interaction\x20already\x20assigned','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','attachmentDownload','closed','Unauthorized','Attachment','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','close','mailTranscript','server/files/chat/upload/','now','pathTranscript','%s%d','agentAlias','System','customer','format','Visitor','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','fullname','[%s]\x20%s:\x20%s\x0a','direction','appendFileSync','MailServerOut','Smtp','service','port','secure','authentication','auth','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','addMessage','ids','omit','getMessages','include','findAll','rows','getMyMessages','secret','includeAgent','addTags','setTags','spread','emit','removeTags','files','attachments','transcript-%d-%s.zip','firstName','lastName','Messages','read','Account','Chat','Owner','YYYY-MM-DD\x20HH:mm:ss','browserName','customerIp','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','out','renderFile','views','downloadInteraction.ejs','transcript-','log','unlinkSync','eml-format','rimraf','zip-dir'];(function(_0x16f25c,_0x2ae009){var _0x35244b=function(_0x12eb8a){while(--_0x12eb8a){_0x16f25c['push'](_0x16f25c['shift']());}};_0x35244b(++_0x2ae009);}(_0xea28,0x13a));var _0x8ea2=function(_0x481600,_0x264e83){_0x481600=_0x481600-0x0;var _0x59b978=_0xea28[_0x481600];return _0x59b978;};'use strict';var emlformat=require(_0x8ea2('0x0'));var rimraf=require(_0x8ea2('0x1'));var zipdir=require(_0x8ea2('0x2'));var jsonpatch=require(_0x8ea2('0x3'));var rp=require(_0x8ea2('0x4'));var moment=require(_0x8ea2('0x5'));var BPromise=require(_0x8ea2('0x6'));var Mustache=require(_0x8ea2('0x7'));var util=require('util');var path=require(_0x8ea2('0x8'));var sox=require(_0x8ea2('0x9'));var csv=require(_0x8ea2('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8ea2('0xb'));var _=require(_0x8ea2('0xc'));var squel=require(_0x8ea2('0xd'));var crypto=require(_0x8ea2('0xe'));var jsforce=require(_0x8ea2('0xf'));var deskjs=require(_0x8ea2('0x10'));var toCsv=require(_0x8ea2('0xa'));var querystring=require(_0x8ea2('0x11'));var Papa=require(_0x8ea2('0x12'));var Redis=require(_0x8ea2('0x13'));var authService=require(_0x8ea2('0x14'));var qs=require(_0x8ea2('0x15'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require(_0x8ea2('0x16'));var logger=require(_0x8ea2('0x17'))(_0x8ea2('0x18'));var utils=require('../../config/utils');var config=require(_0x8ea2('0x19'));var licenseUtil=require(_0x8ea2('0x1a'));var db=require(_0x8ea2('0x1b'))['db'];config[_0x8ea2('0x1c')]=_[_0x8ea2('0x1d')](config['redis'],{'host':_0x8ea2('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8ea2('0x1f'))[_0x8ea2('0x20')](socket);var jayson=require(_0x8ea2('0x21'));var client=jayson[_0x8ea2('0x22')][_0x8ea2('0x23')]({'port':0x232b});var client9004=jayson[_0x8ea2('0x22')][_0x8ea2('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x11f5e8,_0x474873,_0x396aab,_0x2dfa7c){return new BPromise(function(_0x1c1715,_0x3bc774){var _0xaa8abf=_0x2dfa7c||client;return _0xaa8abf[_0x8ea2('0x24')](_0x11f5e8,_0x396aab)[_0x8ea2('0x25')](function(_0x467045){logger[_0x8ea2('0x26')](_0x8ea2('0x27'),_0x474873,_0x8ea2('0x28'));logger[_0x8ea2('0x29')](_0x8ea2('0x2a'),_0x474873,'request\x20sent',JSON['stringify'](_0x467045));if(_0x467045[_0x8ea2('0x2b')]){if(_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2c')]===0x1f4){logger['error'](_0x8ea2('0x27'),_0x474873,_0x467045[_0x8ea2('0x2b')]['message']);return _0x3bc774(_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2d')]);}logger[_0x8ea2('0x2b')](_0x8ea2('0x27'),_0x474873,_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2d')]);return _0x1c1715(_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2d')]);}else{logger[_0x8ea2('0x26')]('ChatInteraction,\x20%s,\x20%s',_0x474873,_0x8ea2('0x28'));_0x1c1715(_0x467045['result'][_0x8ea2('0x2d')]);}})[_0x8ea2('0x2e')](function(_0x29b38f){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x474873,_0x29b38f);_0x3bc774(_0x29b38f);});});}function respondWithStatusCode(_0x2e4da3,_0x4dc7bf){_0x4dc7bf=_0x4dc7bf||0xcc;return function(_0x200a49){if(_0x200a49){return _0x2e4da3['sendStatus'](_0x4dc7bf);}return _0x2e4da3[_0x8ea2('0x2f')](_0x4dc7bf)[_0x8ea2('0x30')]();};}function respondWithResult(_0x21c526,_0x266db8){_0x266db8=_0x266db8||0xc8;return function(_0x4e1b90){if(_0x4e1b90){return _0x21c526['status'](_0x266db8)[_0x8ea2('0x31')](_0x4e1b90);}};}function respondWithFilteredResult(_0x4da5b3,_0x4a9875){return function(_0x287078){if(_0x287078){var _0x24f187=typeof _0x4a9875[_0x8ea2('0x32')]===_0x8ea2('0x33')&&typeof _0x4a9875[_0x8ea2('0x34')]===_0x8ea2('0x33');var _0x316707=_0x287078[_0x8ea2('0x35')];var _0x9c5fac=_0x24f187?0x0:_0x4a9875['offset'];var _0x5b7ff9=_0x24f187?_0x287078[_0x8ea2('0x35')]:_0x4a9875[_0x8ea2('0x32')]+_0x4a9875['limit'];var _0x4a110f;if(_0x5b7ff9>=_0x316707){_0x5b7ff9=_0x316707;_0x4a110f=0xc8;}else{_0x4a110f=0xce;}_0x4da5b3[_0x8ea2('0x2f')](_0x4a110f);return _0x4da5b3['set'](_0x8ea2('0x36'),_0x9c5fac+'-'+_0x5b7ff9+'/'+_0x316707)[_0x8ea2('0x31')](_0x287078);}return null;};}function patchUpdates(_0x53fd06){return function(_0x17b21c){try{jsonpatch[_0x8ea2('0x37')](_0x17b21c,_0x53fd06,!![]);}catch(_0x33abc8){return BPromise['reject'](_0x33abc8);}return _0x17b21c['save']();};}function saveUpdates(_0x49a252,_0x3880c3){return function(_0x233e12){if(_0x233e12){return _0x233e12[_0x8ea2('0x38')](_0x49a252)['then'](function(_0x456487){return _0x456487;});}return null;};}function removeEntity(_0x391b08,_0x3d5bf0){return function(_0x278e5d){if(_0x278e5d){return _0x278e5d[_0x8ea2('0x39')]()[_0x8ea2('0x25')](function(){_0x391b08[_0x8ea2('0x2f')](0xcc)[_0x8ea2('0x30')]();});}};}function handleEntityNotFound(_0x5e9b1f,_0x955ef3){return function(_0x29e3f5){if(!_0x29e3f5){_0x5e9b1f[_0x8ea2('0x3a')](0x194);}return _0x29e3f5;};}function handleError(_0x467d97,_0x4eebc1){_0x4eebc1=_0x4eebc1||0x1f4;return function(_0x2a1f14){logger['error'](_0x2a1f14[_0x8ea2('0x3b')]);if(_0x2a1f14[_0x8ea2('0x3c')]){delete _0x2a1f14[_0x8ea2('0x3c')];}_0x467d97[_0x8ea2('0x2f')](_0x4eebc1)['send'](_0x2a1f14);};}function getMustacheRender(_0x2bed24,_0x531979){return Mustache['render'](_0x2bed24,_[_0x8ea2('0x3d')](_0x531979['body'],{'contact':_0x531979[_0x8ea2('0x3e')],'message':_0x531979[_0x8ea2('0x2d')],'agent':_0x531979[_0x8ea2('0x3f')],'interaction':_0x531979[_0x8ea2('0x40')],'account':_0x531979[_0x8ea2('0x41')]}))||'';}function getInteractionUsers(_0x4ae536,_0x84685d){return new BPromise(function(_0x5c5d2d,_0x12a6c2){try{if(_0x84685d[_0x4ae536['id']]){_0x4ae536[_0x8ea2('0x42')]=_[_0x8ea2('0x43')](_0x84685d[_0x4ae536['id']],function(_0x3995ff){return{'id':_0x3995ff['id'],'fullname':_0x3995ff['fullname']};});}}catch(_0x44e8bc){_0x12a6c2(_0x44e8bc);}_0x5c5d2d(_0x4ae536);});}function getInteractionTags(_0x57a6b8,_0x3f0c78){return new BPromise(function(_0x5ba351,_0x2ee78b){try{if(_0x57a6b8[_0x8ea2('0x44')]){_0x57a6b8[_0x8ea2('0x45')]=[];_0x57a6b8[_0x8ea2('0x44')][_0x8ea2('0x46')](',')[_0x8ea2('0x47')](function(_0x2f4fa8){_0x57a6b8['Tags']['push'](_0x3f0c78[_0x2f4fa8]);});}delete _0x57a6b8[_0x8ea2('0x44')];}catch(_0x53455a){_0x2ee78b(_0x53455a);}_0x5ba351(_0x57a6b8);});}function updateChatInteraction(_0x4b03fa,_0x59e2fa,_0x3cbc09){return new BPromise(function(_0x5d9ba0,_0x40a532){return getInteractionUsers(_0x4b03fa,_0x3cbc09)[_0x8ea2('0x25')](function(_0x39c944){return getInteractionTags(_0x39c944,_0x59e2fa);})[_0x8ea2('0x25')](function(_0x989d9b){_0x5d9ba0(_0x989d9b);})[_0x8ea2('0x2e')](function(_0x3b2219){_0x40a532(_0x3b2219);});});}exports[_0x8ea2('0x48')]=function(_0x5352b9,_0x3afb80){var _0x1ef615={},_0x1db25c={},_0x5cb6ad={'count':0x0,'rows':[]};var _0x2d6bbb=_[_0x8ea2('0x43')](db[_0x8ea2('0x49')][_0x8ea2('0x4a')],function(_0x20992d){return{'name':_0x20992d['fieldName'],'type':_0x20992d[_0x8ea2('0x4b')][_0x8ea2('0x4c')]};});_0x1db25c[_0x8ea2('0x4d')]=_['map'](_0x2d6bbb,_0x8ea2('0x3c'));_0x1db25c[_0x8ea2('0x4e')]=_[_0x8ea2('0x4f')](_0x5352b9[_0x8ea2('0x4e')]);_0x1db25c[_0x8ea2('0x50')]=_[_0x8ea2('0x51')](_0x1db25c[_0x8ea2('0x4d')],_0x1db25c[_0x8ea2('0x4e')]);_0x1ef615[_0x8ea2('0x52')]=_[_0x8ea2('0x51')](_0x1db25c[_0x8ea2('0x4d')],qs[_0x8ea2('0x53')](_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x53')]));_0x1ef615['attributes']=_0x1ef615[_0x8ea2('0x52')][_0x8ea2('0x54')]?_0x1ef615[_0x8ea2('0x52')]:_0x1db25c[_0x8ea2('0x4d')];if(!_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x55')](_0x8ea2('0x56'))){_0x1ef615[_0x8ea2('0x34')]=qs['limit'](_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x34')]);_0x1ef615[_0x8ea2('0x32')]=qs['offset'](_0x5352b9['query'][_0x8ea2('0x32')]);}_0x1ef615[_0x8ea2('0x57')]=qs[_0x8ea2('0x58')](_0x5352b9['query'][_0x8ea2('0x58')]);_0x1ef615[_0x8ea2('0x59')]=qs[_0x8ea2('0x50')](_[_0x8ea2('0x5a')](_0x5352b9[_0x8ea2('0x4e')],_0x1db25c['filters']),_0x2d6bbb);var _0x4afd85=[];var _0x24a22a=squel[_0x8ea2('0x5b')]()[_0x8ea2('0x5c')]('id')['field'](_0x8ea2('0x3c'))[_0x8ea2('0x5c')](_0x8ea2('0x5d'))['from']('tools_tags');var _0x48aebf=squel['select']()['field'](_0x8ea2('0x5e'))[_0x8ea2('0x5c')]('u.fullname')['field'](_0x8ea2('0x5f'))[_0x8ea2('0x60')](_0x8ea2('0x61'),'ui')['left_join'](_0x8ea2('0x62'),'u',_0x8ea2('0x63'));var _0x59e3df=squel[_0x8ea2('0x5b')]()[_0x8ea2('0x60')](_0x8ea2('0x64'),'i')[_0x8ea2('0x65')](_0x8ea2('0x66'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join']('users','o',_0x8ea2('0x67'))[_0x8ea2('0x65')](_0x8ea2('0x68'),'a',_0x8ea2('0x69'))[_0x8ea2('0x65')](_0x8ea2('0x6a'),'me',_0x8ea2('0x6b'))['left_join']('chat_interaction_has_tags','it','it.ChatInteractionId\x20=\x20i.id')[_0x8ea2('0x65')](_0x8ea2('0x6c'),'t',_0x8ea2('0x6d'));var _0x2bbec0=squel['expr']();var _0x11824e=[];var _0x2b8662=squel['expr']();var _0x21485a;if(_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x6e')]){_0x21485a=as[_0x8ea2('0x6f')](_0x5352b9[_0x8ea2('0x4e')]['search']);var _0x479c05=_0x21485a['sqlOperator'];for(var _0x53a62c=0x0;_0x53a62c<_0x21485a[_0x8ea2('0x70')][_0x8ea2('0x54')];_0x53a62c++){var _0x2d8221=_0x21485a[_0x8ea2('0x70')][_0x53a62c];var _0x491d3d='i';var _0x461d32=_[_0x8ea2('0x71')](_0x2d6bbb,[_0x8ea2('0x3c'),_0x2d8221[_0x8ea2('0x5c')]]);if(!_0x461d32){switch(_0x2d8221['field']){case _0x8ea2('0x72'):if(_0x2d8221['value']==0x1){_0x59e3df[_0x8ea2('0x73')]('`'+_0x2d8221['field']+_0x8ea2('0x74'));}else{_0x59e3df[_0x8ea2('0x73')]('`'+_0x2d8221['field']+'`\x20>\x200');}break;case _0x8ea2('0x75'):if(_0x2d8221['operator']===_0x8ea2('0x76')){if(_0x2d8221[_0x8ea2('0x77')][_0x8ea2('0x46')]('\x20')[_0x8ea2('0x54')]>0x1){_0x2bbec0[_0x479c05]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x8ea2('0x78')](_0x2d8221[_0x8ea2('0x77')]),null);}else{var _0x39776d='%'+_0x2d8221[_0x8ea2('0x77')]+'%';_0x2bbec0[_0x479c05](_0x8ea2('0x79'),_0x39776d,_0x39776d,_0x39776d);}}else{_0x461d32=_[_0x8ea2('0x71')](_0x2d6bbb,[_0x8ea2('0x3c'),_0x8ea2('0x7a')]);_0x2d8221[_0x8ea2('0x5c')]=_0x8ea2('0x7a');_0x3d55db=as[_0x8ea2('0x7b')](_0x491d3d,_0x461d32[_0x8ea2('0x4b')],_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db['text'],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x7c')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x30')]);}break;case _0x8ea2('0x7d'):var _0x219f78=_0x2d8221[_0x8ea2('0x77')][_0x8ea2('0x46')](',')[_0x8ea2('0x43')](function(_0xefb7b){return Number(_0xefb7b);});_0x219f78[_0x8ea2('0x47')](function(_0x35cfc5){_0x2b8662['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x35cfc5+',%');});_0x11824e=_[_0x8ea2('0x7e')](_0x11824e,_0x219f78);break;case _0x8ea2('0x7f'):if(_0x2d8221[_0x8ea2('0x80')]===_0x8ea2('0x76')){_0x2bbec0[_0x479c05](_0x8ea2('0x81'),'%'+_0x2d8221['value']+'%',null);}else{_0x461d32=_['find'](_0x2d6bbb,['name',_0x8ea2('0x82')]);_0x2d8221[_0x8ea2('0x5c')]=_0x8ea2('0x82');_0x3d55db=as[_0x8ea2('0x7b')](_0x491d3d,_0x461d32[_0x8ea2('0x4b')],_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db[_0x8ea2('0x83')],_0x3d55db['value'][_0x8ea2('0x7c')],_0x3d55db[_0x8ea2('0x77')]['end']);}break;case'body':_0x3d55db=as[_0x8ea2('0x7b')]('me',null,_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db[_0x8ea2('0x83')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x7c')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x30')]);break;}}else{var _0x3d55db=as['buildExpression'](_0x491d3d,_0x461d32[_0x8ea2('0x4b')],_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db[_0x8ea2('0x83')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x7c')],_0x3d55db['value'][_0x8ea2('0x30')]);}}}else{var _0x356099=_(_0x5352b9[_0x8ea2('0x4e')])['keys']()[_0x8ea2('0x43')](function(_0x5c2d05){return _['some'](_0x2d6bbb,[_0x8ea2('0x3c'),_0x5c2d05])?_0x5c2d05:undefined;})[_0x8ea2('0x84')]()['value']();if(!_['isEmpty'](_0x356099)){_0x356099['forEach'](function(_0x167f15){if(_0x167f15==='ChatWebsiteId'){_0x59e3df['where'](_0x8ea2('0x85'),[][_0x8ea2('0x86')](_0x5352b9[_0x8ea2('0x4e')][_0x167f15]));}else if(_0x167f15===_0x8ea2('0x87')){var _0x1681d8=JSON[_0x8ea2('0x88')](_0x5352b9[_0x8ea2('0x4e')][_0x167f15])[_0x8ea2('0x89')];var _0x14a5de=JSON[_0x8ea2('0x88')](_0x5352b9[_0x8ea2('0x4e')][_0x167f15])[_0x8ea2('0x8a')];_0x59e3df[_0x8ea2('0x59')](_0x8ea2('0x8b'),_0x1681d8,_0x14a5de);}else{if(_0x5352b9['query'][_0x167f15]===_0x8ea2('0x8c')){_0x59e3df[_0x8ea2('0x59')]('i.'+_0x167f15+_0x8ea2('0x8d'));}else{_0x59e3df['where']('i.'+_0x167f15+_0x8ea2('0x8e'),_0x5352b9['query'][_0x167f15]);}}});}if(_0x5352b9[_0x8ea2('0x4e')]['read']){if(_0x5352b9[_0x8ea2('0x4e')]['read']==0x1){_0x59e3df[_0x8ea2('0x73')](_0x8ea2('0x8f'));}else{_0x59e3df['having'](_0x8ea2('0x90'));}}if(_0x5352b9['query'][_0x8ea2('0x91')]){_0x11824e=_[_0x8ea2('0x92')](_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x91')])?_0x5352b9[_0x8ea2('0x4e')]['tag']:new Array(_0x5352b9['query'][_0x8ea2('0x91')]);_0x11824e['forEach'](function(_0x410f78){_0x2b8662['or'](_0x8ea2('0x93'),'%,'+_0x410f78+',%');});}if(_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x94')]){var _0x262cef=_0x5352b9[_0x8ea2('0x4e')]['filter']['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x8ea2('0x95')](_0x262cef)){_0x2bbec0['or']('i.id\x20LIKE\x20?',_0x262cef+'%');}else{_0x2bbec0['or'](_0x8ea2('0x96'),qs[_0x8ea2('0x78')](_0x262cef))['or'](_0x8ea2('0x97'),_0x262cef+'%');}}}_0x59e3df[_0x8ea2('0x59')](_0x2bbec0);_0x59e3df[_0x8ea2('0x98')](_0x8ea2('0x99'));var _0x4b4d64={'type':db[_0x8ea2('0x9a')][_0x8ea2('0x9b')][_0x8ea2('0x9c')],'raw':!![]};var _0x335a96=_0x59e3df[_0x8ea2('0x9d')]();_0x335a96['field']('i.id');_0x335a96[_0x8ea2('0x5c')](_0x8ea2('0x9e'),_0x8ea2('0x72'));if(_0x1ef615[_0x8ea2('0x57')]){_0x1ef615[_0x8ea2('0x57')][_0x8ea2('0x47')](function(_0x2e0bbe){var _0x9c4960=_0x2e0bbe[0x0]===_0x8ea2('0x9f')?_0x2e0bbe[0x0]:'i.'+_0x2e0bbe[0x0];_0x59e3df[_0x8ea2('0x57')](_0x9c4960,_0x2e0bbe[0x1]===_0x8ea2('0xa0')?![]:!![]);});}if(!_[_0x8ea2('0xa1')](_0x11824e)){_0x59e3df[_0x8ea2('0x73')](_0x2b8662);_0x335a96[_0x8ea2('0x59')](_0x8ea2('0xa2'),_0x11824e);}BPromise[_0x8ea2('0xa3')]()[_0x8ea2('0x25')](function(){if(!_0x21485a){if(_0x5352b9['query']['ChatWebsiteId'])return;_0x335a96[_0x8ea2('0x59')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x59e3df[_0x8ea2('0x59')](_0x8ea2('0xa4'));return;}if(_0x5352b9['user'][_0x8ea2('0xa5')]!=='agent')return;return _0x5352b9[_0x8ea2('0xa6')][_0x8ea2('0xa7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x17dee8){if(_[_0x8ea2('0xa1')](_0x17dee8)){_0x335a96[_0x8ea2('0x59')](_0x8ea2('0xa8'));_0x59e3df[_0x8ea2('0x59')](_0x8ea2('0xa8'));}else{_0x335a96[_0x8ea2('0x59')](_0x8ea2('0x85'),_[_0x8ea2('0x43')](_0x17dee8,'id'));_0x59e3df[_0x8ea2('0x59')]('i.ChatWebsiteId\x20IN\x20?',_[_0x8ea2('0x43')](_0x17dee8,'id'));}});})[_0x8ea2('0x25')](function(){if(_0x5352b9['user'][_0x8ea2('0xa5')]==='agent'&&!_0x21485a&&!_0x5352b9['query']['ChatWebsiteId'])return[];return db[_0x8ea2('0xa9')]['query'](_0x335a96[_0x8ea2('0xaa')](),_0x4b4d64);})[_0x8ea2('0x25')](function(_0x12ed20){_0x5cb6ad[_0x8ea2('0x35')]=_0x12ed20[_0x8ea2('0x54')];if(_0x5cb6ad[_0x8ea2('0x35')]===0x0)return[];return db['sequelize'][_0x8ea2('0x4e')](_0x24a22a['toString'](),_0x4b4d64)[_0x8ea2('0x25')](function(_0x18aa81){_0x4afd85=_[_0x8ea2('0xab')](_0x18aa81,'id');_0x4b4d64=_[_0x8ea2('0x3d')](_0x4b4d64,{'model':db[_0x8ea2('0x49')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5352b9['query'][_0x8ea2('0x53')]){_0x1ef615[_0x8ea2('0x52')][_0x8ea2('0x47')](function(_0x2a82b2){_0x59e3df[_0x8ea2('0x5c')]('i.'+_0x2a82b2);});}else{_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0x9e'),_0x8ea2('0x72'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xac'),_0x8ea2('0xad'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xae'),_0x8ea2('0xaf'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xb0'),_0x8ea2('0x9f'));_0x59e3df['field'](_0x8ea2('0xb1'));_0x59e3df['field']('c.firstName',_0x8ea2('0xb2'));_0x59e3df[_0x8ea2('0x5c')]('c.lastName',_0x8ea2('0xb3'));_0x59e3df[_0x8ea2('0x5c')]('c.email',_0x8ea2('0xb4'));_0x59e3df[_0x8ea2('0x5c')]('c.phone',_0x8ea2('0xb5'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xb6'),_0x8ea2('0xb7'));_0x59e3df[_0x8ea2('0x5c')]('c.fax',_0x8ea2('0xb8'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xb9'),_0x8ea2('0xba'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xbb'),_0x8ea2('0xbc'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xbd'),'TagIds');}if(_0x1ef615[_0x8ea2('0x34')])_0x59e3df['limit'](_0x1ef615[_0x8ea2('0x34')]);if(_0x1ef615[_0x8ea2('0x32')])_0x59e3df[_0x8ea2('0x32')](_0x1ef615[_0x8ea2('0x32')]);return db[_0x8ea2('0xa9')]['query'](_0x59e3df[_0x8ea2('0xaa')](),_0x4b4d64);})[_0x8ea2('0x25')](function(_0x4fdd16){if(_0x4fdd16['length']>0x0)_0x48aebf[_0x8ea2('0x59')](_0x8ea2('0xbe'),_['map'](_0x4fdd16,'id'));return db['sequelize'][_0x8ea2('0x4e')](_0x48aebf[_0x8ea2('0xaa')](),_0x4b4d64)['then'](function(_0x2b7e80){var _0x2f6673=_[_0x8ea2('0xbf')](_0x2b7e80,_0x8ea2('0xc0'));var _0xdf4de9=[];_0x4fdd16['forEach'](function(_0x2e3a5d){_0xdf4de9[_0x8ea2('0xc1')](updateChatInteraction(_0x2e3a5d,_0x4afd85,_0x2f6673));});return BPromise[_0x8ea2('0xc2')](_0xdf4de9);});});})[_0x8ea2('0x25')](function(_0x412af1){_0x5cb6ad['rows']=_0x412af1;return _0x5cb6ad;})[_0x8ea2('0x25')](respondWithFilteredResult(_0x3afb80,_0x1ef615))['catch'](handleError(_0x3afb80,null));};exports['show']=function(_0x9468be,_0x17e9fc){var _0x5c95ec={'raw':![],'where':{'id':_0x9468be[_0x8ea2('0xc3')]['id']}},_0x239516={};_0x239516[_0x8ea2('0x4d')]=_[_0x8ea2('0x4f')](db[_0x8ea2('0x49')][_0x8ea2('0x4a')]);_0x239516['query']=_[_0x8ea2('0x4f')](_0x9468be[_0x8ea2('0x4e')]);_0x239516[_0x8ea2('0x50')]=_['intersection'](_0x239516[_0x8ea2('0x4d')],_0x239516[_0x8ea2('0x4e')]);_0x5c95ec[_0x8ea2('0x52')]=_[_0x8ea2('0x51')](_0x239516[_0x8ea2('0x4d')],qs['fields'](_0x9468be[_0x8ea2('0x4e')][_0x8ea2('0x53')]));_0x5c95ec[_0x8ea2('0x52')]=_0x5c95ec[_0x8ea2('0x52')]['length']?_0x5c95ec['attributes']:_0x239516[_0x8ea2('0x4d')];if(_0x9468be['query'][_0x8ea2('0xc4')]){_0x5c95ec['include']=[{'all':!![]}];}_0x5c95ec=_[_0x8ea2('0x3d')]({},_0x5c95ec,_0x9468be[_0x8ea2('0xc5')]);return db[_0x8ea2('0x49')][_0x8ea2('0x71')](_0x5c95ec)[_0x8ea2('0x25')](handleEntityNotFound(_0x17e9fc,null))[_0x8ea2('0x25')](respondWithResult(_0x17e9fc,null))[_0x8ea2('0x2e')](handleError(_0x17e9fc,null));};exports['create']=function(_0x2c5677,_0x224fca){return db[_0x8ea2('0x49')][_0x8ea2('0xc6')](_0x2c5677[_0x8ea2('0xc7')],{})[_0x8ea2('0x25')](respondWithResult(_0x224fca,0xc9))['catch'](handleError(_0x224fca,null));};exports[_0x8ea2('0x38')]=function(_0x463372,_0x76085){if(_0x463372[_0x8ea2('0xc7')]['id']){delete _0x463372['body']['id'];}return db['ChatInteraction']['find']({'where':{'id':_0x463372[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x76085,null))[_0x8ea2('0x25')](saveUpdates(_0x463372['body'],null))[_0x8ea2('0x25')](respondWithResult(_0x76085,null))[_0x8ea2('0x2e')](handleError(_0x76085,null));};exports[_0x8ea2('0x39')]=function(_0x500b47,_0x331019){return db[_0x8ea2('0x49')]['find']({'where':{'id':_0x500b47[_0x8ea2('0xc3')]['id']}})['then'](handleEntityNotFound(_0x331019,null))['then'](removeEntity(_0x331019,null))[_0x8ea2('0x2e')](handleError(_0x331019,null));};exports[_0x8ea2('0xc8')]=function(_0x405020,_0x5c9359){return db[_0x8ea2('0x49')][_0x8ea2('0xc8')]()[_0x8ea2('0x25')](respondWithResult(_0x5c9359,null))[_0x8ea2('0x2e')](handleError(_0x5c9359,null));};exports[_0x8ea2('0xc9')]=function(_0x11c59e,_0x11b02a){var _0x5ab2c4=_0x11c59e[_0x8ea2('0xc3')]['id'];var _0x111f97;var _0xf76d70;var _0x384500;return db[_0x8ea2('0x49')][_0x8ea2('0xca')]({'where':{'id':_0x5ab2c4}})[_0x8ea2('0x25')](function(_0x568581){_0x111f97=_0x568581;return db[_0x8ea2('0xcb')][_0x8ea2('0xca')]({'where':{'id':_0x568581[_0x8ea2('0xcc')]},'attributes':['id',_0x8ea2('0xcd'),_0x8ea2('0xce'),'vidaooTopic',_0x8ea2('0xcf'),_0x8ea2('0xd0')],'raw':!![]});})[_0x8ea2('0x25')](function(_0x1c336e){if(_0x1c336e&&_0x1c336e[_0x8ea2('0xcd')]&&_0x1c336e[_0x8ea2('0xce')]){_0xf76d70=_0x1c336e;var _0x473ae2={'interaction':{'id':_0x5ab2c4},'agent':{'id':_0x11c59e[_0x8ea2('0xa6')]['id'],'name':_0x11c59e[_0x8ea2('0xa6')]['name'],'fullname':_0x11c59e['user']['fullname'],'email':_0x11c59e[_0x8ea2('0xa6')]['email']},'contact':_0x11c59e[_0x8ea2('0xc7')][_0x8ea2('0x3e')],'account':_0x11c59e[_0x8ea2('0xc7')][_0x8ea2('0x41')]};var _0x6c0ccc={'rejectUnauthorized':![],'method':_0x8ea2('0xd1'),'url':_0x8ea2('0xd2'),'headers':{'X-APIKEY':_0x1c336e[_0x8ea2('0xcd')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x11c59e[_0x8ea2('0xa6')][_0x8ea2('0xd3')]],'buttons':null,'topic':_0xf76d70['vidaooTopic'],'note':_[_0x8ea2('0xd4')](_0xf76d70[_0x8ea2('0xcf')])?null:getMustacheRender(_0xf76d70[_0x8ea2('0xcf')],_0x473ae2),'metadata':null},'redirect':_0x8ea2('0xd5'),'json':!![]};try{if(!_[_0x8ea2('0xd4')](_0xf76d70[_0x8ea2('0xd0')])){var _0xc6888c=getMustacheRender(_0xf76d70[_0x8ea2('0xd0')],_0x473ae2);var _0x152d46=JSON[_0x8ea2('0x88')](_0xc6888c);_0x6c0ccc[_0x8ea2('0xc7')][_0x8ea2('0xd6')]=_0x152d46;}}catch(_0x465e7f){throw new db[(_0x8ea2('0x9a'))][(_0x8ea2('0xd7'))](_0x8ea2('0xd8'));}return rp(_0x6c0ccc);}else{throw new db[(_0x8ea2('0x9a'))]['ValidationError']('Error\x20in\x20Vidaoo\x20configuration');}})['then'](function(_0x4b2c0f){_0x384500=_0x4b2c0f;if(_0x384500['id']){var _0x2fcddc={'body':_0x384500[_0x8ea2('0xd9')],'ChatWebsiteId':_0xf76d70['id'],'ChatInteractionId':_0x111f97['id'],'direction':'out','UserId':_0x11c59e[_0x8ea2('0xa6')]['id']};return db[_0x8ea2('0xda')][_0x8ea2('0xc6')](_0x2fcddc,{});}else{throw new db[(_0x8ea2('0x9a'))]['ValidationError'](_0x8ea2('0xdb'));}})['then'](function(){return _0x111f97[_0x8ea2('0xdc')]({'vidaooSessionId':_0x384500['id']});})[_0x8ea2('0x25')](respondWithResult(_0x11b02a,null))[_0x8ea2('0x2e')](handleError(_0x11b02a,null));};exports[_0x8ea2('0xdd')]=function(_0x3b6b03,_0x3292bc){if(_0x3b6b03['body']['id']){delete _0x3b6b03['body']['id'];}return db[_0x8ea2('0x49')][_0x8ea2('0x71')]({'where':{'id':_0x3b6b03['params']['id']},'include':[{'model':db[_0x8ea2('0xde')],'as':'Contact'}]})[_0x8ea2('0x25')](handleEntityNotFound(_0x3292bc,null))[_0x8ea2('0x25')](saveUpdates(_0x3b6b03[_0x8ea2('0xc7')],null))[_0x8ea2('0x25')](respondWithResult(_0x3292bc,null))[_0x8ea2('0x2e')](handleError(_0x3292bc,null));};exports[_0x8ea2('0xdf')]=function(_0x1383b4,_0x4c1b9d,_0x3f3822){if(_0x1383b4[_0x8ea2('0xc7')]['id']){delete _0x1383b4[_0x8ea2('0xc7')]['id'];}return db[_0x8ea2('0x49')][_0x8ea2('0x71')]({'where':{'id':_0x1383b4[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](function(_0x1c974d){if(!_0x1c974d){logger[_0x8ea2('0x2b')]('abandonInteraction,\x20%s,\x20%s,\x20%s',_0x8ea2('0xdf'),0x194,_0x8ea2('0xe0'));_0x4c1b9d[_0x8ea2('0x3a')](0x194);}else{if(_0x1c974d['UserId']){throw new db[(_0x8ea2('0x9a'))][(_0x8ea2('0xd7'))](_0x8ea2('0xe1'));}}return _0x1c974d;})[_0x8ea2('0x25')](function(_0xe18090){if(_0xe18090){return _0xe18090[_0x8ea2('0x38')]({'closed':_0x1383b4['body']['closed'],'disposition':_0x1383b4[_0x8ea2('0xc7')][_0x8ea2('0xe2')]})[_0x8ea2('0x25')](function(_0x695f4a){return _0x695f4a;});}})[_0x8ea2('0x25')](function(_0x57ff72){return respondWithRpcPromise(_0x8ea2('0xe3'),'abandon',_0x1383b4[_0x8ea2('0xc7')],client9004);})[_0x8ea2('0x25')](respondWithResult(_0x4c1b9d,null))['catch'](handleError(_0x4c1b9d,null));};exports[_0x8ea2('0xe4')]=function(_0x254b51,_0x2c11d2,_0x2aaa88){_0x254b51[_0x8ea2('0xc7')][_0x8ea2('0x3c')]=_0x254b51[_0x8ea2('0xe5')][_0x8ea2('0xe6')];_0x254b51[_0x8ea2('0xc7')][_0x8ea2('0xe7')]=_0x254b51['file'][_0x8ea2('0xe8')];_0x254b51[_0x8ea2('0xc7')][_0x8ea2('0x4b')]=_0x254b51['file'][_0x8ea2('0xe9')];return db['Attachment'][_0x8ea2('0xc6')](_0x254b51[_0x8ea2('0xc7')])[_0x8ea2('0x25')](respondWithResult(_0x2c11d2,0xc9))[_0x8ea2('0x2e')](handleError(_0x2c11d2,null));};exports[_0x8ea2('0xea')]=function(_0x1786ac,_0x7a45a8,_0x3a68e2){return db[_0x8ea2('0x49')]['findOne']({'where':{'id':_0x1786ac[_0x8ea2('0xc3')]['id']},'raw':!![]})[_0x8ea2('0x25')](handleEntityNotFound(_0x7a45a8,null))[_0x8ea2('0x25')](function(_0x8d4abd){if(_0x8d4abd){if(_0x8d4abd[_0x8ea2('0xeb')]){return _0x7a45a8[_0x8ea2('0x2f')](0x193)[_0x8ea2('0x31')]({'status':0x193,'message':_0x8ea2('0xec')});}return db[_0x8ea2('0xed')]['findOne']({'where':{'id':_0x1786ac[_0x8ea2('0x4e')][_0x8ea2('0xee')]},'raw':!![]})[_0x8ea2('0x25')](handleEntityNotFound(_0x7a45a8,null));}})[_0x8ea2('0x25')](function(_0xcbb6b3){if(_0xcbb6b3){var _0x4bdbe0=_0xcbb6b3[_0x8ea2('0xef')]!==null;var _0x44791f=path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],_0x8ea2('0xf2'));if(_0x4bdbe0){_0x44791f=path['join'](_0x44791f,_0x8ea2('0xf3'));}var _0x4e7aff=path[_0x8ea2('0xf0')](_0x44791f,_0xcbb6b3[_0x8ea2('0xe7')]);return _0x7a45a8[_0x8ea2('0xf4')](_0x4e7aff);}})['catch'](handleError(_0x7a45a8,null));};exports[_0x8ea2('0xf5')]=function(_0x48a2e2,_0x4e804c){var _0x487bab=null;var _0x1a0966=null;var _0x50087b=null;var _0x196b89=null;if(_0x48a2e2[_0x8ea2('0xc7')]['id']){delete _0x48a2e2[_0x8ea2('0xc7')]['id'];}if(_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xf6')]){_0x196b89=path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],_0x8ea2('0xf7'),util['format']('transcript-%s.txt',Date[_0x8ea2('0xf8')]()));_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xf9')]=_0x196b89;}return db['ChatInteraction']['find']({'where':{'id':_0x48a2e2['params']['id']},'include':[{'model':db[_0x8ea2('0xda')],'as':'Messages','include':[{'model':db['User'],'as':_0x8ea2('0x7f')}]}]})[_0x8ea2('0x25')](handleEntityNotFound(_0x4e804c,null))['then'](saveUpdates(_0x48a2e2['body'],null))[_0x8ea2('0x25')](function(_0x48eac8){if(_0x48eac8){_0x487bab=_0x48eac8;return db['ChatWebsite'][_0x8ea2('0x71')]({'where':{'id':_0x487bab[_0x8ea2('0xcc')]}});}})[_0x8ea2('0x25')](function(_0x54da21){if(_0x54da21){_0x50087b=_0x54da21;return db[_0x8ea2('0xde')][_0x8ea2('0x71')]({'where':{'id':_0x487bab[_0x8ea2('0x7a')]}});}})[_0x8ea2('0x25')](function(_0x3a43d5){if(_0x3a43d5){_0x1a0966=_0x3a43d5;if(_0x196b89){var _0x535b01=null;for(var _0x22e4cd=0x1;_0x22e4cd<_0x487bab['Messages'][_0x8ea2('0x54')];++_0x22e4cd){_0x535b01=_0x487bab['Messages'][_0x22e4cd];var _0x230a70=_0x535b01['UserId']?util['format'](_0x8ea2('0xfa'),_0x50087b[_0x8ea2('0xfb')],_0x535b01[_0x8ea2('0x82')]):_0x8ea2('0xfc');var _0x332670=_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xfd')]||util[_0x8ea2('0xfe')]('%s%d',_0x8ea2('0xff'),_0x535b01[_0x8ea2('0x7a')]);switch(_0x50087b[_0x8ea2('0x100')]){case _0x8ea2('0x101'):_0x230a70=_0x535b01[_0x8ea2('0x82')]?util['format'](_0x8ea2('0xfa'),_0x50087b['agentAlias'],_0x535b01[_0x8ea2('0x82')]):'System';break;case _0x8ea2('0x102'):_0x230a70=_0x535b01[_0x8ea2('0x82')]?_0x535b01[_0x8ea2('0x7f')][_0x8ea2('0x103')]||_0x535b01['User']['fullname']:'System';break;case _0x8ea2('0x104'):_0x230a70=_0x535b01[_0x8ea2('0x82')]?_0x535b01['User'][_0x8ea2('0x105')]:_0x8ea2('0xfc');break;default:_0x230a70=_0x535b01[_0x8ea2('0x82')]?util[_0x8ea2('0xfe')](_0x8ea2('0xfa'),_0x50087b[_0x8ea2('0xfb')],_0x535b01[_0x8ea2('0x82')]):_0x8ea2('0xfc');}var _0x422280=util[_0x8ea2('0xfe')](_0x8ea2('0x106'),moment(_0x535b01[_0x8ea2('0x87')])[_0x8ea2('0xfe')]('MM/DD/YYYY\x20HH:mm:ss'),_0x535b01[_0x8ea2('0x107')]==='in'?_0x332670:_0x230a70,_0x535b01['body']);if(!_0x535b01['secret']){fs[_0x8ea2('0x108')](_0x196b89,_0x422280);}}return db['MailAccount'][_0x8ea2('0xca')]({'where':{'service':!![]},'include':[{'model':db[_0x8ea2('0x109')],'as':_0x8ea2('0x10a'),'raw':!![]}]});}}})[_0x8ea2('0x25')](function(_0xff0fae){if(_0xff0fae&&_0xff0fae['Smtp']&&_0x48a2e2[_0x8ea2('0xc7')]){var _0x3f5688={'tls':{'rejectUnauthorized':![]}};if(_0xff0fae[_0x8ea2('0x10a')]['service']){_0x3f5688['service']=_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10b')];}else{_0x3f5688['host']=_0xff0fae[_0x8ea2('0x10a')]['host'];_0x3f5688[_0x8ea2('0x10c')]=_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10c')];_0x3f5688[_0x8ea2('0x10d')]=_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10d')];}if(_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10e')]){_0x3f5688[_0x8ea2('0x10f')]={'user':_0xff0fae['Smtp']['user'],'pass':_0xff0fae[_0x8ea2('0x10a')]['pass']};}return respondWithRpcPromise(_0x8ea2('0x110'),_0x8ea2('0x111'),{'account':_0x3f5688,'message':{'from':util[_0x8ea2('0xfe')](_0x8ea2('0x112'),_0xff0fae['name'],_0xff0fae[_0x8ea2('0xd3')]||_0xff0fae[_0x8ea2('0x10a')]['user']),'to':_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xf6')],'subject':_0x8ea2('0x113'),'text':util['format']('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x48a2e2['body'][_0x8ea2('0xf6')]),'attachments':[{'path':_0x196b89}]}})['then'](function(){return _0x487bab;})[_0x8ea2('0x2e')](function(_0x488acb){console[_0x8ea2('0x2b')](_0x488acb);});}else{return _0x487bab;}})[_0x8ea2('0x25')](respondWithStatusCode(_0x4e804c,0xc8))[_0x8ea2('0x2e')](handleError(_0x4e804c,null));};exports[_0x8ea2('0x114')]=function(_0x54925a,_0x295339,_0x55c23c){return db['ChatMessage']['find']({'where':{'id':_0x54925a[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x295339,null))[_0x8ea2('0x25')](function(_0x48b51d){if(_0x48b51d){return _0x48b51d[_0x8ea2('0x114')](_0x54925a[_0x8ea2('0xc7')][_0x8ea2('0x115')],_[_0x8ea2('0x116')](_0x54925a[_0x8ea2('0xc7')],[_0x8ea2('0x115'),'id'])||{});}})[_0x8ea2('0x25')](respondWithResult(_0x295339,null))[_0x8ea2('0x2e')](handleError(_0x295339,null));};exports[_0x8ea2('0x117')]=function(_0x102d70,_0x2b014d,_0xc35654){var _0x355b91={'raw':![],'where':{}};var _0x1cf414={};var _0x48e543={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x8ea2('0xca')]({'where':{'id':_0x102d70['params']['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x2b014d,null))[_0x8ea2('0x25')](function(_0x3ebbc8){if(_0x3ebbc8){_0x1cf414['model']=_[_0x8ea2('0x4f')](db['ChatMessage']['rawAttributes']);_0x1cf414[_0x8ea2('0x4e')]=_[_0x8ea2('0x4f')](_0x102d70[_0x8ea2('0x4e')]);_0x1cf414[_0x8ea2('0x50')]=_[_0x8ea2('0x51')](_0x1cf414[_0x8ea2('0x4d')],_0x1cf414[_0x8ea2('0x4e')]);_0x355b91['attributes']=_[_0x8ea2('0x51')](_0x1cf414[_0x8ea2('0x4d')],qs[_0x8ea2('0x53')](_0x102d70['query'][_0x8ea2('0x53')]));_0x355b91[_0x8ea2('0x52')]=_0x355b91[_0x8ea2('0x52')]['length']?_0x355b91[_0x8ea2('0x52')]:_0x1cf414[_0x8ea2('0x4d')];if(!_0x102d70[_0x8ea2('0x4e')]['hasOwnProperty']('nolimit')){_0x355b91[_0x8ea2('0x34')]=qs['limit'](_0x102d70[_0x8ea2('0x4e')]['limit']);_0x355b91[_0x8ea2('0x32')]=qs[_0x8ea2('0x32')](_0x102d70[_0x8ea2('0x4e')][_0x8ea2('0x32')]);}_0x355b91[_0x8ea2('0x57')]=qs['sort'](_0x102d70[_0x8ea2('0x4e')][_0x8ea2('0x58')]);_0x355b91[_0x8ea2('0x59')]=qs[_0x8ea2('0x50')](_[_0x8ea2('0x5a')](_0x102d70[_0x8ea2('0x4e')],_0x1cf414['filters']));_0x355b91['where'][_0x8ea2('0xc0')]=_0x3ebbc8['id'];if(_0x102d70[_0x8ea2('0x4e')]['filter']){_0x355b91[_0x8ea2('0x59')]=_[_0x8ea2('0x3d')](_0x355b91[_0x8ea2('0x59')],{'$or':_[_0x8ea2('0x43')](_0x355b91['attributes'],function(_0x19ea2b){var _0x4450e8={};_0x4450e8[_0x19ea2b]={'$like':'%'+_0x102d70['query'][_0x8ea2('0x94')]+'%'};return _0x4450e8;})});}if(_0x102d70['query'][_0x8ea2('0x89')]){var _0x479b40=_0x102d70['query'][_0x8ea2('0x89')][_0x8ea2('0x46')](',');var _0xbb5964={};_0xbb5964[_0x479b40[0x0]]={'$gte':moment(_0x479b40[0x1])[_0x8ea2('0xfe')]('YYYY-MM-DD\x20HH:mm:ss')};_0x355b91[_0x8ea2('0x59')]=_[_0x8ea2('0x3d')](_0x355b91[_0x8ea2('0x59')],_0xbb5964);}_0x355b91=_['merge']({},_0x355b91,_0x102d70[_0x8ea2('0xc5')]);return db[_0x8ea2('0xda')][_0x8ea2('0x35')]({'where':_0x355b91[_0x8ea2('0x59')]})[_0x8ea2('0x25')](function(_0x46d38e){_0x48e543[_0x8ea2('0x35')]=_0x46d38e;if(_0x102d70['query'][_0x8ea2('0xc4')]){_0x355b91[_0x8ea2('0x118')]=[{'all':!![]}];}return db[_0x8ea2('0xda')][_0x8ea2('0x119')](_0x355b91);})[_0x8ea2('0x25')](function(_0x23f247){_0x48e543[_0x8ea2('0x11a')]=_0x23f247;return _0x48e543;});}})[_0x8ea2('0x25')](respondWithFilteredResult(_0x2b014d,_0x355b91))[_0x8ea2('0x2e')](handleError(_0x2b014d,null));};exports[_0x8ea2('0x11b')]=function(_0x3a37fb,_0x455009,_0x556919){var _0x58a0e5={'where':{}},_0x3be2ce={},_0x56a973={'count':0x0,'rows':[]};return db[_0x8ea2('0x49')][_0x8ea2('0xca')]({'where':{'id':_0x3a37fb[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x455009,null))[_0x8ea2('0x25')](function(_0x515381){if(_0x515381){_0x3be2ce[_0x8ea2('0x4d')]=_[_0x8ea2('0x4f')](db['ChatMessage'][_0x8ea2('0x4a')]);_0x3be2ce[_0x8ea2('0x4e')]=_[_0x8ea2('0x4f')](_0x3a37fb[_0x8ea2('0x4e')]);_0x3be2ce['filters']=_[_0x8ea2('0x51')](_0x3be2ce[_0x8ea2('0x4d')],_0x3be2ce[_0x8ea2('0x4e')]);_0x58a0e5[_0x8ea2('0x52')]=_['intersection'](_0x3be2ce[_0x8ea2('0x4d')],qs[_0x8ea2('0x53')](_0x3a37fb[_0x8ea2('0x4e')]['fields']));_0x58a0e5[_0x8ea2('0x52')]=_0x58a0e5[_0x8ea2('0x52')][_0x8ea2('0x54')]?_0x58a0e5['attributes']:_0x3be2ce['model'];if(!_0x3a37fb[_0x8ea2('0x4e')]['hasOwnProperty'](_0x8ea2('0x56'))){_0x58a0e5[_0x8ea2('0x34')]=qs[_0x8ea2('0x34')](_0x3a37fb[_0x8ea2('0x4e')]['limit']);_0x58a0e5[_0x8ea2('0x32')]=qs['offset'](_0x3a37fb['query']['offset']);}_0x58a0e5['order']=qs[_0x8ea2('0x58')](_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x58')]);_0x58a0e5[_0x8ea2('0x59')]=qs[_0x8ea2('0x50')](_['pick'](_0x3a37fb['query'],_0x3be2ce[_0x8ea2('0x50')]));_0x58a0e5['where']['ChatInteractionId']=_0x515381['id'];if(_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x94')]){_0x58a0e5[_0x8ea2('0x59')]=_['merge'](_0x58a0e5[_0x8ea2('0x59')],{'$or':_['map'](_0x58a0e5[_0x8ea2('0x52')],function(_0x4041ec){var _0x56178b={};_0x56178b[_0x4041ec]={'$like':'%'+_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x94')]+'%'};return _0x56178b;})});}_0x58a0e5['where'][_0x8ea2('0x11c')]=![];if(_0x3a37fb[_0x8ea2('0x4e')]['id']){_0x58a0e5[_0x8ea2('0x59')]['id']={'$gt':_0x3a37fb[_0x8ea2('0x4e')]['id']};}_0x58a0e5=_[_0x8ea2('0x3d')]({},_0x58a0e5,_0x3a37fb[_0x8ea2('0xc5')]);return db[_0x8ea2('0xda')][_0x8ea2('0x35')]({'where':_0x58a0e5[_0x8ea2('0x59')]})['then'](function(_0xcedece){_0x56a973['count']=_0xcedece;_0x58a0e5[_0x8ea2('0x118')]=[];if(_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x11d')]){_0x58a0e5[_0x8ea2('0x118')][_0x8ea2('0xc1')]({'model':db[_0x8ea2('0x7f')],'as':_0x8ea2('0x7f'),'attributes':['id',_0x8ea2('0x105'),'alias']});}if(_0x3a37fb['query'][_0x8ea2('0xc4')]){_0x58a0e5[_0x8ea2('0x118')]=[{'all':!![]}];}return db[_0x8ea2('0xda')][_0x8ea2('0x119')](_0x58a0e5);})[_0x8ea2('0x25')](function(_0x52bf7c){_0x56a973[_0x8ea2('0x11a')]=_0x52bf7c;return _0x56a973;});}})[_0x8ea2('0x25')](respondWithFilteredResult(_0x455009,_0x58a0e5))['catch'](handleError(_0x455009,null));};exports[_0x8ea2('0x11e')]=function(_0x3be5d0,_0x3ac848,_0x52ce76){return db['ChatInteraction'][_0x8ea2('0x71')]({'where':{'id':_0x3be5d0['params']['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x3ac848,null))[_0x8ea2('0x25')](function(_0x1030c9){if(_0x1030c9){return _0x1030c9[_0x8ea2('0x11f')](_0x3be5d0[_0x8ea2('0xc7')][_0x8ea2('0x115')],_[_0x8ea2('0x116')](_0x3be5d0[_0x8ea2('0xc7')],[_0x8ea2('0x115'),'id'])||{})[_0x8ea2('0x120')](function(){return db[_0x8ea2('0x7d')][_0x8ea2('0x119')]({'attributes':['id',_0x8ea2('0x3c'),_0x8ea2('0x5d')],'where':{'id':_0x3be5d0[_0x8ea2('0xc7')][_0x8ea2('0x115')]}});})[_0x8ea2('0x25')](function(_0x452b94){socket[_0x8ea2('0x121')]('chatInteractionTags:save',{'id':Number(_0x3be5d0['params']['id']),'tags':_0x452b94||[]});return{'id':Number(_0x3be5d0['params']['id']),'tags':_0x452b94||[]};});}})[_0x8ea2('0x25')](respondWithResult(_0x3ac848,null))[_0x8ea2('0x2e')](handleError(_0x3ac848,null));};exports[_0x8ea2('0x122')]=function(_0x9410dd,_0x497671,_0x5e3e8d){return db[_0x8ea2('0x49')]['find']({'where':{'id':_0x9410dd[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x497671,null))[_0x8ea2('0x25')](function(_0x19b042){if(_0x19b042){return _0x19b042[_0x8ea2('0x122')](_0x9410dd[_0x8ea2('0x4e')][_0x8ea2('0x115')]);}})['then'](respondWithStatusCode(_0x497671,null))[_0x8ea2('0x2e')](handleError(_0x497671,null));};exports[_0x8ea2('0xf4')]=function(_0x2dc450,_0x34e1c5){var _0x5b929c=moment()['unix']()[_0x8ea2('0xaa')]();var _0x263123=path[_0x8ea2('0xf0')](config['root'],'server',_0x8ea2('0x123'),'tmp');var _0x40e8e6=path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],'server',_0x8ea2('0x123'),_0x8ea2('0x124'));var _0x2dfabc=path[_0x8ea2('0xf0')](_0x263123,_0x5b929c);var _0x515049=util['format'](_0x8ea2('0x125'),_0x2dc450[_0x8ea2('0xc3')]['id'],_0x5b929c);var _0x39000d=path['join'](_0x263123,_0x515049);var _0x3a1752=[];_0x3a1752['push']({'model':db[_0x8ea2('0x7f')],'as':'User','attributes':['id',_0x8ea2('0x105')],'raw':!![]});_0x3a1752['push']({'model':db[_0x8ea2('0xde')],'as':_0x8ea2('0x75'),'attributes':['id',_0x8ea2('0x126'),_0x8ea2('0x127')],'raw':!![]});if(_0x2dc450['query'][_0x8ea2('0x124')]){_0x3a1752[_0x8ea2('0xc1')]({'model':db[_0x8ea2('0xed')],'as':_0x8ea2('0xed'),'raw':!![]});}var _0x5ba508=[{'model':db[_0x8ea2('0xda')],'as':_0x8ea2('0x128'),'attributes':['id',_0x8ea2('0xc7'),_0x8ea2('0x87'),_0x8ea2('0x107'),'secret',_0x8ea2('0x129')],'include':_0x3a1752}];_0x5ba508[_0x8ea2('0xc1')]({'model':db[_0x8ea2('0xcb')],'as':_0x8ea2('0x12a'),'attributes':['id','name']});_0x5ba508[_0x8ea2('0xc1')]({'model':db[_0x8ea2('0x7f')],'as':'Owner','attributes':['id','fullname']});return db['ChatInteraction'][_0x8ea2('0x71')]({'where':{'id':_0x2dc450[_0x8ea2('0xc3')]['id']},'include':_0x5ba508})[_0x8ea2('0x25')](handleEntityNotFound(_0x34e1c5,null))[_0x8ea2('0x25')](function(_0x3c9013){if(_0x3c9013){var _0x103c43=_0x3c9013['get']({'plain':!![]});fs['mkdirSync'](_0x2dfabc);var _0xc099b6={'channel':_0x8ea2('0x12b'),'account':_0x103c43[_0x8ea2('0x12a')]['name'],'agent':_0x103c43['Owner']?_0x103c43[_0x8ea2('0x12c')][_0x8ea2('0x105')]:'N.A.','createdAt':moment(_0x103c43[_0x8ea2('0x87')])['format'](_0x8ea2('0x12d'))[_0x8ea2('0xaa')](),'closedAt':_0x103c43[_0x8ea2('0xeb')]?moment(_0x103c43['closedAt'])[_0x8ea2('0xfe')](_0x8ea2('0x12d'))['toString']():'','disposition':_0x103c43[_0x8ea2('0xe2')],'chatInfo':{'browser':_0x103c43[_0x8ea2('0x12e')],'os':_0x103c43['osName'],'referer':_0x103c43['referer'],'customerIp':_0x103c43[_0x8ea2('0x12f')],'customerPort':_0x103c43[_0x8ea2('0x130')]?_0x103c43[_0x8ea2('0x130')]:'N.A.'},'messages':_(_0x103c43[_0x8ea2('0x128')])[_0x8ea2('0x131')]()[_0x8ea2('0x94')]({'secret':![]})[_0x8ea2('0x43')](function(_0x36799a){if(_0x36799a['Attachment']){var _0x1cc1d9=path['join'](_0x40e8e6,_0x36799a[_0x8ea2('0xed')]['basename']);if(fs[_0x8ea2('0x132')](_0x1cc1d9)){fs[_0x8ea2('0x133')](_0x1cc1d9)[_0x8ea2('0x134')](fs[_0x8ea2('0x135')](path['join'](_0x2dfabc,_0x36799a[_0x8ea2('0xed')][_0x8ea2('0xe7')])));}}return{'date':moment(_0x36799a[_0x8ea2('0x87')])[_0x8ea2('0xfe')](_0x8ea2('0x12d'))[_0x8ea2('0xaa')](),'sender':_0x36799a[_0x8ea2('0x107')]===_0x8ea2('0x136')?_0x36799a[_0x8ea2('0x7f')]?_0x36799a[_0x8ea2('0x7f')][_0x8ea2('0x105')]:'System':_0x36799a[_0x8ea2('0x75')][_0x8ea2('0x126')]+(_0x36799a[_0x8ea2('0x75')]['lastName']?'\x20'+_0x36799a[_0x8ea2('0x75')][_0x8ea2('0x127')]:''),'body':_0x36799a[_0x8ea2('0xed')]?_0x36799a[_0x8ea2('0xed')][_0x8ea2('0xe7')]:_0x36799a[_0x8ea2('0xc7')],'direction':_0x36799a[_0x8ea2('0x107')]===_0x8ea2('0x136')?'A':'C','secret':_0x36799a[_0x8ea2('0x11c')],'read':_0x36799a[_0x8ea2('0x129')],'attachment':_0x36799a['Attachment']};})[_0x8ea2('0x77')]()};return ejs[_0x8ea2('0x137')](path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],'server',_0x8ea2('0x138'),_0x8ea2('0x139')),{'interaction':_0xc099b6})[_0x8ea2('0x25')](function(_0x10d2b3){var _0x12a217=path[_0x8ea2('0xf0')](_0x2dfabc,_0x8ea2('0x13a')+_0x103c43['id']+'-'+_0x5b929c+'.pdf');var _0x44b0dc={'path':_0x12a217,'channel':_0x8ea2('0x12b'),'interactionId':_0x103c43['id']};return pdf['createPdfFromHTML'](_0x10d2b3,_0x44b0dc);})[_0x8ea2('0x25')](function(){return new BPromise(function(_0x27f5e9,_0x19b678){zipdir(_0x2dfabc,{'saveTo':_0x39000d},function(_0x50ebcd,_0x5d6c63){if(_0x50ebcd)return _0x19b678(_0x50ebcd);return _0x27f5e9(_0x5d6c63);});})[_0x8ea2('0x25')](function(){return new BPromise(function(_0x55b3a1,_0x57e228){rimraf(_0x2dfabc,function(_0x3c669b){if(_0x3c669b)_0x57e228(_0x3c669b);return _0x55b3a1();});});})[_0x8ea2('0x25')](function(){return _0x34e1c5['download'](_0x39000d,_0x515049,function(_0x688d21){if(_0x688d21){console[_0x8ea2('0x13b')]('err',_0x688d21);}else{fs[_0x8ea2('0x13c')](_0x39000d);}});});});}else{return _0x34e1c5['sendStatus'](0xc8);}})[_0x8ea2('0x2e')](handleError(_0x34e1c5,null));};
\ No newline at end of file
+var _0x3468=['Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','o.internal','toString','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','push','all','rows','show','params','includeAll','include','create','describe','createVidaooSession','findOne','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','out','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandonInteraction,\x20%s,\x20%s,\x20%s','abandon','entity\x20not\x20found','Interaction\x20already\x20assigned','update','AbandonInteraction','attachmentUpload','file','basename','filename','mimetype','Attachment','attachmentDownload','attachId','ChatOfflineMessageId','join','root','offline-chat/','download','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','pathTranscript','ChatMessage','Messages','%s%d','agentAlias','System','Visitor','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','service','Smtp','host','port','secure','authentication','auth','pass','SendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','nolimit','$gte','YYYY-MM-DD\x20HH:mm:ss','options','findAll','getMyMessages','includeAgent','setTags','spread','emit','chatInteractionTags:save','removeTags','server','files','transcript-%d-%s.zip','attachments','ChatWebsite','Account','Owner','get','mkdirSync','N.A.','disposition','browserName','osName','referer','customerIp','customerPort','tail','createReadStream','pipe','createWriteStream','lastName','renderFile','downloadInteraction.ejs','transcript-','.pdf','Chat','createPdfFromHTML','log','err','unlinkSync','eml-format','fast-json-patch','bluebird','mustache','util','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','client','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','ChatInteraction,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','destroy','stack','name','send','render','merge','body','contact','agent','interaction','account','Users','map','fullname','TagIds','Tags','forEach','talking','answered','unmanaged','abandoned','closed','UserId','waiting','total','index','ChatInteraction','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','select','field','color','tools_tags','from','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','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','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','text','start','Tag','split','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','some','compact','isEmpty','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','parse','$lte','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','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','i.id','Sequelize','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','role','user','i.ChatWebsiteId\x20IS\x20NULL','sequelize','keyBy','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','c.email'];(function(_0x262f44,_0x3847ba){var _0x33b27c=function(_0x5db154){while(--_0x5db154){_0x262f44['push'](_0x262f44['shift']());}};_0x33b27c(++_0x3847ba);}(_0x3468,0x8d));var _0x8346=function(_0x53d6c5,_0x36c655){_0x53d6c5=_0x53d6c5-0x0;var _0x138318=_0x3468[_0x53d6c5];return _0x138318;};'use strict';var emlformat=require(_0x8346('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x8346('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x8346('0x2'));var Mustache=require(_0x8346('0x3'));var util=require(_0x8346('0x4'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8346('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8346('0x6'));var squel=require(_0x8346('0x7'));var crypto=require(_0x8346('0x8'));var jsforce=require(_0x8346('0x9'));var deskjs=require(_0x8346('0xa'));var toCsv=require(_0x8346('0xb'));var querystring=require(_0x8346('0xc'));var Papa=require(_0x8346('0xd'));var Redis=require(_0x8346('0xe'));var authService=require(_0x8346('0xf'));var qs=require(_0x8346('0x10'));var as=require(_0x8346('0x11'));var pdf=require(_0x8346('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8346('0x13'))(_0x8346('0x14'));var utils=require(_0x8346('0x15'));var config=require(_0x8346('0x16'));var licenseUtil=require(_0x8346('0x17'));var db=require(_0x8346('0x18'))['db'];config['redis']=_[_0x8346('0x19')](config[_0x8346('0x1a')],{'host':_0x8346('0x1b'),'port':0x18eb});var socket=require(_0x8346('0x1c'))(new Redis(config[_0x8346('0x1a')]));require(_0x8346('0x1d'))[_0x8346('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson[_0x8346('0x1f')]['http']({'port':0x232b});var client9004=jayson[_0x8346('0x1f')]['http']({'port':0x232c});function respondWithRpcPromise(_0xedb23c,_0x4cf8cb,_0x2b1b9b,_0x4c6aee){return new BPromise(function(_0x576e9c,_0x2909e3){var _0x308f2c=_0x4c6aee||client;return _0x308f2c['request'](_0xedb23c,_0x2b1b9b)[_0x8346('0x20')](function(_0x2e02ba){logger[_0x8346('0x21')]('ChatInteraction,\x20%s,\x20%s',_0x4cf8cb,_0x8346('0x22'));logger[_0x8346('0x23')](_0x8346('0x24'),_0x4cf8cb,'request\x20sent',JSON[_0x8346('0x25')](_0x2e02ba));if(_0x2e02ba[_0x8346('0x26')]){if(_0x2e02ba[_0x8346('0x26')]['code']===0x1f4){logger[_0x8346('0x26')](_0x8346('0x27'),_0x4cf8cb,_0x2e02ba[_0x8346('0x26')][_0x8346('0x28')]);return _0x2909e3(_0x2e02ba['error']['message']);}logger[_0x8346('0x26')]('ChatInteraction,\x20%s,\x20%s',_0x4cf8cb,_0x2e02ba[_0x8346('0x26')][_0x8346('0x28')]);return _0x576e9c(_0x2e02ba[_0x8346('0x26')][_0x8346('0x28')]);}else{logger['info'](_0x8346('0x27'),_0x4cf8cb,_0x8346('0x22'));_0x576e9c(_0x2e02ba[_0x8346('0x29')][_0x8346('0x28')]);}})[_0x8346('0x2a')](function(_0x231777){logger[_0x8346('0x26')](_0x8346('0x27'),_0x4cf8cb,_0x231777);_0x2909e3(_0x231777);});});}function respondWithStatusCode(_0x234c35,_0xd37335){_0xd37335=_0xd37335||0xcc;return function(_0x52a39d){if(_0x52a39d){return _0x234c35[_0x8346('0x2b')](_0xd37335);}return _0x234c35[_0x8346('0x2c')](_0xd37335)[_0x8346('0x2d')]();};}function respondWithResult(_0x56e575,_0x417463){_0x417463=_0x417463||0xc8;return function(_0x5770f4){if(_0x5770f4){return _0x56e575[_0x8346('0x2c')](_0x417463)['json'](_0x5770f4);}};}function respondWithFilteredResult(_0x398009,_0x22b5ef){return function(_0x11ddd0){if(_0x11ddd0){var _0x881eca=typeof _0x22b5ef[_0x8346('0x2e')]===_0x8346('0x2f')&&typeof _0x22b5ef[_0x8346('0x30')]===_0x8346('0x2f');var _0x35da42=_0x11ddd0[_0x8346('0x31')];var _0x4b0523=_0x881eca?0x0:_0x22b5ef[_0x8346('0x2e')];var _0x3a5be5=_0x881eca?_0x11ddd0[_0x8346('0x31')]:_0x22b5ef[_0x8346('0x2e')]+_0x22b5ef[_0x8346('0x30')];var _0x20c212;if(_0x3a5be5>=_0x35da42){_0x3a5be5=_0x35da42;_0x20c212=0xc8;}else{_0x20c212=0xce;}_0x398009[_0x8346('0x2c')](_0x20c212);return _0x398009[_0x8346('0x32')](_0x8346('0x33'),_0x4b0523+'-'+_0x3a5be5+'/'+_0x35da42)[_0x8346('0x34')](_0x11ddd0);}return null;};}function patchUpdates(_0x457925){return function(_0x3e01e6){try{jsonpatch[_0x8346('0x35')](_0x3e01e6,_0x457925,!![]);}catch(_0x2bdb3f){return BPromise['reject'](_0x2bdb3f);}return _0x3e01e6[_0x8346('0x36')]();};}function saveUpdates(_0x14cb1f,_0x5e7476){return function(_0x16403f){if(_0x16403f){return _0x16403f['update'](_0x14cb1f)[_0x8346('0x20')](function(_0x11ff54){return _0x11ff54;});}return null;};}function removeEntity(_0x468365,_0x31893b){return function(_0xe38e32){if(_0xe38e32){return _0xe38e32[_0x8346('0x37')]()[_0x8346('0x20')](function(){_0x468365[_0x8346('0x2c')](0xcc)[_0x8346('0x2d')]();});}};}function handleEntityNotFound(_0x22a3a0,_0x139548){return function(_0x3fa206){if(!_0x3fa206){_0x22a3a0[_0x8346('0x2b')](0x194);}return _0x3fa206;};}function handleError(_0x30682a,_0x4be746){_0x4be746=_0x4be746||0x1f4;return function(_0x1d0806){logger[_0x8346('0x26')](_0x1d0806[_0x8346('0x38')]);if(_0x1d0806[_0x8346('0x39')]){delete _0x1d0806[_0x8346('0x39')];}_0x30682a[_0x8346('0x2c')](_0x4be746)[_0x8346('0x3a')](_0x1d0806);};}function getMustacheRender(_0x4b3b81,_0x34b4f4){return Mustache[_0x8346('0x3b')](_0x4b3b81,_[_0x8346('0x3c')](_0x34b4f4[_0x8346('0x3d')],{'contact':_0x34b4f4[_0x8346('0x3e')],'message':_0x34b4f4[_0x8346('0x28')],'agent':_0x34b4f4[_0x8346('0x3f')],'interaction':_0x34b4f4[_0x8346('0x40')],'account':_0x34b4f4[_0x8346('0x41')]}))||'';}function getInteractionUsers(_0x2d9f47,_0x566934){return new BPromise(function(_0x24299d,_0x1c7e72){try{if(_0x566934[_0x2d9f47['id']]){_0x2d9f47[_0x8346('0x42')]=_[_0x8346('0x43')](_0x566934[_0x2d9f47['id']],function(_0x3434f4){return{'id':_0x3434f4['id'],'fullname':_0x3434f4[_0x8346('0x44')]};});}}catch(_0x489d17){_0x1c7e72(_0x489d17);}_0x24299d(_0x2d9f47);});}function getInteractionTags(_0x55dc24,_0x33f41d){return new BPromise(function(_0x1c2fac,_0x3c65bf){try{if(_0x55dc24[_0x8346('0x45')]){_0x55dc24[_0x8346('0x46')]=[];_0x55dc24[_0x8346('0x45')]['split'](',')[_0x8346('0x47')](function(_0x2582b8){_0x55dc24[_0x8346('0x46')]['push'](_0x33f41d[_0x2582b8]);});}delete _0x55dc24[_0x8346('0x45')];}catch(_0x1007b8){_0x3c65bf(_0x1007b8);}_0x1c2fac(_0x55dc24);});}function updateChatInteraction(_0xa7e14e,_0x40ffe1,_0xfe710e){return new BPromise(function(_0x40fc3f,_0x15d554){return getInteractionUsers(_0xa7e14e,_0xfe710e)['then'](function(_0x359de9){return getInteractionTags(_0x359de9,_0x40ffe1);})[_0x8346('0x20')](function(_0xd2a21f){return getStateInteraction(_0xd2a21f);})[_0x8346('0x20')](function(_0x4f5278){_0x40fc3f(_0x4f5278);})['catch'](function(_0x47040b){_0x15d554(_0x47040b);});});}function getStateInteraction(_0xb27ca4){return new BPromise(function(_0x45989a,_0xebe9bd){_0xb27ca4['waiting']=0x0;_0xb27ca4[_0x8346('0x48')]=0x0;_0xb27ca4[_0x8346('0x49')]=0x0;_0xb27ca4[_0x8346('0x4a')]=0x0;_0xb27ca4[_0x8346('0x4b')]=0x0;_0xb27ca4['total']=0x0;if(!_0xb27ca4[_0x8346('0x4c')]&&!_0xb27ca4[_0x8346('0x4d')])_0xb27ca4[_0x8346('0x4e')]+=0x1;if(!_0xb27ca4['closed']&&_0xb27ca4[_0x8346('0x4d')])_0xb27ca4[_0x8346('0x48')]+=0x1;if(_0xb27ca4['closed']&&_0xb27ca4[_0x8346('0x4d')])_0xb27ca4[_0x8346('0x49')]+=0x1;if(_0xb27ca4[_0x8346('0x4c')]&&!_0xb27ca4['UserId'])_0xb27ca4[_0x8346('0x4a')]+=0x1;if(_0xb27ca4['closed']&&!_0xb27ca4[_0x8346('0x4d')])_0xb27ca4[_0x8346('0x4b')]+=0x1;_0xb27ca4[_0x8346('0x4f')]+=0x1;_0x45989a(_0xb27ca4);});}exports[_0x8346('0x50')]=function(_0x43a80c,_0x48c0fe){var _0x1554e5={},_0x3b45f7={},_0x591d8c={'count':0x0,'rows':[]};var _0x2e6191=_[_0x8346('0x43')](db[_0x8346('0x51')][_0x8346('0x52')],function(_0x469968){return{'name':_0x469968['fieldName'],'type':_0x469968[_0x8346('0x53')][_0x8346('0x54')]};});_0x3b45f7[_0x8346('0x55')]=_[_0x8346('0x43')](_0x2e6191,_0x8346('0x39'));_0x3b45f7[_0x8346('0x56')]=_[_0x8346('0x57')](_0x43a80c[_0x8346('0x56')]);_0x3b45f7[_0x8346('0x58')]=_[_0x8346('0x59')](_0x3b45f7[_0x8346('0x55')],_0x3b45f7[_0x8346('0x56')]);_0x1554e5[_0x8346('0x5a')]=_['intersection'](_0x3b45f7[_0x8346('0x55')],qs[_0x8346('0x5b')](_0x43a80c[_0x8346('0x56')][_0x8346('0x5b')]));_0x1554e5[_0x8346('0x5a')]=_0x1554e5[_0x8346('0x5a')]['length']?_0x1554e5[_0x8346('0x5a')]:_0x3b45f7['model'];if(!_0x43a80c[_0x8346('0x56')][_0x8346('0x5c')]('nolimit')){_0x1554e5[_0x8346('0x30')]=qs[_0x8346('0x30')](_0x43a80c[_0x8346('0x56')][_0x8346('0x30')]);_0x1554e5[_0x8346('0x2e')]=qs[_0x8346('0x2e')](_0x43a80c[_0x8346('0x56')]['offset']);}_0x1554e5[_0x8346('0x5d')]=qs[_0x8346('0x5e')](_0x43a80c[_0x8346('0x56')][_0x8346('0x5e')]);_0x1554e5[_0x8346('0x5f')]=qs[_0x8346('0x58')](_[_0x8346('0x60')](_0x43a80c[_0x8346('0x56')],_0x3b45f7[_0x8346('0x58')]),_0x2e6191);var _0x13eec6=[];var _0x33e2ca=squel[_0x8346('0x61')]()[_0x8346('0x62')]('id')[_0x8346('0x62')](_0x8346('0x39'))[_0x8346('0x62')](_0x8346('0x63'))['from'](_0x8346('0x64'));var _0x593063=squel['select']()[_0x8346('0x62')]('u.id')[_0x8346('0x62')]('u.fullname')['field']('ui.ChatInteractionId')[_0x8346('0x65')](_0x8346('0x66'),'ui')[_0x8346('0x67')](_0x8346('0x68'),'u',_0x8346('0x69'));var _0x51097d=squel[_0x8346('0x61')]()[_0x8346('0x65')](_0x8346('0x6a'),'i')[_0x8346('0x67')](_0x8346('0x6b'),'c',_0x8346('0x6c'))[_0x8346('0x67')](_0x8346('0x68'),'o',_0x8346('0x6d'))['left_join'](_0x8346('0x6e'),'a','a.id\x20=\x20i.ChatWebsiteId')[_0x8346('0x67')]('chat_messages','me',_0x8346('0x6f'))[_0x8346('0x67')](_0x8346('0x70'),'it',_0x8346('0x71'))[_0x8346('0x67')](_0x8346('0x64'),'t',_0x8346('0x72'));var _0x486ea2=squel[_0x8346('0x73')]();var _0x33c8f4=[];var _0x3e021e=squel[_0x8346('0x73')]();var _0x1aaa71;if(_0x43a80c[_0x8346('0x56')]['search']){_0x1aaa71=as[_0x8346('0x74')](_0x43a80c[_0x8346('0x56')][_0x8346('0x75')]);var _0x4609d9=_0x1aaa71[_0x8346('0x76')];for(var _0x140d89=0x0;_0x140d89<_0x1aaa71['conditions'][_0x8346('0x77')];_0x140d89++){var _0x5e6ca6=_0x1aaa71[_0x8346('0x78')][_0x140d89];var _0x47fb33='i';var _0x4ec42c=_[_0x8346('0x79')](_0x2e6191,['name',_0x5e6ca6[_0x8346('0x62')]]);if(!_0x4ec42c){switch(_0x5e6ca6[_0x8346('0x62')]){case _0x8346('0x7a'):if(_0x5e6ca6[_0x8346('0x7b')]==0x1){_0x51097d[_0x8346('0x7c')]('`'+_0x5e6ca6[_0x8346('0x62')]+_0x8346('0x7d'));}else{_0x51097d[_0x8346('0x7c')]('`'+_0x5e6ca6[_0x8346('0x62')]+_0x8346('0x7e'));}break;case _0x8346('0x7f'):if(_0x5e6ca6[_0x8346('0x80')]===_0x8346('0x81')){if(_0x5e6ca6['value']['split']('\x20')['length']>0x1){_0x486ea2[_0x4609d9](_0x8346('0x82'),qs[_0x8346('0x83')](_0x5e6ca6[_0x8346('0x7b')]),null);}else{var _0x25f418='%'+_0x5e6ca6[_0x8346('0x7b')]+'%';_0x486ea2[_0x4609d9]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x25f418,_0x25f418,_0x25f418);}}else{_0x4ec42c=_[_0x8346('0x79')](_0x2e6191,['name',_0x8346('0x84')]);_0x5e6ca6[_0x8346('0x62')]=_0x8346('0x84');_0x1be3ff=as[_0x8346('0x85')](_0x47fb33,_0x4ec42c[_0x8346('0x53')],_0x5e6ca6);_0x486ea2[_0x4609d9](_0x1be3ff[_0x8346('0x86')],_0x1be3ff['value'][_0x8346('0x87')],_0x1be3ff['value'][_0x8346('0x2d')]);}break;case _0x8346('0x88'):var _0x116ae6=_0x5e6ca6[_0x8346('0x7b')][_0x8346('0x89')](',')[_0x8346('0x43')](function(_0x19fc44){return Number(_0x19fc44);});_0x116ae6['forEach'](function(_0x55a68f){_0x3e021e['or'](_0x8346('0x8a'),'%,'+_0x55a68f+',%');});_0x33c8f4=_[_0x8346('0x8b')](_0x33c8f4,_0x116ae6);break;case _0x8346('0x8c'):if(_0x5e6ca6[_0x8346('0x80')]===_0x8346('0x81')){_0x486ea2[_0x4609d9](_0x8346('0x8d'),'%'+_0x5e6ca6[_0x8346('0x7b')]+'%',null);}else{_0x4ec42c=_[_0x8346('0x79')](_0x2e6191,[_0x8346('0x39'),_0x8346('0x4d')]);_0x5e6ca6[_0x8346('0x62')]=_0x8346('0x4d');_0x1be3ff=as[_0x8346('0x85')](_0x47fb33,_0x4ec42c[_0x8346('0x53')],_0x5e6ca6);_0x486ea2[_0x4609d9](_0x1be3ff['text'],_0x1be3ff['value'][_0x8346('0x87')],_0x1be3ff[_0x8346('0x7b')][_0x8346('0x2d')]);}break;case _0x8346('0x3d'):_0x1be3ff=as[_0x8346('0x85')]('me',null,_0x5e6ca6);_0x486ea2[_0x4609d9](_0x1be3ff[_0x8346('0x86')],_0x1be3ff[_0x8346('0x7b')][_0x8346('0x87')],_0x1be3ff[_0x8346('0x7b')]['end']);break;}}else{var _0x1be3ff=as['buildExpression'](_0x47fb33,_0x4ec42c[_0x8346('0x53')],_0x5e6ca6);_0x486ea2[_0x4609d9](_0x1be3ff[_0x8346('0x86')],_0x1be3ff['value']['start'],_0x1be3ff[_0x8346('0x7b')][_0x8346('0x2d')]);}}}else{var _0x285f25=_(_0x43a80c[_0x8346('0x56')])[_0x8346('0x57')]()[_0x8346('0x43')](function(_0x20aaa1){return _[_0x8346('0x8e')](_0x2e6191,[_0x8346('0x39'),_0x20aaa1])?_0x20aaa1:undefined;})[_0x8346('0x8f')]()[_0x8346('0x7b')]();if(!_[_0x8346('0x90')](_0x285f25)){_0x285f25['forEach'](function(_0x22e8a1){if(_0x22e8a1===_0x8346('0x91')){_0x51097d[_0x8346('0x5f')](_0x8346('0x92'),[][_0x8346('0x93')](_0x43a80c[_0x8346('0x56')][_0x22e8a1]));}else if(_0x22e8a1===_0x8346('0x94')){var _0x534f3f=JSON['parse'](_0x43a80c['query'][_0x22e8a1])['$gte'];var _0x162c6c=JSON[_0x8346('0x95')](_0x43a80c[_0x8346('0x56')][_0x22e8a1])[_0x8346('0x96')];_0x51097d[_0x8346('0x5f')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x534f3f,_0x162c6c);}else{if(_0x43a80c[_0x8346('0x56')][_0x22e8a1]===_0x8346('0x97')){_0x51097d[_0x8346('0x5f')]('i.'+_0x22e8a1+'\x20IS\x20NULL');}else{_0x51097d['where']('i.'+_0x22e8a1+_0x8346('0x98'),_0x43a80c[_0x8346('0x56')][_0x22e8a1]);}}});}if(_0x43a80c['query'][_0x8346('0x99')]){if(_0x43a80c['query'][_0x8346('0x99')]==0x1){_0x51097d['having'](_0x8346('0x9a'));}else{_0x51097d[_0x8346('0x7c')](_0x8346('0x9b'));}}if(_0x43a80c[_0x8346('0x56')][_0x8346('0x9c')]){_0x33c8f4=_[_0x8346('0x9d')](_0x43a80c['query'][_0x8346('0x9c')])?_0x43a80c[_0x8346('0x56')][_0x8346('0x9c')]:new Array(_0x43a80c['query'][_0x8346('0x9c')]);_0x33c8f4['forEach'](function(_0x1f0818){_0x3e021e['or'](_0x8346('0x8a'),'%,'+_0x1f0818+',%');});}if(_0x43a80c[_0x8346('0x56')][_0x8346('0x9e')]){var _0x440e25=_0x43a80c['query'][_0x8346('0x9e')][_0x8346('0x9f')]('\x5c','\x5c\x5c')[_0x8346('0x9f')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x440e25)){_0x486ea2['or'](_0x8346('0xa0'),_0x440e25+'%');}else{_0x486ea2['or'](_0x8346('0xa1'),qs['getFullTextValue'](_0x440e25))['or'](_0x8346('0xa2'),_0x440e25+'%');}}}_0x51097d[_0x8346('0x5f')](_0x486ea2);_0x51097d[_0x8346('0xa3')](_0x8346('0xa4'));var _0x8328b={'type':db[_0x8346('0xa5')]['QueryTypes']['SELECT'],'raw':!![]};var _0x5cdaa6=_0x51097d[_0x8346('0xa6')]();_0x5cdaa6['field'](_0x8346('0xa4'));_0x5cdaa6[_0x8346('0x62')](_0x8346('0xa7'),_0x8346('0x7a'));if(_0x1554e5[_0x8346('0x5d')]){_0x1554e5[_0x8346('0x5d')][_0x8346('0x47')](function(_0xe5c83){var _0x20b97f=_0xe5c83[0x0]===_0x8346('0xa8')?_0xe5c83[0x0]:'i.'+_0xe5c83[0x0];_0x51097d[_0x8346('0x5d')](_0x20b97f,_0xe5c83[0x1]===_0x8346('0xa9')?![]:!![]);});}if(!_[_0x8346('0x90')](_0x33c8f4)){_0x51097d[_0x8346('0x7c')](_0x3e021e);_0x5cdaa6[_0x8346('0x5f')](_0x8346('0xaa'),_0x33c8f4);}BPromise[_0x8346('0xab')]()['then'](function(){if(!_0x1aaa71){if(_0x43a80c[_0x8346('0x56')][_0x8346('0x91')])return;_0x5cdaa6[_0x8346('0x5f')](_0x8346('0xac'));_0x51097d[_0x8346('0x5f')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x43a80c['user'][_0x8346('0xad')]!==_0x8346('0x3f'))return;return _0x43a80c[_0x8346('0xae')]['getChatWebsites']({'attributes':['id'],'raw':!![]})['then'](function(_0x2c949f){if(_['isEmpty'](_0x2c949f)){_0x5cdaa6[_0x8346('0x5f')](_0x8346('0xaf'));_0x51097d[_0x8346('0x5f')]('i.ChatWebsiteId\x20IS\x20NULL');}else{_0x5cdaa6[_0x8346('0x5f')](_0x8346('0x92'),_[_0x8346('0x43')](_0x2c949f,'id'));_0x51097d['where'](_0x8346('0x92'),_[_0x8346('0x43')](_0x2c949f,'id'));}});})[_0x8346('0x20')](function(){if(_0x43a80c['user'][_0x8346('0xad')]===_0x8346('0x3f')&&!_0x1aaa71&&!_0x43a80c['query'][_0x8346('0x91')])return[];return db['sequelize'][_0x8346('0x56')](_0x5cdaa6['toString'](),_0x8328b);})[_0x8346('0x20')](function(_0x5a8a4e){_0x591d8c[_0x8346('0x31')]=_0x5a8a4e[_0x8346('0x77')];if(_0x591d8c[_0x8346('0x31')]===0x0)return[];return db[_0x8346('0xb0')][_0x8346('0x56')](_0x33e2ca['toString'](),_0x8328b)[_0x8346('0x20')](function(_0x552dce){_0x13eec6=_[_0x8346('0xb1')](_0x552dce,'id');_0x8328b=_[_0x8346('0x3c')](_0x8328b,{'model':db[_0x8346('0x51')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x43a80c[_0x8346('0x56')]['fields']){_0x1554e5[_0x8346('0x5a')][_0x8346('0x47')](function(_0x3e4680){_0x51097d[_0x8346('0x62')]('i.'+_0x3e4680);});}else{_0x51097d[_0x8346('0x62')](_0x8346('0xa7'),_0x8346('0x7a'));_0x51097d[_0x8346('0x62')](_0x8346('0xb2'),_0x8346('0xb3'));_0x51097d[_0x8346('0x62')](_0x8346('0xb4'),'Account.mandatoryDisposition');_0x51097d['field'](_0x8346('0xb5'),_0x8346('0xa8'));_0x51097d[_0x8346('0x62')](_0x8346('0xb6'));_0x51097d[_0x8346('0x62')](_0x8346('0xb7'),_0x8346('0xb8'));_0x51097d['field'](_0x8346('0xb9'),'Contact.lastName');_0x51097d[_0x8346('0x62')](_0x8346('0xba'),_0x8346('0xbb'));_0x51097d[_0x8346('0x62')](_0x8346('0xbc'),_0x8346('0xbd'));_0x51097d[_0x8346('0x62')](_0x8346('0xbe'),_0x8346('0xbf'));_0x51097d[_0x8346('0x62')](_0x8346('0xc0'),'Contact.fax');_0x51097d[_0x8346('0x62')](_0x8346('0xc1'),'Owner.fullname');_0x51097d[_0x8346('0x62')](_0x8346('0xc2'),'Owner.internal');_0x51097d[_0x8346('0x62')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x8346('0x45'));}if(_0x1554e5[_0x8346('0x30')])_0x51097d[_0x8346('0x30')](_0x1554e5[_0x8346('0x30')]);if(_0x1554e5[_0x8346('0x2e')])_0x51097d['offset'](_0x1554e5['offset']);return db[_0x8346('0xb0')][_0x8346('0x56')](_0x51097d[_0x8346('0xc3')](),_0x8328b);})['then'](function(_0x2f7574){if(_0x2f7574[_0x8346('0x77')]>0x0)_0x593063[_0x8346('0x5f')](_0x8346('0xc4'),_[_0x8346('0x43')](_0x2f7574,'id'));return db[_0x8346('0xb0')][_0x8346('0x56')](_0x593063[_0x8346('0xc3')](),_0x8328b)['then'](function(_0x395946){var _0x240ee4=_[_0x8346('0xc5')](_0x395946,_0x8346('0xc6'));var _0x3314c6=[];_0x2f7574[_0x8346('0x47')](function(_0x10d167){_0x3314c6[_0x8346('0xc7')](updateChatInteraction(_0x10d167,_0x13eec6,_0x240ee4));});return BPromise[_0x8346('0xc8')](_0x3314c6);});});})[_0x8346('0x20')](function(_0x428f81){_0x591d8c[_0x8346('0xc9')]=_0x428f81;return _0x591d8c;})['then'](respondWithFilteredResult(_0x48c0fe,_0x1554e5))[_0x8346('0x2a')](handleError(_0x48c0fe,null));};exports[_0x8346('0xca')]=function(_0x552502,_0x12de4c){var _0x455024={'raw':![],'where':{'id':_0x552502[_0x8346('0xcb')]['id']}},_0x174b1b={};_0x174b1b[_0x8346('0x55')]=_[_0x8346('0x57')](db[_0x8346('0x51')]['rawAttributes']);_0x174b1b['query']=_[_0x8346('0x57')](_0x552502['query']);_0x174b1b[_0x8346('0x58')]=_[_0x8346('0x59')](_0x174b1b['model'],_0x174b1b[_0x8346('0x56')]);_0x455024[_0x8346('0x5a')]=_['intersection'](_0x174b1b[_0x8346('0x55')],qs[_0x8346('0x5b')](_0x552502['query'][_0x8346('0x5b')]));_0x455024[_0x8346('0x5a')]=_0x455024[_0x8346('0x5a')][_0x8346('0x77')]?_0x455024[_0x8346('0x5a')]:_0x174b1b[_0x8346('0x55')];if(_0x552502[_0x8346('0x56')][_0x8346('0xcc')]){_0x455024[_0x8346('0xcd')]=[{'all':!![]}];}_0x455024=_[_0x8346('0x3c')]({},_0x455024,_0x552502['options']);return db[_0x8346('0x51')][_0x8346('0x79')](_0x455024)[_0x8346('0x20')](handleEntityNotFound(_0x12de4c,null))[_0x8346('0x20')](respondWithResult(_0x12de4c,null))[_0x8346('0x2a')](handleError(_0x12de4c,null));};exports[_0x8346('0xce')]=function(_0x5693f2,_0x4cb9bf){return db['ChatInteraction']['create'](_0x5693f2[_0x8346('0x3d')],{})[_0x8346('0x20')](respondWithResult(_0x4cb9bf,0xc9))['catch'](handleError(_0x4cb9bf,null));};exports['update']=function(_0x1a6be4,_0x4e88bb){if(_0x1a6be4['body']['id']){delete _0x1a6be4['body']['id'];}return db[_0x8346('0x51')][_0x8346('0x79')]({'where':{'id':_0x1a6be4[_0x8346('0xcb')]['id']}})[_0x8346('0x20')](handleEntityNotFound(_0x4e88bb,null))[_0x8346('0x20')](saveUpdates(_0x1a6be4[_0x8346('0x3d')],null))[_0x8346('0x20')](respondWithResult(_0x4e88bb,null))['catch'](handleError(_0x4e88bb,null));};exports['destroy']=function(_0x19e567,_0x1b1512){return db['ChatInteraction'][_0x8346('0x79')]({'where':{'id':_0x19e567[_0x8346('0xcb')]['id']}})[_0x8346('0x20')](handleEntityNotFound(_0x1b1512,null))['then'](removeEntity(_0x1b1512,null))[_0x8346('0x2a')](handleError(_0x1b1512,null));};exports[_0x8346('0xcf')]=function(_0x4f83aa,_0x4a1fb4){return db['ChatInteraction']['describe']()[_0x8346('0x20')](respondWithResult(_0x4a1fb4,null))[_0x8346('0x2a')](handleError(_0x4a1fb4,null));};exports[_0x8346('0xd0')]=function(_0x4aa95e,_0x2d73c1){var _0x4c6ecd=_0x4aa95e[_0x8346('0xcb')]['id'];var _0x2d2bad;var _0x973d3b;var _0x1425e3;return db[_0x8346('0x51')][_0x8346('0xd1')]({'where':{'id':_0x4c6ecd}})['then'](function(_0x210a8d){_0x2d2bad=_0x210a8d;return db['ChatWebsite']['findOne']({'where':{'id':_0x210a8d[_0x8346('0x91')]},'attributes':['id',_0x8346('0xd2'),_0x8346('0xd3'),_0x8346('0xd4'),_0x8346('0xd5'),_0x8346('0xd6')],'raw':!![]});})[_0x8346('0x20')](function(_0x11d0a9){if(_0x11d0a9&&_0x11d0a9[_0x8346('0xd2')]&&_0x11d0a9['vidaooEscalation']){_0x973d3b=_0x11d0a9;var _0x10dd06={'interaction':{'id':_0x4c6ecd},'agent':{'id':_0x4aa95e[_0x8346('0xae')]['id'],'name':_0x4aa95e[_0x8346('0xae')][_0x8346('0x39')],'fullname':_0x4aa95e[_0x8346('0xae')]['fullname'],'email':_0x4aa95e[_0x8346('0xae')][_0x8346('0xd7')]},'contact':_0x4aa95e[_0x8346('0x3d')][_0x8346('0x3e')],'account':_0x4aa95e[_0x8346('0x3d')]['account']};var _0x4f674a={'rejectUnauthorized':![],'method':_0x8346('0xd8'),'url':_0x8346('0xd9'),'headers':{'X-APIKEY':_0x11d0a9[_0x8346('0xd2')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x4aa95e[_0x8346('0xae')][_0x8346('0xd7')]],'buttons':null,'topic':_0x973d3b['vidaooTopic'],'note':_[_0x8346('0xda')](_0x973d3b[_0x8346('0xd5')])?null:getMustacheRender(_0x973d3b[_0x8346('0xd5')],_0x10dd06),'metadata':null},'redirect':_0x8346('0xdb'),'json':!![]};try{if(!_[_0x8346('0xda')](_0x973d3b[_0x8346('0xd6')])){var _0x2ea9ea=getMustacheRender(_0x973d3b['vidaooMetadata'],_0x10dd06);var _0x5e06c6=JSON['parse'](_0x2ea9ea);_0x4f674a['body']['metadata']=_0x5e06c6;}}catch(_0x200ea4){throw new db[(_0x8346('0xa5'))][(_0x8346('0xdc'))]('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x4f674a);}else{throw new db[(_0x8346('0xa5'))][(_0x8346('0xdc'))](_0x8346('0xdd'));}})[_0x8346('0x20')](function(_0xcb421c){_0x1425e3=_0xcb421c;if(_0x1425e3['id']){var _0x3dd3ac={'body':_0x1425e3[_0x8346('0xde')],'ChatWebsiteId':_0x973d3b['id'],'ChatInteractionId':_0x2d2bad['id'],'direction':_0x8346('0xdf'),'UserId':_0x4aa95e[_0x8346('0xae')]['id']};return db['ChatMessage'][_0x8346('0xce')](_0x3dd3ac,{});}else{throw new db[(_0x8346('0xa5'))][(_0x8346('0xdc'))](_0x8346('0xe0'));}})[_0x8346('0x20')](function(){return _0x2d2bad[_0x8346('0xe1')]({'vidaooSessionId':_0x1425e3['id']});})[_0x8346('0x20')](respondWithResult(_0x2d73c1,null))['catch'](handleError(_0x2d73c1,null));};exports[_0x8346('0xe2')]=function(_0x23f8e7,_0x144ae3){if(_0x23f8e7[_0x8346('0x3d')]['id']){delete _0x23f8e7[_0x8346('0x3d')]['id'];}return db[_0x8346('0x51')]['find']({'where':{'id':_0x23f8e7[_0x8346('0xcb')]['id']},'include':[{'model':db[_0x8346('0xe3')],'as':'Contact'}]})['then'](handleEntityNotFound(_0x144ae3,null))[_0x8346('0x20')](saveUpdates(_0x23f8e7[_0x8346('0x3d')],null))[_0x8346('0x20')](respondWithResult(_0x144ae3,null))['catch'](handleError(_0x144ae3,null));};exports['abandon']=function(_0x302c2b,_0x27a001,_0x1fb6fd){if(_0x302c2b[_0x8346('0x3d')]['id']){delete _0x302c2b[_0x8346('0x3d')]['id'];}return db[_0x8346('0x51')][_0x8346('0x79')]({'where':{'id':_0x302c2b[_0x8346('0xcb')]['id']}})[_0x8346('0x20')](function(_0x1c9884){if(!_0x1c9884){logger['error'](_0x8346('0xe4'),_0x8346('0xe5'),0x194,_0x8346('0xe6'));_0x27a001[_0x8346('0x2b')](0x194);}else{if(_0x1c9884[_0x8346('0x4d')]){throw new db[(_0x8346('0xa5'))][(_0x8346('0xdc'))](_0x8346('0xe7'));}}return _0x1c9884;})['then'](function(_0x3127e8){if(_0x3127e8){return _0x3127e8[_0x8346('0xe8')]({'closed':_0x302c2b['body'][_0x8346('0x4c')],'disposition':_0x302c2b['body']['disposition']})[_0x8346('0x20')](function(_0x2abc6f){return _0x2abc6f;});}})['then'](function(_0x2e8165){return respondWithRpcPromise(_0x8346('0xe9'),_0x8346('0xe5'),_0x302c2b[_0x8346('0x3d')],client9004);})[_0x8346('0x20')](respondWithResult(_0x27a001,null))[_0x8346('0x2a')](handleError(_0x27a001,null));};exports[_0x8346('0xea')]=function(_0x245a00,_0x2b04ab,_0xd83967){_0x245a00['body']['name']=_0x245a00[_0x8346('0xeb')]['originalname'];_0x245a00['body'][_0x8346('0xec')]=_0x245a00[_0x8346('0xeb')][_0x8346('0xed')];_0x245a00[_0x8346('0x3d')][_0x8346('0x53')]=_0x245a00[_0x8346('0xeb')][_0x8346('0xee')];return db[_0x8346('0xef')]['create'](_0x245a00['body'])[_0x8346('0x20')](respondWithResult(_0x2b04ab,0xc9))[_0x8346('0x2a')](handleError(_0x2b04ab,null));};exports[_0x8346('0xf0')]=function(_0x4885eb,_0x1a6036,_0xcd0a12){return db['ChatInteraction']['findOne']({'where':{'id':_0x4885eb[_0x8346('0xcb')]['id']},'raw':!![]})[_0x8346('0x20')](handleEntityNotFound(_0x1a6036,null))[_0x8346('0x20')](function(_0x3865de){if(_0x3865de){if(_0x3865de['closed']){return _0x1a6036[_0x8346('0x2c')](0x193)[_0x8346('0x34')]({'status':0x193,'message':'Unauthorized'});}return db[_0x8346('0xef')][_0x8346('0xd1')]({'where':{'id':_0x4885eb[_0x8346('0x56')][_0x8346('0xf1')]},'raw':!![]})[_0x8346('0x20')](handleEntityNotFound(_0x1a6036,null));}})[_0x8346('0x20')](function(_0x34c62a){if(_0x34c62a){var _0x4c4dd1=_0x34c62a[_0x8346('0xf2')]!==null;var _0x6868a8=path[_0x8346('0xf3')](config[_0x8346('0xf4')],'server/files/attachments/');if(_0x4c4dd1){_0x6868a8=path[_0x8346('0xf3')](_0x6868a8,_0x8346('0xf5'));}var _0x3d207d=path[_0x8346('0xf3')](_0x6868a8,_0x34c62a[_0x8346('0xec')]);return _0x1a6036[_0x8346('0xf6')](_0x3d207d);}})['catch'](handleError(_0x1a6036,null));};exports['close']=function(_0x56bdd8,_0x54492f){var _0x463cf6=null;var _0xa9be71=null;var _0x19ac60=null;var _0x33e5dd=null;if(_0x56bdd8['body']['id']){delete _0x56bdd8[_0x8346('0x3d')]['id'];}if(_0x56bdd8[_0x8346('0x3d')][_0x8346('0xf7')]){_0x33e5dd=path['join'](config[_0x8346('0xf4')],_0x8346('0xf8'),util[_0x8346('0xf9')](_0x8346('0xfa'),Date['now']()));_0x56bdd8[_0x8346('0x3d')][_0x8346('0xfb')]=_0x33e5dd;}return db[_0x8346('0x51')][_0x8346('0x79')]({'where':{'id':_0x56bdd8[_0x8346('0xcb')]['id']},'include':[{'model':db[_0x8346('0xfc')],'as':_0x8346('0xfd'),'include':[{'model':db[_0x8346('0x8c')],'as':_0x8346('0x8c')}]}]})[_0x8346('0x20')](handleEntityNotFound(_0x54492f,null))[_0x8346('0x20')](saveUpdates(_0x56bdd8[_0x8346('0x3d')],null))[_0x8346('0x20')](function(_0x26c8c9){if(_0x26c8c9){_0x463cf6=_0x26c8c9;return db['ChatWebsite'][_0x8346('0x79')]({'where':{'id':_0x463cf6[_0x8346('0x91')]}});}})[_0x8346('0x20')](function(_0x119dcc){if(_0x119dcc){_0x19ac60=_0x119dcc;return db['CmContact'][_0x8346('0x79')]({'where':{'id':_0x463cf6['ContactId']}});}})['then'](function(_0x47f344){if(_0x47f344){_0xa9be71=_0x47f344;if(_0x33e5dd){var _0x1a55b4=null;for(var _0x2a3b55=0x1;_0x2a3b55<_0x463cf6[_0x8346('0xfd')][_0x8346('0x77')];++_0x2a3b55){_0x1a55b4=_0x463cf6['Messages'][_0x2a3b55];var _0x106f9f=_0x1a55b4[_0x8346('0x4d')]?util[_0x8346('0xf9')](_0x8346('0xfe'),_0x19ac60[_0x8346('0xff')],_0x1a55b4[_0x8346('0x4d')]):_0x8346('0x100');var _0x256484=_0x56bdd8[_0x8346('0x3d')]['customer']||util[_0x8346('0xf9')]('%s%d',_0x8346('0x101'),_0x1a55b4[_0x8346('0x84')]);switch(_0x19ac60[_0x8346('0x102')]){case _0x8346('0x103'):_0x106f9f=_0x1a55b4[_0x8346('0x4d')]?util[_0x8346('0xf9')](_0x8346('0xfe'),_0x19ac60['agentAlias'],_0x1a55b4[_0x8346('0x4d')]):'System';break;case _0x8346('0x104'):_0x106f9f=_0x1a55b4['UserId']?_0x1a55b4['User'][_0x8346('0x105')]||_0x1a55b4[_0x8346('0x8c')][_0x8346('0x44')]:_0x8346('0x100');break;case _0x8346('0x106'):_0x106f9f=_0x1a55b4[_0x8346('0x4d')]?_0x1a55b4[_0x8346('0x8c')][_0x8346('0x44')]:'System';break;default:_0x106f9f=_0x1a55b4['UserId']?util[_0x8346('0xf9')]('%s%d',_0x19ac60[_0x8346('0xff')],_0x1a55b4[_0x8346('0x4d')]):_0x8346('0x100');}var _0x5b8040=util[_0x8346('0xf9')](_0x8346('0x107'),moment(_0x1a55b4[_0x8346('0x94')])[_0x8346('0xf9')](_0x8346('0x108')),_0x1a55b4[_0x8346('0x109')]==='in'?_0x256484:_0x106f9f,_0x1a55b4[_0x8346('0x3d')]);if(!_0x1a55b4[_0x8346('0x10a')]){fs[_0x8346('0x10b')](_0x33e5dd,_0x5b8040);}}return db[_0x8346('0x10c')][_0x8346('0xd1')]({'where':{'service':!![]},'include':[{'model':db[_0x8346('0x10d')],'as':'Smtp','raw':!![]}]});}}})['then'](function(_0x19ecca){if(_0x19ecca&&_0x19ecca['Smtp']&&_0x56bdd8[_0x8346('0x3d')]){var _0x3d2e45={'tls':{'rejectUnauthorized':![]}};if(_0x19ecca['Smtp'][_0x8346('0x10e')]){_0x3d2e45[_0x8346('0x10e')]=_0x19ecca[_0x8346('0x10f')][_0x8346('0x10e')];}else{_0x3d2e45['host']=_0x19ecca[_0x8346('0x10f')][_0x8346('0x110')];_0x3d2e45[_0x8346('0x111')]=_0x19ecca[_0x8346('0x10f')]['port'];_0x3d2e45[_0x8346('0x112')]=_0x19ecca['Smtp'][_0x8346('0x112')];}if(_0x19ecca[_0x8346('0x10f')][_0x8346('0x113')]){_0x3d2e45[_0x8346('0x114')]={'user':_0x19ecca['Smtp'][_0x8346('0xae')],'pass':_0x19ecca[_0x8346('0x10f')][_0x8346('0x115')]};}return respondWithRpcPromise(_0x8346('0x116'),'sendMail',{'account':_0x3d2e45,'message':{'from':util[_0x8346('0xf9')](_0x8346('0x117'),_0x19ecca['name'],_0x19ecca[_0x8346('0xd7')]||_0x19ecca[_0x8346('0x10f')][_0x8346('0xae')]),'to':_0x56bdd8[_0x8346('0x3d')][_0x8346('0xf7')],'subject':_0x8346('0x118'),'text':util[_0x8346('0xf9')](_0x8346('0x119'),_0x56bdd8[_0x8346('0x3d')][_0x8346('0xf7')]),'attachments':[{'path':_0x33e5dd}]}})[_0x8346('0x20')](function(){return _0x463cf6;})['catch'](function(_0x450c96){console[_0x8346('0x26')](_0x450c96);});}else{return _0x463cf6;}})[_0x8346('0x20')](respondWithStatusCode(_0x54492f,0xc8))[_0x8346('0x2a')](handleError(_0x54492f,null));};exports[_0x8346('0x11a')]=function(_0x5f2ed3,_0x4d72fe,_0x3b064a){return db['ChatMessage'][_0x8346('0x79')]({'where':{'id':_0x5f2ed3[_0x8346('0xcb')]['id']}})['then'](handleEntityNotFound(_0x4d72fe,null))['then'](function(_0x2577f4){if(_0x2577f4){return _0x2577f4['addMessage'](_0x5f2ed3[_0x8346('0x3d')][_0x8346('0x11b')],_[_0x8346('0x11c')](_0x5f2ed3[_0x8346('0x3d')],[_0x8346('0x11b'),'id'])||{});}})['then'](respondWithResult(_0x4d72fe,null))['catch'](handleError(_0x4d72fe,null));};exports[_0x8346('0x11d')]=function(_0x450742,_0x5685df,_0x3605d7){var _0x3a6ece={'raw':![],'where':{}};var _0x431ff5={};var _0x4754dd={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x8346('0xd1')]({'where':{'id':_0x450742[_0x8346('0xcb')]['id']}})['then'](handleEntityNotFound(_0x5685df,null))['then'](function(_0x6308f3){if(_0x6308f3){_0x431ff5[_0x8346('0x55')]=_[_0x8346('0x57')](db[_0x8346('0xfc')][_0x8346('0x52')]);_0x431ff5['query']=_['keys'](_0x450742[_0x8346('0x56')]);_0x431ff5[_0x8346('0x58')]=_[_0x8346('0x59')](_0x431ff5['model'],_0x431ff5[_0x8346('0x56')]);_0x3a6ece['attributes']=_[_0x8346('0x59')](_0x431ff5[_0x8346('0x55')],qs['fields'](_0x450742[_0x8346('0x56')][_0x8346('0x5b')]));_0x3a6ece[_0x8346('0x5a')]=_0x3a6ece[_0x8346('0x5a')]['length']?_0x3a6ece[_0x8346('0x5a')]:_0x431ff5['model'];if(!_0x450742['query']['hasOwnProperty'](_0x8346('0x11e'))){_0x3a6ece[_0x8346('0x30')]=qs['limit'](_0x450742[_0x8346('0x56')][_0x8346('0x30')]);_0x3a6ece[_0x8346('0x2e')]=qs[_0x8346('0x2e')](_0x450742['query']['offset']);}_0x3a6ece[_0x8346('0x5d')]=qs[_0x8346('0x5e')](_0x450742[_0x8346('0x56')]['sort']);_0x3a6ece[_0x8346('0x5f')]=qs[_0x8346('0x58')](_['pick'](_0x450742[_0x8346('0x56')],_0x431ff5['filters']));_0x3a6ece[_0x8346('0x5f')]['ChatInteractionId']=_0x6308f3['id'];if(_0x450742[_0x8346('0x56')][_0x8346('0x9e')]){_0x3a6ece['where']=_['merge'](_0x3a6ece[_0x8346('0x5f')],{'$or':_[_0x8346('0x43')](_0x3a6ece[_0x8346('0x5a')],function(_0x4b5ffe){var _0x279f4d={};_0x279f4d[_0x4b5ffe]={'$like':'%'+_0x450742[_0x8346('0x56')][_0x8346('0x9e')]+'%'};return _0x279f4d;})});}if(_0x450742[_0x8346('0x56')][_0x8346('0x11f')]){var _0x4acc85=_0x450742['query'][_0x8346('0x11f')][_0x8346('0x89')](',');var _0x238286={};_0x238286[_0x4acc85[0x0]]={'$gte':moment(_0x4acc85[0x1])[_0x8346('0xf9')](_0x8346('0x120'))};_0x3a6ece[_0x8346('0x5f')]=_['merge'](_0x3a6ece['where'],_0x238286);}_0x3a6ece=_['merge']({},_0x3a6ece,_0x450742[_0x8346('0x121')]);return db[_0x8346('0xfc')][_0x8346('0x31')]({'where':_0x3a6ece['where']})[_0x8346('0x20')](function(_0x5e56d2){_0x4754dd[_0x8346('0x31')]=_0x5e56d2;if(_0x450742[_0x8346('0x56')]['includeAll']){_0x3a6ece[_0x8346('0xcd')]=[{'all':!![]}];}return db['ChatMessage'][_0x8346('0x122')](_0x3a6ece);})[_0x8346('0x20')](function(_0x540cd2){_0x4754dd[_0x8346('0xc9')]=_0x540cd2;return _0x4754dd;});}})[_0x8346('0x20')](respondWithFilteredResult(_0x5685df,_0x3a6ece))[_0x8346('0x2a')](handleError(_0x5685df,null));};exports[_0x8346('0x123')]=function(_0x438ece,_0x2a3c40,_0x463704){var _0x20b94e={'where':{}},_0x3a7206={},_0xfaae33={'count':0x0,'rows':[]};return db[_0x8346('0x51')][_0x8346('0xd1')]({'where':{'id':_0x438ece['params']['id']}})['then'](handleEntityNotFound(_0x2a3c40,null))[_0x8346('0x20')](function(_0x33b3d3){if(_0x33b3d3){_0x3a7206['model']=_['keys'](db[_0x8346('0xfc')][_0x8346('0x52')]);_0x3a7206['query']=_[_0x8346('0x57')](_0x438ece[_0x8346('0x56')]);_0x3a7206[_0x8346('0x58')]=_[_0x8346('0x59')](_0x3a7206[_0x8346('0x55')],_0x3a7206[_0x8346('0x56')]);_0x20b94e['attributes']=_['intersection'](_0x3a7206[_0x8346('0x55')],qs[_0x8346('0x5b')](_0x438ece[_0x8346('0x56')]['fields']));_0x20b94e[_0x8346('0x5a')]=_0x20b94e[_0x8346('0x5a')]['length']?_0x20b94e[_0x8346('0x5a')]:_0x3a7206[_0x8346('0x55')];if(!_0x438ece['query'][_0x8346('0x5c')](_0x8346('0x11e'))){_0x20b94e[_0x8346('0x30')]=qs[_0x8346('0x30')](_0x438ece[_0x8346('0x56')][_0x8346('0x30')]);_0x20b94e['offset']=qs[_0x8346('0x2e')](_0x438ece[_0x8346('0x56')][_0x8346('0x2e')]);}_0x20b94e[_0x8346('0x5d')]=qs[_0x8346('0x5e')](_0x438ece[_0x8346('0x56')][_0x8346('0x5e')]);_0x20b94e['where']=qs[_0x8346('0x58')](_[_0x8346('0x60')](_0x438ece['query'],_0x3a7206[_0x8346('0x58')]));_0x20b94e[_0x8346('0x5f')][_0x8346('0xc6')]=_0x33b3d3['id'];if(_0x438ece[_0x8346('0x56')]['filter']){_0x20b94e[_0x8346('0x5f')]=_[_0x8346('0x3c')](_0x20b94e[_0x8346('0x5f')],{'$or':_[_0x8346('0x43')](_0x20b94e[_0x8346('0x5a')],function(_0x64b36a){var _0x146515={};_0x146515[_0x64b36a]={'$like':'%'+_0x438ece[_0x8346('0x56')][_0x8346('0x9e')]+'%'};return _0x146515;})});}_0x20b94e[_0x8346('0x5f')]['secret']=![];if(_0x438ece[_0x8346('0x56')]['id']){_0x20b94e[_0x8346('0x5f')]['id']={'$gt':_0x438ece[_0x8346('0x56')]['id']};}_0x20b94e=_[_0x8346('0x3c')]({},_0x20b94e,_0x438ece[_0x8346('0x121')]);return db[_0x8346('0xfc')][_0x8346('0x31')]({'where':_0x20b94e['where']})['then'](function(_0x3f4b78){_0xfaae33[_0x8346('0x31')]=_0x3f4b78;_0x20b94e[_0x8346('0xcd')]=[];if(_0x438ece['query'][_0x8346('0x124')]){_0x20b94e['include']['push']({'model':db[_0x8346('0x8c')],'as':'User','attributes':['id','fullname',_0x8346('0x105')]});}if(_0x438ece[_0x8346('0x56')]['includeAll']){_0x20b94e[_0x8346('0xcd')]=[{'all':!![]}];}return db[_0x8346('0xfc')]['findAll'](_0x20b94e);})[_0x8346('0x20')](function(_0x14fb05){_0xfaae33[_0x8346('0xc9')]=_0x14fb05;return _0xfaae33;});}})[_0x8346('0x20')](respondWithFilteredResult(_0x2a3c40,_0x20b94e))[_0x8346('0x2a')](handleError(_0x2a3c40,null));};exports['addTags']=function(_0x31955a,_0x23c50e,_0x4a8979){return db['ChatInteraction'][_0x8346('0x79')]({'where':{'id':_0x31955a['params']['id']}})[_0x8346('0x20')](handleEntityNotFound(_0x23c50e,null))[_0x8346('0x20')](function(_0x1fb4ed){if(_0x1fb4ed){return _0x1fb4ed[_0x8346('0x125')](_0x31955a[_0x8346('0x3d')][_0x8346('0x11b')],_[_0x8346('0x11c')](_0x31955a['body'],[_0x8346('0x11b'),'id'])||{})[_0x8346('0x126')](function(){return db[_0x8346('0x88')][_0x8346('0x122')]({'attributes':['id',_0x8346('0x39'),_0x8346('0x63')],'where':{'id':_0x31955a[_0x8346('0x3d')]['ids']}});})[_0x8346('0x20')](function(_0x28d741){socket[_0x8346('0x127')](_0x8346('0x128'),{'id':Number(_0x31955a[_0x8346('0xcb')]['id']),'tags':_0x28d741||[]});return{'id':Number(_0x31955a[_0x8346('0xcb')]['id']),'tags':_0x28d741||[]};});}})[_0x8346('0x20')](respondWithResult(_0x23c50e,null))[_0x8346('0x2a')](handleError(_0x23c50e,null));};exports[_0x8346('0x129')]=function(_0xb077cd,_0x1f64b9,_0x12f09d){return db[_0x8346('0x51')]['find']({'where':{'id':_0xb077cd['params']['id']}})[_0x8346('0x20')](handleEntityNotFound(_0x1f64b9,null))[_0x8346('0x20')](function(_0x6814cc){if(_0x6814cc){return _0x6814cc[_0x8346('0x129')](_0xb077cd[_0x8346('0x56')][_0x8346('0x11b')]);}})[_0x8346('0x20')](respondWithStatusCode(_0x1f64b9,null))[_0x8346('0x2a')](handleError(_0x1f64b9,null));};exports['download']=function(_0x36ae5d,_0x58cd0d){var _0x37d7c9=moment()['unix']()['toString']();var _0x2d301d=path[_0x8346('0xf3')](config[_0x8346('0xf4')],_0x8346('0x12a'),_0x8346('0x12b'),'tmp');var _0x5b08d8=path[_0x8346('0xf3')](config[_0x8346('0xf4')],_0x8346('0x12a'),_0x8346('0x12b'),'attachments');var _0x483285=path[_0x8346('0xf3')](_0x2d301d,_0x37d7c9);var _0x27465f=util[_0x8346('0xf9')](_0x8346('0x12c'),_0x36ae5d['params']['id'],_0x37d7c9);var _0x476965=path[_0x8346('0xf3')](_0x2d301d,_0x27465f);var _0x14e274=[];_0x14e274[_0x8346('0xc7')]({'model':db['User'],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x14e274['push']({'model':db[_0x8346('0xe3')],'as':_0x8346('0x7f'),'attributes':['id','firstName','lastName'],'raw':!![]});if(_0x36ae5d[_0x8346('0x56')][_0x8346('0x12d')]){_0x14e274[_0x8346('0xc7')]({'model':db[_0x8346('0xef')],'as':_0x8346('0xef'),'raw':!![]});}var _0x51a435=[{'model':db['ChatMessage'],'as':'Messages','attributes':['id',_0x8346('0x3d'),'createdAt','direction',_0x8346('0x10a'),_0x8346('0x99')],'include':_0x14e274}];_0x51a435[_0x8346('0xc7')]({'model':db[_0x8346('0x12e')],'as':_0x8346('0x12f'),'attributes':['id',_0x8346('0x39')]});_0x51a435[_0x8346('0xc7')]({'model':db['User'],'as':_0x8346('0x130'),'attributes':['id',_0x8346('0x44')]});return db[_0x8346('0x51')][_0x8346('0x79')]({'where':{'id':_0x36ae5d[_0x8346('0xcb')]['id']},'include':_0x51a435})['then'](handleEntityNotFound(_0x58cd0d,null))[_0x8346('0x20')](function(_0x1c341b){if(_0x1c341b){var _0x452511=_0x1c341b[_0x8346('0x131')]({'plain':!![]});fs[_0x8346('0x132')](_0x483285);var _0x4f3880={'channel':'Chat','account':_0x452511[_0x8346('0x12f')][_0x8346('0x39')],'agent':_0x452511['Owner']?_0x452511[_0x8346('0x130')][_0x8346('0x44')]:_0x8346('0x133'),'createdAt':moment(_0x452511[_0x8346('0x94')])['format'](_0x8346('0x120'))['toString'](),'closedAt':_0x452511[_0x8346('0x4c')]?moment(_0x452511['closedAt'])['format'](_0x8346('0x120'))[_0x8346('0xc3')]():'','disposition':_0x452511[_0x8346('0x134')],'chatInfo':{'browser':_0x452511[_0x8346('0x135')],'os':_0x452511[_0x8346('0x136')],'referer':_0x452511[_0x8346('0x137')],'customerIp':_0x452511[_0x8346('0x138')],'customerPort':_0x452511[_0x8346('0x139')]?_0x452511['customerPort']:_0x8346('0x133')},'messages':_(_0x452511[_0x8346('0xfd')])[_0x8346('0x13a')]()[_0x8346('0x9e')]({'secret':![]})[_0x8346('0x43')](function(_0x263a51){if(_0x263a51[_0x8346('0xef')]){var _0x4fea2b=path[_0x8346('0xf3')](_0x5b08d8,_0x263a51[_0x8346('0xef')][_0x8346('0xec')]);if(fs['existsSync'](_0x4fea2b)){fs[_0x8346('0x13b')](_0x4fea2b)[_0x8346('0x13c')](fs[_0x8346('0x13d')](path[_0x8346('0xf3')](_0x483285,_0x263a51[_0x8346('0xef')][_0x8346('0xec')])));}}return{'date':moment(_0x263a51[_0x8346('0x94')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x8346('0xc3')](),'sender':_0x263a51[_0x8346('0x109')]===_0x8346('0xdf')?_0x263a51[_0x8346('0x8c')]?_0x263a51[_0x8346('0x8c')]['fullname']:_0x8346('0x100'):_0x263a51['Contact']['firstName']+(_0x263a51['Contact'][_0x8346('0x13e')]?'\x20'+_0x263a51[_0x8346('0x7f')][_0x8346('0x13e')]:''),'body':_0x263a51['Attachment']?_0x263a51[_0x8346('0xef')][_0x8346('0xec')]:_0x263a51[_0x8346('0x3d')],'direction':_0x263a51['direction']===_0x8346('0xdf')?'A':'C','secret':_0x263a51[_0x8346('0x10a')],'read':_0x263a51[_0x8346('0x99')],'attachment':_0x263a51[_0x8346('0xef')]};})['value']()};return ejs[_0x8346('0x13f')](path['join'](config[_0x8346('0xf4')],_0x8346('0x12a'),'views',_0x8346('0x140')),{'interaction':_0x4f3880})['then'](function(_0x2a7df5){var _0x117174=path[_0x8346('0xf3')](_0x483285,_0x8346('0x141')+_0x452511['id']+'-'+_0x37d7c9+_0x8346('0x142'));var _0x23994b={'path':_0x117174,'channel':_0x8346('0x143'),'interactionId':_0x452511['id']};return pdf[_0x8346('0x144')](_0x2a7df5,_0x23994b);})['then'](function(){return new BPromise(function(_0x6353ca,_0x330f44){zipdir(_0x483285,{'saveTo':_0x476965},function(_0x321e09,_0x1c2eef){if(_0x321e09)return _0x330f44(_0x321e09);return _0x6353ca(_0x1c2eef);});})[_0x8346('0x20')](function(){return new BPromise(function(_0x591e91,_0x15f100){rimraf(_0x483285,function(_0x5b7af){if(_0x5b7af)_0x15f100(_0x5b7af);return _0x591e91();});});})[_0x8346('0x20')](function(){return _0x58cd0d['download'](_0x476965,_0x27465f,function(_0x244b78){if(_0x244b78){console[_0x8346('0x145')](_0x8346('0x146'),_0x244b78);}else{fs[_0x8346('0x147')](_0x476965);}});});});}else{return _0x58cd0d[_0x8346('0x2b')](0xc8);}})[_0x8346('0x2a')](handleError(_0x58cd0d,null));};
\ No newline at end of file
index cf5cd1e..3ba92a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d83=['events','ChatInteraction','../../mysqldb','setMaxListeners','save','update','then','setDataValue','map','findAll','unreadMessages','length','emit','hasOwnProperty','exports'];(function(_0x33306b,_0x2c144d){var _0x7b7012=function(_0x324870){while(--_0x324870){_0x33306b['push'](_0x33306b['shift']());}};_0x7b7012(++_0x2c144d);}(_0x7d83,0xff));var _0x37d8=function(_0x3b231a,_0x53a00d){_0x3b231a=_0x3b231a-0x0;var _0x18d67a=_0x7d83[_0x3b231a];return _0x18d67a;};'use strict';var EventEmitter=require(_0x37d8('0x0'));var ChatInteraction=require('../../mysqldb')['db'][_0x37d8('0x1')];var ChatMessage=require(_0x37d8('0x2'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x37d8('0x3')](0x0);var events={'afterCreate':_0x37d8('0x4'),'afterUpdate':_0x37d8('0x5'),'afterDestroy':'remove'};function emitEvent(_0x18525b){return function(_0x1ade7e,_0x5d1a9d,_0x55a43d){_0x1ade7e['getUsers']({'attributes':['id'],'raw':!![]})[_0x37d8('0x6')](function(_0x52bb6c){_0x1ade7e[_0x37d8('0x7')]('Users',_0x52bb6c[_0x37d8('0x8')](function(_0x134c0c){return{'id':_0x134c0c['id']};}));return ChatMessage[_0x37d8('0x9')]({'where':{'ChatInteractionId':_0x1ade7e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x37d8('0x6')](function(_0x11a493){_0x1ade7e[_0x37d8('0x7')](_0x37d8('0xa'),_0x11a493[_0x37d8('0xb')]);ChatInteractionEvents['emit'](_0x18525b+':'+_0x1ade7e['id'],_0x1ade7e);ChatInteractionEvents[_0x37d8('0xc')](_0x18525b,_0x1ade7e);_0x55a43d(null);})['catch'](_0x55a43d(null));};}for(var e in events){if(events[_0x37d8('0xd')](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0x37d8('0xe')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x1adb=['hook','exports','events','../../mysqldb','ChatInteraction','update','remove','then','map','findAll','setDataValue','unreadMessages','length','emit','hasOwnProperty'];(function(_0x1b411d,_0x47cefd){var _0x334ade=function(_0x210b46){while(--_0x210b46){_0x1b411d['push'](_0x1b411d['shift']());}};_0x334ade(++_0x47cefd);}(_0x1adb,0x179));var _0xb1ad=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x1adb[_0x19950b];return _0x3c6b41;};'use strict';var EventEmitter=require(_0xb1ad('0x0'));var ChatInteraction=require(_0xb1ad('0x1'))['db'][_0xb1ad('0x2')];var ChatMessage=require('../../mysqldb')['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xb1ad('0x3'),'afterDestroy':_0xb1ad('0x4')};function emitEvent(_0x42cdf4){return function(_0x22e4b7,_0x465684,_0x13b205){_0x22e4b7['getUsers']({'attributes':['id'],'raw':!![]})[_0xb1ad('0x5')](function(_0x169b03){_0x22e4b7['setDataValue']('Users',_0x169b03[_0xb1ad('0x6')](function(_0xcd6821){return{'id':_0xcd6821['id']};}));return ChatMessage[_0xb1ad('0x7')]({'where':{'ChatInteractionId':_0x22e4b7['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x2468c1){_0x22e4b7[_0xb1ad('0x8')](_0xb1ad('0x9'),_0x2468c1[_0xb1ad('0xa')]);ChatInteractionEvents[_0xb1ad('0xb')](_0x42cdf4+':'+_0x22e4b7['id'],_0x22e4b7);ChatInteractionEvents[_0xb1ad('0xb')](_0x42cdf4,_0x22e4b7);_0x13b205(null);})['catch'](_0x13b205(null));};}for(var e in events){if(events[_0xb1ad('0xc')](e)){var event=events[e];ChatInteraction[_0xb1ad('0xd')](e,emitEvent(event));}}module[_0xb1ad('0xe')]=ChatInteractionEvents;
\ No newline at end of file
index f2f4816..171fa9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1562=['rimraf','../../config/environment','exports','ChatInteraction','chat_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','lodash','util','bluebird','request-promise','path'];(function(_0x5bb702,_0x331110){var _0x576fbd=function(_0x46b396){while(--_0x46b396){_0x5bb702['push'](_0x5bb702['shift']());}};_0x576fbd(++_0x331110);}(_0x1562,0x1db));var _0x2156=function(_0x1d6a82,_0x37c315){_0x1d6a82=_0x1d6a82-0x0;var _0x5834ac=_0x1562[_0x1d6a82];return _0x5834ac;};'use strict';var _=require(_0x2156('0x0'));var util=require(_0x2156('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x2156('0x2'));var rp=require(_0x2156('0x3'));var fs=require('fs');var path=require(_0x2156('0x4'));var rimraf=require(_0x2156('0x5'));var config=require(_0x2156('0x6'));var attributes=require('./chatInteraction.attributes');module[_0x2156('0x7')]=function(_0x3fbd76,_0x30c138){return _0x3fbd76['define'](_0x2156('0x8'),attributes,{'tableName':_0x2156('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1df25e,_0x4302fe,_0xc15c87){if(_0x1df25e[_0x2156('0xa')]('closed')){_0x1df25e[_0x2156('0xb')]=moment()[_0x2156('0xc')](_0x2156('0xd'));}_0xc15c87(null,_0x1df25e);}},'charset':_0x2156('0xe'),'collate':_0x2156('0xf')});};
\ No newline at end of file
+var _0x7c8b=['lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./chatInteraction.attributes','exports','define','chat_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci'];(function(_0x21549c,_0x6d64d1){var _0x426cbd=function(_0x323f5b){while(--_0x323f5b){_0x21549c['push'](_0x21549c['shift']());}};_0x426cbd(++_0x6d64d1);}(_0x7c8b,0x10e));var _0xb7c8=function(_0x382a75,_0x4df8ef){_0x382a75=_0x382a75-0x0;var _0xd107f9=_0x7c8b[_0x382a75];return _0xd107f9;};'use strict';var _=require(_0xb7c8('0x0'));var util=require(_0xb7c8('0x1'));var logger=require(_0xb7c8('0x2'))('api');var moment=require('moment');var BPromise=require(_0xb7c8('0x3'));var rp=require(_0xb7c8('0x4'));var fs=require('fs');var path=require(_0xb7c8('0x5'));var rimraf=require(_0xb7c8('0x6'));var config=require(_0xb7c8('0x7'));var attributes=require(_0xb7c8('0x8'));module[_0xb7c8('0x9')]=function(_0x32cb47,_0x529689){return _0x32cb47[_0xb7c8('0xa')]('ChatInteraction',attributes,{'tableName':_0xb7c8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1b0fb2,_0x2eff3b,_0x137b70){if(_0x1b0fb2[_0xb7c8('0xc')](_0xb7c8('0xd'))){_0x1b0fb2[_0xb7c8('0xe')]=moment()[_0xb7c8('0xf')](_0xb7c8('0x10'));}_0x137b70(null,_0x1b0fb2);}},'charset':'utf8mb4','collate':_0xb7c8('0x11')});};
\ No newline at end of file
index d1f0480..268978b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdef9=['find','where','ids','omit','spread','AddTags','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','jayson/promise','client','http','redis','defaults','localhost','./chatInteraction.socket','register','request','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','catch','UpdateChatInteraction','ChatInteraction','update','body','options','raw','attributes','then','AddTagsToChatInteraction'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0xdef9,0x196));var _0x9def=function(_0x35d294,_0x3a9b4){_0x35d294=_0x35d294-0x0;var _0xb9ae9a=_0xdef9[_0x35d294];return _0xb9ae9a;};'use strict';var _=require(_0x9def('0x0'));var util=require(_0x9def('0x1'));var moment=require(_0x9def('0x2'));var BPromise=require(_0x9def('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9def('0x4'));var db=require(_0x9def('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9def('0x6'));var config=require('../../config/environment');var jayson=require(_0x9def('0x7'));var client=jayson[_0x9def('0x8')][_0x9def('0x9')]({'port':0x232a});config[_0x9def('0xa')]=_[_0x9def('0xb')](config[_0x9def('0xa')],{'host':_0x9def('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9def('0xa')]));require(_0x9def('0xd'))[_0x9def('0xe')](socket);function respondWithRpcPromise(_0x3365d1,_0x54a05c,_0x440809){return new BPromise(function(_0x3bcc87,_0x43fbc5){return client[_0x9def('0xf')](_0x3365d1,_0x440809)['then'](function(_0x46db0a){logger[_0x9def('0x10')](_0x9def('0x11'),_0x54a05c,_0x9def('0x12'));logger[_0x9def('0x13')](_0x9def('0x14'),_0x54a05c,_0x9def('0x12'),JSON['stringify'](_0x46db0a));if(_0x46db0a[_0x9def('0x15')]){if(_0x46db0a[_0x9def('0x15')][_0x9def('0x16')]===0x1f4){logger[_0x9def('0x15')](_0x9def('0x11'),_0x54a05c,_0x46db0a['error']['message']);return _0x43fbc5(_0x46db0a['error'][_0x9def('0x17')]);}logger[_0x9def('0x15')]('ChatInteraction,\x20%s,\x20%s',_0x54a05c,_0x46db0a[_0x9def('0x15')]['message']);return _0x3bcc87(_0x46db0a['error'][_0x9def('0x17')]);}else{logger[_0x9def('0x10')](_0x9def('0x11'),_0x54a05c,'request\x20sent');_0x3bcc87(_0x46db0a['result'][_0x9def('0x17')]);}})[_0x9def('0x18')](function(_0x15fc53){logger[_0x9def('0x15')]('ChatInteraction,\x20%s,\x20%s',_0x54a05c,_0x15fc53);_0x43fbc5(_0x15fc53);});});}exports[_0x9def('0x19')]=function(_0x409790){var _0x2a90ca=this;return new Promise(function(_0xe2c879,_0x320de3){return db[_0x9def('0x1a')][_0x9def('0x1b')](_0x409790[_0x9def('0x1c')],{'raw':_0x409790['options']?_0x409790[_0x9def('0x1d')][_0x9def('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x409790[_0x9def('0x1d')]?_0x409790[_0x9def('0x1d')]['where']||null:null,'attributes':_0x409790[_0x9def('0x1d')]?_0x409790[_0x9def('0x1d')][_0x9def('0x1f')]||null:null,'limit':_0x409790[_0x9def('0x1d')]?_0x409790[_0x9def('0x1d')]['limit']||null:null})[_0x9def('0x20')](function(_0xd2fa45){logger[_0x9def('0x10')](_0x9def('0x19'),_0x409790);logger[_0x9def('0x13')]('UpdateChatInteraction',_0x409790,JSON['stringify'](_0xd2fa45));_0xe2c879(_0xd2fa45);})[_0x9def('0x18')](function(_0x1cec37){logger['error']('UpdateChatInteraction',_0x1cec37[_0x9def('0x17')],_0x409790);_0x320de3(_0x2a90ca[_0x9def('0x15')](0x1f4,_0x1cec37[_0x9def('0x17')]));});});};exports[_0x9def('0x21')]=function(_0x1432c2){return new Promise(function(_0x5555c2,_0x55d77b){return db[_0x9def('0x1a')][_0x9def('0x22')]({'where':_0x1432c2['options']?_0x1432c2['options'][_0x9def('0x23')]||null:null})['then'](function(_0x1bcc7f){if(_0x1bcc7f){return _0x1bcc7f['addTags'](_0x1432c2[_0x9def('0x1c')][_0x9def('0x24')],_[_0x9def('0x25')](_0x1432c2['body'],[_0x9def('0x24'),'id'])||{});}})[_0x9def('0x26')](function(_0x1f82fb){logger[_0x9def('0x10')](_0x9def('0x27'),_0x1432c2);logger['debug'](_0x9def('0x27'),_0x1432c2,JSON['stringify'](_0x1f82fb));_0x5555c2(_0x1f82fb);})['catch'](function(_0x5d2fd4){logger[_0x9def('0x15')](_0x9def('0x27'),_0x5d2fd4[_0x9def('0x17')],_0x1432c2);_0x55d77b(_this['error'](0x1f4,_0x5d2fd4[_0x9def('0x17')]));});});};
\ No newline at end of file
+var _0x0a77=['../../config/utils','rpc','../../config/environment','http','redis','localhost','./chatInteraction.socket','register','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','UpdateChatInteraction','ChatInteraction','update','body','options','raw','where','attributes','limit','AddTagsToChatInteraction','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x0a77,0x18a));var _0x70a7=function(_0x45e2bd,_0x11416f){_0x45e2bd=_0x45e2bd-0x0;var _0x4c05b5=_0x0a77[_0x45e2bd];return _0x4c05b5;};'use strict';var _=require(_0x70a7('0x0'));var util=require(_0x70a7('0x1'));var moment=require(_0x70a7('0x2'));var BPromise=require(_0x70a7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x70a7('0x4'));var db=require(_0x70a7('0x5'))['db'];var utils=require(_0x70a7('0x6'));var logger=require('../../config/logger')(_0x70a7('0x7'));var config=require(_0x70a7('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x70a7('0x9')]({'port':0x232a});config[_0x70a7('0xa')]=_['defaults'](config[_0x70a7('0xa')],{'host':_0x70a7('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x70a7('0xc'))[_0x70a7('0xd')](socket);function respondWithRpcPromise(_0x18bdbd,_0x34bf03,_0x11841e){return new BPromise(function(_0x208021,_0xedbde2){return client[_0x70a7('0xe')](_0x18bdbd,_0x11841e)[_0x70a7('0xf')](function(_0x16cfbe){logger[_0x70a7('0x10')](_0x70a7('0x11'),_0x34bf03,_0x70a7('0x12'));logger[_0x70a7('0x13')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x34bf03,_0x70a7('0x12'),JSON[_0x70a7('0x14')](_0x16cfbe));if(_0x16cfbe[_0x70a7('0x15')]){if(_0x16cfbe[_0x70a7('0x15')]['code']===0x1f4){logger[_0x70a7('0x15')](_0x70a7('0x11'),_0x34bf03,_0x16cfbe['error'][_0x70a7('0x16')]);return _0xedbde2(_0x16cfbe[_0x70a7('0x15')][_0x70a7('0x16')]);}logger[_0x70a7('0x15')](_0x70a7('0x11'),_0x34bf03,_0x16cfbe['error']['message']);return _0x208021(_0x16cfbe[_0x70a7('0x15')][_0x70a7('0x16')]);}else{logger[_0x70a7('0x10')](_0x70a7('0x11'),_0x34bf03,_0x70a7('0x12'));_0x208021(_0x16cfbe[_0x70a7('0x17')][_0x70a7('0x16')]);}})[_0x70a7('0x18')](function(_0x143cfd){logger[_0x70a7('0x15')](_0x70a7('0x11'),_0x34bf03,_0x143cfd);_0xedbde2(_0x143cfd);});});}exports[_0x70a7('0x19')]=function(_0x29d1e9){var _0x5759c8=this;return new Promise(function(_0x18ea2b,_0x3006c7){return db[_0x70a7('0x1a')][_0x70a7('0x1b')](_0x29d1e9[_0x70a7('0x1c')],{'raw':_0x29d1e9[_0x70a7('0x1d')]?_0x29d1e9[_0x70a7('0x1d')][_0x70a7('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x29d1e9[_0x70a7('0x1d')]?_0x29d1e9[_0x70a7('0x1d')][_0x70a7('0x1f')]||null:null,'attributes':_0x29d1e9[_0x70a7('0x1d')]?_0x29d1e9['options'][_0x70a7('0x20')]||null:null,'limit':_0x29d1e9[_0x70a7('0x1d')]?_0x29d1e9[_0x70a7('0x1d')][_0x70a7('0x21')]||null:null})[_0x70a7('0xf')](function(_0x2f9bf6){logger[_0x70a7('0x10')]('UpdateChatInteraction',_0x29d1e9);logger[_0x70a7('0x13')](_0x70a7('0x19'),_0x29d1e9,JSON[_0x70a7('0x14')](_0x2f9bf6));_0x18ea2b(_0x2f9bf6);})[_0x70a7('0x18')](function(_0x2fb324){logger['error'](_0x70a7('0x19'),_0x2fb324[_0x70a7('0x16')],_0x29d1e9);_0x3006c7(_0x5759c8[_0x70a7('0x15')](0x1f4,_0x2fb324['message']));});});};exports[_0x70a7('0x22')]=function(_0x1955ae){return new Promise(function(_0x1c3cd6,_0x3a4340){return db['ChatInteraction']['find']({'where':_0x1955ae[_0x70a7('0x1d')]?_0x1955ae[_0x70a7('0x1d')][_0x70a7('0x1f')]||null:null})['then'](function(_0x2ce8f2){if(_0x2ce8f2){return _0x2ce8f2[_0x70a7('0x23')](_0x1955ae[_0x70a7('0x1c')][_0x70a7('0x24')],_[_0x70a7('0x25')](_0x1955ae['body'],[_0x70a7('0x24'),'id'])||{});}})[_0x70a7('0x26')](function(_0x8ee10f){logger[_0x70a7('0x10')]('AddTags',_0x1955ae);logger[_0x70a7('0x13')](_0x70a7('0x27'),_0x1955ae,JSON[_0x70a7('0x14')](_0x8ee10f));_0x1c3cd6(_0x8ee10f);})[_0x70a7('0x18')](function(_0x32db16){logger[_0x70a7('0x15')](_0x70a7('0x27'),_0x32db16[_0x70a7('0x16')],_0x1955ae);_0x3a4340(_this['error'](0x1f4,_0x32db16[_0x70a7('0x16')]));});});};
\ No newline at end of file
index 956413c..4edb959 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd84e=['./chatInteraction.events','save','remove','update','emit','removeListener','register','length','chatInteraction:'];(function(_0x568657,_0x8a16b){var _0x4d8589=function(_0x41c43a){while(--_0x41c43a){_0x568657['push'](_0x568657['shift']());}};_0x4d8589(++_0x8a16b);}(_0xd84e,0x1a7));var _0xed84=function(_0x57a45b,_0x1d6529){_0x57a45b=_0x57a45b-0x0;var _0x9ab9c9=_0xd84e[_0x57a45b];return _0x9ab9c9;};'use strict';var ChatInteractionEvents=require(_0xed84('0x0'));var events=[_0xed84('0x1'),_0xed84('0x2'),_0xed84('0x3')];function createListener(_0x17e00a,_0x220e51){return function(_0x2851c8){_0x220e51[_0xed84('0x4')](_0x17e00a,_0x2851c8);};}function removeListener(_0x25da96,_0x37c733){return function(){ChatInteractionEvents[_0xed84('0x5')](_0x25da96,_0x37c733);};}exports[_0xed84('0x6')]=function(_0x15a730){for(var _0x1a99ef=0x0,_0x400cf8=events[_0xed84('0x7')];_0x1a99ef<_0x400cf8;_0x1a99ef++){var _0x3fcc2f=events[_0x1a99ef];var _0x531320=createListener(_0xed84('0x8')+_0x3fcc2f,_0x15a730);ChatInteractionEvents['on'](_0x3fcc2f,_0x531320);}};
\ No newline at end of file
+var _0xf3b4=['save','update','emit','removeListener','./chatInteraction.events'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xf3b4,0x11c));var _0x4f3b=function(_0x21bbc5,_0x178958){_0x21bbc5=_0x21bbc5-0x0;var _0x4b6bc1=_0xf3b4[_0x21bbc5];return _0x4b6bc1;};'use strict';var ChatInteractionEvents=require(_0x4f3b('0x0'));var events=[_0x4f3b('0x1'),'remove',_0x4f3b('0x2')];function createListener(_0x34e647,_0x48b588){return function(_0xb9f172){_0x48b588[_0x4f3b('0x3')](_0x34e647,_0xb9f172);};}function removeListener(_0x216854,_0x5f59fc){return function(){ChatInteractionEvents[_0x4f3b('0x4')](_0x216854,_0x5f59fc);};}exports['register']=function(_0x3df017){for(var _0x115986=0x0,_0x1891c3=events['length'];_0x115986<_0x1891c3;_0x115986++){var _0x564747=events[_0x115986];var _0x241c58=createListener('chatInteraction:'+_0x564747,_0x3df017);ChatInteractionEvents['on'](_0x564747,_0x241c58);}};
\ No newline at end of file
index 1d4ea0a..70504e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b05=['file','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','chatinteraction:update','update','/:id/custom_update','customUpdate','abandon','/:id/close','close','delete','chatinteraction:destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./chatInteraction.controller','isAuthenticated','index','get','/describe','describe','/:id','isChatInteractionAuthorized','show','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','getMyMessages','/:id/download','download','post','create','diskStorage','join','root','server/files/attachments/','format','%s-%s','now','replace','single'];(function(_0x120123,_0x4eff59){var _0x3bec4c=function(_0x182818){while(--_0x182818){_0x120123['push'](_0x120123['shift']());}};_0x3bec4c(++_0x4eff59);}(_0x4b05,0x142));var _0x54b0=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x4b05[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x54b0('0x0'));var util=require(_0x54b0('0x1'));var path=require(_0x54b0('0x2'));var timeout=require(_0x54b0('0x3'));var express=require('express');var router=express[_0x54b0('0x4')]();var fs_extra=require(_0x54b0('0x5'));var auth=require(_0x54b0('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x54b0('0x7'));var controller=require(_0x54b0('0x8'));router['get']('/',auth[_0x54b0('0x9')](),controller[_0x54b0('0xa')]);router[_0x54b0('0xb')](_0x54b0('0xc'),auth['isAuthenticated'](),controller[_0x54b0('0xd')]);router[_0x54b0('0xb')](_0x54b0('0xe'),auth[_0x54b0('0xf')](),controller[_0x54b0('0x10')]);router['get']('/:id/attachment_download',auth[_0x54b0('0xf')](),controller[_0x54b0('0x11')]);router[_0x54b0('0xb')](_0x54b0('0x12'),auth[_0x54b0('0x9')](),controller[_0x54b0('0x13')]);router[_0x54b0('0xb')](_0x54b0('0x14'),auth['isChatInteractionAuthorized'](),controller[_0x54b0('0x15')]);router[_0x54b0('0xb')](_0x54b0('0x16'),auth[_0x54b0('0x9')](),controller[_0x54b0('0x17')]);router[_0x54b0('0x18')]('/',auth[_0x54b0('0x9')](),controller[_0x54b0('0x19')]);router[_0x54b0('0x18')]('/:id/vidaoo',auth[_0x54b0('0x9')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0x54b0('0x1a')]({'destination':function(_0xfa0cd3,_0x38720c,_0x48cfb4){_0x48cfb4(null,path[_0x54b0('0x1b')](config[_0x54b0('0x1c')],_0x54b0('0x1d')));},'filename':function(_0x4a895f,_0x58c856,_0x5e069a){_0x5e069a(null,util[_0x54b0('0x1e')](_0x54b0('0x1f'),Date[_0x54b0('0x20')](),_0x58c856['originalname'][_0x54b0('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post']('/:id/attachment_upload',upload[_0x54b0('0x22')](_0x54b0('0x23')),controller[_0x54b0('0x24')]);router['post'](_0x54b0('0x12'),auth[_0x54b0('0xf')](),controller[_0x54b0('0x25')]);router['post'](_0x54b0('0x26'),auth['isAuthenticated'](),interaction[_0x54b0('0x27')](_0x54b0('0x28'),_0x54b0('0x29')),controller['addTags']);router['put'](_0x54b0('0xe'),auth[_0x54b0('0x9')](),interaction[_0x54b0('0x27')](_0x54b0('0x28'),_0x54b0('0x2a')),controller[_0x54b0('0x2b')]);router['put'](_0x54b0('0x2c'),controller[_0x54b0('0x2d')]);router['put']('/:id/abandon',auth[_0x54b0('0xf')](),controller[_0x54b0('0x2e')]);router['put'](_0x54b0('0x2f'),controller[_0x54b0('0x30')]);router[_0x54b0('0x31')](_0x54b0('0xe'),auth[_0x54b0('0x9')](),interaction[_0x54b0('0x27')](_0x54b0('0x28'),_0x54b0('0x32')),controller['destroy']);router[_0x54b0('0x31')](_0x54b0('0x26'),auth['isAuthenticated'](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
+var _0xb389=['post','create','/:id/vidaoo','createVidaooSession','diskStorage','join','root','server/files/attachments/','format','%s-%s','now','originalname','replace','/:id/attachment_upload','file','/:id/tags','tracked','addTags','chat','chatinteraction:update','/:id/custom_update','customUpdate','put','/:id/abandon','abandon','delete','chatinteraction:destroy','destroy','removeTags','exports','multer','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','isChatInteractionAuthorized','/:id/attachment_download','attachmentDownload','getMessages','/:id/my_messages','getMyMessages','/:id/download','download'];(function(_0xdb4e73,_0x30b446){var _0x4578b4=function(_0x119eb5){while(--_0x119eb5){_0xdb4e73['push'](_0xdb4e73['shift']());}};_0x4578b4(++_0x30b446);}(_0xb389,0xb1));var _0x9b38=function(_0x3e32a8,_0x255953){_0x3e32a8=_0x3e32a8-0x0;var _0x2997b0=_0xb389[_0x3e32a8];return _0x2997b0;};'use strict';var multer=require(_0x9b38('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9b38('0x1'));var router=express[_0x9b38('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9b38('0x3'));var config=require(_0x9b38('0x4'));var controller=require('./chatInteraction.controller');router[_0x9b38('0x5')]('/',auth[_0x9b38('0x6')](),controller[_0x9b38('0x7')]);router[_0x9b38('0x5')](_0x9b38('0x8'),auth[_0x9b38('0x6')](),controller[_0x9b38('0x9')]);router[_0x9b38('0x5')](_0x9b38('0xa'),auth[_0x9b38('0xb')](),controller['show']);router[_0x9b38('0x5')](_0x9b38('0xc'),auth[_0x9b38('0xb')](),controller[_0x9b38('0xd')]);router[_0x9b38('0x5')]('/:id/messages',auth[_0x9b38('0x6')](),controller[_0x9b38('0xe')]);router['get'](_0x9b38('0xf'),auth[_0x9b38('0xb')](),controller[_0x9b38('0x10')]);router[_0x9b38('0x5')](_0x9b38('0x11'),auth[_0x9b38('0x6')](),controller[_0x9b38('0x12')]);router[_0x9b38('0x13')]('/',auth[_0x9b38('0x6')](),controller[_0x9b38('0x14')]);router[_0x9b38('0x13')](_0x9b38('0x15'),auth[_0x9b38('0x6')](),controller[_0x9b38('0x16')]);var upload=multer({'storage':multer[_0x9b38('0x17')]({'destination':function(_0x7f0cba,_0x418320,_0xf907b1){_0xf907b1(null,path[_0x9b38('0x18')](config[_0x9b38('0x19')],_0x9b38('0x1a')));},'filename':function(_0x367597,_0x58f8a7,_0x59b83f){_0x59b83f(null,util[_0x9b38('0x1b')](_0x9b38('0x1c'),Date[_0x9b38('0x1d')](),_0x58f8a7[_0x9b38('0x1e')][_0x9b38('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x9b38('0x13')](_0x9b38('0x20'),upload['single'](_0x9b38('0x21')),controller['attachmentUpload']);router[_0x9b38('0x13')]('/:id/messages',auth[_0x9b38('0xb')](),controller['addMessage']);router[_0x9b38('0x13')](_0x9b38('0x22'),auth[_0x9b38('0x6')](),interaction[_0x9b38('0x23')]('chat','chatinteraction:addtags'),controller[_0x9b38('0x24')]);router['put'](_0x9b38('0xa'),auth[_0x9b38('0x6')](),interaction[_0x9b38('0x23')](_0x9b38('0x25'),_0x9b38('0x26')),controller['update']);router['put'](_0x9b38('0x27'),controller[_0x9b38('0x28')]);router[_0x9b38('0x29')](_0x9b38('0x2a'),auth['isChatInteractionAuthorized'](),controller[_0x9b38('0x2b')]);router[_0x9b38('0x29')]('/:id/close',controller['close']);router[_0x9b38('0x2c')](_0x9b38('0xa'),auth[_0x9b38('0x6')](),interaction[_0x9b38('0x23')](_0x9b38('0x25'),_0x9b38('0x2d')),controller[_0x9b38('0x2e')]);router['delete'](_0x9b38('0x22'),auth[_0x9b38('0x6')](),controller[_0x9b38('0x2f')]);module[_0x9b38('0x30')]=router;
\ No newline at end of file
index 7d4fcef..755e4e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73ff=['BOOLEAN','INTEGER','sequelize','exports','medium'];(function(_0x5cab8b,_0x1e56e8){var _0x3ec3bf=function(_0x2bf408){while(--_0x2bf408){_0x5cab8b['push'](_0x5cab8b['shift']());}};_0x3ec3bf(++_0x1e56e8);}(_0x73ff,0xe3));var _0xf73f=function(_0x557bab,_0x24cfae){_0x557bab=_0x557bab-0x0;var _0x5b711c=_0x73ff[_0x557bab];return _0x5b711c;};'use strict';var Sequelize=require(_0xf73f('0x0'));module[_0xf73f('0x1')]={'body':{'type':Sequelize['TEXT'](_0xf73f('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xf73f('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xf73f('0x4')]}};
\ No newline at end of file
+var _0xef60=['exports','TEXT','medium','BOOLEAN','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xef60,0x18b));var _0x0ef6=function(_0x3b45d2,_0x5c3d16){_0x3b45d2=_0x3b45d2-0x0;var _0xec7c6b=_0xef60[_0x3b45d2];return _0xec7c6b;};'use strict';var Sequelize=require('sequelize');module[_0x0ef6('0x0')]={'body':{'type':Sequelize[_0x0ef6('0x1')](_0x0ef6('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x0ef6('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x0ef6('0x4')]}};
\ No newline at end of file
index 99ce8f9..231be91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89bf=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','isEmpty','agent','resourceId','push','FromId','-createdAt','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatInternalMessage.socket','sendStatus','status','end','undefined','limit','offset','count','Content-Range','json','apply','reject','save','update','then','stack','name','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','params','fields','find','catch','create','body','destroy','describe','get','messages','createdAt','lastMessage','lastMessageAt','getUsers','User','admin','fullname','role','internal','online','lastLoginAt','-online','VoiceQueue','VoiceQueues'];(function(_0x223844,_0x4f9175){var _0x1b8013=function(_0x5993ac){while(--_0x5993ac){_0x223844['push'](_0x223844['shift']());}};_0x1b8013(++_0x4f9175);}(_0x89bf,0xda));var _0xf89b=function(_0x1cb88d,_0x588ba3){_0x1cb88d=_0x1cb88d-0x0;var _0x95a661=_0x89bf[_0x1cb88d];return _0x95a661;};'use strict';var emlformat=require(_0xf89b('0x0'));var rimraf=require(_0xf89b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf89b('0x2'));var rp=require(_0xf89b('0x3'));var moment=require(_0xf89b('0x4'));var BPromise=require(_0xf89b('0x5'));var Mustache=require(_0xf89b('0x6'));var util=require(_0xf89b('0x7'));var path=require(_0xf89b('0x8'));var sox=require(_0xf89b('0x9'));var csv=require(_0xf89b('0xa'));var ejs=require(_0xf89b('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf89b('0xc'));var squel=require('squel');var crypto=require(_0xf89b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf89b('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf89b('0xf'));var Redis=require(_0xf89b('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xf89b('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf89b('0x12'));var utils=require(_0xf89b('0x13'));var config=require(_0xf89b('0x14'));var licenseUtil=require(_0xf89b('0x15'));var db=require(_0xf89b('0x16'))['db'];config[_0xf89b('0x17')]=_[_0xf89b('0x18')](config[_0xf89b('0x17')],{'host':_0xf89b('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf89b('0x17')]));require(_0xf89b('0x1a'))['register'](socket);function respondWithStatusCode(_0x22664b,_0x4441b7){_0x4441b7=_0x4441b7||0xcc;return function(_0x49024f){if(_0x49024f){return _0x22664b[_0xf89b('0x1b')](_0x4441b7);}return _0x22664b[_0xf89b('0x1c')](_0x4441b7)[_0xf89b('0x1d')]();};}function respondWithResult(_0x2e1695,_0x110e7b){_0x110e7b=_0x110e7b||0xc8;return function(_0xb01e5e){if(_0xb01e5e){return _0x2e1695[_0xf89b('0x1c')](_0x110e7b)['json'](_0xb01e5e);}};}function respondWithFilteredResult(_0x233ca9,_0xfad240){return function(_0xb9dd83){if(_0xb9dd83){var _0x56c01d=typeof _0xfad240['offset']===_0xf89b('0x1e')&&typeof _0xfad240[_0xf89b('0x1f')]===_0xf89b('0x1e');var _0x26b030=_0xb9dd83['count'];var _0xeab306=_0x56c01d?0x0:_0xfad240[_0xf89b('0x20')];var _0x1699d6=_0x56c01d?_0xb9dd83[_0xf89b('0x21')]:_0xfad240['offset']+_0xfad240[_0xf89b('0x1f')];var _0x3f0ec2;if(_0x1699d6>=_0x26b030){_0x1699d6=_0x26b030;_0x3f0ec2=0xc8;}else{_0x3f0ec2=0xce;}_0x233ca9[_0xf89b('0x1c')](_0x3f0ec2);return _0x233ca9['set'](_0xf89b('0x22'),_0xeab306+'-'+_0x1699d6+'/'+_0x26b030)[_0xf89b('0x23')](_0xb9dd83);}return null;};}function patchUpdates(_0x17726d){return function(_0x108b71){try{jsonpatch[_0xf89b('0x24')](_0x108b71,_0x17726d,!![]);}catch(_0x45482e){return BPromise[_0xf89b('0x25')](_0x45482e);}return _0x108b71[_0xf89b('0x26')]();};}function saveUpdates(_0x1c5321,_0x25c4d9){return function(_0x548b77){if(_0x548b77){return _0x548b77[_0xf89b('0x27')](_0x1c5321)[_0xf89b('0x28')](function(_0x3998a1){return _0x3998a1;});}return null;};}function removeEntity(_0x405666,_0x34fa92){return function(_0x2b75a3){if(_0x2b75a3){return _0x2b75a3['destroy']()['then'](function(){_0x405666[_0xf89b('0x1c')](0xcc)[_0xf89b('0x1d')]();});}};}function handleEntityNotFound(_0x1b1602,_0x35255f){return function(_0x248536){if(!_0x248536){_0x1b1602[_0xf89b('0x1b')](0x194);}return _0x248536;};}function handleError(_0x31ef9a,_0x20d378){_0x20d378=_0x20d378||0x1f4;return function(_0x33ca3c){logger['error'](_0x33ca3c[_0xf89b('0x29')]);if(_0x33ca3c['name']){delete _0x33ca3c[_0xf89b('0x2a')];}_0x31ef9a['status'](_0x20d378)['send'](_0x33ca3c);};}exports[_0xf89b('0x2b')]=function(_0x445ac1,_0x519b79){var _0x215ece={},_0xd4692={},_0x37bddc={'count':0x0,'rows':[]};var _0x273a3c=_[_0xf89b('0x2c')](db[_0xf89b('0x2d')][_0xf89b('0x2e')],function(_0x56f600){return{'name':_0x56f600[_0xf89b('0x2f')],'type':_0x56f600[_0xf89b('0x30')][_0xf89b('0x31')]};});_0xd4692[_0xf89b('0x32')]=_[_0xf89b('0x2c')](_0x273a3c,_0xf89b('0x2a'));_0xd4692[_0xf89b('0x33')]=_[_0xf89b('0x34')](_0x445ac1[_0xf89b('0x33')]);_0xd4692[_0xf89b('0x35')]=_['intersection'](_0xd4692[_0xf89b('0x32')],_0xd4692[_0xf89b('0x33')]);_0x215ece[_0xf89b('0x36')]=_[_0xf89b('0x37')](_0xd4692[_0xf89b('0x32')],qs['fields'](_0x445ac1[_0xf89b('0x33')]['fields']));_0x215ece[_0xf89b('0x36')]=_0x215ece['attributes'][_0xf89b('0x38')]?_0x215ece[_0xf89b('0x36')]:_0xd4692[_0xf89b('0x32')];if(!_0x445ac1[_0xf89b('0x33')][_0xf89b('0x39')]('nolimit')){_0x215ece[_0xf89b('0x1f')]=qs[_0xf89b('0x1f')](_0x445ac1[_0xf89b('0x33')][_0xf89b('0x1f')]);_0x215ece[_0xf89b('0x20')]=qs[_0xf89b('0x20')](_0x445ac1[_0xf89b('0x33')][_0xf89b('0x20')]);}_0x215ece['order']=qs['sort'](_0x445ac1[_0xf89b('0x33')][_0xf89b('0x3a')]);_0x215ece[_0xf89b('0x3b')]=qs['filters'](_['pick'](_0x445ac1[_0xf89b('0x33')],_0xd4692[_0xf89b('0x35')]),_0x273a3c);if(_0x445ac1[_0xf89b('0x33')][_0xf89b('0x3c')]){_0x215ece[_0xf89b('0x3b')]=_[_0xf89b('0x3d')](_0x215ece[_0xf89b('0x3b')],{'$or':_[_0xf89b('0x2c')](_0x273a3c,function(_0x98ba8a){if(_0x98ba8a[_0xf89b('0x30')]!==_0xf89b('0x3e')){var _0xfea256={};_0xfea256[_0x98ba8a[_0xf89b('0x2a')]]={'$like':'%'+_0x445ac1[_0xf89b('0x33')][_0xf89b('0x3c')]+'%'};return _0xfea256;}})});}_0x215ece=_['merge']({},_0x215ece,_0x445ac1[_0xf89b('0x3f')]);var _0x17f779={'where':_0x215ece[_0xf89b('0x3b')]};return db[_0xf89b('0x2d')]['count'](_0x17f779)['then'](function(_0x5d3fe4){_0x37bddc[_0xf89b('0x21')]=_0x5d3fe4;if(_0x445ac1['query'][_0xf89b('0x40')]){_0x215ece[_0xf89b('0x41')]=[{'all':!![]}];}return db[_0xf89b('0x2d')][_0xf89b('0x42')](_0x215ece);})['then'](function(_0x9487e0){_0x37bddc['rows']=_0x9487e0;return _0x37bddc;})['then'](respondWithFilteredResult(_0x519b79,_0x215ece))['catch'](handleError(_0x519b79,null));};exports['show']=function(_0x3e34d3,_0x116a3a){var _0x257f61={'raw':!![],'where':{'id':_0x3e34d3[_0xf89b('0x43')]['id']}},_0x9f1799={};_0x9f1799[_0xf89b('0x32')]=_['keys'](db['ChatInternalMessage'][_0xf89b('0x2e')]);_0x9f1799[_0xf89b('0x33')]=_[_0xf89b('0x34')](_0x3e34d3[_0xf89b('0x33')]);_0x9f1799['filters']=_[_0xf89b('0x37')](_0x9f1799[_0xf89b('0x32')],_0x9f1799[_0xf89b('0x33')]);_0x257f61['attributes']=_[_0xf89b('0x37')](_0x9f1799[_0xf89b('0x32')],qs[_0xf89b('0x44')](_0x3e34d3[_0xf89b('0x33')][_0xf89b('0x44')]));_0x257f61['attributes']=_0x257f61[_0xf89b('0x36')][_0xf89b('0x38')]?_0x257f61[_0xf89b('0x36')]:_0x9f1799['model'];if(_0x3e34d3[_0xf89b('0x33')]['includeAll']){_0x257f61['include']=[{'all':!![]}];}_0x257f61=_['merge']({},_0x257f61,_0x3e34d3[_0xf89b('0x3f')]);return db['ChatInternalMessage'][_0xf89b('0x45')](_0x257f61)[_0xf89b('0x28')](handleEntityNotFound(_0x116a3a,null))[_0xf89b('0x28')](respondWithResult(_0x116a3a,null))[_0xf89b('0x46')](handleError(_0x116a3a,null));};exports['create']=function(_0x2b1ac3,_0x5143b7){return db[_0xf89b('0x2d')][_0xf89b('0x47')](_0x2b1ac3[_0xf89b('0x48')],{})[_0xf89b('0x28')](respondWithResult(_0x5143b7,0xc9))['catch'](handleError(_0x5143b7,null));};exports['update']=function(_0x32d2d3,_0x48f0be){if(_0x32d2d3['body']['id']){delete _0x32d2d3[_0xf89b('0x48')]['id'];}return db[_0xf89b('0x2d')][_0xf89b('0x45')]({'where':{'id':_0x32d2d3[_0xf89b('0x43')]['id']}})[_0xf89b('0x28')](handleEntityNotFound(_0x48f0be,null))[_0xf89b('0x28')](saveUpdates(_0x32d2d3[_0xf89b('0x48')],null))[_0xf89b('0x28')](respondWithResult(_0x48f0be,null))['catch'](handleError(_0x48f0be,null));};exports[_0xf89b('0x49')]=function(_0xa8f72e,_0x44ef85){return db['ChatInternalMessage']['find']({'where':{'id':_0xa8f72e['params']['id']}})['then'](handleEntityNotFound(_0x44ef85,null))[_0xf89b('0x28')](removeEntity(_0x44ef85,null))['catch'](handleError(_0x44ef85,null));};exports[_0xf89b('0x4a')]=function(_0x26c7d9,_0x4c8350){return db[_0xf89b('0x2d')][_0xf89b('0x4a')]()[_0xf89b('0x28')](respondWithResult(_0x4c8350,null))[_0xf89b('0x46')](handleError(_0x4c8350,null));};function wrapUser(_0x112f71){return function(_0xcd529){var _0x4a06a7=_0x112f71[_0xf89b('0x4b')]({'plain':!![]});_0x4a06a7[_0xf89b('0x4c')]=[];if(_0xcd529){_0x4a06a7['lastMessageAt']=_0xcd529[_0xf89b('0x4d')];_0x4a06a7[_0xf89b('0x4e')]=_0xcd529;}else{_0x4a06a7[_0xf89b('0x4f')]=moment(0x0)['format']('YYYY-MM-DD\x20HH:mm:ss');_0x4a06a7[_0xf89b('0x4e')]={};}return _0x4a06a7;};}exports[_0xf89b('0x50')]=function(_0x33c5f5,_0x2816c3,_0x4ea814){var _0x52b7e3=[];return db[_0xf89b('0x51')]['findAll']({'where':{'role':['agent',_0xf89b('0x52'),'user']},'attributes':['id',_0xf89b('0x53'),_0xf89b('0x2a'),_0xf89b('0x54'),'userpic',_0xf89b('0x55'),_0xf89b('0x56'),_0xf89b('0x57'),'allowmessenger','showWebBar'],'order':qs['sort'](_0xf89b('0x58')),'include':[{'model':db[_0xf89b('0x59')],'as':_0xf89b('0x5a'),'attributes':['id','name',_0xf89b('0x30')],'through':{'attributes':[]}}]})[_0xf89b('0x28')](function(_0x59e830){if(_0x59e830){var _0x2f4698=_0x33c5f5[_0xf89b('0x5b')]['get']({'plain':!![]});if(!_0x2f4698)throw new Error(_0xf89b('0x5c'));if(_0x2f4698['role']===_0xf89b('0x5b')){return db[_0xf89b('0x5d')][_0xf89b('0x45')]({'where':{'name':_0xf89b('0x5e'),'userProfileId':_0x2f4698[_0xf89b('0x5f')]},'raw':!![]})[_0xf89b('0x28')](function(_0x32047f){if(_0x32047f){if(_0x32047f[_0xf89b('0x60')]===0x0){return db['UserProfileResource'][_0xf89b('0x42')]({'where':{'sectionId':_0x32047f['id']},'raw':!![]})[_0xf89b('0x28')](function(_0x165fe2){var _0x40097c=[];if(_[_0xf89b('0x61')](_0x165fe2)){_0x40097c=_[_0xf89b('0x3c')](_0x59e830,function(_0x477da2){if(_0x477da2[_0xf89b('0x54')]!==_0xf89b('0x62')){return _0x477da2;}});return _0x40097c;}else{for(var _0x3fa352=0x0;_0x3fa352<_0x59e830[_0xf89b('0x38')];_0x3fa352++){var _0xceebcc=_0x59e830[_0x3fa352];if(_0xceebcc[_0xf89b('0x54')]==='agent'){var _0x2787b7=_['find'](_0x165fe2,function(_0x2cf56c){return _0x2cf56c[_0xf89b('0x63')]===_0xceebcc['id'];});if(_0x2787b7)_0x40097c[_0xf89b('0x64')](_0xceebcc);}else{_0x40097c['push'](_0xceebcc);}}return _0x40097c;}});}else{return _0x59e830;}}else{var _0x57360e=_[_0xf89b('0x3c')](_0x59e830,function(_0x12ea80){if(_0x12ea80['role']!==_0xf89b('0x62')){return _0x12ea80;}});return _0x57360e;}});}else{return _0x59e830;}}})['then'](function(_0x1751cf){var _0x360bc7=[];if(_0x1751cf){_0x52b7e3=_0x1751cf;for(var _0x99c14a=0x0;_0x99c14a<_0x1751cf[_0xf89b('0x38')];_0x99c14a+=0x1){_0x52b7e3[_0x99c14a][_0xf89b('0x4c')]=[];_0x360bc7[_0xf89b('0x64')](db['ChatInternalMessage']['find']({'where':{'FromId':[_0x33c5f5[_0xf89b('0x5b')]['id'],_0x1751cf[_0x99c14a]['id']],'ToId':[_0x33c5f5[_0xf89b('0x5b')]['id'],_0x1751cf[_0x99c14a]['id']],'ChatGroupId':null},'attributes':['id',_0xf89b('0x4d'),_0xf89b('0x65'),'ToId','read',_0xf89b('0x48')],'order':qs[_0xf89b('0x3a')](_0xf89b('0x66')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x1751cf[_0x99c14a])));}return BPromise['all'](_0x360bc7);}return[];})['then'](function(_0x427e8a){return{'rows':_0x427e8a,'count':_0x427e8a[_0xf89b('0x38')]};})[_0xf89b('0x28')](respondWithResult(_0x2816c3,null))[_0xf89b('0x46')](handleError(_0x2816c3,null));};
\ No newline at end of file
+var _0x88a5=['undefined','set','Content-Range','apply','reject','save','then','destroy','stack','name','send','index','ChatInternalMessage','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','filter','VIRTUAL','options','count','includeAll','include','catch','keys','merge','create','body','update','find','describe','get','messages','lastMessageAt','createdAt','lastMessage','YYYY-MM-DD\x20HH:mm:ss','getUsers','findAll','agent','admin','user','fullname','role','userpic','online','allowmessenger','showWebBar','-online','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','isEmpty','resourceId','push','FromId','ToId','read','-createdAt','all','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','localhost','./chatInternalMessage.socket','sendStatus','status','end','json','offset'];(function(_0x98b614,_0x7f1207){var _0x3a2243=function(_0x494df2){while(--_0x494df2){_0x98b614['push'](_0x98b614['shift']());}};_0x3a2243(++_0x7f1207);}(_0x88a5,0x1e2));var _0x588a=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0x88a5[_0x513aa5];return _0x1a1a7c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x588a('0x0'));var rp=require(_0x588a('0x1'));var moment=require(_0x588a('0x2'));var BPromise=require(_0x588a('0x3'));var Mustache=require(_0x588a('0x4'));var util=require(_0x588a('0x5'));var path=require(_0x588a('0x6'));var sox=require('sox');var csv=require(_0x588a('0x7'));var ejs=require(_0x588a('0x8'));var fs=require('fs');var fs_extra=require(_0x588a('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x588a('0xa'));var jsforce=require(_0x588a('0xb'));var deskjs=require(_0x588a('0xc'));var toCsv=require(_0x588a('0x7'));var querystring=require(_0x588a('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x588a('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x588a('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0x588a('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0x588a('0x11'));var db=require(_0x588a('0x12'))['db'];config['redis']=_[_0x588a('0x13')](config[_0x588a('0x14')],{'host':_0x588a('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x588a('0x14')]));require(_0x588a('0x16'))['register'](socket);function respondWithStatusCode(_0x53f584,_0x4261c4){_0x4261c4=_0x4261c4||0xcc;return function(_0x5dbd9a){if(_0x5dbd9a){return _0x53f584[_0x588a('0x17')](_0x4261c4);}return _0x53f584[_0x588a('0x18')](_0x4261c4)[_0x588a('0x19')]();};}function respondWithResult(_0xa34eb8,_0x1e2a60){_0x1e2a60=_0x1e2a60||0xc8;return function(_0x4a1e9d){if(_0x4a1e9d){return _0xa34eb8[_0x588a('0x18')](_0x1e2a60)[_0x588a('0x1a')](_0x4a1e9d);}};}function respondWithFilteredResult(_0x2049e8,_0x5628c7){return function(_0x4bf8ae){if(_0x4bf8ae){var _0x796dcd=typeof _0x5628c7[_0x588a('0x1b')]==='undefined'&&typeof _0x5628c7['limit']===_0x588a('0x1c');var _0x47436d=_0x4bf8ae['count'];var _0x377e51=_0x796dcd?0x0:_0x5628c7['offset'];var _0x3f6efe=_0x796dcd?_0x4bf8ae['count']:_0x5628c7['offset']+_0x5628c7['limit'];var _0x50966b;if(_0x3f6efe>=_0x47436d){_0x3f6efe=_0x47436d;_0x50966b=0xc8;}else{_0x50966b=0xce;}_0x2049e8[_0x588a('0x18')](_0x50966b);return _0x2049e8[_0x588a('0x1d')](_0x588a('0x1e'),_0x377e51+'-'+_0x3f6efe+'/'+_0x47436d)[_0x588a('0x1a')](_0x4bf8ae);}return null;};}function patchUpdates(_0x564190){return function(_0x1c53cc){try{jsonpatch[_0x588a('0x1f')](_0x1c53cc,_0x564190,!![]);}catch(_0x144521){return BPromise[_0x588a('0x20')](_0x144521);}return _0x1c53cc[_0x588a('0x21')]();};}function saveUpdates(_0x4e4b9b,_0x7517d3){return function(_0x22f9ed){if(_0x22f9ed){return _0x22f9ed['update'](_0x4e4b9b)[_0x588a('0x22')](function(_0x4301bb){return _0x4301bb;});}return null;};}function removeEntity(_0x167ba8,_0x3b33ba){return function(_0x1d2a3f){if(_0x1d2a3f){return _0x1d2a3f[_0x588a('0x23')]()[_0x588a('0x22')](function(){_0x167ba8['status'](0xcc)[_0x588a('0x19')]();});}};}function handleEntityNotFound(_0x32065a,_0xef1166){return function(_0xe22bf3){if(!_0xe22bf3){_0x32065a[_0x588a('0x17')](0x194);}return _0xe22bf3;};}function handleError(_0x1be1f1,_0x3f2ce6){_0x3f2ce6=_0x3f2ce6||0x1f4;return function(_0x5bcc0c){logger['error'](_0x5bcc0c[_0x588a('0x24')]);if(_0x5bcc0c[_0x588a('0x25')]){delete _0x5bcc0c[_0x588a('0x25')];}_0x1be1f1['status'](_0x3f2ce6)[_0x588a('0x26')](_0x5bcc0c);};}exports[_0x588a('0x27')]=function(_0x35cd50,_0x2ca96b){var _0x17f748={},_0x542c37={},_0x3b1b61={'count':0x0,'rows':[]};var _0x35b2b0=_['map'](db[_0x588a('0x28')][_0x588a('0x29')],function(_0x3b5da6){return{'name':_0x3b5da6[_0x588a('0x2a')],'type':_0x3b5da6[_0x588a('0x2b')][_0x588a('0x2c')]};});_0x542c37[_0x588a('0x2d')]=_[_0x588a('0x2e')](_0x35b2b0,'name');_0x542c37['query']=_['keys'](_0x35cd50[_0x588a('0x2f')]);_0x542c37[_0x588a('0x30')]=_[_0x588a('0x31')](_0x542c37[_0x588a('0x2d')],_0x542c37[_0x588a('0x2f')]);_0x17f748[_0x588a('0x32')]=_[_0x588a('0x31')](_0x542c37[_0x588a('0x2d')],qs[_0x588a('0x33')](_0x35cd50['query']['fields']));_0x17f748[_0x588a('0x32')]=_0x17f748[_0x588a('0x32')][_0x588a('0x34')]?_0x17f748[_0x588a('0x32')]:_0x542c37['model'];if(!_0x35cd50[_0x588a('0x2f')][_0x588a('0x35')](_0x588a('0x36'))){_0x17f748[_0x588a('0x37')]=qs[_0x588a('0x37')](_0x35cd50['query']['limit']);_0x17f748[_0x588a('0x1b')]=qs[_0x588a('0x1b')](_0x35cd50[_0x588a('0x2f')][_0x588a('0x1b')]);}_0x17f748['order']=qs['sort'](_0x35cd50[_0x588a('0x2f')][_0x588a('0x38')]);_0x17f748[_0x588a('0x39')]=qs['filters'](_[_0x588a('0x3a')](_0x35cd50[_0x588a('0x2f')],_0x542c37[_0x588a('0x30')]),_0x35b2b0);if(_0x35cd50[_0x588a('0x2f')][_0x588a('0x3b')]){_0x17f748[_0x588a('0x39')]=_['merge'](_0x17f748[_0x588a('0x39')],{'$or':_[_0x588a('0x2e')](_0x35b2b0,function(_0x5b9c83){if(_0x5b9c83[_0x588a('0x2b')]!==_0x588a('0x3c')){var _0x3e712f={};_0x3e712f[_0x5b9c83[_0x588a('0x25')]]={'$like':'%'+_0x35cd50[_0x588a('0x2f')][_0x588a('0x3b')]+'%'};return _0x3e712f;}})});}_0x17f748=_['merge']({},_0x17f748,_0x35cd50[_0x588a('0x3d')]);var _0x2aa73c={'where':_0x17f748['where']};return db[_0x588a('0x28')]['count'](_0x2aa73c)[_0x588a('0x22')](function(_0x3d31f9){_0x3b1b61[_0x588a('0x3e')]=_0x3d31f9;if(_0x35cd50[_0x588a('0x2f')][_0x588a('0x3f')]){_0x17f748[_0x588a('0x40')]=[{'all':!![]}];}return db[_0x588a('0x28')]['findAll'](_0x17f748);})[_0x588a('0x22')](function(_0x105a87){_0x3b1b61['rows']=_0x105a87;return _0x3b1b61;})[_0x588a('0x22')](respondWithFilteredResult(_0x2ca96b,_0x17f748))[_0x588a('0x41')](handleError(_0x2ca96b,null));};exports['show']=function(_0x41f681,_0x450eef){var _0x133d09={'raw':!![],'where':{'id':_0x41f681['params']['id']}},_0x123b87={};_0x123b87[_0x588a('0x2d')]=_[_0x588a('0x42')](db['ChatInternalMessage']['rawAttributes']);_0x123b87[_0x588a('0x2f')]=_[_0x588a('0x42')](_0x41f681[_0x588a('0x2f')]);_0x123b87['filters']=_[_0x588a('0x31')](_0x123b87[_0x588a('0x2d')],_0x123b87[_0x588a('0x2f')]);_0x133d09[_0x588a('0x32')]=_[_0x588a('0x31')](_0x123b87['model'],qs[_0x588a('0x33')](_0x41f681[_0x588a('0x2f')]['fields']));_0x133d09['attributes']=_0x133d09[_0x588a('0x32')][_0x588a('0x34')]?_0x133d09[_0x588a('0x32')]:_0x123b87[_0x588a('0x2d')];if(_0x41f681[_0x588a('0x2f')][_0x588a('0x3f')]){_0x133d09['include']=[{'all':!![]}];}_0x133d09=_[_0x588a('0x43')]({},_0x133d09,_0x41f681[_0x588a('0x3d')]);return db['ChatInternalMessage']['find'](_0x133d09)['then'](handleEntityNotFound(_0x450eef,null))['then'](respondWithResult(_0x450eef,null))[_0x588a('0x41')](handleError(_0x450eef,null));};exports[_0x588a('0x44')]=function(_0x5210f1,_0x49e700){return db[_0x588a('0x28')][_0x588a('0x44')](_0x5210f1[_0x588a('0x45')],{})[_0x588a('0x22')](respondWithResult(_0x49e700,0xc9))[_0x588a('0x41')](handleError(_0x49e700,null));};exports[_0x588a('0x46')]=function(_0x21d30f,_0x49ce88){if(_0x21d30f[_0x588a('0x45')]['id']){delete _0x21d30f[_0x588a('0x45')]['id'];}return db['ChatInternalMessage'][_0x588a('0x47')]({'where':{'id':_0x21d30f['params']['id']}})[_0x588a('0x22')](handleEntityNotFound(_0x49ce88,null))[_0x588a('0x22')](saveUpdates(_0x21d30f[_0x588a('0x45')],null))[_0x588a('0x22')](respondWithResult(_0x49ce88,null))[_0x588a('0x41')](handleError(_0x49ce88,null));};exports['destroy']=function(_0x51f2ca,_0x37a088){return db[_0x588a('0x28')][_0x588a('0x47')]({'where':{'id':_0x51f2ca['params']['id']}})[_0x588a('0x22')](handleEntityNotFound(_0x37a088,null))['then'](removeEntity(_0x37a088,null))[_0x588a('0x41')](handleError(_0x37a088,null));};exports[_0x588a('0x48')]=function(_0x24d3db,_0x20b2ce){return db[_0x588a('0x28')][_0x588a('0x48')]()['then'](respondWithResult(_0x20b2ce,null))['catch'](handleError(_0x20b2ce,null));};function wrapUser(_0xcf6b8){return function(_0x56c71b){var _0x1a4a48=_0xcf6b8[_0x588a('0x49')]({'plain':!![]});_0x1a4a48[_0x588a('0x4a')]=[];if(_0x56c71b){_0x1a4a48[_0x588a('0x4b')]=_0x56c71b[_0x588a('0x4c')];_0x1a4a48[_0x588a('0x4d')]=_0x56c71b;}else{_0x1a4a48['lastMessageAt']=moment(0x0)['format'](_0x588a('0x4e'));_0x1a4a48[_0x588a('0x4d')]={};}return _0x1a4a48;};}exports[_0x588a('0x4f')]=function(_0x432030,_0x31c9a5,_0x2872e3){var _0x316cdb=[];return db['User'][_0x588a('0x50')]({'where':{'role':[_0x588a('0x51'),_0x588a('0x52'),_0x588a('0x53')]},'attributes':['id',_0x588a('0x54'),_0x588a('0x25'),_0x588a('0x55'),_0x588a('0x56'),'internal',_0x588a('0x57'),'lastLoginAt',_0x588a('0x58'),_0x588a('0x59')],'order':qs[_0x588a('0x38')](_0x588a('0x5a')),'include':[{'model':db['VoiceQueue'],'as':'VoiceQueues','attributes':['id',_0x588a('0x25'),_0x588a('0x2b')],'through':{'attributes':[]}}]})['then'](function(_0x56f6da){if(_0x56f6da){var _0x23f74b=_0x432030[_0x588a('0x53')][_0x588a('0x49')]({'plain':!![]});if(!_0x23f74b)throw new Error(_0x588a('0x5b'));if(_0x23f74b[_0x588a('0x55')]==='user'){return db[_0x588a('0x5c')]['find']({'where':{'name':'Agents','userProfileId':_0x23f74b[_0x588a('0x5d')]},'raw':!![]})[_0x588a('0x22')](function(_0x31e4a0){if(_0x31e4a0){if(_0x31e4a0['autoAssociation']===0x0){return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x31e4a0['id']},'raw':!![]})[_0x588a('0x22')](function(_0x5e2f31){var _0xb0d005=[];if(_[_0x588a('0x5e')](_0x5e2f31)){_0xb0d005=_[_0x588a('0x3b')](_0x56f6da,function(_0x44557b){if(_0x44557b[_0x588a('0x55')]!==_0x588a('0x51')){return _0x44557b;}});return _0xb0d005;}else{for(var _0x23df13=0x0;_0x23df13<_0x56f6da['length'];_0x23df13++){var _0x3269cf=_0x56f6da[_0x23df13];if(_0x3269cf[_0x588a('0x55')]===_0x588a('0x51')){var _0x441843=_[_0x588a('0x47')](_0x5e2f31,function(_0x44b121){return _0x44b121[_0x588a('0x5f')]===_0x3269cf['id'];});if(_0x441843)_0xb0d005[_0x588a('0x60')](_0x3269cf);}else{_0xb0d005[_0x588a('0x60')](_0x3269cf);}}return _0xb0d005;}});}else{return _0x56f6da;}}else{var _0x49561e=_[_0x588a('0x3b')](_0x56f6da,function(_0x5e3380){if(_0x5e3380['role']!==_0x588a('0x51')){return _0x5e3380;}});return _0x49561e;}});}else{return _0x56f6da;}}})[_0x588a('0x22')](function(_0x3c453b){var _0x33e1fd=[];if(_0x3c453b){_0x316cdb=_0x3c453b;for(var _0x1eb9cc=0x0;_0x1eb9cc<_0x3c453b[_0x588a('0x34')];_0x1eb9cc+=0x1){_0x316cdb[_0x1eb9cc][_0x588a('0x4a')]=[];_0x33e1fd['push'](db[_0x588a('0x28')][_0x588a('0x47')]({'where':{'FromId':[_0x432030[_0x588a('0x53')]['id'],_0x3c453b[_0x1eb9cc]['id']],'ToId':[_0x432030[_0x588a('0x53')]['id'],_0x3c453b[_0x1eb9cc]['id']],'ChatGroupId':null},'attributes':['id',_0x588a('0x4c'),_0x588a('0x61'),_0x588a('0x62'),_0x588a('0x63'),_0x588a('0x45')],'order':qs['sort'](_0x588a('0x64')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x588a('0x22')](wrapUser(_0x3c453b[_0x1eb9cc])));}return BPromise[_0x588a('0x65')](_0x33e1fd);}return[];})[_0x588a('0x22')](function(_0x71b68c){return{'rows':_0x71b68c,'count':_0x71b68c[_0x588a('0x34')]};})[_0x588a('0x22')](respondWithResult(_0x31c9a5,null))[_0x588a('0x41')](handleError(_0x31c9a5,null));};
\ No newline at end of file
index f769da5..0d25f0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8481=['events','ChatInternalMessage','setMaxListeners','save','update','remove','emit'];(function(_0x2632e4,_0x200715){var _0x4a6e53=function(_0x313a5d){while(--_0x313a5d){_0x2632e4['push'](_0x2632e4['shift']());}};_0x4a6e53(++_0x200715);}(_0x8481,0x1c7));var _0x1848=function(_0x2b5513,_0x3fe5cd){_0x2b5513=_0x2b5513-0x0;var _0x578fd2=_0x8481[_0x2b5513];return _0x578fd2;};'use strict';var EventEmitter=require(_0x1848('0x0'));var ChatInternalMessage=require('../../mysqldb')['db'][_0x1848('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x1848('0x2')](0x0);var events={'afterCreate':_0x1848('0x3'),'afterUpdate':_0x1848('0x4'),'afterDestroy':_0x1848('0x5')};function emitEvent(_0x3264e5){return function(_0x3d07fd,_0x391e1e,_0x4c64b6){ChatInternalMessageEvents[_0x1848('0x6')](_0x3264e5+':'+_0x3d07fd['id'],_0x3d07fd);ChatInternalMessageEvents['emit'](_0x3264e5,_0x3d07fd);_0x4c64b6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xe8d7=['hasOwnProperty','hook','exports','events','ChatInternalMessage','setMaxListeners','update','remove','emit'];(function(_0x132a8a,_0x8bb7a6){var _0x24d962=function(_0x5e387e){while(--_0x5e387e){_0x132a8a['push'](_0x132a8a['shift']());}};_0x24d962(++_0x8bb7a6);}(_0xe8d7,0x1e9));var _0x7e8d=function(_0x1f4019,_0xe5e89e){_0x1f4019=_0x1f4019-0x0;var _0x4d5b6c=_0xe8d7[_0x1f4019];return _0x4d5b6c;};'use strict';var EventEmitter=require(_0x7e8d('0x0'));var ChatInternalMessage=require('../../mysqldb')['db'][_0x7e8d('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x7e8d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7e8d('0x3'),'afterDestroy':_0x7e8d('0x4')};function emitEvent(_0x2021bd){return function(_0x1088b5,_0x3a7f13,_0x1569b6){ChatInternalMessageEvents[_0x7e8d('0x5')](_0x2021bd+':'+_0x1088b5['id'],_0x1088b5);ChatInternalMessageEvents[_0x7e8d('0x5')](_0x2021bd,_0x1088b5);_0x1569b6(null);};}for(var e in events){if(events[_0x7e8d('0x6')](e)){var event=events[e];ChatInternalMessage[_0x7e8d('0x7')](e,emitEvent(event));}}module[_0x7e8d('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
index f4ffbcd..42028b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e7e=['chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','bluebird','path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage'];(function(_0x447f2a,_0x5721e7){var _0x42d932=function(_0x28616d){while(--_0x28616d){_0x447f2a['push'](_0x447f2a['shift']());}};_0x42d932(++_0x5721e7);}(_0x8e7e,0x1a7));var _0xe8e7=function(_0x1887f8,_0x423cee){_0x1887f8=_0x1887f8-0x0;var _0x1d7a4e=_0x8e7e[_0x1887f8];return _0x1d7a4e;};'use strict';var _=require(_0xe8e7('0x0'));var util=require(_0xe8e7('0x1'));var logger=require('../../config/logger')(_0xe8e7('0x2'));var moment=require('moment');var BPromise=require(_0xe8e7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe8e7('0x4'));var rimraf=require(_0xe8e7('0x5'));var config=require(_0xe8e7('0x6'));var attributes=require(_0xe8e7('0x7'));module[_0xe8e7('0x8')]=function(_0x500f54,_0x51983f){return _0x500f54[_0xe8e7('0x9')](_0xe8e7('0xa'),attributes,{'tableName':_0xe8e7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe8e7('0xc'),'collate':_0xe8e7('0xd')});};
\ No newline at end of file
+var _0x9338=['../../config/logger','api','bluebird','request-promise','path','rimraf','./chatInternalMessage.attributes','exports','ChatInternalMessage','chat_internal_messages','utf8mb4_unicode_ci','util'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x9338,0x14f));var _0x8933=function(_0x481ffc,_0x4acb82){_0x481ffc=_0x481ffc-0x0;var _0x51d09a=_0x9338[_0x481ffc];return _0x51d09a;};'use strict';var _=require('lodash');var util=require(_0x8933('0x0'));var logger=require(_0x8933('0x1'))(_0x8933('0x2'));var moment=require('moment');var BPromise=require(_0x8933('0x3'));var rp=require(_0x8933('0x4'));var fs=require('fs');var path=require(_0x8933('0x5'));var rimraf=require(_0x8933('0x6'));var config=require('../../config/environment');var attributes=require(_0x8933('0x7'));module[_0x8933('0x8')]=function(_0x108d57,_0xeb9fed){return _0x108d57['define'](_0x8933('0x9'),attributes,{'tableName':_0x8933('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x8933('0xb')});};
\ No newline at end of file
index fb5d903..8bb85e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb79=['defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','info','ChatInternalMessage,\x20%s,\x20%s','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcb79,0x15f));var _0x9cb7=function(_0x55d1d3,_0x414178){_0x55d1d3=_0x55d1d3-0x0;var _0x375aef=_0xcb79[_0x55d1d3];return _0x375aef;};'use strict';var _=require(_0x9cb7('0x0'));var util=require(_0x9cb7('0x1'));var moment=require(_0x9cb7('0x2'));var BPromise=require(_0x9cb7('0x3'));var rs=require(_0x9cb7('0x4'));var fs=require('fs');var Redis=require(_0x9cb7('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9cb7('0x6'));var logger=require(_0x9cb7('0x7'))(_0x9cb7('0x8'));var config=require(_0x9cb7('0x9'));var jayson=require(_0x9cb7('0xa'));var client=jayson[_0x9cb7('0xb')][_0x9cb7('0xc')]({'port':0x232a});config['redis']=_[_0x9cb7('0xd')](config['redis'],{'host':_0x9cb7('0xe'),'port':0x18eb});var socket=require(_0x9cb7('0xf'))(new Redis(config['redis']));require(_0x9cb7('0x10'))['register'](socket);function respondWithRpcPromise(_0x1d61e1,_0x39e8a9,_0x38de4f){return new BPromise(function(_0x51481d,_0x1e18b0){return client['request'](_0x1d61e1,_0x38de4f)['then'](function(_0x5e626e){logger[_0x9cb7('0x11')](_0x9cb7('0x12'),_0x39e8a9,'request\x20sent');logger[_0x9cb7('0x13')](_0x9cb7('0x14'),_0x39e8a9,'request\x20sent',JSON[_0x9cb7('0x15')](_0x5e626e));if(_0x5e626e[_0x9cb7('0x16')]){if(_0x5e626e['error'][_0x9cb7('0x17')]===0x1f4){logger['error'](_0x9cb7('0x12'),_0x39e8a9,_0x5e626e[_0x9cb7('0x16')][_0x9cb7('0x18')]);return _0x1e18b0(_0x5e626e[_0x9cb7('0x16')][_0x9cb7('0x18')]);}logger[_0x9cb7('0x16')](_0x9cb7('0x12'),_0x39e8a9,_0x5e626e['error'][_0x9cb7('0x18')]);return _0x51481d(_0x5e626e['error']['message']);}else{logger[_0x9cb7('0x11')](_0x9cb7('0x12'),_0x39e8a9,_0x9cb7('0x19'));_0x51481d(_0x5e626e[_0x9cb7('0x1a')][_0x9cb7('0x18')]);}})[_0x9cb7('0x1b')](function(_0x38940f){logger[_0x9cb7('0x16')](_0x9cb7('0x12'),_0x39e8a9,_0x38940f);_0x1e18b0(_0x38940f);});});}
\ No newline at end of file
+var _0x1be1=['util','moment','bluebird','ioredis','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash'];(function(_0x1ba7b5,_0x301e68){var _0x29fd78=function(_0x450363){while(--_0x450363){_0x1ba7b5['push'](_0x1ba7b5['shift']());}};_0x29fd78(++_0x301e68);}(_0x1be1,0x19f));var _0x11be=function(_0x25fe0b,_0x199b5a){_0x25fe0b=_0x25fe0b-0x0;var _0x1368bc=_0x1be1[_0x25fe0b];return _0x1368bc;};'use strict';var _=require(_0x11be('0x0'));var util=require(_0x11be('0x1'));var moment=require(_0x11be('0x2'));var BPromise=require(_0x11be('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x11be('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x11be('0x5'));var config=require(_0x11be('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x11be('0x7')][_0x11be('0x8')]({'port':0x232a});config[_0x11be('0x9')]=_[_0x11be('0xa')](config[_0x11be('0x9')],{'host':_0x11be('0xb'),'port':0x18eb});var socket=require(_0x11be('0xc'))(new Redis(config['redis']));require(_0x11be('0xd'))[_0x11be('0xe')](socket);function respondWithRpcPromise(_0x233457,_0x5c4306,_0x2566e2){return new BPromise(function(_0x4ccd38,_0x252f11){return client[_0x11be('0xf')](_0x233457,_0x2566e2)[_0x11be('0x10')](function(_0x2a977a){logger[_0x11be('0x11')](_0x11be('0x12'),_0x5c4306,_0x11be('0x13'));logger[_0x11be('0x14')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x5c4306,'request\x20sent',JSON[_0x11be('0x15')](_0x2a977a));if(_0x2a977a[_0x11be('0x16')]){if(_0x2a977a['error'][_0x11be('0x17')]===0x1f4){logger['error'](_0x11be('0x12'),_0x5c4306,_0x2a977a[_0x11be('0x16')]['message']);return _0x252f11(_0x2a977a['error'][_0x11be('0x18')]);}logger[_0x11be('0x16')]('ChatInternalMessage,\x20%s,\x20%s',_0x5c4306,_0x2a977a['error']['message']);return _0x4ccd38(_0x2a977a[_0x11be('0x16')][_0x11be('0x18')]);}else{logger['info'](_0x11be('0x12'),_0x5c4306,_0x11be('0x13'));_0x4ccd38(_0x2a977a['result'][_0x11be('0x18')]);}})[_0x11be('0x19')](function(_0x4af5f1){logger[_0x11be('0x16')](_0x11be('0x12'),_0x5c4306,_0x4af5f1);_0x252f11(_0x4af5f1);});});}
\ No newline at end of file
index da8c751..4ce2b6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa2f=['removeListener','length','remove','emit'];(function(_0x806ece,_0x10282e){var _0x18b6c7=function(_0x325cd2){while(--_0x325cd2){_0x806ece['push'](_0x806ece['shift']());}};_0x18b6c7(++_0x10282e);}(_0xaa2f,0x66));var _0xfaa2=function(_0x470d13,_0x3f22fa){_0x470d13=_0x470d13-0x0;var _0x18cc32=_0xaa2f[_0x470d13];return _0x18cc32;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=['save',_0xfaa2('0x0'),'update'];function createListener(_0x4f3502,_0x5b3885){return function(_0x1f0eaf){_0x5b3885[_0xfaa2('0x1')](_0x4f3502,_0x1f0eaf);};}function removeListener(_0x4ae7cb,_0x23c1a1){return function(){ChatInternalMessageEvents[_0xfaa2('0x2')](_0x4ae7cb,_0x23c1a1);};}exports['register']=function(_0x21e3de){for(var _0x13d200=0x0,_0x2c8e75=events[_0xfaa2('0x3')];_0x13d200<_0x2c8e75;_0x13d200++){var _0xece912=events[_0x13d200];var _0x26e1ef=createListener('chatInternalMessage:'+_0xece912,_0x21e3de);ChatInternalMessageEvents['on'](_0xece912,_0x26e1ef);}};
\ No newline at end of file
+var _0x1ba0=['register','length','chatInternalMessage:','remove','emit','removeListener'];(function(_0x421d51,_0x2156e2){var _0x4e65d2=function(_0x3d3ddb){while(--_0x3d3ddb){_0x421d51['push'](_0x421d51['shift']());}};_0x4e65d2(++_0x2156e2);}(_0x1ba0,0x1c5));var _0x01ba=function(_0x392e38,_0x25a564){_0x392e38=_0x392e38-0x0;var _0x44d727=_0x1ba0[_0x392e38];return _0x44d727;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=['save',_0x01ba('0x0'),'update'];function createListener(_0x279b19,_0x59e6c1){return function(_0x4f7b1f){_0x59e6c1[_0x01ba('0x1')](_0x279b19,_0x4f7b1f);};}function removeListener(_0x325141,_0x5210fe){return function(){ChatInternalMessageEvents[_0x01ba('0x2')](_0x325141,_0x5210fe);};}exports[_0x01ba('0x3')]=function(_0x1114f7){for(var _0x5056b6=0x0,_0x1e0924=events[_0x01ba('0x4')];_0x5056b6<_0x1e0924;_0x5056b6++){var _0x121295=events[_0x5056b6];var _0xedb648=createListener(_0x01ba('0x5')+_0x121295,_0x1114f7);ChatInternalMessageEvents['on'](_0x121295,_0xedb648);}};
\ No newline at end of file
index ca3eb05..f60b254 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6b8=['./chatInternalMessage.controller','get','isAuthenticated','index','/describe','getUsers','/:id','create','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4b81ad,_0x2d63ec){var _0x449c80=function(_0x55143f){while(--_0x55143f){_0x4b81ad['push'](_0x4b81ad['shift']());}};_0x449c80(++_0x2d63ec);}(_0xe6b8,0x124));var _0x8e6b=function(_0x361f40,_0x36d252){_0x361f40=_0x361f40-0x0;var _0x3c54a8=_0xe6b8[_0x361f40];return _0x3c54a8;};'use strict';var multer=require(_0x8e6b('0x0'));var util=require(_0x8e6b('0x1'));var path=require('path');var timeout=require(_0x8e6b('0x2'));var express=require(_0x8e6b('0x3'));var router=express['Router']();var fs_extra=require(_0x8e6b('0x4'));var auth=require(_0x8e6b('0x5'));var interaction=require(_0x8e6b('0x6'));var config=require(_0x8e6b('0x7'));var controller=require(_0x8e6b('0x8'));router[_0x8e6b('0x9')]('/',auth[_0x8e6b('0xa')](),controller[_0x8e6b('0xb')]);router['get'](_0x8e6b('0xc'),auth[_0x8e6b('0xa')](),controller['describe']);router[_0x8e6b('0x9')]('/users',auth[_0x8e6b('0xa')](),controller[_0x8e6b('0xd')]);router[_0x8e6b('0x9')](_0x8e6b('0xe'),auth[_0x8e6b('0xa')](),controller['show']);router['post']('/',auth[_0x8e6b('0xa')](),controller[_0x8e6b('0xf')]);router['put'](_0x8e6b('0xe'),controller[_0x8e6b('0x10')]);router[_0x8e6b('0x11')](_0x8e6b('0xe'),auth[_0x8e6b('0xa')](),controller[_0x8e6b('0x12')]);module[_0x8e6b('0x13')]=router;
\ No newline at end of file
+var _0x6757=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','describe','/users','/:id','post','put','update','delete','destroy','exports','multer','util'];(function(_0x5edf96,_0x6bb28f){var _0x4cdb17=function(_0x43f04a){while(--_0x43f04a){_0x5edf96['push'](_0x5edf96['shift']());}};_0x4cdb17(++_0x6bb28f);}(_0x6757,0xf0));var _0x7675=function(_0x3c1851,_0x1c8167){_0x3c1851=_0x3c1851-0x0;var _0x272b91=_0x6757[_0x3c1851];return _0x272b91;};'use strict';var multer=require(_0x7675('0x0'));var util=require(_0x7675('0x1'));var path=require(_0x7675('0x2'));var timeout=require(_0x7675('0x3'));var express=require('express');var router=express[_0x7675('0x4')]();var fs_extra=require(_0x7675('0x5'));var auth=require(_0x7675('0x6'));var interaction=require(_0x7675('0x7'));var config=require(_0x7675('0x8'));var controller=require(_0x7675('0x9'));router[_0x7675('0xa')]('/',auth[_0x7675('0xb')](),controller[_0x7675('0xc')]);router['get']('/describe',auth[_0x7675('0xb')](),controller[_0x7675('0xd')]);router[_0x7675('0xa')](_0x7675('0xe'),auth['isAuthenticated'](),controller['getUsers']);router[_0x7675('0xa')](_0x7675('0xf'),auth[_0x7675('0xb')](),controller['show']);router[_0x7675('0x10')]('/',auth[_0x7675('0xb')](),controller['create']);router[_0x7675('0x11')](_0x7675('0xf'),controller[_0x7675('0x12')]);router[_0x7675('0x13')](_0x7675('0xf'),auth[_0x7675('0xb')](),controller[_0x7675('0x14')]);module[_0x7675('0x15')]=router;
\ No newline at end of file
index bd29bb2..a90627c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x793b=['STRING','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x793b,0x189));var _0xb793=function(_0x23dbea,_0x34bdc0){_0x23dbea=_0x23dbea-0x0;var _0x50d237=_0x793b[_0x23dbea];return _0x50d237;};'use strict';var Sequelize=require(_0xb793('0x0'));module[_0xb793('0x1')]={'body':{'type':Sequelize[_0xb793('0x2')](_0xb793('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xb793('0x4')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xb793('0x5')]('in',_0xb793('0x6')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0xb793('0x7')]},'providerResponse':{'type':Sequelize[_0xb793('0x2')]}};
\ No newline at end of file
+var _0xa321=['medium','BOOLEAN','ENUM','out','DATE','sequelize','exports','TEXT'];(function(_0x53ffd7,_0x354bf7){var _0x28ab42=function(_0x2fd9c7){while(--_0x2fd9c7){_0x53ffd7['push'](_0x53ffd7['shift']());}};_0x28ab42(++_0x354bf7);}(_0xa321,0x9d));var _0x1a32=function(_0x4a0801,_0x55b298){_0x4a0801=_0x4a0801-0x0;var _0x47306d=_0xa321[_0x4a0801];return _0x47306d;};'use strict';var Sequelize=require(_0x1a32('0x0'));module[_0x1a32('0x1')]={'body':{'type':Sequelize[_0x1a32('0x2')](_0x1a32('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x1a32('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x1a32('0x5')]('in','out'),'defaultValue':_0x1a32('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0x1a32('0x7')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index f408226..52f6518 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(_0x4da1ec,_0x3039b8){var _0x3fc0cc=function(_0x5d5d4c){while(--_0x5d5d4c){_0x4da1ec['push'](_0x4da1ec['shift']());}};_0x3fc0cc(++_0x3039b8);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];config[_0x0a9e('0x15')]=_[_0x0a9e('0x16')](config[_0x0a9e('0x15')],{'host':_0x0a9e('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x15')]));require(_0x0a9e('0x18'))[_0x0a9e('0x19')](socket);var jayson=require(_0x0a9e('0x1a'));var client=jayson[_0x0a9e('0x1b')][_0x0a9e('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x0a9e('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x5d0880,_0x1985b6,_0x519dfd,_0x16033c){return new BPromise(function(_0x12066b,_0x48f32d){var _0x225616=_0x16033c||client;return _0x225616['request'](_0x5d0880,_0x519dfd)[_0x0a9e('0x1d')](function(_0x478723){logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));logger[_0x0a9e('0x21')](_0x0a9e('0x22'),_0x1985b6,_0x0a9e('0x20'),JSON[_0x0a9e('0x23')](_0x478723));if(_0x478723[_0x0a9e('0x24')]){if(_0x478723[_0x0a9e('0x24')][_0x0a9e('0x25')]===0x1f4){logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')]['message']);return _0x48f32d(_0x478723[_0x0a9e('0x24')]['message']);}logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')][_0x0a9e('0x26')]);return _0x12066b(_0x478723[_0x0a9e('0x24')]['message']);}else{logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));_0x12066b(_0x478723[_0x0a9e('0x27')][_0x0a9e('0x26')]);}})[_0x0a9e('0x28')](function(_0x16b1ca){logger['error']('ChatMessage,\x20%s,\x20%s',_0x1985b6,_0x16b1ca);_0x48f32d(_0x16b1ca);});});}function respondWithStatusCode(_0x197ec0,_0x3a8e58){_0x3a8e58=_0x3a8e58||0xcc;return function(_0x40c424){if(_0x40c424){return _0x197ec0[_0x0a9e('0x29')](_0x3a8e58);}return _0x197ec0['status'](_0x3a8e58)[_0x0a9e('0x2a')]();};}function respondWithResult(_0x479bc4,_0x45a1e7){_0x45a1e7=_0x45a1e7||0xc8;return function(_0x5bfb33){if(_0x5bfb33){return _0x479bc4[_0x0a9e('0x2b')](_0x45a1e7)[_0x0a9e('0x2c')](_0x5bfb33);}};}function respondWithFilteredResult(_0x25fba9,_0x14433c){return function(_0x140511){if(_0x140511){var _0x1538a4=typeof _0x14433c[_0x0a9e('0x2d')]===_0x0a9e('0x2e')&&typeof _0x14433c['limit']===_0x0a9e('0x2e');var _0x468813=_0x140511[_0x0a9e('0x2f')];var _0x2ec755=_0x1538a4?0x0:_0x14433c['offset'];var _0x15b200=_0x1538a4?_0x140511[_0x0a9e('0x2f')]:_0x14433c[_0x0a9e('0x2d')]+_0x14433c[_0x0a9e('0x30')];var _0x58b06f;if(_0x15b200>=_0x468813){_0x15b200=_0x468813;_0x58b06f=0xc8;}else{_0x58b06f=0xce;}_0x25fba9[_0x0a9e('0x2b')](_0x58b06f);return _0x25fba9[_0x0a9e('0x31')](_0x0a9e('0x32'),_0x2ec755+'-'+_0x15b200+'/'+_0x468813)[_0x0a9e('0x2c')](_0x140511);}return null;};}function patchUpdates(_0x540530){return function(_0x426950){try{jsonpatch['apply'](_0x426950,_0x540530,!![]);}catch(_0x2407f9){return BPromise[_0x0a9e('0x33')](_0x2407f9);}return _0x426950[_0x0a9e('0x34')]();};}function saveUpdates(_0x33bdb7,_0x25ce3a){return function(_0x5180f1){if(_0x5180f1){return _0x5180f1[_0x0a9e('0x35')](_0x33bdb7)[_0x0a9e('0x1d')](function(_0x40cb85){return _0x40cb85;});}return null;};}function removeEntity(_0x2da5c0,_0x2b45ea){return function(_0x409319){if(_0x409319){return _0x409319[_0x0a9e('0x36')]()[_0x0a9e('0x1d')](function(){_0x2da5c0['status'](0xcc)[_0x0a9e('0x2a')]();});}};}function handleEntityNotFound(_0x5e7238,_0x2cc7a0){return function(_0x14b13f){if(!_0x14b13f){_0x5e7238[_0x0a9e('0x29')](0x194);}return _0x14b13f;};}function handleError(_0x3f3d41,_0x567193){_0x567193=_0x567193||0x1f4;return function(_0x191e91){logger[_0x0a9e('0x24')](_0x191e91[_0x0a9e('0x37')]);if(_0x191e91[_0x0a9e('0x38')]){delete _0x191e91['name'];}_0x3f3d41['status'](_0x567193)[_0x0a9e('0x39')](_0x191e91);};}exports['index']=function(_0x24936a,_0x3d9717){var _0x381c37={},_0x1ef87a={},_0x4f41ae={'count':0x0,'rows':[]};var _0x31916f=_[_0x0a9e('0x3a')](db[_0x0a9e('0x3b')]['rawAttributes'],function(_0x1dbf74){return{'name':_0x1dbf74[_0x0a9e('0x3c')],'type':_0x1dbf74[_0x0a9e('0x3d')]['key']};});_0x1ef87a['model']=_[_0x0a9e('0x3a')](_0x31916f,_0x0a9e('0x38'));_0x1ef87a['query']=_[_0x0a9e('0x3e')](_0x24936a[_0x0a9e('0x3f')]);_0x1ef87a[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],_0x1ef87a['query']);_0x381c37[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],qs[_0x0a9e('0x43')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x43')]));_0x381c37['attributes']=_0x381c37[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x381c37[_0x0a9e('0x42')]:_0x1ef87a[_0x0a9e('0x45')];if(!_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x46')](_0x0a9e('0x47'))){_0x381c37[_0x0a9e('0x30')]=qs[_0x0a9e('0x30')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x30')]);_0x381c37[_0x0a9e('0x2d')]=qs[_0x0a9e('0x2d')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x2d')]);}_0x381c37['order']=qs['sort'](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x48')]);_0x381c37[_0x0a9e('0x49')]=qs[_0x0a9e('0x40')](_[_0x0a9e('0x4a')](_0x24936a[_0x0a9e('0x3f')],_0x1ef87a[_0x0a9e('0x40')]),_0x31916f);if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]){_0x381c37[_0x0a9e('0x49')]=_[_0x0a9e('0x4c')](_0x381c37[_0x0a9e('0x49')],{'$or':_['map'](_0x31916f,function(_0x117c99){if(_0x117c99[_0x0a9e('0x3d')]!==_0x0a9e('0x4d')){var _0xfbd5ad={};_0xfbd5ad[_0x117c99[_0x0a9e('0x38')]]={'$like':'%'+_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]+'%'};return _0xfbd5ad;}})});}_0x381c37=_[_0x0a9e('0x4c')]({},_0x381c37,_0x24936a['options']);var _0x2e9d90={'where':_0x381c37['where']};return db[_0x0a9e('0x3b')][_0x0a9e('0x2f')](_0x2e9d90)[_0x0a9e('0x1d')](function(_0x562fb4){_0x4f41ae[_0x0a9e('0x2f')]=_0x562fb4;if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4e')]){_0x381c37[_0x0a9e('0x4f')]=[{'all':!![]}];}return db[_0x0a9e('0x3b')][_0x0a9e('0x50')](_0x381c37);})[_0x0a9e('0x1d')](function(_0x5bbcde){_0x4f41ae[_0x0a9e('0x51')]=_0x5bbcde;return _0x4f41ae;})[_0x0a9e('0x1d')](respondWithFilteredResult(_0x3d9717,_0x381c37))[_0x0a9e('0x28')](handleError(_0x3d9717,null));};exports[_0x0a9e('0x52')]=function(_0x409789,_0x992c77){var _0x6054ee={'raw':!![],'where':{'id':_0x409789[_0x0a9e('0x53')]['id']}},_0x19383e={};_0x19383e['model']=_[_0x0a9e('0x3e')](db[_0x0a9e('0x3b')]['rawAttributes']);_0x19383e['query']=_['keys'](_0x409789[_0x0a9e('0x3f')]);_0x19383e[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],_0x19383e[_0x0a9e('0x3f')]);_0x6054ee[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],qs['fields'](_0x409789['query']['fields']));_0x6054ee[_0x0a9e('0x42')]=_0x6054ee[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x6054ee['attributes']:_0x19383e[_0x0a9e('0x45')];if(_0x409789[_0x0a9e('0x3f')]['includeAll']){_0x6054ee['include']=[{'all':!![]}];}_0x6054ee=_[_0x0a9e('0x4c')]({},_0x6054ee,_0x409789['options']);return db[_0x0a9e('0x3b')]['find'](_0x6054ee)[_0x0a9e('0x1d')](handleEntityNotFound(_0x992c77,null))[_0x0a9e('0x1d')](respondWithResult(_0x992c77,null))[_0x0a9e('0x28')](handleError(_0x992c77,null));};exports['create']=function(_0x2f82da,_0x1bf38a){return db['ChatMessage']['create'](_0x2f82da[_0x0a9e('0x54')],{})[_0x0a9e('0x1d')](respondWithResult(_0x1bf38a,0xc9))['catch'](handleError(_0x1bf38a,null));};exports[_0x0a9e('0x35')]=function(_0x5ce9ac,_0x211ef9){if(_0x5ce9ac['body']['id']){delete _0x5ce9ac[_0x0a9e('0x54')]['id'];}return db['ChatMessage']['find']({'where':{'id':_0x5ce9ac['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x211ef9,null))['then'](saveUpdates(_0x5ce9ac[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](respondWithResult(_0x211ef9,null))[_0x0a9e('0x28')](handleError(_0x211ef9,null));};exports[_0x0a9e('0x36')]=function(_0x232830,_0x272738){return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x232830['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x272738,null))[_0x0a9e('0x1d')](removeEntity(_0x272738,null))[_0x0a9e('0x28')](handleError(_0x272738,null));};exports[_0x0a9e('0x56')]=function(_0xb83dfd,_0x156662){return db['ChatMessage'][_0x0a9e('0x56')]()[_0x0a9e('0x1d')](respondWithResult(_0x156662,null))['catch'](handleError(_0x156662,null));};var interaction_log=require(_0x0a9e('0x57'))('chat-interactions');exports[_0x0a9e('0x58')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee){var _0x273cb5={'agent':{},'channel':'chat'};if(_0x5ba1f9[_0x0a9e('0x54')]['id']){delete _0x5ba1f9[_0x0a9e('0x54')]['id'];}_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x59')]=!![];_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5a')]=moment()['format'](_0x0a9e('0x5b'));_0x5ba1f9['body'][_0x0a9e('0x5c')]=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')]||_0x5ba1f9['user']['id'];_0x273cb5[_0x0a9e('0x5d')]['id']=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')];return db[_0x0a9e('0x3b')]['find']({'where':{'id':_0x5ba1f9[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](saveUpdates(_0x5ba1f9[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](function(_0x88dcbf){if(_0x88dcbf){_0x273cb5[_0x0a9e('0x26')]=_0x88dcbf[_0x0a9e('0x5e')]({'plain':!![]});return db['ChatInteraction'][_0x0a9e('0x55')]({'where':{'id':_0x88dcbf[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](function(_0x3528b7){if(_0x3528b7){return _0x3528b7['update']({'UserId':_0x5ba1f9['body'][_0x0a9e('0x5c')],'read1stAt':_[_0x0a9e('0x60')](_0x3528b7[_0x0a9e('0x61')])?moment()[_0x0a9e('0x62')](_0x0a9e('0x5b')):undefined});}return null;})[_0x0a9e('0x1d')](function(_0x387489){if(_0x387489){_0x273cb5[_0x0a9e('0x63')]=_0x387489[_0x0a9e('0x5e')]({'plain':!![]});interaction_log[_0x0a9e('0x1e')](_0x0a9e('0x64'),_0x5ba1f9[_0x0a9e('0x65')]['id'],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x66')],_0x273cb5[_0x0a9e('0x63')]['id'],_0x5ba1f9[_0x0a9e('0x54')]?JSON['stringify'](_0x5ba1f9[_0x0a9e('0x54')]):_0x0a9e('0x67'));return respondWithRpcPromise(_0x0a9e('0x68'),'acceptMessage',_0x273cb5);}return null;})[_0x0a9e('0x1d')](function(_0x30944e){var _0x4b341d=_0x0a9e('0x69')+_0x30944e[_0x0a9e('0x26')][_0x0a9e('0x6a')];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0x4b341d,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x0a9e('0x1d')](function(_0x18bf5d){return _0x18bf5d;});})[_0x0a9e('0x1d')](function(_0x23a7d3){if(_0x23a7d3){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x23a7d3[0x0];if(!_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),'fullname',_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})['then'](function(_0x2ed01e){if(!_0x2ed01e)return null;_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x2ed01e;return _0x273cb5;})[_0x0a9e('0x1d')](function(_0x542ece){if(_0x542ece){if(_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x6f')]){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x70')]=util['format'](_0x0a9e('0x71'),_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')]);_0x273cb5[_0x0a9e('0x26')]['channel']=_0x273cb5[_0x0a9e('0x72')];_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x58');return respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x75'),'message':_[_0x0a9e('0x4c')](_0x273cb5[_0x0a9e('0x26')],JSON[_0x0a9e('0x76')](_0x273cb5[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002)[_0x0a9e('0x1d')](function(){return _0x273cb5;});}return _0x273cb5;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x4b3c1a,null))['catch'](handleError(_0x4b3c1a,null));};var interaction_log=require(_0x0a9e('0x57'))(_0x0a9e('0x78'));exports[_0x0a9e('0x33')]=function(_0x563627,_0x3736e0,_0x33dda0){var _0x8cea96={'agent':{},'channel':_0x0a9e('0x79')};if(_0x563627['body']['id']){delete _0x563627['body']['id'];}_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')]=_0x563627['body'][_0x0a9e('0x5c')]||_0x563627['user']['id'];_0x8cea96[_0x0a9e('0x5d')]['id']=_0x563627[_0x0a9e('0x54')]['UserId'];return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))[_0x0a9e('0x1d')](function(_0x1f42a0){if(_0x1f42a0){_0x8cea96[_0x0a9e('0x26')]=_0x1f42a0['get']({'plain':!![]});return db[_0x0a9e('0x7a')][_0x0a9e('0x55')]({'where':{'id':_0x1f42a0[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))['then'](function(_0xf51744){if(_0xf51744){_0x8cea96[_0x0a9e('0x63')]=_0xf51744['get']({'plain':!![]});interaction_log[_0x0a9e('0x1e')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x563627[_0x0a9e('0x65')]['id'],_0x563627[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x563627[_0x0a9e('0x65')]['role'],_0x8cea96['interaction']['id'],_0x563627[_0x0a9e('0x54')]?JSON[_0x0a9e('0x23')](_0x563627[_0x0a9e('0x54')]):'null');return respondWithRpcPromise(_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x8cea96);}return null;})['then'](function(_0x4e46b2){var _0xf0a802='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4e46b2['message']['ContactId'];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0xf0a802,{'type':db[_0x0a9e('0x7d')][_0x0a9e('0x7e')][_0x0a9e('0x7f')],'raw':!![]})[_0x0a9e('0x1d')](function(_0x5a8854){return _0x5a8854;});})[_0x0a9e('0x1d')](function(_0x5955f1){if(_0x5955f1){_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x5955f1[0x0];if(!_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),_0x0a9e('0x80'),_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})[_0x0a9e('0x1d')](function(_0x1910bf){if(!_0x1910bf)return null;_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x1910bf;return _0x8cea96;})['then'](function(_0x2645d6){if(_0x2645d6){_0x2645d6[_0x0a9e('0x26')]['interface']=util[_0x0a9e('0x62')](_0x0a9e('0x71'),_0x563627[_0x0a9e('0x65')]['name']);_0x2645d6[_0x0a9e('0x26')]['channel']=_0x8cea96[_0x0a9e('0x72')];_0x2645d6[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x33');respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x81'),'message':_[_0x0a9e('0x4c')](_0x8cea96['message'],JSON[_0x0a9e('0x76')](_0x8cea96[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002);return _0x8cea96;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x3736e0,null))[_0x0a9e('0x28')](handleError(_0x3736e0,null));};
\ No newline at end of file
+var _0xd453=['internal','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','parse','formData','RejectMessage','rejectMessage','interface','rejectmessage','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','redis','./chatMessage.socket','client','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','stack','name','send','index','map','ChatMessage','rawAttributes','fieldName','key','query','intersection','model','attributes','fields','length','nolimit','limit','order','where','filters','pick','filter','type','VIRTUAL','merge','findAll','rows','keys','includeAll','include','find','create','body','destroy','params','describe','chat-interactions','accept','chat','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','agent','fullname','email'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd453,0x194));var _0x3d45=function(_0x538491,_0x43bae2){_0x538491=_0x538491-0x0;var _0x261ffa=_0xd453[_0x538491];return _0x261ffa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3d45('0x0'));var zipdir=require(_0x3d45('0x1'));var jsonpatch=require(_0x3d45('0x2'));var rp=require(_0x3d45('0x3'));var moment=require('moment');var BPromise=require(_0x3d45('0x4'));var Mustache=require(_0x3d45('0x5'));var util=require(_0x3d45('0x6'));var path=require(_0x3d45('0x7'));var sox=require(_0x3d45('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(_0x3d45('0x9'));var crypto=require(_0x3d45('0xa'));var jsforce=require(_0x3d45('0xb'));var deskjs=require(_0x3d45('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3d45('0xd'));var Redis=require(_0x3d45('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3d45('0xf'));var hardwareService=require(_0x3d45('0x10'));var logger=require(_0x3d45('0x11'))(_0x3d45('0x12'));var utils=require(_0x3d45('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x3d45('0x14'));var db=require(_0x3d45('0x15'))['db'];config['redis']=_[_0x3d45('0x16')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3d45('0x17'))(new Redis(config[_0x3d45('0x18')]));require(_0x3d45('0x19'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x3d45('0x1a')]['http']({'port':0x232c});var client9002=jayson[_0x3d45('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14dc43,_0x1136e1,_0x146545,_0x170d04){return new BPromise(function(_0xf3dd5c,_0x976452){var _0x37e3dd=_0x170d04||client;return _0x37e3dd[_0x3d45('0x1b')](_0x14dc43,_0x146545)[_0x3d45('0x1c')](function(_0x2e9d09){logger[_0x3d45('0x1d')](_0x3d45('0x1e'),_0x1136e1,_0x3d45('0x1f'));logger[_0x3d45('0x20')](_0x3d45('0x21'),_0x1136e1,_0x3d45('0x1f'),JSON[_0x3d45('0x22')](_0x2e9d09));if(_0x2e9d09[_0x3d45('0x23')]){if(_0x2e9d09[_0x3d45('0x23')][_0x3d45('0x24')]===0x1f4){logger[_0x3d45('0x23')](_0x3d45('0x1e'),_0x1136e1,_0x2e9d09[_0x3d45('0x23')]['message']);return _0x976452(_0x2e9d09['error'][_0x3d45('0x25')]);}logger['error'](_0x3d45('0x1e'),_0x1136e1,_0x2e9d09[_0x3d45('0x23')]['message']);return _0xf3dd5c(_0x2e9d09[_0x3d45('0x23')]['message']);}else{logger['info'](_0x3d45('0x1e'),_0x1136e1,_0x3d45('0x1f'));_0xf3dd5c(_0x2e9d09['result'][_0x3d45('0x25')]);}})[_0x3d45('0x26')](function(_0x4daec2){logger[_0x3d45('0x23')](_0x3d45('0x1e'),_0x1136e1,_0x4daec2);_0x976452(_0x4daec2);});});}function respondWithStatusCode(_0x3b2596,_0x3569a3){_0x3569a3=_0x3569a3||0xcc;return function(_0x1f84f0){if(_0x1f84f0){return _0x3b2596[_0x3d45('0x27')](_0x3569a3);}return _0x3b2596[_0x3d45('0x28')](_0x3569a3)[_0x3d45('0x29')]();};}function respondWithResult(_0x55ea2e,_0x2ad6b1){_0x2ad6b1=_0x2ad6b1||0xc8;return function(_0x5a3157){if(_0x5a3157){return _0x55ea2e['status'](_0x2ad6b1)[_0x3d45('0x2a')](_0x5a3157);}};}function respondWithFilteredResult(_0x2531f0,_0x351f75){return function(_0x16b6ad){if(_0x16b6ad){var _0x368ee7=typeof _0x351f75[_0x3d45('0x2b')]===_0x3d45('0x2c')&&typeof _0x351f75['limit']==='undefined';var _0x5e1592=_0x16b6ad[_0x3d45('0x2d')];var _0x70462b=_0x368ee7?0x0:_0x351f75[_0x3d45('0x2b')];var _0x5d8a3e=_0x368ee7?_0x16b6ad[_0x3d45('0x2d')]:_0x351f75[_0x3d45('0x2b')]+_0x351f75['limit'];var _0x39391b;if(_0x5d8a3e>=_0x5e1592){_0x5d8a3e=_0x5e1592;_0x39391b=0xc8;}else{_0x39391b=0xce;}_0x2531f0[_0x3d45('0x28')](_0x39391b);return _0x2531f0[_0x3d45('0x2e')](_0x3d45('0x2f'),_0x70462b+'-'+_0x5d8a3e+'/'+_0x5e1592)['json'](_0x16b6ad);}return null;};}function patchUpdates(_0x357d89){return function(_0x2b8c43){try{jsonpatch[_0x3d45('0x30')](_0x2b8c43,_0x357d89,!![]);}catch(_0xa287ea){return BPromise[_0x3d45('0x31')](_0xa287ea);}return _0x2b8c43[_0x3d45('0x32')]();};}function saveUpdates(_0xcc339f,_0x22658a){return function(_0x7fbf3c){if(_0x7fbf3c){return _0x7fbf3c[_0x3d45('0x33')](_0xcc339f)[_0x3d45('0x1c')](function(_0x3cc888){return _0x3cc888;});}return null;};}function removeEntity(_0x49d2de,_0x36bf66){return function(_0x535f7b){if(_0x535f7b){return _0x535f7b['destroy']()[_0x3d45('0x1c')](function(){_0x49d2de[_0x3d45('0x28')](0xcc)[_0x3d45('0x29')]();});}};}function handleEntityNotFound(_0x263256,_0xaa1c1e){return function(_0x4629cd){if(!_0x4629cd){_0x263256['sendStatus'](0x194);}return _0x4629cd;};}function handleError(_0xf24b55,_0x4d96f2){_0x4d96f2=_0x4d96f2||0x1f4;return function(_0x2aa92e){logger['error'](_0x2aa92e[_0x3d45('0x34')]);if(_0x2aa92e[_0x3d45('0x35')]){delete _0x2aa92e[_0x3d45('0x35')];}_0xf24b55[_0x3d45('0x28')](_0x4d96f2)[_0x3d45('0x36')](_0x2aa92e);};}exports[_0x3d45('0x37')]=function(_0x4ac792,_0x30286b){var _0x49c173={},_0x2cd397={},_0x63ebad={'count':0x0,'rows':[]};var _0x1c5b6a=_[_0x3d45('0x38')](db[_0x3d45('0x39')][_0x3d45('0x3a')],function(_0x727be2){return{'name':_0x727be2[_0x3d45('0x3b')],'type':_0x727be2['type'][_0x3d45('0x3c')]};});_0x2cd397['model']=_[_0x3d45('0x38')](_0x1c5b6a,_0x3d45('0x35'));_0x2cd397[_0x3d45('0x3d')]=_['keys'](_0x4ac792[_0x3d45('0x3d')]);_0x2cd397['filters']=_[_0x3d45('0x3e')](_0x2cd397[_0x3d45('0x3f')],_0x2cd397[_0x3d45('0x3d')]);_0x49c173[_0x3d45('0x40')]=_[_0x3d45('0x3e')](_0x2cd397['model'],qs[_0x3d45('0x41')](_0x4ac792['query'][_0x3d45('0x41')]));_0x49c173['attributes']=_0x49c173[_0x3d45('0x40')][_0x3d45('0x42')]?_0x49c173['attributes']:_0x2cd397[_0x3d45('0x3f')];if(!_0x4ac792[_0x3d45('0x3d')]['hasOwnProperty'](_0x3d45('0x43'))){_0x49c173[_0x3d45('0x44')]=qs[_0x3d45('0x44')](_0x4ac792[_0x3d45('0x3d')][_0x3d45('0x44')]);_0x49c173['offset']=qs['offset'](_0x4ac792[_0x3d45('0x3d')][_0x3d45('0x2b')]);}_0x49c173[_0x3d45('0x45')]=qs['sort'](_0x4ac792[_0x3d45('0x3d')]['sort']);_0x49c173[_0x3d45('0x46')]=qs[_0x3d45('0x47')](_[_0x3d45('0x48')](_0x4ac792[_0x3d45('0x3d')],_0x2cd397['filters']),_0x1c5b6a);if(_0x4ac792[_0x3d45('0x3d')][_0x3d45('0x49')]){_0x49c173[_0x3d45('0x46')]=_['merge'](_0x49c173[_0x3d45('0x46')],{'$or':_[_0x3d45('0x38')](_0x1c5b6a,function(_0x25c9e4){if(_0x25c9e4[_0x3d45('0x4a')]!==_0x3d45('0x4b')){var _0x1f51ca={};_0x1f51ca[_0x25c9e4[_0x3d45('0x35')]]={'$like':'%'+_0x4ac792[_0x3d45('0x3d')][_0x3d45('0x49')]+'%'};return _0x1f51ca;}})});}_0x49c173=_[_0x3d45('0x4c')]({},_0x49c173,_0x4ac792['options']);var _0x115ad4={'where':_0x49c173['where']};return db['ChatMessage']['count'](_0x115ad4)[_0x3d45('0x1c')](function(_0x51ef48){_0x63ebad[_0x3d45('0x2d')]=_0x51ef48;if(_0x4ac792[_0x3d45('0x3d')]['includeAll']){_0x49c173['include']=[{'all':!![]}];}return db['ChatMessage'][_0x3d45('0x4d')](_0x49c173);})[_0x3d45('0x1c')](function(_0x2e2abc){_0x63ebad[_0x3d45('0x4e')]=_0x2e2abc;return _0x63ebad;})['then'](respondWithFilteredResult(_0x30286b,_0x49c173))['catch'](handleError(_0x30286b,null));};exports['show']=function(_0x27a81c,_0x40f28e){var _0x212d9c={'raw':!![],'where':{'id':_0x27a81c['params']['id']}},_0x1bd86f={};_0x1bd86f[_0x3d45('0x3f')]=_[_0x3d45('0x4f')](db[_0x3d45('0x39')][_0x3d45('0x3a')]);_0x1bd86f[_0x3d45('0x3d')]=_[_0x3d45('0x4f')](_0x27a81c[_0x3d45('0x3d')]);_0x1bd86f[_0x3d45('0x47')]=_['intersection'](_0x1bd86f[_0x3d45('0x3f')],_0x1bd86f[_0x3d45('0x3d')]);_0x212d9c[_0x3d45('0x40')]=_[_0x3d45('0x3e')](_0x1bd86f[_0x3d45('0x3f')],qs['fields'](_0x27a81c[_0x3d45('0x3d')][_0x3d45('0x41')]));_0x212d9c[_0x3d45('0x40')]=_0x212d9c[_0x3d45('0x40')][_0x3d45('0x42')]?_0x212d9c[_0x3d45('0x40')]:_0x1bd86f[_0x3d45('0x3f')];if(_0x27a81c[_0x3d45('0x3d')][_0x3d45('0x50')]){_0x212d9c[_0x3d45('0x51')]=[{'all':!![]}];}_0x212d9c=_[_0x3d45('0x4c')]({},_0x212d9c,_0x27a81c['options']);return db['ChatMessage'][_0x3d45('0x52')](_0x212d9c)['then'](handleEntityNotFound(_0x40f28e,null))[_0x3d45('0x1c')](respondWithResult(_0x40f28e,null))[_0x3d45('0x26')](handleError(_0x40f28e,null));};exports[_0x3d45('0x53')]=function(_0x4b291b,_0x22fcac){return db['ChatMessage'][_0x3d45('0x53')](_0x4b291b[_0x3d45('0x54')],{})['then'](respondWithResult(_0x22fcac,0xc9))[_0x3d45('0x26')](handleError(_0x22fcac,null));};exports['update']=function(_0x55f6ff,_0x67b515){if(_0x55f6ff[_0x3d45('0x54')]['id']){delete _0x55f6ff[_0x3d45('0x54')]['id'];}return db[_0x3d45('0x39')][_0x3d45('0x52')]({'where':{'id':_0x55f6ff['params']['id']}})['then'](handleEntityNotFound(_0x67b515,null))[_0x3d45('0x1c')](saveUpdates(_0x55f6ff[_0x3d45('0x54')],null))['then'](respondWithResult(_0x67b515,null))[_0x3d45('0x26')](handleError(_0x67b515,null));};exports[_0x3d45('0x55')]=function(_0x363d76,_0x2a6f64){return db['ChatMessage'][_0x3d45('0x52')]({'where':{'id':_0x363d76[_0x3d45('0x56')]['id']}})[_0x3d45('0x1c')](handleEntityNotFound(_0x2a6f64,null))['then'](removeEntity(_0x2a6f64,null))[_0x3d45('0x26')](handleError(_0x2a6f64,null));};exports[_0x3d45('0x57')]=function(_0x276370,_0x473ead){return db['ChatMessage'][_0x3d45('0x57')]()[_0x3d45('0x1c')](respondWithResult(_0x473ead,null))[_0x3d45('0x26')](handleError(_0x473ead,null));};var interaction_log=require('../../config/logger')(_0x3d45('0x58'));exports[_0x3d45('0x59')]=function(_0x50cf4b,_0x33cec4,_0x5ab386){var _0x44a054={'agent':{},'channel':_0x3d45('0x5a')};if(_0x50cf4b[_0x3d45('0x54')]['id']){delete _0x50cf4b[_0x3d45('0x54')]['id'];}_0x50cf4b[_0x3d45('0x54')]['read']=!![];_0x50cf4b[_0x3d45('0x54')][_0x3d45('0x5b')]=moment()[_0x3d45('0x5c')](_0x3d45('0x5d'));_0x50cf4b[_0x3d45('0x54')][_0x3d45('0x5e')]=_0x50cf4b['body'][_0x3d45('0x5e')]||_0x50cf4b[_0x3d45('0x5f')]['id'];_0x44a054['agent']['id']=_0x50cf4b[_0x3d45('0x54')][_0x3d45('0x5e')];return db[_0x3d45('0x39')]['find']({'where':{'id':_0x50cf4b['params']['id'],'UserId':null}})[_0x3d45('0x1c')](handleEntityNotFound(_0x33cec4,null))['then'](saveUpdates(_0x50cf4b[_0x3d45('0x54')],null))[_0x3d45('0x1c')](function(_0x393cc3){if(_0x393cc3){_0x44a054['message']=_0x393cc3[_0x3d45('0x60')]({'plain':!![]});return db[_0x3d45('0x61')][_0x3d45('0x52')]({'where':{'id':_0x393cc3[_0x3d45('0x62')]}});}return null;})[_0x3d45('0x1c')](handleEntityNotFound(_0x33cec4,null))[_0x3d45('0x1c')](function(_0x2ec8ec){if(_0x2ec8ec){return _0x2ec8ec[_0x3d45('0x33')]({'UserId':_0x50cf4b[_0x3d45('0x54')][_0x3d45('0x5e')],'read1stAt':_[_0x3d45('0x63')](_0x2ec8ec[_0x3d45('0x64')])?moment()[_0x3d45('0x5c')](_0x3d45('0x5d')):undefined});}return null;})[_0x3d45('0x1c')](function(_0x1035e3){if(_0x1035e3){_0x44a054[_0x3d45('0x65')]=_0x1035e3['get']({'plain':!![]});interaction_log[_0x3d45('0x1d')](_0x3d45('0x66'),_0x50cf4b[_0x3d45('0x5f')]['id'],_0x50cf4b[_0x3d45('0x5f')][_0x3d45('0x35')],_0x50cf4b[_0x3d45('0x5f')][_0x3d45('0x67')],_0x44a054['interaction']['id'],_0x50cf4b[_0x3d45('0x54')]?JSON[_0x3d45('0x22')](_0x50cf4b[_0x3d45('0x54')]):_0x3d45('0x68'));return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x44a054);}return null;})[_0x3d45('0x1c')](function(_0x2a735a){var _0x4d9866=_0x3d45('0x69')+_0x2a735a[_0x3d45('0x25')][_0x3d45('0x6a')];return db[_0x3d45('0x6b')][_0x3d45('0x3d')](_0x4d9866,{'type':db[_0x3d45('0x6c')][_0x3d45('0x6d')][_0x3d45('0x6e')],'raw':!![]})['then'](function(_0x163a17){return _0x163a17;});})[_0x3d45('0x1c')](function(_0x274b44){if(_0x274b44){_0x44a054[_0x3d45('0x25')][_0x3d45('0x6f')]=_0x274b44[0x0];if(!_0x50cf4b[_0x3d45('0x54')][_0x3d45('0x5e')])return;return db[_0x3d45('0x70')][_0x3d45('0x52')]({'where':{'id':_0x50cf4b[_0x3d45('0x54')][_0x3d45('0x5e')],'role':_0x3d45('0x71')},'attributes':['id',_0x3d45('0x35'),_0x3d45('0x72'),_0x3d45('0x73'),_0x3d45('0x74')],'raw':!![]});}return null;})[_0x3d45('0x1c')](function(_0x122702){if(!_0x122702)return null;_0x44a054[_0x3d45('0x25')]['agent']=_0x122702;return _0x44a054;})[_0x3d45('0x1c')](function(_0x569482){if(_0x569482){if(_0x50cf4b[_0x3d45('0x54')][_0x3d45('0x75')]){_0x44a054[_0x3d45('0x25')]['interface']=util[_0x3d45('0x5c')](_0x3d45('0x76'),_0x50cf4b[_0x3d45('0x5f')][_0x3d45('0x35')]);_0x44a054['message'][_0x3d45('0x77')]=_0x44a054[_0x3d45('0x77')];_0x44a054[_0x3d45('0x25')][_0x3d45('0x78')]=_0x44a054['channel'];_0x44a054[_0x3d45('0x25')][_0x3d45('0x79')]=_0x3d45('0x59');return respondWithRpcPromise(_0x3d45('0x7a'),_0x3d45('0x7a'),{'event':_0x3d45('0x7b'),'message':_[_0x3d45('0x4c')](_0x44a054[_0x3d45('0x25')],JSON[_0x3d45('0x7c')](_0x44a054[_0x3d45('0x65')][_0x3d45('0x7d')]))},client9002)[_0x3d45('0x1c')](function(){return _0x44a054;});}return _0x44a054;}return null;})[_0x3d45('0x1c')](respondWithResult(_0x33cec4,null))[_0x3d45('0x26')](handleError(_0x33cec4,null));};var interaction_log=require(_0x3d45('0x11'))(_0x3d45('0x58'));exports['reject']=function(_0x1afb4c,_0x680b97,_0x5531d4){var _0x2f668d={'agent':{},'channel':'chat'};if(_0x1afb4c[_0x3d45('0x54')]['id']){delete _0x1afb4c['body']['id'];}_0x1afb4c[_0x3d45('0x54')][_0x3d45('0x5e')]=_0x1afb4c['body'][_0x3d45('0x5e')]||_0x1afb4c[_0x3d45('0x5f')]['id'];_0x2f668d['agent']['id']=_0x1afb4c[_0x3d45('0x54')][_0x3d45('0x5e')];return db[_0x3d45('0x39')][_0x3d45('0x52')]({'where':{'id':_0x1afb4c[_0x3d45('0x56')]['id'],'UserId':null}})[_0x3d45('0x1c')](handleEntityNotFound(_0x680b97,null))[_0x3d45('0x1c')](function(_0x4b567b){if(_0x4b567b){_0x2f668d[_0x3d45('0x25')]=_0x4b567b['get']({'plain':!![]});return db[_0x3d45('0x61')][_0x3d45('0x52')]({'where':{'id':_0x4b567b[_0x3d45('0x62')]}});}return null;})['then'](handleEntityNotFound(_0x680b97,null))['then'](function(_0x53ac88){if(_0x53ac88){_0x2f668d[_0x3d45('0x65')]=_0x53ac88[_0x3d45('0x60')]({'plain':!![]});interaction_log[_0x3d45('0x1d')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1afb4c['user']['id'],_0x1afb4c[_0x3d45('0x5f')]['name'],_0x1afb4c[_0x3d45('0x5f')][_0x3d45('0x67')],_0x2f668d[_0x3d45('0x65')]['id'],_0x1afb4c[_0x3d45('0x54')]?JSON[_0x3d45('0x22')](_0x1afb4c[_0x3d45('0x54')]):_0x3d45('0x68'));return respondWithRpcPromise(_0x3d45('0x7e'),_0x3d45('0x7f'),_0x2f668d);}return null;})[_0x3d45('0x1c')](function(_0x5dfbfe){var _0x2456b0=_0x3d45('0x69')+_0x5dfbfe[_0x3d45('0x25')]['ContactId'];return db[_0x3d45('0x6b')]['query'](_0x2456b0,{'type':db[_0x3d45('0x6c')][_0x3d45('0x6d')][_0x3d45('0x6e')],'raw':!![]})[_0x3d45('0x1c')](function(_0x5f7c16){return _0x5f7c16;});})['then'](function(_0x3532fc){if(_0x3532fc){_0x2f668d[_0x3d45('0x25')][_0x3d45('0x6f')]=_0x3532fc[0x0];if(!_0x1afb4c[_0x3d45('0x54')][_0x3d45('0x5e')])return;return db[_0x3d45('0x70')][_0x3d45('0x52')]({'where':{'id':_0x1afb4c[_0x3d45('0x54')][_0x3d45('0x5e')],'role':'agent'},'attributes':['id',_0x3d45('0x35'),_0x3d45('0x72'),'email',_0x3d45('0x74')],'raw':!![]});}return null;})['then'](function(_0x3a4c18){if(!_0x3a4c18)return null;_0x2f668d[_0x3d45('0x25')][_0x3d45('0x71')]=_0x3a4c18;return _0x2f668d;})[_0x3d45('0x1c')](function(_0x7b59a0){if(_0x7b59a0){_0x7b59a0['message'][_0x3d45('0x80')]=util[_0x3d45('0x5c')](_0x3d45('0x76'),_0x1afb4c['user'][_0x3d45('0x35')]);_0x7b59a0['message'][_0x3d45('0x77')]=_0x2f668d[_0x3d45('0x77')];_0x7b59a0[_0x3d45('0x25')][_0x3d45('0x78')]=_0x2f668d[_0x3d45('0x77')];_0x7b59a0[_0x3d45('0x25')][_0x3d45('0x79')]=_0x3d45('0x31');respondWithRpcPromise(_0x3d45('0x7a'),_0x3d45('0x7a'),{'event':_0x3d45('0x81'),'message':_[_0x3d45('0x4c')](_0x2f668d['message'],JSON[_0x3d45('0x7c')](_0x2f668d[_0x3d45('0x65')][_0x3d45('0x7d')]))},client9002);return _0x2f668d;}return null;})[_0x3d45('0x1c')](respondWithResult(_0x680b97,null))['catch'](handleError(_0x680b97,null));};
\ No newline at end of file
index 0dbbcda..af2de20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66e6=['remove','hasOwnProperty','events','../../mysqldb','ChatMessage','setMaxListeners','update'];(function(_0x34c1aa,_0x226691){var _0x22797c=function(_0x166e8e){while(--_0x166e8e){_0x34c1aa['push'](_0x34c1aa['shift']());}};_0x22797c(++_0x226691);}(_0x66e6,0x136));var _0x666e=function(_0x2745c8,_0x10b836){_0x2745c8=_0x2745c8-0x0;var _0x56f0c4=_0x66e6[_0x2745c8];return _0x56f0c4;};'use strict';var EventEmitter=require(_0x666e('0x0'));var ChatMessage=require(_0x666e('0x1'))['db'][_0x666e('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x666e('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x666e('0x4'),'afterDestroy':_0x666e('0x5')};function emitEvent(_0x24ecf9){return function(_0x28fa9f,_0x48126e,_0x50e35e){ChatMessageEvents['emit'](_0x24ecf9+':'+_0x28fa9f['id'],_0x28fa9f);ChatMessageEvents['emit'](_0x24ecf9,_0x28fa9f);_0x50e35e(null);};}for(var e in events){if(events[_0x666e('0x6')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
+var _0x8830=['update','emit','hook','exports','events','ChatMessage','setMaxListeners','save'];(function(_0x334c12,_0x33dda1){var _0x53268d=function(_0x2206f7){while(--_0x2206f7){_0x334c12['push'](_0x334c12['shift']());}};_0x53268d(++_0x33dda1);}(_0x8830,0xec));var _0x0883=function(_0xf793e5,_0x32b0ff){_0xf793e5=_0xf793e5-0x0;var _0x5678cd=_0x8830[_0xf793e5];return _0x5678cd;};'use strict';var EventEmitter=require(_0x0883('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0x0883('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x0883('0x2')](0x0);var events={'afterCreate':_0x0883('0x3'),'afterUpdate':_0x0883('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3469c9){return function(_0xd0ae06,_0x39f5aa,_0x48cafe){ChatMessageEvents['emit'](_0x3469c9+':'+_0xd0ae06['id'],_0xd0ae06);ChatMessageEvents[_0x0883('0x5')](_0x3469c9,_0xd0ae06);_0x48cafe(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x0883('0x6')](e,emitEvent(event));}}module[_0x0883('0x7')]=ChatMessageEvents;
\ No newline at end of file
index 6a3bfe1..d3f8d33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc55d=['api','bluebird','path','rimraf','../../config/environment','./chatMessage.attributes','exports','define','chat_messages','fti_chat_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','UserId','findOne','ChatInteractionId','update','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x2304cc,_0x56281f){var _0x2d4a58=function(_0x3ab390){while(--_0x3ab390){_0x2304cc['push'](_0x2304cc['shift']());}};_0x2d4a58(++_0x56281f);}(_0xc55d,0x1d9));var _0xdc55=function(_0x34a242,_0x3113a3){_0x34a242=_0x34a242-0x0;var _0x59cf4f=_0xc55d[_0x34a242];return _0x59cf4f;};'use strict';var _=require(_0xdc55('0x0'));var util=require(_0xdc55('0x1'));var logger=require(_0xdc55('0x2'))(_0xdc55('0x3'));var moment=require('moment');var BPromise=require(_0xdc55('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdc55('0x5'));var rimraf=require(_0xdc55('0x6'));var config=require(_0xdc55('0x7'));var attributes=require(_0xdc55('0x8'));module[_0xdc55('0x9')]=function(_0x29809d,_0x19df86){return _0x29809d[_0xdc55('0xa')]('ChatMessage',attributes,{'tableName':_0xdc55('0xb'),'paranoid':![],'indexes':[{'name':_0xdc55('0xc'),'fields':[_0xdc55('0xd')],'type':_0xdc55('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xf88ad8,_0x3b788d,_0x53bfc0){var _0x16939e=_0x29809d[_0xdc55('0xf')];var _0x53db7d=_0xf88ad8[_0xdc55('0x10')]({'plain':!![]});if(_0x53db7d[_0xdc55('0x11')][_0xdc55('0x12')]()==='in'||_0x53db7d[_0xdc55('0x11')][_0xdc55('0x12')]()===_0xdc55('0x13')&&!_0x53db7d[_0xdc55('0x14')]&&!_['isNil'](_0x53db7d[_0xdc55('0x15')])){_0x16939e['ChatInteraction'][_0xdc55('0x16')]({'where':{'id':_0x53db7d[_0xdc55('0x17')]}})['then'](function(_0x5c28d8){if(_0x5c28d8){_0x5c28d8[_0xdc55('0x18')]({'lastMsgAt':_0x53db7d['createdAt'],'lastMsgDirection':_0x53db7d[_0xdc55('0x11')]['toLowerCase']()});}})['catch'](function(_0x44e348){console[_0xdc55('0x19')](_0x44e348);});}_0x53bfc0();}},'charset':_0xdc55('0x1a'),'collate':_0xdc55('0x1b')});};
\ No newline at end of file
+var _0x214b=['UserId','ChatInteraction','ChatInteractionId','then','update','createdAt','catch','error','utf8mb4','lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment','define','ChatMessage','fti_chat_messages','body','FULLTEXT','models','toLowerCase','direction','secret'];(function(_0x1a89ca,_0x27394b){var _0x29cbb2=function(_0x31e1f4){while(--_0x31e1f4){_0x1a89ca['push'](_0x1a89ca['shift']());}};_0x29cbb2(++_0x27394b);}(_0x214b,0x1e4));var _0xb214=function(_0x2eb828,_0x413b95){_0x2eb828=_0x2eb828-0x0;var _0x52f7f4=_0x214b[_0x2eb828];return _0x52f7f4;};'use strict';var _=require(_0xb214('0x0'));var util=require(_0xb214('0x1'));var logger=require(_0xb214('0x2'))('api');var moment=require(_0xb214('0x3'));var BPromise=require(_0xb214('0x4'));var rp=require(_0xb214('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb214('0x6'));var attributes=require('./chatMessage.attributes');module['exports']=function(_0xd5418d,_0x25f99d){return _0xd5418d[_0xb214('0x7')](_0xb214('0x8'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':_0xb214('0x9'),'fields':[_0xb214('0xa')],'type':_0xb214('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x67997d,_0x7e4826,_0x2bf895){var _0x37372e=_0xd5418d[_0xb214('0xc')];var _0x4010ed=_0x67997d['get']({'plain':!![]});if(_0x4010ed['direction'][_0xb214('0xd')]()==='in'||_0x4010ed[_0xb214('0xe')][_0xb214('0xd')]()==='out'&&!_0x4010ed[_0xb214('0xf')]&&!_['isNil'](_0x4010ed[_0xb214('0x10')])){_0x37372e[_0xb214('0x11')]['findOne']({'where':{'id':_0x4010ed[_0xb214('0x12')]}})[_0xb214('0x13')](function(_0x3f4913){if(_0x3f4913){_0x3f4913[_0xb214('0x14')]({'lastMsgAt':_0x4010ed[_0xb214('0x15')],'lastMsgDirection':_0x4010ed[_0xb214('0xe')]['toLowerCase']()});}})[_0xb214('0x16')](function(_0x2a932c){console[_0xb214('0x17')](_0x2a932c);});}_0x2bf895();}},'charset':_0xb214('0x18'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index ee1f050..33d2ae6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3989=['http','redis','localhost','socket.io-emitter','./chatMessage.socket','request','then','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','CreateChatMessage','create','body','options','raw','stringify','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x12db73,_0x46faa9){var _0x295be1=function(_0x42a203){while(--_0x42a203){_0x12db73['push'](_0x12db73['shift']());}};_0x295be1(++_0x46faa9);}(_0x3989,0x12f));var _0x9398=function(_0x1250db,_0x4ce917){_0x1250db=_0x1250db-0x0;var _0x390024=_0x3989[_0x1250db];return _0x390024;};'use strict';var _=require(_0x9398('0x0'));var util=require('util');var moment=require(_0x9398('0x1'));var BPromise=require(_0x9398('0x2'));var rs=require(_0x9398('0x3'));var fs=require('fs');var Redis=require(_0x9398('0x4'));var db=require(_0x9398('0x5'))['db'];var utils=require(_0x9398('0x6'));var logger=require(_0x9398('0x7'))(_0x9398('0x8'));var config=require(_0x9398('0x9'));var jayson=require(_0x9398('0xa'));var client=jayson[_0x9398('0xb')][_0x9398('0xc')]({'port':0x232a});config['redis']=_['defaults'](config[_0x9398('0xd')],{'host':_0x9398('0xe'),'port':0x18eb});var socket=require(_0x9398('0xf'))(new Redis(config[_0x9398('0xd')]));require(_0x9398('0x10'))['register'](socket);function respondWithRpcPromise(_0x4d1fac,_0x26c6ed,_0x17ba46){return new BPromise(function(_0x5c83b0,_0x18fdd8){return client[_0x9398('0x11')](_0x4d1fac,_0x17ba46)[_0x9398('0x12')](function(_0x33d9aa){logger['info'](_0x9398('0x13'),_0x26c6ed,_0x9398('0x14'));logger[_0x9398('0x15')](_0x9398('0x16'),_0x26c6ed,_0x9398('0x14'),JSON['stringify'](_0x33d9aa));if(_0x33d9aa[_0x9398('0x17')]){if(_0x33d9aa['error'][_0x9398('0x18')]===0x1f4){logger[_0x9398('0x17')](_0x9398('0x13'),_0x26c6ed,_0x33d9aa[_0x9398('0x17')]['message']);return _0x18fdd8(_0x33d9aa[_0x9398('0x17')][_0x9398('0x19')]);}logger[_0x9398('0x17')](_0x9398('0x13'),_0x26c6ed,_0x33d9aa[_0x9398('0x17')][_0x9398('0x19')]);return _0x5c83b0(_0x33d9aa[_0x9398('0x17')]['message']);}else{logger[_0x9398('0x1a')]('ChatMessage,\x20%s,\x20%s',_0x26c6ed,_0x9398('0x14'));_0x5c83b0(_0x33d9aa[_0x9398('0x1b')][_0x9398('0x19')]);}})[_0x9398('0x1c')](function(_0x5d3d75){logger[_0x9398('0x17')](_0x9398('0x13'),_0x26c6ed,_0x5d3d75);_0x18fdd8(_0x5d3d75);});});}exports[_0x9398('0x1d')]=function(_0x32046a){var _0x141514=this;return new Promise(function(_0x2b1cbc,_0x2b0d5e){return db['ChatMessage'][_0x9398('0x1e')](_0x32046a[_0x9398('0x1f')],{'raw':_0x32046a[_0x9398('0x20')]?_0x32046a[_0x9398('0x20')][_0x9398('0x21')]===undefined?!![]:![]:!![]})[_0x9398('0x12')](function(_0xa87335){logger[_0x9398('0x1a')](_0x9398('0x1d'),_0x32046a);logger[_0x9398('0x15')](_0x9398('0x1d'),_0x32046a,JSON[_0x9398('0x22')](_0xa87335));_0x2b1cbc(_0xa87335);})[_0x9398('0x1c')](function(_0x57dcaa){logger[_0x9398('0x17')]('CreateChatMessage',_0x57dcaa['message'],_0x32046a);_0x2b0d5e(_0x141514['error'](0x1f4,_0x57dcaa[_0x9398('0x19')]));});});};
\ No newline at end of file
+var _0xb518=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./chatMessage.socket','register','request','then','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','CreateChatMessage','create','body','options','raw','lodash','moment','bluebird'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xb518,0x115));var _0x8b51=function(_0x35751f,_0x51e318){_0x35751f=_0x35751f-0x0;var _0x5d821a=_0xb518[_0x35751f];return _0x5d821a;};'use strict';var _=require(_0x8b51('0x0'));var util=require('util');var moment=require(_0x8b51('0x1'));var BPromise=require(_0x8b51('0x2'));var rs=require(_0x8b51('0x3'));var fs=require('fs');var Redis=require(_0x8b51('0x4'));var db=require(_0x8b51('0x5'))['db'];var utils=require(_0x8b51('0x6'));var logger=require(_0x8b51('0x7'))(_0x8b51('0x8'));var config=require(_0x8b51('0x9'));var jayson=require(_0x8b51('0xa'));var client=jayson[_0x8b51('0xb')][_0x8b51('0xc')]({'port':0x232a});config[_0x8b51('0xd')]=_[_0x8b51('0xe')](config[_0x8b51('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x8b51('0xf'))(new Redis(config[_0x8b51('0xd')]));require(_0x8b51('0x10'))[_0x8b51('0x11')](socket);function respondWithRpcPromise(_0x3af32d,_0x35e252,_0xf3d507){return new BPromise(function(_0x44e55e,_0x334574){return client[_0x8b51('0x12')](_0x3af32d,_0xf3d507)[_0x8b51('0x13')](function(_0x123d4f){logger['info'](_0x8b51('0x14'),_0x35e252,_0x8b51('0x15'));logger[_0x8b51('0x16')](_0x8b51('0x17'),_0x35e252,'request\x20sent',JSON[_0x8b51('0x18')](_0x123d4f));if(_0x123d4f[_0x8b51('0x19')]){if(_0x123d4f[_0x8b51('0x19')][_0x8b51('0x1a')]===0x1f4){logger['error'](_0x8b51('0x14'),_0x35e252,_0x123d4f['error'][_0x8b51('0x1b')]);return _0x334574(_0x123d4f[_0x8b51('0x19')][_0x8b51('0x1b')]);}logger[_0x8b51('0x19')](_0x8b51('0x14'),_0x35e252,_0x123d4f[_0x8b51('0x19')][_0x8b51('0x1b')]);return _0x44e55e(_0x123d4f['error'][_0x8b51('0x1b')]);}else{logger[_0x8b51('0x1c')](_0x8b51('0x14'),_0x35e252,_0x8b51('0x15'));_0x44e55e(_0x123d4f['result'][_0x8b51('0x1b')]);}})[_0x8b51('0x1d')](function(_0x1d2f6f){logger[_0x8b51('0x19')](_0x8b51('0x14'),_0x35e252,_0x1d2f6f);_0x334574(_0x1d2f6f);});});}exports[_0x8b51('0x1e')]=function(_0x441501){var _0x2f9de4=this;return new Promise(function(_0x2f7eed,_0x42600a){return db['ChatMessage'][_0x8b51('0x1f')](_0x441501[_0x8b51('0x20')],{'raw':_0x441501[_0x8b51('0x21')]?_0x441501['options'][_0x8b51('0x22')]===undefined?!![]:![]:!![]})[_0x8b51('0x13')](function(_0x45e32d){logger['info']('CreateChatMessage',_0x441501);logger['debug'](_0x8b51('0x1e'),_0x441501,JSON[_0x8b51('0x18')](_0x45e32d));_0x2f7eed(_0x45e32d);})['catch'](function(_0xf90a9b){logger[_0x8b51('0x19')](_0x8b51('0x1e'),_0xf90a9b[_0x8b51('0x1b')],_0x441501);_0x42600a(_0x2f9de4['error'](0x1f4,_0xf90a9b[_0x8b51('0x1b')]));});});};
\ No newline at end of file
index 36179d3..fec8003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d17=['update','emit','register','chatMessage:','./chatMessage.events','save'];(function(_0x5c1e1d,_0x20ec9b){var _0x28c8d6=function(_0x5a5d2c){while(--_0x5a5d2c){_0x5c1e1d['push'](_0x5c1e1d['shift']());}};_0x28c8d6(++_0x20ec9b);}(_0x2d17,0x17e));var _0x72d1=function(_0x4c0100,_0x2f14c3){_0x4c0100=_0x4c0100-0x0;var _0x44eb68=_0x2d17[_0x4c0100];return _0x44eb68;};'use strict';var ChatMessageEvents=require(_0x72d1('0x0'));var events=[_0x72d1('0x1'),'remove',_0x72d1('0x2')];function createListener(_0x4727f9,_0x531f4e){return function(_0x3687bc){_0x531f4e[_0x72d1('0x3')](_0x4727f9,_0x3687bc);};}function removeListener(_0x55b722,_0x1dd6d8){return function(){ChatMessageEvents['removeListener'](_0x55b722,_0x1dd6d8);};}exports[_0x72d1('0x4')]=function(_0x50f551){for(var _0x139ba0=0x0,_0x239d1f=events['length'];_0x139ba0<_0x239d1f;_0x139ba0++){var _0x477264=events[_0x139ba0];var _0x422f5a=createListener(_0x72d1('0x5')+_0x477264,_0x50f551);ChatMessageEvents['on'](_0x477264,_0x422f5a);}};
\ No newline at end of file
+var _0x39d9=['emit','removeListener','register','length','chatMessage:','./chatMessage.events','save','remove','update'];(function(_0x19d7c8,_0x342cce){var _0x48fd3a=function(_0x55c16b){while(--_0x55c16b){_0x19d7c8['push'](_0x19d7c8['shift']());}};_0x48fd3a(++_0x342cce);}(_0x39d9,0x17f));var _0x939d=function(_0x42cb8d,_0x273bca){_0x42cb8d=_0x42cb8d-0x0;var _0x2713b6=_0x39d9[_0x42cb8d];return _0x2713b6;};'use strict';var ChatMessageEvents=require(_0x939d('0x0'));var events=[_0x939d('0x1'),_0x939d('0x2'),_0x939d('0x3')];function createListener(_0x3834f0,_0x201b6a){return function(_0x367c79){_0x201b6a[_0x939d('0x4')](_0x3834f0,_0x367c79);};}function removeListener(_0x57ab6c,_0x2a9e29){return function(){ChatMessageEvents[_0x939d('0x5')](_0x57ab6c,_0x2a9e29);};}exports[_0x939d('0x6')]=function(_0x48b22f){for(var _0x41c89f=0x0,_0x537fd2=events[_0x939d('0x7')];_0x41c89f<_0x537fd2;_0x41c89f++){var _0x1bac28=events[_0x41c89f];var _0x20546a=createListener(_0x939d('0x8')+_0x1bac28,_0x48b22f);ChatMessageEvents['on'](_0x1bac28,_0x20546a);}};
\ No newline at end of file
index 41f2676..b22da48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99a1=['/:id/reject','reject','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','post','chat','chatmessage:create','create','update','/:id/accept','accept'];(function(_0x5be892,_0x68238a){var _0x53fc35=function(_0x8626ac){while(--_0x8626ac){_0x5be892['push'](_0x5be892['shift']());}};_0x53fc35(++_0x68238a);}(_0x99a1,0x1d8));var _0x199a=function(_0x501109,_0x5b64ab){_0x501109=_0x501109-0x0;var _0x510513=_0x99a1[_0x501109];return _0x510513;};'use strict';var multer=require(_0x199a('0x0'));var util=require(_0x199a('0x1'));var path=require(_0x199a('0x2'));var timeout=require(_0x199a('0x3'));var express=require(_0x199a('0x4'));var router=express[_0x199a('0x5')]();var fs_extra=require(_0x199a('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x199a('0x7'));var config=require('../../config/environment');var controller=require('./chatMessage.controller');router[_0x199a('0x8')]('/',auth[_0x199a('0x9')](),controller[_0x199a('0xa')]);router[_0x199a('0x8')](_0x199a('0xb'),auth[_0x199a('0x9')](),controller[_0x199a('0xc')]);router[_0x199a('0x8')](_0x199a('0xd'),auth[_0x199a('0x9')](),controller[_0x199a('0xe')]);router[_0x199a('0xf')]('/',auth[_0x199a('0x9')](),interaction['tracked'](_0x199a('0x10'),_0x199a('0x11')),controller[_0x199a('0x12')]);router['put']('/:id',controller[_0x199a('0x13')]);router['put'](_0x199a('0x14'),auth[_0x199a('0x9')](),controller[_0x199a('0x15')]);router['put'](_0x199a('0x16'),auth[_0x199a('0x9')](),controller[_0x199a('0x17')]);router[_0x199a('0x18')](_0x199a('0xd'),auth['isAuthenticated'](),controller[_0x199a('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x2ae9=['destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/describe','describe','show','post','tracked','chat','chatmessage:create','create','put','/:id/accept','/:id/reject','reject','delete','/:id'];(function(_0x2d9f14,_0x570b2e){var _0x45d7ce=function(_0x4af738){while(--_0x4af738){_0x2d9f14['push'](_0x2d9f14['shift']());}};_0x45d7ce(++_0x570b2e);}(_0x2ae9,0x179));var _0x92ae=function(_0x6ca1db,_0x569d05){_0x6ca1db=_0x6ca1db-0x0;var _0x5bcc1b=_0x2ae9[_0x6ca1db];return _0x5bcc1b;};'use strict';var multer=require('multer');var util=require(_0x92ae('0x0'));var path=require(_0x92ae('0x1'));var timeout=require(_0x92ae('0x2'));var express=require(_0x92ae('0x3'));var router=express[_0x92ae('0x4')]();var fs_extra=require(_0x92ae('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x92ae('0x6'));var config=require('../../config/environment');var controller=require('./chatMessage.controller');router[_0x92ae('0x7')]('/',auth[_0x92ae('0x8')](),controller['index']);router[_0x92ae('0x7')](_0x92ae('0x9'),auth[_0x92ae('0x8')](),controller[_0x92ae('0xa')]);router[_0x92ae('0x7')]('/:id',auth[_0x92ae('0x8')](),controller[_0x92ae('0xb')]);router[_0x92ae('0xc')]('/',auth[_0x92ae('0x8')](),interaction[_0x92ae('0xd')](_0x92ae('0xe'),_0x92ae('0xf')),controller[_0x92ae('0x10')]);router['put']('/:id',controller['update']);router[_0x92ae('0x11')](_0x92ae('0x12'),auth[_0x92ae('0x8')](),controller['accept']);router[_0x92ae('0x11')](_0x92ae('0x13'),auth[_0x92ae('0x8')](),controller[_0x92ae('0x14')]);router[_0x92ae('0x15')](_0x92ae('0x16'),auth[_0x92ae('0x8')](),controller[_0x92ae('0x17')]);module[_0x92ae('0x18')]=router;
\ No newline at end of file
index 05c244e..88cc92a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf654=['exports','medium'];(function(_0x2c37c8,_0x458d3d){var _0x3008ee=function(_0x40cc80){while(--_0x40cc80){_0x2c37c8['push'](_0x2c37c8['shift']());}};_0x3008ee(++_0x458d3d);}(_0xf654,0xf0));var _0x4f65=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf654[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module[_0x4f65('0x0')]={'body':{'type':Sequelize['TEXT'](_0x4f65('0x1')),'allowNull':![]}};
\ No newline at end of file
+var _0x4b40=['exports','TEXT','sequelize'];(function(_0x2c78df,_0x20abba){var _0x50912=function(_0x5aa161){while(--_0x5aa161){_0x2c78df['push'](_0x2c78df['shift']());}};_0x50912(++_0x20abba);}(_0x4b40,0xad));var _0x04b4=function(_0xfd8218,_0x33f2da){_0xfd8218=_0xfd8218-0x0;var _0x46e864=_0x4b40[_0xfd8218];return _0x46e864;};'use strict';var Sequelize=require(_0x04b4('0x0'));module[_0x04b4('0x1')]={'body':{'type':Sequelize[_0x04b4('0x2')]('medium'),'allowNull':![]}};
\ No newline at end of file
index cf9e48f..fe9d983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x16d10f,_0x2ba2d5){var _0x50c823=function(_0x44e43f){while(--_0x44e43f){_0x16d10f['push'](_0x16d10f['shift']());}};_0x50c823(++_0x2ba2d5);}(_0x7a54,0x106));var _0x47a5=function(_0x2de455,_0x28bb5d){_0x2de455=_0x2de455-0x0;var _0x520fe2=_0x7a54[_0x2de455];return _0x520fe2;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
+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(_0x5af241,_0x224db2){var _0x2cfc39=function(_0x18f24c){while(--_0x18f24c){_0x5af241['push'](_0x5af241['shift']());}};_0x2cfc39(++_0x224db2);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'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 53d8230..0b9d729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb55f=['exports','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatOfflineMessage.attributes'];(function(_0x4111d2,_0x57a5a3){var _0x1d811d=function(_0xe605e3){while(--_0xe605e3){_0x4111d2['push'](_0x4111d2['shift']());}};_0x1d811d(++_0x57a5a3);}(_0xb55f,0x1df));var _0xfb55=function(_0x512579,_0x4c2902){_0x512579=_0x512579-0x0;var _0x1af5ad=_0xb55f[_0x512579];return _0x1af5ad;};'use strict';var _=require(_0xfb55('0x0'));var util=require(_0xfb55('0x1'));var logger=require(_0xfb55('0x2'))(_0xfb55('0x3'));var moment=require(_0xfb55('0x4'));var BPromise=require(_0xfb55('0x5'));var rp=require(_0xfb55('0x6'));var fs=require('fs');var path=require(_0xfb55('0x7'));var rimraf=require(_0xfb55('0x8'));var config=require(_0xfb55('0x9'));var attributes=require(_0xfb55('0xa'));module[_0xfb55('0xb')]=function(_0x524784,_0x3da37d){return _0x524784['define']('ChatOfflineMessage',attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xfb55('0xc'),'collate':_0xfb55('0xd')});};
\ No newline at end of file
+var _0x884f=['bluebird','request-promise','path','rimraf','exports','define','ChatOfflineMessage','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment'];(function(_0x27dce3,_0x1bdcb3){var _0x456ff6=function(_0x334da6){while(--_0x334da6){_0x27dce3['push'](_0x27dce3['shift']());}};_0x456ff6(++_0x1bdcb3);}(_0x884f,0x17c));var _0xf884=function(_0x3aa4f1,_0x4f6533){_0x3aa4f1=_0x3aa4f1-0x0;var _0x419fbc=_0x884f[_0x3aa4f1];return _0x419fbc;};'use strict';var _=require(_0xf884('0x0'));var util=require('util');var logger=require(_0xf884('0x1'))(_0xf884('0x2'));var moment=require(_0xf884('0x3'));var BPromise=require(_0xf884('0x4'));var rp=require(_0xf884('0x5'));var fs=require('fs');var path=require(_0xf884('0x6'));var rimraf=require(_0xf884('0x7'));var config=require('../../config/environment');var attributes=require('./chatOfflineMessage.attributes');module[_0xf884('0x8')]=function(_0x20ca9c,_0x3f487d){return _0x20ca9c[_0xf884('0x9')](_0xf884('0xa'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xf884('0xb')});};
\ No newline at end of file
index 61f798a..dfb2cd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5058=['message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','http','then','request\x20sent','debug','stringify','error','code','ChatOfflineMessage,\x20%s,\x20%s'];(function(_0x342700,_0x135c24){var _0x4719db=function(_0x1a7f1a){while(--_0x1a7f1a){_0x342700['push'](_0x342700['shift']());}};_0x4719db(++_0x135c24);}(_0x5058,0xde));var _0x8505=function(_0x13992d,_0x3029ea){_0x13992d=_0x13992d-0x0;var _0x3d15bf=_0x5058[_0x13992d];return _0x3d15bf;};'use strict';var _=require(_0x8505('0x0'));var util=require(_0x8505('0x1'));var moment=require(_0x8505('0x2'));var BPromise=require(_0x8505('0x3'));var rs=require(_0x8505('0x4'));var fs=require('fs');var Redis=require(_0x8505('0x5'));var db=require(_0x8505('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8505('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x8505('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x403bae,_0xde4fd2,_0x218328){return new BPromise(function(_0x2e84ac,_0x300364){return client['request'](_0x403bae,_0x218328)[_0x8505('0x9')](function(_0x25758f){logger['info']('ChatOfflineMessage,\x20%s,\x20%s',_0xde4fd2,_0x8505('0xa'));logger[_0x8505('0xb')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0xde4fd2,'request\x20sent',JSON[_0x8505('0xc')](_0x25758f));if(_0x25758f['error']){if(_0x25758f[_0x8505('0xd')][_0x8505('0xe')]===0x1f4){logger[_0x8505('0xd')](_0x8505('0xf'),_0xde4fd2,_0x25758f['error'][_0x8505('0x10')]);return _0x300364(_0x25758f[_0x8505('0xd')][_0x8505('0x10')]);}logger[_0x8505('0xd')](_0x8505('0xf'),_0xde4fd2,_0x25758f[_0x8505('0xd')][_0x8505('0x10')]);return _0x2e84ac(_0x25758f['error']['message']);}else{logger['info'](_0x8505('0xf'),_0xde4fd2,_0x8505('0xa'));_0x2e84ac(_0x25758f['result'][_0x8505('0x10')]);}})['catch'](function(_0x7221b2){logger[_0x8505('0xd')]('ChatOfflineMessage,\x20%s,\x20%s',_0xde4fd2,_0x7221b2);_0x300364(_0x7221b2);});});}
\ No newline at end of file
+var _0xc688=['result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','request','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info'];(function(_0x23bbbc,_0x2d9009){var _0x19f08=function(_0x575853){while(--_0x575853){_0x23bbbc['push'](_0x23bbbc['shift']());}};_0x19f08(++_0x2d9009);}(_0xc688,0xc0));var _0x8c68=function(_0x4c8c27,_0x3cb17a){_0x4c8c27=_0x4c8c27-0x0;var _0x5df3f8=_0xc688[_0x4c8c27];return _0x5df3f8;};'use strict';var _=require(_0x8c68('0x0'));var util=require(_0x8c68('0x1'));var moment=require('moment');var BPromise=require(_0x8c68('0x2'));var rs=require(_0x8c68('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8c68('0x4'))['db'];var utils=require(_0x8c68('0x5'));var logger=require('../../config/logger')(_0x8c68('0x6'));var config=require('../../config/environment');var jayson=require(_0x8c68('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x529400,_0x17f5a3,_0x5e62be){return new BPromise(function(_0x496f4f,_0x26f8dd){return client[_0x8c68('0x8')](_0x529400,_0x5e62be)['then'](function(_0x33b768){logger['info'](_0x8c68('0x9'),_0x17f5a3,_0x8c68('0xa'));logger[_0x8c68('0xb')](_0x8c68('0xc'),_0x17f5a3,'request\x20sent',JSON[_0x8c68('0xd')](_0x33b768));if(_0x33b768[_0x8c68('0xe')]){if(_0x33b768[_0x8c68('0xe')]['code']===0x1f4){logger[_0x8c68('0xe')](_0x8c68('0x9'),_0x17f5a3,_0x33b768[_0x8c68('0xe')][_0x8c68('0xf')]);return _0x26f8dd(_0x33b768[_0x8c68('0xe')][_0x8c68('0xf')]);}logger[_0x8c68('0xe')](_0x8c68('0x9'),_0x17f5a3,_0x33b768[_0x8c68('0xe')]['message']);return _0x496f4f(_0x33b768[_0x8c68('0xe')]['message']);}else{logger[_0x8c68('0x10')]('ChatOfflineMessage,\x20%s,\x20%s',_0x17f5a3,'request\x20sent');_0x496f4f(_0x33b768[_0x8c68('0x11')]['message']);}})[_0x8c68('0x12')](function(_0x406e70){logger[_0x8c68('0xe')]('ChatOfflineMessage,\x20%s,\x20%s',_0x17f5a3,_0x406e70);_0x26f8dd(_0x406e70);});});}
\ No newline at end of file
index 5172b44..13be17f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa666=['describe','/:id','show','post','create','put','update','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./chatOfflineMessage.controller','get','/describe','isAuthenticated'];(function(_0x1af577,_0x1bd440){var _0x18ec4f=function(_0x4c9f95){while(--_0x4c9f95){_0x1af577['push'](_0x1af577['shift']());}};_0x18ec4f(++_0x1bd440);}(_0xa666,0x137));var _0x6a66=function(_0x22156f,_0x1cd9ee){_0x22156f=_0x22156f-0x0;var _0x44b016=_0xa666[_0x22156f];return _0x44b016;};'use strict';var multer=require(_0x6a66('0x0'));var util=require(_0x6a66('0x1'));var path=require(_0x6a66('0x2'));var timeout=require(_0x6a66('0x3'));var express=require(_0x6a66('0x4'));var router=express[_0x6a66('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6a66('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6a66('0x7'));var controller=require(_0x6a66('0x8'));router[_0x6a66('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6a66('0x9')](_0x6a66('0xa'),auth[_0x6a66('0xb')](),controller[_0x6a66('0xc')]);router['get'](_0x6a66('0xd'),auth[_0x6a66('0xb')](),controller[_0x6a66('0xe')]);router[_0x6a66('0xf')]('/',auth['isAuthenticated'](),controller[_0x6a66('0x10')]);router[_0x6a66('0x11')](_0x6a66('0xd'),auth[_0x6a66('0xb')](),controller[_0x6a66('0x12')]);router['delete'](_0x6a66('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x0f00=['./chatOfflineMessage.controller','isAuthenticated','index','get','describe','show','post','put','/:id','update','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1eb75a,_0x4b3e8f){var _0x2cb427=function(_0x2d4de8){while(--_0x2d4de8){_0x1eb75a['push'](_0x1eb75a['shift']());}};_0x2cb427(++_0x4b3e8f);}(_0x0f00,0x188));var _0x00f0=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0x0f00[_0xac151d];return _0x111dba;};'use strict';var multer=require(_0x00f0('0x0'));var util=require('util');var path=require(_0x00f0('0x1'));var timeout=require('connect-timeout');var express=require(_0x00f0('0x2'));var router=express[_0x00f0('0x3')]();var fs_extra=require(_0x00f0('0x4'));var auth=require(_0x00f0('0x5'));var interaction=require(_0x00f0('0x6'));var config=require(_0x00f0('0x7'));var controller=require(_0x00f0('0x8'));router['get']('/',auth[_0x00f0('0x9')](),controller[_0x00f0('0xa')]);router[_0x00f0('0xb')]('/describe',auth[_0x00f0('0x9')](),controller[_0x00f0('0xc')]);router[_0x00f0('0xb')]('/:id',auth[_0x00f0('0x9')](),controller[_0x00f0('0xd')]);router[_0x00f0('0xe')]('/',auth[_0x00f0('0x9')](),controller['create']);router[_0x00f0('0xf')](_0x00f0('0x10'),auth['isAuthenticated'](),controller[_0x00f0('0x11')]);router[_0x00f0('0x12')]('/:id',auth[_0x00f0('0x9')](),controller[_0x00f0('0x13')]);module['exports']=router;
\ No newline at end of file
index 126b127..5dd4fa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96ae=['ENUM','timeout','mouseOver','INTEGER','sequelize','exports','STRING'];(function(_0x43a4fd,_0x505e78){var _0xe33e21=function(_0x97e173){while(--_0x97e173){_0x43a4fd['push'](_0x43a4fd['shift']());}};_0xe33e21(++_0x505e78);}(_0x96ae,0x162));var _0xe96a=function(_0x2fc5db,_0x2253b1){_0x2fc5db=_0x2fc5db-0x0;var _0x1ef11b=_0x96ae[_0x2fc5db];return _0x1ef11b;};'use strict';var Sequelize=require(_0xe96a('0x0'));module[_0xe96a('0x1')]={'name':{'type':Sequelize[_0xe96a('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xe96a('0x3')]('mouseOver',_0xe96a('0x4')),'defaultValue':_0xe96a('0x5')},'selector':{'type':Sequelize[_0xe96a('0x2')]},'timeout':{'type':Sequelize[_0xe96a('0x6')]}};
\ No newline at end of file
+var _0x50ea=['STRING','ENUM','mouseOver','INTEGER','sequelize','exports'];(function(_0x4b9947,_0x51c17f){var _0xadf3e4=function(_0x40b9bf){while(--_0x40b9bf){_0x4b9947['push'](_0x4b9947['shift']());}};_0xadf3e4(++_0x51c17f);}(_0x50ea,0x1c0));var _0xa50e=function(_0x328459,_0xd450df){_0x328459=_0x328459-0x0;var _0x32350d=_0x50ea[_0x328459];return _0x32350d;};'use strict';var Sequelize=require(_0xa50e('0x0'));module[_0xa50e('0x1')]={'name':{'type':Sequelize[_0xa50e('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xa50e('0x3')](_0xa50e('0x4'),'timeout'),'defaultValue':_0xa50e('0x4')},'selector':{'type':Sequelize[_0xa50e('0x2')]},'timeout':{'type':Sequelize[_0xa50e('0x5')]}};
\ No newline at end of file
index 34eacc7..82a1821 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa991=['fields','length','include','merge','create','body','catch','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','show','params','model','ChatProactiveAction','rawAttributes','query','keys','filters','attributes','intersection'];(function(_0x3b54f6,_0x227ca1){var _0x5238b6=function(_0x570a07){while(--_0x570a07){_0x3b54f6['push'](_0x3b54f6['shift']());}};_0x5238b6(++_0x227ca1);}(_0xa991,0x143));var _0x1a99=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xa991[_0x5f1391];return _0x50ebe3;};'use strict';var emlformat=require(_0x1a99('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1a99('0x1'));var jsonpatch=require(_0x1a99('0x2'));var rp=require(_0x1a99('0x3'));var moment=require(_0x1a99('0x4'));var BPromise=require(_0x1a99('0x5'));var Mustache=require('mustache');var util=require(_0x1a99('0x6'));var path=require(_0x1a99('0x7'));var sox=require(_0x1a99('0x8'));var csv=require(_0x1a99('0x9'));var ejs=require(_0x1a99('0xa'));var fs=require('fs');var fs_extra=require(_0x1a99('0xb'));var _=require(_0x1a99('0xc'));var squel=require('squel');var crypto=require(_0x1a99('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1a99('0xe'));var toCsv=require(_0x1a99('0x9'));var querystring=require(_0x1a99('0xf'));var Papa=require(_0x1a99('0x10'));var Redis=require(_0x1a99('0x11'));var authService=require(_0x1a99('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1a99('0x13'));var hardwareService=require(_0x1a99('0x14'));var logger=require(_0x1a99('0x15'))('api');var utils=require(_0x1a99('0x16'));var config=require(_0x1a99('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x1a99('0x18'))['db'];function respondWithStatusCode(_0x539d17,_0x4839ed){_0x4839ed=_0x4839ed||0xcc;return function(_0x11e4a7){if(_0x11e4a7){return _0x539d17[_0x1a99('0x19')](_0x4839ed);}return _0x539d17[_0x1a99('0x1a')](_0x4839ed)[_0x1a99('0x1b')]();};}function respondWithResult(_0x49d5f7,_0x957f06){_0x957f06=_0x957f06||0xc8;return function(_0x2eb92f){if(_0x2eb92f){return _0x49d5f7[_0x1a99('0x1a')](_0x957f06)[_0x1a99('0x1c')](_0x2eb92f);}};}function respondWithFilteredResult(_0x2ef6f4,_0x4efdb6){return function(_0x257450){if(_0x257450){var _0x4a4e28=typeof _0x4efdb6[_0x1a99('0x1d')]===_0x1a99('0x1e')&&typeof _0x4efdb6[_0x1a99('0x1f')]===_0x1a99('0x1e');var _0x26b4d0=_0x257450[_0x1a99('0x20')];var _0x5c0f09=_0x4a4e28?0x0:_0x4efdb6['offset'];var _0x250781=_0x4a4e28?_0x257450['count']:_0x4efdb6[_0x1a99('0x1d')]+_0x4efdb6[_0x1a99('0x1f')];var _0x4753b4;if(_0x250781>=_0x26b4d0){_0x250781=_0x26b4d0;_0x4753b4=0xc8;}else{_0x4753b4=0xce;}_0x2ef6f4[_0x1a99('0x1a')](_0x4753b4);return _0x2ef6f4[_0x1a99('0x21')](_0x1a99('0x22'),_0x5c0f09+'-'+_0x250781+'/'+_0x26b4d0)[_0x1a99('0x1c')](_0x257450);}return null;};}function patchUpdates(_0x4f6087){return function(_0x41d1d0){try{jsonpatch[_0x1a99('0x23')](_0x41d1d0,_0x4f6087,!![]);}catch(_0x3fccfb){return BPromise[_0x1a99('0x24')](_0x3fccfb);}return _0x41d1d0[_0x1a99('0x25')]();};}function saveUpdates(_0x583f65,_0x31d6e5){return function(_0x9875db){if(_0x9875db){return _0x9875db[_0x1a99('0x26')](_0x583f65)[_0x1a99('0x27')](function(_0x510ec6){return _0x510ec6;});}return null;};}function removeEntity(_0xca6db7,_0x2e6a05){return function(_0x5dfe1f){if(_0x5dfe1f){return _0x5dfe1f[_0x1a99('0x28')]()[_0x1a99('0x27')](function(){_0xca6db7['status'](0xcc)[_0x1a99('0x1b')]();});}};}function handleEntityNotFound(_0x1812be,_0x1c4033){return function(_0x54faf6){if(!_0x54faf6){_0x1812be['sendStatus'](0x194);}return _0x54faf6;};}function handleError(_0x2a5e66,_0x5c5c83){_0x5c5c83=_0x5c5c83||0x1f4;return function(_0x210060){logger[_0x1a99('0x29')](_0x210060[_0x1a99('0x2a')]);if(_0x210060[_0x1a99('0x2b')]){delete _0x210060[_0x1a99('0x2b')];}_0x2a5e66[_0x1a99('0x1a')](_0x5c5c83)[_0x1a99('0x2c')](_0x210060);};}exports[_0x1a99('0x2d')]=function(_0x66b7a4,_0xe92ae1){var _0x5ddaf4={'raw':!![],'where':{'id':_0x66b7a4[_0x1a99('0x2e')]['id']}},_0x5d4545={};_0x5d4545[_0x1a99('0x2f')]=_['keys'](db[_0x1a99('0x30')][_0x1a99('0x31')]);_0x5d4545[_0x1a99('0x32')]=_[_0x1a99('0x33')](_0x66b7a4[_0x1a99('0x32')]);_0x5d4545[_0x1a99('0x34')]=_['intersection'](_0x5d4545['model'],_0x5d4545[_0x1a99('0x32')]);_0x5ddaf4[_0x1a99('0x35')]=_[_0x1a99('0x36')](_0x5d4545[_0x1a99('0x2f')],qs['fields'](_0x66b7a4[_0x1a99('0x32')][_0x1a99('0x37')]));_0x5ddaf4[_0x1a99('0x35')]=_0x5ddaf4[_0x1a99('0x35')][_0x1a99('0x38')]?_0x5ddaf4[_0x1a99('0x35')]:_0x5d4545['model'];if(_0x66b7a4[_0x1a99('0x32')]['includeAll']){_0x5ddaf4[_0x1a99('0x39')]=[{'all':!![]}];}_0x5ddaf4=_[_0x1a99('0x3a')]({},_0x5ddaf4,_0x66b7a4['options']);return db[_0x1a99('0x30')]['find'](_0x5ddaf4)['then'](handleEntityNotFound(_0xe92ae1,null))[_0x1a99('0x27')](respondWithResult(_0xe92ae1,null))['catch'](handleError(_0xe92ae1,null));};exports[_0x1a99('0x3b')]=function(_0x46c4c7,_0x1f66ac){return db[_0x1a99('0x30')][_0x1a99('0x3b')](_0x46c4c7[_0x1a99('0x3c')],{})[_0x1a99('0x27')](respondWithResult(_0x1f66ac,0xc9))[_0x1a99('0x3d')](handleError(_0x1f66ac,null));};exports[_0x1a99('0x26')]=function(_0x52c781,_0x37c141){if(_0x52c781[_0x1a99('0x3c')]['id']){delete _0x52c781[_0x1a99('0x3c')]['id'];}return db[_0x1a99('0x30')][_0x1a99('0x3e')]({'where':{'id':_0x52c781[_0x1a99('0x2e')]['id']}})[_0x1a99('0x27')](handleEntityNotFound(_0x37c141,null))[_0x1a99('0x27')](saveUpdates(_0x52c781['body'],null))[_0x1a99('0x27')](respondWithResult(_0x37c141,null))[_0x1a99('0x3d')](handleError(_0x37c141,null));};exports[_0x1a99('0x28')]=function(_0x5040e8,_0x3508cb){return db[_0x1a99('0x30')][_0x1a99('0x3e')]({'where':{'id':_0x5040e8[_0x1a99('0x2e')]['id']}})['then'](handleEntityNotFound(_0x3508cb,null))[_0x1a99('0x27')](removeEntity(_0x3508cb,null))[_0x1a99('0x3d')](handleError(_0x3508cb,null));};
\ No newline at end of file
+var _0x0d64=['options','ChatProactiveAction','catch','create','body','update','find','params','destroy','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','apply','reject','save','then','error','stack','send','show','keys','query','intersection','model','attributes','fields','length','merge'];(function(_0x4abe48,_0x7485a9){var _0x45b8cf=function(_0xd22ed1){while(--_0xd22ed1){_0x4abe48['push'](_0x4abe48['shift']());}};_0x45b8cf(++_0x7485a9);}(_0x0d64,0x77));var _0x40d6=function(_0x15d409,_0x16c2ee){_0x15d409=_0x15d409-0x0;var _0x379106=_0x0d64[_0x15d409];return _0x379106;};'use strict';var emlformat=require(_0x40d6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x40d6('0x1'));var jsonpatch=require(_0x40d6('0x2'));var rp=require('request-promise');var moment=require(_0x40d6('0x3'));var BPromise=require(_0x40d6('0x4'));var Mustache=require('mustache');var util=require(_0x40d6('0x5'));var path=require(_0x40d6('0x6'));var sox=require(_0x40d6('0x7'));var csv=require(_0x40d6('0x8'));var ejs=require(_0x40d6('0x9'));var fs=require('fs');var fs_extra=require(_0x40d6('0xa'));var _=require(_0x40d6('0xb'));var squel=require(_0x40d6('0xc'));var crypto=require(_0x40d6('0xd'));var jsforce=require(_0x40d6('0xe'));var deskjs=require(_0x40d6('0xf'));var toCsv=require(_0x40d6('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x40d6('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x40d6('0x11'));var as=require(_0x40d6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x40d6('0x13'))('api');var utils=require(_0x40d6('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a4067,_0x233ab5){_0x233ab5=_0x233ab5||0xcc;return function(_0x3dd4af){if(_0x3dd4af){return _0x1a4067[_0x40d6('0x15')](_0x233ab5);}return _0x1a4067['status'](_0x233ab5)[_0x40d6('0x16')]();};}function respondWithResult(_0x42537a,_0x44ae12){_0x44ae12=_0x44ae12||0xc8;return function(_0x18ccf7){if(_0x18ccf7){return _0x42537a['status'](_0x44ae12)[_0x40d6('0x17')](_0x18ccf7);}};}function respondWithFilteredResult(_0x29392b,_0x3eeab2){return function(_0x3db4c3){if(_0x3db4c3){var _0x300a26=typeof _0x3eeab2[_0x40d6('0x18')]===_0x40d6('0x19')&&typeof _0x3eeab2[_0x40d6('0x1a')]===_0x40d6('0x19');var _0x5866e9=_0x3db4c3[_0x40d6('0x1b')];var _0xbe088d=_0x300a26?0x0:_0x3eeab2['offset'];var _0x1118ee=_0x300a26?_0x3db4c3[_0x40d6('0x1b')]:_0x3eeab2[_0x40d6('0x18')]+_0x3eeab2[_0x40d6('0x1a')];var _0x41a0f3;if(_0x1118ee>=_0x5866e9){_0x1118ee=_0x5866e9;_0x41a0f3=0xc8;}else{_0x41a0f3=0xce;}_0x29392b[_0x40d6('0x1c')](_0x41a0f3);return _0x29392b['set'](_0x40d6('0x1d'),_0xbe088d+'-'+_0x1118ee+'/'+_0x5866e9)['json'](_0x3db4c3);}return null;};}function patchUpdates(_0x38ae04){return function(_0x39e53d){try{jsonpatch[_0x40d6('0x1e')](_0x39e53d,_0x38ae04,!![]);}catch(_0x2f8d02){return BPromise[_0x40d6('0x1f')](_0x2f8d02);}return _0x39e53d[_0x40d6('0x20')]();};}function saveUpdates(_0x48312b,_0x1f29b8){return function(_0x3dfbab){if(_0x3dfbab){return _0x3dfbab['update'](_0x48312b)['then'](function(_0x4fa4f2){return _0x4fa4f2;});}return null;};}function removeEntity(_0x45125d,_0x302def){return function(_0x3357ba){if(_0x3357ba){return _0x3357ba['destroy']()[_0x40d6('0x21')](function(){_0x45125d[_0x40d6('0x1c')](0xcc)[_0x40d6('0x16')]();});}};}function handleEntityNotFound(_0x2b7da1,_0x408265){return function(_0x5020eb){if(!_0x5020eb){_0x2b7da1[_0x40d6('0x15')](0x194);}return _0x5020eb;};}function handleError(_0x2ddc43,_0x298abd){_0x298abd=_0x298abd||0x1f4;return function(_0x127d40){logger[_0x40d6('0x22')](_0x127d40[_0x40d6('0x23')]);if(_0x127d40['name']){delete _0x127d40['name'];}_0x2ddc43[_0x40d6('0x1c')](_0x298abd)[_0x40d6('0x24')](_0x127d40);};}exports[_0x40d6('0x25')]=function(_0x33fcdd,_0x21fec7){var _0x8ff273={'raw':!![],'where':{'id':_0x33fcdd['params']['id']}},_0x11566a={};_0x11566a['model']=_[_0x40d6('0x26')](db['ChatProactiveAction']['rawAttributes']);_0x11566a[_0x40d6('0x27')]=_[_0x40d6('0x26')](_0x33fcdd['query']);_0x11566a['filters']=_[_0x40d6('0x28')](_0x11566a[_0x40d6('0x29')],_0x11566a[_0x40d6('0x27')]);_0x8ff273[_0x40d6('0x2a')]=_['intersection'](_0x11566a[_0x40d6('0x29')],qs[_0x40d6('0x2b')](_0x33fcdd[_0x40d6('0x27')][_0x40d6('0x2b')]));_0x8ff273['attributes']=_0x8ff273[_0x40d6('0x2a')][_0x40d6('0x2c')]?_0x8ff273[_0x40d6('0x2a')]:_0x11566a[_0x40d6('0x29')];if(_0x33fcdd[_0x40d6('0x27')]['includeAll']){_0x8ff273['include']=[{'all':!![]}];}_0x8ff273=_[_0x40d6('0x2d')]({},_0x8ff273,_0x33fcdd[_0x40d6('0x2e')]);return db[_0x40d6('0x2f')]['find'](_0x8ff273)[_0x40d6('0x21')](handleEntityNotFound(_0x21fec7,null))[_0x40d6('0x21')](respondWithResult(_0x21fec7,null))[_0x40d6('0x30')](handleError(_0x21fec7,null));};exports[_0x40d6('0x31')]=function(_0x433e70,_0x3966de){return db['ChatProactiveAction'][_0x40d6('0x31')](_0x433e70[_0x40d6('0x32')],{})[_0x40d6('0x21')](respondWithResult(_0x3966de,0xc9))[_0x40d6('0x30')](handleError(_0x3966de,null));};exports[_0x40d6('0x33')]=function(_0x16d0db,_0x534494){if(_0x16d0db[_0x40d6('0x32')]['id']){delete _0x16d0db[_0x40d6('0x32')]['id'];}return db[_0x40d6('0x2f')][_0x40d6('0x34')]({'where':{'id':_0x16d0db[_0x40d6('0x35')]['id']}})[_0x40d6('0x21')](handleEntityNotFound(_0x534494,null))[_0x40d6('0x21')](saveUpdates(_0x16d0db[_0x40d6('0x32')],null))[_0x40d6('0x21')](respondWithResult(_0x534494,null))[_0x40d6('0x30')](handleError(_0x534494,null));};exports[_0x40d6('0x36')]=function(_0x3afa26,_0x20a578){return db[_0x40d6('0x2f')]['find']({'where':{'id':_0x3afa26['params']['id']}})[_0x40d6('0x21')](handleEntityNotFound(_0x20a578,null))[_0x40d6('0x21')](removeEntity(_0x20a578,null))['catch'](handleError(_0x20a578,null));};
\ No newline at end of file
index aca832b..98ebfc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc8d=['api','moment','bluebird','rimraf','../../config/environment','./chatProactiveAction.attributes','define','ChatProactiveAction','chat_proactive_actions','../../config/logger'];(function(_0x18eee6,_0x234b90){var _0x47ee36=function(_0x5552b4){while(--_0x5552b4){_0x18eee6['push'](_0x18eee6['shift']());}};_0x47ee36(++_0x234b90);}(_0xbc8d,0xdb));var _0xdbc8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbc8d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xdbc8('0x0'))(_0xdbc8('0x1'));var moment=require(_0xdbc8('0x2'));var BPromise=require(_0xdbc8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xdbc8('0x4'));var config=require(_0xdbc8('0x5'));var attributes=require(_0xdbc8('0x6'));module['exports']=function(_0x2321c9,_0x4b9fc3){return _0x2321c9[_0xdbc8('0x7')](_0xdbc8('0x8'),attributes,{'tableName':_0xdbc8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4bfc=['../../config/logger','api','moment','bluebird','request-promise','path','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','chat_proactive_actions','lodash','util'];(function(_0x3e182f,_0x380ec7){var _0x23edc9=function(_0x3ca65e){while(--_0x3ca65e){_0x3e182f['push'](_0x3e182f['shift']());}};_0x23edc9(++_0x380ec7);}(_0x4bfc,0x10f));var _0xc4bf=function(_0x182042,_0x318fa8){_0x182042=_0x182042-0x0;var _0x338765=_0x4bfc[_0x182042];return _0x338765;};'use strict';var _=require(_0xc4bf('0x0'));var util=require(_0xc4bf('0x1'));var logger=require(_0xc4bf('0x2'))(_0xc4bf('0x3'));var moment=require(_0xc4bf('0x4'));var BPromise=require(_0xc4bf('0x5'));var rp=require(_0xc4bf('0x6'));var fs=require('fs');var path=require(_0xc4bf('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc4bf('0x8'));module[_0xc4bf('0x9')]=function(_0x2aaa55,_0x1db804){return _0x2aaa55[_0xc4bf('0xa')](_0xc4bf('0xb'),attributes,{'tableName':_0xc4bf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 55ab06a..24fb243 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcff8=['request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','then','info','ChatProactiveAction,\x20%s,\x20%s'];(function(_0x23165a,_0x19d021){var _0x40c6c4=function(_0x57e397){while(--_0x57e397){_0x23165a['push'](_0x23165a['shift']());}};_0x40c6c4(++_0x19d021);}(_0xcff8,0x11a));var _0x8cff=function(_0x46e7f9,_0x1bd875){_0x46e7f9=_0x46e7f9-0x0;var _0x363df5=_0xcff8[_0x46e7f9];return _0x363df5;};'use strict';var _=require('lodash');var util=require(_0x8cff('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8cff('0x1'));var fs=require('fs');var Redis=require(_0x8cff('0x2'));var db=require(_0x8cff('0x3'))['db'];var utils=require(_0x8cff('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x8cff('0x5'));var client=jayson[_0x8cff('0x6')][_0x8cff('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5a5ecc,_0x5a9772,_0x24b4f6){return new BPromise(function(_0x5bbda8,_0x16ea9d){return client[_0x8cff('0x8')](_0x5a5ecc,_0x24b4f6)[_0x8cff('0x9')](function(_0x321007){logger[_0x8cff('0xa')](_0x8cff('0xb'),_0x5a9772,_0x8cff('0xc'));logger[_0x8cff('0xd')](_0x8cff('0xe'),_0x5a9772,_0x8cff('0xc'),JSON[_0x8cff('0xf')](_0x321007));if(_0x321007[_0x8cff('0x10')]){if(_0x321007[_0x8cff('0x10')][_0x8cff('0x11')]===0x1f4){logger[_0x8cff('0x10')](_0x8cff('0xb'),_0x5a9772,_0x321007[_0x8cff('0x10')][_0x8cff('0x12')]);return _0x16ea9d(_0x321007[_0x8cff('0x10')]['message']);}logger[_0x8cff('0x10')](_0x8cff('0xb'),_0x5a9772,_0x321007[_0x8cff('0x10')][_0x8cff('0x12')]);return _0x5bbda8(_0x321007['error'][_0x8cff('0x12')]);}else{logger[_0x8cff('0xa')]('ChatProactiveAction,\x20%s,\x20%s',_0x5a9772,'request\x20sent');_0x5bbda8(_0x321007[_0x8cff('0x13')][_0x8cff('0x12')]);}})[_0x8cff('0x14')](function(_0x2bb409){logger[_0x8cff('0x10')](_0x8cff('0xb'),_0x5a9772,_0x2bb409);_0x16ea9d(_0x2bb409);});});}
\ No newline at end of file
+var _0x5eb9=['message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','request','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','code'];(function(_0xed2305,_0x35bae4){var _0x5ec077=function(_0xa30e87){while(--_0xa30e87){_0xed2305['push'](_0xed2305['shift']());}};_0x5ec077(++_0x35bae4);}(_0x5eb9,0x8e));var _0x95eb=function(_0x5016c9,_0x57cdf0){_0x5016c9=_0x5016c9-0x0;var _0x5371ee=_0x5eb9[_0x5016c9];return _0x5371ee;};'use strict';var _=require(_0x95eb('0x0'));var util=require(_0x95eb('0x1'));var moment=require(_0x95eb('0x2'));var BPromise=require(_0x95eb('0x3'));var rs=require(_0x95eb('0x4'));var fs=require('fs');var Redis=require(_0x95eb('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x95eb('0x6'));var logger=require('../../config/logger')(_0x95eb('0x7'));var config=require(_0x95eb('0x8'));var jayson=require(_0x95eb('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2afb32,_0x49f2ad,_0x92009c){return new BPromise(function(_0x408715,_0x249d80){return client[_0x95eb('0xa')](_0x2afb32,_0x92009c)['then'](function(_0x2eb7cf){logger[_0x95eb('0xb')](_0x95eb('0xc'),_0x49f2ad,_0x95eb('0xd'));logger[_0x95eb('0xe')](_0x95eb('0xf'),_0x49f2ad,_0x95eb('0xd'),JSON['stringify'](_0x2eb7cf));if(_0x2eb7cf[_0x95eb('0x10')]){if(_0x2eb7cf[_0x95eb('0x10')][_0x95eb('0x11')]===0x1f4){logger['error'](_0x95eb('0xc'),_0x49f2ad,_0x2eb7cf[_0x95eb('0x10')]['message']);return _0x249d80(_0x2eb7cf[_0x95eb('0x10')][_0x95eb('0x12')]);}logger[_0x95eb('0x10')](_0x95eb('0xc'),_0x49f2ad,_0x2eb7cf[_0x95eb('0x10')]['message']);return _0x408715(_0x2eb7cf[_0x95eb('0x10')][_0x95eb('0x12')]);}else{logger['info'](_0x95eb('0xc'),_0x49f2ad,_0x95eb('0xd'));_0x408715(_0x2eb7cf[_0x95eb('0x13')][_0x95eb('0x12')]);}})['catch'](function(_0x30bd5c){logger[_0x95eb('0x10')](_0x95eb('0xc'),_0x49f2ad,_0x30bd5c);_0x249d80(_0x30bd5c);});});}
\ No newline at end of file
index 2fe528a..b285dba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ed=['multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./chatProactiveAction.controller','get','/:id','isAuthenticated','show','post','create','put','delete','destroy','exports'];(function(_0x3dc538,_0x4f7702){var _0x72c2fd=function(_0x5a7260){while(--_0x5a7260){_0x3dc538['push'](_0x3dc538['shift']());}};_0x72c2fd(++_0x4f7702);}(_0x46ed,0x168));var _0xd46e=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x46ed[_0x29d94e];return _0x106237;};'use strict';var multer=require(_0xd46e('0x0'));var util=require(_0xd46e('0x1'));var path=require('path');var timeout=require(_0xd46e('0x2'));var express=require(_0xd46e('0x3'));var router=express[_0xd46e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd46e('0x5'));var interaction=require(_0xd46e('0x6'));var config=require('../../config/environment');var controller=require(_0xd46e('0x7'));router[_0xd46e('0x8')](_0xd46e('0x9'),auth[_0xd46e('0xa')](),controller[_0xd46e('0xb')]);router[_0xd46e('0xc')]('/',auth[_0xd46e('0xa')](),controller[_0xd46e('0xd')]);router[_0xd46e('0xe')](_0xd46e('0x9'),auth[_0xd46e('0xa')](),controller['update']);router[_0xd46e('0xf')](_0xd46e('0x9'),auth['isAuthenticated'](),controller[_0xd46e('0x10')]);module[_0xd46e('0x11')]=router;
\ No newline at end of file
+var _0x425d=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatProactiveAction.controller','get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x425d,0x1e0));var _0xd425=function(_0x1c31fc,_0x39514d){_0x1c31fc=_0x1c31fc-0x0;var _0x400ade=_0x425d[_0x1c31fc];return _0x400ade;};'use strict';var multer=require(_0xd425('0x0'));var util=require('util');var path=require(_0xd425('0x1'));var timeout=require(_0xd425('0x2'));var express=require(_0xd425('0x3'));var router=express[_0xd425('0x4')]();var fs_extra=require(_0xd425('0x5'));var auth=require(_0xd425('0x6'));var interaction=require(_0xd425('0x7'));var config=require('../../config/environment');var controller=require(_0xd425('0x8'));router[_0xd425('0x9')](_0xd425('0xa'),auth[_0xd425('0xb')](),controller[_0xd425('0xc')]);router[_0xd425('0xd')]('/',auth['isAuthenticated'](),controller[_0xd425('0xe')]);router[_0xd425('0xf')](_0xd425('0xa'),auth[_0xd425('0xb')](),controller[_0xd425('0x10')]);router[_0xd425('0x11')](_0xd425('0xa'),auth[_0xd425('0xb')](),controller[_0xd425('0x12')]);module[_0xd425('0x13')]=router;
\ No newline at end of file
index c3cb36c..417c307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6343=['sequelize','name','STRING','INTEGER','rrmemory','beepall','roundrobin'];(function(_0x13da5a,_0x106c1c){var _0x1b1128=function(_0x2c2ecd){while(--_0x2c2ecd){_0x13da5a['push'](_0x13da5a['shift']());}};_0x1b1128(++_0x106c1c);}(_0x6343,0x196));var _0x3634=function(_0x1889cc,_0xf4a1e1){_0x1889cc=_0x1889cc-0x0;var _0x37aca1=_0x6343[_0x1889cc];return _0x37aca1;};'use strict';var Sequelize=require(_0x3634('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x3634('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x3634('0x2')]},'timeout':{'type':Sequelize[_0x3634('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x3634('0x4'),_0x3634('0x5'),_0x3634('0x6'))}};
\ No newline at end of file
+var _0x8732=['INTEGER','ENUM','beepall','roundrobin','sequelize','exports','name','STRING'];(function(_0x462f94,_0x282cc7){var _0x459dbe=function(_0x4fade1){while(--_0x4fade1){_0x462f94['push'](_0x462f94['shift']());}};_0x459dbe(++_0x282cc7);}(_0x8732,0x6c));var _0x2873=function(_0x3c5ca4,_0x1f6dd4){_0x3c5ca4=_0x3c5ca4-0x0;var _0x151a6b=_0x8732[_0x3c5ca4];return _0x151a6b;};'use strict';var Sequelize=require(_0x2873('0x0'));module[_0x2873('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x2873('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x2873('0x3')]},'timeout':{'type':Sequelize[_0x2873('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x2873('0x5')]('rrmemory',_0x2873('0x6'),_0x2873('0x7'))}};
\ No newline at end of file
index e6d0cbb..1fb3de7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ffd=['sendStatus','stack','name','send','map','ChatQueue','type','key','model','query','keys','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','rawAttributes','intersection','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','params','getMembers','findOne','order','pick','ChatQueueId','findAndCountAll','agent','chatPause','updatedAt','format','%s/%s','SIP','createdAt','getTeams','Team','addTeams','ids','User','Agents','interface','flatMap','transaction','UserChatQueue','forEach','emit','removeTeams','select','field','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','TeamId','includes','all','union','value','isEmpty','removeAgents','userChatQueue:remove','addAgents','spread','getAgents','eml-format','rimraf','request-promise','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./chatQueue.socket','register','request','then','info','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','catch','status','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','destroy','get','ChatQueues','UserProfileResource','end'];(function(_0x2b4b4c,_0x53a5ed){var _0x5f55df=function(_0x4bb440){while(--_0x4bb440){_0x2b4b4c['push'](_0x2b4b4c['shift']());}};_0x5f55df(++_0x53a5ed);}(_0x7ffd,0xe8));var _0xd7ff=function(_0x26b622,_0x237e9e){_0x26b622=_0x26b622-0x0;var _0x58a028=_0x7ffd[_0x26b622];return _0x58a028;};'use strict';var emlformat=require(_0xd7ff('0x0'));var rimraf=require(_0xd7ff('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd7ff('0x2'));var moment=require('moment');var BPromise=require(_0xd7ff('0x3'));var Mustache=require(_0xd7ff('0x4'));var util=require('util');var path=require(_0xd7ff('0x5'));var sox=require(_0xd7ff('0x6'));var csv=require(_0xd7ff('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd7ff('0x8'));var squel=require(_0xd7ff('0x9'));var crypto=require(_0xd7ff('0xa'));var jsforce=require(_0xd7ff('0xb'));var deskjs=require(_0xd7ff('0xc'));var toCsv=require(_0xd7ff('0x7'));var querystring=require(_0xd7ff('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd7ff('0xe'));var qs=require(_0xd7ff('0xf'));var as=require(_0xd7ff('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd7ff('0x11'));var utils=require(_0xd7ff('0x12'));var config=require(_0xd7ff('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xd7ff('0x14'))['db'];config[_0xd7ff('0x15')]=_[_0xd7ff('0x16')](config[_0xd7ff('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0xd7ff('0x17'))(new Redis(config[_0xd7ff('0x15')]));require(_0xd7ff('0x18'))[_0xd7ff('0x19')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3dfb06,_0x56afff,_0x4ef968,_0x506d24){return new BPromise(function(_0x27f582,_0x52a16a){var _0x4df2cb=_0x506d24||client;return _0x4df2cb[_0xd7ff('0x1a')](_0x3dfb06,_0x4ef968)[_0xd7ff('0x1b')](function(_0x2a2722){logger[_0xd7ff('0x1c')]('ChatQueue,\x20%s,\x20%s',_0x56afff,'request\x20sent');logger[_0xd7ff('0x1d')](_0xd7ff('0x1e'),_0x56afff,_0xd7ff('0x1f'),JSON[_0xd7ff('0x20')](_0x2a2722));if(_0x2a2722[_0xd7ff('0x21')]){if(_0x2a2722[_0xd7ff('0x21')][_0xd7ff('0x22')]===0x1f4){logger[_0xd7ff('0x21')](_0xd7ff('0x23'),_0x56afff,_0x2a2722[_0xd7ff('0x21')][_0xd7ff('0x24')]);return _0x52a16a(_0x2a2722[_0xd7ff('0x21')][_0xd7ff('0x24')]);}logger[_0xd7ff('0x21')](_0xd7ff('0x23'),_0x56afff,_0x2a2722[_0xd7ff('0x21')]['message']);return _0x27f582(_0x2a2722[_0xd7ff('0x21')][_0xd7ff('0x24')]);}else{logger[_0xd7ff('0x1c')](_0xd7ff('0x23'),_0x56afff,_0xd7ff('0x1f'));_0x27f582(_0x2a2722['result'][_0xd7ff('0x24')]);}})[_0xd7ff('0x25')](function(_0x1ecdc9){logger[_0xd7ff('0x21')](_0xd7ff('0x23'),_0x56afff,_0x1ecdc9);_0x52a16a(_0x1ecdc9);});});}function respondWithStatusCode(_0x3f687f,_0x19d1fa){_0x19d1fa=_0x19d1fa||0xcc;return function(_0x2aac13){if(_0x2aac13){return _0x3f687f['sendStatus'](_0x19d1fa);}return _0x3f687f[_0xd7ff('0x26')](_0x19d1fa)['end']();};}function respondWithResult(_0x31c4d6,_0x21bbe6){_0x21bbe6=_0x21bbe6||0xc8;return function(_0x3dffde){if(_0x3dffde){return _0x31c4d6[_0xd7ff('0x26')](_0x21bbe6)[_0xd7ff('0x27')](_0x3dffde);}};}function respondWithFilteredResult(_0x24684d,_0x2a905b){return function(_0x5396f8){if(_0x5396f8){var _0x1e4bfe=typeof _0x2a905b['offset']===_0xd7ff('0x28')&&typeof _0x2a905b['limit']==='undefined';var _0x446058=_0x5396f8[_0xd7ff('0x29')];var _0x589d99=_0x1e4bfe?0x0:_0x2a905b['offset'];var _0x240da2=_0x1e4bfe?_0x5396f8[_0xd7ff('0x29')]:_0x2a905b[_0xd7ff('0x2a')]+_0x2a905b[_0xd7ff('0x2b')];var _0x44f9ee;if(_0x240da2>=_0x446058){_0x240da2=_0x446058;_0x44f9ee=0xc8;}else{_0x44f9ee=0xce;}_0x24684d[_0xd7ff('0x26')](_0x44f9ee);return _0x24684d[_0xd7ff('0x2c')](_0xd7ff('0x2d'),_0x589d99+'-'+_0x240da2+'/'+_0x446058)[_0xd7ff('0x27')](_0x5396f8);}return null;};}function patchUpdates(_0x151134){return function(_0x14e4a0){try{jsonpatch[_0xd7ff('0x2e')](_0x14e4a0,_0x151134,!![]);}catch(_0x2be27a){return BPromise['reject'](_0x2be27a);}return _0x14e4a0[_0xd7ff('0x2f')]();};}function saveUpdates(_0x570b5a,_0x4f1cb9){return function(_0x4c6f1d){if(_0x4c6f1d){return _0x4c6f1d[_0xd7ff('0x30')](_0x570b5a)['then'](function(_0x2a297e){return _0x2a297e;});}return null;};}function removeEntity(_0x3f1388,_0x15e88f){return function(_0x42fae8){if(_0x42fae8){return _0x42fae8[_0xd7ff('0x31')]()[_0xd7ff('0x1b')](function(){var _0x5b130f=_0x42fae8[_0xd7ff('0x32')]({'plain':!![]});var _0x10985d=_0xd7ff('0x33');return db[_0xd7ff('0x34')][_0xd7ff('0x31')]({'where':{'type':_0x10985d,'resourceId':_0x5b130f['id']}})[_0xd7ff('0x1b')](function(){return _0x42fae8;});})[_0xd7ff('0x1b')](function(){_0x3f1388['status'](0xcc)[_0xd7ff('0x35')]();});}};}function handleEntityNotFound(_0x81d78b,_0x445800){return function(_0x562fe7){if(!_0x562fe7){_0x81d78b[_0xd7ff('0x36')](0x194);}return _0x562fe7;};}function handleError(_0x3f8924,_0x51666c){_0x51666c=_0x51666c||0x1f4;return function(_0x1ff967){logger[_0xd7ff('0x21')](_0x1ff967[_0xd7ff('0x37')]);if(_0x1ff967[_0xd7ff('0x38')]){delete _0x1ff967[_0xd7ff('0x38')];}_0x3f8924[_0xd7ff('0x26')](_0x51666c)[_0xd7ff('0x39')](_0x1ff967);};}exports['index']=function(_0x50b1ab,_0x4556f0){var _0x1ea38a={},_0x57e8ca={},_0x44075e={'count':0x0,'rows':[]};var _0xdabe9b=_[_0xd7ff('0x3a')](db[_0xd7ff('0x3b')]['rawAttributes'],function(_0x5c85be){return{'name':_0x5c85be['fieldName'],'type':_0x5c85be[_0xd7ff('0x3c')][_0xd7ff('0x3d')]};});_0x57e8ca[_0xd7ff('0x3e')]=_[_0xd7ff('0x3a')](_0xdabe9b,'name');_0x57e8ca[_0xd7ff('0x3f')]=_[_0xd7ff('0x40')](_0x50b1ab[_0xd7ff('0x3f')]);_0x57e8ca['filters']=_['intersection'](_0x57e8ca[_0xd7ff('0x3e')],_0x57e8ca[_0xd7ff('0x3f')]);_0x1ea38a['attributes']=_['intersection'](_0x57e8ca[_0xd7ff('0x3e')],qs[_0xd7ff('0x41')](_0x50b1ab[_0xd7ff('0x3f')][_0xd7ff('0x41')]));_0x1ea38a[_0xd7ff('0x42')]=_0x1ea38a[_0xd7ff('0x42')][_0xd7ff('0x43')]?_0x1ea38a['attributes']:_0x57e8ca[_0xd7ff('0x3e')];if(!_0x50b1ab['query'][_0xd7ff('0x44')](_0xd7ff('0x45'))){_0x1ea38a[_0xd7ff('0x2b')]=qs['limit'](_0x50b1ab['query']['limit']);_0x1ea38a['offset']=qs[_0xd7ff('0x2a')](_0x50b1ab[_0xd7ff('0x3f')][_0xd7ff('0x2a')]);}_0x1ea38a['order']=qs[_0xd7ff('0x46')](_0x50b1ab[_0xd7ff('0x3f')][_0xd7ff('0x46')]);_0x1ea38a[_0xd7ff('0x47')]=qs[_0xd7ff('0x48')](_['pick'](_0x50b1ab[_0xd7ff('0x3f')],_0x57e8ca[_0xd7ff('0x48')]),_0xdabe9b);if(_0x50b1ab[_0xd7ff('0x3f')]['filter']){_0x1ea38a['where']=_[_0xd7ff('0x49')](_0x1ea38a[_0xd7ff('0x47')],{'$or':_[_0xd7ff('0x3a')](_0xdabe9b,function(_0x1af7ef){if(_0x1af7ef[_0xd7ff('0x3c')]!==_0xd7ff('0x4a')){var _0xec9d7d={};_0xec9d7d[_0x1af7ef[_0xd7ff('0x38')]]={'$like':'%'+_0x50b1ab['query'][_0xd7ff('0x4b')]+'%'};return _0xec9d7d;}})});}_0x1ea38a=_['merge']({},_0x1ea38a,_0x50b1ab[_0xd7ff('0x4c')]);var _0xf4e735={'where':_0x1ea38a[_0xd7ff('0x47')]};return db['ChatQueue'][_0xd7ff('0x29')](_0xf4e735)[_0xd7ff('0x1b')](function(_0x13894a){_0x44075e[_0xd7ff('0x29')]=_0x13894a;if(_0x50b1ab[_0xd7ff('0x3f')][_0xd7ff('0x4d')]){_0x1ea38a[_0xd7ff('0x4e')]=[{'all':!![]}];}return db['ChatQueue'][_0xd7ff('0x4f')](_0x1ea38a);})[_0xd7ff('0x1b')](function(_0x2f48cf){_0x44075e['rows']=_0x2f48cf;return _0x44075e;})[_0xd7ff('0x1b')](respondWithFilteredResult(_0x4556f0,_0x1ea38a))[_0xd7ff('0x25')](handleError(_0x4556f0,null));};exports[_0xd7ff('0x50')]=function(_0x555780,_0x13c9c8){var _0x1088af={'raw':!![],'where':{'id':_0x555780['params']['id']}},_0x3125e4={};_0x3125e4['model']=_['keys'](db[_0xd7ff('0x3b')][_0xd7ff('0x51')]);_0x3125e4['query']=_['keys'](_0x555780[_0xd7ff('0x3f')]);_0x3125e4['filters']=_[_0xd7ff('0x52')](_0x3125e4[_0xd7ff('0x3e')],_0x3125e4[_0xd7ff('0x3f')]);_0x1088af[_0xd7ff('0x42')]=_[_0xd7ff('0x52')](_0x3125e4['model'],qs[_0xd7ff('0x41')](_0x555780[_0xd7ff('0x3f')]['fields']));_0x1088af[_0xd7ff('0x42')]=_0x1088af[_0xd7ff('0x42')][_0xd7ff('0x43')]?_0x1088af[_0xd7ff('0x42')]:_0x3125e4[_0xd7ff('0x3e')];if(_0x555780[_0xd7ff('0x3f')]['includeAll']){_0x1088af[_0xd7ff('0x4e')]=[{'all':!![]}];}_0x1088af=_[_0xd7ff('0x49')]({},_0x1088af,_0x555780[_0xd7ff('0x4c')]);return db[_0xd7ff('0x3b')][_0xd7ff('0x53')](_0x1088af)['then'](handleEntityNotFound(_0x13c9c8,null))[_0xd7ff('0x1b')](respondWithResult(_0x13c9c8,null))[_0xd7ff('0x25')](handleError(_0x13c9c8,null));};exports[_0xd7ff('0x54')]=function(_0x533311,_0x2ea663){return db[_0xd7ff('0x3b')]['create'](_0x533311[_0xd7ff('0x55')],{})['then'](function(_0x3217ce){var _0x1ec390=_0x533311[_0xd7ff('0x56')][_0xd7ff('0x32')]({'plain':!![]});if(!_0x1ec390)throw new Error(_0xd7ff('0x57'));if(_0x1ec390['role']===_0xd7ff('0x56')){var _0x5ca663=_0x3217ce[_0xd7ff('0x32')]({'plain':!![]});var _0x4169d2=_0xd7ff('0x33');return db[_0xd7ff('0x58')][_0xd7ff('0x53')]({'where':{'name':_0x4169d2,'userProfileId':_0x1ec390[_0xd7ff('0x59')]},'raw':!![]})[_0xd7ff('0x1b')](function(_0x102da4){if(_0x102da4&&_0x102da4[_0xd7ff('0x5a')]===0x0){return db['UserProfileResource'][_0xd7ff('0x54')]({'name':_0x5ca663[_0xd7ff('0x38')],'resourceId':_0x5ca663['id'],'type':_0x102da4['name'],'sectionId':_0x102da4['id']},{})[_0xd7ff('0x1b')](function(){return _0x3217ce;});}else{return _0x3217ce;}})['catch'](function(_0x4615f7){logger[_0xd7ff('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4615f7);throw _0x4615f7;});}return _0x3217ce;})[_0xd7ff('0x1b')](respondWithResult(_0x2ea663,0xc9))[_0xd7ff('0x25')](handleError(_0x2ea663,null));};exports[_0xd7ff('0x30')]=function(_0x56c6c3,_0x5e3cbc){if(_0x56c6c3[_0xd7ff('0x55')]['id']){delete _0x56c6c3['body']['id'];}return db[_0xd7ff('0x3b')][_0xd7ff('0x53')]({'where':{'id':_0x56c6c3[_0xd7ff('0x5b')]['id']}})[_0xd7ff('0x1b')](handleEntityNotFound(_0x5e3cbc,null))[_0xd7ff('0x1b')](saveUpdates(_0x56c6c3[_0xd7ff('0x55')],null))['then'](respondWithResult(_0x5e3cbc,null))[_0xd7ff('0x25')](handleError(_0x5e3cbc,null));};exports[_0xd7ff('0x31')]=function(_0xc8bff1,_0x5acdd1){return db['ChatQueue'][_0xd7ff('0x53')]({'where':{'id':_0xc8bff1[_0xd7ff('0x5b')]['id']}})[_0xd7ff('0x1b')](handleEntityNotFound(_0x5acdd1,null))[_0xd7ff('0x1b')](removeEntity(_0x5acdd1,null))[_0xd7ff('0x25')](handleError(_0x5acdd1,null));};exports['describe']=function(_0x758040,_0x56ec11){return db[_0xd7ff('0x3b')]['describe']()[_0xd7ff('0x1b')](respondWithResult(_0x56ec11,null))[_0xd7ff('0x25')](handleError(_0x56ec11,null));};exports[_0xd7ff('0x5c')]=function(_0x5847e8,_0x5eefe2,_0x69734f){var _0x5c05e7={'raw':!![],'where':{}},_0x52c570={},_0x539dfc;return db[_0xd7ff('0x3b')][_0xd7ff('0x5d')]({'where':{'id':_0x5847e8[_0xd7ff('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5eefe2,null))['then'](function(_0x24ffbe){if(_0x24ffbe){_0x539dfc=_0x24ffbe['get']({'plain':!![]});_0x52c570[_0xd7ff('0x3e')]=_['keys'](db['UserChatQueue'][_0xd7ff('0x51')]);_0x52c570[_0xd7ff('0x3f')]=_[_0xd7ff('0x40')](_0x5847e8['query']);_0x52c570['filters']=_['intersection'](_0x52c570[_0xd7ff('0x3e')],_0x52c570[_0xd7ff('0x3f')]);_0x5c05e7[_0xd7ff('0x42')]=_[_0xd7ff('0x52')](_0x52c570[_0xd7ff('0x3e')],qs[_0xd7ff('0x41')](_0x5847e8[_0xd7ff('0x3f')][_0xd7ff('0x41')]));_0x5c05e7[_0xd7ff('0x42')]=_0x5c05e7[_0xd7ff('0x42')][_0xd7ff('0x43')]?_0x5c05e7[_0xd7ff('0x42')]:_0x52c570['model'];if(!_0x5847e8[_0xd7ff('0x3f')][_0xd7ff('0x44')]('nolimit')){_0x5c05e7[_0xd7ff('0x2b')]=qs[_0xd7ff('0x2b')](_0x5847e8['query'][_0xd7ff('0x2b')]);_0x5c05e7['offset']=qs[_0xd7ff('0x2a')](_0x5847e8[_0xd7ff('0x3f')][_0xd7ff('0x2a')]);}_0x5c05e7[_0xd7ff('0x5e')]=qs['sort'](_0x5847e8[_0xd7ff('0x3f')][_0xd7ff('0x46')]);_0x5c05e7[_0xd7ff('0x47')]=qs[_0xd7ff('0x48')](_[_0xd7ff('0x5f')](_0x5847e8[_0xd7ff('0x3f')],_0x52c570['filters']));_0x5c05e7[_0xd7ff('0x47')][_0xd7ff('0x60')]=_0x24ffbe['id'];if(_0x5847e8['query'][_0xd7ff('0x4b')]){_0x5c05e7['where']=_['merge'](_0x5c05e7[_0xd7ff('0x47')],{'$or':_['map'](_0x5c05e7[_0xd7ff('0x42')],function(_0x2ef45e){var _0x1b7019={};_0x1b7019[_0x2ef45e]={'$like':'%'+_0x5847e8[_0xd7ff('0x3f')][_0xd7ff('0x4b')]+'%'};return _0x1b7019;})});}_0x5c05e7=_[_0xd7ff('0x49')]({},_0x5c05e7,_0x5847e8[_0xd7ff('0x4c')]);return db['UserChatQueue']['findAll'](_0x5c05e7);}})[_0xd7ff('0x1b')](function(_0x1f7f7f){if(_0x1f7f7f){return db['User'][_0xd7ff('0x61')]({'where':{'id':_[_0xd7ff('0x3a')](_0x1f7f7f,'UserId'),'role':_0xd7ff('0x62')},'attributes':['id','name',_0xd7ff('0x63'),_0xd7ff('0x64'),'createdAt']});}})[_0xd7ff('0x1b')](function(_0x35f48a){if(_0x35f48a){return{'count':_0x35f48a['count'],'rows':_['map'](_0x35f48a['rows'],function(_0x1198c9){return{'membername':_0x1198c9[_0xd7ff('0x38')],'UserId':_0x1198c9['id'],'queue_name':_0x539dfc[_0xd7ff('0x38')],'ChatQueueId':_0x539dfc['id'],'interface':util[_0xd7ff('0x65')](_0xd7ff('0x66'),_0xd7ff('0x67'),_0x1198c9[_0xd7ff('0x38')]),'penalty':0x0,'paused':_0x1198c9[_0xd7ff('0x63')],'createdAt':_0x1198c9[_0xd7ff('0x68')],'updatedAt':_0x1198c9[_0xd7ff('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xd7ff('0x1b')](respondWithFilteredResult(_0x5eefe2,_0x5c05e7))[_0xd7ff('0x25')](handleError(_0x5eefe2,null));};exports[_0xd7ff('0x69')]=function(_0x1df1e7,_0x4a139b,_0x26256b){var _0xe68c92={};var _0x25728a={};var _0x1ea99d;var _0x13f901;return db['ChatQueue'][_0xd7ff('0x5d')]({'where':{'id':_0x1df1e7[_0xd7ff('0x5b')]['id']}})[_0xd7ff('0x1b')](handleEntityNotFound(_0x4a139b,null))[_0xd7ff('0x1b')](function(_0x53c347){if(_0x53c347){_0x1ea99d=_0x53c347;_0x25728a['model']=_[_0xd7ff('0x40')](db[_0xd7ff('0x6a')][_0xd7ff('0x51')]);_0x25728a[_0xd7ff('0x3f')]=_[_0xd7ff('0x40')](_0x1df1e7[_0xd7ff('0x3f')]);_0x25728a[_0xd7ff('0x48')]=_['intersection'](_0x25728a[_0xd7ff('0x3e')],_0x25728a[_0xd7ff('0x3f')]);_0xe68c92['attributes']=_[_0xd7ff('0x52')](_0x25728a[_0xd7ff('0x3e')],qs[_0xd7ff('0x41')](_0x1df1e7[_0xd7ff('0x3f')][_0xd7ff('0x41')]));_0xe68c92['attributes']=_0xe68c92[_0xd7ff('0x42')]['length']?_0xe68c92['attributes']:_0x25728a[_0xd7ff('0x3e')];_0xe68c92[_0xd7ff('0x5e')]=qs[_0xd7ff('0x46')](_0x1df1e7[_0xd7ff('0x3f')][_0xd7ff('0x46')]);_0xe68c92['where']=qs[_0xd7ff('0x48')](_[_0xd7ff('0x5f')](_0x1df1e7[_0xd7ff('0x3f')],_0x25728a[_0xd7ff('0x48')]));if(_0x1df1e7['query'][_0xd7ff('0x4b')]){_0xe68c92[_0xd7ff('0x47')]=_[_0xd7ff('0x49')](_0xe68c92['where'],{'$or':_['map'](_0xe68c92[_0xd7ff('0x42')],function(_0x4c7a1f){var _0x1c9837={};_0x1c9837[_0x4c7a1f]={'$like':'%'+_0x1df1e7[_0xd7ff('0x3f')][_0xd7ff('0x4b')]+'%'};return _0x1c9837;})});}_0xe68c92=_[_0xd7ff('0x49')]({},_0xe68c92,_0x1df1e7['options']);return _0x1ea99d[_0xd7ff('0x69')](_0xe68c92);}})[_0xd7ff('0x1b')](function(_0x5aec50){if(_0x5aec50){_0x13f901=_0x5aec50[_0xd7ff('0x43')];if(!_0x1df1e7['query'][_0xd7ff('0x44')](_0xd7ff('0x45'))){_0xe68c92[_0xd7ff('0x2b')]=qs[_0xd7ff('0x2b')](_0x1df1e7[_0xd7ff('0x3f')][_0xd7ff('0x2b')]);_0xe68c92[_0xd7ff('0x2a')]=qs[_0xd7ff('0x2a')](_0x1df1e7[_0xd7ff('0x3f')][_0xd7ff('0x2a')]);}return _0x1ea99d[_0xd7ff('0x69')](_0xe68c92);}})[_0xd7ff('0x1b')](function(_0x585dd5){if(_0x585dd5){return _0x585dd5?{'count':_0x13f901,'rows':_0x585dd5}:null;}})[_0xd7ff('0x1b')](respondWithResult(_0x4a139b,null))[_0xd7ff('0x25')](handleError(_0x4a139b,null));};exports[_0xd7ff('0x6b')]=function(_0x1d0b56,_0x4c3ca2,_0x124fdb){var _0x1b8f32=_0x1d0b56[_0xd7ff('0x55')][_0xd7ff('0x6c')];return db[_0xd7ff('0x6a')][_0xd7ff('0x4f')]({'where':{'id':_0x1b8f32},'attributes':['id'],'include':[{'model':db[_0xd7ff('0x6d')],'as':_0xd7ff('0x6e'),'attributes':['id','name','online','voicePause',_0xd7ff('0x6f')],'raw':!![]}]})[_0xd7ff('0x1b')](function(_0x1a040c){if(_0x1a040c){var _0x889c55=_[_0xd7ff('0x70')](_0x1a040c,function(_0x143a2b){var _0x4d6e21=_0x143a2b[_0xd7ff('0x32')]({'plain':!![]});return _0x4d6e21['Agents'];});return db[_0xd7ff('0x3b')]['find']({'where':{'id':_0x1d0b56[_0xd7ff('0x5b')]['id']}})['then'](function(_0x13c686){return db['sequelize'][_0xd7ff('0x71')](function(_0x21a32a){return _0x13c686[_0xd7ff('0x6b')](_0x1b8f32,{'transaction':_0x21a32a})[_0xd7ff('0x1b')](function(){return BPromise['each'](_0x889c55,function(_0x52f020){return db[_0xd7ff('0x72')]['findOrCreate']({'where':{'UserId':_0x52f020['id'],'ChatQueueId':_0x1d0b56['params']['id']},'transaction':_0x21a32a});});})[_0xd7ff('0x1b')](function(){_0x889c55[_0xd7ff('0x73')](function(_0x4410e5){socket[_0xd7ff('0x74')]('userChatQueue:save',{'UserId':_0x4410e5['id'],'ChatQueueId':_0x13c686['id']});});});});});}})['then'](respondWithStatusCode(_0x4c3ca2,null))[_0xd7ff('0x25')](handleError(_0x4c3ca2,null));};exports[_0xd7ff('0x75')]=function(_0x29055c,_0x2f49bc,_0x43cede){return db[_0xd7ff('0x6a')][_0xd7ff('0x4f')]({'where':{'id':_0x29055c['query'][_0xd7ff('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xd7ff('0x6d')],'as':_0xd7ff('0x6e'),'attributes':['id'],'raw':!![]}]})[_0xd7ff('0x1b')](handleEntityNotFound(_0x2f49bc,null))[_0xd7ff('0x1b')](function(_0x48fbd8){var _0x320fd3=_[_0xd7ff('0x3a')](_0x48fbd8,'id');var _0x462175=[];var _0x262445=[];var _0x54baeb=squel[_0xd7ff('0x76')]();_0x54baeb[_0xd7ff('0x77')]('tq.TeamId')[_0xd7ff('0x78')](_0xd7ff('0x79'),'tq')[_0xd7ff('0x7a')](_0xd7ff('0x7b'),'ut',_0xd7ff('0x7c'))['where'](_0xd7ff('0x7d'),_0x29055c[_0xd7ff('0x5b')]['id']);for(var _0x40c6f8=0x0;_0x40c6f8<_0x48fbd8[_0xd7ff('0x43')];_0x40c6f8+=0x1){let _0x333bb2=_0x48fbd8[_0x40c6f8];for(var _0x4a6199=0x0;_0x4a6199<_0x333bb2['Agents'][_0xd7ff('0x43')];_0x4a6199+=0x1){let _0x331914=_0x333bb2['Agents'][_0x4a6199];var _0x20643c=_0x54baeb['clone']();_0x20643c['where'](_0xd7ff('0x7e'),_0x331914['id']);_0x262445[_0xd7ff('0x7f')](db[_0xd7ff('0x80')][_0xd7ff('0x3f')](_0x20643c[_0xd7ff('0x81')](),{'type':db[_0xd7ff('0x80')][_0xd7ff('0x82')][_0xd7ff('0x83')]})[_0xd7ff('0x1b')](function(_0x817b38){if(_0x817b38['length']===0x1){return _0x331914['id'];}else{var _0x38c7db=_['every'](_[_0xd7ff('0x3a')](_0x817b38,_0xd7ff('0x84')),function(_0x8007b0){return _[_0xd7ff('0x85')](_0x320fd3,_0x8007b0);});if(_0x38c7db){return _0x331914['id'];}}}));}}return BPromise[_0xd7ff('0x86')](_0x262445)[_0xd7ff('0x1b')](function(_0x53ae02){_0x462175=_(_0x462175)[_0xd7ff('0x87')](_0x53ae02)['compact']()[_0xd7ff('0x88')]();return db[_0xd7ff('0x3b')][_0xd7ff('0x53')]({'where':{'id':_0x29055c[_0xd7ff('0x5b')]['id']}})[_0xd7ff('0x1b')](function(_0x488783){return db[_0xd7ff('0x80')][_0xd7ff('0x71')](function(_0x3476e9){return _0x488783['removeTeams'](_0x29055c[_0xd7ff('0x3f')][_0xd7ff('0x6c')],{'transaction':_0x3476e9})['then'](function(){if(!_[_0xd7ff('0x89')](_0x462175)){return _0x488783[_0xd7ff('0x8a')](_0x462175,{'transaction':_0x3476e9});}})['then'](function(){_0x462175[_0xd7ff('0x73')](function(_0x975d13){socket[_0xd7ff('0x74')](_0xd7ff('0x8b'),{'UserId':_0x975d13,'ChatQueueId':_0x488783['id']});});});});});});})['then'](respondWithStatusCode(_0x2f49bc,null))[_0xd7ff('0x25')](handleError(_0x2f49bc,null));};exports['addAgents']=function(_0x59dd4c,_0x21f14d,_0xc6db8d){return db[_0xd7ff('0x3b')]['find']({'where':{'id':_0x59dd4c[_0xd7ff('0x5b')]['id']}})[_0xd7ff('0x1b')](handleEntityNotFound(_0x21f14d,null))[_0xd7ff('0x1b')](function(_0x1ced88){if(_0x1ced88){return _0x1ced88[_0xd7ff('0x8c')](_0x59dd4c['body'][_0xd7ff('0x6c')],_['omit'](_0x59dd4c[_0xd7ff('0x55')],['ids','id'])||{})[_0xd7ff('0x8d')](function(_0x33ee23){for(var _0x5744e4=0x0;_0x5744e4<_0x59dd4c[_0xd7ff('0x55')]['ids']['length'];_0x5744e4+=0x1){socket[_0xd7ff('0x74')]('userChatQueue:save',{'UserId':Number(_0x59dd4c[_0xd7ff('0x55')][_0xd7ff('0x6c')][_0x5744e4]),'ChatQueueId':Number(_0x59dd4c[_0xd7ff('0x5b')]['id'])});}return _0x33ee23;});}})['then'](respondWithResult(_0x21f14d,null))[_0xd7ff('0x25')](handleError(_0x21f14d,null));};exports[_0xd7ff('0x8a')]=function(_0x32fc64,_0x22b8aa,_0x49527b){return db[_0xd7ff('0x3b')][_0xd7ff('0x53')]({'where':{'id':_0x32fc64[_0xd7ff('0x5b')]['id']}})[_0xd7ff('0x1b')](handleEntityNotFound(_0x22b8aa,null))[_0xd7ff('0x1b')](function(_0x3abb37){if(_0x3abb37){return _0x3abb37[_0xd7ff('0x8a')](_0x32fc64[_0xd7ff('0x3f')][_0xd7ff('0x6c')])[_0xd7ff('0x1b')](function(){if(_['isArray'](_0x32fc64[_0xd7ff('0x3f')][_0xd7ff('0x6c')])){for(var _0x1cf52a=0x0;_0x1cf52a<_0x32fc64[_0xd7ff('0x3f')][_0xd7ff('0x6c')][_0xd7ff('0x43')];_0x1cf52a+=0x1){socket[_0xd7ff('0x74')](_0xd7ff('0x8b'),{'UserId':Number(_0x32fc64['query']['ids'][_0x1cf52a]),'ChatQueueId':Number(_0x32fc64[_0xd7ff('0x5b')]['id'])});}}else{socket[_0xd7ff('0x74')](_0xd7ff('0x8b'),{'UserId':Number(_0x32fc64[_0xd7ff('0x3f')][_0xd7ff('0x6c')]),'ChatQueueId':Number(_0x32fc64['params']['id'])});}});}})[_0xd7ff('0x1b')](respondWithStatusCode(_0x22b8aa,null))[_0xd7ff('0x25')](handleError(_0x22b8aa,null));};exports[_0xd7ff('0x8e')]=function(_0xfcadd2,_0x59740a,_0x1d9c0b){var _0x135238={};var _0x1d2618={};var _0x1ff614;var _0x294a00;return db['ChatQueue'][_0xd7ff('0x5d')]({'where':{'id':_0xfcadd2['params']['id']}})['then'](handleEntityNotFound(_0x59740a,null))['then'](function(_0xaae0c4){if(_0xaae0c4){_0x1ff614=_0xaae0c4;_0x1d2618[_0xd7ff('0x3e')]=_[_0xd7ff('0x40')](db[_0xd7ff('0x6d')][_0xd7ff('0x51')]);_0x1d2618[_0xd7ff('0x3f')]=_['keys'](_0xfcadd2[_0xd7ff('0x3f')]);_0x1d2618[_0xd7ff('0x48')]=_[_0xd7ff('0x52')](_0x1d2618[_0xd7ff('0x3e')],_0x1d2618['query']);_0x135238[_0xd7ff('0x42')]=_[_0xd7ff('0x52')](_0x1d2618[_0xd7ff('0x3e')],qs[_0xd7ff('0x41')](_0xfcadd2[_0xd7ff('0x3f')][_0xd7ff('0x41')]));_0x135238[_0xd7ff('0x42')]=_0x135238[_0xd7ff('0x42')][_0xd7ff('0x43')]?_0x135238[_0xd7ff('0x42')]:_0x1d2618[_0xd7ff('0x3e')];_0x135238[_0xd7ff('0x5e')]=qs[_0xd7ff('0x46')](_0xfcadd2['query'][_0xd7ff('0x46')]);_0x135238['where']=qs['filters'](_[_0xd7ff('0x5f')](_0xfcadd2[_0xd7ff('0x3f')],_0x1d2618[_0xd7ff('0x48')]));if(_0xfcadd2[_0xd7ff('0x3f')][_0xd7ff('0x4b')]){_0x135238['where']=_[_0xd7ff('0x49')](_0x135238[_0xd7ff('0x47')],{'$or':_[_0xd7ff('0x3a')](_0x135238['attributes'],function(_0x3ecfd4){var _0x373e90={};_0x373e90[_0x3ecfd4]={'$like':'%'+_0xfcadd2[_0xd7ff('0x3f')][_0xd7ff('0x4b')]+'%'};return _0x373e90;})});}_0x135238=_[_0xd7ff('0x49')]({},_0x135238,_0xfcadd2['options']);return _0x1ff614[_0xd7ff('0x8e')](_0x135238);}})[_0xd7ff('0x1b')](function(_0x1d496c){if(_0x1d496c){_0x294a00=_0x1d496c[_0xd7ff('0x43')];if(!_0xfcadd2['query'][_0xd7ff('0x44')](_0xd7ff('0x45'))){_0x135238[_0xd7ff('0x2b')]=qs[_0xd7ff('0x2b')](_0xfcadd2['query'][_0xd7ff('0x2b')]);_0x135238[_0xd7ff('0x2a')]=qs[_0xd7ff('0x2a')](_0xfcadd2[_0xd7ff('0x3f')]['offset']);}return _0x1ff614['getAgents'](_0x135238);}})[_0xd7ff('0x1b')](function(_0x3d6685){if(_0x3d6685){return _0x3d6685?{'count':_0x294a00,'rows':_0x3d6685}:null;}})[_0xd7ff('0x1b')](respondWithResult(_0x59740a,null))[_0xd7ff('0x25')](handleError(_0x59740a,null));};
\ No newline at end of file
+var _0x08a4=['findOrCreate','userChatQueue:save','removeTeams','field','tq.TeamId','from','team_has_chat_queues','join','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','value','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','to-csv','fs-extra','lodash','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','redis','./chatQueue.socket','register','jayson/promise','client','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','ChatQueues','UserProfileResource','stack','name','index','map','ChatQueue','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','merge','rows','show','params','includeAll','include','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserChatQueue','length','pick','ChatQueueId','filter','options','findAll','User','findAndCountAll','UserId','agent','chatPause','updatedAt','format','%s/%s','SIP','createdAt','getTeams','Team','ids','Agents','online','interface','flatMap','sequelize','addTeams','each'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0x08a4,0xb4));var _0x408a=function(_0x38e250,_0x3d62bd){_0x38e250=_0x38e250-0x0;var _0x246e42=_0x08a4[_0x38e250];return _0x246e42;};'use strict';var emlformat=require(_0x408a('0x0'));var rimraf=require(_0x408a('0x1'));var zipdir=require(_0x408a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x408a('0x3'));var Mustache=require(_0x408a('0x4'));var util=require(_0x408a('0x5'));var path=require(_0x408a('0x6'));var sox=require('sox');var csv=require(_0x408a('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x408a('0x8'));var _=require(_0x408a('0x9'));var squel=require('squel');var crypto=require(_0x408a('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x408a('0xb'));var toCsv=require(_0x408a('0x7'));var querystring=require('querystring');var Papa=require(_0x408a('0xc'));var Redis=require('ioredis');var authService=require(_0x408a('0xd'));var qs=require(_0x408a('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x408a('0xf'));var logger=require(_0x408a('0x10'))('api');var utils=require(_0x408a('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x408a('0x12'));var db=require(_0x408a('0x13'))['db'];config['redis']=_[_0x408a('0x14')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x408a('0x15'))(new Redis(config[_0x408a('0x16')]));require(_0x408a('0x17'))[_0x408a('0x18')](socket);var jayson=require(_0x408a('0x19'));var client=jayson[_0x408a('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x26212a,_0x5f21aa,_0x3e2338,_0x30c210){return new BPromise(function(_0x39e3a5,_0x156c38){var _0x48704e=_0x30c210||client;return _0x48704e[_0x408a('0x1b')](_0x26212a,_0x3e2338)['then'](function(_0x493a3c){logger[_0x408a('0x1c')](_0x408a('0x1d'),_0x5f21aa,_0x408a('0x1e'));logger[_0x408a('0x1f')](_0x408a('0x20'),_0x5f21aa,_0x408a('0x1e'),JSON[_0x408a('0x21')](_0x493a3c));if(_0x493a3c[_0x408a('0x22')]){if(_0x493a3c['error'][_0x408a('0x23')]===0x1f4){logger[_0x408a('0x22')](_0x408a('0x1d'),_0x5f21aa,_0x493a3c[_0x408a('0x22')][_0x408a('0x24')]);return _0x156c38(_0x493a3c['error'][_0x408a('0x24')]);}logger[_0x408a('0x22')](_0x408a('0x1d'),_0x5f21aa,_0x493a3c[_0x408a('0x22')][_0x408a('0x24')]);return _0x39e3a5(_0x493a3c[_0x408a('0x22')][_0x408a('0x24')]);}else{logger['info'](_0x408a('0x1d'),_0x5f21aa,_0x408a('0x1e'));_0x39e3a5(_0x493a3c[_0x408a('0x25')]['message']);}})[_0x408a('0x26')](function(_0x5ea4c9){logger[_0x408a('0x22')](_0x408a('0x1d'),_0x5f21aa,_0x5ea4c9);_0x156c38(_0x5ea4c9);});});}function respondWithStatusCode(_0x36083b,_0x2c252a){_0x2c252a=_0x2c252a||0xcc;return function(_0x1eaaf9){if(_0x1eaaf9){return _0x36083b[_0x408a('0x27')](_0x2c252a);}return _0x36083b[_0x408a('0x28')](_0x2c252a)[_0x408a('0x29')]();};}function respondWithResult(_0x4c3f17,_0x1f2495){_0x1f2495=_0x1f2495||0xc8;return function(_0x5b4ada){if(_0x5b4ada){return _0x4c3f17[_0x408a('0x28')](_0x1f2495)[_0x408a('0x2a')](_0x5b4ada);}};}function respondWithFilteredResult(_0x150d94,_0x43fe5a){return function(_0x14f118){if(_0x14f118){var _0x4c73a9=typeof _0x43fe5a[_0x408a('0x2b')]===_0x408a('0x2c')&&typeof _0x43fe5a[_0x408a('0x2d')]==='undefined';var _0x40df10=_0x14f118[_0x408a('0x2e')];var _0x4e5427=_0x4c73a9?0x0:_0x43fe5a[_0x408a('0x2b')];var _0x943f3a=_0x4c73a9?_0x14f118['count']:_0x43fe5a[_0x408a('0x2b')]+_0x43fe5a[_0x408a('0x2d')];var _0x35f705;if(_0x943f3a>=_0x40df10){_0x943f3a=_0x40df10;_0x35f705=0xc8;}else{_0x35f705=0xce;}_0x150d94['status'](_0x35f705);return _0x150d94['set'](_0x408a('0x2f'),_0x4e5427+'-'+_0x943f3a+'/'+_0x40df10)[_0x408a('0x2a')](_0x14f118);}return null;};}function patchUpdates(_0x154af8){return function(_0x1117a3){try{jsonpatch['apply'](_0x1117a3,_0x154af8,!![]);}catch(_0x1a242f){return BPromise[_0x408a('0x30')](_0x1a242f);}return _0x1117a3[_0x408a('0x31')]();};}function saveUpdates(_0x4494ea,_0x2986e2){return function(_0xd01358){if(_0xd01358){return _0xd01358[_0x408a('0x32')](_0x4494ea)[_0x408a('0x33')](function(_0x2d881c){return _0x2d881c;});}return null;};}function removeEntity(_0x3b85be,_0x16ffc3){return function(_0x2979a2){if(_0x2979a2){return _0x2979a2[_0x408a('0x34')]()[_0x408a('0x33')](function(){var _0x374080=_0x2979a2['get']({'plain':!![]});var _0x24d718=_0x408a('0x35');return db[_0x408a('0x36')]['destroy']({'where':{'type':_0x24d718,'resourceId':_0x374080['id']}})['then'](function(){return _0x2979a2;});})[_0x408a('0x33')](function(){_0x3b85be[_0x408a('0x28')](0xcc)[_0x408a('0x29')]();});}};}function handleEntityNotFound(_0x51e6ce,_0x5df985){return function(_0x5616aa){if(!_0x5616aa){_0x51e6ce[_0x408a('0x27')](0x194);}return _0x5616aa;};}function handleError(_0x4e6afe,_0x3a4dd0){_0x3a4dd0=_0x3a4dd0||0x1f4;return function(_0x596e8a){logger['error'](_0x596e8a[_0x408a('0x37')]);if(_0x596e8a['name']){delete _0x596e8a[_0x408a('0x38')];}_0x4e6afe[_0x408a('0x28')](_0x3a4dd0)['send'](_0x596e8a);};}exports[_0x408a('0x39')]=function(_0x53ea51,_0x342d75){var _0x12ed4b={},_0x8dfea4={},_0xc9a60e={'count':0x0,'rows':[]};var _0x17ec81=_[_0x408a('0x3a')](db[_0x408a('0x3b')][_0x408a('0x3c')],function(_0x471c04){return{'name':_0x471c04[_0x408a('0x3d')],'type':_0x471c04[_0x408a('0x3e')][_0x408a('0x3f')]};});_0x8dfea4['model']=_['map'](_0x17ec81,'name');_0x8dfea4['query']=_[_0x408a('0x40')](_0x53ea51[_0x408a('0x41')]);_0x8dfea4[_0x408a('0x42')]=_[_0x408a('0x43')](_0x8dfea4[_0x408a('0x44')],_0x8dfea4[_0x408a('0x41')]);_0x12ed4b[_0x408a('0x45')]=_[_0x408a('0x43')](_0x8dfea4[_0x408a('0x44')],qs[_0x408a('0x46')](_0x53ea51[_0x408a('0x41')][_0x408a('0x46')]));_0x12ed4b['attributes']=_0x12ed4b['attributes']['length']?_0x12ed4b['attributes']:_0x8dfea4['model'];if(!_0x53ea51[_0x408a('0x41')][_0x408a('0x47')](_0x408a('0x48'))){_0x12ed4b[_0x408a('0x2d')]=qs['limit'](_0x53ea51[_0x408a('0x41')][_0x408a('0x2d')]);_0x12ed4b[_0x408a('0x2b')]=qs[_0x408a('0x2b')](_0x53ea51['query'][_0x408a('0x2b')]);}_0x12ed4b[_0x408a('0x49')]=qs[_0x408a('0x4a')](_0x53ea51[_0x408a('0x41')]['sort']);_0x12ed4b[_0x408a('0x4b')]=qs['filters'](_['pick'](_0x53ea51[_0x408a('0x41')],_0x8dfea4[_0x408a('0x42')]),_0x17ec81);if(_0x53ea51[_0x408a('0x41')]['filter']){_0x12ed4b[_0x408a('0x4b')]=_['merge'](_0x12ed4b['where'],{'$or':_[_0x408a('0x3a')](_0x17ec81,function(_0x2d818f){if(_0x2d818f[_0x408a('0x3e')]!==_0x408a('0x4c')){var _0x5a186f={};_0x5a186f[_0x2d818f['name']]={'$like':'%'+_0x53ea51['query']['filter']+'%'};return _0x5a186f;}})});}_0x12ed4b=_[_0x408a('0x4d')]({},_0x12ed4b,_0x53ea51['options']);var _0xc494e8={'where':_0x12ed4b[_0x408a('0x4b')]};return db[_0x408a('0x3b')]['count'](_0xc494e8)[_0x408a('0x33')](function(_0x5b2d45){_0xc9a60e['count']=_0x5b2d45;if(_0x53ea51['query']['includeAll']){_0x12ed4b['include']=[{'all':!![]}];}return db[_0x408a('0x3b')]['findAll'](_0x12ed4b);})['then'](function(_0x44bcfe){_0xc9a60e[_0x408a('0x4e')]=_0x44bcfe;return _0xc9a60e;})[_0x408a('0x33')](respondWithFilteredResult(_0x342d75,_0x12ed4b))[_0x408a('0x26')](handleError(_0x342d75,null));};exports[_0x408a('0x4f')]=function(_0x52f571,_0x242471){var _0x550d67={'raw':!![],'where':{'id':_0x52f571[_0x408a('0x50')]['id']}},_0x428cf3={};_0x428cf3[_0x408a('0x44')]=_[_0x408a('0x40')](db[_0x408a('0x3b')]['rawAttributes']);_0x428cf3[_0x408a('0x41')]=_['keys'](_0x52f571[_0x408a('0x41')]);_0x428cf3[_0x408a('0x42')]=_[_0x408a('0x43')](_0x428cf3[_0x408a('0x44')],_0x428cf3[_0x408a('0x41')]);_0x550d67[_0x408a('0x45')]=_['intersection'](_0x428cf3['model'],qs[_0x408a('0x46')](_0x52f571[_0x408a('0x41')][_0x408a('0x46')]));_0x550d67['attributes']=_0x550d67[_0x408a('0x45')]['length']?_0x550d67['attributes']:_0x428cf3['model'];if(_0x52f571[_0x408a('0x41')][_0x408a('0x51')]){_0x550d67[_0x408a('0x52')]=[{'all':!![]}];}_0x550d67=_[_0x408a('0x4d')]({},_0x550d67,_0x52f571['options']);return db['ChatQueue'][_0x408a('0x53')](_0x550d67)[_0x408a('0x33')](handleEntityNotFound(_0x242471,null))[_0x408a('0x33')](respondWithResult(_0x242471,null))[_0x408a('0x26')](handleError(_0x242471,null));};exports[_0x408a('0x54')]=function(_0x55ac93,_0x4c9d2d){return db[_0x408a('0x3b')][_0x408a('0x54')](_0x55ac93[_0x408a('0x55')],{})[_0x408a('0x33')](function(_0x3847a5){var _0x2883b9=_0x55ac93[_0x408a('0x56')][_0x408a('0x57')]({'plain':!![]});if(!_0x2883b9)throw new Error(_0x408a('0x58'));if(_0x2883b9[_0x408a('0x59')]==='user'){var _0x1e3ae6=_0x3847a5[_0x408a('0x57')]({'plain':!![]});var _0x43bf8e='ChatQueues';return db[_0x408a('0x5a')][_0x408a('0x53')]({'where':{'name':_0x43bf8e,'userProfileId':_0x2883b9[_0x408a('0x5b')]},'raw':!![]})[_0x408a('0x33')](function(_0x3866d3){if(_0x3866d3&&_0x3866d3[_0x408a('0x5c')]===0x0){return db[_0x408a('0x36')][_0x408a('0x54')]({'name':_0x1e3ae6[_0x408a('0x38')],'resourceId':_0x1e3ae6['id'],'type':_0x3866d3[_0x408a('0x38')],'sectionId':_0x3866d3['id']},{})[_0x408a('0x33')](function(){return _0x3847a5;});}else{return _0x3847a5;}})[_0x408a('0x26')](function(_0x513996){logger[_0x408a('0x22')](_0x408a('0x5d'),_0x513996);throw _0x513996;});}return _0x3847a5;})['then'](respondWithResult(_0x4c9d2d,0xc9))[_0x408a('0x26')](handleError(_0x4c9d2d,null));};exports[_0x408a('0x32')]=function(_0x26acde,_0x326085){if(_0x26acde[_0x408a('0x55')]['id']){delete _0x26acde[_0x408a('0x55')]['id'];}return db[_0x408a('0x3b')][_0x408a('0x53')]({'where':{'id':_0x26acde[_0x408a('0x50')]['id']}})[_0x408a('0x33')](handleEntityNotFound(_0x326085,null))['then'](saveUpdates(_0x26acde[_0x408a('0x55')],null))[_0x408a('0x33')](respondWithResult(_0x326085,null))[_0x408a('0x26')](handleError(_0x326085,null));};exports[_0x408a('0x34')]=function(_0x425bd7,_0x72eaf9){return db['ChatQueue'][_0x408a('0x53')]({'where':{'id':_0x425bd7[_0x408a('0x50')]['id']}})[_0x408a('0x33')](handleEntityNotFound(_0x72eaf9,null))['then'](removeEntity(_0x72eaf9,null))[_0x408a('0x26')](handleError(_0x72eaf9,null));};exports[_0x408a('0x5e')]=function(_0x4e50ab,_0x360bcf){return db[_0x408a('0x3b')][_0x408a('0x5e')]()['then'](respondWithResult(_0x360bcf,null))['catch'](handleError(_0x360bcf,null));};exports[_0x408a('0x5f')]=function(_0x1408b4,_0x32b8d4,_0x428de1){var _0x5012b0={'raw':!![],'where':{}},_0x378048={},_0x2749e6;return db[_0x408a('0x3b')][_0x408a('0x60')]({'where':{'id':_0x1408b4[_0x408a('0x50')]['id']}})[_0x408a('0x33')](handleEntityNotFound(_0x32b8d4,null))[_0x408a('0x33')](function(_0x576de3){if(_0x576de3){_0x2749e6=_0x576de3[_0x408a('0x57')]({'plain':!![]});_0x378048[_0x408a('0x44')]=_[_0x408a('0x40')](db[_0x408a('0x61')]['rawAttributes']);_0x378048[_0x408a('0x41')]=_['keys'](_0x1408b4['query']);_0x378048[_0x408a('0x42')]=_[_0x408a('0x43')](_0x378048[_0x408a('0x44')],_0x378048[_0x408a('0x41')]);_0x5012b0['attributes']=_[_0x408a('0x43')](_0x378048['model'],qs[_0x408a('0x46')](_0x1408b4[_0x408a('0x41')]['fields']));_0x5012b0['attributes']=_0x5012b0['attributes'][_0x408a('0x62')]?_0x5012b0[_0x408a('0x45')]:_0x378048[_0x408a('0x44')];if(!_0x1408b4[_0x408a('0x41')]['hasOwnProperty'](_0x408a('0x48'))){_0x5012b0[_0x408a('0x2d')]=qs[_0x408a('0x2d')](_0x1408b4['query'][_0x408a('0x2d')]);_0x5012b0['offset']=qs['offset'](_0x1408b4[_0x408a('0x41')][_0x408a('0x2b')]);}_0x5012b0[_0x408a('0x49')]=qs[_0x408a('0x4a')](_0x1408b4[_0x408a('0x41')][_0x408a('0x4a')]);_0x5012b0['where']=qs['filters'](_[_0x408a('0x63')](_0x1408b4[_0x408a('0x41')],_0x378048[_0x408a('0x42')]));_0x5012b0[_0x408a('0x4b')][_0x408a('0x64')]=_0x576de3['id'];if(_0x1408b4['query']['filter']){_0x5012b0[_0x408a('0x4b')]=_[_0x408a('0x4d')](_0x5012b0[_0x408a('0x4b')],{'$or':_[_0x408a('0x3a')](_0x5012b0['attributes'],function(_0x1af7da){var _0x314c7c={};_0x314c7c[_0x1af7da]={'$like':'%'+_0x1408b4[_0x408a('0x41')][_0x408a('0x65')]+'%'};return _0x314c7c;})});}_0x5012b0=_['merge']({},_0x5012b0,_0x1408b4[_0x408a('0x66')]);return db['UserChatQueue'][_0x408a('0x67')](_0x5012b0);}})[_0x408a('0x33')](function(_0x135de1){if(_0x135de1){return db[_0x408a('0x68')][_0x408a('0x69')]({'where':{'id':_[_0x408a('0x3a')](_0x135de1,_0x408a('0x6a')),'role':_0x408a('0x6b')},'attributes':['id',_0x408a('0x38'),_0x408a('0x6c'),_0x408a('0x6d'),'createdAt']});}})[_0x408a('0x33')](function(_0x4fd387){if(_0x4fd387){return{'count':_0x4fd387[_0x408a('0x2e')],'rows':_[_0x408a('0x3a')](_0x4fd387['rows'],function(_0x3b139b){return{'membername':_0x3b139b[_0x408a('0x38')],'UserId':_0x3b139b['id'],'queue_name':_0x2749e6[_0x408a('0x38')],'ChatQueueId':_0x2749e6['id'],'interface':util[_0x408a('0x6e')](_0x408a('0x6f'),_0x408a('0x70'),_0x3b139b['name']),'penalty':0x0,'paused':_0x3b139b[_0x408a('0x6c')],'createdAt':_0x3b139b[_0x408a('0x71')],'updatedAt':_0x3b139b[_0x408a('0x6d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x408a('0x33')](respondWithFilteredResult(_0x32b8d4,_0x5012b0))[_0x408a('0x26')](handleError(_0x32b8d4,null));};exports[_0x408a('0x72')]=function(_0x3b632e,_0x5d349c,_0x476fc3){var _0x2f2484={};var _0x26694f={};var _0x2fa3ac;var _0x10438a;return db[_0x408a('0x3b')][_0x408a('0x60')]({'where':{'id':_0x3b632e[_0x408a('0x50')]['id']}})[_0x408a('0x33')](handleEntityNotFound(_0x5d349c,null))[_0x408a('0x33')](function(_0x3e66b4){if(_0x3e66b4){_0x2fa3ac=_0x3e66b4;_0x26694f[_0x408a('0x44')]=_['keys'](db[_0x408a('0x73')][_0x408a('0x3c')]);_0x26694f[_0x408a('0x41')]=_[_0x408a('0x40')](_0x3b632e[_0x408a('0x41')]);_0x26694f[_0x408a('0x42')]=_[_0x408a('0x43')](_0x26694f[_0x408a('0x44')],_0x26694f[_0x408a('0x41')]);_0x2f2484[_0x408a('0x45')]=_['intersection'](_0x26694f[_0x408a('0x44')],qs[_0x408a('0x46')](_0x3b632e[_0x408a('0x41')][_0x408a('0x46')]));_0x2f2484[_0x408a('0x45')]=_0x2f2484[_0x408a('0x45')][_0x408a('0x62')]?_0x2f2484[_0x408a('0x45')]:_0x26694f[_0x408a('0x44')];_0x2f2484[_0x408a('0x49')]=qs[_0x408a('0x4a')](_0x3b632e['query'][_0x408a('0x4a')]);_0x2f2484['where']=qs[_0x408a('0x42')](_[_0x408a('0x63')](_0x3b632e[_0x408a('0x41')],_0x26694f['filters']));if(_0x3b632e[_0x408a('0x41')][_0x408a('0x65')]){_0x2f2484[_0x408a('0x4b')]=_['merge'](_0x2f2484[_0x408a('0x4b')],{'$or':_[_0x408a('0x3a')](_0x2f2484[_0x408a('0x45')],function(_0x5386b4){var _0x129d41={};_0x129d41[_0x5386b4]={'$like':'%'+_0x3b632e['query'][_0x408a('0x65')]+'%'};return _0x129d41;})});}_0x2f2484=_[_0x408a('0x4d')]({},_0x2f2484,_0x3b632e[_0x408a('0x66')]);return _0x2fa3ac['getTeams'](_0x2f2484);}})['then'](function(_0x45be8d){if(_0x45be8d){_0x10438a=_0x45be8d[_0x408a('0x62')];if(!_0x3b632e[_0x408a('0x41')][_0x408a('0x47')]('nolimit')){_0x2f2484[_0x408a('0x2d')]=qs[_0x408a('0x2d')](_0x3b632e[_0x408a('0x41')]['limit']);_0x2f2484[_0x408a('0x2b')]=qs[_0x408a('0x2b')](_0x3b632e[_0x408a('0x41')]['offset']);}return _0x2fa3ac[_0x408a('0x72')](_0x2f2484);}})[_0x408a('0x33')](function(_0x28a754){if(_0x28a754){return _0x28a754?{'count':_0x10438a,'rows':_0x28a754}:null;}})[_0x408a('0x33')](respondWithResult(_0x5d349c,null))['catch'](handleError(_0x5d349c,null));};exports['addTeams']=function(_0x1f1934,_0x25f698,_0x442825){var _0x53e275=_0x1f1934[_0x408a('0x55')][_0x408a('0x74')];return db['Team'][_0x408a('0x67')]({'where':{'id':_0x53e275},'attributes':['id'],'include':[{'model':db[_0x408a('0x68')],'as':_0x408a('0x75'),'attributes':['id',_0x408a('0x38'),_0x408a('0x76'),'voicePause',_0x408a('0x77')],'raw':!![]}]})['then'](function(_0x47c0dc){if(_0x47c0dc){var _0xd6a765=_[_0x408a('0x78')](_0x47c0dc,function(_0x554c75){var _0x65c344=_0x554c75['get']({'plain':!![]});return _0x65c344[_0x408a('0x75')];});return db['ChatQueue']['find']({'where':{'id':_0x1f1934[_0x408a('0x50')]['id']}})[_0x408a('0x33')](function(_0x519443){return db[_0x408a('0x79')]['transaction'](function(_0x65bdad){return _0x519443[_0x408a('0x7a')](_0x53e275,{'transaction':_0x65bdad})['then'](function(){return BPromise[_0x408a('0x7b')](_0xd6a765,function(_0x5e26b6){return db[_0x408a('0x61')][_0x408a('0x7c')]({'where':{'UserId':_0x5e26b6['id'],'ChatQueueId':_0x1f1934['params']['id']},'transaction':_0x65bdad});});})[_0x408a('0x33')](function(){_0xd6a765['forEach'](function(_0x364060){socket['emit'](_0x408a('0x7d'),{'UserId':_0x364060['id'],'ChatQueueId':_0x519443['id']});});});});});}})[_0x408a('0x33')](respondWithStatusCode(_0x25f698,null))[_0x408a('0x26')](handleError(_0x25f698,null));};exports[_0x408a('0x7e')]=function(_0x40b046,_0x618a41,_0x349872){return db[_0x408a('0x73')][_0x408a('0x67')]({'where':{'id':_0x40b046['query']['ids']},'attributes':['id'],'include':[{'model':db[_0x408a('0x68')],'as':_0x408a('0x75'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x618a41,null))[_0x408a('0x33')](function(_0x4e4f42){var _0x5d988e=_[_0x408a('0x3a')](_0x4e4f42,'id');var _0x21c9c6=[];var _0x190175=[];var _0x5a589b=squel['select']();_0x5a589b[_0x408a('0x7f')](_0x408a('0x80'))[_0x408a('0x81')](_0x408a('0x82'),'tq')[_0x408a('0x83')]('user_has_teams','ut',_0x408a('0x84'))[_0x408a('0x4b')]('ChatQueueId\x20=\x20?',_0x40b046[_0x408a('0x50')]['id']);for(var _0x38018e=0x0;_0x38018e<_0x4e4f42[_0x408a('0x62')];_0x38018e+=0x1){let _0x423132=_0x4e4f42[_0x38018e];for(var _0x106926=0x0;_0x106926<_0x423132[_0x408a('0x75')][_0x408a('0x62')];_0x106926+=0x1){let _0x579308=_0x423132[_0x408a('0x75')][_0x106926];var _0x5d21e7=_0x5a589b[_0x408a('0x85')]();_0x5d21e7[_0x408a('0x4b')](_0x408a('0x86'),_0x579308['id']);_0x190175[_0x408a('0x87')](db[_0x408a('0x79')][_0x408a('0x41')](_0x5d21e7[_0x408a('0x88')](),{'type':db[_0x408a('0x79')][_0x408a('0x89')][_0x408a('0x8a')]})['then'](function(_0x40b8a5){if(_0x40b8a5[_0x408a('0x62')]===0x1){return _0x579308['id'];}else{var _0x4d65f1=_[_0x408a('0x8b')](_[_0x408a('0x3a')](_0x40b8a5,_0x408a('0x8c')),function(_0x500b77){return _[_0x408a('0x8d')](_0x5d988e,_0x500b77);});if(_0x4d65f1){return _0x579308['id'];}}}));}}return BPromise[_0x408a('0x8e')](_0x190175)[_0x408a('0x33')](function(_0x2cfdcb){_0x21c9c6=_(_0x21c9c6)['union'](_0x2cfdcb)['compact']()[_0x408a('0x8f')]();return db[_0x408a('0x3b')][_0x408a('0x53')]({'where':{'id':_0x40b046[_0x408a('0x50')]['id']}})[_0x408a('0x33')](function(_0x3946ea){return db[_0x408a('0x79')]['transaction'](function(_0x5c0361){return _0x3946ea['removeTeams'](_0x40b046[_0x408a('0x41')]['ids'],{'transaction':_0x5c0361})[_0x408a('0x33')](function(){if(!_[_0x408a('0x90')](_0x21c9c6)){return _0x3946ea[_0x408a('0x91')](_0x21c9c6,{'transaction':_0x5c0361});}})['then'](function(){_0x21c9c6['forEach'](function(_0x1f1f3f){socket['emit'](_0x408a('0x92'),{'UserId':_0x1f1f3f,'ChatQueueId':_0x3946ea['id']});});});});});});})[_0x408a('0x33')](respondWithStatusCode(_0x618a41,null))[_0x408a('0x26')](handleError(_0x618a41,null));};exports['addAgents']=function(_0x184fe4,_0x53c245,_0x22984e){return db['ChatQueue']['find']({'where':{'id':_0x184fe4[_0x408a('0x50')]['id']}})['then'](handleEntityNotFound(_0x53c245,null))['then'](function(_0x1d322b){if(_0x1d322b){return _0x1d322b[_0x408a('0x93')](_0x184fe4[_0x408a('0x55')][_0x408a('0x74')],_[_0x408a('0x94')](_0x184fe4[_0x408a('0x55')],[_0x408a('0x74'),'id'])||{})[_0x408a('0x95')](function(_0x33cd72){for(var _0x20f613=0x0;_0x20f613<_0x184fe4[_0x408a('0x55')][_0x408a('0x74')][_0x408a('0x62')];_0x20f613+=0x1){socket['emit'](_0x408a('0x7d'),{'UserId':Number(_0x184fe4[_0x408a('0x55')]['ids'][_0x20f613]),'ChatQueueId':Number(_0x184fe4[_0x408a('0x50')]['id'])});}return _0x33cd72;});}})[_0x408a('0x33')](respondWithResult(_0x53c245,null))[_0x408a('0x26')](handleError(_0x53c245,null));};exports[_0x408a('0x91')]=function(_0x1772e6,_0x4699aa,_0x3887b8){return db[_0x408a('0x3b')][_0x408a('0x53')]({'where':{'id':_0x1772e6[_0x408a('0x50')]['id']}})[_0x408a('0x33')](handleEntityNotFound(_0x4699aa,null))[_0x408a('0x33')](function(_0x23ea4b){if(_0x23ea4b){return _0x23ea4b['removeAgents'](_0x1772e6['query'][_0x408a('0x74')])['then'](function(){if(_[_0x408a('0x96')](_0x1772e6[_0x408a('0x41')][_0x408a('0x74')])){for(var _0x359791=0x0;_0x359791<_0x1772e6[_0x408a('0x41')][_0x408a('0x74')][_0x408a('0x62')];_0x359791+=0x1){socket['emit'](_0x408a('0x92'),{'UserId':Number(_0x1772e6[_0x408a('0x41')][_0x408a('0x74')][_0x359791]),'ChatQueueId':Number(_0x1772e6['params']['id'])});}}else{socket['emit'](_0x408a('0x92'),{'UserId':Number(_0x1772e6[_0x408a('0x41')][_0x408a('0x74')]),'ChatQueueId':Number(_0x1772e6[_0x408a('0x50')]['id'])});}});}})['then'](respondWithStatusCode(_0x4699aa,null))['catch'](handleError(_0x4699aa,null));};exports[_0x408a('0x97')]=function(_0x9b2b47,_0x4180ee,_0x41713f){var _0x7e7552={};var _0xa8f1cd={};var _0x1f2c15;var _0x28ab26;return db[_0x408a('0x3b')][_0x408a('0x60')]({'where':{'id':_0x9b2b47[_0x408a('0x50')]['id']}})[_0x408a('0x33')](handleEntityNotFound(_0x4180ee,null))[_0x408a('0x33')](function(_0x2f6bca){if(_0x2f6bca){_0x1f2c15=_0x2f6bca;_0xa8f1cd[_0x408a('0x44')]=_[_0x408a('0x40')](db[_0x408a('0x68')]['rawAttributes']);_0xa8f1cd[_0x408a('0x41')]=_[_0x408a('0x40')](_0x9b2b47['query']);_0xa8f1cd['filters']=_[_0x408a('0x43')](_0xa8f1cd[_0x408a('0x44')],_0xa8f1cd[_0x408a('0x41')]);_0x7e7552[_0x408a('0x45')]=_[_0x408a('0x43')](_0xa8f1cd['model'],qs[_0x408a('0x46')](_0x9b2b47[_0x408a('0x41')][_0x408a('0x46')]));_0x7e7552['attributes']=_0x7e7552[_0x408a('0x45')][_0x408a('0x62')]?_0x7e7552[_0x408a('0x45')]:_0xa8f1cd[_0x408a('0x44')];_0x7e7552['order']=qs[_0x408a('0x4a')](_0x9b2b47[_0x408a('0x41')]['sort']);_0x7e7552['where']=qs[_0x408a('0x42')](_[_0x408a('0x63')](_0x9b2b47['query'],_0xa8f1cd['filters']));if(_0x9b2b47['query'][_0x408a('0x65')]){_0x7e7552[_0x408a('0x4b')]=_[_0x408a('0x4d')](_0x7e7552[_0x408a('0x4b')],{'$or':_[_0x408a('0x3a')](_0x7e7552[_0x408a('0x45')],function(_0x5e9fe8){var _0x41edff={};_0x41edff[_0x5e9fe8]={'$like':'%'+_0x9b2b47[_0x408a('0x41')][_0x408a('0x65')]+'%'};return _0x41edff;})});}_0x7e7552=_['merge']({},_0x7e7552,_0x9b2b47[_0x408a('0x66')]);return _0x1f2c15['getAgents'](_0x7e7552);}})[_0x408a('0x33')](function(_0x27888c){if(_0x27888c){_0x28ab26=_0x27888c[_0x408a('0x62')];if(!_0x9b2b47[_0x408a('0x41')][_0x408a('0x47')](_0x408a('0x48'))){_0x7e7552[_0x408a('0x2d')]=qs[_0x408a('0x2d')](_0x9b2b47[_0x408a('0x41')][_0x408a('0x2d')]);_0x7e7552[_0x408a('0x2b')]=qs['offset'](_0x9b2b47[_0x408a('0x41')][_0x408a('0x2b')]);}return _0x1f2c15['getAgents'](_0x7e7552);}})[_0x408a('0x33')](function(_0x272836){if(_0x272836){return _0x272836?{'count':_0x28ab26,'rows':_0x272836}:null;}})['then'](respondWithResult(_0x4180ee,null))[_0x408a('0x26')](handleError(_0x4180ee,null));};
\ No newline at end of file
index ac4ce91..2e1f1b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bb9=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatQueue','setMaxListeners','save'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x8bb9,0x1f3));var _0x98bb=function(_0x435fa1,_0x58550a){_0x435fa1=_0x435fa1-0x0;var _0x845f9f=_0x8bb9[_0x435fa1];return _0x845f9f;};'use strict';var EventEmitter=require(_0x98bb('0x0'));var ChatQueue=require(_0x98bb('0x1'))['db'][_0x98bb('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x98bb('0x3')](0x0);var events={'afterCreate':_0x98bb('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x30218b){return function(_0x38b7cd,_0x5374d8,_0x186bc2){ChatQueueEvents[_0x98bb('0x5')](_0x30218b+':'+_0x38b7cd['id'],_0x38b7cd);ChatQueueEvents[_0x98bb('0x5')](_0x30218b,_0x38b7cd);_0x186bc2(null);};}for(var e in events){if(events[_0x98bb('0x6')](e)){var event=events[e];ChatQueue[_0x98bb('0x7')](e,emitEvent(event));}}module[_0x98bb('0x8')]=ChatQueueEvents;
\ No newline at end of file
+var _0x7559=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x5ef905,_0x564b87){var _0x367808=function(_0x14f487){while(--_0x14f487){_0x5ef905['push'](_0x5ef905['shift']());}};_0x367808(++_0x564b87);}(_0x7559,0x142));var _0x9755=function(_0x23383b,_0x3e980e){_0x23383b=_0x23383b-0x0;var _0xf4812c=_0x7559[_0x23383b];return _0xf4812c;};'use strict';var EventEmitter=require('events');var ChatQueue=require('../../mysqldb')['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x9755('0x0')](0x0);var events={'afterCreate':_0x9755('0x1'),'afterUpdate':_0x9755('0x2'),'afterDestroy':_0x9755('0x3')};function emitEvent(_0x1ed5c5){return function(_0x251d86,_0xb3dff0,_0x3adc53){ChatQueueEvents[_0x9755('0x4')](_0x1ed5c5+':'+_0x251d86['id'],_0x251d86);ChatQueueEvents[_0x9755('0x4')](_0x1ed5c5,_0x251d86);_0x3adc53(null);};}for(var e in events){if(events[_0x9755('0x5')](e)){var event=events[e];ChatQueue[_0x9755('0x6')](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
index 23186c3..b85f307 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ac5=['lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','./chatQueue.attributes','exports','ChatQueue','chat_queues'];(function(_0x5b6cf1,_0x32fdcd){var _0x46278c=function(_0x53fd9b){while(--_0x53fd9b){_0x5b6cf1['push'](_0x5b6cf1['shift']());}};_0x46278c(++_0x32fdcd);}(_0x8ac5,0x1ad));var _0x58ac=function(_0x485221,_0x1f5ca6){_0x485221=_0x485221-0x0;var _0x43a0c7=_0x8ac5[_0x485221];return _0x43a0c7;};'use strict';var _=require(_0x58ac('0x0'));var util=require(_0x58ac('0x1'));var logger=require(_0x58ac('0x2'))(_0x58ac('0x3'));var moment=require('moment');var BPromise=require(_0x58ac('0x4'));var rp=require(_0x58ac('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x58ac('0x6'));var config=require('../../config/environment');var attributes=require(_0x58ac('0x7'));module[_0x58ac('0x8')]=function(_0xe02ad2,_0x3da386){return _0xe02ad2['define'](_0x58ac('0x9'),attributes,{'tableName':_0x58ac('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe70e=['lodash','util','api','bluebird','path','rimraf','../../config/environment','./chatQueue.attributes','exports','define','chat_queues'];(function(_0x5df5e1,_0x3e0305){var _0x2fffd3=function(_0x532a7c){while(--_0x532a7c){_0x5df5e1['push'](_0x5df5e1['shift']());}};_0x2fffd3(++_0x3e0305);}(_0xe70e,0x108));var _0xee70=function(_0x417451,_0x2f3115){_0x417451=_0x417451-0x0;var _0x1e273f=_0xe70e[_0x417451];return _0x1e273f;};'use strict';var _=require(_0xee70('0x0'));var util=require(_0xee70('0x1'));var logger=require('../../config/logger')(_0xee70('0x2'));var moment=require('moment');var BPromise=require(_0xee70('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xee70('0x4'));var rimraf=require(_0xee70('0x5'));var config=require(_0xee70('0x6'));var attributes=require(_0xee70('0x7'));module[_0xee70('0x8')]=function(_0x3a9b0f,_0x41fbf9){return _0x3a9b0f[_0xee70('0x9')]('ChatQueue',attributes,{'tableName':_0xee70('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d9d3e52..5d8d83c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa67e=['info','result','catch','GetChatQueue','findAll','options','where','attributes','limit','include','map','model','then','ShowChatQueue','ChatQueue','raw','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x5b0e01,_0x7174a9){var _0x5950b7=function(_0x453b39){while(--_0x453b39){_0x5b0e01['push'](_0x5b0e01['shift']());}};_0x5950b7(++_0x7174a9);}(_0xa67e,0xce));var _0xea67=function(_0x1123bc,_0x5a1fa0){_0x1123bc=_0x1123bc-0x0;var _0x2ed004=_0xa67e[_0x1123bc];return _0x2ed004;};'use strict';var _=require('lodash');var util=require(_0xea67('0x0'));var moment=require('moment');var BPromise=require(_0xea67('0x1'));var rs=require(_0xea67('0x2'));var fs=require('fs');var Redis=require(_0xea67('0x3'));var db=require(_0xea67('0x4'))['db'];var utils=require(_0xea67('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xea67('0x6'));var jayson=require(_0xea67('0x7'));var client=jayson[_0xea67('0x8')][_0xea67('0x9')]({'port':0x232a});config[_0xea67('0xa')]=_[_0xea67('0xb')](config[_0xea67('0xa')],{'host':_0xea67('0xc'),'port':0x18eb});var socket=require(_0xea67('0xd'))(new Redis(config[_0xea67('0xa')]));require(_0xea67('0xe'))['register'](socket);function respondWithRpcPromise(_0x29c622,_0x3967ca,_0xf9d861){return new BPromise(function(_0x1717e7,_0x378eab){return client['request'](_0x29c622,_0xf9d861)['then'](function(_0x5f4f1b){logger['info'](_0xea67('0xf'),_0x3967ca,_0xea67('0x10'));logger[_0xea67('0x11')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x3967ca,_0xea67('0x10'),JSON[_0xea67('0x12')](_0x5f4f1b));if(_0x5f4f1b['error']){if(_0x5f4f1b[_0xea67('0x13')][_0xea67('0x14')]===0x1f4){logger['error']('ChatQueue,\x20%s,\x20%s',_0x3967ca,_0x5f4f1b[_0xea67('0x13')]['message']);return _0x378eab(_0x5f4f1b[_0xea67('0x13')][_0xea67('0x15')]);}logger[_0xea67('0x13')](_0xea67('0xf'),_0x3967ca,_0x5f4f1b[_0xea67('0x13')]['message']);return _0x1717e7(_0x5f4f1b['error']['message']);}else{logger[_0xea67('0x16')](_0xea67('0xf'),_0x3967ca,_0xea67('0x10'));_0x1717e7(_0x5f4f1b[_0xea67('0x17')][_0xea67('0x15')]);}})[_0xea67('0x18')](function(_0x51baf7){logger[_0xea67('0x13')](_0xea67('0xf'),_0x3967ca,_0x51baf7);_0x378eab(_0x51baf7);});});}exports[_0xea67('0x19')]=function(_0x96270b){var _0xac22d6=this;return new Promise(function(_0x77e0e4,_0x45663f){return db['ChatQueue'][_0xea67('0x1a')]({'raw':_0x96270b[_0xea67('0x1b')]?_0x96270b[_0xea67('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x96270b['options']?_0x96270b[_0xea67('0x1b')][_0xea67('0x1c')]||null:null,'attributes':_0x96270b['options']?_0x96270b[_0xea67('0x1b')][_0xea67('0x1d')]||null:null,'limit':_0x96270b[_0xea67('0x1b')]?_0x96270b[_0xea67('0x1b')][_0xea67('0x1e')]||null:null,'include':_0x96270b[_0xea67('0x1b')]?_0x96270b[_0xea67('0x1b')][_0xea67('0x1f')]?_['map'](_0x96270b[_0xea67('0x1b')][_0xea67('0x1f')],function(_0x31b6ea){return{'model':db[_0x31b6ea['model']],'as':_0x31b6ea['as'],'attributes':_0x31b6ea[_0xea67('0x1d')],'include':_0x31b6ea['include']?_[_0xea67('0x20')](_0x31b6ea['include'],function(_0x3d2403){return{'model':db[_0x3d2403[_0xea67('0x21')]],'as':_0x3d2403['as'],'attributes':_0x3d2403['attributes'],'include':_0x3d2403[_0xea67('0x1f')]?_[_0xea67('0x20')](_0x3d2403[_0xea67('0x1f')],function(_0x30ccdb){return{'model':db[_0x30ccdb[_0xea67('0x21')]],'as':_0x30ccdb['as'],'attributes':_0x30ccdb[_0xea67('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xea67('0x22')](function(_0x106d58){logger[_0xea67('0x16')](_0xea67('0x19'),_0x96270b);logger['debug'](_0xea67('0x19'),_0x96270b,JSON[_0xea67('0x12')](_0x106d58));_0x77e0e4(_0x106d58);})[_0xea67('0x18')](function(_0x29f221){logger[_0xea67('0x13')](_0xea67('0x19'),_0x29f221[_0xea67('0x15')],_0x96270b);_0x45663f(_0xac22d6['error'](0x1f4,_0x29f221[_0xea67('0x15')]));});});};exports[_0xea67('0x23')]=function(_0x5f1f29){var _0xe7cb99=this;return new Promise(function(_0x3054d6,_0x5bad56){return db[_0xea67('0x24')]['find']({'raw':_0x5f1f29[_0xea67('0x1b')]?_0x5f1f29['options'][_0xea67('0x25')]===undefined?!![]:![]:!![],'where':_0x5f1f29[_0xea67('0x1b')]?_0x5f1f29[_0xea67('0x1b')][_0xea67('0x1c')]||null:null,'attributes':_0x5f1f29[_0xea67('0x1b')]?_0x5f1f29['options'][_0xea67('0x1d')]||null:null,'include':_0x5f1f29[_0xea67('0x1b')]?_0x5f1f29[_0xea67('0x1b')][_0xea67('0x1f')]?_['map'](_0x5f1f29[_0xea67('0x1b')][_0xea67('0x1f')],function(_0x46feba){return{'model':db[_0x46feba[_0xea67('0x21')]],'as':_0x46feba['as'],'attributes':_0x46feba[_0xea67('0x1d')],'include':_0x46feba[_0xea67('0x1f')]?_[_0xea67('0x20')](_0x46feba[_0xea67('0x1f')],function(_0x10fbc3){return{'model':db[_0x10fbc3[_0xea67('0x21')]],'as':_0x10fbc3['as'],'attributes':_0x10fbc3[_0xea67('0x1d')],'include':_0x10fbc3['include']?_[_0xea67('0x20')](_0x10fbc3[_0xea67('0x1f')],function(_0x4ec241){return{'model':db[_0x4ec241[_0xea67('0x21')]],'as':_0x4ec241['as'],'attributes':_0x4ec241[_0xea67('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x11ce00){logger['info'](_0xea67('0x23'),_0x5f1f29);logger[_0xea67('0x11')](_0xea67('0x23'),_0x5f1f29,JSON[_0xea67('0x12')](_0x11ce00));_0x3054d6(_0x11ce00);})['catch'](function(_0x3d132b){logger[_0xea67('0x13')]('ShowChatQueue',_0x3d132b['message'],_0x5f1f29);_0x5bad56(_0xe7cb99['error'](0x1f4,_0x3d132b[_0xea67('0x15')]));});});};
\ No newline at end of file
+var _0x1a83=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','error','code','message','result','GetChatQueue','ChatQueue','findAll','options','raw','where','limit','map','include','model','attributes','then','debug','stringify','ShowChatQueue','find','catch','lodash','util','moment'];(function(_0x2b8077,_0x453634){var _0x308091=function(_0x426df7){while(--_0x426df7){_0x2b8077['push'](_0x2b8077['shift']());}};_0x308091(++_0x453634);}(_0x1a83,0x1c0));var _0x31a8=function(_0xee1b2e,_0x34f7bd){_0xee1b2e=_0xee1b2e-0x0;var _0x5bf13c=_0x1a83[_0xee1b2e];return _0x5bf13c;};'use strict';var _=require(_0x31a8('0x0'));var util=require(_0x31a8('0x1'));var moment=require(_0x31a8('0x2'));var BPromise=require('bluebird');var rs=require(_0x31a8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x31a8('0x4'))['db'];var utils=require(_0x31a8('0x5'));var logger=require(_0x31a8('0x6'))(_0x31a8('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x31a8('0x8')][_0x31a8('0x9')]({'port':0x232a});config[_0x31a8('0xa')]=_[_0x31a8('0xb')](config[_0x31a8('0xa')],{'host':_0x31a8('0xc'),'port':0x18eb});var socket=require(_0x31a8('0xd'))(new Redis(config[_0x31a8('0xa')]));require(_0x31a8('0xe'))[_0x31a8('0xf')](socket);function respondWithRpcPromise(_0x4f1881,_0x310a3c,_0x486ab0){return new BPromise(function(_0x4a1446,_0x3b0e78){return client[_0x31a8('0x10')](_0x4f1881,_0x486ab0)['then'](function(_0x2b5927){logger[_0x31a8('0x11')](_0x31a8('0x12'),_0x310a3c,_0x31a8('0x13'));logger['debug']('ChatQueue,\x20%s,\x20%s,\x20%s',_0x310a3c,_0x31a8('0x13'),JSON['stringify'](_0x2b5927));if(_0x2b5927[_0x31a8('0x14')]){if(_0x2b5927['error'][_0x31a8('0x15')]===0x1f4){logger[_0x31a8('0x14')](_0x31a8('0x12'),_0x310a3c,_0x2b5927['error'][_0x31a8('0x16')]);return _0x3b0e78(_0x2b5927[_0x31a8('0x14')]['message']);}logger[_0x31a8('0x14')]('ChatQueue,\x20%s,\x20%s',_0x310a3c,_0x2b5927[_0x31a8('0x14')][_0x31a8('0x16')]);return _0x4a1446(_0x2b5927['error'][_0x31a8('0x16')]);}else{logger[_0x31a8('0x11')](_0x31a8('0x12'),_0x310a3c,_0x31a8('0x13'));_0x4a1446(_0x2b5927[_0x31a8('0x17')][_0x31a8('0x16')]);}})['catch'](function(_0x44b4f2){logger[_0x31a8('0x14')]('ChatQueue,\x20%s,\x20%s',_0x310a3c,_0x44b4f2);_0x3b0e78(_0x44b4f2);});});}exports[_0x31a8('0x18')]=function(_0x35475a){var _0x44a515=this;return new Promise(function(_0x228e79,_0x552af8){return db[_0x31a8('0x19')][_0x31a8('0x1a')]({'raw':_0x35475a[_0x31a8('0x1b')]?_0x35475a[_0x31a8('0x1b')][_0x31a8('0x1c')]===undefined?!![]:![]:!![],'where':_0x35475a[_0x31a8('0x1b')]?_0x35475a[_0x31a8('0x1b')][_0x31a8('0x1d')]||null:null,'attributes':_0x35475a[_0x31a8('0x1b')]?_0x35475a['options']['attributes']||null:null,'limit':_0x35475a[_0x31a8('0x1b')]?_0x35475a['options'][_0x31a8('0x1e')]||null:null,'include':_0x35475a[_0x31a8('0x1b')]?_0x35475a[_0x31a8('0x1b')]['include']?_[_0x31a8('0x1f')](_0x35475a[_0x31a8('0x1b')][_0x31a8('0x20')],function(_0x36a7b1){return{'model':db[_0x36a7b1[_0x31a8('0x21')]],'as':_0x36a7b1['as'],'attributes':_0x36a7b1[_0x31a8('0x22')],'include':_0x36a7b1[_0x31a8('0x20')]?_['map'](_0x36a7b1[_0x31a8('0x20')],function(_0x4a1e58){return{'model':db[_0x4a1e58[_0x31a8('0x21')]],'as':_0x4a1e58['as'],'attributes':_0x4a1e58[_0x31a8('0x22')],'include':_0x4a1e58[_0x31a8('0x20')]?_[_0x31a8('0x1f')](_0x4a1e58['include'],function(_0x510641){return{'model':db[_0x510641['model']],'as':_0x510641['as'],'attributes':_0x510641['attributes']};}):[]};}):[]};}):[]:[]})[_0x31a8('0x23')](function(_0x2e5165){logger[_0x31a8('0x11')](_0x31a8('0x18'),_0x35475a);logger[_0x31a8('0x24')]('GetChatQueue',_0x35475a,JSON[_0x31a8('0x25')](_0x2e5165));_0x228e79(_0x2e5165);})['catch'](function(_0x5aa4a4){logger[_0x31a8('0x14')](_0x31a8('0x18'),_0x5aa4a4[_0x31a8('0x16')],_0x35475a);_0x552af8(_0x44a515[_0x31a8('0x14')](0x1f4,_0x5aa4a4[_0x31a8('0x16')]));});});};exports[_0x31a8('0x26')]=function(_0x362ff1){var _0x32aafb=this;return new Promise(function(_0x5652ac,_0x4074c1){return db['ChatQueue'][_0x31a8('0x27')]({'raw':_0x362ff1[_0x31a8('0x1b')]?_0x362ff1['options']['raw']===undefined?!![]:![]:!![],'where':_0x362ff1[_0x31a8('0x1b')]?_0x362ff1[_0x31a8('0x1b')][_0x31a8('0x1d')]||null:null,'attributes':_0x362ff1[_0x31a8('0x1b')]?_0x362ff1['options'][_0x31a8('0x22')]||null:null,'include':_0x362ff1[_0x31a8('0x1b')]?_0x362ff1['options']['include']?_[_0x31a8('0x1f')](_0x362ff1[_0x31a8('0x1b')]['include'],function(_0x595f42){return{'model':db[_0x595f42[_0x31a8('0x21')]],'as':_0x595f42['as'],'attributes':_0x595f42[_0x31a8('0x22')],'include':_0x595f42['include']?_[_0x31a8('0x1f')](_0x595f42[_0x31a8('0x20')],function(_0x2e213a){return{'model':db[_0x2e213a['model']],'as':_0x2e213a['as'],'attributes':_0x2e213a['attributes'],'include':_0x2e213a[_0x31a8('0x20')]?_[_0x31a8('0x1f')](_0x2e213a[_0x31a8('0x20')],function(_0x53815b){return{'model':db[_0x53815b['model']],'as':_0x53815b['as'],'attributes':_0x53815b[_0x31a8('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1a93a1){logger['info']('ShowChatQueue',_0x362ff1);logger[_0x31a8('0x24')](_0x31a8('0x26'),_0x362ff1,JSON[_0x31a8('0x25')](_0x1a93a1));_0x5652ac(_0x1a93a1);})[_0x31a8('0x28')](function(_0x4f611d){logger['error'](_0x31a8('0x26'),_0x4f611d['message'],_0x362ff1);_0x4074c1(_0x32aafb[_0x31a8('0x14')](0x1f4,_0x4f611d['message']));});});};
\ No newline at end of file
index 6f36ff1..f1ba74f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b9b=['save','emit','removeListener','register','length','chatQueue:'];(function(_0x2580cc,_0xd6dbe3){var _0xae6d3e=function(_0x19ed88){while(--_0x19ed88){_0x2580cc['push'](_0x2580cc['shift']());}};_0xae6d3e(++_0xd6dbe3);}(_0x9b9b,0x114));var _0xb9b9=function(_0xf7831f,_0x1c6188){_0xf7831f=_0xf7831f-0x0;var _0x3f88e7=_0x9b9b[_0xf7831f];return _0x3f88e7;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0xb9b9('0x0'),'remove','update'];function createListener(_0x2ae8a0,_0x153734){return function(_0x1adf50){_0x153734[_0xb9b9('0x1')](_0x2ae8a0,_0x1adf50);};}function removeListener(_0x1d6ab6,_0x43c8ff){return function(){ChatQueueEvents[_0xb9b9('0x2')](_0x1d6ab6,_0x43c8ff);};}exports[_0xb9b9('0x3')]=function(_0x79dd){for(var _0x3d1a95=0x0,_0x85eec=events[_0xb9b9('0x4')];_0x3d1a95<_0x85eec;_0x3d1a95++){var _0x5be5bc=events[_0x3d1a95];var _0x297cb6=createListener(_0xb9b9('0x5')+_0x5be5bc,_0x79dd);ChatQueueEvents['on'](_0x5be5bc,_0x297cb6);}};
\ No newline at end of file
+var _0x55e0=['emit','removeListener','register','chatQueue:','./chatQueue.events','save','remove','update'];(function(_0x21c2c8,_0x44257e){var _0x4dd745=function(_0x1b3196){while(--_0x1b3196){_0x21c2c8['push'](_0x21c2c8['shift']());}};_0x4dd745(++_0x44257e);}(_0x55e0,0xdc));var _0x055e=function(_0x37fbfa,_0xfc2d47){_0x37fbfa=_0x37fbfa-0x0;var _0x55296f=_0x55e0[_0x37fbfa];return _0x55296f;};'use strict';var ChatQueueEvents=require(_0x055e('0x0'));var events=[_0x055e('0x1'),_0x055e('0x2'),_0x055e('0x3')];function createListener(_0x5b82b9,_0x578882){return function(_0x3a2ee6){_0x578882[_0x055e('0x4')](_0x5b82b9,_0x3a2ee6);};}function removeListener(_0x33cd7b,_0x2773e4){return function(){ChatQueueEvents[_0x055e('0x5')](_0x33cd7b,_0x2773e4);};}exports[_0x055e('0x6')]=function(_0x490ee1){for(var _0x5239f6=0x0,_0x4384ff=events['length'];_0x5239f6<_0x4384ff;_0x5239f6++){var _0x8e7824=events[_0x5239f6];var _0x3c4cf=createListener(_0x055e('0x7')+_0x8e7824,_0x490ee1);ChatQueueEvents['on'](_0x8e7824,_0x3c4cf);}};
\ No newline at end of file
index 7cd5898..78ac76c 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(_0x5077e4,_0x27fc17){var _0x508e23=function(_0x3b1e44){while(--_0x3b1e44){_0x5077e4['push'](_0x5077e4['shift']());}};_0x508e23(++_0x27fc17);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/teams',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x14')](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x17')]);router[_0x7995('0x18')](_0x7995('0x19'),auth[_0x7995('0xa')](),controller['update']);router[_0x7995('0x1a')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0x1b')]);router[_0x7995('0x1a')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router['delete']('/:id/users',auth[_0x7995('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x5fc3=['update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','describe','/:id','show','getMembers','/:id/teams','/:id/users','post','create','addTeams','put'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0x5fc3,0xa8));var _0x35fc=function(_0x53b594,_0x559767){_0x53b594=_0x53b594-0x0;var _0x1e616f=_0x5fc3[_0x53b594];return _0x1e616f;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x35fc('0x9')]('/describe',auth[_0x35fc('0xa')](),controller[_0x35fc('0xb')]);router[_0x35fc('0x9')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0xd')]);router[_0x35fc('0x9')]('/:id/members',auth[_0x35fc('0xa')](),controller[_0x35fc('0xe')]);router['get'](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller['getTeams']);router[_0x35fc('0x9')](_0x35fc('0x10'),auth['isAuthenticated'](),controller['getAgents']);router[_0x35fc('0x11')]('/',auth['isAuthenticated'](),controller[_0x35fc('0x12')]);router[_0x35fc('0x11')](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x13')]);router['post']('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0x35fc('0x14')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x15')]);router[_0x35fc('0x16')](_0x35fc('0xc'),auth['isAuthenticated'](),controller[_0x35fc('0x17')]);router[_0x35fc('0x16')]('/:id/teams',auth[_0x35fc('0xa')](),controller[_0x35fc('0x18')]);router[_0x35fc('0x16')]('/:id/users',auth[_0x35fc('0xa')](),controller[_0x35fc('0x19')]);module[_0x35fc('0x1a')]=router;
\ No newline at end of file
index b19c232..b74c9fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f84=['moment','sequelize','exports','STRING','DATE'];(function(_0x1945a5,_0x50de54){var _0x5817a5=function(_0x2a5a93){while(--_0x2a5a93){_0x1945a5['push'](_0x1945a5['shift']());}};_0x5817a5(++_0x50de54);}(_0x1f84,0x1b3));var _0x41f8=function(_0x53e0f1,_0x3bbca3){_0x53e0f1=_0x53e0f1-0x0;var _0x332f2a=_0x1f84[_0x53e0f1];return _0x332f2a;};'use strict';var moment=require(_0x41f8('0x0'));var Sequelize=require(_0x41f8('0x1'));module[_0x41f8('0x2')]={'uniqueid':{'type':Sequelize[_0x41f8('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x41f8('0x3')]},'joinAt':{'type':Sequelize[_0x41f8('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x41f8('0x4')]},'exitAt':{'type':Sequelize[_0x41f8('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9f92=['DATE','moment','exports','STRING'];(function(_0x45161c,_0x5494fc){var _0x186581=function(_0x78fada){while(--_0x78fada){_0x45161c['push'](_0x45161c['shift']());}};_0x186581(++_0x5494fc);}(_0x9f92,0x199));var _0x29f9=function(_0x9e575,_0x5894d4){_0x9e575=_0x9e575-0x0;var _0x522277=_0x9f92[_0x9e575];return _0x522277;};'use strict';var moment=require(_0x29f9('0x0'));var Sequelize=require('sequelize');module[_0x29f9('0x1')]={'uniqueid':{'type':Sequelize[_0x29f9('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x29f9('0x3')]},'leaveAt':{'type':Sequelize[_0x29f9('0x3')]},'acceptAt':{'type':Sequelize[_0x29f9('0x3')]},'exitAt':{'type':Sequelize[_0x29f9('0x3')]},'reason':{'type':Sequelize[_0x29f9('0x2')]}};
\ No newline at end of file
index 0497fa3..e5b9e8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8af=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','ChatQueueReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','merge','type','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv'];(function(_0x5dd48d,_0x358c1f){var _0x2a45e9=function(_0x1823b1){while(--_0x1823b1){_0x5dd48d['push'](_0x5dd48d['shift']());}};_0x2a45e9(++_0x358c1f);}(_0xf8af,0x8b));var _0xff8a=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xf8af[_0x2be8c2];return _0x97f531;};'use strict';var emlformat=require(_0xff8a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xff8a('0x1'));var jsonpatch=require(_0xff8a('0x2'));var rp=require(_0xff8a('0x3'));var moment=require(_0xff8a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xff8a('0x5'));var util=require(_0xff8a('0x6'));var path=require(_0xff8a('0x7'));var sox=require(_0xff8a('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xff8a('0x9'));var _=require('lodash');var squel=require(_0xff8a('0xa'));var crypto=require(_0xff8a('0xb'));var jsforce=require(_0xff8a('0xc'));var deskjs=require(_0xff8a('0xd'));var toCsv=require(_0xff8a('0xe'));var querystring=require(_0xff8a('0xf'));var Papa=require(_0xff8a('0x10'));var Redis=require(_0xff8a('0x11'));var authService=require(_0xff8a('0x12'));var qs=require(_0xff8a('0x13'));var as=require(_0xff8a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xff8a('0x15'))(_0xff8a('0x16'));var utils=require(_0xff8a('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xff8a('0x18'));var db=require(_0xff8a('0x19'))['db'];function respondWithStatusCode(_0x252271,_0x40bf06){_0x40bf06=_0x40bf06||0xcc;return function(_0x244e69){if(_0x244e69){return _0x252271['sendStatus'](_0x40bf06);}return _0x252271[_0xff8a('0x1a')](_0x40bf06)[_0xff8a('0x1b')]();};}function respondWithResult(_0xf81533,_0x1cd47d){_0x1cd47d=_0x1cd47d||0xc8;return function(_0x5d793b){if(_0x5d793b){return _0xf81533['status'](_0x1cd47d)['json'](_0x5d793b);}};}function respondWithFilteredResult(_0x4a5e6e,_0x2f83df){return function(_0x569b15){if(_0x569b15){var _0x279441=typeof _0x2f83df[_0xff8a('0x1c')]==='undefined'&&typeof _0x2f83df[_0xff8a('0x1d')]==='undefined';var _0x5ed382=_0x569b15[_0xff8a('0x1e')];var _0x68524a=_0x279441?0x0:_0x2f83df[_0xff8a('0x1c')];var _0x55a187=_0x279441?_0x569b15[_0xff8a('0x1e')]:_0x2f83df['offset']+_0x2f83df[_0xff8a('0x1d')];var _0x4bb5ec;if(_0x55a187>=_0x5ed382){_0x55a187=_0x5ed382;_0x4bb5ec=0xc8;}else{_0x4bb5ec=0xce;}_0x4a5e6e[_0xff8a('0x1a')](_0x4bb5ec);return _0x4a5e6e[_0xff8a('0x1f')](_0xff8a('0x20'),_0x68524a+'-'+_0x55a187+'/'+_0x5ed382)[_0xff8a('0x21')](_0x569b15);}return null;};}function patchUpdates(_0x145d95){return function(_0x33ee52){try{jsonpatch[_0xff8a('0x22')](_0x33ee52,_0x145d95,!![]);}catch(_0x1ba1f1){return BPromise[_0xff8a('0x23')](_0x1ba1f1);}return _0x33ee52[_0xff8a('0x24')]();};}function saveUpdates(_0x1fc147,_0x2d0fc2){return function(_0x3bb4ac){if(_0x3bb4ac){return _0x3bb4ac[_0xff8a('0x25')](_0x1fc147)[_0xff8a('0x26')](function(_0x5e7897){return _0x5e7897;});}return null;};}function removeEntity(_0x10e205,_0x491322){return function(_0x2d6d8f){if(_0x2d6d8f){return _0x2d6d8f[_0xff8a('0x27')]()['then'](function(){_0x10e205[_0xff8a('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c9ecc,_0x3f03ce){return function(_0x2c67c2){if(!_0x2c67c2){_0x1c9ecc[_0xff8a('0x28')](0x194);}return _0x2c67c2;};}function handleError(_0x375285,_0x55b267){_0x55b267=_0x55b267||0x1f4;return function(_0x2c57c9){logger[_0xff8a('0x29')](_0x2c57c9[_0xff8a('0x2a')]);if(_0x2c57c9['name']){delete _0x2c57c9[_0xff8a('0x2b')];}_0x375285[_0xff8a('0x1a')](_0x55b267)[_0xff8a('0x2c')](_0x2c57c9);};}exports[_0xff8a('0x2d')]=function(_0x38188f,_0xba33b6){var _0x20ac09={},_0x59b6d4={},_0x4ca17e={'count':0x0,'rows':[]};var _0x1fc2a8=_[_0xff8a('0x2e')](db[_0xff8a('0x2f')][_0xff8a('0x30')],function(_0x430cbd){return{'name':_0x430cbd[_0xff8a('0x31')],'type':_0x430cbd['type'][_0xff8a('0x32')]};});_0x59b6d4[_0xff8a('0x33')]=_['map'](_0x1fc2a8,_0xff8a('0x2b'));_0x59b6d4[_0xff8a('0x34')]=_[_0xff8a('0x35')](_0x38188f['query']);_0x59b6d4[_0xff8a('0x36')]=_[_0xff8a('0x37')](_0x59b6d4['model'],_0x59b6d4[_0xff8a('0x34')]);_0x20ac09[_0xff8a('0x38')]=_[_0xff8a('0x37')](_0x59b6d4[_0xff8a('0x33')],qs[_0xff8a('0x39')](_0x38188f[_0xff8a('0x34')][_0xff8a('0x39')]));_0x20ac09[_0xff8a('0x38')]=_0x20ac09[_0xff8a('0x38')]['length']?_0x20ac09[_0xff8a('0x38')]:_0x59b6d4[_0xff8a('0x33')];if(!_0x38188f['query'][_0xff8a('0x3a')](_0xff8a('0x3b'))){_0x20ac09[_0xff8a('0x1d')]=qs[_0xff8a('0x1d')](_0x38188f[_0xff8a('0x34')][_0xff8a('0x1d')]);_0x20ac09[_0xff8a('0x1c')]=qs[_0xff8a('0x1c')](_0x38188f[_0xff8a('0x34')]['offset']);}_0x20ac09['order']=qs[_0xff8a('0x3c')](_0x38188f[_0xff8a('0x34')]['sort']);_0x20ac09[_0xff8a('0x3d')]=qs[_0xff8a('0x36')](_['pick'](_0x38188f['query'],_0x59b6d4['filters']),_0x1fc2a8);if(_0x38188f[_0xff8a('0x34')][_0xff8a('0x3e')]){_0x20ac09['where']=_[_0xff8a('0x3f')](_0x20ac09[_0xff8a('0x3d')],{'$or':_[_0xff8a('0x2e')](_0x1fc2a8,function(_0x552710){if(_0x552710[_0xff8a('0x40')]!=='VIRTUAL'){var _0x2e7ac7={};_0x2e7ac7[_0x552710[_0xff8a('0x2b')]]={'$like':'%'+_0x38188f['query'][_0xff8a('0x3e')]+'%'};return _0x2e7ac7;}})});}_0x20ac09=_['merge']({},_0x20ac09,_0x38188f['options']);var _0x1ef830={'where':_0x20ac09[_0xff8a('0x3d')]};return db[_0xff8a('0x2f')][_0xff8a('0x1e')](_0x1ef830)[_0xff8a('0x26')](function(_0x4a28d0){_0x4ca17e[_0xff8a('0x1e')]=_0x4a28d0;if(_0x38188f['query'][_0xff8a('0x41')]){_0x20ac09[_0xff8a('0x42')]=[{'all':!![]}];}return db[_0xff8a('0x2f')][_0xff8a('0x43')](_0x20ac09);})[_0xff8a('0x26')](function(_0x2ab2e6){_0x4ca17e[_0xff8a('0x44')]=_0x2ab2e6;return _0x4ca17e;})['then'](respondWithFilteredResult(_0xba33b6,_0x20ac09))[_0xff8a('0x45')](handleError(_0xba33b6,null));};exports[_0xff8a('0x46')]=function(_0x2ba136,_0x273f26){var _0x2705e8={'raw':!![],'where':{'id':_0x2ba136[_0xff8a('0x47')]['id']}},_0x3a3152={};_0x3a3152[_0xff8a('0x33')]=_[_0xff8a('0x35')](db['ChatQueueReport'][_0xff8a('0x30')]);_0x3a3152['query']=_[_0xff8a('0x35')](_0x2ba136[_0xff8a('0x34')]);_0x3a3152[_0xff8a('0x36')]=_[_0xff8a('0x37')](_0x3a3152[_0xff8a('0x33')],_0x3a3152[_0xff8a('0x34')]);_0x2705e8[_0xff8a('0x38')]=_[_0xff8a('0x37')](_0x3a3152[_0xff8a('0x33')],qs[_0xff8a('0x39')](_0x2ba136[_0xff8a('0x34')]['fields']));_0x2705e8[_0xff8a('0x38')]=_0x2705e8[_0xff8a('0x38')][_0xff8a('0x48')]?_0x2705e8[_0xff8a('0x38')]:_0x3a3152[_0xff8a('0x33')];if(_0x2ba136['query'][_0xff8a('0x41')]){_0x2705e8[_0xff8a('0x42')]=[{'all':!![]}];}_0x2705e8=_[_0xff8a('0x3f')]({},_0x2705e8,_0x2ba136['options']);return db['ChatQueueReport'][_0xff8a('0x49')](_0x2705e8)[_0xff8a('0x26')](handleEntityNotFound(_0x273f26,null))[_0xff8a('0x26')](respondWithResult(_0x273f26,null))[_0xff8a('0x45')](handleError(_0x273f26,null));};exports['create']=function(_0x9873eb,_0x14c189){return db[_0xff8a('0x2f')][_0xff8a('0x4a')](_0x9873eb[_0xff8a('0x4b')],{})[_0xff8a('0x26')](respondWithResult(_0x14c189,0xc9))[_0xff8a('0x45')](handleError(_0x14c189,null));};exports[_0xff8a('0x25')]=function(_0x349573,_0x17fd91){if(_0x349573[_0xff8a('0x4b')]['id']){delete _0x349573['body']['id'];}return db[_0xff8a('0x2f')][_0xff8a('0x49')]({'where':{'id':_0x349573['params']['id']}})[_0xff8a('0x26')](handleEntityNotFound(_0x17fd91,null))[_0xff8a('0x26')](saveUpdates(_0x349573['body'],null))[_0xff8a('0x26')](respondWithResult(_0x17fd91,null))[_0xff8a('0x45')](handleError(_0x17fd91,null));};exports[_0xff8a('0x27')]=function(_0x90ea1f,_0x29cc35){return db[_0xff8a('0x2f')][_0xff8a('0x49')]({'where':{'id':_0x90ea1f[_0xff8a('0x47')]['id']}})[_0xff8a('0x26')](handleEntityNotFound(_0x29cc35,null))[_0xff8a('0x26')](removeEntity(_0x29cc35,null))[_0xff8a('0x45')](handleError(_0x29cc35,null));};exports[_0xff8a('0x4c')]=function(_0x3d415,_0x2e47ca){return db['ChatQueueReport'][_0xff8a('0x4c')]()[_0xff8a('0x26')](respondWithResult(_0x2e47ca,null))[_0xff8a('0x45')](handleError(_0x2e47ca,null));};
\ No newline at end of file
+var _0x77d4=['save','update','then','error','stack','name','send','index','map','ChatQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','filter','options','includeAll','findAll','rows','catch','show','params','include','merge','find','create','body','describe','rimraf','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','json','apply','reject'];(function(_0x4af01e,_0x543f5c){var _0x178c11=function(_0x2c2f76){while(--_0x2c2f76){_0x4af01e['push'](_0x4af01e['shift']());}};_0x178c11(++_0x543f5c);}(_0x77d4,0x108));var _0x477d=function(_0x1d5d3f,_0x3a9d08){_0x1d5d3f=_0x1d5d3f-0x0;var _0x6f9221=_0x77d4[_0x1d5d3f];return _0x6f9221;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x477d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x477d('0x1'));var rp=require('request-promise');var moment=require(_0x477d('0x2'));var BPromise=require(_0x477d('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x477d('0x4'));var sox=require(_0x477d('0x5'));var csv=require(_0x477d('0x6'));var ejs=require(_0x477d('0x7'));var fs=require('fs');var fs_extra=require(_0x477d('0x8'));var _=require(_0x477d('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x477d('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x477d('0xb'));var Papa=require(_0x477d('0xc'));var Redis=require(_0x477d('0xd'));var authService=require(_0x477d('0xe'));var qs=require(_0x477d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x477d('0x10'));var logger=require('../../config/logger')(_0x477d('0x11'));var utils=require(_0x477d('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x477d('0x13'));var db=require(_0x477d('0x14'))['db'];function respondWithStatusCode(_0x5a190c,_0x5dd33c){_0x5dd33c=_0x5dd33c||0xcc;return function(_0x6ff724){if(_0x6ff724){return _0x5a190c[_0x477d('0x15')](_0x5dd33c);}return _0x5a190c['status'](_0x5dd33c)[_0x477d('0x16')]();};}function respondWithResult(_0x1d5699,_0x48c73a){_0x48c73a=_0x48c73a||0xc8;return function(_0x4b2021){if(_0x4b2021){return _0x1d5699[_0x477d('0x17')](_0x48c73a)['json'](_0x4b2021);}};}function respondWithFilteredResult(_0x30481f,_0x234b99){return function(_0x25fc02){if(_0x25fc02){var _0x5985b5=typeof _0x234b99[_0x477d('0x18')]===_0x477d('0x19')&&typeof _0x234b99[_0x477d('0x1a')]===_0x477d('0x19');var _0x57b38e=_0x25fc02[_0x477d('0x1b')];var _0x5d5553=_0x5985b5?0x0:_0x234b99[_0x477d('0x18')];var _0x1399d7=_0x5985b5?_0x25fc02[_0x477d('0x1b')]:_0x234b99[_0x477d('0x18')]+_0x234b99[_0x477d('0x1a')];var _0x2145ce;if(_0x1399d7>=_0x57b38e){_0x1399d7=_0x57b38e;_0x2145ce=0xc8;}else{_0x2145ce=0xce;}_0x30481f['status'](_0x2145ce);return _0x30481f[_0x477d('0x1c')]('Content-Range',_0x5d5553+'-'+_0x1399d7+'/'+_0x57b38e)[_0x477d('0x1d')](_0x25fc02);}return null;};}function patchUpdates(_0x24a6d5){return function(_0x40256e){try{jsonpatch[_0x477d('0x1e')](_0x40256e,_0x24a6d5,!![]);}catch(_0x27b3aa){return BPromise[_0x477d('0x1f')](_0x27b3aa);}return _0x40256e[_0x477d('0x20')]();};}function saveUpdates(_0x17154d,_0x45a8bd){return function(_0x5981a){if(_0x5981a){return _0x5981a[_0x477d('0x21')](_0x17154d)[_0x477d('0x22')](function(_0x43c845){return _0x43c845;});}return null;};}function removeEntity(_0x1f3868,_0x4e6a44){return function(_0x4481b0){if(_0x4481b0){return _0x4481b0['destroy']()[_0x477d('0x22')](function(){_0x1f3868[_0x477d('0x17')](0xcc)[_0x477d('0x16')]();});}};}function handleEntityNotFound(_0x2287b4,_0x4bb50e){return function(_0xd6dca5){if(!_0xd6dca5){_0x2287b4[_0x477d('0x15')](0x194);}return _0xd6dca5;};}function handleError(_0x1ca4fe,_0x48ee5e){_0x48ee5e=_0x48ee5e||0x1f4;return function(_0x585648){logger[_0x477d('0x23')](_0x585648[_0x477d('0x24')]);if(_0x585648[_0x477d('0x25')]){delete _0x585648['name'];}_0x1ca4fe[_0x477d('0x17')](_0x48ee5e)[_0x477d('0x26')](_0x585648);};}exports[_0x477d('0x27')]=function(_0xe4dd40,_0x37b332){var _0x537fc4={},_0x2fc959={},_0xeb02f5={'count':0x0,'rows':[]};var _0x17dd16=_[_0x477d('0x28')](db[_0x477d('0x29')][_0x477d('0x2a')],function(_0x180046){return{'name':_0x180046[_0x477d('0x2b')],'type':_0x180046[_0x477d('0x2c')][_0x477d('0x2d')]};});_0x2fc959[_0x477d('0x2e')]=_[_0x477d('0x28')](_0x17dd16,_0x477d('0x25'));_0x2fc959[_0x477d('0x2f')]=_[_0x477d('0x30')](_0xe4dd40[_0x477d('0x2f')]);_0x2fc959[_0x477d('0x31')]=_[_0x477d('0x32')](_0x2fc959[_0x477d('0x2e')],_0x2fc959[_0x477d('0x2f')]);_0x537fc4['attributes']=_[_0x477d('0x32')](_0x2fc959['model'],qs[_0x477d('0x33')](_0xe4dd40[_0x477d('0x2f')][_0x477d('0x33')]));_0x537fc4['attributes']=_0x537fc4[_0x477d('0x34')][_0x477d('0x35')]?_0x537fc4[_0x477d('0x34')]:_0x2fc959[_0x477d('0x2e')];if(!_0xe4dd40[_0x477d('0x2f')][_0x477d('0x36')](_0x477d('0x37'))){_0x537fc4[_0x477d('0x1a')]=qs[_0x477d('0x1a')](_0xe4dd40[_0x477d('0x2f')]['limit']);_0x537fc4[_0x477d('0x18')]=qs[_0x477d('0x18')](_0xe4dd40[_0x477d('0x2f')]['offset']);}_0x537fc4[_0x477d('0x38')]=qs[_0x477d('0x39')](_0xe4dd40[_0x477d('0x2f')]['sort']);_0x537fc4['where']=qs[_0x477d('0x31')](_[_0x477d('0x3a')](_0xe4dd40[_0x477d('0x2f')],_0x2fc959[_0x477d('0x31')]),_0x17dd16);if(_0xe4dd40[_0x477d('0x2f')]['filter']){_0x537fc4[_0x477d('0x3b')]=_['merge'](_0x537fc4[_0x477d('0x3b')],{'$or':_[_0x477d('0x28')](_0x17dd16,function(_0x356f41){if(_0x356f41['type']!=='VIRTUAL'){var _0x184d50={};_0x184d50[_0x356f41[_0x477d('0x25')]]={'$like':'%'+_0xe4dd40[_0x477d('0x2f')][_0x477d('0x3c')]+'%'};return _0x184d50;}})});}_0x537fc4=_['merge']({},_0x537fc4,_0xe4dd40[_0x477d('0x3d')]);var _0xc091e={'where':_0x537fc4[_0x477d('0x3b')]};return db[_0x477d('0x29')][_0x477d('0x1b')](_0xc091e)['then'](function(_0x472149){_0xeb02f5[_0x477d('0x1b')]=_0x472149;if(_0xe4dd40['query'][_0x477d('0x3e')]){_0x537fc4['include']=[{'all':!![]}];}return db[_0x477d('0x29')][_0x477d('0x3f')](_0x537fc4);})[_0x477d('0x22')](function(_0x335b2a){_0xeb02f5[_0x477d('0x40')]=_0x335b2a;return _0xeb02f5;})[_0x477d('0x22')](respondWithFilteredResult(_0x37b332,_0x537fc4))[_0x477d('0x41')](handleError(_0x37b332,null));};exports[_0x477d('0x42')]=function(_0x43ffd1,_0x4c22f5){var _0x5759f={'raw':!![],'where':{'id':_0x43ffd1[_0x477d('0x43')]['id']}},_0x31c9a1={};_0x31c9a1[_0x477d('0x2e')]=_['keys'](db['ChatQueueReport'][_0x477d('0x2a')]);_0x31c9a1[_0x477d('0x2f')]=_['keys'](_0x43ffd1[_0x477d('0x2f')]);_0x31c9a1['filters']=_['intersection'](_0x31c9a1[_0x477d('0x2e')],_0x31c9a1[_0x477d('0x2f')]);_0x5759f[_0x477d('0x34')]=_[_0x477d('0x32')](_0x31c9a1[_0x477d('0x2e')],qs[_0x477d('0x33')](_0x43ffd1['query'][_0x477d('0x33')]));_0x5759f[_0x477d('0x34')]=_0x5759f[_0x477d('0x34')][_0x477d('0x35')]?_0x5759f[_0x477d('0x34')]:_0x31c9a1['model'];if(_0x43ffd1['query'][_0x477d('0x3e')]){_0x5759f[_0x477d('0x44')]=[{'all':!![]}];}_0x5759f=_[_0x477d('0x45')]({},_0x5759f,_0x43ffd1['options']);return db[_0x477d('0x29')][_0x477d('0x46')](_0x5759f)[_0x477d('0x22')](handleEntityNotFound(_0x4c22f5,null))[_0x477d('0x22')](respondWithResult(_0x4c22f5,null))[_0x477d('0x41')](handleError(_0x4c22f5,null));};exports[_0x477d('0x47')]=function(_0x13f606,_0x4d4e19){return db[_0x477d('0x29')][_0x477d('0x47')](_0x13f606[_0x477d('0x48')],{})[_0x477d('0x22')](respondWithResult(_0x4d4e19,0xc9))[_0x477d('0x41')](handleError(_0x4d4e19,null));};exports[_0x477d('0x21')]=function(_0x2aad84,_0x30e474){if(_0x2aad84[_0x477d('0x48')]['id']){delete _0x2aad84[_0x477d('0x48')]['id'];}return db[_0x477d('0x29')][_0x477d('0x46')]({'where':{'id':_0x2aad84[_0x477d('0x43')]['id']}})[_0x477d('0x22')](handleEntityNotFound(_0x30e474,null))[_0x477d('0x22')](saveUpdates(_0x2aad84['body'],null))[_0x477d('0x22')](respondWithResult(_0x30e474,null))[_0x477d('0x41')](handleError(_0x30e474,null));};exports['destroy']=function(_0x566ba0,_0x5cb3ca){return db[_0x477d('0x29')][_0x477d('0x46')]({'where':{'id':_0x566ba0[_0x477d('0x43')]['id']}})[_0x477d('0x22')](handleEntityNotFound(_0x5cb3ca,null))[_0x477d('0x22')](removeEntity(_0x5cb3ca,null))[_0x477d('0x41')](handleError(_0x5cb3ca,null));};exports[_0x477d('0x49')]=function(_0x342f18,_0x593faf){return db[_0x477d('0x29')][_0x477d('0x49')]()[_0x477d('0x22')](respondWithResult(_0x593faf,null))[_0x477d('0x41')](handleError(_0x593faf,null));};
\ No newline at end of file
index fc6ce7d..823137c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid'];(function(_0x427217,_0x4039b1){var _0x5b28fb=function(_0x3eaa08){while(--_0x3eaa08){_0x427217['push'](_0x427217['shift']());}};_0x5b28fb(++_0x4039b1);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var moment=require(_0x3071('0x2'));var BPromise=require(_0x3071('0x3'));var rp=require(_0x3071('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var attributes=require(_0x3071('0x7'));module[_0x3071('0x8')]=function(_0xabd7b6,_0x41cf76){return _0xabd7b6[_0x3071('0x9')](_0x3071('0xa'),attributes,{'tableName':_0x3071('0xb'),'paranoid':![],'indexes':[{'name':_0x3071('0xc'),'fields':[_0x3071('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid','lodash','util'];(function(_0x5ac94d,_0x5d3a8c){var _0x563863=function(_0x39285d){while(--_0x39285d){_0x5ac94d['push'](_0x5ac94d['shift']());}};_0x563863(++_0x5d3a8c);}(_0xe706,0xa3));var _0x6e70=function(_0x44b057,_0x4f87f2){_0x44b057=_0x44b057-0x0;var _0x440a12=_0xe706[_0x44b057];return _0x440a12;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));module[_0x6e70('0xa')]=function(_0x1b0389,_0x4381d1){return _0x1b0389[_0x6e70('0xb')](_0x6e70('0xc'),attributes,{'tableName':_0x6e70('0xd'),'paranoid':![],'indexes':[{'name':_0x6e70('0xe'),'fields':[_0x6e70('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 0c92a46..1dc9551 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa568=['util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','stringify','UpdateChatQueueReport','where','limit','lodash'];(function(_0x478200,_0x2240e2){var _0x287b43=function(_0x483ea8){while(--_0x483ea8){_0x478200['push'](_0x478200['shift']());}};_0x287b43(++_0x2240e2);}(_0xa568,0x77));var _0x8a56=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xa568[_0x46698a];return _0x356db0;};'use strict';var _=require(_0x8a56('0x0'));var util=require(_0x8a56('0x1'));var moment=require(_0x8a56('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8a56('0x3'));var db=require(_0x8a56('0x4'))['db'];var utils=require(_0x8a56('0x5'));var logger=require(_0x8a56('0x6'))(_0x8a56('0x7'));var config=require('../../config/environment');var jayson=require(_0x8a56('0x8'));var client=jayson[_0x8a56('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x43cdc5,_0x7b4622,_0x3cc8c3){return new BPromise(function(_0x325a0f,_0x195f0a){return client[_0x8a56('0xa')](_0x43cdc5,_0x3cc8c3)[_0x8a56('0xb')](function(_0x906ce4){logger[_0x8a56('0xc')](_0x8a56('0xd'),_0x7b4622,_0x8a56('0xe'));logger[_0x8a56('0xf')]('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0x7b4622,_0x8a56('0xe'),JSON['stringify'](_0x906ce4));if(_0x906ce4[_0x8a56('0x10')]){if(_0x906ce4['error'][_0x8a56('0x11')]===0x1f4){logger['error'](_0x8a56('0xd'),_0x7b4622,_0x906ce4['error'][_0x8a56('0x12')]);return _0x195f0a(_0x906ce4['error'][_0x8a56('0x12')]);}logger['error'](_0x8a56('0xd'),_0x7b4622,_0x906ce4['error'][_0x8a56('0x12')]);return _0x325a0f(_0x906ce4['error'][_0x8a56('0x12')]);}else{logger[_0x8a56('0xc')]('ChatQueueReport,\x20%s,\x20%s',_0x7b4622,'request\x20sent');_0x325a0f(_0x906ce4['result'][_0x8a56('0x12')]);}})[_0x8a56('0x13')](function(_0x5ab81d){logger[_0x8a56('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x7b4622,_0x5ab81d);_0x195f0a(_0x5ab81d);});});}exports[_0x8a56('0x14')]=function(_0x1c35b3){var _0x267d08=this;return new Promise(function(_0x10695b,_0x4826a0){return db[_0x8a56('0x15')][_0x8a56('0x16')](_0x1c35b3[_0x8a56('0x17')],{'raw':_0x1c35b3[_0x8a56('0x18')]?_0x1c35b3[_0x8a56('0x18')][_0x8a56('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x5aac86){logger[_0x8a56('0xc')]('CreateChatQueueReport',_0x1c35b3);logger['debug'](_0x8a56('0x14'),_0x1c35b3,JSON[_0x8a56('0x1a')](_0x5aac86));_0x10695b(_0x5aac86);})['catch'](function(_0x17fef2){logger[_0x8a56('0x10')](_0x8a56('0x14'),_0x17fef2[_0x8a56('0x12')],_0x1c35b3);_0x4826a0(_0x267d08[_0x8a56('0x10')](0x1f4,_0x17fef2[_0x8a56('0x12')]));});});};exports[_0x8a56('0x1b')]=function(_0x39e323){var _0xb3c702=this;return new Promise(function(_0x27f25c,_0x18cf2d){return db['ChatQueueReport']['update'](_0x39e323[_0x8a56('0x17')],{'raw':_0x39e323[_0x8a56('0x18')]?_0x39e323[_0x8a56('0x18')][_0x8a56('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x39e323[_0x8a56('0x18')]?_0x39e323['options'][_0x8a56('0x1c')]||null:null,'attributes':_0x39e323[_0x8a56('0x18')]?_0x39e323[_0x8a56('0x18')]['attributes']||null:null,'limit':_0x39e323[_0x8a56('0x18')]?_0x39e323[_0x8a56('0x18')][_0x8a56('0x1d')]||null:null})[_0x8a56('0xb')](function(_0x1c5ed9){logger[_0x8a56('0xc')](_0x8a56('0x1b'),_0x39e323);logger[_0x8a56('0xf')](_0x8a56('0x1b'),_0x39e323,JSON[_0x8a56('0x1a')](_0x1c5ed9));_0x27f25c(_0x1c5ed9);})[_0x8a56('0x13')](function(_0x3fb298){logger['error'](_0x8a56('0x1b'),_0x3fb298['message'],_0x39e323);_0x18cf2d(_0xb3c702[_0x8a56('0x10')](0x1f4,_0x3fb298[_0x8a56('0x12')]));});});};
\ No newline at end of file
+var _0x0790=['attributes','limit','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','ChatQueueReport','create','raw','then','CreateChatQueueReport','debug','UpdateChatQueueReport','update','body','options','where'];(function(_0x232802,_0x4f521d){var _0x4f80c7=function(_0x3cc45d){while(--_0x3cc45d){_0x232802['push'](_0x232802['shift']());}};_0x4f80c7(++_0x4f521d);}(_0x0790,0xf2));var _0x0079=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0x0790[_0x43d11d];return _0x38cd08;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0079('0x0'));var fs=require('fs');var Redis=require(_0x0079('0x1'));var db=require(_0x0079('0x2'))['db'];var utils=require(_0x0079('0x3'));var logger=require(_0x0079('0x4'))(_0x0079('0x5'));var config=require('../../config/environment');var jayson=require(_0x0079('0x6'));var client=jayson[_0x0079('0x7')][_0x0079('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x504031,_0x40a385,_0x235f01){return new BPromise(function(_0x246e71,_0x1e14d0){return client['request'](_0x504031,_0x235f01)['then'](function(_0x101ff5){logger[_0x0079('0x9')](_0x0079('0xa'),_0x40a385,_0x0079('0xb'));logger['debug']('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0x40a385,_0x0079('0xb'),JSON[_0x0079('0xc')](_0x101ff5));if(_0x101ff5['error']){if(_0x101ff5[_0x0079('0xd')]['code']===0x1f4){logger[_0x0079('0xd')](_0x0079('0xa'),_0x40a385,_0x101ff5['error']['message']);return _0x1e14d0(_0x101ff5[_0x0079('0xd')][_0x0079('0xe')]);}logger['error']('ChatQueueReport,\x20%s,\x20%s',_0x40a385,_0x101ff5['error'][_0x0079('0xe')]);return _0x246e71(_0x101ff5[_0x0079('0xd')]['message']);}else{logger[_0x0079('0x9')]('ChatQueueReport,\x20%s,\x20%s',_0x40a385,_0x0079('0xb'));_0x246e71(_0x101ff5[_0x0079('0xf')][_0x0079('0xe')]);}})[_0x0079('0x10')](function(_0x56a7de){logger[_0x0079('0xd')](_0x0079('0xa'),_0x40a385,_0x56a7de);_0x1e14d0(_0x56a7de);});});}exports['CreateChatQueueReport']=function(_0x2d6c63){var _0x332fe3=this;return new Promise(function(_0x220bfd,_0x17aa23){return db[_0x0079('0x11')][_0x0079('0x12')](_0x2d6c63['body'],{'raw':_0x2d6c63['options']?_0x2d6c63['options'][_0x0079('0x13')]===undefined?!![]:![]:!![]})[_0x0079('0x14')](function(_0x533f5c){logger['info'](_0x0079('0x15'),_0x2d6c63);logger[_0x0079('0x16')]('CreateChatQueueReport',_0x2d6c63,JSON[_0x0079('0xc')](_0x533f5c));_0x220bfd(_0x533f5c);})['catch'](function(_0x50d53c){logger['error'](_0x0079('0x15'),_0x50d53c[_0x0079('0xe')],_0x2d6c63);_0x17aa23(_0x332fe3['error'](0x1f4,_0x50d53c['message']));});});};exports[_0x0079('0x17')]=function(_0x59ed70){var _0x5cb3b8=this;return new Promise(function(_0x414c59,_0x4a983f){return db['ChatQueueReport'][_0x0079('0x18')](_0x59ed70[_0x0079('0x19')],{'raw':_0x59ed70[_0x0079('0x1a')]?_0x59ed70[_0x0079('0x1a')][_0x0079('0x13')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59ed70[_0x0079('0x1a')]?_0x59ed70[_0x0079('0x1a')][_0x0079('0x1b')]||null:null,'attributes':_0x59ed70[_0x0079('0x1a')]?_0x59ed70[_0x0079('0x1a')][_0x0079('0x1c')]||null:null,'limit':_0x59ed70[_0x0079('0x1a')]?_0x59ed70[_0x0079('0x1a')][_0x0079('0x1d')]||null:null})[_0x0079('0x14')](function(_0x65c4df){logger[_0x0079('0x9')](_0x0079('0x17'),_0x59ed70);logger[_0x0079('0x16')]('UpdateChatQueueReport',_0x59ed70,JSON[_0x0079('0xc')](_0x65c4df));_0x414c59(_0x65c4df);})[_0x0079('0x10')](function(_0xba2ef7){logger[_0x0079('0xd')]('UpdateChatQueueReport',_0xba2ef7['message'],_0x59ed70);_0x4a983f(_0x5cb3b8['error'](0x1f4,_0xba2ef7[_0x0079('0xe')]));});});};
\ No newline at end of file
index 64aaaf7..d4ba64b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe811=['show','post','create','put','update','delete','multer','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','/:id'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0xe811,0x110));var _0x1e81=function(_0x10673b,_0x3d97b1){_0x10673b=_0x10673b-0x0;var _0x10d347=_0xe811[_0x10673b];return _0x10d347;};'use strict';var multer=require(_0x1e81('0x0'));var util=require('util');var path=require(_0x1e81('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1e81('0x2')]();var fs_extra=require(_0x1e81('0x3'));var auth=require(_0x1e81('0x4'));var interaction=require(_0x1e81('0x5'));var config=require(_0x1e81('0x6'));var controller=require(_0x1e81('0x7'));router[_0x1e81('0x8')]('/',auth[_0x1e81('0x9')](),controller[_0x1e81('0xa')]);router[_0x1e81('0x8')](_0x1e81('0xb'),auth[_0x1e81('0x9')](),controller['describe']);router[_0x1e81('0x8')](_0x1e81('0xc'),auth['isAuthenticated'](),controller[_0x1e81('0xd')]);router[_0x1e81('0xe')]('/',auth['isAuthenticated'](),controller[_0x1e81('0xf')]);router[_0x1e81('0x10')](_0x1e81('0xc'),auth[_0x1e81('0x9')](),controller[_0x1e81('0x11')]);router[_0x1e81('0x12')](_0x1e81('0xc'),auth[_0x1e81('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x33b5=['destroy','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./chatQueueReport.controller','isAuthenticated','index','get','/describe','post','create','/:id','update','delete'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x33b5,0x1b1));var _0x533b=function(_0x364271,_0x53bf49){_0x364271=_0x364271-0x0;var _0x387f6d=_0x33b5[_0x364271];return _0x387f6d;};'use strict';var multer=require('multer');var util=require(_0x533b('0x0'));var path=require(_0x533b('0x1'));var timeout=require(_0x533b('0x2'));var express=require(_0x533b('0x3'));var router=express['Router']();var fs_extra=require(_0x533b('0x4'));var auth=require(_0x533b('0x5'));var interaction=require(_0x533b('0x6'));var config=require('../../config/environment');var controller=require(_0x533b('0x7'));router['get']('/',auth[_0x533b('0x8')](),controller[_0x533b('0x9')]);router[_0x533b('0xa')](_0x533b('0xb'),auth[_0x533b('0x8')](),controller['describe']);router[_0x533b('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x533b('0xc')]('/',auth[_0x533b('0x8')](),controller[_0x533b('0xd')]);router['put'](_0x533b('0xe'),auth['isAuthenticated'](),controller[_0x533b('0xf')]);router[_0x533b('0x10')]('/:id',auth[_0x533b('0x8')](),controller[_0x533b('0x11')]);module['exports']=router;
\ No newline at end of file
index beebd81..02f22c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x14349b,_0x1eb24d){var _0x34f8cb=function(_0x100008){while(--_0x100008){_0x14349b['push'](_0x14349b['shift']());}};_0x34f8cb(++_0x1eb24d);}(_0x9c44,0x178));var _0x49c4=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x9c44[_0x273c39];return _0x46d6b5;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
+var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0x50a1f6,_0x238fd8){var _0x84f8d4=function(_0x2d9586){while(--_0x2d9586){_0x50a1f6['push'](_0x50a1f6['shift']());}};_0x84f8d4(++_0x238fd8);}(_0x54ef,0x112));var _0xf54e=function(_0x369d3c,_0x37c908){_0x369d3c=_0x369d3c-0x0;var _0x42c946=_0x54ef[_0x369d3c];return _0x42c946;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
index 9812d66..2f47d71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20d9=['fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','options','ChatTransferReport','includeAll','include','findAll','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','apply','reject','update','then','destroy','sendStatus','stack','name','send','map','rawAttributes'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x20d9,0x66));var _0x920d=function(_0x3f1939,_0x893def){_0x3f1939=_0x3f1939-0x0;var _0x1e752a=_0x20d9[_0x3f1939];return _0x1e752a;};'use strict';var emlformat=require(_0x920d('0x0'));var rimraf=require(_0x920d('0x1'));var zipdir=require(_0x920d('0x2'));var jsonpatch=require(_0x920d('0x3'));var rp=require(_0x920d('0x4'));var moment=require(_0x920d('0x5'));var BPromise=require(_0x920d('0x6'));var Mustache=require(_0x920d('0x7'));var util=require(_0x920d('0x8'));var path=require(_0x920d('0x9'));var sox=require(_0x920d('0xa'));var csv=require(_0x920d('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x920d('0xc'));var _=require(_0x920d('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x920d('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x920d('0xf'));var Papa=require(_0x920d('0x10'));var Redis=require(_0x920d('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x920d('0x12'));var as=require(_0x920d('0x13'));var hardwareService=require(_0x920d('0x14'));var logger=require('../../config/logger')(_0x920d('0x15'));var utils=require(_0x920d('0x16'));var config=require(_0x920d('0x17'));var licenseUtil=require(_0x920d('0x18'));var db=require(_0x920d('0x19'))['db'];function respondWithStatusCode(_0x12ba33,_0x1d4ebb){_0x1d4ebb=_0x1d4ebb||0xcc;return function(_0x48f87c){if(_0x48f87c){return _0x12ba33['sendStatus'](_0x1d4ebb);}return _0x12ba33[_0x920d('0x1a')](_0x1d4ebb)[_0x920d('0x1b')]();};}function respondWithResult(_0x4e21a0,_0x34e575){_0x34e575=_0x34e575||0xc8;return function(_0x2d830d){if(_0x2d830d){return _0x4e21a0[_0x920d('0x1a')](_0x34e575)['json'](_0x2d830d);}};}function respondWithFilteredResult(_0x517cab,_0x1386e7){return function(_0x5f3057){if(_0x5f3057){var _0x44d859=typeof _0x1386e7[_0x920d('0x1c')]===_0x920d('0x1d')&&typeof _0x1386e7[_0x920d('0x1e')]==='undefined';var _0x545adb=_0x5f3057[_0x920d('0x1f')];var _0x3d95ee=_0x44d859?0x0:_0x1386e7[_0x920d('0x1c')];var _0x319f09=_0x44d859?_0x5f3057[_0x920d('0x1f')]:_0x1386e7[_0x920d('0x1c')]+_0x1386e7[_0x920d('0x1e')];var _0x22a952;if(_0x319f09>=_0x545adb){_0x319f09=_0x545adb;_0x22a952=0xc8;}else{_0x22a952=0xce;}_0x517cab['status'](_0x22a952);return _0x517cab[_0x920d('0x20')]('Content-Range',_0x3d95ee+'-'+_0x319f09+'/'+_0x545adb)['json'](_0x5f3057);}return null;};}function patchUpdates(_0x5ad344){return function(_0x1bd115){try{jsonpatch[_0x920d('0x21')](_0x1bd115,_0x5ad344,!![]);}catch(_0x395822){return BPromise[_0x920d('0x22')](_0x395822);}return _0x1bd115['save']();};}function saveUpdates(_0x20dfa1,_0x18604a){return function(_0x11a4b6){if(_0x11a4b6){return _0x11a4b6[_0x920d('0x23')](_0x20dfa1)[_0x920d('0x24')](function(_0x48cd32){return _0x48cd32;});}return null;};}function removeEntity(_0x37a5ba,_0x4b11b7){return function(_0x3ad0b1){if(_0x3ad0b1){return _0x3ad0b1[_0x920d('0x25')]()[_0x920d('0x24')](function(){_0x37a5ba[_0x920d('0x1a')](0xcc)[_0x920d('0x1b')]();});}};}function handleEntityNotFound(_0x1895b4,_0x2bc985){return function(_0x7e78fb){if(!_0x7e78fb){_0x1895b4[_0x920d('0x26')](0x194);}return _0x7e78fb;};}function handleError(_0x591961,_0xf0fd96){_0xf0fd96=_0xf0fd96||0x1f4;return function(_0x568d60){logger['error'](_0x568d60[_0x920d('0x27')]);if(_0x568d60[_0x920d('0x28')]){delete _0x568d60[_0x920d('0x28')];}_0x591961['status'](_0xf0fd96)[_0x920d('0x29')](_0x568d60);};}exports['index']=function(_0x2a286b,_0x11331c){var _0x1240ce={},_0x456fde={},_0x37c6d3={'count':0x0,'rows':[]};var _0x3fb5c1=_[_0x920d('0x2a')](db['ChatTransferReport'][_0x920d('0x2b')],function(_0x286bd5){return{'name':_0x286bd5[_0x920d('0x2c')],'type':_0x286bd5['type'][_0x920d('0x2d')]};});_0x456fde[_0x920d('0x2e')]=_['map'](_0x3fb5c1,'name');_0x456fde[_0x920d('0x2f')]=_['keys'](_0x2a286b[_0x920d('0x2f')]);_0x456fde[_0x920d('0x30')]=_[_0x920d('0x31')](_0x456fde[_0x920d('0x2e')],_0x456fde['query']);_0x1240ce[_0x920d('0x32')]=_[_0x920d('0x31')](_0x456fde[_0x920d('0x2e')],qs['fields'](_0x2a286b[_0x920d('0x2f')][_0x920d('0x33')]));_0x1240ce[_0x920d('0x32')]=_0x1240ce[_0x920d('0x32')][_0x920d('0x34')]?_0x1240ce[_0x920d('0x32')]:_0x456fde[_0x920d('0x2e')];if(!_0x2a286b[_0x920d('0x2f')][_0x920d('0x35')]('nolimit')){_0x1240ce[_0x920d('0x1e')]=qs[_0x920d('0x1e')](_0x2a286b['query'][_0x920d('0x1e')]);_0x1240ce[_0x920d('0x1c')]=qs[_0x920d('0x1c')](_0x2a286b['query']['offset']);}_0x1240ce['order']=qs['sort'](_0x2a286b[_0x920d('0x2f')][_0x920d('0x36')]);_0x1240ce[_0x920d('0x37')]=qs[_0x920d('0x30')](_[_0x920d('0x38')](_0x2a286b[_0x920d('0x2f')],_0x456fde[_0x920d('0x30')]),_0x3fb5c1);if(_0x2a286b[_0x920d('0x2f')][_0x920d('0x39')]){_0x1240ce[_0x920d('0x37')]=_['merge'](_0x1240ce[_0x920d('0x37')],{'$or':_[_0x920d('0x2a')](_0x3fb5c1,function(_0x249d73){if(_0x249d73['type']!==_0x920d('0x3a')){var _0x5c91a5={};_0x5c91a5[_0x249d73[_0x920d('0x28')]]={'$like':'%'+_0x2a286b[_0x920d('0x2f')][_0x920d('0x39')]+'%'};return _0x5c91a5;}})});}_0x1240ce=_[_0x920d('0x3b')]({},_0x1240ce,_0x2a286b[_0x920d('0x3c')]);var _0x39f677={'where':_0x1240ce[_0x920d('0x37')]};return db[_0x920d('0x3d')][_0x920d('0x1f')](_0x39f677)[_0x920d('0x24')](function(_0x3c512a){_0x37c6d3[_0x920d('0x1f')]=_0x3c512a;if(_0x2a286b['query'][_0x920d('0x3e')]){_0x1240ce[_0x920d('0x3f')]=[{'all':!![]}];}return db[_0x920d('0x3d')][_0x920d('0x40')](_0x1240ce);})[_0x920d('0x24')](function(_0x913f18){_0x37c6d3['rows']=_0x913f18;return _0x37c6d3;})[_0x920d('0x24')](respondWithFilteredResult(_0x11331c,_0x1240ce))[_0x920d('0x41')](handleError(_0x11331c,null));};exports[_0x920d('0x42')]=function(_0x354be1,_0x510b22){var _0x5bbc74={'raw':!![],'where':{'id':_0x354be1[_0x920d('0x43')]['id']}},_0x382eca={};_0x382eca[_0x920d('0x2e')]=_[_0x920d('0x44')](db[_0x920d('0x3d')][_0x920d('0x2b')]);_0x382eca[_0x920d('0x2f')]=_[_0x920d('0x44')](_0x354be1[_0x920d('0x2f')]);_0x382eca['filters']=_[_0x920d('0x31')](_0x382eca[_0x920d('0x2e')],_0x382eca[_0x920d('0x2f')]);_0x5bbc74[_0x920d('0x32')]=_[_0x920d('0x31')](_0x382eca['model'],qs[_0x920d('0x33')](_0x354be1['query']['fields']));_0x5bbc74[_0x920d('0x32')]=_0x5bbc74['attributes']['length']?_0x5bbc74[_0x920d('0x32')]:_0x382eca['model'];if(_0x354be1['query'][_0x920d('0x3e')]){_0x5bbc74[_0x920d('0x3f')]=[{'all':!![]}];}_0x5bbc74=_['merge']({},_0x5bbc74,_0x354be1['options']);return db[_0x920d('0x3d')][_0x920d('0x45')](_0x5bbc74)[_0x920d('0x24')](handleEntityNotFound(_0x510b22,null))['then'](respondWithResult(_0x510b22,null))[_0x920d('0x41')](handleError(_0x510b22,null));};exports[_0x920d('0x46')]=function(_0x18e422,_0x235b67){return db[_0x920d('0x3d')][_0x920d('0x46')](_0x18e422['body'],{})['then'](respondWithResult(_0x235b67,0xc9))[_0x920d('0x41')](handleError(_0x235b67,null));};exports[_0x920d('0x23')]=function(_0x1571b9,_0x4d6008){if(_0x1571b9[_0x920d('0x47')]['id']){delete _0x1571b9['body']['id'];}return db[_0x920d('0x3d')][_0x920d('0x45')]({'where':{'id':_0x1571b9['params']['id']}})[_0x920d('0x24')](handleEntityNotFound(_0x4d6008,null))[_0x920d('0x24')](saveUpdates(_0x1571b9['body'],null))[_0x920d('0x24')](respondWithResult(_0x4d6008,null))['catch'](handleError(_0x4d6008,null));};exports[_0x920d('0x25')]=function(_0x4f898c,_0x4137c1){return db[_0x920d('0x3d')]['find']({'where':{'id':_0x4f898c[_0x920d('0x43')]['id']}})[_0x920d('0x24')](handleEntityNotFound(_0x4137c1,null))[_0x920d('0x24')](removeEntity(_0x4137c1,null))[_0x920d('0x41')](handleError(_0x4137c1,null));};exports[_0x920d('0x48')]=function(_0x5a14cf,_0x390f44){return db[_0x920d('0x3d')]['describe']()[_0x920d('0x24')](respondWithResult(_0x390f44,null))[_0x920d('0x41')](handleError(_0x390f44,null));};
\ No newline at end of file
+var _0xee50=['find','create','update','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','status','sendStatus','error','stack','name','send','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','options','ChatTransferReport','includeAll','include','findAll','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xee50,0x12a));var _0x0ee5=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xee50[_0x8c43de];return _0xa6591b;};'use strict';var emlformat=require(_0x0ee5('0x0'));var rimraf=require(_0x0ee5('0x1'));var zipdir=require(_0x0ee5('0x2'));var jsonpatch=require(_0x0ee5('0x3'));var rp=require(_0x0ee5('0x4'));var moment=require('moment');var BPromise=require(_0x0ee5('0x5'));var Mustache=require(_0x0ee5('0x6'));var util=require(_0x0ee5('0x7'));var path=require(_0x0ee5('0x8'));var sox=require(_0x0ee5('0x9'));var csv=require(_0x0ee5('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0ee5('0xb'));var squel=require(_0x0ee5('0xc'));var crypto=require('crypto');var jsforce=require(_0x0ee5('0xd'));var deskjs=require(_0x0ee5('0xe'));var toCsv=require(_0x0ee5('0xa'));var querystring=require(_0x0ee5('0xf'));var Papa=require(_0x0ee5('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0ee5('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0ee5('0x12'));var logger=require(_0x0ee5('0x13'))('api');var utils=require(_0x0ee5('0x14'));var config=require(_0x0ee5('0x15'));var licenseUtil=require(_0x0ee5('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4a4fe5,_0x310715){_0x310715=_0x310715||0xcc;return function(_0x2b88aa){if(_0x2b88aa){return _0x4a4fe5['sendStatus'](_0x310715);}return _0x4a4fe5['status'](_0x310715)['end']();};}function respondWithResult(_0x2ba26d,_0x5e1fda){_0x5e1fda=_0x5e1fda||0xc8;return function(_0x4e2cbf){if(_0x4e2cbf){return _0x2ba26d['status'](_0x5e1fda)[_0x0ee5('0x17')](_0x4e2cbf);}};}function respondWithFilteredResult(_0x57e874,_0x3449c8){return function(_0x56451e){if(_0x56451e){var _0x5733cf=typeof _0x3449c8['offset']===_0x0ee5('0x18')&&typeof _0x3449c8[_0x0ee5('0x19')]===_0x0ee5('0x18');var _0x1be517=_0x56451e['count'];var _0x3ea1ee=_0x5733cf?0x0:_0x3449c8['offset'];var _0x244085=_0x5733cf?_0x56451e[_0x0ee5('0x1a')]:_0x3449c8[_0x0ee5('0x1b')]+_0x3449c8[_0x0ee5('0x19')];var _0x7765b0;if(_0x244085>=_0x1be517){_0x244085=_0x1be517;_0x7765b0=0xc8;}else{_0x7765b0=0xce;}_0x57e874['status'](_0x7765b0);return _0x57e874[_0x0ee5('0x1c')](_0x0ee5('0x1d'),_0x3ea1ee+'-'+_0x244085+'/'+_0x1be517)['json'](_0x56451e);}return null;};}function patchUpdates(_0x20a2ba){return function(_0x5572e3){try{jsonpatch[_0x0ee5('0x1e')](_0x5572e3,_0x20a2ba,!![]);}catch(_0x394147){return BPromise[_0x0ee5('0x1f')](_0x394147);}return _0x5572e3[_0x0ee5('0x20')]();};}function saveUpdates(_0x12a228,_0x5e10f1){return function(_0x1c7c95){if(_0x1c7c95){return _0x1c7c95['update'](_0x12a228)[_0x0ee5('0x21')](function(_0xb47805){return _0xb47805;});}return null;};}function removeEntity(_0x33fce7,_0x3f0218){return function(_0x198102){if(_0x198102){return _0x198102['destroy']()[_0x0ee5('0x21')](function(){_0x33fce7[_0x0ee5('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5da4c0,_0x160206){return function(_0x4b490f){if(!_0x4b490f){_0x5da4c0[_0x0ee5('0x23')](0x194);}return _0x4b490f;};}function handleError(_0x121fa2,_0x4536dd){_0x4536dd=_0x4536dd||0x1f4;return function(_0x4017b7){logger[_0x0ee5('0x24')](_0x4017b7[_0x0ee5('0x25')]);if(_0x4017b7[_0x0ee5('0x26')]){delete _0x4017b7['name'];}_0x121fa2[_0x0ee5('0x22')](_0x4536dd)[_0x0ee5('0x27')](_0x4017b7);};}exports['index']=function(_0x333ddb,_0x5bfcdb){var _0x5b5707={},_0x237c64={},_0x12daf6={'count':0x0,'rows':[]};var _0x2ac97b=_['map'](db['ChatTransferReport'][_0x0ee5('0x28')],function(_0x3289a6){return{'name':_0x3289a6[_0x0ee5('0x29')],'type':_0x3289a6[_0x0ee5('0x2a')][_0x0ee5('0x2b')]};});_0x237c64[_0x0ee5('0x2c')]=_[_0x0ee5('0x2d')](_0x2ac97b,_0x0ee5('0x26'));_0x237c64[_0x0ee5('0x2e')]=_[_0x0ee5('0x2f')](_0x333ddb[_0x0ee5('0x2e')]);_0x237c64['filters']=_[_0x0ee5('0x30')](_0x237c64[_0x0ee5('0x2c')],_0x237c64[_0x0ee5('0x2e')]);_0x5b5707[_0x0ee5('0x31')]=_[_0x0ee5('0x30')](_0x237c64[_0x0ee5('0x2c')],qs[_0x0ee5('0x32')](_0x333ddb[_0x0ee5('0x2e')][_0x0ee5('0x32')]));_0x5b5707['attributes']=_0x5b5707[_0x0ee5('0x31')][_0x0ee5('0x33')]?_0x5b5707[_0x0ee5('0x31')]:_0x237c64['model'];if(!_0x333ddb['query'][_0x0ee5('0x34')](_0x0ee5('0x35'))){_0x5b5707[_0x0ee5('0x19')]=qs['limit'](_0x333ddb[_0x0ee5('0x2e')][_0x0ee5('0x19')]);_0x5b5707[_0x0ee5('0x1b')]=qs[_0x0ee5('0x1b')](_0x333ddb[_0x0ee5('0x2e')][_0x0ee5('0x1b')]);}_0x5b5707[_0x0ee5('0x36')]=qs[_0x0ee5('0x37')](_0x333ddb[_0x0ee5('0x2e')][_0x0ee5('0x37')]);_0x5b5707[_0x0ee5('0x38')]=qs['filters'](_[_0x0ee5('0x39')](_0x333ddb[_0x0ee5('0x2e')],_0x237c64[_0x0ee5('0x3a')]),_0x2ac97b);if(_0x333ddb['query'][_0x0ee5('0x3b')]){_0x5b5707[_0x0ee5('0x38')]=_['merge'](_0x5b5707[_0x0ee5('0x38')],{'$or':_[_0x0ee5('0x2d')](_0x2ac97b,function(_0x58e300){if(_0x58e300[_0x0ee5('0x2a')]!=='VIRTUAL'){var _0x306064={};_0x306064[_0x58e300[_0x0ee5('0x26')]]={'$like':'%'+_0x333ddb[_0x0ee5('0x2e')][_0x0ee5('0x3b')]+'%'};return _0x306064;}})});}_0x5b5707=_[_0x0ee5('0x3c')]({},_0x5b5707,_0x333ddb[_0x0ee5('0x3d')]);var _0x1e3e7e={'where':_0x5b5707[_0x0ee5('0x38')]};return db[_0x0ee5('0x3e')][_0x0ee5('0x1a')](_0x1e3e7e)[_0x0ee5('0x21')](function(_0x4f8b4f){_0x12daf6[_0x0ee5('0x1a')]=_0x4f8b4f;if(_0x333ddb[_0x0ee5('0x2e')][_0x0ee5('0x3f')]){_0x5b5707[_0x0ee5('0x40')]=[{'all':!![]}];}return db['ChatTransferReport'][_0x0ee5('0x41')](_0x5b5707);})[_0x0ee5('0x21')](function(_0x66ec63){_0x12daf6['rows']=_0x66ec63;return _0x12daf6;})[_0x0ee5('0x21')](respondWithFilteredResult(_0x5bfcdb,_0x5b5707))[_0x0ee5('0x42')](handleError(_0x5bfcdb,null));};exports['show']=function(_0x1e9658,_0x598d36){var _0x2552db={'raw':!![],'where':{'id':_0x1e9658['params']['id']}},_0x5c471e={};_0x5c471e[_0x0ee5('0x2c')]=_[_0x0ee5('0x2f')](db[_0x0ee5('0x3e')][_0x0ee5('0x28')]);_0x5c471e['query']=_[_0x0ee5('0x2f')](_0x1e9658[_0x0ee5('0x2e')]);_0x5c471e[_0x0ee5('0x3a')]=_[_0x0ee5('0x30')](_0x5c471e[_0x0ee5('0x2c')],_0x5c471e[_0x0ee5('0x2e')]);_0x2552db[_0x0ee5('0x31')]=_[_0x0ee5('0x30')](_0x5c471e[_0x0ee5('0x2c')],qs[_0x0ee5('0x32')](_0x1e9658[_0x0ee5('0x2e')][_0x0ee5('0x32')]));_0x2552db['attributes']=_0x2552db[_0x0ee5('0x31')][_0x0ee5('0x33')]?_0x2552db[_0x0ee5('0x31')]:_0x5c471e[_0x0ee5('0x2c')];if(_0x1e9658[_0x0ee5('0x2e')][_0x0ee5('0x3f')]){_0x2552db[_0x0ee5('0x40')]=[{'all':!![]}];}_0x2552db=_[_0x0ee5('0x3c')]({},_0x2552db,_0x1e9658[_0x0ee5('0x3d')]);return db[_0x0ee5('0x3e')][_0x0ee5('0x43')](_0x2552db)[_0x0ee5('0x21')](handleEntityNotFound(_0x598d36,null))[_0x0ee5('0x21')](respondWithResult(_0x598d36,null))[_0x0ee5('0x42')](handleError(_0x598d36,null));};exports[_0x0ee5('0x44')]=function(_0x391664,_0x74cba1){return db[_0x0ee5('0x3e')][_0x0ee5('0x44')](_0x391664['body'],{})[_0x0ee5('0x21')](respondWithResult(_0x74cba1,0xc9))['catch'](handleError(_0x74cba1,null));};exports[_0x0ee5('0x45')]=function(_0xeea37b,_0x2371ee){if(_0xeea37b['body']['id']){delete _0xeea37b[_0x0ee5('0x46')]['id'];}return db['ChatTransferReport'][_0x0ee5('0x43')]({'where':{'id':_0xeea37b[_0x0ee5('0x47')]['id']}})[_0x0ee5('0x21')](handleEntityNotFound(_0x2371ee,null))[_0x0ee5('0x21')](saveUpdates(_0xeea37b[_0x0ee5('0x46')],null))['then'](respondWithResult(_0x2371ee,null))['catch'](handleError(_0x2371ee,null));};exports['destroy']=function(_0xe7db82,_0x469b86){return db[_0x0ee5('0x3e')]['find']({'where':{'id':_0xe7db82[_0x0ee5('0x47')]['id']}})['then'](handleEntityNotFound(_0x469b86,null))[_0x0ee5('0x21')](removeEntity(_0x469b86,null))[_0x0ee5('0x42')](handleError(_0x469b86,null));};exports[_0x0ee5('0x48')]=function(_0x308acd,_0x18928c){return db['ChatTransferReport'][_0x0ee5('0x48')]()[_0x0ee5('0x21')](respondWithResult(_0x18928c,null))[_0x0ee5('0x42')](handleError(_0x18928c,null));};
\ No newline at end of file
index 86da23f..1185412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6af=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','util'];(function(_0x545bed,_0x221e96){var _0x16c79c=function(_0x465346){while(--_0x465346){_0x545bed['push'](_0x545bed['shift']());}};_0x16c79c(++_0x221e96);}(_0xa6af,0x194));var _0xfa6a=function(_0x267f66,_0x33522f){_0x267f66=_0x267f66-0x0;var _0x5dd75f=_0xa6af[_0x267f66];return _0x5dd75f;};'use strict';var _=require(_0xfa6a('0x0'));var util=require(_0xfa6a('0x1'));var logger=require(_0xfa6a('0x2'))(_0xfa6a('0x3'));var moment=require(_0xfa6a('0x4'));var BPromise=require('bluebird');var rp=require(_0xfa6a('0x5'));var fs=require('fs');var path=require(_0xfa6a('0x6'));var rimraf=require(_0xfa6a('0x7'));var config=require(_0xfa6a('0x8'));var attributes=require('./chatTransferReport.attributes');module[_0xfa6a('0x9')]=function(_0x18c2fe,_0xc7dd43){return _0x18c2fe[_0xfa6a('0xa')](_0xfa6a('0xb'),attributes,{'tableName':_0xfa6a('0xc'),'paranoid':![],'indexes':[{'name':_0xfa6a('0xd'),'fields':[_0xfa6a('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x153d=['../../config/logger','bluebird','path','rimraf','../../config/environment','./chatTransferReport.attributes','exports','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','util'];(function(_0x79a896,_0x1b25f1){var _0x3c1acc=function(_0x4a50b8){while(--_0x4a50b8){_0x79a896['push'](_0x79a896['shift']());}};_0x3c1acc(++_0x1b25f1);}(_0x153d,0x80));var _0xd153=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x153d[_0x4e9628];return _0x27bc8c;};'use strict';var _=require(_0xd153('0x0'));var util=require(_0xd153('0x1'));var logger=require(_0xd153('0x2'))('api');var moment=require('moment');var BPromise=require(_0xd153('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd153('0x4'));var rimraf=require(_0xd153('0x5'));var config=require(_0xd153('0x6'));var attributes=require(_0xd153('0x7'));module[_0xd153('0x8')]=function(_0x56e498,_0x56c1db){return _0x56e498[_0xd153('0x9')](_0xd153('0xa'),attributes,{'tableName':_0xd153('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xd153('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index e8b8f1d..509c9c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0da5=['info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','jayson/promise','http','request','then'];(function(_0x305b20,_0x5e57e9){var _0x26d64a=function(_0x2e17f0){while(--_0x2e17f0){_0x305b20['push'](_0x305b20['shift']());}};_0x26d64a(++_0x5e57e9);}(_0x0da5,0x19b));var _0x50da=function(_0x20ac00,_0x59a193){_0x20ac00=_0x20ac00-0x0;var _0x4979ff=_0x0da5[_0x20ac00];return _0x4979ff;};'use strict';var _=require(_0x50da('0x0'));var util=require('util');var moment=require(_0x50da('0x1'));var BPromise=require(_0x50da('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x50da('0x3'));var db=require(_0x50da('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x50da('0x5'));var client=jayson['client'][_0x50da('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x542b27,_0x10ae68,_0x4f9364){return new BPromise(function(_0x47b934,_0x375811){return client[_0x50da('0x7')](_0x542b27,_0x4f9364)[_0x50da('0x8')](function(_0x1ffe7d){logger[_0x50da('0x9')](_0x50da('0xa'),_0x10ae68,_0x50da('0xb'));logger[_0x50da('0xc')](_0x50da('0xd'),_0x10ae68,_0x50da('0xb'),JSON[_0x50da('0xe')](_0x1ffe7d));if(_0x1ffe7d['error']){if(_0x1ffe7d['error'][_0x50da('0xf')]===0x1f4){logger[_0x50da('0x10')](_0x50da('0xa'),_0x10ae68,_0x1ffe7d['error'][_0x50da('0x11')]);return _0x375811(_0x1ffe7d[_0x50da('0x10')][_0x50da('0x11')]);}logger[_0x50da('0x10')]('ChatTransferReport,\x20%s,\x20%s',_0x10ae68,_0x1ffe7d[_0x50da('0x10')][_0x50da('0x11')]);return _0x47b934(_0x1ffe7d['error'][_0x50da('0x11')]);}else{logger[_0x50da('0x9')](_0x50da('0xa'),_0x10ae68,'request\x20sent');_0x47b934(_0x1ffe7d[_0x50da('0x12')]['message']);}})[_0x50da('0x13')](function(_0x379e32){logger['error'](_0x50da('0xa'),_0x10ae68,_0x379e32);_0x375811(_0x379e32);});});}
\ No newline at end of file
+var _0x6c42=['debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x6c42,0xb0));var _0x26c4=function(_0x12bcf7,_0xc11103){_0x12bcf7=_0x12bcf7-0x0;var _0x2825a=_0x6c42[_0x12bcf7];return _0x2825a;};'use strict';var _=require(_0x26c4('0x0'));var util=require(_0x26c4('0x1'));var moment=require(_0x26c4('0x2'));var BPromise=require('bluebird');var rs=require(_0x26c4('0x3'));var fs=require('fs');var Redis=require(_0x26c4('0x4'));var db=require(_0x26c4('0x5'))['db'];var utils=require(_0x26c4('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x26c4('0x7'));var jayson=require(_0x26c4('0x8'));var client=jayson[_0x26c4('0x9')][_0x26c4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x468612,_0x1b91a9,_0x15fe5e){return new BPromise(function(_0x4d2356,_0x48e85b){return client[_0x26c4('0xb')](_0x468612,_0x15fe5e)[_0x26c4('0xc')](function(_0x901db3){logger[_0x26c4('0xd')](_0x26c4('0xe'),_0x1b91a9,_0x26c4('0xf'));logger[_0x26c4('0x10')](_0x26c4('0x11'),_0x1b91a9,_0x26c4('0xf'),JSON[_0x26c4('0x12')](_0x901db3));if(_0x901db3[_0x26c4('0x13')]){if(_0x901db3[_0x26c4('0x13')][_0x26c4('0x14')]===0x1f4){logger[_0x26c4('0x13')](_0x26c4('0xe'),_0x1b91a9,_0x901db3[_0x26c4('0x13')]['message']);return _0x48e85b(_0x901db3[_0x26c4('0x13')][_0x26c4('0x15')]);}logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x1b91a9,_0x901db3[_0x26c4('0x13')][_0x26c4('0x15')]);return _0x4d2356(_0x901db3[_0x26c4('0x13')][_0x26c4('0x15')]);}else{logger[_0x26c4('0xd')](_0x26c4('0xe'),_0x1b91a9,'request\x20sent');_0x4d2356(_0x901db3[_0x26c4('0x16')][_0x26c4('0x15')]);}})[_0x26c4('0x17')](function(_0x24ee8a){logger[_0x26c4('0x13')](_0x26c4('0xe'),_0x1b91a9,_0x24ee8a);_0x48e85b(_0x24ee8a);});});}
\ No newline at end of file
index 6092568..f4ec4be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea1=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','exports','multer','util','path'];(function(_0x229121,_0x4cfd48){var _0x559765=function(_0x2f5d30){while(--_0x2f5d30){_0x229121['push'](_0x229121['shift']());}};_0x559765(++_0x4cfd48);}(_0xcea1,0x6b));var _0x1cea=function(_0x47c89e,_0x18692c){_0x47c89e=_0x47c89e-0x0;var _0x1de51e=_0xcea1[_0x47c89e];return _0x1de51e;};'use strict';var multer=require(_0x1cea('0x0'));var util=require(_0x1cea('0x1'));var path=require(_0x1cea('0x2'));var timeout=require(_0x1cea('0x3'));var express=require(_0x1cea('0x4'));var router=express[_0x1cea('0x5')]();var fs_extra=require(_0x1cea('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x1cea('0x7'));var config=require(_0x1cea('0x8'));var controller=require('./chatTransferReport.controller');router[_0x1cea('0x9')]('/',auth[_0x1cea('0xa')](),controller[_0x1cea('0xb')]);router[_0x1cea('0x9')](_0x1cea('0xc'),auth[_0x1cea('0xa')](),controller[_0x1cea('0xd')]);router[_0x1cea('0x9')](_0x1cea('0xe'),auth[_0x1cea('0xa')](),controller[_0x1cea('0xf')]);router[_0x1cea('0x10')]('/',auth[_0x1cea('0xa')](),controller[_0x1cea('0x11')]);router[_0x1cea('0x12')](_0x1cea('0xe'),auth['isAuthenticated'](),controller[_0x1cea('0x13')]);router[_0x1cea('0x14')](_0x1cea('0xe'),auth[_0x1cea('0xa')](),controller['destroy']);module[_0x1cea('0x15')]=router;
\ No newline at end of file
+var _0xd5b3=['create','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./chatTransferReport.controller','get','isAuthenticated','describe','/:id','show','post'];(function(_0x218f97,_0xfa049e){var _0x49543b=function(_0x5e3a40){while(--_0x5e3a40){_0x218f97['push'](_0x218f97['shift']());}};_0x49543b(++_0xfa049e);}(_0xd5b3,0xa5));var _0x3d5b=function(_0x583a5e,_0x55d131){_0x583a5e=_0x583a5e-0x0;var _0x23ef19=_0xd5b3[_0x583a5e];return _0x23ef19;};'use strict';var multer=require(_0x3d5b('0x0'));var util=require(_0x3d5b('0x1'));var path=require(_0x3d5b('0x2'));var timeout=require(_0x3d5b('0x3'));var express=require(_0x3d5b('0x4'));var router=express[_0x3d5b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x3d5b('0x6'));var interaction=require(_0x3d5b('0x7'));var config=require('../../config/environment');var controller=require(_0x3d5b('0x8'));router[_0x3d5b('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3d5b('0x9')]('/describe',auth[_0x3d5b('0xa')](),controller[_0x3d5b('0xb')]);router[_0x3d5b('0x9')](_0x3d5b('0xc'),auth['isAuthenticated'](),controller[_0x3d5b('0xd')]);router[_0x3d5b('0xe')]('/',auth[_0x3d5b('0xa')](),controller[_0x3d5b('0xf')]);router['put']('/:id',auth[_0x3d5b('0xa')](),controller['update']);router[_0x3d5b('0x10')]('/:id',auth[_0x3d5b('0xa')](),controller['destroy']);module[_0x3d5b('0x11')]=router;
\ No newline at end of file
index 4539a3d..8f7a646 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4423=['Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','randomstring','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','Chat','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Send','Skip','star','thumb','input','name','text','onlineForm','parse','getDataValue','stringify','textarea','Comments','offlineForm','setDataValue','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion'];(function(_0x4472ad,_0x3cc44b){var _0x356bcb=function(_0x3e9475){while(--_0x3e9475){_0x4472ad['push'](_0x4472ad['shift']());}};_0x356bcb(++_0x3cc44b);}(_0x4423,0x1a9));var _0x3442=function(_0x65c50e,_0x1aa926){_0x65c50e=_0x65c50e-0x0;var _0x4573e7=_0x4423[_0x65c50e];return _0x4573e7;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x3442('0x0'));module[_0x3442('0x1')]={'name':{'type':Sequelize[_0x3442('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0x3442('0x2')],'allowNull':![],'unique':_0x3442('0x3')},'description':{'type':Sequelize['STRING']},'mapKey':{'type':Sequelize[_0x3442('0x2')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x4')},'key':{'type':Sequelize[_0x3442('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x5')},'customerAlias':{'type':Sequelize[_0x3442('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x3442('0x2')],'allowNull':![],'defaultValue':_0x3442('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x3442('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x3442('0x2')],'allowNull':![],'defaultValue':_0x3442('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x3442('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize[_0x3442('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x3442('0xa')](_0x3442('0xb'),_0x3442('0xc')),'defaultValue':_0x3442('0xb')},'header_online':{'type':Sequelize[_0x3442('0x2')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0xd')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':'Send'},'header_offline':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0xe')},'download_transcript':{'type':Sequelize[_0x3442('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x3442('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0xf')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x3442('0x10')]},'closingQuestion':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x11')},'formSubmitSuccessMessage':{'type':Sequelize[_0x3442('0x2')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x12')},'noteTitle':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x13')},'placeholderMessage':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x14')},'closingMessage':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x15')},'closingMessageButton':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x16')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x3442('0x17')},'conditionAgreement':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x3442('0x2')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0x3442('0xa')](_0x3442('0x18'),_0x3442('0x19')),'defaultValue':_0x3442('0x18')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x3442('0x1a'),'variable':null,'config':{'placeholder':_0x3442('0x1b'),'type':_0x3442('0x1c'),'required':!![]},'props':{'title':_0x3442('0x1b'),'helpText':''}},{'type':'input','props':{'title':_0x3442('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x3442('0x4'),'type':_0x3442('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue'](_0x3442('0x1d'))?JSON[_0x3442('0x1e')](this[_0x3442('0x1f')](_0x3442('0x1d'))):{};},'set':function(_0x31aae0){return this['setDataValue']('onlineForm',JSON[_0x3442('0x20')](_0x31aae0));}},'offlineForm':{'type':Sequelize[_0x3442('0x10')],'defaultValue':function(){return JSON[_0x3442('0x20')]({'items':[{'type':_0x3442('0x1a'),'props':{'title':_0x3442('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x3442('0x4'),'type':_0x3442('0x4')},'variable':null},{'type':_0x3442('0x21'),'config':{'placeholder':_0x3442('0x22')},'props':{'title':_0x3442('0x22'),'helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0x3442('0x1f')]('offlineForm')?JSON[_0x3442('0x1e')](this['getDataValue'](_0x3442('0x23'))):{};},'set':function(_0x221c66){return this[_0x3442('0x24')]('offlineForm',JSON[_0x3442('0x20')](_0x221c66));}},'token':{'type':Sequelize[_0x3442('0x2')],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0x3442('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x3442('0x2')]},'forwardOffline':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x3442('0x2')]},'waitingTitle':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x25')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x3442('0x26')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0x3442('0x27')},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':_0x3442('0x28')},'enableUnmanagedNote':{'type':Sequelize[_0x3442('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x29')},'skipUnmanaged':{'type':Sequelize[_0x3442('0x2')],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x16')},'enableCustomerAttachment':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x3442('0x10')]},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0x3442('0x2')]},'notificationTemplate':{'type':Sequelize[_0x3442('0x10')],'defaultValue':function(){return _0x3442('0x2a');}},'notificationSound':{'type':Sequelize[_0x3442('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x2b')},'waitForTheAssignedAgent':{'type':Sequelize[_0x3442('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x2c')},'verticalAlignment':{'type':Sequelize[_0x3442('0x8')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0x3442('0x2d')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x3442('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x3442('0x2e'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3442('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x3442('0x2')],'defaultValue':_0x3442('0x2f')},'systemAvatar':{'type':Sequelize[_0x3442('0x10')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3442('0x8')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![],'comment':_0x3442('0x30'),'set':function(_0x33c8be){if(!_0x33c8be)this[_0x3442('0x24')](_0x3442('0x31'),null);this[_0x3442('0x24')](_0x3442('0x32'),_0x33c8be);}},'vidaooEscalation':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x3442('0x2')]},'vidaooTopic':{'type':Sequelize[_0x3442('0x2')],'allowNull':![],'defaultValue':_0x3442('0x33')},'vidaooNote':{'type':Sequelize[_0x3442('0x2')],'defaultValue':function(){return _0x3442('0x34');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x3442('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x3442('0x10')]}};
\ No newline at end of file
+var _0x3cdc=['input','name','text','getDataValue','onlineForm','parse','setDataValue','textarea','Comments','Leave\x20your\x20comments','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','bottom_right','alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Contact\x20us','Powered\x20by\x20xCALLY','Form\x20properly\x20submitted','Form\x20submission\x20error','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Send','Skip','Feedback','star','thumb','TEXT','stringify'];(function(_0x401214,_0x58512e){var _0x5f2b4c=function(_0x58c861){while(--_0x58c861){_0x401214['push'](_0x401214['shift']());}};_0x5f2b4c(++_0x58512e);}(_0x3cdc,0x1c2));var _0xc3cd=function(_0x11da1e,_0x597cc5){_0x11da1e=_0x11da1e-0x0;var _0x404daa=_0x3cdc[_0x11da1e];return _0x404daa;};'use strict';var Sequelize=require(_0xc3cd('0x0'));var rs=require(_0xc3cd('0x1'));module[_0xc3cd('0x2')]={'name':{'type':Sequelize[_0xc3cd('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0xc3cd('0x3')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0xc3cd('0x3')]},'mapKey':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x4')},'mapKeyOffline':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x4')},'key':{'type':Sequelize[_0xc3cd('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x5')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xc3cd('0x3')],'allowNull':![],'defaultValue':_0xc3cd('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xc3cd('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xc3cd('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xc3cd('0x3')]},'animation':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xc3cd('0xa')](_0xc3cd('0xb'),_0xc3cd('0xc')),'defaultValue':_0xc3cd('0xb')},'header_online':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0xd')},'start_chat_button':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':'Send'},'header_offline':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0xe')},'download_transcript':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0xf')},'defaultWhiteLabel':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':'Do\x20you\x20want\x20to\x20close\x20the\x20interaction?'},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':_0xc3cd('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x11')},'noteTitle':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x12')},'closingMessage':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x13')},'closingMessageButton':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x14')},'skipMessageButton':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x15')},'conditionAgreement':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x16')},'ratingType':{'type':Sequelize[_0xc3cd('0xa')](_0xc3cd('0x17'),_0xc3cd('0x18')),'defaultValue':_0xc3cd('0x17')},'ratingStarsNumber':{'type':Sequelize[_0xc3cd('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xc3cd('0x19')],'defaultValue':function(){return JSON[_0xc3cd('0x1a')]({'items':[{'type':_0xc3cd('0x1b'),'variable':null,'config':{'placeholder':_0xc3cd('0x1c'),'type':_0xc3cd('0x1d'),'required':!![]},'props':{'title':'name','helpText':''}},{'type':_0xc3cd('0x1b'),'props':{'title':_0xc3cd('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xc3cd('0x4'),'type':_0xc3cd('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xc3cd('0x1e')](_0xc3cd('0x1f'))?JSON[_0xc3cd('0x20')](this[_0xc3cd('0x1e')](_0xc3cd('0x1f'))):{};},'set':function(_0x5e0d7c){return this[_0xc3cd('0x21')]('onlineForm',JSON[_0xc3cd('0x1a')](_0x5e0d7c));}},'offlineForm':{'type':Sequelize[_0xc3cd('0x19')],'defaultValue':function(){return JSON[_0xc3cd('0x1a')]({'items':[{'type':_0xc3cd('0x1b'),'props':{'title':_0xc3cd('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xc3cd('0x4'),'type':'email'},'variable':null},{'type':_0xc3cd('0x22'),'config':{'placeholder':_0xc3cd('0x23')},'props':{'title':_0xc3cd('0x23'),'helpText':_0xc3cd('0x24')}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0xc3cd('0x25'))?JSON[_0xc3cd('0x20')](this['getDataValue'](_0xc3cd('0x25'))):{};},'set':function(_0x547fa8){return this[_0xc3cd('0x21')]('offlineForm',JSON['stringify'](_0x547fa8));}},'token':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':function(){return rs[_0xc3cd('0x26')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xc3cd('0x3')]},'forwardOffline':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x27')},'waitingMessage':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x28')},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':_0xc3cd('0x29')},'enableUnmanagedNote':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x2a')},'skipUnmanaged':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x15')},'sendUnmanaged':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x14')},'enableCustomerAttachment':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xc3cd('0x19')]},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0xc3cd('0x19')],'defaultValue':function(){return _0xc3cd('0x2b');}},'notificationSound':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize[_0xc3cd('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x2c')},'verticalAlignment':{'type':Sequelize[_0xc3cd('0x8')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':_0xc3cd('0x2d')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0xc3cd('0x19')]},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xc3cd('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xc3cd('0x3')],'allowNull':![],'defaultValue':_0xc3cd('0x2e'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc3cd('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xc3cd('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize['STRING'],'defaultValue':_0xc3cd('0x2f')},'systemAvatar':{'type':Sequelize[_0xc3cd('0x19')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![],'comment':_0xc3cd('0x30'),'set':function(_0x337150){if(!_0x337150)this[_0xc3cd('0x21')](_0xc3cd('0x31'),null);this['setDataValue'](_0xc3cd('0x32'),_0x337150);}},'vidaooEscalation':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xc3cd('0x3')]},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xc3cd('0x33')},'vidaooNote':{'type':Sequelize[_0xc3cd('0x3')],'defaultValue':function(){return _0xc3cd('0x34');}},'vidaooMetadata':{'type':Sequelize[_0xc3cd('0x19')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xc3cd('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 914e910..7e6a4ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0139=['addApplications','findAndCountAll','getApplications','addProactiveActions','online','false','offlineForm','onlineForm','items','getOfflineMessages','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','eml-format','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','jayson/promise','http','client','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','apply','save','update','get','ChatWebsites','UserProfileResource','end','name','send','index','Pause','mandatoryDispositionPause','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','ChatWebsite','count','includeAll','include','findAll','rows','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','hasOwnProperty','removeDispositions','addAnswer','CannedAnswer','removeAnswers','ids','addLogo','filename','addAvatar','file','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','root','server/files/images/logos/default_logo.svg','sitepic','getLicense','custom','isNil','join','server/files/images/logos/','download','agentAvatar','existsSync','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','headers','getResult','chat','Sequelize','updatedAt','difference','createdAt','CompanyId','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','from','List','CmContact','Contacts','DESC','ChatApplication','Applications','applications','list','orderBy','priority','account','ListId','contact','cf-connecting-ip','split','firstName','lastName','x-real-port','referer','browser','version','format','unknown','device','vendor','stringify','threadId','externalUrl','ChatInteraction','ContactId','interaction','spread','messageId','created','autoclose','push','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','agent','forcedOwnership','Start','EventManager','offline','files','no\x20available\x20attributes','from\x20is\x20mandatory','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','findOrCreate','readFileSync','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','server','attachments','offline-chat','basename','openNewInteraction','transaction','Attachment','bulkCreate','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','auth','user','pass','SendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','subjectOffline','toPairsIn','mapValues','MailAccountId','NotifyMailAccount','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','Owner','fullname','color','tag','Command','getSnippet','iftime\x20%s,%s','interval','timezone','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','virtual','License','increment','chatLicenseExceeded','all','some','server/files/chat/iframe.ejs','utf8','remote','x-forwarded-for','x-real-ip','connection','remoteAddress','replace','alignment','verticalAlignment','textColor','backgroundColor'];(function(_0x37bb69,_0x45d9cc){var _0x2bfa4e=function(_0x5799e8){while(--_0x5799e8){_0x37bb69['push'](_0x37bb69['shift']());}};_0x2bfa4e(++_0x45d9cc);}(_0x0139,0x141));var _0x9013=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0139[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x9013('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9013('0x1'));var rp=require('request-promise');var moment=require(_0x9013('0x2'));var BPromise=require(_0x9013('0x3'));var Mustache=require(_0x9013('0x4'));var util=require(_0x9013('0x5'));var path=require('path');var sox=require(_0x9013('0x6'));var csv=require(_0x9013('0x7'));var ejs=require(_0x9013('0x8'));var fs=require('fs');var fs_extra=require(_0x9013('0x9'));var _=require('lodash');var squel=require(_0x9013('0xa'));var crypto=require(_0x9013('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x9013('0xc'));var toCsv=require(_0x9013('0x7'));var querystring=require(_0x9013('0xd'));var Papa=require('papaparse');var Redis=require(_0x9013('0xe'));var authService=require(_0x9013('0xf'));var qs=require(_0x9013('0x10'));var as=require(_0x9013('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9013('0x12'))('api');var utils=require(_0x9013('0x13'));var config=require(_0x9013('0x14'));var licenseUtil=require(_0x9013('0x15'));var db=require(_0x9013('0x16'))['db'];config[_0x9013('0x17')]=_[_0x9013('0x18')](config[_0x9013('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x9013('0x19'))(new Redis(config[_0x9013('0x17')]));require('./chatWebsite.socket')[_0x9013('0x1a')](socket);var jayson=require(_0x9013('0x1b'));var client=jayson['client'][_0x9013('0x1c')]({'port':0x232c});var client9002=jayson[_0x9013('0x1d')][_0x9013('0x1c')]({'port':0x232a});var client9003=jayson[_0x9013('0x1d')][_0x9013('0x1c')]({'port':0x232b});var client9001=jayson[_0x9013('0x1d')]['http']({'port':0x2329});function respondWithRpcPromise(_0x40b7fd,_0x51eed1,_0x1a6a82,_0x161913){return new BPromise(function(_0x47c61f,_0x39cef1){var _0x53bde8=_0x161913||client;return _0x53bde8[_0x9013('0x1e')](_0x40b7fd,_0x1a6a82)[_0x9013('0x1f')](function(_0x2362d4){logger[_0x9013('0x20')](_0x9013('0x21'),_0x51eed1,_0x9013('0x22'));logger[_0x9013('0x23')](_0x9013('0x24'),_0x51eed1,_0x9013('0x22'),JSON['stringify'](_0x2362d4));if(_0x2362d4[_0x9013('0x25')]){if(_0x2362d4[_0x9013('0x25')][_0x9013('0x26')]===0x1f4){logger['error'](_0x9013('0x21'),_0x51eed1,_0x2362d4[_0x9013('0x25')][_0x9013('0x27')]);return _0x39cef1(_0x2362d4[_0x9013('0x25')][_0x9013('0x27')]);}logger[_0x9013('0x25')](_0x9013('0x21'),_0x51eed1,_0x2362d4['error'][_0x9013('0x27')]);return _0x47c61f(_0x2362d4['error'][_0x9013('0x27')]);}else{logger['info'](_0x9013('0x21'),_0x51eed1,_0x9013('0x22'));_0x47c61f(_0x2362d4[_0x9013('0x28')]['message']);}})[_0x9013('0x29')](function(_0x3b22f2){logger[_0x9013('0x25')](_0x9013('0x21'),_0x51eed1,_0x3b22f2);_0x39cef1(_0x3b22f2);});});}function respondWithStatusCode(_0xeca71f,_0x340dc3){_0x340dc3=_0x340dc3||0xcc;return function(_0x2aa4c1){if(_0x2aa4c1){return _0xeca71f[_0x9013('0x2a')](_0x340dc3);}return _0xeca71f[_0x9013('0x2b')](_0x340dc3)['end']();};}function respondWithResult(_0x6884fc,_0x26f8df){_0x26f8df=_0x26f8df||0xc8;return function(_0x51e11d){if(_0x51e11d){return _0x6884fc[_0x9013('0x2b')](_0x26f8df)[_0x9013('0x2c')](_0x51e11d);}};}function respondWithFilteredResult(_0x30e784,_0x5036db){return function(_0x15d2a0){if(_0x15d2a0){var _0x11adc1=typeof _0x5036db[_0x9013('0x2d')]===_0x9013('0x2e')&&typeof _0x5036db[_0x9013('0x2f')]===_0x9013('0x2e');var _0x22e2b9=_0x15d2a0['count'];var _0x4074c1=_0x11adc1?0x0:_0x5036db[_0x9013('0x2d')];var _0x244f01=_0x11adc1?_0x15d2a0['count']:_0x5036db[_0x9013('0x2d')]+_0x5036db[_0x9013('0x2f')];var _0x520c2b;if(_0x244f01>=_0x22e2b9){_0x244f01=_0x22e2b9;_0x520c2b=0xc8;}else{_0x520c2b=0xce;}_0x30e784[_0x9013('0x2b')](_0x520c2b);return _0x30e784['set']('Content-Range',_0x4074c1+'-'+_0x244f01+'/'+_0x22e2b9)[_0x9013('0x2c')](_0x15d2a0);}return null;};}function patchUpdates(_0x292770){return function(_0x28ab5c){try{jsonpatch[_0x9013('0x30')](_0x28ab5c,_0x292770,!![]);}catch(_0x559db3){return BPromise['reject'](_0x559db3);}return _0x28ab5c[_0x9013('0x31')]();};}function saveUpdates(_0x4e8af5,_0x12b108){return function(_0x490a27){if(_0x490a27){return _0x490a27[_0x9013('0x32')](_0x4e8af5)[_0x9013('0x1f')](function(_0x27084b){return _0x27084b;});}return null;};}function removeEntity(_0xbe9655,_0x142ad8){return function(_0x20fa00){if(_0x20fa00){return _0x20fa00['destroy']()['then'](function(){var _0x56c55f=_0x20fa00[_0x9013('0x33')]({'plain':!![]});var _0x412d1d=_0x9013('0x34');return db[_0x9013('0x35')]['destroy']({'where':{'type':_0x412d1d,'resourceId':_0x56c55f['id']}})[_0x9013('0x1f')](function(){return _0x20fa00;});})[_0x9013('0x1f')](function(){_0xbe9655['status'](0xcc)[_0x9013('0x36')]();});}};}function handleEntityNotFound(_0x107d22,_0x33e6de){return function(_0x21df8f){if(!_0x21df8f){_0x107d22['sendStatus'](0x194);}return _0x21df8f;};}function handleError(_0x22b792,_0x14a05c){_0x14a05c=_0x14a05c||0x1f4;return function(_0x473477){logger['error'](_0x473477['stack']);if(_0x473477[_0x9013('0x37')]){delete _0x473477[_0x9013('0x37')];}_0x22b792[_0x9013('0x2b')](_0x14a05c)[_0x9013('0x38')](_0x473477);};}exports[_0x9013('0x39')]=function(_0x290dc5,_0x3d9f73){var _0x2b7bd3={'include':[{'model':db[_0x9013('0x3a')],'as':_0x9013('0x3b')}]},_0x2acc9d={},_0x43b442={'count':0x0,'rows':[]};var _0x2c6fa6=_['map'](db['ChatWebsite'][_0x9013('0x3c')],function(_0x5b443a){return{'name':_0x5b443a[_0x9013('0x3d')],'type':_0x5b443a[_0x9013('0x3e')][_0x9013('0x3f')]};});_0x2acc9d['model']=_[_0x9013('0x40')](_0x2c6fa6,_0x9013('0x37'));_0x2acc9d[_0x9013('0x41')]=_[_0x9013('0x42')](_0x290dc5[_0x9013('0x41')]);_0x2acc9d[_0x9013('0x43')]=_[_0x9013('0x44')](_0x2acc9d[_0x9013('0x45')],_0x2acc9d['query']);_0x2b7bd3[_0x9013('0x46')]=_[_0x9013('0x44')](_0x2acc9d[_0x9013('0x45')],qs[_0x9013('0x47')](_0x290dc5[_0x9013('0x41')][_0x9013('0x47')]));_0x2b7bd3[_0x9013('0x46')]=_0x2b7bd3[_0x9013('0x46')][_0x9013('0x48')]?_0x2b7bd3[_0x9013('0x46')]:_0x2acc9d[_0x9013('0x45')];if(!_0x290dc5['query']['hasOwnProperty'](_0x9013('0x49'))){_0x2b7bd3[_0x9013('0x2f')]=qs[_0x9013('0x2f')](_0x290dc5[_0x9013('0x41')][_0x9013('0x2f')]);_0x2b7bd3[_0x9013('0x2d')]=qs[_0x9013('0x2d')](_0x290dc5[_0x9013('0x41')][_0x9013('0x2d')]);}_0x2b7bd3[_0x9013('0x4a')]=qs[_0x9013('0x4b')](_0x290dc5[_0x9013('0x41')][_0x9013('0x4b')]);_0x2b7bd3[_0x9013('0x4c')]=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0x290dc5[_0x9013('0x41')],_0x2acc9d[_0x9013('0x43')]),_0x2c6fa6);if(_0x290dc5[_0x9013('0x41')]['filter']){_0x2b7bd3[_0x9013('0x4c')]=_['merge'](_0x2b7bd3['where'],{'$or':_[_0x9013('0x40')](_0x2c6fa6,function(_0x5ddfd8){if(_0x5ddfd8['type']!==_0x9013('0x4e')){var _0x314f48={};_0x314f48[_0x5ddfd8[_0x9013('0x37')]]={'$like':'%'+_0x290dc5[_0x9013('0x41')][_0x9013('0x4f')]+'%'};return _0x314f48;}})});}_0x2b7bd3=_[_0x9013('0x50')]({},_0x2b7bd3,_0x290dc5[_0x9013('0x51')]);var _0x2eda26={'where':_0x2b7bd3['where']};return db[_0x9013('0x52')][_0x9013('0x53')](_0x2eda26)[_0x9013('0x1f')](function(_0x1946d4){_0x43b442[_0x9013('0x53')]=_0x1946d4;if(_0x290dc5[_0x9013('0x41')][_0x9013('0x54')]){_0x2b7bd3[_0x9013('0x55')]=[{'all':!![]}];}return db['ChatWebsite'][_0x9013('0x56')](_0x2b7bd3);})[_0x9013('0x1f')](function(_0x337a5c){_0x43b442[_0x9013('0x57')]=_0x337a5c;return _0x43b442;})[_0x9013('0x1f')](respondWithFilteredResult(_0x3d9f73,_0x2b7bd3))[_0x9013('0x29')](handleError(_0x3d9f73,null));};exports['show']=function(_0x1cd127,_0x4fca6a){var _0x136943={'raw':![],'where':{'id':_0x1cd127['params']['id']},'include':[{'model':db[_0x9013('0x3a')],'as':_0x9013('0x3b')}]},_0x441e34={};_0x441e34[_0x9013('0x45')]=_[_0x9013('0x42')](db[_0x9013('0x52')]['rawAttributes']);_0x441e34[_0x9013('0x41')]=_[_0x9013('0x42')](_0x1cd127[_0x9013('0x41')]);_0x441e34[_0x9013('0x43')]=_[_0x9013('0x44')](_0x441e34['model'],_0x441e34[_0x9013('0x41')]);_0x136943[_0x9013('0x46')]=_[_0x9013('0x44')](_0x441e34[_0x9013('0x45')],qs[_0x9013('0x47')](_0x1cd127[_0x9013('0x41')]['fields']));_0x136943[_0x9013('0x46')]=_0x136943['attributes'][_0x9013('0x48')]?_0x136943[_0x9013('0x46')]:_0x441e34[_0x9013('0x45')];if(_0x1cd127[_0x9013('0x41')]['includeAll']){_0x136943[_0x9013('0x55')]=[{'all':!![]}];}_0x136943=_[_0x9013('0x50')]({},_0x136943,_0x1cd127[_0x9013('0x51')]);return db[_0x9013('0x52')][_0x9013('0x58')](_0x136943)[_0x9013('0x1f')](handleEntityNotFound(_0x4fca6a,null))[_0x9013('0x1f')](respondWithResult(_0x4fca6a,null))[_0x9013('0x29')](handleError(_0x4fca6a,null));};exports['create']=function(_0xfe39a7,_0x7eb5a4){return db['ChatWebsite'][_0x9013('0x59')](_0xfe39a7[_0x9013('0x5a')],{})[_0x9013('0x1f')](function(_0x4d493f){var _0x2ce2c3=_0xfe39a7['user'][_0x9013('0x33')]({'plain':!![]});if(!_0x2ce2c3)throw new Error(_0x9013('0x5b'));if(_0x2ce2c3['role']==='user'){var _0xe3f15b=_0x4d493f['get']({'plain':!![]});var _0x15332f=_0x9013('0x34');return db[_0x9013('0x5c')][_0x9013('0x58')]({'where':{'name':_0x15332f,'userProfileId':_0x2ce2c3['userProfileId']},'raw':!![]})[_0x9013('0x1f')](function(_0x33482a){if(_0x33482a&&_0x33482a['autoAssociation']===0x0){return db[_0x9013('0x35')]['create']({'name':_0xe3f15b['name'],'resourceId':_0xe3f15b['id'],'type':_0x33482a[_0x9013('0x37')],'sectionId':_0x33482a['id']},{})[_0x9013('0x1f')](function(){return _0x4d493f;});}else{return _0x4d493f;}})[_0x9013('0x29')](function(_0x3be9f4){logger['error'](_0x9013('0x5d'),_0x3be9f4);throw _0x3be9f4;});}return _0x4d493f;})[_0x9013('0x1f')](respondWithResult(_0x7eb5a4,0xc9))[_0x9013('0x29')](handleError(_0x7eb5a4,null));};exports[_0x9013('0x32')]=function(_0x3ccbd5,_0x3e6343){if(_0x3ccbd5[_0x9013('0x5a')]['id']){delete _0x3ccbd5[_0x9013('0x5a')]['id'];}return db['ChatWebsite'][_0x9013('0x58')]({'where':{'id':_0x3ccbd5[_0x9013('0x5e')]['id']},'include':[{'model':db[_0x9013('0x3a')],'as':_0x9013('0x3b')}]})[_0x9013('0x1f')](handleEntityNotFound(_0x3e6343,null))[_0x9013('0x1f')](saveUpdates(_0x3ccbd5[_0x9013('0x5a')],null))['then'](respondWithResult(_0x3e6343,null))['catch'](handleError(_0x3e6343,null));};exports[_0x9013('0x5f')]=function(_0x44a13c,_0x4cb939){return db[_0x9013('0x52')]['find']({'where':{'id':_0x44a13c[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x4cb939,null))['then'](removeEntity(_0x4cb939,null))[_0x9013('0x29')](handleError(_0x4cb939,null));};exports[_0x9013('0x60')]=function(_0x3fa345,_0x526102){return db[_0x9013('0x52')][_0x9013('0x60')]()[_0x9013('0x1f')](respondWithResult(_0x526102,null))[_0x9013('0x29')](handleError(_0x526102,null));};exports[_0x9013('0x61')]=function(_0x33c1ab,_0x484d39,_0x440a36){if(_0x33c1ab[_0x9013('0x5a')]['id']){delete _0x33c1ab['body']['id'];}return db['ChatWebsite'][_0x9013('0x58')]({'where':{'id':_0x33c1ab['params']['id']}})['then'](handleEntityNotFound(_0x484d39,null))[_0x9013('0x1f')](function(_0x2273c4){if(_0x2273c4){_0x33c1ab['body'][_0x9013('0x62')]=_0x2273c4['id'];return db[_0x9013('0x63')]['create'](_0x33c1ab[_0x9013('0x5a')]);}})['then'](respondWithResult(_0x484d39,null))[_0x9013('0x29')](handleError(_0x484d39,null));};exports[_0x9013('0x64')]=function(_0x47e3cf,_0x37ffa2,_0x51552b){var _0xe20da={'raw':![],'where':{}};var _0x4e2a94={};var _0x3191eb={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x9013('0x65')]({'where':{'id':_0x47e3cf['params']['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x37ffa2,null))['then'](function(_0x389d1f){if(_0x389d1f){_0x4e2a94[_0x9013('0x45')]=_[_0x9013('0x42')](db[_0x9013('0x63')][_0x9013('0x3c')]);_0x4e2a94['query']=_[_0x9013('0x42')](_0x47e3cf[_0x9013('0x41')]);_0x4e2a94['filters']=_[_0x9013('0x44')](_0x4e2a94[_0x9013('0x45')],_0x4e2a94[_0x9013('0x41')]);_0xe20da['attributes']=_[_0x9013('0x44')](_0x4e2a94[_0x9013('0x45')],qs[_0x9013('0x47')](_0x47e3cf['query'][_0x9013('0x47')]));_0xe20da[_0x9013('0x46')]=_0xe20da['attributes']['length']?_0xe20da[_0x9013('0x46')]:_0x4e2a94['model'];if(!_0x47e3cf[_0x9013('0x41')][_0x9013('0x66')](_0x9013('0x49'))){_0xe20da[_0x9013('0x2f')]=qs['limit'](_0x47e3cf['query'][_0x9013('0x2f')]);_0xe20da['offset']=qs[_0x9013('0x2d')](_0x47e3cf[_0x9013('0x41')][_0x9013('0x2d')]);}_0xe20da[_0x9013('0x4a')]=qs[_0x9013('0x4b')](_0x47e3cf[_0x9013('0x41')][_0x9013('0x4b')]);_0xe20da[_0x9013('0x4c')]=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0x47e3cf[_0x9013('0x41')],_0x4e2a94['filters']));_0xe20da['where'][_0x9013('0x62')]=_0x389d1f['id'];if(_0x47e3cf[_0x9013('0x41')][_0x9013('0x4f')]){_0xe20da[_0x9013('0x4c')]=_[_0x9013('0x50')](_0xe20da[_0x9013('0x4c')],{'$or':_[_0x9013('0x40')](_0xe20da['attributes'],function(_0x3a56a6){var _0x2b5a51={};_0x2b5a51[_0x3a56a6]={'$like':'%'+_0x47e3cf['query'][_0x9013('0x4f')]+'%'};return _0x2b5a51;})});}_0xe20da=_[_0x9013('0x50')]({},_0xe20da,_0x47e3cf[_0x9013('0x51')]);return db[_0x9013('0x63')][_0x9013('0x53')]({'where':_0xe20da['where']})[_0x9013('0x1f')](function(_0x270667){_0x3191eb[_0x9013('0x53')]=_0x270667;if(_0x47e3cf[_0x9013('0x41')][_0x9013('0x54')]){_0xe20da['include']=[{'all':!![]}];}return db[_0x9013('0x63')][_0x9013('0x56')](_0xe20da);})['then'](function(_0x332471){_0x3191eb[_0x9013('0x57')]=_0x332471;return _0x3191eb;});}})['then'](respondWithFilteredResult(_0x37ffa2,_0xe20da))[_0x9013('0x29')](handleError(_0x37ffa2,null));};exports[_0x9013('0x67')]=function(_0x48752a,_0x49b43c,_0x113e3d){return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x48752a[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x49b43c,null))[_0x9013('0x1f')](function(_0x1a889d){if(_0x1a889d){return _0x1a889d[_0x9013('0x67')](_0x48752a[_0x9013('0x41')]['ids']);}})['then'](respondWithStatusCode(_0x49b43c,null))[_0x9013('0x29')](handleError(_0x49b43c,null));};exports[_0x9013('0x68')]=function(_0x158004,_0x56824e,_0x3aacd3){if(_0x158004[_0x9013('0x5a')]['id']){delete _0x158004[_0x9013('0x5a')]['id'];}return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x158004[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x56824e,null))[_0x9013('0x1f')](function(_0x3102d5){if(_0x3102d5){_0x158004['body']['ChatWebsiteId']=_0x3102d5['id'];return db['CannedAnswer'][_0x9013('0x59')](_0x158004['body']);}})[_0x9013('0x1f')](respondWithResult(_0x56824e,null))['catch'](handleError(_0x56824e,null));};exports['getAnswers']=function(_0x5ce458,_0x232b1c,_0x420595){var _0x3ef102={'raw':![],'where':{}};var _0x56023a={};var _0x5ee467={'count':0x0,'rows':[]};return db[_0x9013('0x52')][_0x9013('0x65')]({'where':{'id':_0x5ce458['params']['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x232b1c,null))[_0x9013('0x1f')](function(_0x24ffea){if(_0x24ffea){_0x56023a[_0x9013('0x45')]=_[_0x9013('0x42')](db[_0x9013('0x69')][_0x9013('0x3c')]);_0x56023a[_0x9013('0x41')]=_['keys'](_0x5ce458[_0x9013('0x41')]);_0x56023a[_0x9013('0x43')]=_['intersection'](_0x56023a[_0x9013('0x45')],_0x56023a['query']);_0x3ef102[_0x9013('0x46')]=_['intersection'](_0x56023a[_0x9013('0x45')],qs['fields'](_0x5ce458['query'][_0x9013('0x47')]));_0x3ef102[_0x9013('0x46')]=_0x3ef102[_0x9013('0x46')]['length']?_0x3ef102[_0x9013('0x46')]:_0x56023a[_0x9013('0x45')];if(!_0x5ce458[_0x9013('0x41')][_0x9013('0x66')](_0x9013('0x49'))){_0x3ef102[_0x9013('0x2f')]=qs[_0x9013('0x2f')](_0x5ce458[_0x9013('0x41')][_0x9013('0x2f')]);_0x3ef102[_0x9013('0x2d')]=qs[_0x9013('0x2d')](_0x5ce458[_0x9013('0x41')][_0x9013('0x2d')]);}_0x3ef102[_0x9013('0x4a')]=qs[_0x9013('0x4b')](_0x5ce458[_0x9013('0x41')]['sort']);_0x3ef102[_0x9013('0x4c')]=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0x5ce458['query'],_0x56023a[_0x9013('0x43')]));_0x3ef102[_0x9013('0x4c')][_0x9013('0x62')]=_0x24ffea['id'];if(_0x5ce458[_0x9013('0x41')][_0x9013('0x4f')]){_0x3ef102['where']=_[_0x9013('0x50')](_0x3ef102[_0x9013('0x4c')],{'$or':_[_0x9013('0x40')](_0x3ef102[_0x9013('0x46')],function(_0x1a58f4){var _0x341790={};_0x341790[_0x1a58f4]={'$like':'%'+_0x5ce458[_0x9013('0x41')][_0x9013('0x4f')]+'%'};return _0x341790;})});}_0x3ef102=_['merge']({},_0x3ef102,_0x5ce458[_0x9013('0x51')]);return db['CannedAnswer'][_0x9013('0x53')]({'where':_0x3ef102['where']})['then'](function(_0x45dc2c){_0x5ee467['count']=_0x45dc2c;if(_0x5ce458[_0x9013('0x41')][_0x9013('0x54')]){_0x3ef102[_0x9013('0x55')]=[{'all':!![]}];}return db[_0x9013('0x69')][_0x9013('0x56')](_0x3ef102);})[_0x9013('0x1f')](function(_0x18e69c){_0x5ee467[_0x9013('0x57')]=_0x18e69c;return _0x5ee467;});}})[_0x9013('0x1f')](respondWithFilteredResult(_0x232b1c,_0x3ef102))[_0x9013('0x29')](handleError(_0x232b1c,null));};exports['removeAnswers']=function(_0x45abc2,_0x586ffc,_0x3add70){return db['ChatWebsite'][_0x9013('0x58')]({'where':{'id':_0x45abc2['params']['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x586ffc,null))[_0x9013('0x1f')](function(_0x3b642c){if(_0x3b642c){return _0x3b642c[_0x9013('0x6a')](_0x45abc2[_0x9013('0x41')][_0x9013('0x6b')]);}})[_0x9013('0x1f')](respondWithStatusCode(_0x586ffc,null))[_0x9013('0x29')](handleError(_0x586ffc,null));};exports[_0x9013('0x6c')]=function(_0x58c43c,_0x396d67,_0x152f4e){_0x58c43c[_0x9013('0x5a')]['sitepic']=_0x58c43c['file'][_0x9013('0x6d')];return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x58c43c['params']['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x396d67,null))[_0x9013('0x1f')](saveUpdates(_0x58c43c[_0x9013('0x5a')],null))['then'](respondWithResult(_0x396d67,null))['catch'](handleError(_0x396d67,null));};exports[_0x9013('0x6e')]=function(_0x123846,_0x43ae70,_0x5ee425){_0x123846[_0x9013('0x5a')]['agentAvatar']=_0x123846[_0x9013('0x6f')][_0x9013('0x6d')];return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x123846[_0x9013('0x5e')]['id']}})['then'](handleEntityNotFound(_0x43ae70,null))[_0x9013('0x1f')](saveUpdates(_0x123846['body'],null))[_0x9013('0x1f')](respondWithResult(_0x43ae70,null))['catch'](handleError(_0x43ae70,null));};exports[_0x9013('0x70')]=function(_0x3d96b2,_0x5bde83,_0xb0fe8f){_0x3d96b2['body'][_0x9013('0x71')]=_0x3d96b2['file']['filename'];return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x3d96b2[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x5bde83,null))['then'](saveUpdates(_0x3d96b2[_0x9013('0x5a')],null))[_0x9013('0x1f')](respondWithResult(_0x5bde83,null))[_0x9013('0x29')](handleError(_0x5bde83,null));};exports[_0x9013('0x72')]=function(_0x28c372,_0x369fe9,_0x1f35e9){_0x28c372[_0x9013('0x5a')][_0x9013('0x73')]=_0x28c372['file'][_0x9013('0x6d')];return db[_0x9013('0x52')]['find']({'where':{'id':_0x28c372[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x369fe9,null))[_0x9013('0x1f')](saveUpdates(_0x28c372[_0x9013('0x5a')],null))[_0x9013('0x1f')](respondWithResult(_0x369fe9,null))[_0x9013('0x29')](handleError(_0x369fe9,null));};exports[_0x9013('0x74')]=function(_0x88f97e,_0x3acadc,_0x3d90da){var _0x59fec7=path['join'](config[_0x9013('0x75')],_0x9013('0x76'));var _0xe291e3={'where':{'id':_0x88f97e[_0x9013('0x5e')]['id']},'attributes':['id',_0x9013('0x77')],'raw':!![]};var _0x201343=![];return require('../../config/license/util')[_0x9013('0x78')]()['then'](function(_0x224ba4){if(_0x224ba4){_0x201343=_0x224ba4[_0x9013('0x79')];}})['then'](function(){return db[_0x9013('0x52')][_0x9013('0x58')](_0xe291e3);})[_0x9013('0x1f')](handleEntityNotFound(_0x3acadc,null))[_0x9013('0x1f')](function(_0x638e8f){if(_0x638e8f){if(!_[_0x9013('0x7a')](_0x638e8f['sitepic'])){if(fs['existsSync'](path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x7c'),_0x638e8f['sitepic']))&&_0x201343){_0x59fec7=path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x7c'),_0x638e8f[_0x9013('0x77')]);}}return _0x3acadc[_0x9013('0x7d')](_0x59fec7);}})['catch'](handleError(_0x3acadc,null));};exports['getAvatar']=function(_0x3f40f3,_0xba735c,_0x328aea){var _0x73ef82=path[_0x9013('0x7b')](config['root'],'server/files/images/avatars/default_avatar.png');var _0x222abd={'where':{'id':_0x3f40f3[_0x9013('0x5e')]['id']},'attributes':['id',_0x9013('0x7e')],'raw':!![]};return db[_0x9013('0x52')][_0x9013('0x58')](_0x222abd)[_0x9013('0x1f')](handleEntityNotFound(_0xba735c,null))['then'](function(_0x1d97b9){if(_0x1d97b9){if(!_[_0x9013('0x7a')](_0x1d97b9[_0x9013('0x7e')])){if(fs[_0x9013('0x7f')](path[_0x9013('0x7b')](config['root'],_0x9013('0x80'),_0x1d97b9[_0x9013('0x7e')]))){_0x73ef82=path['join'](config[_0x9013('0x75')],_0x9013('0x80'),_0x1d97b9[_0x9013('0x7e')]);}}return _0xba735c[_0x9013('0x7d')](_0x73ef82);}})['catch'](handleError(_0xba735c,null));};exports[_0x9013('0x81')]=function(_0x3cb932,_0x3d81e1,_0x116c03){var _0x1d1d96=path[_0x9013('0x7b')](config['root'],_0x9013('0x82'));var _0x35f26a={'where':{'id':_0x3cb932[_0x9013('0x5e')]['id']},'attributes':['id',_0x9013('0x71'),_0x9013('0x83')],'raw':!![]};return db[_0x9013('0x52')]['find'](_0x35f26a)['then'](handleEntityNotFound(_0x3d81e1,null))['then'](function(_0xea9024){if(_0xea9024){if(!_[_0x9013('0x7a')](_0xea9024[_0x9013('0x71')])){if(fs[_0x9013('0x7f')](path[_0x9013('0x7b')](config['root'],'server/files/images/avatars/',_0xea9024[_0x9013('0x71')]))&&_0xea9024[_0x9013('0x83')]){_0x1d1d96=path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x80'),_0xea9024['customerAvatar']);}}return _0x3d81e1[_0x9013('0x7d')](_0x1d1d96);}})[_0x9013('0x29')](handleError(_0x3d81e1,null));};exports[_0x9013('0x84')]=function(_0x1a72ec,_0x3c7419,_0x4a2e35){var _0x583514=path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x85'));var _0x90b0b6={'where':{'id':_0x1a72ec['params']['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0x9013('0x52')]['find'](_0x90b0b6)[_0x9013('0x1f')](handleEntityNotFound(_0x3c7419,null))['then'](function(_0x27e7b0){if(_0x27e7b0){if(!_[_0x9013('0x7a')](_0x27e7b0[_0x9013('0x73')])){if(fs[_0x9013('0x7f')](path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x80'),_0x27e7b0[_0x9013('0x73')]))){_0x583514=path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x80'),_0x27e7b0[_0x9013('0x73')]);}}return _0x3c7419['download'](_0x583514);}})[_0x9013('0x29')](handleError(_0x3c7419,null));};exports[_0x9013('0x86')]=function(_0x29bfc4,_0x33dd57,_0x2834bd){var _0x454bf7=require(_0x9013('0x87'));var _0x542dd4=new _0x454bf7();var _0x1a498d=_0x542dd4['setUA'](_0x29bfc4[_0x9013('0x88')]['user-agent'])[_0x9013('0x89')]();var _0x2b9cdf={'body':_0x29bfc4[_0x9013('0x5a')],'channel':_0x9013('0x8a')};var _0xf36437=[];var _0x26e3c1=[];var _0x4aa539={};var _0x2b5bcb=![];return db['CmContact'][_0x9013('0x60')]()['then'](function(_0x2a7941){if(!_0x2a7941){throw new db[(_0x9013('0x8b'))]['ValidationError']('no\x20available\x20attributes');}_0xf36437=_['difference'](_[_0x9013('0x42')](_0x2a7941),['createdAt',_0x9013('0x8c')]);_0x26e3c1=_[_0x9013('0x8d')](_['keys'](_0x2a7941),[_0x9013('0x8e'),_0x9013('0x8c'),_0x9013('0x8f'),'ListId']);if(_0x29bfc4[_0x9013('0x5a')]['id']){delete _0x29bfc4[_0x9013('0x5a')]['id'];}if(_[_0x9013('0x7a')](_0x29bfc4[_0x9013('0x5a')]['from'])){throw new db['Sequelize'][(_0x9013('0x90'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x29bfc4['body'][_0x9013('0x5a')])||_0x29bfc4[_0x9013('0x5a')]['body']===''){throw new db['Sequelize'][(_0x9013('0x90'))](_0x9013('0x91'));}if(_[_0x9013('0x7a')](_0x29bfc4[_0x9013('0x5a')]['mapKey'])){throw new db[(_0x9013('0x8b'))][(_0x9013('0x90'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x26e3c1);}if(!_[_0x9013('0x92')](_0x26e3c1,_0x29bfc4['body']['mapKey'])){throw new db[(_0x9013('0x8b'))][(_0x9013('0x90'))](_0x9013('0x93')+_0x26e3c1);}_0x4aa539[_0x29bfc4[_0x9013('0x5a')][_0x9013('0x94')]]=_0x29bfc4[_0x9013('0x5a')][_0x9013('0x95')];})[_0x9013('0x1f')](function(){return db[_0x9013('0x52')]['find']({'where':{'id':_0x29bfc4[_0x9013('0x5e')]['id']},'include':[{'model':db['CmList'],'as':_0x9013('0x96'),'include':[{'model':db[_0x9013('0x97')],'as':_0x9013('0x98'),'where':_0x4aa539,'limit':0x1,'order':[['updatedAt',_0x9013('0x99')]]}]},{'model':db[_0x9013('0x9a')],'as':_0x9013('0x9b')}]});})['then'](handleEntityNotFound(_0x33dd57,null))[_0x9013('0x1f')](function(_0x8cd2d4){if(_0x8cd2d4&&_0x8cd2d4[_0x9013('0x96')]){_0x2b9cdf['account']=_0x8cd2d4;_0x2b9cdf[_0x9013('0x9c')]=_0x8cd2d4['Applications'];_0x2b9cdf[_0x9013('0x9d')]=_0x8cd2d4[_0x9013('0x96')];_0x2b9cdf[_0x9013('0x9c')]=_[_0x9013('0x9e')](_0x2b9cdf[_0x9013('0x9c')],[_0x9013('0x9f')],['asc']);if(_0x2b9cdf['account'][_0x9013('0x9b')]){delete _0x2b9cdf[_0x9013('0xa0')][_0x9013('0x9b')];}if(_0x2b9cdf[_0x9013('0xa0')][_0x9013('0x96')]&&_0x2b9cdf[_0x9013('0xa0')][_0x9013('0x96')][_0x9013('0x98')][_0x9013('0x48')]){return _0x2b9cdf[_0x9013('0xa0')][_0x9013('0x96')][_0x9013('0x98')][0x0];}var _0x3c711d=_['defaults'](_0x29bfc4[_0x9013('0x5a')],{'firstName':_0x29bfc4[_0x9013('0x5a')]['from'],'ListId':_0x8cd2d4[_0x9013('0xa1')]});_0x3c711d[_0x29bfc4[_0x9013('0x5a')][_0x9013('0x94')]]=_0x29bfc4[_0x9013('0x5a')][_0x9013('0x95')];return db['CmContact'][_0x9013('0x59')](_0x3c711d,{'fields':_0xf36437,'raw':!![]});}})['then'](handleEntityNotFound(_0x33dd57,null))['then'](function(_0x4bc0d3){_0x2b9cdf[_0x9013('0xa2')]=_0x4bc0d3;var _0x3f87e0=_0x29bfc4[_0x9013('0x5a')]['customerIp'];if(_0x29bfc4['headers'][_0x9013('0xa3')]){_0x3f87e0=_0x29bfc4[_0x9013('0x88')][_0x9013('0xa3')];}else if(_0x29bfc4['headers']['x-forwarded-for']){_0x3f87e0=_['first'](_0x29bfc4[_0x9013('0x88')]['x-forwarded-for'][_0x9013('0xa4')](','));}if(_0x4bc0d3){var _0x144a04={'ContactId':_0x4bc0d3['id'],'ChatWebsiteId':_0x29bfc4[_0x9013('0x5e')]['id'],'from':(_0x4bc0d3[_0x9013('0xa5')]||'')+'\x20'+(_0x4bc0d3[_0x9013('0xa6')]||''),'customerIp':_0x3f87e0,'customerPort':_0x29bfc4[_0x9013('0x88')][_0x9013('0xa7')]?_0x29bfc4[_0x9013('0x88')][_0x9013('0xa7')]:null,'referer':_0x29bfc4[_0x9013('0x5a')][_0x9013('0xa8')],'browserName':_0x1a498d[_0x9013('0xa9')][_0x9013('0x37')]&&_0x1a498d['browser'][_0x9013('0xaa')]?util[_0x9013('0xab')]('%s\x20%s',_0x1a498d[_0x9013('0xa9')][_0x9013('0x37')],_0x1a498d['browser'][_0x9013('0xaa')]):_0x9013('0xac'),'browserVersion':_0x1a498d['browser'][_0x9013('0xaa')]||_0x9013('0xac'),'osName':util[_0x9013('0xab')]('%s\x20%s',_0x1a498d['os'][_0x9013('0x37')],_0x1a498d['os'][_0x9013('0xaa')]),'osVersion':_0x1a498d['os'][_0x9013('0xaa')],'deviceModel':_0x1a498d[_0x9013('0xad')][_0x9013('0x45')]&&_0x1a498d[_0x9013('0xad')][_0x9013('0xae')]?util[_0x9013('0xab')]('%s\x20%s\x20%s',_0x1a498d['device'][_0x9013('0x45')],_0x1a498d[_0x9013('0xad')][_0x9013('0xae')],_0x1a498d[_0x9013('0xad')][_0x9013('0x3e')]):null,'deviceVendor':_0x1a498d[_0x9013('0xad')][_0x9013('0xae')],'deviceType':_0x1a498d[_0x9013('0xad')]['type'],'formData':JSON[_0x9013('0xaf')](_0x29bfc4[_0x9013('0x5a')])};var _0x10e6ea={'ChatWebsiteId':_0x29bfc4['params']['id'],'closed':![]};if(_0x29bfc4['body'][_0x9013('0xb0')]){_0x10e6ea[_0x9013('0xb0')]=_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb0')];return db['ChatInteraction'][_0x9013('0x58')]({'where':_0x10e6ea})['then'](function(_0x510743){if(_0x510743){return[_0x510743,![]];}_0x144a04[_0x9013('0xb0')]=_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb0')];_0x144a04[_0x9013('0xb1')]=_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb1')];return db[_0x9013('0xb2')][_0x9013('0x59')](_0x144a04)[_0x9013('0x1f')](function(_0x121fe2){return[_0x121fe2,!![]];});});}_0x10e6ea[_0x9013('0xb3')]=_0x4bc0d3['id'];if(_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb4')]&&_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb4')]['id']){_0x10e6ea['id']=_0x29bfc4[_0x9013('0x5a')]['interaction']['id'];return db['ChatInteraction']['find']({'where':_0x10e6ea})[_0x9013('0x1f')](function(_0x40cfef){if(_0x40cfef){return[_0x40cfef,![]];}return db[_0x9013('0xb2')][_0x9013('0x59')](_0x144a04)[_0x9013('0x1f')](function(_0x3cf909){return[_0x3cf909,!![]];});});}return db['ChatInteraction'][_0x9013('0x59')](_0x144a04)['then'](function(_0x4d2dd2){return[_0x4d2dd2,!![]];});}})[_0x9013('0xb5')](function(_0x2b6d09,_0x55b273){if(_0x2b6d09){_0x2b5bcb=_0x55b273;if(!_0x55b273){var _0x4d7103={'from':(_0x2b9cdf[_0x9013('0xa2')][_0x9013('0xa5')]||'')+'\x20'+(_0x2b9cdf[_0x9013('0xa2')][_0x9013('0xa6')]||'')};if(_0x29bfc4['body'][_0x9013('0xb0')]&&_0x29bfc4['body']['messageId']&&_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb0')]!=_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb6')]){_0x4d7103[_0x9013('0xb0')]=_0x29bfc4[_0x9013('0x5a')][_0x9013('0xb6')];}return _0x2b6d09[_0x9013('0x32')](_0x4d7103);}else{return _0x2b6d09;}}})[_0x9013('0x1f')](function(_0x3b46e1){_0x2b9cdf[_0x9013('0xb4')]=_0x3b46e1[_0x9013('0x33')]({'plain':!![]});_0x2b9cdf[_0x9013('0xb4')][_0x9013('0xb7')]=_0x2b5bcb;if(_0x2b9cdf[_0x9013('0xb4')][_0x9013('0xb7')]){if(_0x2b9cdf['account'][_0x9013('0xb8')]){_0x2b9cdf[_0x9013('0x9c')][_0x9013('0xb9')]({'id':0x0,'priority':_0x2b9cdf['applications']['length']+0x1,'app':_0x9013('0xba'),'appdata':_0x9013('0xbb'),'interval':_0x9013('0xbc')});}}return db[_0x9013('0xbd')][_0x9013('0x59')]({'body':_0x29bfc4[_0x9013('0x5a')][_0x9013('0x5a')],'ChatWebsiteId':_0x29bfc4[_0x9013('0x5e')]['id'],'ChatInteractionId':_0x3b46e1['id'],'direction':'in','ContactId':_0x2b9cdf[_0x9013('0xa2')]['id'],'AttachmentId':_0x29bfc4[_0x9013('0x5a')][_0x9013('0xbe')]});})[_0x9013('0x1f')](function(_0x50d1fe){_0x2b9cdf[_0x9013('0x27')]=_0x50d1fe;if(_0x2b9cdf[_0x9013('0xb4')][_0x9013('0xbf')]){return db[_0x9013('0xc0')][_0x9013('0x58')]({'attributes':['id',_0x9013('0x37')],'where':{'id':_0x2b9cdf[_0x9013('0xb4')][_0x9013('0xbf')]}})[_0x9013('0x1f')](function(_0x5a9441){if(_0x5a9441){_0x2b9cdf[_0x9013('0x9c')]['unshift']({'id':0x0,'priority':0x0,'app':_0x9013('0xc1'),'appdata':_0x5a9441['name']+','+(_0x2b9cdf[_0x9013('0xa0')]['waitForTheAssignedAgent']||0xa),'interval':_0x9013('0xbc')});_0x2b9cdf[_0x9013('0xc2')]=!![];}return respondWithRpcPromise('Start','startRouting',_0x2b9cdf);});}return respondWithRpcPromise(_0x9013('0xc3'),'startRouting',_0x2b9cdf);})[_0x9013('0x1f')](function(_0x114531){respondWithRpcPromise(_0x9013('0xc4'),'EventManager',{'event':_0x9013('0x86'),'message':_0x114531},client9002);return _0x114531;})[_0x9013('0x1f')](respondWithResult(_0x33dd57,null))[_0x9013('0x29')](handleError(_0x33dd57,null));};exports[_0x9013('0xc5')]=function(_0x330b41,_0x25ac00,_0x575d4e){var _0x5833f5,_0x1547bc,_0x449e33;var _0x493b89=[];var _0x306244=[];var _0x326290={};var _0x47f81d=_0x330b41[_0x9013('0xc6')]||[];var _0x170a13=[];var _0x17e7a0;return db[_0x9013('0x97')][_0x9013('0x60')]()[_0x9013('0x1f')](function(_0xaa1119){if(!_0xaa1119){throw new db[(_0x9013('0x8b'))][(_0x9013('0x90'))](_0x9013('0xc7'));}_0x306244=_['difference'](_['keys'](_0xaa1119),[_0x9013('0x8e'),_0x9013('0x8c')]);_0x493b89=_[_0x9013('0x8d')](_[_0x9013('0x42')](_0xaa1119),[_0x9013('0x8e'),_0x9013('0x8c'),_0x9013('0x8f'),'ListId']);if(_0x330b41[_0x9013('0x5a')]['id']){delete _0x330b41[_0x9013('0x5a')]['id'];}if(_[_0x9013('0x7a')](_0x330b41[_0x9013('0x5a')][_0x9013('0x95')])){throw _0x25ac00[_0x9013('0x2b')](0x1f4)[_0x9013('0x38')](new db['Sequelize']['ValidationError'](_0x9013('0xc8')));}if(_[_0x9013('0x7a')](_0x330b41[_0x9013('0x5a')][_0x9013('0x5a')])||_0x330b41[_0x9013('0x5a')]['body']===''){throw _0x25ac00[_0x9013('0x2b')](0x1f4)[_0x9013('0x38')](new db[(_0x9013('0x8b'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x9013('0x7a')](_0x330b41['body'][_0x9013('0xc9')])){throw _0x25ac00['status'](0x1f4)[_0x9013('0x38')](new db['Sequelize']['ValidationError'](_0x9013('0xca')+_0x493b89));}if(!_['includes'](_0x493b89,_0x330b41[_0x9013('0x5a')][_0x9013('0xc9')])){throw _0x25ac00[_0x9013('0x2b')](0x1f4)[_0x9013('0x38')](new db['Sequelize']['ValidationError'](_0x9013('0xcb')+_0x493b89));}_0x326290[_0x330b41[_0x9013('0x5a')]['mapKeyOffline']]=_0x330b41[_0x9013('0x5a')][_0x9013('0x95')];})[_0x9013('0x1f')](function(){return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x330b41[_0x9013('0x5e')]['id']},'include':[{'model':db[_0x9013('0xcc')],'as':_0x9013('0x96')},{'model':db['MailAccount'],'as':_0x9013('0xcd')}]});})[_0x9013('0x1f')](handleEntityNotFound(_0x25ac00,null))[_0x9013('0x1f')](function(_0x2706c8){if(_0x2706c8&&_0x2706c8['List']){_0x1547bc=_0x2706c8;var _0x281bdf=_[_0x9013('0x18')](_0x330b41[_0x9013('0x5a')],{'firstName':_0x330b41[_0x9013('0x5a')]['from'],'phone':_0x330b41[_0x9013('0x5a')][_0x9013('0x95')],'ListId':_0x2706c8[_0x9013('0xa1')]});_0x281bdf[_0x330b41[_0x9013('0x5a')][_0x9013('0xc9')]]=_0x330b41[_0x9013('0x5a')]['from'];return db[_0x9013('0x97')][_0x9013('0xce')]({'where':_0x326290,'defaults':_0x281bdf});}})[_0x9013('0xb5')](function(_0x6a38ff){if(_0x6a38ff){_0x449e33=_0x6a38ff;var _0x17f362=fs[_0x9013('0xcf')](path[_0x9013('0x7b')](config[_0x9013('0x75')],'server/files/templates/chatOfflineMessage.ejs'),'utf8');var _0x24c451=ejs[_0x9013('0xd0')](_0x17f362,{'body':_[_0x9013('0xd1')](_0x330b41[_0x9013('0x5a')]['body']),'bodyTitle':_0x1547bc[_0x9013('0xd2')]});return db[_0x9013('0xd3')][_0x9013('0x59')]({'body':_0x24c451,'ContactId':_0x6a38ff['id'],'ChatWebsiteId':_0x1547bc['id']});}})['then'](function(_0x30105c){_0x17e7a0=_0x30105c;if(_0x47f81d[_0x9013('0x48')]){var _0x31e204=_0x47f81d[_0x9013('0x40')](function(_0x5c925a){return{'name':_0x5c925a[_0x9013('0xd4')],'basename':_0x5c925a[_0x9013('0x6d')],'type':_0x5c925a[_0x9013('0xd5')],'ChatOfflineMessageId':_0x30105c['id']};});_0x170a13=_0x31e204['map'](_0x22cb5a=>{var _0x5b3da={'filename':_0x22cb5a['name'],'path':path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0xd6'),_0x9013('0xc6'),_0x9013('0xd7'),_0x9013('0xd8'),_0x22cb5a[_0x9013('0xd9')])};return _0x5b3da;});if(!_0x1547bc[_0x9013('0xda')]){return db['sequelize'][_0x9013('0xdb')](function(_0x287186){return db[_0x9013('0xdc')][_0x9013('0xdd')](_0x31e204,{'transaction':_0x287186});});}}})[_0x9013('0x1f')](function(){if(_0x17e7a0){_0x5833f5=_0x17e7a0;return db[_0x9013('0xcd')][_0x9013('0x65')]({'where':{'active':!![]},'include':[{'model':db['MailServerOut'],'as':_0x9013('0xde'),'raw':!![]}]});}})[_0x9013('0x1f')](function(_0x24828d){if(_0x24828d&&_0x24828d['Smtp']&&_0x1547bc[_0x9013('0xdf')]&&_0x1547bc[_0x9013('0xe0')]){var _0x113a0b={'tls':{'rejectUnauthorized':![]}};if(_0x24828d[_0x9013('0xde')][_0x9013('0xe1')]){_0x113a0b['service']=_0x24828d['Smtp'][_0x9013('0xe1')];}else{_0x113a0b[_0x9013('0xe2')]=_0x24828d[_0x9013('0xde')][_0x9013('0xe2')];_0x113a0b[_0x9013('0xe3')]=_0x24828d['Smtp'][_0x9013('0xe3')];_0x113a0b[_0x9013('0xe4')]=_0x24828d[_0x9013('0xde')][_0x9013('0xe4')];}if(_0x24828d[_0x9013('0xde')][_0x9013('0xe5')]){_0x113a0b[_0x9013('0xe6')]={'user':_0x24828d[_0x9013('0xde')][_0x9013('0xe7')],'pass':_0x24828d['Smtp'][_0x9013('0xe8')]};}return respondWithRpcPromise(_0x9013('0xe9'),'sendMail',{'account':_0x113a0b,'message':{'from':util['format'](_0x9013('0xea'),_0x24828d['name'],_0x24828d[_0x9013('0xeb')]||_0x24828d[_0x9013('0xde')]['user']),'to':_0x1547bc[_0x9013('0xe0')],'subject':_0x1547bc[_0x9013('0xec')],'html':_0x5833f5[_0x9013('0x5a')],'attachments':_0x170a13}},client9003)[_0x9013('0x1f')](function(){return _0x5833f5;})['catch'](function(_0x5e09b9){console[_0x9013('0x25')](_0x5e09b9);});}})[_0x9013('0x1f')](function(){if(_0x1547bc&&_0x1547bc[_0x9013('0xda')]&&_0x1547bc['MailAccountId']){var _0x4de2d6=[];if(_0x47f81d['length']){_0x4de2d6=_0x47f81d[_0x9013('0x40')](function(_0x5cfd8d){return{'name':_0x5cfd8d[_0x9013('0xd4')],'basename':_0x5cfd8d['filename'],'type':_0x5cfd8d['mimetype'],'ChatOfflineMessageId':_0x17e7a0['id']};});}var _0x12c8ea;if(!_[_0x9013('0x7a')](_0x1547bc[_0x9013('0xed')])){var _0x2b8460=_['map'](_0x330b41[_0x9013('0x5a')],function(_0x6f4e8){return _0x6f4e8;});var _0x512726=_[_0x9013('0xee')](_0x2b8460)[0x0];var _0x56eacb=_[_0x9013('0xef')](_0x512726,function(_0x5a0e0f){return _0x5a0e0f;});_0x12c8ea=_0x56eacb[0x1][_0x1547bc[_0x9013('0xed')]];}var _0x55f009={'from':_0x449e33[_0x9013('0xeb')],'firstName':_0x449e33['firstName'],'lastName':_0x449e33['lastName'],'mapKey':_0x9013('0xeb'),'message':{'from':_0x449e33[_0x9013('0xeb')],'to':_0x1547bc['MailAccount'][_0x9013('0xeb')],'cc':'','subject':_['isNil'](_0x12c8ea)?_0x1547bc[_0x9013('0xec')]:_0x12c8ea,'messageId':'','sentAt':new Date(),'attach':_0x4de2d6[_0x9013('0x48')],'attachments':_0x4de2d6,'originChannel':'Chat','ChatWebsiteId':_0x1547bc['id'],'ChatOfflineMessageId':_0x5833f5['id'],'originTo':_0x1547bc[_0x9013('0xcd')][_0x9013('0xeb')]},'body':_0x5833f5[_0x9013('0x5a')]};var _0x3d4405={'account':{'id':_0x1547bc[_0x9013('0xf0')]},'body':_0x55f009,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x9013('0xf1'),'notifyMail',_0x3d4405,client9001)[_0x9013('0x1f')](function(){return _0x5833f5;})[_0x9013('0x29')](function(_0x1eac7f){console['error'](_0x1eac7f);});}return;})[_0x9013('0x1f')](function(){if(_0x5833f5){return _0x5833f5;}})[_0x9013('0x1f')](respondWithResult(_0x25ac00,null))[_0x9013('0x29')](function(_0x1d7afa){console[_0x9013('0x25')](_0x9013('0x29'),_0x1d7afa);for(var _0x43348a of _0x47f81d){var _0x461265=path['join'](config[_0x9013('0x75')],_0x9013('0xd6'),_0x9013('0xc6'),_0x9013('0xd7'),_0x9013('0xd8'),_0x43348a[_0x9013('0x6d')]);fs_extra[_0x9013('0xf2')](_0x461265)['catch'](function(_0x3607b8){console['error'](_0x9013('0xf3'),_0x461265,_0x3607b8);});}});};exports[_0x9013('0xf4')]=function(_0x329c8d,_0xea2024,_0x3c219f){return db['ChatInteraction'][_0x9013('0x58')]({'where':{'id':_0x329c8d[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0xea2024,null))['then'](function(_0x876cb6){if(_0x876cb6){return _0x876cb6[_0x9013('0xf4')](_0x329c8d[_0x9013('0x5a')][_0x9013('0x6b')],_[_0x9013('0xf5')](_0x329c8d[_0x9013('0x5a')],['ids','id'])||{});}})[_0x9013('0x1f')](respondWithResult(_0xea2024,null))[_0x9013('0x29')](handleError(_0xea2024,null));};exports[_0x9013('0xf6')]=function(_0xea098b,_0x345892,_0x157947){var _0x5b8394={'raw':![],'where':{}};var _0x293e71={};var _0x965288={'count':0x0,'rows':[]};return db[_0x9013('0x52')][_0x9013('0x65')]({'where':{'id':_0xea098b[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x345892,null))[_0x9013('0x1f')](function(_0x2f2d30){if(_0x2f2d30){_0x293e71[_0x9013('0x45')]=_[_0x9013('0x42')](db[_0x9013('0xb2')][_0x9013('0x3c')]);_0x293e71['query']=_[_0x9013('0x42')](_0xea098b[_0x9013('0x41')]);_0x293e71[_0x9013('0x43')]=_[_0x9013('0x44')](_0x293e71[_0x9013('0x45')],_0x293e71[_0x9013('0x41')]);_0x5b8394[_0x9013('0x46')]=_[_0x9013('0x44')](_0x293e71['model'],qs[_0x9013('0x47')](_0xea098b[_0x9013('0x41')]['fields']));_0x5b8394[_0x9013('0x46')]=_0x5b8394[_0x9013('0x46')][_0x9013('0x48')]?_0x5b8394['attributes']:_0x293e71['model'];if(!_0xea098b[_0x9013('0x41')][_0x9013('0x66')](_0x9013('0x49'))){_0x5b8394[_0x9013('0x2f')]=qs[_0x9013('0x2f')](_0xea098b[_0x9013('0x41')]['limit']);_0x5b8394[_0x9013('0x2d')]=qs[_0x9013('0x2d')](_0xea098b['query'][_0x9013('0x2d')]);}_0x5b8394[_0x9013('0x4a')]=qs[_0x9013('0x4b')](_0xea098b[_0x9013('0x41')]['sort']);_0x5b8394[_0x9013('0x4c')]=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0xea098b['query'],_0x293e71['filters']));_0x5b8394['where']['ChatWebsiteId']=_0x2f2d30['id'];if(_0xea098b[_0x9013('0x41')][_0x9013('0x4f')]){_0x5b8394[_0x9013('0x4c')]=_[_0x9013('0x50')](_0x5b8394[_0x9013('0x4c')],{'$or':_[_0x9013('0x40')](_0x5b8394[_0x9013('0x46')],function(_0x4ac1be){var _0x39a8df={};_0x39a8df[_0x4ac1be]={'$like':'%'+_0xea098b[_0x9013('0x41')][_0x9013('0x4f')]+'%'};return _0x39a8df;})});}_0x5b8394=_[_0x9013('0x50')]({},_0x5b8394,_0xea098b['options']);return db[_0x9013('0xb2')][_0x9013('0x53')]({'where':_0x5b8394[_0x9013('0x4c')]})[_0x9013('0x1f')](function(_0x31a44e){_0x965288['count']=_0x31a44e;if(_0xea098b[_0x9013('0x41')][_0x9013('0x54')]){_0x5b8394[_0x9013('0x55')]=[{'model':db[_0x9013('0x97')],'as':_0x9013('0xf7'),'required':![]},{'model':db['User'],'as':_0x9013('0xf8'),'attributes':['name',_0x9013('0xf9'),'internal'],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x9013('0x37'),_0x9013('0xfa')],'where':_0xea098b[_0x9013('0x41')][_0x9013('0xfb')]?{'id':_0xea098b[_0x9013('0x41')][_0x9013('0xfb')]}:undefined,'required':_0xea098b[_0x9013('0x41')][_0x9013('0xfb')]?!![]:![]}];}return db[_0x9013('0xb2')]['findAll'](_0x5b8394);})[_0x9013('0x1f')](function(_0x88151a){_0x965288[_0x9013('0x57')]=_0x88151a;return _0x965288;});}})['then'](respondWithFilteredResult(_0x345892,_0x5b8394))[_0x9013('0x29')](handleError(_0x345892,null));};function iftimePromise(_0x46e6ec,_0x307736){return respondWithRpcPromise(_0x9013('0xfc'),_0x9013('0xfd'),{'command':_0x307736['timezone']?util['format'](_0x9013('0xfe'),_0x46e6ec[_0x9013('0xff')],_0x307736[_0x9013('0x100')]):util[_0x9013('0xab')](_0x9013('0x101'),_0x46e6ec[_0x9013('0xff')])},client9002)['then'](function(_0x2ad1d0){var _0x1598d6=_0x2ad1d0&&_0x2ad1d0[_0x9013('0x102')](_0x9013('0x103'))>=0x0?!![]:![];logger[_0x9013('0x20')](_0x9013('0x104'),_0x307736['id'],_0x46e6ec['id'],_0x46e6ec[_0x9013('0xff')],_0x1598d6?'ONLINE':_0x9013('0x105'),_0x307736['timezone']?_0x307736[_0x9013('0x100')]:_0x9013('0x106'));return _0x1598d6;})['catch'](function(_0x55e674){logger[_0x9013('0x25')](_0x9013('0x104'),_0x307736['id'],_0x46e6ec['id'],_0x46e6ec[_0x9013('0xff')],util[_0x9013('0x107')](_0x55e674,{'showHidden':![],'depth':null}),_0x307736[_0x9013('0x100')]?_0x307736[_0x9013('0x100')]:'No\x20timezone');return![];});}exports[_0x9013('0xfd')]=function(_0x4bb1ce,_0x1e4c01,_0xea2354){var _0x4890e4=0x0;var _0x645b50=0x0;var _0x403e07=![];var _0x3d00f4;var _0x22e55c;return db[_0x9013('0x52')][_0x9013('0x58')]({'where':{'id':_0x4bb1ce[_0x9013('0x5e')]['id']},'include':[{'model':db[_0x9013('0x108')],'as':_0x9013('0x108'),'include':[{'model':db[_0x9013('0x108')],'as':_0x9013('0x109'),'attributes':['id',_0x9013('0xff')],'raw':!![]}]}]})[_0x9013('0x1f')](handleEntityNotFound(_0x1e4c01,null))[_0x9013('0x1f')](function(_0x18a4a4){if(_0x18a4a4){_0x3d00f4=_0x18a4a4;return _0x18a4a4[_0x9013('0x10a')]({'raw':!![]});}})[_0x9013('0x1f')](function(_0x2dfd31){if(_0x3d00f4){if(_0x2dfd31){_0x22e55c=_0x2dfd31;}}return require('../../config/license/util')['getLicense']();})[_0x9013('0x1f')](function(_0x17c4f7){if(_0x17c4f7){_0x645b50=_0x17c4f7[_0x9013('0x10b')];_0x403e07=_0x17c4f7[_0x9013('0x79')];}})['then'](function(){return db[_0x9013('0xb2')][_0x9013('0x53')]({'where':{'closed':![]}});})['then'](function(_0xda5cd5){_0x4890e4=_0xda5cd5;if(_0x645b50&&_0xda5cd5>_0x645b50){return db[_0x9013('0x10c')][_0x9013('0x65')]({'where':{'id':0x1}})[_0x9013('0x1f')](function(_0x24f812){if(_0x24f812){_0x24f812[_0x9013('0x10d')](_0x9013('0x10e'));}});}})[_0x9013('0x1f')](function(){if(_0x3d00f4[_0x9013('0x108')]&&_0x3d00f4[_0x9013('0x108')][_0x9013('0x109')]){var _0x1fed30=[];for(var _0x16b836=0x0;_0x16b836<_0x3d00f4[_0x9013('0x108')][_0x9013('0x109')][_0x9013('0x48')];_0x16b836++){var _0x49b33b=_0x3d00f4[_0x9013('0x108')]['Intervals'][_0x16b836]['get']({'plain':!![]});_0x1fed30[_0x9013('0xb9')](iftimePromise(_0x49b33b,_0x3d00f4));}return BPromise[_0x9013('0x10f')](_0x1fed30)[_0x9013('0x1f')](function(_0x5e4221){return _[_0x9013('0x110')](_0x5e4221);});}else{return!![];}})[_0x9013('0x1f')](function(_0x376587){var _0x470b65=fs[_0x9013('0xcf')](path[_0x9013('0x7b')](config[_0x9013('0x75')],_0x9013('0x111')),_0x9013('0x112'));var _0x34e82e={'remote':_0x3d00f4[_0x9013('0x113')],'query':querystring['stringify'](_[_0x9013('0x50')](_0x3d00f4[_0x9013('0x33')]({'plain':!![]}),{'customerIp':_0x4bb1ce['headers'][_0x9013('0x114')]||_0x4bb1ce[_0x9013('0x88')][_0x9013('0x115')]||_0x4bb1ce[_0x9013('0x116')][_0x9013('0x117')]||_0x4bb1ce['ip'],'referer':_0x4bb1ce['headers'][_0x9013('0xa8')],'openedInteractions':_0x4890e4,'maxInteractions':_0x645b50,'virtual':_0x403e07[_0x9013('0x10b')],'online':_0x376587,'custom':_0x403e07}))[_0x9013('0x118')](/'/g,'\x5c\x27')};_0x1e4c01[_0x9013('0x38')](ejs[_0x9013('0xd0')](Mustache[_0x9013('0xd0')](_0x470b65,_0x34e82e),{'proactiveActions':_0x22e55c,'alignment':_0x3d00f4[_0x9013('0x119')],'verticalAlignment':_0x3d00f4[_0x9013('0x11a')],'div_color':_0x3d00f4[_0x9013('0xfa')],'text_color':_0x3d00f4[_0x9013('0x11b')],'button_color':_0x3d00f4['color_button'],'background_color':_0x3d00f4[_0x9013('0x11c')]}));})['catch'](handleError(_0x1e4c01,null));};exports[_0x9013('0x11d')]=function(_0x180888,_0x771d5a,_0x1fb734){return db[_0x9013('0x52')][_0x9013('0x65')]({'where':{'id':_0x180888['params']['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x771d5a,null))['then'](function(_0x22d067){if(_0x22d067){return db['sequelize']['transaction'](function(_0x554324){return db[_0x9013('0x9a')][_0x9013('0x5f')]({'where':{'ChatWebsiteId':_0x180888[_0x9013('0x5e')]['id']},'transaction':_0x554324})[_0x9013('0x1f')](function(_0xb4adf8){var _0x4013c4=_[_0x9013('0x40')](_0x180888[_0x9013('0x5a')],function(_0x3fae9a){_0x3fae9a['ChatWebsiteId']=_0x180888[_0x9013('0x5e')]['id'];return _0x3fae9a;});return db[_0x9013('0x9a')][_0x9013('0xdd')](_0x4013c4,{'transaction':_0x554324});});})[_0x9013('0x1f')](function(){return db[_0x9013('0x9a')][_0x9013('0x11e')]({'where':{'ChatWebsiteId':_0x180888['params']['id']},'order':_0x9013('0x9f')});});}})[_0x9013('0x1f')](respondWithResult(_0x771d5a,null))[_0x9013('0x29')](handleError(_0x771d5a,null));};exports[_0x9013('0x11f')]=function(_0x2e9e7a,_0x47a9c8,_0x5a36e8){var _0x52d3f7={};var _0x99728e={};var _0x550c68;var _0x16f087;return db['ChatWebsite'][_0x9013('0x65')]({'where':{'id':_0x2e9e7a['params']['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x47a9c8,null))[_0x9013('0x1f')](function(_0x19c874){if(_0x19c874){_0x550c68=_0x19c874;_0x99728e['model']=_['keys'](db[_0x9013('0x9a')][_0x9013('0x3c')]);_0x99728e[_0x9013('0x41')]=_['keys'](_0x2e9e7a[_0x9013('0x41')]);_0x99728e[_0x9013('0x43')]=_['intersection'](_0x99728e[_0x9013('0x45')],_0x99728e[_0x9013('0x41')]);_0x52d3f7[_0x9013('0x46')]=_[_0x9013('0x44')](_0x99728e[_0x9013('0x45')],qs['fields'](_0x2e9e7a[_0x9013('0x41')]['fields']));_0x52d3f7[_0x9013('0x46')]=_0x52d3f7[_0x9013('0x46')][_0x9013('0x48')]?_0x52d3f7[_0x9013('0x46')]:_0x99728e[_0x9013('0x45')];_0x52d3f7['order']=qs['sort'](_0x2e9e7a[_0x9013('0x41')][_0x9013('0x4b')]);_0x52d3f7[_0x9013('0x4c')]=qs[_0x9013('0x43')](_['pick'](_0x2e9e7a[_0x9013('0x41')],_0x99728e[_0x9013('0x43')]));if(_0x2e9e7a['query'][_0x9013('0x4f')]){_0x52d3f7[_0x9013('0x4c')]=_['merge'](_0x52d3f7[_0x9013('0x4c')],{'$or':_[_0x9013('0x40')](_0x52d3f7[_0x9013('0x46')],function(_0x4d41a8){var _0x4a6c44={};_0x4a6c44[_0x4d41a8]={'$like':'%'+_0x2e9e7a[_0x9013('0x41')]['filter']+'%'};return _0x4a6c44;})});}_0x52d3f7=_[_0x9013('0x50')]({},_0x52d3f7,_0x2e9e7a['options']);return _0x550c68[_0x9013('0x11f')](_0x52d3f7);}})['then'](function(_0x17840e){if(_0x17840e){_0x16f087=_0x17840e[_0x9013('0x48')];if(!_0x2e9e7a[_0x9013('0x41')][_0x9013('0x66')](_0x9013('0x49'))){_0x52d3f7[_0x9013('0x2f')]=qs[_0x9013('0x2f')](_0x2e9e7a[_0x9013('0x41')][_0x9013('0x2f')]);_0x52d3f7[_0x9013('0x2d')]=qs[_0x9013('0x2d')](_0x2e9e7a[_0x9013('0x41')][_0x9013('0x2d')]);}return _0x550c68[_0x9013('0x11f')](_0x52d3f7);}})[_0x9013('0x1f')](function(_0x58e5f7){if(_0x58e5f7){return _0x58e5f7?{'count':_0x16f087,'rows':_0x58e5f7}:null;}})['then'](respondWithResult(_0x47a9c8,null))['catch'](handleError(_0x47a9c8,null));};exports['addProactiveActions']=function(_0x4037ff,_0x18cc07,_0x1c96dc){return db['chatProactiveAction'][_0x9013('0x58')]({'where':{'id':_0x4037ff['params']['id']}})['then'](handleEntityNotFound(_0x18cc07,null))[_0x9013('0x1f')](function(_0x2b647e){if(_0x2b647e){return _0x2b647e[_0x9013('0x120')](_0x4037ff['body'][_0x9013('0x6b')],_[_0x9013('0xf5')](_0x4037ff['body'],[_0x9013('0x6b'),'id'])||{});}})[_0x9013('0x1f')](respondWithResult(_0x18cc07,null))[_0x9013('0x29')](handleError(_0x18cc07,null));};exports[_0x9013('0x10a')]=function(_0x28ede4,_0x24cef4,_0x263ae8){var _0x19bd1a={};var _0x18e500={};var _0x41a928;var _0x38142b;return db[_0x9013('0x52')]['findOne']({'where':{'id':_0x28ede4[_0x9013('0x5e')]['id']}})['then'](handleEntityNotFound(_0x24cef4,null))[_0x9013('0x1f')](function(_0x4aa142){if(_0x4aa142){_0x41a928=_0x4aa142;_0x18e500[_0x9013('0x45')]=_[_0x9013('0x42')](db['ChatProactiveAction']['rawAttributes']);_0x18e500['query']=_[_0x9013('0x42')](_0x28ede4[_0x9013('0x41')]);_0x18e500['filters']=_[_0x9013('0x44')](_0x18e500[_0x9013('0x45')],_0x18e500['query']);_0x19bd1a[_0x9013('0x46')]=_['intersection'](_0x18e500[_0x9013('0x45')],qs[_0x9013('0x47')](_0x28ede4[_0x9013('0x41')]['fields']));_0x19bd1a[_0x9013('0x46')]=_0x19bd1a[_0x9013('0x46')][_0x9013('0x48')]?_0x19bd1a['attributes']:_0x18e500['model'];_0x19bd1a[_0x9013('0x4a')]=qs[_0x9013('0x4b')](_0x28ede4[_0x9013('0x41')][_0x9013('0x4b')]);_0x19bd1a['where']=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0x28ede4[_0x9013('0x41')],_0x18e500[_0x9013('0x43')]));if(_0x28ede4[_0x9013('0x41')][_0x9013('0x4f')]){_0x19bd1a[_0x9013('0x4c')]=_[_0x9013('0x50')](_0x19bd1a[_0x9013('0x4c')],{'$or':_[_0x9013('0x40')](_0x19bd1a[_0x9013('0x46')],function(_0x159a5f){var _0x185a3d={};_0x185a3d[_0x159a5f]={'$like':'%'+_0x28ede4['query'][_0x9013('0x4f')]+'%'};return _0x185a3d;})});}_0x19bd1a=_[_0x9013('0x50')]({},_0x19bd1a,_0x28ede4[_0x9013('0x51')]);return _0x41a928['getProactiveActions'](_0x19bd1a);}})[_0x9013('0x1f')](function(_0x489ce1){if(_0x489ce1){_0x38142b=_0x489ce1[_0x9013('0x48')];if(!_0x28ede4['query']['hasOwnProperty'](_0x9013('0x49'))){_0x19bd1a['limit']=qs[_0x9013('0x2f')](_0x28ede4[_0x9013('0x41')]['limit']);_0x19bd1a[_0x9013('0x2d')]=qs[_0x9013('0x2d')](_0x28ede4['query'][_0x9013('0x2d')]);}return _0x41a928['getProactiveActions'](_0x19bd1a);}})[_0x9013('0x1f')](function(_0x54ceec){if(_0x54ceec){return _0x54ceec?{'count':_0x38142b,'rows':_0x54ceec}:null;}})[_0x9013('0x1f')](respondWithResult(_0x24cef4,null))[_0x9013('0x29')](handleError(_0x24cef4,null));};exports['getFields']=function(_0x24dcdd,_0xfd3910,_0x47eec4){var _0x17e845=_0x24dcdd['query'][_0x9013('0x121')]===_0x9013('0x122')?_0x9013('0x123'):_0x9013('0x124');return db['ChatWebsite'][_0x9013('0x58')]({'attributes':['id',_0x17e845],'where':{'id':_0x24dcdd[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0xfd3910,null))['then'](function(_0x537289){if(_0x537289){var _0x5c86a3=_0x537289[_0x17e845];var _0x5e6b28=_0x5c86a3&&_0x5c86a3[_0x9013('0x125')]?_0x5c86a3[_0x9013('0x125')]:[];_0xfd3910[_0x9013('0x38')]({'fromKey':_[_0x9013('0x7a')](_0x5c86a3['fromKey'])?undefined:_0x5c86a3['fromKey'],'count':_0x5e6b28[_0x9013('0x48')],'rows':_0x5e6b28});}})[_0x9013('0x29')](handleError(_0xfd3910,null));};exports[_0x9013('0x126')]=function(_0xd0a4a,_0x1c3145,_0x4a10a7){var _0x21a9be={'raw':![],'where':{}};var _0x181895={};var _0x52d5c5={'count':0x0,'rows':[]};return db[_0x9013('0x52')][_0x9013('0x65')]({'where':{'id':_0xd0a4a[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x1c3145,null))[_0x9013('0x1f')](function(_0xf53545){if(_0xf53545){_0x181895[_0x9013('0x45')]=_['keys'](db['ChatOfflineMessage'][_0x9013('0x3c')]);_0x181895[_0x9013('0x41')]=_[_0x9013('0x42')](_0xd0a4a[_0x9013('0x41')]);_0x181895[_0x9013('0x43')]=_[_0x9013('0x44')](_0x181895[_0x9013('0x45')],_0x181895[_0x9013('0x41')]);_0x21a9be['attributes']=_['intersection'](_0x181895['model'],qs[_0x9013('0x47')](_0xd0a4a[_0x9013('0x41')][_0x9013('0x47')]));_0x21a9be[_0x9013('0x46')]=_0x21a9be[_0x9013('0x46')][_0x9013('0x48')]?_0x21a9be[_0x9013('0x46')]:_0x181895[_0x9013('0x45')];if(!_0xd0a4a[_0x9013('0x41')][_0x9013('0x66')](_0x9013('0x49'))){_0x21a9be['limit']=qs[_0x9013('0x2f')](_0xd0a4a[_0x9013('0x41')][_0x9013('0x2f')]);_0x21a9be['offset']=qs[_0x9013('0x2d')](_0xd0a4a['query'][_0x9013('0x2d')]);}_0x21a9be['order']=qs[_0x9013('0x4b')](_0xd0a4a[_0x9013('0x41')][_0x9013('0x4b')]);_0x21a9be[_0x9013('0x4c')]=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0xd0a4a['query'],_0x181895['filters']));_0x21a9be[_0x9013('0x4c')]['ChatWebsiteId']=_0xf53545['id'];if(_0xd0a4a[_0x9013('0x41')][_0x9013('0x4f')]){_0x21a9be[_0x9013('0x4c')]=_[_0x9013('0x50')](_0x21a9be[_0x9013('0x4c')],{'$or':_['map'](_0x21a9be['attributes'],function(_0x35a06c){var _0x102f45={};_0x102f45[_0x35a06c]={'$like':'%'+_0xd0a4a[_0x9013('0x41')]['filter']+'%'};return _0x102f45;})});}_0x21a9be=_[_0x9013('0x50')]({},_0x21a9be,_0xd0a4a[_0x9013('0x51')]);return db['ChatOfflineMessage'][_0x9013('0x53')]({'where':_0x21a9be[_0x9013('0x4c')]})[_0x9013('0x1f')](function(_0x18906c){_0x52d5c5[_0x9013('0x53')]=_0x18906c;if(_0xd0a4a[_0x9013('0x41')]['includeAll']){_0x21a9be[_0x9013('0x55')]=[{'all':!![]}];}else{_0x21a9be['include']=[{'model':db['CmContact'],'as':_0x9013('0xf7'),'required':![]},{'model':db['Attachment'],'as':_0x9013('0x127'),'required':![]}];}return db[_0x9013('0xd3')][_0x9013('0x56')](_0x21a9be);})['then'](function(_0x4bf782){_0x52d5c5[_0x9013('0x57')]=_0x4bf782;return _0x52d5c5;});}})[_0x9013('0x1f')](respondWithFilteredResult(_0x1c3145,_0x21a9be))[_0x9013('0x29')](handleError(_0x1c3145,null));};exports[_0x9013('0x128')]=function(_0x1658aa,_0x130008,_0x145cca){return db['ChatWebsite'][_0x9013('0x58')]({'where':{'id':_0x1658aa[_0x9013('0x5e')]['id']}})['then'](handleEntityNotFound(_0x130008,null))['then'](function(_0x3c83cf){if(_0x3c83cf){return _0x3c83cf[_0x9013('0x128')](_0x1658aa[_0x9013('0x5a')][_0x9013('0x6b')],_[_0x9013('0xf5')](_0x1658aa['body'],[_0x9013('0x6b'),'id'])||{})[_0x9013('0xb5')](function(_0x2d83b5){for(var _0x4f4f0c=0x0;_0x4f4f0c<_0x1658aa[_0x9013('0x5a')][_0x9013('0x6b')]['length'];_0x4f4f0c+=0x1){socket[_0x9013('0x129')](_0x9013('0x12a'),{'UserId':Number(_0x1658aa[_0x9013('0x5a')][_0x9013('0x6b')][_0x4f4f0c]),'ChatWebsiteId':Number(_0x1658aa[_0x9013('0x5e')]['id'])});}return _0x2d83b5;});}})['then'](respondWithResult(_0x130008,null))['catch'](handleError(_0x130008,null));};exports[_0x9013('0x12b')]=function(_0x32c342,_0x5bef04,_0x363696){return db['ChatWebsite'][_0x9013('0x58')]({'where':{'id':_0x32c342['params']['id']}})['then'](handleEntityNotFound(_0x5bef04,null))['then'](function(_0x1ab694){if(_0x1ab694){return _0x1ab694[_0x9013('0x12b')](_0x32c342['query']['ids'])[_0x9013('0x1f')](function(){if(_[_0x9013('0x12c')](_0x32c342[_0x9013('0x41')]['ids'])){for(var _0x373916=0x0;_0x373916<_0x32c342['query']['ids'][_0x9013('0x48')];_0x373916+=0x1){socket[_0x9013('0x129')](_0x9013('0x12d'),{'UserId':Number(_0x32c342[_0x9013('0x41')][_0x9013('0x6b')][_0x373916]),'ChatWebsiteId':Number(_0x32c342[_0x9013('0x5e')]['id'])});}}else{socket['emit']('userChatWebsite:remove',{'UserId':Number(_0x32c342['query'][_0x9013('0x6b')]),'ChatWebsiteId':Number(_0x32c342[_0x9013('0x5e')]['id'])});}});}})['then'](respondWithStatusCode(_0x5bef04,null))['catch'](handleError(_0x5bef04,null));};exports[_0x9013('0x12e')]=function(_0x14d666,_0x14be07,_0x2d66b7){var _0x5d24c9={};var _0x444e67={};var _0x54d73c;var _0x2c3094;return db[_0x9013('0x52')][_0x9013('0x65')]({'where':{'id':_0x14d666[_0x9013('0x5e')]['id']}})[_0x9013('0x1f')](handleEntityNotFound(_0x14be07,null))[_0x9013('0x1f')](function(_0x3b6826){if(_0x3b6826){_0x54d73c=_0x3b6826;_0x444e67[_0x9013('0x45')]=_['keys'](db[_0x9013('0xc0')][_0x9013('0x3c')]);_0x444e67['query']=_['keys'](_0x14d666['query']);_0x444e67['filters']=_[_0x9013('0x44')](_0x444e67[_0x9013('0x45')],_0x444e67[_0x9013('0x41')]);_0x5d24c9[_0x9013('0x46')]=_[_0x9013('0x44')](_0x444e67[_0x9013('0x45')],qs['fields'](_0x14d666['query'][_0x9013('0x47')]));_0x5d24c9['attributes']=_0x5d24c9[_0x9013('0x46')][_0x9013('0x48')]?_0x5d24c9[_0x9013('0x46')]:_0x444e67[_0x9013('0x45')];_0x5d24c9[_0x9013('0x4a')]=qs[_0x9013('0x4b')](_0x14d666['query'][_0x9013('0x4b')]);_0x5d24c9[_0x9013('0x4c')]=qs[_0x9013('0x43')](_[_0x9013('0x4d')](_0x14d666[_0x9013('0x41')],_0x444e67[_0x9013('0x43')]));if(_0x14d666['query']['filter']){_0x5d24c9[_0x9013('0x4c')]=_[_0x9013('0x50')](_0x5d24c9[_0x9013('0x4c')],{'$or':_['map'](_0x5d24c9[_0x9013('0x46')],function(_0x23fc10){var _0x48f0f3={};_0x48f0f3[_0x23fc10]={'$like':'%'+_0x14d666['query'][_0x9013('0x4f')]+'%'};return _0x48f0f3;})});}_0x5d24c9=_['merge']({},_0x5d24c9,_0x14d666['options']);return _0x54d73c[_0x9013('0x12e')](_0x5d24c9);}})[_0x9013('0x1f')](function(_0x40f204){if(_0x40f204){_0x2c3094=_0x40f204[_0x9013('0x48')];if(!_0x14d666[_0x9013('0x41')][_0x9013('0x66')](_0x9013('0x49'))){_0x5d24c9[_0x9013('0x2f')]=qs[_0x9013('0x2f')](_0x14d666[_0x9013('0x41')][_0x9013('0x2f')]);_0x5d24c9[_0x9013('0x2d')]=qs['offset'](_0x14d666[_0x9013('0x41')]['offset']);}return _0x54d73c[_0x9013('0x12e')](_0x5d24c9);}})[_0x9013('0x1f')](function(_0x1d06f1){if(_0x1d06f1){return _0x1d06f1?{'count':_0x2c3094,'rows':_0x1d06f1}:null;}})[_0x9013('0x1f')](respondWithResult(_0x14be07,null))[_0x9013('0x29')](handleError(_0x14be07,null));};
\ No newline at end of file
+var _0x8985=['customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','server/files/images/logos/default_logo.svg','getLicense','isNil','existsSync','server/files/images/logos/','download','getAvatar','root','server/files/images/avatars/','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','setUA','headers','user-agent','getResult','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ListId','from','from\x20is\x20mandatory','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','ChatApplication','Applications','account','applications','list','orderBy','asc','Contacts','contact','customerIp','cf-connecting-ip','x-forwarded-for','split','firstName','x-real-port','referer','browser','version','%s\x20%s','unknown','format','device','%s\x20%s\x20%s','vendor','threadId','ChatInteraction','interaction','spread','lastName','messageId','created','push','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','unshift','agent','forcedOwnership','Start','startRouting','EventManager','offline','files','send','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','attachments','offline-chat','basename','openNewInteraction','transaction','MailServerOut','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','email','MailAccountId','mapValues','subjectOffline','offlineMessageSubject','Chat','NotifyMailAccount','notifyMail','server','addInteraction','Contact','fullname','internal','Tags','tag','Command','timezone','iftime\x20%s,%s','interval','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','inspect','No\x20timezone','getSnippet','Interval','getProactiveActions','virtual','custom','License','increment','chatLicenseExceeded','Intervals','all','some','remote','x-real-ip','connection','remoteAddress','replace','render','color','textColor','color_button','backgroundColor','sequelize','getApplications','addProactiveActions','omit','ChatProactiveAction','getFields','online','false','offlineForm','items','fromKey','getOfflineMessages','Attachment','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','jayson/promise','client','http','request','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatWebsite,\x20%s,\x20%s','message','info','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','get','UserProfileResource','stack','name','index','Pause','map','ChatWebsite','rawAttributes','type','key','keys','query','intersection','model','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','mandatoryDispositionPause','length','find','create','body','user','role','ChatWebsites','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','options','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','order','removeAnswers','sitepic','filename','addAvatar','agentAvatar','file'];(function(_0x47fd36,_0x41535d){var _0x21a0fc=function(_0x44c07c){while(--_0x44c07c){_0x47fd36['push'](_0x47fd36['shift']());}};_0x21a0fc(++_0x41535d);}(_0x8985,0xb9));var _0x5898=function(_0x99012e,_0x5ae4ee){_0x99012e=_0x99012e-0x0;var _0x236163=_0x8985[_0x99012e];return _0x236163;};'use strict';var emlformat=require(_0x5898('0x0'));var rimraf=require(_0x5898('0x1'));var zipdir=require(_0x5898('0x2'));var jsonpatch=require(_0x5898('0x3'));var rp=require(_0x5898('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x5898('0x5'));var sox=require(_0x5898('0x6'));var csv=require(_0x5898('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5898('0x8'));var _=require(_0x5898('0x9'));var squel=require(_0x5898('0xa'));var crypto=require(_0x5898('0xb'));var jsforce=require(_0x5898('0xc'));var deskjs=require(_0x5898('0xd'));var toCsv=require(_0x5898('0x7'));var querystring=require(_0x5898('0xe'));var Papa=require(_0x5898('0xf'));var Redis=require(_0x5898('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x5898('0x11'));var as=require(_0x5898('0x12'));var hardwareService=require(_0x5898('0x13'));var logger=require(_0x5898('0x14'))(_0x5898('0x15'));var utils=require(_0x5898('0x16'));var config=require(_0x5898('0x17'));var licenseUtil=require(_0x5898('0x18'));var db=require(_0x5898('0x19'))['db'];config[_0x5898('0x1a')]=_[_0x5898('0x1b')](config[_0x5898('0x1a')],{'host':_0x5898('0x1c'),'port':0x18eb});var socket=require(_0x5898('0x1d'))(new Redis(config['redis']));require(_0x5898('0x1e'))[_0x5898('0x1f')](socket);var jayson=require(_0x5898('0x20'));var client=jayson[_0x5898('0x21')][_0x5898('0x22')]({'port':0x232c});var client9002=jayson[_0x5898('0x21')]['http']({'port':0x232a});var client9003=jayson[_0x5898('0x21')][_0x5898('0x22')]({'port':0x232b});var client9001=jayson[_0x5898('0x21')][_0x5898('0x22')]({'port':0x2329});function respondWithRpcPromise(_0x33c74e,_0x4b7b2f,_0x3295bc,_0x365a79){return new BPromise(function(_0x434239,_0x3a7264){var _0x5c55ce=_0x365a79||client;return _0x5c55ce[_0x5898('0x23')](_0x33c74e,_0x3295bc)['then'](function(_0x56e85d){logger['info']('ChatWebsite,\x20%s,\x20%s',_0x4b7b2f,_0x5898('0x24'));logger['debug'](_0x5898('0x25'),_0x4b7b2f,'request\x20sent',JSON[_0x5898('0x26')](_0x56e85d));if(_0x56e85d['error']){if(_0x56e85d[_0x5898('0x27')][_0x5898('0x28')]===0x1f4){logger[_0x5898('0x27')](_0x5898('0x29'),_0x4b7b2f,_0x56e85d['error'][_0x5898('0x2a')]);return _0x3a7264(_0x56e85d[_0x5898('0x27')][_0x5898('0x2a')]);}logger['error'](_0x5898('0x29'),_0x4b7b2f,_0x56e85d[_0x5898('0x27')][_0x5898('0x2a')]);return _0x434239(_0x56e85d[_0x5898('0x27')]['message']);}else{logger[_0x5898('0x2b')](_0x5898('0x29'),_0x4b7b2f,'request\x20sent');_0x434239(_0x56e85d[_0x5898('0x2c')][_0x5898('0x2a')]);}})['catch'](function(_0xb79b6e){logger[_0x5898('0x27')]('ChatWebsite,\x20%s,\x20%s',_0x4b7b2f,_0xb79b6e);_0x3a7264(_0xb79b6e);});});}function respondWithStatusCode(_0x25178f,_0x3afeb4){_0x3afeb4=_0x3afeb4||0xcc;return function(_0x4004d2){if(_0x4004d2){return _0x25178f[_0x5898('0x2d')](_0x3afeb4);}return _0x25178f[_0x5898('0x2e')](_0x3afeb4)[_0x5898('0x2f')]();};}function respondWithResult(_0x22512c,_0xbe3312){_0xbe3312=_0xbe3312||0xc8;return function(_0x2e0838){if(_0x2e0838){return _0x22512c[_0x5898('0x2e')](_0xbe3312)[_0x5898('0x30')](_0x2e0838);}};}function respondWithFilteredResult(_0x5cb926,_0xd3b8f3){return function(_0x4def35){if(_0x4def35){var _0x27cb83=typeof _0xd3b8f3[_0x5898('0x31')]===_0x5898('0x32')&&typeof _0xd3b8f3[_0x5898('0x33')]===_0x5898('0x32');var _0x5126d2=_0x4def35[_0x5898('0x34')];var _0x11e9c1=_0x27cb83?0x0:_0xd3b8f3[_0x5898('0x31')];var _0x5c7b9e=_0x27cb83?_0x4def35['count']:_0xd3b8f3[_0x5898('0x31')]+_0xd3b8f3[_0x5898('0x33')];var _0x1dccac;if(_0x5c7b9e>=_0x5126d2){_0x5c7b9e=_0x5126d2;_0x1dccac=0xc8;}else{_0x1dccac=0xce;}_0x5cb926['status'](_0x1dccac);return _0x5cb926[_0x5898('0x35')](_0x5898('0x36'),_0x11e9c1+'-'+_0x5c7b9e+'/'+_0x5126d2)[_0x5898('0x30')](_0x4def35);}return null;};}function patchUpdates(_0x5067bd){return function(_0x2d1102){try{jsonpatch['apply'](_0x2d1102,_0x5067bd,!![]);}catch(_0x59cbd7){return BPromise['reject'](_0x59cbd7);}return _0x2d1102[_0x5898('0x37')]();};}function saveUpdates(_0x5e7dd0,_0x776da2){return function(_0x1c5a71){if(_0x1c5a71){return _0x1c5a71[_0x5898('0x38')](_0x5e7dd0)[_0x5898('0x39')](function(_0x51d656){return _0x51d656;});}return null;};}function removeEntity(_0x202d6e,_0x564483){return function(_0x3d725){if(_0x3d725){return _0x3d725[_0x5898('0x3a')]()[_0x5898('0x39')](function(){var _0x1baf5c=_0x3d725[_0x5898('0x3b')]({'plain':!![]});var _0x2ef0ba='ChatWebsites';return db[_0x5898('0x3c')]['destroy']({'where':{'type':_0x2ef0ba,'resourceId':_0x1baf5c['id']}})[_0x5898('0x39')](function(){return _0x3d725;});})[_0x5898('0x39')](function(){_0x202d6e['status'](0xcc)[_0x5898('0x2f')]();});}};}function handleEntityNotFound(_0x4c65f1,_0x1af066){return function(_0x5da1a0){if(!_0x5da1a0){_0x4c65f1[_0x5898('0x2d')](0x194);}return _0x5da1a0;};}function handleError(_0x14ab55,_0x122049){_0x122049=_0x122049||0x1f4;return function(_0x29b51c){logger[_0x5898('0x27')](_0x29b51c[_0x5898('0x3d')]);if(_0x29b51c[_0x5898('0x3e')]){delete _0x29b51c[_0x5898('0x3e')];}_0x14ab55[_0x5898('0x2e')](_0x122049)['send'](_0x29b51c);};}exports[_0x5898('0x3f')]=function(_0x1e93aa,_0x2729de){var _0x1f7a25={'include':[{'model':db[_0x5898('0x40')],'as':'mandatoryDispositionPause'}]},_0x12f780={},_0x1ba209={'count':0x0,'rows':[]};var _0x2b5d77=_[_0x5898('0x41')](db[_0x5898('0x42')][_0x5898('0x43')],function(_0x27c4a7){return{'name':_0x27c4a7['fieldName'],'type':_0x27c4a7[_0x5898('0x44')][_0x5898('0x45')]};});_0x12f780['model']=_[_0x5898('0x41')](_0x2b5d77,_0x5898('0x3e'));_0x12f780['query']=_[_0x5898('0x46')](_0x1e93aa[_0x5898('0x47')]);_0x12f780['filters']=_[_0x5898('0x48')](_0x12f780[_0x5898('0x49')],_0x12f780[_0x5898('0x47')]);_0x1f7a25['attributes']=_[_0x5898('0x48')](_0x12f780[_0x5898('0x49')],qs[_0x5898('0x4a')](_0x1e93aa[_0x5898('0x47')]['fields']));_0x1f7a25[_0x5898('0x4b')]=_0x1f7a25[_0x5898('0x4b')]['length']?_0x1f7a25[_0x5898('0x4b')]:_0x12f780[_0x5898('0x49')];if(!_0x1e93aa['query'][_0x5898('0x4c')](_0x5898('0x4d'))){_0x1f7a25[_0x5898('0x33')]=qs[_0x5898('0x33')](_0x1e93aa['query']['limit']);_0x1f7a25[_0x5898('0x31')]=qs['offset'](_0x1e93aa['query']['offset']);}_0x1f7a25['order']=qs[_0x5898('0x4e')](_0x1e93aa['query'][_0x5898('0x4e')]);_0x1f7a25[_0x5898('0x4f')]=qs[_0x5898('0x50')](_[_0x5898('0x51')](_0x1e93aa[_0x5898('0x47')],_0x12f780[_0x5898('0x50')]),_0x2b5d77);if(_0x1e93aa[_0x5898('0x47')][_0x5898('0x52')]){_0x1f7a25[_0x5898('0x4f')]=_[_0x5898('0x53')](_0x1f7a25[_0x5898('0x4f')],{'$or':_[_0x5898('0x41')](_0x2b5d77,function(_0x2afecb){if(_0x2afecb[_0x5898('0x44')]!==_0x5898('0x54')){var _0x4fd68f={};_0x4fd68f[_0x2afecb[_0x5898('0x3e')]]={'$like':'%'+_0x1e93aa[_0x5898('0x47')][_0x5898('0x52')]+'%'};return _0x4fd68f;}})});}_0x1f7a25=_[_0x5898('0x53')]({},_0x1f7a25,_0x1e93aa['options']);var _0xe7f78c={'where':_0x1f7a25['where']};return db[_0x5898('0x42')]['count'](_0xe7f78c)[_0x5898('0x39')](function(_0x54138e){_0x1ba209[_0x5898('0x34')]=_0x54138e;if(_0x1e93aa[_0x5898('0x47')][_0x5898('0x55')]){_0x1f7a25[_0x5898('0x56')]=[{'all':!![]}];}return db[_0x5898('0x42')][_0x5898('0x57')](_0x1f7a25);})['then'](function(_0x390643){_0x1ba209[_0x5898('0x58')]=_0x390643;return _0x1ba209;})[_0x5898('0x39')](respondWithFilteredResult(_0x2729de,_0x1f7a25))[_0x5898('0x59')](handleError(_0x2729de,null));};exports[_0x5898('0x5a')]=function(_0x1699fd,_0x35ee55){var _0x349f7e={'raw':![],'where':{'id':_0x1699fd[_0x5898('0x5b')]['id']},'include':[{'model':db[_0x5898('0x40')],'as':_0x5898('0x5c')}]},_0x3bdcb0={};_0x3bdcb0['model']=_[_0x5898('0x46')](db[_0x5898('0x42')][_0x5898('0x43')]);_0x3bdcb0[_0x5898('0x47')]=_[_0x5898('0x46')](_0x1699fd[_0x5898('0x47')]);_0x3bdcb0[_0x5898('0x50')]=_[_0x5898('0x48')](_0x3bdcb0[_0x5898('0x49')],_0x3bdcb0[_0x5898('0x47')]);_0x349f7e['attributes']=_[_0x5898('0x48')](_0x3bdcb0[_0x5898('0x49')],qs['fields'](_0x1699fd['query'][_0x5898('0x4a')]));_0x349f7e['attributes']=_0x349f7e[_0x5898('0x4b')][_0x5898('0x5d')]?_0x349f7e[_0x5898('0x4b')]:_0x3bdcb0[_0x5898('0x49')];if(_0x1699fd['query'][_0x5898('0x55')]){_0x349f7e[_0x5898('0x56')]=[{'all':!![]}];}_0x349f7e=_[_0x5898('0x53')]({},_0x349f7e,_0x1699fd['options']);return db[_0x5898('0x42')][_0x5898('0x5e')](_0x349f7e)[_0x5898('0x39')](handleEntityNotFound(_0x35ee55,null))[_0x5898('0x39')](respondWithResult(_0x35ee55,null))[_0x5898('0x59')](handleError(_0x35ee55,null));};exports['create']=function(_0x556c90,_0x39e2d8){return db['ChatWebsite'][_0x5898('0x5f')](_0x556c90[_0x5898('0x60')],{})[_0x5898('0x39')](function(_0x5ef820){var _0x307c96=_0x556c90[_0x5898('0x61')][_0x5898('0x3b')]({'plain':!![]});if(!_0x307c96)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x307c96[_0x5898('0x62')]===_0x5898('0x61')){var _0x1fa60=_0x5ef820[_0x5898('0x3b')]({'plain':!![]});var _0x1239d9=_0x5898('0x63');return db['UserProfileSection'][_0x5898('0x5e')]({'where':{'name':_0x1239d9,'userProfileId':_0x307c96['userProfileId']},'raw':!![]})[_0x5898('0x39')](function(_0x30fc61){if(_0x30fc61&&_0x30fc61[_0x5898('0x64')]===0x0){return db[_0x5898('0x3c')][_0x5898('0x5f')]({'name':_0x1fa60[_0x5898('0x3e')],'resourceId':_0x1fa60['id'],'type':_0x30fc61[_0x5898('0x3e')],'sectionId':_0x30fc61['id']},{})[_0x5898('0x39')](function(){return _0x5ef820;});}else{return _0x5ef820;}})[_0x5898('0x59')](function(_0x4866d6){logger[_0x5898('0x27')](_0x5898('0x65'),_0x4866d6);throw _0x4866d6;});}return _0x5ef820;})['then'](respondWithResult(_0x39e2d8,0xc9))[_0x5898('0x59')](handleError(_0x39e2d8,null));};exports[_0x5898('0x38')]=function(_0x493260,_0x3ea7d9){if(_0x493260['body']['id']){delete _0x493260['body']['id'];}return db[_0x5898('0x42')][_0x5898('0x5e')]({'where':{'id':_0x493260[_0x5898('0x5b')]['id']},'include':[{'model':db[_0x5898('0x40')],'as':_0x5898('0x5c')}]})['then'](handleEntityNotFound(_0x3ea7d9,null))[_0x5898('0x39')](saveUpdates(_0x493260[_0x5898('0x60')],null))[_0x5898('0x39')](respondWithResult(_0x3ea7d9,null))['catch'](handleError(_0x3ea7d9,null));};exports[_0x5898('0x3a')]=function(_0x161b61,_0x2f5654){return db[_0x5898('0x42')][_0x5898('0x5e')]({'where':{'id':_0x161b61[_0x5898('0x5b')]['id']}})[_0x5898('0x39')](handleEntityNotFound(_0x2f5654,null))[_0x5898('0x39')](removeEntity(_0x2f5654,null))[_0x5898('0x59')](handleError(_0x2f5654,null));};exports[_0x5898('0x66')]=function(_0x465694,_0x522f6d){return db[_0x5898('0x42')][_0x5898('0x66')]()[_0x5898('0x39')](respondWithResult(_0x522f6d,null))['catch'](handleError(_0x522f6d,null));};exports[_0x5898('0x67')]=function(_0x1c36de,_0x3aab2c,_0x23b789){if(_0x1c36de['body']['id']){delete _0x1c36de[_0x5898('0x60')]['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x1c36de['params']['id']}})[_0x5898('0x39')](handleEntityNotFound(_0x3aab2c,null))[_0x5898('0x39')](function(_0x212562){if(_0x212562){_0x1c36de[_0x5898('0x60')][_0x5898('0x68')]=_0x212562['id'];return db[_0x5898('0x69')]['create'](_0x1c36de[_0x5898('0x60')]);}})['then'](respondWithResult(_0x3aab2c,null))['catch'](handleError(_0x3aab2c,null));};exports[_0x5898('0x6a')]=function(_0x3ec1dc,_0x14bed1,_0x5ebe45){var _0x35215c={'raw':![],'where':{}};var _0x473e84={};var _0x464716={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x5898('0x6b')]({'where':{'id':_0x3ec1dc[_0x5898('0x5b')]['id']}})['then'](handleEntityNotFound(_0x14bed1,null))[_0x5898('0x39')](function(_0x67540b){if(_0x67540b){_0x473e84[_0x5898('0x49')]=_[_0x5898('0x46')](db[_0x5898('0x69')][_0x5898('0x43')]);_0x473e84['query']=_[_0x5898('0x46')](_0x3ec1dc[_0x5898('0x47')]);_0x473e84[_0x5898('0x50')]=_[_0x5898('0x48')](_0x473e84[_0x5898('0x49')],_0x473e84[_0x5898('0x47')]);_0x35215c['attributes']=_[_0x5898('0x48')](_0x473e84[_0x5898('0x49')],qs[_0x5898('0x4a')](_0x3ec1dc[_0x5898('0x47')][_0x5898('0x4a')]));_0x35215c[_0x5898('0x4b')]=_0x35215c[_0x5898('0x4b')][_0x5898('0x5d')]?_0x35215c['attributes']:_0x473e84['model'];if(!_0x3ec1dc['query']['hasOwnProperty']('nolimit')){_0x35215c[_0x5898('0x33')]=qs[_0x5898('0x33')](_0x3ec1dc['query']['limit']);_0x35215c[_0x5898('0x31')]=qs[_0x5898('0x31')](_0x3ec1dc[_0x5898('0x47')][_0x5898('0x31')]);}_0x35215c['order']=qs[_0x5898('0x4e')](_0x3ec1dc['query']['sort']);_0x35215c[_0x5898('0x4f')]=qs[_0x5898('0x50')](_['pick'](_0x3ec1dc[_0x5898('0x47')],_0x473e84[_0x5898('0x50')]));_0x35215c[_0x5898('0x4f')][_0x5898('0x68')]=_0x67540b['id'];if(_0x3ec1dc['query'][_0x5898('0x52')]){_0x35215c[_0x5898('0x4f')]=_[_0x5898('0x53')](_0x35215c['where'],{'$or':_[_0x5898('0x41')](_0x35215c['attributes'],function(_0x56e30e){var _0x596f5c={};_0x596f5c[_0x56e30e]={'$like':'%'+_0x3ec1dc['query']['filter']+'%'};return _0x596f5c;})});}_0x35215c=_[_0x5898('0x53')]({},_0x35215c,_0x3ec1dc[_0x5898('0x6c')]);return db[_0x5898('0x69')][_0x5898('0x34')]({'where':_0x35215c['where']})[_0x5898('0x39')](function(_0x4ce3fc){_0x464716[_0x5898('0x34')]=_0x4ce3fc;if(_0x3ec1dc[_0x5898('0x47')][_0x5898('0x55')]){_0x35215c['include']=[{'all':!![]}];}return db[_0x5898('0x69')][_0x5898('0x57')](_0x35215c);})[_0x5898('0x39')](function(_0x2afae8){_0x464716[_0x5898('0x58')]=_0x2afae8;return _0x464716;});}})[_0x5898('0x39')](respondWithFilteredResult(_0x14bed1,_0x35215c))[_0x5898('0x59')](handleError(_0x14bed1,null));};exports[_0x5898('0x6d')]=function(_0x2de236,_0x5878e3,_0x241dad){return db[_0x5898('0x42')][_0x5898('0x5e')]({'where':{'id':_0x2de236[_0x5898('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5878e3,null))[_0x5898('0x39')](function(_0x1fc535){if(_0x1fc535){return _0x1fc535['removeDispositions'](_0x2de236[_0x5898('0x47')][_0x5898('0x6e')]);}})[_0x5898('0x39')](respondWithStatusCode(_0x5878e3,null))[_0x5898('0x59')](handleError(_0x5878e3,null));};exports[_0x5898('0x6f')]=function(_0x2739b3,_0xc6f68f,_0x260ec4){if(_0x2739b3[_0x5898('0x60')]['id']){delete _0x2739b3[_0x5898('0x60')]['id'];}return db[_0x5898('0x42')][_0x5898('0x5e')]({'where':{'id':_0x2739b3['params']['id']}})['then'](handleEntityNotFound(_0xc6f68f,null))[_0x5898('0x39')](function(_0x177ebc){if(_0x177ebc){_0x2739b3[_0x5898('0x60')][_0x5898('0x68')]=_0x177ebc['id'];return db[_0x5898('0x70')][_0x5898('0x5f')](_0x2739b3[_0x5898('0x60')]);}})[_0x5898('0x39')](respondWithResult(_0xc6f68f,null))['catch'](handleError(_0xc6f68f,null));};exports[_0x5898('0x71')]=function(_0x52a174,_0x3a8e6b,_0x453761){var _0xa920a8={'raw':![],'where':{}};var _0x127d54={};var _0x48eace={'count':0x0,'rows':[]};return db[_0x5898('0x42')]['findOne']({'where':{'id':_0x52a174[_0x5898('0x5b')]['id']}})['then'](handleEntityNotFound(_0x3a8e6b,null))[_0x5898('0x39')](function(_0x247138){if(_0x247138){_0x127d54[_0x5898('0x49')]=_['keys'](db[_0x5898('0x70')][_0x5898('0x43')]);_0x127d54[_0x5898('0x47')]=_[_0x5898('0x46')](_0x52a174[_0x5898('0x47')]);_0x127d54[_0x5898('0x50')]=_['intersection'](_0x127d54['model'],_0x127d54[_0x5898('0x47')]);_0xa920a8[_0x5898('0x4b')]=_[_0x5898('0x48')](_0x127d54[_0x5898('0x49')],qs['fields'](_0x52a174[_0x5898('0x47')][_0x5898('0x4a')]));_0xa920a8['attributes']=_0xa920a8[_0x5898('0x4b')][_0x5898('0x5d')]?_0xa920a8[_0x5898('0x4b')]:_0x127d54[_0x5898('0x49')];if(!_0x52a174['query'][_0x5898('0x4c')]('nolimit')){_0xa920a8[_0x5898('0x33')]=qs[_0x5898('0x33')](_0x52a174[_0x5898('0x47')][_0x5898('0x33')]);_0xa920a8[_0x5898('0x31')]=qs['offset'](_0x52a174['query']['offset']);}_0xa920a8[_0x5898('0x72')]=qs[_0x5898('0x4e')](_0x52a174['query'][_0x5898('0x4e')]);_0xa920a8['where']=qs[_0x5898('0x50')](_[_0x5898('0x51')](_0x52a174[_0x5898('0x47')],_0x127d54[_0x5898('0x50')]));_0xa920a8[_0x5898('0x4f')]['ChatWebsiteId']=_0x247138['id'];if(_0x52a174['query'][_0x5898('0x52')]){_0xa920a8[_0x5898('0x4f')]=_[_0x5898('0x53')](_0xa920a8[_0x5898('0x4f')],{'$or':_[_0x5898('0x41')](_0xa920a8[_0x5898('0x4b')],function(_0x3cefa4){var _0x464442={};_0x464442[_0x3cefa4]={'$like':'%'+_0x52a174[_0x5898('0x47')]['filter']+'%'};return _0x464442;})});}_0xa920a8=_['merge']({},_0xa920a8,_0x52a174[_0x5898('0x6c')]);return db['CannedAnswer'][_0x5898('0x34')]({'where':_0xa920a8['where']})[_0x5898('0x39')](function(_0x47b469){_0x48eace['count']=_0x47b469;if(_0x52a174[_0x5898('0x47')][_0x5898('0x55')]){_0xa920a8['include']=[{'all':!![]}];}return db['CannedAnswer'][_0x5898('0x57')](_0xa920a8);})[_0x5898('0x39')](function(_0x1d0434){_0x48eace['rows']=_0x1d0434;return _0x48eace;});}})[_0x5898('0x39')](respondWithFilteredResult(_0x3a8e6b,_0xa920a8))[_0x5898('0x59')](handleError(_0x3a8e6b,null));};exports[_0x5898('0x73')]=function(_0x30c3c4,_0x501d48,_0x463a9d){return db[_0x5898('0x42')][_0x5898('0x5e')]({'where':{'id':_0x30c3c4[_0x5898('0x5b')]['id']}})[_0x5898('0x39')](handleEntityNotFound(_0x501d48,null))['then'](function(_0xec6cf){if(_0xec6cf){return _0xec6cf[_0x5898('0x73')](_0x30c3c4[_0x5898('0x47')]['ids']);}})[_0x5898('0x39')](respondWithStatusCode(_0x501d48,null))[_0x5898('0x59')](handleError(_0x501d48,null));};exports['addLogo']=function(_0x471918,_0x4d67f9,_0x3535c5){_0x471918[_0x5898('0x60')][_0x5898('0x74')]=_0x471918['file'][_0x5898('0x75')];return db[_0x5898('0x42')]['find']({'where':{'id':_0x471918[_0x5898('0x5b')]['id']}})[_0x5898('0x39')](handleEntityNotFound(_0x4d67f9,null))[_0x5898('0x39')](saveUpdates(_0x471918[_0x5898('0x60')],null))[_0x5898('0x39')](respondWithResult(_0x4d67f9,null))[_0x5898('0x59')](handleError(_0x4d67f9,null));};exports[_0x5898('0x76')]=function(_0x4dc3c7,_0x328c73,_0x1d2d29){_0x4dc3c7[_0x5898('0x60')][_0x5898('0x77')]=_0x4dc3c7[_0x5898('0x78')][_0x5898('0x75')];return db[_0x5898('0x42')]['find']({'where':{'id':_0x4dc3c7[_0x5898('0x5b')]['id']}})[_0x5898('0x39')](handleEntityNotFound(_0x328c73,null))[_0x5898('0x39')](saveUpdates(_0x4dc3c7['body'],null))[_0x5898('0x39')](respondWithResult(_0x328c73,null))[_0x5898('0x59')](handleError(_0x328c73,null));};exports['addCustomerAvatar']=function(_0x4dd906,_0x55632b,_0x5275f0){_0x4dd906[_0x5898('0x60')][_0x5898('0x79')]=_0x4dd906['file'][_0x5898('0x75')];return db['ChatWebsite'][_0x5898('0x5e')]({'where':{'id':_0x4dd906['params']['id']}})[_0x5898('0x39')](handleEntityNotFound(_0x55632b,null))['then'](saveUpdates(_0x4dd906[_0x5898('0x60')],null))[_0x5898('0x39')](respondWithResult(_0x55632b,null))[_0x5898('0x59')](handleError(_0x55632b,null));};exports[_0x5898('0x7a')]=function(_0x1e895e,_0x137620,_0x2f23b3){_0x1e895e[_0x5898('0x60')][_0x5898('0x7b')]=_0x1e895e['file'][_0x5898('0x75')];return db[_0x5898('0x42')][_0x5898('0x5e')]({'where':{'id':_0x1e895e[_0x5898('0x5b')]['id']}})[_0x5898('0x39')](handleEntityNotFound(_0x137620,null))[_0x5898('0x39')](saveUpdates(_0x1e895e[_0x5898('0x60')],null))[_0x5898('0x39')](respondWithResult(_0x137620,null))[_0x5898('0x59')](handleError(_0x137620,null));};exports[_0x5898('0x7c')]=function(_0x13694c,_0x32201a,_0x2ac0bc){var _0x15d601=path[_0x5898('0x7d')](config['root'],_0x5898('0x7e'));var _0x30a2d0={'where':{'id':_0x13694c[_0x5898('0x5b')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x55ffbf=![];return require(_0x5898('0x18'))[_0x5898('0x7f')]()[_0x5898('0x39')](function(_0x5d7741){if(_0x5d7741){_0x55ffbf=_0x5d7741['custom'];}})[_0x5898('0x39')](function(){return db[_0x5898('0x42')][_0x5898('0x5e')](_0x30a2d0);})[_0x5898('0x39')](handleEntityNotFound(_0x32201a,null))[_0x5898('0x39')](function(_0x4b2bbf){if(_0x4b2bbf){if(!_[_0x5898('0x80')](_0x4b2bbf[_0x5898('0x74')])){if(fs[_0x5898('0x81')](path['join'](config['root'],_0x5898('0x82'),_0x4b2bbf[_0x5898('0x74')]))&&_0x55ffbf){_0x15d601=path[_0x5898('0x7d')](config['root'],_0x5898('0x82'),_0x4b2bbf[_0x5898('0x74')]);}}return _0x32201a[_0x5898('0x83')](_0x15d601);}})['catch'](handleError(_0x32201a,null));};exports[_0x5898('0x84')]=function(_0x1e7edb,_0x3a6574,_0x10bbda){var _0x119456=path['join'](config['root'],'server/files/images/avatars/default_avatar.png');var _0x1255f1={'where':{'id':_0x1e7edb[_0x5898('0x5b')]['id']},'attributes':['id',_0x5898('0x77')],'raw':!![]};return db[_0x5898('0x42')]['find'](_0x1255f1)[_0x5898('0x39')](handleEntityNotFound(_0x3a6574,null))[_0x5898('0x39')](function(_0x473c81){if(_0x473c81){if(!_['isNil'](_0x473c81['agentAvatar'])){if(fs['existsSync'](path[_0x5898('0x7d')](config[_0x5898('0x85')],_0x5898('0x86'),_0x473c81[_0x5898('0x77')]))){_0x119456=path['join'](config[_0x5898('0x85')],_0x5898('0x86'),_0x473c81[_0x5898('0x77')]);}}return _0x3a6574[_0x5898('0x83')](_0x119456);}})[_0x5898('0x59')](handleError(_0x3a6574,null));};exports['getCustomerAvatar']=function(_0x3acb8d,_0x292766,_0x31b8fc){var _0x198f26=path[_0x5898('0x7d')](config[_0x5898('0x85')],'server/files/images/avatars/customer_avatar.png');var _0xbb2dfa={'where':{'id':_0x3acb8d[_0x5898('0x5b')]['id']},'attributes':['id','customerAvatar',_0x5898('0x87')],'raw':!![]};return db['ChatWebsite']['find'](_0xbb2dfa)[_0x5898('0x39')](handleEntityNotFound(_0x292766,null))[_0x5898('0x39')](function(_0x5ad47c){if(_0x5ad47c){if(!_[_0x5898('0x80')](_0x5ad47c[_0x5898('0x79')])){if(fs[_0x5898('0x81')](path[_0x5898('0x7d')](config['root'],_0x5898('0x86'),_0x5ad47c[_0x5898('0x79')]))&&_0x5ad47c[_0x5898('0x87')]){_0x198f26=path[_0x5898('0x7d')](config[_0x5898('0x85')],_0x5898('0x86'),_0x5ad47c[_0x5898('0x79')]);}}return _0x292766[_0x5898('0x83')](_0x198f26);}})['catch'](handleError(_0x292766,null));};exports[_0x5898('0x88')]=function(_0x2778ff,_0x4fd67f,_0x49f356){var _0xb8a527=path['join'](config['root'],_0x5898('0x89'));var _0x12c962={'where':{'id':_0x2778ff['params']['id']},'attributes':['id',_0x5898('0x7b')],'raw':!![]};return db['ChatWebsite'][_0x5898('0x5e')](_0x12c962)[_0x5898('0x39')](handleEntityNotFound(_0x4fd67f,null))[_0x5898('0x39')](function(_0x172e89){if(_0x172e89){if(!_['isNil'](_0x172e89['systemAvatar'])){if(fs[_0x5898('0x81')](path['join'](config[_0x5898('0x85')],'server/files/images/avatars/',_0x172e89[_0x5898('0x7b')]))){_0xb8a527=path['join'](config['root'],_0x5898('0x86'),_0x172e89['systemAvatar']);}}return _0x4fd67f[_0x5898('0x83')](_0xb8a527);}})[_0x5898('0x59')](handleError(_0x4fd67f,null));};exports[_0x5898('0x8a')]=function(_0x45891f,_0x2469a7,_0x53174c){var _0x5d6843=require(_0x5898('0x8b'));var _0x395d77=new _0x5d6843();var _0x518829=_0x395d77[_0x5898('0x8c')](_0x45891f[_0x5898('0x8d')][_0x5898('0x8e')])[_0x5898('0x8f')]();var _0x53ad5c={'body':_0x45891f[_0x5898('0x60')],'channel':_0x5898('0x90')};var _0x1f001b=[];var _0x51529a=[];var _0x4960ab={};var _0x2bc5da=![];return db[_0x5898('0x91')][_0x5898('0x66')]()[_0x5898('0x39')](function(_0x516b6d){if(!_0x516b6d){throw new db[(_0x5898('0x92'))][(_0x5898('0x93'))](_0x5898('0x94'));}_0x1f001b=_['difference'](_[_0x5898('0x46')](_0x516b6d),[_0x5898('0x95'),_0x5898('0x96')]);_0x51529a=_[_0x5898('0x97')](_['keys'](_0x516b6d),[_0x5898('0x95'),_0x5898('0x96'),_0x5898('0x98'),_0x5898('0x99')]);if(_0x45891f['body']['id']){delete _0x45891f[_0x5898('0x60')]['id'];}if(_['isNil'](_0x45891f[_0x5898('0x60')][_0x5898('0x9a')])){throw new db['Sequelize']['ValidationError'](_0x5898('0x9b'));}if(_[_0x5898('0x80')](_0x45891f['body'][_0x5898('0x60')])||_0x45891f['body'][_0x5898('0x60')]===''){throw new db[(_0x5898('0x92'))][(_0x5898('0x93'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x45891f[_0x5898('0x60')]['mapKey'])){throw new db['Sequelize']['ValidationError'](_0x5898('0x9c')+_0x51529a);}if(!_[_0x5898('0x9d')](_0x51529a,_0x45891f[_0x5898('0x60')][_0x5898('0x9e')])){throw new db['Sequelize'][(_0x5898('0x93'))](_0x5898('0x9f')+_0x51529a);}_0x4960ab[_0x45891f['body'][_0x5898('0x9e')]]=_0x45891f[_0x5898('0x60')][_0x5898('0x9a')];})['then'](function(){return db['ChatWebsite'][_0x5898('0x5e')]({'where':{'id':_0x45891f['params']['id']},'include':[{'model':db['CmList'],'as':_0x5898('0xa0'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x4960ab,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x5898('0xa1')],'as':_0x5898('0xa2')}]});})[_0x5898('0x39')](handleEntityNotFound(_0x2469a7,null))[_0x5898('0x39')](function(_0x39de95){if(_0x39de95&&_0x39de95['List']){_0x53ad5c[_0x5898('0xa3')]=_0x39de95;_0x53ad5c[_0x5898('0xa4')]=_0x39de95[_0x5898('0xa2')];_0x53ad5c[_0x5898('0xa5')]=_0x39de95['List'];_0x53ad5c[_0x5898('0xa4')]=_[_0x5898('0xa6')](_0x53ad5c['applications'],['priority'],[_0x5898('0xa7')]);if(_0x53ad5c[_0x5898('0xa3')][_0x5898('0xa2')]){delete _0x53ad5c['account'][_0x5898('0xa2')];}if(_0x53ad5c['account']['List']&&_0x53ad5c[_0x5898('0xa3')]['List'][_0x5898('0xa8')][_0x5898('0x5d')]){return _0x53ad5c['account'][_0x5898('0xa0')][_0x5898('0xa8')][0x0];}var _0x35aeab=_[_0x5898('0x1b')](_0x45891f[_0x5898('0x60')],{'firstName':_0x45891f[_0x5898('0x60')]['from'],'ListId':_0x39de95['ListId']});_0x35aeab[_0x45891f[_0x5898('0x60')][_0x5898('0x9e')]]=_0x45891f[_0x5898('0x60')]['from'];return db[_0x5898('0x91')][_0x5898('0x5f')](_0x35aeab,{'fields':_0x1f001b,'raw':!![]});}})[_0x5898('0x39')](handleEntityNotFound(_0x2469a7,null))[_0x5898('0x39')](function(_0x3c1b11){_0x53ad5c[_0x5898('0xa9')]=_0x3c1b11;var _0x1a6b82=_0x45891f[_0x5898('0x60')][_0x5898('0xaa')];if(_0x45891f[_0x5898('0x8d')][_0x5898('0xab')]){_0x1a6b82=_0x45891f[_0x5898('0x8d')]['cf-connecting-ip'];}else if(_0x45891f[_0x5898('0x8d')][_0x5898('0xac')]){_0x1a6b82=_['first'](_0x45891f[_0x5898('0x8d')][_0x5898('0xac')][_0x5898('0xad')](','));}if(_0x3c1b11){var _0x1655be={'ContactId':_0x3c1b11['id'],'ChatWebsiteId':_0x45891f[_0x5898('0x5b')]['id'],'from':(_0x3c1b11[_0x5898('0xae')]||'')+'\x20'+(_0x3c1b11['lastName']||''),'customerIp':_0x1a6b82,'customerPort':_0x45891f['headers'][_0x5898('0xaf')]?_0x45891f['headers'][_0x5898('0xaf')]:null,'referer':_0x45891f['body'][_0x5898('0xb0')],'browserName':_0x518829[_0x5898('0xb1')][_0x5898('0x3e')]&&_0x518829[_0x5898('0xb1')][_0x5898('0xb2')]?util['format'](_0x5898('0xb3'),_0x518829[_0x5898('0xb1')][_0x5898('0x3e')],_0x518829['browser'][_0x5898('0xb2')]):_0x5898('0xb4'),'browserVersion':_0x518829[_0x5898('0xb1')]['version']||_0x5898('0xb4'),'osName':util[_0x5898('0xb5')](_0x5898('0xb3'),_0x518829['os'][_0x5898('0x3e')],_0x518829['os']['version']),'osVersion':_0x518829['os']['version'],'deviceModel':_0x518829[_0x5898('0xb6')][_0x5898('0x49')]&&_0x518829[_0x5898('0xb6')]['vendor']?util['format'](_0x5898('0xb7'),_0x518829[_0x5898('0xb6')][_0x5898('0x49')],_0x518829[_0x5898('0xb6')][_0x5898('0xb8')],_0x518829[_0x5898('0xb6')][_0x5898('0x44')]):null,'deviceVendor':_0x518829[_0x5898('0xb6')][_0x5898('0xb8')],'deviceType':_0x518829[_0x5898('0xb6')]['type'],'formData':JSON[_0x5898('0x26')](_0x45891f[_0x5898('0x60')])};var _0x36a17b={'ChatWebsiteId':_0x45891f[_0x5898('0x5b')]['id'],'closed':![]};if(_0x45891f[_0x5898('0x60')][_0x5898('0xb9')]){_0x36a17b[_0x5898('0xb9')]=_0x45891f['body'][_0x5898('0xb9')];return db[_0x5898('0xba')][_0x5898('0x5e')]({'where':_0x36a17b})['then'](function(_0x2c065){if(_0x2c065){return[_0x2c065,![]];}_0x1655be[_0x5898('0xb9')]=_0x45891f[_0x5898('0x60')][_0x5898('0xb9')];_0x1655be['externalUrl']=_0x45891f[_0x5898('0x60')]['externalUrl'];return db['ChatInteraction']['create'](_0x1655be)[_0x5898('0x39')](function(_0x5aaa78){return[_0x5aaa78,!![]];});});}_0x36a17b['ContactId']=_0x3c1b11['id'];if(_0x45891f['body']['interaction']&&_0x45891f[_0x5898('0x60')][_0x5898('0xbb')]['id']){_0x36a17b['id']=_0x45891f[_0x5898('0x60')][_0x5898('0xbb')]['id'];return db['ChatInteraction']['find']({'where':_0x36a17b})[_0x5898('0x39')](function(_0x3248b5){if(_0x3248b5){return[_0x3248b5,![]];}return db[_0x5898('0xba')][_0x5898('0x5f')](_0x1655be)[_0x5898('0x39')](function(_0xe55f19){return[_0xe55f19,!![]];});});}return db[_0x5898('0xba')][_0x5898('0x5f')](_0x1655be)[_0x5898('0x39')](function(_0x2e3a97){return[_0x2e3a97,!![]];});}})[_0x5898('0xbc')](function(_0x3c5632,_0x365a5d){if(_0x3c5632){_0x2bc5da=_0x365a5d;if(!_0x365a5d){var _0x1edca9={'from':(_0x53ad5c[_0x5898('0xa9')]['firstName']||'')+'\x20'+(_0x53ad5c[_0x5898('0xa9')][_0x5898('0xbd')]||'')};if(_0x45891f[_0x5898('0x60')][_0x5898('0xb9')]&&_0x45891f['body'][_0x5898('0xbe')]&&_0x45891f['body'][_0x5898('0xb9')]!=_0x45891f['body'][_0x5898('0xbe')]){_0x1edca9['threadId']=_0x45891f['body']['messageId'];}return _0x3c5632['update'](_0x1edca9);}else{return _0x3c5632;}}})['then'](function(_0x4e6f55){_0x53ad5c['interaction']=_0x4e6f55[_0x5898('0x3b')]({'plain':!![]});_0x53ad5c['interaction'][_0x5898('0xbf')]=_0x2bc5da;if(_0x53ad5c[_0x5898('0xbb')][_0x5898('0xbf')]){if(_0x53ad5c[_0x5898('0xa3')]['autoclose']){_0x53ad5c[_0x5898('0xa4')][_0x5898('0xc0')]({'id':0x0,'priority':_0x53ad5c[_0x5898('0xa4')]['length']+0x1,'app':_0x5898('0xc1'),'appdata':_0x5898('0xc2'),'interval':_0x5898('0xc3')});}}return db[_0x5898('0xc4')][_0x5898('0x5f')]({'body':_0x45891f[_0x5898('0x60')][_0x5898('0x60')],'ChatWebsiteId':_0x45891f[_0x5898('0x5b')]['id'],'ChatInteractionId':_0x4e6f55['id'],'direction':'in','ContactId':_0x53ad5c[_0x5898('0xa9')]['id'],'AttachmentId':_0x45891f[_0x5898('0x60')][_0x5898('0xc5')]});})['then'](function(_0xa5eac0){_0x53ad5c['message']=_0xa5eac0;if(_0x53ad5c['interaction'][_0x5898('0xc6')]){return db[_0x5898('0xc7')][_0x5898('0x5e')]({'attributes':['id','name'],'where':{'id':_0x53ad5c['interaction'][_0x5898('0xc6')]}})[_0x5898('0x39')](function(_0x494d58){if(_0x494d58){_0x53ad5c[_0x5898('0xa4')][_0x5898('0xc8')]({'id':0x0,'priority':0x0,'app':_0x5898('0xc9'),'appdata':_0x494d58['name']+','+(_0x53ad5c[_0x5898('0xa3')]['waitForTheAssignedAgent']||0xa),'interval':_0x5898('0xc3')});_0x53ad5c[_0x5898('0xca')]=!![];}return respondWithRpcPromise(_0x5898('0xcb'),_0x5898('0xcc'),_0x53ad5c);});}return respondWithRpcPromise(_0x5898('0xcb'),_0x5898('0xcc'),_0x53ad5c);})[_0x5898('0x39')](function(_0x4e668f){respondWithRpcPromise(_0x5898('0xcd'),_0x5898('0xcd'),{'event':_0x5898('0x8a'),'message':_0x4e668f},client9002);return _0x4e668f;})[_0x5898('0x39')](respondWithResult(_0x2469a7,null))['catch'](handleError(_0x2469a7,null));};exports[_0x5898('0xce')]=function(_0x9ecf0b,_0x20e97a,_0xa90a5e){var _0x128587,_0x44422a,_0x2fdea2;var _0x4de7c2=[];var _0x3b36d3=[];var _0x479099={};var _0x3cf134=_0x9ecf0b[_0x5898('0xcf')]||[];var _0x3e6f04=[];var _0x367fa7;return db[_0x5898('0x91')]['describe']()[_0x5898('0x39')](function(_0x1a4abc){if(!_0x1a4abc){throw new db[(_0x5898('0x92'))]['ValidationError'](_0x5898('0x94'));}_0x3b36d3=_[_0x5898('0x97')](_[_0x5898('0x46')](_0x1a4abc),[_0x5898('0x95'),_0x5898('0x96')]);_0x4de7c2=_[_0x5898('0x97')](_[_0x5898('0x46')](_0x1a4abc),[_0x5898('0x95'),_0x5898('0x96'),_0x5898('0x98'),_0x5898('0x99')]);if(_0x9ecf0b['body']['id']){delete _0x9ecf0b[_0x5898('0x60')]['id'];}if(_[_0x5898('0x80')](_0x9ecf0b['body']['from'])){throw _0x20e97a[_0x5898('0x2e')](0x1f4)[_0x5898('0xd0')](new db[(_0x5898('0x92'))][(_0x5898('0x93'))](_0x5898('0x9b')));}if(_['isNil'](_0x9ecf0b[_0x5898('0x60')][_0x5898('0x60')])||_0x9ecf0b[_0x5898('0x60')][_0x5898('0x60')]===''){throw _0x20e97a[_0x5898('0x2e')](0x1f4)[_0x5898('0xd0')](new db[(_0x5898('0x92'))][(_0x5898('0x93'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x5898('0x80')](_0x9ecf0b['body']['mapKeyOffline'])){throw _0x20e97a[_0x5898('0x2e')](0x1f4)[_0x5898('0xd0')](new db[(_0x5898('0x92'))][(_0x5898('0x93'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4de7c2));}if(!_[_0x5898('0x9d')](_0x4de7c2,_0x9ecf0b['body'][_0x5898('0xd1')])){throw _0x20e97a['status'](0x1f4)['send'](new db['Sequelize'][(_0x5898('0x93'))](_0x5898('0xd2')+_0x4de7c2));}_0x479099[_0x9ecf0b[_0x5898('0x60')][_0x5898('0xd1')]]=_0x9ecf0b['body']['from'];})[_0x5898('0x39')](function(){return db[_0x5898('0x42')][_0x5898('0x5e')]({'where':{'id':_0x9ecf0b[_0x5898('0x5b')]['id']},'include':[{'model':db[_0x5898('0xd3')],'as':_0x5898('0xa0')},{'model':db[_0x5898('0xd4')],'as':_0x5898('0xd4')}]});})['then'](handleEntityNotFound(_0x20e97a,null))[_0x5898('0x39')](function(_0x201e9e){if(_0x201e9e&&_0x201e9e['List']){_0x44422a=_0x201e9e;var _0x42a471=_[_0x5898('0x1b')](_0x9ecf0b['body'],{'firstName':_0x9ecf0b[_0x5898('0x60')][_0x5898('0x9a')],'phone':_0x9ecf0b[_0x5898('0x60')][_0x5898('0x9a')],'ListId':_0x201e9e[_0x5898('0x99')]});_0x42a471[_0x9ecf0b[_0x5898('0x60')][_0x5898('0xd1')]]=_0x9ecf0b[_0x5898('0x60')][_0x5898('0x9a')];return db[_0x5898('0x91')]['findOrCreate']({'where':_0x479099,'defaults':_0x42a471});}})[_0x5898('0xbc')](function(_0x510673){if(_0x510673){_0x2fdea2=_0x510673;var _0x4d794d=fs[_0x5898('0xd5')](path[_0x5898('0x7d')](config[_0x5898('0x85')],_0x5898('0xd6')),_0x5898('0xd7'));var _0x16ae5d=ejs['render'](_0x4d794d,{'body':_[_0x5898('0xd8')](_0x9ecf0b['body'][_0x5898('0x60')]),'bodyTitle':_0x44422a[_0x5898('0xd9')]});return db[_0x5898('0xda')]['create']({'body':_0x16ae5d,'ContactId':_0x510673['id'],'ChatWebsiteId':_0x44422a['id']});}})['then'](function(_0x913c04){_0x367fa7=_0x913c04;if(_0x3cf134[_0x5898('0x5d')]){var _0x1aeff3=_0x3cf134['map'](function(_0x571ed9){return{'name':_0x571ed9[_0x5898('0xdb')],'basename':_0x571ed9[_0x5898('0x75')],'type':_0x571ed9[_0x5898('0xdc')],'ChatOfflineMessageId':_0x913c04['id']};});_0x3e6f04=_0x1aeff3[_0x5898('0x41')](_0x37aaf7=>{var _0x16b1f6={'filename':_0x37aaf7[_0x5898('0x3e')],'path':path[_0x5898('0x7d')](config[_0x5898('0x85')],'server',_0x5898('0xcf'),_0x5898('0xdd'),_0x5898('0xde'),_0x37aaf7[_0x5898('0xdf')])};return _0x16b1f6;});if(!_0x44422a[_0x5898('0xe0')]){return db['sequelize'][_0x5898('0xe1')](function(_0x5d827b){return db['Attachment']['bulkCreate'](_0x1aeff3,{'transaction':_0x5d827b});});}}})[_0x5898('0x39')](function(){if(_0x367fa7){_0x128587=_0x367fa7;return db[_0x5898('0xd4')]['findOne']({'where':{'active':!![]},'include':[{'model':db[_0x5898('0xe2')],'as':_0x5898('0xe3'),'raw':!![]}]});}})[_0x5898('0x39')](function(_0x396a39){if(_0x396a39&&_0x396a39[_0x5898('0xe3')]&&_0x44422a[_0x5898('0xe4')]&&_0x44422a[_0x5898('0xe5')]){var _0x50766e={'tls':{'rejectUnauthorized':![]}};if(_0x396a39[_0x5898('0xe3')]['service']){_0x50766e[_0x5898('0xe6')]=_0x396a39[_0x5898('0xe3')][_0x5898('0xe6')];}else{_0x50766e[_0x5898('0xe7')]=_0x396a39[_0x5898('0xe3')]['host'];_0x50766e[_0x5898('0xe8')]=_0x396a39[_0x5898('0xe3')][_0x5898('0xe8')];_0x50766e[_0x5898('0xe9')]=_0x396a39[_0x5898('0xe3')][_0x5898('0xe9')];}if(_0x396a39[_0x5898('0xe3')]['authentication']){_0x50766e[_0x5898('0xea')]={'user':_0x396a39[_0x5898('0xe3')][_0x5898('0x61')],'pass':_0x396a39['Smtp'][_0x5898('0xeb')]};}return respondWithRpcPromise(_0x5898('0xec'),_0x5898('0xed'),{'account':_0x50766e,'message':{'from':util[_0x5898('0xb5')](_0x5898('0xee'),_0x396a39['name'],_0x396a39[_0x5898('0xef')]||_0x396a39[_0x5898('0xe3')][_0x5898('0x61')]),'to':_0x44422a['forwardOfflineAddress'],'subject':_0x44422a['offlineMessageSubject'],'html':_0x128587[_0x5898('0x60')],'attachments':_0x3e6f04}},client9003)[_0x5898('0x39')](function(){return _0x128587;})[_0x5898('0x59')](function(_0x2ac49c){console[_0x5898('0x27')](_0x2ac49c);});}})[_0x5898('0x39')](function(){if(_0x44422a&&_0x44422a[_0x5898('0xe0')]&&_0x44422a[_0x5898('0xf0')]){var _0x38568d=[];if(_0x3cf134[_0x5898('0x5d')]){_0x38568d=_0x3cf134[_0x5898('0x41')](function(_0x2b2420){return{'name':_0x2b2420[_0x5898('0xdb')],'basename':_0x2b2420[_0x5898('0x75')],'type':_0x2b2420[_0x5898('0xdc')],'ChatOfflineMessageId':_0x367fa7['id']};});}var _0x7f3b7a;if(!_[_0x5898('0x80')](_0x44422a['subjectOffline'])){var _0xae3515=_[_0x5898('0x41')](_0x9ecf0b['body'],function(_0xaba49c){return _0xaba49c;});var _0x31afb7=_['toPairsIn'](_0xae3515)[0x0];var _0x1a815b=_[_0x5898('0xf1')](_0x31afb7,function(_0x53f1e4){return _0x53f1e4;});_0x7f3b7a=_0x1a815b[0x1][_0x44422a[_0x5898('0xf2')]];}var _0x1cee46={'from':_0x2fdea2['email'],'firstName':_0x2fdea2[_0x5898('0xae')],'lastName':_0x2fdea2['lastName'],'mapKey':_0x5898('0xef'),'message':{'from':_0x2fdea2['email'],'to':_0x44422a[_0x5898('0xd4')][_0x5898('0xef')],'cc':'','subject':_['isNil'](_0x7f3b7a)?_0x44422a[_0x5898('0xf3')]:_0x7f3b7a,'messageId':'','sentAt':new Date(),'attach':_0x38568d['length'],'attachments':_0x38568d,'originChannel':_0x5898('0xf4'),'ChatWebsiteId':_0x44422a['id'],'ChatOfflineMessageId':_0x128587['id'],'originTo':_0x44422a[_0x5898('0xd4')][_0x5898('0xef')]},'body':_0x128587[_0x5898('0x60')]};var _0x138d2a={'account':{'id':_0x44422a[_0x5898('0xf0')]},'body':_0x1cee46,'log':_0x5898('0xf5')};return respondWithRpcPromise('NotifyMailAccount',_0x5898('0xf6'),_0x138d2a,client9001)[_0x5898('0x39')](function(){return _0x128587;})[_0x5898('0x59')](function(_0x44707a){console[_0x5898('0x27')](_0x44707a);});}return;})['then'](function(){if(_0x128587){return _0x128587;}})['then'](respondWithResult(_0x20e97a,null))[_0x5898('0x59')](function(_0x330f46){console['error'](_0x5898('0x59'),_0x330f46);for(var _0x21ba44 of _0x3cf134){var _0x233bbe=path[_0x5898('0x7d')](config[_0x5898('0x85')],_0x5898('0xf7'),'files',_0x5898('0xdd'),_0x5898('0xde'),_0x21ba44[_0x5898('0x75')]);fs_extra['remove'](_0x233bbe)[_0x5898('0x59')](function(_0x100702){console[_0x5898('0x27')]('Could\x20not\x20remove\x20attachment\x20file',_0x233bbe,_0x100702);});}});};exports[_0x5898('0xf8')]=function(_0x250946,_0x2eb6db,_0x31a2e6){return db[_0x5898('0xba')][_0x5898('0x5e')]({'where':{'id':_0x250946[_0x5898('0x5b')]['id']}})[_0x5898('0x39')](handleEntityNotFound(_0x2eb6db,null))[_0x5898('0x39')](function(_0x1c75c5){if(_0x1c75c5){return _0x1c75c5['addInteraction'](_0x250946['body']['ids'],_['omit'](_0x250946[_0x5898('0x60')],[_0x5898('0x6e'),'id'])||{});}})[_0x5898('0x39')](respondWithResult(_0x2eb6db,null))['catch'](handleError(_0x2eb6db,null));};exports['getInteractions']=function(_0x32031e,_0x513352,_0xf3a62d){var _0x4d5503={'raw':![],'where':{}};var _0x5243b1={};var _0x3da693={'count':0x0,'rows':[]};return db[_0x5898('0x42')]['findOne']({'where':{'id':_0x32031e[_0x5898('0x5b')]['id']}})['then'](handleEntityNotFound(_0x513352,null))[_0x5898('0x39')](function(_0x17f006){if(_0x17f006){_0x5243b1[_0x5898('0x49')]=_[_0x5898('0x46')](db['ChatInteraction'][_0x5898('0x43')]);_0x5243b1[_0x5898('0x47')]=_[_0x5898('0x46')](_0x32031e[_0x5898('0x47')]);_0x5243b1[_0x5898('0x50')]=_[_0x5898('0x48')](_0x5243b1[_0x5898('0x49')],_0x5243b1[_0x5898('0x47')]);_0x4d5503[_0x5898('0x4b')]=_['intersection'](_0x5243b1['model'],qs[_0x5898('0x4a')](_0x32031e[_0x5898('0x47')][_0x5898('0x4a')]));_0x4d5503[_0x5898('0x4b')]=_0x4d5503[_0x5898('0x4b')][_0x5898('0x5d')]?_0x4d5503[_0x5898('0x4b')]:_0x5243b1['model'];if(!_0x32031e[_0x5898('0x47')][_0x5898('0x4c')]('nolimit')){_0x4d5503[_0x5898('0x33')]=qs[_0x5898('0x33')](_0x32031e[_0x5898('0x47')][_0x5898('0x33')]);_0x4d5503[_0x5898('0x31')]=qs[_0x5898('0x31')](_0x32031e[_0x5898('0x47')][_0x5898('0x31')]);}_0x4d5503[_0x5898('0x72')]=qs[_0x5898('0x4e')](_0x32031e[_0x5898('0x47')][_0x5898('0x4e')]);_0x4d5503[_0x5898('0x4f')]=qs[_0x5898('0x50')](_[_0x5898('0x51')](_0x32031e[_0x5898('0x47')],_0x5243b1[_0x5898('0x50')]));_0x4d5503[_0x5898('0x4f')][_0x5898('0x68')]=_0x17f006['id'];if(_0x32031e['query']['filter']){_0x4d5503[_0x5898('0x4f')]=_[_0x5898('0x53')](_0x4d5503[_0x5898('0x4f')],{'$or':_[_0x5898('0x41')](_0x4d5503['attributes'],function(_0x1a7e36){var _0x3d5598={};_0x3d5598[_0x1a7e36]={'$like':'%'+_0x32031e['query'][_0x5898('0x52')]+'%'};return _0x3d5598;})});}_0x4d5503=_['merge']({},_0x4d5503,_0x32031e[_0x5898('0x6c')]);return db[_0x5898('0xba')][_0x5898('0x34')]({'where':_0x4d5503[_0x5898('0x4f')]})[_0x5898('0x39')](function(_0x5623a8){_0x3da693[_0x5898('0x34')]=_0x5623a8;if(_0x32031e[_0x5898('0x47')][_0x5898('0x55')]){_0x4d5503['include']=[{'model':db[_0x5898('0x91')],'as':_0x5898('0xf9'),'required':![]},{'model':db[_0x5898('0xc7')],'as':'Owner','attributes':[_0x5898('0x3e'),_0x5898('0xfa'),_0x5898('0xfb')],'required':![]},{'model':db['Tag'],'as':_0x5898('0xfc'),'attributes':['id','name','color'],'where':_0x32031e[_0x5898('0x47')][_0x5898('0xfd')]?{'id':_0x32031e[_0x5898('0x47')][_0x5898('0xfd')]}:undefined,'required':_0x32031e[_0x5898('0x47')][_0x5898('0xfd')]?!![]:![]}];}return db[_0x5898('0xba')][_0x5898('0x57')](_0x4d5503);})[_0x5898('0x39')](function(_0x8eade2){_0x3da693[_0x5898('0x58')]=_0x8eade2;return _0x3da693;});}})[_0x5898('0x39')](respondWithFilteredResult(_0x513352,_0x4d5503))['catch'](handleError(_0x513352,null));};function iftimePromise(_0x2b131e,_0x23a7ae){return respondWithRpcPromise(_0x5898('0xfe'),'getSnippet',{'command':_0x23a7ae[_0x5898('0xff')]?util['format'](_0x5898('0x100'),_0x2b131e[_0x5898('0x101')],_0x23a7ae[_0x5898('0xff')]):util[_0x5898('0xb5')]('iftime\x20%s',_0x2b131e[_0x5898('0x101')])},client9002)[_0x5898('0x39')](function(_0x4bc6fc){var _0x541f64=_0x4bc6fc&&_0x4bc6fc['indexOf'](_0x5898('0x102'))>=0x0?!![]:![];logger[_0x5898('0x2b')](_0x5898('0x103'),_0x23a7ae['id'],_0x2b131e['id'],_0x2b131e['interval'],_0x541f64?_0x5898('0x104'):_0x5898('0x105'),_0x23a7ae[_0x5898('0xff')]?_0x23a7ae['timezone']:'No\x20timezone');return _0x541f64;})['catch'](function(_0x43ac54){logger['error'](_0x5898('0x103'),_0x23a7ae['id'],_0x2b131e['id'],_0x2b131e[_0x5898('0x101')],util[_0x5898('0x106')](_0x43ac54,{'showHidden':![],'depth':null}),_0x23a7ae[_0x5898('0xff')]?_0x23a7ae[_0x5898('0xff')]:_0x5898('0x107'));return![];});}exports[_0x5898('0x108')]=function(_0x5c7497,_0x33adfd,_0x532218){var _0x38c795=0x0;var _0x1be291=0x0;var _0x4b18d8=![];var _0x1cea5a;var _0x4e713f;return db['ChatWebsite'][_0x5898('0x5e')]({'where':{'id':_0x5c7497[_0x5898('0x5b')]['id']},'include':[{'model':db['Interval'],'as':_0x5898('0x109'),'include':[{'model':db['Interval'],'as':'Intervals','attributes':['id',_0x5898('0x101')],'raw':!![]}]}]})[_0x5898('0x39')](handleEntityNotFound(_0x33adfd,null))[_0x5898('0x39')](function(_0x47a1d2){if(_0x47a1d2){_0x1cea5a=_0x47a1d2;return _0x47a1d2[_0x5898('0x10a')]({'raw':!![]});}})['then'](function(_0x15f893){if(_0x1cea5a){if(_0x15f893){_0x4e713f=_0x15f893;}}return require(_0x5898('0x18'))[_0x5898('0x7f')]();})[_0x5898('0x39')](function(_0x35fa47){if(_0x35fa47){_0x1be291=_0x35fa47[_0x5898('0x10b')];_0x4b18d8=_0x35fa47[_0x5898('0x10c')];}})[_0x5898('0x39')](function(){return db[_0x5898('0xba')][_0x5898('0x34')]({'where':{'closed':![]}});})[_0x5898('0x39')](function(_0x16ec2d){_0x38c795=_0x16ec2d;if(_0x1be291&&_0x16ec2d>_0x1be291){return db[_0x5898('0x10d')][_0x5898('0x6b')]({'where':{'id':0x1}})[_0x5898('0x39')](function(_0x5903ed){if(_0x5903ed){_0x5903ed[_0x5898('0x10e')](_0x5898('0x10f'));}});}})['then'](function(){if(_0x1cea5a[_0x5898('0x109')]&&_0x1cea5a[_0x5898('0x109')][_0x5898('0x110')]){var _0x2adb9f=[];for(var _0x2e2a58=0x0;_0x2e2a58<_0x1cea5a[_0x5898('0x109')][_0x5898('0x110')]['length'];_0x2e2a58++){var _0x12d201=_0x1cea5a['Interval'][_0x5898('0x110')][_0x2e2a58][_0x5898('0x3b')]({'plain':!![]});_0x2adb9f[_0x5898('0xc0')](iftimePromise(_0x12d201,_0x1cea5a));}return BPromise[_0x5898('0x111')](_0x2adb9f)['then'](function(_0x534131){return _[_0x5898('0x112')](_0x534131);});}else{return!![];}})[_0x5898('0x39')](function(_0x497772){var _0x23b5ed=fs[_0x5898('0xd5')](path['join'](config[_0x5898('0x85')],'server/files/chat/iframe.ejs'),'utf8');var _0x5c28bc={'remote':_0x1cea5a[_0x5898('0x113')],'query':querystring['stringify'](_['merge'](_0x1cea5a[_0x5898('0x3b')]({'plain':!![]}),{'customerIp':_0x5c7497[_0x5898('0x8d')][_0x5898('0xac')]||_0x5c7497['headers'][_0x5898('0x114')]||_0x5c7497[_0x5898('0x115')][_0x5898('0x116')]||_0x5c7497['ip'],'referer':_0x5c7497['headers'][_0x5898('0xb0')],'openedInteractions':_0x38c795,'maxInteractions':_0x1be291,'virtual':_0x4b18d8['virtual'],'online':_0x497772,'custom':_0x4b18d8}))[_0x5898('0x117')](/'/g,'\x5c\x27')};_0x33adfd[_0x5898('0xd0')](ejs[_0x5898('0x118')](Mustache[_0x5898('0x118')](_0x23b5ed,_0x5c28bc),{'proactiveActions':_0x4e713f,'alignment':_0x1cea5a['alignment'],'verticalAlignment':_0x1cea5a['verticalAlignment'],'div_color':_0x1cea5a[_0x5898('0x119')],'text_color':_0x1cea5a[_0x5898('0x11a')],'button_color':_0x1cea5a[_0x5898('0x11b')],'background_color':_0x1cea5a[_0x5898('0x11c')]}));})['catch'](handleError(_0x33adfd,null));};exports['addApplications']=function(_0x31db1c,_0x13fbbd,_0x58b743){return db[_0x5898('0x42')][_0x5898('0x6b')]({'where':{'id':_0x31db1c[_0x5898('0x5b')]['id']}})[_0x5898('0x39')](handleEntityNotFound(_0x13fbbd,null))['then'](function(_0x2158e0){if(_0x2158e0){return db[_0x5898('0x11d')][_0x5898('0xe1')](function(_0xa16ea5){return db[_0x5898('0xa1')][_0x5898('0x3a')]({'where':{'ChatWebsiteId':_0x31db1c[_0x5898('0x5b')]['id']},'transaction':_0xa16ea5})[_0x5898('0x39')](function(_0x347591){var _0x35836d=_[_0x5898('0x41')](_0x31db1c[_0x5898('0x60')],function(_0x248726){_0x248726['ChatWebsiteId']=_0x31db1c['params']['id'];return _0x248726;});return db['ChatApplication']['bulkCreate'](_0x35836d,{'transaction':_0xa16ea5});});})[_0x5898('0x39')](function(){return db['ChatApplication']['findAndCountAll']({'where':{'ChatWebsiteId':_0x31db1c[_0x5898('0x5b')]['id']},'order':'priority'});});}})[_0x5898('0x39')](respondWithResult(_0x13fbbd,null))['catch'](handleError(_0x13fbbd,null));};exports[_0x5898('0x11e')]=function(_0x5db894,_0x4d1889,_0x5b01b3){var _0x17a21e={};var _0xe0cb88={};var _0x276caf;var _0xb056c7;return db[_0x5898('0x42')][_0x5898('0x6b')]({'where':{'id':_0x5db894[_0x5898('0x5b')]['id']}})['then'](handleEntityNotFound(_0x4d1889,null))[_0x5898('0x39')](function(_0x21f8d3){if(_0x21f8d3){_0x276caf=_0x21f8d3;_0xe0cb88['model']=_[_0x5898('0x46')](db[_0x5898('0xa1')][_0x5898('0x43')]);_0xe0cb88[_0x5898('0x47')]=_['keys'](_0x5db894[_0x5898('0x47')]);_0xe0cb88[_0x5898('0x50')]=_['intersection'](_0xe0cb88['model'],_0xe0cb88[_0x5898('0x47')]);_0x17a21e[_0x5898('0x4b')]=_[_0x5898('0x48')](_0xe0cb88[_0x5898('0x49')],qs[_0x5898('0x4a')](_0x5db894[_0x5898('0x47')][_0x5898('0x4a')]));_0x17a21e[_0x5898('0x4b')]=_0x17a21e[_0x5898('0x4b')][_0x5898('0x5d')]?_0x17a21e[_0x5898('0x4b')]:_0xe0cb88[_0x5898('0x49')];_0x17a21e['order']=qs['sort'](_0x5db894[_0x5898('0x47')][_0x5898('0x4e')]);_0x17a21e[_0x5898('0x4f')]=qs[_0x5898('0x50')](_[_0x5898('0x51')](_0x5db894[_0x5898('0x47')],_0xe0cb88[_0x5898('0x50')]));if(_0x5db894['query'][_0x5898('0x52')]){_0x17a21e[_0x5898('0x4f')]=_[_0x5898('0x53')](_0x17a21e['where'],{'$or':_[_0x5898('0x41')](_0x17a21e[_0x5898('0x4b')],function(_0x195d4e){var _0x6263a3={};_0x6263a3[_0x195d4e]={'$like':'%'+_0x5db894[_0x5898('0x47')][_0x5898('0x52')]+'%'};return _0x6263a3;})});}_0x17a21e=_[_0x5898('0x53')]({},_0x17a21e,_0x5db894[_0x5898('0x6c')]);return _0x276caf[_0x5898('0x11e')](_0x17a21e);}})[_0x5898('0x39')](function(_0x8852bd){if(_0x8852bd){_0xb056c7=_0x8852bd['length'];if(!_0x5db894[_0x5898('0x47')][_0x5898('0x4c')]('nolimit')){_0x17a21e[_0x5898('0x33')]=qs[_0x5898('0x33')](_0x5db894[_0x5898('0x47')][_0x5898('0x33')]);_0x17a21e[_0x5898('0x31')]=qs[_0x5898('0x31')](_0x5db894[_0x5898('0x47')][_0x5898('0x31')]);}return _0x276caf['getApplications'](_0x17a21e);}})['then'](function(_0x11abaa){if(_0x11abaa){return _0x11abaa?{'count':_0xb056c7,'rows':_0x11abaa}:null;}})['then'](respondWithResult(_0x4d1889,null))['catch'](handleError(_0x4d1889,null));};exports[_0x5898('0x11f')]=function(_0x44f8cb,_0x5055e6,_0x4376f8){return db['chatProactiveAction'][_0x5898('0x5e')]({'where':{'id':_0x44f8cb[_0x5898('0x5b')]['id']}})[_0x5898('0x39')](handleEntityNotFound(_0x5055e6,null))[_0x5898('0x39')](function(_0x259582){if(_0x259582){return _0x259582['addProactiveActions'](_0x44f8cb[_0x5898('0x60')]['ids'],_[_0x5898('0x120')](_0x44f8cb[_0x5898('0x60')],[_0x5898('0x6e'),'id'])||{});}})['then'](respondWithResult(_0x5055e6,null))['catch'](handleError(_0x5055e6,null));};exports['getProactiveActions']=function(_0x574d64,_0xdc2c6b,_0x2e4307){var _0x26f9a4={};var _0xe2d470={};var _0x1ff68c;var _0x234b55;return db[_0x5898('0x42')][_0x5898('0x6b')]({'where':{'id':_0x574d64[_0x5898('0x5b')]['id']}})[_0x5898('0x39')](handleEntityNotFound(_0xdc2c6b,null))[_0x5898('0x39')](function(_0x4f71b2){if(_0x4f71b2){_0x1ff68c=_0x4f71b2;_0xe2d470[_0x5898('0x49')]=_[_0x5898('0x46')](db[_0x5898('0x121')][_0x5898('0x43')]);_0xe2d470['query']=_[_0x5898('0x46')](_0x574d64[_0x5898('0x47')]);_0xe2d470[_0x5898('0x50')]=_[_0x5898('0x48')](_0xe2d470[_0x5898('0x49')],_0xe2d470[_0x5898('0x47')]);_0x26f9a4[_0x5898('0x4b')]=_[_0x5898('0x48')](_0xe2d470[_0x5898('0x49')],qs[_0x5898('0x4a')](_0x574d64[_0x5898('0x47')][_0x5898('0x4a')]));_0x26f9a4[_0x5898('0x4b')]=_0x26f9a4[_0x5898('0x4b')][_0x5898('0x5d')]?_0x26f9a4[_0x5898('0x4b')]:_0xe2d470[_0x5898('0x49')];_0x26f9a4[_0x5898('0x72')]=qs[_0x5898('0x4e')](_0x574d64[_0x5898('0x47')][_0x5898('0x4e')]);_0x26f9a4[_0x5898('0x4f')]=qs[_0x5898('0x50')](_[_0x5898('0x51')](_0x574d64['query'],_0xe2d470[_0x5898('0x50')]));if(_0x574d64[_0x5898('0x47')][_0x5898('0x52')]){_0x26f9a4['where']=_[_0x5898('0x53')](_0x26f9a4[_0x5898('0x4f')],{'$or':_['map'](_0x26f9a4[_0x5898('0x4b')],function(_0x32d42e){var _0x39389b={};_0x39389b[_0x32d42e]={'$like':'%'+_0x574d64[_0x5898('0x47')]['filter']+'%'};return _0x39389b;})});}_0x26f9a4=_['merge']({},_0x26f9a4,_0x574d64['options']);return _0x1ff68c[_0x5898('0x10a')](_0x26f9a4);}})[_0x5898('0x39')](function(_0x39b71c){if(_0x39b71c){_0x234b55=_0x39b71c[_0x5898('0x5d')];if(!_0x574d64[_0x5898('0x47')][_0x5898('0x4c')](_0x5898('0x4d'))){_0x26f9a4['limit']=qs['limit'](_0x574d64[_0x5898('0x47')]['limit']);_0x26f9a4[_0x5898('0x31')]=qs[_0x5898('0x31')](_0x574d64[_0x5898('0x47')][_0x5898('0x31')]);}return _0x1ff68c[_0x5898('0x10a')](_0x26f9a4);}})[_0x5898('0x39')](function(_0x51042c){if(_0x51042c){return _0x51042c?{'count':_0x234b55,'rows':_0x51042c}:null;}})[_0x5898('0x39')](respondWithResult(_0xdc2c6b,null))['catch'](handleError(_0xdc2c6b,null));};exports[_0x5898('0x122')]=function(_0x407fe5,_0x11aed2,_0x1ad1f7){var _0x10b2aa=_0x407fe5[_0x5898('0x47')][_0x5898('0x123')]===_0x5898('0x124')?_0x5898('0x125'):'onlineForm';return db[_0x5898('0x42')][_0x5898('0x5e')]({'attributes':['id',_0x10b2aa],'where':{'id':_0x407fe5[_0x5898('0x5b')]['id']}})[_0x5898('0x39')](handleEntityNotFound(_0x11aed2,null))[_0x5898('0x39')](function(_0x370d24){if(_0x370d24){var _0x54d49c=_0x370d24[_0x10b2aa];var _0x4a1692=_0x54d49c&&_0x54d49c['items']?_0x54d49c[_0x5898('0x126')]:[];_0x11aed2['send']({'fromKey':_[_0x5898('0x80')](_0x54d49c['fromKey'])?undefined:_0x54d49c[_0x5898('0x127')],'count':_0x4a1692[_0x5898('0x5d')],'rows':_0x4a1692});}})['catch'](handleError(_0x11aed2,null));};exports[_0x5898('0x128')]=function(_0x193e9f,_0x4470cb,_0x25b818){var _0x6c3757={'raw':![],'where':{}};var _0x116f8b={};var _0x3facd7={'count':0x0,'rows':[]};return db[_0x5898('0x42')][_0x5898('0x6b')]({'where':{'id':_0x193e9f[_0x5898('0x5b')]['id']}})['then'](handleEntityNotFound(_0x4470cb,null))[_0x5898('0x39')](function(_0xf2e92f){if(_0xf2e92f){_0x116f8b[_0x5898('0x49')]=_[_0x5898('0x46')](db[_0x5898('0xda')][_0x5898('0x43')]);_0x116f8b[_0x5898('0x47')]=_[_0x5898('0x46')](_0x193e9f[_0x5898('0x47')]);_0x116f8b[_0x5898('0x50')]=_['intersection'](_0x116f8b['model'],_0x116f8b['query']);_0x6c3757[_0x5898('0x4b')]=_[_0x5898('0x48')](_0x116f8b['model'],qs['fields'](_0x193e9f[_0x5898('0x47')][_0x5898('0x4a')]));_0x6c3757[_0x5898('0x4b')]=_0x6c3757['attributes'][_0x5898('0x5d')]?_0x6c3757['attributes']:_0x116f8b[_0x5898('0x49')];if(!_0x193e9f['query'][_0x5898('0x4c')](_0x5898('0x4d'))){_0x6c3757[_0x5898('0x33')]=qs[_0x5898('0x33')](_0x193e9f[_0x5898('0x47')][_0x5898('0x33')]);_0x6c3757[_0x5898('0x31')]=qs[_0x5898('0x31')](_0x193e9f[_0x5898('0x47')][_0x5898('0x31')]);}_0x6c3757[_0x5898('0x72')]=qs[_0x5898('0x4e')](_0x193e9f[_0x5898('0x47')][_0x5898('0x4e')]);_0x6c3757[_0x5898('0x4f')]=qs[_0x5898('0x50')](_[_0x5898('0x51')](_0x193e9f[_0x5898('0x47')],_0x116f8b[_0x5898('0x50')]));_0x6c3757[_0x5898('0x4f')][_0x5898('0x68')]=_0xf2e92f['id'];if(_0x193e9f[_0x5898('0x47')][_0x5898('0x52')]){_0x6c3757[_0x5898('0x4f')]=_[_0x5898('0x53')](_0x6c3757['where'],{'$or':_[_0x5898('0x41')](_0x6c3757[_0x5898('0x4b')],function(_0x3ff4ea){var _0x18d965={};_0x18d965[_0x3ff4ea]={'$like':'%'+_0x193e9f[_0x5898('0x47')][_0x5898('0x52')]+'%'};return _0x18d965;})});}_0x6c3757=_['merge']({},_0x6c3757,_0x193e9f[_0x5898('0x6c')]);return db[_0x5898('0xda')][_0x5898('0x34')]({'where':_0x6c3757[_0x5898('0x4f')]})[_0x5898('0x39')](function(_0x3df149){_0x3facd7[_0x5898('0x34')]=_0x3df149;if(_0x193e9f['query']['includeAll']){_0x6c3757[_0x5898('0x56')]=[{'all':!![]}];}else{_0x6c3757[_0x5898('0x56')]=[{'model':db[_0x5898('0x91')],'as':_0x5898('0xf9'),'required':![]},{'model':db[_0x5898('0x129')],'as':_0x5898('0x12a'),'required':![]}];}return db['ChatOfflineMessage'][_0x5898('0x57')](_0x6c3757);})[_0x5898('0x39')](function(_0x411a44){_0x3facd7['rows']=_0x411a44;return _0x3facd7;});}})[_0x5898('0x39')](respondWithFilteredResult(_0x4470cb,_0x6c3757))[_0x5898('0x59')](handleError(_0x4470cb,null));};exports[_0x5898('0x12b')]=function(_0x456e67,_0x4e1792,_0x40cdd9){return db[_0x5898('0x42')][_0x5898('0x5e')]({'where':{'id':_0x456e67[_0x5898('0x5b')]['id']}})[_0x5898('0x39')](handleEntityNotFound(_0x4e1792,null))[_0x5898('0x39')](function(_0x500fd1){if(_0x500fd1){return _0x500fd1[_0x5898('0x12b')](_0x456e67['body'][_0x5898('0x6e')],_[_0x5898('0x120')](_0x456e67[_0x5898('0x60')],[_0x5898('0x6e'),'id'])||{})['spread'](function(_0x9b588d){for(var _0x3151d9=0x0;_0x3151d9<_0x456e67[_0x5898('0x60')][_0x5898('0x6e')]['length'];_0x3151d9+=0x1){socket[_0x5898('0x12c')](_0x5898('0x12d'),{'UserId':Number(_0x456e67[_0x5898('0x60')][_0x5898('0x6e')][_0x3151d9]),'ChatWebsiteId':Number(_0x456e67['params']['id'])});}return _0x9b588d;});}})[_0x5898('0x39')](respondWithResult(_0x4e1792,null))[_0x5898('0x59')](handleError(_0x4e1792,null));};exports[_0x5898('0x12e')]=function(_0x5a36ae,_0x183973,_0x326e00){return db['ChatWebsite'][_0x5898('0x5e')]({'where':{'id':_0x5a36ae[_0x5898('0x5b')]['id']}})['then'](handleEntityNotFound(_0x183973,null))[_0x5898('0x39')](function(_0x4bf010){if(_0x4bf010){return _0x4bf010[_0x5898('0x12e')](_0x5a36ae[_0x5898('0x47')][_0x5898('0x6e')])[_0x5898('0x39')](function(){if(_[_0x5898('0x12f')](_0x5a36ae[_0x5898('0x47')][_0x5898('0x6e')])){for(var _0x466bd5=0x0;_0x466bd5<_0x5a36ae['query'][_0x5898('0x6e')][_0x5898('0x5d')];_0x466bd5+=0x1){socket[_0x5898('0x12c')](_0x5898('0x130'),{'UserId':Number(_0x5a36ae[_0x5898('0x47')][_0x5898('0x6e')][_0x466bd5]),'ChatWebsiteId':Number(_0x5a36ae['params']['id'])});}}else{socket[_0x5898('0x12c')](_0x5898('0x130'),{'UserId':Number(_0x5a36ae[_0x5898('0x47')][_0x5898('0x6e')]),'ChatWebsiteId':Number(_0x5a36ae[_0x5898('0x5b')]['id'])});}});}})[_0x5898('0x39')](respondWithStatusCode(_0x183973,null))[_0x5898('0x59')](handleError(_0x183973,null));};exports['getAgents']=function(_0x57eb50,_0x420491,_0xdba3e){var _0x120c5a={};var _0x38d921={};var _0x2a2202;var _0x7a803b;return db[_0x5898('0x42')][_0x5898('0x6b')]({'where':{'id':_0x57eb50[_0x5898('0x5b')]['id']}})[_0x5898('0x39')](handleEntityNotFound(_0x420491,null))[_0x5898('0x39')](function(_0x264158){if(_0x264158){_0x2a2202=_0x264158;_0x38d921[_0x5898('0x49')]=_[_0x5898('0x46')](db[_0x5898('0xc7')][_0x5898('0x43')]);_0x38d921[_0x5898('0x47')]=_[_0x5898('0x46')](_0x57eb50[_0x5898('0x47')]);_0x38d921[_0x5898('0x50')]=_[_0x5898('0x48')](_0x38d921[_0x5898('0x49')],_0x38d921[_0x5898('0x47')]);_0x120c5a[_0x5898('0x4b')]=_[_0x5898('0x48')](_0x38d921['model'],qs[_0x5898('0x4a')](_0x57eb50[_0x5898('0x47')][_0x5898('0x4a')]));_0x120c5a[_0x5898('0x4b')]=_0x120c5a[_0x5898('0x4b')][_0x5898('0x5d')]?_0x120c5a['attributes']:_0x38d921[_0x5898('0x49')];_0x120c5a[_0x5898('0x72')]=qs[_0x5898('0x4e')](_0x57eb50[_0x5898('0x47')]['sort']);_0x120c5a[_0x5898('0x4f')]=qs[_0x5898('0x50')](_['pick'](_0x57eb50[_0x5898('0x47')],_0x38d921['filters']));if(_0x57eb50[_0x5898('0x47')][_0x5898('0x52')]){_0x120c5a[_0x5898('0x4f')]=_[_0x5898('0x53')](_0x120c5a[_0x5898('0x4f')],{'$or':_[_0x5898('0x41')](_0x120c5a['attributes'],function(_0x513132){var _0x5da335={};_0x5da335[_0x513132]={'$like':'%'+_0x57eb50[_0x5898('0x47')][_0x5898('0x52')]+'%'};return _0x5da335;})});}_0x120c5a=_['merge']({},_0x120c5a,_0x57eb50[_0x5898('0x6c')]);return _0x2a2202[_0x5898('0x131')](_0x120c5a);}})[_0x5898('0x39')](function(_0x5ae3e2){if(_0x5ae3e2){_0x7a803b=_0x5ae3e2[_0x5898('0x5d')];if(!_0x57eb50[_0x5898('0x47')]['hasOwnProperty'](_0x5898('0x4d'))){_0x120c5a['limit']=qs[_0x5898('0x33')](_0x57eb50[_0x5898('0x47')]['limit']);_0x120c5a[_0x5898('0x31')]=qs['offset'](_0x57eb50['query'][_0x5898('0x31')]);}return _0x2a2202[_0x5898('0x131')](_0x120c5a);}})[_0x5898('0x39')](function(_0x368f09){if(_0x368f09){return _0x368f09?{'count':_0x7a803b,'rows':_0x368f09}:null;}})[_0x5898('0x39')](respondWithResult(_0x420491,null))['catch'](handleError(_0x420491,null));};
\ No newline at end of file
index d3c76bd..2fb3ba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6737=['emit','hasOwnProperty','../../mysqldb','ChatWebsite','save','update','remove'];(function(_0x2d5eef,_0x1fbf3f){var _0x32da84=function(_0x2e66f1){while(--_0x2e66f1){_0x2d5eef['push'](_0x2d5eef['shift']());}};_0x32da84(++_0x1fbf3f);}(_0x6737,0xe2));var _0x7673=function(_0x3bfae5,_0x361fbd){_0x3bfae5=_0x3bfae5-0x0;var _0x138d33=_0x6737[_0x3bfae5];return _0x138d33;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0x7673('0x0'))['db'][_0x7673('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7673('0x2'),'afterUpdate':_0x7673('0x3'),'afterDestroy':_0x7673('0x4')};function emitEvent(_0x12efff){return function(_0x54002e,_0x32e6f2,_0x22ce8d){ChatWebsiteEvents['emit'](_0x12efff+':'+_0x54002e['id'],_0x54002e);ChatWebsiteEvents[_0x7673('0x5')](_0x12efff,_0x54002e);_0x22ce8d(null);};}for(var e in events){if(events[_0x7673('0x6')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
+var _0x0d4e=['../../mysqldb','ChatWebsite','setMaxListeners','save','update','remove','emit','hasOwnProperty','events'];(function(_0x5ad67c,_0x144860){var _0xccce2e=function(_0x2dd95c){while(--_0x2dd95c){_0x5ad67c['push'](_0x5ad67c['shift']());}};_0xccce2e(++_0x144860);}(_0x0d4e,0x1ca));var _0xe0d4=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0d4e[_0x122ef9];return _0x42fba0;};'use strict';var EventEmitter=require(_0xe0d4('0x0'));var ChatWebsite=require(_0xe0d4('0x1'))['db'][_0xe0d4('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xe0d4('0x3')](0x0);var events={'afterCreate':_0xe0d4('0x4'),'afterUpdate':_0xe0d4('0x5'),'afterDestroy':_0xe0d4('0x6')};function emitEvent(_0x154d6d){return function(_0x251804,_0x56b43f,_0xdfee37){ChatWebsiteEvents[_0xe0d4('0x7')](_0x154d6d+':'+_0x251804['id'],_0x251804);ChatWebsiteEvents[_0xe0d4('0x7')](_0x154d6d,_0x251804);_0xdfee37(null);};}for(var e in events){if(events[_0xe0d4('0x8')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
index e62ac68..6d1ec01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba99=['api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatWebsite','chat_websites','lodash','util','../../config/logger'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xba99,0x142));var _0x9ba9=function(_0x128b42,_0x49d070){_0x128b42=_0x128b42-0x0;var _0x47d363=_0xba99[_0x128b42];return _0x47d363;};'use strict';var _=require(_0x9ba9('0x0'));var util=require(_0x9ba9('0x1'));var logger=require(_0x9ba9('0x2'))(_0x9ba9('0x3'));var moment=require('moment');var BPromise=require(_0x9ba9('0x4'));var rp=require(_0x9ba9('0x5'));var fs=require('fs');var path=require(_0x9ba9('0x6'));var rimraf=require(_0x9ba9('0x7'));var config=require(_0x9ba9('0x8'));var attributes=require('./chatWebsite.attributes');module[_0x9ba9('0x9')]=function(_0x506661,_0x2b9c9c){return _0x506661[_0x9ba9('0xa')](_0x9ba9('0xb'),attributes,{'tableName':_0x9ba9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xec26=['ChatWebsite','chat_websites','util','api','moment','bluebird','path','rimraf','../../config/environment','./chatWebsite.attributes','define'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0xec26,0x141));var _0x6ec2=function(_0x4ab91d,_0x372d83){_0x4ab91d=_0x4ab91d-0x0;var _0x2387dc=_0xec26[_0x4ab91d];return _0x2387dc;};'use strict';var _=require('lodash');var util=require(_0x6ec2('0x0'));var logger=require('../../config/logger')(_0x6ec2('0x1'));var moment=require(_0x6ec2('0x2'));var BPromise=require(_0x6ec2('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6ec2('0x4'));var rimraf=require(_0x6ec2('0x5'));var config=require(_0x6ec2('0x6'));var attributes=require(_0x6ec2('0x7'));module['exports']=function(_0x13843b,_0x281a06){return _0x13843b[_0x6ec2('0x8')](_0x6ec2('0x9'),attributes,{'tableName':_0x6ec2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index af10e26..7398092 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4730=['request\x20sent','error','code','message','lodash','util','bluebird','ioredis','../../mysqldb','../../config/environment','client','http','redis','defaults','./chatWebsite.socket','register','request','info','ChatWebsite,\x20%s,\x20%s','debug'];(function(_0x4e7c2f,_0x43fb00){var _0x54ef14=function(_0x46e557){while(--_0x46e557){_0x4e7c2f['push'](_0x4e7c2f['shift']());}};_0x54ef14(++_0x43fb00);}(_0x4730,0x68));var _0x0473=function(_0x132844,_0x98bc49){_0x132844=_0x132844-0x0;var _0x13c26f=_0x4730[_0x132844];return _0x13c26f;};'use strict';var _=require(_0x0473('0x0'));var util=require(_0x0473('0x1'));var moment=require('moment');var BPromise=require(_0x0473('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0473('0x3'));var db=require(_0x0473('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x0473('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x0473('0x6')][_0x0473('0x7')]({'port':0x232a});config[_0x0473('0x8')]=_[_0x0473('0x9')](config[_0x0473('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0473('0x8')]));require(_0x0473('0xa'))[_0x0473('0xb')](socket);function respondWithRpcPromise(_0x5ac21,_0x1c74b2,_0x200aae){return new BPromise(function(_0x3885a1,_0x1c4ed6){return client[_0x0473('0xc')](_0x5ac21,_0x200aae)['then'](function(_0x5197e6){logger[_0x0473('0xd')](_0x0473('0xe'),_0x1c74b2,'request\x20sent');logger[_0x0473('0xf')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x1c74b2,_0x0473('0x10'),JSON['stringify'](_0x5197e6));if(_0x5197e6[_0x0473('0x11')]){if(_0x5197e6[_0x0473('0x11')][_0x0473('0x12')]===0x1f4){logger['error'](_0x0473('0xe'),_0x1c74b2,_0x5197e6[_0x0473('0x11')][_0x0473('0x13')]);return _0x1c4ed6(_0x5197e6[_0x0473('0x11')][_0x0473('0x13')]);}logger['error'](_0x0473('0xe'),_0x1c74b2,_0x5197e6['error']['message']);return _0x3885a1(_0x5197e6[_0x0473('0x11')][_0x0473('0x13')]);}else{logger[_0x0473('0xd')](_0x0473('0xe'),_0x1c74b2,_0x0473('0x10'));_0x3885a1(_0x5197e6['result'][_0x0473('0x13')]);}})['catch'](function(_0x4ae4ea){logger[_0x0473('0x11')](_0x0473('0xe'),_0x1c74b2,_0x4ae4ea);_0x1c4ed6(_0x4ae4ea);});});}
\ No newline at end of file
+var _0xc905=['socket.io-emitter','register','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost'];(function(_0x25372b,_0x58e814){var _0x18feab=function(_0x215996){while(--_0x215996){_0x25372b['push'](_0x25372b['shift']());}};_0x18feab(++_0x58e814);}(_0xc905,0xca));var _0x5c90=function(_0x295c68,_0x241a33){_0x295c68=_0x295c68-0x0;var _0x2566bc=_0xc905[_0x295c68];return _0x2566bc;};'use strict';var _=require(_0x5c90('0x0'));var util=require('util');var moment=require(_0x5c90('0x1'));var BPromise=require(_0x5c90('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5c90('0x3'));var db=require(_0x5c90('0x4'))['db'];var utils=require(_0x5c90('0x5'));var logger=require(_0x5c90('0x6'))(_0x5c90('0x7'));var config=require(_0x5c90('0x8'));var jayson=require(_0x5c90('0x9'));var client=jayson['client'][_0x5c90('0xa')]({'port':0x232a});config[_0x5c90('0xb')]=_[_0x5c90('0xc')](config[_0x5c90('0xb')],{'host':_0x5c90('0xd'),'port':0x18eb});var socket=require(_0x5c90('0xe'))(new Redis(config[_0x5c90('0xb')]));require('./chatWebsite.socket')[_0x5c90('0xf')](socket);function respondWithRpcPromise(_0x2bffa9,_0x441ada,_0x3e949d){return new BPromise(function(_0x406c85,_0x269ead){return client[_0x5c90('0x10')](_0x2bffa9,_0x3e949d)[_0x5c90('0x11')](function(_0x72da5c){logger[_0x5c90('0x12')](_0x5c90('0x13'),_0x441ada,_0x5c90('0x14'));logger[_0x5c90('0x15')](_0x5c90('0x16'),_0x441ada,'request\x20sent',JSON[_0x5c90('0x17')](_0x72da5c));if(_0x72da5c[_0x5c90('0x18')]){if(_0x72da5c[_0x5c90('0x18')][_0x5c90('0x19')]===0x1f4){logger[_0x5c90('0x18')]('ChatWebsite,\x20%s,\x20%s',_0x441ada,_0x72da5c[_0x5c90('0x18')][_0x5c90('0x1a')]);return _0x269ead(_0x72da5c['error'][_0x5c90('0x1a')]);}logger[_0x5c90('0x18')](_0x5c90('0x13'),_0x441ada,_0x72da5c[_0x5c90('0x18')][_0x5c90('0x1a')]);return _0x406c85(_0x72da5c[_0x5c90('0x18')]['message']);}else{logger[_0x5c90('0x12')](_0x5c90('0x13'),_0x441ada,_0x5c90('0x14'));_0x406c85(_0x72da5c['result'][_0x5c90('0x1a')]);}})['catch'](function(_0x21cc72){logger[_0x5c90('0x18')](_0x5c90('0x13'),_0x441ada,_0x21cc72);_0x269ead(_0x21cc72);});});}
\ No newline at end of file
index ae815b6..497a89a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f36=['removeListener','register','length','chatWebsite:','./chatWebsite.events','save','remove','update','emit'];(function(_0x456bd2,_0x156c79){var _0x2218c1=function(_0x44f2d4){while(--_0x44f2d4){_0x456bd2['push'](_0x456bd2['shift']());}};_0x2218c1(++_0x156c79);}(_0x9f36,0x151));var _0x69f3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9f36[_0x3dd15e];return _0x231fd0;};'use strict';var ChatWebsiteEvents=require(_0x69f3('0x0'));var events=[_0x69f3('0x1'),_0x69f3('0x2'),_0x69f3('0x3')];function createListener(_0x55977c,_0x133f83){return function(_0x267299){_0x133f83[_0x69f3('0x4')](_0x55977c,_0x267299);};}function removeListener(_0x11cc47,_0x5a4985){return function(){ChatWebsiteEvents[_0x69f3('0x5')](_0x11cc47,_0x5a4985);};}exports[_0x69f3('0x6')]=function(_0x390b3e){for(var _0x5f0c2f=0x0,_0x5b7eeb=events[_0x69f3('0x7')];_0x5f0c2f<_0x5b7eeb;_0x5f0c2f++){var _0x55edbd=events[_0x5f0c2f];var _0x53abbd=createListener(_0x69f3('0x8')+_0x55edbd,_0x390b3e);ChatWebsiteEvents['on'](_0x55edbd,_0x53abbd);}};
\ No newline at end of file
+var _0x112d=['./chatWebsite.events','emit','removeListener','register','length','chatWebsite:'];(function(_0x393596,_0x151a02){var _0x1ddb6f=function(_0x2f23ad){while(--_0x2f23ad){_0x393596['push'](_0x393596['shift']());}};_0x1ddb6f(++_0x151a02);}(_0x112d,0x1e0));var _0xd112=function(_0x19c083,_0x338407){_0x19c083=_0x19c083-0x0;var _0x8274ef=_0x112d[_0x19c083];return _0x8274ef;};'use strict';var ChatWebsiteEvents=require(_0xd112('0x0'));var events=['save','remove','update'];function createListener(_0x54f665,_0x15c940){return function(_0x328e77){_0x15c940[_0xd112('0x1')](_0x54f665,_0x328e77);};}function removeListener(_0x3f0171,_0x36cdf2){return function(){ChatWebsiteEvents[_0xd112('0x2')](_0x3f0171,_0x36cdf2);};}exports[_0xd112('0x3')]=function(_0x48ca40){for(var _0x357b54=0x0,_0x18b22c=events[_0xd112('0x4')];_0x357b54<_0x18b22c;_0x357b54++){var _0x347c4f=events[_0x357b54];var _0x39d996=createListener(_0xd112('0x5')+_0x347c4f,_0x48ca40);ChatWebsiteEvents['on'](_0x347c4f,_0x39d996);}};
\ No newline at end of file
index 6db47df..16232e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2657=['server/files/images/avatars/','addCustomerAvatar','/:id/notify','notify','server/files','attachments','ensureDir','replace','extname','/:id/offline','any','offline','addInteraction','/:id/applications','addApplications','addProactiveActions','/:id/users','put','/:id','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','describe','show','getDispositions','/:id/canned_answers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','getOfflineMessages','getAgents','post','create','/:id/dispositions','addDisposition','addAnswer','diskStorage','join','root','format','%s-%s','now','originalname','single','file','addLogo'];(function(_0x478829,_0x4ef2bb){var _0x59a14a=function(_0x11e88c){while(--_0x11e88c){_0x478829['push'](_0x478829['shift']());}};_0x59a14a(++_0x4ef2bb);}(_0x2657,0x186));var _0x7265=function(_0x47805d,_0x414d8a){_0x47805d=_0x47805d-0x0;var _0x22a824=_0x2657[_0x47805d];return _0x22a824;};'use strict';var multer=require('multer');var util=require(_0x7265('0x0'));var path=require(_0x7265('0x1'));var timeout=require(_0x7265('0x2'));var express=require(_0x7265('0x3'));var router=express[_0x7265('0x4')]();var fs_extra=require(_0x7265('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7265('0x6'));var controller=require('./chatWebsite.controller');router[_0x7265('0x7')]('/',auth[_0x7265('0x8')](),controller[_0x7265('0x9')]);router[_0x7265('0x7')](_0x7265('0xa'),auth[_0x7265('0x8')](),controller[_0x7265('0xb')]);router[_0x7265('0x7')]('/:id',auth[_0x7265('0x8')](),controller[_0x7265('0xc')]);router[_0x7265('0x7')]('/:id/dispositions',auth[_0x7265('0x8')](),controller[_0x7265('0xd')]);router['get'](_0x7265('0xe'),auth[_0x7265('0x8')](),controller['getAnswers']);router[_0x7265('0x7')](_0x7265('0xf'),controller[_0x7265('0x10')]);router[_0x7265('0x7')](_0x7265('0x11'),controller[_0x7265('0x12')]);router[_0x7265('0x7')](_0x7265('0x13'),controller[_0x7265('0x14')]);router[_0x7265('0x7')](_0x7265('0x15'),controller[_0x7265('0x16')]);router['get'](_0x7265('0x17'),auth[_0x7265('0x8')](),controller[_0x7265('0x18')]);router[_0x7265('0x7')](_0x7265('0x19'),controller[_0x7265('0x1a')]);router[_0x7265('0x7')]('/:id/applications',auth[_0x7265('0x8')](),controller['getApplications']);router[_0x7265('0x7')](_0x7265('0x1b'),auth[_0x7265('0x8')](),controller[_0x7265('0x1c')]);router['get'](_0x7265('0x1d'),controller[_0x7265('0x1e')]);router['get']('/:id/offline_messages',auth[_0x7265('0x8')](),controller[_0x7265('0x1f')]);router[_0x7265('0x7')]('/:id/users',auth[_0x7265('0x8')](),controller[_0x7265('0x20')]);router[_0x7265('0x21')]('/',auth[_0x7265('0x8')](),controller[_0x7265('0x22')]);router['post'](_0x7265('0x23'),auth[_0x7265('0x8')](),controller[_0x7265('0x24')]);router['post'](_0x7265('0xe'),auth[_0x7265('0x8')](),controller[_0x7265('0x25')]);var upload=multer({'storage':multer[_0x7265('0x26')]({'destination':function(_0x434c81,_0xceb111,_0x9562da){_0x9562da(null,path[_0x7265('0x27')](config[_0x7265('0x28')],'server/files/images/logos/'));},'filename':function(_0x2260f6,_0x311339,_0x298c55){_0x298c55(null,util[_0x7265('0x29')](_0x7265('0x2a'),Date[_0x7265('0x2b')](),_0x311339[_0x7265('0x2c')]));}})});router[_0x7265('0x21')](_0x7265('0xf'),upload[_0x7265('0x2d')](_0x7265('0x2e')),controller[_0x7265('0x2f')]);var upload=multer({'storage':multer[_0x7265('0x26')]({'destination':function(_0x43608,_0x1146fa,_0x52e03b){_0x52e03b(null,path[_0x7265('0x27')](config['root'],_0x7265('0x30')));},'filename':function(_0x34b95f,_0x41342c,_0x1a0d2c){_0x1a0d2c(null,util[_0x7265('0x29')](_0x7265('0x2a'),Date[_0x7265('0x2b')](),_0x41342c[_0x7265('0x2c')]));}})});router[_0x7265('0x21')](_0x7265('0x11'),upload['single'](_0x7265('0x2e')),controller['addAvatar']);var upload=multer({'storage':multer[_0x7265('0x26')]({'destination':function(_0x18f4fd,_0x276559,_0x53dda2){_0x53dda2(null,path[_0x7265('0x27')](config['root'],_0x7265('0x30')));},'filename':function(_0xa41062,_0x24665e,_0x58e45a){_0x58e45a(null,util[_0x7265('0x29')](_0x7265('0x2a'),Date[_0x7265('0x2b')](),_0x24665e[_0x7265('0x2c')]));}})});router[_0x7265('0x21')]('/:id/customer_avatar',upload[_0x7265('0x2d')]('file'),controller[_0x7265('0x31')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x40ef7a,_0x44ef4a,_0x38a2ce){_0x38a2ce(null,path['join'](config[_0x7265('0x28')],_0x7265('0x30')));},'filename':function(_0x25cc3e,_0x344af8,_0x43a674){_0x43a674(null,util['format'](_0x7265('0x2a'),Date[_0x7265('0x2b')](),_0x344af8[_0x7265('0x2c')]));}})});router['post'](_0x7265('0x15'),upload[_0x7265('0x2d')](_0x7265('0x2e')),controller['addSystemAvatar']);router[_0x7265('0x21')](_0x7265('0x32'),controller[_0x7265('0x33')]);const offlineUploadMulter=multer({'storage':multer[_0x7265('0x26')]({'destination':function(_0x1fa4d0,_0x6bc6b6,_0x3300be){const _0x22c396=path[_0x7265('0x27')](config['root'],_0x7265('0x34'),_0x7265('0x35'),'offline-chat');fs_extra[_0x7265('0x36')](_0x22c396,function(){_0x3300be(null,_0x22c396);});},'filename':function(_0x2e71e1,_0x23d6d9,_0x43383a){const _0x538310=_0x23d6d9[_0x7265('0x2c')][_0x7265('0x37')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x228bbc=path[_0x7265('0x38')](_0x538310);const _0xc228b=Date[_0x7265('0x2b')]()+'-'+_0x538310[_0x7265('0x37')](_0x228bbc,'')+_0x228bbc;_0x43383a(null,_0xc228b);}})});router[_0x7265('0x21')](_0x7265('0x39'),offlineUploadMulter[_0x7265('0x3a')](),controller[_0x7265('0x3b')]);router[_0x7265('0x21')](_0x7265('0x17'),auth[_0x7265('0x8')](),controller[_0x7265('0x3c')]);router[_0x7265('0x21')](_0x7265('0x3d'),auth[_0x7265('0x8')](),controller[_0x7265('0x3e')]);router[_0x7265('0x21')]('/:id/proactive_actions',auth[_0x7265('0x8')](),controller[_0x7265('0x3f')]);router[_0x7265('0x21')](_0x7265('0x40'),auth[_0x7265('0x8')](),controller['addAgents']);router[_0x7265('0x41')](_0x7265('0x42'),auth[_0x7265('0x8')](),controller['update']);router[_0x7265('0x43')](_0x7265('0x42'),auth['isAuthenticated'](),controller[_0x7265('0x44')]);router['delete'](_0x7265('0x23'),auth['isAuthenticated'](),controller[_0x7265('0x45')]);router[_0x7265('0x43')](_0x7265('0xe'),auth[_0x7265('0x8')](),controller[_0x7265('0x46')]);router['delete'](_0x7265('0x40'),auth[_0x7265('0x8')](),controller[_0x7265('0x47')]);module[_0x7265('0x48')]=router;
\ No newline at end of file
+var _0xca7f=['addLogo','root','server/files/images/avatars/','now','single','addAvatar','/:id/customer_avatar','addCustomerAvatar','addSystemAvatar','notify','server/files','attachments','ensureDir','replace','extname','any','offline','addInteraction','addApplications','addProactiveActions','/:id/users','addAgents','update','delete','destroy','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/logo','/:id/avatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','getOfflineMessages','post','create','addDisposition','diskStorage','join','server/files/images/logos/','format','%s-%s','originalname','file'];(function(_0x34ca8b,_0x294414){var _0x45cfe6=function(_0x4bf6bf){while(--_0x4bf6bf){_0x34ca8b['push'](_0x34ca8b['shift']());}};_0x45cfe6(++_0x294414);}(_0xca7f,0xf7));var _0xfca7=function(_0x562362,_0x5d54f4){_0x562362=_0x562362-0x0;var _0x3a18ce=_0xca7f[_0x562362];return _0x3a18ce;};'use strict';var multer=require(_0xfca7('0x0'));var util=require(_0xfca7('0x1'));var path=require(_0xfca7('0x2'));var timeout=require(_0xfca7('0x3'));var express=require(_0xfca7('0x4'));var router=express['Router']();var fs_extra=require(_0xfca7('0x5'));var auth=require(_0xfca7('0x6'));var interaction=require(_0xfca7('0x7'));var config=require(_0xfca7('0x8'));var controller=require(_0xfca7('0x9'));router['get']('/',auth[_0xfca7('0xa')](),controller[_0xfca7('0xb')]);router[_0xfca7('0xc')](_0xfca7('0xd'),auth['isAuthenticated'](),controller[_0xfca7('0xe')]);router[_0xfca7('0xc')](_0xfca7('0xf'),auth[_0xfca7('0xa')](),controller[_0xfca7('0x10')]);router['get'](_0xfca7('0x11'),auth[_0xfca7('0xa')](),controller[_0xfca7('0x12')]);router[_0xfca7('0xc')](_0xfca7('0x13'),auth['isAuthenticated'](),controller['getAnswers']);router[_0xfca7('0xc')](_0xfca7('0x14'),controller['getLogo']);router[_0xfca7('0xc')](_0xfca7('0x15'),controller['getAvatar']);router[_0xfca7('0xc')]('/:id/customer_avatar',controller['getCustomerAvatar']);router[_0xfca7('0xc')](_0xfca7('0x16'),controller[_0xfca7('0x17')]);router[_0xfca7('0xc')](_0xfca7('0x18'),auth[_0xfca7('0xa')](),controller[_0xfca7('0x19')]);router[_0xfca7('0xc')](_0xfca7('0x1a'),controller[_0xfca7('0x1b')]);router['get'](_0xfca7('0x1c'),auth[_0xfca7('0xa')](),controller[_0xfca7('0x1d')]);router[_0xfca7('0xc')](_0xfca7('0x1e'),auth['isAuthenticated'](),controller[_0xfca7('0x1f')]);router[_0xfca7('0xc')](_0xfca7('0x20'),controller[_0xfca7('0x21')]);router[_0xfca7('0xc')]('/:id/offline_messages',auth[_0xfca7('0xa')](),controller[_0xfca7('0x22')]);router['get']('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router[_0xfca7('0x23')]('/',auth[_0xfca7('0xa')](),controller[_0xfca7('0x24')]);router[_0xfca7('0x23')](_0xfca7('0x11'),auth['isAuthenticated'](),controller[_0xfca7('0x25')]);router[_0xfca7('0x23')](_0xfca7('0x13'),auth[_0xfca7('0xa')](),controller['addAnswer']);var upload=multer({'storage':multer[_0xfca7('0x26')]({'destination':function(_0x15bc72,_0x43ab04,_0x44186d){_0x44186d(null,path[_0xfca7('0x27')](config['root'],_0xfca7('0x28')));},'filename':function(_0x10b8da,_0x4fc485,_0x5c649a){_0x5c649a(null,util[_0xfca7('0x29')](_0xfca7('0x2a'),Date['now'](),_0x4fc485[_0xfca7('0x2b')]));}})});router[_0xfca7('0x23')](_0xfca7('0x14'),upload['single'](_0xfca7('0x2c')),controller[_0xfca7('0x2d')]);var upload=multer({'storage':multer[_0xfca7('0x26')]({'destination':function(_0x13eb6e,_0x14adb0,_0x1dd105){_0x1dd105(null,path[_0xfca7('0x27')](config[_0xfca7('0x2e')],_0xfca7('0x2f')));},'filename':function(_0x41f162,_0x5f25a7,_0x329ff0){_0x329ff0(null,util[_0xfca7('0x29')](_0xfca7('0x2a'),Date[_0xfca7('0x30')](),_0x5f25a7[_0xfca7('0x2b')]));}})});router['post'](_0xfca7('0x15'),upload[_0xfca7('0x31')](_0xfca7('0x2c')),controller[_0xfca7('0x32')]);var upload=multer({'storage':multer[_0xfca7('0x26')]({'destination':function(_0x2309dc,_0x43f237,_0x105b69){_0x105b69(null,path[_0xfca7('0x27')](config['root'],'server/files/images/avatars/'));},'filename':function(_0x1c0012,_0xbc30a8,_0x442365){_0x442365(null,util[_0xfca7('0x29')](_0xfca7('0x2a'),Date['now'](),_0xbc30a8[_0xfca7('0x2b')]));}})});router[_0xfca7('0x23')](_0xfca7('0x33'),upload[_0xfca7('0x31')](_0xfca7('0x2c')),controller[_0xfca7('0x34')]);var upload=multer({'storage':multer[_0xfca7('0x26')]({'destination':function(_0x15b2c2,_0x5b6f7a,_0x5182e4){_0x5182e4(null,path['join'](config[_0xfca7('0x2e')],_0xfca7('0x2f')));},'filename':function(_0x57dd78,_0xee0c51,_0x54df32){_0x54df32(null,util[_0xfca7('0x29')]('%s-%s',Date[_0xfca7('0x30')](),_0xee0c51['originalname']));}})});router[_0xfca7('0x23')](_0xfca7('0x16'),upload[_0xfca7('0x31')]('file'),controller[_0xfca7('0x35')]);router[_0xfca7('0x23')]('/:id/notify',controller[_0xfca7('0x36')]);const offlineUploadMulter=multer({'storage':multer[_0xfca7('0x26')]({'destination':function(_0x2be263,_0x3685ee,_0xafb4eb){const _0xf7271d=path[_0xfca7('0x27')](config[_0xfca7('0x2e')],_0xfca7('0x37'),_0xfca7('0x38'),'offline-chat');fs_extra[_0xfca7('0x39')](_0xf7271d,function(){_0xafb4eb(null,_0xf7271d);});},'filename':function(_0x45f6ca,_0x153210,_0x16f368){const _0x173be4=_0x153210[_0xfca7('0x2b')][_0xfca7('0x3a')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x5196e1=path[_0xfca7('0x3b')](_0x173be4);const _0x1a6158=Date[_0xfca7('0x30')]()+'-'+_0x173be4[_0xfca7('0x3a')](_0x5196e1,'')+_0x5196e1;_0x16f368(null,_0x1a6158);}})});router['post']('/:id/offline',offlineUploadMulter[_0xfca7('0x3c')](),controller[_0xfca7('0x3d')]);router['post'](_0xfca7('0x18'),auth[_0xfca7('0xa')](),controller[_0xfca7('0x3e')]);router[_0xfca7('0x23')](_0xfca7('0x1c'),auth[_0xfca7('0xa')](),controller[_0xfca7('0x3f')]);router[_0xfca7('0x23')](_0xfca7('0x1e'),auth[_0xfca7('0xa')](),controller[_0xfca7('0x40')]);router['post'](_0xfca7('0x41'),auth[_0xfca7('0xa')](),controller[_0xfca7('0x42')]);router['put'](_0xfca7('0xf'),auth[_0xfca7('0xa')](),controller[_0xfca7('0x43')]);router[_0xfca7('0x44')](_0xfca7('0xf'),auth[_0xfca7('0xa')](),controller[_0xfca7('0x45')]);router[_0xfca7('0x44')](_0xfca7('0x11'),auth[_0xfca7('0xa')](),controller['removeDispositions']);router['delete']('/:id/canned_answers',auth['isAuthenticated'](),controller[_0xfca7('0x46')]);router[_0xfca7('0x44')](_0xfca7('0x41'),auth[_0xfca7('0xa')](),controller[_0xfca7('0x47')]);module[_0xfca7('0x48')]=router;
\ No newline at end of file
index 6850d85..ab89fd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb39f=['STRING','ENUM','sequelize','exports'];(function(_0x2735f5,_0x23f497){var _0x2b9618=function(_0x337797){while(--_0x337797){_0x2735f5['push'](_0x2735f5['shift']());}};_0x2b9618(++_0x23f497);}(_0xb39f,0x1e6));var _0xfb39=function(_0x48130d,_0x257dde){_0x48130d=_0x48130d-0x0;var _0x202b4d=_0xb39f[_0x48130d];return _0x202b4d;};'use strict';var Sequelize=require(_0xfb39('0x0'));module[_0xfb39('0x1')]={'name':{'type':Sequelize[_0xfb39('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xfb39('0x3')]('AmazonAWS','Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xfb39('0x2')]}};
\ No newline at end of file
+var _0xe1d3=['sequelize','exports','STRING','ENUM','AmazonAWS'];(function(_0xfcc44f,_0x5e907e){var _0x26c124=function(_0x434389){while(--_0x434389){_0xfcc44f['push'](_0xfcc44f['shift']());}};_0x26c124(++_0x5e907e);}(_0xe1d3,0x159));var _0x3e1d=function(_0x2b55de,_0x3df0c0){_0x2b55de=_0x2b55de-0x0;var _0x5428a2=_0xe1d3[_0x2b55de];return _0x5428a2;};'use strict';var Sequelize=require(_0x3e1d('0x0'));module[_0x3e1d('0x1')]={'name':{'type':Sequelize[_0x3e1d('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x3e1d('0x3')](_0x3e1d('0x4'),'Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0x3e1d('0x2')]},'data2':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b957eb1..be2769f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['error','stack','name','send','index','CloudProvider','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus'];(function(_0x577e98,_0x1b3752){var _0x4092e4=function(_0x3b9906){while(--_0x3b9906){_0x577e98['push'](_0x577e98['shift']());}};_0x4092e4(++_0x1b3752);}(_0xdb28,0x106));var _0x8db2=function(_0x3c6861,_0x167088){_0x3c6861=_0x3c6861-0x0;var _0x1c95e7=_0xdb28[_0x3c6861];return _0x1c95e7;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'all':!![]}];}return db[_0x8db2('0x2b')][_0x8db2('0x40')](_0x21bae5);})['then'](function(_0x49a7ae){_0x3124d5[_0x8db2('0x41')]=_0x49a7ae;return _0x3124d5;})['then'](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x42')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x43')]=function(_0x313130,_0x307783){var _0xb4fe2c={'raw':!![],'where':{'id':_0x313130[_0x8db2('0x44')]['id']}},_0x30d606={};_0x30d606['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x45')]);_0x30d606[_0x8db2('0x30')]=_['keys'](_0x313130[_0x8db2('0x30')]);_0x30d606[_0x8db2('0x39')]=_[_0x8db2('0x46')](_0x30d606[_0x8db2('0x32')],_0x30d606['query']);_0xb4fe2c[_0x8db2('0x34')]=_['intersection'](_0x30d606[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x313130[_0x8db2('0x30')]['fields']));_0xb4fe2c['attributes']=_0xb4fe2c[_0x8db2('0x34')]['length']?_0xb4fe2c[_0x8db2('0x34')]:_0x30d606[_0x8db2('0x32')];if(_0x313130[_0x8db2('0x30')][_0x8db2('0x3f')]){_0xb4fe2c[_0x8db2('0x47')]=[{'all':!![]}];}_0xb4fe2c=_[_0x8db2('0x3d')]({},_0xb4fe2c,_0x313130[_0x8db2('0x3e')]);return db[_0x8db2('0x2b')][_0x8db2('0x48')](_0xb4fe2c)[_0x8db2('0x24')](handleEntityNotFound(_0x307783,null))[_0x8db2('0x24')](respondWithResult(_0x307783,null))[_0x8db2('0x42')](handleError(_0x307783,null));};exports['create']=function(_0x449109,_0x2ada52){return db[_0x8db2('0x2b')][_0x8db2('0x49')](_0x449109['body'],{})['then'](respondWithResult(_0x2ada52,0xc9))[_0x8db2('0x42')](handleError(_0x2ada52,null));};exports[_0x8db2('0x23')]=function(_0x164020,_0x4c66e5){if(_0x164020['body']['id']){delete _0x164020['body']['id'];}return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x164020[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x4c66e5,null))[_0x8db2('0x24')](saveUpdates(_0x164020[_0x8db2('0x4a')],null))[_0x8db2('0x24')](respondWithResult(_0x4c66e5,null))['catch'](handleError(_0x4c66e5,null));};exports['destroy']=function(_0x3d29bc,_0x18c6ef){return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x3d29bc[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x18c6ef,null))[_0x8db2('0x24')](removeEntity(_0x18c6ef,null))[_0x8db2('0x42')](handleError(_0x18c6ef,null));};
\ No newline at end of file
+var _0x7a54=['offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','CloudProvider','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x19b479,_0x4518c1){var _0x1026ef=function(_0x4ec617){while(--_0x4ec617){_0x19b479['push'](_0x19b479['shift']());}};_0x1026ef(++_0x4518c1);}(_0x7a54,0x106));var _0x47a5=function(_0x5d5463,_0xc45a00){_0x5d5463=_0x5d5463-0x0;var _0x40764c=_0x7a54[_0x5d5463];return _0x40764c;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['CloudProvider'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['CloudProvider']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['CloudProvider']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};
\ No newline at end of file
index 7b71323..8032c68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa46=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./cloudProvider.attributes','define','CloudProvider','cloud_providers','lodash','util','../../config/logger'];(function(_0x2ae443,_0x2582c4){var _0x2dd68d=function(_0xf21a61){while(--_0xf21a61){_0x2ae443['push'](_0x2ae443['shift']());}};_0x2dd68d(++_0x2582c4);}(_0xfa46,0x99));var _0x6fa4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfa46[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x6fa4('0x0'));var util=require(_0x6fa4('0x1'));var logger=require(_0x6fa4('0x2'))('api');var moment=require(_0x6fa4('0x3'));var BPromise=require(_0x6fa4('0x4'));var rp=require(_0x6fa4('0x5'));var fs=require('fs');var path=require(_0x6fa4('0x6'));var rimraf=require(_0x6fa4('0x7'));var config=require(_0x6fa4('0x8'));var attributes=require(_0x6fa4('0x9'));module['exports']=function(_0x2bf8f1,_0x569c2a){return _0x2bf8f1[_0x6fa4('0xa')](_0x6fa4('0xb'),attributes,{'tableName':_0x6fa4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2393=['rimraf','../../config/environment','./cloudProvider.attributes','CloudProvider','cloud_providers','lodash','../../config/logger','bluebird','request-promise'];(function(_0x3c03b0,_0x4cdcc7){var _0x167630=function(_0x1997aa){while(--_0x1997aa){_0x3c03b0['push'](_0x3c03b0['shift']());}};_0x167630(++_0x4cdcc7);}(_0x2393,0x8c));var _0x3239=function(_0x12551a,_0x5af080){_0x12551a=_0x12551a-0x0;var _0x6f8fc0=_0x2393[_0x12551a];return _0x6f8fc0;};'use strict';var _=require(_0x3239('0x0'));var util=require('util');var logger=require(_0x3239('0x1'))('api');var moment=require('moment');var BPromise=require(_0x3239('0x2'));var rp=require(_0x3239('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3239('0x4'));var config=require(_0x3239('0x5'));var attributes=require(_0x3239('0x6'));module['exports']=function(_0x5d60ed,_0x258a18){return _0x5d60ed['define'](_0x3239('0x7'),attributes,{'tableName':_0x3239('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d0cfd15..db7183b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc692=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','CloudProvider,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils'];(function(_0x596c43,_0x28647a){var _0x4e1315=function(_0x58e910){while(--_0x58e910){_0x596c43['push'](_0x596c43['shift']());}};_0x4e1315(++_0x28647a);}(_0xc692,0x15f));var _0x2c69=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0xc692[_0x23e7c1];return _0x1add43;};'use strict';var _=require(_0x2c69('0x0'));var util=require(_0x2c69('0x1'));var moment=require(_0x2c69('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2c69('0x3'));var db=require(_0x2c69('0x4'))['db'];var utils=require(_0x2c69('0x5'));var logger=require(_0x2c69('0x6'))(_0x2c69('0x7'));var config=require(_0x2c69('0x8'));var jayson=require(_0x2c69('0x9'));var client=jayson['client'][_0x2c69('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4da70c,_0x5c1260,_0x31688a){return new BPromise(function(_0x7a913a,_0xfc5ebb){return client[_0x2c69('0xb')](_0x4da70c,_0x31688a)[_0x2c69('0xc')](function(_0x131313){logger['info'](_0x2c69('0xd'),_0x5c1260,'request\x20sent');logger[_0x2c69('0xe')]('CloudProvider,\x20%s,\x20%s,\x20%s',_0x5c1260,_0x2c69('0xf'),JSON[_0x2c69('0x10')](_0x131313));if(_0x131313[_0x2c69('0x11')]){if(_0x131313[_0x2c69('0x11')][_0x2c69('0x12')]===0x1f4){logger[_0x2c69('0x11')]('CloudProvider,\x20%s,\x20%s',_0x5c1260,_0x131313[_0x2c69('0x11')]['message']);return _0xfc5ebb(_0x131313[_0x2c69('0x11')][_0x2c69('0x13')]);}logger[_0x2c69('0x11')](_0x2c69('0xd'),_0x5c1260,_0x131313[_0x2c69('0x11')][_0x2c69('0x13')]);return _0x7a913a(_0x131313['error'][_0x2c69('0x13')]);}else{logger['info']('CloudProvider,\x20%s,\x20%s',_0x5c1260,_0x2c69('0xf'));_0x7a913a(_0x131313['result'][_0x2c69('0x13')]);}})[_0x2c69('0x14')](function(_0x59e48a){logger['error'](_0x2c69('0xd'),_0x5c1260,_0x59e48a);_0xfc5ebb(_0x59e48a);});});}
\ No newline at end of file
+var _0x505d=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','message','CloudProvider,\x20%s,\x20%s','catch','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4a095e,_0x381cd5){var _0x10ef73=function(_0x1f6964){while(--_0x1f6964){_0x4a095e['push'](_0x4a095e['shift']());}};_0x10ef73(++_0x381cd5);}(_0x505d,0x93));var _0xd505=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0x505d[_0x25bea7];return _0x175952;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd505('0x0'));var BPromise=require(_0xd505('0x1'));var rs=require(_0xd505('0x2'));var fs=require('fs');var Redis=require(_0xd505('0x3'));var db=require(_0xd505('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd505('0x5'))(_0xd505('0x6'));var config=require(_0xd505('0x7'));var jayson=require(_0xd505('0x8'));var client=jayson['client'][_0xd505('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5d4f8d,_0x2bc4e7,_0x162ee2){return new BPromise(function(_0x543c42,_0x2abf26){return client[_0xd505('0xa')](_0x5d4f8d,_0x162ee2)['then'](function(_0x47b37a){logger[_0xd505('0xb')]('CloudProvider,\x20%s,\x20%s',_0x2bc4e7,_0xd505('0xc'));logger['debug'](_0xd505('0xd'),_0x2bc4e7,'request\x20sent',JSON[_0xd505('0xe')](_0x47b37a));if(_0x47b37a['error']){if(_0x47b37a['error']['code']===0x1f4){logger[_0xd505('0xf')]('CloudProvider,\x20%s,\x20%s',_0x2bc4e7,_0x47b37a[_0xd505('0xf')][_0xd505('0x10')]);return _0x2abf26(_0x47b37a['error']['message']);}logger[_0xd505('0xf')](_0xd505('0x11'),_0x2bc4e7,_0x47b37a[_0xd505('0xf')][_0xd505('0x10')]);return _0x543c42(_0x47b37a[_0xd505('0xf')][_0xd505('0x10')]);}else{logger[_0xd505('0xb')](_0xd505('0x11'),_0x2bc4e7,_0xd505('0xc'));_0x543c42(_0x47b37a['result'][_0xd505('0x10')]);}})[_0xd505('0x12')](function(_0x8013f2){logger['error'](_0xd505('0x11'),_0x2bc4e7,_0x8013f2);_0x2abf26(_0x8013f2);});});}
\ No newline at end of file
index d46611a..e79f7d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcf8=['get','/:id','post','isAuthenticated','create','put','update','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cloudProvider.controller'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbcf8,0x15d));var _0x8bcf=function(_0x1a02d2,_0x1b09aa){_0x1a02d2=_0x1a02d2-0x0;var _0x24524f=_0xbcf8[_0x1a02d2];return _0x24524f;};'use strict';var multer=require(_0x8bcf('0x0'));var util=require('util');var path=require(_0x8bcf('0x1'));var timeout=require('connect-timeout');var express=require(_0x8bcf('0x2'));var router=express[_0x8bcf('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8bcf('0x4'));var interaction=require(_0x8bcf('0x5'));var config=require(_0x8bcf('0x6'));var controller=require(_0x8bcf('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x8bcf('0x8')](_0x8bcf('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x8bcf('0xa')]('/',auth[_0x8bcf('0xb')](),controller[_0x8bcf('0xc')]);router[_0x8bcf('0xd')](_0x8bcf('0x9'),auth[_0x8bcf('0xb')](),controller[_0x8bcf('0xe')]);router['delete']('/:id',auth[_0x8bcf('0xb')](),controller[_0x8bcf('0xf')]);module[_0x8bcf('0x10')]=router;
\ No newline at end of file
+var _0x1280=['./cloudProvider.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x154192,_0x2d360f){var _0x3c2792=function(_0x2e257b){while(--_0x2e257b){_0x154192['push'](_0x154192['shift']());}};_0x3c2792(++_0x2d360f);}(_0x1280,0xac));var _0x0128=function(_0x11c6b8,_0x5b2d7b){_0x11c6b8=_0x11c6b8-0x0;var _0x38b38f=_0x1280[_0x11c6b8];return _0x38b38f;};'use strict';var multer=require(_0x0128('0x0'));var util=require('util');var path=require(_0x0128('0x1'));var timeout=require(_0x0128('0x2'));var express=require(_0x0128('0x3'));var router=express[_0x0128('0x4')]();var fs_extra=require(_0x0128('0x5'));var auth=require(_0x0128('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x0128('0x7'));var controller=require(_0x0128('0x8'));router[_0x0128('0x9')]('/',auth[_0x0128('0xa')](),controller['index']);router['get'](_0x0128('0xb'),auth[_0x0128('0xa')](),controller[_0x0128('0xc')]);router[_0x0128('0xd')]('/',auth['isAuthenticated'](),controller[_0x0128('0xe')]);router[_0x0128('0xf')]('/:id',auth[_0x0128('0xa')](),controller[_0x0128('0x10')]);router[_0x0128('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x0128('0x12')]);module[_0x0128('0x13')]=router;
\ No newline at end of file
index f4735e8..1e4643a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f9d=['exports','STRING','name'];(function(_0x5302fb,_0x1a2db3){var _0x43e6a4=function(_0x324ae6){while(--_0x324ae6){_0x5302fb['push'](_0x5302fb['shift']());}};_0x43e6a4(++_0x1a2db3);}(_0x3f9d,0x10e));var _0xd3f9=function(_0x14f820,_0x37876f){_0x14f820=_0x14f820-0x0;var _0x2bf03d=_0x3f9d[_0x14f820];return _0x2bf03d;};'use strict';var Sequelize=require('sequelize');module[_0xd3f9('0x0')]={'name':{'type':Sequelize[_0xd3f9('0x1')],'unique':_0xd3f9('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0xd3f9('0x1')]},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xd3f9('0x1')]},'fax':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xd3f9('0x1')]},'street':{'type':Sequelize[_0xd3f9('0x1')]},'postalCode':{'type':Sequelize[_0xd3f9('0x1')]},'city':{'type':Sequelize[_0xd3f9('0x1')]},'country':{'type':Sequelize[_0xd3f9('0x1')]},'email':{'type':Sequelize[_0xd3f9('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xd3f9('0x1')]},'sStreet':{'type':Sequelize[_0xd3f9('0x1')]},'sPostalCode':{'type':Sequelize[_0xd3f9('0x1')]},'sCity':{'type':Sequelize[_0xd3f9('0x1')]},'sCountry':{'type':Sequelize[_0xd3f9('0x1')]},'description':{'type':Sequelize[_0xd3f9('0x1')]}};
\ No newline at end of file
+var _0x0cf9=['exports','STRING','sequelize'];(function(_0x49aa7d,_0x5d46d8){var _0xdd0d26=function(_0x159df7){while(--_0x159df7){_0x49aa7d['push'](_0x49aa7d['shift']());}};_0xdd0d26(++_0x5d46d8);}(_0x0cf9,0xb3));var _0x90cf=function(_0x395667,_0x45593a){_0x395667=_0x395667-0x0;var _0x5cdb8f=_0x0cf9[_0x395667];return _0x5cdb8f;};'use strict';var Sequelize=require(_0x90cf('0x0'));module[_0x90cf('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x90cf('0x2')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x90cf('0x2')]},'fax':{'type':Sequelize[_0x90cf('0x2')]},'type':{'type':Sequelize[_0x90cf('0x2')]},'street':{'type':Sequelize[_0x90cf('0x2')]},'postalCode':{'type':Sequelize[_0x90cf('0x2')]},'city':{'type':Sequelize[_0x90cf('0x2')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x90cf('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize[_0x90cf('0x2')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0x90cf('0x2')]},'sCountry':{'type':Sequelize[_0x90cf('0x2')]},'description':{'type':Sequelize[_0x90cf('0x2')]}};
\ No newline at end of file
index 2b70857..67d15d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bcc=['find','create','body','user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addContacts','omit','ids','getContacts','findOne','CmContact','rawAttributes','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','json','offset','undefined','limit','count','status','apply','reject','save','update','then','destroy','get','Companies','UserProfileResource','error','name','send','index','CmCompany','describe','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','map','merge','includeAll','include','rows','catch','show','options'];(function(_0x58a138,_0x4de2fa){var _0x874531=function(_0x23bd17){while(--_0x23bd17){_0x58a138['push'](_0x58a138['shift']());}};_0x874531(++_0x4de2fa);}(_0x6bcc,0xb8));var _0xc6bc=function(_0x5940f5,_0x14a225){_0x5940f5=_0x5940f5-0x0;var _0x2add42=_0x6bcc[_0x5940f5];return _0x2add42;};'use strict';var emlformat=require(_0xc6bc('0x0'));var rimraf=require(_0xc6bc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc6bc('0x2'));var rp=require('request-promise');var moment=require(_0xc6bc('0x3'));var BPromise=require(_0xc6bc('0x4'));var Mustache=require('mustache');var util=require(_0xc6bc('0x5'));var path=require(_0xc6bc('0x6'));var sox=require(_0xc6bc('0x7'));var csv=require(_0xc6bc('0x8'));var ejs=require(_0xc6bc('0x9'));var fs=require('fs');var fs_extra=require(_0xc6bc('0xa'));var _=require(_0xc6bc('0xb'));var squel=require(_0xc6bc('0xc'));var crypto=require('crypto');var jsforce=require(_0xc6bc('0xd'));var deskjs=require(_0xc6bc('0xe'));var toCsv=require(_0xc6bc('0x8'));var querystring=require(_0xc6bc('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc6bc('0x10'));var hardwareService=require(_0xc6bc('0x11'));var logger=require('../../config/logger')(_0xc6bc('0x12'));var utils=require(_0xc6bc('0x13'));var config=require(_0xc6bc('0x14'));var licenseUtil=require(_0xc6bc('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x40930d,_0x36c030){_0x36c030=_0x36c030||0xcc;return function(_0x50f3b3){if(_0x50f3b3){return _0x40930d[_0xc6bc('0x16')](_0x36c030);}return _0x40930d['status'](_0x36c030)[_0xc6bc('0x17')]();};}function respondWithResult(_0x463166,_0x4c9a2e){_0x4c9a2e=_0x4c9a2e||0xc8;return function(_0x58e25f){if(_0x58e25f){return _0x463166['status'](_0x4c9a2e)[_0xc6bc('0x18')](_0x58e25f);}};}function respondWithFilteredResult(_0x5a5d92,_0x37c7ba){return function(_0x511fc0){if(_0x511fc0){var _0x59d403=typeof _0x37c7ba[_0xc6bc('0x19')]===_0xc6bc('0x1a')&&typeof _0x37c7ba[_0xc6bc('0x1b')]===_0xc6bc('0x1a');var _0x4f721a=_0x511fc0['count'];var _0x34edde=_0x59d403?0x0:_0x37c7ba[_0xc6bc('0x19')];var _0x3a5354=_0x59d403?_0x511fc0[_0xc6bc('0x1c')]:_0x37c7ba['offset']+_0x37c7ba[_0xc6bc('0x1b')];var _0xc9651a;if(_0x3a5354>=_0x4f721a){_0x3a5354=_0x4f721a;_0xc9651a=0xc8;}else{_0xc9651a=0xce;}_0x5a5d92[_0xc6bc('0x1d')](_0xc9651a);return _0x5a5d92['set']('Content-Range',_0x34edde+'-'+_0x3a5354+'/'+_0x4f721a)[_0xc6bc('0x18')](_0x511fc0);}return null;};}function patchUpdates(_0x3a4c8a){return function(_0x52c505){try{jsonpatch[_0xc6bc('0x1e')](_0x52c505,_0x3a4c8a,!![]);}catch(_0x3336bd){return BPromise[_0xc6bc('0x1f')](_0x3336bd);}return _0x52c505[_0xc6bc('0x20')]();};}function saveUpdates(_0x134124,_0x46c063){return function(_0x4c6bee){if(_0x4c6bee){return _0x4c6bee[_0xc6bc('0x21')](_0x134124)[_0xc6bc('0x22')](function(_0x12d5ec){return _0x12d5ec;});}return null;};}function removeEntity(_0x547039,_0x49436c){return function(_0x235d65){if(_0x235d65){return _0x235d65[_0xc6bc('0x23')]()[_0xc6bc('0x22')](function(){var _0x398185=_0x235d65[_0xc6bc('0x24')]({'plain':!![]});var _0x530472=_0xc6bc('0x25');return db[_0xc6bc('0x26')]['destroy']({'where':{'type':_0x530472,'resourceId':_0x398185['id']}})[_0xc6bc('0x22')](function(){return _0x235d65;});})['then'](function(){_0x547039['status'](0xcc)[_0xc6bc('0x17')]();});}};}function handleEntityNotFound(_0x446ae0,_0x1b1dd5){return function(_0x2ff128){if(!_0x2ff128){_0x446ae0['sendStatus'](0x194);}return _0x2ff128;};}function handleError(_0x398be8,_0x371e7c){_0x371e7c=_0x371e7c||0x1f4;return function(_0x23b3b2){logger[_0xc6bc('0x27')](_0x23b3b2['stack']);if(_0x23b3b2['name']){delete _0x23b3b2[_0xc6bc('0x28')];}_0x398be8[_0xc6bc('0x1d')](_0x371e7c)[_0xc6bc('0x29')](_0x23b3b2);};}exports[_0xc6bc('0x2a')]=function(_0x1006f1,_0x5a85ec){var _0x472bfe={},_0x10ddee={},_0x27d63e={'count':0x0,'rows':[]};return db[_0xc6bc('0x2b')][_0xc6bc('0x2c')]()[_0xc6bc('0x22')](function(_0x586a27){_0x10ddee[_0xc6bc('0x2d')]=_[_0xc6bc('0x2e')](_0x586a27);_0x10ddee[_0xc6bc('0x2f')]=_[_0xc6bc('0x2e')](_0x1006f1[_0xc6bc('0x2f')]);_0x10ddee['filters']=_[_0xc6bc('0x30')](_0x10ddee['model'],_0x10ddee[_0xc6bc('0x2f')]);_0x472bfe[_0xc6bc('0x31')]=_[_0xc6bc('0x30')](_0x10ddee[_0xc6bc('0x2d')],qs[_0xc6bc('0x32')](_0x1006f1[_0xc6bc('0x2f')][_0xc6bc('0x32')]));_0x472bfe[_0xc6bc('0x31')]=_0x472bfe[_0xc6bc('0x31')][_0xc6bc('0x33')]?_0x472bfe[_0xc6bc('0x31')]:_0x10ddee[_0xc6bc('0x2d')];if(!_0x1006f1['query'][_0xc6bc('0x34')](_0xc6bc('0x35'))){_0x472bfe[_0xc6bc('0x1b')]=qs[_0xc6bc('0x1b')](_0x1006f1['query']['limit']);_0x472bfe['offset']=qs[_0xc6bc('0x19')](_0x1006f1['query'][_0xc6bc('0x19')]);}_0x472bfe[_0xc6bc('0x36')]=qs[_0xc6bc('0x37')](_0x1006f1['query'][_0xc6bc('0x37')]);_0x472bfe[_0xc6bc('0x38')]=qs[_0xc6bc('0x39')](_[_0xc6bc('0x3a')](_0x1006f1[_0xc6bc('0x2f')],_0x10ddee['filters']),_0x586a27);if(_0x1006f1['query'][_0xc6bc('0x3b')]){_0x472bfe[_0xc6bc('0x38')]=_['merge'](_0x472bfe['where'],{'$or':_[_0xc6bc('0x3c')](_0x472bfe[_0xc6bc('0x31')],function(_0x186afd){var _0x444eb3={};_0x444eb3[_0x186afd]={'$like':'%'+_0x1006f1[_0xc6bc('0x2f')][_0xc6bc('0x3b')]+'%'};return _0x444eb3;})});}_0x472bfe=_[_0xc6bc('0x3d')]({},_0x472bfe,_0x1006f1['options']);var _0x1495d5={'where':_0x472bfe[_0xc6bc('0x38')]};return db[_0xc6bc('0x2b')][_0xc6bc('0x1c')](_0x1495d5)['then'](function(_0x1e1521){_0x27d63e[_0xc6bc('0x1c')]=_0x1e1521;if(_0x1006f1['query'][_0xc6bc('0x3e')]){_0x472bfe[_0xc6bc('0x3f')]=[{'all':!![]}];}return db[_0xc6bc('0x2b')]['findAll'](_0x472bfe);})[_0xc6bc('0x22')](function(_0x132ee3){_0x27d63e[_0xc6bc('0x40')]=_0x132ee3;return _0x27d63e;})[_0xc6bc('0x22')](respondWithFilteredResult(_0x5a85ec,_0x472bfe))[_0xc6bc('0x41')](handleError(_0x5a85ec,null));})['catch'](handleError(_0x5a85ec,null));};exports[_0xc6bc('0x42')]=function(_0x2ed88a,_0x369879){var _0x3fb007={'raw':![],'where':{'id':_0x2ed88a['params']['id']}},_0x555f62={};_0x555f62['model']=_[_0xc6bc('0x2e')](db[_0xc6bc('0x2b')]['rawAttributes']);_0x555f62[_0xc6bc('0x2f')]=_[_0xc6bc('0x2e')](_0x2ed88a[_0xc6bc('0x2f')]);_0x555f62[_0xc6bc('0x39')]=_['intersection'](_0x555f62[_0xc6bc('0x2d')],_0x555f62[_0xc6bc('0x2f')]);_0x3fb007[_0xc6bc('0x31')]=_[_0xc6bc('0x30')](_0x555f62[_0xc6bc('0x2d')],qs[_0xc6bc('0x32')](_0x2ed88a[_0xc6bc('0x2f')][_0xc6bc('0x32')]));_0x3fb007['attributes']=_0x3fb007['attributes'][_0xc6bc('0x33')]?_0x3fb007['attributes']:_0x555f62[_0xc6bc('0x2d')];if(_0x2ed88a['query']['includeAll']){_0x3fb007['include']=[{'all':!![]}];}_0x3fb007=_['merge']({},_0x3fb007,_0x2ed88a[_0xc6bc('0x43')]);return db[_0xc6bc('0x2b')][_0xc6bc('0x44')](_0x3fb007)[_0xc6bc('0x22')](handleEntityNotFound(_0x369879,null))[_0xc6bc('0x22')](respondWithResult(_0x369879,null))[_0xc6bc('0x41')](handleError(_0x369879,null));};exports[_0xc6bc('0x45')]=function(_0x10401c,_0x2db980){return db['CmCompany'][_0xc6bc('0x45')](_0x10401c[_0xc6bc('0x46')],{})[_0xc6bc('0x22')](function(_0x56de59){var _0x86842f=_0x10401c[_0xc6bc('0x47')]['get']({'plain':!![]});if(!_0x86842f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x86842f[_0xc6bc('0x48')]===_0xc6bc('0x47')){var _0x5b2c79=_0x56de59[_0xc6bc('0x24')]({'plain':!![]});var _0x59a40c=_0xc6bc('0x25');return db['UserProfileSection'][_0xc6bc('0x44')]({'where':{'name':_0x59a40c,'userProfileId':_0x86842f[_0xc6bc('0x49')]},'raw':!![]})[_0xc6bc('0x22')](function(_0x53505d){if(_0x53505d&&_0x53505d[_0xc6bc('0x4a')]===0x0){return db[_0xc6bc('0x26')]['create']({'name':_0x5b2c79[_0xc6bc('0x28')],'resourceId':_0x5b2c79['id'],'type':_0x53505d[_0xc6bc('0x28')],'sectionId':_0x53505d['id']},{})['then'](function(){return _0x56de59;});}else{return _0x56de59;}})[_0xc6bc('0x41')](function(_0x9548a4){logger[_0xc6bc('0x27')](_0xc6bc('0x4b'),_0x9548a4);throw _0x9548a4;});}return _0x56de59;})['then'](respondWithResult(_0x2db980,0xc9))[_0xc6bc('0x41')](handleError(_0x2db980,null));};exports['update']=function(_0x3345c0,_0x571c52){if(_0x3345c0[_0xc6bc('0x46')]['id']){delete _0x3345c0[_0xc6bc('0x46')]['id'];}return db[_0xc6bc('0x2b')]['find']({'where':{'id':_0x3345c0[_0xc6bc('0x4c')]['id']}})[_0xc6bc('0x22')](handleEntityNotFound(_0x571c52,null))[_0xc6bc('0x22')](saveUpdates(_0x3345c0[_0xc6bc('0x46')],null))[_0xc6bc('0x22')](respondWithResult(_0x571c52,null))[_0xc6bc('0x41')](handleError(_0x571c52,null));};exports[_0xc6bc('0x23')]=function(_0x473180,_0x14688a){return db['CmCompany']['find']({'where':{'id':_0x473180[_0xc6bc('0x4c')]['id']}})['then'](handleEntityNotFound(_0x14688a,null))[_0xc6bc('0x22')](removeEntity(_0x14688a,null))[_0xc6bc('0x41')](handleError(_0x14688a,null));};exports[_0xc6bc('0x2c')]=function(_0x9c4623,_0x584388){return db[_0xc6bc('0x2b')][_0xc6bc('0x2c')]()[_0xc6bc('0x22')](respondWithResult(_0x584388,null))[_0xc6bc('0x41')](handleError(_0x584388,null));};exports[_0xc6bc('0x4d')]=function(_0x420634,_0x2bad53,_0x5ce153){return db['CmContact'][_0xc6bc('0x44')]({'where':{'id':_0x420634[_0xc6bc('0x4c')]['id']}})[_0xc6bc('0x22')](handleEntityNotFound(_0x2bad53,null))[_0xc6bc('0x22')](function(_0x42b9fc){if(_0x42b9fc){return _0x42b9fc['addContacts'](_0x420634[_0xc6bc('0x46')]['ids'],_[_0xc6bc('0x4e')](_0x420634[_0xc6bc('0x46')],[_0xc6bc('0x4f'),'id'])||{});}})[_0xc6bc('0x22')](respondWithResult(_0x2bad53,null))[_0xc6bc('0x41')](handleError(_0x2bad53,null));};exports[_0xc6bc('0x50')]=function(_0x169e9f,_0x4b849a,_0x1e2369){var _0x24269d={};var _0x999655={};var _0x49dbbe;var _0x2baca7;return db[_0xc6bc('0x2b')][_0xc6bc('0x51')]({'where':{'id':_0x169e9f[_0xc6bc('0x4c')]['id']}})[_0xc6bc('0x22')](handleEntityNotFound(_0x4b849a,null))[_0xc6bc('0x22')](function(_0x30a9cc){if(_0x30a9cc){_0x49dbbe=_0x30a9cc;_0x999655['model']=_[_0xc6bc('0x2e')](db[_0xc6bc('0x52')][_0xc6bc('0x53')]);_0x999655[_0xc6bc('0x2f')]=_[_0xc6bc('0x2e')](_0x169e9f[_0xc6bc('0x2f')]);_0x999655['filters']=_['intersection'](_0x999655['model'],_0x999655[_0xc6bc('0x2f')]);_0x24269d['attributes']=_[_0xc6bc('0x30')](_0x999655['model'],qs['fields'](_0x169e9f[_0xc6bc('0x2f')][_0xc6bc('0x32')]));_0x24269d['attributes']=_0x24269d['attributes'][_0xc6bc('0x33')]?_0x24269d[_0xc6bc('0x31')]:_0x999655['model'];_0x24269d[_0xc6bc('0x36')]=qs[_0xc6bc('0x37')](_0x169e9f[_0xc6bc('0x2f')]['sort']);_0x24269d[_0xc6bc('0x38')]=qs['filters'](_[_0xc6bc('0x3a')](_0x169e9f['query'],_0x999655[_0xc6bc('0x39')]));if(_0x169e9f[_0xc6bc('0x2f')]['filter']){_0x24269d[_0xc6bc('0x38')]=_['merge'](_0x24269d[_0xc6bc('0x38')],{'$or':_[_0xc6bc('0x3c')](_0x24269d[_0xc6bc('0x31')],function(_0x3eefb7){var _0x2bd3e7={};_0x2bd3e7[_0x3eefb7]={'$like':'%'+_0x169e9f[_0xc6bc('0x2f')]['filter']+'%'};return _0x2bd3e7;})});}_0x24269d=_['merge']({},_0x24269d,_0x169e9f[_0xc6bc('0x43')]);return _0x49dbbe[_0xc6bc('0x50')](_0x24269d);}})['then'](function(_0x4bf3ef){if(_0x4bf3ef){_0x2baca7=_0x4bf3ef['length'];if(!_0x169e9f[_0xc6bc('0x2f')][_0xc6bc('0x34')](_0xc6bc('0x35'))){_0x24269d[_0xc6bc('0x1b')]=qs[_0xc6bc('0x1b')](_0x169e9f[_0xc6bc('0x2f')][_0xc6bc('0x1b')]);_0x24269d[_0xc6bc('0x19')]=qs[_0xc6bc('0x19')](_0x169e9f[_0xc6bc('0x2f')][_0xc6bc('0x19')]);}return _0x49dbbe['getContacts'](_0x24269d);}})[_0xc6bc('0x22')](function(_0x1fb706){if(_0x1fb706){return _0x1fb706?{'count':_0x2baca7,'rows':_0x1fb706}:null;}})['then'](respondWithResult(_0x4b849a,null))[_0xc6bc('0x41')](handleError(_0x4b849a,null));};
\ No newline at end of file
+var _0x8fec=['Companies','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','ids','getContacts','findOne','CmContact','pick','map','hasOwnProperty','eml-format','rimraf','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','json','apply','reject','save','update','then','destroy','get','end','error','stack','name','index','CmCompany','model','keys','query','intersection','attributes','fields','length','nolimit','order','sort','filters','where','merge','filter','includeAll','findAll','catch','params','rawAttributes','include','find','create','body','user','role'];(function(_0x57ac07,_0x4e5541){var _0x1b2146=function(_0x2390f5){while(--_0x2390f5){_0x57ac07['push'](_0x57ac07['shift']());}};_0x1b2146(++_0x4e5541);}(_0x8fec,0x1ad));var _0xc8fe=function(_0x28cc50,_0x229fce){_0x28cc50=_0x28cc50-0x0;var _0x42a1a3=_0x8fec[_0x28cc50];return _0x42a1a3;};'use strict';var emlformat=require(_0xc8fe('0x0'));var rimraf=require(_0xc8fe('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xc8fe('0x2'));var moment=require(_0xc8fe('0x3'));var BPromise=require(_0xc8fe('0x4'));var Mustache=require('mustache');var util=require(_0xc8fe('0x5'));var path=require('path');var sox=require(_0xc8fe('0x6'));var csv=require(_0xc8fe('0x7'));var ejs=require(_0xc8fe('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc8fe('0x9'));var squel=require(_0xc8fe('0xa'));var crypto=require('crypto');var jsforce=require(_0xc8fe('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc8fe('0xc'));var Papa=require(_0xc8fe('0xd'));var Redis=require('ioredis');var authService=require(_0xc8fe('0xe'));var qs=require(_0xc8fe('0xf'));var as=require(_0xc8fe('0x10'));var hardwareService=require(_0xc8fe('0x11'));var logger=require(_0xc8fe('0x12'))(_0xc8fe('0x13'));var utils=require(_0xc8fe('0x14'));var config=require(_0xc8fe('0x15'));var licenseUtil=require(_0xc8fe('0x16'));var db=require(_0xc8fe('0x17'))['db'];function respondWithStatusCode(_0x1ed09d,_0x35656d){_0x35656d=_0x35656d||0xcc;return function(_0x192d82){if(_0x192d82){return _0x1ed09d[_0xc8fe('0x18')](_0x35656d);}return _0x1ed09d[_0xc8fe('0x19')](_0x35656d)['end']();};}function respondWithResult(_0x436fd6,_0x3fca4a){_0x3fca4a=_0x3fca4a||0xc8;return function(_0x4895d0){if(_0x4895d0){return _0x436fd6[_0xc8fe('0x19')](_0x3fca4a)['json'](_0x4895d0);}};}function respondWithFilteredResult(_0x12280d,_0x1c5131){return function(_0x34e5c3){if(_0x34e5c3){var _0x1a06ba=typeof _0x1c5131[_0xc8fe('0x1a')]===_0xc8fe('0x1b')&&typeof _0x1c5131[_0xc8fe('0x1c')]===_0xc8fe('0x1b');var _0x1815f3=_0x34e5c3[_0xc8fe('0x1d')];var _0x11eaca=_0x1a06ba?0x0:_0x1c5131[_0xc8fe('0x1a')];var _0x164002=_0x1a06ba?_0x34e5c3[_0xc8fe('0x1d')]:_0x1c5131[_0xc8fe('0x1a')]+_0x1c5131[_0xc8fe('0x1c')];var _0x45dbf7;if(_0x164002>=_0x1815f3){_0x164002=_0x1815f3;_0x45dbf7=0xc8;}else{_0x45dbf7=0xce;}_0x12280d[_0xc8fe('0x19')](_0x45dbf7);return _0x12280d['set']('Content-Range',_0x11eaca+'-'+_0x164002+'/'+_0x1815f3)[_0xc8fe('0x1e')](_0x34e5c3);}return null;};}function patchUpdates(_0x15d416){return function(_0x3a61b8){try{jsonpatch[_0xc8fe('0x1f')](_0x3a61b8,_0x15d416,!![]);}catch(_0x247414){return BPromise[_0xc8fe('0x20')](_0x247414);}return _0x3a61b8[_0xc8fe('0x21')]();};}function saveUpdates(_0x2cf0d3,_0x457280){return function(_0x401f8c){if(_0x401f8c){return _0x401f8c[_0xc8fe('0x22')](_0x2cf0d3)[_0xc8fe('0x23')](function(_0x546f27){return _0x546f27;});}return null;};}function removeEntity(_0x3087c9,_0x5f3f0a){return function(_0x13481c){if(_0x13481c){return _0x13481c[_0xc8fe('0x24')]()['then'](function(){var _0x41742b=_0x13481c[_0xc8fe('0x25')]({'plain':!![]});var _0x491504='Companies';return db['UserProfileResource']['destroy']({'where':{'type':_0x491504,'resourceId':_0x41742b['id']}})['then'](function(){return _0x13481c;});})[_0xc8fe('0x23')](function(){_0x3087c9[_0xc8fe('0x19')](0xcc)[_0xc8fe('0x26')]();});}};}function handleEntityNotFound(_0x5d7304,_0x2d1212){return function(_0x3b811f){if(!_0x3b811f){_0x5d7304['sendStatus'](0x194);}return _0x3b811f;};}function handleError(_0x25477c,_0x145828){_0x145828=_0x145828||0x1f4;return function(_0xea7c91){logger[_0xc8fe('0x27')](_0xea7c91[_0xc8fe('0x28')]);if(_0xea7c91[_0xc8fe('0x29')]){delete _0xea7c91['name'];}_0x25477c[_0xc8fe('0x19')](_0x145828)['send'](_0xea7c91);};}exports[_0xc8fe('0x2a')]=function(_0x52c37f,_0x19f84c){var _0x2b3ca4={},_0x29aa70={},_0x468f4a={'count':0x0,'rows':[]};return db[_0xc8fe('0x2b')]['describe']()['then'](function(_0x51de75){_0x29aa70[_0xc8fe('0x2c')]=_[_0xc8fe('0x2d')](_0x51de75);_0x29aa70[_0xc8fe('0x2e')]=_['keys'](_0x52c37f['query']);_0x29aa70['filters']=_[_0xc8fe('0x2f')](_0x29aa70[_0xc8fe('0x2c')],_0x29aa70[_0xc8fe('0x2e')]);_0x2b3ca4[_0xc8fe('0x30')]=_[_0xc8fe('0x2f')](_0x29aa70['model'],qs[_0xc8fe('0x31')](_0x52c37f['query']['fields']));_0x2b3ca4['attributes']=_0x2b3ca4[_0xc8fe('0x30')][_0xc8fe('0x32')]?_0x2b3ca4[_0xc8fe('0x30')]:_0x29aa70[_0xc8fe('0x2c')];if(!_0x52c37f[_0xc8fe('0x2e')]['hasOwnProperty'](_0xc8fe('0x33'))){_0x2b3ca4[_0xc8fe('0x1c')]=qs[_0xc8fe('0x1c')](_0x52c37f[_0xc8fe('0x2e')][_0xc8fe('0x1c')]);_0x2b3ca4[_0xc8fe('0x1a')]=qs['offset'](_0x52c37f[_0xc8fe('0x2e')][_0xc8fe('0x1a')]);}_0x2b3ca4[_0xc8fe('0x34')]=qs[_0xc8fe('0x35')](_0x52c37f[_0xc8fe('0x2e')][_0xc8fe('0x35')]);_0x2b3ca4['where']=qs[_0xc8fe('0x36')](_['pick'](_0x52c37f[_0xc8fe('0x2e')],_0x29aa70[_0xc8fe('0x36')]),_0x51de75);if(_0x52c37f[_0xc8fe('0x2e')]['filter']){_0x2b3ca4[_0xc8fe('0x37')]=_[_0xc8fe('0x38')](_0x2b3ca4['where'],{'$or':_['map'](_0x2b3ca4['attributes'],function(_0x3858c7){var _0x47e03d={};_0x47e03d[_0x3858c7]={'$like':'%'+_0x52c37f[_0xc8fe('0x2e')][_0xc8fe('0x39')]+'%'};return _0x47e03d;})});}_0x2b3ca4=_[_0xc8fe('0x38')]({},_0x2b3ca4,_0x52c37f['options']);var _0x367ab6={'where':_0x2b3ca4[_0xc8fe('0x37')]};return db['CmCompany'][_0xc8fe('0x1d')](_0x367ab6)[_0xc8fe('0x23')](function(_0x2fc3b1){_0x468f4a['count']=_0x2fc3b1;if(_0x52c37f[_0xc8fe('0x2e')][_0xc8fe('0x3a')]){_0x2b3ca4['include']=[{'all':!![]}];}return db['CmCompany'][_0xc8fe('0x3b')](_0x2b3ca4);})[_0xc8fe('0x23')](function(_0x1bc6a2){_0x468f4a['rows']=_0x1bc6a2;return _0x468f4a;})[_0xc8fe('0x23')](respondWithFilteredResult(_0x19f84c,_0x2b3ca4))[_0xc8fe('0x3c')](handleError(_0x19f84c,null));})['catch'](handleError(_0x19f84c,null));};exports['show']=function(_0x330215,_0x338399){var _0x4119bf={'raw':![],'where':{'id':_0x330215[_0xc8fe('0x3d')]['id']}},_0x161dea={};_0x161dea[_0xc8fe('0x2c')]=_['keys'](db['CmCompany'][_0xc8fe('0x3e')]);_0x161dea[_0xc8fe('0x2e')]=_['keys'](_0x330215[_0xc8fe('0x2e')]);_0x161dea[_0xc8fe('0x36')]=_['intersection'](_0x161dea['model'],_0x161dea[_0xc8fe('0x2e')]);_0x4119bf[_0xc8fe('0x30')]=_[_0xc8fe('0x2f')](_0x161dea[_0xc8fe('0x2c')],qs[_0xc8fe('0x31')](_0x330215[_0xc8fe('0x2e')][_0xc8fe('0x31')]));_0x4119bf[_0xc8fe('0x30')]=_0x4119bf[_0xc8fe('0x30')][_0xc8fe('0x32')]?_0x4119bf[_0xc8fe('0x30')]:_0x161dea[_0xc8fe('0x2c')];if(_0x330215[_0xc8fe('0x2e')][_0xc8fe('0x3a')]){_0x4119bf[_0xc8fe('0x3f')]=[{'all':!![]}];}_0x4119bf=_[_0xc8fe('0x38')]({},_0x4119bf,_0x330215['options']);return db[_0xc8fe('0x2b')][_0xc8fe('0x40')](_0x4119bf)[_0xc8fe('0x23')](handleEntityNotFound(_0x338399,null))['then'](respondWithResult(_0x338399,null))[_0xc8fe('0x3c')](handleError(_0x338399,null));};exports[_0xc8fe('0x41')]=function(_0x44b1bf,_0x442668){return db['CmCompany']['create'](_0x44b1bf[_0xc8fe('0x42')],{})[_0xc8fe('0x23')](function(_0x389464){var _0x4d1cf3=_0x44b1bf[_0xc8fe('0x43')][_0xc8fe('0x25')]({'plain':!![]});if(!_0x4d1cf3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4d1cf3[_0xc8fe('0x44')]==='user'){var _0x4ec143=_0x389464[_0xc8fe('0x25')]({'plain':!![]});var _0x31d290=_0xc8fe('0x45');return db[_0xc8fe('0x46')][_0xc8fe('0x40')]({'where':{'name':_0x31d290,'userProfileId':_0x4d1cf3[_0xc8fe('0x47')]},'raw':!![]})[_0xc8fe('0x23')](function(_0x1a86bc){if(_0x1a86bc&&_0x1a86bc[_0xc8fe('0x48')]===0x0){return db[_0xc8fe('0x49')][_0xc8fe('0x41')]({'name':_0x4ec143[_0xc8fe('0x29')],'resourceId':_0x4ec143['id'],'type':_0x1a86bc['name'],'sectionId':_0x1a86bc['id']},{})[_0xc8fe('0x23')](function(){return _0x389464;});}else{return _0x389464;}})[_0xc8fe('0x3c')](function(_0x1251ab){logger['error'](_0xc8fe('0x4a'),_0x1251ab);throw _0x1251ab;});}return _0x389464;})[_0xc8fe('0x23')](respondWithResult(_0x442668,0xc9))['catch'](handleError(_0x442668,null));};exports[_0xc8fe('0x22')]=function(_0x4e86a2,_0x892536){if(_0x4e86a2[_0xc8fe('0x42')]['id']){delete _0x4e86a2[_0xc8fe('0x42')]['id'];}return db[_0xc8fe('0x2b')][_0xc8fe('0x40')]({'where':{'id':_0x4e86a2[_0xc8fe('0x3d')]['id']}})[_0xc8fe('0x23')](handleEntityNotFound(_0x892536,null))[_0xc8fe('0x23')](saveUpdates(_0x4e86a2['body'],null))['then'](respondWithResult(_0x892536,null))['catch'](handleError(_0x892536,null));};exports['destroy']=function(_0x3670f0,_0x4446e1){return db[_0xc8fe('0x2b')][_0xc8fe('0x40')]({'where':{'id':_0x3670f0['params']['id']}})[_0xc8fe('0x23')](handleEntityNotFound(_0x4446e1,null))[_0xc8fe('0x23')](removeEntity(_0x4446e1,null))[_0xc8fe('0x3c')](handleError(_0x4446e1,null));};exports['describe']=function(_0x28fe53,_0xbd3919){return db[_0xc8fe('0x2b')]['describe']()[_0xc8fe('0x23')](respondWithResult(_0xbd3919,null))[_0xc8fe('0x3c')](handleError(_0xbd3919,null));};exports[_0xc8fe('0x4b')]=function(_0x1de9ca,_0x339c34,_0x197801){return db['CmContact'][_0xc8fe('0x40')]({'where':{'id':_0x1de9ca[_0xc8fe('0x3d')]['id']}})[_0xc8fe('0x23')](handleEntityNotFound(_0x339c34,null))['then'](function(_0x55d771){if(_0x55d771){return _0x55d771[_0xc8fe('0x4b')](_0x1de9ca[_0xc8fe('0x42')][_0xc8fe('0x4c')],_['omit'](_0x1de9ca[_0xc8fe('0x42')],[_0xc8fe('0x4c'),'id'])||{});}})[_0xc8fe('0x23')](respondWithResult(_0x339c34,null))[_0xc8fe('0x3c')](handleError(_0x339c34,null));};exports[_0xc8fe('0x4d')]=function(_0x548379,_0x32c473,_0x329386){var _0x3cd92c={};var _0x517432={};var _0x1dae69;var _0x13a1cd;return db[_0xc8fe('0x2b')][_0xc8fe('0x4e')]({'where':{'id':_0x548379['params']['id']}})[_0xc8fe('0x23')](handleEntityNotFound(_0x32c473,null))[_0xc8fe('0x23')](function(_0x512133){if(_0x512133){_0x1dae69=_0x512133;_0x517432['model']=_['keys'](db[_0xc8fe('0x4f')]['rawAttributes']);_0x517432[_0xc8fe('0x2e')]=_[_0xc8fe('0x2d')](_0x548379[_0xc8fe('0x2e')]);_0x517432[_0xc8fe('0x36')]=_['intersection'](_0x517432['model'],_0x517432[_0xc8fe('0x2e')]);_0x3cd92c[_0xc8fe('0x30')]=_['intersection'](_0x517432['model'],qs['fields'](_0x548379[_0xc8fe('0x2e')][_0xc8fe('0x31')]));_0x3cd92c[_0xc8fe('0x30')]=_0x3cd92c['attributes'][_0xc8fe('0x32')]?_0x3cd92c[_0xc8fe('0x30')]:_0x517432[_0xc8fe('0x2c')];_0x3cd92c[_0xc8fe('0x34')]=qs[_0xc8fe('0x35')](_0x548379[_0xc8fe('0x2e')][_0xc8fe('0x35')]);_0x3cd92c[_0xc8fe('0x37')]=qs[_0xc8fe('0x36')](_[_0xc8fe('0x50')](_0x548379[_0xc8fe('0x2e')],_0x517432[_0xc8fe('0x36')]));if(_0x548379[_0xc8fe('0x2e')][_0xc8fe('0x39')]){_0x3cd92c['where']=_[_0xc8fe('0x38')](_0x3cd92c['where'],{'$or':_[_0xc8fe('0x51')](_0x3cd92c[_0xc8fe('0x30')],function(_0x462510){var _0x2a3fdc={};_0x2a3fdc[_0x462510]={'$like':'%'+_0x548379['query'][_0xc8fe('0x39')]+'%'};return _0x2a3fdc;})});}_0x3cd92c=_['merge']({},_0x3cd92c,_0x548379['options']);return _0x1dae69[_0xc8fe('0x4d')](_0x3cd92c);}})[_0xc8fe('0x23')](function(_0x4361a5){if(_0x4361a5){_0x13a1cd=_0x4361a5[_0xc8fe('0x32')];if(!_0x548379[_0xc8fe('0x2e')][_0xc8fe('0x52')]('nolimit')){_0x3cd92c[_0xc8fe('0x1c')]=qs['limit'](_0x548379[_0xc8fe('0x2e')][_0xc8fe('0x1c')]);_0x3cd92c[_0xc8fe('0x1a')]=qs['offset'](_0x548379[_0xc8fe('0x2e')]['offset']);}return _0x1dae69[_0xc8fe('0x4d')](_0x3cd92c);}})[_0xc8fe('0x23')](function(_0x10cc8f){if(_0x10cc8f){return _0x10cc8f?{'count':_0x13a1cd,'rows':_0x10cc8f}:null;}})[_0xc8fe('0x23')](respondWithResult(_0x32c473,null))[_0xc8fe('0x3c')](handleError(_0x32c473,null));};
\ No newline at end of file
index 67b05cc..015f3ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x751f=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','lodash','util','../../config/logger','api'];(function(_0x3d0669,_0x5133fa){var _0x1a512b=function(_0x459f03){while(--_0x459f03){_0x3d0669['push'](_0x3d0669['shift']());}};_0x1a512b(++_0x5133fa);}(_0x751f,0x10f));var _0xf751=function(_0xfd5785,_0x10b302){_0xfd5785=_0xfd5785-0x0;var _0xeeeee3=_0x751f[_0xfd5785];return _0xeeeee3;};'use strict';var _=require(_0xf751('0x0'));var util=require(_0xf751('0x1'));var logger=require(_0xf751('0x2'))(_0xf751('0x3'));var moment=require(_0xf751('0x4'));var BPromise=require(_0xf751('0x5'));var rp=require(_0xf751('0x6'));var fs=require('fs');var path=require(_0xf751('0x7'));var rimraf=require(_0xf751('0x8'));var config=require(_0xf751('0x9'));var attributes=require('./cmCompany.attributes');module[_0xf751('0xa')]=function(_0x5835ac,_0x549133){return _0x5835ac['define']('CmCompany',attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d0b=['../../config/environment','./cmCompany.attributes','exports','define','CmCompany','cm_companies','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0xa05b05,_0x2653cc){var _0x43544c=function(_0x1437d0){while(--_0x1437d0){_0xa05b05['push'](_0xa05b05['shift']());}};_0x43544c(++_0x2653cc);}(_0x3d0b,0xae));var _0xb3d0=function(_0x4ac31f,_0x3bf843){_0x4ac31f=_0x4ac31f-0x0;var _0x1f1926=_0x3d0b[_0x4ac31f];return _0x1f1926;};'use strict';var _=require(_0xb3d0('0x0'));var util=require(_0xb3d0('0x1'));var logger=require(_0xb3d0('0x2'))('api');var moment=require(_0xb3d0('0x3'));var BPromise=require(_0xb3d0('0x4'));var rp=require(_0xb3d0('0x5'));var fs=require('fs');var path=require(_0xb3d0('0x6'));var rimraf=require(_0xb3d0('0x7'));var config=require(_0xb3d0('0x8'));var attributes=require(_0xb3d0('0x9'));module[_0xb3d0('0xa')]=function(_0x5a01be,_0x29579b){return _0x5a01be[_0xb3d0('0xb')](_0xb3d0('0xc'),attributes,{'tableName':_0xb3d0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6cc5b32..3e4263c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa575=['error','CmCompany,\x20%s,\x20%s','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3e9930,_0x55b2f4){var _0x206ccb=function(_0x5634ec){while(--_0x5634ec){_0x3e9930['push'](_0x3e9930['shift']());}};_0x206ccb(++_0x55b2f4);}(_0xa575,0x1d2));var _0x5a57=function(_0x278345,_0x510277){_0x278345=_0x278345-0x0;var _0x4ddf36=_0xa575[_0x278345];return _0x4ddf36;};'use strict';var _=require(_0x5a57('0x0'));var util=require('util');var moment=require(_0x5a57('0x1'));var BPromise=require(_0x5a57('0x2'));var rs=require(_0x5a57('0x3'));var fs=require('fs');var Redis=require(_0x5a57('0x4'));var db=require(_0x5a57('0x5'))['db'];var utils=require(_0x5a57('0x6'));var logger=require(_0x5a57('0x7'))('rpc');var config=require(_0x5a57('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x5a57('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x23e31c,_0x4b6952,_0x52d267){return new BPromise(function(_0x403521,_0x16097e){return client[_0x5a57('0xa')](_0x23e31c,_0x52d267)[_0x5a57('0xb')](function(_0x5158d4){logger[_0x5a57('0xc')]('CmCompany,\x20%s,\x20%s',_0x4b6952,_0x5a57('0xd'));logger[_0x5a57('0xe')](_0x5a57('0xf'),_0x4b6952,'request\x20sent',JSON[_0x5a57('0x10')](_0x5158d4));if(_0x5158d4[_0x5a57('0x11')]){if(_0x5158d4[_0x5a57('0x11')]['code']===0x1f4){logger[_0x5a57('0x11')](_0x5a57('0x12'),_0x4b6952,_0x5158d4[_0x5a57('0x11')][_0x5a57('0x13')]);return _0x16097e(_0x5158d4['error']['message']);}logger[_0x5a57('0x11')]('CmCompany,\x20%s,\x20%s',_0x4b6952,_0x5158d4[_0x5a57('0x11')][_0x5a57('0x13')]);return _0x403521(_0x5158d4[_0x5a57('0x11')]['message']);}else{logger['info'](_0x5a57('0x12'),_0x4b6952,_0x5a57('0xd'));_0x403521(_0x5158d4[_0x5a57('0x14')][_0x5a57('0x13')]);}})['catch'](function(_0x59ff16){logger[_0x5a57('0x11')](_0x5a57('0x12'),_0x4b6952,_0x59ff16);_0x16097e(_0x59ff16);});});}
\ No newline at end of file
+var _0xdcd3=['../../config/environment','jayson/promise','client','http','request','then','info','CmCompany,\x20%s,\x20%s','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x588169,_0x1c74b7){var _0x3a1877=function(_0x1f05f6){while(--_0x1f05f6){_0x588169['push'](_0x588169['shift']());}};_0x3a1877(++_0x1c74b7);}(_0xdcd3,0xe0));var _0x3dcd=function(_0xdb2ca5,_0x2d8f76){_0xdb2ca5=_0xdb2ca5-0x0;var _0x5e4a0a=_0xdcd3[_0xdb2ca5];return _0x5e4a0a;};'use strict';var _=require(_0x3dcd('0x0'));var util=require(_0x3dcd('0x1'));var moment=require(_0x3dcd('0x2'));var BPromise=require(_0x3dcd('0x3'));var rs=require(_0x3dcd('0x4'));var fs=require('fs');var Redis=require(_0x3dcd('0x5'));var db=require(_0x3dcd('0x6'))['db'];var utils=require(_0x3dcd('0x7'));var logger=require(_0x3dcd('0x8'))(_0x3dcd('0x9'));var config=require(_0x3dcd('0xa'));var jayson=require(_0x3dcd('0xb'));var client=jayson[_0x3dcd('0xc')][_0x3dcd('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x26a7ad,_0x599ba7,_0x63d55){return new BPromise(function(_0x10c0ca,_0x1b04a4){return client[_0x3dcd('0xe')](_0x26a7ad,_0x63d55)[_0x3dcd('0xf')](function(_0x2ca9db){logger[_0x3dcd('0x10')](_0x3dcd('0x11'),_0x599ba7,'request\x20sent');logger[_0x3dcd('0x12')](_0x3dcd('0x13'),_0x599ba7,'request\x20sent',JSON[_0x3dcd('0x14')](_0x2ca9db));if(_0x2ca9db[_0x3dcd('0x15')]){if(_0x2ca9db[_0x3dcd('0x15')]['code']===0x1f4){logger[_0x3dcd('0x15')](_0x3dcd('0x11'),_0x599ba7,_0x2ca9db[_0x3dcd('0x15')][_0x3dcd('0x16')]);return _0x1b04a4(_0x2ca9db[_0x3dcd('0x15')][_0x3dcd('0x16')]);}logger[_0x3dcd('0x15')](_0x3dcd('0x11'),_0x599ba7,_0x2ca9db[_0x3dcd('0x15')][_0x3dcd('0x16')]);return _0x10c0ca(_0x2ca9db[_0x3dcd('0x15')]['message']);}else{logger[_0x3dcd('0x10')](_0x3dcd('0x11'),_0x599ba7,_0x3dcd('0x17'));_0x10c0ca(_0x2ca9db[_0x3dcd('0x18')][_0x3dcd('0x16')]);}})[_0x3dcd('0x19')](function(_0x33a140){logger[_0x3dcd('0x15')]('CmCompany,\x20%s,\x20%s',_0x599ba7,_0x33a140);_0x1b04a4(_0x33a140);});});}
\ No newline at end of file
index d69adaf..a23df4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd54f=['connect-timeout','Router','../../components/auth/service','../../config/environment','./cmCompany.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/contacts','post','create','addContacts','put','update','destroy','exports','multer','util','path'];(function(_0x5892f2,_0x53e53b){var _0x22f986=function(_0x242b53){while(--_0x242b53){_0x5892f2['push'](_0x5892f2['shift']());}};_0x22f986(++_0x53e53b);}(_0xd54f,0x6b));var _0xfd54=function(_0x55036a,_0x1e43dc){_0x55036a=_0x55036a-0x0;var _0x2ebe00=_0xd54f[_0x55036a];return _0x2ebe00;};'use strict';var multer=require(_0xfd54('0x0'));var util=require(_0xfd54('0x1'));var path=require(_0xfd54('0x2'));var timeout=require(_0xfd54('0x3'));var express=require('express');var router=express[_0xfd54('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xfd54('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xfd54('0x6'));var controller=require(_0xfd54('0x7'));router['get']('/',auth[_0xfd54('0x8')](),controller['index']);router[_0xfd54('0x9')](_0xfd54('0xa'),auth['isAuthenticated'](),controller[_0xfd54('0xb')]);router['get'](_0xfd54('0xc'),auth[_0xfd54('0x8')](),controller[_0xfd54('0xd')]);router[_0xfd54('0x9')](_0xfd54('0xe'),auth['isAuthenticated'](),controller['getContacts']);router[_0xfd54('0xf')]('/',auth[_0xfd54('0x8')](),controller[_0xfd54('0x10')]);router[_0xfd54('0xf')]('/:id/contacts',auth[_0xfd54('0x8')](),controller[_0xfd54('0x11')]);router[_0xfd54('0x12')](_0xfd54('0xc'),auth[_0xfd54('0x8')](),controller[_0xfd54('0x13')]);router['delete'](_0xfd54('0xc'),auth['isAuthenticated'](),controller[_0xfd54('0x14')]);module[_0xfd54('0x15')]=router;
\ No newline at end of file
+var _0xe649=['destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./cmCompany.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/contacts','getContacts','addContacts','update','delete'];(function(_0x37515e,_0x341549){var _0x19ad90=function(_0x4a7f93){while(--_0x4a7f93){_0x37515e['push'](_0x37515e['shift']());}};_0x19ad90(++_0x341549);}(_0xe649,0x17e));var _0x9e64=function(_0x2b740e,_0x207d5d){_0x2b740e=_0x2b740e-0x0;var _0x315a39=_0xe649[_0x2b740e];return _0x315a39;};'use strict';var multer=require(_0x9e64('0x0'));var util=require('util');var path=require(_0x9e64('0x1'));var timeout=require(_0x9e64('0x2'));var express=require(_0x9e64('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9e64('0x4'));var interaction=require(_0x9e64('0x5'));var config=require('../../config/environment');var controller=require(_0x9e64('0x6'));router[_0x9e64('0x7')]('/',auth[_0x9e64('0x8')](),controller[_0x9e64('0x9')]);router['get'](_0x9e64('0xa'),auth[_0x9e64('0x8')](),controller['describe']);router[_0x9e64('0x7')](_0x9e64('0xb'),auth[_0x9e64('0x8')](),controller[_0x9e64('0xc')]);router[_0x9e64('0x7')](_0x9e64('0xd'),auth[_0x9e64('0x8')](),controller[_0x9e64('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/contacts',auth['isAuthenticated'](),controller[_0x9e64('0xf')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x9e64('0x10')]);router[_0x9e64('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x9e64('0x12')]);module[_0x9e64('0x13')]=router;
\ No newline at end of file
index 0b0f1d8..fe5e3df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87f0=['INTEGER','UNSIGNED','NOW','sequelize','exports','STRING','TEXT'];(function(_0x2867d8,_0xef3ee0){var _0x3b8176=function(_0x2b9eb8){while(--_0x2b9eb8){_0x2867d8['push'](_0x2867d8['shift']());}};_0x3b8176(++_0xef3ee0);}(_0x87f0,0x184));var _0x087f=function(_0xb31024,_0xf7095){_0xb31024=_0xb31024-0x0;var _0x4401ef=_0x87f0[_0xb31024];return _0x4401ef;};'use strict';var _=require('lodash');var Sequelize=require(_0x087f('0x0'));module[_0x087f('0x1')]={'firstName':{'type':Sequelize[_0x087f('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x087f('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x087f('0x2')]},'city':{'type':Sequelize[_0x087f('0x2')]},'country':{'type':Sequelize[_0x087f('0x2')]},'dateOfBirth':{'type':Sequelize[_0x087f('0x2')]},'description':{'type':Sequelize[_0x087f('0x3')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x087f('0x2')]},'email':{'type':Sequelize[_0x087f('0x2')]},'url':{'type':Sequelize[_0x087f('0x2')]},'facebook':{'type':Sequelize[_0x087f('0x2')]},'fb_data':{'type':Sequelize['STRING']},'twitter':{'type':Sequelize[_0x087f('0x2')]},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0x087f('0x2')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0x087f('0x2')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize[_0x087f('0x4')]},'priority':{'type':Sequelize[_0x087f('0x4')](0x2)[_0x087f('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0x087f('0x6')]}};
\ No newline at end of file
+var _0xef93=['INTEGER','UNSIGNED','DATE','NOW','lodash','sequelize','exports','STRING'];(function(_0x2f0975,_0x236c98){var _0x5e4998=function(_0x45eea7){while(--_0x45eea7){_0x2f0975['push'](_0x2f0975['shift']());}};_0x5e4998(++_0x236c98);}(_0xef93,0xe4));var _0x3ef9=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xef93[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x3ef9('0x0'));var Sequelize=require(_0x3ef9('0x1'));module[_0x3ef9('0x2')]={'firstName':{'type':Sequelize[_0x3ef9('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x3ef9('0x3')]},'street':{'type':Sequelize[_0x3ef9('0x3')]},'postalCode':{'type':Sequelize[_0x3ef9('0x3')]},'city':{'type':Sequelize[_0x3ef9('0x3')]},'country':{'type':Sequelize[_0x3ef9('0x3')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x3ef9('0x3')]},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0x3ef9('0x3')]},'facebook':{'type':Sequelize[_0x3ef9('0x3')]},'fb_data':{'type':Sequelize['STRING']},'twitter':{'type':Sequelize[_0x3ef9('0x3')]},'skype':{'type':Sequelize[_0x3ef9('0x3')]},'teams':{'type':Sequelize[_0x3ef9('0x3')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0x3ef9('0x3')]},'wechat':{'type':Sequelize[_0x3ef9('0x3')]},'telegram':{'type':Sequelize[_0x3ef9('0x3')]},'UserId':{'type':Sequelize[_0x3ef9('0x4')]},'priority':{'type':Sequelize[_0x3ef9('0x4')](0x2)[_0x3ef9('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x3ef9('0x6')],'defaultValue':Sequelize[_0x3ef9('0x7')]}};
\ No newline at end of file
index 9aef8fb..d1d7347 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8296=['c.mobile','c.fax','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','destroy','params','tags','startsWith','columnName','alias','values','merge','body','findAll','get','mergeWith','join','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','info','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatMessage','MailInteraction','MailMessage','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','each','duplicates','$or','findOrCreate','spread','show','omit','format','cf_%d','$and','pickBy','table','setFields','id\x20=\x20?','phone','getTags','rawAttributes','intersection','options','setTags','ids','getHoppers','ContactId','include','getHopperFinals','includeAll','getJscriptySessions','No\x20ListId\x20specified','No\x20association\x20keys\x20specified!','No\x20association\x20values\x20specified!','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','No\x20phone\x20column\x20specified','No\x20firstName\x20column\x20specified','root','server/files/tmp','filename','chmodSync','0777','child_process','fork','binding_keys','binding_values','CompanyId','pid','upload','createReadStream','parse','file','meta','binding','firstName','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','getJourney','mail','chat','sms','fax','whatsapp','voice','-createdAt','channel','includes','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','source','destination','callerid','starttime','endtime','duration','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','findAndCountAll','fullname','startCase','Website','Account','closed','closedAt','note','secondDisposition','key','Owner','DESC','browserName','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','subject','substatus','openchannel','externalUrl','threadId','Interaction','flatten','sortBy','slice','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./cmContact.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','CmContact','describe','keys','length','cf_','push','CmCustomField','findOne','trimStart','all','model','query','fields','attributes','nolimit','order','sort','where','filters','pick','select','field','color','from','cm_contacts','left_join','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','sqlOperator','conditions','find','Tag','split','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','uc.UserId\x20=\x20?','dateOfBirth','fieldType','datetime','castTo','DATE','buildExpression','type','text','value','map','hasOwnProperty','isNil','Contact','isEmpty','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','tag','isArray','filter','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.firstName\x20LIKE\x20?','c.email\x20LIKE\x20?','c.id','QueryTypes','SELECT','clone','having','t.id\x20IN\x20?','resolve','user','role','agent','some','User','getLists','c.ListId\x20IS\x20NULL','ListId','sequelize','toString','keyBy','c.firstName','c.lastName','c.phone'];(function(_0x521929,_0x479be5){var _0x632436=function(_0x288290){while(--_0x288290){_0x521929['push'](_0x521929['shift']());}};_0x632436(++_0x479be5);}(_0x8296,0xa0));var _0x6829=function(_0x1f8778,_0x32cf44){_0x1f8778=_0x1f8778-0x0;var _0x2e528f=_0x8296[_0x1f8778];return _0x2e528f;};'use strict';var emlformat=require(_0x6829('0x0'));var rimraf=require(_0x6829('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6829('0x2'));var rp=require(_0x6829('0x3'));var moment=require(_0x6829('0x4'));var BPromise=require(_0x6829('0x5'));var Mustache=require('mustache');var util=require(_0x6829('0x6'));var path=require(_0x6829('0x7'));var sox=require(_0x6829('0x8'));var csv=require('to-csv');var ejs=require(_0x6829('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6829('0xa'));var squel=require(_0x6829('0xb'));var crypto=require(_0x6829('0xc'));var jsforce=require(_0x6829('0xd'));var deskjs=require(_0x6829('0xe'));var toCsv=require(_0x6829('0xf'));var querystring=require(_0x6829('0x10'));var Papa=require('papaparse');var Redis=require(_0x6829('0x11'));var authService=require(_0x6829('0x12'));var qs=require(_0x6829('0x13'));var as=require(_0x6829('0x14'));var hardwareService=require(_0x6829('0x15'));var logger=require(_0x6829('0x16'))(_0x6829('0x17'));var utils=require(_0x6829('0x18'));var config=require(_0x6829('0x19'));var licenseUtil=require(_0x6829('0x1a'));var db=require(_0x6829('0x1b'))['db'];config['redis']=_[_0x6829('0x1c')](config[_0x6829('0x1d')],{'host':_0x6829('0x1e'),'port':0x18eb});var socket=require(_0x6829('0x1f'))(new Redis(config[_0x6829('0x1d')]));require(_0x6829('0x20'))['register'](socket);function respondWithStatusCode(_0x3880af,_0xe06a28){_0xe06a28=_0xe06a28||0xcc;return function(_0x5cad56){if(_0x5cad56){return _0x3880af[_0x6829('0x21')](_0xe06a28);}return _0x3880af[_0x6829('0x22')](_0xe06a28)[_0x6829('0x23')]();};}function respondWithResult(_0x2fd325,_0x460e8a){_0x460e8a=_0x460e8a||0xc8;return function(_0x4615ca){if(_0x4615ca){return _0x2fd325[_0x6829('0x22')](_0x460e8a)[_0x6829('0x24')](_0x4615ca);}};}function respondWithFilteredResult(_0x106b7f,_0x53867c){return function(_0x2e385f){if(_0x2e385f){var _0x5b5ee8=typeof _0x53867c[_0x6829('0x25')]===_0x6829('0x26')&&typeof _0x53867c[_0x6829('0x27')]==='undefined';var _0xd5d0=_0x2e385f[_0x6829('0x28')];var _0x2fc61c=_0x5b5ee8?0x0:_0x53867c[_0x6829('0x25')];var _0x910818=_0x5b5ee8?_0x2e385f[_0x6829('0x28')]:_0x53867c[_0x6829('0x25')]+_0x53867c[_0x6829('0x27')];var _0x30a868;if(_0x910818>=_0xd5d0){_0x910818=_0xd5d0;_0x30a868=0xc8;}else{_0x30a868=0xce;}_0x106b7f[_0x6829('0x22')](_0x30a868);return _0x106b7f[_0x6829('0x29')](_0x6829('0x2a'),_0x2fc61c+'-'+_0x910818+'/'+_0xd5d0)[_0x6829('0x24')](_0x2e385f);}return null;};}function patchUpdates(_0x233b4b){return function(_0x3d9b08){try{jsonpatch[_0x6829('0x2b')](_0x3d9b08,_0x233b4b,!![]);}catch(_0xa894b8){return BPromise[_0x6829('0x2c')](_0xa894b8);}return _0x3d9b08[_0x6829('0x2d')]();};}function saveUpdates(_0x591e8b,_0x52ab3f){return function(_0x36f2c6){if(_0x36f2c6){return _0x36f2c6[_0x6829('0x2e')](_0x591e8b)[_0x6829('0x2f')](function(_0x566fd4){return _0x566fd4;});}return null;};}function removeEntity(_0x24a37a,_0x34925d){return function(_0x17c3da){if(_0x17c3da){return _0x17c3da['destroy']()[_0x6829('0x2f')](function(){_0x24a37a['status'](0xcc)[_0x6829('0x23')]();});}};}function handleEntityNotFound(_0x2f82a7,_0x2a4f37){return function(_0x8f183e){if(!_0x8f183e){_0x2f82a7[_0x6829('0x21')](0x194);}return _0x8f183e;};}function handleError(_0x3b31b5,_0x5a7d92){_0x5a7d92=_0x5a7d92||0x1f4;return function(_0x4d69e9){logger[_0x6829('0x30')](_0x4d69e9[_0x6829('0x31')]);if(_0x4d69e9[_0x6829('0x32')]){delete _0x4d69e9['name'];}_0x3b31b5[_0x6829('0x22')](_0x5a7d92)[_0x6829('0x33')](_0x4d69e9);};}exports[_0x6829('0x34')]=function(_0x315719,_0x4840c3){var _0x2d8b50={},_0x4744db={},_0x13b1c3={'count':0x0,'rows':[]};return db[_0x6829('0x35')][_0x6829('0x36')]()[_0x6829('0x2f')](function(_0x58a03b){var _0x26c390=[];for(var _0xfcbf39=0x0;_0xfcbf39<Object[_0x6829('0x37')](_0x58a03b)[_0x6829('0x38')];_0xfcbf39++){var _0x4433f5=Object['keys'](_0x58a03b)[_0xfcbf39];if(_['startsWith'](_0x4433f5,_0x6829('0x39'))){_0x26c390[_0x6829('0x3a')](db[_0x6829('0x3b')][_0x6829('0x3c')]({'where':{'id':_[_0x6829('0x3d')](_0x4433f5,_0x6829('0x39'))},'raw':!![]}));}}return BPromise[_0x6829('0x3e')](_0x26c390)[_0x6829('0x2f')](function(_0x2aa7a3){for(var _0x3f1af8=0x0;_0x3f1af8<_0x2aa7a3['length'];_0x3f1af8++){if(_0x2aa7a3[_0x3f1af8]){var _0x2ca1bd=_0x6829('0x39')+_0x2aa7a3[_0x3f1af8]['id'];var _0x142036=_0x58a03b[_0x2ca1bd];_0x142036['fieldType']=_0x2aa7a3[_0x3f1af8]['type'];}}return _0x58a03b;});})['then'](function(_0x365e76){_0x4744db[_0x6829('0x3f')]=_[_0x6829('0x37')](_0x365e76);_0x4744db[_0x6829('0x40')]=_[_0x6829('0x37')](_0x315719[_0x6829('0x40')]);_0x4744db['filters']=_['intersection'](_0x4744db['model'],_0x4744db[_0x6829('0x40')]);_0x2d8b50['attributes']=_['intersection'](_0x4744db[_0x6829('0x3f')],qs[_0x6829('0x41')](_0x315719[_0x6829('0x40')][_0x6829('0x41')]));_0x2d8b50[_0x6829('0x42')]=_0x2d8b50[_0x6829('0x42')]['length']?_0x2d8b50[_0x6829('0x42')]:_0x4744db[_0x6829('0x3f')];if(!_0x315719['query']['hasOwnProperty'](_0x6829('0x43'))){_0x2d8b50[_0x6829('0x27')]=qs[_0x6829('0x27')](_0x315719[_0x6829('0x40')][_0x6829('0x27')]);_0x2d8b50[_0x6829('0x25')]=qs[_0x6829('0x25')](_0x315719['query'][_0x6829('0x25')]);}_0x2d8b50[_0x6829('0x44')]=qs[_0x6829('0x45')](_0x315719[_0x6829('0x40')]['sort']);_0x2d8b50[_0x6829('0x46')]=qs[_0x6829('0x47')](_[_0x6829('0x48')](_0x315719[_0x6829('0x40')],_0x4744db[_0x6829('0x47')]),_0x365e76);var _0x1f2cb9=[];var _0x19d0ee=squel[_0x6829('0x49')]()[_0x6829('0x4a')]('id')[_0x6829('0x4a')](_0x6829('0x32'))[_0x6829('0x4a')](_0x6829('0x4b'))[_0x6829('0x4c')]('tools_tags');var _0x3e094e=squel[_0x6829('0x49')]()[_0x6829('0x4c')](_0x6829('0x4d'),'c')[_0x6829('0x4e')]('cm_user_has_contacts','uc',_0x6829('0x4f'))[_0x6829('0x4e')](_0x6829('0x50'),'ct',_0x6829('0x51'))[_0x6829('0x4e')]('tools_tags','t','t.id\x20=\x20ct.TagId')[_0x6829('0x46')](_0x6829('0x52'));var _0x27e092=squel[_0x6829('0x53')]();var _0x188b52=[];var _0x2da42a=squel['expr']();var _0x1a1600;if(_0x315719['query'][_0x6829('0x54')]){_0x1a1600=as[_0x6829('0x55')](_0x315719[_0x6829('0x40')][_0x6829('0x54')]);var _0x152f09=_0x1a1600[_0x6829('0x56')];for(var _0x32b49f=0x0;_0x32b49f<_0x1a1600['conditions'][_0x6829('0x38')];_0x32b49f++){var _0x31aeea=_0x1a1600[_0x6829('0x57')][_0x32b49f];var _0x2f38dc='c';var _0x253f9f=_(_0x365e76)['keys']()[_0x6829('0x58')](function(_0x42a9f0){return _0x42a9f0===_0x31aeea['field'];});if(_0x253f9f)_0x253f9f=_0x365e76[_0x31aeea[_0x6829('0x4a')]];if(!_0x253f9f){if(_0x31aeea['field']===_0x6829('0x59')){var _0x5ee8fb=_0x31aeea['value'][_0x6829('0x5a')](',')['map'](function(_0xd23894){return Number(_0xd23894);});_0x5ee8fb[_0x6829('0x5b')](function(_0x5448b7){_0x2da42a['or'](_0x6829('0x5c'),'%,'+_0x5448b7+',%');});_0x188b52=_[_0x6829('0x5d')](_0x188b52,_0x5ee8fb);}else if(_0x31aeea['field']==='User'){_0x27e092['and'](_0x6829('0x5e'),_0x31aeea['value']);}}else{if(_0x31aeea[_0x6829('0x4a')]===_0x6829('0x5f')||_0x253f9f[_0x6829('0x60')]===_0x6829('0x61'))_0x31aeea[_0x6829('0x62')]=_0x6829('0x63');var _0x34f9fe=as[_0x6829('0x64')](_0x2f38dc,_0x253f9f[_0x6829('0x65')],_0x31aeea);_0x27e092[_0x152f09](_0x34f9fe[_0x6829('0x66')],_0x34f9fe['value']['start'],_0x34f9fe[_0x6829('0x67')][_0x6829('0x23')]);}}}else{var _0x4ab2d7=_(Object[_0x6829('0x37')](_0x315719['query']))[_0x6829('0x68')](function(_0x488c5d){return _0x365e76[_0x6829('0x69')](_0x488c5d)?_0x488c5d:undefined;})['filter'](function(_0x2c164d){return!_[_0x6829('0x6a')](_0x2c164d);})[_0x6829('0x67')]();if(_0x315719[_0x6829('0x40')][_0x6829('0x6b')])_0x4ab2d7[_0x6829('0x3a')](_0x6829('0x6b'));if(!_[_0x6829('0x6c')](_0x4ab2d7)){_0x4ab2d7[_0x6829('0x5b')](function(_0x40fe48){if(_0x40fe48==='ListId'){_0x3e094e[_0x6829('0x46')](_0x6829('0x6d'),[][_0x6829('0x6e')](_0x315719[_0x6829('0x40')][_0x40fe48]));}else if(_0x40fe48==='Contact'){var _0x5f4c0a='%'+_0x315719[_0x6829('0x40')][_0x40fe48]+'%';_0x3e094e[_0x6829('0x46')](_0x6829('0x6f'),_0x5f4c0a);}else{_0x3e094e[_0x6829('0x46')]('c.'+_0x40fe48+'\x20=\x20?',_0x315719[_0x6829('0x40')][_0x40fe48]);}});}if(_0x315719[_0x6829('0x40')][_0x6829('0x70')]){_0x188b52=_[_0x6829('0x71')](_0x315719['query'][_0x6829('0x70')])?_0x315719[_0x6829('0x40')][_0x6829('0x70')]:new Array(_0x315719[_0x6829('0x40')][_0x6829('0x70')]);_0x188b52[_0x6829('0x5b')](function(_0x461661){_0x2da42a['or'](_0x6829('0x5c'),'%,'+_0x461661+',%');});}if(_0x315719[_0x6829('0x40')][_0x6829('0x72')]){var _0x2cb2bd=_0x315719[_0x6829('0x40')][_0x6829('0x72')][_0x6829('0x73')]('\x5c','\x5c\x5c')[_0x6829('0x73')](/'/g,'\x27\x27');if(_0x2cb2bd[_0x6829('0x5a')]('\x20')[_0x6829('0x38')]>0x1){_0x27e092['or'](_0x6829('0x74'),qs[_0x6829('0x75')](_0x2cb2bd),null);}else{if(qs[_0x6829('0x76')](_0x2cb2bd)){_0x27e092['or']('c.id\x20LIKE\x20?',_0x2cb2bd+'%');_0x27e092['or'](_0x6829('0x77'),_0x2cb2bd+'%');_0x27e092['or'](_0x6829('0x78'),_0x2cb2bd+'%');_0x27e092['or'](_0x6829('0x79'),_0x2cb2bd+'%');}else if(qs[_0x6829('0x7a')](_0x2cb2bd)){_0x27e092['or']('c.email\x20LIKE\x20?',_0x2cb2bd+'%');}else{_0x27e092['or'](_0x6829('0x7b'),'%'+_0x2cb2bd+'%');_0x27e092['or']('c.lastName\x20LIKE\x20?','%'+_0x2cb2bd+'%');_0x27e092['or'](_0x6829('0x7c'),'%'+_0x2cb2bd+'%');}}}}_0x3e094e[_0x6829('0x46')](_0x27e092);_0x3e094e['group'](_0x6829('0x7d'));var _0x2e26e0={'type':db['Sequelize'][_0x6829('0x7e')][_0x6829('0x7f')],'raw':!![]};var _0x8f2164=_0x3e094e[_0x6829('0x80')]()['field'](_0x6829('0x7d'));if(_0x2d8b50[_0x6829('0x44')]){_0x2d8b50[_0x6829('0x44')][_0x6829('0x5b')](function(_0xb26ea6){_0x3e094e[_0x6829('0x44')]('c.'+_0xb26ea6[0x0],_0xb26ea6[0x1]==='DESC'?![]:!![]);});}if(!_[_0x6829('0x6c')](_0x188b52)){_0x3e094e[_0x6829('0x81')](_0x2da42a);_0x8f2164[_0x6829('0x46')](_0x6829('0x82'),_0x188b52);}BPromise[_0x6829('0x83')]()[_0x6829('0x2f')](function(){if(!_0x1a1600)return;if(_0x315719[_0x6829('0x84')][_0x6829('0x85')]!==_0x6829('0x86'))return;if(!_[_0x6829('0x87')](_0x1a1600[_0x6829('0x57')],['field',_0x6829('0x88')])){return _0x315719['user'][_0x6829('0x89')]({'attributes':['id'],'raw':!![]})[_0x6829('0x2f')](function(_0xfea22b){if(_[_0x6829('0x6c')](_0xfea22b)){_0x8f2164['where'](_0x6829('0x8a'));_0x3e094e['where'](_0x6829('0x8a'));}else{_0x8f2164[_0x6829('0x46')](_0x6829('0x6d'),_[_0x6829('0x68')](_0xfea22b,'id'));_0x3e094e[_0x6829('0x46')]('c.ListId\x20IN\x20?',_[_0x6829('0x68')](_0xfea22b,'id'));}});}})['then'](function(){if(_0x315719[_0x6829('0x84')][_0x6829('0x85')]===_0x6829('0x86')&&!_0x1a1600&&!_0x315719['query'][_0x6829('0x8b')])return[];return db[_0x6829('0x8c')][_0x6829('0x40')](_0x8f2164[_0x6829('0x8d')](),_0x2e26e0);})['then'](function(_0x4a11ed){_0x13b1c3['count']=_0x4a11ed[_0x6829('0x38')];if(_0x13b1c3[_0x6829('0x28')]===0x0)return[];return db['sequelize'][_0x6829('0x40')](_0x19d0ee[_0x6829('0x8d')](),_0x2e26e0)[_0x6829('0x2f')](function(_0x585977){_0x1f2cb9=_[_0x6829('0x8e')](_0x585977,'id');_0x2e26e0=_['merge'](_0x2e26e0,{'model':db['CmContact'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x315719[_0x6829('0x40')][_0x6829('0x41')]){_0x2d8b50[_0x6829('0x42')]['forEach'](function(_0x32f14f){_0x3e094e[_0x6829('0x4a')]('c.'+_0x32f14f);});}else{_0x3e094e[_0x6829('0x4a')](_0x6829('0x7d'));_0x3e094e['field'](_0x6829('0x8f'));_0x3e094e[_0x6829('0x4a')](_0x6829('0x90'));_0x3e094e[_0x6829('0x4a')](_0x6829('0x91'));_0x3e094e[_0x6829('0x4a')](_0x6829('0x92'));_0x3e094e[_0x6829('0x4a')](_0x6829('0x93'));_0x3e094e['field']('c.email');_0x3e094e['field']('c.ListId');_0x3e094e[_0x6829('0x4a')](_0x6829('0x94'));_0x3e094e[_0x6829('0x4a')](_0x6829('0x95'));_0x3e094e['field'](_0x6829('0x96'));_0x3e094e['field'](_0x6829('0x97'),_0x6829('0x98'));}if(_0x2d8b50['limit'])_0x3e094e[_0x6829('0x27')](_0x2d8b50[_0x6829('0x27')]);if(_0x2d8b50[_0x6829('0x25')])_0x3e094e[_0x6829('0x25')](_0x2d8b50['offset']);return db[_0x6829('0x8c')][_0x6829('0x40')](_0x3e094e[_0x6829('0x8d')](),_0x2e26e0);});})[_0x6829('0x2f')](function(_0xb6cd60){_0xb6cd60['forEach'](function(_0x5cc0b7){if(_0x5cc0b7[_0x6829('0x98')]){_0x5cc0b7['Tags']=[];_0x5cc0b7[_0x6829('0x98')][_0x6829('0x5a')](',')['forEach'](function(_0x430d00){_0x5cc0b7[_0x6829('0x99')]['push'](_0x1f2cb9[_0x430d00]);});}delete _0x5cc0b7[_0x6829('0x98')];});_0x13b1c3[_0x6829('0x9a')]=_0xb6cd60;return _0x13b1c3;})[_0x6829('0x2f')](respondWithFilteredResult(_0x4840c3,_0x2d8b50));})[_0x6829('0x9b')](handleError(_0x4840c3,null));};exports[_0x6829('0x9c')]=function(_0x3c7d05,_0x51b533){return db[_0x6829('0x35')][_0x6829('0x58')]({'where':{'id':_0x3c7d05[_0x6829('0x9d')]['id']}})['then'](handleEntityNotFound(_0x51b533,null))[_0x6829('0x2f')](removeEntity(_0x51b533,null))[_0x6829('0x9b')](handleError(_0x51b533,null));};exports['describe']=function(_0x31c477,_0x539d36){return db[_0x6829('0x35')][_0x6829('0x36')]()[_0x6829('0x2f')](function(_0x531ace){delete _0x531ace[_0x6829('0x9e')];for(var _0x219082=0x0;_0x219082<Object['keys'](_0x531ace)[_0x6829('0x38')];_0x219082++){var _0x4a927e=Object[_0x6829('0x37')](_0x531ace)[_0x219082];if(!_[_0x6829('0x9f')](_0x4a927e,_0x6829('0x39'))){_0x531ace[_0x4a927e][_0x6829('0xa0')]=_0x4a927e;_0x531ace[_0x4a927e]['displayName']=_0x4a927e;}}return _0x531ace;})[_0x6829('0x2f')](function(_0x8a3e18){var _0x416dc0={'where':{'$or':[{'ListId':_0x31c477[_0x6829('0x40')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x6829('0x3b')]['findAll'](_0x416dc0)[_0x6829('0x2f')](function(_0x1b7447){for(var _0x35747b=0x0;_0x35747b<_0x1b7447[_0x6829('0x38')];_0x35747b++){var _0xd0c5e4=_0x6829('0x39')+_0x1b7447[_0x35747b]['id'];_0x8a3e18[_0xd0c5e4]['columnName']=_0xd0c5e4;_0x8a3e18[_0xd0c5e4]['displayName']=_0x1b7447[_0x35747b][_0x6829('0xa1')];_0x8a3e18[_0xd0c5e4]['custom']={'type':_0x1b7447[_0x35747b]['type'],'values':_0x1b7447[_0x35747b][_0x6829('0xa2')]};}Object[_0x6829('0x37')](_0x8a3e18)['forEach'](function(_0x3fed37){if(!_0x8a3e18[_0x3fed37][_0x6829('0x69')](_0x6829('0xa0'))){delete _0x8a3e18[_0x3fed37];}});return _0x8a3e18;});})[_0x6829('0x2f')](respondWithResult(_0x539d36,null))[_0x6829('0x9b')](handleError(_0x539d36,null));};exports[_0x6829('0xa3')]=function(_0x2282da,_0x15a6b3){var _0x1614bc;var _0x2c8ddf;var _0xd98acd;if(_0x2282da[_0x6829('0xa4')]['id']){delete _0x2282da[_0x6829('0xa4')]['id'];}return db[_0x6829('0x35')][_0x6829('0xa5')]({'where':{'id':[_0x2282da['body']['to'],_0x2282da[_0x6829('0xa4')][_0x6829('0x4c')]]}})[_0x6829('0x2f')](function(_0x171e4f){if(_0x171e4f){if(_0x171e4f['length']!==0x2){return null;}_0x171e4f[0x0]=_0x171e4f[0x0][_0x6829('0xa6')]({'plain':!![]});_0x171e4f[0x1]=_0x171e4f[0x1][_0x6829('0xa6')]({'plain':!![]});delete _0x171e4f[0x0]['id'];delete _0x171e4f[0x1]['id'];return _[_0x6829('0xa7')](_0x171e4f[0x0],_0x171e4f[0x1],function(_0x2269b6,_0x2e47d4){if(Array[_0x6829('0x71')](_0x2e47d4)&&!_0x2e47d4[_0x6829('0x38')]){return _0x2269b6;}else if(!_0x2e47d4){return _0x2269b6;}});}})[_0x6829('0x2f')](handleEntityNotFound(_0x15a6b3,null))[_0x6829('0x2f')](function(_0x2da265){if(_0x2da265){if(_0x2da265[_0x6829('0x9e')]&&_[_0x6829('0x71')](_0x2da265['tags'])){_0x2da265[_0x6829('0x9e')]=_0x2da265['tags'][_0x6829('0xa8')]();}logger['info'](_0x6829('0xa9'),_0x2282da[_0x6829('0xa4')]['to'],_0x2282da['body'][_0x6829('0x4c')]);return db[_0x6829('0xaa')][_0x6829('0x9c')]({'where':{'ContactId':[_0x2282da[_0x6829('0xa4')]['to'],_0x2282da[_0x6829('0xa4')][_0x6829('0x4c')]]}})[_0x6829('0x2f')](function(_0x2d1f39){logger['info'](_0x6829('0xab'),_0x2d1f39);return db['CmHopperBlack']['destroy']({'where':{'ContactId':[_0x2282da[_0x6829('0xa4')]['to'],_0x2282da[_0x6829('0xa4')][_0x6829('0x4c')]]}})['then'](function(_0x54567b){logger[_0x6829('0xac')](_0x6829('0xad'),_0x54567b);return db[_0x6829('0x35')][_0x6829('0xae')](_0x2da265);});});}})[_0x6829('0x2f')](function(_0x196796){if(_0x196796){_0x1614bc=_0x196796;_0x2c8ddf={'ContactId':_0x1614bc['id']};_0xd98acd={'where':{'ContactId':[_0x2282da['body']['to'],_0x2282da['body'][_0x6829('0x4c')]]}};return db[_0x6829('0xaf')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xb0')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db['ChatOfflineMessage'][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb1')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb2')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb1')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb2')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db['SmsInteraction'][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb3')]['update'](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb4')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb5')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb6')]['update'](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xb7')]['update'](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb8')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xb9')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xba')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xbb')]['update'](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xbc')]['update'](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xbd')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xbe')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xbf')]['update'](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db['SmsQueueReport'][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xc0')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xc1')]['update'](_0x2c8ddf,_0xd98acd);}})['then'](function(){if(_0x1614bc){return db[_0x6829('0xc2')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0xc3')][_0x6829('0x2e')](_0x2c8ddf,_0xd98acd);}})[_0x6829('0x2f')](function(){if(_0x1614bc){return db[_0x6829('0x35')][_0x6829('0x9c')]({'where':{'id':[_0x2282da['body']['to'],_0x2282da[_0x6829('0xa4')][_0x6829('0x4c')]]}});}})[_0x6829('0x2f')](function(){if(_0x1614bc){return _0x1614bc;}})[_0x6829('0x2f')](respondWithResult(_0x15a6b3,null))[_0x6829('0x9b')](handleError(_0x15a6b3,null));};exports[_0x6829('0xae')]=function(_0x2ba342,_0x208173){return db[_0x6829('0x35')]['describe']()[_0x6829('0x2f')](function(_0x274780){if(_0x2ba342[_0x6829('0xa4')]['tags']&&_[_0x6829('0x71')](_0x2ba342[_0x6829('0xa4')][_0x6829('0x9e')])){if(_0x2ba342[_0x6829('0xa4')][_0x6829('0x9e')][_0x6829('0x38')]){_0x2ba342[_0x6829('0xa4')]['tags']=_0x2ba342['body'][_0x6829('0x9e')]['join'](';')+';';}else{_0x2ba342[_0x6829('0xa4')][_0x6829('0x9e')]=null;}}else{_0x2ba342['body'][_0x6829('0x9e')]=null;}return db[_0x6829('0x35')][_0x6829('0xae')](_0x2ba342[_0x6829('0xa4')],{'fields':_[_0x6829('0x37')](_0x274780),'raw':!![]});})['then'](respondWithResult(_0x208173,0xc9))[_0x6829('0x9b')](handleError(_0x208173,null));};exports['bulkCreate']=function(_0xd06a8f,_0x1f04c8){var _0x1260f2=[];var _0x506eb7=0x0;var _0x3cda02=0x0;var _0x3356f7=0x0;return db[_0x6829('0x35')]['describe']()[_0x6829('0x2f')](function(_0x246b17){return BPromise[_0x6829('0xc4')](_0xd06a8f['body'],function(_0x2b8d55){var _0x1196c2={'where':{'$or':[]},'defaults':_0x2b8d55,'fields':_[_0x6829('0x37')](_0x246b17),'raw':!![]};if(_0x2b8d55[_0x6829('0xc5')]){for(var _0x303d47=0x0;_0x303d47<_0x2b8d55[_0x6829('0xc5')][_0x6829('0x38')];_0x303d47++){var _0x154d1d={};_0x154d1d[_0x2b8d55[_0x6829('0xc5')][_0x303d47]]=_0x2b8d55[_0x2b8d55[_0x6829('0xc5')][_0x303d47]];_0x1196c2[_0x6829('0x46')][_0x6829('0xc6')]['push'](_0x154d1d);}_0x1196c2[_0x6829('0x46')][_0x6829('0x8b')]=_0x2b8d55['ListId'];}return db[_0x6829('0x35')][_0x6829('0xc7')](_0x1196c2)[_0x6829('0xc8')](function(_0x2fbde7,_0x28458e){if(_0x28458e){_0x506eb7++;}else{_0x3356f7++;}})[_0x6829('0x9b')](function(_0x526a88){console[_0x6829('0x30')](_0x526a88);_0x3cda02++;});});})[_0x6829('0x2f')](function(_0x2fed40){if(_0x2fed40){return{'success':_0x506eb7,'failure':_0x3cda02,'duplicates':_0x3356f7};}})[_0x6829('0x2f')](respondWithResult(_0x1f04c8,0xc9))[_0x6829('0x9b')](handleError(_0x1f04c8,null));};exports[_0x6829('0xc9')]=function(_0x46e1d4,_0x397f84,_0x290e34){var _0xf7e35f;return db[_0x6829('0x35')][_0x6829('0x36')]()[_0x6829('0x2f')](function(_0x51816d){return db[_0x6829('0x35')][_0x6829('0x58')]({'where':{'id':_0x46e1d4[_0x6829('0x9d')]['id']},'include':[{'model':db[_0x6829('0x59')],'as':'Tags','attributes':['id',_0x6829('0x32'),_0x6829('0x4b')],'required':_0x46e1d4[_0x6829('0x40')][_0x6829('0x70')]?!![]:![]}],'attributes':_[_0x6829('0x37')](_0x51816d)});})[_0x6829('0x2f')](function(_0x57e12e){_0xf7e35f=_0x57e12e[_0x6829('0xa6')]({'plain':!![]});var _0x213c76={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x57e12e&&_0x57e12e[_0x6829('0x8b')]){if(_0x57e12e[_0x6829('0x8b')]){_0x213c76[_0x6829('0x46')]['$and'][_0x6829('0x3a')]({'ListId':{'$ne':_0x57e12e[_0x6829('0x8b')]}});}}return db[_0x6829('0x3b')][_0x6829('0xa5')](_0x213c76);})[_0x6829('0x2f')](function(_0x209fb1){return _[_0x6829('0xca')](_0xf7e35f,_[_0x6829('0x68')](_0x209fb1,function(_0x38cc70){return util[_0x6829('0xcb')](_0x6829('0xcc'),_0x38cc70['id']);}));})[_0x6829('0x2f')](handleEntityNotFound(_0x397f84,null))[_0x6829('0x2f')](respondWithResult(_0x397f84,null))[_0x6829('0x9b')](handleError(_0x397f84,null));};exports[_0x6829('0x2e')]=function(_0x18c9f4,_0x5a83ca){var _0x16ffb3;if(_0x18c9f4[_0x6829('0xa4')]['id']){delete _0x18c9f4[_0x6829('0xa4')]['id'];}return db[_0x6829('0x35')][_0x6829('0x58')]({'where':{'id':_0x18c9f4['params']['id']}})[_0x6829('0x2f')](handleEntityNotFound(_0x5a83ca,null))[_0x6829('0x2f')](saveUpdates(_0x18c9f4[_0x6829('0xa4')],null))[_0x6829('0x2f')](function(_0x12ac02){_0x16ffb3=_0x12ac02;var _0x5eaafd={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x12ac02&&_0x12ac02['ListId']){if(_0x12ac02[_0x6829('0x8b')]){_0x5eaafd[_0x6829('0x46')][_0x6829('0xcd')]['push']({'ListId':{'$ne':_0x12ac02[_0x6829('0x8b')]}});}}return db[_0x6829('0x3b')]['findAll'](_0x5eaafd);})[_0x6829('0x2f')](function(_0x1b0042){if(_0x1b0042){return _[_0x6829('0xca')](_[_0x6829('0xce')](_0x18c9f4['body'],function(_0x4ab26b,_0x8cf622){return _[_0x6829('0x9f')](_0x8cf622,'cf_');}),_[_0x6829('0x68')](_0x1b0042,function(_0x1e9130){return util[_0x6829('0xcb')](_0x6829('0xcc'),_0x1e9130['id']);}));}})[_0x6829('0x2f')](function(_0x49edd4){if(_0x49edd4&&!_[_0x6829('0x6c')](_0x49edd4)){var _0x5b9b6b=squel[_0x6829('0x2e')]()[_0x6829('0xcf')](_0x6829('0x4d'))[_0x6829('0xd0')](_0x49edd4)[_0x6829('0x46')](_0x6829('0xd1'),_0x18c9f4[_0x6829('0x9d')]['id'])['toParam']();return db['sequelize']['query'](_0x5b9b6b[_0x6829('0x66')],{'replacements':_0x5b9b6b[_0x6829('0xa2')]});}})[_0x6829('0x2f')](function(){if(_0x18c9f4['body'][_0x6829('0xd2')]&&_0x16ffb3){return db[_0x6829('0xaa')][_0x6829('0x2e')]({'phone':_0x18c9f4[_0x6829('0xa4')][_0x6829('0xd2')]},{'where':{'ContactId':_0x16ffb3['id']}});}})['then'](function(){return _0x16ffb3;})[_0x6829('0x2f')](respondWithResult(_0x5a83ca,null))[_0x6829('0x9b')](handleError(_0x5a83ca,null));};exports[_0x6829('0xd3')]=function(_0x1fba76,_0x24ae80,_0x3bf2be){var _0x2d534d={};var _0x333053={};var _0x1336bc;var _0x14d304;return db[_0x6829('0x35')][_0x6829('0x3c')]({'where':{'id':_0x1fba76[_0x6829('0x9d')]['id']}})[_0x6829('0x2f')](handleEntityNotFound(_0x24ae80,null))[_0x6829('0x2f')](function(_0x52ee62){if(_0x52ee62){_0x1336bc=_0x52ee62;_0x333053['model']=_[_0x6829('0x37')](db[_0x6829('0x59')][_0x6829('0xd4')]);_0x333053[_0x6829('0x40')]=_[_0x6829('0x37')](_0x1fba76['query']);_0x333053['filters']=_[_0x6829('0xd5')](_0x333053[_0x6829('0x3f')],_0x333053[_0x6829('0x40')]);_0x2d534d[_0x6829('0x42')]=_[_0x6829('0xd5')](_0x333053[_0x6829('0x3f')],qs[_0x6829('0x41')](_0x1fba76[_0x6829('0x40')][_0x6829('0x41')]));_0x2d534d[_0x6829('0x42')]=_0x2d534d[_0x6829('0x42')]['length']?_0x2d534d[_0x6829('0x42')]:_0x333053[_0x6829('0x3f')];_0x2d534d['order']=qs['sort'](_0x1fba76[_0x6829('0x40')]['sort']);_0x2d534d[_0x6829('0x46')]=qs[_0x6829('0x47')](_[_0x6829('0x48')](_0x1fba76[_0x6829('0x40')],_0x333053[_0x6829('0x47')]));if(_0x1fba76[_0x6829('0x40')][_0x6829('0x72')]){_0x2d534d[_0x6829('0x46')]=_['merge'](_0x2d534d[_0x6829('0x46')],{'$or':_[_0x6829('0x68')](_0x2d534d[_0x6829('0x42')],function(_0x52ef6f){var _0x2a9ce0={};_0x2a9ce0[_0x52ef6f]={'$like':'%'+_0x1fba76[_0x6829('0x40')][_0x6829('0x72')]+'%'};return _0x2a9ce0;})});}_0x2d534d=_[_0x6829('0xa3')]({},_0x2d534d,_0x1fba76[_0x6829('0xd6')]);return _0x1336bc[_0x6829('0xd3')](_0x2d534d);}})[_0x6829('0x2f')](function(_0x16ca4c){if(_0x16ca4c){_0x14d304=_0x16ca4c[_0x6829('0x38')];if(!_0x1fba76[_0x6829('0x40')][_0x6829('0x69')](_0x6829('0x43'))){_0x2d534d[_0x6829('0x27')]=qs['limit'](_0x1fba76[_0x6829('0x40')][_0x6829('0x27')]);_0x2d534d[_0x6829('0x25')]=qs['offset'](_0x1fba76['query']['offset']);}return _0x1336bc[_0x6829('0xd3')](_0x2d534d);}})[_0x6829('0x2f')](function(_0x40c73b){if(_0x40c73b){return _0x40c73b?{'count':_0x14d304,'rows':_0x40c73b}:null;}})[_0x6829('0x2f')](respondWithResult(_0x24ae80,null))[_0x6829('0x9b')](handleError(_0x24ae80,null));};exports[_0x6829('0xd7')]=function(_0x14f669,_0x1a1ad1,_0xa9be6d){if(_0x14f669[_0x6829('0xa4')]['id']){delete _0x14f669[_0x6829('0xa4')]['id'];}return db[_0x6829('0x35')]['findOne']({'where':{'id':_0x14f669[_0x6829('0x9d')]['id']}})[_0x6829('0x2f')](handleEntityNotFound(_0x1a1ad1,null))[_0x6829('0x2f')](function(_0x445d4a){if(_0x445d4a){return _0x445d4a['setTags'](_0x14f669[_0x6829('0xa4')][_0x6829('0xd8')]||[]);}return null;})[_0x6829('0x2f')](respondWithResult(_0x1a1ad1,null))[_0x6829('0x9b')](handleError(_0x1a1ad1,null));};exports[_0x6829('0xd9')]=function(_0x35f8a0,_0x1e45ce,_0x2655de){var _0x53ce1a={'raw':![],'where':{}};var _0x3fbf23={};var _0xf81f70={'count':0x0,'rows':[]};return db[_0x6829('0x35')][_0x6829('0x3c')]({'where':{'id':_0x35f8a0[_0x6829('0x9d')]['id']}})[_0x6829('0x2f')](handleEntityNotFound(_0x1e45ce,null))[_0x6829('0x2f')](function(_0x5e283a){if(_0x5e283a){_0x3fbf23[_0x6829('0x3f')]=_['keys'](db[_0x6829('0xaa')]['rawAttributes']);_0x3fbf23[_0x6829('0x40')]=_[_0x6829('0x37')](_0x35f8a0[_0x6829('0x40')]);_0x3fbf23[_0x6829('0x47')]=_[_0x6829('0xd5')](_0x3fbf23[_0x6829('0x3f')],_0x3fbf23[_0x6829('0x40')]);_0x53ce1a[_0x6829('0x42')]=_[_0x6829('0xd5')](_0x3fbf23[_0x6829('0x3f')],qs[_0x6829('0x41')](_0x35f8a0['query'][_0x6829('0x41')]));_0x53ce1a['attributes']=_0x53ce1a[_0x6829('0x42')][_0x6829('0x38')]?_0x53ce1a[_0x6829('0x42')]:_0x3fbf23[_0x6829('0x3f')];if(!_0x35f8a0['query'][_0x6829('0x69')](_0x6829('0x43'))){_0x53ce1a[_0x6829('0x27')]=qs[_0x6829('0x27')](_0x35f8a0['query']['limit']);_0x53ce1a[_0x6829('0x25')]=qs[_0x6829('0x25')](_0x35f8a0['query'][_0x6829('0x25')]);}_0x53ce1a[_0x6829('0x44')]=qs[_0x6829('0x45')](_0x35f8a0[_0x6829('0x40')]['sort']);_0x53ce1a[_0x6829('0x46')]=qs['filters'](_[_0x6829('0x48')](_0x35f8a0[_0x6829('0x40')],_0x3fbf23[_0x6829('0x47')]));_0x53ce1a[_0x6829('0x46')][_0x6829('0xda')]=_0x5e283a['id'];if(_0x35f8a0[_0x6829('0x40')]['filter']){_0x53ce1a[_0x6829('0x46')]=_[_0x6829('0xa3')](_0x53ce1a[_0x6829('0x46')],{'$or':_[_0x6829('0x68')](_0x53ce1a[_0x6829('0x42')],function(_0x311442){var _0x21e20b={};_0x21e20b[_0x311442]={'$like':'%'+_0x35f8a0[_0x6829('0x40')]['filter']+'%'};return _0x21e20b;})});}_0x53ce1a=_[_0x6829('0xa3')]({},_0x53ce1a,_0x35f8a0['options']);return db[_0x6829('0xaa')][_0x6829('0x28')]({'where':_0x53ce1a[_0x6829('0x46')]})['then'](function(_0x361cce){_0xf81f70[_0x6829('0x28')]=_0x361cce;if(_0x35f8a0[_0x6829('0x40')]['includeAll']){_0x53ce1a[_0x6829('0xdb')]=[{'all':!![]}];}return db[_0x6829('0xaa')]['findAll'](_0x53ce1a);})['then'](function(_0x4fecd2){_0xf81f70[_0x6829('0x9a')]=_0x4fecd2;return _0xf81f70;});}})[_0x6829('0x2f')](respondWithFilteredResult(_0x1e45ce,_0x53ce1a))[_0x6829('0x9b')](handleError(_0x1e45ce,null));};exports['getHopperHistories']=function(_0x19326c,_0x153267,_0x250276){var _0x349f0f={'raw':!![],'where':{}};var _0xae4b45={};var _0x39c997={'count':0x0,'rows':[]};return db['CmContact'][_0x6829('0x3c')]({'where':{'id':_0x19326c['params']['id']}})[_0x6829('0x2f')](handleEntityNotFound(_0x153267,null))[_0x6829('0x2f')](function(_0xab4b6e){if(_0xab4b6e){_0xae4b45['model']=_[_0x6829('0x37')](db[_0x6829('0xb9')]['rawAttributes']);_0xae4b45['query']=_[_0x6829('0x37')](_0x19326c['query']);_0xae4b45[_0x6829('0x47')]=_[_0x6829('0xd5')](_0xae4b45[_0x6829('0x3f')],_0xae4b45[_0x6829('0x40')]);_0x349f0f[_0x6829('0x42')]=_['intersection'](_0xae4b45[_0x6829('0x3f')],qs['fields'](_0x19326c['query'][_0x6829('0x41')]));_0x349f0f[_0x6829('0x42')]=_0x349f0f[_0x6829('0x42')][_0x6829('0x38')]?_0x349f0f[_0x6829('0x42')]:_0xae4b45['model'];if(!_0x19326c[_0x6829('0x40')][_0x6829('0x69')](_0x6829('0x43'))){_0x349f0f[_0x6829('0x27')]=qs['limit'](_0x19326c['query'][_0x6829('0x27')]);_0x349f0f[_0x6829('0x25')]=qs['offset'](_0x19326c[_0x6829('0x40')][_0x6829('0x25')]);}_0x349f0f[_0x6829('0x44')]=qs[_0x6829('0x45')](_0x19326c[_0x6829('0x40')][_0x6829('0x45')]);_0x349f0f['where']=qs[_0x6829('0x47')](_[_0x6829('0x48')](_0x19326c[_0x6829('0x40')],_0xae4b45['filters']));_0x349f0f[_0x6829('0x46')]['ContactId']=_0xab4b6e['id'];if(_0x19326c['query'][_0x6829('0x72')]){_0x349f0f[_0x6829('0x46')]=_[_0x6829('0xa3')](_0x349f0f[_0x6829('0x46')],{'$or':_[_0x6829('0x68')](_0x349f0f[_0x6829('0x42')],function(_0x2b7b55){var _0x3da847={};_0x3da847[_0x2b7b55]={'$like':'%'+_0x19326c[_0x6829('0x40')][_0x6829('0x72')]+'%'};return _0x3da847;})});}_0x349f0f=_['merge']({},_0x349f0f,_0x19326c['options']);return db['CmHopperHistory'][_0x6829('0x28')]({'where':_0x349f0f['where']})['then'](function(_0x2740b1){_0x39c997[_0x6829('0x28')]=_0x2740b1;if(_0x19326c['query']['includeAll']){_0x349f0f['include']=[{'all':!![]}];}return db[_0x6829('0xb9')]['findAll'](_0x349f0f);})[_0x6829('0x2f')](function(_0x2b1bc7){_0x39c997['rows']=_0x2b1bc7;return _0x39c997;});}})['then'](respondWithFilteredResult(_0x153267,_0x349f0f))[_0x6829('0x9b')](handleError(_0x153267,null));};exports[_0x6829('0xdc')]=function(_0x144b2a,_0x44818,_0x5b1c42){var _0x22b3a1={'raw':!![],'where':{}};var _0x345798={};var _0x23a4ae={'count':0x0,'rows':[]};return db['CmContact']['findOne']({'where':{'id':_0x144b2a[_0x6829('0x9d')]['id']}})[_0x6829('0x2f')](handleEntityNotFound(_0x44818,null))['then'](function(_0x2d84b3){if(_0x2d84b3){_0x345798['model']=_[_0x6829('0x37')](db[_0x6829('0xb8')]['rawAttributes']);_0x345798[_0x6829('0x40')]=_[_0x6829('0x37')](_0x144b2a[_0x6829('0x40')]);_0x345798['filters']=_[_0x6829('0xd5')](_0x345798[_0x6829('0x3f')],_0x345798[_0x6829('0x40')]);_0x22b3a1[_0x6829('0x42')]=_['intersection'](_0x345798[_0x6829('0x3f')],qs['fields'](_0x144b2a[_0x6829('0x40')][_0x6829('0x41')]));_0x22b3a1[_0x6829('0x42')]=_0x22b3a1[_0x6829('0x42')][_0x6829('0x38')]?_0x22b3a1[_0x6829('0x42')]:_0x345798['model'];if(!_0x144b2a['query'][_0x6829('0x69')](_0x6829('0x43'))){_0x22b3a1[_0x6829('0x27')]=qs[_0x6829('0x27')](_0x144b2a[_0x6829('0x40')][_0x6829('0x27')]);_0x22b3a1[_0x6829('0x25')]=qs[_0x6829('0x25')](_0x144b2a['query'][_0x6829('0x25')]);}_0x22b3a1[_0x6829('0x44')]=qs[_0x6829('0x45')](_0x144b2a[_0x6829('0x40')]['sort']);_0x22b3a1['where']=qs[_0x6829('0x47')](_['pick'](_0x144b2a['query'],_0x345798['filters']));_0x22b3a1[_0x6829('0x46')][_0x6829('0xda')]=_0x2d84b3['id'];if(_0x144b2a[_0x6829('0x40')][_0x6829('0x72')]){_0x22b3a1[_0x6829('0x46')]=_[_0x6829('0xa3')](_0x22b3a1[_0x6829('0x46')],{'$or':_[_0x6829('0x68')](_0x22b3a1['attributes'],function(_0xd6b885){var _0x1c3714={};_0x1c3714[_0xd6b885]={'$like':'%'+_0x144b2a[_0x6829('0x40')][_0x6829('0x72')]+'%'};return _0x1c3714;})});}_0x22b3a1=_[_0x6829('0xa3')]({},_0x22b3a1,_0x144b2a['options']);return db['CmHopperFinal'][_0x6829('0x28')]({'where':_0x22b3a1[_0x6829('0x46')]})[_0x6829('0x2f')](function(_0x42fb08){_0x23a4ae[_0x6829('0x28')]=_0x42fb08;if(_0x144b2a[_0x6829('0x40')][_0x6829('0xdd')]){_0x22b3a1[_0x6829('0xdb')]=[{'all':!![]}];}return db[_0x6829('0xb8')][_0x6829('0xa5')](_0x22b3a1);})[_0x6829('0x2f')](function(_0x3f3ad3){_0x23a4ae[_0x6829('0x9a')]=_0x3f3ad3;return _0x23a4ae;});}})['then'](respondWithFilteredResult(_0x44818,_0x22b3a1))[_0x6829('0x9b')](handleError(_0x44818,null));};exports[_0x6829('0xde')]=function(_0x1df06c,_0x882595,_0x1777ce){var _0xd5a3c8={'raw':!![],'where':{}};var _0x362b78={};var _0x20a923={'count':0x0,'rows':[]};return db[_0x6829('0x35')][_0x6829('0x3c')]({'where':{'id':_0x1df06c[_0x6829('0x9d')]['id']}})['then'](handleEntityNotFound(_0x882595,null))['then'](function(_0x204eb5){if(_0x204eb5){_0x362b78[_0x6829('0x3f')]=_[_0x6829('0x37')](db['JscriptySessionReport']['rawAttributes']);_0x362b78['query']=_[_0x6829('0x37')](_0x1df06c[_0x6829('0x40')]);_0x362b78[_0x6829('0x47')]=_[_0x6829('0xd5')](_0x362b78[_0x6829('0x3f')],_0x362b78['query']);_0xd5a3c8[_0x6829('0x42')]=_['intersection'](_0x362b78[_0x6829('0x3f')],qs[_0x6829('0x41')](_0x1df06c['query'][_0x6829('0x41')]));_0xd5a3c8[_0x6829('0x42')]=_0xd5a3c8['attributes'][_0x6829('0x38')]?_0xd5a3c8[_0x6829('0x42')]:_0x362b78['model'];if(!_0x1df06c[_0x6829('0x40')][_0x6829('0x69')]('nolimit')){_0xd5a3c8[_0x6829('0x27')]=qs[_0x6829('0x27')](_0x1df06c[_0x6829('0x40')][_0x6829('0x27')]);_0xd5a3c8['offset']=qs[_0x6829('0x25')](_0x1df06c[_0x6829('0x40')][_0x6829('0x25')]);}_0xd5a3c8['order']=qs[_0x6829('0x45')](_0x1df06c[_0x6829('0x40')][_0x6829('0x45')]);_0xd5a3c8[_0x6829('0x46')]=qs[_0x6829('0x47')](_[_0x6829('0x48')](_0x1df06c[_0x6829('0x40')],_0x362b78[_0x6829('0x47')]));_0xd5a3c8['where'][_0x6829('0xda')]=_0x204eb5['id'];if(_0x1df06c['query'][_0x6829('0x72')]){_0xd5a3c8[_0x6829('0x46')]=_[_0x6829('0xa3')](_0xd5a3c8[_0x6829('0x46')],{'$or':_[_0x6829('0x68')](_0xd5a3c8['attributes'],function(_0x23ac52){var _0x33e1ad={};_0x33e1ad[_0x23ac52]={'$like':'%'+_0x1df06c[_0x6829('0x40')]['filter']+'%'};return _0x33e1ad;})});}_0xd5a3c8=_[_0x6829('0xa3')]({},_0xd5a3c8,_0x1df06c['options']);return db[_0x6829('0xc0')][_0x6829('0x28')]({'where':_0xd5a3c8[_0x6829('0x46')]})[_0x6829('0x2f')](function(_0x2564c4){_0x20a923[_0x6829('0x28')]=_0x2564c4;if(_0x1df06c[_0x6829('0x40')]['includeAll']){_0xd5a3c8['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x6829('0xa5')](_0xd5a3c8);})[_0x6829('0x2f')](function(_0xecdae3){_0x20a923[_0x6829('0x9a')]=_0xecdae3;return _0x20a923;});}})['then'](respondWithFilteredResult(_0x882595,_0xd5a3c8))[_0x6829('0x9b')](handleError(_0x882595,null));};exports['uploadCsv']=function(_0x4048fb,_0x2ff83c,_0x168a57){try{if(!_0x4048fb['body'][_0x6829('0x8b')]){throw new Error(_0x6829('0xdf'));}if(!_0x4048fb['body']['binding_keys']){throw new Error(_0x6829('0xe0'));}if(!_0x4048fb['body']['binding_values']){throw new Error(_0x6829('0xe1'));}if(!_0x4048fb[_0x6829('0xa4')]['socket_timestamp']){throw new Error(_0x6829('0xe2'));}var _0xe92c2d=_0x4048fb['body']['binding_keys'][_0x6829('0x5a')](',');var _0x52d72c=_0x4048fb[_0x6829('0xa4')]['binding_values']['split'](',');if(!_0xe92c2d['length']||!_0x52d72c[_0x6829('0x38')]||_0xe92c2d[_0x6829('0x38')]!==_0x52d72c[_0x6829('0x38')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x4048fb['body']['fields']=_['zipObject'](_0xe92c2d,_0x52d72c);if(!_0x4048fb[_0x6829('0xa4')]['fields'][_0x6829('0xd2')]){throw new Error(_0x6829('0xe3'));}if(!_0x4048fb[_0x6829('0xa4')][_0x6829('0x41')]['firstName']){throw new Error(_0x6829('0xe4'));}var _0x4d973c=path[_0x6829('0xa8')](config[_0x6829('0xe5')],_0x6829('0xe6'),_0x4048fb['file'][_0x6829('0xe7')]);fs[_0x6829('0xe8')](_0x4d973c,parseInt(_0x6829('0xe9'),0x8));var _0x2af72f=require(_0x6829('0xea'))[_0x6829('0xeb')](path[_0x6829('0xa8')](__dirname,'../../components/import/cm/csv'),[_0x4d973c,_0x4048fb[_0x6829('0xa4')][_0x6829('0xec')],_0x4048fb[_0x6829('0xa4')][_0x6829('0xed')],_0x4048fb[_0x6829('0xa4')][_0x6829('0x8b')],_0x4048fb[_0x6829('0xa4')][_0x6829('0xee')],_0x4048fb['body'][_0x6829('0xc5')],_0x4048fb[_0x6829('0xa4')]['socket_timestamp']]);return _0x2ff83c[_0x6829('0x22')](0xc8)[_0x6829('0x24')]({'message':'File\x20uploaded\x20correctly!','pid':_0x2af72f[_0x6829('0xef')]});}catch(_0x52133d){return _0x2ff83c[_0x6829('0x22')](0x1f4)[_0x6829('0x33')](_0x52133d);}};exports[_0x6829('0xf0')]=function(_0x149e2d,_0x5aa51d,_0x376281){var _0x25f93c=fs[_0x6829('0xf1')](_0x149e2d['file'][_0x6829('0x7')]);Papa[_0x6829('0xf2')](_0x25f93c,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x2a1899){return _0x5aa51d['status'](0xc8)[_0x6829('0x24')]({'file':_0x149e2d[_0x6829('0xf3')],'fields':_0x2a1899[_0x6829('0xf4')][_0x6829('0x41')]});}});};exports['import']=function(_0x3954ef,_0x19ba66,_0x5006ed){return db[_0x6829('0x88')][_0x6829('0xa5')]({'raw':!![],'attributes':['id'],'where':{'role':_0x6829('0x86')}})[_0x6829('0x2f')](function(_0x665886){var _0x22fab9=![];if(!_0x3954ef['body'][_0x6829('0x8b')]){throw new Error(_0x6829('0xdf'));}if(!_0x3954ef['body'][_0x6829('0xf5')][_0x6829('0xd2')]){throw new Error(_0x6829('0xe3'));}if(!_0x3954ef['body'][_0x6829('0xf5')][_0x6829('0xf6')]){throw new Error(_0x6829('0xe4'));}if(!_0x3954ef[_0x6829('0xa4')]['socket_timestamp']){throw new Error(_0x6829('0xe2'));}var _0xffbcb3=require(_0x6829('0xea'))[_0x6829('0xeb')](path[_0x6829('0xa8')](__dirname,'../../components/import/cm/csv2'),[_0x3954ef[_0x6829('0x9d')]['id'],JSON['stringify'](_0x3954ef[_0x6829('0xa4')]),JSON[_0x6829('0xf7')](_0x665886)]);_0xffbcb3['on'](_0x6829('0xf8'),function(_0x1c8003){_0x22fab9=!![];return _0x19ba66['status'](0xc8)[_0x6829('0x24')]({'message':_0x6829('0xf9'),'pid':_0xffbcb3[_0x6829('0xef')]});});_0xffbcb3['on']('exit',function(_0x551f0a){if(_0x551f0a&&!_0x22fab9){return _0x19ba66['status'](0x1f4)['json']({'message':_0x6829('0xfa'),'pid':_0xffbcb3[_0x6829('0xef')]});}});})[_0x6829('0x9b')](handleError(_0x19ba66,null));};exports[_0x6829('0xfb')]=function(_0x205149,_0x253991){var _0x2e20dc=[_0x6829('0xfc'),_0x6829('0xfd'),_0x6829('0xfe'),'openchannel',_0x6829('0xff'),_0x6829('0x100'),_0x6829('0x101')];var _0x40e541={'offset':0x0,'order':qs[_0x6829('0x45')](_0x6829('0x102'))},_0x3af017={'count':0x0,'rows':[]};Promise[_0x6829('0x83')]()[_0x6829('0x2f')](function(){if(_0x205149[_0x6829('0x40')][_0x6829('0x103')]){if(!_[_0x6829('0x104')](_0x2e20dc,_0x205149['query'][_0x6829('0x103')][_0x6829('0x105')]())){throw new Error(_0x6829('0x106'));}_0x2e20dc=[_0x205149[_0x6829('0x40')][_0x6829('0x103')][_0x6829('0x105')]()];}if(_0x205149[_0x6829('0x40')][_0x6829('0x107')]){try{var _0x47d2e5=JSON[_0x6829('0xf2')](_0x205149[_0x6829('0x40')][_0x6829('0x107')]);if(!moment(_0x47d2e5[_0x6829('0x4c')])[_0x6829('0x108')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x47d2e5['to'])[_0x6829('0x108')]()){throw new Error(_0x6829('0x109'));}}catch(_0x5d461d){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x205149[_0x6829('0x40')]['hasOwnProperty'](_0x6829('0x43'))){_0x40e541[_0x6829('0x27')]=qs[_0x6829('0x27')](_0x205149[_0x6829('0x40')][_0x6829('0x27')]||0xa);_0x40e541[_0x6829('0x25')]=qs[_0x6829('0x25')](_0x205149[_0x6829('0x40')]['offset']);}var _0x5f208b=_0x2e20dc['map'](function(_0x4bc2bf){if(_0x4bc2bf===_0x6829('0x101')){var _0x31ae43={'attributes':['id','uniqueid',_0x6829('0x65'),_0x6829('0x10a'),_0x6829('0x10b'),_0x6829('0x10c'),_0x6829('0x10d'),_0x6829('0x10e'),_0x6829('0x10f'),'note',_0x6829('0x110'),_0x6829('0x111'),_0x6829('0x112'),_0x6829('0x113'),_0x6829('0x114')],'where':{'ContactId':_0x205149[_0x6829('0x9d')]['id']},'include':[{'model':db[_0x6829('0x88')],'as':_0x6829('0x88'),'attributes':['id',_0x6829('0x32'),'fullname',_0x6829('0xa1')]}],'order':[['createdAt','DESC']]};if(_0x205149[_0x6829('0x40')][_0x6829('0x107')]){_0x31ae43['where'][_0x6829('0x110')]={'$gte':_0x47d2e5['from'],'$lte':_0x47d2e5['to']};}return db['VoiceCallReport'][_0x6829('0x115')](_0x31ae43)[_0x6829('0x2f')](function(_0x2fc809){_0x3af017[_0x6829('0x28')]+=_0x2fc809['count'];return _[_0x6829('0x68')](_0x2fc809[_0x6829('0x9a')],function(_0x26b5d2){var _0x4aa80a=_0x26b5d2['get']({'plain':!![]});_0x4aa80a['channel']=_0x4bc2bf;if(_0x4aa80a[_0x6829('0x88')]){_0x4aa80a[_0x6829('0x88')]={'id':_0x4aa80a[_0x6829('0x88')]['id'],'name':_0x4aa80a[_0x6829('0x88')][_0x6829('0x32')],'fullname':_0x4aa80a['User'][_0x6829('0x116')],'alias':_0x4aa80a[_0x6829('0x88')][_0x6829('0xa1')]};}return _0x4aa80a;});});}else{var _0x3afdbe=_[_0x6829('0x117')](_0x4bc2bf)+(_0x4bc2bf===_0x6829('0xfd')?_0x6829('0x118'):_0x6829('0x119'));var _0x6a069f={'attributes':['id',_0x6829('0x11a'),_0x6829('0x11b'),_0x6829('0x110'),_0x6829('0x11c'),'disposition',_0x6829('0x11d'),'thirdDisposition',_0x6829('0x114'),_0x3afdbe+'Id'],'where':{'ContactId':_0x205149[_0x6829('0x9d')]['id']},'include':[{'model':db[_0x3afdbe],'as':_0x6829('0x119'),'attributes':['id',_0x6829('0x32'),_0x6829('0x11e')]},{'model':db['User'],'as':_0x6829('0x11f'),'attributes':['id','name',_0x6829('0x116')]},{'model':db[_0x6829('0x59')],'as':_0x6829('0x99'),'attributes':['id',_0x6829('0x32'),_0x6829('0x4b')],'through':{'attributes':[]}}],'order':[[_0x6829('0x110'),_0x6829('0x120')]]};if(_0x205149[_0x6829('0x40')][_0x6829('0x107')]){_0x6a069f[_0x6829('0x46')][_0x6829('0x110')]={'$gte':_0x47d2e5[_0x6829('0x4c')],'$lte':_0x47d2e5['to']};}switch(_0x4bc2bf){case'chat':_0x6a069f[_0x6829('0x42')][_0x6829('0x3a')](_0x6829('0x121'),_0x6829('0x122'),_0x6829('0x123'),_0x6829('0x124'),_0x6829('0x125'),_0x6829('0x126'),_0x6829('0x127'),_0x6829('0x128'),'referer');break;case _0x6829('0xfc'):_0x6a069f[_0x6829('0x42')][_0x6829('0x3a')](_0x6829('0x129'),_0x6829('0x12a'));break;case _0x6829('0x12b'):_0x6a069f[_0x6829('0x42')]['push'](_0x6829('0x12c'),_0x6829('0x12d'));break;}return db[_['startCase'](_0x4bc2bf)+_0x6829('0x12e')][_0x6829('0x115')](_0x6a069f)[_0x6829('0x2f')](function(_0x39c0da){_0x3af017['count']+=_0x39c0da[_0x6829('0x28')];return _[_0x6829('0x68')](_0x39c0da['rows'],function(_0x199492){var _0x3402da=_0x199492['get']({'plain':!![]});_0x3402da[_0x6829('0x103')]=_0x4bc2bf;if(_0x3402da['Owner']){_0x3402da[_0x6829('0x11f')]={'id':_0x3402da[_0x6829('0x11f')]['id'],'name':_0x3402da[_0x6829('0x11f')][_0x6829('0x32')],'fullname':_0x3402da[_0x6829('0x11f')][_0x6829('0x116')]};}return _0x3402da;});});}});return Promise[_0x6829('0x3e')](_0x5f208b);})[_0x6829('0x2f')](function(_0x1a8758){return _(_0x1a8758)[_0x6829('0x12f')]()[_0x6829('0x130')](_0x6829('0x110'))['reverse']()['value']();})[_0x6829('0x2f')](function(_0x198937){_0x3af017[_0x6829('0x9a')]=_0x40e541[_0x6829('0x27')]?_0x198937[_0x6829('0x131')](_0x40e541[_0x6829('0x25')],_0x40e541[_0x6829('0x25')]+_0x40e541[_0x6829('0x27')]):_0x198937;return _0x3af017;})[_0x6829('0x2f')](respondWithFilteredResult(_0x253991,_0x40e541))['catch'](handleError(_0x253991,null));};
\ No newline at end of file
+var _0x6f24=['VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','bulkCreate','duplicates','spread','Tag','color','omit','cf_%d','$and','pickBy','format','table','id\x20=\x20?','toParam','text','phone','getTags','findOne','rawAttributes','options','setTags','ids','getHoppers','ContactId','includeAll','include','getHopperHistories','getHopperFinals','getJscriptySessions','uploadCsv','No\x20association\x20keys\x20specified!','No\x20association\x20values\x20specified!','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','binding_keys','binding_values','Incorrect\x20binding\x20parameters\x20passed!','root','server/files/tmp','file','chmodSync','child_process','fork','socket_timestamp','File\x20uploaded\x20correctly!','pid','createReadStream','import','binding','firstName','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','getJourney','mail','chat','sms','openchannel','fax','whatsapp','-createdAt','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','voice','uniqueid','source','destination','starttime','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','findAndCountAll','fullname','startCase','Website','Account','closed','disposition','thirdDisposition','key','Owner','browserName','customerIp','customerPort','deviceModel','osName','ratingType','ratingValue','referer','subject','substatus','Interaction','all','sortBy','slice','moment','bluebird','path','lodash','squel','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','./cmContact.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','name','send','CmContact','describe','keys','length','startsWith','cf_','CmCustomField','type','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','field','from','tools_tags','select','cm_contacts','left_join','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','where','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','sqlOperator','conditions','find','value','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','uc.UserId\x20=\x20?','dateOfBirth','datetime','castTo','DATE','start','end','filter','isNil','push','ListId','c.ListId\x20IN\x20?','concat','Contact','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','isArray','tag','replace','isNumeric','c.id\x20LIKE\x20?','c.mobile\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','c.id','Sequelize','QueryTypes','SELECT','clone','DESC','isEmpty','having','t.id\x20IN\x20?','resolve','agent','some','user','getLists','c.ListId\x20IS\x20NULL','role','sequelize','toString','keyBy','merge','c.firstName','c.lastName','c.phone','c.mobile','c.fax','c.email','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','params','tags','columnName','displayName','analytics','findAll','alias','custom','values','body','get','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsMessage','FaxInteraction','FaxMessage','OpenchannelMessage','CmHopperFinal','CmHopperHistory','ReportAgentPreview'];(function(_0x108adc,_0x25d9ff){var _0x4b44a6=function(_0x33c7ea){while(--_0x33c7ea){_0x108adc['push'](_0x108adc['shift']());}};_0x4b44a6(++_0x25d9ff);}(_0x6f24,0x76));var _0x46f2=function(_0x406e46,_0x5799cb){_0x406e46=_0x406e46-0x0;var _0x4a3742=_0x6f24[_0x406e46];return _0x4a3742;};'use strict';var moment=require(_0x46f2('0x0'));var BPromise=require(_0x46f2('0x1'));var util=require('util');var path=require(_0x46f2('0x2'));var fs=require('fs');var _=require(_0x46f2('0x3'));var squel=require(_0x46f2('0x4'));var Papa=require('papaparse');var Redis=require(_0x46f2('0x5'));var qs=require('../../components/parsers/qs');var as=require(_0x46f2('0x6'));var logger=require(_0x46f2('0x7'))(_0x46f2('0x8'));var config=require(_0x46f2('0x9'));var db=require(_0x46f2('0xa'))['db'];config['redis']=_[_0x46f2('0xb')](config[_0x46f2('0xc')],{'host':_0x46f2('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x46f2('0xc')]));require(_0x46f2('0xe'))[_0x46f2('0xf')](socket);function respondWithResult(_0x1504b5,_0x588630){_0x588630=_0x588630||0xc8;return function(_0x49e81a){if(_0x49e81a){return _0x1504b5[_0x46f2('0x10')](_0x588630)[_0x46f2('0x11')](_0x49e81a);}};}function respondWithFilteredResult(_0x1efcba,_0xb58e96){return function(_0x52b5ca){if(_0x52b5ca){var _0x1962d3=typeof _0xb58e96[_0x46f2('0x12')]===_0x46f2('0x13')&&typeof _0xb58e96[_0x46f2('0x14')]==='undefined';var _0x2e3a99=_0x52b5ca[_0x46f2('0x15')];var _0x59ae6c=_0x1962d3?0x0:_0xb58e96[_0x46f2('0x12')];var _0x336f68=_0x1962d3?_0x52b5ca[_0x46f2('0x15')]:_0xb58e96[_0x46f2('0x12')]+_0xb58e96[_0x46f2('0x14')];var _0x44acf7;if(_0x336f68>=_0x2e3a99){_0x336f68=_0x2e3a99;_0x44acf7=0xc8;}else{_0x44acf7=0xce;}_0x1efcba[_0x46f2('0x10')](_0x44acf7);return _0x1efcba[_0x46f2('0x16')](_0x46f2('0x17'),_0x59ae6c+'-'+_0x336f68+'/'+_0x2e3a99)[_0x46f2('0x11')](_0x52b5ca);}return null;};}function saveUpdates(_0x5c885d){return function(_0x29a312){if(_0x29a312){return _0x29a312[_0x46f2('0x18')](_0x5c885d)[_0x46f2('0x19')](function(_0x3361ea){return _0x3361ea;});}return null;};}function removeEntity(_0x29d51a){return function(_0x2f3f17){if(_0x2f3f17){return _0x2f3f17[_0x46f2('0x1a')]()['then'](function(){_0x29d51a[_0x46f2('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0x15ecb2){return function(_0x9587e2){if(!_0x9587e2){_0x15ecb2['sendStatus'](0x194);}return _0x9587e2;};}function handleError(_0x5970a1,_0x45ea96){_0x45ea96=_0x45ea96||0x1f4;return function(_0x1fac0d){logger[_0x46f2('0x1b')](_0x1fac0d[_0x46f2('0x1c')]);if(_0x1fac0d[_0x46f2('0x1d')]){delete _0x1fac0d[_0x46f2('0x1d')];}_0x5970a1['status'](_0x45ea96)[_0x46f2('0x1e')](_0x1fac0d);};}exports['index']=function(_0x264568,_0x593c6f){var _0x2317e7={},_0x348712={},_0x2790f6={'count':0x0,'rows':[]};return db[_0x46f2('0x1f')][_0x46f2('0x20')]()[_0x46f2('0x19')](function(_0x4d2d7c){var _0x3a2667=[];for(var _0x1e6d76=0x0;_0x1e6d76<Object[_0x46f2('0x21')](_0x4d2d7c)[_0x46f2('0x22')];_0x1e6d76++){var _0x519d27=Object[_0x46f2('0x21')](_0x4d2d7c)[_0x1e6d76];if(_[_0x46f2('0x23')](_0x519d27,_0x46f2('0x24'))){_0x3a2667['push'](db[_0x46f2('0x25')]['findOne']({'where':{'id':_['trimStart'](_0x519d27,_0x46f2('0x24'))},'raw':!![]}));}}return BPromise['all'](_0x3a2667)[_0x46f2('0x19')](function(_0x424ec1){for(var _0x48564f=0x0;_0x48564f<_0x424ec1['length'];_0x48564f++){if(_0x424ec1[_0x48564f]){var _0x1e4b64=_0x46f2('0x24')+_0x424ec1[_0x48564f]['id'];var _0xcf2258=_0x4d2d7c[_0x1e4b64];_0xcf2258['fieldType']=_0x424ec1[_0x48564f][_0x46f2('0x26')];}}return _0x4d2d7c;});})['then'](function(_0x2e2910){_0x348712['model']=_[_0x46f2('0x21')](_0x2e2910);_0x348712[_0x46f2('0x27')]=_[_0x46f2('0x21')](_0x264568[_0x46f2('0x27')]);_0x348712[_0x46f2('0x28')]=_[_0x46f2('0x29')](_0x348712[_0x46f2('0x2a')],_0x348712[_0x46f2('0x27')]);_0x2317e7[_0x46f2('0x2b')]=_[_0x46f2('0x29')](_0x348712['model'],qs[_0x46f2('0x2c')](_0x264568[_0x46f2('0x27')][_0x46f2('0x2c')]));_0x2317e7[_0x46f2('0x2b')]=_0x2317e7['attributes'][_0x46f2('0x22')]?_0x2317e7[_0x46f2('0x2b')]:_0x348712[_0x46f2('0x2a')];if(!_0x264568['query'][_0x46f2('0x2d')](_0x46f2('0x2e'))){_0x2317e7['limit']=qs[_0x46f2('0x14')](_0x264568[_0x46f2('0x27')][_0x46f2('0x14')]);_0x2317e7[_0x46f2('0x12')]=qs['offset'](_0x264568[_0x46f2('0x27')][_0x46f2('0x12')]);}_0x2317e7[_0x46f2('0x2f')]=qs[_0x46f2('0x30')](_0x264568[_0x46f2('0x27')][_0x46f2('0x30')]);_0x2317e7['where']=qs['filters'](_[_0x46f2('0x31')](_0x264568['query'],_0x348712['filters']),_0x2e2910);var _0x378ed5=[];var _0x274ce5=squel['select']()[_0x46f2('0x32')]('id')[_0x46f2('0x32')]('name')[_0x46f2('0x32')]('color')[_0x46f2('0x33')](_0x46f2('0x34'));var _0x324c67=squel[_0x46f2('0x35')]()[_0x46f2('0x33')](_0x46f2('0x36'),'c')['left_join']('cm_user_has_contacts','uc','uc.CmContactId\x20=\x20c.id')[_0x46f2('0x37')](_0x46f2('0x38'),'ct',_0x46f2('0x39'))[_0x46f2('0x37')]('tools_tags','t',_0x46f2('0x3a'))[_0x46f2('0x3b')](_0x46f2('0x3c'));var _0x375c3e=squel['expr']();var _0x514e43=[];var _0x2b160f=squel[_0x46f2('0x3d')]();var _0x21e4b5;if(_0x264568[_0x46f2('0x27')][_0x46f2('0x3e')]){_0x21e4b5=as[_0x46f2('0x3f')](_0x264568[_0x46f2('0x27')][_0x46f2('0x3e')]);var _0x6eba69=_0x21e4b5[_0x46f2('0x40')];for(var _0x426b74=0x0;_0x426b74<_0x21e4b5[_0x46f2('0x41')][_0x46f2('0x22')];_0x426b74++){var _0x4b0923=_0x21e4b5[_0x46f2('0x41')][_0x426b74];var _0x1b0049='c';var _0x3b682a=_(_0x2e2910)['keys']()[_0x46f2('0x42')](function(_0x3f6844){return _0x3f6844===_0x4b0923[_0x46f2('0x32')];});if(_0x3b682a)_0x3b682a=_0x2e2910[_0x4b0923[_0x46f2('0x32')]];if(!_0x3b682a){if(_0x4b0923[_0x46f2('0x32')]==='Tag'){var _0x4d1b40=_0x4b0923[_0x46f2('0x43')][_0x46f2('0x44')](',')[_0x46f2('0x45')](function(_0x45ec17){return Number(_0x45ec17);});_0x4d1b40[_0x46f2('0x46')](function(_0x1d90f1){_0x2b160f['or'](_0x46f2('0x47'),'%,'+_0x1d90f1+',%');});_0x514e43=_[_0x46f2('0x48')](_0x514e43,_0x4d1b40);}else if(_0x4b0923[_0x46f2('0x32')]===_0x46f2('0x49')){_0x375c3e[_0x46f2('0x4a')](_0x46f2('0x4b'),_0x4b0923[_0x46f2('0x43')]);}}else{if(_0x4b0923[_0x46f2('0x32')]===_0x46f2('0x4c')||_0x3b682a['fieldType']===_0x46f2('0x4d'))_0x4b0923[_0x46f2('0x4e')]=_0x46f2('0x4f');var _0x1967a6=as['buildExpression'](_0x1b0049,_0x3b682a[_0x46f2('0x26')],_0x4b0923);_0x375c3e[_0x6eba69](_0x1967a6['text'],_0x1967a6[_0x46f2('0x43')][_0x46f2('0x50')],_0x1967a6[_0x46f2('0x43')][_0x46f2('0x51')]);}}}else{var _0x20ae3b=_(Object[_0x46f2('0x21')](_0x264568[_0x46f2('0x27')]))['map'](function(_0x35baaf){return _0x2e2910['hasOwnProperty'](_0x35baaf)?_0x35baaf:undefined;})[_0x46f2('0x52')](function(_0x13be72){return!_[_0x46f2('0x53')](_0x13be72);})[_0x46f2('0x43')]();if(_0x264568['query']['Contact'])_0x20ae3b[_0x46f2('0x54')]('Contact');if(!_['isEmpty'](_0x20ae3b)){_0x20ae3b[_0x46f2('0x46')](function(_0x46e765){if(_0x46e765===_0x46f2('0x55')){_0x324c67['where'](_0x46f2('0x56'),[][_0x46f2('0x57')](_0x264568[_0x46f2('0x27')][_0x46e765]));}else if(_0x46e765===_0x46f2('0x58')){var _0x237283='%'+_0x264568[_0x46f2('0x27')][_0x46e765]+'%';_0x324c67[_0x46f2('0x3b')](_0x46f2('0x59'),_0x237283);}else{_0x324c67[_0x46f2('0x3b')]('c.'+_0x46e765+_0x46f2('0x5a'),_0x264568[_0x46f2('0x27')][_0x46e765]);}});}if(_0x264568[_0x46f2('0x27')]['tag']){_0x514e43=_[_0x46f2('0x5b')](_0x264568[_0x46f2('0x27')][_0x46f2('0x5c')])?_0x264568['query'][_0x46f2('0x5c')]:new Array(_0x264568[_0x46f2('0x27')]['tag']);_0x514e43[_0x46f2('0x46')](function(_0x42a85f){_0x2b160f['or'](_0x46f2('0x47'),'%,'+_0x42a85f+',%');});}if(_0x264568[_0x46f2('0x27')][_0x46f2('0x52')]){var _0x49131b=_0x264568[_0x46f2('0x27')][_0x46f2('0x52')][_0x46f2('0x5d')]('\x5c','\x5c\x5c')[_0x46f2('0x5d')](/'/g,'\x27\x27');if(_0x49131b[_0x46f2('0x44')]('\x20')[_0x46f2('0x22')]>0x1){_0x375c3e['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x49131b),null);}else{if(qs[_0x46f2('0x5e')](_0x49131b)){_0x375c3e['or'](_0x46f2('0x5f'),_0x49131b+'%');_0x375c3e['or']('c.phone\x20LIKE\x20?',_0x49131b+'%');_0x375c3e['or'](_0x46f2('0x60'),_0x49131b+'%');_0x375c3e['or']('c.fax\x20LIKE\x20?',_0x49131b+'%');}else if(qs[_0x46f2('0x61')](_0x49131b)){_0x375c3e['or'](_0x46f2('0x62'),_0x49131b+'%');}else{_0x375c3e['or'](_0x46f2('0x63'),'%'+_0x49131b+'%');_0x375c3e['or'](_0x46f2('0x64'),'%'+_0x49131b+'%');_0x375c3e['or'](_0x46f2('0x62'),'%'+_0x49131b+'%');}}}}_0x324c67[_0x46f2('0x3b')](_0x375c3e);_0x324c67['group'](_0x46f2('0x65'));var _0x4b76e8={'type':db[_0x46f2('0x66')][_0x46f2('0x67')][_0x46f2('0x68')],'raw':!![]};var _0x169570=_0x324c67[_0x46f2('0x69')]()[_0x46f2('0x32')](_0x46f2('0x65'));if(_0x2317e7['order']){_0x2317e7['order'][_0x46f2('0x46')](function(_0x157ebf){_0x324c67['order']('c.'+_0x157ebf[0x0],_0x157ebf[0x1]===_0x46f2('0x6a')?![]:!![]);});}if(!_[_0x46f2('0x6b')](_0x514e43)){_0x324c67[_0x46f2('0x6c')](_0x2b160f);_0x169570[_0x46f2('0x3b')](_0x46f2('0x6d'),_0x514e43);}BPromise[_0x46f2('0x6e')]()[_0x46f2('0x19')](function(){if(!_0x21e4b5)return;if(_0x264568['user']['role']!==_0x46f2('0x6f'))return;if(!_[_0x46f2('0x70')](_0x21e4b5['conditions'],[_0x46f2('0x32'),'User'])){return _0x264568[_0x46f2('0x71')][_0x46f2('0x72')]({'attributes':['id'],'raw':!![]})['then'](function(_0x1cd27e){if(_[_0x46f2('0x6b')](_0x1cd27e)){_0x169570[_0x46f2('0x3b')](_0x46f2('0x73'));_0x324c67[_0x46f2('0x3b')](_0x46f2('0x73'));}else{_0x169570[_0x46f2('0x3b')]('c.ListId\x20IN\x20?',_[_0x46f2('0x45')](_0x1cd27e,'id'));_0x324c67[_0x46f2('0x3b')](_0x46f2('0x56'),_[_0x46f2('0x45')](_0x1cd27e,'id'));}});}})[_0x46f2('0x19')](function(){if(_0x264568[_0x46f2('0x71')][_0x46f2('0x74')]===_0x46f2('0x6f')&&!_0x21e4b5&&!_0x264568['query']['ListId'])return[];return db[_0x46f2('0x75')][_0x46f2('0x27')](_0x169570['toString'](),_0x4b76e8);})[_0x46f2('0x19')](function(_0x1f2801){_0x2790f6['count']=_0x1f2801[_0x46f2('0x22')];if(_0x2790f6[_0x46f2('0x15')]===0x0)return[];return db['sequelize'][_0x46f2('0x27')](_0x274ce5[_0x46f2('0x76')](),_0x4b76e8)[_0x46f2('0x19')](function(_0x11aea8){_0x378ed5=_[_0x46f2('0x77')](_0x11aea8,'id');_0x4b76e8=_[_0x46f2('0x78')](_0x4b76e8,{'model':db[_0x46f2('0x1f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x264568[_0x46f2('0x27')][_0x46f2('0x2c')]){_0x2317e7[_0x46f2('0x2b')]['forEach'](function(_0x22c3ae){_0x324c67[_0x46f2('0x32')]('c.'+_0x22c3ae);});}else{_0x324c67[_0x46f2('0x32')]('c.id');_0x324c67['field'](_0x46f2('0x79'));_0x324c67['field'](_0x46f2('0x7a'));_0x324c67['field'](_0x46f2('0x7b'));_0x324c67[_0x46f2('0x32')](_0x46f2('0x7c'));_0x324c67['field'](_0x46f2('0x7d'));_0x324c67[_0x46f2('0x32')](_0x46f2('0x7e'));_0x324c67['field'](_0x46f2('0x7f'));_0x324c67[_0x46f2('0x32')](_0x46f2('0x80'));_0x324c67[_0x46f2('0x32')](_0x46f2('0x81'));_0x324c67[_0x46f2('0x32')](_0x46f2('0x82'));_0x324c67[_0x46f2('0x32')](_0x46f2('0x83'),_0x46f2('0x84'));}if(_0x2317e7['limit'])_0x324c67[_0x46f2('0x14')](_0x2317e7['limit']);if(_0x2317e7[_0x46f2('0x12')])_0x324c67[_0x46f2('0x12')](_0x2317e7[_0x46f2('0x12')]);return db['sequelize']['query'](_0x324c67[_0x46f2('0x76')](),_0x4b76e8);});})['then'](function(_0x5dd1ed){_0x5dd1ed[_0x46f2('0x46')](function(_0x1a26bd){if(_0x1a26bd['TagIds']){_0x1a26bd[_0x46f2('0x85')]=[];_0x1a26bd[_0x46f2('0x84')]['split'](',')[_0x46f2('0x46')](function(_0x3ea013){_0x1a26bd[_0x46f2('0x85')][_0x46f2('0x54')](_0x378ed5[_0x3ea013]);});}delete _0x1a26bd['TagIds'];});_0x2790f6[_0x46f2('0x86')]=_0x5dd1ed;return _0x2790f6;})[_0x46f2('0x19')](respondWithFilteredResult(_0x593c6f,_0x2317e7));})[_0x46f2('0x87')](handleError(_0x593c6f,null));};exports['destroy']=function(_0x42b9b4,_0x328cad){return db[_0x46f2('0x1f')]['find']({'where':{'id':_0x42b9b4[_0x46f2('0x88')]['id']}})[_0x46f2('0x19')](handleEntityNotFound(_0x328cad,null))[_0x46f2('0x19')](removeEntity(_0x328cad,null))[_0x46f2('0x87')](handleError(_0x328cad,null));};exports[_0x46f2('0x20')]=function(_0x210eab,_0x436c40){return db[_0x46f2('0x1f')][_0x46f2('0x20')]()[_0x46f2('0x19')](function(_0x3507bd){delete _0x3507bd[_0x46f2('0x89')];for(var _0x4ee954=0x0;_0x4ee954<Object[_0x46f2('0x21')](_0x3507bd)[_0x46f2('0x22')];_0x4ee954++){var _0x3d9c51=Object['keys'](_0x3507bd)[_0x4ee954];if(!_[_0x46f2('0x23')](_0x3d9c51,_0x46f2('0x24'))){_0x3507bd[_0x3d9c51][_0x46f2('0x8a')]=_0x3d9c51;_0x3507bd[_0x3d9c51][_0x46f2('0x8b')]=_0x3d9c51;}}return _0x3507bd;})[_0x46f2('0x19')](function(_0x1e7e74){var _0x5e3de3={'where':Boolean(_0x210eab[_0x46f2('0x27')][_0x46f2('0x8c')])===!![]?undefined:{'$or':[{'ListId':_0x210eab['query']['id']},{'ListId':null}]},'raw':!![]};return db[_0x46f2('0x25')][_0x46f2('0x8d')](_0x5e3de3)[_0x46f2('0x19')](function(_0x307228){for(var _0x56268d=0x0;_0x56268d<_0x307228[_0x46f2('0x22')];_0x56268d++){var _0x12a457=_0x46f2('0x24')+_0x307228[_0x56268d]['id'];_0x1e7e74[_0x12a457]['columnName']=_0x12a457;_0x1e7e74[_0x12a457][_0x46f2('0x8b')]=_0x307228[_0x56268d][_0x46f2('0x8e')];_0x1e7e74[_0x12a457][_0x46f2('0x8f')]={'type':_0x307228[_0x56268d][_0x46f2('0x26')],'values':_0x307228[_0x56268d][_0x46f2('0x90')]};}Object['keys'](_0x1e7e74)['forEach'](function(_0x466df9){if(!_0x1e7e74[_0x466df9]['hasOwnProperty'](_0x46f2('0x8a'))){delete _0x1e7e74[_0x466df9];}});return _0x1e7e74;});})[_0x46f2('0x19')](respondWithResult(_0x436c40,null))[_0x46f2('0x87')](handleError(_0x436c40,null));};exports['merge']=function(_0x575618,_0x4f453f){var _0x59157c;var _0x4c38f5;var _0x6c4681;if(_0x575618['body']['id']){delete _0x575618['body']['id'];}return db[_0x46f2('0x1f')]['findAll']({'where':{'id':[_0x575618[_0x46f2('0x91')]['to'],_0x575618[_0x46f2('0x91')][_0x46f2('0x33')]]}})[_0x46f2('0x19')](function(_0x5ddcdf){if(_0x5ddcdf){if(_0x5ddcdf[_0x46f2('0x22')]!==0x2){return null;}_0x5ddcdf[0x0]=_0x5ddcdf[0x0][_0x46f2('0x92')]({'plain':!![]});_0x5ddcdf[0x1]=_0x5ddcdf[0x1]['get']({'plain':!![]});delete _0x5ddcdf[0x0]['id'];delete _0x5ddcdf[0x1]['id'];return _['mergeWith'](_0x5ddcdf[0x0],_0x5ddcdf[0x1],function(_0x88444e,_0x23cb9){if(Array[_0x46f2('0x5b')](_0x23cb9)&&!_0x23cb9[_0x46f2('0x22')]){return _0x88444e;}else if(!_0x23cb9){return _0x88444e;}});}})[_0x46f2('0x19')](handleEntityNotFound(_0x4f453f,null))[_0x46f2('0x19')](function(_0x4f2cf6){if(_0x4f2cf6){if(_0x4f2cf6['tags']&&_[_0x46f2('0x5b')](_0x4f2cf6['tags'])){_0x4f2cf6[_0x46f2('0x89')]=_0x4f2cf6[_0x46f2('0x89')][_0x46f2('0x93')]();}logger[_0x46f2('0x94')](_0x46f2('0x95'),_0x575618[_0x46f2('0x91')]['to'],_0x575618['body'][_0x46f2('0x33')]);return db[_0x46f2('0x96')][_0x46f2('0x1a')]({'where':{'ContactId':[_0x575618[_0x46f2('0x91')]['to'],_0x575618[_0x46f2('0x91')]['from']]}})[_0x46f2('0x19')](function(_0x506898){logger[_0x46f2('0x94')](_0x46f2('0x97'),_0x506898);return db['CmHopperBlack'][_0x46f2('0x1a')]({'where':{'ContactId':[_0x575618[_0x46f2('0x91')]['to'],_0x575618[_0x46f2('0x91')][_0x46f2('0x33')]]}})[_0x46f2('0x19')](function(_0x52e5e4){logger[_0x46f2('0x94')]('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0x52e5e4);return db[_0x46f2('0x1f')][_0x46f2('0x98')](_0x4f2cf6);});});}})[_0x46f2('0x19')](function(_0x2b4401){if(_0x2b4401){_0x59157c=_0x2b4401;_0x4c38f5={'ContactId':_0x59157c['id']};_0x6c4681={'where':{'ContactId':[_0x575618[_0x46f2('0x91')]['to'],_0x575618[_0x46f2('0x91')][_0x46f2('0x33')]]}};return db[_0x46f2('0x99')]['update'](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0x9a')]['update'](_0x4c38f5,_0x6c4681);}})['then'](function(){if(_0x59157c){return db[_0x46f2('0x9b')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0x9c')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0x9d')]['update'](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0x9c')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db['MailMessage'][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db['SmsInteraction']['update'](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0x9e')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0x9f')]['update'](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0xa0')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db['OpenchannelInteraction'][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0xa1')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0xa2')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0xa3')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0xa4')]['update'](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0xa5')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})['then'](function(){if(_0x59157c){return db[_0x46f2('0xa6')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0xa7')]['update'](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0xa8')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0xa9')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0xaa')]['update'](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0xab')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0xac')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})['then'](function(){if(_0x59157c){return db[_0x46f2('0xad')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db[_0x46f2('0xae')][_0x46f2('0x18')](_0x4c38f5,_0x6c4681);}})[_0x46f2('0x19')](function(){if(_0x59157c){return db['CmContact']['destroy']({'where':{'id':[_0x575618['body']['to'],_0x575618[_0x46f2('0x91')]['from']]}});}})['then'](function(){if(_0x59157c){return _0x59157c;}})['then'](respondWithResult(_0x4f453f,null))[_0x46f2('0x87')](handleError(_0x4f453f,null));};exports[_0x46f2('0x98')]=function(_0x42bdd0,_0x454f50){return db[_0x46f2('0x1f')]['describe']()[_0x46f2('0x19')](function(_0x473ddd){if(_0x42bdd0[_0x46f2('0x91')]['tags']&&_[_0x46f2('0x5b')](_0x42bdd0[_0x46f2('0x91')][_0x46f2('0x89')])){if(_0x42bdd0[_0x46f2('0x91')]['tags'][_0x46f2('0x22')]){_0x42bdd0['body']['tags']=_0x42bdd0[_0x46f2('0x91')][_0x46f2('0x89')][_0x46f2('0x93')](';')+';';}else{_0x42bdd0[_0x46f2('0x91')][_0x46f2('0x89')]=null;}}else{_0x42bdd0[_0x46f2('0x91')]['tags']=null;}return db['CmContact'][_0x46f2('0x98')](_0x42bdd0['body'],{'fields':_[_0x46f2('0x21')](_0x473ddd),'raw':!![]});})['then'](respondWithResult(_0x454f50,0xc9))['catch'](handleError(_0x454f50,null));};exports[_0x46f2('0xaf')]=function(_0x4c069d,_0x5bf463){var _0x2196b6=0x0;var _0x3abfdc=0x0;var _0x401718=0x0;return db['CmContact'][_0x46f2('0x20')]()[_0x46f2('0x19')](function(_0x122774){return BPromise['each'](_0x4c069d[_0x46f2('0x91')],function(_0x494941){var _0x32917a={'where':{'$or':[]},'defaults':_0x494941,'fields':_['keys'](_0x122774),'raw':!![]};if(_0x494941[_0x46f2('0xb0')]){for(var _0x2b6b3f=0x0;_0x2b6b3f<_0x494941[_0x46f2('0xb0')]['length'];_0x2b6b3f++){var _0x4a5315={};_0x4a5315[_0x494941[_0x46f2('0xb0')][_0x2b6b3f]]=_0x494941[_0x494941[_0x46f2('0xb0')][_0x2b6b3f]];_0x32917a[_0x46f2('0x3b')]['$or'][_0x46f2('0x54')](_0x4a5315);}_0x32917a['where'][_0x46f2('0x55')]=_0x494941['ListId'];}return db['CmContact']['findOrCreate'](_0x32917a)[_0x46f2('0xb1')](function(_0x1d0890,_0x2ca75d){if(_0x2ca75d){_0x2196b6++;}else{_0x401718++;}})['catch'](function(){_0x3abfdc++;});});})['then'](function(_0x529aff){if(_0x529aff){return{'success':_0x2196b6,'failure':_0x3abfdc,'duplicates':_0x401718};}})[_0x46f2('0x19')](respondWithResult(_0x5bf463,0xc9))[_0x46f2('0x87')](handleError(_0x5bf463,null));};exports['show']=function(_0x214560,_0x5ad9c7){var _0x29f6ad;return db[_0x46f2('0x1f')]['describe']()[_0x46f2('0x19')](function(_0x15b387){return db[_0x46f2('0x1f')][_0x46f2('0x42')]({'where':{'id':_0x214560[_0x46f2('0x88')]['id']},'include':[{'model':db[_0x46f2('0xb2')],'as':_0x46f2('0x85'),'attributes':['id','name',_0x46f2('0xb3')],'required':_0x214560['query'][_0x46f2('0x5c')]?!![]:![]}],'attributes':_[_0x46f2('0x21')](_0x15b387)});})[_0x46f2('0x19')](function(_0x1e8a6e){if(!_['isNil'](_0x1e8a6e)){_0x29f6ad=_0x1e8a6e['get']({'plain':!![]});var _0x42471a={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x1e8a6e&&_0x1e8a6e['ListId']){if(_0x1e8a6e[_0x46f2('0x55')]){_0x42471a[_0x46f2('0x3b')]['$and'][_0x46f2('0x54')]({'ListId':{'$ne':_0x1e8a6e[_0x46f2('0x55')]}});}}return db['CmCustomField']['findAll'](_0x42471a);}})[_0x46f2('0x19')](function(_0x21d24f){if(!_['isNil'](_0x21d24f)){return _[_0x46f2('0xb4')](_0x29f6ad,_['map'](_0x21d24f,function(_0xd011e8){return util['format'](_0x46f2('0xb5'),_0xd011e8['id']);}));}})[_0x46f2('0x19')](handleEntityNotFound(_0x5ad9c7,null))[_0x46f2('0x19')](respondWithResult(_0x5ad9c7,null))['catch'](handleError(_0x5ad9c7,null));};exports[_0x46f2('0x18')]=function(_0x49f6df,_0x5f2e8d){var _0x732a71;if(_0x49f6df[_0x46f2('0x91')]['id']){delete _0x49f6df[_0x46f2('0x91')]['id'];}return db[_0x46f2('0x1f')][_0x46f2('0x42')]({'where':{'id':_0x49f6df['params']['id']}})[_0x46f2('0x19')](handleEntityNotFound(_0x5f2e8d,null))[_0x46f2('0x19')](saveUpdates(_0x49f6df['body'],null))[_0x46f2('0x19')](function(_0xbb0c2b){_0x732a71=_0xbb0c2b;var _0x53043a={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xbb0c2b&&_0xbb0c2b['ListId']){if(_0xbb0c2b[_0x46f2('0x55')]){_0x53043a[_0x46f2('0x3b')][_0x46f2('0xb6')]['push']({'ListId':{'$ne':_0xbb0c2b[_0x46f2('0x55')]}});}}return db[_0x46f2('0x25')][_0x46f2('0x8d')](_0x53043a);})[_0x46f2('0x19')](function(_0x5d315c){if(_0x5d315c){return _[_0x46f2('0xb4')](_[_0x46f2('0xb7')](_0x49f6df[_0x46f2('0x91')],function(_0x3c7043,_0x3543e1){return _[_0x46f2('0x23')](_0x3543e1,_0x46f2('0x24'));}),_[_0x46f2('0x45')](_0x5d315c,function(_0x5b96c6){return util[_0x46f2('0xb8')](_0x46f2('0xb5'),_0x5b96c6['id']);}));}})['then'](function(_0x18da61){if(_0x18da61&&!_[_0x46f2('0x6b')](_0x18da61)){var _0x48eb12=squel[_0x46f2('0x18')]()[_0x46f2('0xb9')](_0x46f2('0x36'))['setFields'](_0x18da61)[_0x46f2('0x3b')](_0x46f2('0xba'),_0x49f6df[_0x46f2('0x88')]['id'])[_0x46f2('0xbb')]();return db[_0x46f2('0x75')][_0x46f2('0x27')](_0x48eb12[_0x46f2('0xbc')],{'replacements':_0x48eb12['values']});}})[_0x46f2('0x19')](function(){if(_0x49f6df['body'][_0x46f2('0xbd')]&&_0x732a71){return db[_0x46f2('0x96')][_0x46f2('0x18')]({'phone':_0x49f6df['body'][_0x46f2('0xbd')]},{'where':{'ContactId':_0x732a71['id']}});}})[_0x46f2('0x19')](function(){return _0x732a71;})[_0x46f2('0x19')](respondWithResult(_0x5f2e8d,null))[_0x46f2('0x87')](handleError(_0x5f2e8d,null));};exports[_0x46f2('0xbe')]=function(_0x294fdb,_0x18d66a){var _0x40e7d9={};var _0x152252={};var _0x505c26;var _0x2bae07;return db[_0x46f2('0x1f')][_0x46f2('0xbf')]({'where':{'id':_0x294fdb[_0x46f2('0x88')]['id']}})['then'](handleEntityNotFound(_0x18d66a,null))[_0x46f2('0x19')](function(_0x12e243){if(_0x12e243){_0x505c26=_0x12e243;_0x152252[_0x46f2('0x2a')]=_[_0x46f2('0x21')](db[_0x46f2('0xb2')][_0x46f2('0xc0')]);_0x152252['query']=_['keys'](_0x294fdb[_0x46f2('0x27')]);_0x152252[_0x46f2('0x28')]=_[_0x46f2('0x29')](_0x152252['model'],_0x152252[_0x46f2('0x27')]);_0x40e7d9['attributes']=_[_0x46f2('0x29')](_0x152252[_0x46f2('0x2a')],qs[_0x46f2('0x2c')](_0x294fdb[_0x46f2('0x27')][_0x46f2('0x2c')]));_0x40e7d9['attributes']=_0x40e7d9[_0x46f2('0x2b')]['length']?_0x40e7d9[_0x46f2('0x2b')]:_0x152252[_0x46f2('0x2a')];_0x40e7d9[_0x46f2('0x2f')]=qs[_0x46f2('0x30')](_0x294fdb['query'][_0x46f2('0x30')]);_0x40e7d9['where']=qs[_0x46f2('0x28')](_[_0x46f2('0x31')](_0x294fdb['query'],_0x152252['filters']));if(_0x294fdb[_0x46f2('0x27')]['filter']){_0x40e7d9['where']=_['merge'](_0x40e7d9['where'],{'$or':_[_0x46f2('0x45')](_0x40e7d9[_0x46f2('0x2b')],function(_0x14294c){var _0x33227f={};_0x33227f[_0x14294c]={'$like':'%'+_0x294fdb['query']['filter']+'%'};return _0x33227f;})});}_0x40e7d9=_[_0x46f2('0x78')]({},_0x40e7d9,_0x294fdb[_0x46f2('0xc1')]);return _0x505c26[_0x46f2('0xbe')](_0x40e7d9);}})['then'](function(_0x397496){if(_0x397496){_0x2bae07=_0x397496[_0x46f2('0x22')];if(!_0x294fdb[_0x46f2('0x27')][_0x46f2('0x2d')](_0x46f2('0x2e'))){_0x40e7d9[_0x46f2('0x14')]=qs['limit'](_0x294fdb[_0x46f2('0x27')][_0x46f2('0x14')]);_0x40e7d9[_0x46f2('0x12')]=qs[_0x46f2('0x12')](_0x294fdb[_0x46f2('0x27')][_0x46f2('0x12')]);}return _0x505c26['getTags'](_0x40e7d9);}})['then'](function(_0x52101a){if(_0x52101a){return _0x52101a?{'count':_0x2bae07,'rows':_0x52101a}:null;}})['then'](respondWithResult(_0x18d66a,null))[_0x46f2('0x87')](handleError(_0x18d66a,null));};exports[_0x46f2('0xc2')]=function(_0xad3208,_0x1271be){if(_0xad3208[_0x46f2('0x91')]['id']){delete _0xad3208[_0x46f2('0x91')]['id'];}return db[_0x46f2('0x1f')]['findOne']({'where':{'id':_0xad3208[_0x46f2('0x88')]['id']}})[_0x46f2('0x19')](handleEntityNotFound(_0x1271be,null))[_0x46f2('0x19')](function(_0x48e6e0){if(_0x48e6e0){return _0x48e6e0['setTags'](_0xad3208[_0x46f2('0x91')][_0x46f2('0xc3')]||[]);}return null;})[_0x46f2('0x19')](respondWithResult(_0x1271be,null))[_0x46f2('0x87')](handleError(_0x1271be,null));};exports[_0x46f2('0xc4')]=function(_0x48ea85,_0x576a64){var _0x4e614f={'raw':![],'where':{}};var _0x12f41e={};var _0xf10522={'count':0x0,'rows':[]};return db[_0x46f2('0x1f')]['findOne']({'where':{'id':_0x48ea85[_0x46f2('0x88')]['id']}})[_0x46f2('0x19')](handleEntityNotFound(_0x576a64,null))[_0x46f2('0x19')](function(_0x557224){if(_0x557224){_0x12f41e[_0x46f2('0x2a')]=_[_0x46f2('0x21')](db[_0x46f2('0x96')]['rawAttributes']);_0x12f41e['query']=_['keys'](_0x48ea85[_0x46f2('0x27')]);_0x12f41e[_0x46f2('0x28')]=_['intersection'](_0x12f41e['model'],_0x12f41e[_0x46f2('0x27')]);_0x4e614f['attributes']=_[_0x46f2('0x29')](_0x12f41e['model'],qs[_0x46f2('0x2c')](_0x48ea85['query']['fields']));_0x4e614f[_0x46f2('0x2b')]=_0x4e614f[_0x46f2('0x2b')][_0x46f2('0x22')]?_0x4e614f[_0x46f2('0x2b')]:_0x12f41e[_0x46f2('0x2a')];if(!_0x48ea85[_0x46f2('0x27')]['hasOwnProperty'](_0x46f2('0x2e'))){_0x4e614f[_0x46f2('0x14')]=qs['limit'](_0x48ea85[_0x46f2('0x27')][_0x46f2('0x14')]);_0x4e614f[_0x46f2('0x12')]=qs[_0x46f2('0x12')](_0x48ea85['query'][_0x46f2('0x12')]);}_0x4e614f[_0x46f2('0x2f')]=qs['sort'](_0x48ea85[_0x46f2('0x27')][_0x46f2('0x30')]);_0x4e614f[_0x46f2('0x3b')]=qs[_0x46f2('0x28')](_['pick'](_0x48ea85[_0x46f2('0x27')],_0x12f41e['filters']));_0x4e614f[_0x46f2('0x3b')][_0x46f2('0xc5')]=_0x557224['id'];if(_0x48ea85['query'][_0x46f2('0x52')]){_0x4e614f[_0x46f2('0x3b')]=_['merge'](_0x4e614f[_0x46f2('0x3b')],{'$or':_[_0x46f2('0x45')](_0x4e614f[_0x46f2('0x2b')],function(_0x4a3d14){var _0x5ef335={};_0x5ef335[_0x4a3d14]={'$like':'%'+_0x48ea85[_0x46f2('0x27')]['filter']+'%'};return _0x5ef335;})});}_0x4e614f=_[_0x46f2('0x78')]({},_0x4e614f,_0x48ea85['options']);return db[_0x46f2('0x96')]['count']({'where':_0x4e614f['where']})[_0x46f2('0x19')](function(_0x34d141){_0xf10522['count']=_0x34d141;if(_0x48ea85[_0x46f2('0x27')][_0x46f2('0xc6')]){_0x4e614f[_0x46f2('0xc7')]=[{'all':!![]}];}return db[_0x46f2('0x96')][_0x46f2('0x8d')](_0x4e614f);})['then'](function(_0x458229){_0xf10522[_0x46f2('0x86')]=_0x458229;return _0xf10522;});}})[_0x46f2('0x19')](respondWithFilteredResult(_0x576a64,_0x4e614f))[_0x46f2('0x87')](handleError(_0x576a64,null));};exports[_0x46f2('0xc8')]=function(_0x4507f6,_0x4125be){var _0x2eb065={'raw':!![],'where':{}};var _0x4bb348={};var _0x3027e4={'count':0x0,'rows':[]};return db[_0x46f2('0x1f')][_0x46f2('0xbf')]({'where':{'id':_0x4507f6['params']['id']}})[_0x46f2('0x19')](handleEntityNotFound(_0x4125be,null))[_0x46f2('0x19')](function(_0x53f8b){if(_0x53f8b){_0x4bb348['model']=_[_0x46f2('0x21')](db[_0x46f2('0xa3')][_0x46f2('0xc0')]);_0x4bb348['query']=_['keys'](_0x4507f6[_0x46f2('0x27')]);_0x4bb348['filters']=_[_0x46f2('0x29')](_0x4bb348[_0x46f2('0x2a')],_0x4bb348['query']);_0x2eb065['attributes']=_[_0x46f2('0x29')](_0x4bb348[_0x46f2('0x2a')],qs[_0x46f2('0x2c')](_0x4507f6[_0x46f2('0x27')]['fields']));_0x2eb065[_0x46f2('0x2b')]=_0x2eb065[_0x46f2('0x2b')][_0x46f2('0x22')]?_0x2eb065[_0x46f2('0x2b')]:_0x4bb348['model'];if(!_0x4507f6[_0x46f2('0x27')][_0x46f2('0x2d')](_0x46f2('0x2e'))){_0x2eb065[_0x46f2('0x14')]=qs[_0x46f2('0x14')](_0x4507f6[_0x46f2('0x27')]['limit']);_0x2eb065[_0x46f2('0x12')]=qs['offset'](_0x4507f6['query'][_0x46f2('0x12')]);}_0x2eb065[_0x46f2('0x2f')]=qs[_0x46f2('0x30')](_0x4507f6[_0x46f2('0x27')][_0x46f2('0x30')]);_0x2eb065[_0x46f2('0x3b')]=qs['filters'](_[_0x46f2('0x31')](_0x4507f6[_0x46f2('0x27')],_0x4bb348[_0x46f2('0x28')]));_0x2eb065[_0x46f2('0x3b')]['ContactId']=_0x53f8b['id'];if(_0x4507f6[_0x46f2('0x27')]['filter']){_0x2eb065[_0x46f2('0x3b')]=_[_0x46f2('0x78')](_0x2eb065[_0x46f2('0x3b')],{'$or':_[_0x46f2('0x45')](_0x2eb065['attributes'],function(_0x580fff){var _0x6a74a2={};_0x6a74a2[_0x580fff]={'$like':'%'+_0x4507f6[_0x46f2('0x27')][_0x46f2('0x52')]+'%'};return _0x6a74a2;})});}_0x2eb065=_['merge']({},_0x2eb065,_0x4507f6[_0x46f2('0xc1')]);return db[_0x46f2('0xa3')]['count']({'where':_0x2eb065['where']})[_0x46f2('0x19')](function(_0x1495e1){_0x3027e4[_0x46f2('0x15')]=_0x1495e1;if(_0x4507f6[_0x46f2('0x27')][_0x46f2('0xc6')]){_0x2eb065['include']=[{'all':!![]}];}return db[_0x46f2('0xa3')][_0x46f2('0x8d')](_0x2eb065);})[_0x46f2('0x19')](function(_0x1ff127){_0x3027e4['rows']=_0x1ff127;return _0x3027e4;});}})[_0x46f2('0x19')](respondWithFilteredResult(_0x4125be,_0x2eb065))[_0x46f2('0x87')](handleError(_0x4125be,null));};exports[_0x46f2('0xc9')]=function(_0xc78fae,_0x563f98){var _0x432d30={'raw':!![],'where':{}};var _0x288972={};var _0x1ee616={'count':0x0,'rows':[]};return db[_0x46f2('0x1f')]['findOne']({'where':{'id':_0xc78fae[_0x46f2('0x88')]['id']}})[_0x46f2('0x19')](handleEntityNotFound(_0x563f98,null))[_0x46f2('0x19')](function(_0x44bf0d){if(_0x44bf0d){_0x288972[_0x46f2('0x2a')]=_[_0x46f2('0x21')](db[_0x46f2('0xa2')]['rawAttributes']);_0x288972['query']=_[_0x46f2('0x21')](_0xc78fae['query']);_0x288972['filters']=_[_0x46f2('0x29')](_0x288972[_0x46f2('0x2a')],_0x288972[_0x46f2('0x27')]);_0x432d30['attributes']=_[_0x46f2('0x29')](_0x288972[_0x46f2('0x2a')],qs['fields'](_0xc78fae['query']['fields']));_0x432d30[_0x46f2('0x2b')]=_0x432d30[_0x46f2('0x2b')][_0x46f2('0x22')]?_0x432d30['attributes']:_0x288972[_0x46f2('0x2a')];if(!_0xc78fae[_0x46f2('0x27')][_0x46f2('0x2d')]('nolimit')){_0x432d30[_0x46f2('0x14')]=qs[_0x46f2('0x14')](_0xc78fae[_0x46f2('0x27')][_0x46f2('0x14')]);_0x432d30['offset']=qs[_0x46f2('0x12')](_0xc78fae['query'][_0x46f2('0x12')]);}_0x432d30[_0x46f2('0x2f')]=qs[_0x46f2('0x30')](_0xc78fae[_0x46f2('0x27')]['sort']);_0x432d30[_0x46f2('0x3b')]=qs[_0x46f2('0x28')](_[_0x46f2('0x31')](_0xc78fae[_0x46f2('0x27')],_0x288972['filters']));_0x432d30[_0x46f2('0x3b')][_0x46f2('0xc5')]=_0x44bf0d['id'];if(_0xc78fae[_0x46f2('0x27')][_0x46f2('0x52')]){_0x432d30[_0x46f2('0x3b')]=_['merge'](_0x432d30[_0x46f2('0x3b')],{'$or':_[_0x46f2('0x45')](_0x432d30['attributes'],function(_0x183793){var _0x17c548={};_0x17c548[_0x183793]={'$like':'%'+_0xc78fae[_0x46f2('0x27')]['filter']+'%'};return _0x17c548;})});}_0x432d30=_[_0x46f2('0x78')]({},_0x432d30,_0xc78fae['options']);return db['CmHopperFinal'][_0x46f2('0x15')]({'where':_0x432d30['where']})[_0x46f2('0x19')](function(_0x50653c){_0x1ee616[_0x46f2('0x15')]=_0x50653c;if(_0xc78fae[_0x46f2('0x27')]['includeAll']){_0x432d30['include']=[{'all':!![]}];}return db[_0x46f2('0xa2')][_0x46f2('0x8d')](_0x432d30);})[_0x46f2('0x19')](function(_0x46abd5){_0x1ee616['rows']=_0x46abd5;return _0x1ee616;});}})[_0x46f2('0x19')](respondWithFilteredResult(_0x563f98,_0x432d30))['catch'](handleError(_0x563f98,null));};exports[_0x46f2('0xca')]=function(_0x4cca5c,_0x59e53e){var _0x2cdbd3={'raw':!![],'where':{}};var _0x4a3998={};var _0x38c37b={'count':0x0,'rows':[]};return db[_0x46f2('0x1f')]['findOne']({'where':{'id':_0x4cca5c[_0x46f2('0x88')]['id']}})[_0x46f2('0x19')](handleEntityNotFound(_0x59e53e,null))[_0x46f2('0x19')](function(_0x4aa0ec){if(_0x4aa0ec){_0x4a3998[_0x46f2('0x2a')]=_[_0x46f2('0x21')](db[_0x46f2('0xab')][_0x46f2('0xc0')]);_0x4a3998['query']=_['keys'](_0x4cca5c[_0x46f2('0x27')]);_0x4a3998[_0x46f2('0x28')]=_[_0x46f2('0x29')](_0x4a3998[_0x46f2('0x2a')],_0x4a3998[_0x46f2('0x27')]);_0x2cdbd3[_0x46f2('0x2b')]=_[_0x46f2('0x29')](_0x4a3998[_0x46f2('0x2a')],qs[_0x46f2('0x2c')](_0x4cca5c['query'][_0x46f2('0x2c')]));_0x2cdbd3[_0x46f2('0x2b')]=_0x2cdbd3[_0x46f2('0x2b')][_0x46f2('0x22')]?_0x2cdbd3[_0x46f2('0x2b')]:_0x4a3998[_0x46f2('0x2a')];if(!_0x4cca5c[_0x46f2('0x27')][_0x46f2('0x2d')]('nolimit')){_0x2cdbd3['limit']=qs['limit'](_0x4cca5c['query'][_0x46f2('0x14')]);_0x2cdbd3[_0x46f2('0x12')]=qs['offset'](_0x4cca5c[_0x46f2('0x27')][_0x46f2('0x12')]);}_0x2cdbd3['order']=qs['sort'](_0x4cca5c[_0x46f2('0x27')][_0x46f2('0x30')]);_0x2cdbd3[_0x46f2('0x3b')]=qs[_0x46f2('0x28')](_[_0x46f2('0x31')](_0x4cca5c[_0x46f2('0x27')],_0x4a3998[_0x46f2('0x28')]));_0x2cdbd3[_0x46f2('0x3b')][_0x46f2('0xc5')]=_0x4aa0ec['id'];if(_0x4cca5c[_0x46f2('0x27')][_0x46f2('0x52')]){_0x2cdbd3[_0x46f2('0x3b')]=_[_0x46f2('0x78')](_0x2cdbd3['where'],{'$or':_[_0x46f2('0x45')](_0x2cdbd3[_0x46f2('0x2b')],function(_0x2cb3d1){var _0x327772={};_0x327772[_0x2cb3d1]={'$like':'%'+_0x4cca5c[_0x46f2('0x27')][_0x46f2('0x52')]+'%'};return _0x327772;})});}_0x2cdbd3=_['merge']({},_0x2cdbd3,_0x4cca5c[_0x46f2('0xc1')]);return db[_0x46f2('0xab')][_0x46f2('0x15')]({'where':_0x2cdbd3[_0x46f2('0x3b')]})[_0x46f2('0x19')](function(_0x53d2e5){_0x38c37b[_0x46f2('0x15')]=_0x53d2e5;if(_0x4cca5c[_0x46f2('0x27')][_0x46f2('0xc6')]){_0x2cdbd3['include']=[{'all':!![]}];}return db[_0x46f2('0xab')][_0x46f2('0x8d')](_0x2cdbd3);})[_0x46f2('0x19')](function(_0x3ead3e){_0x38c37b[_0x46f2('0x86')]=_0x3ead3e;return _0x38c37b;});}})[_0x46f2('0x19')](respondWithFilteredResult(_0x59e53e,_0x2cdbd3))[_0x46f2('0x87')](handleError(_0x59e53e,null));};exports[_0x46f2('0xcb')]=function(_0x2802f4,_0x44e1cf){try{if(!_0x2802f4[_0x46f2('0x91')][_0x46f2('0x55')]){throw new Error('No\x20ListId\x20specified');}if(!_0x2802f4['body']['binding_keys']){throw new Error(_0x46f2('0xcc'));}if(!_0x2802f4[_0x46f2('0x91')]['binding_values']){throw new Error(_0x46f2('0xcd'));}if(!_0x2802f4[_0x46f2('0x91')]['socket_timestamp']){throw new Error(_0x46f2('0xce'));}var _0x15b88c=_0x2802f4['body'][_0x46f2('0xcf')][_0x46f2('0x44')](',');var _0x10c477=_0x2802f4['body'][_0x46f2('0xd0')]['split'](',');if(!_0x15b88c[_0x46f2('0x22')]||!_0x10c477['length']||_0x15b88c[_0x46f2('0x22')]!==_0x10c477['length']){throw new Error(_0x46f2('0xd1'));}_0x2802f4[_0x46f2('0x91')][_0x46f2('0x2c')]=_['zipObject'](_0x15b88c,_0x10c477);if(!_0x2802f4['body'][_0x46f2('0x2c')]['phone']){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x2802f4['body'][_0x46f2('0x2c')]['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}var _0x38b02f=path[_0x46f2('0x93')](config[_0x46f2('0xd2')],_0x46f2('0xd3'),_0x2802f4[_0x46f2('0xd4')]['filename']);fs[_0x46f2('0xd5')](_0x38b02f,parseInt('0777',0x8));var _0x4f7bd5=require(_0x46f2('0xd6'))[_0x46f2('0xd7')](path[_0x46f2('0x93')](__dirname,'../../components/import/cm/csv'),[_0x38b02f,_0x2802f4['body'][_0x46f2('0xcf')],_0x2802f4[_0x46f2('0x91')][_0x46f2('0xd0')],_0x2802f4[_0x46f2('0x91')]['ListId'],_0x2802f4[_0x46f2('0x91')]['CompanyId'],_0x2802f4[_0x46f2('0x91')][_0x46f2('0xb0')],_0x2802f4[_0x46f2('0x91')][_0x46f2('0xd8')]]);return _0x44e1cf[_0x46f2('0x10')](0xc8)['json']({'message':_0x46f2('0xd9'),'pid':_0x4f7bd5[_0x46f2('0xda')]});}catch(_0x3a57a0){return _0x44e1cf[_0x46f2('0x10')](0x1f4)[_0x46f2('0x1e')](_0x3a57a0);}};exports['upload']=function(_0x331805,_0x5b667f){var _0x3d992d=fs[_0x46f2('0xdb')](_0x331805[_0x46f2('0xd4')][_0x46f2('0x2')]);Papa['parse'](_0x3d992d,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x26013e){return _0x5b667f[_0x46f2('0x10')](0xc8)['json']({'file':_0x331805[_0x46f2('0xd4')],'fields':_0x26013e['meta']['fields']});}});};exports[_0x46f2('0xdc')]=function(_0x1cd62,_0xa1e8ed){return db['User'][_0x46f2('0x8d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x46f2('0x6f')}})['then'](function(_0x2d3659){var _0x51d86d=![];if(!_0x1cd62[_0x46f2('0x91')][_0x46f2('0x55')]){throw new Error('No\x20ListId\x20specified');}if(!_0x1cd62[_0x46f2('0x91')][_0x46f2('0xdd')]['phone']){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x1cd62[_0x46f2('0x91')]['binding'][_0x46f2('0xde')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x1cd62[_0x46f2('0x91')][_0x46f2('0xd8')]){throw new Error(_0x46f2('0xce'));}var _0x567c4c=require(_0x46f2('0xd6'))['fork'](path[_0x46f2('0x93')](__dirname,_0x46f2('0xdf')),[_0x1cd62[_0x46f2('0x88')]['id'],JSON[_0x46f2('0xe0')](_0x1cd62[_0x46f2('0x91')]),JSON[_0x46f2('0xe0')](_0x2d3659)]);_0x567c4c['on'](_0x46f2('0xe1'),function(){_0x51d86d=!![];return _0xa1e8ed[_0x46f2('0x10')](0xc8)[_0x46f2('0x11')]({'message':_0x46f2('0xe2'),'pid':_0x567c4c[_0x46f2('0xda')]});});_0x567c4c['on']('exit',function(_0x21ddf3){if(_0x21ddf3&&!_0x51d86d){return _0xa1e8ed['status'](0x1f4)[_0x46f2('0x11')]({'message':_0x46f2('0xe3'),'pid':_0x567c4c['pid']});}});})['catch'](handleError(_0xa1e8ed,null));};exports[_0x46f2('0xe4')]=function(_0x284aa6,_0x2cf50f){var _0x30e6aa=[_0x46f2('0xe5'),_0x46f2('0xe6'),_0x46f2('0xe7'),_0x46f2('0xe8'),_0x46f2('0xe9'),_0x46f2('0xea'),'voice'];var _0x131226={'offset':0x0,'order':qs['sort'](_0x46f2('0xeb'))},_0x3bba15={'count':0x0,'rows':[]};Promise[_0x46f2('0x6e')]()[_0x46f2('0x19')](function(){if(_0x284aa6['query'][_0x46f2('0xec')]){if(!_[_0x46f2('0xed')](_0x30e6aa,_0x284aa6[_0x46f2('0x27')]['channel'][_0x46f2('0xee')]())){throw new Error(_0x46f2('0xef'));}_0x30e6aa=[_0x284aa6[_0x46f2('0x27')][_0x46f2('0xec')][_0x46f2('0xee')]()];}if(_0x284aa6['query'][_0x46f2('0xf0')]){try{var _0x4cdcf0=JSON[_0x46f2('0xf1')](_0x284aa6[_0x46f2('0x27')][_0x46f2('0xf0')]);if(!moment(_0x4cdcf0[_0x46f2('0x33')])[_0x46f2('0xf2')]()){throw new Error(_0x46f2('0xf3'));}if(!moment(_0x4cdcf0['to'])[_0x46f2('0xf2')]()){throw new Error(_0x46f2('0xf4'));}}catch(_0x3905c1){throw new Error(_0x46f2('0xf5'));}}if(!_0x284aa6[_0x46f2('0x27')][_0x46f2('0x2d')](_0x46f2('0x2e'))){_0x131226[_0x46f2('0x14')]=qs[_0x46f2('0x14')](_0x284aa6['query']['limit']||0xa);_0x131226[_0x46f2('0x12')]=qs[_0x46f2('0x12')](_0x284aa6[_0x46f2('0x27')][_0x46f2('0x12')]);}var _0x181f26=_0x30e6aa[_0x46f2('0x45')](function(_0x373277){if(_0x373277===_0x46f2('0xf6')){var _0x2d242b={'attributes':['id',_0x46f2('0xf7'),_0x46f2('0x26'),_0x46f2('0xf8'),_0x46f2('0xf9'),'callerid',_0x46f2('0xfa'),_0x46f2('0xfb'),_0x46f2('0xfc'),_0x46f2('0xfd'),_0x46f2('0xfe'),_0x46f2('0xff'),_0x46f2('0x100'),_0x46f2('0x101'),_0x46f2('0x102')],'where':{'ContactId':_0x284aa6[_0x46f2('0x88')]['id']},'include':[{'model':db[_0x46f2('0x49')],'as':'User','attributes':['id',_0x46f2('0x1d'),'fullname',_0x46f2('0x8e')]}],'order':[[_0x46f2('0xfe'),'DESC']]};if(_0x284aa6['query']['range']){_0x2d242b['where'][_0x46f2('0xfe')]={'$gte':_0x4cdcf0['from'],'$lte':_0x4cdcf0['to']};}return db[_0x46f2('0xa5')][_0x46f2('0x103')](_0x2d242b)['then'](function(_0x14e7e4){_0x3bba15[_0x46f2('0x15')]+=_0x14e7e4['count'];return _['map'](_0x14e7e4['rows'],function(_0x588138){var _0x4c181d=_0x588138[_0x46f2('0x92')]({'plain':!![]});_0x4c181d[_0x46f2('0xec')]=_0x373277;if(_0x4c181d[_0x46f2('0x49')]){_0x4c181d[_0x46f2('0x49')]={'id':_0x4c181d['User']['id'],'name':_0x4c181d['User'][_0x46f2('0x1d')],'fullname':_0x4c181d[_0x46f2('0x49')][_0x46f2('0x104')],'alias':_0x4c181d[_0x46f2('0x49')][_0x46f2('0x8e')]};}return _0x4c181d;});});}else{var _0x4ec571=_[_0x46f2('0x105')](_0x373277)+(_0x373277===_0x46f2('0xe6')?_0x46f2('0x106'):_0x46f2('0x107'));var _0x3b96d0={'attributes':['id',_0x46f2('0x108'),'closedAt',_0x46f2('0xfe'),_0x46f2('0xfd'),_0x46f2('0x109'),'secondDisposition',_0x46f2('0x10a'),_0x46f2('0x102'),_0x4ec571+'Id'],'where':{'ContactId':_0x284aa6['params']['id']},'include':[{'model':db[_0x4ec571],'as':_0x46f2('0x107'),'attributes':['id',_0x46f2('0x1d'),_0x46f2('0x10b')]},{'model':db[_0x46f2('0x49')],'as':_0x46f2('0x10c'),'attributes':['id',_0x46f2('0x1d'),_0x46f2('0x104')]},{'model':db[_0x46f2('0xb2')],'as':_0x46f2('0x85'),'attributes':['id',_0x46f2('0x1d'),_0x46f2('0xb3')],'through':{'attributes':[]}}],'order':[[_0x46f2('0xfe'),_0x46f2('0x6a')]]};if(_0x284aa6[_0x46f2('0x27')][_0x46f2('0xf0')]){_0x3b96d0[_0x46f2('0x3b')][_0x46f2('0xfe')]={'$gte':_0x4cdcf0['from'],'$lte':_0x4cdcf0['to']};}switch(_0x373277){case _0x46f2('0xe6'):_0x3b96d0[_0x46f2('0x2b')]['push'](_0x46f2('0x10d'),_0x46f2('0x10e'),_0x46f2('0x10f'),_0x46f2('0x110'),_0x46f2('0x111'),'ratingMessage',_0x46f2('0x112'),_0x46f2('0x113'),_0x46f2('0x114'));break;case _0x46f2('0xe5'):_0x3b96d0['attributes'][_0x46f2('0x54')](_0x46f2('0x115'),_0x46f2('0x116'));break;case _0x46f2('0xe8'):_0x3b96d0[_0x46f2('0x2b')]['push']('externalUrl','threadId');break;}return db[_['startCase'](_0x373277)+_0x46f2('0x117')][_0x46f2('0x103')](_0x3b96d0)[_0x46f2('0x19')](function(_0x123285){_0x3bba15['count']+=_0x123285['count'];return _['map'](_0x123285[_0x46f2('0x86')],function(_0x2c498f){var _0x26d1ad=_0x2c498f['get']({'plain':!![]});_0x26d1ad[_0x46f2('0xec')]=_0x373277;if(_0x26d1ad[_0x46f2('0x10c')]){_0x26d1ad[_0x46f2('0x10c')]={'id':_0x26d1ad[_0x46f2('0x10c')]['id'],'name':_0x26d1ad['Owner'][_0x46f2('0x1d')],'fullname':_0x26d1ad['Owner'][_0x46f2('0x104')]};}return _0x26d1ad;});});}});return Promise[_0x46f2('0x118')](_0x181f26);})[_0x46f2('0x19')](function(_0x2e8a39){return _(_0x2e8a39)['flatten']()[_0x46f2('0x119')](_0x46f2('0xfe'))['reverse']()[_0x46f2('0x43')]();})['then'](function(_0x273dfa){_0x3bba15[_0x46f2('0x86')]=_0x131226[_0x46f2('0x14')]?_0x273dfa[_0x46f2('0x11a')](_0x131226[_0x46f2('0x12')],_0x131226[_0x46f2('0x12')]+_0x131226[_0x46f2('0x14')]):_0x273dfa;return _0x3bba15;})[_0x46f2('0x19')](respondWithFilteredResult(_0x2cf50f,_0x131226))[_0x46f2('0x87')](handleError(_0x2cf50f,null));};
\ No newline at end of file
index bc2fd1b..7c43c6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0da=['exports','../../mysqldb','CmContact','setMaxListeners','update','emit','hasOwnProperty','hook'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0xa0da,0x91));var _0xaa0d=function(_0x142185,_0xf1bb34){_0x142185=_0x142185-0x0;var _0x2c08c8=_0xa0da[_0x142185];return _0x2c08c8;};'use strict';var EventEmitter=require('events');var CmContact=require(_0xaa0d('0x0'))['db'][_0xaa0d('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xaa0d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xaa0d('0x3'),'afterDestroy':'remove'};function emitEvent(_0x8c39b0){return function(_0x38caa0,_0x5ab2ec,_0x203be5){CmContactEvents[_0xaa0d('0x4')](_0x8c39b0+':'+_0x38caa0['id'],_0x38caa0);CmContactEvents['emit'](_0x8c39b0,_0x38caa0);_0x203be5(null);};}for(var e in events){if(events[_0xaa0d('0x5')](e)){var event=events[e];CmContact[_0xaa0d('0x6')](e,emitEvent(event));}}module[_0xaa0d('0x7')]=CmContactEvents;
\ No newline at end of file
+var _0xa3a6=['exports','events','../../mysqldb','setMaxListeners','update','remove','emit','hasOwnProperty','hook'];(function(_0x3e3cb1,_0x427246){var _0x55478c=function(_0x19f44d){while(--_0x19f44d){_0x3e3cb1['push'](_0x3e3cb1['shift']());}};_0x55478c(++_0x427246);}(_0xa3a6,0xf4));var _0x6a3a=function(_0x56e429,_0x546a27){_0x56e429=_0x56e429-0x0;var _0x20d987=_0xa3a6[_0x56e429];return _0x20d987;};'use strict';var EventEmitter=require(_0x6a3a('0x0'));var CmContact=require(_0x6a3a('0x1'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0x6a3a('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6a3a('0x3'),'afterDestroy':_0x6a3a('0x4')};function emitEvent(_0x1d28d0){return function(_0x2ac819,_0x5d42bd,_0x5655bb){CmContactEvents['emit'](_0x1d28d0+':'+_0x2ac819['id'],_0x2ac819);CmContactEvents[_0x6a3a('0x5')](_0x1d28d0,_0x2ac819);_0x5655bb(null);};}for(var e in events){if(events[_0x6a3a('0x6')](e)){var event=events[e];CmContact[_0x6a3a('0x7')](e,emitEvent(event));}}module[_0x6a3a('0x8')]=CmContactEvents;
\ No newline at end of file
index 1c929db..d032d81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d3c=['cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','ListId','afterCreate','create','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','CmList','Lists','length','dialCheckDuplicateType','always','findAll','BlackLists','CmHopperBlack','message','Campaign','onlyIfOpen','cmContact,\x20%s,\x20%s','List\x20not\x20found','isEmpty','ContactId','VoiceQueueId','CampaignId','push','all','lodash','util','../../config/logger','api','moment','path','rimraf','./cmContact.attributes','exports','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','email','FULLTEXT','utf8mb4_unicode_ci','models','get','error','cmContact','inspect','CmHopper','findOne','then','isNil'];(function(_0x2c4cf4,_0x4058bd){var _0x199478=function(_0x1db77f){while(--_0x1db77f){_0x2c4cf4['push'](_0x2c4cf4['shift']());}};_0x199478(++_0x4058bd);}(_0x4d3c,0xa7));var _0xc4d3=function(_0x59ed96,_0x4025a4){_0x59ed96=_0x59ed96-0x0;var _0x236d06=_0x4d3c[_0x59ed96];return _0x236d06;};'use strict';var _=require(_0xc4d3('0x0'));var util=require(_0xc4d3('0x1'));var logger=require(_0xc4d3('0x2'))(_0xc4d3('0x3'));var moment=require(_0xc4d3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc4d3('0x5'));var rimraf=require(_0xc4d3('0x6'));var config=require('../../config/environment');var attributes=require(_0xc4d3('0x7'));module[_0xc4d3('0x8')]=function(_0x1361a1,_0x1e12b0){return _0x1361a1['define']('CmContact',attributes,{'tableName':_0xc4d3('0x9'),'paranoid':!![],'indexes':[{'name':_0xc4d3('0xa'),'fields':['phone']},{'name':_0xc4d3('0xb'),'fields':[_0xc4d3('0xc'),_0xc4d3('0xd'),'phone',_0xc4d3('0xe'),_0xc4d3('0xf'),_0xc4d3('0x10')],'type':_0xc4d3('0x11')}],'timestamps':!![],'charset':'utf8mb4','collate':_0xc4d3('0x12'),'hooks':{'afterCreate':function(_0x35bf04,_0x254784,_0x57a270){var _0x1c8a61=_0x1361a1[_0xc4d3('0x13')];var _0x1958be=_0x35bf04[_0xc4d3('0x14')]({'plain':!![]});function _0x5d3e9e(){return function(_0x409b67){logger[_0xc4d3('0x15')](_0xc4d3('0x16'),'afterCreate',util[_0xc4d3('0x17')](_0x409b67,{'showHidden':![],'depth':null}));};}var _0x318604=function(_0x2ddad3){return new BPromise(function(_0x1dab1b,_0x1d6fd7){_0x1c8a61[_0xc4d3('0x18')][_0xc4d3('0x19')]({'where':{'phone':_0x1958be[_0xc4d3('0xa')],'VoiceQueueId':_0x2ddad3['id']}})[_0xc4d3('0x1a')](function(_0x202a48){if(!_[_0xc4d3('0x1b')](_0x202a48)){throw new Error(_0xc4d3('0x1c')+_0x1958be['phone']+_0xc4d3('0x1d')+_0x2ddad3['id']);}return _0x1c8a61[_0xc4d3('0x18')]['create']({'phone':_0x1958be[_0xc4d3('0xa')],'ContactId':_0x1958be['id'],'ListId':_0x1958be['ListId'],'priority':_0x1958be[_0xc4d3('0x1e')]?_0x1958be['priority']:0x2,'scheduledat':_0x1958be[_0xc4d3('0x1f')]?_0x1958be['scheduledat']:moment()[_0xc4d3('0x20')](_0xc4d3('0x21')),'callback':_0x1958be[_0xc4d3('0x22')]?!![]:![],'callbackuniqueid':_0x1958be[_0xc4d3('0x22')]?_0x1958be[_0xc4d3('0x22')]:undefined,'callbackat':_0x1958be[_0xc4d3('0x22')]?moment()['format'](_0xc4d3('0x21')):undefined,'VoiceQueueId':_0x2ddad3['id']});})['catch'](function(_0x380f53){_0x1d6fd7(_0x380f53);});});};var _0x209ab7=function(_0x597693){return new BPromise(function(_0x282037,_0x533d4a){_0x1c8a61[_0xc4d3('0x18')][_0xc4d3('0x19')]({'where':{'phone':_0x1958be[_0xc4d3('0xa')],'VoiceQueueId':_0x597693['id']}})['then'](function(_0x2493ff){if(!_[_0xc4d3('0x1b')](_0x2493ff)){throw new Error(_0xc4d3('0x1c')+_0x1958be['phone']+_0xc4d3('0x23')+_0x597693['id']);}return _0x1c8a61[_0xc4d3('0x24')][_0xc4d3('0x19')]({'where':{'calleridnum':_0x1958be[_0xc4d3('0xa')],'VoiceQueueId':_0x597693['id']}});})[_0xc4d3('0x1a')](function(_0x2c734f){if(!_['isNil'](_0x2c734f)){throw new Error(_0xc4d3('0x25')+_0x1958be[_0xc4d3('0xa')]+_0xc4d3('0x26')+_0x597693['id']);}return _0x1c8a61[_0xc4d3('0x18')]['create']({'phone':_0x1958be['phone'],'ContactId':_0x1958be['id'],'ListId':_0x1958be[_0xc4d3('0x27')],'priority':_0x1958be['priority']?_0x1958be['priority']:0x2,'scheduledat':_0x1958be[_0xc4d3('0x1f')]?_0x1958be['scheduledat']:moment()[_0xc4d3('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x1958be[_0xc4d3('0x22')]?!![]:![],'callbackuniqueid':_0x1958be[_0xc4d3('0x22')]?_0x1958be[_0xc4d3('0x22')]:undefined,'callbackat':_0x1958be[_0xc4d3('0x22')]?moment()[_0xc4d3('0x20')](_0xc4d3('0x21')):undefined,'VoiceQueueId':_0x597693['id']});})['catch'](function(_0x4f2aa2){_0x533d4a(_0x4f2aa2);});});};function _0x36c9a3(){return function(_0x42f8bc){logger[_0xc4d3('0x15')](_0xc4d3('0x16'),_0xc4d3('0x28'),util[_0xc4d3('0x17')](_0x42f8bc,{'showHidden':![],'depth':null}));};}var _0xb6c5d5=function(_0x43d805){return new BPromise(function(_0x8021b6,_0x28d13d){_0x1c8a61['CmHopper'][_0xc4d3('0x19')]({'where':{'phone':_0x1958be[_0xc4d3('0xa')],'CampaignId':_0x43d805['id']}})[_0xc4d3('0x1a')](function(_0x4c0267){if(!_['isNil'](_0x4c0267)){throw new Error(_0xc4d3('0x1c')+_0x1958be[_0xc4d3('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x43d805['id']);}return _0x1c8a61[_0xc4d3('0x18')][_0xc4d3('0x29')]({'phone':_0x1958be[_0xc4d3('0xa')],'ContactId':_0x1958be['id'],'ListId':_0x1958be[_0xc4d3('0x27')],'priority':_0x1958be[_0xc4d3('0x1e')]?_0x1958be[_0xc4d3('0x1e')]:0x2,'scheduledat':_0x1958be['scheduledat']?_0x1958be[_0xc4d3('0x1f')]:moment()[_0xc4d3('0x20')](_0xc4d3('0x21')),'callback':_0x1958be['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x1958be[_0xc4d3('0x22')]?_0x1958be['callbackUniqueid']:undefined,'callbackat':_0x1958be[_0xc4d3('0x22')]?moment()[_0xc4d3('0x20')](_0xc4d3('0x21')):undefined,'CampaignId':_0x43d805['id']});})[_0xc4d3('0x2a')](function(_0x2ee562){_0x28d13d(_0x2ee562);});});};var _0x23664c=function(_0x2e1550){return new BPromise(function(_0x1c027d,_0x8ff788){_0x1c8a61[_0xc4d3('0x18')][_0xc4d3('0x19')]({'where':{'phone':_0x1958be[_0xc4d3('0xa')],'CampaignId':_0x2e1550['id']}})[_0xc4d3('0x1a')](function(_0x2bfa16){if(!_[_0xc4d3('0x1b')](_0x2bfa16)){throw new Error(_0xc4d3('0x1c')+_0x1958be[_0xc4d3('0xa')]+_0xc4d3('0x2b')+_0x2e1550['id']);}return _0x1c8a61['CmHopperFinal'][_0xc4d3('0x19')]({'where':{'calleridnum':_0x1958be[_0xc4d3('0xa')],'CampaignId':_0x2e1550['id']}});})[_0xc4d3('0x1a')](function(_0x5edb55){if(!_[_0xc4d3('0x1b')](_0x5edb55)){throw new Error(_0xc4d3('0x25')+_0x1958be[_0xc4d3('0xa')]+_0xc4d3('0x2c')+_0x2e1550['id']);}return _0x1c8a61['CmHopper'][_0xc4d3('0x29')]({'phone':_0x1958be[_0xc4d3('0xa')],'ContactId':_0x1958be['id'],'ListId':_0x1958be['ListId'],'priority':_0x1958be['priority']?_0x1958be[_0xc4d3('0x1e')]:0x2,'scheduledat':_0x1958be[_0xc4d3('0x1f')]?_0x1958be[_0xc4d3('0x1f')]:moment()[_0xc4d3('0x20')](_0xc4d3('0x21')),'callback':_0x1958be['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x1958be[_0xc4d3('0x22')]?_0x1958be['callbackUniqueid']:undefined,'callbackat':_0x1958be['callbackUniqueid']?moment()[_0xc4d3('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x2e1550['id']});})[_0xc4d3('0x2a')](function(_0x3a2fce){_0x8ff788(_0x3a2fce);});});};if(_0x1958be[_0xc4d3('0x27')]){_0x1c8a61[_0xc4d3('0x2d')]['findAll']({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x1c8a61[_0xc4d3('0x2e')],'as':_0xc4d3('0x2f'),'where':{'id':_0x1958be[_0xc4d3('0x27')]}}]})[_0xc4d3('0x1a')](function(_0x4cd42f){if(_0x4cd42f){var _0x1425c9=[];for(var _0x7a293=0x0,_0x6c5791;_0x7a293<_0x4cd42f[_0xc4d3('0x30')];_0x7a293+=0x1){_0x6c5791=_0x4cd42f[_0x7a293][_0xc4d3('0x14')]({'plain':!![]});switch(_0x6c5791[_0xc4d3('0x31')]){case _0xc4d3('0x32'):_0x209ab7(_0x6c5791)['catch'](_0x5d3e9e());break;case'onlyIfOpen':_0x318604(_0x6c5791)['catch'](_0x5d3e9e());break;default:_0x1c8a61[_0xc4d3('0x18')][_0xc4d3('0x29')]({'phone':_0x1958be['phone'],'ContactId':_0x1958be['id'],'ListId':_0x1958be[_0xc4d3('0x27')],'scheduledat':_0x1958be['scheduledat']?_0x1958be[_0xc4d3('0x1f')]:moment()[_0xc4d3('0x20')](_0xc4d3('0x21')),'priority':_0x1958be[_0xc4d3('0x1e')]?_0x1958be['priority']:0x2,'callback':_0x1958be[_0xc4d3('0x22')]?!![]:![],'callbackuniqueid':_0x1958be['callbackUniqueid']?_0x1958be[_0xc4d3('0x22')]:undefined,'callbackat':_0x1958be[_0xc4d3('0x22')]?moment()[_0xc4d3('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x6c5791['id']})[_0xc4d3('0x2a')](_0x5d3e9e());}}}})['then'](function(){return _0x1c8a61[_0xc4d3('0x2d')][_0xc4d3('0x33')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x1c8a61[_0xc4d3('0x2e')],'as':_0xc4d3('0x34'),'where':{'id':_0x1958be[_0xc4d3('0x27')]}}]})[_0xc4d3('0x1a')](function(_0x31c84d){if(_0x31c84d){var _0xfb889b=[];for(var _0x454e3c=0x0,_0x2ce280;_0x454e3c<_0x31c84d['length'];_0x454e3c+=0x1){_0x2ce280=_0x31c84d[_0x454e3c]['get']({'plain':!![]});_0x1c8a61[_0xc4d3('0x35')][_0xc4d3('0x29')]({'phone':_0x1958be[_0xc4d3('0xa')],'ContactId':_0x1958be['id'],'ListId':_0x1958be[_0xc4d3('0x27')],'VoiceQueueId':_0x2ce280['id']})['catch'](function(_0x4fe62f){logger[_0xc4d3('0x15')]('cmContact,\x20%s,\x20%s',_0xc4d3('0x28'),_0x4fe62f[_0xc4d3('0x36')]);});}}});})[_0xc4d3('0x1a')](function(){return _0x1c8a61[_0xc4d3('0x37')]['findAll']({'attributes':['id',_0xc4d3('0x31')],'include':[{'model':_0x1c8a61[_0xc4d3('0x2e')],'as':_0xc4d3('0x2f'),'where':{'id':_0x1958be[_0xc4d3('0x27')]}}]})[_0xc4d3('0x1a')](function(_0x393008){if(_0x393008){var _0x1b2e8a=[];for(var _0x3e3269=0x0,_0x4e6b80;_0x3e3269<_0x393008[_0xc4d3('0x30')];_0x3e3269+=0x1){_0x4e6b80=_0x393008[_0x3e3269]['get']({'plain':!![]});switch(_0x4e6b80['dialCheckDuplicateType']){case _0xc4d3('0x32'):_0x23664c(_0x4e6b80)['catch'](_0x36c9a3());break;case _0xc4d3('0x38'):_0xb6c5d5(_0x4e6b80)[_0xc4d3('0x2a')](_0x36c9a3());break;default:_0x1c8a61[_0xc4d3('0x18')][_0xc4d3('0x29')]({'phone':_0x1958be[_0xc4d3('0xa')],'ContactId':_0x1958be['id'],'ListId':_0x1958be[_0xc4d3('0x27')],'scheduledat':_0x1958be['scheduledat']?_0x1958be['scheduledat']:moment()[_0xc4d3('0x20')](_0xc4d3('0x21')),'priority':_0x1958be[_0xc4d3('0x1e')]?_0x1958be[_0xc4d3('0x1e')]:0x2,'callback':_0x1958be[_0xc4d3('0x22')]?!![]:![],'callbackuniqueid':_0x1958be[_0xc4d3('0x22')]?_0x1958be['callbackUniqueid']:undefined,'callbackat':_0x1958be[_0xc4d3('0x22')]?moment()[_0xc4d3('0x20')](_0xc4d3('0x21')):undefined,'CampaignId':_0x4e6b80['id']})[_0xc4d3('0x2a')](_0x36c9a3());}}}});})[_0xc4d3('0x1a')](function(){return _0x1c8a61[_0xc4d3('0x37')][_0xc4d3('0x33')]({'attributes':['id'],'include':[{'model':_0x1c8a61[_0xc4d3('0x2e')],'as':_0xc4d3('0x34'),'where':{'id':_0x1958be[_0xc4d3('0x27')]}}]})[_0xc4d3('0x1a')](function(_0x4aed52){if(_0x4aed52){var _0x471334=[];for(var _0x5b37cd=0x0,_0x2e8481;_0x5b37cd<_0x4aed52[_0xc4d3('0x30')];_0x5b37cd+=0x1){_0x2e8481=_0x4aed52[_0x5b37cd]['get']({'plain':!![]});_0x1c8a61[_0xc4d3('0x35')]['create']({'phone':_0x1958be[_0xc4d3('0xa')],'ContactId':_0x1958be['id'],'ListId':_0x1958be[_0xc4d3('0x27')],'CampaignId':_0x2e8481['id']})[_0xc4d3('0x2a')](function(_0x271d3a){logger[_0xc4d3('0x15')](_0xc4d3('0x39'),_0xc4d3('0x28'),_0x271d3a['message']);});}}});})['then'](function(){_0x57a270();})['catch'](function(_0x5ca33f){logger[_0xc4d3('0x15')](_0xc4d3('0x39'),_0xc4d3('0x28'),_0x5ca33f['message']);_0x57a270(_0x5ca33f);});}else{_0x57a270(new Error(_0xc4d3('0x3a')));}},'afterDestroy':function(_0x3a1b2f,_0x1e749f,_0x29466){var _0xf228cc=_0x1361a1[_0xc4d3('0x13')];var _0x338223=_0x3a1b2f['get']({'plain':!![]});return _0xf228cc[_0xc4d3('0x18')][_0xc4d3('0x33')]({'raw':!![],'where':{'ListId':_0x338223['ListId'],'ContactId':_0x338223['id']}})['then'](function(_0xb0ab68){if(!_[_0xc4d3('0x3b')](_0xb0ab68)){var _0x697b2b=[];for(var _0x30f195=0x0;_0x30f195<_0xb0ab68['length'];_0x30f195+=0x1){var _0x1d0a70=_0xf228cc[_0xc4d3('0x18')]['destroy']({'where':{'ListId':_0xb0ab68[_0x30f195][_0xc4d3('0x27')],'ContactId':_0xb0ab68[_0x30f195][_0xc4d3('0x3c')],'VoiceQueueId':_0xb0ab68[_0x30f195][_0xc4d3('0x3d')],'CampaignId':_0xb0ab68[_0x30f195][_0xc4d3('0x3e')]}});_0x697b2b[_0xc4d3('0x3f')](_0x1d0a70);}return BPromise[_0xc4d3('0x40')](_0x697b2b);}})['then'](function(_0x326acc){logger['info']('[CmContact][afterDestroy][Succesfull]',util[_0xc4d3('0x17')](_0x326acc,{'showHidden':![],'depth':null}));_0x29466();})[_0xc4d3('0x2a')](function(_0x35fc69){logger['error']('[CmContact][afterDestroy][Error]',util[_0xc4d3('0x17')](_0x35fc69,{'showHidden':![],'depth':null}));_0x29466(_0x35fc69);});}}});};
\ No newline at end of file
+var _0x6bf1=['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','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','cmContact','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','always','Campaign','List\x20not\x20found','ContactId','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','lodash','util','api','request-promise','path','../../config/environment','./cmContact.attributes','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','mobile','fax','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','error','afterCreate','inspect'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6bf1,0xed));var _0x16bf=function(_0x313df3,_0x4fca45){_0x313df3=_0x313df3-0x0;var _0x241d59=_0x6bf1[_0x313df3];return _0x241d59;};'use strict';var _=require(_0x16bf('0x0'));var util=require(_0x16bf('0x1'));var logger=require('../../config/logger')(_0x16bf('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x16bf('0x3'));var fs=require('fs');var path=require(_0x16bf('0x4'));var rimraf=require('rimraf');var config=require(_0x16bf('0x5'));var attributes=require(_0x16bf('0x6'));module['exports']=function(_0x30d78e,_0x35fa7d){return _0x30d78e[_0x16bf('0x7')](_0x16bf('0x8'),attributes,{'tableName':_0x16bf('0x9'),'paranoid':!![],'indexes':[{'name':_0x16bf('0xa'),'fields':[_0x16bf('0xa')]},{'name':_0x16bf('0xb'),'fields':[_0x16bf('0xc'),'lastName','phone',_0x16bf('0xd'),_0x16bf('0xe'),'email'],'type':_0x16bf('0xf')}],'timestamps':!![],'charset':_0x16bf('0x10'),'collate':_0x16bf('0x11'),'hooks':{'afterCreate':function(_0x1b3149,_0x27806d,_0x5c4555){var _0x35b774=_0x30d78e[_0x16bf('0x12')];var _0x368a52=_0x1b3149[_0x16bf('0x13')]({'plain':!![]});function _0x693e66(){return function(_0x53d8de){logger[_0x16bf('0x14')]('cmContact',_0x16bf('0x15'),util[_0x16bf('0x16')](_0x53d8de,{'showHidden':![],'depth':null}));};}var _0x13571c=function(_0x3e8934){return new BPromise(function(_0x1476eb,_0x182da5){_0x35b774[_0x16bf('0x17')][_0x16bf('0x18')]({'where':{'phone':_0x368a52[_0x16bf('0xa')],'VoiceQueueId':_0x3e8934['id']}})[_0x16bf('0x19')](function(_0x118c70){if(!_[_0x16bf('0x1a')](_0x118c70)){throw new Error(_0x16bf('0x1b')+_0x368a52[_0x16bf('0xa')]+_0x16bf('0x1c')+_0x3e8934['id']);}return _0x35b774['CmHopper'][_0x16bf('0x1d')]({'phone':_0x368a52[_0x16bf('0xa')],'ContactId':_0x368a52['id'],'ListId':_0x368a52[_0x16bf('0x1e')],'priority':_0x368a52['priority']?_0x368a52[_0x16bf('0x1f')]:0x2,'scheduledat':_0x368a52['scheduledat']?_0x368a52[_0x16bf('0x20')]:moment()[_0x16bf('0x21')](_0x16bf('0x22')),'callback':_0x368a52['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x368a52[_0x16bf('0x23')]?_0x368a52[_0x16bf('0x23')]:undefined,'callbackat':_0x368a52['callbackUniqueid']?moment()['format'](_0x16bf('0x22')):undefined,'VoiceQueueId':_0x3e8934['id']});})[_0x16bf('0x24')](function(_0x580c12){_0x182da5(_0x580c12);});});};var _0x1a4e8e=function(_0x3eba56){return new BPromise(function(_0x49de10,_0x1d2514){_0x35b774[_0x16bf('0x17')][_0x16bf('0x18')]({'where':{'phone':_0x368a52[_0x16bf('0xa')],'VoiceQueueId':_0x3eba56['id']}})[_0x16bf('0x19')](function(_0xb240e5){if(!_['isNil'](_0xb240e5)){throw new Error(_0x16bf('0x1b')+_0x368a52[_0x16bf('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x3eba56['id']);}return _0x35b774[_0x16bf('0x25')][_0x16bf('0x18')]({'where':{'calleridnum':_0x368a52[_0x16bf('0xa')],'VoiceQueueId':_0x3eba56['id']}});})[_0x16bf('0x19')](function(_0xb59873){if(!_[_0x16bf('0x1a')](_0xb59873)){throw new Error(_0x16bf('0x26')+_0x368a52[_0x16bf('0xa')]+_0x16bf('0x27')+_0x3eba56['id']);}return _0x35b774[_0x16bf('0x17')]['create']({'phone':_0x368a52[_0x16bf('0xa')],'ContactId':_0x368a52['id'],'ListId':_0x368a52[_0x16bf('0x1e')],'priority':_0x368a52[_0x16bf('0x1f')]?_0x368a52[_0x16bf('0x1f')]:0x2,'scheduledat':_0x368a52[_0x16bf('0x20')]?_0x368a52[_0x16bf('0x20')]:moment()['format'](_0x16bf('0x22')),'callback':_0x368a52[_0x16bf('0x23')]?!![]:![],'callbackuniqueid':_0x368a52[_0x16bf('0x23')]?_0x368a52[_0x16bf('0x23')]:undefined,'callbackat':_0x368a52[_0x16bf('0x23')]?moment()[_0x16bf('0x21')](_0x16bf('0x22')):undefined,'VoiceQueueId':_0x3eba56['id']});})['catch'](function(_0x288119){_0x1d2514(_0x288119);});});};function _0x5484c8(){return function(_0x54d173){logger[_0x16bf('0x14')](_0x16bf('0x28'),_0x16bf('0x15'),util[_0x16bf('0x16')](_0x54d173,{'showHidden':![],'depth':null}));};}var _0x4f6c39=function(_0x328214){return new BPromise(function(_0x81884b,_0x24ce9d){_0x35b774[_0x16bf('0x17')][_0x16bf('0x18')]({'where':{'phone':_0x368a52[_0x16bf('0xa')],'CampaignId':_0x328214['id']}})[_0x16bf('0x19')](function(_0x3bcf8c){if(!_[_0x16bf('0x1a')](_0x3bcf8c)){throw new Error(_0x16bf('0x1b')+_0x368a52['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x328214['id']);}return _0x35b774['CmHopper'][_0x16bf('0x1d')]({'phone':_0x368a52[_0x16bf('0xa')],'ContactId':_0x368a52['id'],'ListId':_0x368a52[_0x16bf('0x1e')],'priority':_0x368a52[_0x16bf('0x1f')]?_0x368a52[_0x16bf('0x1f')]:0x2,'scheduledat':_0x368a52['scheduledat']?_0x368a52[_0x16bf('0x20')]:moment()[_0x16bf('0x21')](_0x16bf('0x22')),'callback':_0x368a52['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x368a52[_0x16bf('0x23')]?_0x368a52[_0x16bf('0x23')]:undefined,'callbackat':_0x368a52[_0x16bf('0x23')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x328214['id']});})['catch'](function(_0x5d751f){_0x24ce9d(_0x5d751f);});});};var _0x120084=function(_0x304d7a){return new BPromise(function(_0x164a64,_0x24b2c7){_0x35b774[_0x16bf('0x17')][_0x16bf('0x18')]({'where':{'phone':_0x368a52['phone'],'CampaignId':_0x304d7a['id']}})[_0x16bf('0x19')](function(_0x150b27){if(!_[_0x16bf('0x1a')](_0x150b27)){throw new Error(_0x16bf('0x1b')+_0x368a52[_0x16bf('0xa')]+_0x16bf('0x29')+_0x304d7a['id']);}return _0x35b774[_0x16bf('0x25')]['findOne']({'where':{'calleridnum':_0x368a52['phone'],'CampaignId':_0x304d7a['id']}});})[_0x16bf('0x19')](function(_0x15ecc2){if(!_[_0x16bf('0x1a')](_0x15ecc2)){throw new Error(_0x16bf('0x26')+_0x368a52[_0x16bf('0xa')]+_0x16bf('0x2a')+_0x304d7a['id']);}return _0x35b774[_0x16bf('0x17')][_0x16bf('0x1d')]({'phone':_0x368a52['phone'],'ContactId':_0x368a52['id'],'ListId':_0x368a52['ListId'],'priority':_0x368a52['priority']?_0x368a52[_0x16bf('0x1f')]:0x2,'scheduledat':_0x368a52[_0x16bf('0x20')]?_0x368a52[_0x16bf('0x20')]:moment()[_0x16bf('0x21')](_0x16bf('0x22')),'callback':_0x368a52[_0x16bf('0x23')]?!![]:![],'callbackuniqueid':_0x368a52[_0x16bf('0x23')]?_0x368a52[_0x16bf('0x23')]:undefined,'callbackat':_0x368a52[_0x16bf('0x23')]?moment()[_0x16bf('0x21')](_0x16bf('0x22')):undefined,'CampaignId':_0x304d7a['id']});})['catch'](function(_0x3ceb45){_0x24b2c7(_0x3ceb45);});});};if(_0x368a52[_0x16bf('0x1e')]){_0x35b774[_0x16bf('0x2b')][_0x16bf('0x2c')]({'where':{'type':_0x16bf('0x2d')},'attributes':['id',_0x16bf('0x2e')],'include':[{'model':_0x35b774[_0x16bf('0x2f')],'as':_0x16bf('0x30'),'where':{'id':_0x368a52[_0x16bf('0x1e')]}}]})['then'](function(_0x976277){if(_0x976277){var _0x1c1a9d=[];for(var _0x523358=0x0,_0x404c99;_0x523358<_0x976277[_0x16bf('0x31')];_0x523358+=0x1){_0x404c99=_0x976277[_0x523358][_0x16bf('0x13')]({'plain':!![]});switch(_0x404c99['dialCheckDuplicateType']){case'always':_0x1a4e8e(_0x404c99)[_0x16bf('0x24')](_0x693e66());break;case _0x16bf('0x32'):_0x13571c(_0x404c99)['catch'](_0x693e66());break;default:_0x35b774[_0x16bf('0x17')]['create']({'phone':_0x368a52['phone'],'ContactId':_0x368a52['id'],'ListId':_0x368a52['ListId'],'scheduledat':_0x368a52[_0x16bf('0x20')]?_0x368a52[_0x16bf('0x20')]:moment()[_0x16bf('0x21')](_0x16bf('0x22')),'priority':_0x368a52[_0x16bf('0x1f')]?_0x368a52[_0x16bf('0x1f')]:0x2,'callback':_0x368a52['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x368a52['callbackUniqueid']?_0x368a52[_0x16bf('0x23')]:undefined,'callbackat':_0x368a52[_0x16bf('0x23')]?moment()[_0x16bf('0x21')](_0x16bf('0x22')):undefined,'VoiceQueueId':_0x404c99['id']})[_0x16bf('0x24')](_0x693e66());}}}})[_0x16bf('0x19')](function(){return _0x35b774[_0x16bf('0x2b')][_0x16bf('0x2c')]({'where':{'type':_0x16bf('0x2d')},'attributes':['id'],'include':[{'model':_0x35b774[_0x16bf('0x2f')],'as':_0x16bf('0x33'),'where':{'id':_0x368a52[_0x16bf('0x1e')]}}]})[_0x16bf('0x19')](function(_0x8880b8){if(_0x8880b8){var _0x5488f9=[];for(var _0x2c98da=0x0,_0x3579f6;_0x2c98da<_0x8880b8[_0x16bf('0x31')];_0x2c98da+=0x1){_0x3579f6=_0x8880b8[_0x2c98da][_0x16bf('0x13')]({'plain':!![]});_0x35b774[_0x16bf('0x34')]['create']({'phone':_0x368a52['phone'],'ContactId':_0x368a52['id'],'ListId':_0x368a52['ListId'],'VoiceQueueId':_0x3579f6['id']})[_0x16bf('0x24')](function(_0xf04be0){logger[_0x16bf('0x14')](_0x16bf('0x35'),_0x16bf('0x15'),_0xf04be0[_0x16bf('0x36')]);});}}});})[_0x16bf('0x19')](function(){return _0x35b774['Campaign'][_0x16bf('0x2c')]({'attributes':['id',_0x16bf('0x2e')],'include':[{'model':_0x35b774[_0x16bf('0x2f')],'as':_0x16bf('0x30'),'where':{'id':_0x368a52[_0x16bf('0x1e')]}}]})['then'](function(_0x11d26b){if(_0x11d26b){var _0x5a1bb1=[];for(var _0x1c25aa=0x0,_0x1fcb20;_0x1c25aa<_0x11d26b['length'];_0x1c25aa+=0x1){_0x1fcb20=_0x11d26b[_0x1c25aa][_0x16bf('0x13')]({'plain':!![]});switch(_0x1fcb20[_0x16bf('0x2e')]){case _0x16bf('0x37'):_0x120084(_0x1fcb20)['catch'](_0x5484c8());break;case _0x16bf('0x32'):_0x4f6c39(_0x1fcb20)[_0x16bf('0x24')](_0x5484c8());break;default:_0x35b774[_0x16bf('0x17')][_0x16bf('0x1d')]({'phone':_0x368a52[_0x16bf('0xa')],'ContactId':_0x368a52['id'],'ListId':_0x368a52[_0x16bf('0x1e')],'scheduledat':_0x368a52[_0x16bf('0x20')]?_0x368a52['scheduledat']:moment()[_0x16bf('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x368a52[_0x16bf('0x1f')]?_0x368a52[_0x16bf('0x1f')]:0x2,'callback':_0x368a52[_0x16bf('0x23')]?!![]:![],'callbackuniqueid':_0x368a52[_0x16bf('0x23')]?_0x368a52[_0x16bf('0x23')]:undefined,'callbackat':_0x368a52[_0x16bf('0x23')]?moment()[_0x16bf('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x1fcb20['id']})['catch'](_0x5484c8());}}}});})[_0x16bf('0x19')](function(){return _0x35b774[_0x16bf('0x38')][_0x16bf('0x2c')]({'attributes':['id'],'include':[{'model':_0x35b774[_0x16bf('0x2f')],'as':_0x16bf('0x33'),'where':{'id':_0x368a52[_0x16bf('0x1e')]}}]})[_0x16bf('0x19')](function(_0xe0e4a){if(_0xe0e4a){var _0x40e4fa=[];for(var _0x4d7d08=0x0,_0x3d0b13;_0x4d7d08<_0xe0e4a[_0x16bf('0x31')];_0x4d7d08+=0x1){_0x3d0b13=_0xe0e4a[_0x4d7d08][_0x16bf('0x13')]({'plain':!![]});_0x35b774[_0x16bf('0x34')][_0x16bf('0x1d')]({'phone':_0x368a52[_0x16bf('0xa')],'ContactId':_0x368a52['id'],'ListId':_0x368a52[_0x16bf('0x1e')],'CampaignId':_0x3d0b13['id']})[_0x16bf('0x24')](function(_0x4ffe44){logger['error'](_0x16bf('0x35'),_0x16bf('0x15'),_0x4ffe44[_0x16bf('0x36')]);});}}});})[_0x16bf('0x19')](function(){_0x5c4555();})[_0x16bf('0x24')](function(_0x2e2740){logger[_0x16bf('0x14')](_0x16bf('0x35'),_0x16bf('0x15'),_0x2e2740[_0x16bf('0x36')]);_0x5c4555(_0x2e2740);});}else{_0x5c4555(new Error(_0x16bf('0x39')));}},'afterDestroy':function(_0x35d96c,_0x3de2ea,_0x591b94){var _0x26567e=_0x30d78e[_0x16bf('0x12')];var _0x4f1083=_0x35d96c[_0x16bf('0x13')]({'plain':!![]});return _0x26567e[_0x16bf('0x17')][_0x16bf('0x2c')]({'raw':!![],'where':{'ListId':_0x4f1083[_0x16bf('0x1e')],'ContactId':_0x4f1083['id']}})[_0x16bf('0x19')](function(_0x524a7f){if(!_['isEmpty'](_0x524a7f)){var _0x492358=[];for(var _0x123366=0x0;_0x123366<_0x524a7f[_0x16bf('0x31')];_0x123366+=0x1){var _0x16eea7=_0x26567e[_0x16bf('0x17')]['destroy']({'where':{'ListId':_0x524a7f[_0x123366][_0x16bf('0x1e')],'ContactId':_0x524a7f[_0x123366][_0x16bf('0x3a')],'VoiceQueueId':_0x524a7f[_0x123366][_0x16bf('0x3b')],'CampaignId':_0x524a7f[_0x123366][_0x16bf('0x3c')]}});_0x492358[_0x16bf('0x3d')](_0x16eea7);}return BPromise[_0x16bf('0x3e')](_0x492358);}})[_0x16bf('0x19')](function(_0xd57da3){logger[_0x16bf('0x3f')](_0x16bf('0x40'),util[_0x16bf('0x16')](_0xd57da3,{'showHidden':![],'depth':null}));_0x591b94();})[_0x16bf('0x24')](function(_0x835c02){logger[_0x16bf('0x14')]('[CmContact][afterDestroy][Error]',util[_0x16bf('0x16')](_0x835c02,{'showHidden':![],'depth':null}));_0x591b94(_0x835c02);});}}});};
\ No newline at end of file
index a2998e1..bead9b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4346=['model','GetCmContact','body','keys','startsWith','cf_','table','cm_contacts','set','sequelize','query','CreateCmContact','stringify','lodash','util','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','./cmContact.socket','register','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','message','result','catch','CmContact','findAll','options','raw','where','attributes','limit','include','map'];(function(_0x12b84a,_0x47422c){var _0x2e9b06=function(_0x426cc7){while(--_0x426cc7){_0x12b84a['push'](_0x12b84a['shift']());}};_0x2e9b06(++_0x47422c);}(_0x4346,0x139));var _0x6434=function(_0x1e79b9,_0x223ef3){_0x1e79b9=_0x1e79b9-0x0;var _0x2c2d29=_0x4346[_0x1e79b9];return _0x2c2d29;};'use strict';var _=require(_0x6434('0x0'));var util=require(_0x6434('0x1'));var moment=require(_0x6434('0x2'));var BPromise=require(_0x6434('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6434('0x4'));var squel=require(_0x6434('0x5'));var db=require(_0x6434('0x6'))['db'];var utils=require(_0x6434('0x7'));var logger=require('../../config/logger')(_0x6434('0x8'));var config=require(_0x6434('0x9'));var jayson=require(_0x6434('0xa'));var client=jayson[_0x6434('0xb')][_0x6434('0xc')]({'port':0x232a});config['redis']=_[_0x6434('0xd')](config[_0x6434('0xe')],{'host':_0x6434('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6434('0xe')]));require(_0x6434('0x10'))[_0x6434('0x11')](socket);function respondWithRpcPromise(_0x3edbe8,_0x412faa,_0x562fd1){return new BPromise(function(_0x5eac2d,_0x3f8338){return client['request'](_0x3edbe8,_0x562fd1)[_0x6434('0x12')](function(_0x130357){logger[_0x6434('0x13')](_0x6434('0x14'),_0x412faa,_0x6434('0x15'));logger[_0x6434('0x16')](_0x6434('0x17'),_0x412faa,_0x6434('0x15'),JSON['stringify'](_0x130357));if(_0x130357[_0x6434('0x18')]){if(_0x130357[_0x6434('0x18')]['code']===0x1f4){logger[_0x6434('0x18')]('CmContact,\x20%s,\x20%s',_0x412faa,_0x130357['error'][_0x6434('0x19')]);return _0x3f8338(_0x130357['error'][_0x6434('0x19')]);}logger[_0x6434('0x18')](_0x6434('0x14'),_0x412faa,_0x130357[_0x6434('0x18')]['message']);return _0x5eac2d(_0x130357[_0x6434('0x18')]['message']);}else{logger[_0x6434('0x13')](_0x6434('0x14'),_0x412faa,_0x6434('0x15'));_0x5eac2d(_0x130357[_0x6434('0x1a')][_0x6434('0x19')]);}})[_0x6434('0x1b')](function(_0x575df3){logger[_0x6434('0x18')](_0x6434('0x14'),_0x412faa,_0x575df3);_0x3f8338(_0x575df3);});});}exports['GetCmContact']=function(_0x30f2f0){var _0x5153ea=this;return new Promise(function(_0x448d89,_0x4bfaf6){return db[_0x6434('0x1c')][_0x6434('0x1d')]({'raw':_0x30f2f0['options']?_0x30f2f0[_0x6434('0x1e')][_0x6434('0x1f')]===undefined?!![]:![]:!![],'where':_0x30f2f0[_0x6434('0x1e')]?_0x30f2f0[_0x6434('0x1e')][_0x6434('0x20')]||null:null,'attributes':_0x30f2f0[_0x6434('0x1e')]?_0x30f2f0[_0x6434('0x1e')][_0x6434('0x21')]||null:null,'limit':_0x30f2f0[_0x6434('0x1e')]?_0x30f2f0[_0x6434('0x1e')][_0x6434('0x22')]||null:null,'include':_0x30f2f0['options']?_0x30f2f0[_0x6434('0x1e')][_0x6434('0x23')]?_[_0x6434('0x24')](_0x30f2f0[_0x6434('0x1e')][_0x6434('0x23')],function(_0x3b9dbe){return{'model':db[_0x3b9dbe[_0x6434('0x25')]],'as':_0x3b9dbe['as'],'attributes':_0x3b9dbe[_0x6434('0x21')],'include':_0x3b9dbe['include']?_[_0x6434('0x24')](_0x3b9dbe[_0x6434('0x23')],function(_0x1ed207){return{'model':db[_0x1ed207[_0x6434('0x25')]],'as':_0x1ed207['as'],'attributes':_0x1ed207['attributes'],'include':_0x1ed207['include']?_['map'](_0x1ed207[_0x6434('0x23')],function(_0x5eb448){return{'model':db[_0x5eb448[_0x6434('0x25')]],'as':_0x5eb448['as'],'attributes':_0x5eb448['attributes']};}):[]};}):[]};}):[]:[]})[_0x6434('0x12')](function(_0x35d778){logger['info'](_0x6434('0x26'),_0x30f2f0);logger[_0x6434('0x16')](_0x6434('0x26'),_0x30f2f0,JSON['stringify'](_0x35d778));_0x448d89(_0x35d778);})['catch'](function(_0x4a7fac){logger['error'](_0x6434('0x26'),_0x4a7fac[_0x6434('0x19')],_0x30f2f0);_0x4bfaf6(_0x5153ea[_0x6434('0x18')](0x1f4,_0x4a7fac['message']));});});};exports['CreateCmContact']=function(_0x2e87de){var _0x3a84bb=this;return new Promise(function(_0x461d44,_0x777d7e){return db[_0x6434('0x1c')]['create'](_0x2e87de[_0x6434('0x27')],{'raw':_0x2e87de['options']?_0x2e87de[_0x6434('0x1e')][_0x6434('0x1f')]===undefined?!![]:![]:!![]})[_0x6434('0x12')](function(_0x4175b2){var _0x40dc82;for(var _0x1165e1=0x0;_0x1165e1<Object['keys'](_0x2e87de[_0x6434('0x27')])['length'];_0x1165e1++){var _0x3bc011=Object[_0x6434('0x28')](_0x2e87de['body'])[_0x1165e1];if(_0x3bc011[_0x6434('0x29')](_0x6434('0x2a'))){_0x40dc82=squel['update']()[_0x6434('0x2b')](_0x6434('0x2c'))[_0x6434('0x2d')](_0x3bc011,_0x2e87de['body'][_0x3bc011])[_0x6434('0x20')]('id\x20=\x20?',_0x4175b2['id'])['toString']();break;}}if(!_0x40dc82)return _0x4175b2;return db[_0x6434('0x2e')][_0x6434('0x2f')](_0x40dc82)[_0x6434('0x12')](function(){return _0x4175b2;});})[_0x6434('0x12')](function(_0x472074){logger['info']('CreateCmContact',_0x2e87de);logger[_0x6434('0x16')](_0x6434('0x30'),_0x2e87de,JSON[_0x6434('0x31')](_0x472074));_0x461d44(_0x472074);})['catch'](function(_0xbf4f8d){logger[_0x6434('0x18')](_0x6434('0x30'),_0xbf4f8d['message'],_0x2e87de);_0x777d7e(_0x3a84bb[_0x6434('0x18')](0x1f4,_0xbf4f8d[_0x6434('0x19')]));});});};
\ No newline at end of file
+var _0xebd0=['code','message','result','catch','GetCmContact','CmContact','findAll','options','raw','where','limit','include','model','attributes','map','create','keys','body','length','startsWith','cf_','update','set','id\x20=\x20?','toString','CreateCmContact','lodash','bluebird','randomstring','squel','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xebd0,0x10f));var _0x0ebd=function(_0x4dfd43,_0x57ce7a){_0x4dfd43=_0x4dfd43-0x0;var _0x996eeb=_0xebd0[_0x4dfd43];return _0x996eeb;};'use strict';var _=require(_0x0ebd('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0ebd('0x1'));var rs=require(_0x0ebd('0x2'));var fs=require('fs');var Redis=require('ioredis');var squel=require(_0x0ebd('0x3'));var db=require(_0x0ebd('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0ebd('0x5'))(_0x0ebd('0x6'));var config=require(_0x0ebd('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0ebd('0x8')][_0x0ebd('0x9')]({'port':0x232a});config[_0x0ebd('0xa')]=_[_0x0ebd('0xb')](config[_0x0ebd('0xa')],{'host':_0x0ebd('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0ebd('0xd'))[_0x0ebd('0xe')](socket);function respondWithRpcPromise(_0x5e8a0b,_0xe7eb80,_0x26d0ff){return new BPromise(function(_0x597ef0,_0x23692b){return client[_0x0ebd('0xf')](_0x5e8a0b,_0x26d0ff)[_0x0ebd('0x10')](function(_0x2e0993){logger[_0x0ebd('0x11')](_0x0ebd('0x12'),_0xe7eb80,'request\x20sent');logger[_0x0ebd('0x13')](_0x0ebd('0x14'),_0xe7eb80,'request\x20sent',JSON[_0x0ebd('0x15')](_0x2e0993));if(_0x2e0993[_0x0ebd('0x16')]){if(_0x2e0993[_0x0ebd('0x16')][_0x0ebd('0x17')]===0x1f4){logger['error'](_0x0ebd('0x12'),_0xe7eb80,_0x2e0993[_0x0ebd('0x16')][_0x0ebd('0x18')]);return _0x23692b(_0x2e0993[_0x0ebd('0x16')][_0x0ebd('0x18')]);}logger[_0x0ebd('0x16')]('CmContact,\x20%s,\x20%s',_0xe7eb80,_0x2e0993[_0x0ebd('0x16')][_0x0ebd('0x18')]);return _0x597ef0(_0x2e0993[_0x0ebd('0x16')]['message']);}else{logger[_0x0ebd('0x11')]('CmContact,\x20%s,\x20%s',_0xe7eb80,'request\x20sent');_0x597ef0(_0x2e0993[_0x0ebd('0x19')][_0x0ebd('0x18')]);}})[_0x0ebd('0x1a')](function(_0x24cc2c){logger[_0x0ebd('0x16')](_0x0ebd('0x12'),_0xe7eb80,_0x24cc2c);_0x23692b(_0x24cc2c);});});}exports[_0x0ebd('0x1b')]=function(_0x24deca){var _0x1d58c2=this;return new Promise(function(_0x2bdaf6,_0x4ae588){return db[_0x0ebd('0x1c')][_0x0ebd('0x1d')]({'raw':_0x24deca[_0x0ebd('0x1e')]?_0x24deca[_0x0ebd('0x1e')][_0x0ebd('0x1f')]===undefined?!![]:![]:!![],'where':_0x24deca[_0x0ebd('0x1e')]?_0x24deca['options'][_0x0ebd('0x20')]||null:null,'attributes':_0x24deca[_0x0ebd('0x1e')]?_0x24deca[_0x0ebd('0x1e')]['attributes']||null:null,'limit':_0x24deca[_0x0ebd('0x1e')]?_0x24deca[_0x0ebd('0x1e')][_0x0ebd('0x21')]||null:null,'include':_0x24deca['options']?_0x24deca[_0x0ebd('0x1e')][_0x0ebd('0x22')]?_['map'](_0x24deca[_0x0ebd('0x1e')][_0x0ebd('0x22')],function(_0x400bb9){return{'model':db[_0x400bb9[_0x0ebd('0x23')]],'as':_0x400bb9['as'],'attributes':_0x400bb9[_0x0ebd('0x24')],'include':_0x400bb9[_0x0ebd('0x22')]?_[_0x0ebd('0x25')](_0x400bb9[_0x0ebd('0x22')],function(_0x24a595){return{'model':db[_0x24a595['model']],'as':_0x24a595['as'],'attributes':_0x24a595[_0x0ebd('0x24')],'include':_0x24a595[_0x0ebd('0x22')]?_[_0x0ebd('0x25')](_0x24a595['include'],function(_0x1fa471){return{'model':db[_0x1fa471[_0x0ebd('0x23')]],'as':_0x1fa471['as'],'attributes':_0x1fa471[_0x0ebd('0x24')]};}):[]};}):[]};}):[]:[]})[_0x0ebd('0x10')](function(_0x14c659){logger[_0x0ebd('0x11')](_0x0ebd('0x1b'),_0x24deca);logger[_0x0ebd('0x13')](_0x0ebd('0x1b'),_0x24deca,JSON[_0x0ebd('0x15')](_0x14c659));_0x2bdaf6(_0x14c659);})[_0x0ebd('0x1a')](function(_0x71658f){logger[_0x0ebd('0x16')](_0x0ebd('0x1b'),_0x71658f[_0x0ebd('0x18')],_0x24deca);_0x4ae588(_0x1d58c2[_0x0ebd('0x16')](0x1f4,_0x71658f[_0x0ebd('0x18')]));});});};exports['CreateCmContact']=function(_0x2bb401){var _0x393726=this;return new Promise(function(_0x4f1fa4,_0x11d103){return db[_0x0ebd('0x1c')][_0x0ebd('0x26')](_0x2bb401['body'],{'raw':_0x2bb401[_0x0ebd('0x1e')]?_0x2bb401[_0x0ebd('0x1e')]['raw']===undefined?!![]:![]:!![]})[_0x0ebd('0x10')](function(_0x287262){var _0x4d830e;for(var _0x24d544=0x0;_0x24d544<Object[_0x0ebd('0x27')](_0x2bb401[_0x0ebd('0x28')])[_0x0ebd('0x29')];_0x24d544++){var _0xb48afe=Object['keys'](_0x2bb401[_0x0ebd('0x28')])[_0x24d544];if(_0xb48afe[_0x0ebd('0x2a')](_0x0ebd('0x2b'))){_0x4d830e=squel[_0x0ebd('0x2c')]()['table']('cm_contacts')[_0x0ebd('0x2d')](_0xb48afe,_0x2bb401[_0x0ebd('0x28')][_0xb48afe])[_0x0ebd('0x20')](_0x0ebd('0x2e'),_0x287262['id'])[_0x0ebd('0x2f')]();break;}}if(!_0x4d830e)return _0x287262;return db['sequelize']['query'](_0x4d830e)[_0x0ebd('0x10')](function(){return _0x287262;});})['then'](function(_0x30129c){logger[_0x0ebd('0x11')](_0x0ebd('0x30'),_0x2bb401);logger[_0x0ebd('0x13')](_0x0ebd('0x30'),_0x2bb401,JSON[_0x0ebd('0x15')](_0x30129c));_0x4f1fa4(_0x30129c);})['catch'](function(_0x1c5f4d){logger[_0x0ebd('0x16')](_0x0ebd('0x30'),_0x1c5f4d[_0x0ebd('0x18')],_0x2bb401);_0x11d103(_0x393726[_0x0ebd('0x16')](0x1f4,_0x1c5f4d[_0x0ebd('0x18')]));});});};
\ No newline at end of file
index 5cb3317..0d7aa5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'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 e4e74c2..62efafe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd01=['./cmContact.controller','get','isAuthenticated','/describe','describe','/:id','/:id/tags','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getJscriptySessions','/:id/journey','getJourney','post','/merge','create','/create_many','setTags','diskStorage','join','root','originalname','basename','extname','/csv','single','file','replace','format','%s-%s%s','/upload','/upload/:id','import','put','delete','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfd01,0x197));var _0x1fd0=function(_0x590d95,_0x5748fc){_0x590d95=_0x590d95-0x0;var _0x5b2b21=_0xfd01[_0x590d95];return _0x5b2b21;};'use strict';var multer=require(_0x1fd0('0x0'));var util=require('util');var path=require(_0x1fd0('0x1'));var timeout=require(_0x1fd0('0x2'));var express=require('express');var router=express[_0x1fd0('0x3')]();var fs_extra=require(_0x1fd0('0x4'));var auth=require(_0x1fd0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1fd0('0x6'));var controller=require(_0x1fd0('0x7'));router[_0x1fd0('0x8')]('/',auth[_0x1fd0('0x9')](),controller['index']);router[_0x1fd0('0x8')](_0x1fd0('0xa'),auth[_0x1fd0('0x9')](),controller[_0x1fd0('0xb')]);router[_0x1fd0('0x8')](_0x1fd0('0xc'),auth[_0x1fd0('0x9')](),controller['show']);router[_0x1fd0('0x8')](_0x1fd0('0xd'),auth[_0x1fd0('0x9')](),controller[_0x1fd0('0xe')]);router['get'](_0x1fd0('0xf'),auth[_0x1fd0('0x9')](),controller[_0x1fd0('0x10')]);router['get'](_0x1fd0('0x11'),auth[_0x1fd0('0x9')](),controller[_0x1fd0('0x12')]);router['get'](_0x1fd0('0x13'),auth[_0x1fd0('0x9')](),controller['getHopperFinals']);router[_0x1fd0('0x8')]('/:id/jscripty_sessions',auth[_0x1fd0('0x9')](),controller[_0x1fd0('0x14')]);router['get'](_0x1fd0('0x15'),auth['isAuthenticated'](),controller[_0x1fd0('0x16')]);router[_0x1fd0('0x17')](_0x1fd0('0x18'),auth[_0x1fd0('0x9')](),controller['merge']);router[_0x1fd0('0x17')]('/',auth[_0x1fd0('0x9')](),controller[_0x1fd0('0x19')]);router[_0x1fd0('0x17')](_0x1fd0('0x1a'),auth[_0x1fd0('0x9')](),controller['bulkCreate']);router[_0x1fd0('0x17')](_0x1fd0('0xd'),auth['isAuthenticated'](),controller[_0x1fd0('0x1b')]);var upload=multer({'storage':multer[_0x1fd0('0x1c')]({'destination':function(_0x354687,_0x11f3a9,_0x151103){_0x151103(null,path[_0x1fd0('0x1d')](config[_0x1fd0('0x1e')],'server/files/tmp'));},'filename':function(_0x2c253d,_0x33342a,_0x1d7581){_0x33342a['originalname']=_0x33342a[_0x1fd0('0x1f')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1d7581(null,util['format']('%s-%s%s',path[_0x1fd0('0x20')](_0x33342a[_0x1fd0('0x1f')],path[_0x1fd0('0x21')](_0x33342a[_0x1fd0('0x1f')])),Date['now'](),path[_0x1fd0('0x21')](_0x33342a[_0x1fd0('0x1f')])));}})});router[_0x1fd0('0x17')](_0x1fd0('0x22'),upload[_0x1fd0('0x23')](_0x1fd0('0x24')),controller['uploadCsv']);var upload=multer({'storage':multer[_0x1fd0('0x1c')]({'destination':function(_0x39f02b,_0xd50690,_0x87cc6d){_0x87cc6d(null,path[_0x1fd0('0x1d')](config['root'],'server/files/tmp'));},'filename':function(_0x1e7af1,_0x255034,_0x38c4e8){_0x255034[_0x1fd0('0x1f')]=_0x255034[_0x1fd0('0x1f')][_0x1fd0('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x38c4e8(null,util[_0x1fd0('0x26')](_0x1fd0('0x27'),path[_0x1fd0('0x20')](_0x255034[_0x1fd0('0x1f')],path[_0x1fd0('0x21')](_0x255034[_0x1fd0('0x1f')])),Date['now'](),path[_0x1fd0('0x21')](_0x255034['originalname'])));}})});router[_0x1fd0('0x17')](_0x1fd0('0x28'),upload['single'](_0x1fd0('0x24')),controller['upload']);router[_0x1fd0('0x17')](_0x1fd0('0x29'),auth[_0x1fd0('0x9')](),controller[_0x1fd0('0x2a')]);router[_0x1fd0('0x2b')](_0x1fd0('0xc'),auth[_0x1fd0('0x9')](),controller['update']);router[_0x1fd0('0x2c')](_0x1fd0('0xc'),auth[_0x1fd0('0x9')](),controller[_0x1fd0('0x2d')]);module['exports']=router;
\ No newline at end of file
+var _0x4349=['upload','/upload/:id','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','getJscriptySessions','/:id/journey','post','/merge','create','/create_many','setTags','root','server/files/tmp','originalname','replace','format','basename','extname','now','/csv','single','file','uploadCsv','%s-%s%s'];(function(_0x49b019,_0x4fc8da){var _0x1f3abf=function(_0x5cca92){while(--_0x5cca92){_0x49b019['push'](_0x49b019['shift']());}};_0x1f3abf(++_0x4fc8da);}(_0x4349,0x15f));var _0x9434=function(_0xdd15fb,_0x92fbb){_0xdd15fb=_0xdd15fb-0x0;var _0x9ac3dd=_0x4349[_0xdd15fb];return _0x9ac3dd;};'use strict';var multer=require(_0x9434('0x0'));var util=require(_0x9434('0x1'));var path=require(_0x9434('0x2'));var timeout=require(_0x9434('0x3'));var express=require(_0x9434('0x4'));var router=express['Router']();var fs_extra=require(_0x9434('0x5'));var auth=require(_0x9434('0x6'));var interaction=require(_0x9434('0x7'));var config=require(_0x9434('0x8'));var controller=require('./cmContact.controller');router['get']('/',auth[_0x9434('0x9')](),controller[_0x9434('0xa')]);router[_0x9434('0xb')](_0x9434('0xc'),auth[_0x9434('0x9')](),controller[_0x9434('0xd')]);router[_0x9434('0xb')]('/:id',auth[_0x9434('0x9')](),controller[_0x9434('0xe')]);router[_0x9434('0xb')]('/:id/tags',auth[_0x9434('0x9')](),controller['getTags']);router['get'](_0x9434('0xf'),auth[_0x9434('0x9')](),controller[_0x9434('0x10')]);router[_0x9434('0xb')](_0x9434('0x11'),auth[_0x9434('0x9')](),controller[_0x9434('0x12')]);router[_0x9434('0xb')](_0x9434('0x13'),auth[_0x9434('0x9')](),controller[_0x9434('0x14')]);router[_0x9434('0xb')]('/:id/jscripty_sessions',auth['isAuthenticated'](),controller[_0x9434('0x15')]);router['get'](_0x9434('0x16'),auth[_0x9434('0x9')](),controller['getJourney']);router[_0x9434('0x17')](_0x9434('0x18'),auth[_0x9434('0x9')](),controller['merge']);router[_0x9434('0x17')]('/',auth[_0x9434('0x9')](),controller[_0x9434('0x19')]);router[_0x9434('0x17')](_0x9434('0x1a'),auth['isAuthenticated'](),controller['bulkCreate']);router[_0x9434('0x17')]('/:id/tags',auth['isAuthenticated'](),controller[_0x9434('0x1b')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1a7562,_0x53fdc7,_0x4cb0c3){_0x4cb0c3(null,path['join'](config[_0x9434('0x1c')],_0x9434('0x1d')));},'filename':function(_0x2a050a,_0xc9c51f,_0x3a4af4){_0xc9c51f[_0x9434('0x1e')]=_0xc9c51f[_0x9434('0x1e')][_0x9434('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3a4af4(null,util[_0x9434('0x20')]('%s-%s%s',path[_0x9434('0x21')](_0xc9c51f['originalname'],path[_0x9434('0x22')](_0xc9c51f[_0x9434('0x1e')])),Date[_0x9434('0x23')](),path[_0x9434('0x22')](_0xc9c51f[_0x9434('0x1e')])));}})});router['post'](_0x9434('0x24'),upload[_0x9434('0x25')](_0x9434('0x26')),controller[_0x9434('0x27')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x581545,_0x374ed7,_0x1b2bfa){_0x1b2bfa(null,path['join'](config[_0x9434('0x1c')],_0x9434('0x1d')));},'filename':function(_0x369c3d,_0x44e79d,_0x325ccd){_0x44e79d[_0x9434('0x1e')]=_0x44e79d['originalname'][_0x9434('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x325ccd(null,util[_0x9434('0x20')](_0x9434('0x28'),path[_0x9434('0x21')](_0x44e79d['originalname'],path[_0x9434('0x22')](_0x44e79d[_0x9434('0x1e')])),Date['now'](),path[_0x9434('0x22')](_0x44e79d[_0x9434('0x1e')])));}})});router['post']('/upload',upload[_0x9434('0x25')]('file'),controller[_0x9434('0x29')]);router[_0x9434('0x17')](_0x9434('0x2a'),auth[_0x9434('0x9')](),controller['import']);router[_0x9434('0x2b')](_0x9434('0x2c'),auth[_0x9434('0x9')](),controller[_0x9434('0x2d')]);router[_0x9434('0x2e')](_0x9434('0x2c'),auth['isAuthenticated'](),controller[_0x9434('0x2f')]);module[_0x9434('0x30')]=router;
\ No newline at end of file
index a559028..22843fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab20=['exports','getDataValue','alias','STRING','setDataValue','TEXT','type','parse','values','isArray','BOOLEAN','ENUM','voice','sequelize','lodash'];(function(_0x11d518,_0xc11a34){var _0x203b24=function(_0x515b8f){while(--_0x515b8f){_0x11d518['push'](_0x11d518['shift']());}};_0x203b24(++_0xc11a34);}(_0xab20,0x12a));var _0x0ab2=function(_0x441171,_0x28037b){_0x441171=_0x441171-0x0;var _0x6194ca=_0xab20[_0x441171];return _0x6194ca;};'use strict';var Sequelize=require(_0x0ab2('0x0'));var _=require(_0x0ab2('0x1'));module[_0x0ab2('0x2')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x5dbae9){return this[_0x0ab2('0x3')](_0x0ab2('0x4'));}},'alias':{'type':Sequelize[_0x0ab2('0x5')],'allowNull':![],'set':function(_0xa958e3){this[_0x0ab2('0x6')](_0x0ab2('0x4'),_0xa958e3?_0xa958e3:this[_0x0ab2('0x3')]('name'));}},'type':{'type':Sequelize[_0x0ab2('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0x0ab2('0x7')]('long'),'get':function(){if(this[_0x0ab2('0x3')](_0x0ab2('0x8'))==='select'){return JSON[_0x0ab2('0x9')](this['getDataValue'](_0x0ab2('0xa')));}else{return this[_0x0ab2('0x3')](_0x0ab2('0xa'));}},'set':function(_0x4a577a){if(Array[_0x0ab2('0xb')](_0x4a577a)){this[_0x0ab2('0x6')]('values',JSON['stringify'](_0x4a577a));}else{this[_0x0ab2('0x6')](_0x0ab2('0xa'),_0x4a577a);}}},'required':{'type':Sequelize[_0x0ab2('0xc')],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0x0ab2('0xd')](_0x0ab2('0xe'))}};
\ No newline at end of file
+var _0x1cf0=['STRING','setDataValue','name','TEXT','long','type','select','parse','values','isArray','stringify','BOOLEAN','ENUM','sequelize','lodash','exports','VIRTUAL','getDataValue','alias'];(function(_0x1faabc,_0x75e19a){var _0x1f15ed=function(_0x868372){while(--_0x868372){_0x1faabc['push'](_0x1faabc['shift']());}};_0x1f15ed(++_0x75e19a);}(_0x1cf0,0xde));var _0x01cf=function(_0x3d9176,_0x399d6f){_0x3d9176=_0x3d9176-0x0;var _0x12adc5=_0x1cf0[_0x3d9176];return _0x12adc5;};'use strict';var Sequelize=require(_0x01cf('0x0'));var _=require(_0x01cf('0x1'));module[_0x01cf('0x2')]={'name':{'type':Sequelize[_0x01cf('0x3')],'get':function(_0x3665c8){return this[_0x01cf('0x4')](_0x01cf('0x5'));}},'alias':{'type':Sequelize[_0x01cf('0x6')],'allowNull':![],'set':function(_0x3b43f7){this[_0x01cf('0x7')](_0x01cf('0x5'),_0x3b43f7?_0x3b43f7:this['getDataValue'](_0x01cf('0x8')));}},'type':{'type':Sequelize[_0x01cf('0x6')],'allowNull':![]},'values':{'type':Sequelize[_0x01cf('0x9')](_0x01cf('0xa')),'get':function(){if(this[_0x01cf('0x4')](_0x01cf('0xb'))===_0x01cf('0xc')){return JSON[_0x01cf('0xd')](this[_0x01cf('0x4')](_0x01cf('0xe')));}else{return this[_0x01cf('0x4')](_0x01cf('0xe'));}},'set':function(_0x24c26f){if(Array[_0x01cf('0xf')](_0x24c26f)){this['setDataValue'](_0x01cf('0xe'),JSON[_0x01cf('0x10')](_0x24c26f));}else{this[_0x01cf('0x7')](_0x01cf('0xe'),_0x24c26f);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x01cf('0x11')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x01cf('0x12')]('voice')}};
\ No newline at end of file
index 3b2b23d..eb94ac3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8ea=['stack','name','send','map','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','intersection','attributes','fields','length','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','CmCustomField','findAll','catch','show','params','body','find','create','sequelize','transaction','Sequelize','TEXT','text','number','switch','BOOLEAN','defaultValue','addColumn','cm_contacts','format','cf_%d','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy'];(function(_0x1b31a5,_0x9e6d65){var _0x22f087=function(_0x3c18d8){while(--_0x3c18d8){_0x1b31a5['push'](_0x1b31a5['shift']());}};_0x22f087(++_0x9e6d65);}(_0xe8ea,0x18b));var _0xae8e=function(_0x38ad1d,_0x5de6a9){_0x38ad1d=_0x38ad1d-0x0;var _0x510890=_0xe8ea[_0x38ad1d];return _0x510890;};'use strict';var emlformat=require(_0xae8e('0x0'));var rimraf=require(_0xae8e('0x1'));var zipdir=require(_0xae8e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xae8e('0x3'));var moment=require(_0xae8e('0x4'));var BPromise=require(_0xae8e('0x5'));var Mustache=require(_0xae8e('0x6'));var util=require('util');var path=require(_0xae8e('0x7'));var sox=require(_0xae8e('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xae8e('0x9'));var _=require(_0xae8e('0xa'));var squel=require(_0xae8e('0xb'));var crypto=require(_0xae8e('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xae8e('0xd'));var toCsv=require(_0xae8e('0xe'));var querystring=require(_0xae8e('0xf'));var Papa=require('papaparse');var Redis=require(_0xae8e('0x10'));var authService=require(_0xae8e('0x11'));var qs=require(_0xae8e('0x12'));var as=require(_0xae8e('0x13'));var hardwareService=require(_0xae8e('0x14'));var logger=require(_0xae8e('0x15'))(_0xae8e('0x16'));var utils=require('../../config/utils');var config=require(_0xae8e('0x17'));var licenseUtil=require(_0xae8e('0x18'));var db=require(_0xae8e('0x19'))['db'];function respondWithStatusCode(_0x284108,_0x1804b2){_0x1804b2=_0x1804b2||0xcc;return function(_0x1d5158){if(_0x1d5158){return _0x284108[_0xae8e('0x1a')](_0x1804b2);}return _0x284108[_0xae8e('0x1b')](_0x1804b2)[_0xae8e('0x1c')]();};}function respondWithResult(_0x538ae0,_0x3cf44b){_0x3cf44b=_0x3cf44b||0xc8;return function(_0x324e44){if(_0x324e44){return _0x538ae0[_0xae8e('0x1b')](_0x3cf44b)['json'](_0x324e44);}};}function respondWithFilteredResult(_0x5235b2,_0x3c956f){return function(_0x5b8a37){if(_0x5b8a37){var _0x365f5c=typeof _0x3c956f[_0xae8e('0x1d')]==='undefined'&&typeof _0x3c956f[_0xae8e('0x1e')]===_0xae8e('0x1f');var _0x580ec3=_0x5b8a37[_0xae8e('0x20')];var _0x43986d=_0x365f5c?0x0:_0x3c956f['offset'];var _0x4f31f8=_0x365f5c?_0x5b8a37[_0xae8e('0x20')]:_0x3c956f[_0xae8e('0x1d')]+_0x3c956f[_0xae8e('0x1e')];var _0x9fa106;if(_0x4f31f8>=_0x580ec3){_0x4f31f8=_0x580ec3;_0x9fa106=0xc8;}else{_0x9fa106=0xce;}_0x5235b2[_0xae8e('0x1b')](_0x9fa106);return _0x5235b2[_0xae8e('0x21')]('Content-Range',_0x43986d+'-'+_0x4f31f8+'/'+_0x580ec3)['json'](_0x5b8a37);}return null;};}function patchUpdates(_0x5648e7){return function(_0x3294c2){try{jsonpatch[_0xae8e('0x22')](_0x3294c2,_0x5648e7,!![]);}catch(_0x79b56){return BPromise[_0xae8e('0x23')](_0x79b56);}return _0x3294c2[_0xae8e('0x24')]();};}function saveUpdates(_0x441335,_0x275497){return function(_0x5d3ad1){if(_0x5d3ad1){return _0x5d3ad1[_0xae8e('0x25')](_0x441335)[_0xae8e('0x26')](function(_0x519494){return _0x519494;});}return null;};}function removeEntity(_0x5cb616,_0x58f5e1){return function(_0x24f5c2){if(_0x24f5c2){return _0x24f5c2[_0xae8e('0x27')]()['then'](function(){_0x5cb616['status'](0xcc)[_0xae8e('0x1c')]();});}};}function handleEntityNotFound(_0x33d66b,_0x312d7a){return function(_0x58036c){if(!_0x58036c){_0x33d66b['sendStatus'](0x194);}return _0x58036c;};}function handleError(_0x26fccc,_0x1b509a){_0x1b509a=_0x1b509a||0x1f4;return function(_0x2bd031){logger['error'](_0x2bd031[_0xae8e('0x28')]);if(_0x2bd031['name']){delete _0x2bd031[_0xae8e('0x29')];}_0x26fccc[_0xae8e('0x1b')](_0x1b509a)[_0xae8e('0x2a')](_0x2bd031);};}exports['index']=function(_0x3beed7,_0x30d440){var _0x558c7e={},_0x18592={},_0x1a7ba1={'count':0x0,'rows':[]};var _0x1ac0c5=_[_0xae8e('0x2b')](db['CmCustomField'][_0xae8e('0x2c')],function(_0x4c79fb){return{'name':_0x4c79fb[_0xae8e('0x2d')],'type':_0x4c79fb[_0xae8e('0x2e')][_0xae8e('0x2f')]};});_0x18592[_0xae8e('0x30')]=_[_0xae8e('0x31')](_[_0xae8e('0x2b')](_0x1ac0c5,_0xae8e('0x29')),['name']);_0x18592[_0xae8e('0x32')]=_[_0xae8e('0x33')](_0x3beed7[_0xae8e('0x32')]);_0x18592['filters']=_[_0xae8e('0x34')](_0x18592[_0xae8e('0x30')],_0x18592['query']);_0x558c7e[_0xae8e('0x35')]=_[_0xae8e('0x34')](_0x18592[_0xae8e('0x30')],qs[_0xae8e('0x36')](_0x3beed7[_0xae8e('0x32')][_0xae8e('0x36')]));_0x558c7e[_0xae8e('0x35')]=_0x558c7e['attributes'][_0xae8e('0x37')]?_0x558c7e[_0xae8e('0x35')]:_0x18592[_0xae8e('0x30')];if(!_0x3beed7[_0xae8e('0x32')]['hasOwnProperty'](_0xae8e('0x38'))){_0x558c7e[_0xae8e('0x1e')]=qs[_0xae8e('0x1e')](_0x3beed7['query'][_0xae8e('0x1e')]);_0x558c7e[_0xae8e('0x1d')]=qs[_0xae8e('0x1d')](_0x3beed7['query'][_0xae8e('0x1d')]);}_0x558c7e['order']=qs[_0xae8e('0x39')](_0x3beed7[_0xae8e('0x32')]['sort']);_0x558c7e[_0xae8e('0x3a')]=qs[_0xae8e('0x3b')](_['pick'](_0x3beed7['query'],_0x18592[_0xae8e('0x3b')]),_0x1ac0c5);if(_0x3beed7[_0xae8e('0x32')][_0xae8e('0x3c')]){_0x558c7e[_0xae8e('0x3a')]=_[_0xae8e('0x3d')](_0x558c7e[_0xae8e('0x3a')],{'$or':_[_0xae8e('0x2b')](_0x1ac0c5,function(_0x2021d2){if(_0x2021d2['type']!==_0xae8e('0x3e')){var _0x77f6f5={};_0x77f6f5[_0x2021d2[_0xae8e('0x29')]]={'$like':'%'+_0x3beed7[_0xae8e('0x32')]['filter']+'%'};return _0x77f6f5;}})});}_0x558c7e=_['merge']({},_0x558c7e,_0x3beed7[_0xae8e('0x3f')]);var _0x4fa139={'where':_0x558c7e[_0xae8e('0x3a')]};return db['CmCustomField']['count'](_0x4fa139)[_0xae8e('0x26')](function(_0x4fa7d0){_0x1a7ba1[_0xae8e('0x20')]=_0x4fa7d0;if(_0x3beed7[_0xae8e('0x32')][_0xae8e('0x40')]){_0x558c7e[_0xae8e('0x41')]=[{'all':!![]}];}return db[_0xae8e('0x42')][_0xae8e('0x43')](_0x558c7e);})[_0xae8e('0x26')](function(_0xb97bbd){_0x1a7ba1['rows']=_0xb97bbd;return _0x1a7ba1;})[_0xae8e('0x26')](respondWithFilteredResult(_0x30d440,_0x558c7e))[_0xae8e('0x44')](handleError(_0x30d440,null));};exports[_0xae8e('0x45')]=function(_0x5dea79,_0x595aa2){var _0x139514={'raw':!![],'where':{'id':_0x5dea79[_0xae8e('0x46')]['id']}},_0x3a9bd3={};_0x3a9bd3[_0xae8e('0x30')]=_[_0xae8e('0x33')](db[_0xae8e('0x42')]['rawAttributes']);_0x3a9bd3[_0xae8e('0x32')]=_['keys'](_0x5dea79[_0xae8e('0x32')]);_0x3a9bd3['filters']=_['intersection'](_0x3a9bd3[_0xae8e('0x30')],_0x3a9bd3['query']);_0x139514[_0xae8e('0x35')]=_[_0xae8e('0x34')](_0x3a9bd3[_0xae8e('0x30')],qs[_0xae8e('0x36')](_0x5dea79['query'][_0xae8e('0x36')]));_0x139514['attributes']=_0x139514[_0xae8e('0x35')]['length']?_0x139514['attributes']:_0x3a9bd3[_0xae8e('0x30')];if(_0x5dea79[_0xae8e('0x32')]['includeAll']){_0x139514['include']=[{'all':!![]}];}_0x139514=_[_0xae8e('0x3d')]({},_0x139514,_0x5dea79['options']);return db['CmCustomField']['find'](_0x139514)['then'](handleEntityNotFound(_0x595aa2,null))[_0xae8e('0x26')](respondWithResult(_0x595aa2,null))['catch'](handleError(_0x595aa2,null));};exports[_0xae8e('0x25')]=function(_0x1f41f4,_0x57bdaa){if(_0x1f41f4[_0xae8e('0x47')]['id']){delete _0x1f41f4[_0xae8e('0x47')]['id'];}return db['CmCustomField'][_0xae8e('0x48')]({'where':{'id':_0x1f41f4[_0xae8e('0x46')]['id']}})[_0xae8e('0x26')](handleEntityNotFound(_0x57bdaa,null))['then'](saveUpdates(_0x1f41f4['body'],null))[_0xae8e('0x26')](respondWithResult(_0x57bdaa,null))['catch'](handleError(_0x57bdaa,null));};exports[_0xae8e('0x27')]=function(_0x45fc57,_0x24c1fc){return db[_0xae8e('0x42')]['find']({'where':{'id':_0x45fc57['params']['id']}})[_0xae8e('0x26')](handleEntityNotFound(_0x24c1fc,null))[_0xae8e('0x26')](removeEntity(_0x24c1fc,null))['catch'](handleError(_0x24c1fc,null));};exports[_0xae8e('0x49')]=function(_0x278796,_0x68862a){var _0xb96be3;return db[_0xae8e('0x4a')][_0xae8e('0x4b')](function(_0x77e9d1){return db[_0xae8e('0x42')]['create'](_0x278796[_0xae8e('0x47')],{'transaction':_0x77e9d1})[_0xae8e('0x26')](function(_0x1627be){_0xb96be3=_0x1627be;var _0x3aded2={'type':db[_0xae8e('0x4c')][_0xae8e('0x4d')],'transaction':_0x77e9d1};switch(_0x278796[_0xae8e('0x47')][_0xae8e('0x2e')]){case _0xae8e('0x4e'):_0x3aded2[_0xae8e('0x2e')]=db[_0xae8e('0x4c')][_0xae8e('0x4d')];break;case _0xae8e('0x4f'):_0x3aded2[_0xae8e('0x2e')]=db[_0xae8e('0x4c')]['INTEGER'];break;case _0xae8e('0x50'):_0x3aded2[_0xae8e('0x2e')]=db[_0xae8e('0x4c')][_0xae8e('0x51')];_0x3aded2[_0xae8e('0x52')]=![];break;default:}return db['sequelize']['queryInterface'][_0xae8e('0x53')](_0xae8e('0x54'),util[_0xae8e('0x55')](_0xae8e('0x56'),_0xb96be3['id']),_0x3aded2);})[_0xae8e('0x26')](function(){return _0xb96be3;});})[_0xae8e('0x26')](respondWithResult(_0x68862a,0xc9))[_0xae8e('0x44')](handleError(_0x68862a,null));};
\ No newline at end of file
+var _0xdfdc=['fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','error','stack','name','status','send','index','map','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','body','create','sequelize','text','TEXT','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','cm_contacts','format','cf_%d','eml-format','rimraf','mustache','path','sox','to-csv'];(function(_0x7d841a,_0x206c39){var _0x107fd1=function(_0x1a295e){while(--_0x1a295e){_0x7d841a['push'](_0x7d841a['shift']());}};_0x107fd1(++_0x206c39);}(_0xdfdc,0xa8));var _0xcdfd=function(_0xac3c3e,_0x1b7c3d){_0xac3c3e=_0xac3c3e-0x0;var _0x1ecac9=_0xdfdc[_0xac3c3e];return _0x1ecac9;};'use strict';var emlformat=require(_0xcdfd('0x0'));var rimraf=require(_0xcdfd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xcdfd('0x2'));var util=require('util');var path=require(_0xcdfd('0x3'));var sox=require(_0xcdfd('0x4'));var csv=require(_0xcdfd('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcdfd('0x6'));var _=require(_0xcdfd('0x7'));var squel=require(_0xcdfd('0x8'));var crypto=require(_0xcdfd('0x9'));var jsforce=require(_0xcdfd('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcdfd('0xb'));var Papa=require('papaparse');var Redis=require(_0xcdfd('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xcdfd('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcdfd('0xe'));var logger=require(_0xcdfd('0xf'))(_0xcdfd('0x10'));var utils=require(_0xcdfd('0x11'));var config=require(_0xcdfd('0x12'));var licenseUtil=require(_0xcdfd('0x13'));var db=require(_0xcdfd('0x14'))['db'];function respondWithStatusCode(_0x49d5ef,_0x2fe0b0){_0x2fe0b0=_0x2fe0b0||0xcc;return function(_0x23d042){if(_0x23d042){return _0x49d5ef[_0xcdfd('0x15')](_0x2fe0b0);}return _0x49d5ef['status'](_0x2fe0b0)[_0xcdfd('0x16')]();};}function respondWithResult(_0x17d16a,_0x5d0cee){_0x5d0cee=_0x5d0cee||0xc8;return function(_0x39907f){if(_0x39907f){return _0x17d16a['status'](_0x5d0cee)['json'](_0x39907f);}};}function respondWithFilteredResult(_0x45bbf9,_0x36a15b){return function(_0x34b82f){if(_0x34b82f){var _0x1de13e=typeof _0x36a15b[_0xcdfd('0x17')]===_0xcdfd('0x18')&&typeof _0x36a15b[_0xcdfd('0x19')]===_0xcdfd('0x18');var _0x38e5ce=_0x34b82f[_0xcdfd('0x1a')];var _0x289e13=_0x1de13e?0x0:_0x36a15b[_0xcdfd('0x17')];var _0x5989ba=_0x1de13e?_0x34b82f[_0xcdfd('0x1a')]:_0x36a15b[_0xcdfd('0x17')]+_0x36a15b['limit'];var _0x3923ae;if(_0x5989ba>=_0x38e5ce){_0x5989ba=_0x38e5ce;_0x3923ae=0xc8;}else{_0x3923ae=0xce;}_0x45bbf9['status'](_0x3923ae);return _0x45bbf9[_0xcdfd('0x1b')](_0xcdfd('0x1c'),_0x289e13+'-'+_0x5989ba+'/'+_0x38e5ce)[_0xcdfd('0x1d')](_0x34b82f);}return null;};}function patchUpdates(_0x4bb53c){return function(_0x3e28b0){try{jsonpatch[_0xcdfd('0x1e')](_0x3e28b0,_0x4bb53c,!![]);}catch(_0x4fa124){return BPromise[_0xcdfd('0x1f')](_0x4fa124);}return _0x3e28b0[_0xcdfd('0x20')]();};}function saveUpdates(_0x40513,_0x44382e){return function(_0x5e4508){if(_0x5e4508){return _0x5e4508[_0xcdfd('0x21')](_0x40513)['then'](function(_0x5d1435){return _0x5d1435;});}return null;};}function removeEntity(_0x312b15,_0x4892f5){return function(_0x5cb191){if(_0x5cb191){return _0x5cb191[_0xcdfd('0x22')]()[_0xcdfd('0x23')](function(){_0x312b15['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x343a02,_0xe9ca4b){return function(_0x37a263){if(!_0x37a263){_0x343a02[_0xcdfd('0x15')](0x194);}return _0x37a263;};}function handleError(_0x59262b,_0x148983){_0x148983=_0x148983||0x1f4;return function(_0x578de0){logger[_0xcdfd('0x24')](_0x578de0[_0xcdfd('0x25')]);if(_0x578de0[_0xcdfd('0x26')]){delete _0x578de0['name'];}_0x59262b[_0xcdfd('0x27')](_0x148983)[_0xcdfd('0x28')](_0x578de0);};}exports[_0xcdfd('0x29')]=function(_0x26768f,_0x3efb37){var _0x3378fe={},_0x55dd8a={},_0xe628c1={'count':0x0,'rows':[]};var _0x22d230=_[_0xcdfd('0x2a')](db[_0xcdfd('0x2b')][_0xcdfd('0x2c')],function(_0x1ed03f){return{'name':_0x1ed03f[_0xcdfd('0x2d')],'type':_0x1ed03f[_0xcdfd('0x2e')][_0xcdfd('0x2f')]};});_0x55dd8a[_0xcdfd('0x30')]=_[_0xcdfd('0x31')](_[_0xcdfd('0x2a')](_0x22d230,_0xcdfd('0x26')),[_0xcdfd('0x26')]);_0x55dd8a['query']=_[_0xcdfd('0x32')](_0x26768f[_0xcdfd('0x33')]);_0x55dd8a[_0xcdfd('0x34')]=_[_0xcdfd('0x35')](_0x55dd8a['model'],_0x55dd8a[_0xcdfd('0x33')]);_0x3378fe[_0xcdfd('0x36')]=_[_0xcdfd('0x35')](_0x55dd8a['model'],qs[_0xcdfd('0x37')](_0x26768f[_0xcdfd('0x33')][_0xcdfd('0x37')]));_0x3378fe[_0xcdfd('0x36')]=_0x3378fe[_0xcdfd('0x36')][_0xcdfd('0x38')]?_0x3378fe[_0xcdfd('0x36')]:_0x55dd8a[_0xcdfd('0x30')];if(!_0x26768f[_0xcdfd('0x33')]['hasOwnProperty'](_0xcdfd('0x39'))){_0x3378fe[_0xcdfd('0x19')]=qs['limit'](_0x26768f[_0xcdfd('0x33')]['limit']);_0x3378fe[_0xcdfd('0x17')]=qs[_0xcdfd('0x17')](_0x26768f[_0xcdfd('0x33')]['offset']);}_0x3378fe[_0xcdfd('0x3a')]=qs[_0xcdfd('0x3b')](_0x26768f[_0xcdfd('0x33')]['sort']);_0x3378fe['where']=qs[_0xcdfd('0x34')](_['pick'](_0x26768f[_0xcdfd('0x33')],_0x55dd8a[_0xcdfd('0x34')]),_0x22d230);if(_0x26768f[_0xcdfd('0x33')][_0xcdfd('0x3c')]){_0x3378fe[_0xcdfd('0x3d')]=_[_0xcdfd('0x3e')](_0x3378fe[_0xcdfd('0x3d')],{'$or':_[_0xcdfd('0x2a')](_0x22d230,function(_0x3f14c9){if(_0x3f14c9[_0xcdfd('0x2e')]!==_0xcdfd('0x3f')){var _0x49ec4a={};_0x49ec4a[_0x3f14c9[_0xcdfd('0x26')]]={'$like':'%'+_0x26768f[_0xcdfd('0x33')][_0xcdfd('0x3c')]+'%'};return _0x49ec4a;}})});}_0x3378fe=_['merge']({},_0x3378fe,_0x26768f[_0xcdfd('0x40')]);var _0xe6530f={'where':_0x3378fe[_0xcdfd('0x3d')]};return db[_0xcdfd('0x2b')]['count'](_0xe6530f)[_0xcdfd('0x23')](function(_0x423c10){_0xe628c1[_0xcdfd('0x1a')]=_0x423c10;if(_0x26768f['query'][_0xcdfd('0x41')]){_0x3378fe[_0xcdfd('0x42')]=[{'all':!![]}];}return db['CmCustomField'][_0xcdfd('0x43')](_0x3378fe);})[_0xcdfd('0x23')](function(_0x1edd2d){_0xe628c1[_0xcdfd('0x44')]=_0x1edd2d;return _0xe628c1;})[_0xcdfd('0x23')](respondWithFilteredResult(_0x3efb37,_0x3378fe))['catch'](handleError(_0x3efb37,null));};exports[_0xcdfd('0x45')]=function(_0x156b25,_0x48a0e7){var _0x3dd6e0={'raw':!![],'where':{'id':_0x156b25[_0xcdfd('0x46')]['id']}},_0x4c83cc={};_0x4c83cc[_0xcdfd('0x30')]=_[_0xcdfd('0x32')](db[_0xcdfd('0x2b')][_0xcdfd('0x2c')]);_0x4c83cc[_0xcdfd('0x33')]=_['keys'](_0x156b25['query']);_0x4c83cc[_0xcdfd('0x34')]=_[_0xcdfd('0x35')](_0x4c83cc[_0xcdfd('0x30')],_0x4c83cc[_0xcdfd('0x33')]);_0x3dd6e0['attributes']=_[_0xcdfd('0x35')](_0x4c83cc['model'],qs[_0xcdfd('0x37')](_0x156b25['query'][_0xcdfd('0x37')]));_0x3dd6e0[_0xcdfd('0x36')]=_0x3dd6e0[_0xcdfd('0x36')][_0xcdfd('0x38')]?_0x3dd6e0[_0xcdfd('0x36')]:_0x4c83cc[_0xcdfd('0x30')];if(_0x156b25[_0xcdfd('0x33')]['includeAll']){_0x3dd6e0['include']=[{'all':!![]}];}_0x3dd6e0=_[_0xcdfd('0x3e')]({},_0x3dd6e0,_0x156b25[_0xcdfd('0x40')]);return db[_0xcdfd('0x2b')][_0xcdfd('0x47')](_0x3dd6e0)['then'](handleEntityNotFound(_0x48a0e7,null))[_0xcdfd('0x23')](respondWithResult(_0x48a0e7,null))[_0xcdfd('0x48')](handleError(_0x48a0e7,null));};exports[_0xcdfd('0x21')]=function(_0x4cbccf,_0xd5c5c2){if(_0x4cbccf[_0xcdfd('0x49')]['id']){delete _0x4cbccf[_0xcdfd('0x49')]['id'];}return db[_0xcdfd('0x2b')][_0xcdfd('0x47')]({'where':{'id':_0x4cbccf['params']['id']}})['then'](handleEntityNotFound(_0xd5c5c2,null))[_0xcdfd('0x23')](saveUpdates(_0x4cbccf['body'],null))['then'](respondWithResult(_0xd5c5c2,null))['catch'](handleError(_0xd5c5c2,null));};exports[_0xcdfd('0x22')]=function(_0x18cd6d,_0x49a80f){return db[_0xcdfd('0x2b')][_0xcdfd('0x47')]({'where':{'id':_0x18cd6d[_0xcdfd('0x46')]['id']}})[_0xcdfd('0x23')](handleEntityNotFound(_0x49a80f,null))['then'](removeEntity(_0x49a80f,null))[_0xcdfd('0x48')](handleError(_0x49a80f,null));};exports[_0xcdfd('0x4a')]=function(_0x2de3ef,_0x57e0ab){var _0x12ce31;return db[_0xcdfd('0x4b')]['transaction'](function(_0x543cf3){return db[_0xcdfd('0x2b')]['create'](_0x2de3ef[_0xcdfd('0x49')],{'transaction':_0x543cf3})[_0xcdfd('0x23')](function(_0x113ba4){_0x12ce31=_0x113ba4;var _0xd80224={'type':db['Sequelize']['TEXT'],'transaction':_0x543cf3};switch(_0x2de3ef['body'][_0xcdfd('0x2e')]){case _0xcdfd('0x4c'):_0xd80224[_0xcdfd('0x2e')]=db['Sequelize'][_0xcdfd('0x4d')];break;case _0xcdfd('0x4e'):_0xd80224['type']=db['Sequelize'][_0xcdfd('0x4f')];break;case _0xcdfd('0x50'):_0xd80224[_0xcdfd('0x2e')]=db['Sequelize'][_0xcdfd('0x51')];_0xd80224[_0xcdfd('0x52')]=![];break;default:}return db[_0xcdfd('0x4b')][_0xcdfd('0x53')]['addColumn'](_0xcdfd('0x54'),util[_0xcdfd('0x55')](_0xcdfd('0x56'),_0x12ce31['id']),_0xd80224);})[_0xcdfd('0x23')](function(){return _0x12ce31;});})[_0xcdfd('0x23')](respondWithResult(_0x57e0ab,0xc9))['catch'](handleError(_0x57e0ab,null));};
\ No newline at end of file
index 713b93e..e310b5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41ef=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','CmCustomField','cm_custom_fields','util'];(function(_0x141486,_0x58ed56){var _0x1b5fb9=function(_0x273fc0){while(--_0x273fc0){_0x141486['push'](_0x141486['shift']());}};_0x1b5fb9(++_0x58ed56);}(_0x41ef,0x1b7));var _0xf41e=function(_0x362c86,_0x7b231f){_0x362c86=_0x362c86-0x0;var _0x220195=_0x41ef[_0x362c86];return _0x220195;};'use strict';var _=require('lodash');var util=require(_0xf41e('0x0'));var logger=require(_0xf41e('0x1'))(_0xf41e('0x2'));var moment=require(_0xf41e('0x3'));var BPromise=require('bluebird');var rp=require(_0xf41e('0x4'));var fs=require('fs');var path=require(_0xf41e('0x5'));var rimraf=require(_0xf41e('0x6'));var config=require(_0xf41e('0x7'));var attributes=require('./cmCustomField.attributes');module[_0xf41e('0x8')]=function(_0x4d2def,_0x4b3011){return _0x4d2def['define'](_0xf41e('0x9'),attributes,{'tableName':_0xf41e('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0afd=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','CmCustomField','lodash'];(function(_0x3260a1,_0x466324){var _0x33bc43=function(_0x50597e){while(--_0x50597e){_0x3260a1['push'](_0x3260a1['shift']());}};_0x33bc43(++_0x466324);}(_0x0afd,0x18b));var _0xd0af=function(_0x4519f0,_0x55831e){_0x4519f0=_0x4519f0-0x0;var _0x5298f5=_0x0afd[_0x4519f0];return _0x5298f5;};'use strict';var _=require(_0xd0af('0x0'));var util=require(_0xd0af('0x1'));var logger=require(_0xd0af('0x2'))(_0xd0af('0x3'));var moment=require(_0xd0af('0x4'));var BPromise=require('bluebird');var rp=require(_0xd0af('0x5'));var fs=require('fs');var path=require(_0xd0af('0x6'));var rimraf=require(_0xd0af('0x7'));var config=require(_0xd0af('0x8'));var attributes=require('./cmCustomField.attributes');module[_0xd0af('0x9')]=function(_0x276c1a,_0x3de5b5){return _0x276c1a[_0xd0af('0xa')](_0xd0af('0xb'),attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 63b4a4f..2995c78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd508=['stringify','error','code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s'];(function(_0x166d93,_0x301f09){var _0xba708=function(_0x349bf7){while(--_0x349bf7){_0x166d93['push'](_0x166d93['shift']());}};_0xba708(++_0x301f09);}(_0xd508,0x133));var _0x8d50=function(_0x60dad1,_0x44a161){_0x60dad1=_0x60dad1-0x0;var _0x512282=_0xd508[_0x60dad1];return _0x512282;};'use strict';var _=require('lodash');var util=require(_0x8d50('0x0'));var moment=require(_0x8d50('0x1'));var BPromise=require(_0x8d50('0x2'));var rs=require(_0x8d50('0x3'));var fs=require('fs');var Redis=require(_0x8d50('0x4'));var db=require(_0x8d50('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8d50('0x6'))(_0x8d50('0x7'));var config=require(_0x8d50('0x8'));var jayson=require(_0x8d50('0x9'));var client=jayson[_0x8d50('0xa')][_0x8d50('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5a285d,_0x5a7228,_0x22b2e1){return new BPromise(function(_0x3a7679,_0x263cce){return client[_0x8d50('0xc')](_0x5a285d,_0x22b2e1)[_0x8d50('0xd')](function(_0x3747e0){logger['info'](_0x8d50('0xe'),_0x5a7228,_0x8d50('0xf'));logger[_0x8d50('0x10')](_0x8d50('0x11'),_0x5a7228,_0x8d50('0xf'),JSON[_0x8d50('0x12')](_0x3747e0));if(_0x3747e0[_0x8d50('0x13')]){if(_0x3747e0['error'][_0x8d50('0x14')]===0x1f4){logger[_0x8d50('0x13')](_0x8d50('0xe'),_0x5a7228,_0x3747e0[_0x8d50('0x13')][_0x8d50('0x15')]);return _0x263cce(_0x3747e0[_0x8d50('0x13')][_0x8d50('0x15')]);}logger[_0x8d50('0x13')](_0x8d50('0xe'),_0x5a7228,_0x3747e0[_0x8d50('0x13')][_0x8d50('0x15')]);return _0x3a7679(_0x3747e0['error']['message']);}else{logger[_0x8d50('0x16')]('CmCustomField,\x20%s,\x20%s',_0x5a7228,'request\x20sent');_0x3a7679(_0x3747e0[_0x8d50('0x17')][_0x8d50('0x15')]);}})[_0x8d50('0x18')](function(_0x359324){logger[_0x8d50('0x13')](_0x8d50('0xe'),_0x5a7228,_0x359324);_0x263cce(_0x359324);});});}
\ No newline at end of file
+var _0x9384=['request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','CmCustomField,\x20%s,\x20%s'];(function(_0x6ad374,_0x135ffb){var _0x4f39ad=function(_0xa9b8b0){while(--_0xa9b8b0){_0x6ad374['push'](_0x6ad374['shift']());}};_0x4f39ad(++_0x135ffb);}(_0x9384,0x11c));var _0x4938=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0x9384[_0x7e2eb0];return _0xd92de4;};'use strict';var _=require('lodash');var util=require(_0x4938('0x0'));var moment=require(_0x4938('0x1'));var BPromise=require(_0x4938('0x2'));var rs=require(_0x4938('0x3'));var fs=require('fs');var Redis=require(_0x4938('0x4'));var db=require(_0x4938('0x5'))['db'];var utils=require(_0x4938('0x6'));var logger=require(_0x4938('0x7'))(_0x4938('0x8'));var config=require(_0x4938('0x9'));var jayson=require(_0x4938('0xa'));var client=jayson[_0x4938('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5deeff,_0x5a2f33,_0x1b7904){return new BPromise(function(_0x6e624b,_0x53c7c4){return client[_0x4938('0xc')](_0x5deeff,_0x1b7904)[_0x4938('0xd')](function(_0x694cf9){logger[_0x4938('0xe')](_0x4938('0xf'),_0x5a2f33,_0x4938('0x10'));logger[_0x4938('0x11')](_0x4938('0x12'),_0x5a2f33,_0x4938('0x10'),JSON[_0x4938('0x13')](_0x694cf9));if(_0x694cf9[_0x4938('0x14')]){if(_0x694cf9[_0x4938('0x14')][_0x4938('0x15')]===0x1f4){logger['error'](_0x4938('0xf'),_0x5a2f33,_0x694cf9[_0x4938('0x14')][_0x4938('0x16')]);return _0x53c7c4(_0x694cf9[_0x4938('0x14')][_0x4938('0x16')]);}logger[_0x4938('0x14')](_0x4938('0xf'),_0x5a2f33,_0x694cf9[_0x4938('0x14')]['message']);return _0x6e624b(_0x694cf9[_0x4938('0x14')]['message']);}else{logger['info']('CmCustomField,\x20%s,\x20%s',_0x5a2f33,_0x4938('0x10'));_0x6e624b(_0x694cf9[_0x4938('0x17')][_0x4938('0x16')]);}})[_0x4938('0x18')](function(_0x26f398){logger[_0x4938('0x14')](_0x4938('0xf'),_0x5a2f33,_0x26f398);_0x53c7c4(_0x26f398);});});}
\ No newline at end of file
index 7cffa71..2827472 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x770d=['get','/:id','isAuthenticated','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmCustomField.controller'];(function(_0x2abb0c,_0xbcef8f){var _0x9bf167=function(_0x32eb05){while(--_0x32eb05){_0x2abb0c['push'](_0x2abb0c['shift']());}};_0x9bf167(++_0xbcef8f);}(_0x770d,0x122));var _0xd770=function(_0x5791de,_0x4494c1){_0x5791de=_0x5791de-0x0;var _0x103333=_0x770d[_0x5791de];return _0x103333;};'use strict';var multer=require(_0xd770('0x0'));var util=require(_0xd770('0x1'));var path=require(_0xd770('0x2'));var timeout=require(_0xd770('0x3'));var express=require(_0xd770('0x4'));var router=express[_0xd770('0x5')]();var fs_extra=require(_0xd770('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xd770('0x7'));var config=require(_0xd770('0x8'));var controller=require(_0xd770('0x9'));router[_0xd770('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xd770('0xa')](_0xd770('0xb'),auth[_0xd770('0xc')](),controller[_0xd770('0xd')]);router[_0xd770('0xe')]('/',auth[_0xd770('0xc')](),controller[_0xd770('0xf')]);router['put'](_0xd770('0xb'),auth[_0xd770('0xc')](),controller[_0xd770('0x10')]);router[_0xd770('0x11')](_0xd770('0xb'),auth['isAuthenticated'](),controller[_0xd770('0x12')]);module[_0xd770('0x13')]=router;
\ No newline at end of file
+var _0x980f=['isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./cmCustomField.controller','get'];(function(_0x1e6d67,_0x50b750){var _0xddea4d=function(_0x4f2eb1){while(--_0x4f2eb1){_0x1e6d67['push'](_0x1e6d67['shift']());}};_0xddea4d(++_0x50b750);}(_0x980f,0xe6));var _0xf980=function(_0x4e0b8c,_0x443f31){_0x4e0b8c=_0x4e0b8c-0x0;var _0x633ecc=_0x980f[_0x4e0b8c];return _0x633ecc;};'use strict';var multer=require(_0xf980('0x0'));var util=require(_0xf980('0x1'));var path=require(_0xf980('0x2'));var timeout=require(_0xf980('0x3'));var express=require(_0xf980('0x4'));var router=express['Router']();var fs_extra=require(_0xf980('0x5'));var auth=require(_0xf980('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf980('0x7'));var controller=require(_0xf980('0x8'));router[_0xf980('0x9')]('/',auth[_0xf980('0xa')](),controller[_0xf980('0xb')]);router[_0xf980('0x9')](_0xf980('0xc'),auth[_0xf980('0xa')](),controller['show']);router[_0xf980('0xd')]('/',auth[_0xf980('0xa')](),controller[_0xf980('0xe')]);router[_0xf980('0xf')](_0xf980('0xc'),auth['isAuthenticated'](),controller[_0xf980('0x10')]);router[_0xf980('0x11')](_0xf980('0xc'),auth[_0xf980('0xa')](),controller[_0xf980('0x12')]);module[_0xf980('0x13')]=router;
\ No newline at end of file
index c35a15a..f87f7aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9df5=['STRING','BOOLEAN','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','moment','sequelize','exports'];(function(_0x295779,_0xc1caab){var _0x2b98a3=function(_0x1b559d){while(--_0x1b559d){_0x295779['push'](_0x295779['shift']());}};_0x2b98a3(++_0xc1caab);}(_0x9df5,0x1b5));var _0x59df=function(_0x1510d8,_0x160648){_0x1510d8=_0x1510d8-0x0;var _0x166891=_0x9df5[_0x1510d8];return _0x166891;};'use strict';var moment=require(_0x59df('0x0'));var Sequelize=require(_0x59df('0x1'));module[_0x59df('0x2')]={'phone':{'type':Sequelize[_0x59df('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x59df('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x59df('0x5')],'defaultValue':moment()[_0x59df('0x6')](_0x59df('0x7'))},'countbusyretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x59df('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x59df('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x59df('0x5')]},'priority':{'type':Sequelize[_0x59df('0x8')](0x2)[_0x59df('0x9')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x59df('0x4')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x59df('0x8')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x59df('0x8')],'unique':'contactListQueue'},'UserId':{'type':Sequelize[_0x59df('0x8')]},'VoiceQueueId':{'type':Sequelize[_0x59df('0x8')],'unique':_0x59df('0xa')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x59df('0x8')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5d7c=['BOOLEAN','DATE','INTEGER','UNSIGNED','contactListQueue','sequelize','exports'];(function(_0x3768f3,_0x4a40f1){var _0x526a13=function(_0x350126){while(--_0x350126){_0x3768f3['push'](_0x3768f3['shift']());}};_0x526a13(++_0x4a40f1);}(_0x5d7c,0x1ef));var _0xc5d7=function(_0x10f0a5,_0x45ff64){_0x10f0a5=_0x10f0a5-0x0;var _0x563a85=_0x5d7c[_0x10f0a5];return _0x563a85;};'use strict';var moment=require('moment');var Sequelize=require(_0xc5d7('0x0'));module[_0xc5d7('0x1')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize[_0xc5d7('0x2')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0xc5d7('0x3')],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0xc5d7('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xc5d7('0x4')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize[_0xc5d7('0x2')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xc5d7('0x3')]},'priority':{'type':Sequelize[_0xc5d7('0x4')](0x2)[_0xc5d7('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0xc5d7('0x2')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0xc5d7('0x6')},'ListId':{'type':Sequelize[_0xc5d7('0x4')],'unique':'contactListQueue'},'UserId':{'type':Sequelize[_0xc5d7('0x4')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0xc5d7('0x6')},'CampaignId':{'type':Sequelize[_0xc5d7('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0xc5d7('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xc5d7('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xc5d7('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index fd93a7a..9a71105 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd9d=['format','YYYY-MM-DD\x20HH:mm:ss','direction','prev','hopperIds','priority','scheduledAt','ASC','DESC','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','dialOrderByScheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','UPDATE','Contact','Company','CmList','List','Queue','getOpenContacts','getVoiceQueues','outbound','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','sendStatus','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','error','send','index','CmHopper','rawAttributes','fieldName','type','key','model','map','name','query','filters','intersection','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$between','$notBetween','$in','$notIn','$like','$notLike','$notILike','$overlap','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','createdAt','statedesc','campaign','user','deleted','deletedat','campaigntype','queue','ivr','CmContact','isNil','firstName','lastName','calleridname','finally','getPreview','describe','keys','preview','transaction'];(function(_0x1d355a,_0x118fd8){var _0x35cbd4=function(_0x33d9a9){while(--_0x33d9a9){_0x1d355a['push'](_0x1d355a['shift']());}};_0x35cbd4(++_0x118fd8);}(_0xdd9d,0x145));var _0xddd9=function(_0x2135d3,_0x152021){_0x2135d3=_0x2135d3-0x0;var _0x4d18c8=_0xdd9d[_0x2135d3];return _0x4d18c8;};'use strict';var emlformat=require(_0xddd9('0x0'));var rimraf=require(_0xddd9('0x1'));var zipdir=require(_0xddd9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xddd9('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xddd9('0x4'));var util=require(_0xddd9('0x5'));var path=require(_0xddd9('0x6'));var sox=require(_0xddd9('0x7'));var csv=require(_0xddd9('0x8'));var ejs=require(_0xddd9('0x9'));var fs=require('fs');var fs_extra=require(_0xddd9('0xa'));var _=require(_0xddd9('0xb'));var squel=require(_0xddd9('0xc'));var crypto=require(_0xddd9('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xddd9('0xe'));var toCsv=require(_0xddd9('0x8'));var querystring=require(_0xddd9('0xf'));var Papa=require('papaparse');var Redis=require(_0xddd9('0x10'));var authService=require(_0xddd9('0x11'));var qs=require(_0xddd9('0x12'));var as=require(_0xddd9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xddd9('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xddd9('0x15'));var db=require(_0xddd9('0x16'))['db'];function respondWithStatusCode(_0x54aa60,_0x3fee11){_0x3fee11=_0x3fee11||0xcc;return function(_0x2f64c9){if(_0x2f64c9){return _0x54aa60['sendStatus'](_0x3fee11);}return _0x54aa60[_0xddd9('0x17')](_0x3fee11)[_0xddd9('0x18')]();};}function respondWithResult(_0x32cd74,_0x3006f7){_0x3006f7=_0x3006f7||0xc8;return function(_0x15f826){if(_0x15f826){return _0x32cd74[_0xddd9('0x17')](_0x3006f7)[_0xddd9('0x19')](_0x15f826);}};}function respondWithFilteredResult(_0x4738ae,_0x2192bd){return function(_0x3826fa){if(_0x3826fa){var _0x9e34f6=typeof _0x2192bd['offset']===_0xddd9('0x1a')&&typeof _0x2192bd['limit']===_0xddd9('0x1a');var _0x5726af=_0x3826fa[_0xddd9('0x1b')];var _0x5e0259=_0x9e34f6?0x0:_0x2192bd[_0xddd9('0x1c')];var _0x94cc0b=_0x9e34f6?_0x3826fa[_0xddd9('0x1b')]:_0x2192bd['offset']+_0x2192bd[_0xddd9('0x1d')];var _0x2a806d;if(_0x94cc0b>=_0x5726af){_0x94cc0b=_0x5726af;_0x2a806d=0xc8;}else{_0x2a806d=0xce;}_0x4738ae[_0xddd9('0x17')](_0x2a806d);return _0x4738ae[_0xddd9('0x1e')]('Content-Range',_0x5e0259+'-'+_0x94cc0b+'/'+_0x5726af)['json'](_0x3826fa);}return null;};}function patchUpdates(_0x560e60){return function(_0x3d873d){try{jsonpatch[_0xddd9('0x1f')](_0x3d873d,_0x560e60,!![]);}catch(_0x3e5d71){return BPromise[_0xddd9('0x20')](_0x3e5d71);}return _0x3d873d[_0xddd9('0x21')]();};}function saveUpdates(_0x319c29,_0x4188ff){return function(_0x4d070d){if(_0x4d070d){return _0x4d070d[_0xddd9('0x22')](_0x319c29)[_0xddd9('0x23')](function(_0x2e8882){return _0x2e8882;});}return null;};}function removeEntity(_0x17834d,_0x1169d2){return function(_0x4aad9b){if(_0x4aad9b){return _0x4aad9b[_0xddd9('0x24')]()[_0xddd9('0x23')](function(){_0x17834d['status'](0xcc)[_0xddd9('0x18')]();});}};}function handleEntityNotFound(_0xcfe50a,_0x46a8a0){return function(_0x142d54){if(!_0x142d54){_0xcfe50a['sendStatus'](0x194);}return _0x142d54;};}function handleError(_0x2135ce,_0x48abe6){_0x48abe6=_0x48abe6||0x1f4;return function(_0x4be006){logger[_0xddd9('0x25')](_0x4be006['stack']);if(_0x4be006['name']){delete _0x4be006['name'];}_0x2135ce[_0xddd9('0x17')](_0x48abe6)[_0xddd9('0x26')](_0x4be006);};}exports[_0xddd9('0x27')]=function(_0x51c01c,_0x53787b){var _0x4e3af1={},_0x318156={},_0xcf80e6={'count':0x0,'rows':[]};var _0x51cf25=_['map'](db[_0xddd9('0x28')][_0xddd9('0x29')],function(_0x41260c){return{'name':_0x41260c[_0xddd9('0x2a')],'type':_0x41260c[_0xddd9('0x2b')][_0xddd9('0x2c')]};});_0x318156[_0xddd9('0x2d')]=_[_0xddd9('0x2e')](_0x51cf25,_0xddd9('0x2f'));_0x318156[_0xddd9('0x30')]=_['keys'](_0x51c01c[_0xddd9('0x30')]);_0x318156[_0xddd9('0x31')]=_[_0xddd9('0x32')](_0x318156[_0xddd9('0x2d')],_0x318156[_0xddd9('0x30')]);_0x318156[_0xddd9('0x31')]=_[_0xddd9('0x33')](_0x318156[_0xddd9('0x31')],[_0xddd9('0x34'),_0xddd9('0x35'),_0xddd9('0x36'),_0xddd9('0x37'),_0xddd9('0x38'),_0xddd9('0x39'),_0xddd9('0x3a'),_0xddd9('0x3b'),'$not',_0xddd9('0x3c'),_0xddd9('0x3d'),_0xddd9('0x3e'),_0xddd9('0x3f'),_0xddd9('0x40'),_0xddd9('0x41'),'$iLike',_0xddd9('0x42'),_0xddd9('0x40'),_0xddd9('0x43'),_0xddd9('0x44'),_0xddd9('0x45'),_0xddd9('0x46')]);_0x4e3af1[_0xddd9('0x47')]=_['intersection'](_0x318156['model'],qs[_0xddd9('0x48')](_0x51c01c[_0xddd9('0x30')][_0xddd9('0x48')]));_0x4e3af1[_0xddd9('0x47')]=_0x4e3af1[_0xddd9('0x47')][_0xddd9('0x49')]?_0x4e3af1[_0xddd9('0x47')]:_0x318156[_0xddd9('0x2d')];if(!_0x51c01c[_0xddd9('0x30')][_0xddd9('0x4a')](_0xddd9('0x4b'))){_0x4e3af1['limit']=qs[_0xddd9('0x1d')](_0x51c01c[_0xddd9('0x30')]['limit']);_0x4e3af1[_0xddd9('0x1c')]=qs[_0xddd9('0x1c')](_0x51c01c['query'][_0xddd9('0x1c')]);}_0x4e3af1[_0xddd9('0x4c')]=qs[_0xddd9('0x4d')](_0x51c01c[_0xddd9('0x30')]['sort']);_0x4e3af1[_0xddd9('0x4e')]=qs['filters'](_[_0xddd9('0x4f')](_0x51c01c['query'],_0x318156[_0xddd9('0x31')]),_0x51cf25);if(_0x51c01c['query'][_0xddd9('0x50')]){_0x4e3af1[_0xddd9('0x4e')]=_[_0xddd9('0x51')](_0x4e3af1[_0xddd9('0x4e')],{'$or':_['map'](_0x51cf25,function(_0x38869b){if(_0x38869b['type']!=='VIRTUAL'){var _0x5f5a3e={};_0x5f5a3e[_0x38869b['name']]={'$like':'%'+_0x51c01c[_0xddd9('0x30')][_0xddd9('0x50')]+'%'};return _0x5f5a3e;}})});}_0x4e3af1=_[_0xddd9('0x51')]({},_0x4e3af1,_0x51c01c[_0xddd9('0x52')]);var _0x1714ce={'where':_0x4e3af1[_0xddd9('0x4e')]};return db[_0xddd9('0x28')][_0xddd9('0x1b')](_0x1714ce)[_0xddd9('0x23')](function(_0x2f2af3){_0xcf80e6[_0xddd9('0x1b')]=_0x2f2af3;if(_0x51c01c['query'][_0xddd9('0x53')]){_0x4e3af1[_0xddd9('0x54')]=[{'all':!![]}];}return db[_0xddd9('0x28')][_0xddd9('0x55')](_0x4e3af1);})[_0xddd9('0x23')](function(_0x58584d){_0xcf80e6[_0xddd9('0x56')]=_0x58584d;return _0xcf80e6;})[_0xddd9('0x23')](respondWithFilteredResult(_0x53787b,_0x4e3af1))[_0xddd9('0x57')](handleError(_0x53787b,null));};exports[_0xddd9('0x58')]=function(_0xcf060f,_0x57494c){var _0x30ba47={'raw':!![],'where':{'id':_0xcf060f['params']['id']}},_0x39af71={};_0x39af71[_0xddd9('0x2d')]=_['keys'](db[_0xddd9('0x28')]['rawAttributes']);_0x39af71[_0xddd9('0x30')]=_['keys'](_0xcf060f[_0xddd9('0x30')]);_0x39af71[_0xddd9('0x31')]=_[_0xddd9('0x32')](_0x39af71[_0xddd9('0x2d')],_0x39af71[_0xddd9('0x30')]);_0x30ba47['attributes']=_[_0xddd9('0x32')](_0x39af71['model'],qs['fields'](_0xcf060f[_0xddd9('0x30')][_0xddd9('0x48')]));_0x30ba47[_0xddd9('0x47')]=_0x30ba47['attributes'][_0xddd9('0x49')]?_0x30ba47[_0xddd9('0x47')]:_0x39af71['model'];if(_0xcf060f['query']['includeAll']){_0x30ba47[_0xddd9('0x54')]=[{'all':!![]}];}_0x30ba47=_[_0xddd9('0x51')]({},_0x30ba47,_0xcf060f[_0xddd9('0x52')]);return db[_0xddd9('0x28')][_0xddd9('0x59')](_0x30ba47)[_0xddd9('0x23')](handleEntityNotFound(_0x57494c,null))[_0xddd9('0x23')](respondWithResult(_0x57494c,null))[_0xddd9('0x57')](handleError(_0x57494c,null));};exports[_0xddd9('0x5a')]=function(_0x7f2e2d,_0x24db52){return db[_0xddd9('0x28')]['create'](_0x7f2e2d[_0xddd9('0x5b')],{})[_0xddd9('0x23')](respondWithResult(_0x24db52,0xc9))[_0xddd9('0x57')](handleError(_0x24db52,null));};exports[_0xddd9('0x22')]=function(_0x27d5fb,_0x206296){if(_0x27d5fb[_0xddd9('0x5b')]['id']){delete _0x27d5fb[_0xddd9('0x5b')]['id'];}return db[_0xddd9('0x28')][_0xddd9('0x59')]({'where':{'id':_0x27d5fb[_0xddd9('0x5c')]['id']}})[_0xddd9('0x23')](handleEntityNotFound(_0x206296,null))[_0xddd9('0x23')](saveUpdates(_0x27d5fb['body'],null))[_0xddd9('0x23')](respondWithResult(_0x206296,null))['catch'](handleError(_0x206296,null));};exports['describe']=function(_0x33d14e,_0x10f2b4){return db[_0xddd9('0x28')]['describe']()[_0xddd9('0x23')](respondWithResult(_0x10f2b4,null))[_0xddd9('0x57')](handleError(_0x10f2b4,null));};exports[_0xddd9('0x24')]=function(_0x21ad54,_0x5d4341){var _0x28028e;return db['CmHopper'][_0xddd9('0x59')]({'where':{'id':_0x21ad54[_0xddd9('0x5c')]['id']}})['then'](handleEntityNotFound(_0x5d4341,null))['then'](function(_0x4c48ec){if(_0x4c48ec){return _0x4c48ec[_0xddd9('0x24')]()['then'](function(_0x2c48db){return _0x2c48db;});}})[_0xddd9('0x23')](function(_0x4dddae){_0x28028e=_0x4dddae;if(_0x4dddae){if(_0x4dddae[_0xddd9('0x5d')]||_0x4dddae['CampaignId']){return db[_0x4dddae['VoiceQueueId']?_0xddd9('0x5e'):_0xddd9('0x5f')][_0xddd9('0x59')]({'where':{'id':_0x4dddae[_0xddd9('0x5d')]?_0x4dddae[_0xddd9('0x5d')]:_0x4dddae[_0xddd9('0x60')]},'attributes':['id',_0xddd9('0x2f')],'raw':!![]});}}})[_0xddd9('0x23')](function(_0x2de6f9){var _0x53269c={};if(_0x2de6f9){_[_0xddd9('0x51')](_0x53269c,_[_0xddd9('0x61')](_0x28028e[_0xddd9('0x62')],[_0xddd9('0x63'),'updatedAt','id']));_0x53269c['state']=0x15;_0x53269c[_0xddd9('0x64')]='deleted';_0x53269c[_0xddd9('0x65')]=_0x2de6f9[_0xddd9('0x2f')];_0x53269c['membername']=_0x21ad54[_0xddd9('0x66')][_0xddd9('0x2f')];_0x53269c['UserId']=_0x21ad54[_0xddd9('0x66')]['id'];_0x53269c[_0xddd9('0x67')]=!![];_0x53269c[_0xddd9('0x68')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x53269c['calleridnum']=_0x28028e['phone'];_0x53269c[_0xddd9('0x69')]=_0x28028e[_0xddd9('0x5d')]?_0xddd9('0x6a'):_0xddd9('0x6b');return db[_0xddd9('0x6c')][_0xddd9('0x59')]({'where':{'id':_0x53269c['ContactId']},'attributes':['firstName','lastName']})[_0xddd9('0x23')](function(_0x3e9c12){if(!_[_0xddd9('0x6d')](_0x5d4341)&&!_[_0xddd9('0x6d')](_0x3e9c12[_0xddd9('0x6e')])){_0x53269c['calleridname']=_0x3e9c12['firstName'];if(!_[_0xddd9('0x6d')](_0x3e9c12[_0xddd9('0x6f')])){_0x53269c[_0xddd9('0x70')]+='\x20'+_0x3e9c12[_0xddd9('0x6f')];}}})[_0xddd9('0x71')](function(){return db['CmHopperFinal'][_0xddd9('0x5a')](_0x53269c);});}})[_0xddd9('0x23')](function(){return _0x5d4341['status'](0xcc)[_0xddd9('0x18')]();})['catch'](handleError(_0x5d4341,null));};exports[_0xddd9('0x72')]=function(_0x23cd62,_0x14082e,_0x4a5f6f){var _0x6fcf79=[];return db[_0xddd9('0x6c')][_0xddd9('0x73')]()['then'](function(_0x4f811c){_0x6fcf79=_[_0xddd9('0x74')](_0x4f811c);return _0x23cd62[_0xddd9('0x66')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xddd9('0x75')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})[_0xddd9('0x23')](function(_0x40f207){if(_0x40f207&&_0x40f207[_0xddd9('0x49')]){return db['sequelize'][_0xddd9('0x76')](function(_0x12a367){var _0x45e0bd={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xddd9('0x77')](_0xddd9('0x78'))},'VoiceQueueId':{'$in':_[_0xddd9('0x2e')](_0x40f207,'id')},'$or':[{'UserId':null},{'UserId':_0x23cd62[_0xddd9('0x66')]['id']}]};var _0x3faa22=[];if(_0x23cd62[_0xddd9('0x5b')][_0xddd9('0x79')]&&_0x23cd62['body']['direction']===_0xddd9('0x7a')){if(!_['isEmpty'](_0x23cd62[_0xddd9('0x5b')][_0xddd9('0x7b')])){_0x45e0bd['id']={'$in':_0x23cd62[_0xddd9('0x5b')][_0xddd9('0x7b')]};}_0x3faa22=[[_0xddd9('0x7c'),'ASC'],[_0xddd9('0x7d'),_0x40f207[0x0]['dialOrderByScheduledAt']===_0xddd9('0x7e')?_0xddd9('0x7f'):_0xddd9('0x7e')],db[_0xddd9('0x80')][_0xddd9('0x81')](_0xddd9('0x82')),['id',_0xddd9('0x7f')]];}else{if(!_['isEmpty'](_0x23cd62[_0xddd9('0x5b')][_0xddd9('0x7b')])){_0x45e0bd['id']={'$notIn':_0x23cd62['body'][_0xddd9('0x7b')]};}_0x3faa22=[[_0xddd9('0x7c'),'DESC'],[_0xddd9('0x7d'),_0x40f207[0x0][_0xddd9('0x83')]],db[_0xddd9('0x80')][_0xddd9('0x81')](_0xddd9('0x84')),['id',_0xddd9('0x7e')]];}return db[_0xddd9('0x28')][_0xddd9('0x85')]({'attributes':['id',_0xddd9('0x86')],'where':_0x45e0bd,'order':_0x3faa22,'transaction':_0x12a367,'lock':_0x12a367['LOCK'][_0xddd9('0x87')],'include':[{'model':db[_0xddd9('0x6c')],'as':_0xddd9('0x88'),'attributes':_0x6fcf79,'include':[{'model':db['CmCompany'],'as':_0xddd9('0x89'),'attributes':['id',_0xddd9('0x2f')]}]},{'model':db[_0xddd9('0x8a')],'as':_0xddd9('0x8b'),'attributes':['id','name']},{'model':db[_0xddd9('0x5e')],'as':_0xddd9('0x8c'),'attributes':['id',_0xddd9('0x2f'),'dialActive']}]})['then'](function(_0x1da507){if(_0x1da507){return _0x1da507[_0xddd9('0x22')]({'UserId':_0x23cd62[_0xddd9('0x66')]['id']},{'transaction':_0x12a367});}});});}})[_0xddd9('0x23')](handleEntityNotFound(_0x14082e,null))[_0xddd9('0x23')](respondWithResult(_0x14082e,null))[_0xddd9('0x57')](handleError(_0x14082e,null));};exports[_0xddd9('0x8d')]=function(_0x16d515,_0x19bde5,_0x5c19bc){return _0x16d515[_0xddd9('0x66')][_0xddd9('0x8e')]({'where':{'type':_0xddd9('0x8f'),'dialActive':!![],'dialMethod':_0xddd9('0x75')},'attributes':['id'],'raw':!![]})[_0xddd9('0x23')](function(_0x10a860){if(_0x10a860&&_0x10a860['length']){return db['CmHopper'][_0xddd9('0x1b')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xddd9('0x77')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0xddd9('0x2e')](_0x10a860,'id')},'$or':[{'UserId':null},{'UserId':_0x16d515[_0xddd9('0x66')]['id']}]}});}return 0x0;})[_0xddd9('0x23')](function(_0x1fa438){if(!_['isNil'](_0x1fa438)&&_[_0xddd9('0x90')](_0x1fa438)){return _0x19bde5[_0xddd9('0x17')](0xc8)[_0xddd9('0x19')]({'contacts':_0x1fa438});}else{logger[_0xddd9('0x25')](_0xddd9('0x91'),_0xddd9('0x8d'),0x194,_0xddd9('0x92'));_0x19bde5[_0xddd9('0x93')](0x194);}})[_0xddd9('0x57')](handleError(_0x19bde5,null));};
\ No newline at end of file
+var _0x6bc7=['$notIn','$like','$notLike','$notILike','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','options','includeAll','include','findAll','show','params','rawAttributes','find','catch','create','body','VoiceQueueId','CampaignId','Campaign','omit','dataValues','createdAt','state','statedesc','deleted','UserId','user','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','CmContact','ContactId','firstName','isNil','calleridname','lastName','finally','CmHopperFinal','getPreview','getVoiceQueues','outbound','dialOrderByScheduledAt','sequelize','transaction','format','direction','prev','hopperIds','scheduledAt','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','scheduledat','LOCK','Contact','CmCompany','List','VoiceQueue','Queue','dialActive','preview','getOpenContacts','entity\x20not\x20found','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','error','name','index','CmHopper','fieldName','type','model','map','query','keys','filters','intersection','concat','$and','$gt','$gte','$lt','$ne','$between','$in'];(function(_0x39df80,_0x19aad3){var _0x3ced8b=function(_0x2d952e){while(--_0x2d952e){_0x39df80['push'](_0x39df80['shift']());}};_0x3ced8b(++_0x19aad3);}(_0x6bc7,0x1f1));var _0x76bc=function(_0x4c2b96,_0x17ab0d){_0x4c2b96=_0x4c2b96-0x0;var _0x2a62bf=_0x6bc7[_0x4c2b96];return _0x2a62bf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x76bc('0x0'));var zipdir=require(_0x76bc('0x1'));var jsonpatch=require(_0x76bc('0x2'));var rp=require('request-promise');var moment=require(_0x76bc('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x76bc('0x4'));var util=require(_0x76bc('0x5'));var path=require(_0x76bc('0x6'));var sox=require(_0x76bc('0x7'));var csv=require('to-csv');var ejs=require(_0x76bc('0x8'));var fs=require('fs');var fs_extra=require(_0x76bc('0x9'));var _=require(_0x76bc('0xa'));var squel=require('squel');var crypto=require(_0x76bc('0xb'));var jsforce=require(_0x76bc('0xc'));var deskjs=require(_0x76bc('0xd'));var toCsv=require(_0x76bc('0xe'));var querystring=require(_0x76bc('0xf'));var Papa=require(_0x76bc('0x10'));var Redis=require(_0x76bc('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x76bc('0x12'));var as=require(_0x76bc('0x13'));var hardwareService=require(_0x76bc('0x14'));var logger=require('../../config/logger')(_0x76bc('0x15'));var utils=require(_0x76bc('0x16'));var config=require(_0x76bc('0x17'));var licenseUtil=require(_0x76bc('0x18'));var db=require(_0x76bc('0x19'))['db'];function respondWithStatusCode(_0xe276ef,_0x2a3129){_0x2a3129=_0x2a3129||0xcc;return function(_0x1fb8bc){if(_0x1fb8bc){return _0xe276ef[_0x76bc('0x1a')](_0x2a3129);}return _0xe276ef[_0x76bc('0x1b')](_0x2a3129)[_0x76bc('0x1c')]();};}function respondWithResult(_0x2de983,_0x46ebdb){_0x46ebdb=_0x46ebdb||0xc8;return function(_0xf62e81){if(_0xf62e81){return _0x2de983['status'](_0x46ebdb)[_0x76bc('0x1d')](_0xf62e81);}};}function respondWithFilteredResult(_0x372db0,_0x5a145c){return function(_0x1f8390){if(_0x1f8390){var _0x34ec54=typeof _0x5a145c[_0x76bc('0x1e')]===_0x76bc('0x1f')&&typeof _0x5a145c[_0x76bc('0x20')]===_0x76bc('0x1f');var _0x215738=_0x1f8390[_0x76bc('0x21')];var _0x23664c=_0x34ec54?0x0:_0x5a145c['offset'];var _0x4fdc7e=_0x34ec54?_0x1f8390[_0x76bc('0x21')]:_0x5a145c['offset']+_0x5a145c['limit'];var _0x4405e5;if(_0x4fdc7e>=_0x215738){_0x4fdc7e=_0x215738;_0x4405e5=0xc8;}else{_0x4405e5=0xce;}_0x372db0[_0x76bc('0x1b')](_0x4405e5);return _0x372db0[_0x76bc('0x22')]('Content-Range',_0x23664c+'-'+_0x4fdc7e+'/'+_0x215738)['json'](_0x1f8390);}return null;};}function patchUpdates(_0x27ebf6){return function(_0x1cae9c){try{jsonpatch[_0x76bc('0x23')](_0x1cae9c,_0x27ebf6,!![]);}catch(_0xb3205b){return BPromise['reject'](_0xb3205b);}return _0x1cae9c[_0x76bc('0x24')]();};}function saveUpdates(_0x4b1df3,_0x11bc23){return function(_0x58aef9){if(_0x58aef9){return _0x58aef9[_0x76bc('0x25')](_0x4b1df3)[_0x76bc('0x26')](function(_0x512e95){return _0x512e95;});}return null;};}function removeEntity(_0x29470c,_0x27f75e){return function(_0x23f7ed){if(_0x23f7ed){return _0x23f7ed['destroy']()['then'](function(){_0x29470c[_0x76bc('0x1b')](0xcc)[_0x76bc('0x1c')]();});}};}function handleEntityNotFound(_0x56f0c9,_0x397a76){return function(_0x1ef376){if(!_0x1ef376){_0x56f0c9['sendStatus'](0x194);}return _0x1ef376;};}function handleError(_0x10d2fc,_0x22a925){_0x22a925=_0x22a925||0x1f4;return function(_0x435676){logger[_0x76bc('0x27')](_0x435676['stack']);if(_0x435676[_0x76bc('0x28')]){delete _0x435676[_0x76bc('0x28')];}_0x10d2fc[_0x76bc('0x1b')](_0x22a925)['send'](_0x435676);};}exports[_0x76bc('0x29')]=function(_0x576e5d,_0x54f209){var _0x4145ea={},_0x3b76e7={},_0x266264={'count':0x0,'rows':[]};var _0x6d9043=_['map'](db[_0x76bc('0x2a')]['rawAttributes'],function(_0x315957){return{'name':_0x315957[_0x76bc('0x2b')],'type':_0x315957[_0x76bc('0x2c')]['key']};});_0x3b76e7[_0x76bc('0x2d')]=_[_0x76bc('0x2e')](_0x6d9043,_0x76bc('0x28'));_0x3b76e7[_0x76bc('0x2f')]=_[_0x76bc('0x30')](_0x576e5d[_0x76bc('0x2f')]);_0x3b76e7[_0x76bc('0x31')]=_[_0x76bc('0x32')](_0x3b76e7[_0x76bc('0x2d')],_0x3b76e7[_0x76bc('0x2f')]);_0x3b76e7[_0x76bc('0x31')]=_[_0x76bc('0x33')](_0x3b76e7[_0x76bc('0x31')],[_0x76bc('0x34'),'$or',_0x76bc('0x35'),_0x76bc('0x36'),_0x76bc('0x37'),'$lte',_0x76bc('0x38'),'$eq','$not',_0x76bc('0x39'),'$notBetween',_0x76bc('0x3a'),_0x76bc('0x3b'),_0x76bc('0x3c'),_0x76bc('0x3d'),'$iLike',_0x76bc('0x3e'),_0x76bc('0x3c'),'$overlap',_0x76bc('0x3f'),_0x76bc('0x40'),_0x76bc('0x41')]);_0x4145ea[_0x76bc('0x42')]=_[_0x76bc('0x32')](_0x3b76e7[_0x76bc('0x2d')],qs[_0x76bc('0x43')](_0x576e5d[_0x76bc('0x2f')]['fields']));_0x4145ea[_0x76bc('0x42')]=_0x4145ea[_0x76bc('0x42')][_0x76bc('0x44')]?_0x4145ea[_0x76bc('0x42')]:_0x3b76e7[_0x76bc('0x2d')];if(!_0x576e5d[_0x76bc('0x2f')][_0x76bc('0x45')](_0x76bc('0x46'))){_0x4145ea[_0x76bc('0x20')]=qs['limit'](_0x576e5d[_0x76bc('0x2f')][_0x76bc('0x20')]);_0x4145ea[_0x76bc('0x1e')]=qs['offset'](_0x576e5d[_0x76bc('0x2f')]['offset']);}_0x4145ea[_0x76bc('0x47')]=qs['sort'](_0x576e5d['query'][_0x76bc('0x48')]);_0x4145ea['where']=qs[_0x76bc('0x31')](_['pick'](_0x576e5d['query'],_0x3b76e7[_0x76bc('0x31')]),_0x6d9043);if(_0x576e5d[_0x76bc('0x2f')]['filter']){_0x4145ea[_0x76bc('0x49')]=_[_0x76bc('0x4a')](_0x4145ea[_0x76bc('0x49')],{'$or':_[_0x76bc('0x2e')](_0x6d9043,function(_0xcbee09){if(_0xcbee09['type']!==_0x76bc('0x4b')){var _0x355c5e={};_0x355c5e[_0xcbee09[_0x76bc('0x28')]]={'$like':'%'+_0x576e5d[_0x76bc('0x2f')]['filter']+'%'};return _0x355c5e;}})});}_0x4145ea=_[_0x76bc('0x4a')]({},_0x4145ea,_0x576e5d[_0x76bc('0x4c')]);var _0xe4b055={'where':_0x4145ea[_0x76bc('0x49')]};return db[_0x76bc('0x2a')][_0x76bc('0x21')](_0xe4b055)[_0x76bc('0x26')](function(_0x1b97b6){_0x266264[_0x76bc('0x21')]=_0x1b97b6;if(_0x576e5d['query'][_0x76bc('0x4d')]){_0x4145ea[_0x76bc('0x4e')]=[{'all':!![]}];}return db[_0x76bc('0x2a')][_0x76bc('0x4f')](_0x4145ea);})['then'](function(_0x1d1a53){_0x266264['rows']=_0x1d1a53;return _0x266264;})[_0x76bc('0x26')](respondWithFilteredResult(_0x54f209,_0x4145ea))['catch'](handleError(_0x54f209,null));};exports[_0x76bc('0x50')]=function(_0x22ee02,_0x3d59e4){var _0x147559={'raw':!![],'where':{'id':_0x22ee02[_0x76bc('0x51')]['id']}},_0x1ab4fe={};_0x1ab4fe[_0x76bc('0x2d')]=_[_0x76bc('0x30')](db[_0x76bc('0x2a')][_0x76bc('0x52')]);_0x1ab4fe[_0x76bc('0x2f')]=_[_0x76bc('0x30')](_0x22ee02[_0x76bc('0x2f')]);_0x1ab4fe[_0x76bc('0x31')]=_[_0x76bc('0x32')](_0x1ab4fe['model'],_0x1ab4fe[_0x76bc('0x2f')]);_0x147559[_0x76bc('0x42')]=_['intersection'](_0x1ab4fe[_0x76bc('0x2d')],qs['fields'](_0x22ee02[_0x76bc('0x2f')][_0x76bc('0x43')]));_0x147559[_0x76bc('0x42')]=_0x147559['attributes'][_0x76bc('0x44')]?_0x147559[_0x76bc('0x42')]:_0x1ab4fe[_0x76bc('0x2d')];if(_0x22ee02[_0x76bc('0x2f')]['includeAll']){_0x147559[_0x76bc('0x4e')]=[{'all':!![]}];}_0x147559=_['merge']({},_0x147559,_0x22ee02['options']);return db[_0x76bc('0x2a')][_0x76bc('0x53')](_0x147559)[_0x76bc('0x26')](handleEntityNotFound(_0x3d59e4,null))[_0x76bc('0x26')](respondWithResult(_0x3d59e4,null))[_0x76bc('0x54')](handleError(_0x3d59e4,null));};exports[_0x76bc('0x55')]=function(_0x2cd62e,_0x3fa7e9){return db['CmHopper'][_0x76bc('0x55')](_0x2cd62e[_0x76bc('0x56')],{})[_0x76bc('0x26')](respondWithResult(_0x3fa7e9,0xc9))['catch'](handleError(_0x3fa7e9,null));};exports[_0x76bc('0x25')]=function(_0x5aa731,_0x22e4f1){if(_0x5aa731[_0x76bc('0x56')]['id']){delete _0x5aa731['body']['id'];}return db['CmHopper'][_0x76bc('0x53')]({'where':{'id':_0x5aa731[_0x76bc('0x51')]['id']}})[_0x76bc('0x26')](handleEntityNotFound(_0x22e4f1,null))[_0x76bc('0x26')](saveUpdates(_0x5aa731[_0x76bc('0x56')],null))[_0x76bc('0x26')](respondWithResult(_0x22e4f1,null))[_0x76bc('0x54')](handleError(_0x22e4f1,null));};exports['describe']=function(_0x2bd4b2,_0x2ddfac){return db[_0x76bc('0x2a')]['describe']()[_0x76bc('0x26')](respondWithResult(_0x2ddfac,null))[_0x76bc('0x54')](handleError(_0x2ddfac,null));};exports['destroy']=function(_0xe95f53,_0x4a1f7d){var _0x51c2ce;return db[_0x76bc('0x2a')][_0x76bc('0x53')]({'where':{'id':_0xe95f53[_0x76bc('0x51')]['id']}})[_0x76bc('0x26')](handleEntityNotFound(_0x4a1f7d,null))[_0x76bc('0x26')](function(_0x1660c3){if(_0x1660c3){return _0x1660c3['destroy']()[_0x76bc('0x26')](function(_0x239e7b){return _0x239e7b;});}})[_0x76bc('0x26')](function(_0x4033e0){_0x51c2ce=_0x4033e0;if(_0x4033e0){if(_0x4033e0[_0x76bc('0x57')]||_0x4033e0[_0x76bc('0x58')]){return db[_0x4033e0[_0x76bc('0x57')]?'VoiceQueue':_0x76bc('0x59')][_0x76bc('0x53')]({'where':{'id':_0x4033e0[_0x76bc('0x57')]?_0x4033e0[_0x76bc('0x57')]:_0x4033e0['CampaignId']},'attributes':['id',_0x76bc('0x28')],'raw':!![]});}}})[_0x76bc('0x26')](function(_0x2fb0ad){var _0x4f2385={};if(_0x2fb0ad){_[_0x76bc('0x4a')](_0x4f2385,_[_0x76bc('0x5a')](_0x51c2ce[_0x76bc('0x5b')],[_0x76bc('0x5c'),'updatedAt','id']));_0x4f2385[_0x76bc('0x5d')]=0x15;_0x4f2385[_0x76bc('0x5e')]=_0x76bc('0x5f');_0x4f2385['campaign']=_0x2fb0ad[_0x76bc('0x28')];_0x4f2385['membername']=_0xe95f53['user'][_0x76bc('0x28')];_0x4f2385[_0x76bc('0x60')]=_0xe95f53[_0x76bc('0x61')]['id'];_0x4f2385[_0x76bc('0x5f')]=!![];_0x4f2385[_0x76bc('0x62')]=moment()['format'](_0x76bc('0x63'));_0x4f2385[_0x76bc('0x64')]=_0x51c2ce[_0x76bc('0x65')];_0x4f2385[_0x76bc('0x66')]=_0x51c2ce[_0x76bc('0x57')]?_0x76bc('0x67'):'ivr';return db[_0x76bc('0x68')][_0x76bc('0x53')]({'where':{'id':_0x4f2385[_0x76bc('0x69')]},'attributes':[_0x76bc('0x6a'),'lastName']})[_0x76bc('0x26')](function(_0x1c8ecb){if(!_[_0x76bc('0x6b')](_0x4a1f7d)&&!_[_0x76bc('0x6b')](_0x1c8ecb[_0x76bc('0x6a')])){_0x4f2385[_0x76bc('0x6c')]=_0x1c8ecb[_0x76bc('0x6a')];if(!_[_0x76bc('0x6b')](_0x1c8ecb[_0x76bc('0x6d')])){_0x4f2385['calleridname']+='\x20'+_0x1c8ecb['lastName'];}}})[_0x76bc('0x6e')](function(){return db[_0x76bc('0x6f')][_0x76bc('0x55')](_0x4f2385);});}})['then'](function(){return _0x4a1f7d[_0x76bc('0x1b')](0xcc)[_0x76bc('0x1c')]();})[_0x76bc('0x54')](handleError(_0x4a1f7d,null));};exports[_0x76bc('0x70')]=function(_0x3ac69b,_0x4614c1,_0x277649){var _0xd64fee=[];return db[_0x76bc('0x68')]['describe']()[_0x76bc('0x26')](function(_0x3da4eb){_0xd64fee=_[_0x76bc('0x30')](_0x3da4eb);return _0x3ac69b['user'][_0x76bc('0x71')]({'where':{'type':_0x76bc('0x72'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x76bc('0x73')],'raw':!![]});})['then'](function(_0xc10dbb){if(_0xc10dbb&&_0xc10dbb[_0x76bc('0x44')]){return db[_0x76bc('0x74')][_0x76bc('0x75')](function(_0x286072){var _0x2e2fad={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x76bc('0x76')](_0x76bc('0x63'))},'VoiceQueueId':{'$in':_[_0x76bc('0x2e')](_0xc10dbb,'id')},'$or':[{'UserId':null},{'UserId':_0x3ac69b[_0x76bc('0x61')]['id']}]};var _0x3d11a9=[];if(_0x3ac69b[_0x76bc('0x56')][_0x76bc('0x77')]&&_0x3ac69b[_0x76bc('0x56')][_0x76bc('0x77')]===_0x76bc('0x78')){if(!_['isEmpty'](_0x3ac69b[_0x76bc('0x56')]['hopperIds'])){_0x2e2fad['id']={'$in':_0x3ac69b['body'][_0x76bc('0x79')]};}_0x3d11a9=[['priority','ASC'],[_0x76bc('0x7a'),_0xc10dbb[0x0][_0x76bc('0x73')]===_0x76bc('0x7b')?_0x76bc('0x7c'):_0x76bc('0x7b')],db[_0x76bc('0x74')][_0x76bc('0x7d')](_0x76bc('0x7e')),['id',_0x76bc('0x7c')]];}else{if(!_['isEmpty'](_0x3ac69b[_0x76bc('0x56')][_0x76bc('0x79')])){_0x2e2fad['id']={'$notIn':_0x3ac69b[_0x76bc('0x56')][_0x76bc('0x79')]};}_0x3d11a9=[['priority','DESC'],['scheduledAt',_0xc10dbb[0x0][_0x76bc('0x73')]],db[_0x76bc('0x74')][_0x76bc('0x7d')](_0x76bc('0x7f')),['id',_0x76bc('0x7b')]];}return db[_0x76bc('0x2a')]['findOne']({'attributes':['id',_0x76bc('0x80')],'where':_0x2e2fad,'order':_0x3d11a9,'transaction':_0x286072,'lock':_0x286072[_0x76bc('0x81')]['UPDATE'],'include':[{'model':db[_0x76bc('0x68')],'as':_0x76bc('0x82'),'attributes':_0xd64fee,'include':[{'model':db[_0x76bc('0x83')],'as':'Company','attributes':['id','name']}]},{'model':db['CmList'],'as':_0x76bc('0x84'),'attributes':['id',_0x76bc('0x28')]},{'model':db[_0x76bc('0x85')],'as':_0x76bc('0x86'),'attributes':['id',_0x76bc('0x28'),_0x76bc('0x87')]}]})['then'](function(_0x24fda9){if(_0x24fda9){return _0x24fda9['update']({'UserId':_0x3ac69b[_0x76bc('0x61')]['id']},{'transaction':_0x286072});}});});}})['then'](handleEntityNotFound(_0x4614c1,null))[_0x76bc('0x26')](respondWithResult(_0x4614c1,null))['catch'](handleError(_0x4614c1,null));};exports['getOpenContacts']=function(_0x47deb2,_0x57ef4e,_0x2b87d0){return _0x47deb2[_0x76bc('0x61')][_0x76bc('0x71')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x76bc('0x88')},'attributes':['id'],'raw':!![]})[_0x76bc('0x26')](function(_0x3a7cc4){if(_0x3a7cc4&&_0x3a7cc4[_0x76bc('0x44')]){return db[_0x76bc('0x2a')][_0x76bc('0x21')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x76bc('0x76')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x76bc('0x2e')](_0x3a7cc4,'id')},'$or':[{'UserId':null},{'UserId':_0x47deb2[_0x76bc('0x61')]['id']}]}});}return 0x0;})[_0x76bc('0x26')](function(_0x77f02d){if(!_['isNil'](_0x77f02d)&&_['isNumber'](_0x77f02d)){return _0x57ef4e[_0x76bc('0x1b')](0xc8)[_0x76bc('0x1d')]({'contacts':_0x77f02d});}else{logger['error']('CmHopper,\x20%s,\x20%s,\x20%s',_0x76bc('0x89'),0x194,_0x76bc('0x8a'));_0x57ef4e[_0x76bc('0x1a')](0x194);}})[_0x76bc('0x54')](handleError(_0x57ef4e,null));};
\ No newline at end of file
index af3d829..4d6146c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['CmHopper','scheduledat','phone','priority','lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x53e209,_0x1d2dad){var _0x58b7c7=function(_0x2befba){while(--_0x2befba){_0x53e209['push'](_0x53e209['shift']());}};_0x58b7c7(++_0x1d2dad);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xee2f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xee2f('0x1'));var moment=require('moment');var BPromise=require(_0xee2f('0x2'));var rp=require(_0xee2f('0x3'));var fs=require('fs');var path=require(_0xee2f('0x4'));var rimraf=require(_0xee2f('0x5'));var config=require(_0xee2f('0x6'));var attributes=require('./cmHopper.attributes');module[_0xee2f('0x7')]=function(_0x2b7e7c,_0x49926b){return _0x2b7e7c[_0xee2f('0x8')](_0xee2f('0x9'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0xee2f('0xa'),'fields':['scheduledat']},{'name':_0xee2f('0xb'),'fields':[_0xee2f('0xb')]},{'name':'priority','fields':[_0xee2f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe3da=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','scheduledat','priority','lodash','util','../../config/logger'];(function(_0x24e9da,_0x111d80){var _0x1a7aea=function(_0x1657ba){while(--_0x1657ba){_0x24e9da['push'](_0x24e9da['shift']());}};_0x1a7aea(++_0x111d80);}(_0xe3da,0x1cd));var _0xae3d=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xe3da[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var logger=require(_0xae3d('0x2'))(_0xae3d('0x3'));var moment=require(_0xae3d('0x4'));var BPromise=require(_0xae3d('0x5'));var rp=require(_0xae3d('0x6'));var fs=require('fs');var path=require(_0xae3d('0x7'));var rimraf=require(_0xae3d('0x8'));var config=require(_0xae3d('0x9'));var attributes=require(_0xae3d('0xa'));module[_0xae3d('0xb')]=function(_0xa9a1a,_0xa54808){return _0xa9a1a[_0xae3d('0xc')](_0xae3d('0xd'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0xae3d('0xe'),'fields':[_0xae3d('0xe')]},{'name':'phone','fields':['phone']},{'name':_0xae3d('0xf'),'fields':[_0xae3d('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 46068ca..8fa9d56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95b0=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetCmHopper','CmHopper','findAll','options','where','attributes','limit','include','map','model','ShowCmHopper','find','raw','create','CreateCmHopper','UpdateCmHopper','update','body','DestroyCmHopper','destroy','GetContactDialer','describe','sequelize','transaction','order','LOCK','UPDATE','CmContact','Contact','keys','User','name','length','UserId','push','includes','CmHopperFinal','CountReScheduled','literal','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','GetCmHopperPreview','moment','bluebird','randomstring'];(function(_0xbd8d45,_0x17500a){var _0x5a50a8=function(_0x1bfcea){while(--_0x1bfcea){_0xbd8d45['push'](_0xbd8d45['shift']());}};_0x5a50a8(++_0x17500a);}(_0x95b0,0xc6));var _0x095b=function(_0x536f3c,_0x5e04d5){_0x536f3c=_0x536f3c-0x0;var _0x361698=_0x95b0[_0x536f3c];return _0x361698;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x095b('0x0'));var BPromise=require(_0x095b('0x1'));var rs=require(_0x095b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x095b('0x3'))['db'];var utils=require(_0x095b('0x4'));var logger=require(_0x095b('0x5'))(_0x095b('0x6'));var config=require('../../config/environment');var jayson=require(_0x095b('0x7'));var client=jayson[_0x095b('0x8')][_0x095b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5d94af,_0x447f8d,_0x339ca0){return new BPromise(function(_0xc91452,_0x136bda){return client['request'](_0x5d94af,_0x339ca0)[_0x095b('0xa')](function(_0x1cad5d){logger[_0x095b('0xb')](_0x095b('0xc'),_0x447f8d,_0x095b('0xd'));logger[_0x095b('0xe')](_0x095b('0xf'),_0x447f8d,_0x095b('0xd'),JSON[_0x095b('0x10')](_0x1cad5d));if(_0x1cad5d[_0x095b('0x11')]){if(_0x1cad5d[_0x095b('0x11')]['code']===0x1f4){logger[_0x095b('0x11')](_0x095b('0xc'),_0x447f8d,_0x1cad5d[_0x095b('0x11')][_0x095b('0x12')]);return _0x136bda(_0x1cad5d['error']['message']);}logger[_0x095b('0x11')](_0x095b('0xc'),_0x447f8d,_0x1cad5d[_0x095b('0x11')][_0x095b('0x12')]);return _0xc91452(_0x1cad5d[_0x095b('0x11')][_0x095b('0x12')]);}else{logger['info'](_0x095b('0xc'),_0x447f8d,'request\x20sent');_0xc91452(_0x1cad5d[_0x095b('0x13')][_0x095b('0x12')]);}})[_0x095b('0x14')](function(_0x15681a){logger[_0x095b('0x11')](_0x095b('0xc'),_0x447f8d,_0x15681a);_0x136bda(_0x15681a);});});}exports[_0x095b('0x15')]=function(_0x11aa3b){var _0x5631e3=this;return new Promise(function(_0x352ed2,_0x567a72){return db[_0x095b('0x16')][_0x095b('0x17')]({'raw':_0x11aa3b[_0x095b('0x18')]?_0x11aa3b['options']['raw']===undefined?!![]:![]:!![],'where':_0x11aa3b['options']?_0x11aa3b[_0x095b('0x18')][_0x095b('0x19')]||null:null,'attributes':_0x11aa3b[_0x095b('0x18')]?_0x11aa3b['options'][_0x095b('0x1a')]||null:null,'limit':_0x11aa3b['options']?_0x11aa3b[_0x095b('0x18')][_0x095b('0x1b')]||null:null,'include':_0x11aa3b['options']?_0x11aa3b[_0x095b('0x18')][_0x095b('0x1c')]?_[_0x095b('0x1d')](_0x11aa3b[_0x095b('0x18')]['include'],function(_0x3c2ccd){return{'model':db[_0x3c2ccd[_0x095b('0x1e')]],'as':_0x3c2ccd['as'],'attributes':_0x3c2ccd[_0x095b('0x1a')],'include':_0x3c2ccd['include']?_[_0x095b('0x1d')](_0x3c2ccd[_0x095b('0x1c')],function(_0x4a8219){return{'model':db[_0x4a8219[_0x095b('0x1e')]],'as':_0x4a8219['as'],'attributes':_0x4a8219['attributes'],'include':_0x4a8219[_0x095b('0x1c')]?_['map'](_0x4a8219[_0x095b('0x1c')],function(_0x92074f){return{'model':db[_0x92074f[_0x095b('0x1e')]],'as':_0x92074f['as'],'attributes':_0x92074f['attributes']};}):[]};}):[]};}):[]:[]})[_0x095b('0xa')](function(_0x125fe2){logger['info']('GetCmHopper',_0x11aa3b);logger['debug']('GetCmHopper',_0x11aa3b,JSON[_0x095b('0x10')](_0x125fe2));_0x352ed2(_0x125fe2);})[_0x095b('0x14')](function(_0x33e780){logger[_0x095b('0x11')]('GetCmHopper',_0x33e780[_0x095b('0x12')],_0x11aa3b);_0x567a72(_0x5631e3[_0x095b('0x11')](0x1f4,_0x33e780[_0x095b('0x12')]));});});};exports[_0x095b('0x1f')]=function(_0x2a9627){var _0x3f2bc0=this;return new Promise(function(_0x249e41,_0x55ae6d){return db[_0x095b('0x16')][_0x095b('0x20')]({'raw':_0x2a9627['options']?_0x2a9627['options'][_0x095b('0x21')]===undefined?!![]:![]:!![],'where':_0x2a9627['options']?_0x2a9627[_0x095b('0x18')][_0x095b('0x19')]||null:null,'attributes':_0x2a9627['options']?_0x2a9627['options'][_0x095b('0x1a')]||null:null,'include':_0x2a9627['options']?_0x2a9627['options'][_0x095b('0x1c')]?_['map'](_0x2a9627[_0x095b('0x18')][_0x095b('0x1c')],function(_0x1b4f99){return{'model':db[_0x1b4f99[_0x095b('0x1e')]],'as':_0x1b4f99['as'],'attributes':_0x1b4f99[_0x095b('0x1a')],'include':_0x1b4f99[_0x095b('0x1c')]?_[_0x095b('0x1d')](_0x1b4f99[_0x095b('0x1c')],function(_0x2578ab){return{'model':db[_0x2578ab['model']],'as':_0x2578ab['as'],'attributes':_0x2578ab[_0x095b('0x1a')],'include':_0x2578ab[_0x095b('0x1c')]?_[_0x095b('0x1d')](_0x2578ab[_0x095b('0x1c')],function(_0x107472){return{'model':db[_0x107472[_0x095b('0x1e')]],'as':_0x107472['as'],'attributes':_0x107472[_0x095b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x095b('0xa')](function(_0x141a1c){logger[_0x095b('0xb')]('ShowCmHopper',_0x2a9627);logger['debug']('ShowCmHopper',_0x2a9627,JSON[_0x095b('0x10')](_0x141a1c));_0x249e41(_0x141a1c);})[_0x095b('0x14')](function(_0x3a1355){logger[_0x095b('0x11')](_0x095b('0x1f'),_0x3a1355[_0x095b('0x12')],_0x2a9627);_0x55ae6d(_0x3f2bc0[_0x095b('0x11')](0x1f4,_0x3a1355[_0x095b('0x12')]));});});};exports['CreateCmHopper']=function(_0xa72041){var _0x14e366=this;return new Promise(function(_0x50e89e,_0x4929a0){return db[_0x095b('0x16')][_0x095b('0x22')](_0xa72041['body'],{'raw':_0xa72041['options']?_0xa72041['options'][_0x095b('0x21')]===undefined?!![]:![]:!![]})[_0x095b('0xa')](function(_0x2af4e5){logger[_0x095b('0xb')](_0x095b('0x23'),_0xa72041);logger[_0x095b('0xe')](_0x095b('0x23'),_0xa72041,JSON[_0x095b('0x10')](_0x2af4e5));_0x50e89e(_0x2af4e5);})['catch'](function(_0x85d03f){logger[_0x095b('0x11')]('CreateCmHopper',_0x85d03f[_0x095b('0x12')],_0xa72041);_0x4929a0(_0x14e366['error'](0x1f4,_0x85d03f[_0x095b('0x12')]));});});};exports[_0x095b('0x24')]=function(_0x6648e4){var _0x19139b=this;return new Promise(function(_0x265092,_0x1db7ca){return db[_0x095b('0x16')][_0x095b('0x25')](_0x6648e4[_0x095b('0x26')],{'raw':_0x6648e4[_0x095b('0x18')]?_0x6648e4[_0x095b('0x18')][_0x095b('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6648e4[_0x095b('0x18')]?_0x6648e4[_0x095b('0x18')]['where']||null:null,'attributes':_0x6648e4['options']?_0x6648e4[_0x095b('0x18')][_0x095b('0x1a')]||null:null,'limit':_0x6648e4['options']?_0x6648e4[_0x095b('0x18')][_0x095b('0x1b')]||null:null})[_0x095b('0xa')](function(_0x55b362){logger['info'](_0x095b('0x24'),_0x6648e4);logger['debug'](_0x095b('0x24'),_0x6648e4,JSON['stringify'](_0x55b362));_0x265092(_0x55b362);})[_0x095b('0x14')](function(_0x257df4){logger[_0x095b('0x11')](_0x095b('0x24'),_0x257df4[_0x095b('0x12')],_0x6648e4);_0x1db7ca(_0x19139b[_0x095b('0x11')](0x1f4,_0x257df4['message']));});});};exports[_0x095b('0x27')]=function(_0x183b82){var _0x292ff6=this;return new Promise(function(_0x1d799a,_0x31ee50){return db['CmHopper'][_0x095b('0x28')]({'where':_0x183b82[_0x095b('0x18')]?_0x183b82[_0x095b('0x18')][_0x095b('0x19')]||null:null})['then'](function(_0x36ab93){logger['info'](_0x095b('0x27'),_0x183b82);logger[_0x095b('0xe')](_0x095b('0x27'),_0x183b82,JSON['stringify'](_0x36ab93));_0x1d799a(_0x36ab93);})['catch'](function(_0x4e9f23){logger[_0x095b('0x11')](_0x095b('0x27'),_0x4e9f23['message'],_0x183b82);_0x31ee50(_0x292ff6[_0x095b('0x11')](0x1f4,_0x4e9f23[_0x095b('0x12')]));});});};exports[_0x095b('0x29')]=function(_0x4a1612){var _0x58f471=this;return new Promise(function(_0x7cba7b,_0x19580a){return db['CmContact'][_0x095b('0x2a')]()['then'](function(_0x408909){return db[_0x095b('0x2b')][_0x095b('0x2c')](function(_0x5dd9e8){return db[_0x095b('0x16')]['findAll']({'where':_0x4a1612['options']?_0x4a1612['options']['where']||null:null,'attributes':_0x4a1612[_0x095b('0x18')]?_0x4a1612['options']['attributes']||null:null,'limit':_0x4a1612['options']?_0x4a1612[_0x095b('0x18')]['limit']||null:null,'order':_0x4a1612['options']?_0x4a1612[_0x095b('0x18')][_0x095b('0x2d')]||null:null,'transaction':_0x5dd9e8,'lock':_0x5dd9e8[_0x095b('0x2e')][_0x095b('0x2f')],'include':[{'model':db[_0x095b('0x30')],'as':_0x095b('0x31'),'attributes':_[_0x095b('0x32')](_0x408909)},{'model':db[_0x095b('0x33')],'as':'Agent','attributes':['id',_0x095b('0x34'),'voicePause']}]})[_0x095b('0xa')](function(_0x1c5f0f){var _0x250619=[];var _0x3abd2a=[];for(var _0xb0bb99=0x0;_0xb0bb99<_0x1c5f0f[_0x095b('0x35')];_0xb0bb99+=0x1){var _0x461330=_0x1c5f0f[_0xb0bb99][_0x095b('0x36')];if(_0x461330===null){_0x250619[_0x095b('0x37')](_0x1c5f0f[_0xb0bb99][_0x095b('0x25')](_0x4a1612[_0x095b('0x26')],{'transaction':_0x5dd9e8}));}else if(!_0x3abd2a[_0x095b('0x38')](_0x461330)){_0x3abd2a[_0x095b('0x37')](_0x461330);_0x250619[_0x095b('0x37')](_0x1c5f0f[_0xb0bb99][_0x095b('0x25')](_0x4a1612[_0x095b('0x26')],{'transaction':_0x5dd9e8}));}}return BPromise['all'](_0x250619);});})['then'](function(_0x2352b8){logger[_0x095b('0xb')](_0x095b('0x29'),_0x4a1612);logger['debug'](_0x095b('0x29'),_0x4a1612,JSON['stringify'](_0x2352b8));_0x7cba7b(_0x2352b8);})[_0x095b('0x14')](function(_0x13afea){logger[_0x095b('0x11')](_0x095b('0x29'),_0x13afea[_0x095b('0x12')],_0x4a1612);_0x19580a(_0x58f471[_0x095b('0x11')](0x1f4,_0x13afea['message']));});});});};exports['MoveContactManagedDialer']=function(_0x2b2f34){var _0x140141=this;return new Promise(function(_0x445431,_0x58f73f){return db[_0x095b('0x2b')][_0x095b('0x2c')](function(_0x122196){return db[_0x095b('0x39')][_0x095b('0x22')](_0x2b2f34['body'],{'raw':_0x2b2f34[_0x095b('0x18')]?_0x2b2f34[_0x095b('0x18')]['raw']===undefined?!![]:![]:!![],'transaction':_0x122196})[_0x095b('0xa')](function(){return db[_0x095b('0x16')]['destroy']({'where':_0x2b2f34[_0x095b('0x18')]?_0x2b2f34[_0x095b('0x18')]['where']||null:null,'transaction':_0x122196});});})[_0x095b('0xa')](function(_0xb456e9){logger[_0x095b('0xb')]('MoveContactManagedDialer',_0x2b2f34);logger['debug']('MoveContactManagedDialer',_0x2b2f34,JSON['stringify'](_0xb456e9));_0x445431(_0xb456e9);})['catch'](function(_0x530dcf){logger[_0x095b('0x11')]('MoveContactManagedDialer',_0x530dcf[_0x095b('0x12')],_0x2b2f34);_0x58f73f(_0x140141[_0x095b('0x11')](0x1f4,_0x530dcf[_0x095b('0x12')]));});});};exports[_0x095b('0x3a')]=function(_0x4298d8){var _0x34f510=this;return new Promise(function(_0x59cd76,_0x339401){return db['CmHopper']['findAll']({'raw':_0x4298d8[_0x095b('0x18')]?_0x4298d8[_0x095b('0x18')][_0x095b('0x21')]===undefined?!![]:![]:!![],'where':_0x4298d8[_0x095b('0x18')]?_0x4298d8[_0x095b('0x18')]['where']||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x095b('0x2b')]['fn']('IF',db[_0x095b('0x2b')][_0x095b('0x3b')]('`scheduledat`\x20>=\x20'+util[_0x095b('0x3c')](_0x095b('0x3d'),moment()[_0x095b('0x3c')](_0x095b('0x3e')))+_0x095b('0x3f')))),_0x095b('0x40')]]})[_0x095b('0xa')](function(_0x29dcfa){logger[_0x095b('0xb')]('CountReScheduled',_0x4298d8);logger['debug']('CountReScheduled',_0x4298d8,JSON[_0x095b('0x10')](_0x29dcfa));_0x59cd76(_0x29dcfa);})[_0x095b('0x14')](function(_0x529198){logger[_0x095b('0x11')](_0x095b('0x3a'),_0x529198[_0x095b('0x12')],_0x4298d8);_0x339401(_0x34f510['error'](0x1f4,_0x529198[_0x095b('0x12')]));});});};exports['GetContactRecallMe']=function(_0x596b64){var _0x452a04=this;return new Promise(function(_0x4624ad,_0x32f09a){return db[_0x095b('0x30')][_0x095b('0x2a')]()['then'](function(_0x594694){return db[_0x095b('0x2b')][_0x095b('0x2c')](function(_0x4f4ad7){return db[_0x095b('0x16')]['findAll']({'where':_0x596b64[_0x095b('0x18')]?_0x596b64['options'][_0x095b('0x19')]||null:null,'attributes':_0x596b64['options']?_0x596b64['options'][_0x095b('0x1a')]||null:null,'limit':0x1,'order':_0x596b64[_0x095b('0x18')]?_0x596b64[_0x095b('0x18')][_0x095b('0x2d')]||null:null,'group':db[_0x095b('0x16')][_0x095b('0x36')],'transaction':_0x4f4ad7,'lock':_0x4f4ad7[_0x095b('0x2e')]['UPDATE'],'include':_0x596b64[_0x095b('0x18')]?_0x596b64[_0x095b('0x18')][_0x095b('0x1c')]?_['map'](_0x596b64['options'][_0x095b('0x1c')],function(_0x3fd397){return{'model':db[_0x3fd397[_0x095b('0x1e')]],'as':_0x3fd397['as'],'attributes':_0x3fd397[_0x095b('0x1a')],'include':_0x3fd397[_0x095b('0x1c')]?_['map'](_0x3fd397[_0x095b('0x1c')],function(_0x23894c){return{'model':db[_0x23894c[_0x095b('0x1e')]],'as':_0x23894c['as'],'attributes':_0x23894c[_0x095b('0x1a')],'include':_0x23894c[_0x095b('0x1c')]?_[_0x095b('0x1d')](_0x23894c['include'],function(_0x38a61f){return{'model':db[_0x38a61f['model']],'as':_0x38a61f['as'],'attributes':_0x38a61f[_0x095b('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x340eed){var _0x4e4cfa=[];for(var _0x5d0d6e=0x0;_0x5d0d6e<_0x340eed[_0x095b('0x35')];_0x5d0d6e+=0x1){_0x4e4cfa[_0x095b('0x37')](_0x340eed[_0x5d0d6e]['update'](_0x596b64[_0x095b('0x26')],{'transaction':_0x4f4ad7}));}return BPromise['all'](_0x4e4cfa);});})[_0x095b('0xa')](function(_0x421a9c){logger[_0x095b('0xb')](_0x095b('0x41'),_0x596b64);logger[_0x095b('0xe')](_0x095b('0x41'),_0x596b64,JSON['stringify'](_0x421a9c));_0x4624ad(_0x421a9c);})[_0x095b('0x14')](function(_0x3b89b5){logger['error']('GetContactRecallMe',_0x3b89b5[_0x095b('0x12')],_0x596b64);_0x32f09a(_0x452a04[_0x095b('0x11')](0x1f4,_0x3b89b5[_0x095b('0x12')]));});});});};exports[_0x095b('0x42')]=function(_0x451a92){var _0x574f31=this;return new Promise(function(_0x3815f2,_0x496495){db[_0x095b('0x30')][_0x095b('0x2a')]()['then'](function(_0x552a7d){return db[_0x095b('0x16')][_0x095b('0x17')]({'raw':_0x451a92[_0x095b('0x18')]?_0x451a92['options'][_0x095b('0x21')]===undefined?!![]:![]:!![],'where':_0x451a92['options']?_0x451a92['options'][_0x095b('0x19')]||null:null,'attributes':_0x451a92[_0x095b('0x18')]?_0x451a92[_0x095b('0x18')][_0x095b('0x1a')]||null:null,'limit':_0x451a92[_0x095b('0x18')]?_0x451a92[_0x095b('0x18')]['limit']||null:null,'include':_0x451a92[_0x095b('0x18')]?_0x451a92[_0x095b('0x18')]['include']?_[_0x095b('0x1d')](_0x451a92[_0x095b('0x18')][_0x095b('0x1c')],function(_0x5e770d){return{'model':db[_0x5e770d['model']],'as':_0x5e770d['as'],'attributes':_0x5e770d['as']===_0x095b('0x31')?_[_0x095b('0x32')](_0x552a7d):_0x5e770d[_0x095b('0x1a')],'include':_0x5e770d[_0x095b('0x1c')]?_['map'](_0x5e770d[_0x095b('0x1c')],function(_0xbce71a){return{'model':db[_0xbce71a['model']],'as':_0xbce71a['as'],'attributes':_0xbce71a[_0x095b('0x1a')],'include':_0xbce71a[_0x095b('0x1c')]?_[_0x095b('0x1d')](_0xbce71a['include'],function(_0x523c8c){return{'model':db[_0x523c8c[_0x095b('0x1e')]],'as':_0x523c8c['as'],'attributes':_0x523c8c['attributes']};}):[]};}):[]};}):[]:[]})[_0x095b('0xa')](function(_0x5e6e44){logger[_0x095b('0xb')]('GetCmHopper',_0x451a92);logger['debug'](_0x095b('0x15'),_0x451a92,JSON[_0x095b('0x10')](_0x5e6e44));_0x3815f2(_0x5e6e44);})[_0x095b('0x14')](function(_0x5a3a77){logger[_0x095b('0x11')](_0x095b('0x15'),_0x5a3a77[_0x095b('0x12')],_0x451a92);_0x496495(_0x574f31[_0x095b('0x11')](0x1f4,_0x5a3a77['message']));});});});};
\ No newline at end of file
+var _0xd415=['error','code','CmHopper,\x20%s,\x20%s','message','result','GetCmHopper','CmHopper','findAll','options','where','attributes','map','include','model','then','catch','ShowCmHopper','find','raw','debug','CreateCmHopper','body','UpdateCmHopper','update','DestroyCmHopper','destroy','limit','order','LOCK','UPDATE','CmContact','Agent','voicePause','length','UserId','push','includes','all','GetContactDialer','MoveContactManagedDialer','sequelize','transaction','CmHopperFinal','format','\x22%s\x22','\x20,\x201,\x20null','CountReScheduled','GetContactRecallMe','GetCmHopperPreview','describe','Contact','keys','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','info','request\x20sent','stringify'];(function(_0x155f04,_0x39a514){var _0x3da1ce=function(_0x11dcbb){while(--_0x11dcbb){_0x155f04['push'](_0x155f04['shift']());}};_0x3da1ce(++_0x39a514);}(_0xd415,0x76));var _0x5d41=function(_0x1d7705,_0x14cb78){_0x1d7705=_0x1d7705-0x0;var _0x3d675e=_0xd415[_0x1d7705];return _0x3d675e;};'use strict';var _=require(_0x5d41('0x0'));var util=require(_0x5d41('0x1'));var moment=require(_0x5d41('0x2'));var BPromise=require('bluebird');var rs=require(_0x5d41('0x3'));var fs=require('fs');var Redis=require(_0x5d41('0x4'));var db=require(_0x5d41('0x5'))['db'];var utils=require(_0x5d41('0x6'));var logger=require(_0x5d41('0x7'))('rpc');var config=require(_0x5d41('0x8'));var jayson=require(_0x5d41('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1944ab,_0x3bc8c8,_0x4b6141){return new BPromise(function(_0x4251ca,_0xf0b59b){return client[_0x5d41('0xa')](_0x1944ab,_0x4b6141)['then'](function(_0x200660){logger[_0x5d41('0xb')]('CmHopper,\x20%s,\x20%s',_0x3bc8c8,_0x5d41('0xc'));logger['debug']('CmHopper,\x20%s,\x20%s,\x20%s',_0x3bc8c8,_0x5d41('0xc'),JSON[_0x5d41('0xd')](_0x200660));if(_0x200660[_0x5d41('0xe')]){if(_0x200660[_0x5d41('0xe')][_0x5d41('0xf')]===0x1f4){logger[_0x5d41('0xe')](_0x5d41('0x10'),_0x3bc8c8,_0x200660[_0x5d41('0xe')][_0x5d41('0x11')]);return _0xf0b59b(_0x200660['error'][_0x5d41('0x11')]);}logger[_0x5d41('0xe')](_0x5d41('0x10'),_0x3bc8c8,_0x200660[_0x5d41('0xe')]['message']);return _0x4251ca(_0x200660[_0x5d41('0xe')][_0x5d41('0x11')]);}else{logger[_0x5d41('0xb')](_0x5d41('0x10'),_0x3bc8c8,_0x5d41('0xc'));_0x4251ca(_0x200660[_0x5d41('0x12')][_0x5d41('0x11')]);}})['catch'](function(_0xf6144a){logger[_0x5d41('0xe')](_0x5d41('0x10'),_0x3bc8c8,_0xf6144a);_0xf0b59b(_0xf6144a);});});}exports[_0x5d41('0x13')]=function(_0x519e4e){var _0x16186d=this;return new Promise(function(_0x275e36,_0x5eac4b){return db[_0x5d41('0x14')][_0x5d41('0x15')]({'raw':_0x519e4e[_0x5d41('0x16')]?_0x519e4e['options']['raw']===undefined?!![]:![]:!![],'where':_0x519e4e[_0x5d41('0x16')]?_0x519e4e[_0x5d41('0x16')][_0x5d41('0x17')]||null:null,'attributes':_0x519e4e[_0x5d41('0x16')]?_0x519e4e[_0x5d41('0x16')][_0x5d41('0x18')]||null:null,'limit':_0x519e4e['options']?_0x519e4e[_0x5d41('0x16')]['limit']||null:null,'include':_0x519e4e[_0x5d41('0x16')]?_0x519e4e['options']['include']?_[_0x5d41('0x19')](_0x519e4e['options'][_0x5d41('0x1a')],function(_0x2a475a){return{'model':db[_0x2a475a[_0x5d41('0x1b')]],'as':_0x2a475a['as'],'attributes':_0x2a475a[_0x5d41('0x18')],'include':_0x2a475a[_0x5d41('0x1a')]?_[_0x5d41('0x19')](_0x2a475a[_0x5d41('0x1a')],function(_0x52fe6b){return{'model':db[_0x52fe6b[_0x5d41('0x1b')]],'as':_0x52fe6b['as'],'attributes':_0x52fe6b['attributes'],'include':_0x52fe6b[_0x5d41('0x1a')]?_[_0x5d41('0x19')](_0x52fe6b[_0x5d41('0x1a')],function(_0xba1f72){return{'model':db[_0xba1f72[_0x5d41('0x1b')]],'as':_0xba1f72['as'],'attributes':_0xba1f72[_0x5d41('0x18')]};}):[]};}):[]};}):[]:[]})[_0x5d41('0x1c')](function(_0x3b138c){logger[_0x5d41('0xb')]('GetCmHopper',_0x519e4e);logger['debug'](_0x5d41('0x13'),_0x519e4e,JSON['stringify'](_0x3b138c));_0x275e36(_0x3b138c);})[_0x5d41('0x1d')](function(_0x58542e){logger[_0x5d41('0xe')](_0x5d41('0x13'),_0x58542e[_0x5d41('0x11')],_0x519e4e);_0x5eac4b(_0x16186d[_0x5d41('0xe')](0x1f4,_0x58542e[_0x5d41('0x11')]));});});};exports[_0x5d41('0x1e')]=function(_0x541d10){var _0x19ac23=this;return new Promise(function(_0x263542,_0x58e81a){return db['CmHopper'][_0x5d41('0x1f')]({'raw':_0x541d10['options']?_0x541d10[_0x5d41('0x16')][_0x5d41('0x20')]===undefined?!![]:![]:!![],'where':_0x541d10['options']?_0x541d10[_0x5d41('0x16')][_0x5d41('0x17')]||null:null,'attributes':_0x541d10[_0x5d41('0x16')]?_0x541d10['options'][_0x5d41('0x18')]||null:null,'include':_0x541d10['options']?_0x541d10[_0x5d41('0x16')]['include']?_[_0x5d41('0x19')](_0x541d10[_0x5d41('0x16')][_0x5d41('0x1a')],function(_0xb64de8){return{'model':db[_0xb64de8[_0x5d41('0x1b')]],'as':_0xb64de8['as'],'attributes':_0xb64de8[_0x5d41('0x18')],'include':_0xb64de8[_0x5d41('0x1a')]?_[_0x5d41('0x19')](_0xb64de8[_0x5d41('0x1a')],function(_0x481dcf){return{'model':db[_0x481dcf[_0x5d41('0x1b')]],'as':_0x481dcf['as'],'attributes':_0x481dcf['attributes'],'include':_0x481dcf[_0x5d41('0x1a')]?_[_0x5d41('0x19')](_0x481dcf['include'],function(_0x5a65d2){return{'model':db[_0x5a65d2['model']],'as':_0x5a65d2['as'],'attributes':_0x5a65d2['attributes']};}):[]};}):[]};}):[]:[]})[_0x5d41('0x1c')](function(_0x75bc17){logger['info'](_0x5d41('0x1e'),_0x541d10);logger[_0x5d41('0x21')](_0x5d41('0x1e'),_0x541d10,JSON[_0x5d41('0xd')](_0x75bc17));_0x263542(_0x75bc17);})['catch'](function(_0x135d6d){logger['error']('ShowCmHopper',_0x135d6d[_0x5d41('0x11')],_0x541d10);_0x58e81a(_0x19ac23[_0x5d41('0xe')](0x1f4,_0x135d6d[_0x5d41('0x11')]));});});};exports[_0x5d41('0x22')]=function(_0x44983b){var _0x54e527=this;return new Promise(function(_0x7cc745,_0x466489){return db[_0x5d41('0x14')]['create'](_0x44983b[_0x5d41('0x23')],{'raw':_0x44983b[_0x5d41('0x16')]?_0x44983b[_0x5d41('0x16')][_0x5d41('0x20')]===undefined?!![]:![]:!![]})[_0x5d41('0x1c')](function(_0x5835f0){logger[_0x5d41('0xb')](_0x5d41('0x22'),_0x44983b);logger[_0x5d41('0x21')]('CreateCmHopper',_0x44983b,JSON[_0x5d41('0xd')](_0x5835f0));_0x7cc745(_0x5835f0);})[_0x5d41('0x1d')](function(_0x51784d){logger[_0x5d41('0xe')](_0x5d41('0x22'),_0x51784d[_0x5d41('0x11')],_0x44983b);_0x466489(_0x54e527[_0x5d41('0xe')](0x1f4,_0x51784d[_0x5d41('0x11')]));});});};exports[_0x5d41('0x24')]=function(_0x4980fb){var _0x232d0c=this;return new Promise(function(_0x275f22,_0x523661){return db[_0x5d41('0x14')][_0x5d41('0x25')](_0x4980fb[_0x5d41('0x23')],{'raw':_0x4980fb['options']?_0x4980fb[_0x5d41('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4980fb[_0x5d41('0x16')]?_0x4980fb[_0x5d41('0x16')][_0x5d41('0x17')]||null:null,'attributes':_0x4980fb[_0x5d41('0x16')]?_0x4980fb['options'][_0x5d41('0x18')]||null:null,'limit':_0x4980fb[_0x5d41('0x16')]?_0x4980fb[_0x5d41('0x16')]['limit']||null:null})['then'](function(_0x138832){logger['info'](_0x5d41('0x24'),_0x4980fb);logger['debug'](_0x5d41('0x24'),_0x4980fb,JSON[_0x5d41('0xd')](_0x138832));_0x275f22(_0x138832);})[_0x5d41('0x1d')](function(_0x22535){logger['error']('UpdateCmHopper',_0x22535[_0x5d41('0x11')],_0x4980fb);_0x523661(_0x232d0c[_0x5d41('0xe')](0x1f4,_0x22535[_0x5d41('0x11')]));});});};exports[_0x5d41('0x26')]=function(_0x3f6c47){var _0x380426=this;return new Promise(function(_0x14eb19,_0x5c7070){return db[_0x5d41('0x14')][_0x5d41('0x27')]({'where':_0x3f6c47[_0x5d41('0x16')]?_0x3f6c47[_0x5d41('0x16')]['where']||null:null})[_0x5d41('0x1c')](function(_0x164556){logger[_0x5d41('0xb')](_0x5d41('0x26'),_0x3f6c47);logger[_0x5d41('0x21')](_0x5d41('0x26'),_0x3f6c47,JSON[_0x5d41('0xd')](_0x164556));_0x14eb19(_0x164556);})['catch'](function(_0x3f9c56){logger[_0x5d41('0xe')](_0x5d41('0x26'),_0x3f9c56[_0x5d41('0x11')],_0x3f6c47);_0x5c7070(_0x380426[_0x5d41('0xe')](0x1f4,_0x3f9c56['message']));});});};exports['GetContactDialer']=function(_0x5cb753){var _0x5c8951=this;return new Promise(function(_0x463f8a,_0x4de1f2){return db['CmContact']['describe']()[_0x5d41('0x1c')](function(_0x49ce9f){return db['sequelize']['transaction'](function(_0x323c6c){return db[_0x5d41('0x14')]['findAll']({'where':_0x5cb753[_0x5d41('0x16')]?_0x5cb753[_0x5d41('0x16')][_0x5d41('0x17')]||null:null,'attributes':_0x5cb753['options']?_0x5cb753[_0x5d41('0x16')][_0x5d41('0x18')]||null:null,'limit':_0x5cb753[_0x5d41('0x16')]?_0x5cb753[_0x5d41('0x16')][_0x5d41('0x28')]||null:null,'order':_0x5cb753[_0x5d41('0x16')]?_0x5cb753[_0x5d41('0x16')][_0x5d41('0x29')]||null:null,'transaction':_0x323c6c,'lock':_0x323c6c[_0x5d41('0x2a')][_0x5d41('0x2b')],'include':[{'model':db[_0x5d41('0x2c')],'as':'Contact','attributes':_['keys'](_0x49ce9f)},{'model':db['User'],'as':_0x5d41('0x2d'),'attributes':['id','name',_0x5d41('0x2e')]}]})['then'](function(_0x3f2551){var _0x12671c=[];var _0x276263=[];for(var _0x39f68b=0x0;_0x39f68b<_0x3f2551[_0x5d41('0x2f')];_0x39f68b+=0x1){var _0x199ea3=_0x3f2551[_0x39f68b][_0x5d41('0x30')];if(_0x199ea3===null){_0x12671c[_0x5d41('0x31')](_0x3f2551[_0x39f68b][_0x5d41('0x25')](_0x5cb753['body'],{'transaction':_0x323c6c}));}else if(!_0x276263[_0x5d41('0x32')](_0x199ea3)){_0x276263[_0x5d41('0x31')](_0x199ea3);_0x12671c[_0x5d41('0x31')](_0x3f2551[_0x39f68b][_0x5d41('0x25')](_0x5cb753['body'],{'transaction':_0x323c6c}));}}return BPromise[_0x5d41('0x33')](_0x12671c);});})[_0x5d41('0x1c')](function(_0x546c91){logger[_0x5d41('0xb')]('GetContactDialer',_0x5cb753);logger['debug'](_0x5d41('0x34'),_0x5cb753,JSON[_0x5d41('0xd')](_0x546c91));_0x463f8a(_0x546c91);})[_0x5d41('0x1d')](function(_0x3f1aa6){logger[_0x5d41('0xe')](_0x5d41('0x34'),_0x3f1aa6[_0x5d41('0x11')],_0x5cb753);_0x4de1f2(_0x5c8951[_0x5d41('0xe')](0x1f4,_0x3f1aa6['message']));});});});};exports[_0x5d41('0x35')]=function(_0x245a79){var _0x4dba2b=this;return new Promise(function(_0x87570,_0x152862){return db[_0x5d41('0x36')][_0x5d41('0x37')](function(_0x1d1b77){return db[_0x5d41('0x38')]['create'](_0x245a79[_0x5d41('0x23')],{'raw':_0x245a79[_0x5d41('0x16')]?_0x245a79[_0x5d41('0x16')]['raw']===undefined?!![]:![]:!![],'transaction':_0x1d1b77})[_0x5d41('0x1c')](function(){return db[_0x5d41('0x14')][_0x5d41('0x27')]({'where':_0x245a79['options']?_0x245a79[_0x5d41('0x16')][_0x5d41('0x17')]||null:null,'transaction':_0x1d1b77});});})[_0x5d41('0x1c')](function(_0x219a8c){logger[_0x5d41('0xb')](_0x5d41('0x35'),_0x245a79);logger[_0x5d41('0x21')](_0x5d41('0x35'),_0x245a79,JSON[_0x5d41('0xd')](_0x219a8c));_0x87570(_0x219a8c);})['catch'](function(_0x152e45){logger[_0x5d41('0xe')]('MoveContactManagedDialer',_0x152e45[_0x5d41('0x11')],_0x245a79);_0x152862(_0x4dba2b[_0x5d41('0xe')](0x1f4,_0x152e45[_0x5d41('0x11')]));});});};exports['CountReScheduled']=function(_0x11c4ed){var _0x363fd3=this;return new Promise(function(_0x2988d3,_0x748508){return db[_0x5d41('0x14')][_0x5d41('0x15')]({'raw':_0x11c4ed[_0x5d41('0x16')]?_0x11c4ed[_0x5d41('0x16')][_0x5d41('0x20')]===undefined?!![]:![]:!![],'where':_0x11c4ed[_0x5d41('0x16')]?_0x11c4ed[_0x5d41('0x16')][_0x5d41('0x17')]||null:null,'attributes':[[db[_0x5d41('0x36')]['fn']('COUNT',db[_0x5d41('0x36')]['fn']('IF',db[_0x5d41('0x36')]['literal']('`scheduledat`\x20>=\x20'+util[_0x5d41('0x39')](_0x5d41('0x3a'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss'))+_0x5d41('0x3b')))),'contactsRescheduled']]})['then'](function(_0x10a47d){logger['info'](_0x5d41('0x3c'),_0x11c4ed);logger[_0x5d41('0x21')]('CountReScheduled',_0x11c4ed,JSON[_0x5d41('0xd')](_0x10a47d));_0x2988d3(_0x10a47d);})[_0x5d41('0x1d')](function(_0x40120f){logger['error']('CountReScheduled',_0x40120f['message'],_0x11c4ed);_0x748508(_0x363fd3[_0x5d41('0xe')](0x1f4,_0x40120f[_0x5d41('0x11')]));});});};exports[_0x5d41('0x3d')]=function(_0x241554){var _0xfeda29=this;return new Promise(function(_0x4516f9,_0x45aa91){return db[_0x5d41('0x2c')]['describe']()[_0x5d41('0x1c')](function(_0x46cfc3){return db[_0x5d41('0x36')]['transaction'](function(_0x21f1bf){return db[_0x5d41('0x14')][_0x5d41('0x15')]({'where':_0x241554['options']?_0x241554[_0x5d41('0x16')][_0x5d41('0x17')]||null:null,'attributes':_0x241554['options']?_0x241554['options']['attributes']||null:null,'limit':0x1,'order':_0x241554['options']?_0x241554[_0x5d41('0x16')][_0x5d41('0x29')]||null:null,'group':db[_0x5d41('0x14')][_0x5d41('0x30')],'transaction':_0x21f1bf,'lock':_0x21f1bf[_0x5d41('0x2a')][_0x5d41('0x2b')],'include':_0x241554[_0x5d41('0x16')]?_0x241554[_0x5d41('0x16')]['include']?_[_0x5d41('0x19')](_0x241554['options'][_0x5d41('0x1a')],function(_0x5b5871){return{'model':db[_0x5b5871['model']],'as':_0x5b5871['as'],'attributes':_0x5b5871[_0x5d41('0x18')],'include':_0x5b5871[_0x5d41('0x1a')]?_[_0x5d41('0x19')](_0x5b5871['include'],function(_0x16af4c){return{'model':db[_0x16af4c['model']],'as':_0x16af4c['as'],'attributes':_0x16af4c[_0x5d41('0x18')],'include':_0x16af4c[_0x5d41('0x1a')]?_[_0x5d41('0x19')](_0x16af4c['include'],function(_0x42f4cd){return{'model':db[_0x42f4cd[_0x5d41('0x1b')]],'as':_0x42f4cd['as'],'attributes':_0x42f4cd['attributes']};}):[]};}):[]};}):[]:[]})[_0x5d41('0x1c')](function(_0x53892d){var _0xb788ba=[];for(var _0x37cfda=0x0;_0x37cfda<_0x53892d[_0x5d41('0x2f')];_0x37cfda+=0x1){_0xb788ba[_0x5d41('0x31')](_0x53892d[_0x37cfda][_0x5d41('0x25')](_0x241554['body'],{'transaction':_0x21f1bf}));}return BPromise[_0x5d41('0x33')](_0xb788ba);});})['then'](function(_0x508acc){logger['info'](_0x5d41('0x3d'),_0x241554);logger[_0x5d41('0x21')](_0x5d41('0x3d'),_0x241554,JSON[_0x5d41('0xd')](_0x508acc));_0x4516f9(_0x508acc);})[_0x5d41('0x1d')](function(_0x18b8bb){logger[_0x5d41('0xe')]('GetContactRecallMe',_0x18b8bb[_0x5d41('0x11')],_0x241554);_0x45aa91(_0xfeda29[_0x5d41('0xe')](0x1f4,_0x18b8bb[_0x5d41('0x11')]));});});});};exports[_0x5d41('0x3e')]=function(_0x206e1f){var _0x4852f7=this;return new Promise(function(_0x44acdd,_0x601f87){db[_0x5d41('0x2c')][_0x5d41('0x3f')]()[_0x5d41('0x1c')](function(_0x58944a){return db[_0x5d41('0x14')][_0x5d41('0x15')]({'raw':_0x206e1f[_0x5d41('0x16')]?_0x206e1f[_0x5d41('0x16')][_0x5d41('0x20')]===undefined?!![]:![]:!![],'where':_0x206e1f[_0x5d41('0x16')]?_0x206e1f[_0x5d41('0x16')][_0x5d41('0x17')]||null:null,'attributes':_0x206e1f[_0x5d41('0x16')]?_0x206e1f[_0x5d41('0x16')][_0x5d41('0x18')]||null:null,'limit':_0x206e1f[_0x5d41('0x16')]?_0x206e1f[_0x5d41('0x16')]['limit']||null:null,'include':_0x206e1f[_0x5d41('0x16')]?_0x206e1f[_0x5d41('0x16')][_0x5d41('0x1a')]?_[_0x5d41('0x19')](_0x206e1f[_0x5d41('0x16')][_0x5d41('0x1a')],function(_0x1923f4){return{'model':db[_0x1923f4['model']],'as':_0x1923f4['as'],'attributes':_0x1923f4['as']===_0x5d41('0x40')?_[_0x5d41('0x41')](_0x58944a):_0x1923f4[_0x5d41('0x18')],'include':_0x1923f4[_0x5d41('0x1a')]?_[_0x5d41('0x19')](_0x1923f4[_0x5d41('0x1a')],function(_0x440ab9){return{'model':db[_0x440ab9[_0x5d41('0x1b')]],'as':_0x440ab9['as'],'attributes':_0x440ab9[_0x5d41('0x18')],'include':_0x440ab9[_0x5d41('0x1a')]?_[_0x5d41('0x19')](_0x440ab9['include'],function(_0x4deb8b){return{'model':db[_0x4deb8b[_0x5d41('0x1b')]],'as':_0x4deb8b['as'],'attributes':_0x4deb8b[_0x5d41('0x18')]};}):[]};}):[]};}):[]:[]})[_0x5d41('0x1c')](function(_0x1948f6){logger[_0x5d41('0xb')](_0x5d41('0x13'),_0x206e1f);logger[_0x5d41('0x21')]('GetCmHopper',_0x206e1f,JSON[_0x5d41('0xd')](_0x1948f6));_0x44acdd(_0x1948f6);})[_0x5d41('0x1d')](function(_0x3357cb){logger[_0x5d41('0xe')](_0x5d41('0x13'),_0x3357cb[_0x5d41('0x11')],_0x206e1f);_0x601f87(_0x4852f7[_0x5d41('0xe')](0x1f4,_0x3357cb[_0x5d41('0x11')]));});});});};
\ No newline at end of file
index 38dd388..0c8423e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45db=['../../components/interaction/service','../../config/environment','./cmHopper.controller','isAuthenticated','index','get','describe','/opencontacts','getOpenContacts','/:id','show','post','create','/preview','getPreview','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x2405bc,_0x2f28a1){var _0x5272d4=function(_0x225294){while(--_0x225294){_0x2405bc['push'](_0x2405bc['shift']());}};_0x5272d4(++_0x2f28a1);}(_0x45db,0xa9));var _0xb45d=function(_0x53308c,_0x2708fa){_0x53308c=_0x53308c-0x0;var _0x3e8a24=_0x45db[_0x53308c];return _0x3e8a24;};'use strict';var multer=require(_0xb45d('0x0'));var util=require(_0xb45d('0x1'));var path=require(_0xb45d('0x2'));var timeout=require(_0xb45d('0x3'));var express=require(_0xb45d('0x4'));var router=express[_0xb45d('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb45d('0x6'));var config=require(_0xb45d('0x7'));var controller=require(_0xb45d('0x8'));router['get']('/',auth[_0xb45d('0x9')](),controller[_0xb45d('0xa')]);router[_0xb45d('0xb')]('/describe',auth[_0xb45d('0x9')](),controller[_0xb45d('0xc')]);router['get'](_0xb45d('0xd'),auth['isAuthenticated'](),controller[_0xb45d('0xe')]);router['get'](_0xb45d('0xf'),auth[_0xb45d('0x9')](),controller[_0xb45d('0x10')]);router[_0xb45d('0x11')]('/',auth[_0xb45d('0x9')](),controller[_0xb45d('0x12')]);router['post'](_0xb45d('0x13'),auth['isAuthenticated'](),controller[_0xb45d('0x14')]);router[_0xb45d('0x15')](_0xb45d('0xf'),auth[_0xb45d('0x9')](),controller[_0xb45d('0x16')]);router['delete'](_0xb45d('0xf'),auth[_0xb45d('0x9')](),controller[_0xb45d('0x17')]);module[_0xb45d('0x18')]=router;
\ No newline at end of file
+var _0xf037=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/:id','show','post','create','/preview','getPreview','put','update','delete','destroy','exports','multer','util'];(function(_0x9c526e,_0x293bc2){var _0x43ffc2=function(_0x23b206){while(--_0x23b206){_0x9c526e['push'](_0x9c526e['shift']());}};_0x43ffc2(++_0x293bc2);}(_0xf037,0x1be));var _0x7f03=function(_0x419aa4,_0x5926a7){_0x419aa4=_0x419aa4-0x0;var _0x557d9b=_0xf037[_0x419aa4];return _0x557d9b;};'use strict';var multer=require(_0x7f03('0x0'));var util=require(_0x7f03('0x1'));var path=require(_0x7f03('0x2'));var timeout=require(_0x7f03('0x3'));var express=require(_0x7f03('0x4'));var router=express[_0x7f03('0x5')]();var fs_extra=require(_0x7f03('0x6'));var auth=require(_0x7f03('0x7'));var interaction=require(_0x7f03('0x8'));var config=require(_0x7f03('0x9'));var controller=require('./cmHopper.controller');router[_0x7f03('0xa')]('/',auth[_0x7f03('0xb')](),controller[_0x7f03('0xc')]);router[_0x7f03('0xa')](_0x7f03('0xd'),auth['isAuthenticated'](),controller[_0x7f03('0xe')]);router['get'](_0x7f03('0xf'),auth[_0x7f03('0xb')](),controller[_0x7f03('0x10')]);router[_0x7f03('0xa')](_0x7f03('0x11'),auth[_0x7f03('0xb')](),controller[_0x7f03('0x12')]);router[_0x7f03('0x13')]('/',auth[_0x7f03('0xb')](),controller[_0x7f03('0x14')]);router[_0x7f03('0x13')](_0x7f03('0x15'),auth[_0x7f03('0xb')](),controller[_0x7f03('0x16')]);router[_0x7f03('0x17')](_0x7f03('0x11'),auth[_0x7f03('0xb')](),controller[_0x7f03('0x18')]);router[_0x7f03('0x19')](_0x7f03('0x11'),auth[_0x7f03('0xb')](),controller[_0x7f03('0x1a')]);module[_0x7f03('0x1b')]=router;
\ No newline at end of file
index a170908..aa5efaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa87e=['moment','sequelize','exports','STRING','contactListQueue','INTEGER'];(function(_0x70dc3f,_0xfc371b){var _0x447aa4=function(_0x2509fa){while(--_0x2509fa){_0x70dc3f['push'](_0x70dc3f['shift']());}};_0x447aa4(++_0xfc371b);}(_0xa87e,0x1c2));var _0xea87=function(_0xfe1d80,_0x1f2563){_0xfe1d80=_0xfe1d80-0x0;var _0x203ce9=_0xa87e[_0xfe1d80];return _0x203ce9;};'use strict';var moment=require(_0xea87('0x0'));var Sequelize=require(_0xea87('0x1'));module[_0xea87('0x2')]={'phone':{'type':Sequelize[_0xea87('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0xea87('0x4')},'ListId':{'type':Sequelize[_0xea87('0x5')],'unique':_0xea87('0x4')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0xea87('0x4')}};
\ No newline at end of file
+var _0x4cfd=['STRING','INTEGER','contactListQueue','moment','sequelize'];(function(_0x22d2b2,_0x57c90c){var _0x593c59=function(_0x4b52fe){while(--_0x4b52fe){_0x22d2b2['push'](_0x22d2b2['shift']());}};_0x593c59(++_0x57c90c);}(_0x4cfd,0x170));var _0xd4cf=function(_0x59d89e,_0x55edf5){_0x59d89e=_0x59d89e-0x0;var _0x554e93=_0x4cfd[_0x59d89e];return _0x554e93;};'use strict';var moment=require(_0xd4cf('0x0'));var Sequelize=require(_0xd4cf('0x1'));module['exports']={'phone':{'type':Sequelize[_0xd4cf('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xd4cf('0x3')],'unique':_0xd4cf('0x4')},'ListId':{'type':Sequelize[_0xd4cf('0x3')],'unique':_0xd4cf('0x4')},'VoiceQueueId':{'type':Sequelize[_0xd4cf('0x3')],'unique':'contactListQueue'}};
\ No newline at end of file
index 27bb98b..fa789c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe989=['ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','CmHopperBlack','includeAll','include','findAll','rows','catch','show','options','find','body','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse'];(function(_0x4f737f,_0x3a33ad){var _0x2d7f60=function(_0xdc50b2){while(--_0xdc50b2){_0x4f737f['push'](_0x4f737f['shift']());}};_0x2d7f60(++_0x3a33ad);}(_0xe989,0x11e));var _0x9e98=function(_0x5d7803,_0x30e9aa){_0x5d7803=_0x5d7803-0x0;var _0x1a43b2=_0xe989[_0x5d7803];return _0x1a43b2;};'use strict';var emlformat=require(_0x9e98('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9e98('0x1'));var jsonpatch=require(_0x9e98('0x2'));var rp=require(_0x9e98('0x3'));var moment=require(_0x9e98('0x4'));var BPromise=require(_0x9e98('0x5'));var Mustache=require(_0x9e98('0x6'));var util=require(_0x9e98('0x7'));var path=require(_0x9e98('0x8'));var sox=require(_0x9e98('0x9'));var csv=require(_0x9e98('0xa'));var ejs=require(_0x9e98('0xb'));var fs=require('fs');var fs_extra=require(_0x9e98('0xc'));var _=require('lodash');var squel=require(_0x9e98('0xd'));var crypto=require('crypto');var jsforce=require(_0x9e98('0xe'));var deskjs=require(_0x9e98('0xf'));var toCsv=require(_0x9e98('0xa'));var querystring=require(_0x9e98('0x10'));var Papa=require(_0x9e98('0x11'));var Redis=require(_0x9e98('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9e98('0x13'));var hardwareService=require(_0x9e98('0x14'));var logger=require(_0x9e98('0x15'))(_0x9e98('0x16'));var utils=require(_0x9e98('0x17'));var config=require(_0x9e98('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3ea642,_0x539611){_0x539611=_0x539611||0xcc;return function(_0x34ce72){if(_0x34ce72){return _0x3ea642[_0x9e98('0x19')](_0x539611);}return _0x3ea642[_0x9e98('0x1a')](_0x539611)[_0x9e98('0x1b')]();};}function respondWithResult(_0x2eff97,_0x2f04f8){_0x2f04f8=_0x2f04f8||0xc8;return function(_0xa25fb0){if(_0xa25fb0){return _0x2eff97[_0x9e98('0x1a')](_0x2f04f8)[_0x9e98('0x1c')](_0xa25fb0);}};}function respondWithFilteredResult(_0x314c48,_0x2ae26c){return function(_0x36cf00){if(_0x36cf00){var _0x3fc0c0=typeof _0x2ae26c[_0x9e98('0x1d')]===_0x9e98('0x1e')&&typeof _0x2ae26c[_0x9e98('0x1f')]===_0x9e98('0x1e');var _0x40c4ff=_0x36cf00[_0x9e98('0x20')];var _0x330d19=_0x3fc0c0?0x0:_0x2ae26c[_0x9e98('0x1d')];var _0x7e7e49=_0x3fc0c0?_0x36cf00[_0x9e98('0x20')]:_0x2ae26c[_0x9e98('0x1d')]+_0x2ae26c[_0x9e98('0x1f')];var _0x30e54e;if(_0x7e7e49>=_0x40c4ff){_0x7e7e49=_0x40c4ff;_0x30e54e=0xc8;}else{_0x30e54e=0xce;}_0x314c48['status'](_0x30e54e);return _0x314c48[_0x9e98('0x21')](_0x9e98('0x22'),_0x330d19+'-'+_0x7e7e49+'/'+_0x40c4ff)[_0x9e98('0x1c')](_0x36cf00);}return null;};}function patchUpdates(_0x19a3f8){return function(_0x5c857a){try{jsonpatch[_0x9e98('0x23')](_0x5c857a,_0x19a3f8,!![]);}catch(_0xf8454c){return BPromise[_0x9e98('0x24')](_0xf8454c);}return _0x5c857a[_0x9e98('0x25')]();};}function saveUpdates(_0x4abd06,_0x256b27){return function(_0x55dd16){if(_0x55dd16){return _0x55dd16[_0x9e98('0x26')](_0x4abd06)[_0x9e98('0x27')](function(_0x5608d1){return _0x5608d1;});}return null;};}function removeEntity(_0x12d1c3,_0xf0b9cb){return function(_0x343af3){if(_0x343af3){return _0x343af3[_0x9e98('0x28')]()['then'](function(){_0x12d1c3[_0x9e98('0x1a')](0xcc)[_0x9e98('0x1b')]();});}};}function handleEntityNotFound(_0x77458d,_0x503ce8){return function(_0x48b26a){if(!_0x48b26a){_0x77458d[_0x9e98('0x19')](0x194);}return _0x48b26a;};}function handleError(_0x51c785,_0x4b1a7a){_0x4b1a7a=_0x4b1a7a||0x1f4;return function(_0x2ad27a){logger[_0x9e98('0x29')](_0x2ad27a['stack']);if(_0x2ad27a['name']){delete _0x2ad27a[_0x9e98('0x2a')];}_0x51c785[_0x9e98('0x1a')](_0x4b1a7a)['send'](_0x2ad27a);};}exports[_0x9e98('0x2b')]=function(_0x3e5415,_0x70aa85){var _0x5d830d={},_0x470a21={},_0x27a6e3={'count':0x0,'rows':[]};var _0xde2f61=_[_0x9e98('0x2c')](db['CmHopperBlack'][_0x9e98('0x2d')],function(_0x4dc11b){return{'name':_0x4dc11b[_0x9e98('0x2e')],'type':_0x4dc11b[_0x9e98('0x2f')][_0x9e98('0x30')]};});_0x470a21[_0x9e98('0x31')]=_[_0x9e98('0x2c')](_0xde2f61,_0x9e98('0x2a'));_0x470a21[_0x9e98('0x32')]=_[_0x9e98('0x33')](_0x3e5415[_0x9e98('0x32')]);_0x470a21[_0x9e98('0x34')]=_[_0x9e98('0x35')](_0x470a21[_0x9e98('0x31')],_0x470a21[_0x9e98('0x32')]);_0x5d830d[_0x9e98('0x36')]=_[_0x9e98('0x35')](_0x470a21[_0x9e98('0x31')],qs[_0x9e98('0x37')](_0x3e5415[_0x9e98('0x32')][_0x9e98('0x37')]));_0x5d830d[_0x9e98('0x36')]=_0x5d830d['attributes'][_0x9e98('0x38')]?_0x5d830d['attributes']:_0x470a21[_0x9e98('0x31')];if(!_0x3e5415[_0x9e98('0x32')][_0x9e98('0x39')](_0x9e98('0x3a'))){_0x5d830d[_0x9e98('0x1f')]=qs[_0x9e98('0x1f')](_0x3e5415[_0x9e98('0x32')][_0x9e98('0x1f')]);_0x5d830d[_0x9e98('0x1d')]=qs[_0x9e98('0x1d')](_0x3e5415['query'][_0x9e98('0x1d')]);}_0x5d830d['order']=qs[_0x9e98('0x3b')](_0x3e5415[_0x9e98('0x32')][_0x9e98('0x3b')]);_0x5d830d[_0x9e98('0x3c')]=qs[_0x9e98('0x34')](_[_0x9e98('0x3d')](_0x3e5415['query'],_0x470a21[_0x9e98('0x34')]),_0xde2f61);if(_0x3e5415['query']['filter']){_0x5d830d[_0x9e98('0x3c')]=_[_0x9e98('0x3e')](_0x5d830d['where'],{'$or':_['map'](_0xde2f61,function(_0x5b05b6){if(_0x5b05b6[_0x9e98('0x2f')]!=='VIRTUAL'){var _0x2423b8={};_0x2423b8[_0x5b05b6[_0x9e98('0x2a')]]={'$like':'%'+_0x3e5415[_0x9e98('0x32')][_0x9e98('0x3f')]+'%'};return _0x2423b8;}})});}_0x5d830d=_[_0x9e98('0x3e')]({},_0x5d830d,_0x3e5415['options']);var _0x45fe0f={'where':_0x5d830d['where']};return db[_0x9e98('0x40')][_0x9e98('0x20')](_0x45fe0f)[_0x9e98('0x27')](function(_0x4a3cc9){_0x27a6e3[_0x9e98('0x20')]=_0x4a3cc9;if(_0x3e5415[_0x9e98('0x32')][_0x9e98('0x41')]){_0x5d830d[_0x9e98('0x42')]=[{'all':!![]}];}return db[_0x9e98('0x40')][_0x9e98('0x43')](_0x5d830d);})[_0x9e98('0x27')](function(_0x10f62c){_0x27a6e3[_0x9e98('0x44')]=_0x10f62c;return _0x27a6e3;})[_0x9e98('0x27')](respondWithFilteredResult(_0x70aa85,_0x5d830d))[_0x9e98('0x45')](handleError(_0x70aa85,null));};exports[_0x9e98('0x46')]=function(_0x59fa4f,_0x4194c5){var _0x546420={'raw':!![],'where':{'id':_0x59fa4f['params']['id']}},_0x1d10a6={};_0x1d10a6['model']=_['keys'](db[_0x9e98('0x40')][_0x9e98('0x2d')]);_0x1d10a6[_0x9e98('0x32')]=_['keys'](_0x59fa4f[_0x9e98('0x32')]);_0x1d10a6[_0x9e98('0x34')]=_[_0x9e98('0x35')](_0x1d10a6[_0x9e98('0x31')],_0x1d10a6[_0x9e98('0x32')]);_0x546420[_0x9e98('0x36')]=_['intersection'](_0x1d10a6[_0x9e98('0x31')],qs[_0x9e98('0x37')](_0x59fa4f[_0x9e98('0x32')][_0x9e98('0x37')]));_0x546420['attributes']=_0x546420[_0x9e98('0x36')][_0x9e98('0x38')]?_0x546420[_0x9e98('0x36')]:_0x1d10a6['model'];if(_0x59fa4f[_0x9e98('0x32')][_0x9e98('0x41')]){_0x546420[_0x9e98('0x42')]=[{'all':!![]}];}_0x546420=_['merge']({},_0x546420,_0x59fa4f[_0x9e98('0x47')]);return db[_0x9e98('0x40')][_0x9e98('0x48')](_0x546420)[_0x9e98('0x27')](handleEntityNotFound(_0x4194c5,null))[_0x9e98('0x27')](respondWithResult(_0x4194c5,null))[_0x9e98('0x45')](handleError(_0x4194c5,null));};exports[_0x9e98('0x26')]=function(_0x141678,_0x5aa126){if(_0x141678[_0x9e98('0x49')]['id']){delete _0x141678[_0x9e98('0x49')]['id'];}return db['CmHopperBlack']['find']({'where':{'id':_0x141678[_0x9e98('0x4a')]['id']}})[_0x9e98('0x27')](handleEntityNotFound(_0x5aa126,null))['then'](saveUpdates(_0x141678[_0x9e98('0x49')],null))[_0x9e98('0x27')](respondWithResult(_0x5aa126,null))[_0x9e98('0x45')](handleError(_0x5aa126,null));};exports[_0x9e98('0x28')]=function(_0x594429,_0x3959cf){return db[_0x9e98('0x40')][_0x9e98('0x48')]({'where':{'id':_0x594429[_0x9e98('0x4a')]['id']}})[_0x9e98('0x27')](handleEntityNotFound(_0x3959cf,null))['then'](removeEntity(_0x3959cf,null))[_0x9e98('0x45')](handleError(_0x3959cf,null));};exports[_0x9e98('0x4b')]=function(_0x4b024b,_0x4c39bb){return db[_0x9e98('0x40')][_0x9e98('0x4b')]()[_0x9e98('0x27')](respondWithResult(_0x4c39bb,null))[_0x9e98('0x45')](handleError(_0x4c39bb,null));};
\ No newline at end of file
+var _0x3ffd=['eml-format','zip-dir','util','path','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','count','offset','Content-Range','apply','update','then','error','stack','name','send','index','map','CmHopperBlack','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','order','sort','pick','where','VIRTUAL','filter','merge','options','includeAll','include','catch','show','params','length','body','find','destroy','describe'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x3ffd,0x84));var _0xd3ff=function(_0x5c7e53,_0x174ce5){_0x5c7e53=_0x5c7e53-0x0;var _0x1c9af9=_0x3ffd[_0x5c7e53];return _0x1c9af9;};'use strict';var emlformat=require(_0xd3ff('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd3ff('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd3ff('0x2'));var path=require(_0xd3ff('0x3'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd3ff('0x4'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd3ff('0x5'));var squel=require(_0xd3ff('0x6'));var crypto=require(_0xd3ff('0x7'));var jsforce=require('jsforce');var deskjs=require(_0xd3ff('0x8'));var toCsv=require(_0xd3ff('0x9'));var querystring=require(_0xd3ff('0xa'));var Papa=require(_0xd3ff('0xb'));var Redis=require('ioredis');var authService=require(_0xd3ff('0xc'));var qs=require(_0xd3ff('0xd'));var as=require(_0xd3ff('0xe'));var hardwareService=require(_0xd3ff('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0xd3ff('0x10'));var config=require(_0xd3ff('0x11'));var licenseUtil=require(_0xd3ff('0x12'));var db=require(_0xd3ff('0x13'))['db'];function respondWithStatusCode(_0x56e8b4,_0x10b5d9){_0x10b5d9=_0x10b5d9||0xcc;return function(_0x5da232){if(_0x5da232){return _0x56e8b4['sendStatus'](_0x10b5d9);}return _0x56e8b4[_0xd3ff('0x14')](_0x10b5d9)[_0xd3ff('0x15')]();};}function respondWithResult(_0x450596,_0x4c9104){_0x4c9104=_0x4c9104||0xc8;return function(_0x5a8c0f){if(_0x5a8c0f){return _0x450596[_0xd3ff('0x14')](_0x4c9104)[_0xd3ff('0x16')](_0x5a8c0f);}};}function respondWithFilteredResult(_0x3a55f4,_0x4cff73){return function(_0x246b98){if(_0x246b98){var _0x31f439=typeof _0x4cff73['offset']==='undefined'&&typeof _0x4cff73['limit']==='undefined';var _0x34ddd9=_0x246b98[_0xd3ff('0x17')];var _0x49b2e4=_0x31f439?0x0:_0x4cff73[_0xd3ff('0x18')];var _0x575446=_0x31f439?_0x246b98['count']:_0x4cff73[_0xd3ff('0x18')]+_0x4cff73['limit'];var _0x91025e;if(_0x575446>=_0x34ddd9){_0x575446=_0x34ddd9;_0x91025e=0xc8;}else{_0x91025e=0xce;}_0x3a55f4[_0xd3ff('0x14')](_0x91025e);return _0x3a55f4['set'](_0xd3ff('0x19'),_0x49b2e4+'-'+_0x575446+'/'+_0x34ddd9)['json'](_0x246b98);}return null;};}function patchUpdates(_0x4ca087){return function(_0x48e37d){try{jsonpatch[_0xd3ff('0x1a')](_0x48e37d,_0x4ca087,!![]);}catch(_0x1ceec9){return BPromise['reject'](_0x1ceec9);}return _0x48e37d['save']();};}function saveUpdates(_0x39ba4d,_0x5597e6){return function(_0x2f7acf){if(_0x2f7acf){return _0x2f7acf[_0xd3ff('0x1b')](_0x39ba4d)[_0xd3ff('0x1c')](function(_0x2bebc8){return _0x2bebc8;});}return null;};}function removeEntity(_0x84065d,_0x2c445e){return function(_0x28097f){if(_0x28097f){return _0x28097f['destroy']()[_0xd3ff('0x1c')](function(){_0x84065d[_0xd3ff('0x14')](0xcc)[_0xd3ff('0x15')]();});}};}function handleEntityNotFound(_0xd6fdfb,_0x17a53f){return function(_0x5d9b6e){if(!_0x5d9b6e){_0xd6fdfb['sendStatus'](0x194);}return _0x5d9b6e;};}function handleError(_0x5bb0b3,_0x4cd994){_0x4cd994=_0x4cd994||0x1f4;return function(_0x117c6a){logger[_0xd3ff('0x1d')](_0x117c6a[_0xd3ff('0x1e')]);if(_0x117c6a[_0xd3ff('0x1f')]){delete _0x117c6a[_0xd3ff('0x1f')];}_0x5bb0b3[_0xd3ff('0x14')](_0x4cd994)[_0xd3ff('0x20')](_0x117c6a);};}exports[_0xd3ff('0x21')]=function(_0x4decc6,_0x24c5f8){var _0x3fb4f0={},_0x3e2b70={},_0x1a4d92={'count':0x0,'rows':[]};var _0x78ea6e=_[_0xd3ff('0x22')](db[_0xd3ff('0x23')]['rawAttributes'],function(_0x22c6fa){return{'name':_0x22c6fa[_0xd3ff('0x24')],'type':_0x22c6fa[_0xd3ff('0x25')][_0xd3ff('0x26')]};});_0x3e2b70[_0xd3ff('0x27')]=_[_0xd3ff('0x22')](_0x78ea6e,_0xd3ff('0x1f'));_0x3e2b70[_0xd3ff('0x28')]=_[_0xd3ff('0x29')](_0x4decc6['query']);_0x3e2b70[_0xd3ff('0x2a')]=_[_0xd3ff('0x2b')](_0x3e2b70[_0xd3ff('0x27')],_0x3e2b70[_0xd3ff('0x28')]);_0x3fb4f0[_0xd3ff('0x2c')]=_[_0xd3ff('0x2b')](_0x3e2b70['model'],qs[_0xd3ff('0x2d')](_0x4decc6[_0xd3ff('0x28')][_0xd3ff('0x2d')]));_0x3fb4f0[_0xd3ff('0x2c')]=_0x3fb4f0[_0xd3ff('0x2c')]['length']?_0x3fb4f0[_0xd3ff('0x2c')]:_0x3e2b70['model'];if(!_0x4decc6[_0xd3ff('0x28')][_0xd3ff('0x2e')]('nolimit')){_0x3fb4f0[_0xd3ff('0x2f')]=qs[_0xd3ff('0x2f')](_0x4decc6[_0xd3ff('0x28')][_0xd3ff('0x2f')]);_0x3fb4f0[_0xd3ff('0x18')]=qs[_0xd3ff('0x18')](_0x4decc6['query'][_0xd3ff('0x18')]);}_0x3fb4f0[_0xd3ff('0x30')]=qs[_0xd3ff('0x31')](_0x4decc6['query']['sort']);_0x3fb4f0['where']=qs[_0xd3ff('0x2a')](_[_0xd3ff('0x32')](_0x4decc6[_0xd3ff('0x28')],_0x3e2b70[_0xd3ff('0x2a')]),_0x78ea6e);if(_0x4decc6[_0xd3ff('0x28')]['filter']){_0x3fb4f0[_0xd3ff('0x33')]=_['merge'](_0x3fb4f0['where'],{'$or':_['map'](_0x78ea6e,function(_0x229a85){if(_0x229a85['type']!==_0xd3ff('0x34')){var _0x2ae76b={};_0x2ae76b[_0x229a85[_0xd3ff('0x1f')]]={'$like':'%'+_0x4decc6['query'][_0xd3ff('0x35')]+'%'};return _0x2ae76b;}})});}_0x3fb4f0=_[_0xd3ff('0x36')]({},_0x3fb4f0,_0x4decc6[_0xd3ff('0x37')]);var _0x1a68f7={'where':_0x3fb4f0[_0xd3ff('0x33')]};return db[_0xd3ff('0x23')][_0xd3ff('0x17')](_0x1a68f7)[_0xd3ff('0x1c')](function(_0x2c6c5f){_0x1a4d92[_0xd3ff('0x17')]=_0x2c6c5f;if(_0x4decc6[_0xd3ff('0x28')][_0xd3ff('0x38')]){_0x3fb4f0[_0xd3ff('0x39')]=[{'all':!![]}];}return db[_0xd3ff('0x23')]['findAll'](_0x3fb4f0);})[_0xd3ff('0x1c')](function(_0xf6757d){_0x1a4d92['rows']=_0xf6757d;return _0x1a4d92;})[_0xd3ff('0x1c')](respondWithFilteredResult(_0x24c5f8,_0x3fb4f0))[_0xd3ff('0x3a')](handleError(_0x24c5f8,null));};exports[_0xd3ff('0x3b')]=function(_0xa9281f,_0x4c34b0){var _0x28e605={'raw':!![],'where':{'id':_0xa9281f[_0xd3ff('0x3c')]['id']}},_0x187fd2={};_0x187fd2[_0xd3ff('0x27')]=_['keys'](db[_0xd3ff('0x23')]['rawAttributes']);_0x187fd2['query']=_[_0xd3ff('0x29')](_0xa9281f[_0xd3ff('0x28')]);_0x187fd2[_0xd3ff('0x2a')]=_[_0xd3ff('0x2b')](_0x187fd2[_0xd3ff('0x27')],_0x187fd2[_0xd3ff('0x28')]);_0x28e605['attributes']=_[_0xd3ff('0x2b')](_0x187fd2['model'],qs[_0xd3ff('0x2d')](_0xa9281f[_0xd3ff('0x28')][_0xd3ff('0x2d')]));_0x28e605[_0xd3ff('0x2c')]=_0x28e605[_0xd3ff('0x2c')][_0xd3ff('0x3d')]?_0x28e605[_0xd3ff('0x2c')]:_0x187fd2[_0xd3ff('0x27')];if(_0xa9281f[_0xd3ff('0x28')][_0xd3ff('0x38')]){_0x28e605[_0xd3ff('0x39')]=[{'all':!![]}];}_0x28e605=_['merge']({},_0x28e605,_0xa9281f['options']);return db[_0xd3ff('0x23')]['find'](_0x28e605)[_0xd3ff('0x1c')](handleEntityNotFound(_0x4c34b0,null))[_0xd3ff('0x1c')](respondWithResult(_0x4c34b0,null))[_0xd3ff('0x3a')](handleError(_0x4c34b0,null));};exports[_0xd3ff('0x1b')]=function(_0xbe1225,_0x331f62){if(_0xbe1225[_0xd3ff('0x3e')]['id']){delete _0xbe1225['body']['id'];}return db[_0xd3ff('0x23')][_0xd3ff('0x3f')]({'where':{'id':_0xbe1225['params']['id']}})[_0xd3ff('0x1c')](handleEntityNotFound(_0x331f62,null))[_0xd3ff('0x1c')](saveUpdates(_0xbe1225[_0xd3ff('0x3e')],null))[_0xd3ff('0x1c')](respondWithResult(_0x331f62,null))[_0xd3ff('0x3a')](handleError(_0x331f62,null));};exports[_0xd3ff('0x40')]=function(_0x5af0c0,_0x37a097){return db['CmHopperBlack'][_0xd3ff('0x3f')]({'where':{'id':_0x5af0c0[_0xd3ff('0x3c')]['id']}})[_0xd3ff('0x1c')](handleEntityNotFound(_0x37a097,null))[_0xd3ff('0x1c')](removeEntity(_0x37a097,null))['catch'](handleError(_0x37a097,null));};exports[_0xd3ff('0x41')]=function(_0x25e59a,_0xf8ab0b){return db['CmHopperBlack'][_0xd3ff('0x41')]()['then'](respondWithResult(_0xf8ab0b,null))[_0xd3ff('0x3a')](handleError(_0xf8ab0b,null));};
\ No newline at end of file
index d56d704..f21038b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1192=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define','CmHopperBlack','cm_hopper_black'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1192,0x150));var _0x2119=function(_0x308374,_0x550e85){_0x308374=_0x308374-0x0;var _0x1f71e0=_0x1192[_0x308374];return _0x1f71e0;};'use strict';var _=require(_0x2119('0x0'));var util=require(_0x2119('0x1'));var logger=require(_0x2119('0x2'))(_0x2119('0x3'));var moment=require(_0x2119('0x4'));var BPromise=require(_0x2119('0x5'));var rp=require(_0x2119('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2119('0x7'));var attributes=require('./cmHopperBlack.attributes');module[_0x2119('0x8')]=function(_0x3ca73d,_0x5afafb){return _0x3ca73d[_0x2119('0x9')](_0x2119('0xa'),attributes,{'tableName':_0x2119('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2df3=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','cm_hopper_black'];(function(_0x2518e1,_0x123cd1){var _0x3e41a0=function(_0x30262a){while(--_0x30262a){_0x2518e1['push'](_0x2518e1['shift']());}};_0x3e41a0(++_0x123cd1);}(_0x2df3,0x1d4));var _0x32df=function(_0x379193,_0x1715c6){_0x379193=_0x379193-0x0;var _0x37cc6b=_0x2df3[_0x379193];return _0x37cc6b;};'use strict';var _=require('lodash');var util=require(_0x32df('0x0'));var logger=require(_0x32df('0x1'))(_0x32df('0x2'));var moment=require(_0x32df('0x3'));var BPromise=require(_0x32df('0x4'));var rp=require(_0x32df('0x5'));var fs=require('fs');var path=require(_0x32df('0x6'));var rimraf=require(_0x32df('0x7'));var config=require(_0x32df('0x8'));var attributes=require('./cmHopperBlack.attributes');module[_0x32df('0x9')]=function(_0x2154d3,_0xe67279){return _0x2154d3[_0x32df('0xa')]('CmHopperBlack',attributes,{'tableName':_0x32df('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 310e6db..90dc266 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78ba=['util','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperBlack,\x20%s,\x20%s','message','result','catch','GetCmHopperBlack','options','raw','where','attributes','limit','include','map','model','then','CmHopperBlack','update','body','UpdateCmHopperBlack','DestroyCmHopperBlack','destroy','lodash'];(function(_0x1b5838,_0x25ec5b){var _0x213065=function(_0xde01bf){while(--_0xde01bf){_0x1b5838['push'](_0x1b5838['shift']());}};_0x213065(++_0x25ec5b);}(_0x78ba,0x1a1));var _0xa78b=function(_0x53390f,_0x510ac7){_0x53390f=_0x53390f-0x0;var _0xb73524=_0x78ba[_0x53390f];return _0xb73524;};'use strict';var _=require(_0xa78b('0x0'));var util=require(_0xa78b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa78b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa78b('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa78b('0x4'))(_0xa78b('0x5'));var config=require(_0xa78b('0x6'));var jayson=require(_0xa78b('0x7'));var client=jayson[_0xa78b('0x8')][_0xa78b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x140cff,_0x270341,_0x1b4672){return new BPromise(function(_0x3aa0c9,_0x4bb48a){return client[_0xa78b('0xa')](_0x140cff,_0x1b4672)['then'](function(_0x5e2762){logger[_0xa78b('0xb')]('CmHopperBlack,\x20%s,\x20%s',_0x270341,_0xa78b('0xc'));logger[_0xa78b('0xd')](_0xa78b('0xe'),_0x270341,_0xa78b('0xc'),JSON[_0xa78b('0xf')](_0x5e2762));if(_0x5e2762[_0xa78b('0x10')]){if(_0x5e2762[_0xa78b('0x10')][_0xa78b('0x11')]===0x1f4){logger[_0xa78b('0x10')](_0xa78b('0x12'),_0x270341,_0x5e2762[_0xa78b('0x10')]['message']);return _0x4bb48a(_0x5e2762[_0xa78b('0x10')][_0xa78b('0x13')]);}logger[_0xa78b('0x10')](_0xa78b('0x12'),_0x270341,_0x5e2762[_0xa78b('0x10')][_0xa78b('0x13')]);return _0x3aa0c9(_0x5e2762[_0xa78b('0x10')][_0xa78b('0x13')]);}else{logger[_0xa78b('0xb')]('CmHopperBlack,\x20%s,\x20%s',_0x270341,_0xa78b('0xc'));_0x3aa0c9(_0x5e2762[_0xa78b('0x14')][_0xa78b('0x13')]);}})[_0xa78b('0x15')](function(_0x441b7c){logger['error'](_0xa78b('0x12'),_0x270341,_0x441b7c);_0x4bb48a(_0x441b7c);});});}exports[_0xa78b('0x16')]=function(_0x160d7b){var _0x2539c4=this;return new Promise(function(_0x6f79b0,_0x54a215){return db['CmHopperBlack']['findAll']({'raw':_0x160d7b[_0xa78b('0x17')]?_0x160d7b[_0xa78b('0x17')][_0xa78b('0x18')]===undefined?!![]:![]:!![],'where':_0x160d7b[_0xa78b('0x17')]?_0x160d7b['options'][_0xa78b('0x19')]||null:null,'attributes':_0x160d7b[_0xa78b('0x17')]?_0x160d7b[_0xa78b('0x17')][_0xa78b('0x1a')]||null:null,'limit':_0x160d7b[_0xa78b('0x17')]?_0x160d7b[_0xa78b('0x17')][_0xa78b('0x1b')]||null:null,'include':_0x160d7b[_0xa78b('0x17')]?_0x160d7b[_0xa78b('0x17')][_0xa78b('0x1c')]?_[_0xa78b('0x1d')](_0x160d7b[_0xa78b('0x17')][_0xa78b('0x1c')],function(_0x484d33){return{'model':db[_0x484d33['model']],'as':_0x484d33['as'],'attributes':_0x484d33[_0xa78b('0x1a')],'include':_0x484d33['include']?_[_0xa78b('0x1d')](_0x484d33[_0xa78b('0x1c')],function(_0x4ee825){return{'model':db[_0x4ee825[_0xa78b('0x1e')]],'as':_0x4ee825['as'],'attributes':_0x4ee825[_0xa78b('0x1a')],'include':_0x4ee825[_0xa78b('0x1c')]?_[_0xa78b('0x1d')](_0x4ee825[_0xa78b('0x1c')],function(_0x26aea5){return{'model':db[_0x26aea5[_0xa78b('0x1e')]],'as':_0x26aea5['as'],'attributes':_0x26aea5['attributes']};}):[]};}):[]};}):[]:[]})[_0xa78b('0x1f')](function(_0xd88470){logger[_0xa78b('0xb')]('GetCmHopperBlack',_0x160d7b);logger[_0xa78b('0xd')](_0xa78b('0x16'),_0x160d7b,JSON['stringify'](_0xd88470));_0x6f79b0(_0xd88470);})[_0xa78b('0x15')](function(_0x2a83e4){logger['error'](_0xa78b('0x16'),_0x2a83e4['message'],_0x160d7b);_0x54a215(_0x2539c4[_0xa78b('0x10')](0x1f4,_0x2a83e4[_0xa78b('0x13')]));});});};exports['UpdateCmHopperBlack']=function(_0x408149){var _0x12841a=this;return new Promise(function(_0x36634e,_0xfe49b8){return db[_0xa78b('0x20')][_0xa78b('0x21')](_0x408149[_0xa78b('0x22')],{'raw':_0x408149[_0xa78b('0x17')]?_0x408149[_0xa78b('0x17')][_0xa78b('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x408149[_0xa78b('0x17')]?_0x408149[_0xa78b('0x17')][_0xa78b('0x19')]||null:null,'attributes':_0x408149[_0xa78b('0x17')]?_0x408149['options'][_0xa78b('0x1a')]||null:null,'limit':_0x408149[_0xa78b('0x17')]?_0x408149[_0xa78b('0x17')][_0xa78b('0x1b')]||null:null})[_0xa78b('0x1f')](function(_0xa9d364){logger['info'](_0xa78b('0x23'),_0x408149);logger[_0xa78b('0xd')]('UpdateCmHopperBlack',_0x408149,JSON[_0xa78b('0xf')](_0xa9d364));_0x36634e(_0xa9d364);})[_0xa78b('0x15')](function(_0x3b1569){logger['error'](_0xa78b('0x23'),_0x3b1569[_0xa78b('0x13')],_0x408149);_0xfe49b8(_0x12841a[_0xa78b('0x10')](0x1f4,_0x3b1569['message']));});});};exports[_0xa78b('0x24')]=function(_0x13db08){var _0x54f245=this;return new Promise(function(_0x45924d,_0x7451d2){return db[_0xa78b('0x20')][_0xa78b('0x25')]({'where':_0x13db08[_0xa78b('0x17')]?_0x13db08[_0xa78b('0x17')][_0xa78b('0x19')]||null:null})[_0xa78b('0x1f')](function(_0x476383){logger['info'](_0xa78b('0x24'),_0x13db08);logger[_0xa78b('0xd')]('DestroyCmHopperBlack',_0x13db08,JSON[_0xa78b('0xf')](_0x476383));_0x45924d(_0x476383);})[_0xa78b('0x15')](function(_0x10ad66){logger[_0xa78b('0x10')](_0xa78b('0x24'),_0x10ad66['message'],_0x13db08);_0x7451d2(_0x54f245[_0xa78b('0x10')](0x1f4,_0x10ad66[_0xa78b('0x13')]));});});};
\ No newline at end of file
+var _0x661e=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','request\x20sent','stringify','code','error','message','CmHopperBlack,\x20%s,\x20%s','catch','CmHopperBlack','options','raw','attributes','include','model','GetCmHopperBlack','debug','UpdateCmHopperBlack','update','where','limit','DestroyCmHopperBlack','destroy','lodash','util','bluebird','randomstring','ioredis'];(function(_0x3a38dc,_0x2b3de7){var _0x36b6a2=function(_0x1c29c5){while(--_0x1c29c5){_0x3a38dc['push'](_0x3a38dc['shift']());}};_0x36b6a2(++_0x2b3de7);}(_0x661e,0x87));var _0xe661=function(_0x17e07a,_0x18ea25){_0x17e07a=_0x17e07a-0x0;var _0x4746e5=_0x661e[_0x17e07a];return _0x4746e5;};'use strict';var _=require(_0xe661('0x0'));var util=require(_0xe661('0x1'));var moment=require('moment');var BPromise=require(_0xe661('0x2'));var rs=require(_0xe661('0x3'));var fs=require('fs');var Redis=require(_0xe661('0x4'));var db=require(_0xe661('0x5'))['db'];var utils=require(_0xe661('0x6'));var logger=require(_0xe661('0x7'))(_0xe661('0x8'));var config=require(_0xe661('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xe661('0xa')][_0xe661('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x17ef44,_0x2d5cc5,_0x5d85cd){return new BPromise(function(_0x5d96d5,_0x3d7c42){return client['request'](_0x17ef44,_0x5d85cd)[_0xe661('0xc')](function(_0x3a4958){logger[_0xe661('0xd')]('CmHopperBlack,\x20%s,\x20%s',_0x2d5cc5,_0xe661('0xe'));logger['debug']('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x2d5cc5,'request\x20sent',JSON[_0xe661('0xf')](_0x3a4958));if(_0x3a4958['error']){if(_0x3a4958['error'][_0xe661('0x10')]===0x1f4){logger[_0xe661('0x11')]('CmHopperBlack,\x20%s,\x20%s',_0x2d5cc5,_0x3a4958['error'][_0xe661('0x12')]);return _0x3d7c42(_0x3a4958[_0xe661('0x11')][_0xe661('0x12')]);}logger[_0xe661('0x11')]('CmHopperBlack,\x20%s,\x20%s',_0x2d5cc5,_0x3a4958[_0xe661('0x11')][_0xe661('0x12')]);return _0x5d96d5(_0x3a4958[_0xe661('0x11')][_0xe661('0x12')]);}else{logger[_0xe661('0xd')](_0xe661('0x13'),_0x2d5cc5,_0xe661('0xe'));_0x5d96d5(_0x3a4958['result']['message']);}})[_0xe661('0x14')](function(_0x360e2f){logger[_0xe661('0x11')]('CmHopperBlack,\x20%s,\x20%s',_0x2d5cc5,_0x360e2f);_0x3d7c42(_0x360e2f);});});}exports['GetCmHopperBlack']=function(_0x2f26e8){var _0x5990dc=this;return new Promise(function(_0xd3ef01,_0x22c628){return db[_0xe661('0x15')]['findAll']({'raw':_0x2f26e8[_0xe661('0x16')]?_0x2f26e8[_0xe661('0x16')][_0xe661('0x17')]===undefined?!![]:![]:!![],'where':_0x2f26e8[_0xe661('0x16')]?_0x2f26e8[_0xe661('0x16')]['where']||null:null,'attributes':_0x2f26e8[_0xe661('0x16')]?_0x2f26e8[_0xe661('0x16')][_0xe661('0x18')]||null:null,'limit':_0x2f26e8['options']?_0x2f26e8[_0xe661('0x16')]['limit']||null:null,'include':_0x2f26e8[_0xe661('0x16')]?_0x2f26e8[_0xe661('0x16')][_0xe661('0x19')]?_['map'](_0x2f26e8['options'][_0xe661('0x19')],function(_0x4b76f1){return{'model':db[_0x4b76f1[_0xe661('0x1a')]],'as':_0x4b76f1['as'],'attributes':_0x4b76f1[_0xe661('0x18')],'include':_0x4b76f1['include']?_['map'](_0x4b76f1[_0xe661('0x19')],function(_0x9873c9){return{'model':db[_0x9873c9['model']],'as':_0x9873c9['as'],'attributes':_0x9873c9['attributes'],'include':_0x9873c9['include']?_['map'](_0x9873c9[_0xe661('0x19')],function(_0x31553d){return{'model':db[_0x31553d['model']],'as':_0x31553d['as'],'attributes':_0x31553d[_0xe661('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1b98cd){logger[_0xe661('0xd')](_0xe661('0x1b'),_0x2f26e8);logger[_0xe661('0x1c')]('GetCmHopperBlack',_0x2f26e8,JSON[_0xe661('0xf')](_0x1b98cd));_0xd3ef01(_0x1b98cd);})['catch'](function(_0x24e6b6){logger['error']('GetCmHopperBlack',_0x24e6b6[_0xe661('0x12')],_0x2f26e8);_0x22c628(_0x5990dc[_0xe661('0x11')](0x1f4,_0x24e6b6[_0xe661('0x12')]));});});};exports[_0xe661('0x1d')]=function(_0x31ca21){var _0x3321f2=this;return new Promise(function(_0x44fb43,_0x1f892d){return db['CmHopperBlack'][_0xe661('0x1e')](_0x31ca21['body'],{'raw':_0x31ca21['options']?_0x31ca21[_0xe661('0x16')][_0xe661('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x31ca21[_0xe661('0x16')]?_0x31ca21[_0xe661('0x16')][_0xe661('0x1f')]||null:null,'attributes':_0x31ca21[_0xe661('0x16')]?_0x31ca21[_0xe661('0x16')][_0xe661('0x18')]||null:null,'limit':_0x31ca21['options']?_0x31ca21[_0xe661('0x16')][_0xe661('0x20')]||null:null})[_0xe661('0xc')](function(_0x40704f){logger[_0xe661('0xd')](_0xe661('0x1d'),_0x31ca21);logger[_0xe661('0x1c')](_0xe661('0x1d'),_0x31ca21,JSON[_0xe661('0xf')](_0x40704f));_0x44fb43(_0x40704f);})['catch'](function(_0x2b66f3){logger['error']('UpdateCmHopperBlack',_0x2b66f3[_0xe661('0x12')],_0x31ca21);_0x1f892d(_0x3321f2[_0xe661('0x11')](0x1f4,_0x2b66f3[_0xe661('0x12')]));});});};exports[_0xe661('0x21')]=function(_0x460cc7){var _0x203971=this;return new Promise(function(_0xcceb70,_0x544e2d){return db[_0xe661('0x15')][_0xe661('0x22')]({'where':_0x460cc7['options']?_0x460cc7[_0xe661('0x16')]['where']||null:null})[_0xe661('0xc')](function(_0x4dcc74){logger[_0xe661('0xd')]('DestroyCmHopperBlack',_0x460cc7);logger[_0xe661('0x1c')](_0xe661('0x21'),_0x460cc7,JSON[_0xe661('0xf')](_0x4dcc74));_0xcceb70(_0x4dcc74);})[_0xe661('0x14')](function(_0x40782d){logger['error'](_0xe661('0x21'),_0x40782d[_0xe661('0x12')],_0x460cc7);_0x544e2d(_0x203971[_0xe661('0x11')](0x1f4,_0x40782d['message']));});});};
\ No newline at end of file
index 14ac30c..7b0cdb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['../../components/auth/service','../../components/interaction/service','./cmHopperBlack.controller','get','isAuthenticated','index','/describe','describe','put','/:id','delete','exports','multer','express','Router'];(function(_0x1992ec,_0x2c9b60){var _0x25dfcf=function(_0x509127){while(--_0x509127){_0x1992ec['push'](_0x1992ec['shift']());}};_0x25dfcf(++_0x2c9b60);}(_0x2675,0x75));var _0x5267=function(_0x3560b1,_0x41b664){_0x3560b1=_0x3560b1-0x0;var _0x46996a=_0x2675[_0x3560b1];return _0x46996a;};'use strict';var multer=require(_0x5267('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5267('0x1'));var router=express[_0x5267('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x5267('0x3'));var interaction=require(_0x5267('0x4'));var config=require('../../config/environment');var controller=require(_0x5267('0x5'));router[_0x5267('0x6')]('/',auth[_0x5267('0x7')](),controller[_0x5267('0x8')]);router[_0x5267('0x6')](_0x5267('0x9'),auth['isAuthenticated'](),controller[_0x5267('0xa')]);router[_0x5267('0x6')]('/:id',auth[_0x5267('0x7')](),controller['show']);router[_0x5267('0xb')](_0x5267('0xc'),auth[_0x5267('0x7')](),controller['update']);router[_0x5267('0xd')]('/:id',auth[_0x5267('0x7')](),controller['destroy']);module[_0x5267('0xe')]=router;
\ No newline at end of file
+var _0x5162=['/:id','show','update','exports','multer','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','/describe','isAuthenticated','describe'];(function(_0x4df05a,_0x26f9cf){var _0x39e393=function(_0x11db86){while(--_0x11db86){_0x4df05a['push'](_0x4df05a['shift']());}};_0x39e393(++_0x26f9cf);}(_0x5162,0x103));var _0x2516=function(_0x1306e9,_0x4fd1ce){_0x1306e9=_0x1306e9-0x0;var _0x15eafb=_0x5162[_0x1306e9];return _0x15eafb;};'use strict';var multer=require(_0x2516('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2516('0x1')]();var fs_extra=require(_0x2516('0x2'));var auth=require(_0x2516('0x3'));var interaction=require(_0x2516('0x4'));var config=require(_0x2516('0x5'));var controller=require(_0x2516('0x6'));router[_0x2516('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x2516('0x8'),auth[_0x2516('0x9')](),controller[_0x2516('0xa')]);router[_0x2516('0x7')](_0x2516('0xb'),auth[_0x2516('0x9')](),controller[_0x2516('0xc')]);router['put'](_0x2516('0xb'),auth[_0x2516('0x9')](),controller[_0x2516('0xd')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x2516('0xe')]=router;
\ No newline at end of file
index d6db345..74c7a26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49c0=['diff','BOOLEAN','sequelize','moment','exports','DATE','INTEGER','STRING','endtime','setDataValue','followuptime'];(function(_0x296c48,_0x26571f){var _0x46de16=function(_0x2b2335){while(--_0x2b2335){_0x296c48['push'](_0x296c48['shift']());}};_0x46de16(++_0x26571f);}(_0x49c0,0x86));var _0x049c=function(_0x140243,_0x172c22){_0x140243=_0x140243-0x0;var _0x2731ba=_0x49c0[_0x140243];return _0x2731ba;};'use strict';var Sequelize=require(_0x049c('0x0'));var moment=require(_0x049c('0x1'));module[_0x049c('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x049c('0x3')]},'countbusyretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x049c('0x5')]},'originatecalleridname':{'type':Sequelize[_0x049c('0x5')]},'calleridnum':{'type':Sequelize[_0x049c('0x5')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x049c('0x3')]},'responsetime':{'type':Sequelize[_0x049c('0x3')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x049c('0x5')]},'campaign':{'type':Sequelize[_0x049c('0x5')]},'campaigntype':{'type':Sequelize[_0x049c('0x5')]},'membername':{'type':Sequelize[_0x049c('0x5')]},'reason':{'type':Sequelize[_0x049c('0x5')]},'disposition':{'type':Sequelize[_0x049c('0x5')]},'secondDisposition':{'type':Sequelize[_0x049c('0x5')]},'thirdDisposition':{'type':Sequelize[_0x049c('0x5')]},'dispositionat':{'type':Sequelize[_0x049c('0x3')],'set':function(_0x332053){var _0x56f4fc=this['getDataValue'](_0x049c('0x6'));if(_0x56f4fc&&_0x332053){this[_0x049c('0x7')](_0x049c('0x8'),moment(_0x332053)[_0x049c('0x9')](moment(_0x56f4fc),'seconds'));}return this[_0x049c('0x7')]('dispositionat',_0x332053);}},'amd':{'type':Sequelize[_0x049c('0xa')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x049c('0x3')]},'callback':{'type':Sequelize[_0x049c('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x049c('0x5')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x049c('0x3')]},'deleted':{'type':Sequelize[_0x049c('0x5')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x049c('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x049c('0x3')]},'countnosuchnumberretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x049c('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xda0b=['DATE','getDataValue','diff','dispositionat','BOOLEAN','sequelize','moment','exports','INTEGER','STRING'];(function(_0x66adca,_0x2be38a){var _0x504aec=function(_0x233b2e){while(--_0x233b2e){_0x66adca['push'](_0x66adca['shift']());}};_0x504aec(++_0x2be38a);}(_0xda0b,0x1db));var _0xbda0=function(_0x448c1a,_0x3cd188){_0x448c1a=_0x448c1a-0x0;var _0x4e88ff=_0xda0b[_0x448c1a];return _0x4e88ff;};'use strict';var Sequelize=require(_0xbda0('0x0'));var moment=require(_0xbda0('0x1'));module[_0xbda0('0x2')]={'state':{'type':Sequelize[_0xbda0('0x3')](0x2)},'statedesc':{'type':Sequelize[_0xbda0('0x4')]},'scheduledat':{'type':Sequelize[_0xbda0('0x5')]},'countbusyretry':{'type':Sequelize[_0xbda0('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xbda0('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xbda0('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xbda0('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xbda0('0x4')]},'originatecalleridnum':{'type':Sequelize[_0xbda0('0x4')]},'originatecalleridname':{'type':Sequelize[_0xbda0('0x4')]},'calleridnum':{'type':Sequelize[_0xbda0('0x4')]},'calleridname':{'type':Sequelize[_0xbda0('0x4')]},'starttime':{'type':Sequelize[_0xbda0('0x5')]},'responsetime':{'type':Sequelize[_0xbda0('0x5')]},'answertime':{'type':Sequelize[_0xbda0('0x5')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xbda0('0x5')]},'ringtime':{'type':Sequelize[_0xbda0('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xbda0('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xbda0('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xbda0('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xbda0('0x4')]},'campaign':{'type':Sequelize[_0xbda0('0x4')]},'campaigntype':{'type':Sequelize[_0xbda0('0x4')]},'membername':{'type':Sequelize[_0xbda0('0x4')]},'reason':{'type':Sequelize[_0xbda0('0x4')]},'disposition':{'type':Sequelize[_0xbda0('0x4')]},'secondDisposition':{'type':Sequelize[_0xbda0('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x2853a0){var _0x5f4bcf=this[_0xbda0('0x6')]('endtime');if(_0x5f4bcf&&_0x2853a0){this['setDataValue']('followuptime',moment(_0x2853a0)[_0xbda0('0x7')](moment(_0x5f4bcf),'seconds'));}return this['setDataValue'](_0xbda0('0x8'),_0x2853a0);}},'amd':{'type':Sequelize[_0xbda0('0x9')],'defaultValue':![]},'fax':{'type':Sequelize[_0xbda0('0x9')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xbda0('0x9')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xbda0('0x9')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xbda0('0x5')]},'callback':{'type':Sequelize[_0xbda0('0x9')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xbda0('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0xbda0('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xbda0('0x5')]},'recallme':{'type':Sequelize[_0xbda0('0x9')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xbda0('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0xbda0('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xbda0('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xbda0('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index b11a699..79f9c81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','from','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','VoiceQueueId\x20=\x20?','state\x20=\x204','group','Campaign','ANY_VALUE(calleridnum)','ANY_VALUE(CampaignId)','CampaignId','cm_hopper_final','CampaignId\x20=\x20?','checkContactHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','options','CmHopperFinal','includeAll','include','findAll','catch','params','find','describe','body','uniqueid','sequelize','`state`\x20=\x200,\x201,\x20null','noSuchContacts','literal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','COUNT','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','noAnswerContacts','busyContacts','congestionContacts','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0x814b,0x1a2));var _0xb814=function(_0x554292,_0x82948a){_0x554292=_0x554292-0x0;var _0x3dd555=_0x814b[_0x554292];return _0x3dd555;};'use strict';var emlformat=require(_0xb814('0x0'));var rimraf=require(_0xb814('0x1'));var zipdir=require(_0xb814('0x2'));var jsonpatch=require(_0xb814('0x3'));var rp=require(_0xb814('0x4'));var moment=require(_0xb814('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb814('0x6'));var util=require(_0xb814('0x7'));var path=require(_0xb814('0x8'));var sox=require(_0xb814('0x9'));var csv=require(_0xb814('0xa'));var ejs=require(_0xb814('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb814('0xc'));var squel=require(_0xb814('0xd'));var crypto=require('crypto');var jsforce=require(_0xb814('0xe'));var deskjs=require(_0xb814('0xf'));var toCsv=require(_0xb814('0xa'));var querystring=require(_0xb814('0x10'));var Papa=require(_0xb814('0x11'));var Redis=require(_0xb814('0x12'));var authService=require(_0xb814('0x13'));var qs=require(_0xb814('0x14'));var as=require(_0xb814('0x15'));var hardwareService=require(_0xb814('0x16'));var logger=require(_0xb814('0x17'))('api');var utils=require(_0xb814('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xb814('0x19'));var db=require(_0xb814('0x1a'))['db'];function respondWithStatusCode(_0x35b10d,_0x2cc46b){_0x2cc46b=_0x2cc46b||0xcc;return function(_0x2ce718){if(_0x2ce718){return _0x35b10d[_0xb814('0x1b')](_0x2cc46b);}return _0x35b10d[_0xb814('0x1c')](_0x2cc46b)[_0xb814('0x1d')]();};}function respondWithResult(_0xa0a2e5,_0x2ab627){_0x2ab627=_0x2ab627||0xc8;return function(_0x3f4881){if(_0x3f4881){return _0xa0a2e5[_0xb814('0x1c')](_0x2ab627)[_0xb814('0x1e')](_0x3f4881);}};}function respondWithFilteredResult(_0x39bfcf,_0x303aca){return function(_0x3a71d6){if(_0x3a71d6){var _0x45e0d0=typeof _0x303aca[_0xb814('0x1f')]===_0xb814('0x20')&&typeof _0x303aca[_0xb814('0x21')]===_0xb814('0x20');var _0x48c9df=_0x3a71d6[_0xb814('0x22')];var _0x55ba16=_0x45e0d0?0x0:_0x303aca[_0xb814('0x1f')];var _0xfac75b=_0x45e0d0?_0x3a71d6['count']:_0x303aca['offset']+_0x303aca['limit'];var _0x399b43;if(_0xfac75b>=_0x48c9df){_0xfac75b=_0x48c9df;_0x399b43=0xc8;}else{_0x399b43=0xce;}_0x39bfcf['status'](_0x399b43);return _0x39bfcf['set'](_0xb814('0x23'),_0x55ba16+'-'+_0xfac75b+'/'+_0x48c9df)[_0xb814('0x1e')](_0x3a71d6);}return null;};}function patchUpdates(_0x25b6b6){return function(_0x4e139e){try{jsonpatch[_0xb814('0x24')](_0x4e139e,_0x25b6b6,!![]);}catch(_0x531032){return BPromise[_0xb814('0x25')](_0x531032);}return _0x4e139e[_0xb814('0x26')]();};}function saveUpdates(_0x3b267e,_0x470e81){return function(_0x27352e){if(_0x27352e){return _0x27352e[_0xb814('0x27')](_0x3b267e)[_0xb814('0x28')](function(_0x594470){return _0x594470;});}return null;};}function removeEntity(_0x2ead86,_0x52b7a3){return function(_0x3f81d0){if(_0x3f81d0){return _0x3f81d0[_0xb814('0x29')]()[_0xb814('0x28')](function(){_0x2ead86[_0xb814('0x1c')](0xcc)[_0xb814('0x1d')]();});}};}function handleEntityNotFound(_0xb9e57d,_0x3d836c){return function(_0x5755ea){if(!_0x5755ea){_0xb9e57d[_0xb814('0x1b')](0x194);}return _0x5755ea;};}function handleError(_0xc0ef66,_0x1c2625){_0x1c2625=_0x1c2625||0x1f4;return function(_0x349394){logger[_0xb814('0x2a')](_0x349394[_0xb814('0x2b')]);if(_0x349394[_0xb814('0x2c')]){delete _0x349394[_0xb814('0x2c')];}_0xc0ef66['status'](_0x1c2625)[_0xb814('0x2d')](_0x349394);};}exports[_0xb814('0x2e')]=function(_0x52ed64,_0x9008b2){var _0x37d24d={},_0x530744={},_0x499f22={'count':0x0,'rows':[]};var _0x20577b=_[_0xb814('0x2f')](db['CmHopperFinal'][_0xb814('0x30')],function(_0x526610){return{'name':_0x526610[_0xb814('0x31')],'type':_0x526610['type']['key']};});_0x530744[_0xb814('0x32')]=_['map'](_0x20577b,_0xb814('0x2c'));_0x530744[_0xb814('0x33')]=_[_0xb814('0x34')](_0x52ed64['query']);_0x530744['filters']=_[_0xb814('0x35')](_0x530744[_0xb814('0x32')],_0x530744['query']);_0x37d24d[_0xb814('0x36')]=_[_0xb814('0x35')](_0x530744[_0xb814('0x32')],qs[_0xb814('0x37')](_0x52ed64[_0xb814('0x33')][_0xb814('0x37')]));_0x37d24d[_0xb814('0x36')]=_0x37d24d['attributes'][_0xb814('0x38')]?_0x37d24d[_0xb814('0x36')]:_0x530744[_0xb814('0x32')];if(!_0x52ed64[_0xb814('0x33')][_0xb814('0x39')]('nolimit')){_0x37d24d[_0xb814('0x21')]=qs['limit'](_0x52ed64[_0xb814('0x33')][_0xb814('0x21')]);_0x37d24d[_0xb814('0x1f')]=qs['offset'](_0x52ed64[_0xb814('0x33')][_0xb814('0x1f')]);}_0x37d24d['order']=qs[_0xb814('0x3a')](_0x52ed64[_0xb814('0x33')][_0xb814('0x3a')]);_0x37d24d[_0xb814('0x3b')]=qs[_0xb814('0x3c')](_[_0xb814('0x3d')](_0x52ed64['query'],_0x530744[_0xb814('0x3c')]),_0x20577b);if(_0x52ed64['query'][_0xb814('0x3e')]){_0x37d24d['where']=_[_0xb814('0x3f')](_0x37d24d['where'],{'$or':_[_0xb814('0x2f')](_0x20577b,function(_0x26675a){if(_0x26675a['type']!=='VIRTUAL'){var _0x5dd6bc={};_0x5dd6bc[_0x26675a['name']]={'$like':'%'+_0x52ed64[_0xb814('0x33')][_0xb814('0x3e')]+'%'};return _0x5dd6bc;}})});}_0x37d24d=_[_0xb814('0x3f')]({},_0x37d24d,_0x52ed64[_0xb814('0x40')]);var _0x51cdba={'where':_0x37d24d['where']};return db[_0xb814('0x41')]['count'](_0x51cdba)[_0xb814('0x28')](function(_0x1098eb){_0x499f22[_0xb814('0x22')]=_0x1098eb;if(_0x52ed64[_0xb814('0x33')][_0xb814('0x42')]){_0x37d24d[_0xb814('0x43')]=[{'all':!![]}];}return db[_0xb814('0x41')][_0xb814('0x44')](_0x37d24d);})[_0xb814('0x28')](function(_0x4b6ff8){_0x499f22['rows']=_0x4b6ff8;return _0x499f22;})['then'](respondWithFilteredResult(_0x9008b2,_0x37d24d))[_0xb814('0x45')](handleError(_0x9008b2,null));};exports['show']=function(_0x29416a,_0x580171){var _0x411723={'raw':!![],'where':{'id':_0x29416a[_0xb814('0x46')]['id']}},_0x44ff56={};_0x44ff56[_0xb814('0x32')]=_['keys'](db[_0xb814('0x41')][_0xb814('0x30')]);_0x44ff56[_0xb814('0x33')]=_[_0xb814('0x34')](_0x29416a[_0xb814('0x33')]);_0x44ff56[_0xb814('0x3c')]=_['intersection'](_0x44ff56[_0xb814('0x32')],_0x44ff56[_0xb814('0x33')]);_0x411723[_0xb814('0x36')]=_[_0xb814('0x35')](_0x44ff56[_0xb814('0x32')],qs[_0xb814('0x37')](_0x29416a[_0xb814('0x33')]['fields']));_0x411723['attributes']=_0x411723[_0xb814('0x36')][_0xb814('0x38')]?_0x411723[_0xb814('0x36')]:_0x44ff56[_0xb814('0x32')];if(_0x29416a[_0xb814('0x33')][_0xb814('0x42')]){_0x411723[_0xb814('0x43')]=[{'all':!![]}];}_0x411723=_[_0xb814('0x3f')]({},_0x411723,_0x29416a[_0xb814('0x40')]);return db[_0xb814('0x41')][_0xb814('0x47')](_0x411723)['then'](handleEntityNotFound(_0x580171,null))[_0xb814('0x28')](respondWithResult(_0x580171,null))[_0xb814('0x45')](handleError(_0x580171,null));};exports['describe']=function(_0x338e80,_0x55234d){return db[_0xb814('0x41')][_0xb814('0x48')]()[_0xb814('0x28')](respondWithResult(_0x55234d,null))[_0xb814('0x45')](handleError(_0x55234d,null));};exports[_0xb814('0x27')]=function(_0x4096d4,_0x2cc806){if(_0x4096d4[_0xb814('0x49')][_0xb814('0x4a')]){delete _0x4096d4[_0xb814('0x49')]['uniqueid'];}return db['CmHopperFinal'][_0xb814('0x47')]({'where':{'uniqueid':_0x4096d4[_0xb814('0x46')]['id']}})[_0xb814('0x28')](handleEntityNotFound(_0x2cc806,null))[_0xb814('0x28')](saveUpdates(_0x4096d4[_0xb814('0x49')],null))[_0xb814('0x28')](respondWithResult(_0x2cc806,null))[_0xb814('0x45')](handleError(_0x2cc806,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x26fd0b,_0x388324,_0xf27a6e){return db['CmHopperFinal'][_0xb814('0x44')]({'raw':![],'where':{'VoiceQueueId':_0x26fd0b['params']['id']},'attributes':[[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x4c')))),_0xb814('0x4d')],[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db['sequelize'][_0xb814('0x4e')](_0xb814('0x4f')))),'noAnswerContacts'],[db[_0xb814('0x4b')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')](_0xb814('0x50')))),'busyContacts'],[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x51')))),'congestionContacts'],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')](_0xb814('0x53')))),_0xb814('0x54')],[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x55')))),_0xb814('0x56')],[db['sequelize']['fn'](_0xb814('0x52'),db['sequelize']['fn']('IF',db['sequelize'][_0xb814('0x4e')]('`state`\x20=\x2022,\x201,\x20null'))),_0xb814('0x57')],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db['sequelize']['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x58')))),_0xb814('0x59')]]})[_0xb814('0x28')](handleEntityNotFound(_0x388324,null))[_0xb814('0x28')](respondWithResult(_0x388324,null))[_0xb814('0x45')](handleError(_0x388324,null));};exports[_0xb814('0x5a')]=function(_0x2e5f99,_0x113350,_0x46014f){return db['CmHopperFinal'][_0xb814('0x44')]({'raw':![],'where':{'CampaignId':_0x2e5f99[_0xb814('0x46')]['id']},'attributes':[[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x4c')))),'noSuchContacts'],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db['sequelize'][_0xb814('0x4e')]('`state`\x20=\x203,\x201,\x20null'))),_0xb814('0x5b')],[db['sequelize']['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')](_0xb814('0x50')))),_0xb814('0x5c')],[db[_0xb814('0x4b')]['fn']('COUNT',db[_0xb814('0x4b')]['fn']('IF',db['sequelize'][_0xb814('0x4e')](_0xb814('0x51')))),_0xb814('0x5d')],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db['sequelize'][_0xb814('0x4e')](_0xb814('0x53')))),'dropContacts'],[db[_0xb814('0x4b')]['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xb814('0x56')],[db['sequelize']['fn'](_0xb814('0x52'),db[_0xb814('0x4b')]['fn']('IF',db[_0xb814('0x4b')][_0xb814('0x4e')](_0xb814('0x5e')))),_0xb814('0x57')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xb814('0x4b')]['literal'](_0xb814('0x58')))),_0xb814('0x59')]]})[_0xb814('0x28')](handleEntityNotFound(_0x113350,null))['then'](respondWithResult(_0x113350,null))[_0xb814('0x45')](handleError(_0x113350,null));};exports[_0xb814('0x5f')]=function(_0xee204,_0x5aabbe,_0x30f717){return db[_0xb814('0x60')][_0xb814('0x47')]({'where':{'id':_0xee204[_0xb814('0x46')]['id']}})['then'](handleEntityNotFound(_0x5aabbe,null))['then'](function(_0x28eaf8){var _0x295488;if(_0x28eaf8){_0x295488=squel[_0xb814('0x61')]()[_0xb814('0x62')](_0xb814('0x63'))[_0xb814('0x64')]([_0xb814('0x65'),_0xb814('0x66'),_0xb814('0x67'),_0xb814('0x68'),_0xb814('0x69'),_0xb814('0x6a'),_0xb814('0x6b')],squel[_0xb814('0x6c')]()[_0xb814('0x6d')]('ANY_VALUE(calleridnum)',_0xb814('0x65'))[_0xb814('0x6d')](_0xb814('0x6e'),_0xb814('0x66'))[_0xb814('0x6d')](_0xb814('0x6f'),'ContactId')[_0xb814('0x6d')]('ANY_VALUE(ListId)',_0xb814('0x68'))[_0xb814('0x6d')](_0xb814('0x70'),_0xb814('0x69'))[_0xb814('0x6d')]('NOW()','createdAt')[_0xb814('0x6d')](_0xb814('0x6e'),_0xb814('0x6b'))[_0xb814('0x71')]('cm_hopper_final')[_0xb814('0x3b')]('VoiceQueueId\x20=\x20?',_0xee204[_0xb814('0x46')]['id'][_0xb814('0x72')]())['where']('state\x20=\x20?',_0xee204[_0xb814('0x49')]['state'][_0xb814('0x72')]())[_0xb814('0x3b')](_0xb814('0x73'))[_0xb814('0x3b')](_0xb814('0x74'),squel[_0xb814('0x6c')]()[_0xb814('0x6d')]('phone')[_0xb814('0x71')]('cm_hopper')[_0xb814('0x3b')]('VoiceQueueId\x20=\x20?',_0xee204[_0xb814('0x46')]['id'][_0xb814('0x72')]()))['where'](_0xb814('0x74'),squel['select']()[_0xb814('0x6d')](_0xb814('0x75'))['from']('cm_hopper_final')[_0xb814('0x3b')](_0xb814('0x76'),_0xee204[_0xb814('0x46')]['id'][_0xb814('0x72')]())[_0xb814('0x3b')](_0xb814('0x77')))[_0xb814('0x78')](_0xb814('0x67')))[_0xb814('0x72')]();return db[_0xb814('0x4b')]['query'](_0x295488);}return[];})['then'](respondWithResult(_0x5aabbe,null))['catch'](handleError(_0x5aabbe,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x52b6da,_0x45a202,_0x75a33){return db[_0xb814('0x79')]['find']({'where':{'id':_0x52b6da[_0xb814('0x46')]['id']}})[_0xb814('0x28')](handleEntityNotFound(_0x45a202,null))[_0xb814('0x28')](function(_0x26ce5b){var _0x161658;if(_0x26ce5b){_0x161658=squel[_0xb814('0x61')]()[_0xb814('0x62')](_0xb814('0x63'))['fromQuery']([_0xb814('0x65'),_0xb814('0x66'),_0xb814('0x67'),_0xb814('0x68'),'CampaignId',_0xb814('0x6a'),_0xb814('0x6b')],squel[_0xb814('0x6c')]()[_0xb814('0x6d')](_0xb814('0x7a'),'phone')['field'](_0xb814('0x6e'),'scheduledAt')[_0xb814('0x6d')](_0xb814('0x6f'),'ContactId')[_0xb814('0x6d')]('ANY_VALUE(ListId)',_0xb814('0x68'))['field'](_0xb814('0x7b'),_0xb814('0x7c'))[_0xb814('0x6d')](_0xb814('0x6e'),_0xb814('0x6a'))[_0xb814('0x6d')](_0xb814('0x6e'),'updatedAt')['from'](_0xb814('0x7d'))['where']('CampaignId\x20=\x20?',_0x52b6da[_0xb814('0x46')]['id'][_0xb814('0x72')]())[_0xb814('0x3b')]('state\x20=\x20?',_0x52b6da[_0xb814('0x49')]['state'][_0xb814('0x72')]())[_0xb814('0x3b')](_0xb814('0x73'))[_0xb814('0x3b')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xb814('0x6c')]()[_0xb814('0x6d')](_0xb814('0x65'))['from'](_0xb814('0x63'))[_0xb814('0x3b')](_0xb814('0x7e'),_0x52b6da['params']['id'][_0xb814('0x72')]()))[_0xb814('0x3b')](_0xb814('0x74'),squel[_0xb814('0x6c')]()[_0xb814('0x6d')](_0xb814('0x75'))[_0xb814('0x71')](_0xb814('0x7d'))[_0xb814('0x3b')](_0xb814('0x7e'),_0x52b6da[_0xb814('0x46')]['id'][_0xb814('0x72')]())[_0xb814('0x3b')]('state\x20=\x204'))['group'](_0xb814('0x67')))['toString']();return db[_0xb814('0x4b')][_0xb814('0x33')](_0x161658);}return[];})[_0xb814('0x28')](respondWithResult(_0x45a202,null))[_0xb814('0x45')](handleError(_0x45a202,null));};exports[_0xb814('0x7f')]=function(_0x2f1674,_0xf0610f,_0x5db5d0){return db['CmHopper'][_0xb814('0x80')]({'where':{'VoiceQueueId':_0x2f1674['body'][_0xb814('0x69')],'CampaignId':_0x2f1674[_0xb814('0x49')][_0xb814('0x7c')],'ContactId':_0x2f1674['body'][_0xb814('0x67')]}})[_0xb814('0x28')](handleEntityNotFound(_0xf0610f,null))[_0xb814('0x28')](function(_0x38c6da){if(_0x38c6da){return _0x38c6da;}return null;})[_0xb814('0x28')](respondWithResult(_0xf0610f,null))['catch'](handleError(_0xf0610f,null));};
\ No newline at end of file
+var _0x187d=['state\x20=\x20?','calleridnum\x20NOT\x20IN\x20(?)','select','from','cm_hopper','calleridnum','cm_hopper_final','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','insert','into','CampaignId','CampaignId\x20=\x20?','state','checkContactHopper','CmHopper','findOne','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','update','destroy','error','stack','name','index','map','CmHopperFinal','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','where','filter','merge','includeAll','include','findAll','then','rows','catch','show','params','fields','options','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','COUNT','sequelize','literal','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId\x20=\x20?','toString'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0x187d,0x93));var _0xd187=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0x187d[_0x2b5eae];return _0x5f3ac9;};'use strict';var emlformat=require(_0xd187('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd187('0x1'));var jsonpatch=require(_0xd187('0x2'));var rp=require(_0xd187('0x3'));var moment=require(_0xd187('0x4'));var BPromise=require(_0xd187('0x5'));var Mustache=require(_0xd187('0x6'));var util=require('util');var path=require(_0xd187('0x7'));var sox=require(_0xd187('0x8'));var csv=require('to-csv');var ejs=require(_0xd187('0x9'));var fs=require('fs');var fs_extra=require(_0xd187('0xa'));var _=require(_0xd187('0xb'));var squel=require(_0xd187('0xc'));var crypto=require(_0xd187('0xd'));var jsforce=require(_0xd187('0xe'));var deskjs=require(_0xd187('0xf'));var toCsv=require(_0xd187('0x10'));var querystring=require('querystring');var Papa=require(_0xd187('0x11'));var Redis=require(_0xd187('0x12'));var authService=require(_0xd187('0x13'));var qs=require(_0xd187('0x14'));var as=require(_0xd187('0x15'));var hardwareService=require(_0xd187('0x16'));var logger=require('../../config/logger')(_0xd187('0x17'));var utils=require(_0xd187('0x18'));var config=require(_0xd187('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xd187('0x1a'))['db'];function respondWithStatusCode(_0x4545cf,_0x32ba07){_0x32ba07=_0x32ba07||0xcc;return function(_0x59ee4a){if(_0x59ee4a){return _0x4545cf[_0xd187('0x1b')](_0x32ba07);}return _0x4545cf[_0xd187('0x1c')](_0x32ba07)[_0xd187('0x1d')]();};}function respondWithResult(_0x126d1a,_0x517b25){_0x517b25=_0x517b25||0xc8;return function(_0x39a927){if(_0x39a927){return _0x126d1a[_0xd187('0x1c')](_0x517b25)[_0xd187('0x1e')](_0x39a927);}};}function respondWithFilteredResult(_0x188cfe,_0x4c8f68){return function(_0x245d3e){if(_0x245d3e){var _0x52a208=typeof _0x4c8f68['offset']===_0xd187('0x1f')&&typeof _0x4c8f68['limit']==='undefined';var _0x207b36=_0x245d3e[_0xd187('0x20')];var _0x374fe0=_0x52a208?0x0:_0x4c8f68[_0xd187('0x21')];var _0x21df74=_0x52a208?_0x245d3e[_0xd187('0x20')]:_0x4c8f68[_0xd187('0x21')]+_0x4c8f68[_0xd187('0x22')];var _0x4f2f88;if(_0x21df74>=_0x207b36){_0x21df74=_0x207b36;_0x4f2f88=0xc8;}else{_0x4f2f88=0xce;}_0x188cfe[_0xd187('0x1c')](_0x4f2f88);return _0x188cfe[_0xd187('0x23')](_0xd187('0x24'),_0x374fe0+'-'+_0x21df74+'/'+_0x207b36)[_0xd187('0x1e')](_0x245d3e);}return null;};}function patchUpdates(_0x5204ee){return function(_0x2f7fb3){try{jsonpatch[_0xd187('0x25')](_0x2f7fb3,_0x5204ee,!![]);}catch(_0xc5bba5){return BPromise['reject'](_0xc5bba5);}return _0x2f7fb3['save']();};}function saveUpdates(_0x57cf1d,_0x435d94){return function(_0x33741d){if(_0x33741d){return _0x33741d[_0xd187('0x26')](_0x57cf1d)['then'](function(_0x2c07c8){return _0x2c07c8;});}return null;};}function removeEntity(_0x57186b,_0x145771){return function(_0x5a7a23){if(_0x5a7a23){return _0x5a7a23[_0xd187('0x27')]()['then'](function(){_0x57186b['status'](0xcc)[_0xd187('0x1d')]();});}};}function handleEntityNotFound(_0x4d992b,_0x12da33){return function(_0x598aa4){if(!_0x598aa4){_0x4d992b['sendStatus'](0x194);}return _0x598aa4;};}function handleError(_0x4eac6a,_0x848ddd){_0x848ddd=_0x848ddd||0x1f4;return function(_0xeff822){logger[_0xd187('0x28')](_0xeff822[_0xd187('0x29')]);if(_0xeff822['name']){delete _0xeff822[_0xd187('0x2a')];}_0x4eac6a[_0xd187('0x1c')](_0x848ddd)['send'](_0xeff822);};}exports[_0xd187('0x2b')]=function(_0x1c87ee,_0x34febe){var _0x4c50a5={},_0x15e2e8={},_0x56e292={'count':0x0,'rows':[]};var _0x263e31=_[_0xd187('0x2c')](db[_0xd187('0x2d')][_0xd187('0x2e')],function(_0x489f2e){return{'name':_0x489f2e[_0xd187('0x2f')],'type':_0x489f2e[_0xd187('0x30')]['key']};});_0x15e2e8['model']=_[_0xd187('0x2c')](_0x263e31,_0xd187('0x2a'));_0x15e2e8[_0xd187('0x31')]=_[_0xd187('0x32')](_0x1c87ee[_0xd187('0x31')]);_0x15e2e8[_0xd187('0x33')]=_[_0xd187('0x34')](_0x15e2e8[_0xd187('0x35')],_0x15e2e8['query']);_0x4c50a5[_0xd187('0x36')]=_[_0xd187('0x34')](_0x15e2e8[_0xd187('0x35')],qs['fields'](_0x1c87ee[_0xd187('0x31')]['fields']));_0x4c50a5[_0xd187('0x36')]=_0x4c50a5[_0xd187('0x36')][_0xd187('0x37')]?_0x4c50a5['attributes']:_0x15e2e8['model'];if(!_0x1c87ee[_0xd187('0x31')][_0xd187('0x38')]('nolimit')){_0x4c50a5[_0xd187('0x22')]=qs[_0xd187('0x22')](_0x1c87ee[_0xd187('0x31')]['limit']);_0x4c50a5['offset']=qs[_0xd187('0x21')](_0x1c87ee[_0xd187('0x31')]['offset']);}_0x4c50a5['order']=qs['sort'](_0x1c87ee[_0xd187('0x31')]['sort']);_0x4c50a5[_0xd187('0x39')]=qs[_0xd187('0x33')](_['pick'](_0x1c87ee[_0xd187('0x31')],_0x15e2e8['filters']),_0x263e31);if(_0x1c87ee[_0xd187('0x31')][_0xd187('0x3a')]){_0x4c50a5['where']=_[_0xd187('0x3b')](_0x4c50a5[_0xd187('0x39')],{'$or':_['map'](_0x263e31,function(_0x4399a5){if(_0x4399a5['type']!=='VIRTUAL'){var _0x26b06d={};_0x26b06d[_0x4399a5[_0xd187('0x2a')]]={'$like':'%'+_0x1c87ee[_0xd187('0x31')][_0xd187('0x3a')]+'%'};return _0x26b06d;}})});}_0x4c50a5=_[_0xd187('0x3b')]({},_0x4c50a5,_0x1c87ee['options']);var _0x8860c={'where':_0x4c50a5[_0xd187('0x39')]};return db[_0xd187('0x2d')]['count'](_0x8860c)['then'](function(_0x538c05){_0x56e292['count']=_0x538c05;if(_0x1c87ee[_0xd187('0x31')][_0xd187('0x3c')]){_0x4c50a5[_0xd187('0x3d')]=[{'all':!![]}];}return db[_0xd187('0x2d')][_0xd187('0x3e')](_0x4c50a5);})[_0xd187('0x3f')](function(_0x4699e1){_0x56e292[_0xd187('0x40')]=_0x4699e1;return _0x56e292;})['then'](respondWithFilteredResult(_0x34febe,_0x4c50a5))[_0xd187('0x41')](handleError(_0x34febe,null));};exports[_0xd187('0x42')]=function(_0x31d9d2,_0x51c7fc){var _0x21cbf6={'raw':!![],'where':{'id':_0x31d9d2[_0xd187('0x43')]['id']}},_0x48c100={};_0x48c100[_0xd187('0x35')]=_[_0xd187('0x32')](db[_0xd187('0x2d')][_0xd187('0x2e')]);_0x48c100['query']=_[_0xd187('0x32')](_0x31d9d2[_0xd187('0x31')]);_0x48c100[_0xd187('0x33')]=_[_0xd187('0x34')](_0x48c100['model'],_0x48c100[_0xd187('0x31')]);_0x21cbf6[_0xd187('0x36')]=_['intersection'](_0x48c100[_0xd187('0x35')],qs[_0xd187('0x44')](_0x31d9d2['query']['fields']));_0x21cbf6[_0xd187('0x36')]=_0x21cbf6[_0xd187('0x36')]['length']?_0x21cbf6['attributes']:_0x48c100['model'];if(_0x31d9d2[_0xd187('0x31')][_0xd187('0x3c')]){_0x21cbf6[_0xd187('0x3d')]=[{'all':!![]}];}_0x21cbf6=_[_0xd187('0x3b')]({},_0x21cbf6,_0x31d9d2[_0xd187('0x45')]);return db[_0xd187('0x2d')][_0xd187('0x46')](_0x21cbf6)['then'](handleEntityNotFound(_0x51c7fc,null))[_0xd187('0x3f')](respondWithResult(_0x51c7fc,null))[_0xd187('0x41')](handleError(_0x51c7fc,null));};exports[_0xd187('0x47')]=function(_0x3ce4a1,_0x3f5def){return db[_0xd187('0x2d')][_0xd187('0x47')]()[_0xd187('0x3f')](respondWithResult(_0x3f5def,null))['catch'](handleError(_0x3f5def,null));};exports[_0xd187('0x26')]=function(_0x2657be,_0x4523c8){if(_0x2657be[_0xd187('0x48')][_0xd187('0x49')]){delete _0x2657be['body'][_0xd187('0x49')];}return db[_0xd187('0x2d')]['find']({'where':{'uniqueid':_0x2657be[_0xd187('0x43')]['id']}})[_0xd187('0x3f')](handleEntityNotFound(_0x4523c8,null))['then'](saveUpdates(_0x2657be['body'],null))['then'](respondWithResult(_0x4523c8,null))['catch'](handleError(_0x4523c8,null));};exports[_0xd187('0x4a')]=function(_0x22f432,_0x12d448,_0x1bcc3a){return db[_0xd187('0x2d')][_0xd187('0x3e')]({'raw':![],'where':{'VoiceQueueId':_0x22f432[_0xd187('0x43')]['id']},'attributes':[[db['sequelize']['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x200,\x201,\x20null'))),_0xd187('0x4e')],[db['sequelize']['fn']('COUNT',db[_0xd187('0x4c')]['fn']('IF',db['sequelize'][_0xd187('0x4d')](_0xd187('0x4f')))),_0xd187('0x50')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x51')))),'busyContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x52')))),'congestionContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xd187('0x53')],[db['sequelize']['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x54')))),_0xd187('0x55')],[db[_0xd187('0x4c')]['fn']('COUNT',db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x2022,\x201,\x20null'))),_0xd187('0x56')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x57')))),_0xd187('0x58')]]})[_0xd187('0x3f')](handleEntityNotFound(_0x12d448,null))[_0xd187('0x3f')](respondWithResult(_0x12d448,null))[_0xd187('0x41')](handleError(_0x12d448,null));};exports[_0xd187('0x59')]=function(_0x23271b,_0x288a04,_0x39934c){return db[_0xd187('0x2d')][_0xd187('0x3e')]({'raw':![],'where':{'CampaignId':_0x23271b[_0xd187('0x43')]['id']},'attributes':[[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')]['literal'](_0xd187('0x5a')))),_0xd187('0x4e')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x203,\x201,\x20null'))),'noAnswerContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')]['literal'](_0xd187('0x51')))),'busyContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')]['literal'](_0xd187('0x52')))),_0xd187('0x5b')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db['sequelize']['literal'](_0xd187('0x5c')))),_0xd187('0x53')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x54')))),_0xd187('0x55')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db['sequelize'][_0xd187('0x4d')](_0xd187('0x5d')))),'reCallContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db['sequelize'][_0xd187('0x4d')](_0xd187('0x57')))),_0xd187('0x58')]]})[_0xd187('0x3f')](handleEntityNotFound(_0x288a04,null))['then'](respondWithResult(_0x288a04,null))[_0xd187('0x41')](handleError(_0x288a04,null));};exports[_0xd187('0x5e')]=function(_0x52e364,_0x569959,_0x3bca83){return db['VoiceQueue'][_0xd187('0x46')]({'where':{'id':_0x52e364[_0xd187('0x43')]['id']}})['then'](handleEntityNotFound(_0x569959,null))[_0xd187('0x3f')](function(_0x570c1c){var _0x317bc3;if(_0x570c1c){_0x317bc3=squel['insert']()['into']('cm_hopper')[_0xd187('0x5f')]([_0xd187('0x60'),_0xd187('0x61'),_0xd187('0x62'),_0xd187('0x63'),_0xd187('0x64'),_0xd187('0x65'),_0xd187('0x66')],squel['select']()[_0xd187('0x67')](_0xd187('0x68'),_0xd187('0x60'))['field'](_0xd187('0x69'),_0xd187('0x61'))[_0xd187('0x67')](_0xd187('0x6a'),'ContactId')[_0xd187('0x67')](_0xd187('0x6b'),'ListId')[_0xd187('0x67')](_0xd187('0x6c'),_0xd187('0x64'))[_0xd187('0x67')]('NOW()',_0xd187('0x65'))[_0xd187('0x67')]('NOW()',_0xd187('0x66'))['from']('cm_hopper_final')['where'](_0xd187('0x6d'),_0x52e364[_0xd187('0x43')]['id'][_0xd187('0x6e')]())[_0xd187('0x39')](_0xd187('0x6f'),_0x52e364[_0xd187('0x48')]['state'][_0xd187('0x6e')]())[_0xd187('0x39')]('calleridnum\x20IS\x20NOT\x20NULL')['where'](_0xd187('0x70'),squel[_0xd187('0x71')]()[_0xd187('0x67')](_0xd187('0x60'))[_0xd187('0x72')](_0xd187('0x73'))['where'](_0xd187('0x6d'),_0x52e364[_0xd187('0x43')]['id'][_0xd187('0x6e')]()))[_0xd187('0x39')](_0xd187('0x70'),squel[_0xd187('0x71')]()[_0xd187('0x67')](_0xd187('0x74'))[_0xd187('0x72')](_0xd187('0x75'))[_0xd187('0x39')](_0xd187('0x6d'),_0x52e364['params']['id']['toString']())[_0xd187('0x39')](_0xd187('0x76')))[_0xd187('0x77')](_0xd187('0x62')))[_0xd187('0x6e')]();return db[_0xd187('0x4c')]['query'](_0x317bc3);}return[];})[_0xd187('0x3f')](respondWithResult(_0x569959,null))['catch'](handleError(_0x569959,null));};exports[_0xd187('0x78')]=function(_0x520f86,_0x5cbfa6,_0x304117){return db['Campaign'][_0xd187('0x46')]({'where':{'id':_0x520f86[_0xd187('0x43')]['id']}})[_0xd187('0x3f')](handleEntityNotFound(_0x5cbfa6,null))[_0xd187('0x3f')](function(_0x1b93db){var _0x13a362;if(_0x1b93db){_0x13a362=squel[_0xd187('0x79')]()[_0xd187('0x7a')](_0xd187('0x73'))[_0xd187('0x5f')]([_0xd187('0x60'),_0xd187('0x61'),_0xd187('0x62'),_0xd187('0x63'),_0xd187('0x7b'),'createdAt',_0xd187('0x66')],squel[_0xd187('0x71')]()[_0xd187('0x67')](_0xd187('0x68'),'phone')[_0xd187('0x67')](_0xd187('0x69'),'scheduledAt')['field'](_0xd187('0x6a'),_0xd187('0x62'))[_0xd187('0x67')](_0xd187('0x6b'),_0xd187('0x63'))[_0xd187('0x67')]('ANY_VALUE(CampaignId)',_0xd187('0x7b'))[_0xd187('0x67')]('NOW()',_0xd187('0x65'))[_0xd187('0x67')](_0xd187('0x69'),_0xd187('0x66'))['from']('cm_hopper_final')[_0xd187('0x39')](_0xd187('0x7c'),_0x520f86[_0xd187('0x43')]['id']['toString']())[_0xd187('0x39')](_0xd187('0x6f'),_0x520f86[_0xd187('0x48')][_0xd187('0x7d')]['toString']())[_0xd187('0x39')]('calleridnum\x20IS\x20NOT\x20NULL')['where']('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()['field']('phone')['from'](_0xd187('0x73'))[_0xd187('0x39')]('CampaignId\x20=\x20?',_0x520f86[_0xd187('0x43')]['id'][_0xd187('0x6e')]()))[_0xd187('0x39')](_0xd187('0x70'),squel[_0xd187('0x71')]()['field'](_0xd187('0x74'))['from'](_0xd187('0x75'))[_0xd187('0x39')](_0xd187('0x7c'),_0x520f86[_0xd187('0x43')]['id'][_0xd187('0x6e')]())[_0xd187('0x39')](_0xd187('0x76')))['group'](_0xd187('0x62')))[_0xd187('0x6e')]();return db['sequelize'][_0xd187('0x31')](_0x13a362);}return[];})[_0xd187('0x3f')](respondWithResult(_0x5cbfa6,null))['catch'](handleError(_0x5cbfa6,null));};exports[_0xd187('0x7e')]=function(_0x3bd1d8,_0x224312,_0x45b522){return db[_0xd187('0x7f')][_0xd187('0x80')]({'where':{'VoiceQueueId':_0x3bd1d8[_0xd187('0x48')][_0xd187('0x64')],'CampaignId':_0x3bd1d8['body'][_0xd187('0x7b')],'ContactId':_0x3bd1d8[_0xd187('0x48')][_0xd187('0x62')]}})[_0xd187('0x3f')](handleEntityNotFound(_0x224312,null))[_0xd187('0x3f')](function(_0x400a9){if(_0x400a9){return _0x400a9;}return null;})['then'](respondWithResult(_0x224312,null))['catch'](handleError(_0x224312,null));};
\ No newline at end of file
index c89dd15..9c9691f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1be8=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x1be8,0x1ac));var _0x81be=function(_0x381005,_0x2b3564){_0x381005=_0x381005-0x0;var _0x7fb157=_0x1be8[_0x381005];return _0x7fb157;};'use strict';var _=require(_0x81be('0x0'));var util=require('util');var logger=require(_0x81be('0x1'))(_0x81be('0x2'));var moment=require(_0x81be('0x3'));var BPromise=require(_0x81be('0x4'));var rp=require(_0x81be('0x5'));var fs=require('fs');var path=require(_0x81be('0x6'));var rimraf=require(_0x81be('0x7'));var config=require(_0x81be('0x8'));var attributes=require('./cmHopperFinal.attributes');module['exports']=function(_0x24fa16,_0x16e66f){return _0x24fa16['define'](_0x81be('0x9'),attributes,{'tableName':_0x81be('0xa'),'paranoid':![],'indexes':[{'name':_0x81be('0xb'),'fields':['calleridnum']},{'name':'uniqueid','fields':[_0x81be('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x12bd=['api','bluebird','request-promise','path','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','../../config/logger'];(function(_0x3bbe18,_0xf7fdb1){var _0x1a0e5c=function(_0x481a00){while(--_0x481a00){_0x3bbe18['push'](_0x3bbe18['shift']());}};_0x1a0e5c(++_0xf7fdb1);}(_0x12bd,0xc0));var _0xd12b=function(_0x555337,_0x1559d1){_0x555337=_0x555337-0x0;var _0x49b217=_0x12bd[_0x555337];return _0x49b217;};'use strict';var _=require(_0xd12b('0x0'));var util=require(_0xd12b('0x1'));var logger=require(_0xd12b('0x2'))(_0xd12b('0x3'));var moment=require('moment');var BPromise=require(_0xd12b('0x4'));var rp=require(_0xd12b('0x5'));var fs=require('fs');var path=require(_0xd12b('0x6'));var rimraf=require('rimraf');var config=require(_0xd12b('0x7'));var attributes=require(_0xd12b('0x8'));module[_0xd12b('0x9')]=function(_0x504ae9,_0x531c75){return _0x504ae9[_0xd12b('0xa')](_0xd12b('0xb'),attributes,{'tableName':_0xd12b('0xc'),'paranoid':![],'indexes':[{'name':_0xd12b('0xd'),'fields':[_0xd12b('0xd')]},{'name':'uniqueid','fields':[_0xd12b('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index c712656..b585231 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(_0x1b723c,_0x3c8be9){var _0x2b7479=function(_0x4fd369){while(--_0x4fd369){_0x1b723c['push'](_0x1b723c['shift']());}};_0x2b7479(++_0x3c8be9);}(_0xb10b,0x12a));var _0xbb10=function(_0x2f5a22,_0x5e9f03){_0x2f5a22=_0x2f5a22-0x0;var _0x326b70=_0xb10b[_0x2f5a22];return _0x326b70;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
+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(_0x302ce1,_0x240368){var _0x5aaa73=function(_0x759340){while(--_0x759340){_0x302ce1['push'](_0x302ce1['shift']());}};_0x5aaa73(++_0x240368);}(_0xb10b,0x12a));var _0xbb10=function(_0x143368,_0x5d0b64){_0x143368=_0x143368-0x0;var _0x44c10a=_0xb10b[_0x143368];return _0x44c10a;};'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 f1fe99f..950382c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1afc=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','describe','/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put','update','path'];(function(_0x296210,_0x1ef36a){var _0x2bd260=function(_0x2b9718){while(--_0x2b9718){_0x296210['push'](_0x296210['shift']());}};_0x2bd260(++_0x1ef36a);}(_0x1afc,0x167));var _0xc1af=function(_0x13fdb3,_0x4584de){_0x13fdb3=_0x13fdb3-0x0;var _0x4f647e=_0x1afc[_0x13fdb3];return _0x4f647e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc1af('0x0'));var timeout=require(_0xc1af('0x1'));var express=require('express');var router=express[_0xc1af('0x2')]();var fs_extra=require(_0xc1af('0x3'));var auth=require(_0xc1af('0x4'));var interaction=require(_0xc1af('0x5'));var config=require(_0xc1af('0x6'));var controller=require(_0xc1af('0x7'));router[_0xc1af('0x8')]('/',auth[_0xc1af('0x9')](),controller[_0xc1af('0xa')]);router[_0xc1af('0x8')]('/describe',auth[_0xc1af('0x9')](),controller[_0xc1af('0xb')]);router[_0xc1af('0x8')](_0xc1af('0xc'),auth['isAuthenticated'](),controller[_0xc1af('0xd')]);router[_0xc1af('0x8')](_0xc1af('0xe'),auth[_0xc1af('0x9')](),controller['countContactsQueueCampaignHopperFinal']);router['get'](_0xc1af('0xf'),auth[_0xc1af('0x9')](),controller[_0xc1af('0x10')]);router[_0xc1af('0x11')](_0xc1af('0x12'),auth[_0xc1af('0x9')](),controller[_0xc1af('0x13')]);router[_0xc1af('0x11')]('/voice/campaign/moveContacts/:id',auth[_0xc1af('0x9')](),controller[_0xc1af('0x14')]);router['post'](_0xc1af('0x15'),auth[_0xc1af('0x9')](),controller['checkContactHopper']);router[_0xc1af('0x16')](_0xc1af('0xc'),auth[_0xc1af('0x9')](),controller[_0xc1af('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0xad1b=['countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','/: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','describe','show','/voice/queue/countAttributes/:id'];(function(_0x475a46,_0x33006c){var _0x385925=function(_0x4fe1bf){while(--_0x4fe1bf){_0x475a46['push'](_0x475a46['shift']());}};_0x385925(++_0x33006c);}(_0xad1b,0x1b0));var _0xbad1=function(_0x4b4f3c,_0x56c649){_0x4b4f3c=_0x4b4f3c-0x0;var _0x42ac46=_0xad1b[_0x4b4f3c];return _0x42ac46;};'use strict';var multer=require(_0xbad1('0x0'));var util=require(_0xbad1('0x1'));var path=require(_0xbad1('0x2'));var timeout=require(_0xbad1('0x3'));var express=require(_0xbad1('0x4'));var router=express[_0xbad1('0x5')]();var fs_extra=require(_0xbad1('0x6'));var auth=require(_0xbad1('0x7'));var interaction=require(_0xbad1('0x8'));var config=require(_0xbad1('0x9'));var controller=require(_0xbad1('0xa'));router[_0xbad1('0xb')]('/',auth[_0xbad1('0xc')](),controller[_0xbad1('0xd')]);router[_0xbad1('0xb')](_0xbad1('0xe'),auth[_0xbad1('0xc')](),controller[_0xbad1('0xf')]);router['get']('/:id',auth[_0xbad1('0xc')](),controller[_0xbad1('0x10')]);router['get'](_0xbad1('0x11'),auth[_0xbad1('0xc')](),controller[_0xbad1('0x12')]);router[_0xbad1('0xb')](_0xbad1('0x13'),auth[_0xbad1('0xc')](),controller[_0xbad1('0x14')]);router[_0xbad1('0x15')](_0xbad1('0x16'),auth[_0xbad1('0xc')](),controller[_0xbad1('0x17')]);router[_0xbad1('0x15')](_0xbad1('0x18'),auth[_0xbad1('0xc')](),controller[_0xbad1('0x19')]);router[_0xbad1('0x15')](_0xbad1('0x1a'),auth[_0xbad1('0xc')](),controller['checkContactHopper']);router['put'](_0xbad1('0x1b'),auth[_0xbad1('0xc')](),controller[_0xbad1('0x1c')]);module[_0xbad1('0x1d')]=router;
\ No newline at end of file
index 63e23d5..f50a20c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8459=['sequelize','exports','INTEGER','STRING','DATE','BOOLEAN'];(function(_0x1a8bc1,_0x55eff6){var _0x183736=function(_0x2c74d9){while(--_0x2c74d9){_0x1a8bc1['push'](_0x1a8bc1['shift']());}};_0x183736(++_0x55eff6);}(_0x8459,0x1d4));var _0x9845=function(_0x3ad887,_0x36f6a6){_0x3ad887=_0x3ad887-0x0;var _0x345b8a=_0x8459[_0x3ad887];return _0x345b8a;};'use strict';var Sequelize=require(_0x9845('0x0'));module[_0x9845('0x1')]={'state':{'type':Sequelize[_0x9845('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x9845('0x3')]},'scheduledat':{'type':Sequelize[_0x9845('0x4')]},'countbusyretry':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x9845('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x9845('0x3')]},'originatecalleridname':{'type':Sequelize[_0x9845('0x3')]},'calleridnum':{'type':Sequelize[_0x9845('0x3')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x9845('0x4')]},'responsetime':{'type':Sequelize[_0x9845('0x4')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x9845('0x4')]},'endtime':{'type':Sequelize[_0x9845('0x4')]},'ringtime':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x9845('0x3')]},'campaign':{'type':Sequelize[_0x9845('0x3')]},'campaigntype':{'type':Sequelize[_0x9845('0x3')]},'membername':{'type':Sequelize[_0x9845('0x3')]},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0x9845('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x9845('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x9845('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x9845('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x9845('0x4')]},'recallme':{'type':Sequelize[_0x9845('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x9845('0x4')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x9845('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xce19=['exports','STRING','DATE','INTEGER','BOOLEAN','sequelize'];(function(_0x277396,_0x2eb94c){var _0x14a58a=function(_0x4e2f14){while(--_0x4e2f14){_0x277396['push'](_0x277396['shift']());}};_0x14a58a(++_0x2eb94c);}(_0xce19,0x1a9));var _0x9ce1=function(_0x56a5e3,_0x44c0d5){_0x56a5e3=_0x56a5e3-0x0;var _0x1f7713=_0xce19[_0x56a5e3];return _0x1f7713;};'use strict';var Sequelize=require(_0x9ce1('0x0'));module[_0x9ce1('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x9ce1('0x2')]},'scheduledat':{'type':Sequelize[_0x9ce1('0x3')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x9ce1('0x4')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x9ce1('0x4')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x9ce1('0x2')]},'originatecalleridnum':{'type':Sequelize[_0x9ce1('0x2')]},'originatecalleridname':{'type':Sequelize[_0x9ce1('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x9ce1('0x3')]},'answertime':{'type':Sequelize[_0x9ce1('0x3')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x9ce1('0x3')]},'ringtime':{'type':Sequelize[_0x9ce1('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x9ce1('0x4')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x9ce1('0x4')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x9ce1('0x2')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x9ce1('0x2')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x9ce1('0x2')]},'amd':{'type':Sequelize[_0x9ce1('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x9ce1('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x9ce1('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x9ce1('0x3')]},'recallme':{'type':Sequelize[_0x9ce1('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x9ce1('0x3')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x9ce1('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x9ce1('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x9ce1('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x9ce1('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x9ce1('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 45805a3..de970c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x623c=['fieldName','map','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','find','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','then','error','stack','name','send','index','CmHopperHistory','rawAttributes'];(function(_0x476bf4,_0x2a3755){var _0x788ffe=function(_0x13fa11){while(--_0x13fa11){_0x476bf4['push'](_0x476bf4['shift']());}};_0x788ffe(++_0x2a3755);}(_0x623c,0x156));var _0xc623=function(_0x1221b1,_0x3fae72){_0x1221b1=_0x1221b1-0x0;var _0x35e1ac=_0x623c[_0x1221b1];return _0x35e1ac;};'use strict';var emlformat=require(_0xc623('0x0'));var rimraf=require(_0xc623('0x1'));var zipdir=require(_0xc623('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc623('0x3'));var moment=require(_0xc623('0x4'));var BPromise=require(_0xc623('0x5'));var Mustache=require(_0xc623('0x6'));var util=require(_0xc623('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xc623('0x8'));var ejs=require(_0xc623('0x9'));var fs=require('fs');var fs_extra=require(_0xc623('0xa'));var _=require(_0xc623('0xb'));var squel=require(_0xc623('0xc'));var crypto=require(_0xc623('0xd'));var jsforce=require(_0xc623('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc623('0x8'));var querystring=require(_0xc623('0xf'));var Papa=require(_0xc623('0x10'));var Redis=require(_0xc623('0x11'));var authService=require(_0xc623('0x12'));var qs=require(_0xc623('0x13'));var as=require(_0xc623('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc623('0x15'))('api');var utils=require(_0xc623('0x16'));var config=require(_0xc623('0x17'));var licenseUtil=require(_0xc623('0x18'));var db=require(_0xc623('0x19'))['db'];function respondWithStatusCode(_0x3fe44a,_0x95e7a5){_0x95e7a5=_0x95e7a5||0xcc;return function(_0x2337bb){if(_0x2337bb){return _0x3fe44a[_0xc623('0x1a')](_0x95e7a5);}return _0x3fe44a[_0xc623('0x1b')](_0x95e7a5)[_0xc623('0x1c')]();};}function respondWithResult(_0x148e94,_0x32bc1a){_0x32bc1a=_0x32bc1a||0xc8;return function(_0x200906){if(_0x200906){return _0x148e94['status'](_0x32bc1a)['json'](_0x200906);}};}function respondWithFilteredResult(_0x331502,_0x37f281){return function(_0x2773dd){if(_0x2773dd){var _0x35f206=typeof _0x37f281[_0xc623('0x1d')]===_0xc623('0x1e')&&typeof _0x37f281[_0xc623('0x1f')]===_0xc623('0x1e');var _0x448442=_0x2773dd[_0xc623('0x20')];var _0x2052ae=_0x35f206?0x0:_0x37f281['offset'];var _0x311343=_0x35f206?_0x2773dd[_0xc623('0x20')]:_0x37f281[_0xc623('0x1d')]+_0x37f281['limit'];var _0x241ab3;if(_0x311343>=_0x448442){_0x311343=_0x448442;_0x241ab3=0xc8;}else{_0x241ab3=0xce;}_0x331502[_0xc623('0x1b')](_0x241ab3);return _0x331502[_0xc623('0x21')](_0xc623('0x22'),_0x2052ae+'-'+_0x311343+'/'+_0x448442)[_0xc623('0x23')](_0x2773dd);}return null;};}function patchUpdates(_0x4eeaca){return function(_0x1cc851){try{jsonpatch[_0xc623('0x24')](_0x1cc851,_0x4eeaca,!![]);}catch(_0x1b3af9){return BPromise['reject'](_0x1b3af9);}return _0x1cc851[_0xc623('0x25')]();};}function saveUpdates(_0x14f828,_0x3d592a){return function(_0x50e590){if(_0x50e590){return _0x50e590[_0xc623('0x26')](_0x14f828)['then'](function(_0x165aa9){return _0x165aa9;});}return null;};}function removeEntity(_0x12ffaf,_0x4bf21d){return function(_0x43f5d1){if(_0x43f5d1){return _0x43f5d1[_0xc623('0x27')]()[_0xc623('0x28')](function(){_0x12ffaf[_0xc623('0x1b')](0xcc)[_0xc623('0x1c')]();});}};}function handleEntityNotFound(_0x259ad3,_0x4636eb){return function(_0x16fba3){if(!_0x16fba3){_0x259ad3[_0xc623('0x1a')](0x194);}return _0x16fba3;};}function handleError(_0x22a485,_0x145d8b){_0x145d8b=_0x145d8b||0x1f4;return function(_0x5d6a6a){logger[_0xc623('0x29')](_0x5d6a6a[_0xc623('0x2a')]);if(_0x5d6a6a['name']){delete _0x5d6a6a[_0xc623('0x2b')];}_0x22a485[_0xc623('0x1b')](_0x145d8b)[_0xc623('0x2c')](_0x5d6a6a);};}exports[_0xc623('0x2d')]=function(_0x2ee0b6,_0x825e46){var _0xb87425={},_0x214032={},_0x6bb85b={'count':0x0,'rows':[]};var _0x33942f=_['map'](db[_0xc623('0x2e')][_0xc623('0x2f')],function(_0x199de2){return{'name':_0x199de2[_0xc623('0x30')],'type':_0x199de2['type']['key']};});_0x214032['model']=_[_0xc623('0x31')](_0x33942f,_0xc623('0x2b'));_0x214032[_0xc623('0x32')]=_[_0xc623('0x33')](_0x2ee0b6[_0xc623('0x32')]);_0x214032[_0xc623('0x34')]=_[_0xc623('0x35')](_0x214032[_0xc623('0x36')],_0x214032[_0xc623('0x32')]);_0xb87425['attributes']=_['intersection'](_0x214032[_0xc623('0x36')],qs[_0xc623('0x37')](_0x2ee0b6[_0xc623('0x32')]['fields']));_0xb87425[_0xc623('0x38')]=_0xb87425['attributes']['length']?_0xb87425[_0xc623('0x38')]:_0x214032[_0xc623('0x36')];if(!_0x2ee0b6[_0xc623('0x32')][_0xc623('0x39')](_0xc623('0x3a'))){_0xb87425[_0xc623('0x1f')]=qs[_0xc623('0x1f')](_0x2ee0b6[_0xc623('0x32')]['limit']);_0xb87425[_0xc623('0x1d')]=qs['offset'](_0x2ee0b6['query']['offset']);}_0xb87425[_0xc623('0x3b')]=qs['sort'](_0x2ee0b6[_0xc623('0x32')][_0xc623('0x3c')]);_0xb87425[_0xc623('0x3d')]=qs[_0xc623('0x34')](_[_0xc623('0x3e')](_0x2ee0b6[_0xc623('0x32')],_0x214032['filters']),_0x33942f);if(_0x2ee0b6['query']['filter']){_0xb87425[_0xc623('0x3d')]=_[_0xc623('0x3f')](_0xb87425['where'],{'$or':_[_0xc623('0x31')](_0x33942f,function(_0x279d20){if(_0x279d20[_0xc623('0x40')]!==_0xc623('0x41')){var _0x3445c3={};_0x3445c3[_0x279d20['name']]={'$like':'%'+_0x2ee0b6[_0xc623('0x32')]['filter']+'%'};return _0x3445c3;}})});}_0xb87425=_['merge']({},_0xb87425,_0x2ee0b6[_0xc623('0x42')]);var _0x2be1ed={'where':_0xb87425[_0xc623('0x3d')]};return db[_0xc623('0x2e')][_0xc623('0x20')](_0x2be1ed)['then'](function(_0x40cb0e){_0x6bb85b[_0xc623('0x20')]=_0x40cb0e;if(_0x2ee0b6[_0xc623('0x32')]['includeAll']){_0xb87425[_0xc623('0x43')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xc623('0x44')](_0xb87425);})['then'](function(_0x443dbf){_0x6bb85b[_0xc623('0x45')]=_0x443dbf;return _0x6bb85b;})[_0xc623('0x28')](respondWithFilteredResult(_0x825e46,_0xb87425))[_0xc623('0x46')](handleError(_0x825e46,null));};exports[_0xc623('0x47')]=function(_0x3767fe,_0x3d1121){var _0x32430a={'raw':!![],'where':{'id':_0x3767fe['params']['id']}},_0x255a1e={};_0x255a1e['model']=_[_0xc623('0x33')](db['CmHopperHistory'][_0xc623('0x2f')]);_0x255a1e['query']=_[_0xc623('0x33')](_0x3767fe[_0xc623('0x32')]);_0x255a1e['filters']=_[_0xc623('0x35')](_0x255a1e[_0xc623('0x36')],_0x255a1e[_0xc623('0x32')]);_0x32430a[_0xc623('0x38')]=_['intersection'](_0x255a1e[_0xc623('0x36')],qs[_0xc623('0x37')](_0x3767fe[_0xc623('0x32')][_0xc623('0x37')]));_0x32430a[_0xc623('0x38')]=_0x32430a['attributes']['length']?_0x32430a[_0xc623('0x38')]:_0x255a1e[_0xc623('0x36')];if(_0x3767fe[_0xc623('0x32')][_0xc623('0x48')]){_0x32430a[_0xc623('0x43')]=[{'all':!![]}];}_0x32430a=_[_0xc623('0x3f')]({},_0x32430a,_0x3767fe['options']);return db['CmHopperHistory'][_0xc623('0x49')](_0x32430a)[_0xc623('0x28')](handleEntityNotFound(_0x3d1121,null))[_0xc623('0x28')](respondWithResult(_0x3d1121,null))[_0xc623('0x46')](handleError(_0x3d1121,null));};exports['create']=function(_0x1dcd18,_0x22a757){return db[_0xc623('0x2e')][_0xc623('0x4a')](_0x1dcd18[_0xc623('0x4b')],{})[_0xc623('0x28')](respondWithResult(_0x22a757,0xc9))['catch'](handleError(_0x22a757,null));};exports['describe']=function(_0x4025e3,_0x47be8c){return db[_0xc623('0x2e')][_0xc623('0x4c')]()[_0xc623('0x28')](respondWithResult(_0x47be8c,null))['catch'](handleError(_0x47be8c,null));};exports[_0xc623('0x26')]=function(_0x21b54b,_0x16ed03){if(_0x21b54b[_0xc623('0x4b')][_0xc623('0x4d')]){delete _0x21b54b[_0xc623('0x4b')][_0xc623('0x4d')];}return db[_0xc623('0x2e')][_0xc623('0x49')]({'where':{'uniqueid':_0x21b54b['params']['id']}})[_0xc623('0x28')](handleEntityNotFound(_0x16ed03,null))['then'](saveUpdates(_0x21b54b[_0xc623('0x4b')],null))[_0xc623('0x28')](respondWithResult(_0x16ed03,null))[_0xc623('0x46')](handleError(_0x16ed03,null));};
\ No newline at end of file
+var _0x8d70=['catch','show','params','intersection','length','includeAll','create','body','describe','uniqueid','find','eml-format','zip-dir','fast-json-patch','moment','util','sox','to-csv','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','apply','reject','save','update','then','error','stack','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','model','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','limit','order','where','merge','type','options','include','findAll'];(function(_0x1f62de,_0x2f4a5a){var _0x97205e=function(_0x3e86af){while(--_0x3e86af){_0x1f62de['push'](_0x1f62de['shift']());}};_0x97205e(++_0x2f4a5a);}(_0x8d70,0x1e0));var _0x08d7=function(_0x42b444,_0x17efac){_0x42b444=_0x42b444-0x0;var _0x37b014=_0x8d70[_0x42b444];return _0x37b014;};'use strict';var emlformat=require(_0x08d7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x08d7('0x1'));var jsonpatch=require(_0x08d7('0x2'));var rp=require('request-promise');var moment=require(_0x08d7('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x08d7('0x4'));var path=require('path');var sox=require(_0x08d7('0x5'));var csv=require(_0x08d7('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x08d7('0x7'));var jsforce=require('jsforce');var deskjs=require(_0x08d7('0x8'));var toCsv=require(_0x08d7('0x6'));var querystring=require(_0x08d7('0x9'));var Papa=require(_0x08d7('0xa'));var Redis=require(_0x08d7('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x08d7('0xc'));var as=require(_0x08d7('0xd'));var hardwareService=require(_0x08d7('0xe'));var logger=require('../../config/logger')(_0x08d7('0xf'));var utils=require(_0x08d7('0x10'));var config=require(_0x08d7('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0x08d7('0x12'))['db'];function respondWithStatusCode(_0x213b15,_0x14b15e){_0x14b15e=_0x14b15e||0xcc;return function(_0x56463a){if(_0x56463a){return _0x213b15[_0x08d7('0x13')](_0x14b15e);}return _0x213b15['status'](_0x14b15e)[_0x08d7('0x14')]();};}function respondWithResult(_0x172e10,_0x23ebb1){_0x23ebb1=_0x23ebb1||0xc8;return function(_0x2c4051){if(_0x2c4051){return _0x172e10[_0x08d7('0x15')](_0x23ebb1)[_0x08d7('0x16')](_0x2c4051);}};}function respondWithFilteredResult(_0x459d45,_0x1db1fc){return function(_0x45e33c){if(_0x45e33c){var _0x390a93=typeof _0x1db1fc[_0x08d7('0x17')]===_0x08d7('0x18')&&typeof _0x1db1fc['limit']===_0x08d7('0x18');var _0x482614=_0x45e33c[_0x08d7('0x19')];var _0x46f94f=_0x390a93?0x0:_0x1db1fc[_0x08d7('0x17')];var _0x534354=_0x390a93?_0x45e33c[_0x08d7('0x19')]:_0x1db1fc[_0x08d7('0x17')]+_0x1db1fc['limit'];var _0x58842a;if(_0x534354>=_0x482614){_0x534354=_0x482614;_0x58842a=0xc8;}else{_0x58842a=0xce;}_0x459d45['status'](_0x58842a);return _0x459d45['set']('Content-Range',_0x46f94f+'-'+_0x534354+'/'+_0x482614)[_0x08d7('0x16')](_0x45e33c);}return null;};}function patchUpdates(_0x1a7766){return function(_0x20f021){try{jsonpatch[_0x08d7('0x1a')](_0x20f021,_0x1a7766,!![]);}catch(_0x4cd41c){return BPromise[_0x08d7('0x1b')](_0x4cd41c);}return _0x20f021[_0x08d7('0x1c')]();};}function saveUpdates(_0x289930,_0x3d0a57){return function(_0x5ee8f2){if(_0x5ee8f2){return _0x5ee8f2[_0x08d7('0x1d')](_0x289930)[_0x08d7('0x1e')](function(_0xe9e658){return _0xe9e658;});}return null;};}function removeEntity(_0x241b64,_0x3854e3){return function(_0x313005){if(_0x313005){return _0x313005['destroy']()[_0x08d7('0x1e')](function(){_0x241b64[_0x08d7('0x15')](0xcc)[_0x08d7('0x14')]();});}};}function handleEntityNotFound(_0x39308a,_0x384553){return function(_0x34073f){if(!_0x34073f){_0x39308a[_0x08d7('0x13')](0x194);}return _0x34073f;};}function handleError(_0x27afc2,_0x471bfa){_0x471bfa=_0x471bfa||0x1f4;return function(_0x5dc1a1){logger[_0x08d7('0x1f')](_0x5dc1a1[_0x08d7('0x20')]);if(_0x5dc1a1[_0x08d7('0x21')]){delete _0x5dc1a1['name'];}_0x27afc2[_0x08d7('0x15')](_0x471bfa)[_0x08d7('0x22')](_0x5dc1a1);};}exports[_0x08d7('0x23')]=function(_0x2e7607,_0xed2d76){var _0xca1d71={},_0x2a906f={},_0x2a1105={'count':0x0,'rows':[]};var _0x47de0c=_[_0x08d7('0x24')](db[_0x08d7('0x25')][_0x08d7('0x26')],function(_0x56d6fe){return{'name':_0x56d6fe[_0x08d7('0x27')],'type':_0x56d6fe['type']['key']};});_0x2a906f[_0x08d7('0x28')]=_[_0x08d7('0x24')](_0x47de0c,_0x08d7('0x21'));_0x2a906f[_0x08d7('0x29')]=_[_0x08d7('0x2a')](_0x2e7607[_0x08d7('0x29')]);_0x2a906f[_0x08d7('0x2b')]=_['intersection'](_0x2a906f[_0x08d7('0x28')],_0x2a906f[_0x08d7('0x29')]);_0xca1d71[_0x08d7('0x2c')]=_['intersection'](_0x2a906f['model'],qs[_0x08d7('0x2d')](_0x2e7607[_0x08d7('0x29')][_0x08d7('0x2d')]));_0xca1d71[_0x08d7('0x2c')]=_0xca1d71[_0x08d7('0x2c')]['length']?_0xca1d71[_0x08d7('0x2c')]:_0x2a906f['model'];if(!_0x2e7607[_0x08d7('0x29')][_0x08d7('0x2e')](_0x08d7('0x2f'))){_0xca1d71[_0x08d7('0x30')]=qs[_0x08d7('0x30')](_0x2e7607['query'][_0x08d7('0x30')]);_0xca1d71['offset']=qs[_0x08d7('0x17')](_0x2e7607['query']['offset']);}_0xca1d71[_0x08d7('0x31')]=qs['sort'](_0x2e7607[_0x08d7('0x29')]['sort']);_0xca1d71['where']=qs[_0x08d7('0x2b')](_['pick'](_0x2e7607[_0x08d7('0x29')],_0x2a906f['filters']),_0x47de0c);if(_0x2e7607[_0x08d7('0x29')]['filter']){_0xca1d71[_0x08d7('0x32')]=_[_0x08d7('0x33')](_0xca1d71[_0x08d7('0x32')],{'$or':_['map'](_0x47de0c,function(_0x5bf1ee){if(_0x5bf1ee[_0x08d7('0x34')]!=='VIRTUAL'){var _0xf726fd={};_0xf726fd[_0x5bf1ee[_0x08d7('0x21')]]={'$like':'%'+_0x2e7607[_0x08d7('0x29')]['filter']+'%'};return _0xf726fd;}})});}_0xca1d71=_[_0x08d7('0x33')]({},_0xca1d71,_0x2e7607[_0x08d7('0x35')]);var _0xfe3b7e={'where':_0xca1d71[_0x08d7('0x32')]};return db[_0x08d7('0x25')][_0x08d7('0x19')](_0xfe3b7e)[_0x08d7('0x1e')](function(_0x2e275c){_0x2a1105['count']=_0x2e275c;if(_0x2e7607[_0x08d7('0x29')]['includeAll']){_0xca1d71[_0x08d7('0x36')]=[{'all':!![]}];}return db[_0x08d7('0x25')][_0x08d7('0x37')](_0xca1d71);})['then'](function(_0xd6f797){_0x2a1105['rows']=_0xd6f797;return _0x2a1105;})['then'](respondWithFilteredResult(_0xed2d76,_0xca1d71))[_0x08d7('0x38')](handleError(_0xed2d76,null));};exports[_0x08d7('0x39')]=function(_0x3f44a7,_0x7799b5){var _0x414295={'raw':!![],'where':{'id':_0x3f44a7[_0x08d7('0x3a')]['id']}},_0x359b34={};_0x359b34['model']=_[_0x08d7('0x2a')](db[_0x08d7('0x25')][_0x08d7('0x26')]);_0x359b34[_0x08d7('0x29')]=_[_0x08d7('0x2a')](_0x3f44a7['query']);_0x359b34['filters']=_['intersection'](_0x359b34[_0x08d7('0x28')],_0x359b34[_0x08d7('0x29')]);_0x414295[_0x08d7('0x2c')]=_[_0x08d7('0x3b')](_0x359b34[_0x08d7('0x28')],qs[_0x08d7('0x2d')](_0x3f44a7[_0x08d7('0x29')][_0x08d7('0x2d')]));_0x414295['attributes']=_0x414295[_0x08d7('0x2c')][_0x08d7('0x3c')]?_0x414295[_0x08d7('0x2c')]:_0x359b34['model'];if(_0x3f44a7[_0x08d7('0x29')][_0x08d7('0x3d')]){_0x414295[_0x08d7('0x36')]=[{'all':!![]}];}_0x414295=_['merge']({},_0x414295,_0x3f44a7['options']);return db[_0x08d7('0x25')]['find'](_0x414295)['then'](handleEntityNotFound(_0x7799b5,null))[_0x08d7('0x1e')](respondWithResult(_0x7799b5,null))[_0x08d7('0x38')](handleError(_0x7799b5,null));};exports[_0x08d7('0x3e')]=function(_0x90a2f7,_0x5be0c4){return db[_0x08d7('0x25')][_0x08d7('0x3e')](_0x90a2f7[_0x08d7('0x3f')],{})[_0x08d7('0x1e')](respondWithResult(_0x5be0c4,0xc9))['catch'](handleError(_0x5be0c4,null));};exports[_0x08d7('0x40')]=function(_0x438d55,_0x475a0d){return db[_0x08d7('0x25')][_0x08d7('0x40')]()[_0x08d7('0x1e')](respondWithResult(_0x475a0d,null))[_0x08d7('0x38')](handleError(_0x475a0d,null));};exports[_0x08d7('0x1d')]=function(_0x147190,_0x517a33){if(_0x147190['body'][_0x08d7('0x41')]){delete _0x147190['body'][_0x08d7('0x41')];}return db[_0x08d7('0x25')][_0x08d7('0x42')]({'where':{'uniqueid':_0x147190[_0x08d7('0x3a')]['id']}})[_0x08d7('0x1e')](handleEntityNotFound(_0x517a33,null))['then'](saveUpdates(_0x147190[_0x08d7('0x3f')],null))[_0x08d7('0x1e')](respondWithResult(_0x517a33,null))['catch'](handleError(_0x517a33,null));};
\ No newline at end of file
index 9def022..cc00a89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1cc=['bluebird','request-promise','rimraf','./cmHopperHistory.attributes','exports','cm_hopper_history','endtime','lodash','util','../../config/logger','moment'];(function(_0x55abd9,_0x1148af){var _0x3e5669=function(_0x6f2105){while(--_0x6f2105){_0x55abd9['push'](_0x55abd9['shift']());}};_0x3e5669(++_0x1148af);}(_0xa1cc,0x10f));var _0xca1c=function(_0x2e9639,_0x392ecc){_0x2e9639=_0x2e9639-0x0;var _0x384e3d=_0xa1cc[_0x2e9639];return _0x384e3d;};'use strict';var _=require(_0xca1c('0x0'));var util=require(_0xca1c('0x1'));var logger=require(_0xca1c('0x2'))('api');var moment=require(_0xca1c('0x3'));var BPromise=require(_0xca1c('0x4'));var rp=require(_0xca1c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xca1c('0x6'));var config=require('../../config/environment');var attributes=require(_0xca1c('0x7'));module[_0xca1c('0x8')]=function(_0x375837,_0x98dd5f){return _0x375837['define']('CmHopperHistory',attributes,{'tableName':_0xca1c('0x9'),'paranoid':![],'indexes':[{'name':_0xca1c('0xa'),'fields':[_0xca1c('0xa')]},{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8374=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','CmHopperHistory','endtime','uniqueid','lodash','util','../../config/logger'];(function(_0x52dcd9,_0x2f990b){var _0xfe1375=function(_0x538665){while(--_0x538665){_0x52dcd9['push'](_0x52dcd9['shift']());}};_0xfe1375(++_0x2f990b);}(_0x8374,0x174));var _0x4837=function(_0x2c4938,_0x4b32e5){_0x2c4938=_0x2c4938-0x0;var _0x5151b8=_0x8374[_0x2c4938];return _0x5151b8;};'use strict';var _=require(_0x4837('0x0'));var util=require(_0x4837('0x1'));var logger=require(_0x4837('0x2'))(_0x4837('0x3'));var moment=require(_0x4837('0x4'));var BPromise=require(_0x4837('0x5'));var rp=require(_0x4837('0x6'));var fs=require('fs');var path=require(_0x4837('0x7'));var rimraf=require(_0x4837('0x8'));var config=require(_0x4837('0x9'));var attributes=require(_0x4837('0xa'));module[_0x4837('0xb')]=function(_0x2bd5a7,_0x425c07){return _0x2bd5a7['define'](_0x4837('0xc'),attributes,{'tableName':'cm_hopper_history','paranoid':![],'indexes':[{'name':_0x4837('0xd'),'fields':[_0x4837('0xd')]},{'name':_0x4837('0xe'),'fields':[_0x4837('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 18c215d..a6c97b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde13=['outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','name','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','CreateCmHopperHistory','CmHopperHistory','body','options','raw','then','info','AvgHandleTime','findAll','where','sequelize','col','predictiveIntervalTotalCalls','COUNT','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','campaign','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null'];(function(_0x58f479,_0xd68673){var _0x903b31=function(_0x413175){while(--_0x413175){_0x58f479['push'](_0x58f479['shift']());}};_0x903b31(++_0xd68673);}(_0xde13,0x146));var _0x3de1=function(_0x26e46c,_0x1751d4){_0x26e46c=_0x26e46c-0x0;var _0x51e33b=_0xde13[_0x26e46c];return _0x51e33b;};'use strict';var _=require(_0x3de1('0x0'));var util=require(_0x3de1('0x1'));var moment=require(_0x3de1('0x2'));var BPromise=require(_0x3de1('0x3'));var rs=require(_0x3de1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3de1('0x5'))['db'];var utils=require(_0x3de1('0x6'));var logger=require(_0x3de1('0x7'))('rpc');var config=require(_0x3de1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x3de1('0x9')][_0x3de1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3d2169,_0x34291a,_0x5f1aff){return new BPromise(function(_0x11df45,_0x41b5bb){return client[_0x3de1('0xb')](_0x3d2169,_0x5f1aff)['then'](function(_0x4eb503){logger['info'](_0x3de1('0xc'),_0x34291a,_0x3de1('0xd'));logger[_0x3de1('0xe')]('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x34291a,_0x3de1('0xd'),JSON[_0x3de1('0xf')](_0x4eb503));if(_0x4eb503[_0x3de1('0x10')]){if(_0x4eb503['error']['code']===0x1f4){logger[_0x3de1('0x10')]('CmHopperHistory,\x20%s,\x20%s',_0x34291a,_0x4eb503['error']['message']);return _0x41b5bb(_0x4eb503[_0x3de1('0x10')][_0x3de1('0x11')]);}logger[_0x3de1('0x10')](_0x3de1('0xc'),_0x34291a,_0x4eb503['error'][_0x3de1('0x11')]);return _0x11df45(_0x4eb503['error'][_0x3de1('0x11')]);}else{logger['info'](_0x3de1('0xc'),_0x34291a,_0x3de1('0xd'));_0x11df45(_0x4eb503[_0x3de1('0x12')]['message']);}})[_0x3de1('0x13')](function(_0x25f619){logger[_0x3de1('0x10')](_0x3de1('0xc'),_0x34291a,_0x25f619);_0x41b5bb(_0x25f619);});});}exports[_0x3de1('0x14')]=function(_0x510e5a){var _0x19254b=this;return new Promise(function(_0x5a10f2,_0x1e5a06){return db[_0x3de1('0x15')]['create'](_0x510e5a[_0x3de1('0x16')],{'raw':_0x510e5a['options']?_0x510e5a[_0x3de1('0x17')][_0x3de1('0x18')]===undefined?!![]:![]:!![]})[_0x3de1('0x19')](function(_0x5635b5){logger[_0x3de1('0x1a')](_0x3de1('0x14'),_0x510e5a);logger[_0x3de1('0xe')]('CreateCmHopperHistory',_0x510e5a,JSON[_0x3de1('0xf')](_0x5635b5));_0x5a10f2(_0x5635b5);})[_0x3de1('0x13')](function(_0x594bdb){logger['error'](_0x3de1('0x14'),_0x594bdb[_0x3de1('0x11')],_0x510e5a);_0x1e5a06(_0x19254b[_0x3de1('0x10')](0x1f4,_0x594bdb[_0x3de1('0x11')]));});});};exports[_0x3de1('0x1b')]=function(_0x4370f2){var _0x1e074c=this;return new Promise(function(_0xa7af52,_0x491b3d){return db['CmHopperHistory'][_0x3de1('0x1c')]({'raw':_0x4370f2[_0x3de1('0x17')]?_0x4370f2[_0x3de1('0x17')][_0x3de1('0x18')]===undefined?!![]:![]:!![],'where':_0x4370f2[_0x3de1('0x17')]?_0x4370f2['options'][_0x3de1('0x1d')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x3de1('0x1e')][_0x3de1('0x1f')]('id')),_0x3de1('0x20')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x23')))),_0x3de1('0x24')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db['sequelize']['fn']('IF',db['sequelize'][_0x3de1('0x22')]('`state`\x20=\x2010,\x201,\x20null'))),_0x3de1('0x25')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db['sequelize']['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x26')))),_0x3de1('0x27')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x28'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x29')))),_0x3de1('0x2a')],[db[_0x3de1('0x1e')]['fn']('AVG',db['sequelize']['fn']('IF',db['sequelize'][_0x3de1('0x22')](_0x3de1('0x2b')))),_0x3de1('0x2c')]]})[_0x3de1('0x19')](function(_0x498068){logger['info'](_0x3de1('0x1b'),_0x4370f2);logger['debug']('AvgHandleTime',_0x4370f2,JSON[_0x3de1('0xf')](_0x498068));_0xa7af52(_0x498068);})[_0x3de1('0x13')](function(_0x4ee49b){logger[_0x3de1('0x10')](_0x3de1('0x1b'),_0x4ee49b[_0x3de1('0x11')],_0x4370f2);_0x491b3d(_0x1e074c[_0x3de1('0x10')](0x1f4,_0x4ee49b[_0x3de1('0x11')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x447186){var _0x5a389d=this;return new Promise(function(_0x23cc71,_0x336480){return db[_0x3de1('0x15')][_0x3de1('0x1c')]({'raw':_0x447186[_0x3de1('0x17')]?_0x447186[_0x3de1('0x17')][_0x3de1('0x18')]===undefined?!![]:![]:!![],'where':_0x447186[_0x3de1('0x17')]?_0x447186[_0x3de1('0x17')]['where']||null:null,'attributes':[[_0x3de1('0x2d'),'name'],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x2e')))),_0x3de1('0x2f')],[db['sequelize']['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x30')))),_0x3de1('0x31')],[db['sequelize']['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x23')))),_0x3de1('0x32')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db['sequelize'][_0x3de1('0x22')](_0x3de1('0x33')))),'outboundBusyCallsDay'],[db['sequelize']['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db['sequelize']['literal'](_0x3de1('0x34')))),_0x3de1('0x35')],[db['sequelize']['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')]['literal'](_0x3de1('0x36')))),_0x3de1('0x37')],[db[_0x3de1('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x3de1('0x38')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x39')))),_0x3de1('0x3a')],[db['sequelize']['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db['sequelize']['literal'](_0x3de1('0x3b')))),_0x3de1('0x3c')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x3de1('0x3d')))),_0x3de1('0x3e')],[db[_0x3de1('0x1e')]['fn']('COUNT',db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x3f')))),_0x3de1('0x40')],[db['sequelize']['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x41')))),_0x3de1('0x42')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x43')))),_0x3de1('0x40')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db[_0x3de1('0x1e')]['fn']('IF',db[_0x3de1('0x1e')][_0x3de1('0x22')](_0x3de1('0x44')))),_0x3de1('0x45')]],'group':[_0x3de1('0x2d')]})['then'](function(_0x3fa07a){logger[_0x3de1('0x1a')]('GetVoiceQueueHopperHistory',_0x447186);logger[_0x3de1('0xe')](_0x3de1('0x46'),_0x447186,JSON[_0x3de1('0xf')](_0x3fa07a));_0x23cc71(_0x3fa07a);})[_0x3de1('0x13')](function(_0x818fc5){logger[_0x3de1('0x10')](_0x3de1('0x46'),_0x818fc5[_0x3de1('0x11')],_0x447186);_0x336480(_0x5a389d['error'](0x1f4,_0x818fc5[_0x3de1('0x11')]));});});};exports[_0x3de1('0x47')]=function(_0x22de90){var _0x26b88f=this;return new Promise(function(_0x3a9898,_0x1c9671){return db[_0x3de1('0x15')][_0x3de1('0x1c')]({'raw':_0x22de90[_0x3de1('0x17')]?_0x22de90[_0x3de1('0x17')][_0x3de1('0x18')]===undefined?!![]:![]:!![],'where':_0x22de90['options']?_0x22de90[_0x3de1('0x17')]['where']||null:null,'attributes':[['campaign',_0x3de1('0x48')],[db[_0x3de1('0x1e')]['fn']('COUNT',db['sequelize'][_0x3de1('0x1f')]('id')),_0x3de1('0x49')],[db[_0x3de1('0x1e')]['fn'](_0x3de1('0x21'),db['sequelize']['fn']('IF',db['sequelize'][_0x3de1('0x22')](_0x3de1('0x23')))),_0x3de1('0x4a')]],'group':[_0x3de1('0x2d')]})[_0x3de1('0x19')](function(_0x515a45){logger[_0x3de1('0x1a')](_0x3de1('0x47'),_0x22de90);logger['debug'](_0x3de1('0x47'),_0x22de90,JSON[_0x3de1('0xf')](_0x515a45));_0x3a9898(_0x515a45);})[_0x3de1('0x13')](function(_0x17b9f2){logger[_0x3de1('0x10')](_0x3de1('0x47'),_0x17b9f2[_0x3de1('0x11')],_0x22de90);_0x1c9671(_0x26b88f[_0x3de1('0x10')](0x1f4,_0x17b9f2[_0x3de1('0x11')]));});});};
\ No newline at end of file
+var _0x6f7a=['outboundCongestionCallsDay','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundReCallsDay','campaign','GetCampaignHopperHistory','ivrTotalCallsDays','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperHistory,\x20%s,\x20%s','message','request\x20sent','result','catch','CmHopperHistory','body','options','raw','CreateCmHopperHistory','AvgHandleTime','where','sequelize','col','predictiveIntervalTotalCalls','COUNT','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','AVG','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','findAll','name','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null'];(function(_0x47b136,_0x1917d3){var _0x4e39dd=function(_0x24181b){while(--_0x24181b){_0x47b136['push'](_0x47b136['shift']());}};_0x4e39dd(++_0x1917d3);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x186e17,_0x45a415){_0x186e17=_0x186e17-0x0;var _0x1b5657=_0x6f7a[_0x186e17];return _0x1b5657;};'use strict';var _=require(_0xa6f7('0x0'));var util=require(_0xa6f7('0x1'));var moment=require(_0xa6f7('0x2'));var BPromise=require(_0xa6f7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa6f7('0x4'));var db=require(_0xa6f7('0x5'))['db'];var utils=require(_0xa6f7('0x6'));var logger=require(_0xa6f7('0x7'))(_0xa6f7('0x8'));var config=require(_0xa6f7('0x9'));var jayson=require(_0xa6f7('0xa'));var client=jayson[_0xa6f7('0xb')][_0xa6f7('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x335aaa,_0x1a06d1,_0x481a8c){return new BPromise(function(_0x4b4f9e,_0x30f2a7){return client[_0xa6f7('0xd')](_0x335aaa,_0x481a8c)[_0xa6f7('0xe')](function(_0x362404){logger[_0xa6f7('0xf')]('CmHopperHistory,\x20%s,\x20%s',_0x1a06d1,'request\x20sent');logger[_0xa6f7('0x10')](_0xa6f7('0x11'),_0x1a06d1,'request\x20sent',JSON[_0xa6f7('0x12')](_0x362404));if(_0x362404['error']){if(_0x362404[_0xa6f7('0x13')][_0xa6f7('0x14')]===0x1f4){logger[_0xa6f7('0x13')](_0xa6f7('0x15'),_0x1a06d1,_0x362404['error'][_0xa6f7('0x16')]);return _0x30f2a7(_0x362404['error'][_0xa6f7('0x16')]);}logger[_0xa6f7('0x13')](_0xa6f7('0x15'),_0x1a06d1,_0x362404['error'][_0xa6f7('0x16')]);return _0x4b4f9e(_0x362404['error'][_0xa6f7('0x16')]);}else{logger['info'](_0xa6f7('0x15'),_0x1a06d1,_0xa6f7('0x17'));_0x4b4f9e(_0x362404[_0xa6f7('0x18')]['message']);}})[_0xa6f7('0x19')](function(_0x22635e){logger[_0xa6f7('0x13')](_0xa6f7('0x15'),_0x1a06d1,_0x22635e);_0x30f2a7(_0x22635e);});});}exports['CreateCmHopperHistory']=function(_0x4a8827){var _0xba7755=this;return new Promise(function(_0x5298ba,_0x378967){return db[_0xa6f7('0x1a')]['create'](_0x4a8827[_0xa6f7('0x1b')],{'raw':_0x4a8827[_0xa6f7('0x1c')]?_0x4a8827[_0xa6f7('0x1c')][_0xa6f7('0x1d')]===undefined?!![]:![]:!![]})[_0xa6f7('0xe')](function(_0x1aa8dc){logger['info'](_0xa6f7('0x1e'),_0x4a8827);logger[_0xa6f7('0x10')]('CreateCmHopperHistory',_0x4a8827,JSON['stringify'](_0x1aa8dc));_0x5298ba(_0x1aa8dc);})['catch'](function(_0x1de6c9){logger[_0xa6f7('0x13')]('CreateCmHopperHistory',_0x1de6c9['message'],_0x4a8827);_0x378967(_0xba7755['error'](0x1f4,_0x1de6c9[_0xa6f7('0x16')]));});});};exports[_0xa6f7('0x1f')]=function(_0x28263e){var _0x5baaa9=this;return new Promise(function(_0x484874,_0x2f4907){return db['CmHopperHistory']['findAll']({'raw':_0x28263e[_0xa6f7('0x1c')]?_0x28263e['options'][_0xa6f7('0x1d')]===undefined?!![]:![]:!![],'where':_0x28263e[_0xa6f7('0x1c')]?_0x28263e[_0xa6f7('0x1c')][_0xa6f7('0x20')]||null:null,'attributes':[[db[_0xa6f7('0x21')]['fn']('COUNT',db['sequelize'][_0xa6f7('0x22')]('id')),_0xa6f7('0x23')],[db['sequelize']['fn'](_0xa6f7('0x24'),db[_0xa6f7('0x21')]['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')](_0xa6f7('0x26')))),_0xa6f7('0x27')],[db[_0xa6f7('0x21')]['fn'](_0xa6f7('0x24'),db[_0xa6f7('0x21')]['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')](_0xa6f7('0x28')))),'predictiveIntervalDroppedCallsTimeout'],[db[_0xa6f7('0x21')]['fn'](_0xa6f7('0x24'),db['sequelize']['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')]('`state`\x20=\x2011,\x201,\x20null'))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0xa6f7('0x21')]['fn'](_0xa6f7('0x29'),db[_0xa6f7('0x21')]['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),'predictiveIntervalAvgHoldtime'],[db[_0xa6f7('0x21')]['fn']('AVG',db[_0xa6f7('0x21')]['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')](_0xa6f7('0x2a')))),_0xa6f7('0x2b')]]})[_0xa6f7('0xe')](function(_0x4d2d38){logger[_0xa6f7('0xf')](_0xa6f7('0x1f'),_0x28263e);logger[_0xa6f7('0x10')]('AvgHandleTime',_0x28263e,JSON[_0xa6f7('0x12')](_0x4d2d38));_0x484874(_0x4d2d38);})['catch'](function(_0x1170c4){logger[_0xa6f7('0x13')](_0xa6f7('0x1f'),_0x1170c4['message'],_0x28263e);_0x2f4907(_0x5baaa9[_0xa6f7('0x13')](0x1f4,_0x1170c4[_0xa6f7('0x16')]));});});};exports[_0xa6f7('0x2c')]=function(_0x37b833){var _0x14444c=this;return new Promise(function(_0x28490e,_0x4a28a7){return db[_0xa6f7('0x1a')][_0xa6f7('0x2d')]({'raw':_0x37b833[_0xa6f7('0x1c')]?_0x37b833[_0xa6f7('0x1c')][_0xa6f7('0x1d')]===undefined?!![]:![]:!![],'where':_0x37b833[_0xa6f7('0x1c')]?_0x37b833[_0xa6f7('0x1c')][_0xa6f7('0x20')]||null:null,'attributes':[['campaign',_0xa6f7('0x2e')],[db[_0xa6f7('0x21')]['fn'](_0xa6f7('0x24'),db['sequelize']['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')]('`state`\x20=\x200,\x201,\x20null'))),_0xa6f7('0x2f')],[db[_0xa6f7('0x21')]['fn'](_0xa6f7('0x24'),db[_0xa6f7('0x21')]['fn']('IF',db[_0xa6f7('0x21')]['literal'](_0xa6f7('0x30')))),_0xa6f7('0x31')],[db[_0xa6f7('0x21')]['fn'](_0xa6f7('0x24'),db[_0xa6f7('0x21')]['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')](_0xa6f7('0x26')))),'outboundAnswerCallsDay'],[db['sequelize']['fn'](_0xa6f7('0x24'),db[_0xa6f7('0x21')]['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')](_0xa6f7('0x32')))),_0xa6f7('0x33')],[db[_0xa6f7('0x21')]['fn'](_0xa6f7('0x24'),db[_0xa6f7('0x21')]['fn']('IF',db[_0xa6f7('0x21')]['literal'](_0xa6f7('0x34')))),_0xa6f7('0x35')],[db['sequelize']['fn'](_0xa6f7('0x24'),db[_0xa6f7('0x21')]['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xa6f7('0x36')],[db['sequelize']['fn']('COUNT',db[_0xa6f7('0x21')]['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')](_0xa6f7('0x37')))),_0xa6f7('0x38')],[db[_0xa6f7('0x21')]['fn'](_0xa6f7('0x24'),db['sequelize']['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')]('`state`\x20=\x2012,\x201,\x20null'))),_0xa6f7('0x39')],[db[_0xa6f7('0x21')]['fn'](_0xa6f7('0x24'),db['sequelize']['fn']('IF',db[_0xa6f7('0x21')]['literal'](_0xa6f7('0x3a')))),_0xa6f7('0x3b')],[db[_0xa6f7('0x21')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xa6f7('0x21')]['literal'](_0xa6f7('0x3c')))),'outboundOriginateFailureCallsDay'],[db['sequelize']['fn'](_0xa6f7('0x24'),db[_0xa6f7('0x21')]['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')](_0xa6f7('0x3d')))),_0xa6f7('0x3e')],[db['sequelize']['fn'](_0xa6f7('0x24'),db[_0xa6f7('0x21')]['fn']('IF',db['sequelize'][_0xa6f7('0x25')]('`state`\x20=\x2016,\x201,\x20null'))),_0xa6f7('0x3f')],[db['sequelize']['fn']('COUNT',db[_0xa6f7('0x21')]['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')](_0xa6f7('0x40')))),_0xa6f7('0x3e')],[db['sequelize']['fn'](_0xa6f7('0x24'),db[_0xa6f7('0x21')]['fn']('IF',db['sequelize'][_0xa6f7('0x25')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0xa6f7('0x41')]],'group':[_0xa6f7('0x42')]})[_0xa6f7('0xe')](function(_0x55369a){logger[_0xa6f7('0xf')]('GetVoiceQueueHopperHistory',_0x37b833);logger[_0xa6f7('0x10')](_0xa6f7('0x2c'),_0x37b833,JSON[_0xa6f7('0x12')](_0x55369a));_0x28490e(_0x55369a);})[_0xa6f7('0x19')](function(_0xa6bff9){logger['error']('GetVoiceQueueHopperHistory',_0xa6bff9[_0xa6f7('0x16')],_0x37b833);_0x4a28a7(_0x14444c[_0xa6f7('0x13')](0x1f4,_0xa6bff9[_0xa6f7('0x16')]));});});};exports[_0xa6f7('0x43')]=function(_0x5931e9){var _0x9d901e=this;return new Promise(function(_0x2105dd,_0x14d841){return db[_0xa6f7('0x1a')][_0xa6f7('0x2d')]({'raw':_0x5931e9[_0xa6f7('0x1c')]?_0x5931e9['options'][_0xa6f7('0x1d')]===undefined?!![]:![]:!![],'where':_0x5931e9[_0xa6f7('0x1c')]?_0x5931e9[_0xa6f7('0x1c')]['where']||null:null,'attributes':[[_0xa6f7('0x42'),_0xa6f7('0x2e')],[db[_0xa6f7('0x21')]['fn'](_0xa6f7('0x24'),db['sequelize']['col']('id')),_0xa6f7('0x44')],[db[_0xa6f7('0x21')]['fn'](_0xa6f7('0x24'),db[_0xa6f7('0x21')]['fn']('IF',db[_0xa6f7('0x21')][_0xa6f7('0x25')](_0xa6f7('0x26')))),'ivrAnswerCallsDay']],'group':[_0xa6f7('0x42')]})[_0xa6f7('0xe')](function(_0x2f131c){logger[_0xa6f7('0xf')](_0xa6f7('0x43'),_0x5931e9);logger[_0xa6f7('0x10')](_0xa6f7('0x43'),_0x5931e9,JSON[_0xa6f7('0x12')](_0x2f131c));_0x2105dd(_0x2f131c);})[_0xa6f7('0x19')](function(_0x186956){logger[_0xa6f7('0x13')]('GetCampaignHopperHistory',_0x186956[_0xa6f7('0x16')],_0x5931e9);_0x14d841(_0x9d901e['error'](0x1f4,_0x186956[_0xa6f7('0x16')]));});});};
\ No newline at end of file
index 3858fc4..f1056e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd6e=['get','index','/describe','describe','/:id','isAuthenticated','show','post','create','update','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0xfd6e,0xfb));var _0xefd6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd6e[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xefd6('0x0'));var util=require('util');var path=require(_0xefd6('0x1'));var timeout=require('connect-timeout');var express=require(_0xefd6('0x2'));var router=express[_0xefd6('0x3')]();var fs_extra=require(_0xefd6('0x4'));var auth=require(_0xefd6('0x5'));var interaction=require(_0xefd6('0x6'));var config=require(_0xefd6('0x7'));var controller=require(_0xefd6('0x8'));router[_0xefd6('0x9')]('/',auth['isAuthenticated'](),controller[_0xefd6('0xa')]);router[_0xefd6('0x9')](_0xefd6('0xb'),auth['isAuthenticated'](),controller[_0xefd6('0xc')]);router['get'](_0xefd6('0xd'),auth[_0xefd6('0xe')](),controller[_0xefd6('0xf')]);router[_0xefd6('0x10')]('/',auth[_0xefd6('0xe')](),controller[_0xefd6('0x11')]);router['put']('/:id',auth[_0xefd6('0xe')](),controller[_0xefd6('0x12')]);module[_0xefd6('0x13')]=router;
\ No newline at end of file
+var _0xbde9=['/:id','show','post','put','update','exports','multer','util','connect-timeout','express','Router','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','describe'];(function(_0x5c72ee,_0x5a8bf8){var _0x231876=function(_0x955276){while(--_0x955276){_0x5c72ee['push'](_0x5c72ee['shift']());}};_0x231876(++_0x5a8bf8);}(_0xbde9,0x1af));var _0x9bde=function(_0xc2b3ce,_0x533dfd){_0xc2b3ce=_0xc2b3ce-0x0;var _0x30e6bb=_0xbde9[_0xc2b3ce];return _0x30e6bb;};'use strict';var multer=require(_0x9bde('0x0'));var util=require(_0x9bde('0x1'));var path=require('path');var timeout=require(_0x9bde('0x2'));var express=require(_0x9bde('0x3'));var router=express[_0x9bde('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9bde('0x5'));var controller=require(_0x9bde('0x6'));router[_0x9bde('0x7')]('/',auth[_0x9bde('0x8')](),controller[_0x9bde('0x9')]);router[_0x9bde('0x7')]('/describe',auth[_0x9bde('0x8')](),controller[_0x9bde('0xa')]);router[_0x9bde('0x7')](_0x9bde('0xb'),auth[_0x9bde('0x8')](),controller[_0x9bde('0xc')]);router[_0x9bde('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x9bde('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x9bde('0xf')]);module[_0x9bde('0x10')]=router;
\ No newline at end of file
index 91ba720..250bd9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f42=['sequelize','STRING','name'];(function(_0x13b781,_0x2a536b){var _0x3969a3=function(_0x3657ed){while(--_0x3657ed){_0x13b781['push'](_0x13b781['shift']());}};_0x3969a3(++_0x2a536b);}(_0x7f42,0x1dd));var _0x27f4=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x7f42[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x27f4('0x0'));module['exports']={'name':{'type':Sequelize[_0x27f4('0x1')],'unique':_0x27f4('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize[_0x27f4('0x1')]}};
\ No newline at end of file
+var _0xab3f=['sequelize','STRING','name'];(function(_0x18546c,_0x4daf94){var _0x46ef43=function(_0x559377){while(--_0x559377){_0x18546c['push'](_0x18546c['shift']());}};_0x46ef43(++_0x4daf94);}(_0xab3f,0x72));var _0xfab3=function(_0x4e4c25,_0x33aed8){_0x4e4c25=_0x4e4c25-0x0;var _0x1d1436=_0xab3f[_0x4e4c25];return _0x1d1436;};'use strict';var Sequelize=require(_0xfab3('0x0'));module['exports']={'name':{'type':Sequelize[_0xfab3('0x1')],'unique':_0xfab3('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xfab3('0x1')]},'dialPrefix':{'type':Sequelize[_0xfab3('0x1')]}};
\ No newline at end of file
index c42e52e..c60229b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x172b=['TEXT','text','Sequelize','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','cm_contacts','getCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','register','sendStatus','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Lists','destroy','status','end','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','nolimit','sort','pick','where','merge','VIRTUAL','filter','CmList','includeAll','findAll','rows','catch','params','keys','length','include','find','create','user','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','ListId','Disposition','findOne','hasOwnProperty','order','options','removeDispositions','ids','CmContact','isArray','tags','join','push','omit','success','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','raw','getContactsCsv','cf_%d','isEmpty','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','addCustomField','sequelize','addCustomFields'];(function(_0x16d369,_0xbbaa52){var _0x53c1ca=function(_0x49908d){while(--_0x49908d){_0x16d369['push'](_0x16d369['shift']());}};_0x53c1ca(++_0xbbaa52);}(_0x172b,0xa2));var _0xb172=function(_0x649844,_0x4a0bd9){_0x649844=_0x649844-0x0;var _0x3eb0a7=_0x172b[_0x649844];return _0x3eb0a7;};'use strict';var emlformat=require(_0xb172('0x0'));var rimraf=require(_0xb172('0x1'));var zipdir=require(_0xb172('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb172('0x3'));var moment=require(_0xb172('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb172('0x5'));var util=require('util');var path=require(_0xb172('0x6'));var sox=require('sox');var csv=require(_0xb172('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb172('0x8'));var _=require(_0xb172('0x9'));var squel=require(_0xb172('0xa'));var crypto=require(_0xb172('0xb'));var jsforce=require(_0xb172('0xc'));var deskjs=require(_0xb172('0xd'));var toCsv=require(_0xb172('0x7'));var querystring=require(_0xb172('0xe'));var Papa=require('papaparse');var Redis=require(_0xb172('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb172('0x10'));var hardwareService=require(_0xb172('0x11'));var logger=require('../../config/logger')(_0xb172('0x12'));var utils=require(_0xb172('0x13'));var config=require(_0xb172('0x14'));var licenseUtil=require(_0xb172('0x15'));var db=require(_0xb172('0x16'))['db'];config[_0xb172('0x17')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb172('0x17')]));require('./cmList.socket')[_0xb172('0x18')](socket);function respondWithStatusCode(_0x390f05,_0x3bb7dd){_0x3bb7dd=_0x3bb7dd||0xcc;return function(_0xde31c5){if(_0xde31c5){return _0x390f05[_0xb172('0x19')](_0x3bb7dd);}return _0x390f05['status'](_0x3bb7dd)['end']();};}function respondWithResult(_0x3229c0,_0x500f0c){_0x500f0c=_0x500f0c||0xc8;return function(_0xce2f8){if(_0xce2f8){return _0x3229c0['status'](_0x500f0c)[_0xb172('0x1a')](_0xce2f8);}};}function respondWithFilteredResult(_0x300b11,_0x24f8e0){return function(_0x1618a6){if(_0x1618a6){var _0x21a6d7=typeof _0x24f8e0[_0xb172('0x1b')]===_0xb172('0x1c')&&typeof _0x24f8e0[_0xb172('0x1d')]===_0xb172('0x1c');var _0x437e44=_0x1618a6[_0xb172('0x1e')];var _0x1a7e0a=_0x21a6d7?0x0:_0x24f8e0[_0xb172('0x1b')];var _0x19fd8d=_0x21a6d7?_0x1618a6['count']:_0x24f8e0[_0xb172('0x1b')]+_0x24f8e0['limit'];var _0x525429;if(_0x19fd8d>=_0x437e44){_0x19fd8d=_0x437e44;_0x525429=0xc8;}else{_0x525429=0xce;}_0x300b11['status'](_0x525429);return _0x300b11[_0xb172('0x1f')](_0xb172('0x20'),_0x1a7e0a+'-'+_0x19fd8d+'/'+_0x437e44)[_0xb172('0x1a')](_0x1618a6);}return null;};}function patchUpdates(_0x2a9476){return function(_0xa11015){try{jsonpatch[_0xb172('0x21')](_0xa11015,_0x2a9476,!![]);}catch(_0x9b7188){return BPromise[_0xb172('0x22')](_0x9b7188);}return _0xa11015[_0xb172('0x23')]();};}function saveUpdates(_0x136357,_0x15b95b){return function(_0xab1d1){if(_0xab1d1){return _0xab1d1[_0xb172('0x24')](_0x136357)['then'](function(_0x53f7d5){return _0x53f7d5;});}return null;};}function removeEntity(_0x5ddc80,_0xaf5d67){return function(_0x41f788){if(_0x41f788){return _0x41f788['destroy']()[_0xb172('0x25')](function(){var _0x282f0f=_0x41f788[_0xb172('0x26')]({'plain':!![]});var _0x1af286=_0xb172('0x27');return db['UserProfileResource'][_0xb172('0x28')]({'where':{'type':_0x1af286,'resourceId':_0x282f0f['id']}})[_0xb172('0x25')](function(){return _0x41f788;});})[_0xb172('0x25')](function(){_0x5ddc80[_0xb172('0x29')](0xcc)[_0xb172('0x2a')]();});}};}function handleEntityNotFound(_0x453434,_0x5a2084){return function(_0x3b8aaa){if(!_0x3b8aaa){_0x453434[_0xb172('0x19')](0x194);}return _0x3b8aaa;};}function handleError(_0x48e97a,_0x41be1d){_0x41be1d=_0x41be1d||0x1f4;return function(_0x16c251){logger[_0xb172('0x2b')](_0x16c251[_0xb172('0x2c')]);if(_0x16c251[_0xb172('0x2d')]){delete _0x16c251[_0xb172('0x2d')];}_0x48e97a[_0xb172('0x29')](_0x41be1d)['send'](_0x16c251);};}exports[_0xb172('0x2e')]=function(_0x1fed03,_0x16aa5d){var _0x1d77f0={},_0xbff955={},_0x55577e={'count':0x0,'rows':[]};var _0x349b9e=_[_0xb172('0x2f')](db['CmList'][_0xb172('0x30')],function(_0x3ad24a){return{'name':_0x3ad24a[_0xb172('0x31')],'type':_0x3ad24a[_0xb172('0x32')][_0xb172('0x33')]};});_0xbff955[_0xb172('0x34')]=_[_0xb172('0x2f')](_0x349b9e,'name');_0xbff955['query']=_['keys'](_0x1fed03[_0xb172('0x35')]);_0xbff955[_0xb172('0x36')]=_['intersection'](_0xbff955[_0xb172('0x34')],_0xbff955[_0xb172('0x35')]);_0x1d77f0[_0xb172('0x37')]=_[_0xb172('0x38')](_0xbff955[_0xb172('0x34')],qs['fields'](_0x1fed03[_0xb172('0x35')][_0xb172('0x39')]));_0x1d77f0[_0xb172('0x37')]=_0x1d77f0[_0xb172('0x37')]['length']?_0x1d77f0[_0xb172('0x37')]:_0xbff955[_0xb172('0x34')];if(!_0x1fed03[_0xb172('0x35')]['hasOwnProperty'](_0xb172('0x3a'))){_0x1d77f0[_0xb172('0x1d')]=qs['limit'](_0x1fed03['query']['limit']);_0x1d77f0['offset']=qs[_0xb172('0x1b')](_0x1fed03[_0xb172('0x35')][_0xb172('0x1b')]);}_0x1d77f0['order']=qs[_0xb172('0x3b')](_0x1fed03['query']['sort']);_0x1d77f0['where']=qs[_0xb172('0x36')](_[_0xb172('0x3c')](_0x1fed03[_0xb172('0x35')],_0xbff955['filters']),_0x349b9e);if(_0x1fed03[_0xb172('0x35')]['filter']){_0x1d77f0[_0xb172('0x3d')]=_[_0xb172('0x3e')](_0x1d77f0[_0xb172('0x3d')],{'$or':_[_0xb172('0x2f')](_0x349b9e,function(_0x16bb26){if(_0x16bb26[_0xb172('0x32')]!==_0xb172('0x3f')){var _0x5ac29c={};_0x5ac29c[_0x16bb26[_0xb172('0x2d')]]={'$like':'%'+_0x1fed03[_0xb172('0x35')][_0xb172('0x40')]+'%'};return _0x5ac29c;}})});}_0x1d77f0=_[_0xb172('0x3e')]({},_0x1d77f0,_0x1fed03['options']);var _0x2c1fa5={'where':_0x1d77f0['where']};return db[_0xb172('0x41')]['count'](_0x2c1fa5)['then'](function(_0x32e5a4){_0x55577e[_0xb172('0x1e')]=_0x32e5a4;if(_0x1fed03[_0xb172('0x35')][_0xb172('0x42')]){_0x1d77f0['include']=[{'all':!![]}];}return db[_0xb172('0x41')][_0xb172('0x43')](_0x1d77f0);})[_0xb172('0x25')](function(_0x15368c){_0x55577e[_0xb172('0x44')]=_0x15368c;return _0x55577e;})[_0xb172('0x25')](respondWithFilteredResult(_0x16aa5d,_0x1d77f0))[_0xb172('0x45')](handleError(_0x16aa5d,null));};exports['show']=function(_0x5dd19b,_0x1811f4){var _0x4c6542={'raw':![],'where':{'id':_0x5dd19b[_0xb172('0x46')]['id']}},_0x42eca9={};_0x42eca9['model']=_[_0xb172('0x47')](db[_0xb172('0x41')][_0xb172('0x30')]);_0x42eca9[_0xb172('0x35')]=_['keys'](_0x5dd19b[_0xb172('0x35')]);_0x42eca9['filters']=_[_0xb172('0x38')](_0x42eca9[_0xb172('0x34')],_0x42eca9[_0xb172('0x35')]);_0x4c6542[_0xb172('0x37')]=_[_0xb172('0x38')](_0x42eca9[_0xb172('0x34')],qs[_0xb172('0x39')](_0x5dd19b[_0xb172('0x35')][_0xb172('0x39')]));_0x4c6542[_0xb172('0x37')]=_0x4c6542[_0xb172('0x37')][_0xb172('0x48')]?_0x4c6542[_0xb172('0x37')]:_0x42eca9[_0xb172('0x34')];if(_0x5dd19b[_0xb172('0x35')]['includeAll']){_0x4c6542[_0xb172('0x49')]=[{'all':!![]}];}_0x4c6542=_[_0xb172('0x3e')]({},_0x4c6542,_0x5dd19b['options']);return db[_0xb172('0x41')][_0xb172('0x4a')](_0x4c6542)[_0xb172('0x25')](handleEntityNotFound(_0x1811f4,null))[_0xb172('0x25')](respondWithResult(_0x1811f4,null))[_0xb172('0x45')](handleError(_0x1811f4,null));};exports['create']=function(_0x386519,_0x19d5ea){return db[_0xb172('0x41')][_0xb172('0x4b')](_0x386519['body'],{})[_0xb172('0x25')](function(_0x240481){var _0x20a6d2=_0x386519[_0xb172('0x4c')][_0xb172('0x26')]({'plain':!![]});if(!_0x20a6d2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x20a6d2['role']===_0xb172('0x4c')){var _0x25e78e=_0x240481[_0xb172('0x26')]({'plain':!![]});var _0x1f7912=_0xb172('0x27');return db['UserProfileSection']['find']({'where':{'name':_0x1f7912,'userProfileId':_0x20a6d2[_0xb172('0x4d')]},'raw':!![]})[_0xb172('0x25')](function(_0x58c45b){if(_0x58c45b&&_0x58c45b[_0xb172('0x4e')]===0x0){return db[_0xb172('0x4f')][_0xb172('0x4b')]({'name':_0x25e78e[_0xb172('0x2d')],'resourceId':_0x25e78e['id'],'type':_0x58c45b[_0xb172('0x2d')],'sectionId':_0x58c45b['id']},{})[_0xb172('0x25')](function(){return _0x240481;});}else{return _0x240481;}})['catch'](function(_0x89a8fe){logger['error'](_0xb172('0x50'),_0x89a8fe);throw _0x89a8fe;});}return _0x240481;})[_0xb172('0x25')](respondWithResult(_0x19d5ea,0xc9))[_0xb172('0x45')](handleError(_0x19d5ea,null));};exports[_0xb172('0x24')]=function(_0xc455b1,_0x3d2910){if(_0xc455b1[_0xb172('0x51')]['id']){delete _0xc455b1[_0xb172('0x51')]['id'];}return db[_0xb172('0x41')][_0xb172('0x4a')]({'where':{'id':_0xc455b1[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x3d2910,null))[_0xb172('0x25')](saveUpdates(_0xc455b1[_0xb172('0x51')],null))[_0xb172('0x25')](respondWithResult(_0x3d2910,null))[_0xb172('0x45')](handleError(_0x3d2910,null));};exports[_0xb172('0x28')]=function(_0x4f588d,_0x34c463){return db[_0xb172('0x41')]['find']({'where':{'id':_0x4f588d[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x34c463,null))[_0xb172('0x25')](removeEntity(_0x34c463,null))[_0xb172('0x45')](handleError(_0x34c463,null));};exports['describe']=function(_0x50c919,_0x367bcb){return db['CmList'][_0xb172('0x52')]()[_0xb172('0x25')](respondWithResult(_0x367bcb,null))[_0xb172('0x45')](handleError(_0x367bcb,null));};exports[_0xb172('0x53')]=function(_0x120c5,_0x5f4062,_0x115568){if(_0x120c5['body']['id']){delete _0x120c5['body']['id'];}return db[_0xb172('0x41')][_0xb172('0x4a')]({'where':{'id':_0x120c5['params']['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x5f4062,null))['then'](function(_0x3b2c84){if(_0x3b2c84){_0x120c5[_0xb172('0x51')][_0xb172('0x54')]=_0x3b2c84['id'];return db[_0xb172('0x55')][_0xb172('0x4b')](_0x120c5['body']);}})[_0xb172('0x25')](respondWithResult(_0x5f4062,null))['catch'](handleError(_0x5f4062,null));};exports['getDispositions']=function(_0x590cf1,_0x3841b0,_0x3727f7){var _0x5a77fe={'raw':![],'where':{}};var _0x117922={};var _0x3310cc={'count':0x0,'rows':[]};return db[_0xb172('0x41')][_0xb172('0x56')]({'where':{'id':_0x590cf1[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x3841b0,null))[_0xb172('0x25')](function(_0x1ffba0){if(_0x1ffba0){_0x117922[_0xb172('0x34')]=_['keys'](db[_0xb172('0x55')]['rawAttributes']);_0x117922[_0xb172('0x35')]=_[_0xb172('0x47')](_0x590cf1[_0xb172('0x35')]);_0x117922[_0xb172('0x36')]=_[_0xb172('0x38')](_0x117922[_0xb172('0x34')],_0x117922['query']);_0x5a77fe[_0xb172('0x37')]=_[_0xb172('0x38')](_0x117922[_0xb172('0x34')],qs[_0xb172('0x39')](_0x590cf1[_0xb172('0x35')][_0xb172('0x39')]));_0x5a77fe[_0xb172('0x37')]=_0x5a77fe[_0xb172('0x37')][_0xb172('0x48')]?_0x5a77fe['attributes']:_0x117922[_0xb172('0x34')];if(!_0x590cf1[_0xb172('0x35')][_0xb172('0x57')](_0xb172('0x3a'))){_0x5a77fe[_0xb172('0x1d')]=qs[_0xb172('0x1d')](_0x590cf1[_0xb172('0x35')][_0xb172('0x1d')]);_0x5a77fe['offset']=qs[_0xb172('0x1b')](_0x590cf1[_0xb172('0x35')][_0xb172('0x1b')]);}_0x5a77fe[_0xb172('0x58')]=qs['sort'](_0x590cf1[_0xb172('0x35')][_0xb172('0x3b')]);_0x5a77fe[_0xb172('0x3d')]=qs[_0xb172('0x36')](_[_0xb172('0x3c')](_0x590cf1[_0xb172('0x35')],_0x117922[_0xb172('0x36')]));_0x5a77fe[_0xb172('0x3d')]['ListId']=_0x1ffba0['id'];if(_0x590cf1[_0xb172('0x35')][_0xb172('0x40')]){_0x5a77fe[_0xb172('0x3d')]=_[_0xb172('0x3e')](_0x5a77fe[_0xb172('0x3d')],{'$or':_[_0xb172('0x2f')](_0x5a77fe[_0xb172('0x37')],function(_0x38f07c){var _0x25e606={};_0x25e606[_0x38f07c]={'$like':'%'+_0x590cf1[_0xb172('0x35')]['filter']+'%'};return _0x25e606;})});}_0x5a77fe=_['merge']({},_0x5a77fe,_0x590cf1[_0xb172('0x59')]);return db[_0xb172('0x55')][_0xb172('0x1e')]({'where':_0x5a77fe[_0xb172('0x3d')]})[_0xb172('0x25')](function(_0x382382){_0x3310cc[_0xb172('0x1e')]=_0x382382;if(_0x590cf1[_0xb172('0x35')][_0xb172('0x42')]){_0x5a77fe[_0xb172('0x49')]=[{'all':!![]}];}return db['Disposition'][_0xb172('0x43')](_0x5a77fe);})[_0xb172('0x25')](function(_0x3dd023){_0x3310cc[_0xb172('0x44')]=_0x3dd023;return _0x3310cc;});}})[_0xb172('0x25')](respondWithFilteredResult(_0x3841b0,_0x5a77fe))['catch'](handleError(_0x3841b0,null));};exports[_0xb172('0x5a')]=function(_0x6869a9,_0x15b28a,_0xe7cd18){return db[_0xb172('0x41')][_0xb172('0x4a')]({'where':{'id':_0x6869a9[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x15b28a,null))['then'](function(_0x448ba0){if(_0x448ba0){return _0x448ba0[_0xb172('0x5a')](_0x6869a9['query'][_0xb172('0x5b')]);}})[_0xb172('0x25')](respondWithStatusCode(_0x15b28a,null))[_0xb172('0x45')](handleError(_0x15b28a,null));};exports['addContacts']=function(_0x2d3bd8,_0x184b32,_0x30a2cf){return db[_0xb172('0x41')]['find']({'where':{'id':_0x2d3bd8[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x184b32,null))[_0xb172('0x25')](function(_0x4bd23b){if(_0x4bd23b){var _0x19f9de=[];var _0xa94360={'success':[],'errors':[]};return db[_0xb172('0x5c')][_0xb172('0x52')]()['then'](function(_0x338980){if(_0x2d3bd8['body']['tags']&&_[_0xb172('0x5d')](_0x2d3bd8[_0xb172('0x51')][_0xb172('0x5e')])){if(_0x2d3bd8[_0xb172('0x51')][_0xb172('0x5e')][_0xb172('0x48')]){_0x2d3bd8['body'][_0xb172('0x5e')]=_0x2d3bd8['body']['tags'][_0xb172('0x5f')](';')+';';}else{_0x2d3bd8[_0xb172('0x51')]['tags']=null;}}else{_0x2d3bd8[_0xb172('0x51')][_0xb172('0x5e')]=null;}if(_0x2d3bd8[_0xb172('0x51')]&&_[_0xb172('0x5d')](_0x2d3bd8['body'])){for(var _0x525975=0x0;_0x525975<_0x2d3bd8[_0xb172('0x51')]['length'];_0x525975+=0x1){_0x2d3bd8[_0xb172('0x51')][_0x525975][_0xb172('0x54')]=_0x2d3bd8[_0xb172('0x46')]['id'];_0x19f9de[_0xb172('0x60')](_0x2d3bd8['body'][_0x525975]);}return BPromise['each'](_0x19f9de,function(_0x4a60f3){return db[_0xb172('0x5c')]['create'](_[_0xb172('0x61')](_0x4a60f3,[_0xb172('0x5b'),'id'])||{},{'fields':_[_0xb172('0x47')](_0x338980),'raw':!![]})[_0xb172('0x25')](function(_0x58f780){_0xa94360[_0xb172('0x62')][_0xb172('0x60')](_0x58f780[_0xb172('0x63')]);})[_0xb172('0x45')](function(_0x15b317){_0xa94360[_0xb172('0x64')][_0xb172('0x60')]({'data':_0x4a60f3,'error':_0x15b317[_0xb172('0x65')]});});})[_0xb172('0x25')](function(_0x39a4b1){return _0xa94360;})[_0xb172('0x45')](function(_0x1f438e){return _0x1f438e;});}else{_0x184b32[_0xb172('0x29')](0x190)['json']({'message':_0xb172('0x66')});}});}})[_0xb172('0x25')](respondWithResult(_0x184b32,null))['catch'](handleError(_0x184b32,null));};exports[_0xb172('0x67')]=function(_0x40bd12,_0x2ddc3f,_0x3f4588){var _0x4c11ae;return db[_0xb172('0x41')]['find']({'where':{'id':_0x40bd12[_0xb172('0x46')]['id']},'include':[{'model':db[_0xb172('0x68')],'as':_0xb172('0x69')}]})[_0xb172('0x25')](handleEntityNotFound(_0x2ddc3f,null))[_0xb172('0x25')](function(_0x794bb1){if(_0x794bb1){_0x4c11ae=_0x794bb1;return db['CmContact'][_0xb172('0x30')];}})[_0xb172('0x25')](function(_0x5b2031){if(_0x5b2031){var _0x3d80f5={};var _0x233776={};_0x233776[_0xb172('0x34')]=_[_0xb172('0x6a')](_[_0xb172('0x47')](_0x5b2031),_[_0xb172('0x2f')](_0x4c11ae[_0xb172('0x69')],function(_0x56cbea){return util[_0xb172('0x6b')]('cf_%d',_0x56cbea['id']);}));_0x233776[_0xb172('0x35')]=_[_0xb172('0x47')](_0x40bd12['query']);_0x233776['filters']=_[_0xb172('0x38')](_0x233776['model'],_0x233776['query']);_0x3d80f5[_0xb172('0x37')]=_[_0xb172('0x38')](_0x233776[_0xb172('0x34')],qs[_0xb172('0x39')](_0x40bd12[_0xb172('0x35')][_0xb172('0x39')]));_0x3d80f5['attributes']=_0x3d80f5[_0xb172('0x37')][_0xb172('0x48')]?_0x3d80f5[_0xb172('0x37')]:_0x233776[_0xb172('0x34')];if(!_0x40bd12[_0xb172('0x35')][_0xb172('0x57')](_0xb172('0x3a'))){_0x3d80f5['limit']=qs[_0xb172('0x1d')](_0x40bd12[_0xb172('0x35')][_0xb172('0x1d')]);_0x3d80f5[_0xb172('0x1b')]=qs[_0xb172('0x1b')](_0x40bd12[_0xb172('0x35')]['offset']);}_0x3d80f5[_0xb172('0x58')]=qs['sort'](_0x40bd12[_0xb172('0x35')][_0xb172('0x3b')]);_0x3d80f5['where']=qs[_0xb172('0x36')](_['pick'](_0x40bd12[_0xb172('0x35')],_0x233776[_0xb172('0x36')]));_0x3d80f5[_0xb172('0x6c')]=!![];if(_0x40bd12[_0xb172('0x35')][_0xb172('0x40')]){_0x3d80f5[_0xb172('0x3d')]=_['merge'](_0x3d80f5[_0xb172('0x3d')],{'$or':_[_0xb172('0x2f')](_0x3d80f5[_0xb172('0x37')],function(_0x12cbab){var _0x152538={};_0x152538[_0x12cbab]={'$like':'%'+_0x40bd12[_0xb172('0x35')][_0xb172('0x40')]+'%'};return _0x152538;})});}_0x3d80f5=_['merge']({},_0x3d80f5,_0x40bd12[_0xb172('0x59')]);return _0x4c11ae['getContacts'](_0x3d80f5);}})[_0xb172('0x25')](respondWithResult(_0x2ddc3f,null))['catch'](handleError(_0x2ddc3f,null));};exports[_0xb172('0x6d')]=function(_0x12eb89,_0x163e89,_0xfb4a69){var _0x54b803;return db['CmList'][_0xb172('0x4a')]({'where':{'id':_0x12eb89['params']['id']},'include':[{'model':db['CmCustomField'],'as':_0xb172('0x69')}]})['then'](handleEntityNotFound(_0x163e89,null))[_0xb172('0x25')](function(_0x22cb2b){if(_0x22cb2b){_0x54b803=_0x22cb2b;return db[_0xb172('0x5c')]['rawAttributes'];}})['then'](function(_0x15bed0){if(_0x15bed0){var _0x3d66da={};var _0x3085b7={};_0x3085b7[_0xb172('0x34')]=_[_0xb172('0x6a')](_[_0xb172('0x47')](_0x15bed0),_['map'](_0x54b803[_0xb172('0x69')],function(_0x53bed4){return util[_0xb172('0x6b')](_0xb172('0x6e'),_0x53bed4['id']);}));_0x3085b7[_0xb172('0x35')]=_[_0xb172('0x47')](_0x12eb89[_0xb172('0x35')]);_0x3085b7[_0xb172('0x36')]=_[_0xb172('0x38')](_0x3085b7[_0xb172('0x34')],_0x3085b7[_0xb172('0x35')]);_0x3d66da[_0xb172('0x37')]=_[_0xb172('0x38')](_0x3085b7[_0xb172('0x34')],qs[_0xb172('0x39')](_0x12eb89[_0xb172('0x35')][_0xb172('0x39')]));_0x3d66da[_0xb172('0x37')]=_0x3d66da[_0xb172('0x37')]['length']?_0x3d66da[_0xb172('0x37')]:_0x3085b7['model'];if(!_0x12eb89[_0xb172('0x35')]['hasOwnProperty'](_0xb172('0x3a'))){_0x3d66da[_0xb172('0x1d')]=qs[_0xb172('0x1d')](_0x12eb89['query'][_0xb172('0x1d')]);_0x3d66da[_0xb172('0x1b')]=qs[_0xb172('0x1b')](_0x12eb89[_0xb172('0x35')]['offset']);}_0x3d66da[_0xb172('0x58')]=qs['sort'](_0x12eb89['query']['sort']);_0x3d66da[_0xb172('0x3d')]=qs[_0xb172('0x36')](_[_0xb172('0x3c')](_0x12eb89['query'],_0x3085b7[_0xb172('0x36')]));_0x3d66da[_0xb172('0x6c')]=!![];if(_0x12eb89[_0xb172('0x35')][_0xb172('0x40')]){_0x3d66da[_0xb172('0x3d')]=_[_0xb172('0x3e')](_0x3d66da[_0xb172('0x3d')],{'$or':_[_0xb172('0x2f')](_0x3d66da[_0xb172('0x37')],function(_0x1519a9){var _0x321874={};_0x321874[_0x1519a9]={'$like':'%'+_0x12eb89[_0xb172('0x35')]['filter']+'%'};return _0x321874;})});}_0x3d66da=_[_0xb172('0x3e')]({},_0x3d66da,_0x12eb89[_0xb172('0x59')]);return _0x54b803[_0xb172('0x67')](_0x3d66da);}})['then'](function(_0x2c186c){if(!_[_0xb172('0x6f')](_0x2c186c)){var _0x1e91c6=toCsv(_0x2c186c);var _0x153f55=Date['now']();fs[_0xb172('0x70')](util[_0xb172('0x6b')](_0xb172('0x71'),_0x54b803['id'],_0x153f55),_0x1e91c6);_0x163e89[_0xb172('0x72')](_0xb172('0x73'),_0xb172('0x74')+util['format'](_0xb172('0x75'),_0x54b803['id'],_0x153f55));_0x163e89['setHeader'](_0xb172('0x76'),'text/csv');return _0x163e89['download'](util[_0xb172('0x6b')](_0xb172('0x71'),_0x54b803['id'],_0x153f55));}else{return _0x163e89[_0xb172('0x19')](0xcc);}})[_0xb172('0x45')](handleError(_0x163e89,null));};exports[_0xb172('0x77')]=function(_0x2b2170,_0x595d7e,_0x4b08e0){var _0x81354c;delete _0x2b2170[_0xb172('0x51')]['id'];return db[_0xb172('0x41')][_0xb172('0x56')]({'where':{'id':_0x2b2170[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x595d7e,null))['then'](function(_0x1362e4){if(_0x1362e4){return db[_0xb172('0x78')]['transaction'](function(_0x1b4046){return db[_0xb172('0x68')][_0xb172('0x4b')](_0x2b2170['body'],{'transaction':_0x1b4046})[_0xb172('0x25')](function(_0x43a0c5){_0x81354c=_0x43a0c5;return _0x1362e4[_0xb172('0x79')](_0x43a0c5,{'transaction':_0x1b4046});})['then'](function(){var _0x5bcea2={'type':db['Sequelize'][_0xb172('0x7a')],'transaction':_0x1b4046};switch(_0x2b2170[_0xb172('0x51')]['type']){case _0xb172('0x7b'):_0x5bcea2['type']=db[_0xb172('0x7c')][_0xb172('0x7a')];break;case _0xb172('0x7d'):_0x5bcea2[_0xb172('0x32')]=db['Sequelize'][_0xb172('0x7e')];break;case _0xb172('0x7f'):_0x5bcea2['type']=db[_0xb172('0x7c')][_0xb172('0x80')];_0x5bcea2[_0xb172('0x81')]=![];break;default:}return db[_0xb172('0x78')][_0xb172('0x82')]['addColumn'](_0xb172('0x83'),util[_0xb172('0x6b')]('cf_%s',_0x81354c['id']),_0x5bcea2);})['then'](function(){return _0x81354c;});});}})[_0xb172('0x25')](respondWithResult(_0x595d7e,null))[_0xb172('0x45')](handleError(_0x595d7e,null));};exports[_0xb172('0x84')]=function(_0x2c49d1,_0x5e3601,_0x3070fa){var _0x3a306c={};var _0x2634c2={};var _0xf22c59;var _0x8574a9;return db[_0xb172('0x41')][_0xb172('0x56')]({'where':{'id':_0x2c49d1[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x5e3601,null))['then'](function(_0x3a2ed4){if(_0x3a2ed4){_0xf22c59=_0x3a2ed4;_0x2634c2[_0xb172('0x34')]=_[_0xb172('0x47')](db[_0xb172('0x68')][_0xb172('0x30')]);_0x2634c2['query']=_[_0xb172('0x47')](_0x2c49d1['query']);_0x2634c2[_0xb172('0x36')]=_[_0xb172('0x38')](_0x2634c2['model'],_0x2634c2[_0xb172('0x35')]);_0x3a306c[_0xb172('0x37')]=_[_0xb172('0x38')](_0x2634c2[_0xb172('0x34')],qs[_0xb172('0x39')](_0x2c49d1[_0xb172('0x35')]['fields']));_0x3a306c[_0xb172('0x37')]=_0x3a306c['attributes']['length']?_0x3a306c['attributes']:_0x2634c2['model'];_0x3a306c[_0xb172('0x58')]=qs[_0xb172('0x3b')](_0x2c49d1[_0xb172('0x35')][_0xb172('0x3b')]);_0x3a306c['where']=qs[_0xb172('0x36')](_[_0xb172('0x3c')](_0x2c49d1[_0xb172('0x35')],_0x2634c2['filters']));_0x3a306c[_0xb172('0x3d')]=_[_0xb172('0x3e')](_0x3a306c[_0xb172('0x3d')],{'$or':[{'ListId':_0x3a2ed4['id']},{'ListId':null}]});if(_0x2c49d1[_0xb172('0x35')][_0xb172('0x40')]){_0x3a306c['where']=_[_0xb172('0x3e')](_0x3a306c['where'],{'$or':_['map'](_0x3a306c[_0xb172('0x37')],function(_0x1806fd){var _0x526d78={};_0x526d78[_0x1806fd]={'$like':'%'+_0x2c49d1['query'][_0xb172('0x40')]+'%'};return _0x526d78;})});}_0x3a306c=_[_0xb172('0x3e')]({},_0x3a306c,_0x2c49d1[_0xb172('0x59')]);return db[_0xb172('0x68')][_0xb172('0x85')](_0x3a306c);}})[_0xb172('0x25')](respondWithResult(_0x5e3601,null))[_0xb172('0x45')](handleError(_0x5e3601,null));};exports[_0xb172('0x86')]=function(_0x325224,_0x555b00,_0x4e2647){return db[_0xb172('0x41')]['find']({'where':{'id':_0x325224[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x555b00,null))['then'](function(_0x3621c3){if(_0x3621c3){return _0x3621c3[_0xb172('0x86')](_0x325224['body'][_0xb172('0x5b')],_[_0xb172('0x61')](_0x325224[_0xb172('0x51')],[_0xb172('0x5b'),'id'])||{})[_0xb172('0x87')](function(_0x358b16){for(var _0x4d590d=0x0;_0x4d590d<_0x325224[_0xb172('0x51')][_0xb172('0x5b')][_0xb172('0x48')];_0x4d590d+=0x1){socket[_0xb172('0x88')](_0xb172('0x89'),{'UserId':Number(_0x325224[_0xb172('0x51')]['ids'][_0x4d590d]),'CmListId':Number(_0x325224['params']['id'])});}return _0x358b16;});}})[_0xb172('0x25')](respondWithResult(_0x555b00,null))[_0xb172('0x45')](handleError(_0x555b00,null));};exports[_0xb172('0x8a')]=function(_0x144f13,_0x526098,_0x2540c3){return db[_0xb172('0x41')]['find']({'where':{'id':_0x144f13[_0xb172('0x46')]['id']}})[_0xb172('0x25')](handleEntityNotFound(_0x526098,null))[_0xb172('0x25')](function(_0x2b1efb){if(_0x2b1efb){return _0x2b1efb[_0xb172('0x8a')](_0x144f13['query']['ids'])['then'](function(){if(_[_0xb172('0x5d')](_0x144f13[_0xb172('0x35')]['ids'])){for(var _0x13e703=0x0;_0x13e703<_0x144f13[_0xb172('0x35')]['ids']['length'];_0x13e703+=0x1){socket['emit'](_0xb172('0x8b'),{'UserId':Number(_0x144f13[_0xb172('0x35')][_0xb172('0x5b')][_0x13e703]),'CmListId':Number(_0x144f13['params']['id'])});}}else{socket[_0xb172('0x88')]('userCmList:remove',{'UserId':Number(_0x144f13[_0xb172('0x35')][_0xb172('0x5b')]),'CmListId':Number(_0x144f13[_0xb172('0x46')]['id'])});}});}})[_0xb172('0x25')](respondWithStatusCode(_0x526098,null))[_0xb172('0x45')](handleError(_0x526098,null));};exports[_0xb172('0x8c')]=function(_0x1aedd5,_0x1f4d83,_0x24c01b){var _0x1b3f2f={};var _0x4d53d9={};var _0x163649;var _0x35e426;return db[_0xb172('0x41')][_0xb172('0x56')]({'where':{'id':_0x1aedd5[_0xb172('0x46')]['id']}})['then'](handleEntityNotFound(_0x1f4d83,null))[_0xb172('0x25')](function(_0x28e4ae){if(_0x28e4ae){_0x163649=_0x28e4ae;_0x4d53d9[_0xb172('0x34')]=_[_0xb172('0x47')](db[_0xb172('0x8d')][_0xb172('0x30')]);_0x4d53d9['query']=_['keys'](_0x1aedd5['query']);_0x4d53d9[_0xb172('0x36')]=_[_0xb172('0x38')](_0x4d53d9[_0xb172('0x34')],_0x4d53d9[_0xb172('0x35')]);_0x1b3f2f[_0xb172('0x37')]=_[_0xb172('0x38')](_0x4d53d9[_0xb172('0x34')],qs[_0xb172('0x39')](_0x1aedd5[_0xb172('0x35')][_0xb172('0x39')]));_0x1b3f2f[_0xb172('0x37')]=_0x1b3f2f['attributes'][_0xb172('0x48')]?_0x1b3f2f['attributes']:_0x4d53d9[_0xb172('0x34')];_0x1b3f2f[_0xb172('0x58')]=qs[_0xb172('0x3b')](_0x1aedd5[_0xb172('0x35')][_0xb172('0x3b')]);_0x1b3f2f['where']=qs[_0xb172('0x36')](_[_0xb172('0x3c')](_0x1aedd5[_0xb172('0x35')],_0x4d53d9[_0xb172('0x36')]));if(_0x1aedd5[_0xb172('0x35')][_0xb172('0x40')]){_0x1b3f2f[_0xb172('0x3d')]=_[_0xb172('0x3e')](_0x1b3f2f['where'],{'$or':_[_0xb172('0x2f')](_0x1b3f2f[_0xb172('0x37')],function(_0x31dde5){var _0x60d3e0={};_0x60d3e0[_0x31dde5]={'$like':'%'+_0x1aedd5[_0xb172('0x35')]['filter']+'%'};return _0x60d3e0;})});}_0x1b3f2f=_[_0xb172('0x3e')]({},_0x1b3f2f,_0x1aedd5[_0xb172('0x59')]);return _0x163649['getAgents'](_0x1b3f2f);}})[_0xb172('0x25')](function(_0x24aa0a){if(_0x24aa0a){_0x35e426=_0x24aa0a[_0xb172('0x48')];if(!_0x1aedd5[_0xb172('0x35')]['hasOwnProperty'](_0xb172('0x3a'))){_0x1b3f2f[_0xb172('0x1d')]=qs[_0xb172('0x1d')](_0x1aedd5['query'][_0xb172('0x1d')]);_0x1b3f2f[_0xb172('0x1b')]=qs[_0xb172('0x1b')](_0x1aedd5['query'][_0xb172('0x1b')]);}return _0x163649[_0xb172('0x8c')](_0x1b3f2f);}})['then'](function(_0x42b13f){if(_0x42b13f){return _0x42b13f?{'count':_0x35e426,'rows':_0x42b13f}:null;}})[_0xb172('0x25')](respondWithResult(_0x1f4d83,null))[_0xb172('0x45')](handleError(_0x1f4d83,null));};
\ No newline at end of file
+var _0x9a1c=['concat','cf_%d','raw','getContactsCsv','format','isEmpty','now','/tmp/list_%d_%s.csv','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','Sequelize','TEXT','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','cm_contacts','cf_%s','getCustomFields','addAgents','spread','removeAgents','emit','userCmList:remove','getAgents','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','end','offset','undefined','limit','count','status','set','json','apply','reject','save','update','then','destroy','get','Lists','stack','send','map','CmList','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','name','options','includeAll','include','findAll','rows','catch','show','params','keys','create','body','user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','Disposition','getDispositions','findOne','order','removeDispositions','ids','addContacts','CmContact','tags','isArray','push','each','omit','success','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields'];(function(_0x43a390,_0x14bcee){var _0x3f7923=function(_0x47bd11){while(--_0x47bd11){_0x43a390['push'](_0x43a390['shift']());}};_0x3f7923(++_0x14bcee);}(_0x9a1c,0x1d1));var _0xc9a1=function(_0x367f64,_0x3bcbdb){_0x367f64=_0x367f64-0x0;var _0x8296f0=_0x9a1c[_0x367f64];return _0x8296f0;};'use strict';var emlformat=require(_0xc9a1('0x0'));var rimraf=require(_0xc9a1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc9a1('0x2'));var rp=require('request-promise');var moment=require(_0xc9a1('0x3'));var BPromise=require(_0xc9a1('0x4'));var Mustache=require(_0xc9a1('0x5'));var util=require(_0xc9a1('0x6'));var path=require(_0xc9a1('0x7'));var sox=require(_0xc9a1('0x8'));var csv=require('to-csv');var ejs=require(_0xc9a1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc9a1('0xa'));var squel=require(_0xc9a1('0xb'));var crypto=require(_0xc9a1('0xc'));var jsforce=require(_0xc9a1('0xd'));var deskjs=require(_0xc9a1('0xe'));var toCsv=require(_0xc9a1('0xf'));var querystring=require(_0xc9a1('0x10'));var Papa=require(_0xc9a1('0x11'));var Redis=require('ioredis');var authService=require(_0xc9a1('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xc9a1('0x13'));var hardwareService=require(_0xc9a1('0x14'));var logger=require(_0xc9a1('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xc9a1('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xc9a1('0x17'))['db'];config[_0xc9a1('0x18')]=_[_0xc9a1('0x19')](config[_0xc9a1('0x18')],{'host':_0xc9a1('0x1a'),'port':0x18eb});var socket=require(_0xc9a1('0x1b'))(new Redis(config[_0xc9a1('0x18')]));require(_0xc9a1('0x1c'))[_0xc9a1('0x1d')](socket);function respondWithStatusCode(_0x461096,_0x5f13a7){_0x5f13a7=_0x5f13a7||0xcc;return function(_0x10dc5a){if(_0x10dc5a){return _0x461096[_0xc9a1('0x1e')](_0x5f13a7);}return _0x461096['status'](_0x5f13a7)[_0xc9a1('0x1f')]();};}function respondWithResult(_0x38158d,_0x1721a7){_0x1721a7=_0x1721a7||0xc8;return function(_0x20b61e){if(_0x20b61e){return _0x38158d['status'](_0x1721a7)['json'](_0x20b61e);}};}function respondWithFilteredResult(_0xeb86bb,_0x24f777){return function(_0x21dc82){if(_0x21dc82){var _0x2a999a=typeof _0x24f777[_0xc9a1('0x20')]===_0xc9a1('0x21')&&typeof _0x24f777[_0xc9a1('0x22')]===_0xc9a1('0x21');var _0x3a5f90=_0x21dc82[_0xc9a1('0x23')];var _0x444b14=_0x2a999a?0x0:_0x24f777[_0xc9a1('0x20')];var _0x26bebe=_0x2a999a?_0x21dc82[_0xc9a1('0x23')]:_0x24f777[_0xc9a1('0x20')]+_0x24f777[_0xc9a1('0x22')];var _0x4cd843;if(_0x26bebe>=_0x3a5f90){_0x26bebe=_0x3a5f90;_0x4cd843=0xc8;}else{_0x4cd843=0xce;}_0xeb86bb[_0xc9a1('0x24')](_0x4cd843);return _0xeb86bb[_0xc9a1('0x25')]('Content-Range',_0x444b14+'-'+_0x26bebe+'/'+_0x3a5f90)[_0xc9a1('0x26')](_0x21dc82);}return null;};}function patchUpdates(_0xc0a3fc){return function(_0x2ed8e7){try{jsonpatch[_0xc9a1('0x27')](_0x2ed8e7,_0xc0a3fc,!![]);}catch(_0x53f693){return BPromise[_0xc9a1('0x28')](_0x53f693);}return _0x2ed8e7[_0xc9a1('0x29')]();};}function saveUpdates(_0x55aaa2,_0x2e8aca){return function(_0x35dbf9){if(_0x35dbf9){return _0x35dbf9[_0xc9a1('0x2a')](_0x55aaa2)[_0xc9a1('0x2b')](function(_0x10f493){return _0x10f493;});}return null;};}function removeEntity(_0x37fb97,_0x124083){return function(_0x10f9f){if(_0x10f9f){return _0x10f9f[_0xc9a1('0x2c')]()[_0xc9a1('0x2b')](function(){var _0x3adfc7=_0x10f9f[_0xc9a1('0x2d')]({'plain':!![]});var _0x562aa8=_0xc9a1('0x2e');return db['UserProfileResource'][_0xc9a1('0x2c')]({'where':{'type':_0x562aa8,'resourceId':_0x3adfc7['id']}})[_0xc9a1('0x2b')](function(){return _0x10f9f;});})[_0xc9a1('0x2b')](function(){_0x37fb97[_0xc9a1('0x24')](0xcc)[_0xc9a1('0x1f')]();});}};}function handleEntityNotFound(_0x56cdbc,_0x478d7e){return function(_0x515b56){if(!_0x515b56){_0x56cdbc['sendStatus'](0x194);}return _0x515b56;};}function handleError(_0x360f48,_0x4e6546){_0x4e6546=_0x4e6546||0x1f4;return function(_0x48aed8){logger['error'](_0x48aed8[_0xc9a1('0x2f')]);if(_0x48aed8['name']){delete _0x48aed8['name'];}_0x360f48[_0xc9a1('0x24')](_0x4e6546)[_0xc9a1('0x30')](_0x48aed8);};}exports['index']=function(_0x5063e3,_0x30f9dc){var _0x100237={},_0x38a583={},_0x529dff={'count':0x0,'rows':[]};var _0x455aeb=_[_0xc9a1('0x31')](db[_0xc9a1('0x32')][_0xc9a1('0x33')],function(_0x18862b){return{'name':_0x18862b[_0xc9a1('0x34')],'type':_0x18862b[_0xc9a1('0x35')][_0xc9a1('0x36')]};});_0x38a583[_0xc9a1('0x37')]=_[_0xc9a1('0x31')](_0x455aeb,'name');_0x38a583[_0xc9a1('0x38')]=_['keys'](_0x5063e3[_0xc9a1('0x38')]);_0x38a583[_0xc9a1('0x39')]=_[_0xc9a1('0x3a')](_0x38a583['model'],_0x38a583['query']);_0x100237[_0xc9a1('0x3b')]=_[_0xc9a1('0x3a')](_0x38a583[_0xc9a1('0x37')],qs['fields'](_0x5063e3['query'][_0xc9a1('0x3c')]));_0x100237[_0xc9a1('0x3b')]=_0x100237[_0xc9a1('0x3b')][_0xc9a1('0x3d')]?_0x100237[_0xc9a1('0x3b')]:_0x38a583[_0xc9a1('0x37')];if(!_0x5063e3[_0xc9a1('0x38')][_0xc9a1('0x3e')](_0xc9a1('0x3f'))){_0x100237[_0xc9a1('0x22')]=qs[_0xc9a1('0x22')](_0x5063e3[_0xc9a1('0x38')][_0xc9a1('0x22')]);_0x100237[_0xc9a1('0x20')]=qs[_0xc9a1('0x20')](_0x5063e3[_0xc9a1('0x38')][_0xc9a1('0x20')]);}_0x100237['order']=qs[_0xc9a1('0x40')](_0x5063e3[_0xc9a1('0x38')][_0xc9a1('0x40')]);_0x100237[_0xc9a1('0x41')]=qs[_0xc9a1('0x39')](_[_0xc9a1('0x42')](_0x5063e3['query'],_0x38a583[_0xc9a1('0x39')]),_0x455aeb);if(_0x5063e3[_0xc9a1('0x38')][_0xc9a1('0x43')]){_0x100237[_0xc9a1('0x41')]=_[_0xc9a1('0x44')](_0x100237['where'],{'$or':_[_0xc9a1('0x31')](_0x455aeb,function(_0x5b875a){if(_0x5b875a[_0xc9a1('0x35')]!=='VIRTUAL'){var _0x215aae={};_0x215aae[_0x5b875a[_0xc9a1('0x45')]]={'$like':'%'+_0x5063e3[_0xc9a1('0x38')][_0xc9a1('0x43')]+'%'};return _0x215aae;}})});}_0x100237=_[_0xc9a1('0x44')]({},_0x100237,_0x5063e3[_0xc9a1('0x46')]);var _0x570738={'where':_0x100237['where']};return db['CmList'][_0xc9a1('0x23')](_0x570738)['then'](function(_0x56b979){_0x529dff[_0xc9a1('0x23')]=_0x56b979;if(_0x5063e3['query'][_0xc9a1('0x47')]){_0x100237[_0xc9a1('0x48')]=[{'all':!![]}];}return db[_0xc9a1('0x32')][_0xc9a1('0x49')](_0x100237);})[_0xc9a1('0x2b')](function(_0xf4eb9f){_0x529dff[_0xc9a1('0x4a')]=_0xf4eb9f;return _0x529dff;})[_0xc9a1('0x2b')](respondWithFilteredResult(_0x30f9dc,_0x100237))[_0xc9a1('0x4b')](handleError(_0x30f9dc,null));};exports[_0xc9a1('0x4c')]=function(_0x36e911,_0x46e15e){var _0x3e26c4={'raw':![],'where':{'id':_0x36e911[_0xc9a1('0x4d')]['id']}},_0x5de008={};_0x5de008[_0xc9a1('0x37')]=_['keys'](db[_0xc9a1('0x32')]['rawAttributes']);_0x5de008[_0xc9a1('0x38')]=_[_0xc9a1('0x4e')](_0x36e911[_0xc9a1('0x38')]);_0x5de008[_0xc9a1('0x39')]=_[_0xc9a1('0x3a')](_0x5de008[_0xc9a1('0x37')],_0x5de008[_0xc9a1('0x38')]);_0x3e26c4[_0xc9a1('0x3b')]=_['intersection'](_0x5de008[_0xc9a1('0x37')],qs[_0xc9a1('0x3c')](_0x36e911['query']['fields']));_0x3e26c4[_0xc9a1('0x3b')]=_0x3e26c4['attributes']['length']?_0x3e26c4['attributes']:_0x5de008[_0xc9a1('0x37')];if(_0x36e911[_0xc9a1('0x38')]['includeAll']){_0x3e26c4[_0xc9a1('0x48')]=[{'all':!![]}];}_0x3e26c4=_[_0xc9a1('0x44')]({},_0x3e26c4,_0x36e911[_0xc9a1('0x46')]);return db[_0xc9a1('0x32')]['find'](_0x3e26c4)[_0xc9a1('0x2b')](handleEntityNotFound(_0x46e15e,null))[_0xc9a1('0x2b')](respondWithResult(_0x46e15e,null))['catch'](handleError(_0x46e15e,null));};exports[_0xc9a1('0x4f')]=function(_0x5c272e,_0x49e255){return db['CmList'][_0xc9a1('0x4f')](_0x5c272e[_0xc9a1('0x50')],{})[_0xc9a1('0x2b')](function(_0x273763){var _0x43b257=_0x5c272e[_0xc9a1('0x51')]['get']({'plain':!![]});if(!_0x43b257)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x43b257[_0xc9a1('0x52')]===_0xc9a1('0x51')){var _0x402b56=_0x273763['get']({'plain':!![]});var _0x33f39d=_0xc9a1('0x2e');return db[_0xc9a1('0x53')][_0xc9a1('0x54')]({'where':{'name':_0x33f39d,'userProfileId':_0x43b257[_0xc9a1('0x55')]},'raw':!![]})[_0xc9a1('0x2b')](function(_0x364423){if(_0x364423&&_0x364423['autoAssociation']===0x0){return db['UserProfileResource'][_0xc9a1('0x4f')]({'name':_0x402b56[_0xc9a1('0x45')],'resourceId':_0x402b56['id'],'type':_0x364423[_0xc9a1('0x45')],'sectionId':_0x364423['id']},{})['then'](function(){return _0x273763;});}else{return _0x273763;}})[_0xc9a1('0x4b')](function(_0x2714a4){logger['error'](_0xc9a1('0x56'),_0x2714a4);throw _0x2714a4;});}return _0x273763;})[_0xc9a1('0x2b')](respondWithResult(_0x49e255,0xc9))[_0xc9a1('0x4b')](handleError(_0x49e255,null));};exports[_0xc9a1('0x2a')]=function(_0x7f6753,_0x2ca256){if(_0x7f6753[_0xc9a1('0x50')]['id']){delete _0x7f6753['body']['id'];}return db[_0xc9a1('0x32')][_0xc9a1('0x54')]({'where':{'id':_0x7f6753[_0xc9a1('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2ca256,null))[_0xc9a1('0x2b')](saveUpdates(_0x7f6753[_0xc9a1('0x50')],null))['then'](respondWithResult(_0x2ca256,null))[_0xc9a1('0x4b')](handleError(_0x2ca256,null));};exports[_0xc9a1('0x2c')]=function(_0x5130cd,_0x5e657e){return db[_0xc9a1('0x32')][_0xc9a1('0x54')]({'where':{'id':_0x5130cd[_0xc9a1('0x4d')]['id']}})[_0xc9a1('0x2b')](handleEntityNotFound(_0x5e657e,null))[_0xc9a1('0x2b')](removeEntity(_0x5e657e,null))[_0xc9a1('0x4b')](handleError(_0x5e657e,null));};exports['describe']=function(_0x3d30ca,_0x15f537){return db[_0xc9a1('0x32')][_0xc9a1('0x57')]()['then'](respondWithResult(_0x15f537,null))[_0xc9a1('0x4b')](handleError(_0x15f537,null));};exports[_0xc9a1('0x58')]=function(_0x4beafd,_0x3d570e,_0x9f3b80){if(_0x4beafd[_0xc9a1('0x50')]['id']){delete _0x4beafd[_0xc9a1('0x50')]['id'];}return db[_0xc9a1('0x32')][_0xc9a1('0x54')]({'where':{'id':_0x4beafd[_0xc9a1('0x4d')]['id']}})[_0xc9a1('0x2b')](handleEntityNotFound(_0x3d570e,null))[_0xc9a1('0x2b')](function(_0x58e085){if(_0x58e085){_0x4beafd[_0xc9a1('0x50')][_0xc9a1('0x59')]=_0x58e085['id'];return db[_0xc9a1('0x5a')][_0xc9a1('0x4f')](_0x4beafd['body']);}})[_0xc9a1('0x2b')](respondWithResult(_0x3d570e,null))[_0xc9a1('0x4b')](handleError(_0x3d570e,null));};exports[_0xc9a1('0x5b')]=function(_0x2d7009,_0x4cd8ed,_0x37f4b8){var _0x149ace={'raw':![],'where':{}};var _0x3e5326={};var _0x3b296c={'count':0x0,'rows':[]};return db['CmList'][_0xc9a1('0x5c')]({'where':{'id':_0x2d7009['params']['id']}})[_0xc9a1('0x2b')](handleEntityNotFound(_0x4cd8ed,null))[_0xc9a1('0x2b')](function(_0x4c2d4e){if(_0x4c2d4e){_0x3e5326['model']=_[_0xc9a1('0x4e')](db[_0xc9a1('0x5a')][_0xc9a1('0x33')]);_0x3e5326[_0xc9a1('0x38')]=_[_0xc9a1('0x4e')](_0x2d7009['query']);_0x3e5326['filters']=_[_0xc9a1('0x3a')](_0x3e5326[_0xc9a1('0x37')],_0x3e5326[_0xc9a1('0x38')]);_0x149ace[_0xc9a1('0x3b')]=_[_0xc9a1('0x3a')](_0x3e5326['model'],qs[_0xc9a1('0x3c')](_0x2d7009[_0xc9a1('0x38')][_0xc9a1('0x3c')]));_0x149ace[_0xc9a1('0x3b')]=_0x149ace[_0xc9a1('0x3b')]['length']?_0x149ace[_0xc9a1('0x3b')]:_0x3e5326['model'];if(!_0x2d7009[_0xc9a1('0x38')][_0xc9a1('0x3e')](_0xc9a1('0x3f'))){_0x149ace[_0xc9a1('0x22')]=qs[_0xc9a1('0x22')](_0x2d7009[_0xc9a1('0x38')]['limit']);_0x149ace[_0xc9a1('0x20')]=qs[_0xc9a1('0x20')](_0x2d7009['query'][_0xc9a1('0x20')]);}_0x149ace[_0xc9a1('0x5d')]=qs[_0xc9a1('0x40')](_0x2d7009[_0xc9a1('0x38')]['sort']);_0x149ace[_0xc9a1('0x41')]=qs[_0xc9a1('0x39')](_[_0xc9a1('0x42')](_0x2d7009[_0xc9a1('0x38')],_0x3e5326['filters']));_0x149ace['where']['ListId']=_0x4c2d4e['id'];if(_0x2d7009[_0xc9a1('0x38')][_0xc9a1('0x43')]){_0x149ace[_0xc9a1('0x41')]=_[_0xc9a1('0x44')](_0x149ace[_0xc9a1('0x41')],{'$or':_[_0xc9a1('0x31')](_0x149ace['attributes'],function(_0x4f1f74){var _0x32db9d={};_0x32db9d[_0x4f1f74]={'$like':'%'+_0x2d7009['query'][_0xc9a1('0x43')]+'%'};return _0x32db9d;})});}_0x149ace=_[_0xc9a1('0x44')]({},_0x149ace,_0x2d7009[_0xc9a1('0x46')]);return db[_0xc9a1('0x5a')][_0xc9a1('0x23')]({'where':_0x149ace[_0xc9a1('0x41')]})[_0xc9a1('0x2b')](function(_0x26c774){_0x3b296c[_0xc9a1('0x23')]=_0x26c774;if(_0x2d7009['query']['includeAll']){_0x149ace[_0xc9a1('0x48')]=[{'all':!![]}];}return db[_0xc9a1('0x5a')]['findAll'](_0x149ace);})[_0xc9a1('0x2b')](function(_0x21f3bd){_0x3b296c['rows']=_0x21f3bd;return _0x3b296c;});}})[_0xc9a1('0x2b')](respondWithFilteredResult(_0x4cd8ed,_0x149ace))[_0xc9a1('0x4b')](handleError(_0x4cd8ed,null));};exports[_0xc9a1('0x5e')]=function(_0x425754,_0x41baa6,_0x49e466){return db[_0xc9a1('0x32')][_0xc9a1('0x54')]({'where':{'id':_0x425754[_0xc9a1('0x4d')]['id']}})['then'](handleEntityNotFound(_0x41baa6,null))[_0xc9a1('0x2b')](function(_0x345625){if(_0x345625){return _0x345625[_0xc9a1('0x5e')](_0x425754[_0xc9a1('0x38')][_0xc9a1('0x5f')]);}})[_0xc9a1('0x2b')](respondWithStatusCode(_0x41baa6,null))[_0xc9a1('0x4b')](handleError(_0x41baa6,null));};exports[_0xc9a1('0x60')]=function(_0x3c599c,_0x41c2d0,_0x41b9fa){return db[_0xc9a1('0x32')][_0xc9a1('0x54')]({'where':{'id':_0x3c599c[_0xc9a1('0x4d')]['id']}})['then'](handleEntityNotFound(_0x41c2d0,null))[_0xc9a1('0x2b')](function(_0x41713a){if(_0x41713a){var _0x338377=[];var _0x121330={'success':[],'errors':[]};return db[_0xc9a1('0x61')][_0xc9a1('0x57')]()[_0xc9a1('0x2b')](function(_0x2e031a){if(_0x3c599c['body'][_0xc9a1('0x62')]&&_['isArray'](_0x3c599c[_0xc9a1('0x50')][_0xc9a1('0x62')])){if(_0x3c599c[_0xc9a1('0x50')][_0xc9a1('0x62')]['length']){_0x3c599c[_0xc9a1('0x50')][_0xc9a1('0x62')]=_0x3c599c['body']['tags']['join'](';')+';';}else{_0x3c599c['body'][_0xc9a1('0x62')]=null;}}else{_0x3c599c[_0xc9a1('0x50')][_0xc9a1('0x62')]=null;}if(_0x3c599c['body']&&_[_0xc9a1('0x63')](_0x3c599c[_0xc9a1('0x50')])){for(var _0xc6d913=0x0;_0xc6d913<_0x3c599c[_0xc9a1('0x50')]['length'];_0xc6d913+=0x1){_0x3c599c[_0xc9a1('0x50')][_0xc6d913]['ListId']=_0x3c599c[_0xc9a1('0x4d')]['id'];_0x338377[_0xc9a1('0x64')](_0x3c599c['body'][_0xc6d913]);}return BPromise[_0xc9a1('0x65')](_0x338377,function(_0x428c88){return db[_0xc9a1('0x61')][_0xc9a1('0x4f')](_[_0xc9a1('0x66')](_0x428c88,[_0xc9a1('0x5f'),'id'])||{},{'fields':_[_0xc9a1('0x4e')](_0x2e031a),'raw':!![]})[_0xc9a1('0x2b')](function(_0x2d3238){_0x121330[_0xc9a1('0x67')][_0xc9a1('0x64')](_0x2d3238[_0xc9a1('0x68')]);})['catch'](function(_0x4226fa){_0x121330[_0xc9a1('0x69')][_0xc9a1('0x64')]({'data':_0x428c88,'error':_0x4226fa[_0xc9a1('0x6a')]});});})['then'](function(_0x2f06f2){return _0x121330;})[_0xc9a1('0x4b')](function(_0x2ecf1d){return _0x2ecf1d;});}else{_0x41c2d0[_0xc9a1('0x24')](0x190)[_0xc9a1('0x26')]({'message':_0xc9a1('0x6b')});}});}})[_0xc9a1('0x2b')](respondWithResult(_0x41c2d0,null))[_0xc9a1('0x4b')](handleError(_0x41c2d0,null));};exports[_0xc9a1('0x6c')]=function(_0x398e65,_0x30a2a0,_0x520fff){var _0x480303;return db['CmList'][_0xc9a1('0x54')]({'where':{'id':_0x398e65[_0xc9a1('0x4d')]['id']},'include':[{'model':db[_0xc9a1('0x6d')],'as':_0xc9a1('0x6e')}]})[_0xc9a1('0x2b')](handleEntityNotFound(_0x30a2a0,null))['then'](function(_0x3865ff){if(_0x3865ff){_0x480303=_0x3865ff;return db[_0xc9a1('0x61')][_0xc9a1('0x33')];}})['then'](function(_0xdae775){if(_0xdae775){var _0x5332db={};var _0x5dbb6a={};_0x5dbb6a[_0xc9a1('0x37')]=_[_0xc9a1('0x6f')](_[_0xc9a1('0x4e')](_0xdae775),_[_0xc9a1('0x31')](_0x480303[_0xc9a1('0x6e')],function(_0x43610f){return util['format'](_0xc9a1('0x70'),_0x43610f['id']);}));_0x5dbb6a['query']=_[_0xc9a1('0x4e')](_0x398e65[_0xc9a1('0x38')]);_0x5dbb6a[_0xc9a1('0x39')]=_[_0xc9a1('0x3a')](_0x5dbb6a[_0xc9a1('0x37')],_0x5dbb6a[_0xc9a1('0x38')]);_0x5332db[_0xc9a1('0x3b')]=_[_0xc9a1('0x3a')](_0x5dbb6a[_0xc9a1('0x37')],qs[_0xc9a1('0x3c')](_0x398e65[_0xc9a1('0x38')][_0xc9a1('0x3c')]));_0x5332db[_0xc9a1('0x3b')]=_0x5332db[_0xc9a1('0x3b')][_0xc9a1('0x3d')]?_0x5332db['attributes']:_0x5dbb6a[_0xc9a1('0x37')];if(!_0x398e65[_0xc9a1('0x38')]['hasOwnProperty'](_0xc9a1('0x3f'))){_0x5332db[_0xc9a1('0x22')]=qs[_0xc9a1('0x22')](_0x398e65['query']['limit']);_0x5332db[_0xc9a1('0x20')]=qs[_0xc9a1('0x20')](_0x398e65[_0xc9a1('0x38')][_0xc9a1('0x20')]);}_0x5332db['order']=qs[_0xc9a1('0x40')](_0x398e65['query'][_0xc9a1('0x40')]);_0x5332db[_0xc9a1('0x41')]=qs[_0xc9a1('0x39')](_[_0xc9a1('0x42')](_0x398e65[_0xc9a1('0x38')],_0x5dbb6a[_0xc9a1('0x39')]));_0x5332db[_0xc9a1('0x71')]=!![];if(_0x398e65[_0xc9a1('0x38')][_0xc9a1('0x43')]){_0x5332db[_0xc9a1('0x41')]=_[_0xc9a1('0x44')](_0x5332db[_0xc9a1('0x41')],{'$or':_['map'](_0x5332db['attributes'],function(_0x2dac11){var _0x1e5c61={};_0x1e5c61[_0x2dac11]={'$like':'%'+_0x398e65['query']['filter']+'%'};return _0x1e5c61;})});}_0x5332db=_[_0xc9a1('0x44')]({},_0x5332db,_0x398e65['options']);return _0x480303[_0xc9a1('0x6c')](_0x5332db);}})[_0xc9a1('0x2b')](respondWithResult(_0x30a2a0,null))['catch'](handleError(_0x30a2a0,null));};exports[_0xc9a1('0x72')]=function(_0x449852,_0x20d4ac,_0x3b5f65){var _0x909351;return db[_0xc9a1('0x32')][_0xc9a1('0x54')]({'where':{'id':_0x449852['params']['id']},'include':[{'model':db[_0xc9a1('0x6d')],'as':_0xc9a1('0x6e')}]})[_0xc9a1('0x2b')](handleEntityNotFound(_0x20d4ac,null))['then'](function(_0x2f400c){if(_0x2f400c){_0x909351=_0x2f400c;return db['CmContact'][_0xc9a1('0x33')];}})['then'](function(_0x3fa04d){if(_0x3fa04d){var _0x4d70e0={};var _0x1c2bdb={};_0x1c2bdb['model']=_[_0xc9a1('0x6f')](_[_0xc9a1('0x4e')](_0x3fa04d),_['map'](_0x909351[_0xc9a1('0x6e')],function(_0x441657){return util[_0xc9a1('0x73')](_0xc9a1('0x70'),_0x441657['id']);}));_0x1c2bdb['query']=_['keys'](_0x449852['query']);_0x1c2bdb['filters']=_[_0xc9a1('0x3a')](_0x1c2bdb[_0xc9a1('0x37')],_0x1c2bdb[_0xc9a1('0x38')]);_0x4d70e0[_0xc9a1('0x3b')]=_[_0xc9a1('0x3a')](_0x1c2bdb[_0xc9a1('0x37')],qs[_0xc9a1('0x3c')](_0x449852[_0xc9a1('0x38')]['fields']));_0x4d70e0[_0xc9a1('0x3b')]=_0x4d70e0[_0xc9a1('0x3b')][_0xc9a1('0x3d')]?_0x4d70e0[_0xc9a1('0x3b')]:_0x1c2bdb[_0xc9a1('0x37')];if(!_0x449852[_0xc9a1('0x38')][_0xc9a1('0x3e')](_0xc9a1('0x3f'))){_0x4d70e0[_0xc9a1('0x22')]=qs[_0xc9a1('0x22')](_0x449852[_0xc9a1('0x38')][_0xc9a1('0x22')]);_0x4d70e0[_0xc9a1('0x20')]=qs[_0xc9a1('0x20')](_0x449852[_0xc9a1('0x38')][_0xc9a1('0x20')]);}_0x4d70e0[_0xc9a1('0x5d')]=qs[_0xc9a1('0x40')](_0x449852['query'][_0xc9a1('0x40')]);_0x4d70e0[_0xc9a1('0x41')]=qs[_0xc9a1('0x39')](_[_0xc9a1('0x42')](_0x449852[_0xc9a1('0x38')],_0x1c2bdb['filters']));_0x4d70e0[_0xc9a1('0x71')]=!![];if(_0x449852[_0xc9a1('0x38')][_0xc9a1('0x43')]){_0x4d70e0[_0xc9a1('0x41')]=_[_0xc9a1('0x44')](_0x4d70e0['where'],{'$or':_[_0xc9a1('0x31')](_0x4d70e0[_0xc9a1('0x3b')],function(_0x2201ac){var _0x49e2f2={};_0x49e2f2[_0x2201ac]={'$like':'%'+_0x449852['query'][_0xc9a1('0x43')]+'%'};return _0x49e2f2;})});}_0x4d70e0=_[_0xc9a1('0x44')]({},_0x4d70e0,_0x449852[_0xc9a1('0x46')]);return _0x909351[_0xc9a1('0x6c')](_0x4d70e0);}})['then'](function(_0x18e53a){if(!_[_0xc9a1('0x74')](_0x18e53a)){var _0x539dbc=toCsv(_0x18e53a);var _0x2f8f2e=Date[_0xc9a1('0x75')]();fs['writeFileSync'](util[_0xc9a1('0x73')](_0xc9a1('0x76'),_0x909351['id'],_0x2f8f2e),_0x539dbc);_0x20d4ac['setHeader']('Content-disposition',_0xc9a1('0x77')+util[_0xc9a1('0x73')](_0xc9a1('0x78'),_0x909351['id'],_0x2f8f2e));_0x20d4ac['setHeader'](_0xc9a1('0x79'),_0xc9a1('0x7a'));return _0x20d4ac[_0xc9a1('0x7b')](util[_0xc9a1('0x73')]('/tmp/list_%d_%s.csv',_0x909351['id'],_0x2f8f2e));}else{return _0x20d4ac[_0xc9a1('0x1e')](0xcc);}})['catch'](handleError(_0x20d4ac,null));};exports[_0xc9a1('0x7c')]=function(_0x4a7dc8,_0x1de35c,_0x539eb6){var _0x139ed0;delete _0x4a7dc8[_0xc9a1('0x50')]['id'];return db[_0xc9a1('0x32')]['findOne']({'where':{'id':_0x4a7dc8['params']['id']}})[_0xc9a1('0x2b')](handleEntityNotFound(_0x1de35c,null))[_0xc9a1('0x2b')](function(_0xbc37e9){if(_0xbc37e9){return db[_0xc9a1('0x7d')][_0xc9a1('0x7e')](function(_0x573bf5){return db['CmCustomField']['create'](_0x4a7dc8[_0xc9a1('0x50')],{'transaction':_0x573bf5})[_0xc9a1('0x2b')](function(_0x3e8540){_0x139ed0=_0x3e8540;return _0xbc37e9[_0xc9a1('0x7f')](_0x3e8540,{'transaction':_0x573bf5});})['then'](function(){var _0x3b2316={'type':db[_0xc9a1('0x80')]['TEXT'],'transaction':_0x573bf5};switch(_0x4a7dc8['body'][_0xc9a1('0x35')]){case'text':_0x3b2316[_0xc9a1('0x35')]=db[_0xc9a1('0x80')][_0xc9a1('0x81')];break;case'number':_0x3b2316[_0xc9a1('0x35')]=db['Sequelize'][_0xc9a1('0x82')];break;case _0xc9a1('0x83'):_0x3b2316[_0xc9a1('0x35')]=db['Sequelize'][_0xc9a1('0x84')];_0x3b2316[_0xc9a1('0x85')]=![];break;default:}return db[_0xc9a1('0x7d')][_0xc9a1('0x86')]['addColumn'](_0xc9a1('0x87'),util[_0xc9a1('0x73')](_0xc9a1('0x88'),_0x139ed0['id']),_0x3b2316);})[_0xc9a1('0x2b')](function(){return _0x139ed0;});});}})[_0xc9a1('0x2b')](respondWithResult(_0x1de35c,null))[_0xc9a1('0x4b')](handleError(_0x1de35c,null));};exports[_0xc9a1('0x89')]=function(_0x17f776,_0x28b8d8,_0x2c08d7){var _0x2b049c={};var _0xffe57b={};var _0x517b48;var _0x2c03ca;return db[_0xc9a1('0x32')]['findOne']({'where':{'id':_0x17f776[_0xc9a1('0x4d')]['id']}})[_0xc9a1('0x2b')](handleEntityNotFound(_0x28b8d8,null))[_0xc9a1('0x2b')](function(_0x4329f0){if(_0x4329f0){_0x517b48=_0x4329f0;_0xffe57b[_0xc9a1('0x37')]=_['keys'](db[_0xc9a1('0x6d')][_0xc9a1('0x33')]);_0xffe57b[_0xc9a1('0x38')]=_['keys'](_0x17f776[_0xc9a1('0x38')]);_0xffe57b['filters']=_[_0xc9a1('0x3a')](_0xffe57b[_0xc9a1('0x37')],_0xffe57b[_0xc9a1('0x38')]);_0x2b049c['attributes']=_[_0xc9a1('0x3a')](_0xffe57b[_0xc9a1('0x37')],qs[_0xc9a1('0x3c')](_0x17f776[_0xc9a1('0x38')][_0xc9a1('0x3c')]));_0x2b049c['attributes']=_0x2b049c[_0xc9a1('0x3b')][_0xc9a1('0x3d')]?_0x2b049c['attributes']:_0xffe57b[_0xc9a1('0x37')];_0x2b049c['order']=qs[_0xc9a1('0x40')](_0x17f776[_0xc9a1('0x38')][_0xc9a1('0x40')]);_0x2b049c[_0xc9a1('0x41')]=qs[_0xc9a1('0x39')](_[_0xc9a1('0x42')](_0x17f776[_0xc9a1('0x38')],_0xffe57b[_0xc9a1('0x39')]));_0x2b049c['where']=_[_0xc9a1('0x44')](_0x2b049c[_0xc9a1('0x41')],{'$or':[{'ListId':_0x4329f0['id']},{'ListId':null}]});if(_0x17f776[_0xc9a1('0x38')][_0xc9a1('0x43')]){_0x2b049c['where']=_[_0xc9a1('0x44')](_0x2b049c[_0xc9a1('0x41')],{'$or':_[_0xc9a1('0x31')](_0x2b049c[_0xc9a1('0x3b')],function(_0x3e985b){var _0x179a8e={};_0x179a8e[_0x3e985b]={'$like':'%'+_0x17f776[_0xc9a1('0x38')][_0xc9a1('0x43')]+'%'};return _0x179a8e;})});}_0x2b049c=_[_0xc9a1('0x44')]({},_0x2b049c,_0x17f776[_0xc9a1('0x46')]);return db['CmCustomField']['findAndCountAll'](_0x2b049c);}})[_0xc9a1('0x2b')](respondWithResult(_0x28b8d8,null))['catch'](handleError(_0x28b8d8,null));};exports[_0xc9a1('0x8a')]=function(_0x425140,_0x44ccf8,_0x44a8bb){return db['CmList'][_0xc9a1('0x54')]({'where':{'id':_0x425140[_0xc9a1('0x4d')]['id']}})[_0xc9a1('0x2b')](handleEntityNotFound(_0x44ccf8,null))[_0xc9a1('0x2b')](function(_0x351985){if(_0x351985){return _0x351985[_0xc9a1('0x8a')](_0x425140[_0xc9a1('0x50')]['ids'],_[_0xc9a1('0x66')](_0x425140[_0xc9a1('0x50')],[_0xc9a1('0x5f'),'id'])||{})[_0xc9a1('0x8b')](function(_0x16cf5e){for(var _0x583a2b=0x0;_0x583a2b<_0x425140[_0xc9a1('0x50')]['ids'][_0xc9a1('0x3d')];_0x583a2b+=0x1){socket['emit']('userCmList:save',{'UserId':Number(_0x425140[_0xc9a1('0x50')][_0xc9a1('0x5f')][_0x583a2b]),'CmListId':Number(_0x425140['params']['id'])});}return _0x16cf5e;});}})[_0xc9a1('0x2b')](respondWithResult(_0x44ccf8,null))[_0xc9a1('0x4b')](handleError(_0x44ccf8,null));};exports[_0xc9a1('0x8c')]=function(_0x5a0df0,_0x1948ce,_0x28e9d2){return db[_0xc9a1('0x32')]['find']({'where':{'id':_0x5a0df0['params']['id']}})[_0xc9a1('0x2b')](handleEntityNotFound(_0x1948ce,null))[_0xc9a1('0x2b')](function(_0xa92f58){if(_0xa92f58){return _0xa92f58[_0xc9a1('0x8c')](_0x5a0df0[_0xc9a1('0x38')][_0xc9a1('0x5f')])[_0xc9a1('0x2b')](function(){if(_[_0xc9a1('0x63')](_0x5a0df0[_0xc9a1('0x38')][_0xc9a1('0x5f')])){for(var _0xdcd73e=0x0;_0xdcd73e<_0x5a0df0[_0xc9a1('0x38')][_0xc9a1('0x5f')][_0xc9a1('0x3d')];_0xdcd73e+=0x1){socket[_0xc9a1('0x8d')](_0xc9a1('0x8e'),{'UserId':Number(_0x5a0df0['query'][_0xc9a1('0x5f')][_0xdcd73e]),'CmListId':Number(_0x5a0df0[_0xc9a1('0x4d')]['id'])});}}else{socket[_0xc9a1('0x8d')]('userCmList:remove',{'UserId':Number(_0x5a0df0[_0xc9a1('0x38')][_0xc9a1('0x5f')]),'CmListId':Number(_0x5a0df0[_0xc9a1('0x4d')]['id'])});}});}})[_0xc9a1('0x2b')](respondWithStatusCode(_0x1948ce,null))[_0xc9a1('0x4b')](handleError(_0x1948ce,null));};exports[_0xc9a1('0x8f')]=function(_0xf37072,_0x4c8a12,_0x4d29df){var _0x50e8ab={};var _0x51a62b={};var _0x4fc15c;var _0x4ed779;return db['CmList']['findOne']({'where':{'id':_0xf37072[_0xc9a1('0x4d')]['id']}})[_0xc9a1('0x2b')](handleEntityNotFound(_0x4c8a12,null))['then'](function(_0x19a10f){if(_0x19a10f){_0x4fc15c=_0x19a10f;_0x51a62b[_0xc9a1('0x37')]=_[_0xc9a1('0x4e')](db['User'][_0xc9a1('0x33')]);_0x51a62b[_0xc9a1('0x38')]=_[_0xc9a1('0x4e')](_0xf37072[_0xc9a1('0x38')]);_0x51a62b[_0xc9a1('0x39')]=_[_0xc9a1('0x3a')](_0x51a62b[_0xc9a1('0x37')],_0x51a62b['query']);_0x50e8ab['attributes']=_[_0xc9a1('0x3a')](_0x51a62b[_0xc9a1('0x37')],qs['fields'](_0xf37072[_0xc9a1('0x38')][_0xc9a1('0x3c')]));_0x50e8ab[_0xc9a1('0x3b')]=_0x50e8ab[_0xc9a1('0x3b')][_0xc9a1('0x3d')]?_0x50e8ab['attributes']:_0x51a62b['model'];_0x50e8ab[_0xc9a1('0x5d')]=qs[_0xc9a1('0x40')](_0xf37072[_0xc9a1('0x38')][_0xc9a1('0x40')]);_0x50e8ab[_0xc9a1('0x41')]=qs[_0xc9a1('0x39')](_['pick'](_0xf37072[_0xc9a1('0x38')],_0x51a62b['filters']));if(_0xf37072[_0xc9a1('0x38')][_0xc9a1('0x43')]){_0x50e8ab[_0xc9a1('0x41')]=_[_0xc9a1('0x44')](_0x50e8ab[_0xc9a1('0x41')],{'$or':_['map'](_0x50e8ab['attributes'],function(_0x25f54d){var _0x4f0f16={};_0x4f0f16[_0x25f54d]={'$like':'%'+_0xf37072[_0xc9a1('0x38')]['filter']+'%'};return _0x4f0f16;})});}_0x50e8ab=_[_0xc9a1('0x44')]({},_0x50e8ab,_0xf37072[_0xc9a1('0x46')]);return _0x4fc15c[_0xc9a1('0x8f')](_0x50e8ab);}})[_0xc9a1('0x2b')](function(_0x587d50){if(_0x587d50){_0x4ed779=_0x587d50['length'];if(!_0xf37072[_0xc9a1('0x38')][_0xc9a1('0x3e')]('nolimit')){_0x50e8ab[_0xc9a1('0x22')]=qs['limit'](_0xf37072[_0xc9a1('0x38')][_0xc9a1('0x22')]);_0x50e8ab[_0xc9a1('0x20')]=qs['offset'](_0xf37072[_0xc9a1('0x38')][_0xc9a1('0x20')]);}return _0x4fc15c[_0xc9a1('0x8f')](_0x50e8ab);}})[_0xc9a1('0x2b')](function(_0xeefb28){if(_0xeefb28){return _0xeefb28?{'count':_0x4ed779,'rows':_0xeefb28}:null;}})[_0xc9a1('0x2b')](respondWithResult(_0x4c8a12,null))[_0xc9a1('0x4b')](handleError(_0x4c8a12,null));};
\ No newline at end of file
index 00ea291..6b2c373 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x4c184d,_0x4278ab){var _0x23d997=function(_0x22d068){while(--_0x22d068){_0x4c184d['push'](_0x4c184d['shift']());}};_0x23d997(++_0x4278ab);}(_0x5fc3,0xa8));var _0x35fc=function(_0x33a694,_0x9b6640){_0x33a694=_0x33a694-0x0;var _0x41ff01=_0x5fc3[_0x33a694];return _0x41ff01;};'use strict';var EventEmitter=require(_0x35fc('0x0'));var CmList=require(_0x35fc('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0x35fc('0x2')](0x0);var events={'afterCreate':_0x35fc('0x3'),'afterUpdate':_0x35fc('0x4'),'afterDestroy':_0x35fc('0x5')};function emitEvent(_0xb4f9ce){return function(_0x5e75e6,_0x2d1404,_0x1d5fec){CmListEvents[_0x35fc('0x6')](_0xb4f9ce+':'+_0x5e75e6['id'],_0x5e75e6);CmListEvents['emit'](_0xb4f9ce,_0x5e75e6);_0x1d5fec(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0x35fc('0x7')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
+var _0x55ca=['events','../../mysqldb','update','remove','emit','hasOwnProperty','hook'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0x55ca,0x126));var _0xa55c=function(_0x3a85ab,_0x1f3525){_0x3a85ab=_0x3a85ab-0x0;var _0x32d91a=_0x55ca[_0x3a85ab];return _0x32d91a;};'use strict';var EventEmitter=require(_0xa55c('0x0'));var CmList=require(_0xa55c('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa55c('0x2'),'afterDestroy':_0xa55c('0x3')};function emitEvent(_0x5dc716){return function(_0x3b478a,_0x2db02a,_0xcb02e3){CmListEvents[_0xa55c('0x4')](_0x5dc716+':'+_0x3b478a['id'],_0x3b478a);CmListEvents[_0xa55c('0x4')](_0x5dc716,_0x3b478a);_0xcb02e3(null);};}for(var e in events){if(events[_0xa55c('0x5')](e)){var event=events[e];CmList[_0xa55c('0x6')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
index dd00823..aff9ec2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74f=['cm_lists','../../config/logger','bluebird','request-promise','path','rimraf','./cmList.attributes','define','CmList'];(function(_0xe09374,_0x13ff0a){var _0x4f8808=function(_0x847af){while(--_0x847af){_0xe09374['push'](_0xe09374['shift']());}};_0x4f8808(++_0x13ff0a);}(_0xa74f,0x9a));var _0xfa74=function(_0x3725ee,_0x543bd9){_0x3725ee=_0x3725ee-0x0;var _0x399c71=_0xa74f[_0x3725ee];return _0x399c71;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfa74('0x0'))('api');var moment=require('moment');var BPromise=require(_0xfa74('0x1'));var rp=require(_0xfa74('0x2'));var fs=require('fs');var path=require(_0xfa74('0x3'));var rimraf=require(_0xfa74('0x4'));var config=require('../../config/environment');var attributes=require(_0xfa74('0x5'));module['exports']=function(_0x543cfe,_0x43dd2f){return _0x543cfe[_0xfa74('0x6')](_0xfa74('0x7'),attributes,{'tableName':_0xfa74('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0713=['moment','bluebird','request-promise','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists','../../config/logger','api'];(function(_0x50ed9f,_0x16f568){var _0x16ba39=function(_0x4c76c5){while(--_0x4c76c5){_0x50ed9f['push'](_0x50ed9f['shift']());}};_0x16ba39(++_0x16f568);}(_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':[],'timestamps':!![]});};
\ No newline at end of file
index b561315..838bb96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a03=['register','request','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./cmList.socket'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9a03,0xe3));var _0x39a0=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0x9a03[_0xaa0309];return _0x5de7ce;};'use strict';var _=require(_0x39a0('0x0'));var util=require(_0x39a0('0x1'));var moment=require('moment');var BPromise=require(_0x39a0('0x2'));var rs=require(_0x39a0('0x3'));var fs=require('fs');var Redis=require(_0x39a0('0x4'));var db=require(_0x39a0('0x5'))['db'];var utils=require(_0x39a0('0x6'));var logger=require(_0x39a0('0x7'))(_0x39a0('0x8'));var config=require(_0x39a0('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x39a0('0xa')]['http']({'port':0x232a});config[_0x39a0('0xb')]=_[_0x39a0('0xc')](config[_0x39a0('0xb')],{'host':_0x39a0('0xd'),'port':0x18eb});var socket=require(_0x39a0('0xe'))(new Redis(config[_0x39a0('0xb')]));require(_0x39a0('0xf'))[_0x39a0('0x10')](socket);function respondWithRpcPromise(_0xde8da0,_0x375ae9,_0x15e773){return new BPromise(function(_0x2ce797,_0x3df7af){return client[_0x39a0('0x11')](_0xde8da0,_0x15e773)['then'](function(_0x2de188){logger['info'](_0x39a0('0x12'),_0x375ae9,_0x39a0('0x13'));logger[_0x39a0('0x14')](_0x39a0('0x15'),_0x375ae9,_0x39a0('0x13'),JSON[_0x39a0('0x16')](_0x2de188));if(_0x2de188['error']){if(_0x2de188[_0x39a0('0x17')]['code']===0x1f4){logger['error'](_0x39a0('0x12'),_0x375ae9,_0x2de188[_0x39a0('0x17')][_0x39a0('0x18')]);return _0x3df7af(_0x2de188['error'][_0x39a0('0x18')]);}logger['error'](_0x39a0('0x12'),_0x375ae9,_0x2de188[_0x39a0('0x17')][_0x39a0('0x18')]);return _0x2ce797(_0x2de188['error']['message']);}else{logger[_0x39a0('0x19')](_0x39a0('0x12'),_0x375ae9,'request\x20sent');_0x2ce797(_0x2de188['result'][_0x39a0('0x18')]);}})[_0x39a0('0x1a')](function(_0x3cbd6a){logger[_0x39a0('0x17')](_0x39a0('0x12'),_0x375ae9,_0x3cbd6a);_0x3df7af(_0x3cbd6a);});});}
\ No newline at end of file
+var _0x68a9=['error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','defaults','redis','socket.io-emitter','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5bf5d4,_0x27c12e){var _0x94041a=function(_0xf9728){while(--_0xf9728){_0x5bf5d4['push'](_0x5bf5d4['shift']());}};_0x94041a(++_0x27c12e);}(_0x68a9,0x91));var _0x968a=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0x68a9[_0x187ee1];return _0x388160;};'use strict';var _=require(_0x968a('0x0'));var util=require(_0x968a('0x1'));var moment=require(_0x968a('0x2'));var BPromise=require('bluebird');var rs=require(_0x968a('0x3'));var fs=require('fs');var Redis=require(_0x968a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x968a('0x5'));var logger=require(_0x968a('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x968a('0x7'));var client=jayson[_0x968a('0x8')][_0x968a('0x9')]({'port':0x232a});config['redis']=_[_0x968a('0xa')](config[_0x968a('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x968a('0xc'))(new Redis(config['redis']));require(_0x968a('0xd'))[_0x968a('0xe')](socket);function respondWithRpcPromise(_0x52aa90,_0x5ef18b,_0x5007d5){return new BPromise(function(_0x53b6bf,_0x570c00){return client[_0x968a('0xf')](_0x52aa90,_0x5007d5)[_0x968a('0x10')](function(_0x1e9ca9){logger[_0x968a('0x11')](_0x968a('0x12'),_0x5ef18b,_0x968a('0x13'));logger[_0x968a('0x14')](_0x968a('0x15'),_0x5ef18b,_0x968a('0x13'),JSON[_0x968a('0x16')](_0x1e9ca9));if(_0x1e9ca9[_0x968a('0x17')]){if(_0x1e9ca9[_0x968a('0x17')][_0x968a('0x18')]===0x1f4){logger[_0x968a('0x17')](_0x968a('0x12'),_0x5ef18b,_0x1e9ca9[_0x968a('0x17')][_0x968a('0x19')]);return _0x570c00(_0x1e9ca9[_0x968a('0x17')][_0x968a('0x19')]);}logger[_0x968a('0x17')](_0x968a('0x12'),_0x5ef18b,_0x1e9ca9[_0x968a('0x17')][_0x968a('0x19')]);return _0x53b6bf(_0x1e9ca9[_0x968a('0x17')][_0x968a('0x19')]);}else{logger[_0x968a('0x11')](_0x968a('0x12'),_0x5ef18b,'request\x20sent');_0x53b6bf(_0x1e9ca9[_0x968a('0x1a')][_0x968a('0x19')]);}})[_0x968a('0x1b')](function(_0x8a9599){logger['error']('CmList,\x20%s,\x20%s',_0x5ef18b,_0x8a9599);_0x570c00(_0x8a9599);});});}
\ No newline at end of file
index eab7f83..f2283f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdb6=['./cmList.events','remove','update','emit','register','length','cmList:'];(function(_0x43c92a,_0x1c4901){var _0x5ebfe9=function(_0x87d98f){while(--_0x87d98f){_0x43c92a['push'](_0x43c92a['shift']());}};_0x5ebfe9(++_0x1c4901);}(_0xfdb6,0x118));var _0x6fdb=function(_0x4a7a95,_0x4062ad){_0x4a7a95=_0x4a7a95-0x0;var _0x17333d=_0xfdb6[_0x4a7a95];return _0x17333d;};'use strict';var CmListEvents=require(_0x6fdb('0x0'));var events=['save',_0x6fdb('0x1'),_0x6fdb('0x2')];function createListener(_0x299911,_0x10017d){return function(_0x311f86){_0x10017d[_0x6fdb('0x3')](_0x299911,_0x311f86);};}function removeListener(_0x54dffc,_0xd6904){return function(){CmListEvents['removeListener'](_0x54dffc,_0xd6904);};}exports[_0x6fdb('0x4')]=function(_0x2821ec){for(var _0x2db733=0x0,_0xbfbcda=events[_0x6fdb('0x5')];_0x2db733<_0xbfbcda;_0x2db733++){var _0x30f485=events[_0x2db733];var _0x2add6a=createListener(_0x6fdb('0x6')+_0x30f485,_0x2821ec);CmListEvents['on'](_0x30f485,_0x2add6a);}};
\ No newline at end of file
+var _0x80f2=['register','length','./cmList.events','save','remove','update','emit','removeListener'];(function(_0xe7d54e,_0x28a60c){var _0x274c8f=function(_0x246c4f){while(--_0x246c4f){_0xe7d54e['push'](_0xe7d54e['shift']());}};_0x274c8f(++_0x28a60c);}(_0x80f2,0xda));var _0x280f=function(_0x28467b,_0x170e06){_0x28467b=_0x28467b-0x0;var _0x6a6e25=_0x80f2[_0x28467b];return _0x6a6e25;};'use strict';var CmListEvents=require(_0x280f('0x0'));var events=[_0x280f('0x1'),_0x280f('0x2'),_0x280f('0x3')];function createListener(_0x374f27,_0x33fca5){return function(_0x114e01){_0x33fca5[_0x280f('0x4')](_0x374f27,_0x114e01);};}function removeListener(_0x4bfffa,_0x344481){return function(){CmListEvents[_0x280f('0x5')](_0x4bfffa,_0x344481);};}exports[_0x280f('0x6')]=function(_0x1f2ec6){for(var _0x3bd3ac=0x0,_0x18ec04=events[_0x280f('0x7')];_0x3bd3ac<_0x18ec04;_0x3bd3ac++){var _0x3ca66a=events[_0x3bd3ac];var _0x186ad4=createListener('cmList:'+_0x3ca66a,_0x1f2ec6);CmListEvents['on'](_0x3ca66a,_0x186ad4);}};
\ No newline at end of file
index 78a2ac6..ad4db5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbc7=['/:id/users','getAgents','post','create','addDisposition','addCustomField','addAgents','delete','destroy','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/fields','getCustomFields'];(function(_0x458363,_0x1675db){var _0x4d0290=function(_0x22960f){while(--_0x22960f){_0x458363['push'](_0x458363['shift']());}};_0x4d0290(++_0x1675db);}(_0xdbc7,0xfa));var _0x7dbc=function(_0x17823f,_0xffd807){_0x17823f=_0x17823f-0x0;var _0x51fc21=_0xdbc7[_0x17823f];return _0x51fc21;};'use strict';var multer=require(_0x7dbc('0x0'));var util=require(_0x7dbc('0x1'));var path=require(_0x7dbc('0x2'));var timeout=require(_0x7dbc('0x3'));var express=require('express');var router=express[_0x7dbc('0x4')]();var fs_extra=require(_0x7dbc('0x5'));var auth=require(_0x7dbc('0x6'));var interaction=require(_0x7dbc('0x7'));var config=require(_0x7dbc('0x8'));var controller=require(_0x7dbc('0x9'));router[_0x7dbc('0xa')]('/',auth[_0x7dbc('0xb')](),controller[_0x7dbc('0xc')]);router[_0x7dbc('0xa')](_0x7dbc('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x7dbc('0xa')](_0x7dbc('0xe'),auth['isAuthenticated'](),controller[_0x7dbc('0xf')]);router[_0x7dbc('0xa')](_0x7dbc('0x10'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x11')]);router[_0x7dbc('0xa')](_0x7dbc('0x12'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x13')]);router[_0x7dbc('0xa')]('/:id/contacts/csv',auth[_0x7dbc('0xb')](),controller['getContactsCsv']);router['get'](_0x7dbc('0x14'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x15')]);router[_0x7dbc('0xa')](_0x7dbc('0x16'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x17')]);router[_0x7dbc('0x18')]('/',auth['isAuthenticated'](),controller[_0x7dbc('0x19')]);router['post'](_0x7dbc('0x10'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x1a')]);router[_0x7dbc('0x18')]('/:id/contacts',auth[_0x7dbc('0xb')](),controller['addContacts']);router[_0x7dbc('0x18')]('/:id/fields',auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x1b')]);router[_0x7dbc('0x18')](_0x7dbc('0x16'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x1c')]);router['put'](_0x7dbc('0xe'),auth[_0x7dbc('0xb')](),controller['update']);router[_0x7dbc('0x1d')](_0x7dbc('0xe'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x1e')]);router[_0x7dbc('0x1d')](_0x7dbc('0x10'),auth['isAuthenticated'](),controller[_0x7dbc('0x1f')]);router[_0x7dbc('0x1d')](_0x7dbc('0x16'),auth[_0x7dbc('0xb')](),controller[_0x7dbc('0x20')]);module[_0x7dbc('0x21')]=router;
\ No newline at end of file
+var _0x2bd3=['/:id/contacts','addContacts','put','/:id','update','delete','destroy','removeDispositions','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','describe','/:id/dispositions','getContacts','getContactsCsv','/:id/fields','/:id/users','getAgents','post','create','addDisposition'];(function(_0x354c1b,_0x56d79b){var _0x2c70f4=function(_0x47bdf4){while(--_0x47bdf4){_0x354c1b['push'](_0x354c1b['shift']());}};_0x2c70f4(++_0x56d79b);}(_0x2bd3,0x1d7));var _0x32bd=function(_0x465f17,_0x4bd683){_0x465f17=_0x465f17-0x0;var _0x38fb72=_0x2bd3[_0x465f17];return _0x38fb72;};'use strict';var multer=require(_0x32bd('0x0'));var util=require(_0x32bd('0x1'));var path=require(_0x32bd('0x2'));var timeout=require(_0x32bd('0x3'));var express=require(_0x32bd('0x4'));var router=express[_0x32bd('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32bd('0x6'));var interaction=require(_0x32bd('0x7'));var config=require(_0x32bd('0x8'));var controller=require(_0x32bd('0x9'));router[_0x32bd('0xa')]('/',auth[_0x32bd('0xb')](),controller[_0x32bd('0xc')]);router[_0x32bd('0xa')](_0x32bd('0xd'),auth['isAuthenticated'](),controller[_0x32bd('0xe')]);router[_0x32bd('0xa')]('/:id',auth[_0x32bd('0xb')](),controller['show']);router[_0x32bd('0xa')](_0x32bd('0xf'),auth[_0x32bd('0xb')](),controller['getDispositions']);router[_0x32bd('0xa')]('/:id/contacts',auth[_0x32bd('0xb')](),controller[_0x32bd('0x10')]);router[_0x32bd('0xa')]('/:id/contacts/csv',auth[_0x32bd('0xb')](),controller[_0x32bd('0x11')]);router[_0x32bd('0xa')](_0x32bd('0x12'),auth[_0x32bd('0xb')](),controller['getCustomFields']);router[_0x32bd('0xa')](_0x32bd('0x13'),auth[_0x32bd('0xb')](),controller[_0x32bd('0x14')]);router[_0x32bd('0x15')]('/',auth[_0x32bd('0xb')](),controller[_0x32bd('0x16')]);router[_0x32bd('0x15')](_0x32bd('0xf'),auth['isAuthenticated'](),controller[_0x32bd('0x17')]);router['post'](_0x32bd('0x18'),auth['isAuthenticated'](),controller[_0x32bd('0x19')]);router[_0x32bd('0x15')]('/:id/fields',auth[_0x32bd('0xb')](),controller['addCustomField']);router['post']('/:id/users',auth[_0x32bd('0xb')](),controller['addAgents']);router[_0x32bd('0x1a')](_0x32bd('0x1b'),auth[_0x32bd('0xb')](),controller[_0x32bd('0x1c')]);router[_0x32bd('0x1d')](_0x32bd('0x1b'),auth['isAuthenticated'](),controller[_0x32bd('0x1e')]);router[_0x32bd('0x1d')](_0x32bd('0xf'),auth[_0x32bd('0xb')](),controller[_0x32bd('0x1f')]);router[_0x32bd('0x1d')]('/:id/users',auth[_0x32bd('0xb')](),controller['removeAgents']);module[_0x32bd('0x20')]=router;
\ No newline at end of file
index 90d4f9c..c142136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d49=['sequelize','exports','VIRTUAL','field','STRING'];(function(_0x286517,_0x15c9b0){var _0x15cf1f=function(_0x3a1b38){while(--_0x3a1b38){_0x286517['push'](_0x286517['shift']());}};_0x15cf1f(++_0x15c9b0);}(_0x0d49,0x181));var _0x90d4=function(_0x14fa6f,_0xf645c){_0x14fa6f=_0x14fa6f-0x0;var _0x2b1f6c=_0x0d49[_0x14fa6f];return _0x2b1f6c;};'use strict';var Sequelize=require(_0x90d4('0x0'));module[_0x90d4('0x1')]={'name':{'type':Sequelize[_0x90d4('0x2')],'get':function(_0x34a08f){return this['getDataValue'](_0x90d4('0x3'));}},'field':{'type':Sequelize[_0x90d4('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0x90d4('0x4')],'allowNull':![]},'value':{'type':Sequelize[_0x90d4('0x4')],'allowNull':![]}};
\ No newline at end of file
+var _0x841f=['sequelize','VIRTUAL','getDataValue','field','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x841f,0x163));var _0xf841=function(_0x515e49,_0x4ebc55){_0x515e49=_0x515e49-0x0;var _0x553ba8=_0x841f[_0x515e49];return _0x553ba8;};'use strict';var Sequelize=require(_0xf841('0x0'));module['exports']={'name':{'type':Sequelize[_0xf841('0x1')],'get':function(_0x66b7d7){return this[_0xf841('0x2')](_0xf841('0x3'));}},'field':{'type':Sequelize[_0xf841('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0xf841('0x4')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 9ec577e..5d2723f 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(_0x38d183,_0x52c883){var _0x5c7546=function(_0x55cbd0){while(--_0x55cbd0){_0x38d183['push'](_0x38d183['shift']());}};_0x5c7546(++_0x52c883);}(_0x7a54,0x106));var _0x47a5=function(_0x4fd550,_0x470148){_0x4fd550=_0x4fd550-0x0;var _0x9109c9=_0x7a54[_0x4fd550];return _0x9109c9;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
+var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0xb32256,_0x593641){var _0x1166b5=function(_0x157692){while(--_0x157692){_0xb32256['push'](_0xb32256['shift']());}};_0x1166b5(++_0x593641);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
index b0579f7..ba0947a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb50b=['Condition','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./condition.attributes','exports','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb50b,0x1dd));var _0xbb50=function(_0x3a3b9e,_0xc59037){_0x3a3b9e=_0x3a3b9e-0x0;var _0x148103=_0xb50b[_0x3a3b9e];return _0x148103;};'use strict';var _=require(_0xbb50('0x0'));var util=require(_0xbb50('0x1'));var logger=require(_0xbb50('0x2'))(_0xbb50('0x3'));var moment=require(_0xbb50('0x4'));var BPromise=require(_0xbb50('0x5'));var rp=require(_0xbb50('0x6'));var fs=require('fs');var path=require(_0xbb50('0x7'));var rimraf=require(_0xbb50('0x8'));var config=require(_0xbb50('0x9'));var attributes=require(_0xbb50('0xa'));module[_0xbb50('0xb')]=function(_0x296ebc,_0x4508b2){return _0x296ebc[_0xbb50('0xc')](_0xbb50('0xd'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1be4=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./condition.attributes','exports','Condition','tools_conditions','lodash'];(function(_0x1dbb6b,_0xc0a0bf){var _0x64a78b=function(_0x5d2d5e){while(--_0x5d2d5e){_0x1dbb6b['push'](_0x1dbb6b['shift']());}};_0x64a78b(++_0xc0a0bf);}(_0x1be4,0x137));var _0x41be=function(_0x100e36,_0x4da225){_0x100e36=_0x100e36-0x0;var _0x1df0c9=_0x1be4[_0x100e36];return _0x1df0c9;};'use strict';var _=require(_0x41be('0x0'));var util=require(_0x41be('0x1'));var logger=require(_0x41be('0x2'))(_0x41be('0x3'));var moment=require(_0x41be('0x4'));var BPromise=require(_0x41be('0x5'));var rp=require(_0x41be('0x6'));var fs=require('fs');var path=require(_0x41be('0x7'));var rimraf=require('rimraf');var config=require(_0x41be('0x8'));var attributes=require(_0x41be('0x9'));module[_0x41be('0xa')]=function(_0x8eefe8,_0x666ccb){return _0x8eefe8['define'](_0x41be('0xb'),attributes,{'tableName':_0x41be('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2338e79..9cec263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17e5=['code','message','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','client','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4c70c4,_0x963969){var _0x437865=function(_0x54e323){while(--_0x54e323){_0x4c70c4['push'](_0x4c70c4['shift']());}};_0x437865(++_0x963969);}(_0x17e5,0x1bb));var _0x517e=function(_0x1d41a2,_0xd14069){_0x1d41a2=_0x1d41a2-0x0;var _0x4bd311=_0x17e5[_0x1d41a2];return _0x4bd311;};'use strict';var _=require(_0x517e('0x0'));var util=require(_0x517e('0x1'));var moment=require(_0x517e('0x2'));var BPromise=require(_0x517e('0x3'));var rs=require(_0x517e('0x4'));var fs=require('fs');var Redis=require(_0x517e('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x517e('0x6'));var config=require(_0x517e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x517e('0x8')][_0x517e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x372cda,_0x31166b,_0x5d94e8){return new BPromise(function(_0x188722,_0x4ac28b){return client[_0x517e('0xa')](_0x372cda,_0x5d94e8)[_0x517e('0xb')](function(_0x258f22){logger[_0x517e('0xc')](_0x517e('0xd'),_0x31166b,_0x517e('0xe'));logger[_0x517e('0xf')](_0x517e('0x10'),_0x31166b,_0x517e('0xe'),JSON[_0x517e('0x11')](_0x258f22));if(_0x258f22['error']){if(_0x258f22[_0x517e('0x12')][_0x517e('0x13')]===0x1f4){logger[_0x517e('0x12')](_0x517e('0xd'),_0x31166b,_0x258f22[_0x517e('0x12')]['message']);return _0x4ac28b(_0x258f22[_0x517e('0x12')][_0x517e('0x14')]);}logger[_0x517e('0x12')](_0x517e('0xd'),_0x31166b,_0x258f22[_0x517e('0x12')][_0x517e('0x14')]);return _0x188722(_0x258f22['error'][_0x517e('0x14')]);}else{logger[_0x517e('0xc')]('Condition,\x20%s,\x20%s',_0x31166b,'request\x20sent');_0x188722(_0x258f22['result'][_0x517e('0x14')]);}})['catch'](function(_0x21f8dc){logger['error'](_0x517e('0xd'),_0x31166b,_0x21f8dc);_0x4ac28b(_0x21f8dc);});});}
\ No newline at end of file
+var _0x882b=['message','Condition,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x4c7d8b,_0x572388){var _0x187158=function(_0x5e956d){while(--_0x5e956d){_0x4c7d8b['push'](_0x4c7d8b['shift']());}};_0x187158(++_0x572388);}(_0x882b,0x72));var _0xb882=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x882b[_0x56482c];return _0x5aae7a;};'use strict';var _=require(_0xb882('0x0'));var util=require(_0xb882('0x1'));var moment=require('moment');var BPromise=require(_0xb882('0x2'));var rs=require(_0xb882('0x3'));var fs=require('fs');var Redis=require(_0xb882('0x4'));var db=require(_0xb882('0x5'))['db'];var utils=require(_0xb882('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb882('0x7'));var jayson=require(_0xb882('0x8'));var client=jayson[_0xb882('0x9')][_0xb882('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4b6318,_0xd64fb4,_0xf9076){return new BPromise(function(_0x1329e7,_0x3cf174){return client['request'](_0x4b6318,_0xf9076)[_0xb882('0xb')](function(_0x21cdaa){logger[_0xb882('0xc')]('Condition,\x20%s,\x20%s',_0xd64fb4,_0xb882('0xd'));logger['debug'](_0xb882('0xe'),_0xd64fb4,_0xb882('0xd'),JSON[_0xb882('0xf')](_0x21cdaa));if(_0x21cdaa[_0xb882('0x10')]){if(_0x21cdaa[_0xb882('0x10')][_0xb882('0x11')]===0x1f4){logger['error']('Condition,\x20%s,\x20%s',_0xd64fb4,_0x21cdaa['error']['message']);return _0x3cf174(_0x21cdaa[_0xb882('0x10')][_0xb882('0x12')]);}logger['error'](_0xb882('0x13'),_0xd64fb4,_0x21cdaa[_0xb882('0x10')][_0xb882('0x12')]);return _0x1329e7(_0x21cdaa[_0xb882('0x10')]['message']);}else{logger[_0xb882('0xc')](_0xb882('0x13'),_0xd64fb4,_0xb882('0xd'));_0x1329e7(_0x21cdaa[_0xb882('0x14')][_0xb882('0x12')]);}})[_0xb882('0x15')](function(_0x34b958){logger[_0xb882('0x10')](_0xb882('0x13'),_0xd64fb4,_0x34b958);_0x3cf174(_0x34b958);});});}
\ No newline at end of file
index a651bdc..fbf0327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bec=['./condition.controller','/:id','isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x29d915,_0x54a040){var _0x160f86=function(_0x237dfa){while(--_0x237dfa){_0x29d915['push'](_0x29d915['shift']());}};_0x160f86(++_0x54a040);}(_0x7bec,0x18f));var _0xc7be=function(_0x19999a,_0x115921){_0x19999a=_0x19999a-0x0;var _0x47c593=_0x7bec[_0x19999a];return _0x47c593;};'use strict';var multer=require(_0xc7be('0x0'));var util=require(_0xc7be('0x1'));var path=require(_0xc7be('0x2'));var timeout=require(_0xc7be('0x3'));var express=require('express');var router=express[_0xc7be('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc7be('0x5'));var interaction=require(_0xc7be('0x6'));var config=require('../../config/environment');var controller=require(_0xc7be('0x7'));router['put'](_0xc7be('0x8'),auth[_0xc7be('0x9')](),controller[_0xc7be('0xa')]);router[_0xc7be('0xb')](_0xc7be('0x8'),auth[_0xc7be('0x9')](),controller[_0xc7be('0xc')]);module[_0xc7be('0xd')]=router;
\ No newline at end of file
+var _0x9416=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller','put','/:id','isAuthenticated','update','delete'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9416,0xde));var _0x6941=function(_0xb3188e,_0x25fbf6){_0xb3188e=_0xb3188e-0x0;var _0x3f094e=_0x9416[_0xb3188e];return _0x3f094e;};'use strict';var multer=require(_0x6941('0x0'));var util=require(_0x6941('0x1'));var path=require(_0x6941('0x2'));var timeout=require(_0x6941('0x3'));var express=require(_0x6941('0x4'));var router=express[_0x6941('0x5')]();var fs_extra=require(_0x6941('0x6'));var auth=require(_0x6941('0x7'));var interaction=require(_0x6941('0x8'));var config=require(_0x6941('0x9'));var controller=require(_0x6941('0xa'));router[_0x6941('0xb')](_0x6941('0xc'),auth[_0x6941('0xd')](),controller[_0x6941('0xe')]);router[_0x6941('0xf')](_0x6941('0xc'),auth[_0x6941('0xd')](),controller['destroy']);module[_0x6941('0x10')]=router;
\ No newline at end of file
index 294e43c..29c4367 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['STRING','name'];(function(_0x1da883,_0x108650){var _0x3dba26=function(_0x56f7ad){while(--_0x56f7ad){_0x1da883['push'](_0x1da883['shift']());}};_0x3dba26(++_0x108650);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3071('0x0')],'allowNull':![],'unique':_0x3071('0x1')},'description':{'type':Sequelize[_0x3071('0x0')]}};
\ No newline at end of file
+var _0xbaf0=['name','exports','STRING'];(function(_0x4a4922,_0x82cb8f){var _0x55a8c6=function(_0x59712e){while(--_0x59712e){_0x4a4922['push'](_0x4a4922['shift']());}};_0x55a8c6(++_0x82cb8f);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xbaf0[_0x2f5ac5];return _0x37c9a8;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
index 5b875c8..ab58008 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd58=['get','CustomDashboards','UserProfileResource','stack','name','send','index','map','Dashboard','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','count','includeAll','include','rows','show','options','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','body','UserProfileSection','attrUrl','attrs','value','https://','custom','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','findOne','getItems','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','limit','reject','save','update','then','destroy'];(function(_0x1e9631,_0x2491b1){var _0x15b274=function(_0x371073){while(--_0x371073){_0x1e9631['push'](_0x1e9631['shift']());}};_0x15b274(++_0x2491b1);}(_0xfd58,0x1c5));var _0x8fd5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd58[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x8fd5('0x0'));var rimraf=require(_0x8fd5('0x1'));var zipdir=require(_0x8fd5('0x2'));var jsonpatch=require(_0x8fd5('0x3'));var rp=require(_0x8fd5('0x4'));var moment=require(_0x8fd5('0x5'));var BPromise=require(_0x8fd5('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8fd5('0x7'));var sox=require(_0x8fd5('0x8'));var csv=require('to-csv');var ejs=require(_0x8fd5('0x9'));var fs=require('fs');var fs_extra=require(_0x8fd5('0xa'));var _=require(_0x8fd5('0xb'));var squel=require(_0x8fd5('0xc'));var crypto=require(_0x8fd5('0xd'));var jsforce=require(_0x8fd5('0xe'));var deskjs=require(_0x8fd5('0xf'));var toCsv=require(_0x8fd5('0x10'));var querystring=require(_0x8fd5('0x11'));var Papa=require(_0x8fd5('0x12'));var Redis=require(_0x8fd5('0x13'));var authService=require(_0x8fd5('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8fd5('0x15'))(_0x8fd5('0x16'));var utils=require(_0x8fd5('0x17'));var config=require(_0x8fd5('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x8fd5('0x19')]=_[_0x8fd5('0x1a')](config['redis'],{'host':_0x8fd5('0x1b'),'port':0x18eb});var socket=require(_0x8fd5('0x1c'))(new Redis(config[_0x8fd5('0x19')]));require(_0x8fd5('0x1d'))[_0x8fd5('0x1e')](socket);function respondWithStatusCode(_0x3ae3a0,_0x53876a){_0x53876a=_0x53876a||0xcc;return function(_0x3eb0c2){if(_0x3eb0c2){return _0x3ae3a0[_0x8fd5('0x1f')](_0x53876a);}return _0x3ae3a0[_0x8fd5('0x20')](_0x53876a)[_0x8fd5('0x21')]();};}function respondWithResult(_0x117ca5,_0x4fbac5){_0x4fbac5=_0x4fbac5||0xc8;return function(_0x3d5183){if(_0x3d5183){return _0x117ca5[_0x8fd5('0x20')](_0x4fbac5)[_0x8fd5('0x22')](_0x3d5183);}};}function respondWithFilteredResult(_0x17a6bb,_0x3b27ee){return function(_0x3aeed7){if(_0x3aeed7){var _0x560f38=typeof _0x3b27ee[_0x8fd5('0x23')]===_0x8fd5('0x24')&&typeof _0x3b27ee[_0x8fd5('0x25')]==='undefined';var _0x145dee=_0x3aeed7['count'];var _0x21dff1=_0x560f38?0x0:_0x3b27ee[_0x8fd5('0x23')];var _0x3f12c4=_0x560f38?_0x3aeed7['count']:_0x3b27ee[_0x8fd5('0x23')]+_0x3b27ee[_0x8fd5('0x25')];var _0x479b43;if(_0x3f12c4>=_0x145dee){_0x3f12c4=_0x145dee;_0x479b43=0xc8;}else{_0x479b43=0xce;}_0x17a6bb['status'](_0x479b43);return _0x17a6bb['set']('Content-Range',_0x21dff1+'-'+_0x3f12c4+'/'+_0x145dee)[_0x8fd5('0x22')](_0x3aeed7);}return null;};}function patchUpdates(_0x2f69f4){return function(_0x3493cb){try{jsonpatch['apply'](_0x3493cb,_0x2f69f4,!![]);}catch(_0x438f61){return BPromise[_0x8fd5('0x26')](_0x438f61);}return _0x3493cb[_0x8fd5('0x27')]();};}function saveUpdates(_0x1dfe6a,_0x1c9a75){return function(_0x3fb705){if(_0x3fb705){return _0x3fb705[_0x8fd5('0x28')](_0x1dfe6a)[_0x8fd5('0x29')](function(_0x3b98cf){return _0x3b98cf;});}return null;};}function removeEntity(_0x481eb2,_0x280092){return function(_0x49f52c){if(_0x49f52c){return _0x49f52c[_0x8fd5('0x2a')]()['then'](function(){var _0x17a19e=_0x49f52c[_0x8fd5('0x2b')]({'plain':!![]});var _0x31d7bd=_0x8fd5('0x2c');return db[_0x8fd5('0x2d')][_0x8fd5('0x2a')]({'where':{'type':_0x31d7bd,'resourceId':_0x17a19e['id']}})[_0x8fd5('0x29')](function(){return _0x49f52c;});})[_0x8fd5('0x29')](function(){_0x481eb2[_0x8fd5('0x20')](0xcc)[_0x8fd5('0x21')]();});}};}function handleEntityNotFound(_0x2486a4,_0x239b42){return function(_0x5aa0ad){if(!_0x5aa0ad){_0x2486a4[_0x8fd5('0x1f')](0x194);}return _0x5aa0ad;};}function handleError(_0x3232c0,_0x4f1a21){_0x4f1a21=_0x4f1a21||0x1f4;return function(_0x588092){logger['error'](_0x588092[_0x8fd5('0x2e')]);if(_0x588092['name']){delete _0x588092[_0x8fd5('0x2f')];}_0x3232c0[_0x8fd5('0x20')](_0x4f1a21)[_0x8fd5('0x30')](_0x588092);};}exports[_0x8fd5('0x31')]=function(_0x13349a,_0x4f8f0d){var _0x67c488={},_0x5c5fe6={},_0x35e501={'count':0x0,'rows':[]};var _0x56c344=_[_0x8fd5('0x32')](db[_0x8fd5('0x33')][_0x8fd5('0x34')],function(_0x19679e){return{'name':_0x19679e[_0x8fd5('0x35')],'type':_0x19679e[_0x8fd5('0x36')][_0x8fd5('0x37')]};});_0x5c5fe6[_0x8fd5('0x38')]=_[_0x8fd5('0x32')](_0x56c344,'name');_0x5c5fe6[_0x8fd5('0x39')]=_[_0x8fd5('0x3a')](_0x13349a['query']);_0x5c5fe6[_0x8fd5('0x3b')]=_[_0x8fd5('0x3c')](_0x5c5fe6[_0x8fd5('0x38')],_0x5c5fe6[_0x8fd5('0x39')]);_0x67c488['attributes']=_[_0x8fd5('0x3c')](_0x5c5fe6[_0x8fd5('0x38')],qs['fields'](_0x13349a[_0x8fd5('0x39')][_0x8fd5('0x3d')]));_0x67c488[_0x8fd5('0x3e')]=_0x67c488['attributes'][_0x8fd5('0x3f')]?_0x67c488['attributes']:_0x5c5fe6[_0x8fd5('0x38')];if(!_0x13349a[_0x8fd5('0x39')][_0x8fd5('0x40')](_0x8fd5('0x41'))){_0x67c488[_0x8fd5('0x25')]=qs[_0x8fd5('0x25')](_0x13349a[_0x8fd5('0x39')][_0x8fd5('0x25')]);_0x67c488[_0x8fd5('0x23')]=qs[_0x8fd5('0x23')](_0x13349a[_0x8fd5('0x39')][_0x8fd5('0x23')]);}_0x67c488[_0x8fd5('0x42')]=qs[_0x8fd5('0x43')](_0x13349a['query'][_0x8fd5('0x43')]);_0x67c488['where']=qs['filters'](_[_0x8fd5('0x44')](_0x13349a[_0x8fd5('0x39')],_0x5c5fe6[_0x8fd5('0x3b')]),_0x56c344);if(_0x13349a[_0x8fd5('0x39')][_0x8fd5('0x45')]){_0x67c488[_0x8fd5('0x46')]=_[_0x8fd5('0x47')](_0x67c488[_0x8fd5('0x46')],{'$or':_[_0x8fd5('0x32')](_0x56c344,function(_0x52b6fc){if(_0x52b6fc[_0x8fd5('0x36')]!==_0x8fd5('0x48')){var _0x135adb={};_0x135adb[_0x52b6fc[_0x8fd5('0x2f')]]={'$like':'%'+_0x13349a[_0x8fd5('0x39')][_0x8fd5('0x45')]+'%'};return _0x135adb;}})});}_0x67c488=_[_0x8fd5('0x47')]({},_0x67c488,_0x13349a['options']);var _0x3f9745={'where':_0x67c488[_0x8fd5('0x46')]};return db['Dashboard'][_0x8fd5('0x49')](_0x3f9745)['then'](function(_0x297ac6){_0x35e501[_0x8fd5('0x49')]=_0x297ac6;if(_0x13349a['query'][_0x8fd5('0x4a')]){_0x67c488[_0x8fd5('0x4b')]=[{'all':!![]}];}return db[_0x8fd5('0x33')]['findAll'](_0x67c488);})[_0x8fd5('0x29')](function(_0xdb845d){_0x35e501[_0x8fd5('0x4c')]=_0xdb845d;return _0x35e501;})[_0x8fd5('0x29')](respondWithFilteredResult(_0x4f8f0d,_0x67c488))['catch'](handleError(_0x4f8f0d,null));};exports[_0x8fd5('0x4d')]=function(_0x2ea423,_0x2c1e8c){var _0x3df786={'raw':![],'where':{'id':_0x2ea423['params']['id']}},_0x3580e2={};_0x3580e2['model']=_[_0x8fd5('0x3a')](db['Dashboard'][_0x8fd5('0x34')]);_0x3580e2['query']=_[_0x8fd5('0x3a')](_0x2ea423['query']);_0x3580e2[_0x8fd5('0x3b')]=_[_0x8fd5('0x3c')](_0x3580e2[_0x8fd5('0x38')],_0x3580e2[_0x8fd5('0x39')]);_0x3df786[_0x8fd5('0x3e')]=_[_0x8fd5('0x3c')](_0x3580e2[_0x8fd5('0x38')],qs[_0x8fd5('0x3d')](_0x2ea423[_0x8fd5('0x39')][_0x8fd5('0x3d')]));_0x3df786[_0x8fd5('0x3e')]=_0x3df786[_0x8fd5('0x3e')][_0x8fd5('0x3f')]?_0x3df786['attributes']:_0x3580e2[_0x8fd5('0x38')];if(_0x2ea423[_0x8fd5('0x39')][_0x8fd5('0x4a')]){_0x3df786[_0x8fd5('0x4b')]=[{'all':!![]}];}_0x3df786=_[_0x8fd5('0x47')]({},_0x3df786,_0x2ea423[_0x8fd5('0x4e')]);return db[_0x8fd5('0x33')][_0x8fd5('0x4f')](_0x3df786)[_0x8fd5('0x29')](handleEntityNotFound(_0x2c1e8c,null))[_0x8fd5('0x29')](respondWithResult(_0x2c1e8c,null))[_0x8fd5('0x50')](handleError(_0x2c1e8c,null));};exports['create']=function(_0x5b7b5b,_0x17bf09){return db['Dashboard'][_0x8fd5('0x51')](_0x5b7b5b['body'],{})['then'](function(_0x1b9ce7){var _0x10f7d6=_0x5b7b5b[_0x8fd5('0x52')][_0x8fd5('0x2b')]({'plain':!![]});if(!_0x10f7d6)throw new Error(_0x8fd5('0x53'));if(_0x10f7d6[_0x8fd5('0x54')]===_0x8fd5('0x52')){var _0x227204=_0x1b9ce7['get']({'plain':!![]});var _0x2687f3=_0x8fd5('0x2c');return db['UserProfileSection'][_0x8fd5('0x4f')]({'where':{'name':_0x2687f3,'userProfileId':_0x10f7d6[_0x8fd5('0x55')]},'raw':!![]})['then'](function(_0x281833){if(_0x281833&&_0x281833[_0x8fd5('0x56')]===0x0){return db[_0x8fd5('0x2d')][_0x8fd5('0x51')]({'name':_0x227204['name'],'resourceId':_0x227204['id'],'type':_0x281833[_0x8fd5('0x2f')],'sectionId':_0x281833['id']},{})[_0x8fd5('0x29')](function(){return _0x1b9ce7;});}else{return _0x1b9ce7;}})[_0x8fd5('0x50')](function(_0x4c2975){logger[_0x8fd5('0x57')](_0x8fd5('0x58'),_0x4c2975);throw _0x4c2975;});}return _0x1b9ce7;})[_0x8fd5('0x29')](respondWithResult(_0x17bf09,0xc9))[_0x8fd5('0x50')](handleError(_0x17bf09,null));};exports[_0x8fd5('0x59')]=function(_0x4a50f7,_0x265378){var _0x5f13fb={'where':{'id':_0x4a50f7[_0x8fd5('0x5a')]['id']}},_0x2f936f={};_0x2f936f[_0x8fd5('0x38')]=_[_0x8fd5('0x3a')](db[_0x8fd5('0x33')][_0x8fd5('0x34')]);_0x5f13fb[_0x8fd5('0x3e')]=_[_0x8fd5('0x3c')](_0x2f936f[_0x8fd5('0x38')],qs[_0x8fd5('0x3d')](_0x4a50f7[_0x8fd5('0x39')][_0x8fd5('0x3d')]));_0x5f13fb[_0x8fd5('0x3e')]=_0x5f13fb['attributes'][_0x8fd5('0x3f')]?_0x5f13fb[_0x8fd5('0x3e')]:_0x2f936f[_0x8fd5('0x38')];if(_0x4a50f7['query'][_0x8fd5('0x4a')]){_0x5f13fb['include']=[{'all':!![]}];}_0x5f13fb=_[_0x8fd5('0x47')]({},_0x5f13fb,_0x4a50f7[_0x8fd5('0x4e')]);return db['Dashboard']['find'](_0x5f13fb)['then'](handleEntityNotFound(_0x265378,null))['then'](function(_0x4175d8){if(_0x4175d8){var _0x167659=_0x4175d8[_0x8fd5('0x2b')]({'plain':!![]});_0x167659=qs[_0x8fd5('0x5b')](_0x167659,['id',_0x8fd5('0x5c'),_0x8fd5('0x5d')]);_0x4a50f7['body']=_['omit'](_0x4a50f7['body'],['id',_0x8fd5('0x5c'),_0x8fd5('0x5d')]);return db[_0x8fd5('0x33')][_0x8fd5('0x51')](_[_0x8fd5('0x47')](_0x167659,_0x4a50f7[_0x8fd5('0x5e')]),{'include':_0x4a50f7['query'][_0x8fd5('0x4a')]?[{'all':!![]}]:undefined})[_0x8fd5('0x29')](function(_0x2c98b7){var _0x5d805c=_0x4a50f7[_0x8fd5('0x52')]['get']({'plain':!![]});if(!_0x5d805c)throw new Error(_0x8fd5('0x53'));if(_0x5d805c[_0x8fd5('0x54')]===_0x8fd5('0x52')){var _0x54ff61=_0x2c98b7[_0x8fd5('0x2b')]({'plain':!![]});var _0x1901a2=_0x8fd5('0x2c');return db[_0x8fd5('0x5f')][_0x8fd5('0x4f')]({'where':{'name':_0x1901a2,'userProfileId':_0x5d805c[_0x8fd5('0x55')]},'raw':!![]})['then'](function(_0x4bc20c){if(_0x4bc20c&&_0x4bc20c[_0x8fd5('0x56')]===0x0){return db[_0x8fd5('0x2d')][_0x8fd5('0x51')]({'name':_0x54ff61['name'],'resourceId':_0x54ff61['id'],'type':_0x4bc20c[_0x8fd5('0x2f')],'sectionId':_0x4bc20c['id']},{})[_0x8fd5('0x29')](function(){return _0x2c98b7;});}else{return _0x2c98b7;}})[_0x8fd5('0x50')](function(_0x2f0adf){logger[_0x8fd5('0x57')](_0x8fd5('0x58'),_0x2f0adf);throw _0x2f0adf;});}return _0x2c98b7;});}})[_0x8fd5('0x29')](respondWithResult(_0x265378,0xc9))[_0x8fd5('0x50')](handleError(_0x265378,null));};exports[_0x8fd5('0x28')]=function(_0x5da1fd,_0x27036f){if(_0x5da1fd[_0x8fd5('0x5e')]['id']){delete _0x5da1fd[_0x8fd5('0x5e')]['id'];}return db[_0x8fd5('0x33')][_0x8fd5('0x4f')]({'where':{'id':_0x5da1fd[_0x8fd5('0x5a')]['id']}})[_0x8fd5('0x29')](handleEntityNotFound(_0x27036f,null))[_0x8fd5('0x29')](saveUpdates(_0x5da1fd[_0x8fd5('0x5e')],null))[_0x8fd5('0x29')](respondWithResult(_0x27036f,null))[_0x8fd5('0x50')](handleError(_0x27036f,null));};exports['destroy']=function(_0xc3aa64,_0xb88901){return db[_0x8fd5('0x33')][_0x8fd5('0x4f')]({'where':{'id':_0xc3aa64[_0x8fd5('0x5a')]['id']}})[_0x8fd5('0x29')](handleEntityNotFound(_0xb88901,null))[_0x8fd5('0x29')](removeEntity(_0xb88901,null))[_0x8fd5('0x50')](handleError(_0xb88901,null));};function widgetAttributes(_0x12e011){try{switch(_0x12e011[_0x8fd5('0x36')]){case'iframe':return[{'name':_0x8fd5('0x60'),'value':_0x12e011[_0x8fd5('0x60')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011['attrs'][0x0]?_0x12e011[_0x8fd5('0x61')][0x0][_0x8fd5('0x62')]:undefined)||_0x8fd5('0x63')}];case _0x8fd5('0x64'):return[{'name':'attrPath','value':_0x12e011['attrPath']||(_0x12e011['attrs']&&_0x12e011[_0x8fd5('0x61')][0x0]?_0x12e011['attrs'][0x0]['value']:undefined)||''}];case _0x8fd5('0x65'):return[{'name':_0x8fd5('0x66'),'value':_0x12e011[_0x8fd5('0x66')]||(_0x12e011['attrs']&&_0x12e011[_0x8fd5('0x61')][0x0]?_0x12e011[_0x8fd5('0x61')][0x0][_0x8fd5('0x62')]:undefined)||_0x8fd5('0x67')},{'name':_0x8fd5('0x68'),'value':_0x12e011[_0x8fd5('0x68')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011[_0x8fd5('0x61')][0x1]?_0x12e011['attrs'][0x1][_0x8fd5('0x62')]:undefined)||'0.00'},{'name':_0x8fd5('0x69'),'value':_0x12e011[_0x8fd5('0x69')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011['attrs'][0x2]?_0x12e011[_0x8fd5('0x61')][0x2]['value']:undefined)||0xc}];case _0x8fd5('0x6a'):return[{'name':_0x8fd5('0x6b'),'value':_0x12e011[_0x8fd5('0x6b')]||(_0x12e011['attrs']&&_0x12e011[_0x8fd5('0x61')][0x0]?_0x12e011['attrs'][0x0][_0x8fd5('0x62')]:undefined)||'total'},{'name':'attrVoiceQueues','value':_0x12e011[_0x8fd5('0x6c')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011['attrs'][0x1]?_0x12e011[_0x8fd5('0x61')][0x1]['value']:undefined)||[]},{'name':_0x8fd5('0x69'),'value':_0x12e011[_0x8fd5('0x69')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011[_0x8fd5('0x61')][0x2]?_0x12e011[_0x8fd5('0x61')][0x2][_0x8fd5('0x62')]:undefined)||0x14}];case _0x8fd5('0x6d'):case _0x8fd5('0x6e'):return[{'name':_0x8fd5('0x6f'),'value':_0x12e011[_0x8fd5('0x6f')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011['attrs'][0x0]?_0x12e011[_0x8fd5('0x61')][0x0]['value']:undefined)||'total'},{'name':_0x8fd5('0x70'),'value':_0x12e011[_0x8fd5('0x70')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011[_0x8fd5('0x61')][0x1]?_0x12e011[_0x8fd5('0x61')][0x1][_0x8fd5('0x62')]:undefined)||null},{'name':_0x8fd5('0x71'),'value':_0x12e011[_0x8fd5('0x71')]||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011[_0x8fd5('0x61')][0x2]?_0x12e011['attrs'][0x2][_0x8fd5('0x62')]:undefined)||null},{'name':_0x8fd5('0x6c'),'value':_0x12e011['attrVoiceQueues']||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011[_0x8fd5('0x61')][0x3]?_0x12e011[_0x8fd5('0x61')][0x3][_0x8fd5('0x62')]:undefined)||[]}];case _0x8fd5('0x72'):return[{'name':_0x8fd5('0x73'),'type':_0x12e011['reportType']||(_0x12e011['attrs']&&_0x12e011[_0x8fd5('0x61')][0x0]?_0x12e011[_0x8fd5('0x61')][0x0][_0x8fd5('0x36')]:undefined)||null,'value':_0x12e011[_0x8fd5('0x73')]||(_0x12e011['attrs']&&_0x12e011['attrs'][0x0]?_0x12e011[_0x8fd5('0x61')][0x0][_0x8fd5('0x62')]:undefined)||null},{'name':_0x8fd5('0x74'),'value':_0x12e011['attrRefresh']||(_0x12e011[_0x8fd5('0x61')]&&_0x12e011[_0x8fd5('0x61')][0x1]?_0x12e011[_0x8fd5('0x61')][0x1][_0x8fd5('0x62')]:undefined)||0x0}];default:return[];}}catch(_0x485d76){logger['error'](_0x8fd5('0x75'),JSON[_0x8fd5('0x76')](_0x485d76));return[];}}exports[_0x8fd5('0x77')]=function(_0x397cb2,_0x3c3a93,_0xf73627){if(_0x397cb2[_0x8fd5('0x5e')]['id']){delete _0x397cb2['body']['id'];}return db[_0x8fd5('0x33')]['find']({'where':{'id':_0x397cb2[_0x8fd5('0x5a')]['id']}})[_0x8fd5('0x29')](handleEntityNotFound(_0x3c3a93,null))[_0x8fd5('0x29')](function(_0x2e0975){if(_0x2e0975){_0x397cb2[_0x8fd5('0x5e')][_0x8fd5('0x78')]=_0x2e0975['id'];_0x397cb2[_0x8fd5('0x5e')][_0x8fd5('0x61')]=widgetAttributes(_0x397cb2[_0x8fd5('0x5e')]);return db[_0x8fd5('0x79')][_0x8fd5('0x51')](_0x397cb2['body']);}})[_0x8fd5('0x29')](respondWithResult(_0x3c3a93,null))[_0x8fd5('0x50')](handleError(_0x3c3a93,null));};exports['getItems']=function(_0x4b7330,_0x4e5db6,_0x58e4ac){var _0x219a84={};var _0xf8cd04={};var _0x5c8ede;var _0x2b414b;return db[_0x8fd5('0x33')][_0x8fd5('0x7a')]({'where':{'id':_0x4b7330[_0x8fd5('0x5a')]['id']}})[_0x8fd5('0x29')](handleEntityNotFound(_0x4e5db6,null))[_0x8fd5('0x29')](function(_0x5ac3ae){if(_0x5ac3ae){_0x5c8ede=_0x5ac3ae;_0xf8cd04['model']=_['keys'](db['DashboardItem'][_0x8fd5('0x34')]);_0xf8cd04['query']=_[_0x8fd5('0x3a')](_0x4b7330[_0x8fd5('0x39')]);_0xf8cd04['filters']=_[_0x8fd5('0x3c')](_0xf8cd04[_0x8fd5('0x38')],_0xf8cd04[_0x8fd5('0x39')]);_0x219a84['attributes']=_[_0x8fd5('0x3c')](_0xf8cd04[_0x8fd5('0x38')],qs[_0x8fd5('0x3d')](_0x4b7330[_0x8fd5('0x39')]['fields']));_0x219a84['attributes']=_0x219a84[_0x8fd5('0x3e')]['length']?_0x219a84['attributes']:_0xf8cd04[_0x8fd5('0x38')];_0x219a84[_0x8fd5('0x42')]=qs[_0x8fd5('0x43')](_0x4b7330[_0x8fd5('0x39')][_0x8fd5('0x43')]);_0x219a84[_0x8fd5('0x46')]=qs[_0x8fd5('0x3b')](_['pick'](_0x4b7330[_0x8fd5('0x39')],_0xf8cd04['filters']));if(_0x4b7330['query'][_0x8fd5('0x45')]){_0x219a84[_0x8fd5('0x46')]=_[_0x8fd5('0x47')](_0x219a84[_0x8fd5('0x46')],{'$or':_[_0x8fd5('0x32')](_0x219a84[_0x8fd5('0x3e')],function(_0x2f7d41){var _0x1bbafa={};_0x1bbafa[_0x2f7d41]={'$like':'%'+_0x4b7330[_0x8fd5('0x39')][_0x8fd5('0x45')]+'%'};return _0x1bbafa;})});}_0x219a84=_[_0x8fd5('0x47')]({},_0x219a84,_0x4b7330['options']);return _0x5c8ede[_0x8fd5('0x7b')](_0x219a84);}})[_0x8fd5('0x29')](function(_0xee69c){if(_0xee69c){_0x2b414b=_0xee69c[_0x8fd5('0x3f')];if(!_0x4b7330[_0x8fd5('0x39')][_0x8fd5('0x40')](_0x8fd5('0x41'))){_0x219a84[_0x8fd5('0x25')]=qs[_0x8fd5('0x25')](_0x4b7330[_0x8fd5('0x39')][_0x8fd5('0x25')]);_0x219a84[_0x8fd5('0x23')]=qs[_0x8fd5('0x23')](_0x4b7330['query'][_0x8fd5('0x23')]);}return _0x5c8ede[_0x8fd5('0x7b')](_0x219a84);}})[_0x8fd5('0x29')](function(_0x4cbbc5){if(_0x4cbbc5){return _0x4cbbc5?{'count':_0x2b414b,'rows':_0x4cbbc5}:null;}})['then'](respondWithResult(_0x4e5db6,null))[_0x8fd5('0x50')](handleError(_0x4e5db6,null));};
\ No newline at end of file
+var _0x86a2=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','redis','localhost','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','CustomDashboards','destroy','error','stack','name','index','map','Dashboard','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','VIRTUAL','filter','merge','includeAll','include','findAll','catch','show','params','rawAttributes','options','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','body','role','autoAssociation','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','total','attrSerie2','attrSerie3','attrOpenchannelAccounts','web-report','attrReport','reportType','attrRefresh','addItem','DashboardId','DashboardItem','getItems','findOne','order','pick','hasOwnProperty'];(function(_0x54e780,_0x2098aa){var _0x23603f=function(_0x4c2b0b){while(--_0x4c2b0b){_0x54e780['push'](_0x54e780['shift']());}};_0x23603f(++_0x2098aa);}(_0x86a2,0x85));var _0x286a=function(_0x56a061,_0x53fb1b){_0x56a061=_0x56a061-0x0;var _0x105fa0=_0x86a2[_0x56a061];return _0x105fa0;};'use strict';var emlformat=require(_0x286a('0x0'));var rimraf=require(_0x286a('0x1'));var zipdir=require(_0x286a('0x2'));var jsonpatch=require(_0x286a('0x3'));var rp=require(_0x286a('0x4'));var moment=require(_0x286a('0x5'));var BPromise=require(_0x286a('0x6'));var Mustache=require(_0x286a('0x7'));var util=require(_0x286a('0x8'));var path=require('path');var sox=require(_0x286a('0x9'));var csv=require(_0x286a('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x286a('0xb'));var _=require(_0x286a('0xc'));var squel=require('squel');var crypto=require(_0x286a('0xd'));var jsforce=require(_0x286a('0xe'));var deskjs=require(_0x286a('0xf'));var toCsv=require('to-csv');var querystring=require(_0x286a('0x10'));var Papa=require(_0x286a('0x11'));var Redis=require(_0x286a('0x12'));var authService=require(_0x286a('0x13'));var qs=require(_0x286a('0x14'));var as=require(_0x286a('0x15'));var hardwareService=require(_0x286a('0x16'));var logger=require(_0x286a('0x17'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x286a('0x18'));var db=require('../../mysqldb')['db'];config[_0x286a('0x19')]=_['defaults'](config[_0x286a('0x19')],{'host':_0x286a('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x286a('0x19')]));require(_0x286a('0x1b'))[_0x286a('0x1c')](socket);function respondWithStatusCode(_0x10807b,_0x3ce4ea){_0x3ce4ea=_0x3ce4ea||0xcc;return function(_0x46bec2){if(_0x46bec2){return _0x10807b[_0x286a('0x1d')](_0x3ce4ea);}return _0x10807b[_0x286a('0x1e')](_0x3ce4ea)[_0x286a('0x1f')]();};}function respondWithResult(_0x30bdd9,_0x3e76fc){_0x3e76fc=_0x3e76fc||0xc8;return function(_0x5a2fb7){if(_0x5a2fb7){return _0x30bdd9['status'](_0x3e76fc)[_0x286a('0x20')](_0x5a2fb7);}};}function respondWithFilteredResult(_0x16a244,_0x27458f){return function(_0x3fcf4c){if(_0x3fcf4c){var _0x422e63=typeof _0x27458f[_0x286a('0x21')]===_0x286a('0x22')&&typeof _0x27458f[_0x286a('0x23')]===_0x286a('0x22');var _0x531ca7=_0x3fcf4c[_0x286a('0x24')];var _0x1cdf70=_0x422e63?0x0:_0x27458f[_0x286a('0x21')];var _0x35e813=_0x422e63?_0x3fcf4c['count']:_0x27458f['offset']+_0x27458f[_0x286a('0x23')];var _0x3b6c67;if(_0x35e813>=_0x531ca7){_0x35e813=_0x531ca7;_0x3b6c67=0xc8;}else{_0x3b6c67=0xce;}_0x16a244[_0x286a('0x1e')](_0x3b6c67);return _0x16a244[_0x286a('0x25')](_0x286a('0x26'),_0x1cdf70+'-'+_0x35e813+'/'+_0x531ca7)[_0x286a('0x20')](_0x3fcf4c);}return null;};}function patchUpdates(_0x31e9eb){return function(_0x217af1){try{jsonpatch[_0x286a('0x27')](_0x217af1,_0x31e9eb,!![]);}catch(_0x4d3437){return BPromise[_0x286a('0x28')](_0x4d3437);}return _0x217af1[_0x286a('0x29')]();};}function saveUpdates(_0x2bd180,_0xc73a2b){return function(_0xf701a1){if(_0xf701a1){return _0xf701a1[_0x286a('0x2a')](_0x2bd180)[_0x286a('0x2b')](function(_0x5b2704){return _0x5b2704;});}return null;};}function removeEntity(_0x43fd5b,_0x2f610a){return function(_0x34a031){if(_0x34a031){return _0x34a031['destroy']()[_0x286a('0x2b')](function(){var _0x449f05=_0x34a031[_0x286a('0x2c')]({'plain':!![]});var _0x70b1f=_0x286a('0x2d');return db['UserProfileResource'][_0x286a('0x2e')]({'where':{'type':_0x70b1f,'resourceId':_0x449f05['id']}})[_0x286a('0x2b')](function(){return _0x34a031;});})['then'](function(){_0x43fd5b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x57910e,_0x58e1a0){return function(_0x5a746f){if(!_0x5a746f){_0x57910e[_0x286a('0x1d')](0x194);}return _0x5a746f;};}function handleError(_0x1d01a9,_0x51a17d){_0x51a17d=_0x51a17d||0x1f4;return function(_0x1d1cee){logger[_0x286a('0x2f')](_0x1d1cee[_0x286a('0x30')]);if(_0x1d1cee[_0x286a('0x31')]){delete _0x1d1cee[_0x286a('0x31')];}_0x1d01a9['status'](_0x51a17d)['send'](_0x1d1cee);};}exports[_0x286a('0x32')]=function(_0x6a79d1,_0x443e2e){var _0x1713c0={},_0x641028={},_0x2e42d1={'count':0x0,'rows':[]};var _0x56ca41=_[_0x286a('0x33')](db[_0x286a('0x34')]['rawAttributes'],function(_0x54fcdf){return{'name':_0x54fcdf[_0x286a('0x35')],'type':_0x54fcdf[_0x286a('0x36')][_0x286a('0x37')]};});_0x641028[_0x286a('0x38')]=_['map'](_0x56ca41,'name');_0x641028[_0x286a('0x39')]=_[_0x286a('0x3a')](_0x6a79d1[_0x286a('0x39')]);_0x641028[_0x286a('0x3b')]=_[_0x286a('0x3c')](_0x641028[_0x286a('0x38')],_0x641028[_0x286a('0x39')]);_0x1713c0[_0x286a('0x3d')]=_[_0x286a('0x3c')](_0x641028[_0x286a('0x38')],qs[_0x286a('0x3e')](_0x6a79d1[_0x286a('0x39')][_0x286a('0x3e')]));_0x1713c0[_0x286a('0x3d')]=_0x1713c0[_0x286a('0x3d')][_0x286a('0x3f')]?_0x1713c0[_0x286a('0x3d')]:_0x641028[_0x286a('0x38')];if(!_0x6a79d1['query']['hasOwnProperty'](_0x286a('0x40'))){_0x1713c0[_0x286a('0x23')]=qs['limit'](_0x6a79d1[_0x286a('0x39')][_0x286a('0x23')]);_0x1713c0[_0x286a('0x21')]=qs[_0x286a('0x21')](_0x6a79d1[_0x286a('0x39')][_0x286a('0x21')]);}_0x1713c0['order']=qs[_0x286a('0x41')](_0x6a79d1['query'][_0x286a('0x41')]);_0x1713c0[_0x286a('0x42')]=qs[_0x286a('0x3b')](_['pick'](_0x6a79d1[_0x286a('0x39')],_0x641028['filters']),_0x56ca41);if(_0x6a79d1[_0x286a('0x39')]['filter']){_0x1713c0['where']=_['merge'](_0x1713c0[_0x286a('0x42')],{'$or':_['map'](_0x56ca41,function(_0x559f8b){if(_0x559f8b[_0x286a('0x36')]!==_0x286a('0x43')){var _0x7111e0={};_0x7111e0[_0x559f8b[_0x286a('0x31')]]={'$like':'%'+_0x6a79d1[_0x286a('0x39')][_0x286a('0x44')]+'%'};return _0x7111e0;}})});}_0x1713c0=_[_0x286a('0x45')]({},_0x1713c0,_0x6a79d1['options']);var _0x509c7e={'where':_0x1713c0['where']};return db[_0x286a('0x34')][_0x286a('0x24')](_0x509c7e)[_0x286a('0x2b')](function(_0x560f88){_0x2e42d1[_0x286a('0x24')]=_0x560f88;if(_0x6a79d1[_0x286a('0x39')][_0x286a('0x46')]){_0x1713c0[_0x286a('0x47')]=[{'all':!![]}];}return db['Dashboard'][_0x286a('0x48')](_0x1713c0);})[_0x286a('0x2b')](function(_0x25046d){_0x2e42d1['rows']=_0x25046d;return _0x2e42d1;})[_0x286a('0x2b')](respondWithFilteredResult(_0x443e2e,_0x1713c0))[_0x286a('0x49')](handleError(_0x443e2e,null));};exports[_0x286a('0x4a')]=function(_0x19be28,_0x4fffaf){var _0x4422e1={'raw':![],'where':{'id':_0x19be28[_0x286a('0x4b')]['id']}},_0x103ff9={};_0x103ff9[_0x286a('0x38')]=_['keys'](db[_0x286a('0x34')][_0x286a('0x4c')]);_0x103ff9[_0x286a('0x39')]=_[_0x286a('0x3a')](_0x19be28[_0x286a('0x39')]);_0x103ff9[_0x286a('0x3b')]=_[_0x286a('0x3c')](_0x103ff9['model'],_0x103ff9['query']);_0x4422e1[_0x286a('0x3d')]=_['intersection'](_0x103ff9[_0x286a('0x38')],qs[_0x286a('0x3e')](_0x19be28[_0x286a('0x39')][_0x286a('0x3e')]));_0x4422e1[_0x286a('0x3d')]=_0x4422e1[_0x286a('0x3d')][_0x286a('0x3f')]?_0x4422e1[_0x286a('0x3d')]:_0x103ff9[_0x286a('0x38')];if(_0x19be28[_0x286a('0x39')][_0x286a('0x46')]){_0x4422e1['include']=[{'all':!![]}];}_0x4422e1=_[_0x286a('0x45')]({},_0x4422e1,_0x19be28[_0x286a('0x4d')]);return db['Dashboard'][_0x286a('0x4e')](_0x4422e1)[_0x286a('0x2b')](handleEntityNotFound(_0x4fffaf,null))[_0x286a('0x2b')](respondWithResult(_0x4fffaf,null))[_0x286a('0x49')](handleError(_0x4fffaf,null));};exports[_0x286a('0x4f')]=function(_0x2c25c4,_0xcaed6a){return db[_0x286a('0x34')][_0x286a('0x4f')](_0x2c25c4['body'],{})[_0x286a('0x2b')](function(_0x3e9296){var _0x59b0b3=_0x2c25c4['user'][_0x286a('0x2c')]({'plain':!![]});if(!_0x59b0b3)throw new Error(_0x286a('0x50'));if(_0x59b0b3['role']===_0x286a('0x51')){var _0x3f3510=_0x3e9296[_0x286a('0x2c')]({'plain':!![]});var _0x50805b='CustomDashboards';return db[_0x286a('0x52')][_0x286a('0x4e')]({'where':{'name':_0x50805b,'userProfileId':_0x59b0b3[_0x286a('0x53')]},'raw':!![]})[_0x286a('0x2b')](function(_0x235625){if(_0x235625&&_0x235625['autoAssociation']===0x0){return db[_0x286a('0x54')][_0x286a('0x4f')]({'name':_0x3f3510[_0x286a('0x31')],'resourceId':_0x3f3510['id'],'type':_0x235625[_0x286a('0x31')],'sectionId':_0x235625['id']},{})['then'](function(){return _0x3e9296;});}else{return _0x3e9296;}})[_0x286a('0x49')](function(_0x3429fd){logger[_0x286a('0x2f')](_0x286a('0x55'),_0x3429fd);throw _0x3429fd;});}return _0x3e9296;})[_0x286a('0x2b')](respondWithResult(_0xcaed6a,0xc9))[_0x286a('0x49')](handleError(_0xcaed6a,null));};exports[_0x286a('0x56')]=function(_0x3c9811,_0x48e68c){var _0x4097f0={'where':{'id':_0x3c9811['params']['id']}},_0x38a8e5={};_0x38a8e5[_0x286a('0x38')]=_[_0x286a('0x3a')](db[_0x286a('0x34')][_0x286a('0x4c')]);_0x4097f0[_0x286a('0x3d')]=_[_0x286a('0x3c')](_0x38a8e5[_0x286a('0x38')],qs[_0x286a('0x3e')](_0x3c9811[_0x286a('0x39')][_0x286a('0x3e')]));_0x4097f0[_0x286a('0x3d')]=_0x4097f0[_0x286a('0x3d')][_0x286a('0x3f')]?_0x4097f0[_0x286a('0x3d')]:_0x38a8e5['model'];if(_0x3c9811['query'][_0x286a('0x46')]){_0x4097f0[_0x286a('0x47')]=[{'all':!![]}];}_0x4097f0=_['merge']({},_0x4097f0,_0x3c9811[_0x286a('0x4d')]);return db[_0x286a('0x34')][_0x286a('0x4e')](_0x4097f0)['then'](handleEntityNotFound(_0x48e68c,null))[_0x286a('0x2b')](function(_0x394133){if(_0x394133){var _0x1964b1=_0x394133[_0x286a('0x2c')]({'plain':!![]});_0x1964b1=qs[_0x286a('0x57')](_0x1964b1,['id',_0x286a('0x58'),'updatedAt']);_0x3c9811[_0x286a('0x59')]=_[_0x286a('0x57')](_0x3c9811[_0x286a('0x59')],['id',_0x286a('0x58'),'updatedAt']);return db[_0x286a('0x34')][_0x286a('0x4f')](_['merge'](_0x1964b1,_0x3c9811[_0x286a('0x59')]),{'include':_0x3c9811[_0x286a('0x39')][_0x286a('0x46')]?[{'all':!![]}]:undefined})['then'](function(_0x373178){var _0x487838=_0x3c9811[_0x286a('0x51')]['get']({'plain':!![]});if(!_0x487838)throw new Error(_0x286a('0x50'));if(_0x487838[_0x286a('0x5a')]==='user'){var _0x2e8465=_0x373178[_0x286a('0x2c')]({'plain':!![]});var _0x201ca5=_0x286a('0x2d');return db[_0x286a('0x52')][_0x286a('0x4e')]({'where':{'name':_0x201ca5,'userProfileId':_0x487838[_0x286a('0x53')]},'raw':!![]})[_0x286a('0x2b')](function(_0x3fd964){if(_0x3fd964&&_0x3fd964[_0x286a('0x5b')]===0x0){return db[_0x286a('0x54')][_0x286a('0x4f')]({'name':_0x2e8465[_0x286a('0x31')],'resourceId':_0x2e8465['id'],'type':_0x3fd964[_0x286a('0x31')],'sectionId':_0x3fd964['id']},{})[_0x286a('0x2b')](function(){return _0x373178;});}else{return _0x373178;}})[_0x286a('0x49')](function(_0x2da9ed){logger['error'](_0x286a('0x55'),_0x2da9ed);throw _0x2da9ed;});}return _0x373178;});}})[_0x286a('0x2b')](respondWithResult(_0x48e68c,0xc9))['catch'](handleError(_0x48e68c,null));};exports[_0x286a('0x2a')]=function(_0x5b6307,_0x2064cb){if(_0x5b6307['body']['id']){delete _0x5b6307[_0x286a('0x59')]['id'];}return db[_0x286a('0x34')][_0x286a('0x4e')]({'where':{'id':_0x5b6307[_0x286a('0x4b')]['id']}})[_0x286a('0x2b')](handleEntityNotFound(_0x2064cb,null))['then'](saveUpdates(_0x5b6307[_0x286a('0x59')],null))['then'](respondWithResult(_0x2064cb,null))[_0x286a('0x49')](handleError(_0x2064cb,null));};exports[_0x286a('0x2e')]=function(_0x6f2bc5,_0x401707){return db[_0x286a('0x34')][_0x286a('0x4e')]({'where':{'id':_0x6f2bc5['params']['id']}})['then'](handleEntityNotFound(_0x401707,null))[_0x286a('0x2b')](removeEntity(_0x401707,null))[_0x286a('0x49')](handleError(_0x401707,null));};function widgetAttributes(_0x2e96d4){try{switch(_0x2e96d4[_0x286a('0x36')]){case _0x286a('0x5c'):return[{'name':'attrUrl','value':_0x2e96d4[_0x286a('0x5d')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4['attrs'][0x0]?_0x2e96d4[_0x286a('0x5e')][0x0][_0x286a('0x5f')]:undefined)||_0x286a('0x60')}];case _0x286a('0x61'):return[{'name':_0x286a('0x62'),'value':_0x2e96d4[_0x286a('0x62')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4[_0x286a('0x5e')][0x0]?_0x2e96d4['attrs'][0x0][_0x286a('0x5f')]:undefined)||''}];case _0x286a('0x63'):return[{'name':_0x286a('0x64'),'value':_0x2e96d4[_0x286a('0x64')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4[_0x286a('0x5e')][0x0]?_0x2e96d4['attrs'][0x0][_0x286a('0x5f')]:undefined)||_0x286a('0x65')},{'name':_0x286a('0x66'),'value':_0x2e96d4[_0x286a('0x66')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4[_0x286a('0x5e')][0x1]?_0x2e96d4[_0x286a('0x5e')][0x1][_0x286a('0x5f')]:undefined)||_0x286a('0x67')},{'name':_0x286a('0x68'),'value':_0x2e96d4[_0x286a('0x68')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4[_0x286a('0x5e')][0x2]?_0x2e96d4['attrs'][0x2][_0x286a('0x5f')]:undefined)||0xc}];case _0x286a('0x69'):return[{'name':_0x286a('0x6a'),'value':_0x2e96d4[_0x286a('0x6a')]||(_0x2e96d4['attrs']&&_0x2e96d4[_0x286a('0x5e')][0x0]?_0x2e96d4['attrs'][0x0][_0x286a('0x5f')]:undefined)||'total'},{'name':_0x286a('0x6b'),'value':_0x2e96d4[_0x286a('0x6b')]||(_0x2e96d4['attrs']&&_0x2e96d4[_0x286a('0x5e')][0x1]?_0x2e96d4['attrs'][0x1][_0x286a('0x5f')]:undefined)||[]},{'name':_0x286a('0x68'),'value':_0x2e96d4[_0x286a('0x68')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4['attrs'][0x2]?_0x2e96d4[_0x286a('0x5e')][0x2][_0x286a('0x5f')]:undefined)||0x14},{'name':'attrChannel','value':_0x2e96d4['attrChannel']||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4['attrs'][0x3]?_0x2e96d4[_0x286a('0x5e')][0x3][_0x286a('0x5f')]:undefined)||_0x286a('0x6c')},{'name':_0x286a('0x6d'),'value':_0x2e96d4[_0x286a('0x6d')]||(_0x2e96d4['attrs']&&_0x2e96d4[_0x286a('0x5e')][0x4]?_0x2e96d4[_0x286a('0x5e')][0x4][_0x286a('0x5f')]:undefined)||''},{'name':_0x286a('0x6e'),'value':_0x2e96d4['attrFaxAccounts']||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4[_0x286a('0x5e')][0x5]?_0x2e96d4[_0x286a('0x5e')][0x5][_0x286a('0x5f')]:undefined)||''},{'name':_0x286a('0x6f'),'value':_0x2e96d4['attrSmsAccounts']||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4['attrs'][0x6]?_0x2e96d4[_0x286a('0x5e')][0x6][_0x286a('0x5f')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x2e96d4['attrOpenchannelAccounts']||(_0x2e96d4['attrs']&&_0x2e96d4[_0x286a('0x5e')][0x7]?_0x2e96d4[_0x286a('0x5e')][0x7][_0x286a('0x5f')]:undefined)||''},{'name':_0x286a('0x70'),'value':_0x2e96d4[_0x286a('0x70')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4['attrs'][0x8]?_0x2e96d4[_0x286a('0x5e')][0x8][_0x286a('0x5f')]:undefined)||''},{'name':_0x286a('0x71'),'value':_0x2e96d4['attrChatWebsites']||(_0x2e96d4['attrs']&&_0x2e96d4[_0x286a('0x5e')][0x9]?_0x2e96d4[_0x286a('0x5e')][0x9][_0x286a('0x5f')]:undefined)||''}];case _0x286a('0x72'):case _0x286a('0x73'):return[{'name':'attrSerie1','value':_0x2e96d4[_0x286a('0x74')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4[_0x286a('0x5e')][0x0]?_0x2e96d4['attrs'][0x0][_0x286a('0x5f')]:undefined)||_0x286a('0x75')},{'name':_0x286a('0x76'),'value':_0x2e96d4[_0x286a('0x76')]||(_0x2e96d4['attrs']&&_0x2e96d4[_0x286a('0x5e')][0x1]?_0x2e96d4[_0x286a('0x5e')][0x1][_0x286a('0x5f')]:undefined)||null},{'name':'attrSerie3','value':_0x2e96d4[_0x286a('0x77')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4[_0x286a('0x5e')][0x2]?_0x2e96d4['attrs'][0x2][_0x286a('0x5f')]:undefined)||null},{'name':_0x286a('0x6b'),'value':_0x2e96d4[_0x286a('0x6b')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4['attrs'][0x3]?_0x2e96d4[_0x286a('0x5e')][0x3][_0x286a('0x5f')]:undefined)||[]},{'name':'attrChannel','value':_0x2e96d4['attrChannel']||(_0x2e96d4['attrs']&&_0x2e96d4[_0x286a('0x5e')][0x4]?_0x2e96d4[_0x286a('0x5e')][0x4]['value']:undefined)||'voice'},{'name':_0x286a('0x6d'),'value':_0x2e96d4[_0x286a('0x6d')]||(_0x2e96d4['attrs']&&_0x2e96d4[_0x286a('0x5e')][0x5]?_0x2e96d4[_0x286a('0x5e')][0x5]['value']:undefined)||''},{'name':_0x286a('0x6e'),'value':_0x2e96d4[_0x286a('0x6e')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4[_0x286a('0x5e')][0x6]?_0x2e96d4[_0x286a('0x5e')][0x6][_0x286a('0x5f')]:undefined)||''},{'name':_0x286a('0x6f'),'value':_0x2e96d4['attrSmsAccounts']||(_0x2e96d4['attrs']&&_0x2e96d4['attrs'][0x7]?_0x2e96d4[_0x286a('0x5e')][0x7][_0x286a('0x5f')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x2e96d4[_0x286a('0x78')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4[_0x286a('0x5e')][0x8]?_0x2e96d4[_0x286a('0x5e')][0x8][_0x286a('0x5f')]:undefined)||''},{'name':_0x286a('0x70'),'value':_0x2e96d4[_0x286a('0x70')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4[_0x286a('0x5e')][0x9]?_0x2e96d4[_0x286a('0x5e')][0x9][_0x286a('0x5f')]:undefined)||''},{'name':_0x286a('0x71'),'value':_0x2e96d4[_0x286a('0x71')]||(_0x2e96d4['attrs']&&_0x2e96d4[_0x286a('0x5e')][0xa]?_0x2e96d4[_0x286a('0x5e')][0xa]['value']:undefined)||''}];case _0x286a('0x79'):return[{'name':_0x286a('0x7a'),'type':_0x2e96d4[_0x286a('0x7b')]||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4[_0x286a('0x5e')][0x0]?_0x2e96d4[_0x286a('0x5e')][0x0]['type']:undefined)||null,'value':_0x2e96d4['attrReport']||(_0x2e96d4[_0x286a('0x5e')]&&_0x2e96d4[_0x286a('0x5e')][0x0]?_0x2e96d4[_0x286a('0x5e')][0x0][_0x286a('0x5f')]:undefined)||null},{'name':_0x286a('0x7c'),'value':_0x2e96d4[_0x286a('0x7c')]||(_0x2e96d4['attrs']&&_0x2e96d4[_0x286a('0x5e')][0x1]?_0x2e96d4[_0x286a('0x5e')][0x1][_0x286a('0x5f')]:undefined)||0x0}];default:return[];}}catch(_0x11548c){logger['error']('widgetAttributes:\x20%s',JSON['stringify'](_0x11548c));return[];}}exports[_0x286a('0x7d')]=function(_0x4e2be3,_0x420bcf,_0x25d3b6){if(_0x4e2be3[_0x286a('0x59')]['id']){delete _0x4e2be3['body']['id'];}return db[_0x286a('0x34')]['find']({'where':{'id':_0x4e2be3[_0x286a('0x4b')]['id']}})['then'](handleEntityNotFound(_0x420bcf,null))[_0x286a('0x2b')](function(_0x1db769){if(_0x1db769){_0x4e2be3['body'][_0x286a('0x7e')]=_0x1db769['id'];_0x4e2be3['body'][_0x286a('0x5e')]=widgetAttributes(_0x4e2be3['body']);return db[_0x286a('0x7f')][_0x286a('0x4f')](_0x4e2be3['body']);}})[_0x286a('0x2b')](respondWithResult(_0x420bcf,null))[_0x286a('0x49')](handleError(_0x420bcf,null));};exports[_0x286a('0x80')]=function(_0x5ae758,_0x31f7b8,_0x20a2a3){var _0x46fe19={};var _0x439a86={};var _0xe099fa;var _0x35e73b;return db['Dashboard'][_0x286a('0x81')]({'where':{'id':_0x5ae758[_0x286a('0x4b')]['id']}})[_0x286a('0x2b')](handleEntityNotFound(_0x31f7b8,null))[_0x286a('0x2b')](function(_0x4ca054){if(_0x4ca054){_0xe099fa=_0x4ca054;_0x439a86[_0x286a('0x38')]=_[_0x286a('0x3a')](db[_0x286a('0x7f')][_0x286a('0x4c')]);_0x439a86[_0x286a('0x39')]=_['keys'](_0x5ae758['query']);_0x439a86[_0x286a('0x3b')]=_[_0x286a('0x3c')](_0x439a86[_0x286a('0x38')],_0x439a86[_0x286a('0x39')]);_0x46fe19[_0x286a('0x3d')]=_[_0x286a('0x3c')](_0x439a86['model'],qs[_0x286a('0x3e')](_0x5ae758[_0x286a('0x39')][_0x286a('0x3e')]));_0x46fe19[_0x286a('0x3d')]=_0x46fe19[_0x286a('0x3d')][_0x286a('0x3f')]?_0x46fe19[_0x286a('0x3d')]:_0x439a86['model'];_0x46fe19[_0x286a('0x82')]=qs[_0x286a('0x41')](_0x5ae758[_0x286a('0x39')]['sort']);_0x46fe19[_0x286a('0x42')]=qs['filters'](_[_0x286a('0x83')](_0x5ae758[_0x286a('0x39')],_0x439a86[_0x286a('0x3b')]));if(_0x5ae758['query'][_0x286a('0x44')]){_0x46fe19[_0x286a('0x42')]=_['merge'](_0x46fe19['where'],{'$or':_[_0x286a('0x33')](_0x46fe19['attributes'],function(_0x499bd4){var _0x5d63b5={};_0x5d63b5[_0x499bd4]={'$like':'%'+_0x5ae758['query']['filter']+'%'};return _0x5d63b5;})});}_0x46fe19=_['merge']({},_0x46fe19,_0x5ae758[_0x286a('0x4d')]);return _0xe099fa['getItems'](_0x46fe19);}})[_0x286a('0x2b')](function(_0x3021c1){if(_0x3021c1){_0x35e73b=_0x3021c1[_0x286a('0x3f')];if(!_0x5ae758[_0x286a('0x39')][_0x286a('0x84')]('nolimit')){_0x46fe19[_0x286a('0x23')]=qs[_0x286a('0x23')](_0x5ae758[_0x286a('0x39')][_0x286a('0x23')]);_0x46fe19[_0x286a('0x21')]=qs[_0x286a('0x21')](_0x5ae758[_0x286a('0x39')][_0x286a('0x21')]);}return _0xe099fa[_0x286a('0x80')](_0x46fe19);}})[_0x286a('0x2b')](function(_0x591eb9){if(_0x591eb9){return _0x591eb9?{'count':_0x35e73b,'rows':_0x591eb9}:null;}})[_0x286a('0x2b')](respondWithResult(_0x31f7b8,null))['catch'](handleError(_0x31f7b8,null));};
\ No newline at end of file
index 397ef67..91f770b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x457b=['save','update','remove','emit','hook','exports','Dashboard','setMaxListeners'];(function(_0x229fe3,_0x296f4e){var _0xb1a383=function(_0x201e35){while(--_0x201e35){_0x229fe3['push'](_0x229fe3['shift']());}};_0xb1a383(++_0x296f4e);}(_0x457b,0x1b6));var _0xb457=function(_0x3fe0fe,_0x3bdc49){_0x3fe0fe=_0x3fe0fe-0x0;var _0x5c11f4=_0x457b[_0x3fe0fe];return _0x5c11f4;};'use strict';var EventEmitter=require('events');var Dashboard=require('../../mysqldb')['db'][_0xb457('0x0')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xb457('0x1')](0x0);var events={'afterCreate':_0xb457('0x2'),'afterUpdate':_0xb457('0x3'),'afterDestroy':_0xb457('0x4')};function emitEvent(_0x1cad27){return function(_0x134d98,_0x4a2a23,_0x31dbc0){DashboardEvents[_0xb457('0x5')](_0x1cad27+':'+_0x134d98['id'],_0x134d98);DashboardEvents['emit'](_0x1cad27,_0x134d98);_0x31dbc0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0xb457('0x6')](e,emitEvent(event));}}module[_0xb457('0x7')]=DashboardEvents;
\ No newline at end of file
+var _0xa185=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Dashboard','setMaxListeners','save'];(function(_0x193ced,_0xa86996){var _0x559f15=function(_0x4e3392){while(--_0x4e3392){_0x193ced['push'](_0x193ced['shift']());}};_0x559f15(++_0xa86996);}(_0xa185,0x19f));var _0x5a18=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xa185[_0x19950b];return _0x3c6b41;};'use strict';var EventEmitter=require(_0x5a18('0x0'));var Dashboard=require(_0x5a18('0x1'))['db'][_0x5a18('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x5a18('0x3')](0x0);var events={'afterCreate':_0x5a18('0x4'),'afterUpdate':_0x5a18('0x5'),'afterDestroy':'remove'};function emitEvent(_0x501a9f){return function(_0x574f24,_0x173cfb,_0x29f764){DashboardEvents[_0x5a18('0x6')](_0x501a9f+':'+_0x574f24['id'],_0x574f24);DashboardEvents[_0x5a18('0x6')](_0x501a9f,_0x574f24);_0x29f764(null);};}for(var e in events){if(events[_0x5a18('0x7')](e)){var event=events[e];Dashboard[_0x5a18('0x8')](e,emitEvent(event));}}module[_0x5a18('0x9')]=DashboardEvents;
\ No newline at end of file
index f0372aa..a28649a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf67d=['request-promise','path','rimraf','../../config/environment','./dashboard.attributes','exports','Dashboard','dashboards','bluebird'];(function(_0x4f8dbe,_0x366913){var _0x516e52=function(_0x1004da){while(--_0x1004da){_0x4f8dbe['push'](_0x4f8dbe['shift']());}};_0x516e52(++_0x366913);}(_0xf67d,0x182));var _0xdf67=function(_0x545cf0,_0x4c66fa){_0x545cf0=_0x545cf0-0x0;var _0x1f9bae=_0xf67d[_0x545cf0];return _0x1f9bae;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xdf67('0x0'));var rp=require(_0xdf67('0x1'));var fs=require('fs');var path=require(_0xdf67('0x2'));var rimraf=require(_0xdf67('0x3'));var config=require(_0xdf67('0x4'));var attributes=require(_0xdf67('0x5'));module[_0xdf67('0x6')]=function(_0x4ee71e,_0x55c0bc){return _0x4ee71e['define'](_0xdf67('0x7'),attributes,{'tableName':_0xdf67('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x63be=['request-promise','path','rimraf','../../config/environment','./dashboard.attributes','exports','Dashboard','dashboards','util','bluebird'];(function(_0x2b0682,_0xc8aac){var _0xea822=function(_0x356a1c){while(--_0x356a1c){_0x2b0682['push'](_0x2b0682['shift']());}};_0xea822(++_0xc8aac);}(_0x63be,0x76));var _0xe63b=function(_0x773097,_0x4d8be5){_0x773097=_0x773097-0x0;var _0x3861c1=_0x63be[_0x773097];return _0x3861c1;};'use strict';var _=require('lodash');var util=require(_0xe63b('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xe63b('0x1'));var rp=require(_0xe63b('0x2'));var fs=require('fs');var path=require(_0xe63b('0x3'));var rimraf=require(_0xe63b('0x4'));var config=require(_0xe63b('0x5'));var attributes=require(_0xe63b('0x6'));module[_0xe63b('0x7')]=function(_0x187c0a,_0x3b1fdd){return _0x187c0a['define'](_0xe63b('0x8'),attributes,{'tableName':_0xe63b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3138e26..93b1eff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45f9=['redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','request','then','info','debug','Dashboard,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','Dashboard,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','jayson/promise','client'];(function(_0x46a97d,_0x4864d5){var _0x47d7b0=function(_0x5b1ade){while(--_0x5b1ade){_0x46a97d['push'](_0x46a97d['shift']());}};_0x47d7b0(++_0x4864d5);}(_0x45f9,0x1e6));var _0x945f=function(_0xa77aff,_0x1f013c){_0xa77aff=_0xa77aff-0x0;var _0xf2dd26=_0x45f9[_0xa77aff];return _0xf2dd26;};'use strict';var _=require('lodash');var util=require(_0x945f('0x0'));var moment=require(_0x945f('0x1'));var BPromise=require(_0x945f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x945f('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x945f('0x4'));var logger=require(_0x945f('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x945f('0x6'));var client=jayson[_0x945f('0x7')]['http']({'port':0x232a});config[_0x945f('0x8')]=_[_0x945f('0x9')](config['redis'],{'host':_0x945f('0xa'),'port':0x18eb});var socket=require(_0x945f('0xb'))(new Redis(config[_0x945f('0x8')]));require(_0x945f('0xc'))[_0x945f('0xd')](socket);function respondWithRpcPromise(_0x487adf,_0x296a3b,_0x50bbf1){return new BPromise(function(_0x37a665,_0x305f24){return client[_0x945f('0xe')](_0x487adf,_0x50bbf1)[_0x945f('0xf')](function(_0x4e65f2){logger[_0x945f('0x10')]('Dashboard,\x20%s,\x20%s',_0x296a3b,'request\x20sent');logger[_0x945f('0x11')](_0x945f('0x12'),_0x296a3b,_0x945f('0x13'),JSON[_0x945f('0x14')](_0x4e65f2));if(_0x4e65f2['error']){if(_0x4e65f2[_0x945f('0x15')]['code']===0x1f4){logger[_0x945f('0x15')](_0x945f('0x16'),_0x296a3b,_0x4e65f2[_0x945f('0x15')][_0x945f('0x17')]);return _0x305f24(_0x4e65f2[_0x945f('0x15')][_0x945f('0x17')]);}logger[_0x945f('0x15')]('Dashboard,\x20%s,\x20%s',_0x296a3b,_0x4e65f2[_0x945f('0x15')][_0x945f('0x17')]);return _0x37a665(_0x4e65f2[_0x945f('0x15')][_0x945f('0x17')]);}else{logger[_0x945f('0x10')]('Dashboard,\x20%s,\x20%s',_0x296a3b,_0x945f('0x13'));_0x37a665(_0x4e65f2[_0x945f('0x18')][_0x945f('0x17')]);}})[_0x945f('0x19')](function(_0x3bc3b3){logger[_0x945f('0x15')](_0x945f('0x16'),_0x296a3b,_0x3bc3b3);_0x305f24(_0x3bc3b3);});});}
\ No newline at end of file
+var _0x7a22=['message','catch','lodash','util','moment','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x4b13f0,_0x1273df){var _0x2a1955=function(_0x5634ea){while(--_0x5634ea){_0x4b13f0['push'](_0x4b13f0['shift']());}};_0x2a1955(++_0x1273df);}(_0x7a22,0x13a));var _0x27a2=function(_0x156dc,_0x5790ab){_0x156dc=_0x156dc-0x0;var _0x5e0a22=_0x7a22[_0x156dc];return _0x5e0a22;};'use strict';var _=require(_0x27a2('0x0'));var util=require(_0x27a2('0x1'));var moment=require(_0x27a2('0x2'));var BPromise=require('bluebird');var rs=require(_0x27a2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x27a2('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x27a2('0x5'));var config=require(_0x27a2('0x6'));var jayson=require(_0x27a2('0x7'));var client=jayson[_0x27a2('0x8')][_0x27a2('0x9')]({'port':0x232a});config[_0x27a2('0xa')]=_[_0x27a2('0xb')](config['redis'],{'host':_0x27a2('0xc'),'port':0x18eb});var socket=require(_0x27a2('0xd'))(new Redis(config[_0x27a2('0xa')]));require('./dashboard.socket')[_0x27a2('0xe')](socket);function respondWithRpcPromise(_0x2f6e5f,_0x46d184,_0x1f1f03){return new BPromise(function(_0x8aa0f8,_0xc87871){return client[_0x27a2('0xf')](_0x2f6e5f,_0x1f1f03)[_0x27a2('0x10')](function(_0x2ce315){logger['info'](_0x27a2('0x11'),_0x46d184,_0x27a2('0x12'));logger[_0x27a2('0x13')](_0x27a2('0x14'),_0x46d184,_0x27a2('0x12'),JSON[_0x27a2('0x15')](_0x2ce315));if(_0x2ce315[_0x27a2('0x16')]){if(_0x2ce315[_0x27a2('0x16')][_0x27a2('0x17')]===0x1f4){logger['error']('Dashboard,\x20%s,\x20%s',_0x46d184,_0x2ce315[_0x27a2('0x16')]['message']);return _0xc87871(_0x2ce315[_0x27a2('0x16')][_0x27a2('0x18')]);}logger[_0x27a2('0x16')](_0x27a2('0x11'),_0x46d184,_0x2ce315['error'][_0x27a2('0x18')]);return _0x8aa0f8(_0x2ce315['error'][_0x27a2('0x18')]);}else{logger['info'](_0x27a2('0x11'),_0x46d184,'request\x20sent');_0x8aa0f8(_0x2ce315['result'][_0x27a2('0x18')]);}})[_0x27a2('0x19')](function(_0x33aa60){logger['error'](_0x27a2('0x11'),_0x46d184,_0x33aa60);_0xc87871(_0x33aa60);});});}
\ No newline at end of file
index f2f0861..db1496c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d73=['update','emit','register','length','dashboard:','./dashboard.events','save','remove'];(function(_0x4b49c9,_0x290d55){var _0xab2d67=function(_0x3a8e9c){while(--_0x3a8e9c){_0x4b49c9['push'](_0x4b49c9['shift']());}};_0xab2d67(++_0x290d55);}(_0x9d73,0xbd));var _0x39d7=function(_0xcc08e5,_0x1e52cb){_0xcc08e5=_0xcc08e5-0x0;var _0x44cdac=_0x9d73[_0xcc08e5];return _0x44cdac;};'use strict';var DashboardEvents=require(_0x39d7('0x0'));var events=[_0x39d7('0x1'),_0x39d7('0x2'),_0x39d7('0x3')];function createListener(_0x117969,_0xdf9751){return function(_0x13815d){_0xdf9751[_0x39d7('0x4')](_0x117969,_0x13815d);};}function removeListener(_0x1b681b,_0x5bf38d){return function(){DashboardEvents['removeListener'](_0x1b681b,_0x5bf38d);};}exports[_0x39d7('0x5')]=function(_0x5da51b){for(var _0x43ff1a=0x0,_0x3cfe5a=events[_0x39d7('0x6')];_0x43ff1a<_0x3cfe5a;_0x43ff1a++){var _0x4f9aa1=events[_0x43ff1a];var _0x4cf0b3=createListener(_0x39d7('0x7')+_0x4f9aa1,_0x5da51b);DashboardEvents['on'](_0x4f9aa1,_0x4cf0b3);}};
\ No newline at end of file
+var _0x8d48=['removeListener','register','length','dashboard:','./dashboard.events','save','remove','update','emit'];(function(_0x35eaaa,_0x3ce2d2){var _0x1ce764=function(_0x2c1aea){while(--_0x2c1aea){_0x35eaaa['push'](_0x35eaaa['shift']());}};_0x1ce764(++_0x3ce2d2);}(_0x8d48,0x151));var _0x88d4=function(_0x3f1b36,_0x205b14){_0x3f1b36=_0x3f1b36-0x0;var _0x56a704=_0x8d48[_0x3f1b36];return _0x56a704;};'use strict';var DashboardEvents=require(_0x88d4('0x0'));var events=[_0x88d4('0x1'),_0x88d4('0x2'),_0x88d4('0x3')];function createListener(_0x36e4f9,_0x7e9b15){return function(_0x4f49fd){_0x7e9b15[_0x88d4('0x4')](_0x36e4f9,_0x4f49fd);};}function removeListener(_0x593a07,_0x4a07ff){return function(){DashboardEvents[_0x88d4('0x5')](_0x593a07,_0x4a07ff);};}exports[_0x88d4('0x6')]=function(_0x1df9d1){for(var _0x392131=0x0,_0x36fa5d=events[_0x88d4('0x7')];_0x392131<_0x36fa5d;_0x392131++){var _0x50f161=events[_0x392131];var _0x4627ed=createListener(_0x88d4('0x8')+_0x50f161,_0x1df9d1);DashboardEvents['on'](_0x50f161,_0x4627ed);}};
\ No newline at end of file
index 75457a8..36c83a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11e3=['/:id/items','create','post','/:id/clone','clone','addItem','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated','/:id','show'];(function(_0x1c0763,_0x4e0420){var _0x49901d=function(_0x3258ef){while(--_0x3258ef){_0x1c0763['push'](_0x1c0763['shift']());}};_0x49901d(++_0x4e0420);}(_0x11e3,0xa1));var _0x311e=function(_0x3200a8,_0x275166){_0x3200a8=_0x3200a8-0x0;var _0x288129=_0x11e3[_0x3200a8];return _0x288129;};'use strict';var multer=require(_0x311e('0x0'));var util=require(_0x311e('0x1'));var path=require(_0x311e('0x2'));var timeout=require(_0x311e('0x3'));var express=require('express');var router=express[_0x311e('0x4')]();var fs_extra=require(_0x311e('0x5'));var auth=require(_0x311e('0x6'));var interaction=require(_0x311e('0x7'));var config=require(_0x311e('0x8'));var controller=require(_0x311e('0x9'));router[_0x311e('0xa')]('/',auth[_0x311e('0xb')](),controller['index']);router[_0x311e('0xa')](_0x311e('0xc'),auth['isAuthenticated'](),controller[_0x311e('0xd')]);router['get'](_0x311e('0xe'),auth[_0x311e('0xb')](),controller['getItems']);router['post']('/',auth[_0x311e('0xb')](),controller[_0x311e('0xf')]);router[_0x311e('0x10')](_0x311e('0x11'),auth[_0x311e('0xb')](),controller[_0x311e('0x12')]);router[_0x311e('0x10')]('/:id/items',auth[_0x311e('0xb')](),controller[_0x311e('0x13')]);router[_0x311e('0x14')](_0x311e('0xc'),auth['isAuthenticated'](),controller[_0x311e('0x15')]);router[_0x311e('0x16')](_0x311e('0xc'),auth[_0x311e('0xb')](),controller[_0x311e('0x17')]);module[_0x311e('0x18')]=router;
\ No newline at end of file
+var _0x9ec2=['/:id/clone','addItem','put','update','delete','exports','multer','util','connect-timeout','express','../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated','index','/:id','show','/:id/items','getItems','post','create'];(function(_0x53cc77,_0x160f15){var _0x38e2e7=function(_0x482bb7){while(--_0x482bb7){_0x53cc77['push'](_0x53cc77['shift']());}};_0x38e2e7(++_0x160f15);}(_0x9ec2,0x166));var _0x29ec=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9ec2[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x29ec('0x0'));var util=require(_0x29ec('0x1'));var path=require('path');var timeout=require(_0x29ec('0x2'));var express=require(_0x29ec('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x29ec('0x4'));var config=require(_0x29ec('0x5'));var controller=require(_0x29ec('0x6'));router[_0x29ec('0x7')]('/',auth[_0x29ec('0x8')](),controller[_0x29ec('0x9')]);router[_0x29ec('0x7')](_0x29ec('0xa'),auth[_0x29ec('0x8')](),controller[_0x29ec('0xb')]);router['get'](_0x29ec('0xc'),auth[_0x29ec('0x8')](),controller[_0x29ec('0xd')]);router[_0x29ec('0xe')]('/',auth[_0x29ec('0x8')](),controller[_0x29ec('0xf')]);router[_0x29ec('0xe')](_0x29ec('0x10'),auth['isAuthenticated'](),controller['clone']);router[_0x29ec('0xe')](_0x29ec('0xc'),auth[_0x29ec('0x8')](),controller[_0x29ec('0x11')]);router[_0x29ec('0x12')](_0x29ec('0xa'),auth[_0x29ec('0x8')](),controller[_0x29ec('0x13')]);router[_0x29ec('0x14')](_0x29ec('0xa'),auth[_0x29ec('0x8')](),controller['destroy']);module[_0x29ec('0x15')]=router;
\ No newline at end of file
index d0cd994..a483b28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['setDataValue','INTEGER','sequelize','exports','STRING','TEXT','long','parse','getDataValue','attrs','stringify'];(function(_0x44cec1,_0x57836e){var _0xe57a17=function(_0x3d1827){while(--_0x3d1827){_0x44cec1['push'](_0x44cec1['shift']());}};_0xe57a17(++_0x57836e);}(_0xe2fe,0x86));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xee2f('0x0'));var squel=require('squel');var _=require('lodash');module[_0xee2f('0x1')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xee2f('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xee2f('0x3')](_0xee2f('0x4')),'get':function(){try{return JSON[_0xee2f('0x5')](this[_0xee2f('0x6')]('attrs'));}catch(_0x311a2f){return[];}},'set':function(_0x2b7e7c){try{this['setDataValue'](_0xee2f('0x7'),JSON[_0xee2f('0x8')](_0x2b7e7c));}catch(_0x5a7975){this[_0xee2f('0x9')]('attrs',JSON[_0xee2f('0x8')]([]));}}},'sizeX':{'type':Sequelize[_0xee2f('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xee2f('0xa')]},'col':{'type':Sequelize[_0xee2f('0xa')]},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xee2f('0x2')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
+var _0xadb5=['long','parse','getDataValue','setDataValue','attrs','stringify','INTEGER','#2196f3','squel','exports','STRING'];(function(_0x4d72bc,_0x4537bf){var _0x9707bf=function(_0x1887bb){while(--_0x1887bb){_0x4d72bc['push'](_0x4d72bc['shift']());}};_0x9707bf(++_0x4537bf);}(_0xadb5,0xad));var _0x5adb=function(_0xa71777,_0x1352a9){_0xa71777=_0xa71777-0x0;var _0x1a1bd4=_0xadb5[_0xa71777];return _0x1a1bd4;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x5adb('0x0'));var _=require('lodash');module[_0x5adb('0x1')]={'title':{'type':Sequelize[_0x5adb('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x5adb('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT'](_0x5adb('0x3')),'get':function(){try{return JSON[_0x5adb('0x4')](this[_0x5adb('0x5')]('attrs'));}catch(_0x35a5d3){return[];}},'set':function(_0x168d89){try{this[_0x5adb('0x6')](_0x5adb('0x7'),JSON[_0x5adb('0x8')](_0x168d89));}catch(_0x353885){this[_0x5adb('0x6')](_0x5adb('0x7'),JSON[_0x5adb('0x8')]([]));}}},'sizeX':{'type':Sequelize[_0x5adb('0x9')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x5adb('0x9')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x5adb('0x9')]},'col':{'type':Sequelize[_0x5adb('0x9')]},'background':{'type':Sequelize[_0x5adb('0x2')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x5adb('0xa'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x5adb('0x2')]},'titleFontSize':{'type':Sequelize[_0x5adb('0x9')],'defaultValue':0xc}};
\ No newline at end of file
index 4c1912c..8f8965f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65ba=['type','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie1','attrSerie2','web-report','reportType','attrReport','attrRefresh','stringify','body','create','update','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','offset','undefined','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','show','params','model','keys','DashboardItem','query','filters','intersection','fields','attributes','length','includeAll','include','merge','options','find','catch'];(function(_0x7e53f6,_0x1ce89b){var _0x4ce9fc=function(_0x13019c){while(--_0x13019c){_0x7e53f6['push'](_0x7e53f6['shift']());}};_0x4ce9fc(++_0x1ce89b);}(_0x65ba,0x13c));var _0xa65b=function(_0xa5373d,_0x3a8ec9){_0xa5373d=_0xa5373d-0x0;var _0x192973=_0x65ba[_0xa5373d];return _0x192973;};'use strict';var emlformat=require(_0xa65b('0x0'));var rimraf=require(_0xa65b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa65b('0x2'));var rp=require(_0xa65b('0x3'));var moment=require(_0xa65b('0x4'));var BPromise=require(_0xa65b('0x5'));var Mustache=require(_0xa65b('0x6'));var util=require(_0xa65b('0x7'));var path=require('path');var sox=require(_0xa65b('0x8'));var csv=require(_0xa65b('0x9'));var ejs=require(_0xa65b('0xa'));var fs=require('fs');var fs_extra=require(_0xa65b('0xb'));var _=require(_0xa65b('0xc'));var squel=require(_0xa65b('0xd'));var crypto=require(_0xa65b('0xe'));var jsforce=require(_0xa65b('0xf'));var deskjs=require(_0xa65b('0x10'));var toCsv=require(_0xa65b('0x9'));var querystring=require(_0xa65b('0x11'));var Papa=require(_0xa65b('0x12'));var Redis=require(_0xa65b('0x13'));var authService=require(_0xa65b('0x14'));var qs=require(_0xa65b('0x15'));var as=require(_0xa65b('0x16'));var hardwareService=require(_0xa65b('0x17'));var logger=require(_0xa65b('0x18'))(_0xa65b('0x19'));var utils=require(_0xa65b('0x1a'));var config=require(_0xa65b('0x1b'));var licenseUtil=require(_0xa65b('0x1c'));var db=require(_0xa65b('0x1d'))['db'];config['redis']=_[_0xa65b('0x1e')](config[_0xa65b('0x1f')],{'host':_0xa65b('0x20'),'port':0x18eb});var socket=require(_0xa65b('0x21'))(new Redis(config[_0xa65b('0x1f')]));require(_0xa65b('0x22'))[_0xa65b('0x23')](socket);function respondWithStatusCode(_0x2d8009,_0x16e2f0){_0x16e2f0=_0x16e2f0||0xcc;return function(_0x31ad42){if(_0x31ad42){return _0x2d8009[_0xa65b('0x24')](_0x16e2f0);}return _0x2d8009[_0xa65b('0x25')](_0x16e2f0)[_0xa65b('0x26')]();};}function respondWithResult(_0x2da26e,_0x578661){_0x578661=_0x578661||0xc8;return function(_0x4c4e10){if(_0x4c4e10){return _0x2da26e[_0xa65b('0x25')](_0x578661)['json'](_0x4c4e10);}};}function respondWithFilteredResult(_0x49b175,_0x582b48){return function(_0x20bf65){if(_0x20bf65){var _0x471dcf=typeof _0x582b48[_0xa65b('0x27')]===_0xa65b('0x28')&&typeof _0x582b48['limit']===_0xa65b('0x28');var _0x550e55=_0x20bf65[_0xa65b('0x29')];var _0x1b0320=_0x471dcf?0x0:_0x582b48[_0xa65b('0x27')];var _0x55d2ad=_0x471dcf?_0x20bf65[_0xa65b('0x29')]:_0x582b48[_0xa65b('0x27')]+_0x582b48['limit'];var _0x51c793;if(_0x55d2ad>=_0x550e55){_0x55d2ad=_0x550e55;_0x51c793=0xc8;}else{_0x51c793=0xce;}_0x49b175['status'](_0x51c793);return _0x49b175['set'](_0xa65b('0x2a'),_0x1b0320+'-'+_0x55d2ad+'/'+_0x550e55)['json'](_0x20bf65);}return null;};}function patchUpdates(_0x16ebb3){return function(_0x457757){try{jsonpatch[_0xa65b('0x2b')](_0x457757,_0x16ebb3,!![]);}catch(_0x1244e0){return BPromise[_0xa65b('0x2c')](_0x1244e0);}return _0x457757[_0xa65b('0x2d')]();};}function saveUpdates(_0x21332e,_0x1ba577){return function(_0x10fb29){if(_0x10fb29){return _0x10fb29['update'](_0x21332e)[_0xa65b('0x2e')](function(_0xb1f439){return _0xb1f439;});}return null;};}function removeEntity(_0x48a0a8,_0xebf541){return function(_0x889d19){if(_0x889d19){return _0x889d19[_0xa65b('0x2f')]()[_0xa65b('0x2e')](function(){_0x48a0a8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x59607f,_0x114da6){return function(_0x5d1015){if(!_0x5d1015){_0x59607f[_0xa65b('0x24')](0x194);}return _0x5d1015;};}function handleError(_0x290b1c,_0x2df515){_0x2df515=_0x2df515||0x1f4;return function(_0x7c05c4){logger[_0xa65b('0x30')](_0x7c05c4[_0xa65b('0x31')]);if(_0x7c05c4[_0xa65b('0x32')]){delete _0x7c05c4['name'];}_0x290b1c[_0xa65b('0x25')](_0x2df515)['send'](_0x7c05c4);};}exports[_0xa65b('0x33')]=function(_0x1e67cb,_0x3830f5){var _0x57628c={'raw':![],'where':{'id':_0x1e67cb[_0xa65b('0x34')]['id']}},_0x2a2473={};_0x2a2473[_0xa65b('0x35')]=_[_0xa65b('0x36')](db[_0xa65b('0x37')]['rawAttributes']);_0x2a2473[_0xa65b('0x38')]=_[_0xa65b('0x36')](_0x1e67cb[_0xa65b('0x38')]);_0x2a2473[_0xa65b('0x39')]=_[_0xa65b('0x3a')](_0x2a2473[_0xa65b('0x35')],_0x2a2473['query']);_0x57628c['attributes']=_['intersection'](_0x2a2473[_0xa65b('0x35')],qs[_0xa65b('0x3b')](_0x1e67cb[_0xa65b('0x38')][_0xa65b('0x3b')]));_0x57628c[_0xa65b('0x3c')]=_0x57628c[_0xa65b('0x3c')][_0xa65b('0x3d')]?_0x57628c['attributes']:_0x2a2473[_0xa65b('0x35')];if(_0x1e67cb[_0xa65b('0x38')][_0xa65b('0x3e')]){_0x57628c[_0xa65b('0x3f')]=[{'all':!![]}];}_0x57628c=_[_0xa65b('0x40')]({},_0x57628c,_0x1e67cb[_0xa65b('0x41')]);return db[_0xa65b('0x37')][_0xa65b('0x42')](_0x57628c)['then'](handleEntityNotFound(_0x3830f5,null))[_0xa65b('0x2e')](respondWithResult(_0x3830f5,null))[_0xa65b('0x43')](handleError(_0x3830f5,null));};exports[_0xa65b('0x2f')]=function(_0x39ddca,_0x741bbe){return db[_0xa65b('0x37')]['find']({'where':{'id':_0x39ddca['params']['id']}})[_0xa65b('0x2e')](handleEntityNotFound(_0x741bbe,null))['then'](removeEntity(_0x741bbe,null))['catch'](handleError(_0x741bbe,null));};function widgetAttributes(_0x3efca4){try{switch(_0x3efca4[_0xa65b('0x44')]){case _0xa65b('0x45'):return[{'name':'attrUrl','value':_0x3efca4[_0xa65b('0x46')]||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4['attrs'][0x0]?_0x3efca4[_0xa65b('0x47')][0x0][_0xa65b('0x48')]:undefined)||_0xa65b('0x49')}];case _0xa65b('0x4a'):return[{'name':_0xa65b('0x4b'),'value':_0x3efca4['attrPath']||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x0]?_0x3efca4[_0xa65b('0x47')][0x0]['value']:undefined)||''}];case _0xa65b('0x4c'):return[{'name':_0xa65b('0x4d'),'value':_0x3efca4['attrHourFormat']||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x0]?_0x3efca4[_0xa65b('0x47')][0x0][_0xa65b('0x48')]:undefined)||'HH:mm:ss'},{'name':_0xa65b('0x4e'),'value':_0x3efca4[_0xa65b('0x4e')]||(_0x3efca4['attrs']&&_0x3efca4[_0xa65b('0x47')][0x1]?_0x3efca4[_0xa65b('0x47')][0x1][_0xa65b('0x48')]:undefined)||_0xa65b('0x4f')},{'name':_0xa65b('0x50'),'value':_0x3efca4['attrFontSize']||(_0x3efca4['attrs']&&_0x3efca4[_0xa65b('0x47')][0x2]?_0x3efca4[_0xa65b('0x47')][0x2][_0xa65b('0x48')]:undefined)||0xc}];case _0xa65b('0x51'):return[{'name':'attrMetric','value':_0x3efca4[_0xa65b('0x52')]||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x0]?_0x3efca4[_0xa65b('0x47')][0x0]['value']:undefined)||_0xa65b('0x53')},{'name':'attrVoiceQueues','value':_0x3efca4[_0xa65b('0x54')]||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4['attrs'][0x1]?_0x3efca4['attrs'][0x1][_0xa65b('0x48')]:undefined)||[]},{'name':_0xa65b('0x50'),'value':_0x3efca4[_0xa65b('0x50')]||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x2]?_0x3efca4['attrs'][0x2][_0xa65b('0x48')]:undefined)||0x14}];case _0xa65b('0x55'):case'pie-chart':return[{'name':_0xa65b('0x56'),'value':_0x3efca4['attrSerie1']||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x0]?_0x3efca4[_0xa65b('0x47')][0x0]['value']:undefined)||_0xa65b('0x53')},{'name':'attrSerie2','value':_0x3efca4[_0xa65b('0x57')]||(_0x3efca4['attrs']&&_0x3efca4['attrs'][0x1]?_0x3efca4['attrs'][0x1][_0xa65b('0x48')]:undefined)||null},{'name':'attrSerie3','value':_0x3efca4['attrSerie3']||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4['attrs'][0x2]?_0x3efca4['attrs'][0x2]['value']:undefined)||null},{'name':_0xa65b('0x54'),'value':_0x3efca4['attrVoiceQueues']||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4['attrs'][0x3]?_0x3efca4[_0xa65b('0x47')][0x3][_0xa65b('0x48')]:undefined)||[]}];case _0xa65b('0x58'):return[{'name':'attrReport','type':_0x3efca4[_0xa65b('0x59')]||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x0]?_0x3efca4[_0xa65b('0x47')][0x0]['type']:undefined)||null,'value':_0x3efca4[_0xa65b('0x5a')]||(_0x3efca4['attrs']&&_0x3efca4[_0xa65b('0x47')][0x0]?_0x3efca4['attrs'][0x0]['value']:undefined)||null},{'name':_0xa65b('0x5b'),'value':_0x3efca4[_0xa65b('0x5b')]||(_0x3efca4[_0xa65b('0x47')]&&_0x3efca4[_0xa65b('0x47')][0x1]?_0x3efca4[_0xa65b('0x47')][0x1][_0xa65b('0x48')]:undefined)||0x0}];default:return[];}}catch(_0x280bea){logger[_0xa65b('0x30')]('widgetAttributes:\x20%s',JSON[_0xa65b('0x5c')](_0x280bea));return[];}}exports['create']=function(_0x2b9386,_0x2dd7d1){if(_0x2b9386[_0xa65b('0x5d')]){_0x2b9386[_0xa65b('0x5d')]['attrs']=widgetAttributes(_0x2b9386[_0xa65b('0x5d')]);}return db['DashboardItem'][_0xa65b('0x5e')](_0x2b9386[_0xa65b('0x5d')],{})['then'](respondWithResult(_0x2dd7d1,0xc9))[_0xa65b('0x43')](handleError(_0x2dd7d1,null));};exports[_0xa65b('0x5f')]=function(_0x3c596e,_0x1d4bc5){if(_0x3c596e[_0xa65b('0x5d')]['id']){delete _0x3c596e[_0xa65b('0x5d')]['id'];}_0x3c596e[_0xa65b('0x5d')][_0xa65b('0x47')]=widgetAttributes(_0x3c596e['body']);return db['DashboardItem'][_0xa65b('0x42')]({'where':{'id':_0x3c596e[_0xa65b('0x34')]['id']}})['then'](handleEntityNotFound(_0x1d4bc5,null))[_0xa65b('0x2e')](saveUpdates(_0x3c596e['body'],null))[_0xa65b('0x2e')](respondWithResult(_0x1d4bc5,null))[_0xa65b('0x43')](handleError(_0x1d4bc5,null));};
\ No newline at end of file
+var _0xf569=['attrSerie2','attrSerie3','voice','web-report','attrReport','reportType','type','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','error','stack','name','send','show','params','model','keys','DashboardItem','filters','intersection','query','attributes','length','includeAll','include','find','destroy','catch','iframe','attrUrl','value','https://','custom','attrs','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1'];(function(_0x1ed60b,_0x5f20dc){var _0x263469=function(_0x10822c){while(--_0x10822c){_0x1ed60b['push'](_0x1ed60b['shift']());}};_0x263469(++_0x5f20dc);}(_0xf569,0xd0));var _0x9f56=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xf569[_0x4d613c];return _0x301fe3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9f56('0x0'));var zipdir=require(_0x9f56('0x1'));var jsonpatch=require(_0x9f56('0x2'));var rp=require(_0x9f56('0x3'));var moment=require(_0x9f56('0x4'));var BPromise=require(_0x9f56('0x5'));var Mustache=require(_0x9f56('0x6'));var util=require(_0x9f56('0x7'));var path=require('path');var sox=require(_0x9f56('0x8'));var csv=require('to-csv');var ejs=require(_0x9f56('0x9'));var fs=require('fs');var fs_extra=require(_0x9f56('0xa'));var _=require('lodash');var squel=require(_0x9f56('0xb'));var crypto=require(_0x9f56('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9f56('0xd'));var toCsv=require(_0x9f56('0xe'));var querystring=require(_0x9f56('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x9f56('0x10'));var qs=require(_0x9f56('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9f56('0x12'));var logger=require(_0x9f56('0x13'))(_0x9f56('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x9f56('0x15'));var db=require('../../mysqldb')['db'];config[_0x9f56('0x16')]=_['defaults'](config['redis'],{'host':_0x9f56('0x17'),'port':0x18eb});var socket=require(_0x9f56('0x18'))(new Redis(config['redis']));require(_0x9f56('0x19'))[_0x9f56('0x1a')](socket);function respondWithStatusCode(_0x380d36,_0x1277b3){_0x1277b3=_0x1277b3||0xcc;return function(_0x1c572f){if(_0x1c572f){return _0x380d36[_0x9f56('0x1b')](_0x1277b3);}return _0x380d36[_0x9f56('0x1c')](_0x1277b3)[_0x9f56('0x1d')]();};}function respondWithResult(_0x4228f5,_0x18fb60){_0x18fb60=_0x18fb60||0xc8;return function(_0x282d66){if(_0x282d66){return _0x4228f5[_0x9f56('0x1c')](_0x18fb60)[_0x9f56('0x1e')](_0x282d66);}};}function respondWithFilteredResult(_0x9c39ec,_0x131130){return function(_0x21808b){if(_0x21808b){var _0x1bbbae=typeof _0x131130[_0x9f56('0x1f')]==='undefined'&&typeof _0x131130['limit']===_0x9f56('0x20');var _0x2294aa=_0x21808b[_0x9f56('0x21')];var _0x34b40f=_0x1bbbae?0x0:_0x131130[_0x9f56('0x1f')];var _0x5c9bb1=_0x1bbbae?_0x21808b[_0x9f56('0x21')]:_0x131130[_0x9f56('0x1f')]+_0x131130[_0x9f56('0x22')];var _0x2da6af;if(_0x5c9bb1>=_0x2294aa){_0x5c9bb1=_0x2294aa;_0x2da6af=0xc8;}else{_0x2da6af=0xce;}_0x9c39ec[_0x9f56('0x1c')](_0x2da6af);return _0x9c39ec[_0x9f56('0x23')](_0x9f56('0x24'),_0x34b40f+'-'+_0x5c9bb1+'/'+_0x2294aa)['json'](_0x21808b);}return null;};}function patchUpdates(_0x151c83){return function(_0x576ee9){try{jsonpatch[_0x9f56('0x25')](_0x576ee9,_0x151c83,!![]);}catch(_0x61c6f2){return BPromise[_0x9f56('0x26')](_0x61c6f2);}return _0x576ee9[_0x9f56('0x27')]();};}function saveUpdates(_0x488d21,_0x22e3e2){return function(_0xcac7a3){if(_0xcac7a3){return _0xcac7a3['update'](_0x488d21)[_0x9f56('0x28')](function(_0x2c0905){return _0x2c0905;});}return null;};}function removeEntity(_0x5b45ee,_0x460da4){return function(_0x9d7222){if(_0x9d7222){return _0x9d7222['destroy']()['then'](function(){_0x5b45ee[_0x9f56('0x1c')](0xcc)[_0x9f56('0x1d')]();});}};}function handleEntityNotFound(_0x3dcf54,_0x226fd0){return function(_0x1c7c89){if(!_0x1c7c89){_0x3dcf54[_0x9f56('0x1b')](0x194);}return _0x1c7c89;};}function handleError(_0x48da87,_0x76b04f){_0x76b04f=_0x76b04f||0x1f4;return function(_0xe2ebc1){logger[_0x9f56('0x29')](_0xe2ebc1[_0x9f56('0x2a')]);if(_0xe2ebc1['name']){delete _0xe2ebc1[_0x9f56('0x2b')];}_0x48da87[_0x9f56('0x1c')](_0x76b04f)[_0x9f56('0x2c')](_0xe2ebc1);};}exports[_0x9f56('0x2d')]=function(_0x38c437,_0xb3f55c){var _0x37ad42={'raw':![],'where':{'id':_0x38c437[_0x9f56('0x2e')]['id']}},_0x4a8a38={};_0x4a8a38[_0x9f56('0x2f')]=_[_0x9f56('0x30')](db[_0x9f56('0x31')]['rawAttributes']);_0x4a8a38['query']=_[_0x9f56('0x30')](_0x38c437['query']);_0x4a8a38[_0x9f56('0x32')]=_[_0x9f56('0x33')](_0x4a8a38[_0x9f56('0x2f')],_0x4a8a38[_0x9f56('0x34')]);_0x37ad42[_0x9f56('0x35')]=_[_0x9f56('0x33')](_0x4a8a38[_0x9f56('0x2f')],qs['fields'](_0x38c437[_0x9f56('0x34')]['fields']));_0x37ad42[_0x9f56('0x35')]=_0x37ad42[_0x9f56('0x35')][_0x9f56('0x36')]?_0x37ad42[_0x9f56('0x35')]:_0x4a8a38[_0x9f56('0x2f')];if(_0x38c437[_0x9f56('0x34')][_0x9f56('0x37')]){_0x37ad42[_0x9f56('0x38')]=[{'all':!![]}];}_0x37ad42=_['merge']({},_0x37ad42,_0x38c437['options']);return db[_0x9f56('0x31')][_0x9f56('0x39')](_0x37ad42)['then'](handleEntityNotFound(_0xb3f55c,null))['then'](respondWithResult(_0xb3f55c,null))['catch'](handleError(_0xb3f55c,null));};exports[_0x9f56('0x3a')]=function(_0x3df1b3,_0x380aac){return db['DashboardItem'][_0x9f56('0x39')]({'where':{'id':_0x3df1b3[_0x9f56('0x2e')]['id']}})[_0x9f56('0x28')](handleEntityNotFound(_0x380aac,null))['then'](removeEntity(_0x380aac,null))[_0x9f56('0x3b')](handleError(_0x380aac,null));};function widgetAttributes(_0x30f0b0){try{switch(_0x30f0b0['type']){case _0x9f56('0x3c'):return[{'name':'attrUrl','value':_0x30f0b0[_0x9f56('0x3d')]||(_0x30f0b0['attrs']&&_0x30f0b0['attrs'][0x0]?_0x30f0b0['attrs'][0x0][_0x9f56('0x3e')]:undefined)||_0x9f56('0x3f')}];case _0x9f56('0x40'):return[{'name':'attrPath','value':_0x30f0b0['attrPath']||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x0]?_0x30f0b0[_0x9f56('0x41')][0x0][_0x9f56('0x3e')]:undefined)||''}];case _0x9f56('0x42'):return[{'name':'attrHourFormat','value':_0x30f0b0[_0x9f56('0x43')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x0]?_0x30f0b0[_0x9f56('0x41')][0x0][_0x9f56('0x3e')]:undefined)||_0x9f56('0x44')},{'name':_0x9f56('0x45'),'value':_0x30f0b0['attrTimezone']||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x1]?_0x30f0b0[_0x9f56('0x41')][0x1][_0x9f56('0x3e')]:undefined)||_0x9f56('0x46')},{'name':_0x9f56('0x47'),'value':_0x30f0b0['attrFontSize']||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x2]?_0x30f0b0['attrs'][0x2]['value']:undefined)||0xc}];case _0x9f56('0x48'):return[{'name':_0x9f56('0x49'),'value':_0x30f0b0['attrMetric']||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x0]?_0x30f0b0['attrs'][0x0][_0x9f56('0x3e')]:undefined)||_0x9f56('0x4a')},{'name':_0x9f56('0x4b'),'value':_0x30f0b0[_0x9f56('0x4b')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x1]?_0x30f0b0['attrs'][0x1][_0x9f56('0x3e')]:undefined)||[]},{'name':_0x9f56('0x47'),'value':_0x30f0b0[_0x9f56('0x47')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0['attrs'][0x2]?_0x30f0b0['attrs'][0x2][_0x9f56('0x3e')]:undefined)||0x14},{'name':_0x9f56('0x4c'),'value':_0x30f0b0[_0x9f56('0x4c')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x3]?_0x30f0b0['attrs'][0x3][_0x9f56('0x3e')]:undefined)||'voice'},{'name':_0x9f56('0x4d'),'value':_0x30f0b0[_0x9f56('0x4d')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x4]?_0x30f0b0[_0x9f56('0x41')][0x4][_0x9f56('0x3e')]:undefined)||''},{'name':_0x9f56('0x4e'),'value':_0x30f0b0['attrFaxAccounts']||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0['attrs'][0x5]?_0x30f0b0['attrs'][0x5][_0x9f56('0x3e')]:undefined)||''},{'name':_0x9f56('0x4f'),'value':_0x30f0b0['attrSmsAccounts']||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0['attrs'][0x6]?_0x30f0b0['attrs'][0x6][_0x9f56('0x3e')]:undefined)||''},{'name':_0x9f56('0x50'),'value':_0x30f0b0[_0x9f56('0x50')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x7]?_0x30f0b0[_0x9f56('0x41')][0x7][_0x9f56('0x3e')]:undefined)||''},{'name':_0x9f56('0x51'),'value':_0x30f0b0[_0x9f56('0x51')]||(_0x30f0b0['attrs']&&_0x30f0b0['attrs'][0x8]?_0x30f0b0['attrs'][0x8][_0x9f56('0x3e')]:undefined)||''},{'name':'attrChatWebsites','value':_0x30f0b0[_0x9f56('0x52')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0['attrs'][0x9]?_0x30f0b0[_0x9f56('0x41')][0x9][_0x9f56('0x3e')]:undefined)||''}];case _0x9f56('0x53'):case _0x9f56('0x54'):return[{'name':'attrSerie1','value':_0x30f0b0[_0x9f56('0x55')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x0]?_0x30f0b0[_0x9f56('0x41')][0x0][_0x9f56('0x3e')]:undefined)||_0x9f56('0x4a')},{'name':_0x9f56('0x56'),'value':_0x30f0b0[_0x9f56('0x56')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0['attrs'][0x1]?_0x30f0b0['attrs'][0x1][_0x9f56('0x3e')]:undefined)||null},{'name':_0x9f56('0x57'),'value':_0x30f0b0[_0x9f56('0x57')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x2]?_0x30f0b0[_0x9f56('0x41')][0x2][_0x9f56('0x3e')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x30f0b0[_0x9f56('0x4b')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x3]?_0x30f0b0['attrs'][0x3][_0x9f56('0x3e')]:undefined)||[]},{'name':_0x9f56('0x4c'),'value':_0x30f0b0[_0x9f56('0x4c')]||(_0x30f0b0['attrs']&&_0x30f0b0[_0x9f56('0x41')][0x4]?_0x30f0b0[_0x9f56('0x41')][0x4][_0x9f56('0x3e')]:undefined)||_0x9f56('0x58')},{'name':_0x9f56('0x4d'),'value':_0x30f0b0['attrEmailAccounts']||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0['attrs'][0x5]?_0x30f0b0[_0x9f56('0x41')][0x5]['value']:undefined)||''},{'name':'attrFaxAccounts','value':_0x30f0b0[_0x9f56('0x4e')]||(_0x30f0b0['attrs']&&_0x30f0b0[_0x9f56('0x41')][0x6]?_0x30f0b0[_0x9f56('0x41')][0x6][_0x9f56('0x3e')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x30f0b0['attrSmsAccounts']||(_0x30f0b0['attrs']&&_0x30f0b0['attrs'][0x7]?_0x30f0b0['attrs'][0x7][_0x9f56('0x3e')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x30f0b0[_0x9f56('0x50')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0['attrs'][0x8]?_0x30f0b0[_0x9f56('0x41')][0x8]['value']:undefined)||''},{'name':_0x9f56('0x51'),'value':_0x30f0b0[_0x9f56('0x51')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x9]?_0x30f0b0[_0x9f56('0x41')][0x9][_0x9f56('0x3e')]:undefined)||''},{'name':_0x9f56('0x52'),'value':_0x30f0b0['attrChatWebsites']||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0['attrs'][0xa]?_0x30f0b0[_0x9f56('0x41')][0xa]['value']:undefined)||''}];case _0x9f56('0x59'):return[{'name':_0x9f56('0x5a'),'type':_0x30f0b0[_0x9f56('0x5b')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0['attrs'][0x0]?_0x30f0b0['attrs'][0x0][_0x9f56('0x5c')]:undefined)||null,'value':_0x30f0b0[_0x9f56('0x5a')]||(_0x30f0b0[_0x9f56('0x41')]&&_0x30f0b0[_0x9f56('0x41')][0x0]?_0x30f0b0['attrs'][0x0][_0x9f56('0x3e')]:undefined)||null},{'name':_0x9f56('0x5d'),'value':_0x30f0b0[_0x9f56('0x5d')]||(_0x30f0b0['attrs']&&_0x30f0b0['attrs'][0x1]?_0x30f0b0[_0x9f56('0x41')][0x1][_0x9f56('0x3e')]:undefined)||0x0}];default:return[];}}catch(_0x4858c3){logger[_0x9f56('0x29')](_0x9f56('0x5e'),JSON[_0x9f56('0x5f')](_0x4858c3));return[];}}exports[_0x9f56('0x60')]=function(_0x3ea3ef,_0xae5a8f){if(_0x3ea3ef[_0x9f56('0x61')]){_0x3ea3ef[_0x9f56('0x61')]['attrs']=widgetAttributes(_0x3ea3ef[_0x9f56('0x61')]);}return db[_0x9f56('0x31')]['create'](_0x3ea3ef[_0x9f56('0x61')],{})['then'](respondWithResult(_0xae5a8f,0xc9))[_0x9f56('0x3b')](handleError(_0xae5a8f,null));};exports['update']=function(_0x2f85a6,_0x2323f3){if(_0x2f85a6[_0x9f56('0x61')]['id']){delete _0x2f85a6['body']['id'];}_0x2f85a6[_0x9f56('0x61')][_0x9f56('0x41')]=widgetAttributes(_0x2f85a6['body']);return db['DashboardItem']['find']({'where':{'id':_0x2f85a6[_0x9f56('0x2e')]['id']}})[_0x9f56('0x28')](handleEntityNotFound(_0x2323f3,null))[_0x9f56('0x28')](saveUpdates(_0x2f85a6[_0x9f56('0x61')],null))[_0x9f56('0x28')](respondWithResult(_0x2323f3,null))['catch'](handleError(_0x2323f3,null));};
\ No newline at end of file
index 9c45f3a..23f2d0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde97=['hook','exports','DashboardItem','save','update','remove','emit','hasOwnProperty'];(function(_0x207842,_0x31e375){var _0x11f811=function(_0x24fd82){while(--_0x24fd82){_0x207842['push'](_0x207842['shift']());}};_0x11f811(++_0x31e375);}(_0xde97,0x192));var _0x7de9=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0xde97[_0x2d2c16];return _0x53f2fb;};'use strict';var EventEmitter=require('events');var DashboardItem=require('../../mysqldb')['db'][_0x7de9('0x0')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7de9('0x1'),'afterUpdate':_0x7de9('0x2'),'afterDestroy':_0x7de9('0x3')};function emitEvent(_0x242756){return function(_0x5cdf65,_0x432974,_0x7be6ff){DashboardItemEvents[_0x7de9('0x4')](_0x242756+':'+_0x5cdf65['id'],_0x5cdf65);DashboardItemEvents[_0x7de9('0x4')](_0x242756,_0x5cdf65);_0x7be6ff(null);};}for(var e in events){if(events[_0x7de9('0x5')](e)){var event=events[e];DashboardItem[_0x7de9('0x6')](e,emitEvent(event));}}module[_0x7de9('0x7')]=DashboardItemEvents;
\ No newline at end of file
+var _0x391e=['DashboardItem','save','update','remove','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x2ad008,_0x45c253){var _0x4538cf=function(_0xe143e4){while(--_0xe143e4){_0x2ad008['push'](_0x2ad008['shift']());}};_0x4538cf(++_0x45c253);}(_0x391e,0x1cf));var _0xe391=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0x391e[_0x4792c8];return _0x35edb1;};'use strict';var EventEmitter=require('events');var DashboardItem=require(_0xe391('0x0'))['db'][_0xe391('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe391('0x2'),'afterUpdate':_0xe391('0x3'),'afterDestroy':_0xe391('0x4')};function emitEvent(_0xb88c39){return function(_0x5e5ce9,_0x2e8a98,_0x4ef1bd){DashboardItemEvents['emit'](_0xb88c39+':'+_0x5e5ce9['id'],_0x5e5ce9);DashboardItemEvents[_0xe391('0x5')](_0xb88c39,_0x5e5ce9);_0x4ef1bd(null);};}for(var e in events){if(events[_0xe391('0x6')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0xe391('0x7')]=DashboardItemEvents;
\ No newline at end of file
index c6f72c7..c391e4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a62=['../../config/environment','./dashboardItem.attributes','define','DashboardItem','dashboard_items','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4d0a38,_0x250363){var _0x3c9435=function(_0x4d0c0e){while(--_0x4d0c0e){_0x4d0a38['push'](_0x4d0a38['shift']());}};_0x3c9435(++_0x250363);}(_0x0a62,0x119));var _0x20a6=function(_0x4f33cb,_0x46c73d){_0x4f33cb=_0x4f33cb-0x0;var _0x2b2dbd=_0x0a62[_0x4f33cb];return _0x2b2dbd;};'use strict';var _=require(_0x20a6('0x0'));var util=require(_0x20a6('0x1'));var logger=require(_0x20a6('0x2'))(_0x20a6('0x3'));var moment=require(_0x20a6('0x4'));var BPromise=require(_0x20a6('0x5'));var rp=require(_0x20a6('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x20a6('0x7'));var attributes=require(_0x20a6('0x8'));module['exports']=function(_0x5629dd,_0x274d40){return _0x5629dd[_0x20a6('0x9')](_0x20a6('0xa'),attributes,{'tableName':_0x20a6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x160f=['request-promise','path','rimraf','define','DashboardItem','dashboard_items','lodash','util','api','moment','bluebird'];(function(_0x261522,_0x1adc1f){var _0x98a25a=function(_0x1b0f9c){while(--_0x1b0f9c){_0x261522['push'](_0x261522['shift']());}};_0x98a25a(++_0x1adc1f);}(_0x160f,0x8a));var _0xf160=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x160f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf160('0x0'));var util=require(_0xf160('0x1'));var logger=require('../../config/logger')(_0xf160('0x2'));var moment=require(_0xf160('0x3'));var BPromise=require(_0xf160('0x4'));var rp=require(_0xf160('0x5'));var fs=require('fs');var path=require(_0xf160('0x6'));var rimraf=require(_0xf160('0x7'));var config=require('../../config/environment');var attributes=require('./dashboardItem.attributes');module['exports']=function(_0x15f382,_0x192cb1){return _0x15f382[_0xf160('0x8')](_0xf160('0x9'),attributes,{'tableName':_0xf160('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ee9d6b2..c55ca0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96f4=['../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','request','then','info','DashboardItem,\x20%s,\x20%s','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger'];(function(_0x42f027,_0x2bf311){var _0x5a31d1=function(_0x297ded){while(--_0x297ded){_0x42f027['push'](_0x42f027['shift']());}};_0x5a31d1(++_0x2bf311);}(_0x96f4,0xf5));var _0x496f=function(_0x4429e0,_0xee6f1f){_0x4429e0=_0x4429e0-0x0;var _0x51a5b3=_0x96f4[_0x4429e0];return _0x51a5b3;};'use strict';var _=require(_0x496f('0x0'));var util=require(_0x496f('0x1'));var moment=require(_0x496f('0x2'));var BPromise=require(_0x496f('0x3'));var rs=require(_0x496f('0x4'));var fs=require('fs');var Redis=require(_0x496f('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x496f('0x6'))('rpc');var config=require(_0x496f('0x7'));var jayson=require(_0x496f('0x8'));var client=jayson[_0x496f('0x9')]['http']({'port':0x232a});config[_0x496f('0xa')]=_[_0x496f('0xb')](config[_0x496f('0xa')],{'host':_0x496f('0xc'),'port':0x18eb});var socket=require(_0x496f('0xd'))(new Redis(config['redis']));require(_0x496f('0xe'))[_0x496f('0xf')](socket);function respondWithRpcPromise(_0x37b4d8,_0x32fef7,_0x516b93){return new BPromise(function(_0x1cf84c,_0x2a356f){return client[_0x496f('0x10')](_0x37b4d8,_0x516b93)[_0x496f('0x11')](function(_0x2c600d){logger[_0x496f('0x12')](_0x496f('0x13'),_0x32fef7,'request\x20sent');logger[_0x496f('0x14')](_0x496f('0x15'),_0x32fef7,'request\x20sent',JSON[_0x496f('0x16')](_0x2c600d));if(_0x2c600d[_0x496f('0x17')]){if(_0x2c600d[_0x496f('0x17')][_0x496f('0x18')]===0x1f4){logger[_0x496f('0x17')](_0x496f('0x13'),_0x32fef7,_0x2c600d[_0x496f('0x17')][_0x496f('0x19')]);return _0x2a356f(_0x2c600d['error']['message']);}logger[_0x496f('0x17')](_0x496f('0x13'),_0x32fef7,_0x2c600d['error'][_0x496f('0x19')]);return _0x1cf84c(_0x2c600d['error'][_0x496f('0x19')]);}else{logger[_0x496f('0x12')](_0x496f('0x13'),_0x32fef7,'request\x20sent');_0x1cf84c(_0x2c600d[_0x496f('0x1a')][_0x496f('0x19')]);}})[_0x496f('0x1b')](function(_0x15bb4a){logger[_0x496f('0x17')](_0x496f('0x13'),_0x32fef7,_0x15bb4a);_0x2a356f(_0x15bb4a);});});}
\ No newline at end of file
+var _0x39df=['jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','request','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x1a8bbc,_0x17a086){var _0x212fc2=function(_0x55c718){while(--_0x55c718){_0x1a8bbc['push'](_0x1a8bbc['shift']());}};_0x212fc2(++_0x17a086);}(_0x39df,0x17f));var _0xf39d=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x39df[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0xf39d('0x0'));var moment=require(_0xf39d('0x1'));var BPromise=require('bluebird');var rs=require(_0xf39d('0x2'));var fs=require('fs');var Redis=require(_0xf39d('0x3'));var db=require(_0xf39d('0x4'))['db'];var utils=require(_0xf39d('0x5'));var logger=require('../../config/logger')(_0xf39d('0x6'));var config=require('../../config/environment');var jayson=require(_0xf39d('0x7'));var client=jayson['client'][_0xf39d('0x8')]({'port':0x232a});config[_0xf39d('0x9')]=_[_0xf39d('0xa')](config[_0xf39d('0x9')],{'host':_0xf39d('0xb'),'port':0x18eb});var socket=require(_0xf39d('0xc'))(new Redis(config['redis']));require(_0xf39d('0xd'))[_0xf39d('0xe')](socket);function respondWithRpcPromise(_0x22a5bd,_0x5cdd92,_0xe53e5b){return new BPromise(function(_0x2a8083,_0x459a44){return client[_0xf39d('0xf')](_0x22a5bd,_0xe53e5b)['then'](function(_0xbdcfcb){logger[_0xf39d('0x10')](_0xf39d('0x11'),_0x5cdd92,_0xf39d('0x12'));logger[_0xf39d('0x13')]('DashboardItem,\x20%s,\x20%s,\x20%s',_0x5cdd92,_0xf39d('0x12'),JSON[_0xf39d('0x14')](_0xbdcfcb));if(_0xbdcfcb[_0xf39d('0x15')]){if(_0xbdcfcb['error'][_0xf39d('0x16')]===0x1f4){logger[_0xf39d('0x15')]('DashboardItem,\x20%s,\x20%s',_0x5cdd92,_0xbdcfcb[_0xf39d('0x15')][_0xf39d('0x17')]);return _0x459a44(_0xbdcfcb[_0xf39d('0x15')][_0xf39d('0x17')]);}logger['error'](_0xf39d('0x11'),_0x5cdd92,_0xbdcfcb[_0xf39d('0x15')][_0xf39d('0x17')]);return _0x2a8083(_0xbdcfcb[_0xf39d('0x15')][_0xf39d('0x17')]);}else{logger[_0xf39d('0x10')]('DashboardItem,\x20%s,\x20%s',_0x5cdd92,_0xf39d('0x12'));_0x2a8083(_0xbdcfcb[_0xf39d('0x18')]['message']);}})[_0xf39d('0x19')](function(_0x5665ea){logger[_0xf39d('0x15')](_0xf39d('0x11'),_0x5cdd92,_0x5665ea);_0x459a44(_0x5665ea);});});}
\ No newline at end of file
index f5fe872..339613f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf80=['remove','update','emit','removeListener','register','length','./dashboardItem.events','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbf80,0x1b6));var _0x0bf8=function(_0x25c326,_0x250137){_0x25c326=_0x25c326-0x0;var _0x762452=_0xbf80[_0x25c326];return _0x762452;};'use strict';var DashboardItemEvents=require(_0x0bf8('0x0'));var events=[_0x0bf8('0x1'),_0x0bf8('0x2'),_0x0bf8('0x3')];function createListener(_0x305d2d,_0x18d41c){return function(_0x17e5f1){_0x18d41c[_0x0bf8('0x4')](_0x305d2d,_0x17e5f1);};}function removeListener(_0x56117d,_0x324941){return function(){DashboardItemEvents[_0x0bf8('0x5')](_0x56117d,_0x324941);};}exports[_0x0bf8('0x6')]=function(_0x3bbb1d){for(var _0x11878d=0x0,_0x1e13bf=events[_0x0bf8('0x7')];_0x11878d<_0x1e13bf;_0x11878d++){var _0x45f1eb=events[_0x11878d];var _0x34a934=createListener('dashboardItem:'+_0x45f1eb,_0x3bbb1d);DashboardItemEvents['on'](_0x45f1eb,_0x34a934);}};
\ No newline at end of file
+var _0xb66d=['length','dashboardItem:','save','remove','update','emit','removeListener'];(function(_0x2244fb,_0x143d10){var _0x2d1d2f=function(_0x229b69){while(--_0x229b69){_0x2244fb['push'](_0x2244fb['shift']());}};_0x2d1d2f(++_0x143d10);}(_0xb66d,0x87));var _0xdb66=function(_0x317b63,_0x2acf92){_0x317b63=_0x317b63-0x0;var _0x36a2e2=_0xb66d[_0x317b63];return _0x36a2e2;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=[_0xdb66('0x0'),_0xdb66('0x1'),_0xdb66('0x2')];function createListener(_0x531aee,_0x5b283a){return function(_0xf4cc23){_0x5b283a[_0xdb66('0x3')](_0x531aee,_0xf4cc23);};}function removeListener(_0x293947,_0x361b7f){return function(){DashboardItemEvents[_0xdb66('0x4')](_0x293947,_0x361b7f);};}exports['register']=function(_0x32dfc7){for(var _0x516276=0x0,_0x173a3d=events[_0xdb66('0x5')];_0x516276<_0x173a3d;_0x516276++){var _0x480ce3=events[_0x516276];var _0x27fdf3=createListener(_0xdb66('0x6')+_0x480ce3,_0x32dfc7);DashboardItemEvents['on'](_0x480ce3,_0x27fdf3);}};
\ No newline at end of file
index a0c2cdb..a66268b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd046=['create','put','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated'];(function(_0x5f04d5,_0xa52f6d){var _0x250dfa=function(_0x5224f4){while(--_0x5224f4){_0x5f04d5['push'](_0x5f04d5['shift']());}};_0x250dfa(++_0xa52f6d);}(_0xd046,0x16d));var _0x6d04=function(_0x2391f0,_0x25f8c4){_0x2391f0=_0x2391f0-0x0;var _0xbf9ae0=_0xd046[_0x2391f0];return _0xbf9ae0;};'use strict';var multer=require(_0x6d04('0x0'));var util=require(_0x6d04('0x1'));var path=require(_0x6d04('0x2'));var timeout=require(_0x6d04('0x3'));var express=require(_0x6d04('0x4'));var router=express['Router']();var fs_extra=require(_0x6d04('0x5'));var auth=require(_0x6d04('0x6'));var interaction=require(_0x6d04('0x7'));var config=require(_0x6d04('0x8'));var controller=require(_0x6d04('0x9'));router[_0x6d04('0xa')](_0x6d04('0xb'),auth[_0x6d04('0xc')](),controller['show']);router['post']('/',auth[_0x6d04('0xc')](),controller[_0x6d04('0xd')]);router[_0x6d04('0xe')]('/:id',auth[_0x6d04('0xc')](),controller[_0x6d04('0xf')]);router['delete']('/:id',auth[_0x6d04('0xc')](),controller[_0x6d04('0x10')]);module[_0x6d04('0x11')]=router;
\ No newline at end of file
+var _0x17c8=['express','fs-extra','../../components/auth/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0x17c8,0x12c));var _0x817c=function(_0x124277,_0x5f2e25){_0x124277=_0x124277-0x0;var _0x35f473=_0x17c8[_0x124277];return _0x35f473;};'use strict';var multer=require(_0x817c('0x0'));var util=require(_0x817c('0x1'));var path=require(_0x817c('0x2'));var timeout=require(_0x817c('0x3'));var express=require(_0x817c('0x4'));var router=express['Router']();var fs_extra=require(_0x817c('0x5'));var auth=require(_0x817c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x817c('0x7'));var controller=require(_0x817c('0x8'));router[_0x817c('0x9')](_0x817c('0xa'),auth[_0x817c('0xb')](),controller[_0x817c('0xc')]);router[_0x817c('0xd')]('/',auth['isAuthenticated'](),controller[_0x817c('0xe')]);router['put'](_0x817c('0xa'),auth[_0x817c('0xb')](),controller[_0x817c('0xf')]);router[_0x817c('0x10')](_0x817c('0xa'),auth[_0x817c('0xb')](),controller[_0x817c('0x11')]);module[_0x817c('0x12')]=router;
\ No newline at end of file
index eb9daac..5b22196 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd871=['exports','STRING','ENUM','second','third','first','sequelize'];(function(_0x8a6975,_0x5ee2b0){var _0x1edcdb=function(_0x405446){while(--_0x405446){_0x8a6975['push'](_0x8a6975['shift']());}};_0x1edcdb(++_0x5ee2b0);}(_0xd871,0x15d));var _0x1d87=function(_0x140c1b,_0x5e6387){_0x140c1b=_0x140c1b-0x0;var _0x55349c=_0xd871[_0x140c1b];return _0x55349c;};'use strict';var Sequelize=require(_0x1d87('0x0'));module[_0x1d87('0x1')]={'name':{'type':Sequelize[_0x1d87('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x1d87('0x3')]('first',_0x1d87('0x4'),_0x1d87('0x5')),'allowNull':![],'defaultValue':_0x1d87('0x6')},'description':{'type':Sequelize[_0x1d87('0x2')]}};
\ No newline at end of file
+var _0xafee=['second','third','sequelize','exports','ENUM','first'];(function(_0x2ec461,_0x5f588a){var _0x28603d=function(_0x21114b){while(--_0x21114b){_0x2ec461['push'](_0x2ec461['shift']());}};_0x28603d(++_0x5f588a);}(_0xafee,0x1e2));var _0xeafe=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0xafee[_0x2aea9e];return _0x430b92;};'use strict';var Sequelize=require(_0xeafe('0x0'));module[_0xeafe('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize[_0xeafe('0x2')](_0xeafe('0x3'),_0xeafe('0x4'),_0xeafe('0x5')),'allowNull':![],'defaultValue':_0xeafe('0x3')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a42ec2e..ca14545 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc430=['../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','then','get','Dispositions','UserProfileResource','destroy','name','send','index','map','Disposition','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util'];(function(_0x5bb48f,_0x2bd274){var _0xccea88=function(_0x23442e){while(--_0x23442e){_0x5bb48f['push'](_0x5bb48f['shift']());}};_0xccea88(++_0x2bd274);}(_0xc430,0x1e0));var _0x0c43=function(_0x74a0c6,_0x327fee){_0x74a0c6=_0x74a0c6-0x0;var _0x2fb098=_0xc430[_0x74a0c6];return _0x2fb098;};'use strict';var emlformat=require(_0x0c43('0x0'));var rimraf=require(_0x0c43('0x1'));var zipdir=require(_0x0c43('0x2'));var jsonpatch=require(_0x0c43('0x3'));var rp=require('request-promise');var moment=require(_0x0c43('0x4'));var BPromise=require(_0x0c43('0x5'));var Mustache=require(_0x0c43('0x6'));var util=require(_0x0c43('0x7'));var path=require(_0x0c43('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0c43('0x9'));var fs=require('fs');var fs_extra=require(_0x0c43('0xa'));var _=require('lodash');var squel=require(_0x0c43('0xb'));var crypto=require(_0x0c43('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0c43('0xd'));var querystring=require('querystring');var Papa=require(_0x0c43('0xe'));var Redis=require(_0x0c43('0xf'));var authService=require(_0x0c43('0x10'));var qs=require(_0x0c43('0x11'));var as=require(_0x0c43('0x12'));var hardwareService=require(_0x0c43('0x13'));var logger=require(_0x0c43('0x14'))(_0x0c43('0x15'));var utils=require('../../config/utils');var config=require(_0x0c43('0x16'));var licenseUtil=require(_0x0c43('0x17'));var db=require(_0x0c43('0x18'))['db'];function respondWithStatusCode(_0x924e72,_0x27d796){_0x27d796=_0x27d796||0xcc;return function(_0x88621c){if(_0x88621c){return _0x924e72[_0x0c43('0x19')](_0x27d796);}return _0x924e72[_0x0c43('0x1a')](_0x27d796)[_0x0c43('0x1b')]();};}function respondWithResult(_0x4f542d,_0x4e6e8d){_0x4e6e8d=_0x4e6e8d||0xc8;return function(_0x5e5d58){if(_0x5e5d58){return _0x4f542d[_0x0c43('0x1a')](_0x4e6e8d)[_0x0c43('0x1c')](_0x5e5d58);}};}function respondWithFilteredResult(_0x1d2d9d,_0x38b1ce){return function(_0x964f00){if(_0x964f00){var _0xd5cccb=typeof _0x38b1ce[_0x0c43('0x1d')]===_0x0c43('0x1e')&&typeof _0x38b1ce[_0x0c43('0x1f')]===_0x0c43('0x1e');var _0x4dcc74=_0x964f00[_0x0c43('0x20')];var _0x58803c=_0xd5cccb?0x0:_0x38b1ce[_0x0c43('0x1d')];var _0xf5d05a=_0xd5cccb?_0x964f00[_0x0c43('0x20')]:_0x38b1ce[_0x0c43('0x1d')]+_0x38b1ce[_0x0c43('0x1f')];var _0x2ed015;if(_0xf5d05a>=_0x4dcc74){_0xf5d05a=_0x4dcc74;_0x2ed015=0xc8;}else{_0x2ed015=0xce;}_0x1d2d9d[_0x0c43('0x1a')](_0x2ed015);return _0x1d2d9d['set']('Content-Range',_0x58803c+'-'+_0xf5d05a+'/'+_0x4dcc74)[_0x0c43('0x1c')](_0x964f00);}return null;};}function patchUpdates(_0x2f2d77){return function(_0xe1f210){try{jsonpatch[_0x0c43('0x21')](_0xe1f210,_0x2f2d77,!![]);}catch(_0x6e7595){return BPromise[_0x0c43('0x22')](_0x6e7595);}return _0xe1f210[_0x0c43('0x23')]();};}function saveUpdates(_0x1c7359,_0x19b393){return function(_0x50f8e2){if(_0x50f8e2){return _0x50f8e2['update'](_0x1c7359)['then'](function(_0x3a0fcf){return _0x3a0fcf;});}return null;};}function removeEntity(_0xa111cd,_0x1f4531){return function(_0x55bda7){if(_0x55bda7){return _0x55bda7['destroy']()[_0x0c43('0x24')](function(){var _0x48ea90=_0x55bda7[_0x0c43('0x25')]({'plain':!![]});var _0x3a0aeb=_0x0c43('0x26');return db[_0x0c43('0x27')][_0x0c43('0x28')]({'where':{'type':_0x3a0aeb,'resourceId':_0x48ea90['id']}})[_0x0c43('0x24')](function(){return _0x55bda7;});})['then'](function(){_0xa111cd[_0x0c43('0x1a')](0xcc)[_0x0c43('0x1b')]();});}};}function handleEntityNotFound(_0x226e88,_0x2e0c36){return function(_0x38835e){if(!_0x38835e){_0x226e88[_0x0c43('0x19')](0x194);}return _0x38835e;};}function handleError(_0x3fc6b8,_0x180cad){_0x180cad=_0x180cad||0x1f4;return function(_0x210120){logger['error'](_0x210120['stack']);if(_0x210120[_0x0c43('0x29')]){delete _0x210120[_0x0c43('0x29')];}_0x3fc6b8[_0x0c43('0x1a')](_0x180cad)[_0x0c43('0x2a')](_0x210120);};}exports[_0x0c43('0x2b')]=function(_0x5615d1,_0x4f7b97){var _0x144ee6={},_0x2378fb={},_0x424551={'count':0x0,'rows':[]};var _0x166d6c=_[_0x0c43('0x2c')](db[_0x0c43('0x2d')][_0x0c43('0x2e')],function(_0x3ba70f){return{'name':_0x3ba70f['fieldName'],'type':_0x3ba70f[_0x0c43('0x2f')][_0x0c43('0x30')]};});_0x2378fb[_0x0c43('0x31')]=_[_0x0c43('0x2c')](_0x166d6c,'name');_0x2378fb[_0x0c43('0x32')]=_[_0x0c43('0x33')](_0x5615d1['query']);_0x2378fb[_0x0c43('0x34')]=_[_0x0c43('0x35')](_0x2378fb[_0x0c43('0x31')],_0x2378fb[_0x0c43('0x32')]);_0x144ee6[_0x0c43('0x36')]=_['intersection'](_0x2378fb[_0x0c43('0x31')],qs[_0x0c43('0x37')](_0x5615d1[_0x0c43('0x32')][_0x0c43('0x37')]));_0x144ee6[_0x0c43('0x36')]=_0x144ee6['attributes']['length']?_0x144ee6[_0x0c43('0x36')]:_0x2378fb['model'];if(!_0x5615d1['query'][_0x0c43('0x38')](_0x0c43('0x39'))){_0x144ee6[_0x0c43('0x1f')]=qs['limit'](_0x5615d1[_0x0c43('0x32')][_0x0c43('0x1f')]);_0x144ee6['offset']=qs[_0x0c43('0x1d')](_0x5615d1['query']['offset']);}_0x144ee6[_0x0c43('0x3a')]=qs[_0x0c43('0x3b')](_0x5615d1[_0x0c43('0x32')][_0x0c43('0x3b')]);_0x144ee6[_0x0c43('0x3c')]=qs['filters'](_['pick'](_0x5615d1['query'],_0x2378fb[_0x0c43('0x34')]),_0x166d6c);if(_0x5615d1[_0x0c43('0x32')]['filter']){_0x144ee6[_0x0c43('0x3c')]=_['merge'](_0x144ee6[_0x0c43('0x3c')],{'$or':_[_0x0c43('0x2c')](_0x166d6c,function(_0x1a57c3){if(_0x1a57c3['type']!==_0x0c43('0x3d')){var _0x1aecf0={};_0x1aecf0[_0x1a57c3[_0x0c43('0x29')]]={'$like':'%'+_0x5615d1[_0x0c43('0x32')][_0x0c43('0x3e')]+'%'};return _0x1aecf0;}})});}_0x144ee6=_[_0x0c43('0x3f')]({},_0x144ee6,_0x5615d1[_0x0c43('0x40')]);var _0x247c26={'where':_0x144ee6[_0x0c43('0x3c')]};return db['Disposition'][_0x0c43('0x20')](_0x247c26)[_0x0c43('0x24')](function(_0x1dde2f){_0x424551[_0x0c43('0x20')]=_0x1dde2f;if(_0x5615d1[_0x0c43('0x32')][_0x0c43('0x41')]){_0x144ee6[_0x0c43('0x42')]=[{'all':!![]}];}return db[_0x0c43('0x2d')][_0x0c43('0x43')](_0x144ee6);})[_0x0c43('0x24')](function(_0x37a7b4){_0x424551[_0x0c43('0x44')]=_0x37a7b4;return _0x424551;})[_0x0c43('0x24')](respondWithFilteredResult(_0x4f7b97,_0x144ee6))['catch'](handleError(_0x4f7b97,null));};exports[_0x0c43('0x45')]=function(_0x72165a,_0x1c356f){var _0xb42c84={'raw':!![],'where':{'id':_0x72165a[_0x0c43('0x46')]['id']}},_0x354330={};_0x354330[_0x0c43('0x31')]=_['keys'](db['Disposition'][_0x0c43('0x2e')]);_0x354330[_0x0c43('0x32')]=_['keys'](_0x72165a[_0x0c43('0x32')]);_0x354330['filters']=_[_0x0c43('0x35')](_0x354330[_0x0c43('0x31')],_0x354330[_0x0c43('0x32')]);_0xb42c84[_0x0c43('0x36')]=_['intersection'](_0x354330[_0x0c43('0x31')],qs['fields'](_0x72165a[_0x0c43('0x32')][_0x0c43('0x37')]));_0xb42c84[_0x0c43('0x36')]=_0xb42c84[_0x0c43('0x36')][_0x0c43('0x47')]?_0xb42c84[_0x0c43('0x36')]:_0x354330[_0x0c43('0x31')];if(_0x72165a[_0x0c43('0x32')][_0x0c43('0x41')]){_0xb42c84[_0x0c43('0x42')]=[{'all':!![]}];}_0xb42c84=_['merge']({},_0xb42c84,_0x72165a[_0x0c43('0x40')]);return db[_0x0c43('0x2d')][_0x0c43('0x48')](_0xb42c84)['then'](handleEntityNotFound(_0x1c356f,null))[_0x0c43('0x24')](respondWithResult(_0x1c356f,null))['catch'](handleError(_0x1c356f,null));};exports[_0x0c43('0x49')]=function(_0x5f51cd,_0xdfbbff){return db['Disposition'][_0x0c43('0x49')](_0x5f51cd['body'],{})[_0x0c43('0x24')](function(_0xb8730a){var _0x1308bc=_0x5f51cd[_0x0c43('0x4a')][_0x0c43('0x25')]({'plain':!![]});if(!_0x1308bc)throw new Error(_0x0c43('0x4b'));if(_0x1308bc[_0x0c43('0x4c')]===_0x0c43('0x4a')){var _0x4259db=_0xb8730a[_0x0c43('0x25')]({'plain':!![]});var _0x442d88='Dispositions';return db[_0x0c43('0x4d')]['find']({'where':{'name':_0x442d88,'userProfileId':_0x1308bc[_0x0c43('0x4e')]},'raw':!![]})[_0x0c43('0x24')](function(_0x14513a){if(_0x14513a&&_0x14513a[_0x0c43('0x4f')]===0x0){return db[_0x0c43('0x27')][_0x0c43('0x49')]({'name':_0x4259db[_0x0c43('0x29')],'resourceId':_0x4259db['id'],'type':_0x14513a[_0x0c43('0x29')],'sectionId':_0x14513a['id']},{})[_0x0c43('0x24')](function(){return _0xb8730a;});}else{return _0xb8730a;}})[_0x0c43('0x50')](function(_0x320301){logger[_0x0c43('0x51')](_0x0c43('0x52'),_0x320301);throw _0x320301;});}return _0xb8730a;})['then'](respondWithResult(_0xdfbbff,0xc9))[_0x0c43('0x50')](handleError(_0xdfbbff,null));};exports['update']=function(_0x4de76e,_0x5a124b){if(_0x4de76e['body']['id']){delete _0x4de76e[_0x0c43('0x53')]['id'];}return db[_0x0c43('0x2d')][_0x0c43('0x48')]({'where':{'id':_0x4de76e['params']['id']}})[_0x0c43('0x24')](handleEntityNotFound(_0x5a124b,null))[_0x0c43('0x24')](saveUpdates(_0x4de76e[_0x0c43('0x53')],null))['then'](respondWithResult(_0x5a124b,null))[_0x0c43('0x50')](handleError(_0x5a124b,null));};exports[_0x0c43('0x28')]=function(_0x3e5efa,_0xd635cb){return db[_0x0c43('0x2d')][_0x0c43('0x48')]({'where':{'id':_0x3e5efa['params']['id']}})['then'](handleEntityNotFound(_0xd635cb,null))[_0x0c43('0x24')](removeEntity(_0xd635cb,null))[_0x0c43('0x50')](handleError(_0xd635cb,null));};
\ No newline at end of file
+var _0x15c6=['jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','count','set','Content-Range','save','update','then','destroy','Dispositions','sendStatus','error','stack','name','send','index','map','Disposition','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','nolimit','limit','sort','where','pick','merge','filter','include','findAll','rows','catch','show','params','includeAll','options','create','body','user','get','role','UserProfileSection','find','userProfileId','UserProfileResource','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','squel','crypto'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0x15c6,0x1cd));var _0x615c=function(_0x5ac4b6,_0x4d9360){_0x5ac4b6=_0x5ac4b6-0x0;var _0x29ced8=_0x15c6[_0x5ac4b6];return _0x29ced8;};'use strict';var emlformat=require(_0x615c('0x0'));var rimraf=require(_0x615c('0x1'));var zipdir=require(_0x615c('0x2'));var jsonpatch=require(_0x615c('0x3'));var rp=require(_0x615c('0x4'));var moment=require(_0x615c('0x5'));var BPromise=require(_0x615c('0x6'));var Mustache=require(_0x615c('0x7'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x615c('0x8'));var ejs=require(_0x615c('0x9'));var fs=require('fs');var fs_extra=require(_0x615c('0xa'));var _=require('lodash');var squel=require(_0x615c('0xb'));var crypto=require(_0x615c('0xc'));var jsforce=require(_0x615c('0xd'));var deskjs=require(_0x615c('0xe'));var toCsv=require('to-csv');var querystring=require(_0x615c('0xf'));var Papa=require('papaparse');var Redis=require(_0x615c('0x10'));var authService=require(_0x615c('0x11'));var qs=require(_0x615c('0x12'));var as=require(_0x615c('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x615c('0x14'));var utils=require(_0x615c('0x15'));var config=require(_0x615c('0x16'));var licenseUtil=require(_0x615c('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x497ecb,_0x1c029d){_0x1c029d=_0x1c029d||0xcc;return function(_0x1b6e92){if(_0x1b6e92){return _0x497ecb['sendStatus'](_0x1c029d);}return _0x497ecb[_0x615c('0x18')](_0x1c029d)['end']();};}function respondWithResult(_0x525708,_0x31dca1){_0x31dca1=_0x31dca1||0xc8;return function(_0x11d751){if(_0x11d751){return _0x525708[_0x615c('0x18')](_0x31dca1)[_0x615c('0x19')](_0x11d751);}};}function respondWithFilteredResult(_0x146659,_0x1ab157){return function(_0x55ec9e){if(_0x55ec9e){var _0x2d10d2=typeof _0x1ab157[_0x615c('0x1a')]===_0x615c('0x1b')&&typeof _0x1ab157['limit']===_0x615c('0x1b');var _0x3953aa=_0x55ec9e[_0x615c('0x1c')];var _0x1e0d18=_0x2d10d2?0x0:_0x1ab157[_0x615c('0x1a')];var _0x374516=_0x2d10d2?_0x55ec9e[_0x615c('0x1c')]:_0x1ab157[_0x615c('0x1a')]+_0x1ab157['limit'];var _0x504e63;if(_0x374516>=_0x3953aa){_0x374516=_0x3953aa;_0x504e63=0xc8;}else{_0x504e63=0xce;}_0x146659['status'](_0x504e63);return _0x146659[_0x615c('0x1d')](_0x615c('0x1e'),_0x1e0d18+'-'+_0x374516+'/'+_0x3953aa)[_0x615c('0x19')](_0x55ec9e);}return null;};}function patchUpdates(_0x146c58){return function(_0x5c6e16){try{jsonpatch['apply'](_0x5c6e16,_0x146c58,!![]);}catch(_0x2f77cc){return BPromise['reject'](_0x2f77cc);}return _0x5c6e16[_0x615c('0x1f')]();};}function saveUpdates(_0x53638f,_0x23e4c5){return function(_0x508ea5){if(_0x508ea5){return _0x508ea5[_0x615c('0x20')](_0x53638f)[_0x615c('0x21')](function(_0x5d148b){return _0x5d148b;});}return null;};}function removeEntity(_0x4cca36,_0x5bba2f){return function(_0x4117f5){if(_0x4117f5){return _0x4117f5[_0x615c('0x22')]()[_0x615c('0x21')](function(){var _0x3ce866=_0x4117f5['get']({'plain':!![]});var _0x32635f=_0x615c('0x23');return db['UserProfileResource']['destroy']({'where':{'type':_0x32635f,'resourceId':_0x3ce866['id']}})[_0x615c('0x21')](function(){return _0x4117f5;});})[_0x615c('0x21')](function(){_0x4cca36[_0x615c('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x32ce76,_0x2ad4cc){return function(_0x457f7b){if(!_0x457f7b){_0x32ce76[_0x615c('0x24')](0x194);}return _0x457f7b;};}function handleError(_0x48ae09,_0x25101f){_0x25101f=_0x25101f||0x1f4;return function(_0x174259){logger[_0x615c('0x25')](_0x174259[_0x615c('0x26')]);if(_0x174259[_0x615c('0x27')]){delete _0x174259[_0x615c('0x27')];}_0x48ae09[_0x615c('0x18')](_0x25101f)[_0x615c('0x28')](_0x174259);};}exports[_0x615c('0x29')]=function(_0x4593f5,_0x1985a7){var _0x1ffab6={},_0x391211={},_0x167424={'count':0x0,'rows':[]};var _0x5e04d6=_[_0x615c('0x2a')](db[_0x615c('0x2b')][_0x615c('0x2c')],function(_0x46ba04){return{'name':_0x46ba04[_0x615c('0x2d')],'type':_0x46ba04[_0x615c('0x2e')]['key']};});_0x391211[_0x615c('0x2f')]=_[_0x615c('0x2a')](_0x5e04d6,_0x615c('0x27'));_0x391211[_0x615c('0x30')]=_[_0x615c('0x31')](_0x4593f5['query']);_0x391211[_0x615c('0x32')]=_['intersection'](_0x391211[_0x615c('0x2f')],_0x391211[_0x615c('0x30')]);_0x1ffab6[_0x615c('0x33')]=_[_0x615c('0x34')](_0x391211[_0x615c('0x2f')],qs[_0x615c('0x35')](_0x4593f5['query'][_0x615c('0x35')]));_0x1ffab6[_0x615c('0x33')]=_0x1ffab6[_0x615c('0x33')][_0x615c('0x36')]?_0x1ffab6[_0x615c('0x33')]:_0x391211[_0x615c('0x2f')];if(!_0x4593f5[_0x615c('0x30')]['hasOwnProperty'](_0x615c('0x37'))){_0x1ffab6[_0x615c('0x38')]=qs[_0x615c('0x38')](_0x4593f5[_0x615c('0x30')]['limit']);_0x1ffab6[_0x615c('0x1a')]=qs[_0x615c('0x1a')](_0x4593f5[_0x615c('0x30')][_0x615c('0x1a')]);}_0x1ffab6['order']=qs['sort'](_0x4593f5[_0x615c('0x30')][_0x615c('0x39')]);_0x1ffab6[_0x615c('0x3a')]=qs['filters'](_[_0x615c('0x3b')](_0x4593f5[_0x615c('0x30')],_0x391211[_0x615c('0x32')]),_0x5e04d6);if(_0x4593f5[_0x615c('0x30')]['filter']){_0x1ffab6['where']=_[_0x615c('0x3c')](_0x1ffab6['where'],{'$or':_[_0x615c('0x2a')](_0x5e04d6,function(_0x216773){if(_0x216773[_0x615c('0x2e')]!=='VIRTUAL'){var _0x5c50c3={};_0x5c50c3[_0x216773[_0x615c('0x27')]]={'$like':'%'+_0x4593f5[_0x615c('0x30')][_0x615c('0x3d')]+'%'};return _0x5c50c3;}})});}_0x1ffab6=_[_0x615c('0x3c')]({},_0x1ffab6,_0x4593f5['options']);var _0x2e6dec={'where':_0x1ffab6[_0x615c('0x3a')]};return db['Disposition']['count'](_0x2e6dec)['then'](function(_0x1b8ce0){_0x167424[_0x615c('0x1c')]=_0x1b8ce0;if(_0x4593f5['query']['includeAll']){_0x1ffab6[_0x615c('0x3e')]=[{'all':!![]}];}return db[_0x615c('0x2b')][_0x615c('0x3f')](_0x1ffab6);})[_0x615c('0x21')](function(_0x1f1d55){_0x167424[_0x615c('0x40')]=_0x1f1d55;return _0x167424;})[_0x615c('0x21')](respondWithFilteredResult(_0x1985a7,_0x1ffab6))[_0x615c('0x41')](handleError(_0x1985a7,null));};exports[_0x615c('0x42')]=function(_0x43920f,_0x4b2a4b){var _0x38519c={'raw':!![],'where':{'id':_0x43920f[_0x615c('0x43')]['id']}},_0x3ff394={};_0x3ff394[_0x615c('0x2f')]=_['keys'](db[_0x615c('0x2b')][_0x615c('0x2c')]);_0x3ff394[_0x615c('0x30')]=_[_0x615c('0x31')](_0x43920f[_0x615c('0x30')]);_0x3ff394[_0x615c('0x32')]=_['intersection'](_0x3ff394[_0x615c('0x2f')],_0x3ff394['query']);_0x38519c['attributes']=_[_0x615c('0x34')](_0x3ff394['model'],qs[_0x615c('0x35')](_0x43920f[_0x615c('0x30')][_0x615c('0x35')]));_0x38519c[_0x615c('0x33')]=_0x38519c[_0x615c('0x33')][_0x615c('0x36')]?_0x38519c[_0x615c('0x33')]:_0x3ff394['model'];if(_0x43920f[_0x615c('0x30')][_0x615c('0x44')]){_0x38519c['include']=[{'all':!![]}];}_0x38519c=_[_0x615c('0x3c')]({},_0x38519c,_0x43920f[_0x615c('0x45')]);return db[_0x615c('0x2b')]['find'](_0x38519c)[_0x615c('0x21')](handleEntityNotFound(_0x4b2a4b,null))[_0x615c('0x21')](respondWithResult(_0x4b2a4b,null))[_0x615c('0x41')](handleError(_0x4b2a4b,null));};exports['create']=function(_0x1bd4f1,_0x546124){return db[_0x615c('0x2b')][_0x615c('0x46')](_0x1bd4f1[_0x615c('0x47')],{})[_0x615c('0x21')](function(_0x459e43){var _0x56e5df=_0x1bd4f1[_0x615c('0x48')][_0x615c('0x49')]({'plain':!![]});if(!_0x56e5df)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x56e5df[_0x615c('0x4a')]==='user'){var _0x25b4e7=_0x459e43[_0x615c('0x49')]({'plain':!![]});var _0xdc5b02=_0x615c('0x23');return db[_0x615c('0x4b')][_0x615c('0x4c')]({'where':{'name':_0xdc5b02,'userProfileId':_0x56e5df[_0x615c('0x4d')]},'raw':!![]})[_0x615c('0x21')](function(_0x2ccd7c){if(_0x2ccd7c&&_0x2ccd7c['autoAssociation']===0x0){return db[_0x615c('0x4e')][_0x615c('0x46')]({'name':_0x25b4e7['name'],'resourceId':_0x25b4e7['id'],'type':_0x2ccd7c[_0x615c('0x27')],'sectionId':_0x2ccd7c['id']},{})[_0x615c('0x21')](function(){return _0x459e43;});}else{return _0x459e43;}})[_0x615c('0x41')](function(_0xe35116){logger[_0x615c('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xe35116);throw _0xe35116;});}return _0x459e43;})['then'](respondWithResult(_0x546124,0xc9))[_0x615c('0x41')](handleError(_0x546124,null));};exports[_0x615c('0x20')]=function(_0xe4d3ce,_0x19fe59){if(_0xe4d3ce[_0x615c('0x47')]['id']){delete _0xe4d3ce[_0x615c('0x47')]['id'];}return db[_0x615c('0x2b')][_0x615c('0x4c')]({'where':{'id':_0xe4d3ce[_0x615c('0x43')]['id']}})['then'](handleEntityNotFound(_0x19fe59,null))['then'](saveUpdates(_0xe4d3ce['body'],null))['then'](respondWithResult(_0x19fe59,null))[_0x615c('0x41')](handleError(_0x19fe59,null));};exports[_0x615c('0x22')]=function(_0x42583c,_0x3ce3bc){return db[_0x615c('0x2b')][_0x615c('0x4c')]({'where':{'id':_0x42583c[_0x615c('0x43')]['id']}})[_0x615c('0x21')](handleEntityNotFound(_0x3ce3bc,null))[_0x615c('0x21')](removeEntity(_0x3ce3bc,null))[_0x615c('0x41')](handleError(_0x3ce3bc,null));};
\ No newline at end of file
index 3abed43..2a38934 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb6a=['ListId','name_mail','name_sms','SmsAccountId','name_fax','name_openchannel','OpenchannelAccountId','name_whatsapp','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','tools_dispositions','name_voice','name'];(function(_0x2d7563,_0x3bc9c4){var _0x3edd0f=function(_0x1d1253){while(--_0x1d1253){_0x2d7563['push'](_0x2d7563['shift']());}};_0x3edd0f(++_0x3bc9c4);}(_0xfb6a,0x1d6));var _0xafb6=function(_0x1e5068,_0x31e9c4){_0x1e5068=_0x1e5068-0x0;var _0x2230b6=_0xfb6a[_0x1e5068];return _0x2230b6;};'use strict';var _=require(_0xafb6('0x0'));var util=require(_0xafb6('0x1'));var logger=require(_0xafb6('0x2'))(_0xafb6('0x3'));var moment=require(_0xafb6('0x4'));var BPromise=require(_0xafb6('0x5'));var rp=require(_0xafb6('0x6'));var fs=require('fs');var path=require(_0xafb6('0x7'));var rimraf=require(_0xafb6('0x8'));var config=require(_0xafb6('0x9'));var attributes=require('./disposition.attributes');module[_0xafb6('0xa')]=function(_0x56db48,_0x275520){return _0x56db48['define']('Disposition',attributes,{'tableName':_0xafb6('0xb'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xafb6('0xc'),'fields':[_0xafb6('0xd'),_0xafb6('0xe')]},{'unique':!![],'name':'name_chat','fields':[_0xafb6('0xd'),'ChatWebsiteId']},{'unique':!![],'name':_0xafb6('0xf'),'fields':['name','MailAccountId']},{'unique':!![],'name':_0xafb6('0x10'),'fields':[_0xafb6('0xd'),_0xafb6('0x11')]},{'unique':!![],'name':_0xafb6('0x12'),'fields':[_0xafb6('0xd'),'FaxAccountId']},{'unique':!![],'name':_0xafb6('0x13'),'fields':[_0xafb6('0xd'),_0xafb6('0x14')]},{'unique':!![],'name':_0xafb6('0x15'),'fields':['name','WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5818=['exports','name_voice','name','ListId','name_chat','ChatWebsiteId','name_mail','name_sms','SmsAccountId','name_fax','name_openchannel','OpenchannelAccountId','WhatsappAccountId','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x565986,_0x832420){var _0x5521bb=function(_0xa5d75b){while(--_0xa5d75b){_0x565986['push'](_0x565986['shift']());}};_0x5521bb(++_0x832420);}(_0x5818,0x15d));var _0x8581=function(_0x6735,_0x29ccf1){_0x6735=_0x6735-0x0;var _0x467de9=_0x5818[_0x6735];return _0x467de9;};'use strict';var _=require(_0x8581('0x0'));var util=require('util');var logger=require(_0x8581('0x1'))(_0x8581('0x2'));var moment=require(_0x8581('0x3'));var BPromise=require(_0x8581('0x4'));var rp=require(_0x8581('0x5'));var fs=require('fs');var path=require(_0x8581('0x6'));var rimraf=require(_0x8581('0x7'));var config=require('../../config/environment');var attributes=require('./disposition.attributes');module[_0x8581('0x8')]=function(_0x3f871a,_0x14d6e3){return _0x3f871a['define']('Disposition',attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':_0x8581('0x9'),'fields':[_0x8581('0xa'),_0x8581('0xb')]},{'unique':!![],'name':_0x8581('0xc'),'fields':[_0x8581('0xa'),_0x8581('0xd')]},{'unique':!![],'name':_0x8581('0xe'),'fields':[_0x8581('0xa'),'MailAccountId']},{'unique':!![],'name':_0x8581('0xf'),'fields':['name',_0x8581('0x10')]},{'unique':!![],'name':_0x8581('0x11'),'fields':[_0x8581('0xa'),'FaxAccountId']},{'unique':!![],'name':_0x8581('0x12'),'fields':['name',_0x8581('0x13')]},{'unique':!![],'name':'name_whatsapp','fields':['name',_0x8581('0x14')]}],'timestamps':!![]});};
\ No newline at end of file
index 86ee286..d51827e 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(_0x1177e9,_0x53c3d7){var _0x3a4f7a=function(_0x39460b){while(--_0x39460b){_0x1177e9['push'](_0x1177e9['shift']());}};_0x3a4f7a(++_0x53c3d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+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(_0x352eac,_0x428a4e){var _0x2f3ab4=function(_0x49a6eb){while(--_0x49a6eb){_0x352eac['push'](_0x352eac['shift']());}};_0x2f3ab4(++_0x428a4e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'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 a3ba218..52a2eb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43f0=['isAuthenticated','/:id','show','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get'];(function(_0x176217,_0x32bcc2){var _0x5cbb04=function(_0x2162a5){while(--_0x2162a5){_0x176217['push'](_0x176217['shift']());}};_0x5cbb04(++_0x32bcc2);}(_0x43f0,0xa0));var _0x043f=function(_0x130159,_0x23fd08){_0x130159=_0x130159-0x0;var _0x57d8f8=_0x43f0[_0x130159];return _0x57d8f8;};'use strict';var multer=require('multer');var util=require(_0x043f('0x0'));var path=require(_0x043f('0x1'));var timeout=require(_0x043f('0x2'));var express=require(_0x043f('0x3'));var router=express[_0x043f('0x4')]();var fs_extra=require(_0x043f('0x5'));var auth=require(_0x043f('0x6'));var interaction=require(_0x043f('0x7'));var config=require(_0x043f('0x8'));var controller=require(_0x043f('0x9'));router[_0x043f('0xa')]('/',auth[_0x043f('0xb')](),controller['index']);router[_0x043f('0xa')](_0x043f('0xc'),auth[_0x043f('0xb')](),controller[_0x043f('0xd')]);router['post']('/',auth[_0x043f('0xb')](),controller['create']);router[_0x043f('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x043f('0xf')]);router[_0x043f('0x10')]('/:id',auth[_0x043f('0xb')](),controller[_0x043f('0x11')]);module[_0x043f('0x12')]=router;
\ No newline at end of file
+var _0x3701=['create','put','update','delete','destroy','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get','index','/:id','isAuthenticated','show','post'];(function(_0x239786,_0x471f27){var _0x3f15e2=function(_0x1c3781){while(--_0x1c3781){_0x239786['push'](_0x239786['shift']());}};_0x3f15e2(++_0x471f27);}(_0x3701,0x8a));var _0x1370=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3701[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require(_0x1370('0x0'));var path=require('path');var timeout=require(_0x1370('0x1'));var express=require(_0x1370('0x2'));var router=express['Router']();var fs_extra=require(_0x1370('0x3'));var auth=require(_0x1370('0x4'));var interaction=require(_0x1370('0x5'));var config=require(_0x1370('0x6'));var controller=require(_0x1370('0x7'));router[_0x1370('0x8')]('/',auth['isAuthenticated'](),controller[_0x1370('0x9')]);router[_0x1370('0x8')](_0x1370('0xa'),auth[_0x1370('0xb')](),controller[_0x1370('0xc')]);router[_0x1370('0xd')]('/',auth['isAuthenticated'](),controller[_0x1370('0xe')]);router[_0x1370('0xf')](_0x1370('0xa'),auth[_0x1370('0xb')](),controller[_0x1370('0x10')]);router[_0x1370('0x11')](_0x1370('0xa'),auth['isAuthenticated'](),controller[_0x1370('0x12')]);module['exports']=router;
\ No newline at end of file
index a2d8524..2c7a495 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf212=['BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','sequelize','exports','STRING','ENUM','xCALLY\x20Motion\x20Fax','localstationid','2400','4800','9600','12000','14400','v17,v27,v29','SIP','IAX','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER'];(function(_0x356dcc,_0xb32b97){var _0x2aa02c=function(_0x52dc2c){while(--_0x52dc2c){_0x356dcc['push'](_0x356dcc['shift']());}};_0x2aa02c(++_0xb32b97);}(_0xf212,0xd3));var _0x2f21=function(_0xe1c02b,_0xfbf124){_0xe1c02b=_0xe1c02b-0x0;var _0x376ac6=_0xf212[_0xe1c02b];return _0x376ac6;};'use strict';var Sequelize=require(_0x2f21('0x0'));module[_0x2f21('0x1')]={'name':{'type':Sequelize[_0x2f21('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x2f21('0x2')]},'ecm':{'type':Sequelize[_0x2f21('0x3')]('yes','no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x2f21('0x2')],'defaultValue':_0x2f21('0x4')},'localstationid':{'type':Sequelize[_0x2f21('0x2')],'unique':_0x2f21('0x5')},'minrate':{'type':Sequelize[_0x2f21('0x3')](_0x2f21('0x6'),_0x2f21('0x7'),'7200',_0x2f21('0x8'),_0x2f21('0x9'),_0x2f21('0xa')),'defaultValue':_0x2f21('0x7')},'maxrate':{'type':Sequelize['ENUM'](_0x2f21('0x6'),_0x2f21('0x7'),'7200',_0x2f21('0x8'),'12000',_0x2f21('0xa')),'defaultValue':'14400'},'modem':{'type':Sequelize[_0x2f21('0x2')],'defaultValue':_0x2f21('0xb')},'gateway':{'type':Sequelize[_0x2f21('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x2f21('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM'](_0x2f21('0xc'),_0x2f21('0xd'),_0x2f21('0xe'),_0x2f21('0xf')),'defaultValue':_0x2f21('0xc')},'key':{'type':Sequelize[_0x2f21('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x2f21('0x10')],'defaultValue':function(){return _0x2f21('0x11');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2f21('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2f21('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2f21('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2f21('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2f21('0x12')],'allowNull':!![],'defaultValue':null,'comment':_0x2f21('0x14')},'mandatoryDisposition':{'type':Sequelize[_0x2f21('0x13')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x4a1239){if(!_0x4a1239)this[_0x2f21('0x15')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0x2f21('0x16'),_0x4a1239);}}};
\ No newline at end of file
+var _0xd4f0=['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','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','9600','12000','4800','2400','14400','v17,v27,v29','IAX','DADHI','KHOMP','SIP','TEXT'];(function(_0x5af78d,_0xf1ca1b){var _0x2da1a2=function(_0x14609a){while(--_0x14609a){_0x5af78d['push'](_0x5af78d['shift']());}};_0x2da1a2(++_0xf1ca1b);}(_0xd4f0,0xa8));var _0x0d4f=function(_0x2e7f96,_0x2ffe43){_0x2e7f96=_0x2e7f96-0x0;var _0x315277=_0xd4f0[_0x2e7f96];return _0x315277;};'use strict';var Sequelize=require(_0x0d4f('0x0'));module['exports']={'name':{'type':Sequelize[_0x0d4f('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'ecm':{'type':Sequelize[_0x0d4f('0x2')](_0x0d4f('0x3'),'no'),'defaultValue':_0x0d4f('0x3')},'headerinfo':{'type':Sequelize['STRING'],'defaultValue':_0x0d4f('0x4')},'localstationid':{'type':Sequelize['STRING'],'unique':'localstationid'},'minrate':{'type':Sequelize['ENUM']('2400','4800','7200',_0x0d4f('0x5'),_0x0d4f('0x6'),'14400'),'defaultValue':_0x0d4f('0x7')},'maxrate':{'type':Sequelize['ENUM'](_0x0d4f('0x8'),_0x0d4f('0x7'),'7200',_0x0d4f('0x5'),_0x0d4f('0x6'),_0x0d4f('0x9')),'defaultValue':_0x0d4f('0x9')},'modem':{'type':Sequelize[_0x0d4f('0x1')],'defaultValue':_0x0d4f('0xa')},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x0d4f('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x0d4f('0x2')]('SIP',_0x0d4f('0xb'),_0x0d4f('0xc'),_0x0d4f('0xd')),'defaultValue':_0x0d4f('0xe')},'key':{'type':Sequelize[_0x0d4f('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x0d4f('0xf')],'defaultValue':function(){return _0x0d4f('0x10');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0d4f('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0d4f('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0d4f('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0d4f('0x11')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0d4f('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0d4f('0x12')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x0d4f('0x11')],'defaultValue':![],'comment':_0x0d4f('0x13'),'set':function(_0x2095cd){if(!_0x2095cd)this[_0x0d4f('0x14')](_0x0d4f('0x15'),null);this[_0x0d4f('0x14')](_0x0d4f('0x16'),_0x2095cd);}}};
\ No newline at end of file
index c8450be..8955af7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3008=['squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','FaxAccounts','UserProfileResource','stack','name','send','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','Pause','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','removeDispositions','CannedAnswer','removeAnswers','ids','addInteraction','FaxInteraction','getInteractions','nolimit','CmContact','Contact','User','Owner','internal','Tag','Tags','color','addApplications','sequelize','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','from-voip-provider','exten','localstationid','app','system','description','Fax\x20Extension','appdata','Answer','CDR(type)=inbound-fax','gateway','maxrate','minrate','modem','t38timeout','push','FAXOPT(','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','addAccountApplications','VoiceExtension','updateAccountApplications','omit','tech','updatedAt','TrunkId','ListId','findById','FaxMessage','$gte','split','format','CmList','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','List','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Contact\x20not\x20found','spread','ContactId','dataValues','Messages','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','fs-extra'];(function(_0x4e0376,_0x5ba330){var _0x507be2=function(_0x4d38f4){while(--_0x4d38f4){_0x4e0376['push'](_0x4e0376['shift']());}};_0x507be2(++_0x5ba330);}(_0x3008,0x174));var _0x8300=function(_0x5416db,_0x55683a){_0x5416db=_0x5416db-0x0;var _0x243e35=_0x3008[_0x5416db];return _0x243e35;};'use strict';var emlformat=require(_0x8300('0x0'));var rimraf=require(_0x8300('0x1'));var zipdir=require(_0x8300('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8300('0x3'));var moment=require('moment');var BPromise=require(_0x8300('0x4'));var Mustache=require(_0x8300('0x5'));var util=require(_0x8300('0x6'));var path=require(_0x8300('0x7'));var sox=require('sox');var csv=require(_0x8300('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8300('0x9'));var _=require('lodash');var squel=require(_0x8300('0xa'));var crypto=require(_0x8300('0xb'));var jsforce=require(_0x8300('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8300('0x8'));var querystring=require('querystring');var Papa=require(_0x8300('0xd'));var Redis=require(_0x8300('0xe'));var authService=require(_0x8300('0xf'));var qs=require(_0x8300('0x10'));var as=require(_0x8300('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8300('0x12'));var utils=require('../../config/utils');var config=require(_0x8300('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x8300('0x14'))['db'];config[_0x8300('0x15')]=_[_0x8300('0x16')](config[_0x8300('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0x8300('0x17'))(new Redis(config[_0x8300('0x15')]));require(_0x8300('0x18'))[_0x8300('0x19')](socket);var jayson=require(_0x8300('0x1a'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x8300('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x37cde6,_0x585524,_0x115b7a,_0x23659c){return new BPromise(function(_0x5647b6,_0x3e6e68){var _0x137542=_0x23659c||client;return _0x137542[_0x8300('0x1c')](_0x37cde6,_0x115b7a)['then'](function(_0x49606f){logger[_0x8300('0x1d')](_0x8300('0x1e'),_0x585524,_0x8300('0x1f'));logger['debug'](_0x8300('0x20'),_0x585524,_0x8300('0x1f'),JSON[_0x8300('0x21')](_0x49606f));if(_0x49606f[_0x8300('0x22')]){if(_0x49606f[_0x8300('0x22')]['code']===0x1f4){logger[_0x8300('0x22')](_0x8300('0x1e'),_0x585524,_0x49606f['error'][_0x8300('0x23')]);return _0x3e6e68(_0x49606f[_0x8300('0x22')][_0x8300('0x23')]);}logger[_0x8300('0x22')](_0x8300('0x1e'),_0x585524,_0x49606f[_0x8300('0x22')][_0x8300('0x23')]);return _0x5647b6(_0x49606f[_0x8300('0x22')]['message']);}else{logger[_0x8300('0x1d')](_0x8300('0x1e'),_0x585524,'request\x20sent');_0x5647b6(_0x49606f[_0x8300('0x24')][_0x8300('0x23')]);}})[_0x8300('0x25')](function(_0x9052d8){logger[_0x8300('0x22')](_0x8300('0x1e'),_0x585524,_0x9052d8);_0x3e6e68(_0x9052d8);});});}function respondWithStatusCode(_0x251c05,_0x2edb59){_0x2edb59=_0x2edb59||0xcc;return function(_0xd65988){if(_0xd65988){return _0x251c05[_0x8300('0x26')](_0x2edb59);}return _0x251c05[_0x8300('0x27')](_0x2edb59)[_0x8300('0x28')]();};}function respondWithResult(_0x5acbed,_0x4835ab){_0x4835ab=_0x4835ab||0xc8;return function(_0x28092b){if(_0x28092b){return _0x5acbed[_0x8300('0x27')](_0x4835ab)[_0x8300('0x29')](_0x28092b);}};}function respondWithFilteredResult(_0x9b027,_0x828a4c){return function(_0x52003f){if(_0x52003f){var _0x1c88f4=typeof _0x828a4c[_0x8300('0x2a')]===_0x8300('0x2b')&&typeof _0x828a4c[_0x8300('0x2c')]==='undefined';var _0xc17991=_0x52003f[_0x8300('0x2d')];var _0x3d1df0=_0x1c88f4?0x0:_0x828a4c['offset'];var _0x178533=_0x1c88f4?_0x52003f[_0x8300('0x2d')]:_0x828a4c[_0x8300('0x2a')]+_0x828a4c[_0x8300('0x2c')];var _0x4444ec;if(_0x178533>=_0xc17991){_0x178533=_0xc17991;_0x4444ec=0xc8;}else{_0x4444ec=0xce;}_0x9b027[_0x8300('0x27')](_0x4444ec);return _0x9b027[_0x8300('0x2e')](_0x8300('0x2f'),_0x3d1df0+'-'+_0x178533+'/'+_0xc17991)[_0x8300('0x29')](_0x52003f);}return null;};}function patchUpdates(_0x3768cd){return function(_0x4ccb3a){try{jsonpatch[_0x8300('0x30')](_0x4ccb3a,_0x3768cd,!![]);}catch(_0x5b49e3){return BPromise[_0x8300('0x31')](_0x5b49e3);}return _0x4ccb3a[_0x8300('0x32')]();};}function saveUpdates(_0x353c01,_0x32fbd0){return function(_0x61242b){if(_0x61242b){return _0x61242b[_0x8300('0x33')](_0x353c01)[_0x8300('0x34')](function(_0x136c60){return _0x136c60;});}return null;};}function removeEntity(_0x2a2886,_0x4ac35c){return function(_0xfdc644){if(_0xfdc644){return _0xfdc644[_0x8300('0x35')]()[_0x8300('0x34')](function(){var _0x1e6795=_0xfdc644[_0x8300('0x36')]({'plain':!![]});var _0x402036=_0x8300('0x37');return db[_0x8300('0x38')]['destroy']({'where':{'type':_0x402036,'resourceId':_0x1e6795['id']}})['then'](function(){return _0xfdc644;});})[_0x8300('0x34')](function(){_0x2a2886['status'](0xcc)[_0x8300('0x28')]();});}};}function handleEntityNotFound(_0x4be029,_0x1ee948){return function(_0x2d1d9e){if(!_0x2d1d9e){_0x4be029[_0x8300('0x26')](0x194);}return _0x2d1d9e;};}function handleError(_0x22284c,_0x3267ff){_0x3267ff=_0x3267ff||0x1f4;return function(_0x4e1ede){logger[_0x8300('0x22')](_0x4e1ede[_0x8300('0x39')]);if(_0x4e1ede[_0x8300('0x3a')]){delete _0x4e1ede[_0x8300('0x3a')];}_0x22284c[_0x8300('0x27')](_0x3267ff)[_0x8300('0x3b')](_0x4e1ede);};}exports['index']=function(_0x40f9a1,_0x2cef93){var _0x5a920d={'include':[{'model':db['Pause'],'as':_0x8300('0x3c')}]},_0x6fd769={},_0x38cc37={'count':0x0,'rows':[]};var _0x1a8b35=_[_0x8300('0x3d')](db[_0x8300('0x3e')][_0x8300('0x3f')],function(_0x17ad10){return{'name':_0x17ad10[_0x8300('0x40')],'type':_0x17ad10[_0x8300('0x41')][_0x8300('0x42')]};});_0x6fd769[_0x8300('0x43')]=_['map'](_0x1a8b35,'name');_0x6fd769[_0x8300('0x44')]=_[_0x8300('0x45')](_0x40f9a1[_0x8300('0x44')]);_0x6fd769[_0x8300('0x46')]=_[_0x8300('0x47')](_0x6fd769[_0x8300('0x43')],_0x6fd769[_0x8300('0x44')]);_0x5a920d[_0x8300('0x48')]=_[_0x8300('0x47')](_0x6fd769['model'],qs[_0x8300('0x49')](_0x40f9a1[_0x8300('0x44')][_0x8300('0x49')]));_0x5a920d[_0x8300('0x48')]=_0x5a920d[_0x8300('0x48')][_0x8300('0x4a')]?_0x5a920d['attributes']:_0x6fd769[_0x8300('0x43')];if(!_0x40f9a1[_0x8300('0x44')][_0x8300('0x4b')]('nolimit')){_0x5a920d[_0x8300('0x2c')]=qs[_0x8300('0x2c')](_0x40f9a1[_0x8300('0x44')]['limit']);_0x5a920d[_0x8300('0x2a')]=qs[_0x8300('0x2a')](_0x40f9a1['query'][_0x8300('0x2a')]);}_0x5a920d[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x40f9a1[_0x8300('0x44')]['sort']);_0x5a920d[_0x8300('0x4e')]=qs[_0x8300('0x46')](_[_0x8300('0x4f')](_0x40f9a1[_0x8300('0x44')],_0x6fd769[_0x8300('0x46')]),_0x1a8b35);if(_0x40f9a1['query'][_0x8300('0x50')]){_0x5a920d[_0x8300('0x4e')]=_[_0x8300('0x51')](_0x5a920d[_0x8300('0x4e')],{'$or':_[_0x8300('0x3d')](_0x1a8b35,function(_0xd90ba8){if(_0xd90ba8[_0x8300('0x41')]!=='VIRTUAL'){var _0x455c60={};_0x455c60[_0xd90ba8[_0x8300('0x3a')]]={'$like':'%'+_0x40f9a1[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x455c60;}})});}_0x5a920d=_[_0x8300('0x51')]({},_0x5a920d,_0x40f9a1[_0x8300('0x52')]);var _0x4d76ef={'where':_0x5a920d[_0x8300('0x4e')]};return db[_0x8300('0x3e')][_0x8300('0x2d')](_0x4d76ef)[_0x8300('0x34')](function(_0x393fe1){_0x38cc37[_0x8300('0x2d')]=_0x393fe1;if(_0x40f9a1['query'][_0x8300('0x53')]){_0x5a920d[_0x8300('0x54')]=[{'all':!![]}];}return db[_0x8300('0x3e')][_0x8300('0x55')](_0x5a920d);})[_0x8300('0x34')](function(_0x36925c){_0x38cc37[_0x8300('0x56')]=_0x36925c;return _0x38cc37;})[_0x8300('0x34')](respondWithFilteredResult(_0x2cef93,_0x5a920d))[_0x8300('0x25')](handleError(_0x2cef93,null));};exports[_0x8300('0x57')]=function(_0x1c401f,_0xf3ff73){var _0x44d886={'raw':![],'where':{'id':_0x1c401f[_0x8300('0x58')]['id']},'include':[{'model':db[_0x8300('0x59')],'as':_0x8300('0x3c')}]},_0xa40f6c={};_0xa40f6c[_0x8300('0x43')]=_[_0x8300('0x45')](db['FaxAccount'][_0x8300('0x3f')]);_0xa40f6c[_0x8300('0x44')]=_['keys'](_0x1c401f[_0x8300('0x44')]);_0xa40f6c['filters']=_[_0x8300('0x47')](_0xa40f6c[_0x8300('0x43')],_0xa40f6c[_0x8300('0x44')]);_0x44d886['attributes']=_['intersection'](_0xa40f6c[_0x8300('0x43')],qs['fields'](_0x1c401f['query'][_0x8300('0x49')]));_0x44d886[_0x8300('0x48')]=_0x44d886[_0x8300('0x48')][_0x8300('0x4a')]?_0x44d886[_0x8300('0x48')]:_0xa40f6c[_0x8300('0x43')];if(_0x1c401f[_0x8300('0x44')][_0x8300('0x53')]){_0x44d886['include']=[{'all':!![]}];}_0x44d886=_['merge']({},_0x44d886,_0x1c401f['options']);return db[_0x8300('0x3e')][_0x8300('0x5a')](_0x44d886)[_0x8300('0x34')](handleEntityNotFound(_0xf3ff73,null))['then'](respondWithResult(_0xf3ff73,null))['catch'](handleError(_0xf3ff73,null));};exports[_0x8300('0x5b')]=function(_0x1162a5,_0x8e5a27){return db[_0x8300('0x3e')][_0x8300('0x5b')](_0x1162a5[_0x8300('0x5c')],{})[_0x8300('0x34')](function(_0x2989b4){var _0x2c9993=_0x1162a5[_0x8300('0x5d')][_0x8300('0x36')]({'plain':!![]});if(!_0x2c9993)throw new Error(_0x8300('0x5e'));if(_0x2c9993[_0x8300('0x5f')]==='user'){var _0x18cccb=_0x2989b4['get']({'plain':!![]});var _0x280116=_0x8300('0x37');return db['UserProfileSection'][_0x8300('0x5a')]({'where':{'name':_0x280116,'userProfileId':_0x2c9993[_0x8300('0x60')]},'raw':!![]})[_0x8300('0x34')](function(_0x3a1077){if(_0x3a1077&&_0x3a1077['autoAssociation']===0x0){return db[_0x8300('0x38')][_0x8300('0x5b')]({'name':_0x18cccb[_0x8300('0x3a')],'resourceId':_0x18cccb['id'],'type':_0x3a1077['name'],'sectionId':_0x3a1077['id']},{})[_0x8300('0x34')](function(){return _0x2989b4;});}else{return _0x2989b4;}})[_0x8300('0x25')](function(_0x333da9){logger[_0x8300('0x22')](_0x8300('0x61'),_0x333da9);throw _0x333da9;});}return _0x2989b4;})[_0x8300('0x34')](respondWithResult(_0x8e5a27,0xc9))[_0x8300('0x25')](handleError(_0x8e5a27,null));};exports[_0x8300('0x33')]=function(_0x3690cf,_0x209938){if(_0x3690cf[_0x8300('0x5c')]['id']){delete _0x3690cf[_0x8300('0x5c')]['id'];}return db[_0x8300('0x3e')][_0x8300('0x5a')]({'where':{'id':_0x3690cf[_0x8300('0x58')]['id']},'include':[{'model':db[_0x8300('0x59')],'as':_0x8300('0x3c')}]})[_0x8300('0x34')](handleEntityNotFound(_0x209938,null))[_0x8300('0x34')](saveUpdates(_0x3690cf[_0x8300('0x5c')],null))['then'](respondWithResult(_0x209938,null))[_0x8300('0x25')](handleError(_0x209938,null));};exports[_0x8300('0x35')]=function(_0x2e0de5,_0x1c816c){return db[_0x8300('0x3e')][_0x8300('0x5a')]({'where':{'id':_0x2e0de5[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x1c816c,null))[_0x8300('0x34')](removeEntity(_0x1c816c,null))['catch'](handleError(_0x1c816c,null));};exports[_0x8300('0x62')]=function(_0x1d28b0,_0x15117a){return db[_0x8300('0x3e')][_0x8300('0x62')]()['then'](respondWithResult(_0x15117a,null))[_0x8300('0x25')](handleError(_0x15117a,null));};exports[_0x8300('0x63')]=function(_0x2e26df,_0x441fc6,_0x1dcbc2){if(_0x2e26df[_0x8300('0x5c')]['id']){delete _0x2e26df[_0x8300('0x5c')]['id'];}return db[_0x8300('0x3e')]['find']({'where':{'id':_0x2e26df[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x441fc6,null))['then'](function(_0x4a3423){if(_0x4a3423){_0x2e26df['body'][_0x8300('0x64')]=_0x4a3423['id'];return db[_0x8300('0x65')][_0x8300('0x5b')](_0x2e26df[_0x8300('0x5c')]);}})[_0x8300('0x34')](respondWithResult(_0x441fc6,null))[_0x8300('0x25')](handleError(_0x441fc6,null));};exports[_0x8300('0x66')]=function(_0x2a7734,_0x3f6a2a,_0x3f3672){var _0x71e4fb={'raw':![],'where':{}};var _0xc52ffc={};var _0x417ac9={'count':0x0,'rows':[]};return db[_0x8300('0x3e')][_0x8300('0x67')]({'where':{'id':_0x2a7734[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x3f6a2a,null))[_0x8300('0x34')](function(_0x412859){if(_0x412859){_0xc52ffc[_0x8300('0x43')]=_[_0x8300('0x45')](db[_0x8300('0x65')][_0x8300('0x3f')]);_0xc52ffc[_0x8300('0x44')]=_[_0x8300('0x45')](_0x2a7734[_0x8300('0x44')]);_0xc52ffc[_0x8300('0x46')]=_[_0x8300('0x47')](_0xc52ffc['model'],_0xc52ffc[_0x8300('0x44')]);_0x71e4fb[_0x8300('0x48')]=_[_0x8300('0x47')](_0xc52ffc[_0x8300('0x43')],qs['fields'](_0x2a7734[_0x8300('0x44')]['fields']));_0x71e4fb[_0x8300('0x48')]=_0x71e4fb[_0x8300('0x48')][_0x8300('0x4a')]?_0x71e4fb[_0x8300('0x48')]:_0xc52ffc[_0x8300('0x43')];if(!_0x2a7734[_0x8300('0x44')][_0x8300('0x4b')]('nolimit')){_0x71e4fb[_0x8300('0x2c')]=qs['limit'](_0x2a7734[_0x8300('0x44')][_0x8300('0x2c')]);_0x71e4fb[_0x8300('0x2a')]=qs[_0x8300('0x2a')](_0x2a7734['query'][_0x8300('0x2a')]);}_0x71e4fb[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x2a7734[_0x8300('0x44')][_0x8300('0x4d')]);_0x71e4fb[_0x8300('0x4e')]=qs[_0x8300('0x46')](_['pick'](_0x2a7734[_0x8300('0x44')],_0xc52ffc[_0x8300('0x46')]));_0x71e4fb['where']['FaxAccountId']=_0x412859['id'];if(_0x2a7734[_0x8300('0x44')][_0x8300('0x50')]){_0x71e4fb['where']=_[_0x8300('0x51')](_0x71e4fb[_0x8300('0x4e')],{'$or':_['map'](_0x71e4fb['attributes'],function(_0xa8a11c){var _0x14021d={};_0x14021d[_0xa8a11c]={'$like':'%'+_0x2a7734[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x14021d;})});}_0x71e4fb=_[_0x8300('0x51')]({},_0x71e4fb,_0x2a7734['options']);return db['Disposition']['count']({'where':_0x71e4fb[_0x8300('0x4e')]})[_0x8300('0x34')](function(_0x27c75e){_0x417ac9[_0x8300('0x2d')]=_0x27c75e;if(_0x2a7734[_0x8300('0x44')]['includeAll']){_0x71e4fb[_0x8300('0x54')]=[{'all':!![]}];}return db[_0x8300('0x65')][_0x8300('0x55')](_0x71e4fb);})[_0x8300('0x34')](function(_0x4b05ef){_0x417ac9[_0x8300('0x56')]=_0x4b05ef;return _0x417ac9;});}})[_0x8300('0x34')](respondWithFilteredResult(_0x3f6a2a,_0x71e4fb))['catch'](handleError(_0x3f6a2a,null));};exports[_0x8300('0x68')]=function(_0x5469df,_0x11faed,_0x244dad){return db[_0x8300('0x3e')][_0x8300('0x5a')]({'where':{'id':_0x5469df[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x11faed,null))[_0x8300('0x34')](function(_0x3b8811){if(_0x3b8811){return _0x3b8811[_0x8300('0x68')](_0x5469df[_0x8300('0x44')]['ids']);}})[_0x8300('0x34')](respondWithStatusCode(_0x11faed,null))[_0x8300('0x25')](handleError(_0x11faed,null));};exports['addAnswer']=function(_0x30b3ca,_0x2f9530,_0x37fa2f){if(_0x30b3ca[_0x8300('0x5c')]['id']){delete _0x30b3ca[_0x8300('0x5c')]['id'];}return db['FaxAccount']['find']({'where':{'id':_0x30b3ca[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x2f9530,null))[_0x8300('0x34')](function(_0x5be569){if(_0x5be569){_0x30b3ca[_0x8300('0x5c')]['FaxAccountId']=_0x5be569['id'];return db[_0x8300('0x69')][_0x8300('0x5b')](_0x30b3ca[_0x8300('0x5c')]);}})['then'](respondWithResult(_0x2f9530,null))[_0x8300('0x25')](handleError(_0x2f9530,null));};exports['getAnswers']=function(_0x1176a3,_0x516bcf,_0x4dfa2c){var _0x341847={'raw':![],'where':{}};var _0x473154={};var _0x33b2f6={'count':0x0,'rows':[]};return db[_0x8300('0x3e')][_0x8300('0x67')]({'where':{'id':_0x1176a3[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x516bcf,null))[_0x8300('0x34')](function(_0x5b0c8e){if(_0x5b0c8e){_0x473154['model']=_['keys'](db[_0x8300('0x69')][_0x8300('0x3f')]);_0x473154['query']=_[_0x8300('0x45')](_0x1176a3[_0x8300('0x44')]);_0x473154['filters']=_[_0x8300('0x47')](_0x473154['model'],_0x473154[_0x8300('0x44')]);_0x341847[_0x8300('0x48')]=_[_0x8300('0x47')](_0x473154[_0x8300('0x43')],qs[_0x8300('0x49')](_0x1176a3['query']['fields']));_0x341847['attributes']=_0x341847[_0x8300('0x48')][_0x8300('0x4a')]?_0x341847[_0x8300('0x48')]:_0x473154[_0x8300('0x43')];if(!_0x1176a3['query'][_0x8300('0x4b')]('nolimit')){_0x341847[_0x8300('0x2c')]=qs[_0x8300('0x2c')](_0x1176a3[_0x8300('0x44')][_0x8300('0x2c')]);_0x341847[_0x8300('0x2a')]=qs[_0x8300('0x2a')](_0x1176a3['query'][_0x8300('0x2a')]);}_0x341847[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x1176a3[_0x8300('0x44')][_0x8300('0x4d')]);_0x341847[_0x8300('0x4e')]=qs[_0x8300('0x46')](_[_0x8300('0x4f')](_0x1176a3[_0x8300('0x44')],_0x473154['filters']));_0x341847['where']['FaxAccountId']=_0x5b0c8e['id'];if(_0x1176a3[_0x8300('0x44')][_0x8300('0x50')]){_0x341847[_0x8300('0x4e')]=_[_0x8300('0x51')](_0x341847[_0x8300('0x4e')],{'$or':_[_0x8300('0x3d')](_0x341847[_0x8300('0x48')],function(_0x2bcd1c){var _0x26af1e={};_0x26af1e[_0x2bcd1c]={'$like':'%'+_0x1176a3[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x26af1e;})});}_0x341847=_[_0x8300('0x51')]({},_0x341847,_0x1176a3[_0x8300('0x52')]);return db[_0x8300('0x69')][_0x8300('0x2d')]({'where':_0x341847['where']})[_0x8300('0x34')](function(_0x479050){_0x33b2f6[_0x8300('0x2d')]=_0x479050;if(_0x1176a3['query'][_0x8300('0x53')]){_0x341847[_0x8300('0x54')]=[{'all':!![]}];}return db[_0x8300('0x69')][_0x8300('0x55')](_0x341847);})[_0x8300('0x34')](function(_0x13b7cf){_0x33b2f6[_0x8300('0x56')]=_0x13b7cf;return _0x33b2f6;});}})[_0x8300('0x34')](respondWithFilteredResult(_0x516bcf,_0x341847))[_0x8300('0x25')](handleError(_0x516bcf,null));};exports[_0x8300('0x6a')]=function(_0x3078bf,_0x4d8365,_0x280ed6){return db[_0x8300('0x3e')]['find']({'where':{'id':_0x3078bf[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x4d8365,null))[_0x8300('0x34')](function(_0x5649d3){if(_0x5649d3){return _0x5649d3[_0x8300('0x6a')](_0x3078bf[_0x8300('0x44')][_0x8300('0x6b')]);}})[_0x8300('0x34')](respondWithStatusCode(_0x4d8365,null))[_0x8300('0x25')](handleError(_0x4d8365,null));};exports[_0x8300('0x6c')]=function(_0x4c20c7,_0x4bed14,_0x259b83){return db[_0x8300('0x6d')]['find']({'where':{'id':_0x4c20c7[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x4bed14,null))['then'](function(_0x3030c3){if(_0x3030c3){return _0x3030c3[_0x8300('0x6c')](_0x4c20c7['body'][_0x8300('0x6b')],_['omit'](_0x4c20c7['body'],[_0x8300('0x6b'),'id'])||{});}})[_0x8300('0x34')](respondWithResult(_0x4bed14,null))[_0x8300('0x25')](handleError(_0x4bed14,null));};exports[_0x8300('0x6e')]=function(_0x167528,_0x2a49e0,_0x36f25b){var _0x49825a={'raw':![],'where':{}};var _0x5d4ef4={};var _0x3a1ea1={'count':0x0,'rows':[]};return db['FaxAccount'][_0x8300('0x67')]({'where':{'id':_0x167528[_0x8300('0x58')]['id']}})['then'](handleEntityNotFound(_0x2a49e0,null))[_0x8300('0x34')](function(_0x23d230){if(_0x23d230){_0x5d4ef4[_0x8300('0x43')]=_[_0x8300('0x45')](db[_0x8300('0x6d')][_0x8300('0x3f')]);_0x5d4ef4[_0x8300('0x44')]=_['keys'](_0x167528[_0x8300('0x44')]);_0x5d4ef4[_0x8300('0x46')]=_[_0x8300('0x47')](_0x5d4ef4['model'],_0x5d4ef4[_0x8300('0x44')]);_0x49825a['attributes']=_['intersection'](_0x5d4ef4[_0x8300('0x43')],qs[_0x8300('0x49')](_0x167528[_0x8300('0x44')][_0x8300('0x49')]));_0x49825a[_0x8300('0x48')]=_0x49825a[_0x8300('0x48')]['length']?_0x49825a[_0x8300('0x48')]:_0x5d4ef4[_0x8300('0x43')];if(!_0x167528[_0x8300('0x44')][_0x8300('0x4b')](_0x8300('0x6f'))){_0x49825a[_0x8300('0x2c')]=qs[_0x8300('0x2c')](_0x167528['query'][_0x8300('0x2c')]);_0x49825a[_0x8300('0x2a')]=qs[_0x8300('0x2a')](_0x167528[_0x8300('0x44')]['offset']);}_0x49825a[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x167528[_0x8300('0x44')][_0x8300('0x4d')]);_0x49825a[_0x8300('0x4e')]=qs[_0x8300('0x46')](_[_0x8300('0x4f')](_0x167528[_0x8300('0x44')],_0x5d4ef4['filters']));_0x49825a['where'][_0x8300('0x64')]=_0x23d230['id'];if(_0x167528[_0x8300('0x44')]['filter']){_0x49825a['where']=_[_0x8300('0x51')](_0x49825a[_0x8300('0x4e')],{'$or':_['map'](_0x49825a[_0x8300('0x48')],function(_0x58b9ff){var _0x3bd56b={};_0x3bd56b[_0x58b9ff]={'$like':'%'+_0x167528[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x3bd56b;})});}_0x49825a=_[_0x8300('0x51')]({},_0x49825a,_0x167528['options']);return db[_0x8300('0x6d')][_0x8300('0x2d')]({'where':_0x49825a['where']})['then'](function(_0x27bc45){_0x3a1ea1['count']=_0x27bc45;if(_0x167528[_0x8300('0x44')]['includeAll']){_0x49825a[_0x8300('0x54')]=[{'model':db[_0x8300('0x70')],'as':_0x8300('0x71'),'required':![]},{'model':db[_0x8300('0x72')],'as':_0x8300('0x73'),'attributes':['name','fullname',_0x8300('0x74')],'required':![]},{'model':db[_0x8300('0x75')],'as':_0x8300('0x76'),'attributes':['id',_0x8300('0x3a'),_0x8300('0x77')],'where':_0x167528['query']['tag']?{'id':_0x167528[_0x8300('0x44')]['tag']}:undefined,'required':_0x167528[_0x8300('0x44')]['tag']?!![]:![]}];}return db[_0x8300('0x6d')]['findAll'](_0x49825a);})['then'](function(_0x16d344){_0x3a1ea1['rows']=_0x16d344;return _0x3a1ea1;});}})[_0x8300('0x34')](respondWithFilteredResult(_0x2a49e0,_0x49825a))[_0x8300('0x25')](handleError(_0x2a49e0,null));};exports[_0x8300('0x78')]=function(_0x11989a,_0x777974,_0x4b1b4a){return db[_0x8300('0x3e')]['findOne']({'where':{'id':_0x11989a[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x777974,null))[_0x8300('0x34')](function(_0x550f50){if(_0x550f50){return db[_0x8300('0x79')][_0x8300('0x7a')](function(_0x155ee6){return db[_0x8300('0x7b')][_0x8300('0x35')]({'where':{'FaxAccountId':_0x11989a[_0x8300('0x58')]['id']},'transaction':_0x155ee6})[_0x8300('0x34')](function(_0x3f23ae){var _0x1c84f8=_['map'](_0x11989a[_0x8300('0x5c')],function(_0x348c2c){_0x348c2c[_0x8300('0x64')]=_0x11989a[_0x8300('0x58')]['id'];return _0x348c2c;});return db[_0x8300('0x7b')][_0x8300('0x7c')](_0x1c84f8,{'transaction':_0x155ee6});});})[_0x8300('0x34')](function(){return db[_0x8300('0x7b')][_0x8300('0x7d')]({'where':{'FaxAccountId':_0x11989a[_0x8300('0x58')]['id']},'order':_0x8300('0x7e')});});}})[_0x8300('0x34')](respondWithResult(_0x777974,null))['catch'](handleError(_0x777974,null));};exports[_0x8300('0x7f')]=function(_0x5de958,_0x2e8bfa,_0x5946e5){var _0x479355={};var _0x1577eb={};var _0x57868b;var _0x488bfe;return db[_0x8300('0x3e')][_0x8300('0x67')]({'where':{'id':_0x5de958['params']['id']}})[_0x8300('0x34')](handleEntityNotFound(_0x2e8bfa,null))['then'](function(_0xd78c2c){if(_0xd78c2c){_0x57868b=_0xd78c2c;_0x1577eb[_0x8300('0x43')]=_[_0x8300('0x45')](db['FaxApplication']['rawAttributes']);_0x1577eb[_0x8300('0x44')]=_[_0x8300('0x45')](_0x5de958['query']);_0x1577eb[_0x8300('0x46')]=_['intersection'](_0x1577eb[_0x8300('0x43')],_0x1577eb[_0x8300('0x44')]);_0x479355['attributes']=_['intersection'](_0x1577eb['model'],qs[_0x8300('0x49')](_0x5de958[_0x8300('0x44')][_0x8300('0x49')]));_0x479355[_0x8300('0x48')]=_0x479355[_0x8300('0x48')][_0x8300('0x4a')]?_0x479355['attributes']:_0x1577eb[_0x8300('0x43')];_0x479355[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x5de958['query'][_0x8300('0x4d')]);_0x479355['where']=qs['filters'](_[_0x8300('0x4f')](_0x5de958['query'],_0x1577eb[_0x8300('0x46')]));if(_0x5de958[_0x8300('0x44')][_0x8300('0x50')]){_0x479355[_0x8300('0x4e')]=_['merge'](_0x479355[_0x8300('0x4e')],{'$or':_[_0x8300('0x3d')](_0x479355['attributes'],function(_0x18c5e3){var _0x20549b={};_0x20549b[_0x18c5e3]={'$like':'%'+_0x5de958[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x20549b;})});}_0x479355=_[_0x8300('0x51')]({},_0x479355,_0x5de958[_0x8300('0x52')]);return _0x57868b[_0x8300('0x7f')](_0x479355);}})['then'](function(_0x39ee9a){if(_0x39ee9a){_0x488bfe=_0x39ee9a[_0x8300('0x4a')];if(!_0x5de958[_0x8300('0x44')][_0x8300('0x4b')](_0x8300('0x6f'))){_0x479355[_0x8300('0x2c')]=qs[_0x8300('0x2c')](_0x5de958[_0x8300('0x44')]['limit']);_0x479355[_0x8300('0x2a')]=qs[_0x8300('0x2a')](_0x5de958[_0x8300('0x44')][_0x8300('0x2a')]);}return _0x57868b[_0x8300('0x7f')](_0x479355);}})[_0x8300('0x34')](function(_0x526af6){if(_0x526af6){return _0x526af6?{'count':_0x488bfe,'rows':_0x526af6}:null;}})[_0x8300('0x34')](respondWithResult(_0x2e8bfa,null))['catch'](handleError(_0x2e8bfa,null));};function Extension(_0x31302f,_0x177de3,_0x2fd9ee,_0x4b8de5){this['context']=_0x8300('0x80');this[_0x8300('0x81')]=_0x31302f[_0x8300('0x82')];this[_0x8300('0x83')]=_0x4b8de5;this[_0x8300('0x41')]=_0x8300('0x84');this[_0x8300('0x85')]=_0x8300('0x86');this[_0x8300('0x64')]=_0x31302f['id'];this[_0x8300('0x7e')]=_0x177de3;this[_0x8300('0x87')]=_0x2fd9ee;}function createExtensionsReciveFax(_0x1fc285){var _0x127866=0x1;var _0x30f63a=[];_0x30f63a['push'](new Extension(_0x1fc285,_0x127866,'',_0x8300('0x88')));_0x127866+=0x1;_0x30f63a['push'](new Extension(_0x1fc285,_0x127866,_0x8300('0x89'),'Set'));_0x127866+=0x1;for(var _0x59bf01 in _0x1fc285){if(_0x1fc285[_0x8300('0x4b')](_0x59bf01)&&(_0x59bf01==='ecm'||_0x59bf01===_0x8300('0x82')||_0x59bf01===_0x8300('0x8a')||_0x59bf01==='faxdetect'||_0x59bf01==='headerinfo'||_0x59bf01===_0x8300('0x8b')||_0x59bf01===_0x8300('0x8c')||_0x59bf01===_0x8300('0x8d')||_0x59bf01===_0x8300('0x8e'))){_0x30f63a[_0x8300('0x8f')](new Extension(_0x1fc285,_0x127866,_0x8300('0x90')+_0x59bf01+')='+_0x1fc285[_0x59bf01],'Set'));_0x127866+=0x1;}}_0x30f63a[_0x8300('0x8f')](new Extension(_0x1fc285,_0x127866,'6',_0x8300('0x91')));_0x127866+=0x1;_0x30f63a['push'](new Extension(_0x1fc285,_0x127866,_0x8300('0x92'),'ReceiveFax'));_0x127866=0x0;return _0x30f63a;}exports[_0x8300('0x93')]=function(_0x13f4bf,_0x3551df,_0x4af3f0){var _0x3c7432;return db[_0x8300('0x79')][_0x8300('0x7a')](function(_0x1a2c1a){return db['FaxAccount']['create'](_0x13f4bf[_0x8300('0x5c')],{'transaction':_0x1a2c1a})[_0x8300('0x34')](function(_0x4c16cf){_0x3c7432=_0x4c16cf[_0x8300('0x36')]({'plain':!![]});return db[_0x8300('0x94')][_0x8300('0x7c')](createExtensionsReciveFax(_0x3c7432),{'transaction':_0x1a2c1a});});})['then'](function(){return _0x3c7432;})['then'](respondWithResult(_0x3551df,null))[_0x8300('0x25')](handleError(_0x3551df,null));};exports[_0x8300('0x95')]=function(_0x209b9e,_0x10b0b6,_0x276f18){var _0x5638b0;return db[_0x8300('0x79')][_0x8300('0x7a')](function(_0x2d33a3){return db[_0x8300('0x3e')]['update'](_0x209b9e[_0x8300('0x5c')],{'where':{'id':_0x209b9e[_0x8300('0x5c')]['id']},'transaction':_0x2d33a3})[_0x8300('0x34')](function(_0x5d600f){return db[_0x8300('0x94')][_0x8300('0x35')]({'where':{'FaxAccountId':_0x209b9e[_0x8300('0x5c')]['id']},'transaction':_0x2d33a3})[_0x8300('0x34')](function(_0x271dcb){return db[_0x8300('0x94')][_0x8300('0x7c')](createExtensionsReciveFax(_[_0x8300('0x96')](_0x209b9e['body'],[_0x8300('0x97'),_0x8300('0x42'),'createdAt',_0x8300('0x98'),_0x8300('0x99'),_0x8300('0x9a')])),{'transaction':_0x2d33a3});});});})[_0x8300('0x34')](function(){return db[_0x8300('0x3e')][_0x8300('0x9b')](_0x209b9e[_0x8300('0x5c')]['id']);})[_0x8300('0x34')](respondWithResult(_0x10b0b6,null))[_0x8300('0x25')](handleError(_0x10b0b6,null));};exports['getMessages']=function(_0x3d25a2,_0x333fa2,_0x1603de){var _0x1d9475={'raw':!![],'where':{}};var _0x28270c={};var _0x26243d={'count':0x0,'rows':[]};return db['FaxAccount'][_0x8300('0x67')]({'where':{'id':_0x3d25a2[_0x8300('0x58')]['id']}})['then'](handleEntityNotFound(_0x333fa2,null))[_0x8300('0x34')](function(_0x17f35c){if(_0x17f35c){_0x28270c[_0x8300('0x43')]=_[_0x8300('0x45')](db[_0x8300('0x9c')][_0x8300('0x3f')]);_0x28270c['query']=_[_0x8300('0x45')](_0x3d25a2['query']);_0x28270c['filters']=_[_0x8300('0x47')](_0x28270c[_0x8300('0x43')],_0x28270c[_0x8300('0x44')]);_0x1d9475['attributes']=_[_0x8300('0x47')](_0x28270c[_0x8300('0x43')],qs[_0x8300('0x49')](_0x3d25a2[_0x8300('0x44')][_0x8300('0x49')]));_0x1d9475['attributes']=_0x1d9475[_0x8300('0x48')][_0x8300('0x4a')]?_0x1d9475[_0x8300('0x48')]:_0x28270c[_0x8300('0x43')];if(!_0x3d25a2[_0x8300('0x44')][_0x8300('0x4b')](_0x8300('0x6f'))){_0x1d9475[_0x8300('0x2c')]=qs[_0x8300('0x2c')](_0x3d25a2[_0x8300('0x44')][_0x8300('0x2c')]);_0x1d9475['offset']=qs[_0x8300('0x2a')](_0x3d25a2[_0x8300('0x44')][_0x8300('0x2a')]);}_0x1d9475[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x3d25a2['query'][_0x8300('0x4d')]);_0x1d9475[_0x8300('0x4e')]=qs[_0x8300('0x46')](_[_0x8300('0x4f')](_0x3d25a2[_0x8300('0x44')],_0x28270c[_0x8300('0x46')]));_0x1d9475[_0x8300('0x4e')][_0x8300('0x64')]=_0x17f35c['id'];if(_0x3d25a2[_0x8300('0x44')][_0x8300('0x50')]){_0x1d9475[_0x8300('0x4e')]=_[_0x8300('0x51')](_0x1d9475['where'],{'$or':_[_0x8300('0x3d')](_0x1d9475[_0x8300('0x48')],function(_0x3a54a2){var _0x2e75c1={};_0x2e75c1[_0x3a54a2]={'$like':'%'+_0x3d25a2[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x2e75c1;})});}if(_0x3d25a2[_0x8300('0x44')][_0x8300('0x9d')]){var _0x4a2ce9=_0x3d25a2[_0x8300('0x44')][_0x8300('0x9d')][_0x8300('0x9e')](',');var _0x3fdbdc={};_0x3fdbdc[_0x4a2ce9[0x0]]={'$gte':moment(_0x4a2ce9[0x1])[_0x8300('0x9f')]('YYYY-MM-DD\x20HH:mm:ss')};_0x1d9475['where']=_[_0x8300('0x51')](_0x1d9475[_0x8300('0x4e')],_0x3fdbdc);}_0x1d9475=_['merge']({},_0x1d9475,_0x3d25a2[_0x8300('0x52')]);return db['FaxMessage'][_0x8300('0x2d')]({'where':_0x1d9475[_0x8300('0x4e')]})['then'](function(_0x3e4038){_0x26243d['count']=_0x3e4038;if(_0x3d25a2[_0x8300('0x44')][_0x8300('0x53')]){_0x1d9475[_0x8300('0x54')]=[{'all':!![]}];}return db[_0x8300('0x9c')]['findAll'](_0x1d9475);})[_0x8300('0x34')](function(_0x4a791a){_0x26243d[_0x8300('0x56')]=_0x4a791a;return _0x26243d;});}})[_0x8300('0x34')](respondWithFilteredResult(_0x333fa2,_0x1d9475))[_0x8300('0x25')](handleError(_0x333fa2,null));};exports['send']=function(_0x5bcc26,_0x53db46,_0x36d021){var _0x4e831b,_0x1413dc={},_0x3b2522;if(_0x5bcc26[_0x8300('0x5c')]['to']){_0x3b2522=_0x5bcc26['body']['to'][0x0];}return db['FaxAccount'][_0x8300('0x5a')]({'where':{'id':_0x5bcc26['params']['id']},'include':[{'model':db[_0x8300('0xa0')],'as':'List','include':[{'model':db[_0x8300('0x70')],'as':'Contacts','where':{'fax':_0x3b2522},'limit':0x1,'order':[[_0x8300('0x98'),_0x8300('0xa1')]]}]}]})[_0x8300('0x34')](handleEntityNotFound(_0x53db46,null))['then'](function(_0x5627da){_0x4e831b=_0x5627da;if(_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')]&&_0x5bcc26['body'][_0x8300('0xa2')][_0x8300('0x4a')]){for(var _0xba255e=0x0;_0xba255e<_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')]['length'];_0xba255e+=0x1){_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')][_0xba255e]={'filename':_0x5bcc26['body'][_0x8300('0xa2')][_0xba255e]['name'],'id':_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')][_0xba255e]['id'],'path':path[_0x8300('0xa3')](config[_0x8300('0xa4')],_0x8300('0xa5'),_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')][_0xba255e][_0x8300('0xa6')])};}}return respondWithRpcPromise('CheckAfterSend',_0x8300('0xa7'),{'FaxAccountId':_[_0x8300('0xa8')](_0x5bcc26[_0x8300('0x58')]['id'])?undefined:_0x5bcc26[_0x8300('0x58')]['id'],'path':_[_0x8300('0xa8')](_0x5bcc26['body'][_0x8300('0xa2')][0x0]['path'])?undefined:_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')][0x0][_0x8300('0x7')],'fax':_[_0x8300('0xa8')](_0x5bcc26[_0x8300('0x5c')]['to'][0x0])?undefined:_0x5bcc26['body']['to'][0x0]},client9002);})[_0x8300('0x34')](function(){if(_0x4e831b){if(_[_0x8300('0xa8')](_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa9')])){_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa9')]=util[_0x8300('0x9f')](_0x8300('0xaa'),_0x4e831b['name'],_0x4e831b[_0x8300('0xab')]);}if(_0x4e831b[_0x8300('0xac')]){if(_0x4e831b[_0x8300('0xac')]['Contacts'][_0x8300('0x4a')]){return _0x4e831b[_0x8300('0xac')]['Contacts'][0x0];}else{return db[_0x8300('0x70')]['create'](_[_0x8300('0x16')](_0x5bcc26[_0x8300('0x5c')],{'firstName':_0x5bcc26[_0x8300('0x5c')]['to'][0x0],'phone':_0x5bcc26[_0x8300('0x5c')]['to'][0x0],'fax':_0x5bcc26[_0x8300('0x5c')]['to'][0x0],'ListId':_0x4e831b[_0x8300('0x9a')]}));}}else{throw new Error(_0x8300('0xad'));}}else{throw new Error(_0x8300('0xae'));}})['then'](function(_0x104578){if(_0x104578){return db[_0x8300('0x6d')][_0x8300('0x5a')]({'where':{'ContactId':_0x104578['id'],'closed':![],'FaxAccountId':_0x4e831b['id']}})[_0x8300('0x34')](function(_0x158413){if(_0x158413){return[_0x158413,![]];}return db[_0x8300('0x6d')]['create']({'UserId':_0x5bcc26[_0x8300('0x5d')]['id'],'ContactId':_0x104578['id'],'FaxAccountId':_0x4e831b['id'],'fax':_0x5bcc26['body']['to'][0x0],'firstMsgDirection':_0x8300('0xaf'),'Messages':[_[_0x8300('0x51')](_0x5bcc26['body'],{'read':![],'body':_0x5bcc26[_0x8300('0x5c')]['attachments'][0x0][_0x8300('0xb0')],'FaxAccountId':_0x4e831b['id'],'UserId':_0x5bcc26[_0x8300('0x5d')]['id'],'ContactId':_0x104578['id'],'AttachmentId':_0x5bcc26['body'][_0x8300('0xa2')][0x0]['id']})]},{'include':[{'model':db[_0x8300('0x9c')],'as':'Messages'}]})[_0x8300('0x34')](function(_0x1ebfb5){return[_0x1ebfb5,!![]];});});}else{throw new Error(_0x8300('0xb1'));}})[_0x8300('0xb2')](function(_0x20ab30,_0x5411a8){if(_0x5411a8){return _0x20ab30;}return db[_0x8300('0x9c')][_0x8300('0x5b')]({'direction':'out','read':![],'body':_0x5bcc26['body']['attachments'][0x0][_0x8300('0xb0')],'FaxAccountId':_0x4e831b['id'],'FaxInteractionId':_0x20ab30['id'],'UserId':_0x5bcc26['user']['id'],'ContactId':_0x20ab30[_0x8300('0xb3')],'AttachmentId':_0x5bcc26[_0x8300('0x5c')]['attachments'][0x0]['id']})[_0x8300('0x34')](function(_0x471445){_0x20ab30[_0x8300('0xb4')][_0x8300('0xb5')]=[];_0x20ab30[_0x8300('0xb4')][_0x8300('0xb5')][_0x8300('0x8f')](_0x471445[_0x8300('0xb4')]);return _0x20ab30;});})[_0x8300('0x34')](function(_0x4d5b5e){respondWithRpcPromise(_0x8300('0xb6'),_0x8300('0xb6'),{'FaxAccountId':_[_0x8300('0xa8')](_0x5bcc26[_0x8300('0x58')]['id'])?undefined:_0x5bcc26[_0x8300('0x58')]['id'],'path':_['isNil'](_0x5bcc26['body'][_0x8300('0xa2')][0x0][_0x8300('0x7')])?undefined:_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')][0x0][_0x8300('0x7')],'fax':_[_0x8300('0xa8')](_0x5bcc26['body']['to'][0x0])?undefined:_0x5bcc26[_0x8300('0x5c')]['to'][0x0],'AttachmentId':_0x5bcc26[_0x8300('0x5c')][_0x8300('0xa2')][0x0]['id']},client9002)['then'](function(_0x410c1b){logger['info'](_0x8300('0xb7'),_0x410c1b);})[_0x8300('0x25')](function(_0x1ba3f4){logger[_0x8300('0x1d')](_0x8300('0xb7'),_0x1ba3f4);});return _0x4d5b5e;})['then'](respondWithResult(_0x53db46,null))['catch'](handleError(_0x53db46,null));};exports[_0x8300('0xb8')]=function(_0x55d1dd,_0x5d6e03,_0x3c4fc6){return db[_0x8300('0x3e')][_0x8300('0x5a')]({'where':{'id':_0x55d1dd[_0x8300('0x58')]['id']}})['then'](handleEntityNotFound(_0x5d6e03,null))[_0x8300('0x34')](function(_0x21266c){if(_0x21266c){return _0x21266c['addAgents'](_0x55d1dd[_0x8300('0x5c')]['ids'],_[_0x8300('0x96')](_0x55d1dd[_0x8300('0x5c')],[_0x8300('0x6b'),'id'])||{})[_0x8300('0xb2')](function(_0x426482){for(var _0x27b4e7=0x0;_0x27b4e7<_0x55d1dd[_0x8300('0x5c')]['ids'][_0x8300('0x4a')];_0x27b4e7+=0x1){socket[_0x8300('0xb9')](_0x8300('0xba'),{'UserId':Number(_0x55d1dd[_0x8300('0x5c')][_0x8300('0x6b')][_0x27b4e7]),'FaxAccountId':Number(_0x55d1dd['params']['id'])});}return _0x426482;});}})[_0x8300('0x34')](respondWithResult(_0x5d6e03,null))[_0x8300('0x25')](handleError(_0x5d6e03,null));};exports['removeAgents']=function(_0x46140e,_0x5b39c8,_0xbc7168){return db[_0x8300('0x3e')][_0x8300('0x5a')]({'where':{'id':_0x46140e[_0x8300('0x58')]['id']}})['then'](handleEntityNotFound(_0x5b39c8,null))[_0x8300('0x34')](function(_0x265c16){if(_0x265c16){return _0x265c16[_0x8300('0xbb')](_0x46140e[_0x8300('0x44')][_0x8300('0x6b')])[_0x8300('0x34')](function(){if(_[_0x8300('0xbc')](_0x46140e[_0x8300('0x44')]['ids'])){for(var _0x4f7ec0=0x0;_0x4f7ec0<_0x46140e[_0x8300('0x44')][_0x8300('0x6b')]['length'];_0x4f7ec0+=0x1){socket[_0x8300('0xb9')]('userFaxAccount:remove',{'UserId':Number(_0x46140e[_0x8300('0x44')][_0x8300('0x6b')][_0x4f7ec0]),'FaxAccountId':Number(_0x46140e['params']['id'])});}}else{socket['emit'](_0x8300('0xbd'),{'UserId':Number(_0x46140e[_0x8300('0x44')][_0x8300('0x6b')]),'FaxAccountId':Number(_0x46140e[_0x8300('0x58')]['id'])});}});}})['then'](respondWithStatusCode(_0x5b39c8,null))['catch'](handleError(_0x5b39c8,null));};exports[_0x8300('0xbe')]=function(_0x37c584,_0xbd112b,_0x981bfe){var _0x39e6a9={};var _0x1fb81c={};var _0x52d53d;var _0x93bd0d;return db[_0x8300('0x3e')][_0x8300('0x67')]({'where':{'id':_0x37c584[_0x8300('0x58')]['id']}})[_0x8300('0x34')](handleEntityNotFound(_0xbd112b,null))[_0x8300('0x34')](function(_0x4b8db9){if(_0x4b8db9){_0x52d53d=_0x4b8db9;_0x1fb81c['model']=_[_0x8300('0x45')](db[_0x8300('0x72')][_0x8300('0x3f')]);_0x1fb81c['query']=_['keys'](_0x37c584[_0x8300('0x44')]);_0x1fb81c[_0x8300('0x46')]=_['intersection'](_0x1fb81c[_0x8300('0x43')],_0x1fb81c[_0x8300('0x44')]);_0x39e6a9[_0x8300('0x48')]=_[_0x8300('0x47')](_0x1fb81c[_0x8300('0x43')],qs['fields'](_0x37c584['query']['fields']));_0x39e6a9[_0x8300('0x48')]=_0x39e6a9[_0x8300('0x48')][_0x8300('0x4a')]?_0x39e6a9[_0x8300('0x48')]:_0x1fb81c[_0x8300('0x43')];_0x39e6a9[_0x8300('0x4c')]=qs[_0x8300('0x4d')](_0x37c584[_0x8300('0x44')][_0x8300('0x4d')]);_0x39e6a9['where']=qs['filters'](_['pick'](_0x37c584['query'],_0x1fb81c[_0x8300('0x46')]));if(_0x37c584[_0x8300('0x44')][_0x8300('0x50')]){_0x39e6a9[_0x8300('0x4e')]=_['merge'](_0x39e6a9[_0x8300('0x4e')],{'$or':_[_0x8300('0x3d')](_0x39e6a9[_0x8300('0x48')],function(_0x56120a){var _0x1d0426={};_0x1d0426[_0x56120a]={'$like':'%'+_0x37c584[_0x8300('0x44')][_0x8300('0x50')]+'%'};return _0x1d0426;})});}_0x39e6a9=_[_0x8300('0x51')]({},_0x39e6a9,_0x37c584['options']);return _0x52d53d[_0x8300('0xbe')](_0x39e6a9);}})[_0x8300('0x34')](function(_0x5c6ea5){if(_0x5c6ea5){_0x93bd0d=_0x5c6ea5[_0x8300('0x4a')];if(!_0x37c584[_0x8300('0x44')][_0x8300('0x4b')](_0x8300('0x6f'))){_0x39e6a9['limit']=qs[_0x8300('0x2c')](_0x37c584['query']['limit']);_0x39e6a9[_0x8300('0x2a')]=qs[_0x8300('0x2a')](_0x37c584['query'][_0x8300('0x2a')]);}return _0x52d53d[_0x8300('0xbe')](_0x39e6a9);}})[_0x8300('0x34')](function(_0x49caef){if(_0x49caef){return _0x49caef?{'count':_0x93bd0d,'rows':_0x49caef}:null;}})[_0x8300('0x34')](respondWithResult(_0xbd112b,null))['catch'](handleError(_0xbd112b,null));};
\ No newline at end of file
+var _0xa31d=['gateway','faxdetect','headerinfo','maxrate','minrate','t38timeout','FAXOPT(','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','VoiceExtension','updatedAt','ListId','findById','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','List','Contacts','DESC','attachments','join','basename','CheckAfterSend','path','isNil','from','fax','List\x20not\x20found','Send\x20Fax\x20failed','filename','spread','out','ContactId','dataValues','Messages','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','register','jayson/promise','client','http','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','get','FaxAccounts','stack','name','send','index','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','Pause','length','create','user','role','UserProfileSection','find','userProfileId','autoAssociation','body','params','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','hasOwnProperty','order','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','FaxInteraction','addInteraction','omit','getInteractions','CmContact','User','fullname','internal','Tag','color','tag','sequelize','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','from-voip-provider','exten','localstationid','app','system','description','Fax\x20Extension','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0xa31d,0x1b9));var _0xda31=function(_0x3d2e4b,_0x1f6653){_0x3d2e4b=_0x3d2e4b-0x0;var _0x509e78=_0xa31d[_0x3d2e4b];return _0x509e78;};'use strict';var emlformat=require(_0xda31('0x0'));var rimraf=require(_0xda31('0x1'));var zipdir=require(_0xda31('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xda31('0x3'));var moment=require(_0xda31('0x4'));var BPromise=require(_0xda31('0x5'));var Mustache=require(_0xda31('0x6'));var util=require(_0xda31('0x7'));var path=require('path');var sox=require(_0xda31('0x8'));var csv=require(_0xda31('0x9'));var ejs=require(_0xda31('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xda31('0xb'));var squel=require(_0xda31('0xc'));var crypto=require(_0xda31('0xd'));var jsforce=require(_0xda31('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xda31('0x9'));var querystring=require(_0xda31('0xf'));var Papa=require(_0xda31('0x10'));var Redis=require(_0xda31('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xda31('0x12'));var as=require(_0xda31('0x13'));var hardwareService=require(_0xda31('0x14'));var logger=require(_0xda31('0x15'))(_0xda31('0x16'));var utils=require('../../config/utils');var config=require(_0xda31('0x17'));var licenseUtil=require(_0xda31('0x18'));var db=require(_0xda31('0x19'))['db'];config['redis']=_[_0xda31('0x1a')](config[_0xda31('0x1b')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xda31('0x1b')]));require('./faxAccount.socket')[_0xda31('0x1c')](socket);var jayson=require(_0xda31('0x1d'));var client=jayson[_0xda31('0x1e')][_0xda31('0x1f')]({'port':0x232c});var client9002=jayson[_0xda31('0x1e')][_0xda31('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x4de649,_0x5ab681,_0x1f4413,_0x16fd7c){return new BPromise(function(_0x3c1d6f,_0xa8773e){var _0x449729=_0x16fd7c||client;return _0x449729[_0xda31('0x20')](_0x4de649,_0x1f4413)['then'](function(_0x382d51){logger[_0xda31('0x21')](_0xda31('0x22'),_0x5ab681,_0xda31('0x23'));logger[_0xda31('0x24')](_0xda31('0x25'),_0x5ab681,_0xda31('0x23'),JSON[_0xda31('0x26')](_0x382d51));if(_0x382d51['error']){if(_0x382d51[_0xda31('0x27')][_0xda31('0x28')]===0x1f4){logger[_0xda31('0x27')](_0xda31('0x22'),_0x5ab681,_0x382d51[_0xda31('0x27')][_0xda31('0x29')]);return _0xa8773e(_0x382d51['error'][_0xda31('0x29')]);}logger['error'](_0xda31('0x22'),_0x5ab681,_0x382d51[_0xda31('0x27')][_0xda31('0x29')]);return _0x3c1d6f(_0x382d51['error'][_0xda31('0x29')]);}else{logger[_0xda31('0x21')](_0xda31('0x22'),_0x5ab681,_0xda31('0x23'));_0x3c1d6f(_0x382d51[_0xda31('0x2a')][_0xda31('0x29')]);}})[_0xda31('0x2b')](function(_0x40b64e){logger[_0xda31('0x27')]('FaxAccount,\x20%s,\x20%s',_0x5ab681,_0x40b64e);_0xa8773e(_0x40b64e);});});}function respondWithStatusCode(_0x23c161,_0x1e9150){_0x1e9150=_0x1e9150||0xcc;return function(_0x2308eb){if(_0x2308eb){return _0x23c161[_0xda31('0x2c')](_0x1e9150);}return _0x23c161[_0xda31('0x2d')](_0x1e9150)[_0xda31('0x2e')]();};}function respondWithResult(_0x4b14ef,_0xea061a){_0xea061a=_0xea061a||0xc8;return function(_0xe3f95a){if(_0xe3f95a){return _0x4b14ef[_0xda31('0x2d')](_0xea061a)['json'](_0xe3f95a);}};}function respondWithFilteredResult(_0x187a01,_0x460ef5){return function(_0x37889e){if(_0x37889e){var _0x21d0fa=typeof _0x460ef5['offset']===_0xda31('0x2f')&&typeof _0x460ef5[_0xda31('0x30')]===_0xda31('0x2f');var _0x427d7b=_0x37889e[_0xda31('0x31')];var _0x4055d0=_0x21d0fa?0x0:_0x460ef5[_0xda31('0x32')];var _0x131553=_0x21d0fa?_0x37889e[_0xda31('0x31')]:_0x460ef5[_0xda31('0x32')]+_0x460ef5[_0xda31('0x30')];var _0x3623ff;if(_0x131553>=_0x427d7b){_0x131553=_0x427d7b;_0x3623ff=0xc8;}else{_0x3623ff=0xce;}_0x187a01[_0xda31('0x2d')](_0x3623ff);return _0x187a01[_0xda31('0x33')](_0xda31('0x34'),_0x4055d0+'-'+_0x131553+'/'+_0x427d7b)['json'](_0x37889e);}return null;};}function patchUpdates(_0x14489c){return function(_0x1b954e){try{jsonpatch['apply'](_0x1b954e,_0x14489c,!![]);}catch(_0x2ab9ab){return BPromise[_0xda31('0x35')](_0x2ab9ab);}return _0x1b954e[_0xda31('0x36')]();};}function saveUpdates(_0x143a29,_0x2fedb5){return function(_0x790f49){if(_0x790f49){return _0x790f49[_0xda31('0x37')](_0x143a29)[_0xda31('0x38')](function(_0x3f3dd7){return _0x3f3dd7;});}return null;};}function removeEntity(_0x3c49e5,_0x4bc1a5){return function(_0x30fa77){if(_0x30fa77){return _0x30fa77[_0xda31('0x39')]()[_0xda31('0x38')](function(){var _0x5038ec=_0x30fa77[_0xda31('0x3a')]({'plain':!![]});var _0x1bb8db=_0xda31('0x3b');return db['UserProfileResource']['destroy']({'where':{'type':_0x1bb8db,'resourceId':_0x5038ec['id']}})[_0xda31('0x38')](function(){return _0x30fa77;});})[_0xda31('0x38')](function(){_0x3c49e5[_0xda31('0x2d')](0xcc)[_0xda31('0x2e')]();});}};}function handleEntityNotFound(_0x2d18da,_0x54269b){return function(_0x533323){if(!_0x533323){_0x2d18da[_0xda31('0x2c')](0x194);}return _0x533323;};}function handleError(_0x395e9a,_0x328257){_0x328257=_0x328257||0x1f4;return function(_0x581e65){logger[_0xda31('0x27')](_0x581e65[_0xda31('0x3c')]);if(_0x581e65[_0xda31('0x3d')]){delete _0x581e65[_0xda31('0x3d')];}_0x395e9a[_0xda31('0x2d')](_0x328257)[_0xda31('0x3e')](_0x581e65);};}exports[_0xda31('0x3f')]=function(_0x40fb5a,_0x33fb51){var _0xb2e597={'include':[{'model':db['Pause'],'as':_0xda31('0x40')}]},_0x267999={},_0x22d22a={'count':0x0,'rows':[]};var _0x1ea536=_[_0xda31('0x41')](db[_0xda31('0x42')][_0xda31('0x43')],function(_0x3032f2){return{'name':_0x3032f2[_0xda31('0x44')],'type':_0x3032f2[_0xda31('0x45')][_0xda31('0x46')]};});_0x267999['model']=_[_0xda31('0x41')](_0x1ea536,'name');_0x267999[_0xda31('0x47')]=_[_0xda31('0x48')](_0x40fb5a[_0xda31('0x47')]);_0x267999[_0xda31('0x49')]=_[_0xda31('0x4a')](_0x267999[_0xda31('0x4b')],_0x267999[_0xda31('0x47')]);_0xb2e597[_0xda31('0x4c')]=_[_0xda31('0x4a')](_0x267999['model'],qs[_0xda31('0x4d')](_0x40fb5a[_0xda31('0x47')][_0xda31('0x4d')]));_0xb2e597[_0xda31('0x4c')]=_0xb2e597[_0xda31('0x4c')]['length']?_0xb2e597[_0xda31('0x4c')]:_0x267999['model'];if(!_0x40fb5a[_0xda31('0x47')]['hasOwnProperty'](_0xda31('0x4e'))){_0xb2e597[_0xda31('0x30')]=qs[_0xda31('0x30')](_0x40fb5a[_0xda31('0x47')]['limit']);_0xb2e597[_0xda31('0x32')]=qs['offset'](_0x40fb5a[_0xda31('0x47')][_0xda31('0x32')]);}_0xb2e597['order']=qs[_0xda31('0x4f')](_0x40fb5a[_0xda31('0x47')][_0xda31('0x4f')]);_0xb2e597[_0xda31('0x50')]=qs[_0xda31('0x49')](_[_0xda31('0x51')](_0x40fb5a[_0xda31('0x47')],_0x267999[_0xda31('0x49')]),_0x1ea536);if(_0x40fb5a[_0xda31('0x47')]['filter']){_0xb2e597[_0xda31('0x50')]=_[_0xda31('0x52')](_0xb2e597[_0xda31('0x50')],{'$or':_['map'](_0x1ea536,function(_0x73ab9){if(_0x73ab9[_0xda31('0x45')]!==_0xda31('0x53')){var _0x26a2a4={};_0x26a2a4[_0x73ab9[_0xda31('0x3d')]]={'$like':'%'+_0x40fb5a[_0xda31('0x47')][_0xda31('0x54')]+'%'};return _0x26a2a4;}})});}_0xb2e597=_[_0xda31('0x52')]({},_0xb2e597,_0x40fb5a[_0xda31('0x55')]);var _0x5645a2={'where':_0xb2e597['where']};return db[_0xda31('0x42')][_0xda31('0x31')](_0x5645a2)[_0xda31('0x38')](function(_0x543790){_0x22d22a[_0xda31('0x31')]=_0x543790;if(_0x40fb5a[_0xda31('0x47')][_0xda31('0x56')]){_0xb2e597[_0xda31('0x57')]=[{'all':!![]}];}return db[_0xda31('0x42')][_0xda31('0x58')](_0xb2e597);})[_0xda31('0x38')](function(_0x21fcd5){_0x22d22a[_0xda31('0x59')]=_0x21fcd5;return _0x22d22a;})['then'](respondWithFilteredResult(_0x33fb51,_0xb2e597))[_0xda31('0x2b')](handleError(_0x33fb51,null));};exports[_0xda31('0x5a')]=function(_0x3d13a4,_0x1d716e){var _0x3070ca={'raw':![],'where':{'id':_0x3d13a4['params']['id']},'include':[{'model':db[_0xda31('0x5b')],'as':_0xda31('0x40')}]},_0x33e9bf={};_0x33e9bf[_0xda31('0x4b')]=_[_0xda31('0x48')](db[_0xda31('0x42')][_0xda31('0x43')]);_0x33e9bf[_0xda31('0x47')]=_[_0xda31('0x48')](_0x3d13a4[_0xda31('0x47')]);_0x33e9bf[_0xda31('0x49')]=_[_0xda31('0x4a')](_0x33e9bf[_0xda31('0x4b')],_0x33e9bf[_0xda31('0x47')]);_0x3070ca[_0xda31('0x4c')]=_[_0xda31('0x4a')](_0x33e9bf['model'],qs[_0xda31('0x4d')](_0x3d13a4['query'][_0xda31('0x4d')]));_0x3070ca['attributes']=_0x3070ca[_0xda31('0x4c')][_0xda31('0x5c')]?_0x3070ca[_0xda31('0x4c')]:_0x33e9bf[_0xda31('0x4b')];if(_0x3d13a4['query'][_0xda31('0x56')]){_0x3070ca[_0xda31('0x57')]=[{'all':!![]}];}_0x3070ca=_['merge']({},_0x3070ca,_0x3d13a4[_0xda31('0x55')]);return db[_0xda31('0x42')]['find'](_0x3070ca)['then'](handleEntityNotFound(_0x1d716e,null))['then'](respondWithResult(_0x1d716e,null))['catch'](handleError(_0x1d716e,null));};exports[_0xda31('0x5d')]=function(_0x4842cf,_0x589c83){return db[_0xda31('0x42')][_0xda31('0x5d')](_0x4842cf['body'],{})[_0xda31('0x38')](function(_0x297dec){var _0x1ba40a=_0x4842cf[_0xda31('0x5e')][_0xda31('0x3a')]({'plain':!![]});if(!_0x1ba40a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1ba40a[_0xda31('0x5f')]===_0xda31('0x5e')){var _0x5290f8=_0x297dec[_0xda31('0x3a')]({'plain':!![]});var _0x535b2f=_0xda31('0x3b');return db[_0xda31('0x60')][_0xda31('0x61')]({'where':{'name':_0x535b2f,'userProfileId':_0x1ba40a[_0xda31('0x62')]},'raw':!![]})[_0xda31('0x38')](function(_0x4d2223){if(_0x4d2223&&_0x4d2223[_0xda31('0x63')]===0x0){return db['UserProfileResource'][_0xda31('0x5d')]({'name':_0x5290f8[_0xda31('0x3d')],'resourceId':_0x5290f8['id'],'type':_0x4d2223[_0xda31('0x3d')],'sectionId':_0x4d2223['id']},{})[_0xda31('0x38')](function(){return _0x297dec;});}else{return _0x297dec;}})['catch'](function(_0x5ea34d){logger[_0xda31('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5ea34d);throw _0x5ea34d;});}return _0x297dec;})[_0xda31('0x38')](respondWithResult(_0x589c83,0xc9))[_0xda31('0x2b')](handleError(_0x589c83,null));};exports[_0xda31('0x37')]=function(_0x483d61,_0x597695){if(_0x483d61[_0xda31('0x64')]['id']){delete _0x483d61['body']['id'];}return db[_0xda31('0x42')][_0xda31('0x61')]({'where':{'id':_0x483d61['params']['id']},'include':[{'model':db['Pause'],'as':_0xda31('0x40')}]})[_0xda31('0x38')](handleEntityNotFound(_0x597695,null))[_0xda31('0x38')](saveUpdates(_0x483d61[_0xda31('0x64')],null))['then'](respondWithResult(_0x597695,null))[_0xda31('0x2b')](handleError(_0x597695,null));};exports['destroy']=function(_0x2666c3,_0x16a791){return db['FaxAccount'][_0xda31('0x61')]({'where':{'id':_0x2666c3[_0xda31('0x65')]['id']}})[_0xda31('0x38')](handleEntityNotFound(_0x16a791,null))[_0xda31('0x38')](removeEntity(_0x16a791,null))['catch'](handleError(_0x16a791,null));};exports['describe']=function(_0x33abef,_0x4ccf02){return db[_0xda31('0x42')][_0xda31('0x66')]()[_0xda31('0x38')](respondWithResult(_0x4ccf02,null))[_0xda31('0x2b')](handleError(_0x4ccf02,null));};exports[_0xda31('0x67')]=function(_0x4e9110,_0x53f805,_0x51a952){if(_0x4e9110[_0xda31('0x64')]['id']){delete _0x4e9110[_0xda31('0x64')]['id'];}return db['FaxAccount'][_0xda31('0x61')]({'where':{'id':_0x4e9110['params']['id']}})[_0xda31('0x38')](handleEntityNotFound(_0x53f805,null))[_0xda31('0x38')](function(_0x5b5483){if(_0x5b5483){_0x4e9110['body'][_0xda31('0x68')]=_0x5b5483['id'];return db[_0xda31('0x69')][_0xda31('0x5d')](_0x4e9110['body']);}})[_0xda31('0x38')](respondWithResult(_0x53f805,null))[_0xda31('0x2b')](handleError(_0x53f805,null));};exports[_0xda31('0x6a')]=function(_0x38881f,_0x1e0978,_0x199d34){var _0x4d098f={'raw':![],'where':{}};var _0x428d5e={};var _0x4ac372={'count':0x0,'rows':[]};return db[_0xda31('0x42')][_0xda31('0x6b')]({'where':{'id':_0x38881f[_0xda31('0x65')]['id']}})['then'](handleEntityNotFound(_0x1e0978,null))[_0xda31('0x38')](function(_0x20bdc3){if(_0x20bdc3){_0x428d5e[_0xda31('0x4b')]=_[_0xda31('0x48')](db[_0xda31('0x69')][_0xda31('0x43')]);_0x428d5e[_0xda31('0x47')]=_[_0xda31('0x48')](_0x38881f[_0xda31('0x47')]);_0x428d5e['filters']=_[_0xda31('0x4a')](_0x428d5e[_0xda31('0x4b')],_0x428d5e[_0xda31('0x47')]);_0x4d098f[_0xda31('0x4c')]=_[_0xda31('0x4a')](_0x428d5e[_0xda31('0x4b')],qs['fields'](_0x38881f['query'][_0xda31('0x4d')]));_0x4d098f[_0xda31('0x4c')]=_0x4d098f['attributes'][_0xda31('0x5c')]?_0x4d098f[_0xda31('0x4c')]:_0x428d5e[_0xda31('0x4b')];if(!_0x38881f[_0xda31('0x47')][_0xda31('0x6c')](_0xda31('0x4e'))){_0x4d098f[_0xda31('0x30')]=qs['limit'](_0x38881f[_0xda31('0x47')]['limit']);_0x4d098f[_0xda31('0x32')]=qs[_0xda31('0x32')](_0x38881f[_0xda31('0x47')]['offset']);}_0x4d098f[_0xda31('0x6d')]=qs[_0xda31('0x4f')](_0x38881f[_0xda31('0x47')][_0xda31('0x4f')]);_0x4d098f[_0xda31('0x50')]=qs[_0xda31('0x49')](_[_0xda31('0x51')](_0x38881f[_0xda31('0x47')],_0x428d5e[_0xda31('0x49')]));_0x4d098f['where'][_0xda31('0x68')]=_0x20bdc3['id'];if(_0x38881f[_0xda31('0x47')][_0xda31('0x54')]){_0x4d098f[_0xda31('0x50')]=_[_0xda31('0x52')](_0x4d098f[_0xda31('0x50')],{'$or':_[_0xda31('0x41')](_0x4d098f[_0xda31('0x4c')],function(_0x3ee1c1){var _0x28612c={};_0x28612c[_0x3ee1c1]={'$like':'%'+_0x38881f[_0xda31('0x47')][_0xda31('0x54')]+'%'};return _0x28612c;})});}_0x4d098f=_['merge']({},_0x4d098f,_0x38881f[_0xda31('0x55')]);return db[_0xda31('0x69')][_0xda31('0x31')]({'where':_0x4d098f[_0xda31('0x50')]})[_0xda31('0x38')](function(_0x3bcb7e){_0x4ac372[_0xda31('0x31')]=_0x3bcb7e;if(_0x38881f[_0xda31('0x47')][_0xda31('0x56')]){_0x4d098f[_0xda31('0x57')]=[{'all':!![]}];}return db[_0xda31('0x69')]['findAll'](_0x4d098f);})[_0xda31('0x38')](function(_0x157424){_0x4ac372[_0xda31('0x59')]=_0x157424;return _0x4ac372;});}})[_0xda31('0x38')](respondWithFilteredResult(_0x1e0978,_0x4d098f))['catch'](handleError(_0x1e0978,null));};exports[_0xda31('0x6e')]=function(_0x8f795a,_0x55b446,_0x493758){return db['FaxAccount'][_0xda31('0x61')]({'where':{'id':_0x8f795a[_0xda31('0x65')]['id']}})[_0xda31('0x38')](handleEntityNotFound(_0x55b446,null))[_0xda31('0x38')](function(_0x36fce2){if(_0x36fce2){return _0x36fce2[_0xda31('0x6e')](_0x8f795a['query'][_0xda31('0x6f')]);}})['then'](respondWithStatusCode(_0x55b446,null))[_0xda31('0x2b')](handleError(_0x55b446,null));};exports[_0xda31('0x70')]=function(_0x18d12f,_0x2c3535,_0x29ed99){if(_0x18d12f['body']['id']){delete _0x18d12f[_0xda31('0x64')]['id'];}return db[_0xda31('0x42')][_0xda31('0x61')]({'where':{'id':_0x18d12f[_0xda31('0x65')]['id']}})[_0xda31('0x38')](handleEntityNotFound(_0x2c3535,null))['then'](function(_0x941926){if(_0x941926){_0x18d12f[_0xda31('0x64')]['FaxAccountId']=_0x941926['id'];return db[_0xda31('0x71')][_0xda31('0x5d')](_0x18d12f[_0xda31('0x64')]);}})[_0xda31('0x38')](respondWithResult(_0x2c3535,null))[_0xda31('0x2b')](handleError(_0x2c3535,null));};exports[_0xda31('0x72')]=function(_0x22297c,_0x801172,_0xf47d40){var _0x20781f={'raw':![],'where':{}};var _0x1d3046={};var _0x46b635={'count':0x0,'rows':[]};return db['FaxAccount'][_0xda31('0x6b')]({'where':{'id':_0x22297c[_0xda31('0x65')]['id']}})[_0xda31('0x38')](handleEntityNotFound(_0x801172,null))['then'](function(_0x2e7307){if(_0x2e7307){_0x1d3046['model']=_['keys'](db['CannedAnswer']['rawAttributes']);_0x1d3046[_0xda31('0x47')]=_[_0xda31('0x48')](_0x22297c['query']);_0x1d3046[_0xda31('0x49')]=_[_0xda31('0x4a')](_0x1d3046[_0xda31('0x4b')],_0x1d3046[_0xda31('0x47')]);_0x20781f[_0xda31('0x4c')]=_[_0xda31('0x4a')](_0x1d3046['model'],qs[_0xda31('0x4d')](_0x22297c[_0xda31('0x47')][_0xda31('0x4d')]));_0x20781f['attributes']=_0x20781f[_0xda31('0x4c')][_0xda31('0x5c')]?_0x20781f['attributes']:_0x1d3046['model'];if(!_0x22297c[_0xda31('0x47')]['hasOwnProperty'](_0xda31('0x4e'))){_0x20781f[_0xda31('0x30')]=qs[_0xda31('0x30')](_0x22297c['query'][_0xda31('0x30')]);_0x20781f[_0xda31('0x32')]=qs[_0xda31('0x32')](_0x22297c['query'][_0xda31('0x32')]);}_0x20781f['order']=qs[_0xda31('0x4f')](_0x22297c[_0xda31('0x47')][_0xda31('0x4f')]);_0x20781f[_0xda31('0x50')]=qs['filters'](_[_0xda31('0x51')](_0x22297c[_0xda31('0x47')],_0x1d3046[_0xda31('0x49')]));_0x20781f[_0xda31('0x50')][_0xda31('0x68')]=_0x2e7307['id'];if(_0x22297c['query'][_0xda31('0x54')]){_0x20781f[_0xda31('0x50')]=_['merge'](_0x20781f[_0xda31('0x50')],{'$or':_[_0xda31('0x41')](_0x20781f['attributes'],function(_0x3c9867){var _0x4d7db3={};_0x4d7db3[_0x3c9867]={'$like':'%'+_0x22297c['query'][_0xda31('0x54')]+'%'};return _0x4d7db3;})});}_0x20781f=_[_0xda31('0x52')]({},_0x20781f,_0x22297c[_0xda31('0x55')]);return db['CannedAnswer'][_0xda31('0x31')]({'where':_0x20781f[_0xda31('0x50')]})[_0xda31('0x38')](function(_0x200133){_0x46b635['count']=_0x200133;if(_0x22297c[_0xda31('0x47')]['includeAll']){_0x20781f['include']=[{'all':!![]}];}return db[_0xda31('0x71')][_0xda31('0x58')](_0x20781f);})['then'](function(_0x4707f4){_0x46b635['rows']=_0x4707f4;return _0x46b635;});}})[_0xda31('0x38')](respondWithFilteredResult(_0x801172,_0x20781f))['catch'](handleError(_0x801172,null));};exports[_0xda31('0x73')]=function(_0x5c7a7e,_0x1e53dc,_0x188cf6){return db[_0xda31('0x42')]['find']({'where':{'id':_0x5c7a7e[_0xda31('0x65')]['id']}})[_0xda31('0x38')](handleEntityNotFound(_0x1e53dc,null))[_0xda31('0x38')](function(_0x55bcee){if(_0x55bcee){return _0x55bcee[_0xda31('0x73')](_0x5c7a7e['query'][_0xda31('0x6f')]);}})[_0xda31('0x38')](respondWithStatusCode(_0x1e53dc,null))['catch'](handleError(_0x1e53dc,null));};exports['addInteraction']=function(_0x946e0d,_0x4cee96,_0x4ff522){return db[_0xda31('0x74')][_0xda31('0x61')]({'where':{'id':_0x946e0d[_0xda31('0x65')]['id']}})[_0xda31('0x38')](handleEntityNotFound(_0x4cee96,null))[_0xda31('0x38')](function(_0x32c55f){if(_0x32c55f){return _0x32c55f[_0xda31('0x75')](_0x946e0d[_0xda31('0x64')][_0xda31('0x6f')],_[_0xda31('0x76')](_0x946e0d[_0xda31('0x64')],[_0xda31('0x6f'),'id'])||{});}})[_0xda31('0x38')](respondWithResult(_0x4cee96,null))[_0xda31('0x2b')](handleError(_0x4cee96,null));};exports[_0xda31('0x77')]=function(_0x19218e,_0x5a8d9a,_0x1c93d2){var _0x3bcc60={'raw':![],'where':{}};var _0x35fca4={};var _0x482d92={'count':0x0,'rows':[]};return db[_0xda31('0x42')][_0xda31('0x6b')]({'where':{'id':_0x19218e[_0xda31('0x65')]['id']}})[_0xda31('0x38')](handleEntityNotFound(_0x5a8d9a,null))[_0xda31('0x38')](function(_0x310320){if(_0x310320){_0x35fca4[_0xda31('0x4b')]=_['keys'](db['FaxInteraction'][_0xda31('0x43')]);_0x35fca4['query']=_[_0xda31('0x48')](_0x19218e[_0xda31('0x47')]);_0x35fca4[_0xda31('0x49')]=_[_0xda31('0x4a')](_0x35fca4[_0xda31('0x4b')],_0x35fca4[_0xda31('0x47')]);_0x3bcc60[_0xda31('0x4c')]=_[_0xda31('0x4a')](_0x35fca4['model'],qs[_0xda31('0x4d')](_0x19218e[_0xda31('0x47')][_0xda31('0x4d')]));_0x3bcc60[_0xda31('0x4c')]=_0x3bcc60[_0xda31('0x4c')][_0xda31('0x5c')]?_0x3bcc60[_0xda31('0x4c')]:_0x35fca4['model'];if(!_0x19218e[_0xda31('0x47')]['hasOwnProperty']('nolimit')){_0x3bcc60['limit']=qs[_0xda31('0x30')](_0x19218e['query'][_0xda31('0x30')]);_0x3bcc60[_0xda31('0x32')]=qs[_0xda31('0x32')](_0x19218e[_0xda31('0x47')][_0xda31('0x32')]);}_0x3bcc60[_0xda31('0x6d')]=qs['sort'](_0x19218e[_0xda31('0x47')][_0xda31('0x4f')]);_0x3bcc60[_0xda31('0x50')]=qs[_0xda31('0x49')](_[_0xda31('0x51')](_0x19218e[_0xda31('0x47')],_0x35fca4[_0xda31('0x49')]));_0x3bcc60[_0xda31('0x50')][_0xda31('0x68')]=_0x310320['id'];if(_0x19218e[_0xda31('0x47')][_0xda31('0x54')]){_0x3bcc60[_0xda31('0x50')]=_[_0xda31('0x52')](_0x3bcc60['where'],{'$or':_[_0xda31('0x41')](_0x3bcc60[_0xda31('0x4c')],function(_0x1407a4){var _0x2812e4={};_0x2812e4[_0x1407a4]={'$like':'%'+_0x19218e[_0xda31('0x47')][_0xda31('0x54')]+'%'};return _0x2812e4;})});}_0x3bcc60=_[_0xda31('0x52')]({},_0x3bcc60,_0x19218e[_0xda31('0x55')]);return db[_0xda31('0x74')][_0xda31('0x31')]({'where':_0x3bcc60[_0xda31('0x50')]})[_0xda31('0x38')](function(_0x573cb7){_0x482d92[_0xda31('0x31')]=_0x573cb7;if(_0x19218e[_0xda31('0x47')][_0xda31('0x56')]){_0x3bcc60[_0xda31('0x57')]=[{'model':db[_0xda31('0x78')],'as':'Contact','required':![]},{'model':db[_0xda31('0x79')],'as':'Owner','attributes':[_0xda31('0x3d'),_0xda31('0x7a'),_0xda31('0x7b')],'required':![]},{'model':db[_0xda31('0x7c')],'as':'Tags','attributes':['id','name',_0xda31('0x7d')],'where':_0x19218e[_0xda31('0x47')][_0xda31('0x7e')]?{'id':_0x19218e['query']['tag']}:undefined,'required':_0x19218e['query'][_0xda31('0x7e')]?!![]:![]}];}return db[_0xda31('0x74')]['findAll'](_0x3bcc60);})[_0xda31('0x38')](function(_0x2e7ac8){_0x482d92[_0xda31('0x59')]=_0x2e7ac8;return _0x482d92;});}})[_0xda31('0x38')](respondWithFilteredResult(_0x5a8d9a,_0x3bcc60))[_0xda31('0x2b')](handleError(_0x5a8d9a,null));};exports['addApplications']=function(_0x2d1ad0,_0x126fe1,_0x168c97){return db['FaxAccount']['findOne']({'where':{'id':_0x2d1ad0[_0xda31('0x65')]['id']}})[_0xda31('0x38')](handleEntityNotFound(_0x126fe1,null))[_0xda31('0x38')](function(_0x3dac70){if(_0x3dac70){return db[_0xda31('0x7f')][_0xda31('0x80')](function(_0x311da1){return db[_0xda31('0x81')][_0xda31('0x39')]({'where':{'FaxAccountId':_0x2d1ad0[_0xda31('0x65')]['id']},'transaction':_0x311da1})[_0xda31('0x38')](function(_0x1d5ec8){var _0x2ca132=_[_0xda31('0x41')](_0x2d1ad0[_0xda31('0x64')],function(_0x158ef1){_0x158ef1[_0xda31('0x68')]=_0x2d1ad0[_0xda31('0x65')]['id'];return _0x158ef1;});return db[_0xda31('0x81')][_0xda31('0x82')](_0x2ca132,{'transaction':_0x311da1});});})[_0xda31('0x38')](function(){return db[_0xda31('0x81')][_0xda31('0x83')]({'where':{'FaxAccountId':_0x2d1ad0['params']['id']},'order':_0xda31('0x84')});});}})['then'](respondWithResult(_0x126fe1,null))['catch'](handleError(_0x126fe1,null));};exports['getApplications']=function(_0x2b3a5a,_0x5d4384,_0x5e6d1a){var _0x4ad293={};var _0x59ee00={};var _0x35a58d;var _0x3a6d6a;return db[_0xda31('0x42')][_0xda31('0x6b')]({'where':{'id':_0x2b3a5a[_0xda31('0x65')]['id']}})[_0xda31('0x38')](handleEntityNotFound(_0x5d4384,null))[_0xda31('0x38')](function(_0x52646a){if(_0x52646a){_0x35a58d=_0x52646a;_0x59ee00[_0xda31('0x4b')]=_['keys'](db[_0xda31('0x81')][_0xda31('0x43')]);_0x59ee00[_0xda31('0x47')]=_[_0xda31('0x48')](_0x2b3a5a[_0xda31('0x47')]);_0x59ee00[_0xda31('0x49')]=_[_0xda31('0x4a')](_0x59ee00[_0xda31('0x4b')],_0x59ee00[_0xda31('0x47')]);_0x4ad293[_0xda31('0x4c')]=_[_0xda31('0x4a')](_0x59ee00[_0xda31('0x4b')],qs['fields'](_0x2b3a5a[_0xda31('0x47')][_0xda31('0x4d')]));_0x4ad293[_0xda31('0x4c')]=_0x4ad293[_0xda31('0x4c')]['length']?_0x4ad293[_0xda31('0x4c')]:_0x59ee00[_0xda31('0x4b')];_0x4ad293[_0xda31('0x6d')]=qs[_0xda31('0x4f')](_0x2b3a5a[_0xda31('0x47')]['sort']);_0x4ad293[_0xda31('0x50')]=qs['filters'](_[_0xda31('0x51')](_0x2b3a5a[_0xda31('0x47')],_0x59ee00[_0xda31('0x49')]));if(_0x2b3a5a[_0xda31('0x47')][_0xda31('0x54')]){_0x4ad293[_0xda31('0x50')]=_[_0xda31('0x52')](_0x4ad293[_0xda31('0x50')],{'$or':_[_0xda31('0x41')](_0x4ad293[_0xda31('0x4c')],function(_0x511245){var _0xce8646={};_0xce8646[_0x511245]={'$like':'%'+_0x2b3a5a[_0xda31('0x47')]['filter']+'%'};return _0xce8646;})});}_0x4ad293=_[_0xda31('0x52')]({},_0x4ad293,_0x2b3a5a[_0xda31('0x55')]);return _0x35a58d['getApplications'](_0x4ad293);}})[_0xda31('0x38')](function(_0x946edf){if(_0x946edf){_0x3a6d6a=_0x946edf[_0xda31('0x5c')];if(!_0x2b3a5a[_0xda31('0x47')]['hasOwnProperty']('nolimit')){_0x4ad293[_0xda31('0x30')]=qs[_0xda31('0x30')](_0x2b3a5a[_0xda31('0x47')]['limit']);_0x4ad293['offset']=qs['offset'](_0x2b3a5a[_0xda31('0x47')][_0xda31('0x32')]);}return _0x35a58d[_0xda31('0x85')](_0x4ad293);}})['then'](function(_0x800d56){if(_0x800d56){return _0x800d56?{'count':_0x3a6d6a,'rows':_0x800d56}:null;}})[_0xda31('0x38')](respondWithResult(_0x5d4384,null))['catch'](handleError(_0x5d4384,null));};function Extension(_0x5e27d9,_0x1c1047,_0x42cc70,_0x494f7f){this['context']=_0xda31('0x86');this[_0xda31('0x87')]=_0x5e27d9[_0xda31('0x88')];this[_0xda31('0x89')]=_0x494f7f;this[_0xda31('0x45')]=_0xda31('0x8a');this[_0xda31('0x8b')]=_0xda31('0x8c');this[_0xda31('0x68')]=_0x5e27d9['id'];this[_0xda31('0x84')]=_0x1c1047;this[_0xda31('0x8d')]=_0x42cc70;}function createExtensionsReciveFax(_0x40467f){var _0x3d9b82=0x1;var _0x2121b0=[];_0x2121b0[_0xda31('0x8e')](new Extension(_0x40467f,_0x3d9b82,'',_0xda31('0x8f')));_0x3d9b82+=0x1;_0x2121b0[_0xda31('0x8e')](new Extension(_0x40467f,_0x3d9b82,_0xda31('0x90'),_0xda31('0x91')));_0x3d9b82+=0x1;for(var _0x185d0d in _0x40467f){if(_0x40467f[_0xda31('0x6c')](_0x185d0d)&&(_0x185d0d===_0xda31('0x92')||_0x185d0d===_0xda31('0x88')||_0x185d0d===_0xda31('0x93')||_0x185d0d===_0xda31('0x94')||_0x185d0d===_0xda31('0x95')||_0x185d0d===_0xda31('0x96')||_0x185d0d===_0xda31('0x97')||_0x185d0d==='modem'||_0x185d0d===_0xda31('0x98'))){_0x2121b0['push'](new Extension(_0x40467f,_0x3d9b82,_0xda31('0x99')+_0x185d0d+')='+_0x40467f[_0x185d0d],_0xda31('0x91')));_0x3d9b82+=0x1;}}_0x2121b0[_0xda31('0x8e')](new Extension(_0x40467f,_0x3d9b82,'6',_0xda31('0x9a')));_0x3d9b82+=0x1;_0x2121b0['push'](new Extension(_0x40467f,_0x3d9b82,_0xda31('0x9b'),_0xda31('0x9c')));_0x3d9b82=0x0;return _0x2121b0;}exports[_0xda31('0x9d')]=function(_0x2283d2,_0x3b25bb,_0x4783de){var _0x5e7f2b;return db['sequelize']['transaction'](function(_0x1219ac){return db[_0xda31('0x42')][_0xda31('0x5d')](_0x2283d2[_0xda31('0x64')],{'transaction':_0x1219ac})[_0xda31('0x38')](function(_0x566012){_0x5e7f2b=_0x566012[_0xda31('0x3a')]({'plain':!![]});return db[_0xda31('0x9e')][_0xda31('0x82')](createExtensionsReciveFax(_0x5e7f2b),{'transaction':_0x1219ac});});})[_0xda31('0x38')](function(){return _0x5e7f2b;})[_0xda31('0x38')](respondWithResult(_0x3b25bb,null))['catch'](handleError(_0x3b25bb,null));};exports['updateAccountApplications']=function(_0x101ad8,_0xbd2252,_0x40dec7){var _0x49763e;return db[_0xda31('0x7f')]['transaction'](function(_0x12ed02){return db[_0xda31('0x42')][_0xda31('0x37')](_0x101ad8['body'],{'where':{'id':_0x101ad8['body']['id']},'transaction':_0x12ed02})[_0xda31('0x38')](function(_0x8ebef6){return db['VoiceExtension']['destroy']({'where':{'FaxAccountId':_0x101ad8[_0xda31('0x64')]['id']},'transaction':_0x12ed02})[_0xda31('0x38')](function(_0x563bb6){return db[_0xda31('0x9e')][_0xda31('0x82')](createExtensionsReciveFax(_['omit'](_0x101ad8[_0xda31('0x64')],['tech','key','createdAt',_0xda31('0x9f'),'TrunkId',_0xda31('0xa0')])),{'transaction':_0x12ed02});});});})[_0xda31('0x38')](function(){return db[_0xda31('0x42')][_0xda31('0xa1')](_0x101ad8[_0xda31('0x64')]['id']);})['then'](respondWithResult(_0xbd2252,null))[_0xda31('0x2b')](handleError(_0xbd2252,null));};exports[_0xda31('0xa2')]=function(_0x517744,_0x3d12f9,_0x5a88b0){var _0x47f6ec={'raw':!![],'where':{}};var _0x20ae19={};var _0x58d693={'count':0x0,'rows':[]};return db[_0xda31('0x42')][_0xda31('0x6b')]({'where':{'id':_0x517744[_0xda31('0x65')]['id']}})['then'](handleEntityNotFound(_0x3d12f9,null))[_0xda31('0x38')](function(_0x3a7a13){if(_0x3a7a13){_0x20ae19['model']=_[_0xda31('0x48')](db['FaxMessage'][_0xda31('0x43')]);_0x20ae19[_0xda31('0x47')]=_[_0xda31('0x48')](_0x517744[_0xda31('0x47')]);_0x20ae19[_0xda31('0x49')]=_['intersection'](_0x20ae19[_0xda31('0x4b')],_0x20ae19['query']);_0x47f6ec[_0xda31('0x4c')]=_[_0xda31('0x4a')](_0x20ae19[_0xda31('0x4b')],qs[_0xda31('0x4d')](_0x517744[_0xda31('0x47')]['fields']));_0x47f6ec[_0xda31('0x4c')]=_0x47f6ec[_0xda31('0x4c')]['length']?_0x47f6ec['attributes']:_0x20ae19['model'];if(!_0x517744['query'][_0xda31('0x6c')]('nolimit')){_0x47f6ec[_0xda31('0x30')]=qs[_0xda31('0x30')](_0x517744['query']['limit']);_0x47f6ec[_0xda31('0x32')]=qs[_0xda31('0x32')](_0x517744[_0xda31('0x47')][_0xda31('0x32')]);}_0x47f6ec[_0xda31('0x6d')]=qs['sort'](_0x517744[_0xda31('0x47')][_0xda31('0x4f')]);_0x47f6ec['where']=qs[_0xda31('0x49')](_[_0xda31('0x51')](_0x517744[_0xda31('0x47')],_0x20ae19[_0xda31('0x49')]));_0x47f6ec['where']['FaxAccountId']=_0x3a7a13['id'];if(_0x517744['query'][_0xda31('0x54')]){_0x47f6ec[_0xda31('0x50')]=_[_0xda31('0x52')](_0x47f6ec[_0xda31('0x50')],{'$or':_['map'](_0x47f6ec[_0xda31('0x4c')],function(_0xdf9a3d){var _0x48a4d8={};_0x48a4d8[_0xdf9a3d]={'$like':'%'+_0x517744[_0xda31('0x47')][_0xda31('0x54')]+'%'};return _0x48a4d8;})});}if(_0x517744['query'][_0xda31('0xa3')]){var _0x66e3c6=_0x517744[_0xda31('0x47')][_0xda31('0xa3')][_0xda31('0xa4')](',');var _0x1412b8={};_0x1412b8[_0x66e3c6[0x0]]={'$gte':moment(_0x66e3c6[0x1])[_0xda31('0xa5')](_0xda31('0xa6'))};_0x47f6ec[_0xda31('0x50')]=_[_0xda31('0x52')](_0x47f6ec[_0xda31('0x50')],_0x1412b8);}_0x47f6ec=_[_0xda31('0x52')]({},_0x47f6ec,_0x517744[_0xda31('0x55')]);return db['FaxMessage'][_0xda31('0x31')]({'where':_0x47f6ec[_0xda31('0x50')]})[_0xda31('0x38')](function(_0x51bc16){_0x58d693['count']=_0x51bc16;if(_0x517744[_0xda31('0x47')][_0xda31('0x56')]){_0x47f6ec['include']=[{'all':!![]}];}return db[_0xda31('0xa7')][_0xda31('0x58')](_0x47f6ec);})['then'](function(_0x10026b){_0x58d693[_0xda31('0x59')]=_0x10026b;return _0x58d693;});}})[_0xda31('0x38')](respondWithFilteredResult(_0x3d12f9,_0x47f6ec))['catch'](handleError(_0x3d12f9,null));};exports[_0xda31('0x3e')]=function(_0x5afc7b,_0x3d323f,_0x27dda2){var _0xcbff16,_0x1abba2={},_0x7dcca7;if(_0x5afc7b[_0xda31('0x64')]['to']){_0x7dcca7=_0x5afc7b[_0xda31('0x64')]['to'][0x0];}return db[_0xda31('0x42')]['find']({'where':{'id':_0x5afc7b['params']['id']},'include':[{'model':db['CmList'],'as':_0xda31('0xa8'),'include':[{'model':db[_0xda31('0x78')],'as':_0xda31('0xa9'),'where':{'fax':_0x7dcca7},'limit':0x1,'order':[[_0xda31('0x9f'),_0xda31('0xaa')]]}]}]})[_0xda31('0x38')](handleEntityNotFound(_0x3d323f,null))['then'](function(_0x2a2f1d){_0xcbff16=_0x2a2f1d;if(_0x5afc7b[_0xda31('0x64')][_0xda31('0xab')]&&_0x5afc7b['body'][_0xda31('0xab')][_0xda31('0x5c')]){for(var _0x32d0f9=0x0;_0x32d0f9<_0x5afc7b['body'][_0xda31('0xab')][_0xda31('0x5c')];_0x32d0f9+=0x1){_0x5afc7b[_0xda31('0x64')][_0xda31('0xab')][_0x32d0f9]={'filename':_0x5afc7b[_0xda31('0x64')]['attachments'][_0x32d0f9][_0xda31('0x3d')],'id':_0x5afc7b[_0xda31('0x64')][_0xda31('0xab')][_0x32d0f9]['id'],'path':path[_0xda31('0xac')](config['root'],'server/files/attachments',_0x5afc7b['body'][_0xda31('0xab')][_0x32d0f9][_0xda31('0xad')])};}}return respondWithRpcPromise('CheckAfterSend',_0xda31('0xae'),{'FaxAccountId':_['isNil'](_0x5afc7b['params']['id'])?undefined:_0x5afc7b['params']['id'],'path':_['isNil'](_0x5afc7b['body'][_0xda31('0xab')][0x0][_0xda31('0xaf')])?undefined:_0x5afc7b[_0xda31('0x64')][_0xda31('0xab')][0x0][_0xda31('0xaf')],'fax':_[_0xda31('0xb0')](_0x5afc7b[_0xda31('0x64')]['to'][0x0])?undefined:_0x5afc7b[_0xda31('0x64')]['to'][0x0]},client9002);})[_0xda31('0x38')](function(){if(_0xcbff16){if(_[_0xda31('0xb0')](_0x5afc7b['body'][_0xda31('0xb1')])){_0x5afc7b[_0xda31('0x64')]['from']=util[_0xda31('0xa5')]('\x22%s\x22\x20<%s>',_0xcbff16['name'],_0xcbff16[_0xda31('0xb2')]);}if(_0xcbff16[_0xda31('0xa8')]){if(_0xcbff16[_0xda31('0xa8')][_0xda31('0xa9')]['length']){return _0xcbff16[_0xda31('0xa8')][_0xda31('0xa9')][0x0];}else{return db['CmContact'][_0xda31('0x5d')](_[_0xda31('0x1a')](_0x5afc7b[_0xda31('0x64')],{'firstName':_0x5afc7b[_0xda31('0x64')]['to'][0x0],'phone':_0x5afc7b[_0xda31('0x64')]['to'][0x0],'fax':_0x5afc7b[_0xda31('0x64')]['to'][0x0],'ListId':_0xcbff16[_0xda31('0xa0')]}));}}else{throw new Error(_0xda31('0xb3'));}}else{throw new Error(_0xda31('0xb4'));}})['then'](function(_0x5df000){if(_0x5df000){return db[_0xda31('0x74')][_0xda31('0x61')]({'where':{'ContactId':_0x5df000['id'],'closed':![],'FaxAccountId':_0xcbff16['id']}})['then'](function(_0x19500d){if(_0x19500d){return[_0x19500d,![]];}return db['FaxInteraction'][_0xda31('0x5d')]({'UserId':_0x5afc7b[_0xda31('0x5e')]['id'],'ContactId':_0x5df000['id'],'FaxAccountId':_0xcbff16['id'],'fax':_0x5afc7b[_0xda31('0x64')]['to'][0x0],'firstMsgDirection':'out','Messages':[_[_0xda31('0x52')](_0x5afc7b[_0xda31('0x64')],{'read':![],'body':_0x5afc7b['body'][_0xda31('0xab')][0x0][_0xda31('0xb5')],'FaxAccountId':_0xcbff16['id'],'UserId':_0x5afc7b[_0xda31('0x5e')]['id'],'ContactId':_0x5df000['id'],'AttachmentId':_0x5afc7b[_0xda31('0x64')][_0xda31('0xab')][0x0]['id']})]},{'include':[{'model':db[_0xda31('0xa7')],'as':'Messages'}]})['then'](function(_0x4214bd){return[_0x4214bd,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xda31('0xb6')](function(_0x78c702,_0x7b9bbf){if(_0x7b9bbf){return _0x78c702;}return db[_0xda31('0xa7')]['create']({'direction':_0xda31('0xb7'),'read':![],'body':_0x5afc7b[_0xda31('0x64')]['attachments'][0x0][_0xda31('0xb5')],'FaxAccountId':_0xcbff16['id'],'FaxInteractionId':_0x78c702['id'],'UserId':_0x5afc7b['user']['id'],'ContactId':_0x78c702[_0xda31('0xb8')],'AttachmentId':_0x5afc7b['body'][_0xda31('0xab')][0x0]['id']})[_0xda31('0x38')](function(_0x40e111){_0x78c702[_0xda31('0xb9')][_0xda31('0xba')]=[];_0x78c702['dataValues']['Messages']['push'](_0x40e111['dataValues']);return _0x78c702;});})[_0xda31('0x38')](function(_0x45af6d){respondWithRpcPromise(_0xda31('0xbb'),_0xda31('0xbb'),{'FaxAccountId':_['isNil'](_0x5afc7b[_0xda31('0x65')]['id'])?undefined:_0x5afc7b[_0xda31('0x65')]['id'],'path':_[_0xda31('0xb0')](_0x5afc7b[_0xda31('0x64')]['attachments'][0x0]['path'])?undefined:_0x5afc7b[_0xda31('0x64')][_0xda31('0xab')][0x0][_0xda31('0xaf')],'fax':_[_0xda31('0xb0')](_0x5afc7b[_0xda31('0x64')]['to'][0x0])?undefined:_0x5afc7b[_0xda31('0x64')]['to'][0x0],'AttachmentId':_0x5afc7b['body']['attachments'][0x0]['id']},client9002)[_0xda31('0x38')](function(_0x590aa6){logger[_0xda31('0x21')](_0xda31('0xbc'),_0x590aa6);})[_0xda31('0x2b')](function(_0x2303bd){logger[_0xda31('0x21')](_0xda31('0xbc'),_0x2303bd);});return _0x45af6d;})[_0xda31('0x38')](respondWithResult(_0x3d323f,null))[_0xda31('0x2b')](handleError(_0x3d323f,null));};exports[_0xda31('0xbd')]=function(_0x35e528,_0x39d1d0,_0x4a2829){return db[_0xda31('0x42')][_0xda31('0x61')]({'where':{'id':_0x35e528[_0xda31('0x65')]['id']}})['then'](handleEntityNotFound(_0x39d1d0,null))[_0xda31('0x38')](function(_0x4e70c4){if(_0x4e70c4){return _0x4e70c4['addAgents'](_0x35e528[_0xda31('0x64')][_0xda31('0x6f')],_[_0xda31('0x76')](_0x35e528[_0xda31('0x64')],[_0xda31('0x6f'),'id'])||{})[_0xda31('0xb6')](function(_0x3c7756){for(var _0x528a58=0x0;_0x528a58<_0x35e528[_0xda31('0x64')]['ids'][_0xda31('0x5c')];_0x528a58+=0x1){socket[_0xda31('0xbe')](_0xda31('0xbf'),{'UserId':Number(_0x35e528[_0xda31('0x64')][_0xda31('0x6f')][_0x528a58]),'FaxAccountId':Number(_0x35e528[_0xda31('0x65')]['id'])});}return _0x3c7756;});}})[_0xda31('0x38')](respondWithResult(_0x39d1d0,null))['catch'](handleError(_0x39d1d0,null));};exports[_0xda31('0xc0')]=function(_0x39d388,_0x49c5ef,_0x4e179f){return db[_0xda31('0x42')][_0xda31('0x61')]({'where':{'id':_0x39d388[_0xda31('0x65')]['id']}})[_0xda31('0x38')](handleEntityNotFound(_0x49c5ef,null))['then'](function(_0x1207f9){if(_0x1207f9){return _0x1207f9[_0xda31('0xc0')](_0x39d388[_0xda31('0x47')][_0xda31('0x6f')])[_0xda31('0x38')](function(){if(_[_0xda31('0xc1')](_0x39d388[_0xda31('0x47')]['ids'])){for(var _0x44712a=0x0;_0x44712a<_0x39d388[_0xda31('0x47')]['ids'][_0xda31('0x5c')];_0x44712a+=0x1){socket[_0xda31('0xbe')](_0xda31('0xc2'),{'UserId':Number(_0x39d388[_0xda31('0x47')][_0xda31('0x6f')][_0x44712a]),'FaxAccountId':Number(_0x39d388['params']['id'])});}}else{socket[_0xda31('0xbe')](_0xda31('0xc2'),{'UserId':Number(_0x39d388[_0xda31('0x47')]['ids']),'FaxAccountId':Number(_0x39d388[_0xda31('0x65')]['id'])});}});}})[_0xda31('0x38')](respondWithStatusCode(_0x49c5ef,null))[_0xda31('0x2b')](handleError(_0x49c5ef,null));};exports[_0xda31('0xc3')]=function(_0x58f226,_0x52ad5c,_0x3b7368){var _0x33d02c={};var _0x3282b0={};var _0x1ff6f8;var _0x26d402;return db[_0xda31('0x42')][_0xda31('0x6b')]({'where':{'id':_0x58f226[_0xda31('0x65')]['id']}})['then'](handleEntityNotFound(_0x52ad5c,null))[_0xda31('0x38')](function(_0x2d6789){if(_0x2d6789){_0x1ff6f8=_0x2d6789;_0x3282b0[_0xda31('0x4b')]=_[_0xda31('0x48')](db[_0xda31('0x79')]['rawAttributes']);_0x3282b0[_0xda31('0x47')]=_[_0xda31('0x48')](_0x58f226['query']);_0x3282b0['filters']=_['intersection'](_0x3282b0[_0xda31('0x4b')],_0x3282b0[_0xda31('0x47')]);_0x33d02c[_0xda31('0x4c')]=_['intersection'](_0x3282b0[_0xda31('0x4b')],qs[_0xda31('0x4d')](_0x58f226['query'][_0xda31('0x4d')]));_0x33d02c[_0xda31('0x4c')]=_0x33d02c['attributes'][_0xda31('0x5c')]?_0x33d02c['attributes']:_0x3282b0[_0xda31('0x4b')];_0x33d02c['order']=qs[_0xda31('0x4f')](_0x58f226[_0xda31('0x47')]['sort']);_0x33d02c[_0xda31('0x50')]=qs[_0xda31('0x49')](_[_0xda31('0x51')](_0x58f226[_0xda31('0x47')],_0x3282b0[_0xda31('0x49')]));if(_0x58f226[_0xda31('0x47')]['filter']){_0x33d02c['where']=_[_0xda31('0x52')](_0x33d02c[_0xda31('0x50')],{'$or':_['map'](_0x33d02c['attributes'],function(_0x3f93a0){var _0x4fd789={};_0x4fd789[_0x3f93a0]={'$like':'%'+_0x58f226[_0xda31('0x47')][_0xda31('0x54')]+'%'};return _0x4fd789;})});}_0x33d02c=_[_0xda31('0x52')]({},_0x33d02c,_0x58f226[_0xda31('0x55')]);return _0x1ff6f8[_0xda31('0xc3')](_0x33d02c);}})[_0xda31('0x38')](function(_0x4dd1e5){if(_0x4dd1e5){_0x26d402=_0x4dd1e5['length'];if(!_0x58f226[_0xda31('0x47')][_0xda31('0x6c')](_0xda31('0x4e'))){_0x33d02c[_0xda31('0x30')]=qs[_0xda31('0x30')](_0x58f226[_0xda31('0x47')][_0xda31('0x30')]);_0x33d02c[_0xda31('0x32')]=qs[_0xda31('0x32')](_0x58f226[_0xda31('0x47')]['offset']);}return _0x1ff6f8['getAgents'](_0x33d02c);}})[_0xda31('0x38')](function(_0x24e227){if(_0x24e227){return _0x24e227?{'count':_0x26d402,'rows':_0x24e227}:null;}})['then'](respondWithResult(_0x52ad5c,null))['catch'](handleError(_0x52ad5c,null));};
\ No newline at end of file
index 2361e69..4479a98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b3a=['emit','hasOwnProperty','hook','exports','../../mysqldb','FaxAccount','setMaxListeners','save','update'];(function(_0x4a005e,_0x33fdaf){var _0x4771a8=function(_0x3bd0ca){while(--_0x3bd0ca){_0x4a005e['push'](_0x4a005e['shift']());}};_0x4771a8(++_0x33fdaf);}(_0x3b3a,0x190));var _0xa3b3=function(_0x369ed8,_0x2527a3){_0x369ed8=_0x369ed8-0x0;var _0x3157b9=_0x3b3a[_0x369ed8];return _0x3157b9;};'use strict';var EventEmitter=require('events');var FaxAccount=require(_0xa3b3('0x0'))['db'][_0xa3b3('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xa3b3('0x2')](0x0);var events={'afterCreate':_0xa3b3('0x3'),'afterUpdate':_0xa3b3('0x4'),'afterDestroy':'remove'};function emitEvent(_0x113bd2){return function(_0x17e3c7,_0x3f4ab3,_0x1cc00a){FaxAccountEvents['emit'](_0x113bd2+':'+_0x17e3c7['id'],_0x17e3c7);FaxAccountEvents[_0xa3b3('0x5')](_0x113bd2,_0x17e3c7);_0x1cc00a(null);};}for(var e in events){if(events[_0xa3b3('0x6')](e)){var event=events[e];FaxAccount[_0xa3b3('0x7')](e,emitEvent(event));}}module[_0xa3b3('0x8')]=FaxAccountEvents;
\ No newline at end of file
+var _0xb40d=['hook','exports','events','../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x5a7349,_0x477848){var _0x4cc77a=function(_0x4fd64f){while(--_0x4fd64f){_0x5a7349['push'](_0x5a7349['shift']());}};_0x4cc77a(++_0x477848);}(_0xb40d,0xc8));var _0xdb40=function(_0x395302,_0x45553a){_0x395302=_0x395302-0x0;var _0x465a29=_0xb40d[_0x395302];return _0x465a29;};'use strict';var EventEmitter=require(_0xdb40('0x0'));var FaxAccount=require(_0xdb40('0x1'))['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xdb40('0x2')](0x0);var events={'afterCreate':_0xdb40('0x3'),'afterUpdate':_0xdb40('0x4'),'afterDestroy':'remove'};function emitEvent(_0x272601){return function(_0x5888c9,_0x8f71a4,_0x47311a){FaxAccountEvents['emit'](_0x272601+':'+_0x5888c9['id'],_0x5888c9);FaxAccountEvents[_0xdb40('0x5')](_0x272601,_0x5888c9);_0x47311a(null);};}for(var e in events){if(events[_0xdb40('0x6')](e)){var event=events[e];FaxAccount[_0xdb40('0x7')](e,emitEvent(event));}}module[_0xdb40('0x8')]=FaxAccountEvents;
\ No newline at end of file
index 1208eeb..991ab5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14e7=['bluebird','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes','exports','define','FaxAccount','lodash','../../config/logger','api','moment'];(function(_0x4f9c46,_0x361afe){var _0x155365=function(_0x2e5c13){while(--_0x2e5c13){_0x4f9c46['push'](_0x4f9c46['shift']());}};_0x155365(++_0x361afe);}(_0x14e7,0x1b6));var _0x714e=function(_0x7d5925,_0x42792b){_0x7d5925=_0x7d5925-0x0;var _0x35e0df=_0x14e7[_0x7d5925];return _0x35e0df;};'use strict';var _=require(_0x714e('0x0'));var util=require('util');var logger=require(_0x714e('0x1'))(_0x714e('0x2'));var moment=require(_0x714e('0x3'));var BPromise=require(_0x714e('0x4'));var rp=require(_0x714e('0x5'));var fs=require('fs');var path=require(_0x714e('0x6'));var rimraf=require(_0x714e('0x7'));var config=require(_0x714e('0x8'));var attributes=require(_0x714e('0x9'));module[_0x714e('0xa')]=function(_0x1d4cb4,_0x24b223){return _0x1d4cb4[_0x714e('0xb')](_0x714e('0xc'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2869=['define','FaxAccount','fax_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','exports'];(function(_0x27367b,_0x1fe415){var _0xe9ad0e=function(_0x28ee57){while(--_0x28ee57){_0x27367b['push'](_0x27367b['shift']());}};_0xe9ad0e(++_0x1fe415);}(_0x2869,0x163));var _0x9286=function(_0x4f09f2,_0x1f91b7){_0x4f09f2=_0x4f09f2-0x0;var _0x195e78=_0x2869[_0x4f09f2];return _0x195e78;};'use strict';var _=require(_0x9286('0x0'));var util=require(_0x9286('0x1'));var logger=require(_0x9286('0x2'))(_0x9286('0x3'));var moment=require(_0x9286('0x4'));var BPromise=require(_0x9286('0x5'));var rp=require(_0x9286('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./faxAccount.attributes');module[_0x9286('0x7')]=function(_0xe46bc,_0x284fd9){return _0xe46bc[_0x9286('0x8')](_0x9286('0x9'),attributes,{'tableName':_0x9286('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c05aff9..fefaf0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd61e=['isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','List','CmContact','Contacts','DESC','FaxApplication','Applications','list','applications','priority','asc','length','create','contact','FaxInteraction','find','Contact\x20not\x20found','spread','get','push','close','unmanaged','created','interaction','ContactId','UserId','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','redis','localhost','register','request','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','FaxAccount,\x20%s,\x20%s','result','catch','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','then','GetFaxAccount','NotifyFaxAccount','body','fax','describe','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','from','Sequelize','from\x20is\x20mandatory'];(function(_0x1ba99b,_0x128fc0){var _0x48f741=function(_0x4c1fd3){while(--_0x4c1fd3){_0x1ba99b['push'](_0x1ba99b['shift']());}};_0x48f741(++_0x128fc0);}(_0xd61e,0x1f2));var _0xed61=function(_0x7cecda,_0x477e36){_0x7cecda=_0x7cecda-0x0;var _0x51c84e=_0xd61e[_0x7cecda];return _0x51c84e;};'use strict';var _=require(_0xed61('0x0'));var util=require(_0xed61('0x1'));var moment=require(_0xed61('0x2'));var BPromise=require('bluebird');var rs=require(_0xed61('0x3'));var fs=require('fs');var Redis=require(_0xed61('0x4'));var db=require(_0xed61('0x5'))['db'];var utils=require(_0xed61('0x6'));var logger=require(_0xed61('0x7'))('rpc');var config=require(_0xed61('0x8'));var jayson=require(_0xed61('0x9'));var client=jayson['client'][_0xed61('0xa')]({'port':0x232c});config['redis']=_[_0xed61('0xb')](config[_0xed61('0xc')],{'host':_0xed61('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./faxAccount.socket')[_0xed61('0xe')](socket);function respondWithRpcPromise(_0x58a5df,_0x1222ff,_0x39cfb2){return new BPromise(function(_0x2ea749,_0x3786d4){return client[_0xed61('0xf')](_0x58a5df,_0x39cfb2)['then'](function(_0x18515c){logger[_0xed61('0x10')]('FaxAccount,\x20%s,\x20%s',_0x1222ff,'request\x20sent');logger[_0xed61('0x11')](_0xed61('0x12'),_0x1222ff,_0xed61('0x13'),JSON[_0xed61('0x14')](_0x18515c));if(_0x18515c[_0xed61('0x15')]){if(_0x18515c[_0xed61('0x15')][_0xed61('0x16')]===0x1f4){logger[_0xed61('0x15')]('FaxAccount,\x20%s,\x20%s',_0x1222ff,_0x18515c[_0xed61('0x15')][_0xed61('0x17')]);return _0x3786d4(_0x18515c[_0xed61('0x15')]['message']);}logger[_0xed61('0x15')](_0xed61('0x18'),_0x1222ff,_0x18515c[_0xed61('0x15')]['message']);return _0x2ea749(_0x18515c[_0xed61('0x15')][_0xed61('0x17')]);}else{logger[_0xed61('0x10')](_0xed61('0x18'),_0x1222ff,_0xed61('0x13'));_0x2ea749(_0x18515c[_0xed61('0x19')][_0xed61('0x17')]);}})[_0xed61('0x1a')](function(_0xb75aaa){logger['error']('FaxAccount,\x20%s,\x20%s',_0x1222ff,_0xb75aaa);_0x3786d4(_0xb75aaa);});});}exports['GetFaxAccount']=function(_0x3d5aed){var _0x22aacd=this;return new Promise(function(_0x245abf,_0x50d30e){return db[_0xed61('0x1b')][_0xed61('0x1c')]({'raw':_0x3d5aed[_0xed61('0x1d')]?_0x3d5aed[_0xed61('0x1d')][_0xed61('0x1e')]===undefined?!![]:![]:!![],'where':_0x3d5aed[_0xed61('0x1d')]?_0x3d5aed[_0xed61('0x1d')][_0xed61('0x1f')]||null:null,'attributes':_0x3d5aed[_0xed61('0x1d')]?_0x3d5aed['options'][_0xed61('0x20')]||null:null,'limit':_0x3d5aed['options']?_0x3d5aed['options'][_0xed61('0x21')]||null:null,'include':_0x3d5aed[_0xed61('0x1d')]?_0x3d5aed[_0xed61('0x1d')][_0xed61('0x22')]?_[_0xed61('0x23')](_0x3d5aed['options']['include'],function(_0x541db){return{'model':db[_0x541db['model']],'as':_0x541db['as'],'attributes':_0x541db[_0xed61('0x20')],'include':_0x541db[_0xed61('0x22')]?_[_0xed61('0x23')](_0x541db['include'],function(_0x3694ad){return{'model':db[_0x3694ad['model']],'as':_0x3694ad['as'],'attributes':_0x3694ad['attributes'],'include':_0x3694ad[_0xed61('0x22')]?_[_0xed61('0x23')](_0x3694ad[_0xed61('0x22')],function(_0x2e494b){return{'model':db[_0x2e494b[_0xed61('0x24')]],'as':_0x2e494b['as'],'attributes':_0x2e494b['attributes']};}):[]};}):[]};}):[]:[]})[_0xed61('0x25')](function(_0x1a867d){logger['info']('GetFaxAccount',_0x3d5aed);logger[_0xed61('0x11')]('GetFaxAccount',_0x3d5aed,JSON[_0xed61('0x14')](_0x1a867d));_0x245abf(_0x1a867d);})[_0xed61('0x1a')](function(_0x56afe6){logger[_0xed61('0x15')](_0xed61('0x26'),_0x56afe6[_0xed61('0x17')],_0x3d5aed);_0x50d30e(_0x22aacd[_0xed61('0x15')](0x1f4,_0x56afe6[_0xed61('0x17')]));});});};exports[_0xed61('0x27')]=function(_0x351e04,_0x701d8c,_0x30f208){var _0x147eac=this;return new Promise(function(_0x373af6,_0x19d280){var _0x37381e={'body':_0x351e04[_0xed61('0x28')],'channel':_0xed61('0x29')};var _0x6d76f4=[];var _0x1f93c8=[];var _0x45e49e={};return db['CmContact'][_0xed61('0x2a')]()[_0xed61('0x25')](function(_0x5cf88b){if(!_0x5cf88b){throw new db['Sequelize'][(_0xed61('0x2b'))](_0xed61('0x2c'));}_0x6d76f4=_[_0xed61('0x2d')](_[_0xed61('0x2e')](_0x5cf88b),[_0xed61('0x2f'),_0xed61('0x30')]);_0x1f93c8=_[_0xed61('0x2d')](_[_0xed61('0x2e')](_0x5cf88b),['createdAt',_0xed61('0x30'),_0xed61('0x31'),_0xed61('0x32')]);if(_0x351e04['body']['id']){delete _0x351e04[_0xed61('0x28')]['id'];}if(_['isNil'](_0x351e04[_0xed61('0x28')][_0xed61('0x33')])){throw new db[(_0xed61('0x34'))]['ValidationError'](_0xed61('0x35'));}if(_[_0xed61('0x36')](_0x351e04[_0xed61('0x28')][_0xed61('0x28')])||_0x351e04[_0xed61('0x28')][_0xed61('0x28')]===''){throw new db[(_0xed61('0x34'))][(_0xed61('0x2b'))](_0xed61('0x37'));}if(_[_0xed61('0x36')](_0x351e04[_0xed61('0x28')]['mapKey'])){throw new db[(_0xed61('0x34'))][(_0xed61('0x2b'))](_0xed61('0x38')+_0x1f93c8);}if(!_[_0xed61('0x39')](_0x1f93c8,_0x351e04['body'][_0xed61('0x3a')])){throw new db['Sequelize']['ValidationError'](_0xed61('0x3b')+_0x1f93c8);}_0x45e49e[_0x351e04[_0xed61('0x28')][_0xed61('0x3a')]]=_0x351e04[_0xed61('0x28')][_0xed61('0x33')];})[_0xed61('0x25')](function(){return db[_0xed61('0x1b')]['find']({'where':{'id':_0x351e04[_0xed61('0x3c')]['id']},'include':[{'model':db['CmList'],'as':_0xed61('0x3d'),'include':[{'model':db[_0xed61('0x3e')],'as':_0xed61('0x3f'),'where':_0x45e49e,'limit':0x1,'order':[[_0xed61('0x30'),_0xed61('0x40')]]}]},{'model':db[_0xed61('0x41')],'as':_0xed61('0x42')}]});})[_0xed61('0x25')](function(_0x1c5b74){if(_0x1c5b74&&_0x1c5b74['List']){var _0x3b994e=_0x1c5b74['get']({'plain':!![]});_0x37381e[_0xed61('0x3c')]=_0x3b994e;_0x37381e['applications']=_0x3b994e[_0xed61('0x42')];_0x37381e[_0xed61('0x43')]=_0x3b994e['List'];_0x37381e['applications']=_['orderBy'](_0x37381e[_0xed61('0x44')],[_0xed61('0x45')],[_0xed61('0x46')]);if(_0x37381e[_0xed61('0x3c')][_0xed61('0x42')]){delete _0x37381e[_0xed61('0x3c')][_0xed61('0x42')];}if(_0x37381e['account'][_0xed61('0x3d')]&&_0x37381e[_0xed61('0x3c')]['List'][_0xed61('0x3f')][_0xed61('0x47')]){return _0x37381e['account'][_0xed61('0x3d')]['Contacts'][0x0];}var _0x292c80=_[_0xed61('0xb')](_0x351e04[_0xed61('0x28')],{'firstName':_0x351e04[_0xed61('0x28')][_0xed61('0x33')],'ListId':_0x3b994e[_0xed61('0x32')]});_0x292c80[_0x351e04['body']['mapKey']]=_0x351e04[_0xed61('0x28')][_0xed61('0x33')];return db[_0xed61('0x3e')][_0xed61('0x48')](_0x292c80,{'fields':_0x6d76f4,'raw':!![]});}})[_0xed61('0x25')](function(_0x324234){_0x37381e[_0xed61('0x49')]=_0x324234;if(_0x324234){var _0x173cfa={'ContactId':_0x324234['id'],'FaxAccountId':_0x351e04[_0xed61('0x3c')]['id'],'fax':_0x324234[_0xed61('0x29')]};return db[_0xed61('0x4a')][_0xed61('0x4b')]({'where':{'ContactId':_0x324234['id'],'closed':![],'FaxAccountId':_0x351e04[_0xed61('0x3c')]['id']}})['then'](function(_0x483d80){if(_0x483d80){return[_0x483d80,![]];}return db[_0xed61('0x4a')]['create'](_0x173cfa)[_0xed61('0x25')](function(_0x52c146){return[_0x52c146,!![]];});});}else{throw new Error(_0xed61('0x4c'));}})[_0xed61('0x4d')](function(_0x759162,_0xbd190){var _0x3793db=_0x759162[_0xed61('0x4e')]({'plain':!![]});if(_0xbd190){if(_0x37381e[_0xed61('0x3c')]['autoclose']){_0x37381e[_0xed61('0x44')][_0xed61('0x4f')]({'id':0x0,'priority':_0x37381e[_0xed61('0x44')][_0xed61('0x47')]+0x1,'app':_0xed61('0x50'),'appdata':_0xed61('0x51'),'interval':'*,*,*,*'});}_0x3793db[_0xed61('0x52')]=!![];}else{_0x3793db[_0xed61('0x52')]=![];}_0x37381e[_0xed61('0x53')]=_0x3793db;return db['FaxMessage'][_0xed61('0x48')]({'body':_0x351e04[_0xed61('0x28')][_0xed61('0x28')],'FaxAccountId':_0x351e04[_0xed61('0x3c')]['id'],'FaxInteractionId':_0x759162['id'],'direction':'in','ContactId':_0x759162[_0xed61('0x54')],'AttachmentId':_0x351e04[_0xed61('0x28')]['AttachmentId']});})[_0xed61('0x25')](function(_0xa8f3d7){_0x37381e[_0xed61('0x17')]=_0xa8f3d7;if(_0x37381e['interaction'][_0xed61('0x55')]){return db['User']['find']({'attributes':['id',_0xed61('0x56')],'where':{'id':_0x37381e[_0xed61('0x53')][_0xed61('0x55')]}})[_0xed61('0x25')](function(_0x26a9fd){if(_0x26a9fd){_0x37381e[_0xed61('0x44')][_0xed61('0x57')]({'id':0x0,'priority':0x0,'app':_0xed61('0x58'),'appdata':_0x26a9fd['name']+','+(_0x37381e[_0xed61('0x3c')][_0xed61('0x59')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xed61('0x5a'),'startRouting',_0x37381e);});}return respondWithRpcPromise(_0xed61('0x5a'),_0xed61('0x5b'),_0x37381e);})[_0xed61('0x25')](function(_0x149355){_0x373af6(_0x149355);})['catch'](function(_0x605b20){_0x19d280(_0x147eac[_0xed61('0x15')](0x1f4,_0x605b20[_0xed61('0x17')]));});});};
\ No newline at end of file
+var _0xfa4a=['request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetFaxAccount','FaxAccount','options','raw','where','limit','include','map','model','attributes','then','body','fax','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','Sequelize','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','Contacts','DESC','FaxApplication','Applications','get','applications','priority','length','create','contact','FaxInteraction','Contact\x20not\x20found','spread','autoclose','close','unmanaged','*,*,*,*','created','interaction','FaxMessage','ContactId','UserId','agent','name','waitForTheAssignedAgent','Start','startRouting','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','./faxAccount.socket','register'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xfa4a,0xf0));var _0xafa4=function(_0x58a4b5,_0x182439){_0x58a4b5=_0x58a4b5-0x0;var _0x51821d=_0xfa4a[_0x58a4b5];return _0x51821d;};'use strict';var _=require(_0xafa4('0x0'));var util=require('util');var moment=require(_0xafa4('0x1'));var BPromise=require(_0xafa4('0x2'));var rs=require(_0xafa4('0x3'));var fs=require('fs');var Redis=require(_0xafa4('0x4'));var db=require(_0xafa4('0x5'))['db'];var utils=require(_0xafa4('0x6'));var logger=require(_0xafa4('0x7'))(_0xafa4('0x8'));var config=require(_0xafa4('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xafa4('0xa')]({'port':0x232c});config[_0xafa4('0xb')]=_[_0xafa4('0xc')](config[_0xafa4('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xafa4('0xd'))[_0xafa4('0xe')](socket);function respondWithRpcPromise(_0x3cbd13,_0x35b361,_0x12b73e){return new BPromise(function(_0x46ea24,_0x3f0dbb){return client[_0xafa4('0xf')](_0x3cbd13,_0x12b73e)['then'](function(_0x4721ee){logger[_0xafa4('0x10')](_0xafa4('0x11'),_0x35b361,_0xafa4('0x12'));logger[_0xafa4('0x13')](_0xafa4('0x14'),_0x35b361,_0xafa4('0x12'),JSON[_0xafa4('0x15')](_0x4721ee));if(_0x4721ee[_0xafa4('0x16')]){if(_0x4721ee[_0xafa4('0x16')][_0xafa4('0x17')]===0x1f4){logger[_0xafa4('0x16')]('FaxAccount,\x20%s,\x20%s',_0x35b361,_0x4721ee[_0xafa4('0x16')][_0xafa4('0x18')]);return _0x3f0dbb(_0x4721ee['error']['message']);}logger['error'](_0xafa4('0x11'),_0x35b361,_0x4721ee[_0xafa4('0x16')][_0xafa4('0x18')]);return _0x46ea24(_0x4721ee[_0xafa4('0x16')][_0xafa4('0x18')]);}else{logger[_0xafa4('0x10')](_0xafa4('0x11'),_0x35b361,'request\x20sent');_0x46ea24(_0x4721ee[_0xafa4('0x19')][_0xafa4('0x18')]);}})[_0xafa4('0x1a')](function(_0x3a81f9){logger['error']('FaxAccount,\x20%s,\x20%s',_0x35b361,_0x3a81f9);_0x3f0dbb(_0x3a81f9);});});}exports[_0xafa4('0x1b')]=function(_0x92ceb5){var _0x57dc37=this;return new Promise(function(_0x58f54b,_0x16a564){return db[_0xafa4('0x1c')]['findAll']({'raw':_0x92ceb5['options']?_0x92ceb5[_0xafa4('0x1d')][_0xafa4('0x1e')]===undefined?!![]:![]:!![],'where':_0x92ceb5[_0xafa4('0x1d')]?_0x92ceb5['options'][_0xafa4('0x1f')]||null:null,'attributes':_0x92ceb5[_0xafa4('0x1d')]?_0x92ceb5[_0xafa4('0x1d')]['attributes']||null:null,'limit':_0x92ceb5[_0xafa4('0x1d')]?_0x92ceb5['options'][_0xafa4('0x20')]||null:null,'include':_0x92ceb5[_0xafa4('0x1d')]?_0x92ceb5[_0xafa4('0x1d')][_0xafa4('0x21')]?_[_0xafa4('0x22')](_0x92ceb5['options'][_0xafa4('0x21')],function(_0xfdce2d){return{'model':db[_0xfdce2d[_0xafa4('0x23')]],'as':_0xfdce2d['as'],'attributes':_0xfdce2d['attributes'],'include':_0xfdce2d[_0xafa4('0x21')]?_[_0xafa4('0x22')](_0xfdce2d['include'],function(_0xe17485){return{'model':db[_0xe17485[_0xafa4('0x23')]],'as':_0xe17485['as'],'attributes':_0xe17485[_0xafa4('0x24')],'include':_0xe17485[_0xafa4('0x21')]?_[_0xafa4('0x22')](_0xe17485[_0xafa4('0x21')],function(_0x35de40){return{'model':db[_0x35de40[_0xafa4('0x23')]],'as':_0x35de40['as'],'attributes':_0x35de40[_0xafa4('0x24')]};}):[]};}):[]};}):[]:[]})[_0xafa4('0x25')](function(_0x25443d){logger[_0xafa4('0x10')](_0xafa4('0x1b'),_0x92ceb5);logger['debug']('GetFaxAccount',_0x92ceb5,JSON[_0xafa4('0x15')](_0x25443d));_0x58f54b(_0x25443d);})['catch'](function(_0x507898){logger[_0xafa4('0x16')](_0xafa4('0x1b'),_0x507898[_0xafa4('0x18')],_0x92ceb5);_0x16a564(_0x57dc37[_0xafa4('0x16')](0x1f4,_0x507898[_0xafa4('0x18')]));});});};exports['NotifyFaxAccount']=function(_0x177837,_0x450df0,_0x1105c9){var _0x9f4c46=this;return new Promise(function(_0x54cbaf,_0x4c0992){var _0x824e9b={'body':_0x177837[_0xafa4('0x26')],'channel':_0xafa4('0x27')};var _0x3556e7=[];var _0x40dc47=[];var _0x207e43={};return db[_0xafa4('0x28')]['describe']()['then'](function(_0x15fccf){if(!_0x15fccf){throw new db['Sequelize'][(_0xafa4('0x29'))](_0xafa4('0x2a'));}_0x3556e7=_[_0xafa4('0x2b')](_['keys'](_0x15fccf),['createdAt','updatedAt']);_0x40dc47=_[_0xafa4('0x2b')](_['keys'](_0x15fccf),[_0xafa4('0x2c'),_0xafa4('0x2d'),_0xafa4('0x2e'),_0xafa4('0x2f')]);if(_0x177837[_0xafa4('0x26')]['id']){delete _0x177837[_0xafa4('0x26')]['id'];}if(_['isNil'](_0x177837['body'][_0xafa4('0x30')])){throw new db[(_0xafa4('0x31'))][(_0xafa4('0x29'))]('from\x20is\x20mandatory');}if(_[_0xafa4('0x32')](_0x177837[_0xafa4('0x26')]['body'])||_0x177837[_0xafa4('0x26')][_0xafa4('0x26')]===''){throw new db['Sequelize'][(_0xafa4('0x29'))](_0xafa4('0x33'));}if(_['isNil'](_0x177837[_0xafa4('0x26')][_0xafa4('0x34')])){throw new db[(_0xafa4('0x31'))][(_0xafa4('0x29'))](_0xafa4('0x35')+_0x40dc47);}if(!_['includes'](_0x40dc47,_0x177837[_0xafa4('0x26')]['mapKey'])){throw new db[(_0xafa4('0x31'))][(_0xafa4('0x29'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x40dc47);}_0x207e43[_0x177837['body'][_0xafa4('0x34')]]=_0x177837[_0xafa4('0x26')][_0xafa4('0x30')];})[_0xafa4('0x25')](function(){return db[_0xafa4('0x1c')][_0xafa4('0x36')]({'where':{'id':_0x177837[_0xafa4('0x37')]['id']},'include':[{'model':db[_0xafa4('0x38')],'as':_0xafa4('0x39'),'include':[{'model':db[_0xafa4('0x28')],'as':_0xafa4('0x3a'),'where':_0x207e43,'limit':0x1,'order':[[_0xafa4('0x2d'),_0xafa4('0x3b')]]}]},{'model':db[_0xafa4('0x3c')],'as':_0xafa4('0x3d')}]});})[_0xafa4('0x25')](function(_0x9c4330){if(_0x9c4330&&_0x9c4330[_0xafa4('0x39')]){var _0x4bbbd2=_0x9c4330[_0xafa4('0x3e')]({'plain':!![]});_0x824e9b[_0xafa4('0x37')]=_0x4bbbd2;_0x824e9b['applications']=_0x4bbbd2['Applications'];_0x824e9b['list']=_0x4bbbd2[_0xafa4('0x39')];_0x824e9b[_0xafa4('0x3f')]=_['orderBy'](_0x824e9b[_0xafa4('0x3f')],[_0xafa4('0x40')],['asc']);if(_0x824e9b[_0xafa4('0x37')][_0xafa4('0x3d')]){delete _0x824e9b[_0xafa4('0x37')]['Applications'];}if(_0x824e9b[_0xafa4('0x37')][_0xafa4('0x39')]&&_0x824e9b[_0xafa4('0x37')]['List'][_0xafa4('0x3a')][_0xafa4('0x41')]){return _0x824e9b['account'][_0xafa4('0x39')][_0xafa4('0x3a')][0x0];}var _0x22394b=_[_0xafa4('0xc')](_0x177837[_0xafa4('0x26')],{'firstName':_0x177837[_0xafa4('0x26')][_0xafa4('0x30')],'ListId':_0x4bbbd2['ListId']});_0x22394b[_0x177837[_0xafa4('0x26')][_0xafa4('0x34')]]=_0x177837[_0xafa4('0x26')]['from'];return db[_0xafa4('0x28')][_0xafa4('0x42')](_0x22394b,{'fields':_0x3556e7,'raw':!![]});}})[_0xafa4('0x25')](function(_0x29b05e){_0x824e9b[_0xafa4('0x43')]=_0x29b05e;if(_0x29b05e){var _0x3ff3d6={'ContactId':_0x29b05e['id'],'FaxAccountId':_0x177837[_0xafa4('0x37')]['id'],'fax':_0x29b05e['fax']};return db[_0xafa4('0x44')]['find']({'where':{'ContactId':_0x29b05e['id'],'closed':![],'FaxAccountId':_0x177837[_0xafa4('0x37')]['id']}})[_0xafa4('0x25')](function(_0x4fc3aa){if(_0x4fc3aa){return[_0x4fc3aa,![]];}return db['FaxInteraction'][_0xafa4('0x42')](_0x3ff3d6)['then'](function(_0x5168ce){return[_0x5168ce,!![]];});});}else{throw new Error(_0xafa4('0x45'));}})[_0xafa4('0x46')](function(_0x1b45ce,_0x131e73){var _0x528975=_0x1b45ce[_0xafa4('0x3e')]({'plain':!![]});if(_0x131e73){if(_0x824e9b['account'][_0xafa4('0x47')]){_0x824e9b['applications']['push']({'id':0x0,'priority':_0x824e9b[_0xafa4('0x3f')][_0xafa4('0x41')]+0x1,'app':_0xafa4('0x48'),'appdata':_0xafa4('0x49'),'interval':_0xafa4('0x4a')});}_0x528975[_0xafa4('0x4b')]=!![];}else{_0x528975[_0xafa4('0x4b')]=![];}_0x824e9b[_0xafa4('0x4c')]=_0x528975;return db[_0xafa4('0x4d')][_0xafa4('0x42')]({'body':_0x177837[_0xafa4('0x26')][_0xafa4('0x26')],'FaxAccountId':_0x177837[_0xafa4('0x37')]['id'],'FaxInteractionId':_0x1b45ce['id'],'direction':'in','ContactId':_0x1b45ce[_0xafa4('0x4e')],'AttachmentId':_0x177837[_0xafa4('0x26')]['AttachmentId']});})['then'](function(_0x1e03c8){_0x824e9b['message']=_0x1e03c8;if(_0x824e9b[_0xafa4('0x4c')][_0xafa4('0x4f')]){return db['User'][_0xafa4('0x36')]({'attributes':['id','name'],'where':{'id':_0x824e9b[_0xafa4('0x4c')][_0xafa4('0x4f')]}})[_0xafa4('0x25')](function(_0x395294){if(_0x395294){_0x824e9b['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0xafa4('0x50'),'appdata':_0x395294[_0xafa4('0x51')]+','+(_0x824e9b[_0xafa4('0x37')][_0xafa4('0x52')]||0xa),'interval':_0xafa4('0x4a')});}return respondWithRpcPromise(_0xafa4('0x53'),_0xafa4('0x54'),_0x824e9b);});}return respondWithRpcPromise(_0xafa4('0x53'),_0xafa4('0x54'),_0x824e9b);})[_0xafa4('0x25')](function(_0x3fb5b0){_0x54cbaf(_0x3fb5b0);})['catch'](function(_0x4c7f8b){_0x4c0992(_0x9f4c46['error'](0x1f4,_0x4c7f8b['message']));});});};
\ No newline at end of file
index 34a5b36..96477e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fc0=['register','./faxAccount.events','save','update','emit','removeListener'];(function(_0x195eab,_0x4f2067){var _0x6c98ef=function(_0x333362){while(--_0x333362){_0x195eab['push'](_0x195eab['shift']());}};_0x6c98ef(++_0x4f2067);}(_0x3fc0,0xfd));var _0x03fc=function(_0x587fb5,_0x59cb3b){_0x587fb5=_0x587fb5-0x0;var _0x551105=_0x3fc0[_0x587fb5];return _0x551105;};'use strict';var FaxAccountEvents=require(_0x03fc('0x0'));var events=[_0x03fc('0x1'),'remove',_0x03fc('0x2')];function createListener(_0xf91bac,_0x3c96f6){return function(_0x440f10){_0x3c96f6[_0x03fc('0x3')](_0xf91bac,_0x440f10);};}function removeListener(_0x28a470,_0x53996b){return function(){FaxAccountEvents[_0x03fc('0x4')](_0x28a470,_0x53996b);};}exports[_0x03fc('0x5')]=function(_0x37e1ba){for(var _0x366110=0x0,_0x44a9e7=events['length'];_0x366110<_0x44a9e7;_0x366110++){var _0x5c2f40=events[_0x366110];var _0x53be39=createListener('faxAccount:'+_0x5c2f40,_0x37e1ba);FaxAccountEvents['on'](_0x5c2f40,_0x53be39);}};
\ No newline at end of file
+var _0x659a=['removeListener','register','length','remove','update','emit'];(function(_0x46a7aa,_0xeb94dd){var _0x423a46=function(_0x4c2176){while(--_0x4c2176){_0x46a7aa['push'](_0x46a7aa['shift']());}};_0x423a46(++_0xeb94dd);}(_0x659a,0x189));var _0xa659=function(_0x238830,_0x545f75){_0x238830=_0x238830-0x0;var _0x5917f0=_0x659a[_0x238830];return _0x5917f0;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=['save',_0xa659('0x0'),_0xa659('0x1')];function createListener(_0x1052d6,_0x3e9b1){return function(_0x39705f){_0x3e9b1[_0xa659('0x2')](_0x1052d6,_0x39705f);};}function removeListener(_0x3d7249,_0x31f29d){return function(){FaxAccountEvents[_0xa659('0x3')](_0x3d7249,_0x31f29d);};}exports[_0xa659('0x4')]=function(_0x3bb5c9){for(var _0x31c63b=0x0,_0x50f4be=events[_0xa659('0x5')];_0x31c63b<_0x50f4be;_0x31c63b++){var _0x372d3d=events[_0x31c63b];var _0x3b955b=createListener('faxAccount:'+_0x372d3d,_0x3bb5c9);FaxAccountEvents['on'](_0x372d3d,_0x3b955b);}};
\ No newline at end of file
index f821c23..d7fcd3d 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(_0x5da2e1,_0x2adbbf){var _0x478240=function(_0x4f7c21){while(--_0x4f7c21){_0x5da2e1['push'](_0x5da2e1['shift']());}};_0x478240(++_0x2adbbf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xa9e0[_0x3899d1];return _0xeb4a7d;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
+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(_0x155951,_0x177def){var _0x2a4848=function(_0x545938){while(--_0x545938){_0x155951['push'](_0x155951['shift']());}};_0x2a4848(++_0x177def);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('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 990c76c..319372f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75cc=['noop','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x75cc,0x1ac));var _0xc75c=function(_0x5348ea,_0x11007e){_0x5348ea=_0x5348ea-0x0;var _0x44514a=_0x75cc[_0x5348ea];return _0x44514a;};'use strict';var Sequelize=require(_0xc75c('0x0'));module[_0xc75c('0x1')]={'priority':{'type':Sequelize[_0xc75c('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xc75c('0x3')],'allowNull':![],'defaultValue':_0xc75c('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xc75c('0x3')],'defaultValue':_0xc75c('0x5')}};
\ No newline at end of file
+var _0x41fa=['*,*,*,*','noop','STRING'];(function(_0x9e575,_0x5894d4){var _0x522277=function(_0x1f5458){while(--_0x1f5458){_0x9e575['push'](_0x9e575['shift']());}};_0x522277(++_0x5894d4);}(_0x41fa,0x16f));var _0xa41f=function(_0x5774be,_0x2259d3){_0x5774be=_0x5774be-0x0;var _0x4914b4=_0x41fa[_0x5774be];return _0x4914b4;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xa41f('0x0')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xa41f('0x1')]},'interval':{'type':Sequelize[_0xa41f('0x1')],'defaultValue':_0xa41f('0x2')}};
\ No newline at end of file
index 39dc585..63626a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbed=['name','query','keys','intersection','attributes','fields','length','nolimit','order','sort','filters','pick','filter','merge','where','VIRTUAL','options','count','includeAll','findAll','rows','show','params','find','catch','create','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','send','index','FaxApplication','rawAttributes','fieldName','model','map'];(function(_0xd3a39a,_0x32d04d){var _0x5229e2=function(_0x167037){while(--_0x167037){_0xd3a39a['push'](_0xd3a39a['shift']());}};_0x5229e2(++_0x32d04d);}(_0xdbed,0x69));var _0xddbe=function(_0x116d4c,_0xf58d9a){_0x116d4c=_0x116d4c-0x0;var _0x4d962d=_0xdbed[_0x116d4c];return _0x4d962d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xddbe('0x0'));var zipdir=require(_0xddbe('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xddbe('0x2'));var moment=require(_0xddbe('0x3'));var BPromise=require(_0xddbe('0x4'));var Mustache=require(_0xddbe('0x5'));var util=require(_0xddbe('0x6'));var path=require(_0xddbe('0x7'));var sox=require(_0xddbe('0x8'));var csv=require(_0xddbe('0x9'));var ejs=require(_0xddbe('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xddbe('0xb'));var squel=require(_0xddbe('0xc'));var crypto=require(_0xddbe('0xd'));var jsforce=require(_0xddbe('0xe'));var deskjs=require(_0xddbe('0xf'));var toCsv=require(_0xddbe('0x9'));var querystring=require(_0xddbe('0x10'));var Papa=require(_0xddbe('0x11'));var Redis=require(_0xddbe('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xddbe('0x13'));var as=require(_0xddbe('0x14'));var hardwareService=require(_0xddbe('0x15'));var logger=require(_0xddbe('0x16'))(_0xddbe('0x17'));var utils=require(_0xddbe('0x18'));var config=require(_0xddbe('0x19'));var licenseUtil=require(_0xddbe('0x1a'));var db=require(_0xddbe('0x1b'))['db'];function respondWithStatusCode(_0x354970,_0x32ba25){_0x32ba25=_0x32ba25||0xcc;return function(_0x4fc40a){if(_0x4fc40a){return _0x354970[_0xddbe('0x1c')](_0x32ba25);}return _0x354970[_0xddbe('0x1d')](_0x32ba25)['end']();};}function respondWithResult(_0xd02c5b,_0x36f034){_0x36f034=_0x36f034||0xc8;return function(_0x1ed2db){if(_0x1ed2db){return _0xd02c5b[_0xddbe('0x1d')](_0x36f034)[_0xddbe('0x1e')](_0x1ed2db);}};}function respondWithFilteredResult(_0x19e39f,_0x503c03){return function(_0xe26d8a){if(_0xe26d8a){var _0x1689a3=typeof _0x503c03[_0xddbe('0x1f')]===_0xddbe('0x20')&&typeof _0x503c03['limit']==='undefined';var _0x51bf9=_0xe26d8a['count'];var _0x358064=_0x1689a3?0x0:_0x503c03['offset'];var _0x5b3a2e=_0x1689a3?_0xe26d8a['count']:_0x503c03[_0xddbe('0x1f')]+_0x503c03[_0xddbe('0x21')];var _0x59aa93;if(_0x5b3a2e>=_0x51bf9){_0x5b3a2e=_0x51bf9;_0x59aa93=0xc8;}else{_0x59aa93=0xce;}_0x19e39f[_0xddbe('0x1d')](_0x59aa93);return _0x19e39f[_0xddbe('0x22')](_0xddbe('0x23'),_0x358064+'-'+_0x5b3a2e+'/'+_0x51bf9)[_0xddbe('0x1e')](_0xe26d8a);}return null;};}function patchUpdates(_0x1d938e){return function(_0x39d421){try{jsonpatch[_0xddbe('0x24')](_0x39d421,_0x1d938e,!![]);}catch(_0x563b3c){return BPromise[_0xddbe('0x25')](_0x563b3c);}return _0x39d421[_0xddbe('0x26')]();};}function saveUpdates(_0x370051,_0x1f6611){return function(_0x54139c){if(_0x54139c){return _0x54139c[_0xddbe('0x27')](_0x370051)[_0xddbe('0x28')](function(_0x9b5c36){return _0x9b5c36;});}return null;};}function removeEntity(_0x1f218d,_0x27ce71){return function(_0x2294d2){if(_0x2294d2){return _0x2294d2[_0xddbe('0x29')]()[_0xddbe('0x28')](function(){_0x1f218d['status'](0xcc)[_0xddbe('0x2a')]();});}};}function handleEntityNotFound(_0x261ea3,_0x35c277){return function(_0xb324c0){if(!_0xb324c0){_0x261ea3['sendStatus'](0x194);}return _0xb324c0;};}function handleError(_0x5aa0e7,_0x3a5cff){_0x3a5cff=_0x3a5cff||0x1f4;return function(_0x52797a){logger['error'](_0x52797a[_0xddbe('0x2b')]);if(_0x52797a['name']){delete _0x52797a['name'];}_0x5aa0e7['status'](_0x3a5cff)[_0xddbe('0x2c')](_0x52797a);};}exports[_0xddbe('0x2d')]=function(_0x590abb,_0x42ddfe){var _0x570110={},_0x3453fc={},_0xcb004c={'count':0x0,'rows':[]};var _0x3eedb2=_['map'](db[_0xddbe('0x2e')][_0xddbe('0x2f')],function(_0x406996){return{'name':_0x406996[_0xddbe('0x30')],'type':_0x406996['type']['key']};});_0x3453fc[_0xddbe('0x31')]=_[_0xddbe('0x32')](_0x3eedb2,_0xddbe('0x33'));_0x3453fc[_0xddbe('0x34')]=_[_0xddbe('0x35')](_0x590abb['query']);_0x3453fc['filters']=_[_0xddbe('0x36')](_0x3453fc[_0xddbe('0x31')],_0x3453fc[_0xddbe('0x34')]);_0x570110[_0xddbe('0x37')]=_[_0xddbe('0x36')](_0x3453fc[_0xddbe('0x31')],qs[_0xddbe('0x38')](_0x590abb[_0xddbe('0x34')][_0xddbe('0x38')]));_0x570110[_0xddbe('0x37')]=_0x570110[_0xddbe('0x37')][_0xddbe('0x39')]?_0x570110[_0xddbe('0x37')]:_0x3453fc[_0xddbe('0x31')];if(!_0x590abb['query']['hasOwnProperty'](_0xddbe('0x3a'))){_0x570110['limit']=qs[_0xddbe('0x21')](_0x590abb[_0xddbe('0x34')]['limit']);_0x570110[_0xddbe('0x1f')]=qs[_0xddbe('0x1f')](_0x590abb[_0xddbe('0x34')][_0xddbe('0x1f')]);}_0x570110[_0xddbe('0x3b')]=qs[_0xddbe('0x3c')](_0x590abb[_0xddbe('0x34')][_0xddbe('0x3c')]);_0x570110['where']=qs[_0xddbe('0x3d')](_[_0xddbe('0x3e')](_0x590abb[_0xddbe('0x34')],_0x3453fc[_0xddbe('0x3d')]),_0x3eedb2);if(_0x590abb[_0xddbe('0x34')][_0xddbe('0x3f')]){_0x570110['where']=_[_0xddbe('0x40')](_0x570110[_0xddbe('0x41')],{'$or':_['map'](_0x3eedb2,function(_0x449ce5){if(_0x449ce5['type']!==_0xddbe('0x42')){var _0x5bbaa1={};_0x5bbaa1[_0x449ce5[_0xddbe('0x33')]]={'$like':'%'+_0x590abb['query'][_0xddbe('0x3f')]+'%'};return _0x5bbaa1;}})});}_0x570110=_[_0xddbe('0x40')]({},_0x570110,_0x590abb[_0xddbe('0x43')]);var _0x1b7ead={'where':_0x570110['where']};return db[_0xddbe('0x2e')][_0xddbe('0x44')](_0x1b7ead)[_0xddbe('0x28')](function(_0x255ac0){_0xcb004c[_0xddbe('0x44')]=_0x255ac0;if(_0x590abb[_0xddbe('0x34')][_0xddbe('0x45')]){_0x570110['include']=[{'all':!![]}];}return db[_0xddbe('0x2e')][_0xddbe('0x46')](_0x570110);})[_0xddbe('0x28')](function(_0x40edd1){_0xcb004c[_0xddbe('0x47')]=_0x40edd1;return _0xcb004c;})[_0xddbe('0x28')](respondWithFilteredResult(_0x42ddfe,_0x570110))['catch'](handleError(_0x42ddfe,null));};exports[_0xddbe('0x48')]=function(_0x3d79df,_0x54dc07){var _0x4343a7={'raw':!![],'where':{'id':_0x3d79df[_0xddbe('0x49')]['id']}},_0xe51338={};_0xe51338[_0xddbe('0x31')]=_[_0xddbe('0x35')](db[_0xddbe('0x2e')]['rawAttributes']);_0xe51338[_0xddbe('0x34')]=_[_0xddbe('0x35')](_0x3d79df[_0xddbe('0x34')]);_0xe51338[_0xddbe('0x3d')]=_[_0xddbe('0x36')](_0xe51338[_0xddbe('0x31')],_0xe51338[_0xddbe('0x34')]);_0x4343a7['attributes']=_[_0xddbe('0x36')](_0xe51338[_0xddbe('0x31')],qs['fields'](_0x3d79df[_0xddbe('0x34')]['fields']));_0x4343a7[_0xddbe('0x37')]=_0x4343a7['attributes']['length']?_0x4343a7[_0xddbe('0x37')]:_0xe51338[_0xddbe('0x31')];if(_0x3d79df[_0xddbe('0x34')]['includeAll']){_0x4343a7['include']=[{'all':!![]}];}_0x4343a7=_['merge']({},_0x4343a7,_0x3d79df['options']);return db[_0xddbe('0x2e')][_0xddbe('0x4a')](_0x4343a7)[_0xddbe('0x28')](handleEntityNotFound(_0x54dc07,null))[_0xddbe('0x28')](respondWithResult(_0x54dc07,null))[_0xddbe('0x4b')](handleError(_0x54dc07,null));};exports[_0xddbe('0x4c')]=function(_0x486e32,_0xab122f){return db[_0xddbe('0x2e')][_0xddbe('0x4c')](_0x486e32[_0xddbe('0x4d')],{})[_0xddbe('0x28')](respondWithResult(_0xab122f,0xc9))[_0xddbe('0x4b')](handleError(_0xab122f,null));};exports['update']=function(_0x2737bc,_0x3a891e){if(_0x2737bc[_0xddbe('0x4d')]['id']){delete _0x2737bc[_0xddbe('0x4d')]['id'];}return db[_0xddbe('0x2e')][_0xddbe('0x4a')]({'where':{'id':_0x2737bc[_0xddbe('0x49')]['id']}})['then'](handleEntityNotFound(_0x3a891e,null))[_0xddbe('0x28')](saveUpdates(_0x2737bc['body'],null))[_0xddbe('0x28')](respondWithResult(_0x3a891e,null))[_0xddbe('0x4b')](handleError(_0x3a891e,null));};exports[_0xddbe('0x29')]=function(_0x2ce50a,_0xf4c79){return db[_0xddbe('0x2e')][_0xddbe('0x4a')]({'where':{'id':_0x2ce50a[_0xddbe('0x49')]['id']}})[_0xddbe('0x28')](handleEntityNotFound(_0xf4c79,null))[_0xddbe('0x28')](removeEntity(_0xf4c79,null))[_0xddbe('0x4b')](handleError(_0xf4c79,null));};
\ No newline at end of file
+var _0x3f5c=['stack','name','send','map','FaxApplication','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','sort','where','pick','filters','VIRTUAL','filter','options','includeAll','include','findAll','show','params','keys','merge','catch','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','count','set','reject','save','update','then','destroy','error'];(function(_0x316430,_0x27090d){var _0x541be2=function(_0x5ce9ef){while(--_0x5ce9ef){_0x316430['push'](_0x316430['shift']());}};_0x541be2(++_0x27090d);}(_0x3f5c,0x6c));var _0xc3f5=function(_0x35c22c,_0x3c997d){_0x35c22c=_0x35c22c-0x0;var _0x4e4d85=_0x3f5c[_0x35c22c];return _0x4e4d85;};'use strict';var emlformat=require(_0xc3f5('0x0'));var rimraf=require(_0xc3f5('0x1'));var zipdir=require(_0xc3f5('0x2'));var jsonpatch=require(_0xc3f5('0x3'));var rp=require(_0xc3f5('0x4'));var moment=require(_0xc3f5('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc3f5('0x6'));var util=require('util');var path=require(_0xc3f5('0x7'));var sox=require(_0xc3f5('0x8'));var csv=require(_0xc3f5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc3f5('0xa'));var _=require(_0xc3f5('0xb'));var squel=require(_0xc3f5('0xc'));var crypto=require(_0xc3f5('0xd'));var jsforce=require(_0xc3f5('0xe'));var deskjs=require(_0xc3f5('0xf'));var toCsv=require(_0xc3f5('0x9'));var querystring=require(_0xc3f5('0x10'));var Papa=require('papaparse');var Redis=require(_0xc3f5('0x11'));var authService=require(_0xc3f5('0x12'));var qs=require(_0xc3f5('0x13'));var as=require(_0xc3f5('0x14'));var hardwareService=require(_0xc3f5('0x15'));var logger=require('../../config/logger')(_0xc3f5('0x16'));var utils=require('../../config/utils');var config=require(_0xc3f5('0x17'));var licenseUtil=require(_0xc3f5('0x18'));var db=require(_0xc3f5('0x19'))['db'];function respondWithStatusCode(_0xbc430e,_0x3dcd2d){_0x3dcd2d=_0x3dcd2d||0xcc;return function(_0x13ab2e){if(_0x13ab2e){return _0xbc430e[_0xc3f5('0x1a')](_0x3dcd2d);}return _0xbc430e['status'](_0x3dcd2d)[_0xc3f5('0x1b')]();};}function respondWithResult(_0x20acf4,_0xf17de0){_0xf17de0=_0xf17de0||0xc8;return function(_0x263500){if(_0x263500){return _0x20acf4[_0xc3f5('0x1c')](_0xf17de0)[_0xc3f5('0x1d')](_0x263500);}};}function respondWithFilteredResult(_0xf94baf,_0x3ccfd7){return function(_0x5e3893){if(_0x5e3893){var _0x2c4895=typeof _0x3ccfd7[_0xc3f5('0x1e')]==='undefined'&&typeof _0x3ccfd7[_0xc3f5('0x1f')]==='undefined';var _0x1099de=_0x5e3893[_0xc3f5('0x20')];var _0x1efa19=_0x2c4895?0x0:_0x3ccfd7[_0xc3f5('0x1e')];var _0xce2567=_0x2c4895?_0x5e3893[_0xc3f5('0x20')]:_0x3ccfd7[_0xc3f5('0x1e')]+_0x3ccfd7[_0xc3f5('0x1f')];var _0x4be1ca;if(_0xce2567>=_0x1099de){_0xce2567=_0x1099de;_0x4be1ca=0xc8;}else{_0x4be1ca=0xce;}_0xf94baf[_0xc3f5('0x1c')](_0x4be1ca);return _0xf94baf[_0xc3f5('0x21')]('Content-Range',_0x1efa19+'-'+_0xce2567+'/'+_0x1099de)[_0xc3f5('0x1d')](_0x5e3893);}return null;};}function patchUpdates(_0x4a2bd4){return function(_0x189189){try{jsonpatch['apply'](_0x189189,_0x4a2bd4,!![]);}catch(_0x32aa09){return BPromise[_0xc3f5('0x22')](_0x32aa09);}return _0x189189[_0xc3f5('0x23')]();};}function saveUpdates(_0x4a2c5d,_0x279cc5){return function(_0x54b675){if(_0x54b675){return _0x54b675[_0xc3f5('0x24')](_0x4a2c5d)[_0xc3f5('0x25')](function(_0x10e6c8){return _0x10e6c8;});}return null;};}function removeEntity(_0x3dfc7e,_0x15192e){return function(_0x12ba7e){if(_0x12ba7e){return _0x12ba7e[_0xc3f5('0x26')]()[_0xc3f5('0x25')](function(){_0x3dfc7e[_0xc3f5('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x290902,_0x42d2cc){return function(_0x378421){if(!_0x378421){_0x290902[_0xc3f5('0x1a')](0x194);}return _0x378421;};}function handleError(_0x419a2c,_0x1d88c6){_0x1d88c6=_0x1d88c6||0x1f4;return function(_0x17644b){logger[_0xc3f5('0x27')](_0x17644b[_0xc3f5('0x28')]);if(_0x17644b['name']){delete _0x17644b[_0xc3f5('0x29')];}_0x419a2c[_0xc3f5('0x1c')](_0x1d88c6)[_0xc3f5('0x2a')](_0x17644b);};}exports['index']=function(_0x59f27c,_0x2fc69b){var _0x4f4da2={},_0x333613={},_0x5b9968={'count':0x0,'rows':[]};var _0x3f89c6=_[_0xc3f5('0x2b')](db[_0xc3f5('0x2c')][_0xc3f5('0x2d')],function(_0x339546){return{'name':_0x339546[_0xc3f5('0x2e')],'type':_0x339546[_0xc3f5('0x2f')][_0xc3f5('0x30')]};});_0x333613['model']=_['map'](_0x3f89c6,_0xc3f5('0x29'));_0x333613[_0xc3f5('0x31')]=_['keys'](_0x59f27c['query']);_0x333613['filters']=_[_0xc3f5('0x32')](_0x333613[_0xc3f5('0x33')],_0x333613[_0xc3f5('0x31')]);_0x4f4da2[_0xc3f5('0x34')]=_['intersection'](_0x333613['model'],qs[_0xc3f5('0x35')](_0x59f27c['query'][_0xc3f5('0x35')]));_0x4f4da2['attributes']=_0x4f4da2['attributes'][_0xc3f5('0x36')]?_0x4f4da2[_0xc3f5('0x34')]:_0x333613['model'];if(!_0x59f27c[_0xc3f5('0x31')][_0xc3f5('0x37')]('nolimit')){_0x4f4da2[_0xc3f5('0x1f')]=qs[_0xc3f5('0x1f')](_0x59f27c[_0xc3f5('0x31')][_0xc3f5('0x1f')]);_0x4f4da2[_0xc3f5('0x1e')]=qs[_0xc3f5('0x1e')](_0x59f27c['query'][_0xc3f5('0x1e')]);}_0x4f4da2['order']=qs['sort'](_0x59f27c['query'][_0xc3f5('0x38')]);_0x4f4da2[_0xc3f5('0x39')]=qs['filters'](_[_0xc3f5('0x3a')](_0x59f27c[_0xc3f5('0x31')],_0x333613[_0xc3f5('0x3b')]),_0x3f89c6);if(_0x59f27c[_0xc3f5('0x31')]['filter']){_0x4f4da2[_0xc3f5('0x39')]=_['merge'](_0x4f4da2[_0xc3f5('0x39')],{'$or':_[_0xc3f5('0x2b')](_0x3f89c6,function(_0x1325c7){if(_0x1325c7[_0xc3f5('0x2f')]!==_0xc3f5('0x3c')){var _0x255090={};_0x255090[_0x1325c7[_0xc3f5('0x29')]]={'$like':'%'+_0x59f27c[_0xc3f5('0x31')][_0xc3f5('0x3d')]+'%'};return _0x255090;}})});}_0x4f4da2=_['merge']({},_0x4f4da2,_0x59f27c[_0xc3f5('0x3e')]);var _0x49b6c2={'where':_0x4f4da2[_0xc3f5('0x39')]};return db[_0xc3f5('0x2c')][_0xc3f5('0x20')](_0x49b6c2)[_0xc3f5('0x25')](function(_0x2eff58){_0x5b9968[_0xc3f5('0x20')]=_0x2eff58;if(_0x59f27c[_0xc3f5('0x31')][_0xc3f5('0x3f')]){_0x4f4da2[_0xc3f5('0x40')]=[{'all':!![]}];}return db[_0xc3f5('0x2c')][_0xc3f5('0x41')](_0x4f4da2);})[_0xc3f5('0x25')](function(_0x264ef5){_0x5b9968['rows']=_0x264ef5;return _0x5b9968;})['then'](respondWithFilteredResult(_0x2fc69b,_0x4f4da2))['catch'](handleError(_0x2fc69b,null));};exports[_0xc3f5('0x42')]=function(_0x187847,_0x27dd2e){var _0x3c383c={'raw':!![],'where':{'id':_0x187847[_0xc3f5('0x43')]['id']}},_0x1dcf07={};_0x1dcf07[_0xc3f5('0x33')]=_[_0xc3f5('0x44')](db[_0xc3f5('0x2c')][_0xc3f5('0x2d')]);_0x1dcf07[_0xc3f5('0x31')]=_[_0xc3f5('0x44')](_0x187847[_0xc3f5('0x31')]);_0x1dcf07['filters']=_[_0xc3f5('0x32')](_0x1dcf07[_0xc3f5('0x33')],_0x1dcf07[_0xc3f5('0x31')]);_0x3c383c[_0xc3f5('0x34')]=_[_0xc3f5('0x32')](_0x1dcf07[_0xc3f5('0x33')],qs[_0xc3f5('0x35')](_0x187847[_0xc3f5('0x31')][_0xc3f5('0x35')]));_0x3c383c[_0xc3f5('0x34')]=_0x3c383c[_0xc3f5('0x34')][_0xc3f5('0x36')]?_0x3c383c['attributes']:_0x1dcf07[_0xc3f5('0x33')];if(_0x187847[_0xc3f5('0x31')][_0xc3f5('0x3f')]){_0x3c383c[_0xc3f5('0x40')]=[{'all':!![]}];}_0x3c383c=_[_0xc3f5('0x45')]({},_0x3c383c,_0x187847[_0xc3f5('0x3e')]);return db[_0xc3f5('0x2c')]['find'](_0x3c383c)[_0xc3f5('0x25')](handleEntityNotFound(_0x27dd2e,null))[_0xc3f5('0x25')](respondWithResult(_0x27dd2e,null))[_0xc3f5('0x46')](handleError(_0x27dd2e,null));};exports[_0xc3f5('0x47')]=function(_0x31f2a6,_0x3c9c77){return db[_0xc3f5('0x2c')]['create'](_0x31f2a6['body'],{})[_0xc3f5('0x25')](respondWithResult(_0x3c9c77,0xc9))[_0xc3f5('0x46')](handleError(_0x3c9c77,null));};exports[_0xc3f5('0x24')]=function(_0x53c918,_0x3651d0){if(_0x53c918[_0xc3f5('0x48')]['id']){delete _0x53c918[_0xc3f5('0x48')]['id'];}return db[_0xc3f5('0x2c')]['find']({'where':{'id':_0x53c918['params']['id']}})[_0xc3f5('0x25')](handleEntityNotFound(_0x3651d0,null))[_0xc3f5('0x25')](saveUpdates(_0x53c918['body'],null))['then'](respondWithResult(_0x3651d0,null))[_0xc3f5('0x46')](handleError(_0x3651d0,null));};exports['destroy']=function(_0x31baac,_0x21bdac){return db[_0xc3f5('0x2c')][_0xc3f5('0x49')]({'where':{'id':_0x31baac['params']['id']}})['then'](handleEntityNotFound(_0x21bdac,null))['then'](removeEntity(_0x21bdac,null))[_0xc3f5('0x46')](handleError(_0x21bdac,null));};
\ No newline at end of file
index 1b8b087..6fea44e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ab6=['utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','fax_applications'];(function(_0x15d26a,_0x230cc1){var _0x4a031f=function(_0x34d7a2){while(--_0x34d7a2){_0x15d26a['push'](_0x15d26a['shift']());}};_0x4a031f(++_0x230cc1);}(_0x3ab6,0x1c4));var _0x63ab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ab6[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x63ab('0x0'));var util=require(_0x63ab('0x1'));var logger=require(_0x63ab('0x2'))(_0x63ab('0x3'));var moment=require(_0x63ab('0x4'));var BPromise=require(_0x63ab('0x5'));var rp=require(_0x63ab('0x6'));var fs=require('fs');var path=require(_0x63ab('0x7'));var rimraf=require(_0x63ab('0x8'));var config=require(_0x63ab('0x9'));var attributes=require('./faxApplication.attributes');module[_0x63ab('0xa')]=function(_0x482eac,_0x51599b){return _0x482eac[_0x63ab('0xb')]('FaxApplication',attributes,{'tableName':_0x63ab('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x63ab('0xd'),'collate':_0x63ab('0xe')});};
\ No newline at end of file
+var _0xa481=['util','../../config/logger','moment','bluebird','rimraf','../../config/environment','exports','define','lodash'];(function(_0x5543e4,_0x1e97e0){var _0x1d1b7e=function(_0x1d7e4e){while(--_0x1d7e4e){_0x5543e4['push'](_0x5543e4['shift']());}};_0x1d1b7e(++_0x1e97e0);}(_0xa481,0x116));var _0x1a48=function(_0x558bb8,_0x474ea8){_0x558bb8=_0x558bb8-0x0;var _0x12f4f8=_0xa481[_0x558bb8];return _0x12f4f8;};'use strict';var _=require(_0x1a48('0x0'));var util=require(_0x1a48('0x1'));var logger=require(_0x1a48('0x2'))('api');var moment=require(_0x1a48('0x3'));var BPromise=require(_0x1a48('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1a48('0x5'));var config=require(_0x1a48('0x6'));var attributes=require('./faxApplication.attributes');module[_0x1a48('0x7')]=function(_0x31e09a,_0x578564){return _0x31e09a[_0x1a48('0x8')]('FaxApplication',attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 792b784..9acc8ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa86=['info','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxApplication,\x20%s,\x20%s','message','catch','UpdateFaxApplication','FaxApplication','update','options','where','limit','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then'];(function(_0x561c25,_0x385020){var _0x45f2f3=function(_0x23b88d){while(--_0x23b88d){_0x561c25['push'](_0x561c25['shift']());}};_0x45f2f3(++_0x385020);}(_0xaa86,0x97));var _0x6aa8=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xaa86[_0x28947d];return _0x12d2ee;};'use strict';var _=require('lodash');var util=require(_0x6aa8('0x0'));var moment=require(_0x6aa8('0x1'));var BPromise=require(_0x6aa8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6aa8('0x3'));var db=require(_0x6aa8('0x4'))['db'];var utils=require(_0x6aa8('0x5'));var logger=require(_0x6aa8('0x6'))('rpc');var config=require(_0x6aa8('0x7'));var jayson=require(_0x6aa8('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xe3d069,_0x14b3c3,_0x261979){return new BPromise(function(_0x31b6c2,_0x3c8017){return client[_0x6aa8('0x9')](_0xe3d069,_0x261979)[_0x6aa8('0xa')](function(_0x407b92){logger[_0x6aa8('0xb')]('FaxApplication,\x20%s,\x20%s',_0x14b3c3,_0x6aa8('0xc'));logger[_0x6aa8('0xd')](_0x6aa8('0xe'),_0x14b3c3,'request\x20sent',JSON[_0x6aa8('0xf')](_0x407b92));if(_0x407b92[_0x6aa8('0x10')]){if(_0x407b92[_0x6aa8('0x10')][_0x6aa8('0x11')]===0x1f4){logger[_0x6aa8('0x10')](_0x6aa8('0x12'),_0x14b3c3,_0x407b92[_0x6aa8('0x10')]['message']);return _0x3c8017(_0x407b92['error'][_0x6aa8('0x13')]);}logger['error'](_0x6aa8('0x12'),_0x14b3c3,_0x407b92[_0x6aa8('0x10')]['message']);return _0x31b6c2(_0x407b92[_0x6aa8('0x10')][_0x6aa8('0x13')]);}else{logger[_0x6aa8('0xb')](_0x6aa8('0x12'),_0x14b3c3,'request\x20sent');_0x31b6c2(_0x407b92['result']['message']);}})[_0x6aa8('0x14')](function(_0x199595){logger[_0x6aa8('0x10')]('FaxApplication,\x20%s,\x20%s',_0x14b3c3,_0x199595);_0x3c8017(_0x199595);});});}exports[_0x6aa8('0x15')]=function(_0x388eee){var _0x3fbf4b=this;return new Promise(function(_0xb5b456,_0x2f0994){return db[_0x6aa8('0x16')][_0x6aa8('0x17')](_0x388eee['body'],{'raw':_0x388eee[_0x6aa8('0x18')]?_0x388eee[_0x6aa8('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x388eee[_0x6aa8('0x18')]?_0x388eee['options'][_0x6aa8('0x19')]||null:null,'attributes':_0x388eee[_0x6aa8('0x18')]?_0x388eee[_0x6aa8('0x18')]['attributes']||null:null,'limit':_0x388eee[_0x6aa8('0x18')]?_0x388eee['options'][_0x6aa8('0x1a')]||null:null})[_0x6aa8('0xa')](function(_0x4b9d9d){logger[_0x6aa8('0xb')](_0x6aa8('0x15'),_0x388eee);logger[_0x6aa8('0xd')]('UpdateFaxApplication',_0x388eee,JSON['stringify'](_0x4b9d9d));_0xb5b456(_0x4b9d9d);})['catch'](function(_0x4f9623){logger[_0x6aa8('0x10')](_0x6aa8('0x15'),_0x4f9623['message'],_0x388eee);_0x2f0994(_0x3fbf4b[_0x6aa8('0x10')](0x1f4,_0x4f9623[_0x6aa8('0x13')]));});});};
\ No newline at end of file
+var _0x6234=['lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateFaxApplication','FaxApplication','body','options','raw','limit','info'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x6234,0x1c2));var _0x4623=function(_0x3e317d,_0x1504e9){_0x3e317d=_0x3e317d-0x0;var _0x22372d=_0x6234[_0x3e317d];return _0x22372d;};'use strict';var _=require(_0x4623('0x0'));var util=require(_0x4623('0x1'));var moment=require('moment');var BPromise=require(_0x4623('0x2'));var rs=require(_0x4623('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4623('0x4'))['db'];var utils=require(_0x4623('0x5'));var logger=require(_0x4623('0x6'))('rpc');var config=require(_0x4623('0x7'));var jayson=require(_0x4623('0x8'));var client=jayson[_0x4623('0x9')][_0x4623('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x35d00f,_0x35f3d7,_0x168d68){return new BPromise(function(_0x152563,_0x322b7f){return client[_0x4623('0xb')](_0x35d00f,_0x168d68)[_0x4623('0xc')](function(_0x372ebb){logger['info'](_0x4623('0xd'),_0x35f3d7,_0x4623('0xe'));logger[_0x4623('0xf')](_0x4623('0x10'),_0x35f3d7,_0x4623('0xe'),JSON[_0x4623('0x11')](_0x372ebb));if(_0x372ebb[_0x4623('0x12')]){if(_0x372ebb[_0x4623('0x12')][_0x4623('0x13')]===0x1f4){logger[_0x4623('0x12')](_0x4623('0xd'),_0x35f3d7,_0x372ebb[_0x4623('0x12')][_0x4623('0x14')]);return _0x322b7f(_0x372ebb[_0x4623('0x12')][_0x4623('0x14')]);}logger[_0x4623('0x12')](_0x4623('0xd'),_0x35f3d7,_0x372ebb[_0x4623('0x12')][_0x4623('0x14')]);return _0x152563(_0x372ebb[_0x4623('0x12')]['message']);}else{logger['info']('FaxApplication,\x20%s,\x20%s',_0x35f3d7,_0x4623('0xe'));_0x152563(_0x372ebb[_0x4623('0x15')][_0x4623('0x14')]);}})[_0x4623('0x16')](function(_0xcb67c3){logger[_0x4623('0x12')](_0x4623('0xd'),_0x35f3d7,_0xcb67c3);_0x322b7f(_0xcb67c3);});});}exports[_0x4623('0x17')]=function(_0x2aa6da){var _0x36b71d=this;return new Promise(function(_0x51d6bb,_0x187f2e){return db[_0x4623('0x18')]['update'](_0x2aa6da[_0x4623('0x19')],{'raw':_0x2aa6da['options']?_0x2aa6da[_0x4623('0x1a')][_0x4623('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2aa6da[_0x4623('0x1a')]?_0x2aa6da['options']['where']||null:null,'attributes':_0x2aa6da[_0x4623('0x1a')]?_0x2aa6da['options']['attributes']||null:null,'limit':_0x2aa6da[_0x4623('0x1a')]?_0x2aa6da['options'][_0x4623('0x1c')]||null:null})[_0x4623('0xc')](function(_0x72a689){logger[_0x4623('0x1d')]('UpdateFaxApplication',_0x2aa6da);logger['debug'](_0x4623('0x17'),_0x2aa6da,JSON['stringify'](_0x72a689));_0x51d6bb(_0x72a689);})[_0x4623('0x16')](function(_0x2aa819){logger['error']('UpdateFaxApplication',_0x2aa819[_0x4623('0x14')],_0x2aa6da);_0x187f2e(_0x36b71d['error'](0x1f4,_0x2aa819[_0x4623('0x14')]));});});};
\ No newline at end of file
index 89685ac..f535577 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','util','path'];(function(_0x4b3f33,_0x263610){var _0x22516a=function(_0x1323b0){while(--_0x1323b0){_0x4b3f33['push'](_0x4b3f33['shift']());}};_0x22516a(++_0x263610);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xbaf0[_0x6c993a];return _0x27f547;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['show']);router[_0x0baf('0xd')]('/',auth['isAuthenticated'](),controller[_0x0baf('0xe')]);router[_0x0baf('0xf')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x10')]);router[_0x0baf('0x11')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);module[_0x0baf('0x13')]=router;
\ No newline at end of file
+var _0x2547=['delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxApplication.controller','get','isAuthenticated','index','/:id','show','update'];(function(_0xf7a9cf,_0x2cfa33){var _0x7fdc45=function(_0x44b354){while(--_0x44b354){_0xf7a9cf['push'](_0xf7a9cf['shift']());}};_0x7fdc45(++_0x2cfa33);}(_0x2547,0x1cd));var _0x7254=function(_0x1dba8a,_0x2cd7dc){_0x1dba8a=_0x1dba8a-0x0;var _0xb35031=_0x2547[_0x1dba8a];return _0xb35031;};'use strict';var multer=require('multer');var util=require(_0x7254('0x0'));var path=require(_0x7254('0x1'));var timeout=require(_0x7254('0x2'));var express=require(_0x7254('0x3'));var router=express[_0x7254('0x4')]();var fs_extra=require(_0x7254('0x5'));var auth=require(_0x7254('0x6'));var interaction=require(_0x7254('0x7'));var config=require('../../config/environment');var controller=require(_0x7254('0x8'));router[_0x7254('0x9')]('/',auth[_0x7254('0xa')](),controller[_0x7254('0xb')]);router['get'](_0x7254('0xc'),auth[_0x7254('0xa')](),controller[_0x7254('0xd')]);router['post']('/',auth[_0x7254('0xa')](),controller['create']);router['put']('/:id',auth[_0x7254('0xa')](),controller[_0x7254('0xe')]);router[_0x7254('0xf')](_0x7254('0xc'),auth[_0x7254('0xa')](),controller[_0x7254('0x10')]);module['exports']=router;
\ No newline at end of file
index 864f63b..d981077 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cef=['ENUM','sequelize','exports','DATE','STRING','out'];(function(_0x18be4a,_0x175619){var _0x2a367f=function(_0x4a83d8){while(--_0x4a83d8){_0x18be4a['push'](_0x18be4a['shift']());}};_0x2a367f(++_0x175619);}(_0x9cef,0x1d5));var _0xf9ce=function(_0x1e2f5b,_0x60bf47){_0x1e2f5b=_0x1e2f5b-0x0;var _0x2bb7bc=_0x9cef[_0x1e2f5b];return _0x2bb7bc;};'use strict';var Sequelize=require(_0xf9ce('0x0'));module[_0xf9ce('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xf9ce('0x2')]},'disposition':{'type':Sequelize[_0xf9ce('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xf9ce('0x3')]},'note':{'type':Sequelize[_0xf9ce('0x3')]},'read1stAt':{'type':Sequelize[_0xf9ce('0x2')]},'fax':{'type':Sequelize[_0xf9ce('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xf9ce('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xf9ce('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xf9ce('0x5')]('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x3e91=['STRING','ENUM','out','sequelize','exports','BOOLEAN','DATE'];(function(_0x3ae25d,_0x30c7f2){var _0x59937e=function(_0x3354ab){while(--_0x3354ab){_0x3ae25d['push'](_0x3ae25d['shift']());}};_0x59937e(++_0x30c7f2);}(_0x3e91,0x137));var _0x13e9=function(_0x1b8d87,_0x4168fb){_0x1b8d87=_0x1b8d87-0x0;var _0x182b74=_0x3e91[_0x1b8d87];return _0x182b74;};'use strict';var Sequelize=require(_0x13e9('0x0'));module[_0x13e9('0x1')]={'closed':{'type':Sequelize[_0x13e9('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x13e9('0x3')]},'disposition':{'type':Sequelize[_0x13e9('0x4')]},'secondDisposition':{'type':Sequelize[_0x13e9('0x4')]},'thirdDisposition':{'type':Sequelize[_0x13e9('0x4')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x13e9('0x3')]},'fax':{'type':Sequelize[_0x13e9('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x13e9('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x13e9('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x13e9('0x5')]('in',_0x13e9('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index abbd302..fdda074 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbaf=['error','stack','name','send','map','fullname','Tags','TagIds','split','push','catch','index','FaxInteraction','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','field','color','tools_tags','select','u.id','u.fullname','ui.FaxInteractionId','user_has_fax_interactions','users','u.id\x20=\x20ui.UserId','from','left_join','cm_contacts','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','type','text','start','Tag','forEach','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','buildExpression','some','compact','isEmpty','FaxAccountId','concat','createdAt','$gte','parse','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','group','Sequelize','QueryTypes','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','agent','user','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','sequelize','toString','keyBy','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','rows','show','params','includeAll','include','merge','create','body','update','describe','FaxMessage','addMessage','omit','ids','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','options','findAll','addTags','emit','faxInteractionTags:save','removeTags','download','unix','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','existsSync','createReadStream','pipe','createWriteStream','basename','err','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','then','destroy'];(function(_0xc87d08,_0x59c9be){var _0x30a714=function(_0x437c0d){while(--_0x437c0d){_0xc87d08['push'](_0xc87d08['shift']());}};_0x30a714(++_0x59c9be);}(_0xbbaf,0x195));var _0xfbba=function(_0x304022,_0x21b705){_0x304022=_0x304022-0x0;var _0x4d81cf=_0xbbaf[_0x304022];return _0x4d81cf;};'use strict';var emlformat=require(_0xfbba('0x0'));var rimraf=require(_0xfbba('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfbba('0x2'));var rp=require(_0xfbba('0x3'));var moment=require(_0xfbba('0x4'));var BPromise=require(_0xfbba('0x5'));var Mustache=require(_0xfbba('0x6'));var util=require(_0xfbba('0x7'));var path=require(_0xfbba('0x8'));var sox=require(_0xfbba('0x9'));var csv=require(_0xfbba('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfbba('0xb'));var _=require('lodash');var squel=require(_0xfbba('0xc'));var crypto=require('crypto');var jsforce=require(_0xfbba('0xd'));var deskjs=require(_0xfbba('0xe'));var toCsv=require(_0xfbba('0xa'));var querystring=require('querystring');var Papa=require(_0xfbba('0xf'));var Redis=require(_0xfbba('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xfbba('0x11'));var as=require(_0xfbba('0x12'));var hardwareService=require(_0xfbba('0x13'));var logger=require(_0xfbba('0x14'))('api');var utils=require(_0xfbba('0x15'));var config=require(_0xfbba('0x16'));var licenseUtil=require(_0xfbba('0x17'));var db=require(_0xfbba('0x18'))['db'];config['redis']=_['defaults'](config[_0xfbba('0x19')],{'host':_0xfbba('0x1a'),'port':0x18eb});var socket=require(_0xfbba('0x1b'))(new Redis(config[_0xfbba('0x19')]));require(_0xfbba('0x1c'))[_0xfbba('0x1d')](socket);function respondWithStatusCode(_0x1247d5,_0x3bfadb){_0x3bfadb=_0x3bfadb||0xcc;return function(_0x2e6d07){if(_0x2e6d07){return _0x1247d5[_0xfbba('0x1e')](_0x3bfadb);}return _0x1247d5[_0xfbba('0x1f')](_0x3bfadb)[_0xfbba('0x20')]();};}function respondWithResult(_0x2bae2a,_0x141ed1){_0x141ed1=_0x141ed1||0xc8;return function(_0x10a833){if(_0x10a833){return _0x2bae2a[_0xfbba('0x1f')](_0x141ed1)['json'](_0x10a833);}};}function respondWithFilteredResult(_0x279511,_0x23e929){return function(_0x4ab958){if(_0x4ab958){var _0x4be89c=typeof _0x23e929[_0xfbba('0x21')]===_0xfbba('0x22')&&typeof _0x23e929['limit']===_0xfbba('0x22');var _0x266360=_0x4ab958[_0xfbba('0x23')];var _0xa47944=_0x4be89c?0x0:_0x23e929[_0xfbba('0x21')];var _0x447a1f=_0x4be89c?_0x4ab958[_0xfbba('0x23')]:_0x23e929[_0xfbba('0x21')]+_0x23e929['limit'];var _0x3dfd84;if(_0x447a1f>=_0x266360){_0x447a1f=_0x266360;_0x3dfd84=0xc8;}else{_0x3dfd84=0xce;}_0x279511['status'](_0x3dfd84);return _0x279511[_0xfbba('0x24')](_0xfbba('0x25'),_0xa47944+'-'+_0x447a1f+'/'+_0x266360)[_0xfbba('0x26')](_0x4ab958);}return null;};}function patchUpdates(_0x4a74b1){return function(_0xe2c222){try{jsonpatch[_0xfbba('0x27')](_0xe2c222,_0x4a74b1,!![]);}catch(_0x571b9d){return BPromise[_0xfbba('0x28')](_0x571b9d);}return _0xe2c222['save']();};}function saveUpdates(_0x348508,_0x4058df){return function(_0x5cfcb5){if(_0x5cfcb5){return _0x5cfcb5['update'](_0x348508)[_0xfbba('0x29')](function(_0x1f2253){return _0x1f2253;});}return null;};}function removeEntity(_0x387c4c,_0x1286be){return function(_0x49a9c5){if(_0x49a9c5){return _0x49a9c5[_0xfbba('0x2a')]()[_0xfbba('0x29')](function(){_0x387c4c[_0xfbba('0x1f')](0xcc)[_0xfbba('0x20')]();});}};}function handleEntityNotFound(_0x5c12a1,_0x4d9f66){return function(_0x5a17d5){if(!_0x5a17d5){_0x5c12a1['sendStatus'](0x194);}return _0x5a17d5;};}function handleError(_0x5e77f1,_0x32803a){_0x32803a=_0x32803a||0x1f4;return function(_0x59ffb2){logger[_0xfbba('0x2b')](_0x59ffb2[_0xfbba('0x2c')]);if(_0x59ffb2[_0xfbba('0x2d')]){delete _0x59ffb2['name'];}_0x5e77f1['status'](_0x32803a)[_0xfbba('0x2e')](_0x59ffb2);};}function getInteractionUsers(_0x30e7ce,_0x2b03a1){return new BPromise(function(_0x118089,_0x46e52b){try{if(_0x2b03a1[_0x30e7ce['id']]){_0x30e7ce['Users']=_[_0xfbba('0x2f')](_0x2b03a1[_0x30e7ce['id']],function(_0x525ec7){return{'id':_0x525ec7['id'],'fullname':_0x525ec7[_0xfbba('0x30')]};});}}catch(_0x38afe8){_0x46e52b(_0x38afe8);}_0x118089(_0x30e7ce);});}function getInteractionTags(_0x1cb39d,_0x12b477){return new BPromise(function(_0x219e46,_0x4a8252){try{if(_0x1cb39d['TagIds']){_0x1cb39d[_0xfbba('0x31')]=[];_0x1cb39d[_0xfbba('0x32')][_0xfbba('0x33')](',')['forEach'](function(_0x44b0ce){_0x1cb39d[_0xfbba('0x31')][_0xfbba('0x34')](_0x12b477[_0x44b0ce]);});}delete _0x1cb39d[_0xfbba('0x32')];}catch(_0x4f7919){_0x4a8252(_0x4f7919);}_0x219e46(_0x1cb39d);});}function updateFaxInteraction(_0x4b5bc4,_0x31298c,_0x54e32f){return new BPromise(function(_0x5d5df3,_0x44b9e5){return getInteractionUsers(_0x4b5bc4,_0x54e32f)['then'](function(_0x47a093){return getInteractionTags(_0x47a093,_0x31298c);})[_0xfbba('0x29')](function(_0x54c918){_0x5d5df3(_0x54c918);})[_0xfbba('0x35')](function(_0xc35ef0){_0x44b9e5(_0xc35ef0);});});}exports[_0xfbba('0x36')]=function(_0x1b3aa9,_0x26538d){var _0x3635b2={},_0x599150={},_0x39024e={'count':0x0,'rows':[]};var _0x105160=_['map'](db[_0xfbba('0x37')][_0xfbba('0x38')],function(_0x5c8b33){return{'name':_0x5c8b33[_0xfbba('0x39')],'type':_0x5c8b33['type']['key']};});_0x599150[_0xfbba('0x3a')]=_[_0xfbba('0x2f')](_0x105160,'name');_0x599150[_0xfbba('0x3b')]=_[_0xfbba('0x3c')](_0x1b3aa9[_0xfbba('0x3b')]);_0x599150[_0xfbba('0x3d')]=_[_0xfbba('0x3e')](_0x599150[_0xfbba('0x3a')],_0x599150[_0xfbba('0x3b')]);_0x3635b2[_0xfbba('0x3f')]=_[_0xfbba('0x3e')](_0x599150[_0xfbba('0x3a')],qs[_0xfbba('0x40')](_0x1b3aa9[_0xfbba('0x3b')]['fields']));_0x3635b2[_0xfbba('0x3f')]=_0x3635b2[_0xfbba('0x3f')][_0xfbba('0x41')]?_0x3635b2[_0xfbba('0x3f')]:_0x599150[_0xfbba('0x3a')];if(!_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x42')](_0xfbba('0x43'))){_0x3635b2[_0xfbba('0x44')]=qs[_0xfbba('0x44')](_0x1b3aa9[_0xfbba('0x3b')]['limit']);_0x3635b2['offset']=qs[_0xfbba('0x21')](_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x21')]);}_0x3635b2[_0xfbba('0x45')]=qs[_0xfbba('0x46')](_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x46')]);_0x3635b2[_0xfbba('0x47')]=qs[_0xfbba('0x3d')](_[_0xfbba('0x48')](_0x1b3aa9[_0xfbba('0x3b')],_0x599150[_0xfbba('0x3d')]),_0x105160);var _0x186980=[];var _0x13ae1f=squel['select']()['field']('id')[_0xfbba('0x49')](_0xfbba('0x2d'))['field'](_0xfbba('0x4a'))['from'](_0xfbba('0x4b'));var _0x5433ba=squel[_0xfbba('0x4c')]()['field'](_0xfbba('0x4d'))['field'](_0xfbba('0x4e'))['field'](_0xfbba('0x4f'))['from'](_0xfbba('0x50'),'ui')['left_join'](_0xfbba('0x51'),'u',_0xfbba('0x52'));var _0x3cc2f6=squel[_0xfbba('0x4c')]()[_0xfbba('0x53')]('fax_interactions','i')[_0xfbba('0x54')](_0xfbba('0x55'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join'](_0xfbba('0x51'),'o',_0xfbba('0x56'))[_0xfbba('0x54')](_0xfbba('0x57'),'a',_0xfbba('0x58'))[_0xfbba('0x54')](_0xfbba('0x59'),'me',_0xfbba('0x5a'))['left_join'](_0xfbba('0x5b'),'it','it.FaxInteractionId\x20=\x20i.id')['left_join']('tools_tags','t',_0xfbba('0x5c'));var _0x3abc51=squel[_0xfbba('0x5d')]();var _0x418e5a=[];var _0x2eeaa5=squel[_0xfbba('0x5d')]();var _0x2501db;if(_0x1b3aa9[_0xfbba('0x3b')]['search']){_0x2501db=as[_0xfbba('0x5e')](_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x5f')]);var _0x4d1b7c=_0x2501db[_0xfbba('0x60')];for(var _0x6e74af=0x0;_0x6e74af<_0x2501db['conditions'][_0xfbba('0x41')];_0x6e74af++){var _0x5ed70e=_0x2501db[_0xfbba('0x61')][_0x6e74af];var _0xb3df33='i';var _0x742372=_[_0xfbba('0x62')](_0x105160,[_0xfbba('0x2d'),_0x5ed70e[_0xfbba('0x49')]]);if(!_0x742372){switch(_0x5ed70e['field']){case _0xfbba('0x63'):if(_0x5ed70e[_0xfbba('0x64')]==0x1){_0x3cc2f6[_0xfbba('0x65')]('`'+_0x5ed70e[_0xfbba('0x49')]+_0xfbba('0x66'));}else{_0x3cc2f6[_0xfbba('0x65')]('`'+_0x5ed70e[_0xfbba('0x49')]+_0xfbba('0x67'));}break;case _0xfbba('0x68'):if(_0x5ed70e['operator']===_0xfbba('0x69')){if(_0x5ed70e['value'][_0xfbba('0x33')]('\x20')[_0xfbba('0x41')]>0x1){_0x3abc51[_0x4d1b7c](_0xfbba('0x6a'),qs[_0xfbba('0x6b')](_0x5ed70e[_0xfbba('0x64')]),null);}else{var _0x248567='%'+_0x5ed70e[_0xfbba('0x64')]+'%';_0x3abc51[_0x4d1b7c](_0xfbba('0x6c'),_0x248567,_0x248567,_0x248567);}}else{_0x742372=_[_0xfbba('0x62')](_0x105160,['name',_0xfbba('0x6d')]);_0x5ed70e[_0xfbba('0x49')]='ContactId';_0x5eeab2=as['buildExpression'](_0xb3df33,_0x742372[_0xfbba('0x6e')],_0x5ed70e);_0x3abc51[_0x4d1b7c](_0x5eeab2[_0xfbba('0x6f')],_0x5eeab2[_0xfbba('0x64')][_0xfbba('0x70')],_0x5eeab2[_0xfbba('0x64')][_0xfbba('0x20')]);}break;case _0xfbba('0x71'):var _0x5a8465=_0x5ed70e['value'][_0xfbba('0x33')](',')[_0xfbba('0x2f')](function(_0x2db1fc){return Number(_0x2db1fc);});_0x5a8465[_0xfbba('0x72')](function(_0x2648b0){_0x2eeaa5['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2648b0+',%');});_0x418e5a=_[_0xfbba('0x73')](_0x418e5a,_0x5a8465);break;case _0xfbba('0x74'):if(_0x5ed70e[_0xfbba('0x75')]===_0xfbba('0x69')){_0x3abc51[_0x4d1b7c](_0xfbba('0x76'),'%'+_0x5ed70e[_0xfbba('0x64')]+'%',null);}else{_0x742372=_['find'](_0x105160,[_0xfbba('0x2d'),'UserId']);_0x5ed70e['field']='UserId';_0x5eeab2=as[_0xfbba('0x77')](_0xb3df33,_0x742372[_0xfbba('0x6e')],_0x5ed70e);_0x3abc51[_0x4d1b7c](_0x5eeab2['text'],_0x5eeab2['value'][_0xfbba('0x70')],_0x5eeab2['value'][_0xfbba('0x20')]);}break;case'body':_0x5eeab2=as['buildExpression']('me',null,_0x5ed70e);_0x3abc51[_0x4d1b7c](_0x5eeab2[_0xfbba('0x6f')],_0x5eeab2['value'][_0xfbba('0x70')],_0x5eeab2[_0xfbba('0x64')][_0xfbba('0x20')]);break;}}else{var _0x5eeab2=as['buildExpression'](_0xb3df33,_0x742372[_0xfbba('0x6e')],_0x5ed70e);_0x3abc51[_0x4d1b7c](_0x5eeab2['text'],_0x5eeab2['value']['start'],_0x5eeab2[_0xfbba('0x64')][_0xfbba('0x20')]);}}}else{var _0x5dfb47=_(_0x1b3aa9[_0xfbba('0x3b')])[_0xfbba('0x3c')]()[_0xfbba('0x2f')](function(_0x23d59d){return _[_0xfbba('0x78')](_0x105160,['name',_0x23d59d])?_0x23d59d:undefined;})[_0xfbba('0x79')]()[_0xfbba('0x64')]();if(!_[_0xfbba('0x7a')](_0x5dfb47)){_0x5dfb47[_0xfbba('0x72')](function(_0x2026f6){if(_0x2026f6===_0xfbba('0x7b')){_0x3cc2f6[_0xfbba('0x47')]('i.FaxAccountId\x20IN\x20?',[][_0xfbba('0x7c')](_0x1b3aa9[_0xfbba('0x3b')][_0x2026f6]));}else if(_0x2026f6===_0xfbba('0x7d')){var _0x208997=JSON['parse'](_0x1b3aa9['query'][_0x2026f6])[_0xfbba('0x7e')];var _0x57e207=JSON[_0xfbba('0x7f')](_0x1b3aa9[_0xfbba('0x3b')][_0x2026f6])[_0xfbba('0x80')];_0x3cc2f6[_0xfbba('0x47')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x208997,_0x57e207);}else{if(_0x1b3aa9[_0xfbba('0x3b')][_0x2026f6]===_0xfbba('0x81')){_0x3cc2f6[_0xfbba('0x47')]('i.'+_0x2026f6+_0xfbba('0x82'));}else{_0x3cc2f6[_0xfbba('0x47')]('i.'+_0x2026f6+_0xfbba('0x83'),_0x1b3aa9[_0xfbba('0x3b')][_0x2026f6]);}}});}if(_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x84')]){if(_0x1b3aa9[_0xfbba('0x3b')]['read']==0x1){_0x3cc2f6[_0xfbba('0x65')](_0xfbba('0x85'));}else{_0x3cc2f6[_0xfbba('0x65')](_0xfbba('0x86'));}}if(_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x87')]){_0x418e5a=_[_0xfbba('0x88')](_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x87')])?_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x87')]:new Array(_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x87')]);_0x418e5a[_0xfbba('0x72')](function(_0x5cc4da){_0x2eeaa5['or'](_0xfbba('0x89'),'%,'+_0x5cc4da+',%');});}if(_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x8a')]){var _0x294fee=_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x8a')][_0xfbba('0x8b')]('\x5c','\x5c\x5c')[_0xfbba('0x8b')](/'/g,'\x27\x27');if(qs[_0xfbba('0x8c')](_0x294fee)){_0x3abc51['or'](_0xfbba('0x8d'),_0x294fee+'%')['or']('i.fax\x20LIKE\x20?',_0x294fee+'%');}_0x3abc51['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x294fee+'%');}}_0x3cc2f6[_0xfbba('0x47')](_0x3abc51);_0x3cc2f6[_0xfbba('0x8e')]('i.id');var _0x4c74c0={'type':db[_0xfbba('0x8f')][_0xfbba('0x90')]['SELECT'],'raw':!![]};var _0x19c8bd=_0x3cc2f6[_0xfbba('0x91')]();_0x19c8bd[_0xfbba('0x49')](_0xfbba('0x92'));_0x19c8bd[_0xfbba('0x49')](_0xfbba('0x93'),'unreadMessages');if(_0x3635b2[_0xfbba('0x45')]){_0x3635b2[_0xfbba('0x45')][_0xfbba('0x72')](function(_0x601e62){var _0x37ea25=_0x601e62[0x0]===_0xfbba('0x94')?_0x601e62[0x0]:'i.'+_0x601e62[0x0];_0x3cc2f6[_0xfbba('0x45')](_0x37ea25,_0x601e62[0x1]===_0xfbba('0x95')?![]:!![]);});}if(!_[_0xfbba('0x7a')](_0x418e5a)){_0x3cc2f6[_0xfbba('0x65')](_0x2eeaa5);_0x19c8bd['where'](_0xfbba('0x96'),_0x418e5a);}BPromise[_0xfbba('0x97')]()[_0xfbba('0x29')](function(){if(!_0x2501db){if(_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x7b')])return;_0x19c8bd['where'](_0xfbba('0x98'));_0x3cc2f6['where']('i.FaxAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x1b3aa9['user']['role']!==_0xfbba('0x99'))return;return _0x1b3aa9[_0xfbba('0x9a')][_0xfbba('0x9b')]({'attributes':['id'],'raw':!![]})['then'](function(_0xec44c8){if(_['isEmpty'](_0xec44c8)){_0x19c8bd[_0xfbba('0x47')]('i.FaxAccountId\x20IS\x20NULL');_0x3cc2f6['where'](_0xfbba('0x9c'));}else{_0x19c8bd['where'](_0xfbba('0x9d'),_[_0xfbba('0x2f')](_0xec44c8,'id'));_0x3cc2f6[_0xfbba('0x47')]('i.FaxAccountId\x20IN\x20?',_['map'](_0xec44c8,'id'));}});})[_0xfbba('0x29')](function(){if(_0x1b3aa9['user']['role']===_0xfbba('0x99')&&!_0x2501db&&!_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x7b')])return[];return db[_0xfbba('0x9e')][_0xfbba('0x3b')](_0x19c8bd[_0xfbba('0x9f')](),_0x4c74c0);})[_0xfbba('0x29')](function(_0x5c7f94){_0x39024e[_0xfbba('0x23')]=_0x5c7f94[_0xfbba('0x41')];if(_0x39024e['count']===0x0)return[];return db['sequelize'][_0xfbba('0x3b')](_0x13ae1f[_0xfbba('0x9f')](),_0x4c74c0)[_0xfbba('0x29')](function(_0x4b65e3){_0x186980=_[_0xfbba('0xa0')](_0x4b65e3,'id');_0x4c74c0=_['merge'](_0x4c74c0,{'model':db[_0xfbba('0x37')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1b3aa9[_0xfbba('0x3b')][_0xfbba('0x40')]){_0x3635b2[_0xfbba('0x3f')][_0xfbba('0x72')](function(_0x100bbe){_0x3cc2f6[_0xfbba('0x49')]('i.'+_0x100bbe);});}else{_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0x93'),_0xfbba('0x63'));_0x3cc2f6['field'](_0xfbba('0xa1'),_0xfbba('0xa2'));_0x3cc2f6[_0xfbba('0x49')]('a.mandatoryDisposition',_0xfbba('0xa3'));_0x3cc2f6['field'](_0xfbba('0xa4'),_0xfbba('0x94'));_0x3cc2f6['field']('i.*');_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0xa5'),_0xfbba('0xa6'));_0x3cc2f6['field'](_0xfbba('0xa7'),_0xfbba('0xa8'));_0x3cc2f6[_0xfbba('0x49')]('c.email','Contact.email');_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0xa9'),_0xfbba('0xaa'));_0x3cc2f6['field'](_0xfbba('0xab'),_0xfbba('0xac'));_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0xad'),'Contact.fax');_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0xae'),'Owner.fullname');_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0xaf'),_0xfbba('0xb0'));_0x3cc2f6[_0xfbba('0x49')](_0xfbba('0xb1'),_0xfbba('0x32'));}if(_0x3635b2[_0xfbba('0x44')])_0x3cc2f6['limit'](_0x3635b2['limit']);if(_0x3635b2[_0xfbba('0x21')])_0x3cc2f6[_0xfbba('0x21')](_0x3635b2[_0xfbba('0x21')]);return db[_0xfbba('0x9e')][_0xfbba('0x3b')](_0x3cc2f6['toString'](),_0x4c74c0);})[_0xfbba('0x29')](function(_0xa4219a){if(_0xa4219a[_0xfbba('0x41')]>0x0)_0x5433ba[_0xfbba('0x47')](_0xfbba('0xb2'),_['map'](_0xa4219a,'id'));return db[_0xfbba('0x9e')][_0xfbba('0x3b')](_0x5433ba[_0xfbba('0x9f')](),_0x4c74c0)[_0xfbba('0x29')](function(_0x5f0b3f){var _0x3fda27=_[_0xfbba('0xb3')](_0x5f0b3f,'FaxInteractionId');var _0x4402f8=[];_0xa4219a[_0xfbba('0x72')](function(_0x27fa03){_0x4402f8[_0xfbba('0x34')](updateFaxInteraction(_0x27fa03,_0x186980,_0x3fda27));});return BPromise['all'](_0x4402f8);});});})[_0xfbba('0x29')](function(_0x2cab0b){_0x39024e[_0xfbba('0xb4')]=_0x2cab0b;return _0x39024e;})[_0xfbba('0x29')](respondWithFilteredResult(_0x26538d,_0x3635b2))[_0xfbba('0x35')](handleError(_0x26538d,null));};exports[_0xfbba('0xb5')]=function(_0x54eb90,_0xc7ea06){var _0x1de7db={'raw':![],'where':{'id':_0x54eb90[_0xfbba('0xb6')]['id']}},_0x356c48={};_0x356c48[_0xfbba('0x3a')]=_['keys'](db[_0xfbba('0x37')][_0xfbba('0x38')]);_0x356c48[_0xfbba('0x3b')]=_[_0xfbba('0x3c')](_0x54eb90[_0xfbba('0x3b')]);_0x356c48[_0xfbba('0x3d')]=_[_0xfbba('0x3e')](_0x356c48[_0xfbba('0x3a')],_0x356c48[_0xfbba('0x3b')]);_0x1de7db[_0xfbba('0x3f')]=_[_0xfbba('0x3e')](_0x356c48[_0xfbba('0x3a')],qs[_0xfbba('0x40')](_0x54eb90[_0xfbba('0x3b')][_0xfbba('0x40')]));_0x1de7db[_0xfbba('0x3f')]=_0x1de7db[_0xfbba('0x3f')][_0xfbba('0x41')]?_0x1de7db[_0xfbba('0x3f')]:_0x356c48[_0xfbba('0x3a')];if(_0x54eb90[_0xfbba('0x3b')][_0xfbba('0xb7')]){_0x1de7db[_0xfbba('0xb8')]=[{'all':!![]}];}_0x1de7db=_[_0xfbba('0xb9')]({},_0x1de7db,_0x54eb90['options']);return db[_0xfbba('0x37')]['find'](_0x1de7db)[_0xfbba('0x29')](handleEntityNotFound(_0xc7ea06,null))[_0xfbba('0x29')](respondWithResult(_0xc7ea06,null))[_0xfbba('0x35')](handleError(_0xc7ea06,null));};exports[_0xfbba('0xba')]=function(_0x499150,_0x19d1fd){return db[_0xfbba('0x37')][_0xfbba('0xba')](_0x499150[_0xfbba('0xbb')],{})[_0xfbba('0x29')](respondWithResult(_0x19d1fd,0xc9))[_0xfbba('0x35')](handleError(_0x19d1fd,null));};exports[_0xfbba('0xbc')]=function(_0x39e737,_0x58980e){if(_0x39e737['body']['id']){delete _0x39e737['body']['id'];}return db[_0xfbba('0x37')][_0xfbba('0x62')]({'where':{'id':_0x39e737[_0xfbba('0xb6')]['id']}})[_0xfbba('0x29')](handleEntityNotFound(_0x58980e,null))[_0xfbba('0x29')](saveUpdates(_0x39e737[_0xfbba('0xbb')],null))[_0xfbba('0x29')](respondWithResult(_0x58980e,null))[_0xfbba('0x35')](handleError(_0x58980e,null));};exports[_0xfbba('0x2a')]=function(_0x870931,_0x3a66e7){return db[_0xfbba('0x37')]['find']({'where':{'id':_0x870931[_0xfbba('0xb6')]['id']}})[_0xfbba('0x29')](handleEntityNotFound(_0x3a66e7,null))[_0xfbba('0x29')](removeEntity(_0x3a66e7,null))[_0xfbba('0x35')](handleError(_0x3a66e7,null));};exports[_0xfbba('0xbd')]=function(_0x1886e3,_0x58077f){return db[_0xfbba('0x37')][_0xfbba('0xbd')]()[_0xfbba('0x29')](respondWithResult(_0x58077f,null))[_0xfbba('0x35')](handleError(_0x58077f,null));};exports['addMessage']=function(_0xebc825,_0x106231,_0x38faab){return db[_0xfbba('0xbe')][_0xfbba('0x62')]({'where':{'id':_0xebc825[_0xfbba('0xb6')]['id']}})[_0xfbba('0x29')](handleEntityNotFound(_0x106231,null))[_0xfbba('0x29')](function(_0x13a6a0){if(_0x13a6a0){return _0x13a6a0[_0xfbba('0xbf')](_0xebc825[_0xfbba('0xbb')]['ids'],_[_0xfbba('0xc0')](_0xebc825[_0xfbba('0xbb')],[_0xfbba('0xc1'),'id'])||{});}})[_0xfbba('0x29')](respondWithResult(_0x106231,null))[_0xfbba('0x35')](handleError(_0x106231,null));};exports[_0xfbba('0xc2')]=function(_0xac6593,_0x1536f3,_0x3a0f13){var _0x333d8d={'raw':![],'where':{}};var _0x14b1c9={};var _0x251f53={'count':0x0,'rows':[]};return db[_0xfbba('0x37')][_0xfbba('0xc3')]({'where':{'id':_0xac6593['params']['id']}})[_0xfbba('0x29')](handleEntityNotFound(_0x1536f3,null))[_0xfbba('0x29')](function(_0x1f0f75){if(_0x1f0f75){_0x14b1c9[_0xfbba('0x3a')]=_['keys'](db[_0xfbba('0xbe')]['rawAttributes']);_0x14b1c9['query']=_[_0xfbba('0x3c')](_0xac6593[_0xfbba('0x3b')]);_0x14b1c9[_0xfbba('0x3d')]=_[_0xfbba('0x3e')](_0x14b1c9[_0xfbba('0x3a')],_0x14b1c9['query']);_0x333d8d[_0xfbba('0x3f')]=_[_0xfbba('0x3e')](_0x14b1c9[_0xfbba('0x3a')],qs[_0xfbba('0x40')](_0xac6593[_0xfbba('0x3b')][_0xfbba('0x40')]));_0x333d8d[_0xfbba('0x3f')]=_0x333d8d['attributes'][_0xfbba('0x41')]?_0x333d8d[_0xfbba('0x3f')]:_0x14b1c9[_0xfbba('0x3a')];if(!_0xac6593[_0xfbba('0x3b')][_0xfbba('0x42')](_0xfbba('0x43'))){_0x333d8d['limit']=qs['limit'](_0xac6593[_0xfbba('0x3b')][_0xfbba('0x44')]);_0x333d8d[_0xfbba('0x21')]=qs['offset'](_0xac6593[_0xfbba('0x3b')]['offset']);}_0x333d8d[_0xfbba('0x45')]=qs[_0xfbba('0x46')](_0xac6593[_0xfbba('0x3b')][_0xfbba('0x46')]);_0x333d8d[_0xfbba('0x47')]=qs[_0xfbba('0x3d')](_[_0xfbba('0x48')](_0xac6593[_0xfbba('0x3b')],_0x14b1c9['filters']));_0x333d8d[_0xfbba('0x47')]['FaxInteractionId']=_0x1f0f75['id'];if(_0xac6593['query']['filter']){_0x333d8d[_0xfbba('0x47')]=_['merge'](_0x333d8d[_0xfbba('0x47')],{'$or':_[_0xfbba('0x2f')](_0x333d8d[_0xfbba('0x3f')],function(_0x243a32){var _0x5d2c4e={};_0x5d2c4e[_0x243a32]={'$like':'%'+_0xac6593['query'][_0xfbba('0x8a')]+'%'};return _0x5d2c4e;})});}if(_0xac6593[_0xfbba('0x3b')][_0xfbba('0x7e')]){var _0x49c53a=_0xac6593['query'][_0xfbba('0x7e')][_0xfbba('0x33')](',');var _0x5349e9={};_0x5349e9[_0x49c53a[0x0]]={'$gte':moment(_0x49c53a[0x1])[_0xfbba('0xc4')](_0xfbba('0xc5'))};_0x333d8d[_0xfbba('0x47')]=_[_0xfbba('0xb9')](_0x333d8d['where'],_0x5349e9);}_0x333d8d=_[_0xfbba('0xb9')]({},_0x333d8d,_0xac6593[_0xfbba('0xc6')]);return db[_0xfbba('0xbe')]['count']({'where':_0x333d8d[_0xfbba('0x47')]})[_0xfbba('0x29')](function(_0x1a506f){_0x251f53[_0xfbba('0x23')]=_0x1a506f;if(_0xac6593[_0xfbba('0x3b')][_0xfbba('0xb7')]){_0x333d8d['include']=[{'all':!![]}];}return db[_0xfbba('0xbe')][_0xfbba('0xc7')](_0x333d8d);})['then'](function(_0x476e2c){_0x251f53[_0xfbba('0xb4')]=_0x476e2c;return _0x251f53;});}})['then'](respondWithFilteredResult(_0x1536f3,_0x333d8d))[_0xfbba('0x35')](handleError(_0x1536f3,null));};exports[_0xfbba('0xc8')]=function(_0x33c551,_0x27fb28,_0xe65295){return db[_0xfbba('0x37')][_0xfbba('0x62')]({'where':{'id':_0x33c551[_0xfbba('0xb6')]['id']}})[_0xfbba('0x29')](handleEntityNotFound(_0x27fb28,null))[_0xfbba('0x29')](function(_0x4497da){if(_0x4497da){return _0x4497da['setTags'](_0x33c551[_0xfbba('0xbb')]['ids'],_[_0xfbba('0xc0')](_0x33c551['body'],['ids','id'])||{})['spread'](function(){return db[_0xfbba('0x71')][_0xfbba('0xc7')]({'attributes':['id',_0xfbba('0x2d'),_0xfbba('0x4a')],'where':{'id':_0x33c551[_0xfbba('0xbb')][_0xfbba('0xc1')]}});})[_0xfbba('0x29')](function(_0x44d93e){socket[_0xfbba('0xc9')](_0xfbba('0xca'),{'id':Number(_0x33c551[_0xfbba('0xb6')]['id']),'tags':_0x44d93e||[]});return{'id':Number(_0x33c551['params']['id']),'tags':_0x44d93e||[]};});}})[_0xfbba('0x29')](respondWithResult(_0x27fb28,null))['catch'](handleError(_0x27fb28,null));};exports[_0xfbba('0xcb')]=function(_0x472e2e,_0x388c3f,_0xdf72ea){return db[_0xfbba('0x37')]['find']({'where':{'id':_0x472e2e[_0xfbba('0xb6')]['id']}})[_0xfbba('0x29')](handleEntityNotFound(_0x388c3f,null))[_0xfbba('0x29')](function(_0x2ff720){if(_0x2ff720){return _0x2ff720[_0xfbba('0xcb')](_0x472e2e['query'][_0xfbba('0xc1')]);}})[_0xfbba('0x29')](respondWithStatusCode(_0x388c3f,null))[_0xfbba('0x35')](handleError(_0x388c3f,null));};exports[_0xfbba('0xcc')]=function(_0x528134,_0x50ba44){var _0xa60c06=moment()[_0xfbba('0xcd')]()['toString']();var _0x129a45=path[_0xfbba('0xce')](config['root'],_0xfbba('0xcf'),_0xfbba('0xd0'),_0xfbba('0xd1'));var _0x1d1f77=path[_0xfbba('0xce')](config[_0xfbba('0xd2')],_0xfbba('0xcf'),_0xfbba('0xd0'),_0xfbba('0xd3'));var _0x4549b8=path[_0xfbba('0xce')](_0x129a45,_0xa60c06);var _0x49f826=util[_0xfbba('0xc4')](_0xfbba('0xd4'),_0x528134['params']['id'],_0xa60c06);var _0x77229c=path[_0xfbba('0xce')](_0x129a45,_0x49f826);var _0x51bd60=[];_0x51bd60[_0xfbba('0x34')]({'model':db[_0xfbba('0xd5')],'as':_0xfbba('0xd5'),'raw':!![]});var _0x8a0658=[{'model':db['FaxMessage'],'as':_0xfbba('0xd6'),'attributes':['id','body',_0xfbba('0x7d')],'include':_0x51bd60}];return db[_0xfbba('0x37')][_0xfbba('0x62')]({'where':{'id':_0x528134[_0xfbba('0xb6')]['id']},'include':_0x8a0658})[_0xfbba('0x29')](handleEntityNotFound(_0x50ba44,null))[_0xfbba('0x29')](function(_0x25f292){if(_0x25f292&&_0x25f292[_0xfbba('0xd6')]){var _0x5ac8f3=_0x25f292[_0xfbba('0xd7')]({'plain':!![]});fs[_0xfbba('0xd8')](_0x4549b8);for(var _0x41e256=0x0;_0x41e256<_0x5ac8f3[_0xfbba('0xd6')][_0xfbba('0x41')];_0x41e256++){var _0x5a9e7=_0x5ac8f3['Messages'][_0x41e256][_0xfbba('0xd5')];if(_0x5a9e7){var _0x31a298=path[_0xfbba('0xce')](_0x1d1f77,_0x5a9e7['basename']);if(fs[_0xfbba('0xd9')](_0x31a298)){fs[_0xfbba('0xda')](_0x31a298)[_0xfbba('0xdb')](fs[_0xfbba('0xdc')](path[_0xfbba('0xce')](_0x4549b8,_0x5a9e7[_0xfbba('0xdd')])));}}}return BPromise[_0xfbba('0x97')]()['then'](function(){return new BPromise(function(_0x5710f6,_0x4bafde){zipdir(_0x4549b8,{'saveTo':_0x77229c},function(_0x5cafc1,_0x54e56f){if(_0x5cafc1)return _0x4bafde(_0x5cafc1);return _0x5710f6(_0x54e56f);});})[_0xfbba('0x29')](function(){return new BPromise(function(_0x27b0e8,_0x3ca3b8){rimraf(_0x4549b8,function(_0xf0f764){if(_0xf0f764)_0x3ca3b8(_0xf0f764);return _0x27b0e8();});});})[_0xfbba('0x29')](function(){return _0x50ba44[_0xfbba('0xcc')](_0x77229c,_0x49f826,function(_0x53e5b4){if(_0x53e5b4){console['log'](_0xfbba('0xde'),_0x53e5b4);}else{fs[_0xfbba('0xdf')](_0x77229c);}});});});}else{return _0x50ba44[_0xfbba('0x1e')](0xc8);}})[_0xfbba('0x35')](handleError(_0x50ba44,null));};
\ No newline at end of file
+var _0xb8ca=['fax_interactions','cm_contacts','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','conditions','length','find','unreadMessages','value','having','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','operator','body','some','compact','where','concat','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','isEmpty','t.id\x20IN\x20?','resolve','FaxAccountId','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','toString','sequelize','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','push','all','rows','show','params','includeAll','include','merge','options','create','describe','FaxMessage','addMessage','ids','omit','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','color','emit','faxInteractionTags:save','removeTags','download','unix','join','root','files','tmp','attachments','transcript-%d-%s.zip','Attachment','Messages','basename','existsSync','createReadStream','createWriteStream','log','err','unlinkSync','sendStatus','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','status','end','json','offset','limit','undefined','count','Content-Range','apply','update','then','destroy','stack','name','send','Users','map','fullname','Tags','TagIds','split','forEach','catch','waiting','talking','answered','unmanaged','total','closed','UserId','index','FaxInteraction','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','select','field','from','u.id','u.fullname','left_join','u.id\x20=\x20ui.UserId'];(function(_0x549bd5,_0x25fcd1){var _0x12c632=function(_0x592b28){while(--_0x592b28){_0x549bd5['push'](_0x549bd5['shift']());}};_0x12c632(++_0x25fcd1);}(_0xb8ca,0x89));var _0xab8c=function(_0x4fa160,_0x4aa681){_0x4fa160=_0x4fa160-0x0;var _0x517263=_0xb8ca[_0x4fa160];return _0x517263;};'use strict';var emlformat=require(_0xab8c('0x0'));var rimraf=require(_0xab8c('0x1'));var zipdir=require(_0xab8c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xab8c('0x3'));var moment=require(_0xab8c('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xab8c('0x5'));var path=require(_0xab8c('0x6'));var sox=require(_0xab8c('0x7'));var csv=require(_0xab8c('0x8'));var ejs=require(_0xab8c('0x9'));var fs=require('fs');var fs_extra=require(_0xab8c('0xa'));var _=require(_0xab8c('0xb'));var squel=require('squel');var crypto=require(_0xab8c('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xab8c('0xd'));var toCsv=require(_0xab8c('0x8'));var querystring=require(_0xab8c('0xe'));var Papa=require(_0xab8c('0xf'));var Redis=require(_0xab8c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xab8c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xab8c('0x12'));var utils=require(_0xab8c('0x13'));var config=require(_0xab8c('0x14'));var licenseUtil=require(_0xab8c('0x15'));var db=require(_0xab8c('0x16'))['db'];config[_0xab8c('0x17')]=_[_0xab8c('0x18')](config[_0xab8c('0x17')],{'host':_0xab8c('0x19'),'port':0x18eb});var socket=require(_0xab8c('0x1a'))(new Redis(config[_0xab8c('0x17')]));require(_0xab8c('0x1b'))[_0xab8c('0x1c')](socket);function respondWithStatusCode(_0x18880f,_0x2dd9b6){_0x2dd9b6=_0x2dd9b6||0xcc;return function(_0x55a0e7){if(_0x55a0e7){return _0x18880f['sendStatus'](_0x2dd9b6);}return _0x18880f[_0xab8c('0x1d')](_0x2dd9b6)[_0xab8c('0x1e')]();};}function respondWithResult(_0x59e32d,_0x239560){_0x239560=_0x239560||0xc8;return function(_0xb3674e){if(_0xb3674e){return _0x59e32d[_0xab8c('0x1d')](_0x239560)[_0xab8c('0x1f')](_0xb3674e);}};}function respondWithFilteredResult(_0x1ead6f,_0x43dffa){return function(_0x41bb92){if(_0x41bb92){var _0x326afa=typeof _0x43dffa[_0xab8c('0x20')]==='undefined'&&typeof _0x43dffa[_0xab8c('0x21')]===_0xab8c('0x22');var _0x1a0625=_0x41bb92[_0xab8c('0x23')];var _0x26cebb=_0x326afa?0x0:_0x43dffa[_0xab8c('0x20')];var _0x52f380=_0x326afa?_0x41bb92[_0xab8c('0x23')]:_0x43dffa[_0xab8c('0x20')]+_0x43dffa[_0xab8c('0x21')];var _0x101abc;if(_0x52f380>=_0x1a0625){_0x52f380=_0x1a0625;_0x101abc=0xc8;}else{_0x101abc=0xce;}_0x1ead6f['status'](_0x101abc);return _0x1ead6f['set'](_0xab8c('0x24'),_0x26cebb+'-'+_0x52f380+'/'+_0x1a0625)['json'](_0x41bb92);}return null;};}function patchUpdates(_0x315acd){return function(_0x1f1b15){try{jsonpatch[_0xab8c('0x25')](_0x1f1b15,_0x315acd,!![]);}catch(_0x1d8fcb){return BPromise['reject'](_0x1d8fcb);}return _0x1f1b15['save']();};}function saveUpdates(_0x3a589f,_0x18b38c){return function(_0xc88615){if(_0xc88615){return _0xc88615[_0xab8c('0x26')](_0x3a589f)[_0xab8c('0x27')](function(_0x482adc){return _0x482adc;});}return null;};}function removeEntity(_0x57c99a,_0x5228f6){return function(_0x19e428){if(_0x19e428){return _0x19e428[_0xab8c('0x28')]()['then'](function(){_0x57c99a[_0xab8c('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x193d32,_0x38e96e){return function(_0x1ff280){if(!_0x1ff280){_0x193d32['sendStatus'](0x194);}return _0x1ff280;};}function handleError(_0x1b6291,_0x48a209){_0x48a209=_0x48a209||0x1f4;return function(_0x315ed2){logger['error'](_0x315ed2[_0xab8c('0x29')]);if(_0x315ed2['name']){delete _0x315ed2[_0xab8c('0x2a')];}_0x1b6291[_0xab8c('0x1d')](_0x48a209)[_0xab8c('0x2b')](_0x315ed2);};}function getInteractionUsers(_0x36af10,_0x3e5c56){return new BPromise(function(_0x339d69,_0x78772b){try{if(_0x3e5c56[_0x36af10['id']]){_0x36af10[_0xab8c('0x2c')]=_[_0xab8c('0x2d')](_0x3e5c56[_0x36af10['id']],function(_0x335b18){return{'id':_0x335b18['id'],'fullname':_0x335b18[_0xab8c('0x2e')]};});}}catch(_0x49b161){_0x78772b(_0x49b161);}_0x339d69(_0x36af10);});}function getInteractionTags(_0x4fe986,_0x28a7c7){return new BPromise(function(_0x253a19,_0x3cf979){try{if(_0x4fe986['TagIds']){_0x4fe986[_0xab8c('0x2f')]=[];_0x4fe986[_0xab8c('0x30')][_0xab8c('0x31')](',')[_0xab8c('0x32')](function(_0x1ea272){_0x4fe986['Tags']['push'](_0x28a7c7[_0x1ea272]);});}delete _0x4fe986[_0xab8c('0x30')];}catch(_0x171c16){_0x3cf979(_0x171c16);}_0x253a19(_0x4fe986);});}function updateFaxInteraction(_0x4cc53d,_0x5ab036,_0x6355ed){return new BPromise(function(_0x4c5e23,_0x489a8b){return getInteractionUsers(_0x4cc53d,_0x6355ed)[_0xab8c('0x27')](function(_0x3daee5){return getInteractionTags(_0x3daee5,_0x5ab036);})[_0xab8c('0x27')](function(_0x2cfe5c){return getStateInteraction(_0x2cfe5c);})[_0xab8c('0x27')](function(_0x1a97ee){_0x4c5e23(_0x1a97ee);})[_0xab8c('0x33')](function(_0x27ca69){_0x489a8b(_0x27ca69);});});}function getStateInteraction(_0x627f7f){return new BPromise(function(_0x21f926,_0x51d449){_0x627f7f[_0xab8c('0x34')]=0x0;_0x627f7f[_0xab8c('0x35')]=0x0;_0x627f7f[_0xab8c('0x36')]=0x0;_0x627f7f[_0xab8c('0x37')]=0x0;_0x627f7f[_0xab8c('0x38')]=0x0;if(!_0x627f7f[_0xab8c('0x39')]&&!_0x627f7f[_0xab8c('0x3a')])_0x627f7f[_0xab8c('0x34')]+=0x1;if(!_0x627f7f['closed']&&_0x627f7f[_0xab8c('0x3a')])_0x627f7f['talking']+=0x1;if(_0x627f7f['closed']&&_0x627f7f[_0xab8c('0x3a')])_0x627f7f[_0xab8c('0x36')]+=0x1;if(_0x627f7f[_0xab8c('0x39')]&&!_0x627f7f[_0xab8c('0x3a')])_0x627f7f['unmanaged']+=0x1;_0x627f7f[_0xab8c('0x38')]+=0x1;_0x21f926(_0x627f7f);});}exports[_0xab8c('0x3b')]=function(_0x177563,_0x3c05ec){var _0x26dae1={},_0x1cb0bd={},_0x2b2590={'count':0x0,'rows':[]};var _0x4b9b29=_[_0xab8c('0x2d')](db[_0xab8c('0x3c')][_0xab8c('0x3d')],function(_0x350857){return{'name':_0x350857[_0xab8c('0x3e')],'type':_0x350857[_0xab8c('0x3f')][_0xab8c('0x40')]};});_0x1cb0bd[_0xab8c('0x41')]=_[_0xab8c('0x2d')](_0x4b9b29,'name');_0x1cb0bd[_0xab8c('0x42')]=_[_0xab8c('0x43')](_0x177563['query']);_0x1cb0bd['filters']=_[_0xab8c('0x44')](_0x1cb0bd[_0xab8c('0x41')],_0x1cb0bd['query']);_0x26dae1[_0xab8c('0x45')]=_[_0xab8c('0x44')](_0x1cb0bd[_0xab8c('0x41')],qs[_0xab8c('0x46')](_0x177563[_0xab8c('0x42')]['fields']));_0x26dae1['attributes']=_0x26dae1[_0xab8c('0x45')]['length']?_0x26dae1[_0xab8c('0x45')]:_0x1cb0bd['model'];if(!_0x177563[_0xab8c('0x42')][_0xab8c('0x47')](_0xab8c('0x48'))){_0x26dae1['limit']=qs[_0xab8c('0x21')](_0x177563[_0xab8c('0x42')][_0xab8c('0x21')]);_0x26dae1[_0xab8c('0x20')]=qs[_0xab8c('0x20')](_0x177563[_0xab8c('0x42')]['offset']);}_0x26dae1[_0xab8c('0x49')]=qs[_0xab8c('0x4a')](_0x177563[_0xab8c('0x42')][_0xab8c('0x4a')]);_0x26dae1['where']=qs[_0xab8c('0x4b')](_[_0xab8c('0x4c')](_0x177563[_0xab8c('0x42')],_0x1cb0bd[_0xab8c('0x4b')]),_0x4b9b29);var _0x211147=[];var _0x391deb=squel[_0xab8c('0x4d')]()[_0xab8c('0x4e')]('id')[_0xab8c('0x4e')]('name')[_0xab8c('0x4e')]('color')[_0xab8c('0x4f')]('tools_tags');var _0x4a3ee8=squel[_0xab8c('0x4d')]()[_0xab8c('0x4e')](_0xab8c('0x50'))['field'](_0xab8c('0x51'))['field']('ui.FaxInteractionId')[_0xab8c('0x4f')]('user_has_fax_interactions','ui')[_0xab8c('0x52')]('users','u',_0xab8c('0x53'));var _0x42f8eb=squel[_0xab8c('0x4d')]()[_0xab8c('0x4f')](_0xab8c('0x54'),'i')[_0xab8c('0x52')](_0xab8c('0x55'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xab8c('0x52')]('users','o','o.id\x20=\x20i.UserId')['left_join'](_0xab8c('0x56'),'a',_0xab8c('0x57'))[_0xab8c('0x52')](_0xab8c('0x58'),'me',_0xab8c('0x59'))[_0xab8c('0x52')]('fax_interaction_has_tags','it','it.FaxInteractionId\x20=\x20i.id')[_0xab8c('0x52')](_0xab8c('0x5a'),'t',_0xab8c('0x5b'));var _0x32583b=squel[_0xab8c('0x5c')]();var _0x4cf35a=[];var _0x77485=squel[_0xab8c('0x5c')]();var _0xaff390;if(_0x177563[_0xab8c('0x42')][_0xab8c('0x5d')]){_0xaff390=as['parseSearch'](_0x177563[_0xab8c('0x42')][_0xab8c('0x5d')]);var _0x30503d=_0xaff390['sqlOperator'];for(var _0x25d01b=0x0;_0x25d01b<_0xaff390[_0xab8c('0x5e')][_0xab8c('0x5f')];_0x25d01b++){var _0x374dbe=_0xaff390[_0xab8c('0x5e')][_0x25d01b];var _0x107c1e='i';var _0x1d12c7=_[_0xab8c('0x60')](_0x4b9b29,[_0xab8c('0x2a'),_0x374dbe[_0xab8c('0x4e')]]);if(!_0x1d12c7){switch(_0x374dbe['field']){case _0xab8c('0x61'):if(_0x374dbe[_0xab8c('0x62')]==0x1){_0x42f8eb[_0xab8c('0x63')]('`'+_0x374dbe[_0xab8c('0x4e')]+'`\x20=\x200');}else{_0x42f8eb[_0xab8c('0x63')]('`'+_0x374dbe['field']+'`\x20>\x200');}break;case _0xab8c('0x64'):if(_0x374dbe['operator']===_0xab8c('0x65')){if(_0x374dbe['value'][_0xab8c('0x31')]('\x20')['length']>0x1){_0x32583b[_0x30503d](_0xab8c('0x66'),qs[_0xab8c('0x67')](_0x374dbe[_0xab8c('0x62')]),null);}else{var _0x15fd38='%'+_0x374dbe[_0xab8c('0x62')]+'%';_0x32583b[_0x30503d](_0xab8c('0x68'),_0x15fd38,_0x15fd38,_0x15fd38);}}else{_0x1d12c7=_[_0xab8c('0x60')](_0x4b9b29,['name',_0xab8c('0x69')]);_0x374dbe[_0xab8c('0x4e')]=_0xab8c('0x69');_0x42ffcb=as[_0xab8c('0x6a')](_0x107c1e,_0x1d12c7['type'],_0x374dbe);_0x32583b[_0x30503d](_0x42ffcb[_0xab8c('0x6b')],_0x42ffcb[_0xab8c('0x62')][_0xab8c('0x6c')],_0x42ffcb[_0xab8c('0x62')][_0xab8c('0x1e')]);}break;case _0xab8c('0x6d'):var _0xe66c97=_0x374dbe['value'][_0xab8c('0x31')](',')['map'](function(_0x5e7744){return Number(_0x5e7744);});_0xe66c97[_0xab8c('0x32')](function(_0x1d24bd){_0x77485['or'](_0xab8c('0x6e'),'%,'+_0x1d24bd+',%');});_0x4cf35a=_['union'](_0x4cf35a,_0xe66c97);break;case _0xab8c('0x6f'):if(_0x374dbe[_0xab8c('0x70')]===_0xab8c('0x65')){_0x32583b[_0x30503d]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x374dbe[_0xab8c('0x62')]+'%',null);}else{_0x1d12c7=_['find'](_0x4b9b29,[_0xab8c('0x2a'),'UserId']);_0x374dbe[_0xab8c('0x4e')]=_0xab8c('0x3a');_0x42ffcb=as[_0xab8c('0x6a')](_0x107c1e,_0x1d12c7[_0xab8c('0x3f')],_0x374dbe);_0x32583b[_0x30503d](_0x42ffcb['text'],_0x42ffcb['value'][_0xab8c('0x6c')],_0x42ffcb[_0xab8c('0x62')][_0xab8c('0x1e')]);}break;case _0xab8c('0x71'):_0x42ffcb=as[_0xab8c('0x6a')]('me',null,_0x374dbe);_0x32583b[_0x30503d](_0x42ffcb[_0xab8c('0x6b')],_0x42ffcb[_0xab8c('0x62')][_0xab8c('0x6c')],_0x42ffcb['value']['end']);break;}}else{var _0x42ffcb=as[_0xab8c('0x6a')](_0x107c1e,_0x1d12c7['type'],_0x374dbe);_0x32583b[_0x30503d](_0x42ffcb[_0xab8c('0x6b')],_0x42ffcb[_0xab8c('0x62')]['start'],_0x42ffcb[_0xab8c('0x62')]['end']);}}}else{var _0xa31863=_(_0x177563[_0xab8c('0x42')])[_0xab8c('0x43')]()[_0xab8c('0x2d')](function(_0x240470){return _[_0xab8c('0x72')](_0x4b9b29,[_0xab8c('0x2a'),_0x240470])?_0x240470:undefined;})[_0xab8c('0x73')]()[_0xab8c('0x62')]();if(!_['isEmpty'](_0xa31863)){_0xa31863[_0xab8c('0x32')](function(_0xa8fdcc){if(_0xa8fdcc==='FaxAccountId'){_0x42f8eb[_0xab8c('0x74')]('i.FaxAccountId\x20IN\x20?',[][_0xab8c('0x75')](_0x177563['query'][_0xa8fdcc]));}else if(_0xa8fdcc===_0xab8c('0x76')){var _0x1e5d7b=JSON[_0xab8c('0x77')](_0x177563['query'][_0xa8fdcc])[_0xab8c('0x78')];var _0xb53710=JSON[_0xab8c('0x77')](_0x177563[_0xab8c('0x42')][_0xa8fdcc])[_0xab8c('0x79')];_0x42f8eb[_0xab8c('0x74')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x1e5d7b,_0xb53710);}else{if(_0x177563[_0xab8c('0x42')][_0xa8fdcc]===_0xab8c('0x7a')){_0x42f8eb[_0xab8c('0x74')]('i.'+_0xa8fdcc+_0xab8c('0x7b'));}else{_0x42f8eb['where']('i.'+_0xa8fdcc+_0xab8c('0x7c'),_0x177563[_0xab8c('0x42')][_0xa8fdcc]);}}});}if(_0x177563['query'][_0xab8c('0x7d')]){if(_0x177563['query']['read']==0x1){_0x42f8eb[_0xab8c('0x63')](_0xab8c('0x7e'));}else{_0x42f8eb[_0xab8c('0x63')]('`unreadMessages`\x20>\x200');}}if(_0x177563[_0xab8c('0x42')][_0xab8c('0x7f')]){_0x4cf35a=_[_0xab8c('0x80')](_0x177563[_0xab8c('0x42')][_0xab8c('0x7f')])?_0x177563[_0xab8c('0x42')][_0xab8c('0x7f')]:new Array(_0x177563[_0xab8c('0x42')][_0xab8c('0x7f')]);_0x4cf35a[_0xab8c('0x32')](function(_0x370605){_0x77485['or'](_0xab8c('0x6e'),'%,'+_0x370605+',%');});}if(_0x177563[_0xab8c('0x42')][_0xab8c('0x81')]){var _0x5db0fb=_0x177563[_0xab8c('0x42')][_0xab8c('0x81')]['replace']('\x5c','\x5c\x5c')[_0xab8c('0x82')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x5db0fb)){_0x32583b['or'](_0xab8c('0x83'),_0x5db0fb+'%')['or'](_0xab8c('0x84'),_0x5db0fb+'%');}_0x32583b['or'](_0xab8c('0x85'),_0x5db0fb+'%');}}_0x42f8eb[_0xab8c('0x74')](_0x32583b);_0x42f8eb[_0xab8c('0x86')](_0xab8c('0x87'));var _0x34bf90={'type':db[_0xab8c('0x88')][_0xab8c('0x89')][_0xab8c('0x8a')],'raw':!![]};var _0x292c0=_0x42f8eb[_0xab8c('0x8b')]();_0x292c0['field'](_0xab8c('0x87'));_0x292c0[_0xab8c('0x4e')](_0xab8c('0x8c'),_0xab8c('0x61'));if(_0x26dae1[_0xab8c('0x49')]){_0x26dae1[_0xab8c('0x49')][_0xab8c('0x32')](function(_0x10ac49){var _0x1adc9b=_0x10ac49[0x0]==='contactName'?_0x10ac49[0x0]:'i.'+_0x10ac49[0x0];_0x42f8eb[_0xab8c('0x49')](_0x1adc9b,_0x10ac49[0x1]===_0xab8c('0x8d')?![]:!![]);});}if(!_[_0xab8c('0x8e')](_0x4cf35a)){_0x42f8eb[_0xab8c('0x63')](_0x77485);_0x292c0[_0xab8c('0x74')](_0xab8c('0x8f'),_0x4cf35a);}BPromise[_0xab8c('0x90')]()[_0xab8c('0x27')](function(){if(!_0xaff390){if(_0x177563[_0xab8c('0x42')][_0xab8c('0x91')])return;_0x292c0[_0xab8c('0x74')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');_0x42f8eb[_0xab8c('0x74')](_0xab8c('0x92'));return;}if(_0x177563[_0xab8c('0x93')][_0xab8c('0x94')]!==_0xab8c('0x95'))return;return _0x177563[_0xab8c('0x93')]['getFaxAccounts']({'attributes':['id'],'raw':!![]})['then'](function(_0x1cd3f8){if(_[_0xab8c('0x8e')](_0x1cd3f8)){_0x292c0[_0xab8c('0x74')](_0xab8c('0x96'));_0x42f8eb['where'](_0xab8c('0x96'));}else{_0x292c0[_0xab8c('0x74')](_0xab8c('0x97'),_[_0xab8c('0x2d')](_0x1cd3f8,'id'));_0x42f8eb['where'](_0xab8c('0x97'),_[_0xab8c('0x2d')](_0x1cd3f8,'id'));}});})['then'](function(){if(_0x177563[_0xab8c('0x93')][_0xab8c('0x94')]==='agent'&&!_0xaff390&&!_0x177563['query']['FaxAccountId'])return[];return db['sequelize'][_0xab8c('0x42')](_0x292c0[_0xab8c('0x98')](),_0x34bf90);})[_0xab8c('0x27')](function(_0x37e793){_0x2b2590[_0xab8c('0x23')]=_0x37e793['length'];if(_0x2b2590[_0xab8c('0x23')]===0x0)return[];return db[_0xab8c('0x99')][_0xab8c('0x42')](_0x391deb[_0xab8c('0x98')](),_0x34bf90)['then'](function(_0x527436){_0x211147=_['keyBy'](_0x527436,'id');_0x34bf90=_['merge'](_0x34bf90,{'model':db[_0xab8c('0x3c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x177563[_0xab8c('0x42')][_0xab8c('0x46')]){_0x26dae1[_0xab8c('0x45')][_0xab8c('0x32')](function(_0x6b3997){_0x42f8eb[_0xab8c('0x4e')]('i.'+_0x6b3997);});}else{_0x42f8eb[_0xab8c('0x4e')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x42f8eb[_0xab8c('0x4e')](_0xab8c('0x9a'),_0xab8c('0x9b'));_0x42f8eb[_0xab8c('0x4e')](_0xab8c('0x9c'),_0xab8c('0x9d'));_0x42f8eb[_0xab8c('0x4e')](_0xab8c('0x9e'),'contactName');_0x42f8eb[_0xab8c('0x4e')]('i.*');_0x42f8eb[_0xab8c('0x4e')](_0xab8c('0x9f'),_0xab8c('0xa0'));_0x42f8eb['field'](_0xab8c('0xa1'),_0xab8c('0xa2'));_0x42f8eb[_0xab8c('0x4e')](_0xab8c('0xa3'),_0xab8c('0xa4'));_0x42f8eb[_0xab8c('0x4e')]('c.phone','Contact.phone');_0x42f8eb['field'](_0xab8c('0xa5'),_0xab8c('0xa6'));_0x42f8eb['field'](_0xab8c('0xa7'),_0xab8c('0xa8'));_0x42f8eb['field'](_0xab8c('0xa9'),_0xab8c('0xaa'));_0x42f8eb[_0xab8c('0x4e')](_0xab8c('0xab'),_0xab8c('0xac'));_0x42f8eb[_0xab8c('0x4e')](_0xab8c('0xad'),'TagIds');}if(_0x26dae1[_0xab8c('0x21')])_0x42f8eb[_0xab8c('0x21')](_0x26dae1['limit']);if(_0x26dae1[_0xab8c('0x20')])_0x42f8eb['offset'](_0x26dae1[_0xab8c('0x20')]);return db['sequelize'][_0xab8c('0x42')](_0x42f8eb[_0xab8c('0x98')](),_0x34bf90);})[_0xab8c('0x27')](function(_0x4a95f1){if(_0x4a95f1[_0xab8c('0x5f')]>0x0)_0x4a3ee8[_0xab8c('0x74')](_0xab8c('0xae'),_[_0xab8c('0x2d')](_0x4a95f1,'id'));return db[_0xab8c('0x99')][_0xab8c('0x42')](_0x4a3ee8[_0xab8c('0x98')](),_0x34bf90)[_0xab8c('0x27')](function(_0x22f788){var _0x2e6e87=_[_0xab8c('0xaf')](_0x22f788,_0xab8c('0xb0'));var _0x49bf83=[];_0x4a95f1['forEach'](function(_0x1fad10){_0x49bf83[_0xab8c('0xb1')](updateFaxInteraction(_0x1fad10,_0x211147,_0x2e6e87));});return BPromise[_0xab8c('0xb2')](_0x49bf83);});});})[_0xab8c('0x27')](function(_0x11dca3){_0x2b2590[_0xab8c('0xb3')]=_0x11dca3;return _0x2b2590;})['then'](respondWithFilteredResult(_0x3c05ec,_0x26dae1))[_0xab8c('0x33')](handleError(_0x3c05ec,null));};exports[_0xab8c('0xb4')]=function(_0x250bbc,_0x19e1cf){var _0xdc0873={'raw':![],'where':{'id':_0x250bbc[_0xab8c('0xb5')]['id']}},_0x9e32af={};_0x9e32af[_0xab8c('0x41')]=_[_0xab8c('0x43')](db['FaxInteraction'][_0xab8c('0x3d')]);_0x9e32af['query']=_[_0xab8c('0x43')](_0x250bbc[_0xab8c('0x42')]);_0x9e32af[_0xab8c('0x4b')]=_[_0xab8c('0x44')](_0x9e32af[_0xab8c('0x41')],_0x9e32af['query']);_0xdc0873['attributes']=_[_0xab8c('0x44')](_0x9e32af[_0xab8c('0x41')],qs[_0xab8c('0x46')](_0x250bbc['query'][_0xab8c('0x46')]));_0xdc0873[_0xab8c('0x45')]=_0xdc0873[_0xab8c('0x45')][_0xab8c('0x5f')]?_0xdc0873[_0xab8c('0x45')]:_0x9e32af[_0xab8c('0x41')];if(_0x250bbc[_0xab8c('0x42')][_0xab8c('0xb6')]){_0xdc0873[_0xab8c('0xb7')]=[{'all':!![]}];}_0xdc0873=_[_0xab8c('0xb8')]({},_0xdc0873,_0x250bbc[_0xab8c('0xb9')]);return db['FaxInteraction'][_0xab8c('0x60')](_0xdc0873)['then'](handleEntityNotFound(_0x19e1cf,null))[_0xab8c('0x27')](respondWithResult(_0x19e1cf,null))[_0xab8c('0x33')](handleError(_0x19e1cf,null));};exports[_0xab8c('0xba')]=function(_0x237e74,_0x5389f3){return db['FaxInteraction'][_0xab8c('0xba')](_0x237e74['body'],{})['then'](respondWithResult(_0x5389f3,0xc9))['catch'](handleError(_0x5389f3,null));};exports[_0xab8c('0x26')]=function(_0x2895dd,_0x1942e7){if(_0x2895dd[_0xab8c('0x71')]['id']){delete _0x2895dd['body']['id'];}return db['FaxInteraction']['find']({'where':{'id':_0x2895dd[_0xab8c('0xb5')]['id']}})[_0xab8c('0x27')](handleEntityNotFound(_0x1942e7,null))[_0xab8c('0x27')](saveUpdates(_0x2895dd['body'],null))[_0xab8c('0x27')](respondWithResult(_0x1942e7,null))['catch'](handleError(_0x1942e7,null));};exports[_0xab8c('0x28')]=function(_0x106552,_0x5a62a4){return db['FaxInteraction']['find']({'where':{'id':_0x106552[_0xab8c('0xb5')]['id']}})[_0xab8c('0x27')](handleEntityNotFound(_0x5a62a4,null))[_0xab8c('0x27')](removeEntity(_0x5a62a4,null))[_0xab8c('0x33')](handleError(_0x5a62a4,null));};exports[_0xab8c('0xbb')]=function(_0x49aec5,_0x19506e){return db[_0xab8c('0x3c')][_0xab8c('0xbb')]()[_0xab8c('0x27')](respondWithResult(_0x19506e,null))['catch'](handleError(_0x19506e,null));};exports['addMessage']=function(_0xc48546,_0x38e247,_0x497f46){return db[_0xab8c('0xbc')][_0xab8c('0x60')]({'where':{'id':_0xc48546['params']['id']}})['then'](handleEntityNotFound(_0x38e247,null))['then'](function(_0x123c57){if(_0x123c57){return _0x123c57[_0xab8c('0xbd')](_0xc48546['body'][_0xab8c('0xbe')],_[_0xab8c('0xbf')](_0xc48546[_0xab8c('0x71')],[_0xab8c('0xbe'),'id'])||{});}})[_0xab8c('0x27')](respondWithResult(_0x38e247,null))[_0xab8c('0x33')](handleError(_0x38e247,null));};exports[_0xab8c('0xc0')]=function(_0x1e77b8,_0x517967,_0x2f7958){var _0x2c4084={'raw':![],'where':{}};var _0x3f34a2={};var _0x145031={'count':0x0,'rows':[]};return db['FaxInteraction'][_0xab8c('0xc1')]({'where':{'id':_0x1e77b8['params']['id']}})['then'](handleEntityNotFound(_0x517967,null))[_0xab8c('0x27')](function(_0x4bc4ee){if(_0x4bc4ee){_0x3f34a2['model']=_[_0xab8c('0x43')](db[_0xab8c('0xbc')][_0xab8c('0x3d')]);_0x3f34a2['query']=_[_0xab8c('0x43')](_0x1e77b8[_0xab8c('0x42')]);_0x3f34a2['filters']=_[_0xab8c('0x44')](_0x3f34a2[_0xab8c('0x41')],_0x3f34a2[_0xab8c('0x42')]);_0x2c4084[_0xab8c('0x45')]=_[_0xab8c('0x44')](_0x3f34a2[_0xab8c('0x41')],qs[_0xab8c('0x46')](_0x1e77b8['query'][_0xab8c('0x46')]));_0x2c4084[_0xab8c('0x45')]=_0x2c4084['attributes'][_0xab8c('0x5f')]?_0x2c4084[_0xab8c('0x45')]:_0x3f34a2[_0xab8c('0x41')];if(!_0x1e77b8[_0xab8c('0x42')]['hasOwnProperty'](_0xab8c('0x48'))){_0x2c4084['limit']=qs[_0xab8c('0x21')](_0x1e77b8[_0xab8c('0x42')][_0xab8c('0x21')]);_0x2c4084[_0xab8c('0x20')]=qs['offset'](_0x1e77b8['query']['offset']);}_0x2c4084[_0xab8c('0x49')]=qs[_0xab8c('0x4a')](_0x1e77b8['query'][_0xab8c('0x4a')]);_0x2c4084[_0xab8c('0x74')]=qs[_0xab8c('0x4b')](_[_0xab8c('0x4c')](_0x1e77b8[_0xab8c('0x42')],_0x3f34a2[_0xab8c('0x4b')]));_0x2c4084[_0xab8c('0x74')]['FaxInteractionId']=_0x4bc4ee['id'];if(_0x1e77b8[_0xab8c('0x42')][_0xab8c('0x81')]){_0x2c4084[_0xab8c('0x74')]=_['merge'](_0x2c4084['where'],{'$or':_[_0xab8c('0x2d')](_0x2c4084[_0xab8c('0x45')],function(_0x2cf67d){var _0x443d20={};_0x443d20[_0x2cf67d]={'$like':'%'+_0x1e77b8[_0xab8c('0x42')][_0xab8c('0x81')]+'%'};return _0x443d20;})});}if(_0x1e77b8[_0xab8c('0x42')][_0xab8c('0x78')]){var _0x392eca=_0x1e77b8[_0xab8c('0x42')]['$gte']['split'](',');var _0x388fe7={};_0x388fe7[_0x392eca[0x0]]={'$gte':moment(_0x392eca[0x1])[_0xab8c('0xc2')](_0xab8c('0xc3'))};_0x2c4084[_0xab8c('0x74')]=_[_0xab8c('0xb8')](_0x2c4084[_0xab8c('0x74')],_0x388fe7);}_0x2c4084=_['merge']({},_0x2c4084,_0x1e77b8['options']);return db[_0xab8c('0xbc')][_0xab8c('0x23')]({'where':_0x2c4084[_0xab8c('0x74')]})[_0xab8c('0x27')](function(_0x1110b3){_0x145031[_0xab8c('0x23')]=_0x1110b3;if(_0x1e77b8[_0xab8c('0x42')][_0xab8c('0xb6')]){_0x2c4084['include']=[{'all':!![]}];}return db[_0xab8c('0xbc')]['findAll'](_0x2c4084);})['then'](function(_0x41c534){_0x145031[_0xab8c('0xb3')]=_0x41c534;return _0x145031;});}})[_0xab8c('0x27')](respondWithFilteredResult(_0x517967,_0x2c4084))['catch'](handleError(_0x517967,null));};exports[_0xab8c('0xc4')]=function(_0xbc482a,_0x1b827a,_0x23bb3b){return db['FaxInteraction'][_0xab8c('0x60')]({'where':{'id':_0xbc482a['params']['id']}})[_0xab8c('0x27')](handleEntityNotFound(_0x1b827a,null))[_0xab8c('0x27')](function(_0xe1e5c9){if(_0xe1e5c9){return _0xe1e5c9[_0xab8c('0xc5')](_0xbc482a[_0xab8c('0x71')][_0xab8c('0xbe')],_[_0xab8c('0xbf')](_0xbc482a[_0xab8c('0x71')],['ids','id'])||{})[_0xab8c('0xc6')](function(){return db[_0xab8c('0x6d')]['findAll']({'attributes':['id',_0xab8c('0x2a'),_0xab8c('0xc7')],'where':{'id':_0xbc482a[_0xab8c('0x71')][_0xab8c('0xbe')]}});})[_0xab8c('0x27')](function(_0x3fa28b){socket[_0xab8c('0xc8')](_0xab8c('0xc9'),{'id':Number(_0xbc482a[_0xab8c('0xb5')]['id']),'tags':_0x3fa28b||[]});return{'id':Number(_0xbc482a[_0xab8c('0xb5')]['id']),'tags':_0x3fa28b||[]};});}})['then'](respondWithResult(_0x1b827a,null))['catch'](handleError(_0x1b827a,null));};exports[_0xab8c('0xca')]=function(_0xf1bff,_0x5e2ac5,_0x1d4ed7){return db[_0xab8c('0x3c')]['find']({'where':{'id':_0xf1bff[_0xab8c('0xb5')]['id']}})[_0xab8c('0x27')](handleEntityNotFound(_0x5e2ac5,null))[_0xab8c('0x27')](function(_0x333381){if(_0x333381){return _0x333381['removeTags'](_0xf1bff[_0xab8c('0x42')][_0xab8c('0xbe')]);}})[_0xab8c('0x27')](respondWithStatusCode(_0x5e2ac5,null))[_0xab8c('0x33')](handleError(_0x5e2ac5,null));};exports[_0xab8c('0xcb')]=function(_0x5b2fd5,_0x44f7dd){var _0x49a13d=moment()[_0xab8c('0xcc')]()[_0xab8c('0x98')]();var _0x5b3030=path[_0xab8c('0xcd')](config[_0xab8c('0xce')],'server',_0xab8c('0xcf'),_0xab8c('0xd0'));var _0x3fd554=path[_0xab8c('0xcd')](config[_0xab8c('0xce')],'server',_0xab8c('0xcf'),_0xab8c('0xd1'));var _0x58309c=path[_0xab8c('0xcd')](_0x5b3030,_0x49a13d);var _0x1e164b=util[_0xab8c('0xc2')](_0xab8c('0xd2'),_0x5b2fd5[_0xab8c('0xb5')]['id'],_0x49a13d);var _0x3a71e6=path['join'](_0x5b3030,_0x1e164b);var _0x4303d7=[];_0x4303d7[_0xab8c('0xb1')]({'model':db['Attachment'],'as':_0xab8c('0xd3'),'raw':!![]});var _0x32f8ab=[{'model':db[_0xab8c('0xbc')],'as':_0xab8c('0xd4'),'attributes':['id','body',_0xab8c('0x76')],'include':_0x4303d7}];return db[_0xab8c('0x3c')][_0xab8c('0x60')]({'where':{'id':_0x5b2fd5[_0xab8c('0xb5')]['id']},'include':_0x32f8ab})[_0xab8c('0x27')](handleEntityNotFound(_0x44f7dd,null))['then'](function(_0x354c6a){if(_0x354c6a&&_0x354c6a[_0xab8c('0xd4')]){var _0xf2de64=_0x354c6a['get']({'plain':!![]});fs['mkdirSync'](_0x58309c);for(var _0x354d16=0x0;_0x354d16<_0xf2de64[_0xab8c('0xd4')][_0xab8c('0x5f')];_0x354d16++){var _0x4be9af=_0xf2de64[_0xab8c('0xd4')][_0x354d16]['Attachment'];if(_0x4be9af){var _0x1536c4=path[_0xab8c('0xcd')](_0x3fd554,_0x4be9af[_0xab8c('0xd5')]);if(fs[_0xab8c('0xd6')](_0x1536c4)){fs[_0xab8c('0xd7')](_0x1536c4)['pipe'](fs[_0xab8c('0xd8')](path[_0xab8c('0xcd')](_0x58309c,_0x4be9af[_0xab8c('0xd5')])));}}}return BPromise[_0xab8c('0x90')]()[_0xab8c('0x27')](function(){return new BPromise(function(_0x9a93fd,_0x5f1fc1){zipdir(_0x58309c,{'saveTo':_0x3a71e6},function(_0x5a2a6c,_0x216dbe){if(_0x5a2a6c)return _0x5f1fc1(_0x5a2a6c);return _0x9a93fd(_0x216dbe);});})['then'](function(){return new BPromise(function(_0x317148,_0x1b9d75){rimraf(_0x58309c,function(_0x20105d){if(_0x20105d)_0x1b9d75(_0x20105d);return _0x317148();});});})[_0xab8c('0x27')](function(){return _0x44f7dd[_0xab8c('0xcb')](_0x3a71e6,_0x1e164b,function(_0xef315b){if(_0xef315b){console[_0xab8c('0xd9')](_0xab8c('0xda'),_0xef315b);}else{fs[_0xab8c('0xdb')](_0x3a71e6);}});});});}else{return _0x44f7dd[_0xab8c('0xdc')](0xc8);}})['catch'](handleError(_0x44f7dd,null));};
\ No newline at end of file
index 498493f..2596ba8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf18b=['Users','map','findAll','then','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','remove','getUsers'];(function(_0x476bf4,_0x2a3755){var _0x788ffe=function(_0x13fa11){while(--_0x13fa11){_0x476bf4['push'](_0x476bf4['shift']());}};_0x788ffe(++_0x2a3755);}(_0xf18b,0xa4));var _0xbf18=function(_0x16dc56,_0x54149b){_0x16dc56=_0x16dc56-0x0;var _0x49d29e=_0xf18b[_0x16dc56];return _0x49d29e;};'use strict';var EventEmitter=require(_0xbf18('0x0'));var FaxInteraction=require(_0xbf18('0x1'))['db'][_0xbf18('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0xbf18('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xbf18('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xbf18('0x5')};function emitEvent(_0x42f5e0){return function(_0x40cda6,_0x400937,_0xee6c79){_0x40cda6[_0xbf18('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x57a166){_0x40cda6['setDataValue'](_0xbf18('0x7'),_0x57a166[_0xbf18('0x8')](function(_0x24fe40){return{'id':_0x24fe40['id']};}));return FaxMessage[_0xbf18('0x9')]({'where':{'FaxInteractionId':_0x40cda6['id'],'direction':'in','read':![]},'raw':!![]});})[_0xbf18('0xa')](function(_0x29129d){_0x40cda6[_0xbf18('0xb')](_0xbf18('0xc'),_0x29129d[_0xbf18('0xd')]);FaxInteractionEvents[_0xbf18('0xe')](_0x42f5e0+':'+_0x40cda6['id'],_0x40cda6);FaxInteractionEvents['emit'](_0x42f5e0,_0x40cda6);_0xee6c79(null);})[_0xbf18('0xf')](_0xee6c79(null));};}for(var e in events){if(events[_0xbf18('0x10')](e)){var event=events[e];FaxInteraction[_0xbf18('0x11')](e,emitEvent(event));}}module[_0xbf18('0x12')]=FaxInteractionEvents;
\ No newline at end of file
+var _0xd4f0=['setDataValue','Users','map','findAll','then','unreadMessages','catch','hasOwnProperty','hook','exports','events','FaxInteraction','FaxMessage','save','update','remove'];(function(_0x18c52f,_0x214f74){var _0x39e37a=function(_0x10fc98){while(--_0x10fc98){_0x18c52f['push'](_0x18c52f['shift']());}};_0x39e37a(++_0x214f74);}(_0xd4f0,0x8a));var _0x0d4f=function(_0x44ca6e,_0x5e2c91){_0x44ca6e=_0x44ca6e-0x0;var _0x2edab2=_0xd4f0[_0x44ca6e];return _0x2edab2;};'use strict';var EventEmitter=require(_0x0d4f('0x0'));var FaxInteraction=require('../../mysqldb')['db'][_0x0d4f('0x1')];var FaxMessage=require('../../mysqldb')['db'][_0x0d4f('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0d4f('0x3'),'afterUpdate':_0x0d4f('0x4'),'afterDestroy':_0x0d4f('0x5')};function emitEvent(_0x4a4fe0){return function(_0x5d1648,_0x3821cb,_0x478ac2){_0x5d1648['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x3773fe){_0x5d1648[_0x0d4f('0x6')](_0x0d4f('0x7'),_0x3773fe[_0x0d4f('0x8')](function(_0x2edd0a){return{'id':_0x2edd0a['id']};}));return FaxMessage[_0x0d4f('0x9')]({'where':{'FaxInteractionId':_0x5d1648['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0d4f('0xa')](function(_0x555651){_0x5d1648[_0x0d4f('0x6')](_0x0d4f('0xb'),_0x555651['length']);FaxInteractionEvents['emit'](_0x4a4fe0+':'+_0x5d1648['id'],_0x5d1648);FaxInteractionEvents['emit'](_0x4a4fe0,_0x5d1648);_0x478ac2(null);})[_0x0d4f('0xc')](_0x478ac2(null));};}for(var e in events){if(events[_0x0d4f('0xd')](e)){var event=events[e];FaxInteraction[_0x0d4f('0xe')](e,emitEvent(event));}}module[_0x0d4f('0xf')]=FaxInteractionEvents;
\ No newline at end of file
index 12017d3..dac7aca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d5e=['closed','closedAt','format','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','exports','FaxInteraction','changed'];(function(_0x41b4ff,_0x5d23be){var _0x1c1bd1=function(_0x1b8119){while(--_0x1b8119){_0x41b4ff['push'](_0x41b4ff['shift']());}};_0x1c1bd1(++_0x5d23be);}(_0x6d5e,0x103));var _0xe6d5=function(_0x310032,_0x50a437){_0x310032=_0x310032-0x0;var _0x1ca6e5=_0x6d5e[_0x310032];return _0x1ca6e5;};'use strict';var _=require(_0xe6d5('0x0'));var util=require(_0xe6d5('0x1'));var logger=require(_0xe6d5('0x2'))(_0xe6d5('0x3'));var moment=require('moment');var BPromise=require(_0xe6d5('0x4'));var rp=require(_0xe6d5('0x5'));var fs=require('fs');var path=require(_0xe6d5('0x6'));var rimraf=require(_0xe6d5('0x7'));var config=require(_0xe6d5('0x8'));var attributes=require(_0xe6d5('0x9'));module[_0xe6d5('0xa')]=function(_0x57c0ca,_0x13411d){return _0x57c0ca['define'](_0xe6d5('0xb'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x572986,_0x52913e,_0x5c08bb){if(_0x572986[_0xe6d5('0xc')](_0xe6d5('0xd'))){_0x572986[_0xe6d5('0xe')]=moment()[_0xe6d5('0xf')]('YYYY-MM-DD\x20HH:mm:ss');}_0x5c08bb(null,_0x572986);}}});};
\ No newline at end of file
+var _0x1b94=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','fax_interactions','closed','closedAt'];(function(_0x3a5cac,_0x39f40a){var _0x1f81c2=function(_0xb508e3){while(--_0xb508e3){_0x3a5cac['push'](_0x3a5cac['shift']());}};_0x1f81c2(++_0x39f40a);}(_0x1b94,0x169));var _0x41b9=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0x1b94[_0x35da42];return _0x370035;};'use strict';var _=require(_0x41b9('0x0'));var util=require(_0x41b9('0x1'));var logger=require('../../config/logger')(_0x41b9('0x2'));var moment=require(_0x41b9('0x3'));var BPromise=require(_0x41b9('0x4'));var rp=require(_0x41b9('0x5'));var fs=require('fs');var path=require(_0x41b9('0x6'));var rimraf=require(_0x41b9('0x7'));var config=require(_0x41b9('0x8'));var attributes=require('./faxInteraction.attributes');module[_0x41b9('0x9')]=function(_0x2e4f4e,_0x1a74bb){return _0x2e4f4e[_0x41b9('0xa')]('FaxInteraction',attributes,{'tableName':_0x41b9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4615fe,_0x4d64a,_0x3bfb4b){if(_0x4615fe['changed'](_0x41b9('0xc'))){_0x4615fe[_0x41b9('0xd')]=moment()['format'](_0x41b9('0xe'));}_0x3bfb4b(null,_0x4615fe);}}});};
\ No newline at end of file
index 9131841..79b4c1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x649e=['body','options','where','limit','UpdateFaxInteraction','catch','AddTagsToFaxInteraction','find','addTags','omit','AddTags','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','FaxInteraction','update'];(function(_0x57db77,_0x3b8fbc){var _0x29cb52=function(_0x34badb){while(--_0x34badb){_0x57db77['push'](_0x57db77['shift']());}};_0x29cb52(++_0x3b8fbc);}(_0x649e,0xef));var _0xe649=function(_0x1627de,_0x3360bc){_0x1627de=_0x1627de-0x0;var _0x53d64c=_0x649e[_0x1627de];return _0x53d64c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe649('0x0'));var BPromise=require(_0xe649('0x1'));var rs=require(_0xe649('0x2'));var fs=require('fs');var Redis=require(_0xe649('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe649('0x4'));var logger=require('../../config/logger')(_0xe649('0x5'));var config=require('../../config/environment');var jayson=require(_0xe649('0x6'));var client=jayson[_0xe649('0x7')][_0xe649('0x8')]({'port':0x232a});config['redis']=_[_0xe649('0x9')](config['redis'],{'host':_0xe649('0xa'),'port':0x18eb});var socket=require(_0xe649('0xb'))(new Redis(config[_0xe649('0xc')]));require('./faxInteraction.socket')[_0xe649('0xd')](socket);function respondWithRpcPromise(_0x2819f8,_0x52cfda,_0x1b6152){return new BPromise(function(_0x1c53a8,_0x15defb){return client[_0xe649('0xe')](_0x2819f8,_0x1b6152)[_0xe649('0xf')](function(_0x134f3a){logger[_0xe649('0x10')](_0xe649('0x11'),_0x52cfda,_0xe649('0x12'));logger[_0xe649('0x13')](_0xe649('0x14'),_0x52cfda,_0xe649('0x12'),JSON[_0xe649('0x15')](_0x134f3a));if(_0x134f3a['error']){if(_0x134f3a[_0xe649('0x16')]['code']===0x1f4){logger[_0xe649('0x16')]('FaxInteraction,\x20%s,\x20%s',_0x52cfda,_0x134f3a['error'][_0xe649('0x17')]);return _0x15defb(_0x134f3a[_0xe649('0x16')][_0xe649('0x17')]);}logger[_0xe649('0x16')]('FaxInteraction,\x20%s,\x20%s',_0x52cfda,_0x134f3a[_0xe649('0x16')][_0xe649('0x17')]);return _0x1c53a8(_0x134f3a[_0xe649('0x16')][_0xe649('0x17')]);}else{logger['info'](_0xe649('0x11'),_0x52cfda,_0xe649('0x12'));_0x1c53a8(_0x134f3a[_0xe649('0x18')][_0xe649('0x17')]);}})['catch'](function(_0x5215e3){logger[_0xe649('0x16')](_0xe649('0x11'),_0x52cfda,_0x5215e3);_0x15defb(_0x5215e3);});});}exports['UpdateFaxInteraction']=function(_0x45f6e8){var _0x54b205=this;return new Promise(function(_0x463219,_0xd61708){return db[_0xe649('0x19')][_0xe649('0x1a')](_0x45f6e8[_0xe649('0x1b')],{'raw':_0x45f6e8[_0xe649('0x1c')]?_0x45f6e8[_0xe649('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45f6e8[_0xe649('0x1c')]?_0x45f6e8['options'][_0xe649('0x1d')]||null:null,'attributes':_0x45f6e8[_0xe649('0x1c')]?_0x45f6e8[_0xe649('0x1c')]['attributes']||null:null,'limit':_0x45f6e8[_0xe649('0x1c')]?_0x45f6e8[_0xe649('0x1c')][_0xe649('0x1e')]||null:null})[_0xe649('0xf')](function(_0x5f2d89){logger[_0xe649('0x10')](_0xe649('0x1f'),_0x45f6e8);logger[_0xe649('0x13')]('UpdateFaxInteraction',_0x45f6e8,JSON[_0xe649('0x15')](_0x5f2d89));_0x463219(_0x5f2d89);})[_0xe649('0x20')](function(_0x2cf51f){logger[_0xe649('0x16')]('UpdateFaxInteraction',_0x2cf51f['message'],_0x45f6e8);_0xd61708(_0x54b205[_0xe649('0x16')](0x1f4,_0x2cf51f[_0xe649('0x17')]));});});};exports[_0xe649('0x21')]=function(_0x33733b){return new Promise(function(_0x2d10f6,_0x452f6d){return db['FaxInteraction'][_0xe649('0x22')]({'where':_0x33733b[_0xe649('0x1c')]?_0x33733b[_0xe649('0x1c')]['where']||null:null})['then'](function(_0x4912b3){if(_0x4912b3){return _0x4912b3[_0xe649('0x23')](_0x33733b[_0xe649('0x1b')]['ids'],_[_0xe649('0x24')](_0x33733b[_0xe649('0x1b')],['ids','id'])||{});}})['spread'](function(_0x58790d){logger[_0xe649('0x10')]('AddTags',_0x33733b);logger[_0xe649('0x13')](_0xe649('0x25'),_0x33733b,JSON['stringify'](_0x58790d));_0x2d10f6(_0x58790d);})[_0xe649('0x20')](function(_0x1e4de2){logger[_0xe649('0x16')]('AddTags',_0x1e4de2['message'],_0x33733b);_0x452f6d(_this[_0xe649('0x16')](0x1f4,_0x1e4de2['message']));});});};
\ No newline at end of file
+var _0xe10b=['FaxInteraction','update','options','raw','where','attributes','limit','then','UpdateFaxInteraction','AddTagsToFaxInteraction','find','addTags','body','ids','omit','spread','AddTags','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','request','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','catch'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0xe10b,0x1df));var _0xbe10=function(_0x4f2810,_0x48ee3a){_0x4f2810=_0x4f2810-0x0;var _0x1f5474=_0xe10b[_0x4f2810];return _0x1f5474;};'use strict';var _=require(_0xbe10('0x0'));var util=require(_0xbe10('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbe10('0x2'));var fs=require('fs');var Redis=require(_0xbe10('0x3'));var db=require(_0xbe10('0x4'))['db'];var utils=require(_0xbe10('0x5'));var logger=require(_0xbe10('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbe10('0x7')][_0xbe10('0x8')]({'port':0x232a});config[_0xbe10('0x9')]=_['defaults'](config[_0xbe10('0x9')],{'host':_0xbe10('0xa'),'port':0x18eb});var socket=require(_0xbe10('0xb'))(new Redis(config[_0xbe10('0x9')]));require(_0xbe10('0xc'))[_0xbe10('0xd')](socket);function respondWithRpcPromise(_0x4f8761,_0x5af7cc,_0x1366aa){return new BPromise(function(_0xdd4b13,_0x5326b2){return client[_0xbe10('0xe')](_0x4f8761,_0x1366aa)['then'](function(_0x58d2dc){logger['info'](_0xbe10('0xf'),_0x5af7cc,_0xbe10('0x10'));logger[_0xbe10('0x11')](_0xbe10('0x12'),_0x5af7cc,_0xbe10('0x10'),JSON[_0xbe10('0x13')](_0x58d2dc));if(_0x58d2dc['error']){if(_0x58d2dc['error'][_0xbe10('0x14')]===0x1f4){logger[_0xbe10('0x15')](_0xbe10('0xf'),_0x5af7cc,_0x58d2dc[_0xbe10('0x15')][_0xbe10('0x16')]);return _0x5326b2(_0x58d2dc[_0xbe10('0x15')]['message']);}logger[_0xbe10('0x15')](_0xbe10('0xf'),_0x5af7cc,_0x58d2dc['error'][_0xbe10('0x16')]);return _0xdd4b13(_0x58d2dc['error']['message']);}else{logger[_0xbe10('0x17')](_0xbe10('0xf'),_0x5af7cc,'request\x20sent');_0xdd4b13(_0x58d2dc['result']['message']);}})[_0xbe10('0x18')](function(_0x47b767){logger[_0xbe10('0x15')]('FaxInteraction,\x20%s,\x20%s',_0x5af7cc,_0x47b767);_0x5326b2(_0x47b767);});});}exports['UpdateFaxInteraction']=function(_0x5a524e){var _0x3262c2=this;return new Promise(function(_0x4a2d99,_0x269759){return db[_0xbe10('0x19')][_0xbe10('0x1a')](_0x5a524e['body'],{'raw':_0x5a524e[_0xbe10('0x1b')]?_0x5a524e[_0xbe10('0x1b')][_0xbe10('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a524e[_0xbe10('0x1b')]?_0x5a524e[_0xbe10('0x1b')][_0xbe10('0x1d')]||null:null,'attributes':_0x5a524e[_0xbe10('0x1b')]?_0x5a524e[_0xbe10('0x1b')][_0xbe10('0x1e')]||null:null,'limit':_0x5a524e[_0xbe10('0x1b')]?_0x5a524e[_0xbe10('0x1b')][_0xbe10('0x1f')]||null:null})[_0xbe10('0x20')](function(_0x4a6a6a){logger[_0xbe10('0x17')](_0xbe10('0x21'),_0x5a524e);logger[_0xbe10('0x11')](_0xbe10('0x21'),_0x5a524e,JSON[_0xbe10('0x13')](_0x4a6a6a));_0x4a2d99(_0x4a6a6a);})[_0xbe10('0x18')](function(_0x28941d){logger[_0xbe10('0x15')](_0xbe10('0x21'),_0x28941d[_0xbe10('0x16')],_0x5a524e);_0x269759(_0x3262c2['error'](0x1f4,_0x28941d[_0xbe10('0x16')]));});});};exports[_0xbe10('0x22')]=function(_0x1338db){return new Promise(function(_0x437158,_0x501fcf){return db[_0xbe10('0x19')][_0xbe10('0x23')]({'where':_0x1338db[_0xbe10('0x1b')]?_0x1338db['options'][_0xbe10('0x1d')]||null:null})[_0xbe10('0x20')](function(_0x47151e){if(_0x47151e){return _0x47151e[_0xbe10('0x24')](_0x1338db[_0xbe10('0x25')][_0xbe10('0x26')],_[_0xbe10('0x27')](_0x1338db[_0xbe10('0x25')],[_0xbe10('0x26'),'id'])||{});}})[_0xbe10('0x28')](function(_0x3a5851){logger[_0xbe10('0x17')](_0xbe10('0x29'),_0x1338db);logger[_0xbe10('0x11')](_0xbe10('0x29'),_0x1338db,JSON[_0xbe10('0x13')](_0x3a5851));_0x437158(_0x3a5851);})[_0xbe10('0x18')](function(_0x16e115){logger['error']('AddTags',_0x16e115[_0xbe10('0x16')],_0x1338db);_0x501fcf(_this['error'](0x1f4,_0x16e115[_0xbe10('0x16')]));});});};
\ No newline at end of file
index b73debe..55f0f7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72c2=['./faxInteraction.events','save','update','emit','removeListener','register','length','faxInteraction:'];(function(_0x5af024,_0x100fc1){var _0x231565=function(_0x4fc66b){while(--_0x4fc66b){_0x5af024['push'](_0x5af024['shift']());}};_0x231565(++_0x100fc1);}(_0x72c2,0x1d8));var _0x272c=function(_0x1beb84,_0x18f952){_0x1beb84=_0x1beb84-0x0;var _0x24b7fe=_0x72c2[_0x1beb84];return _0x24b7fe;};'use strict';var FaxInteractionEvents=require(_0x272c('0x0'));var events=[_0x272c('0x1'),'remove',_0x272c('0x2')];function createListener(_0x598e75,_0x911026){return function(_0x5df62d){_0x911026[_0x272c('0x3')](_0x598e75,_0x5df62d);};}function removeListener(_0x2d81bb,_0x2dcfed){return function(){FaxInteractionEvents[_0x272c('0x4')](_0x2d81bb,_0x2dcfed);};}exports[_0x272c('0x5')]=function(_0x21915a){for(var _0x34e1ff=0x0,_0x2609c2=events[_0x272c('0x6')];_0x34e1ff<_0x2609c2;_0x34e1ff++){var _0x4d48e2=events[_0x34e1ff];var _0x5cf668=createListener(_0x272c('0x7')+_0x4d48e2,_0x21915a);FaxInteractionEvents['on'](_0x4d48e2,_0x5cf668);}};
\ No newline at end of file
+var _0x5fa1=['./faxInteraction.events','save','remove','update','emit','removeListener','length','faxInteraction:'];(function(_0x1906db,_0x1fe35e){var _0x2bb956=function(_0x37df96){while(--_0x37df96){_0x1906db['push'](_0x1906db['shift']());}};_0x2bb956(++_0x1fe35e);}(_0x5fa1,0x190));var _0x15fa=function(_0x569a29,_0x28e300){_0x569a29=_0x569a29-0x0;var _0x5e3479=_0x5fa1[_0x569a29];return _0x5e3479;};'use strict';var FaxInteractionEvents=require(_0x15fa('0x0'));var events=[_0x15fa('0x1'),_0x15fa('0x2'),_0x15fa('0x3')];function createListener(_0x53d2f3,_0x8e75d0){return function(_0x2d4559){_0x8e75d0[_0x15fa('0x4')](_0x53d2f3,_0x2d4559);};}function removeListener(_0x3fd31c,_0x31e1bd){return function(){FaxInteractionEvents[_0x15fa('0x5')](_0x3fd31c,_0x31e1bd);};}exports['register']=function(_0x473c91){for(var _0x31803e=0x0,_0x39a28a=events[_0x15fa('0x6')];_0x31803e<_0x39a28a;_0x31803e++){var _0x2866e7=events[_0x31803e];var _0x38ec36=createListener(_0x15fa('0x7')+_0x2866e7,_0x473c91);FaxInteractionEvents['on'](_0x2866e7,_0x38ec36);}};
\ No newline at end of file
index 912284d..cf172a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3edc=['addMessage','/:id/tags','tracked','fax','faxinteraction:update','update','faxinteraction:destroy','destroy','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','/:id/download','download','post','create'];(function(_0x22d66f,_0x1dd25b){var _0x5546b5=function(_0x20585f){while(--_0x20585f){_0x22d66f['push'](_0x22d66f['shift']());}};_0x5546b5(++_0x1dd25b);}(_0x3edc,0x1ae));var _0xc3ed=function(_0x595e96,_0x39b21b){_0x595e96=_0x595e96-0x0;var _0x382e4d=_0x3edc[_0x595e96];return _0x382e4d;};'use strict';var multer=require(_0xc3ed('0x0'));var util=require(_0xc3ed('0x1'));var path=require(_0xc3ed('0x2'));var timeout=require(_0xc3ed('0x3'));var express=require(_0xc3ed('0x4'));var router=express['Router']();var fs_extra=require(_0xc3ed('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc3ed('0x6'));var config=require(_0xc3ed('0x7'));var controller=require(_0xc3ed('0x8'));router[_0xc3ed('0x9')]('/',auth[_0xc3ed('0xa')](),controller['index']);router[_0xc3ed('0x9')](_0xc3ed('0xb'),auth[_0xc3ed('0xa')](),controller[_0xc3ed('0xc')]);router[_0xc3ed('0x9')](_0xc3ed('0xd'),auth['isAuthenticated'](),controller[_0xc3ed('0xe')]);router[_0xc3ed('0x9')](_0xc3ed('0xf'),auth['isAuthenticated'](),controller['getMessages']);router['get'](_0xc3ed('0x10'),auth[_0xc3ed('0xa')](),controller[_0xc3ed('0x11')]);router[_0xc3ed('0x12')]('/',auth[_0xc3ed('0xa')](),controller[_0xc3ed('0x13')]);router[_0xc3ed('0x12')](_0xc3ed('0xf'),auth[_0xc3ed('0xa')](),controller[_0xc3ed('0x14')]);router['post'](_0xc3ed('0x15'),auth[_0xc3ed('0xa')](),interaction[_0xc3ed('0x16')](_0xc3ed('0x17'),'faxinteraction:addtags'),controller['addTags']);router['put']('/:id',auth[_0xc3ed('0xa')](),interaction[_0xc3ed('0x16')]('fax',_0xc3ed('0x18')),controller[_0xc3ed('0x19')]);router['delete']('/:id',auth[_0xc3ed('0xa')](),interaction[_0xc3ed('0x16')]('fax',_0xc3ed('0x1a')),controller[_0xc3ed('0x1b')]);router[_0xc3ed('0x1c')](_0xc3ed('0x15'),auth[_0xc3ed('0xa')](),controller['removeTags']);module[_0xc3ed('0x1d')]=router;
\ No newline at end of file
+var _0x1057=['/:id/tags','removeTags','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','getMessages','/:id/download','download','post','create','/:id/messages','tracked','fax','faxinteraction:update','update','delete','faxinteraction:destroy','destroy'];(function(_0x2060cd,_0x57897c){var _0x7d220c=function(_0xaaf4ee){while(--_0xaaf4ee){_0x2060cd['push'](_0x2060cd['shift']());}};_0x7d220c(++_0x57897c);}(_0x1057,0xc3));var _0x7105=function(_0x2f00c4,_0x335a10){_0x2f00c4=_0x2f00c4-0x0;var _0x35fea4=_0x1057[_0x2f00c4];return _0x35fea4;};'use strict';var multer=require(_0x7105('0x0'));var util=require(_0x7105('0x1'));var path=require(_0x7105('0x2'));var timeout=require(_0x7105('0x3'));var express=require(_0x7105('0x4'));var router=express['Router']();var fs_extra=require(_0x7105('0x5'));var auth=require(_0x7105('0x6'));var interaction=require(_0x7105('0x7'));var config=require(_0x7105('0x8'));var controller=require(_0x7105('0x9'));router[_0x7105('0xa')]('/',auth[_0x7105('0xb')](),controller[_0x7105('0xc')]);router[_0x7105('0xa')](_0x7105('0xd'),auth['isAuthenticated'](),controller[_0x7105('0xe')]);router['get'](_0x7105('0xf'),auth[_0x7105('0xb')](),controller['show']);router['get']('/:id/messages',auth[_0x7105('0xb')](),controller[_0x7105('0x10')]);router[_0x7105('0xa')](_0x7105('0x11'),auth[_0x7105('0xb')](),controller[_0x7105('0x12')]);router[_0x7105('0x13')]('/',auth['isAuthenticated'](),controller[_0x7105('0x14')]);router['post'](_0x7105('0x15'),auth['isAuthenticated'](),controller['addMessage']);router[_0x7105('0x13')]('/:id/tags',auth['isAuthenticated'](),interaction[_0x7105('0x16')]('fax','faxinteraction:addtags'),controller['addTags']);router['put']('/:id',auth[_0x7105('0xb')](),interaction[_0x7105('0x16')](_0x7105('0x17'),_0x7105('0x18')),controller[_0x7105('0x19')]);router[_0x7105('0x1a')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0x7105('0x17'),_0x7105('0x1b')),controller[_0x7105('0x1c')]);router[_0x7105('0x1a')](_0x7105('0x1d'),auth[_0x7105('0xb')](),controller[_0x7105('0x1e')]);module[_0x7105('0x1f')]=router;
\ No newline at end of file
index fe804c8..141741f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a3a=['exports','TEXT','medium','BOOLEAN','out','DATE','sequelize'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0x2a3a,0x1bf));var _0xa2a3=function(_0x96ad37,_0x2617aa){_0x96ad37=_0x96ad37-0x0;var _0x594059=_0x2a3a[_0x96ad37];return _0x594059;};'use strict';var Sequelize=require(_0xa2a3('0x0'));module[_0xa2a3('0x1')]={'body':{'type':Sequelize[_0xa2a3('0x2')](_0xa2a3('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xa2a3('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xa2a3('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xa2a3('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0xa2a3('0x6')]}};
\ No newline at end of file
+var _0x5577=['medium','ENUM','out','DATE','sequelize','TEXT'];(function(_0xdb9db5,_0x16cb80){var _0x35c68f=function(_0x26117c){while(--_0x26117c){_0xdb9db5['push'](_0xdb9db5['shift']());}};_0x35c68f(++_0x16cb80);}(_0x5577,0x1b4));var _0x7557=function(_0x1365ae,_0x25be8e){_0x1365ae=_0x1365ae-0x0;var _0x525a9e=_0x5577[_0x1365ae];return _0x525a9e;};'use strict';var Sequelize=require(_0x7557('0x0'));module['exports']={'body':{'type':Sequelize[_0x7557('0x1')](_0x7557('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x7557('0x3')]('in',_0x7557('0x4')),'defaultValue':_0x7557('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x7557('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0x7557('0x5')]}};
\ No newline at end of file
index c00d143..47a4c90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ae4=['filter','merge','VIRTUAL','options','includeAll','rows','show','params','keys','length','include','find','update','body','describe','fax-interactions','accept','fax','read','readAt','format','UserId','user','get','FaxInteractionId','isNil','YYYY-MM-DD\x20HH:mm:ss','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','agent','fullname','email','manual','interface','SIP/%s','channel','EventManager','acceptmessage','FaxInteraction','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','User','create','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','join','root','files','attachments','Attachment','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','client','request','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','status','offset','limit','count','set','apply','reject','save','then','destroy','end','sendStatus','stack','name','send','map','FaxMessage','rawAttributes','fieldName','type','model','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x9ae4,0xc9));var _0x49ae=function(_0x10585d,_0x5b1571){_0x10585d=_0x10585d-0x0;var _0x1c7708=_0x9ae4[_0x10585d];return _0x1c7708;};'use strict';var emlformat=require(_0x49ae('0x0'));var rimraf=require(_0x49ae('0x1'));var zipdir=require(_0x49ae('0x2'));var jsonpatch=require(_0x49ae('0x3'));var rp=require(_0x49ae('0x4'));var moment=require(_0x49ae('0x5'));var BPromise=require(_0x49ae('0x6'));var Mustache=require('mustache');var util=require(_0x49ae('0x7'));var path=require(_0x49ae('0x8'));var sox=require(_0x49ae('0x9'));var csv=require('to-csv');var ejs=require(_0x49ae('0xa'));var fs=require('fs');var fs_extra=require(_0x49ae('0xb'));var _=require('lodash');var squel=require(_0x49ae('0xc'));var crypto=require(_0x49ae('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x49ae('0xe'));var toCsv=require(_0x49ae('0xf'));var querystring=require(_0x49ae('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x49ae('0x11'));var qs=require(_0x49ae('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x49ae('0x13'))(_0x49ae('0x14'));var utils=require('../../config/utils');var config=require(_0x49ae('0x15'));var licenseUtil=require(_0x49ae('0x16'));var db=require(_0x49ae('0x17'))['db'];config['redis']=_[_0x49ae('0x18')](config[_0x49ae('0x19')],{'host':_0x49ae('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x49ae('0x19')]));require('./faxMessage.socket')['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x49ae('0x1b')]['http']({'port':0x232c});var client9002=jayson[_0x49ae('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x15c0b2,_0x4e1490,_0x32c84d,_0x2ccd8e){return new BPromise(function(_0x2d4902,_0x461461){var _0x2fddd9=_0x2ccd8e||client;return _0x2fddd9[_0x49ae('0x1c')](_0x15c0b2,_0x32c84d)['then'](function(_0x185a77){logger['info'](_0x49ae('0x1d'),_0x4e1490,_0x49ae('0x1e'));logger[_0x49ae('0x1f')](_0x49ae('0x20'),_0x4e1490,_0x49ae('0x1e'),JSON[_0x49ae('0x21')](_0x185a77));if(_0x185a77['error']){if(_0x185a77['error'][_0x49ae('0x22')]===0x1f4){logger[_0x49ae('0x23')](_0x49ae('0x1d'),_0x4e1490,_0x185a77['error']['message']);return _0x461461(_0x185a77[_0x49ae('0x23')]['message']);}logger[_0x49ae('0x23')](_0x49ae('0x1d'),_0x4e1490,_0x185a77[_0x49ae('0x23')][_0x49ae('0x24')]);return _0x2d4902(_0x185a77['error'][_0x49ae('0x24')]);}else{logger['info']('FaxMessage,\x20%s,\x20%s',_0x4e1490,_0x49ae('0x1e'));_0x2d4902(_0x185a77[_0x49ae('0x25')][_0x49ae('0x24')]);}})[_0x49ae('0x26')](function(_0x28419a){logger['error']('FaxMessage,\x20%s,\x20%s',_0x4e1490,_0x28419a);_0x461461(_0x28419a);});});}function respondWithStatusCode(_0x492f53,_0x566a6a){_0x566a6a=_0x566a6a||0xcc;return function(_0x4b8211){if(_0x4b8211){return _0x492f53['sendStatus'](_0x566a6a);}return _0x492f53[_0x49ae('0x27')](_0x566a6a)['end']();};}function respondWithResult(_0x59813f,_0x3a0241){_0x3a0241=_0x3a0241||0xc8;return function(_0x554298){if(_0x554298){return _0x59813f[_0x49ae('0x27')](_0x3a0241)['json'](_0x554298);}};}function respondWithFilteredResult(_0x46d55c,_0x86a772){return function(_0x415a62){if(_0x415a62){var _0x4dd062=typeof _0x86a772[_0x49ae('0x28')]==='undefined'&&typeof _0x86a772[_0x49ae('0x29')]==='undefined';var _0x3cff40=_0x415a62[_0x49ae('0x2a')];var _0x379f60=_0x4dd062?0x0:_0x86a772[_0x49ae('0x28')];var _0x89d3b9=_0x4dd062?_0x415a62[_0x49ae('0x2a')]:_0x86a772[_0x49ae('0x28')]+_0x86a772[_0x49ae('0x29')];var _0x1a6fdd;if(_0x89d3b9>=_0x3cff40){_0x89d3b9=_0x3cff40;_0x1a6fdd=0xc8;}else{_0x1a6fdd=0xce;}_0x46d55c[_0x49ae('0x27')](_0x1a6fdd);return _0x46d55c[_0x49ae('0x2b')]('Content-Range',_0x379f60+'-'+_0x89d3b9+'/'+_0x3cff40)['json'](_0x415a62);}return null;};}function patchUpdates(_0x523dd7){return function(_0x569dd7){try{jsonpatch[_0x49ae('0x2c')](_0x569dd7,_0x523dd7,!![]);}catch(_0x5e6dc5){return BPromise[_0x49ae('0x2d')](_0x5e6dc5);}return _0x569dd7[_0x49ae('0x2e')]();};}function saveUpdates(_0x2721e1,_0x2e60a3){return function(_0x128f0a){if(_0x128f0a){return _0x128f0a['update'](_0x2721e1)[_0x49ae('0x2f')](function(_0x2623af){return _0x2623af;});}return null;};}function removeEntity(_0x487f58,_0x5bc8bf){return function(_0x1fc8ac){if(_0x1fc8ac){return _0x1fc8ac[_0x49ae('0x30')]()[_0x49ae('0x2f')](function(){_0x487f58[_0x49ae('0x27')](0xcc)[_0x49ae('0x31')]();});}};}function handleEntityNotFound(_0x332821,_0x1461af){return function(_0x5bd4ea){if(!_0x5bd4ea){_0x332821[_0x49ae('0x32')](0x194);}return _0x5bd4ea;};}function handleError(_0x45bbfc,_0x45d580){_0x45d580=_0x45d580||0x1f4;return function(_0x9e13cf){logger[_0x49ae('0x23')](_0x9e13cf[_0x49ae('0x33')]);if(_0x9e13cf['name']){delete _0x9e13cf[_0x49ae('0x34')];}_0x45bbfc[_0x49ae('0x27')](_0x45d580)[_0x49ae('0x35')](_0x9e13cf);};}exports['index']=function(_0x535d0b,_0x2d1c58){var _0x32bbf6={},_0x8d43de={},_0x2a5c5f={'count':0x0,'rows':[]};var _0x531fcc=_[_0x49ae('0x36')](db[_0x49ae('0x37')][_0x49ae('0x38')],function(_0x4e6ca4){return{'name':_0x4e6ca4[_0x49ae('0x39')],'type':_0x4e6ca4[_0x49ae('0x3a')]['key']};});_0x8d43de[_0x49ae('0x3b')]=_['map'](_0x531fcc,_0x49ae('0x34'));_0x8d43de['query']=_['keys'](_0x535d0b[_0x49ae('0x3c')]);_0x8d43de['filters']=_['intersection'](_0x8d43de[_0x49ae('0x3b')],_0x8d43de[_0x49ae('0x3c')]);_0x32bbf6[_0x49ae('0x3d')]=_[_0x49ae('0x3e')](_0x8d43de['model'],qs[_0x49ae('0x3f')](_0x535d0b['query'][_0x49ae('0x3f')]));_0x32bbf6[_0x49ae('0x3d')]=_0x32bbf6[_0x49ae('0x3d')]['length']?_0x32bbf6[_0x49ae('0x3d')]:_0x8d43de['model'];if(!_0x535d0b[_0x49ae('0x3c')][_0x49ae('0x40')](_0x49ae('0x41'))){_0x32bbf6[_0x49ae('0x29')]=qs['limit'](_0x535d0b[_0x49ae('0x3c')]['limit']);_0x32bbf6[_0x49ae('0x28')]=qs['offset'](_0x535d0b['query'][_0x49ae('0x28')]);}_0x32bbf6[_0x49ae('0x42')]=qs[_0x49ae('0x43')](_0x535d0b['query']['sort']);_0x32bbf6[_0x49ae('0x44')]=qs[_0x49ae('0x45')](_[_0x49ae('0x46')](_0x535d0b[_0x49ae('0x3c')],_0x8d43de['filters']),_0x531fcc);if(_0x535d0b[_0x49ae('0x3c')][_0x49ae('0x47')]){_0x32bbf6['where']=_[_0x49ae('0x48')](_0x32bbf6['where'],{'$or':_[_0x49ae('0x36')](_0x531fcc,function(_0x4a0fe5){if(_0x4a0fe5[_0x49ae('0x3a')]!==_0x49ae('0x49')){var _0x1cb3c8={};_0x1cb3c8[_0x4a0fe5['name']]={'$like':'%'+_0x535d0b['query'][_0x49ae('0x47')]+'%'};return _0x1cb3c8;}})});}_0x32bbf6=_[_0x49ae('0x48')]({},_0x32bbf6,_0x535d0b[_0x49ae('0x4a')]);var _0x5bc0a7={'where':_0x32bbf6['where']};return db['FaxMessage'][_0x49ae('0x2a')](_0x5bc0a7)[_0x49ae('0x2f')](function(_0x4fd3ab){_0x2a5c5f[_0x49ae('0x2a')]=_0x4fd3ab;if(_0x535d0b[_0x49ae('0x3c')][_0x49ae('0x4b')]){_0x32bbf6['include']=[{'all':!![]}];}return db[_0x49ae('0x37')]['findAll'](_0x32bbf6);})['then'](function(_0x1d7f65){_0x2a5c5f[_0x49ae('0x4c')]=_0x1d7f65;return _0x2a5c5f;})[_0x49ae('0x2f')](respondWithFilteredResult(_0x2d1c58,_0x32bbf6))[_0x49ae('0x26')](handleError(_0x2d1c58,null));};exports[_0x49ae('0x4d')]=function(_0x8185fd,_0x563222){var _0x38eb5a={'raw':!![],'where':{'id':_0x8185fd[_0x49ae('0x4e')]['id']}},_0x4e2f53={};_0x4e2f53['model']=_[_0x49ae('0x4f')](db['FaxMessage'][_0x49ae('0x38')]);_0x4e2f53[_0x49ae('0x3c')]=_['keys'](_0x8185fd[_0x49ae('0x3c')]);_0x4e2f53[_0x49ae('0x45')]=_[_0x49ae('0x3e')](_0x4e2f53[_0x49ae('0x3b')],_0x4e2f53[_0x49ae('0x3c')]);_0x38eb5a[_0x49ae('0x3d')]=_[_0x49ae('0x3e')](_0x4e2f53[_0x49ae('0x3b')],qs['fields'](_0x8185fd[_0x49ae('0x3c')]['fields']));_0x38eb5a[_0x49ae('0x3d')]=_0x38eb5a[_0x49ae('0x3d')][_0x49ae('0x50')]?_0x38eb5a[_0x49ae('0x3d')]:_0x4e2f53[_0x49ae('0x3b')];if(_0x8185fd[_0x49ae('0x3c')]['includeAll']){_0x38eb5a[_0x49ae('0x51')]=[{'all':!![]}];}_0x38eb5a=_[_0x49ae('0x48')]({},_0x38eb5a,_0x8185fd['options']);return db[_0x49ae('0x37')][_0x49ae('0x52')](_0x38eb5a)[_0x49ae('0x2f')](handleEntityNotFound(_0x563222,null))[_0x49ae('0x2f')](respondWithResult(_0x563222,null))[_0x49ae('0x26')](handleError(_0x563222,null));};exports[_0x49ae('0x53')]=function(_0x54a351,_0x382126){if(_0x54a351[_0x49ae('0x54')]['id']){delete _0x54a351[_0x49ae('0x54')]['id'];}return db['FaxMessage']['find']({'where':{'id':_0x54a351[_0x49ae('0x4e')]['id']}})['then'](handleEntityNotFound(_0x382126,null))['then'](saveUpdates(_0x54a351[_0x49ae('0x54')],null))[_0x49ae('0x2f')](respondWithResult(_0x382126,null))[_0x49ae('0x26')](handleError(_0x382126,null));};exports['destroy']=function(_0x269bc7,_0x31b7ee){return db[_0x49ae('0x37')][_0x49ae('0x52')]({'where':{'id':_0x269bc7['params']['id']}})[_0x49ae('0x2f')](handleEntityNotFound(_0x31b7ee,null))[_0x49ae('0x2f')](removeEntity(_0x31b7ee,null))[_0x49ae('0x26')](handleError(_0x31b7ee,null));};exports[_0x49ae('0x55')]=function(_0x363657,_0x27b8d5){return db[_0x49ae('0x37')][_0x49ae('0x55')]()[_0x49ae('0x2f')](respondWithResult(_0x27b8d5,null))[_0x49ae('0x26')](handleError(_0x27b8d5,null));};var interaction_log=require('../../config/logger')(_0x49ae('0x56'));exports[_0x49ae('0x57')]=function(_0xea0f3f,_0x30e704,_0x3ceaca){var _0x18a589={'agent':{},'channel':_0x49ae('0x58')};if(_0xea0f3f[_0x49ae('0x54')]['id']){delete _0xea0f3f[_0x49ae('0x54')]['id'];}_0xea0f3f[_0x49ae('0x54')][_0x49ae('0x59')]=!![];_0xea0f3f[_0x49ae('0x54')][_0x49ae('0x5a')]=moment()[_0x49ae('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');_0xea0f3f['body'][_0x49ae('0x5c')]=_0xea0f3f[_0x49ae('0x54')][_0x49ae('0x5c')]||_0xea0f3f[_0x49ae('0x5d')]['id'];_0x18a589['agent']['id']=_0xea0f3f['body'][_0x49ae('0x5c')];return db[_0x49ae('0x37')][_0x49ae('0x52')]({'where':{'id':_0xea0f3f[_0x49ae('0x4e')]['id'],'UserId':null}})[_0x49ae('0x2f')](handleEntityNotFound(_0x30e704,null))['then'](saveUpdates(_0xea0f3f[_0x49ae('0x54')],null))['then'](function(_0x3d14b8){if(_0x3d14b8){_0x18a589[_0x49ae('0x24')]=_0x3d14b8[_0x49ae('0x5e')]({'plain':!![]});return db['FaxInteraction'][_0x49ae('0x52')]({'where':{'id':_0x3d14b8[_0x49ae('0x5f')]}});}return null;})['then'](handleEntityNotFound(_0x30e704,null))[_0x49ae('0x2f')](function(_0x4fc10c){if(_0x4fc10c){return _0x4fc10c[_0x49ae('0x53')]({'UserId':_0xea0f3f[_0x49ae('0x54')][_0x49ae('0x5c')],'read1stAt':_[_0x49ae('0x60')](_0x4fc10c['read1stAt'])?moment()[_0x49ae('0x5b')](_0x49ae('0x61')):undefined});}return null;})[_0x49ae('0x2f')](function(_0x3fdde1){if(_0x3fdde1){_0x18a589['interaction']=_0x3fdde1['get']({'plain':!![]});interaction_log['info'](_0x49ae('0x62'),_0xea0f3f[_0x49ae('0x5d')]['id'],_0xea0f3f['user'][_0x49ae('0x34')],_0xea0f3f[_0x49ae('0x5d')][_0x49ae('0x63')],_0x18a589[_0x49ae('0x64')]['id'],_0xea0f3f[_0x49ae('0x54')]?JSON[_0x49ae('0x21')](_0xea0f3f[_0x49ae('0x54')]):'null');return respondWithRpcPromise(_0x49ae('0x65'),'acceptMessage',_0x18a589);}return null;})[_0x49ae('0x2f')](function(_0x3b54e0){var _0x4c045a=_0x49ae('0x66')+_0x3b54e0[_0x49ae('0x24')][_0x49ae('0x67')];return db[_0x49ae('0x68')][_0x49ae('0x3c')](_0x4c045a,{'type':db[_0x49ae('0x69')][_0x49ae('0x6a')]['SELECT'],'raw':!![]})[_0x49ae('0x2f')](function(_0x42a590){return _0x42a590;});})[_0x49ae('0x2f')](function(_0x5ce3af){if(_0x5ce3af){_0x18a589['message'][_0x49ae('0x6b')]=_0x5ce3af[0x0];if(!_0xea0f3f[_0x49ae('0x54')]['UserId'])return;return db['User'][_0x49ae('0x52')]({'where':{'id':_0xea0f3f[_0x49ae('0x54')]['UserId'],'role':_0x49ae('0x6c')},'attributes':['id',_0x49ae('0x34'),_0x49ae('0x6d'),_0x49ae('0x6e'),'internal'],'raw':!![]});}return null;})[_0x49ae('0x2f')](function(_0x54c9be){if(!_0x54c9be)return null;_0x18a589[_0x49ae('0x24')][_0x49ae('0x6c')]=_0x54c9be;return _0x18a589;})[_0x49ae('0x2f')](function(_0x4d3314){if(_0x4d3314){if(_0xea0f3f['body'][_0x49ae('0x6f')]){_0x18a589[_0x49ae('0x24')][_0x49ae('0x70')]=util[_0x49ae('0x5b')](_0x49ae('0x71'),_0xea0f3f[_0x49ae('0x5d')]['name']);_0x18a589['message'][_0x49ae('0x72')]=_0x18a589[_0x49ae('0x72')];_0x18a589['message']['event']='accept';return respondWithRpcPromise(_0x49ae('0x73'),_0x49ae('0x73'),{'event':_0x49ae('0x74'),'message':_0x18a589[_0x49ae('0x24')]},client9002)[_0x49ae('0x2f')](function(){return _0x18a589;});}return _0x18a589;}return null;})[_0x49ae('0x2f')](respondWithResult(_0x30e704,null))[_0x49ae('0x26')](handleError(_0x30e704,null));};var interaction_log=require(_0x49ae('0x13'))('fax-interactions');exports['reject']=function(_0x538ae5,_0x2c11c4,_0x155658){var _0x5b6515={'agent':{},'channel':'fax'};if(_0x538ae5[_0x49ae('0x54')]['id']){delete _0x538ae5[_0x49ae('0x54')]['id'];}_0x538ae5['body']['UserId']=_0x538ae5['body'][_0x49ae('0x5c')]||_0x538ae5['user']['id'];_0x5b6515[_0x49ae('0x6c')]['id']=_0x538ae5['body'][_0x49ae('0x5c')];return db[_0x49ae('0x37')]['find']({'where':{'id':_0x538ae5[_0x49ae('0x4e')]['id'],'UserId':null}})[_0x49ae('0x2f')](handleEntityNotFound(_0x2c11c4,null))[_0x49ae('0x2f')](function(_0x162c20){if(_0x162c20){_0x5b6515[_0x49ae('0x24')]=_0x162c20[_0x49ae('0x5e')]({'plain':!![]});return db[_0x49ae('0x75')][_0x49ae('0x52')]({'where':{'id':_0x162c20[_0x49ae('0x5f')]}});}return null;})[_0x49ae('0x2f')](handleEntityNotFound(_0x2c11c4,null))[_0x49ae('0x2f')](function(_0x53263b){if(_0x53263b){_0x5b6515[_0x49ae('0x64')]=_0x53263b['get']({'plain':!![]});interaction_log['info'](_0x49ae('0x76'),_0x538ae5['user']['id'],_0x538ae5[_0x49ae('0x5d')][_0x49ae('0x34')],_0x538ae5[_0x49ae('0x5d')]['role'],_0x5b6515[_0x49ae('0x64')]['id'],_0x538ae5[_0x49ae('0x54')]?JSON[_0x49ae('0x21')](_0x538ae5[_0x49ae('0x54')]):_0x49ae('0x77'));return respondWithRpcPromise(_0x49ae('0x78'),_0x49ae('0x79'),_0x5b6515);}return null;})[_0x49ae('0x2f')](function(_0x3a179c){var _0x3a0fd4=_0x49ae('0x66')+_0x3a179c[_0x49ae('0x24')][_0x49ae('0x67')];return db['sequelize'][_0x49ae('0x3c')](_0x3a0fd4,{'type':db[_0x49ae('0x69')][_0x49ae('0x6a')]['SELECT'],'raw':!![]})[_0x49ae('0x2f')](function(_0x3e1116){return _0x3e1116;});})[_0x49ae('0x2f')](function(_0x275783){if(_0x275783){_0x5b6515[_0x49ae('0x24')][_0x49ae('0x6b')]=_0x275783[0x0];if(!_0x538ae5[_0x49ae('0x54')]['UserId'])return;return db[_0x49ae('0x7a')]['find']({'where':{'id':_0x538ae5[_0x49ae('0x54')][_0x49ae('0x5c')],'role':_0x49ae('0x6c')},'attributes':['id',_0x49ae('0x34'),_0x49ae('0x6d'),_0x49ae('0x6e'),'internal'],'raw':!![]});}return null;})['then'](function(_0x1e4c87){if(!_0x1e4c87)return null;_0x5b6515['message'][_0x49ae('0x6c')]=_0x1e4c87;return _0x5b6515;})[_0x49ae('0x2f')](function(_0x22e73e){if(_0x22e73e){_0x22e73e[_0x49ae('0x24')][_0x49ae('0x70')]=util[_0x49ae('0x5b')]('SIP/%s',_0x538ae5[_0x49ae('0x5d')][_0x49ae('0x34')]);_0x22e73e[_0x49ae('0x24')][_0x49ae('0x72')]=_0x5b6515[_0x49ae('0x72')];_0x22e73e[_0x49ae('0x24')]['event']='reject';respondWithRpcPromise('EventManager',_0x49ae('0x73'),{'event':'rejectmessage','message':_0x22e73e[_0x49ae('0x24')]},client9002);return _0x5b6515;}return null;})['then'](respondWithResult(_0x2c11c4,null))[_0x49ae('0x26')](handleError(_0x2c11c4,null));};exports[_0x49ae('0x7b')]=function(_0x1c8cae,_0x4aa1b0){var _0x1464d2;return db['FaxMessage'][_0x49ae('0x7b')](_0x1c8cae[_0x49ae('0x54')],{})[_0x49ae('0x2f')](function(_0x1d1e8a){_0x1464d2=_0x1d1e8a;return db['CmContact'][_0x49ae('0x7c')]({'where':{'id':_0x1464d2['ContactId']}});})[_0x49ae('0x2f')](function(_0x17879f){if(_[_0x49ae('0x60')](_0x17879f)){return;}else{_0x1464d2[_0x49ae('0x58')]=_0x17879f[_0x49ae('0x58')];return db['Attachment'][_0x49ae('0x7c')]({'where':{'id':_0x1464d2[_0x49ae('0x7d')]}});}})[_0x49ae('0x2f')](function(_0x1be596){return respondWithRpcPromise(_0x49ae('0x7e'),_0x49ae('0x7e'),{'FaxAccountId':_[_0x49ae('0x60')](_0x1c8cae['body'])?undefined:_0x1c8cae['body'][_0x49ae('0x7f')],'path':_[_0x49ae('0x60')](_0x1be596)?undefined:util['format'](_0x49ae('0x80'),_0x1be596[_0x49ae('0x81')]),'fax':_['isNil'](_0x1464d2['fax'])?undefined:_0x1464d2[_0x49ae('0x58')],'AttachmentId':_0x1464d2[_0x49ae('0x7d')]},client9002);})[_0x49ae('0x2f')](respondWithResult(_0x4aa1b0,0xc9))['catch'](handleError(_0x4aa1b0,null));};exports['download']=function(_0x4a1e83,_0x236b4c){var _0x32bf1b=path[_0x49ae('0x82')](config[_0x49ae('0x83')],'server',_0x49ae('0x84'),_0x49ae('0x85'));return db[_0x49ae('0x37')][_0x49ae('0x52')]({'where':{'id':_0x4a1e83['params']['id']},'include':[{'model':db['Attachment'],'as':_0x49ae('0x86')}]})[_0x49ae('0x2f')](handleEntityNotFound(_0x236b4c,null))[_0x49ae('0x2f')](function(_0x36ce84){if(_0x36ce84){return _0x236b4c[_0x49ae('0x87')](path[_0x49ae('0x82')](_0x32bf1b,_0x36ce84[_0x49ae('0x86')][_0x49ae('0x81')]));}})[_0x49ae('0x26')](handleError(_0x236b4c,null));};
\ No newline at end of file
+var _0xee09=['name','index','map','FaxMessage','rawAttributes','type','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','sort','pick','filters','filter','where','merge','VIRTUAL','include','findAll','rows','show','params','length','options','find','catch','body','describe','accept','fax','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','role','interaction','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','contact','User','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','../../config/logger','fax-interactions','FaxInteractionId','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','ContactId','SELECT','fullname','rejectmessage','create','CmContact','findOne','AttachmentId','SendFax','FaxAccountId','isNil','/var/opt/motion2/server/files/attachments/%s','basename','download','server','files','join','Attachment','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','client','http','request','debug','error','code','FaxMessage,\x20%s,\x20%s','message','info','request\x20sent','result','sendStatus','status','end','offset','limit','count','set','Content-Range','json','reject','save','update','then','destroy'];(function(_0x858000,_0x3f7a05){var _0x52fe2f=function(_0x38ecbe){while(--_0x38ecbe){_0x858000['push'](_0x858000['shift']());}};_0x52fe2f(++_0x3f7a05);}(_0xee09,0x15f));var _0x9ee0=function(_0x14d846,_0x4c7fe7){_0x14d846=_0x14d846-0x0;var _0x52362a=_0xee09[_0x14d846];return _0x52362a;};'use strict';var emlformat=require(_0x9ee0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9ee0('0x1'));var jsonpatch=require(_0x9ee0('0x2'));var rp=require(_0x9ee0('0x3'));var moment=require('moment');var BPromise=require(_0x9ee0('0x4'));var Mustache=require(_0x9ee0('0x5'));var util=require(_0x9ee0('0x6'));var path=require('path');var sox=require(_0x9ee0('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9ee0('0x8'));var _=require(_0x9ee0('0x9'));var squel=require(_0x9ee0('0xa'));var crypto=require('crypto');var jsforce=require(_0x9ee0('0xb'));var deskjs=require(_0x9ee0('0xc'));var toCsv=require(_0x9ee0('0xd'));var querystring=require(_0x9ee0('0xe'));var Papa=require('papaparse');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('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x9ee0('0xf'));var config=require(_0x9ee0('0x10'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x9ee0('0x11')]=_[_0x9ee0('0x12')](config[_0x9ee0('0x11')],{'host':_0x9ee0('0x13'),'port':0x18eb});var socket=require(_0x9ee0('0x14'))(new Redis(config['redis']));require(_0x9ee0('0x15'))[_0x9ee0('0x16')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9ee0('0x17')][_0x9ee0('0x18')]({'port':0x232c});var client9002=jayson[_0x9ee0('0x17')][_0x9ee0('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x2ea724,_0x12c101,_0x3e9a3b,_0x4780ef){return new BPromise(function(_0x4cc41c,_0x1e2c45){var _0x5d1fec=_0x4780ef||client;return _0x5d1fec[_0x9ee0('0x19')](_0x2ea724,_0x3e9a3b)['then'](function(_0x11d033){logger['info']('FaxMessage,\x20%s,\x20%s',_0x12c101,'request\x20sent');logger[_0x9ee0('0x1a')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x12c101,'request\x20sent',JSON['stringify'](_0x11d033));if(_0x11d033[_0x9ee0('0x1b')]){if(_0x11d033[_0x9ee0('0x1b')][_0x9ee0('0x1c')]===0x1f4){logger[_0x9ee0('0x1b')](_0x9ee0('0x1d'),_0x12c101,_0x11d033[_0x9ee0('0x1b')][_0x9ee0('0x1e')]);return _0x1e2c45(_0x11d033[_0x9ee0('0x1b')][_0x9ee0('0x1e')]);}logger['error'](_0x9ee0('0x1d'),_0x12c101,_0x11d033['error'][_0x9ee0('0x1e')]);return _0x4cc41c(_0x11d033[_0x9ee0('0x1b')]['message']);}else{logger[_0x9ee0('0x1f')](_0x9ee0('0x1d'),_0x12c101,_0x9ee0('0x20'));_0x4cc41c(_0x11d033[_0x9ee0('0x21')][_0x9ee0('0x1e')]);}})['catch'](function(_0x100fdf){logger['error'](_0x9ee0('0x1d'),_0x12c101,_0x100fdf);_0x1e2c45(_0x100fdf);});});}function respondWithStatusCode(_0x1a242d,_0x243265){_0x243265=_0x243265||0xcc;return function(_0x4d27e6){if(_0x4d27e6){return _0x1a242d[_0x9ee0('0x22')](_0x243265);}return _0x1a242d[_0x9ee0('0x23')](_0x243265)[_0x9ee0('0x24')]();};}function respondWithResult(_0x3b26ac,_0x2ed279){_0x2ed279=_0x2ed279||0xc8;return function(_0x3baa96){if(_0x3baa96){return _0x3b26ac[_0x9ee0('0x23')](_0x2ed279)['json'](_0x3baa96);}};}function respondWithFilteredResult(_0x54d25a,_0x6e0125){return function(_0x34a302){if(_0x34a302){var _0x1a86f9=typeof _0x6e0125[_0x9ee0('0x25')]==='undefined'&&typeof _0x6e0125[_0x9ee0('0x26')]==='undefined';var _0x488f7e=_0x34a302[_0x9ee0('0x27')];var _0x2cac0f=_0x1a86f9?0x0:_0x6e0125['offset'];var _0x233fe5=_0x1a86f9?_0x34a302[_0x9ee0('0x27')]:_0x6e0125[_0x9ee0('0x25')]+_0x6e0125[_0x9ee0('0x26')];var _0x55e8d2;if(_0x233fe5>=_0x488f7e){_0x233fe5=_0x488f7e;_0x55e8d2=0xc8;}else{_0x55e8d2=0xce;}_0x54d25a[_0x9ee0('0x23')](_0x55e8d2);return _0x54d25a[_0x9ee0('0x28')](_0x9ee0('0x29'),_0x2cac0f+'-'+_0x233fe5+'/'+_0x488f7e)[_0x9ee0('0x2a')](_0x34a302);}return null;};}function patchUpdates(_0x35dcf1){return function(_0x47e62a){try{jsonpatch['apply'](_0x47e62a,_0x35dcf1,!![]);}catch(_0x6d701a){return BPromise[_0x9ee0('0x2b')](_0x6d701a);}return _0x47e62a[_0x9ee0('0x2c')]();};}function saveUpdates(_0x3353af,_0x2dbbdb){return function(_0x3ccfef){if(_0x3ccfef){return _0x3ccfef[_0x9ee0('0x2d')](_0x3353af)[_0x9ee0('0x2e')](function(_0x38ff88){return _0x38ff88;});}return null;};}function removeEntity(_0x362c6e,_0xba5a8d){return function(_0x5e54a5){if(_0x5e54a5){return _0x5e54a5[_0x9ee0('0x2f')]()[_0x9ee0('0x2e')](function(){_0x362c6e[_0x9ee0('0x23')](0xcc)[_0x9ee0('0x24')]();});}};}function handleEntityNotFound(_0x482903,_0x140df2){return function(_0x56ca39){if(!_0x56ca39){_0x482903[_0x9ee0('0x22')](0x194);}return _0x56ca39;};}function handleError(_0x29b1cd,_0xbba4e9){_0xbba4e9=_0xbba4e9||0x1f4;return function(_0x37e172){logger['error'](_0x37e172['stack']);if(_0x37e172[_0x9ee0('0x30')]){delete _0x37e172['name'];}_0x29b1cd[_0x9ee0('0x23')](_0xbba4e9)['send'](_0x37e172);};}exports[_0x9ee0('0x31')]=function(_0x2039a9,_0x4b8a7f){var _0x397905={},_0x2d85b4={},_0x4c87fc={'count':0x0,'rows':[]};var _0x331730=_[_0x9ee0('0x32')](db[_0x9ee0('0x33')][_0x9ee0('0x34')],function(_0x2a33cb){return{'name':_0x2a33cb['fieldName'],'type':_0x2a33cb[_0x9ee0('0x35')]['key']};});_0x2d85b4[_0x9ee0('0x36')]=_['map'](_0x331730,'name');_0x2d85b4[_0x9ee0('0x37')]=_[_0x9ee0('0x38')](_0x2039a9[_0x9ee0('0x37')]);_0x2d85b4['filters']=_['intersection'](_0x2d85b4[_0x9ee0('0x36')],_0x2d85b4[_0x9ee0('0x37')]);_0x397905['attributes']=_[_0x9ee0('0x39')](_0x2d85b4[_0x9ee0('0x36')],qs['fields'](_0x2039a9['query'][_0x9ee0('0x3a')]));_0x397905['attributes']=_0x397905['attributes']['length']?_0x397905[_0x9ee0('0x3b')]:_0x2d85b4[_0x9ee0('0x36')];if(!_0x2039a9[_0x9ee0('0x37')][_0x9ee0('0x3c')](_0x9ee0('0x3d'))){_0x397905['limit']=qs[_0x9ee0('0x26')](_0x2039a9['query'][_0x9ee0('0x26')]);_0x397905[_0x9ee0('0x25')]=qs[_0x9ee0('0x25')](_0x2039a9[_0x9ee0('0x37')]['offset']);}_0x397905['order']=qs[_0x9ee0('0x3e')](_0x2039a9['query'][_0x9ee0('0x3e')]);_0x397905['where']=qs['filters'](_[_0x9ee0('0x3f')](_0x2039a9[_0x9ee0('0x37')],_0x2d85b4[_0x9ee0('0x40')]),_0x331730);if(_0x2039a9[_0x9ee0('0x37')][_0x9ee0('0x41')]){_0x397905[_0x9ee0('0x42')]=_[_0x9ee0('0x43')](_0x397905['where'],{'$or':_[_0x9ee0('0x32')](_0x331730,function(_0x1398de){if(_0x1398de['type']!==_0x9ee0('0x44')){var _0x4304ff={};_0x4304ff[_0x1398de['name']]={'$like':'%'+_0x2039a9[_0x9ee0('0x37')][_0x9ee0('0x41')]+'%'};return _0x4304ff;}})});}_0x397905=_[_0x9ee0('0x43')]({},_0x397905,_0x2039a9['options']);var _0x1bd6d8={'where':_0x397905['where']};return db[_0x9ee0('0x33')]['count'](_0x1bd6d8)['then'](function(_0x5bff76){_0x4c87fc['count']=_0x5bff76;if(_0x2039a9[_0x9ee0('0x37')]['includeAll']){_0x397905[_0x9ee0('0x45')]=[{'all':!![]}];}return db[_0x9ee0('0x33')][_0x9ee0('0x46')](_0x397905);})['then'](function(_0x5d2d5f){_0x4c87fc[_0x9ee0('0x47')]=_0x5d2d5f;return _0x4c87fc;})[_0x9ee0('0x2e')](respondWithFilteredResult(_0x4b8a7f,_0x397905))['catch'](handleError(_0x4b8a7f,null));};exports[_0x9ee0('0x48')]=function(_0x4e9c11,_0x109e08){var _0x26442e={'raw':!![],'where':{'id':_0x4e9c11[_0x9ee0('0x49')]['id']}},_0x4270a0={};_0x4270a0[_0x9ee0('0x36')]=_[_0x9ee0('0x38')](db[_0x9ee0('0x33')][_0x9ee0('0x34')]);_0x4270a0[_0x9ee0('0x37')]=_[_0x9ee0('0x38')](_0x4e9c11['query']);_0x4270a0['filters']=_[_0x9ee0('0x39')](_0x4270a0[_0x9ee0('0x36')],_0x4270a0['query']);_0x26442e[_0x9ee0('0x3b')]=_[_0x9ee0('0x39')](_0x4270a0[_0x9ee0('0x36')],qs[_0x9ee0('0x3a')](_0x4e9c11[_0x9ee0('0x37')]['fields']));_0x26442e[_0x9ee0('0x3b')]=_0x26442e[_0x9ee0('0x3b')][_0x9ee0('0x4a')]?_0x26442e[_0x9ee0('0x3b')]:_0x4270a0['model'];if(_0x4e9c11['query']['includeAll']){_0x26442e[_0x9ee0('0x45')]=[{'all':!![]}];}_0x26442e=_[_0x9ee0('0x43')]({},_0x26442e,_0x4e9c11[_0x9ee0('0x4b')]);return db[_0x9ee0('0x33')][_0x9ee0('0x4c')](_0x26442e)[_0x9ee0('0x2e')](handleEntityNotFound(_0x109e08,null))[_0x9ee0('0x2e')](respondWithResult(_0x109e08,null))[_0x9ee0('0x4d')](handleError(_0x109e08,null));};exports['update']=function(_0x4d3a0e,_0x4da159){if(_0x4d3a0e['body']['id']){delete _0x4d3a0e[_0x9ee0('0x4e')]['id'];}return db[_0x9ee0('0x33')]['find']({'where':{'id':_0x4d3a0e[_0x9ee0('0x49')]['id']}})[_0x9ee0('0x2e')](handleEntityNotFound(_0x4da159,null))['then'](saveUpdates(_0x4d3a0e[_0x9ee0('0x4e')],null))['then'](respondWithResult(_0x4da159,null))[_0x9ee0('0x4d')](handleError(_0x4da159,null));};exports[_0x9ee0('0x2f')]=function(_0x5865d5,_0x4b8568){return db[_0x9ee0('0x33')][_0x9ee0('0x4c')]({'where':{'id':_0x5865d5[_0x9ee0('0x49')]['id']}})['then'](handleEntityNotFound(_0x4b8568,null))['then'](removeEntity(_0x4b8568,null))[_0x9ee0('0x4d')](handleError(_0x4b8568,null));};exports['describe']=function(_0x2ea39a,_0x4ce8f2){return db['FaxMessage'][_0x9ee0('0x4f')]()[_0x9ee0('0x2e')](respondWithResult(_0x4ce8f2,null))[_0x9ee0('0x4d')](handleError(_0x4ce8f2,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0x9ee0('0x50')]=function(_0x2e5574,_0x4acec6,_0x45ffc0){var _0x399a81={'agent':{},'channel':_0x9ee0('0x51')};if(_0x2e5574[_0x9ee0('0x4e')]['id']){delete _0x2e5574[_0x9ee0('0x4e')]['id'];}_0x2e5574[_0x9ee0('0x4e')][_0x9ee0('0x52')]=!![];_0x2e5574['body']['readAt']=moment()[_0x9ee0('0x53')](_0x9ee0('0x54'));_0x2e5574[_0x9ee0('0x4e')]['UserId']=_0x2e5574[_0x9ee0('0x4e')][_0x9ee0('0x55')]||_0x2e5574[_0x9ee0('0x56')]['id'];_0x399a81[_0x9ee0('0x57')]['id']=_0x2e5574[_0x9ee0('0x4e')]['UserId'];return db[_0x9ee0('0x33')]['find']({'where':{'id':_0x2e5574[_0x9ee0('0x49')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4acec6,null))['then'](saveUpdates(_0x2e5574['body'],null))[_0x9ee0('0x2e')](function(_0x50021f){if(_0x50021f){_0x399a81[_0x9ee0('0x1e')]=_0x50021f[_0x9ee0('0x58')]({'plain':!![]});return db[_0x9ee0('0x59')]['find']({'where':{'id':_0x50021f['FaxInteractionId']}});}return null;})[_0x9ee0('0x2e')](handleEntityNotFound(_0x4acec6,null))['then'](function(_0x46209e){if(_0x46209e){return _0x46209e[_0x9ee0('0x2d')]({'UserId':_0x2e5574['body'][_0x9ee0('0x55')],'read1stAt':_['isNil'](_0x46209e['read1stAt'])?moment()['format'](_0x9ee0('0x54')):undefined});}return null;})[_0x9ee0('0x2e')](function(_0x154a5d){if(_0x154a5d){_0x399a81['interaction']=_0x154a5d[_0x9ee0('0x58')]({'plain':!![]});interaction_log['info']('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2e5574['user']['id'],_0x2e5574[_0x9ee0('0x56')][_0x9ee0('0x30')],_0x2e5574[_0x9ee0('0x56')][_0x9ee0('0x5a')],_0x399a81[_0x9ee0('0x5b')]['id'],_0x2e5574[_0x9ee0('0x4e')]?JSON[_0x9ee0('0x5c')](_0x2e5574[_0x9ee0('0x4e')]):_0x9ee0('0x5d'));return respondWithRpcPromise(_0x9ee0('0x5e'),_0x9ee0('0x5f'),_0x399a81);}return null;})[_0x9ee0('0x2e')](function(_0x59bf68){var _0x52004f=_0x9ee0('0x60')+_0x59bf68[_0x9ee0('0x1e')]['ContactId'];return db[_0x9ee0('0x61')][_0x9ee0('0x37')](_0x52004f,{'type':db[_0x9ee0('0x62')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x4d4b2b){return _0x4d4b2b;});})[_0x9ee0('0x2e')](function(_0x5a7c1e){if(_0x5a7c1e){_0x399a81['message'][_0x9ee0('0x63')]=_0x5a7c1e[0x0];if(!_0x2e5574[_0x9ee0('0x4e')][_0x9ee0('0x55')])return;return db[_0x9ee0('0x64')]['find']({'where':{'id':_0x2e5574[_0x9ee0('0x4e')][_0x9ee0('0x55')],'role':'agent'},'attributes':['id',_0x9ee0('0x30'),'fullname',_0x9ee0('0x65'),_0x9ee0('0x66')],'raw':!![]});}return null;})[_0x9ee0('0x2e')](function(_0x293689){if(!_0x293689)return null;_0x399a81[_0x9ee0('0x1e')][_0x9ee0('0x57')]=_0x293689;return _0x399a81;})[_0x9ee0('0x2e')](function(_0x3cb87b){if(_0x3cb87b){if(_0x2e5574[_0x9ee0('0x4e')][_0x9ee0('0x67')]){_0x399a81[_0x9ee0('0x1e')][_0x9ee0('0x68')]=util[_0x9ee0('0x53')](_0x9ee0('0x69'),_0x2e5574[_0x9ee0('0x56')]['name']);_0x399a81[_0x9ee0('0x1e')][_0x9ee0('0x6a')]=_0x399a81[_0x9ee0('0x6a')];_0x399a81[_0x9ee0('0x1e')][_0x9ee0('0x6b')]=_0x399a81[_0x9ee0('0x6a')];_0x399a81[_0x9ee0('0x1e')][_0x9ee0('0x6c')]=_0x9ee0('0x50');return respondWithRpcPromise(_0x9ee0('0x6d'),_0x9ee0('0x6d'),{'event':'acceptmessage','message':_0x399a81['message']},client9002)['then'](function(){return _0x399a81;});}return _0x399a81;}return null;})[_0x9ee0('0x2e')](respondWithResult(_0x4acec6,null))[_0x9ee0('0x4d')](handleError(_0x4acec6,null));};var interaction_log=require(_0x9ee0('0x6e'))(_0x9ee0('0x6f'));exports[_0x9ee0('0x2b')]=function(_0x2240f2,_0xb14bd6,_0x77e547){var _0x18455d={'agent':{},'channel':'fax'};if(_0x2240f2['body']['id']){delete _0x2240f2[_0x9ee0('0x4e')]['id'];}_0x2240f2['body'][_0x9ee0('0x55')]=_0x2240f2[_0x9ee0('0x4e')][_0x9ee0('0x55')]||_0x2240f2[_0x9ee0('0x56')]['id'];_0x18455d[_0x9ee0('0x57')]['id']=_0x2240f2[_0x9ee0('0x4e')][_0x9ee0('0x55')];return db[_0x9ee0('0x33')][_0x9ee0('0x4c')]({'where':{'id':_0x2240f2[_0x9ee0('0x49')]['id'],'UserId':null}})[_0x9ee0('0x2e')](handleEntityNotFound(_0xb14bd6,null))[_0x9ee0('0x2e')](function(_0xd1bbb){if(_0xd1bbb){_0x18455d[_0x9ee0('0x1e')]=_0xd1bbb[_0x9ee0('0x58')]({'plain':!![]});return db[_0x9ee0('0x59')][_0x9ee0('0x4c')]({'where':{'id':_0xd1bbb[_0x9ee0('0x70')]}});}return null;})[_0x9ee0('0x2e')](handleEntityNotFound(_0xb14bd6,null))[_0x9ee0('0x2e')](function(_0x3ea4be){if(_0x3ea4be){_0x18455d[_0x9ee0('0x5b')]=_0x3ea4be['get']({'plain':!![]});interaction_log[_0x9ee0('0x1f')](_0x9ee0('0x71'),_0x2240f2['user']['id'],_0x2240f2['user'][_0x9ee0('0x30')],_0x2240f2[_0x9ee0('0x56')][_0x9ee0('0x5a')],_0x18455d['interaction']['id'],_0x2240f2[_0x9ee0('0x4e')]?JSON[_0x9ee0('0x5c')](_0x2240f2[_0x9ee0('0x4e')]):_0x9ee0('0x5d'));return respondWithRpcPromise('RejectMessage',_0x9ee0('0x72'),_0x18455d);}return null;})[_0x9ee0('0x2e')](function(_0x2b9f46){var _0x533ef4=_0x9ee0('0x60')+_0x2b9f46[_0x9ee0('0x1e')][_0x9ee0('0x73')];return db[_0x9ee0('0x61')]['query'](_0x533ef4,{'type':db[_0x9ee0('0x62')]['QueryTypes'][_0x9ee0('0x74')],'raw':!![]})['then'](function(_0x3689b1){return _0x3689b1;});})[_0x9ee0('0x2e')](function(_0x310533){if(_0x310533){_0x18455d[_0x9ee0('0x1e')]['contact']=_0x310533[0x0];if(!_0x2240f2[_0x9ee0('0x4e')][_0x9ee0('0x55')])return;return db[_0x9ee0('0x64')][_0x9ee0('0x4c')]({'where':{'id':_0x2240f2[_0x9ee0('0x4e')][_0x9ee0('0x55')],'role':'agent'},'attributes':['id','name',_0x9ee0('0x75'),_0x9ee0('0x65'),_0x9ee0('0x66')],'raw':!![]});}return null;})['then'](function(_0x3f3c26){if(!_0x3f3c26)return null;_0x18455d['message']['agent']=_0x3f3c26;return _0x18455d;})['then'](function(_0x1cba99){if(_0x1cba99){_0x1cba99['message']['interface']=util[_0x9ee0('0x53')](_0x9ee0('0x69'),_0x2240f2[_0x9ee0('0x56')][_0x9ee0('0x30')]);_0x1cba99['message'][_0x9ee0('0x6a')]=_0x18455d[_0x9ee0('0x6a')];_0x1cba99[_0x9ee0('0x1e')]['motionChannel']=_0x18455d['channel'];_0x1cba99[_0x9ee0('0x1e')][_0x9ee0('0x6c')]=_0x9ee0('0x2b');respondWithRpcPromise('EventManager',_0x9ee0('0x6d'),{'event':_0x9ee0('0x76'),'message':_0x1cba99['message']},client9002);return _0x18455d;}return null;})[_0x9ee0('0x2e')](respondWithResult(_0xb14bd6,null))[_0x9ee0('0x4d')](handleError(_0xb14bd6,null));};exports[_0x9ee0('0x77')]=function(_0x39b6f0,_0xd364){var _0x34f850;return db[_0x9ee0('0x33')]['create'](_0x39b6f0[_0x9ee0('0x4e')],{})[_0x9ee0('0x2e')](function(_0x4012f8){_0x34f850=_0x4012f8;return db[_0x9ee0('0x78')]['findOne']({'where':{'id':_0x34f850[_0x9ee0('0x73')]}});})['then'](function(_0x2ab100){if(_['isNil'](_0x2ab100)){return;}else{_0x34f850[_0x9ee0('0x51')]=_0x2ab100[_0x9ee0('0x51')];return db['Attachment'][_0x9ee0('0x79')]({'where':{'id':_0x34f850[_0x9ee0('0x7a')]}});}})[_0x9ee0('0x2e')](function(_0x3e90f7){return respondWithRpcPromise(_0x9ee0('0x7b'),_0x9ee0('0x7b'),{'FaxAccountId':_['isNil'](_0x39b6f0['body'])?undefined:_0x39b6f0['body'][_0x9ee0('0x7c')],'path':_[_0x9ee0('0x7d')](_0x3e90f7)?undefined:util[_0x9ee0('0x53')](_0x9ee0('0x7e'),_0x3e90f7[_0x9ee0('0x7f')]),'fax':_[_0x9ee0('0x7d')](_0x34f850[_0x9ee0('0x51')])?undefined:_0x34f850[_0x9ee0('0x51')],'AttachmentId':_0x34f850['AttachmentId']},client9002);})[_0x9ee0('0x2e')](respondWithResult(_0xd364,0xc9))[_0x9ee0('0x4d')](handleError(_0xd364,null));};exports[_0x9ee0('0x80')]=function(_0x3b5533,_0x5ab233){var _0x32d3a8=path['join'](config['root'],_0x9ee0('0x81'),_0x9ee0('0x82'),'attachments');return db['FaxMessage'][_0x9ee0('0x4c')]({'where':{'id':_0x3b5533['params']['id']},'include':[{'model':db['Attachment'],'as':'Attachment'}]})[_0x9ee0('0x2e')](handleEntityNotFound(_0x5ab233,null))['then'](function(_0x290f40){if(_0x290f40){return _0x5ab233[_0x9ee0('0x80')](path[_0x9ee0('0x83')](_0x32d3a8,_0x290f40[_0x9ee0('0x84')][_0x9ee0('0x7f')]));}})[_0x9ee0('0x4d')](handleError(_0x5ab233,null));};
\ No newline at end of file
index 11c506f..1f0c941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7c3=['remove','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners','save','update'];(function(_0x2db63a,_0x52ee8e){var _0x556b91=function(_0x4ad3aa){while(--_0x4ad3aa){_0x2db63a['push'](_0x2db63a['shift']());}};_0x556b91(++_0x52ee8e);}(_0xd7c3,0x1c5));var _0x3d7c=function(_0x404da7,_0x5216db){_0x404da7=_0x404da7-0x0;var _0x14aced=_0xd7c3[_0x404da7];return _0x14aced;};'use strict';var EventEmitter=require(_0x3d7c('0x0'));var FaxMessage=require(_0x3d7c('0x1'))['db'][_0x3d7c('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x3d7c('0x3')](0x0);var events={'afterCreate':_0x3d7c('0x4'),'afterUpdate':_0x3d7c('0x5'),'afterDestroy':_0x3d7c('0x6')};function emitEvent(_0x17c96a){return function(_0x22396c,_0x538ca7,_0x2da8b6){FaxMessageEvents['emit'](_0x17c96a+':'+_0x22396c['id'],_0x22396c);FaxMessageEvents['emit'](_0x17c96a,_0x22396c);_0x2da8b6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage[_0x3d7c('0x7')](e,emitEvent(event));}}module[_0x3d7c('0x8')]=FaxMessageEvents;
\ No newline at end of file
+var _0x002d=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','update','remove'];(function(_0x5e5c2d,_0x198c14){var _0xdfa878=function(_0x58bed9){while(--_0x58bed9){_0x5e5c2d['push'](_0x5e5c2d['shift']());}};_0xdfa878(++_0x198c14);}(_0x002d,0xca));var _0xd002=function(_0x14243f,_0xce6af0){_0x14243f=_0x14243f-0x0;var _0x7e770c=_0x002d[_0x14243f];return _0x7e770c;};'use strict';var EventEmitter=require(_0xd002('0x0'));var FaxMessage=require(_0xd002('0x1'))['db'][_0xd002('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xd002('0x3'),'afterDestroy':_0xd002('0x4')};function emitEvent(_0x1c0d0a){return function(_0x24ff42,_0x1323f0,_0x179915){FaxMessageEvents[_0xd002('0x5')](_0x1c0d0a+':'+_0x24ff42['id'],_0x24ff42);FaxMessageEvents[_0xd002('0x5')](_0x1c0d0a,_0x24ff42);_0x179915(null);};}for(var e in events){if(events[_0xd002('0x6')](e)){var event=events[e];FaxMessage[_0xd002('0x7')](e,emitEvent(event));}}module[_0xd002('0x8')]=FaxMessageEvents;
\ No newline at end of file
index 9a7d729..0ee370f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f9f=['utf8mb4_unicode_ci','lodash','util','bluebird','request-promise','path','../../config/environment','./faxMessage.attributes','define','FaxMessage','fti_fax_messages','body','models','get','toLowerCase','isNil','UserId','FaxInteractionId','then','update','createdAt','direction','error','utf8mb4'];(function(_0x63aa4,_0x70d23f){var _0x316ad4=function(_0x4f1e54){while(--_0x4f1e54){_0x63aa4['push'](_0x63aa4['shift']());}};_0x316ad4(++_0x70d23f);}(_0x5f9f,0xc1));var _0xf5f9=function(_0x257642,_0x270a80){_0x257642=_0x257642-0x0;var _0x3d813b=_0x5f9f[_0x257642];return _0x3d813b;};'use strict';var _=require(_0xf5f9('0x0'));var util=require(_0xf5f9('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xf5f9('0x2'));var rp=require(_0xf5f9('0x3'));var fs=require('fs');var path=require(_0xf5f9('0x4'));var rimraf=require('rimraf');var config=require(_0xf5f9('0x5'));var attributes=require(_0xf5f9('0x6'));module['exports']=function(_0x437db0,_0x5e8ccc){return _0x437db0[_0xf5f9('0x7')](_0xf5f9('0x8'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':_0xf5f9('0x9'),'fields':[_0xf5f9('0xa')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x43ebd9,_0x4c8549,_0x4ee23c){var _0x409217=_0x437db0[_0xf5f9('0xb')];var _0x2fc6b2=_0x43ebd9[_0xf5f9('0xc')]({'plain':!![]});if(_0x2fc6b2['direction']['toLowerCase']()==='in'||_0x2fc6b2['direction'][_0xf5f9('0xd')]()==='out'&&!_0x2fc6b2['secret']&&!_[_0xf5f9('0xe')](_0x2fc6b2[_0xf5f9('0xf')])){_0x409217['FaxInteraction']['findOne']({'where':{'id':_0x2fc6b2[_0xf5f9('0x10')]}})[_0xf5f9('0x11')](function(_0x549db3){if(_0x549db3){_0x549db3[_0xf5f9('0x12')]({'lastMsgAt':_0x2fc6b2[_0xf5f9('0x13')],'lastMsgDirection':_0x2fc6b2[_0xf5f9('0x14')][_0xf5f9('0xd')]()});}})['catch'](function(_0x165737){console[_0xf5f9('0x15')](_0x165737);});}_0x4ee23c();}},'charset':_0xf5f9('0x16'),'collate':_0xf5f9('0x17')});};
\ No newline at end of file
+var _0xbb15=['./faxMessage.attributes','exports','define','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','get','toLowerCase','direction','out','secret','UserId','FaxInteraction','findOne','FaxInteractionId','update','createdAt','catch','utf8mb4_unicode_ci','../../config/logger','api','moment','request-promise','rimraf'];(function(_0x177dc7,_0x13501c){var _0x19b7dc=function(_0x1b1437){while(--_0x1b1437){_0x177dc7['push'](_0x177dc7['shift']());}};_0x19b7dc(++_0x13501c);}(_0xbb15,0x167));var _0x5bb1=function(_0x1c2e4a,_0x1c931a){_0x1c2e4a=_0x1c2e4a-0x0;var _0x2a1d52=_0xbb15[_0x1c2e4a];return _0x2a1d52;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5bb1('0x0'))(_0x5bb1('0x1'));var moment=require(_0x5bb1('0x2'));var BPromise=require('bluebird');var rp=require(_0x5bb1('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5bb1('0x4'));var config=require('../../config/environment');var attributes=require(_0x5bb1('0x5'));module[_0x5bb1('0x6')]=function(_0x11a213,_0x530874){return _0x11a213[_0x5bb1('0x7')](_0x5bb1('0x8'),attributes,{'tableName':_0x5bb1('0x9'),'paranoid':![],'indexes':[{'name':_0x5bb1('0xa'),'fields':[_0x5bb1('0xb')],'type':_0x5bb1('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x586cf1,_0x1f6256,_0x38fa3b){var _0x1af70e=_0x11a213['models'];var _0x48e3ba=_0x586cf1[_0x5bb1('0xd')]({'plain':!![]});if(_0x48e3ba['direction'][_0x5bb1('0xe')]()==='in'||_0x48e3ba[_0x5bb1('0xf')][_0x5bb1('0xe')]()===_0x5bb1('0x10')&&!_0x48e3ba[_0x5bb1('0x11')]&&!_['isNil'](_0x48e3ba[_0x5bb1('0x12')])){_0x1af70e[_0x5bb1('0x13')][_0x5bb1('0x14')]({'where':{'id':_0x48e3ba[_0x5bb1('0x15')]}})['then'](function(_0x4c6a00){if(_0x4c6a00){_0x4c6a00[_0x5bb1('0x16')]({'lastMsgAt':_0x48e3ba[_0x5bb1('0x17')],'lastMsgDirection':_0x48e3ba['direction'][_0x5bb1('0xe')]()});}})[_0x5bb1('0x18')](function(_0x2bff31){console['error'](_0x2bff31);});}_0x38fa3b();}},'charset':'utf8mb4','collate':_0x5bb1('0x19')});};
\ No newline at end of file
index 6893ca0..7049aed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0e=['http','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateFaxMessage','FaxMessage','create','body','options','raw','debug','UpdateFaxMessage','update','where','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x2f6167,_0x194b1b){var _0x51ed92=function(_0x43eb08){while(--_0x43eb08){_0x2f6167['push'](_0x2f6167['shift']());}};_0x51ed92(++_0x194b1b);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x2ece02,_0x339c51){_0x2ece02=_0x2ece02-0x0;var _0x4c2a3c=_0x8d0e[_0x2ece02];return _0x4c2a3c;};'use strict';var _=require(_0xe8d0('0x0'));var util=require(_0xe8d0('0x1'));var moment=require(_0xe8d0('0x2'));var BPromise=require(_0xe8d0('0x3'));var rs=require(_0xe8d0('0x4'));var fs=require('fs');var Redis=require(_0xe8d0('0x5'));var db=require(_0xe8d0('0x6'))['db'];var utils=require(_0xe8d0('0x7'));var logger=require(_0xe8d0('0x8'))('rpc');var config=require(_0xe8d0('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe8d0('0xa')]({'port':0x232a});config[_0xe8d0('0xb')]=_[_0xe8d0('0xc')](config[_0xe8d0('0xb')],{'host':_0xe8d0('0xd'),'port':0x18eb});var socket=require(_0xe8d0('0xe'))(new Redis(config[_0xe8d0('0xb')]));require(_0xe8d0('0xf'))['register'](socket);function respondWithRpcPromise(_0x10e56c,_0x19c3d0,_0x463159){return new BPromise(function(_0x599bc3,_0x580aab){return client[_0xe8d0('0x10')](_0x10e56c,_0x463159)[_0xe8d0('0x11')](function(_0x3da047){logger[_0xe8d0('0x12')](_0xe8d0('0x13'),_0x19c3d0,_0xe8d0('0x14'));logger['debug'](_0xe8d0('0x15'),_0x19c3d0,_0xe8d0('0x14'),JSON['stringify'](_0x3da047));if(_0x3da047[_0xe8d0('0x16')]){if(_0x3da047['error']['code']===0x1f4){logger[_0xe8d0('0x16')](_0xe8d0('0x13'),_0x19c3d0,_0x3da047[_0xe8d0('0x16')][_0xe8d0('0x17')]);return _0x580aab(_0x3da047[_0xe8d0('0x16')][_0xe8d0('0x17')]);}logger['error'](_0xe8d0('0x13'),_0x19c3d0,_0x3da047['error'][_0xe8d0('0x17')]);return _0x599bc3(_0x3da047[_0xe8d0('0x16')][_0xe8d0('0x17')]);}else{logger['info']('FaxMessage,\x20%s,\x20%s',_0x19c3d0,'request\x20sent');_0x599bc3(_0x3da047[_0xe8d0('0x18')][_0xe8d0('0x17')]);}})[_0xe8d0('0x19')](function(_0x44bbe4){logger[_0xe8d0('0x16')]('FaxMessage,\x20%s,\x20%s',_0x19c3d0,_0x44bbe4);_0x580aab(_0x44bbe4);});});}exports[_0xe8d0('0x1a')]=function(_0x12ebf4){var _0x524b00=this;return new Promise(function(_0x5ce284,_0x554402){return db[_0xe8d0('0x1b')][_0xe8d0('0x1c')](_0x12ebf4[_0xe8d0('0x1d')],{'raw':_0x12ebf4[_0xe8d0('0x1e')]?_0x12ebf4[_0xe8d0('0x1e')][_0xe8d0('0x1f')]===undefined?!![]:![]:!![]})[_0xe8d0('0x11')](function(_0x28a6b5){logger[_0xe8d0('0x12')]('CreateFaxMessage',_0x12ebf4);logger[_0xe8d0('0x20')](_0xe8d0('0x1a'),_0x12ebf4,JSON['stringify'](_0x28a6b5));_0x5ce284(_0x28a6b5);})[_0xe8d0('0x19')](function(_0x2e69d1){logger[_0xe8d0('0x16')](_0xe8d0('0x1a'),_0x2e69d1[_0xe8d0('0x17')],_0x12ebf4);_0x554402(_0x524b00[_0xe8d0('0x16')](0x1f4,_0x2e69d1[_0xe8d0('0x17')]));});});};exports[_0xe8d0('0x21')]=function(_0xfa3527){var _0x2dee67=this;return new Promise(function(_0x264de4,_0x539548){return db[_0xe8d0('0x1b')][_0xe8d0('0x22')](_0xfa3527[_0xe8d0('0x1d')],{'raw':_0xfa3527['options']?_0xfa3527[_0xe8d0('0x1e')][_0xe8d0('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xfa3527['options']?_0xfa3527[_0xe8d0('0x1e')][_0xe8d0('0x23')]||null:null,'attributes':_0xfa3527[_0xe8d0('0x1e')]?_0xfa3527[_0xe8d0('0x1e')][_0xe8d0('0x24')]||null:null,'limit':_0xfa3527['options']?_0xfa3527[_0xe8d0('0x1e')]['limit']||null:null})['then'](function(_0x50ad3c){logger[_0xe8d0('0x12')](_0xe8d0('0x21'),_0xfa3527);logger[_0xe8d0('0x20')]('UpdateFaxMessage',_0xfa3527,JSON['stringify'](_0x50ad3c));_0x264de4(_0x50ad3c);})[_0xe8d0('0x19')](function(_0x551999){logger[_0xe8d0('0x16')](_0xe8d0('0x21'),_0x551999[_0xe8d0('0x17')],_0xfa3527);_0x539548(_0x2dee67[_0xe8d0('0x16')](0x1f4,_0x551999[_0xe8d0('0x17')]));});});};
\ No newline at end of file
+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(_0x8a646d,_0x32a846){var _0x4c0941=function(_0x3bbdf7){while(--_0x3bbdf7){_0x8a646d['push'](_0x8a646d['shift']());}};_0x4c0941(++_0x32a846);}(_0x0a9a,0x183));var _0xa0a9=function(_0x15fe0a,_0x40e508){_0x15fe0a=_0x15fe0a-0x0;var _0x2ca4ad=_0x0a9a[_0x15fe0a];return _0x2ca4ad;};'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 2779299..f4a62ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc5c=['update','emit','removeListener','register'];(function(_0x71552e,_0xe5ae5b){var _0x4784ac=function(_0x12c67e){while(--_0x12c67e){_0x71552e['push'](_0x71552e['shift']());}};_0x4784ac(++_0xe5ae5b);}(_0xdc5c,0x1a8));var _0xcdc5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdc5c[_0x3dd15e];return _0x231fd0;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=['save','remove',_0xcdc5('0x0')];function createListener(_0x4d3753,_0x438c8e){return function(_0x586332){_0x438c8e[_0xcdc5('0x1')](_0x4d3753,_0x586332);};}function removeListener(_0x40bd4f,_0x41fc55){return function(){FaxMessageEvents[_0xcdc5('0x2')](_0x40bd4f,_0x41fc55);};}exports[_0xcdc5('0x3')]=function(_0x4f248d){for(var _0x38949=0x0,_0x18d1ff=events['length'];_0x38949<_0x18d1ff;_0x38949++){var _0x5aa720=events[_0x38949];var _0xe3f0a6=createListener('faxMessage:'+_0x5aa720,_0x4f248d);FaxMessageEvents['on'](_0x5aa720,_0xe3f0a6);}};
\ No newline at end of file
+var _0xd3e1=['removeListener','register','length','faxMessage:','./faxMessage.events','remove','emit'];(function(_0x16efcd,_0x52bc16){var _0x298b68=function(_0x550c8c){while(--_0x550c8c){_0x16efcd['push'](_0x16efcd['shift']());}};_0x298b68(++_0x52bc16);}(_0xd3e1,0x14d));var _0x1d3e=function(_0x5bb8be,_0x5658cc){_0x5bb8be=_0x5bb8be-0x0;var _0x18ba98=_0xd3e1[_0x5bb8be];return _0x18ba98;};'use strict';var FaxMessageEvents=require(_0x1d3e('0x0'));var events=['save',_0x1d3e('0x1'),'update'];function createListener(_0x346905,_0x3a6bf9){return function(_0x2eb578){_0x3a6bf9[_0x1d3e('0x2')](_0x346905,_0x2eb578);};}function removeListener(_0x3d5f76,_0xa435ae){return function(){FaxMessageEvents[_0x1d3e('0x3')](_0x3d5f76,_0xa435ae);};}exports[_0x1d3e('0x4')]=function(_0x456af9){for(var _0x5e5d8c=0x0,_0x4cc852=events[_0x1d3e('0x5')];_0x5e5d8c<_0x4cc852;_0x5e5d8c++){var _0x3ae621=events[_0x5e5d8c];var _0x160e36=createListener(_0x1d3e('0x6')+_0x3ae621,_0x456af9);FaxMessageEvents['on'](_0x3ae621,_0x160e36);}};
\ No newline at end of file
index bd1d6e6..9ae8fc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a7=['faxmessage:create','create','put','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','util','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','/:id','/:id/download','post','tracked'];(function(_0xbc68d3,_0x2896da){var _0xe9ac26=function(_0x30b87c){while(--_0x30b87c){_0xbc68d3['push'](_0xbc68d3['shift']());}};_0xe9ac26(++_0x2896da);}(_0xb9a7,0x112));var _0x7b9a=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xb9a7[_0xa148b7];return _0x51efd3;};'use strict';var multer=require('multer');var util=require(_0x7b9a('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7b9a('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x7b9a('0x2'));var interaction=require(_0x7b9a('0x3'));var config=require(_0x7b9a('0x4'));var controller=require(_0x7b9a('0x5'));router[_0x7b9a('0x6')]('/',auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x8')]);router[_0x7b9a('0x6')](_0x7b9a('0x9'),auth[_0x7b9a('0x7')](),controller['describe']);router[_0x7b9a('0x6')](_0x7b9a('0xa'),auth['isAuthenticated'](),controller['show']);router['get'](_0x7b9a('0xb'),auth[_0x7b9a('0x7')](),controller['download']);router[_0x7b9a('0xc')]('/',auth['isAuthenticated'](),interaction[_0x7b9a('0xd')]('fax',_0x7b9a('0xe')),controller[_0x7b9a('0xf')]);router[_0x7b9a('0x10')]('/:id',auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x11')]);router['put'](_0x7b9a('0x12'),auth[_0x7b9a('0x7')](),controller['accept']);router[_0x7b9a('0x10')](_0x7b9a('0x13'),auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x14')]);router[_0x7b9a('0x15')](_0x7b9a('0xa'),auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x16')]);module[_0x7b9a('0x17')]=router;
\ No newline at end of file
+var _0x1be1=['create','put','update','/:id/accept','destroy','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxMessage.controller','get','isAuthenticated','describe','/:id','/:id/download','download','post','tracked','faxmessage:create'];(function(_0x58dc25,_0x49b9d5){var _0x21b0a7=function(_0x38a186){while(--_0x38a186){_0x58dc25['push'](_0x58dc25['shift']());}};_0x21b0a7(++_0x49b9d5);}(_0x1be1,0x192));var _0x11be=function(_0x3c3f78,_0xe2efc8){_0x3c3f78=_0x3c3f78-0x0;var _0x1ae4c6=_0x1be1[_0x3c3f78];return _0x1ae4c6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x11be('0x0'));var timeout=require(_0x11be('0x1'));var express=require('express');var router=express[_0x11be('0x2')]();var fs_extra=require(_0x11be('0x3'));var auth=require(_0x11be('0x4'));var interaction=require(_0x11be('0x5'));var config=require('../../config/environment');var controller=require(_0x11be('0x6'));router[_0x11be('0x7')]('/',auth[_0x11be('0x8')](),controller['index']);router[_0x11be('0x7')]('/describe',auth[_0x11be('0x8')](),controller[_0x11be('0x9')]);router[_0x11be('0x7')](_0x11be('0xa'),auth[_0x11be('0x8')](),controller['show']);router[_0x11be('0x7')](_0x11be('0xb'),auth['isAuthenticated'](),controller[_0x11be('0xc')]);router[_0x11be('0xd')]('/',auth[_0x11be('0x8')](),interaction[_0x11be('0xe')]('fax',_0x11be('0xf')),controller[_0x11be('0x10')]);router[_0x11be('0x11')]('/:id',auth[_0x11be('0x8')](),controller[_0x11be('0x12')]);router['put'](_0x11be('0x13'),auth['isAuthenticated'](),controller['accept']);router['put']('/:id/reject',auth['isAuthenticated'](),controller['reject']);router['delete'](_0x11be('0xa'),auth['isAuthenticated'](),controller[_0x11be('0x14')]);module[_0x11be('0x15')]=router;
\ No newline at end of file
index 18f3263..06bfb60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe58e=['STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x352c94,_0x31acf5){var _0x1d0584=function(_0xd37dfc){while(--_0xd37dfc){_0x352c94['push'](_0x352c94['shift']());}};_0x1d0584(++_0x31acf5);}(_0xe58e,0x10e));var _0xee58=function(_0x29092d,_0x214c46){_0x29092d=_0x29092d-0x0;var _0x2c4235=_0xe58e[_0x29092d];return _0x2c4235;};'use strict';var Sequelize=require(_0xee58('0x0'));module[_0xee58('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xee58('0x2')]},'timeout':{'type':Sequelize[_0xee58('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xee58('0x4')](_0xee58('0x5'),_0xee58('0x6'),_0xee58('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xee58('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9e84=['STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x9e84,0x196));var _0x49e8=function(_0xab9f3d,_0xb336fa){_0xab9f3d=_0xab9f3d-0x0;var _0x5283bf=_0x9e84[_0xab9f3d];return _0x5283bf;};'use strict';var Sequelize=require(_0x49e8('0x0'));module[_0x49e8('0x1')]={'name':{'type':Sequelize[_0x49e8('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x49e8('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x49e8('0x4')](_0x49e8('0x5'),_0x49e8('0x6'),_0x49e8('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 87b91ca..a688786 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc614=['emit','removeTeams','select','field','tq.TeamId','join','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','transaction','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','userFaxQueue:save','getAgents','hasOwnProperty','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','FaxQueues','sendStatus','error','stack','send','map','FaxQueue','rawAttributes','fieldName','type','key','model','name','keys','query','intersection','attributes','fields','nolimit','limit','sort','where','filters','pick','filter','merge','VIRTUAL','options','rows','catch','show','length','includeAll','include','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','find','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','findOne','UserFaxQueue','order','FaxQueueId','findAll','User','UserId','agent','faxPause','updatedAt','format','SIP','createdAt','getTeams','ids','Team','Agents','voicePause','flatMap','sequelize','forEach'];(function(_0x3ef892,_0x38fb64){var _0x19f2c0=function(_0x441ba3){while(--_0x441ba3){_0x3ef892['push'](_0x3ef892['shift']());}};_0x19f2c0(++_0x38fb64);}(_0xc614,0xa0));var _0x4c61=function(_0xb2a71b,_0x4e4abf){_0xb2a71b=_0xb2a71b-0x0;var _0x36afe7=_0xc614[_0xb2a71b];return _0x36afe7;};'use strict';var emlformat=require(_0x4c61('0x0'));var rimraf=require(_0x4c61('0x1'));var zipdir=require(_0x4c61('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4c61('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4c61('0x4'));var util=require(_0x4c61('0x5'));var path=require(_0x4c61('0x6'));var sox=require(_0x4c61('0x7'));var csv=require(_0x4c61('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4c61('0x9'));var _=require('lodash');var squel=require(_0x4c61('0xa'));var crypto=require('crypto');var jsforce=require(_0x4c61('0xb'));var deskjs=require(_0x4c61('0xc'));var toCsv=require('to-csv');var querystring=require(_0x4c61('0xd'));var Papa=require(_0x4c61('0xe'));var Redis=require('ioredis');var authService=require(_0x4c61('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4c61('0x10'));var utils=require(_0x4c61('0x11'));var config=require(_0x4c61('0x12'));var licenseUtil=require(_0x4c61('0x13'));var db=require('../../mysqldb')['db'];config[_0x4c61('0x14')]=_[_0x4c61('0x15')](config[_0x4c61('0x14')],{'host':_0x4c61('0x16'),'port':0x18eb});var socket=require(_0x4c61('0x17'))(new Redis(config['redis']));require(_0x4c61('0x18'))[_0x4c61('0x19')](socket);function respondWithStatusCode(_0x54533d,_0x34658c){_0x34658c=_0x34658c||0xcc;return function(_0x428adc){if(_0x428adc){return _0x54533d['sendStatus'](_0x34658c);}return _0x54533d[_0x4c61('0x1a')](_0x34658c)[_0x4c61('0x1b')]();};}function respondWithResult(_0x14d396,_0x2d62aa){_0x2d62aa=_0x2d62aa||0xc8;return function(_0x94f9af){if(_0x94f9af){return _0x14d396[_0x4c61('0x1a')](_0x2d62aa)['json'](_0x94f9af);}};}function respondWithFilteredResult(_0x584b2e,_0x21bf81){return function(_0xc33080){if(_0xc33080){var _0x55ffb8=typeof _0x21bf81[_0x4c61('0x1c')]===_0x4c61('0x1d')&&typeof _0x21bf81['limit']===_0x4c61('0x1d');var _0x3434bf=_0xc33080[_0x4c61('0x1e')];var _0x2626ac=_0x55ffb8?0x0:_0x21bf81[_0x4c61('0x1c')];var _0x3d69ac=_0x55ffb8?_0xc33080[_0x4c61('0x1e')]:_0x21bf81['offset']+_0x21bf81['limit'];var _0x57bb08;if(_0x3d69ac>=_0x3434bf){_0x3d69ac=_0x3434bf;_0x57bb08=0xc8;}else{_0x57bb08=0xce;}_0x584b2e[_0x4c61('0x1a')](_0x57bb08);return _0x584b2e[_0x4c61('0x1f')](_0x4c61('0x20'),_0x2626ac+'-'+_0x3d69ac+'/'+_0x3434bf)[_0x4c61('0x21')](_0xc33080);}return null;};}function patchUpdates(_0x4efafc){return function(_0x3e6d83){try{jsonpatch[_0x4c61('0x22')](_0x3e6d83,_0x4efafc,!![]);}catch(_0x3c2b6a){return BPromise[_0x4c61('0x23')](_0x3c2b6a);}return _0x3e6d83[_0x4c61('0x24')]();};}function saveUpdates(_0x1b5c29,_0x3dab99){return function(_0x419151){if(_0x419151){return _0x419151[_0x4c61('0x25')](_0x1b5c29)[_0x4c61('0x26')](function(_0x3dd633){return _0x3dd633;});}return null;};}function removeEntity(_0x2e9809,_0x43ba44){return function(_0x544e10){if(_0x544e10){return _0x544e10[_0x4c61('0x27')]()[_0x4c61('0x26')](function(){var _0x277aa4=_0x544e10[_0x4c61('0x28')]({'plain':!![]});var _0x2e3fd2=_0x4c61('0x29');return db['UserProfileResource'][_0x4c61('0x27')]({'where':{'type':_0x2e3fd2,'resourceId':_0x277aa4['id']}})['then'](function(){return _0x544e10;});})['then'](function(){_0x2e9809[_0x4c61('0x1a')](0xcc)[_0x4c61('0x1b')]();});}};}function handleEntityNotFound(_0x354ea5,_0x1c790b){return function(_0x5a34e9){if(!_0x5a34e9){_0x354ea5[_0x4c61('0x2a')](0x194);}return _0x5a34e9;};}function handleError(_0x48d50c,_0x30dc8c){_0x30dc8c=_0x30dc8c||0x1f4;return function(_0x18dd59){logger[_0x4c61('0x2b')](_0x18dd59[_0x4c61('0x2c')]);if(_0x18dd59['name']){delete _0x18dd59['name'];}_0x48d50c['status'](_0x30dc8c)[_0x4c61('0x2d')](_0x18dd59);};}exports['index']=function(_0x20f509,_0x3b3173){var _0x1a1eee={},_0x106f93={},_0x298451={'count':0x0,'rows':[]};var _0x181878=_[_0x4c61('0x2e')](db[_0x4c61('0x2f')][_0x4c61('0x30')],function(_0x590295){return{'name':_0x590295[_0x4c61('0x31')],'type':_0x590295[_0x4c61('0x32')][_0x4c61('0x33')]};});_0x106f93[_0x4c61('0x34')]=_['map'](_0x181878,_0x4c61('0x35'));_0x106f93['query']=_[_0x4c61('0x36')](_0x20f509[_0x4c61('0x37')]);_0x106f93['filters']=_[_0x4c61('0x38')](_0x106f93[_0x4c61('0x34')],_0x106f93[_0x4c61('0x37')]);_0x1a1eee[_0x4c61('0x39')]=_[_0x4c61('0x38')](_0x106f93['model'],qs['fields'](_0x20f509[_0x4c61('0x37')][_0x4c61('0x3a')]));_0x1a1eee[_0x4c61('0x39')]=_0x1a1eee[_0x4c61('0x39')]['length']?_0x1a1eee['attributes']:_0x106f93[_0x4c61('0x34')];if(!_0x20f509['query']['hasOwnProperty'](_0x4c61('0x3b'))){_0x1a1eee[_0x4c61('0x3c')]=qs[_0x4c61('0x3c')](_0x20f509[_0x4c61('0x37')]['limit']);_0x1a1eee[_0x4c61('0x1c')]=qs[_0x4c61('0x1c')](_0x20f509['query']['offset']);}_0x1a1eee['order']=qs[_0x4c61('0x3d')](_0x20f509[_0x4c61('0x37')]['sort']);_0x1a1eee[_0x4c61('0x3e')]=qs[_0x4c61('0x3f')](_[_0x4c61('0x40')](_0x20f509['query'],_0x106f93[_0x4c61('0x3f')]),_0x181878);if(_0x20f509['query'][_0x4c61('0x41')]){_0x1a1eee['where']=_[_0x4c61('0x42')](_0x1a1eee[_0x4c61('0x3e')],{'$or':_[_0x4c61('0x2e')](_0x181878,function(_0x13ebc9){if(_0x13ebc9['type']!==_0x4c61('0x43')){var _0x34a080={};_0x34a080[_0x13ebc9['name']]={'$like':'%'+_0x20f509[_0x4c61('0x37')][_0x4c61('0x41')]+'%'};return _0x34a080;}})});}_0x1a1eee=_[_0x4c61('0x42')]({},_0x1a1eee,_0x20f509[_0x4c61('0x44')]);var _0x4eabaf={'where':_0x1a1eee['where']};return db['FaxQueue'][_0x4c61('0x1e')](_0x4eabaf)[_0x4c61('0x26')](function(_0x578780){_0x298451['count']=_0x578780;if(_0x20f509[_0x4c61('0x37')]['includeAll']){_0x1a1eee['include']=[{'all':!![]}];}return db[_0x4c61('0x2f')]['findAll'](_0x1a1eee);})['then'](function(_0x21f526){_0x298451[_0x4c61('0x45')]=_0x21f526;return _0x298451;})[_0x4c61('0x26')](respondWithFilteredResult(_0x3b3173,_0x1a1eee))[_0x4c61('0x46')](handleError(_0x3b3173,null));};exports[_0x4c61('0x47')]=function(_0x1f7eb4,_0x261df2){var _0x3af3fb={'raw':!![],'where':{'id':_0x1f7eb4['params']['id']}},_0x486904={};_0x486904[_0x4c61('0x34')]=_[_0x4c61('0x36')](db[_0x4c61('0x2f')][_0x4c61('0x30')]);_0x486904[_0x4c61('0x37')]=_['keys'](_0x1f7eb4['query']);_0x486904['filters']=_['intersection'](_0x486904[_0x4c61('0x34')],_0x486904[_0x4c61('0x37')]);_0x3af3fb[_0x4c61('0x39')]=_[_0x4c61('0x38')](_0x486904[_0x4c61('0x34')],qs[_0x4c61('0x3a')](_0x1f7eb4['query'][_0x4c61('0x3a')]));_0x3af3fb[_0x4c61('0x39')]=_0x3af3fb[_0x4c61('0x39')][_0x4c61('0x48')]?_0x3af3fb['attributes']:_0x486904[_0x4c61('0x34')];if(_0x1f7eb4[_0x4c61('0x37')][_0x4c61('0x49')]){_0x3af3fb[_0x4c61('0x4a')]=[{'all':!![]}];}_0x3af3fb=_[_0x4c61('0x42')]({},_0x3af3fb,_0x1f7eb4[_0x4c61('0x44')]);return db[_0x4c61('0x2f')]['find'](_0x3af3fb)[_0x4c61('0x26')](handleEntityNotFound(_0x261df2,null))[_0x4c61('0x26')](respondWithResult(_0x261df2,null))[_0x4c61('0x46')](handleError(_0x261df2,null));};exports[_0x4c61('0x4b')]=function(_0x924811,_0xc12ffb){return db['FaxQueue']['create'](_0x924811['body'],{})[_0x4c61('0x26')](function(_0x21c5b3){var _0x2df76c=_0x924811['user'][_0x4c61('0x28')]({'plain':!![]});if(!_0x2df76c)throw new Error(_0x4c61('0x4c'));if(_0x2df76c['role']===_0x4c61('0x4d')){var _0x3fa23f=_0x21c5b3['get']({'plain':!![]});var _0x2e3134=_0x4c61('0x29');return db['UserProfileSection'][_0x4c61('0x4e')]({'where':{'name':_0x2e3134,'userProfileId':_0x2df76c[_0x4c61('0x4f')]},'raw':!![]})[_0x4c61('0x26')](function(_0x56a331){if(_0x56a331&&_0x56a331['autoAssociation']===0x0){return db[_0x4c61('0x50')][_0x4c61('0x4b')]({'name':_0x3fa23f['name'],'resourceId':_0x3fa23f['id'],'type':_0x56a331[_0x4c61('0x35')],'sectionId':_0x56a331['id']},{})[_0x4c61('0x26')](function(){return _0x21c5b3;});}else{return _0x21c5b3;}})['catch'](function(_0x82638a){logger[_0x4c61('0x2b')](_0x4c61('0x51'),_0x82638a);throw _0x82638a;});}return _0x21c5b3;})[_0x4c61('0x26')](respondWithResult(_0xc12ffb,0xc9))[_0x4c61('0x46')](handleError(_0xc12ffb,null));};exports['update']=function(_0x2ae0a9,_0x2b6594){if(_0x2ae0a9[_0x4c61('0x52')]['id']){delete _0x2ae0a9[_0x4c61('0x52')]['id'];}return db[_0x4c61('0x2f')][_0x4c61('0x4e')]({'where':{'id':_0x2ae0a9[_0x4c61('0x53')]['id']}})['then'](handleEntityNotFound(_0x2b6594,null))[_0x4c61('0x26')](saveUpdates(_0x2ae0a9['body'],null))[_0x4c61('0x26')](respondWithResult(_0x2b6594,null))['catch'](handleError(_0x2b6594,null));};exports[_0x4c61('0x27')]=function(_0x19454f,_0x40514b){return db[_0x4c61('0x2f')][_0x4c61('0x4e')]({'where':{'id':_0x19454f[_0x4c61('0x53')]['id']}})['then'](handleEntityNotFound(_0x40514b,null))[_0x4c61('0x26')](removeEntity(_0x40514b,null))['catch'](handleError(_0x40514b,null));};exports[_0x4c61('0x54')]=function(_0x1ef622,_0x284d0a){return db['FaxQueue'][_0x4c61('0x54')]()['then'](respondWithResult(_0x284d0a,null))[_0x4c61('0x46')](handleError(_0x284d0a,null));};exports['getMembers']=function(_0x30b264,_0x457738,_0x500e7d){var _0x287f7e={'raw':!![],'where':{}},_0x54866={},_0x51bc50;return db['FaxQueue'][_0x4c61('0x55')]({'where':{'id':_0x30b264[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](handleEntityNotFound(_0x457738,null))[_0x4c61('0x26')](function(_0x46af6f){if(_0x46af6f){_0x51bc50=_0x46af6f[_0x4c61('0x28')]({'plain':!![]});_0x54866[_0x4c61('0x34')]=_['keys'](db[_0x4c61('0x56')][_0x4c61('0x30')]);_0x54866[_0x4c61('0x37')]=_['keys'](_0x30b264['query']);_0x54866[_0x4c61('0x3f')]=_[_0x4c61('0x38')](_0x54866[_0x4c61('0x34')],_0x54866[_0x4c61('0x37')]);_0x287f7e[_0x4c61('0x39')]=_[_0x4c61('0x38')](_0x54866[_0x4c61('0x34')],qs[_0x4c61('0x3a')](_0x30b264[_0x4c61('0x37')][_0x4c61('0x3a')]));_0x287f7e[_0x4c61('0x39')]=_0x287f7e[_0x4c61('0x39')][_0x4c61('0x48')]?_0x287f7e[_0x4c61('0x39')]:_0x54866[_0x4c61('0x34')];if(!_0x30b264[_0x4c61('0x37')]['hasOwnProperty'](_0x4c61('0x3b'))){_0x287f7e[_0x4c61('0x3c')]=qs[_0x4c61('0x3c')](_0x30b264[_0x4c61('0x37')][_0x4c61('0x3c')]);_0x287f7e[_0x4c61('0x1c')]=qs[_0x4c61('0x1c')](_0x30b264[_0x4c61('0x37')][_0x4c61('0x1c')]);}_0x287f7e[_0x4c61('0x57')]=qs[_0x4c61('0x3d')](_0x30b264['query'][_0x4c61('0x3d')]);_0x287f7e[_0x4c61('0x3e')]=qs[_0x4c61('0x3f')](_[_0x4c61('0x40')](_0x30b264[_0x4c61('0x37')],_0x54866[_0x4c61('0x3f')]));_0x287f7e[_0x4c61('0x3e')][_0x4c61('0x58')]=_0x46af6f['id'];if(_0x30b264[_0x4c61('0x37')][_0x4c61('0x41')]){_0x287f7e[_0x4c61('0x3e')]=_[_0x4c61('0x42')](_0x287f7e[_0x4c61('0x3e')],{'$or':_['map'](_0x287f7e[_0x4c61('0x39')],function(_0x4c19e6){var _0x52ecec={};_0x52ecec[_0x4c19e6]={'$like':'%'+_0x30b264[_0x4c61('0x37')][_0x4c61('0x41')]+'%'};return _0x52ecec;})});}_0x287f7e=_[_0x4c61('0x42')]({},_0x287f7e,_0x30b264['options']);return db[_0x4c61('0x56')][_0x4c61('0x59')](_0x287f7e);}})[_0x4c61('0x26')](function(_0x4c711c){if(_0x4c711c){return db[_0x4c61('0x5a')]['findAndCountAll']({'where':{'id':_['map'](_0x4c711c,_0x4c61('0x5b')),'role':_0x4c61('0x5c')},'attributes':['id',_0x4c61('0x35'),_0x4c61('0x5d'),_0x4c61('0x5e'),'createdAt']});}})[_0x4c61('0x26')](function(_0x202a15){if(_0x202a15){return{'count':_0x202a15['count'],'rows':_['map'](_0x202a15[_0x4c61('0x45')],function(_0x3ec666){return{'membername':_0x3ec666['name'],'UserId':_0x3ec666['id'],'queue_name':_0x51bc50[_0x4c61('0x35')],'FaxQueueId':_0x51bc50['id'],'interface':util[_0x4c61('0x5f')]('%s/%s',_0x4c61('0x60'),_0x3ec666[_0x4c61('0x35')]),'penalty':0x0,'paused':_0x3ec666[_0x4c61('0x5d')],'createdAt':_0x3ec666[_0x4c61('0x61')],'updatedAt':_0x3ec666[_0x4c61('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4c61('0x26')](respondWithFilteredResult(_0x457738,_0x287f7e))['catch'](handleError(_0x457738,null));};exports[_0x4c61('0x62')]=function(_0xa4760b,_0x286a3f,_0x595ada){var _0x4be9cc={};var _0x461e31={};var _0x342783;var _0x99846e;return db[_0x4c61('0x2f')]['findOne']({'where':{'id':_0xa4760b[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](handleEntityNotFound(_0x286a3f,null))[_0x4c61('0x26')](function(_0xa8a06e){if(_0xa8a06e){_0x342783=_0xa8a06e;_0x461e31['model']=_[_0x4c61('0x36')](db['Team'][_0x4c61('0x30')]);_0x461e31[_0x4c61('0x37')]=_[_0x4c61('0x36')](_0xa4760b[_0x4c61('0x37')]);_0x461e31[_0x4c61('0x3f')]=_[_0x4c61('0x38')](_0x461e31[_0x4c61('0x34')],_0x461e31[_0x4c61('0x37')]);_0x4be9cc[_0x4c61('0x39')]=_[_0x4c61('0x38')](_0x461e31[_0x4c61('0x34')],qs[_0x4c61('0x3a')](_0xa4760b[_0x4c61('0x37')][_0x4c61('0x3a')]));_0x4be9cc[_0x4c61('0x39')]=_0x4be9cc[_0x4c61('0x39')][_0x4c61('0x48')]?_0x4be9cc['attributes']:_0x461e31[_0x4c61('0x34')];_0x4be9cc[_0x4c61('0x57')]=qs[_0x4c61('0x3d')](_0xa4760b[_0x4c61('0x37')][_0x4c61('0x3d')]);_0x4be9cc[_0x4c61('0x3e')]=qs[_0x4c61('0x3f')](_[_0x4c61('0x40')](_0xa4760b['query'],_0x461e31[_0x4c61('0x3f')]));if(_0xa4760b['query'][_0x4c61('0x41')]){_0x4be9cc[_0x4c61('0x3e')]=_[_0x4c61('0x42')](_0x4be9cc[_0x4c61('0x3e')],{'$or':_[_0x4c61('0x2e')](_0x4be9cc[_0x4c61('0x39')],function(_0x58a831){var _0x136512={};_0x136512[_0x58a831]={'$like':'%'+_0xa4760b[_0x4c61('0x37')][_0x4c61('0x41')]+'%'};return _0x136512;})});}_0x4be9cc=_[_0x4c61('0x42')]({},_0x4be9cc,_0xa4760b[_0x4c61('0x44')]);return _0x342783[_0x4c61('0x62')](_0x4be9cc);}})[_0x4c61('0x26')](function(_0x2cc58d){if(_0x2cc58d){_0x99846e=_0x2cc58d[_0x4c61('0x48')];if(!_0xa4760b[_0x4c61('0x37')]['hasOwnProperty'](_0x4c61('0x3b'))){_0x4be9cc['limit']=qs[_0x4c61('0x3c')](_0xa4760b[_0x4c61('0x37')][_0x4c61('0x3c')]);_0x4be9cc[_0x4c61('0x1c')]=qs['offset'](_0xa4760b[_0x4c61('0x37')][_0x4c61('0x1c')]);}return _0x342783[_0x4c61('0x62')](_0x4be9cc);}})[_0x4c61('0x26')](function(_0x176568){if(_0x176568){return _0x176568?{'count':_0x99846e,'rows':_0x176568}:null;}})[_0x4c61('0x26')](respondWithResult(_0x286a3f,null))[_0x4c61('0x46')](handleError(_0x286a3f,null));};exports['addTeams']=function(_0x56fecd,_0x4db5b1,_0xe52c5c){var _0x477424=_0x56fecd['body'][_0x4c61('0x63')];return db[_0x4c61('0x64')]['findAll']({'where':{'id':_0x477424},'attributes':['id'],'include':[{'model':db[_0x4c61('0x5a')],'as':_0x4c61('0x65'),'attributes':['id','name','online',_0x4c61('0x66'),'interface'],'raw':!![]}]})['then'](function(_0x2b57fd){if(_0x2b57fd){var _0x18ef09=_[_0x4c61('0x67')](_0x2b57fd,function(_0x213cec){var _0x345375=_0x213cec[_0x4c61('0x28')]({'plain':!![]});return _0x345375['Agents'];});return db[_0x4c61('0x2f')][_0x4c61('0x4e')]({'where':{'id':_0x56fecd[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](function(_0x1ff98f){return db[_0x4c61('0x68')]['transaction'](function(_0x7642a9){return _0x1ff98f['addTeams'](_0x477424,{'transaction':_0x7642a9})[_0x4c61('0x26')](function(){return BPromise['each'](_0x18ef09,function(_0x167be7){return db[_0x4c61('0x56')]['findOrCreate']({'where':{'UserId':_0x167be7['id'],'FaxQueueId':_0x56fecd[_0x4c61('0x53')]['id']},'transaction':_0x7642a9});});})[_0x4c61('0x26')](function(){_0x18ef09[_0x4c61('0x69')](function(_0x33d047){socket[_0x4c61('0x6a')]('userFaxQueue:save',{'UserId':_0x33d047['id'],'FaxQueueId':_0x1ff98f['id']});});});});});}})[_0x4c61('0x26')](respondWithStatusCode(_0x4db5b1,null))['catch'](handleError(_0x4db5b1,null));};exports[_0x4c61('0x6b')]=function(_0x348c47,_0x4fa9ea,_0x1f7664){return db['Team'][_0x4c61('0x59')]({'where':{'id':_0x348c47['query'][_0x4c61('0x63')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x4c61('0x65'),'attributes':['id'],'raw':!![]}]})[_0x4c61('0x26')](handleEntityNotFound(_0x4fa9ea,null))['then'](function(_0x4c8810){var _0x28e7a6=_[_0x4c61('0x2e')](_0x4c8810,'id');var _0x4aaad2=[];var _0x695631=[];var _0x9b7f91=squel[_0x4c61('0x6c')]();_0x9b7f91[_0x4c61('0x6d')](_0x4c61('0x6e'))['from']('team_has_fax_queues','tq')[_0x4c61('0x6f')]('user_has_teams','ut',_0x4c61('0x70'))[_0x4c61('0x3e')](_0x4c61('0x71'),_0x348c47['params']['id']);for(var _0x3723e0=0x0;_0x3723e0<_0x4c8810[_0x4c61('0x48')];_0x3723e0+=0x1){let _0x5ef2be=_0x4c8810[_0x3723e0];for(var _0xb711fb=0x0;_0xb711fb<_0x5ef2be['Agents'][_0x4c61('0x48')];_0xb711fb+=0x1){let _0x219bda=_0x5ef2be[_0x4c61('0x65')][_0xb711fb];var _0xfc4f0=_0x9b7f91[_0x4c61('0x72')]();_0xfc4f0[_0x4c61('0x3e')]('ut.UserId\x20=\x20?',_0x219bda['id']);_0x695631['push'](db[_0x4c61('0x68')][_0x4c61('0x37')](_0xfc4f0['toString'](),{'type':db[_0x4c61('0x68')][_0x4c61('0x73')][_0x4c61('0x74')]})[_0x4c61('0x26')](function(_0x4a0cd3){if(_0x4a0cd3['length']===0x1){return _0x219bda['id'];}else{var _0x512b47=_[_0x4c61('0x75')](_[_0x4c61('0x2e')](_0x4a0cd3,_0x4c61('0x76')),function(_0x1ea405){return _[_0x4c61('0x77')](_0x28e7a6,_0x1ea405);});if(_0x512b47){return _0x219bda['id'];}}}));}}return BPromise[_0x4c61('0x78')](_0x695631)[_0x4c61('0x26')](function(_0x560810){_0x4aaad2=_(_0x4aaad2)[_0x4c61('0x79')](_0x560810)[_0x4c61('0x7a')]()['value']();return db[_0x4c61('0x2f')][_0x4c61('0x4e')]({'where':{'id':_0x348c47[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](function(_0x42cce8){return db[_0x4c61('0x68')][_0x4c61('0x7b')](function(_0xbeb23d){return _0x42cce8['removeTeams'](_0x348c47[_0x4c61('0x37')]['ids'],{'transaction':_0xbeb23d})[_0x4c61('0x26')](function(){if(!_[_0x4c61('0x7c')](_0x4aaad2)){return _0x42cce8[_0x4c61('0x7d')](_0x4aaad2,{'transaction':_0xbeb23d});}})[_0x4c61('0x26')](function(){_0x4aaad2['forEach'](function(_0x7123ae){socket[_0x4c61('0x6a')](_0x4c61('0x7e'),{'UserId':_0x7123ae,'FaxQueueId':_0x42cce8['id']});});});});});});})[_0x4c61('0x26')](respondWithStatusCode(_0x4fa9ea,null))[_0x4c61('0x46')](handleError(_0x4fa9ea,null));};exports['addAgents']=function(_0x55480a,_0x2160ba,_0x33dbcc){return db[_0x4c61('0x2f')][_0x4c61('0x4e')]({'where':{'id':_0x55480a[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](handleEntityNotFound(_0x2160ba,null))[_0x4c61('0x26')](function(_0x3a3584){if(_0x3a3584){return _0x3a3584[_0x4c61('0x7f')](_0x55480a['body'][_0x4c61('0x63')],_[_0x4c61('0x80')](_0x55480a[_0x4c61('0x52')],[_0x4c61('0x63'),'id'])||{})[_0x4c61('0x81')](function(_0x2e63ca){for(var _0x4a010d=0x0;_0x4a010d<_0x55480a['body'][_0x4c61('0x63')]['length'];_0x4a010d+=0x1){socket[_0x4c61('0x6a')](_0x4c61('0x82'),{'UserId':Number(_0x55480a[_0x4c61('0x52')][_0x4c61('0x63')][_0x4a010d]),'FaxQueueId':Number(_0x55480a[_0x4c61('0x53')]['id'])});}return _0x2e63ca;});}})['then'](respondWithResult(_0x2160ba,null))['catch'](handleError(_0x2160ba,null));};exports[_0x4c61('0x7d')]=function(_0x10551c,_0x10851f,_0x317dd7){return db[_0x4c61('0x2f')][_0x4c61('0x4e')]({'where':{'id':_0x10551c[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](handleEntityNotFound(_0x10851f,null))[_0x4c61('0x26')](function(_0x47a30b){if(_0x47a30b){return _0x47a30b[_0x4c61('0x7d')](_0x10551c[_0x4c61('0x37')]['ids'])[_0x4c61('0x26')](function(){if(_['isArray'](_0x10551c[_0x4c61('0x37')]['ids'])){for(var _0x4afe6b=0x0;_0x4afe6b<_0x10551c[_0x4c61('0x37')][_0x4c61('0x63')][_0x4c61('0x48')];_0x4afe6b+=0x1){socket['emit'](_0x4c61('0x7e'),{'UserId':Number(_0x10551c[_0x4c61('0x37')][_0x4c61('0x63')][_0x4afe6b]),'FaxQueueId':Number(_0x10551c[_0x4c61('0x53')]['id'])});}}else{socket[_0x4c61('0x6a')](_0x4c61('0x7e'),{'UserId':Number(_0x10551c[_0x4c61('0x37')]['ids']),'FaxQueueId':Number(_0x10551c[_0x4c61('0x53')]['id'])});}});}})['then'](respondWithStatusCode(_0x10851f,null))[_0x4c61('0x46')](handleError(_0x10851f,null));};exports[_0x4c61('0x83')]=function(_0x1858b6,_0x487871,_0x29be83){var _0x15906a={};var _0x2e32a6={};var _0x40f2e8;var _0x206c3b;return db[_0x4c61('0x2f')][_0x4c61('0x55')]({'where':{'id':_0x1858b6[_0x4c61('0x53')]['id']}})[_0x4c61('0x26')](handleEntityNotFound(_0x487871,null))[_0x4c61('0x26')](function(_0x350385){if(_0x350385){_0x40f2e8=_0x350385;_0x2e32a6['model']=_[_0x4c61('0x36')](db[_0x4c61('0x5a')][_0x4c61('0x30')]);_0x2e32a6[_0x4c61('0x37')]=_[_0x4c61('0x36')](_0x1858b6[_0x4c61('0x37')]);_0x2e32a6[_0x4c61('0x3f')]=_[_0x4c61('0x38')](_0x2e32a6['model'],_0x2e32a6[_0x4c61('0x37')]);_0x15906a[_0x4c61('0x39')]=_[_0x4c61('0x38')](_0x2e32a6[_0x4c61('0x34')],qs[_0x4c61('0x3a')](_0x1858b6[_0x4c61('0x37')]['fields']));_0x15906a[_0x4c61('0x39')]=_0x15906a[_0x4c61('0x39')][_0x4c61('0x48')]?_0x15906a['attributes']:_0x2e32a6[_0x4c61('0x34')];_0x15906a['order']=qs[_0x4c61('0x3d')](_0x1858b6['query'][_0x4c61('0x3d')]);_0x15906a[_0x4c61('0x3e')]=qs[_0x4c61('0x3f')](_[_0x4c61('0x40')](_0x1858b6['query'],_0x2e32a6[_0x4c61('0x3f')]));if(_0x1858b6[_0x4c61('0x37')]['filter']){_0x15906a[_0x4c61('0x3e')]=_['merge'](_0x15906a['where'],{'$or':_[_0x4c61('0x2e')](_0x15906a[_0x4c61('0x39')],function(_0x2bc5dc){var _0x5812c3={};_0x5812c3[_0x2bc5dc]={'$like':'%'+_0x1858b6[_0x4c61('0x37')]['filter']+'%'};return _0x5812c3;})});}_0x15906a=_[_0x4c61('0x42')]({},_0x15906a,_0x1858b6[_0x4c61('0x44')]);return _0x40f2e8[_0x4c61('0x83')](_0x15906a);}})[_0x4c61('0x26')](function(_0x325eba){if(_0x325eba){_0x206c3b=_0x325eba[_0x4c61('0x48')];if(!_0x1858b6[_0x4c61('0x37')][_0x4c61('0x84')]('nolimit')){_0x15906a[_0x4c61('0x3c')]=qs[_0x4c61('0x3c')](_0x1858b6[_0x4c61('0x37')]['limit']);_0x15906a['offset']=qs[_0x4c61('0x1c')](_0x1858b6[_0x4c61('0x37')]['offset']);}return _0x40f2e8[_0x4c61('0x83')](_0x15906a);}})['then'](function(_0x7aa753){if(_0x7aa753){return _0x7aa753?{'count':_0x206c3b,'rows':_0x7aa753}:null;}})[_0x4c61('0x26')](respondWithResult(_0x487871,null))[_0x4c61('0x46')](handleError(_0x487871,null));};
\ No newline at end of file
+var _0xbe5e=['Team','Agents','online','voicePause','interface','sequelize','transaction','addTeams','each','findOrCreate','forEach','emit','userFaxQueue:save','select','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','SELECT','every','TeamId','includes','all','union','value','removeTeams','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','undefined','count','offset','set','Content-Range','json','reject','save','then','destroy','FaxQueues','UserProfileResource','name','send','index','map','FaxQueue','fieldName','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','where','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserFaxQueue','order','sort','pick','User','UserId','agent','faxPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','body','ids'];(function(_0x549fb4,_0x57140c){var _0xc64c37=function(_0x40e702){while(--_0x40e702){_0x549fb4['push'](_0x549fb4['shift']());}};_0xc64c37(++_0x57140c);}(_0xbe5e,0x1e4));var _0xebe5=function(_0x1377e1,_0x93e743){_0x1377e1=_0x1377e1-0x0;var _0x423de5=_0xbe5e[_0x1377e1];return _0x423de5;};'use strict';var emlformat=require(_0xebe5('0x0'));var rimraf=require(_0xebe5('0x1'));var zipdir=require(_0xebe5('0x2'));var jsonpatch=require(_0xebe5('0x3'));var rp=require(_0xebe5('0x4'));var moment=require(_0xebe5('0x5'));var BPromise=require(_0xebe5('0x6'));var Mustache=require(_0xebe5('0x7'));var util=require(_0xebe5('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xebe5('0x9'));var ejs=require(_0xebe5('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xebe5('0xb'));var squel=require(_0xebe5('0xc'));var crypto=require(_0xebe5('0xd'));var jsforce=require(_0xebe5('0xe'));var deskjs=require(_0xebe5('0xf'));var toCsv=require(_0xebe5('0x9'));var querystring=require(_0xebe5('0x10'));var Papa=require('papaparse');var Redis=require(_0xebe5('0x11'));var authService=require(_0xebe5('0x12'));var qs=require(_0xebe5('0x13'));var as=require(_0xebe5('0x14'));var hardwareService=require(_0xebe5('0x15'));var logger=require(_0xebe5('0x16'))(_0xebe5('0x17'));var utils=require(_0xebe5('0x18'));var config=require(_0xebe5('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xebe5('0x1a'))['db'];config[_0xebe5('0x1b')]=_[_0xebe5('0x1c')](config[_0xebe5('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xebe5('0x1d'))(new Redis(config[_0xebe5('0x1b')]));require(_0xebe5('0x1e'))[_0xebe5('0x1f')](socket);function respondWithStatusCode(_0x5d3fe0,_0xa20611){_0xa20611=_0xa20611||0xcc;return function(_0xfb8822){if(_0xfb8822){return _0x5d3fe0[_0xebe5('0x20')](_0xa20611);}return _0x5d3fe0[_0xebe5('0x21')](_0xa20611)[_0xebe5('0x22')]();};}function respondWithResult(_0x5c7fdd,_0x1a3357){_0x1a3357=_0x1a3357||0xc8;return function(_0x28a623){if(_0x28a623){return _0x5c7fdd['status'](_0x1a3357)['json'](_0x28a623);}};}function respondWithFilteredResult(_0x108524,_0x51d495){return function(_0x28c853){if(_0x28c853){var _0x5dd2d6=typeof _0x51d495['offset']===_0xebe5('0x23')&&typeof _0x51d495['limit']===_0xebe5('0x23');var _0x36ffd5=_0x28c853[_0xebe5('0x24')];var _0x537994=_0x5dd2d6?0x0:_0x51d495[_0xebe5('0x25')];var _0x45325c=_0x5dd2d6?_0x28c853[_0xebe5('0x24')]:_0x51d495[_0xebe5('0x25')]+_0x51d495['limit'];var _0x53d340;if(_0x45325c>=_0x36ffd5){_0x45325c=_0x36ffd5;_0x53d340=0xc8;}else{_0x53d340=0xce;}_0x108524[_0xebe5('0x21')](_0x53d340);return _0x108524[_0xebe5('0x26')](_0xebe5('0x27'),_0x537994+'-'+_0x45325c+'/'+_0x36ffd5)[_0xebe5('0x28')](_0x28c853);}return null;};}function patchUpdates(_0x219c26){return function(_0x4807fb){try{jsonpatch['apply'](_0x4807fb,_0x219c26,!![]);}catch(_0x227175){return BPromise[_0xebe5('0x29')](_0x227175);}return _0x4807fb[_0xebe5('0x2a')]();};}function saveUpdates(_0xb258db,_0x2a9ebf){return function(_0x3cfa28){if(_0x3cfa28){return _0x3cfa28['update'](_0xb258db)[_0xebe5('0x2b')](function(_0x1448ef){return _0x1448ef;});}return null;};}function removeEntity(_0xff157b,_0x50b872){return function(_0x4b1399){if(_0x4b1399){return _0x4b1399[_0xebe5('0x2c')]()[_0xebe5('0x2b')](function(){var _0x245da1=_0x4b1399['get']({'plain':!![]});var _0x194d70=_0xebe5('0x2d');return db[_0xebe5('0x2e')][_0xebe5('0x2c')]({'where':{'type':_0x194d70,'resourceId':_0x245da1['id']}})[_0xebe5('0x2b')](function(){return _0x4b1399;});})[_0xebe5('0x2b')](function(){_0xff157b['status'](0xcc)[_0xebe5('0x22')]();});}};}function handleEntityNotFound(_0x376ae2,_0x4f51a8){return function(_0x41f1e8){if(!_0x41f1e8){_0x376ae2['sendStatus'](0x194);}return _0x41f1e8;};}function handleError(_0x27e9f9,_0x2bd4a3){_0x2bd4a3=_0x2bd4a3||0x1f4;return function(_0x2fb762){logger['error'](_0x2fb762['stack']);if(_0x2fb762[_0xebe5('0x2f')]){delete _0x2fb762[_0xebe5('0x2f')];}_0x27e9f9['status'](_0x2bd4a3)[_0xebe5('0x30')](_0x2fb762);};}exports[_0xebe5('0x31')]=function(_0x4fcecb,_0x3a0991){var _0x97147c={},_0x1b362a={},_0xb66246={'count':0x0,'rows':[]};var _0x31cfc6=_[_0xebe5('0x32')](db[_0xebe5('0x33')]['rawAttributes'],function(_0x58120e){return{'name':_0x58120e[_0xebe5('0x34')],'type':_0x58120e['type']['key']};});_0x1b362a[_0xebe5('0x35')]=_[_0xebe5('0x32')](_0x31cfc6,_0xebe5('0x2f'));_0x1b362a['query']=_['keys'](_0x4fcecb[_0xebe5('0x36')]);_0x1b362a[_0xebe5('0x37')]=_[_0xebe5('0x38')](_0x1b362a[_0xebe5('0x35')],_0x1b362a[_0xebe5('0x36')]);_0x97147c[_0xebe5('0x39')]=_[_0xebe5('0x38')](_0x1b362a['model'],qs[_0xebe5('0x3a')](_0x4fcecb[_0xebe5('0x36')]['fields']));_0x97147c[_0xebe5('0x39')]=_0x97147c['attributes'][_0xebe5('0x3b')]?_0x97147c[_0xebe5('0x39')]:_0x1b362a[_0xebe5('0x35')];if(!_0x4fcecb[_0xebe5('0x36')][_0xebe5('0x3c')](_0xebe5('0x3d'))){_0x97147c[_0xebe5('0x3e')]=qs[_0xebe5('0x3e')](_0x4fcecb[_0xebe5('0x36')][_0xebe5('0x3e')]);_0x97147c['offset']=qs[_0xebe5('0x25')](_0x4fcecb[_0xebe5('0x36')][_0xebe5('0x25')]);}_0x97147c['order']=qs['sort'](_0x4fcecb[_0xebe5('0x36')]['sort']);_0x97147c[_0xebe5('0x3f')]=qs[_0xebe5('0x37')](_['pick'](_0x4fcecb[_0xebe5('0x36')],_0x1b362a[_0xebe5('0x37')]),_0x31cfc6);if(_0x4fcecb[_0xebe5('0x36')]['filter']){_0x97147c[_0xebe5('0x3f')]=_[_0xebe5('0x40')](_0x97147c[_0xebe5('0x3f')],{'$or':_[_0xebe5('0x32')](_0x31cfc6,function(_0x4136c8){if(_0x4136c8[_0xebe5('0x41')]!==_0xebe5('0x42')){var _0xa52e1e={};_0xa52e1e[_0x4136c8['name']]={'$like':'%'+_0x4fcecb['query'][_0xebe5('0x43')]+'%'};return _0xa52e1e;}})});}_0x97147c=_[_0xebe5('0x40')]({},_0x97147c,_0x4fcecb[_0xebe5('0x44')]);var _0x439853={'where':_0x97147c['where']};return db['FaxQueue'][_0xebe5('0x24')](_0x439853)[_0xebe5('0x2b')](function(_0xfa4ee7){_0xb66246['count']=_0xfa4ee7;if(_0x4fcecb[_0xebe5('0x36')][_0xebe5('0x45')]){_0x97147c[_0xebe5('0x46')]=[{'all':!![]}];}return db[_0xebe5('0x33')][_0xebe5('0x47')](_0x97147c);})['then'](function(_0x48591a){_0xb66246[_0xebe5('0x48')]=_0x48591a;return _0xb66246;})['then'](respondWithFilteredResult(_0x3a0991,_0x97147c))[_0xebe5('0x49')](handleError(_0x3a0991,null));};exports[_0xebe5('0x4a')]=function(_0x4ac67d,_0x3807dd){var _0x1d5c7d={'raw':!![],'where':{'id':_0x4ac67d[_0xebe5('0x4b')]['id']}},_0x16bae0={};_0x16bae0[_0xebe5('0x35')]=_[_0xebe5('0x4c')](db[_0xebe5('0x33')][_0xebe5('0x4d')]);_0x16bae0[_0xebe5('0x36')]=_[_0xebe5('0x4c')](_0x4ac67d['query']);_0x16bae0[_0xebe5('0x37')]=_[_0xebe5('0x38')](_0x16bae0[_0xebe5('0x35')],_0x16bae0['query']);_0x1d5c7d[_0xebe5('0x39')]=_[_0xebe5('0x38')](_0x16bae0[_0xebe5('0x35')],qs[_0xebe5('0x3a')](_0x4ac67d[_0xebe5('0x36')][_0xebe5('0x3a')]));_0x1d5c7d['attributes']=_0x1d5c7d['attributes']['length']?_0x1d5c7d['attributes']:_0x16bae0[_0xebe5('0x35')];if(_0x4ac67d[_0xebe5('0x36')][_0xebe5('0x45')]){_0x1d5c7d[_0xebe5('0x46')]=[{'all':!![]}];}_0x1d5c7d=_[_0xebe5('0x40')]({},_0x1d5c7d,_0x4ac67d[_0xebe5('0x44')]);return db[_0xebe5('0x33')][_0xebe5('0x4e')](_0x1d5c7d)['then'](handleEntityNotFound(_0x3807dd,null))['then'](respondWithResult(_0x3807dd,null))[_0xebe5('0x49')](handleError(_0x3807dd,null));};exports[_0xebe5('0x4f')]=function(_0x23daf3,_0x52159c){return db[_0xebe5('0x33')]['create'](_0x23daf3['body'],{})[_0xebe5('0x2b')](function(_0x1871f7){var _0x5b391a=_0x23daf3[_0xebe5('0x50')][_0xebe5('0x51')]({'plain':!![]});if(!_0x5b391a)throw new Error(_0xebe5('0x52'));if(_0x5b391a[_0xebe5('0x53')]===_0xebe5('0x50')){var _0x3a42a4=_0x1871f7[_0xebe5('0x51')]({'plain':!![]});var _0x424965=_0xebe5('0x2d');return db[_0xebe5('0x54')][_0xebe5('0x4e')]({'where':{'name':_0x424965,'userProfileId':_0x5b391a[_0xebe5('0x55')]},'raw':!![]})[_0xebe5('0x2b')](function(_0x9f1935){if(_0x9f1935&&_0x9f1935[_0xebe5('0x56')]===0x0){return db['UserProfileResource'][_0xebe5('0x4f')]({'name':_0x3a42a4[_0xebe5('0x2f')],'resourceId':_0x3a42a4['id'],'type':_0x9f1935[_0xebe5('0x2f')],'sectionId':_0x9f1935['id']},{})[_0xebe5('0x2b')](function(){return _0x1871f7;});}else{return _0x1871f7;}})[_0xebe5('0x49')](function(_0x106aae){logger[_0xebe5('0x57')](_0xebe5('0x58'),_0x106aae);throw _0x106aae;});}return _0x1871f7;})[_0xebe5('0x2b')](respondWithResult(_0x52159c,0xc9))[_0xebe5('0x49')](handleError(_0x52159c,null));};exports['update']=function(_0x35bc7f,_0x522068){if(_0x35bc7f['body']['id']){delete _0x35bc7f['body']['id'];}return db[_0xebe5('0x33')][_0xebe5('0x4e')]({'where':{'id':_0x35bc7f[_0xebe5('0x4b')]['id']}})['then'](handleEntityNotFound(_0x522068,null))[_0xebe5('0x2b')](saveUpdates(_0x35bc7f['body'],null))[_0xebe5('0x2b')](respondWithResult(_0x522068,null))[_0xebe5('0x49')](handleError(_0x522068,null));};exports['destroy']=function(_0x12bf0e,_0x343c5f){return db[_0xebe5('0x33')][_0xebe5('0x4e')]({'where':{'id':_0x12bf0e[_0xebe5('0x4b')]['id']}})[_0xebe5('0x2b')](handleEntityNotFound(_0x343c5f,null))['then'](removeEntity(_0x343c5f,null))[_0xebe5('0x49')](handleError(_0x343c5f,null));};exports['describe']=function(_0x183dd6,_0x4f6a12){return db[_0xebe5('0x33')][_0xebe5('0x59')]()[_0xebe5('0x2b')](respondWithResult(_0x4f6a12,null))[_0xebe5('0x49')](handleError(_0x4f6a12,null));};exports[_0xebe5('0x5a')]=function(_0x19c35f,_0x4bd0f7,_0x19eced){var _0xada0e4={'raw':!![],'where':{}},_0x24f379={},_0x1008db;return db[_0xebe5('0x33')][_0xebe5('0x5b')]({'where':{'id':_0x19c35f[_0xebe5('0x4b')]['id']}})[_0xebe5('0x2b')](handleEntityNotFound(_0x4bd0f7,null))[_0xebe5('0x2b')](function(_0x1d8417){if(_0x1d8417){_0x1008db=_0x1d8417[_0xebe5('0x51')]({'plain':!![]});_0x24f379[_0xebe5('0x35')]=_[_0xebe5('0x4c')](db[_0xebe5('0x5c')][_0xebe5('0x4d')]);_0x24f379['query']=_[_0xebe5('0x4c')](_0x19c35f['query']);_0x24f379[_0xebe5('0x37')]=_[_0xebe5('0x38')](_0x24f379[_0xebe5('0x35')],_0x24f379[_0xebe5('0x36')]);_0xada0e4[_0xebe5('0x39')]=_['intersection'](_0x24f379[_0xebe5('0x35')],qs[_0xebe5('0x3a')](_0x19c35f[_0xebe5('0x36')][_0xebe5('0x3a')]));_0xada0e4[_0xebe5('0x39')]=_0xada0e4[_0xebe5('0x39')]['length']?_0xada0e4[_0xebe5('0x39')]:_0x24f379[_0xebe5('0x35')];if(!_0x19c35f[_0xebe5('0x36')][_0xebe5('0x3c')](_0xebe5('0x3d'))){_0xada0e4['limit']=qs[_0xebe5('0x3e')](_0x19c35f[_0xebe5('0x36')][_0xebe5('0x3e')]);_0xada0e4[_0xebe5('0x25')]=qs['offset'](_0x19c35f[_0xebe5('0x36')][_0xebe5('0x25')]);}_0xada0e4[_0xebe5('0x5d')]=qs[_0xebe5('0x5e')](_0x19c35f[_0xebe5('0x36')]['sort']);_0xada0e4[_0xebe5('0x3f')]=qs[_0xebe5('0x37')](_[_0xebe5('0x5f')](_0x19c35f[_0xebe5('0x36')],_0x24f379[_0xebe5('0x37')]));_0xada0e4[_0xebe5('0x3f')]['FaxQueueId']=_0x1d8417['id'];if(_0x19c35f[_0xebe5('0x36')][_0xebe5('0x43')]){_0xada0e4['where']=_[_0xebe5('0x40')](_0xada0e4['where'],{'$or':_['map'](_0xada0e4[_0xebe5('0x39')],function(_0xa96cde){var _0x1deded={};_0x1deded[_0xa96cde]={'$like':'%'+_0x19c35f['query'][_0xebe5('0x43')]+'%'};return _0x1deded;})});}_0xada0e4=_[_0xebe5('0x40')]({},_0xada0e4,_0x19c35f[_0xebe5('0x44')]);return db[_0xebe5('0x5c')][_0xebe5('0x47')](_0xada0e4);}})[_0xebe5('0x2b')](function(_0x44fb45){if(_0x44fb45){return db[_0xebe5('0x60')]['findAndCountAll']({'where':{'id':_[_0xebe5('0x32')](_0x44fb45,_0xebe5('0x61')),'role':_0xebe5('0x62')},'attributes':['id','name',_0xebe5('0x63'),_0xebe5('0x64'),_0xebe5('0x65')]});}})['then'](function(_0x238589){if(_0x238589){return{'count':_0x238589[_0xebe5('0x24')],'rows':_[_0xebe5('0x32')](_0x238589['rows'],function(_0x4d3202){return{'membername':_0x4d3202['name'],'UserId':_0x4d3202['id'],'queue_name':_0x1008db['name'],'FaxQueueId':_0x1008db['id'],'interface':util[_0xebe5('0x66')](_0xebe5('0x67'),_0xebe5('0x68'),_0x4d3202[_0xebe5('0x2f')]),'penalty':0x0,'paused':_0x4d3202[_0xebe5('0x63')],'createdAt':_0x4d3202['createdAt'],'updatedAt':_0x4d3202[_0xebe5('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xebe5('0x2b')](respondWithFilteredResult(_0x4bd0f7,_0xada0e4))['catch'](handleError(_0x4bd0f7,null));};exports['getTeams']=function(_0x4b28f9,_0x5f4f1b,_0x5cbebb){var _0x3500bd={};var _0x38f0f4={};var _0x2bbf2e;var _0x391f50;return db['FaxQueue'][_0xebe5('0x5b')]({'where':{'id':_0x4b28f9[_0xebe5('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5f4f1b,null))[_0xebe5('0x2b')](function(_0x19b375){if(_0x19b375){_0x2bbf2e=_0x19b375;_0x38f0f4[_0xebe5('0x35')]=_[_0xebe5('0x4c')](db['Team'][_0xebe5('0x4d')]);_0x38f0f4[_0xebe5('0x36')]=_[_0xebe5('0x4c')](_0x4b28f9[_0xebe5('0x36')]);_0x38f0f4[_0xebe5('0x37')]=_[_0xebe5('0x38')](_0x38f0f4['model'],_0x38f0f4[_0xebe5('0x36')]);_0x3500bd['attributes']=_['intersection'](_0x38f0f4[_0xebe5('0x35')],qs[_0xebe5('0x3a')](_0x4b28f9[_0xebe5('0x36')][_0xebe5('0x3a')]));_0x3500bd[_0xebe5('0x39')]=_0x3500bd[_0xebe5('0x39')]['length']?_0x3500bd['attributes']:_0x38f0f4[_0xebe5('0x35')];_0x3500bd[_0xebe5('0x5d')]=qs['sort'](_0x4b28f9[_0xebe5('0x36')][_0xebe5('0x5e')]);_0x3500bd['where']=qs[_0xebe5('0x37')](_[_0xebe5('0x5f')](_0x4b28f9[_0xebe5('0x36')],_0x38f0f4[_0xebe5('0x37')]));if(_0x4b28f9[_0xebe5('0x36')][_0xebe5('0x43')]){_0x3500bd['where']=_[_0xebe5('0x40')](_0x3500bd['where'],{'$or':_[_0xebe5('0x32')](_0x3500bd['attributes'],function(_0x5e29d0){var _0x2961da={};_0x2961da[_0x5e29d0]={'$like':'%'+_0x4b28f9['query'][_0xebe5('0x43')]+'%'};return _0x2961da;})});}_0x3500bd=_['merge']({},_0x3500bd,_0x4b28f9[_0xebe5('0x44')]);return _0x2bbf2e['getTeams'](_0x3500bd);}})[_0xebe5('0x2b')](function(_0x7f4487){if(_0x7f4487){_0x391f50=_0x7f4487[_0xebe5('0x3b')];if(!_0x4b28f9[_0xebe5('0x36')][_0xebe5('0x3c')](_0xebe5('0x3d'))){_0x3500bd[_0xebe5('0x3e')]=qs[_0xebe5('0x3e')](_0x4b28f9[_0xebe5('0x36')][_0xebe5('0x3e')]);_0x3500bd[_0xebe5('0x25')]=qs['offset'](_0x4b28f9[_0xebe5('0x36')][_0xebe5('0x25')]);}return _0x2bbf2e[_0xebe5('0x69')](_0x3500bd);}})[_0xebe5('0x2b')](function(_0x34bba4){if(_0x34bba4){return _0x34bba4?{'count':_0x391f50,'rows':_0x34bba4}:null;}})[_0xebe5('0x2b')](respondWithResult(_0x5f4f1b,null))[_0xebe5('0x49')](handleError(_0x5f4f1b,null));};exports['addTeams']=function(_0x5f5da4,_0x21618f,_0x5515f8){var _0x31dfa0=_0x5f5da4[_0xebe5('0x6a')][_0xebe5('0x6b')];return db[_0xebe5('0x6c')][_0xebe5('0x47')]({'where':{'id':_0x31dfa0},'attributes':['id'],'include':[{'model':db['User'],'as':_0xebe5('0x6d'),'attributes':['id','name',_0xebe5('0x6e'),_0xebe5('0x6f'),_0xebe5('0x70')],'raw':!![]}]})[_0xebe5('0x2b')](function(_0x9332f){if(_0x9332f){var _0x281d09=_['flatMap'](_0x9332f,function(_0x4f2797){var _0x2ae025=_0x4f2797[_0xebe5('0x51')]({'plain':!![]});return _0x2ae025[_0xebe5('0x6d')];});return db[_0xebe5('0x33')]['find']({'where':{'id':_0x5f5da4['params']['id']}})[_0xebe5('0x2b')](function(_0x51fe30){return db[_0xebe5('0x71')][_0xebe5('0x72')](function(_0x5d634c){return _0x51fe30[_0xebe5('0x73')](_0x31dfa0,{'transaction':_0x5d634c})[_0xebe5('0x2b')](function(){return BPromise[_0xebe5('0x74')](_0x281d09,function(_0x1f9b61){return db[_0xebe5('0x5c')][_0xebe5('0x75')]({'where':{'UserId':_0x1f9b61['id'],'FaxQueueId':_0x5f5da4[_0xebe5('0x4b')]['id']},'transaction':_0x5d634c});});})['then'](function(){_0x281d09[_0xebe5('0x76')](function(_0x31e9f0){socket[_0xebe5('0x77')](_0xebe5('0x78'),{'UserId':_0x31e9f0['id'],'FaxQueueId':_0x51fe30['id']});});});});});}})[_0xebe5('0x2b')](respondWithStatusCode(_0x21618f,null))[_0xebe5('0x49')](handleError(_0x21618f,null));};exports['removeTeams']=function(_0x5110f9,_0x38de5c,_0x29435f){return db[_0xebe5('0x6c')]['findAll']({'where':{'id':_0x5110f9[_0xebe5('0x36')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0xebe5('0x6d'),'attributes':['id'],'raw':!![]}]})[_0xebe5('0x2b')](handleEntityNotFound(_0x38de5c,null))[_0xebe5('0x2b')](function(_0x23bef0){var _0x101532=_[_0xebe5('0x32')](_0x23bef0,'id');var _0x5d724f=[];var _0x433ed6=[];var _0x23d816=squel[_0xebe5('0x79')]();_0x23d816['field'](_0xebe5('0x7a'))[_0xebe5('0x7b')](_0xebe5('0x7c'),'tq')[_0xebe5('0x7d')](_0xebe5('0x7e'),'ut',_0xebe5('0x7f'))[_0xebe5('0x3f')](_0xebe5('0x80'),_0x5110f9[_0xebe5('0x4b')]['id']);for(var _0x456c77=0x0;_0x456c77<_0x23bef0[_0xebe5('0x3b')];_0x456c77+=0x1){let _0x4b38c5=_0x23bef0[_0x456c77];for(var _0x61c8a0=0x0;_0x61c8a0<_0x4b38c5['Agents'][_0xebe5('0x3b')];_0x61c8a0+=0x1){let _0x27aff4=_0x4b38c5[_0xebe5('0x6d')][_0x61c8a0];var _0x419588=_0x23d816[_0xebe5('0x81')]();_0x419588[_0xebe5('0x3f')](_0xebe5('0x82'),_0x27aff4['id']);_0x433ed6[_0xebe5('0x83')](db['sequelize']['query'](_0x419588[_0xebe5('0x84')](),{'type':db[_0xebe5('0x71')]['QueryTypes'][_0xebe5('0x85')]})[_0xebe5('0x2b')](function(_0x35c81e){if(_0x35c81e['length']===0x1){return _0x27aff4['id'];}else{var _0x4b1b17=_[_0xebe5('0x86')](_[_0xebe5('0x32')](_0x35c81e,_0xebe5('0x87')),function(_0x8a22cb){return _[_0xebe5('0x88')](_0x101532,_0x8a22cb);});if(_0x4b1b17){return _0x27aff4['id'];}}}));}}return BPromise[_0xebe5('0x89')](_0x433ed6)[_0xebe5('0x2b')](function(_0x191387){_0x5d724f=_(_0x5d724f)[_0xebe5('0x8a')](_0x191387)['compact']()[_0xebe5('0x8b')]();return db['FaxQueue'][_0xebe5('0x4e')]({'where':{'id':_0x5110f9[_0xebe5('0x4b')]['id']}})[_0xebe5('0x2b')](function(_0x5f1253){return db[_0xebe5('0x71')][_0xebe5('0x72')](function(_0x2b5040){return _0x5f1253[_0xebe5('0x8c')](_0x5110f9[_0xebe5('0x36')][_0xebe5('0x6b')],{'transaction':_0x2b5040})[_0xebe5('0x2b')](function(){if(!_[_0xebe5('0x8d')](_0x5d724f)){return _0x5f1253[_0xebe5('0x8e')](_0x5d724f,{'transaction':_0x2b5040});}})[_0xebe5('0x2b')](function(){_0x5d724f[_0xebe5('0x76')](function(_0x2ee739){socket['emit'](_0xebe5('0x8f'),{'UserId':_0x2ee739,'FaxQueueId':_0x5f1253['id']});});});});});});})['then'](respondWithStatusCode(_0x38de5c,null))['catch'](handleError(_0x38de5c,null));};exports[_0xebe5('0x90')]=function(_0x36e93e,_0x2bad59,_0x5303dc){return db[_0xebe5('0x33')][_0xebe5('0x4e')]({'where':{'id':_0x36e93e[_0xebe5('0x4b')]['id']}})[_0xebe5('0x2b')](handleEntityNotFound(_0x2bad59,null))[_0xebe5('0x2b')](function(_0x3d2586){if(_0x3d2586){return _0x3d2586[_0xebe5('0x90')](_0x36e93e[_0xebe5('0x6a')][_0xebe5('0x6b')],_[_0xebe5('0x91')](_0x36e93e['body'],[_0xebe5('0x6b'),'id'])||{})[_0xebe5('0x92')](function(_0x4ecc80){for(var _0x595fc7=0x0;_0x595fc7<_0x36e93e[_0xebe5('0x6a')]['ids'][_0xebe5('0x3b')];_0x595fc7+=0x1){socket[_0xebe5('0x77')](_0xebe5('0x78'),{'UserId':Number(_0x36e93e[_0xebe5('0x6a')]['ids'][_0x595fc7]),'FaxQueueId':Number(_0x36e93e[_0xebe5('0x4b')]['id'])});}return _0x4ecc80;});}})[_0xebe5('0x2b')](respondWithResult(_0x2bad59,null))['catch'](handleError(_0x2bad59,null));};exports[_0xebe5('0x8e')]=function(_0x16c889,_0x547e17,_0x5a89eb){return db[_0xebe5('0x33')][_0xebe5('0x4e')]({'where':{'id':_0x16c889[_0xebe5('0x4b')]['id']}})[_0xebe5('0x2b')](handleEntityNotFound(_0x547e17,null))[_0xebe5('0x2b')](function(_0x1b2676){if(_0x1b2676){return _0x1b2676[_0xebe5('0x8e')](_0x16c889[_0xebe5('0x36')][_0xebe5('0x6b')])[_0xebe5('0x2b')](function(){if(_['isArray'](_0x16c889[_0xebe5('0x36')][_0xebe5('0x6b')])){for(var _0x15c291=0x0;_0x15c291<_0x16c889[_0xebe5('0x36')][_0xebe5('0x6b')][_0xebe5('0x3b')];_0x15c291+=0x1){socket[_0xebe5('0x77')](_0xebe5('0x8f'),{'UserId':Number(_0x16c889['query']['ids'][_0x15c291]),'FaxQueueId':Number(_0x16c889[_0xebe5('0x4b')]['id'])});}}else{socket['emit'](_0xebe5('0x8f'),{'UserId':Number(_0x16c889[_0xebe5('0x36')]['ids']),'FaxQueueId':Number(_0x16c889[_0xebe5('0x4b')]['id'])});}});}})[_0xebe5('0x2b')](respondWithStatusCode(_0x547e17,null))[_0xebe5('0x49')](handleError(_0x547e17,null));};exports[_0xebe5('0x93')]=function(_0x3ecab5,_0x4bdbf2,_0x43a61b){var _0x43263b={};var _0xfea53f={};var _0x33be55;var _0xa8c259;return db[_0xebe5('0x33')][_0xebe5('0x5b')]({'where':{'id':_0x3ecab5[_0xebe5('0x4b')]['id']}})[_0xebe5('0x2b')](handleEntityNotFound(_0x4bdbf2,null))['then'](function(_0x4e97ee){if(_0x4e97ee){_0x33be55=_0x4e97ee;_0xfea53f[_0xebe5('0x35')]=_['keys'](db[_0xebe5('0x60')][_0xebe5('0x4d')]);_0xfea53f[_0xebe5('0x36')]=_[_0xebe5('0x4c')](_0x3ecab5[_0xebe5('0x36')]);_0xfea53f[_0xebe5('0x37')]=_[_0xebe5('0x38')](_0xfea53f[_0xebe5('0x35')],_0xfea53f[_0xebe5('0x36')]);_0x43263b[_0xebe5('0x39')]=_['intersection'](_0xfea53f['model'],qs['fields'](_0x3ecab5[_0xebe5('0x36')][_0xebe5('0x3a')]));_0x43263b[_0xebe5('0x39')]=_0x43263b[_0xebe5('0x39')][_0xebe5('0x3b')]?_0x43263b[_0xebe5('0x39')]:_0xfea53f['model'];_0x43263b['order']=qs[_0xebe5('0x5e')](_0x3ecab5['query'][_0xebe5('0x5e')]);_0x43263b['where']=qs[_0xebe5('0x37')](_[_0xebe5('0x5f')](_0x3ecab5[_0xebe5('0x36')],_0xfea53f[_0xebe5('0x37')]));if(_0x3ecab5[_0xebe5('0x36')][_0xebe5('0x43')]){_0x43263b[_0xebe5('0x3f')]=_['merge'](_0x43263b[_0xebe5('0x3f')],{'$or':_['map'](_0x43263b[_0xebe5('0x39')],function(_0x3dc00f){var _0x5ee525={};_0x5ee525[_0x3dc00f]={'$like':'%'+_0x3ecab5['query'][_0xebe5('0x43')]+'%'};return _0x5ee525;})});}_0x43263b=_['merge']({},_0x43263b,_0x3ecab5[_0xebe5('0x44')]);return _0x33be55[_0xebe5('0x93')](_0x43263b);}})[_0xebe5('0x2b')](function(_0x274137){if(_0x274137){_0xa8c259=_0x274137['length'];if(!_0x3ecab5['query'][_0xebe5('0x3c')]('nolimit')){_0x43263b[_0xebe5('0x3e')]=qs[_0xebe5('0x3e')](_0x3ecab5[_0xebe5('0x36')][_0xebe5('0x3e')]);_0x43263b[_0xebe5('0x25')]=qs['offset'](_0x3ecab5[_0xebe5('0x36')][_0xebe5('0x25')]);}return _0x33be55[_0xebe5('0x93')](_0x43263b);}})[_0xebe5('0x2b')](function(_0x22fa25){if(_0x22fa25){return _0x22fa25?{'count':_0xa8c259,'rows':_0x22fa25}:null;}})[_0xebe5('0x2b')](respondWithResult(_0x4bdbf2,null))[_0xebe5('0x49')](handleError(_0x4bdbf2,null));};
\ No newline at end of file
index 06515a4..e0017f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93fc=['update','remove','emit','hasOwnProperty','exports','events','FaxQueue','setMaxListeners','save'];(function(_0x57ecd1,_0x235ad9){var _0x3822c0=function(_0x58d817){while(--_0x58d817){_0x57ecd1['push'](_0x57ecd1['shift']());}};_0x3822c0(++_0x235ad9);}(_0x93fc,0x113));var _0xc93f=function(_0xa92161,_0x414646){_0xa92161=_0xa92161-0x0;var _0x5b3d19=_0x93fc[_0xa92161];return _0x5b3d19;};'use strict';var EventEmitter=require(_0xc93f('0x0'));var FaxQueue=require('../../mysqldb')['db'][_0xc93f('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xc93f('0x2')](0x0);var events={'afterCreate':_0xc93f('0x3'),'afterUpdate':_0xc93f('0x4'),'afterDestroy':_0xc93f('0x5')};function emitEvent(_0x103e90){return function(_0x229c28,_0x4b1b59,_0x3199ff){FaxQueueEvents['emit'](_0x103e90+':'+_0x229c28['id'],_0x229c28);FaxQueueEvents[_0xc93f('0x6')](_0x103e90,_0x229c28);_0x3199ff(null);};}for(var e in events){if(events[_0xc93f('0x7')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0xc93f('0x8')]=FaxQueueEvents;
\ No newline at end of file
+var _0x9626=['events','../../mysqldb','FaxQueue','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x1c2051,_0x4cb6b9){var _0x2b58a0=function(_0x4308df){while(--_0x4308df){_0x1c2051['push'](_0x1c2051['shift']());}};_0x2b58a0(++_0x4cb6b9);}(_0x9626,0x8c));var _0x6962=function(_0x41356d,_0x1340c9){_0x41356d=_0x41356d-0x0;var _0x2657f7=_0x9626[_0x41356d];return _0x2657f7;};'use strict';var EventEmitter=require(_0x6962('0x0'));var FaxQueue=require(_0x6962('0x1'))['db'][_0x6962('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x6962('0x3')](0x0);var events={'afterCreate':_0x6962('0x4'),'afterUpdate':_0x6962('0x5'),'afterDestroy':'remove'};function emitEvent(_0x77e9d0){return function(_0xc4a78d,_0x3c2312,_0x35f86e){FaxQueueEvents['emit'](_0x77e9d0+':'+_0xc4a78d['id'],_0xc4a78d);FaxQueueEvents[_0x6962('0x6')](_0x77e9d0,_0xc4a78d);_0x35f86e(null);};}for(var e in events){if(events[_0x6962('0x7')](e)){var event=events[e];FaxQueue[_0x6962('0x8')](e,emitEvent(event));}}module[_0x6962('0x9')]=FaxQueueEvents;
\ No newline at end of file
index 7be4afe..47bf75c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c07=['path','rimraf','../../config/environment','./faxQueue.attributes','exports','define','fax_queues','lodash','util','api','request-promise'];(function(_0x16dc94,_0x252b88){var _0x3947ac=function(_0x3e782e){while(--_0x3e782e){_0x16dc94['push'](_0x16dc94['shift']());}};_0x3947ac(++_0x252b88);}(_0x2c07,0x17d));var _0x72c0=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x2c07[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x72c0('0x0'));var util=require(_0x72c0('0x1'));var logger=require('../../config/logger')(_0x72c0('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x72c0('0x3'));var fs=require('fs');var path=require(_0x72c0('0x4'));var rimraf=require(_0x72c0('0x5'));var config=require(_0x72c0('0x6'));var attributes=require(_0x72c0('0x7'));module[_0x72c0('0x8')]=function(_0x11c6f1,_0x39bcbe){return _0x11c6f1[_0x72c0('0x9')]('FaxQueue',attributes,{'tableName':_0x72c0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1604=['FaxQueue','fax_queues','lodash','../../config/logger','moment','request-promise','./faxQueue.attributes','exports'];(function(_0x1ca580,_0x4ad35c){var _0x2a6bc4=function(_0xd26d73){while(--_0xd26d73){_0x1ca580['push'](_0x1ca580['shift']());}};_0x2a6bc4(++_0x4ad35c);}(_0x1604,0x122));var _0x4160=function(_0x59cfc9,_0x55c3b5){_0x59cfc9=_0x59cfc9-0x0;var _0x275ca5=_0x1604[_0x59cfc9];return _0x275ca5;};'use strict';var _=require(_0x4160('0x0'));var util=require('util');var logger=require(_0x4160('0x1'))('api');var moment=require(_0x4160('0x2'));var BPromise=require('bluebird');var rp=require(_0x4160('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4160('0x4'));module[_0x4160('0x5')]=function(_0x7d4a16,_0x138a51){return _0x7d4a16['define'](_0x4160('0x6'),attributes,{'tableName':_0x4160('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bf4218e..ea28057 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba3d=['findAll','options','raw','where','attributes','include','map','GetFaxQueue','catch','ShowFaxQueue','model','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./faxQueue.socket','register','request','then','info','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxQueue,\x20%s,\x20%s','message','result','FaxQueue'];(function(_0x16c711,_0x19c10d){var _0x43e423=function(_0x4db493){while(--_0x4db493){_0x16c711['push'](_0x16c711['shift']());}};_0x43e423(++_0x19c10d);}(_0xba3d,0xa3));var _0xdba3=function(_0xef8146,_0x459c34){_0xef8146=_0xef8146-0x0;var _0x5a6cb0=_0xba3d[_0xef8146];return _0x5a6cb0;};'use strict';var _=require(_0xdba3('0x0'));var util=require('util');var moment=require(_0xdba3('0x1'));var BPromise=require(_0xdba3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdba3('0x3'))['db'];var utils=require(_0xdba3('0x4'));var logger=require(_0xdba3('0x5'))('rpc');var config=require(_0xdba3('0x6'));var jayson=require(_0xdba3('0x7'));var client=jayson[_0xdba3('0x8')][_0xdba3('0x9')]({'port':0x232a});config[_0xdba3('0xa')]=_['defaults'](config[_0xdba3('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xdba3('0xb'))(new Redis(config[_0xdba3('0xa')]));require(_0xdba3('0xc'))[_0xdba3('0xd')](socket);function respondWithRpcPromise(_0x59445a,_0x279349,_0x27b7bb){return new BPromise(function(_0x2507ba,_0x3e1be8){return client[_0xdba3('0xe')](_0x59445a,_0x27b7bb)[_0xdba3('0xf')](function(_0x5dd321){logger[_0xdba3('0x10')]('FaxQueue,\x20%s,\x20%s',_0x279349,_0xdba3('0x11'));logger[_0xdba3('0x12')](_0xdba3('0x13'),_0x279349,_0xdba3('0x11'),JSON[_0xdba3('0x14')](_0x5dd321));if(_0x5dd321[_0xdba3('0x15')]){if(_0x5dd321[_0xdba3('0x15')][_0xdba3('0x16')]===0x1f4){logger[_0xdba3('0x15')](_0xdba3('0x17'),_0x279349,_0x5dd321['error'][_0xdba3('0x18')]);return _0x3e1be8(_0x5dd321['error']['message']);}logger[_0xdba3('0x15')](_0xdba3('0x17'),_0x279349,_0x5dd321['error'][_0xdba3('0x18')]);return _0x2507ba(_0x5dd321[_0xdba3('0x15')][_0xdba3('0x18')]);}else{logger['info'](_0xdba3('0x17'),_0x279349,_0xdba3('0x11'));_0x2507ba(_0x5dd321[_0xdba3('0x19')][_0xdba3('0x18')]);}})['catch'](function(_0x453b53){logger[_0xdba3('0x15')](_0xdba3('0x17'),_0x279349,_0x453b53);_0x3e1be8(_0x453b53);});});}exports['GetFaxQueue']=function(_0x25d655){var _0x1a619c=this;return new Promise(function(_0x31e938,_0x42f786){return db[_0xdba3('0x1a')][_0xdba3('0x1b')]({'raw':_0x25d655[_0xdba3('0x1c')]?_0x25d655['options'][_0xdba3('0x1d')]===undefined?!![]:![]:!![],'where':_0x25d655[_0xdba3('0x1c')]?_0x25d655[_0xdba3('0x1c')][_0xdba3('0x1e')]||null:null,'attributes':_0x25d655[_0xdba3('0x1c')]?_0x25d655['options'][_0xdba3('0x1f')]||null:null,'limit':_0x25d655[_0xdba3('0x1c')]?_0x25d655['options']['limit']||null:null,'include':_0x25d655[_0xdba3('0x1c')]?_0x25d655['options'][_0xdba3('0x20')]?_['map'](_0x25d655[_0xdba3('0x1c')][_0xdba3('0x20')],function(_0x4c0a8d){return{'model':db[_0x4c0a8d['model']],'as':_0x4c0a8d['as'],'attributes':_0x4c0a8d[_0xdba3('0x1f')],'include':_0x4c0a8d['include']?_['map'](_0x4c0a8d[_0xdba3('0x20')],function(_0x4ebaa2){return{'model':db[_0x4ebaa2['model']],'as':_0x4ebaa2['as'],'attributes':_0x4ebaa2[_0xdba3('0x1f')],'include':_0x4ebaa2[_0xdba3('0x20')]?_[_0xdba3('0x21')](_0x4ebaa2[_0xdba3('0x20')],function(_0x49ee72){return{'model':db[_0x49ee72['model']],'as':_0x49ee72['as'],'attributes':_0x49ee72[_0xdba3('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xdba3('0xf')](function(_0x4e9e72){logger[_0xdba3('0x10')]('GetFaxQueue',_0x25d655);logger[_0xdba3('0x12')](_0xdba3('0x22'),_0x25d655,JSON['stringify'](_0x4e9e72));_0x31e938(_0x4e9e72);})[_0xdba3('0x23')](function(_0x30de8f){logger[_0xdba3('0x15')](_0xdba3('0x22'),_0x30de8f['message'],_0x25d655);_0x42f786(_0x1a619c[_0xdba3('0x15')](0x1f4,_0x30de8f['message']));});});};exports[_0xdba3('0x24')]=function(_0x3cc72a){var _0x6eb909=this;return new Promise(function(_0x444889,_0x261170){return db[_0xdba3('0x1a')]['find']({'raw':_0x3cc72a[_0xdba3('0x1c')]?_0x3cc72a[_0xdba3('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x3cc72a[_0xdba3('0x1c')]?_0x3cc72a[_0xdba3('0x1c')]['where']||null:null,'attributes':_0x3cc72a[_0xdba3('0x1c')]?_0x3cc72a[_0xdba3('0x1c')]['attributes']||null:null,'include':_0x3cc72a['options']?_0x3cc72a[_0xdba3('0x1c')][_0xdba3('0x20')]?_[_0xdba3('0x21')](_0x3cc72a[_0xdba3('0x1c')]['include'],function(_0x65d48e){return{'model':db[_0x65d48e[_0xdba3('0x25')]],'as':_0x65d48e['as'],'attributes':_0x65d48e[_0xdba3('0x1f')],'include':_0x65d48e['include']?_[_0xdba3('0x21')](_0x65d48e[_0xdba3('0x20')],function(_0x472302){return{'model':db[_0x472302[_0xdba3('0x25')]],'as':_0x472302['as'],'attributes':_0x472302['attributes'],'include':_0x472302[_0xdba3('0x20')]?_[_0xdba3('0x21')](_0x472302[_0xdba3('0x20')],function(_0x1900b0){return{'model':db[_0x1900b0[_0xdba3('0x25')]],'as':_0x1900b0['as'],'attributes':_0x1900b0[_0xdba3('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3a6cd0){logger['info'](_0xdba3('0x24'),_0x3cc72a);logger['debug'](_0xdba3('0x24'),_0x3cc72a,JSON[_0xdba3('0x14')](_0x3a6cd0));_0x444889(_0x3a6cd0);})[_0xdba3('0x23')](function(_0x1dfe9e){logger[_0xdba3('0x15')](_0xdba3('0x24'),_0x1dfe9e[_0xdba3('0x18')],_0x3cc72a);_0x261170(_0x6eb909[_0xdba3('0x15')](0x1f4,_0x1dfe9e['message']));});});};
\ No newline at end of file
+var _0x1975=['then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','FaxQueue','findAll','options','raw','where','include','map','model','attributes','GetFaxQueue','catch','ShowFaxQueue','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./faxQueue.socket','register','request'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1975,0x1cf));var _0x5197=function(_0x70c97a,_0xd4d263){_0x70c97a=_0x70c97a-0x0;var _0x5cb362=_0x1975[_0x70c97a];return _0x5cb362;};'use strict';var _=require(_0x5197('0x0'));var util=require('util');var moment=require(_0x5197('0x1'));var BPromise=require(_0x5197('0x2'));var rs=require(_0x5197('0x3'));var fs=require('fs');var Redis=require(_0x5197('0x4'));var db=require(_0x5197('0x5'))['db'];var utils=require(_0x5197('0x6'));var logger=require('../../config/logger')(_0x5197('0x7'));var config=require(_0x5197('0x8'));var jayson=require(_0x5197('0x9'));var client=jayson[_0x5197('0xa')][_0x5197('0xb')]({'port':0x232a});config[_0x5197('0xc')]=_['defaults'](config['redis'],{'host':_0x5197('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5197('0xc')]));require(_0x5197('0xe'))[_0x5197('0xf')](socket);function respondWithRpcPromise(_0xe92ddb,_0x3d58bb,_0x25de36){return new BPromise(function(_0x3f8b35,_0xf5abbc){return client[_0x5197('0x10')](_0xe92ddb,_0x25de36)[_0x5197('0x11')](function(_0x4ae8d5){logger[_0x5197('0x12')](_0x5197('0x13'),_0x3d58bb,_0x5197('0x14'));logger[_0x5197('0x15')](_0x5197('0x16'),_0x3d58bb,_0x5197('0x14'),JSON[_0x5197('0x17')](_0x4ae8d5));if(_0x4ae8d5[_0x5197('0x18')]){if(_0x4ae8d5[_0x5197('0x18')][_0x5197('0x19')]===0x1f4){logger[_0x5197('0x18')](_0x5197('0x13'),_0x3d58bb,_0x4ae8d5[_0x5197('0x18')][_0x5197('0x1a')]);return _0xf5abbc(_0x4ae8d5[_0x5197('0x18')][_0x5197('0x1a')]);}logger[_0x5197('0x18')](_0x5197('0x13'),_0x3d58bb,_0x4ae8d5[_0x5197('0x18')][_0x5197('0x1a')]);return _0x3f8b35(_0x4ae8d5['error'][_0x5197('0x1a')]);}else{logger[_0x5197('0x12')](_0x5197('0x13'),_0x3d58bb,_0x5197('0x14'));_0x3f8b35(_0x4ae8d5[_0x5197('0x1b')]['message']);}})['catch'](function(_0xa4e33){logger[_0x5197('0x18')](_0x5197('0x13'),_0x3d58bb,_0xa4e33);_0xf5abbc(_0xa4e33);});});}exports['GetFaxQueue']=function(_0xb11813){var _0x233e26=this;return new Promise(function(_0x5edc2c,_0x5e0f51){return db[_0x5197('0x1c')][_0x5197('0x1d')]({'raw':_0xb11813[_0x5197('0x1e')]?_0xb11813[_0x5197('0x1e')][_0x5197('0x1f')]===undefined?!![]:![]:!![],'where':_0xb11813[_0x5197('0x1e')]?_0xb11813[_0x5197('0x1e')][_0x5197('0x20')]||null:null,'attributes':_0xb11813[_0x5197('0x1e')]?_0xb11813[_0x5197('0x1e')]['attributes']||null:null,'limit':_0xb11813[_0x5197('0x1e')]?_0xb11813[_0x5197('0x1e')]['limit']||null:null,'include':_0xb11813[_0x5197('0x1e')]?_0xb11813[_0x5197('0x1e')][_0x5197('0x21')]?_[_0x5197('0x22')](_0xb11813[_0x5197('0x1e')][_0x5197('0x21')],function(_0x509a57){return{'model':db[_0x509a57[_0x5197('0x23')]],'as':_0x509a57['as'],'attributes':_0x509a57['attributes'],'include':_0x509a57[_0x5197('0x21')]?_[_0x5197('0x22')](_0x509a57[_0x5197('0x21')],function(_0xdfa54c){return{'model':db[_0xdfa54c[_0x5197('0x23')]],'as':_0xdfa54c['as'],'attributes':_0xdfa54c['attributes'],'include':_0xdfa54c[_0x5197('0x21')]?_['map'](_0xdfa54c[_0x5197('0x21')],function(_0x684d2c){return{'model':db[_0x684d2c[_0x5197('0x23')]],'as':_0x684d2c['as'],'attributes':_0x684d2c[_0x5197('0x24')]};}):[]};}):[]};}):[]:[]})[_0x5197('0x11')](function(_0x3a6f25){logger['info'](_0x5197('0x25'),_0xb11813);logger[_0x5197('0x15')](_0x5197('0x25'),_0xb11813,JSON['stringify'](_0x3a6f25));_0x5edc2c(_0x3a6f25);})[_0x5197('0x26')](function(_0x4bdebf){logger[_0x5197('0x18')](_0x5197('0x25'),_0x4bdebf[_0x5197('0x1a')],_0xb11813);_0x5e0f51(_0x233e26[_0x5197('0x18')](0x1f4,_0x4bdebf[_0x5197('0x1a')]));});});};exports[_0x5197('0x27')]=function(_0x19a99a){var _0x2f58a2=this;return new Promise(function(_0x1a1e39,_0x243c3d){return db[_0x5197('0x1c')]['find']({'raw':_0x19a99a[_0x5197('0x1e')]?_0x19a99a[_0x5197('0x1e')][_0x5197('0x1f')]===undefined?!![]:![]:!![],'where':_0x19a99a[_0x5197('0x1e')]?_0x19a99a[_0x5197('0x1e')]['where']||null:null,'attributes':_0x19a99a[_0x5197('0x1e')]?_0x19a99a[_0x5197('0x1e')][_0x5197('0x24')]||null:null,'include':_0x19a99a[_0x5197('0x1e')]?_0x19a99a[_0x5197('0x1e')]['include']?_[_0x5197('0x22')](_0x19a99a[_0x5197('0x1e')][_0x5197('0x21')],function(_0x426b28){return{'model':db[_0x426b28[_0x5197('0x23')]],'as':_0x426b28['as'],'attributes':_0x426b28[_0x5197('0x24')],'include':_0x426b28['include']?_[_0x5197('0x22')](_0x426b28[_0x5197('0x21')],function(_0x36cd41){return{'model':db[_0x36cd41[_0x5197('0x23')]],'as':_0x36cd41['as'],'attributes':_0x36cd41[_0x5197('0x24')],'include':_0x36cd41['include']?_[_0x5197('0x22')](_0x36cd41[_0x5197('0x21')],function(_0x17b8f4){return{'model':db[_0x17b8f4['model']],'as':_0x17b8f4['as'],'attributes':_0x17b8f4[_0x5197('0x24')]};}):[]};}):[]};}):[]:[]})[_0x5197('0x11')](function(_0x3ad8a1){logger['info'](_0x5197('0x27'),_0x19a99a);logger['debug']('ShowFaxQueue',_0x19a99a,JSON[_0x5197('0x17')](_0x3ad8a1));_0x1a1e39(_0x3ad8a1);})[_0x5197('0x26')](function(_0x2c2bd1){logger['error'](_0x5197('0x27'),_0x2c2bd1[_0x5197('0x1a')],_0x19a99a);_0x243c3d(_0x2f58a2[_0x5197('0x18')](0x1f4,_0x2c2bd1[_0x5197('0x1a')]));});});};
\ No newline at end of file
index 698cd46..6681e36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19ef=['register','length','faxQueue:','./faxQueue.events','update','emit','removeListener'];(function(_0x57bfb7,_0x4af626){var _0x147a93=function(_0x124b35){while(--_0x124b35){_0x57bfb7['push'](_0x57bfb7['shift']());}};_0x147a93(++_0x4af626);}(_0x19ef,0xea));var _0xf19e=function(_0x125d54,_0x1952f2){_0x125d54=_0x125d54-0x0;var _0x54d27f=_0x19ef[_0x125d54];return _0x54d27f;};'use strict';var FaxQueueEvents=require(_0xf19e('0x0'));var events=['save','remove',_0xf19e('0x1')];function createListener(_0xac1bf8,_0x44bb92){return function(_0x232c8a){_0x44bb92[_0xf19e('0x2')](_0xac1bf8,_0x232c8a);};}function removeListener(_0x5a57f8,_0x4a603e){return function(){FaxQueueEvents[_0xf19e('0x3')](_0x5a57f8,_0x4a603e);};}exports[_0xf19e('0x4')]=function(_0xff8def){for(var _0x12d8f3=0x0,_0x31ff9a=events[_0xf19e('0x5')];_0x12d8f3<_0x31ff9a;_0x12d8f3++){var _0x549633=events[_0x12d8f3];var _0x1c7426=createListener(_0xf19e('0x6')+_0x549633,_0xff8def);FaxQueueEvents['on'](_0x549633,_0x1c7426);}};
\ No newline at end of file
+var _0xbc61=['length','faxQueue:','./faxQueue.events','save','remove','update','emit','removeListener','register'];(function(_0x45a9a7,_0x190213){var _0xcd7892=function(_0x415487){while(--_0x415487){_0x45a9a7['push'](_0x45a9a7['shift']());}};_0xcd7892(++_0x190213);}(_0xbc61,0x1b2));var _0x1bc6=function(_0x302446,_0xd05642){_0x302446=_0x302446-0x0;var _0x3634a0=_0xbc61[_0x302446];return _0x3634a0;};'use strict';var FaxQueueEvents=require(_0x1bc6('0x0'));var events=[_0x1bc6('0x1'),_0x1bc6('0x2'),_0x1bc6('0x3')];function createListener(_0x5ad531,_0x20d016){return function(_0x5945ee){_0x20d016[_0x1bc6('0x4')](_0x5ad531,_0x5945ee);};}function removeListener(_0x2416a1,_0x571edc){return function(){FaxQueueEvents[_0x1bc6('0x5')](_0x2416a1,_0x571edc);};}exports[_0x1bc6('0x6')]=function(_0x23c00e){for(var _0x15da49=0x0,_0x51c8c7=events[_0x1bc6('0x7')];_0x15da49<_0x51c8c7;_0x15da49++){var _0xeb728e=events[_0x15da49];var _0x3112bc=createListener(_0x1bc6('0x8')+_0xeb728e,_0x23c00e);FaxQueueEvents['on'](_0xeb728e,_0x3112bc);}};
\ No newline at end of file
index fb36530..021e0f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd481=['create','addTeams','put','delete','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0xd481,0x1e4));var _0x1d48=function(_0x450468,_0x1f2655){_0x450468=_0x450468-0x0;var _0xbe24dc=_0xd481[_0x450468];return _0xbe24dc;};'use strict';var multer=require(_0x1d48('0x0'));var util=require('util');var path=require(_0x1d48('0x1'));var timeout=require(_0x1d48('0x2'));var express=require('express');var router=express[_0x1d48('0x3')]();var fs_extra=require(_0x1d48('0x4'));var auth=require(_0x1d48('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1d48('0x6'));var controller=require('./faxQueue.controller');router[_0x1d48('0x7')]('/',auth[_0x1d48('0x8')](),controller['index']);router[_0x1d48('0x7')](_0x1d48('0x9'),auth[_0x1d48('0x8')](),controller[_0x1d48('0xa')]);router[_0x1d48('0x7')](_0x1d48('0xb'),auth[_0x1d48('0x8')](),controller[_0x1d48('0xc')]);router[_0x1d48('0x7')](_0x1d48('0xd'),auth[_0x1d48('0x8')](),controller[_0x1d48('0xe')]);router['get'](_0x1d48('0xf'),auth[_0x1d48('0x8')](),controller[_0x1d48('0x10')]);router[_0x1d48('0x7')](_0x1d48('0x11'),auth[_0x1d48('0x8')](),controller[_0x1d48('0x12')]);router[_0x1d48('0x13')]('/',auth[_0x1d48('0x8')](),controller[_0x1d48('0x14')]);router['post'](_0x1d48('0xf'),auth['isAuthenticated'](),controller[_0x1d48('0x15')]);router[_0x1d48('0x13')](_0x1d48('0x11'),auth[_0x1d48('0x8')](),controller['addAgents']);router[_0x1d48('0x16')](_0x1d48('0xb'),auth[_0x1d48('0x8')](),controller['update']);router[_0x1d48('0x17')](_0x1d48('0xb'),auth[_0x1d48('0x8')](),controller[_0x1d48('0x18')]);router[_0x1d48('0x17')](_0x1d48('0xf'),auth[_0x1d48('0x8')](),controller[_0x1d48('0x19')]);router[_0x1d48('0x17')]('/:id/users',auth['isAuthenticated'](),controller[_0x1d48('0x1a')]);module[_0x1d48('0x1b')]=router;
\ No newline at end of file
+var _0x4317=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','index','get','/describe','isAuthenticated','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','destroy','delete','removeTeams','removeAgents','exports'];(function(_0x3dd604,_0xa7cf6b){var _0x13825b=function(_0x3f3d18){while(--_0x3f3d18){_0x3dd604['push'](_0x3dd604['shift']());}};_0x13825b(++_0xa7cf6b);}(_0x4317,0x7c));var _0x7431=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x4317[_0x3947c9];return _0x2e7871;};'use strict';var multer=require('multer');var util=require(_0x7431('0x0'));var path=require(_0x7431('0x1'));var timeout=require(_0x7431('0x2'));var express=require('express');var router=express[_0x7431('0x3')]();var fs_extra=require(_0x7431('0x4'));var auth=require(_0x7431('0x5'));var interaction=require(_0x7431('0x6'));var config=require(_0x7431('0x7'));var controller=require(_0x7431('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x7431('0x9')]);router[_0x7431('0xa')](_0x7431('0xb'),auth[_0x7431('0xc')](),controller[_0x7431('0xd')]);router[_0x7431('0xa')](_0x7431('0xe'),auth[_0x7431('0xc')](),controller[_0x7431('0xf')]);router[_0x7431('0xa')](_0x7431('0x10'),auth[_0x7431('0xc')](),controller[_0x7431('0x11')]);router[_0x7431('0xa')](_0x7431('0x12'),auth[_0x7431('0xc')](),controller[_0x7431('0x13')]);router[_0x7431('0xa')](_0x7431('0x14'),auth[_0x7431('0xc')](),controller[_0x7431('0x15')]);router[_0x7431('0x16')]('/',auth[_0x7431('0xc')](),controller[_0x7431('0x17')]);router['post'](_0x7431('0x12'),auth[_0x7431('0xc')](),controller[_0x7431('0x18')]);router['post'](_0x7431('0x14'),auth[_0x7431('0xc')](),controller[_0x7431('0x19')]);router['put'](_0x7431('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x7431('0xe'),auth[_0x7431('0xc')](),controller[_0x7431('0x1a')]);router[_0x7431('0x1b')]('/:id/teams',auth['isAuthenticated'](),controller[_0x7431('0x1c')]);router[_0x7431('0x1b')](_0x7431('0x14'),auth[_0x7431('0xc')](),controller[_0x7431('0x1d')]);module[_0x7431('0x1e')]=router;
\ No newline at end of file
index 8d60de7..9c79f35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00af=['STRING','DATE','exports'];(function(_0x393d1e,_0x3d52ae){var _0x1da653=function(_0xefa197){while(--_0xefa197){_0x393d1e['push'](_0x393d1e['shift']());}};_0x1da653(++_0x3d52ae);}(_0x00af,0xd7));var _0xf00a=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x00af[_0x19e35c];return _0x3e1fe8;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0xf00a('0x0')]={'uniqueid':{'type':Sequelize[_0xf00a('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xf00a('0x1')]},'joinAt':{'type':Sequelize[_0xf00a('0x2')]},'leaveAt':{'type':Sequelize[_0xf00a('0x2')]},'acceptAt':{'type':Sequelize[_0xf00a('0x2')]},'exitAt':{'type':Sequelize[_0xf00a('0x2')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0faf=['STRING','DATE','moment','exports'];(function(_0x317371,_0x2e8517){var _0x324a0f=function(_0x13e6ed){while(--_0x13e6ed){_0x317371['push'](_0x317371['shift']());}};_0x324a0f(++_0x2e8517);}(_0x0faf,0x132));var _0xf0fa=function(_0x77773a,_0x5a7026){_0x77773a=_0x77773a-0x0;var _0x1091a2=_0x0faf[_0x77773a];return _0x1091a2;};'use strict';var moment=require(_0xf0fa('0x0'));var Sequelize=require('sequelize');module[_0xf0fa('0x1')]={'uniqueid':{'type':Sequelize[_0xf0fa('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xf0fa('0x2')]},'joinAt':{'type':Sequelize[_0xf0fa('0x3')]},'leaveAt':{'type':Sequelize[_0xf0fa('0x3')]},'acceptAt':{'type':Sequelize[_0xf0fa('0x3')]},'exitAt':{'type':Sequelize[_0xf0fa('0x3')]},'reason':{'type':Sequelize[_0xf0fa('0x2')]}};
\ No newline at end of file
index 5a1c849..511caeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdecb=['rows','catch','keys','find','body','params','describe','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','name','send','index','map','FaxQueueReport','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include'];(function(_0x10f10b,_0x647c46){var _0x3f45db=function(_0x8bba40){while(--_0x8bba40){_0x10f10b['push'](_0x10f10b['shift']());}};_0x3f45db(++_0x647c46);}(_0xdecb,0xe2));var _0xbdec=function(_0x5cb817,_0x191e02){_0x5cb817=_0x5cb817-0x0;var _0x42870f=_0xdecb[_0x5cb817];return _0x42870f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbdec('0x0'));var zipdir=require(_0xbdec('0x1'));var jsonpatch=require(_0xbdec('0x2'));var rp=require('request-promise');var moment=require(_0xbdec('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xbdec('0x4'));var util=require(_0xbdec('0x5'));var path=require(_0xbdec('0x6'));var sox=require(_0xbdec('0x7'));var csv=require(_0xbdec('0x8'));var ejs=require(_0xbdec('0x9'));var fs=require('fs');var fs_extra=require(_0xbdec('0xa'));var _=require('lodash');var squel=require(_0xbdec('0xb'));var crypto=require(_0xbdec('0xc'));var jsforce=require(_0xbdec('0xd'));var deskjs=require(_0xbdec('0xe'));var toCsv=require(_0xbdec('0x8'));var querystring=require(_0xbdec('0xf'));var Papa=require(_0xbdec('0x10'));var Redis=require(_0xbdec('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xbdec('0x12'));var as=require(_0xbdec('0x13'));var hardwareService=require(_0xbdec('0x14'));var logger=require(_0xbdec('0x15'))('api');var utils=require(_0xbdec('0x16'));var config=require(_0xbdec('0x17'));var licenseUtil=require(_0xbdec('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23e7b1,_0xad1fc2){_0xad1fc2=_0xad1fc2||0xcc;return function(_0x1c6082){if(_0x1c6082){return _0x23e7b1[_0xbdec('0x19')](_0xad1fc2);}return _0x23e7b1[_0xbdec('0x1a')](_0xad1fc2)[_0xbdec('0x1b')]();};}function respondWithResult(_0x102bf3,_0x12ce2d){_0x12ce2d=_0x12ce2d||0xc8;return function(_0x37c79a){if(_0x37c79a){return _0x102bf3[_0xbdec('0x1a')](_0x12ce2d)[_0xbdec('0x1c')](_0x37c79a);}};}function respondWithFilteredResult(_0x36f697,_0x577c2e){return function(_0x1a34ef){if(_0x1a34ef){var _0x358b6f=typeof _0x577c2e[_0xbdec('0x1d')]===_0xbdec('0x1e')&&typeof _0x577c2e[_0xbdec('0x1f')]===_0xbdec('0x1e');var _0x31a62d=_0x1a34ef[_0xbdec('0x20')];var _0x2b9288=_0x358b6f?0x0:_0x577c2e['offset'];var _0x1206b8=_0x358b6f?_0x1a34ef['count']:_0x577c2e['offset']+_0x577c2e[_0xbdec('0x1f')];var _0x11ea74;if(_0x1206b8>=_0x31a62d){_0x1206b8=_0x31a62d;_0x11ea74=0xc8;}else{_0x11ea74=0xce;}_0x36f697[_0xbdec('0x1a')](_0x11ea74);return _0x36f697[_0xbdec('0x21')](_0xbdec('0x22'),_0x2b9288+'-'+_0x1206b8+'/'+_0x31a62d)['json'](_0x1a34ef);}return null;};}function patchUpdates(_0x34c8f6){return function(_0x5d0711){try{jsonpatch[_0xbdec('0x23')](_0x5d0711,_0x34c8f6,!![]);}catch(_0x5360e8){return BPromise['reject'](_0x5360e8);}return _0x5d0711[_0xbdec('0x24')]();};}function saveUpdates(_0x520e5a,_0x3ba757){return function(_0x5082bb){if(_0x5082bb){return _0x5082bb[_0xbdec('0x25')](_0x520e5a)[_0xbdec('0x26')](function(_0x26a219){return _0x26a219;});}return null;};}function removeEntity(_0x25a0c6,_0x1a93e1){return function(_0x490d22){if(_0x490d22){return _0x490d22[_0xbdec('0x27')]()[_0xbdec('0x26')](function(){_0x25a0c6[_0xbdec('0x1a')](0xcc)[_0xbdec('0x1b')]();});}};}function handleEntityNotFound(_0x45eb56,_0x44e7f7){return function(_0x1d6ed2){if(!_0x1d6ed2){_0x45eb56[_0xbdec('0x19')](0x194);}return _0x1d6ed2;};}function handleError(_0xad0981,_0x4d1df4){_0x4d1df4=_0x4d1df4||0x1f4;return function(_0x5aae12){logger['error'](_0x5aae12['stack']);if(_0x5aae12[_0xbdec('0x28')]){delete _0x5aae12[_0xbdec('0x28')];}_0xad0981[_0xbdec('0x1a')](_0x4d1df4)[_0xbdec('0x29')](_0x5aae12);};}exports[_0xbdec('0x2a')]=function(_0x516087,_0x1c1f28){var _0x710f95={},_0x11c971={},_0x3373c0={'count':0x0,'rows':[]};var _0x58d285=_[_0xbdec('0x2b')](db[_0xbdec('0x2c')][_0xbdec('0x2d')],function(_0x17441d){return{'name':_0x17441d['fieldName'],'type':_0x17441d[_0xbdec('0x2e')][_0xbdec('0x2f')]};});_0x11c971[_0xbdec('0x30')]=_['map'](_0x58d285,_0xbdec('0x28'));_0x11c971['query']=_['keys'](_0x516087[_0xbdec('0x31')]);_0x11c971[_0xbdec('0x32')]=_['intersection'](_0x11c971['model'],_0x11c971[_0xbdec('0x31')]);_0x710f95[_0xbdec('0x33')]=_[_0xbdec('0x34')](_0x11c971[_0xbdec('0x30')],qs[_0xbdec('0x35')](_0x516087[_0xbdec('0x31')]['fields']));_0x710f95['attributes']=_0x710f95[_0xbdec('0x33')][_0xbdec('0x36')]?_0x710f95[_0xbdec('0x33')]:_0x11c971[_0xbdec('0x30')];if(!_0x516087['query'][_0xbdec('0x37')](_0xbdec('0x38'))){_0x710f95['limit']=qs[_0xbdec('0x1f')](_0x516087['query'][_0xbdec('0x1f')]);_0x710f95[_0xbdec('0x1d')]=qs['offset'](_0x516087['query'][_0xbdec('0x1d')]);}_0x710f95['order']=qs[_0xbdec('0x39')](_0x516087[_0xbdec('0x31')][_0xbdec('0x39')]);_0x710f95[_0xbdec('0x3a')]=qs[_0xbdec('0x32')](_[_0xbdec('0x3b')](_0x516087['query'],_0x11c971[_0xbdec('0x32')]),_0x58d285);if(_0x516087['query']['filter']){_0x710f95[_0xbdec('0x3a')]=_[_0xbdec('0x3c')](_0x710f95[_0xbdec('0x3a')],{'$or':_[_0xbdec('0x2b')](_0x58d285,function(_0x44b2fa){if(_0x44b2fa['type']!==_0xbdec('0x3d')){var _0x426a99={};_0x426a99[_0x44b2fa[_0xbdec('0x28')]]={'$like':'%'+_0x516087[_0xbdec('0x31')][_0xbdec('0x3e')]+'%'};return _0x426a99;}})});}_0x710f95=_[_0xbdec('0x3c')]({},_0x710f95,_0x516087[_0xbdec('0x3f')]);var _0x421ca5={'where':_0x710f95[_0xbdec('0x3a')]};return db[_0xbdec('0x2c')][_0xbdec('0x20')](_0x421ca5)['then'](function(_0x2b66fa){_0x3373c0[_0xbdec('0x20')]=_0x2b66fa;if(_0x516087[_0xbdec('0x31')][_0xbdec('0x40')]){_0x710f95[_0xbdec('0x41')]=[{'all':!![]}];}return db[_0xbdec('0x2c')]['findAll'](_0x710f95);})['then'](function(_0x43828b){_0x3373c0[_0xbdec('0x42')]=_0x43828b;return _0x3373c0;})[_0xbdec('0x26')](respondWithFilteredResult(_0x1c1f28,_0x710f95))[_0xbdec('0x43')](handleError(_0x1c1f28,null));};exports['show']=function(_0x4b0451,_0x127e65){var _0x2822fa={'raw':!![],'where':{'id':_0x4b0451['params']['id']}},_0x167f9f={};_0x167f9f[_0xbdec('0x30')]=_[_0xbdec('0x44')](db['FaxQueueReport'][_0xbdec('0x2d')]);_0x167f9f[_0xbdec('0x31')]=_[_0xbdec('0x44')](_0x4b0451[_0xbdec('0x31')]);_0x167f9f[_0xbdec('0x32')]=_[_0xbdec('0x34')](_0x167f9f[_0xbdec('0x30')],_0x167f9f[_0xbdec('0x31')]);_0x2822fa[_0xbdec('0x33')]=_[_0xbdec('0x34')](_0x167f9f[_0xbdec('0x30')],qs[_0xbdec('0x35')](_0x4b0451[_0xbdec('0x31')][_0xbdec('0x35')]));_0x2822fa[_0xbdec('0x33')]=_0x2822fa['attributes'][_0xbdec('0x36')]?_0x2822fa[_0xbdec('0x33')]:_0x167f9f[_0xbdec('0x30')];if(_0x4b0451[_0xbdec('0x31')]['includeAll']){_0x2822fa[_0xbdec('0x41')]=[{'all':!![]}];}_0x2822fa=_['merge']({},_0x2822fa,_0x4b0451[_0xbdec('0x3f')]);return db['FaxQueueReport'][_0xbdec('0x45')](_0x2822fa)[_0xbdec('0x26')](handleEntityNotFound(_0x127e65,null))['then'](respondWithResult(_0x127e65,null))['catch'](handleError(_0x127e65,null));};exports['create']=function(_0x75e4e4,_0x42d130){return db[_0xbdec('0x2c')]['create'](_0x75e4e4[_0xbdec('0x46')],{})[_0xbdec('0x26')](respondWithResult(_0x42d130,0xc9))[_0xbdec('0x43')](handleError(_0x42d130,null));};exports[_0xbdec('0x25')]=function(_0x708d93,_0x2400a0){if(_0x708d93['body']['id']){delete _0x708d93['body']['id'];}return db[_0xbdec('0x2c')][_0xbdec('0x45')]({'where':{'id':_0x708d93[_0xbdec('0x47')]['id']}})[_0xbdec('0x26')](handleEntityNotFound(_0x2400a0,null))[_0xbdec('0x26')](saveUpdates(_0x708d93[_0xbdec('0x46')],null))[_0xbdec('0x26')](respondWithResult(_0x2400a0,null))['catch'](handleError(_0x2400a0,null));};exports[_0xbdec('0x27')]=function(_0x92cca0,_0x2410fb){return db[_0xbdec('0x2c')][_0xbdec('0x45')]({'where':{'id':_0x92cca0[_0xbdec('0x47')]['id']}})[_0xbdec('0x26')](handleEntityNotFound(_0x2410fb,null))[_0xbdec('0x26')](removeEntity(_0x2410fb,null))[_0xbdec('0x43')](handleError(_0x2410fb,null));};exports[_0xbdec('0x48')]=function(_0x225536,_0x4451c7){return db[_0xbdec('0x2c')][_0xbdec('0x48')]()[_0xbdec('0x26')](respondWithResult(_0x4451c7,null))['catch'](handleError(_0x4451c7,null));};
\ No newline at end of file
+var _0x6584=['merge','includeAll','rows','catch','show','params','length','include','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','undefined','count','offset','set','Content-Range','json','apply','reject','update','then','end','error','stack','name','index','map','FaxQueueReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','pick','filter','type'];(function(_0x196d14,_0x8a3251){var _0x506a10=function(_0x591256){while(--_0x591256){_0x196d14['push'](_0x196d14['shift']());}};_0x506a10(++_0x8a3251);}(_0x6584,0x175));var _0x4658=function(_0x4d07cc,_0x587613){_0x4d07cc=_0x4d07cc-0x0;var _0x42de3b=_0x6584[_0x4d07cc];return _0x42de3b;};'use strict';var emlformat=require(_0x4658('0x0'));var rimraf=require(_0x4658('0x1'));var zipdir=require(_0x4658('0x2'));var jsonpatch=require(_0x4658('0x3'));var rp=require('request-promise');var moment=require(_0x4658('0x4'));var BPromise=require(_0x4658('0x5'));var Mustache=require(_0x4658('0x6'));var util=require('util');var path=require('path');var sox=require(_0x4658('0x7'));var csv=require(_0x4658('0x8'));var ejs=require(_0x4658('0x9'));var fs=require('fs');var fs_extra=require(_0x4658('0xa'));var _=require(_0x4658('0xb'));var squel=require('squel');var crypto=require(_0x4658('0xc'));var jsforce=require(_0x4658('0xd'));var deskjs=require(_0x4658('0xe'));var toCsv=require('to-csv');var querystring=require(_0x4658('0xf'));var Papa=require(_0x4658('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4658('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4658('0x12'));var logger=require('../../config/logger')(_0x4658('0x13'));var utils=require('../../config/utils');var config=require(_0x4658('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x4658('0x15'))['db'];function respondWithStatusCode(_0x243444,_0x424206){_0x424206=_0x424206||0xcc;return function(_0x4eb5e5){if(_0x4eb5e5){return _0x243444[_0x4658('0x16')](_0x424206);}return _0x243444[_0x4658('0x17')](_0x424206)['end']();};}function respondWithResult(_0x4d3821,_0x18de39){_0x18de39=_0x18de39||0xc8;return function(_0x5cf165){if(_0x5cf165){return _0x4d3821[_0x4658('0x17')](_0x18de39)['json'](_0x5cf165);}};}function respondWithFilteredResult(_0x10c558,_0x2702b6){return function(_0x4a506c){if(_0x4a506c){var _0x27aede=typeof _0x2702b6['offset']==='undefined'&&typeof _0x2702b6['limit']===_0x4658('0x18');var _0x48b230=_0x4a506c[_0x4658('0x19')];var _0x3237e5=_0x27aede?0x0:_0x2702b6[_0x4658('0x1a')];var _0x1c9d11=_0x27aede?_0x4a506c[_0x4658('0x19')]:_0x2702b6[_0x4658('0x1a')]+_0x2702b6['limit'];var _0x5b4c93;if(_0x1c9d11>=_0x48b230){_0x1c9d11=_0x48b230;_0x5b4c93=0xc8;}else{_0x5b4c93=0xce;}_0x10c558[_0x4658('0x17')](_0x5b4c93);return _0x10c558[_0x4658('0x1b')](_0x4658('0x1c'),_0x3237e5+'-'+_0x1c9d11+'/'+_0x48b230)[_0x4658('0x1d')](_0x4a506c);}return null;};}function patchUpdates(_0x2e926f){return function(_0x4a5617){try{jsonpatch[_0x4658('0x1e')](_0x4a5617,_0x2e926f,!![]);}catch(_0x29a18f){return BPromise[_0x4658('0x1f')](_0x29a18f);}return _0x4a5617['save']();};}function saveUpdates(_0x2eb16d,_0x1625dc){return function(_0x2ffe7a){if(_0x2ffe7a){return _0x2ffe7a[_0x4658('0x20')](_0x2eb16d)[_0x4658('0x21')](function(_0x44f09a){return _0x44f09a;});}return null;};}function removeEntity(_0x265fab,_0x546b71){return function(_0x304ca4){if(_0x304ca4){return _0x304ca4['destroy']()[_0x4658('0x21')](function(){_0x265fab[_0x4658('0x17')](0xcc)[_0x4658('0x22')]();});}};}function handleEntityNotFound(_0x25ccb,_0x2f2f7a){return function(_0x58f99a){if(!_0x58f99a){_0x25ccb[_0x4658('0x16')](0x194);}return _0x58f99a;};}function handleError(_0x20586c,_0x36a9b7){_0x36a9b7=_0x36a9b7||0x1f4;return function(_0x39f885){logger[_0x4658('0x23')](_0x39f885[_0x4658('0x24')]);if(_0x39f885[_0x4658('0x25')]){delete _0x39f885[_0x4658('0x25')];}_0x20586c[_0x4658('0x17')](_0x36a9b7)['send'](_0x39f885);};}exports[_0x4658('0x26')]=function(_0x274edd,_0x36eaaa){var _0xb97c92={},_0x5dfa9c={},_0xb2a131={'count':0x0,'rows':[]};var _0x434e3f=_[_0x4658('0x27')](db[_0x4658('0x28')][_0x4658('0x29')],function(_0x53a133){return{'name':_0x53a133[_0x4658('0x2a')],'type':_0x53a133['type'][_0x4658('0x2b')]};});_0x5dfa9c[_0x4658('0x2c')]=_[_0x4658('0x27')](_0x434e3f,'name');_0x5dfa9c[_0x4658('0x2d')]=_[_0x4658('0x2e')](_0x274edd[_0x4658('0x2d')]);_0x5dfa9c[_0x4658('0x2f')]=_[_0x4658('0x30')](_0x5dfa9c[_0x4658('0x2c')],_0x5dfa9c['query']);_0xb97c92[_0x4658('0x31')]=_[_0x4658('0x30')](_0x5dfa9c[_0x4658('0x2c')],qs[_0x4658('0x32')](_0x274edd['query'][_0x4658('0x32')]));_0xb97c92[_0x4658('0x31')]=_0xb97c92[_0x4658('0x31')]['length']?_0xb97c92['attributes']:_0x5dfa9c[_0x4658('0x2c')];if(!_0x274edd[_0x4658('0x2d')][_0x4658('0x33')]('nolimit')){_0xb97c92[_0x4658('0x34')]=qs[_0x4658('0x34')](_0x274edd[_0x4658('0x2d')]['limit']);_0xb97c92[_0x4658('0x1a')]=qs[_0x4658('0x1a')](_0x274edd[_0x4658('0x2d')][_0x4658('0x1a')]);}_0xb97c92[_0x4658('0x35')]=qs[_0x4658('0x36')](_0x274edd[_0x4658('0x2d')][_0x4658('0x36')]);_0xb97c92[_0x4658('0x37')]=qs[_0x4658('0x2f')](_[_0x4658('0x38')](_0x274edd[_0x4658('0x2d')],_0x5dfa9c['filters']),_0x434e3f);if(_0x274edd[_0x4658('0x2d')][_0x4658('0x39')]){_0xb97c92[_0x4658('0x37')]=_['merge'](_0xb97c92[_0x4658('0x37')],{'$or':_['map'](_0x434e3f,function(_0x3339dc){if(_0x3339dc[_0x4658('0x3a')]!=='VIRTUAL'){var _0x4530f6={};_0x4530f6[_0x3339dc[_0x4658('0x25')]]={'$like':'%'+_0x274edd[_0x4658('0x2d')][_0x4658('0x39')]+'%'};return _0x4530f6;}})});}_0xb97c92=_[_0x4658('0x3b')]({},_0xb97c92,_0x274edd['options']);var _0x169602={'where':_0xb97c92['where']};return db[_0x4658('0x28')][_0x4658('0x19')](_0x169602)[_0x4658('0x21')](function(_0xda0223){_0xb2a131[_0x4658('0x19')]=_0xda0223;if(_0x274edd['query'][_0x4658('0x3c')]){_0xb97c92['include']=[{'all':!![]}];}return db[_0x4658('0x28')]['findAll'](_0xb97c92);})[_0x4658('0x21')](function(_0x716f9d){_0xb2a131[_0x4658('0x3d')]=_0x716f9d;return _0xb2a131;})[_0x4658('0x21')](respondWithFilteredResult(_0x36eaaa,_0xb97c92))[_0x4658('0x3e')](handleError(_0x36eaaa,null));};exports[_0x4658('0x3f')]=function(_0x186a11,_0x5c1b50){var _0x2d8e77={'raw':!![],'where':{'id':_0x186a11[_0x4658('0x40')]['id']}},_0x4c6e54={};_0x4c6e54[_0x4658('0x2c')]=_[_0x4658('0x2e')](db['FaxQueueReport'][_0x4658('0x29')]);_0x4c6e54['query']=_['keys'](_0x186a11[_0x4658('0x2d')]);_0x4c6e54['filters']=_[_0x4658('0x30')](_0x4c6e54['model'],_0x4c6e54[_0x4658('0x2d')]);_0x2d8e77['attributes']=_[_0x4658('0x30')](_0x4c6e54[_0x4658('0x2c')],qs['fields'](_0x186a11[_0x4658('0x2d')][_0x4658('0x32')]));_0x2d8e77['attributes']=_0x2d8e77[_0x4658('0x31')][_0x4658('0x41')]?_0x2d8e77['attributes']:_0x4c6e54[_0x4658('0x2c')];if(_0x186a11[_0x4658('0x2d')][_0x4658('0x3c')]){_0x2d8e77[_0x4658('0x42')]=[{'all':!![]}];}_0x2d8e77=_[_0x4658('0x3b')]({},_0x2d8e77,_0x186a11[_0x4658('0x43')]);return db[_0x4658('0x28')][_0x4658('0x44')](_0x2d8e77)[_0x4658('0x21')](handleEntityNotFound(_0x5c1b50,null))[_0x4658('0x21')](respondWithResult(_0x5c1b50,null))[_0x4658('0x3e')](handleError(_0x5c1b50,null));};exports[_0x4658('0x45')]=function(_0x2045be,_0x5b2156){return db[_0x4658('0x28')]['create'](_0x2045be['body'],{})['then'](respondWithResult(_0x5b2156,0xc9))['catch'](handleError(_0x5b2156,null));};exports[_0x4658('0x20')]=function(_0x3bc7e0,_0x1ee5f3){if(_0x3bc7e0[_0x4658('0x46')]['id']){delete _0x3bc7e0[_0x4658('0x46')]['id'];}return db['FaxQueueReport'][_0x4658('0x44')]({'where':{'id':_0x3bc7e0[_0x4658('0x40')]['id']}})['then'](handleEntityNotFound(_0x1ee5f3,null))[_0x4658('0x21')](saveUpdates(_0x3bc7e0[_0x4658('0x46')],null))['then'](respondWithResult(_0x1ee5f3,null))['catch'](handleError(_0x1ee5f3,null));};exports['destroy']=function(_0x3c5712,_0x1741e9){return db[_0x4658('0x28')][_0x4658('0x44')]({'where':{'id':_0x3c5712[_0x4658('0x40')]['id']}})[_0x4658('0x21')](handleEntityNotFound(_0x1741e9,null))['then'](removeEntity(_0x1741e9,null))[_0x4658('0x3e')](handleError(_0x1741e9,null));};exports[_0x4658('0x47')]=function(_0x2559f9,_0x3dd15d){return db[_0x4658('0x28')][_0x4658('0x47')]()['then'](respondWithResult(_0x3dd15d,null))[_0x4658('0x3e')](handleError(_0x3dd15d,null));};
\ No newline at end of file
index 899596d..cb47800 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','uniqueid','lodash'];(function(_0x4d77e5,_0x54502f){var _0xb7db18=function(_0x22abfa){while(--_0x22abfa){_0x4d77e5['push'](_0x4d77e5['shift']());}};_0xb7db18(++_0x54502f);}(_0x326f,0xd1));var _0xf326=function(_0x229218,_0x2ed6e4){_0x229218=_0x229218-0x0;var _0x1b4eb8=_0x326f[_0x229218];return _0x1b4eb8;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4aa=['bluebird','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','lodash','util','../../config/logger','api','moment'];(function(_0x45e5e4,_0x36c228){var _0x4c394f=function(_0xdf40af){while(--_0xdf40af){_0x45e5e4['push'](_0x45e5e4['shift']());}};_0x4c394f(++_0x36c228);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xc4aa[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 824857f..179cfac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d4b=['attributes','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','CreateFaxQueueReport','FaxQueueReport','body','options','raw','then','UpdateFaxQueueReport','update','where'];(function(_0x3c4737,_0x2329ec){var _0x2bb926=function(_0x3b9605){while(--_0x3b9605){_0x3c4737['push'](_0x3c4737['shift']());}};_0x2bb926(++_0x2329ec);}(_0x1d4b,0x1d3));var _0xb1d4=function(_0x185f01,_0x3930e3){_0x185f01=_0x185f01-0x0;var _0x330844=_0x1d4b[_0x185f01];return _0x330844;};'use strict';var _=require(_0xb1d4('0x0'));var util=require(_0xb1d4('0x1'));var moment=require(_0xb1d4('0x2'));var BPromise=require('bluebird');var rs=require(_0xb1d4('0x3'));var fs=require('fs');var Redis=require(_0xb1d4('0x4'));var db=require(_0xb1d4('0x5'))['db'];var utils=require(_0xb1d4('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xb1d4('0x7'));var client=jayson[_0xb1d4('0x8')][_0xb1d4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3e4685,_0x3746bb,_0x15a87c){return new BPromise(function(_0x17f625,_0x144992){return client[_0xb1d4('0xa')](_0x3e4685,_0x15a87c)['then'](function(_0x13a431){logger[_0xb1d4('0xb')](_0xb1d4('0xc'),_0x3746bb,_0xb1d4('0xd'));logger[_0xb1d4('0xe')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x3746bb,_0xb1d4('0xd'),JSON[_0xb1d4('0xf')](_0x13a431));if(_0x13a431[_0xb1d4('0x10')]){if(_0x13a431['error']['code']===0x1f4){logger[_0xb1d4('0x10')](_0xb1d4('0xc'),_0x3746bb,_0x13a431['error']['message']);return _0x144992(_0x13a431[_0xb1d4('0x10')][_0xb1d4('0x11')]);}logger[_0xb1d4('0x10')](_0xb1d4('0xc'),_0x3746bb,_0x13a431[_0xb1d4('0x10')][_0xb1d4('0x11')]);return _0x17f625(_0x13a431[_0xb1d4('0x10')][_0xb1d4('0x11')]);}else{logger[_0xb1d4('0xb')](_0xb1d4('0xc'),_0x3746bb,_0xb1d4('0xd'));_0x17f625(_0x13a431[_0xb1d4('0x12')]['message']);}})[_0xb1d4('0x13')](function(_0x365b70){logger[_0xb1d4('0x10')](_0xb1d4('0xc'),_0x3746bb,_0x365b70);_0x144992(_0x365b70);});});}exports[_0xb1d4('0x14')]=function(_0x4ecdf9){var _0x43dbb3=this;return new Promise(function(_0x1b91f4,_0x95066){return db[_0xb1d4('0x15')]['create'](_0x4ecdf9[_0xb1d4('0x16')],{'raw':_0x4ecdf9['options']?_0x4ecdf9[_0xb1d4('0x17')][_0xb1d4('0x18')]===undefined?!![]:![]:!![]})[_0xb1d4('0x19')](function(_0x4a6cf7){logger[_0xb1d4('0xb')](_0xb1d4('0x14'),_0x4ecdf9);logger[_0xb1d4('0xe')]('CreateFaxQueueReport',_0x4ecdf9,JSON[_0xb1d4('0xf')](_0x4a6cf7));_0x1b91f4(_0x4a6cf7);})[_0xb1d4('0x13')](function(_0x2d6c68){logger[_0xb1d4('0x10')](_0xb1d4('0x14'),_0x2d6c68[_0xb1d4('0x11')],_0x4ecdf9);_0x95066(_0x43dbb3[_0xb1d4('0x10')](0x1f4,_0x2d6c68['message']));});});};exports[_0xb1d4('0x1a')]=function(_0x21e240){var _0x2aac9e=this;return new Promise(function(_0x43cd49,_0x524f30){return db['FaxQueueReport'][_0xb1d4('0x1b')](_0x21e240[_0xb1d4('0x16')],{'raw':_0x21e240[_0xb1d4('0x17')]?_0x21e240[_0xb1d4('0x17')][_0xb1d4('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21e240[_0xb1d4('0x17')]?_0x21e240['options'][_0xb1d4('0x1c')]||null:null,'attributes':_0x21e240[_0xb1d4('0x17')]?_0x21e240['options'][_0xb1d4('0x1d')]||null:null,'limit':_0x21e240[_0xb1d4('0x17')]?_0x21e240[_0xb1d4('0x17')][_0xb1d4('0x1e')]||null:null})[_0xb1d4('0x19')](function(_0x5718e1){logger['info'](_0xb1d4('0x1a'),_0x21e240);logger['debug'](_0xb1d4('0x1a'),_0x21e240,JSON[_0xb1d4('0xf')](_0x5718e1));_0x43cd49(_0x5718e1);})[_0xb1d4('0x13')](function(_0x2d2782){logger['error'](_0xb1d4('0x1a'),_0x2d2782[_0xb1d4('0x11')],_0x21e240);_0x524f30(_0x2aac9e[_0xb1d4('0x10')](0x1f4,_0x2d2782[_0xb1d4('0x11')]));});});};
\ No newline at end of file
+var _0xec21=['stringify','error','FaxQueueReport,\x20%s,\x20%s','message','result','catch','CreateFaxQueueReport','create','options','raw','UpdateFaxQueueReport','FaxQueueReport','update','body','where','attributes','limit','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0x82d9f3,_0x336d1b){var _0x45f668=function(_0x43cf4d){while(--_0x43cf4d){_0x82d9f3['push'](_0x82d9f3['shift']());}};_0x45f668(++_0x336d1b);}(_0xec21,0x77));var _0x1ec2=function(_0x29ecbc,_0x2929d9){_0x29ecbc=_0x29ecbc-0x0;var _0x5709b0=_0xec21[_0x29ecbc];return _0x5709b0;};'use strict';var _=require('lodash');var util=require(_0x1ec2('0x0'));var moment=require(_0x1ec2('0x1'));var BPromise=require(_0x1ec2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1ec2('0x3'));var db=require(_0x1ec2('0x4'))['db'];var utils=require(_0x1ec2('0x5'));var logger=require(_0x1ec2('0x6'))(_0x1ec2('0x7'));var config=require(_0x1ec2('0x8'));var jayson=require(_0x1ec2('0x9'));var client=jayson['client'][_0x1ec2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x230a22,_0x566988,_0x4a21dd){return new BPromise(function(_0x5de2d5,_0x2aea43){return client[_0x1ec2('0xb')](_0x230a22,_0x4a21dd)[_0x1ec2('0xc')](function(_0x49be2c){logger[_0x1ec2('0xd')]('FaxQueueReport,\x20%s,\x20%s',_0x566988,_0x1ec2('0xe'));logger[_0x1ec2('0xf')](_0x1ec2('0x10'),_0x566988,'request\x20sent',JSON[_0x1ec2('0x11')](_0x49be2c));if(_0x49be2c[_0x1ec2('0x12')]){if(_0x49be2c[_0x1ec2('0x12')]['code']===0x1f4){logger['error'](_0x1ec2('0x13'),_0x566988,_0x49be2c[_0x1ec2('0x12')][_0x1ec2('0x14')]);return _0x2aea43(_0x49be2c[_0x1ec2('0x12')][_0x1ec2('0x14')]);}logger[_0x1ec2('0x12')]('FaxQueueReport,\x20%s,\x20%s',_0x566988,_0x49be2c['error'][_0x1ec2('0x14')]);return _0x5de2d5(_0x49be2c[_0x1ec2('0x12')][_0x1ec2('0x14')]);}else{logger['info'](_0x1ec2('0x13'),_0x566988,_0x1ec2('0xe'));_0x5de2d5(_0x49be2c[_0x1ec2('0x15')][_0x1ec2('0x14')]);}})[_0x1ec2('0x16')](function(_0x4d48ac){logger[_0x1ec2('0x12')](_0x1ec2('0x13'),_0x566988,_0x4d48ac);_0x2aea43(_0x4d48ac);});});}exports[_0x1ec2('0x17')]=function(_0x2125a6){var _0x171057=this;return new Promise(function(_0x282ef9,_0x5cf3f5){return db['FaxQueueReport'][_0x1ec2('0x18')](_0x2125a6['body'],{'raw':_0x2125a6[_0x1ec2('0x19')]?_0x2125a6[_0x1ec2('0x19')][_0x1ec2('0x1a')]===undefined?!![]:![]:!![]})[_0x1ec2('0xc')](function(_0x4c3d2b){logger[_0x1ec2('0xd')](_0x1ec2('0x17'),_0x2125a6);logger[_0x1ec2('0xf')](_0x1ec2('0x17'),_0x2125a6,JSON[_0x1ec2('0x11')](_0x4c3d2b));_0x282ef9(_0x4c3d2b);})[_0x1ec2('0x16')](function(_0x56a6ec){logger[_0x1ec2('0x12')](_0x1ec2('0x17'),_0x56a6ec['message'],_0x2125a6);_0x5cf3f5(_0x171057[_0x1ec2('0x12')](0x1f4,_0x56a6ec['message']));});});};exports[_0x1ec2('0x1b')]=function(_0x38a2e9){var _0x59d032=this;return new Promise(function(_0x18d870,_0x3ea451){return db[_0x1ec2('0x1c')][_0x1ec2('0x1d')](_0x38a2e9[_0x1ec2('0x1e')],{'raw':_0x38a2e9[_0x1ec2('0x19')]?_0x38a2e9[_0x1ec2('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x38a2e9['options']?_0x38a2e9['options'][_0x1ec2('0x1f')]||null:null,'attributes':_0x38a2e9['options']?_0x38a2e9[_0x1ec2('0x19')][_0x1ec2('0x20')]||null:null,'limit':_0x38a2e9['options']?_0x38a2e9[_0x1ec2('0x19')][_0x1ec2('0x21')]||null:null})['then'](function(_0x4ae0fa){logger[_0x1ec2('0xd')](_0x1ec2('0x1b'),_0x38a2e9);logger['debug'](_0x1ec2('0x1b'),_0x38a2e9,JSON[_0x1ec2('0x11')](_0x4ae0fa));_0x18d870(_0x4ae0fa);})['catch'](function(_0x1f735f){logger['error']('UpdateFaxQueueReport',_0x1f735f['message'],_0x38a2e9);_0x3ea451(_0x59d032[_0x1ec2('0x12')](0x1f4,_0x1f735f[_0x1ec2('0x14')]));});});};
\ No newline at end of file
index 7d71908..28e7f96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3065=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','isAuthenticated','index','get','describe','/:id','show','post','put','update','destroy','exports','multer','util'];(function(_0x2c7b04,_0x5a35ee){var _0x2f7351=function(_0x34dede){while(--_0x34dede){_0x2c7b04['push'](_0x2c7b04['shift']());}};_0x2f7351(++_0x5a35ee);}(_0x3065,0x1f2));var _0x5306=function(_0xae2311,_0xeaf26c){_0xae2311=_0xae2311-0x0;var _0xecffc6=_0x3065[_0xae2311];return _0xecffc6;};'use strict';var multer=require(_0x5306('0x0'));var util=require(_0x5306('0x1'));var path=require('path');var timeout=require(_0x5306('0x2'));var express=require(_0x5306('0x3'));var router=express[_0x5306('0x4')]();var fs_extra=require(_0x5306('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x5306('0x6'));var config=require(_0x5306('0x7'));var controller=require(_0x5306('0x8'));router['get']('/',auth[_0x5306('0x9')](),controller[_0x5306('0xa')]);router[_0x5306('0xb')]('/describe',auth[_0x5306('0x9')](),controller[_0x5306('0xc')]);router['get'](_0x5306('0xd'),auth['isAuthenticated'](),controller[_0x5306('0xe')]);router[_0x5306('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x5306('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x5306('0x11')]);router['delete']('/:id',auth[_0x5306('0x9')](),controller[_0x5306('0x12')]);module[_0x5306('0x13')]=router;
\ No newline at end of file
+var _0xe1f1=['update','destroy','exports','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put'];(function(_0x407287,_0x28396e){var _0x35bd1c=function(_0xb7a801){while(--_0xb7a801){_0x407287['push'](_0x407287['shift']());}};_0x35bd1c(++_0x28396e);}(_0xe1f1,0x17f));var _0x1e1f=function(_0x12ee7f,_0x5e571f){_0x12ee7f=_0x12ee7f-0x0;var _0x58b962=_0xe1f1[_0x12ee7f];return _0x58b962;};'use strict';var multer=require(_0x1e1f('0x0'));var util=require(_0x1e1f('0x1'));var path=require(_0x1e1f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x1e1f('0x3'));var auth=require(_0x1e1f('0x4'));var interaction=require(_0x1e1f('0x5'));var config=require(_0x1e1f('0x6'));var controller=require(_0x1e1f('0x7'));router[_0x1e1f('0x8')]('/',auth[_0x1e1f('0x9')](),controller[_0x1e1f('0xa')]);router['get'](_0x1e1f('0xb'),auth[_0x1e1f('0x9')](),controller[_0x1e1f('0xc')]);router[_0x1e1f('0x8')](_0x1e1f('0xd'),auth[_0x1e1f('0x9')](),controller['show']);router[_0x1e1f('0xe')]('/',auth[_0x1e1f('0x9')](),controller[_0x1e1f('0xf')]);router[_0x1e1f('0x10')](_0x1e1f('0xd'),auth[_0x1e1f('0x9')](),controller[_0x1e1f('0x11')]);router['delete'](_0x1e1f('0xd'),auth[_0x1e1f('0x9')](),controller[_0x1e1f('0x12')]);module[_0x1e1f('0x13')]=router;
\ No newline at end of file
index 2a73eaf..6fa62fe 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(_0x55692f,_0x455987){var _0xf8d3fe=function(_0x5ec20d){while(--_0x5ec20d){_0x55692f['push'](_0x55692f['shift']());}};_0xf8d3fe(++_0x455987);}(_0x00bb,0x1d8));var _0xb00b=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0x00bb[_0x4709c0];return _0x13348b;};'use strict';var moment=require(_0xb00b('0x0'));var Sequelize=require(_0xb00b('0x1'));module[_0xb00b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb00b('0x3')]('account',_0xb00b('0x4'),_0xb00b('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xb00b('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xb00b('0x7')]}};
\ No newline at end of file
+var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x43626e,_0x4d28f6){var _0x2c8acc=function(_0x479a69){while(--_0x479a69){_0x43626e['push'](_0x43626e['shift']());}};_0x2c8acc(++_0x4d28f6);}(_0xaa88,0x137));var _0x8aa8=function(_0x5db313,_0x3c8f0c){_0x5db313=_0x5db313-0x0;var _0x36d503=_0xaa88[_0x5db313];return _0x36d503;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
index 201fde0..4fe3d75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe377=['count','offset','Content-Range','json','apply','reject','end','sendStatus','error','name','send','map','FaxTransferReport','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','filter','then','includeAll','include','rows','catch','show','options','update','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','undefined','limit'];(function(_0x5beb84,_0x26e729){var _0x2b00c4=function(_0x50fc5e){while(--_0x50fc5e){_0x5beb84['push'](_0x5beb84['shift']());}};_0x2b00c4(++_0x26e729);}(_0xe377,0x1e1));var _0x7e37=function(_0x1acb08,_0x47d04b){_0x1acb08=_0x1acb08-0x0;var _0xf928e0=_0xe377[_0x1acb08];return _0xf928e0;};'use strict';var emlformat=require(_0x7e37('0x0'));var rimraf=require(_0x7e37('0x1'));var zipdir=require(_0x7e37('0x2'));var jsonpatch=require(_0x7e37('0x3'));var rp=require('request-promise');var moment=require(_0x7e37('0x4'));var BPromise=require(_0x7e37('0x5'));var Mustache=require(_0x7e37('0x6'));var util=require(_0x7e37('0x7'));var path=require(_0x7e37('0x8'));var sox=require(_0x7e37('0x9'));var csv=require(_0x7e37('0xa'));var ejs=require(_0x7e37('0xb'));var fs=require('fs');var fs_extra=require(_0x7e37('0xc'));var _=require('lodash');var squel=require(_0x7e37('0xd'));var crypto=require(_0x7e37('0xe'));var jsforce=require(_0x7e37('0xf'));var deskjs=require(_0x7e37('0x10'));var toCsv=require(_0x7e37('0xa'));var querystring=require('querystring');var Papa=require(_0x7e37('0x11'));var Redis=require(_0x7e37('0x12'));var authService=require(_0x7e37('0x13'));var qs=require(_0x7e37('0x14'));var as=require(_0x7e37('0x15'));var hardwareService=require(_0x7e37('0x16'));var logger=require(_0x7e37('0x17'))(_0x7e37('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7e37('0x19'));var db=require(_0x7e37('0x1a'))['db'];function respondWithStatusCode(_0x59ab28,_0x2b3f35){_0x2b3f35=_0x2b3f35||0xcc;return function(_0x5d4471){if(_0x5d4471){return _0x59ab28['sendStatus'](_0x2b3f35);}return _0x59ab28[_0x7e37('0x1b')](_0x2b3f35)['end']();};}function respondWithResult(_0x5c6ba5,_0x593307){_0x593307=_0x593307||0xc8;return function(_0x3a99fb){if(_0x3a99fb){return _0x5c6ba5[_0x7e37('0x1b')](_0x593307)['json'](_0x3a99fb);}};}function respondWithFilteredResult(_0x9d960,_0x5574bf){return function(_0x213f65){if(_0x213f65){var _0x275b37=typeof _0x5574bf['offset']===_0x7e37('0x1c')&&typeof _0x5574bf[_0x7e37('0x1d')]==='undefined';var _0x566d82=_0x213f65[_0x7e37('0x1e')];var _0xfeeb1f=_0x275b37?0x0:_0x5574bf[_0x7e37('0x1f')];var _0xce58d5=_0x275b37?_0x213f65[_0x7e37('0x1e')]:_0x5574bf['offset']+_0x5574bf[_0x7e37('0x1d')];var _0x39ab07;if(_0xce58d5>=_0x566d82){_0xce58d5=_0x566d82;_0x39ab07=0xc8;}else{_0x39ab07=0xce;}_0x9d960[_0x7e37('0x1b')](_0x39ab07);return _0x9d960['set'](_0x7e37('0x20'),_0xfeeb1f+'-'+_0xce58d5+'/'+_0x566d82)[_0x7e37('0x21')](_0x213f65);}return null;};}function patchUpdates(_0x5e0289){return function(_0x41c875){try{jsonpatch[_0x7e37('0x22')](_0x41c875,_0x5e0289,!![]);}catch(_0x412d36){return BPromise[_0x7e37('0x23')](_0x412d36);}return _0x41c875['save']();};}function saveUpdates(_0x52aa56,_0x3d6216){return function(_0x494ee1){if(_0x494ee1){return _0x494ee1['update'](_0x52aa56)['then'](function(_0x3b7e6e){return _0x3b7e6e;});}return null;};}function removeEntity(_0x19771b,_0x3343e3){return function(_0x3ff147){if(_0x3ff147){return _0x3ff147['destroy']()['then'](function(){_0x19771b[_0x7e37('0x1b')](0xcc)[_0x7e37('0x24')]();});}};}function handleEntityNotFound(_0xdc32cf,_0x21d16e){return function(_0x54cbfd){if(!_0x54cbfd){_0xdc32cf[_0x7e37('0x25')](0x194);}return _0x54cbfd;};}function handleError(_0x4fff64,_0x36d078){_0x36d078=_0x36d078||0x1f4;return function(_0x147786){logger[_0x7e37('0x26')](_0x147786['stack']);if(_0x147786[_0x7e37('0x27')]){delete _0x147786[_0x7e37('0x27')];}_0x4fff64['status'](_0x36d078)[_0x7e37('0x28')](_0x147786);};}exports['index']=function(_0x3fc13c,_0xbf57c5){var _0x5cef8a={},_0x167bec={},_0x57f92b={'count':0x0,'rows':[]};var _0x279109=_[_0x7e37('0x29')](db[_0x7e37('0x2a')][_0x7e37('0x2b')],function(_0x506c72){return{'name':_0x506c72['fieldName'],'type':_0x506c72[_0x7e37('0x2c')][_0x7e37('0x2d')]};});_0x167bec[_0x7e37('0x2e')]=_[_0x7e37('0x29')](_0x279109,'name');_0x167bec[_0x7e37('0x2f')]=_[_0x7e37('0x30')](_0x3fc13c[_0x7e37('0x2f')]);_0x167bec['filters']=_[_0x7e37('0x31')](_0x167bec[_0x7e37('0x2e')],_0x167bec[_0x7e37('0x2f')]);_0x5cef8a[_0x7e37('0x32')]=_[_0x7e37('0x31')](_0x167bec[_0x7e37('0x2e')],qs[_0x7e37('0x33')](_0x3fc13c[_0x7e37('0x2f')]['fields']));_0x5cef8a[_0x7e37('0x32')]=_0x5cef8a[_0x7e37('0x32')][_0x7e37('0x34')]?_0x5cef8a[_0x7e37('0x32')]:_0x167bec['model'];if(!_0x3fc13c[_0x7e37('0x2f')][_0x7e37('0x35')](_0x7e37('0x36'))){_0x5cef8a['limit']=qs[_0x7e37('0x1d')](_0x3fc13c[_0x7e37('0x2f')][_0x7e37('0x1d')]);_0x5cef8a['offset']=qs[_0x7e37('0x1f')](_0x3fc13c[_0x7e37('0x2f')][_0x7e37('0x1f')]);}_0x5cef8a[_0x7e37('0x37')]=qs[_0x7e37('0x38')](_0x3fc13c[_0x7e37('0x2f')][_0x7e37('0x38')]);_0x5cef8a[_0x7e37('0x39')]=qs['filters'](_[_0x7e37('0x3a')](_0x3fc13c[_0x7e37('0x2f')],_0x167bec[_0x7e37('0x3b')]),_0x279109);if(_0x3fc13c[_0x7e37('0x2f')]['filter']){_0x5cef8a[_0x7e37('0x39')]=_[_0x7e37('0x3c')](_0x5cef8a[_0x7e37('0x39')],{'$or':_[_0x7e37('0x29')](_0x279109,function(_0x27285e){if(_0x27285e[_0x7e37('0x2c')]!=='VIRTUAL'){var _0x20c836={};_0x20c836[_0x27285e['name']]={'$like':'%'+_0x3fc13c[_0x7e37('0x2f')][_0x7e37('0x3d')]+'%'};return _0x20c836;}})});}_0x5cef8a=_[_0x7e37('0x3c')]({},_0x5cef8a,_0x3fc13c['options']);var _0x44abde={'where':_0x5cef8a[_0x7e37('0x39')]};return db[_0x7e37('0x2a')][_0x7e37('0x1e')](_0x44abde)[_0x7e37('0x3e')](function(_0x75fa7f){_0x57f92b[_0x7e37('0x1e')]=_0x75fa7f;if(_0x3fc13c[_0x7e37('0x2f')][_0x7e37('0x3f')]){_0x5cef8a[_0x7e37('0x40')]=[{'all':!![]}];}return db[_0x7e37('0x2a')]['findAll'](_0x5cef8a);})[_0x7e37('0x3e')](function(_0xc3d6f6){_0x57f92b[_0x7e37('0x41')]=_0xc3d6f6;return _0x57f92b;})[_0x7e37('0x3e')](respondWithFilteredResult(_0xbf57c5,_0x5cef8a))[_0x7e37('0x42')](handleError(_0xbf57c5,null));};exports[_0x7e37('0x43')]=function(_0x2eb0be,_0x538729){var _0x585b5b={'raw':!![],'where':{'id':_0x2eb0be['params']['id']}},_0x14551e={};_0x14551e['model']=_['keys'](db[_0x7e37('0x2a')]['rawAttributes']);_0x14551e[_0x7e37('0x2f')]=_['keys'](_0x2eb0be[_0x7e37('0x2f')]);_0x14551e[_0x7e37('0x3b')]=_[_0x7e37('0x31')](_0x14551e[_0x7e37('0x2e')],_0x14551e[_0x7e37('0x2f')]);_0x585b5b[_0x7e37('0x32')]=_[_0x7e37('0x31')](_0x14551e[_0x7e37('0x2e')],qs[_0x7e37('0x33')](_0x2eb0be[_0x7e37('0x2f')]['fields']));_0x585b5b[_0x7e37('0x32')]=_0x585b5b[_0x7e37('0x32')][_0x7e37('0x34')]?_0x585b5b[_0x7e37('0x32')]:_0x14551e[_0x7e37('0x2e')];if(_0x2eb0be[_0x7e37('0x2f')]['includeAll']){_0x585b5b[_0x7e37('0x40')]=[{'all':!![]}];}_0x585b5b=_['merge']({},_0x585b5b,_0x2eb0be[_0x7e37('0x44')]);return db['FaxTransferReport']['find'](_0x585b5b)[_0x7e37('0x3e')](handleEntityNotFound(_0x538729,null))['then'](respondWithResult(_0x538729,null))['catch'](handleError(_0x538729,null));};exports['create']=function(_0x263f8c,_0x3df3e5){return db[_0x7e37('0x2a')]['create'](_0x263f8c['body'],{})['then'](respondWithResult(_0x3df3e5,0xc9))['catch'](handleError(_0x3df3e5,null));};exports[_0x7e37('0x45')]=function(_0x25fdd2,_0x3517b1){if(_0x25fdd2['body']['id']){delete _0x25fdd2[_0x7e37('0x46')]['id'];}return db[_0x7e37('0x2a')]['find']({'where':{'id':_0x25fdd2['params']['id']}})[_0x7e37('0x3e')](handleEntityNotFound(_0x3517b1,null))[_0x7e37('0x3e')](saveUpdates(_0x25fdd2[_0x7e37('0x46')],null))[_0x7e37('0x3e')](respondWithResult(_0x3517b1,null))['catch'](handleError(_0x3517b1,null));};exports[_0x7e37('0x47')]=function(_0x128d71,_0x13cb6a){return db[_0x7e37('0x2a')]['find']({'where':{'id':_0x128d71['params']['id']}})[_0x7e37('0x3e')](handleEntityNotFound(_0x13cb6a,null))[_0x7e37('0x3e')](removeEntity(_0x13cb6a,null))['catch'](handleError(_0x13cb6a,null));};exports[_0x7e37('0x48')]=function(_0x6f076e,_0x52635f){return db[_0x7e37('0x2a')]['describe']()[_0x7e37('0x3e')](respondWithResult(_0x52635f,null))[_0x7e37('0x42')](handleError(_0x52635f,null));};
\ No newline at end of file
+var _0xd7cf=['params','keys','fields','find','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','send','index','map','FaxTransferReport','rawAttributes','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show'];(function(_0x2de81b,_0x322f1d){var _0x3df553=function(_0x551338){while(--_0x551338){_0x2de81b['push'](_0x2de81b['shift']());}};_0x3df553(++_0x322f1d);}(_0xd7cf,0x9d));var _0xfd7c=function(_0x152405,_0x5e8952){_0x152405=_0x152405-0x0;var _0x46647a=_0xd7cf[_0x152405];return _0x46647a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfd7c('0x0'));var zipdir=require(_0xfd7c('0x1'));var jsonpatch=require(_0xfd7c('0x2'));var rp=require('request-promise');var moment=require(_0xfd7c('0x3'));var BPromise=require(_0xfd7c('0x4'));var Mustache=require(_0xfd7c('0x5'));var util=require(_0xfd7c('0x6'));var path=require(_0xfd7c('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfd7c('0x8'));var fs=require('fs');var fs_extra=require(_0xfd7c('0x9'));var _=require(_0xfd7c('0xa'));var squel=require(_0xfd7c('0xb'));var crypto=require('crypto');var jsforce=require(_0xfd7c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xfd7c('0xd'));var querystring=require(_0xfd7c('0xe'));var Papa=require(_0xfd7c('0xf'));var Redis=require(_0xfd7c('0x10'));var authService=require(_0xfd7c('0x11'));var qs=require(_0xfd7c('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfd7c('0x13'));var logger=require(_0xfd7c('0x14'))('api');var utils=require(_0xfd7c('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xfd7c('0x16'));var db=require(_0xfd7c('0x17'))['db'];function respondWithStatusCode(_0x47029c,_0x551313){_0x551313=_0x551313||0xcc;return function(_0x4e57dd){if(_0x4e57dd){return _0x47029c[_0xfd7c('0x18')](_0x551313);}return _0x47029c['status'](_0x551313)['end']();};}function respondWithResult(_0x4ba89b,_0x374196){_0x374196=_0x374196||0xc8;return function(_0x21c197){if(_0x21c197){return _0x4ba89b['status'](_0x374196)[_0xfd7c('0x19')](_0x21c197);}};}function respondWithFilteredResult(_0x1965d0,_0x263cc8){return function(_0x4077b2){if(_0x4077b2){var _0x5db518=typeof _0x263cc8[_0xfd7c('0x1a')]===_0xfd7c('0x1b')&&typeof _0x263cc8[_0xfd7c('0x1c')]==='undefined';var _0x4dd2fd=_0x4077b2[_0xfd7c('0x1d')];var _0x3fb905=_0x5db518?0x0:_0x263cc8[_0xfd7c('0x1a')];var _0x280f83=_0x5db518?_0x4077b2[_0xfd7c('0x1d')]:_0x263cc8[_0xfd7c('0x1a')]+_0x263cc8['limit'];var _0x1a71de;if(_0x280f83>=_0x4dd2fd){_0x280f83=_0x4dd2fd;_0x1a71de=0xc8;}else{_0x1a71de=0xce;}_0x1965d0[_0xfd7c('0x1e')](_0x1a71de);return _0x1965d0[_0xfd7c('0x1f')](_0xfd7c('0x20'),_0x3fb905+'-'+_0x280f83+'/'+_0x4dd2fd)[_0xfd7c('0x19')](_0x4077b2);}return null;};}function patchUpdates(_0x3e0def){return function(_0x138089){try{jsonpatch[_0xfd7c('0x21')](_0x138089,_0x3e0def,!![]);}catch(_0x12efab){return BPromise[_0xfd7c('0x22')](_0x12efab);}return _0x138089[_0xfd7c('0x23')]();};}function saveUpdates(_0x3b6f8a,_0x380ef8){return function(_0xd46910){if(_0xd46910){return _0xd46910[_0xfd7c('0x24')](_0x3b6f8a)[_0xfd7c('0x25')](function(_0x5449b1){return _0x5449b1;});}return null;};}function removeEntity(_0x47cc7e,_0x4bda02){return function(_0x360412){if(_0x360412){return _0x360412[_0xfd7c('0x26')]()[_0xfd7c('0x25')](function(){_0x47cc7e['status'](0xcc)[_0xfd7c('0x27')]();});}};}function handleEntityNotFound(_0x10cbf7,_0x331b07){return function(_0x177c4b){if(!_0x177c4b){_0x10cbf7[_0xfd7c('0x18')](0x194);}return _0x177c4b;};}function handleError(_0x535b7b,_0xd36fe7){_0xd36fe7=_0xd36fe7||0x1f4;return function(_0x41e2bb){logger['error'](_0x41e2bb[_0xfd7c('0x28')]);if(_0x41e2bb[_0xfd7c('0x29')]){delete _0x41e2bb[_0xfd7c('0x29')];}_0x535b7b[_0xfd7c('0x1e')](_0xd36fe7)[_0xfd7c('0x2a')](_0x41e2bb);};}exports[_0xfd7c('0x2b')]=function(_0x1bb2a7,_0x266c28){var _0x123c38={},_0x23c70e={},_0x13138c={'count':0x0,'rows':[]};var _0x52522c=_[_0xfd7c('0x2c')](db[_0xfd7c('0x2d')][_0xfd7c('0x2e')],function(_0x4fa9f5){return{'name':_0x4fa9f5['fieldName'],'type':_0x4fa9f5[_0xfd7c('0x2f')][_0xfd7c('0x30')]};});_0x23c70e[_0xfd7c('0x31')]=_[_0xfd7c('0x2c')](_0x52522c,'name');_0x23c70e[_0xfd7c('0x32')]=_['keys'](_0x1bb2a7[_0xfd7c('0x32')]);_0x23c70e[_0xfd7c('0x33')]=_[_0xfd7c('0x34')](_0x23c70e[_0xfd7c('0x31')],_0x23c70e[_0xfd7c('0x32')]);_0x123c38[_0xfd7c('0x35')]=_[_0xfd7c('0x34')](_0x23c70e[_0xfd7c('0x31')],qs['fields'](_0x1bb2a7['query']['fields']));_0x123c38['attributes']=_0x123c38[_0xfd7c('0x35')][_0xfd7c('0x36')]?_0x123c38[_0xfd7c('0x35')]:_0x23c70e['model'];if(!_0x1bb2a7[_0xfd7c('0x32')][_0xfd7c('0x37')](_0xfd7c('0x38'))){_0x123c38[_0xfd7c('0x1c')]=qs['limit'](_0x1bb2a7[_0xfd7c('0x32')][_0xfd7c('0x1c')]);_0x123c38[_0xfd7c('0x1a')]=qs[_0xfd7c('0x1a')](_0x1bb2a7['query']['offset']);}_0x123c38['order']=qs['sort'](_0x1bb2a7[_0xfd7c('0x32')]['sort']);_0x123c38[_0xfd7c('0x39')]=qs[_0xfd7c('0x33')](_[_0xfd7c('0x3a')](_0x1bb2a7[_0xfd7c('0x32')],_0x23c70e[_0xfd7c('0x33')]),_0x52522c);if(_0x1bb2a7['query'][_0xfd7c('0x3b')]){_0x123c38[_0xfd7c('0x39')]=_[_0xfd7c('0x3c')](_0x123c38['where'],{'$or':_[_0xfd7c('0x2c')](_0x52522c,function(_0xac8c30){if(_0xac8c30[_0xfd7c('0x2f')]!=='VIRTUAL'){var _0x238f5f={};_0x238f5f[_0xac8c30[_0xfd7c('0x29')]]={'$like':'%'+_0x1bb2a7['query']['filter']+'%'};return _0x238f5f;}})});}_0x123c38=_[_0xfd7c('0x3c')]({},_0x123c38,_0x1bb2a7[_0xfd7c('0x3d')]);var _0x26440b={'where':_0x123c38['where']};return db[_0xfd7c('0x2d')]['count'](_0x26440b)[_0xfd7c('0x25')](function(_0x556771){_0x13138c[_0xfd7c('0x1d')]=_0x556771;if(_0x1bb2a7[_0xfd7c('0x32')][_0xfd7c('0x3e')]){_0x123c38[_0xfd7c('0x3f')]=[{'all':!![]}];}return db[_0xfd7c('0x2d')][_0xfd7c('0x40')](_0x123c38);})[_0xfd7c('0x25')](function(_0x5ce3f7){_0x13138c[_0xfd7c('0x41')]=_0x5ce3f7;return _0x13138c;})[_0xfd7c('0x25')](respondWithFilteredResult(_0x266c28,_0x123c38))[_0xfd7c('0x42')](handleError(_0x266c28,null));};exports[_0xfd7c('0x43')]=function(_0x25eac5,_0x449ac0){var _0xa09af5={'raw':!![],'where':{'id':_0x25eac5[_0xfd7c('0x44')]['id']}},_0x98d55={};_0x98d55[_0xfd7c('0x31')]=_[_0xfd7c('0x45')](db[_0xfd7c('0x2d')][_0xfd7c('0x2e')]);_0x98d55[_0xfd7c('0x32')]=_['keys'](_0x25eac5[_0xfd7c('0x32')]);_0x98d55[_0xfd7c('0x33')]=_['intersection'](_0x98d55['model'],_0x98d55['query']);_0xa09af5[_0xfd7c('0x35')]=_[_0xfd7c('0x34')](_0x98d55[_0xfd7c('0x31')],qs[_0xfd7c('0x46')](_0x25eac5[_0xfd7c('0x32')][_0xfd7c('0x46')]));_0xa09af5[_0xfd7c('0x35')]=_0xa09af5[_0xfd7c('0x35')][_0xfd7c('0x36')]?_0xa09af5[_0xfd7c('0x35')]:_0x98d55[_0xfd7c('0x31')];if(_0x25eac5[_0xfd7c('0x32')][_0xfd7c('0x3e')]){_0xa09af5[_0xfd7c('0x3f')]=[{'all':!![]}];}_0xa09af5=_[_0xfd7c('0x3c')]({},_0xa09af5,_0x25eac5['options']);return db[_0xfd7c('0x2d')][_0xfd7c('0x47')](_0xa09af5)['then'](handleEntityNotFound(_0x449ac0,null))['then'](respondWithResult(_0x449ac0,null))['catch'](handleError(_0x449ac0,null));};exports[_0xfd7c('0x48')]=function(_0x1334e1,_0x438e7c){return db[_0xfd7c('0x2d')]['create'](_0x1334e1[_0xfd7c('0x49')],{})[_0xfd7c('0x25')](respondWithResult(_0x438e7c,0xc9))[_0xfd7c('0x42')](handleError(_0x438e7c,null));};exports['update']=function(_0x4060a0,_0x3ddd19){if(_0x4060a0[_0xfd7c('0x49')]['id']){delete _0x4060a0[_0xfd7c('0x49')]['id'];}return db[_0xfd7c('0x2d')]['find']({'where':{'id':_0x4060a0[_0xfd7c('0x44')]['id']}})[_0xfd7c('0x25')](handleEntityNotFound(_0x3ddd19,null))[_0xfd7c('0x25')](saveUpdates(_0x4060a0[_0xfd7c('0x49')],null))[_0xfd7c('0x25')](respondWithResult(_0x3ddd19,null))[_0xfd7c('0x42')](handleError(_0x3ddd19,null));};exports['destroy']=function(_0x4cfb08,_0x5e7efd){return db[_0xfd7c('0x2d')]['find']({'where':{'id':_0x4cfb08[_0xfd7c('0x44')]['id']}})[_0xfd7c('0x25')](handleEntityNotFound(_0x5e7efd,null))['then'](removeEntity(_0x5e7efd,null))[_0xfd7c('0x42')](handleError(_0x5e7efd,null));};exports[_0xfd7c('0x4a')]=function(_0x3f598e,_0x693d73){return db[_0xfd7c('0x2d')][_0xfd7c('0x4a')]()['then'](respondWithResult(_0x693d73,null))['catch'](handleError(_0x693d73,null));};
\ No newline at end of file
index dd2df32..7fbe9b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83d9=['util','../../config/logger','api','path','rimraf','../../config/environment','./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer'];(function(_0x5dfc2a,_0x1a953f){var _0x3f1a71=function(_0x15916){while(--_0x15916){_0x5dfc2a['push'](_0x5dfc2a['shift']());}};_0x3f1a71(++_0x1a953f);}(_0x83d9,0x134));var _0x983d=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0x83d9[_0x68ee8b];return _0x5148f7;};'use strict';var _=require('lodash');var util=require(_0x983d('0x0'));var logger=require(_0x983d('0x1'))(_0x983d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x983d('0x3'));var rimraf=require(_0x983d('0x4'));var config=require(_0x983d('0x5'));var attributes=require(_0x983d('0x6'));module[_0x983d('0x7')]=function(_0x1da5f2,_0x6340bf){return _0x1da5f2[_0x983d('0x8')](_0x983d('0x9'),attributes,{'tableName':_0x983d('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfe56=['../../config/logger','api','moment','bluebird','path','rimraf','./faxTransferReport.attributes','exports','define','report_fax_transfer','uniqueid','lodash','util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfe56,0x9a));var _0x6fe5=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xfe56[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x6fe5('0x0'));var util=require(_0x6fe5('0x1'));var logger=require(_0x6fe5('0x2'))(_0x6fe5('0x3'));var moment=require(_0x6fe5('0x4'));var BPromise=require(_0x6fe5('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6fe5('0x6'));var rimraf=require(_0x6fe5('0x7'));var config=require('../../config/environment');var attributes=require(_0x6fe5('0x8'));module[_0x6fe5('0x9')]=function(_0x970ad6,_0x343808){return _0x970ad6[_0x6fe5('0xa')]('FaxTransferReport',attributes,{'tableName':_0x6fe5('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x6fe5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 9a15c26..771f2ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07f8=['catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','FaxTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0xfe4906,_0x1683fa){var _0x1a82c4=function(_0x1e3a70){while(--_0x1e3a70){_0xfe4906['push'](_0xfe4906['shift']());}};_0x1a82c4(++_0x1683fa);}(_0x07f8,0x19f));var _0x807f=function(_0x5d0746,_0x511b2d){_0x5d0746=_0x5d0746-0x0;var _0x19a392=_0x07f8[_0x5d0746];return _0x19a392;};'use strict';var _=require(_0x807f('0x0'));var util=require('util');var moment=require(_0x807f('0x1'));var BPromise=require(_0x807f('0x2'));var rs=require(_0x807f('0x3'));var fs=require('fs');var Redis=require(_0x807f('0x4'));var db=require(_0x807f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x807f('0x6'))('rpc');var config=require(_0x807f('0x7'));var jayson=require(_0x807f('0x8'));var client=jayson[_0x807f('0x9')][_0x807f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5cde1a,_0x58f1ab,_0x5346dc){return new BPromise(function(_0x59f45f,_0x2d2622){return client[_0x807f('0xb')](_0x5cde1a,_0x5346dc)[_0x807f('0xc')](function(_0x3cc25a){logger[_0x807f('0xd')](_0x807f('0xe'),_0x58f1ab,'request\x20sent');logger['debug'](_0x807f('0xf'),_0x58f1ab,_0x807f('0x10'),JSON[_0x807f('0x11')](_0x3cc25a));if(_0x3cc25a[_0x807f('0x12')]){if(_0x3cc25a[_0x807f('0x12')][_0x807f('0x13')]===0x1f4){logger[_0x807f('0x12')]('FaxTransferReport,\x20%s,\x20%s',_0x58f1ab,_0x3cc25a['error']['message']);return _0x2d2622(_0x3cc25a[_0x807f('0x12')][_0x807f('0x14')]);}logger[_0x807f('0x12')]('FaxTransferReport,\x20%s,\x20%s',_0x58f1ab,_0x3cc25a[_0x807f('0x12')]['message']);return _0x59f45f(_0x3cc25a[_0x807f('0x12')]['message']);}else{logger[_0x807f('0xd')](_0x807f('0xe'),_0x58f1ab,_0x807f('0x10'));_0x59f45f(_0x3cc25a[_0x807f('0x15')][_0x807f('0x14')]);}})[_0x807f('0x16')](function(_0x12016d){logger[_0x807f('0x12')](_0x807f('0xe'),_0x58f1ab,_0x12016d);_0x2d2622(_0x12016d);});});}
\ No newline at end of file
+var _0x555a=['FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x51e617,_0x372b40){var _0xb8a6c9=function(_0x4a2d0d){while(--_0x4a2d0d){_0x51e617['push'](_0x51e617['shift']());}};_0xb8a6c9(++_0x372b40);}(_0x555a,0xc0));var _0xa555=function(_0x15ffd2,_0x4ec51d){_0x15ffd2=_0x15ffd2-0x0;var _0xdd1d5e=_0x555a[_0x15ffd2];return _0xdd1d5e;};'use strict';var _=require(_0xa555('0x0'));var util=require(_0xa555('0x1'));var moment=require(_0xa555('0x2'));var BPromise=require(_0xa555('0x3'));var rs=require(_0xa555('0x4'));var fs=require('fs');var Redis=require(_0xa555('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa555('0x6'))('rpc');var config=require(_0xa555('0x7'));var jayson=require(_0xa555('0x8'));var client=jayson[_0xa555('0x9')][_0xa555('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x274755,_0x3a91b9,_0x3f79d6){return new BPromise(function(_0x55ea00,_0x5b4731){return client[_0xa555('0xb')](_0x274755,_0x3f79d6)[_0xa555('0xc')](function(_0xffde6f){logger[_0xa555('0xd')]('FaxTransferReport,\x20%s,\x20%s',_0x3a91b9,_0xa555('0xe'));logger['debug'](_0xa555('0xf'),_0x3a91b9,'request\x20sent',JSON[_0xa555('0x10')](_0xffde6f));if(_0xffde6f[_0xa555('0x11')]){if(_0xffde6f[_0xa555('0x11')][_0xa555('0x12')]===0x1f4){logger[_0xa555('0x11')](_0xa555('0x13'),_0x3a91b9,_0xffde6f[_0xa555('0x11')][_0xa555('0x14')]);return _0x5b4731(_0xffde6f[_0xa555('0x11')][_0xa555('0x14')]);}logger[_0xa555('0x11')]('FaxTransferReport,\x20%s,\x20%s',_0x3a91b9,_0xffde6f[_0xa555('0x11')][_0xa555('0x14')]);return _0x55ea00(_0xffde6f[_0xa555('0x11')][_0xa555('0x14')]);}else{logger[_0xa555('0xd')](_0xa555('0x13'),_0x3a91b9,_0xa555('0xe'));_0x55ea00(_0xffde6f[_0xa555('0x15')]['message']);}})[_0xa555('0x16')](function(_0x3d3fb4){logger[_0xa555('0x11')]('FaxTransferReport,\x20%s,\x20%s',_0x3a91b9,_0x3d3fb4);_0x5b4731(_0x3d3fb4);});});}
\ No newline at end of file
index 3bfa0fa..8acf81a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79cc=['delete','destroy','exports','multer','util','path','Router','./faxTransferReport.controller','index','get','isAuthenticated','describe','/:id','show','post','create','put'];(function(_0x2dc29a,_0x4804cb){var _0x50b147=function(_0x4fcba3){while(--_0x4fcba3){_0x2dc29a['push'](_0x2dc29a['shift']());}};_0x50b147(++_0x4804cb);}(_0x79cc,0xf1));var _0xc79c=function(_0x31e5ca,_0x38af09){_0x31e5ca=_0x31e5ca-0x0;var _0x591b43=_0x79cc[_0x31e5ca];return _0x591b43;};'use strict';var multer=require(_0xc79c('0x0'));var util=require(_0xc79c('0x1'));var path=require(_0xc79c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc79c('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc79c('0x4'));router['get']('/',auth['isAuthenticated'](),controller[_0xc79c('0x5')]);router[_0xc79c('0x6')]('/describe',auth[_0xc79c('0x7')](),controller[_0xc79c('0x8')]);router['get'](_0xc79c('0x9'),auth[_0xc79c('0x7')](),controller[_0xc79c('0xa')]);router[_0xc79c('0xb')]('/',auth[_0xc79c('0x7')](),controller[_0xc79c('0xc')]);router[_0xc79c('0xd')](_0xc79c('0x9'),auth[_0xc79c('0x7')](),controller['update']);router[_0xc79c('0xe')](_0xc79c('0x9'),auth[_0xc79c('0x7')](),controller[_0xc79c('0xf')]);module[_0xc79c('0x10')]=router;
\ No newline at end of file
+var _0xb430=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','put','update','delete','destroy','exports'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xb430,0xdc));var _0x0b43=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xb430[_0x110c3d];return _0x226d67;};'use strict';var multer=require('multer');var util=require(_0x0b43('0x0'));var path=require(_0x0b43('0x1'));var timeout=require(_0x0b43('0x2'));var express=require(_0x0b43('0x3'));var router=express[_0x0b43('0x4')]();var fs_extra=require(_0x0b43('0x5'));var auth=require(_0x0b43('0x6'));var interaction=require(_0x0b43('0x7'));var config=require(_0x0b43('0x8'));var controller=require(_0x0b43('0x9'));router['get']('/',auth[_0x0b43('0xa')](),controller[_0x0b43('0xb')]);router[_0x0b43('0xc')](_0x0b43('0xd'),auth[_0x0b43('0xa')](),controller[_0x0b43('0xe')]);router[_0x0b43('0xc')](_0x0b43('0xf'),auth['isAuthenticated'](),controller[_0x0b43('0x10')]);router['post']('/',auth[_0x0b43('0xa')](),controller['create']);router[_0x0b43('0x11')](_0x0b43('0xf'),auth[_0x0b43('0xa')](),controller[_0x0b43('0x12')]);router[_0x0b43('0x13')](_0x0b43('0xf'),auth[_0x0b43('0xa')](),controller[_0x0b43('0x14')]);module[_0x0b43('0x15')]=router;
\ No newline at end of file
index 09ff4f7..49a5752 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d19=['/:id/fields','getFields','post','create','addConfiguration','put','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','/:id','show','/:id/configurations','isAuthenticated'];(function(_0xa481b2,_0x835199){var _0x43c888=function(_0x4cbb84){while(--_0x4cbb84){_0xa481b2['push'](_0xa481b2['shift']());}};_0x43c888(++_0x835199);}(_0x2d19,0xd7));var _0x92d1=function(_0x403115,_0x2d6d03){_0x403115=_0x403115-0x0;var _0x596ef3=_0x2d19[_0x403115];return _0x596ef3;};'use strict';var multer=require(_0x92d1('0x0'));var util=require(_0x92d1('0x1'));var path=require(_0x92d1('0x2'));var timeout=require(_0x92d1('0x3'));var express=require(_0x92d1('0x4'));var router=express['Router']();var fs_extra=require(_0x92d1('0x5'));var auth=require(_0x92d1('0x6'));var interaction=require(_0x92d1('0x7'));var config=require(_0x92d1('0x8'));var controller=require(_0x92d1('0x9'));router[_0x92d1('0xa')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x92d1('0xb'),auth['isAuthenticated'](),controller[_0x92d1('0xc')]);router[_0x92d1('0xa')](_0x92d1('0xd'),auth[_0x92d1('0xe')](),controller['getConfigurations']);router[_0x92d1('0xa')](_0x92d1('0xf'),auth[_0x92d1('0xe')](),controller[_0x92d1('0x10')]);router[_0x92d1('0x11')]('/',auth[_0x92d1('0xe')](),controller[_0x92d1('0x12')]);router[_0x92d1('0x11')](_0x92d1('0xd'),auth[_0x92d1('0xe')](),controller[_0x92d1('0x13')]);router[_0x92d1('0x14')]('/:id',auth[_0x92d1('0xe')](),controller['update']);router[_0x92d1('0x15')]('/:id',auth[_0x92d1('0xe')](),controller[_0x92d1('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x476e=['delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','./intDeskAccount.controller','index','get','isAuthenticated','/:id/configurations','getFields','create','post','/:id','update'];(function(_0x451a8f,_0x126ea8){var _0x536c54=function(_0x401dab){while(--_0x401dab){_0x451a8f['push'](_0x451a8f['shift']());}};_0x536c54(++_0x126ea8);}(_0x476e,0x6f));var _0xe476=function(_0xf35746,_0x1d2e35){_0xf35746=_0xf35746-0x0;var _0x87dfbd=_0x476e[_0xf35746];return _0x87dfbd;};'use strict';var multer=require('multer');var util=require(_0xe476('0x0'));var path=require(_0xe476('0x1'));var timeout=require(_0xe476('0x2'));var express=require('express');var router=express[_0xe476('0x3')]();var fs_extra=require(_0xe476('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xe476('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xe476('0x6')]);router[_0xe476('0x7')]('/:id',auth[_0xe476('0x8')](),controller['show']);router['get'](_0xe476('0x9'),auth['isAuthenticated'](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0xe476('0x8')](),controller[_0xe476('0xa')]);router['post']('/',auth[_0xe476('0x8')](),controller[_0xe476('0xb')]);router[_0xe476('0xc')](_0xe476('0x9'),auth[_0xe476('0x8')](),controller['addConfiguration']);router['put'](_0xe476('0xd'),auth['isAuthenticated'](),controller[_0xe476('0xe')]);router[_0xe476('0xf')](_0xe476('0xd'),auth[_0xe476('0x8')](),controller[_0xe476('0x10')]);module[_0xe476('0x11')]=router;
\ No newline at end of file
index 5767bf2..bdf4d8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd227=['basic','integrationTab','newTab','sequelize','exports','STRING'];(function(_0xb2ef67,_0x23f7ce){var _0x3044b4=function(_0x52bde1){while(--_0x52bde1){_0xb2ef67['push'](_0xb2ef67['shift']());}};_0x3044b4(++_0x23f7ce);}(_0xd227,0x123));var _0x7d22=function(_0x3d34da,_0x3abcc1){_0x3d34da=_0x3d34da-0x0;var _0xcf6af8=_0xd227[_0x3d34da];return _0xcf6af8;};'use strict';var Sequelize=require(_0x7d22('0x0'));module[_0x7d22('0x1')]={'name':{'type':Sequelize[_0x7d22('0x2')]},'description':{'type':Sequelize[_0x7d22('0x2')]},'username':{'type':Sequelize[_0x7d22('0x2')]},'remoteUri':{'type':Sequelize[_0x7d22('0x2')]},'authType':{'type':Sequelize['ENUM'](_0x7d22('0x3')),'defaultValue':_0x7d22('0x3')},'password':{'type':Sequelize[_0x7d22('0x2')]},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize[_0x7d22('0x2')]},'token':{'type':Sequelize[_0x7d22('0x2')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x7d22('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x7d22('0x4'),_0x7d22('0x5')),'defaultValue':_0x7d22('0x4')}};
\ No newline at end of file
+var _0xa5b2=['ENUM','integrationTab','newTab','exports','STRING','basic'];(function(_0x13594e,_0x6f0ed0){var _0x1a4f42=function(_0x30b064){while(--_0x30b064){_0x13594e['push'](_0x13594e['shift']());}};_0x1a4f42(++_0x6f0ed0);}(_0xa5b2,0x159));var _0x2a5b=function(_0x956671,_0x10d4b5){_0x956671=_0x956671-0x0;var _0x460fcd=_0xa5b2[_0x956671];return _0x460fcd;};'use strict';var Sequelize=require('sequelize');module[_0x2a5b('0x0')]={'name':{'type':Sequelize[_0x2a5b('0x1')]},'description':{'type':Sequelize[_0x2a5b('0x1')]},'username':{'type':Sequelize[_0x2a5b('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize['ENUM'](_0x2a5b('0x2')),'defaultValue':_0x2a5b('0x2')},'password':{'type':Sequelize[_0x2a5b('0x1')]},'consumerKey':{'type':Sequelize[_0x2a5b('0x1')]},'consumerSecret':{'type':Sequelize[_0x2a5b('0x1')]},'token':{'type':Sequelize[_0x2a5b('0x1')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x2a5b('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x2a5b('0x3')](_0x2a5b('0x4'),_0x2a5b('0x5')),'defaultValue':_0x2a5b('0x4')}};
\ No newline at end of file
index 9e26b60..0188a15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46a6=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','stack','name','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','DeskAccount','include','findAll','rows','catch','show','keys','rawAttributes','includeAll','find','body','params','destroy','getConfigurations','findOne','DeskConfiguration','pick','hasOwnProperty','addConfiguration','Subjects','channel','getDescriptions','create','DeskField','Descriptions','priority','password','consumerKey','consumerSecret','token','tokenSecret','remoteUri','slice','GET','format','%s/custom_fields','application/json','authType','basic','headers','Authorization','%s:%s','username','toString','_embedded','entries','active','label','test','statusCode','error','getFields','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0x46a6,0xe0));var _0x646a=function(_0x215e65,_0x183f97){_0x215e65=_0x215e65-0x0;var _0xa85842=_0x46a6[_0x215e65];return _0xa85842;};'use strict';var emlformat=require(_0x646a('0x0'));var rimraf=require(_0x646a('0x1'));var zipdir=require(_0x646a('0x2'));var jsonpatch=require(_0x646a('0x3'));var rp=require(_0x646a('0x4'));var moment=require(_0x646a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x646a('0x6'));var util=require(_0x646a('0x7'));var path=require(_0x646a('0x8'));var sox=require(_0x646a('0x9'));var csv=require(_0x646a('0xa'));var ejs=require(_0x646a('0xb'));var fs=require('fs');var fs_extra=require(_0x646a('0xc'));var _=require(_0x646a('0xd'));var squel=require(_0x646a('0xe'));var crypto=require(_0x646a('0xf'));var jsforce=require(_0x646a('0x10'));var deskjs=require(_0x646a('0x11'));var toCsv=require(_0x646a('0xa'));var querystring=require(_0x646a('0x12'));var Papa=require(_0x646a('0x13'));var Redis=require(_0x646a('0x14'));var authService=require(_0x646a('0x15'));var qs=require(_0x646a('0x16'));var as=require(_0x646a('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x646a('0x18'))(_0x646a('0x19'));var utils=require(_0x646a('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0x646a('0x1b'));var db=require(_0x646a('0x1c'))['db'];var integrations=require(_0x646a('0x1d'));function respondWithStatusCode(_0x5dd165,_0x404dad){_0x404dad=_0x404dad||0xcc;return function(_0x433495){if(_0x433495){return _0x5dd165[_0x646a('0x1e')](_0x404dad);}return _0x5dd165[_0x646a('0x1f')](_0x404dad)[_0x646a('0x20')]();};}function respondWithResult(_0x92d619,_0x183d49){_0x183d49=_0x183d49||0xc8;return function(_0x483677){if(_0x483677){return _0x92d619[_0x646a('0x1f')](_0x183d49)[_0x646a('0x21')](_0x483677);}};}function respondWithFilteredResult(_0x40c04d,_0x4327ec){return function(_0x41689e){if(_0x41689e){var _0x30edda=typeof _0x4327ec['offset']===_0x646a('0x22')&&typeof _0x4327ec[_0x646a('0x23')]===_0x646a('0x22');var _0x4809e5=_0x41689e[_0x646a('0x24')];var _0x23cbe0=_0x30edda?0x0:_0x4327ec[_0x646a('0x25')];var _0x51f0c5=_0x30edda?_0x41689e['count']:_0x4327ec[_0x646a('0x25')]+_0x4327ec['limit'];var _0x47ce46;if(_0x51f0c5>=_0x4809e5){_0x51f0c5=_0x4809e5;_0x47ce46=0xc8;}else{_0x47ce46=0xce;}_0x40c04d[_0x646a('0x1f')](_0x47ce46);return _0x40c04d[_0x646a('0x26')](_0x646a('0x27'),_0x23cbe0+'-'+_0x51f0c5+'/'+_0x4809e5)[_0x646a('0x21')](_0x41689e);}return null;};}function patchUpdates(_0x4af55b){return function(_0x410fa5){try{jsonpatch[_0x646a('0x28')](_0x410fa5,_0x4af55b,!![]);}catch(_0x4a77e7){return BPromise['reject'](_0x4a77e7);}return _0x410fa5[_0x646a('0x29')]();};}function saveUpdates(_0x56f966,_0x6a001c){return function(_0x369bf0){if(_0x369bf0){return _0x369bf0[_0x646a('0x2a')](_0x56f966)[_0x646a('0x2b')](function(_0x5a97c0){return _0x5a97c0;});}return null;};}function removeEntity(_0x32a906,_0x5c1941){return function(_0x5098f5){if(_0x5098f5){return _0x5098f5['destroy']()[_0x646a('0x2b')](function(){_0x32a906['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x21bf49,_0x517c68){return function(_0x48f0da){if(!_0x48f0da){_0x21bf49['sendStatus'](0x194);}return _0x48f0da;};}function handleError(_0x10984a,_0x2ef31f){_0x2ef31f=_0x2ef31f||0x1f4;return function(_0x3f9f37){logger['error'](_0x3f9f37[_0x646a('0x2c')]);if(_0x3f9f37['name']){delete _0x3f9f37[_0x646a('0x2d')];}_0x10984a[_0x646a('0x1f')](_0x2ef31f)['send'](_0x3f9f37);};}exports['index']=function(_0x6ae044,_0xdff050){var _0x79aaeb={},_0x121fd5={},_0x15093c={'count':0x0,'rows':[]};var _0x3657c0=_[_0x646a('0x2e')](db['DeskAccount']['rawAttributes'],function(_0x4cbdfc){return{'name':_0x4cbdfc[_0x646a('0x2f')],'type':_0x4cbdfc[_0x646a('0x30')][_0x646a('0x31')]};});_0x121fd5[_0x646a('0x32')]=_[_0x646a('0x2e')](_0x3657c0,'name');_0x121fd5[_0x646a('0x33')]=_['keys'](_0x6ae044[_0x646a('0x33')]);_0x121fd5[_0x646a('0x34')]=_[_0x646a('0x35')](_0x121fd5[_0x646a('0x32')],_0x121fd5[_0x646a('0x33')]);_0x79aaeb[_0x646a('0x36')]=_[_0x646a('0x35')](_0x121fd5['model'],qs[_0x646a('0x37')](_0x6ae044[_0x646a('0x33')][_0x646a('0x37')]));_0x79aaeb[_0x646a('0x36')]=_0x79aaeb[_0x646a('0x36')][_0x646a('0x38')]?_0x79aaeb[_0x646a('0x36')]:_0x121fd5[_0x646a('0x32')];if(!_0x6ae044['query']['hasOwnProperty'](_0x646a('0x39'))){_0x79aaeb[_0x646a('0x23')]=qs[_0x646a('0x23')](_0x6ae044[_0x646a('0x33')][_0x646a('0x23')]);_0x79aaeb[_0x646a('0x25')]=qs[_0x646a('0x25')](_0x6ae044[_0x646a('0x33')][_0x646a('0x25')]);}_0x79aaeb[_0x646a('0x3a')]=qs[_0x646a('0x3b')](_0x6ae044[_0x646a('0x33')][_0x646a('0x3b')]);_0x79aaeb[_0x646a('0x3c')]=qs[_0x646a('0x34')](_['pick'](_0x6ae044[_0x646a('0x33')],_0x121fd5[_0x646a('0x34')]),_0x3657c0);if(_0x6ae044['query'][_0x646a('0x3d')]){_0x79aaeb[_0x646a('0x3c')]=_[_0x646a('0x3e')](_0x79aaeb['where'],{'$or':_['map'](_0x3657c0,function(_0x1c94d5){if(_0x1c94d5[_0x646a('0x30')]!==_0x646a('0x3f')){var _0x29ec4e={};_0x29ec4e[_0x1c94d5[_0x646a('0x2d')]]={'$like':'%'+_0x6ae044[_0x646a('0x33')][_0x646a('0x3d')]+'%'};return _0x29ec4e;}})});}_0x79aaeb=_[_0x646a('0x3e')]({},_0x79aaeb,_0x6ae044[_0x646a('0x40')]);var _0x2d61f3={'where':_0x79aaeb[_0x646a('0x3c')]};return db[_0x646a('0x41')][_0x646a('0x24')](_0x2d61f3)[_0x646a('0x2b')](function(_0x53a828){_0x15093c[_0x646a('0x24')]=_0x53a828;if(_0x6ae044[_0x646a('0x33')]['includeAll']){_0x79aaeb[_0x646a('0x42')]=[{'all':!![]}];}return db[_0x646a('0x41')][_0x646a('0x43')](_0x79aaeb);})[_0x646a('0x2b')](function(_0x4eab63){_0x15093c[_0x646a('0x44')]=_0x4eab63;return _0x15093c;})['then'](respondWithFilteredResult(_0xdff050,_0x79aaeb))[_0x646a('0x45')](handleError(_0xdff050,null));};exports[_0x646a('0x46')]=function(_0x5e3669,_0x163d1d){var _0x5ee568={'raw':![],'where':{'id':_0x5e3669['params']['id']}},_0x496012={};_0x496012['model']=_[_0x646a('0x47')](db[_0x646a('0x41')][_0x646a('0x48')]);_0x496012[_0x646a('0x33')]=_[_0x646a('0x47')](_0x5e3669[_0x646a('0x33')]);_0x496012['filters']=_['intersection'](_0x496012[_0x646a('0x32')],_0x496012[_0x646a('0x33')]);_0x5ee568[_0x646a('0x36')]=_[_0x646a('0x35')](_0x496012[_0x646a('0x32')],qs[_0x646a('0x37')](_0x5e3669[_0x646a('0x33')][_0x646a('0x37')]));_0x5ee568['attributes']=_0x5ee568[_0x646a('0x36')][_0x646a('0x38')]?_0x5ee568['attributes']:_0x496012[_0x646a('0x32')];if(_0x5e3669[_0x646a('0x33')][_0x646a('0x49')]){_0x5ee568[_0x646a('0x42')]=[{'all':!![]}];}_0x5ee568=_[_0x646a('0x3e')]({},_0x5ee568,_0x5e3669[_0x646a('0x40')]);return db[_0x646a('0x41')][_0x646a('0x4a')](_0x5ee568)['then'](handleEntityNotFound(_0x163d1d,null))[_0x646a('0x2b')](respondWithResult(_0x163d1d,null))[_0x646a('0x45')](handleError(_0x163d1d,null));};exports['create']=function(_0x401b41,_0x1000cd){return db['DeskAccount']['create'](_0x401b41[_0x646a('0x4b')],{})[_0x646a('0x2b')](respondWithResult(_0x1000cd,0xc9))[_0x646a('0x45')](handleError(_0x1000cd,null));};exports['update']=function(_0x438b17,_0x480d90){if(_0x438b17[_0x646a('0x4b')]['id']){delete _0x438b17[_0x646a('0x4b')]['id'];}return db['DeskAccount'][_0x646a('0x4a')]({'where':{'id':_0x438b17[_0x646a('0x4c')]['id']}})['then'](handleEntityNotFound(_0x480d90,null))['then'](saveUpdates(_0x438b17[_0x646a('0x4b')],null))[_0x646a('0x2b')](respondWithResult(_0x480d90,null))['catch'](handleError(_0x480d90,null));};exports[_0x646a('0x4d')]=function(_0x57d71c,_0x253bfb){return db[_0x646a('0x41')][_0x646a('0x4a')]({'where':{'id':_0x57d71c[_0x646a('0x4c')]['id']}})[_0x646a('0x2b')](handleEntityNotFound(_0x253bfb,null))['then'](removeEntity(_0x253bfb,null))[_0x646a('0x45')](handleError(_0x253bfb,null));};exports[_0x646a('0x4e')]=function(_0x50fe86,_0x5cdb43,_0x522c60){var _0x4c315c={};var _0xb0a987={};var _0x1dd192;var _0x29660a;return db[_0x646a('0x41')][_0x646a('0x4f')]({'where':{'id':_0x50fe86[_0x646a('0x4c')]['id']}})[_0x646a('0x2b')](handleEntityNotFound(_0x5cdb43,null))[_0x646a('0x2b')](function(_0x18b34b){if(_0x18b34b){_0x1dd192=_0x18b34b;_0xb0a987[_0x646a('0x32')]=_[_0x646a('0x47')](db[_0x646a('0x50')]['rawAttributes']);_0xb0a987[_0x646a('0x33')]=_['keys'](_0x50fe86[_0x646a('0x33')]);_0xb0a987['filters']=_[_0x646a('0x35')](_0xb0a987[_0x646a('0x32')],_0xb0a987['query']);_0x4c315c['attributes']=_['intersection'](_0xb0a987[_0x646a('0x32')],qs[_0x646a('0x37')](_0x50fe86[_0x646a('0x33')][_0x646a('0x37')]));_0x4c315c[_0x646a('0x36')]=_0x4c315c[_0x646a('0x36')][_0x646a('0x38')]?_0x4c315c['attributes']:_0xb0a987['model'];_0x4c315c[_0x646a('0x3a')]=qs[_0x646a('0x3b')](_0x50fe86[_0x646a('0x33')][_0x646a('0x3b')]);_0x4c315c[_0x646a('0x3c')]=qs[_0x646a('0x34')](_[_0x646a('0x51')](_0x50fe86[_0x646a('0x33')],_0xb0a987[_0x646a('0x34')]));if(_0x50fe86[_0x646a('0x33')][_0x646a('0x3d')]){_0x4c315c['where']=_['merge'](_0x4c315c[_0x646a('0x3c')],{'$or':_[_0x646a('0x2e')](_0x4c315c[_0x646a('0x36')],function(_0x236d40){var _0x472395={};_0x472395[_0x236d40]={'$like':'%'+_0x50fe86[_0x646a('0x33')][_0x646a('0x3d')]+'%'};return _0x472395;})});}_0x4c315c=_[_0x646a('0x3e')]({},_0x4c315c,_0x50fe86['options']);return _0x1dd192[_0x646a('0x4e')](_0x4c315c);}})[_0x646a('0x2b')](function(_0x5e87ca){if(_0x5e87ca){_0x29660a=_0x5e87ca[_0x646a('0x38')];if(!_0x50fe86[_0x646a('0x33')][_0x646a('0x52')](_0x646a('0x39'))){_0x4c315c[_0x646a('0x23')]=qs[_0x646a('0x23')](_0x50fe86[_0x646a('0x33')][_0x646a('0x23')]);_0x4c315c[_0x646a('0x25')]=qs[_0x646a('0x25')](_0x50fe86[_0x646a('0x33')]['offset']);}return _0x1dd192[_0x646a('0x4e')](_0x4c315c);}})[_0x646a('0x2b')](function(_0x120064){if(_0x120064){return _0x120064?{'count':_0x29660a,'rows':_0x120064}:null;}})[_0x646a('0x2b')](respondWithResult(_0x5cdb43,null))['catch'](handleError(_0x5cdb43,null));};exports[_0x646a('0x53')]=function(_0x5f579b,_0x9dfbe,_0x2d22b1){if(_0x5f579b['body']['id']){delete _0x5f579b[_0x646a('0x4b')]['id'];}return db['DeskAccount'][_0x646a('0x4f')]({'where':{'id':_0x5f579b['params']['id']}})[_0x646a('0x2b')](handleEntityNotFound(_0x9dfbe,null))[_0x646a('0x2b')](function(_0xb3ab8){if(_0xb3ab8){_0x5f579b[_0x646a('0x4b')]['AccountId']=_0xb3ab8['id'];_0x5f579b[_0x646a('0x4b')][_0x646a('0x54')]=integrations['getSubjects'](_0x5f579b[_0x646a('0x4b')][_0x646a('0x55')],_0x5f579b[_0x646a('0x4b')][_0x646a('0x30')]);_0x5f579b[_0x646a('0x4b')]['Descriptions']=integrations[_0x646a('0x56')](_0x5f579b[_0x646a('0x4b')][_0x646a('0x55')],_0x5f579b[_0x646a('0x4b')][_0x646a('0x30')]);return db[_0x646a('0x50')][_0x646a('0x57')](_0x5f579b['body'],{'include':[{'model':db[_0x646a('0x58')],'as':_0x646a('0x54')},{'model':db[_0x646a('0x58')],'as':_0x646a('0x59')}]});}return null;})[_0x646a('0x2b')](respondWithResult(_0x9dfbe,null))[_0x646a('0x45')](handleError(_0x9dfbe,null));};exports['getFields']=function(_0x2db0b8,_0x3093d9,_0x44316a){var _0x407186=[{'name':_0x646a('0x5a'),'label':_0x646a('0x5a'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x308b7b='';return db[_0x646a('0x41')][_0x646a('0x4f')]({'where':{'id':_0x2db0b8[_0x646a('0x4c')]['id']},'attributes':['id','remoteUri','authType','username',_0x646a('0x5b'),_0x646a('0x5c'),_0x646a('0x5d'),_0x646a('0x5e'),_0x646a('0x5f')]})[_0x646a('0x2b')](handleEntityNotFound(_0x3093d9,null))[_0x646a('0x2b')](function(_0x1b0d85){if(_0x1b0d85){_0x308b7b=_0x1b0d85[_0x646a('0x60')];var _0x5e2a46=_0x308b7b[_0x646a('0x61')](-0x1);if(_0x5e2a46==='/'){_0x308b7b=_0x308b7b['substring'](0x0,_0x308b7b['lastIndexOf'](_0x5e2a46));}var _0x28763e={'method':_0x646a('0x62'),'uri':util[_0x646a('0x63')](_0x646a('0x64'),_0x308b7b),'headers':{'Content-Type':'application/json','Accept':_0x646a('0x65')},'json':!![]};if(_0x1b0d85[_0x646a('0x66')]===_0x646a('0x67')){_0x28763e[_0x646a('0x68')][_0x646a('0x69')]=util['format']('Basic\x20%s',new Buffer(util[_0x646a('0x63')](_0x646a('0x6a'),_0x1b0d85[_0x646a('0x6b')],_0x1b0d85['password']))[_0x646a('0x6c')]('base64'));}return rp(_0x28763e)[_0x646a('0x2b')](function(_0x1669db){return _0x407186['concat'](_['map'](_0x1669db[_0x646a('0x6d')][_0x646a('0x6e')],function(_0x2b55a2){return{'id':_0x2b55a2[_0x646a('0x2d')],'name':_0x2b55a2['name'],'type':_0x2b55a2[_0x646a('0x30')],'active':_0x2b55a2[_0x646a('0x6f')],'label':_0x2b55a2[_0x646a('0x70')],'custom':!![]};}));});}})[_0x646a('0x2b')](function(_0x546098){return{'count':_0x546098[_0x646a('0x38')],'rows':_0x546098};})[_0x646a('0x2b')](respondWithResult(_0x3093d9,null))[_0x646a('0x45')](function(_0x334fd3){var _0x3ea865=_0x2db0b8[_0x646a('0x33')][_0x646a('0x71')]?0x1f4:_0x334fd3[_0x646a('0x72')]||0x1f4;logger[_0x646a('0x73')]('getFields,\x20%s,\x20%s,\x20%s',_0x646a('0x74'),_0x3ea865,JSON[_0x646a('0x75')](_0x334fd3));delete _0x334fd3[_0x646a('0x2d')];if(_0x3ea865===0x191){_0x3ea865=0x190;}_0x3093d9['status'](_0x3ea865)[_0x646a('0x76')](_0x2db0b8[_0x646a('0x33')][_0x646a('0x71')]?{'message':_0x646a('0x77'),'statusCode':_0x334fd3[_0x646a('0x72')]}:_0x334fd3);});};
\ No newline at end of file
+var _0xa14f=['params','keys','create','body','find','getConfigurations','findOne','DeskConfiguration','order','addConfiguration','AccountId','Descriptions','DeskField','Subjects','priority','remoteUri','authType','password','consumerSecret','tokenSecret','substring','format','%s/custom_fields','basic','headers','Basic\x20%s','%s:%s','toString','base64','concat','entries','label','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','rimraf','zip-dir','fast-json-patch','util','path','sox','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','sendStatus','stack','name','index','map','DeskAccount','rawAttributes','fieldName','type','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show'];(function(_0x35437c,_0x2f1a8e){var _0x194b00=function(_0x1489d8){while(--_0x1489d8){_0x35437c['push'](_0x35437c['shift']());}};_0x194b00(++_0x2f1a8e);}(_0xa14f,0x1ca));var _0xfa14=function(_0x2e276b,_0x500da4){_0x2e276b=_0x2e276b-0x0;var _0x30f7da=_0xa14f[_0x2e276b];return _0x30f7da;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfa14('0x0'));var zipdir=require(_0xfa14('0x1'));var jsonpatch=require(_0xfa14('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xfa14('0x3'));var path=require(_0xfa14('0x4'));var sox=require(_0xfa14('0x5'));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(_0xfa14('0x6'));var crypto=require(_0xfa14('0x7'));var jsforce=require(_0xfa14('0x8'));var deskjs=require(_0xfa14('0x9'));var toCsv=require(_0xfa14('0xa'));var querystring=require('querystring');var Papa=require(_0xfa14('0xb'));var Redis=require('ioredis');var authService=require(_0xfa14('0xc'));var qs=require(_0xfa14('0xd'));var as=require(_0xfa14('0xe'));var hardwareService=require(_0xfa14('0xf'));var logger=require(_0xfa14('0x10'))(_0xfa14('0x11'));var utils=require(_0xfa14('0x12'));var config=require(_0xfa14('0x13'));var licenseUtil=require(_0xfa14('0x14'));var db=require(_0xfa14('0x15'))['db'];var integrations=require(_0xfa14('0x16'));function respondWithStatusCode(_0x5b5321,_0x31129a){_0x31129a=_0x31129a||0xcc;return function(_0x2064a8){if(_0x2064a8){return _0x5b5321['sendStatus'](_0x31129a);}return _0x5b5321[_0xfa14('0x17')](_0x31129a)[_0xfa14('0x18')]();};}function respondWithResult(_0x2dc6d4,_0x123f18){_0x123f18=_0x123f18||0xc8;return function(_0x5ea1a8){if(_0x5ea1a8){return _0x2dc6d4[_0xfa14('0x17')](_0x123f18)[_0xfa14('0x19')](_0x5ea1a8);}};}function respondWithFilteredResult(_0x321cde,_0x325a2e){return function(_0x185cc3){if(_0x185cc3){var _0x4ba1e1=typeof _0x325a2e[_0xfa14('0x1a')]==='undefined'&&typeof _0x325a2e[_0xfa14('0x1b')]===_0xfa14('0x1c');var _0x3db1ed=_0x185cc3[_0xfa14('0x1d')];var _0x2c3330=_0x4ba1e1?0x0:_0x325a2e['offset'];var _0x3c43cf=_0x4ba1e1?_0x185cc3[_0xfa14('0x1d')]:_0x325a2e[_0xfa14('0x1a')]+_0x325a2e[_0xfa14('0x1b')];var _0x2dafdb;if(_0x3c43cf>=_0x3db1ed){_0x3c43cf=_0x3db1ed;_0x2dafdb=0xc8;}else{_0x2dafdb=0xce;}_0x321cde[_0xfa14('0x17')](_0x2dafdb);return _0x321cde[_0xfa14('0x1e')](_0xfa14('0x1f'),_0x2c3330+'-'+_0x3c43cf+'/'+_0x3db1ed)['json'](_0x185cc3);}return null;};}function patchUpdates(_0xa4424f){return function(_0x4edf06){try{jsonpatch[_0xfa14('0x20')](_0x4edf06,_0xa4424f,!![]);}catch(_0x2d4f75){return BPromise[_0xfa14('0x21')](_0x2d4f75);}return _0x4edf06[_0xfa14('0x22')]();};}function saveUpdates(_0x1a0383,_0xa04187){return function(_0x4db415){if(_0x4db415){return _0x4db415[_0xfa14('0x23')](_0x1a0383)[_0xfa14('0x24')](function(_0x39f50b){return _0x39f50b;});}return null;};}function removeEntity(_0xb23e2b,_0x3b34a2){return function(_0x42b780){if(_0x42b780){return _0x42b780['destroy']()['then'](function(){_0xb23e2b[_0xfa14('0x17')](0xcc)[_0xfa14('0x18')]();});}};}function handleEntityNotFound(_0x23f603,_0x390366){return function(_0x507845){if(!_0x507845){_0x23f603[_0xfa14('0x25')](0x194);}return _0x507845;};}function handleError(_0x11a06a,_0x17587a){_0x17587a=_0x17587a||0x1f4;return function(_0x1ac595){logger['error'](_0x1ac595[_0xfa14('0x26')]);if(_0x1ac595['name']){delete _0x1ac595[_0xfa14('0x27')];}_0x11a06a[_0xfa14('0x17')](_0x17587a)['send'](_0x1ac595);};}exports[_0xfa14('0x28')]=function(_0x3c60a0,_0x2d4c7e){var _0x3314d1={},_0x325e3c={},_0x3feba8={'count':0x0,'rows':[]};var _0x2b1229=_[_0xfa14('0x29')](db[_0xfa14('0x2a')][_0xfa14('0x2b')],function(_0x23d69d){return{'name':_0x23d69d[_0xfa14('0x2c')],'type':_0x23d69d[_0xfa14('0x2d')]['key']};});_0x325e3c['model']=_['map'](_0x2b1229,_0xfa14('0x27'));_0x325e3c[_0xfa14('0x2e')]=_['keys'](_0x3c60a0[_0xfa14('0x2e')]);_0x325e3c[_0xfa14('0x2f')]=_[_0xfa14('0x30')](_0x325e3c[_0xfa14('0x31')],_0x325e3c[_0xfa14('0x2e')]);_0x3314d1[_0xfa14('0x32')]=_[_0xfa14('0x30')](_0x325e3c[_0xfa14('0x31')],qs[_0xfa14('0x33')](_0x3c60a0[_0xfa14('0x2e')][_0xfa14('0x33')]));_0x3314d1[_0xfa14('0x32')]=_0x3314d1['attributes'][_0xfa14('0x34')]?_0x3314d1[_0xfa14('0x32')]:_0x325e3c[_0xfa14('0x31')];if(!_0x3c60a0['query'][_0xfa14('0x35')](_0xfa14('0x36'))){_0x3314d1[_0xfa14('0x1b')]=qs[_0xfa14('0x1b')](_0x3c60a0['query'][_0xfa14('0x1b')]);_0x3314d1['offset']=qs['offset'](_0x3c60a0[_0xfa14('0x2e')]['offset']);}_0x3314d1['order']=qs[_0xfa14('0x37')](_0x3c60a0['query'][_0xfa14('0x37')]);_0x3314d1[_0xfa14('0x38')]=qs[_0xfa14('0x2f')](_[_0xfa14('0x39')](_0x3c60a0['query'],_0x325e3c[_0xfa14('0x2f')]),_0x2b1229);if(_0x3c60a0[_0xfa14('0x2e')][_0xfa14('0x3a')]){_0x3314d1[_0xfa14('0x38')]=_[_0xfa14('0x3b')](_0x3314d1[_0xfa14('0x38')],{'$or':_[_0xfa14('0x29')](_0x2b1229,function(_0x1a5983){if(_0x1a5983[_0xfa14('0x2d')]!==_0xfa14('0x3c')){var _0x4e115f={};_0x4e115f[_0x1a5983['name']]={'$like':'%'+_0x3c60a0['query']['filter']+'%'};return _0x4e115f;}})});}_0x3314d1=_[_0xfa14('0x3b')]({},_0x3314d1,_0x3c60a0[_0xfa14('0x3d')]);var _0x1314da={'where':_0x3314d1['where']};return db[_0xfa14('0x2a')][_0xfa14('0x1d')](_0x1314da)['then'](function(_0x25c71b){_0x3feba8[_0xfa14('0x1d')]=_0x25c71b;if(_0x3c60a0[_0xfa14('0x2e')][_0xfa14('0x3e')]){_0x3314d1[_0xfa14('0x3f')]=[{'all':!![]}];}return db[_0xfa14('0x2a')][_0xfa14('0x40')](_0x3314d1);})[_0xfa14('0x24')](function(_0x34eb0e){_0x3feba8['rows']=_0x34eb0e;return _0x3feba8;})[_0xfa14('0x24')](respondWithFilteredResult(_0x2d4c7e,_0x3314d1))[_0xfa14('0x41')](handleError(_0x2d4c7e,null));};exports[_0xfa14('0x42')]=function(_0x3c13fc,_0x420983){var _0x19089d={'raw':![],'where':{'id':_0x3c13fc[_0xfa14('0x43')]['id']}},_0x5c6027={};_0x5c6027[_0xfa14('0x31')]=_[_0xfa14('0x44')](db['DeskAccount'][_0xfa14('0x2b')]);_0x5c6027[_0xfa14('0x2e')]=_[_0xfa14('0x44')](_0x3c13fc[_0xfa14('0x2e')]);_0x5c6027[_0xfa14('0x2f')]=_[_0xfa14('0x30')](_0x5c6027[_0xfa14('0x31')],_0x5c6027[_0xfa14('0x2e')]);_0x19089d[_0xfa14('0x32')]=_[_0xfa14('0x30')](_0x5c6027[_0xfa14('0x31')],qs[_0xfa14('0x33')](_0x3c13fc['query'][_0xfa14('0x33')]));_0x19089d[_0xfa14('0x32')]=_0x19089d['attributes'][_0xfa14('0x34')]?_0x19089d['attributes']:_0x5c6027[_0xfa14('0x31')];if(_0x3c13fc['query'][_0xfa14('0x3e')]){_0x19089d[_0xfa14('0x3f')]=[{'all':!![]}];}_0x19089d=_['merge']({},_0x19089d,_0x3c13fc['options']);return db[_0xfa14('0x2a')]['find'](_0x19089d)[_0xfa14('0x24')](handleEntityNotFound(_0x420983,null))[_0xfa14('0x24')](respondWithResult(_0x420983,null))[_0xfa14('0x41')](handleError(_0x420983,null));};exports[_0xfa14('0x45')]=function(_0x3383c,_0x497678){return db[_0xfa14('0x2a')][_0xfa14('0x45')](_0x3383c[_0xfa14('0x46')],{})[_0xfa14('0x24')](respondWithResult(_0x497678,0xc9))[_0xfa14('0x41')](handleError(_0x497678,null));};exports[_0xfa14('0x23')]=function(_0x38bd08,_0x5dcfb7){if(_0x38bd08[_0xfa14('0x46')]['id']){delete _0x38bd08['body']['id'];}return db['DeskAccount'][_0xfa14('0x47')]({'where':{'id':_0x38bd08['params']['id']}})[_0xfa14('0x24')](handleEntityNotFound(_0x5dcfb7,null))[_0xfa14('0x24')](saveUpdates(_0x38bd08[_0xfa14('0x46')],null))[_0xfa14('0x24')](respondWithResult(_0x5dcfb7,null))[_0xfa14('0x41')](handleError(_0x5dcfb7,null));};exports['destroy']=function(_0x1210d4,_0x400c18){return db[_0xfa14('0x2a')]['find']({'where':{'id':_0x1210d4[_0xfa14('0x43')]['id']}})[_0xfa14('0x24')](handleEntityNotFound(_0x400c18,null))['then'](removeEntity(_0x400c18,null))[_0xfa14('0x41')](handleError(_0x400c18,null));};exports[_0xfa14('0x48')]=function(_0xd22703,_0x163c9f,_0x27e2d9){var _0x39be76={};var _0x4a43f3={};var _0x58c7a0;var _0x20a34b;return db[_0xfa14('0x2a')][_0xfa14('0x49')]({'where':{'id':_0xd22703[_0xfa14('0x43')]['id']}})[_0xfa14('0x24')](handleEntityNotFound(_0x163c9f,null))[_0xfa14('0x24')](function(_0x3b5f51){if(_0x3b5f51){_0x58c7a0=_0x3b5f51;_0x4a43f3['model']=_[_0xfa14('0x44')](db[_0xfa14('0x4a')][_0xfa14('0x2b')]);_0x4a43f3[_0xfa14('0x2e')]=_[_0xfa14('0x44')](_0xd22703[_0xfa14('0x2e')]);_0x4a43f3[_0xfa14('0x2f')]=_[_0xfa14('0x30')](_0x4a43f3[_0xfa14('0x31')],_0x4a43f3[_0xfa14('0x2e')]);_0x39be76[_0xfa14('0x32')]=_['intersection'](_0x4a43f3['model'],qs[_0xfa14('0x33')](_0xd22703[_0xfa14('0x2e')][_0xfa14('0x33')]));_0x39be76[_0xfa14('0x32')]=_0x39be76[_0xfa14('0x32')][_0xfa14('0x34')]?_0x39be76['attributes']:_0x4a43f3[_0xfa14('0x31')];_0x39be76[_0xfa14('0x4b')]=qs[_0xfa14('0x37')](_0xd22703[_0xfa14('0x2e')][_0xfa14('0x37')]);_0x39be76[_0xfa14('0x38')]=qs[_0xfa14('0x2f')](_[_0xfa14('0x39')](_0xd22703[_0xfa14('0x2e')],_0x4a43f3[_0xfa14('0x2f')]));if(_0xd22703['query'][_0xfa14('0x3a')]){_0x39be76[_0xfa14('0x38')]=_['merge'](_0x39be76['where'],{'$or':_['map'](_0x39be76['attributes'],function(_0x94f91e){var _0x5a335d={};_0x5a335d[_0x94f91e]={'$like':'%'+_0xd22703[_0xfa14('0x2e')]['filter']+'%'};return _0x5a335d;})});}_0x39be76=_['merge']({},_0x39be76,_0xd22703[_0xfa14('0x3d')]);return _0x58c7a0[_0xfa14('0x48')](_0x39be76);}})[_0xfa14('0x24')](function(_0x38c854){if(_0x38c854){_0x20a34b=_0x38c854[_0xfa14('0x34')];if(!_0xd22703[_0xfa14('0x2e')][_0xfa14('0x35')](_0xfa14('0x36'))){_0x39be76['limit']=qs[_0xfa14('0x1b')](_0xd22703[_0xfa14('0x2e')][_0xfa14('0x1b')]);_0x39be76[_0xfa14('0x1a')]=qs['offset'](_0xd22703[_0xfa14('0x2e')][_0xfa14('0x1a')]);}return _0x58c7a0[_0xfa14('0x48')](_0x39be76);}})[_0xfa14('0x24')](function(_0x4eab46){if(_0x4eab46){return _0x4eab46?{'count':_0x20a34b,'rows':_0x4eab46}:null;}})['then'](respondWithResult(_0x163c9f,null))['catch'](handleError(_0x163c9f,null));};exports[_0xfa14('0x4c')]=function(_0x170e48,_0x10109f,_0x579fc9){if(_0x170e48['body']['id']){delete _0x170e48[_0xfa14('0x46')]['id'];}return db[_0xfa14('0x2a')][_0xfa14('0x49')]({'where':{'id':_0x170e48[_0xfa14('0x43')]['id']}})[_0xfa14('0x24')](handleEntityNotFound(_0x10109f,null))[_0xfa14('0x24')](function(_0x3e368d){if(_0x3e368d){_0x170e48[_0xfa14('0x46')][_0xfa14('0x4d')]=_0x3e368d['id'];_0x170e48[_0xfa14('0x46')]['Subjects']=integrations['getSubjects'](_0x170e48[_0xfa14('0x46')]['channel'],_0x170e48[_0xfa14('0x46')][_0xfa14('0x2d')]);_0x170e48[_0xfa14('0x46')][_0xfa14('0x4e')]=integrations['getDescriptions'](_0x170e48[_0xfa14('0x46')]['channel'],_0x170e48['body'][_0xfa14('0x2d')]);return db[_0xfa14('0x4a')][_0xfa14('0x45')](_0x170e48[_0xfa14('0x46')],{'include':[{'model':db[_0xfa14('0x4f')],'as':_0xfa14('0x50')},{'model':db[_0xfa14('0x4f')],'as':_0xfa14('0x4e')}]});}return null;})[_0xfa14('0x24')](respondWithResult(_0x10109f,null))[_0xfa14('0x41')](handleError(_0x10109f,null));};exports['getFields']=function(_0x5525dc,_0x42eef7,_0x538d80){var _0xcbbb52=[{'name':_0xfa14('0x51'),'label':_0xfa14('0x51'),'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 _0xa565f='';return db['DeskAccount']['findOne']({'where':{'id':_0x5525dc[_0xfa14('0x43')]['id']},'attributes':['id',_0xfa14('0x52'),_0xfa14('0x53'),'username',_0xfa14('0x54'),'consumerKey',_0xfa14('0x55'),'token',_0xfa14('0x56')]})[_0xfa14('0x24')](handleEntityNotFound(_0x42eef7,null))[_0xfa14('0x24')](function(_0x13c426){if(_0x13c426){_0xa565f=_0x13c426['remoteUri'];var _0xcae1af=_0xa565f['slice'](-0x1);if(_0xcae1af==='/'){_0xa565f=_0xa565f[_0xfa14('0x57')](0x0,_0xa565f['lastIndexOf'](_0xcae1af));}var _0x2b1e93={'method':'GET','uri':util[_0xfa14('0x58')](_0xfa14('0x59'),_0xa565f),'headers':{'Content-Type':'application/json','Accept':'application/json'},'json':!![]};if(_0x13c426['authType']===_0xfa14('0x5a')){_0x2b1e93[_0xfa14('0x5b')]['Authorization']=util[_0xfa14('0x58')](_0xfa14('0x5c'),new Buffer(util['format'](_0xfa14('0x5d'),_0x13c426['username'],_0x13c426[_0xfa14('0x54')]))[_0xfa14('0x5e')](_0xfa14('0x5f')));}return rp(_0x2b1e93)[_0xfa14('0x24')](function(_0xb269bb){return _0xcbbb52[_0xfa14('0x60')](_[_0xfa14('0x29')](_0xb269bb['_embedded'][_0xfa14('0x61')],function(_0x2511c9){return{'id':_0x2511c9['name'],'name':_0x2511c9[_0xfa14('0x27')],'type':_0x2511c9['type'],'active':_0x2511c9['active'],'label':_0x2511c9[_0xfa14('0x62')],'custom':!![]};}));});}})[_0xfa14('0x24')](function(_0x445e3f){return{'count':_0x445e3f['length'],'rows':_0x445e3f};})[_0xfa14('0x24')](respondWithResult(_0x42eef7,null))[_0xfa14('0x41')](function(_0x4d276c){var _0x2bae78=_0x5525dc[_0xfa14('0x2e')][_0xfa14('0x63')]?0x1f4:_0x4d276c[_0xfa14('0x64')]||0x1f4;logger[_0xfa14('0x65')](_0xfa14('0x66'),_0xfa14('0x67'),_0x2bae78,JSON[_0xfa14('0x68')](_0x4d276c));delete _0x4d276c[_0xfa14('0x27')];if(_0x2bae78===0x191){_0x2bae78=0x190;}_0x42eef7['status'](_0x2bae78)['send'](_0x5525dc[_0xfa14('0x2e')][_0xfa14('0x63')]?{'message':'Wrong\x20credentials','statusCode':_0x4d276c[_0xfa14('0x64')]}:_0x4d276c);});};
\ No newline at end of file
index 0ae04b4..9d02c4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a36=['exports','define','lodash','util','api','moment','bluebird','path','../../config/environment','./intDeskAccount.attributes'];(function(_0x247fa1,_0x4ec37c){var _0x244f35=function(_0xfb98be){while(--_0xfb98be){_0x247fa1['push'](_0x247fa1['shift']());}};_0x244f35(++_0x4ec37c);}(_0x9a36,0xd4));var _0x69a3=function(_0x37c2bb,_0x340eab){_0x37c2bb=_0x37c2bb-0x0;var _0x22add5=_0x9a36[_0x37c2bb];return _0x22add5;};'use strict';var _=require(_0x69a3('0x0'));var util=require(_0x69a3('0x1'));var logger=require('../../config/logger')(_0x69a3('0x2'));var moment=require(_0x69a3('0x3'));var BPromise=require(_0x69a3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x69a3('0x5'));var rimraf=require('rimraf');var config=require(_0x69a3('0x6'));var attributes=require(_0x69a3('0x7'));var integrations=require('../../components/integrations/configuration');module[_0x69a3('0x8')]=function(_0x2673dd,_0xa2d9ac){return _0x2673dd[_0x69a3('0x9')]('DeskAccount',attributes,{'tableName':'int_desk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe179=['exports','define','DeskAccount','int_desk_accounts','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration'];(function(_0x1380ee,_0x112120){var _0xe5c5a6=function(_0x1a57dc){while(--_0x1a57dc){_0x1380ee['push'](_0x1380ee['shift']());}};_0xe5c5a6(++_0x112120);}(_0xe179,0x12a));var _0x9e17=function(_0x474bc0,_0x26989c){_0x474bc0=_0x474bc0-0x0;var _0x4b24cf=_0xe179[_0x474bc0];return _0x4b24cf;};'use strict';var _=require(_0x9e17('0x0'));var util=require('util');var logger=require(_0x9e17('0x1'))(_0x9e17('0x2'));var moment=require(_0x9e17('0x3'));var BPromise=require(_0x9e17('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9e17('0x5'));var rimraf=require(_0x9e17('0x6'));var config=require(_0x9e17('0x7'));var attributes=require(_0x9e17('0x8'));var integrations=require(_0x9e17('0x9'));module[_0x9e17('0xa')]=function(_0xf6a4b9,_0x2aca7d){return _0xf6a4b9[_0x9e17('0xb')](_0x9e17('0xc'),attributes,{'tableName':_0x9e17('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a6f4c39..fe5b1af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96f4=['options','raw','where','limit','include','map','attributes','model','then','GetDeskAccount','ShowDeskAccount','find','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','DeskAccount'];(function(_0x13f733,_0x41a917){var _0x42fe89=function(_0x4dbebe){while(--_0x4dbebe){_0x13f733['push'](_0x13f733['shift']());}};_0x42fe89(++_0x41a917);}(_0x96f4,0xb6));var _0x496f=function(_0x1a9e78,_0x180720){_0x1a9e78=_0x1a9e78-0x0;var _0x113e06=_0x96f4[_0x1a9e78];return _0x113e06;};'use strict';var _=require(_0x496f('0x0'));var util=require(_0x496f('0x1'));var moment=require(_0x496f('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x496f('0x3'));var db=require(_0x496f('0x4'))['db'];var utils=require(_0x496f('0x5'));var logger=require('../../config/logger')(_0x496f('0x6'));var config=require(_0x496f('0x7'));var jayson=require(_0x496f('0x8'));var client=jayson[_0x496f('0x9')][_0x496f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2306a7,_0xa2f1b8,_0x3062fe){return new BPromise(function(_0x1e71e8,_0xbff740){return client[_0x496f('0xb')](_0x2306a7,_0x3062fe)['then'](function(_0x7532ab){logger['info'](_0x496f('0xc'),_0xa2f1b8,_0x496f('0xd'));logger[_0x496f('0xe')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0xa2f1b8,'request\x20sent',JSON[_0x496f('0xf')](_0x7532ab));if(_0x7532ab['error']){if(_0x7532ab[_0x496f('0x10')][_0x496f('0x11')]===0x1f4){logger['error'](_0x496f('0xc'),_0xa2f1b8,_0x7532ab[_0x496f('0x10')][_0x496f('0x12')]);return _0xbff740(_0x7532ab[_0x496f('0x10')][_0x496f('0x12')]);}logger[_0x496f('0x10')](_0x496f('0xc'),_0xa2f1b8,_0x7532ab[_0x496f('0x10')]['message']);return _0x1e71e8(_0x7532ab[_0x496f('0x10')][_0x496f('0x12')]);}else{logger[_0x496f('0x13')](_0x496f('0xc'),_0xa2f1b8,_0x496f('0xd'));_0x1e71e8(_0x7532ab['result'][_0x496f('0x12')]);}})[_0x496f('0x14')](function(_0x13ee06){logger[_0x496f('0x10')](_0x496f('0xc'),_0xa2f1b8,_0x13ee06);_0xbff740(_0x13ee06);});});}exports['GetDeskAccount']=function(_0x4134bc){var _0x5b0a26=this;return new Promise(function(_0x224229,_0x4c2dae){return db[_0x496f('0x15')]['findAll']({'raw':_0x4134bc[_0x496f('0x16')]?_0x4134bc[_0x496f('0x16')][_0x496f('0x17')]===undefined?!![]:![]:!![],'where':_0x4134bc[_0x496f('0x16')]?_0x4134bc[_0x496f('0x16')][_0x496f('0x18')]||null:null,'attributes':_0x4134bc[_0x496f('0x16')]?_0x4134bc[_0x496f('0x16')]['attributes']||null:null,'limit':_0x4134bc['options']?_0x4134bc[_0x496f('0x16')][_0x496f('0x19')]||null:null,'include':_0x4134bc['options']?_0x4134bc[_0x496f('0x16')][_0x496f('0x1a')]?_[_0x496f('0x1b')](_0x4134bc[_0x496f('0x16')][_0x496f('0x1a')],function(_0x495e5f){return{'model':db[_0x495e5f['model']],'as':_0x495e5f['as'],'attributes':_0x495e5f[_0x496f('0x1c')],'include':_0x495e5f[_0x496f('0x1a')]?_[_0x496f('0x1b')](_0x495e5f[_0x496f('0x1a')],function(_0x141baf){return{'model':db[_0x141baf[_0x496f('0x1d')]],'as':_0x141baf['as'],'attributes':_0x141baf[_0x496f('0x1c')],'include':_0x141baf[_0x496f('0x1a')]?_[_0x496f('0x1b')](_0x141baf['include'],function(_0x4d41b4){return{'model':db[_0x4d41b4['model']],'as':_0x4d41b4['as'],'attributes':_0x4d41b4[_0x496f('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x496f('0x1e')](function(_0x38b988){logger['info']('GetDeskAccount',_0x4134bc);logger[_0x496f('0xe')](_0x496f('0x1f'),_0x4134bc,JSON[_0x496f('0xf')](_0x38b988));_0x224229(_0x38b988);})[_0x496f('0x14')](function(_0x2ae30e){logger[_0x496f('0x10')](_0x496f('0x1f'),_0x2ae30e[_0x496f('0x12')],_0x4134bc);_0x4c2dae(_0x5b0a26[_0x496f('0x10')](0x1f4,_0x2ae30e[_0x496f('0x12')]));});});};exports[_0x496f('0x20')]=function(_0x390c89){var _0x36ebc3=this;return new Promise(function(_0x2ff825,_0x3cf0a2){return db[_0x496f('0x15')][_0x496f('0x21')]({'raw':_0x390c89['options']?_0x390c89[_0x496f('0x16')][_0x496f('0x17')]===undefined?!![]:![]:!![],'where':_0x390c89['options']?_0x390c89[_0x496f('0x16')][_0x496f('0x18')]||null:null,'attributes':_0x390c89[_0x496f('0x16')]?_0x390c89[_0x496f('0x16')][_0x496f('0x1c')]||null:null,'include':_0x390c89[_0x496f('0x16')]?_0x390c89['options']['include']?_['map'](_0x390c89[_0x496f('0x16')][_0x496f('0x1a')],function(_0x3aa359){return{'model':db[_0x3aa359[_0x496f('0x1d')]],'as':_0x3aa359['as'],'attributes':_0x3aa359[_0x496f('0x1c')],'include':_0x3aa359['include']?_[_0x496f('0x1b')](_0x3aa359[_0x496f('0x1a')],function(_0xa6bf4a){return{'model':db[_0xa6bf4a[_0x496f('0x1d')]],'as':_0xa6bf4a['as'],'attributes':_0xa6bf4a[_0x496f('0x1c')],'include':_0xa6bf4a['include']?_[_0x496f('0x1b')](_0xa6bf4a[_0x496f('0x1a')],function(_0x5ed3a1){return{'model':db[_0x5ed3a1['model']],'as':_0x5ed3a1['as'],'attributes':_0x5ed3a1[_0x496f('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x496f('0x1e')](function(_0x1634f1){logger[_0x496f('0x13')]('ShowDeskAccount',_0x390c89);logger[_0x496f('0xe')](_0x496f('0x20'),_0x390c89,JSON[_0x496f('0xf')](_0x1634f1));_0x2ff825(_0x1634f1);})['catch'](function(_0x3467c4){logger[_0x496f('0x10')](_0x496f('0x20'),_0x3467c4[_0x496f('0x12')],_0x390c89);_0x3cf0a2(_0x36ebc3[_0x496f('0x10')](0x1f4,_0x3467c4[_0x496f('0x12')]));});});};
\ No newline at end of file
+var _0x91c5=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskAccount,\x20%s,\x20%s','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','GetDeskAccount','DeskAccount','findAll','options','attributes','limit','include','model','map','ShowDeskAccount','raw','where','lodash','util','moment','bluebird','../../config/utils'];(function(_0x55c979,_0x36c5f0){var _0x690107=function(_0xa61dad){while(--_0xa61dad){_0x55c979['push'](_0x55c979['shift']());}};_0x690107(++_0x36c5f0);}(_0x91c5,0x67));var _0x591c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x91c5[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x591c('0x0'));var util=require(_0x591c('0x1'));var moment=require(_0x591c('0x2'));var BPromise=require(_0x591c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x591c('0x4'));var logger=require(_0x591c('0x5'))(_0x591c('0x6'));var config=require(_0x591c('0x7'));var jayson=require(_0x591c('0x8'));var client=jayson[_0x591c('0x9')][_0x591c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f01f2,_0x38b69f,_0x5da5aa){return new BPromise(function(_0x12eb72,_0x50dfb0){return client[_0x591c('0xb')](_0x2f01f2,_0x5da5aa)[_0x591c('0xc')](function(_0xe173e8){logger[_0x591c('0xd')](_0x591c('0xe'),_0x38b69f,'request\x20sent');logger[_0x591c('0xf')](_0x591c('0x10'),_0x38b69f,'request\x20sent',JSON[_0x591c('0x11')](_0xe173e8));if(_0xe173e8[_0x591c('0x12')]){if(_0xe173e8[_0x591c('0x12')][_0x591c('0x13')]===0x1f4){logger['error'](_0x591c('0xe'),_0x38b69f,_0xe173e8[_0x591c('0x12')]['message']);return _0x50dfb0(_0xe173e8[_0x591c('0x12')][_0x591c('0x14')]);}logger[_0x591c('0x12')](_0x591c('0xe'),_0x38b69f,_0xe173e8[_0x591c('0x12')][_0x591c('0x14')]);return _0x12eb72(_0xe173e8[_0x591c('0x12')][_0x591c('0x14')]);}else{logger[_0x591c('0xd')](_0x591c('0xe'),_0x38b69f,_0x591c('0x15'));_0x12eb72(_0xe173e8[_0x591c('0x16')][_0x591c('0x14')]);}})[_0x591c('0x17')](function(_0x396e87){logger[_0x591c('0x12')](_0x591c('0xe'),_0x38b69f,_0x396e87);_0x50dfb0(_0x396e87);});});}exports[_0x591c('0x18')]=function(_0x5b458d){var _0x5372e8=this;return new Promise(function(_0x154d15,_0x4b2f31){return db[_0x591c('0x19')][_0x591c('0x1a')]({'raw':_0x5b458d[_0x591c('0x1b')]?_0x5b458d['options']['raw']===undefined?!![]:![]:!![],'where':_0x5b458d[_0x591c('0x1b')]?_0x5b458d[_0x591c('0x1b')]['where']||null:null,'attributes':_0x5b458d[_0x591c('0x1b')]?_0x5b458d[_0x591c('0x1b')][_0x591c('0x1c')]||null:null,'limit':_0x5b458d[_0x591c('0x1b')]?_0x5b458d['options'][_0x591c('0x1d')]||null:null,'include':_0x5b458d[_0x591c('0x1b')]?_0x5b458d[_0x591c('0x1b')][_0x591c('0x1e')]?_['map'](_0x5b458d[_0x591c('0x1b')][_0x591c('0x1e')],function(_0x19bb0c){return{'model':db[_0x19bb0c[_0x591c('0x1f')]],'as':_0x19bb0c['as'],'attributes':_0x19bb0c['attributes'],'include':_0x19bb0c[_0x591c('0x1e')]?_['map'](_0x19bb0c[_0x591c('0x1e')],function(_0x372a27){return{'model':db[_0x372a27[_0x591c('0x1f')]],'as':_0x372a27['as'],'attributes':_0x372a27[_0x591c('0x1c')],'include':_0x372a27[_0x591c('0x1e')]?_[_0x591c('0x20')](_0x372a27[_0x591c('0x1e')],function(_0x23dda4){return{'model':db[_0x23dda4['model']],'as':_0x23dda4['as'],'attributes':_0x23dda4['attributes']};}):[]};}):[]};}):[]:[]})[_0x591c('0xc')](function(_0x3c0df7){logger['info'](_0x591c('0x18'),_0x5b458d);logger[_0x591c('0xf')](_0x591c('0x18'),_0x5b458d,JSON[_0x591c('0x11')](_0x3c0df7));_0x154d15(_0x3c0df7);})[_0x591c('0x17')](function(_0x48456d){logger['error'](_0x591c('0x18'),_0x48456d[_0x591c('0x14')],_0x5b458d);_0x4b2f31(_0x5372e8[_0x591c('0x12')](0x1f4,_0x48456d['message']));});});};exports[_0x591c('0x21')]=function(_0x397b1d){var _0x849053=this;return new Promise(function(_0xf7470b,_0x13f7c3){return db[_0x591c('0x19')]['find']({'raw':_0x397b1d[_0x591c('0x1b')]?_0x397b1d[_0x591c('0x1b')][_0x591c('0x22')]===undefined?!![]:![]:!![],'where':_0x397b1d['options']?_0x397b1d[_0x591c('0x1b')][_0x591c('0x23')]||null:null,'attributes':_0x397b1d[_0x591c('0x1b')]?_0x397b1d[_0x591c('0x1b')][_0x591c('0x1c')]||null:null,'include':_0x397b1d[_0x591c('0x1b')]?_0x397b1d[_0x591c('0x1b')][_0x591c('0x1e')]?_['map'](_0x397b1d['options']['include'],function(_0x32a35f){return{'model':db[_0x32a35f[_0x591c('0x1f')]],'as':_0x32a35f['as'],'attributes':_0x32a35f[_0x591c('0x1c')],'include':_0x32a35f[_0x591c('0x1e')]?_[_0x591c('0x20')](_0x32a35f['include'],function(_0x37563b){return{'model':db[_0x37563b[_0x591c('0x1f')]],'as':_0x37563b['as'],'attributes':_0x37563b[_0x591c('0x1c')],'include':_0x37563b[_0x591c('0x1e')]?_[_0x591c('0x20')](_0x37563b[_0x591c('0x1e')],function(_0x2afcde){return{'model':db[_0x2afcde[_0x591c('0x1f')]],'as':_0x2afcde['as'],'attributes':_0x2afcde['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0xecb6bf){logger[_0x591c('0xd')](_0x591c('0x21'),_0x397b1d);logger[_0x591c('0xf')]('ShowDeskAccount',_0x397b1d,JSON[_0x591c('0x11')](_0xecb6bf));_0xf7470b(_0xecb6bf);})[_0x591c('0x17')](function(_0x471d6c){logger['error'](_0x591c('0x21'),_0x471d6c['message'],_0x397b1d);_0x13f7c3(_0x849053['error'](0x1f4,_0x471d6c['message']));});});};
\ No newline at end of file
index f902200..b099328 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(_0x2613e1,_0x6065a8){var _0x5a05bb=function(_0x5c7140){while(--_0x5c7140){_0x2613e1['push'](_0x2613e1['shift']());}};_0x5a05bb(++_0x6065a8);}(_0x3e74,0x175));var _0x43e7=function(_0x156758,_0x38df36){_0x156758=_0x156758-0x0;var _0x131c6c=_0x3e74[_0x156758];return _0x131c6c;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth['isAuthenticated'](),controller[_0x43e7('0xd')]);router['get']('/:id/subjects',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/tags',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0x13'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router['put']('/:id',auth[_0x43e7('0x8')](),controller[_0x43e7('0x15')]);router[_0x43e7('0x16')](_0x43e7('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x43e7('0x17')]=router;
\ No newline at end of file
+var _0x9c44=['destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','getSubjects','/:id/descriptions','/:id/tags','post','setTags','put','update'];(function(_0x3ac58b,_0x21997c){var _0x27a954=function(_0x48bfe8){while(--_0x48bfe8){_0x3ac58b['push'](_0x3ac58b['shift']());}};_0x27a954(++_0x21997c);}(_0x9c44,0x178));var _0x49c4=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0x9c44[_0x3d42d8];return _0x27fc41;};'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['show']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['get']('/:id/subjects',auth[_0x49c4('0x7')](),controller[_0x49c4('0xd')]);router['get'](_0x49c4('0xe'),auth[_0x49c4('0x7')](),controller['getDescriptions']);router['get'](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller['getTags']);router[_0x49c4('0x10')]('/',auth[_0x49c4('0x7')](),controller['create']);router[_0x49c4('0x10')](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x11')]);router[_0x49c4('0x12')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x13')]);router['delete'](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);module[_0x49c4('0x15')]=router;
\ No newline at end of file
index d40c0dd..ca234c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5093=['sequelize','exports','STRING'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0x5093,0x1d7));var _0x3509=function(_0x5c0b22,_0x56d46a){_0x5c0b22=_0x5c0b22-0x0;var _0x16a8a6=_0x5093[_0x5c0b22];return _0x16a8a6;};'use strict';var Sequelize=require(_0x3509('0x0'));module[_0x3509('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x3509('0x2')]}};
\ No newline at end of file
+var _0x8e76=['exports'];(function(_0x2a2b9b,_0x4bc7e7){var _0x3e4913=function(_0x29e1cb){while(--_0x29e1cb){_0x2a2b9b['push'](_0x2a2b9b['shift']());}};_0x3e4913(++_0x4bc7e7);}(_0x8e76,0xf8));var _0x68e7=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x8e76[_0x46aff0];return _0x9d78cf;};'use strict';var Sequelize=require('sequelize');module[_0x68e7('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 44587ca..5643b1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2393=['merge','options','count','includeAll','include','findAll','rows','catch','params','find','create','body','getFields','DeskField','nolimit','getSubjects','findOne','hasOwnProperty','getDescriptions','getTags','Tag','setTags','ids','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','limit','undefined','offset','set','Content-Range','save','update','destroy','then','stack','name','send','index','DeskConfiguration','rawAttributes','type','key','map','keys','query','filters','intersection','model','fields','attributes','length','order','sort','where','pick','VIRTUAL','filter'];(function(_0x38b8c,_0x4a0c9f){var _0x41f904=function(_0x3ecc4){while(--_0x3ecc4){_0x38b8c['push'](_0x38b8c['shift']());}};_0x41f904(++_0x4a0c9f);}(_0x2393,0x116));var _0x3239=function(_0x2a41f6,_0xc91ac1){_0x2a41f6=_0x2a41f6-0x0;var _0x1c1810=_0x2393[_0x2a41f6];return _0x1c1810;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3239('0x0'));var jsonpatch=require(_0x3239('0x1'));var rp=require(_0x3239('0x2'));var moment=require('moment');var BPromise=require(_0x3239('0x3'));var Mustache=require(_0x3239('0x4'));var util=require(_0x3239('0x5'));var path=require(_0x3239('0x6'));var sox=require(_0x3239('0x7'));var csv=require(_0x3239('0x8'));var ejs=require(_0x3239('0x9'));var fs=require('fs');var fs_extra=require(_0x3239('0xa'));var _=require(_0x3239('0xb'));var squel=require(_0x3239('0xc'));var crypto=require(_0x3239('0xd'));var jsforce=require(_0x3239('0xe'));var deskjs=require(_0x3239('0xf'));var toCsv=require('to-csv');var querystring=require(_0x3239('0x10'));var Papa=require(_0x3239('0x11'));var Redis=require(_0x3239('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x3239('0x13'));var as=require(_0x3239('0x14'));var hardwareService=require(_0x3239('0x15'));var logger=require(_0x3239('0x16'))(_0x3239('0x17'));var utils=require(_0x3239('0x18'));var config=require(_0x3239('0x19'));var licenseUtil=require(_0x3239('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4f0710,_0x5bc838){_0x5bc838=_0x5bc838||0xcc;return function(_0xc73fe9){if(_0xc73fe9){return _0x4f0710[_0x3239('0x1b')](_0x5bc838);}return _0x4f0710[_0x3239('0x1c')](_0x5bc838)['end']();};}function respondWithResult(_0x47c8b3,_0x17e708){_0x17e708=_0x17e708||0xc8;return function(_0x3bd862){if(_0x3bd862){return _0x47c8b3[_0x3239('0x1c')](_0x17e708)[_0x3239('0x1d')](_0x3bd862);}};}function respondWithFilteredResult(_0x3a6431,_0x183ff8){return function(_0x503a4b){if(_0x503a4b){var _0x2157bf=typeof _0x183ff8['offset']==='undefined'&&typeof _0x183ff8[_0x3239('0x1e')]===_0x3239('0x1f');var _0xc54236=_0x503a4b['count'];var _0x20e66a=_0x2157bf?0x0:_0x183ff8['offset'];var _0xbb4338=_0x2157bf?_0x503a4b['count']:_0x183ff8[_0x3239('0x20')]+_0x183ff8[_0x3239('0x1e')];var _0x11b416;if(_0xbb4338>=_0xc54236){_0xbb4338=_0xc54236;_0x11b416=0xc8;}else{_0x11b416=0xce;}_0x3a6431[_0x3239('0x1c')](_0x11b416);return _0x3a6431[_0x3239('0x21')](_0x3239('0x22'),_0x20e66a+'-'+_0xbb4338+'/'+_0xc54236)[_0x3239('0x1d')](_0x503a4b);}return null;};}function patchUpdates(_0x4879e0){return function(_0x1252af){try{jsonpatch['apply'](_0x1252af,_0x4879e0,!![]);}catch(_0x5452dc){return BPromise['reject'](_0x5452dc);}return _0x1252af[_0x3239('0x23')]();};}function saveUpdates(_0x5362a5,_0x3e9584){return function(_0x5d44e5){if(_0x5d44e5){return _0x5d44e5[_0x3239('0x24')](_0x5362a5)['then'](function(_0x126ca3){return _0x126ca3;});}return null;};}function removeEntity(_0x1a7163,_0x238974){return function(_0x527173){if(_0x527173){return _0x527173[_0x3239('0x25')]()[_0x3239('0x26')](function(){_0x1a7163[_0x3239('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x270669,_0x36065e){return function(_0x7d4417){if(!_0x7d4417){_0x270669[_0x3239('0x1b')](0x194);}return _0x7d4417;};}function handleError(_0x38ec7a,_0xc7dff4){_0xc7dff4=_0xc7dff4||0x1f4;return function(_0x661996){logger['error'](_0x661996[_0x3239('0x27')]);if(_0x661996[_0x3239('0x28')]){delete _0x661996[_0x3239('0x28')];}_0x38ec7a[_0x3239('0x1c')](_0xc7dff4)[_0x3239('0x29')](_0x661996);};}exports[_0x3239('0x2a')]=function(_0x48843e,_0x354f46){var _0x1827af={},_0x54e0e3={},_0x829268={'count':0x0,'rows':[]};var _0x679b6c=_['map'](db[_0x3239('0x2b')][_0x3239('0x2c')],function(_0x1526d1){return{'name':_0x1526d1['fieldName'],'type':_0x1526d1[_0x3239('0x2d')][_0x3239('0x2e')]};});_0x54e0e3['model']=_[_0x3239('0x2f')](_0x679b6c,_0x3239('0x28'));_0x54e0e3['query']=_[_0x3239('0x30')](_0x48843e[_0x3239('0x31')]);_0x54e0e3[_0x3239('0x32')]=_[_0x3239('0x33')](_0x54e0e3[_0x3239('0x34')],_0x54e0e3[_0x3239('0x31')]);_0x1827af['attributes']=_['intersection'](_0x54e0e3[_0x3239('0x34')],qs['fields'](_0x48843e[_0x3239('0x31')][_0x3239('0x35')]));_0x1827af[_0x3239('0x36')]=_0x1827af[_0x3239('0x36')][_0x3239('0x37')]?_0x1827af[_0x3239('0x36')]:_0x54e0e3[_0x3239('0x34')];if(!_0x48843e[_0x3239('0x31')]['hasOwnProperty']('nolimit')){_0x1827af[_0x3239('0x1e')]=qs[_0x3239('0x1e')](_0x48843e[_0x3239('0x31')][_0x3239('0x1e')]);_0x1827af[_0x3239('0x20')]=qs['offset'](_0x48843e['query']['offset']);}_0x1827af[_0x3239('0x38')]=qs[_0x3239('0x39')](_0x48843e[_0x3239('0x31')][_0x3239('0x39')]);_0x1827af[_0x3239('0x3a')]=qs[_0x3239('0x32')](_[_0x3239('0x3b')](_0x48843e[_0x3239('0x31')],_0x54e0e3[_0x3239('0x32')]),_0x679b6c);if(_0x48843e[_0x3239('0x31')]['filter']){_0x1827af[_0x3239('0x3a')]=_['merge'](_0x1827af['where'],{'$or':_[_0x3239('0x2f')](_0x679b6c,function(_0xeeae){if(_0xeeae['type']!==_0x3239('0x3c')){var _0x4d9a18={};_0x4d9a18[_0xeeae[_0x3239('0x28')]]={'$like':'%'+_0x48843e['query'][_0x3239('0x3d')]+'%'};return _0x4d9a18;}})});}_0x1827af=_[_0x3239('0x3e')]({},_0x1827af,_0x48843e[_0x3239('0x3f')]);var _0x44e5f8={'where':_0x1827af[_0x3239('0x3a')]};return db[_0x3239('0x2b')][_0x3239('0x40')](_0x44e5f8)['then'](function(_0x4dcd1e){_0x829268[_0x3239('0x40')]=_0x4dcd1e;if(_0x48843e['query'][_0x3239('0x41')]){_0x1827af[_0x3239('0x42')]=[{'all':!![]}];}return db[_0x3239('0x2b')][_0x3239('0x43')](_0x1827af);})['then'](function(_0x2c46e7){_0x829268[_0x3239('0x44')]=_0x2c46e7;return _0x829268;})[_0x3239('0x26')](respondWithFilteredResult(_0x354f46,_0x1827af))[_0x3239('0x45')](handleError(_0x354f46,null));};exports['show']=function(_0x23d280,_0x21bc73){var _0x4670b5={'raw':![],'where':{'id':_0x23d280[_0x3239('0x46')]['id']}},_0x218121={};_0x218121[_0x3239('0x34')]=_[_0x3239('0x30')](db[_0x3239('0x2b')][_0x3239('0x2c')]);_0x218121[_0x3239('0x31')]=_[_0x3239('0x30')](_0x23d280[_0x3239('0x31')]);_0x218121['filters']=_[_0x3239('0x33')](_0x218121['model'],_0x218121['query']);_0x4670b5[_0x3239('0x36')]=_['intersection'](_0x218121[_0x3239('0x34')],qs['fields'](_0x23d280[_0x3239('0x31')][_0x3239('0x35')]));_0x4670b5[_0x3239('0x36')]=_0x4670b5['attributes'][_0x3239('0x37')]?_0x4670b5[_0x3239('0x36')]:_0x218121['model'];if(_0x23d280['query'][_0x3239('0x41')]){_0x4670b5['include']=[{'all':!![]}];}_0x4670b5=_[_0x3239('0x3e')]({},_0x4670b5,_0x23d280[_0x3239('0x3f')]);return db[_0x3239('0x2b')][_0x3239('0x47')](_0x4670b5)[_0x3239('0x26')](handleEntityNotFound(_0x21bc73,null))['then'](respondWithResult(_0x21bc73,null))[_0x3239('0x45')](handleError(_0x21bc73,null));};exports[_0x3239('0x48')]=function(_0x457de1,_0x172dda){return db[_0x3239('0x2b')][_0x3239('0x48')](_0x457de1[_0x3239('0x49')],{})[_0x3239('0x26')](respondWithResult(_0x172dda,0xc9))[_0x3239('0x45')](handleError(_0x172dda,null));};exports['update']=function(_0x24978d,_0x33e443){if(_0x24978d[_0x3239('0x49')]['id']){delete _0x24978d[_0x3239('0x49')]['id'];}return db[_0x3239('0x2b')][_0x3239('0x47')]({'where':{'id':_0x24978d[_0x3239('0x46')]['id']}})['then'](handleEntityNotFound(_0x33e443,null))[_0x3239('0x26')](saveUpdates(_0x24978d[_0x3239('0x49')],null))[_0x3239('0x26')](respondWithResult(_0x33e443,null))[_0x3239('0x45')](handleError(_0x33e443,null));};exports['destroy']=function(_0x54d865,_0x491296){return db[_0x3239('0x2b')]['find']({'where':{'id':_0x54d865[_0x3239('0x46')]['id']}})[_0x3239('0x26')](handleEntityNotFound(_0x491296,null))[_0x3239('0x26')](removeEntity(_0x491296,null))['catch'](handleError(_0x491296,null));};exports[_0x3239('0x4a')]=function(_0x21efe7,_0x43b04e,_0x14d4d3){var _0xa5f0a5={};var _0x17cc23={};var _0x4a83cb;var _0x5f4ba7;return db[_0x3239('0x2b')]['findOne']({'where':{'id':_0x21efe7[_0x3239('0x46')]['id']}})[_0x3239('0x26')](handleEntityNotFound(_0x43b04e,null))[_0x3239('0x26')](function(_0x4d42b6){if(_0x4d42b6){_0x4a83cb=_0x4d42b6;_0x17cc23[_0x3239('0x34')]=_[_0x3239('0x30')](db[_0x3239('0x4b')][_0x3239('0x2c')]);_0x17cc23[_0x3239('0x31')]=_[_0x3239('0x30')](_0x21efe7[_0x3239('0x31')]);_0x17cc23[_0x3239('0x32')]=_['intersection'](_0x17cc23[_0x3239('0x34')],_0x17cc23[_0x3239('0x31')]);_0xa5f0a5[_0x3239('0x36')]=_[_0x3239('0x33')](_0x17cc23[_0x3239('0x34')],qs[_0x3239('0x35')](_0x21efe7[_0x3239('0x31')][_0x3239('0x35')]));_0xa5f0a5['attributes']=_0xa5f0a5['attributes'][_0x3239('0x37')]?_0xa5f0a5[_0x3239('0x36')]:_0x17cc23[_0x3239('0x34')];_0xa5f0a5[_0x3239('0x38')]=qs[_0x3239('0x39')](_0x21efe7['query']['sort']);_0xa5f0a5[_0x3239('0x3a')]=qs[_0x3239('0x32')](_[_0x3239('0x3b')](_0x21efe7[_0x3239('0x31')],_0x17cc23[_0x3239('0x32')]));if(_0x21efe7['query'][_0x3239('0x3d')]){_0xa5f0a5['where']=_[_0x3239('0x3e')](_0xa5f0a5[_0x3239('0x3a')],{'$or':_[_0x3239('0x2f')](_0xa5f0a5[_0x3239('0x36')],function(_0x212c46){var _0x51bbd8={};_0x51bbd8[_0x212c46]={'$like':'%'+_0x21efe7['query']['filter']+'%'};return _0x51bbd8;})});}_0xa5f0a5=_[_0x3239('0x3e')]({},_0xa5f0a5,_0x21efe7[_0x3239('0x3f')]);return _0x4a83cb[_0x3239('0x4a')](_0xa5f0a5);}})[_0x3239('0x26')](function(_0x22881e){if(_0x22881e){_0x5f4ba7=_0x22881e[_0x3239('0x37')];if(!_0x21efe7[_0x3239('0x31')]['hasOwnProperty'](_0x3239('0x4c'))){_0xa5f0a5[_0x3239('0x1e')]=qs[_0x3239('0x1e')](_0x21efe7[_0x3239('0x31')][_0x3239('0x1e')]);_0xa5f0a5[_0x3239('0x20')]=qs[_0x3239('0x20')](_0x21efe7[_0x3239('0x31')][_0x3239('0x20')]);}return _0x4a83cb['getFields'](_0xa5f0a5);}})[_0x3239('0x26')](function(_0x117ad9){if(_0x117ad9){return _0x117ad9?{'count':_0x5f4ba7,'rows':_0x117ad9}:null;}})[_0x3239('0x26')](respondWithResult(_0x43b04e,null))['catch'](handleError(_0x43b04e,null));};exports[_0x3239('0x4d')]=function(_0x152d43,_0x56e1fd,_0x38d376){var _0x1775e6={};var _0x3c5a3d={};var _0x506bd0;var _0x371f5c;return db[_0x3239('0x2b')][_0x3239('0x4e')]({'where':{'id':_0x152d43['params']['id']}})['then'](handleEntityNotFound(_0x56e1fd,null))[_0x3239('0x26')](function(_0x474dac){if(_0x474dac){_0x506bd0=_0x474dac;_0x3c5a3d[_0x3239('0x34')]=_[_0x3239('0x30')](db[_0x3239('0x4b')]['rawAttributes']);_0x3c5a3d[_0x3239('0x31')]=_[_0x3239('0x30')](_0x152d43['query']);_0x3c5a3d[_0x3239('0x32')]=_[_0x3239('0x33')](_0x3c5a3d[_0x3239('0x34')],_0x3c5a3d[_0x3239('0x31')]);_0x1775e6[_0x3239('0x36')]=_[_0x3239('0x33')](_0x3c5a3d[_0x3239('0x34')],qs[_0x3239('0x35')](_0x152d43[_0x3239('0x31')][_0x3239('0x35')]));_0x1775e6[_0x3239('0x36')]=_0x1775e6[_0x3239('0x36')][_0x3239('0x37')]?_0x1775e6[_0x3239('0x36')]:_0x3c5a3d['model'];_0x1775e6['order']=qs[_0x3239('0x39')](_0x152d43['query'][_0x3239('0x39')]);_0x1775e6[_0x3239('0x3a')]=qs[_0x3239('0x32')](_[_0x3239('0x3b')](_0x152d43[_0x3239('0x31')],_0x3c5a3d[_0x3239('0x32')]));if(_0x152d43[_0x3239('0x31')][_0x3239('0x3d')]){_0x1775e6[_0x3239('0x3a')]=_[_0x3239('0x3e')](_0x1775e6['where'],{'$or':_[_0x3239('0x2f')](_0x1775e6[_0x3239('0x36')],function(_0xc404ed){var _0x4b6c7d={};_0x4b6c7d[_0xc404ed]={'$like':'%'+_0x152d43[_0x3239('0x31')][_0x3239('0x3d')]+'%'};return _0x4b6c7d;})});}_0x1775e6=_[_0x3239('0x3e')]({},_0x1775e6,_0x152d43[_0x3239('0x3f')]);return _0x506bd0[_0x3239('0x4d')](_0x1775e6);}})[_0x3239('0x26')](function(_0x44b2d8){if(_0x44b2d8){_0x371f5c=_0x44b2d8['length'];if(!_0x152d43['query'][_0x3239('0x4f')]('nolimit')){_0x1775e6[_0x3239('0x1e')]=qs[_0x3239('0x1e')](_0x152d43[_0x3239('0x31')][_0x3239('0x1e')]);_0x1775e6[_0x3239('0x20')]=qs[_0x3239('0x20')](_0x152d43[_0x3239('0x31')][_0x3239('0x20')]);}return _0x506bd0[_0x3239('0x4d')](_0x1775e6);}})[_0x3239('0x26')](function(_0x1fa091){if(_0x1fa091){return _0x1fa091?{'count':_0x371f5c,'rows':_0x1fa091}:null;}})[_0x3239('0x26')](respondWithResult(_0x56e1fd,null))[_0x3239('0x45')](handleError(_0x56e1fd,null));};exports[_0x3239('0x50')]=function(_0x25db71,_0x207f2a,_0x28139c){var _0x3a64bb={};var _0x38c2ea={};var _0xe089ed;var _0x473c60;return db[_0x3239('0x2b')]['findOne']({'where':{'id':_0x25db71[_0x3239('0x46')]['id']}})[_0x3239('0x26')](handleEntityNotFound(_0x207f2a,null))[_0x3239('0x26')](function(_0x44fc1b){if(_0x44fc1b){_0xe089ed=_0x44fc1b;_0x38c2ea[_0x3239('0x34')]=_['keys'](db['DeskField']['rawAttributes']);_0x38c2ea['query']=_[_0x3239('0x30')](_0x25db71[_0x3239('0x31')]);_0x38c2ea[_0x3239('0x32')]=_['intersection'](_0x38c2ea['model'],_0x38c2ea[_0x3239('0x31')]);_0x3a64bb[_0x3239('0x36')]=_[_0x3239('0x33')](_0x38c2ea[_0x3239('0x34')],qs[_0x3239('0x35')](_0x25db71['query']['fields']));_0x3a64bb[_0x3239('0x36')]=_0x3a64bb[_0x3239('0x36')]['length']?_0x3a64bb['attributes']:_0x38c2ea[_0x3239('0x34')];_0x3a64bb[_0x3239('0x38')]=qs[_0x3239('0x39')](_0x25db71['query']['sort']);_0x3a64bb['where']=qs[_0x3239('0x32')](_[_0x3239('0x3b')](_0x25db71[_0x3239('0x31')],_0x38c2ea[_0x3239('0x32')]));if(_0x25db71[_0x3239('0x31')][_0x3239('0x3d')]){_0x3a64bb['where']=_[_0x3239('0x3e')](_0x3a64bb['where'],{'$or':_['map'](_0x3a64bb[_0x3239('0x36')],function(_0x3529bb){var _0x1518b6={};_0x1518b6[_0x3529bb]={'$like':'%'+_0x25db71['query'][_0x3239('0x3d')]+'%'};return _0x1518b6;})});}_0x3a64bb=_[_0x3239('0x3e')]({},_0x3a64bb,_0x25db71[_0x3239('0x3f')]);return _0xe089ed[_0x3239('0x50')](_0x3a64bb);}})['then'](function(_0x2cbbdb){if(_0x2cbbdb){_0x473c60=_0x2cbbdb[_0x3239('0x37')];if(!_0x25db71[_0x3239('0x31')]['hasOwnProperty'](_0x3239('0x4c'))){_0x3a64bb[_0x3239('0x1e')]=qs['limit'](_0x25db71[_0x3239('0x31')][_0x3239('0x1e')]);_0x3a64bb['offset']=qs[_0x3239('0x20')](_0x25db71[_0x3239('0x31')][_0x3239('0x20')]);}return _0xe089ed[_0x3239('0x50')](_0x3a64bb);}})['then'](function(_0xb472be){if(_0xb472be){return _0xb472be?{'count':_0x473c60,'rows':_0xb472be}:null;}})[_0x3239('0x26')](respondWithResult(_0x207f2a,null))[_0x3239('0x45')](handleError(_0x207f2a,null));};exports[_0x3239('0x51')]=function(_0x45aaf7,_0x3078f,_0x5b8ae6){var _0x617784={};var _0x1ccd6d={};var _0x49ae3f;var _0x546cc8;return db['DeskConfiguration'][_0x3239('0x4e')]({'where':{'id':_0x45aaf7[_0x3239('0x46')]['id']}})[_0x3239('0x26')](handleEntityNotFound(_0x3078f,null))['then'](function(_0x525b9c){if(_0x525b9c){_0x49ae3f=_0x525b9c;_0x1ccd6d[_0x3239('0x34')]=_[_0x3239('0x30')](db[_0x3239('0x52')][_0x3239('0x2c')]);_0x1ccd6d[_0x3239('0x31')]=_['keys'](_0x45aaf7[_0x3239('0x31')]);_0x1ccd6d[_0x3239('0x32')]=_[_0x3239('0x33')](_0x1ccd6d['model'],_0x1ccd6d[_0x3239('0x31')]);_0x617784[_0x3239('0x36')]=_['intersection'](_0x1ccd6d[_0x3239('0x34')],qs[_0x3239('0x35')](_0x45aaf7['query'][_0x3239('0x35')]));_0x617784[_0x3239('0x36')]=_0x617784[_0x3239('0x36')][_0x3239('0x37')]?_0x617784[_0x3239('0x36')]:_0x1ccd6d[_0x3239('0x34')];_0x617784[_0x3239('0x38')]=qs['sort'](_0x45aaf7[_0x3239('0x31')][_0x3239('0x39')]);_0x617784['where']=qs[_0x3239('0x32')](_[_0x3239('0x3b')](_0x45aaf7['query'],_0x1ccd6d[_0x3239('0x32')]));if(_0x45aaf7['query']['filter']){_0x617784[_0x3239('0x3a')]=_[_0x3239('0x3e')](_0x617784[_0x3239('0x3a')],{'$or':_['map'](_0x617784[_0x3239('0x36')],function(_0x22c898){var _0x457109={};_0x457109[_0x22c898]={'$like':'%'+_0x45aaf7['query']['filter']+'%'};return _0x457109;})});}_0x617784=_[_0x3239('0x3e')]({},_0x617784,_0x45aaf7[_0x3239('0x3f')]);return _0x49ae3f[_0x3239('0x51')](_0x617784);}})[_0x3239('0x26')](function(_0x10e539){if(_0x10e539){_0x546cc8=_0x10e539['length'];if(!_0x45aaf7[_0x3239('0x31')][_0x3239('0x4f')]('nolimit')){_0x617784[_0x3239('0x1e')]=qs[_0x3239('0x1e')](_0x45aaf7[_0x3239('0x31')][_0x3239('0x1e')]);_0x617784[_0x3239('0x20')]=qs[_0x3239('0x20')](_0x45aaf7[_0x3239('0x31')]['offset']);}return _0x49ae3f[_0x3239('0x51')](_0x617784);}})[_0x3239('0x26')](function(_0x2ae27a){if(_0x2ae27a){return _0x2ae27a?{'count':_0x546cc8,'rows':_0x2ae27a}:null;}})['then'](respondWithResult(_0x3078f,null))['catch'](handleError(_0x3078f,null));};exports[_0x3239('0x53')]=function(_0x461d21,_0x1adaed,_0x45d763){if(_0x461d21[_0x3239('0x49')]['id']){delete _0x461d21[_0x3239('0x49')]['id'];}return db[_0x3239('0x2b')][_0x3239('0x4e')]({'where':{'id':_0x461d21['params']['id']}})[_0x3239('0x26')](handleEntityNotFound(_0x1adaed,null))[_0x3239('0x26')](function(_0x11334f){if(_0x11334f){return _0x11334f[_0x3239('0x53')](_0x461d21['body'][_0x3239('0x54')]||[]);}return null;})[_0x3239('0x26')](respondWithResult(_0x1adaed,null))['catch'](handleError(_0x1adaed,null));};
\ No newline at end of file
+var _0xe77b=['destroy','error','stack','name','send','index','map','DeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','offset','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','catch','show','length','create','body','find','params','DeskField','getFields','getSubjects','findOne','getDescriptions','getTags','Tag','nolimit','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','json','undefined','count','limit','status','set','apply','reject','save','update','then'];(function(_0x244843,_0x43a0c4){var _0x5463c3=function(_0x23e93c){while(--_0x23e93c){_0x244843['push'](_0x244843['shift']());}};_0x5463c3(++_0x43a0c4);}(_0xe77b,0x1c9));var _0xbe77=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xe77b[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0xbe77('0x0'));var rimraf=require(_0xbe77('0x1'));var zipdir=require(_0xbe77('0x2'));var jsonpatch=require(_0xbe77('0x3'));var rp=require('request-promise');var moment=require(_0xbe77('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbe77('0x5'));var util=require(_0xbe77('0x6'));var path=require(_0xbe77('0x7'));var sox=require(_0xbe77('0x8'));var csv=require(_0xbe77('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbe77('0xa'));var squel=require('squel');var crypto=require(_0xbe77('0xb'));var jsforce=require(_0xbe77('0xc'));var deskjs=require(_0xbe77('0xd'));var toCsv=require(_0xbe77('0x9'));var querystring=require(_0xbe77('0xe'));var Papa=require(_0xbe77('0xf'));var Redis=require(_0xbe77('0x10'));var authService=require(_0xbe77('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbe77('0x12'))(_0xbe77('0x13'));var utils=require(_0xbe77('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xbe77('0x15'));var db=require(_0xbe77('0x16'))['db'];function respondWithStatusCode(_0x1d1784,_0x53f04e){_0x53f04e=_0x53f04e||0xcc;return function(_0x1a210a){if(_0x1a210a){return _0x1d1784[_0xbe77('0x17')](_0x53f04e);}return _0x1d1784['status'](_0x53f04e)['end']();};}function respondWithResult(_0x235ad1,_0x506fd1){_0x506fd1=_0x506fd1||0xc8;return function(_0x24f8ee){if(_0x24f8ee){return _0x235ad1['status'](_0x506fd1)[_0xbe77('0x18')](_0x24f8ee);}};}function respondWithFilteredResult(_0x14dc37,_0x591fe4){return function(_0x118119){if(_0x118119){var _0x19003d=typeof _0x591fe4['offset']===_0xbe77('0x19')&&typeof _0x591fe4['limit']===_0xbe77('0x19');var _0xa8d8b5=_0x118119[_0xbe77('0x1a')];var _0x995188=_0x19003d?0x0:_0x591fe4['offset'];var _0x10b487=_0x19003d?_0x118119[_0xbe77('0x1a')]:_0x591fe4['offset']+_0x591fe4[_0xbe77('0x1b')];var _0x11f9d2;if(_0x10b487>=_0xa8d8b5){_0x10b487=_0xa8d8b5;_0x11f9d2=0xc8;}else{_0x11f9d2=0xce;}_0x14dc37[_0xbe77('0x1c')](_0x11f9d2);return _0x14dc37[_0xbe77('0x1d')]('Content-Range',_0x995188+'-'+_0x10b487+'/'+_0xa8d8b5)['json'](_0x118119);}return null;};}function patchUpdates(_0x1cb3b1){return function(_0x47a318){try{jsonpatch[_0xbe77('0x1e')](_0x47a318,_0x1cb3b1,!![]);}catch(_0x50cf1f){return BPromise[_0xbe77('0x1f')](_0x50cf1f);}return _0x47a318[_0xbe77('0x20')]();};}function saveUpdates(_0x193c16,_0x15258d){return function(_0x3ceddd){if(_0x3ceddd){return _0x3ceddd[_0xbe77('0x21')](_0x193c16)[_0xbe77('0x22')](function(_0x1a00fa){return _0x1a00fa;});}return null;};}function removeEntity(_0x53f0c3,_0x4cf9c7){return function(_0x2e94d7){if(_0x2e94d7){return _0x2e94d7[_0xbe77('0x23')]()[_0xbe77('0x22')](function(){_0x53f0c3[_0xbe77('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f9bcc,_0x1b63a7){return function(_0x1fe6b3){if(!_0x1fe6b3){_0x1f9bcc['sendStatus'](0x194);}return _0x1fe6b3;};}function handleError(_0x253c2b,_0x4c7e7e){_0x4c7e7e=_0x4c7e7e||0x1f4;return function(_0x5b38a4){logger[_0xbe77('0x24')](_0x5b38a4[_0xbe77('0x25')]);if(_0x5b38a4[_0xbe77('0x26')]){delete _0x5b38a4[_0xbe77('0x26')];}_0x253c2b['status'](_0x4c7e7e)[_0xbe77('0x27')](_0x5b38a4);};}exports[_0xbe77('0x28')]=function(_0x294a82,_0x1ee69d){var _0x28c0a2={},_0x2ca6a2={},_0x5b7e5d={'count':0x0,'rows':[]};var _0x4056f1=_[_0xbe77('0x29')](db[_0xbe77('0x2a')][_0xbe77('0x2b')],function(_0x8da955){return{'name':_0x8da955[_0xbe77('0x2c')],'type':_0x8da955[_0xbe77('0x2d')][_0xbe77('0x2e')]};});_0x2ca6a2[_0xbe77('0x2f')]=_[_0xbe77('0x29')](_0x4056f1,_0xbe77('0x26'));_0x2ca6a2[_0xbe77('0x30')]=_[_0xbe77('0x31')](_0x294a82[_0xbe77('0x30')]);_0x2ca6a2['filters']=_[_0xbe77('0x32')](_0x2ca6a2[_0xbe77('0x2f')],_0x2ca6a2[_0xbe77('0x30')]);_0x28c0a2['attributes']=_[_0xbe77('0x32')](_0x2ca6a2[_0xbe77('0x2f')],qs[_0xbe77('0x33')](_0x294a82['query']['fields']));_0x28c0a2['attributes']=_0x28c0a2[_0xbe77('0x34')]['length']?_0x28c0a2[_0xbe77('0x34')]:_0x2ca6a2['model'];if(!_0x294a82['query'][_0xbe77('0x35')]('nolimit')){_0x28c0a2[_0xbe77('0x1b')]=qs[_0xbe77('0x1b')](_0x294a82['query']['limit']);_0x28c0a2[_0xbe77('0x36')]=qs[_0xbe77('0x36')](_0x294a82[_0xbe77('0x30')][_0xbe77('0x36')]);}_0x28c0a2[_0xbe77('0x37')]=qs[_0xbe77('0x38')](_0x294a82[_0xbe77('0x30')]['sort']);_0x28c0a2[_0xbe77('0x39')]=qs[_0xbe77('0x3a')](_[_0xbe77('0x3b')](_0x294a82['query'],_0x2ca6a2[_0xbe77('0x3a')]),_0x4056f1);if(_0x294a82['query'][_0xbe77('0x3c')]){_0x28c0a2[_0xbe77('0x39')]=_[_0xbe77('0x3d')](_0x28c0a2[_0xbe77('0x39')],{'$or':_[_0xbe77('0x29')](_0x4056f1,function(_0x51c893){if(_0x51c893['type']!==_0xbe77('0x3e')){var _0x531bea={};_0x531bea[_0x51c893['name']]={'$like':'%'+_0x294a82[_0xbe77('0x30')][_0xbe77('0x3c')]+'%'};return _0x531bea;}})});}_0x28c0a2=_[_0xbe77('0x3d')]({},_0x28c0a2,_0x294a82[_0xbe77('0x3f')]);var _0x3c856d={'where':_0x28c0a2[_0xbe77('0x39')]};return db[_0xbe77('0x2a')][_0xbe77('0x1a')](_0x3c856d)['then'](function(_0x188e79){_0x5b7e5d[_0xbe77('0x1a')]=_0x188e79;if(_0x294a82['query']['includeAll']){_0x28c0a2[_0xbe77('0x40')]=[{'all':!![]}];}return db[_0xbe77('0x2a')]['findAll'](_0x28c0a2);})[_0xbe77('0x22')](function(_0xb1ea48){_0x5b7e5d['rows']=_0xb1ea48;return _0x5b7e5d;})[_0xbe77('0x22')](respondWithFilteredResult(_0x1ee69d,_0x28c0a2))[_0xbe77('0x41')](handleError(_0x1ee69d,null));};exports[_0xbe77('0x42')]=function(_0x4b5eb6,_0x1cebc0){var _0x8ffc3e={'raw':![],'where':{'id':_0x4b5eb6['params']['id']}},_0x9727d8={};_0x9727d8[_0xbe77('0x2f')]=_[_0xbe77('0x31')](db[_0xbe77('0x2a')][_0xbe77('0x2b')]);_0x9727d8[_0xbe77('0x30')]=_[_0xbe77('0x31')](_0x4b5eb6[_0xbe77('0x30')]);_0x9727d8[_0xbe77('0x3a')]=_[_0xbe77('0x32')](_0x9727d8['model'],_0x9727d8['query']);_0x8ffc3e[_0xbe77('0x34')]=_[_0xbe77('0x32')](_0x9727d8['model'],qs[_0xbe77('0x33')](_0x4b5eb6['query'][_0xbe77('0x33')]));_0x8ffc3e['attributes']=_0x8ffc3e['attributes'][_0xbe77('0x43')]?_0x8ffc3e[_0xbe77('0x34')]:_0x9727d8['model'];if(_0x4b5eb6[_0xbe77('0x30')]['includeAll']){_0x8ffc3e[_0xbe77('0x40')]=[{'all':!![]}];}_0x8ffc3e=_[_0xbe77('0x3d')]({},_0x8ffc3e,_0x4b5eb6[_0xbe77('0x3f')]);return db[_0xbe77('0x2a')]['find'](_0x8ffc3e)[_0xbe77('0x22')](handleEntityNotFound(_0x1cebc0,null))['then'](respondWithResult(_0x1cebc0,null))[_0xbe77('0x41')](handleError(_0x1cebc0,null));};exports[_0xbe77('0x44')]=function(_0x10add4,_0x51cd9b){return db['DeskConfiguration'][_0xbe77('0x44')](_0x10add4[_0xbe77('0x45')],{})[_0xbe77('0x22')](respondWithResult(_0x51cd9b,0xc9))[_0xbe77('0x41')](handleError(_0x51cd9b,null));};exports[_0xbe77('0x21')]=function(_0x29dd40,_0x34b6a8){if(_0x29dd40['body']['id']){delete _0x29dd40[_0xbe77('0x45')]['id'];}return db[_0xbe77('0x2a')][_0xbe77('0x46')]({'where':{'id':_0x29dd40['params']['id']}})['then'](handleEntityNotFound(_0x34b6a8,null))['then'](saveUpdates(_0x29dd40[_0xbe77('0x45')],null))['then'](respondWithResult(_0x34b6a8,null))[_0xbe77('0x41')](handleError(_0x34b6a8,null));};exports['destroy']=function(_0x27001a,_0x40c49f){return db[_0xbe77('0x2a')][_0xbe77('0x46')]({'where':{'id':_0x27001a[_0xbe77('0x47')]['id']}})['then'](handleEntityNotFound(_0x40c49f,null))['then'](removeEntity(_0x40c49f,null))[_0xbe77('0x41')](handleError(_0x40c49f,null));};exports['getFields']=function(_0xb971fd,_0x457e99,_0x19ef70){var _0x56ba4b={};var _0x2f2723={};var _0x382ff1;var _0x2ce7d7;return db[_0xbe77('0x2a')]['findOne']({'where':{'id':_0xb971fd[_0xbe77('0x47')]['id']}})[_0xbe77('0x22')](handleEntityNotFound(_0x457e99,null))['then'](function(_0x5c30cf){if(_0x5c30cf){_0x382ff1=_0x5c30cf;_0x2f2723[_0xbe77('0x2f')]=_[_0xbe77('0x31')](db[_0xbe77('0x48')][_0xbe77('0x2b')]);_0x2f2723[_0xbe77('0x30')]=_[_0xbe77('0x31')](_0xb971fd[_0xbe77('0x30')]);_0x2f2723['filters']=_['intersection'](_0x2f2723[_0xbe77('0x2f')],_0x2f2723['query']);_0x56ba4b[_0xbe77('0x34')]=_[_0xbe77('0x32')](_0x2f2723[_0xbe77('0x2f')],qs['fields'](_0xb971fd[_0xbe77('0x30')][_0xbe77('0x33')]));_0x56ba4b[_0xbe77('0x34')]=_0x56ba4b[_0xbe77('0x34')][_0xbe77('0x43')]?_0x56ba4b[_0xbe77('0x34')]:_0x2f2723['model'];_0x56ba4b[_0xbe77('0x37')]=qs[_0xbe77('0x38')](_0xb971fd[_0xbe77('0x30')][_0xbe77('0x38')]);_0x56ba4b[_0xbe77('0x39')]=qs[_0xbe77('0x3a')](_[_0xbe77('0x3b')](_0xb971fd[_0xbe77('0x30')],_0x2f2723[_0xbe77('0x3a')]));if(_0xb971fd[_0xbe77('0x30')][_0xbe77('0x3c')]){_0x56ba4b[_0xbe77('0x39')]=_['merge'](_0x56ba4b['where'],{'$or':_[_0xbe77('0x29')](_0x56ba4b['attributes'],function(_0x54bf07){var _0x5321c2={};_0x5321c2[_0x54bf07]={'$like':'%'+_0xb971fd['query'][_0xbe77('0x3c')]+'%'};return _0x5321c2;})});}_0x56ba4b=_[_0xbe77('0x3d')]({},_0x56ba4b,_0xb971fd['options']);return _0x382ff1[_0xbe77('0x49')](_0x56ba4b);}})[_0xbe77('0x22')](function(_0x1ff319){if(_0x1ff319){_0x2ce7d7=_0x1ff319[_0xbe77('0x43')];if(!_0xb971fd[_0xbe77('0x30')][_0xbe77('0x35')]('nolimit')){_0x56ba4b[_0xbe77('0x1b')]=qs[_0xbe77('0x1b')](_0xb971fd[_0xbe77('0x30')][_0xbe77('0x1b')]);_0x56ba4b[_0xbe77('0x36')]=qs[_0xbe77('0x36')](_0xb971fd[_0xbe77('0x30')][_0xbe77('0x36')]);}return _0x382ff1[_0xbe77('0x49')](_0x56ba4b);}})[_0xbe77('0x22')](function(_0x394208){if(_0x394208){return _0x394208?{'count':_0x2ce7d7,'rows':_0x394208}:null;}})['then'](respondWithResult(_0x457e99,null))[_0xbe77('0x41')](handleError(_0x457e99,null));};exports[_0xbe77('0x4a')]=function(_0x4510f0,_0x1bf0f8,_0x3c47d9){var _0x28140c={};var _0x236027={};var _0x367c7e;var _0x40a757;return db[_0xbe77('0x2a')][_0xbe77('0x4b')]({'where':{'id':_0x4510f0[_0xbe77('0x47')]['id']}})['then'](handleEntityNotFound(_0x1bf0f8,null))[_0xbe77('0x22')](function(_0x253b21){if(_0x253b21){_0x367c7e=_0x253b21;_0x236027[_0xbe77('0x2f')]=_['keys'](db[_0xbe77('0x48')][_0xbe77('0x2b')]);_0x236027[_0xbe77('0x30')]=_['keys'](_0x4510f0[_0xbe77('0x30')]);_0x236027['filters']=_[_0xbe77('0x32')](_0x236027['model'],_0x236027[_0xbe77('0x30')]);_0x28140c[_0xbe77('0x34')]=_['intersection'](_0x236027[_0xbe77('0x2f')],qs[_0xbe77('0x33')](_0x4510f0[_0xbe77('0x30')][_0xbe77('0x33')]));_0x28140c['attributes']=_0x28140c[_0xbe77('0x34')][_0xbe77('0x43')]?_0x28140c[_0xbe77('0x34')]:_0x236027[_0xbe77('0x2f')];_0x28140c[_0xbe77('0x37')]=qs[_0xbe77('0x38')](_0x4510f0[_0xbe77('0x30')][_0xbe77('0x38')]);_0x28140c[_0xbe77('0x39')]=qs[_0xbe77('0x3a')](_[_0xbe77('0x3b')](_0x4510f0[_0xbe77('0x30')],_0x236027['filters']));if(_0x4510f0[_0xbe77('0x30')][_0xbe77('0x3c')]){_0x28140c[_0xbe77('0x39')]=_['merge'](_0x28140c['where'],{'$or':_[_0xbe77('0x29')](_0x28140c['attributes'],function(_0x391854){var _0x5d56e7={};_0x5d56e7[_0x391854]={'$like':'%'+_0x4510f0['query']['filter']+'%'};return _0x5d56e7;})});}_0x28140c=_[_0xbe77('0x3d')]({},_0x28140c,_0x4510f0[_0xbe77('0x3f')]);return _0x367c7e[_0xbe77('0x4a')](_0x28140c);}})[_0xbe77('0x22')](function(_0x28b36a){if(_0x28b36a){_0x40a757=_0x28b36a['length'];if(!_0x4510f0[_0xbe77('0x30')][_0xbe77('0x35')]('nolimit')){_0x28140c[_0xbe77('0x1b')]=qs[_0xbe77('0x1b')](_0x4510f0['query']['limit']);_0x28140c['offset']=qs[_0xbe77('0x36')](_0x4510f0['query']['offset']);}return _0x367c7e[_0xbe77('0x4a')](_0x28140c);}})[_0xbe77('0x22')](function(_0xd3ff15){if(_0xd3ff15){return _0xd3ff15?{'count':_0x40a757,'rows':_0xd3ff15}:null;}})[_0xbe77('0x22')](respondWithResult(_0x1bf0f8,null))[_0xbe77('0x41')](handleError(_0x1bf0f8,null));};exports[_0xbe77('0x4c')]=function(_0x8e23cd,_0x5e2fa4,_0x100c8b){var _0x10a1f9={};var _0x51b76b={};var _0x2cc9e0;var _0x5828a4;return db[_0xbe77('0x2a')]['findOne']({'where':{'id':_0x8e23cd[_0xbe77('0x47')]['id']}})[_0xbe77('0x22')](handleEntityNotFound(_0x5e2fa4,null))[_0xbe77('0x22')](function(_0xd5803b){if(_0xd5803b){_0x2cc9e0=_0xd5803b;_0x51b76b[_0xbe77('0x2f')]=_['keys'](db[_0xbe77('0x48')][_0xbe77('0x2b')]);_0x51b76b['query']=_[_0xbe77('0x31')](_0x8e23cd[_0xbe77('0x30')]);_0x51b76b[_0xbe77('0x3a')]=_['intersection'](_0x51b76b['model'],_0x51b76b[_0xbe77('0x30')]);_0x10a1f9['attributes']=_['intersection'](_0x51b76b[_0xbe77('0x2f')],qs[_0xbe77('0x33')](_0x8e23cd[_0xbe77('0x30')][_0xbe77('0x33')]));_0x10a1f9[_0xbe77('0x34')]=_0x10a1f9[_0xbe77('0x34')]['length']?_0x10a1f9[_0xbe77('0x34')]:_0x51b76b[_0xbe77('0x2f')];_0x10a1f9[_0xbe77('0x37')]=qs[_0xbe77('0x38')](_0x8e23cd[_0xbe77('0x30')][_0xbe77('0x38')]);_0x10a1f9[_0xbe77('0x39')]=qs[_0xbe77('0x3a')](_[_0xbe77('0x3b')](_0x8e23cd['query'],_0x51b76b[_0xbe77('0x3a')]));if(_0x8e23cd[_0xbe77('0x30')]['filter']){_0x10a1f9[_0xbe77('0x39')]=_[_0xbe77('0x3d')](_0x10a1f9[_0xbe77('0x39')],{'$or':_[_0xbe77('0x29')](_0x10a1f9[_0xbe77('0x34')],function(_0x218f7f){var _0xb2769={};_0xb2769[_0x218f7f]={'$like':'%'+_0x8e23cd[_0xbe77('0x30')][_0xbe77('0x3c')]+'%'};return _0xb2769;})});}_0x10a1f9=_[_0xbe77('0x3d')]({},_0x10a1f9,_0x8e23cd[_0xbe77('0x3f')]);return _0x2cc9e0[_0xbe77('0x4c')](_0x10a1f9);}})['then'](function(_0x511379){if(_0x511379){_0x5828a4=_0x511379['length'];if(!_0x8e23cd[_0xbe77('0x30')][_0xbe77('0x35')]('nolimit')){_0x10a1f9[_0xbe77('0x1b')]=qs[_0xbe77('0x1b')](_0x8e23cd['query'][_0xbe77('0x1b')]);_0x10a1f9[_0xbe77('0x36')]=qs[_0xbe77('0x36')](_0x8e23cd[_0xbe77('0x30')][_0xbe77('0x36')]);}return _0x2cc9e0[_0xbe77('0x4c')](_0x10a1f9);}})[_0xbe77('0x22')](function(_0x53e1af){if(_0x53e1af){return _0x53e1af?{'count':_0x5828a4,'rows':_0x53e1af}:null;}})[_0xbe77('0x22')](respondWithResult(_0x5e2fa4,null))[_0xbe77('0x41')](handleError(_0x5e2fa4,null));};exports[_0xbe77('0x4d')]=function(_0x260ced,_0x4a90c4,_0x5db66f){var _0x1ae086={};var _0x4d51ed={};var _0x47470c;var _0x4e3a8e;return db[_0xbe77('0x2a')][_0xbe77('0x4b')]({'where':{'id':_0x260ced[_0xbe77('0x47')]['id']}})[_0xbe77('0x22')](handleEntityNotFound(_0x4a90c4,null))[_0xbe77('0x22')](function(_0x24405f){if(_0x24405f){_0x47470c=_0x24405f;_0x4d51ed[_0xbe77('0x2f')]=_[_0xbe77('0x31')](db[_0xbe77('0x4e')]['rawAttributes']);_0x4d51ed[_0xbe77('0x30')]=_[_0xbe77('0x31')](_0x260ced[_0xbe77('0x30')]);_0x4d51ed[_0xbe77('0x3a')]=_[_0xbe77('0x32')](_0x4d51ed[_0xbe77('0x2f')],_0x4d51ed[_0xbe77('0x30')]);_0x1ae086[_0xbe77('0x34')]=_['intersection'](_0x4d51ed['model'],qs[_0xbe77('0x33')](_0x260ced[_0xbe77('0x30')][_0xbe77('0x33')]));_0x1ae086[_0xbe77('0x34')]=_0x1ae086['attributes'][_0xbe77('0x43')]?_0x1ae086[_0xbe77('0x34')]:_0x4d51ed['model'];_0x1ae086[_0xbe77('0x37')]=qs[_0xbe77('0x38')](_0x260ced[_0xbe77('0x30')][_0xbe77('0x38')]);_0x1ae086[_0xbe77('0x39')]=qs['filters'](_[_0xbe77('0x3b')](_0x260ced['query'],_0x4d51ed[_0xbe77('0x3a')]));if(_0x260ced[_0xbe77('0x30')][_0xbe77('0x3c')]){_0x1ae086[_0xbe77('0x39')]=_['merge'](_0x1ae086['where'],{'$or':_[_0xbe77('0x29')](_0x1ae086[_0xbe77('0x34')],function(_0x547c44){var _0x58261c={};_0x58261c[_0x547c44]={'$like':'%'+_0x260ced[_0xbe77('0x30')]['filter']+'%'};return _0x58261c;})});}_0x1ae086=_[_0xbe77('0x3d')]({},_0x1ae086,_0x260ced[_0xbe77('0x3f')]);return _0x47470c[_0xbe77('0x4d')](_0x1ae086);}})[_0xbe77('0x22')](function(_0x1d3f92){if(_0x1d3f92){_0x4e3a8e=_0x1d3f92[_0xbe77('0x43')];if(!_0x260ced[_0xbe77('0x30')][_0xbe77('0x35')](_0xbe77('0x4f'))){_0x1ae086['limit']=qs[_0xbe77('0x1b')](_0x260ced['query'][_0xbe77('0x1b')]);_0x1ae086[_0xbe77('0x36')]=qs[_0xbe77('0x36')](_0x260ced[_0xbe77('0x30')][_0xbe77('0x36')]);}return _0x47470c[_0xbe77('0x4d')](_0x1ae086);}})[_0xbe77('0x22')](function(_0x30d245){if(_0x30d245){return _0x30d245?{'count':_0x4e3a8e,'rows':_0x30d245}:null;}})[_0xbe77('0x22')](respondWithResult(_0x4a90c4,null))[_0xbe77('0x41')](handleError(_0x4a90c4,null));};exports[_0xbe77('0x50')]=function(_0x5bafa6,_0x77df78,_0x5286ae){if(_0x5bafa6['body']['id']){delete _0x5bafa6[_0xbe77('0x45')]['id'];}return db['DeskConfiguration'][_0xbe77('0x4b')]({'where':{'id':_0x5bafa6['params']['id']}})[_0xbe77('0x22')](handleEntityNotFound(_0x77df78,null))[_0xbe77('0x22')](function(_0x3b475a){if(_0x3b475a){return _0x3b475a['setTags'](_0x5bafa6[_0xbe77('0x45')][_0xbe77('0x51')]||[]);}return null;})[_0xbe77('0x22')](respondWithResult(_0x77df78,null))[_0xbe77('0x41')](handleError(_0x77df78,null));};
\ No newline at end of file
index 355cd2f..f4a7b7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29c9=['exports','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intDeskConfiguration.attributes'];(function(_0x348652,_0x1ab849){var _0x18a9ea=function(_0x3fd540){while(--_0x3fd540){_0x348652['push'](_0x348652['shift']());}};_0x18a9ea(++_0x1ab849);}(_0x29c9,0x189));var _0x929c=function(_0x4e12c5,_0xf17788){_0x4e12c5=_0x4e12c5-0x0;var _0x11d934=_0x29c9[_0x4e12c5];return _0x11d934;};'use strict';var _=require(_0x929c('0x0'));var util=require(_0x929c('0x1'));var logger=require(_0x929c('0x2'))(_0x929c('0x3'));var moment=require(_0x929c('0x4'));var BPromise=require('bluebird');var rp=require(_0x929c('0x5'));var fs=require('fs');var path=require(_0x929c('0x6'));var rimraf=require(_0x929c('0x7'));var config=require(_0x929c('0x8'));var attributes=require(_0x929c('0x9'));module[_0x929c('0xa')]=function(_0x547baa,_0x161b59){return _0x547baa['define'](_0x929c('0xb'),attributes,{'tableName':_0x929c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0c83=['define','DeskConfiguration','int_desk_configurations','lodash','util','bluebird','request-promise','path','rimraf','./intDeskConfiguration.attributes'];(function(_0x216ed2,_0x4c8eec){var _0x1c41a2=function(_0x489427){while(--_0x489427){_0x216ed2['push'](_0x216ed2['shift']());}};_0x1c41a2(++_0x4c8eec);}(_0x0c83,0xc1));var _0x30c8=function(_0x411f8a,_0x45fbe7){_0x411f8a=_0x411f8a-0x0;var _0x5e7407=_0x0c83[_0x411f8a];return _0x5e7407;};'use strict';var _=require(_0x30c8('0x0'));var util=require(_0x30c8('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x30c8('0x2'));var rp=require(_0x30c8('0x3'));var fs=require('fs');var path=require(_0x30c8('0x4'));var rimraf=require(_0x30c8('0x5'));var config=require('../../config/environment');var attributes=require(_0x30c8('0x6'));module['exports']=function(_0x4d3530,_0x590352){return _0x4d3530[_0x30c8('0x7')](_0x30c8('0x8'),attributes,{'tableName':_0x30c8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0343c2a..494095a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8325=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','moment','randomstring'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0x8325,0x1f1));var _0x5832=function(_0x24585b,_0x1b268a){_0x24585b=_0x24585b-0x0;var _0x13cd8b=_0x8325[_0x24585b];return _0x13cd8b;};'use strict';var _=require(_0x5832('0x0'));var util=require('util');var moment=require(_0x5832('0x1'));var BPromise=require('bluebird');var rs=require(_0x5832('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5832('0x3'))['db'];var utils=require(_0x5832('0x4'));var logger=require(_0x5832('0x5'))(_0x5832('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5832('0x7')][_0x5832('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x8b3b30,_0xe80d1d,_0xb4e9b9){return new BPromise(function(_0x333780,_0x495531){return client[_0x5832('0x9')](_0x8b3b30,_0xb4e9b9)[_0x5832('0xa')](function(_0x10192d){logger[_0x5832('0xb')](_0x5832('0xc'),_0xe80d1d,_0x5832('0xd'));logger[_0x5832('0xe')](_0x5832('0xf'),_0xe80d1d,_0x5832('0xd'),JSON['stringify'](_0x10192d));if(_0x10192d['error']){if(_0x10192d[_0x5832('0x10')][_0x5832('0x11')]===0x1f4){logger[_0x5832('0x10')](_0x5832('0xc'),_0xe80d1d,_0x10192d['error']['message']);return _0x495531(_0x10192d[_0x5832('0x10')][_0x5832('0x12')]);}logger[_0x5832('0x10')](_0x5832('0xc'),_0xe80d1d,_0x10192d['error'][_0x5832('0x12')]);return _0x333780(_0x10192d[_0x5832('0x10')][_0x5832('0x12')]);}else{logger[_0x5832('0xb')]('DeskConfiguration,\x20%s,\x20%s',_0xe80d1d,_0x5832('0xd'));_0x333780(_0x10192d[_0x5832('0x13')][_0x5832('0x12')]);}})['catch'](function(_0x32d360){logger[_0x5832('0x10')](_0x5832('0xc'),_0xe80d1d,_0x32d360);_0x495531(_0x32d360);});});}
\ No newline at end of file
+var _0x2fc0=['code','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','error'];(function(_0x2f1762,_0xab43df){var _0x8ab21=function(_0xf6c1f5){while(--_0xf6c1f5){_0x2f1762['push'](_0x2f1762['shift']());}};_0x8ab21(++_0xab43df);}(_0x2fc0,0x192));var _0x02fc=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2fc0[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x02fc('0x0'));var moment=require(_0x02fc('0x1'));var BPromise=require(_0x02fc('0x2'));var rs=require(_0x02fc('0x3'));var fs=require('fs');var Redis=require(_0x02fc('0x4'));var db=require(_0x02fc('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x02fc('0x6'))(_0x02fc('0x7'));var config=require(_0x02fc('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x02fc('0x9')][_0x02fc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2a283b,_0x116104,_0x4ad1cd){return new BPromise(function(_0x6b7484,_0x3a154d){return client[_0x02fc('0xb')](_0x2a283b,_0x4ad1cd)[_0x02fc('0xc')](function(_0x57157c){logger[_0x02fc('0xd')](_0x02fc('0xe'),_0x116104,_0x02fc('0xf'));logger['debug'](_0x02fc('0x10'),_0x116104,_0x02fc('0xf'),JSON['stringify'](_0x57157c));if(_0x57157c[_0x02fc('0x11')]){if(_0x57157c[_0x02fc('0x11')][_0x02fc('0x12')]===0x1f4){logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x116104,_0x57157c[_0x02fc('0x11')][_0x02fc('0x13')]);return _0x3a154d(_0x57157c[_0x02fc('0x11')][_0x02fc('0x13')]);}logger['error'](_0x02fc('0xe'),_0x116104,_0x57157c['error'][_0x02fc('0x13')]);return _0x6b7484(_0x57157c[_0x02fc('0x11')]['message']);}else{logger[_0x02fc('0xd')](_0x02fc('0xe'),_0x116104,_0x02fc('0xf'));_0x6b7484(_0x57157c[_0x02fc('0x14')]['message']);}})['catch'](function(_0x18f3c8){logger[_0x02fc('0x11')](_0x02fc('0xe'),_0x116104,_0x18f3c8);_0x3a154d(_0x18f3c8);});});}
\ No newline at end of file
index 56ad0fc..4e4b9cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecf5=['update','delete','exports','util','path','express','Router','../../config/environment','./intDeskField.controller','get','isAuthenticated','index','post','create','/:id'];(function(_0xbb6612,_0x3f12c7){var _0x3d9bd8=function(_0x5e8d23){while(--_0x5e8d23){_0xbb6612['push'](_0xbb6612['shift']());}};_0x3d9bd8(++_0x3f12c7);}(_0xecf5,0x1c5));var _0x5ecf=function(_0x3f9447,_0x2d0b5c){_0x3f9447=_0x3f9447-0x0;var _0x1800f2=_0xecf5[_0x3f9447];return _0x1800f2;};'use strict';var multer=require('multer');var util=require(_0x5ecf('0x0'));var path=require(_0x5ecf('0x1'));var timeout=require('connect-timeout');var express=require(_0x5ecf('0x2'));var router=express[_0x5ecf('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5ecf('0x4'));var controller=require(_0x5ecf('0x5'));router[_0x5ecf('0x6')]('/',auth[_0x5ecf('0x7')](),controller[_0x5ecf('0x8')]);router[_0x5ecf('0x6')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x5ecf('0x9')]('/',auth[_0x5ecf('0x7')](),controller[_0x5ecf('0xa')]);router['put'](_0x5ecf('0xb'),auth[_0x5ecf('0x7')](),controller[_0x5ecf('0xc')]);router[_0x5ecf('0xd')](_0x5ecf('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x5ecf('0xe')]=router;
\ No newline at end of file
+var _0x1505=['../../config/environment','get','isAuthenticated','/:id','show','create','put','update','delete','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/interaction/service'];(function(_0x1318f8,_0x3a4626){var _0x284b66=function(_0x470f16){while(--_0x470f16){_0x1318f8['push'](_0x1318f8['shift']());}};_0x284b66(++_0x3a4626);}(_0x1505,0x1cb));var _0x5150=function(_0x1d5586,_0xac512a){_0x1d5586=_0x1d5586-0x0;var _0x417470=_0x1505[_0x1d5586];return _0x417470;};'use strict';var multer=require(_0x5150('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5150('0x1'));var express=require('express');var router=express[_0x5150('0x2')]();var fs_extra=require(_0x5150('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x5150('0x4'));var config=require(_0x5150('0x5'));var controller=require('./intDeskField.controller');router[_0x5150('0x6')]('/',auth[_0x5150('0x7')](),controller['index']);router[_0x5150('0x6')](_0x5150('0x8'),auth[_0x5150('0x7')](),controller[_0x5150('0x9')]);router['post']('/',auth[_0x5150('0x7')](),controller[_0x5150('0xa')]);router[_0x5150('0xb')](_0x5150('0x8'),auth[_0x5150('0x7')](),controller[_0x5150('0xc')]);router[_0x5150('0xd')](_0x5150('0x8'),auth[_0x5150('0x7')](),controller[_0x5150('0xe')]);module[_0x5150('0xf')]=router;
\ No newline at end of file
index 8248fa0..47fc440 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ad4=['keyValue','STRING','BOOLEAN','ENUM','string','variable','customVariable'];(function(_0x19fdfe,_0x5b1633){var _0x2506cf=function(_0x327da9){while(--_0x327da9){_0x19fdfe['push'](_0x19fdfe['shift']());}};_0x2506cf(++_0x5b1633);}(_0x0ad4,0xc7));var _0x40ad=function(_0x5c7d48,_0x3e2460){_0x5c7d48=_0x5c7d48-0x0;var _0x3a37c2=_0x0ad4[_0x5c7d48];return _0x3a37c2;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x40ad('0x0')](_0x40ad('0x1'),_0x40ad('0x2'),_0x40ad('0x3'),_0x40ad('0x4'),'picklist'),'defaultValue':_0x40ad('0x1')},'content':{'type':Sequelize[_0x40ad('0x5')]},'key':{'type':Sequelize[_0x40ad('0x5')]},'keyType':{'type':Sequelize[_0x40ad('0x0')](_0x40ad('0x1'),'variable',_0x40ad('0x3'))},'keyContent':{'type':Sequelize[_0x40ad('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x40ad('0x5')]},'customField':{'type':Sequelize[_0x40ad('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x40ad('0x5')]}};
\ No newline at end of file
+var _0x6448=['string','BOOLEAN','exports','ENUM','variable','customVariable','picklist','STRING'];(function(_0xf832f,_0x37e3ce){var _0x1fc929=function(_0x4fcd2e){while(--_0x4fcd2e){_0xf832f['push'](_0xf832f['shift']());}};_0x1fc929(++_0x37e3ce);}(_0x6448,0xc2));var _0x8644=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6448[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x8644('0x0')]={'type':{'type':Sequelize[_0x8644('0x1')]('string',_0x8644('0x2'),_0x8644('0x3'),'keyValue',_0x8644('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x8644('0x5')]},'key':{'type':Sequelize[_0x8644('0x5')]},'keyType':{'type':Sequelize[_0x8644('0x1')](_0x8644('0x6'),'variable',_0x8644('0x3'))},'keyContent':{'type':Sequelize[_0x8644('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x8644('0x5')]},'customField':{'type':Sequelize[_0x8644('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8644('0x5')]}};
\ No newline at end of file
index 79e87e8..9b92e01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb39f=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','index','map','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','DeskField','includeAll','rows','show','params','length','find','catch','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','mustache','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x5929e8,_0x5e6795){var _0x2c48f3=function(_0x2e40fc){while(--_0x2e40fc){_0x5929e8['push'](_0x5929e8['shift']());}};_0x2c48f3(++_0x5e6795);}(_0xb39f,0x1e6));var _0xfb39=function(_0x1bd484,_0x3f421d){_0x1bd484=_0x1bd484-0x0;var _0x29fe5c=_0xb39f[_0x1bd484];return _0x29fe5c;};'use strict';var emlformat=require(_0xfb39('0x0'));var rimraf=require(_0xfb39('0x1'));var zipdir=require(_0xfb39('0x2'));var jsonpatch=require(_0xfb39('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xfb39('0x4'));var util=require('util');var path=require(_0xfb39('0x5'));var sox=require(_0xfb39('0x6'));var csv=require('to-csv');var ejs=require(_0xfb39('0x7'));var fs=require('fs');var fs_extra=require(_0xfb39('0x8'));var _=require(_0xfb39('0x9'));var squel=require(_0xfb39('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xfb39('0xb'));var toCsv=require(_0xfb39('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfb39('0xd'));var qs=require(_0xfb39('0xe'));var as=require(_0xfb39('0xf'));var hardwareService=require(_0xfb39('0x10'));var logger=require(_0xfb39('0x11'))('api');var utils=require(_0xfb39('0x12'));var config=require(_0xfb39('0x13'));var licenseUtil=require(_0xfb39('0x14'));var db=require(_0xfb39('0x15'))['db'];function respondWithStatusCode(_0x35aeb4,_0x5e1cfa){_0x5e1cfa=_0x5e1cfa||0xcc;return function(_0x58249d){if(_0x58249d){return _0x35aeb4[_0xfb39('0x16')](_0x5e1cfa);}return _0x35aeb4[_0xfb39('0x17')](_0x5e1cfa)[_0xfb39('0x18')]();};}function respondWithResult(_0x480a86,_0x3ef405){_0x3ef405=_0x3ef405||0xc8;return function(_0x2a3724){if(_0x2a3724){return _0x480a86['status'](_0x3ef405)['json'](_0x2a3724);}};}function respondWithFilteredResult(_0x177a14,_0x4a0662){return function(_0x31b1dc){if(_0x31b1dc){var _0x4897be=typeof _0x4a0662['offset']===_0xfb39('0x19')&&typeof _0x4a0662[_0xfb39('0x1a')]===_0xfb39('0x19');var _0x1d1ad3=_0x31b1dc[_0xfb39('0x1b')];var _0x5cb552=_0x4897be?0x0:_0x4a0662[_0xfb39('0x1c')];var _0xd2ad6d=_0x4897be?_0x31b1dc[_0xfb39('0x1b')]:_0x4a0662[_0xfb39('0x1c')]+_0x4a0662['limit'];var _0x50765f;if(_0xd2ad6d>=_0x1d1ad3){_0xd2ad6d=_0x1d1ad3;_0x50765f=0xc8;}else{_0x50765f=0xce;}_0x177a14[_0xfb39('0x17')](_0x50765f);return _0x177a14[_0xfb39('0x1d')](_0xfb39('0x1e'),_0x5cb552+'-'+_0xd2ad6d+'/'+_0x1d1ad3)[_0xfb39('0x1f')](_0x31b1dc);}return null;};}function patchUpdates(_0x116b22){return function(_0x57bebf){try{jsonpatch[_0xfb39('0x20')](_0x57bebf,_0x116b22,!![]);}catch(_0x3d5697){return BPromise[_0xfb39('0x21')](_0x3d5697);}return _0x57bebf[_0xfb39('0x22')]();};}function saveUpdates(_0x3b4393,_0x5f2f60){return function(_0x50b2e2){if(_0x50b2e2){return _0x50b2e2[_0xfb39('0x23')](_0x3b4393)[_0xfb39('0x24')](function(_0x561b60){return _0x561b60;});}return null;};}function removeEntity(_0x1b1e65,_0x33d029){return function(_0x23bd78){if(_0x23bd78){return _0x23bd78['destroy']()['then'](function(){_0x1b1e65[_0xfb39('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x228288,_0x14651a){return function(_0x30dbc5){if(!_0x30dbc5){_0x228288[_0xfb39('0x16')](0x194);}return _0x30dbc5;};}function handleError(_0x118aa7,_0x2a7add){_0x2a7add=_0x2a7add||0x1f4;return function(_0x38e145){logger[_0xfb39('0x25')](_0x38e145[_0xfb39('0x26')]);if(_0x38e145[_0xfb39('0x27')]){delete _0x38e145[_0xfb39('0x27')];}_0x118aa7[_0xfb39('0x17')](_0x2a7add)[_0xfb39('0x28')](_0x38e145);};}exports[_0xfb39('0x29')]=function(_0x5d05e2,_0x4a98e9){var _0x34977d={},_0x233d80={},_0xc6129d={'count':0x0,'rows':[]};var _0x2a247c=_[_0xfb39('0x2a')](db['DeskField']['rawAttributes'],function(_0x4665e9){return{'name':_0x4665e9['fieldName'],'type':_0x4665e9['type'][_0xfb39('0x2b')]};});_0x233d80[_0xfb39('0x2c')]=_['map'](_0x2a247c,'name');_0x233d80[_0xfb39('0x2d')]=_[_0xfb39('0x2e')](_0x5d05e2[_0xfb39('0x2d')]);_0x233d80[_0xfb39('0x2f')]=_[_0xfb39('0x30')](_0x233d80['model'],_0x233d80[_0xfb39('0x2d')]);_0x34977d[_0xfb39('0x31')]=_['intersection'](_0x233d80[_0xfb39('0x2c')],qs['fields'](_0x5d05e2[_0xfb39('0x2d')][_0xfb39('0x32')]));_0x34977d['attributes']=_0x34977d[_0xfb39('0x31')]['length']?_0x34977d['attributes']:_0x233d80[_0xfb39('0x2c')];if(!_0x5d05e2[_0xfb39('0x2d')][_0xfb39('0x33')](_0xfb39('0x34'))){_0x34977d[_0xfb39('0x1a')]=qs[_0xfb39('0x1a')](_0x5d05e2[_0xfb39('0x2d')][_0xfb39('0x1a')]);_0x34977d[_0xfb39('0x1c')]=qs['offset'](_0x5d05e2[_0xfb39('0x2d')][_0xfb39('0x1c')]);}_0x34977d[_0xfb39('0x35')]=qs[_0xfb39('0x36')](_0x5d05e2[_0xfb39('0x2d')][_0xfb39('0x36')]);_0x34977d[_0xfb39('0x37')]=qs[_0xfb39('0x2f')](_['pick'](_0x5d05e2[_0xfb39('0x2d')],_0x233d80[_0xfb39('0x2f')]),_0x2a247c);if(_0x5d05e2['query'][_0xfb39('0x38')]){_0x34977d[_0xfb39('0x37')]=_[_0xfb39('0x39')](_0x34977d[_0xfb39('0x37')],{'$or':_[_0xfb39('0x2a')](_0x2a247c,function(_0x1347c0){if(_0x1347c0[_0xfb39('0x3a')]!==_0xfb39('0x3b')){var _0x42f414={};_0x42f414[_0x1347c0[_0xfb39('0x27')]]={'$like':'%'+_0x5d05e2[_0xfb39('0x2d')]['filter']+'%'};return _0x42f414;}})});}_0x34977d=_[_0xfb39('0x39')]({},_0x34977d,_0x5d05e2[_0xfb39('0x3c')]);var _0x5e55b7={'where':_0x34977d[_0xfb39('0x37')]};return db[_0xfb39('0x3d')][_0xfb39('0x1b')](_0x5e55b7)['then'](function(_0xff7831){_0xc6129d[_0xfb39('0x1b')]=_0xff7831;if(_0x5d05e2['query'][_0xfb39('0x3e')]){_0x34977d['include']=[{'all':!![]}];}return db[_0xfb39('0x3d')]['findAll'](_0x34977d);})['then'](function(_0x545180){_0xc6129d[_0xfb39('0x3f')]=_0x545180;return _0xc6129d;})[_0xfb39('0x24')](respondWithFilteredResult(_0x4a98e9,_0x34977d))['catch'](handleError(_0x4a98e9,null));};exports[_0xfb39('0x40')]=function(_0x328288,_0x2a8ec8){var _0x2ece4e={'raw':!![],'where':{'id':_0x328288[_0xfb39('0x41')]['id']}},_0x512bba={};_0x512bba[_0xfb39('0x2c')]=_[_0xfb39('0x2e')](db['DeskField']['rawAttributes']);_0x512bba[_0xfb39('0x2d')]=_['keys'](_0x328288[_0xfb39('0x2d')]);_0x512bba[_0xfb39('0x2f')]=_[_0xfb39('0x30')](_0x512bba['model'],_0x512bba[_0xfb39('0x2d')]);_0x2ece4e[_0xfb39('0x31')]=_['intersection'](_0x512bba[_0xfb39('0x2c')],qs['fields'](_0x328288['query'][_0xfb39('0x32')]));_0x2ece4e[_0xfb39('0x31')]=_0x2ece4e[_0xfb39('0x31')][_0xfb39('0x42')]?_0x2ece4e['attributes']:_0x512bba[_0xfb39('0x2c')];if(_0x328288['query'][_0xfb39('0x3e')]){_0x2ece4e['include']=[{'all':!![]}];}_0x2ece4e=_[_0xfb39('0x39')]({},_0x2ece4e,_0x328288[_0xfb39('0x3c')]);return db[_0xfb39('0x3d')][_0xfb39('0x43')](_0x2ece4e)[_0xfb39('0x24')](handleEntityNotFound(_0x2a8ec8,null))['then'](respondWithResult(_0x2a8ec8,null))[_0xfb39('0x44')](handleError(_0x2a8ec8,null));};exports['create']=function(_0x43ccf4,_0x544293){return db[_0xfb39('0x3d')][_0xfb39('0x45')](_0x43ccf4['body'],{})[_0xfb39('0x24')](respondWithResult(_0x544293,0xc9))[_0xfb39('0x44')](handleError(_0x544293,null));};exports[_0xfb39('0x23')]=function(_0x43c619,_0x197123){if(_0x43c619[_0xfb39('0x46')]['id']){delete _0x43c619['body']['id'];}return db['DeskField'][_0xfb39('0x43')]({'where':{'id':_0x43c619[_0xfb39('0x41')]['id']}})[_0xfb39('0x24')](handleEntityNotFound(_0x197123,null))[_0xfb39('0x24')](saveUpdates(_0x43c619[_0xfb39('0x46')],null))['then'](respondWithResult(_0x197123,null))[_0xfb39('0x44')](handleError(_0x197123,null));};exports[_0xfb39('0x47')]=function(_0x21fe27,_0x11d1e8){return db[_0xfb39('0x3d')][_0xfb39('0x43')]({'where':{'id':_0x21fe27['params']['id']}})[_0xfb39('0x24')](handleEntityNotFound(_0x11d1e8,null))[_0xfb39('0x24')](removeEntity(_0x11d1e8,null))['catch'](handleError(_0x11d1e8,null));};
\ No newline at end of file
+var _0xbb61=['keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','rows','catch','show','model','find','create','body','params','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','sendStatus','name','index','DeskField','rawAttributes','fieldName','type','key','map','query'];(function(_0x1bf1c0,_0x233268){var _0x3375c7=function(_0x42ffe2){while(--_0x42ffe2){_0x1bf1c0['push'](_0x1bf1c0['shift']());}};_0x3375c7(++_0x233268);}(_0xbb61,0x131));var _0x1bb6=function(_0x1b4b23,_0x5dd6d6){_0x1b4b23=_0x1b4b23-0x0;var _0x2a325b=_0xbb61[_0x1b4b23];return _0x2a325b;};'use strict';var emlformat=require(_0x1bb6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1bb6('0x1'));var jsonpatch=require(_0x1bb6('0x2'));var rp=require(_0x1bb6('0x3'));var moment=require(_0x1bb6('0x4'));var BPromise=require(_0x1bb6('0x5'));var Mustache=require(_0x1bb6('0x6'));var util=require(_0x1bb6('0x7'));var path=require('path');var sox=require(_0x1bb6('0x8'));var csv=require(_0x1bb6('0x9'));var ejs=require(_0x1bb6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1bb6('0xb'));var squel=require(_0x1bb6('0xc'));var crypto=require(_0x1bb6('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1bb6('0xe'));var toCsv=require(_0x1bb6('0x9'));var querystring=require(_0x1bb6('0xf'));var Papa=require(_0x1bb6('0x10'));var Redis=require(_0x1bb6('0x11'));var authService=require(_0x1bb6('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1bb6('0x13'));var hardwareService=require(_0x1bb6('0x14'));var logger=require('../../config/logger')(_0x1bb6('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e7836,_0x1065cd){_0x1065cd=_0x1065cd||0xcc;return function(_0x554927){if(_0x554927){return _0x1e7836['sendStatus'](_0x1065cd);}return _0x1e7836[_0x1bb6('0x16')](_0x1065cd)[_0x1bb6('0x17')]();};}function respondWithResult(_0x1455f3,_0x93768a){_0x93768a=_0x93768a||0xc8;return function(_0x975a40){if(_0x975a40){return _0x1455f3[_0x1bb6('0x16')](_0x93768a)[_0x1bb6('0x18')](_0x975a40);}};}function respondWithFilteredResult(_0x40991a,_0x5b1aca){return function(_0x3856f7){if(_0x3856f7){var _0x1c802b=typeof _0x5b1aca[_0x1bb6('0x19')]===_0x1bb6('0x1a')&&typeof _0x5b1aca[_0x1bb6('0x1b')]==='undefined';var _0x10fd13=_0x3856f7[_0x1bb6('0x1c')];var _0x9e046a=_0x1c802b?0x0:_0x5b1aca['offset'];var _0x2233a3=_0x1c802b?_0x3856f7['count']:_0x5b1aca[_0x1bb6('0x19')]+_0x5b1aca['limit'];var _0x44c3df;if(_0x2233a3>=_0x10fd13){_0x2233a3=_0x10fd13;_0x44c3df=0xc8;}else{_0x44c3df=0xce;}_0x40991a[_0x1bb6('0x16')](_0x44c3df);return _0x40991a[_0x1bb6('0x1d')](_0x1bb6('0x1e'),_0x9e046a+'-'+_0x2233a3+'/'+_0x10fd13)[_0x1bb6('0x18')](_0x3856f7);}return null;};}function patchUpdates(_0xb05bd){return function(_0x1c2f39){try{jsonpatch[_0x1bb6('0x1f')](_0x1c2f39,_0xb05bd,!![]);}catch(_0x42cb75){return BPromise['reject'](_0x42cb75);}return _0x1c2f39[_0x1bb6('0x20')]();};}function saveUpdates(_0x255e8a,_0x52b6e9){return function(_0x194fa0){if(_0x194fa0){return _0x194fa0[_0x1bb6('0x21')](_0x255e8a)[_0x1bb6('0x22')](function(_0xc670ec){return _0xc670ec;});}return null;};}function removeEntity(_0x57bfbd,_0x4b5be5){return function(_0x5e1eb1){if(_0x5e1eb1){return _0x5e1eb1['destroy']()['then'](function(){_0x57bfbd[_0x1bb6('0x16')](0xcc)[_0x1bb6('0x17')]();});}};}function handleEntityNotFound(_0x104bf5,_0x5d447a){return function(_0x1a110f){if(!_0x1a110f){_0x104bf5[_0x1bb6('0x23')](0x194);}return _0x1a110f;};}function handleError(_0x8941a5,_0x320512){_0x320512=_0x320512||0x1f4;return function(_0x276be9){logger['error'](_0x276be9['stack']);if(_0x276be9['name']){delete _0x276be9[_0x1bb6('0x24')];}_0x8941a5['status'](_0x320512)['send'](_0x276be9);};}exports[_0x1bb6('0x25')]=function(_0x501cb3,_0x5c7bde){var _0x18526d={},_0xf42d9={},_0x353e87={'count':0x0,'rows':[]};var _0x108bdf=_['map'](db[_0x1bb6('0x26')][_0x1bb6('0x27')],function(_0x55485a){return{'name':_0x55485a[_0x1bb6('0x28')],'type':_0x55485a[_0x1bb6('0x29')][_0x1bb6('0x2a')]};});_0xf42d9['model']=_[_0x1bb6('0x2b')](_0x108bdf,_0x1bb6('0x24'));_0xf42d9[_0x1bb6('0x2c')]=_[_0x1bb6('0x2d')](_0x501cb3['query']);_0xf42d9[_0x1bb6('0x2e')]=_[_0x1bb6('0x2f')](_0xf42d9['model'],_0xf42d9[_0x1bb6('0x2c')]);_0x18526d[_0x1bb6('0x30')]=_[_0x1bb6('0x2f')](_0xf42d9['model'],qs[_0x1bb6('0x31')](_0x501cb3[_0x1bb6('0x2c')][_0x1bb6('0x31')]));_0x18526d['attributes']=_0x18526d['attributes'][_0x1bb6('0x32')]?_0x18526d[_0x1bb6('0x30')]:_0xf42d9['model'];if(!_0x501cb3[_0x1bb6('0x2c')]['hasOwnProperty'](_0x1bb6('0x33'))){_0x18526d[_0x1bb6('0x1b')]=qs[_0x1bb6('0x1b')](_0x501cb3[_0x1bb6('0x2c')][_0x1bb6('0x1b')]);_0x18526d[_0x1bb6('0x19')]=qs[_0x1bb6('0x19')](_0x501cb3['query'][_0x1bb6('0x19')]);}_0x18526d[_0x1bb6('0x34')]=qs['sort'](_0x501cb3[_0x1bb6('0x2c')][_0x1bb6('0x35')]);_0x18526d[_0x1bb6('0x36')]=qs[_0x1bb6('0x2e')](_[_0x1bb6('0x37')](_0x501cb3[_0x1bb6('0x2c')],_0xf42d9[_0x1bb6('0x2e')]),_0x108bdf);if(_0x501cb3[_0x1bb6('0x2c')]['filter']){_0x18526d[_0x1bb6('0x36')]=_[_0x1bb6('0x38')](_0x18526d['where'],{'$or':_[_0x1bb6('0x2b')](_0x108bdf,function(_0x19f644){if(_0x19f644[_0x1bb6('0x29')]!==_0x1bb6('0x39')){var _0x34ec38={};_0x34ec38[_0x19f644[_0x1bb6('0x24')]]={'$like':'%'+_0x501cb3[_0x1bb6('0x2c')][_0x1bb6('0x3a')]+'%'};return _0x34ec38;}})});}_0x18526d=_['merge']({},_0x18526d,_0x501cb3[_0x1bb6('0x3b')]);var _0x4a2a62={'where':_0x18526d[_0x1bb6('0x36')]};return db[_0x1bb6('0x26')][_0x1bb6('0x1c')](_0x4a2a62)[_0x1bb6('0x22')](function(_0x4378ae){_0x353e87[_0x1bb6('0x1c')]=_0x4378ae;if(_0x501cb3[_0x1bb6('0x2c')][_0x1bb6('0x3c')]){_0x18526d['include']=[{'all':!![]}];}return db[_0x1bb6('0x26')]['findAll'](_0x18526d);})[_0x1bb6('0x22')](function(_0x1b31e1){_0x353e87[_0x1bb6('0x3d')]=_0x1b31e1;return _0x353e87;})[_0x1bb6('0x22')](respondWithFilteredResult(_0x5c7bde,_0x18526d))[_0x1bb6('0x3e')](handleError(_0x5c7bde,null));};exports[_0x1bb6('0x3f')]=function(_0x1c4394,_0x5c4ac7){var _0x551e6e={'raw':!![],'where':{'id':_0x1c4394['params']['id']}},_0x2e8c03={};_0x2e8c03['model']=_[_0x1bb6('0x2d')](db['DeskField'][_0x1bb6('0x27')]);_0x2e8c03[_0x1bb6('0x2c')]=_[_0x1bb6('0x2d')](_0x1c4394['query']);_0x2e8c03[_0x1bb6('0x2e')]=_[_0x1bb6('0x2f')](_0x2e8c03['model'],_0x2e8c03['query']);_0x551e6e[_0x1bb6('0x30')]=_[_0x1bb6('0x2f')](_0x2e8c03[_0x1bb6('0x40')],qs[_0x1bb6('0x31')](_0x1c4394[_0x1bb6('0x2c')][_0x1bb6('0x31')]));_0x551e6e[_0x1bb6('0x30')]=_0x551e6e['attributes']['length']?_0x551e6e['attributes']:_0x2e8c03[_0x1bb6('0x40')];if(_0x1c4394[_0x1bb6('0x2c')]['includeAll']){_0x551e6e['include']=[{'all':!![]}];}_0x551e6e=_[_0x1bb6('0x38')]({},_0x551e6e,_0x1c4394[_0x1bb6('0x3b')]);return db['DeskField'][_0x1bb6('0x41')](_0x551e6e)[_0x1bb6('0x22')](handleEntityNotFound(_0x5c4ac7,null))[_0x1bb6('0x22')](respondWithResult(_0x5c4ac7,null))['catch'](handleError(_0x5c4ac7,null));};exports[_0x1bb6('0x42')]=function(_0x27f02e,_0x559531){return db[_0x1bb6('0x26')][_0x1bb6('0x42')](_0x27f02e[_0x1bb6('0x43')],{})['then'](respondWithResult(_0x559531,0xc9))[_0x1bb6('0x3e')](handleError(_0x559531,null));};exports['update']=function(_0x9ad780,_0x3a86a8){if(_0x9ad780['body']['id']){delete _0x9ad780[_0x1bb6('0x43')]['id'];}return db[_0x1bb6('0x26')]['find']({'where':{'id':_0x9ad780[_0x1bb6('0x44')]['id']}})['then'](handleEntityNotFound(_0x3a86a8,null))['then'](saveUpdates(_0x9ad780[_0x1bb6('0x43')],null))[_0x1bb6('0x22')](respondWithResult(_0x3a86a8,null))[_0x1bb6('0x3e')](handleError(_0x3a86a8,null));};exports[_0x1bb6('0x45')]=function(_0x35a54c,_0x5a20a5){return db[_0x1bb6('0x26')]['find']({'where':{'id':_0x35a54c[_0x1bb6('0x44')]['id']}})[_0x1bb6('0x22')](handleEntityNotFound(_0x5a20a5,null))[_0x1bb6('0x22')](removeEntity(_0x5a20a5,null))[_0x1bb6('0x3e')](handleError(_0x5a20a5,null));};
\ No newline at end of file
index 20ecce2..229118d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2498=['rimraf','./intDeskField.attributes','define','DeskField','int_desk_fields','desk_unique_index','idField','FieldId','lodash','util','api','bluebird','request-promise','path'];(function(_0x227478,_0x18c521){var _0x39c694=function(_0x5112ec){while(--_0x5112ec){_0x227478['push'](_0x227478['shift']());}};_0x39c694(++_0x18c521);}(_0x2498,0x6a));var _0x8249=function(_0x4b146b,_0xdf8dee){_0x4b146b=_0x4b146b-0x0;var _0x3c1c2c=_0x2498[_0x4b146b];return _0x3c1c2c;};'use strict';var _=require(_0x8249('0x0'));var util=require(_0x8249('0x1'));var logger=require('../../config/logger')(_0x8249('0x2'));var moment=require('moment');var BPromise=require(_0x8249('0x3'));var rp=require(_0x8249('0x4'));var fs=require('fs');var path=require(_0x8249('0x5'));var rimraf=require(_0x8249('0x6'));var config=require('../../config/environment');var attributes=require(_0x8249('0x7'));module['exports']=function(_0x26e133,_0x5f4956){return _0x26e133[_0x8249('0x8')](_0x8249('0x9'),attributes,{'tableName':_0x8249('0xa'),'paranoid':![],'indexes':[{'name':_0x8249('0xb'),'fields':[_0x8249('0xc'),_0x8249('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4011=['request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','exports','define','int_desk_fields','desk_unique_index','idField','FieldId','lodash','util'];(function(_0x1ebc6c,_0x58a00b){var _0x3a826d=function(_0x27d7eb){while(--_0x27d7eb){_0x1ebc6c['push'](_0x1ebc6c['shift']());}};_0x3a826d(++_0x58a00b);}(_0x4011,0x8d));var _0x1401=function(_0x527221,_0x3ad559){_0x527221=_0x527221-0x0;var _0xdd8990=_0x4011[_0x527221];return _0xdd8990;};'use strict';var _=require(_0x1401('0x0'));var util=require(_0x1401('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1401('0x2'));var fs=require('fs');var path=require(_0x1401('0x3'));var rimraf=require(_0x1401('0x4'));var config=require(_0x1401('0x5'));var attributes=require(_0x1401('0x6'));module[_0x1401('0x7')]=function(_0x3b5334,_0x20f205){return _0x3b5334[_0x1401('0x8')]('DeskField',attributes,{'tableName':_0x1401('0x9'),'paranoid':![],'indexes':[{'name':_0x1401('0xa'),'fields':[_0x1401('0xb'),_0x1401('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 43dd5fb..b0d03da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ff5=['debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent'];(function(_0x3e750b,_0x2070d9){var _0x1e2ac3=function(_0x214aca){while(--_0x214aca){_0x3e750b['push'](_0x3e750b['shift']());}};_0x1e2ac3(++_0x2070d9);}(_0x7ff5,0x149));var _0x57ff=function(_0x1b1adb,_0x24e1a1){_0x1b1adb=_0x1b1adb-0x0;var _0x5077ab=_0x7ff5[_0x1b1adb];return _0x5077ab;};'use strict';var _=require('lodash');var util=require(_0x57ff('0x0'));var moment=require(_0x57ff('0x1'));var BPromise=require(_0x57ff('0x2'));var rs=require(_0x57ff('0x3'));var fs=require('fs');var Redis=require(_0x57ff('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x57ff('0x5'));var logger=require('../../config/logger')(_0x57ff('0x6'));var config=require(_0x57ff('0x7'));var jayson=require(_0x57ff('0x8'));var client=jayson[_0x57ff('0x9')][_0x57ff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x465f2f,_0x3916c4,_0x2d42b2){return new BPromise(function(_0x341a76,_0x8e57a2){return client[_0x57ff('0xb')](_0x465f2f,_0x2d42b2)[_0x57ff('0xc')](function(_0x55efeb){logger[_0x57ff('0xd')](_0x57ff('0xe'),_0x3916c4,_0x57ff('0xf'));logger[_0x57ff('0x10')](_0x57ff('0x11'),_0x3916c4,_0x57ff('0xf'),JSON[_0x57ff('0x12')](_0x55efeb));if(_0x55efeb[_0x57ff('0x13')]){if(_0x55efeb[_0x57ff('0x13')]['code']===0x1f4){logger[_0x57ff('0x13')](_0x57ff('0xe'),_0x3916c4,_0x55efeb['error'][_0x57ff('0x14')]);return _0x8e57a2(_0x55efeb['error'][_0x57ff('0x14')]);}logger[_0x57ff('0x13')]('DeskField,\x20%s,\x20%s',_0x3916c4,_0x55efeb[_0x57ff('0x13')][_0x57ff('0x14')]);return _0x341a76(_0x55efeb[_0x57ff('0x13')][_0x57ff('0x14')]);}else{logger['info']('DeskField,\x20%s,\x20%s',_0x3916c4,_0x57ff('0xf'));_0x341a76(_0x55efeb[_0x57ff('0x15')][_0x57ff('0x14')]);}})[_0x57ff('0x16')](function(_0x47be5f){logger[_0x57ff('0x13')](_0x57ff('0xe'),_0x3916c4,_0x47be5f);_0x8e57a2(_0x47be5f);});});}
\ No newline at end of file
+var _0xd892=['randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','request','info','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','error','code','DeskField,\x20%s,\x20%s','message','result','catch','lodash','util','moment'];(function(_0x4454e7,_0x2e916a){var _0x4c2a56=function(_0x103efc){while(--_0x103efc){_0x4454e7['push'](_0x4454e7['shift']());}};_0x4c2a56(++_0x2e916a);}(_0xd892,0x18d));var _0x2d89=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xd892[_0x4243a3];return _0x1b2a33;};'use strict';var _=require(_0x2d89('0x0'));var util=require(_0x2d89('0x1'));var moment=require(_0x2d89('0x2'));var BPromise=require('bluebird');var rs=require(_0x2d89('0x3'));var fs=require('fs');var Redis=require(_0x2d89('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2d89('0x5'))(_0x2d89('0x6'));var config=require(_0x2d89('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2d89('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x528fe1,_0x5781ae,_0x22cbfa){return new BPromise(function(_0x5af1e8,_0x2e9b4e){return client[_0x2d89('0x9')](_0x528fe1,_0x22cbfa)['then'](function(_0x3eafc4){logger[_0x2d89('0xa')]('DeskField,\x20%s,\x20%s',_0x5781ae,_0x2d89('0xb'));logger[_0x2d89('0xc')](_0x2d89('0xd'),_0x5781ae,_0x2d89('0xb'),JSON['stringify'](_0x3eafc4));if(_0x3eafc4[_0x2d89('0xe')]){if(_0x3eafc4[_0x2d89('0xe')][_0x2d89('0xf')]===0x1f4){logger[_0x2d89('0xe')](_0x2d89('0x10'),_0x5781ae,_0x3eafc4[_0x2d89('0xe')][_0x2d89('0x11')]);return _0x2e9b4e(_0x3eafc4['error'][_0x2d89('0x11')]);}logger[_0x2d89('0xe')](_0x2d89('0x10'),_0x5781ae,_0x3eafc4[_0x2d89('0xe')][_0x2d89('0x11')]);return _0x5af1e8(_0x3eafc4[_0x2d89('0xe')][_0x2d89('0x11')]);}else{logger[_0x2d89('0xa')](_0x2d89('0x10'),_0x5781ae,_0x2d89('0xb'));_0x5af1e8(_0x3eafc4[_0x2d89('0x12')][_0x2d89('0x11')]);}})[_0x2d89('0x13')](function(_0x7755fe){logger[_0x2d89('0xe')]('DeskField,\x20%s,\x20%s',_0x5781ae,_0x7755fe);_0x2e9b4e(_0x7755fe);});});}
\ No newline at end of file
index 4155ae7..53b7e40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0809=['index','get','/:id','show','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','update','multer','util','path','express','../../components/auth/service','isAuthenticated'];(function(_0x383523,_0x262138){var _0x29c502=function(_0x3e64cd){while(--_0x3e64cd){_0x383523['push'](_0x383523['shift']());}};_0x29c502(++_0x262138);}(_0x0809,0x1d6));var _0x9080=function(_0x409bd2,_0x212647){_0x409bd2=_0x409bd2-0x0;var _0x5360f7=_0x0809[_0x409bd2];return _0x5360f7;};'use strict';var multer=require(_0x9080('0x0'));var util=require(_0x9080('0x1'));var path=require(_0x9080('0x2'));var timeout=require('connect-timeout');var express=require(_0x9080('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9080('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intDynamics365Account.controller');router['get']('/',auth[_0x9080('0x5')](),controller[_0x9080('0x6')]);router[_0x9080('0x7')](_0x9080('0x8'),auth[_0x9080('0x5')](),controller[_0x9080('0x9')]);router[_0x9080('0x7')]('/:id/configurations',auth[_0x9080('0x5')](),controller[_0x9080('0xa')]);router[_0x9080('0x7')](_0x9080('0xb'),auth['isAuthenticated'](),controller[_0x9080('0xc')]);router['post']('/',auth[_0x9080('0x5')](),controller[_0x9080('0xd')]);router[_0x9080('0xe')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x9080('0xf')]);router['put'](_0x9080('0x8'),auth[_0x9080('0x5')](),controller[_0x9080('0x10')]);router['delete']('/:id',auth[_0x9080('0x5')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xaf9c=['/:id','show','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','put','delete','destroy','exports','express','Router','fs-extra','../../components/interaction/service','./intDynamics365Account.controller','get','isAuthenticated','index'];(function(_0x46fa27,_0x19a2eb){var _0x5f5241=function(_0x367918){while(--_0x367918){_0x46fa27['push'](_0x46fa27['shift']());}};_0x5f5241(++_0x19a2eb);}(_0xaf9c,0x1ec));var _0xcaf9=function(_0x2ca616,_0x384ec8){_0x2ca616=_0x2ca616-0x0;var _0x53155f=_0xaf9c[_0x2ca616];return _0x53155f;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xcaf9('0x0'));var router=express[_0xcaf9('0x1')]();var fs_extra=require(_0xcaf9('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xcaf9('0x3'));var config=require('../../config/environment');var controller=require(_0xcaf9('0x4'));router[_0xcaf9('0x5')]('/',auth[_0xcaf9('0x6')](),controller[_0xcaf9('0x7')]);router['get'](_0xcaf9('0x8'),auth['isAuthenticated'](),controller[_0xcaf9('0x9')]);router[_0xcaf9('0x5')](_0xcaf9('0xa'),auth[_0xcaf9('0x6')](),controller['getConfigurations']);router[_0xcaf9('0x5')](_0xcaf9('0xb'),auth[_0xcaf9('0x6')](),controller[_0xcaf9('0xc')]);router[_0xcaf9('0xd')]('/',auth[_0xcaf9('0x6')](),controller[_0xcaf9('0xe')]);router[_0xcaf9('0xd')](_0xcaf9('0xa'),auth[_0xcaf9('0x6')](),controller[_0xcaf9('0xf')]);router[_0xcaf9('0x10')](_0xcaf9('0x8'),auth[_0xcaf9('0x6')](),controller['update']);router[_0xcaf9('0x11')](_0xcaf9('0x8'),auth['isAuthenticated'](),controller[_0xcaf9('0x12')]);module[_0xcaf9('0x13')]=router;
\ No newline at end of file
index ec4690d..56a1629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55f6=['STRING'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x55f6,0xaa));var _0x655f=function(_0x3c4fa3,_0x351d99){_0x3c4fa3=_0x3c4fa3-0x0;var _0xfe5661=_0x55f6[_0x3c4fa3];return _0xfe5661;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x655f('0x0')]},'username':{'type':Sequelize[_0x655f('0x0')]},'password':{'type':Sequelize[_0x655f('0x0')]},'remoteUri':{'type':Sequelize[_0x655f('0x0')]},'tenantId':{'type':Sequelize[_0x655f('0x0')]},'clientId':{'type':Sequelize[_0x655f('0x0')]},'clientSecret':{'type':Sequelize[_0x655f('0x0')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x655f('0x0')]}};
\ No newline at end of file
+var _0xbb59=['exports','STRING','sequelize'];(function(_0x1ff1fb,_0x22e337){var _0x581f9f=function(_0x39d9c9){while(--_0x39d9c9){_0x1ff1fb['push'](_0x1ff1fb['shift']());}};_0x581f9f(++_0x22e337);}(_0xbb59,0xec));var _0x9bb5=function(_0x271124,_0x209c3d){_0x271124=_0x271124-0x0;var _0x2ad166=_0xbb59[_0x271124];return _0x2ad166;};'use strict';var Sequelize=require(_0x9bb5('0x0'));module[_0x9bb5('0x1')]={'name':{'type':Sequelize[_0x9bb5('0x2')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x9bb5('0x2')]},'tenantId':{'type':Sequelize[_0x9bb5('0x2')]},'clientId':{'type':Sequelize[_0x9bb5('0x2')]},'clientSecret':{'type':Sequelize[_0x9bb5('0x2')]},'serverUrl':{'type':Sequelize[_0x9bb5('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a03d9a4..a768cba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3561=['model','map','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','where','pick','merge','filter','options','include','findAll','rows','catch','params','rawAttributes','length','find','create','update','body','getConfigurations','findOne','Dynamics365Configuration','addConfiguration','Subjects','channel','Descriptions','Dynamics365Field','ticketType','Incident','PhoneCall','title','description','ownerid','caseorigincode','subject','directioncode','phonecall_activity_parties','accountidyominame','actualserviceunits','contactidname','contactidyominame','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdonbehalfbyname','customeridyominame','emailaddress','entitlementidname','entityimage_url','exchangerate','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidyominame','sentimentvalue','slaname','socialprofileidname','subjectidname','ticketnumber','transactioncurrencyidname','utcconversiontimezonecode','concat','username','remoteUri','tenantId','clientSecret','slice','substring','POST','https://login.microsoftonline.com/','/oauth2/token','clientId','password','access_token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Bearer\x20','remove','includes','LogicalName','@odata.type','PicklistAttributeMetadata','push','all','forEach','isNil','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','test','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Options','Label','UserLocalizedLabel','Value',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','TrueOption','true','FalseOption','DisplayName',')/Microsoft.Dynamics.CRM.','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','undefined','count','set','reject','save','then','destroy','error','stack','name','send','index','Dynamics365Account','fieldName','type'];(function(_0x458356,_0x5a16e1){var _0x38a5ad=function(_0x16a7ab){while(--_0x16a7ab){_0x458356['push'](_0x458356['shift']());}};_0x38a5ad(++_0x5a16e1);}(_0x3561,0x94));var _0x1356=function(_0x3d463a,_0x19314b){_0x3d463a=_0x3d463a-0x0;var _0x492adc=_0x3561[_0x3d463a];return _0x492adc;};'use strict';var emlformat=require(_0x1356('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1356('0x1'));var jsonpatch=require(_0x1356('0x2'));var rp=require(_0x1356('0x3'));var moment=require(_0x1356('0x4'));var BPromise=require(_0x1356('0x5'));var Mustache=require(_0x1356('0x6'));var util=require(_0x1356('0x7'));var path=require(_0x1356('0x8'));var sox=require(_0x1356('0x9'));var csv=require(_0x1356('0xa'));var ejs=require(_0x1356('0xb'));var fs=require('fs');var fs_extra=require(_0x1356('0xc'));var _=require(_0x1356('0xd'));var squel=require('squel');var crypto=require(_0x1356('0xe'));var jsforce=require(_0x1356('0xf'));var deskjs=require(_0x1356('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1356('0x11'));var Redis=require(_0x1356('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x1356('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1356('0x14'));var logger=require(_0x1356('0x15'))('api');var utils=require(_0x1356('0x16'));var config=require(_0x1356('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x1356('0x18'))['db'];var integrations=require(_0x1356('0x19'));function respondWithStatusCode(_0x466604,_0x31e769){_0x31e769=_0x31e769||0xcc;return function(_0x319af1){if(_0x319af1){return _0x466604[_0x1356('0x1a')](_0x31e769);}return _0x466604[_0x1356('0x1b')](_0x31e769)[_0x1356('0x1c')]();};}function respondWithResult(_0x365fb0,_0x324102){_0x324102=_0x324102||0xc8;return function(_0x396402){if(_0x396402){return _0x365fb0[_0x1356('0x1b')](_0x324102)[_0x1356('0x1d')](_0x396402);}};}function respondWithFilteredResult(_0x47a952,_0x593f6d){return function(_0x61991a){if(_0x61991a){var _0x3c2adc=typeof _0x593f6d[_0x1356('0x1e')]==='undefined'&&typeof _0x593f6d[_0x1356('0x1f')]===_0x1356('0x20');var _0x39f708=_0x61991a[_0x1356('0x21')];var _0xa115de=_0x3c2adc?0x0:_0x593f6d[_0x1356('0x1e')];var _0x459836=_0x3c2adc?_0x61991a[_0x1356('0x21')]:_0x593f6d[_0x1356('0x1e')]+_0x593f6d[_0x1356('0x1f')];var _0x8ff03f;if(_0x459836>=_0x39f708){_0x459836=_0x39f708;_0x8ff03f=0xc8;}else{_0x8ff03f=0xce;}_0x47a952[_0x1356('0x1b')](_0x8ff03f);return _0x47a952[_0x1356('0x22')]('Content-Range',_0xa115de+'-'+_0x459836+'/'+_0x39f708)[_0x1356('0x1d')](_0x61991a);}return null;};}function patchUpdates(_0x5b958c){return function(_0x2d2af1){try{jsonpatch['apply'](_0x2d2af1,_0x5b958c,!![]);}catch(_0x420dd6){return BPromise[_0x1356('0x23')](_0x420dd6);}return _0x2d2af1[_0x1356('0x24')]();};}function saveUpdates(_0x377fe7,_0x10d756){return function(_0x43e3b2){if(_0x43e3b2){return _0x43e3b2['update'](_0x377fe7)[_0x1356('0x25')](function(_0x2c26be){return _0x2c26be;});}return null;};}function removeEntity(_0x53eca1,_0xf0a5e9){return function(_0x13d30b){if(_0x13d30b){return _0x13d30b[_0x1356('0x26')]()['then'](function(){_0x53eca1[_0x1356('0x1b')](0xcc)[_0x1356('0x1c')]();});}};}function handleEntityNotFound(_0x3f5c7f,_0x231e6f){return function(_0x4a39ee){if(!_0x4a39ee){_0x3f5c7f['sendStatus'](0x194);}return _0x4a39ee;};}function handleError(_0x42d609,_0x50a4b6){_0x50a4b6=_0x50a4b6||0x1f4;return function(_0x9961c3){logger[_0x1356('0x27')](_0x9961c3[_0x1356('0x28')]);if(_0x9961c3[_0x1356('0x29')]){delete _0x9961c3[_0x1356('0x29')];}_0x42d609['status'](_0x50a4b6)[_0x1356('0x2a')](_0x9961c3);};}exports[_0x1356('0x2b')]=function(_0x31752a,_0x261710){var _0x3a479f={},_0x21a3ca={},_0x4bb4a9={'count':0x0,'rows':[]};var _0x3716cf=_['map'](db[_0x1356('0x2c')]['rawAttributes'],function(_0x5d3a34){return{'name':_0x5d3a34[_0x1356('0x2d')],'type':_0x5d3a34[_0x1356('0x2e')]['key']};});_0x21a3ca[_0x1356('0x2f')]=_[_0x1356('0x30')](_0x3716cf,_0x1356('0x29'));_0x21a3ca[_0x1356('0x31')]=_[_0x1356('0x32')](_0x31752a[_0x1356('0x31')]);_0x21a3ca[_0x1356('0x33')]=_['intersection'](_0x21a3ca[_0x1356('0x2f')],_0x21a3ca[_0x1356('0x31')]);_0x3a479f[_0x1356('0x34')]=_[_0x1356('0x35')](_0x21a3ca['model'],qs[_0x1356('0x36')](_0x31752a[_0x1356('0x31')][_0x1356('0x36')]));_0x3a479f[_0x1356('0x34')]=_0x3a479f[_0x1356('0x34')]['length']?_0x3a479f[_0x1356('0x34')]:_0x21a3ca['model'];if(!_0x31752a[_0x1356('0x31')][_0x1356('0x37')](_0x1356('0x38'))){_0x3a479f[_0x1356('0x1f')]=qs[_0x1356('0x1f')](_0x31752a[_0x1356('0x31')][_0x1356('0x1f')]);_0x3a479f['offset']=qs[_0x1356('0x1e')](_0x31752a[_0x1356('0x31')][_0x1356('0x1e')]);}_0x3a479f[_0x1356('0x39')]=qs['sort'](_0x31752a[_0x1356('0x31')]['sort']);_0x3a479f[_0x1356('0x3a')]=qs['filters'](_[_0x1356('0x3b')](_0x31752a[_0x1356('0x31')],_0x21a3ca['filters']),_0x3716cf);if(_0x31752a[_0x1356('0x31')]['filter']){_0x3a479f[_0x1356('0x3a')]=_[_0x1356('0x3c')](_0x3a479f[_0x1356('0x3a')],{'$or':_[_0x1356('0x30')](_0x3716cf,function(_0x4e9523){if(_0x4e9523[_0x1356('0x2e')]!=='VIRTUAL'){var _0x92d6cf={};_0x92d6cf[_0x4e9523[_0x1356('0x29')]]={'$like':'%'+_0x31752a[_0x1356('0x31')][_0x1356('0x3d')]+'%'};return _0x92d6cf;}})});}_0x3a479f=_[_0x1356('0x3c')]({},_0x3a479f,_0x31752a[_0x1356('0x3e')]);var _0x357b17={'where':_0x3a479f[_0x1356('0x3a')]};return db[_0x1356('0x2c')][_0x1356('0x21')](_0x357b17)[_0x1356('0x25')](function(_0x3459e2){_0x4bb4a9[_0x1356('0x21')]=_0x3459e2;if(_0x31752a[_0x1356('0x31')]['includeAll']){_0x3a479f[_0x1356('0x3f')]=[{'all':!![]}];}return db[_0x1356('0x2c')][_0x1356('0x40')](_0x3a479f);})[_0x1356('0x25')](function(_0x21559e){_0x4bb4a9[_0x1356('0x41')]=_0x21559e;return _0x4bb4a9;})[_0x1356('0x25')](respondWithFilteredResult(_0x261710,_0x3a479f))[_0x1356('0x42')](handleError(_0x261710,null));};exports['show']=function(_0x594dbd,_0x35b712){var _0x36cf22={'raw':![],'where':{'id':_0x594dbd[_0x1356('0x43')]['id']}},_0x55b399={};_0x55b399[_0x1356('0x2f')]=_[_0x1356('0x32')](db[_0x1356('0x2c')][_0x1356('0x44')]);_0x55b399[_0x1356('0x31')]=_[_0x1356('0x32')](_0x594dbd[_0x1356('0x31')]);_0x55b399['filters']=_[_0x1356('0x35')](_0x55b399['model'],_0x55b399[_0x1356('0x31')]);_0x36cf22[_0x1356('0x34')]=_[_0x1356('0x35')](_0x55b399[_0x1356('0x2f')],qs[_0x1356('0x36')](_0x594dbd['query']['fields']));_0x36cf22[_0x1356('0x34')]=_0x36cf22[_0x1356('0x34')][_0x1356('0x45')]?_0x36cf22[_0x1356('0x34')]:_0x55b399[_0x1356('0x2f')];if(_0x594dbd[_0x1356('0x31')]['includeAll']){_0x36cf22[_0x1356('0x3f')]=[{'all':!![]}];}_0x36cf22=_['merge']({},_0x36cf22,_0x594dbd['options']);return db[_0x1356('0x2c')][_0x1356('0x46')](_0x36cf22)[_0x1356('0x25')](handleEntityNotFound(_0x35b712,null))[_0x1356('0x25')](respondWithResult(_0x35b712,null))['catch'](handleError(_0x35b712,null));};exports[_0x1356('0x47')]=function(_0xe8714d,_0x197272){return db[_0x1356('0x2c')]['create'](_0xe8714d['body'],{})[_0x1356('0x25')](respondWithResult(_0x197272,0xc9))[_0x1356('0x42')](handleError(_0x197272,null));};exports[_0x1356('0x48')]=function(_0x2beee2,_0x3b5e70){if(_0x2beee2[_0x1356('0x49')]['id']){delete _0x2beee2['body']['id'];}return db[_0x1356('0x2c')][_0x1356('0x46')]({'where':{'id':_0x2beee2['params']['id']}})[_0x1356('0x25')](handleEntityNotFound(_0x3b5e70,null))[_0x1356('0x25')](saveUpdates(_0x2beee2[_0x1356('0x49')],null))[_0x1356('0x25')](respondWithResult(_0x3b5e70,null))['catch'](handleError(_0x3b5e70,null));};exports['destroy']=function(_0x48bccc,_0x3239c1){return db['Dynamics365Account'][_0x1356('0x46')]({'where':{'id':_0x48bccc[_0x1356('0x43')]['id']}})[_0x1356('0x25')](handleEntityNotFound(_0x3239c1,null))['then'](removeEntity(_0x3239c1,null))[_0x1356('0x42')](handleError(_0x3239c1,null));};exports[_0x1356('0x4a')]=function(_0x1cf6d5,_0x16fe6c,_0x3198d5){var _0x40264e={};var _0x570f7b={};var _0x5cee39;var _0x3de56d;return db[_0x1356('0x2c')][_0x1356('0x4b')]({'where':{'id':_0x1cf6d5[_0x1356('0x43')]['id']}})[_0x1356('0x25')](handleEntityNotFound(_0x16fe6c,null))[_0x1356('0x25')](function(_0x3bc591){if(_0x3bc591){_0x5cee39=_0x3bc591;_0x570f7b['model']=_[_0x1356('0x32')](db[_0x1356('0x4c')]['rawAttributes']);_0x570f7b['query']=_[_0x1356('0x32')](_0x1cf6d5[_0x1356('0x31')]);_0x570f7b[_0x1356('0x33')]=_[_0x1356('0x35')](_0x570f7b[_0x1356('0x2f')],_0x570f7b[_0x1356('0x31')]);_0x40264e[_0x1356('0x34')]=_['intersection'](_0x570f7b['model'],qs[_0x1356('0x36')](_0x1cf6d5[_0x1356('0x31')][_0x1356('0x36')]));_0x40264e[_0x1356('0x34')]=_0x40264e['attributes'][_0x1356('0x45')]?_0x40264e[_0x1356('0x34')]:_0x570f7b[_0x1356('0x2f')];_0x40264e[_0x1356('0x39')]=qs['sort'](_0x1cf6d5[_0x1356('0x31')]['sort']);_0x40264e[_0x1356('0x3a')]=qs[_0x1356('0x33')](_[_0x1356('0x3b')](_0x1cf6d5[_0x1356('0x31')],_0x570f7b[_0x1356('0x33')]));if(_0x1cf6d5[_0x1356('0x31')][_0x1356('0x3d')]){_0x40264e[_0x1356('0x3a')]=_[_0x1356('0x3c')](_0x40264e['where'],{'$or':_[_0x1356('0x30')](_0x40264e[_0x1356('0x34')],function(_0x29fc66){var _0x53b5f9={};_0x53b5f9[_0x29fc66]={'$like':'%'+_0x1cf6d5[_0x1356('0x31')][_0x1356('0x3d')]+'%'};return _0x53b5f9;})});}_0x40264e=_[_0x1356('0x3c')]({},_0x40264e,_0x1cf6d5[_0x1356('0x3e')]);return _0x5cee39['getConfigurations'](_0x40264e);}})[_0x1356('0x25')](function(_0x27c645){if(_0x27c645){_0x3de56d=_0x27c645[_0x1356('0x45')];if(!_0x1cf6d5[_0x1356('0x31')][_0x1356('0x37')](_0x1356('0x38'))){_0x40264e[_0x1356('0x1f')]=qs[_0x1356('0x1f')](_0x1cf6d5['query']['limit']);_0x40264e[_0x1356('0x1e')]=qs['offset'](_0x1cf6d5[_0x1356('0x31')]['offset']);}return _0x5cee39[_0x1356('0x4a')](_0x40264e);}})[_0x1356('0x25')](function(_0x563fe8){if(_0x563fe8){return _0x563fe8?{'count':_0x3de56d,'rows':_0x563fe8}:null;}})[_0x1356('0x25')](respondWithResult(_0x16fe6c,null))[_0x1356('0x42')](handleError(_0x16fe6c,null));};exports[_0x1356('0x4d')]=function(_0x2c07b3,_0x38fdf4,_0xe13b17){if(_0x2c07b3[_0x1356('0x49')]['id']){delete _0x2c07b3[_0x1356('0x49')]['id'];}return db['Dynamics365Account'][_0x1356('0x4b')]({'where':{'id':_0x2c07b3[_0x1356('0x43')]['id']}})[_0x1356('0x25')](handleEntityNotFound(_0x38fdf4,null))[_0x1356('0x25')](function(_0x139072){if(_0x139072){_0x2c07b3[_0x1356('0x49')]['AccountId']=_0x139072['id'];_0x2c07b3[_0x1356('0x49')][_0x1356('0x4e')]=integrations['getSubjects'](_0x2c07b3[_0x1356('0x49')][_0x1356('0x4f')],_0x2c07b3['body'][_0x1356('0x2e')]);_0x2c07b3[_0x1356('0x49')][_0x1356('0x50')]=integrations['getDescriptions'](_0x2c07b3['body'][_0x1356('0x4f')],_0x2c07b3['body'][_0x1356('0x2e')]);return db['Dynamics365Configuration']['create'](_0x2c07b3[_0x1356('0x49')],{'include':[{'model':db[_0x1356('0x51')],'as':_0x1356('0x4e')},{'model':db[_0x1356('0x51')],'as':_0x1356('0x50')}]});}return null;})[_0x1356('0x25')](respondWithResult(_0x38fdf4,null))[_0x1356('0x42')](handleError(_0x38fdf4,null));};exports['getFields']=function(_0x2e2002,_0x247610,_0x13b84e){var _0x219695=_0x2e2002[_0x1356('0x31')][_0x1356('0x52')];var _0x1d2a9f=_0x219695==='incident'?_0x1356('0x53'):_0x1356('0x54');var _0x1a898d='';var _0x2bb86a='';var _0x667135='';var _0x3c920b='';var _0x4bd596='';var _0x570652='';var _0x3a6be5='';var _0x286b73='';var _0x3d27f0=[_0x1356('0x55'),_0x1356('0x56'),'customerid',_0x1356('0x57'),_0x1356('0x58'),_0x1356('0x59'),'phonenumber','regardingobjectid',_0x1356('0x5a'),_0x1356('0x5b')];var _0x54304d=['accountidname',_0x1356('0x5c'),_0x1356('0x5d'),'billedserviceunits',_0x1356('0x5e'),_0x1356('0x5f'),'contractdetailidname','contractidname',_0x1356('0x60'),_0x1356('0x61'),_0x1356('0x62'),'createdbyyominame','createdon',_0x1356('0x63'),'createdonbehalfbyyominame','customeridname','customeridtype',_0x1356('0x64'),_0x1356('0x65'),_0x1356('0x66'),'entityimage_timestamp',_0x1356('0x67'),'escalatedon',_0x1356('0x68'),'firstresponsebykpiidname',_0x1356('0x69'),_0x1356('0x6a'),_0x1356('0x6b'),_0x1356('0x6c'),_0x1356('0x6d'),'masteridname',_0x1356('0x6e'),_0x1356('0x6f'),'modifiedbyname',_0x1356('0x70'),_0x1356('0x71'),_0x1356('0x72'),_0x1356('0x73'),_0x1356('0x74'),_0x1356('0x75'),_0x1356('0x76'),_0x1356('0x77'),_0x1356('0x78'),_0x1356('0x79'),_0x1356('0x7a'),_0x1356('0x7b'),_0x1356('0x7c'),'primarycontactidname',_0x1356('0x7d'),_0x1356('0x7e'),_0x1356('0x7f'),_0x1356('0x80'),_0x1356('0x81'),_0x1356('0x82'),_0x1356('0x83'),'responsiblecontactidname',_0x1356('0x84'),_0x1356('0x85'),'slainvokedidname',_0x1356('0x86'),_0x1356('0x87'),'statecode','statuscode',_0x1356('0x88'),_0x1356('0x89'),'timezoneruleversionnumber',_0x1356('0x8a'),'traversedpath',_0x1356('0x8b'),'versionnumber'];var _0x14a682=_0x3d27f0[_0x1356('0x8c')](_0x54304d);return db[_0x1356('0x2c')]['findOne']({'where':{'id':_0x2e2002[_0x1356('0x43')]['id']},'attributes':['id',_0x1356('0x8d'),'password',_0x1356('0x8e'),_0x1356('0x8f'),'clientId',_0x1356('0x90')]})[_0x1356('0x25')](handleEntityNotFound(_0x247610,null))[_0x1356('0x25')](function(_0x3a4530){if(_0x3a4530){_0x286b73=_0x3a4530[_0x1356('0x8e')];var _0x5bc58e=_0x286b73[_0x1356('0x91')](-0x1);if(_0x5bc58e==='/'){_0x286b73=_0x286b73[_0x1356('0x92')](0x0,_0x286b73['lastIndexOf'](_0x5bc58e));}_0x3a6be5=util['format']('%s/api/data/v9.0/',_0x286b73);var _0x3bafb4={'method':_0x1356('0x93'),'uri':_0x1356('0x94')+_0x3a4530[_0x1356('0x8f')]+_0x1356('0x95'),'form':{'client_id':_0x3a4530[_0x1356('0x96')],'resource':_0x286b73,'username':_0x3a4530[_0x1356('0x8d')],'password':_0x3a4530[_0x1356('0x97')],'grant_type':'password','client_secret':_0x3a4530[_0x1356('0x90')]},'json':!![]};return rp(_0x3bafb4);}})[_0x1356('0x25')](function(_0x64e5be){_0x570652=_0x64e5be[_0x1356('0x98')];var _0x159882={'method':_0x1356('0x99'),'uri':encodeURI(_0x3a6be5+_0x1356('0x9a')+_0x1d2a9f+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x570652,'If-None-Match':null,'OData-Version':_0x1356('0x9b')},'json':!![]};return rp(_0x159882);})[_0x1356('0x25')](function(_0x141d5b){var _0x22ee07=_0x141d5b[_0x1356('0x9c')][0x0];var _0x54871d=_0x22ee07[_0x1356('0x9d')];var _0x40f9be={'method':'GET','uri':_0x3a6be5+_0x1356('0x9e')+_0x54871d+_0x1356('0x9f'),'headers':{'Authorization':_0x1356('0xa0')+_0x570652,'If-None-Match':null,'OData-Version':_0x1356('0x9b')},'json':!![]};return rp(_0x40f9be);})['then'](function(_0x3b38fc){_0x1a898d=_0x3b38fc;_0x2bb86a=_0x1a898d['Attributes'];_0x2bb86a=_[_0x1356('0xa1')](_0x2bb86a,function(_0x4da0ff){return!_0x14a682[_0x1356('0xa2')](_0x4da0ff[_0x1356('0xa3')]);});var _0x4ede24=[];var _0x5620f5=[];_0x2bb86a['forEach'](function(_0x49d2c6){if(_0x49d2c6['@odata.type']){var _0x41e9eb=_0x49d2c6[_0x1356('0xa4')][_0x1356('0x92')](_0x49d2c6['@odata.type']['lastIndexOf']('.')+0x1);if(_0x41e9eb===_0x1356('0xa5')){_0x4ede24[_0x1356('0xa6')](getSelectList(_0x3a6be5,_0x219695,_0x5620f5,_0x1a898d['MetadataId'],_0x49d2c6[_0x1356('0x9d')],_0x570652));}}});return Promise[_0x1356('0xa7')](_0x4ede24);})[_0x1356('0x25')](function(_0x464dee){_0x667135=_0x464dee[0x0];var _0x2fb2bf=[];var _0x2e19fb=[];_0x2bb86a[_0x1356('0xa8')](function(_0x5d60f6){if(!_[_0x1356('0xa9')](_0x5d60f6[_0x1356('0xa4')])){var _0x3d8b85=_0x5d60f6[_0x1356('0xa4')][_0x1356('0x92')](_0x5d60f6[_0x1356('0xa4')]['lastIndexOf']('.')+0x1);if(_0x3d8b85===_0x1356('0xaa')){_0x2fb2bf['push'](getBooleanList(_0x3a6be5,_0x219695,_0x2e19fb,_0x1a898d[_0x1356('0x9d')],_0x5d60f6[_0x1356('0x9d')],_0x570652));}}});return Promise[_0x1356('0xa7')](_0x2fb2bf);})[_0x1356('0x25')](function(_0x362f10){_0x3c920b=_0x362f10[0x0];var _0x1af402=[];var _0x38ba3d=[];_0x2bb86a[_0x1356('0xa8')](function(_0x37d23d){if(_0x37d23d[_0x1356('0xa4')]){var _0x3a71e6=_0x37d23d[_0x1356('0xa4')][_0x1356('0x92')](_0x37d23d['@odata.type']['lastIndexOf']('.')+0x1);if(_0x3a71e6===_0x1356('0xab')||_0x3a71e6===_0x1356('0xac')||_0x3a71e6===_0x1356('0xad')||_0x3a71e6===_0x1356('0xae')||_0x3a71e6===_0x1356('0xaf')||_0x3a71e6==='DateTimeAttributeMetadata'||_0x3a71e6===_0x1356('0xb0')||_0x3a71e6===_0x1356('0xb1')||_0x3a71e6===_0x1356('0xb2')||_0x3a71e6==='DecimalAttributeMetadata'){_0x1af402[_0x1356('0xa6')](getInputList(_0x3a6be5,_0x219695,_0x3a71e6,_0x38ba3d,_0x1a898d[_0x1356('0x9d')],_0x37d23d[_0x1356('0x9d')],_0x570652));}}});return Promise[_0x1356('0xa7')](_0x1af402);})[_0x1356('0x25')](function(_0x89bf5){_0x4bd596=_0x89bf5[0x0];var _0x3a554a=_0x667135[_0x1356('0x8c')](_0x3c920b)[_0x1356('0x8c')](_0x4bd596);var _0x32f681={'count':_0x3a554a[_0x1356('0x45')],'rows':_0x3a554a};return _0x32f681;})[_0x1356('0x25')](respondWithResult(_0x247610,null))[_0x1356('0x42')](function(_0xa5abbb){var _0xd68bf1=_0x2e2002['query'][_0x1356('0xb3')]?0x1f4:_0xa5abbb['statusCode']||0x1f4;logger[_0x1356('0x27')](_0xa5abbb['stack']);delete _0xa5abbb[_0x1356('0x29')];if(_0xd68bf1===0x191){_0xd68bf1=0x190;}_0x247610[_0x1356('0x1b')](_0xd68bf1)[_0x1356('0x2a')](_0x2e2002[_0x1356('0x31')][_0x1356('0xb3')]?{'message':_0x1356('0xb4'),'statusCode':_0xa5abbb['statusCode']}:_0xa5abbb);});};function getSelectList(_0x29f03c,_0x28d664,_0x308afc,_0x409751,_0x57b4ce,_0x2ff853){var _0xf52f2f={'method':_0x1356('0x99'),'uri':_0x29f03c+'EntityDefinitions('+_0x409751+_0x1356('0xb5')+_0x57b4ce+_0x1356('0xb6')+_0x1356('0xb7'),'headers':{'Authorization':_0x1356('0xa0')+_0x2ff853,'If-None-Match':null,'OData-Version':_0x1356('0x9b')},'json':!![]};return rp(_0xf52f2f)[_0x1356('0x25')](function(_0x4ca2c2){var _0x122202=[];var _0x3df36b=_0x4ca2c2['OptionSet'][_0x1356('0xb8')];_0x3df36b[_0x1356('0xa8')](function(_0x4c4a10){_0x122202[_0x1356('0xa6')]({'name':_0x4c4a10[_0x1356('0xb9')][_0x1356('0xba')][_0x1356('0xb9')],'value':String(_0x4c4a10[_0x1356('0xbb')])});});var _0x5b4ed4={'id':_0x28d664+'_'+_0x4ca2c2[_0x1356('0xa3')],'name':_0x4ca2c2['DisplayName'][_0x1356('0xba')]['Label'],'custom':![],'options':_0x122202};_0x308afc['push'](_0x5b4ed4);return _0x308afc;});}function getBooleanList(_0x5ac2be,_0x22875c,_0x5a9848,_0x2827ed,_0xfc50c3,_0x634d85){var _0x2d9d3={'method':'GET','uri':_0x5ac2be+_0x1356('0x9e')+_0x2827ed+_0x1356('0xb5')+_0xfc50c3+_0x1356('0xbc'),'headers':{'Authorization':_0x1356('0xa0')+_0x634d85,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2d9d3)[_0x1356('0x25')](function(_0x1cafe7){var _0x164e03=[];_0x164e03[_0x1356('0xa6')]({'name':_0x1cafe7[_0x1356('0xbd')][_0x1356('0xbe')]['Label'][_0x1356('0xba')][_0x1356('0xb9')],'value':_0x1356('0xbf')},{'name':_0x1cafe7[_0x1356('0xbd')][_0x1356('0xc0')][_0x1356('0xb9')][_0x1356('0xba')][_0x1356('0xb9')],'value':'false'});var _0x2c8454={'id':_0x22875c+'_'+_0x1cafe7[_0x1356('0xa3')],'name':_0x1cafe7[_0x1356('0xc1')]['UserLocalizedLabel']['Label'],'custom':![],'options':_0x164e03};_0x5a9848[_0x1356('0xa6')](_0x2c8454);return _0x5a9848;});}function getInputList(_0x25ef3f,_0x12afb9,_0x5cd5a7,_0x363fb2,_0x4cbac5,_0xe2a6fe,_0x12088b){var _0x43020b={'method':_0x1356('0x99'),'uri':_0x25ef3f+_0x1356('0x9e')+_0x4cbac5+')/Attributes('+_0xe2a6fe+_0x1356('0xc2')+_0x5cd5a7+'?$select=DisplayName,LogicalName','headers':{'Authorization':_0x1356('0xa0')+_0x12088b,'If-None-Match':null,'OData-Version':_0x1356('0x9b')},'json':!![]};return rp(_0x43020b)[_0x1356('0x25')](function(_0x1ba44a){var _0x5b08e0={'id':_0x12afb9+'_'+_0x1ba44a[_0x1356('0xa3')],'name':_0x1ba44a[_0x1356('0xc1')][_0x1356('0xba')]?_0x1ba44a['DisplayName'][_0x1356('0xba')][_0x1356('0xb9')]:_0x1ba44a[_0x1356('0xa3')],'custom':![],'options':[]};_0x363fb2['push'](_0x5b08e0);return _0x363fb2;});}
\ No newline at end of file
+var _0x636f=['../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','status','stack','name','send','map','Dynamics365Account','rawAttributes','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','intersection','find','catch','body','params','pick','getConfigurations','addConfiguration','findOne','AccountId','getSubjects','channel','Descriptions','getDescriptions','create','Subjects','Dynamics365Field','getFields','ticketType','incident','Incident','title','customerid','caseorigincode','subject','phonenumber','directioncode','accountidyominame','actualserviceunits','billedserviceunits','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','customeridtype','customeridyominame','entitlementidname','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','owneridname','owneridtype','owneridyominame','prioritycodename','productserialnumber','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','subjectidname','transactioncurrencyidname','concat','username','password','remoteUri','tenantId','clientId','clientSecret','slice','substring','lastIndexOf','format','%s/api/data/v9.0/','POST','https://login.microsoftonline.com/','/oauth2/token','access_token','Bearer\x20','4.0','value','MetadataId','GET','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','forEach','@odata.type','PicklistAttributeMetadata','push','BooleanAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','all','statusCode','error','test','Wrong\x20credentials',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','OptionSet','Label','UserLocalizedLabel','Value','LogicalName',')/Attributes(',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','FalseOption','DisplayName',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x59efa1,_0x4bc905){var _0x2fa281=function(_0x3a8f1c){while(--_0x3a8f1c){_0x59efa1['push'](_0x59efa1['shift']());}};_0x2fa281(++_0x4bc905);}(_0x636f,0x188));var _0xf636=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x636f[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xf636('0x0'));var jsonpatch=require(_0xf636('0x1'));var rp=require(_0xf636('0x2'));var moment=require(_0xf636('0x3'));var BPromise=require(_0xf636('0x4'));var Mustache=require('mustache');var util=require(_0xf636('0x5'));var path=require(_0xf636('0x6'));var sox=require(_0xf636('0x7'));var csv=require(_0xf636('0x8'));var ejs=require(_0xf636('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf636('0xa'));var squel=require(_0xf636('0xb'));var crypto=require(_0xf636('0xc'));var jsforce=require(_0xf636('0xd'));var deskjs=require(_0xf636('0xe'));var toCsv=require(_0xf636('0x8'));var querystring=require(_0xf636('0xf'));var Papa=require(_0xf636('0x10'));var Redis=require(_0xf636('0x11'));var authService=require(_0xf636('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf636('0x13'));var hardwareService=require(_0xf636('0x14'));var logger=require('../../config/logger')(_0xf636('0x15'));var utils=require(_0xf636('0x16'));var config=require(_0xf636('0x17'));var licenseUtil=require(_0xf636('0x18'));var db=require(_0xf636('0x19'))['db'];var integrations=require(_0xf636('0x1a'));function respondWithStatusCode(_0x5edcf1,_0x12fbb9){_0x12fbb9=_0x12fbb9||0xcc;return function(_0x25be2c){if(_0x25be2c){return _0x5edcf1[_0xf636('0x1b')](_0x12fbb9);}return _0x5edcf1['status'](_0x12fbb9)[_0xf636('0x1c')]();};}function respondWithResult(_0x579d8d,_0x302cc7){_0x302cc7=_0x302cc7||0xc8;return function(_0xb4079e){if(_0xb4079e){return _0x579d8d['status'](_0x302cc7)[_0xf636('0x1d')](_0xb4079e);}};}function respondWithFilteredResult(_0x7d8ebf,_0x54fdce){return function(_0xe4321d){if(_0xe4321d){var _0x263826=typeof _0x54fdce[_0xf636('0x1e')]===_0xf636('0x1f')&&typeof _0x54fdce[_0xf636('0x20')]==='undefined';var _0x18edf5=_0xe4321d[_0xf636('0x21')];var _0x58c699=_0x263826?0x0:_0x54fdce[_0xf636('0x1e')];var _0x4c5f38=_0x263826?_0xe4321d['count']:_0x54fdce[_0xf636('0x1e')]+_0x54fdce[_0xf636('0x20')];var _0x5bc99c;if(_0x4c5f38>=_0x18edf5){_0x4c5f38=_0x18edf5;_0x5bc99c=0xc8;}else{_0x5bc99c=0xce;}_0x7d8ebf['status'](_0x5bc99c);return _0x7d8ebf[_0xf636('0x22')](_0xf636('0x23'),_0x58c699+'-'+_0x4c5f38+'/'+_0x18edf5)[_0xf636('0x1d')](_0xe4321d);}return null;};}function patchUpdates(_0x45ad3a){return function(_0x2f8503){try{jsonpatch[_0xf636('0x24')](_0x2f8503,_0x45ad3a,!![]);}catch(_0x35fdb4){return BPromise[_0xf636('0x25')](_0x35fdb4);}return _0x2f8503[_0xf636('0x26')]();};}function saveUpdates(_0x2cff88,_0x54be7e){return function(_0xadc8d6){if(_0xadc8d6){return _0xadc8d6[_0xf636('0x27')](_0x2cff88)[_0xf636('0x28')](function(_0x2488d8){return _0x2488d8;});}return null;};}function removeEntity(_0x357f38,_0x1db7c3){return function(_0x557e42){if(_0x557e42){return _0x557e42[_0xf636('0x29')]()['then'](function(){_0x357f38[_0xf636('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4fa98f,_0x5b24df){return function(_0x46bc60){if(!_0x46bc60){_0x4fa98f['sendStatus'](0x194);}return _0x46bc60;};}function handleError(_0x4a1347,_0x733973){_0x733973=_0x733973||0x1f4;return function(_0x1e9df8){logger['error'](_0x1e9df8[_0xf636('0x2b')]);if(_0x1e9df8[_0xf636('0x2c')]){delete _0x1e9df8[_0xf636('0x2c')];}_0x4a1347[_0xf636('0x2a')](_0x733973)[_0xf636('0x2d')](_0x1e9df8);};}exports['index']=function(_0x44bf42,_0x2e0c4f){var _0x58c078={},_0x2866da={},_0x28e575={'count':0x0,'rows':[]};var _0x349fb2=_[_0xf636('0x2e')](db[_0xf636('0x2f')][_0xf636('0x30')],function(_0x274afa){return{'name':_0x274afa[_0xf636('0x31')],'type':_0x274afa[_0xf636('0x32')][_0xf636('0x33')]};});_0x2866da[_0xf636('0x34')]=_['map'](_0x349fb2,_0xf636('0x2c'));_0x2866da[_0xf636('0x35')]=_['keys'](_0x44bf42['query']);_0x2866da[_0xf636('0x36')]=_['intersection'](_0x2866da['model'],_0x2866da['query']);_0x58c078[_0xf636('0x37')]=_['intersection'](_0x2866da[_0xf636('0x34')],qs[_0xf636('0x38')](_0x44bf42[_0xf636('0x35')]['fields']));_0x58c078['attributes']=_0x58c078[_0xf636('0x37')][_0xf636('0x39')]?_0x58c078['attributes']:_0x2866da['model'];if(!_0x44bf42['query'][_0xf636('0x3a')](_0xf636('0x3b'))){_0x58c078[_0xf636('0x20')]=qs[_0xf636('0x20')](_0x44bf42[_0xf636('0x35')]['limit']);_0x58c078[_0xf636('0x1e')]=qs[_0xf636('0x1e')](_0x44bf42[_0xf636('0x35')][_0xf636('0x1e')]);}_0x58c078[_0xf636('0x3c')]=qs[_0xf636('0x3d')](_0x44bf42[_0xf636('0x35')][_0xf636('0x3d')]);_0x58c078[_0xf636('0x3e')]=qs['filters'](_['pick'](_0x44bf42[_0xf636('0x35')],_0x2866da[_0xf636('0x36')]),_0x349fb2);if(_0x44bf42[_0xf636('0x35')][_0xf636('0x3f')]){_0x58c078[_0xf636('0x3e')]=_[_0xf636('0x40')](_0x58c078[_0xf636('0x3e')],{'$or':_[_0xf636('0x2e')](_0x349fb2,function(_0x46ab0a){if(_0x46ab0a[_0xf636('0x32')]!==_0xf636('0x41')){var _0x240f67={};_0x240f67[_0x46ab0a[_0xf636('0x2c')]]={'$like':'%'+_0x44bf42[_0xf636('0x35')]['filter']+'%'};return _0x240f67;}})});}_0x58c078=_['merge']({},_0x58c078,_0x44bf42[_0xf636('0x42')]);var _0x3debc9={'where':_0x58c078[_0xf636('0x3e')]};return db[_0xf636('0x2f')][_0xf636('0x21')](_0x3debc9)[_0xf636('0x28')](function(_0x45c1d5){_0x28e575[_0xf636('0x21')]=_0x45c1d5;if(_0x44bf42[_0xf636('0x35')][_0xf636('0x43')]){_0x58c078[_0xf636('0x44')]=[{'all':!![]}];}return db['Dynamics365Account'][_0xf636('0x45')](_0x58c078);})[_0xf636('0x28')](function(_0x582c2a){_0x28e575[_0xf636('0x46')]=_0x582c2a;return _0x28e575;})[_0xf636('0x28')](respondWithFilteredResult(_0x2e0c4f,_0x58c078))['catch'](handleError(_0x2e0c4f,null));};exports[_0xf636('0x47')]=function(_0x3a1fa2,_0xbd6be4){var _0x5a2825={'raw':![],'where':{'id':_0x3a1fa2['params']['id']}},_0x11ff65={};_0x11ff65[_0xf636('0x34')]=_[_0xf636('0x48')](db[_0xf636('0x2f')][_0xf636('0x30')]);_0x11ff65[_0xf636('0x35')]=_[_0xf636('0x48')](_0x3a1fa2[_0xf636('0x35')]);_0x11ff65[_0xf636('0x36')]=_[_0xf636('0x49')](_0x11ff65[_0xf636('0x34')],_0x11ff65[_0xf636('0x35')]);_0x5a2825[_0xf636('0x37')]=_[_0xf636('0x49')](_0x11ff65[_0xf636('0x34')],qs[_0xf636('0x38')](_0x3a1fa2[_0xf636('0x35')]['fields']));_0x5a2825[_0xf636('0x37')]=_0x5a2825[_0xf636('0x37')][_0xf636('0x39')]?_0x5a2825[_0xf636('0x37')]:_0x11ff65[_0xf636('0x34')];if(_0x3a1fa2['query'][_0xf636('0x43')]){_0x5a2825[_0xf636('0x44')]=[{'all':!![]}];}_0x5a2825=_[_0xf636('0x40')]({},_0x5a2825,_0x3a1fa2[_0xf636('0x42')]);return db[_0xf636('0x2f')][_0xf636('0x4a')](_0x5a2825)['then'](handleEntityNotFound(_0xbd6be4,null))[_0xf636('0x28')](respondWithResult(_0xbd6be4,null))[_0xf636('0x4b')](handleError(_0xbd6be4,null));};exports['create']=function(_0x30060d,_0x50ea33){return db[_0xf636('0x2f')]['create'](_0x30060d[_0xf636('0x4c')],{})['then'](respondWithResult(_0x50ea33,0xc9))[_0xf636('0x4b')](handleError(_0x50ea33,null));};exports[_0xf636('0x27')]=function(_0x37314f,_0x594cb9){if(_0x37314f[_0xf636('0x4c')]['id']){delete _0x37314f[_0xf636('0x4c')]['id'];}return db[_0xf636('0x2f')][_0xf636('0x4a')]({'where':{'id':_0x37314f[_0xf636('0x4d')]['id']}})[_0xf636('0x28')](handleEntityNotFound(_0x594cb9,null))['then'](saveUpdates(_0x37314f[_0xf636('0x4c')],null))[_0xf636('0x28')](respondWithResult(_0x594cb9,null))[_0xf636('0x4b')](handleError(_0x594cb9,null));};exports[_0xf636('0x29')]=function(_0x4f491c,_0x40d2c5){return db[_0xf636('0x2f')][_0xf636('0x4a')]({'where':{'id':_0x4f491c[_0xf636('0x4d')]['id']}})[_0xf636('0x28')](handleEntityNotFound(_0x40d2c5,null))[_0xf636('0x28')](removeEntity(_0x40d2c5,null))['catch'](handleError(_0x40d2c5,null));};exports['getConfigurations']=function(_0x20e308,_0x3ceb38,_0x5e39a6){var _0x3069bd={};var _0x15e550={};var _0xb7bcb8;var _0x2398c7;return db[_0xf636('0x2f')]['findOne']({'where':{'id':_0x20e308[_0xf636('0x4d')]['id']}})[_0xf636('0x28')](handleEntityNotFound(_0x3ceb38,null))[_0xf636('0x28')](function(_0x5615de){if(_0x5615de){_0xb7bcb8=_0x5615de;_0x15e550[_0xf636('0x34')]=_[_0xf636('0x48')](db['Dynamics365Configuration']['rawAttributes']);_0x15e550[_0xf636('0x35')]=_[_0xf636('0x48')](_0x20e308[_0xf636('0x35')]);_0x15e550['filters']=_[_0xf636('0x49')](_0x15e550[_0xf636('0x34')],_0x15e550[_0xf636('0x35')]);_0x3069bd[_0xf636('0x37')]=_[_0xf636('0x49')](_0x15e550[_0xf636('0x34')],qs[_0xf636('0x38')](_0x20e308[_0xf636('0x35')]['fields']));_0x3069bd[_0xf636('0x37')]=_0x3069bd[_0xf636('0x37')]['length']?_0x3069bd[_0xf636('0x37')]:_0x15e550[_0xf636('0x34')];_0x3069bd[_0xf636('0x3c')]=qs[_0xf636('0x3d')](_0x20e308[_0xf636('0x35')]['sort']);_0x3069bd[_0xf636('0x3e')]=qs[_0xf636('0x36')](_[_0xf636('0x4e')](_0x20e308['query'],_0x15e550['filters']));if(_0x20e308['query'][_0xf636('0x3f')]){_0x3069bd[_0xf636('0x3e')]=_[_0xf636('0x40')](_0x3069bd[_0xf636('0x3e')],{'$or':_[_0xf636('0x2e')](_0x3069bd['attributes'],function(_0x5c70aa){var _0x5b02fe={};_0x5b02fe[_0x5c70aa]={'$like':'%'+_0x20e308['query'][_0xf636('0x3f')]+'%'};return _0x5b02fe;})});}_0x3069bd=_[_0xf636('0x40')]({},_0x3069bd,_0x20e308[_0xf636('0x42')]);return _0xb7bcb8['getConfigurations'](_0x3069bd);}})[_0xf636('0x28')](function(_0x143845){if(_0x143845){_0x2398c7=_0x143845[_0xf636('0x39')];if(!_0x20e308[_0xf636('0x35')][_0xf636('0x3a')](_0xf636('0x3b'))){_0x3069bd[_0xf636('0x20')]=qs[_0xf636('0x20')](_0x20e308[_0xf636('0x35')][_0xf636('0x20')]);_0x3069bd[_0xf636('0x1e')]=qs[_0xf636('0x1e')](_0x20e308[_0xf636('0x35')]['offset']);}return _0xb7bcb8[_0xf636('0x4f')](_0x3069bd);}})[_0xf636('0x28')](function(_0x12217e){if(_0x12217e){return _0x12217e?{'count':_0x2398c7,'rows':_0x12217e}:null;}})[_0xf636('0x28')](respondWithResult(_0x3ceb38,null))[_0xf636('0x4b')](handleError(_0x3ceb38,null));};exports[_0xf636('0x50')]=function(_0x4618df,_0x1b00c9,_0x41a240){if(_0x4618df[_0xf636('0x4c')]['id']){delete _0x4618df['body']['id'];}return db[_0xf636('0x2f')][_0xf636('0x51')]({'where':{'id':_0x4618df[_0xf636('0x4d')]['id']}})[_0xf636('0x28')](handleEntityNotFound(_0x1b00c9,null))[_0xf636('0x28')](function(_0x18cadb){if(_0x18cadb){_0x4618df[_0xf636('0x4c')][_0xf636('0x52')]=_0x18cadb['id'];_0x4618df[_0xf636('0x4c')]['Subjects']=integrations[_0xf636('0x53')](_0x4618df[_0xf636('0x4c')][_0xf636('0x54')],_0x4618df[_0xf636('0x4c')][_0xf636('0x32')]);_0x4618df[_0xf636('0x4c')][_0xf636('0x55')]=integrations[_0xf636('0x56')](_0x4618df[_0xf636('0x4c')][_0xf636('0x54')],_0x4618df[_0xf636('0x4c')][_0xf636('0x32')]);return db['Dynamics365Configuration'][_0xf636('0x57')](_0x4618df[_0xf636('0x4c')],{'include':[{'model':db['Dynamics365Field'],'as':_0xf636('0x58')},{'model':db[_0xf636('0x59')],'as':'Descriptions'}]});}return null;})[_0xf636('0x28')](respondWithResult(_0x1b00c9,null))['catch'](handleError(_0x1b00c9,null));};exports[_0xf636('0x5a')]=function(_0x1ca946,_0x12ca48,_0x4fa45c){var _0x44216b=_0x1ca946[_0xf636('0x35')][_0xf636('0x5b')];var _0x32d6c3=_0x44216b===_0xf636('0x5c')?_0xf636('0x5d'):'PhoneCall';var _0x47fd97='';var _0x294fb4='';var _0x7832b6='';var _0x19649e='';var _0x46b972='';var _0x199548='';var _0x81fc48='';var _0x3df7b8='';var _0x4e65d6=[_0xf636('0x5e'),'description',_0xf636('0x5f'),'ownerid',_0xf636('0x60'),_0xf636('0x61'),_0xf636('0x62'),'regardingobjectid',_0xf636('0x63'),'phonecall_activity_parties'];var _0x3d4d85=['accountidname',_0xf636('0x64'),_0xf636('0x65'),_0xf636('0x66'),'contactidname',_0xf636('0x67'),_0xf636('0x68'),_0xf636('0x69'),'createdbyexternalpartyname',_0xf636('0x6a'),_0xf636('0x6b'),_0xf636('0x6c'),_0xf636('0x6d'),_0xf636('0x6e'),'createdonbehalfbyyominame','customeridname',_0xf636('0x6f'),_0xf636('0x70'),'emailaddress',_0xf636('0x71'),'entityimage_timestamp',_0xf636('0x72'),_0xf636('0x73'),_0xf636('0x74'),_0xf636('0x75'),_0xf636('0x76'),_0xf636('0x77'),_0xf636('0x78'),_0xf636('0x79'),_0xf636('0x7a'),_0xf636('0x7b'),_0xf636('0x7c'),_0xf636('0x7d'),'modifiedbyname',_0xf636('0x7e'),_0xf636('0x7f'),_0xf636('0x80'),_0xf636('0x81'),_0xf636('0x82'),_0xf636('0x83'),_0xf636('0x84'),_0xf636('0x85'),'overriddencreatedon',_0xf636('0x86'),_0xf636('0x87'),_0xf636('0x88'),'parentcaseidname','primarycontactidname','primarycontactidyominame',_0xf636('0x89'),'productidname',_0xf636('0x8a'),'resolveby',_0xf636('0x8b'),_0xf636('0x8c'),_0xf636('0x8d'),_0xf636('0x8e'),_0xf636('0x8f'),_0xf636('0x90'),_0xf636('0x91'),_0xf636('0x92'),_0xf636('0x93'),_0xf636('0x94'),_0xf636('0x95'),'ticketnumber','timezoneruleversionnumber',_0xf636('0x96'),'traversedpath','utcconversiontimezonecode','versionnumber'];var _0x67d65f=_0x4e65d6[_0xf636('0x97')](_0x3d4d85);return db['Dynamics365Account'][_0xf636('0x51')]({'where':{'id':_0x1ca946[_0xf636('0x4d')]['id']},'attributes':['id',_0xf636('0x98'),_0xf636('0x99'),_0xf636('0x9a'),_0xf636('0x9b'),_0xf636('0x9c'),_0xf636('0x9d')]})['then'](handleEntityNotFound(_0x12ca48,null))['then'](function(_0x3229bc){if(_0x3229bc){_0x3df7b8=_0x3229bc[_0xf636('0x9a')];var _0x40aaa9=_0x3df7b8[_0xf636('0x9e')](-0x1);if(_0x40aaa9==='/'){_0x3df7b8=_0x3df7b8[_0xf636('0x9f')](0x0,_0x3df7b8[_0xf636('0xa0')](_0x40aaa9));}_0x81fc48=util[_0xf636('0xa1')](_0xf636('0xa2'),_0x3df7b8);var _0x559a45={'method':_0xf636('0xa3'),'uri':_0xf636('0xa4')+_0x3229bc[_0xf636('0x9b')]+_0xf636('0xa5'),'form':{'client_id':_0x3229bc[_0xf636('0x9c')],'resource':_0x3df7b8,'username':_0x3229bc[_0xf636('0x98')],'password':_0x3229bc['password'],'grant_type':_0xf636('0x99'),'client_secret':_0x3229bc[_0xf636('0x9d')]},'json':!![]};return rp(_0x559a45);}})[_0xf636('0x28')](function(_0x2ec933){_0x199548=_0x2ec933[_0xf636('0xa6')];var _0x972814={'method':'GET','uri':encodeURI(_0x81fc48+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x32d6c3+'\x27'),'headers':{'Authorization':_0xf636('0xa7')+_0x199548,'If-None-Match':null,'OData-Version':_0xf636('0xa8')},'json':!![]};return rp(_0x972814);})[_0xf636('0x28')](function(_0x542c48){var _0x4d2434=_0x542c48[_0xf636('0xa9')][0x0];var _0x48bf0c=_0x4d2434[_0xf636('0xaa')];var _0x3ede53={'method':_0xf636('0xab'),'uri':_0x81fc48+_0xf636('0xac')+_0x48bf0c+_0xf636('0xad'),'headers':{'Authorization':'Bearer\x20'+_0x199548,'If-None-Match':null,'OData-Version':_0xf636('0xa8')},'json':!![]};return rp(_0x3ede53);})['then'](function(_0x58414d){_0x47fd97=_0x58414d;_0x294fb4=_0x47fd97[_0xf636('0xae')];_0x294fb4=_[_0xf636('0xaf')](_0x294fb4,function(_0x5c0b30){return!_0x67d65f[_0xf636('0xb0')](_0x5c0b30['LogicalName']);});var _0x215369=[];var _0x5e4020=[];_0x294fb4[_0xf636('0xb1')](function(_0x53be9e){if(_0x53be9e['@odata.type']){var _0xc8bc11=_0x53be9e[_0xf636('0xb2')]['substring'](_0x53be9e[_0xf636('0xb2')]['lastIndexOf']('.')+0x1);if(_0xc8bc11===_0xf636('0xb3')){_0x215369[_0xf636('0xb4')](getSelectList(_0x81fc48,_0x44216b,_0x5e4020,_0x47fd97[_0xf636('0xaa')],_0x53be9e[_0xf636('0xaa')],_0x199548));}}});return Promise['all'](_0x215369);})[_0xf636('0x28')](function(_0x502f){_0x7832b6=_0x502f[0x0];var _0x1d2079=[];var _0x498d93=[];_0x294fb4[_0xf636('0xb1')](function(_0x5a93a7){if(!_['isNil'](_0x5a93a7[_0xf636('0xb2')])){var _0x941a69=_0x5a93a7[_0xf636('0xb2')][_0xf636('0x9f')](_0x5a93a7['@odata.type']['lastIndexOf']('.')+0x1);if(_0x941a69===_0xf636('0xb5')){_0x1d2079[_0xf636('0xb4')](getBooleanList(_0x81fc48,_0x44216b,_0x498d93,_0x47fd97[_0xf636('0xaa')],_0x5a93a7['MetadataId'],_0x199548));}}});return Promise['all'](_0x1d2079);})[_0xf636('0x28')](function(_0x4f5e7a){_0x19649e=_0x4f5e7a[0x0];var _0x18da60=[];var _0x4f59bf=[];_0x294fb4[_0xf636('0xb1')](function(_0x4433eb){if(_0x4433eb['@odata.type']){var _0x358817=_0x4433eb[_0xf636('0xb2')]['substring'](_0x4433eb['@odata.type'][_0xf636('0xa0')]('.')+0x1);if(_0x358817==='StringAttributeMetadata'||_0x358817==='DoubleAttributeMetadata'||_0x358817==='BigIntAttributeMetadata'||_0x358817===_0xf636('0xb6')||_0x358817===_0xf636('0xb7')||_0x358817===_0xf636('0xb8')||_0x358817===_0xf636('0xb9')||_0x358817==='EntityNameAttributeMetadata'||_0x358817===_0xf636('0xba')||_0x358817===_0xf636('0xbb')){_0x18da60[_0xf636('0xb4')](getInputList(_0x81fc48,_0x44216b,_0x358817,_0x4f59bf,_0x47fd97[_0xf636('0xaa')],_0x4433eb[_0xf636('0xaa')],_0x199548));}}});return Promise[_0xf636('0xbc')](_0x18da60);})['then'](function(_0x4659b2){_0x46b972=_0x4659b2[0x0];var _0x58afe4=_0x7832b6[_0xf636('0x97')](_0x19649e)[_0xf636('0x97')](_0x46b972);var _0x5a3497={'count':_0x58afe4[_0xf636('0x39')],'rows':_0x58afe4};return _0x5a3497;})[_0xf636('0x28')](respondWithResult(_0x12ca48,null))[_0xf636('0x4b')](function(_0x54657e){var _0x21622b=_0x1ca946[_0xf636('0x35')]['test']?0x1f4:_0x54657e[_0xf636('0xbd')]||0x1f4;logger[_0xf636('0xbe')](_0x54657e['stack']);delete _0x54657e[_0xf636('0x2c')];if(_0x21622b===0x191){_0x21622b=0x190;}_0x12ca48[_0xf636('0x2a')](_0x21622b)[_0xf636('0x2d')](_0x1ca946[_0xf636('0x35')][_0xf636('0xbf')]?{'message':_0xf636('0xc0'),'statusCode':_0x54657e[_0xf636('0xbd')]}:_0x54657e);});};function getSelectList(_0x5f33cf,_0x1db03a,_0x5eadda,_0x3ddbc6,_0x16d5b6,_0x300cf8){var _0x5b49d7={'method':_0xf636('0xab'),'uri':_0x5f33cf+'EntityDefinitions('+_0x3ddbc6+')/Attributes('+_0x16d5b6+_0xf636('0xc1')+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':'Bearer\x20'+_0x300cf8,'If-None-Match':null,'OData-Version':_0xf636('0xa8')},'json':!![]};return rp(_0x5b49d7)['then'](function(_0xf27f52){var _0x1af213=[];var _0x482f80=_0xf27f52[_0xf636('0xc2')]['Options'];_0x482f80[_0xf636('0xb1')](function(_0x1192fb){_0x1af213[_0xf636('0xb4')]({'name':_0x1192fb[_0xf636('0xc3')][_0xf636('0xc4')]['Label'],'value':String(_0x1192fb[_0xf636('0xc5')])});});var _0x2a67bc={'id':_0x1db03a+'_'+_0xf27f52[_0xf636('0xc6')],'name':_0xf27f52['DisplayName'][_0xf636('0xc4')][_0xf636('0xc3')],'custom':![],'options':_0x1af213};_0x5eadda[_0xf636('0xb4')](_0x2a67bc);return _0x5eadda;});}function getBooleanList(_0xab1235,_0x13f31a,_0x2f1545,_0x1b8dcb,_0x1f9d45,_0x1ced87){var _0x3da24f={'method':_0xf636('0xab'),'uri':_0xab1235+'EntityDefinitions('+_0x1b8dcb+_0xf636('0xc7')+_0x1f9d45+_0xf636('0xc8'),'headers':{'Authorization':'Bearer\x20'+_0x1ced87,'If-None-Match':null,'OData-Version':_0xf636('0xa8')},'json':!![]};return rp(_0x3da24f)[_0xf636('0x28')](function(_0x2909d9){var _0x5e8b75=[];_0x5e8b75['push']({'name':_0x2909d9['OptionSet'][_0xf636('0xc9')][_0xf636('0xc3')][_0xf636('0xc4')][_0xf636('0xc3')],'value':'true'},{'name':_0x2909d9['OptionSet'][_0xf636('0xca')][_0xf636('0xc3')][_0xf636('0xc4')]['Label'],'value':'false'});var _0x2e9dca={'id':_0x13f31a+'_'+_0x2909d9[_0xf636('0xc6')],'name':_0x2909d9[_0xf636('0xcb')][_0xf636('0xc4')][_0xf636('0xc3')],'custom':![],'options':_0x5e8b75};_0x2f1545[_0xf636('0xb4')](_0x2e9dca);return _0x2f1545;});}function getInputList(_0x14e494,_0x319f9c,_0x504d7e,_0x256b32,_0xf9c087,_0x2d8944,_0x25ba3b){var _0x3c2e5f={'method':_0xf636('0xab'),'uri':_0x14e494+_0xf636('0xac')+_0xf9c087+_0xf636('0xc7')+_0x2d8944+_0xf636('0xcc')+_0x504d7e+_0xf636('0xcd'),'headers':{'Authorization':_0xf636('0xa7')+_0x25ba3b,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x3c2e5f)[_0xf636('0x28')](function(_0xf650e1){var _0x1c2876={'id':_0x319f9c+'_'+_0xf650e1[_0xf636('0xc6')],'name':_0xf650e1[_0xf636('0xcb')][_0xf636('0xc4')]?_0xf650e1[_0xf636('0xcb')][_0xf636('0xc4')][_0xf636('0xc3')]:_0xf650e1[_0xf636('0xc6')],'custom':![],'options':[]};_0x256b32[_0xf636('0xb4')](_0x1c2876);return _0x256b32;});}
\ No newline at end of file
index 7ef43db..b8e44f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['int_dynamics365_accounts','lodash','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','define'];(function(_0x248b29,_0x346f40){var _0x5af959=function(_0x18bbcc){while(--_0x18bbcc){_0x248b29['push'](_0x248b29['shift']());}};_0x5af959(++_0x346f40);}(_0xb7e7,0x121));var _0x7b7e=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0xb7e7[_0x4d8ed9];return _0x1e2140;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x333fa4,_0x372bde){return _0x333fa4[_0x7b7e('0x7')]('Dynamics365Account',attributes,{'tableName':_0x7b7e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8b0=['exports','Dynamics365Account','int_dynamics365_accounts','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x456aed,_0x214601){var _0xd811f9=function(_0x128e6a){while(--_0x128e6a){_0x456aed['push'](_0x456aed['shift']());}};_0xd811f9(++_0x214601);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./intDynamics365Account.attributes');var integrations=require('../../components/integrations/configuration');module[_0x0d8b('0x7')]=function(_0x227c63,_0x39f43a){return _0x227c63['define'](_0x0d8b('0x8'),attributes,{'tableName':_0x0d8b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 16ee9b9..b054162 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc20=['include','model','attributes','ShowDynamics365Account','moment','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','map'];(function(_0x18c923,_0x446ce7){var _0x209f1f=function(_0x9f42a4){while(--_0x9f42a4){_0x18c923['push'](_0x18c923['shift']());}};_0x209f1f(++_0x446ce7);}(_0xdc20,0x80));var _0x0dc2=function(_0x8e79ca,_0x1001f1){_0x8e79ca=_0x8e79ca-0x0;var _0x13f56b=_0xdc20[_0x8e79ca];return _0x13f56b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0dc2('0x0'));var BPromise=require('bluebird');var rs=require(_0x0dc2('0x1'));var fs=require('fs');var Redis=require(_0x0dc2('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x0dc2('0x3'));var logger=require('../../config/logger')('rpc');var config=require(_0x0dc2('0x4'));var jayson=require(_0x0dc2('0x5'));var client=jayson[_0x0dc2('0x6')][_0x0dc2('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3479f5,_0x3aa1fe,_0x145e9c){return new BPromise(function(_0x432591,_0x542ca2){return client[_0x0dc2('0x8')](_0x3479f5,_0x145e9c)[_0x0dc2('0x9')](function(_0x450aa0){logger[_0x0dc2('0xa')](_0x0dc2('0xb'),_0x3aa1fe,_0x0dc2('0xc'));logger[_0x0dc2('0xd')]('Dynamics365Account,\x20%s,\x20%s,\x20%s',_0x3aa1fe,_0x0dc2('0xc'),JSON[_0x0dc2('0xe')](_0x450aa0));if(_0x450aa0[_0x0dc2('0xf')]){if(_0x450aa0[_0x0dc2('0xf')][_0x0dc2('0x10')]===0x1f4){logger['error'](_0x0dc2('0xb'),_0x3aa1fe,_0x450aa0['error']['message']);return _0x542ca2(_0x450aa0[_0x0dc2('0xf')][_0x0dc2('0x11')]);}logger[_0x0dc2('0xf')]('Dynamics365Account,\x20%s,\x20%s',_0x3aa1fe,_0x450aa0[_0x0dc2('0xf')][_0x0dc2('0x11')]);return _0x432591(_0x450aa0[_0x0dc2('0xf')][_0x0dc2('0x11')]);}else{logger[_0x0dc2('0xa')](_0x0dc2('0xb'),_0x3aa1fe,'request\x20sent');_0x432591(_0x450aa0[_0x0dc2('0x12')][_0x0dc2('0x11')]);}})[_0x0dc2('0x13')](function(_0x1a0c83){logger[_0x0dc2('0xf')](_0x0dc2('0xb'),_0x3aa1fe,_0x1a0c83);_0x542ca2(_0x1a0c83);});});}exports[_0x0dc2('0x14')]=function(_0x5e462d){var _0x8e3504=this;return new Promise(function(_0x2c5272,_0x39b9ba){return db[_0x0dc2('0x15')][_0x0dc2('0x16')]({'raw':_0x5e462d[_0x0dc2('0x17')]?_0x5e462d[_0x0dc2('0x17')][_0x0dc2('0x18')]===undefined?!![]:![]:!![],'where':_0x5e462d[_0x0dc2('0x17')]?_0x5e462d[_0x0dc2('0x17')][_0x0dc2('0x19')]||null:null,'attributes':_0x5e462d[_0x0dc2('0x17')]?_0x5e462d[_0x0dc2('0x17')]['attributes']||null:null,'limit':_0x5e462d['options']?_0x5e462d[_0x0dc2('0x17')]['limit']||null:null,'include':_0x5e462d[_0x0dc2('0x17')]?_0x5e462d[_0x0dc2('0x17')]['include']?_[_0x0dc2('0x1a')](_0x5e462d[_0x0dc2('0x17')][_0x0dc2('0x1b')],function(_0x5dd520){return{'model':db[_0x5dd520[_0x0dc2('0x1c')]],'as':_0x5dd520['as'],'attributes':_0x5dd520[_0x0dc2('0x1d')],'include':_0x5dd520['include']?_[_0x0dc2('0x1a')](_0x5dd520[_0x0dc2('0x1b')],function(_0x519d50){return{'model':db[_0x519d50[_0x0dc2('0x1c')]],'as':_0x519d50['as'],'attributes':_0x519d50[_0x0dc2('0x1d')],'include':_0x519d50['include']?_[_0x0dc2('0x1a')](_0x519d50['include'],function(_0x327ade){return{'model':db[_0x327ade['model']],'as':_0x327ade['as'],'attributes':_0x327ade[_0x0dc2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x0dc2('0x9')](function(_0x204207){logger[_0x0dc2('0xa')](_0x0dc2('0x14'),_0x5e462d);logger[_0x0dc2('0xd')](_0x0dc2('0x14'),_0x5e462d,JSON[_0x0dc2('0xe')](_0x204207));_0x2c5272(_0x204207);})['catch'](function(_0x578c4b){logger[_0x0dc2('0xf')](_0x0dc2('0x14'),_0x578c4b['message'],_0x5e462d);_0x39b9ba(_0x8e3504['error'](0x1f4,_0x578c4b['message']));});});};exports['ShowDynamics365Account']=function(_0x5a07d0){var _0x5dea4c=this;return new Promise(function(_0xcb2a73,_0x2d4da7){return db['Dynamics365Account']['find']({'raw':_0x5a07d0[_0x0dc2('0x17')]?_0x5a07d0['options'][_0x0dc2('0x18')]===undefined?!![]:![]:!![],'where':_0x5a07d0['options']?_0x5a07d0['options'][_0x0dc2('0x19')]||null:null,'attributes':_0x5a07d0[_0x0dc2('0x17')]?_0x5a07d0['options'][_0x0dc2('0x1d')]||null:null,'include':_0x5a07d0[_0x0dc2('0x17')]?_0x5a07d0[_0x0dc2('0x17')][_0x0dc2('0x1b')]?_['map'](_0x5a07d0[_0x0dc2('0x17')][_0x0dc2('0x1b')],function(_0x579d46){return{'model':db[_0x579d46[_0x0dc2('0x1c')]],'as':_0x579d46['as'],'attributes':_0x579d46[_0x0dc2('0x1d')],'include':_0x579d46[_0x0dc2('0x1b')]?_[_0x0dc2('0x1a')](_0x579d46[_0x0dc2('0x1b')],function(_0x39f0fa){return{'model':db[_0x39f0fa[_0x0dc2('0x1c')]],'as':_0x39f0fa['as'],'attributes':_0x39f0fa[_0x0dc2('0x1d')],'include':_0x39f0fa[_0x0dc2('0x1b')]?_['map'](_0x39f0fa[_0x0dc2('0x1b')],function(_0x41ff07){return{'model':db[_0x41ff07[_0x0dc2('0x1c')]],'as':_0x41ff07['as'],'attributes':_0x41ff07[_0x0dc2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x0dc2('0x9')](function(_0x1135d){logger['info'](_0x0dc2('0x1e'),_0x5a07d0);logger[_0x0dc2('0xd')](_0x0dc2('0x1e'),_0x5a07d0,JSON[_0x0dc2('0xe')](_0x1135d));_0xcb2a73(_0x1135d);})['catch'](function(_0x2804c4){logger[_0x0dc2('0xf')]('ShowDynamics365Account',_0x2804c4['message'],_0x5a07d0);_0x2d4da7(_0x5dea4c['error'](0x1f4,_0x2804c4[_0x0dc2('0x11')]));});});};
\ No newline at end of file
+var _0x91d3=['ShowDynamics365Account','map','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Dynamics365Account,\x20%s,\x20%s','message','result','catch','GetDynamics365Account','Dynamics365Account','options','raw','where','limit','include','model','attributes'];(function(_0x375126,_0x514a8e){var _0x1f76bb=function(_0x22f2d0){while(--_0x22f2d0){_0x375126['push'](_0x375126['shift']());}};_0x1f76bb(++_0x514a8e);}(_0x91d3,0x12b));var _0x391d=function(_0x5cf5aa,_0x18b53a){_0x5cf5aa=_0x5cf5aa-0x0;var _0xf66785=_0x91d3[_0x5cf5aa];return _0xf66785;};'use strict';var _=require(_0x391d('0x0'));var util=require('util');var moment=require(_0x391d('0x1'));var BPromise=require(_0x391d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x391d('0x3'));var db=require(_0x391d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x391d('0x5'))(_0x391d('0x6'));var config=require(_0x391d('0x7'));var jayson=require(_0x391d('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2d581d,_0x4375ab,_0x11a25f){return new BPromise(function(_0x35d4f8,_0x447bea){return client[_0x391d('0x9')](_0x2d581d,_0x11a25f)[_0x391d('0xa')](function(_0x3e45ef){logger[_0x391d('0xb')]('Dynamics365Account,\x20%s,\x20%s',_0x4375ab,'request\x20sent');logger[_0x391d('0xc')](_0x391d('0xd'),_0x4375ab,_0x391d('0xe'),JSON[_0x391d('0xf')](_0x3e45ef));if(_0x3e45ef[_0x391d('0x10')]){if(_0x3e45ef['error'][_0x391d('0x11')]===0x1f4){logger['error'](_0x391d('0x12'),_0x4375ab,_0x3e45ef[_0x391d('0x10')][_0x391d('0x13')]);return _0x447bea(_0x3e45ef[_0x391d('0x10')][_0x391d('0x13')]);}logger['error'](_0x391d('0x12'),_0x4375ab,_0x3e45ef[_0x391d('0x10')][_0x391d('0x13')]);return _0x35d4f8(_0x3e45ef[_0x391d('0x10')][_0x391d('0x13')]);}else{logger[_0x391d('0xb')](_0x391d('0x12'),_0x4375ab,_0x391d('0xe'));_0x35d4f8(_0x3e45ef[_0x391d('0x14')][_0x391d('0x13')]);}})[_0x391d('0x15')](function(_0x340e88){logger['error'](_0x391d('0x12'),_0x4375ab,_0x340e88);_0x447bea(_0x340e88);});});}exports[_0x391d('0x16')]=function(_0x3ef702){var _0x5413dc=this;return new Promise(function(_0x2c82d8,_0x485d4d){return db[_0x391d('0x17')]['findAll']({'raw':_0x3ef702['options']?_0x3ef702[_0x391d('0x18')][_0x391d('0x19')]===undefined?!![]:![]:!![],'where':_0x3ef702[_0x391d('0x18')]?_0x3ef702[_0x391d('0x18')][_0x391d('0x1a')]||null:null,'attributes':_0x3ef702[_0x391d('0x18')]?_0x3ef702[_0x391d('0x18')]['attributes']||null:null,'limit':_0x3ef702[_0x391d('0x18')]?_0x3ef702['options'][_0x391d('0x1b')]||null:null,'include':_0x3ef702['options']?_0x3ef702[_0x391d('0x18')]['include']?_['map'](_0x3ef702[_0x391d('0x18')][_0x391d('0x1c')],function(_0xcf1d37){return{'model':db[_0xcf1d37[_0x391d('0x1d')]],'as':_0xcf1d37['as'],'attributes':_0xcf1d37[_0x391d('0x1e')],'include':_0xcf1d37['include']?_['map'](_0xcf1d37[_0x391d('0x1c')],function(_0x5abbe3){return{'model':db[_0x5abbe3[_0x391d('0x1d')]],'as':_0x5abbe3['as'],'attributes':_0x5abbe3[_0x391d('0x1e')],'include':_0x5abbe3[_0x391d('0x1c')]?_['map'](_0x5abbe3['include'],function(_0x2b18be){return{'model':db[_0x2b18be[_0x391d('0x1d')]],'as':_0x2b18be['as'],'attributes':_0x2b18be[_0x391d('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2f225d){logger['info'](_0x391d('0x16'),_0x3ef702);logger[_0x391d('0xc')](_0x391d('0x16'),_0x3ef702,JSON['stringify'](_0x2f225d));_0x2c82d8(_0x2f225d);})[_0x391d('0x15')](function(_0x45f2dc){logger[_0x391d('0x10')](_0x391d('0x16'),_0x45f2dc['message'],_0x3ef702);_0x485d4d(_0x5413dc[_0x391d('0x10')](0x1f4,_0x45f2dc[_0x391d('0x13')]));});});};exports[_0x391d('0x1f')]=function(_0x54dfe6){var _0x4d320a=this;return new Promise(function(_0x37539c,_0x57e130){return db[_0x391d('0x17')]['find']({'raw':_0x54dfe6[_0x391d('0x18')]?_0x54dfe6[_0x391d('0x18')][_0x391d('0x19')]===undefined?!![]:![]:!![],'where':_0x54dfe6[_0x391d('0x18')]?_0x54dfe6[_0x391d('0x18')][_0x391d('0x1a')]||null:null,'attributes':_0x54dfe6[_0x391d('0x18')]?_0x54dfe6[_0x391d('0x18')]['attributes']||null:null,'include':_0x54dfe6[_0x391d('0x18')]?_0x54dfe6[_0x391d('0x18')][_0x391d('0x1c')]?_['map'](_0x54dfe6['options'][_0x391d('0x1c')],function(_0x17c9fa){return{'model':db[_0x17c9fa[_0x391d('0x1d')]],'as':_0x17c9fa['as'],'attributes':_0x17c9fa[_0x391d('0x1e')],'include':_0x17c9fa['include']?_['map'](_0x17c9fa['include'],function(_0x142cbe){return{'model':db[_0x142cbe[_0x391d('0x1d')]],'as':_0x142cbe['as'],'attributes':_0x142cbe['attributes'],'include':_0x142cbe[_0x391d('0x1c')]?_[_0x391d('0x20')](_0x142cbe[_0x391d('0x1c')],function(_0x58a541){return{'model':db[_0x58a541['model']],'as':_0x58a541['as'],'attributes':_0x58a541[_0x391d('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x391d('0xa')](function(_0x5f4ea6){logger[_0x391d('0xb')]('ShowDynamics365Account',_0x54dfe6);logger[_0x391d('0xc')](_0x391d('0x1f'),_0x54dfe6,JSON[_0x391d('0xf')](_0x5f4ea6));_0x37539c(_0x5f4ea6);})[_0x391d('0x15')](function(_0x15708a){logger['error']('ShowDynamics365Account',_0x15708a[_0x391d('0x13')],_0x54dfe6);_0x57e130(_0x4d320a[_0x391d('0x10')](0x1f4,_0x15708a[_0x391d('0x13')]));});});};
\ No newline at end of file
index 62dc944..8411a4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a95=['Router','fs-extra','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x767ca5,_0x1b956c){var _0x5afb41=function(_0xc5b064){while(--_0xc5b064){_0x767ca5['push'](_0x767ca5['shift']());}};_0x5afb41(++_0x1b956c);}(_0x6a95,0x1db));var _0x56a9=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0x6a95[_0x21aec3];return _0x288bbc;};'use strict';var multer=require(_0x56a9('0x0'));var util=require(_0x56a9('0x1'));var path=require(_0x56a9('0x2'));var timeout=require(_0x56a9('0x3'));var express=require(_0x56a9('0x4'));var router=express[_0x56a9('0x5')]();var fs_extra=require(_0x56a9('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x56a9('0x7'));var controller=require(_0x56a9('0x8'));router[_0x56a9('0x9')]('/',auth[_0x56a9('0xa')](),controller[_0x56a9('0xb')]);router[_0x56a9('0x9')](_0x56a9('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x56a9('0x9')](_0x56a9('0xd'),auth['isAuthenticated'](),controller[_0x56a9('0xe')]);router[_0x56a9('0x9')](_0x56a9('0xf'),auth[_0x56a9('0xa')](),controller[_0x56a9('0x10')]);router[_0x56a9('0x9')](_0x56a9('0x11'),auth[_0x56a9('0xa')](),controller[_0x56a9('0x12')]);router['post']('/',auth[_0x56a9('0xa')](),controller['create']);router[_0x56a9('0x13')](_0x56a9('0xc'),auth[_0x56a9('0xa')](),controller[_0x56a9('0x14')]);router[_0x56a9('0x15')](_0x56a9('0xc'),auth[_0x56a9('0xa')](),controller[_0x56a9('0x16')]);module[_0x56a9('0x17')]=router;
\ No newline at end of file
+var _0xf682=['isAuthenticated','index','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x3603fb,_0x47c19c){var _0x5bf02d=function(_0x37a79e){while(--_0x37a79e){_0x3603fb['push'](_0x3603fb['shift']());}};_0x5bf02d(++_0x47c19c);}(_0xf682,0x12f));var _0x2f68=function(_0x363a49,_0x380754){_0x363a49=_0x363a49-0x0;var _0x5d9240=_0xf682[_0x363a49];return _0x5d9240;};'use strict';var multer=require(_0x2f68('0x0'));var util=require(_0x2f68('0x1'));var path=require(_0x2f68('0x2'));var timeout=require(_0x2f68('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2f68('0x4'));var auth=require(_0x2f68('0x5'));var interaction=require(_0x2f68('0x6'));var config=require(_0x2f68('0x7'));var controller=require('./intDynamics365Configuration.controller');router[_0x2f68('0x8')]('/',auth[_0x2f68('0x9')](),controller[_0x2f68('0xa')]);router[_0x2f68('0x8')]('/:id',auth[_0x2f68('0x9')](),controller[_0x2f68('0xb')]);router['get']('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x2f68('0x8')](_0x2f68('0xc'),auth[_0x2f68('0x9')](),controller[_0x2f68('0xd')]);router[_0x2f68('0x8')](_0x2f68('0xe'),auth[_0x2f68('0x9')](),controller[_0x2f68('0xf')]);router[_0x2f68('0x10')]('/',auth[_0x2f68('0x9')](),controller[_0x2f68('0x11')]);router[_0x2f68('0x12')](_0x2f68('0x13'),auth[_0x2f68('0x9')](),controller[_0x2f68('0x14')]);router[_0x2f68('0x15')]('/:id',auth[_0x2f68('0x9')](),controller[_0x2f68('0x16')]);module[_0x2f68('0x17')]=router;
\ No newline at end of file
index 0d250dd..60adad0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62db=['ENUM','incident','phonecall','sequelize','exports','STRING'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x62db,0xc3));var _0xb62d=function(_0x3826ba,_0x4d70de){_0x3826ba=_0x3826ba-0x0;var _0x3084b7=_0x62db[_0x3826ba];return _0x3084b7;};'use strict';var Sequelize=require(_0xb62d('0x0'));module[_0xb62d('0x1')]={'name':{'type':Sequelize[_0xb62d('0x2')]},'description':{'type':Sequelize[_0xb62d('0x2')]},'ticketType':{'type':Sequelize[_0xb62d('0x3')](_0xb62d('0x4'),_0xb62d('0x5')),'defaultValue':'incident'}};
\ No newline at end of file
+var _0xddc4=['sequelize','exports','incident','phonecall'];(function(_0x5120cc,_0x5894fd){var _0x2b00b2=function(_0x2ff7cb){while(--_0x2ff7cb){_0x5120cc['push'](_0x5120cc['shift']());}};_0x2b00b2(++_0x5894fd);}(_0xddc4,0x80));var _0x4ddc=function(_0x20723d,_0x4cdf4e){_0x20723d=_0x20723d-0x0;var _0x5ef3e1=_0xddc4[_0x20723d];return _0x5ef3e1;};'use strict';var Sequelize=require(_0x4ddc('0x0'));module[_0x4ddc('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize['ENUM'](_0x4ddc('0x2'),_0x4ddc('0x3')),'defaultValue':'incident'}};
\ No newline at end of file
index 3f99d19..8c65384 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15f1=['intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','find','create','body','params','getFields','findOne','Dynamics365Field','pick','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','Dynamics365Configuration','rawAttributes','model','query','keys','filters'];(function(_0x3f1246,_0x4be302){var _0x5ee834=function(_0x2eec23){while(--_0x2eec23){_0x3f1246['push'](_0x3f1246['shift']());}};_0x5ee834(++_0x4be302);}(_0x15f1,0x17a));var _0x115f=function(_0x3ca809,_0x13cf67){_0x3ca809=_0x3ca809-0x0;var _0x12ecb0=_0x15f1[_0x3ca809];return _0x12ecb0;};'use strict';var emlformat=require(_0x115f('0x0'));var rimraf=require(_0x115f('0x1'));var zipdir=require(_0x115f('0x2'));var jsonpatch=require(_0x115f('0x3'));var rp=require(_0x115f('0x4'));var moment=require(_0x115f('0x5'));var BPromise=require(_0x115f('0x6'));var Mustache=require(_0x115f('0x7'));var util=require(_0x115f('0x8'));var path=require(_0x115f('0x9'));var sox=require(_0x115f('0xa'));var csv=require(_0x115f('0xb'));var ejs=require(_0x115f('0xc'));var fs=require('fs');var fs_extra=require(_0x115f('0xd'));var _=require(_0x115f('0xe'));var squel=require(_0x115f('0xf'));var crypto=require(_0x115f('0x10'));var jsforce=require(_0x115f('0x11'));var deskjs=require(_0x115f('0x12'));var toCsv=require(_0x115f('0xb'));var querystring=require('querystring');var Papa=require(_0x115f('0x13'));var Redis=require(_0x115f('0x14'));var authService=require(_0x115f('0x15'));var qs=require(_0x115f('0x16'));var as=require(_0x115f('0x17'));var hardwareService=require(_0x115f('0x18'));var logger=require('../../config/logger')(_0x115f('0x19'));var utils=require(_0x115f('0x1a'));var config=require(_0x115f('0x1b'));var licenseUtil=require(_0x115f('0x1c'));var db=require(_0x115f('0x1d'))['db'];function respondWithStatusCode(_0x585572,_0x5d7e6b){_0x5d7e6b=_0x5d7e6b||0xcc;return function(_0x46a160){if(_0x46a160){return _0x585572['sendStatus'](_0x5d7e6b);}return _0x585572[_0x115f('0x1e')](_0x5d7e6b)[_0x115f('0x1f')]();};}function respondWithResult(_0x1056bb,_0x1e9282){_0x1e9282=_0x1e9282||0xc8;return function(_0x37ab3d){if(_0x37ab3d){return _0x1056bb[_0x115f('0x1e')](_0x1e9282)[_0x115f('0x20')](_0x37ab3d);}};}function respondWithFilteredResult(_0xca86c,_0x5ea2b9){return function(_0x2182fa){if(_0x2182fa){var _0x125175=typeof _0x5ea2b9[_0x115f('0x21')]===_0x115f('0x22')&&typeof _0x5ea2b9['limit']===_0x115f('0x22');var _0x183fcd=_0x2182fa['count'];var _0x5bc694=_0x125175?0x0:_0x5ea2b9[_0x115f('0x21')];var _0x303c1e=_0x125175?_0x2182fa['count']:_0x5ea2b9[_0x115f('0x21')]+_0x5ea2b9[_0x115f('0x23')];var _0xab17ea;if(_0x303c1e>=_0x183fcd){_0x303c1e=_0x183fcd;_0xab17ea=0xc8;}else{_0xab17ea=0xce;}_0xca86c[_0x115f('0x1e')](_0xab17ea);return _0xca86c[_0x115f('0x24')](_0x115f('0x25'),_0x5bc694+'-'+_0x303c1e+'/'+_0x183fcd)[_0x115f('0x20')](_0x2182fa);}return null;};}function patchUpdates(_0x49228a){return function(_0x37b648){try{jsonpatch[_0x115f('0x26')](_0x37b648,_0x49228a,!![]);}catch(_0x445f71){return BPromise[_0x115f('0x27')](_0x445f71);}return _0x37b648[_0x115f('0x28')]();};}function saveUpdates(_0x264a95,_0x5a4a63){return function(_0x4b1c1c){if(_0x4b1c1c){return _0x4b1c1c[_0x115f('0x29')](_0x264a95)[_0x115f('0x2a')](function(_0x34a66d){return _0x34a66d;});}return null;};}function removeEntity(_0x352fa6,_0x59cfdb){return function(_0x53d903){if(_0x53d903){return _0x53d903[_0x115f('0x2b')]()[_0x115f('0x2a')](function(){_0x352fa6[_0x115f('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ba3dc,_0x179aa8){return function(_0x23d505){if(!_0x23d505){_0x5ba3dc[_0x115f('0x2c')](0x194);}return _0x23d505;};}function handleError(_0x5cee68,_0x1b6885){_0x1b6885=_0x1b6885||0x1f4;return function(_0x2cfc10){logger[_0x115f('0x2d')](_0x2cfc10[_0x115f('0x2e')]);if(_0x2cfc10['name']){delete _0x2cfc10[_0x115f('0x2f')];}_0x5cee68[_0x115f('0x1e')](_0x1b6885)[_0x115f('0x30')](_0x2cfc10);};}exports[_0x115f('0x31')]=function(_0x4b3c44,_0x2e1e33){var _0x4e5b15={},_0x1391bd={},_0x33bc88={'count':0x0,'rows':[]};var _0x242a69=_[_0x115f('0x32')](db[_0x115f('0x33')][_0x115f('0x34')],function(_0x1cf91e){return{'name':_0x1cf91e['fieldName'],'type':_0x1cf91e['type']['key']};});_0x1391bd[_0x115f('0x35')]=_['map'](_0x242a69,_0x115f('0x2f'));_0x1391bd[_0x115f('0x36')]=_[_0x115f('0x37')](_0x4b3c44[_0x115f('0x36')]);_0x1391bd[_0x115f('0x38')]=_[_0x115f('0x39')](_0x1391bd[_0x115f('0x35')],_0x1391bd['query']);_0x4e5b15['attributes']=_[_0x115f('0x39')](_0x1391bd[_0x115f('0x35')],qs[_0x115f('0x3a')](_0x4b3c44['query'][_0x115f('0x3a')]));_0x4e5b15['attributes']=_0x4e5b15[_0x115f('0x3b')][_0x115f('0x3c')]?_0x4e5b15[_0x115f('0x3b')]:_0x1391bd[_0x115f('0x35')];if(!_0x4b3c44[_0x115f('0x36')][_0x115f('0x3d')](_0x115f('0x3e'))){_0x4e5b15[_0x115f('0x23')]=qs[_0x115f('0x23')](_0x4b3c44['query'][_0x115f('0x23')]);_0x4e5b15[_0x115f('0x21')]=qs[_0x115f('0x21')](_0x4b3c44[_0x115f('0x36')][_0x115f('0x21')]);}_0x4e5b15[_0x115f('0x3f')]=qs[_0x115f('0x40')](_0x4b3c44[_0x115f('0x36')][_0x115f('0x40')]);_0x4e5b15[_0x115f('0x41')]=qs[_0x115f('0x38')](_['pick'](_0x4b3c44[_0x115f('0x36')],_0x1391bd[_0x115f('0x38')]),_0x242a69);if(_0x4b3c44['query'][_0x115f('0x42')]){_0x4e5b15[_0x115f('0x41')]=_[_0x115f('0x43')](_0x4e5b15[_0x115f('0x41')],{'$or':_[_0x115f('0x32')](_0x242a69,function(_0x3b57ca){if(_0x3b57ca['type']!==_0x115f('0x44')){var _0x5b2380={};_0x5b2380[_0x3b57ca['name']]={'$like':'%'+_0x4b3c44[_0x115f('0x36')][_0x115f('0x42')]+'%'};return _0x5b2380;}})});}_0x4e5b15=_[_0x115f('0x43')]({},_0x4e5b15,_0x4b3c44[_0x115f('0x45')]);var _0x2f31b2={'where':_0x4e5b15[_0x115f('0x41')]};return db[_0x115f('0x33')][_0x115f('0x46')](_0x2f31b2)[_0x115f('0x2a')](function(_0x13113a){_0x33bc88[_0x115f('0x46')]=_0x13113a;if(_0x4b3c44['query'][_0x115f('0x47')]){_0x4e5b15[_0x115f('0x48')]=[{'all':!![]}];}return db[_0x115f('0x33')][_0x115f('0x49')](_0x4e5b15);})['then'](function(_0x1b6b33){_0x33bc88[_0x115f('0x4a')]=_0x1b6b33;return _0x33bc88;})['then'](respondWithFilteredResult(_0x2e1e33,_0x4e5b15))[_0x115f('0x4b')](handleError(_0x2e1e33,null));};exports[_0x115f('0x4c')]=function(_0x350c08,_0x48eb10){var _0x60660c={'raw':![],'where':{'id':_0x350c08['params']['id']}},_0x5c7d2c={};_0x5c7d2c[_0x115f('0x35')]=_[_0x115f('0x37')](db[_0x115f('0x33')][_0x115f('0x34')]);_0x5c7d2c[_0x115f('0x36')]=_['keys'](_0x350c08[_0x115f('0x36')]);_0x5c7d2c[_0x115f('0x38')]=_['intersection'](_0x5c7d2c[_0x115f('0x35')],_0x5c7d2c[_0x115f('0x36')]);_0x60660c['attributes']=_[_0x115f('0x39')](_0x5c7d2c[_0x115f('0x35')],qs[_0x115f('0x3a')](_0x350c08['query'][_0x115f('0x3a')]));_0x60660c[_0x115f('0x3b')]=_0x60660c['attributes'][_0x115f('0x3c')]?_0x60660c[_0x115f('0x3b')]:_0x5c7d2c['model'];if(_0x350c08[_0x115f('0x36')][_0x115f('0x47')]){_0x60660c[_0x115f('0x48')]=[{'all':!![]}];}_0x60660c=_[_0x115f('0x43')]({},_0x60660c,_0x350c08[_0x115f('0x45')]);return db[_0x115f('0x33')][_0x115f('0x4d')](_0x60660c)[_0x115f('0x2a')](handleEntityNotFound(_0x48eb10,null))[_0x115f('0x2a')](respondWithResult(_0x48eb10,null))[_0x115f('0x4b')](handleError(_0x48eb10,null));};exports[_0x115f('0x4e')]=function(_0x219106,_0xce6425){return db[_0x115f('0x33')]['create'](_0x219106[_0x115f('0x4f')],{})[_0x115f('0x2a')](respondWithResult(_0xce6425,0xc9))[_0x115f('0x4b')](handleError(_0xce6425,null));};exports['update']=function(_0x175bd1,_0x22613c){if(_0x175bd1[_0x115f('0x4f')]['id']){delete _0x175bd1['body']['id'];}return db['Dynamics365Configuration'][_0x115f('0x4d')]({'where':{'id':_0x175bd1[_0x115f('0x50')]['id']}})[_0x115f('0x2a')](handleEntityNotFound(_0x22613c,null))['then'](saveUpdates(_0x175bd1[_0x115f('0x4f')],null))[_0x115f('0x2a')](respondWithResult(_0x22613c,null))[_0x115f('0x4b')](handleError(_0x22613c,null));};exports[_0x115f('0x2b')]=function(_0x36ed5a,_0x51b045){return db[_0x115f('0x33')]['find']({'where':{'id':_0x36ed5a[_0x115f('0x50')]['id']}})[_0x115f('0x2a')](handleEntityNotFound(_0x51b045,null))['then'](removeEntity(_0x51b045,null))[_0x115f('0x4b')](handleError(_0x51b045,null));};exports[_0x115f('0x51')]=function(_0x19ab34,_0x357356,_0x1ef5df){var _0xa2330c={};var _0x1c01dd={};var _0x3c0ec1;var _0x2e49b2;return db['Dynamics365Configuration'][_0x115f('0x52')]({'where':{'id':_0x19ab34[_0x115f('0x50')]['id']}})[_0x115f('0x2a')](handleEntityNotFound(_0x357356,null))['then'](function(_0x9bdf50){if(_0x9bdf50){_0x3c0ec1=_0x9bdf50;_0x1c01dd['model']=_[_0x115f('0x37')](db[_0x115f('0x53')]['rawAttributes']);_0x1c01dd[_0x115f('0x36')]=_[_0x115f('0x37')](_0x19ab34['query']);_0x1c01dd['filters']=_['intersection'](_0x1c01dd[_0x115f('0x35')],_0x1c01dd[_0x115f('0x36')]);_0xa2330c['attributes']=_['intersection'](_0x1c01dd[_0x115f('0x35')],qs[_0x115f('0x3a')](_0x19ab34['query'][_0x115f('0x3a')]));_0xa2330c[_0x115f('0x3b')]=_0xa2330c[_0x115f('0x3b')][_0x115f('0x3c')]?_0xa2330c[_0x115f('0x3b')]:_0x1c01dd[_0x115f('0x35')];_0xa2330c[_0x115f('0x3f')]=qs[_0x115f('0x40')](_0x19ab34[_0x115f('0x36')][_0x115f('0x40')]);_0xa2330c[_0x115f('0x41')]=qs[_0x115f('0x38')](_[_0x115f('0x54')](_0x19ab34[_0x115f('0x36')],_0x1c01dd[_0x115f('0x38')]));if(_0x19ab34[_0x115f('0x36')]['filter']){_0xa2330c[_0x115f('0x41')]=_[_0x115f('0x43')](_0xa2330c[_0x115f('0x41')],{'$or':_[_0x115f('0x32')](_0xa2330c[_0x115f('0x3b')],function(_0xd9e5e3){var _0x5af2ff={};_0x5af2ff[_0xd9e5e3]={'$like':'%'+_0x19ab34[_0x115f('0x36')][_0x115f('0x42')]+'%'};return _0x5af2ff;})});}_0xa2330c=_['merge']({},_0xa2330c,_0x19ab34[_0x115f('0x45')]);return _0x3c0ec1[_0x115f('0x51')](_0xa2330c);}})[_0x115f('0x2a')](function(_0x26a7c5){if(_0x26a7c5){_0x2e49b2=_0x26a7c5['length'];if(!_0x19ab34[_0x115f('0x36')][_0x115f('0x3d')](_0x115f('0x3e'))){_0xa2330c[_0x115f('0x23')]=qs['limit'](_0x19ab34[_0x115f('0x36')][_0x115f('0x23')]);_0xa2330c[_0x115f('0x21')]=qs['offset'](_0x19ab34['query'][_0x115f('0x21')]);}return _0x3c0ec1[_0x115f('0x51')](_0xa2330c);}})[_0x115f('0x2a')](function(_0x5e8cd6){if(_0x5e8cd6){return _0x5e8cd6?{'count':_0x2e49b2,'rows':_0x5e8cd6}:null;}})[_0x115f('0x2a')](respondWithResult(_0x357356,null))['catch'](handleError(_0x357356,null));};exports['getSubjects']=function(_0xea4ed1,_0x4925ba,_0x46ba74){var _0x252d91={};var _0x3890a9={};var _0x20df56;var _0x118226;return db[_0x115f('0x33')]['findOne']({'where':{'id':_0xea4ed1[_0x115f('0x50')]['id']}})['then'](handleEntityNotFound(_0x4925ba,null))[_0x115f('0x2a')](function(_0x2477e9){if(_0x2477e9){_0x20df56=_0x2477e9;_0x3890a9['model']=_[_0x115f('0x37')](db[_0x115f('0x53')]['rawAttributes']);_0x3890a9[_0x115f('0x36')]=_[_0x115f('0x37')](_0xea4ed1['query']);_0x3890a9[_0x115f('0x38')]=_[_0x115f('0x39')](_0x3890a9[_0x115f('0x35')],_0x3890a9[_0x115f('0x36')]);_0x252d91[_0x115f('0x3b')]=_['intersection'](_0x3890a9['model'],qs['fields'](_0xea4ed1[_0x115f('0x36')]['fields']));_0x252d91[_0x115f('0x3b')]=_0x252d91['attributes'][_0x115f('0x3c')]?_0x252d91['attributes']:_0x3890a9[_0x115f('0x35')];_0x252d91[_0x115f('0x3f')]=qs[_0x115f('0x40')](_0xea4ed1[_0x115f('0x36')][_0x115f('0x40')]);_0x252d91[_0x115f('0x41')]=qs[_0x115f('0x38')](_['pick'](_0xea4ed1[_0x115f('0x36')],_0x3890a9[_0x115f('0x38')]));if(_0xea4ed1[_0x115f('0x36')]['filter']){_0x252d91[_0x115f('0x41')]=_[_0x115f('0x43')](_0x252d91[_0x115f('0x41')],{'$or':_['map'](_0x252d91[_0x115f('0x3b')],function(_0x7b50e8){var _0x412053={};_0x412053[_0x7b50e8]={'$like':'%'+_0xea4ed1[_0x115f('0x36')][_0x115f('0x42')]+'%'};return _0x412053;})});}_0x252d91=_['merge']({},_0x252d91,_0xea4ed1[_0x115f('0x45')]);return _0x20df56[_0x115f('0x55')](_0x252d91);}})[_0x115f('0x2a')](function(_0x1f7fec){if(_0x1f7fec){_0x118226=_0x1f7fec['length'];if(!_0xea4ed1[_0x115f('0x36')][_0x115f('0x3d')]('nolimit')){_0x252d91['limit']=qs[_0x115f('0x23')](_0xea4ed1[_0x115f('0x36')][_0x115f('0x23')]);_0x252d91[_0x115f('0x21')]=qs[_0x115f('0x21')](_0xea4ed1[_0x115f('0x36')][_0x115f('0x21')]);}return _0x20df56[_0x115f('0x55')](_0x252d91);}})['then'](function(_0x2e87bc){if(_0x2e87bc){return _0x2e87bc?{'count':_0x118226,'rows':_0x2e87bc}:null;}})[_0x115f('0x2a')](respondWithResult(_0x4925ba,null))[_0x115f('0x4b')](handleError(_0x4925ba,null));};exports[_0x115f('0x56')]=function(_0x2930e8,_0x3dbc2e,_0x1c44cd){var _0x34fa7a={};var _0x42ad8e={};var _0x43df78;var _0x2a2486;return db[_0x115f('0x33')]['findOne']({'where':{'id':_0x2930e8['params']['id']}})['then'](handleEntityNotFound(_0x3dbc2e,null))[_0x115f('0x2a')](function(_0x61b1cc){if(_0x61b1cc){_0x43df78=_0x61b1cc;_0x42ad8e[_0x115f('0x35')]=_[_0x115f('0x37')](db['Dynamics365Field']['rawAttributes']);_0x42ad8e[_0x115f('0x36')]=_['keys'](_0x2930e8[_0x115f('0x36')]);_0x42ad8e[_0x115f('0x38')]=_['intersection'](_0x42ad8e['model'],_0x42ad8e[_0x115f('0x36')]);_0x34fa7a[_0x115f('0x3b')]=_[_0x115f('0x39')](_0x42ad8e[_0x115f('0x35')],qs[_0x115f('0x3a')](_0x2930e8[_0x115f('0x36')]['fields']));_0x34fa7a[_0x115f('0x3b')]=_0x34fa7a['attributes'][_0x115f('0x3c')]?_0x34fa7a[_0x115f('0x3b')]:_0x42ad8e[_0x115f('0x35')];_0x34fa7a[_0x115f('0x3f')]=qs['sort'](_0x2930e8[_0x115f('0x36')]['sort']);_0x34fa7a['where']=qs[_0x115f('0x38')](_[_0x115f('0x54')](_0x2930e8[_0x115f('0x36')],_0x42ad8e['filters']));if(_0x2930e8[_0x115f('0x36')][_0x115f('0x42')]){_0x34fa7a[_0x115f('0x41')]=_[_0x115f('0x43')](_0x34fa7a[_0x115f('0x41')],{'$or':_[_0x115f('0x32')](_0x34fa7a[_0x115f('0x3b')],function(_0x362e39){var _0x2db653={};_0x2db653[_0x362e39]={'$like':'%'+_0x2930e8[_0x115f('0x36')][_0x115f('0x42')]+'%'};return _0x2db653;})});}_0x34fa7a=_['merge']({},_0x34fa7a,_0x2930e8['options']);return _0x43df78['getDescriptions'](_0x34fa7a);}})[_0x115f('0x2a')](function(_0x419d09){if(_0x419d09){_0x2a2486=_0x419d09[_0x115f('0x3c')];if(!_0x2930e8[_0x115f('0x36')][_0x115f('0x3d')](_0x115f('0x3e'))){_0x34fa7a['limit']=qs[_0x115f('0x23')](_0x2930e8['query'][_0x115f('0x23')]);_0x34fa7a[_0x115f('0x21')]=qs[_0x115f('0x21')](_0x2930e8[_0x115f('0x36')][_0x115f('0x21')]);}return _0x43df78[_0x115f('0x56')](_0x34fa7a);}})[_0x115f('0x2a')](function(_0x22cefc){if(_0x22cefc){return _0x22cefc?{'count':_0x2a2486,'rows':_0x22cefc}:null;}})['then'](respondWithResult(_0x3dbc2e,null))['catch'](handleError(_0x3dbc2e,null));};
\ No newline at end of file
+var _0xbdd9=['getSubjects','getDescriptions','Dynamics365Field','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','rawAttributes','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','merge','type','VIRTUAL','filter','options','Dynamics365Configuration','include','findAll','catch','params','find','create','body','getFields','findOne','order','hasOwnProperty'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xbdd9,0x13b));var _0x9bdd=function(_0x42ca15,_0x193ccb){_0x42ca15=_0x42ca15-0x0;var _0x1c6ded=_0xbdd9[_0x42ca15];return _0x1c6ded;};'use strict';var emlformat=require(_0x9bdd('0x0'));var rimraf=require(_0x9bdd('0x1'));var zipdir=require(_0x9bdd('0x2'));var jsonpatch=require(_0x9bdd('0x3'));var rp=require(_0x9bdd('0x4'));var moment=require(_0x9bdd('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9bdd('0x6'));var util=require(_0x9bdd('0x7'));var path=require(_0x9bdd('0x8'));var sox=require(_0x9bdd('0x9'));var csv=require('to-csv');var ejs=require(_0x9bdd('0xa'));var fs=require('fs');var fs_extra=require(_0x9bdd('0xb'));var _=require(_0x9bdd('0xc'));var squel=require(_0x9bdd('0xd'));var crypto=require('crypto');var jsforce=require(_0x9bdd('0xe'));var deskjs=require(_0x9bdd('0xf'));var toCsv=require(_0x9bdd('0x10'));var querystring=require('querystring');var Papa=require(_0x9bdd('0x11'));var Redis=require(_0x9bdd('0x12'));var authService=require(_0x9bdd('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9bdd('0x14'));var logger=require(_0x9bdd('0x15'))(_0x9bdd('0x16'));var utils=require(_0x9bdd('0x17'));var config=require(_0x9bdd('0x18'));var licenseUtil=require(_0x9bdd('0x19'));var db=require(_0x9bdd('0x1a'))['db'];function respondWithStatusCode(_0x58aaba,_0xb441c3){_0xb441c3=_0xb441c3||0xcc;return function(_0x4df6b2){if(_0x4df6b2){return _0x58aaba[_0x9bdd('0x1b')](_0xb441c3);}return _0x58aaba[_0x9bdd('0x1c')](_0xb441c3)['end']();};}function respondWithResult(_0x1487f5,_0x3a97bf){_0x3a97bf=_0x3a97bf||0xc8;return function(_0x34c92d){if(_0x34c92d){return _0x1487f5[_0x9bdd('0x1c')](_0x3a97bf)['json'](_0x34c92d);}};}function respondWithFilteredResult(_0x66b065,_0x159c2c){return function(_0x4cb536){if(_0x4cb536){var _0xf7fafb=typeof _0x159c2c[_0x9bdd('0x1d')]===_0x9bdd('0x1e')&&typeof _0x159c2c[_0x9bdd('0x1f')]===_0x9bdd('0x1e');var _0x84b754=_0x4cb536[_0x9bdd('0x20')];var _0x117c7f=_0xf7fafb?0x0:_0x159c2c[_0x9bdd('0x1d')];var _0x5543a9=_0xf7fafb?_0x4cb536[_0x9bdd('0x20')]:_0x159c2c[_0x9bdd('0x1d')]+_0x159c2c[_0x9bdd('0x1f')];var _0x19a0b8;if(_0x5543a9>=_0x84b754){_0x5543a9=_0x84b754;_0x19a0b8=0xc8;}else{_0x19a0b8=0xce;}_0x66b065[_0x9bdd('0x1c')](_0x19a0b8);return _0x66b065['set'](_0x9bdd('0x21'),_0x117c7f+'-'+_0x5543a9+'/'+_0x84b754)[_0x9bdd('0x22')](_0x4cb536);}return null;};}function patchUpdates(_0x2f912e){return function(_0x330eef){try{jsonpatch[_0x9bdd('0x23')](_0x330eef,_0x2f912e,!![]);}catch(_0x35980e){return BPromise[_0x9bdd('0x24')](_0x35980e);}return _0x330eef[_0x9bdd('0x25')]();};}function saveUpdates(_0x101ec2,_0xb1b449){return function(_0x4b016b){if(_0x4b016b){return _0x4b016b[_0x9bdd('0x26')](_0x101ec2)[_0x9bdd('0x27')](function(_0x39ff13){return _0x39ff13;});}return null;};}function removeEntity(_0x57f005,_0x2c1cd5){return function(_0x4f0632){if(_0x4f0632){return _0x4f0632[_0x9bdd('0x28')]()['then'](function(){_0x57f005[_0x9bdd('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x273622,_0x444673){return function(_0x535ca6){if(!_0x535ca6){_0x273622[_0x9bdd('0x1b')](0x194);}return _0x535ca6;};}function handleError(_0x58d25a,_0x1212d0){_0x1212d0=_0x1212d0||0x1f4;return function(_0x412c82){logger[_0x9bdd('0x29')](_0x412c82[_0x9bdd('0x2a')]);if(_0x412c82[_0x9bdd('0x2b')]){delete _0x412c82[_0x9bdd('0x2b')];}_0x58d25a[_0x9bdd('0x1c')](_0x1212d0)['send'](_0x412c82);};}exports['index']=function(_0x15d748,_0x180ed9){var _0x4f0ea3={},_0xe89ddb={},_0x5cf647={'count':0x0,'rows':[]};var _0x773f06=_['map'](db['Dynamics365Configuration'][_0x9bdd('0x2c')],function(_0x4f6e6a){return{'name':_0x4f6e6a['fieldName'],'type':_0x4f6e6a['type'][_0x9bdd('0x2d')]};});_0xe89ddb[_0x9bdd('0x2e')]=_[_0x9bdd('0x2f')](_0x773f06,_0x9bdd('0x2b'));_0xe89ddb[_0x9bdd('0x30')]=_[_0x9bdd('0x31')](_0x15d748[_0x9bdd('0x30')]);_0xe89ddb[_0x9bdd('0x32')]=_[_0x9bdd('0x33')](_0xe89ddb[_0x9bdd('0x2e')],_0xe89ddb[_0x9bdd('0x30')]);_0x4f0ea3[_0x9bdd('0x34')]=_[_0x9bdd('0x33')](_0xe89ddb[_0x9bdd('0x2e')],qs[_0x9bdd('0x35')](_0x15d748[_0x9bdd('0x30')][_0x9bdd('0x35')]));_0x4f0ea3[_0x9bdd('0x34')]=_0x4f0ea3[_0x9bdd('0x34')][_0x9bdd('0x36')]?_0x4f0ea3[_0x9bdd('0x34')]:_0xe89ddb[_0x9bdd('0x2e')];if(!_0x15d748[_0x9bdd('0x30')]['hasOwnProperty'](_0x9bdd('0x37'))){_0x4f0ea3[_0x9bdd('0x1f')]=qs[_0x9bdd('0x1f')](_0x15d748['query'][_0x9bdd('0x1f')]);_0x4f0ea3[_0x9bdd('0x1d')]=qs['offset'](_0x15d748[_0x9bdd('0x30')]['offset']);}_0x4f0ea3['order']=qs[_0x9bdd('0x38')](_0x15d748[_0x9bdd('0x30')]['sort']);_0x4f0ea3[_0x9bdd('0x39')]=qs['filters'](_['pick'](_0x15d748[_0x9bdd('0x30')],_0xe89ddb['filters']),_0x773f06);if(_0x15d748[_0x9bdd('0x30')]['filter']){_0x4f0ea3[_0x9bdd('0x39')]=_[_0x9bdd('0x3a')](_0x4f0ea3[_0x9bdd('0x39')],{'$or':_['map'](_0x773f06,function(_0x220070){if(_0x220070[_0x9bdd('0x3b')]!==_0x9bdd('0x3c')){var _0x5ac266={};_0x5ac266[_0x220070['name']]={'$like':'%'+_0x15d748['query'][_0x9bdd('0x3d')]+'%'};return _0x5ac266;}})});}_0x4f0ea3=_[_0x9bdd('0x3a')]({},_0x4f0ea3,_0x15d748[_0x9bdd('0x3e')]);var _0x2691c0={'where':_0x4f0ea3[_0x9bdd('0x39')]};return db[_0x9bdd('0x3f')]['count'](_0x2691c0)['then'](function(_0x213fa2){_0x5cf647[_0x9bdd('0x20')]=_0x213fa2;if(_0x15d748[_0x9bdd('0x30')]['includeAll']){_0x4f0ea3[_0x9bdd('0x40')]=[{'all':!![]}];}return db[_0x9bdd('0x3f')][_0x9bdd('0x41')](_0x4f0ea3);})['then'](function(_0x4906c4){_0x5cf647['rows']=_0x4906c4;return _0x5cf647;})[_0x9bdd('0x27')](respondWithFilteredResult(_0x180ed9,_0x4f0ea3))[_0x9bdd('0x42')](handleError(_0x180ed9,null));};exports['show']=function(_0x314d16,_0x260e87){var _0x356929={'raw':![],'where':{'id':_0x314d16[_0x9bdd('0x43')]['id']}},_0x3dc633={};_0x3dc633[_0x9bdd('0x2e')]=_[_0x9bdd('0x31')](db[_0x9bdd('0x3f')]['rawAttributes']);_0x3dc633['query']=_[_0x9bdd('0x31')](_0x314d16[_0x9bdd('0x30')]);_0x3dc633[_0x9bdd('0x32')]=_[_0x9bdd('0x33')](_0x3dc633[_0x9bdd('0x2e')],_0x3dc633[_0x9bdd('0x30')]);_0x356929[_0x9bdd('0x34')]=_[_0x9bdd('0x33')](_0x3dc633[_0x9bdd('0x2e')],qs['fields'](_0x314d16[_0x9bdd('0x30')][_0x9bdd('0x35')]));_0x356929['attributes']=_0x356929[_0x9bdd('0x34')][_0x9bdd('0x36')]?_0x356929[_0x9bdd('0x34')]:_0x3dc633[_0x9bdd('0x2e')];if(_0x314d16[_0x9bdd('0x30')]['includeAll']){_0x356929[_0x9bdd('0x40')]=[{'all':!![]}];}_0x356929=_[_0x9bdd('0x3a')]({},_0x356929,_0x314d16['options']);return db[_0x9bdd('0x3f')][_0x9bdd('0x44')](_0x356929)[_0x9bdd('0x27')](handleEntityNotFound(_0x260e87,null))['then'](respondWithResult(_0x260e87,null))[_0x9bdd('0x42')](handleError(_0x260e87,null));};exports['create']=function(_0x15b5fc,_0x494410){return db[_0x9bdd('0x3f')][_0x9bdd('0x45')](_0x15b5fc[_0x9bdd('0x46')],{})['then'](respondWithResult(_0x494410,0xc9))[_0x9bdd('0x42')](handleError(_0x494410,null));};exports[_0x9bdd('0x26')]=function(_0x4edd6b,_0x4ad120){if(_0x4edd6b[_0x9bdd('0x46')]['id']){delete _0x4edd6b[_0x9bdd('0x46')]['id'];}return db[_0x9bdd('0x3f')][_0x9bdd('0x44')]({'where':{'id':_0x4edd6b[_0x9bdd('0x43')]['id']}})[_0x9bdd('0x27')](handleEntityNotFound(_0x4ad120,null))['then'](saveUpdates(_0x4edd6b['body'],null))[_0x9bdd('0x27')](respondWithResult(_0x4ad120,null))[_0x9bdd('0x42')](handleError(_0x4ad120,null));};exports['destroy']=function(_0x463d49,_0x33a765){return db[_0x9bdd('0x3f')][_0x9bdd('0x44')]({'where':{'id':_0x463d49[_0x9bdd('0x43')]['id']}})[_0x9bdd('0x27')](handleEntityNotFound(_0x33a765,null))[_0x9bdd('0x27')](removeEntity(_0x33a765,null))['catch'](handleError(_0x33a765,null));};exports[_0x9bdd('0x47')]=function(_0x4f7362,_0x3e8735,_0x5ce51a){var _0xf44d68={};var _0x2520eb={};var _0x58f8ce;var _0x4242d8;return db[_0x9bdd('0x3f')][_0x9bdd('0x48')]({'where':{'id':_0x4f7362[_0x9bdd('0x43')]['id']}})[_0x9bdd('0x27')](handleEntityNotFound(_0x3e8735,null))[_0x9bdd('0x27')](function(_0x4badf7){if(_0x4badf7){_0x58f8ce=_0x4badf7;_0x2520eb[_0x9bdd('0x2e')]=_[_0x9bdd('0x31')](db['Dynamics365Field']['rawAttributes']);_0x2520eb[_0x9bdd('0x30')]=_['keys'](_0x4f7362[_0x9bdd('0x30')]);_0x2520eb[_0x9bdd('0x32')]=_[_0x9bdd('0x33')](_0x2520eb['model'],_0x2520eb[_0x9bdd('0x30')]);_0xf44d68[_0x9bdd('0x34')]=_[_0x9bdd('0x33')](_0x2520eb[_0x9bdd('0x2e')],qs[_0x9bdd('0x35')](_0x4f7362[_0x9bdd('0x30')]['fields']));_0xf44d68['attributes']=_0xf44d68[_0x9bdd('0x34')][_0x9bdd('0x36')]?_0xf44d68[_0x9bdd('0x34')]:_0x2520eb[_0x9bdd('0x2e')];_0xf44d68[_0x9bdd('0x49')]=qs[_0x9bdd('0x38')](_0x4f7362[_0x9bdd('0x30')][_0x9bdd('0x38')]);_0xf44d68[_0x9bdd('0x39')]=qs[_0x9bdd('0x32')](_['pick'](_0x4f7362[_0x9bdd('0x30')],_0x2520eb[_0x9bdd('0x32')]));if(_0x4f7362[_0x9bdd('0x30')][_0x9bdd('0x3d')]){_0xf44d68['where']=_[_0x9bdd('0x3a')](_0xf44d68['where'],{'$or':_[_0x9bdd('0x2f')](_0xf44d68[_0x9bdd('0x34')],function(_0x4851e1){var _0x4e7235={};_0x4e7235[_0x4851e1]={'$like':'%'+_0x4f7362['query'][_0x9bdd('0x3d')]+'%'};return _0x4e7235;})});}_0xf44d68=_[_0x9bdd('0x3a')]({},_0xf44d68,_0x4f7362['options']);return _0x58f8ce['getFields'](_0xf44d68);}})[_0x9bdd('0x27')](function(_0x1bd0c7){if(_0x1bd0c7){_0x4242d8=_0x1bd0c7['length'];if(!_0x4f7362['query'][_0x9bdd('0x4a')](_0x9bdd('0x37'))){_0xf44d68['limit']=qs[_0x9bdd('0x1f')](_0x4f7362[_0x9bdd('0x30')][_0x9bdd('0x1f')]);_0xf44d68['offset']=qs['offset'](_0x4f7362[_0x9bdd('0x30')][_0x9bdd('0x1d')]);}return _0x58f8ce[_0x9bdd('0x47')](_0xf44d68);}})[_0x9bdd('0x27')](function(_0x445b9d){if(_0x445b9d){return _0x445b9d?{'count':_0x4242d8,'rows':_0x445b9d}:null;}})[_0x9bdd('0x27')](respondWithResult(_0x3e8735,null))[_0x9bdd('0x42')](handleError(_0x3e8735,null));};exports[_0x9bdd('0x4b')]=function(_0x51bc29,_0x203c33,_0x2662ec){var _0x194d3e={};var _0x5ae62d={};var _0x58addb;var _0x3477d1;return db[_0x9bdd('0x3f')]['findOne']({'where':{'id':_0x51bc29[_0x9bdd('0x43')]['id']}})['then'](handleEntityNotFound(_0x203c33,null))[_0x9bdd('0x27')](function(_0x25a579){if(_0x25a579){_0x58addb=_0x25a579;_0x5ae62d[_0x9bdd('0x2e')]=_[_0x9bdd('0x31')](db['Dynamics365Field'][_0x9bdd('0x2c')]);_0x5ae62d['query']=_[_0x9bdd('0x31')](_0x51bc29[_0x9bdd('0x30')]);_0x5ae62d[_0x9bdd('0x32')]=_['intersection'](_0x5ae62d[_0x9bdd('0x2e')],_0x5ae62d[_0x9bdd('0x30')]);_0x194d3e[_0x9bdd('0x34')]=_['intersection'](_0x5ae62d[_0x9bdd('0x2e')],qs[_0x9bdd('0x35')](_0x51bc29[_0x9bdd('0x30')][_0x9bdd('0x35')]));_0x194d3e[_0x9bdd('0x34')]=_0x194d3e[_0x9bdd('0x34')][_0x9bdd('0x36')]?_0x194d3e[_0x9bdd('0x34')]:_0x5ae62d['model'];_0x194d3e['order']=qs['sort'](_0x51bc29[_0x9bdd('0x30')][_0x9bdd('0x38')]);_0x194d3e[_0x9bdd('0x39')]=qs['filters'](_['pick'](_0x51bc29[_0x9bdd('0x30')],_0x5ae62d[_0x9bdd('0x32')]));if(_0x51bc29[_0x9bdd('0x30')][_0x9bdd('0x3d')]){_0x194d3e[_0x9bdd('0x39')]=_[_0x9bdd('0x3a')](_0x194d3e['where'],{'$or':_[_0x9bdd('0x2f')](_0x194d3e[_0x9bdd('0x34')],function(_0x31dd5f){var _0x2af52f={};_0x2af52f[_0x31dd5f]={'$like':'%'+_0x51bc29['query'][_0x9bdd('0x3d')]+'%'};return _0x2af52f;})});}_0x194d3e=_[_0x9bdd('0x3a')]({},_0x194d3e,_0x51bc29[_0x9bdd('0x3e')]);return _0x58addb[_0x9bdd('0x4b')](_0x194d3e);}})['then'](function(_0x3a853f){if(_0x3a853f){_0x3477d1=_0x3a853f[_0x9bdd('0x36')];if(!_0x51bc29[_0x9bdd('0x30')][_0x9bdd('0x4a')](_0x9bdd('0x37'))){_0x194d3e[_0x9bdd('0x1f')]=qs['limit'](_0x51bc29[_0x9bdd('0x30')]['limit']);_0x194d3e[_0x9bdd('0x1d')]=qs[_0x9bdd('0x1d')](_0x51bc29[_0x9bdd('0x30')][_0x9bdd('0x1d')]);}return _0x58addb[_0x9bdd('0x4b')](_0x194d3e);}})['then'](function(_0x52fbf7){if(_0x52fbf7){return _0x52fbf7?{'count':_0x3477d1,'rows':_0x52fbf7}:null;}})[_0x9bdd('0x27')](respondWithResult(_0x203c33,null))[_0x9bdd('0x42')](handleError(_0x203c33,null));};exports[_0x9bdd('0x4c')]=function(_0x271edc,_0x46256c,_0x4309d7){var _0xd1b6fd={};var _0x404af9={};var _0x368765;var _0xd60885;return db['Dynamics365Configuration'][_0x9bdd('0x48')]({'where':{'id':_0x271edc['params']['id']}})[_0x9bdd('0x27')](handleEntityNotFound(_0x46256c,null))[_0x9bdd('0x27')](function(_0x2bd11b){if(_0x2bd11b){_0x368765=_0x2bd11b;_0x404af9[_0x9bdd('0x2e')]=_[_0x9bdd('0x31')](db[_0x9bdd('0x4d')][_0x9bdd('0x2c')]);_0x404af9[_0x9bdd('0x30')]=_[_0x9bdd('0x31')](_0x271edc['query']);_0x404af9[_0x9bdd('0x32')]=_[_0x9bdd('0x33')](_0x404af9[_0x9bdd('0x2e')],_0x404af9[_0x9bdd('0x30')]);_0xd1b6fd[_0x9bdd('0x34')]=_['intersection'](_0x404af9[_0x9bdd('0x2e')],qs[_0x9bdd('0x35')](_0x271edc['query'][_0x9bdd('0x35')]));_0xd1b6fd['attributes']=_0xd1b6fd['attributes'][_0x9bdd('0x36')]?_0xd1b6fd[_0x9bdd('0x34')]:_0x404af9[_0x9bdd('0x2e')];_0xd1b6fd[_0x9bdd('0x49')]=qs[_0x9bdd('0x38')](_0x271edc[_0x9bdd('0x30')][_0x9bdd('0x38')]);_0xd1b6fd[_0x9bdd('0x39')]=qs[_0x9bdd('0x32')](_['pick'](_0x271edc['query'],_0x404af9[_0x9bdd('0x32')]));if(_0x271edc[_0x9bdd('0x30')][_0x9bdd('0x3d')]){_0xd1b6fd[_0x9bdd('0x39')]=_[_0x9bdd('0x3a')](_0xd1b6fd[_0x9bdd('0x39')],{'$or':_['map'](_0xd1b6fd[_0x9bdd('0x34')],function(_0x5a2cb3){var _0x3d24dc={};_0x3d24dc[_0x5a2cb3]={'$like':'%'+_0x271edc[_0x9bdd('0x30')][_0x9bdd('0x3d')]+'%'};return _0x3d24dc;})});}_0xd1b6fd=_[_0x9bdd('0x3a')]({},_0xd1b6fd,_0x271edc[_0x9bdd('0x3e')]);return _0x368765[_0x9bdd('0x4c')](_0xd1b6fd);}})[_0x9bdd('0x27')](function(_0x30636b){if(_0x30636b){_0xd60885=_0x30636b[_0x9bdd('0x36')];if(!_0x271edc[_0x9bdd('0x30')]['hasOwnProperty'](_0x9bdd('0x37'))){_0xd1b6fd[_0x9bdd('0x1f')]=qs[_0x9bdd('0x1f')](_0x271edc[_0x9bdd('0x30')][_0x9bdd('0x1f')]);_0xd1b6fd[_0x9bdd('0x1d')]=qs[_0x9bdd('0x1d')](_0x271edc[_0x9bdd('0x30')][_0x9bdd('0x1d')]);}return _0x368765[_0x9bdd('0x4c')](_0xd1b6fd);}})[_0x9bdd('0x27')](function(_0x485661){if(_0x485661){return _0x485661?{'count':_0xd60885,'rows':_0x485661}:null;}})[_0x9bdd('0x27')](respondWithResult(_0x46256c,null))[_0x9bdd('0x42')](handleError(_0x46256c,null));};
\ No newline at end of file
index 51ca03e..45dd2c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f0d=['./intDynamics365Configuration.attributes','define','Dynamics365Configuration','int_dynamics365_configurations','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x3cb700,_0x507f5c){_0x3cb700=_0x3cb700-0x0;var _0x5148c8=_0x6f0d[_0x3cb700];return _0x5148c8;};'use strict';var _=require('lodash');var util=require(_0xd6f0('0x0'));var logger=require(_0xd6f0('0x1'))(_0xd6f0('0x2'));var moment=require(_0xd6f0('0x3'));var BPromise=require('bluebird');var rp=require(_0xd6f0('0x4'));var fs=require('fs');var path=require(_0xd6f0('0x5'));var rimraf=require(_0xd6f0('0x6'));var config=require(_0xd6f0('0x7'));var attributes=require(_0xd6f0('0x8'));module['exports']=function(_0x2d2ce6,_0x4a8b0c){return _0x2d2ce6[_0xd6f0('0x9')](_0xd6f0('0xa'),attributes,{'tableName':_0xd6f0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb43b=['rimraf','../../config/environment','./intDynamics365Configuration.attributes','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','api','moment','bluebird','path'];(function(_0x2f628d,_0x1f1436){var _0x16e81e=function(_0x5e54ea){while(--_0x5e54ea){_0x2f628d['push'](_0x2f628d['shift']());}};_0x16e81e(++_0x1f1436);}(_0xb43b,0x1b2));var _0xbb43=function(_0x2e82dc,_0x3cbba9){_0x2e82dc=_0x2e82dc-0x0;var _0x133e1e=_0xb43b[_0x2e82dc];return _0x133e1e;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var moment=require(_0xbb43('0x3'));var BPromise=require(_0xbb43('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb43('0x5'));var rimraf=require(_0xbb43('0x6'));var config=require(_0xbb43('0x7'));var attributes=require(_0xbb43('0x8'));module['exports']=function(_0x491fb9,_0x378df5){return _0x491fb9['define'](_0xbb43('0x9'),attributes,{'tableName':_0xbb43('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0cee62d..e095d07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb729=['moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','Dynamics365Configuration,\x20%s,\x20%s','message','catch','lodash','util'];(function(_0x50ae15,_0x1b6b92){var _0x3d2791=function(_0x188080){while(--_0x188080){_0x50ae15['push'](_0x50ae15['shift']());}};_0x3d2791(++_0x1b6b92);}(_0xb729,0x132));var _0x9b72=function(_0xfcedad,_0x197686){_0xfcedad=_0xfcedad-0x0;var _0x2833ab=_0xb729[_0xfcedad];return _0x2833ab;};'use strict';var _=require(_0x9b72('0x0'));var util=require(_0x9b72('0x1'));var moment=require(_0x9b72('0x2'));var BPromise=require(_0x9b72('0x3'));var rs=require(_0x9b72('0x4'));var fs=require('fs');var Redis=require(_0x9b72('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9b72('0x6'))(_0x9b72('0x7'));var config=require(_0x9b72('0x8'));var jayson=require(_0x9b72('0x9'));var client=jayson[_0x9b72('0xa')][_0x9b72('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xabdc03,_0x1bd0a1,_0x3e9fb1){return new BPromise(function(_0x1d9c53,_0x4e5e08){return client[_0x9b72('0xc')](_0xabdc03,_0x3e9fb1)['then'](function(_0x3f3bae){logger[_0x9b72('0xd')]('Dynamics365Configuration,\x20%s,\x20%s',_0x1bd0a1,_0x9b72('0xe'));logger[_0x9b72('0xf')](_0x9b72('0x10'),_0x1bd0a1,'request\x20sent',JSON[_0x9b72('0x11')](_0x3f3bae));if(_0x3f3bae[_0x9b72('0x12')]){if(_0x3f3bae[_0x9b72('0x12')]['code']===0x1f4){logger['error'](_0x9b72('0x13'),_0x1bd0a1,_0x3f3bae['error'][_0x9b72('0x14')]);return _0x4e5e08(_0x3f3bae['error'][_0x9b72('0x14')]);}logger['error'](_0x9b72('0x13'),_0x1bd0a1,_0x3f3bae[_0x9b72('0x12')][_0x9b72('0x14')]);return _0x1d9c53(_0x3f3bae[_0x9b72('0x12')]['message']);}else{logger[_0x9b72('0xd')](_0x9b72('0x13'),_0x1bd0a1,_0x9b72('0xe'));_0x1d9c53(_0x3f3bae['result']['message']);}})[_0x9b72('0x15')](function(_0x14cbbf){logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x1bd0a1,_0x14cbbf);_0x4e5e08(_0x14cbbf);});});}
\ No newline at end of file
+var _0xb3cb=['then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x51ff05,_0x5be707){var _0x2376d9=function(_0x3178a4){while(--_0x3178a4){_0x51ff05['push'](_0x51ff05['shift']());}};_0x2376d9(++_0x5be707);}(_0xb3cb,0x193));var _0xbb3c=function(_0x34e794,_0x38fdf0){_0x34e794=_0x34e794-0x0;var _0x40ce8e=_0xb3cb[_0x34e794];return _0x40ce8e;};'use strict';var _=require(_0xbb3c('0x0'));var util=require('util');var moment=require(_0xbb3c('0x1'));var BPromise=require('bluebird');var rs=require(_0xbb3c('0x2'));var fs=require('fs');var Redis=require(_0xbb3c('0x3'));var db=require(_0xbb3c('0x4'))['db'];var utils=require(_0xbb3c('0x5'));var logger=require(_0xbb3c('0x6'))(_0xbb3c('0x7'));var config=require(_0xbb3c('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xbb3c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x19979e,_0x1fe8cf,_0x347fc4){return new BPromise(function(_0x489edc,_0x29ef2c){return client[_0xbb3c('0xa')](_0x19979e,_0x347fc4)[_0xbb3c('0xb')](function(_0x1f3f40){logger[_0xbb3c('0xc')](_0xbb3c('0xd'),_0x1fe8cf,_0xbb3c('0xe'));logger[_0xbb3c('0xf')](_0xbb3c('0x10'),_0x1fe8cf,_0xbb3c('0xe'),JSON[_0xbb3c('0x11')](_0x1f3f40));if(_0x1f3f40[_0xbb3c('0x12')]){if(_0x1f3f40['error'][_0xbb3c('0x13')]===0x1f4){logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x1fe8cf,_0x1f3f40[_0xbb3c('0x12')][_0xbb3c('0x14')]);return _0x29ef2c(_0x1f3f40['error'][_0xbb3c('0x14')]);}logger[_0xbb3c('0x12')](_0xbb3c('0xd'),_0x1fe8cf,_0x1f3f40[_0xbb3c('0x12')]['message']);return _0x489edc(_0x1f3f40[_0xbb3c('0x12')][_0xbb3c('0x14')]);}else{logger[_0xbb3c('0xc')]('Dynamics365Configuration,\x20%s,\x20%s',_0x1fe8cf,'request\x20sent');_0x489edc(_0x1f3f40[_0xbb3c('0x15')]['message']);}})[_0xbb3c('0x16')](function(_0x56a48b){logger[_0xbb3c('0x12')](_0xbb3c('0xd'),_0x1fe8cf,_0x56a48b);_0x29ef2c(_0x56a48b);});});}
\ No newline at end of file
index d6e9a98..88011f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb9b=['Router','fs-extra','../../config/environment','./intDynamics365Field.controller','index','get','/:id','isAuthenticated','show','post','put','destroy','exports','multer','util','express'];(function(_0x49e77b,_0x59ced7){var _0x58b978=function(_0x572228){while(--_0x572228){_0x49e77b['push'](_0x49e77b['shift']());}};_0x58b978(++_0x59ced7);}(_0xbb9b,0x10d));var _0xbbb9=function(_0x529964,_0x435c59){_0x529964=_0x529964-0x0;var _0x3c722c=_0xbb9b[_0x529964];return _0x3c722c;};'use strict';var multer=require(_0xbbb9('0x0'));var util=require(_0xbbb9('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbbb9('0x2'));var router=express[_0xbbb9('0x3')]();var fs_extra=require(_0xbbb9('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xbbb9('0x5'));var controller=require(_0xbbb9('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xbbb9('0x7')]);router[_0xbbb9('0x8')](_0xbbb9('0x9'),auth[_0xbbb9('0xa')](),controller[_0xbbb9('0xb')]);router[_0xbbb9('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0xbbb9('0xd')](_0xbbb9('0x9'),auth[_0xbbb9('0xa')](),controller['update']);router['delete']('/:id',auth[_0xbbb9('0xa')](),controller[_0xbbb9('0xe')]);module[_0xbbb9('0xf')]=router;
\ No newline at end of file
+var _0x7536=['post','isAuthenticated','/:id','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','index','show'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0x7536,0xa9));var _0x6753=function(_0x4521e3,_0x10a8a4){_0x4521e3=_0x4521e3-0x0;var _0x46a272=_0x7536[_0x4521e3];return _0x46a272;};'use strict';var multer=require(_0x6753('0x0'));var util=require(_0x6753('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6753('0x2'));var router=express[_0x6753('0x3')]();var fs_extra=require(_0x6753('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x6753('0x5'));var config=require(_0x6753('0x6'));var controller=require(_0x6753('0x7'));router[_0x6753('0x8')]('/',auth['isAuthenticated'](),controller[_0x6753('0x9')]);router[_0x6753('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x6753('0xa')]);router[_0x6753('0xb')]('/',auth[_0x6753('0xc')](),controller['create']);router['put'](_0x6753('0xd'),auth[_0x6753('0xc')](),controller[_0x6753('0xe')]);router[_0x6753('0xf')]('/:id',auth[_0x6753('0xc')](),controller[_0x6753('0x10')]);module[_0x6753('0x11')]=router;
\ No newline at end of file
index cc4893d..6f3ffe0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf10c=['STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','picklist'];(function(_0x205e5a,_0x5c19fb){var _0x10da58=function(_0x1ba35d){while(--_0x1ba35d){_0x205e5a['push'](_0x205e5a['shift']());}};_0x10da58(++_0x5c19fb);}(_0xf10c,0x107));var _0xcf10=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf10c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xcf10('0x0'));module[_0xcf10('0x1')]={'type':{'type':Sequelize[_0xcf10('0x2')](_0xcf10('0x3'),_0xcf10('0x4'),_0xcf10('0x5'),'keyValue',_0xcf10('0x6')),'defaultValue':_0xcf10('0x3')},'content':{'type':Sequelize[_0xcf10('0x7')]},'key':{'type':Sequelize[_0xcf10('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0xcf10('0x3'),_0xcf10('0x4'),_0xcf10('0x5'))},'keyContent':{'type':Sequelize[_0xcf10('0x7')]},'idField':{'type':Sequelize[_0xcf10('0x7')]},'nameField':{'type':Sequelize[_0xcf10('0x7')]},'customField':{'type':Sequelize[_0xcf10('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9c98=['variable','customVariable','keyValue','picklist','STRING','sequelize','exports','ENUM','string'];(function(_0x3dea7d,_0x2cd4ea){var _0x53919a=function(_0x1554e2){while(--_0x1554e2){_0x3dea7d['push'](_0x3dea7d['shift']());}};_0x53919a(++_0x2cd4ea);}(_0x9c98,0x19a));var _0x89c9=function(_0x188656,_0x3f3b2e){_0x188656=_0x188656-0x0;var _0x2a1b16=_0x9c98[_0x188656];return _0x2a1b16;};'use strict';var Sequelize=require(_0x89c9('0x0'));module[_0x89c9('0x1')]={'type':{'type':Sequelize[_0x89c9('0x2')](_0x89c9('0x3'),_0x89c9('0x4'),_0x89c9('0x5'),_0x89c9('0x6'),_0x89c9('0x7')),'defaultValue':_0x89c9('0x3')},'content':{'type':Sequelize[_0x89c9('0x8')]},'key':{'type':Sequelize[_0x89c9('0x8')]},'keyType':{'type':Sequelize[_0x89c9('0x2')]('string',_0x89c9('0x4'),_0x89c9('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x89c9('0x8')]},'nameField':{'type':Sequelize[_0x89c9('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x89c9('0x8')]}};
\ No newline at end of file
index bf9066f..342c65c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1901=['crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','keys','length','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x3bb575,_0x528321){var _0x364ab6=function(_0x31c400){while(--_0x31c400){_0x3bb575['push'](_0x3bb575['shift']());}};_0x364ab6(++_0x528321);}(_0x1901,0x12f));var _0x1190=function(_0x3fddf3,_0x36ce44){_0x3fddf3=_0x3fddf3-0x0;var _0x15650d=_0x1901[_0x3fddf3];return _0x15650d;};'use strict';var emlformat=require(_0x1190('0x0'));var rimraf=require(_0x1190('0x1'));var zipdir=require(_0x1190('0x2'));var jsonpatch=require(_0x1190('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x1190('0x4'));var Mustache=require('mustache');var util=require(_0x1190('0x5'));var path=require(_0x1190('0x6'));var sox=require(_0x1190('0x7'));var csv=require(_0x1190('0x8'));var ejs=require(_0x1190('0x9'));var fs=require('fs');var fs_extra=require(_0x1190('0xa'));var _=require(_0x1190('0xb'));var squel=require(_0x1190('0xc'));var crypto=require(_0x1190('0xd'));var jsforce=require(_0x1190('0xe'));var deskjs=require(_0x1190('0xf'));var toCsv=require(_0x1190('0x8'));var querystring=require(_0x1190('0x10'));var Papa=require(_0x1190('0x11'));var Redis=require(_0x1190('0x12'));var authService=require(_0x1190('0x13'));var qs=require(_0x1190('0x14'));var as=require(_0x1190('0x15'));var hardwareService=require(_0x1190('0x16'));var logger=require(_0x1190('0x17'))(_0x1190('0x18'));var utils=require(_0x1190('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x1190('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1c2fb8,_0x3f3a8f){_0x3f3a8f=_0x3f3a8f||0xcc;return function(_0x2e5b83){if(_0x2e5b83){return _0x1c2fb8[_0x1190('0x1b')](_0x3f3a8f);}return _0x1c2fb8[_0x1190('0x1c')](_0x3f3a8f)[_0x1190('0x1d')]();};}function respondWithResult(_0xca85d4,_0x207f04){_0x207f04=_0x207f04||0xc8;return function(_0x3b8d4b){if(_0x3b8d4b){return _0xca85d4[_0x1190('0x1c')](_0x207f04)['json'](_0x3b8d4b);}};}function respondWithFilteredResult(_0x937761,_0x219331){return function(_0x15639a){if(_0x15639a){var _0x3fdafe=typeof _0x219331[_0x1190('0x1e')]===_0x1190('0x1f')&&typeof _0x219331['limit']===_0x1190('0x1f');var _0x184d88=_0x15639a[_0x1190('0x20')];var _0x5d2d9f=_0x3fdafe?0x0:_0x219331[_0x1190('0x1e')];var _0x85fd42=_0x3fdafe?_0x15639a[_0x1190('0x20')]:_0x219331['offset']+_0x219331[_0x1190('0x21')];var _0x125e63;if(_0x85fd42>=_0x184d88){_0x85fd42=_0x184d88;_0x125e63=0xc8;}else{_0x125e63=0xce;}_0x937761['status'](_0x125e63);return _0x937761['set'](_0x1190('0x22'),_0x5d2d9f+'-'+_0x85fd42+'/'+_0x184d88)[_0x1190('0x23')](_0x15639a);}return null;};}function patchUpdates(_0x5b8e06){return function(_0x1baf60){try{jsonpatch[_0x1190('0x24')](_0x1baf60,_0x5b8e06,!![]);}catch(_0xd9ad67){return BPromise[_0x1190('0x25')](_0xd9ad67);}return _0x1baf60[_0x1190('0x26')]();};}function saveUpdates(_0x1ee830,_0x2de2db){return function(_0x1110d5){if(_0x1110d5){return _0x1110d5[_0x1190('0x27')](_0x1ee830)[_0x1190('0x28')](function(_0x36cc32){return _0x36cc32;});}return null;};}function removeEntity(_0x29911a,_0x50d28f){return function(_0x19bfe4){if(_0x19bfe4){return _0x19bfe4[_0x1190('0x29')]()[_0x1190('0x28')](function(){_0x29911a[_0x1190('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x567291,_0x1b0df2){return function(_0x5ec68c){if(!_0x5ec68c){_0x567291[_0x1190('0x1b')](0x194);}return _0x5ec68c;};}function handleError(_0x3a660a,_0x465d35){_0x465d35=_0x465d35||0x1f4;return function(_0x1ee13e){logger['error'](_0x1ee13e[_0x1190('0x2a')]);if(_0x1ee13e[_0x1190('0x2b')]){delete _0x1ee13e['name'];}_0x3a660a[_0x1190('0x1c')](_0x465d35)[_0x1190('0x2c')](_0x1ee13e);};}exports[_0x1190('0x2d')]=function(_0x10cc28,_0x835974){var _0x16999c={},_0x5b8041={},_0x28869f={'count':0x0,'rows':[]};var _0x2da868=_[_0x1190('0x2e')](db[_0x1190('0x2f')][_0x1190('0x30')],function(_0x1aaca6){return{'name':_0x1aaca6[_0x1190('0x31')],'type':_0x1aaca6[_0x1190('0x32')][_0x1190('0x33')]};});_0x5b8041[_0x1190('0x34')]=_['map'](_0x2da868,_0x1190('0x2b'));_0x5b8041[_0x1190('0x35')]=_['keys'](_0x10cc28[_0x1190('0x35')]);_0x5b8041[_0x1190('0x36')]=_[_0x1190('0x37')](_0x5b8041[_0x1190('0x34')],_0x5b8041['query']);_0x16999c[_0x1190('0x38')]=_[_0x1190('0x37')](_0x5b8041['model'],qs[_0x1190('0x39')](_0x10cc28[_0x1190('0x35')][_0x1190('0x39')]));_0x16999c[_0x1190('0x38')]=_0x16999c['attributes']['length']?_0x16999c['attributes']:_0x5b8041[_0x1190('0x34')];if(!_0x10cc28[_0x1190('0x35')][_0x1190('0x3a')](_0x1190('0x3b'))){_0x16999c[_0x1190('0x21')]=qs[_0x1190('0x21')](_0x10cc28['query'][_0x1190('0x21')]);_0x16999c[_0x1190('0x1e')]=qs[_0x1190('0x1e')](_0x10cc28[_0x1190('0x35')][_0x1190('0x1e')]);}_0x16999c[_0x1190('0x3c')]=qs[_0x1190('0x3d')](_0x10cc28[_0x1190('0x35')][_0x1190('0x3d')]);_0x16999c['where']=qs[_0x1190('0x36')](_[_0x1190('0x3e')](_0x10cc28[_0x1190('0x35')],_0x5b8041[_0x1190('0x36')]),_0x2da868);if(_0x10cc28[_0x1190('0x35')]['filter']){_0x16999c[_0x1190('0x3f')]=_[_0x1190('0x40')](_0x16999c[_0x1190('0x3f')],{'$or':_[_0x1190('0x2e')](_0x2da868,function(_0x3d354b){if(_0x3d354b['type']!==_0x1190('0x41')){var _0x8035f3={};_0x8035f3[_0x3d354b[_0x1190('0x2b')]]={'$like':'%'+_0x10cc28['query'][_0x1190('0x42')]+'%'};return _0x8035f3;}})});}_0x16999c=_[_0x1190('0x40')]({},_0x16999c,_0x10cc28[_0x1190('0x43')]);var _0x390fd2={'where':_0x16999c[_0x1190('0x3f')]};return db[_0x1190('0x2f')][_0x1190('0x20')](_0x390fd2)[_0x1190('0x28')](function(_0x4d50ff){_0x28869f[_0x1190('0x20')]=_0x4d50ff;if(_0x10cc28['query'][_0x1190('0x44')]){_0x16999c['include']=[{'all':!![]}];}return db[_0x1190('0x2f')][_0x1190('0x45')](_0x16999c);})['then'](function(_0x4eaeae){_0x28869f[_0x1190('0x46')]=_0x4eaeae;return _0x28869f;})[_0x1190('0x28')](respondWithFilteredResult(_0x835974,_0x16999c))[_0x1190('0x47')](handleError(_0x835974,null));};exports[_0x1190('0x48')]=function(_0x995901,_0x109795){var _0x1163cb={'raw':!![],'where':{'id':_0x995901[_0x1190('0x49')]['id']}},_0x3f2d9b={};_0x3f2d9b['model']=_[_0x1190('0x4a')](db['Dynamics365Field'][_0x1190('0x30')]);_0x3f2d9b[_0x1190('0x35')]=_[_0x1190('0x4a')](_0x995901[_0x1190('0x35')]);_0x3f2d9b[_0x1190('0x36')]=_[_0x1190('0x37')](_0x3f2d9b[_0x1190('0x34')],_0x3f2d9b[_0x1190('0x35')]);_0x1163cb[_0x1190('0x38')]=_[_0x1190('0x37')](_0x3f2d9b[_0x1190('0x34')],qs[_0x1190('0x39')](_0x995901[_0x1190('0x35')]['fields']));_0x1163cb[_0x1190('0x38')]=_0x1163cb[_0x1190('0x38')][_0x1190('0x4b')]?_0x1163cb['attributes']:_0x3f2d9b[_0x1190('0x34')];if(_0x995901['query']['includeAll']){_0x1163cb['include']=[{'all':!![]}];}_0x1163cb=_[_0x1190('0x40')]({},_0x1163cb,_0x995901[_0x1190('0x43')]);return db[_0x1190('0x2f')][_0x1190('0x4c')](_0x1163cb)[_0x1190('0x28')](handleEntityNotFound(_0x109795,null))[_0x1190('0x28')](respondWithResult(_0x109795,null))['catch'](handleError(_0x109795,null));};exports[_0x1190('0x4d')]=function(_0x263eda,_0x1066fb){return db[_0x1190('0x2f')]['create'](_0x263eda[_0x1190('0x4e')],{})[_0x1190('0x28')](respondWithResult(_0x1066fb,0xc9))['catch'](handleError(_0x1066fb,null));};exports[_0x1190('0x27')]=function(_0x457579,_0x3ec2c6){if(_0x457579['body']['id']){delete _0x457579['body']['id'];}return db['Dynamics365Field']['find']({'where':{'id':_0x457579['params']['id']}})[_0x1190('0x28')](handleEntityNotFound(_0x3ec2c6,null))[_0x1190('0x28')](saveUpdates(_0x457579[_0x1190('0x4e')],null))['then'](respondWithResult(_0x3ec2c6,null))[_0x1190('0x47')](handleError(_0x3ec2c6,null));};exports[_0x1190('0x29')]=function(_0x2242b6,_0x2e9760){return db[_0x1190('0x2f')][_0x1190('0x4c')]({'where':{'id':_0x2242b6[_0x1190('0x49')]['id']}})['then'](handleEntityNotFound(_0x2e9760,null))[_0x1190('0x28')](removeEntity(_0x2e9760,null))[_0x1190('0x47')](handleError(_0x2e9760,null));};
\ No newline at end of file
+var _0x6eb9=['catch','params','include','find','create','body','eml-format','zip-dir','fast-json-patch','moment','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','../../config/utils','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','error','name','send','index','map','Dynamics365Field','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','filter','options','includeAll','findAll','rows'];(function(_0x4b3d6e,_0x2b4e2d){var _0x593aa5=function(_0x5b5ba6){while(--_0x5b5ba6){_0x4b3d6e['push'](_0x4b3d6e['shift']());}};_0x593aa5(++_0x2b4e2d);}(_0x6eb9,0xe4));var _0x96eb=function(_0x28c6f1,_0x5b0cd9){_0x28c6f1=_0x28c6f1-0x0;var _0x45d430=_0x6eb9[_0x28c6f1];return _0x45d430;};'use strict';var emlformat=require(_0x96eb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x96eb('0x1'));var jsonpatch=require(_0x96eb('0x2'));var rp=require('request-promise');var moment=require(_0x96eb('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x96eb('0x4'));var path=require(_0x96eb('0x5'));var sox=require(_0x96eb('0x6'));var csv=require(_0x96eb('0x7'));var ejs=require(_0x96eb('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x96eb('0x9'));var squel=require(_0x96eb('0xa'));var crypto=require(_0x96eb('0xb'));var jsforce=require(_0x96eb('0xc'));var deskjs=require(_0x96eb('0xd'));var toCsv=require(_0x96eb('0x7'));var querystring=require(_0x96eb('0xe'));var Papa=require(_0x96eb('0xf'));var Redis=require(_0x96eb('0x10'));var authService=require(_0x96eb('0x11'));var qs=require(_0x96eb('0x12'));var as=require(_0x96eb('0x13'));var hardwareService=require(_0x96eb('0x14'));var logger=require(_0x96eb('0x15'))('api');var utils=require(_0x96eb('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x96eb('0x17'))['db'];function respondWithStatusCode(_0x3fcf2c,_0x5c371d){_0x5c371d=_0x5c371d||0xcc;return function(_0x34c944){if(_0x34c944){return _0x3fcf2c[_0x96eb('0x18')](_0x5c371d);}return _0x3fcf2c['status'](_0x5c371d)[_0x96eb('0x19')]();};}function respondWithResult(_0x97a8a0,_0xaf6165){_0xaf6165=_0xaf6165||0xc8;return function(_0x1fa4a2){if(_0x1fa4a2){return _0x97a8a0[_0x96eb('0x1a')](_0xaf6165)['json'](_0x1fa4a2);}};}function respondWithFilteredResult(_0x454a0b,_0x4a20e1){return function(_0x25c124){if(_0x25c124){var _0x4e4dcf=typeof _0x4a20e1[_0x96eb('0x1b')]===_0x96eb('0x1c')&&typeof _0x4a20e1[_0x96eb('0x1d')]===_0x96eb('0x1c');var _0x41b8bf=_0x25c124['count'];var _0x5cbec7=_0x4e4dcf?0x0:_0x4a20e1[_0x96eb('0x1b')];var _0x122299=_0x4e4dcf?_0x25c124[_0x96eb('0x1e')]:_0x4a20e1[_0x96eb('0x1b')]+_0x4a20e1['limit'];var _0x1c5231;if(_0x122299>=_0x41b8bf){_0x122299=_0x41b8bf;_0x1c5231=0xc8;}else{_0x1c5231=0xce;}_0x454a0b[_0x96eb('0x1a')](_0x1c5231);return _0x454a0b[_0x96eb('0x1f')](_0x96eb('0x20'),_0x5cbec7+'-'+_0x122299+'/'+_0x41b8bf)[_0x96eb('0x21')](_0x25c124);}return null;};}function patchUpdates(_0x305a41){return function(_0x268292){try{jsonpatch[_0x96eb('0x22')](_0x268292,_0x305a41,!![]);}catch(_0x220d1d){return BPromise[_0x96eb('0x23')](_0x220d1d);}return _0x268292['save']();};}function saveUpdates(_0x1400e1,_0x5546c6){return function(_0x31a83c){if(_0x31a83c){return _0x31a83c[_0x96eb('0x24')](_0x1400e1)[_0x96eb('0x25')](function(_0x50cb94){return _0x50cb94;});}return null;};}function removeEntity(_0x1a9f18,_0x1d7e9c){return function(_0x10a121){if(_0x10a121){return _0x10a121[_0x96eb('0x26')]()[_0x96eb('0x25')](function(){_0x1a9f18['status'](0xcc)[_0x96eb('0x19')]();});}};}function handleEntityNotFound(_0x58e273,_0x111180){return function(_0x5576cc){if(!_0x5576cc){_0x58e273['sendStatus'](0x194);}return _0x5576cc;};}function handleError(_0x3e56d1,_0x1d978d){_0x1d978d=_0x1d978d||0x1f4;return function(_0x40d329){logger[_0x96eb('0x27')](_0x40d329['stack']);if(_0x40d329[_0x96eb('0x28')]){delete _0x40d329[_0x96eb('0x28')];}_0x3e56d1[_0x96eb('0x1a')](_0x1d978d)[_0x96eb('0x29')](_0x40d329);};}exports[_0x96eb('0x2a')]=function(_0x35cac0,_0x3063a3){var _0x145c19={},_0x19545a={},_0x5d6577={'count':0x0,'rows':[]};var _0x487e95=_[_0x96eb('0x2b')](db[_0x96eb('0x2c')][_0x96eb('0x2d')],function(_0x3f251f){return{'name':_0x3f251f['fieldName'],'type':_0x3f251f['type'][_0x96eb('0x2e')]};});_0x19545a[_0x96eb('0x2f')]=_[_0x96eb('0x2b')](_0x487e95,_0x96eb('0x28'));_0x19545a[_0x96eb('0x30')]=_[_0x96eb('0x31')](_0x35cac0['query']);_0x19545a[_0x96eb('0x32')]=_[_0x96eb('0x33')](_0x19545a[_0x96eb('0x2f')],_0x19545a[_0x96eb('0x30')]);_0x145c19[_0x96eb('0x34')]=_['intersection'](_0x19545a[_0x96eb('0x2f')],qs[_0x96eb('0x35')](_0x35cac0['query'][_0x96eb('0x35')]));_0x145c19[_0x96eb('0x34')]=_0x145c19[_0x96eb('0x34')][_0x96eb('0x36')]?_0x145c19[_0x96eb('0x34')]:_0x19545a[_0x96eb('0x2f')];if(!_0x35cac0[_0x96eb('0x30')][_0x96eb('0x37')](_0x96eb('0x38'))){_0x145c19[_0x96eb('0x1d')]=qs[_0x96eb('0x1d')](_0x35cac0[_0x96eb('0x30')][_0x96eb('0x1d')]);_0x145c19[_0x96eb('0x1b')]=qs[_0x96eb('0x1b')](_0x35cac0[_0x96eb('0x30')][_0x96eb('0x1b')]);}_0x145c19[_0x96eb('0x39')]=qs['sort'](_0x35cac0['query'][_0x96eb('0x3a')]);_0x145c19[_0x96eb('0x3b')]=qs[_0x96eb('0x32')](_[_0x96eb('0x3c')](_0x35cac0[_0x96eb('0x30')],_0x19545a['filters']),_0x487e95);if(_0x35cac0[_0x96eb('0x30')]['filter']){_0x145c19[_0x96eb('0x3b')]=_[_0x96eb('0x3d')](_0x145c19[_0x96eb('0x3b')],{'$or':_[_0x96eb('0x2b')](_0x487e95,function(_0x5aeda7){if(_0x5aeda7[_0x96eb('0x3e')]!=='VIRTUAL'){var _0x5e8a6b={};_0x5e8a6b[_0x5aeda7['name']]={'$like':'%'+_0x35cac0[_0x96eb('0x30')][_0x96eb('0x3f')]+'%'};return _0x5e8a6b;}})});}_0x145c19=_['merge']({},_0x145c19,_0x35cac0[_0x96eb('0x40')]);var _0x29b958={'where':_0x145c19[_0x96eb('0x3b')]};return db[_0x96eb('0x2c')][_0x96eb('0x1e')](_0x29b958)['then'](function(_0x8a7fc0){_0x5d6577[_0x96eb('0x1e')]=_0x8a7fc0;if(_0x35cac0['query'][_0x96eb('0x41')]){_0x145c19['include']=[{'all':!![]}];}return db[_0x96eb('0x2c')][_0x96eb('0x42')](_0x145c19);})[_0x96eb('0x25')](function(_0x8d2c4f){_0x5d6577[_0x96eb('0x43')]=_0x8d2c4f;return _0x5d6577;})[_0x96eb('0x25')](respondWithFilteredResult(_0x3063a3,_0x145c19))[_0x96eb('0x44')](handleError(_0x3063a3,null));};exports['show']=function(_0x154389,_0x4e9be8){var _0x42635f={'raw':!![],'where':{'id':_0x154389[_0x96eb('0x45')]['id']}},_0x4d65d6={};_0x4d65d6[_0x96eb('0x2f')]=_[_0x96eb('0x31')](db[_0x96eb('0x2c')][_0x96eb('0x2d')]);_0x4d65d6[_0x96eb('0x30')]=_[_0x96eb('0x31')](_0x154389[_0x96eb('0x30')]);_0x4d65d6[_0x96eb('0x32')]=_['intersection'](_0x4d65d6[_0x96eb('0x2f')],_0x4d65d6[_0x96eb('0x30')]);_0x42635f['attributes']=_['intersection'](_0x4d65d6['model'],qs[_0x96eb('0x35')](_0x154389[_0x96eb('0x30')]['fields']));_0x42635f[_0x96eb('0x34')]=_0x42635f[_0x96eb('0x34')][_0x96eb('0x36')]?_0x42635f[_0x96eb('0x34')]:_0x4d65d6[_0x96eb('0x2f')];if(_0x154389[_0x96eb('0x30')][_0x96eb('0x41')]){_0x42635f[_0x96eb('0x46')]=[{'all':!![]}];}_0x42635f=_[_0x96eb('0x3d')]({},_0x42635f,_0x154389[_0x96eb('0x40')]);return db[_0x96eb('0x2c')][_0x96eb('0x47')](_0x42635f)[_0x96eb('0x25')](handleEntityNotFound(_0x4e9be8,null))[_0x96eb('0x25')](respondWithResult(_0x4e9be8,null))['catch'](handleError(_0x4e9be8,null));};exports['create']=function(_0x2a646b,_0x5d14f1){return db['Dynamics365Field'][_0x96eb('0x48')](_0x2a646b[_0x96eb('0x49')],{})[_0x96eb('0x25')](respondWithResult(_0x5d14f1,0xc9))[_0x96eb('0x44')](handleError(_0x5d14f1,null));};exports[_0x96eb('0x24')]=function(_0xe87849,_0x57f25a){if(_0xe87849[_0x96eb('0x49')]['id']){delete _0xe87849[_0x96eb('0x49')]['id'];}return db[_0x96eb('0x2c')][_0x96eb('0x47')]({'where':{'id':_0xe87849[_0x96eb('0x45')]['id']}})[_0x96eb('0x25')](handleEntityNotFound(_0x57f25a,null))[_0x96eb('0x25')](saveUpdates(_0xe87849[_0x96eb('0x49')],null))[_0x96eb('0x25')](respondWithResult(_0x57f25a,null))[_0x96eb('0x44')](handleError(_0x57f25a,null));};exports[_0x96eb('0x26')]=function(_0x516b53,_0x4b1d1c){return db['Dynamics365Field'][_0x96eb('0x47')]({'where':{'id':_0x516b53['params']['id']}})[_0x96eb('0x25')](handleEntityNotFound(_0x4b1d1c,null))[_0x96eb('0x25')](removeEntity(_0x4b1d1c,null))[_0x96eb('0x44')](handleError(_0x4b1d1c,null));};
\ No newline at end of file
index 31d82be..6bf1a6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7767=['int_dynamics365_fields','dynamics365_unique_index','lodash','../../config/logger','api','moment','bluebird','path','../../config/environment','exports','define','Dynamics365Field'];(function(_0x2bcc3b,_0x2f6cb5){var _0x38f336=function(_0x1e8d3d){while(--_0x1e8d3d){_0x2bcc3b['push'](_0x2bcc3b['shift']());}};_0x38f336(++_0x2f6cb5);}(_0x7767,0x6e));var _0x7776=function(_0x45f951,_0x2750c8){_0x45f951=_0x45f951-0x0;var _0x24756c=_0x7767[_0x45f951];return _0x24756c;};'use strict';var _=require(_0x7776('0x0'));var util=require('util');var logger=require(_0x7776('0x1'))(_0x7776('0x2'));var moment=require(_0x7776('0x3'));var BPromise=require(_0x7776('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7776('0x5'));var rimraf=require('rimraf');var config=require(_0x7776('0x6'));var attributes=require('./intDynamics365Field.attributes');module[_0x7776('0x7')]=function(_0x1e7a66,_0x51c7c1){return _0x1e7a66[_0x7776('0x8')](_0x7776('0x9'),attributes,{'tableName':_0x7776('0xa'),'paranoid':![],'indexes':[{'name':_0x7776('0xb'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4800=['api','moment','bluebird','request-promise','path','../../config/environment','define','Dynamics365Field','int_dynamics365_fields','lodash','../../config/logger'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x4800,0x8d));var _0x0480=function(_0x215e5f,_0x321e4f){_0x215e5f=_0x215e5f-0x0;var _0x4ba505=_0x4800[_0x215e5f];return _0x4ba505;};'use strict';var _=require(_0x0480('0x0'));var util=require('util');var logger=require(_0x0480('0x1'))(_0x0480('0x2'));var moment=require(_0x0480('0x3'));var BPromise=require(_0x0480('0x4'));var rp=require(_0x0480('0x5'));var fs=require('fs');var path=require(_0x0480('0x6'));var rimraf=require('rimraf');var config=require(_0x0480('0x7'));var attributes=require('./intDynamics365Field.attributes');module['exports']=function(_0x27d678,_0x358486){return _0x27d678[_0x0480('0x8')](_0x0480('0x9'),attributes,{'tableName':_0x0480('0xa'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index d6818ef..55014e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d77=['jayson/promise','client','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment'];(function(_0x5de5fa,_0xff49b8){var _0x510366=function(_0x1b6d84){while(--_0x1b6d84){_0x5de5fa['push'](_0x5de5fa['shift']());}};_0x510366(++_0xff49b8);}(_0x7d77,0xa8));var _0x77d7=function(_0x4b267e,_0x1c72f4){_0x4b267e=_0x4b267e-0x0;var _0x1ace17=_0x7d77[_0x4b267e];return _0x1ace17;};'use strict';var _=require(_0x77d7('0x0'));var util=require(_0x77d7('0x1'));var moment=require(_0x77d7('0x2'));var BPromise=require(_0x77d7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x77d7('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x77d7('0x5'))(_0x77d7('0x6'));var config=require(_0x77d7('0x7'));var jayson=require(_0x77d7('0x8'));var client=jayson[_0x77d7('0x9')][_0x77d7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1a2024,_0x18e7bb,_0x4125b5){return new BPromise(function(_0x5093e8,_0x3e30c2){return client[_0x77d7('0xb')](_0x1a2024,_0x4125b5)[_0x77d7('0xc')](function(_0xa8adf6){logger[_0x77d7('0xd')](_0x77d7('0xe'),_0x18e7bb,_0x77d7('0xf'));logger[_0x77d7('0x10')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x18e7bb,_0x77d7('0xf'),JSON['stringify'](_0xa8adf6));if(_0xa8adf6[_0x77d7('0x11')]){if(_0xa8adf6['error'][_0x77d7('0x12')]===0x1f4){logger[_0x77d7('0x11')]('Dynamics365Field,\x20%s,\x20%s',_0x18e7bb,_0xa8adf6['error'][_0x77d7('0x13')]);return _0x3e30c2(_0xa8adf6[_0x77d7('0x11')][_0x77d7('0x13')]);}logger[_0x77d7('0x11')](_0x77d7('0xe'),_0x18e7bb,_0xa8adf6[_0x77d7('0x11')]['message']);return _0x5093e8(_0xa8adf6[_0x77d7('0x11')]['message']);}else{logger[_0x77d7('0xd')]('Dynamics365Field,\x20%s,\x20%s',_0x18e7bb,_0x77d7('0xf'));_0x5093e8(_0xa8adf6[_0x77d7('0x14')][_0x77d7('0x13')]);}})[_0x77d7('0x15')](function(_0x2f7f36){logger['error'](_0x77d7('0xe'),_0x18e7bb,_0x2f7f36);_0x3e30c2(_0x2f7f36);});});}
\ No newline at end of file
+var _0x692b=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis'];(function(_0x1040bd,_0x17e2f3){var _0x332cd1=function(_0x52c936){while(--_0x52c936){_0x1040bd['push'](_0x1040bd['shift']());}};_0x332cd1(++_0x17e2f3);}(_0x692b,0xf8));var _0xb692=function(_0x4063d3,_0x23f16e){_0x4063d3=_0x4063d3-0x0;var _0x545b5c=_0x692b[_0x4063d3];return _0x545b5c;};'use strict';var _=require(_0xb692('0x0'));var util=require(_0xb692('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb692('0x2'));var fs=require('fs');var Redis=require(_0xb692('0x3'));var db=require(_0xb692('0x4'))['db'];var utils=require(_0xb692('0x5'));var logger=require(_0xb692('0x6'))(_0xb692('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb692('0x8')][_0xb692('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2e0183,_0xdc447d,_0x4bff68){return new BPromise(function(_0x29e753,_0x541cdb){return client['request'](_0x2e0183,_0x4bff68)[_0xb692('0xa')](function(_0x4a4316){logger[_0xb692('0xb')](_0xb692('0xc'),_0xdc447d,_0xb692('0xd'));logger['debug'](_0xb692('0xe'),_0xdc447d,'request\x20sent',JSON[_0xb692('0xf')](_0x4a4316));if(_0x4a4316[_0xb692('0x10')]){if(_0x4a4316[_0xb692('0x10')][_0xb692('0x11')]===0x1f4){logger[_0xb692('0x10')]('Dynamics365Field,\x20%s,\x20%s',_0xdc447d,_0x4a4316[_0xb692('0x10')][_0xb692('0x12')]);return _0x541cdb(_0x4a4316[_0xb692('0x10')][_0xb692('0x12')]);}logger[_0xb692('0x10')](_0xb692('0xc'),_0xdc447d,_0x4a4316[_0xb692('0x10')][_0xb692('0x12')]);return _0x29e753(_0x4a4316[_0xb692('0x10')][_0xb692('0x12')]);}else{logger[_0xb692('0xb')](_0xb692('0xc'),_0xdc447d,_0xb692('0xd'));_0x29e753(_0x4a4316[_0xb692('0x13')]['message']);}})[_0xb692('0x14')](function(_0x27fea4){logger[_0xb692('0x10')]('Dynamics365Field,\x20%s,\x20%s',_0xdc447d,_0x27fea4);_0x541cdb(_0x27fea4);});});}
\ No newline at end of file
index c159dde..4e25e62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64b5=['getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations'];(function(_0x2bb9fa,_0x33f63d){var _0x18a068=function(_0x1b89c3){while(--_0x1b89c3){_0x2bb9fa['push'](_0x2bb9fa['shift']());}};_0x18a068(++_0x33f63d);}(_0x64b5,0x1ea));var _0x564b=function(_0x311968,_0x46fd9b){_0x311968=_0x311968-0x0;var _0x5325ef=_0x64b5[_0x311968];return _0x5325ef;};'use strict';var multer=require(_0x564b('0x0'));var util=require('util');var path=require(_0x564b('0x1'));var timeout=require(_0x564b('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x564b('0x3'));var auth=require(_0x564b('0x4'));var interaction=require(_0x564b('0x5'));var config=require(_0x564b('0x6'));var controller=require(_0x564b('0x7'));router['get']('/',auth[_0x564b('0x8')](),controller[_0x564b('0x9')]);router[_0x564b('0xa')](_0x564b('0xb'),auth[_0x564b('0x8')](),controller[_0x564b('0xc')]);router[_0x564b('0xa')](_0x564b('0xd'),auth[_0x564b('0x8')](),controller[_0x564b('0xe')]);router[_0x564b('0xa')](_0x564b('0xf'),auth[_0x564b('0x8')](),controller[_0x564b('0x10')]);router[_0x564b('0x11')]('/',auth[_0x564b('0x8')](),controller[_0x564b('0x12')]);router['post'](_0x564b('0xd'),auth[_0x564b('0x8')](),controller[_0x564b('0x13')]);router[_0x564b('0x14')](_0x564b('0xb'),auth[_0x564b('0x8')](),controller[_0x564b('0x15')]);router[_0x564b('0x16')](_0x564b('0xb'),auth[_0x564b('0x8')](),controller['destroy']);module[_0x564b('0x17')]=router;
\ No newline at end of file
+var _0x0c9b=['connect-timeout','express','Router','../../components/auth/service','../../config/environment','isAuthenticated','/:id','show','get','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','multer','util','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0c9b,0x9d));var _0xb0c9=function(_0x846429,_0x177edf){_0x846429=_0x846429-0x0;var _0x2533b0=_0x0c9b[_0x846429];return _0x2533b0;};'use strict';var multer=require(_0xb0c9('0x0'));var util=require(_0xb0c9('0x1'));var path=require(_0xb0c9('0x2'));var timeout=require(_0xb0c9('0x3'));var express=require(_0xb0c9('0x4'));var router=express[_0xb0c9('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb0c9('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb0c9('0x7'));var controller=require('./intFreshdeskAccount.controller');router['get']('/',auth[_0xb0c9('0x8')](),controller['index']);router['get'](_0xb0c9('0x9'),auth['isAuthenticated'](),controller[_0xb0c9('0xa')]);router[_0xb0c9('0xb')](_0xb0c9('0xc'),auth['isAuthenticated'](),controller[_0xb0c9('0xd')]);router[_0xb0c9('0xb')](_0xb0c9('0xe'),auth[_0xb0c9('0x8')](),controller[_0xb0c9('0xf')]);router[_0xb0c9('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0xb0c9('0x8')](),controller[_0xb0c9('0x11')]);router[_0xb0c9('0x12')]('/:id',auth[_0xb0c9('0x8')](),controller[_0xb0c9('0x13')]);router['delete'](_0xb0c9('0x9'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 04a98a4..1ff86e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2e3=['STRING','username','remoteUri','sequelize'];(function(_0x1b6563,_0x3bf0f1){var _0xdea7b8=function(_0x49e6c6){while(--_0x49e6c6){_0x1b6563['push'](_0x1b6563['shift']());}};_0xdea7b8(++_0x3bf0f1);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0xf2e3[_0x22b68a];return _0x1ac67a;};'use strict';var Sequelize=require(_0x3f2e('0x0'));module['exports']={'name':{'type':Sequelize[_0x3f2e('0x1')]},'description':{'type':Sequelize[_0x3f2e('0x1')]},'username':{'type':Sequelize[_0x3f2e('0x1')],'unique':_0x3f2e('0x2')},'apiKey':{'type':Sequelize[_0x3f2e('0x1')]},'remoteUri':{'type':Sequelize[_0x3f2e('0x1')],'unique':_0x3f2e('0x3')},'serverUrl':{'type':Sequelize[_0x3f2e('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xb016=['remoteUri','sequelize','exports','STRING'];(function(_0x217c2e,_0x358f06){var _0x22b7d8=function(_0x111c48){while(--_0x111c48){_0x217c2e['push'](_0x217c2e['shift']());}};_0x22b7d8(++_0x358f06);}(_0xb016,0x159));var _0x6b01=function(_0x1fb07e,_0x1a1d86){_0x1fb07e=_0x1fb07e-0x0;var _0x4ae019=_0xb016[_0x1fb07e];return _0x4ae019;};'use strict';var Sequelize=require(_0x6b01('0x0'));module[_0x6b01('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x6b01('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0x6b01('0x2')]},'remoteUri':{'type':Sequelize[_0x6b01('0x2')],'unique':_0x6b01('0x3')},'serverUrl':{'type':Sequelize[_0x6b01('0x2')],'allowNull':![]}};
\ No newline at end of file
index 87ea419..bf5e394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde6f=['toString','base64','requester','subject','agent','description','priority','group','source','company','remove','includes','custom_text','label','default','capitalize','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','statusCode','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','status','end','limit','count','offset','set','Content-Range','json','apply','save','update','destroy','sendStatus','error','name','send','map','rawAttributes','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','type','VIRTUAL','options','then','includeAll','include','FreshdeskAccount','findAll','rows','catch','show','keys','find','create','body','params','getConfigurations','findOne','FreshdeskConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','lastIndexOf','GET','format','%s:X'];(function(_0x279279,_0x5902bc){var _0x41ae13=function(_0x3923cd){while(--_0x3923cd){_0x279279['push'](_0x279279['shift']());}};_0x41ae13(++_0x5902bc);}(_0xde6f,0x84));var _0xfde6=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xde6f[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfde6('0x0'));var jsonpatch=require(_0xfde6('0x1'));var rp=require(_0xfde6('0x2'));var moment=require('moment');var BPromise=require(_0xfde6('0x3'));var Mustache=require(_0xfde6('0x4'));var util=require(_0xfde6('0x5'));var path=require(_0xfde6('0x6'));var sox=require(_0xfde6('0x7'));var csv=require(_0xfde6('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfde6('0x9'));var squel=require(_0xfde6('0xa'));var crypto=require(_0xfde6('0xb'));var jsforce=require(_0xfde6('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xfde6('0x8'));var querystring=require(_0xfde6('0xd'));var Papa=require(_0xfde6('0xe'));var Redis=require('ioredis');var authService=require(_0xfde6('0xf'));var qs=require(_0xfde6('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfde6('0x11'))(_0xfde6('0x12'));var utils=require(_0xfde6('0x13'));var config=require(_0xfde6('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xfde6('0x15'))['db'];var integrations=require(_0xfde6('0x16'));function respondWithStatusCode(_0x3a3776,_0x1c5ade){_0x1c5ade=_0x1c5ade||0xcc;return function(_0x13da60){if(_0x13da60){return _0x3a3776['sendStatus'](_0x1c5ade);}return _0x3a3776[_0xfde6('0x17')](_0x1c5ade)[_0xfde6('0x18')]();};}function respondWithResult(_0x5d129c,_0x8237f4){_0x8237f4=_0x8237f4||0xc8;return function(_0x35f5a4){if(_0x35f5a4){return _0x5d129c[_0xfde6('0x17')](_0x8237f4)['json'](_0x35f5a4);}};}function respondWithFilteredResult(_0x159254,_0xcd2776){return function(_0x101ea8){if(_0x101ea8){var _0x17d5e6=typeof _0xcd2776['offset']==='undefined'&&typeof _0xcd2776[_0xfde6('0x19')]==='undefined';var _0x799ed9=_0x101ea8[_0xfde6('0x1a')];var _0x480e5f=_0x17d5e6?0x0:_0xcd2776[_0xfde6('0x1b')];var _0x55195f=_0x17d5e6?_0x101ea8[_0xfde6('0x1a')]:_0xcd2776[_0xfde6('0x1b')]+_0xcd2776[_0xfde6('0x19')];var _0x39b235;if(_0x55195f>=_0x799ed9){_0x55195f=_0x799ed9;_0x39b235=0xc8;}else{_0x39b235=0xce;}_0x159254[_0xfde6('0x17')](_0x39b235);return _0x159254[_0xfde6('0x1c')](_0xfde6('0x1d'),_0x480e5f+'-'+_0x55195f+'/'+_0x799ed9)[_0xfde6('0x1e')](_0x101ea8);}return null;};}function patchUpdates(_0x1a4076){return function(_0x599c33){try{jsonpatch[_0xfde6('0x1f')](_0x599c33,_0x1a4076,!![]);}catch(_0x40644b){return BPromise['reject'](_0x40644b);}return _0x599c33[_0xfde6('0x20')]();};}function saveUpdates(_0x458cfc,_0x4ff8e2){return function(_0x2b2a6b){if(_0x2b2a6b){return _0x2b2a6b[_0xfde6('0x21')](_0x458cfc)['then'](function(_0x56664c){return _0x56664c;});}return null;};}function removeEntity(_0x2c3c4d,_0xc18655){return function(_0x4bc2c2){if(_0x4bc2c2){return _0x4bc2c2[_0xfde6('0x22')]()['then'](function(){_0x2c3c4d['status'](0xcc)[_0xfde6('0x18')]();});}};}function handleEntityNotFound(_0x3f2360,_0x62e9b8){return function(_0x207c0e){if(!_0x207c0e){_0x3f2360[_0xfde6('0x23')](0x194);}return _0x207c0e;};}function handleError(_0x3304d6,_0x4f1215){_0x4f1215=_0x4f1215||0x1f4;return function(_0xaa78f7){logger[_0xfde6('0x24')](_0xaa78f7['stack']);if(_0xaa78f7[_0xfde6('0x25')]){delete _0xaa78f7['name'];}_0x3304d6[_0xfde6('0x17')](_0x4f1215)[_0xfde6('0x26')](_0xaa78f7);};}exports['index']=function(_0x470b50,_0x10923b){var _0x54e872={},_0x43c043={},_0x3a7843={'count':0x0,'rows':[]};var _0x49fd9c=_[_0xfde6('0x27')](db['FreshdeskAccount'][_0xfde6('0x28')],function(_0x584476){return{'name':_0x584476['fieldName'],'type':_0x584476['type'][_0xfde6('0x29')]};});_0x43c043[_0xfde6('0x2a')]=_[_0xfde6('0x27')](_0x49fd9c,_0xfde6('0x25'));_0x43c043[_0xfde6('0x2b')]=_['keys'](_0x470b50['query']);_0x43c043['filters']=_[_0xfde6('0x2c')](_0x43c043[_0xfde6('0x2a')],_0x43c043[_0xfde6('0x2b')]);_0x54e872[_0xfde6('0x2d')]=_[_0xfde6('0x2c')](_0x43c043[_0xfde6('0x2a')],qs[_0xfde6('0x2e')](_0x470b50[_0xfde6('0x2b')][_0xfde6('0x2e')]));_0x54e872['attributes']=_0x54e872[_0xfde6('0x2d')][_0xfde6('0x2f')]?_0x54e872[_0xfde6('0x2d')]:_0x43c043[_0xfde6('0x2a')];if(!_0x470b50['query'][_0xfde6('0x30')]('nolimit')){_0x54e872[_0xfde6('0x19')]=qs[_0xfde6('0x19')](_0x470b50[_0xfde6('0x2b')][_0xfde6('0x19')]);_0x54e872['offset']=qs[_0xfde6('0x1b')](_0x470b50['query'][_0xfde6('0x1b')]);}_0x54e872[_0xfde6('0x31')]=qs['sort'](_0x470b50[_0xfde6('0x2b')][_0xfde6('0x32')]);_0x54e872[_0xfde6('0x33')]=qs[_0xfde6('0x34')](_['pick'](_0x470b50[_0xfde6('0x2b')],_0x43c043[_0xfde6('0x34')]),_0x49fd9c);if(_0x470b50[_0xfde6('0x2b')][_0xfde6('0x35')]){_0x54e872[_0xfde6('0x33')]=_[_0xfde6('0x36')](_0x54e872[_0xfde6('0x33')],{'$or':_[_0xfde6('0x27')](_0x49fd9c,function(_0x3716c6){if(_0x3716c6[_0xfde6('0x37')]!==_0xfde6('0x38')){var _0x266819={};_0x266819[_0x3716c6[_0xfde6('0x25')]]={'$like':'%'+_0x470b50[_0xfde6('0x2b')][_0xfde6('0x35')]+'%'};return _0x266819;}})});}_0x54e872=_[_0xfde6('0x36')]({},_0x54e872,_0x470b50[_0xfde6('0x39')]);var _0x59cfe2={'where':_0x54e872['where']};return db['FreshdeskAccount'][_0xfde6('0x1a')](_0x59cfe2)[_0xfde6('0x3a')](function(_0x507523){_0x3a7843[_0xfde6('0x1a')]=_0x507523;if(_0x470b50[_0xfde6('0x2b')][_0xfde6('0x3b')]){_0x54e872[_0xfde6('0x3c')]=[{'all':!![]}];}return db[_0xfde6('0x3d')][_0xfde6('0x3e')](_0x54e872);})[_0xfde6('0x3a')](function(_0x330f65){_0x3a7843[_0xfde6('0x3f')]=_0x330f65;return _0x3a7843;})[_0xfde6('0x3a')](respondWithFilteredResult(_0x10923b,_0x54e872))[_0xfde6('0x40')](handleError(_0x10923b,null));};exports[_0xfde6('0x41')]=function(_0x399213,_0x4d40f2){var _0x26e182={'raw':![],'where':{'id':_0x399213['params']['id']}},_0x23dd53={};_0x23dd53[_0xfde6('0x2a')]=_[_0xfde6('0x42')](db[_0xfde6('0x3d')][_0xfde6('0x28')]);_0x23dd53[_0xfde6('0x2b')]=_[_0xfde6('0x42')](_0x399213[_0xfde6('0x2b')]);_0x23dd53[_0xfde6('0x34')]=_[_0xfde6('0x2c')](_0x23dd53[_0xfde6('0x2a')],_0x23dd53[_0xfde6('0x2b')]);_0x26e182[_0xfde6('0x2d')]=_[_0xfde6('0x2c')](_0x23dd53[_0xfde6('0x2a')],qs[_0xfde6('0x2e')](_0x399213[_0xfde6('0x2b')]['fields']));_0x26e182[_0xfde6('0x2d')]=_0x26e182[_0xfde6('0x2d')][_0xfde6('0x2f')]?_0x26e182[_0xfde6('0x2d')]:_0x23dd53[_0xfde6('0x2a')];if(_0x399213['query'][_0xfde6('0x3b')]){_0x26e182[_0xfde6('0x3c')]=[{'all':!![]}];}_0x26e182=_[_0xfde6('0x36')]({},_0x26e182,_0x399213['options']);return db['FreshdeskAccount'][_0xfde6('0x43')](_0x26e182)[_0xfde6('0x3a')](handleEntityNotFound(_0x4d40f2,null))[_0xfde6('0x3a')](respondWithResult(_0x4d40f2,null))[_0xfde6('0x40')](handleError(_0x4d40f2,null));};exports[_0xfde6('0x44')]=function(_0x501894,_0x52d0c8){return db[_0xfde6('0x3d')][_0xfde6('0x44')](_0x501894[_0xfde6('0x45')],{})['then'](respondWithResult(_0x52d0c8,0xc9))[_0xfde6('0x40')](handleError(_0x52d0c8,null));};exports['update']=function(_0x1cb1c5,_0x2e9952){if(_0x1cb1c5[_0xfde6('0x45')]['id']){delete _0x1cb1c5[_0xfde6('0x45')]['id'];}return db[_0xfde6('0x3d')][_0xfde6('0x43')]({'where':{'id':_0x1cb1c5[_0xfde6('0x46')]['id']}})[_0xfde6('0x3a')](handleEntityNotFound(_0x2e9952,null))[_0xfde6('0x3a')](saveUpdates(_0x1cb1c5[_0xfde6('0x45')],null))['then'](respondWithResult(_0x2e9952,null))[_0xfde6('0x40')](handleError(_0x2e9952,null));};exports[_0xfde6('0x22')]=function(_0x52716c,_0xa649e7){return db[_0xfde6('0x3d')]['find']({'where':{'id':_0x52716c[_0xfde6('0x46')]['id']}})[_0xfde6('0x3a')](handleEntityNotFound(_0xa649e7,null))[_0xfde6('0x3a')](removeEntity(_0xa649e7,null))[_0xfde6('0x40')](handleError(_0xa649e7,null));};exports[_0xfde6('0x47')]=function(_0x22b79f,_0x9725,_0x369216){var _0xa012f2={};var _0x109428={};var _0x23f35f;var _0x507d55;return db['FreshdeskAccount'][_0xfde6('0x48')]({'where':{'id':_0x22b79f[_0xfde6('0x46')]['id']}})[_0xfde6('0x3a')](handleEntityNotFound(_0x9725,null))[_0xfde6('0x3a')](function(_0x344c8e){if(_0x344c8e){_0x23f35f=_0x344c8e;_0x109428[_0xfde6('0x2a')]=_[_0xfde6('0x42')](db[_0xfde6('0x49')][_0xfde6('0x28')]);_0x109428[_0xfde6('0x2b')]=_[_0xfde6('0x42')](_0x22b79f[_0xfde6('0x2b')]);_0x109428[_0xfde6('0x34')]=_[_0xfde6('0x2c')](_0x109428[_0xfde6('0x2a')],_0x109428[_0xfde6('0x2b')]);_0xa012f2[_0xfde6('0x2d')]=_['intersection'](_0x109428['model'],qs['fields'](_0x22b79f[_0xfde6('0x2b')][_0xfde6('0x2e')]));_0xa012f2[_0xfde6('0x2d')]=_0xa012f2[_0xfde6('0x2d')][_0xfde6('0x2f')]?_0xa012f2[_0xfde6('0x2d')]:_0x109428['model'];_0xa012f2['order']=qs[_0xfde6('0x32')](_0x22b79f['query']['sort']);_0xa012f2[_0xfde6('0x33')]=qs[_0xfde6('0x34')](_[_0xfde6('0x4a')](_0x22b79f[_0xfde6('0x2b')],_0x109428[_0xfde6('0x34')]));if(_0x22b79f[_0xfde6('0x2b')]['filter']){_0xa012f2['where']=_[_0xfde6('0x36')](_0xa012f2['where'],{'$or':_[_0xfde6('0x27')](_0xa012f2['attributes'],function(_0x4751a8){var _0x295276={};_0x295276[_0x4751a8]={'$like':'%'+_0x22b79f[_0xfde6('0x2b')][_0xfde6('0x35')]+'%'};return _0x295276;})});}_0xa012f2=_[_0xfde6('0x36')]({},_0xa012f2,_0x22b79f[_0xfde6('0x39')]);return _0x23f35f[_0xfde6('0x47')](_0xa012f2);}})[_0xfde6('0x3a')](function(_0x4ebd9){if(_0x4ebd9){_0x507d55=_0x4ebd9[_0xfde6('0x2f')];if(!_0x22b79f['query'][_0xfde6('0x30')]('nolimit')){_0xa012f2[_0xfde6('0x19')]=qs[_0xfde6('0x19')](_0x22b79f[_0xfde6('0x2b')][_0xfde6('0x19')]);_0xa012f2['offset']=qs[_0xfde6('0x1b')](_0x22b79f['query'][_0xfde6('0x1b')]);}return _0x23f35f[_0xfde6('0x47')](_0xa012f2);}})[_0xfde6('0x3a')](function(_0x5aa2d6){if(_0x5aa2d6){return _0x5aa2d6?{'count':_0x507d55,'rows':_0x5aa2d6}:null;}})[_0xfde6('0x3a')](respondWithResult(_0x9725,null))[_0xfde6('0x40')](handleError(_0x9725,null));};exports[_0xfde6('0x4b')]=function(_0x43488f,_0x3066b9,_0x3c29e2){if(_0x43488f[_0xfde6('0x45')]['id']){delete _0x43488f['body']['id'];}return db[_0xfde6('0x3d')][_0xfde6('0x48')]({'where':{'id':_0x43488f[_0xfde6('0x46')]['id']}})[_0xfde6('0x3a')](handleEntityNotFound(_0x3066b9,null))[_0xfde6('0x3a')](function(_0x2c6ade){if(_0x2c6ade){_0x43488f[_0xfde6('0x45')][_0xfde6('0x4c')]=_0x2c6ade['id'];_0x43488f[_0xfde6('0x45')][_0xfde6('0x4d')]=integrations[_0xfde6('0x4e')](_0x43488f[_0xfde6('0x45')][_0xfde6('0x4f')],_0x43488f[_0xfde6('0x45')][_0xfde6('0x37')]);_0x43488f['body'][_0xfde6('0x50')]=integrations['getDescriptions'](_0x43488f['body']['channel'],_0x43488f['body'][_0xfde6('0x37')]);return db['FreshdeskConfiguration']['create'](_0x43488f['body'],{'include':[{'model':db[_0xfde6('0x51')],'as':_0xfde6('0x4d')},{'model':db['FreshdeskField'],'as':_0xfde6('0x50')}]});}return null;})[_0xfde6('0x3a')](respondWithResult(_0x3066b9,null))[_0xfde6('0x40')](handleError(_0x3066b9,null));};exports[_0xfde6('0x52')]=function(_0x578ea7,_0x1210f9,_0x42453a){var _0x2821d2='';return db[_0xfde6('0x3d')][_0xfde6('0x48')]({'where':{'id':_0x578ea7[_0xfde6('0x46')]['id']},'attributes':['id',_0xfde6('0x53'),_0xfde6('0x54')]})[_0xfde6('0x3a')](handleEntityNotFound(_0x1210f9,null))[_0xfde6('0x3a')](function(_0x232447){if(_0x232447){_0x2821d2=_0x232447[_0xfde6('0x53')];var _0x86c7a9=_0x2821d2[_0xfde6('0x55')](-0x1);if(_0x86c7a9==='/'){_0x2821d2=_0x2821d2['substring'](0x0,_0x2821d2[_0xfde6('0x56')](_0x86c7a9));}return rp({'method':_0xfde6('0x57'),'uri':util[_0xfde6('0x58')]('%s/%s',_0x2821d2,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0xfde6('0x58')]('Basic\x20%s',new Buffer(util[_0xfde6('0x58')](_0xfde6('0x59'),_0x232447[_0xfde6('0x54')]))[_0xfde6('0x5a')](_0xfde6('0x5b')))},'json':!![]});}})[_0xfde6('0x3a')](function(_0x2a1cb0){if(_0x2a1cb0){var _0x17fd77=[_0xfde6('0x5c'),_0xfde6('0x5d'),_0xfde6('0x5e'),_0xfde6('0x5f'),_0xfde6('0x17'),_0xfde6('0x60'),_0xfde6('0x61'),_0xfde6('0x62'),'ticket_type',_0xfde6('0x61'),_0xfde6('0x63')];_[_0xfde6('0x64')](_0x2a1cb0,function(_0x4b3a7d){return _0x17fd77[_0xfde6('0x65')](_0x4b3a7d[_0xfde6('0x25')])||!_0x4b3a7d['default']&&_0x4b3a7d[_0xfde6('0x37')]!==_0xfde6('0x66')&&_0x4b3a7d[_0xfde6('0x37')]!=='custom_dropdown';});return{'count':_0x2a1cb0['length'],'rows':_[_0xfde6('0x27')](_0x2a1cb0,function(_0x2a8758){return{'id':_0x2a8758['name'],'name':_0x2a8758[_0xfde6('0x67')],'custom':!_0x2a8758[_0xfde6('0x68')],'options':_0x2a8758['choices']?_['map'](_0x2a8758['choices'],function(_0x5cb7ff){return{'name':_[_0xfde6('0x69')](_0x5cb7ff),'value':_0x5cb7ff};}):[]};})};}})[_0xfde6('0x3a')](respondWithResult(_0x1210f9,null))[_0xfde6('0x40')](function(_0x24e9bf){var _0x3d67d1=_0x578ea7[_0xfde6('0x2b')]['test']?0x1f4:_0x24e9bf['statusCode']||0x1f4;logger['error'](_0xfde6('0x6a'),_0xfde6('0x52'),_0x3d67d1,JSON[_0xfde6('0x6b')](_0x24e9bf));delete _0x24e9bf['name'];if(_0x3d67d1===0x191){_0x3d67d1=0x190;}_0x1210f9[_0xfde6('0x17')](_0x3d67d1)[_0xfde6('0x26')](_0x578ea7[_0xfde6('0x2b')][_0xfde6('0x6c')]?{'message':_0xfde6('0x6d'),'statusCode':_0x24e9bf[_0xfde6('0x6e')]}:_0x24e9bf);});};
\ No newline at end of file
+var _0xb16f=['body','getConfigurations','nolimit','findOne','AccountId','Subjects','type','Descriptions','channel','FreshdeskConfiguration','FreshdeskField','getFields','apiKey','remoteUri','slice','substring','lastIndexOf','GET','%s/%s','api/v2/ticket_fields','%s:X','base64','priority','group','source','ticket_type','company','default','custom_text','label','choices','capitalize','test','statusCode','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','lodash','crypto','desk.js','to-csv','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','destroy','then','sendStatus','error','stack','name','index','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','filter','merge','where','VIRTUAL','options','FreshdeskAccount','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create'];(function(_0x4be402,_0x3c4afb){var _0x161f0e=function(_0x10ac6f){while(--_0x10ac6f){_0x4be402['push'](_0x4be402['shift']());}};_0x161f0e(++_0x3c4afb);}(_0xb16f,0xf6));var _0xfb16=function(_0x15af0f,_0x5454ce){_0x15af0f=_0x15af0f-0x0;var _0x2bd1cb=_0xb16f[_0x15af0f];return _0x2bd1cb;};'use strict';var emlformat=require(_0xfb16('0x0'));var rimraf=require(_0xfb16('0x1'));var zipdir=require(_0xfb16('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfb16('0x3'));var moment=require(_0xfb16('0x4'));var BPromise=require(_0xfb16('0x5'));var Mustache=require(_0xfb16('0x6'));var util=require('util');var path=require(_0xfb16('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(_0xfb16('0x8'));var squel=require('squel');var crypto=require(_0xfb16('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xfb16('0xa'));var toCsv=require(_0xfb16('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfb16('0xc'));var qs=require(_0xfb16('0xd'));var as=require(_0xfb16('0xe'));var hardwareService=require(_0xfb16('0xf'));var logger=require(_0xfb16('0x10'))(_0xfb16('0x11'));var utils=require(_0xfb16('0x12'));var config=require(_0xfb16('0x13'));var licenseUtil=require(_0xfb16('0x14'));var db=require(_0xfb16('0x15'))['db'];var integrations=require(_0xfb16('0x16'));function respondWithStatusCode(_0x4f3a00,_0xd6eeee){_0xd6eeee=_0xd6eeee||0xcc;return function(_0x59ee42){if(_0x59ee42){return _0x4f3a00['sendStatus'](_0xd6eeee);}return _0x4f3a00[_0xfb16('0x17')](_0xd6eeee)[_0xfb16('0x18')]();};}function respondWithResult(_0x4cdc87,_0x507bcc){_0x507bcc=_0x507bcc||0xc8;return function(_0x321489){if(_0x321489){return _0x4cdc87[_0xfb16('0x17')](_0x507bcc)[_0xfb16('0x19')](_0x321489);}};}function respondWithFilteredResult(_0x1643cc,_0x28cb87){return function(_0xcf5a5){if(_0xcf5a5){var _0x11a5d0=typeof _0x28cb87[_0xfb16('0x1a')]===_0xfb16('0x1b')&&typeof _0x28cb87[_0xfb16('0x1c')]===_0xfb16('0x1b');var _0x394d5e=_0xcf5a5[_0xfb16('0x1d')];var _0x14d05e=_0x11a5d0?0x0:_0x28cb87['offset'];var _0x2b28ea=_0x11a5d0?_0xcf5a5[_0xfb16('0x1d')]:_0x28cb87[_0xfb16('0x1a')]+_0x28cb87['limit'];var _0x5e1ffd;if(_0x2b28ea>=_0x394d5e){_0x2b28ea=_0x394d5e;_0x5e1ffd=0xc8;}else{_0x5e1ffd=0xce;}_0x1643cc[_0xfb16('0x17')](_0x5e1ffd);return _0x1643cc[_0xfb16('0x1e')](_0xfb16('0x1f'),_0x14d05e+'-'+_0x2b28ea+'/'+_0x394d5e)['json'](_0xcf5a5);}return null;};}function patchUpdates(_0x193162){return function(_0x32f13f){try{jsonpatch[_0xfb16('0x20')](_0x32f13f,_0x193162,!![]);}catch(_0x509e70){return BPromise['reject'](_0x509e70);}return _0x32f13f['save']();};}function saveUpdates(_0x27203c,_0x354ef4){return function(_0x39ec10){if(_0x39ec10){return _0x39ec10[_0xfb16('0x21')](_0x27203c)['then'](function(_0x5814e9){return _0x5814e9;});}return null;};}function removeEntity(_0x8ef26c,_0x2aea90){return function(_0x2c1fa3){if(_0x2c1fa3){return _0x2c1fa3[_0xfb16('0x22')]()[_0xfb16('0x23')](function(){_0x8ef26c[_0xfb16('0x17')](0xcc)[_0xfb16('0x18')]();});}};}function handleEntityNotFound(_0x239633,_0x1335a3){return function(_0x360df5){if(!_0x360df5){_0x239633[_0xfb16('0x24')](0x194);}return _0x360df5;};}function handleError(_0x4c194a,_0x1ca17b){_0x1ca17b=_0x1ca17b||0x1f4;return function(_0x15f0e4){logger[_0xfb16('0x25')](_0x15f0e4[_0xfb16('0x26')]);if(_0x15f0e4[_0xfb16('0x27')]){delete _0x15f0e4['name'];}_0x4c194a[_0xfb16('0x17')](_0x1ca17b)['send'](_0x15f0e4);};}exports[_0xfb16('0x28')]=function(_0x21822b,_0xe1a799){var _0x1a92ce={},_0x19fb63={},_0x49d03e={'count':0x0,'rows':[]};var _0x1386d2=_['map'](db['FreshdeskAccount']['rawAttributes'],function(_0x29ebd8){return{'name':_0x29ebd8['fieldName'],'type':_0x29ebd8['type']['key']};});_0x19fb63[_0xfb16('0x29')]=_[_0xfb16('0x2a')](_0x1386d2,_0xfb16('0x27'));_0x19fb63[_0xfb16('0x2b')]=_[_0xfb16('0x2c')](_0x21822b[_0xfb16('0x2b')]);_0x19fb63[_0xfb16('0x2d')]=_[_0xfb16('0x2e')](_0x19fb63['model'],_0x19fb63[_0xfb16('0x2b')]);_0x1a92ce[_0xfb16('0x2f')]=_[_0xfb16('0x2e')](_0x19fb63['model'],qs[_0xfb16('0x30')](_0x21822b[_0xfb16('0x2b')][_0xfb16('0x30')]));_0x1a92ce[_0xfb16('0x2f')]=_0x1a92ce['attributes'][_0xfb16('0x31')]?_0x1a92ce['attributes']:_0x19fb63[_0xfb16('0x29')];if(!_0x21822b[_0xfb16('0x2b')][_0xfb16('0x32')]('nolimit')){_0x1a92ce[_0xfb16('0x1c')]=qs[_0xfb16('0x1c')](_0x21822b[_0xfb16('0x2b')][_0xfb16('0x1c')]);_0x1a92ce['offset']=qs['offset'](_0x21822b[_0xfb16('0x2b')]['offset']);}_0x1a92ce[_0xfb16('0x33')]=qs[_0xfb16('0x34')](_0x21822b[_0xfb16('0x2b')][_0xfb16('0x34')]);_0x1a92ce['where']=qs[_0xfb16('0x2d')](_['pick'](_0x21822b[_0xfb16('0x2b')],_0x19fb63[_0xfb16('0x2d')]),_0x1386d2);if(_0x21822b[_0xfb16('0x2b')][_0xfb16('0x35')]){_0x1a92ce['where']=_[_0xfb16('0x36')](_0x1a92ce[_0xfb16('0x37')],{'$or':_['map'](_0x1386d2,function(_0x294ad0){if(_0x294ad0['type']!==_0xfb16('0x38')){var _0x2c2965={};_0x2c2965[_0x294ad0[_0xfb16('0x27')]]={'$like':'%'+_0x21822b[_0xfb16('0x2b')][_0xfb16('0x35')]+'%'};return _0x2c2965;}})});}_0x1a92ce=_[_0xfb16('0x36')]({},_0x1a92ce,_0x21822b[_0xfb16('0x39')]);var _0x59df93={'where':_0x1a92ce['where']};return db[_0xfb16('0x3a')]['count'](_0x59df93)[_0xfb16('0x23')](function(_0x1336cd){_0x49d03e[_0xfb16('0x1d')]=_0x1336cd;if(_0x21822b['query']['includeAll']){_0x1a92ce[_0xfb16('0x3b')]=[{'all':!![]}];}return db[_0xfb16('0x3a')][_0xfb16('0x3c')](_0x1a92ce);})['then'](function(_0x16d9a9){_0x49d03e[_0xfb16('0x3d')]=_0x16d9a9;return _0x49d03e;})[_0xfb16('0x23')](respondWithFilteredResult(_0xe1a799,_0x1a92ce))[_0xfb16('0x3e')](handleError(_0xe1a799,null));};exports[_0xfb16('0x3f')]=function(_0x37266a,_0x554c5b){var _0x223045={'raw':![],'where':{'id':_0x37266a[_0xfb16('0x40')]['id']}},_0x2807bc={};_0x2807bc['model']=_['keys'](db[_0xfb16('0x3a')][_0xfb16('0x41')]);_0x2807bc['query']=_[_0xfb16('0x2c')](_0x37266a['query']);_0x2807bc[_0xfb16('0x2d')]=_['intersection'](_0x2807bc[_0xfb16('0x29')],_0x2807bc['query']);_0x223045['attributes']=_[_0xfb16('0x2e')](_0x2807bc[_0xfb16('0x29')],qs[_0xfb16('0x30')](_0x37266a['query']['fields']));_0x223045[_0xfb16('0x2f')]=_0x223045[_0xfb16('0x2f')][_0xfb16('0x31')]?_0x223045[_0xfb16('0x2f')]:_0x2807bc[_0xfb16('0x29')];if(_0x37266a[_0xfb16('0x2b')][_0xfb16('0x42')]){_0x223045['include']=[{'all':!![]}];}_0x223045=_['merge']({},_0x223045,_0x37266a[_0xfb16('0x39')]);return db[_0xfb16('0x3a')][_0xfb16('0x43')](_0x223045)[_0xfb16('0x23')](handleEntityNotFound(_0x554c5b,null))['then'](respondWithResult(_0x554c5b,null))[_0xfb16('0x3e')](handleError(_0x554c5b,null));};exports[_0xfb16('0x44')]=function(_0x44a792,_0x2413ce){return db['FreshdeskAccount'][_0xfb16('0x44')](_0x44a792[_0xfb16('0x45')],{})[_0xfb16('0x23')](respondWithResult(_0x2413ce,0xc9))[_0xfb16('0x3e')](handleError(_0x2413ce,null));};exports[_0xfb16('0x21')]=function(_0x3820d6,_0x1f0c12){if(_0x3820d6[_0xfb16('0x45')]['id']){delete _0x3820d6[_0xfb16('0x45')]['id'];}return db[_0xfb16('0x3a')][_0xfb16('0x43')]({'where':{'id':_0x3820d6[_0xfb16('0x40')]['id']}})['then'](handleEntityNotFound(_0x1f0c12,null))[_0xfb16('0x23')](saveUpdates(_0x3820d6[_0xfb16('0x45')],null))['then'](respondWithResult(_0x1f0c12,null))[_0xfb16('0x3e')](handleError(_0x1f0c12,null));};exports[_0xfb16('0x22')]=function(_0x3ac1f9,_0x3eee2c){return db[_0xfb16('0x3a')][_0xfb16('0x43')]({'where':{'id':_0x3ac1f9[_0xfb16('0x40')]['id']}})[_0xfb16('0x23')](handleEntityNotFound(_0x3eee2c,null))[_0xfb16('0x23')](removeEntity(_0x3eee2c,null))[_0xfb16('0x3e')](handleError(_0x3eee2c,null));};exports[_0xfb16('0x46')]=function(_0x260076,_0x5b286b,_0x46d242){var _0x2ee526={};var _0x197ff2={};var _0x50e398;var _0x401721;return db[_0xfb16('0x3a')]['findOne']({'where':{'id':_0x260076[_0xfb16('0x40')]['id']}})[_0xfb16('0x23')](handleEntityNotFound(_0x5b286b,null))[_0xfb16('0x23')](function(_0x2da37b){if(_0x2da37b){_0x50e398=_0x2da37b;_0x197ff2[_0xfb16('0x29')]=_[_0xfb16('0x2c')](db['FreshdeskConfiguration'][_0xfb16('0x41')]);_0x197ff2[_0xfb16('0x2b')]=_['keys'](_0x260076[_0xfb16('0x2b')]);_0x197ff2[_0xfb16('0x2d')]=_['intersection'](_0x197ff2[_0xfb16('0x29')],_0x197ff2['query']);_0x2ee526[_0xfb16('0x2f')]=_['intersection'](_0x197ff2[_0xfb16('0x29')],qs[_0xfb16('0x30')](_0x260076[_0xfb16('0x2b')]['fields']));_0x2ee526[_0xfb16('0x2f')]=_0x2ee526[_0xfb16('0x2f')][_0xfb16('0x31')]?_0x2ee526[_0xfb16('0x2f')]:_0x197ff2['model'];_0x2ee526[_0xfb16('0x33')]=qs[_0xfb16('0x34')](_0x260076[_0xfb16('0x2b')][_0xfb16('0x34')]);_0x2ee526['where']=qs[_0xfb16('0x2d')](_['pick'](_0x260076[_0xfb16('0x2b')],_0x197ff2[_0xfb16('0x2d')]));if(_0x260076[_0xfb16('0x2b')][_0xfb16('0x35')]){_0x2ee526[_0xfb16('0x37')]=_[_0xfb16('0x36')](_0x2ee526['where'],{'$or':_[_0xfb16('0x2a')](_0x2ee526['attributes'],function(_0x236da9){var _0x300349={};_0x300349[_0x236da9]={'$like':'%'+_0x260076[_0xfb16('0x2b')][_0xfb16('0x35')]+'%'};return _0x300349;})});}_0x2ee526=_[_0xfb16('0x36')]({},_0x2ee526,_0x260076['options']);return _0x50e398[_0xfb16('0x46')](_0x2ee526);}})['then'](function(_0x4e5fe7){if(_0x4e5fe7){_0x401721=_0x4e5fe7[_0xfb16('0x31')];if(!_0x260076[_0xfb16('0x2b')][_0xfb16('0x32')](_0xfb16('0x47'))){_0x2ee526[_0xfb16('0x1c')]=qs[_0xfb16('0x1c')](_0x260076[_0xfb16('0x2b')][_0xfb16('0x1c')]);_0x2ee526['offset']=qs[_0xfb16('0x1a')](_0x260076['query'][_0xfb16('0x1a')]);}return _0x50e398[_0xfb16('0x46')](_0x2ee526);}})[_0xfb16('0x23')](function(_0x5c0316){if(_0x5c0316){return _0x5c0316?{'count':_0x401721,'rows':_0x5c0316}:null;}})[_0xfb16('0x23')](respondWithResult(_0x5b286b,null))[_0xfb16('0x3e')](handleError(_0x5b286b,null));};exports['addConfiguration']=function(_0x406f0b,_0x217663,_0x5f3cdf){if(_0x406f0b[_0xfb16('0x45')]['id']){delete _0x406f0b['body']['id'];}return db[_0xfb16('0x3a')][_0xfb16('0x48')]({'where':{'id':_0x406f0b['params']['id']}})['then'](handleEntityNotFound(_0x217663,null))[_0xfb16('0x23')](function(_0x4ecdd8){if(_0x4ecdd8){_0x406f0b[_0xfb16('0x45')][_0xfb16('0x49')]=_0x4ecdd8['id'];_0x406f0b[_0xfb16('0x45')][_0xfb16('0x4a')]=integrations['getSubjects'](_0x406f0b[_0xfb16('0x45')]['channel'],_0x406f0b[_0xfb16('0x45')][_0xfb16('0x4b')]);_0x406f0b[_0xfb16('0x45')][_0xfb16('0x4c')]=integrations['getDescriptions'](_0x406f0b['body'][_0xfb16('0x4d')],_0x406f0b[_0xfb16('0x45')][_0xfb16('0x4b')]);return db[_0xfb16('0x4e')]['create'](_0x406f0b[_0xfb16('0x45')],{'include':[{'model':db[_0xfb16('0x4f')],'as':_0xfb16('0x4a')},{'model':db[_0xfb16('0x4f')],'as':_0xfb16('0x4c')}]});}return null;})[_0xfb16('0x23')](respondWithResult(_0x217663,null))['catch'](handleError(_0x217663,null));};exports[_0xfb16('0x50')]=function(_0x1b23e5,_0x3f2642,_0x22aa84){var _0x5e2707='';return db[_0xfb16('0x3a')][_0xfb16('0x48')]({'where':{'id':_0x1b23e5[_0xfb16('0x40')]['id']},'attributes':['id','remoteUri',_0xfb16('0x51')]})[_0xfb16('0x23')](handleEntityNotFound(_0x3f2642,null))[_0xfb16('0x23')](function(_0x16bb2d){if(_0x16bb2d){_0x5e2707=_0x16bb2d[_0xfb16('0x52')];var _0xbb96cd=_0x5e2707[_0xfb16('0x53')](-0x1);if(_0xbb96cd==='/'){_0x5e2707=_0x5e2707[_0xfb16('0x54')](0x0,_0x5e2707[_0xfb16('0x55')](_0xbb96cd));}return rp({'method':_0xfb16('0x56'),'uri':util['format'](_0xfb16('0x57'),_0x5e2707,_0xfb16('0x58')),'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(util['format'](_0xfb16('0x59'),_0x16bb2d['apiKey']))['toString'](_0xfb16('0x5a')))},'json':!![]});}})[_0xfb16('0x23')](function(_0x150b61){if(_0x150b61){var _0x430199=['requester','subject','agent','description',_0xfb16('0x17'),_0xfb16('0x5b'),_0xfb16('0x5c'),_0xfb16('0x5d'),_0xfb16('0x5e'),_0xfb16('0x5c'),_0xfb16('0x5f')];_['remove'](_0x150b61,function(_0x53da0a){return _0x430199['includes'](_0x53da0a[_0xfb16('0x27')])||!_0x53da0a[_0xfb16('0x60')]&&_0x53da0a['type']!==_0xfb16('0x61')&&_0x53da0a[_0xfb16('0x4b')]!=='custom_dropdown';});return{'count':_0x150b61['length'],'rows':_[_0xfb16('0x2a')](_0x150b61,function(_0x28ff0b){return{'id':_0x28ff0b[_0xfb16('0x27')],'name':_0x28ff0b[_0xfb16('0x62')],'custom':!_0x28ff0b[_0xfb16('0x60')],'options':_0x28ff0b['choices']?_[_0xfb16('0x2a')](_0x28ff0b[_0xfb16('0x63')],function(_0x56f037){return{'name':_[_0xfb16('0x64')](_0x56f037),'value':_0x56f037};}):[]};})};}})[_0xfb16('0x23')](respondWithResult(_0x3f2642,null))[_0xfb16('0x3e')](function(_0x322d42){var _0x1c0ce3=_0x1b23e5[_0xfb16('0x2b')][_0xfb16('0x65')]?0x1f4:_0x322d42[_0xfb16('0x66')]||0x1f4;logger[_0xfb16('0x25')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x1c0ce3,JSON['stringify'](_0x322d42));delete _0x322d42[_0xfb16('0x27')];if(_0x1c0ce3===0x191){_0x1c0ce3=0x190;}_0x3f2642['status'](_0x1c0ce3)[_0xfb16('0x67')](_0x1b23e5[_0xfb16('0x2b')]['test']?{'message':_0xfb16('0x68'),'statusCode':_0x322d42[_0xfb16('0x66')]}:_0x322d42);});};
\ No newline at end of file
index 209dafd..68066b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b78=['path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x2a1e56,_0x2a6c8e){var _0x4e1005=function(_0x524003){while(--_0x524003){_0x2a1e56['push'](_0x2a1e56['shift']());}};_0x4e1005(++_0x2a6c8e);}(_0x4b78,0x1c1));var _0x84b7=function(_0x31f353,_0xbc26e3){_0x31f353=_0x31f353-0x0;var _0x31fa17=_0x4b78[_0x31f353];return _0x31fa17;};'use strict';var _=require(_0x84b7('0x0'));var util=require(_0x84b7('0x1'));var logger=require(_0x84b7('0x2'))(_0x84b7('0x3'));var moment=require('moment');var BPromise=require(_0x84b7('0x4'));var rp=require(_0x84b7('0x5'));var fs=require('fs');var path=require(_0x84b7('0x6'));var rimraf=require(_0x84b7('0x7'));var config=require(_0x84b7('0x8'));var attributes=require(_0x84b7('0x9'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x2d9829,_0x2476d){return _0x2d9829[_0x84b7('0xa')](_0x84b7('0xb'),attributes,{'tableName':_0x84b7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4e70=['../../components/integrations/configuration','exports','define','FreshdeskAccount','lodash','api','bluebird','request-promise','rimraf','./intFreshdeskAccount.attributes'];(function(_0x22e197,_0x10f1e9){var _0x46d075=function(_0x1fa512){while(--_0x1fa512){_0x22e197['push'](_0x22e197['shift']());}};_0x46d075(++_0x10f1e9);}(_0x4e70,0xb8));var _0x04e7=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0x4e70[_0x4e9d3c];return _0x2d0825;};'use strict';var _=require(_0x04e7('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x04e7('0x1'));var moment=require('moment');var BPromise=require(_0x04e7('0x2'));var rp=require(_0x04e7('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x04e7('0x4'));var config=require('../../config/environment');var attributes=require(_0x04e7('0x5'));var integrations=require(_0x04e7('0x6'));module[_0x04e7('0x7')]=function(_0x23a4cc,_0x196365){return _0x23a4cc[_0x04e7('0x8')](_0x04e7('0x9'),attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9375457..18e2feb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a9c=['include','map','attributes','model','ShowFreshdeskAccount','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','limit'];(function(_0x5d8018,_0x588592){var _0x151ac4=function(_0x548679){while(--_0x548679){_0x5d8018['push'](_0x5d8018['shift']());}};_0x151ac4(++_0x588592);}(_0x4a9c,0xcc));var _0xc4a9=function(_0x1d12be,_0x2f6547){_0x1d12be=_0x1d12be-0x0;var _0x24d73c=_0x4a9c[_0x1d12be];return _0x24d73c;};'use strict';var _=require(_0xc4a9('0x0'));var util=require(_0xc4a9('0x1'));var moment=require(_0xc4a9('0x2'));var BPromise=require(_0xc4a9('0x3'));var rs=require(_0xc4a9('0x4'));var fs=require('fs');var Redis=require(_0xc4a9('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc4a9('0x6'));var logger=require(_0xc4a9('0x7'))(_0xc4a9('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc4a9('0x9')][_0xc4a9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x45f405,_0x569ce3,_0x49bbe0){return new BPromise(function(_0x2853c8,_0x57f8b5){return client['request'](_0x45f405,_0x49bbe0)[_0xc4a9('0xb')](function(_0x29272c){logger[_0xc4a9('0xc')](_0xc4a9('0xd'),_0x569ce3,_0xc4a9('0xe'));logger[_0xc4a9('0xf')](_0xc4a9('0x10'),_0x569ce3,_0xc4a9('0xe'),JSON[_0xc4a9('0x11')](_0x29272c));if(_0x29272c[_0xc4a9('0x12')]){if(_0x29272c[_0xc4a9('0x12')]['code']===0x1f4){logger[_0xc4a9('0x12')](_0xc4a9('0xd'),_0x569ce3,_0x29272c[_0xc4a9('0x12')]['message']);return _0x57f8b5(_0x29272c[_0xc4a9('0x12')][_0xc4a9('0x13')]);}logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x569ce3,_0x29272c[_0xc4a9('0x12')]['message']);return _0x2853c8(_0x29272c[_0xc4a9('0x12')][_0xc4a9('0x13')]);}else{logger[_0xc4a9('0xc')](_0xc4a9('0xd'),_0x569ce3,_0xc4a9('0xe'));_0x2853c8(_0x29272c['result'][_0xc4a9('0x13')]);}})['catch'](function(_0x5e83dc){logger['error'](_0xc4a9('0xd'),_0x569ce3,_0x5e83dc);_0x57f8b5(_0x5e83dc);});});}exports[_0xc4a9('0x14')]=function(_0x4da1dd){var _0x15660f=this;return new Promise(function(_0x48912e,_0x1d2f27){return db[_0xc4a9('0x15')][_0xc4a9('0x16')]({'raw':_0x4da1dd[_0xc4a9('0x17')]?_0x4da1dd[_0xc4a9('0x17')][_0xc4a9('0x18')]===undefined?!![]:![]:!![],'where':_0x4da1dd[_0xc4a9('0x17')]?_0x4da1dd[_0xc4a9('0x17')][_0xc4a9('0x19')]||null:null,'attributes':_0x4da1dd['options']?_0x4da1dd[_0xc4a9('0x17')]['attributes']||null:null,'limit':_0x4da1dd[_0xc4a9('0x17')]?_0x4da1dd[_0xc4a9('0x17')][_0xc4a9('0x1a')]||null:null,'include':_0x4da1dd[_0xc4a9('0x17')]?_0x4da1dd['options'][_0xc4a9('0x1b')]?_[_0xc4a9('0x1c')](_0x4da1dd['options'][_0xc4a9('0x1b')],function(_0x29cbc6){return{'model':db[_0x29cbc6['model']],'as':_0x29cbc6['as'],'attributes':_0x29cbc6[_0xc4a9('0x1d')],'include':_0x29cbc6[_0xc4a9('0x1b')]?_['map'](_0x29cbc6['include'],function(_0x10f05f){return{'model':db[_0x10f05f[_0xc4a9('0x1e')]],'as':_0x10f05f['as'],'attributes':_0x10f05f[_0xc4a9('0x1d')],'include':_0x10f05f[_0xc4a9('0x1b')]?_[_0xc4a9('0x1c')](_0x10f05f[_0xc4a9('0x1b')],function(_0x2b0b16){return{'model':db[_0x2b0b16[_0xc4a9('0x1e')]],'as':_0x2b0b16['as'],'attributes':_0x2b0b16['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fc199){logger[_0xc4a9('0xc')]('GetFreshdeskAccount',_0x4da1dd);logger[_0xc4a9('0xf')](_0xc4a9('0x14'),_0x4da1dd,JSON['stringify'](_0x2fc199));_0x48912e(_0x2fc199);})['catch'](function(_0x20990a){logger[_0xc4a9('0x12')](_0xc4a9('0x14'),_0x20990a['message'],_0x4da1dd);_0x1d2f27(_0x15660f[_0xc4a9('0x12')](0x1f4,_0x20990a[_0xc4a9('0x13')]));});});};exports['ShowFreshdeskAccount']=function(_0x3b941c){var _0x3bb34b=this;return new Promise(function(_0xa71c6f,_0xfe73f8){return db['FreshdeskAccount']['find']({'raw':_0x3b941c[_0xc4a9('0x17')]?_0x3b941c['options']['raw']===undefined?!![]:![]:!![],'where':_0x3b941c[_0xc4a9('0x17')]?_0x3b941c[_0xc4a9('0x17')]['where']||null:null,'attributes':_0x3b941c[_0xc4a9('0x17')]?_0x3b941c[_0xc4a9('0x17')]['attributes']||null:null,'include':_0x3b941c[_0xc4a9('0x17')]?_0x3b941c[_0xc4a9('0x17')][_0xc4a9('0x1b')]?_[_0xc4a9('0x1c')](_0x3b941c[_0xc4a9('0x17')]['include'],function(_0x1068b5){return{'model':db[_0x1068b5[_0xc4a9('0x1e')]],'as':_0x1068b5['as'],'attributes':_0x1068b5['attributes'],'include':_0x1068b5['include']?_[_0xc4a9('0x1c')](_0x1068b5['include'],function(_0x119996){return{'model':db[_0x119996['model']],'as':_0x119996['as'],'attributes':_0x119996[_0xc4a9('0x1d')],'include':_0x119996['include']?_['map'](_0x119996[_0xc4a9('0x1b')],function(_0x8ec037){return{'model':db[_0x8ec037[_0xc4a9('0x1e')]],'as':_0x8ec037['as'],'attributes':_0x8ec037[_0xc4a9('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xc4a9('0xb')](function(_0x2116d3){logger[_0xc4a9('0xc')](_0xc4a9('0x1f'),_0x3b941c);logger[_0xc4a9('0xf')](_0xc4a9('0x1f'),_0x3b941c,JSON[_0xc4a9('0x11')](_0x2116d3));_0xa71c6f(_0x2116d3);})[_0xc4a9('0x20')](function(_0x17c35d){logger[_0xc4a9('0x12')]('ShowFreshdeskAccount',_0x17c35d[_0xc4a9('0x13')],_0x3b941c);_0xfe73f8(_0x3bb34b[_0xc4a9('0x12')](0x1f4,_0x17c35d['message']));});});};
\ No newline at end of file
+var _0x4369=['raw','ShowFreshdeskAccount','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshdeskAccount,\x20%s,\x20%s','message','result','GetFreshdeskAccount','options','where','attributes','limit','include','map','model','FreshdeskAccount','find'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x4369,0x147));var _0x9436=function(_0x328bd3,_0x9cf5a5){_0x328bd3=_0x328bd3-0x0;var _0x458149=_0x4369[_0x328bd3];return _0x458149;};'use strict';var _=require(_0x9436('0x0'));var util=require(_0x9436('0x1'));var moment=require(_0x9436('0x2'));var BPromise=require(_0x9436('0x3'));var rs=require(_0x9436('0x4'));var fs=require('fs');var Redis=require(_0x9436('0x5'));var db=require(_0x9436('0x6'))['db'];var utils=require(_0x9436('0x7'));var logger=require(_0x9436('0x8'))('rpc');var config=require(_0x9436('0x9'));var jayson=require(_0x9436('0xa'));var client=jayson['client'][_0x9436('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x34b244,_0x50e02b,_0x4802dd){return new BPromise(function(_0x119514,_0x26ce46){return client['request'](_0x34b244,_0x4802dd)[_0x9436('0xc')](function(_0x1509a9){logger[_0x9436('0xd')]('FreshdeskAccount,\x20%s,\x20%s',_0x50e02b,_0x9436('0xe'));logger[_0x9436('0xf')](_0x9436('0x10'),_0x50e02b,'request\x20sent',JSON[_0x9436('0x11')](_0x1509a9));if(_0x1509a9[_0x9436('0x12')]){if(_0x1509a9['error'][_0x9436('0x13')]===0x1f4){logger[_0x9436('0x12')](_0x9436('0x14'),_0x50e02b,_0x1509a9[_0x9436('0x12')][_0x9436('0x15')]);return _0x26ce46(_0x1509a9[_0x9436('0x12')]['message']);}logger[_0x9436('0x12')](_0x9436('0x14'),_0x50e02b,_0x1509a9[_0x9436('0x12')][_0x9436('0x15')]);return _0x119514(_0x1509a9[_0x9436('0x12')]['message']);}else{logger['info'](_0x9436('0x14'),_0x50e02b,_0x9436('0xe'));_0x119514(_0x1509a9[_0x9436('0x16')][_0x9436('0x15')]);}})['catch'](function(_0x2e7dd7){logger[_0x9436('0x12')](_0x9436('0x14'),_0x50e02b,_0x2e7dd7);_0x26ce46(_0x2e7dd7);});});}exports[_0x9436('0x17')]=function(_0x566572){var _0x5b8a02=this;return new Promise(function(_0x6ebc62,_0x380ab7){return db['FreshdeskAccount']['findAll']({'raw':_0x566572[_0x9436('0x18')]?_0x566572[_0x9436('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x566572['options']?_0x566572[_0x9436('0x18')][_0x9436('0x19')]||null:null,'attributes':_0x566572[_0x9436('0x18')]?_0x566572[_0x9436('0x18')][_0x9436('0x1a')]||null:null,'limit':_0x566572['options']?_0x566572[_0x9436('0x18')][_0x9436('0x1b')]||null:null,'include':_0x566572['options']?_0x566572[_0x9436('0x18')][_0x9436('0x1c')]?_[_0x9436('0x1d')](_0x566572[_0x9436('0x18')][_0x9436('0x1c')],function(_0x5285eb){return{'model':db[_0x5285eb[_0x9436('0x1e')]],'as':_0x5285eb['as'],'attributes':_0x5285eb[_0x9436('0x1a')],'include':_0x5285eb[_0x9436('0x1c')]?_['map'](_0x5285eb[_0x9436('0x1c')],function(_0x3df2b3){return{'model':db[_0x3df2b3['model']],'as':_0x3df2b3['as'],'attributes':_0x3df2b3[_0x9436('0x1a')],'include':_0x3df2b3[_0x9436('0x1c')]?_[_0x9436('0x1d')](_0x3df2b3[_0x9436('0x1c')],function(_0x2086e3){return{'model':db[_0x2086e3[_0x9436('0x1e')]],'as':_0x2086e3['as'],'attributes':_0x2086e3[_0x9436('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x9436('0xc')](function(_0x205a52){logger[_0x9436('0xd')]('GetFreshdeskAccount',_0x566572);logger[_0x9436('0xf')](_0x9436('0x17'),_0x566572,JSON[_0x9436('0x11')](_0x205a52));_0x6ebc62(_0x205a52);})['catch'](function(_0x1a3d1d){logger[_0x9436('0x12')]('GetFreshdeskAccount',_0x1a3d1d[_0x9436('0x15')],_0x566572);_0x380ab7(_0x5b8a02[_0x9436('0x12')](0x1f4,_0x1a3d1d[_0x9436('0x15')]));});});};exports['ShowFreshdeskAccount']=function(_0x2fedfa){var _0xa01b9d=this;return new Promise(function(_0x3437a8,_0x35b45c){return db[_0x9436('0x1f')][_0x9436('0x20')]({'raw':_0x2fedfa[_0x9436('0x18')]?_0x2fedfa['options'][_0x9436('0x21')]===undefined?!![]:![]:!![],'where':_0x2fedfa['options']?_0x2fedfa[_0x9436('0x18')][_0x9436('0x19')]||null:null,'attributes':_0x2fedfa[_0x9436('0x18')]?_0x2fedfa[_0x9436('0x18')][_0x9436('0x1a')]||null:null,'include':_0x2fedfa[_0x9436('0x18')]?_0x2fedfa['options'][_0x9436('0x1c')]?_[_0x9436('0x1d')](_0x2fedfa[_0x9436('0x18')]['include'],function(_0x2b1444){return{'model':db[_0x2b1444['model']],'as':_0x2b1444['as'],'attributes':_0x2b1444[_0x9436('0x1a')],'include':_0x2b1444['include']?_[_0x9436('0x1d')](_0x2b1444['include'],function(_0x292fd8){return{'model':db[_0x292fd8['model']],'as':_0x292fd8['as'],'attributes':_0x292fd8['attributes'],'include':_0x292fd8[_0x9436('0x1c')]?_['map'](_0x292fd8[_0x9436('0x1c')],function(_0x2fe9cf){return{'model':db[_0x2fe9cf[_0x9436('0x1e')]],'as':_0x2fe9cf['as'],'attributes':_0x2fe9cf[_0x9436('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x9436('0xc')](function(_0x3a0b15){logger[_0x9436('0xd')](_0x9436('0x22'),_0x2fedfa);logger[_0x9436('0xf')](_0x9436('0x22'),_0x2fedfa,JSON[_0x9436('0x11')](_0x3a0b15));_0x3437a8(_0x3a0b15);})[_0x9436('0x23')](function(_0x31177e){logger[_0x9436('0x12')]('ShowFreshdeskAccount',_0x31177e[_0x9436('0x15')],_0x2fedfa);_0x35b45c(_0xa01b9d[_0x9436('0x12')](0x1f4,_0x31177e[_0x9436('0x15')]));});});};
\ No newline at end of file
index d460f4d..79337bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0374=['/:id/fields','getFields','/:id/subjects','/:id/descriptions','/:id/tags','getTags','create','post','setTags','put','update','delete','/:id','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','index','show','get'];(function(_0x4149d1,_0x3664ed){var _0x4a439d=function(_0xd0472e){while(--_0xd0472e){_0x4149d1['push'](_0x4149d1['shift']());}};_0x4a439d(++_0x3664ed);}(_0x0374,0x1a4));var _0x4037=function(_0x574518,_0x177287){_0x574518=_0x574518-0x0;var _0x3ecd4b=_0x0374[_0x574518];return _0x3ecd4b;};'use strict';var multer=require(_0x4037('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4037('0x1'));var express=require(_0x4037('0x2'));var router=express[_0x4037('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4037('0x4'));var interaction=require(_0x4037('0x5'));var config=require(_0x4037('0x6'));var controller=require(_0x4037('0x7'));router['get']('/',auth[_0x4037('0x8')](),controller[_0x4037('0x9')]);router['get']('/:id',auth[_0x4037('0x8')](),controller[_0x4037('0xa')]);router[_0x4037('0xb')](_0x4037('0xc'),auth[_0x4037('0x8')](),controller[_0x4037('0xd')]);router[_0x4037('0xb')](_0x4037('0xe'),auth[_0x4037('0x8')](),controller['getSubjects']);router[_0x4037('0xb')](_0x4037('0xf'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x4037('0xb')](_0x4037('0x10'),auth['isAuthenticated'](),controller[_0x4037('0x11')]);router['post']('/',auth[_0x4037('0x8')](),controller[_0x4037('0x12')]);router[_0x4037('0x13')]('/:id/tags',auth['isAuthenticated'](),controller[_0x4037('0x14')]);router[_0x4037('0x15')]('/:id',auth[_0x4037('0x8')](),controller[_0x4037('0x16')]);router[_0x4037('0x17')](_0x4037('0x18'),auth[_0x4037('0x8')](),controller[_0x4037('0x19')]);module[_0x4037('0x1a')]=router;
\ No newline at end of file
+var _0x316e=['connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','destroy','exports','multer','util','path'];(function(_0x5d485b,_0x5b4611){var _0x5c74b4=function(_0x131c7c){while(--_0x131c7c){_0x5d485b['push'](_0x5d485b['shift']());}};_0x5c74b4(++_0x5b4611);}(_0x316e,0x102));var _0xe316=function(_0x3138a7,_0x4276d8){_0x3138a7=_0x3138a7-0x0;var _0x3df3d1=_0x316e[_0x3138a7];return _0x3df3d1;};'use strict';var multer=require(_0xe316('0x0'));var util=require(_0xe316('0x1'));var path=require(_0xe316('0x2'));var timeout=require(_0xe316('0x3'));var express=require(_0xe316('0x4'));var router=express[_0xe316('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xe316('0x6'));var config=require(_0xe316('0x7'));var controller=require('./intFreshdeskConfiguration.controller');router[_0xe316('0x8')]('/',auth['isAuthenticated'](),controller[_0xe316('0x9')]);router[_0xe316('0x8')](_0xe316('0xa'),auth[_0xe316('0xb')](),controller[_0xe316('0xc')]);router[_0xe316('0x8')](_0xe316('0xd'),auth['isAuthenticated'](),controller[_0xe316('0xe')]);router[_0xe316('0x8')](_0xe316('0xf'),auth[_0xe316('0xb')](),controller[_0xe316('0x10')]);router[_0xe316('0x8')](_0xe316('0x11'),auth['isAuthenticated'](),controller[_0xe316('0x12')]);router[_0xe316('0x8')](_0xe316('0x13'),auth['isAuthenticated'](),controller[_0xe316('0x14')]);router[_0xe316('0x15')]('/',auth[_0xe316('0xb')](),controller[_0xe316('0x16')]);router[_0xe316('0x15')](_0xe316('0x13'),auth[_0xe316('0xb')](),controller[_0xe316('0x17')]);router[_0xe316('0x18')]('/:id',auth[_0xe316('0xb')](),controller[_0xe316('0x19')]);router[_0xe316('0x1a')]('/:id',auth[_0xe316('0xb')](),controller[_0xe316('0x1b')]);module[_0xe316('0x1c')]=router;
\ No newline at end of file
index b79f815..14ac59a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb069=['sequelize'];(function(_0x598b78,_0xf4ee7e){var _0x6392fa=function(_0x810353){while(--_0x810353){_0x598b78['push'](_0x598b78['shift']());}};_0x6392fa(++_0xf4ee7e);}(_0xb069,0x1df));var _0x9b06=function(_0x93beb0,_0x5105d0){_0x93beb0=_0x93beb0-0x0;var _0x1e0025=_0xb069[_0x93beb0];return _0x1e0025;};'use strict';var Sequelize=require(_0x9b06('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1a20=['exports','STRING'];(function(_0x829c01,_0x2a9d36){var _0x5b5549=function(_0x554465){while(--_0x554465){_0x829c01['push'](_0x829c01['shift']());}};_0x5b5549(++_0x2a9d36);}(_0x1a20,0x154));var _0x01a2=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x1a20[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require('sequelize');module[_0x01a2('0x0')]={'name':{'type':Sequelize[_0x01a2('0x1')]},'description':{'type':Sequelize[_0x01a2('0x1')]}};
\ No newline at end of file
index 50f0a2b..c7d5ae8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3060=['sort','where','filters','pick','filter','VIRTUAL','merge','includeAll','include','findAll','params','find','catch','create','body','getFields','findOne','options','getSubjects','FreshdeskField','getDescriptions','getTags','Tag','setTags','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index','map','FreshdeskConfiguration','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order'];(function(_0x5ee73a,_0x1d0cd5){var _0x249d98=function(_0x2a9ebd){while(--_0x2a9ebd){_0x5ee73a['push'](_0x5ee73a['shift']());}};_0x249d98(++_0x1d0cd5);}(_0x3060,0x1b7));var _0x0306=function(_0x152fe3,_0x12b0c8){_0x152fe3=_0x152fe3-0x0;var _0xc5bb39=_0x3060[_0x152fe3];return _0xc5bb39;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0306('0x0'));var zipdir=require(_0x0306('0x1'));var jsonpatch=require(_0x0306('0x2'));var rp=require('request-promise');var moment=require(_0x0306('0x3'));var BPromise=require(_0x0306('0x4'));var Mustache=require('mustache');var util=require(_0x0306('0x5'));var path=require('path');var sox=require(_0x0306('0x6'));var csv=require(_0x0306('0x7'));var ejs=require(_0x0306('0x8'));var fs=require('fs');var fs_extra=require(_0x0306('0x9'));var _=require(_0x0306('0xa'));var squel=require(_0x0306('0xb'));var crypto=require(_0x0306('0xc'));var jsforce=require(_0x0306('0xd'));var deskjs=require(_0x0306('0xe'));var toCsv=require(_0x0306('0x7'));var querystring=require(_0x0306('0xf'));var Papa=require('papaparse');var Redis=require(_0x0306('0x10'));var authService=require(_0x0306('0x11'));var qs=require(_0x0306('0x12'));var as=require(_0x0306('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0306('0x14'))('api');var utils=require(_0x0306('0x15'));var config=require(_0x0306('0x16'));var licenseUtil=require(_0x0306('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2de9be,_0x1e4619){_0x1e4619=_0x1e4619||0xcc;return function(_0x2ea2de){if(_0x2ea2de){return _0x2de9be[_0x0306('0x18')](_0x1e4619);}return _0x2de9be[_0x0306('0x19')](_0x1e4619)[_0x0306('0x1a')]();};}function respondWithResult(_0x52b40a,_0x2f8c49){_0x2f8c49=_0x2f8c49||0xc8;return function(_0x8d4a0f){if(_0x8d4a0f){return _0x52b40a[_0x0306('0x19')](_0x2f8c49)[_0x0306('0x1b')](_0x8d4a0f);}};}function respondWithFilteredResult(_0x1602ad,_0x44776d){return function(_0x13dcc1){if(_0x13dcc1){var _0x3a803=typeof _0x44776d['offset']==='undefined'&&typeof _0x44776d['limit']===_0x0306('0x1c');var _0x4f0c8e=_0x13dcc1[_0x0306('0x1d')];var _0x3aba8a=_0x3a803?0x0:_0x44776d[_0x0306('0x1e')];var _0x4352f6=_0x3a803?_0x13dcc1[_0x0306('0x1d')]:_0x44776d[_0x0306('0x1e')]+_0x44776d[_0x0306('0x1f')];var _0x3824e5;if(_0x4352f6>=_0x4f0c8e){_0x4352f6=_0x4f0c8e;_0x3824e5=0xc8;}else{_0x3824e5=0xce;}_0x1602ad[_0x0306('0x19')](_0x3824e5);return _0x1602ad[_0x0306('0x20')](_0x0306('0x21'),_0x3aba8a+'-'+_0x4352f6+'/'+_0x4f0c8e)['json'](_0x13dcc1);}return null;};}function patchUpdates(_0x58619e){return function(_0x1a59a5){try{jsonpatch[_0x0306('0x22')](_0x1a59a5,_0x58619e,!![]);}catch(_0x4e4f40){return BPromise[_0x0306('0x23')](_0x4e4f40);}return _0x1a59a5['save']();};}function saveUpdates(_0x5c64f1,_0x50479e){return function(_0x1b3702){if(_0x1b3702){return _0x1b3702[_0x0306('0x24')](_0x5c64f1)['then'](function(_0x2a8a14){return _0x2a8a14;});}return null;};}function removeEntity(_0x2e4b40,_0x320c8f){return function(_0x452862){if(_0x452862){return _0x452862[_0x0306('0x25')]()[_0x0306('0x26')](function(){_0x2e4b40[_0x0306('0x19')](0xcc)[_0x0306('0x1a')]();});}};}function handleEntityNotFound(_0xae474f,_0x2dbcb0){return function(_0x362b6a){if(!_0x362b6a){_0xae474f[_0x0306('0x18')](0x194);}return _0x362b6a;};}function handleError(_0x5a458c,_0xa5150c){_0xa5150c=_0xa5150c||0x1f4;return function(_0x39a6fb){logger[_0x0306('0x27')](_0x39a6fb[_0x0306('0x28')]);if(_0x39a6fb[_0x0306('0x29')]){delete _0x39a6fb[_0x0306('0x29')];}_0x5a458c[_0x0306('0x19')](_0xa5150c)[_0x0306('0x2a')](_0x39a6fb);};}exports[_0x0306('0x2b')]=function(_0xc78e42,_0x57cd2a){var _0x5bf761={},_0x478c89={},_0x172855={'count':0x0,'rows':[]};var _0x193f7c=_[_0x0306('0x2c')](db[_0x0306('0x2d')][_0x0306('0x2e')],function(_0x36822b){return{'name':_0x36822b['fieldName'],'type':_0x36822b[_0x0306('0x2f')][_0x0306('0x30')]};});_0x478c89[_0x0306('0x31')]=_['map'](_0x193f7c,_0x0306('0x29'));_0x478c89[_0x0306('0x32')]=_[_0x0306('0x33')](_0xc78e42[_0x0306('0x32')]);_0x478c89['filters']=_[_0x0306('0x34')](_0x478c89[_0x0306('0x31')],_0x478c89['query']);_0x5bf761[_0x0306('0x35')]=_[_0x0306('0x34')](_0x478c89[_0x0306('0x31')],qs[_0x0306('0x36')](_0xc78e42[_0x0306('0x32')][_0x0306('0x36')]));_0x5bf761[_0x0306('0x35')]=_0x5bf761[_0x0306('0x35')][_0x0306('0x37')]?_0x5bf761['attributes']:_0x478c89[_0x0306('0x31')];if(!_0xc78e42[_0x0306('0x32')][_0x0306('0x38')](_0x0306('0x39'))){_0x5bf761['limit']=qs[_0x0306('0x1f')](_0xc78e42[_0x0306('0x32')][_0x0306('0x1f')]);_0x5bf761[_0x0306('0x1e')]=qs[_0x0306('0x1e')](_0xc78e42['query']['offset']);}_0x5bf761[_0x0306('0x3a')]=qs['sort'](_0xc78e42[_0x0306('0x32')][_0x0306('0x3b')]);_0x5bf761[_0x0306('0x3c')]=qs[_0x0306('0x3d')](_[_0x0306('0x3e')](_0xc78e42[_0x0306('0x32')],_0x478c89[_0x0306('0x3d')]),_0x193f7c);if(_0xc78e42[_0x0306('0x32')][_0x0306('0x3f')]){_0x5bf761[_0x0306('0x3c')]=_['merge'](_0x5bf761[_0x0306('0x3c')],{'$or':_[_0x0306('0x2c')](_0x193f7c,function(_0x115d6a){if(_0x115d6a[_0x0306('0x2f')]!==_0x0306('0x40')){var _0xf3042f={};_0xf3042f[_0x115d6a[_0x0306('0x29')]]={'$like':'%'+_0xc78e42[_0x0306('0x32')][_0x0306('0x3f')]+'%'};return _0xf3042f;}})});}_0x5bf761=_[_0x0306('0x41')]({},_0x5bf761,_0xc78e42['options']);var _0x5ddd95={'where':_0x5bf761[_0x0306('0x3c')]};return db[_0x0306('0x2d')][_0x0306('0x1d')](_0x5ddd95)['then'](function(_0x9c5e1b){_0x172855['count']=_0x9c5e1b;if(_0xc78e42[_0x0306('0x32')][_0x0306('0x42')]){_0x5bf761[_0x0306('0x43')]=[{'all':!![]}];}return db[_0x0306('0x2d')][_0x0306('0x44')](_0x5bf761);})['then'](function(_0x54ba12){_0x172855['rows']=_0x54ba12;return _0x172855;})['then'](respondWithFilteredResult(_0x57cd2a,_0x5bf761))['catch'](handleError(_0x57cd2a,null));};exports['show']=function(_0x31f0b1,_0x57fe00){var _0x109084={'raw':![],'where':{'id':_0x31f0b1[_0x0306('0x45')]['id']}},_0xa7d6ab={};_0xa7d6ab[_0x0306('0x31')]=_[_0x0306('0x33')](db[_0x0306('0x2d')][_0x0306('0x2e')]);_0xa7d6ab[_0x0306('0x32')]=_[_0x0306('0x33')](_0x31f0b1[_0x0306('0x32')]);_0xa7d6ab[_0x0306('0x3d')]=_['intersection'](_0xa7d6ab[_0x0306('0x31')],_0xa7d6ab[_0x0306('0x32')]);_0x109084[_0x0306('0x35')]=_[_0x0306('0x34')](_0xa7d6ab['model'],qs['fields'](_0x31f0b1['query'][_0x0306('0x36')]));_0x109084[_0x0306('0x35')]=_0x109084[_0x0306('0x35')][_0x0306('0x37')]?_0x109084[_0x0306('0x35')]:_0xa7d6ab[_0x0306('0x31')];if(_0x31f0b1[_0x0306('0x32')][_0x0306('0x42')]){_0x109084[_0x0306('0x43')]=[{'all':!![]}];}_0x109084=_['merge']({},_0x109084,_0x31f0b1['options']);return db[_0x0306('0x2d')][_0x0306('0x46')](_0x109084)[_0x0306('0x26')](handleEntityNotFound(_0x57fe00,null))['then'](respondWithResult(_0x57fe00,null))[_0x0306('0x47')](handleError(_0x57fe00,null));};exports[_0x0306('0x48')]=function(_0x1b5d85,_0x178333){return db[_0x0306('0x2d')][_0x0306('0x48')](_0x1b5d85[_0x0306('0x49')],{})[_0x0306('0x26')](respondWithResult(_0x178333,0xc9))[_0x0306('0x47')](handleError(_0x178333,null));};exports[_0x0306('0x24')]=function(_0x22bf2e,_0x25850b){if(_0x22bf2e[_0x0306('0x49')]['id']){delete _0x22bf2e[_0x0306('0x49')]['id'];}return db[_0x0306('0x2d')][_0x0306('0x46')]({'where':{'id':_0x22bf2e[_0x0306('0x45')]['id']}})[_0x0306('0x26')](handleEntityNotFound(_0x25850b,null))[_0x0306('0x26')](saveUpdates(_0x22bf2e[_0x0306('0x49')],null))[_0x0306('0x26')](respondWithResult(_0x25850b,null))[_0x0306('0x47')](handleError(_0x25850b,null));};exports['destroy']=function(_0x1308b7,_0x15d439){return db[_0x0306('0x2d')]['find']({'where':{'id':_0x1308b7[_0x0306('0x45')]['id']}})[_0x0306('0x26')](handleEntityNotFound(_0x15d439,null))['then'](removeEntity(_0x15d439,null))[_0x0306('0x47')](handleError(_0x15d439,null));};exports[_0x0306('0x4a')]=function(_0x2d2e51,_0x91ee8c,_0x5aa5f3){var _0x30e0df={};var _0x4f5535={};var _0x1392fe;var _0x36b877;return db['FreshdeskConfiguration'][_0x0306('0x4b')]({'where':{'id':_0x2d2e51['params']['id']}})[_0x0306('0x26')](handleEntityNotFound(_0x91ee8c,null))[_0x0306('0x26')](function(_0x1a0cf6){if(_0x1a0cf6){_0x1392fe=_0x1a0cf6;_0x4f5535[_0x0306('0x31')]=_[_0x0306('0x33')](db['FreshdeskField'][_0x0306('0x2e')]);_0x4f5535[_0x0306('0x32')]=_[_0x0306('0x33')](_0x2d2e51['query']);_0x4f5535[_0x0306('0x3d')]=_[_0x0306('0x34')](_0x4f5535[_0x0306('0x31')],_0x4f5535['query']);_0x30e0df[_0x0306('0x35')]=_[_0x0306('0x34')](_0x4f5535[_0x0306('0x31')],qs[_0x0306('0x36')](_0x2d2e51[_0x0306('0x32')]['fields']));_0x30e0df[_0x0306('0x35')]=_0x30e0df[_0x0306('0x35')][_0x0306('0x37')]?_0x30e0df[_0x0306('0x35')]:_0x4f5535[_0x0306('0x31')];_0x30e0df['order']=qs[_0x0306('0x3b')](_0x2d2e51['query'][_0x0306('0x3b')]);_0x30e0df['where']=qs[_0x0306('0x3d')](_[_0x0306('0x3e')](_0x2d2e51[_0x0306('0x32')],_0x4f5535['filters']));if(_0x2d2e51['query'][_0x0306('0x3f')]){_0x30e0df[_0x0306('0x3c')]=_[_0x0306('0x41')](_0x30e0df['where'],{'$or':_[_0x0306('0x2c')](_0x30e0df[_0x0306('0x35')],function(_0x5ef9b8){var _0x58d94e={};_0x58d94e[_0x5ef9b8]={'$like':'%'+_0x2d2e51['query'][_0x0306('0x3f')]+'%'};return _0x58d94e;})});}_0x30e0df=_[_0x0306('0x41')]({},_0x30e0df,_0x2d2e51[_0x0306('0x4c')]);return _0x1392fe[_0x0306('0x4a')](_0x30e0df);}})['then'](function(_0x1609ab){if(_0x1609ab){_0x36b877=_0x1609ab['length'];if(!_0x2d2e51['query'][_0x0306('0x38')](_0x0306('0x39'))){_0x30e0df['limit']=qs[_0x0306('0x1f')](_0x2d2e51[_0x0306('0x32')][_0x0306('0x1f')]);_0x30e0df[_0x0306('0x1e')]=qs[_0x0306('0x1e')](_0x2d2e51[_0x0306('0x32')][_0x0306('0x1e')]);}return _0x1392fe[_0x0306('0x4a')](_0x30e0df);}})[_0x0306('0x26')](function(_0x137d6f){if(_0x137d6f){return _0x137d6f?{'count':_0x36b877,'rows':_0x137d6f}:null;}})['then'](respondWithResult(_0x91ee8c,null))[_0x0306('0x47')](handleError(_0x91ee8c,null));};exports[_0x0306('0x4d')]=function(_0x53d94f,_0x5e32d0,_0x5ed102){var _0x2efa61={};var _0x50655d={};var _0x40a700;var _0x5a895a;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x53d94f['params']['id']}})[_0x0306('0x26')](handleEntityNotFound(_0x5e32d0,null))[_0x0306('0x26')](function(_0x1a6c0f){if(_0x1a6c0f){_0x40a700=_0x1a6c0f;_0x50655d['model']=_[_0x0306('0x33')](db[_0x0306('0x4e')][_0x0306('0x2e')]);_0x50655d[_0x0306('0x32')]=_[_0x0306('0x33')](_0x53d94f[_0x0306('0x32')]);_0x50655d[_0x0306('0x3d')]=_[_0x0306('0x34')](_0x50655d[_0x0306('0x31')],_0x50655d[_0x0306('0x32')]);_0x2efa61[_0x0306('0x35')]=_['intersection'](_0x50655d[_0x0306('0x31')],qs['fields'](_0x53d94f['query'][_0x0306('0x36')]));_0x2efa61[_0x0306('0x35')]=_0x2efa61['attributes'][_0x0306('0x37')]?_0x2efa61[_0x0306('0x35')]:_0x50655d[_0x0306('0x31')];_0x2efa61[_0x0306('0x3a')]=qs[_0x0306('0x3b')](_0x53d94f['query'][_0x0306('0x3b')]);_0x2efa61[_0x0306('0x3c')]=qs[_0x0306('0x3d')](_[_0x0306('0x3e')](_0x53d94f[_0x0306('0x32')],_0x50655d[_0x0306('0x3d')]));if(_0x53d94f[_0x0306('0x32')][_0x0306('0x3f')]){_0x2efa61[_0x0306('0x3c')]=_[_0x0306('0x41')](_0x2efa61[_0x0306('0x3c')],{'$or':_['map'](_0x2efa61[_0x0306('0x35')],function(_0x1bc9d4){var _0x4e3a2c={};_0x4e3a2c[_0x1bc9d4]={'$like':'%'+_0x53d94f[_0x0306('0x32')]['filter']+'%'};return _0x4e3a2c;})});}_0x2efa61=_[_0x0306('0x41')]({},_0x2efa61,_0x53d94f['options']);return _0x40a700['getSubjects'](_0x2efa61);}})[_0x0306('0x26')](function(_0x38ff10){if(_0x38ff10){_0x5a895a=_0x38ff10[_0x0306('0x37')];if(!_0x53d94f[_0x0306('0x32')][_0x0306('0x38')]('nolimit')){_0x2efa61[_0x0306('0x1f')]=qs[_0x0306('0x1f')](_0x53d94f[_0x0306('0x32')]['limit']);_0x2efa61[_0x0306('0x1e')]=qs[_0x0306('0x1e')](_0x53d94f[_0x0306('0x32')]['offset']);}return _0x40a700[_0x0306('0x4d')](_0x2efa61);}})[_0x0306('0x26')](function(_0x5c9c18){if(_0x5c9c18){return _0x5c9c18?{'count':_0x5a895a,'rows':_0x5c9c18}:null;}})['then'](respondWithResult(_0x5e32d0,null))[_0x0306('0x47')](handleError(_0x5e32d0,null));};exports[_0x0306('0x4f')]=function(_0x123dae,_0x33f58a,_0x153477){var _0x5ce3d3={};var _0x511b53={};var _0x430203;var _0x3a11ab;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x123dae[_0x0306('0x45')]['id']}})[_0x0306('0x26')](handleEntityNotFound(_0x33f58a,null))[_0x0306('0x26')](function(_0x3af5b0){if(_0x3af5b0){_0x430203=_0x3af5b0;_0x511b53[_0x0306('0x31')]=_[_0x0306('0x33')](db[_0x0306('0x4e')][_0x0306('0x2e')]);_0x511b53[_0x0306('0x32')]=_[_0x0306('0x33')](_0x123dae[_0x0306('0x32')]);_0x511b53[_0x0306('0x3d')]=_[_0x0306('0x34')](_0x511b53['model'],_0x511b53[_0x0306('0x32')]);_0x5ce3d3[_0x0306('0x35')]=_['intersection'](_0x511b53[_0x0306('0x31')],qs[_0x0306('0x36')](_0x123dae[_0x0306('0x32')][_0x0306('0x36')]));_0x5ce3d3[_0x0306('0x35')]=_0x5ce3d3['attributes'][_0x0306('0x37')]?_0x5ce3d3[_0x0306('0x35')]:_0x511b53[_0x0306('0x31')];_0x5ce3d3[_0x0306('0x3a')]=qs[_0x0306('0x3b')](_0x123dae[_0x0306('0x32')][_0x0306('0x3b')]);_0x5ce3d3[_0x0306('0x3c')]=qs[_0x0306('0x3d')](_[_0x0306('0x3e')](_0x123dae[_0x0306('0x32')],_0x511b53[_0x0306('0x3d')]));if(_0x123dae[_0x0306('0x32')]['filter']){_0x5ce3d3[_0x0306('0x3c')]=_[_0x0306('0x41')](_0x5ce3d3[_0x0306('0x3c')],{'$or':_[_0x0306('0x2c')](_0x5ce3d3[_0x0306('0x35')],function(_0x2fd501){var _0x552577={};_0x552577[_0x2fd501]={'$like':'%'+_0x123dae[_0x0306('0x32')][_0x0306('0x3f')]+'%'};return _0x552577;})});}_0x5ce3d3=_['merge']({},_0x5ce3d3,_0x123dae[_0x0306('0x4c')]);return _0x430203[_0x0306('0x4f')](_0x5ce3d3);}})[_0x0306('0x26')](function(_0x50eb6e){if(_0x50eb6e){_0x3a11ab=_0x50eb6e[_0x0306('0x37')];if(!_0x123dae[_0x0306('0x32')][_0x0306('0x38')]('nolimit')){_0x5ce3d3[_0x0306('0x1f')]=qs[_0x0306('0x1f')](_0x123dae[_0x0306('0x32')][_0x0306('0x1f')]);_0x5ce3d3[_0x0306('0x1e')]=qs['offset'](_0x123dae[_0x0306('0x32')]['offset']);}return _0x430203[_0x0306('0x4f')](_0x5ce3d3);}})[_0x0306('0x26')](function(_0x3b6a89){if(_0x3b6a89){return _0x3b6a89?{'count':_0x3a11ab,'rows':_0x3b6a89}:null;}})['then'](respondWithResult(_0x33f58a,null))[_0x0306('0x47')](handleError(_0x33f58a,null));};exports[_0x0306('0x50')]=function(_0x967d5e,_0x5efca4,_0x16204){var _0x57bf69={};var _0x540168={};var _0x1bcf69;var _0x5c86bc;return db[_0x0306('0x2d')]['findOne']({'where':{'id':_0x967d5e['params']['id']}})['then'](handleEntityNotFound(_0x5efca4,null))['then'](function(_0x388a9a){if(_0x388a9a){_0x1bcf69=_0x388a9a;_0x540168[_0x0306('0x31')]=_['keys'](db[_0x0306('0x51')][_0x0306('0x2e')]);_0x540168[_0x0306('0x32')]=_[_0x0306('0x33')](_0x967d5e[_0x0306('0x32')]);_0x540168['filters']=_['intersection'](_0x540168[_0x0306('0x31')],_0x540168['query']);_0x57bf69[_0x0306('0x35')]=_[_0x0306('0x34')](_0x540168[_0x0306('0x31')],qs[_0x0306('0x36')](_0x967d5e[_0x0306('0x32')][_0x0306('0x36')]));_0x57bf69[_0x0306('0x35')]=_0x57bf69[_0x0306('0x35')]['length']?_0x57bf69['attributes']:_0x540168[_0x0306('0x31')];_0x57bf69[_0x0306('0x3a')]=qs[_0x0306('0x3b')](_0x967d5e[_0x0306('0x32')][_0x0306('0x3b')]);_0x57bf69[_0x0306('0x3c')]=qs[_0x0306('0x3d')](_[_0x0306('0x3e')](_0x967d5e[_0x0306('0x32')],_0x540168[_0x0306('0x3d')]));if(_0x967d5e[_0x0306('0x32')][_0x0306('0x3f')]){_0x57bf69[_0x0306('0x3c')]=_[_0x0306('0x41')](_0x57bf69[_0x0306('0x3c')],{'$or':_[_0x0306('0x2c')](_0x57bf69['attributes'],function(_0x5bffe8){var _0x1922af={};_0x1922af[_0x5bffe8]={'$like':'%'+_0x967d5e[_0x0306('0x32')][_0x0306('0x3f')]+'%'};return _0x1922af;})});}_0x57bf69=_['merge']({},_0x57bf69,_0x967d5e['options']);return _0x1bcf69[_0x0306('0x50')](_0x57bf69);}})['then'](function(_0x42800e){if(_0x42800e){_0x5c86bc=_0x42800e[_0x0306('0x37')];if(!_0x967d5e[_0x0306('0x32')]['hasOwnProperty'](_0x0306('0x39'))){_0x57bf69[_0x0306('0x1f')]=qs['limit'](_0x967d5e[_0x0306('0x32')]['limit']);_0x57bf69['offset']=qs[_0x0306('0x1e')](_0x967d5e[_0x0306('0x32')][_0x0306('0x1e')]);}return _0x1bcf69['getTags'](_0x57bf69);}})[_0x0306('0x26')](function(_0x5b287d){if(_0x5b287d){return _0x5b287d?{'count':_0x5c86bc,'rows':_0x5b287d}:null;}})[_0x0306('0x26')](respondWithResult(_0x5efca4,null))['catch'](handleError(_0x5efca4,null));};exports['setTags']=function(_0x32f35c,_0x235e93,_0x2b6ab3){if(_0x32f35c['body']['id']){delete _0x32f35c['body']['id'];}return db[_0x0306('0x2d')][_0x0306('0x4b')]({'where':{'id':_0x32f35c[_0x0306('0x45')]['id']}})[_0x0306('0x26')](handleEntityNotFound(_0x235e93,null))['then'](function(_0x3332d0){if(_0x3332d0){return _0x3332d0[_0x0306('0x52')](_0x32f35c[_0x0306('0x49')]['ids']||[]);}return null;})[_0x0306('0x26')](respondWithResult(_0x235e93,null))[_0x0306('0x47')](handleError(_0x235e93,null));};
\ No newline at end of file
+var _0x01f6=['merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','body','destroy','getFields','findOne','nolimit','FreshdeskField','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','set','apply','reject','save','update','then','name','send','index','map','FreshdeskConfiguration','rawAttributes','fieldName','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','offset','order','sort','where','filters','pick','filter'];(function(_0x1907c2,_0x454401){var _0x2e5796=function(_0x4abed4){while(--_0x4abed4){_0x1907c2['push'](_0x1907c2['shift']());}};_0x2e5796(++_0x454401);}(_0x01f6,0x162));var _0x601f=function(_0x14dfd6,_0x392fa4){_0x14dfd6=_0x14dfd6-0x0;var _0x36c19a=_0x01f6[_0x14dfd6];return _0x36c19a;};'use strict';var emlformat=require(_0x601f('0x0'));var rimraf=require(_0x601f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x601f('0x2'));var rp=require(_0x601f('0x3'));var moment=require(_0x601f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x601f('0x5'));var util=require(_0x601f('0x6'));var path=require(_0x601f('0x7'));var sox=require(_0x601f('0x8'));var csv=require('to-csv');var ejs=require(_0x601f('0x9'));var fs=require('fs');var fs_extra=require(_0x601f('0xa'));var _=require('lodash');var squel=require(_0x601f('0xb'));var crypto=require(_0x601f('0xc'));var jsforce=require(_0x601f('0xd'));var deskjs=require(_0x601f('0xe'));var toCsv=require(_0x601f('0xf'));var querystring=require(_0x601f('0x10'));var Papa=require(_0x601f('0x11'));var Redis=require(_0x601f('0x12'));var authService=require(_0x601f('0x13'));var qs=require(_0x601f('0x14'));var as=require(_0x601f('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x601f('0x16'));var utils=require(_0x601f('0x17'));var config=require(_0x601f('0x18'));var licenseUtil=require(_0x601f('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x261d67,_0x4f7e80){_0x4f7e80=_0x4f7e80||0xcc;return function(_0x59625c){if(_0x59625c){return _0x261d67[_0x601f('0x1a')](_0x4f7e80);}return _0x261d67[_0x601f('0x1b')](_0x4f7e80)[_0x601f('0x1c')]();};}function respondWithResult(_0x12e562,_0x31b247){_0x31b247=_0x31b247||0xc8;return function(_0x297b09){if(_0x297b09){return _0x12e562['status'](_0x31b247)[_0x601f('0x1d')](_0x297b09);}};}function respondWithFilteredResult(_0x1d55ee,_0x2fce18){return function(_0x1cc99c){if(_0x1cc99c){var _0x41c3e7=typeof _0x2fce18['offset']==='undefined'&&typeof _0x2fce18[_0x601f('0x1e')]===_0x601f('0x1f');var _0x481e2a=_0x1cc99c['count'];var _0x35311a=_0x41c3e7?0x0:_0x2fce18['offset'];var _0xac758c=_0x41c3e7?_0x1cc99c[_0x601f('0x20')]:_0x2fce18['offset']+_0x2fce18[_0x601f('0x1e')];var _0x273259;if(_0xac758c>=_0x481e2a){_0xac758c=_0x481e2a;_0x273259=0xc8;}else{_0x273259=0xce;}_0x1d55ee[_0x601f('0x1b')](_0x273259);return _0x1d55ee[_0x601f('0x21')]('Content-Range',_0x35311a+'-'+_0xac758c+'/'+_0x481e2a)[_0x601f('0x1d')](_0x1cc99c);}return null;};}function patchUpdates(_0x481c13){return function(_0x1b5286){try{jsonpatch[_0x601f('0x22')](_0x1b5286,_0x481c13,!![]);}catch(_0x3efa8a){return BPromise[_0x601f('0x23')](_0x3efa8a);}return _0x1b5286[_0x601f('0x24')]();};}function saveUpdates(_0x182333,_0x30db34){return function(_0x54a9f4){if(_0x54a9f4){return _0x54a9f4[_0x601f('0x25')](_0x182333)[_0x601f('0x26')](function(_0x370b14){return _0x370b14;});}return null;};}function removeEntity(_0x4d643f,_0x1d6ec7){return function(_0x2944b1){if(_0x2944b1){return _0x2944b1['destroy']()[_0x601f('0x26')](function(){_0x4d643f[_0x601f('0x1b')](0xcc)[_0x601f('0x1c')]();});}};}function handleEntityNotFound(_0x52a0d2,_0x4a280b){return function(_0x59b560){if(!_0x59b560){_0x52a0d2[_0x601f('0x1a')](0x194);}return _0x59b560;};}function handleError(_0x3811a5,_0x31fc0b){_0x31fc0b=_0x31fc0b||0x1f4;return function(_0x556930){logger['error'](_0x556930['stack']);if(_0x556930[_0x601f('0x27')]){delete _0x556930[_0x601f('0x27')];}_0x3811a5[_0x601f('0x1b')](_0x31fc0b)[_0x601f('0x28')](_0x556930);};}exports[_0x601f('0x29')]=function(_0x52cbb5,_0x6e348a){var _0xce8ae6={},_0xd8df97={},_0x1f0e0f={'count':0x0,'rows':[]};var _0x4f779d=_[_0x601f('0x2a')](db[_0x601f('0x2b')][_0x601f('0x2c')],function(_0x28b6f0){return{'name':_0x28b6f0[_0x601f('0x2d')],'type':_0x28b6f0['type']['key']};});_0xd8df97[_0x601f('0x2e')]=_[_0x601f('0x2a')](_0x4f779d,_0x601f('0x27'));_0xd8df97['query']=_[_0x601f('0x2f')](_0x52cbb5[_0x601f('0x30')]);_0xd8df97['filters']=_['intersection'](_0xd8df97[_0x601f('0x2e')],_0xd8df97[_0x601f('0x30')]);_0xce8ae6[_0x601f('0x31')]=_[_0x601f('0x32')](_0xd8df97[_0x601f('0x2e')],qs[_0x601f('0x33')](_0x52cbb5[_0x601f('0x30')][_0x601f('0x33')]));_0xce8ae6[_0x601f('0x31')]=_0xce8ae6[_0x601f('0x31')][_0x601f('0x34')]?_0xce8ae6[_0x601f('0x31')]:_0xd8df97[_0x601f('0x2e')];if(!_0x52cbb5['query'][_0x601f('0x35')]('nolimit')){_0xce8ae6[_0x601f('0x1e')]=qs['limit'](_0x52cbb5['query'][_0x601f('0x1e')]);_0xce8ae6[_0x601f('0x36')]=qs[_0x601f('0x36')](_0x52cbb5[_0x601f('0x30')][_0x601f('0x36')]);}_0xce8ae6[_0x601f('0x37')]=qs[_0x601f('0x38')](_0x52cbb5[_0x601f('0x30')][_0x601f('0x38')]);_0xce8ae6[_0x601f('0x39')]=qs[_0x601f('0x3a')](_[_0x601f('0x3b')](_0x52cbb5[_0x601f('0x30')],_0xd8df97['filters']),_0x4f779d);if(_0x52cbb5[_0x601f('0x30')][_0x601f('0x3c')]){_0xce8ae6[_0x601f('0x39')]=_[_0x601f('0x3d')](_0xce8ae6['where'],{'$or':_[_0x601f('0x2a')](_0x4f779d,function(_0x247bc6){if(_0x247bc6[_0x601f('0x3e')]!==_0x601f('0x3f')){var _0x4fd768={};_0x4fd768[_0x247bc6[_0x601f('0x27')]]={'$like':'%'+_0x52cbb5['query'][_0x601f('0x3c')]+'%'};return _0x4fd768;}})});}_0xce8ae6=_[_0x601f('0x3d')]({},_0xce8ae6,_0x52cbb5[_0x601f('0x40')]);var _0x377bd1={'where':_0xce8ae6['where']};return db[_0x601f('0x2b')][_0x601f('0x20')](_0x377bd1)[_0x601f('0x26')](function(_0x31813c){_0x1f0e0f[_0x601f('0x20')]=_0x31813c;if(_0x52cbb5['query'][_0x601f('0x41')]){_0xce8ae6[_0x601f('0x42')]=[{'all':!![]}];}return db[_0x601f('0x2b')]['findAll'](_0xce8ae6);})[_0x601f('0x26')](function(_0x3ee5c6){_0x1f0e0f[_0x601f('0x43')]=_0x3ee5c6;return _0x1f0e0f;})[_0x601f('0x26')](respondWithFilteredResult(_0x6e348a,_0xce8ae6))[_0x601f('0x44')](handleError(_0x6e348a,null));};exports[_0x601f('0x45')]=function(_0x493ab4,_0x16717a){var _0x525e28={'raw':![],'where':{'id':_0x493ab4[_0x601f('0x46')]['id']}},_0x4a99b7={};_0x4a99b7[_0x601f('0x2e')]=_[_0x601f('0x2f')](db[_0x601f('0x2b')]['rawAttributes']);_0x4a99b7[_0x601f('0x30')]=_[_0x601f('0x2f')](_0x493ab4[_0x601f('0x30')]);_0x4a99b7['filters']=_[_0x601f('0x32')](_0x4a99b7[_0x601f('0x2e')],_0x4a99b7[_0x601f('0x30')]);_0x525e28[_0x601f('0x31')]=_[_0x601f('0x32')](_0x4a99b7['model'],qs[_0x601f('0x33')](_0x493ab4[_0x601f('0x30')][_0x601f('0x33')]));_0x525e28[_0x601f('0x31')]=_0x525e28[_0x601f('0x31')][_0x601f('0x34')]?_0x525e28[_0x601f('0x31')]:_0x4a99b7[_0x601f('0x2e')];if(_0x493ab4['query'][_0x601f('0x41')]){_0x525e28['include']=[{'all':!![]}];}_0x525e28=_['merge']({},_0x525e28,_0x493ab4[_0x601f('0x40')]);return db[_0x601f('0x2b')][_0x601f('0x47')](_0x525e28)[_0x601f('0x26')](handleEntityNotFound(_0x16717a,null))[_0x601f('0x26')](respondWithResult(_0x16717a,null))[_0x601f('0x44')](handleError(_0x16717a,null));};exports['create']=function(_0x2beaa5,_0x1b150f){return db['FreshdeskConfiguration']['create'](_0x2beaa5[_0x601f('0x48')],{})[_0x601f('0x26')](respondWithResult(_0x1b150f,0xc9))[_0x601f('0x44')](handleError(_0x1b150f,null));};exports[_0x601f('0x25')]=function(_0x575014,_0x2a60f4){if(_0x575014[_0x601f('0x48')]['id']){delete _0x575014[_0x601f('0x48')]['id'];}return db[_0x601f('0x2b')][_0x601f('0x47')]({'where':{'id':_0x575014[_0x601f('0x46')]['id']}})[_0x601f('0x26')](handleEntityNotFound(_0x2a60f4,null))[_0x601f('0x26')](saveUpdates(_0x575014[_0x601f('0x48')],null))[_0x601f('0x26')](respondWithResult(_0x2a60f4,null))[_0x601f('0x44')](handleError(_0x2a60f4,null));};exports[_0x601f('0x49')]=function(_0x512011,_0x286fff){return db[_0x601f('0x2b')][_0x601f('0x47')]({'where':{'id':_0x512011[_0x601f('0x46')]['id']}})[_0x601f('0x26')](handleEntityNotFound(_0x286fff,null))[_0x601f('0x26')](removeEntity(_0x286fff,null))[_0x601f('0x44')](handleError(_0x286fff,null));};exports[_0x601f('0x4a')]=function(_0xe1a276,_0xc845de,_0x50aa52){var _0x291fa1={};var _0x4a1a3e={};var _0xda05a3;var _0x1d7b48;return db[_0x601f('0x2b')][_0x601f('0x4b')]({'where':{'id':_0xe1a276['params']['id']}})[_0x601f('0x26')](handleEntityNotFound(_0xc845de,null))[_0x601f('0x26')](function(_0x109f80){if(_0x109f80){_0xda05a3=_0x109f80;_0x4a1a3e[_0x601f('0x2e')]=_[_0x601f('0x2f')](db['FreshdeskField']['rawAttributes']);_0x4a1a3e[_0x601f('0x30')]=_['keys'](_0xe1a276[_0x601f('0x30')]);_0x4a1a3e['filters']=_[_0x601f('0x32')](_0x4a1a3e['model'],_0x4a1a3e['query']);_0x291fa1[_0x601f('0x31')]=_['intersection'](_0x4a1a3e['model'],qs[_0x601f('0x33')](_0xe1a276['query'][_0x601f('0x33')]));_0x291fa1[_0x601f('0x31')]=_0x291fa1[_0x601f('0x31')][_0x601f('0x34')]?_0x291fa1[_0x601f('0x31')]:_0x4a1a3e[_0x601f('0x2e')];_0x291fa1['order']=qs[_0x601f('0x38')](_0xe1a276['query'][_0x601f('0x38')]);_0x291fa1[_0x601f('0x39')]=qs['filters'](_['pick'](_0xe1a276[_0x601f('0x30')],_0x4a1a3e['filters']));if(_0xe1a276[_0x601f('0x30')][_0x601f('0x3c')]){_0x291fa1['where']=_['merge'](_0x291fa1[_0x601f('0x39')],{'$or':_[_0x601f('0x2a')](_0x291fa1[_0x601f('0x31')],function(_0x4c579f){var _0x341ff5={};_0x341ff5[_0x4c579f]={'$like':'%'+_0xe1a276['query'][_0x601f('0x3c')]+'%'};return _0x341ff5;})});}_0x291fa1=_['merge']({},_0x291fa1,_0xe1a276[_0x601f('0x40')]);return _0xda05a3['getFields'](_0x291fa1);}})[_0x601f('0x26')](function(_0x4eb6cd){if(_0x4eb6cd){_0x1d7b48=_0x4eb6cd[_0x601f('0x34')];if(!_0xe1a276['query'][_0x601f('0x35')](_0x601f('0x4c'))){_0x291fa1['limit']=qs['limit'](_0xe1a276[_0x601f('0x30')]['limit']);_0x291fa1[_0x601f('0x36')]=qs[_0x601f('0x36')](_0xe1a276[_0x601f('0x30')][_0x601f('0x36')]);}return _0xda05a3['getFields'](_0x291fa1);}})[_0x601f('0x26')](function(_0x430191){if(_0x430191){return _0x430191?{'count':_0x1d7b48,'rows':_0x430191}:null;}})[_0x601f('0x26')](respondWithResult(_0xc845de,null))[_0x601f('0x44')](handleError(_0xc845de,null));};exports['getSubjects']=function(_0x426847,_0x3b4428,_0x1a4b84){var _0xa6085b={};var _0x55d39b={};var _0x11830f;var _0x3760fc;return db[_0x601f('0x2b')][_0x601f('0x4b')]({'where':{'id':_0x426847['params']['id']}})[_0x601f('0x26')](handleEntityNotFound(_0x3b4428,null))[_0x601f('0x26')](function(_0x242ce0){if(_0x242ce0){_0x11830f=_0x242ce0;_0x55d39b['model']=_[_0x601f('0x2f')](db[_0x601f('0x4d')][_0x601f('0x2c')]);_0x55d39b[_0x601f('0x30')]=_[_0x601f('0x2f')](_0x426847[_0x601f('0x30')]);_0x55d39b[_0x601f('0x3a')]=_['intersection'](_0x55d39b['model'],_0x55d39b[_0x601f('0x30')]);_0xa6085b['attributes']=_['intersection'](_0x55d39b['model'],qs[_0x601f('0x33')](_0x426847[_0x601f('0x30')][_0x601f('0x33')]));_0xa6085b[_0x601f('0x31')]=_0xa6085b[_0x601f('0x31')]['length']?_0xa6085b[_0x601f('0x31')]:_0x55d39b['model'];_0xa6085b[_0x601f('0x37')]=qs[_0x601f('0x38')](_0x426847['query'][_0x601f('0x38')]);_0xa6085b[_0x601f('0x39')]=qs[_0x601f('0x3a')](_[_0x601f('0x3b')](_0x426847[_0x601f('0x30')],_0x55d39b[_0x601f('0x3a')]));if(_0x426847[_0x601f('0x30')][_0x601f('0x3c')]){_0xa6085b[_0x601f('0x39')]=_[_0x601f('0x3d')](_0xa6085b[_0x601f('0x39')],{'$or':_[_0x601f('0x2a')](_0xa6085b[_0x601f('0x31')],function(_0x369509){var _0x3fee9c={};_0x3fee9c[_0x369509]={'$like':'%'+_0x426847['query'][_0x601f('0x3c')]+'%'};return _0x3fee9c;})});}_0xa6085b=_['merge']({},_0xa6085b,_0x426847['options']);return _0x11830f[_0x601f('0x4e')](_0xa6085b);}})[_0x601f('0x26')](function(_0x295b46){if(_0x295b46){_0x3760fc=_0x295b46['length'];if(!_0x426847[_0x601f('0x30')][_0x601f('0x35')](_0x601f('0x4c'))){_0xa6085b[_0x601f('0x1e')]=qs['limit'](_0x426847['query']['limit']);_0xa6085b[_0x601f('0x36')]=qs[_0x601f('0x36')](_0x426847['query'][_0x601f('0x36')]);}return _0x11830f[_0x601f('0x4e')](_0xa6085b);}})[_0x601f('0x26')](function(_0xb61f52){if(_0xb61f52){return _0xb61f52?{'count':_0x3760fc,'rows':_0xb61f52}:null;}})[_0x601f('0x26')](respondWithResult(_0x3b4428,null))[_0x601f('0x44')](handleError(_0x3b4428,null));};exports['getDescriptions']=function(_0x43f456,_0x4181fe,_0x4f599d){var _0x5c1174={};var _0x200bc9={};var _0x4f0cc3;var _0x19b55d;return db[_0x601f('0x2b')]['findOne']({'where':{'id':_0x43f456[_0x601f('0x46')]['id']}})[_0x601f('0x26')](handleEntityNotFound(_0x4181fe,null))[_0x601f('0x26')](function(_0x2f6798){if(_0x2f6798){_0x4f0cc3=_0x2f6798;_0x200bc9[_0x601f('0x2e')]=_[_0x601f('0x2f')](db[_0x601f('0x4d')][_0x601f('0x2c')]);_0x200bc9['query']=_[_0x601f('0x2f')](_0x43f456[_0x601f('0x30')]);_0x200bc9['filters']=_[_0x601f('0x32')](_0x200bc9['model'],_0x200bc9[_0x601f('0x30')]);_0x5c1174['attributes']=_[_0x601f('0x32')](_0x200bc9[_0x601f('0x2e')],qs[_0x601f('0x33')](_0x43f456[_0x601f('0x30')][_0x601f('0x33')]));_0x5c1174[_0x601f('0x31')]=_0x5c1174[_0x601f('0x31')]['length']?_0x5c1174['attributes']:_0x200bc9[_0x601f('0x2e')];_0x5c1174[_0x601f('0x37')]=qs[_0x601f('0x38')](_0x43f456[_0x601f('0x30')][_0x601f('0x38')]);_0x5c1174[_0x601f('0x39')]=qs[_0x601f('0x3a')](_['pick'](_0x43f456[_0x601f('0x30')],_0x200bc9[_0x601f('0x3a')]));if(_0x43f456['query'][_0x601f('0x3c')]){_0x5c1174[_0x601f('0x39')]=_[_0x601f('0x3d')](_0x5c1174[_0x601f('0x39')],{'$or':_[_0x601f('0x2a')](_0x5c1174[_0x601f('0x31')],function(_0x10104f){var _0x340fad={};_0x340fad[_0x10104f]={'$like':'%'+_0x43f456[_0x601f('0x30')]['filter']+'%'};return _0x340fad;})});}_0x5c1174=_['merge']({},_0x5c1174,_0x43f456['options']);return _0x4f0cc3[_0x601f('0x4f')](_0x5c1174);}})[_0x601f('0x26')](function(_0x4a3368){if(_0x4a3368){_0x19b55d=_0x4a3368[_0x601f('0x34')];if(!_0x43f456[_0x601f('0x30')][_0x601f('0x35')](_0x601f('0x4c'))){_0x5c1174[_0x601f('0x1e')]=qs['limit'](_0x43f456[_0x601f('0x30')][_0x601f('0x1e')]);_0x5c1174[_0x601f('0x36')]=qs[_0x601f('0x36')](_0x43f456[_0x601f('0x30')][_0x601f('0x36')]);}return _0x4f0cc3[_0x601f('0x4f')](_0x5c1174);}})['then'](function(_0x4af1d6){if(_0x4af1d6){return _0x4af1d6?{'count':_0x19b55d,'rows':_0x4af1d6}:null;}})[_0x601f('0x26')](respondWithResult(_0x4181fe,null))['catch'](handleError(_0x4181fe,null));};exports[_0x601f('0x50')]=function(_0x160a76,_0xb4d12d,_0x24dac0){var _0x5ee23e={};var _0x203a04={};var _0x3d0b8a;var _0x35c417;return db['FreshdeskConfiguration'][_0x601f('0x4b')]({'where':{'id':_0x160a76[_0x601f('0x46')]['id']}})[_0x601f('0x26')](handleEntityNotFound(_0xb4d12d,null))[_0x601f('0x26')](function(_0x582f78){if(_0x582f78){_0x3d0b8a=_0x582f78;_0x203a04['model']=_['keys'](db[_0x601f('0x51')]['rawAttributes']);_0x203a04[_0x601f('0x30')]=_[_0x601f('0x2f')](_0x160a76[_0x601f('0x30')]);_0x203a04[_0x601f('0x3a')]=_[_0x601f('0x32')](_0x203a04[_0x601f('0x2e')],_0x203a04[_0x601f('0x30')]);_0x5ee23e[_0x601f('0x31')]=_[_0x601f('0x32')](_0x203a04[_0x601f('0x2e')],qs[_0x601f('0x33')](_0x160a76['query'][_0x601f('0x33')]));_0x5ee23e[_0x601f('0x31')]=_0x5ee23e['attributes'][_0x601f('0x34')]?_0x5ee23e[_0x601f('0x31')]:_0x203a04[_0x601f('0x2e')];_0x5ee23e[_0x601f('0x37')]=qs[_0x601f('0x38')](_0x160a76[_0x601f('0x30')][_0x601f('0x38')]);_0x5ee23e[_0x601f('0x39')]=qs['filters'](_[_0x601f('0x3b')](_0x160a76[_0x601f('0x30')],_0x203a04['filters']));if(_0x160a76['query']['filter']){_0x5ee23e['where']=_['merge'](_0x5ee23e[_0x601f('0x39')],{'$or':_[_0x601f('0x2a')](_0x5ee23e[_0x601f('0x31')],function(_0x40f9b0){var _0x489e4c={};_0x489e4c[_0x40f9b0]={'$like':'%'+_0x160a76['query'][_0x601f('0x3c')]+'%'};return _0x489e4c;})});}_0x5ee23e=_['merge']({},_0x5ee23e,_0x160a76[_0x601f('0x40')]);return _0x3d0b8a['getTags'](_0x5ee23e);}})[_0x601f('0x26')](function(_0x1d325e){if(_0x1d325e){_0x35c417=_0x1d325e[_0x601f('0x34')];if(!_0x160a76[_0x601f('0x30')][_0x601f('0x35')](_0x601f('0x4c'))){_0x5ee23e[_0x601f('0x1e')]=qs[_0x601f('0x1e')](_0x160a76['query']['limit']);_0x5ee23e[_0x601f('0x36')]=qs['offset'](_0x160a76[_0x601f('0x30')][_0x601f('0x36')]);}return _0x3d0b8a[_0x601f('0x50')](_0x5ee23e);}})[_0x601f('0x26')](function(_0x9efb4e){if(_0x9efb4e){return _0x9efb4e?{'count':_0x35c417,'rows':_0x9efb4e}:null;}})['then'](respondWithResult(_0xb4d12d,null))[_0x601f('0x44')](handleError(_0xb4d12d,null));};exports[_0x601f('0x52')]=function(_0x213454,_0x37bbbf,_0x1fef91){if(_0x213454['body']['id']){delete _0x213454[_0x601f('0x48')]['id'];}return db[_0x601f('0x2b')][_0x601f('0x4b')]({'where':{'id':_0x213454['params']['id']}})[_0x601f('0x26')](handleEntityNotFound(_0x37bbbf,null))[_0x601f('0x26')](function(_0x3576da){if(_0x3576da){return _0x3576da[_0x601f('0x52')](_0x213454[_0x601f('0x48')]['ids']||[]);}return null;})[_0x601f('0x26')](respondWithResult(_0x37bbbf,null))[_0x601f('0x44')](handleError(_0x37bbbf,null));};
\ No newline at end of file
index f549c83..272ab28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc6e=['FreshdeskConfiguration','int_freshdesk_configurations','util','../../config/logger','moment','bluebird','request-promise','path','exports','define'];(function(_0x7eee7,_0x3779a1){var _0x469f62=function(_0x553717){while(--_0x553717){_0x7eee7['push'](_0x7eee7['shift']());}};_0x469f62(++_0x3779a1);}(_0xdc6e,0x188));var _0xedc6=function(_0x183b97,_0x2d297c){_0x183b97=_0x183b97-0x0;var _0x629cf7=_0xdc6e[_0x183b97];return _0x629cf7;};'use strict';var _=require('lodash');var util=require(_0xedc6('0x0'));var logger=require(_0xedc6('0x1'))('api');var moment=require(_0xedc6('0x2'));var BPromise=require(_0xedc6('0x3'));var rp=require(_0xedc6('0x4'));var fs=require('fs');var path=require(_0xedc6('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intFreshdeskConfiguration.attributes');module[_0xedc6('0x6')]=function(_0x5ea8bb,_0x4984b9){return _0x5ea8bb[_0xedc6('0x7')](_0xedc6('0x8'),attributes,{'tableName':_0xedc6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6432=['define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','../../config/logger','api','moment','path','rimraf','exports'];(function(_0x494655,_0x4fa79d){var _0x542463=function(_0x30a532){while(--_0x30a532){_0x494655['push'](_0x494655['shift']());}};_0x542463(++_0x4fa79d);}(_0x6432,0x107));var _0x2643=function(_0x3b3f7f,_0x47429d){_0x3b3f7f=_0x3b3f7f-0x0;var _0x1c9bdf=_0x6432[_0x3b3f7f];return _0x1c9bdf;};'use strict';var _=require(_0x2643('0x0'));var util=require('util');var logger=require(_0x2643('0x1'))(_0x2643('0x2'));var moment=require(_0x2643('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2643('0x4'));var rimraf=require(_0x2643('0x5'));var config=require('../../config/environment');var attributes=require('./intFreshdeskConfiguration.attributes');module[_0x2643('0x6')]=function(_0x4c308f,_0x47f353){return _0x4c308f[_0x2643('0x7')](_0x2643('0x8'),attributes,{'tableName':_0x2643('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e870785..44dcccf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd18b=['client','request','then','FreshdeskConfiguration,\x20%s,\x20%s','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0xd18b,0xd4));var _0xbd18=function(_0x5a7721,_0x7fd765){_0x5a7721=_0x5a7721-0x0;var _0x511167=_0xd18b[_0x5a7721];return _0x511167;};'use strict';var _=require(_0xbd18('0x0'));var util=require(_0xbd18('0x1'));var moment=require(_0xbd18('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbd18('0x3'))['db'];var utils=require(_0xbd18('0x4'));var logger=require('../../config/logger')(_0xbd18('0x5'));var config=require(_0xbd18('0x6'));var jayson=require(_0xbd18('0x7'));var client=jayson[_0xbd18('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5087ef,_0x33b9f6,_0x85bb15){return new BPromise(function(_0x36097d,_0xb87a3a){return client[_0xbd18('0x9')](_0x5087ef,_0x85bb15)[_0xbd18('0xa')](function(_0x243569){logger['info'](_0xbd18('0xb'),_0x33b9f6,'request\x20sent');logger[_0xbd18('0xc')](_0xbd18('0xd'),_0x33b9f6,_0xbd18('0xe'),JSON[_0xbd18('0xf')](_0x243569));if(_0x243569[_0xbd18('0x10')]){if(_0x243569[_0xbd18('0x10')][_0xbd18('0x11')]===0x1f4){logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x33b9f6,_0x243569[_0xbd18('0x10')][_0xbd18('0x12')]);return _0xb87a3a(_0x243569['error'][_0xbd18('0x12')]);}logger[_0xbd18('0x10')](_0xbd18('0xb'),_0x33b9f6,_0x243569['error']['message']);return _0x36097d(_0x243569[_0xbd18('0x10')]['message']);}else{logger[_0xbd18('0x13')](_0xbd18('0xb'),_0x33b9f6,_0xbd18('0xe'));_0x36097d(_0x243569[_0xbd18('0x14')]['message']);}})[_0xbd18('0x15')](function(_0x27b17c){logger[_0xbd18('0x10')](_0xbd18('0xb'),_0x33b9f6,_0x27b17c);_0xb87a3a(_0x27b17c);});});}
\ No newline at end of file
+var _0xa8a8=['info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa8a8,0x121));var _0x8a8a=function(_0x2555bd,_0x5ad78f){_0x2555bd=_0x2555bd-0x0;var _0x1db366=_0xa8a8[_0x2555bd];return _0x1db366;};'use strict';var _=require(_0x8a8a('0x0'));var util=require(_0x8a8a('0x1'));var moment=require(_0x8a8a('0x2'));var BPromise=require('bluebird');var rs=require(_0x8a8a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8a8a('0x4'))['db'];var utils=require(_0x8a8a('0x5'));var logger=require(_0x8a8a('0x6'))(_0x8a8a('0x7'));var config=require(_0x8a8a('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8a8a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x34ab4d,_0x5a5142,_0x470729){return new BPromise(function(_0x432f56,_0x9f8977){return client[_0x8a8a('0xa')](_0x34ab4d,_0x470729)['then'](function(_0x377b17){logger[_0x8a8a('0xb')](_0x8a8a('0xc'),_0x5a5142,_0x8a8a('0xd'));logger[_0x8a8a('0xe')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x5a5142,_0x8a8a('0xd'),JSON[_0x8a8a('0xf')](_0x377b17));if(_0x377b17[_0x8a8a('0x10')]){if(_0x377b17[_0x8a8a('0x10')][_0x8a8a('0x11')]===0x1f4){logger[_0x8a8a('0x10')](_0x8a8a('0xc'),_0x5a5142,_0x377b17[_0x8a8a('0x10')]['message']);return _0x9f8977(_0x377b17['error'][_0x8a8a('0x12')]);}logger[_0x8a8a('0x10')](_0x8a8a('0xc'),_0x5a5142,_0x377b17['error']['message']);return _0x432f56(_0x377b17[_0x8a8a('0x10')][_0x8a8a('0x12')]);}else{logger[_0x8a8a('0xb')](_0x8a8a('0xc'),_0x5a5142,_0x8a8a('0xd'));_0x432f56(_0x377b17[_0x8a8a('0x13')][_0x8a8a('0x12')]);}})['catch'](function(_0x131fc0){logger['error'](_0x8a8a('0xc'),_0x5a5142,_0x131fc0);_0x9f8977(_0x131fc0);});});}
\ No newline at end of file
index 24392ea..cbb74fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67ac=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','put','update','delete'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x67ac,0xa2));var _0xc67a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x67ac[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xc67a('0x0'));var util=require(_0xc67a('0x1'));var path=require(_0xc67a('0x2'));var timeout=require(_0xc67a('0x3'));var express=require(_0xc67a('0x4'));var router=express[_0xc67a('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc67a('0x6'));var interaction=require(_0xc67a('0x7'));var config=require(_0xc67a('0x8'));var controller=require('./intFreshdeskField.controller');router['get']('/',auth[_0xc67a('0x9')](),controller[_0xc67a('0xa')]);router[_0xc67a('0xb')](_0xc67a('0xc'),auth['isAuthenticated'](),controller[_0xc67a('0xd')]);router[_0xc67a('0xe')]('/',auth[_0xc67a('0x9')](),controller['create']);router[_0xc67a('0xf')](_0xc67a('0xc'),auth[_0xc67a('0x9')](),controller[_0xc67a('0x10')]);router[_0xc67a('0x11')](_0xc67a('0xc'),auth[_0xc67a('0x9')](),controller[_0xc67a('0x12')]);module[_0xc67a('0x13')]=router;
\ No newline at end of file
+var _0x9381=['./intFreshdeskField.controller','index','get','isAuthenticated','show','post','create','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2d42b7,_0x391076){var _0x3ac15a=function(_0x38ec34){while(--_0x38ec34){_0x2d42b7['push'](_0x2d42b7['shift']());}};_0x3ac15a(++_0x391076);}(_0x9381,0x7a));var _0x1938=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0x9381[_0x4792c8];return _0x35edb1;};'use strict';var multer=require(_0x1938('0x0'));var util=require(_0x1938('0x1'));var path=require(_0x1938('0x2'));var timeout=require(_0x1938('0x3'));var express=require(_0x1938('0x4'));var router=express[_0x1938('0x5')]();var fs_extra=require(_0x1938('0x6'));var auth=require(_0x1938('0x7'));var interaction=require(_0x1938('0x8'));var config=require(_0x1938('0x9'));var controller=require(_0x1938('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x1938('0xb')]);router[_0x1938('0xc')]('/:id',auth[_0x1938('0xd')](),controller[_0x1938('0xe')]);router[_0x1938('0xf')]('/',auth[_0x1938('0xd')](),controller[_0x1938('0x10')]);router[_0x1938('0x11')](_0x1938('0x12'),auth['isAuthenticated'](),controller[_0x1938('0x13')]);router[_0x1938('0x14')]('/:id',auth[_0x1938('0xd')](),controller['destroy']);module[_0x1938('0x15')]=router;
\ No newline at end of file
index 632f92f..40364cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd255=['keyValue','STRING','ENUM','sequelize','string','variable','customVariable'];(function(_0x4c0622,_0x5dacaf){var _0x1799d8=function(_0x2ba801){while(--_0x2ba801){_0x4c0622['push'](_0x4c0622['shift']());}};_0x1799d8(++_0x5dacaf);}(_0xd255,0x17d));var _0x5d25=function(_0xef2a,_0x2698b8){_0xef2a=_0xef2a-0x0;var _0x26d0bd=_0xd255[_0xef2a];return _0x26d0bd;};'use strict';var Sequelize=require(_0x5d25('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x5d25('0x1'),_0x5d25('0x2'),_0x5d25('0x3'),_0x5d25('0x4'),'picklist'),'defaultValue':_0x5d25('0x1')},'content':{'type':Sequelize[_0x5d25('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x5d25('0x6')](_0x5d25('0x1'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x5d25('0x5')]},'idField':{'type':Sequelize[_0x5d25('0x5')]},'nameField':{'type':Sequelize[_0x5d25('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x5d25('0x5')]}};
\ No newline at end of file
+var _0x5401=['STRING','variable','BOOLEAN','sequelize','ENUM','customVariable','keyValue','picklist','string'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x5401,0x93));var _0x1540=function(_0x466bc5,_0x3a0f2a){_0x466bc5=_0x466bc5-0x0;var _0x138952=_0x5401[_0x466bc5];return _0x138952;};'use strict';var Sequelize=require(_0x1540('0x0'));module['exports']={'type':{'type':Sequelize[_0x1540('0x1')]('string','variable',_0x1540('0x2'),_0x1540('0x3'),_0x1540('0x4')),'defaultValue':_0x1540('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x1540('0x6')]},'keyType':{'type':Sequelize[_0x1540('0x1')](_0x1540('0x5'),_0x1540('0x7'),_0x1540('0x2'))},'keyContent':{'type':Sequelize[_0x1540('0x6')]},'idField':{'type':Sequelize[_0x1540('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x1540('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1540('0x6')]}};
\ No newline at end of file
index 7a6ade7..b449203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7980=['sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','catch','show','params','rawAttributes','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','name','send','index','FreshdeskField','type','key','model','map','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order'];(function(_0x1b3561,_0x213f68){var _0x4a62b2=function(_0x401c80){while(--_0x401c80){_0x1b3561['push'](_0x1b3561['shift']());}};_0x4a62b2(++_0x213f68);}(_0x7980,0xab));var _0x0798=function(_0x3e6ace,_0x2cb4f8){_0x3e6ace=_0x3e6ace-0x0;var _0x22390f=_0x7980[_0x3e6ace];return _0x22390f;};'use strict';var emlformat=require(_0x0798('0x0'));var rimraf=require(_0x0798('0x1'));var zipdir=require(_0x0798('0x2'));var jsonpatch=require(_0x0798('0x3'));var rp=require(_0x0798('0x4'));var moment=require('moment');var BPromise=require(_0x0798('0x5'));var Mustache=require(_0x0798('0x6'));var util=require(_0x0798('0x7'));var path=require(_0x0798('0x8'));var sox=require(_0x0798('0x9'));var csv=require('to-csv');var ejs=require(_0x0798('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0798('0xb'));var squel=require(_0x0798('0xc'));var crypto=require(_0x0798('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0798('0xe'));var querystring=require(_0x0798('0xf'));var Papa=require(_0x0798('0x10'));var Redis=require(_0x0798('0x11'));var authService=require(_0x0798('0x12'));var qs=require(_0x0798('0x13'));var as=require(_0x0798('0x14'));var hardwareService=require(_0x0798('0x15'));var logger=require(_0x0798('0x16'))(_0x0798('0x17'));var utils=require('../../config/utils');var config=require(_0x0798('0x18'));var licenseUtil=require(_0x0798('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5323e5,_0x588f9d){_0x588f9d=_0x588f9d||0xcc;return function(_0x376a60){if(_0x376a60){return _0x5323e5[_0x0798('0x1a')](_0x588f9d);}return _0x5323e5[_0x0798('0x1b')](_0x588f9d)[_0x0798('0x1c')]();};}function respondWithResult(_0x39bacd,_0xfd88af){_0xfd88af=_0xfd88af||0xc8;return function(_0x5f1640){if(_0x5f1640){return _0x39bacd['status'](_0xfd88af)[_0x0798('0x1d')](_0x5f1640);}};}function respondWithFilteredResult(_0x112362,_0x47be56){return function(_0x555c45){if(_0x555c45){var _0x21c30b=typeof _0x47be56[_0x0798('0x1e')]===_0x0798('0x1f')&&typeof _0x47be56['limit']==='undefined';var _0x1c6d6f=_0x555c45['count'];var _0x41e217=_0x21c30b?0x0:_0x47be56[_0x0798('0x1e')];var _0x288f41=_0x21c30b?_0x555c45[_0x0798('0x20')]:_0x47be56['offset']+_0x47be56[_0x0798('0x21')];var _0x3039d6;if(_0x288f41>=_0x1c6d6f){_0x288f41=_0x1c6d6f;_0x3039d6=0xc8;}else{_0x3039d6=0xce;}_0x112362['status'](_0x3039d6);return _0x112362[_0x0798('0x22')](_0x0798('0x23'),_0x41e217+'-'+_0x288f41+'/'+_0x1c6d6f)[_0x0798('0x1d')](_0x555c45);}return null;};}function patchUpdates(_0x44ac33){return function(_0xfbb4a5){try{jsonpatch[_0x0798('0x24')](_0xfbb4a5,_0x44ac33,!![]);}catch(_0x3a7f8b){return BPromise[_0x0798('0x25')](_0x3a7f8b);}return _0xfbb4a5[_0x0798('0x26')]();};}function saveUpdates(_0x4a86d5,_0x2aaabf){return function(_0x35c141){if(_0x35c141){return _0x35c141[_0x0798('0x27')](_0x4a86d5)[_0x0798('0x28')](function(_0x20654b){return _0x20654b;});}return null;};}function removeEntity(_0x23f283,_0x52037c){return function(_0x3f66e2){if(_0x3f66e2){return _0x3f66e2[_0x0798('0x29')]()[_0x0798('0x28')](function(){_0x23f283[_0x0798('0x1b')](0xcc)[_0x0798('0x1c')]();});}};}function handleEntityNotFound(_0x23d59c,_0x4f648a){return function(_0x43d99f){if(!_0x43d99f){_0x23d59c[_0x0798('0x1a')](0x194);}return _0x43d99f;};}function handleError(_0x11e24d,_0x4d4e0a){_0x4d4e0a=_0x4d4e0a||0x1f4;return function(_0x4bc3f3){logger['error'](_0x4bc3f3['stack']);if(_0x4bc3f3[_0x0798('0x2a')]){delete _0x4bc3f3[_0x0798('0x2a')];}_0x11e24d[_0x0798('0x1b')](_0x4d4e0a)[_0x0798('0x2b')](_0x4bc3f3);};}exports[_0x0798('0x2c')]=function(_0x161244,_0x30bec){var _0x23e770={},_0x5bbe3d={},_0x167960={'count':0x0,'rows':[]};var _0x4f5d1d=_['map'](db[_0x0798('0x2d')]['rawAttributes'],function(_0x1dabd5){return{'name':_0x1dabd5['fieldName'],'type':_0x1dabd5[_0x0798('0x2e')][_0x0798('0x2f')]};});_0x5bbe3d[_0x0798('0x30')]=_[_0x0798('0x31')](_0x4f5d1d,_0x0798('0x2a'));_0x5bbe3d[_0x0798('0x32')]=_[_0x0798('0x33')](_0x161244[_0x0798('0x32')]);_0x5bbe3d[_0x0798('0x34')]=_[_0x0798('0x35')](_0x5bbe3d[_0x0798('0x30')],_0x5bbe3d[_0x0798('0x32')]);_0x23e770['attributes']=_[_0x0798('0x35')](_0x5bbe3d['model'],qs['fields'](_0x161244[_0x0798('0x32')][_0x0798('0x36')]));_0x23e770['attributes']=_0x23e770['attributes'][_0x0798('0x37')]?_0x23e770[_0x0798('0x38')]:_0x5bbe3d[_0x0798('0x30')];if(!_0x161244[_0x0798('0x32')][_0x0798('0x39')](_0x0798('0x3a'))){_0x23e770['limit']=qs['limit'](_0x161244[_0x0798('0x32')][_0x0798('0x21')]);_0x23e770[_0x0798('0x1e')]=qs['offset'](_0x161244['query']['offset']);}_0x23e770[_0x0798('0x3b')]=qs[_0x0798('0x3c')](_0x161244[_0x0798('0x32')][_0x0798('0x3c')]);_0x23e770[_0x0798('0x3d')]=qs[_0x0798('0x34')](_[_0x0798('0x3e')](_0x161244[_0x0798('0x32')],_0x5bbe3d['filters']),_0x4f5d1d);if(_0x161244[_0x0798('0x32')]['filter']){_0x23e770[_0x0798('0x3d')]=_[_0x0798('0x3f')](_0x23e770[_0x0798('0x3d')],{'$or':_['map'](_0x4f5d1d,function(_0x91de){if(_0x91de['type']!==_0x0798('0x40')){var _0x138bad={};_0x138bad[_0x91de[_0x0798('0x2a')]]={'$like':'%'+_0x161244['query'][_0x0798('0x41')]+'%'};return _0x138bad;}})});}_0x23e770=_[_0x0798('0x3f')]({},_0x23e770,_0x161244['options']);var _0xddc73b={'where':_0x23e770['where']};return db['FreshdeskField'][_0x0798('0x20')](_0xddc73b)[_0x0798('0x28')](function(_0x5f3e38){_0x167960['count']=_0x5f3e38;if(_0x161244[_0x0798('0x32')][_0x0798('0x42')]){_0x23e770[_0x0798('0x43')]=[{'all':!![]}];}return db[_0x0798('0x2d')][_0x0798('0x44')](_0x23e770);})[_0x0798('0x28')](function(_0x27a671){_0x167960['rows']=_0x27a671;return _0x167960;})[_0x0798('0x28')](respondWithFilteredResult(_0x30bec,_0x23e770))[_0x0798('0x45')](handleError(_0x30bec,null));};exports[_0x0798('0x46')]=function(_0x3d6de4,_0x3a8a14){var _0x26e9cb={'raw':!![],'where':{'id':_0x3d6de4[_0x0798('0x47')]['id']}},_0x4c2d8a={};_0x4c2d8a[_0x0798('0x30')]=_[_0x0798('0x33')](db[_0x0798('0x2d')][_0x0798('0x48')]);_0x4c2d8a[_0x0798('0x32')]=_[_0x0798('0x33')](_0x3d6de4[_0x0798('0x32')]);_0x4c2d8a[_0x0798('0x34')]=_[_0x0798('0x35')](_0x4c2d8a[_0x0798('0x30')],_0x4c2d8a[_0x0798('0x32')]);_0x26e9cb['attributes']=_[_0x0798('0x35')](_0x4c2d8a[_0x0798('0x30')],qs[_0x0798('0x36')](_0x3d6de4[_0x0798('0x32')]['fields']));_0x26e9cb['attributes']=_0x26e9cb[_0x0798('0x38')][_0x0798('0x37')]?_0x26e9cb[_0x0798('0x38')]:_0x4c2d8a[_0x0798('0x30')];if(_0x3d6de4['query'][_0x0798('0x42')]){_0x26e9cb['include']=[{'all':!![]}];}_0x26e9cb=_['merge']({},_0x26e9cb,_0x3d6de4[_0x0798('0x49')]);return db[_0x0798('0x2d')][_0x0798('0x4a')](_0x26e9cb)[_0x0798('0x28')](handleEntityNotFound(_0x3a8a14,null))[_0x0798('0x28')](respondWithResult(_0x3a8a14,null))[_0x0798('0x45')](handleError(_0x3a8a14,null));};exports[_0x0798('0x4b')]=function(_0x411c2a,_0x182e3b){return db['FreshdeskField'][_0x0798('0x4b')](_0x411c2a['body'],{})[_0x0798('0x28')](respondWithResult(_0x182e3b,0xc9))[_0x0798('0x45')](handleError(_0x182e3b,null));};exports[_0x0798('0x27')]=function(_0x54634d,_0x9dea1f){if(_0x54634d[_0x0798('0x4c')]['id']){delete _0x54634d[_0x0798('0x4c')]['id'];}return db[_0x0798('0x2d')]['find']({'where':{'id':_0x54634d[_0x0798('0x47')]['id']}})[_0x0798('0x28')](handleEntityNotFound(_0x9dea1f,null))[_0x0798('0x28')](saveUpdates(_0x54634d[_0x0798('0x4c')],null))[_0x0798('0x28')](respondWithResult(_0x9dea1f,null))['catch'](handleError(_0x9dea1f,null));};exports[_0x0798('0x29')]=function(_0x3e1c15,_0x2679b1){return db[_0x0798('0x2d')][_0x0798('0x4a')]({'where':{'id':_0x3e1c15[_0x0798('0x47')]['id']}})[_0x0798('0x28')](handleEntityNotFound(_0x2679b1,null))[_0x0798('0x28')](removeEntity(_0x2679b1,null))[_0x0798('0x45')](handleError(_0x2679b1,null));};
\ No newline at end of file
+var _0xaaa2=['model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','params','rawAttributes','includeAll','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','error','name','send','index','map','FreshdeskField','type','key'];(function(_0x5c9307,_0x5b97e4){var _0x373e29=function(_0xefebbd){while(--_0xefebbd){_0x5c9307['push'](_0x5c9307['shift']());}};_0x373e29(++_0x5b97e4);}(_0xaaa2,0xac));var _0x2aaa=function(_0x4b3764,_0x32076f){_0x4b3764=_0x4b3764-0x0;var _0x370c82=_0xaaa2[_0x4b3764];return _0x370c82;};'use strict';var emlformat=require(_0x2aaa('0x0'));var rimraf=require(_0x2aaa('0x1'));var zipdir=require(_0x2aaa('0x2'));var jsonpatch=require(_0x2aaa('0x3'));var rp=require(_0x2aaa('0x4'));var moment=require(_0x2aaa('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2aaa('0x6'));var util=require('util');var path=require(_0x2aaa('0x7'));var sox=require(_0x2aaa('0x8'));var csv=require(_0x2aaa('0x9'));var ejs=require(_0x2aaa('0xa'));var fs=require('fs');var fs_extra=require(_0x2aaa('0xb'));var _=require(_0x2aaa('0xc'));var squel=require('squel');var crypto=require(_0x2aaa('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2aaa('0x9'));var querystring=require('querystring');var Papa=require(_0x2aaa('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2aaa('0xf'));var as=require(_0x2aaa('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2aaa('0x11'))(_0x2aaa('0x12'));var utils=require(_0x2aaa('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x2aaa('0x14'));var db=require(_0x2aaa('0x15'))['db'];function respondWithStatusCode(_0x8a5be3,_0x2b51f0){_0x2b51f0=_0x2b51f0||0xcc;return function(_0xd38d6d){if(_0xd38d6d){return _0x8a5be3[_0x2aaa('0x16')](_0x2b51f0);}return _0x8a5be3[_0x2aaa('0x17')](_0x2b51f0)[_0x2aaa('0x18')]();};}function respondWithResult(_0x32dfbf,_0xe22151){_0xe22151=_0xe22151||0xc8;return function(_0x314366){if(_0x314366){return _0x32dfbf[_0x2aaa('0x17')](_0xe22151)['json'](_0x314366);}};}function respondWithFilteredResult(_0x166321,_0x4df56b){return function(_0x35fbc1){if(_0x35fbc1){var _0x1a5573=typeof _0x4df56b['offset']==='undefined'&&typeof _0x4df56b['limit']===_0x2aaa('0x19');var _0x1dc0ba=_0x35fbc1[_0x2aaa('0x1a')];var _0x3b94bf=_0x1a5573?0x0:_0x4df56b[_0x2aaa('0x1b')];var _0xdaa445=_0x1a5573?_0x35fbc1[_0x2aaa('0x1a')]:_0x4df56b['offset']+_0x4df56b[_0x2aaa('0x1c')];var _0x30951c;if(_0xdaa445>=_0x1dc0ba){_0xdaa445=_0x1dc0ba;_0x30951c=0xc8;}else{_0x30951c=0xce;}_0x166321['status'](_0x30951c);return _0x166321[_0x2aaa('0x1d')]('Content-Range',_0x3b94bf+'-'+_0xdaa445+'/'+_0x1dc0ba)['json'](_0x35fbc1);}return null;};}function patchUpdates(_0x1ec32e){return function(_0x5052eb){try{jsonpatch[_0x2aaa('0x1e')](_0x5052eb,_0x1ec32e,!![]);}catch(_0x3e7649){return BPromise[_0x2aaa('0x1f')](_0x3e7649);}return _0x5052eb[_0x2aaa('0x20')]();};}function saveUpdates(_0x2c255f,_0x24da1e){return function(_0x4f581f){if(_0x4f581f){return _0x4f581f[_0x2aaa('0x21')](_0x2c255f)[_0x2aaa('0x22')](function(_0x4836b2){return _0x4836b2;});}return null;};}function removeEntity(_0x4d35aa,_0x19153e){return function(_0x4d7151){if(_0x4d7151){return _0x4d7151[_0x2aaa('0x23')]()[_0x2aaa('0x22')](function(){_0x4d35aa['status'](0xcc)[_0x2aaa('0x18')]();});}};}function handleEntityNotFound(_0x3b99d8,_0x4e1c0f){return function(_0x2ab888){if(!_0x2ab888){_0x3b99d8[_0x2aaa('0x16')](0x194);}return _0x2ab888;};}function handleError(_0x41253c,_0x5371cd){_0x5371cd=_0x5371cd||0x1f4;return function(_0x1f626b){logger[_0x2aaa('0x24')](_0x1f626b['stack']);if(_0x1f626b['name']){delete _0x1f626b[_0x2aaa('0x25')];}_0x41253c[_0x2aaa('0x17')](_0x5371cd)[_0x2aaa('0x26')](_0x1f626b);};}exports[_0x2aaa('0x27')]=function(_0x3a6a63,_0x292297){var _0x2f8305={},_0x166dc0={},_0x12cd47={'count':0x0,'rows':[]};var _0x19472b=_[_0x2aaa('0x28')](db[_0x2aaa('0x29')]['rawAttributes'],function(_0x101b6e){return{'name':_0x101b6e['fieldName'],'type':_0x101b6e[_0x2aaa('0x2a')][_0x2aaa('0x2b')]};});_0x166dc0[_0x2aaa('0x2c')]=_[_0x2aaa('0x28')](_0x19472b,_0x2aaa('0x25'));_0x166dc0[_0x2aaa('0x2d')]=_[_0x2aaa('0x2e')](_0x3a6a63[_0x2aaa('0x2d')]);_0x166dc0[_0x2aaa('0x2f')]=_[_0x2aaa('0x30')](_0x166dc0['model'],_0x166dc0['query']);_0x2f8305['attributes']=_['intersection'](_0x166dc0['model'],qs[_0x2aaa('0x31')](_0x3a6a63[_0x2aaa('0x2d')][_0x2aaa('0x31')]));_0x2f8305[_0x2aaa('0x32')]=_0x2f8305[_0x2aaa('0x32')][_0x2aaa('0x33')]?_0x2f8305[_0x2aaa('0x32')]:_0x166dc0[_0x2aaa('0x2c')];if(!_0x3a6a63['query'][_0x2aaa('0x34')](_0x2aaa('0x35'))){_0x2f8305['limit']=qs[_0x2aaa('0x1c')](_0x3a6a63[_0x2aaa('0x2d')]['limit']);_0x2f8305[_0x2aaa('0x1b')]=qs[_0x2aaa('0x1b')](_0x3a6a63[_0x2aaa('0x2d')][_0x2aaa('0x1b')]);}_0x2f8305[_0x2aaa('0x36')]=qs[_0x2aaa('0x37')](_0x3a6a63[_0x2aaa('0x2d')]['sort']);_0x2f8305['where']=qs[_0x2aaa('0x2f')](_['pick'](_0x3a6a63[_0x2aaa('0x2d')],_0x166dc0[_0x2aaa('0x2f')]),_0x19472b);if(_0x3a6a63['query'][_0x2aaa('0x38')]){_0x2f8305[_0x2aaa('0x39')]=_[_0x2aaa('0x3a')](_0x2f8305['where'],{'$or':_[_0x2aaa('0x28')](_0x19472b,function(_0x337ae8){if(_0x337ae8[_0x2aaa('0x2a')]!==_0x2aaa('0x3b')){var _0x5023d2={};_0x5023d2[_0x337ae8[_0x2aaa('0x25')]]={'$like':'%'+_0x3a6a63[_0x2aaa('0x2d')][_0x2aaa('0x38')]+'%'};return _0x5023d2;}})});}_0x2f8305=_[_0x2aaa('0x3a')]({},_0x2f8305,_0x3a6a63[_0x2aaa('0x3c')]);var _0x362060={'where':_0x2f8305[_0x2aaa('0x39')]};return db[_0x2aaa('0x29')][_0x2aaa('0x1a')](_0x362060)[_0x2aaa('0x22')](function(_0x127f7e){_0x12cd47[_0x2aaa('0x1a')]=_0x127f7e;if(_0x3a6a63[_0x2aaa('0x2d')]['includeAll']){_0x2f8305[_0x2aaa('0x3d')]=[{'all':!![]}];}return db[_0x2aaa('0x29')][_0x2aaa('0x3e')](_0x2f8305);})['then'](function(_0x17042f){_0x12cd47[_0x2aaa('0x3f')]=_0x17042f;return _0x12cd47;})[_0x2aaa('0x22')](respondWithFilteredResult(_0x292297,_0x2f8305))['catch'](handleError(_0x292297,null));};exports[_0x2aaa('0x40')]=function(_0x1bb225,_0x25b932){var _0x4ad537={'raw':!![],'where':{'id':_0x1bb225[_0x2aaa('0x41')]['id']}},_0x57554e={};_0x57554e[_0x2aaa('0x2c')]=_[_0x2aaa('0x2e')](db['FreshdeskField'][_0x2aaa('0x42')]);_0x57554e[_0x2aaa('0x2d')]=_[_0x2aaa('0x2e')](_0x1bb225[_0x2aaa('0x2d')]);_0x57554e[_0x2aaa('0x2f')]=_[_0x2aaa('0x30')](_0x57554e[_0x2aaa('0x2c')],_0x57554e[_0x2aaa('0x2d')]);_0x4ad537['attributes']=_['intersection'](_0x57554e[_0x2aaa('0x2c')],qs['fields'](_0x1bb225[_0x2aaa('0x2d')]['fields']));_0x4ad537['attributes']=_0x4ad537['attributes'][_0x2aaa('0x33')]?_0x4ad537[_0x2aaa('0x32')]:_0x57554e['model'];if(_0x1bb225[_0x2aaa('0x2d')][_0x2aaa('0x43')]){_0x4ad537['include']=[{'all':!![]}];}_0x4ad537=_[_0x2aaa('0x3a')]({},_0x4ad537,_0x1bb225['options']);return db[_0x2aaa('0x29')][_0x2aaa('0x44')](_0x4ad537)['then'](handleEntityNotFound(_0x25b932,null))[_0x2aaa('0x22')](respondWithResult(_0x25b932,null))[_0x2aaa('0x45')](handleError(_0x25b932,null));};exports[_0x2aaa('0x46')]=function(_0x367a63,_0x745414){return db['FreshdeskField']['create'](_0x367a63['body'],{})[_0x2aaa('0x22')](respondWithResult(_0x745414,0xc9))[_0x2aaa('0x45')](handleError(_0x745414,null));};exports[_0x2aaa('0x21')]=function(_0x393073,_0x23290d){if(_0x393073[_0x2aaa('0x47')]['id']){delete _0x393073[_0x2aaa('0x47')]['id'];}return db[_0x2aaa('0x29')][_0x2aaa('0x44')]({'where':{'id':_0x393073['params']['id']}})[_0x2aaa('0x22')](handleEntityNotFound(_0x23290d,null))[_0x2aaa('0x22')](saveUpdates(_0x393073[_0x2aaa('0x47')],null))[_0x2aaa('0x22')](respondWithResult(_0x23290d,null))['catch'](handleError(_0x23290d,null));};exports[_0x2aaa('0x23')]=function(_0xe935c3,_0x3906f8){return db['FreshdeskField']['find']({'where':{'id':_0xe935c3[_0x2aaa('0x41')]['id']}})[_0x2aaa('0x22')](handleEntityNotFound(_0x3906f8,null))[_0x2aaa('0x22')](removeEntity(_0x3906f8,null))[_0x2aaa('0x45')](handleError(_0x3906f8,null));};
\ No newline at end of file
index 63828f4..b76691d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['util','../../config/logger','bluebird','request-promise','path','rimraf','./intFreshdeskField.attributes','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','FieldId','lodash'];(function(_0x1af2e1,_0x50074e){var _0x126714=function(_0x172d88){while(--_0x172d88){_0x1af2e1['push'](_0x1af2e1['shift']());}};_0x126714(++_0x50074e);}(_0xb458,0x103));var _0x8b45=function(_0xec7927,_0x417df7){_0xec7927=_0xec7927-0x0;var _0xb16197=_0xb458[_0xec7927];return _0xb16197;};'use strict';var _=require(_0x8b45('0x0'));var util=require(_0x8b45('0x1'));var logger=require(_0x8b45('0x2'))('api');var moment=require('moment');var BPromise=require(_0x8b45('0x3'));var rp=require(_0x8b45('0x4'));var fs=require('fs');var path=require(_0x8b45('0x5'));var rimraf=require(_0x8b45('0x6'));var config=require('../../config/environment');var attributes=require(_0x8b45('0x7'));module['exports']=function(_0x5cc2d5,_0xe8d774){return _0x5cc2d5[_0x8b45('0x8')](_0x8b45('0x9'),attributes,{'tableName':_0x8b45('0xa'),'paranoid':![],'indexes':[{'name':_0x8b45('0xb'),'fields':['idField',_0x8b45('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7b5b=['path','rimraf','../../config/environment','./intFreshdeskField.attributes','exports','define','freshdesk_unique_index','idField','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x22107a,_0x8d8bf9){var _0x172940=function(_0x3ace18){while(--_0x3ace18){_0x22107a['push'](_0x22107a['shift']());}};_0x172940(++_0x8d8bf9);}(_0x7b5b,0x14a));var _0xb7b5=function(_0x49fe04,_0x5a55ab){_0x49fe04=_0x49fe04-0x0;var _0x40ff5d=_0x7b5b[_0x49fe04];return _0x40ff5d;};'use strict';var _=require('lodash');var util=require(_0xb7b5('0x0'));var logger=require(_0xb7b5('0x1'))(_0xb7b5('0x2'));var moment=require(_0xb7b5('0x3'));var BPromise=require(_0xb7b5('0x4'));var rp=require(_0xb7b5('0x5'));var fs=require('fs');var path=require(_0xb7b5('0x6'));var rimraf=require(_0xb7b5('0x7'));var config=require(_0xb7b5('0x8'));var attributes=require(_0xb7b5('0x9'));module[_0xb7b5('0xa')]=function(_0x3d2095,_0x2f8a37){return _0x3d2095[_0xb7b5('0xb')]('FreshdeskField',attributes,{'tableName':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':_0xb7b5('0xc'),'fields':[_0xb7b5('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3299263..cdb3cec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ae1=['info','FreshdeskField,\x20%s,\x20%s','request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x52cd24,_0x5d9cad){var _0x58be98=function(_0x3e0b6f){while(--_0x3e0b6f){_0x52cd24['push'](_0x52cd24['shift']());}};_0x58be98(++_0x5d9cad);}(_0x3ae1,0x1ea));var _0x13ae=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x3ae1[_0x40ac5e];return _0x2839d6;};'use strict';var _=require(_0x13ae('0x0'));var util=require(_0x13ae('0x1'));var moment=require('moment');var BPromise=require(_0x13ae('0x2'));var rs=require(_0x13ae('0x3'));var fs=require('fs');var Redis=require(_0x13ae('0x4'));var db=require(_0x13ae('0x5'))['db'];var utils=require(_0x13ae('0x6'));var logger=require('../../config/logger')(_0x13ae('0x7'));var config=require(_0x13ae('0x8'));var jayson=require(_0x13ae('0x9'));var client=jayson[_0x13ae('0xa')][_0x13ae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4224e3,_0x56b482,_0x23f43e){return new BPromise(function(_0x2c5e32,_0x1cbd4e){return client[_0x13ae('0xc')](_0x4224e3,_0x23f43e)[_0x13ae('0xd')](function(_0x28d9f0){logger[_0x13ae('0xe')](_0x13ae('0xf'),_0x56b482,_0x13ae('0x10'));logger['debug'](_0x13ae('0x11'),_0x56b482,_0x13ae('0x10'),JSON[_0x13ae('0x12')](_0x28d9f0));if(_0x28d9f0['error']){if(_0x28d9f0[_0x13ae('0x13')][_0x13ae('0x14')]===0x1f4){logger[_0x13ae('0x13')]('FreshdeskField,\x20%s,\x20%s',_0x56b482,_0x28d9f0[_0x13ae('0x13')][_0x13ae('0x15')]);return _0x1cbd4e(_0x28d9f0['error'][_0x13ae('0x15')]);}logger[_0x13ae('0x13')]('FreshdeskField,\x20%s,\x20%s',_0x56b482,_0x28d9f0[_0x13ae('0x13')][_0x13ae('0x15')]);return _0x2c5e32(_0x28d9f0['error']['message']);}else{logger[_0x13ae('0xe')](_0x13ae('0xf'),_0x56b482,_0x13ae('0x10'));_0x2c5e32(_0x28d9f0[_0x13ae('0x16')][_0x13ae('0x15')]);}})[_0x13ae('0x17')](function(_0x4c43da){logger[_0x13ae('0x13')]('FreshdeskField,\x20%s,\x20%s',_0x56b482,_0x4c43da);_0x1cbd4e(_0x4c43da);});});}
\ No newline at end of file
+var _0x60d7=['request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','FreshdeskField,\x20%s,\x20%s'];(function(_0x3bd1cf,_0xee67b1){var _0x4c158a=function(_0x4b68d6){while(--_0x4b68d6){_0x3bd1cf['push'](_0x3bd1cf['shift']());}};_0x4c158a(++_0xee67b1);}(_0x60d7,0x188));var _0x760d=function(_0x1377ab,_0x49dfcc){_0x1377ab=_0x1377ab-0x0;var _0x5a64b8=_0x60d7[_0x1377ab];return _0x5a64b8;};'use strict';var _=require(_0x760d('0x0'));var util=require(_0x760d('0x1'));var moment=require(_0x760d('0x2'));var BPromise=require(_0x760d('0x3'));var rs=require(_0x760d('0x4'));var fs=require('fs');var Redis=require(_0x760d('0x5'));var db=require(_0x760d('0x6'))['db'];var utils=require(_0x760d('0x7'));var logger=require('../../config/logger')(_0x760d('0x8'));var config=require(_0x760d('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x760d('0xa')][_0x760d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5abc56,_0x378fa7,_0x2fa70c){return new BPromise(function(_0x5527cb,_0x24fc40){return client[_0x760d('0xc')](_0x5abc56,_0x2fa70c)[_0x760d('0xd')](function(_0xcff780){logger[_0x760d('0xe')](_0x760d('0xf'),_0x378fa7,_0x760d('0x10'));logger[_0x760d('0x11')](_0x760d('0x12'),_0x378fa7,_0x760d('0x10'),JSON[_0x760d('0x13')](_0xcff780));if(_0xcff780[_0x760d('0x14')]){if(_0xcff780[_0x760d('0x14')][_0x760d('0x15')]===0x1f4){logger[_0x760d('0x14')](_0x760d('0xf'),_0x378fa7,_0xcff780['error']['message']);return _0x24fc40(_0xcff780[_0x760d('0x14')][_0x760d('0x16')]);}logger['error'](_0x760d('0xf'),_0x378fa7,_0xcff780['error'][_0x760d('0x16')]);return _0x5527cb(_0xcff780['error']['message']);}else{logger[_0x760d('0xe')](_0x760d('0xf'),_0x378fa7,_0x760d('0x10'));_0x5527cb(_0xcff780[_0x760d('0x17')]['message']);}})['catch'](function(_0x46ca0d){logger[_0x760d('0x14')]('FreshdeskField,\x20%s,\x20%s',_0x378fa7,_0x46ca0d);_0x24fc40(_0x46ca0d);});});}
\ No newline at end of file
index 92e6ce2..1252aa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfcc=['destroy','exports','multer','connect-timeout','express','Router','fs-extra','get','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','/:id','update'];(function(_0x54c56d,_0x4a95b5){var _0x1a7059=function(_0x25a5c2){while(--_0x25a5c2){_0x54c56d['push'](_0x54c56d['shift']());}};_0x1a7059(++_0x4a95b5);}(_0xbfcc,0x1dd));var _0xcbfc=function(_0x3aaf0a,_0x450970){_0x3aaf0a=_0x3aaf0a-0x0;var _0x33e6bc=_0xbfcc[_0x3aaf0a];return _0x33e6bc;};'use strict';var multer=require(_0xcbfc('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xcbfc('0x1'));var express=require(_0xcbfc('0x2'));var router=express[_0xcbfc('0x3')]();var fs_extra=require(_0xcbfc('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intFreshsalesAccount.controller');router[_0xcbfc('0x5')]('/',auth[_0xcbfc('0x6')](),controller['index']);router[_0xcbfc('0x5')]('/:id',auth[_0xcbfc('0x6')](),controller[_0xcbfc('0x7')]);router[_0xcbfc('0x5')](_0xcbfc('0x8'),auth['isAuthenticated'](),controller[_0xcbfc('0x9')]);router[_0xcbfc('0x5')](_0xcbfc('0xa'),auth[_0xcbfc('0x6')](),controller[_0xcbfc('0xb')]);router[_0xcbfc('0xc')]('/',auth['isAuthenticated'](),controller[_0xcbfc('0xd')]);router[_0xcbfc('0xc')](_0xcbfc('0x8'),auth[_0xcbfc('0x6')](),controller[_0xcbfc('0xe')]);router['put'](_0xcbfc('0xf'),auth[_0xcbfc('0x6')](),controller[_0xcbfc('0x10')]);router['delete'](_0xcbfc('0xf'),auth[_0xcbfc('0x6')](),controller[_0xcbfc('0x11')]);module[_0xcbfc('0x12')]=router;
\ No newline at end of file
+var _0xcb91=['addConfiguration','update','delete','/:id','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intFreshsalesAccount.controller','get','index','isAuthenticated','show','/:id/configurations','/:id/fields','getFields','post','create'];(function(_0x2cfb48,_0x24b83b){var _0xc4594f=function(_0x3bc089){while(--_0x3bc089){_0x2cfb48['push'](_0x2cfb48['shift']());}};_0xc4594f(++_0x24b83b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1d70db,_0x142b63){_0x1d70db=_0x1d70db-0x0;var _0x3060c6=_0xcb91[_0x1d70db];return _0x3060c6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/:id',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x1cb9('0x7')](_0x1cb9('0xc'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xd')]);router[_0x1cb9('0xe')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0xf')]);router[_0x1cb9('0xe')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x10')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x12')](_0x1cb9('0x13'),auth[_0x1cb9('0x9')](),controller['destroy']);module[_0x1cb9('0x14')]=router;
\ No newline at end of file
index a291563..ab5765f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3de3=['username','remoteUri','sequelize','STRING'];(function(_0x4914e2,_0x48be8f){var _0x2dcd07=function(_0x1a2565){while(--_0x1a2565){_0x4914e2['push'](_0x4914e2['shift']());}};_0x2dcd07(++_0x48be8f);}(_0x3de3,0x1ce));var _0x33de=function(_0x574b9b,_0x54e573){_0x574b9b=_0x574b9b-0x0;var _0x16ff80=_0x3de3[_0x574b9b];return _0x16ff80;};'use strict';var Sequelize=require(_0x33de('0x0'));module['exports']={'name':{'type':Sequelize[_0x33de('0x1')]},'description':{'type':Sequelize[_0x33de('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x33de('0x2')},'apiKey':{'type':Sequelize[_0x33de('0x1')]},'remoteUri':{'type':Sequelize[_0x33de('0x1')],'unique':_0x33de('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x02ce=['sequelize','exports','STRING','remoteUri'];(function(_0x2a1a21,_0x37e9f8){var _0x239c3d=function(_0x2a6e8b){while(--_0x2a6e8b){_0x2a1a21['push'](_0x2a1a21['shift']());}};_0x239c3d(++_0x37e9f8);}(_0x02ce,0x1ac));var _0xe02c=function(_0x38ef5a,_0x2aea7d){_0x38ef5a=_0x38ef5a-0x0;var _0x15470f=_0x02ce[_0x38ef5a];return _0x15470f;};'use strict';var Sequelize=require(_0xe02c('0x0'));module[_0xe02c('0x1')]={'name':{'type':Sequelize[_0xe02c('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xe02c('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0xe02c('0x2')]},'remoteUri':{'type':Sequelize[_0xe02c('0x2')],'unique':_0xe02c('0x3')},'serverUrl':{'type':Sequelize[_0xe02c('0x2')],'allowNull':![]}};
\ No newline at end of file
index a8cb64e..0c98e8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1060=['to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','end','offset','undefined','limit','count','status','set','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','FreshsalesAccount','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','length','order','sort','pick','filter','merge','where','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','getConfigurations','FreshsalesConfiguration','hasOwnProperty','nolimit','addConfiguration','findOne','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','getFields','username','remoteUri','apiKey','slice','substring','GET','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js'];(function(_0x245545,_0x4983b3){var _0x106a5f=function(_0x278277){while(--_0x278277){_0x245545['push'](_0x245545['shift']());}};_0x106a5f(++_0x4983b3);}(_0x1060,0xc1));var _0x0106=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x1060[_0x5f1391];return _0x50ebe3;};'use strict';var emlformat=require(_0x0106('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0106('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0106('0x2'));var moment=require('moment');var BPromise=require(_0x0106('0x3'));var Mustache=require(_0x0106('0x4'));var util=require(_0x0106('0x5'));var path=require(_0x0106('0x6'));var sox=require(_0x0106('0x7'));var csv=require('to-csv');var ejs=require(_0x0106('0x8'));var fs=require('fs');var fs_extra=require(_0x0106('0x9'));var _=require('lodash');var squel=require(_0x0106('0xa'));var crypto=require(_0x0106('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x0106('0xc'));var toCsv=require(_0x0106('0xd'));var querystring=require(_0x0106('0xe'));var Papa=require(_0x0106('0xf'));var Redis=require(_0x0106('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x0106('0x11'));var hardwareService=require(_0x0106('0x12'));var logger=require(_0x0106('0x13'))(_0x0106('0x14'));var utils=require(_0x0106('0x15'));var config=require(_0x0106('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x0106('0x17'))['db'];var integrations=require(_0x0106('0x18'));function respondWithStatusCode(_0x50cc9a,_0x470ab4){_0x470ab4=_0x470ab4||0xcc;return function(_0x1e0900){if(_0x1e0900){return _0x50cc9a['sendStatus'](_0x470ab4);}return _0x50cc9a['status'](_0x470ab4)[_0x0106('0x19')]();};}function respondWithResult(_0x519fe1,_0x5af373){_0x5af373=_0x5af373||0xc8;return function(_0x5f2fea){if(_0x5f2fea){return _0x519fe1['status'](_0x5af373)['json'](_0x5f2fea);}};}function respondWithFilteredResult(_0x4ae86e,_0x472e79){return function(_0x5a60b1){if(_0x5a60b1){var _0x52da27=typeof _0x472e79[_0x0106('0x1a')]===_0x0106('0x1b')&&typeof _0x472e79[_0x0106('0x1c')]===_0x0106('0x1b');var _0x38dd7e=_0x5a60b1[_0x0106('0x1d')];var _0xec8593=_0x52da27?0x0:_0x472e79[_0x0106('0x1a')];var _0x176b4a=_0x52da27?_0x5a60b1[_0x0106('0x1d')]:_0x472e79[_0x0106('0x1a')]+_0x472e79['limit'];var _0x4dabf1;if(_0x176b4a>=_0x38dd7e){_0x176b4a=_0x38dd7e;_0x4dabf1=0xc8;}else{_0x4dabf1=0xce;}_0x4ae86e[_0x0106('0x1e')](_0x4dabf1);return _0x4ae86e[_0x0106('0x1f')]('Content-Range',_0xec8593+'-'+_0x176b4a+'/'+_0x38dd7e)[_0x0106('0x20')](_0x5a60b1);}return null;};}function patchUpdates(_0x3479dc){return function(_0x41c214){try{jsonpatch[_0x0106('0x21')](_0x41c214,_0x3479dc,!![]);}catch(_0x437fe6){return BPromise[_0x0106('0x22')](_0x437fe6);}return _0x41c214[_0x0106('0x23')]();};}function saveUpdates(_0x19b1d2,_0x19b469){return function(_0x5f5a30){if(_0x5f5a30){return _0x5f5a30[_0x0106('0x24')](_0x19b1d2)[_0x0106('0x25')](function(_0x5f5904){return _0x5f5904;});}return null;};}function removeEntity(_0x35b0f3,_0x379800){return function(_0x36970d){if(_0x36970d){return _0x36970d[_0x0106('0x26')]()[_0x0106('0x25')](function(){_0x35b0f3['status'](0xcc)[_0x0106('0x19')]();});}};}function handleEntityNotFound(_0xea66a6,_0x4927be){return function(_0x50832a){if(!_0x50832a){_0xea66a6['sendStatus'](0x194);}return _0x50832a;};}function handleError(_0x51c21b,_0x3442d8){_0x3442d8=_0x3442d8||0x1f4;return function(_0x12b41a){logger[_0x0106('0x27')](_0x12b41a[_0x0106('0x28')]);if(_0x12b41a[_0x0106('0x29')]){delete _0x12b41a[_0x0106('0x29')];}_0x51c21b[_0x0106('0x1e')](_0x3442d8)[_0x0106('0x2a')](_0x12b41a);};}exports[_0x0106('0x2b')]=function(_0x3baf08,_0x2b24db){var _0x3ac176={},_0x3ee407={},_0x14f2cf={'count':0x0,'rows':[]};var _0x496bf7=_[_0x0106('0x2c')](db[_0x0106('0x2d')][_0x0106('0x2e')],function(_0x897294){return{'name':_0x897294['fieldName'],'type':_0x897294[_0x0106('0x2f')][_0x0106('0x30')]};});_0x3ee407[_0x0106('0x31')]=_[_0x0106('0x2c')](_0x496bf7,_0x0106('0x29'));_0x3ee407['query']=_[_0x0106('0x32')](_0x3baf08[_0x0106('0x33')]);_0x3ee407[_0x0106('0x34')]=_[_0x0106('0x35')](_0x3ee407['model'],_0x3ee407[_0x0106('0x33')]);_0x3ac176['attributes']=_[_0x0106('0x35')](_0x3ee407['model'],qs['fields'](_0x3baf08[_0x0106('0x33')][_0x0106('0x36')]));_0x3ac176[_0x0106('0x37')]=_0x3ac176[_0x0106('0x37')][_0x0106('0x38')]?_0x3ac176['attributes']:_0x3ee407['model'];if(!_0x3baf08[_0x0106('0x33')]['hasOwnProperty']('nolimit')){_0x3ac176[_0x0106('0x1c')]=qs['limit'](_0x3baf08[_0x0106('0x33')][_0x0106('0x1c')]);_0x3ac176[_0x0106('0x1a')]=qs[_0x0106('0x1a')](_0x3baf08[_0x0106('0x33')][_0x0106('0x1a')]);}_0x3ac176[_0x0106('0x39')]=qs[_0x0106('0x3a')](_0x3baf08[_0x0106('0x33')][_0x0106('0x3a')]);_0x3ac176['where']=qs[_0x0106('0x34')](_[_0x0106('0x3b')](_0x3baf08[_0x0106('0x33')],_0x3ee407[_0x0106('0x34')]),_0x496bf7);if(_0x3baf08[_0x0106('0x33')][_0x0106('0x3c')]){_0x3ac176['where']=_[_0x0106('0x3d')](_0x3ac176[_0x0106('0x3e')],{'$or':_[_0x0106('0x2c')](_0x496bf7,function(_0x8d5189){if(_0x8d5189[_0x0106('0x2f')]!=='VIRTUAL'){var _0x429f32={};_0x429f32[_0x8d5189[_0x0106('0x29')]]={'$like':'%'+_0x3baf08['query'][_0x0106('0x3c')]+'%'};return _0x429f32;}})});}_0x3ac176=_[_0x0106('0x3d')]({},_0x3ac176,_0x3baf08[_0x0106('0x3f')]);var _0x3ea63d={'where':_0x3ac176[_0x0106('0x3e')]};return db[_0x0106('0x2d')][_0x0106('0x1d')](_0x3ea63d)[_0x0106('0x25')](function(_0x3ed405){_0x14f2cf[_0x0106('0x1d')]=_0x3ed405;if(_0x3baf08[_0x0106('0x33')][_0x0106('0x40')]){_0x3ac176['include']=[{'all':!![]}];}return db[_0x0106('0x2d')][_0x0106('0x41')](_0x3ac176);})[_0x0106('0x25')](function(_0x22dbd3){_0x14f2cf[_0x0106('0x42')]=_0x22dbd3;return _0x14f2cf;})['then'](respondWithFilteredResult(_0x2b24db,_0x3ac176))[_0x0106('0x43')](handleError(_0x2b24db,null));};exports[_0x0106('0x44')]=function(_0x371c4b,_0x5ca71d){var _0x16e5c5={'raw':![],'where':{'id':_0x371c4b[_0x0106('0x45')]['id']}},_0x4761d4={};_0x4761d4['model']=_[_0x0106('0x32')](db[_0x0106('0x2d')][_0x0106('0x2e')]);_0x4761d4[_0x0106('0x33')]=_[_0x0106('0x32')](_0x371c4b['query']);_0x4761d4[_0x0106('0x34')]=_[_0x0106('0x35')](_0x4761d4['model'],_0x4761d4[_0x0106('0x33')]);_0x16e5c5[_0x0106('0x37')]=_[_0x0106('0x35')](_0x4761d4[_0x0106('0x31')],qs[_0x0106('0x36')](_0x371c4b[_0x0106('0x33')][_0x0106('0x36')]));_0x16e5c5['attributes']=_0x16e5c5['attributes'][_0x0106('0x38')]?_0x16e5c5[_0x0106('0x37')]:_0x4761d4[_0x0106('0x31')];if(_0x371c4b['query']['includeAll']){_0x16e5c5[_0x0106('0x46')]=[{'all':!![]}];}_0x16e5c5=_[_0x0106('0x3d')]({},_0x16e5c5,_0x371c4b[_0x0106('0x3f')]);return db[_0x0106('0x2d')][_0x0106('0x47')](_0x16e5c5)['then'](handleEntityNotFound(_0x5ca71d,null))[_0x0106('0x25')](respondWithResult(_0x5ca71d,null))[_0x0106('0x43')](handleError(_0x5ca71d,null));};exports[_0x0106('0x48')]=function(_0x4f3bf8,_0x326ecf){return db['FreshsalesAccount']['create'](_0x4f3bf8[_0x0106('0x49')],{})[_0x0106('0x25')](respondWithResult(_0x326ecf,0xc9))[_0x0106('0x43')](handleError(_0x326ecf,null));};exports['update']=function(_0x56f4ed,_0x3bf9d0){if(_0x56f4ed[_0x0106('0x49')]['id']){delete _0x56f4ed[_0x0106('0x49')]['id'];}return db[_0x0106('0x2d')][_0x0106('0x47')]({'where':{'id':_0x56f4ed[_0x0106('0x45')]['id']}})[_0x0106('0x25')](handleEntityNotFound(_0x3bf9d0,null))[_0x0106('0x25')](saveUpdates(_0x56f4ed[_0x0106('0x49')],null))[_0x0106('0x25')](respondWithResult(_0x3bf9d0,null))[_0x0106('0x43')](handleError(_0x3bf9d0,null));};exports[_0x0106('0x26')]=function(_0x298329,_0x573c6d){return db[_0x0106('0x2d')][_0x0106('0x47')]({'where':{'id':_0x298329[_0x0106('0x45')]['id']}})['then'](handleEntityNotFound(_0x573c6d,null))['then'](removeEntity(_0x573c6d,null))[_0x0106('0x43')](handleError(_0x573c6d,null));};exports[_0x0106('0x4a')]=function(_0xc8b933,_0x5c4fd6,_0x5980e9){var _0x3e2942={};var _0x6c39f5={};var _0x5039ed;var _0x354bbf;return db['FreshsalesAccount']['findOne']({'where':{'id':_0xc8b933[_0x0106('0x45')]['id']}})['then'](handleEntityNotFound(_0x5c4fd6,null))[_0x0106('0x25')](function(_0xa5c45b){if(_0xa5c45b){_0x5039ed=_0xa5c45b;_0x6c39f5[_0x0106('0x31')]=_[_0x0106('0x32')](db[_0x0106('0x4b')][_0x0106('0x2e')]);_0x6c39f5['query']=_[_0x0106('0x32')](_0xc8b933[_0x0106('0x33')]);_0x6c39f5[_0x0106('0x34')]=_['intersection'](_0x6c39f5[_0x0106('0x31')],_0x6c39f5['query']);_0x3e2942['attributes']=_[_0x0106('0x35')](_0x6c39f5[_0x0106('0x31')],qs[_0x0106('0x36')](_0xc8b933[_0x0106('0x33')][_0x0106('0x36')]));_0x3e2942[_0x0106('0x37')]=_0x3e2942[_0x0106('0x37')][_0x0106('0x38')]?_0x3e2942[_0x0106('0x37')]:_0x6c39f5['model'];_0x3e2942[_0x0106('0x39')]=qs['sort'](_0xc8b933[_0x0106('0x33')][_0x0106('0x3a')]);_0x3e2942['where']=qs[_0x0106('0x34')](_[_0x0106('0x3b')](_0xc8b933[_0x0106('0x33')],_0x6c39f5[_0x0106('0x34')]));if(_0xc8b933[_0x0106('0x33')][_0x0106('0x3c')]){_0x3e2942[_0x0106('0x3e')]=_[_0x0106('0x3d')](_0x3e2942[_0x0106('0x3e')],{'$or':_[_0x0106('0x2c')](_0x3e2942['attributes'],function(_0x5ce4e9){var _0x3165c2={};_0x3165c2[_0x5ce4e9]={'$like':'%'+_0xc8b933[_0x0106('0x33')][_0x0106('0x3c')]+'%'};return _0x3165c2;})});}_0x3e2942=_[_0x0106('0x3d')]({},_0x3e2942,_0xc8b933[_0x0106('0x3f')]);return _0x5039ed[_0x0106('0x4a')](_0x3e2942);}})['then'](function(_0x16894a){if(_0x16894a){_0x354bbf=_0x16894a[_0x0106('0x38')];if(!_0xc8b933[_0x0106('0x33')][_0x0106('0x4c')](_0x0106('0x4d'))){_0x3e2942['limit']=qs[_0x0106('0x1c')](_0xc8b933['query'][_0x0106('0x1c')]);_0x3e2942[_0x0106('0x1a')]=qs['offset'](_0xc8b933[_0x0106('0x33')][_0x0106('0x1a')]);}return _0x5039ed[_0x0106('0x4a')](_0x3e2942);}})[_0x0106('0x25')](function(_0x903ac8){if(_0x903ac8){return _0x903ac8?{'count':_0x354bbf,'rows':_0x903ac8}:null;}})[_0x0106('0x25')](respondWithResult(_0x5c4fd6,null))[_0x0106('0x43')](handleError(_0x5c4fd6,null));};exports[_0x0106('0x4e')]=function(_0x24b8bc,_0x160875,_0x10a481){if(_0x24b8bc['body']['id']){delete _0x24b8bc[_0x0106('0x49')]['id'];}return db[_0x0106('0x2d')][_0x0106('0x4f')]({'where':{'id':_0x24b8bc[_0x0106('0x45')]['id']}})[_0x0106('0x25')](handleEntityNotFound(_0x160875,null))[_0x0106('0x25')](function(_0x399c87){if(_0x399c87){_0x24b8bc[_0x0106('0x49')]['AccountId']=_0x399c87['id'];_0x24b8bc[_0x0106('0x49')][_0x0106('0x50')]=integrations[_0x0106('0x51')](_0x24b8bc['body'][_0x0106('0x52')],_0x24b8bc[_0x0106('0x49')][_0x0106('0x2f')]);_0x24b8bc[_0x0106('0x49')][_0x0106('0x53')]=integrations[_0x0106('0x54')](_0x24b8bc[_0x0106('0x49')][_0x0106('0x52')],_0x24b8bc[_0x0106('0x49')][_0x0106('0x2f')]);return db[_0x0106('0x4b')][_0x0106('0x48')](_0x24b8bc[_0x0106('0x49')],{'include':[{'model':db[_0x0106('0x55')],'as':_0x0106('0x50')},{'model':db['FreshsalesField'],'as':_0x0106('0x53')}]});}return null;})[_0x0106('0x25')](respondWithResult(_0x160875,null))['catch'](handleError(_0x160875,null));};exports[_0x0106('0x56')]=function(_0x5e2f96,_0x12a79f,_0x2aa0e2){var _0x580a5d='';var _0x119aad='';return db[_0x0106('0x2d')]['findOne']({'where':{'id':_0x5e2f96['params']['id']},'attributes':['id',_0x0106('0x57'),_0x0106('0x58'),_0x0106('0x59')]})[_0x0106('0x25')](handleEntityNotFound(_0x12a79f,null))[_0x0106('0x25')](function(_0x26eece){if(_0x26eece){_0x119aad=_0x26eece[_0x0106('0x57')];_0x580a5d=_0x26eece[_0x0106('0x58')];var _0x5d7e29=_0x26eece['remoteUri'][_0x0106('0x5a')](-0x1);if(_0x5d7e29==='/'){_0x580a5d=_0x580a5d[_0x0106('0x5b')](0x0,_0x580a5d['lastIndexOf'](_0x5d7e29));}return rp({'method':_0x0106('0x5c'),'uri':util['format']('%s%s',_0x580a5d,_0x0106('0x5d')),'headers':{'Authorization':_0x0106('0x5e')+_0x26eece[_0x0106('0x59')]},'json':!![]});}})[_0x0106('0x25')](function(_0x105c0e){if(_0x105c0e){var _0x19125b=_0x105c0e[_0x0106('0x5f')];var _0x210b0a=![];var _0x445884=null;for(_0x445884=0x0;_0x445884<_0x19125b[_0x0106('0x38')];_0x445884++){if(_0x19125b[_0x445884][_0x0106('0x60')]===_0x119aad){_0x210b0a=!![];}}if(_0x210b0a){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x0106('0x61')});}}})[_0x0106('0x25')](respondWithResult(_0x12a79f,null))['catch'](function(_0x1a5e8c){var _0x5bbdc1=_0x5e2f96[_0x0106('0x33')][_0x0106('0x62')]?0x1f4:_0x1a5e8c['statusCode']||0x1f4;logger[_0x0106('0x27')](_0x0106('0x63'),_0x0106('0x56'),_0x5bbdc1,JSON[_0x0106('0x64')](_0x1a5e8c));delete _0x1a5e8c[_0x0106('0x29')];if(_0x5bbdc1===0x191){_0x5bbdc1=0x190;}_0x12a79f[_0x0106('0x1e')](_0x5bbdc1)['send'](_0x5e2f96['query']['test']?{'message':_0x0106('0x65'),'statusCode':_0x1a5e8c[_0x0106('0x66')]}:_0x1a5e8c);});};
\ No newline at end of file
+var _0x7e76=['test','statusCode','error','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','name','send','index','map','FreshsalesAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','filter','merge','where','VIRTUAL','options','include','findAll','rows','catch','params','includeAll','find','create','body','FreshsalesConfiguration','order','pick','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','FreshsalesField','getFields','findOne','remoteUri','slice','lastIndexOf','GET','format','/api/selector/owners','apiKey','users'];(function(_0x1dfaef,_0x359a43){var _0x496fed=function(_0x283357){while(--_0x283357){_0x1dfaef['push'](_0x1dfaef['shift']());}};_0x496fed(++_0x359a43);}(_0x7e76,0x134));var _0x67e7=function(_0x1400d0,_0x12300e){_0x1400d0=_0x1400d0-0x0;var _0x5bebc5=_0x7e76[_0x1400d0];return _0x5bebc5;};'use strict';var emlformat=require(_0x67e7('0x0'));var rimraf=require(_0x67e7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x67e7('0x2'));var rp=require(_0x67e7('0x3'));var moment=require(_0x67e7('0x4'));var BPromise=require(_0x67e7('0x5'));var Mustache=require('mustache');var util=require(_0x67e7('0x6'));var path=require(_0x67e7('0x7'));var sox=require(_0x67e7('0x8'));var csv=require(_0x67e7('0x9'));var ejs=require(_0x67e7('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x67e7('0xb'));var squel=require(_0x67e7('0xc'));var crypto=require(_0x67e7('0xd'));var jsforce=require(_0x67e7('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x67e7('0x9'));var querystring=require('querystring');var Papa=require(_0x67e7('0xf'));var Redis=require(_0x67e7('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x67e7('0x11'));var as=require(_0x67e7('0x12'));var hardwareService=require(_0x67e7('0x13'));var logger=require(_0x67e7('0x14'))(_0x67e7('0x15'));var utils=require(_0x67e7('0x16'));var config=require(_0x67e7('0x17'));var licenseUtil=require(_0x67e7('0x18'));var db=require(_0x67e7('0x19'))['db'];var integrations=require(_0x67e7('0x1a'));function respondWithStatusCode(_0x20ced8,_0x514d3c){_0x514d3c=_0x514d3c||0xcc;return function(_0x422ac8){if(_0x422ac8){return _0x20ced8[_0x67e7('0x1b')](_0x514d3c);}return _0x20ced8[_0x67e7('0x1c')](_0x514d3c)[_0x67e7('0x1d')]();};}function respondWithResult(_0x847f5f,_0x5e709e){_0x5e709e=_0x5e709e||0xc8;return function(_0x1c8aef){if(_0x1c8aef){return _0x847f5f[_0x67e7('0x1c')](_0x5e709e)[_0x67e7('0x1e')](_0x1c8aef);}};}function respondWithFilteredResult(_0x80ec2b,_0x1a0f08){return function(_0x4e6c0f){if(_0x4e6c0f){var _0x986568=typeof _0x1a0f08[_0x67e7('0x1f')]===_0x67e7('0x20')&&typeof _0x1a0f08[_0x67e7('0x21')]==='undefined';var _0x3306d2=_0x4e6c0f[_0x67e7('0x22')];var _0x33eb9f=_0x986568?0x0:_0x1a0f08[_0x67e7('0x1f')];var _0x147e05=_0x986568?_0x4e6c0f['count']:_0x1a0f08[_0x67e7('0x1f')]+_0x1a0f08[_0x67e7('0x21')];var _0x1918bb;if(_0x147e05>=_0x3306d2){_0x147e05=_0x3306d2;_0x1918bb=0xc8;}else{_0x1918bb=0xce;}_0x80ec2b['status'](_0x1918bb);return _0x80ec2b[_0x67e7('0x23')]('Content-Range',_0x33eb9f+'-'+_0x147e05+'/'+_0x3306d2)[_0x67e7('0x1e')](_0x4e6c0f);}return null;};}function patchUpdates(_0x568441){return function(_0x13a38b){try{jsonpatch[_0x67e7('0x24')](_0x13a38b,_0x568441,!![]);}catch(_0x555508){return BPromise[_0x67e7('0x25')](_0x555508);}return _0x13a38b[_0x67e7('0x26')]();};}function saveUpdates(_0x56068c,_0xa2b7aa){return function(_0x5e9667){if(_0x5e9667){return _0x5e9667[_0x67e7('0x27')](_0x56068c)[_0x67e7('0x28')](function(_0x28f0c2){return _0x28f0c2;});}return null;};}function removeEntity(_0x318675,_0x79631a){return function(_0x13f166){if(_0x13f166){return _0x13f166[_0x67e7('0x29')]()[_0x67e7('0x28')](function(){_0x318675['status'](0xcc)[_0x67e7('0x1d')]();});}};}function handleEntityNotFound(_0x1b9e9b,_0x3594e6){return function(_0x3393c1){if(!_0x3393c1){_0x1b9e9b[_0x67e7('0x1b')](0x194);}return _0x3393c1;};}function handleError(_0x170312,_0x447809){_0x447809=_0x447809||0x1f4;return function(_0x1e041b){logger['error'](_0x1e041b['stack']);if(_0x1e041b[_0x67e7('0x2a')]){delete _0x1e041b[_0x67e7('0x2a')];}_0x170312[_0x67e7('0x1c')](_0x447809)[_0x67e7('0x2b')](_0x1e041b);};}exports[_0x67e7('0x2c')]=function(_0x2d049d,_0xc6413c){var _0x23c7d3={},_0x403720={},_0x1b0d1e={'count':0x0,'rows':[]};var _0x1ec34d=_[_0x67e7('0x2d')](db[_0x67e7('0x2e')][_0x67e7('0x2f')],function(_0x360a63){return{'name':_0x360a63[_0x67e7('0x30')],'type':_0x360a63[_0x67e7('0x31')][_0x67e7('0x32')]};});_0x403720[_0x67e7('0x33')]=_['map'](_0x1ec34d,_0x67e7('0x2a'));_0x403720[_0x67e7('0x34')]=_[_0x67e7('0x35')](_0x2d049d['query']);_0x403720[_0x67e7('0x36')]=_[_0x67e7('0x37')](_0x403720[_0x67e7('0x33')],_0x403720['query']);_0x23c7d3['attributes']=_[_0x67e7('0x37')](_0x403720[_0x67e7('0x33')],qs[_0x67e7('0x38')](_0x2d049d['query'][_0x67e7('0x38')]));_0x23c7d3[_0x67e7('0x39')]=_0x23c7d3[_0x67e7('0x39')][_0x67e7('0x3a')]?_0x23c7d3[_0x67e7('0x39')]:_0x403720[_0x67e7('0x33')];if(!_0x2d049d[_0x67e7('0x34')][_0x67e7('0x3b')]('nolimit')){_0x23c7d3[_0x67e7('0x21')]=qs['limit'](_0x2d049d['query'][_0x67e7('0x21')]);_0x23c7d3[_0x67e7('0x1f')]=qs[_0x67e7('0x1f')](_0x2d049d[_0x67e7('0x34')]['offset']);}_0x23c7d3['order']=qs[_0x67e7('0x3c')](_0x2d049d[_0x67e7('0x34')][_0x67e7('0x3c')]);_0x23c7d3['where']=qs[_0x67e7('0x36')](_['pick'](_0x2d049d[_0x67e7('0x34')],_0x403720[_0x67e7('0x36')]),_0x1ec34d);if(_0x2d049d[_0x67e7('0x34')][_0x67e7('0x3d')]){_0x23c7d3['where']=_[_0x67e7('0x3e')](_0x23c7d3[_0x67e7('0x3f')],{'$or':_[_0x67e7('0x2d')](_0x1ec34d,function(_0x31a746){if(_0x31a746[_0x67e7('0x31')]!==_0x67e7('0x40')){var _0x1e19da={};_0x1e19da[_0x31a746[_0x67e7('0x2a')]]={'$like':'%'+_0x2d049d['query']['filter']+'%'};return _0x1e19da;}})});}_0x23c7d3=_[_0x67e7('0x3e')]({},_0x23c7d3,_0x2d049d[_0x67e7('0x41')]);var _0x57b126={'where':_0x23c7d3[_0x67e7('0x3f')]};return db['FreshsalesAccount'][_0x67e7('0x22')](_0x57b126)[_0x67e7('0x28')](function(_0x3472b2){_0x1b0d1e[_0x67e7('0x22')]=_0x3472b2;if(_0x2d049d['query']['includeAll']){_0x23c7d3[_0x67e7('0x42')]=[{'all':!![]}];}return db[_0x67e7('0x2e')][_0x67e7('0x43')](_0x23c7d3);})[_0x67e7('0x28')](function(_0x2a2063){_0x1b0d1e[_0x67e7('0x44')]=_0x2a2063;return _0x1b0d1e;})[_0x67e7('0x28')](respondWithFilteredResult(_0xc6413c,_0x23c7d3))[_0x67e7('0x45')](handleError(_0xc6413c,null));};exports['show']=function(_0x403b36,_0x4f305c){var _0x2a17e6={'raw':![],'where':{'id':_0x403b36[_0x67e7('0x46')]['id']}},_0x115070={};_0x115070[_0x67e7('0x33')]=_['keys'](db[_0x67e7('0x2e')][_0x67e7('0x2f')]);_0x115070['query']=_['keys'](_0x403b36[_0x67e7('0x34')]);_0x115070['filters']=_[_0x67e7('0x37')](_0x115070[_0x67e7('0x33')],_0x115070[_0x67e7('0x34')]);_0x2a17e6[_0x67e7('0x39')]=_['intersection'](_0x115070[_0x67e7('0x33')],qs[_0x67e7('0x38')](_0x403b36[_0x67e7('0x34')][_0x67e7('0x38')]));_0x2a17e6[_0x67e7('0x39')]=_0x2a17e6[_0x67e7('0x39')][_0x67e7('0x3a')]?_0x2a17e6['attributes']:_0x115070[_0x67e7('0x33')];if(_0x403b36[_0x67e7('0x34')][_0x67e7('0x47')]){_0x2a17e6['include']=[{'all':!![]}];}_0x2a17e6=_[_0x67e7('0x3e')]({},_0x2a17e6,_0x403b36[_0x67e7('0x41')]);return db[_0x67e7('0x2e')][_0x67e7('0x48')](_0x2a17e6)[_0x67e7('0x28')](handleEntityNotFound(_0x4f305c,null))[_0x67e7('0x28')](respondWithResult(_0x4f305c,null))['catch'](handleError(_0x4f305c,null));};exports['create']=function(_0x1df6a9,_0x55c723){return db[_0x67e7('0x2e')][_0x67e7('0x49')](_0x1df6a9[_0x67e7('0x4a')],{})['then'](respondWithResult(_0x55c723,0xc9))[_0x67e7('0x45')](handleError(_0x55c723,null));};exports[_0x67e7('0x27')]=function(_0x2af923,_0x20daa3){if(_0x2af923[_0x67e7('0x4a')]['id']){delete _0x2af923[_0x67e7('0x4a')]['id'];}return db['FreshsalesAccount'][_0x67e7('0x48')]({'where':{'id':_0x2af923[_0x67e7('0x46')]['id']}})[_0x67e7('0x28')](handleEntityNotFound(_0x20daa3,null))[_0x67e7('0x28')](saveUpdates(_0x2af923[_0x67e7('0x4a')],null))[_0x67e7('0x28')](respondWithResult(_0x20daa3,null))[_0x67e7('0x45')](handleError(_0x20daa3,null));};exports[_0x67e7('0x29')]=function(_0x40633a,_0x1fcdae){return db[_0x67e7('0x2e')]['find']({'where':{'id':_0x40633a[_0x67e7('0x46')]['id']}})[_0x67e7('0x28')](handleEntityNotFound(_0x1fcdae,null))[_0x67e7('0x28')](removeEntity(_0x1fcdae,null))[_0x67e7('0x45')](handleError(_0x1fcdae,null));};exports['getConfigurations']=function(_0x22a7c3,_0x746a53,_0x5166f2){var _0x31bc32={};var _0xed8fff={};var _0x3c4b90;var _0x17b35b;return db['FreshsalesAccount']['findOne']({'where':{'id':_0x22a7c3['params']['id']}})[_0x67e7('0x28')](handleEntityNotFound(_0x746a53,null))[_0x67e7('0x28')](function(_0x47d40b){if(_0x47d40b){_0x3c4b90=_0x47d40b;_0xed8fff[_0x67e7('0x33')]=_['keys'](db[_0x67e7('0x4b')]['rawAttributes']);_0xed8fff[_0x67e7('0x34')]=_['keys'](_0x22a7c3[_0x67e7('0x34')]);_0xed8fff['filters']=_[_0x67e7('0x37')](_0xed8fff[_0x67e7('0x33')],_0xed8fff['query']);_0x31bc32[_0x67e7('0x39')]=_[_0x67e7('0x37')](_0xed8fff['model'],qs[_0x67e7('0x38')](_0x22a7c3['query'][_0x67e7('0x38')]));_0x31bc32[_0x67e7('0x39')]=_0x31bc32[_0x67e7('0x39')]['length']?_0x31bc32[_0x67e7('0x39')]:_0xed8fff[_0x67e7('0x33')];_0x31bc32[_0x67e7('0x4c')]=qs['sort'](_0x22a7c3[_0x67e7('0x34')][_0x67e7('0x3c')]);_0x31bc32[_0x67e7('0x3f')]=qs[_0x67e7('0x36')](_[_0x67e7('0x4d')](_0x22a7c3[_0x67e7('0x34')],_0xed8fff[_0x67e7('0x36')]));if(_0x22a7c3[_0x67e7('0x34')][_0x67e7('0x3d')]){_0x31bc32[_0x67e7('0x3f')]=_[_0x67e7('0x3e')](_0x31bc32[_0x67e7('0x3f')],{'$or':_[_0x67e7('0x2d')](_0x31bc32['attributes'],function(_0x19cc3e){var _0x38fe33={};_0x38fe33[_0x19cc3e]={'$like':'%'+_0x22a7c3[_0x67e7('0x34')][_0x67e7('0x3d')]+'%'};return _0x38fe33;})});}_0x31bc32=_[_0x67e7('0x3e')]({},_0x31bc32,_0x22a7c3[_0x67e7('0x41')]);return _0x3c4b90[_0x67e7('0x4e')](_0x31bc32);}})[_0x67e7('0x28')](function(_0x4281ba){if(_0x4281ba){_0x17b35b=_0x4281ba[_0x67e7('0x3a')];if(!_0x22a7c3[_0x67e7('0x34')][_0x67e7('0x3b')](_0x67e7('0x4f'))){_0x31bc32[_0x67e7('0x21')]=qs[_0x67e7('0x21')](_0x22a7c3['query'][_0x67e7('0x21')]);_0x31bc32[_0x67e7('0x1f')]=qs[_0x67e7('0x1f')](_0x22a7c3[_0x67e7('0x34')]['offset']);}return _0x3c4b90[_0x67e7('0x4e')](_0x31bc32);}})[_0x67e7('0x28')](function(_0x12aa91){if(_0x12aa91){return _0x12aa91?{'count':_0x17b35b,'rows':_0x12aa91}:null;}})[_0x67e7('0x28')](respondWithResult(_0x746a53,null))['catch'](handleError(_0x746a53,null));};exports[_0x67e7('0x50')]=function(_0x272bb6,_0x31d737,_0x2a3a42){if(_0x272bb6[_0x67e7('0x4a')]['id']){delete _0x272bb6['body']['id'];}return db[_0x67e7('0x2e')]['findOne']({'where':{'id':_0x272bb6[_0x67e7('0x46')]['id']}})[_0x67e7('0x28')](handleEntityNotFound(_0x31d737,null))[_0x67e7('0x28')](function(_0x248a70){if(_0x248a70){_0x272bb6[_0x67e7('0x4a')][_0x67e7('0x51')]=_0x248a70['id'];_0x272bb6[_0x67e7('0x4a')][_0x67e7('0x52')]=integrations[_0x67e7('0x53')](_0x272bb6[_0x67e7('0x4a')]['channel'],_0x272bb6[_0x67e7('0x4a')][_0x67e7('0x31')]);_0x272bb6['body'][_0x67e7('0x54')]=integrations['getDescriptions'](_0x272bb6[_0x67e7('0x4a')]['channel'],_0x272bb6['body'][_0x67e7('0x31')]);return db['FreshsalesConfiguration'][_0x67e7('0x49')](_0x272bb6[_0x67e7('0x4a')],{'include':[{'model':db[_0x67e7('0x55')],'as':_0x67e7('0x52')},{'model':db[_0x67e7('0x55')],'as':'Descriptions'}]});}return null;})[_0x67e7('0x28')](respondWithResult(_0x31d737,null))[_0x67e7('0x45')](handleError(_0x31d737,null));};exports[_0x67e7('0x56')]=function(_0x26d1b5,_0x3c5418,_0x328966){var _0x25d1a2='';var _0x2140d9='';return db[_0x67e7('0x2e')][_0x67e7('0x57')]({'where':{'id':_0x26d1b5[_0x67e7('0x46')]['id']},'attributes':['id','username','remoteUri','apiKey']})['then'](handleEntityNotFound(_0x3c5418,null))['then'](function(_0x3960d1){if(_0x3960d1){_0x2140d9=_0x3960d1['username'];_0x25d1a2=_0x3960d1[_0x67e7('0x58')];var _0x42f623=_0x3960d1[_0x67e7('0x58')][_0x67e7('0x59')](-0x1);if(_0x42f623==='/'){_0x25d1a2=_0x25d1a2['substring'](0x0,_0x25d1a2[_0x67e7('0x5a')](_0x42f623));}return rp({'method':_0x67e7('0x5b'),'uri':util[_0x67e7('0x5c')]('%s%s',_0x25d1a2,_0x67e7('0x5d')),'headers':{'Authorization':'Token\x20token='+_0x3960d1[_0x67e7('0x5e')]},'json':!![]});}})[_0x67e7('0x28')](function(_0x136041){if(_0x136041){var _0x5a7137=_0x136041[_0x67e7('0x5f')];var _0x4903b9=![];var _0x46508d=null;for(_0x46508d=0x0;_0x46508d<_0x5a7137[_0x67e7('0x3a')];_0x46508d++){if(_0x5a7137[_0x46508d]['email']===_0x2140d9){_0x4903b9=!![];}}if(_0x4903b9){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})[_0x67e7('0x28')](respondWithResult(_0x3c5418,null))[_0x67e7('0x45')](function(_0x3de03b){var _0x325e62=_0x26d1b5[_0x67e7('0x34')][_0x67e7('0x60')]?0x1f4:_0x3de03b[_0x67e7('0x61')]||0x1f4;logger[_0x67e7('0x62')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x325e62,JSON[_0x67e7('0x63')](_0x3de03b));delete _0x3de03b['name'];if(_0x325e62===0x191){_0x325e62=0x190;}_0x3c5418['status'](_0x325e62)['send'](_0x26d1b5[_0x67e7('0x34')][_0x67e7('0x60')]?{'message':_0x67e7('0x64'),'statusCode':_0x3de03b[_0x67e7('0x61')]}:_0x3de03b);});};
\ No newline at end of file
index 5d3fc51..3f748ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0424=['./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','FreshsalesAccount','../../config/logger','api','moment','bluebird','path'];(function(_0x511b27,_0x3ca555){var _0x50ad71=function(_0x21939f){while(--_0x21939f){_0x511b27['push'](_0x511b27['shift']());}};_0x50ad71(++_0x3ca555);}(_0x0424,0x159));var _0x4042=function(_0x544463,_0x214963){_0x544463=_0x544463-0x0;var _0x1add2a=_0x0424[_0x544463];return _0x1add2a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4042('0x0'))(_0x4042('0x1'));var moment=require(_0x4042('0x2'));var BPromise=require(_0x4042('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4042('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4042('0x5'));var integrations=require(_0x4042('0x6'));module[_0x4042('0x7')]=function(_0xc0fba0,_0x3abaf1){return _0xc0fba0[_0x4042('0x8')](_0x4042('0x9'),attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7ee1=['request-promise','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','FreshsalesAccount','lodash','moment','bluebird'];(function(_0x2dbbe2,_0x11424b){var _0x2e3147=function(_0x1912c0){while(--_0x1912c0){_0x2dbbe2['push'](_0x2dbbe2['shift']());}};_0x2e3147(++_0x11424b);}(_0x7ee1,0x8d));var _0x17ee=function(_0x5cd7d5,_0x226a83){_0x5cd7d5=_0x5cd7d5-0x0;var _0x3f9ea3=_0x7ee1[_0x5cd7d5];return _0x3f9ea3;};'use strict';var _=require(_0x17ee('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x17ee('0x1'));var BPromise=require(_0x17ee('0x2'));var rp=require(_0x17ee('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x17ee('0x4'));var config=require(_0x17ee('0x5'));var attributes=require(_0x17ee('0x6'));var integrations=require(_0x17ee('0x7'));module['exports']=function(_0x52b1db,_0x29b9eb){return _0x52b1db['define'](_0x17ee('0x8'),attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4fe19c0..77900c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a6d=['client','http','request','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetFreshsalesAccount','FreshsalesAccount','findAll','options','where','attributes','limit','include','model','map','debug','ShowFreshsalesAccount','find','raw','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x41c58c,_0x348cf6){var _0x4e90f0=function(_0x109f91){while(--_0x109f91){_0x41c58c['push'](_0x41c58c['shift']());}};_0x4e90f0(++_0x348cf6);}(_0x3a6d,0x143));var _0xd3a6=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x3a6d[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0xd3a6('0x0'));var util=require(_0xd3a6('0x1'));var moment=require('moment');var BPromise=require(_0xd3a6('0x2'));var rs=require(_0xd3a6('0x3'));var fs=require('fs');var Redis=require(_0xd3a6('0x4'));var db=require(_0xd3a6('0x5'))['db'];var utils=require(_0xd3a6('0x6'));var logger=require('../../config/logger')(_0xd3a6('0x7'));var config=require(_0xd3a6('0x8'));var jayson=require(_0xd3a6('0x9'));var client=jayson[_0xd3a6('0xa')][_0xd3a6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x282cb1,_0x58d83a,_0x121bd2){return new BPromise(function(_0x134dd3,_0x16858){return client[_0xd3a6('0xc')](_0x282cb1,_0x121bd2)[_0xd3a6('0xd')](function(_0xa67661){logger[_0xd3a6('0xe')](_0xd3a6('0xf'),_0x58d83a,_0xd3a6('0x10'));logger['debug'](_0xd3a6('0x11'),_0x58d83a,_0xd3a6('0x10'),JSON[_0xd3a6('0x12')](_0xa67661));if(_0xa67661[_0xd3a6('0x13')]){if(_0xa67661[_0xd3a6('0x13')]['code']===0x1f4){logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x58d83a,_0xa67661[_0xd3a6('0x13')][_0xd3a6('0x14')]);return _0x16858(_0xa67661[_0xd3a6('0x13')][_0xd3a6('0x14')]);}logger[_0xd3a6('0x13')](_0xd3a6('0xf'),_0x58d83a,_0xa67661[_0xd3a6('0x13')]['message']);return _0x134dd3(_0xa67661[_0xd3a6('0x13')][_0xd3a6('0x14')]);}else{logger[_0xd3a6('0xe')]('FreshsalesAccount,\x20%s,\x20%s',_0x58d83a,_0xd3a6('0x10'));_0x134dd3(_0xa67661[_0xd3a6('0x15')][_0xd3a6('0x14')]);}})['catch'](function(_0x3498d5){logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x58d83a,_0x3498d5);_0x16858(_0x3498d5);});});}exports[_0xd3a6('0x16')]=function(_0x8d1286){var _0x32683f=this;return new Promise(function(_0xbe58b4,_0x22fb05){return db[_0xd3a6('0x17')][_0xd3a6('0x18')]({'raw':_0x8d1286['options']?_0x8d1286[_0xd3a6('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x8d1286[_0xd3a6('0x19')]?_0x8d1286[_0xd3a6('0x19')][_0xd3a6('0x1a')]||null:null,'attributes':_0x8d1286[_0xd3a6('0x19')]?_0x8d1286[_0xd3a6('0x19')][_0xd3a6('0x1b')]||null:null,'limit':_0x8d1286['options']?_0x8d1286[_0xd3a6('0x19')][_0xd3a6('0x1c')]||null:null,'include':_0x8d1286['options']?_0x8d1286['options']['include']?_['map'](_0x8d1286['options'][_0xd3a6('0x1d')],function(_0x400982){return{'model':db[_0x400982[_0xd3a6('0x1e')]],'as':_0x400982['as'],'attributes':_0x400982['attributes'],'include':_0x400982[_0xd3a6('0x1d')]?_['map'](_0x400982[_0xd3a6('0x1d')],function(_0x16afc8){return{'model':db[_0x16afc8[_0xd3a6('0x1e')]],'as':_0x16afc8['as'],'attributes':_0x16afc8['attributes'],'include':_0x16afc8[_0xd3a6('0x1d')]?_[_0xd3a6('0x1f')](_0x16afc8[_0xd3a6('0x1d')],function(_0x219e32){return{'model':db[_0x219e32[_0xd3a6('0x1e')]],'as':_0x219e32['as'],'attributes':_0x219e32[_0xd3a6('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x30df90){logger[_0xd3a6('0xe')](_0xd3a6('0x16'),_0x8d1286);logger[_0xd3a6('0x20')](_0xd3a6('0x16'),_0x8d1286,JSON[_0xd3a6('0x12')](_0x30df90));_0xbe58b4(_0x30df90);})['catch'](function(_0x535bd4){logger[_0xd3a6('0x13')](_0xd3a6('0x16'),_0x535bd4[_0xd3a6('0x14')],_0x8d1286);_0x22fb05(_0x32683f[_0xd3a6('0x13')](0x1f4,_0x535bd4['message']));});});};exports[_0xd3a6('0x21')]=function(_0xa4efd){var _0x4d322a=this;return new Promise(function(_0x14381c,_0x5d9867){return db[_0xd3a6('0x17')][_0xd3a6('0x22')]({'raw':_0xa4efd[_0xd3a6('0x19')]?_0xa4efd[_0xd3a6('0x19')][_0xd3a6('0x23')]===undefined?!![]:![]:!![],'where':_0xa4efd[_0xd3a6('0x19')]?_0xa4efd[_0xd3a6('0x19')]['where']||null:null,'attributes':_0xa4efd['options']?_0xa4efd[_0xd3a6('0x19')][_0xd3a6('0x1b')]||null:null,'include':_0xa4efd[_0xd3a6('0x19')]?_0xa4efd['options'][_0xd3a6('0x1d')]?_[_0xd3a6('0x1f')](_0xa4efd[_0xd3a6('0x19')][_0xd3a6('0x1d')],function(_0x3ebd0d){return{'model':db[_0x3ebd0d[_0xd3a6('0x1e')]],'as':_0x3ebd0d['as'],'attributes':_0x3ebd0d[_0xd3a6('0x1b')],'include':_0x3ebd0d[_0xd3a6('0x1d')]?_['map'](_0x3ebd0d[_0xd3a6('0x1d')],function(_0x41981c){return{'model':db[_0x41981c[_0xd3a6('0x1e')]],'as':_0x41981c['as'],'attributes':_0x41981c[_0xd3a6('0x1b')],'include':_0x41981c[_0xd3a6('0x1d')]?_[_0xd3a6('0x1f')](_0x41981c['include'],function(_0x16a30a){return{'model':db[_0x16a30a['model']],'as':_0x16a30a['as'],'attributes':_0x16a30a[_0xd3a6('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xd3a6('0xd')](function(_0x180bb9){logger[_0xd3a6('0xe')]('ShowFreshsalesAccount',_0xa4efd);logger['debug'](_0xd3a6('0x21'),_0xa4efd,JSON[_0xd3a6('0x12')](_0x180bb9));_0x14381c(_0x180bb9);})[_0xd3a6('0x24')](function(_0x5188e1){logger[_0xd3a6('0x13')](_0xd3a6('0x21'),_0x5188e1['message'],_0xa4efd);_0x5d9867(_0x4d322a[_0xd3a6('0x13')](0x1f4,_0x5188e1['message']));});});};
\ No newline at end of file
+var _0x9582=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','FreshsalesAccount,\x20%s,\x20%s','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','FreshsalesAccount','options','raw','limit','include','map','model','attributes','then','GetFreshsalesAccount','ShowFreshsalesAccount','find'];(function(_0x2ca2e1,_0x2d1b90){var _0x1efb53=function(_0x4dd4b4){while(--_0x4dd4b4){_0x2ca2e1['push'](_0x2ca2e1['shift']());}};_0x1efb53(++_0x2d1b90);}(_0x9582,0x95));var _0x2958=function(_0x3ce889,_0x4fbccb){_0x3ce889=_0x3ce889-0x0;var _0x3e3c5e=_0x9582[_0x3ce889];return _0x3e3c5e;};'use strict';var _=require(_0x2958('0x0'));var util=require(_0x2958('0x1'));var moment=require(_0x2958('0x2'));var BPromise=require(_0x2958('0x3'));var rs=require(_0x2958('0x4'));var fs=require('fs');var Redis=require(_0x2958('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2958('0x6'));var logger=require(_0x2958('0x7'))(_0x2958('0x8'));var config=require(_0x2958('0x9'));var jayson=require(_0x2958('0xa'));var client=jayson[_0x2958('0xb')][_0x2958('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x309525,_0xa385ec,_0x2e571b){return new BPromise(function(_0x56ca85,_0x5ec1b3){return client[_0x2958('0xd')](_0x309525,_0x2e571b)['then'](function(_0x10db1e){logger['info'](_0x2958('0xe'),_0xa385ec,'request\x20sent');logger[_0x2958('0xf')](_0x2958('0x10'),_0xa385ec,_0x2958('0x11'),JSON[_0x2958('0x12')](_0x10db1e));if(_0x10db1e[_0x2958('0x13')]){if(_0x10db1e['error'][_0x2958('0x14')]===0x1f4){logger[_0x2958('0x13')](_0x2958('0xe'),_0xa385ec,_0x10db1e[_0x2958('0x13')][_0x2958('0x15')]);return _0x5ec1b3(_0x10db1e[_0x2958('0x13')][_0x2958('0x15')]);}logger[_0x2958('0x13')]('FreshsalesAccount,\x20%s,\x20%s',_0xa385ec,_0x10db1e[_0x2958('0x13')][_0x2958('0x15')]);return _0x56ca85(_0x10db1e['error']['message']);}else{logger[_0x2958('0x16')](_0x2958('0xe'),_0xa385ec,'request\x20sent');_0x56ca85(_0x10db1e[_0x2958('0x17')]['message']);}})['catch'](function(_0x429d42){logger[_0x2958('0x13')]('FreshsalesAccount,\x20%s,\x20%s',_0xa385ec,_0x429d42);_0x5ec1b3(_0x429d42);});});}exports['GetFreshsalesAccount']=function(_0x28a92c){var _0x160949=this;return new Promise(function(_0x310d07,_0x42bb99){return db[_0x2958('0x18')]['findAll']({'raw':_0x28a92c[_0x2958('0x19')]?_0x28a92c[_0x2958('0x19')][_0x2958('0x1a')]===undefined?!![]:![]:!![],'where':_0x28a92c['options']?_0x28a92c[_0x2958('0x19')]['where']||null:null,'attributes':_0x28a92c[_0x2958('0x19')]?_0x28a92c['options']['attributes']||null:null,'limit':_0x28a92c[_0x2958('0x19')]?_0x28a92c[_0x2958('0x19')][_0x2958('0x1b')]||null:null,'include':_0x28a92c[_0x2958('0x19')]?_0x28a92c[_0x2958('0x19')][_0x2958('0x1c')]?_[_0x2958('0x1d')](_0x28a92c[_0x2958('0x19')][_0x2958('0x1c')],function(_0x2aa514){return{'model':db[_0x2aa514[_0x2958('0x1e')]],'as':_0x2aa514['as'],'attributes':_0x2aa514[_0x2958('0x1f')],'include':_0x2aa514[_0x2958('0x1c')]?_[_0x2958('0x1d')](_0x2aa514[_0x2958('0x1c')],function(_0x4f811a){return{'model':db[_0x4f811a['model']],'as':_0x4f811a['as'],'attributes':_0x4f811a[_0x2958('0x1f')],'include':_0x4f811a[_0x2958('0x1c')]?_[_0x2958('0x1d')](_0x4f811a[_0x2958('0x1c')],function(_0x52bd32){return{'model':db[_0x52bd32[_0x2958('0x1e')]],'as':_0x52bd32['as'],'attributes':_0x52bd32['attributes']};}):[]};}):[]};}):[]:[]})[_0x2958('0x20')](function(_0x40adce){logger[_0x2958('0x16')](_0x2958('0x21'),_0x28a92c);logger[_0x2958('0xf')](_0x2958('0x21'),_0x28a92c,JSON[_0x2958('0x12')](_0x40adce));_0x310d07(_0x40adce);})['catch'](function(_0x21b919){logger['error']('GetFreshsalesAccount',_0x21b919[_0x2958('0x15')],_0x28a92c);_0x42bb99(_0x160949[_0x2958('0x13')](0x1f4,_0x21b919[_0x2958('0x15')]));});});};exports[_0x2958('0x22')]=function(_0x584179){var _0x2d9472=this;return new Promise(function(_0x222b83,_0x2c73e9){return db['FreshsalesAccount'][_0x2958('0x23')]({'raw':_0x584179[_0x2958('0x19')]?_0x584179['options'][_0x2958('0x1a')]===undefined?!![]:![]:!![],'where':_0x584179['options']?_0x584179[_0x2958('0x19')]['where']||null:null,'attributes':_0x584179[_0x2958('0x19')]?_0x584179['options'][_0x2958('0x1f')]||null:null,'include':_0x584179[_0x2958('0x19')]?_0x584179[_0x2958('0x19')][_0x2958('0x1c')]?_[_0x2958('0x1d')](_0x584179[_0x2958('0x19')][_0x2958('0x1c')],function(_0x58f9b4){return{'model':db[_0x58f9b4[_0x2958('0x1e')]],'as':_0x58f9b4['as'],'attributes':_0x58f9b4['attributes'],'include':_0x58f9b4[_0x2958('0x1c')]?_['map'](_0x58f9b4[_0x2958('0x1c')],function(_0x517f55){return{'model':db[_0x517f55[_0x2958('0x1e')]],'as':_0x517f55['as'],'attributes':_0x517f55[_0x2958('0x1f')],'include':_0x517f55[_0x2958('0x1c')]?_[_0x2958('0x1d')](_0x517f55[_0x2958('0x1c')],function(_0x24aca5){return{'model':db[_0x24aca5[_0x2958('0x1e')]],'as':_0x24aca5['as'],'attributes':_0x24aca5[_0x2958('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x2958('0x20')](function(_0xc4a303){logger[_0x2958('0x16')](_0x2958('0x22'),_0x584179);logger[_0x2958('0xf')]('ShowFreshsalesAccount',_0x584179,JSON[_0x2958('0x12')](_0xc4a303));_0x222b83(_0xc4a303);})[_0x2958('0x24')](function(_0x281817){logger[_0x2958('0x13')]('ShowFreshsalesAccount',_0x281817[_0x2958('0x15')],_0x584179);_0x2c73e9(_0x2d9472[_0x2958('0x13')](0x1f4,_0x281817[_0x2958('0x15')]));});});};
\ No newline at end of file
index 95ebb8b..679b2e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x867e=['destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','post','create','update','delete'];(function(_0xbe208a,_0x111f6e){var _0xe17911=function(_0x2d9337){while(--_0x2d9337){_0xbe208a['push'](_0xbe208a['shift']());}};_0xe17911(++_0x111f6e);}(_0x867e,0x144));var _0xe867=function(_0x3bc930,_0x5ef08f){_0x3bc930=_0x3bc930-0x0;var _0x2a745b=_0x867e[_0x3bc930];return _0x2a745b;};'use strict';var multer=require(_0xe867('0x0'));var util=require(_0xe867('0x1'));var path=require(_0xe867('0x2'));var timeout=require(_0xe867('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xe867('0x4'));var auth=require(_0xe867('0x5'));var interaction=require(_0xe867('0x6'));var config=require(_0xe867('0x7'));var controller=require('./intFreshsalesConfiguration.controller');router[_0xe867('0x8')]('/',auth[_0xe867('0x9')](),controller['index']);router['get'](_0xe867('0xa'),auth[_0xe867('0x9')](),controller['show']);router[_0xe867('0x8')](_0xe867('0xb'),auth['isAuthenticated'](),controller[_0xe867('0xc')]);router[_0xe867('0x8')](_0xe867('0xd'),auth[_0xe867('0x9')](),controller[_0xe867('0xe')]);router['get'](_0xe867('0xf'),auth[_0xe867('0x9')](),controller[_0xe867('0x10')]);router[_0xe867('0x11')]('/',auth[_0xe867('0x9')](),controller[_0xe867('0x12')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xe867('0x13')]);router[_0xe867('0x14')](_0xe867('0xa'),auth[_0xe867('0x9')](),controller[_0xe867('0x15')]);module[_0xe867('0x16')]=router;
\ No newline at end of file
+var _0x1836=['../../config/environment','./intFreshsalesConfiguration.controller','get','isAuthenticated','getSubjects','/:id/descriptions','/:id/fields','post','create','/:id','update','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x43dc30,_0x13dafb){var _0x1586f1=function(_0xdcbbee){while(--_0xdcbbee){_0x43dc30['push'](_0x43dc30['shift']());}};_0x1586f1(++_0x13dafb);}(_0x1836,0x129));var _0x6183=function(_0x3e2cab,_0x2f5e42){_0x3e2cab=_0x3e2cab-0x0;var _0x1e2e57=_0x1836[_0x3e2cab];return _0x1e2e57;};'use strict';var multer=require(_0x6183('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6183('0x1'));var express=require(_0x6183('0x2'));var router=express[_0x6183('0x3')]();var fs_extra=require(_0x6183('0x4'));var auth=require(_0x6183('0x5'));var interaction=require(_0x6183('0x6'));var config=require(_0x6183('0x7'));var controller=require(_0x6183('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x6183('0x9')]('/:id',auth[_0x6183('0xa')](),controller['show']);router[_0x6183('0x9')]('/:id/subjects',auth[_0x6183('0xa')](),controller[_0x6183('0xb')]);router[_0x6183('0x9')](_0x6183('0xc'),auth[_0x6183('0xa')](),controller['getDescriptions']);router['get'](_0x6183('0xd'),auth[_0x6183('0xa')](),controller['getFields']);router[_0x6183('0xe')]('/',auth[_0x6183('0xa')](),controller[_0x6183('0xf')]);router['put'](_0x6183('0x10'),auth[_0x6183('0xa')](),controller[_0x6183('0x11')]);router['delete'](_0x6183('0x10'),auth['isAuthenticated'](),controller['destroy']);module[_0x6183('0x12')]=router;
\ No newline at end of file
index ca780dd..702fd3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fa2=['sequelize','exports','STRING'];(function(_0x425d5d,_0x3b8eb6){var _0x1f789a=function(_0x20c98d){while(--_0x20c98d){_0x425d5d['push'](_0x425d5d['shift']());}};_0x1f789a(++_0x3b8eb6);}(_0x9fa2,0x15c));var _0x29fa=function(_0x3ed054,_0x4d4f16){_0x3ed054=_0x3ed054-0x0;var _0x16dd95=_0x9fa2[_0x3ed054];return _0x16dd95;};'use strict';var Sequelize=require(_0x29fa('0x0'));module[_0x29fa('0x1')]={'name':{'type':Sequelize[_0x29fa('0x2')]},'description':{'type':Sequelize[_0x29fa('0x2')]}};
\ No newline at end of file
+var _0x4ad1=['sequelize','exports','STRING'];(function(_0x2d5dcf,_0xf71498){var _0x42a3e8=function(_0xaa41d8){while(--_0xaa41d8){_0x2d5dcf['push'](_0x2d5dcf['shift']());}};_0x42a3e8(++_0xf71498);}(_0x4ad1,0x114));var _0x14ad=function(_0x326c1c,_0xc6751c){_0x326c1c=_0x326c1c-0x0;var _0x3c445c=_0x4ad1[_0x326c1c];return _0x3c445c;};'use strict';var Sequelize=require(_0x14ad('0x0'));module[_0x14ad('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x14ad('0x2')]}};
\ No newline at end of file
index cadff95..120a485 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd224=['crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','count','offset','set','apply','reject','then','destroy','error','stack','name','send','index','fieldName','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','FreshsalesConfiguration','include','findAll','rows','show','params','rawAttributes','find','catch','create','body','update','getSubjects','FreshsalesField','nolimit','getDescriptions','getFields','eml-format','rimraf','fast-json-patch','moment','bluebird','util','sox','ejs','lodash','squel'];(function(_0x25d365,_0xd11e09){var _0x52ddfd=function(_0x393b1d){while(--_0x393b1d){_0x25d365['push'](_0x25d365['shift']());}};_0x52ddfd(++_0xd11e09);}(_0xd224,0x17c));var _0x4d22=function(_0x17850f,_0x3d7548){_0x17850f=_0x17850f-0x0;var _0x44dd09=_0xd224[_0x17850f];return _0x44dd09;};'use strict';var emlformat=require(_0x4d22('0x0'));var rimraf=require(_0x4d22('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4d22('0x2'));var rp=require('request-promise');var moment=require(_0x4d22('0x3'));var BPromise=require(_0x4d22('0x4'));var Mustache=require('mustache');var util=require(_0x4d22('0x5'));var path=require('path');var sox=require(_0x4d22('0x6'));var csv=require('to-csv');var ejs=require(_0x4d22('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4d22('0x8'));var squel=require(_0x4d22('0x9'));var crypto=require(_0x4d22('0xa'));var jsforce=require(_0x4d22('0xb'));var deskjs=require(_0x4d22('0xc'));var toCsv=require(_0x4d22('0xd'));var querystring=require(_0x4d22('0xe'));var Papa=require(_0x4d22('0xf'));var Redis=require(_0x4d22('0x10'));var authService=require(_0x4d22('0x11'));var qs=require(_0x4d22('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4d22('0x13'))(_0x4d22('0x14'));var utils=require(_0x4d22('0x15'));var config=require(_0x4d22('0x16'));var licenseUtil=require(_0x4d22('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd4e025,_0xc9b5c8){_0xc9b5c8=_0xc9b5c8||0xcc;return function(_0x421876){if(_0x421876){return _0xd4e025[_0x4d22('0x18')](_0xc9b5c8);}return _0xd4e025[_0x4d22('0x19')](_0xc9b5c8)[_0x4d22('0x1a')]();};}function respondWithResult(_0xdb3313,_0x17c4a3){_0x17c4a3=_0x17c4a3||0xc8;return function(_0x578cb6){if(_0x578cb6){return _0xdb3313[_0x4d22('0x19')](_0x17c4a3)[_0x4d22('0x1b')](_0x578cb6);}};}function respondWithFilteredResult(_0x11ed48,_0x2b34e0){return function(_0x33f187){if(_0x33f187){var _0x2abb9a=typeof _0x2b34e0['offset']==='undefined'&&typeof _0x2b34e0[_0x4d22('0x1c')]==='undefined';var _0x1bcf81=_0x33f187[_0x4d22('0x1d')];var _0x2aacb8=_0x2abb9a?0x0:_0x2b34e0['offset'];var _0x2bd3b7=_0x2abb9a?_0x33f187[_0x4d22('0x1d')]:_0x2b34e0[_0x4d22('0x1e')]+_0x2b34e0[_0x4d22('0x1c')];var _0x5c7224;if(_0x2bd3b7>=_0x1bcf81){_0x2bd3b7=_0x1bcf81;_0x5c7224=0xc8;}else{_0x5c7224=0xce;}_0x11ed48['status'](_0x5c7224);return _0x11ed48[_0x4d22('0x1f')]('Content-Range',_0x2aacb8+'-'+_0x2bd3b7+'/'+_0x1bcf81)['json'](_0x33f187);}return null;};}function patchUpdates(_0x1ef973){return function(_0x58772f){try{jsonpatch[_0x4d22('0x20')](_0x58772f,_0x1ef973,!![]);}catch(_0x75c520){return BPromise[_0x4d22('0x21')](_0x75c520);}return _0x58772f['save']();};}function saveUpdates(_0x39a2e1,_0x35152a){return function(_0x1fe1cb){if(_0x1fe1cb){return _0x1fe1cb['update'](_0x39a2e1)[_0x4d22('0x22')](function(_0x14ef8f){return _0x14ef8f;});}return null;};}function removeEntity(_0x159428,_0x566ef7){return function(_0x2f3c66){if(_0x2f3c66){return _0x2f3c66[_0x4d22('0x23')]()[_0x4d22('0x22')](function(){_0x159428[_0x4d22('0x19')](0xcc)[_0x4d22('0x1a')]();});}};}function handleEntityNotFound(_0x3afc3c,_0x26113f){return function(_0x149130){if(!_0x149130){_0x3afc3c[_0x4d22('0x18')](0x194);}return _0x149130;};}function handleError(_0x1783f3,_0x557b23){_0x557b23=_0x557b23||0x1f4;return function(_0x888088){logger[_0x4d22('0x24')](_0x888088[_0x4d22('0x25')]);if(_0x888088[_0x4d22('0x26')]){delete _0x888088[_0x4d22('0x26')];}_0x1783f3[_0x4d22('0x19')](_0x557b23)[_0x4d22('0x27')](_0x888088);};}exports[_0x4d22('0x28')]=function(_0x44254b,_0x144737){var _0x37ee0e={},_0x302505={},_0x25257a={'count':0x0,'rows':[]};var _0x561da5=_['map'](db['FreshsalesConfiguration']['rawAttributes'],function(_0x4b7565){return{'name':_0x4b7565[_0x4d22('0x29')],'type':_0x4b7565['type']['key']};});_0x302505[_0x4d22('0x2a')]=_[_0x4d22('0x2b')](_0x561da5,_0x4d22('0x26'));_0x302505[_0x4d22('0x2c')]=_[_0x4d22('0x2d')](_0x44254b[_0x4d22('0x2c')]);_0x302505[_0x4d22('0x2e')]=_[_0x4d22('0x2f')](_0x302505[_0x4d22('0x2a')],_0x302505['query']);_0x37ee0e[_0x4d22('0x30')]=_[_0x4d22('0x2f')](_0x302505['model'],qs[_0x4d22('0x31')](_0x44254b[_0x4d22('0x2c')][_0x4d22('0x31')]));_0x37ee0e[_0x4d22('0x30')]=_0x37ee0e['attributes'][_0x4d22('0x32')]?_0x37ee0e['attributes']:_0x302505[_0x4d22('0x2a')];if(!_0x44254b[_0x4d22('0x2c')][_0x4d22('0x33')]('nolimit')){_0x37ee0e['limit']=qs[_0x4d22('0x1c')](_0x44254b[_0x4d22('0x2c')]['limit']);_0x37ee0e[_0x4d22('0x1e')]=qs[_0x4d22('0x1e')](_0x44254b[_0x4d22('0x2c')][_0x4d22('0x1e')]);}_0x37ee0e[_0x4d22('0x34')]=qs['sort'](_0x44254b[_0x4d22('0x2c')][_0x4d22('0x35')]);_0x37ee0e[_0x4d22('0x36')]=qs[_0x4d22('0x2e')](_[_0x4d22('0x37')](_0x44254b[_0x4d22('0x2c')],_0x302505['filters']),_0x561da5);if(_0x44254b[_0x4d22('0x2c')][_0x4d22('0x38')]){_0x37ee0e[_0x4d22('0x36')]=_[_0x4d22('0x39')](_0x37ee0e[_0x4d22('0x36')],{'$or':_[_0x4d22('0x2b')](_0x561da5,function(_0x2284b4){if(_0x2284b4[_0x4d22('0x3a')]!==_0x4d22('0x3b')){var _0x5a5ba0={};_0x5a5ba0[_0x2284b4[_0x4d22('0x26')]]={'$like':'%'+_0x44254b['query'][_0x4d22('0x38')]+'%'};return _0x5a5ba0;}})});}_0x37ee0e=_['merge']({},_0x37ee0e,_0x44254b[_0x4d22('0x3c')]);var _0x3cd8de={'where':_0x37ee0e[_0x4d22('0x36')]};return db[_0x4d22('0x3d')]['count'](_0x3cd8de)[_0x4d22('0x22')](function(_0x517064){_0x25257a[_0x4d22('0x1d')]=_0x517064;if(_0x44254b[_0x4d22('0x2c')]['includeAll']){_0x37ee0e[_0x4d22('0x3e')]=[{'all':!![]}];}return db[_0x4d22('0x3d')][_0x4d22('0x3f')](_0x37ee0e);})['then'](function(_0x42f6bd){_0x25257a[_0x4d22('0x40')]=_0x42f6bd;return _0x25257a;})[_0x4d22('0x22')](respondWithFilteredResult(_0x144737,_0x37ee0e))['catch'](handleError(_0x144737,null));};exports[_0x4d22('0x41')]=function(_0x9160d9,_0x269d33){var _0x242934={'raw':![],'where':{'id':_0x9160d9[_0x4d22('0x42')]['id']}},_0x28dfc0={};_0x28dfc0[_0x4d22('0x2a')]=_[_0x4d22('0x2d')](db[_0x4d22('0x3d')][_0x4d22('0x43')]);_0x28dfc0[_0x4d22('0x2c')]=_[_0x4d22('0x2d')](_0x9160d9[_0x4d22('0x2c')]);_0x28dfc0[_0x4d22('0x2e')]=_[_0x4d22('0x2f')](_0x28dfc0[_0x4d22('0x2a')],_0x28dfc0[_0x4d22('0x2c')]);_0x242934[_0x4d22('0x30')]=_[_0x4d22('0x2f')](_0x28dfc0['model'],qs[_0x4d22('0x31')](_0x9160d9[_0x4d22('0x2c')][_0x4d22('0x31')]));_0x242934[_0x4d22('0x30')]=_0x242934[_0x4d22('0x30')][_0x4d22('0x32')]?_0x242934['attributes']:_0x28dfc0[_0x4d22('0x2a')];if(_0x9160d9[_0x4d22('0x2c')]['includeAll']){_0x242934[_0x4d22('0x3e')]=[{'all':!![]}];}_0x242934=_[_0x4d22('0x39')]({},_0x242934,_0x9160d9[_0x4d22('0x3c')]);return db[_0x4d22('0x3d')][_0x4d22('0x44')](_0x242934)[_0x4d22('0x22')](handleEntityNotFound(_0x269d33,null))[_0x4d22('0x22')](respondWithResult(_0x269d33,null))[_0x4d22('0x45')](handleError(_0x269d33,null));};exports[_0x4d22('0x46')]=function(_0x5454c6,_0x3fab40){return db[_0x4d22('0x3d')][_0x4d22('0x46')](_0x5454c6[_0x4d22('0x47')],{})['then'](respondWithResult(_0x3fab40,0xc9))[_0x4d22('0x45')](handleError(_0x3fab40,null));};exports[_0x4d22('0x48')]=function(_0x4b9301,_0x5823a7){if(_0x4b9301['body']['id']){delete _0x4b9301[_0x4d22('0x47')]['id'];}return db['FreshsalesConfiguration'][_0x4d22('0x44')]({'where':{'id':_0x4b9301[_0x4d22('0x42')]['id']}})[_0x4d22('0x22')](handleEntityNotFound(_0x5823a7,null))[_0x4d22('0x22')](saveUpdates(_0x4b9301[_0x4d22('0x47')],null))[_0x4d22('0x22')](respondWithResult(_0x5823a7,null))[_0x4d22('0x45')](handleError(_0x5823a7,null));};exports[_0x4d22('0x23')]=function(_0x47c6ee,_0x39d70e){return db[_0x4d22('0x3d')][_0x4d22('0x44')]({'where':{'id':_0x47c6ee[_0x4d22('0x42')]['id']}})[_0x4d22('0x22')](handleEntityNotFound(_0x39d70e,null))[_0x4d22('0x22')](removeEntity(_0x39d70e,null))['catch'](handleError(_0x39d70e,null));};exports[_0x4d22('0x49')]=function(_0x3f0ef0,_0x5c0aa2,_0x3b5c01){var _0xe0daa9={};var _0x4f0ee2={};var _0x366bd0;var _0x30b811;return db[_0x4d22('0x3d')]['findOne']({'where':{'id':_0x3f0ef0['params']['id']}})[_0x4d22('0x22')](handleEntityNotFound(_0x5c0aa2,null))[_0x4d22('0x22')](function(_0x3e9a36){if(_0x3e9a36){_0x366bd0=_0x3e9a36;_0x4f0ee2['model']=_[_0x4d22('0x2d')](db[_0x4d22('0x4a')]['rawAttributes']);_0x4f0ee2[_0x4d22('0x2c')]=_['keys'](_0x3f0ef0[_0x4d22('0x2c')]);_0x4f0ee2[_0x4d22('0x2e')]=_[_0x4d22('0x2f')](_0x4f0ee2[_0x4d22('0x2a')],_0x4f0ee2[_0x4d22('0x2c')]);_0xe0daa9[_0x4d22('0x30')]=_['intersection'](_0x4f0ee2[_0x4d22('0x2a')],qs[_0x4d22('0x31')](_0x3f0ef0[_0x4d22('0x2c')][_0x4d22('0x31')]));_0xe0daa9[_0x4d22('0x30')]=_0xe0daa9[_0x4d22('0x30')][_0x4d22('0x32')]?_0xe0daa9[_0x4d22('0x30')]:_0x4f0ee2['model'];_0xe0daa9['order']=qs[_0x4d22('0x35')](_0x3f0ef0[_0x4d22('0x2c')][_0x4d22('0x35')]);_0xe0daa9[_0x4d22('0x36')]=qs[_0x4d22('0x2e')](_[_0x4d22('0x37')](_0x3f0ef0[_0x4d22('0x2c')],_0x4f0ee2[_0x4d22('0x2e')]));if(_0x3f0ef0[_0x4d22('0x2c')]['filter']){_0xe0daa9[_0x4d22('0x36')]=_[_0x4d22('0x39')](_0xe0daa9['where'],{'$or':_[_0x4d22('0x2b')](_0xe0daa9[_0x4d22('0x30')],function(_0x2101b1){var _0x1d6dcf={};_0x1d6dcf[_0x2101b1]={'$like':'%'+_0x3f0ef0[_0x4d22('0x2c')][_0x4d22('0x38')]+'%'};return _0x1d6dcf;})});}_0xe0daa9=_[_0x4d22('0x39')]({},_0xe0daa9,_0x3f0ef0[_0x4d22('0x3c')]);return _0x366bd0['getSubjects'](_0xe0daa9);}})['then'](function(_0x45f783){if(_0x45f783){_0x30b811=_0x45f783[_0x4d22('0x32')];if(!_0x3f0ef0[_0x4d22('0x2c')][_0x4d22('0x33')](_0x4d22('0x4b'))){_0xe0daa9[_0x4d22('0x1c')]=qs['limit'](_0x3f0ef0['query'][_0x4d22('0x1c')]);_0xe0daa9['offset']=qs[_0x4d22('0x1e')](_0x3f0ef0['query'][_0x4d22('0x1e')]);}return _0x366bd0[_0x4d22('0x49')](_0xe0daa9);}})[_0x4d22('0x22')](function(_0x19e255){if(_0x19e255){return _0x19e255?{'count':_0x30b811,'rows':_0x19e255}:null;}})[_0x4d22('0x22')](respondWithResult(_0x5c0aa2,null))[_0x4d22('0x45')](handleError(_0x5c0aa2,null));};exports[_0x4d22('0x4c')]=function(_0x4d6e75,_0x515b63,_0x26b962){var _0x12f01f={};var _0x545d51={};var _0x3de4e8;var _0x12ff82;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x4d6e75['params']['id']}})[_0x4d22('0x22')](handleEntityNotFound(_0x515b63,null))[_0x4d22('0x22')](function(_0x145760){if(_0x145760){_0x3de4e8=_0x145760;_0x545d51['model']=_[_0x4d22('0x2d')](db[_0x4d22('0x4a')][_0x4d22('0x43')]);_0x545d51[_0x4d22('0x2c')]=_[_0x4d22('0x2d')](_0x4d6e75['query']);_0x545d51[_0x4d22('0x2e')]=_[_0x4d22('0x2f')](_0x545d51['model'],_0x545d51[_0x4d22('0x2c')]);_0x12f01f[_0x4d22('0x30')]=_[_0x4d22('0x2f')](_0x545d51['model'],qs[_0x4d22('0x31')](_0x4d6e75[_0x4d22('0x2c')][_0x4d22('0x31')]));_0x12f01f[_0x4d22('0x30')]=_0x12f01f[_0x4d22('0x30')][_0x4d22('0x32')]?_0x12f01f[_0x4d22('0x30')]:_0x545d51[_0x4d22('0x2a')];_0x12f01f[_0x4d22('0x34')]=qs['sort'](_0x4d6e75[_0x4d22('0x2c')]['sort']);_0x12f01f['where']=qs[_0x4d22('0x2e')](_[_0x4d22('0x37')](_0x4d6e75['query'],_0x545d51[_0x4d22('0x2e')]));if(_0x4d6e75[_0x4d22('0x2c')][_0x4d22('0x38')]){_0x12f01f['where']=_[_0x4d22('0x39')](_0x12f01f[_0x4d22('0x36')],{'$or':_['map'](_0x12f01f[_0x4d22('0x30')],function(_0x13d7e2){var _0x4c9652={};_0x4c9652[_0x13d7e2]={'$like':'%'+_0x4d6e75[_0x4d22('0x2c')][_0x4d22('0x38')]+'%'};return _0x4c9652;})});}_0x12f01f=_[_0x4d22('0x39')]({},_0x12f01f,_0x4d6e75['options']);return _0x3de4e8['getDescriptions'](_0x12f01f);}})[_0x4d22('0x22')](function(_0x4d8155){if(_0x4d8155){_0x12ff82=_0x4d8155[_0x4d22('0x32')];if(!_0x4d6e75['query'][_0x4d22('0x33')](_0x4d22('0x4b'))){_0x12f01f[_0x4d22('0x1c')]=qs[_0x4d22('0x1c')](_0x4d6e75[_0x4d22('0x2c')][_0x4d22('0x1c')]);_0x12f01f['offset']=qs['offset'](_0x4d6e75[_0x4d22('0x2c')]['offset']);}return _0x3de4e8[_0x4d22('0x4c')](_0x12f01f);}})['then'](function(_0x33c4e6){if(_0x33c4e6){return _0x33c4e6?{'count':_0x12ff82,'rows':_0x33c4e6}:null;}})[_0x4d22('0x22')](respondWithResult(_0x515b63,null))[_0x4d22('0x45')](handleError(_0x515b63,null));};exports[_0x4d22('0x4d')]=function(_0x21f7ff,_0x206210,_0x109d8e){var _0x5c054c={};var _0x2be6a7={};var _0x582bb2;var _0x6129b1;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x21f7ff[_0x4d22('0x42')]['id']}})[_0x4d22('0x22')](handleEntityNotFound(_0x206210,null))[_0x4d22('0x22')](function(_0x155205){if(_0x155205){_0x582bb2=_0x155205;_0x2be6a7[_0x4d22('0x2a')]=_[_0x4d22('0x2d')](db[_0x4d22('0x4a')][_0x4d22('0x43')]);_0x2be6a7['query']=_['keys'](_0x21f7ff[_0x4d22('0x2c')]);_0x2be6a7[_0x4d22('0x2e')]=_[_0x4d22('0x2f')](_0x2be6a7[_0x4d22('0x2a')],_0x2be6a7[_0x4d22('0x2c')]);_0x5c054c['attributes']=_[_0x4d22('0x2f')](_0x2be6a7['model'],qs[_0x4d22('0x31')](_0x21f7ff[_0x4d22('0x2c')]['fields']));_0x5c054c[_0x4d22('0x30')]=_0x5c054c[_0x4d22('0x30')]['length']?_0x5c054c[_0x4d22('0x30')]:_0x2be6a7[_0x4d22('0x2a')];_0x5c054c[_0x4d22('0x34')]=qs['sort'](_0x21f7ff['query']['sort']);_0x5c054c[_0x4d22('0x36')]=qs[_0x4d22('0x2e')](_[_0x4d22('0x37')](_0x21f7ff[_0x4d22('0x2c')],_0x2be6a7[_0x4d22('0x2e')]));if(_0x21f7ff['query'][_0x4d22('0x38')]){_0x5c054c[_0x4d22('0x36')]=_[_0x4d22('0x39')](_0x5c054c[_0x4d22('0x36')],{'$or':_[_0x4d22('0x2b')](_0x5c054c[_0x4d22('0x30')],function(_0x576f55){var _0xffc5d2={};_0xffc5d2[_0x576f55]={'$like':'%'+_0x21f7ff[_0x4d22('0x2c')][_0x4d22('0x38')]+'%'};return _0xffc5d2;})});}_0x5c054c=_['merge']({},_0x5c054c,_0x21f7ff[_0x4d22('0x3c')]);return _0x582bb2['getFields'](_0x5c054c);}})[_0x4d22('0x22')](function(_0x540b69){if(_0x540b69){_0x6129b1=_0x540b69[_0x4d22('0x32')];if(!_0x21f7ff[_0x4d22('0x2c')]['hasOwnProperty'](_0x4d22('0x4b'))){_0x5c054c['limit']=qs[_0x4d22('0x1c')](_0x21f7ff[_0x4d22('0x2c')][_0x4d22('0x1c')]);_0x5c054c[_0x4d22('0x1e')]=qs[_0x4d22('0x1e')](_0x21f7ff['query'][_0x4d22('0x1e')]);}return _0x582bb2[_0x4d22('0x4d')](_0x5c054c);}})['then'](function(_0x519574){if(_0x519574){return _0x519574?{'count':_0x6129b1,'rows':_0x519574}:null;}})[_0x4d22('0x22')](respondWithResult(_0x206210,null))[_0x4d22('0x45')](handleError(_0x206210,null));};
\ No newline at end of file
+var _0x3328=['save','update','then','destroy','error','stack','name','send','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','options','includeAll','include','FreshsalesConfiguration','findAll','rows','catch','create','body','params','getSubjects','pick','hasOwnProperty','getDescriptions','findOne','FreshsalesField','getFields','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0x3328,0x109));var _0x8332=function(_0x54591f,_0x2dce50){_0x54591f=_0x54591f-0x0;var _0x2a99a6=_0x3328[_0x54591f];return _0x2a99a6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8332('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8332('0x1'));var rp=require('request-promise');var moment=require(_0x8332('0x2'));var BPromise=require(_0x8332('0x3'));var Mustache=require(_0x8332('0x4'));var util=require(_0x8332('0x5'));var path=require(_0x8332('0x6'));var sox=require(_0x8332('0x7'));var csv=require(_0x8332('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8332('0x9'));var crypto=require(_0x8332('0xa'));var jsforce=require(_0x8332('0xb'));var deskjs=require(_0x8332('0xc'));var toCsv=require(_0x8332('0x8'));var querystring=require(_0x8332('0xd'));var Papa=require('papaparse');var Redis=require(_0x8332('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x8332('0xf'));var as=require(_0x8332('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8332('0x11'))(_0x8332('0x12'));var utils=require('../../config/utils');var config=require(_0x8332('0x13'));var licenseUtil=require(_0x8332('0x14'));var db=require(_0x8332('0x15'))['db'];function respondWithStatusCode(_0x14c924,_0x38150e){_0x38150e=_0x38150e||0xcc;return function(_0x1de028){if(_0x1de028){return _0x14c924['sendStatus'](_0x38150e);}return _0x14c924[_0x8332('0x16')](_0x38150e)[_0x8332('0x17')]();};}function respondWithResult(_0xe8b39c,_0x2aa68b){_0x2aa68b=_0x2aa68b||0xc8;return function(_0x4b584e){if(_0x4b584e){return _0xe8b39c[_0x8332('0x16')](_0x2aa68b)[_0x8332('0x18')](_0x4b584e);}};}function respondWithFilteredResult(_0x2afe85,_0x2f59e7){return function(_0x249d46){if(_0x249d46){var _0x4835d1=typeof _0x2f59e7[_0x8332('0x19')]==='undefined'&&typeof _0x2f59e7['limit']===_0x8332('0x1a');var _0x31c91b=_0x249d46[_0x8332('0x1b')];var _0x1aaf5a=_0x4835d1?0x0:_0x2f59e7[_0x8332('0x19')];var _0x26f07d=_0x4835d1?_0x249d46[_0x8332('0x1b')]:_0x2f59e7[_0x8332('0x19')]+_0x2f59e7[_0x8332('0x1c')];var _0x461b34;if(_0x26f07d>=_0x31c91b){_0x26f07d=_0x31c91b;_0x461b34=0xc8;}else{_0x461b34=0xce;}_0x2afe85[_0x8332('0x16')](_0x461b34);return _0x2afe85[_0x8332('0x1d')]('Content-Range',_0x1aaf5a+'-'+_0x26f07d+'/'+_0x31c91b)[_0x8332('0x18')](_0x249d46);}return null;};}function patchUpdates(_0x1c0537){return function(_0x55a5ca){try{jsonpatch[_0x8332('0x1e')](_0x55a5ca,_0x1c0537,!![]);}catch(_0x2fbd95){return BPromise['reject'](_0x2fbd95);}return _0x55a5ca[_0x8332('0x1f')]();};}function saveUpdates(_0x4dcc9b,_0x5133df){return function(_0x48d189){if(_0x48d189){return _0x48d189[_0x8332('0x20')](_0x4dcc9b)[_0x8332('0x21')](function(_0x34418d){return _0x34418d;});}return null;};}function removeEntity(_0x34e21a,_0x43ef1d){return function(_0x4db98c){if(_0x4db98c){return _0x4db98c[_0x8332('0x22')]()[_0x8332('0x21')](function(){_0x34e21a[_0x8332('0x16')](0xcc)[_0x8332('0x17')]();});}};}function handleEntityNotFound(_0x4d1866,_0x493e84){return function(_0x138d45){if(!_0x138d45){_0x4d1866['sendStatus'](0x194);}return _0x138d45;};}function handleError(_0x76be00,_0x38c739){_0x38c739=_0x38c739||0x1f4;return function(_0x410ddf){logger[_0x8332('0x23')](_0x410ddf[_0x8332('0x24')]);if(_0x410ddf[_0x8332('0x25')]){delete _0x410ddf[_0x8332('0x25')];}_0x76be00[_0x8332('0x16')](_0x38c739)[_0x8332('0x26')](_0x410ddf);};}exports['index']=function(_0x2945f3,_0x25d8ec){var _0x12c3dd={},_0x290fd7={},_0x10ee4e={'count':0x0,'rows':[]};var _0x19731b=_['map'](db['FreshsalesConfiguration'][_0x8332('0x27')],function(_0xccc69f){return{'name':_0xccc69f[_0x8332('0x28')],'type':_0xccc69f[_0x8332('0x29')]['key']};});_0x290fd7[_0x8332('0x2a')]=_[_0x8332('0x2b')](_0x19731b,_0x8332('0x25'));_0x290fd7[_0x8332('0x2c')]=_[_0x8332('0x2d')](_0x2945f3[_0x8332('0x2c')]);_0x290fd7[_0x8332('0x2e')]=_[_0x8332('0x2f')](_0x290fd7[_0x8332('0x2a')],_0x290fd7[_0x8332('0x2c')]);_0x12c3dd[_0x8332('0x30')]=_[_0x8332('0x2f')](_0x290fd7['model'],qs['fields'](_0x2945f3[_0x8332('0x2c')][_0x8332('0x31')]));_0x12c3dd[_0x8332('0x30')]=_0x12c3dd[_0x8332('0x30')][_0x8332('0x32')]?_0x12c3dd[_0x8332('0x30')]:_0x290fd7[_0x8332('0x2a')];if(!_0x2945f3[_0x8332('0x2c')]['hasOwnProperty'](_0x8332('0x33'))){_0x12c3dd['limit']=qs[_0x8332('0x1c')](_0x2945f3[_0x8332('0x2c')][_0x8332('0x1c')]);_0x12c3dd[_0x8332('0x19')]=qs['offset'](_0x2945f3[_0x8332('0x2c')][_0x8332('0x19')]);}_0x12c3dd[_0x8332('0x34')]=qs[_0x8332('0x35')](_0x2945f3['query'][_0x8332('0x35')]);_0x12c3dd[_0x8332('0x36')]=qs[_0x8332('0x2e')](_['pick'](_0x2945f3[_0x8332('0x2c')],_0x290fd7[_0x8332('0x2e')]),_0x19731b);if(_0x2945f3[_0x8332('0x2c')][_0x8332('0x37')]){_0x12c3dd['where']=_[_0x8332('0x38')](_0x12c3dd[_0x8332('0x36')],{'$or':_[_0x8332('0x2b')](_0x19731b,function(_0x235ea4){if(_0x235ea4[_0x8332('0x29')]!=='VIRTUAL'){var _0x34f7c8={};_0x34f7c8[_0x235ea4[_0x8332('0x25')]]={'$like':'%'+_0x2945f3[_0x8332('0x2c')][_0x8332('0x37')]+'%'};return _0x34f7c8;}})});}_0x12c3dd=_[_0x8332('0x38')]({},_0x12c3dd,_0x2945f3[_0x8332('0x39')]);var _0x301013={'where':_0x12c3dd[_0x8332('0x36')]};return db['FreshsalesConfiguration'][_0x8332('0x1b')](_0x301013)[_0x8332('0x21')](function(_0x531b9b){_0x10ee4e[_0x8332('0x1b')]=_0x531b9b;if(_0x2945f3[_0x8332('0x2c')][_0x8332('0x3a')]){_0x12c3dd[_0x8332('0x3b')]=[{'all':!![]}];}return db[_0x8332('0x3c')][_0x8332('0x3d')](_0x12c3dd);})[_0x8332('0x21')](function(_0x51755d){_0x10ee4e[_0x8332('0x3e')]=_0x51755d;return _0x10ee4e;})[_0x8332('0x21')](respondWithFilteredResult(_0x25d8ec,_0x12c3dd))[_0x8332('0x3f')](handleError(_0x25d8ec,null));};exports['show']=function(_0x6e6694,_0x3c7b35){var _0xa1d258={'raw':![],'where':{'id':_0x6e6694['params']['id']}},_0x5c264d={};_0x5c264d[_0x8332('0x2a')]=_[_0x8332('0x2d')](db[_0x8332('0x3c')][_0x8332('0x27')]);_0x5c264d[_0x8332('0x2c')]=_['keys'](_0x6e6694['query']);_0x5c264d['filters']=_[_0x8332('0x2f')](_0x5c264d['model'],_0x5c264d[_0x8332('0x2c')]);_0xa1d258[_0x8332('0x30')]=_[_0x8332('0x2f')](_0x5c264d[_0x8332('0x2a')],qs['fields'](_0x6e6694[_0x8332('0x2c')]['fields']));_0xa1d258[_0x8332('0x30')]=_0xa1d258[_0x8332('0x30')][_0x8332('0x32')]?_0xa1d258[_0x8332('0x30')]:_0x5c264d[_0x8332('0x2a')];if(_0x6e6694[_0x8332('0x2c')][_0x8332('0x3a')]){_0xa1d258[_0x8332('0x3b')]=[{'all':!![]}];}_0xa1d258=_[_0x8332('0x38')]({},_0xa1d258,_0x6e6694['options']);return db[_0x8332('0x3c')]['find'](_0xa1d258)[_0x8332('0x21')](handleEntityNotFound(_0x3c7b35,null))[_0x8332('0x21')](respondWithResult(_0x3c7b35,null))[_0x8332('0x3f')](handleError(_0x3c7b35,null));};exports[_0x8332('0x40')]=function(_0x296242,_0x2105e9){return db[_0x8332('0x3c')][_0x8332('0x40')](_0x296242[_0x8332('0x41')],{})[_0x8332('0x21')](respondWithResult(_0x2105e9,0xc9))[_0x8332('0x3f')](handleError(_0x2105e9,null));};exports[_0x8332('0x20')]=function(_0x3b3004,_0x4c830d){if(_0x3b3004[_0x8332('0x41')]['id']){delete _0x3b3004[_0x8332('0x41')]['id'];}return db[_0x8332('0x3c')]['find']({'where':{'id':_0x3b3004[_0x8332('0x42')]['id']}})[_0x8332('0x21')](handleEntityNotFound(_0x4c830d,null))[_0x8332('0x21')](saveUpdates(_0x3b3004[_0x8332('0x41')],null))['then'](respondWithResult(_0x4c830d,null))[_0x8332('0x3f')](handleError(_0x4c830d,null));};exports[_0x8332('0x22')]=function(_0x488566,_0x2086b3){return db['FreshsalesConfiguration']['find']({'where':{'id':_0x488566[_0x8332('0x42')]['id']}})['then'](handleEntityNotFound(_0x2086b3,null))[_0x8332('0x21')](removeEntity(_0x2086b3,null))[_0x8332('0x3f')](handleError(_0x2086b3,null));};exports[_0x8332('0x43')]=function(_0x19ccb1,_0x9acfc4,_0xffab2b){var _0x3d61d4={};var _0x86d47a={};var _0x33d496;var _0x55c8c0;return db[_0x8332('0x3c')]['findOne']({'where':{'id':_0x19ccb1['params']['id']}})[_0x8332('0x21')](handleEntityNotFound(_0x9acfc4,null))[_0x8332('0x21')](function(_0x55a14b){if(_0x55a14b){_0x33d496=_0x55a14b;_0x86d47a[_0x8332('0x2a')]=_[_0x8332('0x2d')](db['FreshsalesField']['rawAttributes']);_0x86d47a[_0x8332('0x2c')]=_[_0x8332('0x2d')](_0x19ccb1[_0x8332('0x2c')]);_0x86d47a[_0x8332('0x2e')]=_[_0x8332('0x2f')](_0x86d47a['model'],_0x86d47a[_0x8332('0x2c')]);_0x3d61d4[_0x8332('0x30')]=_['intersection'](_0x86d47a[_0x8332('0x2a')],qs[_0x8332('0x31')](_0x19ccb1[_0x8332('0x2c')][_0x8332('0x31')]));_0x3d61d4[_0x8332('0x30')]=_0x3d61d4[_0x8332('0x30')][_0x8332('0x32')]?_0x3d61d4[_0x8332('0x30')]:_0x86d47a['model'];_0x3d61d4[_0x8332('0x34')]=qs['sort'](_0x19ccb1[_0x8332('0x2c')][_0x8332('0x35')]);_0x3d61d4['where']=qs['filters'](_[_0x8332('0x44')](_0x19ccb1[_0x8332('0x2c')],_0x86d47a[_0x8332('0x2e')]));if(_0x19ccb1[_0x8332('0x2c')]['filter']){_0x3d61d4[_0x8332('0x36')]=_['merge'](_0x3d61d4[_0x8332('0x36')],{'$or':_[_0x8332('0x2b')](_0x3d61d4[_0x8332('0x30')],function(_0x3e11c0){var _0x106704={};_0x106704[_0x3e11c0]={'$like':'%'+_0x19ccb1['query']['filter']+'%'};return _0x106704;})});}_0x3d61d4=_['merge']({},_0x3d61d4,_0x19ccb1[_0x8332('0x39')]);return _0x33d496['getSubjects'](_0x3d61d4);}})['then'](function(_0x100ba2){if(_0x100ba2){_0x55c8c0=_0x100ba2[_0x8332('0x32')];if(!_0x19ccb1[_0x8332('0x2c')][_0x8332('0x45')](_0x8332('0x33'))){_0x3d61d4[_0x8332('0x1c')]=qs[_0x8332('0x1c')](_0x19ccb1[_0x8332('0x2c')][_0x8332('0x1c')]);_0x3d61d4[_0x8332('0x19')]=qs[_0x8332('0x19')](_0x19ccb1['query'][_0x8332('0x19')]);}return _0x33d496['getSubjects'](_0x3d61d4);}})['then'](function(_0x2a9862){if(_0x2a9862){return _0x2a9862?{'count':_0x55c8c0,'rows':_0x2a9862}:null;}})[_0x8332('0x21')](respondWithResult(_0x9acfc4,null))[_0x8332('0x3f')](handleError(_0x9acfc4,null));};exports[_0x8332('0x46')]=function(_0x15cb12,_0x5b02f5,_0xdec429){var _0x3cf8cd={};var _0x3e7148={};var _0xf60ee0;var _0x323e3e;return db[_0x8332('0x3c')][_0x8332('0x47')]({'where':{'id':_0x15cb12['params']['id']}})[_0x8332('0x21')](handleEntityNotFound(_0x5b02f5,null))['then'](function(_0x5a6ae3){if(_0x5a6ae3){_0xf60ee0=_0x5a6ae3;_0x3e7148[_0x8332('0x2a')]=_[_0x8332('0x2d')](db[_0x8332('0x48')][_0x8332('0x27')]);_0x3e7148['query']=_['keys'](_0x15cb12['query']);_0x3e7148[_0x8332('0x2e')]=_[_0x8332('0x2f')](_0x3e7148[_0x8332('0x2a')],_0x3e7148[_0x8332('0x2c')]);_0x3cf8cd[_0x8332('0x30')]=_[_0x8332('0x2f')](_0x3e7148['model'],qs['fields'](_0x15cb12[_0x8332('0x2c')][_0x8332('0x31')]));_0x3cf8cd[_0x8332('0x30')]=_0x3cf8cd['attributes'][_0x8332('0x32')]?_0x3cf8cd[_0x8332('0x30')]:_0x3e7148[_0x8332('0x2a')];_0x3cf8cd[_0x8332('0x34')]=qs[_0x8332('0x35')](_0x15cb12['query'][_0x8332('0x35')]);_0x3cf8cd['where']=qs['filters'](_['pick'](_0x15cb12['query'],_0x3e7148['filters']));if(_0x15cb12[_0x8332('0x2c')]['filter']){_0x3cf8cd[_0x8332('0x36')]=_['merge'](_0x3cf8cd[_0x8332('0x36')],{'$or':_[_0x8332('0x2b')](_0x3cf8cd[_0x8332('0x30')],function(_0x1718c9){var _0x3d0782={};_0x3d0782[_0x1718c9]={'$like':'%'+_0x15cb12[_0x8332('0x2c')][_0x8332('0x37')]+'%'};return _0x3d0782;})});}_0x3cf8cd=_[_0x8332('0x38')]({},_0x3cf8cd,_0x15cb12[_0x8332('0x39')]);return _0xf60ee0[_0x8332('0x46')](_0x3cf8cd);}})[_0x8332('0x21')](function(_0x1dafce){if(_0x1dafce){_0x323e3e=_0x1dafce[_0x8332('0x32')];if(!_0x15cb12[_0x8332('0x2c')]['hasOwnProperty'](_0x8332('0x33'))){_0x3cf8cd[_0x8332('0x1c')]=qs[_0x8332('0x1c')](_0x15cb12[_0x8332('0x2c')]['limit']);_0x3cf8cd[_0x8332('0x19')]=qs[_0x8332('0x19')](_0x15cb12[_0x8332('0x2c')][_0x8332('0x19')]);}return _0xf60ee0[_0x8332('0x46')](_0x3cf8cd);}})[_0x8332('0x21')](function(_0x56c5cf){if(_0x56c5cf){return _0x56c5cf?{'count':_0x323e3e,'rows':_0x56c5cf}:null;}})[_0x8332('0x21')](respondWithResult(_0x5b02f5,null))['catch'](handleError(_0x5b02f5,null));};exports['getFields']=function(_0x2c1013,_0x1baafe,_0x375aaf){var _0x13f321={};var _0x2a5ba5={};var _0x28af92;var _0x1d3e88;return db[_0x8332('0x3c')][_0x8332('0x47')]({'where':{'id':_0x2c1013[_0x8332('0x42')]['id']}})[_0x8332('0x21')](handleEntityNotFound(_0x1baafe,null))['then'](function(_0x3e902c){if(_0x3e902c){_0x28af92=_0x3e902c;_0x2a5ba5[_0x8332('0x2a')]=_[_0x8332('0x2d')](db[_0x8332('0x48')][_0x8332('0x27')]);_0x2a5ba5[_0x8332('0x2c')]=_[_0x8332('0x2d')](_0x2c1013['query']);_0x2a5ba5['filters']=_['intersection'](_0x2a5ba5['model'],_0x2a5ba5[_0x8332('0x2c')]);_0x13f321[_0x8332('0x30')]=_[_0x8332('0x2f')](_0x2a5ba5['model'],qs[_0x8332('0x31')](_0x2c1013[_0x8332('0x2c')][_0x8332('0x31')]));_0x13f321[_0x8332('0x30')]=_0x13f321[_0x8332('0x30')][_0x8332('0x32')]?_0x13f321[_0x8332('0x30')]:_0x2a5ba5[_0x8332('0x2a')];_0x13f321[_0x8332('0x34')]=qs[_0x8332('0x35')](_0x2c1013['query'][_0x8332('0x35')]);_0x13f321[_0x8332('0x36')]=qs[_0x8332('0x2e')](_['pick'](_0x2c1013[_0x8332('0x2c')],_0x2a5ba5[_0x8332('0x2e')]));if(_0x2c1013[_0x8332('0x2c')][_0x8332('0x37')]){_0x13f321[_0x8332('0x36')]=_['merge'](_0x13f321[_0x8332('0x36')],{'$or':_[_0x8332('0x2b')](_0x13f321[_0x8332('0x30')],function(_0x4073a8){var _0x30ba35={};_0x30ba35[_0x4073a8]={'$like':'%'+_0x2c1013[_0x8332('0x2c')]['filter']+'%'};return _0x30ba35;})});}_0x13f321=_['merge']({},_0x13f321,_0x2c1013[_0x8332('0x39')]);return _0x28af92[_0x8332('0x49')](_0x13f321);}})[_0x8332('0x21')](function(_0x4571bb){if(_0x4571bb){_0x1d3e88=_0x4571bb[_0x8332('0x32')];if(!_0x2c1013[_0x8332('0x2c')][_0x8332('0x45')](_0x8332('0x33'))){_0x13f321[_0x8332('0x1c')]=qs[_0x8332('0x1c')](_0x2c1013[_0x8332('0x2c')][_0x8332('0x1c')]);_0x13f321[_0x8332('0x19')]=qs['offset'](_0x2c1013[_0x8332('0x2c')][_0x8332('0x19')]);}return _0x28af92[_0x8332('0x49')](_0x13f321);}})[_0x8332('0x21')](function(_0x3ccb2f){if(_0x3ccb2f){return _0x3ccb2f?{'count':_0x1d3e88,'rows':_0x3ccb2f}:null;}})[_0x8332('0x21')](respondWithResult(_0x1baafe,null))[_0x8332('0x3f')](handleError(_0x1baafe,null));};
\ No newline at end of file
index 99ccfef..1f34238 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ec1=['bluebird','path','rimraf','../../config/environment','exports','define','int_freshsales_configurations','util','api','moment'];(function(_0x4e722b,_0x34076c){var _0x5fe087=function(_0x1833ef){while(--_0x1833ef){_0x4e722b['push'](_0x4e722b['shift']());}};_0x5fe087(++_0x34076c);}(_0x0ec1,0x151));var _0x10ec=function(_0x99cd84,_0x1168e1){_0x99cd84=_0x99cd84-0x0;var _0x10f73e=_0x0ec1[_0x99cd84];return _0x10f73e;};'use strict';var _=require('lodash');var util=require(_0x10ec('0x0'));var logger=require('../../config/logger')(_0x10ec('0x1'));var moment=require(_0x10ec('0x2'));var BPromise=require(_0x10ec('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x10ec('0x4'));var rimraf=require(_0x10ec('0x5'));var config=require(_0x10ec('0x6'));var attributes=require('./intFreshsalesConfiguration.attributes');module[_0x10ec('0x7')]=function(_0x1191d7,_0xa75c0c){return _0x1191d7[_0x10ec('0x8')]('FreshsalesConfiguration',attributes,{'tableName':_0x10ec('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1864=['define','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports'];(function(_0x29838e,_0x4282ce){var _0x27eeca=function(_0x739111){while(--_0x739111){_0x29838e['push'](_0x29838e['shift']());}};_0x27eeca(++_0x4282ce);}(_0x1864,0x145));var _0x4186=function(_0x49de68,_0x26b476){_0x49de68=_0x49de68-0x0;var _0x570bb0=_0x1864[_0x49de68];return _0x570bb0;};'use strict';var _=require(_0x4186('0x0'));var util=require(_0x4186('0x1'));var logger=require(_0x4186('0x2'))('api');var moment=require(_0x4186('0x3'));var BPromise=require(_0x4186('0x4'));var rp=require(_0x4186('0x5'));var fs=require('fs');var path=require(_0x4186('0x6'));var rimraf=require(_0x4186('0x7'));var config=require(_0x4186('0x8'));var attributes=require(_0x4186('0x9'));module[_0x4186('0xa')]=function(_0x175922,_0x4d2507){return _0x175922[_0x4186('0xb')]('FreshsalesConfiguration',attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 08a29e8..a432812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b6=['jayson/promise','client','http','request','then','FreshsalesConfiguration,\x20%s,\x20%s','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment'];(function(_0xb59dd6,_0x1d0c9d){var _0x3bee1d=function(_0x2e52c3){while(--_0x2e52c3){_0xb59dd6['push'](_0xb59dd6['shift']());}};_0x3bee1d(++_0x1d0c9d);}(_0x34b6,0x178));var _0x634b=function(_0x3d364d,_0x3abc8a){_0x3d364d=_0x3d364d-0x0;var _0x162512=_0x34b6[_0x3d364d];return _0x162512;};'use strict';var _=require(_0x634b('0x0'));var util=require(_0x634b('0x1'));var moment=require(_0x634b('0x2'));var BPromise=require(_0x634b('0x3'));var rs=require(_0x634b('0x4'));var fs=require('fs');var Redis=require(_0x634b('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x634b('0x6'))('rpc');var config=require(_0x634b('0x7'));var jayson=require(_0x634b('0x8'));var client=jayson[_0x634b('0x9')][_0x634b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59c9a5,_0x22bb61,_0x1d617f){return new BPromise(function(_0x289281,_0xb0ed76){return client[_0x634b('0xb')](_0x59c9a5,_0x1d617f)[_0x634b('0xc')](function(_0x39413d){logger['info'](_0x634b('0xd'),_0x22bb61,'request\x20sent');logger[_0x634b('0xe')](_0x634b('0xf'),_0x22bb61,'request\x20sent',JSON[_0x634b('0x10')](_0x39413d));if(_0x39413d[_0x634b('0x11')]){if(_0x39413d['error'][_0x634b('0x12')]===0x1f4){logger[_0x634b('0x11')](_0x634b('0xd'),_0x22bb61,_0x39413d[_0x634b('0x11')][_0x634b('0x13')]);return _0xb0ed76(_0x39413d[_0x634b('0x11')]['message']);}logger[_0x634b('0x11')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x22bb61,_0x39413d[_0x634b('0x11')][_0x634b('0x13')]);return _0x289281(_0x39413d[_0x634b('0x11')][_0x634b('0x13')]);}else{logger[_0x634b('0x14')](_0x634b('0xd'),_0x22bb61,_0x634b('0x15'));_0x289281(_0x39413d[_0x634b('0x16')][_0x634b('0x13')]);}})[_0x634b('0x17')](function(_0x4a0890){logger[_0x634b('0x11')](_0x634b('0xd'),_0x22bb61,_0x4a0890);_0xb0ed76(_0x4a0890);});});}
\ No newline at end of file
+var _0xe5ae=['debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x481c66,_0x1d8019){var _0x407916=function(_0x28d83b){while(--_0x28d83b){_0x481c66['push'](_0x481c66['shift']());}};_0x407916(++_0x1d8019);}(_0xe5ae,0xf9));var _0xee5a=function(_0x2077c2,_0x275ab5){_0x2077c2=_0x2077c2-0x0;var _0x312f9f=_0xe5ae[_0x2077c2];return _0x312f9f;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xee5a('0x0'));var rs=require(_0xee5a('0x1'));var fs=require('fs');var Redis=require(_0xee5a('0x2'));var db=require(_0xee5a('0x3'))['db'];var utils=require(_0xee5a('0x4'));var logger=require(_0xee5a('0x5'))(_0xee5a('0x6'));var config=require(_0xee5a('0x7'));var jayson=require(_0xee5a('0x8'));var client=jayson[_0xee5a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14e789,_0x5177e3,_0x4bbfc3){return new BPromise(function(_0x51893e,_0x316c3b){return client[_0xee5a('0xa')](_0x14e789,_0x4bbfc3)[_0xee5a('0xb')](function(_0x5d4921){logger[_0xee5a('0xc')](_0xee5a('0xd'),_0x5177e3,_0xee5a('0xe'));logger[_0xee5a('0xf')](_0xee5a('0x10'),_0x5177e3,_0xee5a('0xe'),JSON[_0xee5a('0x11')](_0x5d4921));if(_0x5d4921['error']){if(_0x5d4921['error']['code']===0x1f4){logger[_0xee5a('0x12')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x5177e3,_0x5d4921['error'][_0xee5a('0x13')]);return _0x316c3b(_0x5d4921[_0xee5a('0x12')][_0xee5a('0x13')]);}logger[_0xee5a('0x12')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x5177e3,_0x5d4921[_0xee5a('0x12')][_0xee5a('0x13')]);return _0x51893e(_0x5d4921[_0xee5a('0x12')][_0xee5a('0x13')]);}else{logger[_0xee5a('0xc')](_0xee5a('0xd'),_0x5177e3,_0xee5a('0xe'));_0x51893e(_0x5d4921[_0xee5a('0x14')][_0xee5a('0x13')]);}})[_0xee5a('0x15')](function(_0x3f55f9){logger[_0xee5a('0x12')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x5177e3,_0x3f55f9);_0x316c3b(_0x3f55f9);});});}
\ No newline at end of file
index 303095c..52c9653 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x342b=['isAuthenticated','index','/:id','create','update','delete','destroy','exports','multer','path','connect-timeout','express','../../config/environment','./intFreshsalesField.controller','get'];(function(_0x4eb7e6,_0x451464){var _0x3cf508=function(_0x462471){while(--_0x462471){_0x4eb7e6['push'](_0x4eb7e6['shift']());}};_0x3cf508(++_0x451464);}(_0x342b,0xbc));var _0xb342=function(_0x1e290e,_0x165ad4){_0x1e290e=_0x1e290e-0x0;var _0x200b4e=_0x342b[_0x1e290e];return _0x200b4e;};'use strict';var multer=require(_0xb342('0x0'));var util=require('util');var path=require(_0xb342('0x1'));var timeout=require(_0xb342('0x2'));var express=require(_0xb342('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb342('0x4'));var controller=require(_0xb342('0x5'));router[_0xb342('0x6')]('/',auth[_0xb342('0x7')](),controller[_0xb342('0x8')]);router[_0xb342('0x6')](_0xb342('0x9'),auth[_0xb342('0x7')](),controller['show']);router['post']('/',auth[_0xb342('0x7')](),controller[_0xb342('0xa')]);router['put'](_0xb342('0x9'),auth[_0xb342('0x7')](),controller[_0xb342('0xb')]);router[_0xb342('0xc')](_0xb342('0x9'),auth[_0xb342('0x7')](),controller[_0xb342('0xd')]);module[_0xb342('0xe')]=router;
\ No newline at end of file
+var _0x3ce4=['../../components/interaction/service','./intFreshsalesField.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','exports','multer','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3ce4,0xcb));var _0x43ce=function(_0x5627e1,_0x1b2dbf){_0x5627e1=_0x5627e1-0x0;var _0x2f013f=_0x3ce4[_0x5627e1];return _0x2f013f;};'use strict';var multer=require(_0x43ce('0x0'));var util=require('util');var path=require(_0x43ce('0x1'));var timeout=require('connect-timeout');var express=require(_0x43ce('0x2'));var router=express[_0x43ce('0x3')]();var fs_extra=require(_0x43ce('0x4'));var auth=require(_0x43ce('0x5'));var interaction=require(_0x43ce('0x6'));var config=require('../../config/environment');var controller=require(_0x43ce('0x7'));router[_0x43ce('0x8')]('/',auth['isAuthenticated'](),controller[_0x43ce('0x9')]);router['get'](_0x43ce('0xa'),auth[_0x43ce('0xb')](),controller[_0x43ce('0xc')]);router[_0x43ce('0xd')]('/',auth['isAuthenticated'](),controller[_0x43ce('0xe')]);router[_0x43ce('0xf')](_0x43ce('0xa'),auth[_0x43ce('0xb')](),controller[_0x43ce('0x10')]);router[_0x43ce('0x11')](_0x43ce('0xa'),auth[_0x43ce('0xb')](),controller['destroy']);module[_0x43ce('0x12')]=router;
\ No newline at end of file
index b696b92..d44257d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3bc=['keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','customVariable'];(function(_0x13854c,_0x2ed273){var _0x4d9c2e=function(_0x2680d9){while(--_0x2680d9){_0x13854c['push'](_0x13854c['shift']());}};_0x4d9c2e(++_0x2ed273);}(_0xf3bc,0xc1));var _0xcf3b=function(_0x467e34,_0xaae9fd){_0x467e34=_0x467e34-0x0;var _0x7d77a7=_0xf3bc[_0x467e34];return _0x7d77a7;};'use strict';var Sequelize=require(_0xcf3b('0x0'));module[_0xcf3b('0x1')]={'type':{'type':Sequelize[_0xcf3b('0x2')](_0xcf3b('0x3'),'variable',_0xcf3b('0x4'),_0xcf3b('0x5'),_0xcf3b('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xcf3b('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xcf3b('0x2')](_0xcf3b('0x3'),'variable',_0xcf3b('0x4'))},'keyContent':{'type':Sequelize[_0xcf3b('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xcf3b('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xcf3b('0x7')]}};
\ No newline at end of file
+var _0xa5e3=['STRING','BOOLEAN','sequelize','ENUM','string','variable','customVariable','picklist'];(function(_0xbf4914,_0x4ff02f){var _0x2b8895=function(_0x1896ad){while(--_0x1896ad){_0xbf4914['push'](_0xbf4914['shift']());}};_0x2b8895(++_0x4ff02f);}(_0xa5e3,0x15a));var _0x3a5e=function(_0x18438c,_0x4f688c){_0x18438c=_0x18438c-0x0;var _0x769453=_0xa5e3[_0x18438c];return _0x769453;};'use strict';var Sequelize=require(_0x3a5e('0x0'));module['exports']={'type':{'type':Sequelize[_0x3a5e('0x1')](_0x3a5e('0x2'),_0x3a5e('0x3'),_0x3a5e('0x4'),'keyValue',_0x3a5e('0x5')),'defaultValue':_0x3a5e('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x3a5e('0x6')]},'keyType':{'type':Sequelize[_0x3a5e('0x1')](_0x3a5e('0x2'),_0x3a5e('0x3'),_0x3a5e('0x4'))},'keyContent':{'type':Sequelize[_0x3a5e('0x6')]},'idField':{'type':Sequelize[_0x3a5e('0x6')]},'nameField':{'type':Sequelize[_0x3a5e('0x6')]},'customField':{'type':Sequelize[_0x3a5e('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3a5e('0x6')]}};
\ No newline at end of file
index 8db11e2..29bc276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0d9=['find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','offset','limit','set','Content-Range','save','update','end','stack','name','send','index','map','FreshsalesField','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','then','rows','catch','show','params','keys','length','create','body'];(function(_0xcfc14a,_0x3312a8){var _0x7d71e6=function(_0x8ef71){while(--_0x8ef71){_0xcfc14a['push'](_0xcfc14a['shift']());}};_0x7d71e6(++_0x3312a8);}(_0xc0d9,0x11a));var _0x9c0d=function(_0x427788,_0x55f238){_0x427788=_0x427788-0x0;var _0x48b26a=_0xc0d9[_0x427788];return _0x48b26a;};'use strict';var emlformat=require(_0x9c0d('0x0'));var rimraf=require(_0x9c0d('0x1'));var zipdir=require(_0x9c0d('0x2'));var jsonpatch=require(_0x9c0d('0x3'));var rp=require(_0x9c0d('0x4'));var moment=require(_0x9c0d('0x5'));var BPromise=require(_0x9c0d('0x6'));var Mustache=require('mustache');var util=require(_0x9c0d('0x7'));var path=require(_0x9c0d('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9c0d('0x9'));var crypto=require(_0x9c0d('0xa'));var jsforce=require(_0x9c0d('0xb'));var deskjs=require(_0x9c0d('0xc'));var toCsv=require(_0x9c0d('0xd'));var querystring=require(_0x9c0d('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9c0d('0xf'));var as=require(_0x9c0d('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9c0d('0x11'))(_0x9c0d('0x12'));var utils=require(_0x9c0d('0x13'));var config=require(_0x9c0d('0x14'));var licenseUtil=require(_0x9c0d('0x15'));var db=require(_0x9c0d('0x16'))['db'];function respondWithStatusCode(_0x3d9d98,_0x4d8fb5){_0x4d8fb5=_0x4d8fb5||0xcc;return function(_0x3d47e1){if(_0x3d47e1){return _0x3d9d98[_0x9c0d('0x17')](_0x4d8fb5);}return _0x3d9d98[_0x9c0d('0x18')](_0x4d8fb5)['end']();};}function respondWithResult(_0x286cdf,_0x1da2b5){_0x1da2b5=_0x1da2b5||0xc8;return function(_0x2d4c7d){if(_0x2d4c7d){return _0x286cdf[_0x9c0d('0x18')](_0x1da2b5)[_0x9c0d('0x19')](_0x2d4c7d);}};}function respondWithFilteredResult(_0x54746e,_0x22f4a8){return function(_0x412eb6){if(_0x412eb6){var _0x2c0b13=typeof _0x22f4a8['offset']===_0x9c0d('0x1a')&&typeof _0x22f4a8['limit']===_0x9c0d('0x1a');var _0x57cfb1=_0x412eb6['count'];var _0x257bed=_0x2c0b13?0x0:_0x22f4a8[_0x9c0d('0x1b')];var _0x35d255=_0x2c0b13?_0x412eb6['count']:_0x22f4a8['offset']+_0x22f4a8[_0x9c0d('0x1c')];var _0x5befe2;if(_0x35d255>=_0x57cfb1){_0x35d255=_0x57cfb1;_0x5befe2=0xc8;}else{_0x5befe2=0xce;}_0x54746e['status'](_0x5befe2);return _0x54746e[_0x9c0d('0x1d')](_0x9c0d('0x1e'),_0x257bed+'-'+_0x35d255+'/'+_0x57cfb1)[_0x9c0d('0x19')](_0x412eb6);}return null;};}function patchUpdates(_0x4669c4){return function(_0x41a1f2){try{jsonpatch['apply'](_0x41a1f2,_0x4669c4,!![]);}catch(_0x1ae782){return BPromise['reject'](_0x1ae782);}return _0x41a1f2[_0x9c0d('0x1f')]();};}function saveUpdates(_0x1d632e,_0x199309){return function(_0x2c85df){if(_0x2c85df){return _0x2c85df[_0x9c0d('0x20')](_0x1d632e)['then'](function(_0x15ba7c){return _0x15ba7c;});}return null;};}function removeEntity(_0x3376dd,_0x16dc2f){return function(_0x32ba26){if(_0x32ba26){return _0x32ba26['destroy']()['then'](function(){_0x3376dd[_0x9c0d('0x18')](0xcc)[_0x9c0d('0x21')]();});}};}function handleEntityNotFound(_0x1632a1,_0x36d33f){return function(_0x20437e){if(!_0x20437e){_0x1632a1[_0x9c0d('0x17')](0x194);}return _0x20437e;};}function handleError(_0x5763c1,_0x5e4b9b){_0x5e4b9b=_0x5e4b9b||0x1f4;return function(_0x44f7e3){logger['error'](_0x44f7e3[_0x9c0d('0x22')]);if(_0x44f7e3[_0x9c0d('0x23')]){delete _0x44f7e3[_0x9c0d('0x23')];}_0x5763c1[_0x9c0d('0x18')](_0x5e4b9b)[_0x9c0d('0x24')](_0x44f7e3);};}exports[_0x9c0d('0x25')]=function(_0x37434b,_0x3dd5b8){var _0x4a01fb={},_0x3fa3e7={},_0x13482b={'count':0x0,'rows':[]};var _0x49b66a=_[_0x9c0d('0x26')](db[_0x9c0d('0x27')][_0x9c0d('0x28')],function(_0x35cc48){return{'name':_0x35cc48[_0x9c0d('0x29')],'type':_0x35cc48['type'][_0x9c0d('0x2a')]};});_0x3fa3e7[_0x9c0d('0x2b')]=_[_0x9c0d('0x26')](_0x49b66a,_0x9c0d('0x23'));_0x3fa3e7[_0x9c0d('0x2c')]=_['keys'](_0x37434b[_0x9c0d('0x2c')]);_0x3fa3e7[_0x9c0d('0x2d')]=_[_0x9c0d('0x2e')](_0x3fa3e7['model'],_0x3fa3e7['query']);_0x4a01fb[_0x9c0d('0x2f')]=_[_0x9c0d('0x2e')](_0x3fa3e7[_0x9c0d('0x2b')],qs[_0x9c0d('0x30')](_0x37434b[_0x9c0d('0x2c')][_0x9c0d('0x30')]));_0x4a01fb[_0x9c0d('0x2f')]=_0x4a01fb['attributes']['length']?_0x4a01fb[_0x9c0d('0x2f')]:_0x3fa3e7[_0x9c0d('0x2b')];if(!_0x37434b['query'][_0x9c0d('0x31')]('nolimit')){_0x4a01fb[_0x9c0d('0x1c')]=qs[_0x9c0d('0x1c')](_0x37434b['query']['limit']);_0x4a01fb[_0x9c0d('0x1b')]=qs[_0x9c0d('0x1b')](_0x37434b[_0x9c0d('0x2c')][_0x9c0d('0x1b')]);}_0x4a01fb['order']=qs[_0x9c0d('0x32')](_0x37434b[_0x9c0d('0x2c')]['sort']);_0x4a01fb[_0x9c0d('0x33')]=qs[_0x9c0d('0x2d')](_['pick'](_0x37434b[_0x9c0d('0x2c')],_0x3fa3e7[_0x9c0d('0x2d')]),_0x49b66a);if(_0x37434b[_0x9c0d('0x2c')][_0x9c0d('0x34')]){_0x4a01fb[_0x9c0d('0x33')]=_[_0x9c0d('0x35')](_0x4a01fb['where'],{'$or':_[_0x9c0d('0x26')](_0x49b66a,function(_0x124f01){if(_0x124f01['type']!==_0x9c0d('0x36')){var _0x45f659={};_0x45f659[_0x124f01['name']]={'$like':'%'+_0x37434b[_0x9c0d('0x2c')][_0x9c0d('0x34')]+'%'};return _0x45f659;}})});}_0x4a01fb=_[_0x9c0d('0x35')]({},_0x4a01fb,_0x37434b[_0x9c0d('0x37')]);var _0xe8ebc4={'where':_0x4a01fb[_0x9c0d('0x33')]};return db[_0x9c0d('0x27')][_0x9c0d('0x38')](_0xe8ebc4)['then'](function(_0x2314d5){_0x13482b['count']=_0x2314d5;if(_0x37434b[_0x9c0d('0x2c')][_0x9c0d('0x39')]){_0x4a01fb[_0x9c0d('0x3a')]=[{'all':!![]}];}return db[_0x9c0d('0x27')]['findAll'](_0x4a01fb);})[_0x9c0d('0x3b')](function(_0x42a144){_0x13482b[_0x9c0d('0x3c')]=_0x42a144;return _0x13482b;})[_0x9c0d('0x3b')](respondWithFilteredResult(_0x3dd5b8,_0x4a01fb))[_0x9c0d('0x3d')](handleError(_0x3dd5b8,null));};exports[_0x9c0d('0x3e')]=function(_0x2498bb,_0x23b969){var _0x16fa12={'raw':!![],'where':{'id':_0x2498bb[_0x9c0d('0x3f')]['id']}},_0x5de896={};_0x5de896['model']=_[_0x9c0d('0x40')](db['FreshsalesField'][_0x9c0d('0x28')]);_0x5de896[_0x9c0d('0x2c')]=_[_0x9c0d('0x40')](_0x2498bb[_0x9c0d('0x2c')]);_0x5de896[_0x9c0d('0x2d')]=_[_0x9c0d('0x2e')](_0x5de896['model'],_0x5de896[_0x9c0d('0x2c')]);_0x16fa12[_0x9c0d('0x2f')]=_[_0x9c0d('0x2e')](_0x5de896[_0x9c0d('0x2b')],qs[_0x9c0d('0x30')](_0x2498bb[_0x9c0d('0x2c')][_0x9c0d('0x30')]));_0x16fa12[_0x9c0d('0x2f')]=_0x16fa12[_0x9c0d('0x2f')][_0x9c0d('0x41')]?_0x16fa12[_0x9c0d('0x2f')]:_0x5de896[_0x9c0d('0x2b')];if(_0x2498bb[_0x9c0d('0x2c')]['includeAll']){_0x16fa12[_0x9c0d('0x3a')]=[{'all':!![]}];}_0x16fa12=_[_0x9c0d('0x35')]({},_0x16fa12,_0x2498bb['options']);return db[_0x9c0d('0x27')]['find'](_0x16fa12)[_0x9c0d('0x3b')](handleEntityNotFound(_0x23b969,null))[_0x9c0d('0x3b')](respondWithResult(_0x23b969,null))['catch'](handleError(_0x23b969,null));};exports[_0x9c0d('0x42')]=function(_0x471a8d,_0x62c67c){return db[_0x9c0d('0x27')][_0x9c0d('0x42')](_0x471a8d[_0x9c0d('0x43')],{})['then'](respondWithResult(_0x62c67c,0xc9))['catch'](handleError(_0x62c67c,null));};exports[_0x9c0d('0x20')]=function(_0x1e1173,_0x594763){if(_0x1e1173['body']['id']){delete _0x1e1173[_0x9c0d('0x43')]['id'];}return db['FreshsalesField'][_0x9c0d('0x44')]({'where':{'id':_0x1e1173['params']['id']}})['then'](handleEntityNotFound(_0x594763,null))[_0x9c0d('0x3b')](saveUpdates(_0x1e1173[_0x9c0d('0x43')],null))['then'](respondWithResult(_0x594763,null))[_0x9c0d('0x3d')](handleError(_0x594763,null));};exports[_0x9c0d('0x45')]=function(_0xd57c3c,_0x49976b){return db[_0x9c0d('0x27')][_0x9c0d('0x44')]({'where':{'id':_0xd57c3c[_0x9c0d('0x3f')]['id']}})[_0x9c0d('0x3b')](handleEntityNotFound(_0x49976b,null))[_0x9c0d('0x3b')](removeEntity(_0x49976b,null))[_0x9c0d('0x3d')](handleError(_0x49976b,null));};
\ No newline at end of file
+var _0x3d08=['find','body','eml-format','rimraf','zip-dir','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','error','stack','send','map','FreshsalesField','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','params'];(function(_0x2cd45d,_0x24507e){var _0xc183b5=function(_0x16a2fa){while(--_0x16a2fa){_0x2cd45d['push'](_0x2cd45d['shift']());}};_0xc183b5(++_0x24507e);}(_0x3d08,0x16f));var _0x83d0=function(_0x3b6855,_0x3ce8ee){_0x3b6855=_0x3b6855-0x0;var _0xdd6e23=_0x3d08[_0x3b6855];return _0xdd6e23;};'use strict';var emlformat=require(_0x83d0('0x0'));var rimraf=require(_0x83d0('0x1'));var zipdir=require(_0x83d0('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x83d0('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x83d0('0x4'));var path=require(_0x83d0('0x5'));var sox=require(_0x83d0('0x6'));var csv=require(_0x83d0('0x7'));var ejs=require(_0x83d0('0x8'));var fs=require('fs');var fs_extra=require(_0x83d0('0x9'));var _=require(_0x83d0('0xa'));var squel=require(_0x83d0('0xb'));var crypto=require(_0x83d0('0xc'));var jsforce=require(_0x83d0('0xd'));var deskjs=require(_0x83d0('0xe'));var toCsv=require('to-csv');var querystring=require(_0x83d0('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x83d0('0x10'));var qs=require(_0x83d0('0x11'));var as=require(_0x83d0('0x12'));var hardwareService=require(_0x83d0('0x13'));var logger=require(_0x83d0('0x14'))('api');var utils=require(_0x83d0('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e7e2d,_0x4d1aa8){_0x4d1aa8=_0x4d1aa8||0xcc;return function(_0x43f647){if(_0x43f647){return _0x5e7e2d[_0x83d0('0x16')](_0x4d1aa8);}return _0x5e7e2d[_0x83d0('0x17')](_0x4d1aa8)[_0x83d0('0x18')]();};}function respondWithResult(_0x400d54,_0xc365e8){_0xc365e8=_0xc365e8||0xc8;return function(_0x4f7196){if(_0x4f7196){return _0x400d54['status'](_0xc365e8)[_0x83d0('0x19')](_0x4f7196);}};}function respondWithFilteredResult(_0x180a26,_0x23e49c){return function(_0x441a34){if(_0x441a34){var _0x565a5a=typeof _0x23e49c[_0x83d0('0x1a')]===_0x83d0('0x1b')&&typeof _0x23e49c[_0x83d0('0x1c')]===_0x83d0('0x1b');var _0x3e8df6=_0x441a34[_0x83d0('0x1d')];var _0x88482c=_0x565a5a?0x0:_0x23e49c[_0x83d0('0x1a')];var _0x1d42e0=_0x565a5a?_0x441a34['count']:_0x23e49c[_0x83d0('0x1a')]+_0x23e49c[_0x83d0('0x1c')];var _0x382dd;if(_0x1d42e0>=_0x3e8df6){_0x1d42e0=_0x3e8df6;_0x382dd=0xc8;}else{_0x382dd=0xce;}_0x180a26[_0x83d0('0x17')](_0x382dd);return _0x180a26[_0x83d0('0x1e')]('Content-Range',_0x88482c+'-'+_0x1d42e0+'/'+_0x3e8df6)['json'](_0x441a34);}return null;};}function patchUpdates(_0x1ed96c){return function(_0x2b0b48){try{jsonpatch[_0x83d0('0x1f')](_0x2b0b48,_0x1ed96c,!![]);}catch(_0x2976ec){return BPromise[_0x83d0('0x20')](_0x2976ec);}return _0x2b0b48[_0x83d0('0x21')]();};}function saveUpdates(_0x2b7d8e,_0x30f455){return function(_0x337c1d){if(_0x337c1d){return _0x337c1d[_0x83d0('0x22')](_0x2b7d8e)['then'](function(_0xa2760b){return _0xa2760b;});}return null;};}function removeEntity(_0x3ee1de,_0x152452){return function(_0x303d3c){if(_0x303d3c){return _0x303d3c[_0x83d0('0x23')]()['then'](function(){_0x3ee1de[_0x83d0('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x34e8d8,_0x16f81e){return function(_0xbeb902){if(!_0xbeb902){_0x34e8d8[_0x83d0('0x16')](0x194);}return _0xbeb902;};}function handleError(_0x5733ab,_0x1e1a2a){_0x1e1a2a=_0x1e1a2a||0x1f4;return function(_0x305e38){logger[_0x83d0('0x24')](_0x305e38[_0x83d0('0x25')]);if(_0x305e38['name']){delete _0x305e38['name'];}_0x5733ab[_0x83d0('0x17')](_0x1e1a2a)[_0x83d0('0x26')](_0x305e38);};}exports['index']=function(_0x368653,_0x3ff66e){var _0x1bc0fa={},_0x195feb={},_0x3ea1ea={'count':0x0,'rows':[]};var _0x22777c=_[_0x83d0('0x27')](db[_0x83d0('0x28')][_0x83d0('0x29')],function(_0x53c186){return{'name':_0x53c186[_0x83d0('0x2a')],'type':_0x53c186[_0x83d0('0x2b')][_0x83d0('0x2c')]};});_0x195feb['model']=_[_0x83d0('0x27')](_0x22777c,_0x83d0('0x2d'));_0x195feb[_0x83d0('0x2e')]=_[_0x83d0('0x2f')](_0x368653[_0x83d0('0x2e')]);_0x195feb[_0x83d0('0x30')]=_[_0x83d0('0x31')](_0x195feb[_0x83d0('0x32')],_0x195feb['query']);_0x1bc0fa['attributes']=_[_0x83d0('0x31')](_0x195feb[_0x83d0('0x32')],qs[_0x83d0('0x33')](_0x368653['query'][_0x83d0('0x33')]));_0x1bc0fa[_0x83d0('0x34')]=_0x1bc0fa['attributes'][_0x83d0('0x35')]?_0x1bc0fa[_0x83d0('0x34')]:_0x195feb[_0x83d0('0x32')];if(!_0x368653['query'][_0x83d0('0x36')](_0x83d0('0x37'))){_0x1bc0fa[_0x83d0('0x1c')]=qs['limit'](_0x368653['query'][_0x83d0('0x1c')]);_0x1bc0fa['offset']=qs[_0x83d0('0x1a')](_0x368653[_0x83d0('0x2e')]['offset']);}_0x1bc0fa[_0x83d0('0x38')]=qs[_0x83d0('0x39')](_0x368653[_0x83d0('0x2e')][_0x83d0('0x39')]);_0x1bc0fa[_0x83d0('0x3a')]=qs[_0x83d0('0x30')](_['pick'](_0x368653[_0x83d0('0x2e')],_0x195feb[_0x83d0('0x30')]),_0x22777c);if(_0x368653[_0x83d0('0x2e')][_0x83d0('0x3b')]){_0x1bc0fa['where']=_[_0x83d0('0x3c')](_0x1bc0fa[_0x83d0('0x3a')],{'$or':_[_0x83d0('0x27')](_0x22777c,function(_0x6076fb){if(_0x6076fb[_0x83d0('0x2b')]!==_0x83d0('0x3d')){var _0x87aa64={};_0x87aa64[_0x6076fb['name']]={'$like':'%'+_0x368653['query'][_0x83d0('0x3b')]+'%'};return _0x87aa64;}})});}_0x1bc0fa=_['merge']({},_0x1bc0fa,_0x368653[_0x83d0('0x3e')]);var _0xef6d54={'where':_0x1bc0fa[_0x83d0('0x3a')]};return db['FreshsalesField']['count'](_0xef6d54)[_0x83d0('0x3f')](function(_0x10dc47){_0x3ea1ea['count']=_0x10dc47;if(_0x368653[_0x83d0('0x2e')][_0x83d0('0x40')]){_0x1bc0fa[_0x83d0('0x41')]=[{'all':!![]}];}return db['FreshsalesField'][_0x83d0('0x42')](_0x1bc0fa);})[_0x83d0('0x3f')](function(_0x41de2a){_0x3ea1ea[_0x83d0('0x43')]=_0x41de2a;return _0x3ea1ea;})[_0x83d0('0x3f')](respondWithFilteredResult(_0x3ff66e,_0x1bc0fa))[_0x83d0('0x44')](handleError(_0x3ff66e,null));};exports[_0x83d0('0x45')]=function(_0x11908f,_0x4401e7){var _0x2e06d0={'raw':!![],'where':{'id':_0x11908f[_0x83d0('0x46')]['id']}},_0x11847d={};_0x11847d['model']=_['keys'](db[_0x83d0('0x28')][_0x83d0('0x29')]);_0x11847d[_0x83d0('0x2e')]=_['keys'](_0x11908f[_0x83d0('0x2e')]);_0x11847d['filters']=_[_0x83d0('0x31')](_0x11847d[_0x83d0('0x32')],_0x11847d['query']);_0x2e06d0[_0x83d0('0x34')]=_['intersection'](_0x11847d[_0x83d0('0x32')],qs['fields'](_0x11908f[_0x83d0('0x2e')][_0x83d0('0x33')]));_0x2e06d0[_0x83d0('0x34')]=_0x2e06d0['attributes'][_0x83d0('0x35')]?_0x2e06d0[_0x83d0('0x34')]:_0x11847d[_0x83d0('0x32')];if(_0x11908f[_0x83d0('0x2e')][_0x83d0('0x40')]){_0x2e06d0[_0x83d0('0x41')]=[{'all':!![]}];}_0x2e06d0=_[_0x83d0('0x3c')]({},_0x2e06d0,_0x11908f[_0x83d0('0x3e')]);return db['FreshsalesField'][_0x83d0('0x47')](_0x2e06d0)['then'](handleEntityNotFound(_0x4401e7,null))['then'](respondWithResult(_0x4401e7,null))[_0x83d0('0x44')](handleError(_0x4401e7,null));};exports['create']=function(_0x4a9e54,_0x3775fd){return db[_0x83d0('0x28')]['create'](_0x4a9e54['body'],{})[_0x83d0('0x3f')](respondWithResult(_0x3775fd,0xc9))[_0x83d0('0x44')](handleError(_0x3775fd,null));};exports[_0x83d0('0x22')]=function(_0x281266,_0x695fff){if(_0x281266[_0x83d0('0x48')]['id']){delete _0x281266['body']['id'];}return db[_0x83d0('0x28')][_0x83d0('0x47')]({'where':{'id':_0x281266[_0x83d0('0x46')]['id']}})[_0x83d0('0x3f')](handleEntityNotFound(_0x695fff,null))['then'](saveUpdates(_0x281266[_0x83d0('0x48')],null))[_0x83d0('0x3f')](respondWithResult(_0x695fff,null))['catch'](handleError(_0x695fff,null));};exports[_0x83d0('0x23')]=function(_0x6ca820,_0xc23be){return db[_0x83d0('0x28')][_0x83d0('0x47')]({'where':{'id':_0x6ca820[_0x83d0('0x46')]['id']}})[_0x83d0('0x3f')](handleEntityNotFound(_0xc23be,null))[_0x83d0('0x3f')](removeEntity(_0xc23be,null))[_0x83d0('0x44')](handleError(_0xc23be,null));};
\ No newline at end of file
index 42e5434..96a312e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee0=['idField','FieldId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','FreshsalesField','freshsales_unique_index'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbee0,0x147));var _0x0bee=function(_0x2a32eb,_0x290aa5){_0x2a32eb=_0x2a32eb-0x0;var _0x238889=_0xbee0[_0x2a32eb];return _0x238889;};'use strict';var _=require('lodash');var util=require(_0x0bee('0x0'));var logger=require(_0x0bee('0x1'))(_0x0bee('0x2'));var moment=require(_0x0bee('0x3'));var BPromise=require(_0x0bee('0x4'));var rp=require(_0x0bee('0x5'));var fs=require('fs');var path=require(_0x0bee('0x6'));var rimraf=require(_0x0bee('0x7'));var config=require('../../config/environment');var attributes=require('./intFreshsalesField.attributes');module['exports']=function(_0xd0c8f,_0xa3a091){return _0xd0c8f[_0x0bee('0x8')](_0x0bee('0x9'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0x0bee('0xa'),'fields':[_0x0bee('0xb'),_0x0bee('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc5c0=['define','int_freshsales_fields','freshsales_unique_index','FieldId','lodash','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./intFreshsalesField.attributes','exports'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xc5c0,0x6c));var _0x0c5c=function(_0x1a8991,_0x247192){_0x1a8991=_0x1a8991-0x0;var _0x3929b8=_0xc5c0[_0x1a8991];return _0x3929b8;};'use strict';var _=require(_0x0c5c('0x0'));var util=require(_0x0c5c('0x1'));var logger=require(_0x0c5c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0c5c('0x3'));var rp=require(_0x0c5c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0c5c('0x5'));var config=require(_0x0c5c('0x6'));var attributes=require(_0x0c5c('0x7'));module[_0x0c5c('0x8')]=function(_0x3c684c,_0x3da336){return _0x3c684c[_0x0c5c('0x9')]('FreshsalesField',attributes,{'tableName':_0x0c5c('0xa'),'paranoid':![],'indexes':[{'name':_0x0c5c('0xb'),'fields':['idField',_0x0c5c('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1ac12cd..5960702 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a07=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','FreshsalesField,\x20%s,\x20%s','request\x20sent','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','message','info'];(function(_0x197785,_0x406254){var _0x58190f=function(_0x5922a7){while(--_0x5922a7){_0x197785['push'](_0x197785['shift']());}};_0x58190f(++_0x406254);}(_0x2a07,0x74));var _0x72a0=function(_0x1dcbcc,_0x31a0fc){_0x1dcbcc=_0x1dcbcc-0x0;var _0x38590e=_0x2a07[_0x1dcbcc];return _0x38590e;};'use strict';var _=require(_0x72a0('0x0'));var util=require(_0x72a0('0x1'));var moment=require(_0x72a0('0x2'));var BPromise=require(_0x72a0('0x3'));var rs=require(_0x72a0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x72a0('0x5'))['db'];var utils=require(_0x72a0('0x6'));var logger=require(_0x72a0('0x7'))(_0x72a0('0x8'));var config=require(_0x72a0('0x9'));var jayson=require(_0x72a0('0xa'));var client=jayson[_0x72a0('0xb')][_0x72a0('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x193e3b,_0x287b06,_0x21c819){return new BPromise(function(_0x2c04eb,_0x22270e){return client[_0x72a0('0xd')](_0x193e3b,_0x21c819)[_0x72a0('0xe')](function(_0x2bc45b){logger['info'](_0x72a0('0xf'),_0x287b06,_0x72a0('0x10'));logger['debug'](_0x72a0('0x11'),_0x287b06,_0x72a0('0x10'),JSON[_0x72a0('0x12')](_0x2bc45b));if(_0x2bc45b[_0x72a0('0x13')]){if(_0x2bc45b[_0x72a0('0x13')]['code']===0x1f4){logger[_0x72a0('0x13')](_0x72a0('0xf'),_0x287b06,_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);return _0x22270e(_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);}logger[_0x72a0('0x13')]('FreshsalesField,\x20%s,\x20%s',_0x287b06,_0x2bc45b['error'][_0x72a0('0x14')]);return _0x2c04eb(_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);}else{logger[_0x72a0('0x15')](_0x72a0('0xf'),_0x287b06,_0x72a0('0x10'));_0x2c04eb(_0x2bc45b['result'][_0x72a0('0x14')]);}})[_0x72a0('0x16')](function(_0x16ac70){logger[_0x72a0('0x13')](_0x72a0('0xf'),_0x287b06,_0x16ac70);_0x22270e(_0x16ac70);});});}
\ No newline at end of file
+var _0x0295=['client','http','then','info','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','FreshsalesField,\x20%s,\x20%s','message','result','catch','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x136788,_0x2dd305){var _0x163417=function(_0x11ab29){while(--_0x11ab29){_0x136788['push'](_0x136788['shift']());}};_0x163417(++_0x2dd305);}(_0x0295,0x1f0));var _0x5029=function(_0x225915,_0x2eaa2f){_0x225915=_0x225915-0x0;var _0x3b8d10=_0x0295[_0x225915];return _0x3b8d10;};'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')]('FreshsalesField,\x20%s,\x20%s',_0x502a62,_0x5029('0xc'));logger[_0x5029('0xd')](_0x5029('0xe'),_0x502a62,'request\x20sent',JSON[_0x5029('0xf')](_0x5bccfc));if(_0x5bccfc[_0x5029('0x10')]){if(_0x5bccfc[_0x5029('0x10')]['code']===0x1f4){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc['error']['message']);return _0xf4459b(_0x5bccfc['error']['message']);}logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);return _0x4ee867(_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);}else{logger[_0x5029('0xb')](_0x5029('0x11'),_0x502a62,_0x5029('0xc'));_0x4ee867(_0x5bccfc[_0x5029('0x13')][_0x5029('0x12')]);}})[_0x5029('0x14')](function(_0x3786b5){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x3786b5);_0xf4459b(_0x3786b5);});});}
\ No newline at end of file
index 35d6e4a..4c4dcf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x181fb0,_0x3eba82){var _0x1d125c=function(_0x28ee64){while(--_0x28ee64){_0x181fb0['push'](_0x181fb0['shift']());}};_0x1d125c(++_0x3eba82);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+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(_0x3720b0,_0x266bee){var _0x71581=function(_0x4aac1d){while(--_0x4aac1d){_0x3720b0['push'](_0x3720b0['shift']());}};_0x71581(++_0x266bee);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('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 eb509a9..a0c8541 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26bd=['integrationTab','newTab','sequelize','exports','STRING','username','ENUM'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x26bd,0xaa));var _0xd26b=function(_0x530f68,_0x35808a){_0x530f68=_0x530f68-0x0;var _0x3abbab=_0x26bd[_0x530f68];return _0x3abbab;};'use strict';var Sequelize=require(_0xd26b('0x0'));module[_0xd26b('0x1')]={'name':{'type':Sequelize[_0xd26b('0x2')]},'description':{'type':Sequelize[_0xd26b('0x2')]},'username':{'type':Sequelize[_0xd26b('0x2')],'unique':_0xd26b('0x3')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xd26b('0x2')]},'clientId':{'type':Sequelize[_0xd26b('0x2')]},'clientSecret':{'type':Sequelize[_0xd26b('0x2')]},'securityToken':{'type':Sequelize[_0xd26b('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xd26b('0x4')](_0xd26b('0x5'),_0xd26b('0x6')),'defaultValue':_0xd26b('0x5')}};
\ No newline at end of file
+var _0xb396=['ENUM','newTab','sequelize','exports','STRING','username'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xb396,0x1e8));var _0x6b39=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xb396[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x6b39('0x0'));module[_0x6b39('0x1')]={'name':{'type':Sequelize[_0x6b39('0x2')]},'description':{'type':Sequelize[_0x6b39('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x6b39('0x3')},'remoteUri':{'type':Sequelize[_0x6b39('0x2')]},'password':{'type':Sequelize[_0x6b39('0x2')]},'clientId':{'type':Sequelize[_0x6b39('0x2')]},'clientSecret':{'type':Sequelize[_0x6b39('0x2')]},'securityToken':{'type':Sequelize[_0x6b39('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6b39('0x4')]('integrationTab',_0x6b39('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 1758e81..7102c36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf65=['sobject','describe','OwnerId','ActivityDate','IsReminderSet','Subject','Description','string','int','boolean','email','textarea','phone','remove','includes','label','custom','picklistValues','True','true','False','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','send','Wrong\x20credentials','rimraf','fast-json-patch','moment','bluebird','util','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','name','index','map','SalesforceAccount','rawAttributes','query','keys','attributes','intersection','model','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','type','options','includeAll','include','findAll','rows','catch','fields','find','create','body','params','getConfigurations','findOne','SalesforceConfiguration','order','AccountId','Subjects','channel','Descriptions','getDescriptions','SalesforceField','Task','remoteUri','clientId','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','Connection','login','concat','isNil','ticketType'];(function(_0x3fb67d,_0x111578){var _0xce1a2=function(_0x5dd1d0){while(--_0x5dd1d0){_0x3fb67d['push'](_0x3fb67d['shift']());}};_0xce1a2(++_0x111578);}(_0xdf65,0x112));var _0x5df6=function(_0x54aec9,_0x50e648){_0x54aec9=_0x54aec9-0x0;var _0x45f228=_0xdf65[_0x54aec9];return _0x45f228;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5df6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5df6('0x1'));var rp=require('request-promise');var moment=require(_0x5df6('0x2'));var BPromise=require(_0x5df6('0x3'));var Mustache=require('mustache');var util=require(_0x5df6('0x4'));var path=require('path');var sox=require(_0x5df6('0x5'));var csv=require('to-csv');var ejs=require(_0x5df6('0x6'));var fs=require('fs');var fs_extra=require(_0x5df6('0x7'));var _=require('lodash');var squel=require(_0x5df6('0x8'));var crypto=require(_0x5df6('0x9'));var jsforce=require(_0x5df6('0xa'));var deskjs=require(_0x5df6('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5df6('0xc'));var Redis=require(_0x5df6('0xd'));var authService=require(_0x5df6('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x5df6('0xf'));var hardwareService=require(_0x5df6('0x10'));var logger=require(_0x5df6('0x11'))(_0x5df6('0x12'));var utils=require(_0x5df6('0x13'));var config=require(_0x5df6('0x14'));var licenseUtil=require(_0x5df6('0x15'));var db=require(_0x5df6('0x16'))['db'];var integrations=require(_0x5df6('0x17'));function respondWithStatusCode(_0x2a280f,_0xb28d7){_0xb28d7=_0xb28d7||0xcc;return function(_0x586cf5){if(_0x586cf5){return _0x2a280f[_0x5df6('0x18')](_0xb28d7);}return _0x2a280f[_0x5df6('0x19')](_0xb28d7)[_0x5df6('0x1a')]();};}function respondWithResult(_0x46cee6,_0x582ed0){_0x582ed0=_0x582ed0||0xc8;return function(_0x389a97){if(_0x389a97){return _0x46cee6[_0x5df6('0x19')](_0x582ed0)[_0x5df6('0x1b')](_0x389a97);}};}function respondWithFilteredResult(_0x230998,_0x218fe6){return function(_0x3422c4){if(_0x3422c4){var _0x24db8e=typeof _0x218fe6[_0x5df6('0x1c')]===_0x5df6('0x1d')&&typeof _0x218fe6[_0x5df6('0x1e')]===_0x5df6('0x1d');var _0x32da70=_0x3422c4[_0x5df6('0x1f')];var _0x3bba65=_0x24db8e?0x0:_0x218fe6[_0x5df6('0x1c')];var _0x456b7d=_0x24db8e?_0x3422c4[_0x5df6('0x1f')]:_0x218fe6[_0x5df6('0x1c')]+_0x218fe6[_0x5df6('0x1e')];var _0x28ce87;if(_0x456b7d>=_0x32da70){_0x456b7d=_0x32da70;_0x28ce87=0xc8;}else{_0x28ce87=0xce;}_0x230998[_0x5df6('0x19')](_0x28ce87);return _0x230998[_0x5df6('0x20')](_0x5df6('0x21'),_0x3bba65+'-'+_0x456b7d+'/'+_0x32da70)['json'](_0x3422c4);}return null;};}function patchUpdates(_0x2ef064){return function(_0x4d871c){try{jsonpatch[_0x5df6('0x22')](_0x4d871c,_0x2ef064,!![]);}catch(_0x353f0c){return BPromise[_0x5df6('0x23')](_0x353f0c);}return _0x4d871c['save']();};}function saveUpdates(_0x204f53,_0x19f6f7){return function(_0x3f5134){if(_0x3f5134){return _0x3f5134[_0x5df6('0x24')](_0x204f53)[_0x5df6('0x25')](function(_0x3db627){return _0x3db627;});}return null;};}function removeEntity(_0x1dce17,_0x2c4cf4){return function(_0x454452){if(_0x454452){return _0x454452[_0x5df6('0x26')]()['then'](function(){_0x1dce17['status'](0xcc)[_0x5df6('0x1a')]();});}};}function handleEntityNotFound(_0x1f79f0,_0x587254){return function(_0x31aeff){if(!_0x31aeff){_0x1f79f0['sendStatus'](0x194);}return _0x31aeff;};}function handleError(_0x4a1a85,_0x2d848a){_0x2d848a=_0x2d848a||0x1f4;return function(_0x235dd5){logger[_0x5df6('0x27')](_0x235dd5['stack']);if(_0x235dd5[_0x5df6('0x28')]){delete _0x235dd5['name'];}_0x4a1a85['status'](_0x2d848a)['send'](_0x235dd5);};}exports[_0x5df6('0x29')]=function(_0x53b64d,_0x2aae0d){var _0x1498e5={},_0x10e21f={},_0x5ae0b6={'count':0x0,'rows':[]};var _0x362dd9=_[_0x5df6('0x2a')](db[_0x5df6('0x2b')][_0x5df6('0x2c')],function(_0x2f5bef){return{'name':_0x2f5bef['fieldName'],'type':_0x2f5bef['type']['key']};});_0x10e21f['model']=_[_0x5df6('0x2a')](_0x362dd9,_0x5df6('0x28'));_0x10e21f[_0x5df6('0x2d')]=_[_0x5df6('0x2e')](_0x53b64d[_0x5df6('0x2d')]);_0x10e21f['filters']=_['intersection'](_0x10e21f['model'],_0x10e21f[_0x5df6('0x2d')]);_0x1498e5[_0x5df6('0x2f')]=_[_0x5df6('0x30')](_0x10e21f[_0x5df6('0x31')],qs['fields'](_0x53b64d[_0x5df6('0x2d')]['fields']));_0x1498e5['attributes']=_0x1498e5[_0x5df6('0x2f')][_0x5df6('0x32')]?_0x1498e5[_0x5df6('0x2f')]:_0x10e21f['model'];if(!_0x53b64d[_0x5df6('0x2d')][_0x5df6('0x33')](_0x5df6('0x34'))){_0x1498e5[_0x5df6('0x1e')]=qs[_0x5df6('0x1e')](_0x53b64d[_0x5df6('0x2d')][_0x5df6('0x1e')]);_0x1498e5['offset']=qs['offset'](_0x53b64d[_0x5df6('0x2d')][_0x5df6('0x1c')]);}_0x1498e5['order']=qs[_0x5df6('0x35')](_0x53b64d[_0x5df6('0x2d')][_0x5df6('0x35')]);_0x1498e5[_0x5df6('0x36')]=qs[_0x5df6('0x37')](_['pick'](_0x53b64d[_0x5df6('0x2d')],_0x10e21f[_0x5df6('0x37')]),_0x362dd9);if(_0x53b64d['query'][_0x5df6('0x38')]){_0x1498e5['where']=_[_0x5df6('0x39')](_0x1498e5[_0x5df6('0x36')],{'$or':_[_0x5df6('0x2a')](_0x362dd9,function(_0x4aeca0){if(_0x4aeca0[_0x5df6('0x3a')]!=='VIRTUAL'){var _0x5d7516={};_0x5d7516[_0x4aeca0[_0x5df6('0x28')]]={'$like':'%'+_0x53b64d[_0x5df6('0x2d')]['filter']+'%'};return _0x5d7516;}})});}_0x1498e5=_[_0x5df6('0x39')]({},_0x1498e5,_0x53b64d[_0x5df6('0x3b')]);var _0x3ad28f={'where':_0x1498e5[_0x5df6('0x36')]};return db[_0x5df6('0x2b')]['count'](_0x3ad28f)[_0x5df6('0x25')](function(_0x29ee22){_0x5ae0b6['count']=_0x29ee22;if(_0x53b64d[_0x5df6('0x2d')][_0x5df6('0x3c')]){_0x1498e5[_0x5df6('0x3d')]=[{'all':!![]}];}return db[_0x5df6('0x2b')][_0x5df6('0x3e')](_0x1498e5);})['then'](function(_0x8cb35f){_0x5ae0b6[_0x5df6('0x3f')]=_0x8cb35f;return _0x5ae0b6;})[_0x5df6('0x25')](respondWithFilteredResult(_0x2aae0d,_0x1498e5))[_0x5df6('0x40')](handleError(_0x2aae0d,null));};exports['show']=function(_0x4a3c8d,_0x28a938){var _0x4dfb6c={'raw':![],'where':{'id':_0x4a3c8d['params']['id']}},_0x4980a6={};_0x4980a6['model']=_[_0x5df6('0x2e')](db['SalesforceAccount'][_0x5df6('0x2c')]);_0x4980a6['query']=_[_0x5df6('0x2e')](_0x4a3c8d[_0x5df6('0x2d')]);_0x4980a6[_0x5df6('0x37')]=_[_0x5df6('0x30')](_0x4980a6[_0x5df6('0x31')],_0x4980a6['query']);_0x4dfb6c[_0x5df6('0x2f')]=_[_0x5df6('0x30')](_0x4980a6[_0x5df6('0x31')],qs[_0x5df6('0x41')](_0x4a3c8d[_0x5df6('0x2d')][_0x5df6('0x41')]));_0x4dfb6c[_0x5df6('0x2f')]=_0x4dfb6c[_0x5df6('0x2f')]['length']?_0x4dfb6c[_0x5df6('0x2f')]:_0x4980a6['model'];if(_0x4a3c8d[_0x5df6('0x2d')]['includeAll']){_0x4dfb6c[_0x5df6('0x3d')]=[{'all':!![]}];}_0x4dfb6c=_[_0x5df6('0x39')]({},_0x4dfb6c,_0x4a3c8d['options']);return db[_0x5df6('0x2b')][_0x5df6('0x42')](_0x4dfb6c)[_0x5df6('0x25')](handleEntityNotFound(_0x28a938,null))[_0x5df6('0x25')](respondWithResult(_0x28a938,null))[_0x5df6('0x40')](handleError(_0x28a938,null));};exports[_0x5df6('0x43')]=function(_0x5bacf6,_0x1c44d1){return db[_0x5df6('0x2b')]['create'](_0x5bacf6[_0x5df6('0x44')],{})['then'](respondWithResult(_0x1c44d1,0xc9))[_0x5df6('0x40')](handleError(_0x1c44d1,null));};exports[_0x5df6('0x24')]=function(_0x5079f6,_0x451e20){if(_0x5079f6[_0x5df6('0x44')]['id']){delete _0x5079f6[_0x5df6('0x44')]['id'];}return db[_0x5df6('0x2b')][_0x5df6('0x42')]({'where':{'id':_0x5079f6['params']['id']}})[_0x5df6('0x25')](handleEntityNotFound(_0x451e20,null))[_0x5df6('0x25')](saveUpdates(_0x5079f6[_0x5df6('0x44')],null))[_0x5df6('0x25')](respondWithResult(_0x451e20,null))[_0x5df6('0x40')](handleError(_0x451e20,null));};exports[_0x5df6('0x26')]=function(_0x5abb35,_0x5bae6e){return db[_0x5df6('0x2b')][_0x5df6('0x42')]({'where':{'id':_0x5abb35[_0x5df6('0x45')]['id']}})[_0x5df6('0x25')](handleEntityNotFound(_0x5bae6e,null))['then'](removeEntity(_0x5bae6e,null))['catch'](handleError(_0x5bae6e,null));};exports[_0x5df6('0x46')]=function(_0x4b23e5,_0x178a91,_0x2878a6){var _0x4a0393={};var _0x58909c={};var _0x2e1bee;var _0x17836d;return db['SalesforceAccount'][_0x5df6('0x47')]({'where':{'id':_0x4b23e5[_0x5df6('0x45')]['id']}})[_0x5df6('0x25')](handleEntityNotFound(_0x178a91,null))[_0x5df6('0x25')](function(_0x2df627){if(_0x2df627){_0x2e1bee=_0x2df627;_0x58909c[_0x5df6('0x31')]=_[_0x5df6('0x2e')](db[_0x5df6('0x48')][_0x5df6('0x2c')]);_0x58909c[_0x5df6('0x2d')]=_['keys'](_0x4b23e5[_0x5df6('0x2d')]);_0x58909c[_0x5df6('0x37')]=_[_0x5df6('0x30')](_0x58909c[_0x5df6('0x31')],_0x58909c['query']);_0x4a0393[_0x5df6('0x2f')]=_['intersection'](_0x58909c[_0x5df6('0x31')],qs['fields'](_0x4b23e5[_0x5df6('0x2d')][_0x5df6('0x41')]));_0x4a0393['attributes']=_0x4a0393['attributes'][_0x5df6('0x32')]?_0x4a0393[_0x5df6('0x2f')]:_0x58909c['model'];_0x4a0393[_0x5df6('0x49')]=qs['sort'](_0x4b23e5[_0x5df6('0x2d')][_0x5df6('0x35')]);_0x4a0393[_0x5df6('0x36')]=qs[_0x5df6('0x37')](_['pick'](_0x4b23e5['query'],_0x58909c[_0x5df6('0x37')]));if(_0x4b23e5[_0x5df6('0x2d')][_0x5df6('0x38')]){_0x4a0393[_0x5df6('0x36')]=_['merge'](_0x4a0393[_0x5df6('0x36')],{'$or':_[_0x5df6('0x2a')](_0x4a0393[_0x5df6('0x2f')],function(_0x464ca7){var _0x103e64={};_0x103e64[_0x464ca7]={'$like':'%'+_0x4b23e5[_0x5df6('0x2d')][_0x5df6('0x38')]+'%'};return _0x103e64;})});}_0x4a0393=_[_0x5df6('0x39')]({},_0x4a0393,_0x4b23e5[_0x5df6('0x3b')]);return _0x2e1bee['getConfigurations'](_0x4a0393);}})[_0x5df6('0x25')](function(_0xbc8b0c){if(_0xbc8b0c){_0x17836d=_0xbc8b0c[_0x5df6('0x32')];if(!_0x4b23e5[_0x5df6('0x2d')][_0x5df6('0x33')](_0x5df6('0x34'))){_0x4a0393[_0x5df6('0x1e')]=qs[_0x5df6('0x1e')](_0x4b23e5[_0x5df6('0x2d')][_0x5df6('0x1e')]);_0x4a0393[_0x5df6('0x1c')]=qs[_0x5df6('0x1c')](_0x4b23e5['query'][_0x5df6('0x1c')]);}return _0x2e1bee[_0x5df6('0x46')](_0x4a0393);}})[_0x5df6('0x25')](function(_0x2531c2){if(_0x2531c2){return _0x2531c2?{'count':_0x17836d,'rows':_0x2531c2}:null;}})[_0x5df6('0x25')](respondWithResult(_0x178a91,null))[_0x5df6('0x40')](handleError(_0x178a91,null));};exports['addConfiguration']=function(_0x391d17,_0x33bd82,_0x1789f4){if(_0x391d17[_0x5df6('0x44')]['id']){delete _0x391d17[_0x5df6('0x44')]['id'];}return db[_0x5df6('0x2b')][_0x5df6('0x47')]({'where':{'id':_0x391d17[_0x5df6('0x45')]['id']}})[_0x5df6('0x25')](handleEntityNotFound(_0x33bd82,null))[_0x5df6('0x25')](function(_0x37037f){if(_0x37037f){_0x391d17[_0x5df6('0x44')][_0x5df6('0x4a')]=_0x37037f['id'];_0x391d17['body'][_0x5df6('0x4b')]=integrations['getSubjects'](_0x391d17[_0x5df6('0x44')][_0x5df6('0x4c')],_0x391d17[_0x5df6('0x44')]['type']);_0x391d17[_0x5df6('0x44')][_0x5df6('0x4d')]=integrations[_0x5df6('0x4e')](_0x391d17[_0x5df6('0x44')]['channel'],_0x391d17[_0x5df6('0x44')][_0x5df6('0x3a')]);return db[_0x5df6('0x48')]['create'](_0x391d17['body'],{'include':[{'model':db[_0x5df6('0x4f')],'as':_0x5df6('0x4b')},{'model':db['SalesforceField'],'as':_0x5df6('0x4d')}]});}return null;})['then'](respondWithResult(_0x33bd82,null))['catch'](handleError(_0x33bd82,null));};exports['getFields']=function(_0xaf0787,_0x1abe36,_0x2b709b){var _0x686e6c;var _0x3a0a23='';var _0x5c1c69=_0x5df6('0x50');return db['SalesforceAccount'][_0x5df6('0x47')]({'where':{'id':_0xaf0787[_0x5df6('0x45')]['id']},'attributes':['id',_0x5df6('0x51'),_0x5df6('0x52'),_0x5df6('0x53'),_0x5df6('0x54'),_0x5df6('0x55'),_0x5df6('0x56')]})[_0x5df6('0x25')](handleEntityNotFound(_0x1abe36,null))['then'](function(_0x1e66c6){if(_0x1e66c6){_0x3a0a23=_0x1e66c6[_0x5df6('0x51')];var _0x359b1b=_0x3a0a23[_0x5df6('0x57')](-0x1);if(_0x359b1b==='/'){_0x3a0a23=_0x3a0a23[_0x5df6('0x58')](0x0,_0x3a0a23[_0x5df6('0x59')](_0x359b1b));}_0x686e6c=new jsforce[(_0x5df6('0x5a'))]({'oauth2':{'loginUrl':_0x3a0a23,'clientId':_0x1e66c6[_0x5df6('0x52')],'clientSecret':_0x1e66c6[_0x5df6('0x53')]}});return _0x686e6c[_0x5df6('0x5b')](_0x1e66c6[_0x5df6('0x54')],_0x1e66c6['password'][_0x5df6('0x5c')](_0x1e66c6[_0x5df6('0x56')]));}})[_0x5df6('0x25')](function(_0x3ec6db){if(_0x3ec6db){if(!_[_0x5df6('0x5d')](_0xaf0787[_0x5df6('0x2d')][_0x5df6('0x5e')])){_0x5c1c69=_0xaf0787['query'][_0x5df6('0x5e')];}return _0x686e6c[_0x5df6('0x5f')](_0x5c1c69)[_0x5df6('0x60')]();}})['then'](function(_0x7bc61f){var _0x28dc95=[_0x5df6('0x61'),_0x5df6('0x62'),_0x5df6('0x63'),'IsRecurrence',_0x5df6('0x64'),_0x5df6('0x65')];var _0x3cd48a=[_0x5df6('0x66'),_0x5df6('0x67'),'picklist',_0x5df6('0x68'),_0x5df6('0x69'),_0x5df6('0x6a'),_0x5df6('0x6b')];if(_0x7bc61f){_[_0x5df6('0x6c')](_0x7bc61f[_0x5df6('0x41')],function(_0x2ae849){return _0x28dc95[_0x5df6('0x6d')](_0x2ae849[_0x5df6('0x28')])||!_0x3cd48a[_0x5df6('0x6d')](_0x2ae849[_0x5df6('0x3a')]);});return{'count':_0x7bc61f[_0x5df6('0x41')][_0x5df6('0x32')],'rows':_[_0x5df6('0x2a')](_0x7bc61f[_0x5df6('0x41')],function(_0xf3e53b){return{'id':_0xf3e53b['name'],'name':_0xf3e53b[_0x5df6('0x6e')],'custom':_0xf3e53b[_0x5df6('0x6f')],'options':_0xf3e53b[_0x5df6('0x70')][_0x5df6('0x32')]>0x0?_['map'](_0xf3e53b[_0x5df6('0x70')],function(_0x51921c){return{'name':_0x51921c[_0x5df6('0x6e')],'value':_0x51921c['value']};}):_0xf3e53b[_0x5df6('0x3a')]==_0x5df6('0x68')?[{'name':_0x5df6('0x71'),'value':_0x5df6('0x72')},{'name':_0x5df6('0x73'),'value':_0x5df6('0x74')}]:[]};})};}})[_0x5df6('0x25')](respondWithResult(_0x1abe36,null))[_0x5df6('0x40')](function(_0x2f84ef){var _0x10a0c7=_0xaf0787[_0x5df6('0x2d')][_0x5df6('0x75')]?0x1f4:_0x2f84ef[_0x5df6('0x76')]||0x1f4;logger[_0x5df6('0x27')](_0x5df6('0x77'),_0x5df6('0x78'),_0x10a0c7,JSON['stringify'](_0x2f84ef));delete _0x2f84ef[_0x5df6('0x28')];if(_0x10a0c7===0x191){_0x10a0c7=0x190;}_0x1abe36[_0x5df6('0x19')](_0x10a0c7)[_0x5df6('0x79')](_0xaf0787[_0x5df6('0x2d')][_0x5df6('0x75')]?{'message':_0x5df6('0x7a'),'statusCode':_0x2f84ef[_0x5df6('0x76')]}:_0x2f84ef);});};
\ No newline at end of file
+var _0xf2cc=['password','securityToken','remoteUri','slice','login','concat','isNil','ticketType','sobject','ActivityDate','IsRecurrence','Description','string','int','picklist','boolean','email','textarea','includes','label','picklistValues','True','true','False','false','test','error','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','sendStatus','stack','name','index','map','SalesforceAccount','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','catch','show','params','keys','rawAttributes','includeAll','find','create','body','destroy','findOne','order','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SalesforceConfiguration','SalesforceField','clientId','clientSecret','username'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xf2cc,0x186));var _0xcf2c=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xf2cc[_0x56482c];return _0x5aae7a;};'use strict';var emlformat=require(_0xcf2c('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xcf2c('0x1'));var rp=require(_0xcf2c('0x2'));var moment=require('moment');var BPromise=require(_0xcf2c('0x3'));var Mustache=require(_0xcf2c('0x4'));var util=require(_0xcf2c('0x5'));var path=require(_0xcf2c('0x6'));var sox=require('sox');var csv=require(_0xcf2c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcf2c('0x8'));var _=require(_0xcf2c('0x9'));var squel=require(_0xcf2c('0xa'));var crypto=require(_0xcf2c('0xb'));var jsforce=require(_0xcf2c('0xc'));var deskjs=require(_0xcf2c('0xd'));var toCsv=require(_0xcf2c('0x7'));var querystring=require(_0xcf2c('0xe'));var Papa=require(_0xcf2c('0xf'));var Redis=require(_0xcf2c('0x10'));var authService=require(_0xcf2c('0x11'));var qs=require(_0xcf2c('0x12'));var as=require(_0xcf2c('0x13'));var hardwareService=require(_0xcf2c('0x14'));var logger=require(_0xcf2c('0x15'))(_0xcf2c('0x16'));var utils=require(_0xcf2c('0x17'));var config=require(_0xcf2c('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xcf2c('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x592e5e,_0x10e2fc){_0x10e2fc=_0x10e2fc||0xcc;return function(_0x49ea3c){if(_0x49ea3c){return _0x592e5e['sendStatus'](_0x10e2fc);}return _0x592e5e[_0xcf2c('0x1a')](_0x10e2fc)[_0xcf2c('0x1b')]();};}function respondWithResult(_0x2a8af1,_0xda50a){_0xda50a=_0xda50a||0xc8;return function(_0x313004){if(_0x313004){return _0x2a8af1[_0xcf2c('0x1a')](_0xda50a)[_0xcf2c('0x1c')](_0x313004);}};}function respondWithFilteredResult(_0x3bda90,_0x4f003d){return function(_0xc418b5){if(_0xc418b5){var _0x4a36dd=typeof _0x4f003d[_0xcf2c('0x1d')]===_0xcf2c('0x1e')&&typeof _0x4f003d[_0xcf2c('0x1f')]===_0xcf2c('0x1e');var _0xe710c8=_0xc418b5[_0xcf2c('0x20')];var _0x4cb52e=_0x4a36dd?0x0:_0x4f003d[_0xcf2c('0x1d')];var _0x50a8bd=_0x4a36dd?_0xc418b5['count']:_0x4f003d[_0xcf2c('0x1d')]+_0x4f003d['limit'];var _0x17f7e0;if(_0x50a8bd>=_0xe710c8){_0x50a8bd=_0xe710c8;_0x17f7e0=0xc8;}else{_0x17f7e0=0xce;}_0x3bda90[_0xcf2c('0x1a')](_0x17f7e0);return _0x3bda90['set'](_0xcf2c('0x21'),_0x4cb52e+'-'+_0x50a8bd+'/'+_0xe710c8)[_0xcf2c('0x1c')](_0xc418b5);}return null;};}function patchUpdates(_0x2775e8){return function(_0x1daeac){try{jsonpatch[_0xcf2c('0x22')](_0x1daeac,_0x2775e8,!![]);}catch(_0x220907){return BPromise[_0xcf2c('0x23')](_0x220907);}return _0x1daeac[_0xcf2c('0x24')]();};}function saveUpdates(_0x21c5f9,_0x562159){return function(_0x404b06){if(_0x404b06){return _0x404b06[_0xcf2c('0x25')](_0x21c5f9)[_0xcf2c('0x26')](function(_0x35db21){return _0x35db21;});}return null;};}function removeEntity(_0x4e69fb,_0x512914){return function(_0x522a16){if(_0x522a16){return _0x522a16['destroy']()[_0xcf2c('0x26')](function(){_0x4e69fb[_0xcf2c('0x1a')](0xcc)[_0xcf2c('0x1b')]();});}};}function handleEntityNotFound(_0x5a1d9a,_0x25eee7){return function(_0x14daca){if(!_0x14daca){_0x5a1d9a[_0xcf2c('0x27')](0x194);}return _0x14daca;};}function handleError(_0x629145,_0x309506){_0x309506=_0x309506||0x1f4;return function(_0x10b99c){logger['error'](_0x10b99c[_0xcf2c('0x28')]);if(_0x10b99c[_0xcf2c('0x29')]){delete _0x10b99c[_0xcf2c('0x29')];}_0x629145[_0xcf2c('0x1a')](_0x309506)['send'](_0x10b99c);};}exports[_0xcf2c('0x2a')]=function(_0x4b7e26,_0x29c2d2){var _0x221429={},_0xf52424={},_0x3d62c1={'count':0x0,'rows':[]};var _0x33ee6f=_[_0xcf2c('0x2b')](db[_0xcf2c('0x2c')]['rawAttributes'],function(_0x3b2013){return{'name':_0x3b2013[_0xcf2c('0x2d')],'type':_0x3b2013[_0xcf2c('0x2e')][_0xcf2c('0x2f')]};});_0xf52424[_0xcf2c('0x30')]=_[_0xcf2c('0x2b')](_0x33ee6f,_0xcf2c('0x29'));_0xf52424[_0xcf2c('0x31')]=_['keys'](_0x4b7e26['query']);_0xf52424['filters']=_[_0xcf2c('0x32')](_0xf52424['model'],_0xf52424['query']);_0x221429[_0xcf2c('0x33')]=_['intersection'](_0xf52424[_0xcf2c('0x30')],qs[_0xcf2c('0x34')](_0x4b7e26[_0xcf2c('0x31')]['fields']));_0x221429['attributes']=_0x221429[_0xcf2c('0x33')][_0xcf2c('0x35')]?_0x221429[_0xcf2c('0x33')]:_0xf52424[_0xcf2c('0x30')];if(!_0x4b7e26[_0xcf2c('0x31')][_0xcf2c('0x36')]('nolimit')){_0x221429[_0xcf2c('0x1f')]=qs[_0xcf2c('0x1f')](_0x4b7e26[_0xcf2c('0x31')]['limit']);_0x221429[_0xcf2c('0x1d')]=qs['offset'](_0x4b7e26[_0xcf2c('0x31')][_0xcf2c('0x1d')]);}_0x221429['order']=qs[_0xcf2c('0x37')](_0x4b7e26['query'][_0xcf2c('0x37')]);_0x221429[_0xcf2c('0x38')]=qs[_0xcf2c('0x39')](_[_0xcf2c('0x3a')](_0x4b7e26[_0xcf2c('0x31')],_0xf52424['filters']),_0x33ee6f);if(_0x4b7e26['query'][_0xcf2c('0x3b')]){_0x221429[_0xcf2c('0x38')]=_[_0xcf2c('0x3c')](_0x221429['where'],{'$or':_[_0xcf2c('0x2b')](_0x33ee6f,function(_0x864f4){if(_0x864f4[_0xcf2c('0x2e')]!==_0xcf2c('0x3d')){var _0x1083f9={};_0x1083f9[_0x864f4[_0xcf2c('0x29')]]={'$like':'%'+_0x4b7e26['query'][_0xcf2c('0x3b')]+'%'};return _0x1083f9;}})});}_0x221429=_['merge']({},_0x221429,_0x4b7e26[_0xcf2c('0x3e')]);var _0xc65b5={'where':_0x221429[_0xcf2c('0x38')]};return db[_0xcf2c('0x2c')][_0xcf2c('0x20')](_0xc65b5)[_0xcf2c('0x26')](function(_0x3e7be6){_0x3d62c1[_0xcf2c('0x20')]=_0x3e7be6;if(_0x4b7e26[_0xcf2c('0x31')]['includeAll']){_0x221429[_0xcf2c('0x3f')]=[{'all':!![]}];}return db[_0xcf2c('0x2c')][_0xcf2c('0x40')](_0x221429);})[_0xcf2c('0x26')](function(_0x4e9038){_0x3d62c1['rows']=_0x4e9038;return _0x3d62c1;})[_0xcf2c('0x26')](respondWithFilteredResult(_0x29c2d2,_0x221429))[_0xcf2c('0x41')](handleError(_0x29c2d2,null));};exports[_0xcf2c('0x42')]=function(_0x4f4183,_0x20ab05){var _0xb6002={'raw':![],'where':{'id':_0x4f4183[_0xcf2c('0x43')]['id']}},_0x6013ea={};_0x6013ea['model']=_[_0xcf2c('0x44')](db[_0xcf2c('0x2c')][_0xcf2c('0x45')]);_0x6013ea[_0xcf2c('0x31')]=_[_0xcf2c('0x44')](_0x4f4183[_0xcf2c('0x31')]);_0x6013ea[_0xcf2c('0x39')]=_[_0xcf2c('0x32')](_0x6013ea[_0xcf2c('0x30')],_0x6013ea[_0xcf2c('0x31')]);_0xb6002[_0xcf2c('0x33')]=_[_0xcf2c('0x32')](_0x6013ea[_0xcf2c('0x30')],qs[_0xcf2c('0x34')](_0x4f4183[_0xcf2c('0x31')][_0xcf2c('0x34')]));_0xb6002[_0xcf2c('0x33')]=_0xb6002['attributes'][_0xcf2c('0x35')]?_0xb6002[_0xcf2c('0x33')]:_0x6013ea['model'];if(_0x4f4183[_0xcf2c('0x31')][_0xcf2c('0x46')]){_0xb6002[_0xcf2c('0x3f')]=[{'all':!![]}];}_0xb6002=_['merge']({},_0xb6002,_0x4f4183[_0xcf2c('0x3e')]);return db[_0xcf2c('0x2c')][_0xcf2c('0x47')](_0xb6002)['then'](handleEntityNotFound(_0x20ab05,null))[_0xcf2c('0x26')](respondWithResult(_0x20ab05,null))[_0xcf2c('0x41')](handleError(_0x20ab05,null));};exports[_0xcf2c('0x48')]=function(_0x172270,_0x11d4a0){return db['SalesforceAccount'][_0xcf2c('0x48')](_0x172270[_0xcf2c('0x49')],{})[_0xcf2c('0x26')](respondWithResult(_0x11d4a0,0xc9))['catch'](handleError(_0x11d4a0,null));};exports[_0xcf2c('0x25')]=function(_0x559370,_0x445718){if(_0x559370[_0xcf2c('0x49')]['id']){delete _0x559370[_0xcf2c('0x49')]['id'];}return db[_0xcf2c('0x2c')][_0xcf2c('0x47')]({'where':{'id':_0x559370['params']['id']}})[_0xcf2c('0x26')](handleEntityNotFound(_0x445718,null))[_0xcf2c('0x26')](saveUpdates(_0x559370['body'],null))[_0xcf2c('0x26')](respondWithResult(_0x445718,null))[_0xcf2c('0x41')](handleError(_0x445718,null));};exports[_0xcf2c('0x4a')]=function(_0x141650,_0x4c0f56){return db[_0xcf2c('0x2c')][_0xcf2c('0x47')]({'where':{'id':_0x141650['params']['id']}})[_0xcf2c('0x26')](handleEntityNotFound(_0x4c0f56,null))[_0xcf2c('0x26')](removeEntity(_0x4c0f56,null))[_0xcf2c('0x41')](handleError(_0x4c0f56,null));};exports['getConfigurations']=function(_0x20328c,_0x34c5d5,_0x3b5a0e){var _0x27bee6={};var _0x377c6d={};var _0x24e461;var _0x3f4894;return db[_0xcf2c('0x2c')][_0xcf2c('0x4b')]({'where':{'id':_0x20328c[_0xcf2c('0x43')]['id']}})[_0xcf2c('0x26')](handleEntityNotFound(_0x34c5d5,null))[_0xcf2c('0x26')](function(_0x5a5dc7){if(_0x5a5dc7){_0x24e461=_0x5a5dc7;_0x377c6d[_0xcf2c('0x30')]=_[_0xcf2c('0x44')](db['SalesforceConfiguration'][_0xcf2c('0x45')]);_0x377c6d['query']=_[_0xcf2c('0x44')](_0x20328c[_0xcf2c('0x31')]);_0x377c6d[_0xcf2c('0x39')]=_['intersection'](_0x377c6d[_0xcf2c('0x30')],_0x377c6d['query']);_0x27bee6[_0xcf2c('0x33')]=_['intersection'](_0x377c6d['model'],qs[_0xcf2c('0x34')](_0x20328c[_0xcf2c('0x31')][_0xcf2c('0x34')]));_0x27bee6['attributes']=_0x27bee6['attributes'][_0xcf2c('0x35')]?_0x27bee6[_0xcf2c('0x33')]:_0x377c6d['model'];_0x27bee6[_0xcf2c('0x4c')]=qs[_0xcf2c('0x37')](_0x20328c[_0xcf2c('0x31')][_0xcf2c('0x37')]);_0x27bee6[_0xcf2c('0x38')]=qs[_0xcf2c('0x39')](_[_0xcf2c('0x3a')](_0x20328c[_0xcf2c('0x31')],_0x377c6d[_0xcf2c('0x39')]));if(_0x20328c['query'][_0xcf2c('0x3b')]){_0x27bee6['where']=_[_0xcf2c('0x3c')](_0x27bee6[_0xcf2c('0x38')],{'$or':_['map'](_0x27bee6['attributes'],function(_0x3fc005){var _0x5b8276={};_0x5b8276[_0x3fc005]={'$like':'%'+_0x20328c['query'][_0xcf2c('0x3b')]+'%'};return _0x5b8276;})});}_0x27bee6=_[_0xcf2c('0x3c')]({},_0x27bee6,_0x20328c[_0xcf2c('0x3e')]);return _0x24e461['getConfigurations'](_0x27bee6);}})['then'](function(_0xb45806){if(_0xb45806){_0x3f4894=_0xb45806[_0xcf2c('0x35')];if(!_0x20328c[_0xcf2c('0x31')]['hasOwnProperty']('nolimit')){_0x27bee6['limit']=qs[_0xcf2c('0x1f')](_0x20328c[_0xcf2c('0x31')][_0xcf2c('0x1f')]);_0x27bee6[_0xcf2c('0x1d')]=qs[_0xcf2c('0x1d')](_0x20328c['query'][_0xcf2c('0x1d')]);}return _0x24e461[_0xcf2c('0x4d')](_0x27bee6);}})[_0xcf2c('0x26')](function(_0x3f1e19){if(_0x3f1e19){return _0x3f1e19?{'count':_0x3f4894,'rows':_0x3f1e19}:null;}})[_0xcf2c('0x26')](respondWithResult(_0x34c5d5,null))[_0xcf2c('0x41')](handleError(_0x34c5d5,null));};exports[_0xcf2c('0x4e')]=function(_0x2372ef,_0x2ad03e,_0x34d7aa){if(_0x2372ef[_0xcf2c('0x49')]['id']){delete _0x2372ef['body']['id'];}return db[_0xcf2c('0x2c')][_0xcf2c('0x4b')]({'where':{'id':_0x2372ef[_0xcf2c('0x43')]['id']}})[_0xcf2c('0x26')](handleEntityNotFound(_0x2ad03e,null))[_0xcf2c('0x26')](function(_0x5301c8){if(_0x5301c8){_0x2372ef[_0xcf2c('0x49')][_0xcf2c('0x4f')]=_0x5301c8['id'];_0x2372ef[_0xcf2c('0x49')][_0xcf2c('0x50')]=integrations[_0xcf2c('0x51')](_0x2372ef[_0xcf2c('0x49')][_0xcf2c('0x52')],_0x2372ef[_0xcf2c('0x49')][_0xcf2c('0x2e')]);_0x2372ef['body'][_0xcf2c('0x53')]=integrations[_0xcf2c('0x54')](_0x2372ef[_0xcf2c('0x49')]['channel'],_0x2372ef[_0xcf2c('0x49')][_0xcf2c('0x2e')]);return db[_0xcf2c('0x55')][_0xcf2c('0x48')](_0x2372ef[_0xcf2c('0x49')],{'include':[{'model':db[_0xcf2c('0x56')],'as':_0xcf2c('0x50')},{'model':db['SalesforceField'],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x2ad03e,null))['catch'](handleError(_0x2ad03e,null));};exports['getFields']=function(_0x336b88,_0x53c6f4,_0x495760){var _0x45c67d;var _0x3d7514='';var _0x467ac4='Task';return db[_0xcf2c('0x2c')][_0xcf2c('0x4b')]({'where':{'id':_0x336b88[_0xcf2c('0x43')]['id']},'attributes':['id','remoteUri',_0xcf2c('0x57'),_0xcf2c('0x58'),_0xcf2c('0x59'),_0xcf2c('0x5a'),_0xcf2c('0x5b')]})[_0xcf2c('0x26')](handleEntityNotFound(_0x53c6f4,null))[_0xcf2c('0x26')](function(_0xe686f4){if(_0xe686f4){_0x3d7514=_0xe686f4[_0xcf2c('0x5c')];var _0x341ab5=_0x3d7514[_0xcf2c('0x5d')](-0x1);if(_0x341ab5==='/'){_0x3d7514=_0x3d7514['substring'](0x0,_0x3d7514['lastIndexOf'](_0x341ab5));}_0x45c67d=new jsforce['Connection']({'oauth2':{'loginUrl':_0x3d7514,'clientId':_0xe686f4[_0xcf2c('0x57')],'clientSecret':_0xe686f4[_0xcf2c('0x58')]}});return _0x45c67d[_0xcf2c('0x5e')](_0xe686f4['username'],_0xe686f4[_0xcf2c('0x5a')][_0xcf2c('0x5f')](_0xe686f4['securityToken']));}})['then'](function(_0x4973c1){if(_0x4973c1){if(!_[_0xcf2c('0x60')](_0x336b88[_0xcf2c('0x31')][_0xcf2c('0x61')])){_0x467ac4=_0x336b88[_0xcf2c('0x31')][_0xcf2c('0x61')];}return _0x45c67d[_0xcf2c('0x62')](_0x467ac4)['describe']();}})[_0xcf2c('0x26')](function(_0x4bf332){var _0x22590e=['OwnerId',_0xcf2c('0x63'),'IsReminderSet',_0xcf2c('0x64'),'Subject',_0xcf2c('0x65')];var _0x5fd903=[_0xcf2c('0x66'),_0xcf2c('0x67'),_0xcf2c('0x68'),_0xcf2c('0x69'),_0xcf2c('0x6a'),_0xcf2c('0x6b'),'phone'];if(_0x4bf332){_['remove'](_0x4bf332[_0xcf2c('0x34')],function(_0x2e99dc){return _0x22590e[_0xcf2c('0x6c')](_0x2e99dc['name'])||!_0x5fd903[_0xcf2c('0x6c')](_0x2e99dc[_0xcf2c('0x2e')]);});return{'count':_0x4bf332['fields'][_0xcf2c('0x35')],'rows':_[_0xcf2c('0x2b')](_0x4bf332[_0xcf2c('0x34')],function(_0x4e94c1){return{'id':_0x4e94c1['name'],'name':_0x4e94c1[_0xcf2c('0x6d')],'custom':_0x4e94c1['custom'],'options':_0x4e94c1[_0xcf2c('0x6e')][_0xcf2c('0x35')]>0x0?_[_0xcf2c('0x2b')](_0x4e94c1[_0xcf2c('0x6e')],function(_0x56c12d){return{'name':_0x56c12d[_0xcf2c('0x6d')],'value':_0x56c12d['value']};}):_0x4e94c1[_0xcf2c('0x2e')]=='boolean'?[{'name':_0xcf2c('0x6f'),'value':_0xcf2c('0x70')},{'name':_0xcf2c('0x71'),'value':_0xcf2c('0x72')}]:[]};})};}})[_0xcf2c('0x26')](respondWithResult(_0x53c6f4,null))[_0xcf2c('0x41')](function(_0x23b631){var _0x27b091=_0x336b88[_0xcf2c('0x31')][_0xcf2c('0x73')]?0x1f4:_0x23b631['statusCode']||0x1f4;logger[_0xcf2c('0x74')](_0xcf2c('0x75'),_0xcf2c('0x76'),_0x27b091,JSON['stringify'](_0x23b631));delete _0x23b631['name'];if(_0x27b091===0x191){_0x27b091=0x190;}_0x53c6f4[_0xcf2c('0x1a')](_0x27b091)['send'](_0x336b88[_0xcf2c('0x31')][_0xcf2c('0x73')]?{'message':_0xcf2c('0x77'),'statusCode':_0x23b631['statusCode']}:_0x23b631);});};
\ No newline at end of file
index 37ad121..5a6aba3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a8d=['path','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','define','int_salesforce_accounts','util','../../config/logger','moment','bluebird'];(function(_0x49d099,_0x18a93d){var _0x54daaf=function(_0x50f73d){while(--_0x50f73d){_0x49d099['push'](_0x49d099['shift']());}};_0x54daaf(++_0x18a93d);}(_0x2a8d,0xce));var _0xd2a8=function(_0x14914a,_0x3eae81){_0x14914a=_0x14914a-0x0;var _0x3766ec=_0x2a8d[_0x14914a];return _0x3766ec;};'use strict';var _=require('lodash');var util=require(_0xd2a8('0x0'));var logger=require(_0xd2a8('0x1'))('api');var moment=require(_0xd2a8('0x2'));var BPromise=require(_0xd2a8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd2a8('0x4'));var rimraf=require('rimraf');var config=require(_0xd2a8('0x5'));var attributes=require(_0xd2a8('0x6'));var integrations=require(_0xd2a8('0x7'));module['exports']=function(_0x5dd142,_0x116edd){return _0x5dd142[_0xd2a8('0x8')]('SalesforceAccount',attributes,{'tableName':_0xd2a8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe0af=['request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define','SalesforceAccount','lodash','util','../../config/logger','moment','bluebird'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe0af,0x1c9));var _0xfe0a=function(_0x190681,_0x590f58){_0x190681=_0x190681-0x0;var _0x4f2ada=_0xe0af[_0x190681];return _0x4f2ada;};'use strict';var _=require(_0xfe0a('0x0'));var util=require(_0xfe0a('0x1'));var logger=require(_0xfe0a('0x2'))('api');var moment=require(_0xfe0a('0x3'));var BPromise=require(_0xfe0a('0x4'));var rp=require(_0xfe0a('0x5'));var fs=require('fs');var path=require(_0xfe0a('0x6'));var rimraf=require(_0xfe0a('0x7'));var config=require(_0xfe0a('0x8'));var attributes=require(_0xfe0a('0x9'));var integrations=require(_0xfe0a('0xa'));module[_0xfe0a('0xb')]=function(_0x5ba790,_0x495f1e){return _0x5ba790[_0xfe0a('0xc')](_0xfe0a('0xd'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d82b49e..03dc33e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd599=['../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','error','SalesforceAccount,\x20%s,\x20%s','message','info','result','GetSalesforceAccount','findAll','options','where','attributes','limit','include','model','map','ShowSalesforceAccount','SalesforceAccount','find','raw','stringify','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x42c335,_0x183240){var _0x12cd21=function(_0x2f21e6){while(--_0x2f21e6){_0x42c335['push'](_0x42c335['shift']());}};_0x12cd21(++_0x183240);}(_0xd599,0x9f));var _0x9d59=function(_0x265e67,_0x20236d){_0x265e67=_0x265e67-0x0;var _0x15e190=_0xd599[_0x265e67];return _0x15e190;};'use strict';var _=require(_0x9d59('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9d59('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9d59('0x2'));var db=require(_0x9d59('0x3'))['db'];var utils=require(_0x9d59('0x4'));var logger=require('../../config/logger')(_0x9d59('0x5'));var config=require(_0x9d59('0x6'));var jayson=require(_0x9d59('0x7'));var client=jayson[_0x9d59('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ebb13,_0xe0a967,_0x13bd65){return new BPromise(function(_0x200d77,_0x32535c){return client[_0x9d59('0x9')](_0x2ebb13,_0x13bd65)[_0x9d59('0xa')](function(_0x518de8){logger['info']('SalesforceAccount,\x20%s,\x20%s',_0xe0a967,_0x9d59('0xb'));logger[_0x9d59('0xc')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0xe0a967,'request\x20sent',JSON['stringify'](_0x518de8));if(_0x518de8[_0x9d59('0xd')]){if(_0x518de8['error']['code']===0x1f4){logger['error'](_0x9d59('0xe'),_0xe0a967,_0x518de8[_0x9d59('0xd')][_0x9d59('0xf')]);return _0x32535c(_0x518de8['error'][_0x9d59('0xf')]);}logger[_0x9d59('0xd')](_0x9d59('0xe'),_0xe0a967,_0x518de8[_0x9d59('0xd')][_0x9d59('0xf')]);return _0x200d77(_0x518de8[_0x9d59('0xd')][_0x9d59('0xf')]);}else{logger[_0x9d59('0x10')](_0x9d59('0xe'),_0xe0a967,_0x9d59('0xb'));_0x200d77(_0x518de8[_0x9d59('0x11')][_0x9d59('0xf')]);}})['catch'](function(_0x42b30a){logger['error'](_0x9d59('0xe'),_0xe0a967,_0x42b30a);_0x32535c(_0x42b30a);});});}exports[_0x9d59('0x12')]=function(_0xa65a37){var _0x304ac0=this;return new Promise(function(_0x5d2bd6,_0x2b99a1){return db['SalesforceAccount'][_0x9d59('0x13')]({'raw':_0xa65a37[_0x9d59('0x14')]?_0xa65a37[_0x9d59('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0xa65a37[_0x9d59('0x14')]?_0xa65a37[_0x9d59('0x14')][_0x9d59('0x15')]||null:null,'attributes':_0xa65a37[_0x9d59('0x14')]?_0xa65a37[_0x9d59('0x14')][_0x9d59('0x16')]||null:null,'limit':_0xa65a37[_0x9d59('0x14')]?_0xa65a37[_0x9d59('0x14')][_0x9d59('0x17')]||null:null,'include':_0xa65a37[_0x9d59('0x14')]?_0xa65a37[_0x9d59('0x14')][_0x9d59('0x18')]?_['map'](_0xa65a37[_0x9d59('0x14')][_0x9d59('0x18')],function(_0x2de56c){return{'model':db[_0x2de56c[_0x9d59('0x19')]],'as':_0x2de56c['as'],'attributes':_0x2de56c[_0x9d59('0x16')],'include':_0x2de56c[_0x9d59('0x18')]?_['map'](_0x2de56c[_0x9d59('0x18')],function(_0x2e57e0){return{'model':db[_0x2e57e0[_0x9d59('0x19')]],'as':_0x2e57e0['as'],'attributes':_0x2e57e0['attributes'],'include':_0x2e57e0[_0x9d59('0x18')]?_[_0x9d59('0x1a')](_0x2e57e0[_0x9d59('0x18')],function(_0x1cf92e){return{'model':db[_0x1cf92e['model']],'as':_0x1cf92e['as'],'attributes':_0x1cf92e[_0x9d59('0x16')]};}):[]};}):[]};}):[]:[]})[_0x9d59('0xa')](function(_0x47daf0){logger[_0x9d59('0x10')](_0x9d59('0x12'),_0xa65a37);logger[_0x9d59('0xc')](_0x9d59('0x12'),_0xa65a37,JSON['stringify'](_0x47daf0));_0x5d2bd6(_0x47daf0);})['catch'](function(_0x15a119){logger[_0x9d59('0xd')](_0x9d59('0x12'),_0x15a119['message'],_0xa65a37);_0x2b99a1(_0x304ac0[_0x9d59('0xd')](0x1f4,_0x15a119[_0x9d59('0xf')]));});});};exports[_0x9d59('0x1b')]=function(_0xe6d3ff){var _0x246d34=this;return new Promise(function(_0x2fdd7c,_0x19ade6){return db[_0x9d59('0x1c')][_0x9d59('0x1d')]({'raw':_0xe6d3ff[_0x9d59('0x14')]?_0xe6d3ff[_0x9d59('0x14')][_0x9d59('0x1e')]===undefined?!![]:![]:!![],'where':_0xe6d3ff['options']?_0xe6d3ff[_0x9d59('0x14')][_0x9d59('0x15')]||null:null,'attributes':_0xe6d3ff['options']?_0xe6d3ff[_0x9d59('0x14')]['attributes']||null:null,'include':_0xe6d3ff['options']?_0xe6d3ff['options'][_0x9d59('0x18')]?_['map'](_0xe6d3ff[_0x9d59('0x14')][_0x9d59('0x18')],function(_0x2afd46){return{'model':db[_0x2afd46['model']],'as':_0x2afd46['as'],'attributes':_0x2afd46[_0x9d59('0x16')],'include':_0x2afd46[_0x9d59('0x18')]?_[_0x9d59('0x1a')](_0x2afd46[_0x9d59('0x18')],function(_0x2fe8f7){return{'model':db[_0x2fe8f7['model']],'as':_0x2fe8f7['as'],'attributes':_0x2fe8f7[_0x9d59('0x16')],'include':_0x2fe8f7[_0x9d59('0x18')]?_[_0x9d59('0x1a')](_0x2fe8f7[_0x9d59('0x18')],function(_0x43f532){return{'model':db[_0x43f532[_0x9d59('0x19')]],'as':_0x43f532['as'],'attributes':_0x43f532[_0x9d59('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x11f704){logger['info'](_0x9d59('0x1b'),_0xe6d3ff);logger['debug'](_0x9d59('0x1b'),_0xe6d3ff,JSON[_0x9d59('0x1f')](_0x11f704));_0x2fdd7c(_0x11f704);})[_0x9d59('0x20')](function(_0x12f1ee){logger[_0x9d59('0xd')](_0x9d59('0x1b'),_0x12f1ee[_0x9d59('0xf')],_0xe6d3ff);_0x19ade6(_0x246d34[_0x9d59('0xd')](0x1f4,_0x12f1ee['message']));});});};
\ No newline at end of file
+var _0xbd93=['../../config/utils','client','request','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','findAll','options','attributes','include','map','model','then','GetSalesforceAccount','SalesforceAccount','find','raw','ShowSalesforceAccount','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x537366,_0x170cfb){var _0x8dbf09=function(_0x51469e){while(--_0x51469e){_0x537366['push'](_0x537366['shift']());}};_0x8dbf09(++_0x170cfb);}(_0xbd93,0xba));var _0x3bd9=function(_0x1a5bae,_0x22c67e){_0x1a5bae=_0x1a5bae-0x0;var _0x1e4a77=_0xbd93[_0x1a5bae];return _0x1e4a77;};'use strict';var _=require(_0x3bd9('0x0'));var util=require('util');var moment=require(_0x3bd9('0x1'));var BPromise=require(_0x3bd9('0x2'));var rs=require(_0x3bd9('0x3'));var fs=require('fs');var Redis=require(_0x3bd9('0x4'));var db=require(_0x3bd9('0x5'))['db'];var utils=require(_0x3bd9('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3bd9('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x370149,_0xb581a7,_0x1b0093){return new BPromise(function(_0x4fbbf9,_0x4af527){return client[_0x3bd9('0x8')](_0x370149,_0x1b0093)['then'](function(_0x5626fe){logger[_0x3bd9('0x9')](_0x3bd9('0xa'),_0xb581a7,_0x3bd9('0xb'));logger[_0x3bd9('0xc')](_0x3bd9('0xd'),_0xb581a7,'request\x20sent',JSON[_0x3bd9('0xe')](_0x5626fe));if(_0x5626fe[_0x3bd9('0xf')]){if(_0x5626fe['error'][_0x3bd9('0x10')]===0x1f4){logger['error'](_0x3bd9('0xa'),_0xb581a7,_0x5626fe[_0x3bd9('0xf')][_0x3bd9('0x11')]);return _0x4af527(_0x5626fe[_0x3bd9('0xf')][_0x3bd9('0x11')]);}logger['error'](_0x3bd9('0xa'),_0xb581a7,_0x5626fe[_0x3bd9('0xf')][_0x3bd9('0x11')]);return _0x4fbbf9(_0x5626fe[_0x3bd9('0xf')][_0x3bd9('0x11')]);}else{logger[_0x3bd9('0x9')]('SalesforceAccount,\x20%s,\x20%s',_0xb581a7,_0x3bd9('0xb'));_0x4fbbf9(_0x5626fe[_0x3bd9('0x12')]['message']);}})[_0x3bd9('0x13')](function(_0x52c12f){logger[_0x3bd9('0xf')](_0x3bd9('0xa'),_0xb581a7,_0x52c12f);_0x4af527(_0x52c12f);});});}exports['GetSalesforceAccount']=function(_0x2016f4){var _0x5191b7=this;return new Promise(function(_0x2d7619,_0x1bd89a){return db['SalesforceAccount'][_0x3bd9('0x14')]({'raw':_0x2016f4[_0x3bd9('0x15')]?_0x2016f4[_0x3bd9('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x2016f4[_0x3bd9('0x15')]?_0x2016f4[_0x3bd9('0x15')]['where']||null:null,'attributes':_0x2016f4[_0x3bd9('0x15')]?_0x2016f4[_0x3bd9('0x15')][_0x3bd9('0x16')]||null:null,'limit':_0x2016f4[_0x3bd9('0x15')]?_0x2016f4[_0x3bd9('0x15')]['limit']||null:null,'include':_0x2016f4[_0x3bd9('0x15')]?_0x2016f4['options'][_0x3bd9('0x17')]?_[_0x3bd9('0x18')](_0x2016f4['options'][_0x3bd9('0x17')],function(_0x141887){return{'model':db[_0x141887['model']],'as':_0x141887['as'],'attributes':_0x141887[_0x3bd9('0x16')],'include':_0x141887[_0x3bd9('0x17')]?_['map'](_0x141887['include'],function(_0x718a40){return{'model':db[_0x718a40[_0x3bd9('0x19')]],'as':_0x718a40['as'],'attributes':_0x718a40[_0x3bd9('0x16')],'include':_0x718a40[_0x3bd9('0x17')]?_[_0x3bd9('0x18')](_0x718a40[_0x3bd9('0x17')],function(_0x4491f9){return{'model':db[_0x4491f9[_0x3bd9('0x19')]],'as':_0x4491f9['as'],'attributes':_0x4491f9['attributes']};}):[]};}):[]};}):[]:[]})[_0x3bd9('0x1a')](function(_0x1bd914){logger['info']('GetSalesforceAccount',_0x2016f4);logger[_0x3bd9('0xc')]('GetSalesforceAccount',_0x2016f4,JSON[_0x3bd9('0xe')](_0x1bd914));_0x2d7619(_0x1bd914);})[_0x3bd9('0x13')](function(_0x248c74){logger[_0x3bd9('0xf')](_0x3bd9('0x1b'),_0x248c74[_0x3bd9('0x11')],_0x2016f4);_0x1bd89a(_0x5191b7[_0x3bd9('0xf')](0x1f4,_0x248c74[_0x3bd9('0x11')]));});});};exports['ShowSalesforceAccount']=function(_0x1c82c5){var _0x2a5454=this;return new Promise(function(_0x76a25e,_0x956e80){return db[_0x3bd9('0x1c')][_0x3bd9('0x1d')]({'raw':_0x1c82c5[_0x3bd9('0x15')]?_0x1c82c5[_0x3bd9('0x15')][_0x3bd9('0x1e')]===undefined?!![]:![]:!![],'where':_0x1c82c5['options']?_0x1c82c5[_0x3bd9('0x15')]['where']||null:null,'attributes':_0x1c82c5['options']?_0x1c82c5[_0x3bd9('0x15')][_0x3bd9('0x16')]||null:null,'include':_0x1c82c5[_0x3bd9('0x15')]?_0x1c82c5[_0x3bd9('0x15')][_0x3bd9('0x17')]?_['map'](_0x1c82c5[_0x3bd9('0x15')][_0x3bd9('0x17')],function(_0x37ee2c){return{'model':db[_0x37ee2c[_0x3bd9('0x19')]],'as':_0x37ee2c['as'],'attributes':_0x37ee2c[_0x3bd9('0x16')],'include':_0x37ee2c[_0x3bd9('0x17')]?_[_0x3bd9('0x18')](_0x37ee2c['include'],function(_0x41f827){return{'model':db[_0x41f827[_0x3bd9('0x19')]],'as':_0x41f827['as'],'attributes':_0x41f827[_0x3bd9('0x16')],'include':_0x41f827[_0x3bd9('0x17')]?_[_0x3bd9('0x18')](_0x41f827[_0x3bd9('0x17')],function(_0x15811f){return{'model':db[_0x15811f[_0x3bd9('0x19')]],'as':_0x15811f['as'],'attributes':_0x15811f[_0x3bd9('0x16')]};}):[]};}):[]};}):[]:[]})[_0x3bd9('0x1a')](function(_0x52122f){logger[_0x3bd9('0x9')](_0x3bd9('0x1f'),_0x1c82c5);logger['debug']('ShowSalesforceAccount',_0x1c82c5,JSON[_0x3bd9('0xe')](_0x52122f));_0x76a25e(_0x52122f);})[_0x3bd9('0x13')](function(_0x53d6da){logger[_0x3bd9('0xf')](_0x3bd9('0x1f'),_0x53d6da[_0x3bd9('0x11')],_0x1c82c5);_0x956e80(_0x2a5454['error'](0x1f4,_0x53d6da['message']));});});};
\ No newline at end of file
index 4bf6d24..6c9ca5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['Router','fs-extra','../../components/auth/service','./intSalesforceConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','create','put','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x3e5595,_0x38bf1d){var _0x19c9f7=function(_0x5b79ba){while(--_0x5b79ba){_0x3e5595['push'](_0x3e5595['shift']());}};_0x19c9f7(++_0x38bf1d);}(_0x5f2f,0x73));var _0xf5f2=function(_0x36641f,_0x1de996){_0x36641f=_0x36641f-0x0;var _0x264197=_0x5f2f[_0x36641f];return _0x264197;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x9')](_0xf5f2('0x10'),auth['isAuthenticated'](),controller[_0xf5f2('0x11')]);router['get']('/:id/descriptions',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x12')]);router['post']('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x13')]);router[_0xf5f2('0x14')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x15')]);router['delete'](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x16')]);module[_0xf5f2('0x17')]=router;
\ No newline at end of file
+var _0x5f2f=['Router','fs-extra','../../components/auth/service','./intSalesforceConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','create','put','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x176ad1,_0x51b84d){var _0x245de1=function(_0x2901e7){while(--_0x2901e7){_0x176ad1['push'](_0x176ad1['shift']());}};_0x245de1(++_0x51b84d);}(_0x5f2f,0x73));var _0xf5f2=function(_0x2c8bdd,_0x27cfa4){_0x2c8bdd=_0x2c8bdd-0x0;var _0x3ef45f=_0x5f2f[_0x2c8bdd];return _0x3ef45f;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x9')](_0xf5f2('0x10'),auth['isAuthenticated'](),controller[_0xf5f2('0x11')]);router['get']('/:id/descriptions',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x12')]);router['post']('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x13')]);router[_0xf5f2('0x14')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x15')]);router['delete'](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x16')]);module[_0xf5f2('0x17')]=router;
\ No newline at end of file
index d33d2e0..2516745 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa7b=['STRING','ENUM','Case','Task','contact_lead','contact','lead','account_contact_lead','account','sequelize'];(function(_0x3831ed,_0x5e88ce){var _0x5521ce=function(_0x15fef7){while(--_0x15fef7){_0x3831ed['push'](_0x3831ed['shift']());}};_0x5521ce(++_0x5e88ce);}(_0xfa7b,0xa9));var _0xbfa7=function(_0x2556d6,_0x5112f8){_0x2556d6=_0x2556d6-0x0;var _0x4040ed=_0xfa7b[_0x2556d6];return _0x4040ed;};'use strict';var Sequelize=require(_0xbfa7('0x0'));module['exports']={'name':{'type':Sequelize[_0xbfa7('0x1')]},'description':{'type':Sequelize[_0xbfa7('0x1')]},'ticketType':{'type':Sequelize[_0xbfa7('0x2')]('Task',_0xbfa7('0x3')),'defaultValue':_0xbfa7('0x4')},'moduleSearch':{'type':Sequelize[_0xbfa7('0x2')](_0xbfa7('0x5'),_0xbfa7('0x6'),_0xbfa7('0x7'),_0xbfa7('0x8'),_0xbfa7('0x9')),'defaultValue':_0xbfa7('0x5')},'moduleCreate':{'type':Sequelize['ENUM']('nothing',_0xbfa7('0x6'),_0xbfa7('0x7'),_0xbfa7('0x9')),'defaultValue':'lead'},'leadId':{'type':Sequelize[_0xbfa7('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0xbfa7('0x1')]},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize[_0xbfa7('0x1')]}};
\ No newline at end of file
+var _0x3e40=['STRING','ENUM','Task','contact','lead','account_contact_lead','contact_lead','nothing','account','sequelize'];(function(_0x38a918,_0x3bd6ef){var _0x298c37=function(_0x132b77){while(--_0x132b77){_0x38a918['push'](_0x38a918['shift']());}};_0x298c37(++_0x3bd6ef);}(_0x3e40,0xef));var _0x03e4=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0x3e40[_0x34bc30];return _0x5706de;};'use strict';var Sequelize=require(_0x03e4('0x0'));module['exports']={'name':{'type':Sequelize[_0x03e4('0x1')]},'description':{'type':Sequelize[_0x03e4('0x1')]},'ticketType':{'type':Sequelize[_0x03e4('0x2')](_0x03e4('0x3'),'Case'),'defaultValue':_0x03e4('0x3')},'moduleSearch':{'type':Sequelize[_0x03e4('0x2')]('contact_lead',_0x03e4('0x4'),_0x03e4('0x5'),_0x03e4('0x6'),'account'),'defaultValue':_0x03e4('0x7')},'moduleCreate':{'type':Sequelize[_0x03e4('0x2')](_0x03e4('0x8'),_0x03e4('0x4'),'lead',_0x03e4('0x9')),'defaultValue':_0x03e4('0x5')},'leadId':{'type':Sequelize[_0x03e4('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0x03e4('0x1')]},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 62bcfa3..596cb5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2086=['offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','map','rawAttributes','key','query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','options','SalesforceConfiguration','includeAll','include','rows','show','intersection','catch','create','body','find','params','getFields','SalesforceField','order','getSubjects','getDescriptions','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json'];(function(_0x4d4eac,_0x16d440){var _0x386641=function(_0x5c0187){while(--_0x5c0187){_0x4d4eac['push'](_0x4d4eac['shift']());}};_0x386641(++_0x16d440);}(_0x2086,0x124));var _0x6208=function(_0x1bb306,_0x3b03e6){_0x1bb306=_0x1bb306-0x0;var _0x17265b=_0x2086[_0x1bb306];return _0x17265b;};'use strict';var emlformat=require(_0x6208('0x0'));var rimraf=require(_0x6208('0x1'));var zipdir=require(_0x6208('0x2'));var jsonpatch=require(_0x6208('0x3'));var rp=require(_0x6208('0x4'));var moment=require(_0x6208('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6208('0x6'));var util=require(_0x6208('0x7'));var path=require('path');var sox=require(_0x6208('0x8'));var csv=require(_0x6208('0x9'));var ejs=require(_0x6208('0xa'));var fs=require('fs');var fs_extra=require(_0x6208('0xb'));var _=require(_0x6208('0xc'));var squel=require('squel');var crypto=require(_0x6208('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6208('0x9'));var querystring=require(_0x6208('0xe'));var Papa=require(_0x6208('0xf'));var Redis=require(_0x6208('0x10'));var authService=require(_0x6208('0x11'));var qs=require(_0x6208('0x12'));var as=require(_0x6208('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6208('0x14'))(_0x6208('0x15'));var utils=require(_0x6208('0x16'));var config=require(_0x6208('0x17'));var licenseUtil=require(_0x6208('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3d5715,_0x53f5f1){_0x53f5f1=_0x53f5f1||0xcc;return function(_0x3b1cab){if(_0x3b1cab){return _0x3d5715[_0x6208('0x19')](_0x53f5f1);}return _0x3d5715[_0x6208('0x1a')](_0x53f5f1)['end']();};}function respondWithResult(_0x176cd5,_0x183e01){_0x183e01=_0x183e01||0xc8;return function(_0x3a54b3){if(_0x3a54b3){return _0x176cd5['status'](_0x183e01)[_0x6208('0x1b')](_0x3a54b3);}};}function respondWithFilteredResult(_0x32dda8,_0x1735e1){return function(_0x582218){if(_0x582218){var _0x37db49=typeof _0x1735e1[_0x6208('0x1c')]===_0x6208('0x1d')&&typeof _0x1735e1['limit']==='undefined';var _0x43263a=_0x582218['count'];var _0x4e7257=_0x37db49?0x0:_0x1735e1[_0x6208('0x1c')];var _0x5831f8=_0x37db49?_0x582218[_0x6208('0x1e')]:_0x1735e1[_0x6208('0x1c')]+_0x1735e1[_0x6208('0x1f')];var _0x451351;if(_0x5831f8>=_0x43263a){_0x5831f8=_0x43263a;_0x451351=0xc8;}else{_0x451351=0xce;}_0x32dda8[_0x6208('0x1a')](_0x451351);return _0x32dda8[_0x6208('0x20')](_0x6208('0x21'),_0x4e7257+'-'+_0x5831f8+'/'+_0x43263a)[_0x6208('0x1b')](_0x582218);}return null;};}function patchUpdates(_0x328af9){return function(_0x796d65){try{jsonpatch[_0x6208('0x22')](_0x796d65,_0x328af9,!![]);}catch(_0x3b1456){return BPromise['reject'](_0x3b1456);}return _0x796d65[_0x6208('0x23')]();};}function saveUpdates(_0x1b93b6,_0x25fa2b){return function(_0x1356cc){if(_0x1356cc){return _0x1356cc[_0x6208('0x24')](_0x1b93b6)[_0x6208('0x25')](function(_0x2890af){return _0x2890af;});}return null;};}function removeEntity(_0xfd79f4,_0x5e0852){return function(_0x15d14e){if(_0x15d14e){return _0x15d14e[_0x6208('0x26')]()[_0x6208('0x25')](function(){_0xfd79f4[_0x6208('0x1a')](0xcc)[_0x6208('0x27')]();});}};}function handleEntityNotFound(_0x40bab6,_0x117fa7){return function(_0x364b13){if(!_0x364b13){_0x40bab6[_0x6208('0x19')](0x194);}return _0x364b13;};}function handleError(_0x165c05,_0x4c6183){_0x4c6183=_0x4c6183||0x1f4;return function(_0x2bb9df){logger[_0x6208('0x28')](_0x2bb9df[_0x6208('0x29')]);if(_0x2bb9df[_0x6208('0x2a')]){delete _0x2bb9df[_0x6208('0x2a')];}_0x165c05[_0x6208('0x1a')](_0x4c6183)['send'](_0x2bb9df);};}exports['index']=function(_0x76dcda,_0x90d6c0){var _0x18df12={},_0x46f36d={},_0x5663f7={'count':0x0,'rows':[]};var _0x101e1b=_[_0x6208('0x2b')](db['SalesforceConfiguration'][_0x6208('0x2c')],function(_0x47b247){return{'name':_0x47b247['fieldName'],'type':_0x47b247['type'][_0x6208('0x2d')]};});_0x46f36d['model']=_[_0x6208('0x2b')](_0x101e1b,'name');_0x46f36d[_0x6208('0x2e')]=_[_0x6208('0x2f')](_0x76dcda['query']);_0x46f36d[_0x6208('0x30')]=_['intersection'](_0x46f36d[_0x6208('0x31')],_0x46f36d[_0x6208('0x2e')]);_0x18df12[_0x6208('0x32')]=_['intersection'](_0x46f36d[_0x6208('0x31')],qs[_0x6208('0x33')](_0x76dcda[_0x6208('0x2e')][_0x6208('0x33')]));_0x18df12[_0x6208('0x32')]=_0x18df12['attributes'][_0x6208('0x34')]?_0x18df12[_0x6208('0x32')]:_0x46f36d[_0x6208('0x31')];if(!_0x76dcda[_0x6208('0x2e')][_0x6208('0x35')](_0x6208('0x36'))){_0x18df12['limit']=qs['limit'](_0x76dcda[_0x6208('0x2e')]['limit']);_0x18df12['offset']=qs[_0x6208('0x1c')](_0x76dcda[_0x6208('0x2e')][_0x6208('0x1c')]);}_0x18df12['order']=qs[_0x6208('0x37')](_0x76dcda[_0x6208('0x2e')][_0x6208('0x37')]);_0x18df12[_0x6208('0x38')]=qs[_0x6208('0x30')](_[_0x6208('0x39')](_0x76dcda[_0x6208('0x2e')],_0x46f36d[_0x6208('0x30')]),_0x101e1b);if(_0x76dcda['query'][_0x6208('0x3a')]){_0x18df12[_0x6208('0x38')]=_['merge'](_0x18df12[_0x6208('0x38')],{'$or':_[_0x6208('0x2b')](_0x101e1b,function(_0x21933b){if(_0x21933b[_0x6208('0x3b')]!==_0x6208('0x3c')){var _0x164d28={};_0x164d28[_0x21933b[_0x6208('0x2a')]]={'$like':'%'+_0x76dcda[_0x6208('0x2e')][_0x6208('0x3a')]+'%'};return _0x164d28;}})});}_0x18df12=_[_0x6208('0x3d')]({},_0x18df12,_0x76dcda[_0x6208('0x3e')]);var _0xeadbd={'where':_0x18df12[_0x6208('0x38')]};return db[_0x6208('0x3f')][_0x6208('0x1e')](_0xeadbd)[_0x6208('0x25')](function(_0x296e6c){_0x5663f7[_0x6208('0x1e')]=_0x296e6c;if(_0x76dcda[_0x6208('0x2e')][_0x6208('0x40')]){_0x18df12[_0x6208('0x41')]=[{'all':!![]}];}return db['SalesforceConfiguration']['findAll'](_0x18df12);})[_0x6208('0x25')](function(_0x599ee6){_0x5663f7[_0x6208('0x42')]=_0x599ee6;return _0x5663f7;})[_0x6208('0x25')](respondWithFilteredResult(_0x90d6c0,_0x18df12))['catch'](handleError(_0x90d6c0,null));};exports[_0x6208('0x43')]=function(_0x149209,_0x49536d){var _0x236f8e={'raw':![],'where':{'id':_0x149209['params']['id']}},_0x54dd9b={};_0x54dd9b[_0x6208('0x31')]=_['keys'](db[_0x6208('0x3f')]['rawAttributes']);_0x54dd9b[_0x6208('0x2e')]=_[_0x6208('0x2f')](_0x149209['query']);_0x54dd9b[_0x6208('0x30')]=_[_0x6208('0x44')](_0x54dd9b['model'],_0x54dd9b[_0x6208('0x2e')]);_0x236f8e[_0x6208('0x32')]=_[_0x6208('0x44')](_0x54dd9b[_0x6208('0x31')],qs['fields'](_0x149209[_0x6208('0x2e')]['fields']));_0x236f8e[_0x6208('0x32')]=_0x236f8e['attributes'][_0x6208('0x34')]?_0x236f8e[_0x6208('0x32')]:_0x54dd9b[_0x6208('0x31')];if(_0x149209[_0x6208('0x2e')][_0x6208('0x40')]){_0x236f8e['include']=[{'all':!![]}];}_0x236f8e=_[_0x6208('0x3d')]({},_0x236f8e,_0x149209[_0x6208('0x3e')]);return db[_0x6208('0x3f')]['find'](_0x236f8e)['then'](handleEntityNotFound(_0x49536d,null))[_0x6208('0x25')](respondWithResult(_0x49536d,null))[_0x6208('0x45')](handleError(_0x49536d,null));};exports[_0x6208('0x46')]=function(_0x4528d1,_0x4d6b68){return db[_0x6208('0x3f')][_0x6208('0x46')](_0x4528d1[_0x6208('0x47')],{})[_0x6208('0x25')](respondWithResult(_0x4d6b68,0xc9))[_0x6208('0x45')](handleError(_0x4d6b68,null));};exports[_0x6208('0x24')]=function(_0x1aca58,_0x2f8481){if(_0x1aca58['body']['id']){delete _0x1aca58[_0x6208('0x47')]['id'];}return db[_0x6208('0x3f')][_0x6208('0x48')]({'where':{'id':_0x1aca58[_0x6208('0x49')]['id']}})['then'](handleEntityNotFound(_0x2f8481,null))[_0x6208('0x25')](saveUpdates(_0x1aca58['body'],null))[_0x6208('0x25')](respondWithResult(_0x2f8481,null))[_0x6208('0x45')](handleError(_0x2f8481,null));};exports[_0x6208('0x26')]=function(_0x4eddd1,_0x57dafe){return db[_0x6208('0x3f')][_0x6208('0x48')]({'where':{'id':_0x4eddd1[_0x6208('0x49')]['id']}})['then'](handleEntityNotFound(_0x57dafe,null))[_0x6208('0x25')](removeEntity(_0x57dafe,null))[_0x6208('0x45')](handleError(_0x57dafe,null));};exports[_0x6208('0x4a')]=function(_0x1b31aa,_0x57bf5c,_0x59dd04){var _0xc49e3e={};var _0xb8390b={};var _0x2a0b1c;var _0x269e32;return db[_0x6208('0x3f')]['findOne']({'where':{'id':_0x1b31aa[_0x6208('0x49')]['id']}})[_0x6208('0x25')](handleEntityNotFound(_0x57bf5c,null))[_0x6208('0x25')](function(_0x13f760){if(_0x13f760){_0x2a0b1c=_0x13f760;_0xb8390b[_0x6208('0x31')]=_[_0x6208('0x2f')](db[_0x6208('0x4b')]['rawAttributes']);_0xb8390b[_0x6208('0x2e')]=_[_0x6208('0x2f')](_0x1b31aa[_0x6208('0x2e')]);_0xb8390b[_0x6208('0x30')]=_[_0x6208('0x44')](_0xb8390b[_0x6208('0x31')],_0xb8390b[_0x6208('0x2e')]);_0xc49e3e[_0x6208('0x32')]=_['intersection'](_0xb8390b['model'],qs[_0x6208('0x33')](_0x1b31aa['query'][_0x6208('0x33')]));_0xc49e3e[_0x6208('0x32')]=_0xc49e3e[_0x6208('0x32')][_0x6208('0x34')]?_0xc49e3e[_0x6208('0x32')]:_0xb8390b['model'];_0xc49e3e[_0x6208('0x4c')]=qs['sort'](_0x1b31aa['query'][_0x6208('0x37')]);_0xc49e3e[_0x6208('0x38')]=qs[_0x6208('0x30')](_[_0x6208('0x39')](_0x1b31aa[_0x6208('0x2e')],_0xb8390b[_0x6208('0x30')]));if(_0x1b31aa[_0x6208('0x2e')]['filter']){_0xc49e3e[_0x6208('0x38')]=_[_0x6208('0x3d')](_0xc49e3e[_0x6208('0x38')],{'$or':_['map'](_0xc49e3e[_0x6208('0x32')],function(_0x34dec6){var _0x387553={};_0x387553[_0x34dec6]={'$like':'%'+_0x1b31aa[_0x6208('0x2e')]['filter']+'%'};return _0x387553;})});}_0xc49e3e=_[_0x6208('0x3d')]({},_0xc49e3e,_0x1b31aa[_0x6208('0x3e')]);return _0x2a0b1c['getFields'](_0xc49e3e);}})[_0x6208('0x25')](function(_0x428c4e){if(_0x428c4e){_0x269e32=_0x428c4e['length'];if(!_0x1b31aa[_0x6208('0x2e')][_0x6208('0x35')](_0x6208('0x36'))){_0xc49e3e[_0x6208('0x1f')]=qs[_0x6208('0x1f')](_0x1b31aa[_0x6208('0x2e')]['limit']);_0xc49e3e[_0x6208('0x1c')]=qs[_0x6208('0x1c')](_0x1b31aa['query'][_0x6208('0x1c')]);}return _0x2a0b1c[_0x6208('0x4a')](_0xc49e3e);}})['then'](function(_0x559f94){if(_0x559f94){return _0x559f94?{'count':_0x269e32,'rows':_0x559f94}:null;}})[_0x6208('0x25')](respondWithResult(_0x57bf5c,null))[_0x6208('0x45')](handleError(_0x57bf5c,null));};exports[_0x6208('0x4d')]=function(_0xad3d90,_0x3cc07c,_0x1fa553){var _0x2bc5e5={};var _0xe41940={};var _0x45c797;var _0x1ce10a;return db['SalesforceConfiguration']['findOne']({'where':{'id':_0xad3d90['params']['id']}})['then'](handleEntityNotFound(_0x3cc07c,null))[_0x6208('0x25')](function(_0x1b65c1){if(_0x1b65c1){_0x45c797=_0x1b65c1;_0xe41940[_0x6208('0x31')]=_[_0x6208('0x2f')](db[_0x6208('0x4b')][_0x6208('0x2c')]);_0xe41940[_0x6208('0x2e')]=_['keys'](_0xad3d90['query']);_0xe41940[_0x6208('0x30')]=_[_0x6208('0x44')](_0xe41940[_0x6208('0x31')],_0xe41940[_0x6208('0x2e')]);_0x2bc5e5[_0x6208('0x32')]=_[_0x6208('0x44')](_0xe41940[_0x6208('0x31')],qs[_0x6208('0x33')](_0xad3d90['query'][_0x6208('0x33')]));_0x2bc5e5[_0x6208('0x32')]=_0x2bc5e5[_0x6208('0x32')][_0x6208('0x34')]?_0x2bc5e5[_0x6208('0x32')]:_0xe41940[_0x6208('0x31')];_0x2bc5e5['order']=qs[_0x6208('0x37')](_0xad3d90['query'][_0x6208('0x37')]);_0x2bc5e5[_0x6208('0x38')]=qs[_0x6208('0x30')](_[_0x6208('0x39')](_0xad3d90[_0x6208('0x2e')],_0xe41940[_0x6208('0x30')]));if(_0xad3d90[_0x6208('0x2e')][_0x6208('0x3a')]){_0x2bc5e5[_0x6208('0x38')]=_[_0x6208('0x3d')](_0x2bc5e5[_0x6208('0x38')],{'$or':_[_0x6208('0x2b')](_0x2bc5e5[_0x6208('0x32')],function(_0x3dc6b1){var _0x1ab188={};_0x1ab188[_0x3dc6b1]={'$like':'%'+_0xad3d90[_0x6208('0x2e')][_0x6208('0x3a')]+'%'};return _0x1ab188;})});}_0x2bc5e5=_['merge']({},_0x2bc5e5,_0xad3d90[_0x6208('0x3e')]);return _0x45c797[_0x6208('0x4d')](_0x2bc5e5);}})[_0x6208('0x25')](function(_0x33a387){if(_0x33a387){_0x1ce10a=_0x33a387[_0x6208('0x34')];if(!_0xad3d90[_0x6208('0x2e')][_0x6208('0x35')](_0x6208('0x36'))){_0x2bc5e5[_0x6208('0x1f')]=qs[_0x6208('0x1f')](_0xad3d90[_0x6208('0x2e')][_0x6208('0x1f')]);_0x2bc5e5['offset']=qs['offset'](_0xad3d90[_0x6208('0x2e')]['offset']);}return _0x45c797[_0x6208('0x4d')](_0x2bc5e5);}})[_0x6208('0x25')](function(_0x437c19){if(_0x437c19){return _0x437c19?{'count':_0x1ce10a,'rows':_0x437c19}:null;}})[_0x6208('0x25')](respondWithResult(_0x3cc07c,null))['catch'](handleError(_0x3cc07c,null));};exports[_0x6208('0x4e')]=function(_0x16df84,_0x48436f,_0x27a374){var _0x3634f2={};var _0x2b02fc={};var _0x3cb60b;var _0x52fc53;return db[_0x6208('0x3f')][_0x6208('0x4f')]({'where':{'id':_0x16df84[_0x6208('0x49')]['id']}})['then'](handleEntityNotFound(_0x48436f,null))[_0x6208('0x25')](function(_0xd68633){if(_0xd68633){_0x3cb60b=_0xd68633;_0x2b02fc[_0x6208('0x31')]=_[_0x6208('0x2f')](db[_0x6208('0x4b')][_0x6208('0x2c')]);_0x2b02fc[_0x6208('0x2e')]=_[_0x6208('0x2f')](_0x16df84[_0x6208('0x2e')]);_0x2b02fc[_0x6208('0x30')]=_[_0x6208('0x44')](_0x2b02fc[_0x6208('0x31')],_0x2b02fc['query']);_0x3634f2[_0x6208('0x32')]=_[_0x6208('0x44')](_0x2b02fc[_0x6208('0x31')],qs[_0x6208('0x33')](_0x16df84['query']['fields']));_0x3634f2[_0x6208('0x32')]=_0x3634f2['attributes'][_0x6208('0x34')]?_0x3634f2[_0x6208('0x32')]:_0x2b02fc['model'];_0x3634f2['order']=qs[_0x6208('0x37')](_0x16df84['query']['sort']);_0x3634f2[_0x6208('0x38')]=qs[_0x6208('0x30')](_[_0x6208('0x39')](_0x16df84[_0x6208('0x2e')],_0x2b02fc[_0x6208('0x30')]));if(_0x16df84[_0x6208('0x2e')][_0x6208('0x3a')]){_0x3634f2[_0x6208('0x38')]=_['merge'](_0x3634f2['where'],{'$or':_[_0x6208('0x2b')](_0x3634f2[_0x6208('0x32')],function(_0x7ba321){var _0x4c3835={};_0x4c3835[_0x7ba321]={'$like':'%'+_0x16df84[_0x6208('0x2e')]['filter']+'%'};return _0x4c3835;})});}_0x3634f2=_[_0x6208('0x3d')]({},_0x3634f2,_0x16df84['options']);return _0x3cb60b[_0x6208('0x4e')](_0x3634f2);}})[_0x6208('0x25')](function(_0x3cdb04){if(_0x3cdb04){_0x52fc53=_0x3cdb04[_0x6208('0x34')];if(!_0x16df84[_0x6208('0x2e')][_0x6208('0x35')](_0x6208('0x36'))){_0x3634f2['limit']=qs[_0x6208('0x1f')](_0x16df84['query'][_0x6208('0x1f')]);_0x3634f2[_0x6208('0x1c')]=qs[_0x6208('0x1c')](_0x16df84[_0x6208('0x2e')]['offset']);}return _0x3cb60b['getDescriptions'](_0x3634f2);}})[_0x6208('0x25')](function(_0xf89814){if(_0xf89814){return _0xf89814?{'count':_0x52fc53,'rows':_0xf89814}:null;}})['then'](respondWithResult(_0x48436f,null))['catch'](handleError(_0x48436f,null));};
\ No newline at end of file
+var _0xcdd0=['../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','map','SalesforceConfiguration','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','merge','type','VIRTUAL','includeAll','findAll','catch','show','params','find','create','body','findOne','SalesforceField','order','options','getFields','getSubjects','filter','hasOwnProperty','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','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','api','../../config/utils'];(function(_0x21695e,_0x49cc7f){var _0x4c6a1a=function(_0x5d5db1){while(--_0x5d5db1){_0x21695e['push'](_0x21695e['shift']());}};_0x4c6a1a(++_0x49cc7f);}(_0xcdd0,0xd9));var _0x0cdd=function(_0x20c9b2,_0x55d7b1){_0x20c9b2=_0x20c9b2-0x0;var _0x2c6030=_0xcdd0[_0x20c9b2];return _0x2c6030;};'use strict';var emlformat=require(_0x0cdd('0x0'));var rimraf=require(_0x0cdd('0x1'));var zipdir=require(_0x0cdd('0x2'));var jsonpatch=require(_0x0cdd('0x3'));var rp=require('request-promise');var moment=require(_0x0cdd('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x0cdd('0x5'));var path=require('path');var sox=require(_0x0cdd('0x6'));var csv=require(_0x0cdd('0x7'));var ejs=require(_0x0cdd('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0cdd('0x9'));var squel=require(_0x0cdd('0xa'));var crypto=require(_0x0cdd('0xb'));var jsforce=require(_0x0cdd('0xc'));var deskjs=require(_0x0cdd('0xd'));var toCsv=require(_0x0cdd('0x7'));var querystring=require(_0x0cdd('0xe'));var Papa=require(_0x0cdd('0xf'));var Redis=require(_0x0cdd('0x10'));var authService=require(_0x0cdd('0x11'));var qs=require(_0x0cdd('0x12'));var as=require(_0x0cdd('0x13'));var hardwareService=require(_0x0cdd('0x14'));var logger=require('../../config/logger')(_0x0cdd('0x15'));var utils=require(_0x0cdd('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0cdd('0x17'));var db=require(_0x0cdd('0x18'))['db'];function respondWithStatusCode(_0x5bbec7,_0x425311){_0x425311=_0x425311||0xcc;return function(_0x4cd98c){if(_0x4cd98c){return _0x5bbec7[_0x0cdd('0x19')](_0x425311);}return _0x5bbec7[_0x0cdd('0x1a')](_0x425311)['end']();};}function respondWithResult(_0x5b3f55,_0x455efa){_0x455efa=_0x455efa||0xc8;return function(_0x49aecf){if(_0x49aecf){return _0x5b3f55['status'](_0x455efa)['json'](_0x49aecf);}};}function respondWithFilteredResult(_0x263521,_0x5427e1){return function(_0x3b9f5c){if(_0x3b9f5c){var _0x2b0016=typeof _0x5427e1[_0x0cdd('0x1b')]==='undefined'&&typeof _0x5427e1[_0x0cdd('0x1c')]==='undefined';var _0x9bd09f=_0x3b9f5c[_0x0cdd('0x1d')];var _0x2b3e27=_0x2b0016?0x0:_0x5427e1['offset'];var _0x5aeb1a=_0x2b0016?_0x3b9f5c[_0x0cdd('0x1d')]:_0x5427e1['offset']+_0x5427e1[_0x0cdd('0x1c')];var _0x3108e9;if(_0x5aeb1a>=_0x9bd09f){_0x5aeb1a=_0x9bd09f;_0x3108e9=0xc8;}else{_0x3108e9=0xce;}_0x263521['status'](_0x3108e9);return _0x263521[_0x0cdd('0x1e')](_0x0cdd('0x1f'),_0x2b3e27+'-'+_0x5aeb1a+'/'+_0x9bd09f)[_0x0cdd('0x20')](_0x3b9f5c);}return null;};}function patchUpdates(_0x426fb9){return function(_0x3bb5f4){try{jsonpatch[_0x0cdd('0x21')](_0x3bb5f4,_0x426fb9,!![]);}catch(_0x38c10a){return BPromise[_0x0cdd('0x22')](_0x38c10a);}return _0x3bb5f4[_0x0cdd('0x23')]();};}function saveUpdates(_0x33da23,_0x225b4e){return function(_0x49fb9b){if(_0x49fb9b){return _0x49fb9b[_0x0cdd('0x24')](_0x33da23)[_0x0cdd('0x25')](function(_0x2aa910){return _0x2aa910;});}return null;};}function removeEntity(_0x29015b,_0x586943){return function(_0x38a8a1){if(_0x38a8a1){return _0x38a8a1[_0x0cdd('0x26')]()[_0x0cdd('0x25')](function(){_0x29015b[_0x0cdd('0x1a')](0xcc)[_0x0cdd('0x27')]();});}};}function handleEntityNotFound(_0x1ae222,_0x3d5731){return function(_0x1d1637){if(!_0x1d1637){_0x1ae222[_0x0cdd('0x19')](0x194);}return _0x1d1637;};}function handleError(_0x289116,_0x4458d2){_0x4458d2=_0x4458d2||0x1f4;return function(_0xb6538){logger[_0x0cdd('0x28')](_0xb6538[_0x0cdd('0x29')]);if(_0xb6538['name']){delete _0xb6538[_0x0cdd('0x2a')];}_0x289116[_0x0cdd('0x1a')](_0x4458d2)['send'](_0xb6538);};}exports['index']=function(_0x3e0c2b,_0x56bc7c){var _0x34b1b7={},_0x64703e={},_0x2addbd={'count':0x0,'rows':[]};var _0xcfb5d4=_[_0x0cdd('0x2b')](db[_0x0cdd('0x2c')][_0x0cdd('0x2d')],function(_0xeec79e){return{'name':_0xeec79e[_0x0cdd('0x2e')],'type':_0xeec79e['type'][_0x0cdd('0x2f')]};});_0x64703e[_0x0cdd('0x30')]=_['map'](_0xcfb5d4,_0x0cdd('0x2a'));_0x64703e[_0x0cdd('0x31')]=_[_0x0cdd('0x32')](_0x3e0c2b[_0x0cdd('0x31')]);_0x64703e[_0x0cdd('0x33')]=_[_0x0cdd('0x34')](_0x64703e[_0x0cdd('0x30')],_0x64703e['query']);_0x34b1b7[_0x0cdd('0x35')]=_[_0x0cdd('0x34')](_0x64703e[_0x0cdd('0x30')],qs[_0x0cdd('0x36')](_0x3e0c2b[_0x0cdd('0x31')][_0x0cdd('0x36')]));_0x34b1b7['attributes']=_0x34b1b7[_0x0cdd('0x35')][_0x0cdd('0x37')]?_0x34b1b7[_0x0cdd('0x35')]:_0x64703e[_0x0cdd('0x30')];if(!_0x3e0c2b[_0x0cdd('0x31')]['hasOwnProperty'](_0x0cdd('0x38'))){_0x34b1b7['limit']=qs[_0x0cdd('0x1c')](_0x3e0c2b['query'][_0x0cdd('0x1c')]);_0x34b1b7[_0x0cdd('0x1b')]=qs[_0x0cdd('0x1b')](_0x3e0c2b[_0x0cdd('0x31')][_0x0cdd('0x1b')]);}_0x34b1b7['order']=qs[_0x0cdd('0x39')](_0x3e0c2b[_0x0cdd('0x31')][_0x0cdd('0x39')]);_0x34b1b7[_0x0cdd('0x3a')]=qs[_0x0cdd('0x33')](_[_0x0cdd('0x3b')](_0x3e0c2b[_0x0cdd('0x31')],_0x64703e[_0x0cdd('0x33')]),_0xcfb5d4);if(_0x3e0c2b[_0x0cdd('0x31')]['filter']){_0x34b1b7[_0x0cdd('0x3a')]=_[_0x0cdd('0x3c')](_0x34b1b7[_0x0cdd('0x3a')],{'$or':_[_0x0cdd('0x2b')](_0xcfb5d4,function(_0x1181ae){if(_0x1181ae[_0x0cdd('0x3d')]!==_0x0cdd('0x3e')){var _0x2fe0b1={};_0x2fe0b1[_0x1181ae[_0x0cdd('0x2a')]]={'$like':'%'+_0x3e0c2b['query']['filter']+'%'};return _0x2fe0b1;}})});}_0x34b1b7=_[_0x0cdd('0x3c')]({},_0x34b1b7,_0x3e0c2b['options']);var _0x29c75c={'where':_0x34b1b7['where']};return db[_0x0cdd('0x2c')][_0x0cdd('0x1d')](_0x29c75c)['then'](function(_0x5f0333){_0x2addbd[_0x0cdd('0x1d')]=_0x5f0333;if(_0x3e0c2b[_0x0cdd('0x31')][_0x0cdd('0x3f')]){_0x34b1b7['include']=[{'all':!![]}];}return db[_0x0cdd('0x2c')][_0x0cdd('0x40')](_0x34b1b7);})[_0x0cdd('0x25')](function(_0x154089){_0x2addbd['rows']=_0x154089;return _0x2addbd;})[_0x0cdd('0x25')](respondWithFilteredResult(_0x56bc7c,_0x34b1b7))[_0x0cdd('0x41')](handleError(_0x56bc7c,null));};exports[_0x0cdd('0x42')]=function(_0x463c14,_0x5d7308){var _0x5c141a={'raw':![],'where':{'id':_0x463c14[_0x0cdd('0x43')]['id']}},_0xb4c618={};_0xb4c618[_0x0cdd('0x30')]=_[_0x0cdd('0x32')](db['SalesforceConfiguration'][_0x0cdd('0x2d')]);_0xb4c618['query']=_[_0x0cdd('0x32')](_0x463c14[_0x0cdd('0x31')]);_0xb4c618[_0x0cdd('0x33')]=_['intersection'](_0xb4c618['model'],_0xb4c618[_0x0cdd('0x31')]);_0x5c141a['attributes']=_[_0x0cdd('0x34')](_0xb4c618[_0x0cdd('0x30')],qs[_0x0cdd('0x36')](_0x463c14[_0x0cdd('0x31')][_0x0cdd('0x36')]));_0x5c141a[_0x0cdd('0x35')]=_0x5c141a[_0x0cdd('0x35')]['length']?_0x5c141a[_0x0cdd('0x35')]:_0xb4c618['model'];if(_0x463c14[_0x0cdd('0x31')][_0x0cdd('0x3f')]){_0x5c141a['include']=[{'all':!![]}];}_0x5c141a=_[_0x0cdd('0x3c')]({},_0x5c141a,_0x463c14['options']);return db[_0x0cdd('0x2c')][_0x0cdd('0x44')](_0x5c141a)[_0x0cdd('0x25')](handleEntityNotFound(_0x5d7308,null))[_0x0cdd('0x25')](respondWithResult(_0x5d7308,null))[_0x0cdd('0x41')](handleError(_0x5d7308,null));};exports[_0x0cdd('0x45')]=function(_0x2fe79e,_0x4399ac){return db['SalesforceConfiguration'][_0x0cdd('0x45')](_0x2fe79e[_0x0cdd('0x46')],{})[_0x0cdd('0x25')](respondWithResult(_0x4399ac,0xc9))[_0x0cdd('0x41')](handleError(_0x4399ac,null));};exports[_0x0cdd('0x24')]=function(_0x268c2a,_0x1fe831){if(_0x268c2a['body']['id']){delete _0x268c2a['body']['id'];}return db[_0x0cdd('0x2c')][_0x0cdd('0x44')]({'where':{'id':_0x268c2a[_0x0cdd('0x43')]['id']}})[_0x0cdd('0x25')](handleEntityNotFound(_0x1fe831,null))[_0x0cdd('0x25')](saveUpdates(_0x268c2a['body'],null))[_0x0cdd('0x25')](respondWithResult(_0x1fe831,null))[_0x0cdd('0x41')](handleError(_0x1fe831,null));};exports[_0x0cdd('0x26')]=function(_0x1239fd,_0x8868b1){return db[_0x0cdd('0x2c')][_0x0cdd('0x44')]({'where':{'id':_0x1239fd[_0x0cdd('0x43')]['id']}})[_0x0cdd('0x25')](handleEntityNotFound(_0x8868b1,null))[_0x0cdd('0x25')](removeEntity(_0x8868b1,null))['catch'](handleError(_0x8868b1,null));};exports['getFields']=function(_0xc0fb8a,_0x4a3135,_0x35cbed){var _0x51b93={};var _0x2a76ad={};var _0x2da255;var _0x25ba60;return db[_0x0cdd('0x2c')][_0x0cdd('0x47')]({'where':{'id':_0xc0fb8a[_0x0cdd('0x43')]['id']}})['then'](handleEntityNotFound(_0x4a3135,null))[_0x0cdd('0x25')](function(_0x427b4a){if(_0x427b4a){_0x2da255=_0x427b4a;_0x2a76ad[_0x0cdd('0x30')]=_['keys'](db[_0x0cdd('0x48')]['rawAttributes']);_0x2a76ad['query']=_[_0x0cdd('0x32')](_0xc0fb8a[_0x0cdd('0x31')]);_0x2a76ad[_0x0cdd('0x33')]=_[_0x0cdd('0x34')](_0x2a76ad[_0x0cdd('0x30')],_0x2a76ad[_0x0cdd('0x31')]);_0x51b93[_0x0cdd('0x35')]=_['intersection'](_0x2a76ad['model'],qs[_0x0cdd('0x36')](_0xc0fb8a[_0x0cdd('0x31')][_0x0cdd('0x36')]));_0x51b93['attributes']=_0x51b93[_0x0cdd('0x35')]['length']?_0x51b93[_0x0cdd('0x35')]:_0x2a76ad[_0x0cdd('0x30')];_0x51b93[_0x0cdd('0x49')]=qs[_0x0cdd('0x39')](_0xc0fb8a[_0x0cdd('0x31')][_0x0cdd('0x39')]);_0x51b93[_0x0cdd('0x3a')]=qs[_0x0cdd('0x33')](_['pick'](_0xc0fb8a['query'],_0x2a76ad[_0x0cdd('0x33')]));if(_0xc0fb8a[_0x0cdd('0x31')]['filter']){_0x51b93['where']=_[_0x0cdd('0x3c')](_0x51b93[_0x0cdd('0x3a')],{'$or':_['map'](_0x51b93[_0x0cdd('0x35')],function(_0x3fac1d){var _0x1bc02e={};_0x1bc02e[_0x3fac1d]={'$like':'%'+_0xc0fb8a[_0x0cdd('0x31')]['filter']+'%'};return _0x1bc02e;})});}_0x51b93=_[_0x0cdd('0x3c')]({},_0x51b93,_0xc0fb8a[_0x0cdd('0x4a')]);return _0x2da255['getFields'](_0x51b93);}})['then'](function(_0x38d8aa){if(_0x38d8aa){_0x25ba60=_0x38d8aa['length'];if(!_0xc0fb8a['query']['hasOwnProperty']('nolimit')){_0x51b93[_0x0cdd('0x1c')]=qs[_0x0cdd('0x1c')](_0xc0fb8a['query'][_0x0cdd('0x1c')]);_0x51b93[_0x0cdd('0x1b')]=qs[_0x0cdd('0x1b')](_0xc0fb8a['query'][_0x0cdd('0x1b')]);}return _0x2da255[_0x0cdd('0x4b')](_0x51b93);}})['then'](function(_0x41ff83){if(_0x41ff83){return _0x41ff83?{'count':_0x25ba60,'rows':_0x41ff83}:null;}})[_0x0cdd('0x25')](respondWithResult(_0x4a3135,null))[_0x0cdd('0x41')](handleError(_0x4a3135,null));};exports[_0x0cdd('0x4c')]=function(_0xb26c0,_0x1606e4,_0x16602c){var _0xca14d5={};var _0x27f9bb={};var _0x5df9ed;var _0x24326;return db[_0x0cdd('0x2c')]['findOne']({'where':{'id':_0xb26c0[_0x0cdd('0x43')]['id']}})[_0x0cdd('0x25')](handleEntityNotFound(_0x1606e4,null))['then'](function(_0x3f3b56){if(_0x3f3b56){_0x5df9ed=_0x3f3b56;_0x27f9bb[_0x0cdd('0x30')]=_[_0x0cdd('0x32')](db[_0x0cdd('0x48')][_0x0cdd('0x2d')]);_0x27f9bb[_0x0cdd('0x31')]=_[_0x0cdd('0x32')](_0xb26c0[_0x0cdd('0x31')]);_0x27f9bb[_0x0cdd('0x33')]=_[_0x0cdd('0x34')](_0x27f9bb[_0x0cdd('0x30')],_0x27f9bb[_0x0cdd('0x31')]);_0xca14d5[_0x0cdd('0x35')]=_[_0x0cdd('0x34')](_0x27f9bb[_0x0cdd('0x30')],qs[_0x0cdd('0x36')](_0xb26c0['query'][_0x0cdd('0x36')]));_0xca14d5['attributes']=_0xca14d5[_0x0cdd('0x35')][_0x0cdd('0x37')]?_0xca14d5[_0x0cdd('0x35')]:_0x27f9bb['model'];_0xca14d5['order']=qs[_0x0cdd('0x39')](_0xb26c0[_0x0cdd('0x31')][_0x0cdd('0x39')]);_0xca14d5[_0x0cdd('0x3a')]=qs[_0x0cdd('0x33')](_['pick'](_0xb26c0[_0x0cdd('0x31')],_0x27f9bb[_0x0cdd('0x33')]));if(_0xb26c0['query'][_0x0cdd('0x4d')]){_0xca14d5[_0x0cdd('0x3a')]=_[_0x0cdd('0x3c')](_0xca14d5[_0x0cdd('0x3a')],{'$or':_[_0x0cdd('0x2b')](_0xca14d5[_0x0cdd('0x35')],function(_0x14d7df){var _0x4ddb95={};_0x4ddb95[_0x14d7df]={'$like':'%'+_0xb26c0[_0x0cdd('0x31')]['filter']+'%'};return _0x4ddb95;})});}_0xca14d5=_[_0x0cdd('0x3c')]({},_0xca14d5,_0xb26c0[_0x0cdd('0x4a')]);return _0x5df9ed[_0x0cdd('0x4c')](_0xca14d5);}})[_0x0cdd('0x25')](function(_0x28e397){if(_0x28e397){_0x24326=_0x28e397[_0x0cdd('0x37')];if(!_0xb26c0[_0x0cdd('0x31')][_0x0cdd('0x4e')]('nolimit')){_0xca14d5[_0x0cdd('0x1c')]=qs['limit'](_0xb26c0[_0x0cdd('0x31')][_0x0cdd('0x1c')]);_0xca14d5[_0x0cdd('0x1b')]=qs[_0x0cdd('0x1b')](_0xb26c0[_0x0cdd('0x31')][_0x0cdd('0x1b')]);}return _0x5df9ed[_0x0cdd('0x4c')](_0xca14d5);}})[_0x0cdd('0x25')](function(_0x5e70c7){if(_0x5e70c7){return _0x5e70c7?{'count':_0x24326,'rows':_0x5e70c7}:null;}})['then'](respondWithResult(_0x1606e4,null))[_0x0cdd('0x41')](handleError(_0x1606e4,null));};exports[_0x0cdd('0x4f')]=function(_0x3af3c1,_0x166188,_0x2bbde8){var _0x1d659f={};var _0x327109={};var _0x494332;var _0x79f739;return db[_0x0cdd('0x2c')][_0x0cdd('0x47')]({'where':{'id':_0x3af3c1['params']['id']}})[_0x0cdd('0x25')](handleEntityNotFound(_0x166188,null))[_0x0cdd('0x25')](function(_0x267a34){if(_0x267a34){_0x494332=_0x267a34;_0x327109[_0x0cdd('0x30')]=_[_0x0cdd('0x32')](db[_0x0cdd('0x48')][_0x0cdd('0x2d')]);_0x327109[_0x0cdd('0x31')]=_[_0x0cdd('0x32')](_0x3af3c1[_0x0cdd('0x31')]);_0x327109[_0x0cdd('0x33')]=_[_0x0cdd('0x34')](_0x327109[_0x0cdd('0x30')],_0x327109[_0x0cdd('0x31')]);_0x1d659f[_0x0cdd('0x35')]=_[_0x0cdd('0x34')](_0x327109['model'],qs['fields'](_0x3af3c1['query'][_0x0cdd('0x36')]));_0x1d659f['attributes']=_0x1d659f[_0x0cdd('0x35')][_0x0cdd('0x37')]?_0x1d659f['attributes']:_0x327109[_0x0cdd('0x30')];_0x1d659f['order']=qs[_0x0cdd('0x39')](_0x3af3c1['query'][_0x0cdd('0x39')]);_0x1d659f[_0x0cdd('0x3a')]=qs[_0x0cdd('0x33')](_['pick'](_0x3af3c1['query'],_0x327109['filters']));if(_0x3af3c1['query'][_0x0cdd('0x4d')]){_0x1d659f['where']=_[_0x0cdd('0x3c')](_0x1d659f['where'],{'$or':_[_0x0cdd('0x2b')](_0x1d659f[_0x0cdd('0x35')],function(_0x55620a){var _0x580e54={};_0x580e54[_0x55620a]={'$like':'%'+_0x3af3c1[_0x0cdd('0x31')][_0x0cdd('0x4d')]+'%'};return _0x580e54;})});}_0x1d659f=_[_0x0cdd('0x3c')]({},_0x1d659f,_0x3af3c1['options']);return _0x494332[_0x0cdd('0x4f')](_0x1d659f);}})[_0x0cdd('0x25')](function(_0x646797){if(_0x646797){_0x79f739=_0x646797[_0x0cdd('0x37')];if(!_0x3af3c1['query'][_0x0cdd('0x4e')]('nolimit')){_0x1d659f[_0x0cdd('0x1c')]=qs[_0x0cdd('0x1c')](_0x3af3c1['query'][_0x0cdd('0x1c')]);_0x1d659f['offset']=qs[_0x0cdd('0x1b')](_0x3af3c1[_0x0cdd('0x31')][_0x0cdd('0x1b')]);}return _0x494332[_0x0cdd('0x4f')](_0x1d659f);}})[_0x0cdd('0x25')](function(_0x3646da){if(_0x3646da){return _0x3646da?{'count':_0x79f739,'rows':_0x3646da}:null;}})[_0x0cdd('0x25')](respondWithResult(_0x166188,null))[_0x0cdd('0x41')](handleError(_0x166188,null));};
\ No newline at end of file
index f9053af..42045b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbea7=['exports','int_salesforce_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intSalesforceConfiguration.attributes'];(function(_0x4ed520,_0x21be63){var _0x4415a6=function(_0x14b151){while(--_0x14b151){_0x4ed520['push'](_0x4ed520['shift']());}};_0x4415a6(++_0x21be63);}(_0xbea7,0x16a));var _0x7bea=function(_0x49ef98,_0x31ac68){_0x49ef98=_0x49ef98-0x0;var _0x5683fd=_0xbea7[_0x49ef98];return _0x5683fd;};'use strict';var _=require(_0x7bea('0x0'));var util=require(_0x7bea('0x1'));var logger=require(_0x7bea('0x2'))(_0x7bea('0x3'));var moment=require(_0x7bea('0x4'));var BPromise=require(_0x7bea('0x5'));var rp=require(_0x7bea('0x6'));var fs=require('fs');var path=require(_0x7bea('0x7'));var rimraf=require('rimraf');var config=require(_0x7bea('0x8'));var attributes=require(_0x7bea('0x9'));module[_0x7bea('0xa')]=function(_0x250ce8,_0x42e672){return _0x250ce8['define']('SalesforceConfiguration',attributes,{'tableName':_0x7bea('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd76c=['SalesforceConfiguration','int_salesforce_configurations','lodash','util','../../config/logger','api','request-promise','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports'];(function(_0x264d4d,_0x118fb5){var _0xc917e2=function(_0x21b9dc){while(--_0x21b9dc){_0x264d4d['push'](_0x264d4d['shift']());}};_0xc917e2(++_0x118fb5);}(_0xd76c,0xde));var _0xcd76=function(_0x47df54,_0x1aeb61){_0x47df54=_0x47df54-0x0;var _0x261b87=_0xd76c[_0x47df54];return _0x261b87;};'use strict';var _=require(_0xcd76('0x0'));var util=require(_0xcd76('0x1'));var logger=require(_0xcd76('0x2'))(_0xcd76('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xcd76('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcd76('0x5'));var config=require(_0xcd76('0x6'));var attributes=require(_0xcd76('0x7'));module[_0xcd76('0x8')]=function(_0x59fe10,_0x337a7e){return _0x59fe10['define'](_0xcd76('0x9'),attributes,{'tableName':_0xcd76('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 308d765..0eebeb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cf7=['result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent'];(function(_0x44c208,_0x7af421){var _0x278179=function(_0xf5fb13){while(--_0xf5fb13){_0x44c208['push'](_0x44c208['shift']());}};_0x278179(++_0x7af421);}(_0x7cf7,0x1e5));var _0x77cf=function(_0x6f96b6,_0x583f3b){_0x6f96b6=_0x6f96b6-0x0;var _0x39e017=_0x7cf7[_0x6f96b6];return _0x39e017;};'use strict';var _=require(_0x77cf('0x0'));var util=require(_0x77cf('0x1'));var moment=require(_0x77cf('0x2'));var BPromise=require(_0x77cf('0x3'));var rs=require(_0x77cf('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x77cf('0x5'))['db'];var utils=require(_0x77cf('0x6'));var logger=require(_0x77cf('0x7'))(_0x77cf('0x8'));var config=require('../../config/environment');var jayson=require(_0x77cf('0x9'));var client=jayson[_0x77cf('0xa')][_0x77cf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xa61a02,_0x2ac9e9,_0x40f034){return new BPromise(function(_0x3e296a,_0x2f7727){return client[_0x77cf('0xc')](_0xa61a02,_0x40f034)[_0x77cf('0xd')](function(_0x1cef61){logger[_0x77cf('0xe')](_0x77cf('0xf'),_0x2ac9e9,'request\x20sent');logger['debug'](_0x77cf('0x10'),_0x2ac9e9,'request\x20sent',JSON['stringify'](_0x1cef61));if(_0x1cef61[_0x77cf('0x11')]){if(_0x1cef61[_0x77cf('0x11')][_0x77cf('0x12')]===0x1f4){logger[_0x77cf('0x11')]('SalesforceConfiguration,\x20%s,\x20%s',_0x2ac9e9,_0x1cef61[_0x77cf('0x11')][_0x77cf('0x13')]);return _0x2f7727(_0x1cef61[_0x77cf('0x11')]['message']);}logger[_0x77cf('0x11')](_0x77cf('0xf'),_0x2ac9e9,_0x1cef61[_0x77cf('0x11')][_0x77cf('0x13')]);return _0x3e296a(_0x1cef61[_0x77cf('0x11')][_0x77cf('0x13')]);}else{logger['info'](_0x77cf('0xf'),_0x2ac9e9,_0x77cf('0x14'));_0x3e296a(_0x1cef61[_0x77cf('0x15')][_0x77cf('0x13')]);}})['catch'](function(_0x52e6b1){logger['error'](_0x77cf('0xf'),_0x2ac9e9,_0x52e6b1);_0x2f7727(_0x52e6b1);});});}
\ No newline at end of file
+var _0xb58c=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SalesforceConfiguration,\x20%s,\x20%s','message','catch','lodash'];(function(_0x16616,_0x3cbdbb){var _0x56da35=function(_0x3eb135){while(--_0x3eb135){_0x16616['push'](_0x16616['shift']());}};_0x56da35(++_0x3cbdbb);}(_0xb58c,0x15d));var _0xcb58=function(_0x35c45a,_0x18cca1){_0x35c45a=_0x35c45a-0x0;var _0x17c047=_0xb58c[_0x35c45a];return _0x17c047;};'use strict';var _=require(_0xcb58('0x0'));var util=require(_0xcb58('0x1'));var moment=require(_0xcb58('0x2'));var BPromise=require(_0xcb58('0x3'));var rs=require(_0xcb58('0x4'));var fs=require('fs');var Redis=require(_0xcb58('0x5'));var db=require(_0xcb58('0x6'))['db'];var utils=require(_0xcb58('0x7'));var logger=require('../../config/logger')(_0xcb58('0x8'));var config=require(_0xcb58('0x9'));var jayson=require(_0xcb58('0xa'));var client=jayson[_0xcb58('0xb')][_0xcb58('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xc7f06,_0x3cea9f,_0x20a49a){return new BPromise(function(_0x89d8ac,_0xe7b097){return client[_0xcb58('0xd')](_0xc7f06,_0x20a49a)[_0xcb58('0xe')](function(_0x5168d1){logger[_0xcb58('0xf')]('SalesforceConfiguration,\x20%s,\x20%s',_0x3cea9f,'request\x20sent');logger[_0xcb58('0x10')](_0xcb58('0x11'),_0x3cea9f,_0xcb58('0x12'),JSON[_0xcb58('0x13')](_0x5168d1));if(_0x5168d1[_0xcb58('0x14')]){if(_0x5168d1['error'][_0xcb58('0x15')]===0x1f4){logger[_0xcb58('0x14')](_0xcb58('0x16'),_0x3cea9f,_0x5168d1[_0xcb58('0x14')]['message']);return _0xe7b097(_0x5168d1[_0xcb58('0x14')][_0xcb58('0x17')]);}logger[_0xcb58('0x14')](_0xcb58('0x16'),_0x3cea9f,_0x5168d1[_0xcb58('0x14')]['message']);return _0x89d8ac(_0x5168d1[_0xcb58('0x14')][_0xcb58('0x17')]);}else{logger['info']('SalesforceConfiguration,\x20%s,\x20%s',_0x3cea9f,_0xcb58('0x12'));_0x89d8ac(_0x5168d1['result']['message']);}})[_0xcb58('0x18')](function(_0xb020fd){logger[_0xcb58('0x14')](_0xcb58('0x16'),_0x3cea9f,_0xb020fd);_0xe7b097(_0xb020fd);});});}
\ No newline at end of file
index b342691..5567086 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cb7=['../../components/interaction/service','get','index','/:id','isAuthenticated','show','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x5de84a,_0x4b82cb){var _0x46137c=function(_0x257b48){while(--_0x257b48){_0x5de84a['push'](_0x5de84a['shift']());}};_0x46137c(++_0x4b82cb);}(_0x6cb7,0x9b));var _0x76cb=function(_0x483761,_0x4abff8){_0x483761=_0x483761-0x0;var _0x531f98=_0x6cb7[_0x483761];return _0x531f98;};'use strict';var multer=require(_0x76cb('0x0'));var util=require(_0x76cb('0x1'));var path=require(_0x76cb('0x2'));var timeout=require(_0x76cb('0x3'));var express=require('express');var router=express[_0x76cb('0x4')]();var fs_extra=require(_0x76cb('0x5'));var auth=require(_0x76cb('0x6'));var interaction=require(_0x76cb('0x7'));var config=require('../../config/environment');var controller=require('./intSalesforceField.controller');router[_0x76cb('0x8')]('/',auth['isAuthenticated'](),controller[_0x76cb('0x9')]);router[_0x76cb('0x8')](_0x76cb('0xa'),auth[_0x76cb('0xb')](),controller[_0x76cb('0xc')]);router['post']('/',auth[_0x76cb('0xb')](),controller[_0x76cb('0xd')]);router['put'](_0x76cb('0xa'),auth[_0x76cb('0xb')](),controller[_0x76cb('0xe')]);router[_0x76cb('0xf')](_0x76cb('0xa'),auth[_0x76cb('0xb')](),controller[_0x76cb('0x10')]);module[_0x76cb('0x11')]=router;
\ No newline at end of file
+var _0x8b37=['create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intSalesforceField.controller','get','index','isAuthenticated','show','post'];(function(_0x345fc1,_0xb13dd1){var _0x46f20b=function(_0x5a7954){while(--_0x5a7954){_0x345fc1['push'](_0x345fc1['shift']());}};_0x46f20b(++_0xb13dd1);}(_0x8b37,0x197));var _0x78b3=function(_0x315756,_0x335548){_0x315756=_0x315756-0x0;var _0x905fc2=_0x8b37[_0x315756];return _0x905fc2;};'use strict';var multer=require('multer');var util=require(_0x78b3('0x0'));var path=require(_0x78b3('0x1'));var timeout=require(_0x78b3('0x2'));var express=require(_0x78b3('0x3'));var router=express[_0x78b3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x78b3('0x5'));var interaction=require(_0x78b3('0x6'));var config=require('../../config/environment');var controller=require(_0x78b3('0x7'));router[_0x78b3('0x8')]('/',auth['isAuthenticated'](),controller[_0x78b3('0x9')]);router[_0x78b3('0x8')]('/:id',auth[_0x78b3('0xa')](),controller[_0x78b3('0xb')]);router[_0x78b3('0xc')]('/',auth[_0x78b3('0xa')](),controller[_0x78b3('0xd')]);router[_0x78b3('0xe')](_0x78b3('0xf'),auth[_0x78b3('0xa')](),controller[_0x78b3('0x10')]);router[_0x78b3('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x78b3('0x12')]);module[_0x78b3('0x13')]=router;
\ No newline at end of file
index a98db9a..fdaffc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5828=['ENUM','variable','keyValue','picklist','string','STRING','customVariable','sequelize','exports'];(function(_0x50c492,_0x5c1e67){var _0x3505a8=function(_0x2f7937){while(--_0x2f7937){_0x50c492['push'](_0x50c492['shift']());}};_0x3505a8(++_0x5c1e67);}(_0x5828,0xa0));var _0x8582=function(_0x11dd13,_0x45d34d){_0x11dd13=_0x11dd13-0x0;var _0x58e5d8=_0x5828[_0x11dd13];return _0x58e5d8;};'use strict';var Sequelize=require(_0x8582('0x0'));module[_0x8582('0x1')]={'type':{'type':Sequelize[_0x8582('0x2')]('string',_0x8582('0x3'),'customVariable',_0x8582('0x4'),_0x8582('0x5')),'defaultValue':_0x8582('0x6')},'content':{'type':Sequelize[_0x8582('0x7')]},'key':{'type':Sequelize[_0x8582('0x7')]},'keyType':{'type':Sequelize[_0x8582('0x2')](_0x8582('0x6'),_0x8582('0x3'),_0x8582('0x8'))},'keyContent':{'type':Sequelize[_0x8582('0x7')]},'idField':{'type':Sequelize[_0x8582('0x7')]},'variableName':{'type':Sequelize[_0x8582('0x7')]}};
\ No newline at end of file
+var _0x7eba=['customVariable','keyValue','picklist','STRING','exports','ENUM','string','variable'];(function(_0x468cbd,_0x33d711){var _0x3f79fc=function(_0x491576){while(--_0x491576){_0x468cbd['push'](_0x468cbd['shift']());}};_0x3f79fc(++_0x33d711);}(_0x7eba,0x15c));var _0xa7eb=function(_0x5c13d0,_0x2efed8){_0x5c13d0=_0x5c13d0-0x0;var _0x5a4a51=_0x7eba[_0x5c13d0];return _0x5a4a51;};'use strict';var Sequelize=require('sequelize');module[_0xa7eb('0x0')]={'type':{'type':Sequelize[_0xa7eb('0x1')](_0xa7eb('0x2'),_0xa7eb('0x3'),_0xa7eb('0x4'),_0xa7eb('0x5'),_0xa7eb('0x6')),'defaultValue':_0xa7eb('0x2')},'content':{'type':Sequelize[_0xa7eb('0x7')]},'key':{'type':Sequelize[_0xa7eb('0x7')]},'keyType':{'type':Sequelize[_0xa7eb('0x1')]('string',_0xa7eb('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0xa7eb('0x7')]},'idField':{'type':Sequelize[_0xa7eb('0x7')]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3c6da5f..630e7e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5df8=['crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','map','SalesforceField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','include','rows','catch','show','fields','includeAll','options','create','body','params','destroy','find','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','fs-extra','squel'];(function(_0x150ae0,_0x17b63e){var _0x325074=function(_0x50c633){while(--_0x50c633){_0x150ae0['push'](_0x150ae0['shift']());}};_0x325074(++_0x17b63e);}(_0x5df8,0x8f));var _0x85df=function(_0x207151,_0x200b3c){_0x207151=_0x207151-0x0;var _0x2e21f2=_0x5df8[_0x207151];return _0x2e21f2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x85df('0x0'));var zipdir=require(_0x85df('0x1'));var jsonpatch=require(_0x85df('0x2'));var rp=require(_0x85df('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x85df('0x4'));var util=require('util');var path=require(_0x85df('0x5'));var sox=require(_0x85df('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x85df('0x7'));var _=require('lodash');var squel=require(_0x85df('0x8'));var crypto=require(_0x85df('0x9'));var jsforce=require(_0x85df('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x85df('0xb'));var querystring=require(_0x85df('0xc'));var Papa=require(_0x85df('0xd'));var Redis=require(_0x85df('0xe'));var authService=require(_0x85df('0xf'));var qs=require(_0x85df('0x10'));var as=require(_0x85df('0x11'));var hardwareService=require(_0x85df('0x12'));var logger=require(_0x85df('0x13'))(_0x85df('0x14'));var utils=require(_0x85df('0x15'));var config=require(_0x85df('0x16'));var licenseUtil=require(_0x85df('0x17'));var db=require(_0x85df('0x18'))['db'];function respondWithStatusCode(_0x417c35,_0x51a91a){_0x51a91a=_0x51a91a||0xcc;return function(_0x417b7f){if(_0x417b7f){return _0x417c35[_0x85df('0x19')](_0x51a91a);}return _0x417c35[_0x85df('0x1a')](_0x51a91a)[_0x85df('0x1b')]();};}function respondWithResult(_0x34af0e,_0x32edb2){_0x32edb2=_0x32edb2||0xc8;return function(_0x4a935c){if(_0x4a935c){return _0x34af0e[_0x85df('0x1a')](_0x32edb2)['json'](_0x4a935c);}};}function respondWithFilteredResult(_0x24d434,_0x5496ff){return function(_0x468437){if(_0x468437){var _0x24a1fd=typeof _0x5496ff['offset']==='undefined'&&typeof _0x5496ff[_0x85df('0x1c')]===_0x85df('0x1d');var _0x1df3e6=_0x468437[_0x85df('0x1e')];var _0x5b4739=_0x24a1fd?0x0:_0x5496ff['offset'];var _0x3ac8b5=_0x24a1fd?_0x468437[_0x85df('0x1e')]:_0x5496ff[_0x85df('0x1f')]+_0x5496ff[_0x85df('0x1c')];var _0x49046b;if(_0x3ac8b5>=_0x1df3e6){_0x3ac8b5=_0x1df3e6;_0x49046b=0xc8;}else{_0x49046b=0xce;}_0x24d434[_0x85df('0x1a')](_0x49046b);return _0x24d434[_0x85df('0x20')](_0x85df('0x21'),_0x5b4739+'-'+_0x3ac8b5+'/'+_0x1df3e6)['json'](_0x468437);}return null;};}function patchUpdates(_0x1e7659){return function(_0xf67aa3){try{jsonpatch[_0x85df('0x22')](_0xf67aa3,_0x1e7659,!![]);}catch(_0x1c395a){return BPromise[_0x85df('0x23')](_0x1c395a);}return _0xf67aa3[_0x85df('0x24')]();};}function saveUpdates(_0x51894f,_0x66558){return function(_0x2a3e50){if(_0x2a3e50){return _0x2a3e50[_0x85df('0x25')](_0x51894f)[_0x85df('0x26')](function(_0xbc29e6){return _0xbc29e6;});}return null;};}function removeEntity(_0x198232,_0x187485){return function(_0x2a5741){if(_0x2a5741){return _0x2a5741['destroy']()[_0x85df('0x26')](function(){_0x198232['status'](0xcc)[_0x85df('0x1b')]();});}};}function handleEntityNotFound(_0x14e3f5,_0x24a99d){return function(_0x4fcc35){if(!_0x4fcc35){_0x14e3f5[_0x85df('0x19')](0x194);}return _0x4fcc35;};}function handleError(_0x1725f6,_0x270648){_0x270648=_0x270648||0x1f4;return function(_0x3cbbbf){logger[_0x85df('0x27')](_0x3cbbbf[_0x85df('0x28')]);if(_0x3cbbbf[_0x85df('0x29')]){delete _0x3cbbbf[_0x85df('0x29')];}_0x1725f6[_0x85df('0x1a')](_0x270648)[_0x85df('0x2a')](_0x3cbbbf);};}exports['index']=function(_0x4dd3dc,_0x203ab8){var _0x3e4901={},_0x2c03b9={},_0x59166d={'count':0x0,'rows':[]};var _0x1412ac=_[_0x85df('0x2b')](db[_0x85df('0x2c')][_0x85df('0x2d')],function(_0x3a88aa){return{'name':_0x3a88aa[_0x85df('0x2e')],'type':_0x3a88aa[_0x85df('0x2f')][_0x85df('0x30')]};});_0x2c03b9[_0x85df('0x31')]=_[_0x85df('0x2b')](_0x1412ac,_0x85df('0x29'));_0x2c03b9[_0x85df('0x32')]=_[_0x85df('0x33')](_0x4dd3dc[_0x85df('0x32')]);_0x2c03b9[_0x85df('0x34')]=_[_0x85df('0x35')](_0x2c03b9[_0x85df('0x31')],_0x2c03b9['query']);_0x3e4901[_0x85df('0x36')]=_[_0x85df('0x35')](_0x2c03b9[_0x85df('0x31')],qs['fields'](_0x4dd3dc[_0x85df('0x32')]['fields']));_0x3e4901[_0x85df('0x36')]=_0x3e4901[_0x85df('0x36')][_0x85df('0x37')]?_0x3e4901[_0x85df('0x36')]:_0x2c03b9[_0x85df('0x31')];if(!_0x4dd3dc[_0x85df('0x32')]['hasOwnProperty'](_0x85df('0x38'))){_0x3e4901[_0x85df('0x1c')]=qs[_0x85df('0x1c')](_0x4dd3dc[_0x85df('0x32')][_0x85df('0x1c')]);_0x3e4901[_0x85df('0x1f')]=qs[_0x85df('0x1f')](_0x4dd3dc[_0x85df('0x32')]['offset']);}_0x3e4901[_0x85df('0x39')]=qs[_0x85df('0x3a')](_0x4dd3dc[_0x85df('0x32')][_0x85df('0x3a')]);_0x3e4901[_0x85df('0x3b')]=qs[_0x85df('0x34')](_[_0x85df('0x3c')](_0x4dd3dc['query'],_0x2c03b9[_0x85df('0x34')]),_0x1412ac);if(_0x4dd3dc[_0x85df('0x32')][_0x85df('0x3d')]){_0x3e4901[_0x85df('0x3b')]=_['merge'](_0x3e4901[_0x85df('0x3b')],{'$or':_[_0x85df('0x2b')](_0x1412ac,function(_0x151856){if(_0x151856[_0x85df('0x2f')]!==_0x85df('0x3e')){var _0x3bf7a3={};_0x3bf7a3[_0x151856[_0x85df('0x29')]]={'$like':'%'+_0x4dd3dc[_0x85df('0x32')][_0x85df('0x3d')]+'%'};return _0x3bf7a3;}})});}_0x3e4901=_[_0x85df('0x3f')]({},_0x3e4901,_0x4dd3dc['options']);var _0x1e4bd7={'where':_0x3e4901[_0x85df('0x3b')]};return db['SalesforceField'][_0x85df('0x1e')](_0x1e4bd7)['then'](function(_0x2bf4ff){_0x59166d[_0x85df('0x1e')]=_0x2bf4ff;if(_0x4dd3dc['query']['includeAll']){_0x3e4901[_0x85df('0x40')]=[{'all':!![]}];}return db[_0x85df('0x2c')]['findAll'](_0x3e4901);})['then'](function(_0xc64fc5){_0x59166d[_0x85df('0x41')]=_0xc64fc5;return _0x59166d;})[_0x85df('0x26')](respondWithFilteredResult(_0x203ab8,_0x3e4901))[_0x85df('0x42')](handleError(_0x203ab8,null));};exports[_0x85df('0x43')]=function(_0x66dcf4,_0x252abc){var _0x5d9527={'raw':!![],'where':{'id':_0x66dcf4['params']['id']}},_0x10ad43={};_0x10ad43[_0x85df('0x31')]=_['keys'](db['SalesforceField'][_0x85df('0x2d')]);_0x10ad43['query']=_['keys'](_0x66dcf4[_0x85df('0x32')]);_0x10ad43[_0x85df('0x34')]=_['intersection'](_0x10ad43[_0x85df('0x31')],_0x10ad43[_0x85df('0x32')]);_0x5d9527[_0x85df('0x36')]=_[_0x85df('0x35')](_0x10ad43['model'],qs['fields'](_0x66dcf4[_0x85df('0x32')][_0x85df('0x44')]));_0x5d9527[_0x85df('0x36')]=_0x5d9527[_0x85df('0x36')][_0x85df('0x37')]?_0x5d9527[_0x85df('0x36')]:_0x10ad43['model'];if(_0x66dcf4[_0x85df('0x32')][_0x85df('0x45')]){_0x5d9527[_0x85df('0x40')]=[{'all':!![]}];}_0x5d9527=_[_0x85df('0x3f')]({},_0x5d9527,_0x66dcf4[_0x85df('0x46')]);return db[_0x85df('0x2c')]['find'](_0x5d9527)[_0x85df('0x26')](handleEntityNotFound(_0x252abc,null))[_0x85df('0x26')](respondWithResult(_0x252abc,null))[_0x85df('0x42')](handleError(_0x252abc,null));};exports[_0x85df('0x47')]=function(_0xc6dfb9,_0x152a56){return db[_0x85df('0x2c')][_0x85df('0x47')](_0xc6dfb9[_0x85df('0x48')],{})[_0x85df('0x26')](respondWithResult(_0x152a56,0xc9))['catch'](handleError(_0x152a56,null));};exports['update']=function(_0x217976,_0x13c5d4){if(_0x217976[_0x85df('0x48')]['id']){delete _0x217976['body']['id'];}return db[_0x85df('0x2c')]['find']({'where':{'id':_0x217976[_0x85df('0x49')]['id']}})['then'](handleEntityNotFound(_0x13c5d4,null))[_0x85df('0x26')](saveUpdates(_0x217976[_0x85df('0x48')],null))[_0x85df('0x26')](respondWithResult(_0x13c5d4,null))[_0x85df('0x42')](handleError(_0x13c5d4,null));};exports[_0x85df('0x4a')]=function(_0x51e002,_0x9dda5c){return db[_0x85df('0x2c')][_0x85df('0x4b')]({'where':{'id':_0x51e002[_0x85df('0x49')]['id']}})['then'](handleEntityNotFound(_0x9dda5c,null))[_0x85df('0x26')](removeEntity(_0x9dda5c,null))[_0x85df('0x42')](handleError(_0x9dda5c,null));};
\ No newline at end of file
+var _0x258f=['filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','SalesforceField','includeAll','findAll','rows','catch','params','length','include','options','find','create','body','destroy','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/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','error','stack','name','index','map','fieldName','type','key','query','keys'];(function(_0x17c241,_0x1bf660){var _0x472397=function(_0x5cf779){while(--_0x5cf779){_0x17c241['push'](_0x17c241['shift']());}};_0x472397(++_0x1bf660);}(_0x258f,0x6a));var _0xf258=function(_0x4d600f,_0x3cbf8a){_0x4d600f=_0x4d600f-0x0;var _0x4c2104=_0x258f[_0x4d600f];return _0x4c2104;};'use strict';var emlformat=require(_0xf258('0x0'));var rimraf=require(_0xf258('0x1'));var zipdir=require(_0xf258('0x2'));var jsonpatch=require(_0xf258('0x3'));var rp=require(_0xf258('0x4'));var moment=require(_0xf258('0x5'));var BPromise=require(_0xf258('0x6'));var Mustache=require(_0xf258('0x7'));var util=require(_0xf258('0x8'));var path=require(_0xf258('0x9'));var sox=require(_0xf258('0xa'));var csv=require(_0xf258('0xb'));var ejs=require(_0xf258('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf258('0xd'));var squel=require(_0xf258('0xe'));var crypto=require(_0xf258('0xf'));var jsforce=require(_0xf258('0x10'));var deskjs=require(_0xf258('0x11'));var toCsv=require(_0xf258('0xb'));var querystring=require(_0xf258('0x12'));var Papa=require(_0xf258('0x13'));var Redis=require(_0xf258('0x14'));var authService=require(_0xf258('0x15'));var qs=require(_0xf258('0x16'));var as=require(_0xf258('0x17'));var hardwareService=require(_0xf258('0x18'));var logger=require(_0xf258('0x19'))(_0xf258('0x1a'));var utils=require(_0xf258('0x1b'));var config=require('../../config/environment');var licenseUtil=require(_0xf258('0x1c'));var db=require(_0xf258('0x1d'))['db'];function respondWithStatusCode(_0x10dcb2,_0x515a93){_0x515a93=_0x515a93||0xcc;return function(_0x1b4424){if(_0x1b4424){return _0x10dcb2[_0xf258('0x1e')](_0x515a93);}return _0x10dcb2[_0xf258('0x1f')](_0x515a93)[_0xf258('0x20')]();};}function respondWithResult(_0x5ab92a,_0x31cbce){_0x31cbce=_0x31cbce||0xc8;return function(_0x48a7b9){if(_0x48a7b9){return _0x5ab92a[_0xf258('0x1f')](_0x31cbce)[_0xf258('0x21')](_0x48a7b9);}};}function respondWithFilteredResult(_0x4689c8,_0x2f3e88){return function(_0x361771){if(_0x361771){var _0x1dc46b=typeof _0x2f3e88[_0xf258('0x22')]===_0xf258('0x23')&&typeof _0x2f3e88[_0xf258('0x24')]==='undefined';var _0x28b1e0=_0x361771[_0xf258('0x25')];var _0x4ec0e6=_0x1dc46b?0x0:_0x2f3e88[_0xf258('0x22')];var _0x4cbb0e=_0x1dc46b?_0x361771[_0xf258('0x25')]:_0x2f3e88['offset']+_0x2f3e88[_0xf258('0x24')];var _0x166049;if(_0x4cbb0e>=_0x28b1e0){_0x4cbb0e=_0x28b1e0;_0x166049=0xc8;}else{_0x166049=0xce;}_0x4689c8[_0xf258('0x1f')](_0x166049);return _0x4689c8[_0xf258('0x26')]('Content-Range',_0x4ec0e6+'-'+_0x4cbb0e+'/'+_0x28b1e0)[_0xf258('0x21')](_0x361771);}return null;};}function patchUpdates(_0x3ac54c){return function(_0x47e859){try{jsonpatch[_0xf258('0x27')](_0x47e859,_0x3ac54c,!![]);}catch(_0xcc8b25){return BPromise[_0xf258('0x28')](_0xcc8b25);}return _0x47e859[_0xf258('0x29')]();};}function saveUpdates(_0x4b5935,_0x4a89ce){return function(_0x4f62f0){if(_0x4f62f0){return _0x4f62f0[_0xf258('0x2a')](_0x4b5935)[_0xf258('0x2b')](function(_0xcec83c){return _0xcec83c;});}return null;};}function removeEntity(_0x463379,_0x219e4d){return function(_0x1fc9d5){if(_0x1fc9d5){return _0x1fc9d5['destroy']()[_0xf258('0x2b')](function(){_0x463379['status'](0xcc)[_0xf258('0x20')]();});}};}function handleEntityNotFound(_0x232af4,_0x2d9a48){return function(_0xf6fd79){if(!_0xf6fd79){_0x232af4[_0xf258('0x1e')](0x194);}return _0xf6fd79;};}function handleError(_0xaae0bc,_0x1bdaa1){_0x1bdaa1=_0x1bdaa1||0x1f4;return function(_0x290858){logger[_0xf258('0x2c')](_0x290858[_0xf258('0x2d')]);if(_0x290858['name']){delete _0x290858[_0xf258('0x2e')];}_0xaae0bc[_0xf258('0x1f')](_0x1bdaa1)['send'](_0x290858);};}exports[_0xf258('0x2f')]=function(_0x37ca2d,_0x17aff9){var _0x5459ff={},_0x1365d0={},_0x3cabab={'count':0x0,'rows':[]};var _0x34d197=_[_0xf258('0x30')](db['SalesforceField']['rawAttributes'],function(_0x278ddc){return{'name':_0x278ddc[_0xf258('0x31')],'type':_0x278ddc[_0xf258('0x32')][_0xf258('0x33')]};});_0x1365d0['model']=_[_0xf258('0x30')](_0x34d197,'name');_0x1365d0[_0xf258('0x34')]=_[_0xf258('0x35')](_0x37ca2d[_0xf258('0x34')]);_0x1365d0[_0xf258('0x36')]=_[_0xf258('0x37')](_0x1365d0[_0xf258('0x38')],_0x1365d0[_0xf258('0x34')]);_0x5459ff[_0xf258('0x39')]=_[_0xf258('0x37')](_0x1365d0['model'],qs[_0xf258('0x3a')](_0x37ca2d[_0xf258('0x34')][_0xf258('0x3a')]));_0x5459ff[_0xf258('0x39')]=_0x5459ff[_0xf258('0x39')]['length']?_0x5459ff[_0xf258('0x39')]:_0x1365d0[_0xf258('0x38')];if(!_0x37ca2d['query']['hasOwnProperty'](_0xf258('0x3b'))){_0x5459ff[_0xf258('0x24')]=qs[_0xf258('0x24')](_0x37ca2d[_0xf258('0x34')][_0xf258('0x24')]);_0x5459ff[_0xf258('0x22')]=qs[_0xf258('0x22')](_0x37ca2d[_0xf258('0x34')]['offset']);}_0x5459ff[_0xf258('0x3c')]=qs[_0xf258('0x3d')](_0x37ca2d[_0xf258('0x34')]['sort']);_0x5459ff[_0xf258('0x3e')]=qs[_0xf258('0x36')](_[_0xf258('0x3f')](_0x37ca2d[_0xf258('0x34')],_0x1365d0[_0xf258('0x36')]),_0x34d197);if(_0x37ca2d[_0xf258('0x34')][_0xf258('0x40')]){_0x5459ff[_0xf258('0x3e')]=_[_0xf258('0x41')](_0x5459ff[_0xf258('0x3e')],{'$or':_[_0xf258('0x30')](_0x34d197,function(_0x4466b0){if(_0x4466b0[_0xf258('0x32')]!==_0xf258('0x42')){var _0x36eca0={};_0x36eca0[_0x4466b0[_0xf258('0x2e')]]={'$like':'%'+_0x37ca2d[_0xf258('0x34')][_0xf258('0x40')]+'%'};return _0x36eca0;}})});}_0x5459ff=_['merge']({},_0x5459ff,_0x37ca2d['options']);var _0x71bc63={'where':_0x5459ff[_0xf258('0x3e')]};return db[_0xf258('0x43')]['count'](_0x71bc63)[_0xf258('0x2b')](function(_0x484b92){_0x3cabab[_0xf258('0x25')]=_0x484b92;if(_0x37ca2d[_0xf258('0x34')][_0xf258('0x44')]){_0x5459ff['include']=[{'all':!![]}];}return db[_0xf258('0x43')][_0xf258('0x45')](_0x5459ff);})[_0xf258('0x2b')](function(_0x44b36e){_0x3cabab[_0xf258('0x46')]=_0x44b36e;return _0x3cabab;})['then'](respondWithFilteredResult(_0x17aff9,_0x5459ff))[_0xf258('0x47')](handleError(_0x17aff9,null));};exports['show']=function(_0x3ac04d,_0x45f316){var _0x8396b9={'raw':!![],'where':{'id':_0x3ac04d[_0xf258('0x48')]['id']}},_0xffb0a4={};_0xffb0a4['model']=_[_0xf258('0x35')](db['SalesforceField']['rawAttributes']);_0xffb0a4['query']=_[_0xf258('0x35')](_0x3ac04d[_0xf258('0x34')]);_0xffb0a4[_0xf258('0x36')]=_['intersection'](_0xffb0a4[_0xf258('0x38')],_0xffb0a4[_0xf258('0x34')]);_0x8396b9[_0xf258('0x39')]=_[_0xf258('0x37')](_0xffb0a4[_0xf258('0x38')],qs[_0xf258('0x3a')](_0x3ac04d['query'][_0xf258('0x3a')]));_0x8396b9[_0xf258('0x39')]=_0x8396b9[_0xf258('0x39')][_0xf258('0x49')]?_0x8396b9[_0xf258('0x39')]:_0xffb0a4[_0xf258('0x38')];if(_0x3ac04d[_0xf258('0x34')]['includeAll']){_0x8396b9[_0xf258('0x4a')]=[{'all':!![]}];}_0x8396b9=_[_0xf258('0x41')]({},_0x8396b9,_0x3ac04d[_0xf258('0x4b')]);return db[_0xf258('0x43')][_0xf258('0x4c')](_0x8396b9)[_0xf258('0x2b')](handleEntityNotFound(_0x45f316,null))['then'](respondWithResult(_0x45f316,null))[_0xf258('0x47')](handleError(_0x45f316,null));};exports[_0xf258('0x4d')]=function(_0x3e5bac,_0x3aec9c){return db['SalesforceField'][_0xf258('0x4d')](_0x3e5bac[_0xf258('0x4e')],{})['then'](respondWithResult(_0x3aec9c,0xc9))[_0xf258('0x47')](handleError(_0x3aec9c,null));};exports[_0xf258('0x2a')]=function(_0x25c8b2,_0x178baf){if(_0x25c8b2[_0xf258('0x4e')]['id']){delete _0x25c8b2[_0xf258('0x4e')]['id'];}return db['SalesforceField'][_0xf258('0x4c')]({'where':{'id':_0x25c8b2[_0xf258('0x48')]['id']}})[_0xf258('0x2b')](handleEntityNotFound(_0x178baf,null))['then'](saveUpdates(_0x25c8b2['body'],null))[_0xf258('0x2b')](respondWithResult(_0x178baf,null))[_0xf258('0x47')](handleError(_0x178baf,null));};exports[_0xf258('0x4f')]=function(_0x370217,_0xaa628){return db[_0xf258('0x43')][_0xf258('0x4c')]({'where':{'id':_0x370217[_0xf258('0x48')]['id']}})['then'](handleEntityNotFound(_0xaa628,null))[_0xf258('0x2b')](removeEntity(_0xaa628,null))[_0xf258('0x47')](handleError(_0xaa628,null));};
\ No newline at end of file
index d7f8d95..f5500bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bc0=['SalesforceField','int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','../../config/environment','exports','define'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x0bc0,0x185));var _0x00bc=function(_0x29105c,_0x1dd29f){_0x29105c=_0x29105c-0x0;var _0x16be8d=_0x0bc0[_0x29105c];return _0x16be8d;};'use strict';var _=require(_0x00bc('0x0'));var util=require('util');var logger=require(_0x00bc('0x1'))(_0x00bc('0x2'));var moment=require(_0x00bc('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x00bc('0x4'));var attributes=require('./intSalesforceField.attributes');module[_0x00bc('0x5')]=function(_0x4c660f,_0x4f2cf0){return _0x4c660f[_0x00bc('0x6')](_0x00bc('0x7'),attributes,{'tableName':_0x00bc('0x8'),'paranoid':![],'indexes':[{'name':_0x00bc('0x9'),'fields':[_0x00bc('0xa'),_0x00bc('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc661=['request-promise','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField','salesforce_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x157e04,_0x1b6077){var _0x4d52e5=function(_0x5df5aa){while(--_0x5df5aa){_0x157e04['push'](_0x157e04['shift']());}};_0x4d52e5(++_0x1b6077);}(_0xc661,0x1a3));var _0x1c66=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xc661[_0x5f309e];return _0x487b5e;};'use strict';var _=require(_0x1c66('0x0'));var util=require(_0x1c66('0x1'));var logger=require(_0x1c66('0x2'))(_0x1c66('0x3'));var moment=require(_0x1c66('0x4'));var BPromise=require(_0x1c66('0x5'));var rp=require(_0x1c66('0x6'));var fs=require('fs');var path=require(_0x1c66('0x7'));var rimraf=require(_0x1c66('0x8'));var config=require(_0x1c66('0x9'));var attributes=require(_0x1c66('0xa'));module[_0x1c66('0xb')]=function(_0x299000,_0x290e09){return _0x299000[_0x1c66('0xc')](_0x1c66('0xd'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x1c66('0xe'),'fields':[_0x1c66('0xf'),_0x1c66('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 5687d14..4f503fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b8c=['SalesforceField,\x20%s,\x20%s','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','info'];(function(_0x3f82f1,_0x4736ce){var _0x166acc=function(_0x5e4643){while(--_0x5e4643){_0x3f82f1['push'](_0x3f82f1['shift']());}};_0x166acc(++_0x4736ce);}(_0x7b8c,0x1ca));var _0xc7b8=function(_0x4a40df,_0x2bc615){_0x4a40df=_0x4a40df-0x0;var _0x6fa54d=_0x7b8c[_0x4a40df];return _0x6fa54d;};'use strict';var _=require('lodash');var util=require(_0xc7b8('0x0'));var moment=require(_0xc7b8('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc7b8('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xc7b8('0x3'))('rpc');var config=require(_0xc7b8('0x4'));var jayson=require('jayson/promise');var client=jayson[_0xc7b8('0x5')][_0xc7b8('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x33c565,_0x266392,_0x326ee0){return new BPromise(function(_0x3d0288,_0x4b529f){return client[_0xc7b8('0x7')](_0x33c565,_0x326ee0)[_0xc7b8('0x8')](function(_0x26a2a1){logger[_0xc7b8('0x9')](_0xc7b8('0xa'),_0x266392,_0xc7b8('0xb'));logger['debug'](_0xc7b8('0xc'),_0x266392,'request\x20sent',JSON[_0xc7b8('0xd')](_0x26a2a1));if(_0x26a2a1['error']){if(_0x26a2a1[_0xc7b8('0xe')][_0xc7b8('0xf')]===0x1f4){logger[_0xc7b8('0xe')](_0xc7b8('0xa'),_0x266392,_0x26a2a1[_0xc7b8('0xe')][_0xc7b8('0x10')]);return _0x4b529f(_0x26a2a1[_0xc7b8('0xe')][_0xc7b8('0x10')]);}logger[_0xc7b8('0xe')](_0xc7b8('0xa'),_0x266392,_0x26a2a1[_0xc7b8('0xe')][_0xc7b8('0x10')]);return _0x3d0288(_0x26a2a1[_0xc7b8('0xe')][_0xc7b8('0x10')]);}else{logger[_0xc7b8('0x9')](_0xc7b8('0xa'),_0x266392,_0xc7b8('0xb'));_0x3d0288(_0x26a2a1[_0xc7b8('0x11')][_0xc7b8('0x10')]);}})['catch'](function(_0x463b15){logger['error'](_0xc7b8('0xa'),_0x266392,_0x463b15);_0x4b529f(_0x463b15);});});}
\ No newline at end of file
+var _0x3d44=['../../config/utils','rpc','../../config/environment','jayson/promise','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x108a1c,_0x46ff83){var _0x33fe18=function(_0x215749){while(--_0x215749){_0x108a1c['push'](_0x108a1c['shift']());}};_0x33fe18(++_0x46ff83);}(_0x3d44,0x1ae));var _0x43d4=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0x3d44[_0xbd08b4];return _0x314f1e;};'use strict';var _=require(_0x43d4('0x0'));var util=require(_0x43d4('0x1'));var moment=require(_0x43d4('0x2'));var BPromise=require(_0x43d4('0x3'));var rs=require(_0x43d4('0x4'));var fs=require('fs');var Redis=require(_0x43d4('0x5'));var db=require(_0x43d4('0x6'))['db'];var utils=require(_0x43d4('0x7'));var logger=require('../../config/logger')(_0x43d4('0x8'));var config=require(_0x43d4('0x9'));var jayson=require(_0x43d4('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x42d6d0,_0x454780,_0x311764){return new BPromise(function(_0x3909b9,_0x2265ba){return client[_0x43d4('0xb')](_0x42d6d0,_0x311764)[_0x43d4('0xc')](function(_0x230d48){logger[_0x43d4('0xd')](_0x43d4('0xe'),_0x454780,_0x43d4('0xf'));logger[_0x43d4('0x10')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x454780,_0x43d4('0xf'),JSON[_0x43d4('0x11')](_0x230d48));if(_0x230d48[_0x43d4('0x12')]){if(_0x230d48[_0x43d4('0x12')][_0x43d4('0x13')]===0x1f4){logger[_0x43d4('0x12')](_0x43d4('0xe'),_0x454780,_0x230d48[_0x43d4('0x12')]['message']);return _0x2265ba(_0x230d48[_0x43d4('0x12')][_0x43d4('0x14')]);}logger[_0x43d4('0x12')](_0x43d4('0xe'),_0x454780,_0x230d48[_0x43d4('0x12')]['message']);return _0x3909b9(_0x230d48[_0x43d4('0x12')]['message']);}else{logger[_0x43d4('0xd')](_0x43d4('0xe'),_0x454780,'request\x20sent');_0x3909b9(_0x230d48[_0x43d4('0x15')][_0x43d4('0x14')]);}})[_0x43d4('0x16')](function(_0xfc8582){logger[_0x43d4('0x12')](_0x43d4('0xe'),_0x454780,_0xfc8582);_0x2265ba(_0xfc8582);});});}
\ No newline at end of file
index fa50e27..c0aab7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x765b=['put','/:id','update','delete','exports','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','getConfigurations','post','create','addConfiguration'];(function(_0x34a830,_0x49cf81){var _0x511238=function(_0x594e1a){while(--_0x594e1a){_0x34a830['push'](_0x34a830['shift']());}};_0x511238(++_0x49cf81);}(_0x765b,0x18c));var _0xb765=function(_0x4191af,_0x5783da){_0x4191af=_0x4191af-0x0;var _0x27bebf=_0x765b[_0x4191af];return _0x27bebf;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xb765('0x0'));var express=require('express');var router=express[_0xb765('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xb765('0x2'));var interaction=require(_0xb765('0x3'));var config=require(_0xb765('0x4'));var controller=require('./intServicenowAccount.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xb765('0x5')]('/:id',auth[_0xb765('0x6')](),controller[_0xb765('0x7')]);router[_0xb765('0x5')]('/:id/configurations',auth[_0xb765('0x6')](),controller[_0xb765('0x8')]);router[_0xb765('0x5')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0xb765('0x9')]('/',auth[_0xb765('0x6')](),controller[_0xb765('0xa')]);router[_0xb765('0x9')]('/:id/configurations',auth[_0xb765('0x6')](),controller[_0xb765('0xb')]);router[_0xb765('0xc')](_0xb765('0xd'),auth[_0xb765('0x6')](),controller[_0xb765('0xe')]);router[_0xb765('0xf')](_0xb765('0xd'),auth[_0xb765('0x6')](),controller['destroy']);module[_0xb765('0x10')]=router;
\ No newline at end of file
+var _0x1dc1=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/configurations','/:id/fields','post','create','update','delete','destroy','multer','util','connect-timeout'];(function(_0x390fd1,_0x43d99a){var _0x467158=function(_0x46cafd){while(--_0x46cafd){_0x390fd1['push'](_0x390fd1['shift']());}};_0x467158(++_0x43d99a);}(_0x1dc1,0x66));var _0x11dc=function(_0x25c64b,_0x5987ce){_0x25c64b=_0x25c64b-0x0;var _0x2516cf=_0x1dc1[_0x25c64b];return _0x2516cf;};'use strict';var multer=require(_0x11dc('0x0'));var util=require(_0x11dc('0x1'));var path=require('path');var timeout=require(_0x11dc('0x2'));var express=require(_0x11dc('0x3'));var router=express[_0x11dc('0x4')]();var fs_extra=require(_0x11dc('0x5'));var auth=require(_0x11dc('0x6'));var interaction=require(_0x11dc('0x7'));var config=require(_0x11dc('0x8'));var controller=require('./intServicenowAccount.controller');router[_0x11dc('0x9')]('/',auth['isAuthenticated'](),controller[_0x11dc('0xa')]);router[_0x11dc('0x9')](_0x11dc('0xb'),auth[_0x11dc('0xc')](),controller[_0x11dc('0xd')]);router[_0x11dc('0x9')](_0x11dc('0xe'),auth[_0x11dc('0xc')](),controller['getConfigurations']);router[_0x11dc('0x9')](_0x11dc('0xf'),auth[_0x11dc('0xc')](),controller['getFields']);router[_0x11dc('0x10')]('/',auth['isAuthenticated'](),controller[_0x11dc('0x11')]);router[_0x11dc('0x10')]('/:id/configurations',auth[_0x11dc('0xc')](),controller['addConfiguration']);router['put'](_0x11dc('0xb'),auth[_0x11dc('0xc')](),controller[_0x11dc('0x12')]);router[_0x11dc('0x13')](_0x11dc('0xb'),auth[_0x11dc('0xc')](),controller[_0x11dc('0x14')]);module['exports']=router;
\ No newline at end of file
index b1e19d6..8e0e8f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e1d=['STRING','username','remoteUri','sequelize'];(function(_0x5d8089,_0x432da6){var _0x45e5a5=function(_0x5b21a7){while(--_0x5b21a7){_0x5d8089['push'](_0x5d8089['shift']());}};_0x45e5a5(++_0x432da6);}(_0x9e1d,0x133));var _0xd9e1=function(_0x1c7579,_0x857b0c){_0x1c7579=_0x1c7579-0x0;var _0x4773aa=_0x9e1d[_0x1c7579];return _0x4773aa;};'use strict';var Sequelize=require(_0xd9e1('0x0'));module['exports']={'name':{'type':Sequelize[_0xd9e1('0x1')]},'description':{'type':Sequelize[_0xd9e1('0x1')]},'username':{'type':Sequelize[_0xd9e1('0x1')],'unique':_0xd9e1('0x2')},'password':{'type':Sequelize[_0xd9e1('0x1')]},'email':{'type':Sequelize[_0xd9e1('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xd9e1('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x5703=['username','remoteUri','STRING'];(function(_0x19ac6e,_0x435862){var _0x1cdcf3=function(_0x23151c){while(--_0x23151c){_0x19ac6e['push'](_0x19ac6e['shift']());}};_0x1cdcf3(++_0x435862);}(_0x5703,0xf2));var _0x3570=function(_0x27ad3e,_0x15f1a8){_0x27ad3e=_0x27ad3e-0x0;var _0x1777bd=_0x5703[_0x27ad3e];return _0x1777bd;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x3570('0x0')],'unique':_0x3570('0x1')},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x3570('0x0')]},'remoteUri':{'type':Sequelize[_0x3570('0x0')],'unique':_0x3570('0x2')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 59cc851..826b622 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2604=['user_input','sys_created_on','sys_domain','state','sys_created_by','calendar_stc','cmdb_ci','delivery_plan','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','business_duration','group_list','work_end','reopened_time','resolved_at','approval_set','work_notes','short_description','delivery_task','work_start','assignment_group','additional_assignee_list','description','sys_class_name','close_notes','closed_by','parent_incident','sys_id','contact_type','reopened_by','urgency','problem_id','company','reassignment_count','activity_due','comments','sla_due','comments_and_work_notes','reopen_count','sys_tags','escalation','upon_approval','correlation_id','username','password','email','remoteUri','serverUrl','slice','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','GET','incident?sysparm_display_value=all','result','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','label','push','all','TCL:\x20_object','log','concat','ServiceNow\x20error:\x20','test','statusCode','boolean','true','False','sys_choice?sysparm_query=name=incident^element=','inactive','false','value','eml-format','rimraf','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','map','key','query','keys','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filters','where','merge','VIRTUAL','filter','options','ServicenowAccount','includeAll','findAll','rows','show','params','rawAttributes','length','include','find','catch','create','body','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','ServicenowField','getFields','made_sla','hold_reason','knowledge','close_code','notify','incident_state','severity','category','parent','caused_by','watch_list','upon_reject','sys_updated_on','approval_history','number','sys_updated_by','opened_by'];(function(_0x2ebb6d,_0x6f9bfe){var _0x2b1e9a=function(_0x270607){while(--_0x270607){_0x2ebb6d['push'](_0x2ebb6d['shift']());}};_0x2b1e9a(++_0x6f9bfe);}(_0x2604,0x10d));var _0x4260=function(_0x587d9a,_0x5dedc5){_0x587d9a=_0x587d9a-0x0;var _0x13802a=_0x2604[_0x587d9a];return _0x13802a;};'use strict';var emlformat=require(_0x4260('0x0'));var rimraf=require(_0x4260('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4260('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x4260('0x3'));var util=require(_0x4260('0x4'));var path=require(_0x4260('0x5'));var sox=require(_0x4260('0x6'));var csv=require(_0x4260('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4260('0x8'));var _=require(_0x4260('0x9'));var squel=require(_0x4260('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4260('0xb'));var toCsv=require('to-csv');var querystring=require(_0x4260('0xc'));var Papa=require(_0x4260('0xd'));var Redis=require(_0x4260('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x4260('0xf'));var as=require(_0x4260('0x10'));var hardwareService=require(_0x4260('0x11'));var logger=require(_0x4260('0x12'))(_0x4260('0x13'));var utils=require(_0x4260('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x4260('0x15'));var db=require(_0x4260('0x16'))['db'];var integrations=require(_0x4260('0x17'));function respondWithStatusCode(_0x558c39,_0x305873){_0x305873=_0x305873||0xcc;return function(_0x3380bd){if(_0x3380bd){return _0x558c39[_0x4260('0x18')](_0x305873);}return _0x558c39[_0x4260('0x19')](_0x305873)[_0x4260('0x1a')]();};}function respondWithResult(_0x5553cf,_0x6e6a45){_0x6e6a45=_0x6e6a45||0xc8;return function(_0x95785f){if(_0x95785f){return _0x5553cf[_0x4260('0x19')](_0x6e6a45)[_0x4260('0x1b')](_0x95785f);}};}function respondWithFilteredResult(_0x337682,_0x5af751){return function(_0x50365b){if(_0x50365b){var _0x5d9ca7=typeof _0x5af751[_0x4260('0x1c')]===_0x4260('0x1d')&&typeof _0x5af751[_0x4260('0x1e')]===_0x4260('0x1d');var _0x2f3563=_0x50365b[_0x4260('0x1f')];var _0x2f34df=_0x5d9ca7?0x0:_0x5af751[_0x4260('0x1c')];var _0x4f6c84=_0x5d9ca7?_0x50365b[_0x4260('0x1f')]:_0x5af751[_0x4260('0x1c')]+_0x5af751[_0x4260('0x1e')];var _0x4bb232;if(_0x4f6c84>=_0x2f3563){_0x4f6c84=_0x2f3563;_0x4bb232=0xc8;}else{_0x4bb232=0xce;}_0x337682['status'](_0x4bb232);return _0x337682['set'](_0x4260('0x20'),_0x2f34df+'-'+_0x4f6c84+'/'+_0x2f3563)[_0x4260('0x1b')](_0x50365b);}return null;};}function patchUpdates(_0x460cb8){return function(_0x2bad09){try{jsonpatch[_0x4260('0x21')](_0x2bad09,_0x460cb8,!![]);}catch(_0x5c1ff1){return BPromise['reject'](_0x5c1ff1);}return _0x2bad09[_0x4260('0x22')]();};}function saveUpdates(_0x25d207,_0x3f09d9){return function(_0x1b8808){if(_0x1b8808){return _0x1b8808[_0x4260('0x23')](_0x25d207)['then'](function(_0x141077){return _0x141077;});}return null;};}function removeEntity(_0x316cc6,_0x79116a){return function(_0x4663e5){if(_0x4663e5){return _0x4663e5[_0x4260('0x24')]()[_0x4260('0x25')](function(){_0x316cc6[_0x4260('0x19')](0xcc)[_0x4260('0x1a')]();});}};}function handleEntityNotFound(_0x1ae393,_0x3eb2ff){return function(_0x375a0f){if(!_0x375a0f){_0x1ae393[_0x4260('0x18')](0x194);}return _0x375a0f;};}function handleError(_0x386d42,_0x103fae){_0x103fae=_0x103fae||0x1f4;return function(_0x452bb0){logger[_0x4260('0x26')](_0x452bb0[_0x4260('0x27')]);if(_0x452bb0[_0x4260('0x28')]){delete _0x452bb0[_0x4260('0x28')];}_0x386d42[_0x4260('0x19')](_0x103fae)[_0x4260('0x29')](_0x452bb0);};}exports[_0x4260('0x2a')]=function(_0x452df8,_0x46cf12){var _0xe6cd57={},_0x3d7ce6={},_0x2d01a8={'count':0x0,'rows':[]};var _0x1e4f48=_[_0x4260('0x2b')](db['ServicenowAccount']['rawAttributes'],function(_0x1e60ca){return{'name':_0x1e60ca['fieldName'],'type':_0x1e60ca['type'][_0x4260('0x2c')]};});_0x3d7ce6['model']=_[_0x4260('0x2b')](_0x1e4f48,_0x4260('0x28'));_0x3d7ce6[_0x4260('0x2d')]=_[_0x4260('0x2e')](_0x452df8[_0x4260('0x2d')]);_0x3d7ce6['filters']=_[_0x4260('0x2f')](_0x3d7ce6[_0x4260('0x30')],_0x3d7ce6[_0x4260('0x2d')]);_0xe6cd57['attributes']=_[_0x4260('0x2f')](_0x3d7ce6[_0x4260('0x30')],qs[_0x4260('0x31')](_0x452df8[_0x4260('0x2d')][_0x4260('0x31')]));_0xe6cd57[_0x4260('0x32')]=_0xe6cd57['attributes']['length']?_0xe6cd57[_0x4260('0x32')]:_0x3d7ce6['model'];if(!_0x452df8[_0x4260('0x2d')][_0x4260('0x33')](_0x4260('0x34'))){_0xe6cd57['limit']=qs[_0x4260('0x1e')](_0x452df8[_0x4260('0x2d')][_0x4260('0x1e')]);_0xe6cd57[_0x4260('0x1c')]=qs[_0x4260('0x1c')](_0x452df8['query']['offset']);}_0xe6cd57[_0x4260('0x35')]=qs[_0x4260('0x36')](_0x452df8[_0x4260('0x2d')][_0x4260('0x36')]);_0xe6cd57['where']=qs['filters'](_[_0x4260('0x37')](_0x452df8[_0x4260('0x2d')],_0x3d7ce6[_0x4260('0x38')]),_0x1e4f48);if(_0x452df8[_0x4260('0x2d')]['filter']){_0xe6cd57[_0x4260('0x39')]=_[_0x4260('0x3a')](_0xe6cd57[_0x4260('0x39')],{'$or':_[_0x4260('0x2b')](_0x1e4f48,function(_0x15e906){if(_0x15e906['type']!==_0x4260('0x3b')){var _0x162eb5={};_0x162eb5[_0x15e906[_0x4260('0x28')]]={'$like':'%'+_0x452df8[_0x4260('0x2d')][_0x4260('0x3c')]+'%'};return _0x162eb5;}})});}_0xe6cd57=_['merge']({},_0xe6cd57,_0x452df8[_0x4260('0x3d')]);var _0xa3fb43={'where':_0xe6cd57['where']};return db[_0x4260('0x3e')]['count'](_0xa3fb43)[_0x4260('0x25')](function(_0x51f2ba){_0x2d01a8[_0x4260('0x1f')]=_0x51f2ba;if(_0x452df8[_0x4260('0x2d')][_0x4260('0x3f')]){_0xe6cd57['include']=[{'all':!![]}];}return db[_0x4260('0x3e')][_0x4260('0x40')](_0xe6cd57);})[_0x4260('0x25')](function(_0x25238f){_0x2d01a8[_0x4260('0x41')]=_0x25238f;return _0x2d01a8;})[_0x4260('0x25')](respondWithFilteredResult(_0x46cf12,_0xe6cd57))['catch'](handleError(_0x46cf12,null));};exports[_0x4260('0x42')]=function(_0x5a254b,_0x3861ba){var _0x1c54da={'raw':![],'where':{'id':_0x5a254b[_0x4260('0x43')]['id']}},_0x13bd56={};_0x13bd56[_0x4260('0x30')]=_[_0x4260('0x2e')](db[_0x4260('0x3e')][_0x4260('0x44')]);_0x13bd56['query']=_['keys'](_0x5a254b[_0x4260('0x2d')]);_0x13bd56[_0x4260('0x38')]=_[_0x4260('0x2f')](_0x13bd56['model'],_0x13bd56[_0x4260('0x2d')]);_0x1c54da['attributes']=_[_0x4260('0x2f')](_0x13bd56[_0x4260('0x30')],qs[_0x4260('0x31')](_0x5a254b[_0x4260('0x2d')][_0x4260('0x31')]));_0x1c54da[_0x4260('0x32')]=_0x1c54da['attributes'][_0x4260('0x45')]?_0x1c54da[_0x4260('0x32')]:_0x13bd56[_0x4260('0x30')];if(_0x5a254b[_0x4260('0x2d')][_0x4260('0x3f')]){_0x1c54da[_0x4260('0x46')]=[{'all':!![]}];}_0x1c54da=_[_0x4260('0x3a')]({},_0x1c54da,_0x5a254b[_0x4260('0x3d')]);return db[_0x4260('0x3e')][_0x4260('0x47')](_0x1c54da)[_0x4260('0x25')](handleEntityNotFound(_0x3861ba,null))[_0x4260('0x25')](respondWithResult(_0x3861ba,null))[_0x4260('0x48')](handleError(_0x3861ba,null));};exports[_0x4260('0x49')]=function(_0x541445,_0x33c0de){return db[_0x4260('0x3e')][_0x4260('0x49')](_0x541445[_0x4260('0x4a')],{})[_0x4260('0x25')](respondWithResult(_0x33c0de,0xc9))[_0x4260('0x48')](handleError(_0x33c0de,null));};exports[_0x4260('0x23')]=function(_0x405c03,_0x5c58a5){if(_0x405c03[_0x4260('0x4a')]['id']){delete _0x405c03[_0x4260('0x4a')]['id'];}return db['ServicenowAccount'][_0x4260('0x47')]({'where':{'id':_0x405c03[_0x4260('0x43')]['id']}})[_0x4260('0x25')](handleEntityNotFound(_0x5c58a5,null))[_0x4260('0x25')](saveUpdates(_0x405c03[_0x4260('0x4a')],null))[_0x4260('0x25')](respondWithResult(_0x5c58a5,null))[_0x4260('0x48')](handleError(_0x5c58a5,null));};exports[_0x4260('0x24')]=function(_0x93aa6b,_0x3d1ac5){return db['ServicenowAccount']['find']({'where':{'id':_0x93aa6b[_0x4260('0x43')]['id']}})[_0x4260('0x25')](handleEntityNotFound(_0x3d1ac5,null))[_0x4260('0x25')](removeEntity(_0x3d1ac5,null))[_0x4260('0x48')](handleError(_0x3d1ac5,null));};exports[_0x4260('0x4b')]=function(_0x18832f,_0x36bc0e,_0x4c5d49){var _0x2eda32={};var _0x4212ed={};var _0x4db45d;var _0x1a340e;return db['ServicenowAccount'][_0x4260('0x4c')]({'where':{'id':_0x18832f['params']['id']}})[_0x4260('0x25')](handleEntityNotFound(_0x36bc0e,null))[_0x4260('0x25')](function(_0x1abd0a){if(_0x1abd0a){_0x4db45d=_0x1abd0a;_0x4212ed['model']=_['keys'](db[_0x4260('0x4d')][_0x4260('0x44')]);_0x4212ed[_0x4260('0x2d')]=_[_0x4260('0x2e')](_0x18832f[_0x4260('0x2d')]);_0x4212ed[_0x4260('0x38')]=_['intersection'](_0x4212ed[_0x4260('0x30')],_0x4212ed[_0x4260('0x2d')]);_0x2eda32['attributes']=_['intersection'](_0x4212ed[_0x4260('0x30')],qs[_0x4260('0x31')](_0x18832f[_0x4260('0x2d')][_0x4260('0x31')]));_0x2eda32[_0x4260('0x32')]=_0x2eda32[_0x4260('0x32')]['length']?_0x2eda32[_0x4260('0x32')]:_0x4212ed[_0x4260('0x30')];_0x2eda32['order']=qs[_0x4260('0x36')](_0x18832f[_0x4260('0x2d')][_0x4260('0x36')]);_0x2eda32[_0x4260('0x39')]=qs[_0x4260('0x38')](_['pick'](_0x18832f[_0x4260('0x2d')],_0x4212ed[_0x4260('0x38')]));if(_0x18832f['query'][_0x4260('0x3c')]){_0x2eda32[_0x4260('0x39')]=_[_0x4260('0x3a')](_0x2eda32[_0x4260('0x39')],{'$or':_['map'](_0x2eda32[_0x4260('0x32')],function(_0x1425a0){var _0x56280b={};_0x56280b[_0x1425a0]={'$like':'%'+_0x18832f['query'][_0x4260('0x3c')]+'%'};return _0x56280b;})});}_0x2eda32=_[_0x4260('0x3a')]({},_0x2eda32,_0x18832f[_0x4260('0x3d')]);return _0x4db45d[_0x4260('0x4b')](_0x2eda32);}})[_0x4260('0x25')](function(_0x5192a7){if(_0x5192a7){_0x1a340e=_0x5192a7[_0x4260('0x45')];if(!_0x18832f[_0x4260('0x2d')][_0x4260('0x33')]('nolimit')){_0x2eda32[_0x4260('0x1e')]=qs[_0x4260('0x1e')](_0x18832f['query'][_0x4260('0x1e')]);_0x2eda32['offset']=qs['offset'](_0x18832f[_0x4260('0x2d')]['offset']);}return _0x4db45d[_0x4260('0x4b')](_0x2eda32);}})[_0x4260('0x25')](function(_0x323046){if(_0x323046){return _0x323046?{'count':_0x1a340e,'rows':_0x323046}:null;}})[_0x4260('0x25')](respondWithResult(_0x36bc0e,null))[_0x4260('0x48')](handleError(_0x36bc0e,null));};exports[_0x4260('0x4e')]=function(_0x24214b,_0x4892e5,_0x59d37e){if(_0x24214b[_0x4260('0x4a')]['id']){delete _0x24214b['body']['id'];}return db['ServicenowAccount']['findOne']({'where':{'id':_0x24214b[_0x4260('0x43')]['id']}})[_0x4260('0x25')](handleEntityNotFound(_0x4892e5,null))[_0x4260('0x25')](function(_0x1d605f){if(_0x1d605f){_0x24214b[_0x4260('0x4a')][_0x4260('0x4f')]=_0x1d605f['id'];_0x24214b[_0x4260('0x4a')][_0x4260('0x50')]=integrations[_0x4260('0x51')](_0x24214b[_0x4260('0x4a')][_0x4260('0x52')],_0x24214b[_0x4260('0x4a')]['type']);_0x24214b[_0x4260('0x4a')][_0x4260('0x53')]=integrations['getDescriptions'](_0x24214b['body'][_0x4260('0x52')],_0x24214b[_0x4260('0x4a')]['type']);return db[_0x4260('0x4d')][_0x4260('0x49')](_0x24214b['body'],{'include':[{'model':db[_0x4260('0x54')],'as':_0x4260('0x50')},{'model':db[_0x4260('0x54')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x4892e5,null))[_0x4260('0x48')](handleError(_0x4892e5,null));};exports[_0x4260('0x55')]=function(_0xf9e33,_0x141cc4,_0x4f71be){var _0x17a5c6=[_0x4260('0x56'),_0x4260('0x57'),_0x4260('0x58'),'subcategory',_0x4260('0x59'),_0x4260('0x5a'),_0x4260('0x5b'),_0x4260('0x5c'),_0x4260('0x5d')];var _0x2920bd=[_0x4260('0x5e'),_0x4260('0x56'),_0x4260('0x5f'),_0x4260('0x60'),_0x4260('0x61'),_0x4260('0x62'),'child_incidents',_0x4260('0x57'),_0x4260('0x63'),_0x4260('0x64'),'resolved_by',_0x4260('0x65'),_0x4260('0x66'),_0x4260('0x67'),_0x4260('0x68'),_0x4260('0x69'),_0x4260('0x6a'),_0x4260('0x6b'),_0x4260('0x58'),_0x4260('0x35'),_0x4260('0x6c'),'closed_at',_0x4260('0x6d'),_0x4260('0x6e'),'impact','active',_0x4260('0x6f'),_0x4260('0x70'),_0x4260('0x71'),_0x4260('0x72'),_0x4260('0x73'),_0x4260('0x74'),_0x4260('0x75'),'opened_at',_0x4260('0x76'),_0x4260('0x77'),_0x4260('0x78'),_0x4260('0x79'),_0x4260('0x7a'),'caller_id',_0x4260('0x7b'),'subcategory',_0x4260('0x7c'),_0x4260('0x7d'),_0x4260('0x59'),'correlation_display',_0x4260('0x7e'),_0x4260('0x7f'),_0x4260('0x80'),'business_stc',_0x4260('0x81'),_0x4260('0x82'),'calendar_duration','notify',_0x4260('0x83'),_0x4260('0x84'),_0x4260('0x85'),'follow_up',_0x4260('0x86'),_0x4260('0x87'),_0x4260('0x88'),_0x4260('0x89'),'incident_state',_0x4260('0x8a'),_0x4260('0x8b'),_0x4260('0x8c'),_0x4260('0x8d'),_0x4260('0x8e'),'assigned_to',_0x4260('0x5c'),_0x4260('0x8f'),_0x4260('0x90'),'approval',_0x4260('0x91'),'due_date','sys_mod_count',_0x4260('0x92'),_0x4260('0x93'),_0x4260('0x94'),_0x4260('0x95'),_0x4260('0x96'),'location',_0x4260('0x5d')];var _0x3935d2='';var _0x59b92='';var _0x2f6ca1=[];var _0x552c6b='';var _0x125b7a='';var _0x35dfb8=[];var _0x140ba7='';var _0x2f6a5d='';var _0x1abfdf={};var _0x471cba='';return db[_0x4260('0x3e')][_0x4260('0x4c')]({'where':{'id':_0xf9e33[_0x4260('0x43')]['id']},'attributes':['id',_0x4260('0x97'),_0x4260('0x98'),_0x4260('0x99'),_0x4260('0x9a'),_0x4260('0x9b')]})[_0x4260('0x25')](handleEntityNotFound(_0x141cc4,null))[_0x4260('0x25')](function(_0x3ceb48){if(_0x3ceb48){_0x471cba=_0x3ceb48[_0x4260('0x9a')];var _0xfca740=_0x471cba[_0x4260('0x9c')](-0x1);if(_0xfca740==='/'){_0x471cba=_0x471cba[_0x4260('0x9d')](0x0,_0x471cba[_0x4260('0x9e')](_0xfca740));}_0x2f6a5d=util[_0x4260('0x9f')](_0x4260('0xa0'),_0x471cba);_0x140ba7=util['format']('%s/api/now/table/',_0x471cba);_0x1abfdf={'user':_0x3ceb48[_0x4260('0x97')],'pass':_0x3ceb48[_0x4260('0x98')]};var _0x458780={'method':_0x4260('0xa1'),'uri':_0x2f6a5d+_0x4260('0xa2'),'auth':_0x1abfdf,'json':!![]};return rp(_0x458780);}})[_0x4260('0x25')](function(_0x5b9c83){if(_0x5b9c83['result']['length']>0x0){_0x3935d2=_0x5b9c83[_0x4260('0xa3')];}console['log'](_0x4260('0xa4'),_0x3935d2);_0x35dfb8=[];_0x59b92=Object[_0x4260('0xa5')]([],_0x3935d2);_[_0x4260('0xa6')](_0x59b92,function(_0x1981a0){return!_0x17a5c6[_0x4260('0xa7')](_0x1981a0[_0x4260('0x28')]);});_0x59b92[_0x4260('0xa8')](function(_0x45ef3f){var _0x376561=createFieldObject(_0x140ba7,_0x1abfdf,_0x45ef3f[_0x4260('0xa9')],_0x45ef3f[_0x4260('0x28')],_0x45ef3f[_0x4260('0xaa')],![]);_0x35dfb8[_0x4260('0xab')](_0x376561);});return Promise[_0x4260('0xac')](_0x35dfb8);})[_0x4260('0x25')](function(_0x58ac4a){_0x2f6ca1=_0x58ac4a;_0x552c6b=Object[_0x4260('0xa5')]([],_0x3935d2);console['log'](_0x4260('0xad'),_0x3935d2);_[_0x4260('0xa6')](_0x552c6b,function(_0x12dd0c){return _0x2920bd[_0x4260('0xa7')](_0x12dd0c[_0x4260('0x28')]);});console[_0x4260('0xae')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x552c6b);_0x35dfb8=[];_0x552c6b[_0x4260('0xa8')](function(_0x52b1a1){var _0x4e3d02=createFieldObject(_0x140ba7,_0x1abfdf,_0x52b1a1[_0x4260('0xa9')],_0x52b1a1[_0x4260('0x28')],_0x52b1a1[_0x4260('0xaa')],!![]);_0x35dfb8[_0x4260('0xab')](_0x4e3d02);});return Promise['all'](_0x35dfb8);})[_0x4260('0x25')](function(_0x576995){_0x125b7a=_0x576995;var _0x209fbe=_0x2f6ca1[_0x4260('0xaf')](_0x125b7a);return{'count':_0x209fbe[_0x4260('0x45')],'rows':_0x209fbe};})[_0x4260('0x25')](respondWithResult(_0x141cc4,null))[_0x4260('0x48')](function(_0x5d7960){console['log'](_0x4260('0xb0')+_0x5d7960);var _0x2b9b11=_0xf9e33[_0x4260('0x2d')][_0x4260('0xb1')]?0x1f4:_0x5d7960[_0x4260('0xb2')]||0x1f4;logger[_0x4260('0x26')](_0x5d7960[_0x4260('0x27')]);delete _0x5d7960[_0x4260('0x28')];if(_0x2b9b11===0x191){_0x2b9b11=0x190;}_0x141cc4[_0x4260('0x19')](_0x2b9b11)['send'](_0xf9e33['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x5d7960['statusCode']}:_0x5d7960);});};function createFieldObject(_0x55935a,_0x479b70,_0x292c27,_0x585039,_0x3d3dfd,_0x2ab520){return new Promise(function(_0x2075b9,_0x260944){var _0x373db7={'id':_0x585039,'name':_0x3d3dfd,'custom':_0x2ab520};if(_0x292c27===_0x4260('0xb3')){_0x373db7[_0x4260('0x3d')]=[{'name':'True','value':_0x4260('0xb4')},{'name':_0x4260('0xb5'),'value':'false'}];_0x2075b9(_0x373db7);}else{var _0x202194={'method':'GET','uri':_0x55935a+_0x4260('0xb6')+_0x585039,'auth':_0x479b70,'json':!![]};return rp(_0x202194)['then'](function(_0x38f636){var _0x40c477=[];if(_0x38f636['result']['length']>0x0){_0x38f636[_0x4260('0xa3')][_0x4260('0xa8')](function(_0xb8f977){if(_0xb8f977[_0x4260('0xb7')]===_0x4260('0xb8')){var _0x31a298={'name':_0xb8f977['label'],'value':_0xb8f977[_0x4260('0xb9')]};_0x40c477[_0x4260('0xab')](_0x31a298);}});}_0x373db7['options']=_0x40c477;if(_0x373db7['options']['length']>0x0){_0x2075b9(_0x373db7);}else{if(_0x2ab520==![]){_0x2075b9();}else{_0x2075b9(_0x373db7);}}});}});}
\ No newline at end of file
+var _0x110e=['fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','ServicenowAccount','includeAll','findAll','rows','show','params','rawAttributes','options','find','create','body','catch','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','Subjects','getSubjects','type','Descriptions','channel','getFields','made_sla','hold_reason','knowledge','subcategory','close_code','notify','incident_state','category','parent','watch_list','upon_reject','sys_updated_on','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','state','sys_created_by','calendar_stc','cmdb_ci','delivery_plan','impact','active','business_service','priority','time_worked','expected_start','opened_at','business_duration','group_list','reopened_time','resolved_at','approval_set','work_notes','short_description','correlation_display','delivery_task','work_start','assignment_group','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident','reopened_by','urgency','problem_id','company','reassignment_count','assigned_to','comments','approval','sys_tags','escalation','upon_approval','location','username','password','remoteUri','serverUrl','slice','substring','lastIndexOf','%s/api/now/doc/table/schema/','format','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','push','all','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','label','concat','ServiceNow\x20error:\x20','test','Wrong\x20credentials','statusCode','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','value','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','fieldName','model','query','keys','filters','intersection'];(function(_0x23094e,_0x2ef7a3){var _0x45a253=function(_0x5a335c){while(--_0x5a335c){_0x23094e['push'](_0x23094e['shift']());}};_0x45a253(++_0x2ef7a3);}(_0x110e,0x1ee));var _0xe110=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x110e[_0x178e48];return _0x440d7e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe110('0x0'));var jsonpatch=require(_0xe110('0x1'));var rp=require('request-promise');var moment=require(_0xe110('0x2'));var BPromise=require(_0xe110('0x3'));var Mustache=require(_0xe110('0x4'));var util=require(_0xe110('0x5'));var path=require(_0xe110('0x6'));var sox=require(_0xe110('0x7'));var csv=require('to-csv');var ejs=require(_0xe110('0x8'));var fs=require('fs');var fs_extra=require(_0xe110('0x9'));var _=require(_0xe110('0xa'));var squel=require(_0xe110('0xb'));var crypto=require(_0xe110('0xc'));var jsforce=require(_0xe110('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe110('0xe'));var querystring=require('querystring');var Papa=require(_0xe110('0xf'));var Redis=require(_0xe110('0x10'));var authService=require(_0xe110('0x11'));var qs=require(_0xe110('0x12'));var as=require(_0xe110('0x13'));var hardwareService=require(_0xe110('0x14'));var logger=require('../../config/logger')(_0xe110('0x15'));var utils=require(_0xe110('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe110('0x17'))['db'];var integrations=require(_0xe110('0x18'));function respondWithStatusCode(_0x1e0ee8,_0x515fe6){_0x515fe6=_0x515fe6||0xcc;return function(_0x5574a0){if(_0x5574a0){return _0x1e0ee8[_0xe110('0x19')](_0x515fe6);}return _0x1e0ee8[_0xe110('0x1a')](_0x515fe6)[_0xe110('0x1b')]();};}function respondWithResult(_0x28cf02,_0x2ec768){_0x2ec768=_0x2ec768||0xc8;return function(_0x7ff726){if(_0x7ff726){return _0x28cf02[_0xe110('0x1a')](_0x2ec768)[_0xe110('0x1c')](_0x7ff726);}};}function respondWithFilteredResult(_0xb306bf,_0x424712){return function(_0x1b4d51){if(_0x1b4d51){var _0x3cd6b7=typeof _0x424712[_0xe110('0x1d')]==='undefined'&&typeof _0x424712[_0xe110('0x1e')]===_0xe110('0x1f');var _0x4c003d=_0x1b4d51[_0xe110('0x20')];var _0x46f1f4=_0x3cd6b7?0x0:_0x424712[_0xe110('0x1d')];var _0x594548=_0x3cd6b7?_0x1b4d51[_0xe110('0x20')]:_0x424712[_0xe110('0x1d')]+_0x424712[_0xe110('0x1e')];var _0x34e38c;if(_0x594548>=_0x4c003d){_0x594548=_0x4c003d;_0x34e38c=0xc8;}else{_0x34e38c=0xce;}_0xb306bf['status'](_0x34e38c);return _0xb306bf[_0xe110('0x21')](_0xe110('0x22'),_0x46f1f4+'-'+_0x594548+'/'+_0x4c003d)[_0xe110('0x1c')](_0x1b4d51);}return null;};}function patchUpdates(_0xdc4574){return function(_0x175016){try{jsonpatch[_0xe110('0x23')](_0x175016,_0xdc4574,!![]);}catch(_0x556c3e){return BPromise[_0xe110('0x24')](_0x556c3e);}return _0x175016[_0xe110('0x25')]();};}function saveUpdates(_0x204242,_0x16e88f){return function(_0x5629b5){if(_0x5629b5){return _0x5629b5['update'](_0x204242)[_0xe110('0x26')](function(_0x4fed30){return _0x4fed30;});}return null;};}function removeEntity(_0x3b4b9f,_0xac0064){return function(_0x45b612){if(_0x45b612){return _0x45b612[_0xe110('0x27')]()['then'](function(){_0x3b4b9f[_0xe110('0x1a')](0xcc)[_0xe110('0x1b')]();});}};}function handleEntityNotFound(_0x45475c,_0x419d56){return function(_0x4d1d55){if(!_0x4d1d55){_0x45475c[_0xe110('0x19')](0x194);}return _0x4d1d55;};}function handleError(_0x5f0f3f,_0x268d88){_0x268d88=_0x268d88||0x1f4;return function(_0x5ef9ad){logger[_0xe110('0x28')](_0x5ef9ad[_0xe110('0x29')]);if(_0x5ef9ad[_0xe110('0x2a')]){delete _0x5ef9ad[_0xe110('0x2a')];}_0x5f0f3f[_0xe110('0x1a')](_0x268d88)[_0xe110('0x2b')](_0x5ef9ad);};}exports[_0xe110('0x2c')]=function(_0x10e761,_0x51dca8){var _0x29b52b={},_0x1141a6={},_0x31adbe={'count':0x0,'rows':[]};var _0x4cf7c9=_[_0xe110('0x2d')](db['ServicenowAccount']['rawAttributes'],function(_0x4e8d58){return{'name':_0x4e8d58[_0xe110('0x2e')],'type':_0x4e8d58['type']['key']};});_0x1141a6[_0xe110('0x2f')]=_[_0xe110('0x2d')](_0x4cf7c9,_0xe110('0x2a'));_0x1141a6[_0xe110('0x30')]=_[_0xe110('0x31')](_0x10e761[_0xe110('0x30')]);_0x1141a6[_0xe110('0x32')]=_[_0xe110('0x33')](_0x1141a6[_0xe110('0x2f')],_0x1141a6[_0xe110('0x30')]);_0x29b52b['attributes']=_['intersection'](_0x1141a6[_0xe110('0x2f')],qs[_0xe110('0x34')](_0x10e761[_0xe110('0x30')][_0xe110('0x34')]));_0x29b52b['attributes']=_0x29b52b[_0xe110('0x35')][_0xe110('0x36')]?_0x29b52b['attributes']:_0x1141a6[_0xe110('0x2f')];if(!_0x10e761[_0xe110('0x30')][_0xe110('0x37')](_0xe110('0x38'))){_0x29b52b[_0xe110('0x1e')]=qs[_0xe110('0x1e')](_0x10e761['query'][_0xe110('0x1e')]);_0x29b52b['offset']=qs[_0xe110('0x1d')](_0x10e761[_0xe110('0x30')][_0xe110('0x1d')]);}_0x29b52b[_0xe110('0x39')]=qs[_0xe110('0x3a')](_0x10e761[_0xe110('0x30')][_0xe110('0x3a')]);_0x29b52b[_0xe110('0x3b')]=qs[_0xe110('0x32')](_[_0xe110('0x3c')](_0x10e761[_0xe110('0x30')],_0x1141a6[_0xe110('0x32')]),_0x4cf7c9);if(_0x10e761[_0xe110('0x30')][_0xe110('0x3d')]){_0x29b52b[_0xe110('0x3b')]=_[_0xe110('0x3e')](_0x29b52b['where'],{'$or':_[_0xe110('0x2d')](_0x4cf7c9,function(_0x1fd822){if(_0x1fd822['type']!==_0xe110('0x3f')){var _0x2c50cb={};_0x2c50cb[_0x1fd822[_0xe110('0x2a')]]={'$like':'%'+_0x10e761[_0xe110('0x30')][_0xe110('0x3d')]+'%'};return _0x2c50cb;}})});}_0x29b52b=_[_0xe110('0x3e')]({},_0x29b52b,_0x10e761['options']);var _0x530c75={'where':_0x29b52b[_0xe110('0x3b')]};return db[_0xe110('0x40')][_0xe110('0x20')](_0x530c75)[_0xe110('0x26')](function(_0x1d335f){_0x31adbe[_0xe110('0x20')]=_0x1d335f;if(_0x10e761[_0xe110('0x30')][_0xe110('0x41')]){_0x29b52b['include']=[{'all':!![]}];}return db[_0xe110('0x40')][_0xe110('0x42')](_0x29b52b);})[_0xe110('0x26')](function(_0x212f9d){_0x31adbe[_0xe110('0x43')]=_0x212f9d;return _0x31adbe;})[_0xe110('0x26')](respondWithFilteredResult(_0x51dca8,_0x29b52b))['catch'](handleError(_0x51dca8,null));};exports[_0xe110('0x44')]=function(_0x160000,_0xd25fa0){var _0x216582={'raw':![],'where':{'id':_0x160000[_0xe110('0x45')]['id']}},_0xd88c5b={};_0xd88c5b[_0xe110('0x2f')]=_[_0xe110('0x31')](db['ServicenowAccount'][_0xe110('0x46')]);_0xd88c5b[_0xe110('0x30')]=_[_0xe110('0x31')](_0x160000[_0xe110('0x30')]);_0xd88c5b[_0xe110('0x32')]=_[_0xe110('0x33')](_0xd88c5b['model'],_0xd88c5b[_0xe110('0x30')]);_0x216582[_0xe110('0x35')]=_['intersection'](_0xd88c5b[_0xe110('0x2f')],qs['fields'](_0x160000[_0xe110('0x30')][_0xe110('0x34')]));_0x216582[_0xe110('0x35')]=_0x216582[_0xe110('0x35')][_0xe110('0x36')]?_0x216582['attributes']:_0xd88c5b[_0xe110('0x2f')];if(_0x160000['query'][_0xe110('0x41')]){_0x216582['include']=[{'all':!![]}];}_0x216582=_[_0xe110('0x3e')]({},_0x216582,_0x160000[_0xe110('0x47')]);return db[_0xe110('0x40')][_0xe110('0x48')](_0x216582)[_0xe110('0x26')](handleEntityNotFound(_0xd25fa0,null))[_0xe110('0x26')](respondWithResult(_0xd25fa0,null))['catch'](handleError(_0xd25fa0,null));};exports[_0xe110('0x49')]=function(_0x45f037,_0x497b6c){return db['ServicenowAccount'][_0xe110('0x49')](_0x45f037['body'],{})[_0xe110('0x26')](respondWithResult(_0x497b6c,0xc9))['catch'](handleError(_0x497b6c,null));};exports['update']=function(_0x4be75b,_0x514c8c){if(_0x4be75b[_0xe110('0x4a')]['id']){delete _0x4be75b[_0xe110('0x4a')]['id'];}return db[_0xe110('0x40')]['find']({'where':{'id':_0x4be75b[_0xe110('0x45')]['id']}})['then'](handleEntityNotFound(_0x514c8c,null))[_0xe110('0x26')](saveUpdates(_0x4be75b[_0xe110('0x4a')],null))[_0xe110('0x26')](respondWithResult(_0x514c8c,null))[_0xe110('0x4b')](handleError(_0x514c8c,null));};exports[_0xe110('0x27')]=function(_0x54effc,_0x1ec681){return db[_0xe110('0x40')]['find']({'where':{'id':_0x54effc[_0xe110('0x45')]['id']}})[_0xe110('0x26')](handleEntityNotFound(_0x1ec681,null))[_0xe110('0x26')](removeEntity(_0x1ec681,null))[_0xe110('0x4b')](handleError(_0x1ec681,null));};exports[_0xe110('0x4c')]=function(_0x2c8ef8,_0x22b403,_0x1d32f1){var _0x4215ed={};var _0x34648c={};var _0x517f6e;var _0x17df19;return db['ServicenowAccount'][_0xe110('0x4d')]({'where':{'id':_0x2c8ef8[_0xe110('0x45')]['id']}})[_0xe110('0x26')](handleEntityNotFound(_0x22b403,null))['then'](function(_0x27116c){if(_0x27116c){_0x517f6e=_0x27116c;_0x34648c['model']=_[_0xe110('0x31')](db[_0xe110('0x4e')][_0xe110('0x46')]);_0x34648c[_0xe110('0x30')]=_[_0xe110('0x31')](_0x2c8ef8[_0xe110('0x30')]);_0x34648c[_0xe110('0x32')]=_['intersection'](_0x34648c[_0xe110('0x2f')],_0x34648c[_0xe110('0x30')]);_0x4215ed[_0xe110('0x35')]=_[_0xe110('0x33')](_0x34648c[_0xe110('0x2f')],qs[_0xe110('0x34')](_0x2c8ef8[_0xe110('0x30')]['fields']));_0x4215ed['attributes']=_0x4215ed[_0xe110('0x35')][_0xe110('0x36')]?_0x4215ed['attributes']:_0x34648c['model'];_0x4215ed['order']=qs[_0xe110('0x3a')](_0x2c8ef8[_0xe110('0x30')][_0xe110('0x3a')]);_0x4215ed[_0xe110('0x3b')]=qs[_0xe110('0x32')](_['pick'](_0x2c8ef8[_0xe110('0x30')],_0x34648c[_0xe110('0x32')]));if(_0x2c8ef8[_0xe110('0x30')]['filter']){_0x4215ed[_0xe110('0x3b')]=_[_0xe110('0x3e')](_0x4215ed['where'],{'$or':_[_0xe110('0x2d')](_0x4215ed[_0xe110('0x35')],function(_0x290dfe){var _0x2f547e={};_0x2f547e[_0x290dfe]={'$like':'%'+_0x2c8ef8['query'][_0xe110('0x3d')]+'%'};return _0x2f547e;})});}_0x4215ed=_[_0xe110('0x3e')]({},_0x4215ed,_0x2c8ef8[_0xe110('0x47')]);return _0x517f6e[_0xe110('0x4c')](_0x4215ed);}})[_0xe110('0x26')](function(_0x4ab5b2){if(_0x4ab5b2){_0x17df19=_0x4ab5b2['length'];if(!_0x2c8ef8[_0xe110('0x30')][_0xe110('0x37')](_0xe110('0x38'))){_0x4215ed[_0xe110('0x1e')]=qs[_0xe110('0x1e')](_0x2c8ef8['query'][_0xe110('0x1e')]);_0x4215ed[_0xe110('0x1d')]=qs[_0xe110('0x1d')](_0x2c8ef8[_0xe110('0x30')][_0xe110('0x1d')]);}return _0x517f6e[_0xe110('0x4c')](_0x4215ed);}})['then'](function(_0x5f3fcd){if(_0x5f3fcd){return _0x5f3fcd?{'count':_0x17df19,'rows':_0x5f3fcd}:null;}})['then'](respondWithResult(_0x22b403,null))[_0xe110('0x4b')](handleError(_0x22b403,null));};exports[_0xe110('0x4f')]=function(_0x3e68d7,_0x4b9a27,_0x1e35a7){if(_0x3e68d7[_0xe110('0x4a')]['id']){delete _0x3e68d7['body']['id'];}return db[_0xe110('0x40')]['findOne']({'where':{'id':_0x3e68d7[_0xe110('0x45')]['id']}})[_0xe110('0x26')](handleEntityNotFound(_0x4b9a27,null))[_0xe110('0x26')](function(_0x4ab1c5){if(_0x4ab1c5){_0x3e68d7[_0xe110('0x4a')]['AccountId']=_0x4ab1c5['id'];_0x3e68d7[_0xe110('0x4a')][_0xe110('0x50')]=integrations[_0xe110('0x51')](_0x3e68d7['body']['channel'],_0x3e68d7[_0xe110('0x4a')][_0xe110('0x52')]);_0x3e68d7[_0xe110('0x4a')][_0xe110('0x53')]=integrations['getDescriptions'](_0x3e68d7[_0xe110('0x4a')][_0xe110('0x54')],_0x3e68d7[_0xe110('0x4a')][_0xe110('0x52')]);return db[_0xe110('0x4e')]['create'](_0x3e68d7[_0xe110('0x4a')],{'include':[{'model':db['ServicenowField'],'as':_0xe110('0x50')},{'model':db['ServicenowField'],'as':'Descriptions'}]});}return null;})[_0xe110('0x26')](respondWithResult(_0x4b9a27,null))['catch'](handleError(_0x4b9a27,null));};exports[_0xe110('0x55')]=function(_0x43675f,_0x4cf660,_0x2c187e){var _0x4bd781=[_0xe110('0x56'),_0xe110('0x57'),_0xe110('0x58'),_0xe110('0x59'),_0xe110('0x5a'),_0xe110('0x5b'),_0xe110('0x5c'),'severity',_0xe110('0x5d')];var _0x259f1e=[_0xe110('0x5e'),_0xe110('0x56'),'caused_by',_0xe110('0x5f'),_0xe110('0x60'),_0xe110('0x61'),'child_incidents',_0xe110('0x57'),_0xe110('0x62'),_0xe110('0x63'),_0xe110('0x64'),_0xe110('0x65'),_0xe110('0x66'),_0xe110('0x67'),'sys_created_on','sys_domain',_0xe110('0x68'),_0xe110('0x69'),_0xe110('0x58'),'order',_0xe110('0x6a'),'closed_at',_0xe110('0x6b'),_0xe110('0x6c'),_0xe110('0x6d'),_0xe110('0x6e'),'work_notes_list',_0xe110('0x6f'),_0xe110('0x70'),'sys_domain_path','rfc',_0xe110('0x71'),_0xe110('0x72'),_0xe110('0x73'),_0xe110('0x74'),_0xe110('0x75'),'work_end',_0xe110('0x76'),_0xe110('0x77'),'caller_id',_0xe110('0x78'),_0xe110('0x59'),_0xe110('0x79'),_0xe110('0x7a'),'close_code',_0xe110('0x7b'),_0xe110('0x7c'),_0xe110('0x7d'),_0xe110('0x7e'),'business_stc',_0xe110('0x7f'),_0xe110('0x80'),_0xe110('0x81'),_0xe110('0x5b'),_0xe110('0x82'),_0xe110('0x83'),_0xe110('0x84'),_0xe110('0x85'),_0xe110('0x86'),'sys_id','contact_type',_0xe110('0x87'),_0xe110('0x5c'),_0xe110('0x88'),_0xe110('0x89'),_0xe110('0x8a'),_0xe110('0x8b'),'activity_due',_0xe110('0x8c'),'severity',_0xe110('0x8d'),'sla_due',_0xe110('0x8e'),'comments_and_work_notes','due_date','sys_mod_count','reopen_count',_0xe110('0x8f'),_0xe110('0x90'),_0xe110('0x91'),'correlation_id',_0xe110('0x92'),_0xe110('0x5d')];var _0xed275='';var _0x21562a='';var _0x509d6e=[];var _0x159ec6='';var _0x2c1cdd='';var _0x1112df=[];var _0x4f042f='';var _0x2f0a95='';var _0x2429ba={};var _0x4dda75='';return db[_0xe110('0x40')]['findOne']({'where':{'id':_0x43675f[_0xe110('0x45')]['id']},'attributes':['id',_0xe110('0x93'),_0xe110('0x94'),'email',_0xe110('0x95'),_0xe110('0x96')]})[_0xe110('0x26')](handleEntityNotFound(_0x4cf660,null))[_0xe110('0x26')](function(_0x1a6394){if(_0x1a6394){_0x4dda75=_0x1a6394[_0xe110('0x95')];var _0xc49752=_0x4dda75[_0xe110('0x97')](-0x1);if(_0xc49752==='/'){_0x4dda75=_0x4dda75[_0xe110('0x98')](0x0,_0x4dda75[_0xe110('0x99')](_0xc49752));}_0x2f0a95=util['format'](_0xe110('0x9a'),_0x4dda75);_0x4f042f=util[_0xe110('0x9b')](_0xe110('0x9c'),_0x4dda75);_0x2429ba={'user':_0x1a6394['username'],'pass':_0x1a6394[_0xe110('0x94')]};var _0x37a172={'method':_0xe110('0x9d'),'uri':_0x2f0a95+_0xe110('0x9e'),'auth':_0x2429ba,'json':!![]};return rp(_0x37a172);}})[_0xe110('0x26')](function(_0x184913){if(_0x184913[_0xe110('0x9f')][_0xe110('0x36')]>0x0){_0xed275=_0x184913[_0xe110('0x9f')];}console[_0xe110('0xa0')](_0xe110('0xa1'),_0xed275);_0x1112df=[];_0x21562a=Object[_0xe110('0xa2')]([],_0xed275);_[_0xe110('0xa3')](_0x21562a,function(_0x56cad8){return!_0x4bd781[_0xe110('0xa4')](_0x56cad8[_0xe110('0x2a')]);});_0x21562a[_0xe110('0xa5')](function(_0x1f57bc){var _0x425dea=createFieldObject(_0x4f042f,_0x2429ba,_0x1f57bc[_0xe110('0xa6')],_0x1f57bc[_0xe110('0x2a')],_0x1f57bc['label'],![]);_0x1112df[_0xe110('0xa7')](_0x425dea);});return Promise[_0xe110('0xa8')](_0x1112df);})[_0xe110('0x26')](function(_0x3d3c85){_0x509d6e=_0x3d3c85;_0x159ec6=Object[_0xe110('0xa2')]([],_0xed275);console['log']('TCL:\x20_object',_0xed275);_[_0xe110('0xa3')](_0x159ec6,function(_0x39275b){return _0x259f1e[_0xe110('0xa4')](_0x39275b[_0xe110('0x2a')]);});console[_0xe110('0xa0')](_0xe110('0xa9'),_0x159ec6);_0x1112df=[];_0x159ec6[_0xe110('0xa5')](function(_0x43b250){var _0xdb20d2=createFieldObject(_0x4f042f,_0x2429ba,_0x43b250[_0xe110('0xa6')],_0x43b250[_0xe110('0x2a')],_0x43b250[_0xe110('0xaa')],!![]);_0x1112df[_0xe110('0xa7')](_0xdb20d2);});return Promise['all'](_0x1112df);})[_0xe110('0x26')](function(_0x36cec1){_0x2c1cdd=_0x36cec1;var _0x55f36=_0x509d6e[_0xe110('0xab')](_0x2c1cdd);return{'count':_0x55f36[_0xe110('0x36')],'rows':_0x55f36};})['then'](respondWithResult(_0x4cf660,null))[_0xe110('0x4b')](function(_0x10ed85){console[_0xe110('0xa0')](_0xe110('0xac')+_0x10ed85);var _0x12be93=_0x43675f[_0xe110('0x30')]['test']?0x1f4:_0x10ed85['statusCode']||0x1f4;logger[_0xe110('0x28')](_0x10ed85['stack']);delete _0x10ed85[_0xe110('0x2a')];if(_0x12be93===0x191){_0x12be93=0x190;}_0x4cf660[_0xe110('0x1a')](_0x12be93)[_0xe110('0x2b')](_0x43675f['query'][_0xe110('0xad')]?{'message':_0xe110('0xae'),'statusCode':_0x10ed85[_0xe110('0xaf')]}:_0x10ed85);});};function createFieldObject(_0xf5ad95,_0x189cb7,_0x269eb8,_0x1abd30,_0x52794f,_0x306f5d){return new Promise(function(_0x30379e,_0x133d90){var _0x46ba49={'id':_0x1abd30,'name':_0x52794f,'custom':_0x306f5d};if(_0x269eb8==='boolean'){_0x46ba49['options']=[{'name':_0xe110('0xb0'),'value':_0xe110('0xb1')},{'name':_0xe110('0xb2'),'value':_0xe110('0xb3')}];_0x30379e(_0x46ba49);}else{var _0xb0191b={'method':_0xe110('0x9d'),'uri':_0xf5ad95+_0xe110('0xb4')+_0x1abd30,'auth':_0x189cb7,'json':!![]};return rp(_0xb0191b)[_0xe110('0x26')](function(_0x5986db){var _0x5cc0c1=[];if(_0x5986db[_0xe110('0x9f')][_0xe110('0x36')]>0x0){_0x5986db['result']['forEach'](function(_0x13fd61){if(_0x13fd61['inactive']==='false'){var _0x2466df={'name':_0x13fd61['label'],'value':_0x13fd61[_0xe110('0xb5')]};_0x5cc0c1['push'](_0x2466df);}});}_0x46ba49[_0xe110('0x47')]=_0x5cc0c1;if(_0x46ba49[_0xe110('0x47')][_0xe110('0x36')]>0x0){_0x30379e(_0x46ba49);}else{if(_0x306f5d==![]){_0x30379e();}else{_0x30379e(_0x46ba49);}}});}});}
\ No newline at end of file
index 4ac5fc1..735f0f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda8=['path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','ServicenowAccount','int_servicenow_accounts','lodash','util','api','moment','bluebird','request-promise'];(function(_0x45a12e,_0x198eb9){var _0x22cacc=function(_0x3dbf6e){while(--_0x3dbf6e){_0x45a12e['push'](_0x45a12e['shift']());}};_0x22cacc(++_0x198eb9);}(_0xeda8,0x104));var _0x8eda=function(_0xfcb5c0,_0x7ae07d){_0xfcb5c0=_0xfcb5c0-0x0;var _0x559f38=_0xeda8[_0xfcb5c0];return _0x559f38;};'use strict';var _=require(_0x8eda('0x0'));var util=require(_0x8eda('0x1'));var logger=require('../../config/logger')(_0x8eda('0x2'));var moment=require(_0x8eda('0x3'));var BPromise=require(_0x8eda('0x4'));var rp=require(_0x8eda('0x5'));var fs=require('fs');var path=require(_0x8eda('0x6'));var rimraf=require(_0x8eda('0x7'));var config=require(_0x8eda('0x8'));var attributes=require(_0x8eda('0x9'));var integrations=require(_0x8eda('0xa'));module[_0x8eda('0xb')]=function(_0x349361,_0x32abe8){return _0x349361['define'](_0x8eda('0xc'),attributes,{'tableName':_0x8eda('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe14b=['bluebird','path','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','lodash','util','moment'];(function(_0x5e5711,_0x3f3270){var _0x4b6a17=function(_0x3b4ae9){while(--_0x3b4ae9){_0x5e5711['push'](_0x5e5711['shift']());}};_0x4b6a17(++_0x3f3270);}(_0xe14b,0x93));var _0xbe14=function(_0x1c0c18,_0x457b6b){_0x1c0c18=_0x1c0c18-0x0;var _0x441c04=_0xe14b[_0x1c0c18];return _0x441c04;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));var integrations=require(_0xbe14('0x6'));module[_0xbe14('0x7')]=function(_0x1ff100,_0x1d9ade){return _0x1ff100[_0xbe14('0x8')](_0xbe14('0x9'),attributes,{'tableName':'int_servicenow_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fd7d2af..d6e1613 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d44=['GetServicenowAccount','options','raw','attributes','include','map','model','debug','stringify','ShowServicenowAccount','ServicenowAccount','find','where','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','error','code','ServicenowAccount,\x20%s,\x20%s','message','catch'];(function(_0x55a89d,_0x584ea7){var _0x1b0e5a=function(_0x2f9b88){while(--_0x2f9b88){_0x55a89d['push'](_0x55a89d['shift']());}};_0x1b0e5a(++_0x584ea7);}(_0x8d44,0x73));var _0x48d4=function(_0x32a5bc,_0x2f974f){_0x32a5bc=_0x32a5bc-0x0;var _0x39f8ce=_0x8d44[_0x32a5bc];return _0x39f8ce;};'use strict';var _=require(_0x48d4('0x0'));var util=require(_0x48d4('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x48d4('0x2'));var fs=require('fs');var Redis=require(_0x48d4('0x3'));var db=require(_0x48d4('0x4'))['db'];var utils=require(_0x48d4('0x5'));var logger=require('../../config/logger')(_0x48d4('0x6'));var config=require(_0x48d4('0x7'));var jayson=require(_0x48d4('0x8'));var client=jayson[_0x48d4('0x9')][_0x48d4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4b5a88,_0xb8737,_0x5254c5){return new BPromise(function(_0x5dd693,_0x3fcc9e){return client[_0x48d4('0xb')](_0x4b5a88,_0x5254c5)[_0x48d4('0xc')](function(_0xac9394){logger[_0x48d4('0xd')]('ServicenowAccount,\x20%s,\x20%s',_0xb8737,_0x48d4('0xe'));logger['debug'](_0x48d4('0xf'),_0xb8737,_0x48d4('0xe'),JSON['stringify'](_0xac9394));if(_0xac9394[_0x48d4('0x10')]){if(_0xac9394[_0x48d4('0x10')][_0x48d4('0x11')]===0x1f4){logger[_0x48d4('0x10')](_0x48d4('0x12'),_0xb8737,_0xac9394[_0x48d4('0x10')][_0x48d4('0x13')]);return _0x3fcc9e(_0xac9394['error'][_0x48d4('0x13')]);}logger[_0x48d4('0x10')](_0x48d4('0x12'),_0xb8737,_0xac9394[_0x48d4('0x10')][_0x48d4('0x13')]);return _0x5dd693(_0xac9394[_0x48d4('0x10')]['message']);}else{logger[_0x48d4('0xd')](_0x48d4('0x12'),_0xb8737,_0x48d4('0xe'));_0x5dd693(_0xac9394['result'][_0x48d4('0x13')]);}})[_0x48d4('0x14')](function(_0x54f403){logger[_0x48d4('0x10')](_0x48d4('0x12'),_0xb8737,_0x54f403);_0x3fcc9e(_0x54f403);});});}exports[_0x48d4('0x15')]=function(_0x57dc61){var _0x1f4f10=this;return new Promise(function(_0x4f3c4f,_0x3d300c){return db['ServicenowAccount']['findAll']({'raw':_0x57dc61[_0x48d4('0x16')]?_0x57dc61[_0x48d4('0x16')][_0x48d4('0x17')]===undefined?!![]:![]:!![],'where':_0x57dc61[_0x48d4('0x16')]?_0x57dc61['options']['where']||null:null,'attributes':_0x57dc61['options']?_0x57dc61[_0x48d4('0x16')][_0x48d4('0x18')]||null:null,'limit':_0x57dc61[_0x48d4('0x16')]?_0x57dc61['options']['limit']||null:null,'include':_0x57dc61[_0x48d4('0x16')]?_0x57dc61[_0x48d4('0x16')][_0x48d4('0x19')]?_[_0x48d4('0x1a')](_0x57dc61[_0x48d4('0x16')]['include'],function(_0x5cdcb2){return{'model':db[_0x5cdcb2[_0x48d4('0x1b')]],'as':_0x5cdcb2['as'],'attributes':_0x5cdcb2[_0x48d4('0x18')],'include':_0x5cdcb2[_0x48d4('0x19')]?_[_0x48d4('0x1a')](_0x5cdcb2['include'],function(_0x25db38){return{'model':db[_0x25db38['model']],'as':_0x25db38['as'],'attributes':_0x25db38['attributes'],'include':_0x25db38[_0x48d4('0x19')]?_[_0x48d4('0x1a')](_0x25db38['include'],function(_0x292d8c){return{'model':db[_0x292d8c['model']],'as':_0x292d8c['as'],'attributes':_0x292d8c[_0x48d4('0x18')]};}):[]};}):[]};}):[]:[]})[_0x48d4('0xc')](function(_0x35fed4){logger[_0x48d4('0xd')](_0x48d4('0x15'),_0x57dc61);logger[_0x48d4('0x1c')](_0x48d4('0x15'),_0x57dc61,JSON[_0x48d4('0x1d')](_0x35fed4));_0x4f3c4f(_0x35fed4);})[_0x48d4('0x14')](function(_0x268047){logger['error'](_0x48d4('0x15'),_0x268047[_0x48d4('0x13')],_0x57dc61);_0x3d300c(_0x1f4f10[_0x48d4('0x10')](0x1f4,_0x268047[_0x48d4('0x13')]));});});};exports[_0x48d4('0x1e')]=function(_0x13673e){var _0x5671a0=this;return new Promise(function(_0x21b2bb,_0x1e247c){return db[_0x48d4('0x1f')][_0x48d4('0x20')]({'raw':_0x13673e[_0x48d4('0x16')]?_0x13673e[_0x48d4('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x13673e[_0x48d4('0x16')]?_0x13673e[_0x48d4('0x16')][_0x48d4('0x21')]||null:null,'attributes':_0x13673e[_0x48d4('0x16')]?_0x13673e['options'][_0x48d4('0x18')]||null:null,'include':_0x13673e[_0x48d4('0x16')]?_0x13673e[_0x48d4('0x16')][_0x48d4('0x19')]?_[_0x48d4('0x1a')](_0x13673e[_0x48d4('0x16')]['include'],function(_0xf315c0){return{'model':db[_0xf315c0[_0x48d4('0x1b')]],'as':_0xf315c0['as'],'attributes':_0xf315c0['attributes'],'include':_0xf315c0['include']?_[_0x48d4('0x1a')](_0xf315c0['include'],function(_0x4f02a6){return{'model':db[_0x4f02a6[_0x48d4('0x1b')]],'as':_0x4f02a6['as'],'attributes':_0x4f02a6[_0x48d4('0x18')],'include':_0x4f02a6['include']?_[_0x48d4('0x1a')](_0x4f02a6[_0x48d4('0x19')],function(_0x5d8b04){return{'model':db[_0x5d8b04[_0x48d4('0x1b')]],'as':_0x5d8b04['as'],'attributes':_0x5d8b04['attributes']};}):[]};}):[]};}):[]:[]})[_0x48d4('0xc')](function(_0x51cfd9){logger[_0x48d4('0xd')]('ShowServicenowAccount',_0x13673e);logger['debug'](_0x48d4('0x1e'),_0x13673e,JSON[_0x48d4('0x1d')](_0x51cfd9));_0x21b2bb(_0x51cfd9);})[_0x48d4('0x14')](function(_0x5eb1bc){logger['error'](_0x48d4('0x1e'),_0x5eb1bc[_0x48d4('0x13')],_0x13673e);_0x1e247c(_0x5671a0['error'](0x1f4,_0x5eb1bc['message']));});});};
\ No newline at end of file
+var _0x4b84=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','ServicenowAccount,\x20%s,\x20%s','ServicenowAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','attributes','include','map','model','debug','then','ShowServicenowAccount','lodash','util','randomstring','ioredis','../../mysqldb'];(function(_0x4882dc,_0x1a6680){var _0x45257f=function(_0x4f1768){while(--_0x4f1768){_0x4882dc['push'](_0x4882dc['shift']());}};_0x45257f(++_0x1a6680);}(_0x4b84,0x124));var _0x44b8=function(_0x54eab6,_0x5e262f){_0x54eab6=_0x54eab6-0x0;var _0x1e7435=_0x4b84[_0x54eab6];return _0x1e7435;};'use strict';var _=require(_0x44b8('0x0'));var util=require(_0x44b8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x44b8('0x2'));var fs=require('fs');var Redis=require(_0x44b8('0x3'));var db=require(_0x44b8('0x4'))['db'];var utils=require(_0x44b8('0x5'));var logger=require(_0x44b8('0x6'))('rpc');var config=require(_0x44b8('0x7'));var jayson=require(_0x44b8('0x8'));var client=jayson['client'][_0x44b8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x256ff1,_0x3a995b,_0x67bc2a){return new BPromise(function(_0x31b155,_0x3f6f2a){return client[_0x44b8('0xa')](_0x256ff1,_0x67bc2a)['then'](function(_0x288359){logger['info'](_0x44b8('0xb'),_0x3a995b,'request\x20sent');logger['debug'](_0x44b8('0xc'),_0x3a995b,_0x44b8('0xd'),JSON[_0x44b8('0xe')](_0x288359));if(_0x288359[_0x44b8('0xf')]){if(_0x288359[_0x44b8('0xf')]['code']===0x1f4){logger[_0x44b8('0xf')]('ServicenowAccount,\x20%s,\x20%s',_0x3a995b,_0x288359[_0x44b8('0xf')][_0x44b8('0x10')]);return _0x3f6f2a(_0x288359[_0x44b8('0xf')][_0x44b8('0x10')]);}logger[_0x44b8('0xf')](_0x44b8('0xb'),_0x3a995b,_0x288359['error']['message']);return _0x31b155(_0x288359[_0x44b8('0xf')][_0x44b8('0x10')]);}else{logger[_0x44b8('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x3a995b,_0x44b8('0xd'));_0x31b155(_0x288359[_0x44b8('0x12')][_0x44b8('0x10')]);}})[_0x44b8('0x13')](function(_0x1a561a){logger[_0x44b8('0xf')](_0x44b8('0xb'),_0x3a995b,_0x1a561a);_0x3f6f2a(_0x1a561a);});});}exports[_0x44b8('0x14')]=function(_0x3107e4){var _0x5de1e9=this;return new Promise(function(_0x5534d8,_0x3e9358){return db[_0x44b8('0x15')][_0x44b8('0x16')]({'raw':_0x3107e4[_0x44b8('0x17')]?_0x3107e4[_0x44b8('0x17')][_0x44b8('0x18')]===undefined?!![]:![]:!![],'where':_0x3107e4[_0x44b8('0x17')]?_0x3107e4[_0x44b8('0x17')][_0x44b8('0x19')]||null:null,'attributes':_0x3107e4[_0x44b8('0x17')]?_0x3107e4[_0x44b8('0x17')][_0x44b8('0x1a')]||null:null,'limit':_0x3107e4[_0x44b8('0x17')]?_0x3107e4[_0x44b8('0x17')]['limit']||null:null,'include':_0x3107e4[_0x44b8('0x17')]?_0x3107e4[_0x44b8('0x17')][_0x44b8('0x1b')]?_[_0x44b8('0x1c')](_0x3107e4[_0x44b8('0x17')]['include'],function(_0xaaafda){return{'model':db[_0xaaafda[_0x44b8('0x1d')]],'as':_0xaaafda['as'],'attributes':_0xaaafda[_0x44b8('0x1a')],'include':_0xaaafda[_0x44b8('0x1b')]?_[_0x44b8('0x1c')](_0xaaafda[_0x44b8('0x1b')],function(_0x4eeea8){return{'model':db[_0x4eeea8[_0x44b8('0x1d')]],'as':_0x4eeea8['as'],'attributes':_0x4eeea8[_0x44b8('0x1a')],'include':_0x4eeea8[_0x44b8('0x1b')]?_[_0x44b8('0x1c')](_0x4eeea8[_0x44b8('0x1b')],function(_0x58b8c9){return{'model':db[_0x58b8c9['model']],'as':_0x58b8c9['as'],'attributes':_0x58b8c9[_0x44b8('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x410d45){logger['info'](_0x44b8('0x14'),_0x3107e4);logger[_0x44b8('0x1e')]('GetServicenowAccount',_0x3107e4,JSON['stringify'](_0x410d45));_0x5534d8(_0x410d45);})['catch'](function(_0x2ebfd7){logger['error']('GetServicenowAccount',_0x2ebfd7['message'],_0x3107e4);_0x3e9358(_0x5de1e9[_0x44b8('0xf')](0x1f4,_0x2ebfd7[_0x44b8('0x10')]));});});};exports['ShowServicenowAccount']=function(_0xf79bfe){var _0x559e00=this;return new Promise(function(_0x39f66f,_0x32c9ad){return db[_0x44b8('0x15')]['find']({'raw':_0xf79bfe[_0x44b8('0x17')]?_0xf79bfe[_0x44b8('0x17')][_0x44b8('0x18')]===undefined?!![]:![]:!![],'where':_0xf79bfe['options']?_0xf79bfe[_0x44b8('0x17')][_0x44b8('0x19')]||null:null,'attributes':_0xf79bfe[_0x44b8('0x17')]?_0xf79bfe[_0x44b8('0x17')]['attributes']||null:null,'include':_0xf79bfe[_0x44b8('0x17')]?_0xf79bfe[_0x44b8('0x17')]['include']?_[_0x44b8('0x1c')](_0xf79bfe['options']['include'],function(_0x1a0124){return{'model':db[_0x1a0124[_0x44b8('0x1d')]],'as':_0x1a0124['as'],'attributes':_0x1a0124[_0x44b8('0x1a')],'include':_0x1a0124[_0x44b8('0x1b')]?_[_0x44b8('0x1c')](_0x1a0124[_0x44b8('0x1b')],function(_0x454992){return{'model':db[_0x454992[_0x44b8('0x1d')]],'as':_0x454992['as'],'attributes':_0x454992['attributes'],'include':_0x454992[_0x44b8('0x1b')]?_[_0x44b8('0x1c')](_0x454992['include'],function(_0x4137aa){return{'model':db[_0x4137aa[_0x44b8('0x1d')]],'as':_0x4137aa['as'],'attributes':_0x4137aa[_0x44b8('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x44b8('0x1f')](function(_0x129079){logger[_0x44b8('0x11')](_0x44b8('0x20'),_0xf79bfe);logger[_0x44b8('0x1e')](_0x44b8('0x20'),_0xf79bfe,JSON[_0x44b8('0xe')](_0x129079));_0x39f66f(_0x129079);})[_0x44b8('0x13')](function(_0x483fc1){logger[_0x44b8('0xf')]('ShowServicenowAccount',_0x483fc1['message'],_0xf79bfe);_0x32c9ad(_0x559e00[_0x44b8('0xf')](0x1f4,_0x483fc1[_0x44b8('0x10')]));});});};
\ No newline at end of file
index 5718693..f955936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72b1=['fs-extra','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','destroy','multer','util','path','connect-timeout','express','Router'];(function(_0x8a969d,_0x339d9f){var _0x1d8dc7=function(_0x283ec0){while(--_0x283ec0){_0x8a969d['push'](_0x8a969d['shift']());}};_0x1d8dc7(++_0x339d9f);}(_0x72b1,0x84));var _0x172b=function(_0x50bc59,_0xc824b5){_0x50bc59=_0x50bc59-0x0;var _0x394472=_0x72b1[_0x50bc59];return _0x394472;};'use strict';var multer=require(_0x172b('0x0'));var util=require(_0x172b('0x1'));var path=require(_0x172b('0x2'));var timeout=require(_0x172b('0x3'));var express=require(_0x172b('0x4'));var router=express[_0x172b('0x5')]();var fs_extra=require(_0x172b('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x172b('0x7'));var config=require(_0x172b('0x8'));var controller=require('./intServicenowConfiguration.controller');router[_0x172b('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x172b('0x9')](_0x172b('0xa'),auth[_0x172b('0xb')](),controller['show']);router[_0x172b('0x9')](_0x172b('0xc'),auth[_0x172b('0xb')](),controller[_0x172b('0xd')]);router[_0x172b('0x9')](_0x172b('0xe'),auth[_0x172b('0xb')](),controller[_0x172b('0xf')]);router['get'](_0x172b('0x10'),auth[_0x172b('0xb')](),controller[_0x172b('0x11')]);router[_0x172b('0x12')]('/',auth['isAuthenticated'](),controller[_0x172b('0x13')]);router[_0x172b('0x14')](_0x172b('0xa'),auth['isAuthenticated'](),controller[_0x172b('0x15')]);router['delete'](_0x172b('0xa'),auth[_0x172b('0xb')](),controller[_0x172b('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x1cb7=['../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','/:id/subjects','getSubjects','getDescriptions','create','put','update','exports','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x456a37,_0x576cee){var _0x39641d=function(_0x2fbbb6){while(--_0x2fbbb6){_0x456a37['push'](_0x456a37['shift']());}};_0x39641d(++_0x576cee);}(_0x1cb7,0x176));var _0x71cb=function(_0x13b804,_0x1a2dab){_0x13b804=_0x13b804-0x0;var _0xb13f62=_0x1cb7[_0x13b804];return _0xb13f62;};'use strict';var multer=require(_0x71cb('0x0'));var util=require(_0x71cb('0x1'));var path=require(_0x71cb('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x71cb('0x3'));var auth=require(_0x71cb('0x4'));var interaction=require(_0x71cb('0x5'));var config=require(_0x71cb('0x6'));var controller=require(_0x71cb('0x7'));router[_0x71cb('0x8')]('/',auth[_0x71cb('0x9')](),controller[_0x71cb('0xa')]);router['get'](_0x71cb('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x71cb('0x8')](_0x71cb('0xc'),auth[_0x71cb('0x9')](),controller['getFields']);router['get'](_0x71cb('0xd'),auth[_0x71cb('0x9')](),controller[_0x71cb('0xe')]);router['get']('/:id/descriptions',auth[_0x71cb('0x9')](),controller[_0x71cb('0xf')]);router['post']('/',auth[_0x71cb('0x9')](),controller[_0x71cb('0x10')]);router[_0x71cb('0x11')]('/:id',auth[_0x71cb('0x9')](),controller[_0x71cb('0x12')]);router['delete'](_0x71cb('0xb'),auth[_0x71cb('0x9')](),controller['destroy']);module[_0x71cb('0x13')]=router;
\ No newline at end of file
index ad1cd4a..44de0cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa538=['STRING'];(function(_0x18c725,_0xf34fa9){var _0x5d0043=function(_0x10420e){while(--_0x10420e){_0x18c725['push'](_0x18c725['shift']());}};_0x5d0043(++_0xf34fa9);}(_0xa538,0x97));var _0x8a53=function(_0x35a2fc,_0x1ac4ed){_0x35a2fc=_0x35a2fc-0x0;var _0x102280=_0xa538[_0x35a2fc];return _0x102280;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8a53('0x0')]},'description':{'type':Sequelize[_0x8a53('0x0')]}};
\ No newline at end of file
+var _0x6f13=['sequelize','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6f13,0x1f0));var _0x36f1=function(_0x41ae4a,_0x5477e0){_0x41ae4a=_0x41ae4a-0x0;var _0x3e6eb2=_0x6f13[_0x41ae4a];return _0x3e6eb2;};'use strict';var Sequelize=require(_0x36f1('0x0'));module['exports']={'name':{'type':Sequelize[_0x36f1('0x1')]},'description':{'type':Sequelize[_0x36f1('0x1')]}};
\ No newline at end of file
index f028f4c..8ed8efd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f39=['hasOwnProperty','getSubjects','nolimit','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','reject','save','update','then','destroy','stack','name','ServicenowConfiguration','rawAttributes','key','model','map','query','keys','filters','intersection','fields','attributes','length','sort','where','pick','filter','type','VIRTUAL','merge','options','include','findAll','show','params','find','catch','create','body','getFields','findOne','ServicenowField','order'];(function(_0x3c9522,_0x8fbacc){var _0x1728c4=function(_0x563dfc){while(--_0x563dfc){_0x3c9522['push'](_0x3c9522['shift']());}};_0x1728c4(++_0x8fbacc);}(_0x1f39,0x180));var _0x91f3=function(_0x52a9f2,_0x390847){_0x52a9f2=_0x52a9f2-0x0;var _0x25dc35=_0x1f39[_0x52a9f2];return _0x25dc35;};'use strict';var emlformat=require(_0x91f3('0x0'));var rimraf=require(_0x91f3('0x1'));var zipdir=require(_0x91f3('0x2'));var jsonpatch=require(_0x91f3('0x3'));var rp=require(_0x91f3('0x4'));var moment=require(_0x91f3('0x5'));var BPromise=require(_0x91f3('0x6'));var Mustache=require(_0x91f3('0x7'));var util=require(_0x91f3('0x8'));var path=require(_0x91f3('0x9'));var sox=require(_0x91f3('0xa'));var csv=require('to-csv');var ejs=require(_0x91f3('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x91f3('0xc'));var squel=require(_0x91f3('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x91f3('0xe'));var toCsv=require(_0x91f3('0xf'));var querystring=require(_0x91f3('0x10'));var Papa=require(_0x91f3('0x11'));var Redis=require(_0x91f3('0x12'));var authService=require(_0x91f3('0x13'));var qs=require(_0x91f3('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x91f3('0x15'))('api');var utils=require(_0x91f3('0x16'));var config=require(_0x91f3('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x91f3('0x18'))['db'];function respondWithStatusCode(_0x69bd69,_0x3833fd){_0x3833fd=_0x3833fd||0xcc;return function(_0xe70f38){if(_0xe70f38){return _0x69bd69[_0x91f3('0x19')](_0x3833fd);}return _0x69bd69[_0x91f3('0x1a')](_0x3833fd)[_0x91f3('0x1b')]();};}function respondWithResult(_0x24454f,_0x40cf85){_0x40cf85=_0x40cf85||0xc8;return function(_0x2f3d4d){if(_0x2f3d4d){return _0x24454f['status'](_0x40cf85)[_0x91f3('0x1c')](_0x2f3d4d);}};}function respondWithFilteredResult(_0x42a155,_0x1769ba){return function(_0x2d7ba5){if(_0x2d7ba5){var _0x9dc2=typeof _0x1769ba[_0x91f3('0x1d')]==='undefined'&&typeof _0x1769ba['limit']===_0x91f3('0x1e');var _0x3dbf83=_0x2d7ba5['count'];var _0x14ef47=_0x9dc2?0x0:_0x1769ba[_0x91f3('0x1d')];var _0x3b0674=_0x9dc2?_0x2d7ba5['count']:_0x1769ba[_0x91f3('0x1d')]+_0x1769ba[_0x91f3('0x1f')];var _0x57c581;if(_0x3b0674>=_0x3dbf83){_0x3b0674=_0x3dbf83;_0x57c581=0xc8;}else{_0x57c581=0xce;}_0x42a155[_0x91f3('0x1a')](_0x57c581);return _0x42a155[_0x91f3('0x20')]('Content-Range',_0x14ef47+'-'+_0x3b0674+'/'+_0x3dbf83)['json'](_0x2d7ba5);}return null;};}function patchUpdates(_0x35cab4){return function(_0x1f6d7e){try{jsonpatch['apply'](_0x1f6d7e,_0x35cab4,!![]);}catch(_0x132938){return BPromise[_0x91f3('0x21')](_0x132938);}return _0x1f6d7e[_0x91f3('0x22')]();};}function saveUpdates(_0x45258c,_0x43f67){return function(_0x2157ef){if(_0x2157ef){return _0x2157ef[_0x91f3('0x23')](_0x45258c)[_0x91f3('0x24')](function(_0x4929df){return _0x4929df;});}return null;};}function removeEntity(_0x41b91b,_0x23263d){return function(_0x6309b1){if(_0x6309b1){return _0x6309b1[_0x91f3('0x25')]()[_0x91f3('0x24')](function(){_0x41b91b[_0x91f3('0x1a')](0xcc)[_0x91f3('0x1b')]();});}};}function handleEntityNotFound(_0x5539e8,_0x4a7115){return function(_0x575d07){if(!_0x575d07){_0x5539e8['sendStatus'](0x194);}return _0x575d07;};}function handleError(_0xc38b4,_0x84b852){_0x84b852=_0x84b852||0x1f4;return function(_0x494ba0){logger['error'](_0x494ba0[_0x91f3('0x26')]);if(_0x494ba0[_0x91f3('0x27')]){delete _0x494ba0[_0x91f3('0x27')];}_0xc38b4[_0x91f3('0x1a')](_0x84b852)['send'](_0x494ba0);};}exports['index']=function(_0x37e42f,_0x625a73){var _0x386110={},_0x5419c8={},_0x250e04={'count':0x0,'rows':[]};var _0x392c7d=_['map'](db[_0x91f3('0x28')][_0x91f3('0x29')],function(_0x169263){return{'name':_0x169263['fieldName'],'type':_0x169263['type'][_0x91f3('0x2a')]};});_0x5419c8[_0x91f3('0x2b')]=_[_0x91f3('0x2c')](_0x392c7d,_0x91f3('0x27'));_0x5419c8[_0x91f3('0x2d')]=_[_0x91f3('0x2e')](_0x37e42f[_0x91f3('0x2d')]);_0x5419c8[_0x91f3('0x2f')]=_[_0x91f3('0x30')](_0x5419c8['model'],_0x5419c8[_0x91f3('0x2d')]);_0x386110['attributes']=_[_0x91f3('0x30')](_0x5419c8['model'],qs[_0x91f3('0x31')](_0x37e42f['query'][_0x91f3('0x31')]));_0x386110[_0x91f3('0x32')]=_0x386110['attributes'][_0x91f3('0x33')]?_0x386110[_0x91f3('0x32')]:_0x5419c8[_0x91f3('0x2b')];if(!_0x37e42f['query']['hasOwnProperty']('nolimit')){_0x386110[_0x91f3('0x1f')]=qs[_0x91f3('0x1f')](_0x37e42f[_0x91f3('0x2d')][_0x91f3('0x1f')]);_0x386110[_0x91f3('0x1d')]=qs[_0x91f3('0x1d')](_0x37e42f['query'][_0x91f3('0x1d')]);}_0x386110['order']=qs[_0x91f3('0x34')](_0x37e42f[_0x91f3('0x2d')][_0x91f3('0x34')]);_0x386110[_0x91f3('0x35')]=qs['filters'](_[_0x91f3('0x36')](_0x37e42f[_0x91f3('0x2d')],_0x5419c8[_0x91f3('0x2f')]),_0x392c7d);if(_0x37e42f[_0x91f3('0x2d')][_0x91f3('0x37')]){_0x386110['where']=_['merge'](_0x386110[_0x91f3('0x35')],{'$or':_['map'](_0x392c7d,function(_0x26fb73){if(_0x26fb73[_0x91f3('0x38')]!==_0x91f3('0x39')){var _0x1382ca={};_0x1382ca[_0x26fb73[_0x91f3('0x27')]]={'$like':'%'+_0x37e42f[_0x91f3('0x2d')]['filter']+'%'};return _0x1382ca;}})});}_0x386110=_[_0x91f3('0x3a')]({},_0x386110,_0x37e42f[_0x91f3('0x3b')]);var _0x163b03={'where':_0x386110['where']};return db[_0x91f3('0x28')]['count'](_0x163b03)[_0x91f3('0x24')](function(_0x335e45){_0x250e04['count']=_0x335e45;if(_0x37e42f[_0x91f3('0x2d')]['includeAll']){_0x386110[_0x91f3('0x3c')]=[{'all':!![]}];}return db[_0x91f3('0x28')][_0x91f3('0x3d')](_0x386110);})[_0x91f3('0x24')](function(_0x4986c9){_0x250e04['rows']=_0x4986c9;return _0x250e04;})[_0x91f3('0x24')](respondWithFilteredResult(_0x625a73,_0x386110))['catch'](handleError(_0x625a73,null));};exports[_0x91f3('0x3e')]=function(_0x28ceda,_0x2b22f7){var _0x456c43={'raw':![],'where':{'id':_0x28ceda[_0x91f3('0x3f')]['id']}},_0x20b424={};_0x20b424[_0x91f3('0x2b')]=_[_0x91f3('0x2e')](db[_0x91f3('0x28')][_0x91f3('0x29')]);_0x20b424['query']=_[_0x91f3('0x2e')](_0x28ceda[_0x91f3('0x2d')]);_0x20b424[_0x91f3('0x2f')]=_[_0x91f3('0x30')](_0x20b424[_0x91f3('0x2b')],_0x20b424[_0x91f3('0x2d')]);_0x456c43['attributes']=_[_0x91f3('0x30')](_0x20b424[_0x91f3('0x2b')],qs['fields'](_0x28ceda[_0x91f3('0x2d')][_0x91f3('0x31')]));_0x456c43[_0x91f3('0x32')]=_0x456c43['attributes'][_0x91f3('0x33')]?_0x456c43[_0x91f3('0x32')]:_0x20b424[_0x91f3('0x2b')];if(_0x28ceda[_0x91f3('0x2d')]['includeAll']){_0x456c43[_0x91f3('0x3c')]=[{'all':!![]}];}_0x456c43=_['merge']({},_0x456c43,_0x28ceda[_0x91f3('0x3b')]);return db[_0x91f3('0x28')][_0x91f3('0x40')](_0x456c43)[_0x91f3('0x24')](handleEntityNotFound(_0x2b22f7,null))[_0x91f3('0x24')](respondWithResult(_0x2b22f7,null))[_0x91f3('0x41')](handleError(_0x2b22f7,null));};exports[_0x91f3('0x42')]=function(_0x534f9d,_0x180ccc){return db[_0x91f3('0x28')][_0x91f3('0x42')](_0x534f9d['body'],{})[_0x91f3('0x24')](respondWithResult(_0x180ccc,0xc9))[_0x91f3('0x41')](handleError(_0x180ccc,null));};exports[_0x91f3('0x23')]=function(_0x183996,_0xef5588){if(_0x183996[_0x91f3('0x43')]['id']){delete _0x183996[_0x91f3('0x43')]['id'];}return db[_0x91f3('0x28')][_0x91f3('0x40')]({'where':{'id':_0x183996[_0x91f3('0x3f')]['id']}})['then'](handleEntityNotFound(_0xef5588,null))[_0x91f3('0x24')](saveUpdates(_0x183996[_0x91f3('0x43')],null))[_0x91f3('0x24')](respondWithResult(_0xef5588,null))['catch'](handleError(_0xef5588,null));};exports['destroy']=function(_0x43e264,_0x13bd36){return db[_0x91f3('0x28')][_0x91f3('0x40')]({'where':{'id':_0x43e264[_0x91f3('0x3f')]['id']}})[_0x91f3('0x24')](handleEntityNotFound(_0x13bd36,null))['then'](removeEntity(_0x13bd36,null))['catch'](handleError(_0x13bd36,null));};exports[_0x91f3('0x44')]=function(_0x209d55,_0xd575cb,_0x3c0af7){var _0x5f56d9={};var _0x4add5a={};var _0x1aa640;var _0x19ba27;return db['ServicenowConfiguration'][_0x91f3('0x45')]({'where':{'id':_0x209d55[_0x91f3('0x3f')]['id']}})[_0x91f3('0x24')](handleEntityNotFound(_0xd575cb,null))[_0x91f3('0x24')](function(_0x167448){if(_0x167448){_0x1aa640=_0x167448;_0x4add5a[_0x91f3('0x2b')]=_[_0x91f3('0x2e')](db[_0x91f3('0x46')][_0x91f3('0x29')]);_0x4add5a[_0x91f3('0x2d')]=_[_0x91f3('0x2e')](_0x209d55[_0x91f3('0x2d')]);_0x4add5a['filters']=_['intersection'](_0x4add5a[_0x91f3('0x2b')],_0x4add5a[_0x91f3('0x2d')]);_0x5f56d9[_0x91f3('0x32')]=_[_0x91f3('0x30')](_0x4add5a[_0x91f3('0x2b')],qs[_0x91f3('0x31')](_0x209d55[_0x91f3('0x2d')][_0x91f3('0x31')]));_0x5f56d9[_0x91f3('0x32')]=_0x5f56d9[_0x91f3('0x32')][_0x91f3('0x33')]?_0x5f56d9[_0x91f3('0x32')]:_0x4add5a['model'];_0x5f56d9[_0x91f3('0x47')]=qs[_0x91f3('0x34')](_0x209d55['query'][_0x91f3('0x34')]);_0x5f56d9[_0x91f3('0x35')]=qs[_0x91f3('0x2f')](_[_0x91f3('0x36')](_0x209d55[_0x91f3('0x2d')],_0x4add5a[_0x91f3('0x2f')]));if(_0x209d55[_0x91f3('0x2d')][_0x91f3('0x37')]){_0x5f56d9['where']=_['merge'](_0x5f56d9[_0x91f3('0x35')],{'$or':_[_0x91f3('0x2c')](_0x5f56d9[_0x91f3('0x32')],function(_0x4617e1){var _0x19bb90={};_0x19bb90[_0x4617e1]={'$like':'%'+_0x209d55['query'][_0x91f3('0x37')]+'%'};return _0x19bb90;})});}_0x5f56d9=_[_0x91f3('0x3a')]({},_0x5f56d9,_0x209d55[_0x91f3('0x3b')]);return _0x1aa640['getFields'](_0x5f56d9);}})[_0x91f3('0x24')](function(_0x30b9bb){if(_0x30b9bb){_0x19ba27=_0x30b9bb[_0x91f3('0x33')];if(!_0x209d55[_0x91f3('0x2d')][_0x91f3('0x48')]('nolimit')){_0x5f56d9[_0x91f3('0x1f')]=qs[_0x91f3('0x1f')](_0x209d55[_0x91f3('0x2d')][_0x91f3('0x1f')]);_0x5f56d9['offset']=qs[_0x91f3('0x1d')](_0x209d55['query'][_0x91f3('0x1d')]);}return _0x1aa640[_0x91f3('0x44')](_0x5f56d9);}})[_0x91f3('0x24')](function(_0x47663a){if(_0x47663a){return _0x47663a?{'count':_0x19ba27,'rows':_0x47663a}:null;}})[_0x91f3('0x24')](respondWithResult(_0xd575cb,null))[_0x91f3('0x41')](handleError(_0xd575cb,null));};exports[_0x91f3('0x49')]=function(_0x812d93,_0x39b72e,_0x173e11){var _0x6aa6b2={};var _0x12ffbb={};var _0x10096c;var _0x483d1f;return db[_0x91f3('0x28')][_0x91f3('0x45')]({'where':{'id':_0x812d93[_0x91f3('0x3f')]['id']}})[_0x91f3('0x24')](handleEntityNotFound(_0x39b72e,null))[_0x91f3('0x24')](function(_0x3442ad){if(_0x3442ad){_0x10096c=_0x3442ad;_0x12ffbb['model']=_['keys'](db['ServicenowField'][_0x91f3('0x29')]);_0x12ffbb[_0x91f3('0x2d')]=_['keys'](_0x812d93[_0x91f3('0x2d')]);_0x12ffbb[_0x91f3('0x2f')]=_[_0x91f3('0x30')](_0x12ffbb[_0x91f3('0x2b')],_0x12ffbb['query']);_0x6aa6b2[_0x91f3('0x32')]=_[_0x91f3('0x30')](_0x12ffbb[_0x91f3('0x2b')],qs[_0x91f3('0x31')](_0x812d93[_0x91f3('0x2d')]['fields']));_0x6aa6b2[_0x91f3('0x32')]=_0x6aa6b2[_0x91f3('0x32')][_0x91f3('0x33')]?_0x6aa6b2[_0x91f3('0x32')]:_0x12ffbb[_0x91f3('0x2b')];_0x6aa6b2[_0x91f3('0x47')]=qs[_0x91f3('0x34')](_0x812d93[_0x91f3('0x2d')][_0x91f3('0x34')]);_0x6aa6b2[_0x91f3('0x35')]=qs[_0x91f3('0x2f')](_['pick'](_0x812d93['query'],_0x12ffbb[_0x91f3('0x2f')]));if(_0x812d93[_0x91f3('0x2d')][_0x91f3('0x37')]){_0x6aa6b2[_0x91f3('0x35')]=_[_0x91f3('0x3a')](_0x6aa6b2[_0x91f3('0x35')],{'$or':_[_0x91f3('0x2c')](_0x6aa6b2[_0x91f3('0x32')],function(_0x35689c){var _0x17fc52={};_0x17fc52[_0x35689c]={'$like':'%'+_0x812d93['query'][_0x91f3('0x37')]+'%'};return _0x17fc52;})});}_0x6aa6b2=_['merge']({},_0x6aa6b2,_0x812d93[_0x91f3('0x3b')]);return _0x10096c[_0x91f3('0x49')](_0x6aa6b2);}})[_0x91f3('0x24')](function(_0xc02727){if(_0xc02727){_0x483d1f=_0xc02727[_0x91f3('0x33')];if(!_0x812d93[_0x91f3('0x2d')][_0x91f3('0x48')](_0x91f3('0x4a'))){_0x6aa6b2[_0x91f3('0x1f')]=qs[_0x91f3('0x1f')](_0x812d93[_0x91f3('0x2d')][_0x91f3('0x1f')]);_0x6aa6b2[_0x91f3('0x1d')]=qs[_0x91f3('0x1d')](_0x812d93[_0x91f3('0x2d')][_0x91f3('0x1d')]);}return _0x10096c[_0x91f3('0x49')](_0x6aa6b2);}})[_0x91f3('0x24')](function(_0x283b04){if(_0x283b04){return _0x283b04?{'count':_0x483d1f,'rows':_0x283b04}:null;}})[_0x91f3('0x24')](respondWithResult(_0x39b72e,null))[_0x91f3('0x41')](handleError(_0x39b72e,null));};exports[_0x91f3('0x4b')]=function(_0x1440a1,_0x4165b7,_0x26cf1b){var _0x5ddd3a={};var _0x474618={};var _0x2d9606;var _0x27a68e;return db[_0x91f3('0x28')][_0x91f3('0x45')]({'where':{'id':_0x1440a1[_0x91f3('0x3f')]['id']}})[_0x91f3('0x24')](handleEntityNotFound(_0x4165b7,null))['then'](function(_0x1094d9){if(_0x1094d9){_0x2d9606=_0x1094d9;_0x474618[_0x91f3('0x2b')]=_['keys'](db['ServicenowField'][_0x91f3('0x29')]);_0x474618[_0x91f3('0x2d')]=_['keys'](_0x1440a1[_0x91f3('0x2d')]);_0x474618[_0x91f3('0x2f')]=_[_0x91f3('0x30')](_0x474618[_0x91f3('0x2b')],_0x474618[_0x91f3('0x2d')]);_0x5ddd3a[_0x91f3('0x32')]=_[_0x91f3('0x30')](_0x474618['model'],qs['fields'](_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x31')]));_0x5ddd3a['attributes']=_0x5ddd3a[_0x91f3('0x32')][_0x91f3('0x33')]?_0x5ddd3a['attributes']:_0x474618['model'];_0x5ddd3a['order']=qs[_0x91f3('0x34')](_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x34')]);_0x5ddd3a[_0x91f3('0x35')]=qs[_0x91f3('0x2f')](_[_0x91f3('0x36')](_0x1440a1[_0x91f3('0x2d')],_0x474618[_0x91f3('0x2f')]));if(_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x37')]){_0x5ddd3a['where']=_[_0x91f3('0x3a')](_0x5ddd3a[_0x91f3('0x35')],{'$or':_['map'](_0x5ddd3a[_0x91f3('0x32')],function(_0x77a440){var _0x57f01f={};_0x57f01f[_0x77a440]={'$like':'%'+_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x37')]+'%'};return _0x57f01f;})});}_0x5ddd3a=_[_0x91f3('0x3a')]({},_0x5ddd3a,_0x1440a1[_0x91f3('0x3b')]);return _0x2d9606[_0x91f3('0x4b')](_0x5ddd3a);}})[_0x91f3('0x24')](function(_0x1f5062){if(_0x1f5062){_0x27a68e=_0x1f5062[_0x91f3('0x33')];if(!_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x48')](_0x91f3('0x4a'))){_0x5ddd3a['limit']=qs['limit'](_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x1f')]);_0x5ddd3a[_0x91f3('0x1d')]=qs[_0x91f3('0x1d')](_0x1440a1[_0x91f3('0x2d')][_0x91f3('0x1d')]);}return _0x2d9606[_0x91f3('0x4b')](_0x5ddd3a);}})[_0x91f3('0x24')](function(_0x530ada){if(_0x530ada){return _0x530ada?{'count':_0x27a68e,'rows':_0x530ada}:null;}})[_0x91f3('0x24')](respondWithResult(_0x4165b7,null))[_0x91f3('0x41')](handleError(_0x4165b7,null));};
\ No newline at end of file
+var _0x46b0=['then','error','stack','name','index','map','fieldName','type','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','ServicenowConfiguration','includeAll','include','findAll','rows','show','params','rawAttributes','options','catch','create','body','destroy','find','findOne','ServicenowField','getFields','nolimit','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','set','apply','reject','update'];(function(_0x3845b2,_0x5b818a){var _0x427b91=function(_0x451568){while(--_0x451568){_0x3845b2['push'](_0x3845b2['shift']());}};_0x427b91(++_0x5b818a);}(_0x46b0,0xcc));var _0x046b=function(_0xd2a707,_0x59eb38){_0xd2a707=_0xd2a707-0x0;var _0x11d062=_0x46b0[_0xd2a707];return _0x11d062;};'use strict';var emlformat=require(_0x046b('0x0'));var rimraf=require(_0x046b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x046b('0x2'));var rp=require(_0x046b('0x3'));var moment=require('moment');var BPromise=require(_0x046b('0x4'));var Mustache=require(_0x046b('0x5'));var util=require('util');var path=require(_0x046b('0x6'));var sox=require(_0x046b('0x7'));var csv=require(_0x046b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x046b('0x9'));var _=require(_0x046b('0xa'));var squel=require(_0x046b('0xb'));var crypto=require('crypto');var jsforce=require(_0x046b('0xc'));var deskjs=require(_0x046b('0xd'));var toCsv=require(_0x046b('0x8'));var querystring=require('querystring');var Papa=require(_0x046b('0xe'));var Redis=require(_0x046b('0xf'));var authService=require(_0x046b('0x10'));var qs=require(_0x046b('0x11'));var as=require(_0x046b('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x046b('0x13'))('api');var utils=require(_0x046b('0x14'));var config=require(_0x046b('0x15'));var licenseUtil=require(_0x046b('0x16'));var db=require(_0x046b('0x17'))['db'];function respondWithStatusCode(_0x47e505,_0x138970){_0x138970=_0x138970||0xcc;return function(_0x113f37){if(_0x113f37){return _0x47e505[_0x046b('0x18')](_0x138970);}return _0x47e505['status'](_0x138970)[_0x046b('0x19')]();};}function respondWithResult(_0xd7305f,_0x46d929){_0x46d929=_0x46d929||0xc8;return function(_0x27e4ec){if(_0x27e4ec){return _0xd7305f['status'](_0x46d929)[_0x046b('0x1a')](_0x27e4ec);}};}function respondWithFilteredResult(_0xca2772,_0x2f2240){return function(_0x2e8121){if(_0x2e8121){var _0x233d6a=typeof _0x2f2240[_0x046b('0x1b')]==='undefined'&&typeof _0x2f2240[_0x046b('0x1c')]===_0x046b('0x1d');var _0x52ddf6=_0x2e8121[_0x046b('0x1e')];var _0x1926ee=_0x233d6a?0x0:_0x2f2240[_0x046b('0x1b')];var _0x29f4dd=_0x233d6a?_0x2e8121[_0x046b('0x1e')]:_0x2f2240[_0x046b('0x1b')]+_0x2f2240[_0x046b('0x1c')];var _0x3641a1;if(_0x29f4dd>=_0x52ddf6){_0x29f4dd=_0x52ddf6;_0x3641a1=0xc8;}else{_0x3641a1=0xce;}_0xca2772[_0x046b('0x1f')](_0x3641a1);return _0xca2772[_0x046b('0x20')]('Content-Range',_0x1926ee+'-'+_0x29f4dd+'/'+_0x52ddf6)[_0x046b('0x1a')](_0x2e8121);}return null;};}function patchUpdates(_0x17f6f8){return function(_0x79855e){try{jsonpatch[_0x046b('0x21')](_0x79855e,_0x17f6f8,!![]);}catch(_0x4c318a){return BPromise[_0x046b('0x22')](_0x4c318a);}return _0x79855e['save']();};}function saveUpdates(_0x458811,_0x43ca9b){return function(_0x47152f){if(_0x47152f){return _0x47152f[_0x046b('0x23')](_0x458811)[_0x046b('0x24')](function(_0xe240e7){return _0xe240e7;});}return null;};}function removeEntity(_0x188cd9,_0x23139d){return function(_0x399464){if(_0x399464){return _0x399464['destroy']()[_0x046b('0x24')](function(){_0x188cd9[_0x046b('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d7426,_0x4177ed){return function(_0x389095){if(!_0x389095){_0x5d7426[_0x046b('0x18')](0x194);}return _0x389095;};}function handleError(_0x3b9e3c,_0x498ee1){_0x498ee1=_0x498ee1||0x1f4;return function(_0x3ee29c){logger[_0x046b('0x25')](_0x3ee29c[_0x046b('0x26')]);if(_0x3ee29c[_0x046b('0x27')]){delete _0x3ee29c[_0x046b('0x27')];}_0x3b9e3c[_0x046b('0x1f')](_0x498ee1)['send'](_0x3ee29c);};}exports[_0x046b('0x28')]=function(_0x1653e0,_0x3a0890){var _0xbf9ac0={},_0x42114d={},_0x548d10={'count':0x0,'rows':[]};var _0x19e737=_[_0x046b('0x29')](db['ServicenowConfiguration']['rawAttributes'],function(_0x44d138){return{'name':_0x44d138[_0x046b('0x2a')],'type':_0x44d138[_0x046b('0x2b')][_0x046b('0x2c')]};});_0x42114d['model']=_[_0x046b('0x29')](_0x19e737,'name');_0x42114d[_0x046b('0x2d')]=_[_0x046b('0x2e')](_0x1653e0[_0x046b('0x2d')]);_0x42114d['filters']=_[_0x046b('0x2f')](_0x42114d['model'],_0x42114d['query']);_0xbf9ac0['attributes']=_[_0x046b('0x2f')](_0x42114d[_0x046b('0x30')],qs['fields'](_0x1653e0[_0x046b('0x2d')][_0x046b('0x31')]));_0xbf9ac0[_0x046b('0x32')]=_0xbf9ac0['attributes'][_0x046b('0x33')]?_0xbf9ac0['attributes']:_0x42114d['model'];if(!_0x1653e0['query'][_0x046b('0x34')]('nolimit')){_0xbf9ac0[_0x046b('0x1c')]=qs['limit'](_0x1653e0[_0x046b('0x2d')]['limit']);_0xbf9ac0[_0x046b('0x1b')]=qs[_0x046b('0x1b')](_0x1653e0[_0x046b('0x2d')][_0x046b('0x1b')]);}_0xbf9ac0[_0x046b('0x35')]=qs[_0x046b('0x36')](_0x1653e0['query'][_0x046b('0x36')]);_0xbf9ac0[_0x046b('0x37')]=qs[_0x046b('0x38')](_[_0x046b('0x39')](_0x1653e0[_0x046b('0x2d')],_0x42114d['filters']),_0x19e737);if(_0x1653e0[_0x046b('0x2d')][_0x046b('0x3a')]){_0xbf9ac0[_0x046b('0x37')]=_[_0x046b('0x3b')](_0xbf9ac0[_0x046b('0x37')],{'$or':_[_0x046b('0x29')](_0x19e737,function(_0x2e8443){if(_0x2e8443[_0x046b('0x2b')]!=='VIRTUAL'){var _0x4aec06={};_0x4aec06[_0x2e8443[_0x046b('0x27')]]={'$like':'%'+_0x1653e0[_0x046b('0x2d')][_0x046b('0x3a')]+'%'};return _0x4aec06;}})});}_0xbf9ac0=_['merge']({},_0xbf9ac0,_0x1653e0['options']);var _0x5d40b4={'where':_0xbf9ac0['where']};return db[_0x046b('0x3c')][_0x046b('0x1e')](_0x5d40b4)[_0x046b('0x24')](function(_0x103530){_0x548d10[_0x046b('0x1e')]=_0x103530;if(_0x1653e0[_0x046b('0x2d')][_0x046b('0x3d')]){_0xbf9ac0[_0x046b('0x3e')]=[{'all':!![]}];}return db[_0x046b('0x3c')][_0x046b('0x3f')](_0xbf9ac0);})[_0x046b('0x24')](function(_0x3d0307){_0x548d10[_0x046b('0x40')]=_0x3d0307;return _0x548d10;})[_0x046b('0x24')](respondWithFilteredResult(_0x3a0890,_0xbf9ac0))['catch'](handleError(_0x3a0890,null));};exports[_0x046b('0x41')]=function(_0x250651,_0x48a3a7){var _0x2076e9={'raw':![],'where':{'id':_0x250651[_0x046b('0x42')]['id']}},_0x203556={};_0x203556[_0x046b('0x30')]=_[_0x046b('0x2e')](db['ServicenowConfiguration'][_0x046b('0x43')]);_0x203556[_0x046b('0x2d')]=_[_0x046b('0x2e')](_0x250651[_0x046b('0x2d')]);_0x203556['filters']=_[_0x046b('0x2f')](_0x203556['model'],_0x203556['query']);_0x2076e9[_0x046b('0x32')]=_['intersection'](_0x203556['model'],qs[_0x046b('0x31')](_0x250651[_0x046b('0x2d')][_0x046b('0x31')]));_0x2076e9[_0x046b('0x32')]=_0x2076e9[_0x046b('0x32')][_0x046b('0x33')]?_0x2076e9[_0x046b('0x32')]:_0x203556['model'];if(_0x250651['query'][_0x046b('0x3d')]){_0x2076e9[_0x046b('0x3e')]=[{'all':!![]}];}_0x2076e9=_[_0x046b('0x3b')]({},_0x2076e9,_0x250651[_0x046b('0x44')]);return db[_0x046b('0x3c')]['find'](_0x2076e9)[_0x046b('0x24')](handleEntityNotFound(_0x48a3a7,null))[_0x046b('0x24')](respondWithResult(_0x48a3a7,null))[_0x046b('0x45')](handleError(_0x48a3a7,null));};exports[_0x046b('0x46')]=function(_0x55d3b2,_0x159740){return db[_0x046b('0x3c')][_0x046b('0x46')](_0x55d3b2[_0x046b('0x47')],{})['then'](respondWithResult(_0x159740,0xc9))[_0x046b('0x45')](handleError(_0x159740,null));};exports[_0x046b('0x23')]=function(_0x3f054c,_0x352d8f){if(_0x3f054c['body']['id']){delete _0x3f054c[_0x046b('0x47')]['id'];}return db[_0x046b('0x3c')]['find']({'where':{'id':_0x3f054c[_0x046b('0x42')]['id']}})['then'](handleEntityNotFound(_0x352d8f,null))[_0x046b('0x24')](saveUpdates(_0x3f054c[_0x046b('0x47')],null))[_0x046b('0x24')](respondWithResult(_0x352d8f,null))['catch'](handleError(_0x352d8f,null));};exports[_0x046b('0x48')]=function(_0x5d8973,_0xeca13b){return db[_0x046b('0x3c')][_0x046b('0x49')]({'where':{'id':_0x5d8973['params']['id']}})[_0x046b('0x24')](handleEntityNotFound(_0xeca13b,null))[_0x046b('0x24')](removeEntity(_0xeca13b,null))[_0x046b('0x45')](handleError(_0xeca13b,null));};exports['getFields']=function(_0x55d8db,_0x7047f,_0x1bbb8e){var _0x5742be={};var _0x507111={};var _0x3c1c83;var _0x25f324;return db[_0x046b('0x3c')][_0x046b('0x4a')]({'where':{'id':_0x55d8db['params']['id']}})[_0x046b('0x24')](handleEntityNotFound(_0x7047f,null))[_0x046b('0x24')](function(_0x528f7a){if(_0x528f7a){_0x3c1c83=_0x528f7a;_0x507111['model']=_[_0x046b('0x2e')](db[_0x046b('0x4b')]['rawAttributes']);_0x507111['query']=_[_0x046b('0x2e')](_0x55d8db[_0x046b('0x2d')]);_0x507111[_0x046b('0x38')]=_[_0x046b('0x2f')](_0x507111[_0x046b('0x30')],_0x507111['query']);_0x5742be[_0x046b('0x32')]=_[_0x046b('0x2f')](_0x507111[_0x046b('0x30')],qs['fields'](_0x55d8db[_0x046b('0x2d')][_0x046b('0x31')]));_0x5742be[_0x046b('0x32')]=_0x5742be[_0x046b('0x32')][_0x046b('0x33')]?_0x5742be[_0x046b('0x32')]:_0x507111[_0x046b('0x30')];_0x5742be[_0x046b('0x35')]=qs[_0x046b('0x36')](_0x55d8db[_0x046b('0x2d')][_0x046b('0x36')]);_0x5742be[_0x046b('0x37')]=qs[_0x046b('0x38')](_[_0x046b('0x39')](_0x55d8db['query'],_0x507111[_0x046b('0x38')]));if(_0x55d8db['query'][_0x046b('0x3a')]){_0x5742be[_0x046b('0x37')]=_[_0x046b('0x3b')](_0x5742be[_0x046b('0x37')],{'$or':_[_0x046b('0x29')](_0x5742be[_0x046b('0x32')],function(_0x1addf4){var _0x248751={};_0x248751[_0x1addf4]={'$like':'%'+_0x55d8db[_0x046b('0x2d')][_0x046b('0x3a')]+'%'};return _0x248751;})});}_0x5742be=_[_0x046b('0x3b')]({},_0x5742be,_0x55d8db['options']);return _0x3c1c83[_0x046b('0x4c')](_0x5742be);}})['then'](function(_0x1cf901){if(_0x1cf901){_0x25f324=_0x1cf901[_0x046b('0x33')];if(!_0x55d8db[_0x046b('0x2d')][_0x046b('0x34')](_0x046b('0x4d'))){_0x5742be[_0x046b('0x1c')]=qs[_0x046b('0x1c')](_0x55d8db['query'][_0x046b('0x1c')]);_0x5742be[_0x046b('0x1b')]=qs[_0x046b('0x1b')](_0x55d8db[_0x046b('0x2d')][_0x046b('0x1b')]);}return _0x3c1c83['getFields'](_0x5742be);}})[_0x046b('0x24')](function(_0x8247e3){if(_0x8247e3){return _0x8247e3?{'count':_0x25f324,'rows':_0x8247e3}:null;}})[_0x046b('0x24')](respondWithResult(_0x7047f,null))['catch'](handleError(_0x7047f,null));};exports['getSubjects']=function(_0x3131e4,_0x4d7255,_0x18c0e1){var _0x25aebc={};var _0x50279e={};var _0x4e34ef;var _0x58bd3f;return db[_0x046b('0x3c')]['findOne']({'where':{'id':_0x3131e4[_0x046b('0x42')]['id']}})[_0x046b('0x24')](handleEntityNotFound(_0x4d7255,null))['then'](function(_0x227688){if(_0x227688){_0x4e34ef=_0x227688;_0x50279e[_0x046b('0x30')]=_[_0x046b('0x2e')](db['ServicenowField']['rawAttributes']);_0x50279e[_0x046b('0x2d')]=_[_0x046b('0x2e')](_0x3131e4[_0x046b('0x2d')]);_0x50279e['filters']=_[_0x046b('0x2f')](_0x50279e[_0x046b('0x30')],_0x50279e[_0x046b('0x2d')]);_0x25aebc['attributes']=_['intersection'](_0x50279e[_0x046b('0x30')],qs[_0x046b('0x31')](_0x3131e4[_0x046b('0x2d')]['fields']));_0x25aebc[_0x046b('0x32')]=_0x25aebc[_0x046b('0x32')][_0x046b('0x33')]?_0x25aebc['attributes']:_0x50279e['model'];_0x25aebc[_0x046b('0x35')]=qs[_0x046b('0x36')](_0x3131e4[_0x046b('0x2d')][_0x046b('0x36')]);_0x25aebc['where']=qs['filters'](_[_0x046b('0x39')](_0x3131e4['query'],_0x50279e['filters']));if(_0x3131e4[_0x046b('0x2d')][_0x046b('0x3a')]){_0x25aebc['where']=_[_0x046b('0x3b')](_0x25aebc[_0x046b('0x37')],{'$or':_['map'](_0x25aebc[_0x046b('0x32')],function(_0x1179c2){var _0x1ef493={};_0x1ef493[_0x1179c2]={'$like':'%'+_0x3131e4['query'][_0x046b('0x3a')]+'%'};return _0x1ef493;})});}_0x25aebc=_['merge']({},_0x25aebc,_0x3131e4['options']);return _0x4e34ef['getSubjects'](_0x25aebc);}})[_0x046b('0x24')](function(_0x523a47){if(_0x523a47){_0x58bd3f=_0x523a47[_0x046b('0x33')];if(!_0x3131e4[_0x046b('0x2d')][_0x046b('0x34')](_0x046b('0x4d'))){_0x25aebc[_0x046b('0x1c')]=qs[_0x046b('0x1c')](_0x3131e4['query'][_0x046b('0x1c')]);_0x25aebc[_0x046b('0x1b')]=qs['offset'](_0x3131e4[_0x046b('0x2d')][_0x046b('0x1b')]);}return _0x4e34ef[_0x046b('0x4e')](_0x25aebc);}})['then'](function(_0x369898){if(_0x369898){return _0x369898?{'count':_0x58bd3f,'rows':_0x369898}:null;}})['then'](respondWithResult(_0x4d7255,null))['catch'](handleError(_0x4d7255,null));};exports[_0x046b('0x4f')]=function(_0x42c1c5,_0x45b382,_0x1c9216){var _0x830280={};var _0x5cb240={};var _0x200fd4;var _0x40c06e;return db['ServicenowConfiguration'][_0x046b('0x4a')]({'where':{'id':_0x42c1c5[_0x046b('0x42')]['id']}})[_0x046b('0x24')](handleEntityNotFound(_0x45b382,null))[_0x046b('0x24')](function(_0xd2605f){if(_0xd2605f){_0x200fd4=_0xd2605f;_0x5cb240[_0x046b('0x30')]=_[_0x046b('0x2e')](db['ServicenowField'][_0x046b('0x43')]);_0x5cb240[_0x046b('0x2d')]=_['keys'](_0x42c1c5[_0x046b('0x2d')]);_0x5cb240['filters']=_[_0x046b('0x2f')](_0x5cb240[_0x046b('0x30')],_0x5cb240[_0x046b('0x2d')]);_0x830280[_0x046b('0x32')]=_[_0x046b('0x2f')](_0x5cb240[_0x046b('0x30')],qs[_0x046b('0x31')](_0x42c1c5['query'][_0x046b('0x31')]));_0x830280[_0x046b('0x32')]=_0x830280[_0x046b('0x32')]['length']?_0x830280[_0x046b('0x32')]:_0x5cb240['model'];_0x830280[_0x046b('0x35')]=qs[_0x046b('0x36')](_0x42c1c5['query'][_0x046b('0x36')]);_0x830280[_0x046b('0x37')]=qs[_0x046b('0x38')](_[_0x046b('0x39')](_0x42c1c5[_0x046b('0x2d')],_0x5cb240[_0x046b('0x38')]));if(_0x42c1c5[_0x046b('0x2d')]['filter']){_0x830280['where']=_[_0x046b('0x3b')](_0x830280['where'],{'$or':_[_0x046b('0x29')](_0x830280[_0x046b('0x32')],function(_0x104928){var _0x1c72b5={};_0x1c72b5[_0x104928]={'$like':'%'+_0x42c1c5['query']['filter']+'%'};return _0x1c72b5;})});}_0x830280=_['merge']({},_0x830280,_0x42c1c5[_0x046b('0x44')]);return _0x200fd4[_0x046b('0x4f')](_0x830280);}})['then'](function(_0x2b429d){if(_0x2b429d){_0x40c06e=_0x2b429d['length'];if(!_0x42c1c5[_0x046b('0x2d')][_0x046b('0x34')](_0x046b('0x4d'))){_0x830280[_0x046b('0x1c')]=qs['limit'](_0x42c1c5[_0x046b('0x2d')][_0x046b('0x1c')]);_0x830280['offset']=qs[_0x046b('0x1b')](_0x42c1c5[_0x046b('0x2d')][_0x046b('0x1b')]);}return _0x200fd4[_0x046b('0x4f')](_0x830280);}})['then'](function(_0x381f2c){if(_0x381f2c){return _0x381f2c?{'count':_0x40c06e,'rows':_0x381f2c}:null;}})[_0x046b('0x24')](respondWithResult(_0x45b382,null))[_0x046b('0x45')](handleError(_0x45b382,null));};
\ No newline at end of file
index dd3af9c..c13a353 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0598=['ServicenowConfiguration','int_servicenow_configurations','lodash','util','api','request-promise','path','exports'];(function(_0x3e32a8,_0x255953){var _0x2997b0=function(_0x2d564a){while(--_0x2d564a){_0x3e32a8['push'](_0x3e32a8['shift']());}};_0x2997b0(++_0x255953);}(_0x0598,0x92));var _0x8059=function(_0x24bb5c,_0x137883){_0x24bb5c=_0x24bb5c-0x0;var _0x15c0e4=_0x0598[_0x24bb5c];return _0x15c0e4;};'use strict';var _=require(_0x8059('0x0'));var util=require(_0x8059('0x1'));var logger=require('../../config/logger')(_0x8059('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8059('0x3'));var fs=require('fs');var path=require(_0x8059('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intServicenowConfiguration.attributes');module[_0x8059('0x5')]=function(_0xa7d7c1,_0x512c0f){return _0xa7d7c1['define'](_0x8059('0x6'),attributes,{'tableName':_0x8059('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x85f8=['./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x4aa017,_0x4692aa){var _0x3e5bb0=function(_0x555e81){while(--_0x555e81){_0x4aa017['push'](_0x4aa017['shift']());}};_0x3e5bb0(++_0x4692aa);}(_0x85f8,0xd7));var _0x885f=function(_0x3a8af0,_0xa738ca){_0x3a8af0=_0x3a8af0-0x0;var _0x4fa12a=_0x85f8[_0x3a8af0];return _0x4fa12a;};'use strict';var _=require(_0x885f('0x0'));var util=require(_0x885f('0x1'));var logger=require(_0x885f('0x2'))(_0x885f('0x3'));var moment=require(_0x885f('0x4'));var BPromise=require(_0x885f('0x5'));var rp=require(_0x885f('0x6'));var fs=require('fs');var path=require(_0x885f('0x7'));var rimraf=require('rimraf');var config=require(_0x885f('0x8'));var attributes=require(_0x885f('0x9'));module[_0x885f('0xa')]=function(_0x52404d,_0x3800c6){return _0x52404d[_0x885f('0xb')](_0x885f('0xc'),attributes,{'tableName':_0x885f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8a49e4e..f7117ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8876=['../../config/environment','jayson/promise','request','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x311f44,_0x1d7f5b){var _0x46f1e6=function(_0x27342a){while(--_0x27342a){_0x311f44['push'](_0x311f44['shift']());}};_0x46f1e6(++_0x1d7f5b);}(_0x8876,0xa0));var _0x6887=function(_0x44c583,_0xdc4d48){_0x44c583=_0x44c583-0x0;var _0x396a41=_0x8876[_0x44c583];return _0x396a41;};'use strict';var _=require('lodash');var util=require(_0x6887('0x0'));var moment=require(_0x6887('0x1'));var BPromise=require(_0x6887('0x2'));var rs=require(_0x6887('0x3'));var fs=require('fs');var Redis=require(_0x6887('0x4'));var db=require(_0x6887('0x5'))['db'];var utils=require(_0x6887('0x6'));var logger=require('../../config/logger')(_0x6887('0x7'));var config=require(_0x6887('0x8'));var jayson=require(_0x6887('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4ddd18,_0x15c7bb,_0xa01de1){return new BPromise(function(_0x456b72,_0x3a0e11){return client[_0x6887('0xa')](_0x4ddd18,_0xa01de1)['then'](function(_0x3eef49){logger[_0x6887('0xb')](_0x6887('0xc'),_0x15c7bb,_0x6887('0xd'));logger[_0x6887('0xe')](_0x6887('0xf'),_0x15c7bb,_0x6887('0xd'),JSON[_0x6887('0x10')](_0x3eef49));if(_0x3eef49[_0x6887('0x11')]){if(_0x3eef49[_0x6887('0x11')][_0x6887('0x12')]===0x1f4){logger['error'](_0x6887('0xc'),_0x15c7bb,_0x3eef49['error'][_0x6887('0x13')]);return _0x3a0e11(_0x3eef49[_0x6887('0x11')][_0x6887('0x13')]);}logger['error'](_0x6887('0xc'),_0x15c7bb,_0x3eef49['error']['message']);return _0x456b72(_0x3eef49[_0x6887('0x11')][_0x6887('0x13')]);}else{logger[_0x6887('0xb')](_0x6887('0xc'),_0x15c7bb,_0x6887('0xd'));_0x456b72(_0x3eef49['result'][_0x6887('0x13')]);}})[_0x6887('0x14')](function(_0x550f0d){logger[_0x6887('0x11')](_0x6887('0xc'),_0x15c7bb,_0x550f0d);_0x3a0e11(_0x550f0d);});});}
\ No newline at end of file
+var _0x8c5a=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','lodash','util'];(function(_0x1b9965,_0x2bbfb1){var _0x5492b9=function(_0x378f24){while(--_0x378f24){_0x1b9965['push'](_0x1b9965['shift']());}};_0x5492b9(++_0x2bbfb1);}(_0x8c5a,0x1b6));var _0xa8c5=function(_0x397d14,_0x5ae35a){_0x397d14=_0x397d14-0x0;var _0x3f293c=_0x8c5a[_0x397d14];return _0x3f293c;};'use strict';var _=require(_0xa8c5('0x0'));var util=require(_0xa8c5('0x1'));var moment=require(_0xa8c5('0x2'));var BPromise=require(_0xa8c5('0x3'));var rs=require(_0xa8c5('0x4'));var fs=require('fs');var Redis=require(_0xa8c5('0x5'));var db=require(_0xa8c5('0x6'))['db'];var utils=require(_0xa8c5('0x7'));var logger=require('../../config/logger')(_0xa8c5('0x8'));var config=require(_0xa8c5('0x9'));var jayson=require(_0xa8c5('0xa'));var client=jayson[_0xa8c5('0xb')][_0xa8c5('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x52840e,_0x4adddb,_0x369858){return new BPromise(function(_0x15531e,_0x9ab944){return client['request'](_0x52840e,_0x369858)[_0xa8c5('0xd')](function(_0x14014e){logger['info'](_0xa8c5('0xe'),_0x4adddb,_0xa8c5('0xf'));logger['debug'](_0xa8c5('0x10'),_0x4adddb,_0xa8c5('0xf'),JSON[_0xa8c5('0x11')](_0x14014e));if(_0x14014e[_0xa8c5('0x12')]){if(_0x14014e[_0xa8c5('0x12')]['code']===0x1f4){logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x4adddb,_0x14014e[_0xa8c5('0x12')][_0xa8c5('0x13')]);return _0x9ab944(_0x14014e[_0xa8c5('0x12')][_0xa8c5('0x13')]);}logger[_0xa8c5('0x12')](_0xa8c5('0xe'),_0x4adddb,_0x14014e[_0xa8c5('0x12')][_0xa8c5('0x13')]);return _0x15531e(_0x14014e['error'][_0xa8c5('0x13')]);}else{logger[_0xa8c5('0x14')](_0xa8c5('0xe'),_0x4adddb,_0xa8c5('0xf'));_0x15531e(_0x14014e[_0xa8c5('0x15')][_0xa8c5('0x13')]);}})['catch'](function(_0xafd0a){logger[_0xa8c5('0x12')](_0xa8c5('0xe'),_0x4adddb,_0xafd0a);_0x9ab944(_0xafd0a);});});}
\ No newline at end of file
index 4ad275b..2cb1cec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc175=['exports','multer','util','path','express','fs-extra','../../components/interaction/service','isAuthenticated','get','create','put','update','delete','/:id'];(function(_0x330723,_0x8de382){var _0x60c546=function(_0xd6d3fe){while(--_0xd6d3fe){_0x330723['push'](_0x330723['shift']());}};_0x60c546(++_0x8de382);}(_0xc175,0x151));var _0x5c17=function(_0x5c229d,_0x1b189c){_0x5c229d=_0x5c229d-0x0;var _0x385003=_0xc175[_0x5c229d];return _0x385003;};'use strict';var multer=require(_0x5c17('0x0'));var util=require(_0x5c17('0x1'));var path=require(_0x5c17('0x2'));var timeout=require('connect-timeout');var express=require(_0x5c17('0x3'));var router=express['Router']();var fs_extra=require(_0x5c17('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5c17('0x5'));var config=require('../../config/environment');var controller=require('./intServicenowField.controller');router['get']('/',auth[_0x5c17('0x6')](),controller['index']);router[_0x5c17('0x7')]('/:id',auth[_0x5c17('0x6')](),controller['show']);router['post']('/',auth[_0x5c17('0x6')](),controller[_0x5c17('0x8')]);router[_0x5c17('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x5c17('0xa')]);router[_0x5c17('0xb')](_0x5c17('0xc'),auth[_0x5c17('0x6')](),controller['destroy']);module[_0x5c17('0xd')]=router;
\ No newline at end of file
+var _0xa1c8=['delete','exports','multer','util','path','express','Router','../../components/auth/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index','/:id','show','post','update'];(function(_0x72a819,_0x35c1a4){var _0x14b22a=function(_0x48f059){while(--_0x48f059){_0x72a819['push'](_0x72a819['shift']());}};_0x14b22a(++_0x35c1a4);}(_0xa1c8,0xac));var _0x8a1c=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0xa1c8[_0x4a747d];return _0x3a5b5c;};'use strict';var multer=require(_0x8a1c('0x0'));var util=require(_0x8a1c('0x1'));var path=require(_0x8a1c('0x2'));var timeout=require('connect-timeout');var express=require(_0x8a1c('0x3'));var router=express[_0x8a1c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8a1c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8a1c('0x6'));var controller=require(_0x8a1c('0x7'));router[_0x8a1c('0x8')]('/',auth[_0x8a1c('0x9')](),controller[_0x8a1c('0xa')]);router['get'](_0x8a1c('0xb'),auth['isAuthenticated'](),controller[_0x8a1c('0xc')]);router[_0x8a1c('0xd')]('/',auth[_0x8a1c('0x9')](),controller['create']);router['put'](_0x8a1c('0xb'),auth['isAuthenticated'](),controller[_0x8a1c('0xe')]);router[_0x8a1c('0xf')](_0x8a1c('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x8a1c('0x10')]=router;
\ No newline at end of file
index eb4c9ff..cb72b25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05c9=['exports','ENUM','customVariable','keyValue','picklist','string','variable','STRING','BOOLEAN','sequelize'];(function(_0x5c03a0,_0x6d679f){var _0x31f05f=function(_0x1d8b4b){while(--_0x1d8b4b){_0x5c03a0['push'](_0x5c03a0['shift']());}};_0x31f05f(++_0x6d679f);}(_0x05c9,0xa9));var _0x905c=function(_0x27524b,_0x3b0c02){_0x27524b=_0x27524b-0x0;var _0x1b250c=_0x05c9[_0x27524b];return _0x1b250c;};'use strict';var Sequelize=require(_0x905c('0x0'));module[_0x905c('0x1')]={'type':{'type':Sequelize[_0x905c('0x2')]('string','variable',_0x905c('0x3'),_0x905c('0x4'),_0x905c('0x5')),'defaultValue':_0x905c('0x6')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x905c('0x2')](_0x905c('0x6'),_0x905c('0x7'),_0x905c('0x3'))},'keyContent':{'type':Sequelize[_0x905c('0x8')]},'idField':{'type':Sequelize[_0x905c('0x8')]},'nameField':{'type':Sequelize[_0x905c('0x8')]},'customField':{'type':Sequelize[_0x905c('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3aa8=['keyValue','STRING','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x2896ce,_0x7acb47){var _0x3dc50d=function(_0x566e7a){while(--_0x566e7a){_0x2896ce['push'](_0x2896ce['shift']());}};_0x3dc50d(++_0x7acb47);}(_0x3aa8,0x1b2));var _0x83aa=function(_0x5b9d3f,_0x1f73d9){_0x5b9d3f=_0x5b9d3f-0x0;var _0x27984b=_0x3aa8[_0x5b9d3f];return _0x27984b;};'use strict';var Sequelize=require(_0x83aa('0x0'));module[_0x83aa('0x1')]={'type':{'type':Sequelize[_0x83aa('0x2')](_0x83aa('0x3'),_0x83aa('0x4'),_0x83aa('0x5'),_0x83aa('0x6'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x83aa('0x7')]},'key':{'type':Sequelize[_0x83aa('0x7')]},'keyType':{'type':Sequelize['ENUM']('string','variable',_0x83aa('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x83aa('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x83aa('0x7')]}};
\ No newline at end of file
index 09bdf00..be40a2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x437e=['moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','reject','save','update','then','destroy','stack','name','send','index','map','ServicenowField','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','order','sort','where','pick','filters','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x425dd0,_0x2070d8){var _0x5ecde7=function(_0x4ed7da){while(--_0x4ed7da){_0x425dd0['push'](_0x425dd0['shift']());}};_0x5ecde7(++_0x2070d8);}(_0x437e,0x177));var _0xe437=function(_0x59312d,_0x52bb25){_0x59312d=_0x59312d-0x0;var _0x13ca66=_0x437e[_0x59312d];return _0x13ca66;};'use strict';var emlformat=require(_0xe437('0x0'));var rimraf=require(_0xe437('0x1'));var zipdir=require(_0xe437('0x2'));var jsonpatch=require(_0xe437('0x3'));var rp=require(_0xe437('0x4'));var moment=require(_0xe437('0x5'));var BPromise=require(_0xe437('0x6'));var Mustache=require(_0xe437('0x7'));var util=require(_0xe437('0x8'));var path=require(_0xe437('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe437('0xa'));var fs=require('fs');var fs_extra=require(_0xe437('0xb'));var _=require(_0xe437('0xc'));var squel=require(_0xe437('0xd'));var crypto=require(_0xe437('0xe'));var jsforce=require(_0xe437('0xf'));var deskjs=require(_0xe437('0x10'));var toCsv=require(_0xe437('0x11'));var querystring=require(_0xe437('0x12'));var Papa=require('papaparse');var Redis=require(_0xe437('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xe437('0x14'));var as=require(_0xe437('0x15'));var hardwareService=require(_0xe437('0x16'));var logger=require(_0xe437('0x17'))(_0xe437('0x18'));var utils=require(_0xe437('0x19'));var config=require(_0xe437('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xe437('0x1b'))['db'];function respondWithStatusCode(_0x378502,_0x62e59f){_0x62e59f=_0x62e59f||0xcc;return function(_0x453457){if(_0x453457){return _0x378502[_0xe437('0x1c')](_0x62e59f);}return _0x378502[_0xe437('0x1d')](_0x62e59f)[_0xe437('0x1e')]();};}function respondWithResult(_0x3cae76,_0x52ea2e){_0x52ea2e=_0x52ea2e||0xc8;return function(_0x7fe602){if(_0x7fe602){return _0x3cae76['status'](_0x52ea2e)['json'](_0x7fe602);}};}function respondWithFilteredResult(_0x50bf7b,_0x265f85){return function(_0x10d3f8){if(_0x10d3f8){var _0x1d591f=typeof _0x265f85[_0xe437('0x1f')]===_0xe437('0x20')&&typeof _0x265f85[_0xe437('0x21')]===_0xe437('0x20');var _0x39d93d=_0x10d3f8[_0xe437('0x22')];var _0x2621bf=_0x1d591f?0x0:_0x265f85[_0xe437('0x1f')];var _0x2af385=_0x1d591f?_0x10d3f8[_0xe437('0x22')]:_0x265f85[_0xe437('0x1f')]+_0x265f85[_0xe437('0x21')];var _0x353f91;if(_0x2af385>=_0x39d93d){_0x2af385=_0x39d93d;_0x353f91=0xc8;}else{_0x353f91=0xce;}_0x50bf7b[_0xe437('0x1d')](_0x353f91);return _0x50bf7b['set'](_0xe437('0x23'),_0x2621bf+'-'+_0x2af385+'/'+_0x39d93d)[_0xe437('0x24')](_0x10d3f8);}return null;};}function patchUpdates(_0x4374f6){return function(_0x298339){try{jsonpatch['apply'](_0x298339,_0x4374f6,!![]);}catch(_0x4a5ac7){return BPromise[_0xe437('0x25')](_0x4a5ac7);}return _0x298339[_0xe437('0x26')]();};}function saveUpdates(_0x25257b,_0x3f4660){return function(_0x993d7c){if(_0x993d7c){return _0x993d7c[_0xe437('0x27')](_0x25257b)[_0xe437('0x28')](function(_0xd53bb1){return _0xd53bb1;});}return null;};}function removeEntity(_0x81291a,_0x2d39a1){return function(_0x295e5e){if(_0x295e5e){return _0x295e5e[_0xe437('0x29')]()[_0xe437('0x28')](function(){_0x81291a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x252768,_0x169654){return function(_0x1eac40){if(!_0x1eac40){_0x252768[_0xe437('0x1c')](0x194);}return _0x1eac40;};}function handleError(_0x4bb21c,_0x4224e8){_0x4224e8=_0x4224e8||0x1f4;return function(_0x22467e){logger['error'](_0x22467e[_0xe437('0x2a')]);if(_0x22467e[_0xe437('0x2b')]){delete _0x22467e['name'];}_0x4bb21c['status'](_0x4224e8)[_0xe437('0x2c')](_0x22467e);};}exports[_0xe437('0x2d')]=function(_0xc8e815,_0x3be656){var _0x276c5f={},_0x4a7419={},_0x17963b={'count':0x0,'rows':[]};var _0x1a23f1=_[_0xe437('0x2e')](db[_0xe437('0x2f')][_0xe437('0x30')],function(_0x55cde7){return{'name':_0x55cde7[_0xe437('0x31')],'type':_0x55cde7[_0xe437('0x32')][_0xe437('0x33')]};});_0x4a7419[_0xe437('0x34')]=_[_0xe437('0x2e')](_0x1a23f1,'name');_0x4a7419[_0xe437('0x35')]=_[_0xe437('0x36')](_0xc8e815['query']);_0x4a7419['filters']=_['intersection'](_0x4a7419['model'],_0x4a7419[_0xe437('0x35')]);_0x276c5f[_0xe437('0x37')]=_[_0xe437('0x38')](_0x4a7419[_0xe437('0x34')],qs[_0xe437('0x39')](_0xc8e815[_0xe437('0x35')][_0xe437('0x39')]));_0x276c5f['attributes']=_0x276c5f[_0xe437('0x37')][_0xe437('0x3a')]?_0x276c5f[_0xe437('0x37')]:_0x4a7419[_0xe437('0x34')];if(!_0xc8e815[_0xe437('0x35')]['hasOwnProperty']('nolimit')){_0x276c5f['limit']=qs[_0xe437('0x21')](_0xc8e815[_0xe437('0x35')]['limit']);_0x276c5f[_0xe437('0x1f')]=qs['offset'](_0xc8e815[_0xe437('0x35')][_0xe437('0x1f')]);}_0x276c5f[_0xe437('0x3b')]=qs[_0xe437('0x3c')](_0xc8e815[_0xe437('0x35')][_0xe437('0x3c')]);_0x276c5f[_0xe437('0x3d')]=qs['filters'](_[_0xe437('0x3e')](_0xc8e815[_0xe437('0x35')],_0x4a7419[_0xe437('0x3f')]),_0x1a23f1);if(_0xc8e815['query'][_0xe437('0x40')]){_0x276c5f['where']=_['merge'](_0x276c5f[_0xe437('0x3d')],{'$or':_[_0xe437('0x2e')](_0x1a23f1,function(_0xdb1133){if(_0xdb1133[_0xe437('0x32')]!==_0xe437('0x41')){var _0x279a79={};_0x279a79[_0xdb1133[_0xe437('0x2b')]]={'$like':'%'+_0xc8e815['query'][_0xe437('0x40')]+'%'};return _0x279a79;}})});}_0x276c5f=_['merge']({},_0x276c5f,_0xc8e815[_0xe437('0x42')]);var _0x401c22={'where':_0x276c5f[_0xe437('0x3d')]};return db['ServicenowField'][_0xe437('0x22')](_0x401c22)['then'](function(_0x3c5fc3){_0x17963b[_0xe437('0x22')]=_0x3c5fc3;if(_0xc8e815[_0xe437('0x35')][_0xe437('0x43')]){_0x276c5f[_0xe437('0x44')]=[{'all':!![]}];}return db[_0xe437('0x2f')][_0xe437('0x45')](_0x276c5f);})[_0xe437('0x28')](function(_0x209c4b){_0x17963b[_0xe437('0x46')]=_0x209c4b;return _0x17963b;})['then'](respondWithFilteredResult(_0x3be656,_0x276c5f))[_0xe437('0x47')](handleError(_0x3be656,null));};exports['show']=function(_0x28daa5,_0x2fc34c){var _0x5e4bd7={'raw':!![],'where':{'id':_0x28daa5[_0xe437('0x48')]['id']}},_0x39bdd2={};_0x39bdd2[_0xe437('0x34')]=_[_0xe437('0x36')](db[_0xe437('0x2f')][_0xe437('0x30')]);_0x39bdd2[_0xe437('0x35')]=_[_0xe437('0x36')](_0x28daa5[_0xe437('0x35')]);_0x39bdd2[_0xe437('0x3f')]=_[_0xe437('0x38')](_0x39bdd2[_0xe437('0x34')],_0x39bdd2[_0xe437('0x35')]);_0x5e4bd7[_0xe437('0x37')]=_[_0xe437('0x38')](_0x39bdd2[_0xe437('0x34')],qs['fields'](_0x28daa5[_0xe437('0x35')]['fields']));_0x5e4bd7[_0xe437('0x37')]=_0x5e4bd7['attributes'][_0xe437('0x3a')]?_0x5e4bd7[_0xe437('0x37')]:_0x39bdd2['model'];if(_0x28daa5['query'][_0xe437('0x43')]){_0x5e4bd7[_0xe437('0x44')]=[{'all':!![]}];}_0x5e4bd7=_['merge']({},_0x5e4bd7,_0x28daa5['options']);return db['ServicenowField'][_0xe437('0x49')](_0x5e4bd7)['then'](handleEntityNotFound(_0x2fc34c,null))[_0xe437('0x28')](respondWithResult(_0x2fc34c,null))['catch'](handleError(_0x2fc34c,null));};exports[_0xe437('0x4a')]=function(_0x45ab3a,_0x391f01){return db[_0xe437('0x2f')]['create'](_0x45ab3a['body'],{})[_0xe437('0x28')](respondWithResult(_0x391f01,0xc9))['catch'](handleError(_0x391f01,null));};exports['update']=function(_0x492ca3,_0xe985df){if(_0x492ca3[_0xe437('0x4b')]['id']){delete _0x492ca3[_0xe437('0x4b')]['id'];}return db[_0xe437('0x2f')][_0xe437('0x49')]({'where':{'id':_0x492ca3[_0xe437('0x48')]['id']}})[_0xe437('0x28')](handleEntityNotFound(_0xe985df,null))[_0xe437('0x28')](saveUpdates(_0x492ca3[_0xe437('0x4b')],null))[_0xe437('0x28')](respondWithResult(_0xe985df,null))['catch'](handleError(_0xe985df,null));};exports[_0xe437('0x29')]=function(_0x29fd81,_0x1b549a){return db[_0xe437('0x2f')]['find']({'where':{'id':_0x29fd81[_0xe437('0x48')]['id']}})['then'](handleEntityNotFound(_0x1b549a,null))[_0xe437('0x28')](removeEntity(_0x1b549a,null))[_0xe437('0x47')](handleError(_0x1b549a,null));};
\ No newline at end of file
+var _0x23a5=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ServicenowField','include','findAll','rows','catch','show','params','includeAll','find','create','body','eml-format','rimraf','zip-dir'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x23a5,0x19c));var _0x523a=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x23a5[_0x273c39];return _0x46d6b5;};'use strict';var emlformat=require(_0x523a('0x0'));var rimraf=require(_0x523a('0x1'));var zipdir=require(_0x523a('0x2'));var jsonpatch=require(_0x523a('0x3'));var rp=require(_0x523a('0x4'));var moment=require(_0x523a('0x5'));var BPromise=require(_0x523a('0x6'));var Mustache=require(_0x523a('0x7'));var util=require(_0x523a('0x8'));var path=require(_0x523a('0x9'));var sox=require(_0x523a('0xa'));var csv=require('to-csv');var ejs=require(_0x523a('0xb'));var fs=require('fs');var fs_extra=require(_0x523a('0xc'));var _=require(_0x523a('0xd'));var squel=require('squel');var crypto=require(_0x523a('0xe'));var jsforce=require(_0x523a('0xf'));var deskjs=require(_0x523a('0x10'));var toCsv=require(_0x523a('0x11'));var querystring=require(_0x523a('0x12'));var Papa=require(_0x523a('0x13'));var Redis=require(_0x523a('0x14'));var authService=require(_0x523a('0x15'));var qs=require(_0x523a('0x16'));var as=require(_0x523a('0x17'));var hardwareService=require(_0x523a('0x18'));var logger=require(_0x523a('0x19'))(_0x523a('0x1a'));var utils=require(_0x523a('0x1b'));var config=require(_0x523a('0x1c'));var licenseUtil=require(_0x523a('0x1d'));var db=require(_0x523a('0x1e'))['db'];function respondWithStatusCode(_0x68305a,_0x49d1b8){_0x49d1b8=_0x49d1b8||0xcc;return function(_0x1ee4eb){if(_0x1ee4eb){return _0x68305a[_0x523a('0x1f')](_0x49d1b8);}return _0x68305a[_0x523a('0x20')](_0x49d1b8)[_0x523a('0x21')]();};}function respondWithResult(_0x49ceee,_0x396731){_0x396731=_0x396731||0xc8;return function(_0x334f40){if(_0x334f40){return _0x49ceee['status'](_0x396731)[_0x523a('0x22')](_0x334f40);}};}function respondWithFilteredResult(_0x417ae7,_0x2b3eb){return function(_0x4841dc){if(_0x4841dc){var _0x27aa7c=typeof _0x2b3eb[_0x523a('0x23')]===_0x523a('0x24')&&typeof _0x2b3eb[_0x523a('0x25')]===_0x523a('0x24');var _0x290546=_0x4841dc[_0x523a('0x26')];var _0x1b97c1=_0x27aa7c?0x0:_0x2b3eb['offset'];var _0x23b135=_0x27aa7c?_0x4841dc[_0x523a('0x26')]:_0x2b3eb[_0x523a('0x23')]+_0x2b3eb[_0x523a('0x25')];var _0x1f90cb;if(_0x23b135>=_0x290546){_0x23b135=_0x290546;_0x1f90cb=0xc8;}else{_0x1f90cb=0xce;}_0x417ae7['status'](_0x1f90cb);return _0x417ae7[_0x523a('0x27')](_0x523a('0x28'),_0x1b97c1+'-'+_0x23b135+'/'+_0x290546)['json'](_0x4841dc);}return null;};}function patchUpdates(_0x1ca831){return function(_0x522d10){try{jsonpatch[_0x523a('0x29')](_0x522d10,_0x1ca831,!![]);}catch(_0x37005c){return BPromise[_0x523a('0x2a')](_0x37005c);}return _0x522d10[_0x523a('0x2b')]();};}function saveUpdates(_0x23ec02,_0x3a6138){return function(_0x187c7a){if(_0x187c7a){return _0x187c7a[_0x523a('0x2c')](_0x23ec02)[_0x523a('0x2d')](function(_0x12f492){return _0x12f492;});}return null;};}function removeEntity(_0x14c3ec,_0x56b1e6){return function(_0x12ca7d){if(_0x12ca7d){return _0x12ca7d[_0x523a('0x2e')]()['then'](function(){_0x14c3ec['status'](0xcc)[_0x523a('0x21')]();});}};}function handleEntityNotFound(_0x45edd1,_0x59f18b){return function(_0x216a21){if(!_0x216a21){_0x45edd1[_0x523a('0x1f')](0x194);}return _0x216a21;};}function handleError(_0x42cadd,_0x172663){_0x172663=_0x172663||0x1f4;return function(_0x59010e){logger['error'](_0x59010e[_0x523a('0x2f')]);if(_0x59010e['name']){delete _0x59010e[_0x523a('0x30')];}_0x42cadd['status'](_0x172663)[_0x523a('0x31')](_0x59010e);};}exports[_0x523a('0x32')]=function(_0x50ebe8,_0x35dac1){var _0xbf44ac={},_0xbb479f={},_0x5b64a0={'count':0x0,'rows':[]};var _0x550db6=_[_0x523a('0x33')](db['ServicenowField'][_0x523a('0x34')],function(_0x1244b2){return{'name':_0x1244b2[_0x523a('0x35')],'type':_0x1244b2[_0x523a('0x36')]['key']};});_0xbb479f[_0x523a('0x37')]=_[_0x523a('0x33')](_0x550db6,_0x523a('0x30'));_0xbb479f[_0x523a('0x38')]=_[_0x523a('0x39')](_0x50ebe8[_0x523a('0x38')]);_0xbb479f[_0x523a('0x3a')]=_['intersection'](_0xbb479f[_0x523a('0x37')],_0xbb479f['query']);_0xbf44ac[_0x523a('0x3b')]=_[_0x523a('0x3c')](_0xbb479f['model'],qs[_0x523a('0x3d')](_0x50ebe8['query'][_0x523a('0x3d')]));_0xbf44ac[_0x523a('0x3b')]=_0xbf44ac[_0x523a('0x3b')]['length']?_0xbf44ac['attributes']:_0xbb479f[_0x523a('0x37')];if(!_0x50ebe8[_0x523a('0x38')][_0x523a('0x3e')](_0x523a('0x3f'))){_0xbf44ac[_0x523a('0x25')]=qs['limit'](_0x50ebe8[_0x523a('0x38')][_0x523a('0x25')]);_0xbf44ac['offset']=qs[_0x523a('0x23')](_0x50ebe8[_0x523a('0x38')][_0x523a('0x23')]);}_0xbf44ac[_0x523a('0x40')]=qs[_0x523a('0x41')](_0x50ebe8[_0x523a('0x38')][_0x523a('0x41')]);_0xbf44ac[_0x523a('0x42')]=qs[_0x523a('0x3a')](_[_0x523a('0x43')](_0x50ebe8['query'],_0xbb479f[_0x523a('0x3a')]),_0x550db6);if(_0x50ebe8[_0x523a('0x38')][_0x523a('0x44')]){_0xbf44ac['where']=_[_0x523a('0x45')](_0xbf44ac[_0x523a('0x42')],{'$or':_[_0x523a('0x33')](_0x550db6,function(_0x3e0674){if(_0x3e0674['type']!==_0x523a('0x46')){var _0x382e69={};_0x382e69[_0x3e0674[_0x523a('0x30')]]={'$like':'%'+_0x50ebe8[_0x523a('0x38')][_0x523a('0x44')]+'%'};return _0x382e69;}})});}_0xbf44ac=_[_0x523a('0x45')]({},_0xbf44ac,_0x50ebe8[_0x523a('0x47')]);var _0x2e2284={'where':_0xbf44ac[_0x523a('0x42')]};return db[_0x523a('0x48')]['count'](_0x2e2284)[_0x523a('0x2d')](function(_0x4c1025){_0x5b64a0[_0x523a('0x26')]=_0x4c1025;if(_0x50ebe8[_0x523a('0x38')]['includeAll']){_0xbf44ac[_0x523a('0x49')]=[{'all':!![]}];}return db[_0x523a('0x48')][_0x523a('0x4a')](_0xbf44ac);})['then'](function(_0x444397){_0x5b64a0[_0x523a('0x4b')]=_0x444397;return _0x5b64a0;})[_0x523a('0x2d')](respondWithFilteredResult(_0x35dac1,_0xbf44ac))[_0x523a('0x4c')](handleError(_0x35dac1,null));};exports[_0x523a('0x4d')]=function(_0x1eac03,_0xcdaf5f){var _0x26f0ab={'raw':!![],'where':{'id':_0x1eac03[_0x523a('0x4e')]['id']}},_0x267b3c={};_0x267b3c[_0x523a('0x37')]=_[_0x523a('0x39')](db[_0x523a('0x48')][_0x523a('0x34')]);_0x267b3c[_0x523a('0x38')]=_[_0x523a('0x39')](_0x1eac03[_0x523a('0x38')]);_0x267b3c[_0x523a('0x3a')]=_[_0x523a('0x3c')](_0x267b3c[_0x523a('0x37')],_0x267b3c[_0x523a('0x38')]);_0x26f0ab['attributes']=_[_0x523a('0x3c')](_0x267b3c[_0x523a('0x37')],qs[_0x523a('0x3d')](_0x1eac03[_0x523a('0x38')][_0x523a('0x3d')]));_0x26f0ab[_0x523a('0x3b')]=_0x26f0ab[_0x523a('0x3b')]['length']?_0x26f0ab['attributes']:_0x267b3c[_0x523a('0x37')];if(_0x1eac03[_0x523a('0x38')][_0x523a('0x4f')]){_0x26f0ab[_0x523a('0x49')]=[{'all':!![]}];}_0x26f0ab=_[_0x523a('0x45')]({},_0x26f0ab,_0x1eac03[_0x523a('0x47')]);return db['ServicenowField'][_0x523a('0x50')](_0x26f0ab)[_0x523a('0x2d')](handleEntityNotFound(_0xcdaf5f,null))[_0x523a('0x2d')](respondWithResult(_0xcdaf5f,null))[_0x523a('0x4c')](handleError(_0xcdaf5f,null));};exports[_0x523a('0x51')]=function(_0x17ba06,_0x3764fd){return db[_0x523a('0x48')][_0x523a('0x51')](_0x17ba06[_0x523a('0x52')],{})[_0x523a('0x2d')](respondWithResult(_0x3764fd,0xc9))['catch'](handleError(_0x3764fd,null));};exports[_0x523a('0x2c')]=function(_0x26f62f,_0x236456){if(_0x26f62f['body']['id']){delete _0x26f62f['body']['id'];}return db[_0x523a('0x48')][_0x523a('0x50')]({'where':{'id':_0x26f62f[_0x523a('0x4e')]['id']}})[_0x523a('0x2d')](handleEntityNotFound(_0x236456,null))['then'](saveUpdates(_0x26f62f[_0x523a('0x52')],null))[_0x523a('0x2d')](respondWithResult(_0x236456,null))['catch'](handleError(_0x236456,null));};exports[_0x523a('0x2e')]=function(_0x29b40d,_0x46ae49){return db[_0x523a('0x48')][_0x523a('0x50')]({'where':{'id':_0x29b40d[_0x523a('0x4e')]['id']}})[_0x523a('0x2d')](handleEntityNotFound(_0x46ae49,null))[_0x523a('0x2d')](removeEntity(_0x46ae49,null))[_0x523a('0x4c')](handleError(_0x46ae49,null));};
\ No newline at end of file
index 7d12f96..68af2ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c0d=['servicenow_unique_index','idField','FieldId','util','moment','bluebird','request-promise','path','../../config/environment','./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0x5c0d,0x73));var _0xd5c0=function(_0x1aba25,_0x1faed1){_0x1aba25=_0x1aba25-0x0;var _0x47d997=_0x5c0d[_0x1aba25];return _0x47d997;};'use strict';var _=require('lodash');var util=require(_0xd5c0('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xd5c0('0x1'));var BPromise=require(_0xd5c0('0x2'));var rp=require(_0xd5c0('0x3'));var fs=require('fs');var path=require(_0xd5c0('0x4'));var rimraf=require('rimraf');var config=require(_0xd5c0('0x5'));var attributes=require(_0xd5c0('0x6'));module[_0xd5c0('0x7')]=function(_0x4083ac,_0x9c5cee){return _0x4083ac[_0xd5c0('0x8')](_0xd5c0('0x9'),attributes,{'tableName':_0xd5c0('0xa'),'paranoid':![],'indexes':[{'name':_0xd5c0('0xb'),'fields':[_0xd5c0('0xc'),_0xd5c0('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4990=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes','exports','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','FieldId','lodash','../../config/logger'];(function(_0x353313,_0x5c3686){var _0x4cb750=function(_0x17ac7e){while(--_0x17ac7e){_0x353313['push'](_0x353313['shift']());}};_0x4cb750(++_0x5c3686);}(_0x4990,0xfe));var _0x0499=function(_0x1ebce2,_0x10e903){_0x1ebce2=_0x1ebce2-0x0;var _0x4a330c=_0x4990[_0x1ebce2];return _0x4a330c;};'use strict';var _=require(_0x0499('0x0'));var util=require('util');var logger=require(_0x0499('0x1'))(_0x0499('0x2'));var moment=require(_0x0499('0x3'));var BPromise=require(_0x0499('0x4'));var rp=require(_0x0499('0x5'));var fs=require('fs');var path=require(_0x0499('0x6'));var rimraf=require(_0x0499('0x7'));var config=require(_0x0499('0x8'));var attributes=require(_0x0499('0x9'));module[_0x0499('0xa')]=function(_0x7cc042,_0xba1fbb){return _0x7cc042['define'](_0x0499('0xb'),attributes,{'tableName':_0x0499('0xc'),'paranoid':![],'indexes':[{'name':_0x0499('0xd'),'fields':[_0x0499('0xe'),_0x0499('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 62a3573..bd258e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['ServicenowField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x175342,_0x57e790){var _0x1477a8=function(_0x3f6b55){while(--_0x3f6b55){_0x175342['push'](_0x175342['shift']());}};_0x1477a8(++_0x57e790);}(_0xf4eb,0xec));var _0xbf4e=function(_0x4b6cea,_0xe320c8){_0x4b6cea=_0x4b6cea-0x0;var _0x2529f6=_0xf4eb[_0x4b6cea];return _0x2529f6;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf4e('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf4e('0x2'))(_0xbf4e('0x3'));var config=require(_0xbf4e('0x4'));var jayson=require(_0xbf4e('0x5'));var client=jayson[_0xbf4e('0x6')][_0xbf4e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x15b99f,_0x540736,_0x449d55){return new BPromise(function(_0x5013c2,_0x5e23d4){return client[_0xbf4e('0x8')](_0x15b99f,_0x449d55)[_0xbf4e('0x9')](function(_0xcc4097){logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));logger[_0xbf4e('0xd')]('ServicenowField,\x20%s,\x20%s,\x20%s',_0x540736,'request\x20sent',JSON[_0xbf4e('0xe')](_0xcc4097));if(_0xcc4097['error']){if(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x10')]===0x1f4){logger['error'](_0xbf4e('0xb'),_0x540736,_0xcc4097['error']['message']);return _0x5e23d4(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);}logger[_0xbf4e('0xf')](_0xbf4e('0xb'),_0x540736,_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);return _0x5013c2(_0xcc4097['error']['message']);}else{logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));_0x5013c2(_0xcc4097['result'][_0xbf4e('0x11')]);}})[_0xbf4e('0x12')](function(_0x912fc0){logger[_0xbf4e('0xf')]('ServicenowField,\x20%s,\x20%s',_0x540736,_0x912fc0);_0x5e23d4(_0x912fc0);});});}
\ No newline at end of file
+var _0xd8b0=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','ioredis'];(function(_0x338338,_0x782573){var _0x3cf852=function(_0x3016d8){while(--_0x3016d8){_0x338338['push'](_0x338338['shift']());}};_0x3cf852(++_0x782573);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0d8b('0x2'));var db=require(_0x0d8b('0x3'))['db'];var utils=require(_0x0d8b('0x4'));var logger=require(_0x0d8b('0x5'))(_0x0d8b('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0d8b('0x7')][_0x0d8b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x39f43a,_0x4a4470,_0x413284){return new BPromise(function(_0x284169,_0x58e4e2){return client[_0x0d8b('0x9')](_0x39f43a,_0x413284)[_0x0d8b('0xa')](function(_0x3b027f){logger[_0x0d8b('0xb')](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));logger[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x4a4470,'request\x20sent',JSON[_0x0d8b('0x10')](_0x3b027f));if(_0x3b027f['error']){if(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x12')]===0x1f4){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x58e4e2(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x284169(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}else{logger['info'](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));_0x284169(_0x3b027f[_0x0d8b('0x14')][_0x0d8b('0x13')]);}})[_0x0d8b('0x15')](function(_0x5cd485){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x5cd485);_0x58e4e2(_0x5cd485);});});}
\ No newline at end of file
index cfffd38..758c2d6 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(_0xce1b4d,_0x4ef164){var _0x4b1d01=function(_0x13c1bd){while(--_0x13c1bd){_0xce1b4d['push'](_0xce1b4d['shift']());}};_0x4b1d01(++_0x4ef164);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+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(_0x155b0d,_0x40fdbf){var _0x47cf44=function(_0xa92b8e){while(--_0xa92b8e){_0x155b0d['push'](_0x155b0d['shift']());}};_0x47cf44(++_0x40fdbf);}(_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/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 b817f1c..d4e6731 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x7c2ed4,_0x2a6c59){var _0xa7cbd=function(_0x51b37c){while(--_0x51b37c){_0x7c2ed4['push'](_0x7c2ed4['shift']());}};_0xa7cbd(++_0x2a6c59);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x5b265a,_0x19ed9a){var _0x219782=function(_0x35dbc9){while(--_0x35dbc9){_0x5b265a['push'](_0x5b265a['shift']());}};_0x219782(++_0x19ed9a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'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 99cc3b6..9dfd262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cc1=['PLAIN','xCALLY\x20Motion\x20Integration','values','module_fields','includes','endsWith','value','test','getFields,\x20%s,\x20%s,\x20%s','getFields','send','Wrong\x20credentials','statusCode','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','end','json','offset','undefined','count','Content-Range','apply','reject','save','update','destroy','then','status','sendStatus','name','index','map','rawAttributes','fieldName','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','type','VIRTUAL','merge','options','SugarcrmAccount','include','rows','catch','show','params','includeAll','find','create','body','getConfigurations','findOne','addConfiguration','Subjects','channel','Descriptions','getDescriptions','SugarcrmField','created_by','description','date_start','duration_minutes','parent_name','direction','username','password','remoteUri','substring','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify'];(function(_0x1a4299,_0x252c9c){var _0x24d418=function(_0x3d60fd){while(--_0x3d60fd){_0x1a4299['push'](_0x1a4299['shift']());}};_0x24d418(++_0x252c9c);}(_0x1cc1,0xeb));var _0x11cc=function(_0x4ff49a,_0x272345){_0x4ff49a=_0x4ff49a-0x0;var _0x14723d=_0x1cc1[_0x4ff49a];return _0x14723d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x11cc('0x0'));var zipdir=require(_0x11cc('0x1'));var jsonpatch=require(_0x11cc('0x2'));var rp=require('request-promise');var moment=require(_0x11cc('0x3'));var BPromise=require(_0x11cc('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x11cc('0x5'));var sox=require(_0x11cc('0x6'));var csv=require(_0x11cc('0x7'));var ejs=require(_0x11cc('0x8'));var fs=require('fs');var fs_extra=require(_0x11cc('0x9'));var _=require(_0x11cc('0xa'));var squel=require(_0x11cc('0xb'));var crypto=require(_0x11cc('0xc'));var jsforce=require(_0x11cc('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x11cc('0x7'));var querystring=require(_0x11cc('0xe'));var Papa=require('papaparse');var Redis=require(_0x11cc('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x11cc('0x10'));var as=require(_0x11cc('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x11cc('0x12'))(_0x11cc('0x13'));var utils=require(_0x11cc('0x14'));var config=require(_0x11cc('0x15'));var licenseUtil=require(_0x11cc('0x16'));var db=require(_0x11cc('0x17'))['db'];var integrations=require(_0x11cc('0x18'));function respondWithStatusCode(_0x319a0a,_0x57da81){_0x57da81=_0x57da81||0xcc;return function(_0x2adb5b){if(_0x2adb5b){return _0x319a0a['sendStatus'](_0x57da81);}return _0x319a0a['status'](_0x57da81)[_0x11cc('0x19')]();};}function respondWithResult(_0x20ac0f,_0x337aa1){_0x337aa1=_0x337aa1||0xc8;return function(_0x4903fd){if(_0x4903fd){return _0x20ac0f['status'](_0x337aa1)[_0x11cc('0x1a')](_0x4903fd);}};}function respondWithFilteredResult(_0x3afe98,_0x3337b8){return function(_0x197320){if(_0x197320){var _0x36d9aa=typeof _0x3337b8[_0x11cc('0x1b')]===_0x11cc('0x1c')&&typeof _0x3337b8['limit']===_0x11cc('0x1c');var _0x338b69=_0x197320['count'];var _0x4b694c=_0x36d9aa?0x0:_0x3337b8['offset'];var _0x25d207=_0x36d9aa?_0x197320[_0x11cc('0x1d')]:_0x3337b8[_0x11cc('0x1b')]+_0x3337b8['limit'];var _0x3baf5f;if(_0x25d207>=_0x338b69){_0x25d207=_0x338b69;_0x3baf5f=0xc8;}else{_0x3baf5f=0xce;}_0x3afe98['status'](_0x3baf5f);return _0x3afe98['set'](_0x11cc('0x1e'),_0x4b694c+'-'+_0x25d207+'/'+_0x338b69)[_0x11cc('0x1a')](_0x197320);}return null;};}function patchUpdates(_0x4bd907){return function(_0x2ec53b){try{jsonpatch[_0x11cc('0x1f')](_0x2ec53b,_0x4bd907,!![]);}catch(_0x2aa580){return BPromise[_0x11cc('0x20')](_0x2aa580);}return _0x2ec53b[_0x11cc('0x21')]();};}function saveUpdates(_0x348179,_0x22ae93){return function(_0x3025f3){if(_0x3025f3){return _0x3025f3[_0x11cc('0x22')](_0x348179)['then'](function(_0xf887ea){return _0xf887ea;});}return null;};}function removeEntity(_0x1af4f1,_0x1c6972){return function(_0x311236){if(_0x311236){return _0x311236[_0x11cc('0x23')]()[_0x11cc('0x24')](function(){_0x1af4f1[_0x11cc('0x25')](0xcc)[_0x11cc('0x19')]();});}};}function handleEntityNotFound(_0x2207ff,_0x4f527a){return function(_0x52c02d){if(!_0x52c02d){_0x2207ff[_0x11cc('0x26')](0x194);}return _0x52c02d;};}function handleError(_0x185ee0,_0x7e54b3){_0x7e54b3=_0x7e54b3||0x1f4;return function(_0x2500bb){logger['error'](_0x2500bb['stack']);if(_0x2500bb[_0x11cc('0x27')]){delete _0x2500bb[_0x11cc('0x27')];}_0x185ee0[_0x11cc('0x25')](_0x7e54b3)['send'](_0x2500bb);};}exports[_0x11cc('0x28')]=function(_0x502be6,_0x3f8e75){var _0x2bc122={},_0x8456cd={},_0x35d16a={'count':0x0,'rows':[]};var _0x559c8a=_[_0x11cc('0x29')](db['SugarcrmAccount'][_0x11cc('0x2a')],function(_0x1489cf){return{'name':_0x1489cf[_0x11cc('0x2b')],'type':_0x1489cf['type']['key']};});_0x8456cd[_0x11cc('0x2c')]=_[_0x11cc('0x29')](_0x559c8a,_0x11cc('0x27'));_0x8456cd['query']=_[_0x11cc('0x2d')](_0x502be6[_0x11cc('0x2e')]);_0x8456cd[_0x11cc('0x2f')]=_[_0x11cc('0x30')](_0x8456cd['model'],_0x8456cd['query']);_0x2bc122[_0x11cc('0x31')]=_['intersection'](_0x8456cd[_0x11cc('0x2c')],qs[_0x11cc('0x32')](_0x502be6[_0x11cc('0x2e')][_0x11cc('0x32')]));_0x2bc122['attributes']=_0x2bc122[_0x11cc('0x31')][_0x11cc('0x33')]?_0x2bc122[_0x11cc('0x31')]:_0x8456cd[_0x11cc('0x2c')];if(!_0x502be6['query'][_0x11cc('0x34')](_0x11cc('0x35'))){_0x2bc122[_0x11cc('0x36')]=qs[_0x11cc('0x36')](_0x502be6['query'][_0x11cc('0x36')]);_0x2bc122[_0x11cc('0x1b')]=qs[_0x11cc('0x1b')](_0x502be6['query'][_0x11cc('0x1b')]);}_0x2bc122[_0x11cc('0x37')]=qs['sort'](_0x502be6['query'][_0x11cc('0x38')]);_0x2bc122[_0x11cc('0x39')]=qs['filters'](_['pick'](_0x502be6['query'],_0x8456cd[_0x11cc('0x2f')]),_0x559c8a);if(_0x502be6[_0x11cc('0x2e')][_0x11cc('0x3a')]){_0x2bc122['where']=_['merge'](_0x2bc122[_0x11cc('0x39')],{'$or':_[_0x11cc('0x29')](_0x559c8a,function(_0x40d3d4){if(_0x40d3d4[_0x11cc('0x3b')]!==_0x11cc('0x3c')){var _0x4b69ee={};_0x4b69ee[_0x40d3d4['name']]={'$like':'%'+_0x502be6[_0x11cc('0x2e')][_0x11cc('0x3a')]+'%'};return _0x4b69ee;}})});}_0x2bc122=_[_0x11cc('0x3d')]({},_0x2bc122,_0x502be6[_0x11cc('0x3e')]);var _0x4f6cfd={'where':_0x2bc122[_0x11cc('0x39')]};return db[_0x11cc('0x3f')][_0x11cc('0x1d')](_0x4f6cfd)[_0x11cc('0x24')](function(_0x3a2ff0){_0x35d16a['count']=_0x3a2ff0;if(_0x502be6[_0x11cc('0x2e')]['includeAll']){_0x2bc122[_0x11cc('0x40')]=[{'all':!![]}];}return db['SugarcrmAccount']['findAll'](_0x2bc122);})[_0x11cc('0x24')](function(_0x3e1114){_0x35d16a[_0x11cc('0x41')]=_0x3e1114;return _0x35d16a;})[_0x11cc('0x24')](respondWithFilteredResult(_0x3f8e75,_0x2bc122))[_0x11cc('0x42')](handleError(_0x3f8e75,null));};exports[_0x11cc('0x43')]=function(_0x1575d8,_0x1b533d){var _0x2193a7={'raw':![],'where':{'id':_0x1575d8[_0x11cc('0x44')]['id']}},_0x496121={};_0x496121[_0x11cc('0x2c')]=_['keys'](db[_0x11cc('0x3f')][_0x11cc('0x2a')]);_0x496121[_0x11cc('0x2e')]=_[_0x11cc('0x2d')](_0x1575d8[_0x11cc('0x2e')]);_0x496121[_0x11cc('0x2f')]=_[_0x11cc('0x30')](_0x496121[_0x11cc('0x2c')],_0x496121[_0x11cc('0x2e')]);_0x2193a7[_0x11cc('0x31')]=_[_0x11cc('0x30')](_0x496121[_0x11cc('0x2c')],qs[_0x11cc('0x32')](_0x1575d8[_0x11cc('0x2e')][_0x11cc('0x32')]));_0x2193a7['attributes']=_0x2193a7[_0x11cc('0x31')][_0x11cc('0x33')]?_0x2193a7[_0x11cc('0x31')]:_0x496121[_0x11cc('0x2c')];if(_0x1575d8[_0x11cc('0x2e')][_0x11cc('0x45')]){_0x2193a7[_0x11cc('0x40')]=[{'all':!![]}];}_0x2193a7=_[_0x11cc('0x3d')]({},_0x2193a7,_0x1575d8['options']);return db[_0x11cc('0x3f')][_0x11cc('0x46')](_0x2193a7)[_0x11cc('0x24')](handleEntityNotFound(_0x1b533d,null))[_0x11cc('0x24')](respondWithResult(_0x1b533d,null))[_0x11cc('0x42')](handleError(_0x1b533d,null));};exports[_0x11cc('0x47')]=function(_0x5e91da,_0x2ff0af){return db['SugarcrmAccount'][_0x11cc('0x47')](_0x5e91da[_0x11cc('0x48')],{})[_0x11cc('0x24')](respondWithResult(_0x2ff0af,0xc9))[_0x11cc('0x42')](handleError(_0x2ff0af,null));};exports['update']=function(_0x3d2eb8,_0x35f046){if(_0x3d2eb8['body']['id']){delete _0x3d2eb8['body']['id'];}return db[_0x11cc('0x3f')]['find']({'where':{'id':_0x3d2eb8[_0x11cc('0x44')]['id']}})[_0x11cc('0x24')](handleEntityNotFound(_0x35f046,null))[_0x11cc('0x24')](saveUpdates(_0x3d2eb8[_0x11cc('0x48')],null))[_0x11cc('0x24')](respondWithResult(_0x35f046,null))[_0x11cc('0x42')](handleError(_0x35f046,null));};exports[_0x11cc('0x23')]=function(_0x926afa,_0x3a1a4c){return db['SugarcrmAccount'][_0x11cc('0x46')]({'where':{'id':_0x926afa['params']['id']}})[_0x11cc('0x24')](handleEntityNotFound(_0x3a1a4c,null))[_0x11cc('0x24')](removeEntity(_0x3a1a4c,null))[_0x11cc('0x42')](handleError(_0x3a1a4c,null));};exports[_0x11cc('0x49')]=function(_0x2cbba9,_0x5d7ce0,_0x46e0af){var _0x3e296d={};var _0x46a7f7={};var _0x53ec10;var _0x43384e;return db[_0x11cc('0x3f')][_0x11cc('0x4a')]({'where':{'id':_0x2cbba9[_0x11cc('0x44')]['id']}})['then'](handleEntityNotFound(_0x5d7ce0,null))[_0x11cc('0x24')](function(_0x371746){if(_0x371746){_0x53ec10=_0x371746;_0x46a7f7['model']=_['keys'](db['SugarcrmConfiguration']['rawAttributes']);_0x46a7f7[_0x11cc('0x2e')]=_[_0x11cc('0x2d')](_0x2cbba9[_0x11cc('0x2e')]);_0x46a7f7['filters']=_[_0x11cc('0x30')](_0x46a7f7[_0x11cc('0x2c')],_0x46a7f7[_0x11cc('0x2e')]);_0x3e296d[_0x11cc('0x31')]=_[_0x11cc('0x30')](_0x46a7f7[_0x11cc('0x2c')],qs['fields'](_0x2cbba9['query']['fields']));_0x3e296d[_0x11cc('0x31')]=_0x3e296d[_0x11cc('0x31')]['length']?_0x3e296d[_0x11cc('0x31')]:_0x46a7f7[_0x11cc('0x2c')];_0x3e296d[_0x11cc('0x37')]=qs[_0x11cc('0x38')](_0x2cbba9['query'][_0x11cc('0x38')]);_0x3e296d[_0x11cc('0x39')]=qs[_0x11cc('0x2f')](_['pick'](_0x2cbba9[_0x11cc('0x2e')],_0x46a7f7[_0x11cc('0x2f')]));if(_0x2cbba9[_0x11cc('0x2e')][_0x11cc('0x3a')]){_0x3e296d[_0x11cc('0x39')]=_[_0x11cc('0x3d')](_0x3e296d[_0x11cc('0x39')],{'$or':_['map'](_0x3e296d[_0x11cc('0x31')],function(_0x35403e){var _0x297f14={};_0x297f14[_0x35403e]={'$like':'%'+_0x2cbba9[_0x11cc('0x2e')][_0x11cc('0x3a')]+'%'};return _0x297f14;})});}_0x3e296d=_[_0x11cc('0x3d')]({},_0x3e296d,_0x2cbba9[_0x11cc('0x3e')]);return _0x53ec10[_0x11cc('0x49')](_0x3e296d);}})[_0x11cc('0x24')](function(_0x4fb659){if(_0x4fb659){_0x43384e=_0x4fb659['length'];if(!_0x2cbba9[_0x11cc('0x2e')][_0x11cc('0x34')](_0x11cc('0x35'))){_0x3e296d[_0x11cc('0x36')]=qs['limit'](_0x2cbba9[_0x11cc('0x2e')]['limit']);_0x3e296d['offset']=qs[_0x11cc('0x1b')](_0x2cbba9[_0x11cc('0x2e')][_0x11cc('0x1b')]);}return _0x53ec10['getConfigurations'](_0x3e296d);}})[_0x11cc('0x24')](function(_0x275135){if(_0x275135){return _0x275135?{'count':_0x43384e,'rows':_0x275135}:null;}})[_0x11cc('0x24')](respondWithResult(_0x5d7ce0,null))[_0x11cc('0x42')](handleError(_0x5d7ce0,null));};exports[_0x11cc('0x4b')]=function(_0xd272f9,_0x55d65c,_0x325dc8){if(_0xd272f9[_0x11cc('0x48')]['id']){delete _0xd272f9['body']['id'];}return db[_0x11cc('0x3f')][_0x11cc('0x4a')]({'where':{'id':_0xd272f9[_0x11cc('0x44')]['id']}})[_0x11cc('0x24')](handleEntityNotFound(_0x55d65c,null))[_0x11cc('0x24')](function(_0x3b9446){if(_0x3b9446){_0xd272f9[_0x11cc('0x48')]['AccountId']=_0x3b9446['id'];_0xd272f9[_0x11cc('0x48')][_0x11cc('0x4c')]=integrations['getSubjects'](_0xd272f9['body'][_0x11cc('0x4d')],_0xd272f9[_0x11cc('0x48')][_0x11cc('0x3b')]);_0xd272f9['body'][_0x11cc('0x4e')]=integrations[_0x11cc('0x4f')](_0xd272f9[_0x11cc('0x48')]['channel'],_0xd272f9[_0x11cc('0x48')]['type']);return db['SugarcrmConfiguration'][_0x11cc('0x47')](_0xd272f9[_0x11cc('0x48')],{'include':[{'model':db['SugarcrmField'],'as':'Subjects'},{'model':db[_0x11cc('0x50')],'as':_0x11cc('0x4e')}]});}return null;})[_0x11cc('0x24')](respondWithResult(_0x55d65c,null))['catch'](handleError(_0x55d65c,null));};exports['getFields']=function(_0x297455,_0x19d74a,_0x1f2590){var _0x5b5e2f='';var _0x34a43d=['id',_0x11cc('0x27'),'assigned_user_id',_0x11cc('0x51'),_0x11cc('0x52'),_0x11cc('0x53'),'duration_hours',_0x11cc('0x54'),'parent_id','parent_type',_0x11cc('0x55'),_0x11cc('0x56')];return db[_0x11cc('0x3f')]['findOne']({'where':{'id':_0x297455['params']['id']},'attributes':['id',_0x11cc('0x57'),_0x11cc('0x58'),_0x11cc('0x59')]})['then'](handleEntityNotFound(_0x19d74a,null))[_0x11cc('0x24')](function(_0x1b7b0a){if(_0x1b7b0a){_0x5b5e2f=_0x1b7b0a[_0x11cc('0x59')];var _0x3f1cf0=_0x5b5e2f['slice'](-0x1);if(_0x3f1cf0==='/'){_0x5b5e2f=_0x5b5e2f[_0x11cc('0x5a')](0x0,_0x5b5e2f['lastIndexOf'](_0x3f1cf0));}return rp({'method':_0x11cc('0x5b'),'uri':util[_0x11cc('0x5c')](_0x11cc('0x5d'),_0x5b5e2f,_0x11cc('0x5e')),'json':!![],'form':{'method':_0x11cc('0x5f'),'input_type':'JSON','response_type':_0x11cc('0x60'),'rest_data':JSON[_0x11cc('0x61')]({'user_auth':{'user_name':_0x1b7b0a['username'],'password':_0x1b7b0a[_0x11cc('0x58')],'encryption':_0x11cc('0x62')},'application':_0x11cc('0x63')})}});}})['then'](function(_0x528102){if(_0x528102&&_0x528102[_0x11cc('0x27')]!=='Invalid\x20Login'&&_0x528102[_0x11cc('0x27')]!=='Password\x20Expired'){return rp({'method':'POST','uri':util[_0x11cc('0x5c')](_0x11cc('0x5d'),_0x5b5e2f,'/service/v4_1/rest.php'),'json':!![],'form':{'method':'get_module_fields','input_type':'JSON','response_type':_0x11cc('0x60'),'rest_data':JSON[_0x11cc('0x61')]({'session':_0x528102['id'],'module_name':'Calls'})}})[_0x11cc('0x24')](function(_0x3b702c){if(_0x3b702c){var _0x3d79f0=_[_0x11cc('0x64')](_0x3b702c[_0x11cc('0x65')]);_['remove'](_0x3d79f0,function(_0x8e15b8){return _0x34a43d[_0x11cc('0x66')](_0x8e15b8[_0x11cc('0x27')]);});return{'count':_0x3d79f0[_0x11cc('0x33')],'rows':_[_0x11cc('0x29')](_0x3d79f0,function(_0x3ea040){return{'id':_0x3ea040[_0x11cc('0x27')],'name':_0x3ea040['label'],'custom':_[_0x11cc('0x67')](_0x3ea040[_0x11cc('0x27')],'_c')?!![]:![],'options':_0x3ea040['options']?_[_0x11cc('0x29')](_['values'](_0x3ea040[_0x11cc('0x3e')]),function(_0xd4e295){return{'name':_0xd4e295[_0x11cc('0x68')],'value':_0xd4e295['name']};}):[]};})};}})[_0x11cc('0x24')](respondWithResult(_0x19d74a,null))[_0x11cc('0x42')](function(_0x272d54){var _0x282193=_0x297455[_0x11cc('0x2e')][_0x11cc('0x69')]?0x1f4:_0x272d54['statusCode']||0x1f4;logger['error'](_0x11cc('0x6a'),_0x11cc('0x6b'),_0x282193,JSON[_0x11cc('0x61')](_0x272d54));delete _0x272d54['name'];if(_0x282193===0x191){_0x282193=0x190;}_0x19d74a[_0x11cc('0x25')](_0x282193)[_0x11cc('0x6c')](_0x297455[_0x11cc('0x2e')][_0x11cc('0x69')]?{'message':_0x11cc('0x6d'),'statusCode':_0x272d54[_0x11cc('0x6e')]}:_0x272d54);});}else{var _0x3c78b8=0x1f4;_0x19d74a[_0x11cc('0x25')](_0x3c78b8)['send']({'message':_0x11cc('0x6d'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0xbb95=['/service/v4_1/rest.php','JSON','stringify','password','PLAIN','Invalid\x20Login','Password\x20Expired','POST','get_module_fields','Calls','values','module_fields','remove','includes','value','send','test','Wrong\x20credentials','statusCode','eml-format','rimraf','request-promise','moment','mustache','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/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','sendStatus','error','name','map','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','where','filter','options','SugarcrmAccount','includeAll','include','rows','params','rawAttributes','create','catch','body','find','destroy','findOne','merge','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','type','Descriptions','SugarcrmField','getFields','assigned_user_id','date_start','duration_minutes','parent_type','direction','remoteUri','slice','substring','format'];(function(_0x24237f,_0x4cf32c){var _0x48298e=function(_0x3f7511){while(--_0x3f7511){_0x24237f['push'](_0x24237f['shift']());}};_0x48298e(++_0x4cf32c);}(_0xbb95,0x7f));var _0x5bb9=function(_0x568b9f,_0x31ac8d){_0x568b9f=_0x568b9f-0x0;var _0x4cd0b6=_0xbb95[_0x568b9f];return _0x4cd0b6;};'use strict';var emlformat=require(_0x5bb9('0x0'));var rimraf=require(_0x5bb9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5bb9('0x2'));var moment=require(_0x5bb9('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5bb9('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x5bb9('0x5'));var ejs=require(_0x5bb9('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5bb9('0x7'));var squel=require(_0x5bb9('0x8'));var crypto=require(_0x5bb9('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x5bb9('0xa'));var toCsv=require(_0x5bb9('0x5'));var querystring=require(_0x5bb9('0xb'));var Papa=require(_0x5bb9('0xc'));var Redis=require(_0x5bb9('0xd'));var authService=require(_0x5bb9('0xe'));var qs=require(_0x5bb9('0xf'));var as=require(_0x5bb9('0x10'));var hardwareService=require(_0x5bb9('0x11'));var logger=require(_0x5bb9('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x5bb9('0x13'));var licenseUtil=require(_0x5bb9('0x14'));var db=require(_0x5bb9('0x15'))['db'];var integrations=require(_0x5bb9('0x16'));function respondWithStatusCode(_0x2b75af,_0x159e47){_0x159e47=_0x159e47||0xcc;return function(_0x1c5615){if(_0x1c5615){return _0x2b75af['sendStatus'](_0x159e47);}return _0x2b75af['status'](_0x159e47)[_0x5bb9('0x17')]();};}function respondWithResult(_0x407a7b,_0x1ebea3){_0x1ebea3=_0x1ebea3||0xc8;return function(_0x59b4a4){if(_0x59b4a4){return _0x407a7b[_0x5bb9('0x18')](_0x1ebea3)[_0x5bb9('0x19')](_0x59b4a4);}};}function respondWithFilteredResult(_0x582492,_0x1ae28a){return function(_0x29b45c){if(_0x29b45c){var _0xc4c1be=typeof _0x1ae28a[_0x5bb9('0x1a')]===_0x5bb9('0x1b')&&typeof _0x1ae28a[_0x5bb9('0x1c')]===_0x5bb9('0x1b');var _0x5a552b=_0x29b45c[_0x5bb9('0x1d')];var _0x56c337=_0xc4c1be?0x0:_0x1ae28a[_0x5bb9('0x1a')];var _0x54dcd4=_0xc4c1be?_0x29b45c[_0x5bb9('0x1d')]:_0x1ae28a['offset']+_0x1ae28a[_0x5bb9('0x1c')];var _0x1c9b29;if(_0x54dcd4>=_0x5a552b){_0x54dcd4=_0x5a552b;_0x1c9b29=0xc8;}else{_0x1c9b29=0xce;}_0x582492[_0x5bb9('0x18')](_0x1c9b29);return _0x582492[_0x5bb9('0x1e')](_0x5bb9('0x1f'),_0x56c337+'-'+_0x54dcd4+'/'+_0x5a552b)[_0x5bb9('0x19')](_0x29b45c);}return null;};}function patchUpdates(_0x419f27){return function(_0x445f0f){try{jsonpatch[_0x5bb9('0x20')](_0x445f0f,_0x419f27,!![]);}catch(_0x480cc2){return BPromise[_0x5bb9('0x21')](_0x480cc2);}return _0x445f0f['save']();};}function saveUpdates(_0x1949c1,_0x2d8d84){return function(_0x49e481){if(_0x49e481){return _0x49e481[_0x5bb9('0x22')](_0x1949c1)[_0x5bb9('0x23')](function(_0x4cd950){return _0x4cd950;});}return null;};}function removeEntity(_0x1fb206,_0x48c553){return function(_0x2de62c){if(_0x2de62c){return _0x2de62c['destroy']()['then'](function(){_0x1fb206[_0x5bb9('0x18')](0xcc)[_0x5bb9('0x17')]();});}};}function handleEntityNotFound(_0x3d00f4,_0x318c7){return function(_0x1cc285){if(!_0x1cc285){_0x3d00f4[_0x5bb9('0x24')](0x194);}return _0x1cc285;};}function handleError(_0x201008,_0x4da56f){_0x4da56f=_0x4da56f||0x1f4;return function(_0x1b133a){logger[_0x5bb9('0x25')](_0x1b133a['stack']);if(_0x1b133a[_0x5bb9('0x26')]){delete _0x1b133a[_0x5bb9('0x26')];}_0x201008[_0x5bb9('0x18')](_0x4da56f)['send'](_0x1b133a);};}exports['index']=function(_0x10f2b9,_0x35d9dc){var _0x5d3ada={},_0x27c84b={},_0x2fa021={'count':0x0,'rows':[]};var _0x440855=_[_0x5bb9('0x27')](db['SugarcrmAccount']['rawAttributes'],function(_0x5e477f){return{'name':_0x5e477f['fieldName'],'type':_0x5e477f['type'][_0x5bb9('0x28')]};});_0x27c84b[_0x5bb9('0x29')]=_[_0x5bb9('0x27')](_0x440855,_0x5bb9('0x26'));_0x27c84b['query']=_[_0x5bb9('0x2a')](_0x10f2b9[_0x5bb9('0x2b')]);_0x27c84b['filters']=_[_0x5bb9('0x2c')](_0x27c84b['model'],_0x27c84b['query']);_0x5d3ada[_0x5bb9('0x2d')]=_[_0x5bb9('0x2c')](_0x27c84b['model'],qs['fields'](_0x10f2b9['query'][_0x5bb9('0x2e')]));_0x5d3ada[_0x5bb9('0x2d')]=_0x5d3ada[_0x5bb9('0x2d')][_0x5bb9('0x2f')]?_0x5d3ada[_0x5bb9('0x2d')]:_0x27c84b['model'];if(!_0x10f2b9[_0x5bb9('0x2b')][_0x5bb9('0x30')]('nolimit')){_0x5d3ada['limit']=qs['limit'](_0x10f2b9['query'][_0x5bb9('0x1c')]);_0x5d3ada[_0x5bb9('0x1a')]=qs[_0x5bb9('0x1a')](_0x10f2b9[_0x5bb9('0x2b')]['offset']);}_0x5d3ada[_0x5bb9('0x31')]=qs[_0x5bb9('0x32')](_0x10f2b9[_0x5bb9('0x2b')][_0x5bb9('0x32')]);_0x5d3ada['where']=qs[_0x5bb9('0x33')](_[_0x5bb9('0x34')](_0x10f2b9[_0x5bb9('0x2b')],_0x27c84b[_0x5bb9('0x33')]),_0x440855);if(_0x10f2b9[_0x5bb9('0x2b')]['filter']){_0x5d3ada[_0x5bb9('0x35')]=_['merge'](_0x5d3ada[_0x5bb9('0x35')],{'$or':_[_0x5bb9('0x27')](_0x440855,function(_0xf9a340){if(_0xf9a340['type']!=='VIRTUAL'){var _0x143461={};_0x143461[_0xf9a340['name']]={'$like':'%'+_0x10f2b9[_0x5bb9('0x2b')][_0x5bb9('0x36')]+'%'};return _0x143461;}})});}_0x5d3ada=_['merge']({},_0x5d3ada,_0x10f2b9[_0x5bb9('0x37')]);var _0x5c217b={'where':_0x5d3ada[_0x5bb9('0x35')]};return db[_0x5bb9('0x38')][_0x5bb9('0x1d')](_0x5c217b)[_0x5bb9('0x23')](function(_0x561cc6){_0x2fa021[_0x5bb9('0x1d')]=_0x561cc6;if(_0x10f2b9['query'][_0x5bb9('0x39')]){_0x5d3ada[_0x5bb9('0x3a')]=[{'all':!![]}];}return db[_0x5bb9('0x38')]['findAll'](_0x5d3ada);})[_0x5bb9('0x23')](function(_0x3b8a5d){_0x2fa021[_0x5bb9('0x3b')]=_0x3b8a5d;return _0x2fa021;})[_0x5bb9('0x23')](respondWithFilteredResult(_0x35d9dc,_0x5d3ada))['catch'](handleError(_0x35d9dc,null));};exports['show']=function(_0x33c8e4,_0x39fbe5){var _0x1c2a90={'raw':![],'where':{'id':_0x33c8e4[_0x5bb9('0x3c')]['id']}},_0x59f3c6={};_0x59f3c6[_0x5bb9('0x29')]=_[_0x5bb9('0x2a')](db[_0x5bb9('0x38')][_0x5bb9('0x3d')]);_0x59f3c6[_0x5bb9('0x2b')]=_['keys'](_0x33c8e4[_0x5bb9('0x2b')]);_0x59f3c6[_0x5bb9('0x33')]=_['intersection'](_0x59f3c6[_0x5bb9('0x29')],_0x59f3c6['query']);_0x1c2a90[_0x5bb9('0x2d')]=_[_0x5bb9('0x2c')](_0x59f3c6[_0x5bb9('0x29')],qs[_0x5bb9('0x2e')](_0x33c8e4[_0x5bb9('0x2b')][_0x5bb9('0x2e')]));_0x1c2a90[_0x5bb9('0x2d')]=_0x1c2a90[_0x5bb9('0x2d')][_0x5bb9('0x2f')]?_0x1c2a90[_0x5bb9('0x2d')]:_0x59f3c6[_0x5bb9('0x29')];if(_0x33c8e4[_0x5bb9('0x2b')][_0x5bb9('0x39')]){_0x1c2a90['include']=[{'all':!![]}];}_0x1c2a90=_['merge']({},_0x1c2a90,_0x33c8e4[_0x5bb9('0x37')]);return db[_0x5bb9('0x38')]['find'](_0x1c2a90)[_0x5bb9('0x23')](handleEntityNotFound(_0x39fbe5,null))[_0x5bb9('0x23')](respondWithResult(_0x39fbe5,null))['catch'](handleError(_0x39fbe5,null));};exports[_0x5bb9('0x3e')]=function(_0x5a0c28,_0x362948){return db['SugarcrmAccount'][_0x5bb9('0x3e')](_0x5a0c28['body'],{})['then'](respondWithResult(_0x362948,0xc9))[_0x5bb9('0x3f')](handleError(_0x362948,null));};exports[_0x5bb9('0x22')]=function(_0x262403,_0x1f7a8e){if(_0x262403['body']['id']){delete _0x262403[_0x5bb9('0x40')]['id'];}return db['SugarcrmAccount'][_0x5bb9('0x41')]({'where':{'id':_0x262403['params']['id']}})[_0x5bb9('0x23')](handleEntityNotFound(_0x1f7a8e,null))[_0x5bb9('0x23')](saveUpdates(_0x262403[_0x5bb9('0x40')],null))['then'](respondWithResult(_0x1f7a8e,null))[_0x5bb9('0x3f')](handleError(_0x1f7a8e,null));};exports[_0x5bb9('0x42')]=function(_0x3ae74d,_0x174b0c){return db[_0x5bb9('0x38')]['find']({'where':{'id':_0x3ae74d['params']['id']}})[_0x5bb9('0x23')](handleEntityNotFound(_0x174b0c,null))[_0x5bb9('0x23')](removeEntity(_0x174b0c,null))[_0x5bb9('0x3f')](handleError(_0x174b0c,null));};exports['getConfigurations']=function(_0x3a8243,_0x2cdeb6,_0x41aea3){var _0x30c04e={};var _0x848654={};var _0x41f73e;var _0x436096;return db['SugarcrmAccount'][_0x5bb9('0x43')]({'where':{'id':_0x3a8243['params']['id']}})[_0x5bb9('0x23')](handleEntityNotFound(_0x2cdeb6,null))['then'](function(_0x49d1be){if(_0x49d1be){_0x41f73e=_0x49d1be;_0x848654['model']=_[_0x5bb9('0x2a')](db['SugarcrmConfiguration']['rawAttributes']);_0x848654[_0x5bb9('0x2b')]=_[_0x5bb9('0x2a')](_0x3a8243['query']);_0x848654['filters']=_[_0x5bb9('0x2c')](_0x848654[_0x5bb9('0x29')],_0x848654[_0x5bb9('0x2b')]);_0x30c04e[_0x5bb9('0x2d')]=_['intersection'](_0x848654['model'],qs['fields'](_0x3a8243[_0x5bb9('0x2b')][_0x5bb9('0x2e')]));_0x30c04e[_0x5bb9('0x2d')]=_0x30c04e['attributes']['length']?_0x30c04e[_0x5bb9('0x2d')]:_0x848654[_0x5bb9('0x29')];_0x30c04e['order']=qs['sort'](_0x3a8243[_0x5bb9('0x2b')][_0x5bb9('0x32')]);_0x30c04e[_0x5bb9('0x35')]=qs[_0x5bb9('0x33')](_['pick'](_0x3a8243[_0x5bb9('0x2b')],_0x848654[_0x5bb9('0x33')]));if(_0x3a8243[_0x5bb9('0x2b')]['filter']){_0x30c04e[_0x5bb9('0x35')]=_[_0x5bb9('0x44')](_0x30c04e[_0x5bb9('0x35')],{'$or':_['map'](_0x30c04e['attributes'],function(_0x598741){var _0x313b34={};_0x313b34[_0x598741]={'$like':'%'+_0x3a8243[_0x5bb9('0x2b')][_0x5bb9('0x36')]+'%'};return _0x313b34;})});}_0x30c04e=_['merge']({},_0x30c04e,_0x3a8243[_0x5bb9('0x37')]);return _0x41f73e[_0x5bb9('0x45')](_0x30c04e);}})['then'](function(_0x3adf1d){if(_0x3adf1d){_0x436096=_0x3adf1d[_0x5bb9('0x2f')];if(!_0x3a8243[_0x5bb9('0x2b')]['hasOwnProperty'](_0x5bb9('0x46'))){_0x30c04e['limit']=qs[_0x5bb9('0x1c')](_0x3a8243[_0x5bb9('0x2b')]['limit']);_0x30c04e[_0x5bb9('0x1a')]=qs[_0x5bb9('0x1a')](_0x3a8243[_0x5bb9('0x2b')][_0x5bb9('0x1a')]);}return _0x41f73e[_0x5bb9('0x45')](_0x30c04e);}})['then'](function(_0x32bce1){if(_0x32bce1){return _0x32bce1?{'count':_0x436096,'rows':_0x32bce1}:null;}})[_0x5bb9('0x23')](respondWithResult(_0x2cdeb6,null))['catch'](handleError(_0x2cdeb6,null));};exports[_0x5bb9('0x47')]=function(_0x2978ed,_0x1ccb70,_0x14954b){if(_0x2978ed[_0x5bb9('0x40')]['id']){delete _0x2978ed[_0x5bb9('0x40')]['id'];}return db['SugarcrmAccount']['findOne']({'where':{'id':_0x2978ed['params']['id']}})[_0x5bb9('0x23')](handleEntityNotFound(_0x1ccb70,null))[_0x5bb9('0x23')](function(_0x3f6a9b){if(_0x3f6a9b){_0x2978ed[_0x5bb9('0x40')][_0x5bb9('0x48')]=_0x3f6a9b['id'];_0x2978ed[_0x5bb9('0x40')][_0x5bb9('0x49')]=integrations[_0x5bb9('0x4a')](_0x2978ed[_0x5bb9('0x40')][_0x5bb9('0x4b')],_0x2978ed['body'][_0x5bb9('0x4c')]);_0x2978ed[_0x5bb9('0x40')][_0x5bb9('0x4d')]=integrations['getDescriptions'](_0x2978ed['body'][_0x5bb9('0x4b')],_0x2978ed[_0x5bb9('0x40')][_0x5bb9('0x4c')]);return db['SugarcrmConfiguration'][_0x5bb9('0x3e')](_0x2978ed[_0x5bb9('0x40')],{'include':[{'model':db[_0x5bb9('0x4e')],'as':_0x5bb9('0x49')},{'model':db[_0x5bb9('0x4e')],'as':_0x5bb9('0x4d')}]});}return null;})[_0x5bb9('0x23')](respondWithResult(_0x1ccb70,null))[_0x5bb9('0x3f')](handleError(_0x1ccb70,null));};exports[_0x5bb9('0x4f')]=function(_0x5a3905,_0x1118b9,_0x5dc613){var _0x118408='';var _0x2a5e4d=['id',_0x5bb9('0x26'),_0x5bb9('0x50'),'created_by','description',_0x5bb9('0x51'),'duration_hours',_0x5bb9('0x52'),'parent_id',_0x5bb9('0x53'),'parent_name',_0x5bb9('0x54')];return db[_0x5bb9('0x38')][_0x5bb9('0x43')]({'where':{'id':_0x5a3905[_0x5bb9('0x3c')]['id']},'attributes':['id','username','password',_0x5bb9('0x55')]})[_0x5bb9('0x23')](handleEntityNotFound(_0x1118b9,null))[_0x5bb9('0x23')](function(_0xa77192){if(_0xa77192){_0x118408=_0xa77192[_0x5bb9('0x55')];var _0x1fdf06=_0x118408[_0x5bb9('0x56')](-0x1);if(_0x1fdf06==='/'){_0x118408=_0x118408[_0x5bb9('0x57')](0x0,_0x118408['lastIndexOf'](_0x1fdf06));}return rp({'method':'POST','uri':util[_0x5bb9('0x58')]('%s%s',_0x118408,_0x5bb9('0x59')),'json':!![],'form':{'method':'login','input_type':_0x5bb9('0x5a'),'response_type':_0x5bb9('0x5a'),'rest_data':JSON[_0x5bb9('0x5b')]({'user_auth':{'user_name':_0xa77192['username'],'password':_0xa77192[_0x5bb9('0x5c')],'encryption':_0x5bb9('0x5d')},'application':'xCALLY\x20Motion\x20Integration'})}});}})['then'](function(_0x867fc8){if(_0x867fc8&&_0x867fc8[_0x5bb9('0x26')]!==_0x5bb9('0x5e')&&_0x867fc8['name']!==_0x5bb9('0x5f')){return rp({'method':_0x5bb9('0x60'),'uri':util[_0x5bb9('0x58')]('%s%s',_0x118408,_0x5bb9('0x59')),'json':!![],'form':{'method':_0x5bb9('0x61'),'input_type':_0x5bb9('0x5a'),'response_type':_0x5bb9('0x5a'),'rest_data':JSON[_0x5bb9('0x5b')]({'session':_0x867fc8['id'],'module_name':_0x5bb9('0x62')})}})['then'](function(_0x525d8a){if(_0x525d8a){var _0x29f982=_[_0x5bb9('0x63')](_0x525d8a[_0x5bb9('0x64')]);_[_0x5bb9('0x65')](_0x29f982,function(_0x4f7869){return _0x2a5e4d[_0x5bb9('0x66')](_0x4f7869[_0x5bb9('0x26')]);});return{'count':_0x29f982['length'],'rows':_[_0x5bb9('0x27')](_0x29f982,function(_0x309f61){return{'id':_0x309f61[_0x5bb9('0x26')],'name':_0x309f61['label'],'custom':_['endsWith'](_0x309f61['name'],'_c')?!![]:![],'options':_0x309f61[_0x5bb9('0x37')]?_[_0x5bb9('0x27')](_[_0x5bb9('0x63')](_0x309f61[_0x5bb9('0x37')]),function(_0x41f75d){return{'name':_0x41f75d[_0x5bb9('0x67')],'value':_0x41f75d['name']};}):[]};})};}})['then'](respondWithResult(_0x1118b9,null))[_0x5bb9('0x3f')](function(_0x4a3235){var _0x49ac5b=_0x5a3905['query']['test']?0x1f4:_0x4a3235['statusCode']||0x1f4;logger[_0x5bb9('0x25')]('getFields,\x20%s,\x20%s,\x20%s',_0x5bb9('0x4f'),_0x49ac5b,JSON['stringify'](_0x4a3235));delete _0x4a3235[_0x5bb9('0x26')];if(_0x49ac5b===0x191){_0x49ac5b=0x190;}_0x1118b9[_0x5bb9('0x18')](_0x49ac5b)[_0x5bb9('0x68')](_0x5a3905[_0x5bb9('0x2b')][_0x5bb9('0x69')]?{'message':_0x5bb9('0x6a'),'statusCode':_0x4a3235[_0x5bb9('0x6b')]}:_0x4a3235);});}else{var _0x5288a9=0x1f4;_0x1118b9[_0x5bb9('0x18')](_0x5288a9)[_0x5bb9('0x68')]({'message':_0x5bb9('0x6a'),'statusCode':0x190});}});};
\ No newline at end of file
index fc4d7cb..2442add 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f67=['util','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','int_sugarcrm_accounts','lodash'];(function(_0x4b0e57,_0x4cc2f7){var _0x4cc601=function(_0x5f327a){while(--_0x5f327a){_0x4b0e57['push'](_0x4b0e57['shift']());}};_0x4cc601(++_0x4cc2f7);}(_0x4f67,0xba));var _0x74f6=function(_0x41886e,_0x2f9b3e){_0x41886e=_0x41886e-0x0;var _0x10e7f4=_0x4f67[_0x41886e];return _0x10e7f4;};'use strict';var _=require(_0x74f6('0x0'));var util=require(_0x74f6('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x74f6('0x2'));var rimraf=require(_0x74f6('0x3'));var config=require(_0x74f6('0x4'));var attributes=require(_0x74f6('0x5'));var integrations=require(_0x74f6('0x6'));module[_0x74f6('0x7')]=function(_0x5d0b7d,_0x5b4c8d){return _0x5d0b7d[_0x74f6('0x8')](_0x74f6('0x9'),attributes,{'tableName':_0x74f6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4255=['path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','int_sugarcrm_accounts','lodash','../../config/logger','api','moment','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4255,0x1bb));var _0x5425=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x4255[_0x17b6e3];return _0x3906f3;};'use strict';var _=require(_0x5425('0x0'));var util=require('util');var logger=require(_0x5425('0x1'))(_0x5425('0x2'));var moment=require(_0x5425('0x3'));var BPromise=require(_0x5425('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5425('0x5'));var rimraf=require(_0x5425('0x6'));var config=require(_0x5425('0x7'));var attributes=require(_0x5425('0x8'));var integrations=require(_0x5425('0x9'));module[_0x5425('0xa')]=function(_0xb9e88c,_0x37d5f9){return _0xb9e88c[_0x5425('0xb')](_0x5425('0xc'),attributes,{'tableName':_0x5425('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 21ffad7..5b8249d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf20e=['debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','model','attributes','include','map','then','ShowSugarcrmAccount','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x84293c,_0x392606){var _0x10d905=function(_0x5ef758){while(--_0x5ef758){_0x84293c['push'](_0x84293c['shift']());}};_0x10d905(++_0x392606);}(_0xf20e,0x1ab));var _0xef20=function(_0x39979b,_0x2111f9){_0x39979b=_0x39979b-0x0;var _0x560b41=_0xf20e[_0x39979b];return _0x560b41;};'use strict';var _=require(_0xef20('0x0'));var util=require(_0xef20('0x1'));var moment=require(_0xef20('0x2'));var BPromise=require(_0xef20('0x3'));var rs=require(_0xef20('0x4'));var fs=require('fs');var Redis=require(_0xef20('0x5'));var db=require(_0xef20('0x6'))['db'];var utils=require(_0xef20('0x7'));var logger=require(_0xef20('0x8'))(_0xef20('0x9'));var config=require(_0xef20('0xa'));var jayson=require(_0xef20('0xb'));var client=jayson[_0xef20('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1fb17d,_0xc0417c,_0x1ce87b){return new BPromise(function(_0x4899b8,_0x458056){return client[_0xef20('0xd')](_0x1fb17d,_0x1ce87b)['then'](function(_0x491205){logger[_0xef20('0xe')](_0xef20('0xf'),_0xc0417c,_0xef20('0x10'));logger[_0xef20('0x11')](_0xef20('0x12'),_0xc0417c,_0xef20('0x10'),JSON[_0xef20('0x13')](_0x491205));if(_0x491205[_0xef20('0x14')]){if(_0x491205['error'][_0xef20('0x15')]===0x1f4){logger[_0xef20('0x14')](_0xef20('0xf'),_0xc0417c,_0x491205['error'][_0xef20('0x16')]);return _0x458056(_0x491205['error'][_0xef20('0x16')]);}logger[_0xef20('0x14')](_0xef20('0xf'),_0xc0417c,_0x491205[_0xef20('0x14')][_0xef20('0x16')]);return _0x4899b8(_0x491205[_0xef20('0x14')][_0xef20('0x16')]);}else{logger[_0xef20('0xe')]('SugarcrmAccount,\x20%s,\x20%s',_0xc0417c,_0xef20('0x10'));_0x4899b8(_0x491205[_0xef20('0x17')][_0xef20('0x16')]);}})[_0xef20('0x18')](function(_0x196c01){logger[_0xef20('0x14')](_0xef20('0xf'),_0xc0417c,_0x196c01);_0x458056(_0x196c01);});});}exports[_0xef20('0x19')]=function(_0x4cf3d5){var _0x155431=this;return new Promise(function(_0x54ad9a,_0xf31682){return db[_0xef20('0x1a')][_0xef20('0x1b')]({'raw':_0x4cf3d5[_0xef20('0x1c')]?_0x4cf3d5[_0xef20('0x1c')][_0xef20('0x1d')]===undefined?!![]:![]:!![],'where':_0x4cf3d5[_0xef20('0x1c')]?_0x4cf3d5[_0xef20('0x1c')]['where']||null:null,'attributes':_0x4cf3d5[_0xef20('0x1c')]?_0x4cf3d5['options']['attributes']||null:null,'limit':_0x4cf3d5[_0xef20('0x1c')]?_0x4cf3d5[_0xef20('0x1c')]['limit']||null:null,'include':_0x4cf3d5['options']?_0x4cf3d5['options']['include']?_['map'](_0x4cf3d5[_0xef20('0x1c')]['include'],function(_0x596f8f){return{'model':db[_0x596f8f[_0xef20('0x1e')]],'as':_0x596f8f['as'],'attributes':_0x596f8f[_0xef20('0x1f')],'include':_0x596f8f[_0xef20('0x20')]?_[_0xef20('0x21')](_0x596f8f[_0xef20('0x20')],function(_0x578e64){return{'model':db[_0x578e64['model']],'as':_0x578e64['as'],'attributes':_0x578e64[_0xef20('0x1f')],'include':_0x578e64['include']?_['map'](_0x578e64[_0xef20('0x20')],function(_0x4cbe91){return{'model':db[_0x4cbe91[_0xef20('0x1e')]],'as':_0x4cbe91['as'],'attributes':_0x4cbe91[_0xef20('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xef20('0x22')](function(_0x394b59){logger['info'](_0xef20('0x19'),_0x4cf3d5);logger['debug']('GetSugarcrmAccount',_0x4cf3d5,JSON[_0xef20('0x13')](_0x394b59));_0x54ad9a(_0x394b59);})['catch'](function(_0x2545b1){logger[_0xef20('0x14')](_0xef20('0x19'),_0x2545b1[_0xef20('0x16')],_0x4cf3d5);_0xf31682(_0x155431['error'](0x1f4,_0x2545b1[_0xef20('0x16')]));});});};exports[_0xef20('0x23')]=function(_0x47cf8d){var _0xcfb144=this;return new Promise(function(_0x5246ea,_0x13a9fa){return db[_0xef20('0x1a')]['find']({'raw':_0x47cf8d['options']?_0x47cf8d[_0xef20('0x1c')][_0xef20('0x1d')]===undefined?!![]:![]:!![],'where':_0x47cf8d['options']?_0x47cf8d[_0xef20('0x1c')][_0xef20('0x24')]||null:null,'attributes':_0x47cf8d[_0xef20('0x1c')]?_0x47cf8d[_0xef20('0x1c')][_0xef20('0x1f')]||null:null,'include':_0x47cf8d[_0xef20('0x1c')]?_0x47cf8d[_0xef20('0x1c')][_0xef20('0x20')]?_[_0xef20('0x21')](_0x47cf8d[_0xef20('0x1c')][_0xef20('0x20')],function(_0x45b5cd){return{'model':db[_0x45b5cd['model']],'as':_0x45b5cd['as'],'attributes':_0x45b5cd[_0xef20('0x1f')],'include':_0x45b5cd['include']?_[_0xef20('0x21')](_0x45b5cd[_0xef20('0x20')],function(_0x5bc6e9){return{'model':db[_0x5bc6e9['model']],'as':_0x5bc6e9['as'],'attributes':_0x5bc6e9['attributes'],'include':_0x5bc6e9[_0xef20('0x20')]?_['map'](_0x5bc6e9[_0xef20('0x20')],function(_0x3b9aa5){return{'model':db[_0x3b9aa5[_0xef20('0x1e')]],'as':_0x3b9aa5['as'],'attributes':_0x3b9aa5[_0xef20('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xef20('0x22')](function(_0x386222){logger[_0xef20('0xe')]('ShowSugarcrmAccount',_0x47cf8d);logger[_0xef20('0x11')](_0xef20('0x23'),_0x47cf8d,JSON[_0xef20('0x13')](_0x386222));_0x5246ea(_0x386222);})[_0xef20('0x18')](function(_0x4d66be){logger[_0xef20('0x14')](_0xef20('0x23'),_0x4d66be[_0xef20('0x16')],_0x47cf8d);_0x13a9fa(_0xcfb144[_0xef20('0x14')](0x1f4,_0x4d66be[_0xef20('0x16')]));});});};
\ No newline at end of file
+var _0xd151=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','SugarcrmAccount','findAll','options','raw','where','attributes','limit','include','map','model','GetSugarcrmAccount','catch','find','ShowSugarcrmAccount','lodash','util'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xd151,0xc1));var _0x1d15=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xd151[_0x1928c9];return _0x51b5fb;};'use strict';var _=require(_0x1d15('0x0'));var util=require(_0x1d15('0x1'));var moment=require(_0x1d15('0x2'));var BPromise=require('bluebird');var rs=require(_0x1d15('0x3'));var fs=require('fs');var Redis=require(_0x1d15('0x4'));var db=require(_0x1d15('0x5'))['db'];var utils=require(_0x1d15('0x6'));var logger=require(_0x1d15('0x7'))(_0x1d15('0x8'));var config=require(_0x1d15('0x9'));var jayson=require(_0x1d15('0xa'));var client=jayson[_0x1d15('0xb')][_0x1d15('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2f230c,_0x36252a,_0x24d1e8){return new BPromise(function(_0x526518,_0x1416e4){return client[_0x1d15('0xd')](_0x2f230c,_0x24d1e8)[_0x1d15('0xe')](function(_0x2ff510){logger[_0x1d15('0xf')](_0x1d15('0x10'),_0x36252a,_0x1d15('0x11'));logger[_0x1d15('0x12')](_0x1d15('0x13'),_0x36252a,_0x1d15('0x11'),JSON[_0x1d15('0x14')](_0x2ff510));if(_0x2ff510[_0x1d15('0x15')]){if(_0x2ff510[_0x1d15('0x15')][_0x1d15('0x16')]===0x1f4){logger[_0x1d15('0x15')](_0x1d15('0x10'),_0x36252a,_0x2ff510[_0x1d15('0x15')][_0x1d15('0x17')]);return _0x1416e4(_0x2ff510[_0x1d15('0x15')][_0x1d15('0x17')]);}logger['error']('SugarcrmAccount,\x20%s,\x20%s',_0x36252a,_0x2ff510[_0x1d15('0x15')]['message']);return _0x526518(_0x2ff510[_0x1d15('0x15')][_0x1d15('0x17')]);}else{logger[_0x1d15('0xf')](_0x1d15('0x10'),_0x36252a,_0x1d15('0x11'));_0x526518(_0x2ff510[_0x1d15('0x18')][_0x1d15('0x17')]);}})['catch'](function(_0x2ae0e4){logger[_0x1d15('0x15')](_0x1d15('0x10'),_0x36252a,_0x2ae0e4);_0x1416e4(_0x2ae0e4);});});}exports['GetSugarcrmAccount']=function(_0x4e0791){var _0x366b50=this;return new Promise(function(_0x3d004e,_0x51a23f){return db[_0x1d15('0x19')][_0x1d15('0x1a')]({'raw':_0x4e0791[_0x1d15('0x1b')]?_0x4e0791[_0x1d15('0x1b')][_0x1d15('0x1c')]===undefined?!![]:![]:!![],'where':_0x4e0791[_0x1d15('0x1b')]?_0x4e0791[_0x1d15('0x1b')][_0x1d15('0x1d')]||null:null,'attributes':_0x4e0791['options']?_0x4e0791[_0x1d15('0x1b')][_0x1d15('0x1e')]||null:null,'limit':_0x4e0791[_0x1d15('0x1b')]?_0x4e0791[_0x1d15('0x1b')][_0x1d15('0x1f')]||null:null,'include':_0x4e0791['options']?_0x4e0791['options'][_0x1d15('0x20')]?_[_0x1d15('0x21')](_0x4e0791[_0x1d15('0x1b')][_0x1d15('0x20')],function(_0x468698){return{'model':db[_0x468698['model']],'as':_0x468698['as'],'attributes':_0x468698[_0x1d15('0x1e')],'include':_0x468698[_0x1d15('0x20')]?_[_0x1d15('0x21')](_0x468698['include'],function(_0x55e6c3){return{'model':db[_0x55e6c3[_0x1d15('0x22')]],'as':_0x55e6c3['as'],'attributes':_0x55e6c3[_0x1d15('0x1e')],'include':_0x55e6c3[_0x1d15('0x20')]?_[_0x1d15('0x21')](_0x55e6c3['include'],function(_0x19811c){return{'model':db[_0x19811c[_0x1d15('0x22')]],'as':_0x19811c['as'],'attributes':_0x19811c[_0x1d15('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x1d15('0xe')](function(_0x11e12e){logger[_0x1d15('0xf')]('GetSugarcrmAccount',_0x4e0791);logger[_0x1d15('0x12')](_0x1d15('0x23'),_0x4e0791,JSON['stringify'](_0x11e12e));_0x3d004e(_0x11e12e);})[_0x1d15('0x24')](function(_0x2b0fde){logger[_0x1d15('0x15')](_0x1d15('0x23'),_0x2b0fde['message'],_0x4e0791);_0x51a23f(_0x366b50[_0x1d15('0x15')](0x1f4,_0x2b0fde[_0x1d15('0x17')]));});});};exports['ShowSugarcrmAccount']=function(_0x56a9a2){var _0x1c0cfd=this;return new Promise(function(_0x5087cd,_0x207610){return db[_0x1d15('0x19')][_0x1d15('0x25')]({'raw':_0x56a9a2['options']?_0x56a9a2[_0x1d15('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x56a9a2[_0x1d15('0x1b')]?_0x56a9a2[_0x1d15('0x1b')][_0x1d15('0x1d')]||null:null,'attributes':_0x56a9a2[_0x1d15('0x1b')]?_0x56a9a2['options'][_0x1d15('0x1e')]||null:null,'include':_0x56a9a2[_0x1d15('0x1b')]?_0x56a9a2[_0x1d15('0x1b')]['include']?_['map'](_0x56a9a2[_0x1d15('0x1b')]['include'],function(_0x14baac){return{'model':db[_0x14baac[_0x1d15('0x22')]],'as':_0x14baac['as'],'attributes':_0x14baac[_0x1d15('0x1e')],'include':_0x14baac[_0x1d15('0x20')]?_[_0x1d15('0x21')](_0x14baac[_0x1d15('0x20')],function(_0x1ba499){return{'model':db[_0x1ba499[_0x1d15('0x22')]],'as':_0x1ba499['as'],'attributes':_0x1ba499['attributes'],'include':_0x1ba499[_0x1d15('0x20')]?_[_0x1d15('0x21')](_0x1ba499[_0x1d15('0x20')],function(_0x9bd67d){return{'model':db[_0x9bd67d[_0x1d15('0x22')]],'as':_0x9bd67d['as'],'attributes':_0x9bd67d[_0x1d15('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x1d15('0xe')](function(_0x2dd353){logger[_0x1d15('0xf')](_0x1d15('0x26'),_0x56a9a2);logger[_0x1d15('0x12')](_0x1d15('0x26'),_0x56a9a2,JSON[_0x1d15('0x14')](_0x2dd353));_0x5087cd(_0x2dd353);})[_0x1d15('0x24')](function(_0x5d0453){logger['error'](_0x1d15('0x26'),_0x5d0453[_0x1d15('0x17')],_0x56a9a2);_0x207610(_0x1c0cfd[_0x1d15('0x15')](0x1f4,_0x5d0453[_0x1d15('0x17')]));});});};
\ No newline at end of file
index 8871efa..76e173e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7b9=['put','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id','getFields','/:id/subjects','getSubjects','getDescriptions','post','create'];(function(_0x171c88,_0xf82128){var _0x195b8a=function(_0x27b0ca){while(--_0x27b0ca){_0x171c88['push'](_0x171c88['shift']());}};_0x195b8a(++_0xf82128);}(_0xb7b9,0xd3));var _0x9b7b=function(_0x5f4382,_0x385387){_0x5f4382=_0x5f4382-0x0;var _0x10f512=_0xb7b9[_0x5f4382];return _0x10f512;};'use strict';var multer=require(_0x9b7b('0x0'));var util=require(_0x9b7b('0x1'));var path=require(_0x9b7b('0x2'));var timeout=require(_0x9b7b('0x3'));var express=require('express');var router=express[_0x9b7b('0x4')]();var fs_extra=require(_0x9b7b('0x5'));var auth=require(_0x9b7b('0x6'));var interaction=require(_0x9b7b('0x7'));var config=require(_0x9b7b('0x8'));var controller=require(_0x9b7b('0x9'));router[_0x9b7b('0xa')]('/',auth[_0x9b7b('0xb')](),controller[_0x9b7b('0xc')]);router[_0x9b7b('0xa')](_0x9b7b('0xd'),auth[_0x9b7b('0xb')](),controller['show']);router[_0x9b7b('0xa')]('/:id/fields',auth[_0x9b7b('0xb')](),controller[_0x9b7b('0xe')]);router[_0x9b7b('0xa')](_0x9b7b('0xf'),auth[_0x9b7b('0xb')](),controller[_0x9b7b('0x10')]);router[_0x9b7b('0xa')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x9b7b('0x11')]);router[_0x9b7b('0x12')]('/',auth['isAuthenticated'](),controller[_0x9b7b('0x13')]);router[_0x9b7b('0x14')](_0x9b7b('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x9b7b('0xd'),auth[_0x9b7b('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xf5ac=['getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','update','delete','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','./intSugarcrmConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields'];(function(_0x59b5ef,_0x2df306){var _0x287238=function(_0x31eb90){while(--_0x31eb90){_0x59b5ef['push'](_0x59b5ef['shift']());}};_0x287238(++_0x2df306);}(_0xf5ac,0x1a9));var _0xcf5a=function(_0x4eb7dc,_0x4d558a){_0x4eb7dc=_0x4eb7dc-0x0;var _0x1a0c30=_0xf5ac[_0x4eb7dc];return _0x1a0c30;};'use strict';var multer=require(_0xcf5a('0x0'));var util=require('util');var path=require(_0xcf5a('0x1'));var timeout=require('connect-timeout');var express=require(_0xcf5a('0x2'));var router=express[_0xcf5a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xcf5a('0x4'));var interaction=require(_0xcf5a('0x5'));var config=require('../../config/environment');var controller=require(_0xcf5a('0x6'));router[_0xcf5a('0x7')]('/',auth[_0xcf5a('0x8')](),controller['index']);router[_0xcf5a('0x7')](_0xcf5a('0x9'),auth[_0xcf5a('0x8')](),controller[_0xcf5a('0xa')]);router[_0xcf5a('0x7')](_0xcf5a('0xb'),auth['isAuthenticated'](),controller[_0xcf5a('0xc')]);router[_0xcf5a('0x7')](_0xcf5a('0xd'),auth['isAuthenticated'](),controller[_0xcf5a('0xe')]);router[_0xcf5a('0x7')](_0xcf5a('0xf'),auth[_0xcf5a('0x8')](),controller['getDescriptions']);router[_0xcf5a('0x10')]('/',auth[_0xcf5a('0x8')](),controller[_0xcf5a('0x11')]);router[_0xcf5a('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xcf5a('0x13')]);router[_0xcf5a('0x14')](_0xcf5a('0x9'),auth[_0xcf5a('0x8')](),controller[_0xcf5a('0x15')]);module[_0xcf5a('0x16')]=router;
\ No newline at end of file
index 07044ca..ca36cd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5383=['STRING','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5383,0x85));var _0x3538=function(_0x45d442,_0x25794d){_0x45d442=_0x45d442-0x0;var _0xd44bbc=_0x5383[_0x45d442];return _0xd44bbc;};'use strict';var Sequelize=require(_0x3538('0x0'));module[_0x3538('0x1')]={'name':{'type':Sequelize[_0x3538('0x2')]},'description':{'type':Sequelize[_0x3538('0x2')]}};
\ No newline at end of file
+var _0x0d70=['STRING','sequelize','exports'];(function(_0xbf3792,_0x200b7f){var _0x3c2730=function(_0x51f3c3){while(--_0x51f3c3){_0xbf3792['push'](_0xbf3792['shift']());}};_0x3c2730(++_0x200b7f);}(_0x0d70,0xac));var _0x00d7=function(_0x44cf10,_0x31eefb){_0x44cf10=_0x44cf10-0x0;var _0x17491f=_0x0d70[_0x44cf10];return _0x17491f;};'use strict';var Sequelize=require(_0x00d7('0x0'));module[_0x00d7('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x00d7('0x2')]}};
\ No newline at end of file
index 2c456f6..342da9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6917=['path','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','send','index','map','SugarcrmConfiguration','fieldName','type','key','query','keys','filters','attributes','fields','model','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','intersection','create','body','find','findOne','length','pick','getSubjects','SugarcrmField','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x2997cf,_0x91af1a){var _0x42b23e=function(_0x3346bd){while(--_0x3346bd){_0x2997cf['push'](_0x2997cf['shift']());}};_0x42b23e(++_0x91af1a);}(_0x6917,0x9a));var _0x7691=function(_0x3e25c1,_0x1d15f9){_0x3e25c1=_0x3e25c1-0x0;var _0x52e7f2=_0x6917[_0x3e25c1];return _0x52e7f2;};'use strict';var emlformat=require(_0x7691('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7691('0x1'));var jsonpatch=require(_0x7691('0x2'));var rp=require(_0x7691('0x3'));var moment=require(_0x7691('0x4'));var BPromise=require(_0x7691('0x5'));var Mustache=require(_0x7691('0x6'));var util=require(_0x7691('0x7'));var path=require(_0x7691('0x8'));var sox=require('sox');var csv=require(_0x7691('0x9'));var ejs=require(_0x7691('0xa'));var fs=require('fs');var fs_extra=require(_0x7691('0xb'));var _=require(_0x7691('0xc'));var squel=require(_0x7691('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7691('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7691('0xf'));var Redis=require(_0x7691('0x10'));var authService=require(_0x7691('0x11'));var qs=require(_0x7691('0x12'));var as=require(_0x7691('0x13'));var hardwareService=require(_0x7691('0x14'));var logger=require('../../config/logger')(_0x7691('0x15'));var utils=require(_0x7691('0x16'));var config=require(_0x7691('0x17'));var licenseUtil=require(_0x7691('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b1bb6,_0x5d64d7){_0x5d64d7=_0x5d64d7||0xcc;return function(_0x54f7fa){if(_0x54f7fa){return _0x2b1bb6[_0x7691('0x19')](_0x5d64d7);}return _0x2b1bb6['status'](_0x5d64d7)['end']();};}function respondWithResult(_0x16782c,_0x55089c){_0x55089c=_0x55089c||0xc8;return function(_0x6fc02c){if(_0x6fc02c){return _0x16782c[_0x7691('0x1a')](_0x55089c)[_0x7691('0x1b')](_0x6fc02c);}};}function respondWithFilteredResult(_0x5721cd,_0x27e7d8){return function(_0x231a62){if(_0x231a62){var _0x4ba63d=typeof _0x27e7d8['offset']===_0x7691('0x1c')&&typeof _0x27e7d8['limit']==='undefined';var _0x467f82=_0x231a62[_0x7691('0x1d')];var _0x27e229=_0x4ba63d?0x0:_0x27e7d8[_0x7691('0x1e')];var _0x2be9b0=_0x4ba63d?_0x231a62[_0x7691('0x1d')]:_0x27e7d8[_0x7691('0x1e')]+_0x27e7d8[_0x7691('0x1f')];var _0x3d9b55;if(_0x2be9b0>=_0x467f82){_0x2be9b0=_0x467f82;_0x3d9b55=0xc8;}else{_0x3d9b55=0xce;}_0x5721cd[_0x7691('0x1a')](_0x3d9b55);return _0x5721cd[_0x7691('0x20')](_0x7691('0x21'),_0x27e229+'-'+_0x2be9b0+'/'+_0x467f82)[_0x7691('0x1b')](_0x231a62);}return null;};}function patchUpdates(_0x53a805){return function(_0x2fffc6){try{jsonpatch[_0x7691('0x22')](_0x2fffc6,_0x53a805,!![]);}catch(_0x298d21){return BPromise['reject'](_0x298d21);}return _0x2fffc6[_0x7691('0x23')]();};}function saveUpdates(_0xb41d6c,_0xf0d1c8){return function(_0x1fc5c2){if(_0x1fc5c2){return _0x1fc5c2[_0x7691('0x24')](_0xb41d6c)[_0x7691('0x25')](function(_0x16060c){return _0x16060c;});}return null;};}function removeEntity(_0xffbfad,_0x51fd40){return function(_0x1880b7){if(_0x1880b7){return _0x1880b7[_0x7691('0x26')]()[_0x7691('0x25')](function(){_0xffbfad['status'](0xcc)[_0x7691('0x27')]();});}};}function handleEntityNotFound(_0x525b85,_0x753125){return function(_0x27c4e9){if(!_0x27c4e9){_0x525b85['sendStatus'](0x194);}return _0x27c4e9;};}function handleError(_0x16031e,_0x5ce906){_0x5ce906=_0x5ce906||0x1f4;return function(_0x1e3617){logger[_0x7691('0x28')](_0x1e3617[_0x7691('0x29')]);if(_0x1e3617[_0x7691('0x2a')]){delete _0x1e3617[_0x7691('0x2a')];}_0x16031e[_0x7691('0x1a')](_0x5ce906)[_0x7691('0x2b')](_0x1e3617);};}exports[_0x7691('0x2c')]=function(_0x22a0fc,_0x4b1bb8){var _0x276ec4={},_0x44eadc={},_0x5e0e33={'count':0x0,'rows':[]};var _0x5df63a=_[_0x7691('0x2d')](db[_0x7691('0x2e')]['rawAttributes'],function(_0x52ea85){return{'name':_0x52ea85[_0x7691('0x2f')],'type':_0x52ea85[_0x7691('0x30')][_0x7691('0x31')]};});_0x44eadc['model']=_[_0x7691('0x2d')](_0x5df63a,_0x7691('0x2a'));_0x44eadc[_0x7691('0x32')]=_[_0x7691('0x33')](_0x22a0fc['query']);_0x44eadc[_0x7691('0x34')]=_['intersection'](_0x44eadc['model'],_0x44eadc['query']);_0x276ec4[_0x7691('0x35')]=_['intersection'](_0x44eadc['model'],qs[_0x7691('0x36')](_0x22a0fc[_0x7691('0x32')][_0x7691('0x36')]));_0x276ec4['attributes']=_0x276ec4['attributes']['length']?_0x276ec4[_0x7691('0x35')]:_0x44eadc[_0x7691('0x37')];if(!_0x22a0fc[_0x7691('0x32')][_0x7691('0x38')](_0x7691('0x39'))){_0x276ec4[_0x7691('0x1f')]=qs[_0x7691('0x1f')](_0x22a0fc[_0x7691('0x32')]['limit']);_0x276ec4[_0x7691('0x1e')]=qs[_0x7691('0x1e')](_0x22a0fc['query']['offset']);}_0x276ec4[_0x7691('0x3a')]=qs[_0x7691('0x3b')](_0x22a0fc['query'][_0x7691('0x3b')]);_0x276ec4[_0x7691('0x3c')]=qs['filters'](_['pick'](_0x22a0fc['query'],_0x44eadc[_0x7691('0x34')]),_0x5df63a);if(_0x22a0fc[_0x7691('0x32')][_0x7691('0x3d')]){_0x276ec4[_0x7691('0x3c')]=_[_0x7691('0x3e')](_0x276ec4[_0x7691('0x3c')],{'$or':_[_0x7691('0x2d')](_0x5df63a,function(_0x5d226e){if(_0x5d226e[_0x7691('0x30')]!=='VIRTUAL'){var _0x56cea3={};_0x56cea3[_0x5d226e[_0x7691('0x2a')]]={'$like':'%'+_0x22a0fc[_0x7691('0x32')]['filter']+'%'};return _0x56cea3;}})});}_0x276ec4=_[_0x7691('0x3e')]({},_0x276ec4,_0x22a0fc[_0x7691('0x3f')]);var _0x42795d={'where':_0x276ec4[_0x7691('0x3c')]};return db[_0x7691('0x2e')]['count'](_0x42795d)['then'](function(_0x3a097b){_0x5e0e33[_0x7691('0x1d')]=_0x3a097b;if(_0x22a0fc[_0x7691('0x32')][_0x7691('0x40')]){_0x276ec4[_0x7691('0x41')]=[{'all':!![]}];}return db[_0x7691('0x2e')][_0x7691('0x42')](_0x276ec4);})[_0x7691('0x25')](function(_0x660ea7){_0x5e0e33[_0x7691('0x43')]=_0x660ea7;return _0x5e0e33;})['then'](respondWithFilteredResult(_0x4b1bb8,_0x276ec4))[_0x7691('0x44')](handleError(_0x4b1bb8,null));};exports['show']=function(_0x2da9e0,_0x7ca443){var _0x22c1c9={'raw':![],'where':{'id':_0x2da9e0[_0x7691('0x45')]['id']}},_0x1bb21d={};_0x1bb21d['model']=_['keys'](db[_0x7691('0x2e')][_0x7691('0x46')]);_0x1bb21d['query']=_[_0x7691('0x33')](_0x2da9e0[_0x7691('0x32')]);_0x1bb21d[_0x7691('0x34')]=_['intersection'](_0x1bb21d['model'],_0x1bb21d['query']);_0x22c1c9[_0x7691('0x35')]=_[_0x7691('0x47')](_0x1bb21d[_0x7691('0x37')],qs[_0x7691('0x36')](_0x2da9e0['query'][_0x7691('0x36')]));_0x22c1c9[_0x7691('0x35')]=_0x22c1c9[_0x7691('0x35')]['length']?_0x22c1c9[_0x7691('0x35')]:_0x1bb21d[_0x7691('0x37')];if(_0x2da9e0['query'][_0x7691('0x40')]){_0x22c1c9[_0x7691('0x41')]=[{'all':!![]}];}_0x22c1c9=_[_0x7691('0x3e')]({},_0x22c1c9,_0x2da9e0['options']);return db['SugarcrmConfiguration']['find'](_0x22c1c9)[_0x7691('0x25')](handleEntityNotFound(_0x7ca443,null))['then'](respondWithResult(_0x7ca443,null))[_0x7691('0x44')](handleError(_0x7ca443,null));};exports[_0x7691('0x48')]=function(_0xe0fd4,_0x51f304){return db[_0x7691('0x2e')][_0x7691('0x48')](_0xe0fd4[_0x7691('0x49')],{})['then'](respondWithResult(_0x51f304,0xc9))['catch'](handleError(_0x51f304,null));};exports['update']=function(_0x2aeb18,_0x49ac86){if(_0x2aeb18[_0x7691('0x49')]['id']){delete _0x2aeb18[_0x7691('0x49')]['id'];}return db['SugarcrmConfiguration'][_0x7691('0x4a')]({'where':{'id':_0x2aeb18[_0x7691('0x45')]['id']}})[_0x7691('0x25')](handleEntityNotFound(_0x49ac86,null))[_0x7691('0x25')](saveUpdates(_0x2aeb18['body'],null))['then'](respondWithResult(_0x49ac86,null))[_0x7691('0x44')](handleError(_0x49ac86,null));};exports[_0x7691('0x26')]=function(_0x134020,_0x1061a3){return db[_0x7691('0x2e')][_0x7691('0x4a')]({'where':{'id':_0x134020[_0x7691('0x45')]['id']}})[_0x7691('0x25')](handleEntityNotFound(_0x1061a3,null))[_0x7691('0x25')](removeEntity(_0x1061a3,null))[_0x7691('0x44')](handleError(_0x1061a3,null));};exports['getFields']=function(_0x40f05a,_0x22348a,_0x27994e){var _0x3d73e2={};var _0x14e271={};var _0x5b629c;var _0x3c9ccd;return db[_0x7691('0x2e')][_0x7691('0x4b')]({'where':{'id':_0x40f05a[_0x7691('0x45')]['id']}})[_0x7691('0x25')](handleEntityNotFound(_0x22348a,null))[_0x7691('0x25')](function(_0x29fe7a){if(_0x29fe7a){_0x5b629c=_0x29fe7a;_0x14e271[_0x7691('0x37')]=_[_0x7691('0x33')](db['SugarcrmField'][_0x7691('0x46')]);_0x14e271[_0x7691('0x32')]=_['keys'](_0x40f05a['query']);_0x14e271[_0x7691('0x34')]=_[_0x7691('0x47')](_0x14e271[_0x7691('0x37')],_0x14e271[_0x7691('0x32')]);_0x3d73e2['attributes']=_[_0x7691('0x47')](_0x14e271[_0x7691('0x37')],qs[_0x7691('0x36')](_0x40f05a[_0x7691('0x32')]['fields']));_0x3d73e2['attributes']=_0x3d73e2['attributes'][_0x7691('0x4c')]?_0x3d73e2[_0x7691('0x35')]:_0x14e271['model'];_0x3d73e2[_0x7691('0x3a')]=qs[_0x7691('0x3b')](_0x40f05a['query'][_0x7691('0x3b')]);_0x3d73e2[_0x7691('0x3c')]=qs[_0x7691('0x34')](_[_0x7691('0x4d')](_0x40f05a[_0x7691('0x32')],_0x14e271[_0x7691('0x34')]));if(_0x40f05a[_0x7691('0x32')]['filter']){_0x3d73e2[_0x7691('0x3c')]=_['merge'](_0x3d73e2[_0x7691('0x3c')],{'$or':_['map'](_0x3d73e2['attributes'],function(_0x54eaa9){var _0x37d05a={};_0x37d05a[_0x54eaa9]={'$like':'%'+_0x40f05a[_0x7691('0x32')][_0x7691('0x3d')]+'%'};return _0x37d05a;})});}_0x3d73e2=_[_0x7691('0x3e')]({},_0x3d73e2,_0x40f05a[_0x7691('0x3f')]);return _0x5b629c['getFields'](_0x3d73e2);}})['then'](function(_0x2b5a3d){if(_0x2b5a3d){_0x3c9ccd=_0x2b5a3d[_0x7691('0x4c')];if(!_0x40f05a['query'][_0x7691('0x38')]('nolimit')){_0x3d73e2[_0x7691('0x1f')]=qs[_0x7691('0x1f')](_0x40f05a[_0x7691('0x32')][_0x7691('0x1f')]);_0x3d73e2[_0x7691('0x1e')]=qs[_0x7691('0x1e')](_0x40f05a[_0x7691('0x32')][_0x7691('0x1e')]);}return _0x5b629c['getFields'](_0x3d73e2);}})[_0x7691('0x25')](function(_0x2f46b9){if(_0x2f46b9){return _0x2f46b9?{'count':_0x3c9ccd,'rows':_0x2f46b9}:null;}})[_0x7691('0x25')](respondWithResult(_0x22348a,null))[_0x7691('0x44')](handleError(_0x22348a,null));};exports[_0x7691('0x4e')]=function(_0x480675,_0x223000,_0x4e394a){var _0x45e424={};var _0x3c12e8={};var _0x299614;var _0x35f3bf;return db['SugarcrmConfiguration'][_0x7691('0x4b')]({'where':{'id':_0x480675[_0x7691('0x45')]['id']}})[_0x7691('0x25')](handleEntityNotFound(_0x223000,null))['then'](function(_0x16752e){if(_0x16752e){_0x299614=_0x16752e;_0x3c12e8[_0x7691('0x37')]=_[_0x7691('0x33')](db[_0x7691('0x4f')]['rawAttributes']);_0x3c12e8[_0x7691('0x32')]=_[_0x7691('0x33')](_0x480675[_0x7691('0x32')]);_0x3c12e8['filters']=_[_0x7691('0x47')](_0x3c12e8[_0x7691('0x37')],_0x3c12e8[_0x7691('0x32')]);_0x45e424['attributes']=_[_0x7691('0x47')](_0x3c12e8[_0x7691('0x37')],qs['fields'](_0x480675[_0x7691('0x32')][_0x7691('0x36')]));_0x45e424[_0x7691('0x35')]=_0x45e424[_0x7691('0x35')][_0x7691('0x4c')]?_0x45e424['attributes']:_0x3c12e8[_0x7691('0x37')];_0x45e424[_0x7691('0x3a')]=qs[_0x7691('0x3b')](_0x480675[_0x7691('0x32')][_0x7691('0x3b')]);_0x45e424[_0x7691('0x3c')]=qs[_0x7691('0x34')](_[_0x7691('0x4d')](_0x480675['query'],_0x3c12e8[_0x7691('0x34')]));if(_0x480675[_0x7691('0x32')]['filter']){_0x45e424[_0x7691('0x3c')]=_[_0x7691('0x3e')](_0x45e424[_0x7691('0x3c')],{'$or':_[_0x7691('0x2d')](_0x45e424[_0x7691('0x35')],function(_0x26a23f){var _0x15b636={};_0x15b636[_0x26a23f]={'$like':'%'+_0x480675[_0x7691('0x32')][_0x7691('0x3d')]+'%'};return _0x15b636;})});}_0x45e424=_['merge']({},_0x45e424,_0x480675[_0x7691('0x3f')]);return _0x299614[_0x7691('0x4e')](_0x45e424);}})[_0x7691('0x25')](function(_0x17f957){if(_0x17f957){_0x35f3bf=_0x17f957[_0x7691('0x4c')];if(!_0x480675[_0x7691('0x32')][_0x7691('0x38')](_0x7691('0x39'))){_0x45e424[_0x7691('0x1f')]=qs[_0x7691('0x1f')](_0x480675[_0x7691('0x32')][_0x7691('0x1f')]);_0x45e424[_0x7691('0x1e')]=qs[_0x7691('0x1e')](_0x480675[_0x7691('0x32')]['offset']);}return _0x299614[_0x7691('0x4e')](_0x45e424);}})[_0x7691('0x25')](function(_0x59c0f4){if(_0x59c0f4){return _0x59c0f4?{'count':_0x35f3bf,'rows':_0x59c0f4}:null;}})[_0x7691('0x25')](respondWithResult(_0x223000,null))[_0x7691('0x44')](handleError(_0x223000,null));};exports[_0x7691('0x50')]=function(_0x2a5e56,_0x310d2f,_0x5b5f83){var _0x5d154c={};var _0x3fe1b2={};var _0x5626e4;var _0x3fa50a;return db[_0x7691('0x2e')][_0x7691('0x4b')]({'where':{'id':_0x2a5e56[_0x7691('0x45')]['id']}})['then'](handleEntityNotFound(_0x310d2f,null))['then'](function(_0x67e23e){if(_0x67e23e){_0x5626e4=_0x67e23e;_0x3fe1b2['model']=_[_0x7691('0x33')](db[_0x7691('0x4f')][_0x7691('0x46')]);_0x3fe1b2[_0x7691('0x32')]=_[_0x7691('0x33')](_0x2a5e56['query']);_0x3fe1b2['filters']=_['intersection'](_0x3fe1b2[_0x7691('0x37')],_0x3fe1b2[_0x7691('0x32')]);_0x5d154c[_0x7691('0x35')]=_[_0x7691('0x47')](_0x3fe1b2[_0x7691('0x37')],qs[_0x7691('0x36')](_0x2a5e56[_0x7691('0x32')][_0x7691('0x36')]));_0x5d154c[_0x7691('0x35')]=_0x5d154c[_0x7691('0x35')]['length']?_0x5d154c[_0x7691('0x35')]:_0x3fe1b2[_0x7691('0x37')];_0x5d154c[_0x7691('0x3a')]=qs[_0x7691('0x3b')](_0x2a5e56[_0x7691('0x32')][_0x7691('0x3b')]);_0x5d154c[_0x7691('0x3c')]=qs[_0x7691('0x34')](_[_0x7691('0x4d')](_0x2a5e56[_0x7691('0x32')],_0x3fe1b2[_0x7691('0x34')]));if(_0x2a5e56['query'][_0x7691('0x3d')]){_0x5d154c[_0x7691('0x3c')]=_[_0x7691('0x3e')](_0x5d154c[_0x7691('0x3c')],{'$or':_['map'](_0x5d154c[_0x7691('0x35')],function(_0xcdef62){var _0x58d386={};_0x58d386[_0xcdef62]={'$like':'%'+_0x2a5e56[_0x7691('0x32')][_0x7691('0x3d')]+'%'};return _0x58d386;})});}_0x5d154c=_[_0x7691('0x3e')]({},_0x5d154c,_0x2a5e56['options']);return _0x5626e4[_0x7691('0x50')](_0x5d154c);}})[_0x7691('0x25')](function(_0x4b6fb5){if(_0x4b6fb5){_0x3fa50a=_0x4b6fb5['length'];if(!_0x2a5e56[_0x7691('0x32')][_0x7691('0x38')](_0x7691('0x39'))){_0x5d154c['limit']=qs['limit'](_0x2a5e56[_0x7691('0x32')][_0x7691('0x1f')]);_0x5d154c[_0x7691('0x1e')]=qs[_0x7691('0x1e')](_0x2a5e56[_0x7691('0x32')][_0x7691('0x1e')]);}return _0x5626e4[_0x7691('0x50')](_0x5d154c);}})[_0x7691('0x25')](function(_0x349c12){if(_0x349c12){return _0x349c12?{'count':_0x3fa50a,'rows':_0x349c12}:null;}})[_0x7691('0x25')](respondWithResult(_0x310d2f,null))[_0x7691('0x44')](handleError(_0x310d2f,null));};
\ No newline at end of file
+var _0xe7a4=['limit','count','set','Content-Range','reject','save','update','then','destroy','stack','name','send','index','map','SugarcrmConfiguration','rawAttributes','key','query','model','fields','attributes','length','nolimit','order','sort','pick','filter','merge','where','type','VIRTUAL','includeAll','include','findAll','rows','show','params','keys','filters','intersection','catch','create','body','find','getFields','findOne','SugarcrmField','options','hasOwnProperty','getSubjects','getDescriptions','eml-format','moment','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x23bd2a,_0x34509f){var _0x440dec=function(_0x44baa0){while(--_0x44baa0){_0x23bd2a['push'](_0x23bd2a['shift']());}};_0x440dec(++_0x34509f);}(_0xe7a4,0x82));var _0x4e7a=function(_0x3076ed,_0x1cdc6a){_0x3076ed=_0x3076ed-0x0;var _0x9baec5=_0xe7a4[_0x3076ed];return _0x9baec5;};'use strict';var emlformat=require(_0x4e7a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4e7a('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x4e7a('0x2'));var util=require(_0x4e7a('0x3'));var path=require('path');var sox=require('sox');var csv=require(_0x4e7a('0x4'));var ejs=require(_0x4e7a('0x5'));var fs=require('fs');var fs_extra=require(_0x4e7a('0x6'));var _=require(_0x4e7a('0x7'));var squel=require(_0x4e7a('0x8'));var crypto=require(_0x4e7a('0x9'));var jsforce=require(_0x4e7a('0xa'));var deskjs=require(_0x4e7a('0xb'));var toCsv=require('to-csv');var querystring=require(_0x4e7a('0xc'));var Papa=require(_0x4e7a('0xd'));var Redis=require(_0x4e7a('0xe'));var authService=require(_0x4e7a('0xf'));var qs=require(_0x4e7a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4e7a('0x11'));var logger=require('../../config/logger')(_0x4e7a('0x12'));var utils=require(_0x4e7a('0x13'));var config=require(_0x4e7a('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x4e7a('0x15'))['db'];function respondWithStatusCode(_0x2afd4e,_0x3fb63c){_0x3fb63c=_0x3fb63c||0xcc;return function(_0x110f50){if(_0x110f50){return _0x2afd4e[_0x4e7a('0x16')](_0x3fb63c);}return _0x2afd4e[_0x4e7a('0x17')](_0x3fb63c)[_0x4e7a('0x18')]();};}function respondWithResult(_0x4f0f76,_0x3c0f4f){_0x3c0f4f=_0x3c0f4f||0xc8;return function(_0x657495){if(_0x657495){return _0x4f0f76[_0x4e7a('0x17')](_0x3c0f4f)[_0x4e7a('0x19')](_0x657495);}};}function respondWithFilteredResult(_0x2baf30,_0x6b536f){return function(_0x56024e){if(_0x56024e){var _0x2ed9a2=typeof _0x6b536f[_0x4e7a('0x1a')]===_0x4e7a('0x1b')&&typeof _0x6b536f[_0x4e7a('0x1c')]===_0x4e7a('0x1b');var _0x1a8daf=_0x56024e[_0x4e7a('0x1d')];var _0x443c08=_0x2ed9a2?0x0:_0x6b536f[_0x4e7a('0x1a')];var _0x4542c1=_0x2ed9a2?_0x56024e[_0x4e7a('0x1d')]:_0x6b536f[_0x4e7a('0x1a')]+_0x6b536f['limit'];var _0x4d7968;if(_0x4542c1>=_0x1a8daf){_0x4542c1=_0x1a8daf;_0x4d7968=0xc8;}else{_0x4d7968=0xce;}_0x2baf30[_0x4e7a('0x17')](_0x4d7968);return _0x2baf30[_0x4e7a('0x1e')](_0x4e7a('0x1f'),_0x443c08+'-'+_0x4542c1+'/'+_0x1a8daf)['json'](_0x56024e);}return null;};}function patchUpdates(_0x3a073a){return function(_0x2cde62){try{jsonpatch['apply'](_0x2cde62,_0x3a073a,!![]);}catch(_0x230168){return BPromise[_0x4e7a('0x20')](_0x230168);}return _0x2cde62[_0x4e7a('0x21')]();};}function saveUpdates(_0xa518b6,_0x15ee42){return function(_0x6a4e27){if(_0x6a4e27){return _0x6a4e27[_0x4e7a('0x22')](_0xa518b6)[_0x4e7a('0x23')](function(_0x1f086f){return _0x1f086f;});}return null;};}function removeEntity(_0x4825c6,_0x2b049e){return function(_0x15a69e){if(_0x15a69e){return _0x15a69e[_0x4e7a('0x24')]()[_0x4e7a('0x23')](function(){_0x4825c6[_0x4e7a('0x17')](0xcc)[_0x4e7a('0x18')]();});}};}function handleEntityNotFound(_0x1d3a87,_0x47435b){return function(_0x3205ee){if(!_0x3205ee){_0x1d3a87['sendStatus'](0x194);}return _0x3205ee;};}function handleError(_0x27ee69,_0x34820b){_0x34820b=_0x34820b||0x1f4;return function(_0x44faef){logger['error'](_0x44faef[_0x4e7a('0x25')]);if(_0x44faef['name']){delete _0x44faef[_0x4e7a('0x26')];}_0x27ee69[_0x4e7a('0x17')](_0x34820b)[_0x4e7a('0x27')](_0x44faef);};}exports[_0x4e7a('0x28')]=function(_0x5eafd0,_0x3e06ab){var _0x183fac={},_0xfb5b3f={},_0x456e28={'count':0x0,'rows':[]};var _0x36e938=_[_0x4e7a('0x29')](db[_0x4e7a('0x2a')][_0x4e7a('0x2b')],function(_0x6c15c){return{'name':_0x6c15c['fieldName'],'type':_0x6c15c['type'][_0x4e7a('0x2c')]};});_0xfb5b3f['model']=_[_0x4e7a('0x29')](_0x36e938,_0x4e7a('0x26'));_0xfb5b3f[_0x4e7a('0x2d')]=_['keys'](_0x5eafd0[_0x4e7a('0x2d')]);_0xfb5b3f['filters']=_['intersection'](_0xfb5b3f[_0x4e7a('0x2e')],_0xfb5b3f['query']);_0x183fac['attributes']=_['intersection'](_0xfb5b3f[_0x4e7a('0x2e')],qs[_0x4e7a('0x2f')](_0x5eafd0[_0x4e7a('0x2d')][_0x4e7a('0x2f')]));_0x183fac[_0x4e7a('0x30')]=_0x183fac['attributes'][_0x4e7a('0x31')]?_0x183fac[_0x4e7a('0x30')]:_0xfb5b3f[_0x4e7a('0x2e')];if(!_0x5eafd0[_0x4e7a('0x2d')]['hasOwnProperty'](_0x4e7a('0x32'))){_0x183fac[_0x4e7a('0x1c')]=qs[_0x4e7a('0x1c')](_0x5eafd0['query']['limit']);_0x183fac[_0x4e7a('0x1a')]=qs[_0x4e7a('0x1a')](_0x5eafd0[_0x4e7a('0x2d')][_0x4e7a('0x1a')]);}_0x183fac[_0x4e7a('0x33')]=qs[_0x4e7a('0x34')](_0x5eafd0[_0x4e7a('0x2d')][_0x4e7a('0x34')]);_0x183fac['where']=qs['filters'](_[_0x4e7a('0x35')](_0x5eafd0['query'],_0xfb5b3f['filters']),_0x36e938);if(_0x5eafd0[_0x4e7a('0x2d')][_0x4e7a('0x36')]){_0x183fac['where']=_[_0x4e7a('0x37')](_0x183fac[_0x4e7a('0x38')],{'$or':_['map'](_0x36e938,function(_0x19773d){if(_0x19773d[_0x4e7a('0x39')]!==_0x4e7a('0x3a')){var _0x509336={};_0x509336[_0x19773d[_0x4e7a('0x26')]]={'$like':'%'+_0x5eafd0[_0x4e7a('0x2d')][_0x4e7a('0x36')]+'%'};return _0x509336;}})});}_0x183fac=_[_0x4e7a('0x37')]({},_0x183fac,_0x5eafd0['options']);var _0xbb16cf={'where':_0x183fac['where']};return db[_0x4e7a('0x2a')]['count'](_0xbb16cf)[_0x4e7a('0x23')](function(_0x4578bf){_0x456e28[_0x4e7a('0x1d')]=_0x4578bf;if(_0x5eafd0[_0x4e7a('0x2d')][_0x4e7a('0x3b')]){_0x183fac[_0x4e7a('0x3c')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0x4e7a('0x3d')](_0x183fac);})[_0x4e7a('0x23')](function(_0x1ea9fa){_0x456e28[_0x4e7a('0x3e')]=_0x1ea9fa;return _0x456e28;})[_0x4e7a('0x23')](respondWithFilteredResult(_0x3e06ab,_0x183fac))['catch'](handleError(_0x3e06ab,null));};exports[_0x4e7a('0x3f')]=function(_0x14de1c,_0x9db688){var _0x2a57dd={'raw':![],'where':{'id':_0x14de1c[_0x4e7a('0x40')]['id']}},_0x24ba92={};_0x24ba92[_0x4e7a('0x2e')]=_[_0x4e7a('0x41')](db[_0x4e7a('0x2a')]['rawAttributes']);_0x24ba92[_0x4e7a('0x2d')]=_[_0x4e7a('0x41')](_0x14de1c[_0x4e7a('0x2d')]);_0x24ba92[_0x4e7a('0x42')]=_[_0x4e7a('0x43')](_0x24ba92[_0x4e7a('0x2e')],_0x24ba92[_0x4e7a('0x2d')]);_0x2a57dd[_0x4e7a('0x30')]=_[_0x4e7a('0x43')](_0x24ba92[_0x4e7a('0x2e')],qs[_0x4e7a('0x2f')](_0x14de1c[_0x4e7a('0x2d')][_0x4e7a('0x2f')]));_0x2a57dd[_0x4e7a('0x30')]=_0x2a57dd[_0x4e7a('0x30')][_0x4e7a('0x31')]?_0x2a57dd[_0x4e7a('0x30')]:_0x24ba92[_0x4e7a('0x2e')];if(_0x14de1c[_0x4e7a('0x2d')][_0x4e7a('0x3b')]){_0x2a57dd[_0x4e7a('0x3c')]=[{'all':!![]}];}_0x2a57dd=_[_0x4e7a('0x37')]({},_0x2a57dd,_0x14de1c['options']);return db[_0x4e7a('0x2a')]['find'](_0x2a57dd)[_0x4e7a('0x23')](handleEntityNotFound(_0x9db688,null))['then'](respondWithResult(_0x9db688,null))[_0x4e7a('0x44')](handleError(_0x9db688,null));};exports[_0x4e7a('0x45')]=function(_0x5c1f7e,_0x16b528){return db[_0x4e7a('0x2a')]['create'](_0x5c1f7e['body'],{})['then'](respondWithResult(_0x16b528,0xc9))[_0x4e7a('0x44')](handleError(_0x16b528,null));};exports[_0x4e7a('0x22')]=function(_0x3a963e,_0x29934b){if(_0x3a963e['body']['id']){delete _0x3a963e[_0x4e7a('0x46')]['id'];}return db[_0x4e7a('0x2a')][_0x4e7a('0x47')]({'where':{'id':_0x3a963e[_0x4e7a('0x40')]['id']}})[_0x4e7a('0x23')](handleEntityNotFound(_0x29934b,null))['then'](saveUpdates(_0x3a963e[_0x4e7a('0x46')],null))['then'](respondWithResult(_0x29934b,null))[_0x4e7a('0x44')](handleError(_0x29934b,null));};exports['destroy']=function(_0x3d75f4,_0xd1f8f1){return db[_0x4e7a('0x2a')][_0x4e7a('0x47')]({'where':{'id':_0x3d75f4[_0x4e7a('0x40')]['id']}})[_0x4e7a('0x23')](handleEntityNotFound(_0xd1f8f1,null))[_0x4e7a('0x23')](removeEntity(_0xd1f8f1,null))[_0x4e7a('0x44')](handleError(_0xd1f8f1,null));};exports[_0x4e7a('0x48')]=function(_0x3ba5c9,_0x266352,_0x1001f4){var _0x380e5e={};var _0xe7f67d={};var _0x3de947;var _0x17438d;return db['SugarcrmConfiguration'][_0x4e7a('0x49')]({'where':{'id':_0x3ba5c9['params']['id']}})['then'](handleEntityNotFound(_0x266352,null))[_0x4e7a('0x23')](function(_0x41d36a){if(_0x41d36a){_0x3de947=_0x41d36a;_0xe7f67d[_0x4e7a('0x2e')]=_[_0x4e7a('0x41')](db[_0x4e7a('0x4a')]['rawAttributes']);_0xe7f67d[_0x4e7a('0x2d')]=_['keys'](_0x3ba5c9['query']);_0xe7f67d['filters']=_[_0x4e7a('0x43')](_0xe7f67d[_0x4e7a('0x2e')],_0xe7f67d[_0x4e7a('0x2d')]);_0x380e5e[_0x4e7a('0x30')]=_['intersection'](_0xe7f67d['model'],qs[_0x4e7a('0x2f')](_0x3ba5c9[_0x4e7a('0x2d')]['fields']));_0x380e5e['attributes']=_0x380e5e[_0x4e7a('0x30')][_0x4e7a('0x31')]?_0x380e5e[_0x4e7a('0x30')]:_0xe7f67d['model'];_0x380e5e[_0x4e7a('0x33')]=qs[_0x4e7a('0x34')](_0x3ba5c9[_0x4e7a('0x2d')][_0x4e7a('0x34')]);_0x380e5e[_0x4e7a('0x38')]=qs[_0x4e7a('0x42')](_[_0x4e7a('0x35')](_0x3ba5c9['query'],_0xe7f67d[_0x4e7a('0x42')]));if(_0x3ba5c9[_0x4e7a('0x2d')][_0x4e7a('0x36')]){_0x380e5e[_0x4e7a('0x38')]=_[_0x4e7a('0x37')](_0x380e5e['where'],{'$or':_[_0x4e7a('0x29')](_0x380e5e[_0x4e7a('0x30')],function(_0x57847d){var _0xc6ee9b={};_0xc6ee9b[_0x57847d]={'$like':'%'+_0x3ba5c9[_0x4e7a('0x2d')][_0x4e7a('0x36')]+'%'};return _0xc6ee9b;})});}_0x380e5e=_['merge']({},_0x380e5e,_0x3ba5c9[_0x4e7a('0x4b')]);return _0x3de947[_0x4e7a('0x48')](_0x380e5e);}})[_0x4e7a('0x23')](function(_0x102369){if(_0x102369){_0x17438d=_0x102369[_0x4e7a('0x31')];if(!_0x3ba5c9['query'][_0x4e7a('0x4c')](_0x4e7a('0x32'))){_0x380e5e[_0x4e7a('0x1c')]=qs[_0x4e7a('0x1c')](_0x3ba5c9['query']['limit']);_0x380e5e[_0x4e7a('0x1a')]=qs[_0x4e7a('0x1a')](_0x3ba5c9[_0x4e7a('0x2d')][_0x4e7a('0x1a')]);}return _0x3de947[_0x4e7a('0x48')](_0x380e5e);}})[_0x4e7a('0x23')](function(_0x237cea){if(_0x237cea){return _0x237cea?{'count':_0x17438d,'rows':_0x237cea}:null;}})[_0x4e7a('0x23')](respondWithResult(_0x266352,null))[_0x4e7a('0x44')](handleError(_0x266352,null));};exports[_0x4e7a('0x4d')]=function(_0xe6c5d,_0x101b03,_0x496a0d){var _0x5749a1={};var _0x1c53cb={};var _0x7d81a9;var _0x452336;return db['SugarcrmConfiguration'][_0x4e7a('0x49')]({'where':{'id':_0xe6c5d['params']['id']}})[_0x4e7a('0x23')](handleEntityNotFound(_0x101b03,null))[_0x4e7a('0x23')](function(_0x3e9f61){if(_0x3e9f61){_0x7d81a9=_0x3e9f61;_0x1c53cb['model']=_['keys'](db[_0x4e7a('0x4a')][_0x4e7a('0x2b')]);_0x1c53cb['query']=_[_0x4e7a('0x41')](_0xe6c5d[_0x4e7a('0x2d')]);_0x1c53cb[_0x4e7a('0x42')]=_['intersection'](_0x1c53cb[_0x4e7a('0x2e')],_0x1c53cb['query']);_0x5749a1[_0x4e7a('0x30')]=_[_0x4e7a('0x43')](_0x1c53cb[_0x4e7a('0x2e')],qs[_0x4e7a('0x2f')](_0xe6c5d[_0x4e7a('0x2d')][_0x4e7a('0x2f')]));_0x5749a1[_0x4e7a('0x30')]=_0x5749a1[_0x4e7a('0x30')][_0x4e7a('0x31')]?_0x5749a1[_0x4e7a('0x30')]:_0x1c53cb[_0x4e7a('0x2e')];_0x5749a1[_0x4e7a('0x33')]=qs[_0x4e7a('0x34')](_0xe6c5d['query'][_0x4e7a('0x34')]);_0x5749a1[_0x4e7a('0x38')]=qs['filters'](_[_0x4e7a('0x35')](_0xe6c5d[_0x4e7a('0x2d')],_0x1c53cb[_0x4e7a('0x42')]));if(_0xe6c5d[_0x4e7a('0x2d')][_0x4e7a('0x36')]){_0x5749a1[_0x4e7a('0x38')]=_['merge'](_0x5749a1[_0x4e7a('0x38')],{'$or':_[_0x4e7a('0x29')](_0x5749a1['attributes'],function(_0xbdcf8e){var _0x408d2a={};_0x408d2a[_0xbdcf8e]={'$like':'%'+_0xe6c5d[_0x4e7a('0x2d')][_0x4e7a('0x36')]+'%'};return _0x408d2a;})});}_0x5749a1=_[_0x4e7a('0x37')]({},_0x5749a1,_0xe6c5d[_0x4e7a('0x4b')]);return _0x7d81a9[_0x4e7a('0x4d')](_0x5749a1);}})[_0x4e7a('0x23')](function(_0x45a5a1){if(_0x45a5a1){_0x452336=_0x45a5a1['length'];if(!_0xe6c5d[_0x4e7a('0x2d')][_0x4e7a('0x4c')](_0x4e7a('0x32'))){_0x5749a1['limit']=qs[_0x4e7a('0x1c')](_0xe6c5d[_0x4e7a('0x2d')]['limit']);_0x5749a1['offset']=qs[_0x4e7a('0x1a')](_0xe6c5d[_0x4e7a('0x2d')]['offset']);}return _0x7d81a9[_0x4e7a('0x4d')](_0x5749a1);}})['then'](function(_0x22b57f){if(_0x22b57f){return _0x22b57f?{'count':_0x452336,'rows':_0x22b57f}:null;}})['then'](respondWithResult(_0x101b03,null))['catch'](handleError(_0x101b03,null));};exports[_0x4e7a('0x4e')]=function(_0x9eabe5,_0x46fbae,_0x34e081){var _0x25829b={};var _0x315167={};var _0x4c11db;var _0x4ee863;return db[_0x4e7a('0x2a')]['findOne']({'where':{'id':_0x9eabe5['params']['id']}})[_0x4e7a('0x23')](handleEntityNotFound(_0x46fbae,null))['then'](function(_0xf98bb7){if(_0xf98bb7){_0x4c11db=_0xf98bb7;_0x315167[_0x4e7a('0x2e')]=_[_0x4e7a('0x41')](db[_0x4e7a('0x4a')][_0x4e7a('0x2b')]);_0x315167[_0x4e7a('0x2d')]=_[_0x4e7a('0x41')](_0x9eabe5[_0x4e7a('0x2d')]);_0x315167[_0x4e7a('0x42')]=_['intersection'](_0x315167[_0x4e7a('0x2e')],_0x315167[_0x4e7a('0x2d')]);_0x25829b[_0x4e7a('0x30')]=_[_0x4e7a('0x43')](_0x315167[_0x4e7a('0x2e')],qs[_0x4e7a('0x2f')](_0x9eabe5[_0x4e7a('0x2d')][_0x4e7a('0x2f')]));_0x25829b[_0x4e7a('0x30')]=_0x25829b[_0x4e7a('0x30')]['length']?_0x25829b[_0x4e7a('0x30')]:_0x315167[_0x4e7a('0x2e')];_0x25829b[_0x4e7a('0x33')]=qs[_0x4e7a('0x34')](_0x9eabe5[_0x4e7a('0x2d')][_0x4e7a('0x34')]);_0x25829b[_0x4e7a('0x38')]=qs['filters'](_[_0x4e7a('0x35')](_0x9eabe5[_0x4e7a('0x2d')],_0x315167[_0x4e7a('0x42')]));if(_0x9eabe5[_0x4e7a('0x2d')][_0x4e7a('0x36')]){_0x25829b[_0x4e7a('0x38')]=_['merge'](_0x25829b[_0x4e7a('0x38')],{'$or':_[_0x4e7a('0x29')](_0x25829b[_0x4e7a('0x30')],function(_0xe1bafd){var _0x3c4e49={};_0x3c4e49[_0xe1bafd]={'$like':'%'+_0x9eabe5[_0x4e7a('0x2d')][_0x4e7a('0x36')]+'%'};return _0x3c4e49;})});}_0x25829b=_['merge']({},_0x25829b,_0x9eabe5[_0x4e7a('0x4b')]);return _0x4c11db[_0x4e7a('0x4e')](_0x25829b);}})[_0x4e7a('0x23')](function(_0x7676a4){if(_0x7676a4){_0x4ee863=_0x7676a4[_0x4e7a('0x31')];if(!_0x9eabe5[_0x4e7a('0x2d')][_0x4e7a('0x4c')]('nolimit')){_0x25829b[_0x4e7a('0x1c')]=qs[_0x4e7a('0x1c')](_0x9eabe5[_0x4e7a('0x2d')][_0x4e7a('0x1c')]);_0x25829b[_0x4e7a('0x1a')]=qs[_0x4e7a('0x1a')](_0x9eabe5[_0x4e7a('0x2d')][_0x4e7a('0x1a')]);}return _0x4c11db[_0x4e7a('0x4e')](_0x25829b);}})[_0x4e7a('0x23')](function(_0x3f87bf){if(_0x3f87bf){return _0x3f87bf?{'count':_0x4ee863,'rows':_0x3f87bf}:null;}})[_0x4e7a('0x23')](respondWithResult(_0x46fbae,null))[_0x4e7a('0x44')](handleError(_0x46fbae,null));};
\ No newline at end of file
index 56aa647..9e00599 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7177=['moment','request-promise','path','rimraf','../../config/environment','exports','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger','api'];(function(_0x5dc4be,_0x16093d){var _0x493875=function(_0x5bb503){while(--_0x5bb503){_0x5dc4be['push'](_0x5dc4be['shift']());}};_0x493875(++_0x16093d);}(_0x7177,0x1ac));var _0x7717=function(_0x202506,_0x5b9c15){_0x202506=_0x202506-0x0;var _0x4c3e29=_0x7177[_0x202506];return _0x4c3e29;};'use strict';var _=require(_0x7717('0x0'));var util=require(_0x7717('0x1'));var logger=require(_0x7717('0x2'))(_0x7717('0x3'));var moment=require(_0x7717('0x4'));var BPromise=require('bluebird');var rp=require(_0x7717('0x5'));var fs=require('fs');var path=require(_0x7717('0x6'));var rimraf=require(_0x7717('0x7'));var config=require(_0x7717('0x8'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x7717('0x9')]=function(_0x31c49e,_0x9e280f){return _0x31c49e['define'](_0x7717('0xa'),attributes,{'tableName':_0x7717('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6fea=['define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes'];(function(_0x28e46a,_0x2d80a6){var _0x591a09=function(_0x5657b2){while(--_0x5657b2){_0x28e46a['push'](_0x28e46a['shift']());}};_0x591a09(++_0x2d80a6);}(_0x6fea,0x10d));var _0xa6fe=function(_0x484cb9,_0x103489){_0x484cb9=_0x484cb9-0x0;var _0x59517e=_0x6fea[_0x484cb9];return _0x59517e;};'use strict';var _=require(_0xa6fe('0x0'));var util=require(_0xa6fe('0x1'));var logger=require(_0xa6fe('0x2'))(_0xa6fe('0x3'));var moment=require(_0xa6fe('0x4'));var BPromise=require(_0xa6fe('0x5'));var rp=require(_0xa6fe('0x6'));var fs=require('fs');var path=require(_0xa6fe('0x7'));var rimraf=require(_0xa6fe('0x8'));var config=require(_0xa6fe('0x9'));var attributes=require(_0xa6fe('0xa'));module['exports']=function(_0x41ff33,_0x1bc80c){return _0x41ff33[_0xa6fe('0xb')](_0xa6fe('0xc'),attributes,{'tableName':_0xa6fe('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b094b7e..0e1a12d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f99=['SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3c5191,_0x3fb9ee){var _0x209c85=function(_0x18c8dd){while(--_0x18c8dd){_0x3c5191['push'](_0x3c5191['shift']());}};_0x209c85(++_0x3fb9ee);}(_0x1f99,0x7a));var _0x91f9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1f99[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x91f9('0x0'));var util=require(_0x91f9('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x91f9('0x2'));var fs=require('fs');var Redis=require(_0x91f9('0x3'));var db=require(_0x91f9('0x4'))['db'];var utils=require(_0x91f9('0x5'));var logger=require('../../config/logger')(_0x91f9('0x6'));var config=require(_0x91f9('0x7'));var jayson=require(_0x91f9('0x8'));var client=jayson[_0x91f9('0x9')][_0x91f9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x315220,_0x543ea8,_0x19da83){return new BPromise(function(_0xf815a3,_0xcdffd2){return client[_0x91f9('0xb')](_0x315220,_0x19da83)['then'](function(_0x1b8477){logger[_0x91f9('0xc')](_0x91f9('0xd'),_0x543ea8,_0x91f9('0xe'));logger[_0x91f9('0xf')](_0x91f9('0x10'),_0x543ea8,'request\x20sent',JSON[_0x91f9('0x11')](_0x1b8477));if(_0x1b8477[_0x91f9('0x12')]){if(_0x1b8477[_0x91f9('0x12')][_0x91f9('0x13')]===0x1f4){logger[_0x91f9('0x12')](_0x91f9('0xd'),_0x543ea8,_0x1b8477[_0x91f9('0x12')][_0x91f9('0x14')]);return _0xcdffd2(_0x1b8477[_0x91f9('0x12')][_0x91f9('0x14')]);}logger['error'](_0x91f9('0xd'),_0x543ea8,_0x1b8477[_0x91f9('0x12')][_0x91f9('0x14')]);return _0xf815a3(_0x1b8477['error']['message']);}else{logger[_0x91f9('0xc')](_0x91f9('0xd'),_0x543ea8,_0x91f9('0xe'));_0xf815a3(_0x1b8477[_0x91f9('0x15')][_0x91f9('0x14')]);}})[_0x91f9('0x16')](function(_0x59a48f){logger[_0x91f9('0x12')](_0x91f9('0xd'),_0x543ea8,_0x59a48f);_0xcdffd2(_0x59a48f);});});}
\ No newline at end of file
+var _0x5c89=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x8c8027,_0x1bdb22){var _0x54b110=function(_0x36eabf){while(--_0x36eabf){_0x8c8027['push'](_0x8c8027['shift']());}};_0x54b110(++_0x1bdb22);}(_0x5c89,0x141));var _0x95c8=function(_0x47cf9a,_0x3072b2){_0x47cf9a=_0x47cf9a-0x0;var _0x1bc9b7=_0x5c89[_0x47cf9a];return _0x1bc9b7;};'use strict';var _=require(_0x95c8('0x0'));var util=require(_0x95c8('0x1'));var moment=require(_0x95c8('0x2'));var BPromise=require(_0x95c8('0x3'));var rs=require(_0x95c8('0x4'));var fs=require('fs');var Redis=require(_0x95c8('0x5'));var db=require(_0x95c8('0x6'))['db'];var utils=require(_0x95c8('0x7'));var logger=require(_0x95c8('0x8'))(_0x95c8('0x9'));var config=require(_0x95c8('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x95c8('0xb')][_0x95c8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xdde4b3,_0xe04bd3,_0x493194){return new BPromise(function(_0x3bd6b9,_0x25e132){return client[_0x95c8('0xd')](_0xdde4b3,_0x493194)[_0x95c8('0xe')](function(_0x5c4d95){logger[_0x95c8('0xf')](_0x95c8('0x10'),_0xe04bd3,_0x95c8('0x11'));logger[_0x95c8('0x12')](_0x95c8('0x13'),_0xe04bd3,_0x95c8('0x11'),JSON['stringify'](_0x5c4d95));if(_0x5c4d95['error']){if(_0x5c4d95[_0x95c8('0x14')][_0x95c8('0x15')]===0x1f4){logger[_0x95c8('0x14')](_0x95c8('0x10'),_0xe04bd3,_0x5c4d95[_0x95c8('0x14')]['message']);return _0x25e132(_0x5c4d95[_0x95c8('0x14')]['message']);}logger[_0x95c8('0x14')](_0x95c8('0x10'),_0xe04bd3,_0x5c4d95[_0x95c8('0x14')][_0x95c8('0x16')]);return _0x3bd6b9(_0x5c4d95[_0x95c8('0x14')]['message']);}else{logger['info'](_0x95c8('0x10'),_0xe04bd3,_0x95c8('0x11'));_0x3bd6b9(_0x5c4d95[_0x95c8('0x17')][_0x95c8('0x16')]);}})[_0x95c8('0x18')](function(_0xdd69f){logger[_0x95c8('0x14')]('SugarcrmConfiguration,\x20%s,\x20%s',_0xe04bd3,_0xdd69f);_0x25e132(_0xdd69f);});});}
\ No newline at end of file
index 58ef048..cc3bbf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6eb=['../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x4b2251,_0x393f10){var _0x5d22fb=function(_0x10992c){while(--_0x10992c){_0x4b2251['push'](_0x4b2251['shift']());}};_0x5d22fb(++_0x393f10);}(_0xc6eb,0x1b3));var _0xbc6e=function(_0x5d6814,_0x1dfdc5){_0x5d6814=_0x5d6814-0x0;var _0x271a00=_0xc6eb[_0x5d6814];return _0x271a00;};'use strict';var multer=require(_0xbc6e('0x0'));var util=require(_0xbc6e('0x1'));var path=require(_0xbc6e('0x2'));var timeout=require(_0xbc6e('0x3'));var express=require(_0xbc6e('0x4'));var router=express[_0xbc6e('0x5')]();var fs_extra=require(_0xbc6e('0x6'));var auth=require(_0xbc6e('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xbc6e('0x8'));var controller=require('./intSugarcrmField.controller');router[_0xbc6e('0x9')]('/',auth[_0xbc6e('0xa')](),controller[_0xbc6e('0xb')]);router['get'](_0xbc6e('0xc'),auth[_0xbc6e('0xa')](),controller[_0xbc6e('0xd')]);router[_0xbc6e('0xe')]('/',auth[_0xbc6e('0xa')](),controller[_0xbc6e('0xf')]);router[_0xbc6e('0x10')](_0xbc6e('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xbc6e('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xe7ec=['../../config/environment','./intSugarcrmField.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x292904,_0x33070b){var _0x13b7c4=function(_0x6cceee){while(--_0x6cceee){_0x292904['push'](_0x292904['shift']());}};_0x13b7c4(++_0x33070b);}(_0xe7ec,0xa4));var _0xce7e=function(_0x3ab353,_0x5d5283){_0x3ab353=_0x3ab353-0x0;var _0x1e2285=_0xe7ec[_0x3ab353];return _0x1e2285;};'use strict';var multer=require(_0xce7e('0x0'));var util=require('util');var path=require(_0xce7e('0x1'));var timeout=require(_0xce7e('0x2'));var express=require(_0xce7e('0x3'));var router=express['Router']();var fs_extra=require(_0xce7e('0x4'));var auth=require(_0xce7e('0x5'));var interaction=require(_0xce7e('0x6'));var config=require(_0xce7e('0x7'));var controller=require(_0xce7e('0x8'));router[_0xce7e('0x9')]('/',auth[_0xce7e('0xa')](),controller['index']);router['get'](_0xce7e('0xb'),auth[_0xce7e('0xa')](),controller[_0xce7e('0xc')]);router[_0xce7e('0xd')]('/',auth[_0xce7e('0xa')](),controller[_0xce7e('0xe')]);router[_0xce7e('0xf')](_0xce7e('0xb'),auth['isAuthenticated'](),controller[_0xce7e('0x10')]);router[_0xce7e('0x11')](_0xce7e('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0xce7e('0x12')]=router;
\ No newline at end of file
index 9e06e3e..f3d25f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0afc=['ENUM','string','variable','keyValue','picklist','STRING','customVariable','BOOLEAN','sequelize'];(function(_0x5471ec,_0x1ce81a){var _0x121d4c=function(_0xefb655){while(--_0xefb655){_0x5471ec['push'](_0x5471ec['shift']());}};_0x121d4c(++_0x1ce81a);}(_0x0afc,0x170));var _0xc0af=function(_0x36b18f,_0x4ce3d8){_0x36b18f=_0x36b18f-0x0;var _0x38f01=_0x0afc[_0x36b18f];return _0x38f01;};'use strict';var Sequelize=require(_0xc0af('0x0'));module['exports']={'type':{'type':Sequelize[_0xc0af('0x1')](_0xc0af('0x2'),_0xc0af('0x3'),'customVariable',_0xc0af('0x4'),_0xc0af('0x5')),'defaultValue':_0xc0af('0x2')},'content':{'type':Sequelize[_0xc0af('0x6')]},'key':{'type':Sequelize[_0xc0af('0x6')]},'keyType':{'type':Sequelize[_0xc0af('0x1')](_0xc0af('0x2'),_0xc0af('0x3'),_0xc0af('0x7'))},'keyContent':{'type':Sequelize[_0xc0af('0x6')]},'idField':{'type':Sequelize[_0xc0af('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xc0af('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc0af('0x6')]}};
\ No newline at end of file
+var _0x53b3=['BOOLEAN','sequelize','ENUM','variable','customVariable','keyValue','picklist','string','STRING'];(function(_0x3e6d5d,_0x264c7a){var _0x238923=function(_0x201b19){while(--_0x201b19){_0x3e6d5d['push'](_0x3e6d5d['shift']());}};_0x238923(++_0x264c7a);}(_0x53b3,0x14e));var _0x353b=function(_0x235ba6,_0x315773){_0x235ba6=_0x235ba6-0x0;var _0x2aa7c4=_0x53b3[_0x235ba6];return _0x2aa7c4;};'use strict';var Sequelize=require(_0x353b('0x0'));module['exports']={'type':{'type':Sequelize[_0x353b('0x1')]('string',_0x353b('0x2'),_0x353b('0x3'),_0x353b('0x4'),_0x353b('0x5')),'defaultValue':_0x353b('0x6')},'content':{'type':Sequelize[_0x353b('0x7')]},'key':{'type':Sequelize[_0x353b('0x7')]},'keyType':{'type':Sequelize[_0x353b('0x1')]('string','variable',_0x353b('0x3'))},'keyContent':{'type':Sequelize[_0x353b('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x353b('0x7')]},'customField':{'type':Sequelize[_0x353b('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x353b('0x7')]}};
\ No newline at end of file
index ebf31c3..f81e9f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe083=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','reject','update','then','destroy','error','name','send','index','map','SugarcrmField','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','includeAll','include','rows','catch','show','fields','find','create','body','params','eml-format'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xe083,0x15d));var _0x3e08=function(_0x10b848,_0x302c50){_0x10b848=_0x10b848-0x0;var _0x961f5a=_0xe083[_0x10b848];return _0x961f5a;};'use strict';var emlformat=require(_0x3e08('0x0'));var rimraf=require(_0x3e08('0x1'));var zipdir=require(_0x3e08('0x2'));var jsonpatch=require(_0x3e08('0x3'));var rp=require(_0x3e08('0x4'));var moment=require(_0x3e08('0x5'));var BPromise=require(_0x3e08('0x6'));var Mustache=require('mustache');var util=require(_0x3e08('0x7'));var path=require('path');var sox=require(_0x3e08('0x8'));var csv=require(_0x3e08('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3e08('0xa'));var squel=require(_0x3e08('0xb'));var crypto=require(_0x3e08('0xc'));var jsforce=require(_0x3e08('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3e08('0xe'));var Papa=require(_0x3e08('0xf'));var Redis=require(_0x3e08('0x10'));var authService=require(_0x3e08('0x11'));var qs=require(_0x3e08('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3e08('0x13'));var logger=require(_0x3e08('0x14'))(_0x3e08('0x15'));var utils=require('../../config/utils');var config=require(_0x3e08('0x16'));var licenseUtil=require(_0x3e08('0x17'));var db=require(_0x3e08('0x18'))['db'];function respondWithStatusCode(_0x414cf0,_0x1a6425){_0x1a6425=_0x1a6425||0xcc;return function(_0x57d20d){if(_0x57d20d){return _0x414cf0[_0x3e08('0x19')](_0x1a6425);}return _0x414cf0[_0x3e08('0x1a')](_0x1a6425)[_0x3e08('0x1b')]();};}function respondWithResult(_0x11721c,_0x42a1ad){_0x42a1ad=_0x42a1ad||0xc8;return function(_0x446756){if(_0x446756){return _0x11721c[_0x3e08('0x1a')](_0x42a1ad)['json'](_0x446756);}};}function respondWithFilteredResult(_0x96193f,_0x49b9f7){return function(_0x4d198c){if(_0x4d198c){var _0x5d5f69=typeof _0x49b9f7[_0x3e08('0x1c')]===_0x3e08('0x1d')&&typeof _0x49b9f7[_0x3e08('0x1e')]===_0x3e08('0x1d');var _0x37186f=_0x4d198c[_0x3e08('0x1f')];var _0x4f0737=_0x5d5f69?0x0:_0x49b9f7[_0x3e08('0x1c')];var _0x4e8957=_0x5d5f69?_0x4d198c[_0x3e08('0x1f')]:_0x49b9f7[_0x3e08('0x1c')]+_0x49b9f7[_0x3e08('0x1e')];var _0x13f5a7;if(_0x4e8957>=_0x37186f){_0x4e8957=_0x37186f;_0x13f5a7=0xc8;}else{_0x13f5a7=0xce;}_0x96193f[_0x3e08('0x1a')](_0x13f5a7);return _0x96193f[_0x3e08('0x20')]('Content-Range',_0x4f0737+'-'+_0x4e8957+'/'+_0x37186f)['json'](_0x4d198c);}return null;};}function patchUpdates(_0x4b370f){return function(_0x31ecb0){try{jsonpatch['apply'](_0x31ecb0,_0x4b370f,!![]);}catch(_0xe275c4){return BPromise[_0x3e08('0x21')](_0xe275c4);}return _0x31ecb0['save']();};}function saveUpdates(_0x172fb4,_0x16cdc2){return function(_0x1e556b){if(_0x1e556b){return _0x1e556b[_0x3e08('0x22')](_0x172fb4)[_0x3e08('0x23')](function(_0x18ba6d){return _0x18ba6d;});}return null;};}function removeEntity(_0x3670ed,_0x464cb3){return function(_0x1f46ee){if(_0x1f46ee){return _0x1f46ee[_0x3e08('0x24')]()[_0x3e08('0x23')](function(){_0x3670ed[_0x3e08('0x1a')](0xcc)[_0x3e08('0x1b')]();});}};}function handleEntityNotFound(_0x5310d9,_0x45b59d){return function(_0x32f8b8){if(!_0x32f8b8){_0x5310d9['sendStatus'](0x194);}return _0x32f8b8;};}function handleError(_0x388588,_0x1769c7){_0x1769c7=_0x1769c7||0x1f4;return function(_0x31e7f7){logger[_0x3e08('0x25')](_0x31e7f7['stack']);if(_0x31e7f7['name']){delete _0x31e7f7[_0x3e08('0x26')];}_0x388588[_0x3e08('0x1a')](_0x1769c7)[_0x3e08('0x27')](_0x31e7f7);};}exports[_0x3e08('0x28')]=function(_0x789372,_0x431946){var _0x4cb778={},_0x365ffd={},_0xaf9d11={'count':0x0,'rows':[]};var _0x36bf52=_[_0x3e08('0x29')](db[_0x3e08('0x2a')][_0x3e08('0x2b')],function(_0x29db53){return{'name':_0x29db53[_0x3e08('0x2c')],'type':_0x29db53[_0x3e08('0x2d')]['key']};});_0x365ffd[_0x3e08('0x2e')]=_[_0x3e08('0x29')](_0x36bf52,_0x3e08('0x26'));_0x365ffd['query']=_[_0x3e08('0x2f')](_0x789372['query']);_0x365ffd[_0x3e08('0x30')]=_[_0x3e08('0x31')](_0x365ffd[_0x3e08('0x2e')],_0x365ffd['query']);_0x4cb778['attributes']=_['intersection'](_0x365ffd[_0x3e08('0x2e')],qs['fields'](_0x789372[_0x3e08('0x32')]['fields']));_0x4cb778[_0x3e08('0x33')]=_0x4cb778[_0x3e08('0x33')][_0x3e08('0x34')]?_0x4cb778[_0x3e08('0x33')]:_0x365ffd[_0x3e08('0x2e')];if(!_0x789372[_0x3e08('0x32')][_0x3e08('0x35')](_0x3e08('0x36'))){_0x4cb778[_0x3e08('0x1e')]=qs['limit'](_0x789372[_0x3e08('0x32')][_0x3e08('0x1e')]);_0x4cb778['offset']=qs['offset'](_0x789372[_0x3e08('0x32')][_0x3e08('0x1c')]);}_0x4cb778[_0x3e08('0x37')]=qs[_0x3e08('0x38')](_0x789372[_0x3e08('0x32')][_0x3e08('0x38')]);_0x4cb778[_0x3e08('0x39')]=qs[_0x3e08('0x30')](_['pick'](_0x789372['query'],_0x365ffd[_0x3e08('0x30')]),_0x36bf52);if(_0x789372[_0x3e08('0x32')][_0x3e08('0x3a')]){_0x4cb778[_0x3e08('0x39')]=_['merge'](_0x4cb778[_0x3e08('0x39')],{'$or':_['map'](_0x36bf52,function(_0x4c207f){if(_0x4c207f[_0x3e08('0x2d')]!=='VIRTUAL'){var _0x33cded={};_0x33cded[_0x4c207f[_0x3e08('0x26')]]={'$like':'%'+_0x789372['query'][_0x3e08('0x3a')]+'%'};return _0x33cded;}})});}_0x4cb778=_[_0x3e08('0x3b')]({},_0x4cb778,_0x789372['options']);var _0x5ccb4c={'where':_0x4cb778[_0x3e08('0x39')]};return db[_0x3e08('0x2a')][_0x3e08('0x1f')](_0x5ccb4c)[_0x3e08('0x23')](function(_0x49b3d0){_0xaf9d11[_0x3e08('0x1f')]=_0x49b3d0;if(_0x789372['query'][_0x3e08('0x3c')]){_0x4cb778[_0x3e08('0x3d')]=[{'all':!![]}];}return db[_0x3e08('0x2a')]['findAll'](_0x4cb778);})[_0x3e08('0x23')](function(_0x48abe8){_0xaf9d11[_0x3e08('0x3e')]=_0x48abe8;return _0xaf9d11;})['then'](respondWithFilteredResult(_0x431946,_0x4cb778))[_0x3e08('0x3f')](handleError(_0x431946,null));};exports[_0x3e08('0x40')]=function(_0x3e6de7,_0x2a4b79){var _0x6192a6={'raw':!![],'where':{'id':_0x3e6de7['params']['id']}},_0x1cdaa6={};_0x1cdaa6[_0x3e08('0x2e')]=_['keys'](db['SugarcrmField'][_0x3e08('0x2b')]);_0x1cdaa6['query']=_[_0x3e08('0x2f')](_0x3e6de7[_0x3e08('0x32')]);_0x1cdaa6[_0x3e08('0x30')]=_[_0x3e08('0x31')](_0x1cdaa6['model'],_0x1cdaa6[_0x3e08('0x32')]);_0x6192a6[_0x3e08('0x33')]=_['intersection'](_0x1cdaa6[_0x3e08('0x2e')],qs[_0x3e08('0x41')](_0x3e6de7[_0x3e08('0x32')][_0x3e08('0x41')]));_0x6192a6['attributes']=_0x6192a6[_0x3e08('0x33')]['length']?_0x6192a6['attributes']:_0x1cdaa6[_0x3e08('0x2e')];if(_0x3e6de7[_0x3e08('0x32')][_0x3e08('0x3c')]){_0x6192a6[_0x3e08('0x3d')]=[{'all':!![]}];}_0x6192a6=_['merge']({},_0x6192a6,_0x3e6de7['options']);return db[_0x3e08('0x2a')][_0x3e08('0x42')](_0x6192a6)[_0x3e08('0x23')](handleEntityNotFound(_0x2a4b79,null))[_0x3e08('0x23')](respondWithResult(_0x2a4b79,null))['catch'](handleError(_0x2a4b79,null));};exports[_0x3e08('0x43')]=function(_0x1df7c8,_0x75a208){return db[_0x3e08('0x2a')][_0x3e08('0x43')](_0x1df7c8[_0x3e08('0x44')],{})[_0x3e08('0x23')](respondWithResult(_0x75a208,0xc9))[_0x3e08('0x3f')](handleError(_0x75a208,null));};exports[_0x3e08('0x22')]=function(_0x42a084,_0x59d3a4){if(_0x42a084['body']['id']){delete _0x42a084[_0x3e08('0x44')]['id'];}return db[_0x3e08('0x2a')][_0x3e08('0x42')]({'where':{'id':_0x42a084['params']['id']}})[_0x3e08('0x23')](handleEntityNotFound(_0x59d3a4,null))[_0x3e08('0x23')](saveUpdates(_0x42a084[_0x3e08('0x44')],null))[_0x3e08('0x23')](respondWithResult(_0x59d3a4,null))['catch'](handleError(_0x59d3a4,null));};exports[_0x3e08('0x24')]=function(_0x1fd098,_0x31e6ac){return db[_0x3e08('0x2a')][_0x3e08('0x42')]({'where':{'id':_0x1fd098[_0x3e08('0x45')]['id']}})['then'](handleEntityNotFound(_0x31e6ac,null))['then'](removeEntity(_0x31e6ac,null))[_0x3e08('0x3f')](handleError(_0x31e6ac,null));};
\ No newline at end of file
+var _0xa95c=['then','catch','show','intersection','include','create','body','find','params','rimraf','zip-dir','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','crypto','jsforce','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','destroy','error','name','send','index','map','SugarcrmField','rawAttributes','fieldName','key','model','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll'];(function(_0x2f49df,_0x518919){var _0x1ec090=function(_0x19e46f){while(--_0x19e46f){_0x2f49df['push'](_0x2f49df['shift']());}};_0x1ec090(++_0x518919);}(_0xa95c,0x1a1));var _0xca95=function(_0x26920d,_0x583a18){_0x26920d=_0x26920d-0x0;var _0x3ebcfe=_0xa95c[_0x26920d];return _0x3ebcfe;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xca95('0x0'));var zipdir=require(_0xca95('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xca95('0x2'));var moment=require(_0xca95('0x3'));var BPromise=require(_0xca95('0x4'));var Mustache=require(_0xca95('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xca95('0x6'));var ejs=require(_0xca95('0x7'));var fs=require('fs');var fs_extra=require(_0xca95('0x8'));var _=require(_0xca95('0x9'));var squel=require('squel');var crypto=require(_0xca95('0xa'));var jsforce=require(_0xca95('0xb'));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(_0xca95('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0xca95('0xd'));var hardwareService=require(_0xca95('0xe'));var logger=require('../../config/logger')(_0xca95('0xf'));var utils=require(_0xca95('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0xca95('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5441b3,_0x11f5d1){_0x11f5d1=_0x11f5d1||0xcc;return function(_0x14019e){if(_0x14019e){return _0x5441b3[_0xca95('0x12')](_0x11f5d1);}return _0x5441b3[_0xca95('0x13')](_0x11f5d1)[_0xca95('0x14')]();};}function respondWithResult(_0x5b7e1e,_0x2aea7b){_0x2aea7b=_0x2aea7b||0xc8;return function(_0x2c1702){if(_0x2c1702){return _0x5b7e1e['status'](_0x2aea7b)[_0xca95('0x15')](_0x2c1702);}};}function respondWithFilteredResult(_0x47f82e,_0x705562){return function(_0x401794){if(_0x401794){var _0x319670=typeof _0x705562[_0xca95('0x16')]==='undefined'&&typeof _0x705562[_0xca95('0x17')]===_0xca95('0x18');var _0xbed985=_0x401794[_0xca95('0x19')];var _0x12c356=_0x319670?0x0:_0x705562['offset'];var _0x28d30f=_0x319670?_0x401794[_0xca95('0x19')]:_0x705562[_0xca95('0x16')]+_0x705562['limit'];var _0x148b0f;if(_0x28d30f>=_0xbed985){_0x28d30f=_0xbed985;_0x148b0f=0xc8;}else{_0x148b0f=0xce;}_0x47f82e[_0xca95('0x13')](_0x148b0f);return _0x47f82e[_0xca95('0x1a')]('Content-Range',_0x12c356+'-'+_0x28d30f+'/'+_0xbed985)['json'](_0x401794);}return null;};}function patchUpdates(_0xa7e3f0){return function(_0x2efa75){try{jsonpatch[_0xca95('0x1b')](_0x2efa75,_0xa7e3f0,!![]);}catch(_0x48ef12){return BPromise[_0xca95('0x1c')](_0x48ef12);}return _0x2efa75[_0xca95('0x1d')]();};}function saveUpdates(_0x36ea48,_0x274f6d){return function(_0x5f2595){if(_0x5f2595){return _0x5f2595[_0xca95('0x1e')](_0x36ea48)['then'](function(_0x2e89c4){return _0x2e89c4;});}return null;};}function removeEntity(_0x4acecb,_0x1789a9){return function(_0x32cedf){if(_0x32cedf){return _0x32cedf[_0xca95('0x1f')]()['then'](function(){_0x4acecb[_0xca95('0x13')](0xcc)[_0xca95('0x14')]();});}};}function handleEntityNotFound(_0x4fcef0,_0xcea4ad){return function(_0x1c56e3){if(!_0x1c56e3){_0x4fcef0[_0xca95('0x12')](0x194);}return _0x1c56e3;};}function handleError(_0x5a7e2e,_0x1ab6ad){_0x1ab6ad=_0x1ab6ad||0x1f4;return function(_0x551dee){logger[_0xca95('0x20')](_0x551dee['stack']);if(_0x551dee['name']){delete _0x551dee[_0xca95('0x21')];}_0x5a7e2e[_0xca95('0x13')](_0x1ab6ad)[_0xca95('0x22')](_0x551dee);};}exports[_0xca95('0x23')]=function(_0x5f5628,_0x10748a){var _0x332e31={},_0x91f8c7={},_0x564d4d={'count':0x0,'rows':[]};var _0x44cb45=_[_0xca95('0x24')](db[_0xca95('0x25')][_0xca95('0x26')],function(_0x2ac92c){return{'name':_0x2ac92c[_0xca95('0x27')],'type':_0x2ac92c['type'][_0xca95('0x28')]};});_0x91f8c7[_0xca95('0x29')]=_['map'](_0x44cb45,'name');_0x91f8c7[_0xca95('0x2a')]=_[_0xca95('0x2b')](_0x5f5628[_0xca95('0x2a')]);_0x91f8c7[_0xca95('0x2c')]=_['intersection'](_0x91f8c7[_0xca95('0x29')],_0x91f8c7[_0xca95('0x2a')]);_0x332e31[_0xca95('0x2d')]=_['intersection'](_0x91f8c7[_0xca95('0x29')],qs[_0xca95('0x2e')](_0x5f5628[_0xca95('0x2a')][_0xca95('0x2e')]));_0x332e31[_0xca95('0x2d')]=_0x332e31[_0xca95('0x2d')]['length']?_0x332e31[_0xca95('0x2d')]:_0x91f8c7['model'];if(!_0x5f5628[_0xca95('0x2a')][_0xca95('0x2f')](_0xca95('0x30'))){_0x332e31[_0xca95('0x17')]=qs[_0xca95('0x17')](_0x5f5628['query'][_0xca95('0x17')]);_0x332e31['offset']=qs[_0xca95('0x16')](_0x5f5628[_0xca95('0x2a')]['offset']);}_0x332e31[_0xca95('0x31')]=qs[_0xca95('0x32')](_0x5f5628[_0xca95('0x2a')]['sort']);_0x332e31[_0xca95('0x33')]=qs['filters'](_[_0xca95('0x34')](_0x5f5628['query'],_0x91f8c7[_0xca95('0x2c')]),_0x44cb45);if(_0x5f5628[_0xca95('0x2a')][_0xca95('0x35')]){_0x332e31[_0xca95('0x33')]=_[_0xca95('0x36')](_0x332e31[_0xca95('0x33')],{'$or':_[_0xca95('0x24')](_0x44cb45,function(_0x15c576){if(_0x15c576[_0xca95('0x37')]!==_0xca95('0x38')){var _0x39c4d2={};_0x39c4d2[_0x15c576[_0xca95('0x21')]]={'$like':'%'+_0x5f5628['query'][_0xca95('0x35')]+'%'};return _0x39c4d2;}})});}_0x332e31=_['merge']({},_0x332e31,_0x5f5628[_0xca95('0x39')]);var _0x36e9a6={'where':_0x332e31[_0xca95('0x33')]};return db[_0xca95('0x25')][_0xca95('0x19')](_0x36e9a6)['then'](function(_0x5c043d){_0x564d4d[_0xca95('0x19')]=_0x5c043d;if(_0x5f5628['query'][_0xca95('0x3a')]){_0x332e31['include']=[{'all':!![]}];}return db[_0xca95('0x25')]['findAll'](_0x332e31);})[_0xca95('0x3b')](function(_0x301d7d){_0x564d4d['rows']=_0x301d7d;return _0x564d4d;})[_0xca95('0x3b')](respondWithFilteredResult(_0x10748a,_0x332e31))[_0xca95('0x3c')](handleError(_0x10748a,null));};exports[_0xca95('0x3d')]=function(_0x5740f3,_0x5f5630){var _0x4f440f={'raw':!![],'where':{'id':_0x5740f3['params']['id']}},_0x2ca0d1={};_0x2ca0d1[_0xca95('0x29')]=_[_0xca95('0x2b')](db[_0xca95('0x25')]['rawAttributes']);_0x2ca0d1[_0xca95('0x2a')]=_[_0xca95('0x2b')](_0x5740f3[_0xca95('0x2a')]);_0x2ca0d1['filters']=_[_0xca95('0x3e')](_0x2ca0d1[_0xca95('0x29')],_0x2ca0d1[_0xca95('0x2a')]);_0x4f440f['attributes']=_['intersection'](_0x2ca0d1['model'],qs[_0xca95('0x2e')](_0x5740f3['query']['fields']));_0x4f440f[_0xca95('0x2d')]=_0x4f440f[_0xca95('0x2d')]['length']?_0x4f440f['attributes']:_0x2ca0d1[_0xca95('0x29')];if(_0x5740f3['query'][_0xca95('0x3a')]){_0x4f440f[_0xca95('0x3f')]=[{'all':!![]}];}_0x4f440f=_[_0xca95('0x36')]({},_0x4f440f,_0x5740f3['options']);return db['SugarcrmField']['find'](_0x4f440f)[_0xca95('0x3b')](handleEntityNotFound(_0x5f5630,null))[_0xca95('0x3b')](respondWithResult(_0x5f5630,null))[_0xca95('0x3c')](handleError(_0x5f5630,null));};exports['create']=function(_0x5ac337,_0x205d35){return db['SugarcrmField'][_0xca95('0x40')](_0x5ac337['body'],{})[_0xca95('0x3b')](respondWithResult(_0x205d35,0xc9))[_0xca95('0x3c')](handleError(_0x205d35,null));};exports[_0xca95('0x1e')]=function(_0x29b27c,_0x633651){if(_0x29b27c[_0xca95('0x41')]['id']){delete _0x29b27c[_0xca95('0x41')]['id'];}return db['SugarcrmField'][_0xca95('0x42')]({'where':{'id':_0x29b27c[_0xca95('0x43')]['id']}})['then'](handleEntityNotFound(_0x633651,null))[_0xca95('0x3b')](saveUpdates(_0x29b27c['body'],null))['then'](respondWithResult(_0x633651,null))[_0xca95('0x3c')](handleError(_0x633651,null));};exports[_0xca95('0x1f')]=function(_0x32763e,_0x43a7a0){return db['SugarcrmField'][_0xca95('0x42')]({'where':{'id':_0x32763e[_0xca95('0x43')]['id']}})[_0xca95('0x3b')](handleEntityNotFound(_0x43a7a0,null))[_0xca95('0x3b')](removeEntity(_0x43a7a0,null))['catch'](handleError(_0x43a7a0,null));};
\ No newline at end of file
index f32cb31..26625f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ee3=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SugarcrmField','int_sugarcrm_fields','idField','FieldId','lodash'];(function(_0x1073ad,_0x44bf0b){var _0x528474=function(_0x3450f7){while(--_0x3450f7){_0x1073ad['push'](_0x1073ad['shift']());}};_0x528474(++_0x44bf0b);}(_0x6ee3,0xcf));var _0x36ee=function(_0x238c39,_0x304ec7){_0x238c39=_0x238c39-0x0;var _0xa7da11=_0x6ee3[_0x238c39];return _0xa7da11;};'use strict';var _=require(_0x36ee('0x0'));var util=require(_0x36ee('0x1'));var logger=require(_0x36ee('0x2'))(_0x36ee('0x3'));var moment=require(_0x36ee('0x4'));var BPromise=require(_0x36ee('0x5'));var rp=require(_0x36ee('0x6'));var fs=require('fs');var path=require(_0x36ee('0x7'));var rimraf=require(_0x36ee('0x8'));var config=require(_0x36ee('0x9'));var attributes=require('./intSugarcrmField.attributes');module[_0x36ee('0xa')]=function(_0x5710fc,_0x3354b3){return _0x5710fc[_0x36ee('0xb')](_0x36ee('0xc'),attributes,{'tableName':_0x36ee('0xd'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0x36ee('0xe'),_0x36ee('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1b1a=['rimraf','./intSugarcrmField.attributes','define','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','lodash','../../config/logger','api','moment','bluebird'];(function(_0x951b88,_0x2e8e71){var _0x130207=function(_0x475636){while(--_0x475636){_0x951b88['push'](_0x951b88['shift']());}};_0x130207(++_0x2e8e71);}(_0x1b1a,0xdf));var _0xa1b1=function(_0x31df6f,_0x380e73){_0x31df6f=_0x31df6f-0x0;var _0x31e353=_0x1b1a[_0x31df6f];return _0x31e353;};'use strict';var _=require(_0xa1b1('0x0'));var util=require('util');var logger=require(_0xa1b1('0x1'))(_0xa1b1('0x2'));var moment=require(_0xa1b1('0x3'));var BPromise=require(_0xa1b1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa1b1('0x5'));var config=require('../../config/environment');var attributes=require(_0xa1b1('0x6'));module['exports']=function(_0x223255,_0x221fe8){return _0x223255[_0xa1b1('0x7')](_0xa1b1('0x8'),attributes,{'tableName':_0xa1b1('0x9'),'paranoid':![],'indexes':[{'name':_0xa1b1('0xa'),'fields':[_0xa1b1('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 305337a..8215523 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b02=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x48065a,_0x16ac24){var _0x53e450=function(_0x1970d5){while(--_0x1970d5){_0x48065a['push'](_0x48065a['shift']());}};_0x53e450(++_0x16ac24);}(_0x0b02,0x114));var _0x20b0=function(_0x184992,_0x5a9468){_0x184992=_0x184992-0x0;var _0x57cc8d=_0x0b02[_0x184992];return _0x57cc8d;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x20b0('0x0'));var rs=require(_0x20b0('0x1'));var fs=require('fs');var Redis=require(_0x20b0('0x2'));var db=require(_0x20b0('0x3'))['db'];var utils=require(_0x20b0('0x4'));var logger=require(_0x20b0('0x5'))(_0x20b0('0x6'));var config=require(_0x20b0('0x7'));var jayson=require(_0x20b0('0x8'));var client=jayson[_0x20b0('0x9')][_0x20b0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e3fbe,_0x343e53,_0x57aa41){return new BPromise(function(_0x929d5c,_0x2edc85){return client[_0x20b0('0xb')](_0x2e3fbe,_0x57aa41)[_0x20b0('0xc')](function(_0x26cdc5){logger[_0x20b0('0xd')](_0x20b0('0xe'),_0x343e53,_0x20b0('0xf'));logger[_0x20b0('0x10')](_0x20b0('0x11'),_0x343e53,_0x20b0('0xf'),JSON[_0x20b0('0x12')](_0x26cdc5));if(_0x26cdc5['error']){if(_0x26cdc5[_0x20b0('0x13')][_0x20b0('0x14')]===0x1f4){logger[_0x20b0('0x13')](_0x20b0('0xe'),_0x343e53,_0x26cdc5[_0x20b0('0x13')][_0x20b0('0x15')]);return _0x2edc85(_0x26cdc5[_0x20b0('0x13')]['message']);}logger[_0x20b0('0x13')](_0x20b0('0xe'),_0x343e53,_0x26cdc5[_0x20b0('0x13')][_0x20b0('0x15')]);return _0x929d5c(_0x26cdc5[_0x20b0('0x13')][_0x20b0('0x15')]);}else{logger[_0x20b0('0xd')]('SugarcrmField,\x20%s,\x20%s',_0x343e53,_0x20b0('0xf'));_0x929d5c(_0x26cdc5['result'][_0x20b0('0x15')]);}})[_0x20b0('0x16')](function(_0x449342){logger[_0x20b0('0x13')]('SugarcrmField,\x20%s,\x20%s',_0x343e53,_0x449342);_0x2edc85(_0x449342);});});}
\ No newline at end of file
+var _0x8e9f=['util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch'];(function(_0x28c574,_0x3282b1){var _0x3f1093=function(_0x4b5b2d){while(--_0x4b5b2d){_0x28c574['push'](_0x28c574['shift']());}};_0x3f1093(++_0x3282b1);}(_0x8e9f,0x134));var _0xf8e9=function(_0x52085a,_0x3717ca){_0x52085a=_0x52085a-0x0;var _0x5afc1a=_0x8e9f[_0x52085a];return _0x5afc1a;};'use strict';var _=require('lodash');var util=require(_0xf8e9('0x0'));var moment=require(_0xf8e9('0x1'));var BPromise=require(_0xf8e9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf8e9('0x3'));var db=require(_0xf8e9('0x4'))['db'];var utils=require(_0xf8e9('0x5'));var logger=require(_0xf8e9('0x6'))(_0xf8e9('0x7'));var config=require(_0xf8e9('0x8'));var jayson=require(_0xf8e9('0x9'));var client=jayson[_0xf8e9('0xa')][_0xf8e9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2c5fc6,_0x3f131e,_0x7534cb){return new BPromise(function(_0x251bcc,_0x1bc074){return client[_0xf8e9('0xc')](_0x2c5fc6,_0x7534cb)['then'](function(_0x222d23){logger[_0xf8e9('0xd')](_0xf8e9('0xe'),_0x3f131e,_0xf8e9('0xf'));logger['debug'](_0xf8e9('0x10'),_0x3f131e,'request\x20sent',JSON[_0xf8e9('0x11')](_0x222d23));if(_0x222d23['error']){if(_0x222d23['error'][_0xf8e9('0x12')]===0x1f4){logger['error'](_0xf8e9('0xe'),_0x3f131e,_0x222d23[_0xf8e9('0x13')][_0xf8e9('0x14')]);return _0x1bc074(_0x222d23[_0xf8e9('0x13')]['message']);}logger[_0xf8e9('0x13')](_0xf8e9('0xe'),_0x3f131e,_0x222d23[_0xf8e9('0x13')]['message']);return _0x251bcc(_0x222d23[_0xf8e9('0x13')]['message']);}else{logger[_0xf8e9('0xd')](_0xf8e9('0xe'),_0x3f131e,_0xf8e9('0xf'));_0x251bcc(_0x222d23['result'][_0xf8e9('0x14')]);}})[_0xf8e9('0x15')](function(_0x25314a){logger['error'](_0xf8e9('0xe'),_0x3f131e,_0x25314a);_0x1bc074(_0x25314a);});});}
\ No newline at end of file
index 14c50af..69dce04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f0d=['../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','index','/:id','isAuthenticated','show','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration','put','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x273f77,_0xe5b0cb){var _0x71e147=function(_0x564056){while(--_0x564056){_0x273f77['push'](_0x273f77['shift']());}};_0x71e147(++_0xe5b0cb);}(_0x2f0d,0xa8));var _0xd2f0=function(_0x439504,_0x216829){_0x439504=_0x439504-0x0;var _0x1c12a6=_0x2f0d[_0x439504];return _0x1c12a6;};'use strict';var multer=require(_0xd2f0('0x0'));var util=require(_0xd2f0('0x1'));var path=require(_0xd2f0('0x2'));var timeout=require(_0xd2f0('0x3'));var express=require(_0xd2f0('0x4'));var router=express[_0xd2f0('0x5')]();var fs_extra=require(_0xd2f0('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xd2f0('0x7'));var config=require(_0xd2f0('0x8'));var controller=require(_0xd2f0('0x9'));router[_0xd2f0('0xa')]('/',auth['isAuthenticated'](),controller[_0xd2f0('0xb')]);router[_0xd2f0('0xa')](_0xd2f0('0xc'),auth[_0xd2f0('0xd')](),controller[_0xd2f0('0xe')]);router[_0xd2f0('0xa')]('/:id/configurations',auth[_0xd2f0('0xd')](),controller[_0xd2f0('0xf')]);router[_0xd2f0('0xa')](_0xd2f0('0x10'),auth[_0xd2f0('0xd')](),controller[_0xd2f0('0x11')]);router[_0xd2f0('0x12')]('/',auth[_0xd2f0('0xd')](),controller[_0xd2f0('0x13')]);router[_0xd2f0('0x12')](_0xd2f0('0x14'),auth[_0xd2f0('0xd')](),controller[_0xd2f0('0x15')]);router[_0xd2f0('0x16')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xd2f0('0x17')](_0xd2f0('0xc'),auth[_0xd2f0('0xd')](),controller['destroy']);module[_0xd2f0('0x18')]=router;
\ No newline at end of file
+var _0x7b47=['post','create','addConfiguration','put','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','/:id/fields','getFields'];(function(_0xbd5294,_0x13d305){var _0x1dfd18=function(_0x177d2a){while(--_0x177d2a){_0xbd5294['push'](_0xbd5294['shift']());}};_0x1dfd18(++_0x13d305);}(_0x7b47,0x118));var _0x77b4=function(_0x95a1a8,_0x5dabd4){_0x95a1a8=_0x95a1a8-0x0;var _0x1481f3=_0x7b47[_0x95a1a8];return _0x1481f3;};'use strict';var multer=require('multer');var util=require(_0x77b4('0x0'));var path=require('path');var timeout=require(_0x77b4('0x1'));var express=require(_0x77b4('0x2'));var router=express[_0x77b4('0x3')]();var fs_extra=require(_0x77b4('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x77b4('0x5'));var config=require('../../config/environment');var controller=require(_0x77b4('0x6'));router[_0x77b4('0x7')]('/',auth[_0x77b4('0x8')](),controller[_0x77b4('0x9')]);router[_0x77b4('0x7')](_0x77b4('0xa'),auth[_0x77b4('0x8')](),controller['show']);router[_0x77b4('0x7')](_0x77b4('0xb'),auth[_0x77b4('0x8')](),controller['getConfigurations']);router[_0x77b4('0x7')](_0x77b4('0xc'),auth[_0x77b4('0x8')](),controller[_0x77b4('0xd')]);router[_0x77b4('0xe')]('/',auth[_0x77b4('0x8')](),controller[_0x77b4('0xf')]);router[_0x77b4('0xe')](_0x77b4('0xb'),auth['isAuthenticated'](),controller[_0x77b4('0x10')]);router[_0x77b4('0x11')](_0x77b4('0xa'),auth[_0x77b4('0x8')](),controller['update']);router[_0x77b4('0x12')](_0x77b4('0xa'),auth[_0x77b4('0x8')](),controller[_0x77b4('0x13')]);module[_0x77b4('0x14')]=router;
\ No newline at end of file
index 4e37b51..1ddb576 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb40d=['STRING','HelpDesk'];(function(_0x4cd00b,_0x483633){var _0x488623=function(_0xe10309){while(--_0xe10309){_0x4cd00b['push'](_0x4cd00b['shift']());}};_0x488623(++_0x483633);}(_0xb40d,0xf8));var _0xdb40=function(_0x2bc20f,_0x51d009){_0x2bc20f=_0x2bc20f-0x0;var _0x40367a=_0xb40d[_0x2bc20f];return _0x40367a;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xdb40('0x0')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xdb40('0x0')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xdb40('0x0')],'allowNull':![],'defaultValue':_0xdb40('0x1')},'remoteUri':{'type':Sequelize[_0xdb40('0x0')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xdb40('0x0')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x26ef=['HelpDesk','sequelize','STRING'];(function(_0x5db0ff,_0x3b704f){var _0x3218bc=function(_0x47467b){while(--_0x47467b){_0x5db0ff['push'](_0x5db0ff['shift']());}};_0x3218bc(++_0x3b704f);}(_0x26ef,0x154));var _0xf26e=function(_0x5e7bb1,_0x5412a8){_0x5e7bb1=_0x5e7bb1-0x0;var _0x5bbae2=_0x26ef[_0x5e7bb1];return _0x5bbae2;};'use strict';var Sequelize=require(_0xf26e('0x0'));module['exports']={'name':{'type':Sequelize[_0xf26e('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xf26e('0x1')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0xf26e('0x1')],'allowNull':![],'defaultValue':_0xf26e('0x2')},'remoteUri':{'type':Sequelize[_0xf26e('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xf26e('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0xf26e('0x1')],'allowNull':![]}};
\ No newline at end of file
index 20adb9f..bc8757b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0af=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','name','send','index','map','VtigerAccount','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','VIRTUAL','merge','options','findAll','catch','params','includeAll','create','body','find','findOne','VtigerConfiguration','pick','getConfigurations','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','VtigerField','md5','getFields','username','moduleName','remoteUri','serverUrl','accessKey','format','%s/webservice.php','GET','getchallenge','success','login','result','describe','autogenerated','owner','remove','label','startsWith','picklistValues','value','log','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','statusCode','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x117cbe,_0xb89401){var _0x47298f=function(_0x3e9d34){while(--_0x3e9d34){_0x117cbe['push'](_0x117cbe['shift']());}};_0x47298f(++_0xb89401);}(_0xc0af,0x1ab));var _0xfc0a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc0af[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xfc0a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfc0a('0x1'));var jsonpatch=require(_0xfc0a('0x2'));var rp=require('request-promise');var moment=require(_0xfc0a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xfc0a('0x4'));var util=require(_0xfc0a('0x5'));var path=require(_0xfc0a('0x6'));var sox=require(_0xfc0a('0x7'));var csv=require(_0xfc0a('0x8'));var ejs=require(_0xfc0a('0x9'));var fs=require('fs');var fs_extra=require(_0xfc0a('0xa'));var _=require('lodash');var squel=require(_0xfc0a('0xb'));var crypto=require(_0xfc0a('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xfc0a('0x8'));var querystring=require('querystring');var Papa=require(_0xfc0a('0xd'));var Redis=require(_0xfc0a('0xe'));var authService=require(_0xfc0a('0xf'));var qs=require(_0xfc0a('0x10'));var as=require(_0xfc0a('0x11'));var hardwareService=require(_0xfc0a('0x12'));var logger=require(_0xfc0a('0x13'))(_0xfc0a('0x14'));var utils=require(_0xfc0a('0x15'));var config=require(_0xfc0a('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xfc0a('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3b2c57,_0x516140){_0x516140=_0x516140||0xcc;return function(_0x3ceb82){if(_0x3ceb82){return _0x3b2c57['sendStatus'](_0x516140);}return _0x3b2c57['status'](_0x516140)[_0xfc0a('0x18')]();};}function respondWithResult(_0x427508,_0x2ba2df){_0x2ba2df=_0x2ba2df||0xc8;return function(_0x503910){if(_0x503910){return _0x427508[_0xfc0a('0x19')](_0x2ba2df)[_0xfc0a('0x1a')](_0x503910);}};}function respondWithFilteredResult(_0x3f293a,_0x3b3e42){return function(_0xa845ad){if(_0xa845ad){var _0x4724d9=typeof _0x3b3e42[_0xfc0a('0x1b')]==='undefined'&&typeof _0x3b3e42['limit']===_0xfc0a('0x1c');var _0x2b87a4=_0xa845ad[_0xfc0a('0x1d')];var _0x44d3f9=_0x4724d9?0x0:_0x3b3e42[_0xfc0a('0x1b')];var _0x1363af=_0x4724d9?_0xa845ad[_0xfc0a('0x1d')]:_0x3b3e42[_0xfc0a('0x1b')]+_0x3b3e42['limit'];var _0x2d5b16;if(_0x1363af>=_0x2b87a4){_0x1363af=_0x2b87a4;_0x2d5b16=0xc8;}else{_0x2d5b16=0xce;}_0x3f293a[_0xfc0a('0x19')](_0x2d5b16);return _0x3f293a['set'](_0xfc0a('0x1e'),_0x44d3f9+'-'+_0x1363af+'/'+_0x2b87a4)[_0xfc0a('0x1a')](_0xa845ad);}return null;};}function patchUpdates(_0x3b97d4){return function(_0x2ba2a1){try{jsonpatch[_0xfc0a('0x1f')](_0x2ba2a1,_0x3b97d4,!![]);}catch(_0x51de00){return BPromise[_0xfc0a('0x20')](_0x51de00);}return _0x2ba2a1[_0xfc0a('0x21')]();};}function saveUpdates(_0x13c6bc,_0x47bb6a){return function(_0x4a45c3){if(_0x4a45c3){return _0x4a45c3[_0xfc0a('0x22')](_0x13c6bc)[_0xfc0a('0x23')](function(_0x21b9e0){return _0x21b9e0;});}return null;};}function removeEntity(_0x281a0b,_0x4e452e){return function(_0x44c576){if(_0x44c576){return _0x44c576[_0xfc0a('0x24')]()['then'](function(){_0x281a0b[_0xfc0a('0x19')](0xcc)[_0xfc0a('0x18')]();});}};}function handleEntityNotFound(_0x1407f1,_0x1e4888){return function(_0x147972){if(!_0x147972){_0x1407f1[_0xfc0a('0x25')](0x194);}return _0x147972;};}function handleError(_0xb62505,_0x628eb8){_0x628eb8=_0x628eb8||0x1f4;return function(_0x45f697){logger[_0xfc0a('0x26')](_0x45f697['stack']);if(_0x45f697['name']){delete _0x45f697[_0xfc0a('0x27')];}_0xb62505['status'](_0x628eb8)[_0xfc0a('0x28')](_0x45f697);};}exports[_0xfc0a('0x29')]=function(_0x5c69da,_0x3d9715){var _0x2377a5={},_0x4de9d1={},_0x3178cf={'count':0x0,'rows':[]};var _0xc96210=_[_0xfc0a('0x2a')](db[_0xfc0a('0x2b')][_0xfc0a('0x2c')],function(_0x4bb770){return{'name':_0x4bb770['fieldName'],'type':_0x4bb770[_0xfc0a('0x2d')][_0xfc0a('0x2e')]};});_0x4de9d1[_0xfc0a('0x2f')]=_[_0xfc0a('0x2a')](_0xc96210,'name');_0x4de9d1[_0xfc0a('0x30')]=_[_0xfc0a('0x31')](_0x5c69da[_0xfc0a('0x30')]);_0x4de9d1[_0xfc0a('0x32')]=_[_0xfc0a('0x33')](_0x4de9d1[_0xfc0a('0x2f')],_0x4de9d1[_0xfc0a('0x30')]);_0x2377a5[_0xfc0a('0x34')]=_[_0xfc0a('0x33')](_0x4de9d1[_0xfc0a('0x2f')],qs['fields'](_0x5c69da[_0xfc0a('0x30')][_0xfc0a('0x35')]));_0x2377a5[_0xfc0a('0x34')]=_0x2377a5['attributes'][_0xfc0a('0x36')]?_0x2377a5[_0xfc0a('0x34')]:_0x4de9d1['model'];if(!_0x5c69da[_0xfc0a('0x30')][_0xfc0a('0x37')](_0xfc0a('0x38'))){_0x2377a5[_0xfc0a('0x39')]=qs['limit'](_0x5c69da[_0xfc0a('0x30')][_0xfc0a('0x39')]);_0x2377a5['offset']=qs[_0xfc0a('0x1b')](_0x5c69da[_0xfc0a('0x30')][_0xfc0a('0x1b')]);}_0x2377a5[_0xfc0a('0x3a')]=qs[_0xfc0a('0x3b')](_0x5c69da['query'][_0xfc0a('0x3b')]);_0x2377a5[_0xfc0a('0x3c')]=qs[_0xfc0a('0x32')](_['pick'](_0x5c69da[_0xfc0a('0x30')],_0x4de9d1[_0xfc0a('0x32')]),_0xc96210);if(_0x5c69da[_0xfc0a('0x30')][_0xfc0a('0x3d')]){_0x2377a5[_0xfc0a('0x3c')]=_['merge'](_0x2377a5[_0xfc0a('0x3c')],{'$or':_['map'](_0xc96210,function(_0x2c69e4){if(_0x2c69e4[_0xfc0a('0x2d')]!==_0xfc0a('0x3e')){var _0xf5a102={};_0xf5a102[_0x2c69e4[_0xfc0a('0x27')]]={'$like':'%'+_0x5c69da[_0xfc0a('0x30')]['filter']+'%'};return _0xf5a102;}})});}_0x2377a5=_[_0xfc0a('0x3f')]({},_0x2377a5,_0x5c69da[_0xfc0a('0x40')]);var _0x45c42e={'where':_0x2377a5[_0xfc0a('0x3c')]};return db[_0xfc0a('0x2b')]['count'](_0x45c42e)[_0xfc0a('0x23')](function(_0x517542){_0x3178cf[_0xfc0a('0x1d')]=_0x517542;if(_0x5c69da[_0xfc0a('0x30')]['includeAll']){_0x2377a5['include']=[{'all':!![]}];}return db[_0xfc0a('0x2b')][_0xfc0a('0x41')](_0x2377a5);})[_0xfc0a('0x23')](function(_0x2a310b){_0x3178cf['rows']=_0x2a310b;return _0x3178cf;})[_0xfc0a('0x23')](respondWithFilteredResult(_0x3d9715,_0x2377a5))[_0xfc0a('0x42')](handleError(_0x3d9715,null));};exports['show']=function(_0x1b65cc,_0x1b5c05){var _0x5ca04a={'raw':![],'where':{'id':_0x1b65cc[_0xfc0a('0x43')]['id']}},_0x5d164d={};_0x5d164d[_0xfc0a('0x2f')]=_[_0xfc0a('0x31')](db[_0xfc0a('0x2b')][_0xfc0a('0x2c')]);_0x5d164d[_0xfc0a('0x30')]=_['keys'](_0x1b65cc[_0xfc0a('0x30')]);_0x5d164d[_0xfc0a('0x32')]=_[_0xfc0a('0x33')](_0x5d164d[_0xfc0a('0x2f')],_0x5d164d[_0xfc0a('0x30')]);_0x5ca04a[_0xfc0a('0x34')]=_['intersection'](_0x5d164d[_0xfc0a('0x2f')],qs['fields'](_0x1b65cc['query']['fields']));_0x5ca04a['attributes']=_0x5ca04a['attributes']['length']?_0x5ca04a[_0xfc0a('0x34')]:_0x5d164d['model'];if(_0x1b65cc[_0xfc0a('0x30')][_0xfc0a('0x44')]){_0x5ca04a['include']=[{'all':!![]}];}_0x5ca04a=_[_0xfc0a('0x3f')]({},_0x5ca04a,_0x1b65cc[_0xfc0a('0x40')]);return db[_0xfc0a('0x2b')]['find'](_0x5ca04a)[_0xfc0a('0x23')](handleEntityNotFound(_0x1b5c05,null))[_0xfc0a('0x23')](respondWithResult(_0x1b5c05,null))[_0xfc0a('0x42')](handleError(_0x1b5c05,null));};exports[_0xfc0a('0x45')]=function(_0x51838c,_0x265ff5){return db[_0xfc0a('0x2b')][_0xfc0a('0x45')](_0x51838c[_0xfc0a('0x46')],{})[_0xfc0a('0x23')](respondWithResult(_0x265ff5,0xc9))[_0xfc0a('0x42')](handleError(_0x265ff5,null));};exports['update']=function(_0x387627,_0x41be96){if(_0x387627[_0xfc0a('0x46')]['id']){delete _0x387627[_0xfc0a('0x46')]['id'];}return db[_0xfc0a('0x2b')][_0xfc0a('0x47')]({'where':{'id':_0x387627[_0xfc0a('0x43')]['id']}})['then'](handleEntityNotFound(_0x41be96,null))['then'](saveUpdates(_0x387627['body'],null))[_0xfc0a('0x23')](respondWithResult(_0x41be96,null))[_0xfc0a('0x42')](handleError(_0x41be96,null));};exports[_0xfc0a('0x24')]=function(_0x217977,_0x2fc00f){return db[_0xfc0a('0x2b')][_0xfc0a('0x47')]({'where':{'id':_0x217977[_0xfc0a('0x43')]['id']}})[_0xfc0a('0x23')](handleEntityNotFound(_0x2fc00f,null))['then'](removeEntity(_0x2fc00f,null))[_0xfc0a('0x42')](handleError(_0x2fc00f,null));};exports['getConfigurations']=function(_0x4e975f,_0x370d04,_0x5c8e91){var _0x5bf24b={};var _0x46da66={};var _0x4e6ee0;var _0x1f6813;return db[_0xfc0a('0x2b')][_0xfc0a('0x48')]({'where':{'id':_0x4e975f[_0xfc0a('0x43')]['id']}})[_0xfc0a('0x23')](handleEntityNotFound(_0x370d04,null))[_0xfc0a('0x23')](function(_0x1fbe0b){if(_0x1fbe0b){_0x4e6ee0=_0x1fbe0b;_0x46da66['model']=_[_0xfc0a('0x31')](db[_0xfc0a('0x49')][_0xfc0a('0x2c')]);_0x46da66[_0xfc0a('0x30')]=_[_0xfc0a('0x31')](_0x4e975f['query']);_0x46da66['filters']=_[_0xfc0a('0x33')](_0x46da66[_0xfc0a('0x2f')],_0x46da66[_0xfc0a('0x30')]);_0x5bf24b['attributes']=_[_0xfc0a('0x33')](_0x46da66['model'],qs[_0xfc0a('0x35')](_0x4e975f[_0xfc0a('0x30')][_0xfc0a('0x35')]));_0x5bf24b[_0xfc0a('0x34')]=_0x5bf24b[_0xfc0a('0x34')]['length']?_0x5bf24b[_0xfc0a('0x34')]:_0x46da66[_0xfc0a('0x2f')];_0x5bf24b[_0xfc0a('0x3a')]=qs['sort'](_0x4e975f[_0xfc0a('0x30')][_0xfc0a('0x3b')]);_0x5bf24b[_0xfc0a('0x3c')]=qs['filters'](_[_0xfc0a('0x4a')](_0x4e975f['query'],_0x46da66[_0xfc0a('0x32')]));if(_0x4e975f[_0xfc0a('0x30')][_0xfc0a('0x3d')]){_0x5bf24b[_0xfc0a('0x3c')]=_[_0xfc0a('0x3f')](_0x5bf24b[_0xfc0a('0x3c')],{'$or':_[_0xfc0a('0x2a')](_0x5bf24b[_0xfc0a('0x34')],function(_0x2d30bd){var _0x1f5d70={};_0x1f5d70[_0x2d30bd]={'$like':'%'+_0x4e975f[_0xfc0a('0x30')][_0xfc0a('0x3d')]+'%'};return _0x1f5d70;})});}_0x5bf24b=_[_0xfc0a('0x3f')]({},_0x5bf24b,_0x4e975f['options']);return _0x4e6ee0[_0xfc0a('0x4b')](_0x5bf24b);}})[_0xfc0a('0x23')](function(_0x48b38a){if(_0x48b38a){_0x1f6813=_0x48b38a[_0xfc0a('0x36')];if(!_0x4e975f[_0xfc0a('0x30')]['hasOwnProperty'](_0xfc0a('0x38'))){_0x5bf24b[_0xfc0a('0x39')]=qs[_0xfc0a('0x39')](_0x4e975f[_0xfc0a('0x30')][_0xfc0a('0x39')]);_0x5bf24b[_0xfc0a('0x1b')]=qs[_0xfc0a('0x1b')](_0x4e975f[_0xfc0a('0x30')][_0xfc0a('0x1b')]);}return _0x4e6ee0[_0xfc0a('0x4b')](_0x5bf24b);}})[_0xfc0a('0x23')](function(_0x2a3386){if(_0x2a3386){return _0x2a3386?{'count':_0x1f6813,'rows':_0x2a3386}:null;}})[_0xfc0a('0x23')](respondWithResult(_0x370d04,null))['catch'](handleError(_0x370d04,null));};exports[_0xfc0a('0x4c')]=function(_0x3d4fd2,_0x5bc7ef,_0xf6e160){if(_0x3d4fd2[_0xfc0a('0x46')]['id']){delete _0x3d4fd2[_0xfc0a('0x46')]['id'];}return db[_0xfc0a('0x2b')][_0xfc0a('0x48')]({'where':{'id':_0x3d4fd2[_0xfc0a('0x43')]['id']}})['then'](handleEntityNotFound(_0x5bc7ef,null))[_0xfc0a('0x23')](function(_0x2dadf9){if(_0x2dadf9){_0x3d4fd2[_0xfc0a('0x46')][_0xfc0a('0x4d')]=_0x2dadf9['id'];_0x3d4fd2['body'][_0xfc0a('0x4e')]=integrations['getSubjects'](_0x3d4fd2[_0xfc0a('0x46')][_0xfc0a('0x4f')],_0x3d4fd2['body'][_0xfc0a('0x2d')]);_0x3d4fd2[_0xfc0a('0x46')][_0xfc0a('0x50')]=integrations[_0xfc0a('0x51')](_0x3d4fd2['body'][_0xfc0a('0x4f')],_0x3d4fd2[_0xfc0a('0x46')][_0xfc0a('0x2d')]);return db['VtigerConfiguration'][_0xfc0a('0x45')](_0x3d4fd2[_0xfc0a('0x46')],{'include':[{'model':db[_0xfc0a('0x52')],'as':'Subjects'},{'model':db['VtigerField'],'as':_0xfc0a('0x50')}]});}return null;})[_0xfc0a('0x23')](respondWithResult(_0x5bc7ef,null))[_0xfc0a('0x42')](handleError(_0x5bc7ef,null));};var md5=require(_0xfc0a('0x53'));exports[_0xfc0a('0x54')]=function(_0x4df4b2,_0x36891b,_0x1a3ff0){var _0x4cdcd9=null;var _0x151ef6=null;var _0x3a8e9e=null;var _0x44701a=null;var _0x4fa17f='';return db[_0xfc0a('0x2b')][_0xfc0a('0x48')]({'where':{'id':_0x4df4b2[_0xfc0a('0x43')]['id']},'attributes':['id',_0xfc0a('0x27'),_0xfc0a('0x55'),'description',_0xfc0a('0x56'),_0xfc0a('0x57'),_0xfc0a('0x58'),_0xfc0a('0x59')]})[_0xfc0a('0x23')](handleEntityNotFound(_0x36891b,null))[_0xfc0a('0x23')](function(_0x4d6427){if(_0x4d6427){_0x4cdcd9=_0x4d6427[_0xfc0a('0x55')];_0x151ef6=_0x4d6427[_0xfc0a('0x59')];_0x3a8e9e=_0x4d6427[_0xfc0a('0x56')];_0x4fa17f=_0x4d6427[_0xfc0a('0x57')];var _0x511ed6=_0x4fa17f['slice'](-0x1);if(_0x511ed6==='/'){_0x4fa17f=_0x4fa17f['substring'](0x0,_0x4fa17f['lastIndexOf'](_0x511ed6));}_0x44701a=util[_0xfc0a('0x5a')](_0xfc0a('0x5b'),_0x4fa17f);var _0x9d1968={'method':_0xfc0a('0x5c'),'uri':_0x44701a,'qs':{'operation':_0xfc0a('0x5d'),'username':_0x4d6427[_0xfc0a('0x55')]},'json':!![]};return rp(_0x9d1968);}})[_0xfc0a('0x23')](function(_0x1a2082){if(_0x1a2082[_0xfc0a('0x5e')]){var _0x5176d7={'method':'POST','uri':_0x44701a,'form':{'operation':_0xfc0a('0x5f'),'username':_0x4cdcd9,'accessKey':md5(_0x1a2082[_0xfc0a('0x60')]['token']+_0x151ef6)},'json':!![]};return rp(_0x5176d7);}})[_0xfc0a('0x23')](function(_0x2f5d35){if(_0x2f5d35['success']){var _0x1cd5aa={'method':_0xfc0a('0x5c'),'uri':_0x44701a,'qs':{'operation':_0xfc0a('0x61'),'username':_0x4cdcd9,'sessionName':_0x2f5d35[_0xfc0a('0x60')]['sessionName'],'elementType':_0x3a8e9e},'json':!![]};return rp(_0x1cd5aa);}})['then'](function(_0xa53800){if(_0xa53800[_0xfc0a('0x5e')]){var _0x1637a7=[_0xfc0a('0x62'),'reference',_0xfc0a('0x63')];_['remove'](_0xa53800['result'][_0xfc0a('0x35')],function(_0x429fb1){return _0x1637a7['includes'](_0x429fb1[_0xfc0a('0x2d')][_0xfc0a('0x27')]);});_[_0xfc0a('0x64')](_0xa53800[_0xfc0a('0x60')][_0xfc0a('0x35')],function(_0xe7430b){return _0xe7430b['editable']==='false';});return{'count':_0xa53800['result'][_0xfc0a('0x35')][_0xfc0a('0x36')],'rows':_['map'](_0xa53800[_0xfc0a('0x60')][_0xfc0a('0x35')],function(_0x40a98c){return{'id':_0x40a98c[_0xfc0a('0x27')],'name':_0x40a98c[_0xfc0a('0x65')],'custom':_[_0xfc0a('0x66')](_0x40a98c[_0xfc0a('0x27')],'cf_')?!![]:![],'options':_0x40a98c[_0xfc0a('0x2d')]['name']==='picklist'&&_0x40a98c[_0xfc0a('0x2d')][_0xfc0a('0x67')][_0xfc0a('0x36')]>0x0?_[_0xfc0a('0x2a')](_0x40a98c['type'][_0xfc0a('0x67')],function(_0x16c30c){return{'name':_0x16c30c[_0xfc0a('0x65')],'value':_0x16c30c[_0xfc0a('0x68')]};}):[]};})};}})['then'](respondWithResult(_0x36891b,null))[_0xfc0a('0x42')](function(_0x1f7a82){console[_0xfc0a('0x69')]('vTiger\x20error:\x20'+_0x1f7a82);var _0x41c092=_0x4df4b2[_0xfc0a('0x30')]['test']?0x1f4:_0x1f7a82['statusCode']||0x1f4;logger[_0xfc0a('0x26')](_0xfc0a('0x6a'),_0xfc0a('0x54'),_0x41c092,JSON[_0xfc0a('0x6b')](_0x1f7a82));delete _0x1f7a82['name'];if(_0x41c092===0x191){_0x41c092=0x190;}_0x36891b[_0xfc0a('0x19')](_0x41c092)['send'](_0x4df4b2[_0xfc0a('0x30')][_0xfc0a('0x6c')]?{'message':_0xfc0a('0x6d'),'statusCode':_0x1f7a82[_0xfc0a('0x6e')]}:_0x1f7a82);});};
\ No newline at end of file
+var _0xb756=['getSubjects','channel','Descriptions','getDescriptions','Subjects','VtigerField','md5','description','moduleName','accessKey','username','remoteUri','substring','format','getchallenge','POST','token','success','GET','result','sessionName','autogenerated','remove','editable','false','cf_','picklistValues','value','log','vTiger\x20error:\x20','error','getFields,\x20%s,\x20%s,\x20%s','stringify','test','statusCode','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','end','sendStatus','stack','name','send','index','map','VtigerAccount','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','length','includeAll','find','create','body','destroy','getConfigurations','VtigerConfiguration','hasOwnProperty','addConfiguration'];(function(_0x437482,_0x57e59e){var _0x52e281=function(_0xe19621){while(--_0xe19621){_0x437482['push'](_0x437482['shift']());}};_0x52e281(++_0x57e59e);}(_0xb756,0x105));var _0x6b75=function(_0x384b7a,_0xcf5104){_0x384b7a=_0x384b7a-0x0;var _0x684a60=_0xb756[_0x384b7a];return _0x684a60;};'use strict';var emlformat=require(_0x6b75('0x0'));var rimraf=require(_0x6b75('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6b75('0x2'));var moment=require(_0x6b75('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6b75('0x4'));var util=require(_0x6b75('0x5'));var path=require(_0x6b75('0x6'));var sox=require(_0x6b75('0x7'));var csv=require(_0x6b75('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6b75('0x9'));var _=require(_0x6b75('0xa'));var squel=require(_0x6b75('0xb'));var crypto=require(_0x6b75('0xc'));var jsforce=require(_0x6b75('0xd'));var deskjs=require(_0x6b75('0xe'));var toCsv=require(_0x6b75('0x8'));var querystring=require(_0x6b75('0xf'));var Papa=require(_0x6b75('0x10'));var Redis=require(_0x6b75('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6b75('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6b75('0x13'));var logger=require(_0x6b75('0x14'))(_0x6b75('0x15'));var utils=require(_0x6b75('0x16'));var config=require(_0x6b75('0x17'));var licenseUtil=require(_0x6b75('0x18'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x158645,_0x3f3e2c){_0x3f3e2c=_0x3f3e2c||0xcc;return function(_0x1da0fb){if(_0x1da0fb){return _0x158645['sendStatus'](_0x3f3e2c);}return _0x158645[_0x6b75('0x19')](_0x3f3e2c)['end']();};}function respondWithResult(_0x4f2bd6,_0x1e6969){_0x1e6969=_0x1e6969||0xc8;return function(_0x3ae2a4){if(_0x3ae2a4){return _0x4f2bd6[_0x6b75('0x19')](_0x1e6969)[_0x6b75('0x1a')](_0x3ae2a4);}};}function respondWithFilteredResult(_0x1ba181,_0x201a80){return function(_0x4143be){if(_0x4143be){var _0x33c99a=typeof _0x201a80[_0x6b75('0x1b')]===_0x6b75('0x1c')&&typeof _0x201a80[_0x6b75('0x1d')]==='undefined';var _0x586440=_0x4143be[_0x6b75('0x1e')];var _0x94a702=_0x33c99a?0x0:_0x201a80[_0x6b75('0x1b')];var _0x940240=_0x33c99a?_0x4143be[_0x6b75('0x1e')]:_0x201a80['offset']+_0x201a80[_0x6b75('0x1d')];var _0x661ea0;if(_0x940240>=_0x586440){_0x940240=_0x586440;_0x661ea0=0xc8;}else{_0x661ea0=0xce;}_0x1ba181[_0x6b75('0x19')](_0x661ea0);return _0x1ba181['set'](_0x6b75('0x1f'),_0x94a702+'-'+_0x940240+'/'+_0x586440)[_0x6b75('0x1a')](_0x4143be);}return null;};}function patchUpdates(_0x1148bf){return function(_0x1fa633){try{jsonpatch[_0x6b75('0x20')](_0x1fa633,_0x1148bf,!![]);}catch(_0x5c28ad){return BPromise[_0x6b75('0x21')](_0x5c28ad);}return _0x1fa633['save']();};}function saveUpdates(_0x5e1b55,_0x7c71e2){return function(_0xdbd15f){if(_0xdbd15f){return _0xdbd15f[_0x6b75('0x22')](_0x5e1b55)[_0x6b75('0x23')](function(_0x1da14a){return _0x1da14a;});}return null;};}function removeEntity(_0x442c73,_0xf6744d){return function(_0xbfc44b){if(_0xbfc44b){return _0xbfc44b['destroy']()[_0x6b75('0x23')](function(){_0x442c73[_0x6b75('0x19')](0xcc)[_0x6b75('0x24')]();});}};}function handleEntityNotFound(_0x3641d1,_0x549045){return function(_0x48bc4c){if(!_0x48bc4c){_0x3641d1[_0x6b75('0x25')](0x194);}return _0x48bc4c;};}function handleError(_0x414589,_0x3575e6){_0x3575e6=_0x3575e6||0x1f4;return function(_0x2d2585){logger['error'](_0x2d2585[_0x6b75('0x26')]);if(_0x2d2585[_0x6b75('0x27')]){delete _0x2d2585[_0x6b75('0x27')];}_0x414589[_0x6b75('0x19')](_0x3575e6)[_0x6b75('0x28')](_0x2d2585);};}exports[_0x6b75('0x29')]=function(_0x2b2284,_0x4f1725){var _0x28eec8={},_0x21cc8f={},_0x45c62b={'count':0x0,'rows':[]};var _0x564c38=_[_0x6b75('0x2a')](db[_0x6b75('0x2b')][_0x6b75('0x2c')],function(_0x305a26){return{'name':_0x305a26['fieldName'],'type':_0x305a26[_0x6b75('0x2d')][_0x6b75('0x2e')]};});_0x21cc8f['model']=_['map'](_0x564c38,_0x6b75('0x27'));_0x21cc8f[_0x6b75('0x2f')]=_[_0x6b75('0x30')](_0x2b2284['query']);_0x21cc8f[_0x6b75('0x31')]=_[_0x6b75('0x32')](_0x21cc8f[_0x6b75('0x33')],_0x21cc8f[_0x6b75('0x2f')]);_0x28eec8[_0x6b75('0x34')]=_['intersection'](_0x21cc8f[_0x6b75('0x33')],qs[_0x6b75('0x35')](_0x2b2284[_0x6b75('0x2f')][_0x6b75('0x35')]));_0x28eec8[_0x6b75('0x34')]=_0x28eec8['attributes']['length']?_0x28eec8['attributes']:_0x21cc8f['model'];if(!_0x2b2284[_0x6b75('0x2f')]['hasOwnProperty'](_0x6b75('0x36'))){_0x28eec8['limit']=qs[_0x6b75('0x1d')](_0x2b2284[_0x6b75('0x2f')][_0x6b75('0x1d')]);_0x28eec8[_0x6b75('0x1b')]=qs[_0x6b75('0x1b')](_0x2b2284['query'][_0x6b75('0x1b')]);}_0x28eec8['order']=qs[_0x6b75('0x37')](_0x2b2284['query']['sort']);_0x28eec8['where']=qs['filters'](_[_0x6b75('0x38')](_0x2b2284[_0x6b75('0x2f')],_0x21cc8f[_0x6b75('0x31')]),_0x564c38);if(_0x2b2284[_0x6b75('0x2f')][_0x6b75('0x39')]){_0x28eec8[_0x6b75('0x3a')]=_[_0x6b75('0x3b')](_0x28eec8[_0x6b75('0x3a')],{'$or':_[_0x6b75('0x2a')](_0x564c38,function(_0x1127ad){if(_0x1127ad['type']!==_0x6b75('0x3c')){var _0xee91b7={};_0xee91b7[_0x1127ad['name']]={'$like':'%'+_0x2b2284[_0x6b75('0x2f')][_0x6b75('0x39')]+'%'};return _0xee91b7;}})});}_0x28eec8=_['merge']({},_0x28eec8,_0x2b2284[_0x6b75('0x3d')]);var _0x3119bc={'where':_0x28eec8[_0x6b75('0x3a')]};return db[_0x6b75('0x2b')][_0x6b75('0x1e')](_0x3119bc)['then'](function(_0x1bde0d){_0x45c62b[_0x6b75('0x1e')]=_0x1bde0d;if(_0x2b2284[_0x6b75('0x2f')]['includeAll']){_0x28eec8[_0x6b75('0x3e')]=[{'all':!![]}];}return db['VtigerAccount'][_0x6b75('0x3f')](_0x28eec8);})['then'](function(_0x3e48f4){_0x45c62b[_0x6b75('0x40')]=_0x3e48f4;return _0x45c62b;})[_0x6b75('0x23')](respondWithFilteredResult(_0x4f1725,_0x28eec8))[_0x6b75('0x41')](handleError(_0x4f1725,null));};exports[_0x6b75('0x42')]=function(_0x140842,_0x943463){var _0x48b354={'raw':![],'where':{'id':_0x140842[_0x6b75('0x43')]['id']}},_0x57975a={};_0x57975a['model']=_['keys'](db[_0x6b75('0x2b')][_0x6b75('0x2c')]);_0x57975a['query']=_[_0x6b75('0x30')](_0x140842[_0x6b75('0x2f')]);_0x57975a[_0x6b75('0x31')]=_[_0x6b75('0x32')](_0x57975a[_0x6b75('0x33')],_0x57975a[_0x6b75('0x2f')]);_0x48b354[_0x6b75('0x34')]=_[_0x6b75('0x32')](_0x57975a[_0x6b75('0x33')],qs['fields'](_0x140842['query'][_0x6b75('0x35')]));_0x48b354[_0x6b75('0x34')]=_0x48b354[_0x6b75('0x34')][_0x6b75('0x44')]?_0x48b354['attributes']:_0x57975a[_0x6b75('0x33')];if(_0x140842['query'][_0x6b75('0x45')]){_0x48b354[_0x6b75('0x3e')]=[{'all':!![]}];}_0x48b354=_[_0x6b75('0x3b')]({},_0x48b354,_0x140842[_0x6b75('0x3d')]);return db[_0x6b75('0x2b')][_0x6b75('0x46')](_0x48b354)[_0x6b75('0x23')](handleEntityNotFound(_0x943463,null))[_0x6b75('0x23')](respondWithResult(_0x943463,null))[_0x6b75('0x41')](handleError(_0x943463,null));};exports[_0x6b75('0x47')]=function(_0x2256bc,_0x5d0972){return db[_0x6b75('0x2b')]['create'](_0x2256bc['body'],{})[_0x6b75('0x23')](respondWithResult(_0x5d0972,0xc9))[_0x6b75('0x41')](handleError(_0x5d0972,null));};exports[_0x6b75('0x22')]=function(_0x54fc3a,_0xf5c756){if(_0x54fc3a[_0x6b75('0x48')]['id']){delete _0x54fc3a[_0x6b75('0x48')]['id'];}return db['VtigerAccount'][_0x6b75('0x46')]({'where':{'id':_0x54fc3a[_0x6b75('0x43')]['id']}})[_0x6b75('0x23')](handleEntityNotFound(_0xf5c756,null))[_0x6b75('0x23')](saveUpdates(_0x54fc3a[_0x6b75('0x48')],null))['then'](respondWithResult(_0xf5c756,null))[_0x6b75('0x41')](handleError(_0xf5c756,null));};exports[_0x6b75('0x49')]=function(_0x276f61,_0x54e300){return db[_0x6b75('0x2b')][_0x6b75('0x46')]({'where':{'id':_0x276f61[_0x6b75('0x43')]['id']}})[_0x6b75('0x23')](handleEntityNotFound(_0x54e300,null))[_0x6b75('0x23')](removeEntity(_0x54e300,null))[_0x6b75('0x41')](handleError(_0x54e300,null));};exports[_0x6b75('0x4a')]=function(_0x5c8966,_0x13d02e,_0x19b891){var _0x4e2f3d={};var _0x2093c8={};var _0xe87b4f;var _0x55a0f0;return db[_0x6b75('0x2b')]['findOne']({'where':{'id':_0x5c8966[_0x6b75('0x43')]['id']}})[_0x6b75('0x23')](handleEntityNotFound(_0x13d02e,null))[_0x6b75('0x23')](function(_0x12157c){if(_0x12157c){_0xe87b4f=_0x12157c;_0x2093c8[_0x6b75('0x33')]=_[_0x6b75('0x30')](db[_0x6b75('0x4b')][_0x6b75('0x2c')]);_0x2093c8['query']=_[_0x6b75('0x30')](_0x5c8966[_0x6b75('0x2f')]);_0x2093c8[_0x6b75('0x31')]=_[_0x6b75('0x32')](_0x2093c8[_0x6b75('0x33')],_0x2093c8[_0x6b75('0x2f')]);_0x4e2f3d[_0x6b75('0x34')]=_[_0x6b75('0x32')](_0x2093c8[_0x6b75('0x33')],qs['fields'](_0x5c8966[_0x6b75('0x2f')]['fields']));_0x4e2f3d[_0x6b75('0x34')]=_0x4e2f3d[_0x6b75('0x34')][_0x6b75('0x44')]?_0x4e2f3d[_0x6b75('0x34')]:_0x2093c8[_0x6b75('0x33')];_0x4e2f3d['order']=qs[_0x6b75('0x37')](_0x5c8966[_0x6b75('0x2f')][_0x6b75('0x37')]);_0x4e2f3d[_0x6b75('0x3a')]=qs['filters'](_[_0x6b75('0x38')](_0x5c8966[_0x6b75('0x2f')],_0x2093c8[_0x6b75('0x31')]));if(_0x5c8966[_0x6b75('0x2f')][_0x6b75('0x39')]){_0x4e2f3d['where']=_[_0x6b75('0x3b')](_0x4e2f3d[_0x6b75('0x3a')],{'$or':_[_0x6b75('0x2a')](_0x4e2f3d['attributes'],function(_0x5eb8c6){var _0x326a29={};_0x326a29[_0x5eb8c6]={'$like':'%'+_0x5c8966[_0x6b75('0x2f')][_0x6b75('0x39')]+'%'};return _0x326a29;})});}_0x4e2f3d=_[_0x6b75('0x3b')]({},_0x4e2f3d,_0x5c8966[_0x6b75('0x3d')]);return _0xe87b4f['getConfigurations'](_0x4e2f3d);}})['then'](function(_0x48df0c){if(_0x48df0c){_0x55a0f0=_0x48df0c[_0x6b75('0x44')];if(!_0x5c8966[_0x6b75('0x2f')][_0x6b75('0x4c')](_0x6b75('0x36'))){_0x4e2f3d['limit']=qs[_0x6b75('0x1d')](_0x5c8966['query'][_0x6b75('0x1d')]);_0x4e2f3d[_0x6b75('0x1b')]=qs[_0x6b75('0x1b')](_0x5c8966[_0x6b75('0x2f')][_0x6b75('0x1b')]);}return _0xe87b4f[_0x6b75('0x4a')](_0x4e2f3d);}})[_0x6b75('0x23')](function(_0x484d89){if(_0x484d89){return _0x484d89?{'count':_0x55a0f0,'rows':_0x484d89}:null;}})['then'](respondWithResult(_0x13d02e,null))[_0x6b75('0x41')](handleError(_0x13d02e,null));};exports[_0x6b75('0x4d')]=function(_0x171de9,_0x523085,_0x12e768){if(_0x171de9['body']['id']){delete _0x171de9[_0x6b75('0x48')]['id'];}return db['VtigerAccount']['findOne']({'where':{'id':_0x171de9[_0x6b75('0x43')]['id']}})[_0x6b75('0x23')](handleEntityNotFound(_0x523085,null))[_0x6b75('0x23')](function(_0x35218d){if(_0x35218d){_0x171de9[_0x6b75('0x48')]['AccountId']=_0x35218d['id'];_0x171de9[_0x6b75('0x48')]['Subjects']=integrations[_0x6b75('0x4e')](_0x171de9[_0x6b75('0x48')][_0x6b75('0x4f')],_0x171de9[_0x6b75('0x48')]['type']);_0x171de9[_0x6b75('0x48')][_0x6b75('0x50')]=integrations[_0x6b75('0x51')](_0x171de9[_0x6b75('0x48')][_0x6b75('0x4f')],_0x171de9[_0x6b75('0x48')][_0x6b75('0x2d')]);return db[_0x6b75('0x4b')]['create'](_0x171de9[_0x6b75('0x48')],{'include':[{'model':db['VtigerField'],'as':_0x6b75('0x52')},{'model':db[_0x6b75('0x53')],'as':_0x6b75('0x50')}]});}return null;})[_0x6b75('0x23')](respondWithResult(_0x523085,null))[_0x6b75('0x41')](handleError(_0x523085,null));};var md5=require(_0x6b75('0x54'));exports['getFields']=function(_0x46f990,_0x586174,_0x34652f){var _0x17ed02=null;var _0x420d9a=null;var _0x1a3520=null;var _0x3fbded=null;var _0x2b93f9='';return db[_0x6b75('0x2b')]['findOne']({'where':{'id':_0x46f990[_0x6b75('0x43')]['id']},'attributes':['id','name','username',_0x6b75('0x55'),_0x6b75('0x56'),'remoteUri','serverUrl',_0x6b75('0x57')]})[_0x6b75('0x23')](handleEntityNotFound(_0x586174,null))[_0x6b75('0x23')](function(_0x4c19d2){if(_0x4c19d2){_0x17ed02=_0x4c19d2[_0x6b75('0x58')];_0x420d9a=_0x4c19d2[_0x6b75('0x57')];_0x1a3520=_0x4c19d2['moduleName'];_0x2b93f9=_0x4c19d2[_0x6b75('0x59')];var _0x4e9d69=_0x2b93f9['slice'](-0x1);if(_0x4e9d69==='/'){_0x2b93f9=_0x2b93f9[_0x6b75('0x5a')](0x0,_0x2b93f9['lastIndexOf'](_0x4e9d69));}_0x3fbded=util[_0x6b75('0x5b')]('%s/webservice.php',_0x2b93f9);var _0x4c26f2={'method':'GET','uri':_0x3fbded,'qs':{'operation':_0x6b75('0x5c'),'username':_0x4c19d2['username']},'json':!![]};return rp(_0x4c26f2);}})[_0x6b75('0x23')](function(_0x3741e4){if(_0x3741e4['success']){var _0x2a785f={'method':_0x6b75('0x5d'),'uri':_0x3fbded,'form':{'operation':'login','username':_0x17ed02,'accessKey':md5(_0x3741e4['result'][_0x6b75('0x5e')]+_0x420d9a)},'json':!![]};return rp(_0x2a785f);}})[_0x6b75('0x23')](function(_0x4a82a2){if(_0x4a82a2[_0x6b75('0x5f')]){var _0x45a608={'method':_0x6b75('0x60'),'uri':_0x3fbded,'qs':{'operation':'describe','username':_0x17ed02,'sessionName':_0x4a82a2[_0x6b75('0x61')][_0x6b75('0x62')],'elementType':_0x1a3520},'json':!![]};return rp(_0x45a608);}})[_0x6b75('0x23')](function(_0x1026b2){if(_0x1026b2[_0x6b75('0x5f')]){var _0x4b8b91=[_0x6b75('0x63'),'reference','owner'];_['remove'](_0x1026b2[_0x6b75('0x61')]['fields'],function(_0x4c75a4){return _0x4b8b91['includes'](_0x4c75a4[_0x6b75('0x2d')][_0x6b75('0x27')]);});_[_0x6b75('0x64')](_0x1026b2['result'][_0x6b75('0x35')],function(_0x327843){return _0x327843[_0x6b75('0x65')]===_0x6b75('0x66');});return{'count':_0x1026b2['result']['fields']['length'],'rows':_[_0x6b75('0x2a')](_0x1026b2[_0x6b75('0x61')][_0x6b75('0x35')],function(_0x34e9b3){return{'id':_0x34e9b3[_0x6b75('0x27')],'name':_0x34e9b3['label'],'custom':_['startsWith'](_0x34e9b3['name'],_0x6b75('0x67'))?!![]:![],'options':_0x34e9b3[_0x6b75('0x2d')][_0x6b75('0x27')]==='picklist'&&_0x34e9b3[_0x6b75('0x2d')][_0x6b75('0x68')][_0x6b75('0x44')]>0x0?_[_0x6b75('0x2a')](_0x34e9b3[_0x6b75('0x2d')]['picklistValues'],function(_0x19839e){return{'name':_0x19839e['label'],'value':_0x19839e[_0x6b75('0x69')]};}):[]};})};}})[_0x6b75('0x23')](respondWithResult(_0x586174,null))['catch'](function(_0x3086d4){console[_0x6b75('0x6a')](_0x6b75('0x6b')+_0x3086d4);var _0x98fd5c=_0x46f990[_0x6b75('0x2f')]['test']?0x1f4:_0x3086d4['statusCode']||0x1f4;logger[_0x6b75('0x6c')](_0x6b75('0x6d'),'getFields',_0x98fd5c,JSON[_0x6b75('0x6e')](_0x3086d4));delete _0x3086d4[_0x6b75('0x27')];if(_0x98fd5c===0x191){_0x98fd5c=0x190;}_0x586174[_0x6b75('0x19')](_0x98fd5c)[_0x6b75('0x28')](_0x46f990[_0x6b75('0x2f')][_0x6b75('0x6f')]?{'message':'Wrong\x20credentials','statusCode':_0x3086d4[_0x6b75('0x70')]}:_0x3086d4);});};
\ No newline at end of file
index 5cc9d85..9f5a7dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87a3=['VtigerAccount','int_vtiger_accounts','lodash','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','define'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x87a3,0x7a));var _0x387a=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0x87a3[_0x5e36d1];return _0x950b9e;};'use strict';var _=require(_0x387a('0x0'));var util=require('util');var logger=require(_0x387a('0x1'))(_0x387a('0x2'));var moment=require('moment');var BPromise=require(_0x387a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x387a('0x4'));var rimraf=require(_0x387a('0x5'));var config=require(_0x387a('0x6'));var attributes=require(_0x387a('0x7'));var integrations=require(_0x387a('0x8'));module['exports']=function(_0x5696da,_0x325891){return _0x5696da[_0x387a('0x9')](_0x387a('0xa'),attributes,{'tableName':_0x387a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa163=['int_vtiger_accounts','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','../../components/integrations/configuration','exports','define'];(function(_0x160a52,_0x124731){var _0x1403d3=function(_0x33d869){while(--_0x33d869){_0x160a52['push'](_0x160a52['shift']());}};_0x1403d3(++_0x124731);}(_0xa163,0xc7));var _0x3a16=function(_0x99fc98,_0x4acfe1){_0x99fc98=_0x99fc98-0x0;var _0x59d220=_0xa163[_0x99fc98];return _0x59d220;};'use strict';var _=require('lodash');var util=require(_0x3a16('0x0'));var logger=require('../../config/logger')(_0x3a16('0x1'));var moment=require(_0x3a16('0x2'));var BPromise=require(_0x3a16('0x3'));var rp=require(_0x3a16('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3a16('0x5'));var config=require(_0x3a16('0x6'));var attributes=require('./intVtigerAccount.attributes');var integrations=require(_0x3a16('0x7'));module[_0x3a16('0x8')]=function(_0x3cefdb,_0x27c866){return _0x3cefdb[_0x3a16('0x9')]('VtigerAccount',attributes,{'tableName':_0x3a16('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 710fe95..38d7e41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['rpc','../../config/environment','client','http','request','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','findAll','options','where','attributes','include','model','map','GetVtigerAccount','VtigerAccount','find','raw','ShowVtigerAccount','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x5d99dd,_0x4bb40b){var _0x148a26=function(_0x25df5f){while(--_0x25df5f){_0x5d99dd['push'](_0x5d99dd['shift']());}};_0x148a26(++_0x4bb40b);}(_0x4fc2,0x111));var _0x24fc=function(_0x10d07b,_0xa771c5){_0x10d07b=_0x10d07b-0x0;var _0x2c880e=_0x4fc2[_0x10d07b];return _0x2c880e;};'use strict';var _=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var moment=require(_0x24fc('0x2'));var BPromise=require(_0x24fc('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x24fc('0x4'));var db=require(_0x24fc('0x5'))['db'];var utils=require(_0x24fc('0x6'));var logger=require('../../config/logger')(_0x24fc('0x7'));var config=require(_0x24fc('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x24fc('0x9')][_0x24fc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4889f4,_0x115851,_0x22a0c8){return new BPromise(function(_0x220f9a,_0x123eff){return client[_0x24fc('0xb')](_0x4889f4,_0x22a0c8)[_0x24fc('0xc')](function(_0x5afdf1){logger[_0x24fc('0xd')](_0x24fc('0xe'),_0x115851,_0x24fc('0xf'));logger[_0x24fc('0x10')](_0x24fc('0x11'),_0x115851,_0x24fc('0xf'),JSON[_0x24fc('0x12')](_0x5afdf1));if(_0x5afdf1[_0x24fc('0x13')]){if(_0x5afdf1['error'][_0x24fc('0x14')]===0x1f4){logger[_0x24fc('0x13')]('VtigerAccount,\x20%s,\x20%s',_0x115851,_0x5afdf1[_0x24fc('0x13')][_0x24fc('0x15')]);return _0x123eff(_0x5afdf1[_0x24fc('0x13')][_0x24fc('0x15')]);}logger[_0x24fc('0x13')](_0x24fc('0xe'),_0x115851,_0x5afdf1['error'][_0x24fc('0x15')]);return _0x220f9a(_0x5afdf1[_0x24fc('0x13')][_0x24fc('0x15')]);}else{logger[_0x24fc('0xd')]('VtigerAccount,\x20%s,\x20%s',_0x115851,_0x24fc('0xf'));_0x220f9a(_0x5afdf1['result'][_0x24fc('0x15')]);}})[_0x24fc('0x16')](function(_0x218fb6){logger[_0x24fc('0x13')](_0x24fc('0xe'),_0x115851,_0x218fb6);_0x123eff(_0x218fb6);});});}exports['GetVtigerAccount']=function(_0x23873c){var _0x1cb3d0=this;return new Promise(function(_0x6cfa0a,_0x8ac114){return db['VtigerAccount'][_0x24fc('0x17')]({'raw':_0x23873c[_0x24fc('0x18')]?_0x23873c[_0x24fc('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x23873c[_0x24fc('0x18')]?_0x23873c[_0x24fc('0x18')][_0x24fc('0x19')]||null:null,'attributes':_0x23873c[_0x24fc('0x18')]?_0x23873c['options'][_0x24fc('0x1a')]||null:null,'limit':_0x23873c['options']?_0x23873c[_0x24fc('0x18')]['limit']||null:null,'include':_0x23873c[_0x24fc('0x18')]?_0x23873c[_0x24fc('0x18')][_0x24fc('0x1b')]?_['map'](_0x23873c[_0x24fc('0x18')]['include'],function(_0x35a9c7){return{'model':db[_0x35a9c7[_0x24fc('0x1c')]],'as':_0x35a9c7['as'],'attributes':_0x35a9c7[_0x24fc('0x1a')],'include':_0x35a9c7[_0x24fc('0x1b')]?_[_0x24fc('0x1d')](_0x35a9c7[_0x24fc('0x1b')],function(_0x3f0875){return{'model':db[_0x3f0875[_0x24fc('0x1c')]],'as':_0x3f0875['as'],'attributes':_0x3f0875[_0x24fc('0x1a')],'include':_0x3f0875[_0x24fc('0x1b')]?_['map'](_0x3f0875[_0x24fc('0x1b')],function(_0x16f27f){return{'model':db[_0x16f27f[_0x24fc('0x1c')]],'as':_0x16f27f['as'],'attributes':_0x16f27f['attributes']};}):[]};}):[]};}):[]:[]})[_0x24fc('0xc')](function(_0x3d1ec8){logger[_0x24fc('0xd')](_0x24fc('0x1e'),_0x23873c);logger[_0x24fc('0x10')](_0x24fc('0x1e'),_0x23873c,JSON['stringify'](_0x3d1ec8));_0x6cfa0a(_0x3d1ec8);})[_0x24fc('0x16')](function(_0x29a461){logger[_0x24fc('0x13')](_0x24fc('0x1e'),_0x29a461[_0x24fc('0x15')],_0x23873c);_0x8ac114(_0x1cb3d0['error'](0x1f4,_0x29a461['message']));});});};exports['ShowVtigerAccount']=function(_0x3df6f4){var _0x574ba3=this;return new Promise(function(_0x3f2464,_0x3e6389){return db[_0x24fc('0x1f')][_0x24fc('0x20')]({'raw':_0x3df6f4['options']?_0x3df6f4[_0x24fc('0x18')][_0x24fc('0x21')]===undefined?!![]:![]:!![],'where':_0x3df6f4['options']?_0x3df6f4[_0x24fc('0x18')][_0x24fc('0x19')]||null:null,'attributes':_0x3df6f4['options']?_0x3df6f4['options'][_0x24fc('0x1a')]||null:null,'include':_0x3df6f4['options']?_0x3df6f4[_0x24fc('0x18')][_0x24fc('0x1b')]?_['map'](_0x3df6f4[_0x24fc('0x18')][_0x24fc('0x1b')],function(_0x3b2862){return{'model':db[_0x3b2862[_0x24fc('0x1c')]],'as':_0x3b2862['as'],'attributes':_0x3b2862[_0x24fc('0x1a')],'include':_0x3b2862[_0x24fc('0x1b')]?_[_0x24fc('0x1d')](_0x3b2862[_0x24fc('0x1b')],function(_0x379a4a){return{'model':db[_0x379a4a['model']],'as':_0x379a4a['as'],'attributes':_0x379a4a[_0x24fc('0x1a')],'include':_0x379a4a[_0x24fc('0x1b')]?_[_0x24fc('0x1d')](_0x379a4a[_0x24fc('0x1b')],function(_0x242bd5){return{'model':db[_0x242bd5['model']],'as':_0x242bd5['as'],'attributes':_0x242bd5['attributes']};}):[]};}):[]};}):[]:[]})[_0x24fc('0xc')](function(_0x5d48fe){logger[_0x24fc('0xd')](_0x24fc('0x22'),_0x3df6f4);logger[_0x24fc('0x10')](_0x24fc('0x22'),_0x3df6f4,JSON['stringify'](_0x5d48fe));_0x3f2464(_0x5d48fe);})[_0x24fc('0x16')](function(_0x4f4ec8){logger[_0x24fc('0x13')](_0x24fc('0x22'),_0x4f4ec8[_0x24fc('0x15')],_0x3df6f4);_0x3e6389(_0x574ba3[_0x24fc('0x13')](0x1f4,_0x4f4ec8[_0x24fc('0x15')]));});});};
\ No newline at end of file
+var _0xa478=['info','request\x20sent','debug','error','code','message','VtigerAccount,\x20%s,\x20%s','result','catch','GetVtigerAccount','findAll','options','raw','where','attributes','include','map','model','VtigerAccount','find','ShowVtigerAccount','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then'];(function(_0x56a3ee,_0x436f7d){var _0x35cb2e=function(_0x5a7213){while(--_0x5a7213){_0x56a3ee['push'](_0x56a3ee['shift']());}};_0x35cb2e(++_0x436f7d);}(_0xa478,0x136));var _0x8a47=function(_0x40d339,_0xb726c3){_0x40d339=_0x40d339-0x0;var _0x5cbd0b=_0xa478[_0x40d339];return _0x5cbd0b;};'use strict';var _=require(_0x8a47('0x0'));var util=require(_0x8a47('0x1'));var moment=require(_0x8a47('0x2'));var BPromise=require(_0x8a47('0x3'));var rs=require(_0x8a47('0x4'));var fs=require('fs');var Redis=require(_0x8a47('0x5'));var db=require(_0x8a47('0x6'))['db'];var utils=require(_0x8a47('0x7'));var logger=require(_0x8a47('0x8'))(_0x8a47('0x9'));var config=require(_0x8a47('0xa'));var jayson=require(_0x8a47('0xb'));var client=jayson['client'][_0x8a47('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2d62a6,_0x3de815,_0x3cb340){return new BPromise(function(_0x56884b,_0x384886){return client['request'](_0x2d62a6,_0x3cb340)[_0x8a47('0xd')](function(_0x369fc9){logger[_0x8a47('0xe')]('VtigerAccount,\x20%s,\x20%s',_0x3de815,_0x8a47('0xf'));logger[_0x8a47('0x10')]('VtigerAccount,\x20%s,\x20%s,\x20%s',_0x3de815,_0x8a47('0xf'),JSON['stringify'](_0x369fc9));if(_0x369fc9[_0x8a47('0x11')]){if(_0x369fc9[_0x8a47('0x11')][_0x8a47('0x12')]===0x1f4){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x3de815,_0x369fc9['error'][_0x8a47('0x13')]);return _0x384886(_0x369fc9[_0x8a47('0x11')]['message']);}logger[_0x8a47('0x11')](_0x8a47('0x14'),_0x3de815,_0x369fc9[_0x8a47('0x11')][_0x8a47('0x13')]);return _0x56884b(_0x369fc9[_0x8a47('0x11')][_0x8a47('0x13')]);}else{logger[_0x8a47('0xe')](_0x8a47('0x14'),_0x3de815,_0x8a47('0xf'));_0x56884b(_0x369fc9[_0x8a47('0x15')][_0x8a47('0x13')]);}})[_0x8a47('0x16')](function(_0x2917d9){logger['error'](_0x8a47('0x14'),_0x3de815,_0x2917d9);_0x384886(_0x2917d9);});});}exports[_0x8a47('0x17')]=function(_0x3f9093){var _0x5f5884=this;return new Promise(function(_0x341089,_0x5c62eb){return db['VtigerAccount'][_0x8a47('0x18')]({'raw':_0x3f9093[_0x8a47('0x19')]?_0x3f9093[_0x8a47('0x19')][_0x8a47('0x1a')]===undefined?!![]:![]:!![],'where':_0x3f9093[_0x8a47('0x19')]?_0x3f9093[_0x8a47('0x19')][_0x8a47('0x1b')]||null:null,'attributes':_0x3f9093[_0x8a47('0x19')]?_0x3f9093[_0x8a47('0x19')][_0x8a47('0x1c')]||null:null,'limit':_0x3f9093['options']?_0x3f9093[_0x8a47('0x19')]['limit']||null:null,'include':_0x3f9093[_0x8a47('0x19')]?_0x3f9093[_0x8a47('0x19')][_0x8a47('0x1d')]?_[_0x8a47('0x1e')](_0x3f9093['options'][_0x8a47('0x1d')],function(_0x5ae186){return{'model':db[_0x5ae186['model']],'as':_0x5ae186['as'],'attributes':_0x5ae186['attributes'],'include':_0x5ae186['include']?_[_0x8a47('0x1e')](_0x5ae186[_0x8a47('0x1d')],function(_0x5bed3e){return{'model':db[_0x5bed3e[_0x8a47('0x1f')]],'as':_0x5bed3e['as'],'attributes':_0x5bed3e[_0x8a47('0x1c')],'include':_0x5bed3e[_0x8a47('0x1d')]?_[_0x8a47('0x1e')](_0x5bed3e[_0x8a47('0x1d')],function(_0xd06be6){return{'model':db[_0xd06be6[_0x8a47('0x1f')]],'as':_0xd06be6['as'],'attributes':_0xd06be6['attributes']};}):[]};}):[]};}):[]:[]})[_0x8a47('0xd')](function(_0x4a10c3){logger[_0x8a47('0xe')](_0x8a47('0x17'),_0x3f9093);logger['debug'](_0x8a47('0x17'),_0x3f9093,JSON['stringify'](_0x4a10c3));_0x341089(_0x4a10c3);})['catch'](function(_0x12470a){logger[_0x8a47('0x11')](_0x8a47('0x17'),_0x12470a[_0x8a47('0x13')],_0x3f9093);_0x5c62eb(_0x5f5884[_0x8a47('0x11')](0x1f4,_0x12470a[_0x8a47('0x13')]));});});};exports['ShowVtigerAccount']=function(_0x353576){var _0x4d78b5=this;return new Promise(function(_0x549913,_0x448459){return db[_0x8a47('0x20')][_0x8a47('0x21')]({'raw':_0x353576[_0x8a47('0x19')]?_0x353576[_0x8a47('0x19')][_0x8a47('0x1a')]===undefined?!![]:![]:!![],'where':_0x353576[_0x8a47('0x19')]?_0x353576[_0x8a47('0x19')][_0x8a47('0x1b')]||null:null,'attributes':_0x353576[_0x8a47('0x19')]?_0x353576['options'][_0x8a47('0x1c')]||null:null,'include':_0x353576[_0x8a47('0x19')]?_0x353576[_0x8a47('0x19')]['include']?_[_0x8a47('0x1e')](_0x353576[_0x8a47('0x19')]['include'],function(_0xa1a852){return{'model':db[_0xa1a852[_0x8a47('0x1f')]],'as':_0xa1a852['as'],'attributes':_0xa1a852[_0x8a47('0x1c')],'include':_0xa1a852[_0x8a47('0x1d')]?_['map'](_0xa1a852['include'],function(_0x145908){return{'model':db[_0x145908[_0x8a47('0x1f')]],'as':_0x145908['as'],'attributes':_0x145908[_0x8a47('0x1c')],'include':_0x145908[_0x8a47('0x1d')]?_[_0x8a47('0x1e')](_0x145908[_0x8a47('0x1d')],function(_0x1819ef){return{'model':db[_0x1819ef['model']],'as':_0x1819ef['as'],'attributes':_0x1819ef['attributes']};}):[]};}):[]};}):[]:[]})[_0x8a47('0xd')](function(_0x3636af){logger[_0x8a47('0xe')](_0x8a47('0x22'),_0x353576);logger[_0x8a47('0x10')](_0x8a47('0x22'),_0x353576,JSON[_0x8a47('0x23')](_0x3636af));_0x549913(_0x3636af);})[_0x8a47('0x16')](function(_0xe178f1){logger[_0x8a47('0x11')](_0x8a47('0x22'),_0xe178f1['message'],_0x353576);_0x448459(_0x4d78b5[_0x8a47('0x11')](0x1f4,_0xe178f1['message']));});});};
\ No newline at end of file
index 2257409..a8e8e42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4c9=['../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc4c9,0x14a));var _0x9c4c=function(_0x3e5eb2,_0x48bbbb){_0x3e5eb2=_0x3e5eb2-0x0;var _0x5ee004=_0xc4c9[_0x3e5eb2];return _0x5ee004;};'use strict';var multer=require(_0x9c4c('0x0'));var util=require(_0x9c4c('0x1'));var path=require(_0x9c4c('0x2'));var timeout=require(_0x9c4c('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9c4c('0x4'));var auth=require(_0x9c4c('0x5'));var interaction=require(_0x9c4c('0x6'));var config=require('../../config/environment');var controller=require('./intVtigerConfiguration.controller');router[_0x9c4c('0x7')]('/',auth[_0x9c4c('0x8')](),controller[_0x9c4c('0x9')]);router['get'](_0x9c4c('0xa'),auth['isAuthenticated'](),controller[_0x9c4c('0xb')]);router['get'](_0x9c4c('0xc'),auth[_0x9c4c('0x8')](),controller[_0x9c4c('0xd')]);router[_0x9c4c('0x7')](_0x9c4c('0xe'),auth[_0x9c4c('0x8')](),controller[_0x9c4c('0xf')]);router[_0x9c4c('0x7')]('/:id/descriptions',auth[_0x9c4c('0x8')](),controller[_0x9c4c('0x10')]);router[_0x9c4c('0x11')]('/',auth[_0x9c4c('0x8')](),controller[_0x9c4c('0x12')]);router[_0x9c4c('0x13')](_0x9c4c('0xa'),auth[_0x9c4c('0x8')](),controller[_0x9c4c('0x14')]);router[_0x9c4c('0x15')](_0x9c4c('0xa'),auth[_0x9c4c('0x8')](),controller[_0x9c4c('0x16')]);module[_0x9c4c('0x17')]=router;
\ No newline at end of file
+var _0x087d=['put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create'];(function(_0x2f1929,_0x220a01){var _0x4b6fb1=function(_0x5c954b){while(--_0x5c954b){_0x2f1929['push'](_0x2f1929['shift']());}};_0x4b6fb1(++_0x220a01);}(_0x087d,0x1d3));var _0xd087=function(_0xfe81b5,_0x57b8f9){_0xfe81b5=_0xfe81b5-0x0;var _0x2d6d2d=_0x087d[_0xfe81b5];return _0x2d6d2d;};'use strict';var multer=require('multer');var util=require(_0xd087('0x0'));var path=require(_0xd087('0x1'));var timeout=require('connect-timeout');var express=require(_0xd087('0x2'));var router=express[_0xd087('0x3')]();var fs_extra=require(_0xd087('0x4'));var auth=require(_0xd087('0x5'));var interaction=require(_0xd087('0x6'));var config=require('../../config/environment');var controller=require('./intVtigerConfiguration.controller');router[_0xd087('0x7')]('/',auth[_0xd087('0x8')](),controller['index']);router[_0xd087('0x7')](_0xd087('0x9'),auth[_0xd087('0x8')](),controller[_0xd087('0xa')]);router[_0xd087('0x7')]('/:id/fields',auth['isAuthenticated'](),controller[_0xd087('0xb')]);router[_0xd087('0x7')](_0xd087('0xc'),auth['isAuthenticated'](),controller[_0xd087('0xd')]);router['get'](_0xd087('0xe'),auth[_0xd087('0x8')](),controller[_0xd087('0xf')]);router['post']('/',auth[_0xd087('0x8')](),controller[_0xd087('0x10')]);router[_0xd087('0x11')](_0xd087('0x9'),auth[_0xd087('0x8')](),controller[_0xd087('0x12')]);router[_0xd087('0x13')](_0xd087('0x9'),auth['isAuthenticated'](),controller[_0xd087('0x14')]);module[_0xd087('0x15')]=router;
\ No newline at end of file
index 59aecee..74924f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd02=['exports','STRING','sequelize'];(function(_0x2113d7,_0x530921){var _0xb0102e=function(_0x78742a){while(--_0x78742a){_0x2113d7['push'](_0x2113d7['shift']());}};_0xb0102e(++_0x530921);}(_0xcd02,0x18e));var _0x2cd0=function(_0x8c16e4,_0x2e0c29){_0x8c16e4=_0x8c16e4-0x0;var _0x44455b=_0xcd02[_0x8c16e4];return _0x44455b;};'use strict';var Sequelize=require(_0x2cd0('0x0'));module[_0x2cd0('0x1')]={'name':{'type':Sequelize[_0x2cd0('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xcbff=['STRING','sequelize'];(function(_0x599041,_0x40fbea){var _0x1c4969=function(_0x138048){while(--_0x138048){_0x599041['push'](_0x599041['shift']());}};_0x1c4969(++_0x40fbea);}(_0xcbff,0x197));var _0xfcbf=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xcbff[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0xfcbf('0x0'));module['exports']={'name':{'type':Sequelize[_0xfcbf('0x1')]},'description':{'type':Sequelize[_0xfcbf('0x1')]}};
\ No newline at end of file
index a6ee940..439535d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98e1=['undefined','offset','limit','status','set','apply','reject','save','update','then','destroy','end','sendStatus','name','index','map','VtigerConfiguration','rawAttributes','fieldName','type','model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','findAll','catch','show','params','keys','include','find','create','body','VtigerField','length','getSubjects','getDescriptions','findOne','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','json'];(function(_0x3a0dbc,_0x52e9c2){var _0x2b9ea3=function(_0x50f199){while(--_0x50f199){_0x3a0dbc['push'](_0x3a0dbc['shift']());}};_0x2b9ea3(++_0x52e9c2);}(_0x98e1,0x160));var _0x198e=function(_0x3a6c2f,_0x4bcfc0){_0x3a6c2f=_0x3a6c2f-0x0;var _0x3c0ce0=_0x98e1[_0x3a6c2f];return _0x3c0ce0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x198e('0x0'));var zipdir=require(_0x198e('0x1'));var jsonpatch=require(_0x198e('0x2'));var rp=require(_0x198e('0x3'));var moment=require('moment');var BPromise=require(_0x198e('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x198e('0x5'));var sox=require(_0x198e('0x6'));var csv=require(_0x198e('0x7'));var ejs=require(_0x198e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x198e('0x9'));var crypto=require('crypto');var jsforce=require(_0x198e('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x198e('0x7'));var querystring=require(_0x198e('0xb'));var Papa=require(_0x198e('0xc'));var Redis=require(_0x198e('0xd'));var authService=require(_0x198e('0xe'));var qs=require(_0x198e('0xf'));var as=require(_0x198e('0x10'));var hardwareService=require(_0x198e('0x11'));var logger=require(_0x198e('0x12'))('api');var utils=require(_0x198e('0x13'));var config=require(_0x198e('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x198e('0x15'))['db'];function respondWithStatusCode(_0x4f85a9,_0x358746){_0x358746=_0x358746||0xcc;return function(_0x4ceda9){if(_0x4ceda9){return _0x4f85a9['sendStatus'](_0x358746);}return _0x4f85a9['status'](_0x358746)['end']();};}function respondWithResult(_0x1ccac7,_0x2c9017){_0x2c9017=_0x2c9017||0xc8;return function(_0x10d24e){if(_0x10d24e){return _0x1ccac7['status'](_0x2c9017)[_0x198e('0x16')](_0x10d24e);}};}function respondWithFilteredResult(_0x1675a3,_0x3b4101){return function(_0x5035de){if(_0x5035de){var _0x53e4c1=typeof _0x3b4101['offset']==='undefined'&&typeof _0x3b4101['limit']===_0x198e('0x17');var _0x58de5f=_0x5035de['count'];var _0x440975=_0x53e4c1?0x0:_0x3b4101[_0x198e('0x18')];var _0x2485ea=_0x53e4c1?_0x5035de['count']:_0x3b4101[_0x198e('0x18')]+_0x3b4101[_0x198e('0x19')];var _0x2fdc34;if(_0x2485ea>=_0x58de5f){_0x2485ea=_0x58de5f;_0x2fdc34=0xc8;}else{_0x2fdc34=0xce;}_0x1675a3[_0x198e('0x1a')](_0x2fdc34);return _0x1675a3[_0x198e('0x1b')]('Content-Range',_0x440975+'-'+_0x2485ea+'/'+_0x58de5f)[_0x198e('0x16')](_0x5035de);}return null;};}function patchUpdates(_0x1b7c84){return function(_0x59814c){try{jsonpatch[_0x198e('0x1c')](_0x59814c,_0x1b7c84,!![]);}catch(_0x26b32c){return BPromise[_0x198e('0x1d')](_0x26b32c);}return _0x59814c[_0x198e('0x1e')]();};}function saveUpdates(_0xec5453,_0x41e27f){return function(_0x503986){if(_0x503986){return _0x503986[_0x198e('0x1f')](_0xec5453)[_0x198e('0x20')](function(_0x3aecd5){return _0x3aecd5;});}return null;};}function removeEntity(_0x43042f,_0x17d04d){return function(_0x2ab945){if(_0x2ab945){return _0x2ab945[_0x198e('0x21')]()['then'](function(){_0x43042f[_0x198e('0x1a')](0xcc)[_0x198e('0x22')]();});}};}function handleEntityNotFound(_0x1fceba,_0x2ed96f){return function(_0xbd105b){if(!_0xbd105b){_0x1fceba[_0x198e('0x23')](0x194);}return _0xbd105b;};}function handleError(_0x302771,_0x436992){_0x436992=_0x436992||0x1f4;return function(_0x66c071){logger['error'](_0x66c071['stack']);if(_0x66c071[_0x198e('0x24')]){delete _0x66c071[_0x198e('0x24')];}_0x302771['status'](_0x436992)['send'](_0x66c071);};}exports[_0x198e('0x25')]=function(_0x1962ea,_0x337c73){var _0x505dd8={},_0x5e657e={},_0x37ee38={'count':0x0,'rows':[]};var _0x17a5b5=_[_0x198e('0x26')](db[_0x198e('0x27')][_0x198e('0x28')],function(_0x25e452){return{'name':_0x25e452[_0x198e('0x29')],'type':_0x25e452[_0x198e('0x2a')]['key']};});_0x5e657e[_0x198e('0x2b')]=_[_0x198e('0x26')](_0x17a5b5,_0x198e('0x24'));_0x5e657e['query']=_['keys'](_0x1962ea[_0x198e('0x2c')]);_0x5e657e[_0x198e('0x2d')]=_['intersection'](_0x5e657e[_0x198e('0x2b')],_0x5e657e[_0x198e('0x2c')]);_0x505dd8[_0x198e('0x2e')]=_[_0x198e('0x2f')](_0x5e657e[_0x198e('0x2b')],qs['fields'](_0x1962ea['query'][_0x198e('0x30')]));_0x505dd8['attributes']=_0x505dd8['attributes']['length']?_0x505dd8[_0x198e('0x2e')]:_0x5e657e[_0x198e('0x2b')];if(!_0x1962ea['query'][_0x198e('0x31')](_0x198e('0x32'))){_0x505dd8[_0x198e('0x19')]=qs['limit'](_0x1962ea[_0x198e('0x2c')][_0x198e('0x19')]);_0x505dd8[_0x198e('0x18')]=qs[_0x198e('0x18')](_0x1962ea[_0x198e('0x2c')][_0x198e('0x18')]);}_0x505dd8[_0x198e('0x33')]=qs[_0x198e('0x34')](_0x1962ea['query'][_0x198e('0x34')]);_0x505dd8[_0x198e('0x35')]=qs[_0x198e('0x2d')](_[_0x198e('0x36')](_0x1962ea[_0x198e('0x2c')],_0x5e657e[_0x198e('0x2d')]),_0x17a5b5);if(_0x1962ea[_0x198e('0x2c')][_0x198e('0x37')]){_0x505dd8[_0x198e('0x35')]=_[_0x198e('0x38')](_0x505dd8['where'],{'$or':_[_0x198e('0x26')](_0x17a5b5,function(_0x30ed1f){if(_0x30ed1f[_0x198e('0x2a')]!==_0x198e('0x39')){var _0x3a6910={};_0x3a6910[_0x30ed1f[_0x198e('0x24')]]={'$like':'%'+_0x1962ea[_0x198e('0x2c')]['filter']+'%'};return _0x3a6910;}})});}_0x505dd8=_[_0x198e('0x38')]({},_0x505dd8,_0x1962ea[_0x198e('0x3a')]);var _0x4d927f={'where':_0x505dd8[_0x198e('0x35')]};return db[_0x198e('0x27')][_0x198e('0x3b')](_0x4d927f)[_0x198e('0x20')](function(_0x23d622){_0x37ee38['count']=_0x23d622;if(_0x1962ea[_0x198e('0x2c')][_0x198e('0x3c')]){_0x505dd8['include']=[{'all':!![]}];}return db[_0x198e('0x27')][_0x198e('0x3d')](_0x505dd8);})[_0x198e('0x20')](function(_0x4f5871){_0x37ee38['rows']=_0x4f5871;return _0x37ee38;})[_0x198e('0x20')](respondWithFilteredResult(_0x337c73,_0x505dd8))[_0x198e('0x3e')](handleError(_0x337c73,null));};exports[_0x198e('0x3f')]=function(_0x218be5,_0x5a863b){var _0x4d46d0={'raw':![],'where':{'id':_0x218be5[_0x198e('0x40')]['id']}},_0x3dcca6={};_0x3dcca6[_0x198e('0x2b')]=_['keys'](db['VtigerConfiguration']['rawAttributes']);_0x3dcca6[_0x198e('0x2c')]=_[_0x198e('0x41')](_0x218be5[_0x198e('0x2c')]);_0x3dcca6[_0x198e('0x2d')]=_[_0x198e('0x2f')](_0x3dcca6[_0x198e('0x2b')],_0x3dcca6[_0x198e('0x2c')]);_0x4d46d0[_0x198e('0x2e')]=_[_0x198e('0x2f')](_0x3dcca6[_0x198e('0x2b')],qs[_0x198e('0x30')](_0x218be5[_0x198e('0x2c')][_0x198e('0x30')]));_0x4d46d0[_0x198e('0x2e')]=_0x4d46d0[_0x198e('0x2e')]['length']?_0x4d46d0[_0x198e('0x2e')]:_0x3dcca6['model'];if(_0x218be5[_0x198e('0x2c')][_0x198e('0x3c')]){_0x4d46d0[_0x198e('0x42')]=[{'all':!![]}];}_0x4d46d0=_['merge']({},_0x4d46d0,_0x218be5[_0x198e('0x3a')]);return db['VtigerConfiguration'][_0x198e('0x43')](_0x4d46d0)[_0x198e('0x20')](handleEntityNotFound(_0x5a863b,null))[_0x198e('0x20')](respondWithResult(_0x5a863b,null))[_0x198e('0x3e')](handleError(_0x5a863b,null));};exports[_0x198e('0x44')]=function(_0x42be4b,_0x10d688){return db['VtigerConfiguration'][_0x198e('0x44')](_0x42be4b[_0x198e('0x45')],{})[_0x198e('0x20')](respondWithResult(_0x10d688,0xc9))[_0x198e('0x3e')](handleError(_0x10d688,null));};exports[_0x198e('0x1f')]=function(_0x3528c1,_0x3b85ea){if(_0x3528c1[_0x198e('0x45')]['id']){delete _0x3528c1[_0x198e('0x45')]['id'];}return db[_0x198e('0x27')][_0x198e('0x43')]({'where':{'id':_0x3528c1[_0x198e('0x40')]['id']}})['then'](handleEntityNotFound(_0x3b85ea,null))[_0x198e('0x20')](saveUpdates(_0x3528c1[_0x198e('0x45')],null))[_0x198e('0x20')](respondWithResult(_0x3b85ea,null))[_0x198e('0x3e')](handleError(_0x3b85ea,null));};exports[_0x198e('0x21')]=function(_0x462a62,_0x2b6e06){return db[_0x198e('0x27')]['find']({'where':{'id':_0x462a62[_0x198e('0x40')]['id']}})[_0x198e('0x20')](handleEntityNotFound(_0x2b6e06,null))['then'](removeEntity(_0x2b6e06,null))[_0x198e('0x3e')](handleError(_0x2b6e06,null));};exports['getFields']=function(_0x1a824a,_0x1f97aa,_0x2e2165){var _0x3af27f={};var _0x4c5954={};var _0x49bb9c;var _0x11d941;return db[_0x198e('0x27')]['findOne']({'where':{'id':_0x1a824a[_0x198e('0x40')]['id']}})['then'](handleEntityNotFound(_0x1f97aa,null))['then'](function(_0x37fbdb){if(_0x37fbdb){_0x49bb9c=_0x37fbdb;_0x4c5954[_0x198e('0x2b')]=_[_0x198e('0x41')](db[_0x198e('0x46')][_0x198e('0x28')]);_0x4c5954['query']=_['keys'](_0x1a824a[_0x198e('0x2c')]);_0x4c5954[_0x198e('0x2d')]=_[_0x198e('0x2f')](_0x4c5954[_0x198e('0x2b')],_0x4c5954[_0x198e('0x2c')]);_0x3af27f['attributes']=_[_0x198e('0x2f')](_0x4c5954[_0x198e('0x2b')],qs[_0x198e('0x30')](_0x1a824a['query'][_0x198e('0x30')]));_0x3af27f[_0x198e('0x2e')]=_0x3af27f[_0x198e('0x2e')][_0x198e('0x47')]?_0x3af27f['attributes']:_0x4c5954['model'];_0x3af27f['order']=qs[_0x198e('0x34')](_0x1a824a['query']['sort']);_0x3af27f[_0x198e('0x35')]=qs[_0x198e('0x2d')](_[_0x198e('0x36')](_0x1a824a['query'],_0x4c5954['filters']));if(_0x1a824a[_0x198e('0x2c')]['filter']){_0x3af27f[_0x198e('0x35')]=_[_0x198e('0x38')](_0x3af27f['where'],{'$or':_['map'](_0x3af27f['attributes'],function(_0x5ad266){var _0x2f6d75={};_0x2f6d75[_0x5ad266]={'$like':'%'+_0x1a824a[_0x198e('0x2c')][_0x198e('0x37')]+'%'};return _0x2f6d75;})});}_0x3af27f=_[_0x198e('0x38')]({},_0x3af27f,_0x1a824a[_0x198e('0x3a')]);return _0x49bb9c['getFields'](_0x3af27f);}})[_0x198e('0x20')](function(_0x2723b2){if(_0x2723b2){_0x11d941=_0x2723b2['length'];if(!_0x1a824a[_0x198e('0x2c')]['hasOwnProperty'](_0x198e('0x32'))){_0x3af27f[_0x198e('0x19')]=qs[_0x198e('0x19')](_0x1a824a[_0x198e('0x2c')][_0x198e('0x19')]);_0x3af27f[_0x198e('0x18')]=qs['offset'](_0x1a824a[_0x198e('0x2c')][_0x198e('0x18')]);}return _0x49bb9c['getFields'](_0x3af27f);}})[_0x198e('0x20')](function(_0x5609d8){if(_0x5609d8){return _0x5609d8?{'count':_0x11d941,'rows':_0x5609d8}:null;}})[_0x198e('0x20')](respondWithResult(_0x1f97aa,null))[_0x198e('0x3e')](handleError(_0x1f97aa,null));};exports['getSubjects']=function(_0x595e9e,_0x12c953,_0x356407){var _0xd4713d={};var _0x41d230={};var _0x4bd94c;var _0x2dcc47;return db[_0x198e('0x27')]['findOne']({'where':{'id':_0x595e9e[_0x198e('0x40')]['id']}})[_0x198e('0x20')](handleEntityNotFound(_0x12c953,null))[_0x198e('0x20')](function(_0x19c803){if(_0x19c803){_0x4bd94c=_0x19c803;_0x41d230[_0x198e('0x2b')]=_[_0x198e('0x41')](db[_0x198e('0x46')][_0x198e('0x28')]);_0x41d230[_0x198e('0x2c')]=_[_0x198e('0x41')](_0x595e9e['query']);_0x41d230['filters']=_[_0x198e('0x2f')](_0x41d230['model'],_0x41d230[_0x198e('0x2c')]);_0xd4713d[_0x198e('0x2e')]=_[_0x198e('0x2f')](_0x41d230['model'],qs[_0x198e('0x30')](_0x595e9e[_0x198e('0x2c')][_0x198e('0x30')]));_0xd4713d[_0x198e('0x2e')]=_0xd4713d['attributes'][_0x198e('0x47')]?_0xd4713d[_0x198e('0x2e')]:_0x41d230['model'];_0xd4713d['order']=qs[_0x198e('0x34')](_0x595e9e[_0x198e('0x2c')][_0x198e('0x34')]);_0xd4713d[_0x198e('0x35')]=qs[_0x198e('0x2d')](_[_0x198e('0x36')](_0x595e9e['query'],_0x41d230[_0x198e('0x2d')]));if(_0x595e9e['query']['filter']){_0xd4713d[_0x198e('0x35')]=_[_0x198e('0x38')](_0xd4713d[_0x198e('0x35')],{'$or':_[_0x198e('0x26')](_0xd4713d[_0x198e('0x2e')],function(_0x225348){var _0x28e331={};_0x28e331[_0x225348]={'$like':'%'+_0x595e9e[_0x198e('0x2c')][_0x198e('0x37')]+'%'};return _0x28e331;})});}_0xd4713d=_[_0x198e('0x38')]({},_0xd4713d,_0x595e9e[_0x198e('0x3a')]);return _0x4bd94c['getSubjects'](_0xd4713d);}})['then'](function(_0x287e93){if(_0x287e93){_0x2dcc47=_0x287e93[_0x198e('0x47')];if(!_0x595e9e[_0x198e('0x2c')][_0x198e('0x31')](_0x198e('0x32'))){_0xd4713d[_0x198e('0x19')]=qs[_0x198e('0x19')](_0x595e9e[_0x198e('0x2c')][_0x198e('0x19')]);_0xd4713d[_0x198e('0x18')]=qs[_0x198e('0x18')](_0x595e9e[_0x198e('0x2c')][_0x198e('0x18')]);}return _0x4bd94c[_0x198e('0x48')](_0xd4713d);}})[_0x198e('0x20')](function(_0x40ad71){if(_0x40ad71){return _0x40ad71?{'count':_0x2dcc47,'rows':_0x40ad71}:null;}})[_0x198e('0x20')](respondWithResult(_0x12c953,null))[_0x198e('0x3e')](handleError(_0x12c953,null));};exports[_0x198e('0x49')]=function(_0x413033,_0x27f2ca,_0x26a63d){var _0x4b8f4d={};var _0xb3f4c1={};var _0x75423f;var _0x28884a;return db[_0x198e('0x27')][_0x198e('0x4a')]({'where':{'id':_0x413033[_0x198e('0x40')]['id']}})['then'](handleEntityNotFound(_0x27f2ca,null))['then'](function(_0xeb6a74){if(_0xeb6a74){_0x75423f=_0xeb6a74;_0xb3f4c1[_0x198e('0x2b')]=_[_0x198e('0x41')](db[_0x198e('0x46')][_0x198e('0x28')]);_0xb3f4c1['query']=_[_0x198e('0x41')](_0x413033[_0x198e('0x2c')]);_0xb3f4c1[_0x198e('0x2d')]=_['intersection'](_0xb3f4c1[_0x198e('0x2b')],_0xb3f4c1[_0x198e('0x2c')]);_0x4b8f4d[_0x198e('0x2e')]=_[_0x198e('0x2f')](_0xb3f4c1[_0x198e('0x2b')],qs['fields'](_0x413033[_0x198e('0x2c')][_0x198e('0x30')]));_0x4b8f4d[_0x198e('0x2e')]=_0x4b8f4d[_0x198e('0x2e')][_0x198e('0x47')]?_0x4b8f4d[_0x198e('0x2e')]:_0xb3f4c1[_0x198e('0x2b')];_0x4b8f4d[_0x198e('0x33')]=qs['sort'](_0x413033[_0x198e('0x2c')][_0x198e('0x34')]);_0x4b8f4d[_0x198e('0x35')]=qs[_0x198e('0x2d')](_[_0x198e('0x36')](_0x413033[_0x198e('0x2c')],_0xb3f4c1[_0x198e('0x2d')]));if(_0x413033[_0x198e('0x2c')][_0x198e('0x37')]){_0x4b8f4d[_0x198e('0x35')]=_[_0x198e('0x38')](_0x4b8f4d[_0x198e('0x35')],{'$or':_[_0x198e('0x26')](_0x4b8f4d[_0x198e('0x2e')],function(_0x17a26){var _0x5e2757={};_0x5e2757[_0x17a26]={'$like':'%'+_0x413033['query']['filter']+'%'};return _0x5e2757;})});}_0x4b8f4d=_[_0x198e('0x38')]({},_0x4b8f4d,_0x413033[_0x198e('0x3a')]);return _0x75423f[_0x198e('0x49')](_0x4b8f4d);}})[_0x198e('0x20')](function(_0x1f6702){if(_0x1f6702){_0x28884a=_0x1f6702['length'];if(!_0x413033['query']['hasOwnProperty']('nolimit')){_0x4b8f4d[_0x198e('0x19')]=qs[_0x198e('0x19')](_0x413033[_0x198e('0x2c')]['limit']);_0x4b8f4d[_0x198e('0x18')]=qs[_0x198e('0x18')](_0x413033[_0x198e('0x2c')][_0x198e('0x18')]);}return _0x75423f['getDescriptions'](_0x4b8f4d);}})[_0x198e('0x20')](function(_0x35bb16){if(_0x35bb16){return _0x35bb16?{'count':_0x28884a,'rows':_0x35bb16}:null;}})[_0x198e('0x20')](respondWithResult(_0x27f2ca,null))[_0x198e('0x3e')](handleError(_0x27f2ca,null));};
\ No newline at end of file
+var _0x4904=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','index','map','VtigerConfiguration','rawAttributes','type','key','model','name','query','keys','filters','attributes','intersection','fields','length','order','sort','where','filter','merge','options','includeAll','include','findAll','catch','show','params','create','body','find','getFields','findOne','VtigerField','pick','hasOwnProperty','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x6b5b,_0x4f74d9){var _0x33f31a=function(_0x1d9e0f){while(--_0x1d9e0f){_0x6b5b['push'](_0x6b5b['shift']());}};_0x33f31a(++_0x4f74d9);}(_0x4904,0x130));var _0x4490=function(_0x45aaae,_0x5ea9b3){_0x45aaae=_0x45aaae-0x0;var _0x237cfe=_0x4904[_0x45aaae];return _0x237cfe;};'use strict';var emlformat=require(_0x4490('0x0'));var rimraf=require(_0x4490('0x1'));var zipdir=require(_0x4490('0x2'));var jsonpatch=require(_0x4490('0x3'));var rp=require(_0x4490('0x4'));var moment=require(_0x4490('0x5'));var BPromise=require(_0x4490('0x6'));var Mustache=require('mustache');var util=require(_0x4490('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x4490('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4490('0x9'));var squel=require(_0x4490('0xa'));var crypto=require(_0x4490('0xb'));var jsforce=require(_0x4490('0xc'));var deskjs=require(_0x4490('0xd'));var toCsv=require(_0x4490('0x8'));var querystring=require(_0x4490('0xe'));var Papa=require(_0x4490('0xf'));var Redis=require(_0x4490('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x4490('0x11'));var as=require(_0x4490('0x12'));var hardwareService=require(_0x4490('0x13'));var logger=require(_0x4490('0x14'))(_0x4490('0x15'));var utils=require(_0x4490('0x16'));var config=require(_0x4490('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x4490('0x18'))['db'];function respondWithStatusCode(_0x47906b,_0x18b1dc){_0x18b1dc=_0x18b1dc||0xcc;return function(_0x570f03){if(_0x570f03){return _0x47906b[_0x4490('0x19')](_0x18b1dc);}return _0x47906b['status'](_0x18b1dc)[_0x4490('0x1a')]();};}function respondWithResult(_0x4b9602,_0x23d1a0){_0x23d1a0=_0x23d1a0||0xc8;return function(_0x3ce58c){if(_0x3ce58c){return _0x4b9602[_0x4490('0x1b')](_0x23d1a0)[_0x4490('0x1c')](_0x3ce58c);}};}function respondWithFilteredResult(_0x3f5a9a,_0x4c2bf2){return function(_0x18fa47){if(_0x18fa47){var _0x139cdf=typeof _0x4c2bf2[_0x4490('0x1d')]===_0x4490('0x1e')&&typeof _0x4c2bf2[_0x4490('0x1f')]===_0x4490('0x1e');var _0x426417=_0x18fa47[_0x4490('0x20')];var _0x2a9986=_0x139cdf?0x0:_0x4c2bf2[_0x4490('0x1d')];var _0x47d8fb=_0x139cdf?_0x18fa47[_0x4490('0x20')]:_0x4c2bf2['offset']+_0x4c2bf2[_0x4490('0x1f')];var _0x5280e2;if(_0x47d8fb>=_0x426417){_0x47d8fb=_0x426417;_0x5280e2=0xc8;}else{_0x5280e2=0xce;}_0x3f5a9a[_0x4490('0x1b')](_0x5280e2);return _0x3f5a9a[_0x4490('0x21')](_0x4490('0x22'),_0x2a9986+'-'+_0x47d8fb+'/'+_0x426417)[_0x4490('0x1c')](_0x18fa47);}return null;};}function patchUpdates(_0x415663){return function(_0x503b35){try{jsonpatch[_0x4490('0x23')](_0x503b35,_0x415663,!![]);}catch(_0x168f58){return BPromise[_0x4490('0x24')](_0x168f58);}return _0x503b35[_0x4490('0x25')]();};}function saveUpdates(_0x463505,_0x1848ad){return function(_0x543ec4){if(_0x543ec4){return _0x543ec4[_0x4490('0x26')](_0x463505)[_0x4490('0x27')](function(_0x4f62be){return _0x4f62be;});}return null;};}function removeEntity(_0x39161e,_0x5c8216){return function(_0x2ef206){if(_0x2ef206){return _0x2ef206[_0x4490('0x28')]()[_0x4490('0x27')](function(){_0x39161e[_0x4490('0x1b')](0xcc)[_0x4490('0x1a')]();});}};}function handleEntityNotFound(_0x4a7298,_0x235bf3){return function(_0x1a4489){if(!_0x1a4489){_0x4a7298[_0x4490('0x19')](0x194);}return _0x1a4489;};}function handleError(_0x17891c,_0x77deb7){_0x77deb7=_0x77deb7||0x1f4;return function(_0x206c79){logger['error'](_0x206c79[_0x4490('0x29')]);if(_0x206c79['name']){delete _0x206c79['name'];}_0x17891c[_0x4490('0x1b')](_0x77deb7)['send'](_0x206c79);};}exports[_0x4490('0x2a')]=function(_0x5327c1,_0x4eeda4){var _0x12c768={},_0x19c57f={},_0x3c7635={'count':0x0,'rows':[]};var _0x2971da=_[_0x4490('0x2b')](db[_0x4490('0x2c')][_0x4490('0x2d')],function(_0x35995e){return{'name':_0x35995e['fieldName'],'type':_0x35995e[_0x4490('0x2e')][_0x4490('0x2f')]};});_0x19c57f[_0x4490('0x30')]=_[_0x4490('0x2b')](_0x2971da,_0x4490('0x31'));_0x19c57f[_0x4490('0x32')]=_[_0x4490('0x33')](_0x5327c1['query']);_0x19c57f[_0x4490('0x34')]=_['intersection'](_0x19c57f[_0x4490('0x30')],_0x19c57f['query']);_0x12c768[_0x4490('0x35')]=_[_0x4490('0x36')](_0x19c57f['model'],qs[_0x4490('0x37')](_0x5327c1[_0x4490('0x32')][_0x4490('0x37')]));_0x12c768[_0x4490('0x35')]=_0x12c768[_0x4490('0x35')][_0x4490('0x38')]?_0x12c768[_0x4490('0x35')]:_0x19c57f[_0x4490('0x30')];if(!_0x5327c1[_0x4490('0x32')]['hasOwnProperty']('nolimit')){_0x12c768[_0x4490('0x1f')]=qs[_0x4490('0x1f')](_0x5327c1[_0x4490('0x32')][_0x4490('0x1f')]);_0x12c768[_0x4490('0x1d')]=qs[_0x4490('0x1d')](_0x5327c1[_0x4490('0x32')]['offset']);}_0x12c768[_0x4490('0x39')]=qs[_0x4490('0x3a')](_0x5327c1['query'][_0x4490('0x3a')]);_0x12c768[_0x4490('0x3b')]=qs[_0x4490('0x34')](_['pick'](_0x5327c1[_0x4490('0x32')],_0x19c57f['filters']),_0x2971da);if(_0x5327c1['query'][_0x4490('0x3c')]){_0x12c768[_0x4490('0x3b')]=_[_0x4490('0x3d')](_0x12c768[_0x4490('0x3b')],{'$or':_[_0x4490('0x2b')](_0x2971da,function(_0x20413f){if(_0x20413f[_0x4490('0x2e')]!=='VIRTUAL'){var _0x1216f2={};_0x1216f2[_0x20413f[_0x4490('0x31')]]={'$like':'%'+_0x5327c1['query'][_0x4490('0x3c')]+'%'};return _0x1216f2;}})});}_0x12c768=_['merge']({},_0x12c768,_0x5327c1[_0x4490('0x3e')]);var _0x35dc93={'where':_0x12c768[_0x4490('0x3b')]};return db['VtigerConfiguration'][_0x4490('0x20')](_0x35dc93)[_0x4490('0x27')](function(_0x4edf6a){_0x3c7635['count']=_0x4edf6a;if(_0x5327c1[_0x4490('0x32')][_0x4490('0x3f')]){_0x12c768[_0x4490('0x40')]=[{'all':!![]}];}return db[_0x4490('0x2c')][_0x4490('0x41')](_0x12c768);})[_0x4490('0x27')](function(_0x19695f){_0x3c7635['rows']=_0x19695f;return _0x3c7635;})[_0x4490('0x27')](respondWithFilteredResult(_0x4eeda4,_0x12c768))[_0x4490('0x42')](handleError(_0x4eeda4,null));};exports[_0x4490('0x43')]=function(_0x279e05,_0x5e1b05){var _0xe366f5={'raw':![],'where':{'id':_0x279e05[_0x4490('0x44')]['id']}},_0xe514dd={};_0xe514dd[_0x4490('0x30')]=_[_0x4490('0x33')](db[_0x4490('0x2c')][_0x4490('0x2d')]);_0xe514dd['query']=_[_0x4490('0x33')](_0x279e05[_0x4490('0x32')]);_0xe514dd[_0x4490('0x34')]=_[_0x4490('0x36')](_0xe514dd['model'],_0xe514dd[_0x4490('0x32')]);_0xe366f5[_0x4490('0x35')]=_[_0x4490('0x36')](_0xe514dd[_0x4490('0x30')],qs[_0x4490('0x37')](_0x279e05[_0x4490('0x32')][_0x4490('0x37')]));_0xe366f5[_0x4490('0x35')]=_0xe366f5[_0x4490('0x35')][_0x4490('0x38')]?_0xe366f5[_0x4490('0x35')]:_0xe514dd[_0x4490('0x30')];if(_0x279e05[_0x4490('0x32')][_0x4490('0x3f')]){_0xe366f5[_0x4490('0x40')]=[{'all':!![]}];}_0xe366f5=_[_0x4490('0x3d')]({},_0xe366f5,_0x279e05[_0x4490('0x3e')]);return db[_0x4490('0x2c')]['find'](_0xe366f5)[_0x4490('0x27')](handleEntityNotFound(_0x5e1b05,null))[_0x4490('0x27')](respondWithResult(_0x5e1b05,null))[_0x4490('0x42')](handleError(_0x5e1b05,null));};exports[_0x4490('0x45')]=function(_0x579f12,_0x4ee1de){return db['VtigerConfiguration'][_0x4490('0x45')](_0x579f12[_0x4490('0x46')],{})[_0x4490('0x27')](respondWithResult(_0x4ee1de,0xc9))[_0x4490('0x42')](handleError(_0x4ee1de,null));};exports['update']=function(_0x49c081,_0xa5ac7e){if(_0x49c081[_0x4490('0x46')]['id']){delete _0x49c081[_0x4490('0x46')]['id'];}return db[_0x4490('0x2c')]['find']({'where':{'id':_0x49c081[_0x4490('0x44')]['id']}})['then'](handleEntityNotFound(_0xa5ac7e,null))['then'](saveUpdates(_0x49c081[_0x4490('0x46')],null))['then'](respondWithResult(_0xa5ac7e,null))['catch'](handleError(_0xa5ac7e,null));};exports[_0x4490('0x28')]=function(_0x4ab42a,_0x315539){return db[_0x4490('0x2c')][_0x4490('0x47')]({'where':{'id':_0x4ab42a['params']['id']}})[_0x4490('0x27')](handleEntityNotFound(_0x315539,null))[_0x4490('0x27')](removeEntity(_0x315539,null))[_0x4490('0x42')](handleError(_0x315539,null));};exports[_0x4490('0x48')]=function(_0x521999,_0x42d148,_0x398036){var _0x38c18d={};var _0x5870bf={};var _0x26114b;var _0x288bd5;return db['VtigerConfiguration'][_0x4490('0x49')]({'where':{'id':_0x521999[_0x4490('0x44')]['id']}})[_0x4490('0x27')](handleEntityNotFound(_0x42d148,null))[_0x4490('0x27')](function(_0xee94ea){if(_0xee94ea){_0x26114b=_0xee94ea;_0x5870bf['model']=_[_0x4490('0x33')](db[_0x4490('0x4a')][_0x4490('0x2d')]);_0x5870bf['query']=_[_0x4490('0x33')](_0x521999[_0x4490('0x32')]);_0x5870bf[_0x4490('0x34')]=_[_0x4490('0x36')](_0x5870bf[_0x4490('0x30')],_0x5870bf['query']);_0x38c18d[_0x4490('0x35')]=_['intersection'](_0x5870bf[_0x4490('0x30')],qs[_0x4490('0x37')](_0x521999[_0x4490('0x32')][_0x4490('0x37')]));_0x38c18d['attributes']=_0x38c18d[_0x4490('0x35')]['length']?_0x38c18d[_0x4490('0x35')]:_0x5870bf[_0x4490('0x30')];_0x38c18d['order']=qs['sort'](_0x521999[_0x4490('0x32')][_0x4490('0x3a')]);_0x38c18d[_0x4490('0x3b')]=qs['filters'](_[_0x4490('0x4b')](_0x521999[_0x4490('0x32')],_0x5870bf[_0x4490('0x34')]));if(_0x521999['query'][_0x4490('0x3c')]){_0x38c18d['where']=_[_0x4490('0x3d')](_0x38c18d[_0x4490('0x3b')],{'$or':_[_0x4490('0x2b')](_0x38c18d[_0x4490('0x35')],function(_0x2c81c4){var _0x5d98ee={};_0x5d98ee[_0x2c81c4]={'$like':'%'+_0x521999[_0x4490('0x32')]['filter']+'%'};return _0x5d98ee;})});}_0x38c18d=_[_0x4490('0x3d')]({},_0x38c18d,_0x521999['options']);return _0x26114b['getFields'](_0x38c18d);}})[_0x4490('0x27')](function(_0xc46e78){if(_0xc46e78){_0x288bd5=_0xc46e78[_0x4490('0x38')];if(!_0x521999[_0x4490('0x32')][_0x4490('0x4c')](_0x4490('0x4d'))){_0x38c18d['limit']=qs[_0x4490('0x1f')](_0x521999[_0x4490('0x32')]['limit']);_0x38c18d['offset']=qs[_0x4490('0x1d')](_0x521999[_0x4490('0x32')]['offset']);}return _0x26114b[_0x4490('0x48')](_0x38c18d);}})[_0x4490('0x27')](function(_0x2afd21){if(_0x2afd21){return _0x2afd21?{'count':_0x288bd5,'rows':_0x2afd21}:null;}})[_0x4490('0x27')](respondWithResult(_0x42d148,null))[_0x4490('0x42')](handleError(_0x42d148,null));};exports['getSubjects']=function(_0x189622,_0x3fa045,_0x14a007){var _0x1ae657={};var _0x16e42f={};var _0x4f7dc5;var _0xc5599a;return db['VtigerConfiguration'][_0x4490('0x49')]({'where':{'id':_0x189622['params']['id']}})['then'](handleEntityNotFound(_0x3fa045,null))['then'](function(_0x5db42f){if(_0x5db42f){_0x4f7dc5=_0x5db42f;_0x16e42f[_0x4490('0x30')]=_[_0x4490('0x33')](db['VtigerField'][_0x4490('0x2d')]);_0x16e42f[_0x4490('0x32')]=_[_0x4490('0x33')](_0x189622[_0x4490('0x32')]);_0x16e42f[_0x4490('0x34')]=_[_0x4490('0x36')](_0x16e42f[_0x4490('0x30')],_0x16e42f['query']);_0x1ae657['attributes']=_[_0x4490('0x36')](_0x16e42f[_0x4490('0x30')],qs[_0x4490('0x37')](_0x189622[_0x4490('0x32')][_0x4490('0x37')]));_0x1ae657[_0x4490('0x35')]=_0x1ae657[_0x4490('0x35')][_0x4490('0x38')]?_0x1ae657[_0x4490('0x35')]:_0x16e42f[_0x4490('0x30')];_0x1ae657[_0x4490('0x39')]=qs['sort'](_0x189622[_0x4490('0x32')][_0x4490('0x3a')]);_0x1ae657[_0x4490('0x3b')]=qs['filters'](_[_0x4490('0x4b')](_0x189622[_0x4490('0x32')],_0x16e42f[_0x4490('0x34')]));if(_0x189622[_0x4490('0x32')][_0x4490('0x3c')]){_0x1ae657['where']=_['merge'](_0x1ae657['where'],{'$or':_[_0x4490('0x2b')](_0x1ae657[_0x4490('0x35')],function(_0xa66c1e){var _0x55bcaf={};_0x55bcaf[_0xa66c1e]={'$like':'%'+_0x189622[_0x4490('0x32')]['filter']+'%'};return _0x55bcaf;})});}_0x1ae657=_['merge']({},_0x1ae657,_0x189622[_0x4490('0x3e')]);return _0x4f7dc5[_0x4490('0x4e')](_0x1ae657);}})[_0x4490('0x27')](function(_0x724615){if(_0x724615){_0xc5599a=_0x724615[_0x4490('0x38')];if(!_0x189622[_0x4490('0x32')][_0x4490('0x4c')](_0x4490('0x4d'))){_0x1ae657[_0x4490('0x1f')]=qs[_0x4490('0x1f')](_0x189622[_0x4490('0x32')][_0x4490('0x1f')]);_0x1ae657['offset']=qs['offset'](_0x189622['query'][_0x4490('0x1d')]);}return _0x4f7dc5[_0x4490('0x4e')](_0x1ae657);}})[_0x4490('0x27')](function(_0x15e321){if(_0x15e321){return _0x15e321?{'count':_0xc5599a,'rows':_0x15e321}:null;}})['then'](respondWithResult(_0x3fa045,null))[_0x4490('0x42')](handleError(_0x3fa045,null));};exports[_0x4490('0x4f')]=function(_0x2c33e6,_0x3aacce,_0x48d0d){var _0x74c787={};var _0x51b9cb={};var _0x497ad8;var _0x223779;return db[_0x4490('0x2c')]['findOne']({'where':{'id':_0x2c33e6['params']['id']}})['then'](handleEntityNotFound(_0x3aacce,null))[_0x4490('0x27')](function(_0x329586){if(_0x329586){_0x497ad8=_0x329586;_0x51b9cb[_0x4490('0x30')]=_[_0x4490('0x33')](db['VtigerField'][_0x4490('0x2d')]);_0x51b9cb[_0x4490('0x32')]=_[_0x4490('0x33')](_0x2c33e6[_0x4490('0x32')]);_0x51b9cb['filters']=_[_0x4490('0x36')](_0x51b9cb['model'],_0x51b9cb[_0x4490('0x32')]);_0x74c787[_0x4490('0x35')]=_[_0x4490('0x36')](_0x51b9cb['model'],qs['fields'](_0x2c33e6['query']['fields']));_0x74c787[_0x4490('0x35')]=_0x74c787['attributes'][_0x4490('0x38')]?_0x74c787[_0x4490('0x35')]:_0x51b9cb['model'];_0x74c787[_0x4490('0x39')]=qs[_0x4490('0x3a')](_0x2c33e6[_0x4490('0x32')]['sort']);_0x74c787[_0x4490('0x3b')]=qs[_0x4490('0x34')](_[_0x4490('0x4b')](_0x2c33e6['query'],_0x51b9cb['filters']));if(_0x2c33e6[_0x4490('0x32')][_0x4490('0x3c')]){_0x74c787[_0x4490('0x3b')]=_[_0x4490('0x3d')](_0x74c787['where'],{'$or':_[_0x4490('0x2b')](_0x74c787[_0x4490('0x35')],function(_0x2ef3f8){var _0x3d982d={};_0x3d982d[_0x2ef3f8]={'$like':'%'+_0x2c33e6[_0x4490('0x32')][_0x4490('0x3c')]+'%'};return _0x3d982d;})});}_0x74c787=_[_0x4490('0x3d')]({},_0x74c787,_0x2c33e6['options']);return _0x497ad8[_0x4490('0x4f')](_0x74c787);}})[_0x4490('0x27')](function(_0x18ec59){if(_0x18ec59){_0x223779=_0x18ec59['length'];if(!_0x2c33e6[_0x4490('0x32')][_0x4490('0x4c')](_0x4490('0x4d'))){_0x74c787[_0x4490('0x1f')]=qs[_0x4490('0x1f')](_0x2c33e6[_0x4490('0x32')][_0x4490('0x1f')]);_0x74c787[_0x4490('0x1d')]=qs[_0x4490('0x1d')](_0x2c33e6[_0x4490('0x32')]['offset']);}return _0x497ad8[_0x4490('0x4f')](_0x74c787);}})['then'](function(_0x37d49a){if(_0x37d49a){return _0x37d49a?{'count':_0x223779,'rows':_0x37d49a}:null;}})[_0x4490('0x27')](respondWithResult(_0x3aacce,null))[_0x4490('0x42')](handleError(_0x3aacce,null));};
\ No newline at end of file
index 2469b79..59dfbd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfbc=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','lodash'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xcfbc,0x1ed));var _0xccfb=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xcfbc[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xccfb('0x0'));var util=require(_0xccfb('0x1'));var logger=require(_0xccfb('0x2'))('api');var moment=require(_0xccfb('0x3'));var BPromise=require(_0xccfb('0x4'));var rp=require(_0xccfb('0x5'));var fs=require('fs');var path=require(_0xccfb('0x6'));var rimraf=require(_0xccfb('0x7'));var config=require(_0xccfb('0x8'));var attributes=require(_0xccfb('0x9'));module[_0xccfb('0xa')]=function(_0xd101c7,_0x20e548){return _0xd101c7[_0xccfb('0xb')](_0xccfb('0xc'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa8aa=['rimraf','define','VtigerConfiguration','int_vtiger_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3f4891,_0x4e6f62){var _0x54f2d8=function(_0x2b11ee){while(--_0x2b11ee){_0x3f4891['push'](_0x3f4891['shift']());}};_0x54f2d8(++_0x4e6f62);}(_0xa8aa,0xc4));var _0xaa8a=function(_0x35e065,_0x48d71c){_0x35e065=_0x35e065-0x0;var _0x6849c8=_0xa8aa[_0x35e065];return _0x6849c8;};'use strict';var _=require(_0xaa8a('0x0'));var util=require(_0xaa8a('0x1'));var logger=require(_0xaa8a('0x2'))(_0xaa8a('0x3'));var moment=require(_0xaa8a('0x4'));var BPromise=require(_0xaa8a('0x5'));var rp=require(_0xaa8a('0x6'));var fs=require('fs');var path=require(_0xaa8a('0x7'));var rimraf=require(_0xaa8a('0x8'));var config=require('../../config/environment');var attributes=require('./intVtigerConfiguration.attributes');module['exports']=function(_0x4d1767,_0xedae78){return _0x4d1767[_0xaa8a('0x9')](_0xaa8a('0xa'),attributes,{'tableName':_0xaa8a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dbed8ff..89cd413 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ab0=['ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','VtigerConfiguration,\x20%s,\x20%s','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x3f441c,_0x43bf79){var _0x165313=function(_0x303dbb){while(--_0x303dbb){_0x3f441c['push'](_0x3f441c['shift']());}};_0x165313(++_0x43bf79);}(_0x6ab0,0x1b0));var _0x06ab=function(_0x23870f,_0x553470){_0x23870f=_0x23870f-0x0;var _0x3b3416=_0x6ab0[_0x23870f];return _0x3b3416;};'use strict';var _=require(_0x06ab('0x0'));var util=require(_0x06ab('0x1'));var moment=require(_0x06ab('0x2'));var BPromise=require(_0x06ab('0x3'));var rs=require(_0x06ab('0x4'));var fs=require('fs');var Redis=require(_0x06ab('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x06ab('0x6'));var logger=require(_0x06ab('0x7'))(_0x06ab('0x8'));var config=require('../../config/environment');var jayson=require(_0x06ab('0x9'));var client=jayson[_0x06ab('0xa')][_0x06ab('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3a2798,_0x4d0e48,_0xb08468){return new BPromise(function(_0x126abb,_0x569177){return client[_0x06ab('0xc')](_0x3a2798,_0xb08468)['then'](function(_0x42d0ee){logger[_0x06ab('0xd')](_0x06ab('0xe'),_0x4d0e48,'request\x20sent');logger[_0x06ab('0xf')](_0x06ab('0x10'),_0x4d0e48,_0x06ab('0x11'),JSON['stringify'](_0x42d0ee));if(_0x42d0ee[_0x06ab('0x12')]){if(_0x42d0ee[_0x06ab('0x12')][_0x06ab('0x13')]===0x1f4){logger[_0x06ab('0x12')](_0x06ab('0xe'),_0x4d0e48,_0x42d0ee[_0x06ab('0x12')][_0x06ab('0x14')]);return _0x569177(_0x42d0ee['error'][_0x06ab('0x14')]);}logger[_0x06ab('0x12')](_0x06ab('0xe'),_0x4d0e48,_0x42d0ee[_0x06ab('0x12')]['message']);return _0x126abb(_0x42d0ee[_0x06ab('0x12')][_0x06ab('0x14')]);}else{logger[_0x06ab('0xd')](_0x06ab('0xe'),_0x4d0e48,_0x06ab('0x11'));_0x126abb(_0x42d0ee[_0x06ab('0x15')][_0x06ab('0x14')]);}})[_0x06ab('0x16')](function(_0x408a5e){logger[_0x06ab('0x12')]('VtigerConfiguration,\x20%s,\x20%s',_0x4d0e48,_0x408a5e);_0x569177(_0x408a5e);});});}
\ No newline at end of file
+var _0x91ae=['http','request','then','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x91ae,0x11c));var _0xe91a=function(_0x42c42c,_0x1cefd9){_0x42c42c=_0x42c42c-0x0;var _0x5ef5cf=_0x91ae[_0x42c42c];return _0x5ef5cf;};'use strict';var _=require('lodash');var util=require(_0xe91a('0x0'));var moment=require('moment');var BPromise=require(_0xe91a('0x1'));var rs=require(_0xe91a('0x2'));var fs=require('fs');var Redis=require(_0xe91a('0x3'));var db=require(_0xe91a('0x4'))['db'];var utils=require(_0xe91a('0x5'));var logger=require(_0xe91a('0x6'))('rpc');var config=require(_0xe91a('0x7'));var jayson=require(_0xe91a('0x8'));var client=jayson[_0xe91a('0x9')][_0xe91a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x295a00,_0x16a15f,_0x3bfd7f){return new BPromise(function(_0x86070,_0x300ef2){return client[_0xe91a('0xb')](_0x295a00,_0x3bfd7f)[_0xe91a('0xc')](function(_0x27105d){logger['info'](_0xe91a('0xd'),_0x16a15f,_0xe91a('0xe'));logger['debug']('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x16a15f,_0xe91a('0xe'),JSON[_0xe91a('0xf')](_0x27105d));if(_0x27105d[_0xe91a('0x10')]){if(_0x27105d[_0xe91a('0x10')]['code']===0x1f4){logger[_0xe91a('0x10')](_0xe91a('0xd'),_0x16a15f,_0x27105d[_0xe91a('0x10')][_0xe91a('0x11')]);return _0x300ef2(_0x27105d['error'][_0xe91a('0x11')]);}logger[_0xe91a('0x10')](_0xe91a('0xd'),_0x16a15f,_0x27105d[_0xe91a('0x10')][_0xe91a('0x11')]);return _0x86070(_0x27105d[_0xe91a('0x10')]['message']);}else{logger[_0xe91a('0x12')](_0xe91a('0xd'),_0x16a15f,_0xe91a('0xe'));_0x86070(_0x27105d[_0xe91a('0x13')][_0xe91a('0x11')]);}})[_0xe91a('0x14')](function(_0x265a50){logger[_0xe91a('0x10')](_0xe91a('0xd'),_0x16a15f,_0x265a50);_0x300ef2(_0x265a50);});});}
\ No newline at end of file
index 1ec8a3a..adbece3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9c6=['exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','/:id','show','post','isAuthenticated','update','delete'];(function(_0x2a0127,_0x345ec1){var _0x4fcff4=function(_0x45ef62){while(--_0x45ef62){_0x2a0127['push'](_0x2a0127['shift']());}};_0x4fcff4(++_0x345ec1);}(_0xd9c6,0x122));var _0x6d9c=function(_0xedc8f9,_0x5b789d){_0xedc8f9=_0xedc8f9-0x0;var _0x558dff=_0xd9c6[_0xedc8f9];return _0x558dff;};'use strict';var multer=require(_0x6d9c('0x0'));var util=require(_0x6d9c('0x1'));var path=require(_0x6d9c('0x2'));var timeout=require('connect-timeout');var express=require(_0x6d9c('0x3'));var router=express[_0x6d9c('0x4')]();var fs_extra=require(_0x6d9c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6d9c('0x6'));var config=require(_0x6d9c('0x7'));var controller=require(_0x6d9c('0x8'));router[_0x6d9c('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6d9c('0x9')](_0x6d9c('0xa'),auth['isAuthenticated'](),controller[_0x6d9c('0xb')]);router[_0x6d9c('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x6d9c('0xa'),auth[_0x6d9c('0xd')](),controller[_0x6d9c('0xe')]);router[_0x6d9c('0xf')](_0x6d9c('0xa'),auth[_0x6d9c('0xd')](),controller['destroy']);module[_0x6d9c('0x10')]=router;
\ No newline at end of file
+var _0x8743=['../../config/environment','get','isAuthenticated','index','/:id','show','create','update','delete','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service'];(function(_0x2f31bb,_0x564878){var _0x85a3c0=function(_0x40eb74){while(--_0x40eb74){_0x2f31bb['push'](_0x2f31bb['shift']());}};_0x85a3c0(++_0x564878);}(_0x8743,0x159));var _0x3874=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x8743[_0x1035c1];return _0x308d67;};'use strict';var multer=require('multer');var util=require(_0x3874('0x0'));var path=require(_0x3874('0x1'));var timeout=require(_0x3874('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3874('0x3'));var interaction=require(_0x3874('0x4'));var config=require(_0x3874('0x5'));var controller=require('./intVtigerField.controller');router[_0x3874('0x6')]('/',auth[_0x3874('0x7')](),controller[_0x3874('0x8')]);router['get'](_0x3874('0x9'),auth[_0x3874('0x7')](),controller[_0x3874('0xa')]);router['post']('/',auth[_0x3874('0x7')](),controller[_0x3874('0xb')]);router['put'](_0x3874('0x9'),auth[_0x3874('0x7')](),controller[_0x3874('0xc')]);router[_0x3874('0xd')]('/:id',auth[_0x3874('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 42406a5..ff7a62d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ba7=['string','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','ENUM'];(function(_0x48c5f6,_0x467809){var _0x5517a4=function(_0x48d762){while(--_0x48d762){_0x48c5f6['push'](_0x48c5f6['shift']());}};_0x5517a4(++_0x467809);}(_0x5ba7,0x106));var _0x75ba=function(_0xfaed85,_0x1502b1){_0xfaed85=_0xfaed85-0x0;var _0xf03331=_0x5ba7[_0xfaed85];return _0xf03331;};'use strict';var Sequelize=require(_0x75ba('0x0'));module['exports']={'type':{'type':Sequelize[_0x75ba('0x1')](_0x75ba('0x2'),'variable',_0x75ba('0x3'),_0x75ba('0x4'),_0x75ba('0x5')),'defaultValue':_0x75ba('0x2')},'content':{'type':Sequelize[_0x75ba('0x6')]},'key':{'type':Sequelize[_0x75ba('0x6')]},'keyType':{'type':Sequelize[_0x75ba('0x1')](_0x75ba('0x2'),'variable',_0x75ba('0x3'))},'keyContent':{'type':Sequelize[_0x75ba('0x6')]},'idField':{'type':Sequelize[_0x75ba('0x6')]},'nameField':{'type':Sequelize[_0x75ba('0x6')]},'customField':{'type':Sequelize[_0x75ba('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x75ba('0x6')]}};
\ No newline at end of file
+var _0x5aaa=['customVariable','BOOLEAN','sequelize','exports','ENUM','string','variable','keyValue','picklist','STRING'];(function(_0x2099c5,_0xfa67bd){var _0x49b446=function(_0x163ace){while(--_0x163ace){_0x2099c5['push'](_0x2099c5['shift']());}};_0x49b446(++_0xfa67bd);}(_0x5aaa,0x98));var _0xa5aa=function(_0x4d2eb6,_0x19dd98){_0x4d2eb6=_0x4d2eb6-0x0;var _0x4217ad=_0x5aaa[_0x4d2eb6];return _0x4217ad;};'use strict';var Sequelize=require(_0xa5aa('0x0'));module[_0xa5aa('0x1')]={'type':{'type':Sequelize[_0xa5aa('0x2')](_0xa5aa('0x3'),_0xa5aa('0x4'),'customVariable',_0xa5aa('0x5'),_0xa5aa('0x6')),'defaultValue':_0xa5aa('0x3')},'content':{'type':Sequelize[_0xa5aa('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xa5aa('0x2')]('string','variable',_0xa5aa('0x8'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xa5aa('0x7')]},'nameField':{'type':Sequelize[_0xa5aa('0x7')]},'customField':{'type':Sequelize[_0xa5aa('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xa5aa('0x7')]}};
\ No newline at end of file
index 0cd58aa..2058b72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0331=['create','body','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','index','VtigerField','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find'];(function(_0xd0eaf6,_0x3a921e){var _0x3dae2a=function(_0x239807){while(--_0x239807){_0xd0eaf6['push'](_0xd0eaf6['shift']());}};_0x3dae2a(++_0x3a921e);}(_0x0331,0x179));var _0x1033=function(_0x2b9cf5,_0x2a7804){_0x2b9cf5=_0x2b9cf5-0x0;var _0xd0cf15=_0x0331[_0x2b9cf5];return _0xd0cf15;};'use strict';var emlformat=require(_0x1033('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x1033('0x1'));var rp=require(_0x1033('0x2'));var moment=require(_0x1033('0x3'));var BPromise=require(_0x1033('0x4'));var Mustache=require(_0x1033('0x5'));var util=require(_0x1033('0x6'));var path=require(_0x1033('0x7'));var sox=require(_0x1033('0x8'));var csv=require(_0x1033('0x9'));var ejs=require(_0x1033('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1033('0xb'));var crypto=require('crypto');var jsforce=require(_0x1033('0xc'));var deskjs=require(_0x1033('0xd'));var toCsv=require(_0x1033('0x9'));var querystring=require(_0x1033('0xe'));var Papa=require(_0x1033('0xf'));var Redis=require('ioredis');var authService=require(_0x1033('0x10'));var qs=require(_0x1033('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1033('0x12'));var logger=require(_0x1033('0x13'))(_0x1033('0x14'));var utils=require(_0x1033('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1033('0x16'));var db=require(_0x1033('0x17'))['db'];function respondWithStatusCode(_0x4aa325,_0x2b74aa){_0x2b74aa=_0x2b74aa||0xcc;return function(_0x545007){if(_0x545007){return _0x4aa325[_0x1033('0x18')](_0x2b74aa);}return _0x4aa325[_0x1033('0x19')](_0x2b74aa)[_0x1033('0x1a')]();};}function respondWithResult(_0x5661cf,_0x4fa756){_0x4fa756=_0x4fa756||0xc8;return function(_0x1be2ed){if(_0x1be2ed){return _0x5661cf['status'](_0x4fa756)[_0x1033('0x1b')](_0x1be2ed);}};}function respondWithFilteredResult(_0x32aadf,_0x2961e7){return function(_0xf601d0){if(_0xf601d0){var _0x222e8b=typeof _0x2961e7['offset']===_0x1033('0x1c')&&typeof _0x2961e7[_0x1033('0x1d')]===_0x1033('0x1c');var _0x1da80a=_0xf601d0[_0x1033('0x1e')];var _0x5974e0=_0x222e8b?0x0:_0x2961e7[_0x1033('0x1f')];var _0x249cd3=_0x222e8b?_0xf601d0[_0x1033('0x1e')]:_0x2961e7[_0x1033('0x1f')]+_0x2961e7['limit'];var _0x4bd2ff;if(_0x249cd3>=_0x1da80a){_0x249cd3=_0x1da80a;_0x4bd2ff=0xc8;}else{_0x4bd2ff=0xce;}_0x32aadf[_0x1033('0x19')](_0x4bd2ff);return _0x32aadf[_0x1033('0x20')](_0x1033('0x21'),_0x5974e0+'-'+_0x249cd3+'/'+_0x1da80a)[_0x1033('0x1b')](_0xf601d0);}return null;};}function patchUpdates(_0x175406){return function(_0x2c33b9){try{jsonpatch[_0x1033('0x22')](_0x2c33b9,_0x175406,!![]);}catch(_0x56e965){return BPromise[_0x1033('0x23')](_0x56e965);}return _0x2c33b9['save']();};}function saveUpdates(_0x1eff3d,_0x34d329){return function(_0x1dcb4d){if(_0x1dcb4d){return _0x1dcb4d['update'](_0x1eff3d)[_0x1033('0x24')](function(_0x4be8df){return _0x4be8df;});}return null;};}function removeEntity(_0x33810d,_0x12449a){return function(_0x119b60){if(_0x119b60){return _0x119b60[_0x1033('0x25')]()[_0x1033('0x24')](function(){_0x33810d['status'](0xcc)[_0x1033('0x1a')]();});}};}function handleEntityNotFound(_0x20bf05,_0x280cc8){return function(_0x4e5750){if(!_0x4e5750){_0x20bf05[_0x1033('0x18')](0x194);}return _0x4e5750;};}function handleError(_0x5eeeef,_0x37d3ef){_0x37d3ef=_0x37d3ef||0x1f4;return function(_0x16b472){logger[_0x1033('0x26')](_0x16b472[_0x1033('0x27')]);if(_0x16b472[_0x1033('0x28')]){delete _0x16b472['name'];}_0x5eeeef['status'](_0x37d3ef)[_0x1033('0x29')](_0x16b472);};}exports[_0x1033('0x2a')]=function(_0xefb2f,_0x4d2241){var _0x49974c={},_0xb7af57={},_0x25d92c={'count':0x0,'rows':[]};var _0x21efac=_['map'](db[_0x1033('0x2b')][_0x1033('0x2c')],function(_0x489072){return{'name':_0x489072[_0x1033('0x2d')],'type':_0x489072[_0x1033('0x2e')][_0x1033('0x2f')]};});_0xb7af57[_0x1033('0x30')]=_[_0x1033('0x31')](_0x21efac,_0x1033('0x28'));_0xb7af57[_0x1033('0x32')]=_[_0x1033('0x33')](_0xefb2f['query']);_0xb7af57[_0x1033('0x34')]=_[_0x1033('0x35')](_0xb7af57[_0x1033('0x30')],_0xb7af57['query']);_0x49974c['attributes']=_[_0x1033('0x35')](_0xb7af57[_0x1033('0x30')],qs[_0x1033('0x36')](_0xefb2f[_0x1033('0x32')][_0x1033('0x36')]));_0x49974c[_0x1033('0x37')]=_0x49974c[_0x1033('0x37')]['length']?_0x49974c[_0x1033('0x37')]:_0xb7af57[_0x1033('0x30')];if(!_0xefb2f['query'][_0x1033('0x38')](_0x1033('0x39'))){_0x49974c[_0x1033('0x1d')]=qs[_0x1033('0x1d')](_0xefb2f[_0x1033('0x32')][_0x1033('0x1d')]);_0x49974c[_0x1033('0x1f')]=qs[_0x1033('0x1f')](_0xefb2f[_0x1033('0x32')]['offset']);}_0x49974c[_0x1033('0x3a')]=qs[_0x1033('0x3b')](_0xefb2f[_0x1033('0x32')][_0x1033('0x3b')]);_0x49974c[_0x1033('0x3c')]=qs[_0x1033('0x34')](_['pick'](_0xefb2f['query'],_0xb7af57[_0x1033('0x34')]),_0x21efac);if(_0xefb2f[_0x1033('0x32')][_0x1033('0x3d')]){_0x49974c['where']=_['merge'](_0x49974c[_0x1033('0x3c')],{'$or':_['map'](_0x21efac,function(_0x2bc27a){if(_0x2bc27a[_0x1033('0x2e')]!==_0x1033('0x3e')){var _0x2d4323={};_0x2d4323[_0x2bc27a[_0x1033('0x28')]]={'$like':'%'+_0xefb2f[_0x1033('0x32')][_0x1033('0x3d')]+'%'};return _0x2d4323;}})});}_0x49974c=_[_0x1033('0x3f')]({},_0x49974c,_0xefb2f[_0x1033('0x40')]);var _0x3666d4={'where':_0x49974c[_0x1033('0x3c')]};return db[_0x1033('0x2b')][_0x1033('0x1e')](_0x3666d4)['then'](function(_0x3f7cc1){_0x25d92c[_0x1033('0x1e')]=_0x3f7cc1;if(_0xefb2f['query'][_0x1033('0x41')]){_0x49974c[_0x1033('0x42')]=[{'all':!![]}];}return db[_0x1033('0x2b')][_0x1033('0x43')](_0x49974c);})[_0x1033('0x24')](function(_0x59ff04){_0x25d92c[_0x1033('0x44')]=_0x59ff04;return _0x25d92c;})['then'](respondWithFilteredResult(_0x4d2241,_0x49974c))[_0x1033('0x45')](handleError(_0x4d2241,null));};exports[_0x1033('0x46')]=function(_0x3dc808,_0x19a25b){var _0x2148c0={'raw':!![],'where':{'id':_0x3dc808[_0x1033('0x47')]['id']}},_0x2e3c8f={};_0x2e3c8f['model']=_[_0x1033('0x33')](db['VtigerField']['rawAttributes']);_0x2e3c8f[_0x1033('0x32')]=_['keys'](_0x3dc808['query']);_0x2e3c8f[_0x1033('0x34')]=_[_0x1033('0x35')](_0x2e3c8f['model'],_0x2e3c8f[_0x1033('0x32')]);_0x2148c0[_0x1033('0x37')]=_[_0x1033('0x35')](_0x2e3c8f[_0x1033('0x30')],qs[_0x1033('0x36')](_0x3dc808[_0x1033('0x32')]['fields']));_0x2148c0[_0x1033('0x37')]=_0x2148c0[_0x1033('0x37')]['length']?_0x2148c0[_0x1033('0x37')]:_0x2e3c8f[_0x1033('0x30')];if(_0x3dc808[_0x1033('0x32')][_0x1033('0x41')]){_0x2148c0[_0x1033('0x42')]=[{'all':!![]}];}_0x2148c0=_[_0x1033('0x3f')]({},_0x2148c0,_0x3dc808[_0x1033('0x40')]);return db[_0x1033('0x2b')][_0x1033('0x48')](_0x2148c0)[_0x1033('0x24')](handleEntityNotFound(_0x19a25b,null))[_0x1033('0x24')](respondWithResult(_0x19a25b,null))[_0x1033('0x45')](handleError(_0x19a25b,null));};exports[_0x1033('0x49')]=function(_0x3ecc43,_0x445aaf){return db[_0x1033('0x2b')]['create'](_0x3ecc43['body'],{})[_0x1033('0x24')](respondWithResult(_0x445aaf,0xc9))[_0x1033('0x45')](handleError(_0x445aaf,null));};exports['update']=function(_0x909903,_0x2aa390){if(_0x909903['body']['id']){delete _0x909903[_0x1033('0x4a')]['id'];}return db[_0x1033('0x2b')][_0x1033('0x48')]({'where':{'id':_0x909903['params']['id']}})['then'](handleEntityNotFound(_0x2aa390,null))[_0x1033('0x24')](saveUpdates(_0x909903[_0x1033('0x4a')],null))[_0x1033('0x24')](respondWithResult(_0x2aa390,null))[_0x1033('0x45')](handleError(_0x2aa390,null));};exports[_0x1033('0x25')]=function(_0x32f7ef,_0xeb35ac){return db['VtigerField'][_0x1033('0x48')]({'where':{'id':_0x32f7ef[_0x1033('0x47')]['id']}})[_0x1033('0x24')](handleEntityNotFound(_0xeb35ac,null))[_0x1033('0x24')](removeEntity(_0xeb35ac,null))[_0x1033('0x45')](handleError(_0xeb35ac,null));};
\ No newline at end of file
+var _0xf263=['fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','apply','reject','update','then','error','stack','send','index','map','VtigerField','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','name','options','includeAll','include','findAll','rows','show','params','create','body','catch','find','destroy','eml-format'];(function(_0x5749c3,_0x384414){var _0x1c636f=function(_0x24cbf1){while(--_0x24cbf1){_0x5749c3['push'](_0x5749c3['shift']());}};_0x1c636f(++_0x384414);}(_0xf263,0x176));var _0x3f26=function(_0x2fa1c6,_0x4a5b8d){_0x2fa1c6=_0x2fa1c6-0x0;var _0x5f3257=_0xf263[_0x2fa1c6];return _0x5f3257;};'use strict';var emlformat=require(_0x3f26('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3f26('0x1'));var rp=require(_0x3f26('0x2'));var moment=require(_0x3f26('0x3'));var BPromise=require(_0x3f26('0x4'));var Mustache=require(_0x3f26('0x5'));var util=require('util');var path=require(_0x3f26('0x6'));var sox=require(_0x3f26('0x7'));var csv=require(_0x3f26('0x8'));var ejs=require(_0x3f26('0x9'));var fs=require('fs');var fs_extra=require(_0x3f26('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x3f26('0xb'));var jsforce=require(_0x3f26('0xc'));var deskjs=require(_0x3f26('0xd'));var toCsv=require('to-csv');var querystring=require(_0x3f26('0xe'));var Papa=require(_0x3f26('0xf'));var Redis=require('ioredis');var authService=require(_0x3f26('0x10'));var qs=require(_0x3f26('0x11'));var as=require(_0x3f26('0x12'));var hardwareService=require(_0x3f26('0x13'));var logger=require(_0x3f26('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x3f26('0x15'));var licenseUtil=require(_0x3f26('0x16'));var db=require(_0x3f26('0x17'))['db'];function respondWithStatusCode(_0x32c759,_0x472f38){_0x472f38=_0x472f38||0xcc;return function(_0x585234){if(_0x585234){return _0x32c759[_0x3f26('0x18')](_0x472f38);}return _0x32c759['status'](_0x472f38)[_0x3f26('0x19')]();};}function respondWithResult(_0x3cf574,_0x7e9fef){_0x7e9fef=_0x7e9fef||0xc8;return function(_0x3c3f0a){if(_0x3c3f0a){return _0x3cf574[_0x3f26('0x1a')](_0x7e9fef)[_0x3f26('0x1b')](_0x3c3f0a);}};}function respondWithFilteredResult(_0x212f88,_0x1992e5){return function(_0x4eb5e3){if(_0x4eb5e3){var _0x3e1d86=typeof _0x1992e5[_0x3f26('0x1c')]===_0x3f26('0x1d')&&typeof _0x1992e5['limit']===_0x3f26('0x1d');var _0x22435e=_0x4eb5e3[_0x3f26('0x1e')];var _0x4985be=_0x3e1d86?0x0:_0x1992e5[_0x3f26('0x1c')];var _0x22a433=_0x3e1d86?_0x4eb5e3[_0x3f26('0x1e')]:_0x1992e5[_0x3f26('0x1c')]+_0x1992e5['limit'];var _0x35703f;if(_0x22a433>=_0x22435e){_0x22a433=_0x22435e;_0x35703f=0xc8;}else{_0x35703f=0xce;}_0x212f88[_0x3f26('0x1a')](_0x35703f);return _0x212f88[_0x3f26('0x1f')](_0x3f26('0x20'),_0x4985be+'-'+_0x22a433+'/'+_0x22435e)[_0x3f26('0x1b')](_0x4eb5e3);}return null;};}function patchUpdates(_0x28f87e){return function(_0xe2fba4){try{jsonpatch[_0x3f26('0x21')](_0xe2fba4,_0x28f87e,!![]);}catch(_0x423d1e){return BPromise[_0x3f26('0x22')](_0x423d1e);}return _0xe2fba4['save']();};}function saveUpdates(_0x114db8,_0x1f3cb6){return function(_0x51c542){if(_0x51c542){return _0x51c542[_0x3f26('0x23')](_0x114db8)[_0x3f26('0x24')](function(_0x469bd1){return _0x469bd1;});}return null;};}function removeEntity(_0x3486d1,_0x583e19){return function(_0x3b24a2){if(_0x3b24a2){return _0x3b24a2['destroy']()[_0x3f26('0x24')](function(){_0x3486d1[_0x3f26('0x1a')](0xcc)[_0x3f26('0x19')]();});}};}function handleEntityNotFound(_0x81afb8,_0x29fcb1){return function(_0x4bcb9d){if(!_0x4bcb9d){_0x81afb8['sendStatus'](0x194);}return _0x4bcb9d;};}function handleError(_0x5d71b8,_0x24ae91){_0x24ae91=_0x24ae91||0x1f4;return function(_0x324337){logger[_0x3f26('0x25')](_0x324337[_0x3f26('0x26')]);if(_0x324337['name']){delete _0x324337['name'];}_0x5d71b8['status'](_0x24ae91)[_0x3f26('0x27')](_0x324337);};}exports[_0x3f26('0x28')]=function(_0x58fc58,_0x2b816b){var _0x41057e={},_0x5177d6={},_0x4c17d0={'count':0x0,'rows':[]};var _0x161fae=_[_0x3f26('0x29')](db[_0x3f26('0x2a')]['rawAttributes'],function(_0x20fe7f){return{'name':_0x20fe7f[_0x3f26('0x2b')],'type':_0x20fe7f[_0x3f26('0x2c')][_0x3f26('0x2d')]};});_0x5177d6[_0x3f26('0x2e')]=_['map'](_0x161fae,'name');_0x5177d6[_0x3f26('0x2f')]=_[_0x3f26('0x30')](_0x58fc58['query']);_0x5177d6[_0x3f26('0x31')]=_[_0x3f26('0x32')](_0x5177d6[_0x3f26('0x2e')],_0x5177d6[_0x3f26('0x2f')]);_0x41057e[_0x3f26('0x33')]=_[_0x3f26('0x32')](_0x5177d6[_0x3f26('0x2e')],qs[_0x3f26('0x34')](_0x58fc58[_0x3f26('0x2f')][_0x3f26('0x34')]));_0x41057e[_0x3f26('0x33')]=_0x41057e[_0x3f26('0x33')][_0x3f26('0x35')]?_0x41057e[_0x3f26('0x33')]:_0x5177d6['model'];if(!_0x58fc58[_0x3f26('0x2f')][_0x3f26('0x36')](_0x3f26('0x37'))){_0x41057e['limit']=qs['limit'](_0x58fc58['query'][_0x3f26('0x38')]);_0x41057e[_0x3f26('0x1c')]=qs[_0x3f26('0x1c')](_0x58fc58[_0x3f26('0x2f')][_0x3f26('0x1c')]);}_0x41057e[_0x3f26('0x39')]=qs[_0x3f26('0x3a')](_0x58fc58['query'][_0x3f26('0x3a')]);_0x41057e[_0x3f26('0x3b')]=qs[_0x3f26('0x31')](_['pick'](_0x58fc58[_0x3f26('0x2f')],_0x5177d6[_0x3f26('0x31')]),_0x161fae);if(_0x58fc58[_0x3f26('0x2f')][_0x3f26('0x3c')]){_0x41057e[_0x3f26('0x3b')]=_[_0x3f26('0x3d')](_0x41057e[_0x3f26('0x3b')],{'$or':_[_0x3f26('0x29')](_0x161fae,function(_0x1e76a1){if(_0x1e76a1['type']!=='VIRTUAL'){var _0x4305d9={};_0x4305d9[_0x1e76a1[_0x3f26('0x3e')]]={'$like':'%'+_0x58fc58[_0x3f26('0x2f')][_0x3f26('0x3c')]+'%'};return _0x4305d9;}})});}_0x41057e=_[_0x3f26('0x3d')]({},_0x41057e,_0x58fc58[_0x3f26('0x3f')]);var _0x39c3e5={'where':_0x41057e[_0x3f26('0x3b')]};return db[_0x3f26('0x2a')][_0x3f26('0x1e')](_0x39c3e5)[_0x3f26('0x24')](function(_0x354d15){_0x4c17d0[_0x3f26('0x1e')]=_0x354d15;if(_0x58fc58[_0x3f26('0x2f')][_0x3f26('0x40')]){_0x41057e[_0x3f26('0x41')]=[{'all':!![]}];}return db[_0x3f26('0x2a')][_0x3f26('0x42')](_0x41057e);})['then'](function(_0xe2f78a){_0x4c17d0[_0x3f26('0x43')]=_0xe2f78a;return _0x4c17d0;})[_0x3f26('0x24')](respondWithFilteredResult(_0x2b816b,_0x41057e))['catch'](handleError(_0x2b816b,null));};exports[_0x3f26('0x44')]=function(_0x3337c7,_0x440f1e){var _0x561121={'raw':!![],'where':{'id':_0x3337c7[_0x3f26('0x45')]['id']}},_0x533c2f={};_0x533c2f['model']=_[_0x3f26('0x30')](db['VtigerField']['rawAttributes']);_0x533c2f[_0x3f26('0x2f')]=_[_0x3f26('0x30')](_0x3337c7['query']);_0x533c2f[_0x3f26('0x31')]=_[_0x3f26('0x32')](_0x533c2f[_0x3f26('0x2e')],_0x533c2f[_0x3f26('0x2f')]);_0x561121[_0x3f26('0x33')]=_['intersection'](_0x533c2f['model'],qs[_0x3f26('0x34')](_0x3337c7['query']['fields']));_0x561121[_0x3f26('0x33')]=_0x561121[_0x3f26('0x33')]['length']?_0x561121[_0x3f26('0x33')]:_0x533c2f['model'];if(_0x3337c7[_0x3f26('0x2f')][_0x3f26('0x40')]){_0x561121['include']=[{'all':!![]}];}_0x561121=_[_0x3f26('0x3d')]({},_0x561121,_0x3337c7[_0x3f26('0x3f')]);return db[_0x3f26('0x2a')]['find'](_0x561121)['then'](handleEntityNotFound(_0x440f1e,null))[_0x3f26('0x24')](respondWithResult(_0x440f1e,null))['catch'](handleError(_0x440f1e,null));};exports[_0x3f26('0x46')]=function(_0x4a871a,_0x11dc98){return db[_0x3f26('0x2a')][_0x3f26('0x46')](_0x4a871a[_0x3f26('0x47')],{})[_0x3f26('0x24')](respondWithResult(_0x11dc98,0xc9))[_0x3f26('0x48')](handleError(_0x11dc98,null));};exports[_0x3f26('0x23')]=function(_0x9e50a,_0xa90c99){if(_0x9e50a[_0x3f26('0x47')]['id']){delete _0x9e50a[_0x3f26('0x47')]['id'];}return db['VtigerField'][_0x3f26('0x49')]({'where':{'id':_0x9e50a['params']['id']}})['then'](handleEntityNotFound(_0xa90c99,null))[_0x3f26('0x24')](saveUpdates(_0x9e50a[_0x3f26('0x47')],null))[_0x3f26('0x24')](respondWithResult(_0xa90c99,null))[_0x3f26('0x48')](handleError(_0xa90c99,null));};exports[_0x3f26('0x4a')]=function(_0xda74d4,_0x197a45){return db[_0x3f26('0x2a')]['find']({'where':{'id':_0xda74d4['params']['id']}})[_0x3f26('0x24')](handleEntityNotFound(_0x197a45,null))[_0x3f26('0x24')](removeEntity(_0x197a45,null))[_0x3f26('0x48')](handleError(_0x197a45,null));};
\ No newline at end of file
index 38ba981..1871268 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8a6=['exports','define','VtigerField','vtiger_unique_index','idField','lodash','util','../../config/logger','api','request-promise','path','rimraf','./intVtigerField.attributes'];(function(_0x3b1ece,_0x459223){var _0x49da52=function(_0x33032e){while(--_0x33032e){_0x3b1ece['push'](_0x3b1ece['shift']());}};_0x49da52(++_0x459223);}(_0xd8a6,0x1a5));var _0x6d8a=function(_0x9a195c,_0x330d33){_0x9a195c=_0x9a195c-0x0;var _0x373014=_0xd8a6[_0x9a195c];return _0x373014;};'use strict';var _=require(_0x6d8a('0x0'));var util=require(_0x6d8a('0x1'));var logger=require(_0x6d8a('0x2'))(_0x6d8a('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6d8a('0x4'));var fs=require('fs');var path=require(_0x6d8a('0x5'));var rimraf=require(_0x6d8a('0x6'));var config=require('../../config/environment');var attributes=require(_0x6d8a('0x7'));module[_0x6d8a('0x8')]=function(_0x145196,_0x2eb2d7){return _0x145196[_0x6d8a('0x9')](_0x6d8a('0xa'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0x6d8a('0xb'),'fields':[_0x6d8a('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdced=['lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','VtigerField','int_vtiger_fields','idField','FieldId'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xdced,0xa8));var _0xddce=function(_0x426a37,_0x1d32df){_0x426a37=_0x426a37-0x0;var _0x4e9e28=_0xdced[_0x426a37];return _0x4e9e28;};'use strict';var _=require(_0xddce('0x0'));var util=require(_0xddce('0x1'));var logger=require(_0xddce('0x2'))('api');var moment=require(_0xddce('0x3'));var BPromise=require(_0xddce('0x4'));var rp=require(_0xddce('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xddce('0x6'));var config=require(_0xddce('0x7'));var attributes=require('./intVtigerField.attributes');module[_0xddce('0x8')]=function(_0x38319e,_0x348d21){return _0x38319e[_0xddce('0x9')](_0xddce('0xa'),attributes,{'tableName':_0xddce('0xb'),'paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':[_0xddce('0xc'),_0xddce('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index e6fdd76..e26c9a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd670=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','error','code','VtigerField,\x20%s,\x20%s','message','info','catch','lodash'];(function(_0x58df9b,_0x53673b){var _0x510111=function(_0x142e05){while(--_0x142e05){_0x58df9b['push'](_0x58df9b['shift']());}};_0x510111(++_0x53673b);}(_0xd670,0x175));var _0x0d67=function(_0x478c71,_0x256526){_0x478c71=_0x478c71-0x0;var _0x50c512=_0xd670[_0x478c71];return _0x50c512;};'use strict';var _=require(_0x0d67('0x0'));var util=require('util');var moment=require(_0x0d67('0x1'));var BPromise=require(_0x0d67('0x2'));var rs=require(_0x0d67('0x3'));var fs=require('fs');var Redis=require(_0x0d67('0x4'));var db=require(_0x0d67('0x5'))['db'];var utils=require(_0x0d67('0x6'));var logger=require(_0x0d67('0x7'))(_0x0d67('0x8'));var config=require(_0x0d67('0x9'));var jayson=require(_0x0d67('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5c4f80,_0x3d16bc,_0x3c0b5e){return new BPromise(function(_0x5e05b5,_0x1d32d8){return client[_0x0d67('0xb')](_0x5c4f80,_0x3c0b5e)[_0x0d67('0xc')](function(_0x5b9218){logger['info']('VtigerField,\x20%s,\x20%s',_0x3d16bc,_0x0d67('0xd'));logger[_0x0d67('0xe')](_0x0d67('0xf'),_0x3d16bc,_0x0d67('0xd'),JSON['stringify'](_0x5b9218));if(_0x5b9218[_0x0d67('0x10')]){if(_0x5b9218[_0x0d67('0x10')][_0x0d67('0x11')]===0x1f4){logger['error'](_0x0d67('0x12'),_0x3d16bc,_0x5b9218[_0x0d67('0x10')][_0x0d67('0x13')]);return _0x1d32d8(_0x5b9218[_0x0d67('0x10')][_0x0d67('0x13')]);}logger['error'](_0x0d67('0x12'),_0x3d16bc,_0x5b9218[_0x0d67('0x10')][_0x0d67('0x13')]);return _0x5e05b5(_0x5b9218[_0x0d67('0x10')][_0x0d67('0x13')]);}else{logger[_0x0d67('0x14')](_0x0d67('0x12'),_0x3d16bc,_0x0d67('0xd'));_0x5e05b5(_0x5b9218['result'][_0x0d67('0x13')]);}})[_0x0d67('0x15')](function(_0x12041d){logger[_0x0d67('0x10')](_0x0d67('0x12'),_0x3d16bc,_0x12041d);_0x1d32d8(_0x12041d);});});}
\ No newline at end of file
+var _0x9dce=['client','http','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9dce,0x153));var _0xe9dc=function(_0x27b3ac,_0xb1e5f7){_0x27b3ac=_0x27b3ac-0x0;var _0x3812ef=_0x9dce[_0x27b3ac];return _0x3812ef;};'use strict';var _=require(_0xe9dc('0x0'));var util=require(_0xe9dc('0x1'));var moment=require(_0xe9dc('0x2'));var BPromise=require(_0xe9dc('0x3'));var rs=require(_0xe9dc('0x4'));var fs=require('fs');var Redis=require(_0xe9dc('0x5'));var db=require(_0xe9dc('0x6'))['db'];var utils=require(_0xe9dc('0x7'));var logger=require('../../config/logger')(_0xe9dc('0x8'));var config=require(_0xe9dc('0x9'));var jayson=require(_0xe9dc('0xa'));var client=jayson[_0xe9dc('0xb')][_0xe9dc('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x517ed1,_0xdb203c,_0x2ee3db){return new BPromise(function(_0x3d85f2,_0x1ea267){return client[_0xe9dc('0xd')](_0x517ed1,_0x2ee3db)[_0xe9dc('0xe')](function(_0x30a9d8){logger[_0xe9dc('0xf')](_0xe9dc('0x10'),_0xdb203c,_0xe9dc('0x11'));logger[_0xe9dc('0x12')](_0xe9dc('0x13'),_0xdb203c,_0xe9dc('0x11'),JSON[_0xe9dc('0x14')](_0x30a9d8));if(_0x30a9d8[_0xe9dc('0x15')]){if(_0x30a9d8['error'][_0xe9dc('0x16')]===0x1f4){logger[_0xe9dc('0x15')](_0xe9dc('0x10'),_0xdb203c,_0x30a9d8[_0xe9dc('0x15')][_0xe9dc('0x17')]);return _0x1ea267(_0x30a9d8[_0xe9dc('0x15')][_0xe9dc('0x17')]);}logger[_0xe9dc('0x15')](_0xe9dc('0x10'),_0xdb203c,_0x30a9d8['error'][_0xe9dc('0x17')]);return _0x3d85f2(_0x30a9d8[_0xe9dc('0x15')][_0xe9dc('0x17')]);}else{logger[_0xe9dc('0xf')](_0xe9dc('0x10'),_0xdb203c,'request\x20sent');_0x3d85f2(_0x30a9d8['result'][_0xe9dc('0x17')]);}})[_0xe9dc('0x18')](function(_0x15739f){logger['error'](_0xe9dc('0x10'),_0xdb203c,_0x15739f);_0x1ea267(_0x15739f);});});}
\ No newline at end of file
index 0bac289..989d6b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf053=['/:id/configurations','put','update','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create'];(function(_0x4a9dc5,_0x30dacd){var _0x1736fc=function(_0x5a4c63){while(--_0x5a4c63){_0x4a9dc5['push'](_0x4a9dc5['shift']());}};_0x1736fc(++_0x30dacd);}(_0xf053,0x101));var _0x3f05=function(_0x2efabd,_0x2ba2a5){_0x2efabd=_0x2efabd-0x0;var _0x4fc922=_0xf053[_0x2efabd];return _0x4fc922;};'use strict';var multer=require('multer');var util=require(_0x3f05('0x0'));var path=require(_0x3f05('0x1'));var timeout=require(_0x3f05('0x2'));var express=require(_0x3f05('0x3'));var router=express[_0x3f05('0x4')]();var fs_extra=require(_0x3f05('0x5'));var auth=require(_0x3f05('0x6'));var interaction=require(_0x3f05('0x7'));var config=require(_0x3f05('0x8'));var controller=require('./intZendeskAccount.controller');router[_0x3f05('0x9')]('/',auth[_0x3f05('0xa')](),controller[_0x3f05('0xb')]);router[_0x3f05('0x9')](_0x3f05('0xc'),auth[_0x3f05('0xa')](),controller[_0x3f05('0xd')]);router['get']('/:id/configurations',auth['isAuthenticated'](),controller[_0x3f05('0xe')]);router[_0x3f05('0x9')](_0x3f05('0xf'),auth['isAuthenticated'](),controller[_0x3f05('0x10')]);router[_0x3f05('0x11')]('/',auth[_0x3f05('0xa')](),controller[_0x3f05('0x12')]);router['post'](_0x3f05('0x13'),auth[_0x3f05('0xa')](),controller['addConfiguration']);router[_0x3f05('0x14')](_0x3f05('0xc'),auth[_0x3f05('0xa')](),controller[_0x3f05('0x15')]);router['delete'](_0x3f05('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x3f05('0x16')]=router;
\ No newline at end of file
+var _0x8456=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intZendeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update'];(function(_0x28bc89,_0x1edcd4){var _0x31aaa2=function(_0x3182a8){while(--_0x3182a8){_0x28bc89['push'](_0x28bc89['shift']());}};_0x31aaa2(++_0x1edcd4);}(_0x8456,0x189));var _0x6845=function(_0x319eaa,_0xb13056){_0x319eaa=_0x319eaa-0x0;var _0x4bc2ba=_0x8456[_0x319eaa];return _0x4bc2ba;};'use strict';var multer=require(_0x6845('0x0'));var util=require(_0x6845('0x1'));var path=require(_0x6845('0x2'));var timeout=require(_0x6845('0x3'));var express=require(_0x6845('0x4'));var router=express[_0x6845('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6845('0x6'));var interaction=require(_0x6845('0x7'));var config=require('../../config/environment');var controller=require(_0x6845('0x8'));router[_0x6845('0x9')]('/',auth[_0x6845('0xa')](),controller[_0x6845('0xb')]);router[_0x6845('0x9')](_0x6845('0xc'),auth[_0x6845('0xa')](),controller[_0x6845('0xd')]);router[_0x6845('0x9')](_0x6845('0xe'),auth['isAuthenticated'](),controller[_0x6845('0xf')]);router[_0x6845('0x9')](_0x6845('0x10'),auth[_0x6845('0xa')](),controller[_0x6845('0x11')]);router[_0x6845('0x12')]('/',auth['isAuthenticated'](),controller[_0x6845('0x13')]);router['post']('/:id/configurations',auth[_0x6845('0xa')](),controller[_0x6845('0x14')]);router[_0x6845('0x15')]('/:id',auth[_0x6845('0xa')](),controller[_0x6845('0x16')]);router[_0x6845('0x17')](_0x6845('0xc'),auth[_0x6845('0xa')](),controller[_0x6845('0x18')]);module[_0x6845('0x19')]=router;
\ No newline at end of file
index 38a8da6..0513388 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11f3=['exports','STRING','password','ENUM','integrationTab','sequelize'];(function(_0x12d5f6,_0x1468b4){var _0x27a1ad=function(_0x293c51){while(--_0x293c51){_0x12d5f6['push'](_0x12d5f6['shift']());}};_0x27a1ad(++_0x1468b4);}(_0x11f3,0x149));var _0x311f=function(_0x57c380,_0x4cdaae){_0x57c380=_0x57c380-0x0;var _0x201cbf=_0x11f3[_0x57c380];return _0x201cbf;};'use strict';var Sequelize=require(_0x311f('0x0'));module[_0x311f('0x1')]={'name':{'type':Sequelize[_0x311f('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x311f('0x2')],'unique':'username'},'password':{'type':Sequelize[_0x311f('0x2')]},'token':{'type':Sequelize[_0x311f('0x2')]},'remoteUri':{'type':Sequelize[_0x311f('0x2')],'unique':'remoteUri'},'authType':{'type':Sequelize['ENUM'](_0x311f('0x3'),'token'),'defaultValue':_0x311f('0x3')},'serverUrl':{'type':Sequelize[_0x311f('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x311f('0x4')](_0x311f('0x5'),'newTab'),'defaultValue':_0x311f('0x5')}};
\ No newline at end of file
+var _0x341c=['ENUM','password','integrationTab','newTab','sequelize','STRING','username','remoteUri'];(function(_0x7feb90,_0x28e700){var _0x3c5b33=function(_0x113cfa){while(--_0x113cfa){_0x7feb90['push'](_0x7feb90['shift']());}};_0x3c5b33(++_0x28e700);}(_0x341c,0xcc));var _0xc341=function(_0x102b0c,_0x33dee4){_0x102b0c=_0x102b0c-0x0;var _0x9b15ca=_0x341c[_0x102b0c];return _0x9b15ca;};'use strict';var Sequelize=require(_0xc341('0x0'));module['exports']={'name':{'type':Sequelize[_0xc341('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xc341('0x1')],'unique':_0xc341('0x2')},'password':{'type':Sequelize[_0xc341('0x1')]},'token':{'type':Sequelize[_0xc341('0x1')]},'remoteUri':{'type':Sequelize[_0xc341('0x1')],'unique':_0xc341('0x3')},'authType':{'type':Sequelize[_0xc341('0x4')](_0xc341('0x5'),'token'),'defaultValue':_0xc341('0x5')},'serverUrl':{'type':Sequelize[_0xc341('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xc341('0x4')](_0xc341('0x6'),_0xc341('0x7')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index bbe0c29..e9f116b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['includes','position','system_field_options','custom_field_options','test','getFields,\x20%s,\x20%s,\x20%s','statusCode','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','set','apply','reject','save','update','then','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','ZendeskAccount','count','include','rows','params','keys','includeAll','find','catch','create','body','destroy','getConfigurations','ZendeskConfiguration','hasOwnProperty','AccountId','Subjects','getSubjects','channel','ZendeskField','Descriptions','getFields','findOne','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','Basic\x20%s','headers','toString','base64','Sequelize','ValidationError','subject','description','group','assignee','remove','ticket_fields'];(function(_0x6f0cfb,_0x1609ac){var _0x2c9a76=function(_0x5be373){while(--_0x5be373){_0x6f0cfb['push'](_0x6f0cfb['shift']());}};_0x2c9a76(++_0x1609ac);}(_0x91a7,0xe7));var _0x791a=function(_0x383143,_0x6cdee5){_0x383143=_0x383143-0x0;var _0x5a04d5=_0x91a7[_0x383143];return _0x5a04d5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x791a('0x0'));var zipdir=require(_0x791a('0x1'));var jsonpatch=require(_0x791a('0x2'));var rp=require('request-promise');var moment=require(_0x791a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x791a('0x4'));var util=require('util');var path=require('path');var sox=require(_0x791a('0x5'));var csv=require(_0x791a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x791a('0x7'));var _=require('lodash');var squel=require(_0x791a('0x8'));var crypto=require(_0x791a('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x791a('0xa'));var toCsv=require(_0x791a('0x6'));var querystring=require(_0x791a('0xb'));var Papa=require(_0x791a('0xc'));var Redis=require(_0x791a('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x791a('0xe'));var as=require(_0x791a('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x791a('0x10'))(_0x791a('0x11'));var utils=require(_0x791a('0x12'));var config=require(_0x791a('0x13'));var licenseUtil=require(_0x791a('0x14'));var db=require(_0x791a('0x15'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5daecd,_0xc92016){_0xc92016=_0xc92016||0xcc;return function(_0x2f2d8d){if(_0x2f2d8d){return _0x5daecd['sendStatus'](_0xc92016);}return _0x5daecd[_0x791a('0x16')](_0xc92016)[_0x791a('0x17')]();};}function respondWithResult(_0x5d5b11,_0x2887f0){_0x2887f0=_0x2887f0||0xc8;return function(_0x31b86d){if(_0x31b86d){return _0x5d5b11[_0x791a('0x16')](_0x2887f0)[_0x791a('0x18')](_0x31b86d);}};}function respondWithFilteredResult(_0x55e845,_0x2ce2e0){return function(_0x575d11){if(_0x575d11){var _0x43dea6=typeof _0x2ce2e0[_0x791a('0x19')]==='undefined'&&typeof _0x2ce2e0[_0x791a('0x1a')]==='undefined';var _0x35fe48=_0x575d11['count'];var _0x4a84ee=_0x43dea6?0x0:_0x2ce2e0['offset'];var _0x40f0d3=_0x43dea6?_0x575d11['count']:_0x2ce2e0['offset']+_0x2ce2e0[_0x791a('0x1a')];var _0x5a702e;if(_0x40f0d3>=_0x35fe48){_0x40f0d3=_0x35fe48;_0x5a702e=0xc8;}else{_0x5a702e=0xce;}_0x55e845[_0x791a('0x16')](_0x5a702e);return _0x55e845[_0x791a('0x1b')]('Content-Range',_0x4a84ee+'-'+_0x40f0d3+'/'+_0x35fe48)[_0x791a('0x18')](_0x575d11);}return null;};}function patchUpdates(_0xcb5e66){return function(_0x234514){try{jsonpatch[_0x791a('0x1c')](_0x234514,_0xcb5e66,!![]);}catch(_0x530e32){return BPromise[_0x791a('0x1d')](_0x530e32);}return _0x234514[_0x791a('0x1e')]();};}function saveUpdates(_0x25bae5,_0x9e17b5){return function(_0x3200dd){if(_0x3200dd){return _0x3200dd[_0x791a('0x1f')](_0x25bae5)[_0x791a('0x20')](function(_0x45a67d){return _0x45a67d;});}return null;};}function removeEntity(_0x323c6a,_0xe8e452){return function(_0x137992){if(_0x137992){return _0x137992['destroy']()[_0x791a('0x20')](function(){_0x323c6a[_0x791a('0x16')](0xcc)[_0x791a('0x17')]();});}};}function handleEntityNotFound(_0x2966b8,_0x4d748a){return function(_0x456480){if(!_0x456480){_0x2966b8[_0x791a('0x21')](0x194);}return _0x456480;};}function handleError(_0x51dcca,_0xdfa84f){_0xdfa84f=_0xdfa84f||0x1f4;return function(_0x1785f5){logger[_0x791a('0x22')](_0x1785f5['stack']);if(_0x1785f5[_0x791a('0x23')]){delete _0x1785f5[_0x791a('0x23')];}_0x51dcca[_0x791a('0x16')](_0xdfa84f)[_0x791a('0x24')](_0x1785f5);};}exports[_0x791a('0x25')]=function(_0x1a9c6b,_0x628816){var _0x889534={},_0x58bbc0={},_0xbc3436={'count':0x0,'rows':[]};var _0x9e9332=_[_0x791a('0x26')](db['ZendeskAccount'][_0x791a('0x27')],function(_0x5df656){return{'name':_0x5df656[_0x791a('0x28')],'type':_0x5df656[_0x791a('0x29')][_0x791a('0x2a')]};});_0x58bbc0[_0x791a('0x2b')]=_[_0x791a('0x26')](_0x9e9332,_0x791a('0x23'));_0x58bbc0[_0x791a('0x2c')]=_['keys'](_0x1a9c6b[_0x791a('0x2c')]);_0x58bbc0[_0x791a('0x2d')]=_[_0x791a('0x2e')](_0x58bbc0[_0x791a('0x2b')],_0x58bbc0[_0x791a('0x2c')]);_0x889534['attributes']=_[_0x791a('0x2e')](_0x58bbc0[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x2f')]));_0x889534['attributes']=_0x889534[_0x791a('0x30')][_0x791a('0x31')]?_0x889534[_0x791a('0x30')]:_0x58bbc0[_0x791a('0x2b')];if(!_0x1a9c6b[_0x791a('0x2c')]['hasOwnProperty'](_0x791a('0x32'))){_0x889534['limit']=qs[_0x791a('0x1a')](_0x1a9c6b['query']['limit']);_0x889534[_0x791a('0x19')]=qs[_0x791a('0x19')](_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x19')]);}_0x889534[_0x791a('0x33')]=qs[_0x791a('0x34')](_0x1a9c6b[_0x791a('0x2c')]['sort']);_0x889534[_0x791a('0x35')]=qs['filters'](_[_0x791a('0x36')](_0x1a9c6b['query'],_0x58bbc0[_0x791a('0x2d')]),_0x9e9332);if(_0x1a9c6b[_0x791a('0x2c')]['filter']){_0x889534[_0x791a('0x35')]=_[_0x791a('0x37')](_0x889534['where'],{'$or':_[_0x791a('0x26')](_0x9e9332,function(_0x165e2b){if(_0x165e2b[_0x791a('0x29')]!==_0x791a('0x38')){var _0x29d267={};_0x29d267[_0x165e2b[_0x791a('0x23')]]={'$like':'%'+_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x39')]+'%'};return _0x29d267;}})});}_0x889534=_[_0x791a('0x37')]({},_0x889534,_0x1a9c6b[_0x791a('0x3a')]);var _0x587481={'where':_0x889534[_0x791a('0x35')]};return db[_0x791a('0x3b')][_0x791a('0x3c')](_0x587481)['then'](function(_0xf4e2fa){_0xbc3436['count']=_0xf4e2fa;if(_0x1a9c6b['query']['includeAll']){_0x889534[_0x791a('0x3d')]=[{'all':!![]}];}return db[_0x791a('0x3b')]['findAll'](_0x889534);})[_0x791a('0x20')](function(_0x2d1692){_0xbc3436[_0x791a('0x3e')]=_0x2d1692;return _0xbc3436;})[_0x791a('0x20')](respondWithFilteredResult(_0x628816,_0x889534))['catch'](handleError(_0x628816,null));};exports['show']=function(_0x57b9ba,_0x2f0395){var _0x216dd3={'raw':![],'where':{'id':_0x57b9ba[_0x791a('0x3f')]['id']}},_0x4e0191={};_0x4e0191[_0x791a('0x2b')]=_[_0x791a('0x40')](db[_0x791a('0x3b')]['rawAttributes']);_0x4e0191[_0x791a('0x2c')]=_['keys'](_0x57b9ba[_0x791a('0x2c')]);_0x4e0191[_0x791a('0x2d')]=_[_0x791a('0x2e')](_0x4e0191[_0x791a('0x2b')],_0x4e0191[_0x791a('0x2c')]);_0x216dd3['attributes']=_[_0x791a('0x2e')](_0x4e0191[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0x57b9ba[_0x791a('0x2c')][_0x791a('0x2f')]));_0x216dd3['attributes']=_0x216dd3[_0x791a('0x30')][_0x791a('0x31')]?_0x216dd3['attributes']:_0x4e0191['model'];if(_0x57b9ba[_0x791a('0x2c')][_0x791a('0x41')]){_0x216dd3[_0x791a('0x3d')]=[{'all':!![]}];}_0x216dd3=_['merge']({},_0x216dd3,_0x57b9ba['options']);return db[_0x791a('0x3b')][_0x791a('0x42')](_0x216dd3)['then'](handleEntityNotFound(_0x2f0395,null))[_0x791a('0x20')](respondWithResult(_0x2f0395,null))[_0x791a('0x43')](handleError(_0x2f0395,null));};exports[_0x791a('0x44')]=function(_0x549980,_0x5a30a6){return db[_0x791a('0x3b')][_0x791a('0x44')](_0x549980[_0x791a('0x45')],{})[_0x791a('0x20')](respondWithResult(_0x5a30a6,0xc9))['catch'](handleError(_0x5a30a6,null));};exports[_0x791a('0x1f')]=function(_0x9f768a,_0x4e6d0d){if(_0x9f768a[_0x791a('0x45')]['id']){delete _0x9f768a['body']['id'];}return db[_0x791a('0x3b')][_0x791a('0x42')]({'where':{'id':_0x9f768a[_0x791a('0x3f')]['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4e6d0d,null))[_0x791a('0x20')](saveUpdates(_0x9f768a[_0x791a('0x45')],null))[_0x791a('0x20')](respondWithResult(_0x4e6d0d,null))['catch'](handleError(_0x4e6d0d,null));};exports[_0x791a('0x46')]=function(_0x1fd826,_0x4bffa6){return db[_0x791a('0x3b')][_0x791a('0x42')]({'where':{'id':_0x1fd826['params']['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4bffa6,null))[_0x791a('0x20')](removeEntity(_0x4bffa6,null))[_0x791a('0x43')](handleError(_0x4bffa6,null));};exports[_0x791a('0x47')]=function(_0xd5ec90,_0x4d82eb,_0x4ab42f){var _0x5a616f={};var _0x305033={};var _0x51b556;var _0x4c7555;return db[_0x791a('0x3b')]['findOne']({'where':{'id':_0xd5ec90[_0x791a('0x3f')]['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4d82eb,null))['then'](function(_0x5166b5){if(_0x5166b5){_0x51b556=_0x5166b5;_0x305033[_0x791a('0x2b')]=_['keys'](db[_0x791a('0x48')][_0x791a('0x27')]);_0x305033[_0x791a('0x2c')]=_['keys'](_0xd5ec90[_0x791a('0x2c')]);_0x305033[_0x791a('0x2d')]=_['intersection'](_0x305033[_0x791a('0x2b')],_0x305033[_0x791a('0x2c')]);_0x5a616f[_0x791a('0x30')]=_[_0x791a('0x2e')](_0x305033[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0xd5ec90['query']['fields']));_0x5a616f[_0x791a('0x30')]=_0x5a616f['attributes'][_0x791a('0x31')]?_0x5a616f[_0x791a('0x30')]:_0x305033[_0x791a('0x2b')];_0x5a616f[_0x791a('0x33')]=qs[_0x791a('0x34')](_0xd5ec90[_0x791a('0x2c')][_0x791a('0x34')]);_0x5a616f['where']=qs[_0x791a('0x2d')](_[_0x791a('0x36')](_0xd5ec90[_0x791a('0x2c')],_0x305033[_0x791a('0x2d')]));if(_0xd5ec90[_0x791a('0x2c')][_0x791a('0x39')]){_0x5a616f[_0x791a('0x35')]=_['merge'](_0x5a616f[_0x791a('0x35')],{'$or':_['map'](_0x5a616f['attributes'],function(_0x1cc240){var _0x3c81e2={};_0x3c81e2[_0x1cc240]={'$like':'%'+_0xd5ec90[_0x791a('0x2c')][_0x791a('0x39')]+'%'};return _0x3c81e2;})});}_0x5a616f=_[_0x791a('0x37')]({},_0x5a616f,_0xd5ec90[_0x791a('0x3a')]);return _0x51b556[_0x791a('0x47')](_0x5a616f);}})[_0x791a('0x20')](function(_0x2bfb66){if(_0x2bfb66){_0x4c7555=_0x2bfb66[_0x791a('0x31')];if(!_0xd5ec90[_0x791a('0x2c')][_0x791a('0x49')](_0x791a('0x32'))){_0x5a616f[_0x791a('0x1a')]=qs[_0x791a('0x1a')](_0xd5ec90[_0x791a('0x2c')][_0x791a('0x1a')]);_0x5a616f[_0x791a('0x19')]=qs[_0x791a('0x19')](_0xd5ec90[_0x791a('0x2c')]['offset']);}return _0x51b556[_0x791a('0x47')](_0x5a616f);}})[_0x791a('0x20')](function(_0x380087){if(_0x380087){return _0x380087?{'count':_0x4c7555,'rows':_0x380087}:null;}})[_0x791a('0x20')](respondWithResult(_0x4d82eb,null))[_0x791a('0x43')](handleError(_0x4d82eb,null));};exports['addConfiguration']=function(_0x42ce59,_0x3d24bd,_0x277774){if(_0x42ce59[_0x791a('0x45')]['id']){delete _0x42ce59['body']['id'];}return db[_0x791a('0x3b')]['findOne']({'where':{'id':_0x42ce59['params']['id']}})['then'](handleEntityNotFound(_0x3d24bd,null))['then'](function(_0x22aaf2){if(_0x22aaf2){_0x42ce59[_0x791a('0x45')][_0x791a('0x4a')]=_0x22aaf2['id'];_0x42ce59[_0x791a('0x45')][_0x791a('0x4b')]=integrations[_0x791a('0x4c')](_0x42ce59[_0x791a('0x45')]['channel'],_0x42ce59['body'][_0x791a('0x29')]);_0x42ce59[_0x791a('0x45')]['Descriptions']=integrations['getDescriptions'](_0x42ce59[_0x791a('0x45')][_0x791a('0x4d')],_0x42ce59['body'][_0x791a('0x29')]);return db[_0x791a('0x48')][_0x791a('0x44')](_0x42ce59[_0x791a('0x45')],{'include':[{'model':db['ZendeskField'],'as':'Subjects'},{'model':db[_0x791a('0x4e')],'as':_0x791a('0x4f')}]});}return null;})['then'](respondWithResult(_0x3d24bd,null))[_0x791a('0x43')](handleError(_0x3d24bd,null));};exports[_0x791a('0x50')]=function(_0x10b51f,_0x3838c4,_0x565c83){var _0x24efc2='';return db[_0x791a('0x3b')][_0x791a('0x51')]({'where':{'id':_0x10b51f[_0x791a('0x3f')]['id']},'attributes':['id',_0x791a('0x52'),_0x791a('0x53'),_0x791a('0x54'),_0x791a('0x55'),'remoteUri']})['then'](handleEntityNotFound(_0x3838c4,null))['then'](function(_0xf8ac72){if(_0xf8ac72){_0x24efc2=_0xf8ac72[_0x791a('0x56')];var _0x1118a8=_0x24efc2[_0x791a('0x57')](-0x1);if(_0x1118a8==='/'){_0x24efc2=_0x24efc2[_0x791a('0x58')](0x0,_0x24efc2[_0x791a('0x59')](_0x1118a8));}var _0x348e54={'method':_0x791a('0x5a'),'uri':util[_0x791a('0x5b')](_0x791a('0x5c'),_0x24efc2,'ticket_fields'),'json':!![]};switch(_0xf8ac72[_0x791a('0x55')]){case _0x791a('0x53'):_0x348e54['headers']={'Authorization':util[_0x791a('0x5b')](_0x791a('0x5d'),new Buffer(util['format']('%s:%s',_0xf8ac72[_0x791a('0x52')],_0xf8ac72[_0x791a('0x53')]))['toString']('base64'))};break;case _0x791a('0x54'):_0x348e54[_0x791a('0x5e')]={'Authorization':util[_0x791a('0x5b')]('Basic\x20%s',new Buffer(util[_0x791a('0x5b')]('%s/token:%s',_0xf8ac72[_0x791a('0x52')],_0xf8ac72[_0x791a('0x54')]))[_0x791a('0x5f')](_0x791a('0x60')))};break;default:throw new db[(_0x791a('0x61'))][(_0x791a('0x62'))]('Unknown\x20authentication\x20type');}return rp(_0x348e54);}})[_0x791a('0x20')](function(_0x2e666e){if(_0x2e666e){var _0x41d1a5=[_0x791a('0x63'),_0x791a('0x64'),_0x791a('0x65'),_0x791a('0x66')];_[_0x791a('0x67')](_0x2e666e[_0x791a('0x68')],function(_0x203fc5){return _0x41d1a5[_0x791a('0x69')](_0x203fc5[_0x791a('0x29')]);});return{'count':_0x2e666e[_0x791a('0x68')][_0x791a('0x31')],'rows':_[_0x791a('0x26')](_0x2e666e[_0x791a('0x68')],function(_0x3272c0){return{'id':_0x3272c0['id'],'name':_0x3272c0[_0x791a('0x6a')]>0x7?_0x3272c0['title']:_0x3272c0[_0x791a('0x29')],'custom':_0x3272c0[_0x791a('0x6a')]>0x7?!![]:![],'options':_0x3272c0[_0x791a('0x6b')]?_0x3272c0[_0x791a('0x6b')]:_0x3272c0[_0x791a('0x6c')]?_0x3272c0['custom_field_options']:[]};})};}})[_0x791a('0x20')](respondWithResult(_0x3838c4,null))['catch'](function(_0x467d65){var _0x48b8dc=_0x10b51f[_0x791a('0x2c')][_0x791a('0x6d')]?0x1f4:_0x467d65['statusCode']||0x1f4;logger[_0x791a('0x22')](_0x791a('0x6e'),_0x791a('0x50'),_0x48b8dc,JSON['stringify'](_0x467d65));delete _0x467d65[_0x791a('0x23')];if(_0x48b8dc===0x191){_0x48b8dc=0x190;}_0x3838c4['status'](_0x48b8dc)[_0x791a('0x24')](_0x10b51f['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x467d65[_0x791a('0x6f')]}:_0x467d65);});};
\ No newline at end of file
+var _0x8f59=['keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','options','ZendeskAccount','includeAll','include','rows','params','find','catch','create','body','getConfigurations','findOne','ZendeskConfiguration','filter','Subjects','getSubjects','channel','ZendeskField','Descriptions','getFields','password','token','authType','remoteUri','slice','substring','lastIndexOf','format','ticket_fields','headers','Basic\x20%s','username','toString','base64','%s/token:%s','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','remove','position','system_field_options','custom_field_options','test','statusCode','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','undefined','limit','offset','count','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query'];(function(_0x194d97,_0x432985){var _0x58e7e1=function(_0x26c554){while(--_0x26c554){_0x194d97['push'](_0x194d97['shift']());}};_0x58e7e1(++_0x432985);}(_0x8f59,0x11d));var _0x98f5=function(_0x59348a,_0x5d7e16){_0x59348a=_0x59348a-0x0;var _0x5dc4c8=_0x8f59[_0x59348a];return _0x5dc4c8;};'use strict';var emlformat=require(_0x98f5('0x0'));var rimraf=require(_0x98f5('0x1'));var zipdir=require(_0x98f5('0x2'));var jsonpatch=require(_0x98f5('0x3'));var rp=require(_0x98f5('0x4'));var moment=require(_0x98f5('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x98f5('0x6'));var util=require(_0x98f5('0x7'));var path=require(_0x98f5('0x8'));var sox=require(_0x98f5('0x9'));var csv=require('to-csv');var ejs=require(_0x98f5('0xa'));var fs=require('fs');var fs_extra=require(_0x98f5('0xb'));var _=require(_0x98f5('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x98f5('0xd'));var deskjs=require(_0x98f5('0xe'));var toCsv=require(_0x98f5('0xf'));var querystring=require('querystring');var Papa=require(_0x98f5('0x10'));var Redis=require(_0x98f5('0x11'));var authService=require(_0x98f5('0x12'));var qs=require(_0x98f5('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x98f5('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x98f5('0x15'));var config=require(_0x98f5('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x98f5('0x17'))['db'];var integrations=require(_0x98f5('0x18'));function respondWithStatusCode(_0x1f00e8,_0x160626){_0x160626=_0x160626||0xcc;return function(_0x3286f7){if(_0x3286f7){return _0x1f00e8[_0x98f5('0x19')](_0x160626);}return _0x1f00e8['status'](_0x160626)[_0x98f5('0x1a')]();};}function respondWithResult(_0xbade31,_0x5b8bab){_0x5b8bab=_0x5b8bab||0xc8;return function(_0x9df84){if(_0x9df84){return _0xbade31[_0x98f5('0x1b')](_0x5b8bab)[_0x98f5('0x1c')](_0x9df84);}};}function respondWithFilteredResult(_0x4ae70d,_0x2437e7){return function(_0xc7a49b){if(_0xc7a49b){var _0x113545=typeof _0x2437e7['offset']===_0x98f5('0x1d')&&typeof _0x2437e7[_0x98f5('0x1e')]==='undefined';var _0x1df52d=_0xc7a49b['count'];var _0x10c57c=_0x113545?0x0:_0x2437e7[_0x98f5('0x1f')];var _0x2291d5=_0x113545?_0xc7a49b[_0x98f5('0x20')]:_0x2437e7[_0x98f5('0x1f')]+_0x2437e7[_0x98f5('0x1e')];var _0x484e1d;if(_0x2291d5>=_0x1df52d){_0x2291d5=_0x1df52d;_0x484e1d=0xc8;}else{_0x484e1d=0xce;}_0x4ae70d[_0x98f5('0x1b')](_0x484e1d);return _0x4ae70d['set'](_0x98f5('0x21'),_0x10c57c+'-'+_0x2291d5+'/'+_0x1df52d)[_0x98f5('0x1c')](_0xc7a49b);}return null;};}function patchUpdates(_0x5deca0){return function(_0x146db1){try{jsonpatch[_0x98f5('0x22')](_0x146db1,_0x5deca0,!![]);}catch(_0x331695){return BPromise[_0x98f5('0x23')](_0x331695);}return _0x146db1[_0x98f5('0x24')]();};}function saveUpdates(_0x3dc7c2,_0x38b46d){return function(_0x5ac2b7){if(_0x5ac2b7){return _0x5ac2b7[_0x98f5('0x25')](_0x3dc7c2)['then'](function(_0xcb10d6){return _0xcb10d6;});}return null;};}function removeEntity(_0x495889,_0x44bfbb){return function(_0x40c69b){if(_0x40c69b){return _0x40c69b[_0x98f5('0x26')]()[_0x98f5('0x27')](function(){_0x495889[_0x98f5('0x1b')](0xcc)[_0x98f5('0x1a')]();});}};}function handleEntityNotFound(_0x46dbd4,_0x58d506){return function(_0x27a533){if(!_0x27a533){_0x46dbd4[_0x98f5('0x19')](0x194);}return _0x27a533;};}function handleError(_0x5d7423,_0x1a1c55){_0x1a1c55=_0x1a1c55||0x1f4;return function(_0x18b0af){logger[_0x98f5('0x28')](_0x18b0af[_0x98f5('0x29')]);if(_0x18b0af[_0x98f5('0x2a')]){delete _0x18b0af[_0x98f5('0x2a')];}_0x5d7423[_0x98f5('0x1b')](_0x1a1c55)[_0x98f5('0x2b')](_0x18b0af);};}exports['index']=function(_0x4c10b8,_0x428c85){var _0x71661e={},_0x18bb29={},_0x209d15={'count':0x0,'rows':[]};var _0x15bf92=_[_0x98f5('0x2c')](db['ZendeskAccount'][_0x98f5('0x2d')],function(_0x6d7418){return{'name':_0x6d7418[_0x98f5('0x2e')],'type':_0x6d7418[_0x98f5('0x2f')][_0x98f5('0x30')]};});_0x18bb29[_0x98f5('0x31')]=_['map'](_0x15bf92,_0x98f5('0x2a'));_0x18bb29[_0x98f5('0x32')]=_[_0x98f5('0x33')](_0x4c10b8[_0x98f5('0x32')]);_0x18bb29['filters']=_[_0x98f5('0x34')](_0x18bb29[_0x98f5('0x31')],_0x18bb29[_0x98f5('0x32')]);_0x71661e[_0x98f5('0x35')]=_[_0x98f5('0x34')](_0x18bb29[_0x98f5('0x31')],qs[_0x98f5('0x36')](_0x4c10b8[_0x98f5('0x32')][_0x98f5('0x36')]));_0x71661e[_0x98f5('0x35')]=_0x71661e[_0x98f5('0x35')][_0x98f5('0x37')]?_0x71661e[_0x98f5('0x35')]:_0x18bb29[_0x98f5('0x31')];if(!_0x4c10b8[_0x98f5('0x32')][_0x98f5('0x38')](_0x98f5('0x39'))){_0x71661e[_0x98f5('0x1e')]=qs[_0x98f5('0x1e')](_0x4c10b8[_0x98f5('0x32')]['limit']);_0x71661e[_0x98f5('0x1f')]=qs['offset'](_0x4c10b8['query'][_0x98f5('0x1f')]);}_0x71661e[_0x98f5('0x3a')]=qs[_0x98f5('0x3b')](_0x4c10b8[_0x98f5('0x32')]['sort']);_0x71661e[_0x98f5('0x3c')]=qs[_0x98f5('0x3d')](_[_0x98f5('0x3e')](_0x4c10b8['query'],_0x18bb29[_0x98f5('0x3d')]),_0x15bf92);if(_0x4c10b8[_0x98f5('0x32')]['filter']){_0x71661e[_0x98f5('0x3c')]=_[_0x98f5('0x3f')](_0x71661e[_0x98f5('0x3c')],{'$or':_['map'](_0x15bf92,function(_0x15d704){if(_0x15d704[_0x98f5('0x2f')]!==_0x98f5('0x40')){var _0x544fbf={};_0x544fbf[_0x15d704[_0x98f5('0x2a')]]={'$like':'%'+_0x4c10b8['query']['filter']+'%'};return _0x544fbf;}})});}_0x71661e=_[_0x98f5('0x3f')]({},_0x71661e,_0x4c10b8[_0x98f5('0x41')]);var _0x33e6e2={'where':_0x71661e[_0x98f5('0x3c')]};return db[_0x98f5('0x42')][_0x98f5('0x20')](_0x33e6e2)['then'](function(_0x4a4129){_0x209d15[_0x98f5('0x20')]=_0x4a4129;if(_0x4c10b8[_0x98f5('0x32')][_0x98f5('0x43')]){_0x71661e[_0x98f5('0x44')]=[{'all':!![]}];}return db['ZendeskAccount']['findAll'](_0x71661e);})[_0x98f5('0x27')](function(_0x469d2c){_0x209d15[_0x98f5('0x45')]=_0x469d2c;return _0x209d15;})[_0x98f5('0x27')](respondWithFilteredResult(_0x428c85,_0x71661e))['catch'](handleError(_0x428c85,null));};exports['show']=function(_0x3db067,_0x3a191f){var _0x372c33={'raw':![],'where':{'id':_0x3db067[_0x98f5('0x46')]['id']}},_0x4a9b53={};_0x4a9b53['model']=_[_0x98f5('0x33')](db['ZendeskAccount'][_0x98f5('0x2d')]);_0x4a9b53[_0x98f5('0x32')]=_[_0x98f5('0x33')](_0x3db067['query']);_0x4a9b53[_0x98f5('0x3d')]=_[_0x98f5('0x34')](_0x4a9b53['model'],_0x4a9b53[_0x98f5('0x32')]);_0x372c33[_0x98f5('0x35')]=_['intersection'](_0x4a9b53[_0x98f5('0x31')],qs['fields'](_0x3db067[_0x98f5('0x32')][_0x98f5('0x36')]));_0x372c33['attributes']=_0x372c33['attributes']['length']?_0x372c33['attributes']:_0x4a9b53[_0x98f5('0x31')];if(_0x3db067['query'][_0x98f5('0x43')]){_0x372c33[_0x98f5('0x44')]=[{'all':!![]}];}_0x372c33=_[_0x98f5('0x3f')]({},_0x372c33,_0x3db067[_0x98f5('0x41')]);return db[_0x98f5('0x42')][_0x98f5('0x47')](_0x372c33)['then'](handleEntityNotFound(_0x3a191f,null))[_0x98f5('0x27')](respondWithResult(_0x3a191f,null))[_0x98f5('0x48')](handleError(_0x3a191f,null));};exports[_0x98f5('0x49')]=function(_0x2c3cef,_0x178867){return db[_0x98f5('0x42')]['create'](_0x2c3cef[_0x98f5('0x4a')],{})[_0x98f5('0x27')](respondWithResult(_0x178867,0xc9))[_0x98f5('0x48')](handleError(_0x178867,null));};exports[_0x98f5('0x25')]=function(_0x4a0cda,_0x2c5f96){if(_0x4a0cda[_0x98f5('0x4a')]['id']){delete _0x4a0cda[_0x98f5('0x4a')]['id'];}return db[_0x98f5('0x42')][_0x98f5('0x47')]({'where':{'id':_0x4a0cda['params']['id']}})[_0x98f5('0x27')](handleEntityNotFound(_0x2c5f96,null))[_0x98f5('0x27')](saveUpdates(_0x4a0cda['body'],null))[_0x98f5('0x27')](respondWithResult(_0x2c5f96,null))['catch'](handleError(_0x2c5f96,null));};exports[_0x98f5('0x26')]=function(_0x4cb157,_0x1bd2b9){return db[_0x98f5('0x42')][_0x98f5('0x47')]({'where':{'id':_0x4cb157['params']['id']}})[_0x98f5('0x27')](handleEntityNotFound(_0x1bd2b9,null))[_0x98f5('0x27')](removeEntity(_0x1bd2b9,null))[_0x98f5('0x48')](handleError(_0x1bd2b9,null));};exports[_0x98f5('0x4b')]=function(_0xde3d2d,_0xf39073,_0x37e620){var _0x1891ac={};var _0x2c3a23={};var _0x2e48a1;var _0x50343c;return db[_0x98f5('0x42')][_0x98f5('0x4c')]({'where':{'id':_0xde3d2d[_0x98f5('0x46')]['id']}})[_0x98f5('0x27')](handleEntityNotFound(_0xf39073,null))[_0x98f5('0x27')](function(_0x23e955){if(_0x23e955){_0x2e48a1=_0x23e955;_0x2c3a23['model']=_[_0x98f5('0x33')](db[_0x98f5('0x4d')][_0x98f5('0x2d')]);_0x2c3a23[_0x98f5('0x32')]=_[_0x98f5('0x33')](_0xde3d2d[_0x98f5('0x32')]);_0x2c3a23['filters']=_['intersection'](_0x2c3a23['model'],_0x2c3a23[_0x98f5('0x32')]);_0x1891ac[_0x98f5('0x35')]=_[_0x98f5('0x34')](_0x2c3a23[_0x98f5('0x31')],qs['fields'](_0xde3d2d[_0x98f5('0x32')]['fields']));_0x1891ac[_0x98f5('0x35')]=_0x1891ac['attributes']['length']?_0x1891ac[_0x98f5('0x35')]:_0x2c3a23[_0x98f5('0x31')];_0x1891ac[_0x98f5('0x3a')]=qs['sort'](_0xde3d2d['query'][_0x98f5('0x3b')]);_0x1891ac[_0x98f5('0x3c')]=qs['filters'](_[_0x98f5('0x3e')](_0xde3d2d[_0x98f5('0x32')],_0x2c3a23['filters']));if(_0xde3d2d[_0x98f5('0x32')][_0x98f5('0x4e')]){_0x1891ac[_0x98f5('0x3c')]=_['merge'](_0x1891ac[_0x98f5('0x3c')],{'$or':_[_0x98f5('0x2c')](_0x1891ac[_0x98f5('0x35')],function(_0xabde69){var _0x459c64={};_0x459c64[_0xabde69]={'$like':'%'+_0xde3d2d[_0x98f5('0x32')][_0x98f5('0x4e')]+'%'};return _0x459c64;})});}_0x1891ac=_['merge']({},_0x1891ac,_0xde3d2d[_0x98f5('0x41')]);return _0x2e48a1[_0x98f5('0x4b')](_0x1891ac);}})[_0x98f5('0x27')](function(_0x58041d){if(_0x58041d){_0x50343c=_0x58041d['length'];if(!_0xde3d2d[_0x98f5('0x32')][_0x98f5('0x38')]('nolimit')){_0x1891ac['limit']=qs['limit'](_0xde3d2d['query'][_0x98f5('0x1e')]);_0x1891ac['offset']=qs[_0x98f5('0x1f')](_0xde3d2d[_0x98f5('0x32')][_0x98f5('0x1f')]);}return _0x2e48a1[_0x98f5('0x4b')](_0x1891ac);}})[_0x98f5('0x27')](function(_0x26cc86){if(_0x26cc86){return _0x26cc86?{'count':_0x50343c,'rows':_0x26cc86}:null;}})[_0x98f5('0x27')](respondWithResult(_0xf39073,null))[_0x98f5('0x48')](handleError(_0xf39073,null));};exports['addConfiguration']=function(_0x4d89b6,_0x3b8229,_0x505209){if(_0x4d89b6[_0x98f5('0x4a')]['id']){delete _0x4d89b6[_0x98f5('0x4a')]['id'];}return db[_0x98f5('0x42')]['findOne']({'where':{'id':_0x4d89b6[_0x98f5('0x46')]['id']}})['then'](handleEntityNotFound(_0x3b8229,null))['then'](function(_0x595aee){if(_0x595aee){_0x4d89b6[_0x98f5('0x4a')]['AccountId']=_0x595aee['id'];_0x4d89b6[_0x98f5('0x4a')][_0x98f5('0x4f')]=integrations[_0x98f5('0x50')](_0x4d89b6['body']['channel'],_0x4d89b6['body'][_0x98f5('0x2f')]);_0x4d89b6[_0x98f5('0x4a')]['Descriptions']=integrations['getDescriptions'](_0x4d89b6[_0x98f5('0x4a')][_0x98f5('0x51')],_0x4d89b6[_0x98f5('0x4a')][_0x98f5('0x2f')]);return db[_0x98f5('0x4d')][_0x98f5('0x49')](_0x4d89b6[_0x98f5('0x4a')],{'include':[{'model':db[_0x98f5('0x52')],'as':_0x98f5('0x4f')},{'model':db['ZendeskField'],'as':_0x98f5('0x53')}]});}return null;})[_0x98f5('0x27')](respondWithResult(_0x3b8229,null))[_0x98f5('0x48')](handleError(_0x3b8229,null));};exports[_0x98f5('0x54')]=function(_0x50911c,_0x3e00bf,_0x48b175){var _0x42c7a6='';return db['ZendeskAccount'][_0x98f5('0x4c')]({'where':{'id':_0x50911c[_0x98f5('0x46')]['id']},'attributes':['id','username',_0x98f5('0x55'),_0x98f5('0x56'),_0x98f5('0x57'),'remoteUri']})[_0x98f5('0x27')](handleEntityNotFound(_0x3e00bf,null))[_0x98f5('0x27')](function(_0x14c4f1){if(_0x14c4f1){_0x42c7a6=_0x14c4f1[_0x98f5('0x58')];var _0x154e19=_0x42c7a6[_0x98f5('0x59')](-0x1);if(_0x154e19==='/'){_0x42c7a6=_0x42c7a6[_0x98f5('0x5a')](0x0,_0x42c7a6[_0x98f5('0x5b')](_0x154e19));}var _0x368f76={'method':'GET','uri':util[_0x98f5('0x5c')]('%s/%s',_0x42c7a6,_0x98f5('0x5d')),'json':!![]};switch(_0x14c4f1[_0x98f5('0x57')]){case _0x98f5('0x55'):_0x368f76[_0x98f5('0x5e')]={'Authorization':util['format'](_0x98f5('0x5f'),new Buffer(util[_0x98f5('0x5c')]('%s:%s',_0x14c4f1[_0x98f5('0x60')],_0x14c4f1['password']))[_0x98f5('0x61')](_0x98f5('0x62')))};break;case _0x98f5('0x56'):_0x368f76[_0x98f5('0x5e')]={'Authorization':util['format']('Basic\x20%s',new Buffer(util[_0x98f5('0x5c')](_0x98f5('0x63'),_0x14c4f1['username'],_0x14c4f1[_0x98f5('0x56')]))[_0x98f5('0x61')](_0x98f5('0x62')))};break;default:throw new db[(_0x98f5('0x64'))][(_0x98f5('0x65'))](_0x98f5('0x66'));}return rp(_0x368f76);}})[_0x98f5('0x27')](function(_0x1a3cb8){if(_0x1a3cb8){var _0x2e0484=[_0x98f5('0x67'),_0x98f5('0x68'),'group','assignee'];_[_0x98f5('0x69')](_0x1a3cb8[_0x98f5('0x5d')],function(_0x10cd2d){return _0x2e0484['includes'](_0x10cd2d[_0x98f5('0x2f')]);});return{'count':_0x1a3cb8[_0x98f5('0x5d')]['length'],'rows':_[_0x98f5('0x2c')](_0x1a3cb8[_0x98f5('0x5d')],function(_0x4c1dda){return{'id':_0x4c1dda['id'],'name':_0x4c1dda['position']>0x7?_0x4c1dda['title']:_0x4c1dda['type'],'custom':_0x4c1dda[_0x98f5('0x6a')]>0x7?!![]:![],'options':_0x4c1dda[_0x98f5('0x6b')]?_0x4c1dda['system_field_options']:_0x4c1dda[_0x98f5('0x6c')]?_0x4c1dda[_0x98f5('0x6c')]:[]};})};}})['then'](respondWithResult(_0x3e00bf,null))[_0x98f5('0x48')](function(_0x4f582b){var _0x4814da=_0x50911c[_0x98f5('0x32')][_0x98f5('0x6d')]?0x1f4:_0x4f582b[_0x98f5('0x6e')]||0x1f4;logger[_0x98f5('0x28')]('getFields,\x20%s,\x20%s,\x20%s',_0x98f5('0x54'),_0x4814da,JSON['stringify'](_0x4f582b));delete _0x4f582b['name'];if(_0x4814da===0x191){_0x4814da=0x190;}_0x3e00bf['status'](_0x4814da)[_0x98f5('0x2b')](_0x50911c[_0x98f5('0x32')][_0x98f5('0x6d')]?{'message':_0x98f5('0x6f'),'statusCode':_0x4f582b[_0x98f5('0x6e')]}:_0x4f582b);});};
\ No newline at end of file
index 5912d4a..89a3bb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x543f=['moment','bluebird','request-promise','path','rimraf','../../components/integrations/configuration','define','ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api'];(function(_0x10956e,_0x76475){var _0x7e6b93=function(_0x303d80){while(--_0x303d80){_0x10956e['push'](_0x10956e['shift']());}};_0x7e6b93(++_0x76475);}(_0x543f,0x18f));var _0xf543=function(_0x387f37,_0x486033){_0x387f37=_0x387f37-0x0;var _0x2d64a9=_0x543f[_0x387f37];return _0x2d64a9;};'use strict';var _=require(_0xf543('0x0'));var util=require(_0xf543('0x1'));var logger=require(_0xf543('0x2'))(_0xf543('0x3'));var moment=require(_0xf543('0x4'));var BPromise=require(_0xf543('0x5'));var rp=require(_0xf543('0x6'));var fs=require('fs');var path=require(_0xf543('0x7'));var rimraf=require(_0xf543('0x8'));var config=require('../../config/environment');var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0xf543('0x9'));module['exports']=function(_0x58b240,_0x550c54){return _0x58b240[_0xf543('0xa')](_0xf543('0xb'),attributes,{'tableName':_0xf543('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3b82=['api','moment','bluebird','request-promise','path','rimraf','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger'];(function(_0x3112db,_0x737ba3){var _0x98b948=function(_0x484a55){while(--_0x484a55){_0x3112db['push'](_0x3112db['shift']());}};_0x98b948(++_0x737ba3);}(_0x3b82,0x115));var _0x23b8=function(_0x9ab282,_0x224526){_0x9ab282=_0x9ab282-0x0;var _0x3ae406=_0x3b82[_0x9ab282];return _0x3ae406;};'use strict';var _=require(_0x23b8('0x0'));var util=require(_0x23b8('0x1'));var logger=require(_0x23b8('0x2'))(_0x23b8('0x3'));var moment=require(_0x23b8('0x4'));var BPromise=require(_0x23b8('0x5'));var rp=require(_0x23b8('0x6'));var fs=require('fs');var path=require(_0x23b8('0x7'));var rimraf=require(_0x23b8('0x8'));var config=require('../../config/environment');var attributes=require(_0x23b8('0x9'));var integrations=require(_0x23b8('0xa'));module[_0x23b8('0xb')]=function(_0x1609e5,_0x5d1aeb){return _0x1609e5['define'](_0x23b8('0xc'),attributes,{'tableName':_0x23b8('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 731b394..233a239 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x529a=['ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetZendeskAccount','ZendeskAccount','findAll','options','where','attributes','limit','map','include','model','info','catch','ShowZendeskAccount','find','raw','lodash','moment','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x442cce,_0x59c499){var _0x90bbba=function(_0x9b16df){while(--_0x9b16df){_0x442cce['push'](_0x442cce['shift']());}};_0x90bbba(++_0x59c499);}(_0x529a,0x77));var _0xa529=function(_0x599e60,_0x5b6519){_0x599e60=_0x599e60-0x0;var _0x468e19=_0x529a[_0x599e60];return _0x468e19;};'use strict';var _=require(_0xa529('0x0'));var util=require('util');var moment=require(_0xa529('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa529('0x2'));var db=require(_0xa529('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa529('0x4'));var config=require(_0xa529('0x5'));var jayson=require(_0xa529('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3a62c2,_0x220550,_0x2c5be2){return new BPromise(function(_0x2a2db7,_0x4b04a9){return client[_0xa529('0x7')](_0x3a62c2,_0x2c5be2)[_0xa529('0x8')](function(_0x119fd2){logger['info'](_0xa529('0x9'),_0x220550,_0xa529('0xa'));logger[_0xa529('0xb')](_0xa529('0xc'),_0x220550,_0xa529('0xa'),JSON[_0xa529('0xd')](_0x119fd2));if(_0x119fd2[_0xa529('0xe')]){if(_0x119fd2[_0xa529('0xe')][_0xa529('0xf')]===0x1f4){logger[_0xa529('0xe')]('ZendeskAccount,\x20%s,\x20%s',_0x220550,_0x119fd2[_0xa529('0xe')][_0xa529('0x10')]);return _0x4b04a9(_0x119fd2[_0xa529('0xe')][_0xa529('0x10')]);}logger['error'](_0xa529('0x9'),_0x220550,_0x119fd2['error']['message']);return _0x2a2db7(_0x119fd2[_0xa529('0xe')][_0xa529('0x10')]);}else{logger['info'](_0xa529('0x9'),_0x220550,_0xa529('0xa'));_0x2a2db7(_0x119fd2['result']['message']);}})['catch'](function(_0x2c1480){logger['error'](_0xa529('0x9'),_0x220550,_0x2c1480);_0x4b04a9(_0x2c1480);});});}exports[_0xa529('0x11')]=function(_0x463687){var _0xced673=this;return new Promise(function(_0x37c9c9,_0x5f25fc){return db[_0xa529('0x12')][_0xa529('0x13')]({'raw':_0x463687[_0xa529('0x14')]?_0x463687[_0xa529('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x463687[_0xa529('0x14')]?_0x463687[_0xa529('0x14')][_0xa529('0x15')]||null:null,'attributes':_0x463687['options']?_0x463687[_0xa529('0x14')][_0xa529('0x16')]||null:null,'limit':_0x463687[_0xa529('0x14')]?_0x463687[_0xa529('0x14')][_0xa529('0x17')]||null:null,'include':_0x463687['options']?_0x463687['options']['include']?_[_0xa529('0x18')](_0x463687[_0xa529('0x14')][_0xa529('0x19')],function(_0x39c0d3){return{'model':db[_0x39c0d3[_0xa529('0x1a')]],'as':_0x39c0d3['as'],'attributes':_0x39c0d3['attributes'],'include':_0x39c0d3[_0xa529('0x19')]?_[_0xa529('0x18')](_0x39c0d3[_0xa529('0x19')],function(_0x19cbe){return{'model':db[_0x19cbe[_0xa529('0x1a')]],'as':_0x19cbe['as'],'attributes':_0x19cbe[_0xa529('0x16')],'include':_0x19cbe[_0xa529('0x19')]?_['map'](_0x19cbe[_0xa529('0x19')],function(_0x2c6921){return{'model':db[_0x2c6921[_0xa529('0x1a')]],'as':_0x2c6921['as'],'attributes':_0x2c6921[_0xa529('0x16')]};}):[]};}):[]};}):[]:[]})[_0xa529('0x8')](function(_0x1be6e0){logger[_0xa529('0x1b')]('GetZendeskAccount',_0x463687);logger[_0xa529('0xb')]('GetZendeskAccount',_0x463687,JSON[_0xa529('0xd')](_0x1be6e0));_0x37c9c9(_0x1be6e0);})[_0xa529('0x1c')](function(_0x228c7e){logger[_0xa529('0xe')](_0xa529('0x11'),_0x228c7e[_0xa529('0x10')],_0x463687);_0x5f25fc(_0xced673[_0xa529('0xe')](0x1f4,_0x228c7e['message']));});});};exports[_0xa529('0x1d')]=function(_0x2bbcdd){var _0x14ce3f=this;return new Promise(function(_0x370076,_0x30d291){return db[_0xa529('0x12')][_0xa529('0x1e')]({'raw':_0x2bbcdd[_0xa529('0x14')]?_0x2bbcdd[_0xa529('0x14')][_0xa529('0x1f')]===undefined?!![]:![]:!![],'where':_0x2bbcdd[_0xa529('0x14')]?_0x2bbcdd[_0xa529('0x14')]['where']||null:null,'attributes':_0x2bbcdd[_0xa529('0x14')]?_0x2bbcdd['options'][_0xa529('0x16')]||null:null,'include':_0x2bbcdd[_0xa529('0x14')]?_0x2bbcdd[_0xa529('0x14')][_0xa529('0x19')]?_['map'](_0x2bbcdd[_0xa529('0x14')][_0xa529('0x19')],function(_0x59700a){return{'model':db[_0x59700a['model']],'as':_0x59700a['as'],'attributes':_0x59700a['attributes'],'include':_0x59700a[_0xa529('0x19')]?_[_0xa529('0x18')](_0x59700a[_0xa529('0x19')],function(_0x2cef98){return{'model':db[_0x2cef98[_0xa529('0x1a')]],'as':_0x2cef98['as'],'attributes':_0x2cef98['attributes'],'include':_0x2cef98[_0xa529('0x19')]?_[_0xa529('0x18')](_0x2cef98['include'],function(_0x46c276){return{'model':db[_0x46c276['model']],'as':_0x46c276['as'],'attributes':_0x46c276['attributes']};}):[]};}):[]};}):[]:[]})[_0xa529('0x8')](function(_0x185923){logger['info']('ShowZendeskAccount',_0x2bbcdd);logger[_0xa529('0xb')]('ShowZendeskAccount',_0x2bbcdd,JSON[_0xa529('0xd')](_0x185923));_0x370076(_0x185923);})['catch'](function(_0x49ac81){logger[_0xa529('0xe')](_0xa529('0x1d'),_0x49ac81[_0xa529('0x10')],_0x2bbcdd);_0x30d291(_0x14ce3f[_0xa529('0xe')](0x1f4,_0x49ac81[_0xa529('0x10')]));});});};
\ No newline at end of file
+var _0xbdf9=['map','model','stringify','ShowZendeskAccount','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','error','message','request\x20sent','result','catch','GetZendeskAccount','ZendeskAccount','options','raw','where','attributes','limit','include'];(function(_0x126699,_0x2987f0){var _0x766892=function(_0x2b5b81){while(--_0x2b5b81){_0x126699['push'](_0x126699['shift']());}};_0x766892(++_0x2987f0);}(_0xbdf9,0x1e0));var _0x9bdf=function(_0x4fa738,_0x2a491c){_0x4fa738=_0x4fa738-0x0;var _0x55bf55=_0xbdf9[_0x4fa738];return _0x55bf55;};'use strict';var _=require(_0x9bdf('0x0'));var util=require(_0x9bdf('0x1'));var moment=require(_0x9bdf('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9bdf('0x3'));var db=require(_0x9bdf('0x4'))['db'];var utils=require(_0x9bdf('0x5'));var logger=require(_0x9bdf('0x6'))(_0x9bdf('0x7'));var config=require(_0x9bdf('0x8'));var jayson=require(_0x9bdf('0x9'));var client=jayson[_0x9bdf('0xa')][_0x9bdf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5465d3,_0x297f4d,_0x570611){return new BPromise(function(_0x5937c7,_0x303555){return client['request'](_0x5465d3,_0x570611)[_0x9bdf('0xc')](function(_0x4959c1){logger[_0x9bdf('0xd')](_0x9bdf('0xe'),_0x297f4d,'request\x20sent');logger[_0x9bdf('0xf')](_0x9bdf('0x10'),_0x297f4d,'request\x20sent',JSON['stringify'](_0x4959c1));if(_0x4959c1['error']){if(_0x4959c1[_0x9bdf('0x11')]['code']===0x1f4){logger['error'](_0x9bdf('0xe'),_0x297f4d,_0x4959c1[_0x9bdf('0x11')][_0x9bdf('0x12')]);return _0x303555(_0x4959c1[_0x9bdf('0x11')][_0x9bdf('0x12')]);}logger[_0x9bdf('0x11')]('ZendeskAccount,\x20%s,\x20%s',_0x297f4d,_0x4959c1[_0x9bdf('0x11')][_0x9bdf('0x12')]);return _0x5937c7(_0x4959c1[_0x9bdf('0x11')]['message']);}else{logger[_0x9bdf('0xd')](_0x9bdf('0xe'),_0x297f4d,_0x9bdf('0x13'));_0x5937c7(_0x4959c1[_0x9bdf('0x14')][_0x9bdf('0x12')]);}})[_0x9bdf('0x15')](function(_0x460995){logger[_0x9bdf('0x11')](_0x9bdf('0xe'),_0x297f4d,_0x460995);_0x303555(_0x460995);});});}exports[_0x9bdf('0x16')]=function(_0x366fb7){var _0x2a3dbe=this;return new Promise(function(_0x403bec,_0x3142cc){return db[_0x9bdf('0x17')]['findAll']({'raw':_0x366fb7[_0x9bdf('0x18')]?_0x366fb7[_0x9bdf('0x18')][_0x9bdf('0x19')]===undefined?!![]:![]:!![],'where':_0x366fb7[_0x9bdf('0x18')]?_0x366fb7['options'][_0x9bdf('0x1a')]||null:null,'attributes':_0x366fb7['options']?_0x366fb7[_0x9bdf('0x18')][_0x9bdf('0x1b')]||null:null,'limit':_0x366fb7[_0x9bdf('0x18')]?_0x366fb7[_0x9bdf('0x18')][_0x9bdf('0x1c')]||null:null,'include':_0x366fb7[_0x9bdf('0x18')]?_0x366fb7[_0x9bdf('0x18')][_0x9bdf('0x1d')]?_[_0x9bdf('0x1e')](_0x366fb7[_0x9bdf('0x18')]['include'],function(_0x26301c){return{'model':db[_0x26301c[_0x9bdf('0x1f')]],'as':_0x26301c['as'],'attributes':_0x26301c[_0x9bdf('0x1b')],'include':_0x26301c[_0x9bdf('0x1d')]?_[_0x9bdf('0x1e')](_0x26301c[_0x9bdf('0x1d')],function(_0x4eaef3){return{'model':db[_0x4eaef3[_0x9bdf('0x1f')]],'as':_0x4eaef3['as'],'attributes':_0x4eaef3['attributes'],'include':_0x4eaef3[_0x9bdf('0x1d')]?_[_0x9bdf('0x1e')](_0x4eaef3[_0x9bdf('0x1d')],function(_0x3763bf){return{'model':db[_0x3763bf[_0x9bdf('0x1f')]],'as':_0x3763bf['as'],'attributes':_0x3763bf[_0x9bdf('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x9bdf('0xc')](function(_0x35b202){logger[_0x9bdf('0xd')](_0x9bdf('0x16'),_0x366fb7);logger[_0x9bdf('0xf')](_0x9bdf('0x16'),_0x366fb7,JSON[_0x9bdf('0x20')](_0x35b202));_0x403bec(_0x35b202);})[_0x9bdf('0x15')](function(_0x126103){logger[_0x9bdf('0x11')](_0x9bdf('0x16'),_0x126103[_0x9bdf('0x12')],_0x366fb7);_0x3142cc(_0x2a3dbe['error'](0x1f4,_0x126103[_0x9bdf('0x12')]));});});};exports['ShowZendeskAccount']=function(_0x5a70a6){var _0x4c4df3=this;return new Promise(function(_0x20d70d,_0x553409){return db['ZendeskAccount']['find']({'raw':_0x5a70a6[_0x9bdf('0x18')]?_0x5a70a6[_0x9bdf('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x5a70a6[_0x9bdf('0x18')]?_0x5a70a6[_0x9bdf('0x18')][_0x9bdf('0x1a')]||null:null,'attributes':_0x5a70a6[_0x9bdf('0x18')]?_0x5a70a6[_0x9bdf('0x18')][_0x9bdf('0x1b')]||null:null,'include':_0x5a70a6['options']?_0x5a70a6[_0x9bdf('0x18')][_0x9bdf('0x1d')]?_[_0x9bdf('0x1e')](_0x5a70a6[_0x9bdf('0x18')]['include'],function(_0x33b53a){return{'model':db[_0x33b53a[_0x9bdf('0x1f')]],'as':_0x33b53a['as'],'attributes':_0x33b53a['attributes'],'include':_0x33b53a['include']?_[_0x9bdf('0x1e')](_0x33b53a[_0x9bdf('0x1d')],function(_0x211239){return{'model':db[_0x211239['model']],'as':_0x211239['as'],'attributes':_0x211239['attributes'],'include':_0x211239[_0x9bdf('0x1d')]?_[_0x9bdf('0x1e')](_0x211239['include'],function(_0x1062b8){return{'model':db[_0x1062b8[_0x9bdf('0x1f')]],'as':_0x1062b8['as'],'attributes':_0x1062b8[_0x9bdf('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3ab5a0){logger[_0x9bdf('0xd')]('ShowZendeskAccount',_0x5a70a6);logger[_0x9bdf('0xf')](_0x9bdf('0x21'),_0x5a70a6,JSON[_0x9bdf('0x20')](_0x3ab5a0));_0x20d70d(_0x3ab5a0);})[_0x9bdf('0x15')](function(_0x1dd5ef){logger[_0x9bdf('0x11')](_0x9bdf('0x21'),_0x1dd5ef[_0x9bdf('0x12')],_0x5a70a6);_0x553409(_0x4c4df3[_0x9bdf('0x11')](0x1f4,_0x1dd5ef[_0x9bdf('0x12')]));});});};
\ No newline at end of file
index 2a58f61..4528b11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb688=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','update','exports','util'];(function(_0xea6018,_0x4cf082){var _0x57b54d=function(_0x49099a){while(--_0x49099a){_0xea6018['push'](_0xea6018['shift']());}};_0x57b54d(++_0x4cf082);}(_0xb688,0xcf));var _0x8b68=function(_0x328f06,_0x475748){_0x328f06=_0x328f06-0x0;var _0xce756b=_0xb688[_0x328f06];return _0xce756b;};'use strict';var multer=require('multer');var util=require(_0x8b68('0x0'));var path=require(_0x8b68('0x1'));var timeout=require(_0x8b68('0x2'));var express=require(_0x8b68('0x3'));var router=express[_0x8b68('0x4')]();var fs_extra=require(_0x8b68('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8b68('0x6'));var config=require(_0x8b68('0x7'));var controller=require(_0x8b68('0x8'));router[_0x8b68('0x9')]('/',auth['isAuthenticated'](),controller[_0x8b68('0xa')]);router['get'](_0x8b68('0xb'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xd')]);router[_0x8b68('0x9')](_0x8b68('0xe'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xf')]);router[_0x8b68('0x9')](_0x8b68('0x10'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x11')]);router[_0x8b68('0x9')](_0x8b68('0x12'),auth['isAuthenticated'](),controller[_0x8b68('0x13')]);router[_0x8b68('0x9')](_0x8b68('0x14'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x15')]);router[_0x8b68('0x16')]('/',auth[_0x8b68('0xc')](),controller[_0x8b68('0x17')]);router[_0x8b68('0x16')]('/:id/tags',auth[_0x8b68('0xc')](),controller['setTags']);router['put'](_0x8b68('0xb'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x18')]);router['delete']('/:id',auth[_0x8b68('0xc')](),controller['destroy']);module[_0x8b68('0x19')]=router;
\ No newline at end of file
+var _0xb688=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','update','exports','util'];(function(_0xfb0281,_0x3ff38b){var _0x408dd3=function(_0x5d8017){while(--_0x5d8017){_0xfb0281['push'](_0xfb0281['shift']());}};_0x408dd3(++_0x3ff38b);}(_0xb688,0xcf));var _0x8b68=function(_0x48a090,_0x18f002){_0x48a090=_0x48a090-0x0;var _0x321bad=_0xb688[_0x48a090];return _0x321bad;};'use strict';var multer=require('multer');var util=require(_0x8b68('0x0'));var path=require(_0x8b68('0x1'));var timeout=require(_0x8b68('0x2'));var express=require(_0x8b68('0x3'));var router=express[_0x8b68('0x4')]();var fs_extra=require(_0x8b68('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8b68('0x6'));var config=require(_0x8b68('0x7'));var controller=require(_0x8b68('0x8'));router[_0x8b68('0x9')]('/',auth['isAuthenticated'](),controller[_0x8b68('0xa')]);router['get'](_0x8b68('0xb'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xd')]);router[_0x8b68('0x9')](_0x8b68('0xe'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xf')]);router[_0x8b68('0x9')](_0x8b68('0x10'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x11')]);router[_0x8b68('0x9')](_0x8b68('0x12'),auth['isAuthenticated'](),controller[_0x8b68('0x13')]);router[_0x8b68('0x9')](_0x8b68('0x14'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x15')]);router[_0x8b68('0x16')]('/',auth[_0x8b68('0xc')](),controller[_0x8b68('0x17')]);router[_0x8b68('0x16')]('/:id/tags',auth[_0x8b68('0xc')](),controller['setTags']);router['put'](_0x8b68('0xb'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x18')]);router['delete']('/:id',auth[_0x8b68('0xc')](),controller['destroy']);module[_0x8b68('0x19')]=router;
\ No newline at end of file
index b7cb396..bf3c8d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5771=['exports','STRING','sequelize'];(function(_0x15aa33,_0x51dc55){var _0x2bc27e=function(_0x421a28){while(--_0x421a28){_0x15aa33['push'](_0x15aa33['shift']());}};_0x2bc27e(++_0x51dc55);}(_0x5771,0x10d));var _0x1577=function(_0x1d0fd8,_0xea6779){_0x1d0fd8=_0x1d0fd8-0x0;var _0x346324=_0x5771[_0x1d0fd8];return _0x346324;};'use strict';var Sequelize=require(_0x1577('0x0'));module[_0x1577('0x1')]={'name':{'type':Sequelize[_0x1577('0x2')]},'description':{'type':Sequelize[_0x1577('0x2')]}};
\ No newline at end of file
+var _0x7b53=['sequelize','exports','STRING'];(function(_0x1ed46f,_0x7691d7){var _0x43b931=function(_0x5f2454){while(--_0x5f2454){_0x1ed46f['push'](_0x1ed46f['shift']());}};_0x43b931(++_0x7691d7);}(_0x7b53,0x153));var _0x37b5=function(_0x19faf8,_0x2bc510){_0x19faf8=_0x19faf8-0x0;var _0x56319f=_0x7b53[_0x19faf8];return _0x56319f;};'use strict';var Sequelize=require(_0x37b5('0x0'));module[_0x37b5('0x1')]={'name':{'type':Sequelize[_0x37b5('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d35f5c0..6c98d91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1023=['undefined','limit','count','json','apply','reject','then','error','stack','name','index','ZendeskConfiguration','rawAttributes','fieldName','type','map','keys','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','includeAll','rows','catch','show','params','filters','options','find','create','body','update','getFields','findOne','ZendeskField','sort','getSubjects','getDescriptions','getTags','setTags','ids','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset'];(function(_0x2583dd,_0x3d90ea){var _0xf2f2fa=function(_0x4a8ba7){while(--_0x4a8ba7){_0x2583dd['push'](_0x2583dd['shift']());}};_0xf2f2fa(++_0x3d90ea);}(_0x1023,0x11f));var _0x3102=function(_0x260f45,_0x404e99){_0x260f45=_0x260f45-0x0;var _0x56a249=_0x1023[_0x260f45];return _0x56a249;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3102('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3102('0x1'));var rp=require(_0x3102('0x2'));var moment=require(_0x3102('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3102('0x4'));var util=require(_0x3102('0x5'));var path=require(_0x3102('0x6'));var sox=require('sox');var csv=require(_0x3102('0x7'));var ejs=require(_0x3102('0x8'));var fs=require('fs');var fs_extra=require(_0x3102('0x9'));var _=require(_0x3102('0xa'));var squel=require(_0x3102('0xb'));var crypto=require('crypto');var jsforce=require(_0x3102('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x3102('0x7'));var querystring=require(_0x3102('0xd'));var Papa=require(_0x3102('0xe'));var Redis=require('ioredis');var authService=require(_0x3102('0xf'));var qs=require(_0x3102('0x10'));var as=require(_0x3102('0x11'));var hardwareService=require(_0x3102('0x12'));var logger=require(_0x3102('0x13'))(_0x3102('0x14'));var utils=require(_0x3102('0x15'));var config=require(_0x3102('0x16'));var licenseUtil=require(_0x3102('0x17'));var db=require(_0x3102('0x18'))['db'];function respondWithStatusCode(_0xe9d474,_0x2d33cf){_0x2d33cf=_0x2d33cf||0xcc;return function(_0x17d7c7){if(_0x17d7c7){return _0xe9d474[_0x3102('0x19')](_0x2d33cf);}return _0xe9d474[_0x3102('0x1a')](_0x2d33cf)[_0x3102('0x1b')]();};}function respondWithResult(_0x3f877a,_0xf7756){_0xf7756=_0xf7756||0xc8;return function(_0x3ec5a0){if(_0x3ec5a0){return _0x3f877a[_0x3102('0x1a')](_0xf7756)['json'](_0x3ec5a0);}};}function respondWithFilteredResult(_0x221415,_0x572cc1){return function(_0x2634a7){if(_0x2634a7){var _0x477e17=typeof _0x572cc1[_0x3102('0x1c')]===_0x3102('0x1d')&&typeof _0x572cc1[_0x3102('0x1e')]==='undefined';var _0x1cb136=_0x2634a7[_0x3102('0x1f')];var _0x135e37=_0x477e17?0x0:_0x572cc1[_0x3102('0x1c')];var _0xa48d88=_0x477e17?_0x2634a7['count']:_0x572cc1[_0x3102('0x1c')]+_0x572cc1[_0x3102('0x1e')];var _0x1d493e;if(_0xa48d88>=_0x1cb136){_0xa48d88=_0x1cb136;_0x1d493e=0xc8;}else{_0x1d493e=0xce;}_0x221415['status'](_0x1d493e);return _0x221415['set']('Content-Range',_0x135e37+'-'+_0xa48d88+'/'+_0x1cb136)[_0x3102('0x20')](_0x2634a7);}return null;};}function patchUpdates(_0x500a95){return function(_0x21291c){try{jsonpatch[_0x3102('0x21')](_0x21291c,_0x500a95,!![]);}catch(_0x546a83){return BPromise[_0x3102('0x22')](_0x546a83);}return _0x21291c['save']();};}function saveUpdates(_0x2507ba,_0x4cc4fc){return function(_0x46b1cf){if(_0x46b1cf){return _0x46b1cf['update'](_0x2507ba)[_0x3102('0x23')](function(_0x145513){return _0x145513;});}return null;};}function removeEntity(_0x4af3b6,_0x3d3499){return function(_0x2af14e){if(_0x2af14e){return _0x2af14e['destroy']()[_0x3102('0x23')](function(){_0x4af3b6['status'](0xcc)[_0x3102('0x1b')]();});}};}function handleEntityNotFound(_0x3dd1c0,_0x51052f){return function(_0x22a204){if(!_0x22a204){_0x3dd1c0['sendStatus'](0x194);}return _0x22a204;};}function handleError(_0x10a1cb,_0x597f4f){_0x597f4f=_0x597f4f||0x1f4;return function(_0x331fea){logger[_0x3102('0x24')](_0x331fea[_0x3102('0x25')]);if(_0x331fea[_0x3102('0x26')]){delete _0x331fea['name'];}_0x10a1cb[_0x3102('0x1a')](_0x597f4f)['send'](_0x331fea);};}exports[_0x3102('0x27')]=function(_0x37980d,_0x2bb6d5){var _0x23815e={},_0x3d5828={},_0x20351f={'count':0x0,'rows':[]};var _0xcf191f=_['map'](db[_0x3102('0x28')][_0x3102('0x29')],function(_0x41d305){return{'name':_0x41d305[_0x3102('0x2a')],'type':_0x41d305[_0x3102('0x2b')]['key']};});_0x3d5828['model']=_[_0x3102('0x2c')](_0xcf191f,'name');_0x3d5828['query']=_[_0x3102('0x2d')](_0x37980d['query']);_0x3d5828['filters']=_[_0x3102('0x2e')](_0x3d5828[_0x3102('0x2f')],_0x3d5828[_0x3102('0x30')]);_0x23815e[_0x3102('0x31')]=_[_0x3102('0x2e')](_0x3d5828[_0x3102('0x2f')],qs['fields'](_0x37980d[_0x3102('0x30')][_0x3102('0x32')]));_0x23815e[_0x3102('0x31')]=_0x23815e['attributes'][_0x3102('0x33')]?_0x23815e[_0x3102('0x31')]:_0x3d5828['model'];if(!_0x37980d[_0x3102('0x30')][_0x3102('0x34')](_0x3102('0x35'))){_0x23815e[_0x3102('0x1e')]=qs[_0x3102('0x1e')](_0x37980d[_0x3102('0x30')]['limit']);_0x23815e[_0x3102('0x1c')]=qs[_0x3102('0x1c')](_0x37980d[_0x3102('0x30')]['offset']);}_0x23815e[_0x3102('0x36')]=qs['sort'](_0x37980d[_0x3102('0x30')]['sort']);_0x23815e[_0x3102('0x37')]=qs['filters'](_[_0x3102('0x38')](_0x37980d[_0x3102('0x30')],_0x3d5828['filters']),_0xcf191f);if(_0x37980d[_0x3102('0x30')][_0x3102('0x39')]){_0x23815e[_0x3102('0x37')]=_['merge'](_0x23815e[_0x3102('0x37')],{'$or':_[_0x3102('0x2c')](_0xcf191f,function(_0x30b1a1){if(_0x30b1a1[_0x3102('0x2b')]!=='VIRTUAL'){var _0x5c6b14={};_0x5c6b14[_0x30b1a1[_0x3102('0x26')]]={'$like':'%'+_0x37980d[_0x3102('0x30')][_0x3102('0x39')]+'%'};return _0x5c6b14;}})});}_0x23815e=_[_0x3102('0x3a')]({},_0x23815e,_0x37980d['options']);var _0x35e2e8={'where':_0x23815e[_0x3102('0x37')]};return db['ZendeskConfiguration'][_0x3102('0x1f')](_0x35e2e8)[_0x3102('0x23')](function(_0x2d3789){_0x20351f[_0x3102('0x1f')]=_0x2d3789;if(_0x37980d[_0x3102('0x30')][_0x3102('0x3b')]){_0x23815e['include']=[{'all':!![]}];}return db['ZendeskConfiguration']['findAll'](_0x23815e);})['then'](function(_0x4b9f37){_0x20351f[_0x3102('0x3c')]=_0x4b9f37;return _0x20351f;})[_0x3102('0x23')](respondWithFilteredResult(_0x2bb6d5,_0x23815e))[_0x3102('0x3d')](handleError(_0x2bb6d5,null));};exports[_0x3102('0x3e')]=function(_0x4cb715,_0x1d301f){var _0x3af365={'raw':![],'where':{'id':_0x4cb715[_0x3102('0x3f')]['id']}},_0x318ddd={};_0x318ddd['model']=_['keys'](db['ZendeskConfiguration'][_0x3102('0x29')]);_0x318ddd['query']=_[_0x3102('0x2d')](_0x4cb715[_0x3102('0x30')]);_0x318ddd[_0x3102('0x40')]=_[_0x3102('0x2e')](_0x318ddd['model'],_0x318ddd['query']);_0x3af365[_0x3102('0x31')]=_[_0x3102('0x2e')](_0x318ddd[_0x3102('0x2f')],qs[_0x3102('0x32')](_0x4cb715[_0x3102('0x30')][_0x3102('0x32')]));_0x3af365[_0x3102('0x31')]=_0x3af365['attributes'][_0x3102('0x33')]?_0x3af365[_0x3102('0x31')]:_0x318ddd['model'];if(_0x4cb715[_0x3102('0x30')][_0x3102('0x3b')]){_0x3af365['include']=[{'all':!![]}];}_0x3af365=_['merge']({},_0x3af365,_0x4cb715[_0x3102('0x41')]);return db[_0x3102('0x28')][_0x3102('0x42')](_0x3af365)['then'](handleEntityNotFound(_0x1d301f,null))['then'](respondWithResult(_0x1d301f,null))['catch'](handleError(_0x1d301f,null));};exports[_0x3102('0x43')]=function(_0x573aee,_0x3a5959){return db[_0x3102('0x28')][_0x3102('0x43')](_0x573aee[_0x3102('0x44')],{})['then'](respondWithResult(_0x3a5959,0xc9))['catch'](handleError(_0x3a5959,null));};exports[_0x3102('0x45')]=function(_0x3e032d,_0x5b6cf5){if(_0x3e032d[_0x3102('0x44')]['id']){delete _0x3e032d[_0x3102('0x44')]['id'];}return db[_0x3102('0x28')]['find']({'where':{'id':_0x3e032d['params']['id']}})[_0x3102('0x23')](handleEntityNotFound(_0x5b6cf5,null))[_0x3102('0x23')](saveUpdates(_0x3e032d[_0x3102('0x44')],null))[_0x3102('0x23')](respondWithResult(_0x5b6cf5,null))[_0x3102('0x3d')](handleError(_0x5b6cf5,null));};exports['destroy']=function(_0x17731e,_0x316ae0){return db[_0x3102('0x28')][_0x3102('0x42')]({'where':{'id':_0x17731e[_0x3102('0x3f')]['id']}})[_0x3102('0x23')](handleEntityNotFound(_0x316ae0,null))[_0x3102('0x23')](removeEntity(_0x316ae0,null))['catch'](handleError(_0x316ae0,null));};exports[_0x3102('0x46')]=function(_0x2ab737,_0xcf4f2f,_0x7795){var _0x542af0={};var _0x371d96={};var _0x157f3c;var _0xa1283a;return db['ZendeskConfiguration'][_0x3102('0x47')]({'where':{'id':_0x2ab737[_0x3102('0x3f')]['id']}})[_0x3102('0x23')](handleEntityNotFound(_0xcf4f2f,null))[_0x3102('0x23')](function(_0x2d5657){if(_0x2d5657){_0x157f3c=_0x2d5657;_0x371d96[_0x3102('0x2f')]=_[_0x3102('0x2d')](db[_0x3102('0x48')][_0x3102('0x29')]);_0x371d96['query']=_[_0x3102('0x2d')](_0x2ab737['query']);_0x371d96[_0x3102('0x40')]=_[_0x3102('0x2e')](_0x371d96[_0x3102('0x2f')],_0x371d96[_0x3102('0x30')]);_0x542af0[_0x3102('0x31')]=_['intersection'](_0x371d96[_0x3102('0x2f')],qs[_0x3102('0x32')](_0x2ab737[_0x3102('0x30')][_0x3102('0x32')]));_0x542af0[_0x3102('0x31')]=_0x542af0['attributes'][_0x3102('0x33')]?_0x542af0[_0x3102('0x31')]:_0x371d96[_0x3102('0x2f')];_0x542af0[_0x3102('0x36')]=qs[_0x3102('0x49')](_0x2ab737[_0x3102('0x30')][_0x3102('0x49')]);_0x542af0[_0x3102('0x37')]=qs[_0x3102('0x40')](_[_0x3102('0x38')](_0x2ab737['query'],_0x371d96[_0x3102('0x40')]));if(_0x2ab737['query']['filter']){_0x542af0[_0x3102('0x37')]=_[_0x3102('0x3a')](_0x542af0[_0x3102('0x37')],{'$or':_[_0x3102('0x2c')](_0x542af0['attributes'],function(_0x1f62b9){var _0x1eec8d={};_0x1eec8d[_0x1f62b9]={'$like':'%'+_0x2ab737[_0x3102('0x30')][_0x3102('0x39')]+'%'};return _0x1eec8d;})});}_0x542af0=_[_0x3102('0x3a')]({},_0x542af0,_0x2ab737[_0x3102('0x41')]);return _0x157f3c['getFields'](_0x542af0);}})['then'](function(_0x39e50c){if(_0x39e50c){_0xa1283a=_0x39e50c[_0x3102('0x33')];if(!_0x2ab737[_0x3102('0x30')][_0x3102('0x34')](_0x3102('0x35'))){_0x542af0[_0x3102('0x1e')]=qs['limit'](_0x2ab737['query'][_0x3102('0x1e')]);_0x542af0[_0x3102('0x1c')]=qs[_0x3102('0x1c')](_0x2ab737[_0x3102('0x30')][_0x3102('0x1c')]);}return _0x157f3c[_0x3102('0x46')](_0x542af0);}})['then'](function(_0x5aa737){if(_0x5aa737){return _0x5aa737?{'count':_0xa1283a,'rows':_0x5aa737}:null;}})[_0x3102('0x23')](respondWithResult(_0xcf4f2f,null))['catch'](handleError(_0xcf4f2f,null));};exports[_0x3102('0x4a')]=function(_0x415f1d,_0x409a71,_0x5b7a64){var _0x1aa61a={};var _0x27d068={};var _0x4932c8;var _0x5c417a;return db['ZendeskConfiguration'][_0x3102('0x47')]({'where':{'id':_0x415f1d[_0x3102('0x3f')]['id']}})[_0x3102('0x23')](handleEntityNotFound(_0x409a71,null))['then'](function(_0x10d434){if(_0x10d434){_0x4932c8=_0x10d434;_0x27d068[_0x3102('0x2f')]=_[_0x3102('0x2d')](db[_0x3102('0x48')][_0x3102('0x29')]);_0x27d068[_0x3102('0x30')]=_['keys'](_0x415f1d[_0x3102('0x30')]);_0x27d068['filters']=_[_0x3102('0x2e')](_0x27d068[_0x3102('0x2f')],_0x27d068['query']);_0x1aa61a[_0x3102('0x31')]=_[_0x3102('0x2e')](_0x27d068[_0x3102('0x2f')],qs[_0x3102('0x32')](_0x415f1d[_0x3102('0x30')][_0x3102('0x32')]));_0x1aa61a[_0x3102('0x31')]=_0x1aa61a[_0x3102('0x31')][_0x3102('0x33')]?_0x1aa61a[_0x3102('0x31')]:_0x27d068[_0x3102('0x2f')];_0x1aa61a[_0x3102('0x36')]=qs[_0x3102('0x49')](_0x415f1d[_0x3102('0x30')][_0x3102('0x49')]);_0x1aa61a[_0x3102('0x37')]=qs[_0x3102('0x40')](_[_0x3102('0x38')](_0x415f1d[_0x3102('0x30')],_0x27d068[_0x3102('0x40')]));if(_0x415f1d[_0x3102('0x30')][_0x3102('0x39')]){_0x1aa61a[_0x3102('0x37')]=_[_0x3102('0x3a')](_0x1aa61a[_0x3102('0x37')],{'$or':_[_0x3102('0x2c')](_0x1aa61a['attributes'],function(_0x377965){var _0x11a95a={};_0x11a95a[_0x377965]={'$like':'%'+_0x415f1d[_0x3102('0x30')][_0x3102('0x39')]+'%'};return _0x11a95a;})});}_0x1aa61a=_[_0x3102('0x3a')]({},_0x1aa61a,_0x415f1d[_0x3102('0x41')]);return _0x4932c8['getSubjects'](_0x1aa61a);}})[_0x3102('0x23')](function(_0x51b7c0){if(_0x51b7c0){_0x5c417a=_0x51b7c0[_0x3102('0x33')];if(!_0x415f1d[_0x3102('0x30')][_0x3102('0x34')](_0x3102('0x35'))){_0x1aa61a['limit']=qs[_0x3102('0x1e')](_0x415f1d[_0x3102('0x30')][_0x3102('0x1e')]);_0x1aa61a[_0x3102('0x1c')]=qs[_0x3102('0x1c')](_0x415f1d['query'][_0x3102('0x1c')]);}return _0x4932c8[_0x3102('0x4a')](_0x1aa61a);}})[_0x3102('0x23')](function(_0x5853ee){if(_0x5853ee){return _0x5853ee?{'count':_0x5c417a,'rows':_0x5853ee}:null;}})[_0x3102('0x23')](respondWithResult(_0x409a71,null))[_0x3102('0x3d')](handleError(_0x409a71,null));};exports[_0x3102('0x4b')]=function(_0x1e3264,_0x229bee,_0x4df5ef){var _0x446de7={};var _0x2db474={};var _0x2e4214;var _0x335a3d;return db[_0x3102('0x28')][_0x3102('0x47')]({'where':{'id':_0x1e3264[_0x3102('0x3f')]['id']}})[_0x3102('0x23')](handleEntityNotFound(_0x229bee,null))['then'](function(_0x4ca03a){if(_0x4ca03a){_0x2e4214=_0x4ca03a;_0x2db474[_0x3102('0x2f')]=_[_0x3102('0x2d')](db['ZendeskField'][_0x3102('0x29')]);_0x2db474['query']=_[_0x3102('0x2d')](_0x1e3264[_0x3102('0x30')]);_0x2db474[_0x3102('0x40')]=_['intersection'](_0x2db474[_0x3102('0x2f')],_0x2db474['query']);_0x446de7[_0x3102('0x31')]=_[_0x3102('0x2e')](_0x2db474[_0x3102('0x2f')],qs[_0x3102('0x32')](_0x1e3264[_0x3102('0x30')][_0x3102('0x32')]));_0x446de7[_0x3102('0x31')]=_0x446de7[_0x3102('0x31')][_0x3102('0x33')]?_0x446de7[_0x3102('0x31')]:_0x2db474[_0x3102('0x2f')];_0x446de7['order']=qs['sort'](_0x1e3264[_0x3102('0x30')][_0x3102('0x49')]);_0x446de7[_0x3102('0x37')]=qs[_0x3102('0x40')](_[_0x3102('0x38')](_0x1e3264[_0x3102('0x30')],_0x2db474[_0x3102('0x40')]));if(_0x1e3264[_0x3102('0x30')][_0x3102('0x39')]){_0x446de7[_0x3102('0x37')]=_['merge'](_0x446de7[_0x3102('0x37')],{'$or':_[_0x3102('0x2c')](_0x446de7['attributes'],function(_0x4bd3f5){var _0x2c528c={};_0x2c528c[_0x4bd3f5]={'$like':'%'+_0x1e3264['query']['filter']+'%'};return _0x2c528c;})});}_0x446de7=_['merge']({},_0x446de7,_0x1e3264[_0x3102('0x41')]);return _0x2e4214['getDescriptions'](_0x446de7);}})['then'](function(_0x44e8dc){if(_0x44e8dc){_0x335a3d=_0x44e8dc['length'];if(!_0x1e3264[_0x3102('0x30')]['hasOwnProperty'](_0x3102('0x35'))){_0x446de7[_0x3102('0x1e')]=qs[_0x3102('0x1e')](_0x1e3264[_0x3102('0x30')]['limit']);_0x446de7['offset']=qs[_0x3102('0x1c')](_0x1e3264['query'][_0x3102('0x1c')]);}return _0x2e4214['getDescriptions'](_0x446de7);}})['then'](function(_0x1ac62c){if(_0x1ac62c){return _0x1ac62c?{'count':_0x335a3d,'rows':_0x1ac62c}:null;}})[_0x3102('0x23')](respondWithResult(_0x229bee,null))[_0x3102('0x3d')](handleError(_0x229bee,null));};exports['getTags']=function(_0x2270e9,_0xbea13f,_0x19459a){var _0x6cea17={};var _0x45a469={};var _0x254558;var _0xa6152a;return db[_0x3102('0x28')][_0x3102('0x47')]({'where':{'id':_0x2270e9[_0x3102('0x3f')]['id']}})[_0x3102('0x23')](handleEntityNotFound(_0xbea13f,null))[_0x3102('0x23')](function(_0x6570bd){if(_0x6570bd){_0x254558=_0x6570bd;_0x45a469['model']=_['keys'](db['Tag'][_0x3102('0x29')]);_0x45a469['query']=_['keys'](_0x2270e9[_0x3102('0x30')]);_0x45a469[_0x3102('0x40')]=_[_0x3102('0x2e')](_0x45a469[_0x3102('0x2f')],_0x45a469['query']);_0x6cea17[_0x3102('0x31')]=_[_0x3102('0x2e')](_0x45a469[_0x3102('0x2f')],qs['fields'](_0x2270e9[_0x3102('0x30')][_0x3102('0x32')]));_0x6cea17[_0x3102('0x31')]=_0x6cea17[_0x3102('0x31')][_0x3102('0x33')]?_0x6cea17['attributes']:_0x45a469['model'];_0x6cea17[_0x3102('0x36')]=qs[_0x3102('0x49')](_0x2270e9['query'][_0x3102('0x49')]);_0x6cea17[_0x3102('0x37')]=qs[_0x3102('0x40')](_[_0x3102('0x38')](_0x2270e9[_0x3102('0x30')],_0x45a469[_0x3102('0x40')]));if(_0x2270e9[_0x3102('0x30')][_0x3102('0x39')]){_0x6cea17[_0x3102('0x37')]=_[_0x3102('0x3a')](_0x6cea17[_0x3102('0x37')],{'$or':_[_0x3102('0x2c')](_0x6cea17[_0x3102('0x31')],function(_0x1993d6){var _0x1a4642={};_0x1a4642[_0x1993d6]={'$like':'%'+_0x2270e9[_0x3102('0x30')][_0x3102('0x39')]+'%'};return _0x1a4642;})});}_0x6cea17=_[_0x3102('0x3a')]({},_0x6cea17,_0x2270e9[_0x3102('0x41')]);return _0x254558[_0x3102('0x4c')](_0x6cea17);}})[_0x3102('0x23')](function(_0x2e67b6){if(_0x2e67b6){_0xa6152a=_0x2e67b6[_0x3102('0x33')];if(!_0x2270e9[_0x3102('0x30')]['hasOwnProperty'](_0x3102('0x35'))){_0x6cea17['limit']=qs['limit'](_0x2270e9[_0x3102('0x30')]['limit']);_0x6cea17[_0x3102('0x1c')]=qs[_0x3102('0x1c')](_0x2270e9['query'][_0x3102('0x1c')]);}return _0x254558['getTags'](_0x6cea17);}})['then'](function(_0x58b87f){if(_0x58b87f){return _0x58b87f?{'count':_0xa6152a,'rows':_0x58b87f}:null;}})[_0x3102('0x23')](respondWithResult(_0xbea13f,null))['catch'](handleError(_0xbea13f,null));};exports[_0x3102('0x4d')]=function(_0x151564,_0x3ef93d,_0x26b3f7){if(_0x151564['body']['id']){delete _0x151564[_0x3102('0x44')]['id'];}return db[_0x3102('0x28')]['findOne']({'where':{'id':_0x151564[_0x3102('0x3f')]['id']}})['then'](handleEntityNotFound(_0x3ef93d,null))[_0x3102('0x23')](function(_0xf15bcd){if(_0xf15bcd){return _0xf15bcd[_0x3102('0x4d')](_0x151564[_0x3102('0x44')][_0x3102('0x4e')]||[]);}return null;})[_0x3102('0x23')](respondWithResult(_0x3ef93d,null))[_0x3102('0x3d')](handleError(_0x3ef93d,null));};
\ No newline at end of file
+var _0x23b2=['../../config/environment','../../mysqldb','end','json','offset','undefined','limit','count','status','Content-Range','apply','save','update','destroy','then','error','stack','name','index','rawAttributes','key','model','map','query','keys','filters','intersection','attributes','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','ZendeskConfiguration','includeAll','include','findAll','rows','show','params','fields','length','options','find','catch','create','body','getFields','findOne','getSubjects','ZendeskField','hasOwnProperty','getDescriptions','getTags','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x58e2c4,_0x1b105f){var _0x16cda4=function(_0x47d481){while(--_0x47d481){_0x58e2c4['push'](_0x58e2c4['shift']());}};_0x16cda4(++_0x1b105f);}(_0x23b2,0x8f));var _0x223b=function(_0x33791b,_0x4e9a40){_0x33791b=_0x33791b-0x0;var _0x585dd1=_0x23b2[_0x33791b];return _0x585dd1;};'use strict';var emlformat=require(_0x223b('0x0'));var rimraf=require(_0x223b('0x1'));var zipdir=require(_0x223b('0x2'));var jsonpatch=require(_0x223b('0x3'));var rp=require(_0x223b('0x4'));var moment=require(_0x223b('0x5'));var BPromise=require(_0x223b('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x223b('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x223b('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x223b('0x9'));var squel=require(_0x223b('0xa'));var crypto=require(_0x223b('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x223b('0xc'));var toCsv=require(_0x223b('0xd'));var querystring=require(_0x223b('0xe'));var Papa=require(_0x223b('0xf'));var Redis=require(_0x223b('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x223b('0x11'));var as=require(_0x223b('0x12'));var hardwareService=require(_0x223b('0x13'));var logger=require(_0x223b('0x14'))(_0x223b('0x15'));var utils=require(_0x223b('0x16'));var config=require(_0x223b('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x223b('0x18'))['db'];function respondWithStatusCode(_0x55856f,_0x2a8b96){_0x2a8b96=_0x2a8b96||0xcc;return function(_0x14fc5a){if(_0x14fc5a){return _0x55856f['sendStatus'](_0x2a8b96);}return _0x55856f['status'](_0x2a8b96)[_0x223b('0x19')]();};}function respondWithResult(_0x5f108b,_0x2f5c0f){_0x2f5c0f=_0x2f5c0f||0xc8;return function(_0x34de7f){if(_0x34de7f){return _0x5f108b['status'](_0x2f5c0f)[_0x223b('0x1a')](_0x34de7f);}};}function respondWithFilteredResult(_0xd23588,_0x3c0d1c){return function(_0x4fb8a1){if(_0x4fb8a1){var _0x293c44=typeof _0x3c0d1c[_0x223b('0x1b')]===_0x223b('0x1c')&&typeof _0x3c0d1c[_0x223b('0x1d')]==='undefined';var _0x299384=_0x4fb8a1[_0x223b('0x1e')];var _0x43e9c7=_0x293c44?0x0:_0x3c0d1c[_0x223b('0x1b')];var _0x285c9a=_0x293c44?_0x4fb8a1['count']:_0x3c0d1c[_0x223b('0x1b')]+_0x3c0d1c[_0x223b('0x1d')];var _0x199661;if(_0x285c9a>=_0x299384){_0x285c9a=_0x299384;_0x199661=0xc8;}else{_0x199661=0xce;}_0xd23588[_0x223b('0x1f')](_0x199661);return _0xd23588['set'](_0x223b('0x20'),_0x43e9c7+'-'+_0x285c9a+'/'+_0x299384)[_0x223b('0x1a')](_0x4fb8a1);}return null;};}function patchUpdates(_0x548c67){return function(_0x379e5a){try{jsonpatch[_0x223b('0x21')](_0x379e5a,_0x548c67,!![]);}catch(_0x5dda5a){return BPromise['reject'](_0x5dda5a);}return _0x379e5a[_0x223b('0x22')]();};}function saveUpdates(_0x28dd59,_0x32958f){return function(_0x324fd2){if(_0x324fd2){return _0x324fd2[_0x223b('0x23')](_0x28dd59)['then'](function(_0x3cde98){return _0x3cde98;});}return null;};}function removeEntity(_0x5d4743,_0x5cc635){return function(_0x34a448){if(_0x34a448){return _0x34a448[_0x223b('0x24')]()[_0x223b('0x25')](function(){_0x5d4743[_0x223b('0x1f')](0xcc)[_0x223b('0x19')]();});}};}function handleEntityNotFound(_0x12c8ca,_0x3bbbdf){return function(_0x616eec){if(!_0x616eec){_0x12c8ca['sendStatus'](0x194);}return _0x616eec;};}function handleError(_0x301db9,_0x5023e8){_0x5023e8=_0x5023e8||0x1f4;return function(_0x521ff3){logger[_0x223b('0x26')](_0x521ff3[_0x223b('0x27')]);if(_0x521ff3[_0x223b('0x28')]){delete _0x521ff3[_0x223b('0x28')];}_0x301db9[_0x223b('0x1f')](_0x5023e8)['send'](_0x521ff3);};}exports[_0x223b('0x29')]=function(_0x218a7f,_0x1814d0){var _0x4f9822={},_0x150ac3={},_0x287380={'count':0x0,'rows':[]};var _0x97cd06=_['map'](db['ZendeskConfiguration'][_0x223b('0x2a')],function(_0x3e9c61){return{'name':_0x3e9c61['fieldName'],'type':_0x3e9c61['type'][_0x223b('0x2b')]};});_0x150ac3[_0x223b('0x2c')]=_[_0x223b('0x2d')](_0x97cd06,_0x223b('0x28'));_0x150ac3[_0x223b('0x2e')]=_[_0x223b('0x2f')](_0x218a7f[_0x223b('0x2e')]);_0x150ac3[_0x223b('0x30')]=_[_0x223b('0x31')](_0x150ac3['model'],_0x150ac3['query']);_0x4f9822['attributes']=_['intersection'](_0x150ac3[_0x223b('0x2c')],qs['fields'](_0x218a7f['query']['fields']));_0x4f9822[_0x223b('0x32')]=_0x4f9822['attributes']['length']?_0x4f9822[_0x223b('0x32')]:_0x150ac3[_0x223b('0x2c')];if(!_0x218a7f['query']['hasOwnProperty'](_0x223b('0x33'))){_0x4f9822[_0x223b('0x1d')]=qs['limit'](_0x218a7f[_0x223b('0x2e')][_0x223b('0x1d')]);_0x4f9822['offset']=qs[_0x223b('0x1b')](_0x218a7f[_0x223b('0x2e')][_0x223b('0x1b')]);}_0x4f9822[_0x223b('0x34')]=qs[_0x223b('0x35')](_0x218a7f[_0x223b('0x2e')][_0x223b('0x35')]);_0x4f9822[_0x223b('0x36')]=qs[_0x223b('0x30')](_[_0x223b('0x37')](_0x218a7f[_0x223b('0x2e')],_0x150ac3[_0x223b('0x30')]),_0x97cd06);if(_0x218a7f[_0x223b('0x2e')][_0x223b('0x38')]){_0x4f9822['where']=_[_0x223b('0x39')](_0x4f9822['where'],{'$or':_[_0x223b('0x2d')](_0x97cd06,function(_0x30ca9c){if(_0x30ca9c[_0x223b('0x3a')]!==_0x223b('0x3b')){var _0x496d55={};_0x496d55[_0x30ca9c[_0x223b('0x28')]]={'$like':'%'+_0x218a7f['query'][_0x223b('0x38')]+'%'};return _0x496d55;}})});}_0x4f9822=_[_0x223b('0x39')]({},_0x4f9822,_0x218a7f['options']);var _0x42cd50={'where':_0x4f9822['where']};return db[_0x223b('0x3c')][_0x223b('0x1e')](_0x42cd50)[_0x223b('0x25')](function(_0x4e96a1){_0x287380[_0x223b('0x1e')]=_0x4e96a1;if(_0x218a7f['query'][_0x223b('0x3d')]){_0x4f9822[_0x223b('0x3e')]=[{'all':!![]}];}return db[_0x223b('0x3c')][_0x223b('0x3f')](_0x4f9822);})['then'](function(_0x111410){_0x287380[_0x223b('0x40')]=_0x111410;return _0x287380;})['then'](respondWithFilteredResult(_0x1814d0,_0x4f9822))['catch'](handleError(_0x1814d0,null));};exports[_0x223b('0x41')]=function(_0xf905e8,_0x2cf12b){var _0x47b7ee={'raw':![],'where':{'id':_0xf905e8[_0x223b('0x42')]['id']}},_0xefdc3d={};_0xefdc3d[_0x223b('0x2c')]=_[_0x223b('0x2f')](db[_0x223b('0x3c')][_0x223b('0x2a')]);_0xefdc3d['query']=_['keys'](_0xf905e8[_0x223b('0x2e')]);_0xefdc3d[_0x223b('0x30')]=_[_0x223b('0x31')](_0xefdc3d['model'],_0xefdc3d[_0x223b('0x2e')]);_0x47b7ee[_0x223b('0x32')]=_['intersection'](_0xefdc3d[_0x223b('0x2c')],qs['fields'](_0xf905e8[_0x223b('0x2e')][_0x223b('0x43')]));_0x47b7ee[_0x223b('0x32')]=_0x47b7ee[_0x223b('0x32')][_0x223b('0x44')]?_0x47b7ee[_0x223b('0x32')]:_0xefdc3d['model'];if(_0xf905e8[_0x223b('0x2e')][_0x223b('0x3d')]){_0x47b7ee[_0x223b('0x3e')]=[{'all':!![]}];}_0x47b7ee=_[_0x223b('0x39')]({},_0x47b7ee,_0xf905e8[_0x223b('0x45')]);return db[_0x223b('0x3c')][_0x223b('0x46')](_0x47b7ee)[_0x223b('0x25')](handleEntityNotFound(_0x2cf12b,null))[_0x223b('0x25')](respondWithResult(_0x2cf12b,null))[_0x223b('0x47')](handleError(_0x2cf12b,null));};exports[_0x223b('0x48')]=function(_0xbc16dc,_0x1f209f){return db['ZendeskConfiguration'][_0x223b('0x48')](_0xbc16dc[_0x223b('0x49')],{})[_0x223b('0x25')](respondWithResult(_0x1f209f,0xc9))[_0x223b('0x47')](handleError(_0x1f209f,null));};exports[_0x223b('0x23')]=function(_0x304f6d,_0x2b5303){if(_0x304f6d[_0x223b('0x49')]['id']){delete _0x304f6d[_0x223b('0x49')]['id'];}return db[_0x223b('0x3c')]['find']({'where':{'id':_0x304f6d[_0x223b('0x42')]['id']}})['then'](handleEntityNotFound(_0x2b5303,null))[_0x223b('0x25')](saveUpdates(_0x304f6d[_0x223b('0x49')],null))[_0x223b('0x25')](respondWithResult(_0x2b5303,null))[_0x223b('0x47')](handleError(_0x2b5303,null));};exports[_0x223b('0x24')]=function(_0x22c894,_0x2bd23d){return db[_0x223b('0x3c')][_0x223b('0x46')]({'where':{'id':_0x22c894[_0x223b('0x42')]['id']}})[_0x223b('0x25')](handleEntityNotFound(_0x2bd23d,null))[_0x223b('0x25')](removeEntity(_0x2bd23d,null))['catch'](handleError(_0x2bd23d,null));};exports[_0x223b('0x4a')]=function(_0xc338a7,_0x4293a0,_0x2870fe){var _0x42d0e0={};var _0x4f9d20={};var _0xeb0c61;var _0x32798f;return db[_0x223b('0x3c')][_0x223b('0x4b')]({'where':{'id':_0xc338a7[_0x223b('0x42')]['id']}})['then'](handleEntityNotFound(_0x4293a0,null))[_0x223b('0x25')](function(_0x3f3c33){if(_0x3f3c33){_0xeb0c61=_0x3f3c33;_0x4f9d20['model']=_[_0x223b('0x2f')](db['ZendeskField']['rawAttributes']);_0x4f9d20['query']=_['keys'](_0xc338a7['query']);_0x4f9d20['filters']=_[_0x223b('0x31')](_0x4f9d20[_0x223b('0x2c')],_0x4f9d20['query']);_0x42d0e0[_0x223b('0x32')]=_[_0x223b('0x31')](_0x4f9d20[_0x223b('0x2c')],qs[_0x223b('0x43')](_0xc338a7[_0x223b('0x2e')][_0x223b('0x43')]));_0x42d0e0[_0x223b('0x32')]=_0x42d0e0['attributes'][_0x223b('0x44')]?_0x42d0e0['attributes']:_0x4f9d20[_0x223b('0x2c')];_0x42d0e0['order']=qs[_0x223b('0x35')](_0xc338a7[_0x223b('0x2e')][_0x223b('0x35')]);_0x42d0e0[_0x223b('0x36')]=qs['filters'](_[_0x223b('0x37')](_0xc338a7['query'],_0x4f9d20[_0x223b('0x30')]));if(_0xc338a7['query'][_0x223b('0x38')]){_0x42d0e0[_0x223b('0x36')]=_[_0x223b('0x39')](_0x42d0e0[_0x223b('0x36')],{'$or':_['map'](_0x42d0e0[_0x223b('0x32')],function(_0x224ebe){var _0x33d6d7={};_0x33d6d7[_0x224ebe]={'$like':'%'+_0xc338a7[_0x223b('0x2e')][_0x223b('0x38')]+'%'};return _0x33d6d7;})});}_0x42d0e0=_[_0x223b('0x39')]({},_0x42d0e0,_0xc338a7[_0x223b('0x45')]);return _0xeb0c61[_0x223b('0x4a')](_0x42d0e0);}})[_0x223b('0x25')](function(_0x2412a4){if(_0x2412a4){_0x32798f=_0x2412a4[_0x223b('0x44')];if(!_0xc338a7['query']['hasOwnProperty'](_0x223b('0x33'))){_0x42d0e0['limit']=qs[_0x223b('0x1d')](_0xc338a7['query'][_0x223b('0x1d')]);_0x42d0e0['offset']=qs['offset'](_0xc338a7[_0x223b('0x2e')][_0x223b('0x1b')]);}return _0xeb0c61['getFields'](_0x42d0e0);}})['then'](function(_0x2bd372){if(_0x2bd372){return _0x2bd372?{'count':_0x32798f,'rows':_0x2bd372}:null;}})[_0x223b('0x25')](respondWithResult(_0x4293a0,null))[_0x223b('0x47')](handleError(_0x4293a0,null));};exports[_0x223b('0x4c')]=function(_0x558e5d,_0x4a114e,_0x110b28){var _0x1dd650={};var _0x5d9484={};var _0x438d63;var _0x51fd39;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x558e5d['params']['id']}})[_0x223b('0x25')](handleEntityNotFound(_0x4a114e,null))[_0x223b('0x25')](function(_0x215e74){if(_0x215e74){_0x438d63=_0x215e74;_0x5d9484[_0x223b('0x2c')]=_['keys'](db[_0x223b('0x4d')][_0x223b('0x2a')]);_0x5d9484[_0x223b('0x2e')]=_[_0x223b('0x2f')](_0x558e5d[_0x223b('0x2e')]);_0x5d9484['filters']=_[_0x223b('0x31')](_0x5d9484[_0x223b('0x2c')],_0x5d9484['query']);_0x1dd650['attributes']=_[_0x223b('0x31')](_0x5d9484['model'],qs[_0x223b('0x43')](_0x558e5d['query'][_0x223b('0x43')]));_0x1dd650[_0x223b('0x32')]=_0x1dd650['attributes'][_0x223b('0x44')]?_0x1dd650[_0x223b('0x32')]:_0x5d9484[_0x223b('0x2c')];_0x1dd650[_0x223b('0x34')]=qs[_0x223b('0x35')](_0x558e5d[_0x223b('0x2e')]['sort']);_0x1dd650[_0x223b('0x36')]=qs[_0x223b('0x30')](_[_0x223b('0x37')](_0x558e5d[_0x223b('0x2e')],_0x5d9484[_0x223b('0x30')]));if(_0x558e5d['query'][_0x223b('0x38')]){_0x1dd650['where']=_[_0x223b('0x39')](_0x1dd650['where'],{'$or':_[_0x223b('0x2d')](_0x1dd650[_0x223b('0x32')],function(_0x102746){var _0x59d4a6={};_0x59d4a6[_0x102746]={'$like':'%'+_0x558e5d[_0x223b('0x2e')][_0x223b('0x38')]+'%'};return _0x59d4a6;})});}_0x1dd650=_[_0x223b('0x39')]({},_0x1dd650,_0x558e5d[_0x223b('0x45')]);return _0x438d63['getSubjects'](_0x1dd650);}})['then'](function(_0x2344c1){if(_0x2344c1){_0x51fd39=_0x2344c1['length'];if(!_0x558e5d[_0x223b('0x2e')][_0x223b('0x4e')](_0x223b('0x33'))){_0x1dd650[_0x223b('0x1d')]=qs[_0x223b('0x1d')](_0x558e5d[_0x223b('0x2e')][_0x223b('0x1d')]);_0x1dd650['offset']=qs[_0x223b('0x1b')](_0x558e5d[_0x223b('0x2e')][_0x223b('0x1b')]);}return _0x438d63[_0x223b('0x4c')](_0x1dd650);}})[_0x223b('0x25')](function(_0x212f1e){if(_0x212f1e){return _0x212f1e?{'count':_0x51fd39,'rows':_0x212f1e}:null;}})[_0x223b('0x25')](respondWithResult(_0x4a114e,null))[_0x223b('0x47')](handleError(_0x4a114e,null));};exports[_0x223b('0x4f')]=function(_0x1716bd,_0x3096ee,_0xfee080){var _0x3967b4={};var _0x47fbf5={};var _0x1a2922;var _0x395667;return db[_0x223b('0x3c')][_0x223b('0x4b')]({'where':{'id':_0x1716bd[_0x223b('0x42')]['id']}})['then'](handleEntityNotFound(_0x3096ee,null))[_0x223b('0x25')](function(_0x65c4af){if(_0x65c4af){_0x1a2922=_0x65c4af;_0x47fbf5[_0x223b('0x2c')]=_[_0x223b('0x2f')](db[_0x223b('0x4d')][_0x223b('0x2a')]);_0x47fbf5[_0x223b('0x2e')]=_['keys'](_0x1716bd[_0x223b('0x2e')]);_0x47fbf5[_0x223b('0x30')]=_[_0x223b('0x31')](_0x47fbf5[_0x223b('0x2c')],_0x47fbf5[_0x223b('0x2e')]);_0x3967b4[_0x223b('0x32')]=_[_0x223b('0x31')](_0x47fbf5['model'],qs['fields'](_0x1716bd['query'][_0x223b('0x43')]));_0x3967b4[_0x223b('0x32')]=_0x3967b4[_0x223b('0x32')]['length']?_0x3967b4[_0x223b('0x32')]:_0x47fbf5[_0x223b('0x2c')];_0x3967b4['order']=qs[_0x223b('0x35')](_0x1716bd[_0x223b('0x2e')][_0x223b('0x35')]);_0x3967b4['where']=qs[_0x223b('0x30')](_[_0x223b('0x37')](_0x1716bd['query'],_0x47fbf5['filters']));if(_0x1716bd[_0x223b('0x2e')][_0x223b('0x38')]){_0x3967b4[_0x223b('0x36')]=_[_0x223b('0x39')](_0x3967b4[_0x223b('0x36')],{'$or':_[_0x223b('0x2d')](_0x3967b4['attributes'],function(_0x381f8e){var _0x328191={};_0x328191[_0x381f8e]={'$like':'%'+_0x1716bd[_0x223b('0x2e')][_0x223b('0x38')]+'%'};return _0x328191;})});}_0x3967b4=_[_0x223b('0x39')]({},_0x3967b4,_0x1716bd[_0x223b('0x45')]);return _0x1a2922[_0x223b('0x4f')](_0x3967b4);}})[_0x223b('0x25')](function(_0x4f2352){if(_0x4f2352){_0x395667=_0x4f2352['length'];if(!_0x1716bd[_0x223b('0x2e')][_0x223b('0x4e')](_0x223b('0x33'))){_0x3967b4[_0x223b('0x1d')]=qs[_0x223b('0x1d')](_0x1716bd['query'][_0x223b('0x1d')]);_0x3967b4[_0x223b('0x1b')]=qs[_0x223b('0x1b')](_0x1716bd[_0x223b('0x2e')]['offset']);}return _0x1a2922[_0x223b('0x4f')](_0x3967b4);}})['then'](function(_0x5d0b30){if(_0x5d0b30){return _0x5d0b30?{'count':_0x395667,'rows':_0x5d0b30}:null;}})['then'](respondWithResult(_0x3096ee,null))['catch'](handleError(_0x3096ee,null));};exports['getTags']=function(_0x5401d5,_0x3dc291,_0x14e1c5){var _0x16c674={};var _0x5d8441={};var _0x2ce3e8;var _0x5b332;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x5401d5[_0x223b('0x42')]['id']}})['then'](handleEntityNotFound(_0x3dc291,null))['then'](function(_0x2a1272){if(_0x2a1272){_0x2ce3e8=_0x2a1272;_0x5d8441[_0x223b('0x2c')]=_[_0x223b('0x2f')](db['Tag']['rawAttributes']);_0x5d8441['query']=_[_0x223b('0x2f')](_0x5401d5[_0x223b('0x2e')]);_0x5d8441[_0x223b('0x30')]=_[_0x223b('0x31')](_0x5d8441[_0x223b('0x2c')],_0x5d8441[_0x223b('0x2e')]);_0x16c674[_0x223b('0x32')]=_[_0x223b('0x31')](_0x5d8441['model'],qs['fields'](_0x5401d5['query']['fields']));_0x16c674[_0x223b('0x32')]=_0x16c674[_0x223b('0x32')][_0x223b('0x44')]?_0x16c674[_0x223b('0x32')]:_0x5d8441[_0x223b('0x2c')];_0x16c674[_0x223b('0x34')]=qs[_0x223b('0x35')](_0x5401d5['query'][_0x223b('0x35')]);_0x16c674['where']=qs[_0x223b('0x30')](_[_0x223b('0x37')](_0x5401d5[_0x223b('0x2e')],_0x5d8441[_0x223b('0x30')]));if(_0x5401d5[_0x223b('0x2e')][_0x223b('0x38')]){_0x16c674[_0x223b('0x36')]=_[_0x223b('0x39')](_0x16c674[_0x223b('0x36')],{'$or':_[_0x223b('0x2d')](_0x16c674[_0x223b('0x32')],function(_0x1bebfa){var _0x23b07a={};_0x23b07a[_0x1bebfa]={'$like':'%'+_0x5401d5[_0x223b('0x2e')][_0x223b('0x38')]+'%'};return _0x23b07a;})});}_0x16c674=_[_0x223b('0x39')]({},_0x16c674,_0x5401d5['options']);return _0x2ce3e8[_0x223b('0x50')](_0x16c674);}})[_0x223b('0x25')](function(_0x126cb3){if(_0x126cb3){_0x5b332=_0x126cb3['length'];if(!_0x5401d5['query'][_0x223b('0x4e')](_0x223b('0x33'))){_0x16c674['limit']=qs[_0x223b('0x1d')](_0x5401d5[_0x223b('0x2e')][_0x223b('0x1d')]);_0x16c674[_0x223b('0x1b')]=qs[_0x223b('0x1b')](_0x5401d5[_0x223b('0x2e')]['offset']);}return _0x2ce3e8['getTags'](_0x16c674);}})[_0x223b('0x25')](function(_0x20bfcc){if(_0x20bfcc){return _0x20bfcc?{'count':_0x5b332,'rows':_0x20bfcc}:null;}})['then'](respondWithResult(_0x3dc291,null))['catch'](handleError(_0x3dc291,null));};exports[_0x223b('0x51')]=function(_0x764d2,_0x350406,_0x1e017c){if(_0x764d2['body']['id']){delete _0x764d2[_0x223b('0x49')]['id'];}return db[_0x223b('0x3c')][_0x223b('0x4b')]({'where':{'id':_0x764d2[_0x223b('0x42')]['id']}})[_0x223b('0x25')](handleEntityNotFound(_0x350406,null))[_0x223b('0x25')](function(_0x3bfeff){if(_0x3bfeff){return _0x3bfeff['setTags'](_0x764d2[_0x223b('0x49')][_0x223b('0x52')]||[]);}return null;})[_0x223b('0x25')](respondWithResult(_0x350406,null))[_0x223b('0x47')](handleError(_0x350406,null));};
\ No newline at end of file
index 6f11343..16e6ea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefda=['../../config/environment','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','api','moment','request-promise','path','rimraf'];(function(_0x3f91d0,_0x1321c3){var _0x579efa=function(_0x231aae){while(--_0x231aae){_0x3f91d0['push'](_0x3f91d0['shift']());}};_0x579efa(++_0x1321c3);}(_0xefda,0x96));var _0xaefd=function(_0x245ecd,_0xccd8c){_0x245ecd=_0x245ecd-0x0;var _0x12fa9f=_0xefda[_0x245ecd];return _0x12fa9f;};'use strict';var _=require(_0xaefd('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xaefd('0x1'));var moment=require(_0xaefd('0x2'));var BPromise=require('bluebird');var rp=require(_0xaefd('0x3'));var fs=require('fs');var path=require(_0xaefd('0x4'));var rimraf=require(_0xaefd('0x5'));var config=require(_0xaefd('0x6'));var attributes=require(_0xaefd('0x7'));module[_0xaefd('0x8')]=function(_0x497258,_0x3677ea){return _0x497258[_0xaefd('0x9')](_0xaefd('0xa'),attributes,{'tableName':_0xaefd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf2f=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash'];(function(_0x465f3c,_0x43ebec){var _0x1764e0=function(_0x276cdd){while(--_0x276cdd){_0x465f3c['push'](_0x465f3c['shift']());}};_0x1764e0(++_0x43ebec);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x498353,_0x18c885){_0x498353=_0x498353-0x0;var _0x493f05=_0xcf2f[_0x498353];return _0x493f05;};'use strict';var _=require(_0xfcf2('0x0'));var util=require(_0xfcf2('0x1'));var logger=require(_0xfcf2('0x2'))(_0xfcf2('0x3'));var moment=require(_0xfcf2('0x4'));var BPromise=require('bluebird');var rp=require(_0xfcf2('0x5'));var fs=require('fs');var path=require(_0xfcf2('0x6'));var rimraf=require(_0xfcf2('0x7'));var config=require(_0xfcf2('0x8'));var attributes=require(_0xfcf2('0x9'));module[_0xfcf2('0xa')]=function(_0x1e6d99,_0x3a4950){return _0x1e6d99[_0xfcf2('0xb')](_0xfcf2('0xc'),attributes,{'tableName':_0xfcf2('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b5951c3..90d0e07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x627e=['moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util'];(function(_0x3dda0f,_0x5b9902){var _0x1b0488=function(_0x267031){while(--_0x267031){_0x3dda0f['push'](_0x3dda0f['shift']());}};_0x1b0488(++_0x5b9902);}(_0x627e,0x9f));var _0xe627=function(_0x42c51e,_0x2028ab){_0x42c51e=_0x42c51e-0x0;var _0x20272e=_0x627e[_0x42c51e];return _0x20272e;};'use strict';var _=require('lodash');var util=require(_0xe627('0x0'));var moment=require(_0xe627('0x1'));var BPromise=require(_0xe627('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe627('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe627('0x4'));var logger=require(_0xe627('0x5'))(_0xe627('0x6'));var config=require(_0xe627('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe627('0x8')][_0xe627('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x45d163,_0x2ce4c,_0x4b7ba0){return new BPromise(function(_0x54e336,_0x12be61){return client[_0xe627('0xa')](_0x45d163,_0x4b7ba0)[_0xe627('0xb')](function(_0x5b0039){logger[_0xe627('0xc')](_0xe627('0xd'),_0x2ce4c,_0xe627('0xe'));logger['debug'](_0xe627('0xf'),_0x2ce4c,'request\x20sent',JSON[_0xe627('0x10')](_0x5b0039));if(_0x5b0039[_0xe627('0x11')]){if(_0x5b0039[_0xe627('0x11')]['code']===0x1f4){logger['error'](_0xe627('0xd'),_0x2ce4c,_0x5b0039[_0xe627('0x11')][_0xe627('0x12')]);return _0x12be61(_0x5b0039[_0xe627('0x11')][_0xe627('0x12')]);}logger[_0xe627('0x11')](_0xe627('0xd'),_0x2ce4c,_0x5b0039[_0xe627('0x11')][_0xe627('0x12')]);return _0x54e336(_0x5b0039[_0xe627('0x11')][_0xe627('0x12')]);}else{logger[_0xe627('0xc')](_0xe627('0xd'),_0x2ce4c,'request\x20sent');_0x54e336(_0x5b0039[_0xe627('0x13')][_0xe627('0x12')]);}})['catch'](function(_0x29245){logger[_0xe627('0x11')](_0xe627('0xd'),_0x2ce4c,_0x29245);_0x12be61(_0x29245);});});}
\ No newline at end of file
+var _0xee36=['stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','ZendeskConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0xee36,0x122));var _0x6ee3=function(_0x52a7f4,_0xdb8a50){_0x52a7f4=_0x52a7f4-0x0;var _0x2ebfc6=_0xee36[_0x52a7f4];return _0x2ebfc6;};'use strict';var _=require(_0x6ee3('0x0'));var util=require('util');var moment=require(_0x6ee3('0x1'));var BPromise=require(_0x6ee3('0x2'));var rs=require(_0x6ee3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6ee3('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6ee3('0x5'))(_0x6ee3('0x6'));var config=require('../../config/environment');var jayson=require(_0x6ee3('0x7'));var client=jayson[_0x6ee3('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2091ef,_0x375b50,_0x44cdb2){return new BPromise(function(_0x5dfd83,_0x484b39){return client['request'](_0x2091ef,_0x44cdb2)[_0x6ee3('0x9')](function(_0x4c03d7){logger[_0x6ee3('0xa')](_0x6ee3('0xb'),_0x375b50,_0x6ee3('0xc'));logger['debug'](_0x6ee3('0xd'),_0x375b50,_0x6ee3('0xc'),JSON[_0x6ee3('0xe')](_0x4c03d7));if(_0x4c03d7[_0x6ee3('0xf')]){if(_0x4c03d7[_0x6ee3('0xf')]['code']===0x1f4){logger[_0x6ee3('0xf')](_0x6ee3('0xb'),_0x375b50,_0x4c03d7['error']['message']);return _0x484b39(_0x4c03d7[_0x6ee3('0xf')][_0x6ee3('0x10')]);}logger[_0x6ee3('0xf')](_0x6ee3('0xb'),_0x375b50,_0x4c03d7['error']['message']);return _0x5dfd83(_0x4c03d7['error'][_0x6ee3('0x10')]);}else{logger[_0x6ee3('0xa')](_0x6ee3('0xb'),_0x375b50,_0x6ee3('0xc'));_0x5dfd83(_0x4c03d7[_0x6ee3('0x11')]['message']);}})[_0x6ee3('0x12')](function(_0x5dd905){logger['error'](_0x6ee3('0xb'),_0x375b50,_0x5dd905);_0x484b39(_0x5dd905);});});}
\ No newline at end of file
index b2afe2c..26642d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94c6=['util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','/:id','post','create','put','update','delete','destroy','exports'];(function(_0x33cb1f,_0x2bbf48){var _0x3d7a0b=function(_0x59df69){while(--_0x59df69){_0x33cb1f['push'](_0x33cb1f['shift']());}};_0x3d7a0b(++_0x2bbf48);}(_0x94c6,0x144));var _0x694c=function(_0x3a9d05,_0x357323){_0x3a9d05=_0x3a9d05-0x0;var _0x42b9cc=_0x94c6[_0x3a9d05];return _0x42b9cc;};'use strict';var multer=require('multer');var util=require(_0x694c('0x0'));var path=require(_0x694c('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x694c('0x2')]();var fs_extra=require(_0x694c('0x3'));var auth=require(_0x694c('0x4'));var interaction=require(_0x694c('0x5'));var config=require(_0x694c('0x6'));var controller=require(_0x694c('0x7'));router[_0x694c('0x8')]('/',auth[_0x694c('0x9')](),controller['index']);router[_0x694c('0x8')](_0x694c('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x694c('0xb')]('/',auth[_0x694c('0x9')](),controller[_0x694c('0xc')]);router[_0x694c('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x694c('0xe')]);router[_0x694c('0xf')](_0x694c('0xa'),auth[_0x694c('0x9')](),controller[_0x694c('0x10')]);module[_0x694c('0x11')]=router;
\ No newline at end of file
+var _0x2394=['/:id','destroy','exports','multer','path','express','Router','../../components/interaction/service','./intZendeskField.controller','get','isAuthenticated','index','show','post','update','delete'];(function(_0x25601d,_0x564bd7){var _0x21ea8b=function(_0x7ab135){while(--_0x7ab135){_0x25601d['push'](_0x25601d['shift']());}};_0x21ea8b(++_0x564bd7);}(_0x2394,0x1b3));var _0x4239=function(_0x35194c,_0x1077b8){_0x35194c=_0x35194c-0x0;var _0xa149a9=_0x2394[_0x35194c];return _0xa149a9;};'use strict';var multer=require(_0x4239('0x0'));var util=require('util');var path=require(_0x4239('0x1'));var timeout=require('connect-timeout');var express=require(_0x4239('0x2'));var router=express[_0x4239('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x4239('0x4'));var config=require('../../config/environment');var controller=require(_0x4239('0x5'));router[_0x4239('0x6')]('/',auth[_0x4239('0x7')](),controller[_0x4239('0x8')]);router[_0x4239('0x6')]('/:id',auth[_0x4239('0x7')](),controller[_0x4239('0x9')]);router[_0x4239('0xa')]('/',auth[_0x4239('0x7')](),controller['create']);router['put']('/:id',auth[_0x4239('0x7')](),controller[_0x4239('0xb')]);router[_0x4239('0xc')](_0x4239('0xd'),auth[_0x4239('0x7')](),controller[_0x4239('0xe')]);module[_0x4239('0xf')]=router;
\ No newline at end of file
index 63dc20a..8d2a128 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9107=['sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9107,0x183));var _0x7910=function(_0x2b0bd3,_0x167a8b){_0x2b0bd3=_0x2b0bd3-0x0;var _0x1a0fd2=_0x9107[_0x2b0bd3];return _0x1a0fd2;};'use strict';var Sequelize=require(_0x7910('0x0'));module[_0x7910('0x1')]={'type':{'type':Sequelize[_0x7910('0x2')](_0x7910('0x3'),_0x7910('0x4'),_0x7910('0x5'),_0x7910('0x6'),_0x7910('0x7')),'defaultValue':_0x7910('0x3')},'content':{'type':Sequelize[_0x7910('0x8')]},'key':{'type':Sequelize[_0x7910('0x8')]},'keyType':{'type':Sequelize[_0x7910('0x2')]('string',_0x7910('0x4'),_0x7910('0x5'))},'keyContent':{'type':Sequelize[_0x7910('0x8')]},'idField':{'type':Sequelize[_0x7910('0x8')]},'nameField':{'type':Sequelize[_0x7910('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7910('0x8')]}};
\ No newline at end of file
+var _0xeef1=['BOOLEAN','sequelize','ENUM','string','variable','customVariable','STRING'];(function(_0x265e81,_0x514eff){var _0x55b6b7=function(_0x2e3207){while(--_0x2e3207){_0x265e81['push'](_0x265e81['shift']());}};_0x55b6b7(++_0x514eff);}(_0xeef1,0xf6));var _0x1eef=function(_0x470edf,_0x5241d6){_0x470edf=_0x470edf-0x0;var _0x42f7be=_0xeef1[_0x470edf];return _0x42f7be;};'use strict';var Sequelize=require(_0x1eef('0x0'));module['exports']={'type':{'type':Sequelize[_0x1eef('0x1')](_0x1eef('0x2'),_0x1eef('0x3'),_0x1eef('0x4'),'keyValue','picklist'),'defaultValue':_0x1eef('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x1eef('0x5')]},'keyType':{'type':Sequelize[_0x1eef('0x1')](_0x1eef('0x2'),_0x1eef('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x1eef('0x5')]},'idField':{'type':Sequelize[_0x1eef('0x5')]},'nameField':{'type':Sequelize[_0x1eef('0x5')]},'customField':{'type':Sequelize[_0x1eef('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2364e68..d7f1987 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1b6=['map','ZendeskField','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','order','sort','where','filters','filter','VIRTUAL','merge','options','findAll','rows','show','params','rawAttributes','includeAll','include','catch','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','reject','save','update','destroy','then','sendStatus','error','stack','name','send'];(function(_0x8ac591,_0x274d77){var _0x4a8d16=function(_0x4e4aa0){while(--_0x4e4aa0){_0x8ac591['push'](_0x8ac591['shift']());}};_0x4a8d16(++_0x274d77);}(_0xe1b6,0x14f));var _0x6e1b=function(_0x28dcd3,_0x33e8d0){_0x28dcd3=_0x28dcd3-0x0;var _0x44e5db=_0xe1b6[_0x28dcd3];return _0x44e5db;};'use strict';var emlformat=require(_0x6e1b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6e1b('0x1'));var jsonpatch=require(_0x6e1b('0x2'));var rp=require(_0x6e1b('0x3'));var moment=require(_0x6e1b('0x4'));var BPromise=require(_0x6e1b('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6e1b('0x6'));var sox=require(_0x6e1b('0x7'));var csv=require(_0x6e1b('0x8'));var ejs=require(_0x6e1b('0x9'));var fs=require('fs');var fs_extra=require(_0x6e1b('0xa'));var _=require('lodash');var squel=require(_0x6e1b('0xb'));var crypto=require(_0x6e1b('0xc'));var jsforce=require(_0x6e1b('0xd'));var deskjs=require(_0x6e1b('0xe'));var toCsv=require(_0x6e1b('0x8'));var querystring=require(_0x6e1b('0xf'));var Papa=require(_0x6e1b('0x10'));var Redis=require(_0x6e1b('0x11'));var authService=require(_0x6e1b('0x12'));var qs=require(_0x6e1b('0x13'));var as=require(_0x6e1b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6e1b('0x15'))(_0x6e1b('0x16'));var utils=require(_0x6e1b('0x17'));var config=require(_0x6e1b('0x18'));var licenseUtil=require(_0x6e1b('0x19'));var db=require(_0x6e1b('0x1a'))['db'];function respondWithStatusCode(_0xa1518d,_0x15f8e0){_0x15f8e0=_0x15f8e0||0xcc;return function(_0x4ddbda){if(_0x4ddbda){return _0xa1518d['sendStatus'](_0x15f8e0);}return _0xa1518d[_0x6e1b('0x1b')](_0x15f8e0)[_0x6e1b('0x1c')]();};}function respondWithResult(_0xe25b28,_0x371a58){_0x371a58=_0x371a58||0xc8;return function(_0xb6aa60){if(_0xb6aa60){return _0xe25b28[_0x6e1b('0x1b')](_0x371a58)[_0x6e1b('0x1d')](_0xb6aa60);}};}function respondWithFilteredResult(_0x1dc1db,_0x2bce83){return function(_0x211782){if(_0x211782){var _0x4606aa=typeof _0x2bce83[_0x6e1b('0x1e')]===_0x6e1b('0x1f')&&typeof _0x2bce83[_0x6e1b('0x20')]===_0x6e1b('0x1f');var _0x980975=_0x211782[_0x6e1b('0x21')];var _0x59b1f2=_0x4606aa?0x0:_0x2bce83['offset'];var _0x17b592=_0x4606aa?_0x211782[_0x6e1b('0x21')]:_0x2bce83[_0x6e1b('0x1e')]+_0x2bce83[_0x6e1b('0x20')];var _0x235788;if(_0x17b592>=_0x980975){_0x17b592=_0x980975;_0x235788=0xc8;}else{_0x235788=0xce;}_0x1dc1db[_0x6e1b('0x1b')](_0x235788);return _0x1dc1db[_0x6e1b('0x22')]('Content-Range',_0x59b1f2+'-'+_0x17b592+'/'+_0x980975)[_0x6e1b('0x1d')](_0x211782);}return null;};}function patchUpdates(_0x242923){return function(_0x37656a){try{jsonpatch['apply'](_0x37656a,_0x242923,!![]);}catch(_0x3060ac){return BPromise[_0x6e1b('0x23')](_0x3060ac);}return _0x37656a[_0x6e1b('0x24')]();};}function saveUpdates(_0x3cc5be,_0x36074c){return function(_0x4095b7){if(_0x4095b7){return _0x4095b7[_0x6e1b('0x25')](_0x3cc5be)['then'](function(_0x2adf3b){return _0x2adf3b;});}return null;};}function removeEntity(_0x3c9f8f,_0x136783){return function(_0x1b72a7){if(_0x1b72a7){return _0x1b72a7[_0x6e1b('0x26')]()[_0x6e1b('0x27')](function(){_0x3c9f8f[_0x6e1b('0x1b')](0xcc)[_0x6e1b('0x1c')]();});}};}function handleEntityNotFound(_0x52086b,_0x2a143f){return function(_0x1dee87){if(!_0x1dee87){_0x52086b[_0x6e1b('0x28')](0x194);}return _0x1dee87;};}function handleError(_0x25d9bc,_0x40e2bb){_0x40e2bb=_0x40e2bb||0x1f4;return function(_0x9c2ff9){logger[_0x6e1b('0x29')](_0x9c2ff9[_0x6e1b('0x2a')]);if(_0x9c2ff9[_0x6e1b('0x2b')]){delete _0x9c2ff9[_0x6e1b('0x2b')];}_0x25d9bc[_0x6e1b('0x1b')](_0x40e2bb)[_0x6e1b('0x2c')](_0x9c2ff9);};}exports['index']=function(_0x895be5,_0x362b00){var _0x2ade3b={},_0x1449ec={},_0x3319ab={'count':0x0,'rows':[]};var _0x36172c=_[_0x6e1b('0x2d')](db[_0x6e1b('0x2e')]['rawAttributes'],function(_0x415397){return{'name':_0x415397[_0x6e1b('0x2f')],'type':_0x415397[_0x6e1b('0x30')][_0x6e1b('0x31')]};});_0x1449ec[_0x6e1b('0x32')]=_['map'](_0x36172c,_0x6e1b('0x2b'));_0x1449ec[_0x6e1b('0x33')]=_[_0x6e1b('0x34')](_0x895be5['query']);_0x1449ec['filters']=_[_0x6e1b('0x35')](_0x1449ec[_0x6e1b('0x32')],_0x1449ec[_0x6e1b('0x33')]);_0x2ade3b[_0x6e1b('0x36')]=_[_0x6e1b('0x35')](_0x1449ec[_0x6e1b('0x32')],qs['fields'](_0x895be5['query'][_0x6e1b('0x37')]));_0x2ade3b[_0x6e1b('0x36')]=_0x2ade3b['attributes'][_0x6e1b('0x38')]?_0x2ade3b[_0x6e1b('0x36')]:_0x1449ec[_0x6e1b('0x32')];if(!_0x895be5['query']['hasOwnProperty']('nolimit')){_0x2ade3b[_0x6e1b('0x20')]=qs[_0x6e1b('0x20')](_0x895be5[_0x6e1b('0x33')][_0x6e1b('0x20')]);_0x2ade3b[_0x6e1b('0x1e')]=qs[_0x6e1b('0x1e')](_0x895be5['query']['offset']);}_0x2ade3b[_0x6e1b('0x39')]=qs[_0x6e1b('0x3a')](_0x895be5[_0x6e1b('0x33')]['sort']);_0x2ade3b[_0x6e1b('0x3b')]=qs[_0x6e1b('0x3c')](_['pick'](_0x895be5['query'],_0x1449ec['filters']),_0x36172c);if(_0x895be5['query'][_0x6e1b('0x3d')]){_0x2ade3b[_0x6e1b('0x3b')]=_['merge'](_0x2ade3b['where'],{'$or':_[_0x6e1b('0x2d')](_0x36172c,function(_0x1bdfee){if(_0x1bdfee['type']!==_0x6e1b('0x3e')){var _0x4e1712={};_0x4e1712[_0x1bdfee[_0x6e1b('0x2b')]]={'$like':'%'+_0x895be5['query'][_0x6e1b('0x3d')]+'%'};return _0x4e1712;}})});}_0x2ade3b=_[_0x6e1b('0x3f')]({},_0x2ade3b,_0x895be5[_0x6e1b('0x40')]);var _0x165062={'where':_0x2ade3b[_0x6e1b('0x3b')]};return db['ZendeskField']['count'](_0x165062)[_0x6e1b('0x27')](function(_0x166311){_0x3319ab[_0x6e1b('0x21')]=_0x166311;if(_0x895be5[_0x6e1b('0x33')]['includeAll']){_0x2ade3b['include']=[{'all':!![]}];}return db['ZendeskField'][_0x6e1b('0x41')](_0x2ade3b);})[_0x6e1b('0x27')](function(_0x5186c6){_0x3319ab[_0x6e1b('0x42')]=_0x5186c6;return _0x3319ab;})['then'](respondWithFilteredResult(_0x362b00,_0x2ade3b))['catch'](handleError(_0x362b00,null));};exports[_0x6e1b('0x43')]=function(_0x27e393,_0x619d2d){var _0x59f5a8={'raw':!![],'where':{'id':_0x27e393[_0x6e1b('0x44')]['id']}},_0x5d38fe={};_0x5d38fe['model']=_['keys'](db['ZendeskField'][_0x6e1b('0x45')]);_0x5d38fe[_0x6e1b('0x33')]=_['keys'](_0x27e393[_0x6e1b('0x33')]);_0x5d38fe[_0x6e1b('0x3c')]=_[_0x6e1b('0x35')](_0x5d38fe[_0x6e1b('0x32')],_0x5d38fe[_0x6e1b('0x33')]);_0x59f5a8[_0x6e1b('0x36')]=_['intersection'](_0x5d38fe[_0x6e1b('0x32')],qs['fields'](_0x27e393['query'][_0x6e1b('0x37')]));_0x59f5a8[_0x6e1b('0x36')]=_0x59f5a8[_0x6e1b('0x36')][_0x6e1b('0x38')]?_0x59f5a8[_0x6e1b('0x36')]:_0x5d38fe['model'];if(_0x27e393[_0x6e1b('0x33')][_0x6e1b('0x46')]){_0x59f5a8[_0x6e1b('0x47')]=[{'all':!![]}];}_0x59f5a8=_['merge']({},_0x59f5a8,_0x27e393[_0x6e1b('0x40')]);return db[_0x6e1b('0x2e')]['find'](_0x59f5a8)['then'](handleEntityNotFound(_0x619d2d,null))[_0x6e1b('0x27')](respondWithResult(_0x619d2d,null))[_0x6e1b('0x48')](handleError(_0x619d2d,null));};exports[_0x6e1b('0x49')]=function(_0x20c2b7,_0x5689bd){return db[_0x6e1b('0x2e')][_0x6e1b('0x49')](_0x20c2b7[_0x6e1b('0x4a')],{})[_0x6e1b('0x27')](respondWithResult(_0x5689bd,0xc9))[_0x6e1b('0x48')](handleError(_0x5689bd,null));};exports['update']=function(_0x36e0d1,_0x1936eb){if(_0x36e0d1[_0x6e1b('0x4a')]['id']){delete _0x36e0d1[_0x6e1b('0x4a')]['id'];}return db[_0x6e1b('0x2e')][_0x6e1b('0x4b')]({'where':{'id':_0x36e0d1[_0x6e1b('0x44')]['id']}})[_0x6e1b('0x27')](handleEntityNotFound(_0x1936eb,null))[_0x6e1b('0x27')](saveUpdates(_0x36e0d1['body'],null))['then'](respondWithResult(_0x1936eb,null))['catch'](handleError(_0x1936eb,null));};exports[_0x6e1b('0x26')]=function(_0x5550d7,_0x48a943){return db[_0x6e1b('0x2e')]['find']({'where':{'id':_0x5550d7['params']['id']}})[_0x6e1b('0x27')](handleEntityNotFound(_0x48a943,null))['then'](removeEntity(_0x48a943,null))[_0x6e1b('0x48')](handleError(_0x48a943,null));};
\ No newline at end of file
+var _0x51a8=['order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','params','options','catch','create','body','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','map','ZendeskField','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x2ed176,_0x1d3e64){var _0x10f61a=function(_0x5339a5){while(--_0x5339a5){_0x2ed176['push'](_0x2ed176['shift']());}};_0x10f61a(++_0x1d3e64);}(_0x51a8,0xec));var _0x851a=function(_0x340376,_0x4588e6){_0x340376=_0x340376-0x0;var _0x1ac9a9=_0x51a8[_0x340376];return _0x1ac9a9;};'use strict';var emlformat=require(_0x851a('0x0'));var rimraf=require(_0x851a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x851a('0x2'));var rp=require('request-promise');var moment=require(_0x851a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x851a('0x4'));var util=require(_0x851a('0x5'));var path=require(_0x851a('0x6'));var sox=require(_0x851a('0x7'));var csv=require(_0x851a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x851a('0x9'));var _=require(_0x851a('0xa'));var squel=require(_0x851a('0xb'));var crypto=require(_0x851a('0xc'));var jsforce=require(_0x851a('0xd'));var deskjs=require(_0x851a('0xe'));var toCsv=require(_0x851a('0x8'));var querystring=require(_0x851a('0xf'));var Papa=require(_0x851a('0x10'));var Redis=require('ioredis');var authService=require(_0x851a('0x11'));var qs=require(_0x851a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x851a('0x13'));var logger=require(_0x851a('0x14'))(_0x851a('0x15'));var utils=require(_0x851a('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x851a('0x17'));var db=require(_0x851a('0x18'))['db'];function respondWithStatusCode(_0x321827,_0x171db9){_0x171db9=_0x171db9||0xcc;return function(_0x3ef339){if(_0x3ef339){return _0x321827[_0x851a('0x19')](_0x171db9);}return _0x321827[_0x851a('0x1a')](_0x171db9)[_0x851a('0x1b')]();};}function respondWithResult(_0x70496b,_0x415cb4){_0x415cb4=_0x415cb4||0xc8;return function(_0x3e9dd9){if(_0x3e9dd9){return _0x70496b[_0x851a('0x1a')](_0x415cb4)[_0x851a('0x1c')](_0x3e9dd9);}};}function respondWithFilteredResult(_0x38f441,_0x3b4df8){return function(_0x1f3688){if(_0x1f3688){var _0x12ef90=typeof _0x3b4df8[_0x851a('0x1d')]===_0x851a('0x1e')&&typeof _0x3b4df8[_0x851a('0x1f')]===_0x851a('0x1e');var _0x3366bc=_0x1f3688['count'];var _0x53b4ce=_0x12ef90?0x0:_0x3b4df8[_0x851a('0x1d')];var _0x4c9d2f=_0x12ef90?_0x1f3688[_0x851a('0x20')]:_0x3b4df8[_0x851a('0x1d')]+_0x3b4df8['limit'];var _0x21e65b;if(_0x4c9d2f>=_0x3366bc){_0x4c9d2f=_0x3366bc;_0x21e65b=0xc8;}else{_0x21e65b=0xce;}_0x38f441[_0x851a('0x1a')](_0x21e65b);return _0x38f441[_0x851a('0x21')](_0x851a('0x22'),_0x53b4ce+'-'+_0x4c9d2f+'/'+_0x3366bc)[_0x851a('0x1c')](_0x1f3688);}return null;};}function patchUpdates(_0x12f97d){return function(_0x3f030f){try{jsonpatch[_0x851a('0x23')](_0x3f030f,_0x12f97d,!![]);}catch(_0x1f8a9f){return BPromise[_0x851a('0x24')](_0x1f8a9f);}return _0x3f030f['save']();};}function saveUpdates(_0x1c31b8,_0x1f2565){return function(_0x215334){if(_0x215334){return _0x215334[_0x851a('0x25')](_0x1c31b8)['then'](function(_0x571909){return _0x571909;});}return null;};}function removeEntity(_0x3786b0,_0x52d153){return function(_0x343165){if(_0x343165){return _0x343165[_0x851a('0x26')]()[_0x851a('0x27')](function(){_0x3786b0[_0x851a('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ff49c,_0x182598){return function(_0x249e50){if(!_0x249e50){_0x4ff49c['sendStatus'](0x194);}return _0x249e50;};}function handleError(_0x5d02e6,_0x8798fa){_0x8798fa=_0x8798fa||0x1f4;return function(_0x4075bc){logger[_0x851a('0x28')](_0x4075bc[_0x851a('0x29')]);if(_0x4075bc[_0x851a('0x2a')]){delete _0x4075bc['name'];}_0x5d02e6['status'](_0x8798fa)['send'](_0x4075bc);};}exports['index']=function(_0x271940,_0x2865d2){var _0x40b141={},_0x40b809={},_0x32c779={'count':0x0,'rows':[]};var _0x3f35d0=_[_0x851a('0x2b')](db[_0x851a('0x2c')][_0x851a('0x2d')],function(_0x4d2d5c){return{'name':_0x4d2d5c['fieldName'],'type':_0x4d2d5c['type']['key']};});_0x40b809[_0x851a('0x2e')]=_['map'](_0x3f35d0,_0x851a('0x2a'));_0x40b809[_0x851a('0x2f')]=_[_0x851a('0x30')](_0x271940[_0x851a('0x2f')]);_0x40b809[_0x851a('0x31')]=_[_0x851a('0x32')](_0x40b809['model'],_0x40b809[_0x851a('0x2f')]);_0x40b141[_0x851a('0x33')]=_[_0x851a('0x32')](_0x40b809['model'],qs['fields'](_0x271940['query'][_0x851a('0x34')]));_0x40b141[_0x851a('0x33')]=_0x40b141[_0x851a('0x33')][_0x851a('0x35')]?_0x40b141[_0x851a('0x33')]:_0x40b809[_0x851a('0x2e')];if(!_0x271940['query'][_0x851a('0x36')](_0x851a('0x37'))){_0x40b141[_0x851a('0x1f')]=qs[_0x851a('0x1f')](_0x271940['query'][_0x851a('0x1f')]);_0x40b141[_0x851a('0x1d')]=qs[_0x851a('0x1d')](_0x271940['query'][_0x851a('0x1d')]);}_0x40b141[_0x851a('0x38')]=qs[_0x851a('0x39')](_0x271940['query']['sort']);_0x40b141[_0x851a('0x3a')]=qs[_0x851a('0x31')](_[_0x851a('0x3b')](_0x271940['query'],_0x40b809[_0x851a('0x31')]),_0x3f35d0);if(_0x271940[_0x851a('0x2f')][_0x851a('0x3c')]){_0x40b141[_0x851a('0x3a')]=_[_0x851a('0x3d')](_0x40b141['where'],{'$or':_[_0x851a('0x2b')](_0x3f35d0,function(_0x1534d3){if(_0x1534d3[_0x851a('0x3e')]!==_0x851a('0x3f')){var _0x164a55={};_0x164a55[_0x1534d3[_0x851a('0x2a')]]={'$like':'%'+_0x271940['query']['filter']+'%'};return _0x164a55;}})});}_0x40b141=_[_0x851a('0x3d')]({},_0x40b141,_0x271940['options']);var _0x4e77d4={'where':_0x40b141[_0x851a('0x3a')]};return db[_0x851a('0x2c')][_0x851a('0x20')](_0x4e77d4)[_0x851a('0x27')](function(_0x33429b){_0x32c779['count']=_0x33429b;if(_0x271940['query'][_0x851a('0x40')]){_0x40b141[_0x851a('0x41')]=[{'all':!![]}];}return db[_0x851a('0x2c')][_0x851a('0x42')](_0x40b141);})['then'](function(_0x287679){_0x32c779[_0x851a('0x43')]=_0x287679;return _0x32c779;})[_0x851a('0x27')](respondWithFilteredResult(_0x2865d2,_0x40b141))['catch'](handleError(_0x2865d2,null));};exports['show']=function(_0xc57820,_0x1ffd06){var _0x123930={'raw':!![],'where':{'id':_0xc57820[_0x851a('0x44')]['id']}},_0x798859={};_0x798859['model']=_['keys'](db[_0x851a('0x2c')][_0x851a('0x2d')]);_0x798859[_0x851a('0x2f')]=_[_0x851a('0x30')](_0xc57820['query']);_0x798859[_0x851a('0x31')]=_[_0x851a('0x32')](_0x798859['model'],_0x798859[_0x851a('0x2f')]);_0x123930[_0x851a('0x33')]=_[_0x851a('0x32')](_0x798859[_0x851a('0x2e')],qs[_0x851a('0x34')](_0xc57820['query']['fields']));_0x123930[_0x851a('0x33')]=_0x123930[_0x851a('0x33')][_0x851a('0x35')]?_0x123930[_0x851a('0x33')]:_0x798859[_0x851a('0x2e')];if(_0xc57820[_0x851a('0x2f')][_0x851a('0x40')]){_0x123930[_0x851a('0x41')]=[{'all':!![]}];}_0x123930=_[_0x851a('0x3d')]({},_0x123930,_0xc57820[_0x851a('0x45')]);return db[_0x851a('0x2c')]['find'](_0x123930)[_0x851a('0x27')](handleEntityNotFound(_0x1ffd06,null))[_0x851a('0x27')](respondWithResult(_0x1ffd06,null))[_0x851a('0x46')](handleError(_0x1ffd06,null));};exports[_0x851a('0x47')]=function(_0x4a6d0c,_0x2d1d9b){return db['ZendeskField'][_0x851a('0x47')](_0x4a6d0c['body'],{})[_0x851a('0x27')](respondWithResult(_0x2d1d9b,0xc9))[_0x851a('0x46')](handleError(_0x2d1d9b,null));};exports[_0x851a('0x25')]=function(_0x1c2dd4,_0x89fc3){if(_0x1c2dd4[_0x851a('0x48')]['id']){delete _0x1c2dd4[_0x851a('0x48')]['id'];}return db['ZendeskField']['find']({'where':{'id':_0x1c2dd4[_0x851a('0x44')]['id']}})[_0x851a('0x27')](handleEntityNotFound(_0x89fc3,null))['then'](saveUpdates(_0x1c2dd4[_0x851a('0x48')],null))[_0x851a('0x27')](respondWithResult(_0x89fc3,null))[_0x851a('0x46')](handleError(_0x89fc3,null));};exports[_0x851a('0x26')]=function(_0x3eacba,_0x17e0d1){return db[_0x851a('0x2c')]['find']({'where':{'id':_0x3eacba[_0x851a('0x44')]['id']}})[_0x851a('0x27')](handleEntityNotFound(_0x17e0d1,null))[_0x851a('0x27')](removeEntity(_0x17e0d1,null))[_0x851a('0x46')](handleError(_0x17e0d1,null));};
\ No newline at end of file
index e932bd0..e932ce7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc13=['path','rimraf','../../config/environment','./intZendeskField.attributes','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','FieldId','api','bluebird','request-promise'];(function(_0x312bee,_0x2725a8){var _0x1808a1=function(_0x586fb3){while(--_0x586fb3){_0x312bee['push'](_0x312bee['shift']());}};_0x1808a1(++_0x2725a8);}(_0xcc13,0x81));var _0x3cc1=function(_0x2172d1,_0x28af11){_0x2172d1=_0x2172d1-0x0;var _0x1f3c34=_0xcc13[_0x2172d1];return _0x1f3c34;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x3cc1('0x0'));var moment=require('moment');var BPromise=require(_0x3cc1('0x1'));var rp=require(_0x3cc1('0x2'));var fs=require('fs');var path=require(_0x3cc1('0x3'));var rimraf=require(_0x3cc1('0x4'));var config=require(_0x3cc1('0x5'));var attributes=require(_0x3cc1('0x6'));module['exports']=function(_0x4897ef,_0x374548){return _0x4897ef[_0x3cc1('0x7')](_0x3cc1('0x8'),attributes,{'tableName':_0x3cc1('0x9'),'paranoid':![],'indexes':[{'name':_0x3cc1('0xa'),'fields':['idField',_0x3cc1('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3322=['ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./intZendeskField.attributes','exports'];(function(_0x280d6b,_0x4fb865){var _0x49c064=function(_0x14892a){while(--_0x14892a){_0x280d6b['push'](_0x280d6b['shift']());}};_0x49c064(++_0x4fb865);}(_0x3322,0x1c7));var _0x2332=function(_0xa6cb17,_0x221d75){_0xa6cb17=_0xa6cb17-0x0;var _0x4959d0=_0x3322[_0xa6cb17];return _0x4959d0;};'use strict';var _=require(_0x2332('0x0'));var util=require(_0x2332('0x1'));var logger=require(_0x2332('0x2'))('api');var moment=require(_0x2332('0x3'));var BPromise=require(_0x2332('0x4'));var rp=require(_0x2332('0x5'));var fs=require('fs');var path=require(_0x2332('0x6'));var rimraf=require('rimraf');var config=require(_0x2332('0x7'));var attributes=require(_0x2332('0x8'));module[_0x2332('0x9')]=function(_0x3eac2f,_0x4327ec){return _0x3eac2f['define'](_0x2332('0xa'),attributes,{'tableName':_0x2332('0xb'),'paranoid':![],'indexes':[{'name':_0x2332('0xc'),'fields':[_0x2332('0xd'),_0x2332('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 79f869d..859fcc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42ba=['ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1b01db,_0x12b02e){var _0x2c8b27=function(_0x203fa1){while(--_0x203fa1){_0x1b01db['push'](_0x1b01db['shift']());}};_0x2c8b27(++_0x12b02e);}(_0x42ba,0x14c));var _0xa42b=function(_0x47e145,_0x3988f7){_0x47e145=_0x47e145-0x0;var _0x28cd88=_0x42ba[_0x47e145];return _0x28cd88;};'use strict';var _=require(_0xa42b('0x0'));var util=require(_0xa42b('0x1'));var moment=require(_0xa42b('0x2'));var BPromise=require(_0xa42b('0x3'));var rs=require(_0xa42b('0x4'));var fs=require('fs');var Redis=require(_0xa42b('0x5'));var db=require(_0xa42b('0x6'))['db'];var utils=require(_0xa42b('0x7'));var logger=require('../../config/logger')(_0xa42b('0x8'));var config=require(_0xa42b('0x9'));var jayson=require(_0xa42b('0xa'));var client=jayson['client'][_0xa42b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x44974a,_0x417605,_0x18b0a6){return new BPromise(function(_0x1bdf5f,_0x1caa9b){return client[_0xa42b('0xc')](_0x44974a,_0x18b0a6)[_0xa42b('0xd')](function(_0x5509cd){logger[_0xa42b('0xe')](_0xa42b('0xf'),_0x417605,_0xa42b('0x10'));logger[_0xa42b('0x11')](_0xa42b('0x12'),_0x417605,_0xa42b('0x10'),JSON[_0xa42b('0x13')](_0x5509cd));if(_0x5509cd[_0xa42b('0x14')]){if(_0x5509cd[_0xa42b('0x14')][_0xa42b('0x15')]===0x1f4){logger[_0xa42b('0x14')](_0xa42b('0xf'),_0x417605,_0x5509cd[_0xa42b('0x14')][_0xa42b('0x16')]);return _0x1caa9b(_0x5509cd[_0xa42b('0x14')][_0xa42b('0x16')]);}logger[_0xa42b('0x14')](_0xa42b('0xf'),_0x417605,_0x5509cd[_0xa42b('0x14')]['message']);return _0x1bdf5f(_0x5509cd['error']['message']);}else{logger[_0xa42b('0xe')]('ZendeskField,\x20%s,\x20%s',_0x417605,_0xa42b('0x10'));_0x1bdf5f(_0x5509cd[_0xa42b('0x17')][_0xa42b('0x16')]);}})[_0xa42b('0x18')](function(_0x5475b6){logger[_0xa42b('0x14')](_0xa42b('0xf'),_0x417605,_0x5475b6);_0x1caa9b(_0x5475b6);});});}
\ No newline at end of file
+var _0xfe20=['ZendeskField,\x20%s,\x20%s','message','result','lodash','moment','../../config/utils','../../config/logger','rpc','client','http','request','then','info','ZendeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0xfe20,0x16b));var _0x0fe2=function(_0x58ae65,_0x253e23){_0x58ae65=_0x58ae65-0x0;var _0x140f7c=_0xfe20[_0x58ae65];return _0x140f7c;};'use strict';var _=require(_0x0fe2('0x0'));var util=require('util');var moment=require(_0x0fe2('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0fe2('0x2'));var logger=require(_0x0fe2('0x3'))(_0x0fe2('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0fe2('0x5')][_0x0fe2('0x6')]({'port':0x232a});function respondWithRpcPromise(_0xd4f03c,_0x3e0e87,_0x32f6d5){return new BPromise(function(_0x1993c0,_0x17b7a4){return client[_0x0fe2('0x7')](_0xd4f03c,_0x32f6d5)[_0x0fe2('0x8')](function(_0x3f4008){logger[_0x0fe2('0x9')]('ZendeskField,\x20%s,\x20%s',_0x3e0e87,'request\x20sent');logger['debug'](_0x0fe2('0xa'),_0x3e0e87,_0x0fe2('0xb'),JSON[_0x0fe2('0xc')](_0x3f4008));if(_0x3f4008[_0x0fe2('0xd')]){if(_0x3f4008[_0x0fe2('0xd')][_0x0fe2('0xe')]===0x1f4){logger[_0x0fe2('0xd')](_0x0fe2('0xf'),_0x3e0e87,_0x3f4008['error']['message']);return _0x17b7a4(_0x3f4008['error'][_0x0fe2('0x10')]);}logger['error']('ZendeskField,\x20%s,\x20%s',_0x3e0e87,_0x3f4008['error'][_0x0fe2('0x10')]);return _0x1993c0(_0x3f4008[_0x0fe2('0xd')][_0x0fe2('0x10')]);}else{logger['info'](_0x0fe2('0xf'),_0x3e0e87,_0x0fe2('0xb'));_0x1993c0(_0x3f4008[_0x0fe2('0x11')][_0x0fe2('0x10')]);}})['catch'](function(_0x4552a5){logger[_0x0fe2('0xd')](_0x0fe2('0xf'),_0x3e0e87,_0x4552a5);_0x17b7a4(_0x4552a5);});});}
\ No newline at end of file
index 19755c4..36873b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d50=['fs-extra','../../components/auth/service','./intZohoAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','delete','destroy','multer','util','path','connect-timeout','Router'];(function(_0xc2dde6,_0x1cccc9){var _0x9fc29c=function(_0x54ba28){while(--_0x54ba28){_0xc2dde6['push'](_0xc2dde6['shift']());}};_0x9fc29c(++_0x1cccc9);}(_0x8d50,0xb3));var _0x08d5=function(_0x59d0fa,_0x564873){_0x59d0fa=_0x59d0fa-0x0;var _0x51b65a=_0x8d50[_0x59d0fa];return _0x51b65a;};'use strict';var multer=require(_0x08d5('0x0'));var util=require(_0x08d5('0x1'));var path=require(_0x08d5('0x2'));var timeout=require(_0x08d5('0x3'));var express=require('express');var router=express[_0x08d5('0x4')]();var fs_extra=require(_0x08d5('0x5'));var auth=require(_0x08d5('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x08d5('0x7'));router[_0x08d5('0x8')]('/',auth[_0x08d5('0x9')](),controller[_0x08d5('0xa')]);router[_0x08d5('0x8')](_0x08d5('0xb'),auth[_0x08d5('0x9')](),controller[_0x08d5('0xc')]);router['get'](_0x08d5('0xd'),auth[_0x08d5('0x9')](),controller[_0x08d5('0xe')]);router[_0x08d5('0x8')](_0x08d5('0xf'),auth[_0x08d5('0x9')](),controller[_0x08d5('0x10')]);router['post']('/',auth[_0x08d5('0x9')](),controller['create']);router[_0x08d5('0x11')](_0x08d5('0xd'),auth['isAuthenticated'](),controller[_0x08d5('0x12')]);router[_0x08d5('0x13')](_0x08d5('0xb'),auth[_0x08d5('0x9')](),controller[_0x08d5('0x14')]);router[_0x08d5('0x15')](_0x08d5('0xb'),auth[_0x08d5('0x9')](),controller[_0x08d5('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x2764=['/:id/fields','getFields','post','addConfiguration','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZohoAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations'];(function(_0x430965,_0x2f5486){var _0x4738f3=function(_0x34a088){while(--_0x34a088){_0x430965['push'](_0x430965['shift']());}};_0x4738f3(++_0x2f5486);}(_0x2764,0xa8));var _0x4276=function(_0x349d53,_0x4a565a){_0x349d53=_0x349d53-0x0;var _0x26ceec=_0x2764[_0x349d53];return _0x26ceec;};'use strict';var multer=require(_0x4276('0x0'));var util=require(_0x4276('0x1'));var path=require(_0x4276('0x2'));var timeout=require(_0x4276('0x3'));var express=require(_0x4276('0x4'));var router=express[_0x4276('0x5')]();var fs_extra=require(_0x4276('0x6'));var auth=require(_0x4276('0x7'));var interaction=require(_0x4276('0x8'));var config=require('../../config/environment');var controller=require(_0x4276('0x9'));router[_0x4276('0xa')]('/',auth[_0x4276('0xb')](),controller[_0x4276('0xc')]);router[_0x4276('0xa')](_0x4276('0xd'),auth[_0x4276('0xb')](),controller['show']);router['get'](_0x4276('0xe'),auth['isAuthenticated'](),controller[_0x4276('0xf')]);router[_0x4276('0xa')](_0x4276('0x10'),auth[_0x4276('0xb')](),controller[_0x4276('0x11')]);router[_0x4276('0x12')]('/',auth[_0x4276('0xb')](),controller['create']);router[_0x4276('0x12')](_0x4276('0xe'),auth[_0x4276('0xb')](),controller[_0x4276('0x13')]);router['put'](_0x4276('0xd'),auth[_0x4276('0xb')](),controller[_0x4276('0x14')]);router[_0x4276('0x15')](_0x4276('0xd'),auth['isAuthenticated'](),controller[_0x4276('0x16')]);module['exports']=router;
\ No newline at end of file
index 31a5039..2d4a6c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e6=['sequelize','STRING'];(function(_0x448f08,_0xc1365f){var _0x5e5e13=function(_0x7fa134){while(--_0x7fa134){_0x448f08['push'](_0x448f08['shift']());}};_0x5e5e13(++_0xc1365f);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x4d8dc3,_0x585fd1){_0x4d8dc3=_0x4d8dc3-0x0;var _0x9b03d9=_0xb4e6[_0x4d8dc3];return _0x9b03d9;};'use strict';var Sequelize=require(_0x6b4e('0x0'));module['exports']={'name':{'type':Sequelize[_0x6b4e('0x1')]},'description':{'type':Sequelize[_0x6b4e('0x1')]},'host':{'type':Sequelize[_0x6b4e('0x1')]},'zone':{'type':Sequelize[_0x6b4e('0x1')]},'clientId':{'type':Sequelize[_0x6b4e('0x1')]},'clientSecret':{'type':Sequelize[_0x6b4e('0x1')]},'serverUrl':{'type':Sequelize[_0x6b4e('0x1')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x6b4e('0x1')]}};
\ No newline at end of file
+var _0x91a7=['STRING','exports'];(function(_0x1c16cc,_0x23ed44){var _0x409bd9=function(_0x5b2a8e){while(--_0x5b2a8e){_0x1c16cc['push'](_0x1c16cc['shift']());}};_0x409bd9(++_0x23ed44);}(_0x91a7,0xe7));var _0x791a=function(_0x53c009,_0x5ae527){_0x53c009=_0x53c009-0x0;var _0x2fafdb=_0x91a7[_0x53c009];return _0x2fafdb;};'use strict';var Sequelize=require('sequelize');module[_0x791a('0x0')]={'name':{'type':Sequelize[_0x791a('0x1')]},'description':{'type':Sequelize[_0x791a('0x1')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x791a('0x1')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x791a('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x791a('0x1')]}};
\ No newline at end of file
index 0c9cff4..ab93757 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aba=['host','serverUrl','code','zoho.eu','com','slice','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','error','message','Owner','Subject','WhoId','Call_Duration','Call_Start_Time','Call_Type','includes','api_name','system_mandatory','push','display_label','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','bluebird','path','sox','fs-extra','lodash','squel','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','set','apply','update','destroy','sendStatus','name','send','map','ZohoAccount','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','then','includeAll','rows','params','rawAttributes','include','options','find','create','body','catch','getConfigurations','findOne','ZohoConfiguration','order','addConfiguration','getSubjects','channel','Descriptions','getDescriptions','ZohoField','Subjects','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','POST','refreshToken','clientId','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields'];(function(_0x2a67fe,_0x295c09){var _0x57e726=function(_0x280573){while(--_0x280573){_0x2a67fe['push'](_0x2a67fe['shift']());}};_0x57e726(++_0x295c09);}(_0x2aba,0x9c));var _0xa2ab=function(_0x2882d2,_0x2ba5d7){_0x2882d2=_0x2882d2-0x0;var _0x5f54c4=_0x2aba[_0x2882d2];return _0x5f54c4;};'use strict';var emlformat=require(_0xa2ab('0x0'));var rimraf=require(_0xa2ab('0x1'));var zipdir=require(_0xa2ab('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa2ab('0x3'));var moment=require('moment');var BPromise=require(_0xa2ab('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xa2ab('0x5'));var sox=require(_0xa2ab('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa2ab('0x7'));var _=require(_0xa2ab('0x8'));var squel=require(_0xa2ab('0x9'));var crypto=require('crypto');var jsforce=require(_0xa2ab('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xa2ab('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa2ab('0xc'));var authService=require(_0xa2ab('0xd'));var qs=require(_0xa2ab('0xe'));var as=require(_0xa2ab('0xf'));var hardwareService=require(_0xa2ab('0x10'));var logger=require('../../config/logger')(_0xa2ab('0x11'));var utils=require(_0xa2ab('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xa2ab('0x13'));var db=require(_0xa2ab('0x14'))['db'];var integrations=require(_0xa2ab('0x15'));function respondWithStatusCode(_0x5b6120,_0x10ca3d){_0x10ca3d=_0x10ca3d||0xcc;return function(_0x15db87){if(_0x15db87){return _0x5b6120['sendStatus'](_0x10ca3d);}return _0x5b6120[_0xa2ab('0x16')](_0x10ca3d)[_0xa2ab('0x17')]();};}function respondWithResult(_0x27fff5,_0x4a3e9d){_0x4a3e9d=_0x4a3e9d||0xc8;return function(_0x4ccca3){if(_0x4ccca3){return _0x27fff5[_0xa2ab('0x16')](_0x4a3e9d)[_0xa2ab('0x18')](_0x4ccca3);}};}function respondWithFilteredResult(_0x38b406,_0x12eb22){return function(_0x5942b5){if(_0x5942b5){var _0x2946b3=typeof _0x12eb22[_0xa2ab('0x19')]==='undefined'&&typeof _0x12eb22[_0xa2ab('0x1a')]===_0xa2ab('0x1b');var _0x3a7748=_0x5942b5[_0xa2ab('0x1c')];var _0x8a0e9a=_0x2946b3?0x0:_0x12eb22[_0xa2ab('0x19')];var _0x42725a=_0x2946b3?_0x5942b5[_0xa2ab('0x1c')]:_0x12eb22[_0xa2ab('0x19')]+_0x12eb22[_0xa2ab('0x1a')];var _0x519d87;if(_0x42725a>=_0x3a7748){_0x42725a=_0x3a7748;_0x519d87=0xc8;}else{_0x519d87=0xce;}_0x38b406[_0xa2ab('0x16')](_0x519d87);return _0x38b406[_0xa2ab('0x1d')]('Content-Range',_0x8a0e9a+'-'+_0x42725a+'/'+_0x3a7748)[_0xa2ab('0x18')](_0x5942b5);}return null;};}function patchUpdates(_0x2f0171){return function(_0x480774){try{jsonpatch[_0xa2ab('0x1e')](_0x480774,_0x2f0171,!![]);}catch(_0x7bb5d7){return BPromise['reject'](_0x7bb5d7);}return _0x480774['save']();};}function saveUpdates(_0xfe13c0,_0x4fb35b){return function(_0x2c1282){if(_0x2c1282){return _0x2c1282[_0xa2ab('0x1f')](_0xfe13c0)['then'](function(_0x53393a){return _0x53393a;});}return null;};}function removeEntity(_0x100dcd,_0x6176c5){return function(_0x25f879){if(_0x25f879){return _0x25f879[_0xa2ab('0x20')]()['then'](function(){_0x100dcd[_0xa2ab('0x16')](0xcc)[_0xa2ab('0x17')]();});}};}function handleEntityNotFound(_0x4bcf4c,_0x5762a8){return function(_0x5a2c31){if(!_0x5a2c31){_0x4bcf4c[_0xa2ab('0x21')](0x194);}return _0x5a2c31;};}function handleError(_0x50d8c1,_0x3ff8ee){_0x3ff8ee=_0x3ff8ee||0x1f4;return function(_0x33fdbf){logger['error'](_0x33fdbf['stack']);if(_0x33fdbf[_0xa2ab('0x22')]){delete _0x33fdbf['name'];}_0x50d8c1['status'](_0x3ff8ee)[_0xa2ab('0x23')](_0x33fdbf);};}exports['index']=function(_0x1d77b5,_0x369f79){var _0x20f8bb={},_0x1504d1={},_0x2e20c4={'count':0x0,'rows':[]};var _0x147ce4=_[_0xa2ab('0x24')](db[_0xa2ab('0x25')]['rawAttributes'],function(_0x3114c4){return{'name':_0x3114c4[_0xa2ab('0x26')],'type':_0x3114c4[_0xa2ab('0x27')]['key']};});_0x1504d1[_0xa2ab('0x28')]=_[_0xa2ab('0x24')](_0x147ce4,_0xa2ab('0x22'));_0x1504d1[_0xa2ab('0x29')]=_[_0xa2ab('0x2a')](_0x1d77b5[_0xa2ab('0x29')]);_0x1504d1[_0xa2ab('0x2b')]=_[_0xa2ab('0x2c')](_0x1504d1['model'],_0x1504d1['query']);_0x20f8bb[_0xa2ab('0x2d')]=_[_0xa2ab('0x2c')](_0x1504d1[_0xa2ab('0x28')],qs[_0xa2ab('0x2e')](_0x1d77b5['query'][_0xa2ab('0x2e')]));_0x20f8bb[_0xa2ab('0x2d')]=_0x20f8bb['attributes'][_0xa2ab('0x2f')]?_0x20f8bb[_0xa2ab('0x2d')]:_0x1504d1['model'];if(!_0x1d77b5['query'][_0xa2ab('0x30')](_0xa2ab('0x31'))){_0x20f8bb[_0xa2ab('0x1a')]=qs[_0xa2ab('0x1a')](_0x1d77b5['query']['limit']);_0x20f8bb[_0xa2ab('0x19')]=qs[_0xa2ab('0x19')](_0x1d77b5[_0xa2ab('0x29')]['offset']);}_0x20f8bb['order']=qs[_0xa2ab('0x32')](_0x1d77b5[_0xa2ab('0x29')][_0xa2ab('0x32')]);_0x20f8bb[_0xa2ab('0x33')]=qs[_0xa2ab('0x2b')](_[_0xa2ab('0x34')](_0x1d77b5[_0xa2ab('0x29')],_0x1504d1['filters']),_0x147ce4);if(_0x1d77b5['query']['filter']){_0x20f8bb['where']=_[_0xa2ab('0x35')](_0x20f8bb[_0xa2ab('0x33')],{'$or':_[_0xa2ab('0x24')](_0x147ce4,function(_0x365ff7){if(_0x365ff7[_0xa2ab('0x27')]!=='VIRTUAL'){var _0x5264a4={};_0x5264a4[_0x365ff7[_0xa2ab('0x22')]]={'$like':'%'+_0x1d77b5[_0xa2ab('0x29')][_0xa2ab('0x36')]+'%'};return _0x5264a4;}})});}_0x20f8bb=_['merge']({},_0x20f8bb,_0x1d77b5['options']);var _0x4307ed={'where':_0x20f8bb[_0xa2ab('0x33')]};return db[_0xa2ab('0x25')]['count'](_0x4307ed)[_0xa2ab('0x37')](function(_0x30bf96){_0x2e20c4[_0xa2ab('0x1c')]=_0x30bf96;if(_0x1d77b5[_0xa2ab('0x29')][_0xa2ab('0x38')]){_0x20f8bb['include']=[{'all':!![]}];}return db['ZohoAccount']['findAll'](_0x20f8bb);})[_0xa2ab('0x37')](function(_0x21fc27){_0x2e20c4[_0xa2ab('0x39')]=_0x21fc27;return _0x2e20c4;})[_0xa2ab('0x37')](respondWithFilteredResult(_0x369f79,_0x20f8bb))['catch'](handleError(_0x369f79,null));};exports['show']=function(_0x364ed3,_0x121750){var _0x30cd40={'raw':![],'where':{'id':_0x364ed3[_0xa2ab('0x3a')]['id']}},_0x9f7e21={};_0x9f7e21[_0xa2ab('0x28')]=_[_0xa2ab('0x2a')](db[_0xa2ab('0x25')][_0xa2ab('0x3b')]);_0x9f7e21[_0xa2ab('0x29')]=_['keys'](_0x364ed3[_0xa2ab('0x29')]);_0x9f7e21[_0xa2ab('0x2b')]=_['intersection'](_0x9f7e21[_0xa2ab('0x28')],_0x9f7e21[_0xa2ab('0x29')]);_0x30cd40[_0xa2ab('0x2d')]=_[_0xa2ab('0x2c')](_0x9f7e21[_0xa2ab('0x28')],qs['fields'](_0x364ed3[_0xa2ab('0x29')]['fields']));_0x30cd40[_0xa2ab('0x2d')]=_0x30cd40[_0xa2ab('0x2d')][_0xa2ab('0x2f')]?_0x30cd40[_0xa2ab('0x2d')]:_0x9f7e21[_0xa2ab('0x28')];if(_0x364ed3[_0xa2ab('0x29')][_0xa2ab('0x38')]){_0x30cd40[_0xa2ab('0x3c')]=[{'all':!![]}];}_0x30cd40=_[_0xa2ab('0x35')]({},_0x30cd40,_0x364ed3[_0xa2ab('0x3d')]);return db[_0xa2ab('0x25')][_0xa2ab('0x3e')](_0x30cd40)[_0xa2ab('0x37')](handleEntityNotFound(_0x121750,null))[_0xa2ab('0x37')](respondWithResult(_0x121750,null))['catch'](handleError(_0x121750,null));};exports[_0xa2ab('0x3f')]=function(_0x360765,_0x450c0e){return db[_0xa2ab('0x25')][_0xa2ab('0x3f')](_0x360765[_0xa2ab('0x40')],{})[_0xa2ab('0x37')](respondWithResult(_0x450c0e,0xc9))[_0xa2ab('0x41')](handleError(_0x450c0e,null));};exports[_0xa2ab('0x1f')]=function(_0x4511a6,_0x58fd8e){if(_0x4511a6[_0xa2ab('0x40')]['id']){delete _0x4511a6['body']['id'];}return db['ZohoAccount'][_0xa2ab('0x3e')]({'where':{'id':_0x4511a6[_0xa2ab('0x3a')]['id']}})[_0xa2ab('0x37')](handleEntityNotFound(_0x58fd8e,null))['then'](saveUpdates(_0x4511a6[_0xa2ab('0x40')],null))['then'](respondWithResult(_0x58fd8e,null))['catch'](handleError(_0x58fd8e,null));};exports[_0xa2ab('0x20')]=function(_0x352682,_0x47410a){return db[_0xa2ab('0x25')]['find']({'where':{'id':_0x352682[_0xa2ab('0x3a')]['id']}})[_0xa2ab('0x37')](handleEntityNotFound(_0x47410a,null))[_0xa2ab('0x37')](removeEntity(_0x47410a,null))[_0xa2ab('0x41')](handleError(_0x47410a,null));};exports[_0xa2ab('0x42')]=function(_0x2c3300,_0x18a475,_0x463fc4){var _0x54d648={};var _0x59dd8c={};var _0x11cf52;var _0x404497;return db['ZohoAccount'][_0xa2ab('0x43')]({'where':{'id':_0x2c3300['params']['id']}})['then'](handleEntityNotFound(_0x18a475,null))[_0xa2ab('0x37')](function(_0x34acf4){if(_0x34acf4){_0x11cf52=_0x34acf4;_0x59dd8c[_0xa2ab('0x28')]=_[_0xa2ab('0x2a')](db[_0xa2ab('0x44')][_0xa2ab('0x3b')]);_0x59dd8c['query']=_[_0xa2ab('0x2a')](_0x2c3300[_0xa2ab('0x29')]);_0x59dd8c['filters']=_[_0xa2ab('0x2c')](_0x59dd8c[_0xa2ab('0x28')],_0x59dd8c[_0xa2ab('0x29')]);_0x54d648[_0xa2ab('0x2d')]=_[_0xa2ab('0x2c')](_0x59dd8c[_0xa2ab('0x28')],qs[_0xa2ab('0x2e')](_0x2c3300[_0xa2ab('0x29')]['fields']));_0x54d648[_0xa2ab('0x2d')]=_0x54d648['attributes'][_0xa2ab('0x2f')]?_0x54d648['attributes']:_0x59dd8c['model'];_0x54d648[_0xa2ab('0x45')]=qs[_0xa2ab('0x32')](_0x2c3300['query'][_0xa2ab('0x32')]);_0x54d648[_0xa2ab('0x33')]=qs[_0xa2ab('0x2b')](_[_0xa2ab('0x34')](_0x2c3300[_0xa2ab('0x29')],_0x59dd8c[_0xa2ab('0x2b')]));if(_0x2c3300[_0xa2ab('0x29')]['filter']){_0x54d648[_0xa2ab('0x33')]=_[_0xa2ab('0x35')](_0x54d648['where'],{'$or':_['map'](_0x54d648[_0xa2ab('0x2d')],function(_0x125762){var _0x649ccf={};_0x649ccf[_0x125762]={'$like':'%'+_0x2c3300[_0xa2ab('0x29')]['filter']+'%'};return _0x649ccf;})});}_0x54d648=_['merge']({},_0x54d648,_0x2c3300[_0xa2ab('0x3d')]);return _0x11cf52[_0xa2ab('0x42')](_0x54d648);}})[_0xa2ab('0x37')](function(_0x5d4be4){if(_0x5d4be4){_0x404497=_0x5d4be4['length'];if(!_0x2c3300[_0xa2ab('0x29')][_0xa2ab('0x30')](_0xa2ab('0x31'))){_0x54d648['limit']=qs[_0xa2ab('0x1a')](_0x2c3300['query'][_0xa2ab('0x1a')]);_0x54d648[_0xa2ab('0x19')]=qs[_0xa2ab('0x19')](_0x2c3300[_0xa2ab('0x29')][_0xa2ab('0x19')]);}return _0x11cf52[_0xa2ab('0x42')](_0x54d648);}})['then'](function(_0x47fd29){if(_0x47fd29){return _0x47fd29?{'count':_0x404497,'rows':_0x47fd29}:null;}})[_0xa2ab('0x37')](respondWithResult(_0x18a475,null))[_0xa2ab('0x41')](handleError(_0x18a475,null));};exports[_0xa2ab('0x46')]=function(_0x1090fa,_0x1c395e,_0x55afbd){if(_0x1090fa['body']['id']){delete _0x1090fa[_0xa2ab('0x40')]['id'];}return db['ZohoAccount'][_0xa2ab('0x43')]({'where':{'id':_0x1090fa[_0xa2ab('0x3a')]['id']}})['then'](handleEntityNotFound(_0x1c395e,null))['then'](function(_0x3bcc78){if(_0x3bcc78){_0x1090fa['body']['AccountId']=_0x3bcc78['id'];_0x1090fa[_0xa2ab('0x40')]['Subjects']=integrations[_0xa2ab('0x47')](_0x1090fa[_0xa2ab('0x40')][_0xa2ab('0x48')],_0x1090fa[_0xa2ab('0x40')]['type']);_0x1090fa[_0xa2ab('0x40')][_0xa2ab('0x49')]=integrations[_0xa2ab('0x4a')](_0x1090fa[_0xa2ab('0x40')][_0xa2ab('0x48')],_0x1090fa[_0xa2ab('0x40')][_0xa2ab('0x27')]);return db[_0xa2ab('0x44')][_0xa2ab('0x3f')](_0x1090fa[_0xa2ab('0x40')],{'include':[{'model':db[_0xa2ab('0x4b')],'as':_0xa2ab('0x4c')},{'model':db[_0xa2ab('0x4b')],'as':_0xa2ab('0x49')}]});}return null;})[_0xa2ab('0x37')](respondWithResult(_0x1c395e,null))[_0xa2ab('0x41')](handleError(_0x1c395e,null));};function getAccessToken(_0x2614db){return new Promise(function(_0x413bb0,_0x1994c6){var _0x5ea94d;switch(_0x2614db[_0xa2ab('0x4d')]){case'US':_0x5ea94d='https://accounts.zoho.com';break;case'AU':_0x5ea94d=_0xa2ab('0x4e');break;case'EU':_0x5ea94d=_0xa2ab('0x4f');break;case'IN':_0x5ea94d=_0xa2ab('0x50');break;case'CN':_0x5ea94d='https://accounts.zoho.com.cn';break;default:_0x5ea94d=_0xa2ab('0x4f');break;}var _0x4baef1={'method':_0xa2ab('0x51'),'uri':_0x5ea94d+'/oauth/v2/token','qs':{'refresh_token':_0x2614db[_0xa2ab('0x52')],'client_id':_0x2614db[_0xa2ab('0x53')],'client_secret':_0x2614db[_0xa2ab('0x54')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x4baef1)[_0xa2ab('0x37')](function(_0x253605){if(_0x253605[_0xa2ab('0x55')]){_0x413bb0(_0x253605[_0xa2ab('0x55')]);}else{_0x1994c6(_0xa2ab('0x56'));}})[_0xa2ab('0x41')](function(_0x4c27d0){_0x1994c6(_0x4c27d0);});});}exports[_0xa2ab('0x57')]=function(_0x4e3ae7,_0x3c5f20,_0xe61782){var _0x4b0af2,_0x524956,_0x8af94a,_0x1d864d,_0x397b1d;return db['ZohoAccount'][_0xa2ab('0x43')]({'where':{'id':_0x4e3ae7[_0xa2ab('0x3a')]['id']},'attributes':['id',_0xa2ab('0x58'),_0xa2ab('0x4d'),_0xa2ab('0x53'),_0xa2ab('0x54'),_0xa2ab('0x59'),_0xa2ab('0x5a'),_0xa2ab('0x52')]})[_0xa2ab('0x37')](handleEntityNotFound(_0x3c5f20,null))[_0xa2ab('0x37')](function(_0x599940){_0x397b1d=_0x599940;_0x4b0af2=_0x397b1d[_0xa2ab('0x58')];_0x524956=_0x4b0af2===_0xa2ab('0x5b')?'eu':_0xa2ab('0x5c');_0x8af94a=_0x397b1d['serverUrl'];var _0x4df52e=_0x8af94a[_0xa2ab('0x5d')](-0x1);if(_0x4df52e==='/'||_0x4df52e==='\x5c'||_0x4df52e===':'){_0x8af94a=_0x8af94a['substring'](0x0,_0x8af94a['lastIndexOf'](_0x4df52e));}if(!_0x397b1d[_0xa2ab('0x52')]){throw new Error(_0xa2ab('0x5e'));}return getAccessToken(_0x397b1d);})['then'](function(_0x1e2043){if(_0x1e2043){return rp({'method':_0xa2ab('0x5f'),'uri':util[_0xa2ab('0x60')](_0xa2ab('0x61'),_0x524956),'qs':{'module':_0xa2ab('0x62')},'headers':{'Authorization':_0xa2ab('0x63')+_0x1e2043},'json':!![]});}})['then'](function(_0x2c614d){if(_0x2c614d){if(_0x2c614d[_0xa2ab('0x64')]&&_0x2c614d[_0xa2ab('0x64')]['error']){throw new Error(_0x2c614d[_0xa2ab('0x64')][_0xa2ab('0x65')][_0xa2ab('0x66')]);}var _0x5980e2=[];var _0x9839c4=[];var _0x4fa8ef=[_0xa2ab('0x67'),_0xa2ab('0x68'),'Description',_0xa2ab('0x69'),_0xa2ab('0x6a'),'Call_Result',_0xa2ab('0x6b'),_0xa2ab('0x6c')];_0x9839c4=_['remove'](_0x2c614d['fields'],function(_0x13f806){return _0x4fa8ef[_0xa2ab('0x6d')](_0x13f806[_0xa2ab('0x6e')]);});for(var _0x26d66a=0x0;_0x26d66a<_0x9839c4[_0xa2ab('0x2f')];_0x26d66a++){if(_0x9839c4[_0x26d66a][_0xa2ab('0x6f')]===![]){_0x5980e2[_0xa2ab('0x70')]({'id':_0x9839c4[_0x26d66a]['id'],'name':_0x9839c4[_0x26d66a][_0xa2ab('0x71')],'custom':_0x9839c4[_0x26d66a]['custom_field'],'options':_0x9839c4[_0x26d66a][_0xa2ab('0x72')]===_0xa2ab('0x73')&&_0x9839c4[_0x26d66a][_0xa2ab('0x74')][_0xa2ab('0x2f')]>-0x1?_['map'](_0x9839c4[_0x26d66a][_0xa2ab('0x74')],function(_0x30b0ff){return{'name':_0x30b0ff,'value':_0x30b0ff};}):[]});}}return{'count':_0x5980e2['length'],'rows':_0x5980e2};}else{return{'count':0x0,'rows':[]};}})[_0xa2ab('0x37')](respondWithResult(_0x3c5f20,null))[_0xa2ab('0x41')](function(_0x5cd428){var _0x5552fe=_0x4e3ae7[_0xa2ab('0x29')][_0xa2ab('0x75')]?0x1f4:_0x5cd428[_0xa2ab('0x76')]||0x1f4;logger[_0xa2ab('0x65')](_0xa2ab('0x77'),'getFields',_0x5552fe,JSON[_0xa2ab('0x78')](_0x5cd428));delete _0x5cd428[_0xa2ab('0x22')];if(_0x5552fe===0x191){_0x5552fe=0x190;}_0x3c5f20[_0xa2ab('0x16')](_0x5552fe)[_0xa2ab('0x23')](_0x4e3ae7[_0xa2ab('0x29')][_0xa2ab('0x75')]?{'message':_0xa2ab('0x79'),'statusCode':_0x5cd428[_0xa2ab('0x76')]}:_0x5cd428);});};
\ No newline at end of file
+var _0x5829=['jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','map','ZohoAccount','fieldName','type','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','name','includeAll','include','findAll','catch','show','params','keys','rawAttributes','fields','options','find','create','body','getConfigurations','findOne','ZohoConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','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','getFields','host','clientId','serverUrl','code','zoho.eu','com','slice','substring','lastIndexOf','GET','format','Calls','Zoho-oauthtoken\x20','response','message','Owner','Subject','WhoId','Call_Duration','Call_Result','Call_Start_Time','remove','includes','system_mandatory','display_label','custom_field','data_type','picklist','pick_list_values','test','statusCode','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x5e7da1,_0x1634e1){var _0x451208=function(_0x1344ba){while(--_0x1344ba){_0x5e7da1['push'](_0x5e7da1['shift']());}};_0x451208(++_0x1634e1);}(_0x5829,0xf4));var _0x9582=function(_0x556bb1,_0x34830d){_0x556bb1=_0x556bb1-0x0;var _0x45455f=_0x5829[_0x556bb1];return _0x45455f;};'use strict';var emlformat=require(_0x9582('0x0'));var rimraf=require(_0x9582('0x1'));var zipdir=require(_0x9582('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9582('0x3'));var moment=require('moment');var BPromise=require(_0x9582('0x4'));var Mustache=require('mustache');var util=require(_0x9582('0x5'));var path=require(_0x9582('0x6'));var sox=require(_0x9582('0x7'));var csv=require(_0x9582('0x8'));var ejs=require(_0x9582('0x9'));var fs=require('fs');var fs_extra=require(_0x9582('0xa'));var _=require(_0x9582('0xb'));var squel=require(_0x9582('0xc'));var crypto=require(_0x9582('0xd'));var jsforce=require(_0x9582('0xe'));var deskjs=require(_0x9582('0xf'));var toCsv=require('to-csv');var querystring=require(_0x9582('0x10'));var Papa=require('papaparse');var Redis=require(_0x9582('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9582('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9582('0x13'))(_0x9582('0x14'));var utils=require(_0x9582('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9582('0x16'))['db'];var integrations=require(_0x9582('0x17'));function respondWithStatusCode(_0x1d3890,_0x4141f0){_0x4141f0=_0x4141f0||0xcc;return function(_0x132089){if(_0x132089){return _0x1d3890[_0x9582('0x18')](_0x4141f0);}return _0x1d3890[_0x9582('0x19')](_0x4141f0)[_0x9582('0x1a')]();};}function respondWithResult(_0x3b696a,_0x82e6b8){_0x82e6b8=_0x82e6b8||0xc8;return function(_0x301449){if(_0x301449){return _0x3b696a[_0x9582('0x19')](_0x82e6b8)[_0x9582('0x1b')](_0x301449);}};}function respondWithFilteredResult(_0x1b568b,_0x5ade93){return function(_0x2029eb){if(_0x2029eb){var _0x3bedc8=typeof _0x5ade93[_0x9582('0x1c')]===_0x9582('0x1d')&&typeof _0x5ade93['limit']===_0x9582('0x1d');var _0xdd781c=_0x2029eb['count'];var _0x4a29b0=_0x3bedc8?0x0:_0x5ade93[_0x9582('0x1c')];var _0x865da=_0x3bedc8?_0x2029eb[_0x9582('0x1e')]:_0x5ade93[_0x9582('0x1c')]+_0x5ade93['limit'];var _0x364e4a;if(_0x865da>=_0xdd781c){_0x865da=_0xdd781c;_0x364e4a=0xc8;}else{_0x364e4a=0xce;}_0x1b568b[_0x9582('0x19')](_0x364e4a);return _0x1b568b[_0x9582('0x1f')](_0x9582('0x20'),_0x4a29b0+'-'+_0x865da+'/'+_0xdd781c)[_0x9582('0x1b')](_0x2029eb);}return null;};}function patchUpdates(_0x521f7f){return function(_0x2e956d){try{jsonpatch[_0x9582('0x21')](_0x2e956d,_0x521f7f,!![]);}catch(_0x16644e){return BPromise[_0x9582('0x22')](_0x16644e);}return _0x2e956d[_0x9582('0x23')]();};}function saveUpdates(_0x4e249a,_0x382908){return function(_0x331c26){if(_0x331c26){return _0x331c26[_0x9582('0x24')](_0x4e249a)[_0x9582('0x25')](function(_0x33b3e5){return _0x33b3e5;});}return null;};}function removeEntity(_0x42f217,_0x181d95){return function(_0x4e6242){if(_0x4e6242){return _0x4e6242[_0x9582('0x26')]()[_0x9582('0x25')](function(){_0x42f217[_0x9582('0x19')](0xcc)[_0x9582('0x1a')]();});}};}function handleEntityNotFound(_0x1ad277,_0xe6484b){return function(_0x17df9f){if(!_0x17df9f){_0x1ad277[_0x9582('0x18')](0x194);}return _0x17df9f;};}function handleError(_0x271334,_0x538e80){_0x538e80=_0x538e80||0x1f4;return function(_0x3ab092){logger[_0x9582('0x27')](_0x3ab092[_0x9582('0x28')]);if(_0x3ab092['name']){delete _0x3ab092['name'];}_0x271334[_0x9582('0x19')](_0x538e80)[_0x9582('0x29')](_0x3ab092);};}exports['index']=function(_0x307325,_0x588841){var _0x354eec={},_0x3d1c5a={},_0x8c5c40={'count':0x0,'rows':[]};var _0x5f409a=_[_0x9582('0x2a')](db[_0x9582('0x2b')]['rawAttributes'],function(_0x3ed266){return{'name':_0x3ed266[_0x9582('0x2c')],'type':_0x3ed266[_0x9582('0x2d')]['key']};});_0x3d1c5a[_0x9582('0x2e')]=_[_0x9582('0x2a')](_0x5f409a,'name');_0x3d1c5a[_0x9582('0x2f')]=_['keys'](_0x307325[_0x9582('0x2f')]);_0x3d1c5a[_0x9582('0x30')]=_[_0x9582('0x31')](_0x3d1c5a['model'],_0x3d1c5a[_0x9582('0x2f')]);_0x354eec[_0x9582('0x32')]=_[_0x9582('0x31')](_0x3d1c5a[_0x9582('0x2e')],qs['fields'](_0x307325[_0x9582('0x2f')]['fields']));_0x354eec[_0x9582('0x32')]=_0x354eec[_0x9582('0x32')][_0x9582('0x33')]?_0x354eec[_0x9582('0x32')]:_0x3d1c5a[_0x9582('0x2e')];if(!_0x307325[_0x9582('0x2f')][_0x9582('0x34')](_0x9582('0x35'))){_0x354eec[_0x9582('0x36')]=qs[_0x9582('0x36')](_0x307325[_0x9582('0x2f')]['limit']);_0x354eec[_0x9582('0x1c')]=qs[_0x9582('0x1c')](_0x307325[_0x9582('0x2f')]['offset']);}_0x354eec[_0x9582('0x37')]=qs['sort'](_0x307325[_0x9582('0x2f')][_0x9582('0x38')]);_0x354eec[_0x9582('0x39')]=qs[_0x9582('0x30')](_[_0x9582('0x3a')](_0x307325[_0x9582('0x2f')],_0x3d1c5a['filters']),_0x5f409a);if(_0x307325[_0x9582('0x2f')][_0x9582('0x3b')]){_0x354eec[_0x9582('0x39')]=_[_0x9582('0x3c')](_0x354eec[_0x9582('0x39')],{'$or':_[_0x9582('0x2a')](_0x5f409a,function(_0x43451a){if(_0x43451a[_0x9582('0x2d')]!=='VIRTUAL'){var _0x39f61a={};_0x39f61a[_0x43451a[_0x9582('0x3d')]]={'$like':'%'+_0x307325[_0x9582('0x2f')][_0x9582('0x3b')]+'%'};return _0x39f61a;}})});}_0x354eec=_['merge']({},_0x354eec,_0x307325['options']);var _0x33f39e={'where':_0x354eec[_0x9582('0x39')]};return db[_0x9582('0x2b')]['count'](_0x33f39e)[_0x9582('0x25')](function(_0x1748fd){_0x8c5c40[_0x9582('0x1e')]=_0x1748fd;if(_0x307325['query'][_0x9582('0x3e')]){_0x354eec[_0x9582('0x3f')]=[{'all':!![]}];}return db[_0x9582('0x2b')][_0x9582('0x40')](_0x354eec);})[_0x9582('0x25')](function(_0x4007e2){_0x8c5c40['rows']=_0x4007e2;return _0x8c5c40;})[_0x9582('0x25')](respondWithFilteredResult(_0x588841,_0x354eec))[_0x9582('0x41')](handleError(_0x588841,null));};exports[_0x9582('0x42')]=function(_0x46a6f4,_0x4d8937){var _0x33c8df={'raw':![],'where':{'id':_0x46a6f4[_0x9582('0x43')]['id']}},_0x143502={};_0x143502[_0x9582('0x2e')]=_[_0x9582('0x44')](db[_0x9582('0x2b')][_0x9582('0x45')]);_0x143502[_0x9582('0x2f')]=_['keys'](_0x46a6f4['query']);_0x143502[_0x9582('0x30')]=_[_0x9582('0x31')](_0x143502[_0x9582('0x2e')],_0x143502[_0x9582('0x2f')]);_0x33c8df[_0x9582('0x32')]=_[_0x9582('0x31')](_0x143502[_0x9582('0x2e')],qs[_0x9582('0x46')](_0x46a6f4['query'][_0x9582('0x46')]));_0x33c8df[_0x9582('0x32')]=_0x33c8df[_0x9582('0x32')]['length']?_0x33c8df[_0x9582('0x32')]:_0x143502[_0x9582('0x2e')];if(_0x46a6f4[_0x9582('0x2f')]['includeAll']){_0x33c8df[_0x9582('0x3f')]=[{'all':!![]}];}_0x33c8df=_[_0x9582('0x3c')]({},_0x33c8df,_0x46a6f4[_0x9582('0x47')]);return db[_0x9582('0x2b')][_0x9582('0x48')](_0x33c8df)[_0x9582('0x25')](handleEntityNotFound(_0x4d8937,null))[_0x9582('0x25')](respondWithResult(_0x4d8937,null))[_0x9582('0x41')](handleError(_0x4d8937,null));};exports['create']=function(_0xf78b34,_0x2b9017){return db['ZohoAccount'][_0x9582('0x49')](_0xf78b34[_0x9582('0x4a')],{})[_0x9582('0x25')](respondWithResult(_0x2b9017,0xc9))[_0x9582('0x41')](handleError(_0x2b9017,null));};exports[_0x9582('0x24')]=function(_0x363b6e,_0x2e3baf){if(_0x363b6e[_0x9582('0x4a')]['id']){delete _0x363b6e[_0x9582('0x4a')]['id'];}return db[_0x9582('0x2b')][_0x9582('0x48')]({'where':{'id':_0x363b6e[_0x9582('0x43')]['id']}})[_0x9582('0x25')](handleEntityNotFound(_0x2e3baf,null))['then'](saveUpdates(_0x363b6e[_0x9582('0x4a')],null))[_0x9582('0x25')](respondWithResult(_0x2e3baf,null))[_0x9582('0x41')](handleError(_0x2e3baf,null));};exports[_0x9582('0x26')]=function(_0x3d2653,_0x2e1c44){return db[_0x9582('0x2b')][_0x9582('0x48')]({'where':{'id':_0x3d2653[_0x9582('0x43')]['id']}})[_0x9582('0x25')](handleEntityNotFound(_0x2e1c44,null))['then'](removeEntity(_0x2e1c44,null))['catch'](handleError(_0x2e1c44,null));};exports[_0x9582('0x4b')]=function(_0x31db11,_0x1f731c,_0xaa8b49){var _0x33b2ed={};var _0x28ec65={};var _0x290b49;var _0x2cec56;return db[_0x9582('0x2b')][_0x9582('0x4c')]({'where':{'id':_0x31db11['params']['id']}})[_0x9582('0x25')](handleEntityNotFound(_0x1f731c,null))[_0x9582('0x25')](function(_0x2dd75f){if(_0x2dd75f){_0x290b49=_0x2dd75f;_0x28ec65[_0x9582('0x2e')]=_[_0x9582('0x44')](db[_0x9582('0x4d')][_0x9582('0x45')]);_0x28ec65[_0x9582('0x2f')]=_[_0x9582('0x44')](_0x31db11[_0x9582('0x2f')]);_0x28ec65[_0x9582('0x30')]=_['intersection'](_0x28ec65['model'],_0x28ec65['query']);_0x33b2ed['attributes']=_[_0x9582('0x31')](_0x28ec65[_0x9582('0x2e')],qs[_0x9582('0x46')](_0x31db11['query'][_0x9582('0x46')]));_0x33b2ed['attributes']=_0x33b2ed[_0x9582('0x32')][_0x9582('0x33')]?_0x33b2ed[_0x9582('0x32')]:_0x28ec65[_0x9582('0x2e')];_0x33b2ed[_0x9582('0x37')]=qs[_0x9582('0x38')](_0x31db11[_0x9582('0x2f')][_0x9582('0x38')]);_0x33b2ed['where']=qs[_0x9582('0x30')](_[_0x9582('0x3a')](_0x31db11[_0x9582('0x2f')],_0x28ec65[_0x9582('0x30')]));if(_0x31db11['query'][_0x9582('0x3b')]){_0x33b2ed['where']=_[_0x9582('0x3c')](_0x33b2ed['where'],{'$or':_[_0x9582('0x2a')](_0x33b2ed[_0x9582('0x32')],function(_0x151f18){var _0x3ca66c={};_0x3ca66c[_0x151f18]={'$like':'%'+_0x31db11[_0x9582('0x2f')]['filter']+'%'};return _0x3ca66c;})});}_0x33b2ed=_[_0x9582('0x3c')]({},_0x33b2ed,_0x31db11[_0x9582('0x47')]);return _0x290b49['getConfigurations'](_0x33b2ed);}})[_0x9582('0x25')](function(_0x12e9fa){if(_0x12e9fa){_0x2cec56=_0x12e9fa[_0x9582('0x33')];if(!_0x31db11['query']['hasOwnProperty'](_0x9582('0x35'))){_0x33b2ed[_0x9582('0x36')]=qs['limit'](_0x31db11[_0x9582('0x2f')]['limit']);_0x33b2ed[_0x9582('0x1c')]=qs[_0x9582('0x1c')](_0x31db11[_0x9582('0x2f')][_0x9582('0x1c')]);}return _0x290b49[_0x9582('0x4b')](_0x33b2ed);}})[_0x9582('0x25')](function(_0x48dbb3){if(_0x48dbb3){return _0x48dbb3?{'count':_0x2cec56,'rows':_0x48dbb3}:null;}})[_0x9582('0x25')](respondWithResult(_0x1f731c,null))['catch'](handleError(_0x1f731c,null));};exports[_0x9582('0x4e')]=function(_0x242fa9,_0x43454d,_0x18ea09){if(_0x242fa9['body']['id']){delete _0x242fa9[_0x9582('0x4a')]['id'];}return db[_0x9582('0x2b')][_0x9582('0x4c')]({'where':{'id':_0x242fa9[_0x9582('0x43')]['id']}})[_0x9582('0x25')](handleEntityNotFound(_0x43454d,null))[_0x9582('0x25')](function(_0x5bc20d){if(_0x5bc20d){_0x242fa9[_0x9582('0x4a')][_0x9582('0x4f')]=_0x5bc20d['id'];_0x242fa9[_0x9582('0x4a')][_0x9582('0x50')]=integrations[_0x9582('0x51')](_0x242fa9[_0x9582('0x4a')][_0x9582('0x52')],_0x242fa9[_0x9582('0x4a')][_0x9582('0x2d')]);_0x242fa9[_0x9582('0x4a')]['Descriptions']=integrations[_0x9582('0x53')](_0x242fa9[_0x9582('0x4a')]['channel'],_0x242fa9[_0x9582('0x4a')][_0x9582('0x2d')]);return db['ZohoConfiguration'][_0x9582('0x49')](_0x242fa9[_0x9582('0x4a')],{'include':[{'model':db['ZohoField'],'as':_0x9582('0x50')},{'model':db[_0x9582('0x54')],'as':'Descriptions'}]});}return null;})[_0x9582('0x25')](respondWithResult(_0x43454d,null))['catch'](handleError(_0x43454d,null));};function getAccessToken(_0x32740f){return new Promise(function(_0x3fabbc,_0x5044f6){var _0x469f37;switch(_0x32740f[_0x9582('0x55')]){case'US':_0x469f37=_0x9582('0x56');break;case'AU':_0x469f37=_0x9582('0x57');break;case'EU':_0x469f37=_0x9582('0x58');break;case'IN':_0x469f37=_0x9582('0x59');break;case'CN':_0x469f37=_0x9582('0x5a');break;default:_0x469f37=_0x9582('0x58');break;}var _0x50ef57={'method':_0x9582('0x5b'),'uri':_0x469f37+_0x9582('0x5c'),'qs':{'refresh_token':_0x32740f[_0x9582('0x5d')],'client_id':_0x32740f['clientId'],'client_secret':_0x32740f[_0x9582('0x5e')],'grant_type':_0x9582('0x5f')},'json':!![]};return rp(_0x50ef57)[_0x9582('0x25')](function(_0x2b46cb){if(_0x2b46cb[_0x9582('0x60')]){_0x3fabbc(_0x2b46cb[_0x9582('0x60')]);}else{_0x5044f6('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0x9582('0x41')](function(_0x13d711){_0x5044f6(_0x13d711);});});}exports[_0x9582('0x61')]=function(_0x30c6de,_0xa803dd,_0x241fca){var _0x2999f0,_0x5d3bcc,_0x5d0bec,_0xf4cfd0,_0x6796c0;return db[_0x9582('0x2b')][_0x9582('0x4c')]({'where':{'id':_0x30c6de['params']['id']},'attributes':['id',_0x9582('0x62'),'zone',_0x9582('0x63'),_0x9582('0x5e'),_0x9582('0x64'),_0x9582('0x65'),_0x9582('0x5d')]})[_0x9582('0x25')](handleEntityNotFound(_0xa803dd,null))['then'](function(_0x41cb61){_0x6796c0=_0x41cb61;_0x2999f0=_0x6796c0['host'];_0x5d3bcc=_0x2999f0===_0x9582('0x66')?'eu':_0x9582('0x67');_0x5d0bec=_0x6796c0[_0x9582('0x64')];var _0x1c0cba=_0x5d0bec[_0x9582('0x68')](-0x1);if(_0x1c0cba==='/'||_0x1c0cba==='\x5c'||_0x1c0cba===':'){_0x5d0bec=_0x5d0bec[_0x9582('0x69')](0x0,_0x5d0bec[_0x9582('0x6a')](_0x1c0cba));}if(!_0x6796c0[_0x9582('0x5d')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x6796c0);})[_0x9582('0x25')](function(_0x204075){if(_0x204075){return rp({'method':_0x9582('0x6b'),'uri':util[_0x9582('0x6c')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x5d3bcc),'qs':{'module':_0x9582('0x6d')},'headers':{'Authorization':_0x9582('0x6e')+_0x204075},'json':!![]});}})[_0x9582('0x25')](function(_0x334283){if(_0x334283){if(_0x334283['response']&&_0x334283[_0x9582('0x6f')]['error']){throw new Error(_0x334283[_0x9582('0x6f')][_0x9582('0x27')][_0x9582('0x70')]);}var _0x2e3401=[];var _0x10ce23=[];var _0x562610=[_0x9582('0x71'),_0x9582('0x72'),'Description',_0x9582('0x73'),_0x9582('0x74'),_0x9582('0x75'),_0x9582('0x76'),'Call_Type'];_0x10ce23=_[_0x9582('0x77')](_0x334283[_0x9582('0x46')],function(_0x4b6899){return _0x562610[_0x9582('0x78')](_0x4b6899['api_name']);});for(var _0x38f091=0x0;_0x38f091<_0x10ce23['length'];_0x38f091++){if(_0x10ce23[_0x38f091][_0x9582('0x79')]===![]){_0x2e3401['push']({'id':_0x10ce23[_0x38f091]['id'],'name':_0x10ce23[_0x38f091][_0x9582('0x7a')],'custom':_0x10ce23[_0x38f091][_0x9582('0x7b')],'options':_0x10ce23[_0x38f091][_0x9582('0x7c')]===_0x9582('0x7d')&&_0x10ce23[_0x38f091]['pick_list_values']['length']>-0x1?_[_0x9582('0x2a')](_0x10ce23[_0x38f091][_0x9582('0x7e')],function(_0x58f3f6){return{'name':_0x58f3f6,'value':_0x58f3f6};}):[]});}}return{'count':_0x2e3401[_0x9582('0x33')],'rows':_0x2e3401};}else{return{'count':0x0,'rows':[]};}})[_0x9582('0x25')](respondWithResult(_0xa803dd,null))[_0x9582('0x41')](function(_0x5704af){var _0x4c6b36=_0x30c6de[_0x9582('0x2f')][_0x9582('0x7f')]?0x1f4:_0x5704af['statusCode']||0x1f4;logger[_0x9582('0x27')]('getFields,\x20%s,\x20%s,\x20%s',_0x9582('0x61'),_0x4c6b36,JSON['stringify'](_0x5704af));delete _0x5704af[_0x9582('0x3d')];if(_0x4c6b36===0x191){_0x4c6b36=0x190;}_0xa803dd['status'](_0x4c6b36)[_0x9582('0x29')](_0x30c6de['query'][_0x9582('0x7f')]?{'message':'Wrong\x20credentials','statusCode':_0x5704af[_0x9582('0x80')]}:_0x5704af);});};
\ No newline at end of file
index 8947b8f..8c2174f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86b8=['https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','authorization_code','code','application/x-www-form-urlencoded','then','refreshToken','refresh_token','info','name','error','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','substring','lastIndexOf','/oauth/v2/token','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','lodash','util','../../config/logger','moment','request-promise','path','rimraf','./intZohoAccount.attributes','define','ZohoAccount','int_zoho_accounts','zone','changed','serverUrl','clientId','clientSecret','host','slice','https://accounts.zoho.com','https://accounts.zoho.com.au'];(function(_0x2d8d64,_0xff69d9){var _0x1ff582=function(_0x73b784){while(--_0x73b784){_0x2d8d64['push'](_0x2d8d64['shift']());}};_0x1ff582(++_0xff69d9);}(_0x86b8,0x15d));var _0x886b=function(_0x2e103f,_0x1fbe12){_0x2e103f=_0x2e103f-0x0;var _0x6e9180=_0x86b8[_0x2e103f];return _0x6e9180;};'use strict';var _=require(_0x886b('0x0'));var util=require(_0x886b('0x1'));var logger=require(_0x886b('0x2'))('api');var moment=require(_0x886b('0x3'));var BPromise=require('bluebird');var rp=require(_0x886b('0x4'));var fs=require('fs');var path=require(_0x886b('0x5'));var rimraf=require(_0x886b('0x6'));var config=require('../../config/environment');var attributes=require(_0x886b('0x7'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x2c32bc,_0xd9d9ac){return _0x2c32bc[_0x886b('0x8')](_0x886b('0x9'),attributes,{'tableName':_0x886b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x238701,_0x7c2394,_0x39800a){if(_0x238701['changed'](_0x886b('0xb'))||_0x238701[_0x886b('0xc')](_0x886b('0xd'))||_0x238701[_0x886b('0xc')](_0x886b('0xe'))||_0x238701[_0x886b('0xc')](_0x886b('0xf'))||_0x238701[_0x886b('0xc')]('code')||_0x238701[_0x886b('0xc')](_0x886b('0x10'))){var _0x5acb88,_0x23a795;_0x5acb88=_0x238701[_0x886b('0xd')];var _0xd2ddfa=_0x5acb88[_0x886b('0x11')](-0x1);if(_0xd2ddfa==='/'||_0xd2ddfa==='\x5c'||_0xd2ddfa===':'){_0x5acb88=_0x5acb88['substring'](0x0,_0x5acb88['lastIndexOf'](_0xd2ddfa));}switch(_0x238701[_0x886b('0xb')]){case'US':_0x23a795=_0x886b('0x12');break;case'AU':_0x23a795=_0x886b('0x13');break;case'IN':_0x23a795=_0x886b('0x14');break;case'CN':_0x23a795=_0x886b('0x15');break;default:_0x23a795=_0x886b('0x16');break;}var _0x2f2895={'method':_0x886b('0x17'),'uri':_0x23a795+'/oauth/v2/token','form':{'grant_type':_0x886b('0x18'),'client_id':_0x238701[_0x886b('0xe')],'client_secret':_0x238701['clientSecret'],'redirect_uri':_0x238701[_0x886b('0xd')],'code':_0x238701[_0x886b('0x19')]},'headers':{'Content-Type':_0x886b('0x1a')}};return rp(_0x2f2895)[_0x886b('0x1b')](function(_0x282a98){var _0xe05a77=JSON['parse'](_0x282a98);if(_0xe05a77['refresh_token']){_0x238701[_0x886b('0x1c')]=_0xe05a77[_0x886b('0x1d')];logger[_0x886b('0x1e')](util['format']('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x238701[_0x886b('0x1f')],_0x238701['id']));}else{logger[_0x886b('0x20')](util[_0x886b('0x21')](_0x886b('0x22'),_0x238701[_0x886b('0x1f')],_0x238701['id']),util[_0x886b('0x23')](_0xe05a77,{'showHidden':![],'depth':null}));}return _0x39800a(null,_0x7c2394);})[_0x886b('0x24')](function(_0x596b11){logger[_0x886b('0x20')](util[_0x886b('0x21')](_0x886b('0x22'),_0x238701['name'],_0x238701['id']),util[_0x886b('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x39800a(_0x596b11);});}else{return _0x39800a(null,_0x7c2394);}},'beforeUpdate':function(_0x2a5519,_0x2e6b3e,_0x157d01){if(_0x2a5519['changed'](_0x886b('0xb'))||_0x2a5519[_0x886b('0xc')](_0x886b('0xd'))||_0x2a5519[_0x886b('0xc')](_0x886b('0xe'))||_0x2a5519['changed'](_0x886b('0xf'))||_0x2a5519[_0x886b('0xc')](_0x886b('0x19'))||_0x2a5519[_0x886b('0xc')]('host')){var _0x5047eb,_0x3b85a4;_0x5047eb=_0x2a5519[_0x886b('0xd')];var _0x4b8f53=_0x5047eb[_0x886b('0x11')](-0x1);if(_0x4b8f53==='/'||_0x4b8f53==='\x5c'||_0x4b8f53===':'){_0x5047eb=_0x5047eb[_0x886b('0x25')](0x0,_0x5047eb[_0x886b('0x26')](_0x4b8f53));}switch(_0x2a5519[_0x886b('0xb')]){case'US':_0x3b85a4=_0x886b('0x12');break;case'AU':_0x3b85a4=_0x886b('0x13');break;case'IN':_0x3b85a4='https://accounts.zoho.in';break;case'CN':_0x3b85a4='https://accounts.zoho.com.cn';break;default:_0x3b85a4=_0x886b('0x16');break;}var _0x37856e={'method':_0x886b('0x17'),'uri':_0x3b85a4+_0x886b('0x27'),'form':{'grant_type':_0x886b('0x18'),'client_id':_0x2a5519[_0x886b('0xe')],'client_secret':_0x2a5519['clientSecret'],'redirect_uri':_0x2a5519['serverUrl'],'code':_0x2a5519['code']},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x37856e)[_0x886b('0x1b')](function(_0x486eca){var _0x243fb2=JSON['parse'](_0x486eca);if(_0x243fb2['refresh_token']){_0x2a5519[_0x886b('0x1c')]=_0x243fb2[_0x886b('0x1d')];logger['info'](util['format'](_0x886b('0x28'),_0x2a5519['name'],_0x2a5519['id']));}else{logger['error'](util[_0x886b('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2a5519[_0x886b('0x1f')],_0x2a5519['id']),util[_0x886b('0x23')](_0x243fb2,{'showHidden':![],'depth':null}));}return _0x157d01(null,_0x2e6b3e);})[_0x886b('0x24')](function(_0xa23343){logger['error'](util[_0x886b('0x21')](_0x886b('0x22'),_0x2a5519['name'],_0x2a5519['id']),util[_0x886b('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x157d01(_0xa23343);});}else{return _0x157d01(null,_0x2e6b3e);}}}});};
\ No newline at end of file
+var _0x873e=['error','format','https://accounts.zoho.com.cn','then','parse','refreshToken','info','inspect','util','api','moment','request-promise','rimraf','./intZohoAccount.attributes','../../components/integrations/configuration','exports','ZohoAccount','int_zoho_accounts','changed','zone','clientId','clientSecret','code','host','serverUrl','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','application/x-www-form-urlencoded','refresh_token','name','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','catch'];(function(_0x398c75,_0x518e77){var _0x5b7806=function(_0x3ddb92){while(--_0x3ddb92){_0x398c75['push'](_0x398c75['shift']());}};_0x5b7806(++_0x518e77);}(_0x873e,0x170));var _0xe873=function(_0xf12d8d,_0x4b98f6){_0xf12d8d=_0xf12d8d-0x0;var _0x4eac0d=_0x873e[_0xf12d8d];return _0x4eac0d;};'use strict';var _=require('lodash');var util=require(_0xe873('0x0'));var logger=require('../../config/logger')(_0xe873('0x1'));var moment=require(_0xe873('0x2'));var BPromise=require('bluebird');var rp=require(_0xe873('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe873('0x4'));var config=require('../../config/environment');var attributes=require(_0xe873('0x5'));var integrations=require(_0xe873('0x6'));module[_0xe873('0x7')]=function(_0x40709d,_0x177548){return _0x40709d['define'](_0xe873('0x8'),attributes,{'tableName':_0xe873('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x25102a,_0x1e2c7b,_0x38b4e7){if(_0x25102a[_0xe873('0xa')](_0xe873('0xb'))||_0x25102a[_0xe873('0xa')]('serverUrl')||_0x25102a['changed'](_0xe873('0xc'))||_0x25102a['changed'](_0xe873('0xd'))||_0x25102a[_0xe873('0xa')](_0xe873('0xe'))||_0x25102a[_0xe873('0xa')](_0xe873('0xf'))){var _0x4a0e09,_0x4b3b53;_0x4a0e09=_0x25102a[_0xe873('0x10')];var _0x14bf28=_0x4a0e09[_0xe873('0x11')](-0x1);if(_0x14bf28==='/'||_0x14bf28==='\x5c'||_0x14bf28===':'){_0x4a0e09=_0x4a0e09[_0xe873('0x12')](0x0,_0x4a0e09[_0xe873('0x13')](_0x14bf28));}switch(_0x25102a[_0xe873('0xb')]){case'US':_0x4b3b53=_0xe873('0x14');break;case'AU':_0x4b3b53=_0xe873('0x15');break;case'IN':_0x4b3b53=_0xe873('0x16');break;case'CN':_0x4b3b53='https://accounts.zoho.com.cn';break;default:_0x4b3b53=_0xe873('0x17');break;}var _0x95c217={'method':_0xe873('0x18'),'uri':_0x4b3b53+_0xe873('0x19'),'form':{'grant_type':_0xe873('0x1a'),'client_id':_0x25102a['clientId'],'client_secret':_0x25102a['clientSecret'],'redirect_uri':_0x25102a['serverUrl'],'code':_0x25102a['code']},'headers':{'Content-Type':_0xe873('0x1b')}};return rp(_0x95c217)['then'](function(_0x23e7ae){var _0x81321=JSON['parse'](_0x23e7ae);if(_0x81321[_0xe873('0x1c')]){_0x25102a['refreshToken']=_0x81321['refresh_token'];logger['info'](util['format']('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x25102a[_0xe873('0x1d')],_0x25102a['id']));}else{logger['error'](util['format'](_0xe873('0x1e'),_0x25102a[_0xe873('0x1d')],_0x25102a['id']),util['inspect'](_0x81321,{'showHidden':![],'depth':null}));}return _0x38b4e7(null,_0x1e2c7b);})[_0xe873('0x1f')](function(_0x43b243){logger[_0xe873('0x20')](util[_0xe873('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x25102a[_0xe873('0x1d')],_0x25102a['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x38b4e7(_0x43b243);});}else{return _0x38b4e7(null,_0x1e2c7b);}},'beforeUpdate':function(_0x46367f,_0x24c8aa,_0x87a3a3){if(_0x46367f['changed'](_0xe873('0xb'))||_0x46367f[_0xe873('0xa')](_0xe873('0x10'))||_0x46367f['changed'](_0xe873('0xc'))||_0x46367f[_0xe873('0xa')](_0xe873('0xd'))||_0x46367f['changed'](_0xe873('0xe'))||_0x46367f[_0xe873('0xa')](_0xe873('0xf'))){var _0x4c59b6,_0x3fba48;_0x4c59b6=_0x46367f['serverUrl'];var _0x555426=_0x4c59b6[_0xe873('0x11')](-0x1);if(_0x555426==='/'||_0x555426==='\x5c'||_0x555426===':'){_0x4c59b6=_0x4c59b6[_0xe873('0x12')](0x0,_0x4c59b6[_0xe873('0x13')](_0x555426));}switch(_0x46367f[_0xe873('0xb')]){case'US':_0x3fba48=_0xe873('0x14');break;case'AU':_0x3fba48=_0xe873('0x15');break;case'IN':_0x3fba48=_0xe873('0x16');break;case'CN':_0x3fba48=_0xe873('0x22');break;default:_0x3fba48=_0xe873('0x17');break;}var _0x2a303c={'method':_0xe873('0x18'),'uri':_0x3fba48+'/oauth/v2/token','form':{'grant_type':_0xe873('0x1a'),'client_id':_0x46367f[_0xe873('0xc')],'client_secret':_0x46367f[_0xe873('0xd')],'redirect_uri':_0x46367f[_0xe873('0x10')],'code':_0x46367f[_0xe873('0xe')]},'headers':{'Content-Type':_0xe873('0x1b')}};return rp(_0x2a303c)[_0xe873('0x23')](function(_0x3d3539){var _0x45e06a=JSON[_0xe873('0x24')](_0x3d3539);if(_0x45e06a[_0xe873('0x1c')]){_0x46367f[_0xe873('0x25')]=_0x45e06a[_0xe873('0x1c')];logger[_0xe873('0x26')](util[_0xe873('0x21')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x46367f[_0xe873('0x1d')],_0x46367f['id']));}else{logger[_0xe873('0x20')](util[_0xe873('0x21')](_0xe873('0x1e'),_0x46367f['name'],_0x46367f['id']),util[_0xe873('0x27')](_0x45e06a,{'showHidden':![],'depth':null}));}return _0x87a3a3(null,_0x24c8aa);})['catch'](function(_0x57d6af){logger[_0xe873('0x20')](util[_0xe873('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x46367f['name'],_0x46367f['id']),util[_0xe873('0x27')](parsedResult,{'showHidden':![],'depth':null}));return _0x87a3a3(_0x57d6af);});}else{return _0x87a3a3(null,_0x24c8aa);}}}});};
\ No newline at end of file
index 8de2adf..b71e632 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19fb=['model','GetZohoAccount','find','raw','ShowZohoAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','ZohoAccount','options','where','attributes','limit','include','map'];(function(_0x2897d6,_0x337606){var _0x578e17=function(_0x391c85){while(--_0x391c85){_0x2897d6['push'](_0x2897d6['shift']());}};_0x578e17(++_0x337606);}(_0x19fb,0xdd));var _0xb19f=function(_0xb35707,_0x18aa42){_0xb35707=_0xb35707-0x0;var _0x33e66c=_0x19fb[_0xb35707];return _0x33e66c;};'use strict';var _=require(_0xb19f('0x0'));var util=require(_0xb19f('0x1'));var moment=require(_0xb19f('0x2'));var BPromise=require(_0xb19f('0x3'));var rs=require(_0xb19f('0x4'));var fs=require('fs');var Redis=require(_0xb19f('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb19f('0x6'))(_0xb19f('0x7'));var config=require(_0xb19f('0x8'));var jayson=require(_0xb19f('0x9'));var client=jayson[_0xb19f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2aab5c,_0x34597a,_0x3feb03){return new BPromise(function(_0x2c70a2,_0x8c9198){return client[_0xb19f('0xb')](_0x2aab5c,_0x3feb03)[_0xb19f('0xc')](function(_0x111431){logger['info'](_0xb19f('0xd'),_0x34597a,_0xb19f('0xe'));logger[_0xb19f('0xf')](_0xb19f('0x10'),_0x34597a,_0xb19f('0xe'),JSON[_0xb19f('0x11')](_0x111431));if(_0x111431[_0xb19f('0x12')]){if(_0x111431[_0xb19f('0x12')][_0xb19f('0x13')]===0x1f4){logger[_0xb19f('0x12')](_0xb19f('0xd'),_0x34597a,_0x111431[_0xb19f('0x12')][_0xb19f('0x14')]);return _0x8c9198(_0x111431[_0xb19f('0x12')][_0xb19f('0x14')]);}logger['error'](_0xb19f('0xd'),_0x34597a,_0x111431[_0xb19f('0x12')][_0xb19f('0x14')]);return _0x2c70a2(_0x111431['error'][_0xb19f('0x14')]);}else{logger[_0xb19f('0x15')](_0xb19f('0xd'),_0x34597a,'request\x20sent');_0x2c70a2(_0x111431[_0xb19f('0x16')][_0xb19f('0x14')]);}})[_0xb19f('0x17')](function(_0x5cdbf5){logger[_0xb19f('0x12')]('ZohoAccount,\x20%s,\x20%s',_0x34597a,_0x5cdbf5);_0x8c9198(_0x5cdbf5);});});}exports['GetZohoAccount']=function(_0x5b52d9){var _0x358180=this;return new Promise(function(_0x3b4367,_0x1dc030){return db[_0xb19f('0x18')]['findAll']({'raw':_0x5b52d9[_0xb19f('0x19')]?_0x5b52d9[_0xb19f('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x5b52d9[_0xb19f('0x19')]?_0x5b52d9['options'][_0xb19f('0x1a')]||null:null,'attributes':_0x5b52d9[_0xb19f('0x19')]?_0x5b52d9[_0xb19f('0x19')][_0xb19f('0x1b')]||null:null,'limit':_0x5b52d9[_0xb19f('0x19')]?_0x5b52d9[_0xb19f('0x19')][_0xb19f('0x1c')]||null:null,'include':_0x5b52d9['options']?_0x5b52d9[_0xb19f('0x19')][_0xb19f('0x1d')]?_[_0xb19f('0x1e')](_0x5b52d9[_0xb19f('0x19')]['include'],function(_0x25fbdc){return{'model':db[_0x25fbdc[_0xb19f('0x1f')]],'as':_0x25fbdc['as'],'attributes':_0x25fbdc[_0xb19f('0x1b')],'include':_0x25fbdc[_0xb19f('0x1d')]?_[_0xb19f('0x1e')](_0x25fbdc[_0xb19f('0x1d')],function(_0x28e0ad){return{'model':db[_0x28e0ad[_0xb19f('0x1f')]],'as':_0x28e0ad['as'],'attributes':_0x28e0ad[_0xb19f('0x1b')],'include':_0x28e0ad[_0xb19f('0x1d')]?_[_0xb19f('0x1e')](_0x28e0ad['include'],function(_0x3e1365){return{'model':db[_0x3e1365[_0xb19f('0x1f')]],'as':_0x3e1365['as'],'attributes':_0x3e1365['attributes']};}):[]};}):[]};}):[]:[]})[_0xb19f('0xc')](function(_0x43de02){logger['info']('GetZohoAccount',_0x5b52d9);logger[_0xb19f('0xf')](_0xb19f('0x20'),_0x5b52d9,JSON[_0xb19f('0x11')](_0x43de02));_0x3b4367(_0x43de02);})[_0xb19f('0x17')](function(_0x5e479a){logger['error']('GetZohoAccount',_0x5e479a[_0xb19f('0x14')],_0x5b52d9);_0x1dc030(_0x358180['error'](0x1f4,_0x5e479a['message']));});});};exports['ShowZohoAccount']=function(_0xeac9a3){var _0xac9814=this;return new Promise(function(_0x10d949,_0x1131f6){return db[_0xb19f('0x18')][_0xb19f('0x21')]({'raw':_0xeac9a3['options']?_0xeac9a3[_0xb19f('0x19')][_0xb19f('0x22')]===undefined?!![]:![]:!![],'where':_0xeac9a3['options']?_0xeac9a3[_0xb19f('0x19')][_0xb19f('0x1a')]||null:null,'attributes':_0xeac9a3[_0xb19f('0x19')]?_0xeac9a3[_0xb19f('0x19')][_0xb19f('0x1b')]||null:null,'include':_0xeac9a3[_0xb19f('0x19')]?_0xeac9a3['options'][_0xb19f('0x1d')]?_[_0xb19f('0x1e')](_0xeac9a3[_0xb19f('0x19')][_0xb19f('0x1d')],function(_0x3211e1){return{'model':db[_0x3211e1[_0xb19f('0x1f')]],'as':_0x3211e1['as'],'attributes':_0x3211e1['attributes'],'include':_0x3211e1[_0xb19f('0x1d')]?_[_0xb19f('0x1e')](_0x3211e1[_0xb19f('0x1d')],function(_0x1e02c5){return{'model':db[_0x1e02c5[_0xb19f('0x1f')]],'as':_0x1e02c5['as'],'attributes':_0x1e02c5[_0xb19f('0x1b')],'include':_0x1e02c5['include']?_[_0xb19f('0x1e')](_0x1e02c5[_0xb19f('0x1d')],function(_0x862bf1){return{'model':db[_0x862bf1[_0xb19f('0x1f')]],'as':_0x862bf1['as'],'attributes':_0x862bf1[_0xb19f('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xb19f('0xc')](function(_0x1a6bbe){logger['info'](_0xb19f('0x23'),_0xeac9a3);logger['debug'](_0xb19f('0x23'),_0xeac9a3,JSON[_0xb19f('0x11')](_0x1a6bbe));_0x10d949(_0x1a6bbe);})[_0xb19f('0x17')](function(_0x4b3ca0){logger[_0xb19f('0x12')]('ShowZohoAccount',_0x4b3ca0[_0xb19f('0x14')],_0xeac9a3);_0x1131f6(_0xac9814[_0xb19f('0x12')](0x1f4,_0x4b3ca0['message']));});});};
\ No newline at end of file
+var _0x457b=['../../config/environment','jayson/promise','client','http','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetZohoAccount','options','raw','where','limit','include','map','attributes','model','ShowZohoAccount','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x5c6850,_0x579e15){var _0x56a193=function(_0xd2a707){while(--_0xd2a707){_0x5c6850['push'](_0x5c6850['shift']());}};_0x56a193(++_0x579e15);}(_0x457b,0xca));var _0xb457=function(_0x4eaa3e,_0x24031c){_0x4eaa3e=_0x4eaa3e-0x0;var _0x18d712=_0x457b[_0x4eaa3e];return _0x18d712;};'use strict';var _=require(_0xb457('0x0'));var util=require(_0xb457('0x1'));var moment=require('moment');var BPromise=require(_0xb457('0x2'));var rs=require(_0xb457('0x3'));var fs=require('fs');var Redis=require(_0xb457('0x4'));var db=require(_0xb457('0x5'))['db'];var utils=require(_0xb457('0x6'));var logger=require('../../config/logger')(_0xb457('0x7'));var config=require(_0xb457('0x8'));var jayson=require(_0xb457('0x9'));var client=jayson[_0xb457('0xa')][_0xb457('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x523e05,_0x5b8ba2,_0x13632b){return new BPromise(function(_0x2182d6,_0x48388c){return client['request'](_0x523e05,_0x13632b)[_0xb457('0xc')](function(_0x3baee8){logger[_0xb457('0xd')](_0xb457('0xe'),_0x5b8ba2,_0xb457('0xf'));logger[_0xb457('0x10')](_0xb457('0x11'),_0x5b8ba2,_0xb457('0xf'),JSON[_0xb457('0x12')](_0x3baee8));if(_0x3baee8[_0xb457('0x13')]){if(_0x3baee8[_0xb457('0x13')][_0xb457('0x14')]===0x1f4){logger['error']('ZohoAccount,\x20%s,\x20%s',_0x5b8ba2,_0x3baee8[_0xb457('0x13')][_0xb457('0x15')]);return _0x48388c(_0x3baee8[_0xb457('0x13')][_0xb457('0x15')]);}logger[_0xb457('0x13')]('ZohoAccount,\x20%s,\x20%s',_0x5b8ba2,_0x3baee8['error'][_0xb457('0x15')]);return _0x2182d6(_0x3baee8[_0xb457('0x13')][_0xb457('0x15')]);}else{logger[_0xb457('0xd')]('ZohoAccount,\x20%s,\x20%s',_0x5b8ba2,_0xb457('0xf'));_0x2182d6(_0x3baee8[_0xb457('0x16')][_0xb457('0x15')]);}})[_0xb457('0x17')](function(_0x250a02){logger[_0xb457('0x13')](_0xb457('0xe'),_0x5b8ba2,_0x250a02);_0x48388c(_0x250a02);});});}exports[_0xb457('0x18')]=function(_0x54903c){var _0x37fd30=this;return new Promise(function(_0x3218f1,_0x12f888){return db['ZohoAccount']['findAll']({'raw':_0x54903c[_0xb457('0x19')]?_0x54903c[_0xb457('0x19')][_0xb457('0x1a')]===undefined?!![]:![]:!![],'where':_0x54903c[_0xb457('0x19')]?_0x54903c[_0xb457('0x19')][_0xb457('0x1b')]||null:null,'attributes':_0x54903c[_0xb457('0x19')]?_0x54903c['options']['attributes']||null:null,'limit':_0x54903c[_0xb457('0x19')]?_0x54903c[_0xb457('0x19')][_0xb457('0x1c')]||null:null,'include':_0x54903c['options']?_0x54903c[_0xb457('0x19')][_0xb457('0x1d')]?_[_0xb457('0x1e')](_0x54903c['options']['include'],function(_0x3d8a07){return{'model':db[_0x3d8a07['model']],'as':_0x3d8a07['as'],'attributes':_0x3d8a07[_0xb457('0x1f')],'include':_0x3d8a07[_0xb457('0x1d')]?_[_0xb457('0x1e')](_0x3d8a07[_0xb457('0x1d')],function(_0x557f03){return{'model':db[_0x557f03[_0xb457('0x20')]],'as':_0x557f03['as'],'attributes':_0x557f03[_0xb457('0x1f')],'include':_0x557f03['include']?_[_0xb457('0x1e')](_0x557f03[_0xb457('0x1d')],function(_0x17014b){return{'model':db[_0x17014b[_0xb457('0x20')]],'as':_0x17014b['as'],'attributes':_0x17014b[_0xb457('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb457('0xc')](function(_0x17c398){logger['info'](_0xb457('0x18'),_0x54903c);logger[_0xb457('0x10')]('GetZohoAccount',_0x54903c,JSON[_0xb457('0x12')](_0x17c398));_0x3218f1(_0x17c398);})[_0xb457('0x17')](function(_0x48ba9f){logger[_0xb457('0x13')](_0xb457('0x18'),_0x48ba9f['message'],_0x54903c);_0x12f888(_0x37fd30[_0xb457('0x13')](0x1f4,_0x48ba9f['message']));});});};exports[_0xb457('0x21')]=function(_0x145b88){var _0x4a20f1=this;return new Promise(function(_0x41bb3c,_0x2e2bb6){return db['ZohoAccount'][_0xb457('0x22')]({'raw':_0x145b88['options']?_0x145b88[_0xb457('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x145b88[_0xb457('0x19')]?_0x145b88[_0xb457('0x19')]['where']||null:null,'attributes':_0x145b88[_0xb457('0x19')]?_0x145b88[_0xb457('0x19')][_0xb457('0x1f')]||null:null,'include':_0x145b88[_0xb457('0x19')]?_0x145b88['options'][_0xb457('0x1d')]?_[_0xb457('0x1e')](_0x145b88[_0xb457('0x19')][_0xb457('0x1d')],function(_0x1b4bc2){return{'model':db[_0x1b4bc2[_0xb457('0x20')]],'as':_0x1b4bc2['as'],'attributes':_0x1b4bc2['attributes'],'include':_0x1b4bc2[_0xb457('0x1d')]?_[_0xb457('0x1e')](_0x1b4bc2[_0xb457('0x1d')],function(_0xfebcfa){return{'model':db[_0xfebcfa[_0xb457('0x20')]],'as':_0xfebcfa['as'],'attributes':_0xfebcfa['attributes'],'include':_0xfebcfa['include']?_[_0xb457('0x1e')](_0xfebcfa['include'],function(_0x2ae40b){return{'model':db[_0x2ae40b[_0xb457('0x20')]],'as':_0x2ae40b['as'],'attributes':_0x2ae40b[_0xb457('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb457('0xc')](function(_0x453896){logger[_0xb457('0xd')](_0xb457('0x21'),_0x145b88);logger['debug']('ShowZohoAccount',_0x145b88,JSON[_0xb457('0x12')](_0x453896));_0x41bb3c(_0x453896);})[_0xb457('0x17')](function(_0x4b07fc){logger[_0xb457('0x13')](_0xb457('0x21'),_0x4b07fc[_0xb457('0x15')],_0x145b88);_0x2e2bb6(_0x4a20f1[_0xb457('0x13')](0x1f4,_0x4b07fc[_0xb457('0x15')]));});});};
\ No newline at end of file
index 7c3ff00..d35b28e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadf5=['get','isAuthenticated','show','getFields','getSubjects','/:id/descriptions','getDescriptions','post','create','put','/:id','update','delete','multer','util','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1098d9,_0x52c9ce){var _0x1d80af=function(_0x498a31){while(--_0x498a31){_0x1098d9['push'](_0x1098d9['shift']());}};_0x1d80af(++_0x52c9ce);}(_0xadf5,0xf1));var _0x5adf=function(_0x295314,_0x17b250){_0x295314=_0x295314-0x0;var _0x584b0c=_0xadf5[_0x295314];return _0x584b0c;};'use strict';var multer=require(_0x5adf('0x0'));var util=require(_0x5adf('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5adf('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x5adf('0x3'));var interaction=require(_0x5adf('0x4'));var config=require(_0x5adf('0x5'));var controller=require('./intZohoConfiguration.controller');router[_0x5adf('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0x5adf('0x7')](),controller[_0x5adf('0x8')]);router[_0x5adf('0x6')]('/:id/fields',auth[_0x5adf('0x7')](),controller[_0x5adf('0x9')]);router[_0x5adf('0x6')]('/:id/subjects',auth[_0x5adf('0x7')](),controller[_0x5adf('0xa')]);router['get'](_0x5adf('0xb'),auth['isAuthenticated'](),controller[_0x5adf('0xc')]);router[_0x5adf('0xd')]('/',auth[_0x5adf('0x7')](),controller[_0x5adf('0xe')]);router[_0x5adf('0xf')](_0x5adf('0x10'),auth[_0x5adf('0x7')](),controller[_0x5adf('0x11')]);router[_0x5adf('0x12')](_0x5adf('0x10'),auth[_0x5adf('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xa54c=['util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','index','/:id','getFields','/:id/descriptions','getDescriptions','create','put','update','delete'];(function(_0x1d94dc,_0x525817){var _0x56186a=function(_0x1e1f9a){while(--_0x1e1f9a){_0x1d94dc['push'](_0x1d94dc['shift']());}};_0x56186a(++_0x525817);}(_0xa54c,0xbe));var _0xca54=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa54c[_0x9aada2];return _0x196dff;};'use strict';var multer=require('multer');var util=require(_0xca54('0x0'));var path=require(_0xca54('0x1'));var timeout=require(_0xca54('0x2'));var express=require(_0xca54('0x3'));var router=express[_0xca54('0x4')]();var fs_extra=require(_0xca54('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xca54('0x6'));var controller=require(_0xca54('0x7'));router[_0xca54('0x8')]('/',auth[_0xca54('0x9')](),controller[_0xca54('0xa')]);router[_0xca54('0x8')](_0xca54('0xb'),auth[_0xca54('0x9')](),controller['show']);router[_0xca54('0x8')]('/:id/fields',auth[_0xca54('0x9')](),controller[_0xca54('0xc')]);router[_0xca54('0x8')]('/:id/subjects',auth[_0xca54('0x9')](),controller['getSubjects']);router['get'](_0xca54('0xd'),auth[_0xca54('0x9')](),controller[_0xca54('0xe')]);router['post']('/',auth[_0xca54('0x9')](),controller[_0xca54('0xf')]);router[_0xca54('0x10')](_0xca54('0xb'),auth[_0xca54('0x9')](),controller[_0xca54('0x11')]);router[_0xca54('0x12')]('/:id',auth[_0xca54('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 1f88e93..c385397 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f9e=['contact_lead','STRING','sequelize','exports','ENUM','lead','contact'];(function(_0x336595,_0x413e3d){var _0x600f95=function(_0x33a9f9){while(--_0x33a9f9){_0x336595['push'](_0x336595['shift']());}};_0x600f95(++_0x413e3d);}(_0x8f9e,0x160));var _0xe8f9=function(_0x412350,_0x2acbf6){_0x412350=_0x412350-0x0;var _0x4957ed=_0x8f9e[_0x412350];return _0x4957ed;};'use strict';var Sequelize=require(_0xe8f9('0x0'));module[_0xe8f9('0x1')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0xe8f9('0x2')](_0xe8f9('0x3'),'contact','nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0xe8f9('0x2')]('contact_lead',_0xe8f9('0x4'),_0xe8f9('0x3')),'defaultValue':_0xe8f9('0x5')},'description':{'type':Sequelize[_0xe8f9('0x6')]}};
\ No newline at end of file
+var _0x7c7e=['contact_lead','exports','STRING','ENUM','lead','contact'];(function(_0x51ab2c,_0x453e96){var _0x46bdbd=function(_0xc6a92){while(--_0xc6a92){_0x51ab2c['push'](_0x51ab2c['shift']());}};_0x46bdbd(++_0x453e96);}(_0x7c7e,0x1ab));var _0xe7c7=function(_0x2dec70,_0x24aeab){_0x2dec70=_0x2dec70-0x0;var _0x3ea6af=_0x7c7e[_0x2dec70];return _0x3ea6af;};'use strict';var Sequelize=require('sequelize');module[_0xe7c7('0x0')]={'name':{'type':Sequelize[_0xe7c7('0x1')]},'moduleCreate':{'type':Sequelize[_0xe7c7('0x2')](_0xe7c7('0x3'),_0xe7c7('0x4'),'nothing'),'defaultValue':_0xe7c7('0x3')},'moduleSearch':{'type':Sequelize[_0xe7c7('0x2')](_0xe7c7('0x5'),_0xe7c7('0x4'),_0xe7c7('0x3')),'defaultValue':_0xe7c7('0x5')},'description':{'type':Sequelize[_0xe7c7('0x1')]}};
\ No newline at end of file
index 1e16bd0..5a74ae2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c73=['../../config/license/util','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','sendStatus','name','send','index','map','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','merge','options','includeAll','rows','catch','show','params','ZohoConfiguration','include','find','body','update','findOne','ZohoField','rawAttributes','order','getFields','getSubjects','getDescriptions','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x56916d,_0x37b935){var _0x2b7f1f=function(_0x206eb1){while(--_0x206eb1){_0x56916d['push'](_0x56916d['shift']());}};_0x2b7f1f(++_0x37b935);}(_0x9c73,0x83));var _0x39c7=function(_0x5ecf3f,_0x30d8e9){_0x5ecf3f=_0x5ecf3f-0x0;var _0x2f4ef9=_0x9c73[_0x5ecf3f];return _0x2f4ef9;};'use strict';var emlformat=require(_0x39c7('0x0'));var rimraf=require(_0x39c7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x39c7('0x2'));var moment=require(_0x39c7('0x3'));var BPromise=require(_0x39c7('0x4'));var Mustache=require(_0x39c7('0x5'));var util=require(_0x39c7('0x6'));var path=require(_0x39c7('0x7'));var sox=require('sox');var csv=require(_0x39c7('0x8'));var ejs=require(_0x39c7('0x9'));var fs=require('fs');var fs_extra=require(_0x39c7('0xa'));var _=require('lodash');var squel=require(_0x39c7('0xb'));var crypto=require(_0x39c7('0xc'));var jsforce=require(_0x39c7('0xd'));var deskjs=require(_0x39c7('0xe'));var toCsv=require(_0x39c7('0x8'));var querystring=require('querystring');var Papa=require(_0x39c7('0xf'));var Redis=require(_0x39c7('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x39c7('0x11'));var as=require(_0x39c7('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x39c7('0x13'))(_0x39c7('0x14'));var utils=require(_0x39c7('0x15'));var config=require(_0x39c7('0x16'));var licenseUtil=require(_0x39c7('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3fa442,_0x415f03){_0x415f03=_0x415f03||0xcc;return function(_0x190002){if(_0x190002){return _0x3fa442['sendStatus'](_0x415f03);}return _0x3fa442['status'](_0x415f03)[_0x39c7('0x18')]();};}function respondWithResult(_0x2a0bfe,_0x13c244){_0x13c244=_0x13c244||0xc8;return function(_0x2a1b93){if(_0x2a1b93){return _0x2a0bfe[_0x39c7('0x19')](_0x13c244)[_0x39c7('0x1a')](_0x2a1b93);}};}function respondWithFilteredResult(_0x9a4815,_0x58b108){return function(_0x2e84fb){if(_0x2e84fb){var _0x2b9ddf=typeof _0x58b108['offset']===_0x39c7('0x1b')&&typeof _0x58b108['limit']===_0x39c7('0x1b');var _0x128ed1=_0x2e84fb[_0x39c7('0x1c')];var _0xb35764=_0x2b9ddf?0x0:_0x58b108[_0x39c7('0x1d')];var _0x56aafb=_0x2b9ddf?_0x2e84fb[_0x39c7('0x1c')]:_0x58b108[_0x39c7('0x1d')]+_0x58b108[_0x39c7('0x1e')];var _0x536e43;if(_0x56aafb>=_0x128ed1){_0x56aafb=_0x128ed1;_0x536e43=0xc8;}else{_0x536e43=0xce;}_0x9a4815[_0x39c7('0x19')](_0x536e43);return _0x9a4815[_0x39c7('0x1f')](_0x39c7('0x20'),_0xb35764+'-'+_0x56aafb+'/'+_0x128ed1)[_0x39c7('0x1a')](_0x2e84fb);}return null;};}function patchUpdates(_0x4fc1bf){return function(_0x55760e){try{jsonpatch[_0x39c7('0x21')](_0x55760e,_0x4fc1bf,!![]);}catch(_0x201513){return BPromise[_0x39c7('0x22')](_0x201513);}return _0x55760e[_0x39c7('0x23')]();};}function saveUpdates(_0x3a4287,_0x4cde93){return function(_0x52c481){if(_0x52c481){return _0x52c481['update'](_0x3a4287)[_0x39c7('0x24')](function(_0x5df1b7){return _0x5df1b7;});}return null;};}function removeEntity(_0x400c5c,_0x2bfb41){return function(_0x52f6a1){if(_0x52f6a1){return _0x52f6a1[_0x39c7('0x25')]()[_0x39c7('0x24')](function(){_0x400c5c[_0x39c7('0x19')](0xcc)[_0x39c7('0x18')]();});}};}function handleEntityNotFound(_0x53af4f,_0x5c8a78){return function(_0x479d88){if(!_0x479d88){_0x53af4f[_0x39c7('0x26')](0x194);}return _0x479d88;};}function handleError(_0x3b1811,_0x5cbb57){_0x5cbb57=_0x5cbb57||0x1f4;return function(_0x475c0a){logger['error'](_0x475c0a['stack']);if(_0x475c0a[_0x39c7('0x27')]){delete _0x475c0a['name'];}_0x3b1811[_0x39c7('0x19')](_0x5cbb57)[_0x39c7('0x28')](_0x475c0a);};}exports[_0x39c7('0x29')]=function(_0x265912,_0x15add3){var _0x1f00e2={},_0x417c0e={},_0x2e6381={'count':0x0,'rows':[]};var _0x4381e4=_[_0x39c7('0x2a')](db['ZohoConfiguration']['rawAttributes'],function(_0x5ea215){return{'name':_0x5ea215['fieldName'],'type':_0x5ea215['type']['key']};});_0x417c0e[_0x39c7('0x2b')]=_['map'](_0x4381e4,_0x39c7('0x27'));_0x417c0e[_0x39c7('0x2c')]=_[_0x39c7('0x2d')](_0x265912[_0x39c7('0x2c')]);_0x417c0e[_0x39c7('0x2e')]=_[_0x39c7('0x2f')](_0x417c0e['model'],_0x417c0e[_0x39c7('0x2c')]);_0x1f00e2[_0x39c7('0x30')]=_[_0x39c7('0x2f')](_0x417c0e[_0x39c7('0x2b')],qs[_0x39c7('0x31')](_0x265912[_0x39c7('0x2c')][_0x39c7('0x31')]));_0x1f00e2['attributes']=_0x1f00e2[_0x39c7('0x30')][_0x39c7('0x32')]?_0x1f00e2['attributes']:_0x417c0e[_0x39c7('0x2b')];if(!_0x265912[_0x39c7('0x2c')][_0x39c7('0x33')](_0x39c7('0x34'))){_0x1f00e2['limit']=qs[_0x39c7('0x1e')](_0x265912[_0x39c7('0x2c')]['limit']);_0x1f00e2['offset']=qs[_0x39c7('0x1d')](_0x265912[_0x39c7('0x2c')][_0x39c7('0x1d')]);}_0x1f00e2['order']=qs[_0x39c7('0x35')](_0x265912[_0x39c7('0x2c')]['sort']);_0x1f00e2[_0x39c7('0x36')]=qs[_0x39c7('0x2e')](_[_0x39c7('0x37')](_0x265912['query'],_0x417c0e[_0x39c7('0x2e')]),_0x4381e4);if(_0x265912[_0x39c7('0x2c')][_0x39c7('0x38')]){_0x1f00e2[_0x39c7('0x36')]=_['merge'](_0x1f00e2[_0x39c7('0x36')],{'$or':_[_0x39c7('0x2a')](_0x4381e4,function(_0x5783e9){if(_0x5783e9[_0x39c7('0x39')]!=='VIRTUAL'){var _0x1c6b58={};_0x1c6b58[_0x5783e9[_0x39c7('0x27')]]={'$like':'%'+_0x265912['query'][_0x39c7('0x38')]+'%'};return _0x1c6b58;}})});}_0x1f00e2=_[_0x39c7('0x3a')]({},_0x1f00e2,_0x265912[_0x39c7('0x3b')]);var _0x1751af={'where':_0x1f00e2[_0x39c7('0x36')]};return db['ZohoConfiguration'][_0x39c7('0x1c')](_0x1751af)[_0x39c7('0x24')](function(_0x550093){_0x2e6381[_0x39c7('0x1c')]=_0x550093;if(_0x265912[_0x39c7('0x2c')][_0x39c7('0x3c')]){_0x1f00e2['include']=[{'all':!![]}];}return db['ZohoConfiguration']['findAll'](_0x1f00e2);})[_0x39c7('0x24')](function(_0x39ab30){_0x2e6381[_0x39c7('0x3d')]=_0x39ab30;return _0x2e6381;})[_0x39c7('0x24')](respondWithFilteredResult(_0x15add3,_0x1f00e2))[_0x39c7('0x3e')](handleError(_0x15add3,null));};exports[_0x39c7('0x3f')]=function(_0x51da53,_0x2afcbb){var _0xce6c4f={'raw':![],'where':{'id':_0x51da53[_0x39c7('0x40')]['id']}},_0xa26b00={};_0xa26b00[_0x39c7('0x2b')]=_['keys'](db[_0x39c7('0x41')]['rawAttributes']);_0xa26b00[_0x39c7('0x2c')]=_[_0x39c7('0x2d')](_0x51da53[_0x39c7('0x2c')]);_0xa26b00[_0x39c7('0x2e')]=_['intersection'](_0xa26b00['model'],_0xa26b00['query']);_0xce6c4f[_0x39c7('0x30')]=_[_0x39c7('0x2f')](_0xa26b00[_0x39c7('0x2b')],qs[_0x39c7('0x31')](_0x51da53['query'][_0x39c7('0x31')]));_0xce6c4f['attributes']=_0xce6c4f[_0x39c7('0x30')]['length']?_0xce6c4f[_0x39c7('0x30')]:_0xa26b00[_0x39c7('0x2b')];if(_0x51da53['query']['includeAll']){_0xce6c4f[_0x39c7('0x42')]=[{'all':!![]}];}_0xce6c4f=_[_0x39c7('0x3a')]({},_0xce6c4f,_0x51da53[_0x39c7('0x3b')]);return db[_0x39c7('0x41')][_0x39c7('0x43')](_0xce6c4f)['then'](handleEntityNotFound(_0x2afcbb,null))[_0x39c7('0x24')](respondWithResult(_0x2afcbb,null))[_0x39c7('0x3e')](handleError(_0x2afcbb,null));};exports['create']=function(_0x582d6a,_0x4f4ed1){return db[_0x39c7('0x41')]['create'](_0x582d6a[_0x39c7('0x44')],{})[_0x39c7('0x24')](respondWithResult(_0x4f4ed1,0xc9))[_0x39c7('0x3e')](handleError(_0x4f4ed1,null));};exports[_0x39c7('0x45')]=function(_0x2baed6,_0xa2e0b3){if(_0x2baed6[_0x39c7('0x44')]['id']){delete _0x2baed6[_0x39c7('0x44')]['id'];}return db['ZohoConfiguration'][_0x39c7('0x43')]({'where':{'id':_0x2baed6['params']['id']}})[_0x39c7('0x24')](handleEntityNotFound(_0xa2e0b3,null))[_0x39c7('0x24')](saveUpdates(_0x2baed6[_0x39c7('0x44')],null))[_0x39c7('0x24')](respondWithResult(_0xa2e0b3,null))[_0x39c7('0x3e')](handleError(_0xa2e0b3,null));};exports[_0x39c7('0x25')]=function(_0x4d18e2,_0xf558c6){return db[_0x39c7('0x41')][_0x39c7('0x43')]({'where':{'id':_0x4d18e2[_0x39c7('0x40')]['id']}})[_0x39c7('0x24')](handleEntityNotFound(_0xf558c6,null))[_0x39c7('0x24')](removeEntity(_0xf558c6,null))[_0x39c7('0x3e')](handleError(_0xf558c6,null));};exports['getFields']=function(_0x11a9e5,_0x60c17,_0x322646){var _0x407e56={};var _0x524e01={};var _0x145687;var _0x1cc667;return db['ZohoConfiguration'][_0x39c7('0x46')]({'where':{'id':_0x11a9e5['params']['id']}})['then'](handleEntityNotFound(_0x60c17,null))[_0x39c7('0x24')](function(_0x4ebb58){if(_0x4ebb58){_0x145687=_0x4ebb58;_0x524e01[_0x39c7('0x2b')]=_[_0x39c7('0x2d')](db[_0x39c7('0x47')][_0x39c7('0x48')]);_0x524e01[_0x39c7('0x2c')]=_[_0x39c7('0x2d')](_0x11a9e5[_0x39c7('0x2c')]);_0x524e01[_0x39c7('0x2e')]=_[_0x39c7('0x2f')](_0x524e01[_0x39c7('0x2b')],_0x524e01[_0x39c7('0x2c')]);_0x407e56[_0x39c7('0x30')]=_[_0x39c7('0x2f')](_0x524e01[_0x39c7('0x2b')],qs[_0x39c7('0x31')](_0x11a9e5[_0x39c7('0x2c')][_0x39c7('0x31')]));_0x407e56[_0x39c7('0x30')]=_0x407e56[_0x39c7('0x30')][_0x39c7('0x32')]?_0x407e56[_0x39c7('0x30')]:_0x524e01[_0x39c7('0x2b')];_0x407e56[_0x39c7('0x49')]=qs[_0x39c7('0x35')](_0x11a9e5[_0x39c7('0x2c')]['sort']);_0x407e56['where']=qs['filters'](_[_0x39c7('0x37')](_0x11a9e5[_0x39c7('0x2c')],_0x524e01[_0x39c7('0x2e')]));if(_0x11a9e5[_0x39c7('0x2c')][_0x39c7('0x38')]){_0x407e56[_0x39c7('0x36')]=_[_0x39c7('0x3a')](_0x407e56[_0x39c7('0x36')],{'$or':_[_0x39c7('0x2a')](_0x407e56[_0x39c7('0x30')],function(_0x1db597){var _0x282482={};_0x282482[_0x1db597]={'$like':'%'+_0x11a9e5[_0x39c7('0x2c')][_0x39c7('0x38')]+'%'};return _0x282482;})});}_0x407e56=_['merge']({},_0x407e56,_0x11a9e5[_0x39c7('0x3b')]);return _0x145687['getFields'](_0x407e56);}})[_0x39c7('0x24')](function(_0x30950c){if(_0x30950c){_0x1cc667=_0x30950c[_0x39c7('0x32')];if(!_0x11a9e5['query'][_0x39c7('0x33')]('nolimit')){_0x407e56[_0x39c7('0x1e')]=qs[_0x39c7('0x1e')](_0x11a9e5['query'][_0x39c7('0x1e')]);_0x407e56[_0x39c7('0x1d')]=qs['offset'](_0x11a9e5[_0x39c7('0x2c')][_0x39c7('0x1d')]);}return _0x145687[_0x39c7('0x4a')](_0x407e56);}})[_0x39c7('0x24')](function(_0x477329){if(_0x477329){return _0x477329?{'count':_0x1cc667,'rows':_0x477329}:null;}})[_0x39c7('0x24')](respondWithResult(_0x60c17,null))[_0x39c7('0x3e')](handleError(_0x60c17,null));};exports[_0x39c7('0x4b')]=function(_0x3c9839,_0x50eaf3,_0xa02c53){var _0x2aef74={};var _0x1b76c5={};var _0x1b0da2;var _0xdc72cc;return db['ZohoConfiguration'][_0x39c7('0x46')]({'where':{'id':_0x3c9839[_0x39c7('0x40')]['id']}})['then'](handleEntityNotFound(_0x50eaf3,null))[_0x39c7('0x24')](function(_0x2d296d){if(_0x2d296d){_0x1b0da2=_0x2d296d;_0x1b76c5['model']=_['keys'](db['ZohoField'][_0x39c7('0x48')]);_0x1b76c5[_0x39c7('0x2c')]=_[_0x39c7('0x2d')](_0x3c9839[_0x39c7('0x2c')]);_0x1b76c5['filters']=_['intersection'](_0x1b76c5[_0x39c7('0x2b')],_0x1b76c5[_0x39c7('0x2c')]);_0x2aef74[_0x39c7('0x30')]=_[_0x39c7('0x2f')](_0x1b76c5['model'],qs[_0x39c7('0x31')](_0x3c9839[_0x39c7('0x2c')][_0x39c7('0x31')]));_0x2aef74[_0x39c7('0x30')]=_0x2aef74[_0x39c7('0x30')][_0x39c7('0x32')]?_0x2aef74[_0x39c7('0x30')]:_0x1b76c5[_0x39c7('0x2b')];_0x2aef74[_0x39c7('0x49')]=qs['sort'](_0x3c9839[_0x39c7('0x2c')][_0x39c7('0x35')]);_0x2aef74[_0x39c7('0x36')]=qs[_0x39c7('0x2e')](_[_0x39c7('0x37')](_0x3c9839[_0x39c7('0x2c')],_0x1b76c5[_0x39c7('0x2e')]));if(_0x3c9839[_0x39c7('0x2c')][_0x39c7('0x38')]){_0x2aef74[_0x39c7('0x36')]=_[_0x39c7('0x3a')](_0x2aef74[_0x39c7('0x36')],{'$or':_[_0x39c7('0x2a')](_0x2aef74[_0x39c7('0x30')],function(_0x2879be){var _0x433b4f={};_0x433b4f[_0x2879be]={'$like':'%'+_0x3c9839[_0x39c7('0x2c')]['filter']+'%'};return _0x433b4f;})});}_0x2aef74=_['merge']({},_0x2aef74,_0x3c9839[_0x39c7('0x3b')]);return _0x1b0da2[_0x39c7('0x4b')](_0x2aef74);}})[_0x39c7('0x24')](function(_0x3a93e9){if(_0x3a93e9){_0xdc72cc=_0x3a93e9[_0x39c7('0x32')];if(!_0x3c9839[_0x39c7('0x2c')][_0x39c7('0x33')](_0x39c7('0x34'))){_0x2aef74['limit']=qs['limit'](_0x3c9839[_0x39c7('0x2c')][_0x39c7('0x1e')]);_0x2aef74[_0x39c7('0x1d')]=qs[_0x39c7('0x1d')](_0x3c9839[_0x39c7('0x2c')][_0x39c7('0x1d')]);}return _0x1b0da2['getSubjects'](_0x2aef74);}})[_0x39c7('0x24')](function(_0x1e5d13){if(_0x1e5d13){return _0x1e5d13?{'count':_0xdc72cc,'rows':_0x1e5d13}:null;}})[_0x39c7('0x24')](respondWithResult(_0x50eaf3,null))['catch'](handleError(_0x50eaf3,null));};exports[_0x39c7('0x4c')]=function(_0x4aa408,_0x196008,_0x2e4a01){var _0x56e0cd={};var _0x172afe={};var _0x2962af;var _0x4701e1;return db[_0x39c7('0x41')][_0x39c7('0x46')]({'where':{'id':_0x4aa408[_0x39c7('0x40')]['id']}})[_0x39c7('0x24')](handleEntityNotFound(_0x196008,null))[_0x39c7('0x24')](function(_0x1f0a2c){if(_0x1f0a2c){_0x2962af=_0x1f0a2c;_0x172afe[_0x39c7('0x2b')]=_['keys'](db['ZohoField'][_0x39c7('0x48')]);_0x172afe['query']=_[_0x39c7('0x2d')](_0x4aa408[_0x39c7('0x2c')]);_0x172afe[_0x39c7('0x2e')]=_['intersection'](_0x172afe[_0x39c7('0x2b')],_0x172afe[_0x39c7('0x2c')]);_0x56e0cd[_0x39c7('0x30')]=_[_0x39c7('0x2f')](_0x172afe[_0x39c7('0x2b')],qs[_0x39c7('0x31')](_0x4aa408[_0x39c7('0x2c')][_0x39c7('0x31')]));_0x56e0cd[_0x39c7('0x30')]=_0x56e0cd[_0x39c7('0x30')]['length']?_0x56e0cd['attributes']:_0x172afe[_0x39c7('0x2b')];_0x56e0cd[_0x39c7('0x49')]=qs[_0x39c7('0x35')](_0x4aa408['query']['sort']);_0x56e0cd[_0x39c7('0x36')]=qs[_0x39c7('0x2e')](_['pick'](_0x4aa408[_0x39c7('0x2c')],_0x172afe[_0x39c7('0x2e')]));if(_0x4aa408[_0x39c7('0x2c')]['filter']){_0x56e0cd['where']=_['merge'](_0x56e0cd[_0x39c7('0x36')],{'$or':_[_0x39c7('0x2a')](_0x56e0cd[_0x39c7('0x30')],function(_0x26dc48){var _0x410273={};_0x410273[_0x26dc48]={'$like':'%'+_0x4aa408[_0x39c7('0x2c')][_0x39c7('0x38')]+'%'};return _0x410273;})});}_0x56e0cd=_[_0x39c7('0x3a')]({},_0x56e0cd,_0x4aa408['options']);return _0x2962af['getDescriptions'](_0x56e0cd);}})['then'](function(_0x316c7c){if(_0x316c7c){_0x4701e1=_0x316c7c[_0x39c7('0x32')];if(!_0x4aa408[_0x39c7('0x2c')]['hasOwnProperty']('nolimit')){_0x56e0cd[_0x39c7('0x1e')]=qs[_0x39c7('0x1e')](_0x4aa408[_0x39c7('0x2c')][_0x39c7('0x1e')]);_0x56e0cd[_0x39c7('0x1d')]=qs[_0x39c7('0x1d')](_0x4aa408['query'][_0x39c7('0x1d')]);}return _0x2962af['getDescriptions'](_0x56e0cd);}})[_0x39c7('0x24')](function(_0x5ee669){if(_0x5ee669){return _0x5ee669?{'count':_0x4701e1,'rows':_0x5ee669}:null;}})[_0x39c7('0x24')](respondWithResult(_0x196008,null))[_0x39c7('0x3e')](handleError(_0x196008,null));};
\ No newline at end of file
+var _0xaac4=['util','path','sox','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','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error','stack','name','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','where','merge','options','include','ZohoConfiguration','findAll','catch','show','params','includeAll','create','body','update','find','getFields','findOne','ZohoField','filter','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache'];(function(_0x13f3af,_0x2ac326){var _0xda3c9f=function(_0x5d96e9){while(--_0x5d96e9){_0x13f3af['push'](_0x13f3af['shift']());}};_0xda3c9f(++_0x2ac326);}(_0xaac4,0x98));var _0x4aac=function(_0x7835a,_0x7ef740){_0x7835a=_0x7835a-0x0;var _0xd46e11=_0xaac4[_0x7835a];return _0xd46e11;};'use strict';var emlformat=require(_0x4aac('0x0'));var rimraf=require(_0x4aac('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4aac('0x2'));var rp=require('request-promise');var moment=require(_0x4aac('0x3'));var BPromise=require(_0x4aac('0x4'));var Mustache=require(_0x4aac('0x5'));var util=require(_0x4aac('0x6'));var path=require(_0x4aac('0x7'));var sox=require(_0x4aac('0x8'));var csv=require(_0x4aac('0x9'));var ejs=require(_0x4aac('0xa'));var fs=require('fs');var fs_extra=require(_0x4aac('0xb'));var _=require('lodash');var squel=require(_0x4aac('0xc'));var crypto=require(_0x4aac('0xd'));var jsforce=require(_0x4aac('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4aac('0x9'));var querystring=require(_0x4aac('0xf'));var Papa=require(_0x4aac('0x10'));var Redis=require(_0x4aac('0x11'));var authService=require(_0x4aac('0x12'));var qs=require(_0x4aac('0x13'));var as=require(_0x4aac('0x14'));var hardwareService=require(_0x4aac('0x15'));var logger=require(_0x4aac('0x16'))('api');var utils=require(_0x4aac('0x17'));var config=require(_0x4aac('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4f6ad3,_0x3871a0){_0x3871a0=_0x3871a0||0xcc;return function(_0x468c08){if(_0x468c08){return _0x4f6ad3[_0x4aac('0x19')](_0x3871a0);}return _0x4f6ad3[_0x4aac('0x1a')](_0x3871a0)[_0x4aac('0x1b')]();};}function respondWithResult(_0xb36103,_0x59550d){_0x59550d=_0x59550d||0xc8;return function(_0x43bacd){if(_0x43bacd){return _0xb36103[_0x4aac('0x1a')](_0x59550d)[_0x4aac('0x1c')](_0x43bacd);}};}function respondWithFilteredResult(_0xb31916,_0x3e2854){return function(_0x2af2f0){if(_0x2af2f0){var _0x38a10a=typeof _0x3e2854[_0x4aac('0x1d')]===_0x4aac('0x1e')&&typeof _0x3e2854[_0x4aac('0x1f')]==='undefined';var _0x5f3a06=_0x2af2f0[_0x4aac('0x20')];var _0x4a2cb5=_0x38a10a?0x0:_0x3e2854['offset'];var _0x5eace4=_0x38a10a?_0x2af2f0[_0x4aac('0x20')]:_0x3e2854[_0x4aac('0x1d')]+_0x3e2854[_0x4aac('0x1f')];var _0x5e846f;if(_0x5eace4>=_0x5f3a06){_0x5eace4=_0x5f3a06;_0x5e846f=0xc8;}else{_0x5e846f=0xce;}_0xb31916[_0x4aac('0x1a')](_0x5e846f);return _0xb31916[_0x4aac('0x21')](_0x4aac('0x22'),_0x4a2cb5+'-'+_0x5eace4+'/'+_0x5f3a06)['json'](_0x2af2f0);}return null;};}function patchUpdates(_0x2b3a89){return function(_0x2c1bdb){try{jsonpatch['apply'](_0x2c1bdb,_0x2b3a89,!![]);}catch(_0x4d8603){return BPromise[_0x4aac('0x23')](_0x4d8603);}return _0x2c1bdb[_0x4aac('0x24')]();};}function saveUpdates(_0x2f7d7a,_0x34ef6c){return function(_0x535eef){if(_0x535eef){return _0x535eef['update'](_0x2f7d7a)[_0x4aac('0x25')](function(_0x1251cf){return _0x1251cf;});}return null;};}function removeEntity(_0xdeee9f,_0x41e163){return function(_0xb519aa){if(_0xb519aa){return _0xb519aa[_0x4aac('0x26')]()[_0x4aac('0x25')](function(){_0xdeee9f[_0x4aac('0x1a')](0xcc)[_0x4aac('0x1b')]();});}};}function handleEntityNotFound(_0x4c5a3e,_0x2ed1e1){return function(_0x3d2cdc){if(!_0x3d2cdc){_0x4c5a3e[_0x4aac('0x19')](0x194);}return _0x3d2cdc;};}function handleError(_0x553146,_0x2f085c){_0x2f085c=_0x2f085c||0x1f4;return function(_0x26beee){logger[_0x4aac('0x27')](_0x26beee[_0x4aac('0x28')]);if(_0x26beee[_0x4aac('0x29')]){delete _0x26beee[_0x4aac('0x29')];}_0x553146[_0x4aac('0x1a')](_0x2f085c)['send'](_0x26beee);};}exports['index']=function(_0x538cac,_0x25b1c7){var _0x20be03={},_0x2c9ed4={},_0x199619={'count':0x0,'rows':[]};var _0x46fc03=_[_0x4aac('0x2a')](db['ZohoConfiguration'][_0x4aac('0x2b')],function(_0x4b30b5){return{'name':_0x4b30b5[_0x4aac('0x2c')],'type':_0x4b30b5[_0x4aac('0x2d')]['key']};});_0x2c9ed4[_0x4aac('0x2e')]=_['map'](_0x46fc03,'name');_0x2c9ed4[_0x4aac('0x2f')]=_[_0x4aac('0x30')](_0x538cac[_0x4aac('0x2f')]);_0x2c9ed4[_0x4aac('0x31')]=_[_0x4aac('0x32')](_0x2c9ed4[_0x4aac('0x2e')],_0x2c9ed4['query']);_0x20be03[_0x4aac('0x33')]=_[_0x4aac('0x32')](_0x2c9ed4[_0x4aac('0x2e')],qs['fields'](_0x538cac[_0x4aac('0x2f')][_0x4aac('0x34')]));_0x20be03['attributes']=_0x20be03[_0x4aac('0x33')][_0x4aac('0x35')]?_0x20be03[_0x4aac('0x33')]:_0x2c9ed4['model'];if(!_0x538cac[_0x4aac('0x2f')]['hasOwnProperty'](_0x4aac('0x36'))){_0x20be03[_0x4aac('0x1f')]=qs[_0x4aac('0x1f')](_0x538cac['query'][_0x4aac('0x1f')]);_0x20be03[_0x4aac('0x1d')]=qs['offset'](_0x538cac['query'][_0x4aac('0x1d')]);}_0x20be03[_0x4aac('0x37')]=qs[_0x4aac('0x38')](_0x538cac[_0x4aac('0x2f')][_0x4aac('0x38')]);_0x20be03['where']=qs[_0x4aac('0x31')](_[_0x4aac('0x39')](_0x538cac[_0x4aac('0x2f')],_0x2c9ed4['filters']),_0x46fc03);if(_0x538cac[_0x4aac('0x2f')]['filter']){_0x20be03[_0x4aac('0x3a')]=_[_0x4aac('0x3b')](_0x20be03[_0x4aac('0x3a')],{'$or':_['map'](_0x46fc03,function(_0x44bc3f){if(_0x44bc3f[_0x4aac('0x2d')]!=='VIRTUAL'){var _0x49f38b={};_0x49f38b[_0x44bc3f[_0x4aac('0x29')]]={'$like':'%'+_0x538cac[_0x4aac('0x2f')]['filter']+'%'};return _0x49f38b;}})});}_0x20be03=_[_0x4aac('0x3b')]({},_0x20be03,_0x538cac[_0x4aac('0x3c')]);var _0x4aa256={'where':_0x20be03['where']};return db['ZohoConfiguration'][_0x4aac('0x20')](_0x4aa256)[_0x4aac('0x25')](function(_0x971f67){_0x199619[_0x4aac('0x20')]=_0x971f67;if(_0x538cac[_0x4aac('0x2f')]['includeAll']){_0x20be03[_0x4aac('0x3d')]=[{'all':!![]}];}return db[_0x4aac('0x3e')][_0x4aac('0x3f')](_0x20be03);})['then'](function(_0x33454f){_0x199619['rows']=_0x33454f;return _0x199619;})[_0x4aac('0x25')](respondWithFilteredResult(_0x25b1c7,_0x20be03))[_0x4aac('0x40')](handleError(_0x25b1c7,null));};exports[_0x4aac('0x41')]=function(_0x577d41,_0x3e4b6e){var _0x37458b={'raw':![],'where':{'id':_0x577d41[_0x4aac('0x42')]['id']}},_0xf15558={};_0xf15558[_0x4aac('0x2e')]=_[_0x4aac('0x30')](db[_0x4aac('0x3e')][_0x4aac('0x2b')]);_0xf15558[_0x4aac('0x2f')]=_[_0x4aac('0x30')](_0x577d41[_0x4aac('0x2f')]);_0xf15558[_0x4aac('0x31')]=_['intersection'](_0xf15558[_0x4aac('0x2e')],_0xf15558[_0x4aac('0x2f')]);_0x37458b[_0x4aac('0x33')]=_['intersection'](_0xf15558[_0x4aac('0x2e')],qs[_0x4aac('0x34')](_0x577d41[_0x4aac('0x2f')][_0x4aac('0x34')]));_0x37458b['attributes']=_0x37458b[_0x4aac('0x33')]['length']?_0x37458b[_0x4aac('0x33')]:_0xf15558['model'];if(_0x577d41[_0x4aac('0x2f')][_0x4aac('0x43')]){_0x37458b[_0x4aac('0x3d')]=[{'all':!![]}];}_0x37458b=_[_0x4aac('0x3b')]({},_0x37458b,_0x577d41['options']);return db[_0x4aac('0x3e')]['find'](_0x37458b)[_0x4aac('0x25')](handleEntityNotFound(_0x3e4b6e,null))['then'](respondWithResult(_0x3e4b6e,null))[_0x4aac('0x40')](handleError(_0x3e4b6e,null));};exports[_0x4aac('0x44')]=function(_0xb833d0,_0x1f0be8){return db[_0x4aac('0x3e')][_0x4aac('0x44')](_0xb833d0[_0x4aac('0x45')],{})['then'](respondWithResult(_0x1f0be8,0xc9))[_0x4aac('0x40')](handleError(_0x1f0be8,null));};exports[_0x4aac('0x46')]=function(_0x5e4141,_0x5ba98e){if(_0x5e4141[_0x4aac('0x45')]['id']){delete _0x5e4141['body']['id'];}return db[_0x4aac('0x3e')][_0x4aac('0x47')]({'where':{'id':_0x5e4141[_0x4aac('0x42')]['id']}})['then'](handleEntityNotFound(_0x5ba98e,null))['then'](saveUpdates(_0x5e4141[_0x4aac('0x45')],null))[_0x4aac('0x25')](respondWithResult(_0x5ba98e,null))[_0x4aac('0x40')](handleError(_0x5ba98e,null));};exports[_0x4aac('0x26')]=function(_0x508850,_0x2e3a6d){return db[_0x4aac('0x3e')][_0x4aac('0x47')]({'where':{'id':_0x508850['params']['id']}})[_0x4aac('0x25')](handleEntityNotFound(_0x2e3a6d,null))[_0x4aac('0x25')](removeEntity(_0x2e3a6d,null))[_0x4aac('0x40')](handleError(_0x2e3a6d,null));};exports[_0x4aac('0x48')]=function(_0x155215,_0x393f0e,_0x587651){var _0x1a655b={};var _0x17759d={};var _0x24e090;var _0x52cef1;return db[_0x4aac('0x3e')][_0x4aac('0x49')]({'where':{'id':_0x155215[_0x4aac('0x42')]['id']}})[_0x4aac('0x25')](handleEntityNotFound(_0x393f0e,null))[_0x4aac('0x25')](function(_0x54fff2){if(_0x54fff2){_0x24e090=_0x54fff2;_0x17759d['model']=_[_0x4aac('0x30')](db[_0x4aac('0x4a')]['rawAttributes']);_0x17759d[_0x4aac('0x2f')]=_['keys'](_0x155215[_0x4aac('0x2f')]);_0x17759d[_0x4aac('0x31')]=_[_0x4aac('0x32')](_0x17759d[_0x4aac('0x2e')],_0x17759d[_0x4aac('0x2f')]);_0x1a655b[_0x4aac('0x33')]=_[_0x4aac('0x32')](_0x17759d[_0x4aac('0x2e')],qs['fields'](_0x155215[_0x4aac('0x2f')][_0x4aac('0x34')]));_0x1a655b[_0x4aac('0x33')]=_0x1a655b[_0x4aac('0x33')][_0x4aac('0x35')]?_0x1a655b[_0x4aac('0x33')]:_0x17759d['model'];_0x1a655b[_0x4aac('0x37')]=qs[_0x4aac('0x38')](_0x155215['query'][_0x4aac('0x38')]);_0x1a655b[_0x4aac('0x3a')]=qs[_0x4aac('0x31')](_[_0x4aac('0x39')](_0x155215[_0x4aac('0x2f')],_0x17759d[_0x4aac('0x31')]));if(_0x155215[_0x4aac('0x2f')][_0x4aac('0x4b')]){_0x1a655b['where']=_[_0x4aac('0x3b')](_0x1a655b[_0x4aac('0x3a')],{'$or':_[_0x4aac('0x2a')](_0x1a655b[_0x4aac('0x33')],function(_0x2aa498){var _0x645ee9={};_0x645ee9[_0x2aa498]={'$like':'%'+_0x155215['query'][_0x4aac('0x4b')]+'%'};return _0x645ee9;})});}_0x1a655b=_[_0x4aac('0x3b')]({},_0x1a655b,_0x155215['options']);return _0x24e090[_0x4aac('0x48')](_0x1a655b);}})['then'](function(_0x2c53d8){if(_0x2c53d8){_0x52cef1=_0x2c53d8[_0x4aac('0x35')];if(!_0x155215['query'][_0x4aac('0x4c')]('nolimit')){_0x1a655b[_0x4aac('0x1f')]=qs[_0x4aac('0x1f')](_0x155215[_0x4aac('0x2f')]['limit']);_0x1a655b['offset']=qs[_0x4aac('0x1d')](_0x155215['query'][_0x4aac('0x1d')]);}return _0x24e090[_0x4aac('0x48')](_0x1a655b);}})[_0x4aac('0x25')](function(_0x20bd78){if(_0x20bd78){return _0x20bd78?{'count':_0x52cef1,'rows':_0x20bd78}:null;}})['then'](respondWithResult(_0x393f0e,null))[_0x4aac('0x40')](handleError(_0x393f0e,null));};exports[_0x4aac('0x4d')]=function(_0x2de80b,_0x3548a9,_0x517af0){var _0x1f97ce={};var _0x4eddd1={};var _0x39516c;var _0x272fa4;return db[_0x4aac('0x3e')]['findOne']({'where':{'id':_0x2de80b['params']['id']}})[_0x4aac('0x25')](handleEntityNotFound(_0x3548a9,null))[_0x4aac('0x25')](function(_0x58009b){if(_0x58009b){_0x39516c=_0x58009b;_0x4eddd1['model']=_['keys'](db[_0x4aac('0x4a')][_0x4aac('0x2b')]);_0x4eddd1[_0x4aac('0x2f')]=_[_0x4aac('0x30')](_0x2de80b[_0x4aac('0x2f')]);_0x4eddd1[_0x4aac('0x31')]=_['intersection'](_0x4eddd1[_0x4aac('0x2e')],_0x4eddd1[_0x4aac('0x2f')]);_0x1f97ce[_0x4aac('0x33')]=_[_0x4aac('0x32')](_0x4eddd1['model'],qs[_0x4aac('0x34')](_0x2de80b[_0x4aac('0x2f')]['fields']));_0x1f97ce['attributes']=_0x1f97ce[_0x4aac('0x33')][_0x4aac('0x35')]?_0x1f97ce[_0x4aac('0x33')]:_0x4eddd1[_0x4aac('0x2e')];_0x1f97ce[_0x4aac('0x37')]=qs[_0x4aac('0x38')](_0x2de80b[_0x4aac('0x2f')][_0x4aac('0x38')]);_0x1f97ce[_0x4aac('0x3a')]=qs[_0x4aac('0x31')](_[_0x4aac('0x39')](_0x2de80b[_0x4aac('0x2f')],_0x4eddd1['filters']));if(_0x2de80b['query'][_0x4aac('0x4b')]){_0x1f97ce['where']=_[_0x4aac('0x3b')](_0x1f97ce[_0x4aac('0x3a')],{'$or':_['map'](_0x1f97ce[_0x4aac('0x33')],function(_0x3343ff){var _0x265848={};_0x265848[_0x3343ff]={'$like':'%'+_0x2de80b['query']['filter']+'%'};return _0x265848;})});}_0x1f97ce=_[_0x4aac('0x3b')]({},_0x1f97ce,_0x2de80b[_0x4aac('0x3c')]);return _0x39516c[_0x4aac('0x4d')](_0x1f97ce);}})[_0x4aac('0x25')](function(_0x58de4f){if(_0x58de4f){_0x272fa4=_0x58de4f['length'];if(!_0x2de80b['query'][_0x4aac('0x4c')]('nolimit')){_0x1f97ce[_0x4aac('0x1f')]=qs[_0x4aac('0x1f')](_0x2de80b[_0x4aac('0x2f')][_0x4aac('0x1f')]);_0x1f97ce[_0x4aac('0x1d')]=qs[_0x4aac('0x1d')](_0x2de80b[_0x4aac('0x2f')]['offset']);}return _0x39516c[_0x4aac('0x4d')](_0x1f97ce);}})[_0x4aac('0x25')](function(_0x357805){if(_0x357805){return _0x357805?{'count':_0x272fa4,'rows':_0x357805}:null;}})['then'](respondWithResult(_0x3548a9,null))[_0x4aac('0x40')](handleError(_0x3548a9,null));};exports[_0x4aac('0x4e')]=function(_0x551ea9,_0x2fe3c5,_0x51cb74){var _0x1f314e={};var _0x2c1fe2={};var _0x6d3f69;var _0x53dbb2;return db[_0x4aac('0x3e')]['findOne']({'where':{'id':_0x551ea9[_0x4aac('0x42')]['id']}})[_0x4aac('0x25')](handleEntityNotFound(_0x2fe3c5,null))[_0x4aac('0x25')](function(_0x1c08bd){if(_0x1c08bd){_0x6d3f69=_0x1c08bd;_0x2c1fe2['model']=_[_0x4aac('0x30')](db[_0x4aac('0x4a')][_0x4aac('0x2b')]);_0x2c1fe2['query']=_[_0x4aac('0x30')](_0x551ea9[_0x4aac('0x2f')]);_0x2c1fe2['filters']=_[_0x4aac('0x32')](_0x2c1fe2['model'],_0x2c1fe2['query']);_0x1f314e[_0x4aac('0x33')]=_[_0x4aac('0x32')](_0x2c1fe2[_0x4aac('0x2e')],qs[_0x4aac('0x34')](_0x551ea9[_0x4aac('0x2f')][_0x4aac('0x34')]));_0x1f314e[_0x4aac('0x33')]=_0x1f314e[_0x4aac('0x33')]['length']?_0x1f314e[_0x4aac('0x33')]:_0x2c1fe2[_0x4aac('0x2e')];_0x1f314e[_0x4aac('0x37')]=qs[_0x4aac('0x38')](_0x551ea9[_0x4aac('0x2f')][_0x4aac('0x38')]);_0x1f314e[_0x4aac('0x3a')]=qs[_0x4aac('0x31')](_[_0x4aac('0x39')](_0x551ea9['query'],_0x2c1fe2[_0x4aac('0x31')]));if(_0x551ea9['query'][_0x4aac('0x4b')]){_0x1f314e[_0x4aac('0x3a')]=_[_0x4aac('0x3b')](_0x1f314e['where'],{'$or':_[_0x4aac('0x2a')](_0x1f314e[_0x4aac('0x33')],function(_0xe1d769){var _0x907295={};_0x907295[_0xe1d769]={'$like':'%'+_0x551ea9[_0x4aac('0x2f')]['filter']+'%'};return _0x907295;})});}_0x1f314e=_[_0x4aac('0x3b')]({},_0x1f314e,_0x551ea9[_0x4aac('0x3c')]);return _0x6d3f69[_0x4aac('0x4e')](_0x1f314e);}})['then'](function(_0x396525){if(_0x396525){_0x53dbb2=_0x396525[_0x4aac('0x35')];if(!_0x551ea9['query'][_0x4aac('0x4c')](_0x4aac('0x36'))){_0x1f314e['limit']=qs[_0x4aac('0x1f')](_0x551ea9[_0x4aac('0x2f')][_0x4aac('0x1f')]);_0x1f314e[_0x4aac('0x1d')]=qs[_0x4aac('0x1d')](_0x551ea9['query'][_0x4aac('0x1d')]);}return _0x6d3f69[_0x4aac('0x4e')](_0x1f314e);}})[_0x4aac('0x25')](function(_0x364a43){if(_0x364a43){return _0x364a43?{'count':_0x53dbb2,'rows':_0x364a43}:null;}})[_0x4aac('0x25')](respondWithResult(_0x2fe3c5,null))[_0x4aac('0x40')](handleError(_0x2fe3c5,null));};
\ No newline at end of file
index 728e410..41b37bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf39a=['lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration'];(function(_0x2a930e,_0x32eca8){var _0x3b3138=function(_0x313abc){while(--_0x313abc){_0x2a930e['push'](_0x2a930e['shift']());}};_0x3b3138(++_0x32eca8);}(_0xf39a,0x90));var _0xaf39=function(_0x4b12c9,_0x5a8f8b){_0x4b12c9=_0x4b12c9-0x0;var _0x17017d=_0xf39a[_0x4b12c9];return _0x17017d;};'use strict';var _=require(_0xaf39('0x0'));var util=require(_0xaf39('0x1'));var logger=require(_0xaf39('0x2'))(_0xaf39('0x3'));var moment=require(_0xaf39('0x4'));var BPromise=require('bluebird');var rp=require(_0xaf39('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaf39('0x6'));var config=require(_0xaf39('0x7'));var attributes=require(_0xaf39('0x8'));module[_0xaf39('0x9')]=function(_0x10a902,_0x537bbc){return _0x10a902[_0xaf39('0xa')](_0xaf39('0xb'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9f13=['path','rimraf','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','int_zoho_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x8fb035,_0x217b6d){var _0x3a678d=function(_0x29d401){while(--_0x29d401){_0x8fb035['push'](_0x8fb035['shift']());}};_0x3a678d(++_0x217b6d);}(_0x9f13,0xa1));var _0x39f1=function(_0x4298ed,_0x38e24c){_0x4298ed=_0x4298ed-0x0;var _0x206ec4=_0x9f13[_0x4298ed];return _0x206ec4;};'use strict';var _=require(_0x39f1('0x0'));var util=require(_0x39f1('0x1'));var logger=require(_0x39f1('0x2'))(_0x39f1('0x3'));var moment=require(_0x39f1('0x4'));var BPromise=require(_0x39f1('0x5'));var rp=require(_0x39f1('0x6'));var fs=require('fs');var path=require(_0x39f1('0x7'));var rimraf=require(_0x39f1('0x8'));var config=require('../../config/environment');var attributes=require(_0x39f1('0x9'));module[_0x39f1('0xa')]=function(_0x23a0f5,_0x5085af){return _0x23a0f5[_0x39f1('0xb')](_0x39f1('0xc'),attributes,{'tableName':_0x39f1('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 67735cf..56f871b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe21d=['rpc','../../config/environment','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x25173f,_0xc4ff69){var _0x5f4e6c=function(_0x56bdbc){while(--_0x56bdbc){_0x25173f['push'](_0x25173f['shift']());}};_0x5f4e6c(++_0xc4ff69);}(_0xe21d,0x15d));var _0xde21=function(_0x2f7625,_0x284e2d){_0x2f7625=_0x2f7625-0x0;var _0x8497f5=_0xe21d[_0x2f7625];return _0x8497f5;};'use strict';var _=require(_0xde21('0x0'));var util=require(_0xde21('0x1'));var moment=require('moment');var BPromise=require(_0xde21('0x2'));var rs=require(_0xde21('0x3'));var fs=require('fs');var Redis=require(_0xde21('0x4'));var db=require(_0xde21('0x5'))['db'];var utils=require(_0xde21('0x6'));var logger=require(_0xde21('0x7'))(_0xde21('0x8'));var config=require(_0xde21('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xde21('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x58a794,_0x2120d0,_0x53f11e){return new BPromise(function(_0x55b9d1,_0xc438dc){return client[_0xde21('0xb')](_0x58a794,_0x53f11e)[_0xde21('0xc')](function(_0x44233d){logger[_0xde21('0xd')](_0xde21('0xe'),_0x2120d0,_0xde21('0xf'));logger['debug'](_0xde21('0x10'),_0x2120d0,_0xde21('0xf'),JSON['stringify'](_0x44233d));if(_0x44233d['error']){if(_0x44233d[_0xde21('0x11')]['code']===0x1f4){logger[_0xde21('0x11')](_0xde21('0xe'),_0x2120d0,_0x44233d[_0xde21('0x11')][_0xde21('0x12')]);return _0xc438dc(_0x44233d[_0xde21('0x11')][_0xde21('0x12')]);}logger[_0xde21('0x11')]('ZohoConfiguration,\x20%s,\x20%s',_0x2120d0,_0x44233d[_0xde21('0x11')][_0xde21('0x12')]);return _0x55b9d1(_0x44233d[_0xde21('0x11')][_0xde21('0x12')]);}else{logger[_0xde21('0xd')]('ZohoConfiguration,\x20%s,\x20%s',_0x2120d0,'request\x20sent');_0x55b9d1(_0x44233d[_0xde21('0x13')]['message']);}})[_0xde21('0x14')](function(_0xf3ac80){logger[_0xde21('0x11')](_0xde21('0xe'),_0x2120d0,_0xf3ac80);_0xc438dc(_0xf3ac80);});});}
\ No newline at end of file
+var _0x1fa5=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','then','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','ZohoConfiguration,\x20%s,\x20%s','message','result','lodash'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1fa5,0xdb));var _0x51fa=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0x1fa5[_0x5d4607];return _0x5e4a86;};'use strict';var _=require(_0x51fa('0x0'));var util=require('util');var moment=require(_0x51fa('0x1'));var BPromise=require(_0x51fa('0x2'));var rs=require(_0x51fa('0x3'));var fs=require('fs');var Redis=require(_0x51fa('0x4'));var db=require(_0x51fa('0x5'))['db'];var utils=require(_0x51fa('0x6'));var logger=require(_0x51fa('0x7'))(_0x51fa('0x8'));var config=require(_0x51fa('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x51fa('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x90ec55,_0x1ff0da,_0x51ed38){return new BPromise(function(_0x1d25ea,_0x2b27de){return client['request'](_0x90ec55,_0x51ed38)[_0x51fa('0xb')](function(_0x499b24){logger['info']('ZohoConfiguration,\x20%s,\x20%s',_0x1ff0da,_0x51fa('0xc'));logger[_0x51fa('0xd')](_0x51fa('0xe'),_0x1ff0da,'request\x20sent',JSON[_0x51fa('0xf')](_0x499b24));if(_0x499b24[_0x51fa('0x10')]){if(_0x499b24[_0x51fa('0x10')]['code']===0x1f4){logger[_0x51fa('0x10')](_0x51fa('0x11'),_0x1ff0da,_0x499b24[_0x51fa('0x10')][_0x51fa('0x12')]);return _0x2b27de(_0x499b24['error'][_0x51fa('0x12')]);}logger[_0x51fa('0x10')](_0x51fa('0x11'),_0x1ff0da,_0x499b24[_0x51fa('0x10')]['message']);return _0x1d25ea(_0x499b24['error'][_0x51fa('0x12')]);}else{logger['info'](_0x51fa('0x11'),_0x1ff0da,_0x51fa('0xc'));_0x1d25ea(_0x499b24[_0x51fa('0x13')][_0x51fa('0x12')]);}})['catch'](function(_0x385b4d){logger['error'](_0x51fa('0x11'),_0x1ff0da,_0x385b4d);_0x2b27de(_0x385b4d);});});}
\ No newline at end of file
index 6c1b242..e3d00c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c2d=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','index','/:id','show','post','isAuthenticated','create','put','update','delete','destroy','connect-timeout'];(function(_0x5ee6f3,_0x4cf046){var _0xa0a711=function(_0x52553f){while(--_0x52553f){_0x5ee6f3['push'](_0x5ee6f3['shift']());}};_0xa0a711(++_0x4cf046);}(_0x6c2d,0xb3));var _0xd6c2=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0x6c2d[_0x220dbb];return _0x2b77de;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xd6c2('0x0'));var express=require(_0xd6c2('0x1'));var router=express['Router']();var fs_extra=require(_0xd6c2('0x2'));var auth=require(_0xd6c2('0x3'));var interaction=require(_0xd6c2('0x4'));var config=require(_0xd6c2('0x5'));var controller=require(_0xd6c2('0x6'));router[_0xd6c2('0x7')]('/',auth['isAuthenticated'](),controller[_0xd6c2('0x8')]);router[_0xd6c2('0x7')](_0xd6c2('0x9'),auth['isAuthenticated'](),controller[_0xd6c2('0xa')]);router[_0xd6c2('0xb')]('/',auth[_0xd6c2('0xc')](),controller[_0xd6c2('0xd')]);router[_0xd6c2('0xe')](_0xd6c2('0x9'),auth[_0xd6c2('0xc')](),controller[_0xd6c2('0xf')]);router[_0xd6c2('0x10')](_0xd6c2('0x9'),auth['isAuthenticated'](),controller[_0xd6c2('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x0b4a=['fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','post','create','destroy','exports','express','Router'];(function(_0x486b3d,_0x6f439a){var _0xa4f13a=function(_0x3339dd){while(--_0x3339dd){_0x486b3d['push'](_0x486b3d['shift']());}};_0xa4f13a(++_0x6f439a);}(_0x0b4a,0xdb));var _0xa0b4=function(_0x1da054,_0x31d7d1){_0x1da054=_0x1da054-0x0;var _0x1db067=_0x0b4a[_0x1da054];return _0x1db067;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa0b4('0x0'));var router=express[_0xa0b4('0x1')]();var fs_extra=require(_0xa0b4('0x2'));var auth=require(_0xa0b4('0x3'));var interaction=require(_0xa0b4('0x4'));var config=require('../../config/environment');var controller=require('./intZohoField.controller');router['get']('/',auth[_0xa0b4('0x5')](),controller[_0xa0b4('0x6')]);router[_0xa0b4('0x7')](_0xa0b4('0x8'),auth['isAuthenticated'](),controller['show']);router[_0xa0b4('0x9')]('/',auth[_0xa0b4('0x5')](),controller[_0xa0b4('0xa')]);router['put'](_0xa0b4('0x8'),auth[_0xa0b4('0x5')](),controller['update']);router['delete'](_0xa0b4('0x8'),auth[_0xa0b4('0x5')](),controller[_0xa0b4('0xb')]);module[_0xa0b4('0xc')]=router;
\ No newline at end of file
index af9f06f..46f3ca3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0778=['keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x211fef,_0x4ab716){var _0x5447bf=function(_0x306ea3){while(--_0x306ea3){_0x211fef['push'](_0x211fef['shift']());}};_0x5447bf(++_0x4ab716);}(_0x0778,0x1da));var _0x8077=function(_0x3156ec,_0x18ffd2){_0x3156ec=_0x3156ec-0x0;var _0x4b43da=_0x0778[_0x3156ec];return _0x4b43da;};'use strict';var Sequelize=require(_0x8077('0x0'));module[_0x8077('0x1')]={'type':{'type':Sequelize[_0x8077('0x2')](_0x8077('0x3'),_0x8077('0x4'),_0x8077('0x5'),_0x8077('0x6'),_0x8077('0x7')),'defaultValue':_0x8077('0x3')},'content':{'type':Sequelize[_0x8077('0x8')]},'key':{'type':Sequelize[_0x8077('0x8')]},'keyType':{'type':Sequelize[_0x8077('0x2')]('string',_0x8077('0x4'),_0x8077('0x5'))},'keyContent':{'type':Sequelize[_0x8077('0x8')]},'idField':{'type':Sequelize[_0x8077('0x8')]},'nameField':{'type':Sequelize[_0x8077('0x8')]},'customField':{'type':Sequelize[_0x8077('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8077('0x8')]}};
\ No newline at end of file
+var _0xcade=['customVariable','STRING','sequelize','exports','ENUM','string','variable'];(function(_0x115b22,_0x156764){var _0x33480b=function(_0x2341fd){while(--_0x2341fd){_0x115b22['push'](_0x115b22['shift']());}};_0x33480b(++_0x156764);}(_0xcade,0x160));var _0xecad=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcade[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xecad('0x0'));module[_0xecad('0x1')]={'type':{'type':Sequelize[_0xecad('0x2')](_0xecad('0x3'),_0xecad('0x4'),_0xecad('0x5'),'keyValue','picklist'),'defaultValue':_0xecad('0x3')},'content':{'type':Sequelize[_0xecad('0x6')]},'key':{'type':Sequelize[_0xecad('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0xecad('0x3'),_0xecad('0x4'),_0xecad('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xecad('0x6')]},'nameField':{'type':Sequelize[_0xecad('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xecad('0x6')]}};
\ No newline at end of file
index 3ca4a77..61b9db7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d7c=['fields','length','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','catch','create','body','update','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','save','then','error','name','map','ZohoField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes'];(function(_0x5ad16d,_0x420971){var _0x2fd008=function(_0x5208d7){while(--_0x5208d7){_0x5ad16d['push'](_0x5ad16d['shift']());}};_0x2fd008(++_0x420971);}(_0x4d7c,0x1ef));var _0xc4d7=function(_0x107c61,_0x59a34e){_0x107c61=_0x107c61-0x0;var _0x566551=_0x4d7c[_0x107c61];return _0x566551;};'use strict';var emlformat=require(_0xc4d7('0x0'));var rimraf=require(_0xc4d7('0x1'));var zipdir=require(_0xc4d7('0x2'));var jsonpatch=require(_0xc4d7('0x3'));var rp=require(_0xc4d7('0x4'));var moment=require(_0xc4d7('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc4d7('0x6'));var path=require(_0xc4d7('0x7'));var sox=require(_0xc4d7('0x8'));var csv=require(_0xc4d7('0x9'));var ejs=require(_0xc4d7('0xa'));var fs=require('fs');var fs_extra=require(_0xc4d7('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc4d7('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xc4d7('0xd'));var toCsv=require(_0xc4d7('0x9'));var querystring=require(_0xc4d7('0xe'));var Papa=require(_0xc4d7('0xf'));var Redis=require(_0xc4d7('0x10'));var authService=require(_0xc4d7('0x11'));var qs=require(_0xc4d7('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc4d7('0x13'));var logger=require('../../config/logger')(_0xc4d7('0x14'));var utils=require(_0xc4d7('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xc4d7('0x16'));var db=require(_0xc4d7('0x17'))['db'];function respondWithStatusCode(_0x4f50ea,_0x4f4467){_0x4f4467=_0x4f4467||0xcc;return function(_0x309ad7){if(_0x309ad7){return _0x4f50ea[_0xc4d7('0x18')](_0x4f4467);}return _0x4f50ea[_0xc4d7('0x19')](_0x4f4467)[_0xc4d7('0x1a')]();};}function respondWithResult(_0x559a49,_0x2f9010){_0x2f9010=_0x2f9010||0xc8;return function(_0x574523){if(_0x574523){return _0x559a49[_0xc4d7('0x19')](_0x2f9010)[_0xc4d7('0x1b')](_0x574523);}};}function respondWithFilteredResult(_0x52b5aa,_0x4b023a){return function(_0x3f235d){if(_0x3f235d){var _0x12a0d1=typeof _0x4b023a['offset']==='undefined'&&typeof _0x4b023a[_0xc4d7('0x1c')]===_0xc4d7('0x1d');var _0x1cfbaa=_0x3f235d[_0xc4d7('0x1e')];var _0x3f4a34=_0x12a0d1?0x0:_0x4b023a['offset'];var _0x2317e1=_0x12a0d1?_0x3f235d[_0xc4d7('0x1e')]:_0x4b023a[_0xc4d7('0x1f')]+_0x4b023a[_0xc4d7('0x1c')];var _0xbca3cb;if(_0x2317e1>=_0x1cfbaa){_0x2317e1=_0x1cfbaa;_0xbca3cb=0xc8;}else{_0xbca3cb=0xce;}_0x52b5aa[_0xc4d7('0x19')](_0xbca3cb);return _0x52b5aa['set'](_0xc4d7('0x20'),_0x3f4a34+'-'+_0x2317e1+'/'+_0x1cfbaa)['json'](_0x3f235d);}return null;};}function patchUpdates(_0x5cb8f2){return function(_0xa94a75){try{jsonpatch['apply'](_0xa94a75,_0x5cb8f2,!![]);}catch(_0x16bc32){return BPromise['reject'](_0x16bc32);}return _0xa94a75[_0xc4d7('0x21')]();};}function saveUpdates(_0x5d3dd1,_0x401532){return function(_0xeb8f36){if(_0xeb8f36){return _0xeb8f36['update'](_0x5d3dd1)[_0xc4d7('0x22')](function(_0x5b744b){return _0x5b744b;});}return null;};}function removeEntity(_0x5dec26,_0x5370b7){return function(_0x3c93fe){if(_0x3c93fe){return _0x3c93fe['destroy']()[_0xc4d7('0x22')](function(){_0x5dec26[_0xc4d7('0x19')](0xcc)[_0xc4d7('0x1a')]();});}};}function handleEntityNotFound(_0x2893af,_0x17894d){return function(_0x250c59){if(!_0x250c59){_0x2893af['sendStatus'](0x194);}return _0x250c59;};}function handleError(_0x306e49,_0x374ec1){_0x374ec1=_0x374ec1||0x1f4;return function(_0x306c72){logger[_0xc4d7('0x23')](_0x306c72['stack']);if(_0x306c72[_0xc4d7('0x24')]){delete _0x306c72['name'];}_0x306e49[_0xc4d7('0x19')](_0x374ec1)['send'](_0x306c72);};}exports['index']=function(_0x13579f,_0x46818a){var _0x2d9778={},_0x4bda8e={},_0xa45fd8={'count':0x0,'rows':[]};var _0x299799=_[_0xc4d7('0x25')](db[_0xc4d7('0x26')][_0xc4d7('0x27')],function(_0x2197a1){return{'name':_0x2197a1[_0xc4d7('0x28')],'type':_0x2197a1[_0xc4d7('0x29')][_0xc4d7('0x2a')]};});_0x4bda8e[_0xc4d7('0x2b')]=_[_0xc4d7('0x25')](_0x299799,_0xc4d7('0x24'));_0x4bda8e[_0xc4d7('0x2c')]=_[_0xc4d7('0x2d')](_0x13579f[_0xc4d7('0x2c')]);_0x4bda8e[_0xc4d7('0x2e')]=_[_0xc4d7('0x2f')](_0x4bda8e[_0xc4d7('0x2b')],_0x4bda8e[_0xc4d7('0x2c')]);_0x2d9778[_0xc4d7('0x30')]=_[_0xc4d7('0x2f')](_0x4bda8e[_0xc4d7('0x2b')],qs[_0xc4d7('0x31')](_0x13579f[_0xc4d7('0x2c')][_0xc4d7('0x31')]));_0x2d9778[_0xc4d7('0x30')]=_0x2d9778[_0xc4d7('0x30')][_0xc4d7('0x32')]?_0x2d9778[_0xc4d7('0x30')]:_0x4bda8e['model'];if(!_0x13579f[_0xc4d7('0x2c')]['hasOwnProperty']('nolimit')){_0x2d9778[_0xc4d7('0x1c')]=qs[_0xc4d7('0x1c')](_0x13579f[_0xc4d7('0x2c')][_0xc4d7('0x1c')]);_0x2d9778['offset']=qs[_0xc4d7('0x1f')](_0x13579f[_0xc4d7('0x2c')][_0xc4d7('0x1f')]);}_0x2d9778['order']=qs[_0xc4d7('0x33')](_0x13579f['query'][_0xc4d7('0x33')]);_0x2d9778['where']=qs[_0xc4d7('0x2e')](_['pick'](_0x13579f[_0xc4d7('0x2c')],_0x4bda8e[_0xc4d7('0x2e')]),_0x299799);if(_0x13579f[_0xc4d7('0x2c')][_0xc4d7('0x34')]){_0x2d9778[_0xc4d7('0x35')]=_[_0xc4d7('0x36')](_0x2d9778['where'],{'$or':_[_0xc4d7('0x25')](_0x299799,function(_0x12ad6b){if(_0x12ad6b[_0xc4d7('0x29')]!==_0xc4d7('0x37')){var _0x561614={};_0x561614[_0x12ad6b[_0xc4d7('0x24')]]={'$like':'%'+_0x13579f[_0xc4d7('0x2c')]['filter']+'%'};return _0x561614;}})});}_0x2d9778=_['merge']({},_0x2d9778,_0x13579f[_0xc4d7('0x38')]);var _0x552ce7={'where':_0x2d9778[_0xc4d7('0x35')]};return db[_0xc4d7('0x26')][_0xc4d7('0x1e')](_0x552ce7)['then'](function(_0x23a04a){_0xa45fd8[_0xc4d7('0x1e')]=_0x23a04a;if(_0x13579f['query'][_0xc4d7('0x39')]){_0x2d9778[_0xc4d7('0x3a')]=[{'all':!![]}];}return db['ZohoField'][_0xc4d7('0x3b')](_0x2d9778);})[_0xc4d7('0x22')](function(_0x35c5f0){_0xa45fd8['rows']=_0x35c5f0;return _0xa45fd8;})[_0xc4d7('0x22')](respondWithFilteredResult(_0x46818a,_0x2d9778))['catch'](handleError(_0x46818a,null));};exports[_0xc4d7('0x3c')]=function(_0xad530a,_0x50746a){var _0x1d6cf7={'raw':!![],'where':{'id':_0xad530a[_0xc4d7('0x3d')]['id']}},_0x3f6212={};_0x3f6212[_0xc4d7('0x2b')]=_['keys'](db[_0xc4d7('0x26')]['rawAttributes']);_0x3f6212[_0xc4d7('0x2c')]=_[_0xc4d7('0x2d')](_0xad530a[_0xc4d7('0x2c')]);_0x3f6212[_0xc4d7('0x2e')]=_[_0xc4d7('0x2f')](_0x3f6212[_0xc4d7('0x2b')],_0x3f6212['query']);_0x1d6cf7[_0xc4d7('0x30')]=_[_0xc4d7('0x2f')](_0x3f6212['model'],qs[_0xc4d7('0x31')](_0xad530a[_0xc4d7('0x2c')][_0xc4d7('0x31')]));_0x1d6cf7[_0xc4d7('0x30')]=_0x1d6cf7[_0xc4d7('0x30')][_0xc4d7('0x32')]?_0x1d6cf7['attributes']:_0x3f6212[_0xc4d7('0x2b')];if(_0xad530a['query'][_0xc4d7('0x39')]){_0x1d6cf7[_0xc4d7('0x3a')]=[{'all':!![]}];}_0x1d6cf7=_[_0xc4d7('0x36')]({},_0x1d6cf7,_0xad530a[_0xc4d7('0x38')]);return db['ZohoField'][_0xc4d7('0x3e')](_0x1d6cf7)['then'](handleEntityNotFound(_0x50746a,null))[_0xc4d7('0x22')](respondWithResult(_0x50746a,null))[_0xc4d7('0x3f')](handleError(_0x50746a,null));};exports[_0xc4d7('0x40')]=function(_0x21e44f,_0x1c92b6){return db[_0xc4d7('0x26')][_0xc4d7('0x40')](_0x21e44f[_0xc4d7('0x41')],{})[_0xc4d7('0x22')](respondWithResult(_0x1c92b6,0xc9))[_0xc4d7('0x3f')](handleError(_0x1c92b6,null));};exports[_0xc4d7('0x42')]=function(_0x152a74,_0x4713a5){if(_0x152a74[_0xc4d7('0x41')]['id']){delete _0x152a74[_0xc4d7('0x41')]['id'];}return db['ZohoField']['find']({'where':{'id':_0x152a74['params']['id']}})['then'](handleEntityNotFound(_0x4713a5,null))[_0xc4d7('0x22')](saveUpdates(_0x152a74[_0xc4d7('0x41')],null))[_0xc4d7('0x22')](respondWithResult(_0x4713a5,null))['catch'](handleError(_0x4713a5,null));};exports[_0xc4d7('0x43')]=function(_0x8b3685,_0x33e780){return db[_0xc4d7('0x26')][_0xc4d7('0x3e')]({'where':{'id':_0x8b3685[_0xc4d7('0x3d')]['id']}})[_0xc4d7('0x22')](handleEntityNotFound(_0x33e780,null))[_0xc4d7('0x22')](removeEntity(_0x33e780,null))[_0xc4d7('0x3f')](handleError(_0x33e780,null));};
\ No newline at end of file
+var _0xdd23=['attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','type','options','include','findAll','params','keys','rawAttributes','merge','find','create','body','catch','update','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','map','ZohoField','fieldName','key','model','query','filters','intersection','fields'];(function(_0x5b756c,_0x3621b6){var _0x2e0952=function(_0xca7707){while(--_0xca7707){_0x5b756c['push'](_0x5b756c['shift']());}};_0x2e0952(++_0x3621b6);}(_0xdd23,0xab));var _0x3dd2=function(_0x1f7191,_0x37bc37){_0x1f7191=_0x1f7191-0x0;var _0x29fd0d=_0xdd23[_0x1f7191];return _0x29fd0d;};'use strict';var emlformat=require(_0x3dd2('0x0'));var rimraf=require(_0x3dd2('0x1'));var zipdir=require(_0x3dd2('0x2'));var jsonpatch=require(_0x3dd2('0x3'));var rp=require('request-promise');var moment=require(_0x3dd2('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3dd2('0x5'));var util=require('util');var path=require(_0x3dd2('0x6'));var sox=require(_0x3dd2('0x7'));var csv=require(_0x3dd2('0x8'));var ejs=require(_0x3dd2('0x9'));var fs=require('fs');var fs_extra=require(_0x3dd2('0xa'));var _=require(_0x3dd2('0xb'));var squel=require(_0x3dd2('0xc'));var crypto=require(_0x3dd2('0xd'));var jsforce=require(_0x3dd2('0xe'));var deskjs=require(_0x3dd2('0xf'));var toCsv=require('to-csv');var querystring=require(_0x3dd2('0x10'));var Papa=require(_0x3dd2('0x11'));var Redis=require(_0x3dd2('0x12'));var authService=require(_0x3dd2('0x13'));var qs=require(_0x3dd2('0x14'));var as=require(_0x3dd2('0x15'));var hardwareService=require(_0x3dd2('0x16'));var logger=require(_0x3dd2('0x17'))(_0x3dd2('0x18'));var utils=require(_0x3dd2('0x19'));var config=require(_0x3dd2('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x3dd2('0x1b'))['db'];function respondWithStatusCode(_0x329ff2,_0x1987d2){_0x1987d2=_0x1987d2||0xcc;return function(_0x16e4f7){if(_0x16e4f7){return _0x329ff2['sendStatus'](_0x1987d2);}return _0x329ff2[_0x3dd2('0x1c')](_0x1987d2)['end']();};}function respondWithResult(_0x50d6f6,_0x2bcf62){_0x2bcf62=_0x2bcf62||0xc8;return function(_0x4078bc){if(_0x4078bc){return _0x50d6f6[_0x3dd2('0x1c')](_0x2bcf62)[_0x3dd2('0x1d')](_0x4078bc);}};}function respondWithFilteredResult(_0x12cf92,_0x1a5be1){return function(_0x37e662){if(_0x37e662){var _0x1e4342=typeof _0x1a5be1[_0x3dd2('0x1e')]===_0x3dd2('0x1f')&&typeof _0x1a5be1[_0x3dd2('0x20')]==='undefined';var _0x3db1c5=_0x37e662[_0x3dd2('0x21')];var _0x2e3b91=_0x1e4342?0x0:_0x1a5be1[_0x3dd2('0x1e')];var _0x586a6=_0x1e4342?_0x37e662[_0x3dd2('0x21')]:_0x1a5be1['offset']+_0x1a5be1[_0x3dd2('0x20')];var _0x3174ec;if(_0x586a6>=_0x3db1c5){_0x586a6=_0x3db1c5;_0x3174ec=0xc8;}else{_0x3174ec=0xce;}_0x12cf92[_0x3dd2('0x1c')](_0x3174ec);return _0x12cf92[_0x3dd2('0x22')]('Content-Range',_0x2e3b91+'-'+_0x586a6+'/'+_0x3db1c5)[_0x3dd2('0x1d')](_0x37e662);}return null;};}function patchUpdates(_0x37156a){return function(_0x8e2525){try{jsonpatch[_0x3dd2('0x23')](_0x8e2525,_0x37156a,!![]);}catch(_0x2d027e){return BPromise[_0x3dd2('0x24')](_0x2d027e);}return _0x8e2525[_0x3dd2('0x25')]();};}function saveUpdates(_0x259fe7,_0x17633a){return function(_0x10d2d6){if(_0x10d2d6){return _0x10d2d6['update'](_0x259fe7)[_0x3dd2('0x26')](function(_0xd54817){return _0xd54817;});}return null;};}function removeEntity(_0x1fdf8e,_0x10c05f){return function(_0xd183b5){if(_0xd183b5){return _0xd183b5[_0x3dd2('0x27')]()[_0x3dd2('0x26')](function(){_0x1fdf8e[_0x3dd2('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39f1d2,_0x4295be){return function(_0x245801){if(!_0x245801){_0x39f1d2[_0x3dd2('0x28')](0x194);}return _0x245801;};}function handleError(_0x3529d1,_0x2ecad7){_0x2ecad7=_0x2ecad7||0x1f4;return function(_0x23ff01){logger[_0x3dd2('0x29')](_0x23ff01[_0x3dd2('0x2a')]);if(_0x23ff01['name']){delete _0x23ff01[_0x3dd2('0x2b')];}_0x3529d1['status'](_0x2ecad7)[_0x3dd2('0x2c')](_0x23ff01);};}exports['index']=function(_0x736ea2,_0x304700){var _0x132ed2={},_0x45624c={},_0x1f91ef={'count':0x0,'rows':[]};var _0x2c4498=_[_0x3dd2('0x2d')](db[_0x3dd2('0x2e')]['rawAttributes'],function(_0xcaa63a){return{'name':_0xcaa63a[_0x3dd2('0x2f')],'type':_0xcaa63a['type'][_0x3dd2('0x30')]};});_0x45624c[_0x3dd2('0x31')]=_['map'](_0x2c4498,'name');_0x45624c[_0x3dd2('0x32')]=_['keys'](_0x736ea2['query']);_0x45624c[_0x3dd2('0x33')]=_[_0x3dd2('0x34')](_0x45624c['model'],_0x45624c[_0x3dd2('0x32')]);_0x132ed2['attributes']=_[_0x3dd2('0x34')](_0x45624c['model'],qs[_0x3dd2('0x35')](_0x736ea2[_0x3dd2('0x32')][_0x3dd2('0x35')]));_0x132ed2[_0x3dd2('0x36')]=_0x132ed2[_0x3dd2('0x36')][_0x3dd2('0x37')]?_0x132ed2['attributes']:_0x45624c['model'];if(!_0x736ea2[_0x3dd2('0x32')][_0x3dd2('0x38')](_0x3dd2('0x39'))){_0x132ed2[_0x3dd2('0x20')]=qs['limit'](_0x736ea2[_0x3dd2('0x32')][_0x3dd2('0x20')]);_0x132ed2['offset']=qs['offset'](_0x736ea2['query'][_0x3dd2('0x1e')]);}_0x132ed2[_0x3dd2('0x3a')]=qs[_0x3dd2('0x3b')](_0x736ea2[_0x3dd2('0x32')][_0x3dd2('0x3b')]);_0x132ed2[_0x3dd2('0x3c')]=qs[_0x3dd2('0x33')](_[_0x3dd2('0x3d')](_0x736ea2[_0x3dd2('0x32')],_0x45624c['filters']),_0x2c4498);if(_0x736ea2[_0x3dd2('0x32')]['filter']){_0x132ed2[_0x3dd2('0x3c')]=_['merge'](_0x132ed2['where'],{'$or':_[_0x3dd2('0x2d')](_0x2c4498,function(_0x382b6a){if(_0x382b6a[_0x3dd2('0x3e')]!=='VIRTUAL'){var _0x282db2={};_0x282db2[_0x382b6a[_0x3dd2('0x2b')]]={'$like':'%'+_0x736ea2[_0x3dd2('0x32')]['filter']+'%'};return _0x282db2;}})});}_0x132ed2=_['merge']({},_0x132ed2,_0x736ea2[_0x3dd2('0x3f')]);var _0x2d9f8a={'where':_0x132ed2[_0x3dd2('0x3c')]};return db[_0x3dd2('0x2e')][_0x3dd2('0x21')](_0x2d9f8a)['then'](function(_0x2d90b8){_0x1f91ef['count']=_0x2d90b8;if(_0x736ea2[_0x3dd2('0x32')]['includeAll']){_0x132ed2[_0x3dd2('0x40')]=[{'all':!![]}];}return db[_0x3dd2('0x2e')][_0x3dd2('0x41')](_0x132ed2);})['then'](function(_0x22e8fe){_0x1f91ef['rows']=_0x22e8fe;return _0x1f91ef;})[_0x3dd2('0x26')](respondWithFilteredResult(_0x304700,_0x132ed2))['catch'](handleError(_0x304700,null));};exports['show']=function(_0x40cc4e,_0x228501){var _0x186410={'raw':!![],'where':{'id':_0x40cc4e[_0x3dd2('0x42')]['id']}},_0x93ec79={};_0x93ec79[_0x3dd2('0x31')]=_[_0x3dd2('0x43')](db[_0x3dd2('0x2e')][_0x3dd2('0x44')]);_0x93ec79['query']=_[_0x3dd2('0x43')](_0x40cc4e[_0x3dd2('0x32')]);_0x93ec79[_0x3dd2('0x33')]=_[_0x3dd2('0x34')](_0x93ec79[_0x3dd2('0x31')],_0x93ec79[_0x3dd2('0x32')]);_0x186410[_0x3dd2('0x36')]=_[_0x3dd2('0x34')](_0x93ec79['model'],qs[_0x3dd2('0x35')](_0x40cc4e[_0x3dd2('0x32')]['fields']));_0x186410['attributes']=_0x186410[_0x3dd2('0x36')]['length']?_0x186410['attributes']:_0x93ec79[_0x3dd2('0x31')];if(_0x40cc4e[_0x3dd2('0x32')]['includeAll']){_0x186410[_0x3dd2('0x40')]=[{'all':!![]}];}_0x186410=_[_0x3dd2('0x45')]({},_0x186410,_0x40cc4e[_0x3dd2('0x3f')]);return db[_0x3dd2('0x2e')][_0x3dd2('0x46')](_0x186410)[_0x3dd2('0x26')](handleEntityNotFound(_0x228501,null))['then'](respondWithResult(_0x228501,null))['catch'](handleError(_0x228501,null));};exports[_0x3dd2('0x47')]=function(_0x281c72,_0x3aeec4){return db['ZohoField']['create'](_0x281c72[_0x3dd2('0x48')],{})[_0x3dd2('0x26')](respondWithResult(_0x3aeec4,0xc9))[_0x3dd2('0x49')](handleError(_0x3aeec4,null));};exports[_0x3dd2('0x4a')]=function(_0xeeabf4,_0x2f2dca){if(_0xeeabf4[_0x3dd2('0x48')]['id']){delete _0xeeabf4[_0x3dd2('0x48')]['id'];}return db[_0x3dd2('0x2e')][_0x3dd2('0x46')]({'where':{'id':_0xeeabf4[_0x3dd2('0x42')]['id']}})[_0x3dd2('0x26')](handleEntityNotFound(_0x2f2dca,null))[_0x3dd2('0x26')](saveUpdates(_0xeeabf4[_0x3dd2('0x48')],null))['then'](respondWithResult(_0x2f2dca,null))['catch'](handleError(_0x2f2dca,null));};exports[_0x3dd2('0x27')]=function(_0x2a2151,_0x48438b){return db['ZohoField'][_0x3dd2('0x46')]({'where':{'id':_0x2a2151[_0x3dd2('0x42')]['id']}})[_0x3dd2('0x26')](handleEntityNotFound(_0x48438b,null))[_0x3dd2('0x26')](removeEntity(_0x48438b,null))[_0x3dd2('0x49')](handleError(_0x48438b,null));};
\ No newline at end of file
index c169511..3372d3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781d=['rimraf','../../config/environment','./intZohoField.attributes','exports','ZohoField','int_zoho_fields','zoho_unique_index','idField','lodash','util','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x781d,0x14a));var _0xd781=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x781d[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0xd781('0x0'));var util=require(_0xd781('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd781('0x2'));var BPromise=require(_0xd781('0x3'));var rp=require(_0xd781('0x4'));var fs=require('fs');var path=require(_0xd781('0x5'));var rimraf=require(_0xd781('0x6'));var config=require(_0xd781('0x7'));var attributes=require(_0xd781('0x8'));module[_0xd781('0x9')]=function(_0x830b,_0x2f98ee){return _0x830b['define'](_0xd781('0xa'),attributes,{'tableName':_0xd781('0xb'),'paranoid':![],'indexes':[{'name':_0xd781('0xc'),'fields':[_0xd781('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xafc4=['bluebird','request-promise','path','exports','define','ZohoField','int_zoho_fields','idField','FieldId','lodash','../../config/logger','moment'];(function(_0x408176,_0x3a78fd){var _0x1b6952=function(_0x962551){while(--_0x962551){_0x408176['push'](_0x408176['shift']());}};_0x1b6952(++_0x3a78fd);}(_0xafc4,0x69));var _0x4afc=function(_0x5909ef,_0x5ef8bc){_0x5909ef=_0x5909ef-0x0;var _0x5b5908=_0xafc4[_0x5909ef];return _0x5b5908;};'use strict';var _=require(_0x4afc('0x0'));var util=require('util');var logger=require(_0x4afc('0x1'))('api');var moment=require(_0x4afc('0x2'));var BPromise=require(_0x4afc('0x3'));var rp=require(_0x4afc('0x4'));var fs=require('fs');var path=require(_0x4afc('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intZohoField.attributes');module[_0x4afc('0x6')]=function(_0x471d45,_0x16953b){return _0x471d45[_0x4afc('0x7')](_0x4afc('0x8'),attributes,{'tableName':_0x4afc('0x9'),'paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':[_0x4afc('0xa'),_0x4afc('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b49dbfe..d4dfcef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1558=['request','then','info','ZohoField,\x20%s,\x20%s','debug','ZohoField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x5a55ad,_0x97d3){var _0x123672=function(_0x1eccc2){while(--_0x1eccc2){_0x5a55ad['push'](_0x5a55ad['shift']());}};_0x123672(++_0x97d3);}(_0x1558,0x13f));var _0x8155=function(_0x2a55f8,_0x540ac4){_0x2a55f8=_0x2a55f8-0x0;var _0x245efd=_0x1558[_0x2a55f8];return _0x245efd;};'use strict';var _=require(_0x8155('0x0'));var util=require(_0x8155('0x1'));var moment=require(_0x8155('0x2'));var BPromise=require('bluebird');var rs=require(_0x8155('0x3'));var fs=require('fs');var Redis=require(_0x8155('0x4'));var db=require(_0x8155('0x5'))['db'];var utils=require(_0x8155('0x6'));var logger=require(_0x8155('0x7'))(_0x8155('0x8'));var config=require(_0x8155('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8155('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2766d1,_0x2a131c,_0x3c36b8){return new BPromise(function(_0x2af661,_0x49a3a2){return client[_0x8155('0xb')](_0x2766d1,_0x3c36b8)[_0x8155('0xc')](function(_0x4a6caf){logger[_0x8155('0xd')](_0x8155('0xe'),_0x2a131c,'request\x20sent');logger[_0x8155('0xf')](_0x8155('0x10'),_0x2a131c,_0x8155('0x11'),JSON['stringify'](_0x4a6caf));if(_0x4a6caf[_0x8155('0x12')]){if(_0x4a6caf[_0x8155('0x12')][_0x8155('0x13')]===0x1f4){logger[_0x8155('0x12')]('ZohoField,\x20%s,\x20%s',_0x2a131c,_0x4a6caf['error'][_0x8155('0x14')]);return _0x49a3a2(_0x4a6caf['error'][_0x8155('0x14')]);}logger[_0x8155('0x12')](_0x8155('0xe'),_0x2a131c,_0x4a6caf[_0x8155('0x12')][_0x8155('0x14')]);return _0x2af661(_0x4a6caf[_0x8155('0x12')]['message']);}else{logger[_0x8155('0xd')](_0x8155('0xe'),_0x2a131c,_0x8155('0x11'));_0x2af661(_0x4a6caf['result'][_0x8155('0x14')]);}})[_0x8155('0x15')](function(_0x146084){logger[_0x8155('0x12')](_0x8155('0xe'),_0x2a131c,_0x146084);_0x49a3a2(_0x146084);});});}
\ No newline at end of file
+var _0x5adc=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','../../mysqldb'];(function(_0x3f3f26,_0x48c796){var _0x1a984e=function(_0x462ff4){while(--_0x462ff4){_0x3f3f26['push'](_0x3f3f26['shift']());}};_0x1a984e(++_0x48c796);}(_0x5adc,0x164));var _0xc5ad=function(_0x5b810e,_0x2b909b){_0x5b810e=_0x5b810e-0x0;var _0x3a9f78=_0x5adc[_0x5b810e];return _0x3a9f78;};'use strict';var _=require(_0xc5ad('0x0'));var util=require(_0xc5ad('0x1'));var moment=require(_0xc5ad('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc5ad('0x3'))['db'];var utils=require(_0xc5ad('0x4'));var logger=require(_0xc5ad('0x5'))(_0xc5ad('0x6'));var config=require(_0xc5ad('0x7'));var jayson=require(_0xc5ad('0x8'));var client=jayson['client'][_0xc5ad('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ce128,_0x52e62d,_0x56c814){return new BPromise(function(_0x70ee82,_0x401e87){return client['request'](_0x2ce128,_0x56c814)[_0xc5ad('0xa')](function(_0x1e8119){logger[_0xc5ad('0xb')](_0xc5ad('0xc'),_0x52e62d,_0xc5ad('0xd'));logger[_0xc5ad('0xe')](_0xc5ad('0xf'),_0x52e62d,_0xc5ad('0xd'),JSON[_0xc5ad('0x10')](_0x1e8119));if(_0x1e8119['error']){if(_0x1e8119[_0xc5ad('0x11')]['code']===0x1f4){logger[_0xc5ad('0x11')](_0xc5ad('0xc'),_0x52e62d,_0x1e8119[_0xc5ad('0x11')][_0xc5ad('0x12')]);return _0x401e87(_0x1e8119[_0xc5ad('0x11')][_0xc5ad('0x12')]);}logger[_0xc5ad('0x11')](_0xc5ad('0xc'),_0x52e62d,_0x1e8119[_0xc5ad('0x11')][_0xc5ad('0x12')]);return _0x70ee82(_0x1e8119['error'][_0xc5ad('0x12')]);}else{logger[_0xc5ad('0xb')](_0xc5ad('0xc'),_0x52e62d,_0xc5ad('0xd'));_0x70ee82(_0x1e8119[_0xc5ad('0x13')][_0xc5ad('0x12')]);}})['catch'](function(_0x4a4c16){logger[_0xc5ad('0x11')](_0xc5ad('0xc'),_0x52e62d,_0x4a4c16);_0x401e87(_0x4a4c16);});});}
\ No newline at end of file
index 80b0e52..71563b6 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(_0x1bd6ab,_0x588ae1){var _0x2567dc=function(_0x4c2585){while(--_0x4c2585){_0x1bd6ab['push'](_0x1bd6ab['shift']());}};_0x2567dc(++_0x588ae1);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x87f1d3,_0x3901a6){var _0x448a2a=function(_0x4ac0d5){while(--_0x4ac0d5){_0x87f1d3['push'](_0x87f1d3['shift']());}};_0x448a2a(++_0x3901a6);}(_0xedd9,0xfc));var _0x9edd=function(_0x3028a1,_0x3963d2){_0x3028a1=_0x3028a1-0x0;var _0x25cc0b=_0xedd9[_0x3028a1];return _0x25cc0b;};'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 5f9078c..20c1af2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9ff=['sequelize','STRING','unique_name_and_version','BOOLEAN','state'];(function(_0x249fed,_0x12e915){var _0x3bbf75=function(_0x40f660){while(--_0x40f660){_0x249fed['push'](_0x249fed['shift']());}};_0x3bbf75(++_0x12e915);}(_0xf9ff,0x15e));var _0xff9f=function(_0x11ca63,_0xea9f9c){_0x11ca63=_0x11ca63-0x0;var _0x41f1f6=_0xf9ff[_0x11ca63];return _0x41f1f6;};'use strict';var Sequelize=require(_0xff9f('0x0'));module['exports']={'name':{'type':Sequelize[_0xff9f('0x1')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xff9f('0x2')},'main':{'type':Sequelize[_0xff9f('0x1')],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0xff9f('0x1')]},'path':{'type':Sequelize[_0xff9f('0x1')]},'type':{'type':Sequelize[_0xff9f('0x1')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0xff9f('0x3')],'defaultValue':![]},'author':{'type':Sequelize[_0xff9f('0x1')]},'logo':{'type':Sequelize[_0xff9f('0x1')]},'state':{'type':Sequelize[_0xff9f('0x1')],'unique':_0xff9f('0x4')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize[_0xff9f('0x1')]},'remoteUri':{'type':Sequelize[_0xff9f('0x1')]},'link':{'type':Sequelize[_0xff9f('0x1')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x2334=['unique_name_and_version','app.js','BOOLEAN','state','exports','STRING'];(function(_0x45cf76,_0x5789fa){var _0x57d6ce=function(_0x21bbf5){while(--_0x21bbf5){_0x45cf76['push'](_0x45cf76['shift']());}};_0x57d6ce(++_0x5789fa);}(_0x2334,0x6a));var _0x4233=function(_0x3d7365,_0x13ccfb){_0x3d7365=_0x3d7365-0x0;var _0x3d96ac=_0x2334[_0x3d7365];return _0x3d96ac;};'use strict';var Sequelize=require('sequelize');module[_0x4233('0x0')]={'name':{'type':Sequelize[_0x4233('0x1')],'allowNull':![],'unique':_0x4233('0x2')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x4233('0x2')},'main':{'type':Sequelize[_0x4233('0x1')],'defaultValue':_0x4233('0x3')},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize[_0x4233('0x1')]},'type':{'type':Sequelize[_0x4233('0x1')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x4233('0x4')],'defaultValue':![]},'author':{'type':Sequelize[_0x4233('0x1')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0x4233('0x1')],'unique':_0x4233('0x5')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x4233('0x1')]},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
index d1e21ee..2fad73d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['path','sox','to-csv','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','fieldName','type','keys','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','sort','pick','filter','where','map','VIRTUAL','options','Integration','count','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x35ac20,_0x4f1179){var _0x3f8a29=function(_0x57ebca){while(--_0x57ebca){_0x35ac20['push'](_0x35ac20['shift']());}};_0x3f8a29(++_0x4f1179);}(_0x4975,0x86));var _0x5497=function(_0x4fe4da,_0x101547){_0x4fe4da=_0x4fe4da-0x0;var _0x32c10a=_0x4975[_0x4fe4da];return _0x32c10a;};'use strict';var emlformat=require(_0x5497('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5497('0x1'));var jsonpatch=require(_0x5497('0x2'));var rp=require(_0x5497('0x3'));var moment=require(_0x5497('0x4'));var BPromise=require(_0x5497('0x5'));var Mustache=require(_0x5497('0x6'));var util=require(_0x5497('0x7'));var path=require(_0x5497('0x8'));var sox=require(_0x5497('0x9'));var csv=require(_0x5497('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5497('0xb'));var _=require('lodash');var squel=require(_0x5497('0xc'));var crypto=require(_0x5497('0xd'));var jsforce=require(_0x5497('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x5497('0xa'));var querystring=require('querystring');var Papa=require(_0x5497('0xf'));var Redis=require(_0x5497('0x10'));var authService=require(_0x5497('0x11'));var qs=require(_0x5497('0x12'));var as=require(_0x5497('0x13'));var hardwareService=require(_0x5497('0x14'));var logger=require(_0x5497('0x15'))(_0x5497('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5497('0x17'))['db'];function respondWithStatusCode(_0x1b23df,_0x1bb794){_0x1bb794=_0x1bb794||0xcc;return function(_0x984990){if(_0x984990){return _0x1b23df[_0x5497('0x18')](_0x1bb794);}return _0x1b23df[_0x5497('0x19')](_0x1bb794)[_0x5497('0x1a')]();};}function respondWithResult(_0xaca97d,_0x363a5b){_0x363a5b=_0x363a5b||0xc8;return function(_0x1a4c74){if(_0x1a4c74){return _0xaca97d['status'](_0x363a5b)[_0x5497('0x1b')](_0x1a4c74);}};}function respondWithFilteredResult(_0x4fb8e9,_0x4237a9){return function(_0x2bfd8a){if(_0x2bfd8a){var _0x19e5f3=typeof _0x4237a9[_0x5497('0x1c')]===_0x5497('0x1d')&&typeof _0x4237a9[_0x5497('0x1e')]===_0x5497('0x1d');var _0x575f6b=_0x2bfd8a['count'];var _0x3f4d20=_0x19e5f3?0x0:_0x4237a9[_0x5497('0x1c')];var _0x3a47fd=_0x19e5f3?_0x2bfd8a['count']:_0x4237a9[_0x5497('0x1c')]+_0x4237a9[_0x5497('0x1e')];var _0x18e8a8;if(_0x3a47fd>=_0x575f6b){_0x3a47fd=_0x575f6b;_0x18e8a8=0xc8;}else{_0x18e8a8=0xce;}_0x4fb8e9[_0x5497('0x19')](_0x18e8a8);return _0x4fb8e9[_0x5497('0x1f')](_0x5497('0x20'),_0x3f4d20+'-'+_0x3a47fd+'/'+_0x575f6b)[_0x5497('0x1b')](_0x2bfd8a);}return null;};}function patchUpdates(_0x10226f){return function(_0x2e3960){try{jsonpatch[_0x5497('0x21')](_0x2e3960,_0x10226f,!![]);}catch(_0x186065){return BPromise['reject'](_0x186065);}return _0x2e3960[_0x5497('0x22')]();};}function saveUpdates(_0x4d1b27,_0x19200a){return function(_0xd0868d){if(_0xd0868d){return _0xd0868d[_0x5497('0x23')](_0x4d1b27)[_0x5497('0x24')](function(_0x35ecd9){return _0x35ecd9;});}return null;};}function removeEntity(_0x3b2fbc,_0x5018fa){return function(_0x54043a){if(_0x54043a){return _0x54043a[_0x5497('0x25')]()[_0x5497('0x24')](function(){_0x3b2fbc[_0x5497('0x19')](0xcc)[_0x5497('0x1a')]();});}};}function handleEntityNotFound(_0x5223b5,_0x13b7a4){return function(_0x57268c){if(!_0x57268c){_0x5223b5[_0x5497('0x18')](0x194);}return _0x57268c;};}function handleError(_0x16a2b4,_0x429d36){_0x429d36=_0x429d36||0x1f4;return function(_0x34a1a5){logger[_0x5497('0x26')](_0x34a1a5[_0x5497('0x27')]);if(_0x34a1a5['name']){delete _0x34a1a5[_0x5497('0x28')];}_0x16a2b4['status'](_0x429d36)['send'](_0x34a1a5);};}exports['index']=function(_0x39a2b7,_0x48d146){var _0x5e9356={},_0xc3465={},_0xb14593={'count':0x0,'rows':[]};var _0x1cf908=_['map'](db['Integration']['rawAttributes'],function(_0x371874){return{'name':_0x371874[_0x5497('0x29')],'type':_0x371874[_0x5497('0x2a')]['key']};});_0xc3465['model']=_['map'](_0x1cf908,_0x5497('0x28'));_0xc3465['query']=_[_0x5497('0x2b')](_0x39a2b7[_0x5497('0x2c')]);_0xc3465[_0x5497('0x2d')]=_['intersection'](_0xc3465[_0x5497('0x2e')],_0xc3465[_0x5497('0x2c')]);_0x5e9356['attributes']=_[_0x5497('0x2f')](_0xc3465[_0x5497('0x2e')],qs[_0x5497('0x30')](_0x39a2b7['query'][_0x5497('0x30')]));_0x5e9356[_0x5497('0x31')]=_0x5e9356[_0x5497('0x31')][_0x5497('0x32')]?_0x5e9356[_0x5497('0x31')]:_0xc3465['model'];if(!_0x39a2b7[_0x5497('0x2c')][_0x5497('0x33')]('nolimit')){_0x5e9356[_0x5497('0x1e')]=qs[_0x5497('0x1e')](_0x39a2b7[_0x5497('0x2c')][_0x5497('0x1e')]);_0x5e9356[_0x5497('0x1c')]=qs[_0x5497('0x1c')](_0x39a2b7['query'][_0x5497('0x1c')]);}_0x5e9356['order']=qs[_0x5497('0x34')](_0x39a2b7[_0x5497('0x2c')][_0x5497('0x34')]);_0x5e9356['where']=qs['filters'](_[_0x5497('0x35')](_0x39a2b7[_0x5497('0x2c')],_0xc3465[_0x5497('0x2d')]),_0x1cf908);if(_0x39a2b7[_0x5497('0x2c')][_0x5497('0x36')]){_0x5e9356[_0x5497('0x37')]=_['merge'](_0x5e9356[_0x5497('0x37')],{'$or':_[_0x5497('0x38')](_0x1cf908,function(_0x3de8fe){if(_0x3de8fe[_0x5497('0x2a')]!==_0x5497('0x39')){var _0x468902={};_0x468902[_0x3de8fe[_0x5497('0x28')]]={'$like':'%'+_0x39a2b7[_0x5497('0x2c')][_0x5497('0x36')]+'%'};return _0x468902;}})});}_0x5e9356=_['merge']({},_0x5e9356,_0x39a2b7[_0x5497('0x3a')]);var _0x32fa2b={'where':_0x5e9356[_0x5497('0x37')]};return db[_0x5497('0x3b')][_0x5497('0x3c')](_0x32fa2b)[_0x5497('0x24')](function(_0x4299be){_0xb14593['count']=_0x4299be;if(_0x39a2b7[_0x5497('0x2c')][_0x5497('0x3d')]){_0x5e9356[_0x5497('0x3e')]=[{'all':!![]}];}return db[_0x5497('0x3b')][_0x5497('0x3f')](_0x5e9356);})[_0x5497('0x24')](function(_0x114471){_0xb14593['rows']=_0x114471;return _0xb14593;})[_0x5497('0x24')](respondWithFilteredResult(_0x48d146,_0x5e9356))[_0x5497('0x40')](handleError(_0x48d146,null));};exports[_0x5497('0x41')]=function(_0x1e6389,_0x20e947){var _0xd90608={'raw':![],'where':{'id':_0x1e6389[_0x5497('0x42')]['id']}},_0xc1a999={};_0xc1a999[_0x5497('0x2e')]=_[_0x5497('0x2b')](db['Integration'][_0x5497('0x43')]);_0xc1a999['query']=_[_0x5497('0x2b')](_0x1e6389[_0x5497('0x2c')]);_0xc1a999[_0x5497('0x2d')]=_[_0x5497('0x2f')](_0xc1a999[_0x5497('0x2e')],_0xc1a999['query']);_0xd90608[_0x5497('0x31')]=_[_0x5497('0x2f')](_0xc1a999['model'],qs[_0x5497('0x30')](_0x1e6389['query'][_0x5497('0x30')]));_0xd90608['attributes']=_0xd90608[_0x5497('0x31')][_0x5497('0x32')]?_0xd90608[_0x5497('0x31')]:_0xc1a999[_0x5497('0x2e')];if(_0x1e6389[_0x5497('0x2c')]['includeAll']){_0xd90608['include']=[{'all':!![]}];}_0xd90608=_['merge']({},_0xd90608,_0x1e6389['options']);return db[_0x5497('0x3b')][_0x5497('0x44')](_0xd90608)[_0x5497('0x24')](handleEntityNotFound(_0x20e947,null))[_0x5497('0x24')](respondWithResult(_0x20e947,null))[_0x5497('0x40')](handleError(_0x20e947,null));};exports[_0x5497('0x45')]=function(_0xc78abe,_0x466287){return db[_0x5497('0x3b')]['create'](_0xc78abe[_0x5497('0x46')],{})[_0x5497('0x24')](respondWithResult(_0x466287,0xc9))[_0x5497('0x40')](handleError(_0x466287,null));};exports['update']=function(_0x3e4da2,_0x530475){if(_0x3e4da2[_0x5497('0x46')]['id']){delete _0x3e4da2[_0x5497('0x46')]['id'];}return db[_0x5497('0x3b')]['find']({'where':{'id':_0x3e4da2[_0x5497('0x42')]['id']}})[_0x5497('0x24')](handleEntityNotFound(_0x530475,null))['then'](saveUpdates(_0x3e4da2[_0x5497('0x46')],null))['then'](respondWithResult(_0x530475,null))[_0x5497('0x40')](handleError(_0x530475,null));};exports['destroy']=function(_0x416f76,_0x400860){return db[_0x5497('0x3b')][_0x5497('0x44')]({'where':{'id':_0x416f76[_0x5497('0x42')]['id']}})[_0x5497('0x24')](handleEntityNotFound(_0x400860,null))[_0x5497('0x24')](removeEntity(_0x400860,null))[_0x5497('0x40')](handleError(_0x400860,null));};
\ No newline at end of file
+var _0x1967=['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','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','Integration','includeAll','include','findAll','rows','show','params','fields','options','find','catch','create','body','destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path'];(function(_0x4cf0b7,_0x560029){var _0x545f10=function(_0x993533){while(--_0x993533){_0x4cf0b7['push'](_0x4cf0b7['shift']());}};_0x545f10(++_0x560029);}(_0x1967,0x173));var _0x7196=function(_0x47cdee,_0x50c769){_0x47cdee=_0x47cdee-0x0;var _0x6d4cd1=_0x1967[_0x47cdee];return _0x6d4cd1;};'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['Integration'][_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['create']=function(_0x29c7e8,_0x582884){return db['Integration'][_0x7196('0x49')](_0x29c7e8['body'],{})['then'](respondWithResult(_0x582884,0xc9))['catch'](handleError(_0x582884,null));};exports[_0x7196('0x26')]=function(_0x5052ee,_0x48e3b5){if(_0x5052ee[_0x7196('0x4a')]['id']){delete _0x5052ee[_0x7196('0x4a')]['id'];}return db[_0x7196('0x3e')][_0x7196('0x47')]({'where':{'id':_0x5052ee['params']['id']}})[_0x7196('0x27')](handleEntityNotFound(_0x48e3b5,null))['then'](saveUpdates(_0x5052ee[_0x7196('0x4a')],null))[_0x7196('0x27')](respondWithResult(_0x48e3b5,null))['catch'](handleError(_0x48e3b5,null));};exports[_0x7196('0x4b')]=function(_0x2fd056,_0x3fe092){return db['Integration'][_0x7196('0x47')]({'where':{'id':_0x2fd056['params']['id']}})[_0x7196('0x27')](handleEntityNotFound(_0x3fe092,null))[_0x7196('0x27')](removeEntity(_0x3fe092,null))[_0x7196('0x48')](handleError(_0x3fe092,null));};
\ No newline at end of file
index 8542312..b84952d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91f6=['lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./integration.attributes','define','Integration'];(function(_0x4bd06e,_0x593701){var _0x85ebb=function(_0x26a7f2){while(--_0x26a7f2){_0x4bd06e['push'](_0x4bd06e['shift']());}};_0x85ebb(++_0x593701);}(_0x91f6,0x160));var _0x691f=function(_0x265909,_0x37e0ff){_0x265909=_0x265909-0x0;var _0x11ef75=_0x91f6[_0x265909];return _0x11ef75;};'use strict';var _=require(_0x691f('0x0'));var util=require(_0x691f('0x1'));var logger=require(_0x691f('0x2'))('api');var moment=require(_0x691f('0x3'));var BPromise=require(_0x691f('0x4'));var rp=require(_0x691f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x691f('0x6'));var config=require(_0x691f('0x7'));var attributes=require(_0x691f('0x8'));module['exports']=function(_0x44d78a,_0x4b17c1){return _0x44d78a[_0x691f('0x9')](_0x691f('0xa'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x05ac=['rimraf','../../config/environment','./integration.attributes','exports','define','Integration','integrations','util','../../config/logger','api','bluebird','path'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x05ac,0x1c3));var _0xc05a=function(_0x4ad445,_0x1ea4e4){_0x4ad445=_0x4ad445-0x0;var _0x98b54b=_0x05ac[_0x4ad445];return _0x98b54b;};'use strict';var _=require('lodash');var util=require(_0xc05a('0x0'));var logger=require(_0xc05a('0x1'))(_0xc05a('0x2'));var moment=require('moment');var BPromise=require(_0xc05a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc05a('0x4'));var rimraf=require(_0xc05a('0x5'));var config=require(_0xc05a('0x6'));var attributes=require(_0xc05a('0x7'));module[_0xc05a('0x8')]=function(_0x1f7ab0,_0x16ac3e){return _0x1f7ab0[_0xc05a('0x9')](_0xc05a('0xa'),attributes,{'tableName':_0xc05a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4158184..cef4571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Integration,\x20%s,\x20%s','message','catch','lodash'];(function(_0xbbeb5c,_0x5062cd){var _0x4eea15=function(_0xa7c682){while(--_0xa7c682){_0xbbeb5c['push'](_0xbbeb5c['shift']());}};_0x4eea15(++_0x5062cd);}(_0x66fa,0x117));var _0xa66f=function(_0x939efa,_0x20fe7d){_0x939efa=_0x939efa-0x0;var _0x2b3a6f=_0x66fa[_0x939efa];return _0x2b3a6f;};'use strict';var _=require(_0xa66f('0x0'));var util=require(_0xa66f('0x1'));var moment=require('moment');var BPromise=require(_0xa66f('0x2'));var rs=require(_0xa66f('0x3'));var fs=require('fs');var Redis=require(_0xa66f('0x4'));var db=require(_0xa66f('0x5'))['db'];var utils=require(_0xa66f('0x6'));var logger=require(_0xa66f('0x7'))(_0xa66f('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa66f('0x9')][_0xa66f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f0b78,_0x1d02fc,_0x38b58b){return new BPromise(function(_0x5096bf,_0x39c1ef){return client['request'](_0x2f0b78,_0x38b58b)[_0xa66f('0xb')](function(_0x597c7c){logger[_0xa66f('0xc')]('Integration,\x20%s,\x20%s',_0x1d02fc,'request\x20sent');logger['debug'](_0xa66f('0xd'),_0x1d02fc,_0xa66f('0xe'),JSON['stringify'](_0x597c7c));if(_0x597c7c[_0xa66f('0xf')]){if(_0x597c7c['error'][_0xa66f('0x10')]===0x1f4){logger['error'](_0xa66f('0x11'),_0x1d02fc,_0x597c7c[_0xa66f('0xf')][_0xa66f('0x12')]);return _0x39c1ef(_0x597c7c['error']['message']);}logger[_0xa66f('0xf')]('Integration,\x20%s,\x20%s',_0x1d02fc,_0x597c7c['error']['message']);return _0x5096bf(_0x597c7c[_0xa66f('0xf')][_0xa66f('0x12')]);}else{logger[_0xa66f('0xc')](_0xa66f('0x11'),_0x1d02fc,_0xa66f('0xe'));_0x5096bf(_0x597c7c['result']['message']);}})[_0xa66f('0x13')](function(_0x32d338){logger[_0xa66f('0xf')](_0xa66f('0x11'),_0x1d02fc,_0x32d338);_0x39c1ef(_0x32d338);});});}
\ No newline at end of file
+var _0xd943=['info','request\x20sent','Integration,\x20%s,\x20%s,\x20%s','error','code','Integration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','then'];(function(_0x48e359,_0x4ce2b8){var _0x1ece43=function(_0x542fa4){while(--_0x542fa4){_0x48e359['push'](_0x48e359['shift']());}};_0x1ece43(++_0x4ce2b8);}(_0xd943,0x15d));var _0x3d94=function(_0x2d73fb,_0x432d88){_0x2d73fb=_0x2d73fb-0x0;var _0x5a0b58=_0xd943[_0x2d73fb];return _0x5a0b58;};'use strict';var _=require(_0x3d94('0x0'));var util=require(_0x3d94('0x1'));var moment=require(_0x3d94('0x2'));var BPromise=require(_0x3d94('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3d94('0x4'));var db=require(_0x3d94('0x5'))['db'];var utils=require(_0x3d94('0x6'));var logger=require(_0x3d94('0x7'))(_0x3d94('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3d94('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x54e81f,_0x4d29e7,_0x20f4d1){return new BPromise(function(_0x35d36a,_0x5244c3){return client['request'](_0x54e81f,_0x20f4d1)[_0x3d94('0xa')](function(_0x27e381){logger[_0x3d94('0xb')]('Integration,\x20%s,\x20%s',_0x4d29e7,_0x3d94('0xc'));logger['debug'](_0x3d94('0xd'),_0x4d29e7,_0x3d94('0xc'),JSON['stringify'](_0x27e381));if(_0x27e381[_0x3d94('0xe')]){if(_0x27e381[_0x3d94('0xe')][_0x3d94('0xf')]===0x1f4){logger[_0x3d94('0xe')](_0x3d94('0x10'),_0x4d29e7,_0x27e381['error'][_0x3d94('0x11')]);return _0x5244c3(_0x27e381[_0x3d94('0xe')][_0x3d94('0x11')]);}logger['error'](_0x3d94('0x10'),_0x4d29e7,_0x27e381[_0x3d94('0xe')][_0x3d94('0x11')]);return _0x35d36a(_0x27e381['error'][_0x3d94('0x11')]);}else{logger[_0x3d94('0xb')](_0x3d94('0x10'),_0x4d29e7,_0x3d94('0xc'));_0x35d36a(_0x27e381[_0x3d94('0x12')][_0x3d94('0x11')]);}})[_0x3d94('0x13')](function(_0x9893cb){logger['error'](_0x3d94('0x10'),_0x4d29e7,_0x9893cb);_0x5244c3(_0x9893cb);});});}
\ No newline at end of file
index 0a1f464..feb493e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['create','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','index','get','isAuthenticated','describe','/:id','post'];(function(_0x29420f,_0x1ef6dc){var _0x12131f=function(_0x1ed9cf){while(--_0x1ed9cf){_0x29420f['push'](_0x29420f['shift']());}};_0x12131f(++_0x1ef6dc);}(_0x1261,0x144));var _0x1126=function(_0x498d4f,_0x6e928e){_0x498d4f=_0x498d4f-0x0;var _0x1c81a8=_0x1261[_0x498d4f];return _0x1c81a8;};'use strict';var multer=require('multer');var util=require(_0x1126('0x0'));var path=require(_0x1126('0x1'));var timeout=require(_0x1126('0x2'));var express=require(_0x1126('0x3'));var router=express[_0x1126('0x4')]();var fs_extra=require(_0x1126('0x5'));var auth=require(_0x1126('0x6'));var interaction=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var controller=require(_0x1126('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x1126('0xa')]);router[_0x1126('0xb')]('/describe',auth[_0x1126('0xc')](),controller[_0x1126('0xd')]);router[_0x1126('0xb')](_0x1126('0xe'),auth[_0x1126('0xc')](),controller['show']);router[_0x1126('0xf')]('/',auth[_0x1126('0xc')](),controller[_0x1126('0x10')]);router['put'](_0x1126('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x1126('0x11')]('/:id',auth[_0x1126('0xc')](),controller[_0x1126('0x12')]);module[_0x1126('0x13')]=router;
\ No newline at end of file
+var _0xd943=['show','post','create','/:id','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','describe'];(function(_0x3b3f4f,_0x403216){var _0x174dbe=function(_0x30e333){while(--_0x30e333){_0x3b3f4f['push'](_0x3b3f4f['shift']());}};_0x174dbe(++_0x403216);}(_0xd943,0x15d));var _0x3d94=function(_0x52134a,_0x102928){_0x52134a=_0x52134a-0x0;var _0x4b93bf=_0xd943[_0x52134a];return _0x4b93bf;};'use strict';var multer=require(_0x3d94('0x0'));var util=require(_0x3d94('0x1'));var path=require(_0x3d94('0x2'));var timeout=require(_0x3d94('0x3'));var express=require('express');var router=express[_0x3d94('0x4')]();var fs_extra=require(_0x3d94('0x5'));var auth=require(_0x3d94('0x6'));var interaction=require(_0x3d94('0x7'));var config=require(_0x3d94('0x8'));var controller=require('./integrationReport.controller');router['get']('/',auth[_0x3d94('0x9')](),controller['index']);router['get']('/describe',auth[_0x3d94('0x9')](),controller[_0x3d94('0xa')]);router['get']('/:id',auth[_0x3d94('0x9')](),controller[_0x3d94('0xb')]);router[_0x3d94('0xc')]('/',auth['isAuthenticated'](),controller[_0x3d94('0xd')]);router['put'](_0x3d94('0xe'),auth[_0x3d94('0x9')](),controller['update']);router[_0x3d94('0xf')](_0x3d94('0xe'),auth[_0x3d94('0x9')](),controller[_0x3d94('0x10')]);module[_0x3d94('0x11')]=router;
\ No newline at end of file
index 34550ca..c35d452 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdb0=['BOOLEAN','TEXT','ENUM','SENT','RECEIVED','FAILED','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x390ddf,_0x4609fb){var _0x2fff49=function(_0x2d2588){while(--_0x2d2588){_0x390ddf['push'](_0x390ddf['shift']());}};_0x2fff49(++_0x4609fb);}(_0xcdb0,0x74));var _0x0cdb=function(_0x78824e,_0x58151e){_0x78824e=_0x78824e-0x0;var _0x2d662b=_0xcdb0[_0x78824e];return _0x2d662b;};'use strict';var Sequelize=require(_0x0cdb('0x0'));module[_0x0cdb('0x1')]={'integration':{'type':Sequelize[_0x0cdb('0x2')]},'eventChannel':{'type':Sequelize[_0x0cdb('0x2')]},'exitStatus':{'type':Sequelize[_0x0cdb('0x2')]},'ticketId':{'type':Sequelize[_0x0cdb('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0x0cdb('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x0cdb('0x2')]},'calleridname':{'type':Sequelize[_0x0cdb('0x2')]},'queue':{'type':Sequelize[_0x0cdb('0x2')]},'interface':{'type':Sequelize[_0x0cdb('0x2')]},'membername':{'type':Sequelize[_0x0cdb('0x2')]},'agentcalledAt':{'type':Sequelize[_0x0cdb('0x3')]},'agentconnectAt':{'type':Sequelize[_0x0cdb('0x3')]},'holdtime':{'type':Sequelize[_0x0cdb('0x4')]},'agentcomplete':{'type':Sequelize[_0x0cdb('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x0cdb('0x3')]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x0cdb('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x0cdb('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x0cdb('0x3')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x0cdb('0x3')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x0cdb('0x2')]},'channelstate':{'type':Sequelize[_0x0cdb('0x4')]},'channelstatedesc':{'type':Sequelize[_0x0cdb('0x2')]},'connectedlinenum':{'type':Sequelize[_0x0cdb('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0cdb('0x2')]},'accountcode':{'type':Sequelize[_0x0cdb('0x2')]},'context':{'type':Sequelize[_0x0cdb('0x2')]},'exten':{'type':Sequelize[_0x0cdb('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x0cdb('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x0cdb('0x2')]},'destcalleridnum':{'type':Sequelize[_0x0cdb('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x0cdb('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x0cdb('0x2')]},'destexten':{'type':Sequelize[_0x0cdb('0x2')]},'destpriority':{'type':Sequelize[_0x0cdb('0x2')]},'destuniqueid':{'type':Sequelize[_0x0cdb('0x2')]},'messageId':{'type':Sequelize[_0x0cdb('0x2')]},'inReplyTo':{'type':Sequelize[_0x0cdb('0x2')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0x0cdb('0x2')]},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0x0cdb('0x6')]},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0x0cdb('0x6')]},'status':{'type':Sequelize[_0x0cdb('0x7')](_0x0cdb('0x8'),'SENDING',_0x0cdb('0x9'),_0x0cdb('0xa'))},'url':{'type':Sequelize[_0x0cdb('0x2')]},'app':{'type':Sequelize[_0x0cdb('0x2')]},'appdata':{'type':Sequelize[_0x0cdb('0x2')]},'projectId':{'type':Sequelize[_0x0cdb('0x4')]}};
\ No newline at end of file
+var _0x167c=['TEXT','RECEIVED','FAILED','STRING','INTEGER','DATE','BOOLEAN'];(function(_0x5954d2,_0x15db93){var _0x316928=function(_0x278bd3){while(--_0x278bd3){_0x5954d2['push'](_0x5954d2['shift']());}};_0x316928(++_0x15db93);}(_0x167c,0xb2));var _0xc167=function(_0x6bc91f,_0x4671ae){_0x6bc91f=_0x6bc91f-0x0;var _0x18de63=_0x167c[_0x6bc91f];return _0x18de63;};'use strict';var Sequelize=require('sequelize');module['exports']={'integration':{'type':Sequelize[_0xc167('0x0')]},'eventChannel':{'type':Sequelize[_0xc167('0x0')]},'exitStatus':{'type':Sequelize[_0xc167('0x0')]},'ticketId':{'type':Sequelize[_0xc167('0x0')]},'integrationId':{'type':Sequelize[_0xc167('0x1')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xc167('0x0')]},'calleridname':{'type':Sequelize[_0xc167('0x0')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xc167('0x0')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0xc167('0x2')]},'agentconnectAt':{'type':Sequelize[_0xc167('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xc167('0x3')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xc167('0x2')]},'talktime':{'type':Sequelize[_0xc167('0x1')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0xc167('0x3')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xc167('0x2')]},'agentdump':{'type':Sequelize[_0xc167('0x3')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xc167('0x0')]},'channel':{'type':Sequelize[_0xc167('0x0')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xc167('0x0')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xc167('0x0')]},'language':{'type':Sequelize[_0xc167('0x0')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xc167('0x0')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xc167('0x0')]},'destchannelstate':{'type':Sequelize[_0xc167('0x1')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xc167('0x0')]},'destconnectedlinenum':{'type':Sequelize[_0xc167('0x0')]},'destconnectedlinename':{'type':Sequelize[_0xc167('0x0')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0xc167('0x0')]},'destexten':{'type':Sequelize[_0xc167('0x0')]},'destpriority':{'type':Sequelize[_0xc167('0x0')]},'destuniqueid':{'type':Sequelize[_0xc167('0x0')]},'messageId':{'type':Sequelize[_0xc167('0x0')]},'inReplyTo':{'type':Sequelize[_0xc167('0x0')]},'subject':{'type':Sequelize[_0xc167('0x0')]},'from':{'type':Sequelize[_0xc167('0x0')]},'to':{'type':Sequelize[_0xc167('0x0')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize[_0xc167('0x4')]},'text':{'type':Sequelize[_0xc167('0x4')]},'status':{'type':Sequelize['ENUM']('SENT','SENDING',_0xc167('0x5'),_0xc167('0x6'))},'url':{'type':Sequelize[_0xc167('0x0')]},'app':{'type':Sequelize[_0xc167('0x0')]},'appdata':{'type':Sequelize[_0xc167('0x0')]},'projectId':{'type':Sequelize[_0xc167('0x1')]}};
\ No newline at end of file
index 00d0749..dbd4213 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x531b=['mustache','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','IntegrationReport','includeAll','findAll','catch','show','include','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x531b,0x93));var _0xb531=function(_0x358049,_0x56e00a){_0x358049=_0x358049-0x0;var _0x2426d1=_0x531b[_0x358049];return _0x2426d1;};'use strict';var emlformat=require(_0xb531('0x0'));var rimraf=require(_0xb531('0x1'));var zipdir=require(_0xb531('0x2'));var jsonpatch=require(_0xb531('0x3'));var rp=require(_0xb531('0x4'));var moment=require(_0xb531('0x5'));var BPromise=require(_0xb531('0x6'));var Mustache=require(_0xb531('0x7'));var util=require(_0xb531('0x8'));var path=require('path');var sox=require(_0xb531('0x9'));var csv=require(_0xb531('0xa'));var ejs=require(_0xb531('0xb'));var fs=require('fs');var fs_extra=require(_0xb531('0xc'));var _=require(_0xb531('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb531('0xe'));var deskjs=require(_0xb531('0xf'));var toCsv=require(_0xb531('0xa'));var querystring=require(_0xb531('0x10'));var Papa=require(_0xb531('0x11'));var Redis=require(_0xb531('0x12'));var authService=require(_0xb531('0x13'));var qs=require(_0xb531('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb531('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xb531('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xb531('0x17'))['db'];function respondWithStatusCode(_0x49bc41,_0x263d12){_0x263d12=_0x263d12||0xcc;return function(_0x156198){if(_0x156198){return _0x49bc41[_0xb531('0x18')](_0x263d12);}return _0x49bc41[_0xb531('0x19')](_0x263d12)[_0xb531('0x1a')]();};}function respondWithResult(_0x16b87b,_0x1137bd){_0x1137bd=_0x1137bd||0xc8;return function(_0x31a303){if(_0x31a303){return _0x16b87b[_0xb531('0x19')](_0x1137bd)['json'](_0x31a303);}};}function respondWithFilteredResult(_0x46d634,_0x4d169f){return function(_0x2f56fa){if(_0x2f56fa){var _0x17e248=typeof _0x4d169f[_0xb531('0x1b')]===_0xb531('0x1c')&&typeof _0x4d169f[_0xb531('0x1d')]==='undefined';var _0x469292=_0x2f56fa[_0xb531('0x1e')];var _0x408a1b=_0x17e248?0x0:_0x4d169f[_0xb531('0x1b')];var _0x4c9e94=_0x17e248?_0x2f56fa[_0xb531('0x1e')]:_0x4d169f[_0xb531('0x1b')]+_0x4d169f[_0xb531('0x1d')];var _0x1ee9ab;if(_0x4c9e94>=_0x469292){_0x4c9e94=_0x469292;_0x1ee9ab=0xc8;}else{_0x1ee9ab=0xce;}_0x46d634[_0xb531('0x19')](_0x1ee9ab);return _0x46d634[_0xb531('0x1f')](_0xb531('0x20'),_0x408a1b+'-'+_0x4c9e94+'/'+_0x469292)[_0xb531('0x21')](_0x2f56fa);}return null;};}function patchUpdates(_0x5bb3b6){return function(_0x164ca1){try{jsonpatch[_0xb531('0x22')](_0x164ca1,_0x5bb3b6,!![]);}catch(_0x35f3dd){return BPromise[_0xb531('0x23')](_0x35f3dd);}return _0x164ca1[_0xb531('0x24')]();};}function saveUpdates(_0x1214dd,_0x361ff7){return function(_0x40f300){if(_0x40f300){return _0x40f300[_0xb531('0x25')](_0x1214dd)[_0xb531('0x26')](function(_0x377976){return _0x377976;});}return null;};}function removeEntity(_0x166a0b,_0x55f57a){return function(_0x56f30d){if(_0x56f30d){return _0x56f30d['destroy']()['then'](function(){_0x166a0b[_0xb531('0x19')](0xcc)[_0xb531('0x1a')]();});}};}function handleEntityNotFound(_0x2439bc,_0x5ccab4){return function(_0x22b1a9){if(!_0x22b1a9){_0x2439bc['sendStatus'](0x194);}return _0x22b1a9;};}function handleError(_0x1e2ef2,_0x97f2b4){_0x97f2b4=_0x97f2b4||0x1f4;return function(_0x279c2f){logger[_0xb531('0x27')](_0x279c2f[_0xb531('0x28')]);if(_0x279c2f[_0xb531('0x29')]){delete _0x279c2f['name'];}_0x1e2ef2['status'](_0x97f2b4)[_0xb531('0x2a')](_0x279c2f);};}exports['index']=function(_0x38d8bc,_0x128d36){var _0x37078d={},_0x16eb49={},_0x5e8eff={'count':0x0,'rows':[]};var _0x302209=_[_0xb531('0x2b')](db['IntegrationReport'][_0xb531('0x2c')],function(_0x5b1430){return{'name':_0x5b1430[_0xb531('0x2d')],'type':_0x5b1430[_0xb531('0x2e')]['key']};});_0x16eb49[_0xb531('0x2f')]=_[_0xb531('0x2b')](_0x302209,'name');_0x16eb49[_0xb531('0x30')]=_[_0xb531('0x31')](_0x38d8bc['query']);_0x16eb49[_0xb531('0x32')]=_[_0xb531('0x33')](_0x16eb49['model'],_0x16eb49[_0xb531('0x30')]);_0x37078d[_0xb531('0x34')]=_[_0xb531('0x33')](_0x16eb49[_0xb531('0x2f')],qs[_0xb531('0x35')](_0x38d8bc[_0xb531('0x30')][_0xb531('0x35')]));_0x37078d[_0xb531('0x34')]=_0x37078d[_0xb531('0x34')][_0xb531('0x36')]?_0x37078d['attributes']:_0x16eb49[_0xb531('0x2f')];if(!_0x38d8bc[_0xb531('0x30')][_0xb531('0x37')](_0xb531('0x38'))){_0x37078d['limit']=qs[_0xb531('0x1d')](_0x38d8bc[_0xb531('0x30')][_0xb531('0x1d')]);_0x37078d[_0xb531('0x1b')]=qs[_0xb531('0x1b')](_0x38d8bc[_0xb531('0x30')]['offset']);}_0x37078d[_0xb531('0x39')]=qs[_0xb531('0x3a')](_0x38d8bc[_0xb531('0x30')][_0xb531('0x3a')]);_0x37078d['where']=qs[_0xb531('0x32')](_[_0xb531('0x3b')](_0x38d8bc[_0xb531('0x30')],_0x16eb49[_0xb531('0x32')]),_0x302209);if(_0x38d8bc[_0xb531('0x30')][_0xb531('0x3c')]){_0x37078d[_0xb531('0x3d')]=_['merge'](_0x37078d[_0xb531('0x3d')],{'$or':_[_0xb531('0x2b')](_0x302209,function(_0x38b1e2){if(_0x38b1e2[_0xb531('0x2e')]!==_0xb531('0x3e')){var _0x176528={};_0x176528[_0x38b1e2['name']]={'$like':'%'+_0x38d8bc[_0xb531('0x30')][_0xb531('0x3c')]+'%'};return _0x176528;}})});}_0x37078d=_[_0xb531('0x3f')]({},_0x37078d,_0x38d8bc[_0xb531('0x40')]);var _0x4f2b26={'where':_0x37078d[_0xb531('0x3d')]};return db[_0xb531('0x41')]['count'](_0x4f2b26)[_0xb531('0x26')](function(_0x4b6dc1){_0x5e8eff['count']=_0x4b6dc1;if(_0x38d8bc[_0xb531('0x30')][_0xb531('0x42')]){_0x37078d['include']=[{'all':!![]}];}return db[_0xb531('0x41')][_0xb531('0x43')](_0x37078d);})[_0xb531('0x26')](function(_0x136832){_0x5e8eff['rows']=_0x136832;return _0x5e8eff;})[_0xb531('0x26')](respondWithFilteredResult(_0x128d36,_0x37078d))[_0xb531('0x44')](handleError(_0x128d36,null));};exports[_0xb531('0x45')]=function(_0x2c6e4b,_0x46a47a){var _0x1ec4db={'raw':![],'where':{'id':_0x2c6e4b['params']['id']}},_0x553c25={};_0x553c25[_0xb531('0x2f')]=_[_0xb531('0x31')](db['IntegrationReport']['rawAttributes']);_0x553c25[_0xb531('0x30')]=_[_0xb531('0x31')](_0x2c6e4b[_0xb531('0x30')]);_0x553c25[_0xb531('0x32')]=_['intersection'](_0x553c25[_0xb531('0x2f')],_0x553c25[_0xb531('0x30')]);_0x1ec4db[_0xb531('0x34')]=_['intersection'](_0x553c25[_0xb531('0x2f')],qs['fields'](_0x2c6e4b['query'][_0xb531('0x35')]));_0x1ec4db[_0xb531('0x34')]=_0x1ec4db[_0xb531('0x34')][_0xb531('0x36')]?_0x1ec4db[_0xb531('0x34')]:_0x553c25[_0xb531('0x2f')];if(_0x2c6e4b[_0xb531('0x30')]['includeAll']){_0x1ec4db[_0xb531('0x46')]=[{'all':!![]}];}_0x1ec4db=_[_0xb531('0x3f')]({},_0x1ec4db,_0x2c6e4b[_0xb531('0x40')]);return db[_0xb531('0x41')][_0xb531('0x47')](_0x1ec4db)[_0xb531('0x26')](handleEntityNotFound(_0x46a47a,null))[_0xb531('0x26')](respondWithResult(_0x46a47a,null))[_0xb531('0x44')](handleError(_0x46a47a,null));};exports['create']=function(_0x48011c,_0xa83577){return db[_0xb531('0x41')][_0xb531('0x48')](_0x48011c[_0xb531('0x49')],{})[_0xb531('0x26')](respondWithResult(_0xa83577,0xc9))[_0xb531('0x44')](handleError(_0xa83577,null));};exports[_0xb531('0x25')]=function(_0x576895,_0x2f9259){if(_0x576895[_0xb531('0x49')]['id']){delete _0x576895[_0xb531('0x49')]['id'];}return db['IntegrationReport']['find']({'where':{'id':_0x576895[_0xb531('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2f9259,null))[_0xb531('0x26')](saveUpdates(_0x576895[_0xb531('0x49')],null))['then'](respondWithResult(_0x2f9259,null))[_0xb531('0x44')](handleError(_0x2f9259,null));};exports[_0xb531('0x4b')]=function(_0x5a6169,_0x131f52){return db[_0xb531('0x41')][_0xb531('0x47')]({'where':{'id':_0x5a6169[_0xb531('0x4a')]['id']}})['then'](handleEntityNotFound(_0x131f52,null))['then'](removeEntity(_0x131f52,null))[_0xb531('0x44')](handleError(_0x131f52,null));};exports[_0xb531('0x4c')]=function(_0x56419a,_0x171853){return db['IntegrationReport'][_0xb531('0x4c')]()['then'](respondWithResult(_0x171853,null))[_0xb531('0x44')](handleError(_0x171853,null));};
\ No newline at end of file
+var _0xcfcc=['nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','IntegrationReport','findAll','catch','show','params','find','create','update','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','ejs','squel','crypto','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','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x1d9d44,_0x345b61){var _0x2787b8=function(_0x41a6a7){while(--_0x41a6a7){_0x1d9d44['push'](_0x1d9d44['shift']());}};_0x2787b8(++_0x345b61);}(_0xcfcc,0xa9));var _0xccfc=function(_0x249c69,_0x388106){_0x249c69=_0x249c69-0x0;var _0xc089f0=_0xcfcc[_0x249c69];return _0xc089f0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xccfc('0x0'));var zipdir=require(_0xccfc('0x1'));var jsonpatch=require(_0xccfc('0x2'));var rp=require(_0xccfc('0x3'));var moment=require(_0xccfc('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xccfc('0x5'));var path=require(_0xccfc('0x6'));var sox=require('sox');var csv=require(_0xccfc('0x7'));var ejs=require(_0xccfc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xccfc('0x9'));var crypto=require(_0xccfc('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xccfc('0xb'));var toCsv=require(_0xccfc('0x7'));var querystring=require('querystring');var Papa=require(_0xccfc('0xc'));var Redis=require(_0xccfc('0xd'));var authService=require(_0xccfc('0xe'));var qs=require(_0xccfc('0xf'));var as=require(_0xccfc('0x10'));var hardwareService=require(_0xccfc('0x11'));var logger=require('../../config/logger')(_0xccfc('0x12'));var utils=require(_0xccfc('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xccfc('0x14'));var db=require(_0xccfc('0x15'))['db'];function respondWithStatusCode(_0x3a9c0b,_0x3ec1e9){_0x3ec1e9=_0x3ec1e9||0xcc;return function(_0x33e5b6){if(_0x33e5b6){return _0x3a9c0b[_0xccfc('0x16')](_0x3ec1e9);}return _0x3a9c0b[_0xccfc('0x17')](_0x3ec1e9)[_0xccfc('0x18')]();};}function respondWithResult(_0xb22984,_0x113901){_0x113901=_0x113901||0xc8;return function(_0x4e1832){if(_0x4e1832){return _0xb22984[_0xccfc('0x17')](_0x113901)[_0xccfc('0x19')](_0x4e1832);}};}function respondWithFilteredResult(_0x894de3,_0x4a52dc){return function(_0x2396ba){if(_0x2396ba){var _0xdb9788=typeof _0x4a52dc[_0xccfc('0x1a')]===_0xccfc('0x1b')&&typeof _0x4a52dc[_0xccfc('0x1c')]===_0xccfc('0x1b');var _0x4ab607=_0x2396ba[_0xccfc('0x1d')];var _0x16a165=_0xdb9788?0x0:_0x4a52dc['offset'];var _0xe76378=_0xdb9788?_0x2396ba['count']:_0x4a52dc['offset']+_0x4a52dc['limit'];var _0x5ba8e8;if(_0xe76378>=_0x4ab607){_0xe76378=_0x4ab607;_0x5ba8e8=0xc8;}else{_0x5ba8e8=0xce;}_0x894de3['status'](_0x5ba8e8);return _0x894de3[_0xccfc('0x1e')](_0xccfc('0x1f'),_0x16a165+'-'+_0xe76378+'/'+_0x4ab607)[_0xccfc('0x19')](_0x2396ba);}return null;};}function patchUpdates(_0x3f0eab){return function(_0x44e16c){try{jsonpatch['apply'](_0x44e16c,_0x3f0eab,!![]);}catch(_0x3d255a){return BPromise[_0xccfc('0x20')](_0x3d255a);}return _0x44e16c[_0xccfc('0x21')]();};}function saveUpdates(_0x2eea14,_0x1f245f){return function(_0x41e829){if(_0x41e829){return _0x41e829['update'](_0x2eea14)[_0xccfc('0x22')](function(_0x1a7cbf){return _0x1a7cbf;});}return null;};}function removeEntity(_0x4b6799,_0x53540f){return function(_0x3f8932){if(_0x3f8932){return _0x3f8932[_0xccfc('0x23')]()[_0xccfc('0x22')](function(){_0x4b6799[_0xccfc('0x17')](0xcc)[_0xccfc('0x18')]();});}};}function handleEntityNotFound(_0xfdd37e,_0x59fd86){return function(_0x5a1381){if(!_0x5a1381){_0xfdd37e['sendStatus'](0x194);}return _0x5a1381;};}function handleError(_0x46a1e7,_0xb5d18){_0xb5d18=_0xb5d18||0x1f4;return function(_0x23f8a8){logger[_0xccfc('0x24')](_0x23f8a8[_0xccfc('0x25')]);if(_0x23f8a8[_0xccfc('0x26')]){delete _0x23f8a8[_0xccfc('0x26')];}_0x46a1e7[_0xccfc('0x17')](_0xb5d18)['send'](_0x23f8a8);};}exports[_0xccfc('0x27')]=function(_0x38d6fa,_0x3a2706){var _0x274ae0={},_0x17c337={},_0x49b851={'count':0x0,'rows':[]};var _0x54bafc=_[_0xccfc('0x28')](db['IntegrationReport'][_0xccfc('0x29')],function(_0x25ca44){return{'name':_0x25ca44[_0xccfc('0x2a')],'type':_0x25ca44['type'][_0xccfc('0x2b')]};});_0x17c337[_0xccfc('0x2c')]=_[_0xccfc('0x28')](_0x54bafc,_0xccfc('0x26'));_0x17c337[_0xccfc('0x2d')]=_[_0xccfc('0x2e')](_0x38d6fa[_0xccfc('0x2d')]);_0x17c337[_0xccfc('0x2f')]=_[_0xccfc('0x30')](_0x17c337['model'],_0x17c337[_0xccfc('0x2d')]);_0x274ae0[_0xccfc('0x31')]=_[_0xccfc('0x30')](_0x17c337[_0xccfc('0x2c')],qs[_0xccfc('0x32')](_0x38d6fa[_0xccfc('0x2d')][_0xccfc('0x32')]));_0x274ae0[_0xccfc('0x31')]=_0x274ae0[_0xccfc('0x31')][_0xccfc('0x33')]?_0x274ae0[_0xccfc('0x31')]:_0x17c337[_0xccfc('0x2c')];if(!_0x38d6fa['query'][_0xccfc('0x34')](_0xccfc('0x35'))){_0x274ae0['limit']=qs[_0xccfc('0x1c')](_0x38d6fa[_0xccfc('0x2d')][_0xccfc('0x1c')]);_0x274ae0[_0xccfc('0x1a')]=qs[_0xccfc('0x1a')](_0x38d6fa[_0xccfc('0x2d')][_0xccfc('0x1a')]);}_0x274ae0[_0xccfc('0x36')]=qs[_0xccfc('0x37')](_0x38d6fa[_0xccfc('0x2d')][_0xccfc('0x37')]);_0x274ae0[_0xccfc('0x38')]=qs[_0xccfc('0x2f')](_[_0xccfc('0x39')](_0x38d6fa[_0xccfc('0x2d')],_0x17c337[_0xccfc('0x2f')]),_0x54bafc);if(_0x38d6fa[_0xccfc('0x2d')][_0xccfc('0x3a')]){_0x274ae0[_0xccfc('0x38')]=_[_0xccfc('0x3b')](_0x274ae0[_0xccfc('0x38')],{'$or':_[_0xccfc('0x28')](_0x54bafc,function(_0x8b0f31){if(_0x8b0f31['type']!==_0xccfc('0x3c')){var _0x5372bc={};_0x5372bc[_0x8b0f31[_0xccfc('0x26')]]={'$like':'%'+_0x38d6fa[_0xccfc('0x2d')][_0xccfc('0x3a')]+'%'};return _0x5372bc;}})});}_0x274ae0=_[_0xccfc('0x3b')]({},_0x274ae0,_0x38d6fa[_0xccfc('0x3d')]);var _0x37bdae={'where':_0x274ae0[_0xccfc('0x38')]};return db['IntegrationReport'][_0xccfc('0x1d')](_0x37bdae)[_0xccfc('0x22')](function(_0x27f709){_0x49b851[_0xccfc('0x1d')]=_0x27f709;if(_0x38d6fa[_0xccfc('0x2d')][_0xccfc('0x3e')]){_0x274ae0[_0xccfc('0x3f')]=[{'all':!![]}];}return db[_0xccfc('0x40')][_0xccfc('0x41')](_0x274ae0);})[_0xccfc('0x22')](function(_0x21a62f){_0x49b851['rows']=_0x21a62f;return _0x49b851;})[_0xccfc('0x22')](respondWithFilteredResult(_0x3a2706,_0x274ae0))[_0xccfc('0x42')](handleError(_0x3a2706,null));};exports[_0xccfc('0x43')]=function(_0x2022b8,_0x5c0d2e){var _0x2f4f4f={'raw':![],'where':{'id':_0x2022b8[_0xccfc('0x44')]['id']}},_0x1e543a={};_0x1e543a[_0xccfc('0x2c')]=_[_0xccfc('0x2e')](db[_0xccfc('0x40')]['rawAttributes']);_0x1e543a['query']=_['keys'](_0x2022b8[_0xccfc('0x2d')]);_0x1e543a[_0xccfc('0x2f')]=_[_0xccfc('0x30')](_0x1e543a[_0xccfc('0x2c')],_0x1e543a['query']);_0x2f4f4f[_0xccfc('0x31')]=_[_0xccfc('0x30')](_0x1e543a[_0xccfc('0x2c')],qs[_0xccfc('0x32')](_0x2022b8[_0xccfc('0x2d')][_0xccfc('0x32')]));_0x2f4f4f[_0xccfc('0x31')]=_0x2f4f4f[_0xccfc('0x31')][_0xccfc('0x33')]?_0x2f4f4f[_0xccfc('0x31')]:_0x1e543a['model'];if(_0x2022b8[_0xccfc('0x2d')]['includeAll']){_0x2f4f4f['include']=[{'all':!![]}];}_0x2f4f4f=_[_0xccfc('0x3b')]({},_0x2f4f4f,_0x2022b8[_0xccfc('0x3d')]);return db[_0xccfc('0x40')][_0xccfc('0x45')](_0x2f4f4f)[_0xccfc('0x22')](handleEntityNotFound(_0x5c0d2e,null))[_0xccfc('0x22')](respondWithResult(_0x5c0d2e,null))['catch'](handleError(_0x5c0d2e,null));};exports[_0xccfc('0x46')]=function(_0x211062,_0x2d663b){return db[_0xccfc('0x40')][_0xccfc('0x46')](_0x211062['body'],{})['then'](respondWithResult(_0x2d663b,0xc9))[_0xccfc('0x42')](handleError(_0x2d663b,null));};exports[_0xccfc('0x47')]=function(_0x5f0b79,_0x5ef034){if(_0x5f0b79['body']['id']){delete _0x5f0b79[_0xccfc('0x48')]['id'];}return db[_0xccfc('0x40')][_0xccfc('0x45')]({'where':{'id':_0x5f0b79[_0xccfc('0x44')]['id']}})[_0xccfc('0x22')](handleEntityNotFound(_0x5ef034,null))[_0xccfc('0x22')](saveUpdates(_0x5f0b79['body'],null))[_0xccfc('0x22')](respondWithResult(_0x5ef034,null))[_0xccfc('0x42')](handleError(_0x5ef034,null));};exports[_0xccfc('0x23')]=function(_0x20a5f9,_0x3af355){return db[_0xccfc('0x40')]['find']({'where':{'id':_0x20a5f9[_0xccfc('0x44')]['id']}})[_0xccfc('0x22')](handleEntityNotFound(_0x3af355,null))['then'](removeEntity(_0x3af355,null))[_0xccfc('0x42')](handleError(_0x3af355,null));};exports[_0xccfc('0x49')]=function(_0x4dad5f,_0x3de386){return db[_0xccfc('0x40')][_0xccfc('0x49')]()[_0xccfc('0x22')](respondWithResult(_0x3de386,null))[_0xccfc('0x42')](handleError(_0x3de386,null));};
\ No newline at end of file
index 254468e..a294c4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1378=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','IntegrationReport','lodash'];(function(_0x24237f,_0x4cf32c){var _0x48298e=function(_0x3f7511){while(--_0x3f7511){_0x24237f['push'](_0x24237f['shift']());}};_0x48298e(++_0x4cf32c);}(_0x1378,0x15f));var _0x8137=function(_0x146603,_0x71623e){_0x146603=_0x146603-0x0;var _0x5ad789=_0x1378[_0x146603];return _0x5ad789;};'use strict';var _=require(_0x8137('0x0'));var util=require(_0x8137('0x1'));var logger=require(_0x8137('0x2'))(_0x8137('0x3'));var moment=require(_0x8137('0x4'));var BPromise=require(_0x8137('0x5'));var rp=require(_0x8137('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8137('0x7'));var config=require(_0x8137('0x8'));var attributes=require('./integrationReport.attributes');module[_0x8137('0x9')]=function(_0x3ec6f3,_0x14b714){return _0x3ec6f3['define'](_0x8137('0xa'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4498=['api','moment','bluebird','path','rimraf','../../config/environment','./integrationReport.attributes','exports','IntegrationReport','report_integration','util','../../config/logger'];(function(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0x4498,0xe2));var _0x8449=function(_0x4186c3,_0x1c0521){_0x4186c3=_0x4186c3-0x0;var _0x23ff6c=_0x4498[_0x4186c3];return _0x23ff6c;};'use strict';var _=require('lodash');var util=require(_0x8449('0x0'));var logger=require(_0x8449('0x1'))(_0x8449('0x2'));var moment=require(_0x8449('0x3'));var BPromise=require(_0x8449('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8449('0x5'));var rimraf=require(_0x8449('0x6'));var config=require(_0x8449('0x7'));var attributes=require(_0x8449('0x8'));module[_0x8449('0x9')]=function(_0x3eaa9e,_0x4d43be){return _0x3eaa9e['define'](_0x8449('0xa'),attributes,{'tableName':_0x8449('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 81a142c..2d02dcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring'];(function(_0x363ef8,_0x4ecb1a){var _0x148822=function(_0x232634){while(--_0x232634){_0x363ef8['push'](_0x363ef8['shift']());}};_0x148822(++_0x4ecb1a);}(_0x4975,0x86));var _0x5497=function(_0x39aa17,_0x2e502c){_0x39aa17=_0x39aa17-0x0;var _0x24f398=_0x4975[_0x39aa17];return _0x24f398;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var moment=require(_0x5497('0x1'));var BPromise=require(_0x5497('0x2'));var rs=require(_0x5497('0x3'));var fs=require('fs');var Redis=require(_0x5497('0x4'));var db=require(_0x5497('0x5'))['db'];var utils=require(_0x5497('0x6'));var logger=require(_0x5497('0x7'))(_0x5497('0x8'));var config=require(_0x5497('0x9'));var jayson=require(_0x5497('0xa'));var client=jayson['client'][_0x5497('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f563d,_0x1d0019,_0x674a2a){return new BPromise(function(_0x368e8b,_0x57f930){return client[_0x5497('0xc')](_0x4f563d,_0x674a2a)['then'](function(_0x1f63d8){logger[_0x5497('0xd')](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));logger[_0x5497('0x10')](_0x5497('0x11'),_0x1d0019,_0x5497('0xf'),JSON[_0x5497('0x12')](_0x1f63d8));if(_0x1f63d8['error']){if(_0x1f63d8['error']['code']===0x1f4){logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x57f930(_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);}logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x368e8b(_0x1f63d8['error'][_0x5497('0x14')]);}else{logger['info'](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));_0x368e8b(_0x1f63d8[_0x5497('0x15')][_0x5497('0x14')]);}})[_0x5497('0x16')](function(_0x4073e6){logger[_0x5497('0x13')]('IntegrationReport,\x20%s,\x20%s',_0x1d0019,_0x4073e6);_0x57f930(_0x4073e6);});});}
\ No newline at end of file
+var _0x4975=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x4975,0x86));var _0x5497=function(_0x3cdd27,_0xbfb8c5){_0x3cdd27=_0x3cdd27-0x0;var _0x4f89f3=_0x4975[_0x3cdd27];return _0x4f89f3;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var moment=require(_0x5497('0x1'));var BPromise=require(_0x5497('0x2'));var rs=require(_0x5497('0x3'));var fs=require('fs');var Redis=require(_0x5497('0x4'));var db=require(_0x5497('0x5'))['db'];var utils=require(_0x5497('0x6'));var logger=require(_0x5497('0x7'))(_0x5497('0x8'));var config=require(_0x5497('0x9'));var jayson=require(_0x5497('0xa'));var client=jayson['client'][_0x5497('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f563d,_0x1d0019,_0x674a2a){return new BPromise(function(_0x368e8b,_0x57f930){return client[_0x5497('0xc')](_0x4f563d,_0x674a2a)['then'](function(_0x1f63d8){logger[_0x5497('0xd')](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));logger[_0x5497('0x10')](_0x5497('0x11'),_0x1d0019,_0x5497('0xf'),JSON[_0x5497('0x12')](_0x1f63d8));if(_0x1f63d8['error']){if(_0x1f63d8['error']['code']===0x1f4){logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x57f930(_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);}logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x368e8b(_0x1f63d8['error'][_0x5497('0x14')]);}else{logger['info'](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));_0x368e8b(_0x1f63d8[_0x5497('0x15')][_0x5497('0x14')]);}})[_0x5497('0x16')](function(_0x4073e6){logger[_0x5497('0x13')]('IntegrationReport,\x20%s,\x20%s',_0x1d0019,_0x4073e6);_0x57f930(_0x4073e6);});});}
\ No newline at end of file
index fa61ae7..f8b24d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cfa=['delete','multer','connect-timeout','Router','fs-extra','./interval.controller','get','isAuthenticated','index','/:id','post','create','addInterval','/:id/sub_intervals/create_many','put','update'];(function(_0x171fa7,_0x587eca){var _0xc894e1=function(_0x43d7c7){while(--_0x43d7c7){_0x171fa7['push'](_0x171fa7['shift']());}};_0xc894e1(++_0x587eca);}(_0x6cfa,0xa1));var _0xa6cf=function(_0x50720c,_0x13f3e0){_0x50720c=_0x50720c-0x0;var _0x3674cd=_0x6cfa[_0x50720c];return _0x3674cd;};'use strict';var multer=require(_0xa6cf('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa6cf('0x1'));var express=require('express');var router=express[_0xa6cf('0x2')]();var fs_extra=require(_0xa6cf('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa6cf('0x4'));router[_0xa6cf('0x5')]('/',auth[_0xa6cf('0x6')](),controller[_0xa6cf('0x7')]);router[_0xa6cf('0x5')](_0xa6cf('0x8'),auth[_0xa6cf('0x6')](),controller['show']);router[_0xa6cf('0x5')]('/:id/sub_intervals',auth[_0xa6cf('0x6')](),controller['getIntervals']);router[_0xa6cf('0x9')]('/',auth[_0xa6cf('0x6')](),controller[_0xa6cf('0xa')]);router[_0xa6cf('0x9')]('/:id/sub_intervals',auth[_0xa6cf('0x6')](),controller[_0xa6cf('0xb')]);router[_0xa6cf('0x9')](_0xa6cf('0xc'),auth[_0xa6cf('0x6')](),controller['addIntervals']);router[_0xa6cf('0xd')](_0xa6cf('0x8'),auth[_0xa6cf('0x6')](),controller[_0xa6cf('0xe')]);router[_0xa6cf('0xf')](_0xa6cf('0x8'),auth[_0xa6cf('0x6')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x9ab0=['isAuthenticated','index','get','/:id','show','/:id/sub_intervals','post','create','/:id/sub_intervals/create_many','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x93cf20,_0x220561){var _0x532c27=function(_0xd2189b){while(--_0xd2189b){_0x93cf20['push'](_0x93cf20['shift']());}};_0x532c27(++_0x220561);}(_0x9ab0,0x195));var _0x09ab=function(_0x45d56d,_0x3929d8){_0x45d56d=_0x45d56d-0x0;var _0x3653ee=_0x9ab0[_0x45d56d];return _0x3653ee;};'use strict';var multer=require(_0x09ab('0x0'));var util=require(_0x09ab('0x1'));var path=require(_0x09ab('0x2'));var timeout=require(_0x09ab('0x3'));var express=require(_0x09ab('0x4'));var router=express[_0x09ab('0x5')]();var fs_extra=require(_0x09ab('0x6'));var auth=require(_0x09ab('0x7'));var interaction=require(_0x09ab('0x8'));var config=require('../../config/environment');var controller=require('./interval.controller');router['get']('/',auth[_0x09ab('0x9')](),controller[_0x09ab('0xa')]);router[_0x09ab('0xb')](_0x09ab('0xc'),auth[_0x09ab('0x9')](),controller[_0x09ab('0xd')]);router[_0x09ab('0xb')](_0x09ab('0xe'),auth[_0x09ab('0x9')](),controller['getIntervals']);router[_0x09ab('0xf')]('/',auth['isAuthenticated'](),controller[_0x09ab('0x10')]);router[_0x09ab('0xf')](_0x09ab('0xe'),auth['isAuthenticated'](),controller['addInterval']);router[_0x09ab('0xf')](_0x09ab('0x11'),auth['isAuthenticated'](),controller['addIntervals']);router[_0x09ab('0x12')](_0x09ab('0xc'),auth[_0x09ab('0x9')](),controller[_0x09ab('0x13')]);router[_0x09ab('0x14')](_0x09ab('0xc'),auth[_0x09ab('0x9')](),controller[_0x09ab('0x15')]);module[_0x09ab('0x16')]=router;
\ No newline at end of file
index 4ec17fa..27ddf99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ef7=['sequelize','exports','STRING'];(function(_0x3bddde,_0x1713a2){var _0x4965b1=function(_0x133a93){while(--_0x133a93){_0x3bddde['push'](_0x3bddde['shift']());}};_0x4965b1(++_0x1713a2);}(_0x4ef7,0xde));var _0x74ef=function(_0x25ad85,_0x5756f3){_0x25ad85=_0x25ad85-0x0;var _0x535962=_0x4ef7[_0x25ad85];return _0x535962;};'use strict';var Sequelize=require(_0x74ef('0x0'));module[_0x74ef('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x74ef('0x2')]},'interval':{'type':Sequelize[_0x74ef('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xaa1d=['sequelize','exports','STRING'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0xaa1d,0xfc));var _0xdaa1=function(_0x596a5b,_0x51af41){_0x596a5b=_0x596a5b-0x0;var _0x1b7e71=_0xaa1d[_0x596a5b];return _0x1b7e71;};'use strict';var Sequelize=require(_0xdaa1('0x0'));module[_0xdaa1('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xdaa1('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 31497e0..0a61438 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee91=['Content-Range','apply','reject','update','then','destroy','get','Intervals','UserProfileResource','error','name','send','map','Interval','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','filter','type','VIRTUAL','merge','options','include','findAll','show','includeAll','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','create','catch','body','params','addInterval','findOne','filters','sort','pick','getIntervals','addIntervals','sequelize','transaction','IntervalId','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','to-csv','ejs','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','end','status','json','offset','undefined','limit','count','set'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0xee91,0x1a6));var _0x1ee9=function(_0x12d39b,_0x153dca){_0x12d39b=_0x12d39b-0x0;var _0x2da792=_0xee91[_0x12d39b];return _0x2da792;};'use strict';var emlformat=require(_0x1ee9('0x0'));var rimraf=require(_0x1ee9('0x1'));var zipdir=require(_0x1ee9('0x2'));var jsonpatch=require(_0x1ee9('0x3'));var rp=require('request-promise');var moment=require(_0x1ee9('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1ee9('0x5'));var util=require('util');var path=require(_0x1ee9('0x6'));var sox=require('sox');var csv=require(_0x1ee9('0x7'));var ejs=require(_0x1ee9('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1ee9('0x9'));var squel=require('squel');var crypto=require(_0x1ee9('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x1ee9('0xb'));var toCsv=require(_0x1ee9('0x7'));var querystring=require('querystring');var Papa=require(_0x1ee9('0xc'));var Redis=require(_0x1ee9('0xd'));var authService=require(_0x1ee9('0xe'));var qs=require(_0x1ee9('0xf'));var as=require(_0x1ee9('0x10'));var hardwareService=require(_0x1ee9('0x11'));var logger=require(_0x1ee9('0x12'))(_0x1ee9('0x13'));var utils=require('../../config/utils');var config=require(_0x1ee9('0x14'));var licenseUtil=require(_0x1ee9('0x15'));var db=require(_0x1ee9('0x16'))['db'];var extensions=require(_0x1ee9('0x17'));function respondWithStatusCode(_0x548841,_0x4c1134){_0x4c1134=_0x4c1134||0xcc;return function(_0x17dd8f){if(_0x17dd8f){return _0x548841[_0x1ee9('0x18')](_0x4c1134);}return _0x548841['status'](_0x4c1134)[_0x1ee9('0x19')]();};}function respondWithResult(_0x5b5d39,_0x38845c){_0x38845c=_0x38845c||0xc8;return function(_0x152763){if(_0x152763){return _0x5b5d39[_0x1ee9('0x1a')](_0x38845c)[_0x1ee9('0x1b')](_0x152763);}};}function respondWithFilteredResult(_0x39115b,_0x360d07){return function(_0x33f590){if(_0x33f590){var _0x575368=typeof _0x360d07[_0x1ee9('0x1c')]===_0x1ee9('0x1d')&&typeof _0x360d07[_0x1ee9('0x1e')]===_0x1ee9('0x1d');var _0x12ed3b=_0x33f590[_0x1ee9('0x1f')];var _0x1a4b0c=_0x575368?0x0:_0x360d07[_0x1ee9('0x1c')];var _0x2009c0=_0x575368?_0x33f590[_0x1ee9('0x1f')]:_0x360d07['offset']+_0x360d07[_0x1ee9('0x1e')];var _0x447ca4;if(_0x2009c0>=_0x12ed3b){_0x2009c0=_0x12ed3b;_0x447ca4=0xc8;}else{_0x447ca4=0xce;}_0x39115b[_0x1ee9('0x1a')](_0x447ca4);return _0x39115b[_0x1ee9('0x20')](_0x1ee9('0x21'),_0x1a4b0c+'-'+_0x2009c0+'/'+_0x12ed3b)[_0x1ee9('0x1b')](_0x33f590);}return null;};}function patchUpdates(_0xa46cb9){return function(_0x386655){try{jsonpatch[_0x1ee9('0x22')](_0x386655,_0xa46cb9,!![]);}catch(_0x49c4a7){return BPromise[_0x1ee9('0x23')](_0x49c4a7);}return _0x386655['save']();};}function saveUpdates(_0xa229a6,_0x49c445){return function(_0x46ace3){if(_0x46ace3){return _0x46ace3[_0x1ee9('0x24')](_0xa229a6)[_0x1ee9('0x25')](function(_0x14e001){return _0x14e001;});}return null;};}function removeEntity(_0x3f267e,_0x528e4a){return function(_0x2be63e){if(_0x2be63e){return _0x2be63e[_0x1ee9('0x26')]()[_0x1ee9('0x25')](function(){var _0x37068a=_0x2be63e[_0x1ee9('0x27')]({'plain':!![]});var _0x4fec76=_0x1ee9('0x28');return db[_0x1ee9('0x29')][_0x1ee9('0x26')]({'where':{'type':_0x4fec76,'resourceId':_0x37068a['id']}})['then'](function(){return _0x2be63e;});})[_0x1ee9('0x25')](function(){_0x3f267e[_0x1ee9('0x1a')](0xcc)[_0x1ee9('0x19')]();});}};}function handleEntityNotFound(_0x3edeb7,_0x3d29ee){return function(_0x2b581c){if(!_0x2b581c){_0x3edeb7[_0x1ee9('0x18')](0x194);}return _0x2b581c;};}function handleError(_0x4435b1,_0x4ff15a){_0x4ff15a=_0x4ff15a||0x1f4;return function(_0x202559){logger[_0x1ee9('0x2a')](_0x202559['stack']);if(_0x202559['name']){delete _0x202559[_0x1ee9('0x2b')];}_0x4435b1[_0x1ee9('0x1a')](_0x4ff15a)[_0x1ee9('0x2c')](_0x202559);};}exports['index']=function(_0x29d893,_0x54ed79){var _0xab7f10={},_0x5ede62={},_0x34f48d={'count':0x0,'rows':[]};var _0x8b4c98=_[_0x1ee9('0x2d')](db[_0x1ee9('0x2e')][_0x1ee9('0x2f')],function(_0x4a9a73){return{'name':_0x4a9a73[_0x1ee9('0x30')],'type':_0x4a9a73['type'][_0x1ee9('0x31')]};});_0x5ede62[_0x1ee9('0x32')]=_[_0x1ee9('0x2d')](_0x8b4c98,_0x1ee9('0x2b'));_0x5ede62[_0x1ee9('0x33')]=_[_0x1ee9('0x34')](_0x29d893['query']);_0x5ede62['filters']=_[_0x1ee9('0x35')](_0x5ede62[_0x1ee9('0x32')],_0x5ede62[_0x1ee9('0x33')]);_0xab7f10['attributes']=_['intersection'](_0x5ede62['model'],qs[_0x1ee9('0x36')](_0x29d893['query'][_0x1ee9('0x36')]));_0xab7f10['attributes']=_0xab7f10[_0x1ee9('0x37')][_0x1ee9('0x38')]?_0xab7f10[_0x1ee9('0x37')]:_0x5ede62[_0x1ee9('0x32')];if(!_0x29d893[_0x1ee9('0x33')][_0x1ee9('0x39')](_0x1ee9('0x3a'))){_0xab7f10['limit']=qs[_0x1ee9('0x1e')](_0x29d893[_0x1ee9('0x33')][_0x1ee9('0x1e')]);_0xab7f10[_0x1ee9('0x1c')]=qs[_0x1ee9('0x1c')](_0x29d893[_0x1ee9('0x33')][_0x1ee9('0x1c')]);}_0xab7f10[_0x1ee9('0x3b')]=qs['sort'](_0x29d893[_0x1ee9('0x33')]['sort']);_0xab7f10[_0x1ee9('0x3c')]=qs['filters'](_['pick'](_0x29d893[_0x1ee9('0x33')],_0x5ede62['filters']),_0x8b4c98);if(_0x29d893['query'][_0x1ee9('0x3d')]){_0xab7f10[_0x1ee9('0x3c')]=_['merge'](_0xab7f10['where'],{'$or':_[_0x1ee9('0x2d')](_0x8b4c98,function(_0x23b03a){if(_0x23b03a[_0x1ee9('0x3e')]!==_0x1ee9('0x3f')){var _0x250a42={};_0x250a42[_0x23b03a[_0x1ee9('0x2b')]]={'$like':'%'+_0x29d893[_0x1ee9('0x33')][_0x1ee9('0x3d')]+'%'};return _0x250a42;}})});}_0xab7f10=_[_0x1ee9('0x40')]({},_0xab7f10,_0x29d893[_0x1ee9('0x41')]);var _0x217953={'where':_0xab7f10['where']};return db[_0x1ee9('0x2e')][_0x1ee9('0x1f')](_0x217953)['then'](function(_0x4a9ab8){_0x34f48d[_0x1ee9('0x1f')]=_0x4a9ab8;if(_0x29d893[_0x1ee9('0x33')]['includeAll']){_0xab7f10[_0x1ee9('0x42')]=[{'all':!![]}];}return db[_0x1ee9('0x2e')][_0x1ee9('0x43')](_0xab7f10);})[_0x1ee9('0x25')](function(_0x45edcc){_0x34f48d['rows']=_0x45edcc;return _0x34f48d;})['then'](respondWithFilteredResult(_0x54ed79,_0xab7f10))['catch'](handleError(_0x54ed79,null));};exports[_0x1ee9('0x44')]=function(_0x51deac,_0x2348dc){var _0x36eced={'raw':!![],'where':{'id':_0x51deac['params']['id']}},_0x3c9f81={};_0x3c9f81[_0x1ee9('0x32')]=_['keys'](db['Interval']['rawAttributes']);_0x3c9f81[_0x1ee9('0x33')]=_[_0x1ee9('0x34')](_0x51deac[_0x1ee9('0x33')]);_0x3c9f81['filters']=_[_0x1ee9('0x35')](_0x3c9f81[_0x1ee9('0x32')],_0x3c9f81[_0x1ee9('0x33')]);_0x36eced['attributes']=_[_0x1ee9('0x35')](_0x3c9f81[_0x1ee9('0x32')],qs[_0x1ee9('0x36')](_0x51deac['query'][_0x1ee9('0x36')]));_0x36eced['attributes']=_0x36eced['attributes'][_0x1ee9('0x38')]?_0x36eced[_0x1ee9('0x37')]:_0x3c9f81[_0x1ee9('0x32')];if(_0x51deac[_0x1ee9('0x33')][_0x1ee9('0x45')]){_0x36eced['include']=[{'all':!![]}];}_0x36eced=_[_0x1ee9('0x40')]({},_0x36eced,_0x51deac[_0x1ee9('0x41')]);return db['Interval']['find'](_0x36eced)[_0x1ee9('0x25')](handleEntityNotFound(_0x2348dc,null))[_0x1ee9('0x25')](respondWithResult(_0x2348dc,null))['catch'](handleError(_0x2348dc,null));};exports['create']=function(_0x27ce89,_0x266a53){return db[_0x1ee9('0x2e')]['create'](_0x27ce89['body'],{})[_0x1ee9('0x25')](function(_0x20a086){var _0x24d7b8=_0x27ce89[_0x1ee9('0x46')][_0x1ee9('0x27')]({'plain':!![]});if(!_0x24d7b8)throw new Error(_0x1ee9('0x47'));if(_0x24d7b8['role']===_0x1ee9('0x46')){var _0x21347a=_0x20a086[_0x1ee9('0x27')]({'plain':!![]});var _0x344e01=_0x1ee9('0x28');return db[_0x1ee9('0x48')][_0x1ee9('0x49')]({'where':{'name':_0x344e01,'userProfileId':_0x24d7b8[_0x1ee9('0x4a')]},'raw':!![]})['then'](function(_0x351403){if(_0x351403&&_0x351403[_0x1ee9('0x4b')]===0x0){return db['UserProfileResource'][_0x1ee9('0x4c')]({'name':_0x21347a[_0x1ee9('0x2b')],'resourceId':_0x21347a['id'],'type':_0x351403['name'],'sectionId':_0x351403['id']},{})['then'](function(){return _0x20a086;});}else{return _0x20a086;}})[_0x1ee9('0x4d')](function(_0x55e395){logger[_0x1ee9('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x55e395);throw _0x55e395;});}return _0x20a086;})['then'](respondWithResult(_0x266a53,0xc9))['catch'](handleError(_0x266a53,null));};exports[_0x1ee9('0x24')]=function(_0x1de08f,_0x180e13){if(_0x1de08f[_0x1ee9('0x4e')]['id']){delete _0x1de08f['body']['id'];}return db['Interval'][_0x1ee9('0x49')]({'where':{'id':_0x1de08f[_0x1ee9('0x4f')]['id']}})[_0x1ee9('0x25')](handleEntityNotFound(_0x180e13,null))[_0x1ee9('0x25')](saveUpdates(_0x1de08f[_0x1ee9('0x4e')],null))[_0x1ee9('0x25')](respondWithResult(_0x180e13,null))[_0x1ee9('0x4d')](handleError(_0x180e13,null));};exports[_0x1ee9('0x26')]=function(_0x53716a,_0x4fb58c){return db[_0x1ee9('0x2e')][_0x1ee9('0x49')]({'where':{'id':_0x53716a[_0x1ee9('0x4f')]['id']}})[_0x1ee9('0x25')](handleEntityNotFound(_0x4fb58c,null))[_0x1ee9('0x25')](removeEntity(_0x4fb58c,null))['catch'](handleError(_0x4fb58c,null));};exports[_0x1ee9('0x50')]=function(_0x4a06df,_0x52bc08,_0x455b9f){if(_0x4a06df[_0x1ee9('0x4e')]['id']){delete _0x4a06df[_0x1ee9('0x4e')]['id'];}return db['Interval'][_0x1ee9('0x49')]({'where':{'id':_0x4a06df[_0x1ee9('0x4f')]['id']}})[_0x1ee9('0x25')](handleEntityNotFound(_0x52bc08,null))[_0x1ee9('0x25')](function(_0x19c04f){if(_0x19c04f){_0x4a06df[_0x1ee9('0x4e')]['IntervalId']=_0x19c04f['id'];return db[_0x1ee9('0x2e')]['create'](_0x4a06df[_0x1ee9('0x4e')]);}})[_0x1ee9('0x25')](respondWithResult(_0x52bc08,null))['catch'](handleError(_0x52bc08,null));};exports['getIntervals']=function(_0x4573ef,_0x421a45,_0x12b7a7){var _0x4023ae={};var _0x321598={};var _0x196d50;var _0x466e9a;return db[_0x1ee9('0x2e')][_0x1ee9('0x51')]({'where':{'id':_0x4573ef[_0x1ee9('0x4f')]['id']}})['then'](handleEntityNotFound(_0x421a45,null))[_0x1ee9('0x25')](function(_0x140f98){if(_0x140f98){_0x196d50=_0x140f98;_0x321598['model']=_[_0x1ee9('0x34')](db[_0x1ee9('0x2e')][_0x1ee9('0x2f')]);_0x321598['query']=_[_0x1ee9('0x34')](_0x4573ef[_0x1ee9('0x33')]);_0x321598[_0x1ee9('0x52')]=_[_0x1ee9('0x35')](_0x321598[_0x1ee9('0x32')],_0x321598[_0x1ee9('0x33')]);_0x4023ae[_0x1ee9('0x37')]=_[_0x1ee9('0x35')](_0x321598['model'],qs[_0x1ee9('0x36')](_0x4573ef[_0x1ee9('0x33')][_0x1ee9('0x36')]));_0x4023ae[_0x1ee9('0x37')]=_0x4023ae[_0x1ee9('0x37')][_0x1ee9('0x38')]?_0x4023ae[_0x1ee9('0x37')]:_0x321598[_0x1ee9('0x32')];_0x4023ae[_0x1ee9('0x3b')]=qs[_0x1ee9('0x53')](_0x4573ef[_0x1ee9('0x33')][_0x1ee9('0x53')]);_0x4023ae[_0x1ee9('0x3c')]=qs[_0x1ee9('0x52')](_[_0x1ee9('0x54')](_0x4573ef[_0x1ee9('0x33')],_0x321598[_0x1ee9('0x52')]));if(_0x4573ef[_0x1ee9('0x33')]['filter']){_0x4023ae[_0x1ee9('0x3c')]=_[_0x1ee9('0x40')](_0x4023ae[_0x1ee9('0x3c')],{'$or':_[_0x1ee9('0x2d')](_0x4023ae[_0x1ee9('0x37')],function(_0x53806f){var _0x3daecc={};_0x3daecc[_0x53806f]={'$like':'%'+_0x4573ef[_0x1ee9('0x33')]['filter']+'%'};return _0x3daecc;})});}_0x4023ae=_[_0x1ee9('0x40')]({},_0x4023ae,_0x4573ef[_0x1ee9('0x41')]);return _0x196d50[_0x1ee9('0x55')](_0x4023ae);}})[_0x1ee9('0x25')](function(_0x32048f){if(_0x32048f){_0x466e9a=_0x32048f[_0x1ee9('0x38')];if(!_0x4573ef[_0x1ee9('0x33')][_0x1ee9('0x39')](_0x1ee9('0x3a'))){_0x4023ae['limit']=qs['limit'](_0x4573ef['query'][_0x1ee9('0x1e')]);_0x4023ae['offset']=qs[_0x1ee9('0x1c')](_0x4573ef[_0x1ee9('0x33')][_0x1ee9('0x1c')]);}return _0x196d50[_0x1ee9('0x55')](_0x4023ae);}})[_0x1ee9('0x25')](function(_0x981569){if(_0x981569){return _0x981569?{'count':_0x466e9a,'rows':_0x981569}:null;}})[_0x1ee9('0x25')](respondWithResult(_0x421a45,null))[_0x1ee9('0x4d')](handleError(_0x421a45,null));};exports[_0x1ee9('0x56')]=function(_0x1f1113,_0x425fc7,_0x2e63da){return db['Interval']['findOne']({'where':{'id':_0x1f1113[_0x1ee9('0x4f')]['id']}})[_0x1ee9('0x25')](handleEntityNotFound(_0x425fc7,null))[_0x1ee9('0x25')](function(_0x51f5af){if(_0x51f5af){return db[_0x1ee9('0x57')][_0x1ee9('0x58')](function(_0x146621){return db[_0x1ee9('0x2e')][_0x1ee9('0x26')]({'where':{'IntervalId':_0x1f1113['params']['id']},'transaction':_0x146621})[_0x1ee9('0x25')](function(_0x3470da){var _0x2c2788=_[_0x1ee9('0x2d')](_0x1f1113[_0x1ee9('0x4e')],function(_0x186575){delete _0x186575['id'];_0x186575[_0x1ee9('0x59')]=_0x1f1113[_0x1ee9('0x4f')]['id'];return _0x186575;});return db[_0x1ee9('0x2e')][_0x1ee9('0x5a')](_0x2c2788,{'transaction':_0x146621});});})[_0x1ee9('0x25')](function(){return db['Interval'][_0x1ee9('0x43')]({'where':{'IntervalId':_0x1f1113['params']['id']}});});}})[_0x1ee9('0x25')](respondWithResult(_0x425fc7,null))['catch'](handleError(_0x425fc7,null));};
\ No newline at end of file
+var _0x4c05=['create','body','get','user','Intervals','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addInterval','IntervalId','findOne','nolimit','getIntervals','addIntervals','sequelize','transaction','bulkCreate','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','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','../../components/extensions/rewrite','status','end','json','undefined','count','offset','limit','set','reject','update','then','UserProfileResource','destroy','sendStatus','error','stack','name','index','Interval','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','catch','find'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0x4c05,0x6d));var _0x54c0=function(_0x50322c,_0x5e2bb9){_0x50322c=_0x50322c-0x0;var _0x4d4411=_0x4c05[_0x50322c];return _0x4d4411;};'use strict';var emlformat=require(_0x54c0('0x0'));var rimraf=require(_0x54c0('0x1'));var zipdir=require(_0x54c0('0x2'));var jsonpatch=require(_0x54c0('0x3'));var rp=require(_0x54c0('0x4'));var moment=require(_0x54c0('0x5'));var BPromise=require(_0x54c0('0x6'));var Mustache=require(_0x54c0('0x7'));var util=require(_0x54c0('0x8'));var path=require(_0x54c0('0x9'));var sox=require(_0x54c0('0xa'));var csv=require(_0x54c0('0xb'));var ejs=require(_0x54c0('0xc'));var fs=require('fs');var fs_extra=require(_0x54c0('0xd'));var _=require(_0x54c0('0xe'));var squel=require(_0x54c0('0xf'));var crypto=require(_0x54c0('0x10'));var jsforce=require(_0x54c0('0x11'));var deskjs=require('desk.js');var toCsv=require(_0x54c0('0xb'));var querystring=require(_0x54c0('0x12'));var Papa=require(_0x54c0('0x13'));var Redis=require(_0x54c0('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x54c0('0x15'));var as=require(_0x54c0('0x16'));var hardwareService=require(_0x54c0('0x17'));var logger=require(_0x54c0('0x18'))(_0x54c0('0x19'));var utils=require(_0x54c0('0x1a'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x54c0('0x1b'))['db'];var extensions=require(_0x54c0('0x1c'));function respondWithStatusCode(_0x569e1c,_0x4dbad0){_0x4dbad0=_0x4dbad0||0xcc;return function(_0x3a1112){if(_0x3a1112){return _0x569e1c['sendStatus'](_0x4dbad0);}return _0x569e1c[_0x54c0('0x1d')](_0x4dbad0)[_0x54c0('0x1e')]();};}function respondWithResult(_0x590716,_0x4638b3){_0x4638b3=_0x4638b3||0xc8;return function(_0x54d457){if(_0x54d457){return _0x590716[_0x54c0('0x1d')](_0x4638b3)[_0x54c0('0x1f')](_0x54d457);}};}function respondWithFilteredResult(_0x2d888a,_0x1c9bf6){return function(_0x5f0050){if(_0x5f0050){var _0x45cc8c=typeof _0x1c9bf6['offset']===_0x54c0('0x20')&&typeof _0x1c9bf6['limit']==='undefined';var _0x529977=_0x5f0050[_0x54c0('0x21')];var _0x40d7d2=_0x45cc8c?0x0:_0x1c9bf6[_0x54c0('0x22')];var _0x2eaa0f=_0x45cc8c?_0x5f0050[_0x54c0('0x21')]:_0x1c9bf6[_0x54c0('0x22')]+_0x1c9bf6[_0x54c0('0x23')];var _0x462720;if(_0x2eaa0f>=_0x529977){_0x2eaa0f=_0x529977;_0x462720=0xc8;}else{_0x462720=0xce;}_0x2d888a[_0x54c0('0x1d')](_0x462720);return _0x2d888a[_0x54c0('0x24')]('Content-Range',_0x40d7d2+'-'+_0x2eaa0f+'/'+_0x529977)['json'](_0x5f0050);}return null;};}function patchUpdates(_0x4cbe49){return function(_0x99baaa){try{jsonpatch['apply'](_0x99baaa,_0x4cbe49,!![]);}catch(_0x2d4c6){return BPromise[_0x54c0('0x25')](_0x2d4c6);}return _0x99baaa['save']();};}function saveUpdates(_0x89f4c3,_0x5b56fe){return function(_0x4996ce){if(_0x4996ce){return _0x4996ce[_0x54c0('0x26')](_0x89f4c3)['then'](function(_0x35c607){return _0x35c607;});}return null;};}function removeEntity(_0x53305d,_0x57848e){return function(_0x2c7109){if(_0x2c7109){return _0x2c7109['destroy']()[_0x54c0('0x27')](function(){var _0x487fa6=_0x2c7109['get']({'plain':!![]});var _0x362009='Intervals';return db[_0x54c0('0x28')][_0x54c0('0x29')]({'where':{'type':_0x362009,'resourceId':_0x487fa6['id']}})[_0x54c0('0x27')](function(){return _0x2c7109;});})[_0x54c0('0x27')](function(){_0x53305d[_0x54c0('0x1d')](0xcc)[_0x54c0('0x1e')]();});}};}function handleEntityNotFound(_0x454135,_0x56ee3c){return function(_0x371d73){if(!_0x371d73){_0x454135[_0x54c0('0x2a')](0x194);}return _0x371d73;};}function handleError(_0x2f1883,_0x2d5cdb){_0x2d5cdb=_0x2d5cdb||0x1f4;return function(_0x5cb3cf){logger[_0x54c0('0x2b')](_0x5cb3cf[_0x54c0('0x2c')]);if(_0x5cb3cf[_0x54c0('0x2d')]){delete _0x5cb3cf[_0x54c0('0x2d')];}_0x2f1883[_0x54c0('0x1d')](_0x2d5cdb)['send'](_0x5cb3cf);};}exports[_0x54c0('0x2e')]=function(_0x203d3b,_0x44362b){var _0x46e29b={},_0x57525e={},_0x56a803={'count':0x0,'rows':[]};var _0x25a0e8=_['map'](db[_0x54c0('0x2f')][_0x54c0('0x30')],function(_0x1dd33c){return{'name':_0x1dd33c[_0x54c0('0x31')],'type':_0x1dd33c[_0x54c0('0x32')][_0x54c0('0x33')]};});_0x57525e[_0x54c0('0x34')]=_[_0x54c0('0x35')](_0x25a0e8,'name');_0x57525e[_0x54c0('0x36')]=_[_0x54c0('0x37')](_0x203d3b[_0x54c0('0x36')]);_0x57525e[_0x54c0('0x38')]=_['intersection'](_0x57525e[_0x54c0('0x34')],_0x57525e[_0x54c0('0x36')]);_0x46e29b['attributes']=_[_0x54c0('0x39')](_0x57525e[_0x54c0('0x34')],qs['fields'](_0x203d3b[_0x54c0('0x36')][_0x54c0('0x3a')]));_0x46e29b[_0x54c0('0x3b')]=_0x46e29b[_0x54c0('0x3b')][_0x54c0('0x3c')]?_0x46e29b['attributes']:_0x57525e[_0x54c0('0x34')];if(!_0x203d3b[_0x54c0('0x36')][_0x54c0('0x3d')]('nolimit')){_0x46e29b[_0x54c0('0x23')]=qs[_0x54c0('0x23')](_0x203d3b[_0x54c0('0x36')][_0x54c0('0x23')]);_0x46e29b[_0x54c0('0x22')]=qs['offset'](_0x203d3b[_0x54c0('0x36')]['offset']);}_0x46e29b[_0x54c0('0x3e')]=qs[_0x54c0('0x3f')](_0x203d3b[_0x54c0('0x36')][_0x54c0('0x3f')]);_0x46e29b['where']=qs['filters'](_[_0x54c0('0x40')](_0x203d3b[_0x54c0('0x36')],_0x57525e[_0x54c0('0x38')]),_0x25a0e8);if(_0x203d3b[_0x54c0('0x36')][_0x54c0('0x41')]){_0x46e29b['where']=_['merge'](_0x46e29b[_0x54c0('0x42')],{'$or':_[_0x54c0('0x35')](_0x25a0e8,function(_0x212232){if(_0x212232[_0x54c0('0x32')]!==_0x54c0('0x43')){var _0x177973={};_0x177973[_0x212232[_0x54c0('0x2d')]]={'$like':'%'+_0x203d3b[_0x54c0('0x36')][_0x54c0('0x41')]+'%'};return _0x177973;}})});}_0x46e29b=_[_0x54c0('0x44')]({},_0x46e29b,_0x203d3b[_0x54c0('0x45')]);var _0xdb00c4={'where':_0x46e29b[_0x54c0('0x42')]};return db[_0x54c0('0x2f')]['count'](_0xdb00c4)['then'](function(_0x52975f){_0x56a803[_0x54c0('0x21')]=_0x52975f;if(_0x203d3b['query'][_0x54c0('0x46')]){_0x46e29b[_0x54c0('0x47')]=[{'all':!![]}];}return db['Interval'][_0x54c0('0x48')](_0x46e29b);})['then'](function(_0x446c91){_0x56a803['rows']=_0x446c91;return _0x56a803;})[_0x54c0('0x27')](respondWithFilteredResult(_0x44362b,_0x46e29b))[_0x54c0('0x49')](handleError(_0x44362b,null));};exports['show']=function(_0x547ab8,_0x1f76fe){var _0x3187cc={'raw':!![],'where':{'id':_0x547ab8['params']['id']}},_0x2a725a={};_0x2a725a[_0x54c0('0x34')]=_[_0x54c0('0x37')](db[_0x54c0('0x2f')][_0x54c0('0x30')]);_0x2a725a[_0x54c0('0x36')]=_[_0x54c0('0x37')](_0x547ab8[_0x54c0('0x36')]);_0x2a725a[_0x54c0('0x38')]=_[_0x54c0('0x39')](_0x2a725a[_0x54c0('0x34')],_0x2a725a[_0x54c0('0x36')]);_0x3187cc[_0x54c0('0x3b')]=_[_0x54c0('0x39')](_0x2a725a[_0x54c0('0x34')],qs[_0x54c0('0x3a')](_0x547ab8[_0x54c0('0x36')]['fields']));_0x3187cc[_0x54c0('0x3b')]=_0x3187cc[_0x54c0('0x3b')][_0x54c0('0x3c')]?_0x3187cc[_0x54c0('0x3b')]:_0x2a725a['model'];if(_0x547ab8[_0x54c0('0x36')][_0x54c0('0x46')]){_0x3187cc['include']=[{'all':!![]}];}_0x3187cc=_[_0x54c0('0x44')]({},_0x3187cc,_0x547ab8[_0x54c0('0x45')]);return db[_0x54c0('0x2f')][_0x54c0('0x4a')](_0x3187cc)[_0x54c0('0x27')](handleEntityNotFound(_0x1f76fe,null))['then'](respondWithResult(_0x1f76fe,null))[_0x54c0('0x49')](handleError(_0x1f76fe,null));};exports[_0x54c0('0x4b')]=function(_0x4bb688,_0x1dfb85){return db[_0x54c0('0x2f')]['create'](_0x4bb688[_0x54c0('0x4c')],{})[_0x54c0('0x27')](function(_0x362da0){var _0x537453=_0x4bb688['user'][_0x54c0('0x4d')]({'plain':!![]});if(!_0x537453)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x537453['role']===_0x54c0('0x4e')){var _0x81c9e6=_0x362da0[_0x54c0('0x4d')]({'plain':!![]});var _0x4ae396=_0x54c0('0x4f');return db[_0x54c0('0x50')]['find']({'where':{'name':_0x4ae396,'userProfileId':_0x537453['userProfileId']},'raw':!![]})[_0x54c0('0x27')](function(_0x3fc0e6){if(_0x3fc0e6&&_0x3fc0e6['autoAssociation']===0x0){return db[_0x54c0('0x28')][_0x54c0('0x4b')]({'name':_0x81c9e6[_0x54c0('0x2d')],'resourceId':_0x81c9e6['id'],'type':_0x3fc0e6['name'],'sectionId':_0x3fc0e6['id']},{})[_0x54c0('0x27')](function(){return _0x362da0;});}else{return _0x362da0;}})[_0x54c0('0x49')](function(_0x3867dd){logger['error'](_0x54c0('0x51'),_0x3867dd);throw _0x3867dd;});}return _0x362da0;})[_0x54c0('0x27')](respondWithResult(_0x1dfb85,0xc9))[_0x54c0('0x49')](handleError(_0x1dfb85,null));};exports[_0x54c0('0x26')]=function(_0x440f35,_0x38d3d0){if(_0x440f35['body']['id']){delete _0x440f35[_0x54c0('0x4c')]['id'];}return db['Interval'][_0x54c0('0x4a')]({'where':{'id':_0x440f35[_0x54c0('0x52')]['id']}})[_0x54c0('0x27')](handleEntityNotFound(_0x38d3d0,null))['then'](saveUpdates(_0x440f35['body'],null))[_0x54c0('0x27')](respondWithResult(_0x38d3d0,null))[_0x54c0('0x49')](handleError(_0x38d3d0,null));};exports['destroy']=function(_0x5876e7,_0x1fb42e){return db[_0x54c0('0x2f')][_0x54c0('0x4a')]({'where':{'id':_0x5876e7[_0x54c0('0x52')]['id']}})['then'](handleEntityNotFound(_0x1fb42e,null))[_0x54c0('0x27')](removeEntity(_0x1fb42e,null))[_0x54c0('0x49')](handleError(_0x1fb42e,null));};exports[_0x54c0('0x53')]=function(_0x1b6848,_0x1f9718,_0x56d7ea){if(_0x1b6848['body']['id']){delete _0x1b6848['body']['id'];}return db['Interval'][_0x54c0('0x4a')]({'where':{'id':_0x1b6848[_0x54c0('0x52')]['id']}})[_0x54c0('0x27')](handleEntityNotFound(_0x1f9718,null))['then'](function(_0x24fc68){if(_0x24fc68){_0x1b6848[_0x54c0('0x4c')][_0x54c0('0x54')]=_0x24fc68['id'];return db[_0x54c0('0x2f')][_0x54c0('0x4b')](_0x1b6848[_0x54c0('0x4c')]);}})[_0x54c0('0x27')](respondWithResult(_0x1f9718,null))[_0x54c0('0x49')](handleError(_0x1f9718,null));};exports['getIntervals']=function(_0x26dad4,_0x2a232d,_0xfab29b){var _0x27b67a={};var _0x34dee0={};var _0x31f7a5;var _0x4e0d24;return db['Interval'][_0x54c0('0x55')]({'where':{'id':_0x26dad4['params']['id']}})['then'](handleEntityNotFound(_0x2a232d,null))[_0x54c0('0x27')](function(_0x1c6423){if(_0x1c6423){_0x31f7a5=_0x1c6423;_0x34dee0[_0x54c0('0x34')]=_[_0x54c0('0x37')](db[_0x54c0('0x2f')][_0x54c0('0x30')]);_0x34dee0[_0x54c0('0x36')]=_[_0x54c0('0x37')](_0x26dad4['query']);_0x34dee0[_0x54c0('0x38')]=_[_0x54c0('0x39')](_0x34dee0[_0x54c0('0x34')],_0x34dee0['query']);_0x27b67a['attributes']=_[_0x54c0('0x39')](_0x34dee0['model'],qs[_0x54c0('0x3a')](_0x26dad4[_0x54c0('0x36')][_0x54c0('0x3a')]));_0x27b67a[_0x54c0('0x3b')]=_0x27b67a['attributes'][_0x54c0('0x3c')]?_0x27b67a['attributes']:_0x34dee0[_0x54c0('0x34')];_0x27b67a['order']=qs[_0x54c0('0x3f')](_0x26dad4[_0x54c0('0x36')][_0x54c0('0x3f')]);_0x27b67a[_0x54c0('0x42')]=qs[_0x54c0('0x38')](_[_0x54c0('0x40')](_0x26dad4[_0x54c0('0x36')],_0x34dee0['filters']));if(_0x26dad4[_0x54c0('0x36')][_0x54c0('0x41')]){_0x27b67a[_0x54c0('0x42')]=_[_0x54c0('0x44')](_0x27b67a[_0x54c0('0x42')],{'$or':_[_0x54c0('0x35')](_0x27b67a[_0x54c0('0x3b')],function(_0x5eb7e8){var _0x353196={};_0x353196[_0x5eb7e8]={'$like':'%'+_0x26dad4[_0x54c0('0x36')][_0x54c0('0x41')]+'%'};return _0x353196;})});}_0x27b67a=_[_0x54c0('0x44')]({},_0x27b67a,_0x26dad4[_0x54c0('0x45')]);return _0x31f7a5['getIntervals'](_0x27b67a);}})['then'](function(_0x4aa4ac){if(_0x4aa4ac){_0x4e0d24=_0x4aa4ac[_0x54c0('0x3c')];if(!_0x26dad4['query']['hasOwnProperty'](_0x54c0('0x56'))){_0x27b67a[_0x54c0('0x23')]=qs[_0x54c0('0x23')](_0x26dad4[_0x54c0('0x36')]['limit']);_0x27b67a[_0x54c0('0x22')]=qs[_0x54c0('0x22')](_0x26dad4[_0x54c0('0x36')]['offset']);}return _0x31f7a5[_0x54c0('0x57')](_0x27b67a);}})[_0x54c0('0x27')](function(_0x89bb16){if(_0x89bb16){return _0x89bb16?{'count':_0x4e0d24,'rows':_0x89bb16}:null;}})[_0x54c0('0x27')](respondWithResult(_0x2a232d,null))['catch'](handleError(_0x2a232d,null));};exports[_0x54c0('0x58')]=function(_0xea080e,_0x1261fc,_0x66f3d5){return db[_0x54c0('0x2f')][_0x54c0('0x55')]({'where':{'id':_0xea080e[_0x54c0('0x52')]['id']}})['then'](handleEntityNotFound(_0x1261fc,null))[_0x54c0('0x27')](function(_0x1677dc){if(_0x1677dc){return db[_0x54c0('0x59')][_0x54c0('0x5a')](function(_0x2a62c7){return db[_0x54c0('0x2f')][_0x54c0('0x29')]({'where':{'IntervalId':_0xea080e[_0x54c0('0x52')]['id']},'transaction':_0x2a62c7})[_0x54c0('0x27')](function(_0x5184a8){var _0x4bbf74=_[_0x54c0('0x35')](_0xea080e[_0x54c0('0x4c')],function(_0x4dbe4a){delete _0x4dbe4a['id'];_0x4dbe4a[_0x54c0('0x54')]=_0xea080e[_0x54c0('0x52')]['id'];return _0x4dbe4a;});return db[_0x54c0('0x2f')][_0x54c0('0x5b')](_0x4bbf74,{'transaction':_0x2a62c7});});})[_0x54c0('0x27')](function(){return db[_0x54c0('0x2f')][_0x54c0('0x48')]({'where':{'IntervalId':_0xea080e[_0x54c0('0x52')]['id']}});});}})[_0x54c0('0x27')](respondWithResult(_0x1261fc,null))[_0x54c0('0x49')](handleError(_0x1261fc,null));};
\ No newline at end of file
index c366920..98c486f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd739=['./interval.attributes','define','Interval','tools_intervals','rewrite','lodash','util','bluebird','path','rimraf','../../config/environment'];(function(_0x671369,_0x433da5){var _0x33f2b4=function(_0x2e9db2){while(--_0x2e9db2){_0x671369['push'](_0x671369['shift']());}};_0x33f2b4(++_0x433da5);}(_0xd739,0x17b));var _0x9d73=function(_0xbd2eed,_0x3a2929){_0xbd2eed=_0xbd2eed-0x0;var _0x335242=_0xd739[_0xbd2eed];return _0x335242;};'use strict';var _=require(_0x9d73('0x0'));var util=require(_0x9d73('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x9d73('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9d73('0x3'));var rimraf=require(_0x9d73('0x4'));var config=require(_0x9d73('0x5'));var attributes=require(_0x9d73('0x6'));var extensions=require('../../components/extensions/rewrite');module['exports']=function(_0x3a6dca,_0x4763e0){return _0x3a6dca[_0x9d73('0x7')](_0x9d73('0x8'),attributes,{'tableName':_0x9d73('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x236ac5,_0x14eb0b){extensions['rewrite'](_0x3a6dca,_0x236ac5);},'afterBulkCreate':function(_0x491d1d,_0x5b7e65,_0x37a4d6){_0x37a4d6();extensions['rewrite'](_0x3a6dca,_0x491d1d[0x0]);},'afterUpdate':function(_0x27cd2b,_0x3913ac){extensions[_0x9d73('0xa')](_0x3a6dca,_0x27cd2b);},'afterDestroy':function(_0x51686b,_0x35c3ce){extensions[_0x9d73('0xa')](_0x3a6dca,_0x51686b);}}});};
\ No newline at end of file
+var _0x2cfd=['bluebird','request-promise','./interval.attributes','../../components/extensions/rewrite','define','Interval','rewrite','util','../../config/logger','api'];(function(_0x5b0779,_0x40d92a){var _0x2d8671=function(_0x5cd62d){while(--_0x5cd62d){_0x5b0779['push'](_0x5b0779['shift']());}};_0x2d8671(++_0x40d92a);}(_0x2cfd,0x179));var _0xd2cf=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2cfd[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0xd2cf('0x0'));var logger=require(_0xd2cf('0x1'))(_0xd2cf('0x2'));var moment=require('moment');var BPromise=require(_0xd2cf('0x3'));var rp=require(_0xd2cf('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd2cf('0x5'));var extensions=require(_0xd2cf('0x6'));module['exports']=function(_0x26abcf,_0x57aba1){return _0x26abcf[_0xd2cf('0x7')](_0xd2cf('0x8'),attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x572f7a,_0x1eddfc){extensions[_0xd2cf('0x9')](_0x26abcf,_0x572f7a);},'afterBulkCreate':function(_0x5ac2d6,_0x5a14e7,_0x2ec6f9){_0x2ec6f9();extensions[_0xd2cf('0x9')](_0x26abcf,_0x5ac2d6[0x0]);},'afterUpdate':function(_0x4226b2,_0x4a33c4){extensions[_0xd2cf('0x9')](_0x26abcf,_0x4226b2);},'afterDestroy':function(_0x6c205,_0x174c5c){extensions[_0xd2cf('0x9')](_0x26abcf,_0x6c205);}}});};
\ No newline at end of file
index 0c459d5..f052149 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(_0x34c553,_0x3e7dfc){var _0x1357d2=function(_0x3b509f){while(--_0x3b509f){_0x34c553['push'](_0x34c553['shift']());}};_0x1357d2(++_0x3e7dfc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
+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(_0x7b5cdd,_0x8c88d8){var _0x3a29ae=function(_0x17859a){while(--_0x17859a){_0x7b5cdd['push'](_0x7b5cdd['shift']());}};_0x3a29ae(++_0x8c88d8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xa9e0[_0x4b7b62];return _0x2280df;};'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 629fc05..2bf071c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['./jira.controller','post','isAuthenticated','exports','express','Router','../../components/auth/service'];(function(_0x49de32,_0x571cc3){var _0x4b592c=function(_0x2ad700){while(--_0x2ad700){_0x49de32['push'](_0x49de32['shift']());}};_0x4b592c(++_0x571cc3);}(_0x2ef3,0xba));var _0x32ef=function(_0x2241fb,_0x166516){_0x2241fb=_0x2241fb-0x0;var _0x241ce9=_0x2ef3[_0x2241fb];return _0x241ce9;};'use strict';var express=require(_0x32ef('0x0'));var router=express[_0x32ef('0x1')]();var auth=require(_0x32ef('0x2'));var controller=require(_0x32ef('0x3'));router[_0x32ef('0x4')]('/',auth[_0x32ef('0x5')](),controller['send']);module[_0x32ef('0x6')]=router;
\ No newline at end of file
+var _0xdb28=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller'];(function(_0xa0cfc8,_0x255606){var _0x52759e=function(_0x1dc4b8){while(--_0x1dc4b8){_0xa0cfc8['push'](_0xa0cfc8['shift']());}};_0x52759e(++_0x255606);}(_0xdb28,0x106));var _0x8db2=function(_0x5032b0,_0x1fa721){_0x5032b0=_0x5032b0-0x0;var _0x484a29=_0xdb28[_0x5032b0];return _0x484a29;};'use strict';var express=require(_0x8db2('0x0'));var router=express[_0x8db2('0x1')]();var auth=require(_0x8db2('0x2'));var controller=require(_0x8db2('0x3'));router['post']('/',auth[_0x8db2('0x4')](),controller[_0x8db2('0x5')]);module[_0x8db2('0x6')]=router;
\ No newline at end of file
index 3fd6257..9dced0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb769=['api','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email','oldToken','customfield_11502','newToken','customfield_11503','reason','customfield_10102','POST','application/json','Basic\x20','toString','base64','request','setEncoding','utf8','data','json','parse','error','status','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','end','openIssue','send','headers','x-forwarded-for','connection','remoteAddress','body','https','../../config/logger'];(function(_0x2a4a08,_0x482c4e){var _0x1e90f5=function(_0x301070){while(--_0x301070){_0x2a4a08['push'](_0x2a4a08['shift']());}};_0x1e90f5(++_0x482c4e);}(_0xb769,0x1ed));var _0x9b76=function(_0x4a1dc4,_0x418a88){_0x4a1dc4=_0x4a1dc4-0x0;var _0x32845c=_0xb769[_0x4a1dc4];return _0x32845c;};'use strict';var BPromise=require('bluebird');var https=require(_0x9b76('0x0'));var logger=require(_0x9b76('0x1'))(_0x9b76('0x2'));var USERNAME='support';var PASSWORD='3eAmWpBVP0';function openIssue(_0x349cb6,_0x162b1d){var _0x22a2bd={'fields':{'project':{'key':_0x349cb6[_0x9b76('0x3')]||_0x9b76('0x4')},'summary':(_0x349cb6[_0x9b76('0x5')]||_0x9b76('0x6'))+_0x9b76('0x7')+_0x349cb6['ip'],'description':_0x349cb6[_0x9b76('0x8')]||JSON[_0x9b76('0x9')](_0x349cb6),'issuetype':{'name':_0x349cb6[_0x9b76('0xa')]||_0x9b76('0xb')}}};_0x22a2bd[_0x9b76('0xc')][_0x9b76('0xd')]=_0x349cb6[_0x9b76('0xe')];_0x22a2bd[_0x9b76('0xc')]['customfield_11501']=_0x349cb6[_0x9b76('0xf')];_0x22a2bd[_0x9b76('0xc')][_0x9b76('0x10')]=_0x349cb6[_0x9b76('0x11')];_0x22a2bd[_0x9b76('0xc')][_0x9b76('0x12')]=_0x349cb6['name'];_0x22a2bd['fields']['customfield_11504']=_0x349cb6[_0x9b76('0x13')];_0x22a2bd[_0x9b76('0xc')][_0x9b76('0x14')]=_0x349cb6['ip'];var _0x4342f5={'host':'track.xcallymotion.com','port':0x1bb,'path':'/rest/api/2/issue','method':_0x9b76('0x15'),'timeout':0x4e20,'headers':{'Content-Type':_0x9b76('0x16'),'Authorization':_0x9b76('0x17')+new Buffer(USERNAME+':'+PASSWORD)[_0x9b76('0x18')](_0x9b76('0x19'))}};var _0x4c4f7d=JSON[_0x9b76('0x9')](_0x22a2bd);var _0x2064e3=https[_0x9b76('0x1a')](_0x4342f5,function(_0x5783d7){_0x5783d7[_0x9b76('0x1b')](_0x9b76('0x1c'));var _0x505065='';_0x5783d7['on'](_0x9b76('0x1d'),function(_0x2227d0){_0x505065+=_0x2227d0;});_0x5783d7['on']('end',function(){if(_0x162b1d){return _0x162b1d['status'](_0x5783d7['statusCode'])[_0x9b76('0x1e')](JSON[_0x9b76('0x1f')](_0x505065));}});});_0x2064e3['on'](_0x9b76('0x20'),function(_0x4ff19a){if(_0x162b1d){return _0x162b1d[_0x9b76('0x21')](0x1f4)[_0x9b76('0x1e')]({'errors':[{'message':_0x9b76('0x22'),'type':_0x9b76('0x23')}]});}});_0x2064e3[_0x9b76('0x24')](_0x4c4f7d);_0x2064e3[_0x9b76('0x25')]();}exports[_0x9b76('0x26')]=openIssue;exports[_0x9b76('0x27')]=function(_0x5868d7,_0x2df29b){_0x5868d7['body']['ip']=_0x5868d7[_0x9b76('0x28')][_0x9b76('0x29')]||_0x5868d7[_0x9b76('0x2a')][_0x9b76('0x2b')]||_0x5868d7['socket'][_0x9b76('0x2b')]||_0x5868d7[_0x9b76('0x2a')]['socket'][_0x9b76('0x2b')];return openIssue(_0x5868d7[_0x9b76('0x2c')],_0x2df29b);};
\ No newline at end of file
+var _0x63a1=['x-forwarded-for','connection','remoteAddress','bluebird','https','../../config/logger','api','3eAmWpBVP0','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','/rest/api/2/issue','POST','application/json','Basic\x20','utf8','end','status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','write','openIssue','send','body'];(function(_0xe18ab7,_0x95a601){var _0x531ce5=function(_0x5ebb8b){while(--_0x5ebb8b){_0xe18ab7['push'](_0xe18ab7['shift']());}};_0x531ce5(++_0x95a601);}(_0x63a1,0x15b));var _0x163a=function(_0x5dfec3,_0x1d8469){_0x5dfec3=_0x5dfec3-0x0;var _0x4326b4=_0x63a1[_0x5dfec3];return _0x4326b4;};'use strict';var BPromise=require(_0x163a('0x0'));var https=require(_0x163a('0x1'));var logger=require(_0x163a('0x2'))(_0x163a('0x3'));var USERNAME='support';var PASSWORD=_0x163a('0x4');function openIssue(_0x4a6378,_0x343013){var _0x1f019b={'fields':{'project':{'key':_0x4a6378[_0x163a('0x5')]||_0x163a('0x6')},'summary':(_0x4a6378[_0x163a('0x7')]||_0x163a('0x8'))+_0x163a('0x9')+_0x4a6378['ip'],'description':_0x4a6378[_0x163a('0xa')]||JSON[_0x163a('0xb')](_0x4a6378),'issuetype':{'name':_0x4a6378[_0x163a('0xc')]||'Bug'}}};_0x1f019b[_0x163a('0xd')][_0x163a('0xe')]=_0x4a6378[_0x163a('0xf')];_0x1f019b['fields'][_0x163a('0x10')]=_0x4a6378[_0x163a('0x11')];_0x1f019b[_0x163a('0xd')][_0x163a('0x12')]=_0x4a6378[_0x163a('0x13')];_0x1f019b[_0x163a('0xd')][_0x163a('0x14')]=_0x4a6378[_0x163a('0x15')];_0x1f019b['fields'][_0x163a('0x16')]=_0x4a6378[_0x163a('0x17')];_0x1f019b[_0x163a('0xd')]['customfield_10102']=_0x4a6378['ip'];var _0x102030={'host':'track.xcallymotion.com','port':0x1bb,'path':_0x163a('0x18'),'method':_0x163a('0x19'),'timeout':0x4e20,'headers':{'Content-Type':_0x163a('0x1a'),'Authorization':_0x163a('0x1b')+new Buffer(USERNAME+':'+PASSWORD)['toString']('base64')}};var _0x4c2674=JSON['stringify'](_0x1f019b);var _0xafd0ef=https['request'](_0x102030,function(_0xbd0463){_0xbd0463['setEncoding'](_0x163a('0x1c'));var _0x401254='';_0xbd0463['on']('data',function(_0x150773){_0x401254+=_0x150773;});_0xbd0463['on'](_0x163a('0x1d'),function(){if(_0x343013){return _0x343013[_0x163a('0x1e')](_0xbd0463[_0x163a('0x1f')])[_0x163a('0x20')](JSON[_0x163a('0x21')](_0x401254));}});});_0xafd0ef['on'](_0x163a('0x22'),function(_0x4a5d98){if(_0x343013){return _0x343013[_0x163a('0x1e')](0x1f4)['json']({'errors':[{'message':_0x163a('0x23'),'type':'api.jira'}]});}});_0xafd0ef[_0x163a('0x24')](_0x4c2674);_0xafd0ef['end']();}exports[_0x163a('0x25')]=openIssue;exports[_0x163a('0x26')]=function(_0x4ee5d4,_0x1dd534){_0x4ee5d4[_0x163a('0x27')]['ip']=_0x4ee5d4['headers'][_0x163a('0x28')]||_0x4ee5d4[_0x163a('0x29')][_0x163a('0x2a')]||_0x4ee5d4['socket'][_0x163a('0x2a')]||_0x4ee5d4[_0x163a('0x29')]['socket']['remoteAddress'];return openIssue(_0x4ee5d4[_0x163a('0x27')],_0x1dd534);};
\ No newline at end of file
index 62c8c01..274d184 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41bb=['show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','get','isAuthenticated','describe','/:id'];(function(_0x2a8e37,_0x5cdb8a){var _0x1701f0=function(_0x3a37bf){while(--_0x3a37bf){_0x2a8e37['push'](_0x2a8e37['shift']());}};_0x1701f0(++_0x5cdb8a);}(_0x41bb,0xc5));var _0xb41b=function(_0x491f74,_0x10b98c){_0x491f74=_0x491f74-0x0;var _0x1f372a=_0x41bb[_0x491f74];return _0x1f372a;};'use strict';var multer=require(_0xb41b('0x0'));var util=require(_0xb41b('0x1'));var path=require('path');var timeout=require(_0xb41b('0x2'));var express=require('express');var router=express[_0xb41b('0x3')]();var fs_extra=require(_0xb41b('0x4'));var auth=require(_0xb41b('0x5'));var interaction=require(_0xb41b('0x6'));var config=require('../../config/environment');var controller=require(_0xb41b('0x7'));router[_0xb41b('0x8')]('/',auth[_0xb41b('0x9')](),controller['index']);router['get']('/describe',auth[_0xb41b('0x9')](),controller[_0xb41b('0xa')]);router['get'](_0xb41b('0xb'),auth[_0xb41b('0x9')](),controller[_0xb41b('0xc')]);router[_0xb41b('0xd')]('/',auth[_0xb41b('0x9')](),controller[_0xb41b('0xe')]);router[_0xb41b('0xf')]('/:id',auth[_0xb41b('0x9')](),controller['update']);router[_0xb41b('0x10')](_0xb41b('0xb'),auth[_0xb41b('0x9')](),controller[_0xb41b('0x11')]);module[_0xb41b('0x12')]=router;
\ No newline at end of file
+var _0x5b02=['destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','/describe','describe','show','post','create','put','/:id','update','delete'];(function(_0x13c2d3,_0x4361d9){var _0x397443=function(_0x3ee22a){while(--_0x3ee22a){_0x13c2d3['push'](_0x13c2d3['shift']());}};_0x397443(++_0x4361d9);}(_0x5b02,0xe9));var _0x25b0=function(_0x590ac2,_0x1ea6de){_0x590ac2=_0x590ac2-0x0;var _0x11d5a8=_0x5b02[_0x590ac2];return _0x11d5a8;};'use strict';var multer=require(_0x25b0('0x0'));var util=require(_0x25b0('0x1'));var path=require(_0x25b0('0x2'));var timeout=require(_0x25b0('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x25b0('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x25b0('0x5'));var config=require(_0x25b0('0x6'));var controller=require(_0x25b0('0x7'));router[_0x25b0('0x8')]('/',auth[_0x25b0('0x9')](),controller['index']);router[_0x25b0('0x8')](_0x25b0('0xa'),auth['isAuthenticated'](),controller[_0x25b0('0xb')]);router['get']('/:id',auth[_0x25b0('0x9')](),controller[_0x25b0('0xc')]);router[_0x25b0('0xd')]('/',auth['isAuthenticated'](),controller[_0x25b0('0xe')]);router[_0x25b0('0xf')](_0x25b0('0x10'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x11')]);router[_0x25b0('0x12')](_0x25b0('0x10'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x13')]);module[_0x25b0('0x14')]=router;
\ No newline at end of file
index 56b2c49..5de6027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x7a54,0x106));var _0x47a5=function(_0x3ac945,_0x3e6231){_0x3ac945=_0x3ac945-0x0;var _0x450a94=_0x7a54[_0x3ac945];return _0x450a94;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0x7a54,0x106));var _0x47a5=function(_0x198cad,_0x17641f){_0x198cad=_0x198cad-0x0;var _0xbb3d16=_0x7a54[_0x198cad];return _0xbb3d16;};'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 e99fe49..d491a08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x126e=['../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','JscriptyAnswerReport','rawAttributes','type','model','map','keys','query','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','include','show','params','intersection','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x1563ac,_0xb60ec3){var _0x13df69=function(_0x4d2636){while(--_0x4d2636){_0x1563ac['push'](_0x1563ac['shift']());}};_0x13df69(++_0xb60ec3);}(_0x126e,0x108));var _0xe126=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x126e[_0x565c49];return _0x20ca34;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe126('0x0'));var zipdir=require(_0xe126('0x1'));var jsonpatch=require(_0xe126('0x2'));var rp=require(_0xe126('0x3'));var moment=require(_0xe126('0x4'));var BPromise=require(_0xe126('0x5'));var Mustache=require('mustache');var util=require(_0xe126('0x6'));var path=require(_0xe126('0x7'));var sox=require(_0xe126('0x8'));var csv=require(_0xe126('0x9'));var ejs=require(_0xe126('0xa'));var fs=require('fs');var fs_extra=require(_0xe126('0xb'));var _=require(_0xe126('0xc'));var squel=require('squel');var crypto=require(_0xe126('0xd'));var jsforce=require(_0xe126('0xe'));var deskjs=require(_0xe126('0xf'));var toCsv=require(_0xe126('0x9'));var querystring=require(_0xe126('0x10'));var Papa=require('papaparse');var Redis=require(_0xe126('0x11'));var authService=require(_0xe126('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xe126('0x13'));var hardwareService=require(_0xe126('0x14'));var logger=require('../../config/logger')(_0xe126('0x15'));var utils=require('../../config/utils');var config=require(_0xe126('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe126('0x17'))['db'];function respondWithStatusCode(_0x34ae06,_0x23ff02){_0x23ff02=_0x23ff02||0xcc;return function(_0x38b8c3){if(_0x38b8c3){return _0x34ae06[_0xe126('0x18')](_0x23ff02);}return _0x34ae06[_0xe126('0x19')](_0x23ff02)[_0xe126('0x1a')]();};}function respondWithResult(_0x55f10a,_0xd55baf){_0xd55baf=_0xd55baf||0xc8;return function(_0x1c02c9){if(_0x1c02c9){return _0x55f10a['status'](_0xd55baf)[_0xe126('0x1b')](_0x1c02c9);}};}function respondWithFilteredResult(_0x28d7dd,_0x10bc24){return function(_0x38b0c0){if(_0x38b0c0){var _0x5e52d1=typeof _0x10bc24[_0xe126('0x1c')]===_0xe126('0x1d')&&typeof _0x10bc24[_0xe126('0x1e')]==='undefined';var _0x2b0baa=_0x38b0c0['count'];var _0x46c98a=_0x5e52d1?0x0:_0x10bc24[_0xe126('0x1c')];var _0x19b0a3=_0x5e52d1?_0x38b0c0[_0xe126('0x1f')]:_0x10bc24[_0xe126('0x1c')]+_0x10bc24[_0xe126('0x1e')];var _0x20874b;if(_0x19b0a3>=_0x2b0baa){_0x19b0a3=_0x2b0baa;_0x20874b=0xc8;}else{_0x20874b=0xce;}_0x28d7dd[_0xe126('0x19')](_0x20874b);return _0x28d7dd['set'](_0xe126('0x20'),_0x46c98a+'-'+_0x19b0a3+'/'+_0x2b0baa)[_0xe126('0x1b')](_0x38b0c0);}return null;};}function patchUpdates(_0x35ab64){return function(_0x2e5617){try{jsonpatch[_0xe126('0x21')](_0x2e5617,_0x35ab64,!![]);}catch(_0x24076e){return BPromise[_0xe126('0x22')](_0x24076e);}return _0x2e5617[_0xe126('0x23')]();};}function saveUpdates(_0x5257bc,_0x4a1a97){return function(_0xdb6544){if(_0xdb6544){return _0xdb6544[_0xe126('0x24')](_0x5257bc)[_0xe126('0x25')](function(_0x5f1ce1){return _0x5f1ce1;});}return null;};}function removeEntity(_0x5381e1,_0x47f179){return function(_0x4807d3){if(_0x4807d3){return _0x4807d3[_0xe126('0x26')]()['then'](function(){_0x5381e1[_0xe126('0x19')](0xcc)[_0xe126('0x1a')]();});}};}function handleEntityNotFound(_0x4157ed,_0x1674c9){return function(_0x532409){if(!_0x532409){_0x4157ed['sendStatus'](0x194);}return _0x532409;};}function handleError(_0x26482f,_0x4facea){_0x4facea=_0x4facea||0x1f4;return function(_0x3f5de5){logger[_0xe126('0x27')](_0x3f5de5[_0xe126('0x28')]);if(_0x3f5de5['name']){delete _0x3f5de5[_0xe126('0x29')];}_0x26482f[_0xe126('0x19')](_0x4facea)['send'](_0x3f5de5);};}exports[_0xe126('0x2a')]=function(_0x259059,_0x5a8b2a){var _0x9d9e28={},_0x1fb354={},_0x29dec4={'count':0x0,'rows':[]};var _0x181ccc=_['map'](db[_0xe126('0x2b')][_0xe126('0x2c')],function(_0x5e7bab){return{'name':_0x5e7bab['fieldName'],'type':_0x5e7bab[_0xe126('0x2d')]['key']};});_0x1fb354[_0xe126('0x2e')]=_[_0xe126('0x2f')](_0x181ccc,_0xe126('0x29'));_0x1fb354['query']=_[_0xe126('0x30')](_0x259059[_0xe126('0x31')]);_0x1fb354[_0xe126('0x32')]=_['intersection'](_0x1fb354[_0xe126('0x2e')],_0x1fb354[_0xe126('0x31')]);_0x9d9e28['attributes']=_['intersection'](_0x1fb354[_0xe126('0x2e')],qs[_0xe126('0x33')](_0x259059[_0xe126('0x31')][_0xe126('0x33')]));_0x9d9e28[_0xe126('0x34')]=_0x9d9e28[_0xe126('0x34')][_0xe126('0x35')]?_0x9d9e28[_0xe126('0x34')]:_0x1fb354['model'];if(!_0x259059[_0xe126('0x31')][_0xe126('0x36')](_0xe126('0x37'))){_0x9d9e28[_0xe126('0x1e')]=qs[_0xe126('0x1e')](_0x259059[_0xe126('0x31')]['limit']);_0x9d9e28[_0xe126('0x1c')]=qs[_0xe126('0x1c')](_0x259059[_0xe126('0x31')][_0xe126('0x1c')]);}_0x9d9e28[_0xe126('0x38')]=qs['sort'](_0x259059[_0xe126('0x31')][_0xe126('0x39')]);_0x9d9e28[_0xe126('0x3a')]=qs[_0xe126('0x32')](_['pick'](_0x259059[_0xe126('0x31')],_0x1fb354[_0xe126('0x32')]),_0x181ccc);if(_0x259059[_0xe126('0x31')][_0xe126('0x3b')]){_0x9d9e28[_0xe126('0x3a')]=_[_0xe126('0x3c')](_0x9d9e28['where'],{'$or':_[_0xe126('0x2f')](_0x181ccc,function(_0x1a8edf){if(_0x1a8edf[_0xe126('0x2d')]!=='VIRTUAL'){var _0x5073bc={};_0x5073bc[_0x1a8edf[_0xe126('0x29')]]={'$like':'%'+_0x259059[_0xe126('0x31')][_0xe126('0x3b')]+'%'};return _0x5073bc;}})});}_0x9d9e28=_[_0xe126('0x3c')]({},_0x9d9e28,_0x259059[_0xe126('0x3d')]);var _0x1c128d={'where':_0x9d9e28['where']};return db[_0xe126('0x2b')][_0xe126('0x1f')](_0x1c128d)['then'](function(_0x4eb3d7){_0x29dec4[_0xe126('0x1f')]=_0x4eb3d7;if(_0x259059[_0xe126('0x31')]['includeAll']){_0x9d9e28[_0xe126('0x3e')]=[{'all':!![]}];}return db[_0xe126('0x2b')]['findAll'](_0x9d9e28);})[_0xe126('0x25')](function(_0x366754){_0x29dec4['rows']=_0x366754;return _0x29dec4;})[_0xe126('0x25')](respondWithFilteredResult(_0x5a8b2a,_0x9d9e28))['catch'](handleError(_0x5a8b2a,null));};exports[_0xe126('0x3f')]=function(_0x23d1d8,_0x5d5111){var _0x3613de={'raw':!![],'where':{'id':_0x23d1d8[_0xe126('0x40')]['id']}},_0x149b84={};_0x149b84['model']=_[_0xe126('0x30')](db['JscriptyAnswerReport'][_0xe126('0x2c')]);_0x149b84[_0xe126('0x31')]=_[_0xe126('0x30')](_0x23d1d8[_0xe126('0x31')]);_0x149b84[_0xe126('0x32')]=_[_0xe126('0x41')](_0x149b84[_0xe126('0x2e')],_0x149b84[_0xe126('0x31')]);_0x3613de[_0xe126('0x34')]=_[_0xe126('0x41')](_0x149b84[_0xe126('0x2e')],qs['fields'](_0x23d1d8['query'][_0xe126('0x33')]));_0x3613de[_0xe126('0x34')]=_0x3613de['attributes'][_0xe126('0x35')]?_0x3613de[_0xe126('0x34')]:_0x149b84[_0xe126('0x2e')];if(_0x23d1d8[_0xe126('0x31')]['includeAll']){_0x3613de[_0xe126('0x3e')]=[{'all':!![]}];}_0x3613de=_[_0xe126('0x3c')]({},_0x3613de,_0x23d1d8[_0xe126('0x3d')]);return db[_0xe126('0x2b')][_0xe126('0x42')](_0x3613de)[_0xe126('0x25')](handleEntityNotFound(_0x5d5111,null))[_0xe126('0x25')](respondWithResult(_0x5d5111,null))[_0xe126('0x43')](handleError(_0x5d5111,null));};exports[_0xe126('0x44')]=function(_0xccc25d,_0x23007d){return db[_0xe126('0x2b')][_0xe126('0x44')](_0xccc25d['body'],{})['then'](respondWithResult(_0x23007d,0xc9))['catch'](handleError(_0x23007d,null));};exports['update']=function(_0xe642ae,_0x8d5abd){if(_0xe642ae[_0xe126('0x45')]['id']){delete _0xe642ae[_0xe126('0x45')]['id'];}return db[_0xe126('0x2b')][_0xe126('0x42')]({'where':{'id':_0xe642ae[_0xe126('0x40')]['id']}})['then'](handleEntityNotFound(_0x8d5abd,null))['then'](saveUpdates(_0xe642ae[_0xe126('0x45')],null))[_0xe126('0x25')](respondWithResult(_0x8d5abd,null))['catch'](handleError(_0x8d5abd,null));};exports[_0xe126('0x26')]=function(_0x209002,_0x518e43){return db[_0xe126('0x2b')][_0xe126('0x42')]({'where':{'id':_0x209002['params']['id']}})['then'](handleEntityNotFound(_0x518e43,null))[_0xe126('0x25')](removeEntity(_0x518e43,null))[_0xe126('0x43')](handleError(_0x518e43,null));};exports[_0xe126('0x46')]=function(_0x48fbed,_0x31e193){return db['JscriptyAnswerReport'][_0xe126('0x46')]()[_0xe126('0x25')](respondWithResult(_0x31e193,null))['catch'](handleError(_0x31e193,null));};
\ No newline at end of file
+var _0x307e=['../../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','stack','name','index','map','rawAttributes','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','options','includeAll','include','findAll','catch','params','JscriptyAnswerReport','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x3aa130,_0x323ce4){var _0x2de283=function(_0x4970f3){while(--_0x4970f3){_0x3aa130['push'](_0x3aa130['shift']());}};_0x2de283(++_0x323ce4);}(_0x307e,0xc9));var _0xe307=function(_0x239a01,_0x6139f5){_0x239a01=_0x239a01-0x0;var _0x16cf95=_0x307e[_0x239a01];return _0x16cf95;};'use strict';var emlformat=require(_0xe307('0x0'));var rimraf=require(_0xe307('0x1'));var zipdir=require(_0xe307('0x2'));var jsonpatch=require(_0xe307('0x3'));var rp=require(_0xe307('0x4'));var moment=require('moment');var BPromise=require(_0xe307('0x5'));var Mustache=require(_0xe307('0x6'));var util=require('util');var path=require(_0xe307('0x7'));var sox=require('sox');var csv=require(_0xe307('0x8'));var ejs=require(_0xe307('0x9'));var fs=require('fs');var fs_extra=require(_0xe307('0xa'));var _=require('lodash');var squel=require(_0xe307('0xb'));var crypto=require(_0xe307('0xc'));var jsforce=require(_0xe307('0xd'));var deskjs=require(_0xe307('0xe'));var toCsv=require(_0xe307('0x8'));var querystring=require(_0xe307('0xf'));var Papa=require(_0xe307('0x10'));var Redis=require(_0xe307('0x11'));var authService=require(_0xe307('0x12'));var qs=require(_0xe307('0x13'));var as=require(_0xe307('0x14'));var hardwareService=require(_0xe307('0x15'));var logger=require(_0xe307('0x16'))(_0xe307('0x17'));var utils=require(_0xe307('0x18'));var config=require(_0xe307('0x19'));var licenseUtil=require(_0xe307('0x1a'));var db=require(_0xe307('0x1b'))['db'];function respondWithStatusCode(_0x321c99,_0x19fde7){_0x19fde7=_0x19fde7||0xcc;return function(_0x51b237){if(_0x51b237){return _0x321c99[_0xe307('0x1c')](_0x19fde7);}return _0x321c99[_0xe307('0x1d')](_0x19fde7)['end']();};}function respondWithResult(_0x3faac5,_0x2eeb8e){_0x2eeb8e=_0x2eeb8e||0xc8;return function(_0x2d3a73){if(_0x2d3a73){return _0x3faac5[_0xe307('0x1d')](_0x2eeb8e)[_0xe307('0x1e')](_0x2d3a73);}};}function respondWithFilteredResult(_0x22a241,_0x46b0d6){return function(_0x58f715){if(_0x58f715){var _0x2abf63=typeof _0x46b0d6[_0xe307('0x1f')]===_0xe307('0x20')&&typeof _0x46b0d6[_0xe307('0x21')]===_0xe307('0x20');var _0x52f83b=_0x58f715['count'];var _0xbc07f=_0x2abf63?0x0:_0x46b0d6['offset'];var _0x37a8c9=_0x2abf63?_0x58f715[_0xe307('0x22')]:_0x46b0d6[_0xe307('0x1f')]+_0x46b0d6[_0xe307('0x21')];var _0x40e290;if(_0x37a8c9>=_0x52f83b){_0x37a8c9=_0x52f83b;_0x40e290=0xc8;}else{_0x40e290=0xce;}_0x22a241[_0xe307('0x1d')](_0x40e290);return _0x22a241[_0xe307('0x23')](_0xe307('0x24'),_0xbc07f+'-'+_0x37a8c9+'/'+_0x52f83b)[_0xe307('0x1e')](_0x58f715);}return null;};}function patchUpdates(_0x155208){return function(_0x1abdd1){try{jsonpatch[_0xe307('0x25')](_0x1abdd1,_0x155208,!![]);}catch(_0x394bde){return BPromise[_0xe307('0x26')](_0x394bde);}return _0x1abdd1[_0xe307('0x27')]();};}function saveUpdates(_0x48ab0e,_0x269e06){return function(_0x1ec000){if(_0x1ec000){return _0x1ec000[_0xe307('0x28')](_0x48ab0e)[_0xe307('0x29')](function(_0x4fdf45){return _0x4fdf45;});}return null;};}function removeEntity(_0x173244,_0x5d8bcb){return function(_0x9c9503){if(_0x9c9503){return _0x9c9503[_0xe307('0x2a')]()[_0xe307('0x29')](function(){_0x173244['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x405ef6,_0x11fe69){return function(_0x3b169f){if(!_0x3b169f){_0x405ef6[_0xe307('0x1c')](0x194);}return _0x3b169f;};}function handleError(_0xe4e3ee,_0x22bb34){_0x22bb34=_0x22bb34||0x1f4;return function(_0x2651ec){logger[_0xe307('0x2b')](_0x2651ec[_0xe307('0x2c')]);if(_0x2651ec['name']){delete _0x2651ec[_0xe307('0x2d')];}_0xe4e3ee[_0xe307('0x1d')](_0x22bb34)['send'](_0x2651ec);};}exports[_0xe307('0x2e')]=function(_0x51769d,_0x51586d){var _0x2e36f2={},_0x2b0f20={},_0x2ac72a={'count':0x0,'rows':[]};var _0x5758a4=_[_0xe307('0x2f')](db['JscriptyAnswerReport'][_0xe307('0x30')],function(_0x4b17ce){return{'name':_0x4b17ce['fieldName'],'type':_0x4b17ce['type']['key']};});_0x2b0f20[_0xe307('0x31')]=_[_0xe307('0x2f')](_0x5758a4,'name');_0x2b0f20[_0xe307('0x32')]=_[_0xe307('0x33')](_0x51769d[_0xe307('0x32')]);_0x2b0f20[_0xe307('0x34')]=_['intersection'](_0x2b0f20[_0xe307('0x31')],_0x2b0f20['query']);_0x2e36f2['attributes']=_[_0xe307('0x35')](_0x2b0f20[_0xe307('0x31')],qs[_0xe307('0x36')](_0x51769d[_0xe307('0x32')]['fields']));_0x2e36f2[_0xe307('0x37')]=_0x2e36f2['attributes'][_0xe307('0x38')]?_0x2e36f2[_0xe307('0x37')]:_0x2b0f20['model'];if(!_0x51769d[_0xe307('0x32')][_0xe307('0x39')](_0xe307('0x3a'))){_0x2e36f2[_0xe307('0x21')]=qs['limit'](_0x51769d['query'][_0xe307('0x21')]);_0x2e36f2[_0xe307('0x1f')]=qs['offset'](_0x51769d[_0xe307('0x32')][_0xe307('0x1f')]);}_0x2e36f2[_0xe307('0x3b')]=qs['sort'](_0x51769d[_0xe307('0x32')][_0xe307('0x3c')]);_0x2e36f2['where']=qs['filters'](_['pick'](_0x51769d[_0xe307('0x32')],_0x2b0f20['filters']),_0x5758a4);if(_0x51769d[_0xe307('0x32')][_0xe307('0x3d')]){_0x2e36f2[_0xe307('0x3e')]=_[_0xe307('0x3f')](_0x2e36f2['where'],{'$or':_[_0xe307('0x2f')](_0x5758a4,function(_0xd3a160){if(_0xd3a160['type']!=='VIRTUAL'){var _0x8f65ce={};_0x8f65ce[_0xd3a160['name']]={'$like':'%'+_0x51769d['query'][_0xe307('0x3d')]+'%'};return _0x8f65ce;}})});}_0x2e36f2=_[_0xe307('0x3f')]({},_0x2e36f2,_0x51769d[_0xe307('0x40')]);var _0x35f3e1={'where':_0x2e36f2[_0xe307('0x3e')]};return db['JscriptyAnswerReport']['count'](_0x35f3e1)[_0xe307('0x29')](function(_0x2b65d0){_0x2ac72a[_0xe307('0x22')]=_0x2b65d0;if(_0x51769d['query'][_0xe307('0x41')]){_0x2e36f2[_0xe307('0x42')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xe307('0x43')](_0x2e36f2);})['then'](function(_0x18af6a){_0x2ac72a['rows']=_0x18af6a;return _0x2ac72a;})['then'](respondWithFilteredResult(_0x51586d,_0x2e36f2))[_0xe307('0x44')](handleError(_0x51586d,null));};exports['show']=function(_0xc8468e,_0x137322){var _0x24cad8={'raw':!![],'where':{'id':_0xc8468e[_0xe307('0x45')]['id']}},_0xc81c05={};_0xc81c05[_0xe307('0x31')]=_[_0xe307('0x33')](db[_0xe307('0x46')]['rawAttributes']);_0xc81c05[_0xe307('0x32')]=_[_0xe307('0x33')](_0xc8468e[_0xe307('0x32')]);_0xc81c05[_0xe307('0x34')]=_[_0xe307('0x35')](_0xc81c05[_0xe307('0x31')],_0xc81c05[_0xe307('0x32')]);_0x24cad8[_0xe307('0x37')]=_[_0xe307('0x35')](_0xc81c05['model'],qs[_0xe307('0x36')](_0xc8468e[_0xe307('0x32')][_0xe307('0x36')]));_0x24cad8[_0xe307('0x37')]=_0x24cad8[_0xe307('0x37')][_0xe307('0x38')]?_0x24cad8[_0xe307('0x37')]:_0xc81c05['model'];if(_0xc8468e[_0xe307('0x32')]['includeAll']){_0x24cad8[_0xe307('0x42')]=[{'all':!![]}];}_0x24cad8=_[_0xe307('0x3f')]({},_0x24cad8,_0xc8468e['options']);return db['JscriptyAnswerReport'][_0xe307('0x47')](_0x24cad8)[_0xe307('0x29')](handleEntityNotFound(_0x137322,null))[_0xe307('0x29')](respondWithResult(_0x137322,null))[_0xe307('0x44')](handleError(_0x137322,null));};exports['create']=function(_0x23bd80,_0x1c6dd6){return db[_0xe307('0x46')][_0xe307('0x48')](_0x23bd80[_0xe307('0x49')],{})[_0xe307('0x29')](respondWithResult(_0x1c6dd6,0xc9))['catch'](handleError(_0x1c6dd6,null));};exports[_0xe307('0x28')]=function(_0x407303,_0xf2873b){if(_0x407303[_0xe307('0x49')]['id']){delete _0x407303[_0xe307('0x49')]['id'];}return db[_0xe307('0x46')][_0xe307('0x47')]({'where':{'id':_0x407303[_0xe307('0x45')]['id']}})[_0xe307('0x29')](handleEntityNotFound(_0xf2873b,null))[_0xe307('0x29')](saveUpdates(_0x407303['body'],null))[_0xe307('0x29')](respondWithResult(_0xf2873b,null))['catch'](handleError(_0xf2873b,null));};exports[_0xe307('0x2a')]=function(_0x15581e,_0x69d083){return db[_0xe307('0x46')][_0xe307('0x47')]({'where':{'id':_0x15581e[_0xe307('0x45')]['id']}})['then'](handleEntityNotFound(_0x69d083,null))[_0xe307('0x29')](removeEntity(_0x69d083,null))['catch'](handleError(_0x69d083,null));};exports[_0xe307('0x4a')]=function(_0x43518f,_0x456b32){return db['JscriptyAnswerReport']['describe']()[_0xe307('0x29')](respondWithResult(_0x456b32,null))[_0xe307('0x44')](handleError(_0x456b32,null));};
\ No newline at end of file
index f7d3ed2..4d647ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fcc=['report_jscripty_answers','lodash','../../config/logger','api','bluebird','request-promise','rimraf','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport'];(function(_0x2244e5,_0x2c20bb){var _0x99c38c=function(_0x3f6a39){while(--_0x3f6a39){_0x2244e5['push'](_0x2244e5['shift']());}};_0x99c38c(++_0x2c20bb);}(_0x9fcc,0x18d));var _0xc9fc=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x9fcc[_0x465a0c];return _0x1e202e;};'use strict';var _=require(_0xc9fc('0x0'));var util=require('util');var logger=require(_0xc9fc('0x1'))(_0xc9fc('0x2'));var moment=require('moment');var BPromise=require(_0xc9fc('0x3'));var rp=require(_0xc9fc('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc9fc('0x5'));var config=require('../../config/environment');var attributes=require(_0xc9fc('0x6'));module[_0xc9fc('0x7')]=function(_0x343f6e,_0xcf0164){return _0x343f6e[_0xc9fc('0x8')](_0xc9fc('0x9'),attributes,{'tableName':_0xc9fc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbad1=['util','../../config/logger','api','moment','./jscriptyAnswerReport.attributes','exports','JscriptyAnswerReport','report_jscripty_answers','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbad1,0x1ee));var _0x1bad=function(_0x58fe46,_0x4dc69a){_0x58fe46=_0x58fe46-0x0;var _0x5b36c2=_0xbad1[_0x58fe46];return _0x5b36c2;};'use strict';var _=require(_0x1bad('0x0'));var util=require(_0x1bad('0x1'));var logger=require(_0x1bad('0x2'))(_0x1bad('0x3'));var moment=require(_0x1bad('0x4'));var BPromise=require('bluebird');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(_0x1bad('0x5'));module[_0x1bad('0x6')]=function(_0x565726,_0x20fe6d){return _0x565726['define'](_0x1bad('0x7'),attributes,{'tableName':_0x1bad('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f6af02b..87751f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd346=['jayson/promise','client','http','request','then','info','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3358ba,_0x24c5fc){var _0x296e73=function(_0x843ff3){while(--_0x843ff3){_0x3358ba['push'](_0x3358ba['shift']());}};_0x296e73(++_0x24c5fc);}(_0xd346,0x87));var _0x6d34=function(_0xd3ef3d,_0x7a3c5a){_0xd3ef3d=_0xd3ef3d-0x0;var _0xbec86c=_0xd346[_0xd3ef3d];return _0xbec86c;};'use strict';var _=require(_0x6d34('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x6d34('0x1'));var rs=require(_0x6d34('0x2'));var fs=require('fs');var Redis=require(_0x6d34('0x3'));var db=require(_0x6d34('0x4'))['db'];var utils=require(_0x6d34('0x5'));var logger=require(_0x6d34('0x6'))(_0x6d34('0x7'));var config=require(_0x6d34('0x8'));var jayson=require(_0x6d34('0x9'));var client=jayson[_0x6d34('0xa')][_0x6d34('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x148387,_0x142a65,_0x2f1e61){return new BPromise(function(_0x2a4dfc,_0x26e51b){return client[_0x6d34('0xc')](_0x148387,_0x2f1e61)[_0x6d34('0xd')](function(_0x5b7f47){logger[_0x6d34('0xe')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x142a65,_0x6d34('0xf'));logger[_0x6d34('0x10')](_0x6d34('0x11'),_0x142a65,'request\x20sent',JSON['stringify'](_0x5b7f47));if(_0x5b7f47['error']){if(_0x5b7f47[_0x6d34('0x12')][_0x6d34('0x13')]===0x1f4){logger[_0x6d34('0x12')](_0x6d34('0x14'),_0x142a65,_0x5b7f47['error']['message']);return _0x26e51b(_0x5b7f47[_0x6d34('0x12')][_0x6d34('0x15')]);}logger[_0x6d34('0x12')](_0x6d34('0x14'),_0x142a65,_0x5b7f47[_0x6d34('0x12')][_0x6d34('0x15')]);return _0x2a4dfc(_0x5b7f47[_0x6d34('0x12')]['message']);}else{logger[_0x6d34('0xe')](_0x6d34('0x14'),_0x142a65,_0x6d34('0xf'));_0x2a4dfc(_0x5b7f47[_0x6d34('0x16')][_0x6d34('0x15')]);}})[_0x6d34('0x17')](function(_0x30af95){logger[_0x6d34('0x12')](_0x6d34('0x14'),_0x142a65,_0x30af95);_0x26e51b(_0x30af95);});});}
\ No newline at end of file
+var _0x7fe4=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x7fe4,0xa4));var _0x47fe=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x7fe4[_0x1cc8fe];return _0x230054;};'use strict';var _=require(_0x47fe('0x0'));var util=require(_0x47fe('0x1'));var moment=require(_0x47fe('0x2'));var BPromise=require(_0x47fe('0x3'));var rs=require(_0x47fe('0x4'));var fs=require('fs');var Redis=require(_0x47fe('0x5'));var db=require(_0x47fe('0x6'))['db'];var utils=require(_0x47fe('0x7'));var logger=require(_0x47fe('0x8'))(_0x47fe('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x47fe('0xa')][_0x47fe('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x49bdaa,_0x435928,_0x1b52a8){return new BPromise(function(_0x52bbcb,_0x10a2d9){return client[_0x47fe('0xc')](_0x49bdaa,_0x1b52a8)['then'](function(_0x3c1363){logger[_0x47fe('0xd')](_0x47fe('0xe'),_0x435928,_0x47fe('0xf'));logger[_0x47fe('0x10')](_0x47fe('0x11'),_0x435928,'request\x20sent',JSON[_0x47fe('0x12')](_0x3c1363));if(_0x3c1363[_0x47fe('0x13')]){if(_0x3c1363['error'][_0x47fe('0x14')]===0x1f4){logger['error'](_0x47fe('0xe'),_0x435928,_0x3c1363['error']['message']);return _0x10a2d9(_0x3c1363['error'][_0x47fe('0x15')]);}logger['error'](_0x47fe('0xe'),_0x435928,_0x3c1363[_0x47fe('0x13')][_0x47fe('0x15')]);return _0x52bbcb(_0x3c1363[_0x47fe('0x13')]['message']);}else{logger[_0x47fe('0xd')](_0x47fe('0xe'),_0x435928,_0x47fe('0xf'));_0x52bbcb(_0x3c1363[_0x47fe('0x16')][_0x47fe('0x15')]);}})[_0x47fe('0x17')](function(_0x3b2d46){logger['error'](_0x47fe('0xe'),_0x435928,_0x3b2d46);_0x10a2d9(_0x3b2d46);});});}
\ No newline at end of file
index 2b90d77..d26a092 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8fa=['/:id/answers','getAnswers','30s','getSummary','post','/:id/clone','delete','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./jscriptyProject.controller','isAuthenticated','get','/:id','show','/:id/sessions','getSessions'];(function(_0x280b74,_0x166a2c){var _0x5663c1=function(_0x33251f){while(--_0x33251f){_0x280b74['push'](_0x280b74['shift']());}};_0x5663c1(++_0x166a2c);}(_0xe8fa,0x168));var _0xae8f=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0xe8fa[_0x36884e];return _0x1cc367;};'use strict';var multer=require(_0xae8f('0x0'));var util=require('util');var path=require(_0xae8f('0x1'));var timeout=require(_0xae8f('0x2'));var express=require(_0xae8f('0x3'));var router=express[_0xae8f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xae8f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xae8f('0x6'));var controller=require(_0xae8f('0x7'));router['get']('/',auth[_0xae8f('0x8')](),controller['index']);router[_0xae8f('0x9')](_0xae8f('0xa'),auth['isAuthenticated'](),controller[_0xae8f('0xb')]);router[_0xae8f('0x9')](_0xae8f('0xc'),auth[_0xae8f('0x8')](),controller[_0xae8f('0xd')]);router['get'](_0xae8f('0xe'),auth[_0xae8f('0x8')](),controller[_0xae8f('0xf')]);router['get']('/:id/summary',auth[_0xae8f('0x8')](),timeout(_0xae8f('0x10')),controller[_0xae8f('0x11')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xae8f('0x12')](_0xae8f('0x13'),auth[_0xae8f('0x8')](),controller['clone']);router['put'](_0xae8f('0xa'),auth[_0xae8f('0x8')](),controller['update']);router[_0xae8f('0x14')](_0xae8f('0xa'),auth[_0xae8f('0x8')](),controller['destroy']);module[_0xae8f('0x15')]=router;
\ No newline at end of file
+var _0x22cc=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/sessions','getSessions','getAnswers','/:id/summary','30s','getSummary','post','/:id/clone','clone','put','delete','destroy','exports','path','Router','fs-extra','../../components/auth/service'];(function(_0x6cb77e,_0x91c410){var _0x58f629=function(_0x7f678c){while(--_0x7f678c){_0x6cb77e['push'](_0x6cb77e['shift']());}};_0x58f629(++_0x91c410);}(_0x22cc,0x14c));var _0xc22c=function(_0x46efd7,_0x43f84d){_0x46efd7=_0x46efd7-0x0;var _0x5637e4=_0x22cc[_0x46efd7];return _0x5637e4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc22c('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc22c('0x1')]();var fs_extra=require(_0xc22c('0x2'));var auth=require(_0xc22c('0x3'));var interaction=require(_0xc22c('0x4'));var config=require(_0xc22c('0x5'));var controller=require('./jscriptyProject.controller');router[_0xc22c('0x6')]('/',auth[_0xc22c('0x7')](),controller[_0xc22c('0x8')]);router[_0xc22c('0x6')](_0xc22c('0x9'),auth[_0xc22c('0x7')](),controller[_0xc22c('0xa')]);router[_0xc22c('0x6')](_0xc22c('0xb'),auth[_0xc22c('0x7')](),controller[_0xc22c('0xc')]);router[_0xc22c('0x6')]('/:id/answers',auth[_0xc22c('0x7')](),controller[_0xc22c('0xd')]);router[_0xc22c('0x6')](_0xc22c('0xe'),auth[_0xc22c('0x7')](),timeout(_0xc22c('0xf')),controller[_0xc22c('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xc22c('0x11')](_0xc22c('0x12'),auth[_0xc22c('0x7')](),controller[_0xc22c('0x13')]);router[_0xc22c('0x14')]('/:id',auth[_0xc22c('0x7')](),controller['update']);router[_0xc22c('0x15')](_0xc22c('0x9'),auth[_0xc22c('0x7')](),controller[_0xc22c('0x16')]);module[_0xc22c('0x17')]=router;
\ No newline at end of file
index 6bd4be3..22442e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d77=['stringify','isString','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','name','description','BOOLEAN','sequelize','lodash','util','STRING','TEXT','long','isObjectLike','setDataValue','formData'];(function(_0x3b5bca,_0x326805){var _0x39833=function(_0x16f56f){while(--_0x16f56f){_0x3b5bca['push'](_0x3b5bca['shift']());}};_0x39833(++_0x326805);}(_0x7d77,0xf6));var _0x77d7=function(_0x215e65,_0x183f97){_0x215e65=_0x215e65-0x0;var _0xa85842=_0x7d77[_0x215e65];return _0xa85842;};'use strict';var Sequelize=require(_0x77d7('0x0'));var _=require(_0x77d7('0x1'));var util=require(_0x77d7('0x2'));module['exports']={'name':{'type':Sequelize[_0x77d7('0x3')],'unique':'name'},'description':{'type':Sequelize[_0x77d7('0x3')]},'formData':{'type':Sequelize[_0x77d7('0x4')](_0x77d7('0x5')),'set':function(_0x2f9b03){if(_[_0x77d7('0x6')](_0x2f9b03)){this[_0x77d7('0x7')](_0x77d7('0x8'),JSON[_0x77d7('0x9')](_0x2f9b03));}else if(_[_0x77d7('0xa')](_0x2f9b03)){this[_0x77d7('0x7')](_0x77d7('0x8'),_0x2f9b03);}else{this[_0x77d7('0x7')](_0x77d7('0x8'),util[_0x77d7('0xb')](_0x77d7('0xc'),this[_0x77d7('0xd')](_0x77d7('0xe'))||'',this[_0x77d7('0xd')](_0x77d7('0xf'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x77d7('0x10')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x77d7('0x10')],'defaultValue':![]}};
\ No newline at end of file
+var _0xdf3f=['exports','STRING','name','TEXT','long','isObjectLike','setDataValue','stringify','isString','formData','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','description','sequelize','util'];(function(_0x414bcf,_0x1c6ca7){var _0x331cbd=function(_0x131070){while(--_0x131070){_0x414bcf['push'](_0x414bcf['shift']());}};_0x331cbd(++_0x1c6ca7);}(_0xdf3f,0x148));var _0xfdf3=function(_0x330723,_0x8de382){_0x330723=_0x330723-0x0;var _0x60c546=_0xdf3f[_0x330723];return _0x60c546;};'use strict';var Sequelize=require(_0xfdf3('0x0'));var _=require('lodash');var util=require(_0xfdf3('0x1'));module[_0xfdf3('0x2')]={'name':{'type':Sequelize[_0xfdf3('0x3')],'unique':_0xfdf3('0x4')},'description':{'type':Sequelize[_0xfdf3('0x3')]},'formData':{'type':Sequelize[_0xfdf3('0x5')](_0xfdf3('0x6')),'set':function(_0x15f389){if(_[_0xfdf3('0x7')](_0x15f389)){this[_0xfdf3('0x8')]('formData',JSON[_0xfdf3('0x9')](_0x15f389));}else if(_[_0xfdf3('0xa')](_0x15f389)){this[_0xfdf3('0x8')](_0xfdf3('0xb'),_0x15f389);}else{this[_0xfdf3('0x8')](_0xfdf3('0xb'),util[_0xfdf3('0xc')](_0xfdf3('0xd'),this['getDataValue'](_0xfdf3('0x4'))||'',this['getDataValue'](_0xfdf3('0xe'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 6488fce..ddd15d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e38=['Content-Range','apply','reject','save','update','then','destroy','get','Projects','UserProfileResource','error','stack','name','send','index','map','JscriptyProject','rawAttributes','type','key','query','keys','filters','intersection','fields','length','model','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','attributes','find','create','user','UserProfileSection','userProfileId','autoAssociation','params','createdAt','updatedAt','body','omit','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getSessions','findOne','JscriptySessionReport','JscriptyAnswerReport','number','fromCharCode','indexOf','toString','replace','getSummary','starttime','parse','startTime','-createdAt','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','questionId','answer','push','isEmpty','now','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count'];(function(_0x5069f7,_0x4b5f46){var _0x519491=function(_0x467415){while(--_0x467415){_0x5069f7['push'](_0x5069f7['shift']());}};_0x519491(++_0x4b5f46);}(_0x9e38,0x155));var _0x89e3=function(_0x29cf89,_0x10ce1f){_0x29cf89=_0x29cf89-0x0;var _0x34ac61=_0x9e38[_0x29cf89];return _0x34ac61;};'use strict';var emlformat=require(_0x89e3('0x0'));var rimraf=require(_0x89e3('0x1'));var zipdir=require(_0x89e3('0x2'));var jsonpatch=require(_0x89e3('0x3'));var rp=require(_0x89e3('0x4'));var moment=require(_0x89e3('0x5'));var BPromise=require(_0x89e3('0x6'));var Mustache=require(_0x89e3('0x7'));var util=require(_0x89e3('0x8'));var path=require(_0x89e3('0x9'));var sox=require(_0x89e3('0xa'));var csv=require(_0x89e3('0xb'));var ejs=require(_0x89e3('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x89e3('0xd'));var squel=require(_0x89e3('0xe'));var crypto=require(_0x89e3('0xf'));var jsforce=require(_0x89e3('0x10'));var deskjs=require(_0x89e3('0x11'));var toCsv=require(_0x89e3('0xb'));var querystring=require(_0x89e3('0x12'));var Papa=require(_0x89e3('0x13'));var Redis=require(_0x89e3('0x14'));var authService=require(_0x89e3('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x89e3('0x16'));var hardwareService=require(_0x89e3('0x17'));var logger=require(_0x89e3('0x18'))(_0x89e3('0x19'));var utils=require('../../config/utils');var config=require(_0x89e3('0x1a'));var licenseUtil=require(_0x89e3('0x1b'));var db=require(_0x89e3('0x1c'))['db'];function respondWithStatusCode(_0x4b1b74,_0x1d84c5){_0x1d84c5=_0x1d84c5||0xcc;return function(_0x5317d9){if(_0x5317d9){return _0x4b1b74[_0x89e3('0x1d')](_0x1d84c5);}return _0x4b1b74[_0x89e3('0x1e')](_0x1d84c5)[_0x89e3('0x1f')]();};}function respondWithResult(_0x3a5ed4,_0x476d4e){_0x476d4e=_0x476d4e||0xc8;return function(_0x463b09){if(_0x463b09){return _0x3a5ed4[_0x89e3('0x1e')](_0x476d4e)[_0x89e3('0x20')](_0x463b09);}};}function respondWithFilteredResult(_0x2dea23,_0x722a17){return function(_0x3439bc){if(_0x3439bc){var _0x16742e=typeof _0x722a17[_0x89e3('0x21')]===_0x89e3('0x22')&&typeof _0x722a17[_0x89e3('0x23')]==='undefined';var _0x38688a=_0x3439bc['count'];var _0x5b41d9=_0x16742e?0x0:_0x722a17[_0x89e3('0x21')];var _0x5e3766=_0x16742e?_0x3439bc[_0x89e3('0x24')]:_0x722a17[_0x89e3('0x21')]+_0x722a17[_0x89e3('0x23')];var _0x1b475e;if(_0x5e3766>=_0x38688a){_0x5e3766=_0x38688a;_0x1b475e=0xc8;}else{_0x1b475e=0xce;}_0x2dea23[_0x89e3('0x1e')](_0x1b475e);return _0x2dea23['set'](_0x89e3('0x25'),_0x5b41d9+'-'+_0x5e3766+'/'+_0x38688a)[_0x89e3('0x20')](_0x3439bc);}return null;};}function patchUpdates(_0x5f51a5){return function(_0x2d9300){try{jsonpatch[_0x89e3('0x26')](_0x2d9300,_0x5f51a5,!![]);}catch(_0x5c07e2){return BPromise[_0x89e3('0x27')](_0x5c07e2);}return _0x2d9300[_0x89e3('0x28')]();};}function saveUpdates(_0x4c3f06,_0x207499){return function(_0x395864){if(_0x395864){return _0x395864[_0x89e3('0x29')](_0x4c3f06)[_0x89e3('0x2a')](function(_0x21045e){return _0x21045e;});}return null;};}function removeEntity(_0x531afe,_0x36772c){return function(_0x14a536){if(_0x14a536){return _0x14a536[_0x89e3('0x2b')]()[_0x89e3('0x2a')](function(){var _0x1c555d=_0x14a536[_0x89e3('0x2c')]({'plain':!![]});var _0x39e6d6=_0x89e3('0x2d');return db[_0x89e3('0x2e')][_0x89e3('0x2b')]({'where':{'type':_0x39e6d6,'resourceId':_0x1c555d['id']}})['then'](function(){return _0x14a536;});})[_0x89e3('0x2a')](function(){_0x531afe[_0x89e3('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45404d,_0x229fcb){return function(_0x33789c){if(!_0x33789c){_0x45404d[_0x89e3('0x1d')](0x194);}return _0x33789c;};}function handleError(_0x164568,_0x384c49){_0x384c49=_0x384c49||0x1f4;return function(_0x1583c2){logger[_0x89e3('0x2f')](_0x1583c2[_0x89e3('0x30')]);if(_0x1583c2['name']){delete _0x1583c2[_0x89e3('0x31')];}_0x164568[_0x89e3('0x1e')](_0x384c49)[_0x89e3('0x32')](_0x1583c2);};}exports[_0x89e3('0x33')]=function(_0x27212,_0x121926){var _0xd341e1={},_0x556c6f={},_0x2cb5b9={'count':0x0,'rows':[]};var _0x2debfd=_[_0x89e3('0x34')](db[_0x89e3('0x35')][_0x89e3('0x36')],function(_0x406ee4){return{'name':_0x406ee4['fieldName'],'type':_0x406ee4[_0x89e3('0x37')][_0x89e3('0x38')]};});_0x556c6f['model']=_[_0x89e3('0x34')](_0x2debfd,_0x89e3('0x31'));_0x556c6f[_0x89e3('0x39')]=_[_0x89e3('0x3a')](_0x27212['query']);_0x556c6f[_0x89e3('0x3b')]=_[_0x89e3('0x3c')](_0x556c6f['model'],_0x556c6f['query']);_0xd341e1['attributes']=_['intersection'](_0x556c6f['model'],qs[_0x89e3('0x3d')](_0x27212['query'][_0x89e3('0x3d')]));_0xd341e1['attributes']=_0xd341e1['attributes'][_0x89e3('0x3e')]?_0xd341e1['attributes']:_0x556c6f[_0x89e3('0x3f')];if(!_0x27212[_0x89e3('0x39')][_0x89e3('0x40')](_0x89e3('0x41'))){_0xd341e1[_0x89e3('0x23')]=qs[_0x89e3('0x23')](_0x27212['query']['limit']);_0xd341e1[_0x89e3('0x21')]=qs[_0x89e3('0x21')](_0x27212['query'][_0x89e3('0x21')]);}_0xd341e1[_0x89e3('0x42')]=qs[_0x89e3('0x43')](_0x27212[_0x89e3('0x39')][_0x89e3('0x43')]);_0xd341e1[_0x89e3('0x44')]=qs[_0x89e3('0x3b')](_[_0x89e3('0x45')](_0x27212[_0x89e3('0x39')],_0x556c6f[_0x89e3('0x3b')]),_0x2debfd);if(_0x27212[_0x89e3('0x39')][_0x89e3('0x46')]){_0xd341e1['where']=_[_0x89e3('0x47')](_0xd341e1[_0x89e3('0x44')],{'$or':_['map'](_0x2debfd,function(_0x40c24e){if(_0x40c24e[_0x89e3('0x37')]!==_0x89e3('0x48')){var _0x16ca0b={};_0x16ca0b[_0x40c24e[_0x89e3('0x31')]]={'$like':'%'+_0x27212[_0x89e3('0x39')]['filter']+'%'};return _0x16ca0b;}})});}_0xd341e1=_[_0x89e3('0x47')]({},_0xd341e1,_0x27212[_0x89e3('0x49')]);var _0x1627e8={'where':_0xd341e1[_0x89e3('0x44')]};return db[_0x89e3('0x35')][_0x89e3('0x24')](_0x1627e8)[_0x89e3('0x2a')](function(_0x279c90){_0x2cb5b9[_0x89e3('0x24')]=_0x279c90;if(_0x27212['query'][_0x89e3('0x4a')]){_0xd341e1[_0x89e3('0x4b')]=[{'all':!![]}];}return db[_0x89e3('0x35')][_0x89e3('0x4c')](_0xd341e1);})[_0x89e3('0x2a')](function(_0x3ff8c7){_0x2cb5b9[_0x89e3('0x4d')]=_0x3ff8c7;return _0x2cb5b9;})['then'](respondWithFilteredResult(_0x121926,_0xd341e1))[_0x89e3('0x4e')](handleError(_0x121926,null));};exports[_0x89e3('0x4f')]=function(_0x189655,_0x3c10db){var _0x5b5f8e={'raw':![],'where':{'id':_0x189655['params']['id']}},_0x3f7758={};_0x3f7758[_0x89e3('0x3f')]=_['keys'](db[_0x89e3('0x35')][_0x89e3('0x36')]);_0x3f7758[_0x89e3('0x39')]=_['keys'](_0x189655['query']);_0x3f7758[_0x89e3('0x3b')]=_[_0x89e3('0x3c')](_0x3f7758['model'],_0x3f7758[_0x89e3('0x39')]);_0x5b5f8e[_0x89e3('0x50')]=_[_0x89e3('0x3c')](_0x3f7758['model'],qs[_0x89e3('0x3d')](_0x189655[_0x89e3('0x39')]['fields']));_0x5b5f8e[_0x89e3('0x50')]=_0x5b5f8e[_0x89e3('0x50')]['length']?_0x5b5f8e[_0x89e3('0x50')]:_0x3f7758['model'];if(_0x189655['query']['includeAll']){_0x5b5f8e['include']=[{'all':!![]}];}_0x5b5f8e=_[_0x89e3('0x47')]({},_0x5b5f8e,_0x189655[_0x89e3('0x49')]);return db[_0x89e3('0x35')][_0x89e3('0x51')](_0x5b5f8e)[_0x89e3('0x2a')](handleEntityNotFound(_0x3c10db,null))[_0x89e3('0x2a')](respondWithResult(_0x3c10db,null))['catch'](handleError(_0x3c10db,null));};exports[_0x89e3('0x52')]=function(_0x4ed525,_0x29dca3){return db[_0x89e3('0x35')][_0x89e3('0x52')](_0x4ed525['body'],{})[_0x89e3('0x2a')](function(_0x16f887){var _0x3736a5=_0x4ed525[_0x89e3('0x53')][_0x89e3('0x2c')]({'plain':!![]});if(!_0x3736a5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3736a5['role']===_0x89e3('0x53')){var _0x38cd02=_0x16f887[_0x89e3('0x2c')]({'plain':!![]});var _0x4ea920=_0x89e3('0x2d');return db[_0x89e3('0x54')][_0x89e3('0x51')]({'where':{'name':_0x4ea920,'userProfileId':_0x3736a5[_0x89e3('0x55')]},'raw':!![]})[_0x89e3('0x2a')](function(_0x4824dc){if(_0x4824dc&&_0x4824dc[_0x89e3('0x56')]===0x0){return db[_0x89e3('0x2e')][_0x89e3('0x52')]({'name':_0x38cd02[_0x89e3('0x31')],'resourceId':_0x38cd02['id'],'type':_0x4824dc['name'],'sectionId':_0x4824dc['id']},{})['then'](function(){return _0x16f887;});}else{return _0x16f887;}})[_0x89e3('0x4e')](function(_0x5a618b){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5a618b);throw _0x5a618b;});}return _0x16f887;})[_0x89e3('0x2a')](respondWithResult(_0x29dca3,0xc9))[_0x89e3('0x4e')](handleError(_0x29dca3,null));};exports['clone']=function(_0xb49924,_0x163e74){var _0xc23d3f={'where':{'id':_0xb49924[_0x89e3('0x57')]['id']}},_0x53a2ac={};_0x53a2ac['model']=_['keys'](db['JscriptyProject'][_0x89e3('0x36')]);_0xc23d3f['attributes']=_['intersection'](_0x53a2ac[_0x89e3('0x3f')],qs[_0x89e3('0x3d')](_0xb49924[_0x89e3('0x39')][_0x89e3('0x3d')]));_0xc23d3f[_0x89e3('0x50')]=_0xc23d3f[_0x89e3('0x50')][_0x89e3('0x3e')]?_0xc23d3f[_0x89e3('0x50')]:_0x53a2ac['model'];if(_0xb49924[_0x89e3('0x39')][_0x89e3('0x4a')]){_0xc23d3f[_0x89e3('0x4b')]=[{'all':!![]}];}_0xc23d3f=_[_0x89e3('0x47')]({},_0xc23d3f,_0xb49924['options']);return db[_0x89e3('0x35')][_0x89e3('0x51')](_0xc23d3f)[_0x89e3('0x2a')](handleEntityNotFound(_0x163e74,null))['then'](function(_0x3a791f){if(_0x3a791f){var _0x451018=_0x3a791f[_0x89e3('0x2c')]({'plain':!![]});_0x451018=qs['omit'](_0x451018,['id',_0x89e3('0x58'),_0x89e3('0x59')]);_0xb49924[_0x89e3('0x5a')]=_[_0x89e3('0x5b')](_0xb49924[_0x89e3('0x5a')],['id',_0x89e3('0x58'),_0x89e3('0x59')]);return db[_0x89e3('0x35')]['create'](_['merge'](_0x451018,_0xb49924[_0x89e3('0x5a')]),{'include':_0xb49924[_0x89e3('0x39')][_0x89e3('0x4a')]?[{'all':!![]}]:undefined})['then'](function(_0x135f9d){var _0x1b315f=_0xb49924[_0x89e3('0x53')]['get']({'plain':!![]});if(!_0x1b315f)throw new Error(_0x89e3('0x5c'));if(_0x1b315f[_0x89e3('0x5d')]===_0x89e3('0x53')){var _0x38b456=_0x135f9d['get']({'plain':!![]});var _0x53a05b=_0x89e3('0x2d');return db[_0x89e3('0x54')]['find']({'where':{'name':_0x53a05b,'userProfileId':_0x1b315f[_0x89e3('0x55')]},'raw':!![]})[_0x89e3('0x2a')](function(_0x2b3ab8){if(_0x2b3ab8&&_0x2b3ab8[_0x89e3('0x56')]===0x0){return db['UserProfileResource'][_0x89e3('0x52')]({'name':_0x38b456[_0x89e3('0x31')],'resourceId':_0x38b456['id'],'type':_0x2b3ab8['name'],'sectionId':_0x2b3ab8['id']},{})['then'](function(){return _0x135f9d;});}else{return _0x135f9d;}})['catch'](function(_0x4d41f8){logger[_0x89e3('0x2f')](_0x89e3('0x5e'),_0x4d41f8);throw _0x4d41f8;});}return _0x135f9d;});}})[_0x89e3('0x2a')](respondWithResult(_0x163e74,0xc9))[_0x89e3('0x4e')](handleError(_0x163e74,null));};exports['update']=function(_0x4432a4,_0x206333){if(_0x4432a4[_0x89e3('0x5a')]['id']){delete _0x4432a4[_0x89e3('0x5a')]['id'];}return db['JscriptyProject'][_0x89e3('0x51')]({'where':{'id':_0x4432a4[_0x89e3('0x57')]['id']}})['then'](handleEntityNotFound(_0x206333,null))[_0x89e3('0x2a')](saveUpdates(_0x4432a4['body'],null))[_0x89e3('0x2a')](respondWithResult(_0x206333,null))[_0x89e3('0x4e')](handleError(_0x206333,null));};exports['destroy']=function(_0xb3a87,_0x7b0775){return db[_0x89e3('0x35')][_0x89e3('0x51')]({'where':{'id':_0xb3a87[_0x89e3('0x57')]['id']}})['then'](handleEntityNotFound(_0x7b0775,null))['then'](removeEntity(_0x7b0775,null))[_0x89e3('0x4e')](handleError(_0x7b0775,null));};exports[_0x89e3('0x5f')]=function(_0x338ca7,_0x58fdb0,_0x523454){var _0x23ce0b={'raw':!![],'where':{}};var _0x13a742={};var _0x17b216={'count':0x0,'rows':[]};return db[_0x89e3('0x35')][_0x89e3('0x60')]({'where':{'id':_0x338ca7[_0x89e3('0x57')]['id']}})[_0x89e3('0x2a')](handleEntityNotFound(_0x58fdb0,null))[_0x89e3('0x2a')](function(_0x179da3){if(_0x179da3){_0x13a742[_0x89e3('0x3f')]=_[_0x89e3('0x3a')](db[_0x89e3('0x61')][_0x89e3('0x36')]);_0x13a742['query']=_[_0x89e3('0x3a')](_0x338ca7[_0x89e3('0x39')]);_0x13a742[_0x89e3('0x3b')]=_[_0x89e3('0x3c')](_0x13a742['model'],_0x13a742[_0x89e3('0x39')]);_0x23ce0b[_0x89e3('0x50')]=_[_0x89e3('0x3c')](_0x13a742[_0x89e3('0x3f')],qs[_0x89e3('0x3d')](_0x338ca7['query'][_0x89e3('0x3d')]));_0x23ce0b['attributes']=_0x23ce0b[_0x89e3('0x50')][_0x89e3('0x3e')]?_0x23ce0b['attributes']:_0x13a742[_0x89e3('0x3f')];if(!_0x338ca7[_0x89e3('0x39')][_0x89e3('0x40')](_0x89e3('0x41'))){_0x23ce0b[_0x89e3('0x23')]=qs[_0x89e3('0x23')](_0x338ca7[_0x89e3('0x39')][_0x89e3('0x23')]);_0x23ce0b['offset']=qs[_0x89e3('0x21')](_0x338ca7['query'][_0x89e3('0x21')]);}_0x23ce0b[_0x89e3('0x42')]=qs[_0x89e3('0x43')](_0x338ca7[_0x89e3('0x39')]['sort']);_0x23ce0b[_0x89e3('0x44')]=qs[_0x89e3('0x3b')](_[_0x89e3('0x45')](_0x338ca7[_0x89e3('0x39')],_0x13a742[_0x89e3('0x3b')]));_0x23ce0b[_0x89e3('0x44')]['ProjectId']=_0x179da3['id'];if(_0x338ca7['query'][_0x89e3('0x46')]){_0x23ce0b['where']=_['merge'](_0x23ce0b[_0x89e3('0x44')],{'$or':_[_0x89e3('0x34')](_0x23ce0b['attributes'],function(_0x5dc4df){var _0x480047={};_0x480047[_0x5dc4df]={'$like':'%'+_0x338ca7[_0x89e3('0x39')]['filter']+'%'};return _0x480047;})});}_0x23ce0b=_[_0x89e3('0x47')]({},_0x23ce0b,_0x338ca7[_0x89e3('0x49')]);return db[_0x89e3('0x61')]['count']({'where':_0x23ce0b[_0x89e3('0x44')]})[_0x89e3('0x2a')](function(_0x2c1c26){_0x17b216[_0x89e3('0x24')]=_0x2c1c26;if(_0x338ca7[_0x89e3('0x39')]['includeAll']){_0x23ce0b[_0x89e3('0x4b')]=[{'all':!![]}];}return db[_0x89e3('0x61')][_0x89e3('0x4c')](_0x23ce0b);})['then'](function(_0x45a35b){_0x17b216[_0x89e3('0x4d')]=_0x45a35b;return _0x17b216;});}})[_0x89e3('0x2a')](respondWithFilteredResult(_0x58fdb0,_0x23ce0b))[_0x89e3('0x4e')](handleError(_0x58fdb0,null));};exports['getAnswers']=function(_0x14c7c8,_0x3df83e,_0x2466da){var _0x270de1={'raw':!![],'where':{}};var _0x560e1c={};var _0x4ced46={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x89e3('0x60')]({'where':{'id':_0x14c7c8[_0x89e3('0x57')]['id']}})[_0x89e3('0x2a')](handleEntityNotFound(_0x3df83e,null))[_0x89e3('0x2a')](function(_0x240ef4){if(_0x240ef4){_0x560e1c[_0x89e3('0x3f')]=_[_0x89e3('0x3a')](db[_0x89e3('0x62')]['rawAttributes']);_0x560e1c['query']=_[_0x89e3('0x3a')](_0x14c7c8[_0x89e3('0x39')]);_0x560e1c[_0x89e3('0x3b')]=_['intersection'](_0x560e1c[_0x89e3('0x3f')],_0x560e1c[_0x89e3('0x39')]);_0x270de1[_0x89e3('0x50')]=_['intersection'](_0x560e1c[_0x89e3('0x3f')],qs['fields'](_0x14c7c8['query'][_0x89e3('0x3d')]));_0x270de1[_0x89e3('0x50')]=_0x270de1[_0x89e3('0x50')][_0x89e3('0x3e')]?_0x270de1['attributes']:_0x560e1c[_0x89e3('0x3f')];if(!_0x14c7c8[_0x89e3('0x39')][_0x89e3('0x40')]('nolimit')){_0x270de1[_0x89e3('0x23')]=qs[_0x89e3('0x23')](_0x14c7c8['query']['limit']);_0x270de1['offset']=qs[_0x89e3('0x21')](_0x14c7c8[_0x89e3('0x39')]['offset']);}_0x270de1[_0x89e3('0x42')]=qs[_0x89e3('0x43')](_0x14c7c8[_0x89e3('0x39')][_0x89e3('0x43')]);_0x270de1[_0x89e3('0x44')]=qs[_0x89e3('0x3b')](_[_0x89e3('0x45')](_0x14c7c8['query'],_0x560e1c[_0x89e3('0x3b')]));_0x270de1['where']['ProjectId']=_0x240ef4['id'];if(_0x14c7c8[_0x89e3('0x39')][_0x89e3('0x46')]){_0x270de1[_0x89e3('0x44')]=_[_0x89e3('0x47')](_0x270de1[_0x89e3('0x44')],{'$or':_[_0x89e3('0x34')](_0x270de1[_0x89e3('0x50')],function(_0x418cb1){var _0xaff1d4={};_0xaff1d4[_0x418cb1]={'$like':'%'+_0x14c7c8['query'][_0x89e3('0x46')]+'%'};return _0xaff1d4;})});}_0x270de1=_[_0x89e3('0x47')]({},_0x270de1,_0x14c7c8[_0x89e3('0x49')]);return db['JscriptyAnswerReport']['count']({'where':_0x270de1[_0x89e3('0x44')]})[_0x89e3('0x2a')](function(_0xe5273d){_0x4ced46[_0x89e3('0x24')]=_0xe5273d;if(_0x14c7c8[_0x89e3('0x39')][_0x89e3('0x4a')]){_0x270de1[_0x89e3('0x4b')]=[{'all':!![]}];}return db[_0x89e3('0x62')][_0x89e3('0x4c')](_0x270de1);})[_0x89e3('0x2a')](function(_0x1fce3d){_0x4ced46[_0x89e3('0x4d')]=_0x1fce3d;return _0x4ced46;});}})['then'](respondWithFilteredResult(_0x3df83e,_0x270de1))['catch'](handleError(_0x3df83e,null));};function char(_0x5168d2){return _0x89e3('0x63')===typeof _0x5168d2?String[_0x89e3('0x64')]['apply'](null,arguments):_0x5168d2;}function needsEncapsulation(_0xbfbb95){return!!_0xbfbb95&&(_0xbfbb95['toString']()[_0x89e3('0x65')](char(0xd))>=0x0||_0xbfbb95[_0x89e3('0x66')]()[_0x89e3('0x65')](char(0xa))>=0x0||_0xbfbb95[_0x89e3('0x66')]()[_0x89e3('0x65')](char(0x2c))>=0x0||_0xbfbb95[_0x89e3('0x66')]()[_0x89e3('0x65')](char(0x22))>=0x0);}function encapsulate(_0x2778ac){var _0x2daaae=char(0x22),_0x21fafe='\x5c'+char(0x22),_0xa4b4f6=_0x2778ac[_0x89e3('0x66')]()[_0x89e3('0x67')](new RegExp(_0x2daaae,'g'),_0x21fafe);return _0x2daaae+_0xa4b4f6+_0x2daaae;}exports[_0x89e3('0x68')]=function(_0x1900e8,_0x2f77a8,_0x2d09e0){var _0xad0938,_0x174e1d;var _0x25d21c={'where':{'ProjectId':_0x1900e8[_0x89e3('0x57')]['id']}};if(_0x1900e8[_0x89e3('0x39')]['startTime']){_0x25d21c[_0x89e3('0x44')][_0x89e3('0x69')]=JSON[_0x89e3('0x6a')](_0x1900e8[_0x89e3('0x39')][_0x89e3('0x6b')]);}return db[_0x89e3('0x61')][_0x89e3('0x4c')](_0x25d21c)[_0x89e3('0x2a')](handleEntityNotFound(_0x2f77a8,null))['then'](function(_0x373182){if(_0x373182){_0xad0938=_0x373182;return db['JscriptyQuestionReport'][_0x89e3('0x4c')]({'where':{'SessionId':{'$in':_[_0x89e3('0x34')](_0xad0938,'id')},'ProjectId':_0x1900e8['params']['id']},'order':_0x89e3('0x6c')});}})[_0x89e3('0x2a')](handleEntityNotFound(_0x2f77a8,null))['then'](function(_0x534107){if(_0x534107){_0x174e1d=_0x534107;var _0x5c4df2={};for(var _0x2cfef1=0x0,_0x445704=_0x174e1d[_0x89e3('0x3e')];_0x2cfef1<_0x445704;_0x2cfef1++){if(!_0x5c4df2[_0x89e3('0x40')](_0x174e1d[_0x2cfef1]['questionId'])){_0x5c4df2[_0x174e1d[_0x2cfef1]['questionId']]=needsEncapsulation(_0x174e1d[_0x2cfef1][_0x89e3('0x6d')])?encapsulate(_0x174e1d[_0x2cfef1][_0x89e3('0x6d')]):_0x174e1d[_0x2cfef1][_0x89e3('0x6d')];}}var _0x185e43=[],_0x3fd47d={};for(var _0x1bfbe7=0x0,_0x1fdf0f=_0xad0938[_0x89e3('0x3e')];_0x1bfbe7<_0x1fdf0f;_0x1bfbe7++){_0x3fd47d={'ProjectId':_0x1900e8[_0x89e3('0x57')]['id'],'SessionId':_0xad0938[_0x1bfbe7]['id'],'StartTime':moment(_0xad0938[_0x1bfbe7][_0x89e3('0x69')])['format'](_0x89e3('0x6e'))};for(var _0x39be98=0x0,_0x36d652=_0x174e1d[_0x89e3('0x3e')];_0x39be98<_0x36d652;_0x39be98++){if(_0x174e1d[_0x39be98][_0x89e3('0x6f')]==_0xad0938[_0x1bfbe7]['id']&&_0x5c4df2[_0x89e3('0x40')](_0x174e1d[_0x39be98][_0x89e3('0x70')])){_0x3fd47d[_0x5c4df2[_0x174e1d[_0x39be98][_0x89e3('0x70')]]]=_0x174e1d[_0x39be98][_0x89e3('0x71')];}}for(var _0x236739 in _0x5c4df2){if(!_0x3fd47d[_0x89e3('0x40')](_0x5c4df2[_0x236739])){_0x3fd47d[_0x5c4df2[_0x236739]]=null;}}_0x185e43[_0x89e3('0x72')](_0x3fd47d);}return _0x185e43;}})[_0x89e3('0x2a')](function(_0x524f4e){if(!_[_0x89e3('0x73')](_0x524f4e)){var _0x288a92=toCsv(_0x524f4e);var _0x291ee0=Date[_0x89e3('0x74')]();fs['writeFileSync'](util[_0x89e3('0x75')](_0x89e3('0x76'),_0x1900e8[_0x89e3('0x57')]['id'],_0x291ee0),_0x288a92);_0x2f77a8[_0x89e3('0x77')](_0x89e3('0x78'),_0x89e3('0x79')+util[_0x89e3('0x75')](_0x89e3('0x7a'),_0x1900e8[_0x89e3('0x57')]['id'],_0x291ee0));_0x2f77a8['setHeader'](_0x89e3('0x7b'),_0x89e3('0x7c'));return _0x2f77a8[_0x89e3('0x7d')](util[_0x89e3('0x75')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x1900e8['params']['id'],_0x291ee0));}else{return _0x2f77a8[_0x89e3('0x1d')](0xcc);}})['catch'](handleError(_0x2f77a8,null));};
\ No newline at end of file
+var _0x6a14=['then','destroy','get','Projects','UserProfileResource','error','name','send','index','JscriptyProject','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','map','type','VIRTUAL','includeAll','include','findAll','rows','show','params','keys','rawAttributes','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','options','updatedAt','omit','createdAt','getSessions','findOne','nolimit','JscriptySessionReport','ProjectId','JscriptyAnswerReport','fromCharCode','indexOf','toString','replace','starttime','parse','startTime','JscriptyQuestionReport','questionId','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','now','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update'];(function(_0x1a675c,_0x4648bc){var _0x4ee1dc=function(_0x4ab719){while(--_0x4ab719){_0x1a675c['push'](_0x1a675c['shift']());}};_0x4ee1dc(++_0x4648bc);}(_0x6a14,0x13c));var _0x46a1=function(_0x4d8cac,_0x17dfc6){_0x4d8cac=_0x4d8cac-0x0;var _0x345ae1=_0x6a14[_0x4d8cac];return _0x345ae1;};'use strict';var emlformat=require(_0x46a1('0x0'));var rimraf=require(_0x46a1('0x1'));var zipdir=require(_0x46a1('0x2'));var jsonpatch=require(_0x46a1('0x3'));var rp=require(_0x46a1('0x4'));var moment=require('moment');var BPromise=require(_0x46a1('0x5'));var Mustache=require(_0x46a1('0x6'));var util=require(_0x46a1('0x7'));var path=require(_0x46a1('0x8'));var sox=require(_0x46a1('0x9'));var csv=require(_0x46a1('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x46a1('0xb'));var squel=require(_0x46a1('0xc'));var crypto=require(_0x46a1('0xd'));var jsforce=require(_0x46a1('0xe'));var deskjs=require(_0x46a1('0xf'));var toCsv=require(_0x46a1('0xa'));var querystring=require(_0x46a1('0x10'));var Papa=require(_0x46a1('0x11'));var Redis=require(_0x46a1('0x12'));var authService=require(_0x46a1('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x46a1('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x46a1('0x15'))(_0x46a1('0x16'));var utils=require(_0x46a1('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x46a1('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x9d8c36,_0x14ab29){_0x14ab29=_0x14ab29||0xcc;return function(_0x1dc574){if(_0x1dc574){return _0x9d8c36[_0x46a1('0x19')](_0x14ab29);}return _0x9d8c36[_0x46a1('0x1a')](_0x14ab29)[_0x46a1('0x1b')]();};}function respondWithResult(_0x26a544,_0x41d692){_0x41d692=_0x41d692||0xc8;return function(_0x3ebf22){if(_0x3ebf22){return _0x26a544[_0x46a1('0x1a')](_0x41d692)[_0x46a1('0x1c')](_0x3ebf22);}};}function respondWithFilteredResult(_0x3b5be8,_0x5c529f){return function(_0x158c73){if(_0x158c73){var _0x11ea07=typeof _0x5c529f[_0x46a1('0x1d')]===_0x46a1('0x1e')&&typeof _0x5c529f['limit']===_0x46a1('0x1e');var _0x2cc5a9=_0x158c73[_0x46a1('0x1f')];var _0x4d5dd5=_0x11ea07?0x0:_0x5c529f[_0x46a1('0x1d')];var _0x325a12=_0x11ea07?_0x158c73[_0x46a1('0x1f')]:_0x5c529f['offset']+_0x5c529f[_0x46a1('0x20')];var _0x554c3b;if(_0x325a12>=_0x2cc5a9){_0x325a12=_0x2cc5a9;_0x554c3b=0xc8;}else{_0x554c3b=0xce;}_0x3b5be8['status'](_0x554c3b);return _0x3b5be8[_0x46a1('0x21')](_0x46a1('0x22'),_0x4d5dd5+'-'+_0x325a12+'/'+_0x2cc5a9)[_0x46a1('0x1c')](_0x158c73);}return null;};}function patchUpdates(_0x1b1c2c){return function(_0x1f8520){try{jsonpatch[_0x46a1('0x23')](_0x1f8520,_0x1b1c2c,!![]);}catch(_0x2f12de){return BPromise[_0x46a1('0x24')](_0x2f12de);}return _0x1f8520['save']();};}function saveUpdates(_0x30afb3,_0x4ac87a){return function(_0x3806bc){if(_0x3806bc){return _0x3806bc[_0x46a1('0x25')](_0x30afb3)[_0x46a1('0x26')](function(_0x2a6ef9){return _0x2a6ef9;});}return null;};}function removeEntity(_0x2cf280,_0x2fe8ef){return function(_0x369bdc){if(_0x369bdc){return _0x369bdc[_0x46a1('0x27')]()[_0x46a1('0x26')](function(){var _0x57275f=_0x369bdc[_0x46a1('0x28')]({'plain':!![]});var _0x454c79=_0x46a1('0x29');return db[_0x46a1('0x2a')][_0x46a1('0x27')]({'where':{'type':_0x454c79,'resourceId':_0x57275f['id']}})[_0x46a1('0x26')](function(){return _0x369bdc;});})[_0x46a1('0x26')](function(){_0x2cf280[_0x46a1('0x1a')](0xcc)[_0x46a1('0x1b')]();});}};}function handleEntityNotFound(_0x245851,_0xf574a){return function(_0x12f1ad){if(!_0x12f1ad){_0x245851[_0x46a1('0x19')](0x194);}return _0x12f1ad;};}function handleError(_0x52a02b,_0x1549cc){_0x1549cc=_0x1549cc||0x1f4;return function(_0x353867){logger[_0x46a1('0x2b')](_0x353867['stack']);if(_0x353867['name']){delete _0x353867[_0x46a1('0x2c')];}_0x52a02b[_0x46a1('0x1a')](_0x1549cc)[_0x46a1('0x2d')](_0x353867);};}exports[_0x46a1('0x2e')]=function(_0x5513f1,_0x16dc71){var _0x2a135={},_0x550156={},_0x14109c={'count':0x0,'rows':[]};var _0x3c65a2=_['map'](db[_0x46a1('0x2f')]['rawAttributes'],function(_0x3f95be){return{'name':_0x3f95be['fieldName'],'type':_0x3f95be['type'][_0x46a1('0x30')]};});_0x550156[_0x46a1('0x31')]=_['map'](_0x3c65a2,_0x46a1('0x2c'));_0x550156[_0x46a1('0x32')]=_['keys'](_0x5513f1[_0x46a1('0x32')]);_0x550156[_0x46a1('0x33')]=_[_0x46a1('0x34')](_0x550156[_0x46a1('0x31')],_0x550156[_0x46a1('0x32')]);_0x2a135[_0x46a1('0x35')]=_[_0x46a1('0x34')](_0x550156[_0x46a1('0x31')],qs[_0x46a1('0x36')](_0x5513f1[_0x46a1('0x32')]['fields']));_0x2a135[_0x46a1('0x35')]=_0x2a135[_0x46a1('0x35')][_0x46a1('0x37')]?_0x2a135['attributes']:_0x550156[_0x46a1('0x31')];if(!_0x5513f1[_0x46a1('0x32')][_0x46a1('0x38')]('nolimit')){_0x2a135['limit']=qs[_0x46a1('0x20')](_0x5513f1['query']['limit']);_0x2a135['offset']=qs[_0x46a1('0x1d')](_0x5513f1[_0x46a1('0x32')][_0x46a1('0x1d')]);}_0x2a135[_0x46a1('0x39')]=qs[_0x46a1('0x3a')](_0x5513f1[_0x46a1('0x32')][_0x46a1('0x3a')]);_0x2a135[_0x46a1('0x3b')]=qs[_0x46a1('0x33')](_[_0x46a1('0x3c')](_0x5513f1[_0x46a1('0x32')],_0x550156[_0x46a1('0x33')]),_0x3c65a2);if(_0x5513f1['query'][_0x46a1('0x3d')]){_0x2a135[_0x46a1('0x3b')]=_[_0x46a1('0x3e')](_0x2a135[_0x46a1('0x3b')],{'$or':_[_0x46a1('0x3f')](_0x3c65a2,function(_0x5246e1){if(_0x5246e1[_0x46a1('0x40')]!==_0x46a1('0x41')){var _0x32461d={};_0x32461d[_0x5246e1[_0x46a1('0x2c')]]={'$like':'%'+_0x5513f1[_0x46a1('0x32')][_0x46a1('0x3d')]+'%'};return _0x32461d;}})});}_0x2a135=_['merge']({},_0x2a135,_0x5513f1['options']);var _0x25449c={'where':_0x2a135[_0x46a1('0x3b')]};return db[_0x46a1('0x2f')][_0x46a1('0x1f')](_0x25449c)[_0x46a1('0x26')](function(_0x3e1fb4){_0x14109c[_0x46a1('0x1f')]=_0x3e1fb4;if(_0x5513f1['query'][_0x46a1('0x42')]){_0x2a135[_0x46a1('0x43')]=[{'all':!![]}];}return db[_0x46a1('0x2f')][_0x46a1('0x44')](_0x2a135);})[_0x46a1('0x26')](function(_0x1e085c){_0x14109c[_0x46a1('0x45')]=_0x1e085c;return _0x14109c;})[_0x46a1('0x26')](respondWithFilteredResult(_0x16dc71,_0x2a135))['catch'](handleError(_0x16dc71,null));};exports[_0x46a1('0x46')]=function(_0x498323,_0xa8c608){var _0x5e2d45={'raw':![],'where':{'id':_0x498323[_0x46a1('0x47')]['id']}},_0x5da19a={};_0x5da19a['model']=_[_0x46a1('0x48')](db[_0x46a1('0x2f')][_0x46a1('0x49')]);_0x5da19a[_0x46a1('0x32')]=_['keys'](_0x498323[_0x46a1('0x32')]);_0x5da19a[_0x46a1('0x33')]=_['intersection'](_0x5da19a[_0x46a1('0x31')],_0x5da19a[_0x46a1('0x32')]);_0x5e2d45[_0x46a1('0x35')]=_[_0x46a1('0x34')](_0x5da19a['model'],qs[_0x46a1('0x36')](_0x498323[_0x46a1('0x32')][_0x46a1('0x36')]));_0x5e2d45[_0x46a1('0x35')]=_0x5e2d45[_0x46a1('0x35')][_0x46a1('0x37')]?_0x5e2d45['attributes']:_0x5da19a[_0x46a1('0x31')];if(_0x498323[_0x46a1('0x32')][_0x46a1('0x42')]){_0x5e2d45[_0x46a1('0x43')]=[{'all':!![]}];}_0x5e2d45=_['merge']({},_0x5e2d45,_0x498323['options']);return db[_0x46a1('0x2f')][_0x46a1('0x4a')](_0x5e2d45)['then'](handleEntityNotFound(_0xa8c608,null))['then'](respondWithResult(_0xa8c608,null))[_0x46a1('0x4b')](handleError(_0xa8c608,null));};exports[_0x46a1('0x4c')]=function(_0x4c0c72,_0x37f087){return db[_0x46a1('0x2f')][_0x46a1('0x4c')](_0x4c0c72[_0x46a1('0x4d')],{})['then'](function(_0xb0eb60){var _0x7ffc1c=_0x4c0c72[_0x46a1('0x4e')][_0x46a1('0x28')]({'plain':!![]});if(!_0x7ffc1c)throw new Error(_0x46a1('0x4f'));if(_0x7ffc1c[_0x46a1('0x50')]===_0x46a1('0x4e')){var _0x4449b7=_0xb0eb60[_0x46a1('0x28')]({'plain':!![]});var _0x358375=_0x46a1('0x29');return db['UserProfileSection'][_0x46a1('0x4a')]({'where':{'name':_0x358375,'userProfileId':_0x7ffc1c[_0x46a1('0x51')]},'raw':!![]})[_0x46a1('0x26')](function(_0xdb598b){if(_0xdb598b&&_0xdb598b[_0x46a1('0x52')]===0x0){return db[_0x46a1('0x2a')][_0x46a1('0x4c')]({'name':_0x4449b7[_0x46a1('0x2c')],'resourceId':_0x4449b7['id'],'type':_0xdb598b[_0x46a1('0x2c')],'sectionId':_0xdb598b['id']},{})[_0x46a1('0x26')](function(){return _0xb0eb60;});}else{return _0xb0eb60;}})[_0x46a1('0x4b')](function(_0x12dcb1){logger[_0x46a1('0x2b')](_0x46a1('0x53'),_0x12dcb1);throw _0x12dcb1;});}return _0xb0eb60;})[_0x46a1('0x26')](respondWithResult(_0x37f087,0xc9))[_0x46a1('0x4b')](handleError(_0x37f087,null));};exports['clone']=function(_0x33337c,_0x50552f){var _0x14a738={'where':{'id':_0x33337c[_0x46a1('0x47')]['id']}},_0xb611b2={};_0xb611b2[_0x46a1('0x31')]=_[_0x46a1('0x48')](db[_0x46a1('0x2f')][_0x46a1('0x49')]);_0x14a738[_0x46a1('0x35')]=_[_0x46a1('0x34')](_0xb611b2[_0x46a1('0x31')],qs['fields'](_0x33337c[_0x46a1('0x32')]['fields']));_0x14a738['attributes']=_0x14a738[_0x46a1('0x35')][_0x46a1('0x37')]?_0x14a738[_0x46a1('0x35')]:_0xb611b2[_0x46a1('0x31')];if(_0x33337c['query'][_0x46a1('0x42')]){_0x14a738[_0x46a1('0x43')]=[{'all':!![]}];}_0x14a738=_[_0x46a1('0x3e')]({},_0x14a738,_0x33337c[_0x46a1('0x54')]);return db[_0x46a1('0x2f')][_0x46a1('0x4a')](_0x14a738)['then'](handleEntityNotFound(_0x50552f,null))[_0x46a1('0x26')](function(_0x2bd34d){if(_0x2bd34d){var _0x1cdc8d=_0x2bd34d['get']({'plain':!![]});_0x1cdc8d=qs['omit'](_0x1cdc8d,['id','createdAt',_0x46a1('0x55')]);_0x33337c['body']=_[_0x46a1('0x56')](_0x33337c[_0x46a1('0x4d')],['id',_0x46a1('0x57'),_0x46a1('0x55')]);return db[_0x46a1('0x2f')][_0x46a1('0x4c')](_[_0x46a1('0x3e')](_0x1cdc8d,_0x33337c['body']),{'include':_0x33337c['query'][_0x46a1('0x42')]?[{'all':!![]}]:undefined})[_0x46a1('0x26')](function(_0x57811c){var _0x3888fb=_0x33337c['user'][_0x46a1('0x28')]({'plain':!![]});if(!_0x3888fb)throw new Error(_0x46a1('0x4f'));if(_0x3888fb[_0x46a1('0x50')]===_0x46a1('0x4e')){var _0x354258=_0x57811c[_0x46a1('0x28')]({'plain':!![]});var _0x1c5732=_0x46a1('0x29');return db['UserProfileSection'][_0x46a1('0x4a')]({'where':{'name':_0x1c5732,'userProfileId':_0x3888fb['userProfileId']},'raw':!![]})['then'](function(_0x155131){if(_0x155131&&_0x155131['autoAssociation']===0x0){return db['UserProfileResource'][_0x46a1('0x4c')]({'name':_0x354258[_0x46a1('0x2c')],'resourceId':_0x354258['id'],'type':_0x155131[_0x46a1('0x2c')],'sectionId':_0x155131['id']},{})[_0x46a1('0x26')](function(){return _0x57811c;});}else{return _0x57811c;}})['catch'](function(_0x470b85){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x470b85);throw _0x470b85;});}return _0x57811c;});}})[_0x46a1('0x26')](respondWithResult(_0x50552f,0xc9))[_0x46a1('0x4b')](handleError(_0x50552f,null));};exports['update']=function(_0x4a73ab,_0x170a9d){if(_0x4a73ab[_0x46a1('0x4d')]['id']){delete _0x4a73ab[_0x46a1('0x4d')]['id'];}return db[_0x46a1('0x2f')][_0x46a1('0x4a')]({'where':{'id':_0x4a73ab[_0x46a1('0x47')]['id']}})[_0x46a1('0x26')](handleEntityNotFound(_0x170a9d,null))[_0x46a1('0x26')](saveUpdates(_0x4a73ab[_0x46a1('0x4d')],null))[_0x46a1('0x26')](respondWithResult(_0x170a9d,null))[_0x46a1('0x4b')](handleError(_0x170a9d,null));};exports[_0x46a1('0x27')]=function(_0x2625d3,_0x1c7f73){return db[_0x46a1('0x2f')][_0x46a1('0x4a')]({'where':{'id':_0x2625d3[_0x46a1('0x47')]['id']}})[_0x46a1('0x26')](handleEntityNotFound(_0x1c7f73,null))[_0x46a1('0x26')](removeEntity(_0x1c7f73,null))[_0x46a1('0x4b')](handleError(_0x1c7f73,null));};exports[_0x46a1('0x58')]=function(_0x2d683c,_0x5e6e06,_0x57de9c){var _0x5894ab={'raw':!![],'where':{}};var _0x4c6a75={};var _0x4bf98b={'count':0x0,'rows':[]};return db[_0x46a1('0x2f')][_0x46a1('0x59')]({'where':{'id':_0x2d683c[_0x46a1('0x47')]['id']}})[_0x46a1('0x26')](handleEntityNotFound(_0x5e6e06,null))[_0x46a1('0x26')](function(_0x1c3137){if(_0x1c3137){_0x4c6a75['model']=_[_0x46a1('0x48')](db['JscriptySessionReport'][_0x46a1('0x49')]);_0x4c6a75[_0x46a1('0x32')]=_[_0x46a1('0x48')](_0x2d683c['query']);_0x4c6a75[_0x46a1('0x33')]=_[_0x46a1('0x34')](_0x4c6a75['model'],_0x4c6a75['query']);_0x5894ab[_0x46a1('0x35')]=_[_0x46a1('0x34')](_0x4c6a75[_0x46a1('0x31')],qs[_0x46a1('0x36')](_0x2d683c['query'][_0x46a1('0x36')]));_0x5894ab[_0x46a1('0x35')]=_0x5894ab[_0x46a1('0x35')]['length']?_0x5894ab['attributes']:_0x4c6a75[_0x46a1('0x31')];if(!_0x2d683c['query'][_0x46a1('0x38')](_0x46a1('0x5a'))){_0x5894ab['limit']=qs[_0x46a1('0x20')](_0x2d683c[_0x46a1('0x32')]['limit']);_0x5894ab[_0x46a1('0x1d')]=qs[_0x46a1('0x1d')](_0x2d683c['query']['offset']);}_0x5894ab['order']=qs[_0x46a1('0x3a')](_0x2d683c[_0x46a1('0x32')][_0x46a1('0x3a')]);_0x5894ab['where']=qs['filters'](_['pick'](_0x2d683c[_0x46a1('0x32')],_0x4c6a75['filters']));_0x5894ab[_0x46a1('0x3b')]['ProjectId']=_0x1c3137['id'];if(_0x2d683c['query'][_0x46a1('0x3d')]){_0x5894ab[_0x46a1('0x3b')]=_[_0x46a1('0x3e')](_0x5894ab[_0x46a1('0x3b')],{'$or':_[_0x46a1('0x3f')](_0x5894ab['attributes'],function(_0x10a19a){var _0x16eae6={};_0x16eae6[_0x10a19a]={'$like':'%'+_0x2d683c[_0x46a1('0x32')][_0x46a1('0x3d')]+'%'};return _0x16eae6;})});}_0x5894ab=_['merge']({},_0x5894ab,_0x2d683c[_0x46a1('0x54')]);return db['JscriptySessionReport']['count']({'where':_0x5894ab[_0x46a1('0x3b')]})[_0x46a1('0x26')](function(_0x3065d4){_0x4bf98b[_0x46a1('0x1f')]=_0x3065d4;if(_0x2d683c['query'][_0x46a1('0x42')]){_0x5894ab[_0x46a1('0x43')]=[{'all':!![]}];}return db[_0x46a1('0x5b')][_0x46a1('0x44')](_0x5894ab);})[_0x46a1('0x26')](function(_0x50ce5b){_0x4bf98b['rows']=_0x50ce5b;return _0x4bf98b;});}})[_0x46a1('0x26')](respondWithFilteredResult(_0x5e6e06,_0x5894ab))[_0x46a1('0x4b')](handleError(_0x5e6e06,null));};exports['getAnswers']=function(_0xe6b74f,_0x1c0817,_0x53ae6e){var _0x1e0247={'raw':!![],'where':{}};var _0x3e3fc9={};var _0x698a6a={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x46a1('0x59')]({'where':{'id':_0xe6b74f['params']['id']}})['then'](handleEntityNotFound(_0x1c0817,null))['then'](function(_0x5177e0){if(_0x5177e0){_0x3e3fc9[_0x46a1('0x31')]=_[_0x46a1('0x48')](db['JscriptyAnswerReport']['rawAttributes']);_0x3e3fc9[_0x46a1('0x32')]=_[_0x46a1('0x48')](_0xe6b74f[_0x46a1('0x32')]);_0x3e3fc9[_0x46a1('0x33')]=_[_0x46a1('0x34')](_0x3e3fc9[_0x46a1('0x31')],_0x3e3fc9['query']);_0x1e0247[_0x46a1('0x35')]=_[_0x46a1('0x34')](_0x3e3fc9[_0x46a1('0x31')],qs['fields'](_0xe6b74f['query'][_0x46a1('0x36')]));_0x1e0247['attributes']=_0x1e0247[_0x46a1('0x35')]['length']?_0x1e0247['attributes']:_0x3e3fc9[_0x46a1('0x31')];if(!_0xe6b74f['query'][_0x46a1('0x38')](_0x46a1('0x5a'))){_0x1e0247['limit']=qs[_0x46a1('0x20')](_0xe6b74f[_0x46a1('0x32')][_0x46a1('0x20')]);_0x1e0247[_0x46a1('0x1d')]=qs['offset'](_0xe6b74f[_0x46a1('0x32')]['offset']);}_0x1e0247[_0x46a1('0x39')]=qs[_0x46a1('0x3a')](_0xe6b74f[_0x46a1('0x32')][_0x46a1('0x3a')]);_0x1e0247['where']=qs[_0x46a1('0x33')](_['pick'](_0xe6b74f[_0x46a1('0x32')],_0x3e3fc9['filters']));_0x1e0247[_0x46a1('0x3b')][_0x46a1('0x5c')]=_0x5177e0['id'];if(_0xe6b74f[_0x46a1('0x32')]['filter']){_0x1e0247[_0x46a1('0x3b')]=_[_0x46a1('0x3e')](_0x1e0247[_0x46a1('0x3b')],{'$or':_[_0x46a1('0x3f')](_0x1e0247['attributes'],function(_0x20923b){var _0x174231={};_0x174231[_0x20923b]={'$like':'%'+_0xe6b74f[_0x46a1('0x32')][_0x46a1('0x3d')]+'%'};return _0x174231;})});}_0x1e0247=_['merge']({},_0x1e0247,_0xe6b74f[_0x46a1('0x54')]);return db[_0x46a1('0x5d')][_0x46a1('0x1f')]({'where':_0x1e0247[_0x46a1('0x3b')]})['then'](function(_0x443948){_0x698a6a[_0x46a1('0x1f')]=_0x443948;if(_0xe6b74f[_0x46a1('0x32')][_0x46a1('0x42')]){_0x1e0247[_0x46a1('0x43')]=[{'all':!![]}];}return db[_0x46a1('0x5d')][_0x46a1('0x44')](_0x1e0247);})['then'](function(_0x48814d){_0x698a6a[_0x46a1('0x45')]=_0x48814d;return _0x698a6a;});}})[_0x46a1('0x26')](respondWithFilteredResult(_0x1c0817,_0x1e0247))['catch'](handleError(_0x1c0817,null));};function char(_0x335546){return'number'===typeof _0x335546?String[_0x46a1('0x5e')]['apply'](null,arguments):_0x335546;}function needsEncapsulation(_0x5268f4){return!!_0x5268f4&&(_0x5268f4['toString']()[_0x46a1('0x5f')](char(0xd))>=0x0||_0x5268f4[_0x46a1('0x60')]()[_0x46a1('0x5f')](char(0xa))>=0x0||_0x5268f4[_0x46a1('0x60')]()['indexOf'](char(0x2c))>=0x0||_0x5268f4[_0x46a1('0x60')]()[_0x46a1('0x5f')](char(0x22))>=0x0);}function encapsulate(_0x2ff548){var _0x44f74d=char(0x22),_0x6a9df2='\x5c'+char(0x22),_0x55e371=_0x2ff548[_0x46a1('0x60')]()[_0x46a1('0x61')](new RegExp(_0x44f74d,'g'),_0x6a9df2);return _0x44f74d+_0x55e371+_0x44f74d;}exports['getSummary']=function(_0x59267f,_0x1991c2,_0x93b250){var _0x10318e,_0x13a395;var _0x306e66={'where':{'ProjectId':_0x59267f[_0x46a1('0x47')]['id']}};if(_0x59267f['query']['startTime']){_0x306e66[_0x46a1('0x3b')][_0x46a1('0x62')]=JSON[_0x46a1('0x63')](_0x59267f[_0x46a1('0x32')][_0x46a1('0x64')]);}return db['JscriptySessionReport'][_0x46a1('0x44')](_0x306e66)['then'](handleEntityNotFound(_0x1991c2,null))[_0x46a1('0x26')](function(_0x504373){if(_0x504373){_0x10318e=_0x504373;return db[_0x46a1('0x65')]['findAll']({'where':{'SessionId':{'$in':_[_0x46a1('0x3f')](_0x10318e,'id')},'ProjectId':_0x59267f['params']['id']},'order':'-createdAt'});}})[_0x46a1('0x26')](handleEntityNotFound(_0x1991c2,null))[_0x46a1('0x26')](function(_0x440bba){if(_0x440bba){_0x13a395=_0x440bba;var _0x240bbb={};for(var _0x121716=0x0,_0x5aafbf=_0x13a395[_0x46a1('0x37')];_0x121716<_0x5aafbf;_0x121716++){if(!_0x240bbb[_0x46a1('0x38')](_0x13a395[_0x121716][_0x46a1('0x66')])){_0x240bbb[_0x13a395[_0x121716][_0x46a1('0x66')]]=needsEncapsulation(_0x13a395[_0x121716]['question'])?encapsulate(_0x13a395[_0x121716]['question']):_0x13a395[_0x121716][_0x46a1('0x67')];}}var _0x41a4ab=[],_0x24d6da={};for(var _0x29f30f=0x0,_0x12231c=_0x10318e['length'];_0x29f30f<_0x12231c;_0x29f30f++){_0x24d6da={'ProjectId':_0x59267f['params']['id'],'SessionId':_0x10318e[_0x29f30f]['id'],'StartTime':moment(_0x10318e[_0x29f30f][_0x46a1('0x62')])['format'](_0x46a1('0x68'))};for(var _0x3c72c3=0x0,_0x50c4f5=_0x13a395[_0x46a1('0x37')];_0x3c72c3<_0x50c4f5;_0x3c72c3++){if(_0x13a395[_0x3c72c3][_0x46a1('0x69')]==_0x10318e[_0x29f30f]['id']&&_0x240bbb[_0x46a1('0x38')](_0x13a395[_0x3c72c3]['questionId'])){_0x24d6da[_0x240bbb[_0x13a395[_0x3c72c3][_0x46a1('0x66')]]]=_0x13a395[_0x3c72c3][_0x46a1('0x6a')];}}for(var _0x58a144 in _0x240bbb){if(!_0x24d6da[_0x46a1('0x38')](_0x240bbb[_0x58a144])){_0x24d6da[_0x240bbb[_0x58a144]]=null;}}_0x41a4ab[_0x46a1('0x6b')](_0x24d6da);}return _0x41a4ab;}})[_0x46a1('0x26')](function(_0x247451){if(!_[_0x46a1('0x6c')](_0x247451)){var _0x24be9d=toCsv(_0x247451);var _0x1fa5fc=Date[_0x46a1('0x6d')]();fs[_0x46a1('0x6e')](util[_0x46a1('0x6f')](_0x46a1('0x70'),_0x59267f[_0x46a1('0x47')]['id'],_0x1fa5fc),_0x24be9d);_0x1991c2[_0x46a1('0x71')](_0x46a1('0x72'),'attachment;\x20filename='+util[_0x46a1('0x6f')](_0x46a1('0x73'),_0x59267f[_0x46a1('0x47')]['id'],_0x1fa5fc));_0x1991c2[_0x46a1('0x71')](_0x46a1('0x74'),_0x46a1('0x75'));return _0x1991c2['download'](util[_0x46a1('0x6f')](_0x46a1('0x70'),_0x59267f[_0x46a1('0x47')]['id'],_0x1fa5fc));}else{return _0x1991c2[_0x46a1('0x19')](0xcc);}})[_0x46a1('0x4b')](handleError(_0x1991c2,null));};
\ No newline at end of file
index 605d7ed..7c015d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x503a=['../../config/environment','define','jscripty_projects','lodash','util','api','bluebird','request-promise','path','rimraf'];(function(_0x178f27,_0x26e5b0){var _0x1bef17=function(_0x32cf4d){while(--_0x32cf4d){_0x178f27['push'](_0x178f27['shift']());}};_0x1bef17(++_0x26e5b0);}(_0x503a,0x19d));var _0xa503=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x503a[_0x465a0c];return _0x1e202e;};'use strict';var _=require(_0xa503('0x0'));var util=require(_0xa503('0x1'));var logger=require('../../config/logger')(_0xa503('0x2'));var moment=require('moment');var BPromise=require(_0xa503('0x3'));var rp=require(_0xa503('0x4'));var fs=require('fs');var path=require(_0xa503('0x5'));var rimraf=require(_0xa503('0x6'));var config=require(_0xa503('0x7'));var attributes=require('./jscriptyProject.attributes');module['exports']=function(_0x47f11d,_0x1eb8d1){return _0x47f11d[_0xa503('0x8')]('JscriptyProject',attributes,{'tableName':_0xa503('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaeab=['jscripty_projects','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes','exports','JscriptyProject'];(function(_0x5e0e92,_0x29241e){var _0x295e6c=function(_0x32807e){while(--_0x32807e){_0x5e0e92['push'](_0x5e0e92['shift']());}};_0x295e6c(++_0x29241e);}(_0xaeab,0x91));var _0xbaea=function(_0x542b14,_0x5ef2bb){_0x542b14=_0x542b14-0x0;var _0xa2f429=_0xaeab[_0x542b14];return _0xa2f429;};'use strict';var _=require(_0xbaea('0x0'));var util=require('util');var logger=require(_0xbaea('0x1'))('api');var moment=require(_0xbaea('0x2'));var BPromise=require(_0xbaea('0x3'));var rp=require(_0xbaea('0x4'));var fs=require('fs');var path=require(_0xbaea('0x5'));var rimraf=require(_0xbaea('0x6'));var config=require(_0xbaea('0x7'));var attributes=require(_0xbaea('0x8'));module[_0xbaea('0x9')]=function(_0x1ae44e,_0x1e4331){return _0x1ae44e['define'](_0xbaea('0xa'),attributes,{'tableName':_0xbaea('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 193b4e3..0913a21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x1394b2,_0x2869f6){var _0x15463a=function(_0x54e977){while(--_0x54e977){_0x1394b2['push'](_0x1394b2['shift']());}};_0x15463a(++_0x2869f6);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\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(_0x4cc30,_0xd372f3){var _0x45ee97=function(_0x4af7a6){while(--_0x4af7a6){_0x4cc30['push'](_0x4cc30['shift']());}};_0x45ee97(++_0xd372f3);}(_0xa9e0,0x123));var _0x0a9e=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xa9e0[_0xea8947];return _0x2455e9;};'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 6a7f625..68a9a75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cfe=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','put','/:id','update','delete','destroy','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4cfe,0x1b5));var _0xe4cf=function(_0x3b7d60,_0x1561ef){_0x3b7d60=_0x3b7d60-0x0;var _0x17f7c9=_0x4cfe[_0x3b7d60];return _0x17f7c9;};'use strict';var multer=require(_0xe4cf('0x0'));var util=require(_0xe4cf('0x1'));var path=require(_0xe4cf('0x2'));var timeout=require(_0xe4cf('0x3'));var express=require(_0xe4cf('0x4'));var router=express['Router']();var fs_extra=require(_0xe4cf('0x5'));var auth=require(_0xe4cf('0x6'));var interaction=require(_0xe4cf('0x7'));var config=require(_0xe4cf('0x8'));var controller=require('./jscriptyQuestionReport.controller');router[_0xe4cf('0x9')]('/',auth[_0xe4cf('0xa')](),controller[_0xe4cf('0xb')]);router[_0xe4cf('0x9')]('/describe',auth[_0xe4cf('0xa')](),controller['describe']);router[_0xe4cf('0x9')]('/:id',auth[_0xe4cf('0xa')](),controller[_0xe4cf('0xc')]);router['post']('/',auth[_0xe4cf('0xa')](),controller['create']);router[_0xe4cf('0xd')](_0xe4cf('0xe'),auth[_0xe4cf('0xa')](),controller[_0xe4cf('0xf')]);router[_0xe4cf('0x10')](_0xe4cf('0xe'),auth[_0xe4cf('0xa')](),controller[_0xe4cf('0x11')]);module[_0xe4cf('0x12')]=router;
\ No newline at end of file
+var _0xe26d=['../../components/auth/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','describe','show','create','put','update','delete','/:id','destroy','exports','util','connect-timeout','express'];(function(_0x579923,_0x3af02d){var _0xf78baa=function(_0x1193cc){while(--_0x1193cc){_0x579923['push'](_0x579923['shift']());}};_0xf78baa(++_0x3af02d);}(_0xe26d,0x12d));var _0xde26=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe26d[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require(_0xde26('0x0'));var path=require('path');var timeout=require(_0xde26('0x1'));var express=require(_0xde26('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xde26('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xde26('0x4'));var controller=require(_0xde26('0x5'));router[_0xde26('0x6')]('/',auth[_0xde26('0x7')](),controller[_0xde26('0x8')]);router[_0xde26('0x6')](_0xde26('0x9'),auth[_0xde26('0x7')](),controller[_0xde26('0xa')]);router[_0xde26('0x6')]('/:id',auth[_0xde26('0x7')](),controller[_0xde26('0xb')]);router['post']('/',auth[_0xde26('0x7')](),controller[_0xde26('0xc')]);router[_0xde26('0xd')]('/:id',auth[_0xde26('0x7')](),controller[_0xde26('0xe')]);router[_0xde26('0xf')](_0xde26('0x10'),auth['isAuthenticated'](),controller[_0xde26('0x11')]);module[_0xde26('0x12')]=router;
\ No newline at end of file
index 6e52234..265acdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x7a54,0x106));var _0x47a5=function(_0x31d4fa,_0x5a1bbe){_0x31d4fa=_0x31d4fa-0x0;var _0x16b06a=_0x7a54[_0x31d4fa];return _0x16b06a;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x7a54,0x106));var _0x47a5=function(_0x1a67ca,_0x242de2){_0x1a67ca=_0x1a67ca-0x0;var _0x14e48d=_0x7a54[_0x1a67ca];return _0x14e48d;};'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 a090173..36ead36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c5b=['json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','name','send','map','JscriptyQuestionReport','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','rawAttributes','includeAll','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x476c6c,_0x434db8){var _0xbb94db=function(_0x4be12){while(--_0x4be12){_0x476c6c['push'](_0x476c6c['shift']());}};_0xbb94db(++_0x434db8);}(_0x1c5b,0x161));var _0xb1c5=function(_0x4dd88f,_0x39c94a){_0x4dd88f=_0x4dd88f-0x0;var _0x6974f6=_0x1c5b[_0x4dd88f];return _0x6974f6;};'use strict';var emlformat=require(_0xb1c5('0x0'));var rimraf=require(_0xb1c5('0x1'));var zipdir=require(_0xb1c5('0x2'));var jsonpatch=require(_0xb1c5('0x3'));var rp=require(_0xb1c5('0x4'));var moment=require(_0xb1c5('0x5'));var BPromise=require(_0xb1c5('0x6'));var Mustache=require(_0xb1c5('0x7'));var util=require('util');var path=require(_0xb1c5('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb1c5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb1c5('0xa'));var crypto=require(_0xb1c5('0xb'));var jsforce=require(_0xb1c5('0xc'));var deskjs=require(_0xb1c5('0xd'));var toCsv=require(_0xb1c5('0xe'));var querystring=require('querystring');var Papa=require(_0xb1c5('0xf'));var Redis=require('ioredis');var authService=require(_0xb1c5('0x10'));var qs=require(_0xb1c5('0x11'));var as=require(_0xb1c5('0x12'));var hardwareService=require(_0xb1c5('0x13'));var logger=require('../../config/logger')(_0xb1c5('0x14'));var utils=require(_0xb1c5('0x15'));var config=require(_0xb1c5('0x16'));var licenseUtil=require(_0xb1c5('0x17'));var db=require(_0xb1c5('0x18'))['db'];function respondWithStatusCode(_0x2df6ea,_0x7efbfb){_0x7efbfb=_0x7efbfb||0xcc;return function(_0x28f9a3){if(_0x28f9a3){return _0x2df6ea[_0xb1c5('0x19')](_0x7efbfb);}return _0x2df6ea[_0xb1c5('0x1a')](_0x7efbfb)['end']();};}function respondWithResult(_0x318dfa,_0x1a6bcc){_0x1a6bcc=_0x1a6bcc||0xc8;return function(_0x651b12){if(_0x651b12){return _0x318dfa[_0xb1c5('0x1a')](_0x1a6bcc)[_0xb1c5('0x1b')](_0x651b12);}};}function respondWithFilteredResult(_0x2028aa,_0x19f093){return function(_0x31f0ad){if(_0x31f0ad){var _0x48e3ad=typeof _0x19f093[_0xb1c5('0x1c')]===_0xb1c5('0x1d')&&typeof _0x19f093[_0xb1c5('0x1e')]==='undefined';var _0x251e34=_0x31f0ad['count'];var _0x298f7f=_0x48e3ad?0x0:_0x19f093[_0xb1c5('0x1c')];var _0x311de6=_0x48e3ad?_0x31f0ad[_0xb1c5('0x1f')]:_0x19f093[_0xb1c5('0x1c')]+_0x19f093[_0xb1c5('0x1e')];var _0x35a706;if(_0x311de6>=_0x251e34){_0x311de6=_0x251e34;_0x35a706=0xc8;}else{_0x35a706=0xce;}_0x2028aa[_0xb1c5('0x1a')](_0x35a706);return _0x2028aa[_0xb1c5('0x20')](_0xb1c5('0x21'),_0x298f7f+'-'+_0x311de6+'/'+_0x251e34)['json'](_0x31f0ad);}return null;};}function patchUpdates(_0xc1cdfe){return function(_0x380616){try{jsonpatch[_0xb1c5('0x22')](_0x380616,_0xc1cdfe,!![]);}catch(_0x3b8bf0){return BPromise[_0xb1c5('0x23')](_0x3b8bf0);}return _0x380616[_0xb1c5('0x24')]();};}function saveUpdates(_0x270649,_0x2ba4c4){return function(_0x1b4bb1){if(_0x1b4bb1){return _0x1b4bb1[_0xb1c5('0x25')](_0x270649)[_0xb1c5('0x26')](function(_0x4389b1){return _0x4389b1;});}return null;};}function removeEntity(_0x5dcfc1,_0x59d979){return function(_0x5655fa){if(_0x5655fa){return _0x5655fa['destroy']()[_0xb1c5('0x26')](function(){_0x5dcfc1[_0xb1c5('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2704d3,_0x381c69){return function(_0x1fd01e){if(!_0x1fd01e){_0x2704d3[_0xb1c5('0x19')](0x194);}return _0x1fd01e;};}function handleError(_0xe266c,_0x4afd61){_0x4afd61=_0x4afd61||0x1f4;return function(_0x36b853){logger[_0xb1c5('0x27')](_0x36b853['stack']);if(_0x36b853[_0xb1c5('0x28')]){delete _0x36b853[_0xb1c5('0x28')];}_0xe266c[_0xb1c5('0x1a')](_0x4afd61)[_0xb1c5('0x29')](_0x36b853);};}exports['index']=function(_0x20e964,_0x126ba9){var _0x5d4c1f={},_0xab8631={},_0xbc48c8={'count':0x0,'rows':[]};var _0x409ccb=_[_0xb1c5('0x2a')](db[_0xb1c5('0x2b')]['rawAttributes'],function(_0x3453bb){return{'name':_0x3453bb['fieldName'],'type':_0x3453bb['type'][_0xb1c5('0x2c')]};});_0xab8631[_0xb1c5('0x2d')]=_[_0xb1c5('0x2a')](_0x409ccb,_0xb1c5('0x28'));_0xab8631['query']=_[_0xb1c5('0x2e')](_0x20e964[_0xb1c5('0x2f')]);_0xab8631['filters']=_[_0xb1c5('0x30')](_0xab8631[_0xb1c5('0x2d')],_0xab8631[_0xb1c5('0x2f')]);_0x5d4c1f[_0xb1c5('0x31')]=_[_0xb1c5('0x30')](_0xab8631[_0xb1c5('0x2d')],qs[_0xb1c5('0x32')](_0x20e964['query'][_0xb1c5('0x32')]));_0x5d4c1f[_0xb1c5('0x31')]=_0x5d4c1f[_0xb1c5('0x31')][_0xb1c5('0x33')]?_0x5d4c1f[_0xb1c5('0x31')]:_0xab8631[_0xb1c5('0x2d')];if(!_0x20e964[_0xb1c5('0x2f')][_0xb1c5('0x34')](_0xb1c5('0x35'))){_0x5d4c1f[_0xb1c5('0x1e')]=qs[_0xb1c5('0x1e')](_0x20e964[_0xb1c5('0x2f')][_0xb1c5('0x1e')]);_0x5d4c1f[_0xb1c5('0x1c')]=qs[_0xb1c5('0x1c')](_0x20e964[_0xb1c5('0x2f')][_0xb1c5('0x1c')]);}_0x5d4c1f[_0xb1c5('0x36')]=qs[_0xb1c5('0x37')](_0x20e964[_0xb1c5('0x2f')][_0xb1c5('0x37')]);_0x5d4c1f[_0xb1c5('0x38')]=qs['filters'](_[_0xb1c5('0x39')](_0x20e964[_0xb1c5('0x2f')],_0xab8631[_0xb1c5('0x3a')]),_0x409ccb);if(_0x20e964[_0xb1c5('0x2f')]['filter']){_0x5d4c1f['where']=_[_0xb1c5('0x3b')](_0x5d4c1f['where'],{'$or':_[_0xb1c5('0x2a')](_0x409ccb,function(_0x22143a){if(_0x22143a[_0xb1c5('0x3c')]!==_0xb1c5('0x3d')){var _0x383c71={};_0x383c71[_0x22143a[_0xb1c5('0x28')]]={'$like':'%'+_0x20e964['query']['filter']+'%'};return _0x383c71;}})});}_0x5d4c1f=_[_0xb1c5('0x3b')]({},_0x5d4c1f,_0x20e964[_0xb1c5('0x3e')]);var _0x20ea04={'where':_0x5d4c1f[_0xb1c5('0x38')]};return db[_0xb1c5('0x2b')][_0xb1c5('0x1f')](_0x20ea04)[_0xb1c5('0x26')](function(_0x1c4f7b){_0xbc48c8[_0xb1c5('0x1f')]=_0x1c4f7b;if(_0x20e964[_0xb1c5('0x2f')]['includeAll']){_0x5d4c1f[_0xb1c5('0x3f')]=[{'all':!![]}];}return db[_0xb1c5('0x2b')][_0xb1c5('0x40')](_0x5d4c1f);})['then'](function(_0x1b01b7){_0xbc48c8[_0xb1c5('0x41')]=_0x1b01b7;return _0xbc48c8;})[_0xb1c5('0x26')](respondWithFilteredResult(_0x126ba9,_0x5d4c1f))[_0xb1c5('0x42')](handleError(_0x126ba9,null));};exports[_0xb1c5('0x43')]=function(_0x4ee4c0,_0x18e818){var _0x1b66a2={'raw':!![],'where':{'id':_0x4ee4c0['params']['id']}},_0x437152={};_0x437152[_0xb1c5('0x2d')]=_['keys'](db[_0xb1c5('0x2b')][_0xb1c5('0x44')]);_0x437152[_0xb1c5('0x2f')]=_['keys'](_0x4ee4c0[_0xb1c5('0x2f')]);_0x437152[_0xb1c5('0x3a')]=_[_0xb1c5('0x30')](_0x437152[_0xb1c5('0x2d')],_0x437152[_0xb1c5('0x2f')]);_0x1b66a2['attributes']=_[_0xb1c5('0x30')](_0x437152[_0xb1c5('0x2d')],qs[_0xb1c5('0x32')](_0x4ee4c0[_0xb1c5('0x2f')]['fields']));_0x1b66a2[_0xb1c5('0x31')]=_0x1b66a2[_0xb1c5('0x31')][_0xb1c5('0x33')]?_0x1b66a2['attributes']:_0x437152['model'];if(_0x4ee4c0['query'][_0xb1c5('0x45')]){_0x1b66a2[_0xb1c5('0x3f')]=[{'all':!![]}];}_0x1b66a2=_['merge']({},_0x1b66a2,_0x4ee4c0[_0xb1c5('0x3e')]);return db[_0xb1c5('0x2b')][_0xb1c5('0x46')](_0x1b66a2)[_0xb1c5('0x26')](handleEntityNotFound(_0x18e818,null))[_0xb1c5('0x26')](respondWithResult(_0x18e818,null))['catch'](handleError(_0x18e818,null));};exports[_0xb1c5('0x47')]=function(_0x35a1b6,_0x258ffc){return db[_0xb1c5('0x2b')][_0xb1c5('0x47')](_0x35a1b6[_0xb1c5('0x48')],{})[_0xb1c5('0x26')](respondWithResult(_0x258ffc,0xc9))[_0xb1c5('0x42')](handleError(_0x258ffc,null));};exports[_0xb1c5('0x25')]=function(_0x2885dd,_0x45a5ea){if(_0x2885dd[_0xb1c5('0x48')]['id']){delete _0x2885dd[_0xb1c5('0x48')]['id'];}return db[_0xb1c5('0x2b')][_0xb1c5('0x46')]({'where':{'id':_0x2885dd[_0xb1c5('0x49')]['id']}})[_0xb1c5('0x26')](handleEntityNotFound(_0x45a5ea,null))[_0xb1c5('0x26')](saveUpdates(_0x2885dd[_0xb1c5('0x48')],null))[_0xb1c5('0x26')](respondWithResult(_0x45a5ea,null))[_0xb1c5('0x42')](handleError(_0x45a5ea,null));};exports[_0xb1c5('0x4a')]=function(_0x191850,_0x24c54e){return db[_0xb1c5('0x2b')][_0xb1c5('0x46')]({'where':{'id':_0x191850[_0xb1c5('0x49')]['id']}})[_0xb1c5('0x26')](handleEntityNotFound(_0x24c54e,null))[_0xb1c5('0x26')](removeEntity(_0x24c54e,null))[_0xb1c5('0x42')](handleError(_0x24c54e,null));};exports[_0xb1c5('0x4b')]=function(_0x3ad4a5,_0x1f3442){return db[_0xb1c5('0x2b')][_0xb1c5('0x4b')]()[_0xb1c5('0x26')](respondWithResult(_0x1f3442,null))[_0xb1c5('0x42')](handleError(_0x1f3442,null));};
\ No newline at end of file
+var _0x4273=['limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','end','error','name','index','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','JscriptyQuestionReport','includeAll','include','findAll','rows','params','keys','rawAttributes','options','find','catch','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset'];(function(_0x9b0aa5,_0x298c2c){var _0xead4b8=function(_0x364c67){while(--_0x364c67){_0x9b0aa5['push'](_0x9b0aa5['shift']());}};_0xead4b8(++_0x298c2c);}(_0x4273,0x74));var _0x3427=function(_0x5b9c6d,_0x23cc97){_0x5b9c6d=_0x5b9c6d-0x0;var _0x56669c=_0x4273[_0x5b9c6d];return _0x56669c;};'use strict';var emlformat=require(_0x3427('0x0'));var rimraf=require(_0x3427('0x1'));var zipdir=require(_0x3427('0x2'));var jsonpatch=require(_0x3427('0x3'));var rp=require(_0x3427('0x4'));var moment=require(_0x3427('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x3427('0x6'));var csv=require(_0x3427('0x7'));var ejs=require(_0x3427('0x8'));var fs=require('fs');var fs_extra=require(_0x3427('0x9'));var _=require(_0x3427('0xa'));var squel=require(_0x3427('0xb'));var crypto=require(_0x3427('0xc'));var jsforce=require(_0x3427('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x3427('0x7'));var querystring=require(_0x3427('0xe'));var Papa=require('papaparse');var Redis=require(_0x3427('0xf'));var authService=require(_0x3427('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3427('0x11'));var logger=require(_0x3427('0x12'))(_0x3427('0x13'));var utils=require(_0x3427('0x14'));var config=require(_0x3427('0x15'));var licenseUtil=require(_0x3427('0x16'));var db=require(_0x3427('0x17'))['db'];function respondWithStatusCode(_0x3cba33,_0x3c7e88){_0x3c7e88=_0x3c7e88||0xcc;return function(_0x1d111f){if(_0x1d111f){return _0x3cba33[_0x3427('0x18')](_0x3c7e88);}return _0x3cba33[_0x3427('0x19')](_0x3c7e88)['end']();};}function respondWithResult(_0x68882e,_0x1d31f4){_0x1d31f4=_0x1d31f4||0xc8;return function(_0x45d591){if(_0x45d591){return _0x68882e[_0x3427('0x19')](_0x1d31f4)[_0x3427('0x1a')](_0x45d591);}};}function respondWithFilteredResult(_0x48ef5b,_0x69c0bf){return function(_0x18d68d){if(_0x18d68d){var _0x2da407=typeof _0x69c0bf[_0x3427('0x1b')]==='undefined'&&typeof _0x69c0bf[_0x3427('0x1c')]===_0x3427('0x1d');var _0x5dd4a5=_0x18d68d['count'];var _0x136b21=_0x2da407?0x0:_0x69c0bf['offset'];var _0x542681=_0x2da407?_0x18d68d[_0x3427('0x1e')]:_0x69c0bf[_0x3427('0x1b')]+_0x69c0bf[_0x3427('0x1c')];var _0x46b392;if(_0x542681>=_0x5dd4a5){_0x542681=_0x5dd4a5;_0x46b392=0xc8;}else{_0x46b392=0xce;}_0x48ef5b['status'](_0x46b392);return _0x48ef5b[_0x3427('0x1f')](_0x3427('0x20'),_0x136b21+'-'+_0x542681+'/'+_0x5dd4a5)[_0x3427('0x1a')](_0x18d68d);}return null;};}function patchUpdates(_0x2d7139){return function(_0x141324){try{jsonpatch[_0x3427('0x21')](_0x141324,_0x2d7139,!![]);}catch(_0x14818b){return BPromise[_0x3427('0x22')](_0x14818b);}return _0x141324[_0x3427('0x23')]();};}function saveUpdates(_0x288e4f,_0x35bdde){return function(_0x330911){if(_0x330911){return _0x330911[_0x3427('0x24')](_0x288e4f)['then'](function(_0x13b036){return _0x13b036;});}return null;};}function removeEntity(_0x13bda3,_0x500d9f){return function(_0x527e46){if(_0x527e46){return _0x527e46[_0x3427('0x25')]()[_0x3427('0x26')](function(){_0x13bda3[_0x3427('0x19')](0xcc)[_0x3427('0x27')]();});}};}function handleEntityNotFound(_0x350152,_0x29b3ec){return function(_0x2897eb){if(!_0x2897eb){_0x350152[_0x3427('0x18')](0x194);}return _0x2897eb;};}function handleError(_0x4705c7,_0x322848){_0x322848=_0x322848||0x1f4;return function(_0x4d5fde){logger[_0x3427('0x28')](_0x4d5fde['stack']);if(_0x4d5fde[_0x3427('0x29')]){delete _0x4d5fde[_0x3427('0x29')];}_0x4705c7[_0x3427('0x19')](_0x322848)['send'](_0x4d5fde);};}exports[_0x3427('0x2a')]=function(_0x13b24d,_0x4435dc){var _0x2f61af={},_0x58caf5={},_0x242913={'count':0x0,'rows':[]};var _0x58c4c7=_['map'](db['JscriptyQuestionReport']['rawAttributes'],function(_0x4d7d03){return{'name':_0x4d7d03[_0x3427('0x2b')],'type':_0x4d7d03[_0x3427('0x2c')]['key']};});_0x58caf5[_0x3427('0x2d')]=_[_0x3427('0x2e')](_0x58c4c7,_0x3427('0x29'));_0x58caf5[_0x3427('0x2f')]=_['keys'](_0x13b24d['query']);_0x58caf5[_0x3427('0x30')]=_[_0x3427('0x31')](_0x58caf5[_0x3427('0x2d')],_0x58caf5[_0x3427('0x2f')]);_0x2f61af[_0x3427('0x32')]=_[_0x3427('0x31')](_0x58caf5[_0x3427('0x2d')],qs[_0x3427('0x33')](_0x13b24d[_0x3427('0x2f')][_0x3427('0x33')]));_0x2f61af[_0x3427('0x32')]=_0x2f61af[_0x3427('0x32')][_0x3427('0x34')]?_0x2f61af[_0x3427('0x32')]:_0x58caf5[_0x3427('0x2d')];if(!_0x13b24d[_0x3427('0x2f')]['hasOwnProperty']('nolimit')){_0x2f61af[_0x3427('0x1c')]=qs[_0x3427('0x1c')](_0x13b24d[_0x3427('0x2f')][_0x3427('0x1c')]);_0x2f61af[_0x3427('0x1b')]=qs['offset'](_0x13b24d['query'][_0x3427('0x1b')]);}_0x2f61af[_0x3427('0x35')]=qs[_0x3427('0x36')](_0x13b24d[_0x3427('0x2f')]['sort']);_0x2f61af[_0x3427('0x37')]=qs[_0x3427('0x30')](_[_0x3427('0x38')](_0x13b24d[_0x3427('0x2f')],_0x58caf5['filters']),_0x58c4c7);if(_0x13b24d[_0x3427('0x2f')][_0x3427('0x39')]){_0x2f61af[_0x3427('0x37')]=_['merge'](_0x2f61af[_0x3427('0x37')],{'$or':_[_0x3427('0x2e')](_0x58c4c7,function(_0x5e3157){if(_0x5e3157[_0x3427('0x2c')]!=='VIRTUAL'){var _0xdb09ec={};_0xdb09ec[_0x5e3157[_0x3427('0x29')]]={'$like':'%'+_0x13b24d[_0x3427('0x2f')]['filter']+'%'};return _0xdb09ec;}})});}_0x2f61af=_[_0x3427('0x3a')]({},_0x2f61af,_0x13b24d['options']);var _0x2bdcd8={'where':_0x2f61af[_0x3427('0x37')]};return db[_0x3427('0x3b')][_0x3427('0x1e')](_0x2bdcd8)[_0x3427('0x26')](function(_0x5022ec){_0x242913[_0x3427('0x1e')]=_0x5022ec;if(_0x13b24d[_0x3427('0x2f')][_0x3427('0x3c')]){_0x2f61af[_0x3427('0x3d')]=[{'all':!![]}];}return db[_0x3427('0x3b')][_0x3427('0x3e')](_0x2f61af);})[_0x3427('0x26')](function(_0x37a492){_0x242913[_0x3427('0x3f')]=_0x37a492;return _0x242913;})[_0x3427('0x26')](respondWithFilteredResult(_0x4435dc,_0x2f61af))['catch'](handleError(_0x4435dc,null));};exports['show']=function(_0xc27f1d,_0x1bd935){var _0x4f7507={'raw':!![],'where':{'id':_0xc27f1d[_0x3427('0x40')]['id']}},_0x5f4dbb={};_0x5f4dbb[_0x3427('0x2d')]=_[_0x3427('0x41')](db[_0x3427('0x3b')][_0x3427('0x42')]);_0x5f4dbb[_0x3427('0x2f')]=_[_0x3427('0x41')](_0xc27f1d[_0x3427('0x2f')]);_0x5f4dbb[_0x3427('0x30')]=_[_0x3427('0x31')](_0x5f4dbb['model'],_0x5f4dbb[_0x3427('0x2f')]);_0x4f7507['attributes']=_[_0x3427('0x31')](_0x5f4dbb[_0x3427('0x2d')],qs[_0x3427('0x33')](_0xc27f1d[_0x3427('0x2f')][_0x3427('0x33')]));_0x4f7507[_0x3427('0x32')]=_0x4f7507[_0x3427('0x32')][_0x3427('0x34')]?_0x4f7507[_0x3427('0x32')]:_0x5f4dbb[_0x3427('0x2d')];if(_0xc27f1d[_0x3427('0x2f')]['includeAll']){_0x4f7507[_0x3427('0x3d')]=[{'all':!![]}];}_0x4f7507=_[_0x3427('0x3a')]({},_0x4f7507,_0xc27f1d[_0x3427('0x43')]);return db[_0x3427('0x3b')][_0x3427('0x44')](_0x4f7507)[_0x3427('0x26')](handleEntityNotFound(_0x1bd935,null))[_0x3427('0x26')](respondWithResult(_0x1bd935,null))[_0x3427('0x45')](handleError(_0x1bd935,null));};exports['create']=function(_0x46a7e,_0x485784){return db[_0x3427('0x3b')]['create'](_0x46a7e['body'],{})[_0x3427('0x26')](respondWithResult(_0x485784,0xc9))[_0x3427('0x45')](handleError(_0x485784,null));};exports[_0x3427('0x24')]=function(_0x3767df,_0x467027){if(_0x3767df[_0x3427('0x46')]['id']){delete _0x3767df['body']['id'];}return db['JscriptyQuestionReport'][_0x3427('0x44')]({'where':{'id':_0x3767df[_0x3427('0x40')]['id']}})['then'](handleEntityNotFound(_0x467027,null))['then'](saveUpdates(_0x3767df['body'],null))[_0x3427('0x26')](respondWithResult(_0x467027,null))[_0x3427('0x45')](handleError(_0x467027,null));};exports[_0x3427('0x25')]=function(_0x988d86,_0x215bdc){return db[_0x3427('0x3b')][_0x3427('0x44')]({'where':{'id':_0x988d86[_0x3427('0x40')]['id']}})['then'](handleEntityNotFound(_0x215bdc,null))[_0x3427('0x26')](removeEntity(_0x215bdc,null))[_0x3427('0x45')](handleError(_0x215bdc,null));};exports[_0x3427('0x47')]=function(_0x5af1ba,_0x1d3ef2){return db[_0x3427('0x3b')][_0x3427('0x47')]()['then'](respondWithResult(_0x1d3ef2,null))[_0x3427('0x45')](handleError(_0x1d3ef2,null));};
\ No newline at end of file
index fb4e6c2..aa48591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec49=['path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','report_jscripty_questions','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x230949,_0x790da6){var _0x54a3dd=function(_0x510d0d){while(--_0x510d0d){_0x230949['push'](_0x230949['shift']());}};_0x54a3dd(++_0x790da6);}(_0xec49,0x13f));var _0x9ec4=function(_0x38dae8,_0x536285){_0x38dae8=_0x38dae8-0x0;var _0x5d812e=_0xec49[_0x38dae8];return _0x5d812e;};'use strict';var _=require(_0x9ec4('0x0'));var util=require(_0x9ec4('0x1'));var logger=require(_0x9ec4('0x2'))(_0x9ec4('0x3'));var moment=require(_0x9ec4('0x4'));var BPromise=require(_0x9ec4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9ec4('0x6'));var rimraf=require(_0x9ec4('0x7'));var config=require(_0x9ec4('0x8'));var attributes=require(_0x9ec4('0x9'));module[_0x9ec4('0xa')]=function(_0x5ee71a,_0xbce52a){return _0x5ee71a[_0x9ec4('0xb')]('JscriptyQuestionReport',attributes,{'tableName':_0x9ec4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x628b=['rimraf','exports','define','JscriptyQuestionReport','report_jscripty_questions','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x628b,0x1d3));var _0xb628=function(_0x3c7a93,_0x235c86){_0x3c7a93=_0x3c7a93-0x0;var _0x42b6ee=_0x628b[_0x3c7a93];return _0x42b6ee;};'use strict';var _=require(_0xb628('0x0'));var util=require(_0xb628('0x1'));var logger=require(_0xb628('0x2'))(_0xb628('0x3'));var moment=require(_0xb628('0x4'));var BPromise=require('bluebird');var rp=require(_0xb628('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb628('0x6'));var config=require('../../config/environment');var attributes=require('./jscriptyQuestionReport.attributes');module[_0xb628('0x7')]=function(_0x6a89c3,_0x486e17){return _0x6a89c3[_0xb628('0x8')](_0xb628('0x9'),attributes,{'tableName':_0xb628('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eca272f..ea2d75a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb5e=['message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x42f82a,_0x19d6a5){var _0x514542=function(_0x4ce858){while(--_0x4ce858){_0x42f82a['push'](_0x42f82a['shift']());}};_0x514542(++_0x19d6a5);}(_0xbb5e,0x18f));var _0xebb5=function(_0xccc0d1,_0x2bbf6f){_0xccc0d1=_0xccc0d1-0x0;var _0x20d311=_0xbb5e[_0xccc0d1];return _0x20d311;};'use strict';var _=require('lodash');var util=require(_0xebb5('0x0'));var moment=require(_0xebb5('0x1'));var BPromise=require(_0xebb5('0x2'));var rs=require(_0xebb5('0x3'));var fs=require('fs');var Redis=require(_0xebb5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xebb5('0x5'));var logger=require('../../config/logger')(_0xebb5('0x6'));var config=require(_0xebb5('0x7'));var jayson=require(_0xebb5('0x8'));var client=jayson[_0xebb5('0x9')][_0xebb5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x57bba3,_0x5729b5,_0x5083cd){return new BPromise(function(_0x4f5e48,_0x1082bf){return client[_0xebb5('0xb')](_0x57bba3,_0x5083cd)[_0xebb5('0xc')](function(_0x3810c5){logger[_0xebb5('0xd')](_0xebb5('0xe'),_0x5729b5,_0xebb5('0xf'));logger['debug'](_0xebb5('0x10'),_0x5729b5,'request\x20sent',JSON['stringify'](_0x3810c5));if(_0x3810c5[_0xebb5('0x11')]){if(_0x3810c5[_0xebb5('0x11')][_0xebb5('0x12')]===0x1f4){logger[_0xebb5('0x11')](_0xebb5('0xe'),_0x5729b5,_0x3810c5['error'][_0xebb5('0x13')]);return _0x1082bf(_0x3810c5[_0xebb5('0x11')][_0xebb5('0x13')]);}logger['error'](_0xebb5('0xe'),_0x5729b5,_0x3810c5[_0xebb5('0x11')]['message']);return _0x4f5e48(_0x3810c5[_0xebb5('0x11')]['message']);}else{logger[_0xebb5('0xd')](_0xebb5('0xe'),_0x5729b5,'request\x20sent');_0x4f5e48(_0x3810c5[_0xebb5('0x14')][_0xebb5('0x13')]);}})[_0xebb5('0x15')](function(_0x37593a){logger[_0xebb5('0x11')](_0xebb5('0xe'),_0x5729b5,_0x37593a);_0x1082bf(_0x37593a);});});}
\ No newline at end of file
+var _0xb5aa=['request','then','info','debug','request\x20sent','stringify','error','JscriptyQuestionReport,\x20%s,\x20%s','message','result','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x1f62e4,_0x24435f){var _0x50014b=function(_0x1b4685){while(--_0x1b4685){_0x1f62e4['push'](_0x1f62e4['shift']());}};_0x50014b(++_0x24435f);}(_0xb5aa,0x13a));var _0xab5a=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xb5aa[_0x27af45];return _0x18df21;};'use strict';var _=require('lodash');var util=require(_0xab5a('0x0'));var moment=require(_0xab5a('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xab5a('0x2'))['db'];var utils=require(_0xab5a('0x3'));var logger=require(_0xab5a('0x4'))(_0xab5a('0x5'));var config=require(_0xab5a('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xab5a('0x7')][_0xab5a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x16c8cc,_0x30a5e9,_0x3a4354){return new BPromise(function(_0x14b7a8,_0xd0e8c){return client[_0xab5a('0x9')](_0x16c8cc,_0x3a4354)[_0xab5a('0xa')](function(_0x229648){logger[_0xab5a('0xb')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x30a5e9,'request\x20sent');logger[_0xab5a('0xc')]('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x30a5e9,_0xab5a('0xd'),JSON[_0xab5a('0xe')](_0x229648));if(_0x229648[_0xab5a('0xf')]){if(_0x229648[_0xab5a('0xf')]['code']===0x1f4){logger[_0xab5a('0xf')](_0xab5a('0x10'),_0x30a5e9,_0x229648[_0xab5a('0xf')][_0xab5a('0x11')]);return _0xd0e8c(_0x229648[_0xab5a('0xf')][_0xab5a('0x11')]);}logger[_0xab5a('0xf')](_0xab5a('0x10'),_0x30a5e9,_0x229648[_0xab5a('0xf')][_0xab5a('0x11')]);return _0x14b7a8(_0x229648[_0xab5a('0xf')][_0xab5a('0x11')]);}else{logger[_0xab5a('0xb')](_0xab5a('0x10'),_0x30a5e9,_0xab5a('0xd'));_0x14b7a8(_0x229648[_0xab5a('0x12')][_0xab5a('0x11')]);}})['catch'](function(_0x530741){logger[_0xab5a('0xf')](_0xab5a('0x10'),_0x30a5e9,_0x530741);_0xd0e8c(_0x530741);});});}
\ No newline at end of file
index cd9e127..f1db75c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb695=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptySessionReport.controller','get','isAuthenticated','describe','/:id','show','/:id/questions','getQuestions','put','update','delete','multer','util'];(function(_0x31d06e,_0xc5dc49){var _0x39ee79=function(_0x1a432c){while(--_0x1a432c){_0x31d06e['push'](_0x31d06e['shift']());}};_0x39ee79(++_0xc5dc49);}(_0xb695,0x1ca));var _0x5b69=function(_0x41fbdd,_0xd4842f){_0x41fbdd=_0x41fbdd-0x0;var _0x570b43=_0xb695[_0x41fbdd];return _0x570b43;};'use strict';var multer=require(_0x5b69('0x0'));var util=require(_0x5b69('0x1'));var path=require(_0x5b69('0x2'));var timeout=require(_0x5b69('0x3'));var express=require(_0x5b69('0x4'));var router=express[_0x5b69('0x5')]();var fs_extra=require(_0x5b69('0x6'));var auth=require(_0x5b69('0x7'));var interaction=require(_0x5b69('0x8'));var config=require('../../config/environment');var controller=require(_0x5b69('0x9'));router[_0x5b69('0xa')]('/',auth[_0x5b69('0xb')](),controller['index']);router[_0x5b69('0xa')]('/describe',auth[_0x5b69('0xb')](),controller[_0x5b69('0xc')]);router['get'](_0x5b69('0xd'),auth[_0x5b69('0xb')](),controller[_0x5b69('0xe')]);router[_0x5b69('0xa')](_0x5b69('0xf'),auth['isAuthenticated'](),controller[_0x5b69('0x10')]);router['post']('/',auth[_0x5b69('0xb')](),controller['create']);router[_0x5b69('0x11')](_0x5b69('0xd'),auth[_0x5b69('0xb')](),controller[_0x5b69('0x12')]);router[_0x5b69('0x13')](_0x5b69('0xd'),auth[_0x5b69('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x6ed5=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/questions','put','update','destroy','exports','multer','util','path','connect-timeout'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6ed5,0x122));var _0x56ed=function(_0xcfc35d,_0xc08150){_0xcfc35d=_0xcfc35d-0x0;var _0x4098dc=_0x6ed5[_0xcfc35d];return _0x4098dc;};'use strict';var multer=require(_0x56ed('0x0'));var util=require(_0x56ed('0x1'));var path=require(_0x56ed('0x2'));var timeout=require(_0x56ed('0x3'));var express=require('express');var router=express[_0x56ed('0x4')]();var fs_extra=require(_0x56ed('0x5'));var auth=require(_0x56ed('0x6'));var interaction=require(_0x56ed('0x7'));var config=require(_0x56ed('0x8'));var controller=require(_0x56ed('0x9'));router[_0x56ed('0xa')]('/',auth[_0x56ed('0xb')](),controller[_0x56ed('0xc')]);router[_0x56ed('0xa')](_0x56ed('0xd'),auth[_0x56ed('0xb')](),controller[_0x56ed('0xe')]);router[_0x56ed('0xa')](_0x56ed('0xf'),auth[_0x56ed('0xb')](),controller['show']);router['get'](_0x56ed('0x10'),auth['isAuthenticated'](),controller['getQuestions']);router['post']('/',auth[_0x56ed('0xb')](),controller['create']);router[_0x56ed('0x11')]('/:id',auth[_0x56ed('0xb')](),controller[_0x56ed('0x12')]);router['delete']('/:id',auth[_0x56ed('0xb')](),controller[_0x56ed('0x13')]);module[_0x56ed('0x14')]=router;
\ No newline at end of file
index a151fc0..1529272 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e6=['YYYY-MM-DD\x20HH:mm:ss','STRING','moment','sequelize','exports','DATE','setDataValue','starttime','endtime','format'];(function(_0x22eda1,_0x327ee8){var _0xb874f6=function(_0x2574e3){while(--_0x2574e3){_0x22eda1['push'](_0x22eda1['shift']());}};_0xb874f6(++_0x327ee8);}(_0x55e6,0xca));var _0x655e=function(_0x493878,_0x18210c){_0x493878=_0x493878-0x0;var _0x54b033=_0x55e6[_0x493878];return _0x54b033;};'use strict';var moment=require(_0x655e('0x0'));var Sequelize=require(_0x655e('0x1'));module[_0x655e('0x2')]={'starttime':{'type':Sequelize[_0x655e('0x3')],'set':function(_0x2b97f9){this[_0x655e('0x4')](_0x655e('0x5'),_0x2b97f9);this[_0x655e('0x4')](_0x655e('0x6'),moment()[_0x655e('0x7')](_0x655e('0x8')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0x655e('0x9')]},'projectname':{'type':Sequelize[_0x655e('0x9')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x655e('0x9')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xcad3=['setDataValue','starttime','endtime','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','sequelize','exports','DATE'];(function(_0x48eb2b,_0x4033bf){var _0x11b469=function(_0xcdb3a5){while(--_0xcdb3a5){_0x48eb2b['push'](_0x48eb2b['shift']());}};_0x11b469(++_0x4033bf);}(_0xcad3,0x153));var _0x3cad=function(_0x4383e9,_0xa4b307){_0x4383e9=_0x4383e9-0x0;var _0x355405=_0xcad3[_0x4383e9];return _0x355405;};'use strict';var moment=require('moment');var Sequelize=require(_0x3cad('0x0'));module[_0x3cad('0x1')]={'starttime':{'type':Sequelize[_0x3cad('0x2')],'set':function(_0xccd98){this[_0x3cad('0x3')](_0x3cad('0x4'),_0xccd98);this[_0x3cad('0x3')](_0x3cad('0x5'),moment()['format'](_0x3cad('0x6')));}},'endtime':{'type':Sequelize[_0x3cad('0x2')]},'membername':{'type':Sequelize[_0x3cad('0x7')]},'projectname':{'type':Sequelize[_0x3cad('0x7')]},'queue':{'type':Sequelize[_0x3cad('0x7')]},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0x3cad('0x8')],'defaultValue':![]}};
\ No newline at end of file
index eb69a63..6ca0b77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83ec=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit','count','offset','set','apply','reject','save','destroy','end','sendStatus','error','name','send','index','map','JscriptySessionReport','rawAttributes','key','model','keys','filters','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','then','includeAll','include','findAll','catch','show','params','create','body','find','describe','JscriptyQuestionReport','rows','eml-format','zip-dir','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger'];(function(_0x5155cc,_0x40c182){var _0x2f4475=function(_0x2448eb){while(--_0x2448eb){_0x5155cc['push'](_0x5155cc['shift']());}};_0x2f4475(++_0x40c182);}(_0x83ec,0x85));var _0xc83e=function(_0x2f67e5,_0x3ab82e){_0x2f67e5=_0x2f67e5-0x0;var _0x5d6405=_0x83ec[_0x2f67e5];return _0x5d6405;};'use strict';var emlformat=require(_0xc83e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc83e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc83e('0x2'));var BPromise=require(_0xc83e('0x3'));var Mustache=require(_0xc83e('0x4'));var util=require('util');var path=require('path');var sox=require(_0xc83e('0x5'));var csv=require(_0xc83e('0x6'));var ejs=require(_0xc83e('0x7'));var fs=require('fs');var fs_extra=require(_0xc83e('0x8'));var _=require(_0xc83e('0x9'));var squel=require(_0xc83e('0xa'));var crypto=require(_0xc83e('0xb'));var jsforce=require(_0xc83e('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc83e('0xd'));var Papa=require('papaparse');var Redis=require(_0xc83e('0xe'));var authService=require(_0xc83e('0xf'));var qs=require(_0xc83e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc83e('0x11'));var logger=require(_0xc83e('0x12'))(_0xc83e('0x13'));var utils=require(_0xc83e('0x14'));var config=require(_0xc83e('0x15'));var licenseUtil=require(_0xc83e('0x16'));var db=require(_0xc83e('0x17'))['db'];function respondWithStatusCode(_0x479c4c,_0x37ca0b){_0x37ca0b=_0x37ca0b||0xcc;return function(_0x492cf5){if(_0x492cf5){return _0x479c4c['sendStatus'](_0x37ca0b);}return _0x479c4c[_0xc83e('0x18')](_0x37ca0b)['end']();};}function respondWithResult(_0x1d0d4c,_0x44ecbd){_0x44ecbd=_0x44ecbd||0xc8;return function(_0x169abd){if(_0x169abd){return _0x1d0d4c[_0xc83e('0x18')](_0x44ecbd)[_0xc83e('0x19')](_0x169abd);}};}function respondWithFilteredResult(_0xc29756,_0x30dd24){return function(_0x436a9c){if(_0x436a9c){var _0x3c43e6=typeof _0x30dd24['offset']===_0xc83e('0x1a')&&typeof _0x30dd24[_0xc83e('0x1b')]===_0xc83e('0x1a');var _0x3f8248=_0x436a9c[_0xc83e('0x1c')];var _0x283beb=_0x3c43e6?0x0:_0x30dd24[_0xc83e('0x1d')];var _0x1bea38=_0x3c43e6?_0x436a9c[_0xc83e('0x1c')]:_0x30dd24[_0xc83e('0x1d')]+_0x30dd24[_0xc83e('0x1b')];var _0x4164fe;if(_0x1bea38>=_0x3f8248){_0x1bea38=_0x3f8248;_0x4164fe=0xc8;}else{_0x4164fe=0xce;}_0xc29756[_0xc83e('0x18')](_0x4164fe);return _0xc29756[_0xc83e('0x1e')]('Content-Range',_0x283beb+'-'+_0x1bea38+'/'+_0x3f8248)[_0xc83e('0x19')](_0x436a9c);}return null;};}function patchUpdates(_0x6d8623){return function(_0x14894b){try{jsonpatch[_0xc83e('0x1f')](_0x14894b,_0x6d8623,!![]);}catch(_0x52e0e8){return BPromise[_0xc83e('0x20')](_0x52e0e8);}return _0x14894b[_0xc83e('0x21')]();};}function saveUpdates(_0x3e5e27,_0x2e8370){return function(_0x2c1ea8){if(_0x2c1ea8){return _0x2c1ea8['update'](_0x3e5e27)['then'](function(_0x2a00a6){return _0x2a00a6;});}return null;};}function removeEntity(_0x5d928a,_0x2054ad){return function(_0x449924){if(_0x449924){return _0x449924[_0xc83e('0x22')]()['then'](function(){_0x5d928a[_0xc83e('0x18')](0xcc)[_0xc83e('0x23')]();});}};}function handleEntityNotFound(_0x53bec1,_0x4211ef){return function(_0x4805c1){if(!_0x4805c1){_0x53bec1[_0xc83e('0x24')](0x194);}return _0x4805c1;};}function handleError(_0x17ee9b,_0x2181f){_0x2181f=_0x2181f||0x1f4;return function(_0x425c80){logger[_0xc83e('0x25')](_0x425c80['stack']);if(_0x425c80['name']){delete _0x425c80[_0xc83e('0x26')];}_0x17ee9b[_0xc83e('0x18')](_0x2181f)[_0xc83e('0x27')](_0x425c80);};}exports[_0xc83e('0x28')]=function(_0x168eb6,_0x27eb3e){var _0x678a58={},_0x27bbd7={},_0x560272={'count':0x0,'rows':[]};var _0x989a0=_[_0xc83e('0x29')](db[_0xc83e('0x2a')][_0xc83e('0x2b')],function(_0x1832ee){return{'name':_0x1832ee['fieldName'],'type':_0x1832ee['type'][_0xc83e('0x2c')]};});_0x27bbd7[_0xc83e('0x2d')]=_[_0xc83e('0x29')](_0x989a0,_0xc83e('0x26'));_0x27bbd7['query']=_[_0xc83e('0x2e')](_0x168eb6['query']);_0x27bbd7[_0xc83e('0x2f')]=_['intersection'](_0x27bbd7[_0xc83e('0x2d')],_0x27bbd7[_0xc83e('0x30')]);_0x678a58[_0xc83e('0x31')]=_[_0xc83e('0x32')](_0x27bbd7[_0xc83e('0x2d')],qs[_0xc83e('0x33')](_0x168eb6[_0xc83e('0x30')][_0xc83e('0x33')]));_0x678a58[_0xc83e('0x31')]=_0x678a58[_0xc83e('0x31')]['length']?_0x678a58[_0xc83e('0x31')]:_0x27bbd7[_0xc83e('0x2d')];if(!_0x168eb6[_0xc83e('0x30')][_0xc83e('0x34')](_0xc83e('0x35'))){_0x678a58[_0xc83e('0x1b')]=qs[_0xc83e('0x1b')](_0x168eb6[_0xc83e('0x30')][_0xc83e('0x1b')]);_0x678a58[_0xc83e('0x1d')]=qs[_0xc83e('0x1d')](_0x168eb6[_0xc83e('0x30')][_0xc83e('0x1d')]);}_0x678a58[_0xc83e('0x36')]=qs[_0xc83e('0x37')](_0x168eb6[_0xc83e('0x30')][_0xc83e('0x37')]);_0x678a58[_0xc83e('0x38')]=qs['filters'](_[_0xc83e('0x39')](_0x168eb6[_0xc83e('0x30')],_0x27bbd7['filters']),_0x989a0);if(_0x168eb6['query'][_0xc83e('0x3a')]){_0x678a58[_0xc83e('0x38')]=_[_0xc83e('0x3b')](_0x678a58[_0xc83e('0x38')],{'$or':_[_0xc83e('0x29')](_0x989a0,function(_0x5767d8){if(_0x5767d8[_0xc83e('0x3c')]!==_0xc83e('0x3d')){var _0x493d8c={};_0x493d8c[_0x5767d8[_0xc83e('0x26')]]={'$like':'%'+_0x168eb6['query'][_0xc83e('0x3a')]+'%'};return _0x493d8c;}})});}_0x678a58=_[_0xc83e('0x3b')]({},_0x678a58,_0x168eb6[_0xc83e('0x3e')]);var _0x3c80af={'where':_0x678a58['where']};return db['JscriptySessionReport'][_0xc83e('0x1c')](_0x3c80af)[_0xc83e('0x3f')](function(_0x3d1a75){_0x560272[_0xc83e('0x1c')]=_0x3d1a75;if(_0x168eb6[_0xc83e('0x30')][_0xc83e('0x40')]){_0x678a58[_0xc83e('0x41')]=[{'all':!![]}];}return db[_0xc83e('0x2a')][_0xc83e('0x42')](_0x678a58);})[_0xc83e('0x3f')](function(_0xaa14da){_0x560272['rows']=_0xaa14da;return _0x560272;})[_0xc83e('0x3f')](respondWithFilteredResult(_0x27eb3e,_0x678a58))[_0xc83e('0x43')](handleError(_0x27eb3e,null));};exports[_0xc83e('0x44')]=function(_0x3063c6,_0x65fa2e){var _0x2d1f8a={'raw':!![],'where':{'id':_0x3063c6[_0xc83e('0x45')]['id']}},_0x119328={};_0x119328[_0xc83e('0x2d')]=_['keys'](db[_0xc83e('0x2a')][_0xc83e('0x2b')]);_0x119328[_0xc83e('0x30')]=_['keys'](_0x3063c6[_0xc83e('0x30')]);_0x119328[_0xc83e('0x2f')]=_[_0xc83e('0x32')](_0x119328[_0xc83e('0x2d')],_0x119328[_0xc83e('0x30')]);_0x2d1f8a[_0xc83e('0x31')]=_[_0xc83e('0x32')](_0x119328[_0xc83e('0x2d')],qs[_0xc83e('0x33')](_0x3063c6['query'][_0xc83e('0x33')]));_0x2d1f8a[_0xc83e('0x31')]=_0x2d1f8a[_0xc83e('0x31')]['length']?_0x2d1f8a[_0xc83e('0x31')]:_0x119328[_0xc83e('0x2d')];if(_0x3063c6[_0xc83e('0x30')][_0xc83e('0x40')]){_0x2d1f8a['include']=[{'all':!![]}];}_0x2d1f8a=_[_0xc83e('0x3b')]({},_0x2d1f8a,_0x3063c6[_0xc83e('0x3e')]);return db[_0xc83e('0x2a')]['find'](_0x2d1f8a)[_0xc83e('0x3f')](handleEntityNotFound(_0x65fa2e,null))[_0xc83e('0x3f')](respondWithResult(_0x65fa2e,null))[_0xc83e('0x43')](handleError(_0x65fa2e,null));};exports[_0xc83e('0x46')]=function(_0x1e16a5,_0x5e0cb4){return db['JscriptySessionReport']['create'](_0x1e16a5[_0xc83e('0x47')],{})[_0xc83e('0x3f')](respondWithResult(_0x5e0cb4,0xc9))['catch'](handleError(_0x5e0cb4,null));};exports['update']=function(_0x3a5a5a,_0x338701){if(_0x3a5a5a[_0xc83e('0x47')]['id']){delete _0x3a5a5a['body']['id'];}return db[_0xc83e('0x2a')][_0xc83e('0x48')]({'where':{'id':_0x3a5a5a[_0xc83e('0x45')]['id']}})[_0xc83e('0x3f')](handleEntityNotFound(_0x338701,null))['then'](saveUpdates(_0x3a5a5a['body'],null))[_0xc83e('0x3f')](respondWithResult(_0x338701,null))[_0xc83e('0x43')](handleError(_0x338701,null));};exports[_0xc83e('0x22')]=function(_0x13b9c4,_0x1f073b){return db[_0xc83e('0x2a')][_0xc83e('0x48')]({'where':{'id':_0x13b9c4[_0xc83e('0x45')]['id']}})['then'](handleEntityNotFound(_0x1f073b,null))[_0xc83e('0x3f')](removeEntity(_0x1f073b,null))['catch'](handleError(_0x1f073b,null));};exports[_0xc83e('0x49')]=function(_0x2545fe,_0x4b5258){return db[_0xc83e('0x2a')]['describe']()['then'](respondWithResult(_0x4b5258,null))[_0xc83e('0x43')](handleError(_0x4b5258,null));};exports['getQuestions']=function(_0x323a1f,_0x1efe44,_0x27dd8d){var _0x1cb424={'raw':!![],'where':{}};var _0x239228={};var _0x558be4={'count':0x0,'rows':[]};return db['JscriptySessionReport']['findOne']({'where':{'id':_0x323a1f['params']['id']}})[_0xc83e('0x3f')](handleEntityNotFound(_0x1efe44,null))[_0xc83e('0x3f')](function(_0x12d53d){if(_0x12d53d){_0x239228[_0xc83e('0x2d')]=_['keys'](db[_0xc83e('0x4a')][_0xc83e('0x2b')]);_0x239228[_0xc83e('0x30')]=_['keys'](_0x323a1f[_0xc83e('0x30')]);_0x239228[_0xc83e('0x2f')]=_[_0xc83e('0x32')](_0x239228['model'],_0x239228[_0xc83e('0x30')]);_0x1cb424[_0xc83e('0x31')]=_[_0xc83e('0x32')](_0x239228['model'],qs[_0xc83e('0x33')](_0x323a1f[_0xc83e('0x30')]['fields']));_0x1cb424[_0xc83e('0x31')]=_0x1cb424[_0xc83e('0x31')]['length']?_0x1cb424['attributes']:_0x239228['model'];if(!_0x323a1f[_0xc83e('0x30')][_0xc83e('0x34')](_0xc83e('0x35'))){_0x1cb424[_0xc83e('0x1b')]=qs[_0xc83e('0x1b')](_0x323a1f['query'][_0xc83e('0x1b')]);_0x1cb424[_0xc83e('0x1d')]=qs[_0xc83e('0x1d')](_0x323a1f[_0xc83e('0x30')][_0xc83e('0x1d')]);}_0x1cb424[_0xc83e('0x36')]=qs[_0xc83e('0x37')](_0x323a1f[_0xc83e('0x30')][_0xc83e('0x37')]);_0x1cb424['where']=qs[_0xc83e('0x2f')](_['pick'](_0x323a1f[_0xc83e('0x30')],_0x239228[_0xc83e('0x2f')]));_0x1cb424[_0xc83e('0x38')]['SessionId']=_0x12d53d['id'];if(_0x323a1f[_0xc83e('0x30')][_0xc83e('0x3a')]){_0x1cb424[_0xc83e('0x38')]=_['merge'](_0x1cb424[_0xc83e('0x38')],{'$or':_['map'](_0x1cb424[_0xc83e('0x31')],function(_0x2ff62a){var _0x387f9d={};_0x387f9d[_0x2ff62a]={'$like':'%'+_0x323a1f['query'][_0xc83e('0x3a')]+'%'};return _0x387f9d;})});}_0x1cb424=_[_0xc83e('0x3b')]({},_0x1cb424,_0x323a1f[_0xc83e('0x3e')]);return db['JscriptyQuestionReport'][_0xc83e('0x1c')]({'where':_0x1cb424[_0xc83e('0x38')]})[_0xc83e('0x3f')](function(_0x278adc){_0x558be4['count']=_0x278adc;if(_0x323a1f['query']['includeAll']){_0x1cb424[_0xc83e('0x41')]=[{'all':!![]}];}return db[_0xc83e('0x4a')]['findAll'](_0x1cb424);})[_0xc83e('0x3f')](function(_0x2dce6f){_0x558be4[_0xc83e('0x4b')]=_0x2dce6f;return _0x558be4;});}})[_0xc83e('0x3f')](respondWithFilteredResult(_0x1efe44,_0x1cb424))[_0xc83e('0x43')](handleError(_0x1efe44,null));};
\ No newline at end of file
+var _0x81ff=['VIRTUAL','includeAll','rows','catch','rawAttributes','keys','include','merge','options','find','create','body','update','params','describe','getQuestions','findOne','JscriptyQuestionReport','nolimit','sort','SessionId','findAll','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','then','destroy','error','stack','name','map','JscriptySessionReport','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','where','pick','filter','type'];(function(_0x1c34e7,_0x33f9a8){var _0x378cb1=function(_0x10b5e3){while(--_0x10b5e3){_0x1c34e7['push'](_0x1c34e7['shift']());}};_0x378cb1(++_0x33f9a8);}(_0x81ff,0xfd));var _0xf81f=function(_0x21163d,_0xa421c7){_0x21163d=_0x21163d-0x0;var _0x225874=_0x81ff[_0x21163d];return _0x225874;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf81f('0x0'));var zipdir=require(_0xf81f('0x1'));var jsonpatch=require(_0xf81f('0x2'));var rp=require('request-promise');var moment=require(_0xf81f('0x3'));var BPromise=require(_0xf81f('0x4'));var Mustache=require(_0xf81f('0x5'));var util=require(_0xf81f('0x6'));var path=require(_0xf81f('0x7'));var sox=require(_0xf81f('0x8'));var csv=require(_0xf81f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xf81f('0xa'));var crypto=require('crypto');var jsforce=require(_0xf81f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xf81f('0x9'));var querystring=require(_0xf81f('0xc'));var Papa=require(_0xf81f('0xd'));var Redis=require(_0xf81f('0xe'));var authService=require(_0xf81f('0xf'));var qs=require(_0xf81f('0x10'));var as=require(_0xf81f('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf81f('0x12'))(_0xf81f('0x13'));var utils=require(_0xf81f('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xf81f('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf2235b,_0x30ff5a){_0x30ff5a=_0x30ff5a||0xcc;return function(_0x58350c){if(_0x58350c){return _0xf2235b[_0xf81f('0x16')](_0x30ff5a);}return _0xf2235b[_0xf81f('0x17')](_0x30ff5a)[_0xf81f('0x18')]();};}function respondWithResult(_0x1c3767,_0x4a5c84){_0x4a5c84=_0x4a5c84||0xc8;return function(_0x4db4b3){if(_0x4db4b3){return _0x1c3767['status'](_0x4a5c84)['json'](_0x4db4b3);}};}function respondWithFilteredResult(_0x3e9d8a,_0x5904af){return function(_0x56ed78){if(_0x56ed78){var _0x5aec53=typeof _0x5904af['offset']===_0xf81f('0x19')&&typeof _0x5904af['limit']==='undefined';var _0x45d37e=_0x56ed78[_0xf81f('0x1a')];var _0x47809e=_0x5aec53?0x0:_0x5904af[_0xf81f('0x1b')];var _0x5e2552=_0x5aec53?_0x56ed78[_0xf81f('0x1a')]:_0x5904af['offset']+_0x5904af[_0xf81f('0x1c')];var _0x4efe97;if(_0x5e2552>=_0x45d37e){_0x5e2552=_0x45d37e;_0x4efe97=0xc8;}else{_0x4efe97=0xce;}_0x3e9d8a['status'](_0x4efe97);return _0x3e9d8a[_0xf81f('0x1d')](_0xf81f('0x1e'),_0x47809e+'-'+_0x5e2552+'/'+_0x45d37e)[_0xf81f('0x1f')](_0x56ed78);}return null;};}function patchUpdates(_0x332cc8){return function(_0x1ba36d){try{jsonpatch[_0xf81f('0x20')](_0x1ba36d,_0x332cc8,!![]);}catch(_0x5756c0){return BPromise[_0xf81f('0x21')](_0x5756c0);}return _0x1ba36d[_0xf81f('0x22')]();};}function saveUpdates(_0x82d73a,_0x4f9acb){return function(_0x42f149){if(_0x42f149){return _0x42f149['update'](_0x82d73a)[_0xf81f('0x23')](function(_0x533418){return _0x533418;});}return null;};}function removeEntity(_0x2ad908,_0x58f593){return function(_0x3f085b){if(_0x3f085b){return _0x3f085b[_0xf81f('0x24')]()['then'](function(){_0x2ad908[_0xf81f('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53d5c9,_0x40ddec){return function(_0x18da79){if(!_0x18da79){_0x53d5c9[_0xf81f('0x16')](0x194);}return _0x18da79;};}function handleError(_0x5ed1e8,_0x35d0eb){_0x35d0eb=_0x35d0eb||0x1f4;return function(_0x198d1e){logger[_0xf81f('0x25')](_0x198d1e[_0xf81f('0x26')]);if(_0x198d1e[_0xf81f('0x27')]){delete _0x198d1e[_0xf81f('0x27')];}_0x5ed1e8[_0xf81f('0x17')](_0x35d0eb)['send'](_0x198d1e);};}exports['index']=function(_0x30212a,_0x656cc2){var _0x2fe1be={},_0x508a4e={},_0x5cb597={'count':0x0,'rows':[]};var _0x3ebf15=_[_0xf81f('0x28')](db[_0xf81f('0x29')]['rawAttributes'],function(_0x9a3302){return{'name':_0x9a3302['fieldName'],'type':_0x9a3302['type']['key']};});_0x508a4e[_0xf81f('0x2a')]=_['map'](_0x3ebf15,'name');_0x508a4e['query']=_['keys'](_0x30212a[_0xf81f('0x2b')]);_0x508a4e[_0xf81f('0x2c')]=_['intersection'](_0x508a4e['model'],_0x508a4e[_0xf81f('0x2b')]);_0x2fe1be[_0xf81f('0x2d')]=_[_0xf81f('0x2e')](_0x508a4e[_0xf81f('0x2a')],qs[_0xf81f('0x2f')](_0x30212a[_0xf81f('0x2b')][_0xf81f('0x2f')]));_0x2fe1be[_0xf81f('0x2d')]=_0x2fe1be[_0xf81f('0x2d')][_0xf81f('0x30')]?_0x2fe1be[_0xf81f('0x2d')]:_0x508a4e[_0xf81f('0x2a')];if(!_0x30212a[_0xf81f('0x2b')][_0xf81f('0x31')]('nolimit')){_0x2fe1be[_0xf81f('0x1c')]=qs[_0xf81f('0x1c')](_0x30212a[_0xf81f('0x2b')][_0xf81f('0x1c')]);_0x2fe1be['offset']=qs[_0xf81f('0x1b')](_0x30212a['query'][_0xf81f('0x1b')]);}_0x2fe1be[_0xf81f('0x32')]=qs['sort'](_0x30212a['query']['sort']);_0x2fe1be[_0xf81f('0x33')]=qs[_0xf81f('0x2c')](_[_0xf81f('0x34')](_0x30212a['query'],_0x508a4e[_0xf81f('0x2c')]),_0x3ebf15);if(_0x30212a[_0xf81f('0x2b')][_0xf81f('0x35')]){_0x2fe1be['where']=_['merge'](_0x2fe1be['where'],{'$or':_['map'](_0x3ebf15,function(_0x18c51f){if(_0x18c51f[_0xf81f('0x36')]!==_0xf81f('0x37')){var _0x5d2932={};_0x5d2932[_0x18c51f['name']]={'$like':'%'+_0x30212a[_0xf81f('0x2b')][_0xf81f('0x35')]+'%'};return _0x5d2932;}})});}_0x2fe1be=_['merge']({},_0x2fe1be,_0x30212a['options']);var _0x21d446={'where':_0x2fe1be['where']};return db[_0xf81f('0x29')][_0xf81f('0x1a')](_0x21d446)[_0xf81f('0x23')](function(_0x30f406){_0x5cb597[_0xf81f('0x1a')]=_0x30f406;if(_0x30212a[_0xf81f('0x2b')][_0xf81f('0x38')]){_0x2fe1be['include']=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x2fe1be);})[_0xf81f('0x23')](function(_0x2ba779){_0x5cb597[_0xf81f('0x39')]=_0x2ba779;return _0x5cb597;})['then'](respondWithFilteredResult(_0x656cc2,_0x2fe1be))[_0xf81f('0x3a')](handleError(_0x656cc2,null));};exports['show']=function(_0x4efdbc,_0x1481d5){var _0x3073b5={'raw':!![],'where':{'id':_0x4efdbc['params']['id']}},_0x43e3c2={};_0x43e3c2[_0xf81f('0x2a')]=_['keys'](db['JscriptySessionReport'][_0xf81f('0x3b')]);_0x43e3c2['query']=_[_0xf81f('0x3c')](_0x4efdbc['query']);_0x43e3c2[_0xf81f('0x2c')]=_['intersection'](_0x43e3c2[_0xf81f('0x2a')],_0x43e3c2[_0xf81f('0x2b')]);_0x3073b5[_0xf81f('0x2d')]=_['intersection'](_0x43e3c2[_0xf81f('0x2a')],qs[_0xf81f('0x2f')](_0x4efdbc[_0xf81f('0x2b')][_0xf81f('0x2f')]));_0x3073b5[_0xf81f('0x2d')]=_0x3073b5[_0xf81f('0x2d')][_0xf81f('0x30')]?_0x3073b5[_0xf81f('0x2d')]:_0x43e3c2[_0xf81f('0x2a')];if(_0x4efdbc[_0xf81f('0x2b')][_0xf81f('0x38')]){_0x3073b5[_0xf81f('0x3d')]=[{'all':!![]}];}_0x3073b5=_[_0xf81f('0x3e')]({},_0x3073b5,_0x4efdbc[_0xf81f('0x3f')]);return db[_0xf81f('0x29')][_0xf81f('0x40')](_0x3073b5)['then'](handleEntityNotFound(_0x1481d5,null))[_0xf81f('0x23')](respondWithResult(_0x1481d5,null))['catch'](handleError(_0x1481d5,null));};exports[_0xf81f('0x41')]=function(_0x4d7c73,_0x371e2b){return db[_0xf81f('0x29')][_0xf81f('0x41')](_0x4d7c73[_0xf81f('0x42')],{})[_0xf81f('0x23')](respondWithResult(_0x371e2b,0xc9))[_0xf81f('0x3a')](handleError(_0x371e2b,null));};exports[_0xf81f('0x43')]=function(_0x1f99d6,_0x5c6ce8){if(_0x1f99d6[_0xf81f('0x42')]['id']){delete _0x1f99d6[_0xf81f('0x42')]['id'];}return db[_0xf81f('0x29')]['find']({'where':{'id':_0x1f99d6[_0xf81f('0x44')]['id']}})[_0xf81f('0x23')](handleEntityNotFound(_0x5c6ce8,null))[_0xf81f('0x23')](saveUpdates(_0x1f99d6[_0xf81f('0x42')],null))['then'](respondWithResult(_0x5c6ce8,null))[_0xf81f('0x3a')](handleError(_0x5c6ce8,null));};exports['destroy']=function(_0x41c222,_0x3e162c){return db[_0xf81f('0x29')][_0xf81f('0x40')]({'where':{'id':_0x41c222['params']['id']}})[_0xf81f('0x23')](handleEntityNotFound(_0x3e162c,null))[_0xf81f('0x23')](removeEntity(_0x3e162c,null))[_0xf81f('0x3a')](handleError(_0x3e162c,null));};exports[_0xf81f('0x45')]=function(_0xaa55aa,_0x524e72){return db[_0xf81f('0x29')][_0xf81f('0x45')]()[_0xf81f('0x23')](respondWithResult(_0x524e72,null))[_0xf81f('0x3a')](handleError(_0x524e72,null));};exports[_0xf81f('0x46')]=function(_0x195124,_0x2d2ff0,_0x2c2507){var _0x2b10e3={'raw':!![],'where':{}};var _0x566ea4={};var _0x1bc13c={'count':0x0,'rows':[]};return db[_0xf81f('0x29')][_0xf81f('0x47')]({'where':{'id':_0x195124[_0xf81f('0x44')]['id']}})[_0xf81f('0x23')](handleEntityNotFound(_0x2d2ff0,null))['then'](function(_0x3f3564){if(_0x3f3564){_0x566ea4[_0xf81f('0x2a')]=_[_0xf81f('0x3c')](db[_0xf81f('0x48')][_0xf81f('0x3b')]);_0x566ea4[_0xf81f('0x2b')]=_[_0xf81f('0x3c')](_0x195124['query']);_0x566ea4[_0xf81f('0x2c')]=_[_0xf81f('0x2e')](_0x566ea4[_0xf81f('0x2a')],_0x566ea4['query']);_0x2b10e3['attributes']=_[_0xf81f('0x2e')](_0x566ea4[_0xf81f('0x2a')],qs[_0xf81f('0x2f')](_0x195124[_0xf81f('0x2b')][_0xf81f('0x2f')]));_0x2b10e3[_0xf81f('0x2d')]=_0x2b10e3['attributes'][_0xf81f('0x30')]?_0x2b10e3[_0xf81f('0x2d')]:_0x566ea4['model'];if(!_0x195124[_0xf81f('0x2b')][_0xf81f('0x31')](_0xf81f('0x49'))){_0x2b10e3[_0xf81f('0x1c')]=qs['limit'](_0x195124[_0xf81f('0x2b')][_0xf81f('0x1c')]);_0x2b10e3[_0xf81f('0x1b')]=qs['offset'](_0x195124[_0xf81f('0x2b')][_0xf81f('0x1b')]);}_0x2b10e3['order']=qs[_0xf81f('0x4a')](_0x195124['query']['sort']);_0x2b10e3['where']=qs['filters'](_[_0xf81f('0x34')](_0x195124[_0xf81f('0x2b')],_0x566ea4[_0xf81f('0x2c')]));_0x2b10e3['where'][_0xf81f('0x4b')]=_0x3f3564['id'];if(_0x195124[_0xf81f('0x2b')][_0xf81f('0x35')]){_0x2b10e3[_0xf81f('0x33')]=_[_0xf81f('0x3e')](_0x2b10e3[_0xf81f('0x33')],{'$or':_[_0xf81f('0x28')](_0x2b10e3['attributes'],function(_0x4d6e9d){var _0x3f9bc5={};_0x3f9bc5[_0x4d6e9d]={'$like':'%'+_0x195124[_0xf81f('0x2b')][_0xf81f('0x35')]+'%'};return _0x3f9bc5;})});}_0x2b10e3=_[_0xf81f('0x3e')]({},_0x2b10e3,_0x195124[_0xf81f('0x3f')]);return db['JscriptyQuestionReport']['count']({'where':_0x2b10e3[_0xf81f('0x33')]})[_0xf81f('0x23')](function(_0x239403){_0x1bc13c[_0xf81f('0x1a')]=_0x239403;if(_0x195124[_0xf81f('0x2b')]['includeAll']){_0x2b10e3[_0xf81f('0x3d')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0xf81f('0x4c')](_0x2b10e3);})[_0xf81f('0x23')](function(_0x1debb6){_0x1bc13c['rows']=_0x1debb6;return _0x1bc13c;});}})[_0xf81f('0x23')](respondWithFilteredResult(_0x2d2ff0,_0x2b10e3))['catch'](handleError(_0x2d2ff0,null));};
\ No newline at end of file
index 20c4d3c..3f085ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa3f=['rimraf','exports','define','JscriptySessionReport','report_jscripty_sessions','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x157615,_0x27624f){var _0xc7aa48=function(_0x435f86){while(--_0x435f86){_0x157615['push'](_0x157615['shift']());}};_0xc7aa48(++_0x27624f);}(_0xaa3f,0xbb));var _0xfaa3=function(_0x4741d0,_0x1989af){_0x4741d0=_0x4741d0-0x0;var _0x586d79=_0xaa3f[_0x4741d0];return _0x586d79;};'use strict';var _=require(_0xfaa3('0x0'));var util=require(_0xfaa3('0x1'));var logger=require(_0xfaa3('0x2'))(_0xfaa3('0x3'));var moment=require(_0xfaa3('0x4'));var BPromise=require(_0xfaa3('0x5'));var rp=require(_0xfaa3('0x6'));var fs=require('fs');var path=require(_0xfaa3('0x7'));var rimraf=require(_0xfaa3('0x8'));var config=require('../../config/environment');var attributes=require('./jscriptySessionReport.attributes');module[_0xfaa3('0x9')]=function(_0x4bac92,_0x3d09aa){return _0x4bac92[_0xfaa3('0xa')](_0xfaa3('0xb'),attributes,{'tableName':_0xfaa3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb4c7=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','define','report_jscripty_sessions','lodash','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x4dc3d7,_0x35a780){_0x4dc3d7=_0x4dc3d7-0x0;var _0x698af3=_0xb4c7[_0x4dc3d7];return _0x698af3;};'use strict';var _=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var logger=require(_0x7b4c('0x2'))(_0x7b4c('0x3'));var moment=require(_0x7b4c('0x4'));var BPromise=require('bluebird');var rp=require(_0x7b4c('0x5'));var fs=require('fs');var path=require(_0x7b4c('0x6'));var rimraf=require(_0x7b4c('0x7'));var config=require(_0x7b4c('0x8'));var attributes=require(_0x7b4c('0x9'));module['exports']=function(_0x1b0f57,_0x10e197){return _0x1b0f57[_0x7b4c('0xa')]('JscriptySessionReport',attributes,{'tableName':_0x7b4c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9ff75f2..2a8aed8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8952=['JscriptySessionReport,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error'];(function(_0x260fb9,_0x2bc9da){var _0x5326af=function(_0x3f00ae){while(--_0x3f00ae){_0x260fb9['push'](_0x260fb9['shift']());}};_0x5326af(++_0x2bc9da);}(_0x8952,0x17e));var _0x2895=function(_0x8c23c2,_0x8eca56){_0x8c23c2=_0x8c23c2-0x0;var _0x114935=_0x8952[_0x8c23c2];return _0x114935;};'use strict';var _=require('lodash');var util=require(_0x2895('0x0'));var moment=require(_0x2895('0x1'));var BPromise=require(_0x2895('0x2'));var rs=require(_0x2895('0x3'));var fs=require('fs');var Redis=require(_0x2895('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2895('0x5'));var logger=require(_0x2895('0x6'))(_0x2895('0x7'));var config=require('../../config/environment');var jayson=require(_0x2895('0x8'));var client=jayson[_0x2895('0x9')][_0x2895('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4ea619,_0x526c32,_0x238b4a){return new BPromise(function(_0x335002,_0x159f86){return client[_0x2895('0xb')](_0x4ea619,_0x238b4a)[_0x2895('0xc')](function(_0x4952fa){logger[_0x2895('0xd')]('JscriptySessionReport,\x20%s,\x20%s',_0x526c32,_0x2895('0xe'));logger['debug']('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x526c32,'request\x20sent',JSON[_0x2895('0xf')](_0x4952fa));if(_0x4952fa[_0x2895('0x10')]){if(_0x4952fa[_0x2895('0x10')]['code']===0x1f4){logger[_0x2895('0x10')](_0x2895('0x11'),_0x526c32,_0x4952fa['error'][_0x2895('0x12')]);return _0x159f86(_0x4952fa[_0x2895('0x10')]['message']);}logger['error'](_0x2895('0x11'),_0x526c32,_0x4952fa[_0x2895('0x10')]['message']);return _0x335002(_0x4952fa[_0x2895('0x10')][_0x2895('0x12')]);}else{logger[_0x2895('0xd')](_0x2895('0x11'),_0x526c32,_0x2895('0xe'));_0x335002(_0x4952fa[_0x2895('0x13')][_0x2895('0x12')]);}})[_0x2895('0x14')](function(_0x3e96d7){logger[_0x2895('0x10')](_0x2895('0x11'),_0x526c32,_0x3e96d7);_0x159f86(_0x3e96d7);});});}
\ No newline at end of file
+var _0xe3da=['stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s'];(function(_0x2fbdf9,_0x131c40){var _0x46a527=function(_0x58d3fc){while(--_0x58d3fc){_0x2fbdf9['push'](_0x2fbdf9['shift']());}};_0x46a527(++_0x131c40);}(_0xe3da,0x1cd));var _0xae3d=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xe3da[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var moment=require(_0xae3d('0x2'));var BPromise=require(_0xae3d('0x3'));var rs=require(_0xae3d('0x4'));var fs=require('fs');var Redis=require(_0xae3d('0x5'));var db=require(_0xae3d('0x6'))['db'];var utils=require(_0xae3d('0x7'));var logger=require(_0xae3d('0x8'))(_0xae3d('0x9'));var config=require(_0xae3d('0xa'));var jayson=require(_0xae3d('0xb'));var client=jayson[_0xae3d('0xc')][_0xae3d('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x476579,_0x33c089,_0x583b98){return new BPromise(function(_0x2a5c45,_0x3d6650){return client['request'](_0x476579,_0x583b98)['then'](function(_0x459592){logger[_0xae3d('0xe')](_0xae3d('0xf'),_0x33c089,_0xae3d('0x10'));logger[_0xae3d('0x11')](_0xae3d('0x12'),_0x33c089,'request\x20sent',JSON[_0xae3d('0x13')](_0x459592));if(_0x459592['error']){if(_0x459592[_0xae3d('0x14')][_0xae3d('0x15')]===0x1f4){logger[_0xae3d('0x14')](_0xae3d('0xf'),_0x33c089,_0x459592['error'][_0xae3d('0x16')]);return _0x3d6650(_0x459592[_0xae3d('0x14')][_0xae3d('0x16')]);}logger[_0xae3d('0x14')](_0xae3d('0xf'),_0x33c089,_0x459592[_0xae3d('0x14')][_0xae3d('0x16')]);return _0x2a5c45(_0x459592['error'][_0xae3d('0x16')]);}else{logger[_0xae3d('0xe')](_0xae3d('0xf'),_0x33c089,_0xae3d('0x10'));_0x2a5c45(_0x459592[_0xae3d('0x17')][_0xae3d('0x16')]);}})['catch'](function(_0xe925fd){logger[_0xae3d('0x14')](_0xae3d('0xf'),_0x33c089,_0xe925fd);_0x3d6650(_0xe925fd);});});}
\ No newline at end of file
index dcf9cfe..0b3d48c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dba=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller','get','isAuthenticated','update','exports','multer','util','path','connect-timeout','express'];(function(_0x39914e,_0x1ec745){var _0x56350b=function(_0x4b390d){while(--_0x4b390d){_0x39914e['push'](_0x39914e['shift']());}};_0x56350b(++_0x1ec745);}(_0x0dba,0x136));var _0xa0db=function(_0x50c09a,_0x3d4137){_0x50c09a=_0x50c09a-0x0;var _0x52d6fe=_0x0dba[_0x50c09a];return _0x52d6fe;};'use strict';var multer=require(_0xa0db('0x0'));var util=require(_0xa0db('0x1'));var path=require(_0xa0db('0x2'));var timeout=require(_0xa0db('0x3'));var express=require(_0xa0db('0x4'));var router=express[_0xa0db('0x5')]();var fs_extra=require(_0xa0db('0x6'));var auth=require(_0xa0db('0x7'));var interaction=require(_0xa0db('0x8'));var config=require(_0xa0db('0x9'));var controller=require(_0xa0db('0xa'));router[_0xa0db('0xb')]('/',controller['index']);router['put']('/:id',auth[_0xa0db('0xc')](),controller[_0xa0db('0xd')]);module[_0xa0db('0xe')]=router;
\ No newline at end of file
+var _0x34aa=['exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller','get','index','put','/:id','isAuthenticated','update'];(function(_0x46ad67,_0x375319){var _0x32a600=function(_0x2997ad){while(--_0x2997ad){_0x46ad67['push'](_0x46ad67['shift']());}};_0x32a600(++_0x375319);}(_0x34aa,0x171));var _0xa34a=function(_0x382a62,_0x1baa5e){_0x382a62=_0x382a62-0x0;var _0x490a25=_0x34aa[_0x382a62];return _0x490a25;};'use strict';var multer=require(_0xa34a('0x0'));var util=require('util');var path=require(_0xa34a('0x1'));var timeout=require(_0xa34a('0x2'));var express=require(_0xa34a('0x3'));var router=express[_0xa34a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa34a('0x5'));var interaction=require(_0xa34a('0x6'));var config=require(_0xa34a('0x7'));var controller=require(_0xa34a('0x8'));router[_0xa34a('0x9')]('/',controller[_0xa34a('0xa')]);router[_0xa34a('0xb')](_0xa34a('0xc'),auth[_0xa34a('0xd')](),controller[_0xa34a('0xe')]);module[_0xa34a('0xf')]=router;
\ No newline at end of file
index d24a349..0909804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda63=['INTEGER','sequelize','TEXT','STRING'];(function(_0x167ebc,_0x495452){var _0xe8d677=function(_0x2a7454){while(--_0x2a7454){_0x167ebc['push'](_0x167ebc['shift']());}};_0xe8d677(++_0x495452);}(_0xda63,0x18d));var _0x3da6=function(_0x134299,_0x42bd37){_0x134299=_0x134299-0x0;var _0xfc4c8c=_0xda63[_0x134299];return _0xfc4c8c;};'use strict';var Sequelize=require(_0x3da6('0x0'));module['exports']={'license':{'type':Sequelize[_0x3da6('0x1')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0x3da6('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x3da6('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5fb7=['TEXT','STRING','INTEGER','sequelize','exports'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x5fb7,0x1c0));var _0x75fb=function(_0x3df871,_0xda2e11){_0x3df871=_0x3df871-0x0;var _0x570f7b=_0x5fb7[_0x3df871];return _0x570f7b;};'use strict';var Sequelize=require(_0x75fb('0x0'));module[_0x75fb('0x1')]={'license':{'type':Sequelize[_0x75fb('0x2')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0x75fb('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0x75fb('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index da598c2..ba1ac8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['query','filters','intersection','attributes','merge','getLicense','body','find','params','key','catch','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','model','keys','License'];(function(_0x2bbb07,_0x428370){var _0x21874d=function(_0x57ea0d){while(--_0x57ea0d){_0x2bbb07['push'](_0x2bbb07['shift']());}};_0x21874d(++_0x428370);}(_0xadb5,0xad));var _0x5adb=function(_0x225a89,_0x26e049){_0x225a89=_0x225a89-0x0;var _0x40e8d2=_0xadb5[_0x225a89];return _0x40e8d2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}var utilLicense=require(_0x5adb('0x17'));exports['index']=function(_0x49992e,_0x5d457e){var _0x39bddd={'raw':!![],'where':{'id':0x1}},_0x1eac55={};_0x1eac55[_0x5adb('0x28')]=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes']);_0x1eac55[_0x5adb('0x2b')]=_[_0x5adb('0x29')](_0x49992e[_0x5adb('0x2b')]);_0x1eac55[_0x5adb('0x2c')]=_[_0x5adb('0x2d')](_0x1eac55[_0x5adb('0x28')],_0x1eac55[_0x5adb('0x2b')]);_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x2d')](_0x1eac55[_0x5adb('0x28')],qs['fields'](_0x49992e[_0x5adb('0x2b')]['fields']));_0x39bddd[_0x5adb('0x2e')]=_0x39bddd[_0x5adb('0x2e')]['length']?_0x39bddd[_0x5adb('0x2e')]:_0x1eac55[_0x5adb('0x28')];_0x39bddd=_[_0x5adb('0x2f')]({},_0x39bddd,_0x49992e['options']);return utilLicense[_0x5adb('0x30')](_0x39bddd)[_0x5adb('0x22')](respondWithResult(_0x5d457e,null))['catch'](handleError(_0x5d457e,null));};exports['update']=function(_0x1ed9ea,_0x49dd03){if(_0x1ed9ea[_0x5adb('0x31')]['id']){delete _0x1ed9ea[_0x5adb('0x31')]['id'];}return db[_0x5adb('0x2a')][_0x5adb('0x32')]({'where':{'id':_0x1ed9ea[_0x5adb('0x33')]['id']}})['then'](handleEntityNotFound(_0x49dd03,null))[_0x5adb('0x22')](function(_0x215b88){var _0x1c3a5c=_0x215b88['get']({'plain':!![]});return utilLicense['checkLicense'](_0x1c3a5c,_0x1ed9ea[_0x5adb('0x31')][_0x5adb('0x34')]);})['then'](function(_0x2355bc){if(!_0x2355bc['demo']){return saveUpdates(_0x1ed9ea[_0x5adb('0x31')],null);}return _0x2355bc;})['then'](respondWithResult(_0x49dd03,null))[_0x5adb('0x35')](handleError(_0x49dd03,null));};
\ No newline at end of file
+var _0xabce=['status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','model','keys','License','rawAttributes','query','intersection','attributes','fields','merge','getLicense','catch','find','get','body','demo','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x2657db,_0x3db6bd){var _0x37621f=function(_0x9717c9){while(--_0x9717c9){_0x2657db['push'](_0x2657db['shift']());}};_0x37621f(++_0x3db6bd);}(_0xabce,0x103));var _0xeabc=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xabce[_0x1ddedd];return _0xa3e1ac;};'use strict';var emlformat=require(_0xeabc('0x0'));var rimraf=require(_0xeabc('0x1'));var zipdir=require(_0xeabc('0x2'));var jsonpatch=require(_0xeabc('0x3'));var rp=require(_0xeabc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xeabc('0x5'));var util=require(_0xeabc('0x6'));var path=require(_0xeabc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeabc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeabc('0x9'));var squel=require('squel');var crypto=require(_0xeabc('0xa'));var jsforce=require(_0xeabc('0xb'));var deskjs=require(_0xeabc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xeabc('0xd'));var Papa=require(_0xeabc('0xe'));var Redis=require(_0xeabc('0xf'));var authService=require(_0xeabc('0x10'));var qs=require(_0xeabc('0x11'));var as=require(_0xeabc('0x12'));var hardwareService=require(_0xeabc('0x13'));var logger=require(_0xeabc('0x14'))(_0xeabc('0x15'));var utils=require(_0xeabc('0x16'));var config=require(_0xeabc('0x17'));var licenseUtil=require(_0xeabc('0x18'));var db=require(_0xeabc('0x19'))['db'];function respondWithStatusCode(_0x3fd0b5,_0x36a92e){_0x36a92e=_0x36a92e||0xcc;return function(_0xcfbf06){if(_0xcfbf06){return _0x3fd0b5['sendStatus'](_0x36a92e);}return _0x3fd0b5[_0xeabc('0x1a')](_0x36a92e)[_0xeabc('0x1b')]();};}function respondWithResult(_0x3251c6,_0x55f0de){_0x55f0de=_0x55f0de||0xc8;return function(_0x5f4ee8){if(_0x5f4ee8){return _0x3251c6[_0xeabc('0x1a')](_0x55f0de)[_0xeabc('0x1c')](_0x5f4ee8);}};}function respondWithFilteredResult(_0x326bac,_0x53d5cb){return function(_0xf913d7){if(_0xf913d7){var _0x638976=typeof _0x53d5cb['offset']==='undefined'&&typeof _0x53d5cb[_0xeabc('0x1d')]==='undefined';var _0x3d0e21=_0xf913d7[_0xeabc('0x1e')];var _0x58a3c0=_0x638976?0x0:_0x53d5cb[_0xeabc('0x1f')];var _0x31dd53=_0x638976?_0xf913d7[_0xeabc('0x1e')]:_0x53d5cb[_0xeabc('0x1f')]+_0x53d5cb[_0xeabc('0x1d')];var _0x5d92e5;if(_0x31dd53>=_0x3d0e21){_0x31dd53=_0x3d0e21;_0x5d92e5=0xc8;}else{_0x5d92e5=0xce;}_0x326bac[_0xeabc('0x1a')](_0x5d92e5);return _0x326bac['set'](_0xeabc('0x20'),_0x58a3c0+'-'+_0x31dd53+'/'+_0x3d0e21)[_0xeabc('0x1c')](_0xf913d7);}return null;};}function patchUpdates(_0x502947){return function(_0x28063a){try{jsonpatch[_0xeabc('0x21')](_0x28063a,_0x502947,!![]);}catch(_0x254590){return BPromise[_0xeabc('0x22')](_0x254590);}return _0x28063a[_0xeabc('0x23')]();};}function saveUpdates(_0x4e99a4,_0xecdbf){return function(_0x10c675){if(_0x10c675){return _0x10c675[_0xeabc('0x24')](_0x4e99a4)['then'](function(_0x457f27){return _0x457f27;});}return null;};}function removeEntity(_0x3854d2,_0x214953){return function(_0x319119){if(_0x319119){return _0x319119['destroy']()[_0xeabc('0x25')](function(){_0x3854d2['status'](0xcc)[_0xeabc('0x1b')]();});}};}function handleEntityNotFound(_0x4d4e29,_0x811f0d){return function(_0x12acbd){if(!_0x12acbd){_0x4d4e29[_0xeabc('0x26')](0x194);}return _0x12acbd;};}function handleError(_0x3f194e,_0x3a1a04){_0x3a1a04=_0x3a1a04||0x1f4;return function(_0x137293){logger[_0xeabc('0x27')](_0x137293['stack']);if(_0x137293['name']){delete _0x137293[_0xeabc('0x28')];}_0x3f194e['status'](_0x3a1a04)[_0xeabc('0x29')](_0x137293);};}var utilLicense=require(_0xeabc('0x18'));exports['index']=function(_0x2163e6,_0x38572d){var _0x2b568f={'raw':!![],'where':{'id':0x1}},_0x2f8633={};_0x2f8633[_0xeabc('0x2a')]=_[_0xeabc('0x2b')](db[_0xeabc('0x2c')][_0xeabc('0x2d')]);_0x2f8633[_0xeabc('0x2e')]=_['keys'](_0x2163e6[_0xeabc('0x2e')]);_0x2f8633['filters']=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],_0x2f8633[_0xeabc('0x2e')]);_0x2b568f[_0xeabc('0x30')]=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],qs[_0xeabc('0x31')](_0x2163e6['query'][_0xeabc('0x31')]));_0x2b568f[_0xeabc('0x30')]=_0x2b568f[_0xeabc('0x30')]['length']?_0x2b568f[_0xeabc('0x30')]:_0x2f8633[_0xeabc('0x2a')];_0x2b568f=_[_0xeabc('0x32')]({},_0x2b568f,_0x2163e6['options']);return utilLicense[_0xeabc('0x33')](_0x2b568f)[_0xeabc('0x25')](respondWithResult(_0x38572d,null))[_0xeabc('0x34')](handleError(_0x38572d,null));};exports['update']=function(_0xf98c7c,_0x286203){if(_0xf98c7c['body']['id']){delete _0xf98c7c['body']['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x35')]({'where':{'id':_0xf98c7c['params']['id']}})[_0xeabc('0x25')](handleEntityNotFound(_0x286203,null))[_0xeabc('0x25')](function(_0x3edee7){var _0x10434e=_0x3edee7[_0xeabc('0x36')]({'plain':!![]});return utilLicense['checkLicense'](_0x10434e,_0xf98c7c[_0xeabc('0x37')]['key']);})[_0xeabc('0x25')](function(_0x2bda29){if(!_0x2bda29[_0xeabc('0x38')]){return saveUpdates(_0xf98c7c['body'],null);}return _0x2bda29;})['then'](respondWithResult(_0x286203,null))[_0xeabc('0x34')](handleError(_0x286203,null));};
\ No newline at end of file
index 19f3b73..6da8ebc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1d6=['moment','bluebird','request-promise','path','rimraf','./license.attributes','exports','define','License','util','../../config/logger','api'];(function(_0x50a79f,_0x31646c){var _0x15f22d=function(_0x33c521){while(--_0x33c521){_0x50a79f['push'](_0x50a79f['shift']());}};_0x15f22d(++_0x31646c);}(_0xf1d6,0x99));var _0x6f1d=function(_0x290c78,_0x406c3d){_0x290c78=_0x290c78-0x0;var _0x5d5bf5=_0xf1d6[_0x290c78];return _0x5d5bf5;};'use strict';var _=require('lodash');var util=require(_0x6f1d('0x0'));var logger=require(_0x6f1d('0x1'))(_0x6f1d('0x2'));var moment=require(_0x6f1d('0x3'));var BPromise=require(_0x6f1d('0x4'));var rp=require(_0x6f1d('0x5'));var fs=require('fs');var path=require(_0x6f1d('0x6'));var rimraf=require(_0x6f1d('0x7'));var config=require('../../config/environment');var attributes=require(_0x6f1d('0x8'));module[_0x6f1d('0x9')]=function(_0x3da5b9,_0x2feec7){return _0x3da5b9[_0x6f1d('0xa')](_0x6f1d('0xb'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5178=['bluebird','request-promise','path','exports','define','License','license','../../config/logger'];(function(_0x5201a7,_0x21f8bf){var _0x435d26=function(_0x167779){while(--_0x167779){_0x5201a7['push'](_0x5201a7['shift']());}};_0x435d26(++_0x21f8bf);}(_0x5178,0x187));var _0x8517=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x5178[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8517('0x0'))('api');var moment=require('moment');var BPromise=require(_0x8517('0x1'));var rp=require(_0x8517('0x2'));var fs=require('fs');var path=require(_0x8517('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./license.attributes');module[_0x8517('0x4')]=function(_0x2d89ae,_0x503bb5){return _0x2d89ae[_0x8517('0x5')](_0x8517('0x6'),attributes,{'tableName':_0x8517('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8bf672f..4a89643 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x661b=['util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','License,\x20%s,\x20%s','debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch'];(function(_0xdb5a92,_0x4fb4ce){var _0x4cdb37=function(_0x2cab1a){while(--_0x2cab1a){_0xdb5a92['push'](_0xdb5a92['shift']());}};_0x4cdb37(++_0x4fb4ce);}(_0x661b,0xdc));var _0xb661=function(_0x1a8a87,_0x3df21a){_0x1a8a87=_0x1a8a87-0x0;var _0x168975=_0x661b[_0x1a8a87];return _0x168975;};'use strict';var _=require('lodash');var util=require(_0xb661('0x0'));var moment=require(_0xb661('0x1'));var BPromise=require(_0xb661('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb661('0x3'));var db=require(_0xb661('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb661('0x5'))(_0xb661('0x6'));var config=require(_0xb661('0x7'));var jayson=require(_0xb661('0x8'));var client=jayson['client'][_0xb661('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1da9f3,_0x14cc3e,_0x1344a0){return new BPromise(function(_0x3b9837,_0x5dbe22){return client[_0xb661('0xa')](_0x1da9f3,_0x1344a0)['then'](function(_0x2bb173){logger['info'](_0xb661('0xb'),_0x14cc3e,'request\x20sent');logger[_0xb661('0xc')](_0xb661('0xd'),_0x14cc3e,_0xb661('0xe'),JSON[_0xb661('0xf')](_0x2bb173));if(_0x2bb173[_0xb661('0x10')]){if(_0x2bb173['error']['code']===0x1f4){logger[_0xb661('0x10')]('License,\x20%s,\x20%s',_0x14cc3e,_0x2bb173[_0xb661('0x10')][_0xb661('0x11')]);return _0x5dbe22(_0x2bb173[_0xb661('0x10')][_0xb661('0x11')]);}logger[_0xb661('0x10')](_0xb661('0xb'),_0x14cc3e,_0x2bb173[_0xb661('0x10')]['message']);return _0x3b9837(_0x2bb173[_0xb661('0x10')][_0xb661('0x11')]);}else{logger['info'](_0xb661('0xb'),_0x14cc3e,_0xb661('0xe'));_0x3b9837(_0x2bb173[_0xb661('0x12')][_0xb661('0x11')]);}})[_0xb661('0x13')](function(_0x579c93){logger[_0xb661('0x10')](_0xb661('0xb'),_0x14cc3e,_0x579c93);_0x5dbe22(_0x579c93);});});}
\ No newline at end of file
+var _0x4d85=['client','http','info','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','code','License,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment'];(function(_0x454018,_0x46e33a){var _0x24697d=function(_0x3ec647){while(--_0x3ec647){_0x454018['push'](_0x454018['shift']());}};_0x24697d(++_0x46e33a);}(_0x4d85,0x183));var _0x54d8=function(_0xa18eb1,_0x9f7878){_0xa18eb1=_0xa18eb1-0x0;var _0x2cd05f=_0x4d85[_0xa18eb1];return _0x2cd05f;};'use strict';var _=require(_0x54d8('0x0'));var util=require(_0x54d8('0x1'));var moment=require(_0x54d8('0x2'));var BPromise=require(_0x54d8('0x3'));var rs=require(_0x54d8('0x4'));var fs=require('fs');var Redis=require(_0x54d8('0x5'));var db=require(_0x54d8('0x6'))['db'];var utils=require(_0x54d8('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x54d8('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x54d8('0x9')][_0x54d8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x53881b,_0x3eec7d,_0x2fc911){return new BPromise(function(_0x47f10b,_0x286a0a){return client['request'](_0x53881b,_0x2fc911)['then'](function(_0x4dca57){logger[_0x54d8('0xb')]('License,\x20%s,\x20%s',_0x3eec7d,_0x54d8('0xc'));logger[_0x54d8('0xd')](_0x54d8('0xe'),_0x3eec7d,_0x54d8('0xc'),JSON[_0x54d8('0xf')](_0x4dca57));if(_0x4dca57[_0x54d8('0x10')]){if(_0x4dca57[_0x54d8('0x10')][_0x54d8('0x11')]===0x1f4){logger[_0x54d8('0x10')](_0x54d8('0x12'),_0x3eec7d,_0x4dca57[_0x54d8('0x10')][_0x54d8('0x13')]);return _0x286a0a(_0x4dca57[_0x54d8('0x10')][_0x54d8('0x13')]);}logger['error'](_0x54d8('0x12'),_0x3eec7d,_0x4dca57[_0x54d8('0x10')]['message']);return _0x47f10b(_0x4dca57[_0x54d8('0x10')][_0x54d8('0x13')]);}else{logger[_0x54d8('0xb')](_0x54d8('0x12'),_0x3eec7d,_0x54d8('0xc'));_0x47f10b(_0x4dca57[_0x54d8('0x14')]['message']);}})[_0x54d8('0x15')](function(_0x4e345d){logger[_0x54d8('0x10')](_0x54d8('0x12'),_0x3eec7d,_0x4e345d);_0x286a0a(_0x4e345d);});});}
\ No newline at end of file
index 486953d..6e7ba51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabe2=['show','/:id/dispositions','getDispositions','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','/:id/users','post','addDisposition','/:id/canned_answers','create','addImap','addSmtp','addInteraction','addApplications','/:id/send','send','addAgents','/:id','update','delete','removeDispositions','removeAnswers','removeImap','destroy','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x5f50b5,_0xa8db83){var _0x54c383=function(_0x381334){while(--_0x381334){_0x5f50b5['push'](_0x5f50b5['shift']());}};_0x54c383(++_0xa8db83);}(_0xabe2,0xac));var _0x2abe=function(_0x1fbc5a,_0x191f1b){_0x1fbc5a=_0x1fbc5a-0x0;var _0x289f17=_0xabe2[_0x1fbc5a];return _0x289f17;};'use strict';var multer=require(_0x2abe('0x0'));var util=require(_0x2abe('0x1'));var path=require('path');var timeout=require(_0x2abe('0x2'));var express=require(_0x2abe('0x3'));var router=express[_0x2abe('0x4')]();var fs_extra=require(_0x2abe('0x5'));var auth=require(_0x2abe('0x6'));var interaction=require(_0x2abe('0x7'));var config=require(_0x2abe('0x8'));var controller=require('./mailAccount.controller');router['get']('/',auth[_0x2abe('0x9')](),controller[_0x2abe('0xa')]);router[_0x2abe('0xb')]('/describe',auth[_0x2abe('0x9')](),controller['describe']);router[_0x2abe('0xb')]('/:id',auth[_0x2abe('0x9')](),controller[_0x2abe('0xc')]);router[_0x2abe('0xb')](_0x2abe('0xd'),auth[_0x2abe('0x9')](),controller[_0x2abe('0xe')]);router['get']('/:id/canned_answers',auth[_0x2abe('0x9')](),controller[_0x2abe('0xf')]);router['get'](_0x2abe('0x10'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x11')]);router['get'](_0x2abe('0x12'),auth['isAuthenticated'](),controller[_0x2abe('0x13')]);router[_0x2abe('0xb')](_0x2abe('0x14'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x15')]);router[_0x2abe('0xb')](_0x2abe('0x16'),auth['isAuthenticated'](),controller[_0x2abe('0x17')]);router[_0x2abe('0xb')](_0x2abe('0x18'),auth[_0x2abe('0x9')](),controller['getMessages']);router['get']('/:id/verify',auth[_0x2abe('0x9')](),controller['verifySmtp']);router[_0x2abe('0xb')](_0x2abe('0x19'),auth[_0x2abe('0x9')](),controller['getAgents']);router[_0x2abe('0x1a')](_0x2abe('0xd'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x1b')]);router[_0x2abe('0x1a')](_0x2abe('0x1c'),auth[_0x2abe('0x9')](),controller['addAnswer']);router[_0x2abe('0x1a')]('/',auth[_0x2abe('0x9')](),controller[_0x2abe('0x1d')]);router['post'](_0x2abe('0x10'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x1e')]);router[_0x2abe('0x1a')]('/:id/out_servers',auth[_0x2abe('0x9')](),controller[_0x2abe('0x1f')]);router[_0x2abe('0x1a')](_0x2abe('0x14'),auth['isAuthenticated'](),controller[_0x2abe('0x20')]);router['post'](_0x2abe('0x16'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x21')]);router[_0x2abe('0x1a')](_0x2abe('0x22'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x23')]);router[_0x2abe('0x1a')]('/:id/users',auth[_0x2abe('0x9')](),controller[_0x2abe('0x24')]);router['put'](_0x2abe('0x25'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x26')]);router[_0x2abe('0x27')](_0x2abe('0xd'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x28')]);router[_0x2abe('0x27')](_0x2abe('0x1c'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x29')]);router[_0x2abe('0x27')](_0x2abe('0x10'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x2a')]);router[_0x2abe('0x27')](_0x2abe('0x12'),auth[_0x2abe('0x9')](),controller['removeSmtp']);router[_0x2abe('0x27')](_0x2abe('0x25'),auth[_0x2abe('0x9')](),controller[_0x2abe('0x2b')]);router[_0x2abe('0x27')](_0x2abe('0x19'),auth['isAuthenticated'](),controller[_0x2abe('0x2c')]);module[_0x2abe('0x2d')]=router;
\ No newline at end of file
+var _0xe427=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','index','get','/describe','isAuthenticated','describe','/:id','/:id/dispositions','getDispositions','/:id/in_servers','/:id/interactions','getInteractions','/:id/messages','/:id/verify','verifySmtp','getAgents','addDisposition','post','/:id/canned_answers','addAnswer','create','addImap','/:id/out_servers','addSmtp','/:id/applications','addApplications','/:id/send','send','/:id/users','addAgents','put','delete','removeDispositions','removeAnswers','removeSmtp','destroy','removeAgents','exports','multer','util','path','connect-timeout','Router'];(function(_0x28bfdc,_0x50fd27){var _0x25bf45=function(_0x17f94a){while(--_0x17f94a){_0x28bfdc['push'](_0x28bfdc['shift']());}};_0x25bf45(++_0x50fd27);}(_0xe427,0x173));var _0x7e42=function(_0x42738a,_0x5d542d){_0x42738a=_0x42738a-0x0;var _0x4df921=_0xe427[_0x42738a];return _0x4df921;};'use strict';var multer=require(_0x7e42('0x0'));var util=require(_0x7e42('0x1'));var path=require(_0x7e42('0x2'));var timeout=require(_0x7e42('0x3'));var express=require('express');var router=express[_0x7e42('0x4')]();var fs_extra=require(_0x7e42('0x5'));var auth=require(_0x7e42('0x6'));var interaction=require(_0x7e42('0x7'));var config=require(_0x7e42('0x8'));var controller=require(_0x7e42('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x7e42('0xa')]);router[_0x7e42('0xb')](_0x7e42('0xc'),auth[_0x7e42('0xd')](),controller[_0x7e42('0xe')]);router['get'](_0x7e42('0xf'),auth[_0x7e42('0xd')](),controller['show']);router['get'](_0x7e42('0x10'),auth[_0x7e42('0xd')](),controller[_0x7e42('0x11')]);router[_0x7e42('0xb')]('/:id/canned_answers',auth[_0x7e42('0xd')](),controller['getAnswers']);router['get'](_0x7e42('0x12'),auth[_0x7e42('0xd')](),controller['getImap']);router['get']('/:id/out_servers',auth[_0x7e42('0xd')](),controller['getSmtp']);router['get'](_0x7e42('0x13'),auth[_0x7e42('0xd')](),controller[_0x7e42('0x14')]);router[_0x7e42('0xb')]('/:id/applications',auth[_0x7e42('0xd')](),controller['getApplications']);router[_0x7e42('0xb')](_0x7e42('0x15'),auth[_0x7e42('0xd')](),controller['getMessages']);router[_0x7e42('0xb')](_0x7e42('0x16'),auth[_0x7e42('0xd')](),controller[_0x7e42('0x17')]);router['get']('/:id/users',auth[_0x7e42('0xd')](),controller[_0x7e42('0x18')]);router['post'](_0x7e42('0x10'),auth[_0x7e42('0xd')](),controller[_0x7e42('0x19')]);router[_0x7e42('0x1a')](_0x7e42('0x1b'),auth[_0x7e42('0xd')](),controller[_0x7e42('0x1c')]);router['post']('/',auth[_0x7e42('0xd')](),controller[_0x7e42('0x1d')]);router[_0x7e42('0x1a')](_0x7e42('0x12'),auth[_0x7e42('0xd')](),controller[_0x7e42('0x1e')]);router[_0x7e42('0x1a')](_0x7e42('0x1f'),auth[_0x7e42('0xd')](),controller[_0x7e42('0x20')]);router[_0x7e42('0x1a')]('/:id/interactions',auth[_0x7e42('0xd')](),controller['addInteraction']);router[_0x7e42('0x1a')](_0x7e42('0x21'),auth[_0x7e42('0xd')](),controller[_0x7e42('0x22')]);router[_0x7e42('0x1a')](_0x7e42('0x23'),auth['isAuthenticated'](),controller[_0x7e42('0x24')]);router[_0x7e42('0x1a')](_0x7e42('0x25'),auth[_0x7e42('0xd')](),controller[_0x7e42('0x26')]);router[_0x7e42('0x27')]('/:id',auth[_0x7e42('0xd')](),controller['update']);router[_0x7e42('0x28')](_0x7e42('0x10'),auth[_0x7e42('0xd')](),controller[_0x7e42('0x29')]);router['delete'](_0x7e42('0x1b'),auth[_0x7e42('0xd')](),controller[_0x7e42('0x2a')]);router[_0x7e42('0x28')]('/:id/in_servers',auth[_0x7e42('0xd')](),controller['removeImap']);router[_0x7e42('0x28')]('/:id/out_servers',auth['isAuthenticated'](),controller[_0x7e42('0x2b')]);router['delete'](_0x7e42('0xf'),auth[_0x7e42('0xd')](),controller[_0x7e42('0x2c')]);router['delete']('/:id/users',auth[_0x7e42('0xd')](),controller[_0x7e42('0x2d')]);module[_0x7e42('0x2e')]=router;
\ No newline at end of file
index 11999c9..53d7f75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde64=['TEXT','Arial,Helvetica,sans-serif','INTEGER','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','exports','STRING','BOOLEAN'];(function(_0x484aac,_0x48c080){var _0x189874=function(_0x214db0){while(--_0x214db0){_0x484aac['push'](_0x484aac['shift']());}};_0x189874(++_0x48c080);}(_0xde64,0x17c));var _0x4de6=function(_0x4887ea,_0x3b974d){_0x4887ea=_0x4887ea-0x0;var _0x51260a=_0xde64[_0x4887ea];return _0x51260a;};'use strict';var Sequelize=require(_0x4de6('0x0'));module[_0x4de6('0x1')]={'description':{'type':Sequelize[_0x4de6('0x2')]},'name':{'type':Sequelize[_0x4de6('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0x4de6('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x4de6('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize[_0x4de6('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x4de6('0x4')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4de6('0x5')},'fontSize':{'type':Sequelize[_0x4de6('0x6')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x4de6('0x7');}},'notificationSound':{'type':Sequelize[_0x4de6('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4de6('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x4de6('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x4de6('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4de6('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4de6('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4de6('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x4de6('0x8')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x4de6('0x9'),'set':function(_0x170183){if(!_0x170183)this[_0x4de6('0xa')](_0x4de6('0xb'),null);this[_0x4de6('0xa')]('mandatoryDisposition',_0x170183);}}};
\ No newline at end of file
+var _0x1159=['setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','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'];(function(_0x48d6a3,_0x37c848){var _0x38bfa0=function(_0x3fba2e){while(--_0x3fba2e){_0x48d6a3['push'](_0x48d6a3['shift']());}};_0x38bfa0(++_0x37c848);}(_0x1159,0xf3));var _0x9115=function(_0x6d6774,_0x509124){_0x6d6774=_0x6d6774-0x0;var _0x3f92df=_0x1159[_0x6d6774];return _0x3f92df;};'use strict';var Sequelize=require(_0x9115('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x9115('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x9115('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x9115('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x9115('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x9115('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0x9115('0x3')]},'markAsUnread':{'type':Sequelize[_0x9115('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x9115('0x1')],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0x9115('0x4')](0x2)[_0x9115('0x5')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x9115('0x3')],'defaultValue':function(){return _0x9115('0x6');}},'notificationSound':{'type':Sequelize[_0x9115('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x9115('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x9115('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9115('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9115('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x9115('0x7')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x9115('0x8'),'set':function(_0x170177){if(!_0x170177)this[_0x9115('0x9')](_0x9115('0xa'),null);this['setDataValue'](_0x9115('0xb'),_0x170177);}}};
\ No newline at end of file
index 8abbc00..b52e8b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ab9=['mandatoryDispositionPause','body','describe','find','Disposition','create','getDispositions','findOne','hasOwnProperty','order','MailAccountId','findAll','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','email','ListId','isNil','active','description','cservice','cauthentication','cuser','password','cpassword','authentication','host','port','user','pass','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','getImap','addImap','removeImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','nolimit','CmContact','Contact','Owner','fullname','internal','Tags','color','tag','sequelize','transaction','MailApplication','bulkCreate','findAndCountAll','getApplications','getMessages','MailMessage','split','format','inlineCss','CmList','List','Contacts','updatedAt','DESC','from','%s\x20<%s>','attachments','join','server/files/attachments','basename','auth','secure','service','SendMail','sendMail','List\x20not\x20found','messageId','subject','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','VerifySmtp','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','userMailAccount:remove','User','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','./mailAccount.socket','http','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','get','MailAccounts','UserProfileResource','stack','name','send','index','MailServerIn','Imap','Pause','map','MailAccount','rawAttributes','fieldName','key','keys','query','filters','intersection','model','fields','attributes','length','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','show','params','MailServerOut','Smtp'];(function(_0x1b6c6d,_0x2983b0){var _0x290d9d=function(_0x5b9779){while(--_0x5b9779){_0x1b6c6d['push'](_0x1b6c6d['shift']());}};_0x290d9d(++_0x2983b0);}(_0x6ab9,0x135));var _0x96ab=function(_0x1b4b23,_0x5dd6d6){_0x1b4b23=_0x1b4b23-0x0;var _0x2a325b=_0x6ab9[_0x1b4b23];return _0x2a325b;};'use strict';var emlformat=require(_0x96ab('0x0'));var rimraf=require(_0x96ab('0x1'));var zipdir=require(_0x96ab('0x2'));var jsonpatch=require(_0x96ab('0x3'));var rp=require(_0x96ab('0x4'));var moment=require(_0x96ab('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x96ab('0x6'));var path=require(_0x96ab('0x7'));var sox=require(_0x96ab('0x8'));var csv=require(_0x96ab('0x9'));var ejs=require(_0x96ab('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x96ab('0xb'));var squel=require(_0x96ab('0xc'));var crypto=require(_0x96ab('0xd'));var jsforce=require(_0x96ab('0xe'));var deskjs=require(_0x96ab('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x96ab('0x10'));var htmlToText=require(_0x96ab('0x11'));var juice=require(_0x96ab('0x12'));var Redis=require(_0x96ab('0x13'));var authService=require(_0x96ab('0x14'));var qs=require(_0x96ab('0x15'));var as=require(_0x96ab('0x16'));var hardwareService=require(_0x96ab('0x17'));var logger=require(_0x96ab('0x18'))(_0x96ab('0x19'));var utils=require(_0x96ab('0x1a'));var config=require(_0x96ab('0x1b'));var licenseUtil=require(_0x96ab('0x1c'));var db=require(_0x96ab('0x1d'))['db'];config['redis']=_[_0x96ab('0x1e')](config['redis'],{'host':_0x96ab('0x1f'),'port':0x18eb});var socket=require(_0x96ab('0x20'))(new Redis(config['redis']));require(_0x96ab('0x21'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x96ab('0x22')]({'port':0x232b});function respondWithRpcPromise(_0x15c3e9,_0x1669e,_0xab0195,_0x47d9af){return new BPromise(function(_0x67aaa1,_0xbcda1a){var _0x2eca5f=_0x47d9af||client;return _0x2eca5f[_0x96ab('0x23')](_0x15c3e9,_0xab0195)[_0x96ab('0x24')](function(_0x36a933){logger[_0x96ab('0x25')](_0x96ab('0x26'),_0x1669e,_0x96ab('0x27'));logger[_0x96ab('0x28')](_0x96ab('0x29'),_0x1669e,_0x96ab('0x27'),JSON[_0x96ab('0x2a')](_0x36a933));if(_0x36a933[_0x96ab('0x2b')]){if(_0x36a933[_0x96ab('0x2b')]['code']===0x1f4){logger[_0x96ab('0x2b')](_0x96ab('0x26'),_0x1669e,_0x36a933['error'][_0x96ab('0x2c')]);return _0xbcda1a(_0x36a933[_0x96ab('0x2b')]['message']);}logger['error']('MailAccount,\x20%s,\x20%s',_0x1669e,_0x36a933[_0x96ab('0x2b')]['message']);return _0x67aaa1(_0x36a933['error']['message']);}else{logger[_0x96ab('0x25')]('MailAccount,\x20%s,\x20%s',_0x1669e,'request\x20sent');_0x67aaa1(_0x36a933[_0x96ab('0x2d')]['message']);}})[_0x96ab('0x2e')](function(_0x10c6cb){logger[_0x96ab('0x2b')]('MailAccount,\x20%s,\x20%s',_0x1669e,_0x10c6cb);_0xbcda1a(_0x10c6cb);});});}function respondWithStatusCode(_0x38d4de,_0xe10b7c){_0xe10b7c=_0xe10b7c||0xcc;return function(_0x3544d5){if(_0x3544d5){return _0x38d4de[_0x96ab('0x2f')](_0xe10b7c);}return _0x38d4de[_0x96ab('0x30')](_0xe10b7c)[_0x96ab('0x31')]();};}function respondWithResult(_0x55be82,_0x987b91){_0x987b91=_0x987b91||0xc8;return function(_0x3c957d){if(_0x3c957d){return _0x55be82['status'](_0x987b91)[_0x96ab('0x32')](_0x3c957d);}};}function respondWithFilteredResult(_0x206c86,_0x5dfcb9){return function(_0xeb5a0){if(_0xeb5a0){var _0xb08234=typeof _0x5dfcb9[_0x96ab('0x33')]==='undefined'&&typeof _0x5dfcb9['limit']===_0x96ab('0x34');var _0x4ac482=_0xeb5a0[_0x96ab('0x35')];var _0x3f2e24=_0xb08234?0x0:_0x5dfcb9[_0x96ab('0x33')];var _0x128e24=_0xb08234?_0xeb5a0['count']:_0x5dfcb9[_0x96ab('0x33')]+_0x5dfcb9[_0x96ab('0x36')];var _0x23974b;if(_0x128e24>=_0x4ac482){_0x128e24=_0x4ac482;_0x23974b=0xc8;}else{_0x23974b=0xce;}_0x206c86[_0x96ab('0x30')](_0x23974b);return _0x206c86[_0x96ab('0x37')](_0x96ab('0x38'),_0x3f2e24+'-'+_0x128e24+'/'+_0x4ac482)['json'](_0xeb5a0);}return null;};}function patchUpdates(_0x49cd53){return function(_0x215c6b){try{jsonpatch[_0x96ab('0x39')](_0x215c6b,_0x49cd53,!![]);}catch(_0x194495){return BPromise[_0x96ab('0x3a')](_0x194495);}return _0x215c6b[_0x96ab('0x3b')]();};}function saveUpdates(_0x53b7f6,_0x439638){return function(_0x5c4283){if(_0x5c4283){return _0x5c4283[_0x96ab('0x3c')](_0x53b7f6)[_0x96ab('0x24')](function(_0xf1e992){return _0xf1e992;});}return null;};}function removeEntity(_0x8fba3d,_0x57f354){return function(_0x28e27e){if(_0x28e27e){return _0x28e27e[_0x96ab('0x3d')]()[_0x96ab('0x24')](function(){var _0x449dea=_0x28e27e[_0x96ab('0x3e')]({'plain':!![]});var _0xd7fae=_0x96ab('0x3f');return db[_0x96ab('0x40')][_0x96ab('0x3d')]({'where':{'type':_0xd7fae,'resourceId':_0x449dea['id']}})[_0x96ab('0x24')](function(){return _0x28e27e;});})[_0x96ab('0x24')](function(){_0x8fba3d[_0x96ab('0x30')](0xcc)[_0x96ab('0x31')]();});}};}function handleEntityNotFound(_0x570933,_0x3b54bd){return function(_0x2758fd){if(!_0x2758fd){_0x570933[_0x96ab('0x2f')](0x194);}return _0x2758fd;};}function handleError(_0x1b74a4,_0x538690){_0x538690=_0x538690||0x1f4;return function(_0x4caa7b){logger[_0x96ab('0x2b')](_0x4caa7b[_0x96ab('0x41')]);if(_0x4caa7b[_0x96ab('0x42')]){delete _0x4caa7b[_0x96ab('0x42')];}_0x1b74a4[_0x96ab('0x30')](_0x538690)[_0x96ab('0x43')](_0x4caa7b);};}exports[_0x96ab('0x44')]=function(_0x50b24c,_0x3ee688){var _0x64ff28={'include':[{'model':db[_0x96ab('0x45')],'as':_0x96ab('0x46')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0x96ab('0x47')],'as':'mandatoryDispositionPause'}]},_0x5763f1={},_0x921f33={'count':0x0,'rows':[]};var _0x4e2775=_[_0x96ab('0x48')](db[_0x96ab('0x49')][_0x96ab('0x4a')],function(_0x30c8b7){return{'name':_0x30c8b7[_0x96ab('0x4b')],'type':_0x30c8b7['type'][_0x96ab('0x4c')]};});_0x5763f1['model']=_['map'](_0x4e2775,_0x96ab('0x42'));_0x5763f1['query']=_[_0x96ab('0x4d')](_0x50b24c[_0x96ab('0x4e')]);_0x5763f1[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x5763f1[_0x96ab('0x51')],_0x5763f1[_0x96ab('0x4e')]);_0x64ff28['attributes']=_[_0x96ab('0x50')](_0x5763f1['model'],qs[_0x96ab('0x52')](_0x50b24c[_0x96ab('0x4e')]['fields']));_0x64ff28['attributes']=_0x64ff28[_0x96ab('0x53')][_0x96ab('0x54')]?_0x64ff28['attributes']:_0x5763f1['model'];if(!_0x50b24c[_0x96ab('0x4e')]['hasOwnProperty']('nolimit')){_0x64ff28[_0x96ab('0x36')]=qs[_0x96ab('0x36')](_0x50b24c[_0x96ab('0x4e')][_0x96ab('0x36')]);_0x64ff28[_0x96ab('0x33')]=qs[_0x96ab('0x33')](_0x50b24c[_0x96ab('0x4e')][_0x96ab('0x33')]);}_0x64ff28['order']=qs[_0x96ab('0x55')](_0x50b24c[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x64ff28['where']=qs[_0x96ab('0x4f')](_[_0x96ab('0x56')](_0x50b24c[_0x96ab('0x4e')],_0x5763f1[_0x96ab('0x4f')]),_0x4e2775);if(_0x50b24c[_0x96ab('0x4e')][_0x96ab('0x57')]){_0x64ff28[_0x96ab('0x58')]=_[_0x96ab('0x59')](_0x64ff28[_0x96ab('0x58')],{'$or':_['map'](_0x4e2775,function(_0x403165){if(_0x403165[_0x96ab('0x5a')]!==_0x96ab('0x5b')){var _0x3423f3={};_0x3423f3[_0x403165['name']]={'$like':'%'+_0x50b24c[_0x96ab('0x4e')]['filter']+'%'};return _0x3423f3;}})});}_0x64ff28=_['merge']({},_0x64ff28,_0x50b24c[_0x96ab('0x5c')]);var _0x453be6={'where':_0x64ff28['where']};return db['MailAccount'][_0x96ab('0x35')](_0x453be6)[_0x96ab('0x24')](function(_0x2c6b0a){_0x921f33['count']=_0x2c6b0a;if(_0x50b24c[_0x96ab('0x4e')][_0x96ab('0x5d')]){_0x64ff28[_0x96ab('0x5e')]=[{'all':!![]}];}return db[_0x96ab('0x49')]['findAll'](_0x64ff28);})[_0x96ab('0x24')](function(_0x47e38c){_0x921f33['rows']=_0x47e38c;return _0x921f33;})['then'](respondWithFilteredResult(_0x3ee688,_0x64ff28))[_0x96ab('0x2e')](handleError(_0x3ee688,null));};exports[_0x96ab('0x5f')]=function(_0x2c6212,_0x5126d1){var _0x3c0892={'raw':![],'where':{'id':_0x2c6212[_0x96ab('0x60')]['id']},'include':[{'model':db[_0x96ab('0x45')],'as':'Imap'},{'model':db[_0x96ab('0x61')],'as':_0x96ab('0x62')},{'model':db[_0x96ab('0x47')],'as':_0x96ab('0x63')}]},_0x1be2d7={};_0x1be2d7[_0x96ab('0x51')]=_[_0x96ab('0x4d')](db['MailAccount']['rawAttributes']);_0x1be2d7['query']=_['keys'](_0x2c6212[_0x96ab('0x4e')]);_0x1be2d7[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x1be2d7['model'],_0x1be2d7['query']);_0x3c0892[_0x96ab('0x53')]=_['intersection'](_0x1be2d7[_0x96ab('0x51')],qs[_0x96ab('0x52')](_0x2c6212[_0x96ab('0x4e')][_0x96ab('0x52')]));_0x3c0892[_0x96ab('0x53')]=_0x3c0892[_0x96ab('0x53')]['length']?_0x3c0892[_0x96ab('0x53')]:_0x1be2d7[_0x96ab('0x51')];if(_0x2c6212[_0x96ab('0x4e')][_0x96ab('0x5d')]){_0x3c0892[_0x96ab('0x5e')]=[{'all':!![]}];}_0x3c0892=_[_0x96ab('0x59')]({},_0x3c0892,_0x2c6212['options']);return db['MailAccount']['find'](_0x3c0892)[_0x96ab('0x24')](handleEntityNotFound(_0x5126d1,null))[_0x96ab('0x24')](respondWithResult(_0x5126d1,null))['catch'](handleError(_0x5126d1,null));};exports[_0x96ab('0x3c')]=function(_0x4118aa,_0xc599af){if(_0x4118aa[_0x96ab('0x64')]['id']){delete _0x4118aa[_0x96ab('0x64')]['id'];}return db['MailAccount']['find']({'where':{'id':_0x4118aa['params']['id']},'include':[{'model':db[_0x96ab('0x45')],'as':'Imap'},{'model':db[_0x96ab('0x61')],'as':_0x96ab('0x62')},{'model':db[_0x96ab('0x47')],'as':_0x96ab('0x63')}]})['then'](handleEntityNotFound(_0xc599af,null))[_0x96ab('0x24')](saveUpdates(_0x4118aa['body'],null))['then'](function(_0x288990){if(_0x288990&&_0x4118aa[_0x96ab('0x64')][_0x96ab('0x46')]){return db['MailServerIn'][_0x96ab('0x3c')](_0x4118aa['body'][_0x96ab('0x46')],{'where':{'MailAccountId':_0x288990['id']}})['then'](function(){return _0x288990;});}return _0x288990;})[_0x96ab('0x24')](function(_0x5b2ea8){if(_0x5b2ea8&&_0x4118aa['body'][_0x96ab('0x62')]){return db[_0x96ab('0x61')]['update'](_0x4118aa['body'][_0x96ab('0x62')],{'where':{'MailAccountId':_0x5b2ea8['id']}})[_0x96ab('0x24')](function(){return _0x5b2ea8;});}return _0x5b2ea8;})[_0x96ab('0x24')](respondWithResult(_0xc599af,null))['catch'](handleError(_0xc599af,null));};exports['describe']=function(_0x2fca87,_0x5d9178){return db[_0x96ab('0x49')][_0x96ab('0x65')]()['then'](respondWithResult(_0x5d9178,null))[_0x96ab('0x2e')](handleError(_0x5d9178,null));};exports['addDisposition']=function(_0x2f462c,_0x33814c,_0x30d6c6){if(_0x2f462c[_0x96ab('0x64')]['id']){delete _0x2f462c[_0x96ab('0x64')]['id'];}return db['MailAccount'][_0x96ab('0x66')]({'where':{'id':_0x2f462c[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x33814c,null))[_0x96ab('0x24')](function(_0x30fc16){if(_0x30fc16){_0x2f462c['body']['MailAccountId']=_0x30fc16['id'];return db[_0x96ab('0x67')][_0x96ab('0x68')](_0x2f462c['body']);}})[_0x96ab('0x24')](respondWithResult(_0x33814c,null))['catch'](handleError(_0x33814c,null));};exports[_0x96ab('0x69')]=function(_0x910430,_0x509fb7,_0x2d8b80){var _0x148076={'raw':![],'where':{}};var _0x107ed4={};var _0x2840d5={'count':0x0,'rows':[]};return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0x910430[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x509fb7,null))[_0x96ab('0x24')](function(_0x2ef977){if(_0x2ef977){_0x107ed4[_0x96ab('0x51')]=_[_0x96ab('0x4d')](db[_0x96ab('0x67')][_0x96ab('0x4a')]);_0x107ed4[_0x96ab('0x4e')]=_[_0x96ab('0x4d')](_0x910430[_0x96ab('0x4e')]);_0x107ed4[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x107ed4[_0x96ab('0x51')],_0x107ed4['query']);_0x148076[_0x96ab('0x53')]=_[_0x96ab('0x50')](_0x107ed4[_0x96ab('0x51')],qs[_0x96ab('0x52')](_0x910430['query'][_0x96ab('0x52')]));_0x148076[_0x96ab('0x53')]=_0x148076[_0x96ab('0x53')][_0x96ab('0x54')]?_0x148076[_0x96ab('0x53')]:_0x107ed4[_0x96ab('0x51')];if(!_0x910430[_0x96ab('0x4e')][_0x96ab('0x6b')]('nolimit')){_0x148076[_0x96ab('0x36')]=qs['limit'](_0x910430['query'][_0x96ab('0x36')]);_0x148076[_0x96ab('0x33')]=qs[_0x96ab('0x33')](_0x910430[_0x96ab('0x4e')][_0x96ab('0x33')]);}_0x148076[_0x96ab('0x6c')]=qs[_0x96ab('0x55')](_0x910430[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x148076[_0x96ab('0x58')]=qs[_0x96ab('0x4f')](_[_0x96ab('0x56')](_0x910430[_0x96ab('0x4e')],_0x107ed4[_0x96ab('0x4f')]));_0x148076[_0x96ab('0x58')][_0x96ab('0x6d')]=_0x2ef977['id'];if(_0x910430[_0x96ab('0x4e')][_0x96ab('0x57')]){_0x148076['where']=_[_0x96ab('0x59')](_0x148076[_0x96ab('0x58')],{'$or':_['map'](_0x148076[_0x96ab('0x53')],function(_0x565064){var _0x5c31db={};_0x5c31db[_0x565064]={'$like':'%'+_0x910430[_0x96ab('0x4e')]['filter']+'%'};return _0x5c31db;})});}_0x148076=_[_0x96ab('0x59')]({},_0x148076,_0x910430[_0x96ab('0x5c')]);return db[_0x96ab('0x67')][_0x96ab('0x35')]({'where':_0x148076[_0x96ab('0x58')]})[_0x96ab('0x24')](function(_0x153781){_0x2840d5[_0x96ab('0x35')]=_0x153781;if(_0x910430[_0x96ab('0x4e')][_0x96ab('0x5d')]){_0x148076['include']=[{'all':!![]}];}return db['Disposition'][_0x96ab('0x6e')](_0x148076);})[_0x96ab('0x24')](function(_0x9d55c){_0x2840d5[_0x96ab('0x6f')]=_0x9d55c;return _0x2840d5;});}})[_0x96ab('0x24')](respondWithFilteredResult(_0x509fb7,_0x148076))[_0x96ab('0x2e')](handleError(_0x509fb7,null));};exports[_0x96ab('0x70')]=function(_0x48d036,_0x2ef0b4,_0x1e02e5){return db[_0x96ab('0x49')][_0x96ab('0x66')]({'where':{'id':_0x48d036[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x2ef0b4,null))[_0x96ab('0x24')](function(_0x45124c){if(_0x45124c){return _0x45124c['removeDispositions'](_0x48d036[_0x96ab('0x4e')][_0x96ab('0x71')]);}})['then'](respondWithStatusCode(_0x2ef0b4,null))[_0x96ab('0x2e')](handleError(_0x2ef0b4,null));};exports[_0x96ab('0x72')]=function(_0x5818ce,_0x3cf3ee,_0x42c9b0){if(_0x5818ce[_0x96ab('0x64')]['id']){delete _0x5818ce[_0x96ab('0x64')]['id'];}return db['MailAccount']['find']({'where':{'id':_0x5818ce['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x3cf3ee,null))[_0x96ab('0x24')](function(_0x1cdd2f){if(_0x1cdd2f){_0x5818ce[_0x96ab('0x64')]['MailAccountId']=_0x1cdd2f['id'];return db[_0x96ab('0x73')][_0x96ab('0x68')](_0x5818ce['body']);}})['then'](respondWithResult(_0x3cf3ee,null))[_0x96ab('0x2e')](handleError(_0x3cf3ee,null));};exports[_0x96ab('0x74')]=function(_0x2fbce7,_0x3ee80c,_0x20ee76){var _0x504e46={'raw':![],'where':{}};var _0x72c365={};var _0x38e37f={'count':0x0,'rows':[]};return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0x2fbce7[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x3ee80c,null))[_0x96ab('0x24')](function(_0x467661){if(_0x467661){_0x72c365[_0x96ab('0x51')]=_[_0x96ab('0x4d')](db[_0x96ab('0x73')][_0x96ab('0x4a')]);_0x72c365[_0x96ab('0x4e')]=_[_0x96ab('0x4d')](_0x2fbce7[_0x96ab('0x4e')]);_0x72c365[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x72c365[_0x96ab('0x51')],_0x72c365[_0x96ab('0x4e')]);_0x504e46[_0x96ab('0x53')]=_[_0x96ab('0x50')](_0x72c365[_0x96ab('0x51')],qs[_0x96ab('0x52')](_0x2fbce7['query'][_0x96ab('0x52')]));_0x504e46[_0x96ab('0x53')]=_0x504e46[_0x96ab('0x53')][_0x96ab('0x54')]?_0x504e46[_0x96ab('0x53')]:_0x72c365[_0x96ab('0x51')];if(!_0x2fbce7[_0x96ab('0x4e')][_0x96ab('0x6b')]('nolimit')){_0x504e46[_0x96ab('0x36')]=qs[_0x96ab('0x36')](_0x2fbce7[_0x96ab('0x4e')][_0x96ab('0x36')]);_0x504e46[_0x96ab('0x33')]=qs[_0x96ab('0x33')](_0x2fbce7['query'][_0x96ab('0x33')]);}_0x504e46[_0x96ab('0x6c')]=qs[_0x96ab('0x55')](_0x2fbce7[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x504e46[_0x96ab('0x58')]=qs['filters'](_[_0x96ab('0x56')](_0x2fbce7['query'],_0x72c365[_0x96ab('0x4f')]));_0x504e46[_0x96ab('0x58')][_0x96ab('0x6d')]=_0x467661['id'];if(_0x2fbce7[_0x96ab('0x4e')][_0x96ab('0x57')]){_0x504e46['where']=_[_0x96ab('0x59')](_0x504e46[_0x96ab('0x58')],{'$or':_[_0x96ab('0x48')](_0x504e46['attributes'],function(_0x4841c8){var _0x1a0fde={};_0x1a0fde[_0x4841c8]={'$like':'%'+_0x2fbce7[_0x96ab('0x4e')][_0x96ab('0x57')]+'%'};return _0x1a0fde;})});}_0x504e46=_[_0x96ab('0x59')]({},_0x504e46,_0x2fbce7[_0x96ab('0x5c')]);return db[_0x96ab('0x73')][_0x96ab('0x35')]({'where':_0x504e46[_0x96ab('0x58')]})['then'](function(_0x581dc7){_0x38e37f[_0x96ab('0x35')]=_0x581dc7;if(_0x2fbce7[_0x96ab('0x4e')][_0x96ab('0x5d')]){_0x504e46['include']=[{'all':!![]}];}return db[_0x96ab('0x73')][_0x96ab('0x6e')](_0x504e46);})['then'](function(_0x7d54){_0x38e37f['rows']=_0x7d54;return _0x38e37f;});}})['then'](respondWithFilteredResult(_0x3ee80c,_0x504e46))[_0x96ab('0x2e')](handleError(_0x3ee80c,null));};exports[_0x96ab('0x75')]=function(_0x20c889,_0x205335,_0x15d37c){return db[_0x96ab('0x49')][_0x96ab('0x66')]({'where':{'id':_0x20c889[_0x96ab('0x60')]['id']}})['then'](handleEntityNotFound(_0x205335,null))[_0x96ab('0x24')](function(_0x279426){if(_0x279426){return _0x279426[_0x96ab('0x75')](_0x20c889[_0x96ab('0x4e')][_0x96ab('0x71')]);}})[_0x96ab('0x24')](respondWithStatusCode(_0x205335,null))[_0x96ab('0x2e')](handleError(_0x205335,null));};exports[_0x96ab('0x68')]=function(_0x13b1f9,_0x2f710b){var _0x2fc166={'name':_0x13b1f9['body']['name'],'key':_0x13b1f9['body'][_0x96ab('0x4c')],'email':_0x13b1f9['body'][_0x96ab('0x76')],'ListId':_0x13b1f9['body'][_0x96ab('0x77')],'active':!_[_0x96ab('0x78')](_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x79')])?_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x79')]:!![],'description':_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7a')]||null,'Imap':{},'Smtp':{}};if(_[_0x96ab('0x78')](_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7b')])){if(_0x13b1f9['body'][_0x96ab('0x7c')]){_0x2fc166[_0x96ab('0x46')]['user']=_0x2fc166[_0x96ab('0x62')]['user']=_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7d')];_0x2fc166[_0x96ab('0x46')][_0x96ab('0x7e')]=_0x2fc166[_0x96ab('0x62')]['pass']=_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7f')];}else{_0x2fc166[_0x96ab('0x46')][_0x96ab('0x80')]=_0x2fc166[_0x96ab('0x62')]['authentication']=![];}_0x2fc166[_0x96ab('0x46')][_0x96ab('0x81')]=_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x46')][_0x96ab('0x81')];_0x2fc166[_0x96ab('0x46')][_0x96ab('0x82')]=_0x13b1f9[_0x96ab('0x64')]['Imap']['port'];_0x2fc166[_0x96ab('0x62')]['host']=_0x13b1f9[_0x96ab('0x64')]['Smtp'][_0x96ab('0x81')];_0x2fc166[_0x96ab('0x62')][_0x96ab('0x82')]=_0x13b1f9[_0x96ab('0x64')]['Smtp']['port'];}else{_0x2fc166['Imap']['service']=_0x2fc166[_0x96ab('0x62')]['service']=_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7b')];_0x2fc166[_0x96ab('0x46')][_0x96ab('0x83')]=_0x2fc166['Smtp'][_0x96ab('0x83')]=_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7d')];_0x2fc166[_0x96ab('0x46')]['password']=_0x2fc166[_0x96ab('0x62')][_0x96ab('0x84')]=_0x13b1f9[_0x96ab('0x64')][_0x96ab('0x7f')];}return db[_0x96ab('0x49')][_0x96ab('0x68')](_0x2fc166,{'include':[{'model':db[_0x96ab('0x61')],'as':_0x96ab('0x62')},{'model':db[_0x96ab('0x45')],'as':'Imap'}]})[_0x96ab('0x24')](function(_0x240bf7){var _0x92d87d=_0x13b1f9['user'][_0x96ab('0x3e')]({'plain':!![]});if(!_0x92d87d)throw new Error(_0x96ab('0x85'));if(_0x92d87d['role']===_0x96ab('0x83')){var _0x5e6ea6=_0x240bf7[_0x96ab('0x3e')]({'plain':!![]});return db[_0x96ab('0x86')][_0x96ab('0x66')]({'where':{'name':'MailAccounts','userProfileId':_0x92d87d['userProfileId']},'raw':!![]})['then'](function(_0x75f260){if(_0x75f260&&_0x75f260[_0x96ab('0x87')]===0x0){return db[_0x96ab('0x40')]['create']({'name':_0x5e6ea6[_0x96ab('0x42')],'resourceId':_0x5e6ea6['id'],'type':_0x75f260[_0x96ab('0x42')],'sectionId':_0x75f260['id']},{})[_0x96ab('0x24')](function(){return _0x240bf7;});}else{return _0x240bf7;}})[_0x96ab('0x2e')](function(_0x4b525c){logger[_0x96ab('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4b525c);throw _0x4b525c;});}return _0x240bf7;})[_0x96ab('0x24')](respondWithResult(_0x2f710b,0xc9))['catch'](handleError(_0x2f710b,null));};exports[_0x96ab('0x88')]=function(_0xfac7d0,_0x1c77f3,_0x5cdcd9){return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0xfac7d0['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x1c77f3,null))[_0x96ab('0x24')](function(_0x280066){if(_0x280066){return _0x280066[_0x96ab('0x88')]();}return null;})[_0x96ab('0x24')](respondWithResult(_0x1c77f3,null))[_0x96ab('0x2e')](handleError(_0x1c77f3,null));};exports[_0x96ab('0x89')]=function(_0x4f511e,_0xe7cf2d,_0x3a4920){if(_0x4f511e['body']['id']){delete _0x4f511e[_0x96ab('0x64')]['id'];}return db[_0x96ab('0x49')]['find']({'where':{'id':_0x4f511e[_0x96ab('0x60')]['id']}})['then'](handleEntityNotFound(_0xe7cf2d,null))[_0x96ab('0x24')](function(_0xc7f225){if(_0xc7f225){_0x4f511e[_0x96ab('0x64')]['MailAccountId']=_0xc7f225['id'];return db[_0x96ab('0x45')][_0x96ab('0x68')](_0x4f511e[_0x96ab('0x64')]);}})[_0x96ab('0x24')](respondWithResult(_0xe7cf2d,null))[_0x96ab('0x2e')](handleError(_0xe7cf2d,null));};exports[_0x96ab('0x8a')]=function(_0x244874,_0x48d378,_0x3a2845){return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0x244874[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x48d378,null))[_0x96ab('0x24')](function(_0x597616){if(_0x597616){return _0x597616['setImap'](null);}return null;})[_0x96ab('0x24')](respondWithStatusCode(_0x48d378,null))[_0x96ab('0x2e')](handleError(_0x48d378,null));};exports[_0x96ab('0x8b')]=function(_0x7d0f3c,_0x2cee1f,_0x568a4d){return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0x7d0f3c[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x2cee1f,null))['then'](function(_0x391218){if(_0x391218){return _0x391218[_0x96ab('0x8b')]();}return null;})[_0x96ab('0x24')](respondWithResult(_0x2cee1f,null))[_0x96ab('0x2e')](handleError(_0x2cee1f,null));};exports[_0x96ab('0x8c')]=function(_0xd8c64c,_0x4931f6,_0x523369){if(_0xd8c64c[_0x96ab('0x64')]['id']){delete _0xd8c64c['body']['id'];}return db[_0x96ab('0x49')][_0x96ab('0x66')]({'where':{'id':_0xd8c64c[_0x96ab('0x60')]['id']}})['then'](handleEntityNotFound(_0x4931f6,null))['then'](function(_0x36947e){if(_0x36947e){_0xd8c64c[_0x96ab('0x64')][_0x96ab('0x6d')]=_0x36947e['id'];return db[_0x96ab('0x61')][_0x96ab('0x68')](_0xd8c64c['body']);}})[_0x96ab('0x24')](respondWithResult(_0x4931f6,null))[_0x96ab('0x2e')](handleError(_0x4931f6,null));};exports[_0x96ab('0x8d')]=function(_0x5cf3d4,_0x3dcd24,_0xbb76f7){return db[_0x96ab('0x49')]['findOne']({'where':{'id':_0x5cf3d4['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x3dcd24,null))['then'](function(_0x136e96){if(_0x136e96){return _0x136e96[_0x96ab('0x8e')](null);}return null;})[_0x96ab('0x24')](respondWithStatusCode(_0x3dcd24,null))['catch'](handleError(_0x3dcd24,null));};exports[_0x96ab('0x8f')]=function(_0x18ab0,_0x4bd0c0,_0x332c6a){return db[_0x96ab('0x90')][_0x96ab('0x66')]({'where':{'id':_0x18ab0[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x4bd0c0,null))['then'](function(_0x795d06){if(_0x795d06){return _0x795d06['addInteraction'](_0x18ab0['body'][_0x96ab('0x71')],_[_0x96ab('0x91')](_0x18ab0[_0x96ab('0x64')],['ids','id'])||{});}})[_0x96ab('0x24')](respondWithResult(_0x4bd0c0,null))[_0x96ab('0x2e')](handleError(_0x4bd0c0,null));};exports[_0x96ab('0x92')]=function(_0x28285c,_0x4c00d5,_0x18fa88){var _0x3d78fa={'raw':![],'where':{}};var _0x31d8c1={};var _0x50ff47={'count':0x0,'rows':[]};return db['MailAccount'][_0x96ab('0x6a')]({'where':{'id':_0x28285c[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x4c00d5,null))[_0x96ab('0x24')](function(_0x5e3bbc){if(_0x5e3bbc){_0x31d8c1['model']=_['keys'](db[_0x96ab('0x90')][_0x96ab('0x4a')]);_0x31d8c1['query']=_[_0x96ab('0x4d')](_0x28285c[_0x96ab('0x4e')]);_0x31d8c1[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x31d8c1['model'],_0x31d8c1['query']);_0x3d78fa[_0x96ab('0x53')]=_[_0x96ab('0x50')](_0x31d8c1[_0x96ab('0x51')],qs[_0x96ab('0x52')](_0x28285c['query']['fields']));_0x3d78fa['attributes']=_0x3d78fa[_0x96ab('0x53')][_0x96ab('0x54')]?_0x3d78fa['attributes']:_0x31d8c1[_0x96ab('0x51')];if(!_0x28285c[_0x96ab('0x4e')][_0x96ab('0x6b')](_0x96ab('0x93'))){_0x3d78fa[_0x96ab('0x36')]=qs['limit'](_0x28285c['query'][_0x96ab('0x36')]);_0x3d78fa[_0x96ab('0x33')]=qs[_0x96ab('0x33')](_0x28285c[_0x96ab('0x4e')][_0x96ab('0x33')]);}_0x3d78fa[_0x96ab('0x6c')]=qs[_0x96ab('0x55')](_0x28285c[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x3d78fa[_0x96ab('0x58')]=qs['filters'](_[_0x96ab('0x56')](_0x28285c['query'],_0x31d8c1['filters']));_0x3d78fa[_0x96ab('0x58')][_0x96ab('0x6d')]=_0x5e3bbc['id'];if(_0x28285c[_0x96ab('0x4e')][_0x96ab('0x57')]){_0x3d78fa['where']=_[_0x96ab('0x59')](_0x3d78fa[_0x96ab('0x58')],{'$or':_['map'](_0x3d78fa[_0x96ab('0x53')],function(_0x460704){var _0x1f91fe={};_0x1f91fe[_0x460704]={'$like':'%'+_0x28285c['query'][_0x96ab('0x57')]+'%'};return _0x1f91fe;})});}_0x3d78fa=_[_0x96ab('0x59')]({},_0x3d78fa,_0x28285c[_0x96ab('0x5c')]);return db[_0x96ab('0x90')]['count']({'where':_0x3d78fa[_0x96ab('0x58')]})[_0x96ab('0x24')](function(_0x41f812){_0x50ff47[_0x96ab('0x35')]=_0x41f812;if(_0x28285c[_0x96ab('0x4e')][_0x96ab('0x5d')]){_0x3d78fa[_0x96ab('0x5e')]=[{'model':db[_0x96ab('0x94')],'as':_0x96ab('0x95'),'required':![]},{'model':db['User'],'as':_0x96ab('0x96'),'attributes':[_0x96ab('0x42'),_0x96ab('0x97'),_0x96ab('0x98')],'required':![]},{'model':db['Tag'],'as':_0x96ab('0x99'),'attributes':['id',_0x96ab('0x42'),_0x96ab('0x9a')],'where':_0x28285c[_0x96ab('0x4e')][_0x96ab('0x9b')]?{'id':_0x28285c[_0x96ab('0x4e')]['tag']}:undefined,'required':_0x28285c[_0x96ab('0x4e')][_0x96ab('0x9b')]?!![]:![]}];}return db[_0x96ab('0x90')][_0x96ab('0x6e')](_0x3d78fa);})['then'](function(_0x1df837){_0x50ff47[_0x96ab('0x6f')]=_0x1df837;return _0x50ff47;});}})['then'](respondWithFilteredResult(_0x4c00d5,_0x3d78fa))[_0x96ab('0x2e')](handleError(_0x4c00d5,null));};exports['addApplications']=function(_0x2f3573,_0x390533,_0x2e7823){return db[_0x96ab('0x49')]['findOne']({'where':{'id':_0x2f3573['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x390533,null))['then'](function(_0x106b91){if(_0x106b91){return db[_0x96ab('0x9c')][_0x96ab('0x9d')](function(_0x4c40c1){return db[_0x96ab('0x9e')][_0x96ab('0x3d')]({'where':{'MailAccountId':_0x2f3573[_0x96ab('0x60')]['id']},'transaction':_0x4c40c1})[_0x96ab('0x24')](function(_0x228f2b){var _0x53c43b=_[_0x96ab('0x48')](_0x2f3573['body'],function(_0x274596){_0x274596['MailAccountId']=_0x2f3573['params']['id'];return _0x274596;});return db[_0x96ab('0x9e')][_0x96ab('0x9f')](_0x53c43b,{'transaction':_0x4c40c1});});})[_0x96ab('0x24')](function(){return db[_0x96ab('0x9e')][_0x96ab('0xa0')]({'where':{'MailAccountId':_0x2f3573[_0x96ab('0x60')]['id']},'order':'priority'});});}})[_0x96ab('0x24')](respondWithResult(_0x390533,null))['catch'](handleError(_0x390533,null));};exports[_0x96ab('0xa1')]=function(_0x3e8e7b,_0x21ecf4,_0x326ea6){var _0x24b8b4={};var _0x29101f={};var _0x5488f0;var _0x9c506b;return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0x3e8e7b['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x21ecf4,null))[_0x96ab('0x24')](function(_0x53a004){if(_0x53a004){_0x5488f0=_0x53a004;_0x29101f[_0x96ab('0x51')]=_['keys'](db[_0x96ab('0x9e')][_0x96ab('0x4a')]);_0x29101f['query']=_[_0x96ab('0x4d')](_0x3e8e7b['query']);_0x29101f[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x29101f[_0x96ab('0x51')],_0x29101f[_0x96ab('0x4e')]);_0x24b8b4[_0x96ab('0x53')]=_['intersection'](_0x29101f[_0x96ab('0x51')],qs['fields'](_0x3e8e7b[_0x96ab('0x4e')][_0x96ab('0x52')]));_0x24b8b4['attributes']=_0x24b8b4['attributes'][_0x96ab('0x54')]?_0x24b8b4[_0x96ab('0x53')]:_0x29101f[_0x96ab('0x51')];_0x24b8b4[_0x96ab('0x6c')]=qs[_0x96ab('0x55')](_0x3e8e7b[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x24b8b4[_0x96ab('0x58')]=qs[_0x96ab('0x4f')](_[_0x96ab('0x56')](_0x3e8e7b[_0x96ab('0x4e')],_0x29101f[_0x96ab('0x4f')]));if(_0x3e8e7b[_0x96ab('0x4e')][_0x96ab('0x57')]){_0x24b8b4['where']=_[_0x96ab('0x59')](_0x24b8b4['where'],{'$or':_[_0x96ab('0x48')](_0x24b8b4[_0x96ab('0x53')],function(_0x4cfc43){var _0xfa479c={};_0xfa479c[_0x4cfc43]={'$like':'%'+_0x3e8e7b[_0x96ab('0x4e')]['filter']+'%'};return _0xfa479c;})});}_0x24b8b4=_['merge']({},_0x24b8b4,_0x3e8e7b['options']);return _0x5488f0[_0x96ab('0xa1')](_0x24b8b4);}})[_0x96ab('0x24')](function(_0x1500d6){if(_0x1500d6){_0x9c506b=_0x1500d6['length'];if(!_0x3e8e7b[_0x96ab('0x4e')][_0x96ab('0x6b')]('nolimit')){_0x24b8b4['limit']=qs[_0x96ab('0x36')](_0x3e8e7b[_0x96ab('0x4e')]['limit']);_0x24b8b4['offset']=qs[_0x96ab('0x33')](_0x3e8e7b[_0x96ab('0x4e')][_0x96ab('0x33')]);}return _0x5488f0[_0x96ab('0xa1')](_0x24b8b4);}})[_0x96ab('0x24')](function(_0x5d6980){if(_0x5d6980){return _0x5d6980?{'count':_0x9c506b,'rows':_0x5d6980}:null;}})[_0x96ab('0x24')](respondWithResult(_0x21ecf4,null))[_0x96ab('0x2e')](handleError(_0x21ecf4,null));};exports[_0x96ab('0xa2')]=function(_0x39f50b,_0x315d5a,_0x4d0a6d){var _0x516df6={'raw':!![],'where':{}};var _0xc93617={};var _0x20f6d0={'count':0x0,'rows':[]};return db[_0x96ab('0x49')]['findOne']({'where':{'id':_0x39f50b[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x315d5a,null))['then'](function(_0x236481){if(_0x236481){_0xc93617[_0x96ab('0x51')]=_[_0x96ab('0x4d')](db[_0x96ab('0xa3')][_0x96ab('0x4a')]);_0xc93617['query']=_[_0x96ab('0x4d')](_0x39f50b[_0x96ab('0x4e')]);_0xc93617['filters']=_[_0x96ab('0x50')](_0xc93617[_0x96ab('0x51')],_0xc93617[_0x96ab('0x4e')]);_0x516df6[_0x96ab('0x53')]=_[_0x96ab('0x50')](_0xc93617[_0x96ab('0x51')],qs[_0x96ab('0x52')](_0x39f50b[_0x96ab('0x4e')][_0x96ab('0x52')]));_0x516df6['attributes']=_0x516df6[_0x96ab('0x53')]['length']?_0x516df6[_0x96ab('0x53')]:_0xc93617[_0x96ab('0x51')];if(!_0x39f50b['query']['hasOwnProperty'](_0x96ab('0x93'))){_0x516df6[_0x96ab('0x36')]=qs[_0x96ab('0x36')](_0x39f50b[_0x96ab('0x4e')]['limit']);_0x516df6['offset']=qs[_0x96ab('0x33')](_0x39f50b[_0x96ab('0x4e')][_0x96ab('0x33')]);}_0x516df6['order']=qs[_0x96ab('0x55')](_0x39f50b[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x516df6[_0x96ab('0x58')]=qs[_0x96ab('0x4f')](_[_0x96ab('0x56')](_0x39f50b[_0x96ab('0x4e')],_0xc93617[_0x96ab('0x4f')]));_0x516df6['where'][_0x96ab('0x6d')]=_0x236481['id'];if(_0x39f50b['query'][_0x96ab('0x57')]){_0x516df6[_0x96ab('0x58')]=_['merge'](_0x516df6[_0x96ab('0x58')],{'$or':_[_0x96ab('0x48')](_0x516df6[_0x96ab('0x53')],function(_0x26c473){var _0x125eb9={};_0x125eb9[_0x26c473]={'$like':'%'+_0x39f50b[_0x96ab('0x4e')][_0x96ab('0x57')]+'%'};return _0x125eb9;})});}if(_0x39f50b[_0x96ab('0x4e')]['$gte']){var _0x121627=_0x39f50b[_0x96ab('0x4e')]['$gte'][_0x96ab('0xa4')](',');var _0x1db691={};_0x1db691[_0x121627[0x0]]={'$gte':moment(_0x121627[0x1])[_0x96ab('0xa5')]('YYYY-MM-DD\x20HH:mm:ss')};_0x516df6[_0x96ab('0x58')]=_[_0x96ab('0x59')](_0x516df6[_0x96ab('0x58')],_0x1db691);}_0x516df6=_[_0x96ab('0x59')]({},_0x516df6,_0x39f50b[_0x96ab('0x5c')]);return db[_0x96ab('0xa3')][_0x96ab('0x35')]({'where':_0x516df6[_0x96ab('0x58')]})[_0x96ab('0x24')](function(_0xbe472){_0x20f6d0[_0x96ab('0x35')]=_0xbe472;if(_0x39f50b[_0x96ab('0x4e')][_0x96ab('0x5d')]){_0x516df6[_0x96ab('0x5e')]=[{'all':!![]}];}return db[_0x96ab('0xa3')][_0x96ab('0x6e')](_0x516df6);})[_0x96ab('0x24')](function(_0x2e4869){if(_0x39f50b[_0x96ab('0x4e')][_0x96ab('0xa6')]==='true'){for(var _0x58a5fe=0x0;_0x58a5fe<_0x2e4869[_0x96ab('0x54')];_0x58a5fe++){_0x2e4869[_0x58a5fe]['body']=juice(_0x2e4869[_0x58a5fe][_0x96ab('0x64')]);}}_0x20f6d0[_0x96ab('0x6f')]=_0x2e4869;return _0x20f6d0;});}})['then'](respondWithFilteredResult(_0x315d5a,_0x516df6))[_0x96ab('0x2e')](handleError(_0x315d5a,null));};exports[_0x96ab('0x43')]=function(_0x2aab26,_0xea5e90,_0x50c9df){var _0x3bbcdc,_0x5dcd1c={},_0x5698b8;if(_0x2aab26['body']['to']){_0x5698b8=_0x2aab26[_0x96ab('0x64')]['to'][_0x96ab('0xa4')](',')[0x0];}return db['MailAccount'][_0x96ab('0x66')]({'where':{'id':_0x2aab26[_0x96ab('0x60')]['id']},'include':[{'model':db[_0x96ab('0xa7')],'as':_0x96ab('0xa8'),'include':[{'model':db['CmContact'],'as':_0x96ab('0xa9'),'where':{'email':_0x5698b8},'limit':0x1,'order':[[_0x96ab('0xaa'),_0x96ab('0xab')]]}]},{'model':db[_0x96ab('0x61')],'as':_0x96ab('0x62'),'raw':!![]}]})[_0x96ab('0x24')](handleEntityNotFound(_0xea5e90,null))[_0x96ab('0x24')](function(_0x33d270){if(_0x33d270){_0x3bbcdc=_0x33d270;if(_0x33d270['Smtp']){if(_[_0x96ab('0x78')](_0x2aab26[_0x96ab('0x64')][_0x96ab('0xac')])){_0x2aab26['body'][_0x96ab('0xac')]=util[_0x96ab('0xa5')](_0x96ab('0xad'),_0x33d270['name'],_0x33d270[_0x96ab('0x76')]||_0x33d270[_0x96ab('0x62')][_0x96ab('0x83')]);}if(_0x2aab26[_0x96ab('0x64')][_0x96ab('0xae')]&&_0x2aab26['body'][_0x96ab('0xae')][_0x96ab('0x54')]){for(var _0x41caee=0x0;_0x41caee<_0x2aab26[_0x96ab('0x64')][_0x96ab('0xae')][_0x96ab('0x54')];_0x41caee+=0x1){_0x2aab26[_0x96ab('0x64')][_0x96ab('0xae')][_0x41caee]={'filename':_0x2aab26['body']['attachments'][_0x41caee][_0x96ab('0x42')],'path':path[_0x96ab('0xaf')](config['root'],_0x96ab('0xb0'),_0x2aab26[_0x96ab('0x64')][_0x96ab('0xae')][_0x41caee][_0x96ab('0xb1')])};}}var _0x301740={'tls':{'rejectUnauthorized':![]}};if(_[_0x96ab('0x78')](_0x33d270[_0x96ab('0x62')]['service'])){if(_0x33d270['Smtp'][_0x96ab('0x80')]){_0x301740[_0x96ab('0xb2')]={'user':_0x33d270['Smtp'][_0x96ab('0x83')],'pass':_0x33d270['Smtp'][_0x96ab('0x84')]};}_0x301740[_0x96ab('0x81')]=_0x33d270[_0x96ab('0x62')]['host'];_0x301740['port']=_0x33d270[_0x96ab('0x62')][_0x96ab('0x82')];_0x301740[_0x96ab('0xb3')]=_0x33d270[_0x96ab('0x62')][_0x96ab('0xb3')];}else{_0x301740['service']=_0x33d270['Smtp'][_0x96ab('0xb4')];_0x301740[_0x96ab('0xb2')]={'user':_0x33d270[_0x96ab('0x62')][_0x96ab('0x83')],'pass':_0x33d270['Smtp']['pass']};}return respondWithRpcPromise(_0x96ab('0xb5'),_0x96ab('0xb6'),{'account':_0x301740,'message':_0x2aab26[_0x96ab('0x64')]});}else{throw new Error(_0x96ab('0xb7'));}}})[_0x96ab('0x24')](function(_0x2e1d21){if(_0x2e1d21){_0x5dcd1c=_0x2e1d21;if(_0x3bbcdc['List']){if(_0x3bbcdc[_0x96ab('0xa8')][_0x96ab('0xa9')][_0x96ab('0x54')]){return _0x3bbcdc[_0x96ab('0xa8')][_0x96ab('0xa9')][0x0];}else{return db['CmContact'][_0x96ab('0x68')](_[_0x96ab('0x1e')](_0x2aab26[_0x96ab('0x64')],{'firstName':_0x2aab26['body']['to'],'email':_0x2aab26[_0x96ab('0x64')]['to'],'phone':_0x2aab26[_0x96ab('0x64')]['to'],'ListId':_0x3bbcdc[_0x96ab('0x77')]}));}}else{throw new Error('List\x20not\x20found');}}})[_0x96ab('0x24')](function(_0x57f1cf){if(_0x57f1cf){var _0x4a00ff={'UserId':_0x2aab26[_0x96ab('0x83')]['id'],'ContactId':_0x57f1cf['id'],'MailAccountId':_0x3bbcdc['id'],'inReplyTo':_0x5dcd1c[_0x96ab('0xb8')],'to':_0x2aab26[_0x96ab('0x64')]['from'],'cc':_0x2aab26[_0x96ab('0x64')]['cc'],'subject':_0x2aab26[_0x96ab('0x64')][_0x96ab('0xb9')],'attach':_0x2aab26['body'][_0x96ab('0xba')],'firstMsgDirection':_0x96ab('0xbb'),'lastMsgAt':moment()[_0x96ab('0xa5')](_0x96ab('0xbc')),'lastMsgDirection':_0x96ab('0xbb'),'Messages':[_[_0x96ab('0x59')](_0x2aab26[_0x96ab('0x64')],{'messageId':_0x5dcd1c['messageId'],'sentAt':moment()['format'](_0x96ab('0xbc')),'read':!![],'MailAccountId':_0x3bbcdc['id'],'UserId':_0x2aab26['user']['id'],'ContactId':_0x57f1cf['id']})]};if(_0x2aab26['body'][_0x96ab('0xbd')]){_0x4a00ff=_[_0x96ab('0x59')](_0x4a00ff,_0x2aab26['body'][_0x96ab('0xbd')]);}return db[_0x96ab('0x90')]['create'](_0x4a00ff,{'include':[{'model':db[_0x96ab('0xa3')],'as':_0x96ab('0xbe')}]});}})[_0x96ab('0x24')](respondWithResult(_0xea5e90,null))[_0x96ab('0x2e')](handleError(_0xea5e90,null));};exports['verifySmtp']=function(_0x8e208b,_0x54b9ff,_0x3c35b7){return db['MailAccount'][_0x96ab('0x66')]({'where':{'id':_0x8e208b[_0x96ab('0x60')]['id']},'include':[{'model':db[_0x96ab('0x61')],'as':_0x96ab('0x62'),'raw':!![]}]})[_0x96ab('0x24')](handleEntityNotFound(_0x54b9ff,null))[_0x96ab('0x24')](function(_0xd747f8){if(_0xd747f8&&_0xd747f8[_0x96ab('0x62')]){var _0x1eaba5={'id':_0xd747f8['id'],'tls':{'rejectUnauthorized':![]}};if(_0xd747f8[_0x96ab('0x62')]['service']){_0x1eaba5['service']=_0xd747f8[_0x96ab('0x62')]['service'];}else{_0x1eaba5['host']=_0xd747f8[_0x96ab('0x62')][_0x96ab('0x81')];_0x1eaba5[_0x96ab('0x82')]=_0xd747f8['Smtp'][_0x96ab('0x82')];_0x1eaba5[_0x96ab('0xb3')]=_0xd747f8[_0x96ab('0x62')][_0x96ab('0xb3')];}if(_0xd747f8[_0x96ab('0x62')][_0x96ab('0x80')]){_0x1eaba5[_0x96ab('0xb2')]={'user':_0xd747f8[_0x96ab('0x62')][_0x96ab('0x83')],'pass':_0xd747f8['Smtp'][_0x96ab('0x84')]};}return respondWithRpcPromise(_0x96ab('0xbf'),_0x96ab('0xc0'),{'account':_0x1eaba5});}})['then'](respondWithResult(_0x54b9ff,null))[_0x96ab('0x2e')](handleError(_0x54b9ff,null));};exports[_0x96ab('0x3d')]=function(_0xc34886,_0x38af0d){return db[_0x96ab('0x49')][_0x96ab('0x66')]({'where':{'id':_0xc34886[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x38af0d,null))['then'](function(_0x35a27b){if(_0x35a27b&&_0x35a27b[_0x96ab('0xb4')]){throw new db[(_0x96ab('0xc1'))][(_0x96ab('0xc2'))](_0x96ab('0xc3'));}return _0x35a27b;})[_0x96ab('0x24')](removeEntity(_0x38af0d,null))[_0x96ab('0x2e')](handleError(_0x38af0d,null));};exports['addAgents']=function(_0x335edf,_0x380e53,_0x350867){return db[_0x96ab('0x49')][_0x96ab('0x66')]({'where':{'id':_0x335edf[_0x96ab('0x60')]['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x380e53,null))[_0x96ab('0x24')](function(_0x210a0d){if(_0x210a0d){return _0x210a0d[_0x96ab('0xc4')](_0x335edf[_0x96ab('0x64')]['ids'],_['omit'](_0x335edf['body'],[_0x96ab('0x71'),'id'])||{})[_0x96ab('0xc5')](function(_0x432296){for(var _0x1b04ab=0x0;_0x1b04ab<_0x335edf[_0x96ab('0x64')]['ids']['length'];_0x1b04ab+=0x1){socket[_0x96ab('0xc6')](_0x96ab('0xc7'),{'UserId':Number(_0x335edf[_0x96ab('0x64')]['ids'][_0x1b04ab]),'MailAccountId':Number(_0x335edf[_0x96ab('0x60')]['id'])});}return _0x432296;});}})['then'](respondWithResult(_0x380e53,null))[_0x96ab('0x2e')](handleError(_0x380e53,null));};exports[_0x96ab('0xc8')]=function(_0xe23fc3,_0x59974e,_0x1cc29d){return db[_0x96ab('0x49')][_0x96ab('0x66')]({'where':{'id':_0xe23fc3['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x59974e,null))[_0x96ab('0x24')](function(_0x2009ef){if(_0x2009ef){return _0x2009ef['removeAgents'](_0xe23fc3[_0x96ab('0x4e')][_0x96ab('0x71')])[_0x96ab('0x24')](function(){if(_['isArray'](_0xe23fc3['query'][_0x96ab('0x71')])){for(var _0x4c6444=0x0;_0x4c6444<_0xe23fc3['query'][_0x96ab('0x71')][_0x96ab('0x54')];_0x4c6444+=0x1){socket[_0x96ab('0xc6')](_0x96ab('0xc9'),{'UserId':Number(_0xe23fc3[_0x96ab('0x4e')][_0x96ab('0x71')][_0x4c6444]),'MailAccountId':Number(_0xe23fc3[_0x96ab('0x60')]['id'])});}}else{socket[_0x96ab('0xc6')](_0x96ab('0xc9'),{'UserId':Number(_0xe23fc3[_0x96ab('0x4e')][_0x96ab('0x71')]),'MailAccountId':Number(_0xe23fc3[_0x96ab('0x60')]['id'])});}});}})[_0x96ab('0x24')](respondWithStatusCode(_0x59974e,null))['catch'](handleError(_0x59974e,null));};exports['getAgents']=function(_0x44ca39,_0x577faa,_0x47cd5d){var _0x3320a5={};var _0x10b59f={};var _0x282d1f;var _0x2add2f;return db[_0x96ab('0x49')][_0x96ab('0x6a')]({'where':{'id':_0x44ca39['params']['id']}})[_0x96ab('0x24')](handleEntityNotFound(_0x577faa,null))[_0x96ab('0x24')](function(_0x262228){if(_0x262228){_0x282d1f=_0x262228;_0x10b59f[_0x96ab('0x51')]=_['keys'](db[_0x96ab('0xca')][_0x96ab('0x4a')]);_0x10b59f['query']=_[_0x96ab('0x4d')](_0x44ca39[_0x96ab('0x4e')]);_0x10b59f[_0x96ab('0x4f')]=_[_0x96ab('0x50')](_0x10b59f[_0x96ab('0x51')],_0x10b59f['query']);_0x3320a5['attributes']=_['intersection'](_0x10b59f[_0x96ab('0x51')],qs[_0x96ab('0x52')](_0x44ca39['query'][_0x96ab('0x52')]));_0x3320a5[_0x96ab('0x53')]=_0x3320a5['attributes'][_0x96ab('0x54')]?_0x3320a5[_0x96ab('0x53')]:_0x10b59f[_0x96ab('0x51')];_0x3320a5[_0x96ab('0x6c')]=qs[_0x96ab('0x55')](_0x44ca39[_0x96ab('0x4e')][_0x96ab('0x55')]);_0x3320a5[_0x96ab('0x58')]=qs[_0x96ab('0x4f')](_[_0x96ab('0x56')](_0x44ca39['query'],_0x10b59f[_0x96ab('0x4f')]));if(_0x44ca39[_0x96ab('0x4e')][_0x96ab('0x57')]){_0x3320a5['where']=_['merge'](_0x3320a5['where'],{'$or':_[_0x96ab('0x48')](_0x3320a5[_0x96ab('0x53')],function(_0x985332){var _0x1d7ba7={};_0x1d7ba7[_0x985332]={'$like':'%'+_0x44ca39[_0x96ab('0x4e')]['filter']+'%'};return _0x1d7ba7;})});}_0x3320a5=_[_0x96ab('0x59')]({},_0x3320a5,_0x44ca39['options']);return _0x282d1f[_0x96ab('0xcb')](_0x3320a5);}})[_0x96ab('0x24')](function(_0x3486d6){if(_0x3486d6){_0x2add2f=_0x3486d6[_0x96ab('0x54')];if(!_0x44ca39[_0x96ab('0x4e')][_0x96ab('0x6b')](_0x96ab('0x93'))){_0x3320a5['limit']=qs[_0x96ab('0x36')](_0x44ca39[_0x96ab('0x4e')][_0x96ab('0x36')]);_0x3320a5[_0x96ab('0x33')]=qs[_0x96ab('0x33')](_0x44ca39[_0x96ab('0x4e')][_0x96ab('0x33')]);}return _0x282d1f[_0x96ab('0xcb')](_0x3320a5);}})[_0x96ab('0x24')](function(_0x4ff8aa){if(_0x4ff8aa){return _0x4ff8aa?{'count':_0x2add2f,'rows':_0x4ff8aa}:null;}})[_0x96ab('0x24')](respondWithResult(_0x577faa,null))[_0x96ab('0x2e')](handleError(_0x577faa,null));};
\ No newline at end of file
+var _0xc48e=['../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','request','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','MailAccounts','UserProfileResource','stack','name','send','index','MailServerIn','Imap','MailServerOut','Pause','mandatoryDispositionPause','map','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','options','MailAccount','includeAll','include','findAll','rows','show','params','Smtp','merge','find','body','describe','Disposition','create','getDispositions','MailAccountId','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','hasOwnProperty','removeAnswers','email','isNil','active','cservice','cauthentication','user','cuser','password','cpassword','authentication','host','port','service','pass','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','setSmtp','addInteraction','omit','getInteractions','MailInteraction','CmContact','User','Owner','fullname','internal','Tags','tag','addApplications','sequelize','transaction','MailApplication','findAndCountAll','priority','getMessages','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','CmList','Contacts','updatedAt','DESC','from','%s\x20<%s>','attachments','join','root','basename','auth','SendMail','sendMail','List\x20not\x20found','List','subject','attach','out','messageId','Interaction','verifySmtp','secure','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api'];(function(_0x4abdb1,_0x2bd765){var _0xc31b56=function(_0x58a0ad){while(--_0x58a0ad){_0x4abdb1['push'](_0x4abdb1['shift']());}};_0xc31b56(++_0x2bd765);}(_0xc48e,0xae));var _0xec48=function(_0x12873b,_0x35306d){_0x12873b=_0x12873b-0x0;var _0x428e39=_0xc48e[_0x12873b];return _0x428e39;};'use strict';var emlformat=require(_0xec48('0x0'));var rimraf=require(_0xec48('0x1'));var zipdir=require(_0xec48('0x2'));var jsonpatch=require(_0xec48('0x3'));var rp=require(_0xec48('0x4'));var moment=require(_0xec48('0x5'));var BPromise=require(_0xec48('0x6'));var Mustache=require(_0xec48('0x7'));var util=require(_0xec48('0x8'));var path=require(_0xec48('0x9'));var sox=require('sox');var csv=require(_0xec48('0xa'));var ejs=require(_0xec48('0xb'));var fs=require('fs');var fs_extra=require(_0xec48('0xc'));var _=require(_0xec48('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xec48('0xe'));var deskjs=require(_0xec48('0xf'));var toCsv=require(_0xec48('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var htmlToText=require(_0xec48('0x10'));var juice=require(_0xec48('0x11'));var Redis=require(_0xec48('0x12'));var authService=require(_0xec48('0x13'));var qs=require(_0xec48('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xec48('0x15'));var logger=require(_0xec48('0x16'))(_0xec48('0x17'));var utils=require(_0xec48('0x18'));var config=require(_0xec48('0x19'));var licenseUtil=require(_0xec48('0x1a'));var db=require('../../mysqldb')['db'];config[_0xec48('0x1b')]=_[_0xec48('0x1c')](config[_0xec48('0x1b')],{'host':_0xec48('0x1d'),'port':0x18eb});var socket=require(_0xec48('0x1e'))(new Redis(config[_0xec48('0x1b')]));require('./mailAccount.socket')['register'](socket);var jayson=require(_0xec48('0x1f'));var client=jayson[_0xec48('0x20')][_0xec48('0x21')]({'port':0x232b});function respondWithRpcPromise(_0x4a688e,_0x3d587b,_0x2f81ba,_0x45bca0){return new BPromise(function(_0x34db1c,_0x18e62f){var _0x48c887=_0x45bca0||client;return _0x48c887[_0xec48('0x22')](_0x4a688e,_0x2f81ba)['then'](function(_0x5a33dd){logger[_0xec48('0x23')](_0xec48('0x24'),_0x3d587b,_0xec48('0x25'));logger[_0xec48('0x26')](_0xec48('0x27'),_0x3d587b,_0xec48('0x25'),JSON[_0xec48('0x28')](_0x5a33dd));if(_0x5a33dd[_0xec48('0x29')]){if(_0x5a33dd[_0xec48('0x29')]['code']===0x1f4){logger['error'](_0xec48('0x24'),_0x3d587b,_0x5a33dd[_0xec48('0x29')][_0xec48('0x2a')]);return _0x18e62f(_0x5a33dd[_0xec48('0x29')][_0xec48('0x2a')]);}logger['error'](_0xec48('0x24'),_0x3d587b,_0x5a33dd['error'][_0xec48('0x2a')]);return _0x34db1c(_0x5a33dd[_0xec48('0x29')][_0xec48('0x2a')]);}else{logger[_0xec48('0x23')](_0xec48('0x24'),_0x3d587b,_0xec48('0x25'));_0x34db1c(_0x5a33dd['result'][_0xec48('0x2a')]);}})[_0xec48('0x2b')](function(_0x4b6118){logger[_0xec48('0x29')](_0xec48('0x24'),_0x3d587b,_0x4b6118);_0x18e62f(_0x4b6118);});});}function respondWithStatusCode(_0x1afae1,_0x1b7bea){_0x1b7bea=_0x1b7bea||0xcc;return function(_0x328419){if(_0x328419){return _0x1afae1[_0xec48('0x2c')](_0x1b7bea);}return _0x1afae1[_0xec48('0x2d')](_0x1b7bea)[_0xec48('0x2e')]();};}function respondWithResult(_0x4a3754,_0x5f1ff8){_0x5f1ff8=_0x5f1ff8||0xc8;return function(_0x25b366){if(_0x25b366){return _0x4a3754[_0xec48('0x2d')](_0x5f1ff8)[_0xec48('0x2f')](_0x25b366);}};}function respondWithFilteredResult(_0x1f82ec,_0x49e961){return function(_0x4631d3){if(_0x4631d3){var _0x3ded70=typeof _0x49e961[_0xec48('0x30')]==='undefined'&&typeof _0x49e961[_0xec48('0x31')]===_0xec48('0x32');var _0x536adf=_0x4631d3[_0xec48('0x33')];var _0x57f711=_0x3ded70?0x0:_0x49e961[_0xec48('0x30')];var _0x571bb9=_0x3ded70?_0x4631d3[_0xec48('0x33')]:_0x49e961[_0xec48('0x30')]+_0x49e961[_0xec48('0x31')];var _0xdb4460;if(_0x571bb9>=_0x536adf){_0x571bb9=_0x536adf;_0xdb4460=0xc8;}else{_0xdb4460=0xce;}_0x1f82ec[_0xec48('0x2d')](_0xdb4460);return _0x1f82ec[_0xec48('0x34')](_0xec48('0x35'),_0x57f711+'-'+_0x571bb9+'/'+_0x536adf)[_0xec48('0x2f')](_0x4631d3);}return null;};}function patchUpdates(_0x1e94e0){return function(_0x2c8b63){try{jsonpatch[_0xec48('0x36')](_0x2c8b63,_0x1e94e0,!![]);}catch(_0x54e948){return BPromise[_0xec48('0x37')](_0x54e948);}return _0x2c8b63[_0xec48('0x38')]();};}function saveUpdates(_0x28830c,_0x56afc5){return function(_0x3df354){if(_0x3df354){return _0x3df354[_0xec48('0x39')](_0x28830c)[_0xec48('0x3a')](function(_0x2661d5){return _0x2661d5;});}return null;};}function removeEntity(_0x119d90,_0x229c9f){return function(_0x78a163){if(_0x78a163){return _0x78a163[_0xec48('0x3b')]()[_0xec48('0x3a')](function(){var _0xb0699f=_0x78a163[_0xec48('0x3c')]({'plain':!![]});var _0x539f39=_0xec48('0x3d');return db[_0xec48('0x3e')][_0xec48('0x3b')]({'where':{'type':_0x539f39,'resourceId':_0xb0699f['id']}})[_0xec48('0x3a')](function(){return _0x78a163;});})[_0xec48('0x3a')](function(){_0x119d90[_0xec48('0x2d')](0xcc)[_0xec48('0x2e')]();});}};}function handleEntityNotFound(_0x23d74b,_0x4fa076){return function(_0x23946a){if(!_0x23946a){_0x23d74b[_0xec48('0x2c')](0x194);}return _0x23946a;};}function handleError(_0x137ca8,_0x5dc0df){_0x5dc0df=_0x5dc0df||0x1f4;return function(_0x51f4a3){logger[_0xec48('0x29')](_0x51f4a3[_0xec48('0x3f')]);if(_0x51f4a3[_0xec48('0x40')]){delete _0x51f4a3[_0xec48('0x40')];}_0x137ca8['status'](_0x5dc0df)[_0xec48('0x41')](_0x51f4a3);};}exports[_0xec48('0x42')]=function(_0x26299b,_0x32d60d){var _0x4d0156={'include':[{'model':db[_0xec48('0x43')],'as':_0xec48('0x44')},{'model':db[_0xec48('0x45')],'as':'Smtp'},{'model':db[_0xec48('0x46')],'as':_0xec48('0x47')}]},_0x14fe4a={},_0x16c284={'count':0x0,'rows':[]};var _0x435904=_[_0xec48('0x48')](db['MailAccount'][_0xec48('0x49')],function(_0xe66528){return{'name':_0xe66528['fieldName'],'type':_0xe66528[_0xec48('0x4a')]['key']};});_0x14fe4a[_0xec48('0x4b')]=_[_0xec48('0x48')](_0x435904,_0xec48('0x40'));_0x14fe4a[_0xec48('0x4c')]=_[_0xec48('0x4d')](_0x26299b[_0xec48('0x4c')]);_0x14fe4a['filters']=_[_0xec48('0x4e')](_0x14fe4a[_0xec48('0x4b')],_0x14fe4a[_0xec48('0x4c')]);_0x4d0156[_0xec48('0x4f')]=_['intersection'](_0x14fe4a[_0xec48('0x4b')],qs[_0xec48('0x50')](_0x26299b['query'][_0xec48('0x50')]));_0x4d0156[_0xec48('0x4f')]=_0x4d0156[_0xec48('0x4f')][_0xec48('0x51')]?_0x4d0156[_0xec48('0x4f')]:_0x14fe4a[_0xec48('0x4b')];if(!_0x26299b[_0xec48('0x4c')]['hasOwnProperty'](_0xec48('0x52'))){_0x4d0156[_0xec48('0x31')]=qs[_0xec48('0x31')](_0x26299b[_0xec48('0x4c')][_0xec48('0x31')]);_0x4d0156[_0xec48('0x30')]=qs[_0xec48('0x30')](_0x26299b[_0xec48('0x4c')][_0xec48('0x30')]);}_0x4d0156[_0xec48('0x53')]=qs['sort'](_0x26299b[_0xec48('0x4c')][_0xec48('0x54')]);_0x4d0156[_0xec48('0x55')]=qs[_0xec48('0x56')](_[_0xec48('0x57')](_0x26299b[_0xec48('0x4c')],_0x14fe4a[_0xec48('0x56')]),_0x435904);if(_0x26299b[_0xec48('0x4c')][_0xec48('0x58')]){_0x4d0156['where']=_['merge'](_0x4d0156[_0xec48('0x55')],{'$or':_[_0xec48('0x48')](_0x435904,function(_0x4e6219){if(_0x4e6219[_0xec48('0x4a')]!=='VIRTUAL'){var _0x33ca43={};_0x33ca43[_0x4e6219['name']]={'$like':'%'+_0x26299b['query'][_0xec48('0x58')]+'%'};return _0x33ca43;}})});}_0x4d0156=_['merge']({},_0x4d0156,_0x26299b[_0xec48('0x59')]);var _0x1c60af={'where':_0x4d0156[_0xec48('0x55')]};return db[_0xec48('0x5a')][_0xec48('0x33')](_0x1c60af)[_0xec48('0x3a')](function(_0x8aecf1){_0x16c284[_0xec48('0x33')]=_0x8aecf1;if(_0x26299b[_0xec48('0x4c')][_0xec48('0x5b')]){_0x4d0156[_0xec48('0x5c')]=[{'all':!![]}];}return db['MailAccount'][_0xec48('0x5d')](_0x4d0156);})['then'](function(_0x33f3e8){_0x16c284[_0xec48('0x5e')]=_0x33f3e8;return _0x16c284;})[_0xec48('0x3a')](respondWithFilteredResult(_0x32d60d,_0x4d0156))[_0xec48('0x2b')](handleError(_0x32d60d,null));};exports[_0xec48('0x5f')]=function(_0x402ac4,_0x1ab64f){var _0x5f59b2={'raw':![],'where':{'id':_0x402ac4[_0xec48('0x60')]['id']},'include':[{'model':db[_0xec48('0x43')],'as':_0xec48('0x44')},{'model':db[_0xec48('0x45')],'as':_0xec48('0x61')},{'model':db['Pause'],'as':_0xec48('0x47')}]},_0x21a29d={};_0x21a29d[_0xec48('0x4b')]=_[_0xec48('0x4d')](db[_0xec48('0x5a')]['rawAttributes']);_0x21a29d['query']=_[_0xec48('0x4d')](_0x402ac4[_0xec48('0x4c')]);_0x21a29d[_0xec48('0x56')]=_[_0xec48('0x4e')](_0x21a29d[_0xec48('0x4b')],_0x21a29d[_0xec48('0x4c')]);_0x5f59b2[_0xec48('0x4f')]=_[_0xec48('0x4e')](_0x21a29d[_0xec48('0x4b')],qs[_0xec48('0x50')](_0x402ac4[_0xec48('0x4c')][_0xec48('0x50')]));_0x5f59b2[_0xec48('0x4f')]=_0x5f59b2['attributes'][_0xec48('0x51')]?_0x5f59b2[_0xec48('0x4f')]:_0x21a29d[_0xec48('0x4b')];if(_0x402ac4[_0xec48('0x4c')][_0xec48('0x5b')]){_0x5f59b2['include']=[{'all':!![]}];}_0x5f59b2=_[_0xec48('0x62')]({},_0x5f59b2,_0x402ac4[_0xec48('0x59')]);return db[_0xec48('0x5a')][_0xec48('0x63')](_0x5f59b2)[_0xec48('0x3a')](handleEntityNotFound(_0x1ab64f,null))[_0xec48('0x3a')](respondWithResult(_0x1ab64f,null))[_0xec48('0x2b')](handleError(_0x1ab64f,null));};exports[_0xec48('0x39')]=function(_0x2142cb,_0x25d20a){if(_0x2142cb[_0xec48('0x64')]['id']){delete _0x2142cb[_0xec48('0x64')]['id'];}return db['MailAccount'][_0xec48('0x63')]({'where':{'id':_0x2142cb[_0xec48('0x60')]['id']},'include':[{'model':db['MailServerIn'],'as':_0xec48('0x44')},{'model':db['MailServerOut'],'as':_0xec48('0x61')},{'model':db['Pause'],'as':_0xec48('0x47')}]})['then'](handleEntityNotFound(_0x25d20a,null))[_0xec48('0x3a')](saveUpdates(_0x2142cb[_0xec48('0x64')],null))[_0xec48('0x3a')](function(_0x28fdf0){if(_0x28fdf0&&_0x2142cb[_0xec48('0x64')]['Imap']){return db[_0xec48('0x43')][_0xec48('0x39')](_0x2142cb[_0xec48('0x64')][_0xec48('0x44')],{'where':{'MailAccountId':_0x28fdf0['id']}})[_0xec48('0x3a')](function(){return _0x28fdf0;});}return _0x28fdf0;})['then'](function(_0xd288dd){if(_0xd288dd&&_0x2142cb[_0xec48('0x64')][_0xec48('0x61')]){return db[_0xec48('0x45')][_0xec48('0x39')](_0x2142cb['body'][_0xec48('0x61')],{'where':{'MailAccountId':_0xd288dd['id']}})['then'](function(){return _0xd288dd;});}return _0xd288dd;})[_0xec48('0x3a')](respondWithResult(_0x25d20a,null))[_0xec48('0x2b')](handleError(_0x25d20a,null));};exports[_0xec48('0x65')]=function(_0x3817f5,_0xc7e4c5){return db[_0xec48('0x5a')][_0xec48('0x65')]()[_0xec48('0x3a')](respondWithResult(_0xc7e4c5,null))['catch'](handleError(_0xc7e4c5,null));};exports['addDisposition']=function(_0x4ca050,_0x4efb79,_0x5971ee){if(_0x4ca050['body']['id']){delete _0x4ca050['body']['id'];}return db[_0xec48('0x5a')][_0xec48('0x63')]({'where':{'id':_0x4ca050['params']['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x4efb79,null))[_0xec48('0x3a')](function(_0x191c2f){if(_0x191c2f){_0x4ca050[_0xec48('0x64')]['MailAccountId']=_0x191c2f['id'];return db[_0xec48('0x66')][_0xec48('0x67')](_0x4ca050['body']);}})[_0xec48('0x3a')](respondWithResult(_0x4efb79,null))[_0xec48('0x2b')](handleError(_0x4efb79,null));};exports[_0xec48('0x68')]=function(_0x318ceb,_0x405df2,_0x2edafc){var _0x3e3c9b={'raw':![],'where':{}};var _0x53da45={};var _0x5328d4={'count':0x0,'rows':[]};return db[_0xec48('0x5a')]['findOne']({'where':{'id':_0x318ceb['params']['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x405df2,null))[_0xec48('0x3a')](function(_0x54fb89){if(_0x54fb89){_0x53da45[_0xec48('0x4b')]=_[_0xec48('0x4d')](db['Disposition']['rawAttributes']);_0x53da45[_0xec48('0x4c')]=_[_0xec48('0x4d')](_0x318ceb['query']);_0x53da45[_0xec48('0x56')]=_[_0xec48('0x4e')](_0x53da45['model'],_0x53da45[_0xec48('0x4c')]);_0x3e3c9b[_0xec48('0x4f')]=_[_0xec48('0x4e')](_0x53da45[_0xec48('0x4b')],qs[_0xec48('0x50')](_0x318ceb[_0xec48('0x4c')]['fields']));_0x3e3c9b[_0xec48('0x4f')]=_0x3e3c9b['attributes'][_0xec48('0x51')]?_0x3e3c9b[_0xec48('0x4f')]:_0x53da45[_0xec48('0x4b')];if(!_0x318ceb[_0xec48('0x4c')]['hasOwnProperty'](_0xec48('0x52'))){_0x3e3c9b[_0xec48('0x31')]=qs[_0xec48('0x31')](_0x318ceb[_0xec48('0x4c')][_0xec48('0x31')]);_0x3e3c9b[_0xec48('0x30')]=qs['offset'](_0x318ceb[_0xec48('0x4c')][_0xec48('0x30')]);}_0x3e3c9b[_0xec48('0x53')]=qs['sort'](_0x318ceb['query']['sort']);_0x3e3c9b[_0xec48('0x55')]=qs[_0xec48('0x56')](_[_0xec48('0x57')](_0x318ceb[_0xec48('0x4c')],_0x53da45[_0xec48('0x56')]));_0x3e3c9b[_0xec48('0x55')][_0xec48('0x69')]=_0x54fb89['id'];if(_0x318ceb['query'][_0xec48('0x58')]){_0x3e3c9b[_0xec48('0x55')]=_[_0xec48('0x62')](_0x3e3c9b[_0xec48('0x55')],{'$or':_[_0xec48('0x48')](_0x3e3c9b[_0xec48('0x4f')],function(_0x79a9b2){var _0x43387b={};_0x43387b[_0x79a9b2]={'$like':'%'+_0x318ceb[_0xec48('0x4c')][_0xec48('0x58')]+'%'};return _0x43387b;})});}_0x3e3c9b=_[_0xec48('0x62')]({},_0x3e3c9b,_0x318ceb[_0xec48('0x59')]);return db[_0xec48('0x66')][_0xec48('0x33')]({'where':_0x3e3c9b['where']})[_0xec48('0x3a')](function(_0x49166c){_0x5328d4[_0xec48('0x33')]=_0x49166c;if(_0x318ceb[_0xec48('0x4c')]['includeAll']){_0x3e3c9b[_0xec48('0x5c')]=[{'all':!![]}];}return db[_0xec48('0x66')]['findAll'](_0x3e3c9b);})[_0xec48('0x3a')](function(_0x25a166){_0x5328d4[_0xec48('0x5e')]=_0x25a166;return _0x5328d4;});}})[_0xec48('0x3a')](respondWithFilteredResult(_0x405df2,_0x3e3c9b))['catch'](handleError(_0x405df2,null));};exports[_0xec48('0x6a')]=function(_0x3bec43,_0x16abf6,_0x235df6){return db['MailAccount'][_0xec48('0x63')]({'where':{'id':_0x3bec43[_0xec48('0x60')]['id']}})['then'](handleEntityNotFound(_0x16abf6,null))[_0xec48('0x3a')](function(_0x410ed6){if(_0x410ed6){return _0x410ed6[_0xec48('0x6a')](_0x3bec43[_0xec48('0x4c')][_0xec48('0x6b')]);}})[_0xec48('0x3a')](respondWithStatusCode(_0x16abf6,null))['catch'](handleError(_0x16abf6,null));};exports[_0xec48('0x6c')]=function(_0x1bf1d8,_0xedf0ca,_0x4f8404){if(_0x1bf1d8['body']['id']){delete _0x1bf1d8['body']['id'];}return db[_0xec48('0x5a')][_0xec48('0x63')]({'where':{'id':_0x1bf1d8['params']['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0xedf0ca,null))[_0xec48('0x3a')](function(_0x1f7890){if(_0x1f7890){_0x1bf1d8['body']['MailAccountId']=_0x1f7890['id'];return db[_0xec48('0x6d')]['create'](_0x1bf1d8['body']);}})[_0xec48('0x3a')](respondWithResult(_0xedf0ca,null))[_0xec48('0x2b')](handleError(_0xedf0ca,null));};exports[_0xec48('0x6e')]=function(_0x1ddeb7,_0x283d51,_0x7de11){var _0x72c53={'raw':![],'where':{}};var _0x20d8ca={};var _0x3e663c={'count':0x0,'rows':[]};return db[_0xec48('0x5a')][_0xec48('0x6f')]({'where':{'id':_0x1ddeb7[_0xec48('0x60')]['id']}})['then'](handleEntityNotFound(_0x283d51,null))[_0xec48('0x3a')](function(_0x5760a3){if(_0x5760a3){_0x20d8ca[_0xec48('0x4b')]=_[_0xec48('0x4d')](db['CannedAnswer'][_0xec48('0x49')]);_0x20d8ca['query']=_[_0xec48('0x4d')](_0x1ddeb7[_0xec48('0x4c')]);_0x20d8ca[_0xec48('0x56')]=_[_0xec48('0x4e')](_0x20d8ca[_0xec48('0x4b')],_0x20d8ca['query']);_0x72c53['attributes']=_[_0xec48('0x4e')](_0x20d8ca[_0xec48('0x4b')],qs['fields'](_0x1ddeb7['query'][_0xec48('0x50')]));_0x72c53[_0xec48('0x4f')]=_0x72c53[_0xec48('0x4f')][_0xec48('0x51')]?_0x72c53['attributes']:_0x20d8ca[_0xec48('0x4b')];if(!_0x1ddeb7[_0xec48('0x4c')][_0xec48('0x70')](_0xec48('0x52'))){_0x72c53[_0xec48('0x31')]=qs[_0xec48('0x31')](_0x1ddeb7[_0xec48('0x4c')][_0xec48('0x31')]);_0x72c53[_0xec48('0x30')]=qs[_0xec48('0x30')](_0x1ddeb7[_0xec48('0x4c')][_0xec48('0x30')]);}_0x72c53['order']=qs['sort'](_0x1ddeb7[_0xec48('0x4c')]['sort']);_0x72c53[_0xec48('0x55')]=qs[_0xec48('0x56')](_['pick'](_0x1ddeb7[_0xec48('0x4c')],_0x20d8ca['filters']));_0x72c53[_0xec48('0x55')][_0xec48('0x69')]=_0x5760a3['id'];if(_0x1ddeb7[_0xec48('0x4c')]['filter']){_0x72c53[_0xec48('0x55')]=_[_0xec48('0x62')](_0x72c53[_0xec48('0x55')],{'$or':_[_0xec48('0x48')](_0x72c53[_0xec48('0x4f')],function(_0x534869){var _0x2a3508={};_0x2a3508[_0x534869]={'$like':'%'+_0x1ddeb7[_0xec48('0x4c')][_0xec48('0x58')]+'%'};return _0x2a3508;})});}_0x72c53=_[_0xec48('0x62')]({},_0x72c53,_0x1ddeb7[_0xec48('0x59')]);return db['CannedAnswer'][_0xec48('0x33')]({'where':_0x72c53[_0xec48('0x55')]})[_0xec48('0x3a')](function(_0x52874f){_0x3e663c[_0xec48('0x33')]=_0x52874f;if(_0x1ddeb7[_0xec48('0x4c')][_0xec48('0x5b')]){_0x72c53[_0xec48('0x5c')]=[{'all':!![]}];}return db[_0xec48('0x6d')][_0xec48('0x5d')](_0x72c53);})[_0xec48('0x3a')](function(_0x4c94d9){_0x3e663c['rows']=_0x4c94d9;return _0x3e663c;});}})[_0xec48('0x3a')](respondWithFilteredResult(_0x283d51,_0x72c53))[_0xec48('0x2b')](handleError(_0x283d51,null));};exports[_0xec48('0x71')]=function(_0x4d1262,_0x5b6e14,_0x5b570b){return db['MailAccount'][_0xec48('0x63')]({'where':{'id':_0x4d1262[_0xec48('0x60')]['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x5b6e14,null))[_0xec48('0x3a')](function(_0x534bf3){if(_0x534bf3){return _0x534bf3[_0xec48('0x71')](_0x4d1262['query'][_0xec48('0x6b')]);}})[_0xec48('0x3a')](respondWithStatusCode(_0x5b6e14,null))['catch'](handleError(_0x5b6e14,null));};exports['create']=function(_0xbf8bbd,_0x3ba8cb){var _0x1b8582={'name':_0xbf8bbd[_0xec48('0x64')]['name'],'key':_0xbf8bbd[_0xec48('0x64')]['key'],'email':_0xbf8bbd[_0xec48('0x64')][_0xec48('0x72')],'ListId':_0xbf8bbd[_0xec48('0x64')]['ListId'],'active':!_[_0xec48('0x73')](_0xbf8bbd[_0xec48('0x64')][_0xec48('0x74')])?_0xbf8bbd['body'][_0xec48('0x74')]:!![],'description':_0xbf8bbd[_0xec48('0x64')]['description']||null,'Imap':{},'Smtp':{}};if(_[_0xec48('0x73')](_0xbf8bbd[_0xec48('0x64')][_0xec48('0x75')])){if(_0xbf8bbd[_0xec48('0x64')][_0xec48('0x76')]){_0x1b8582[_0xec48('0x44')][_0xec48('0x77')]=_0x1b8582[_0xec48('0x61')][_0xec48('0x77')]=_0xbf8bbd[_0xec48('0x64')][_0xec48('0x78')];_0x1b8582[_0xec48('0x44')][_0xec48('0x79')]=_0x1b8582[_0xec48('0x61')]['pass']=_0xbf8bbd[_0xec48('0x64')][_0xec48('0x7a')];}else{_0x1b8582['Imap']['authentication']=_0x1b8582[_0xec48('0x61')][_0xec48('0x7b')]=![];}_0x1b8582[_0xec48('0x44')][_0xec48('0x7c')]=_0xbf8bbd[_0xec48('0x64')][_0xec48('0x44')][_0xec48('0x7c')];_0x1b8582[_0xec48('0x44')]['port']=_0xbf8bbd['body']['Imap'][_0xec48('0x7d')];_0x1b8582[_0xec48('0x61')][_0xec48('0x7c')]=_0xbf8bbd[_0xec48('0x64')][_0xec48('0x61')][_0xec48('0x7c')];_0x1b8582['Smtp'][_0xec48('0x7d')]=_0xbf8bbd[_0xec48('0x64')][_0xec48('0x61')][_0xec48('0x7d')];}else{_0x1b8582[_0xec48('0x44')]['service']=_0x1b8582[_0xec48('0x61')][_0xec48('0x7e')]=_0xbf8bbd['body']['cservice'];_0x1b8582[_0xec48('0x44')][_0xec48('0x77')]=_0x1b8582['Smtp'][_0xec48('0x77')]=_0xbf8bbd['body'][_0xec48('0x78')];_0x1b8582[_0xec48('0x44')]['password']=_0x1b8582[_0xec48('0x61')][_0xec48('0x7f')]=_0xbf8bbd[_0xec48('0x64')][_0xec48('0x7a')];}return db[_0xec48('0x5a')][_0xec48('0x67')](_0x1b8582,{'include':[{'model':db[_0xec48('0x45')],'as':'Smtp'},{'model':db['MailServerIn'],'as':'Imap'}]})[_0xec48('0x3a')](function(_0x52d16c){var _0x253bea=_0xbf8bbd[_0xec48('0x77')][_0xec48('0x3c')]({'plain':!![]});if(!_0x253bea)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x253bea[_0xec48('0x80')]===_0xec48('0x77')){var _0x578ece=_0x52d16c[_0xec48('0x3c')]({'plain':!![]});return db[_0xec48('0x81')][_0xec48('0x63')]({'where':{'name':_0xec48('0x3d'),'userProfileId':_0x253bea[_0xec48('0x82')]},'raw':!![]})['then'](function(_0x2285d1){if(_0x2285d1&&_0x2285d1[_0xec48('0x83')]===0x0){return db[_0xec48('0x3e')]['create']({'name':_0x578ece[_0xec48('0x40')],'resourceId':_0x578ece['id'],'type':_0x2285d1[_0xec48('0x40')],'sectionId':_0x2285d1['id']},{})[_0xec48('0x3a')](function(){return _0x52d16c;});}else{return _0x52d16c;}})[_0xec48('0x2b')](function(_0xe12676){logger[_0xec48('0x29')](_0xec48('0x84'),_0xe12676);throw _0xe12676;});}return _0x52d16c;})['then'](respondWithResult(_0x3ba8cb,0xc9))[_0xec48('0x2b')](handleError(_0x3ba8cb,null));};exports['getImap']=function(_0x4ee787,_0x104b3a,_0x39b28d){return db[_0xec48('0x5a')]['findOne']({'where':{'id':_0x4ee787[_0xec48('0x60')]['id']}})['then'](handleEntityNotFound(_0x104b3a,null))[_0xec48('0x3a')](function(_0xd6a9e3){if(_0xd6a9e3){return _0xd6a9e3[_0xec48('0x85')]();}return null;})[_0xec48('0x3a')](respondWithResult(_0x104b3a,null))['catch'](handleError(_0x104b3a,null));};exports[_0xec48('0x86')]=function(_0x4ebd53,_0x4d7ee9,_0x9c067){if(_0x4ebd53[_0xec48('0x64')]['id']){delete _0x4ebd53[_0xec48('0x64')]['id'];}return db['MailAccount'][_0xec48('0x63')]({'where':{'id':_0x4ebd53[_0xec48('0x60')]['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x4d7ee9,null))[_0xec48('0x3a')](function(_0x52f9db){if(_0x52f9db){_0x4ebd53['body'][_0xec48('0x69')]=_0x52f9db['id'];return db[_0xec48('0x43')]['create'](_0x4ebd53['body']);}})[_0xec48('0x3a')](respondWithResult(_0x4d7ee9,null))[_0xec48('0x2b')](handleError(_0x4d7ee9,null));};exports[_0xec48('0x87')]=function(_0x20f049,_0x39898c,_0x357b9b){return db[_0xec48('0x5a')][_0xec48('0x6f')]({'where':{'id':_0x20f049['params']['id']}})['then'](handleEntityNotFound(_0x39898c,null))[_0xec48('0x3a')](function(_0x2d657f){if(_0x2d657f){return _0x2d657f[_0xec48('0x88')](null);}return null;})[_0xec48('0x3a')](respondWithStatusCode(_0x39898c,null))['catch'](handleError(_0x39898c,null));};exports[_0xec48('0x89')]=function(_0x515fb2,_0x239272,_0x2be231){return db['MailAccount'][_0xec48('0x6f')]({'where':{'id':_0x515fb2['params']['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x239272,null))[_0xec48('0x3a')](function(_0xa153d4){if(_0xa153d4){return _0xa153d4[_0xec48('0x89')]();}return null;})[_0xec48('0x3a')](respondWithResult(_0x239272,null))[_0xec48('0x2b')](handleError(_0x239272,null));};exports[_0xec48('0x8a')]=function(_0x12ee7c,_0x4dff1f,_0x590677){if(_0x12ee7c[_0xec48('0x64')]['id']){delete _0x12ee7c[_0xec48('0x64')]['id'];}return db[_0xec48('0x5a')][_0xec48('0x63')]({'where':{'id':_0x12ee7c[_0xec48('0x60')]['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x4dff1f,null))[_0xec48('0x3a')](function(_0x3af004){if(_0x3af004){_0x12ee7c[_0xec48('0x64')][_0xec48('0x69')]=_0x3af004['id'];return db[_0xec48('0x45')][_0xec48('0x67')](_0x12ee7c[_0xec48('0x64')]);}})[_0xec48('0x3a')](respondWithResult(_0x4dff1f,null))[_0xec48('0x2b')](handleError(_0x4dff1f,null));};exports['removeSmtp']=function(_0x52e916,_0x2310d8,_0x14c7ff){return db['MailAccount'][_0xec48('0x6f')]({'where':{'id':_0x52e916[_0xec48('0x60')]['id']}})['then'](handleEntityNotFound(_0x2310d8,null))[_0xec48('0x3a')](function(_0x56e053){if(_0x56e053){return _0x56e053[_0xec48('0x8b')](null);}return null;})['then'](respondWithStatusCode(_0x2310d8,null))[_0xec48('0x2b')](handleError(_0x2310d8,null));};exports['addInteraction']=function(_0x2588dd,_0x4df463,_0x1871ec){return db['MailInteraction'][_0xec48('0x63')]({'where':{'id':_0x2588dd[_0xec48('0x60')]['id']}})['then'](handleEntityNotFound(_0x4df463,null))['then'](function(_0x4861dc){if(_0x4861dc){return _0x4861dc[_0xec48('0x8c')](_0x2588dd[_0xec48('0x64')][_0xec48('0x6b')],_[_0xec48('0x8d')](_0x2588dd[_0xec48('0x64')],[_0xec48('0x6b'),'id'])||{});}})['then'](respondWithResult(_0x4df463,null))[_0xec48('0x2b')](handleError(_0x4df463,null));};exports[_0xec48('0x8e')]=function(_0x17fe74,_0x4ffc10,_0x20f369){var _0x166bd2={'raw':![],'where':{}};var _0xd826cc={};var _0x2353fa={'count':0x0,'rows':[]};return db[_0xec48('0x5a')]['findOne']({'where':{'id':_0x17fe74['params']['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x4ffc10,null))['then'](function(_0x233351){if(_0x233351){_0xd826cc['model']=_[_0xec48('0x4d')](db[_0xec48('0x8f')][_0xec48('0x49')]);_0xd826cc[_0xec48('0x4c')]=_[_0xec48('0x4d')](_0x17fe74['query']);_0xd826cc[_0xec48('0x56')]=_['intersection'](_0xd826cc[_0xec48('0x4b')],_0xd826cc['query']);_0x166bd2[_0xec48('0x4f')]=_[_0xec48('0x4e')](_0xd826cc[_0xec48('0x4b')],qs[_0xec48('0x50')](_0x17fe74[_0xec48('0x4c')][_0xec48('0x50')]));_0x166bd2['attributes']=_0x166bd2[_0xec48('0x4f')][_0xec48('0x51')]?_0x166bd2['attributes']:_0xd826cc['model'];if(!_0x17fe74[_0xec48('0x4c')][_0xec48('0x70')](_0xec48('0x52'))){_0x166bd2[_0xec48('0x31')]=qs[_0xec48('0x31')](_0x17fe74['query']['limit']);_0x166bd2[_0xec48('0x30')]=qs[_0xec48('0x30')](_0x17fe74[_0xec48('0x4c')]['offset']);}_0x166bd2[_0xec48('0x53')]=qs['sort'](_0x17fe74[_0xec48('0x4c')][_0xec48('0x54')]);_0x166bd2[_0xec48('0x55')]=qs[_0xec48('0x56')](_['pick'](_0x17fe74[_0xec48('0x4c')],_0xd826cc['filters']));_0x166bd2['where']['MailAccountId']=_0x233351['id'];if(_0x17fe74[_0xec48('0x4c')][_0xec48('0x58')]){_0x166bd2['where']=_['merge'](_0x166bd2[_0xec48('0x55')],{'$or':_[_0xec48('0x48')](_0x166bd2['attributes'],function(_0x895ae2){var _0x40baf6={};_0x40baf6[_0x895ae2]={'$like':'%'+_0x17fe74[_0xec48('0x4c')][_0xec48('0x58')]+'%'};return _0x40baf6;})});}_0x166bd2=_[_0xec48('0x62')]({},_0x166bd2,_0x17fe74[_0xec48('0x59')]);return db[_0xec48('0x8f')][_0xec48('0x33')]({'where':_0x166bd2[_0xec48('0x55')]})['then'](function(_0x2c3071){_0x2353fa[_0xec48('0x33')]=_0x2c3071;if(_0x17fe74[_0xec48('0x4c')][_0xec48('0x5b')]){_0x166bd2[_0xec48('0x5c')]=[{'model':db[_0xec48('0x90')],'as':'Contact','required':![]},{'model':db[_0xec48('0x91')],'as':_0xec48('0x92'),'attributes':[_0xec48('0x40'),_0xec48('0x93'),_0xec48('0x94')],'required':![]},{'model':db['Tag'],'as':_0xec48('0x95'),'attributes':['id',_0xec48('0x40'),'color'],'where':_0x17fe74['query'][_0xec48('0x96')]?{'id':_0x17fe74['query']['tag']}:undefined,'required':_0x17fe74[_0xec48('0x4c')][_0xec48('0x96')]?!![]:![]}];}return db[_0xec48('0x8f')][_0xec48('0x5d')](_0x166bd2);})['then'](function(_0x5d5e4e){_0x2353fa[_0xec48('0x5e')]=_0x5d5e4e;return _0x2353fa;});}})['then'](respondWithFilteredResult(_0x4ffc10,_0x166bd2))[_0xec48('0x2b')](handleError(_0x4ffc10,null));};exports[_0xec48('0x97')]=function(_0x139d15,_0x415d10,_0xb17126){return db[_0xec48('0x5a')][_0xec48('0x6f')]({'where':{'id':_0x139d15['params']['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x415d10,null))[_0xec48('0x3a')](function(_0x4d11f5){if(_0x4d11f5){return db[_0xec48('0x98')][_0xec48('0x99')](function(_0x2ad424){return db[_0xec48('0x9a')][_0xec48('0x3b')]({'where':{'MailAccountId':_0x139d15[_0xec48('0x60')]['id']},'transaction':_0x2ad424})[_0xec48('0x3a')](function(_0x18550a){var _0x2730a3=_['map'](_0x139d15[_0xec48('0x64')],function(_0x145409){_0x145409[_0xec48('0x69')]=_0x139d15[_0xec48('0x60')]['id'];return _0x145409;});return db[_0xec48('0x9a')]['bulkCreate'](_0x2730a3,{'transaction':_0x2ad424});});})[_0xec48('0x3a')](function(){return db[_0xec48('0x9a')][_0xec48('0x9b')]({'where':{'MailAccountId':_0x139d15[_0xec48('0x60')]['id']},'order':_0xec48('0x9c')});});}})['then'](respondWithResult(_0x415d10,null))[_0xec48('0x2b')](handleError(_0x415d10,null));};exports['getApplications']=function(_0x29ced1,_0x313050,_0x1d00dd){var _0x22eddb={};var _0x732248={};var _0x1d11ef;var _0x3afd98;return db[_0xec48('0x5a')]['findOne']({'where':{'id':_0x29ced1[_0xec48('0x60')]['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x313050,null))['then'](function(_0x547f2f){if(_0x547f2f){_0x1d11ef=_0x547f2f;_0x732248['model']=_[_0xec48('0x4d')](db['MailApplication'][_0xec48('0x49')]);_0x732248[_0xec48('0x4c')]=_[_0xec48('0x4d')](_0x29ced1['query']);_0x732248[_0xec48('0x56')]=_[_0xec48('0x4e')](_0x732248[_0xec48('0x4b')],_0x732248[_0xec48('0x4c')]);_0x22eddb[_0xec48('0x4f')]=_[_0xec48('0x4e')](_0x732248['model'],qs[_0xec48('0x50')](_0x29ced1[_0xec48('0x4c')]['fields']));_0x22eddb[_0xec48('0x4f')]=_0x22eddb[_0xec48('0x4f')][_0xec48('0x51')]?_0x22eddb['attributes']:_0x732248[_0xec48('0x4b')];_0x22eddb[_0xec48('0x53')]=qs[_0xec48('0x54')](_0x29ced1[_0xec48('0x4c')][_0xec48('0x54')]);_0x22eddb[_0xec48('0x55')]=qs[_0xec48('0x56')](_['pick'](_0x29ced1[_0xec48('0x4c')],_0x732248[_0xec48('0x56')]));if(_0x29ced1['query'][_0xec48('0x58')]){_0x22eddb['where']=_[_0xec48('0x62')](_0x22eddb[_0xec48('0x55')],{'$or':_[_0xec48('0x48')](_0x22eddb[_0xec48('0x4f')],function(_0x5cdccb){var _0x4420ad={};_0x4420ad[_0x5cdccb]={'$like':'%'+_0x29ced1[_0xec48('0x4c')][_0xec48('0x58')]+'%'};return _0x4420ad;})});}_0x22eddb=_['merge']({},_0x22eddb,_0x29ced1['options']);return _0x1d11ef['getApplications'](_0x22eddb);}})[_0xec48('0x3a')](function(_0x195903){if(_0x195903){_0x3afd98=_0x195903[_0xec48('0x51')];if(!_0x29ced1[_0xec48('0x4c')][_0xec48('0x70')]('nolimit')){_0x22eddb['limit']=qs[_0xec48('0x31')](_0x29ced1[_0xec48('0x4c')][_0xec48('0x31')]);_0x22eddb[_0xec48('0x30')]=qs['offset'](_0x29ced1[_0xec48('0x4c')][_0xec48('0x30')]);}return _0x1d11ef['getApplications'](_0x22eddb);}})[_0xec48('0x3a')](function(_0x24a975){if(_0x24a975){return _0x24a975?{'count':_0x3afd98,'rows':_0x24a975}:null;}})[_0xec48('0x3a')](respondWithResult(_0x313050,null))['catch'](handleError(_0x313050,null));};exports[_0xec48('0x9d')]=function(_0xc00a72,_0x132d3f,_0x308415){var _0x47d853={'raw':!![],'where':{}};var _0x265c53={};var _0x581b98={'count':0x0,'rows':[]};return db[_0xec48('0x5a')][_0xec48('0x6f')]({'where':{'id':_0xc00a72[_0xec48('0x60')]['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x132d3f,null))[_0xec48('0x3a')](function(_0xa64fb1){if(_0xa64fb1){_0x265c53[_0xec48('0x4b')]=_[_0xec48('0x4d')](db[_0xec48('0x9e')][_0xec48('0x49')]);_0x265c53['query']=_[_0xec48('0x4d')](_0xc00a72[_0xec48('0x4c')]);_0x265c53[_0xec48('0x56')]=_[_0xec48('0x4e')](_0x265c53[_0xec48('0x4b')],_0x265c53['query']);_0x47d853[_0xec48('0x4f')]=_[_0xec48('0x4e')](_0x265c53[_0xec48('0x4b')],qs[_0xec48('0x50')](_0xc00a72[_0xec48('0x4c')][_0xec48('0x50')]));_0x47d853[_0xec48('0x4f')]=_0x47d853['attributes']['length']?_0x47d853[_0xec48('0x4f')]:_0x265c53['model'];if(!_0xc00a72[_0xec48('0x4c')][_0xec48('0x70')](_0xec48('0x52'))){_0x47d853[_0xec48('0x31')]=qs[_0xec48('0x31')](_0xc00a72[_0xec48('0x4c')]['limit']);_0x47d853[_0xec48('0x30')]=qs[_0xec48('0x30')](_0xc00a72[_0xec48('0x4c')][_0xec48('0x30')]);}_0x47d853['order']=qs['sort'](_0xc00a72[_0xec48('0x4c')][_0xec48('0x54')]);_0x47d853['where']=qs[_0xec48('0x56')](_[_0xec48('0x57')](_0xc00a72[_0xec48('0x4c')],_0x265c53[_0xec48('0x56')]));_0x47d853[_0xec48('0x55')][_0xec48('0x69')]=_0xa64fb1['id'];if(_0xc00a72[_0xec48('0x4c')][_0xec48('0x58')]){_0x47d853['where']=_[_0xec48('0x62')](_0x47d853[_0xec48('0x55')],{'$or':_[_0xec48('0x48')](_0x47d853[_0xec48('0x4f')],function(_0x4a49fb){var _0x4a69a0={};_0x4a69a0[_0x4a49fb]={'$like':'%'+_0xc00a72[_0xec48('0x4c')][_0xec48('0x58')]+'%'};return _0x4a69a0;})});}if(_0xc00a72[_0xec48('0x4c')]['$gte']){var _0x3c3ed2=_0xc00a72[_0xec48('0x4c')][_0xec48('0x9f')][_0xec48('0xa0')](',');var _0x95abbe={};_0x95abbe[_0x3c3ed2[0x0]]={'$gte':moment(_0x3c3ed2[0x1])[_0xec48('0xa1')](_0xec48('0xa2'))};_0x47d853[_0xec48('0x55')]=_[_0xec48('0x62')](_0x47d853['where'],_0x95abbe);}_0x47d853=_['merge']({},_0x47d853,_0xc00a72[_0xec48('0x59')]);return db[_0xec48('0x9e')]['count']({'where':_0x47d853[_0xec48('0x55')]})[_0xec48('0x3a')](function(_0x586a97){_0x581b98['count']=_0x586a97;if(_0xc00a72[_0xec48('0x4c')]['includeAll']){_0x47d853['include']=[{'all':!![]}];}return db[_0xec48('0x9e')][_0xec48('0x5d')](_0x47d853);})[_0xec48('0x3a')](function(_0x519f5b){if(_0xc00a72[_0xec48('0x4c')][_0xec48('0xa3')]===_0xec48('0xa4')){for(var _0x15dfa5=0x0;_0x15dfa5<_0x519f5b['length'];_0x15dfa5++){_0x519f5b[_0x15dfa5][_0xec48('0x64')]=juice(_0x519f5b[_0x15dfa5][_0xec48('0x64')]);}}_0x581b98[_0xec48('0x5e')]=_0x519f5b;return _0x581b98;});}})[_0xec48('0x3a')](respondWithFilteredResult(_0x132d3f,_0x47d853))[_0xec48('0x2b')](handleError(_0x132d3f,null));};exports[_0xec48('0x41')]=function(_0x45137f,_0x3fc25c,_0x5b7ac4){var _0x5a743e,_0x27df5b={},_0x55df9b;if(_0x45137f[_0xec48('0x64')]['to']){_0x55df9b=_0x45137f[_0xec48('0x64')]['to']['split'](',')[0x0];}return db[_0xec48('0x5a')][_0xec48('0x63')]({'where':{'id':_0x45137f['params']['id']},'include':[{'model':db[_0xec48('0xa5')],'as':'List','include':[{'model':db[_0xec48('0x90')],'as':_0xec48('0xa6'),'where':{'email':_0x55df9b},'limit':0x1,'order':[[_0xec48('0xa7'),_0xec48('0xa8')]]}]},{'model':db[_0xec48('0x45')],'as':_0xec48('0x61'),'raw':!![]}]})[_0xec48('0x3a')](handleEntityNotFound(_0x3fc25c,null))[_0xec48('0x3a')](function(_0x11fd43){if(_0x11fd43){_0x5a743e=_0x11fd43;if(_0x11fd43[_0xec48('0x61')]){if(_['isNil'](_0x45137f[_0xec48('0x64')][_0xec48('0xa9')])){_0x45137f[_0xec48('0x64')]['from']=util['format'](_0xec48('0xaa'),_0x11fd43[_0xec48('0x40')],_0x11fd43[_0xec48('0x72')]||_0x11fd43[_0xec48('0x61')][_0xec48('0x77')]);}if(_0x45137f[_0xec48('0x64')]['attachments']&&_0x45137f[_0xec48('0x64')][_0xec48('0xab')][_0xec48('0x51')]){for(var _0x2cc770=0x0;_0x2cc770<_0x45137f[_0xec48('0x64')][_0xec48('0xab')]['length'];_0x2cc770+=0x1){_0x45137f['body'][_0xec48('0xab')][_0x2cc770]={'filename':_0x45137f['body'][_0xec48('0xab')][_0x2cc770]['name'],'path':path[_0xec48('0xac')](config[_0xec48('0xad')],'server/files/attachments',_0x45137f[_0xec48('0x64')][_0xec48('0xab')][_0x2cc770][_0xec48('0xae')])};}}var _0x433162={'tls':{'rejectUnauthorized':![]}};if(_[_0xec48('0x73')](_0x11fd43[_0xec48('0x61')][_0xec48('0x7e')])){if(_0x11fd43[_0xec48('0x61')]['authentication']){_0x433162[_0xec48('0xaf')]={'user':_0x11fd43['Smtp'][_0xec48('0x77')],'pass':_0x11fd43['Smtp']['pass']};}_0x433162[_0xec48('0x7c')]=_0x11fd43['Smtp']['host'];_0x433162[_0xec48('0x7d')]=_0x11fd43[_0xec48('0x61')]['port'];_0x433162['secure']=_0x11fd43[_0xec48('0x61')]['secure'];}else{_0x433162['service']=_0x11fd43[_0xec48('0x61')][_0xec48('0x7e')];_0x433162[_0xec48('0xaf')]={'user':_0x11fd43[_0xec48('0x61')][_0xec48('0x77')],'pass':_0x11fd43[_0xec48('0x61')]['pass']};}return respondWithRpcPromise(_0xec48('0xb0'),_0xec48('0xb1'),{'account':_0x433162,'message':_0x45137f['body']});}else{throw new Error(_0xec48('0xb2'));}}})['then'](function(_0x34c58b){if(_0x34c58b){_0x27df5b=_0x34c58b;if(_0x5a743e['List']){if(_0x5a743e['List']['Contacts'][_0xec48('0x51')]){return _0x5a743e[_0xec48('0xb3')][_0xec48('0xa6')][0x0];}else{return db[_0xec48('0x90')][_0xec48('0x67')](_[_0xec48('0x1c')](_0x45137f[_0xec48('0x64')],{'firstName':_0x45137f[_0xec48('0x64')]['to'],'email':_0x45137f[_0xec48('0x64')]['to'],'phone':_0x45137f[_0xec48('0x64')]['to'],'ListId':_0x5a743e['ListId']}));}}else{throw new Error(_0xec48('0xb2'));}}})[_0xec48('0x3a')](function(_0x2d9d6c){if(_0x2d9d6c){var _0x5c1c65={'UserId':_0x45137f[_0xec48('0x77')]['id'],'ContactId':_0x2d9d6c['id'],'MailAccountId':_0x5a743e['id'],'inReplyTo':_0x27df5b['messageId'],'to':_0x45137f[_0xec48('0x64')][_0xec48('0xa9')],'cc':_0x45137f[_0xec48('0x64')]['cc'],'subject':_0x45137f[_0xec48('0x64')][_0xec48('0xb4')],'attach':_0x45137f['body'][_0xec48('0xb5')],'firstMsgDirection':_0xec48('0xb6'),'lastMsgAt':moment()[_0xec48('0xa1')](_0xec48('0xa2')),'lastMsgDirection':_0xec48('0xb6'),'Messages':[_[_0xec48('0x62')](_0x45137f[_0xec48('0x64')],{'messageId':_0x27df5b[_0xec48('0xb7')],'sentAt':moment()[_0xec48('0xa1')](_0xec48('0xa2')),'read':!![],'MailAccountId':_0x5a743e['id'],'UserId':_0x45137f[_0xec48('0x77')]['id'],'ContactId':_0x2d9d6c['id']})]};if(_0x45137f[_0xec48('0x64')]['Interaction']){_0x5c1c65=_['merge'](_0x5c1c65,_0x45137f['body'][_0xec48('0xb8')]);}return db[_0xec48('0x8f')]['create'](_0x5c1c65,{'include':[{'model':db[_0xec48('0x9e')],'as':'Messages'}]});}})[_0xec48('0x3a')](respondWithResult(_0x3fc25c,null))[_0xec48('0x2b')](handleError(_0x3fc25c,null));};exports[_0xec48('0xb9')]=function(_0x217e67,_0x36ed0d,_0x40d897){return db[_0xec48('0x5a')]['find']({'where':{'id':_0x217e67[_0xec48('0x60')]['id']},'include':[{'model':db['MailServerOut'],'as':_0xec48('0x61'),'raw':!![]}]})[_0xec48('0x3a')](handleEntityNotFound(_0x36ed0d,null))['then'](function(_0x2f2ddd){if(_0x2f2ddd&&_0x2f2ddd[_0xec48('0x61')]){var _0x246ed2={'id':_0x2f2ddd['id'],'tls':{'rejectUnauthorized':![]}};if(_0x2f2ddd[_0xec48('0x61')][_0xec48('0x7e')]){_0x246ed2[_0xec48('0x7e')]=_0x2f2ddd[_0xec48('0x61')]['service'];}else{_0x246ed2[_0xec48('0x7c')]=_0x2f2ddd[_0xec48('0x61')][_0xec48('0x7c')];_0x246ed2[_0xec48('0x7d')]=_0x2f2ddd[_0xec48('0x61')][_0xec48('0x7d')];_0x246ed2['secure']=_0x2f2ddd[_0xec48('0x61')][_0xec48('0xba')];}if(_0x2f2ddd[_0xec48('0x61')][_0xec48('0x7b')]){_0x246ed2[_0xec48('0xaf')]={'user':_0x2f2ddd[_0xec48('0x61')][_0xec48('0x77')],'pass':_0x2f2ddd[_0xec48('0x61')][_0xec48('0x7f')]};}return respondWithRpcPromise(_0xec48('0xbb'),_0xec48('0xb9'),{'account':_0x246ed2});}})[_0xec48('0x3a')](respondWithResult(_0x36ed0d,null))['catch'](handleError(_0x36ed0d,null));};exports[_0xec48('0x3b')]=function(_0x5adec8,_0x1e1e8a){return db[_0xec48('0x5a')][_0xec48('0x63')]({'where':{'id':_0x5adec8[_0xec48('0x60')]['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x1e1e8a,null))['then'](function(_0x476c85){if(_0x476c85&&_0x476c85['service']){throw new db[(_0xec48('0xbc'))][(_0xec48('0xbd'))](_0xec48('0xbe'));}return _0x476c85;})[_0xec48('0x3a')](removeEntity(_0x1e1e8a,null))[_0xec48('0x2b')](handleError(_0x1e1e8a,null));};exports['addAgents']=function(_0x3b8b94,_0x305f0c,_0x42d61e){return db[_0xec48('0x5a')][_0xec48('0x63')]({'where':{'id':_0x3b8b94[_0xec48('0x60')]['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x305f0c,null))['then'](function(_0x3bfaff){if(_0x3bfaff){return _0x3bfaff[_0xec48('0xbf')](_0x3b8b94[_0xec48('0x64')][_0xec48('0x6b')],_[_0xec48('0x8d')](_0x3b8b94[_0xec48('0x64')],[_0xec48('0x6b'),'id'])||{})[_0xec48('0xc0')](function(_0x2212fe){for(var _0x36e3e1=0x0;_0x36e3e1<_0x3b8b94[_0xec48('0x64')][_0xec48('0x6b')][_0xec48('0x51')];_0x36e3e1+=0x1){socket[_0xec48('0xc1')]('userMailAccount:save',{'UserId':Number(_0x3b8b94[_0xec48('0x64')][_0xec48('0x6b')][_0x36e3e1]),'MailAccountId':Number(_0x3b8b94[_0xec48('0x60')]['id'])});}return _0x2212fe;});}})[_0xec48('0x3a')](respondWithResult(_0x305f0c,null))[_0xec48('0x2b')](handleError(_0x305f0c,null));};exports[_0xec48('0xc2')]=function(_0x516844,_0x43c730,_0x24f158){return db['MailAccount'][_0xec48('0x63')]({'where':{'id':_0x516844[_0xec48('0x60')]['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x43c730,null))[_0xec48('0x3a')](function(_0x4b4d43){if(_0x4b4d43){return _0x4b4d43['removeAgents'](_0x516844[_0xec48('0x4c')][_0xec48('0x6b')])[_0xec48('0x3a')](function(){if(_[_0xec48('0xc3')](_0x516844['query'][_0xec48('0x6b')])){for(var _0x4cfafa=0x0;_0x4cfafa<_0x516844[_0xec48('0x4c')][_0xec48('0x6b')][_0xec48('0x51')];_0x4cfafa+=0x1){socket[_0xec48('0xc1')](_0xec48('0xc4'),{'UserId':Number(_0x516844['query'][_0xec48('0x6b')][_0x4cfafa]),'MailAccountId':Number(_0x516844[_0xec48('0x60')]['id'])});}}else{socket['emit']('userMailAccount:remove',{'UserId':Number(_0x516844[_0xec48('0x4c')][_0xec48('0x6b')]),'MailAccountId':Number(_0x516844[_0xec48('0x60')]['id'])});}});}})['then'](respondWithStatusCode(_0x43c730,null))[_0xec48('0x2b')](handleError(_0x43c730,null));};exports[_0xec48('0xc5')]=function(_0x114660,_0x20cecc,_0x35ea56){var _0x3cb205={};var _0x33bcf5={};var _0x1694ee;var _0x4665d9;return db[_0xec48('0x5a')][_0xec48('0x6f')]({'where':{'id':_0x114660[_0xec48('0x60')]['id']}})[_0xec48('0x3a')](handleEntityNotFound(_0x20cecc,null))[_0xec48('0x3a')](function(_0x42d5ac){if(_0x42d5ac){_0x1694ee=_0x42d5ac;_0x33bcf5[_0xec48('0x4b')]=_[_0xec48('0x4d')](db['User']['rawAttributes']);_0x33bcf5[_0xec48('0x4c')]=_[_0xec48('0x4d')](_0x114660[_0xec48('0x4c')]);_0x33bcf5[_0xec48('0x56')]=_[_0xec48('0x4e')](_0x33bcf5[_0xec48('0x4b')],_0x33bcf5['query']);_0x3cb205[_0xec48('0x4f')]=_[_0xec48('0x4e')](_0x33bcf5['model'],qs[_0xec48('0x50')](_0x114660['query'][_0xec48('0x50')]));_0x3cb205['attributes']=_0x3cb205['attributes'][_0xec48('0x51')]?_0x3cb205[_0xec48('0x4f')]:_0x33bcf5[_0xec48('0x4b')];_0x3cb205[_0xec48('0x53')]=qs[_0xec48('0x54')](_0x114660[_0xec48('0x4c')][_0xec48('0x54')]);_0x3cb205[_0xec48('0x55')]=qs[_0xec48('0x56')](_[_0xec48('0x57')](_0x114660[_0xec48('0x4c')],_0x33bcf5['filters']));if(_0x114660['query']['filter']){_0x3cb205[_0xec48('0x55')]=_['merge'](_0x3cb205['where'],{'$or':_[_0xec48('0x48')](_0x3cb205['attributes'],function(_0x96d40f){var _0x58815f={};_0x58815f[_0x96d40f]={'$like':'%'+_0x114660[_0xec48('0x4c')][_0xec48('0x58')]+'%'};return _0x58815f;})});}_0x3cb205=_[_0xec48('0x62')]({},_0x3cb205,_0x114660[_0xec48('0x59')]);return _0x1694ee[_0xec48('0xc5')](_0x3cb205);}})[_0xec48('0x3a')](function(_0x47401d){if(_0x47401d){_0x4665d9=_0x47401d[_0xec48('0x51')];if(!_0x114660[_0xec48('0x4c')][_0xec48('0x70')]('nolimit')){_0x3cb205[_0xec48('0x31')]=qs['limit'](_0x114660[_0xec48('0x4c')]['limit']);_0x3cb205[_0xec48('0x30')]=qs[_0xec48('0x30')](_0x114660['query']['offset']);}return _0x1694ee[_0xec48('0xc5')](_0x3cb205);}})[_0xec48('0x3a')](function(_0x3c28e9){if(_0x3c28e9){return _0x3c28e9?{'count':_0x4665d9,'rows':_0x3c28e9}:null;}})[_0xec48('0x3a')](respondWithResult(_0x20cecc,null))[_0xec48('0x2b')](handleError(_0x20cecc,null));};
\ No newline at end of file
index 7891737..db3ce09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9de8=['remove','emit','exports','events','MailAccount','setMaxListeners','update'];(function(_0x562c92,_0x3e518d){var _0x2cf254=function(_0x10e224){while(--_0x10e224){_0x562c92['push'](_0x562c92['shift']());}};_0x2cf254(++_0x3e518d);}(_0x9de8,0x88));var _0x89de=function(_0x49d429,_0xfed4ff){_0x49d429=_0x49d429-0x0;var _0x8d0597=_0x9de8[_0x49d429];return _0x8d0597;};'use strict';var EventEmitter=require(_0x89de('0x0'));var MailAccount=require('../../mysqldb')['db'][_0x89de('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x89de('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x89de('0x3'),'afterDestroy':_0x89de('0x4')};function emitEvent(_0x6d22bc){return function(_0xb5a4ca,_0x5275c7,_0x56aa33){MailAccountEvents[_0x89de('0x5')](_0x6d22bc+':'+_0xb5a4ca['id'],_0xb5a4ca);MailAccountEvents['emit'](_0x6d22bc,_0xb5a4ca);_0x56aa33(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailAccount['hook'](e,emitEvent(event));}}module[_0x89de('0x6')]=MailAccountEvents;
\ No newline at end of file
+var _0x8458=['save','update','remove','emit','hook','events','MailAccount','setMaxListeners'];(function(_0x48cb1f,_0x5ca68d){var _0x172c4d=function(_0x85040){while(--_0x85040){_0x48cb1f['push'](_0x48cb1f['shift']());}};_0x172c4d(++_0x5ca68d);}(_0x8458,0x1a5));var _0x8845=function(_0x1191df,_0x599a64){_0x1191df=_0x1191df-0x0;var _0x3e8062=_0x8458[_0x1191df];return _0x3e8062;};'use strict';var EventEmitter=require(_0x8845('0x0'));var MailAccount=require('../../mysqldb')['db'][_0x8845('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x8845('0x2')](0x0);var events={'afterCreate':_0x8845('0x3'),'afterUpdate':_0x8845('0x4'),'afterDestroy':_0x8845('0x5')};function emitEvent(_0x59f76e){return function(_0x7cbf08,_0x93cad4,_0x3db980){MailAccountEvents[_0x8845('0x6')](_0x59f76e+':'+_0x7cbf08['id'],_0x7cbf08);MailAccountEvents[_0x8845('0x6')](_0x59f76e,_0x7cbf08);_0x3db980(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailAccount[_0x8845('0x7')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
index fd37cc9..015f4d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca91=['../../config/environment','./mailAccount.attributes','MailAccount','mail_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3ff5e6,_0x419099){var _0xfbc4fd=function(_0x6fb7){while(--_0x6fb7){_0x3ff5e6['push'](_0x3ff5e6['shift']());}};_0xfbc4fd(++_0x419099);}(_0xca91,0x154));var _0x1ca9=function(_0x390733,_0x1e3d32){_0x390733=_0x390733-0x0;var _0x33beb9=_0xca91[_0x390733];return _0x33beb9;};'use strict';var _=require(_0x1ca9('0x0'));var util=require(_0x1ca9('0x1'));var logger=require(_0x1ca9('0x2'))(_0x1ca9('0x3'));var moment=require(_0x1ca9('0x4'));var BPromise=require(_0x1ca9('0x5'));var rp=require(_0x1ca9('0x6'));var fs=require('fs');var path=require(_0x1ca9('0x7'));var rimraf=require('rimraf');var config=require(_0x1ca9('0x8'));var attributes=require(_0x1ca9('0x9'));module['exports']=function(_0xc637d2,_0x586707){return _0xc637d2['define'](_0x1ca9('0xa'),attributes,{'tableName':_0x1ca9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0880=['lodash','util','api','moment','bluebird','rimraf','../../config/environment','./mailAccount.attributes','exports','define','MailAccount','mail_accounts'];(function(_0x3032fb,_0x51d411){var _0x160973=function(_0x174dff){while(--_0x174dff){_0x3032fb['push'](_0x3032fb['shift']());}};_0x160973(++_0x51d411);}(_0x0880,0x1ec));var _0x0088=function(_0x48df04,_0x1522b1){_0x48df04=_0x48df04-0x0;var _0x4de5fa=_0x0880[_0x48df04];return _0x4de5fa;};'use strict';var _=require(_0x0088('0x0'));var util=require(_0x0088('0x1'));var logger=require('../../config/logger')(_0x0088('0x2'));var moment=require(_0x0088('0x3'));var BPromise=require(_0x0088('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0088('0x5'));var config=require(_0x0088('0x6'));var attributes=require(_0x0088('0x7'));module[_0x0088('0x8')]=function(_0x1387b8,_0x42f761){return _0x1387b8[_0x0088('0x9')](_0x0088('0xa'),attributes,{'tableName':_0x0088('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2abf186..9b5d68b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8911=['lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','http','defaults','socket.io-emitter','./mailAccount.socket','register','request','then','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetMailAccount','MailAccount','findAll','options','where','attributes','limit','map','include','model','ShowMailAccount','find','raw','catch','NotifyMailAccount','body','mail','difference','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','Contacts','DESC','MailServerOut','Smtp','get','Applications','applications','list','List','orderBy','priority','asc','push','length','autoclose','*,*,*,*','List\x20not\x20found','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','create','Contact\x20not\x20found','spread','update','attach','interaction','created','contact','originTo','originCc','bcc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting'];(function(_0x37a79c,_0x2b19f0){var _0x561d89=function(_0x19bee3){while(--_0x19bee3){_0x37a79c['push'](_0x37a79c['shift']());}};_0x561d89(++_0x2b19f0);}(_0x8911,0x141));var _0x1891=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8911[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x1891('0x0'));var util=require(_0x1891('0x1'));var moment=require(_0x1891('0x2'));var BPromise=require(_0x1891('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1891('0x4'))['db'];var utils=require(_0x1891('0x5'));var logger=require('../../config/logger')(_0x1891('0x6'));var config=require(_0x1891('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1891('0x8')]({'port':0x232c});config['redis']=_[_0x1891('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x1891('0xa'))(new Redis(config['redis']));require(_0x1891('0xb'))[_0x1891('0xc')](socket);function respondWithRpcPromise(_0x4b6c40,_0x1a9a35,_0x178951){return new BPromise(function(_0x489334,_0x27319a){return client[_0x1891('0xd')](_0x4b6c40,_0x178951)[_0x1891('0xe')](function(_0x26195a){logger[_0x1891('0xf')](_0x1891('0x10'),_0x1a9a35,'request\x20sent');logger[_0x1891('0x11')](_0x1891('0x12'),_0x1a9a35,'request\x20sent',JSON[_0x1891('0x13')](_0x26195a));if(_0x26195a['error']){if(_0x26195a[_0x1891('0x14')][_0x1891('0x15')]===0x1f4){logger['error'](_0x1891('0x10'),_0x1a9a35,_0x26195a[_0x1891('0x14')][_0x1891('0x16')]);return _0x27319a(_0x26195a[_0x1891('0x14')]['message']);}logger[_0x1891('0x14')](_0x1891('0x10'),_0x1a9a35,_0x26195a[_0x1891('0x14')][_0x1891('0x16')]);return _0x489334(_0x26195a['error']['message']);}else{logger['info'](_0x1891('0x10'),_0x1a9a35,'request\x20sent');_0x489334(_0x26195a['result'][_0x1891('0x16')]);}})['catch'](function(_0x2577e4){logger[_0x1891('0x14')](_0x1891('0x10'),_0x1a9a35,_0x2577e4);_0x27319a(_0x2577e4);});});}exports[_0x1891('0x17')]=function(_0x3d4f7f){var _0x48a8bf=this;return new Promise(function(_0x53105e,_0x59c6fa){return db[_0x1891('0x18')][_0x1891('0x19')]({'raw':_0x3d4f7f[_0x1891('0x1a')]?_0x3d4f7f[_0x1891('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x3d4f7f[_0x1891('0x1a')]?_0x3d4f7f[_0x1891('0x1a')][_0x1891('0x1b')]||null:null,'attributes':_0x3d4f7f[_0x1891('0x1a')]?_0x3d4f7f['options'][_0x1891('0x1c')]||null:null,'limit':_0x3d4f7f[_0x1891('0x1a')]?_0x3d4f7f[_0x1891('0x1a')][_0x1891('0x1d')]||null:null,'include':_0x3d4f7f['options']?_0x3d4f7f[_0x1891('0x1a')]['include']?_[_0x1891('0x1e')](_0x3d4f7f[_0x1891('0x1a')][_0x1891('0x1f')],function(_0x5492e4){return{'model':db[_0x5492e4['model']],'as':_0x5492e4['as'],'attributes':_0x5492e4[_0x1891('0x1c')],'include':_0x5492e4[_0x1891('0x1f')]?_['map'](_0x5492e4[_0x1891('0x1f')],function(_0x3fc401){return{'model':db[_0x3fc401['model']],'as':_0x3fc401['as'],'attributes':_0x3fc401[_0x1891('0x1c')],'include':_0x3fc401[_0x1891('0x1f')]?_[_0x1891('0x1e')](_0x3fc401[_0x1891('0x1f')],function(_0x2c6aa8){return{'model':db[_0x2c6aa8[_0x1891('0x20')]],'as':_0x2c6aa8['as'],'attributes':_0x2c6aa8[_0x1891('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x22d1a8){logger['info'](_0x1891('0x17'),_0x3d4f7f);logger['debug'](_0x1891('0x17'),_0x3d4f7f,JSON[_0x1891('0x13')](_0x22d1a8));_0x53105e(_0x22d1a8);})['catch'](function(_0x3c1e1b){logger[_0x1891('0x14')](_0x1891('0x17'),_0x3c1e1b[_0x1891('0x16')],_0x3d4f7f);_0x59c6fa(_0x48a8bf['error'](0x1f4,_0x3c1e1b['message']));});});};exports[_0x1891('0x21')]=function(_0x969557){var _0x48c0b3=this;return new Promise(function(_0x49b1f3,_0x4aabd3){return db[_0x1891('0x18')][_0x1891('0x22')]({'raw':_0x969557[_0x1891('0x1a')]?_0x969557['options'][_0x1891('0x23')]===undefined?!![]:![]:!![],'where':_0x969557[_0x1891('0x1a')]?_0x969557['options'][_0x1891('0x1b')]||null:null,'attributes':_0x969557[_0x1891('0x1a')]?_0x969557['options'][_0x1891('0x1c')]||null:null,'include':_0x969557['options']?_0x969557[_0x1891('0x1a')]['include']?_['map'](_0x969557['options']['include'],function(_0x3cb1a9){return{'model':db[_0x3cb1a9['model']],'as':_0x3cb1a9['as'],'attributes':_0x3cb1a9[_0x1891('0x1c')],'include':_0x3cb1a9[_0x1891('0x1f')]?_['map'](_0x3cb1a9['include'],function(_0x3c48e4){return{'model':db[_0x3c48e4[_0x1891('0x20')]],'as':_0x3c48e4['as'],'attributes':_0x3c48e4['attributes'],'include':_0x3c48e4[_0x1891('0x1f')]?_[_0x1891('0x1e')](_0x3c48e4[_0x1891('0x1f')],function(_0x395e3b){return{'model':db[_0x395e3b[_0x1891('0x20')]],'as':_0x395e3b['as'],'attributes':_0x395e3b[_0x1891('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x1891('0xe')](function(_0x28e0df){logger[_0x1891('0xf')](_0x1891('0x21'),_0x969557);logger[_0x1891('0x11')](_0x1891('0x21'),_0x969557,JSON[_0x1891('0x13')](_0x28e0df));_0x49b1f3(_0x28e0df);})[_0x1891('0x24')](function(_0x18ef9c){logger[_0x1891('0x14')]('ShowMailAccount',_0x18ef9c[_0x1891('0x16')],_0x969557);_0x4aabd3(_0x48c0b3[_0x1891('0x14')](0x1f4,_0x18ef9c[_0x1891('0x16')]));});});};exports[_0x1891('0x25')]=function(_0x39dfbd){var _0x39938b=this;return new Promise(function(_0x43b94d,_0x458e5e){var _0x48c58d={'body':_0x39dfbd[_0x1891('0x26')],'channel':_0x1891('0x27')};var _0x4b8b88=_[_0x1891('0x28')](_['keys'](db[_0x1891('0x29')][_0x1891('0x2a')]),[_0x1891('0x2b'),_0x1891('0x2c'),_0x1891('0x2d'),_0x1891('0x2e')]);var _0x31e173=![];if(_0x39dfbd[_0x1891('0x26')]['id']){delete _0x39dfbd[_0x1891('0x26')]['id'];}if(_['isNil'](_0x39dfbd['body'][_0x1891('0x2f')])){return _0x458e5e(_0x39938b[_0x1891('0x14')](0x1f4,_0x1891('0x30')));}if(_[_0x1891('0x31')](_0x39dfbd['body']['body'])||_0x39dfbd[_0x1891('0x26')][_0x1891('0x26')]===''){return _0x458e5e(_0x39938b[_0x1891('0x14')](0x1f4,_0x1891('0x32')));}if(_[_0x1891('0x31')](_0x39dfbd[_0x1891('0x26')][_0x1891('0x33')])){return _0x458e5e(_0x39938b[_0x1891('0x14')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4b8b88));}if(!_[_0x1891('0x34')](_0x4b8b88,_0x39dfbd['body'][_0x1891('0x33')])){return _0x458e5e(_0x39938b['error'](0x1f4,_0x1891('0x35')+_0x4b8b88));}var _0x30e796={};_0x30e796[_0x39dfbd['body'][_0x1891('0x33')]]=_0x39dfbd['body']['from'];return db['MailAccount'][_0x1891('0x22')]({'where':{'id':_0x39dfbd[_0x1891('0x36')]['id']},'include':[{'model':db[_0x1891('0x37')],'as':'List','include':[{'model':db[_0x1891('0x29')],'as':_0x1891('0x38'),'where':_0x30e796,'limit':0x1,'order':[['updatedAt',_0x1891('0x39')]]}]},{'model':db['MailApplication'],'as':'Applications'},{'model':db[_0x1891('0x3a')],'as':_0x1891('0x3b')}]})[_0x1891('0xe')](function(_0x4427b2){if(_0x4427b2&&_0x4427b2['List']){var _0x2c92fe=_0x4427b2[_0x1891('0x3c')]({'plain':!![]});_0x48c58d[_0x1891('0x36')]=_['omit'](_0x2c92fe,[_0x1891('0x3d'),'List']);_0x48c58d[_0x1891('0x3e')]=_0x2c92fe[_0x1891('0x3d')];_0x48c58d[_0x1891('0x3f')]=_0x2c92fe[_0x1891('0x40')];_0x48c58d[_0x1891('0x3e')]=_[_0x1891('0x41')](_0x48c58d[_0x1891('0x3e')],[_0x1891('0x42')],[_0x1891('0x43')]);if(_0x48c58d[_0x1891('0x36')]&&_0x48c58d[_0x1891('0x36')]['autoclose']){_0x48c58d[_0x1891('0x3e')][_0x1891('0x44')]({'id':0x0,'priority':_0x48c58d[_0x1891('0x3e')][_0x1891('0x45')]+0x1,'app':'close','appdata':_0x1891('0x46'),'interval':_0x1891('0x47')});}if(_0x48c58d[_0x1891('0x36')][_0x1891('0x3d')]){delete _0x48c58d['account'][_0x1891('0x3d')];}if(_0x48c58d[_0x1891('0x36')][_0x1891('0x40')]){delete _0x48c58d[_0x1891('0x36')]['List'];}if(_0x2c92fe['List'][_0x1891('0x38')]['length']){return _0x2c92fe[_0x1891('0x40')][_0x1891('0x38')][0x0];}var _0x5ab515=_[_0x1891('0x9')](_0x39dfbd[_0x1891('0x26')],{'firstName':_0x39dfbd[_0x1891('0x26')]['from'],'ListId':_0x2c92fe['ListId']});_0x5ab515[_0x39dfbd['body'][_0x1891('0x33')]]=_0x39dfbd[_0x1891('0x26')][_0x1891('0x2f')];return db[_0x1891('0x29')]['create'](_0x5ab515);}else{throw new Error(_0x1891('0x48'));}})[_0x1891('0xe')](function(_0x44b2f3){_0x48c58d['contact']=_0x44b2f3;if(_0x44b2f3){if(!_0x39dfbd[_0x1891('0x26')]['message']['messageId']){_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x49')]=rs[_0x1891('0x4a')]()+'\x20'+_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x2f')];}var _0x4dacb8={'ContactId':_0x44b2f3['id'],'MailAccountId':_0x39dfbd['account']['id'],'inReplyTo':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x49')],'to':_0x39dfbd[_0x1891('0x26')]['message'][_0x1891('0x2f')],'cc':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['cc'],'subject':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x4b')],'attach':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['attach'],'lastMsgAt':moment()[_0x1891('0x4c')](_0x1891('0x4d')),'lastMsgDirection':'in'};return db[_0x1891('0x4e')][_0x1891('0x22')]({'where':{'closed':![],'MailAccountId':_0x39dfbd[_0x1891('0x36')]['id']},'include':[{'model':db[_0x1891('0x4f')],'as':_0x1891('0x50'),'attributes':[_0x1891('0x49')],'where':{'messageId':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x51')]}}]})[_0x1891('0xe')](function(_0x4bd724){if(_0x4bd724){return[_0x4bd724,![]];}return db[_0x1891('0x4e')][_0x1891('0x52')](_0x4dacb8)[_0x1891('0xe')](function(_0x5ef911){return[_0x5ef911,!![]];});});}else{throw new Error(_0x1891('0x53'));}})[_0x1891('0x54')](function(_0x5540bf,_0x48cf59){if(_0x5540bf){_0x31e173=_0x48cf59;if(!_0x48cf59){return _0x5540bf[_0x1891('0x55')]({'inReplyTo':_0x39dfbd[_0x1891('0x26')]['message'][_0x1891('0x49')],'to':_0x39dfbd['body'][_0x1891('0x16')][_0x1891('0x2f')],'cc':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['cc'],'subject':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['subject'],'attach':_0x5540bf['attach']?_0x5540bf[_0x1891('0x56')]:_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['attach'],'substatus':null,'substatusAt':moment()[_0x1891('0x4c')](_0x1891('0x4d')),'lastMsgAt':moment()[_0x1891('0x4c')](_0x1891('0x4d')),'lastMsgDirection':'in'});}else{return _0x5540bf;}}})[_0x1891('0xe')](function(_0x5204e4){_0x48c58d[_0x1891('0x57')]=_0x5204e4['get']({'plain':!![]});_0x48c58d[_0x1891('0x57')][_0x1891('0x58')]=_0x31e173;return db[_0x1891('0x4f')][_0x1891('0x52')]({'body':_0x39dfbd[_0x1891('0x26')][_0x1891('0x26')],'MailAccountId':_0x39dfbd['account']['id'],'MailInteractionId':_0x5204e4['id'],'direction':'in','ContactId':_0x48c58d[_0x1891('0x59')]['id'],'messageId':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x49')],'from':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['from'],'to':_0x39dfbd[_0x1891('0x26')]['message']['to'],'cc':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['cc'],'subject':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['subject'],'attach':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x56')],'Attachments':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')]['attachments'],'originTo':_0x39dfbd[_0x1891('0x26')]['message'][_0x1891('0x5a')],'originCc':_0x39dfbd[_0x1891('0x26')]['message'][_0x1891('0x5b')],'bcc':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x5c')],'ChatWebsiteId':_0x39dfbd[_0x1891('0x26')]['message'][_0x1891('0x5d')]||null,'originChannel':_0x39dfbd['body'][_0x1891('0x16')][_0x1891('0x5e')]||_0x1891('0x5f'),'ChatOfflineMessageId':_0x39dfbd[_0x1891('0x26')][_0x1891('0x16')][_0x1891('0x60')]||null},{'include':[{'model':db[_0x1891('0x61')],'as':_0x1891('0x62')}]});})[_0x1891('0xe')](function(_0x4ca8cf){_0x48c58d['message']=_0x4ca8cf;if(_0x48c58d[_0x1891('0x57')][_0x1891('0x63')]){return db[_0x1891('0x64')][_0x1891('0x22')]({'attributes':['id',_0x1891('0x65')],'where':{'id':_0x48c58d[_0x1891('0x57')][_0x1891('0x63')]}})[_0x1891('0xe')](function(_0x2c693a){if(_0x2c693a){_0x48c58d['applications'][_0x1891('0x66')]({'id':0x0,'priority':0x0,'app':_0x1891('0x67'),'appdata':_0x2c693a['name']+','+(_0x48c58d[_0x1891('0x36')][_0x1891('0x68')]||0xa),'interval':_0x1891('0x47')});}return respondWithRpcPromise('Start','startRouting',_0x48c58d);});}return respondWithRpcPromise(_0x1891('0x69'),_0x1891('0x6a'),_0x48c58d);})[_0x1891('0xe')](function(_0x1e28fd){_0x43b94d(_0x1e28fd);})[_0x1891('0x24')](function(_0x5d09d6){_0x458e5e(_0x39938b[_0x1891('0x14')](0x1f4,_0x5d09d6[_0x1891('0x16')]));});});};
\ No newline at end of file
+var _0xacf3=['request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetMailAccount','MailAccount','findAll','options','raw','where','limit','include','model','map','attributes','ShowMailAccount','find','stringify','NotifyMailAccount','body','mail','difference','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','account','Contacts','DESC','MailApplication','Applications','MailServerOut','Smtp','List','omit','applications','list','orderBy','autoclose','length','create','List\x20not\x20found','contact','messageId','generate','attach','format','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','YYYY-MM-DD\x20HH:mm:ss','interaction','get','created','subject','attachments','originTo','originCc','originChannel','Email','Attachment','Attachments','UserId','name','unshift','agent','waitForTheAssignedAgent','startRouting','moment','bluebird','randomstring','../../config/utils','rpc','jayson/promise','http','redis','localhost','./mailAccount.socket','register','then','info','MailAccount,\x20%s,\x20%s'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xacf3,0x115));var _0x3acf=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xacf3[_0x27af45];return _0x18df21;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3acf('0x0'));var BPromise=require(_0x3acf('0x1'));var rs=require(_0x3acf('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3acf('0x3'));var logger=require('../../config/logger')(_0x3acf('0x4'));var config=require('../../config/environment');var jayson=require(_0x3acf('0x5'));var client=jayson['client'][_0x3acf('0x6')]({'port':0x232c});config['redis']=_['defaults'](config[_0x3acf('0x7')],{'host':_0x3acf('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3acf('0x7')]));require(_0x3acf('0x9'))[_0x3acf('0xa')](socket);function respondWithRpcPromise(_0x14113b,_0x130988,_0xe048e4){return new BPromise(function(_0x492a63,_0x5ad041){return client['request'](_0x14113b,_0xe048e4)[_0x3acf('0xb')](function(_0x20267f){logger[_0x3acf('0xc')](_0x3acf('0xd'),_0x130988,_0x3acf('0xe'));logger[_0x3acf('0xf')](_0x3acf('0x10'),_0x130988,'request\x20sent',JSON['stringify'](_0x20267f));if(_0x20267f[_0x3acf('0x11')]){if(_0x20267f['error'][_0x3acf('0x12')]===0x1f4){logger[_0x3acf('0x11')](_0x3acf('0xd'),_0x130988,_0x20267f['error'][_0x3acf('0x13')]);return _0x5ad041(_0x20267f[_0x3acf('0x11')][_0x3acf('0x13')]);}logger['error']('MailAccount,\x20%s,\x20%s',_0x130988,_0x20267f[_0x3acf('0x11')][_0x3acf('0x13')]);return _0x492a63(_0x20267f[_0x3acf('0x11')]['message']);}else{logger['info'](_0x3acf('0xd'),_0x130988,'request\x20sent');_0x492a63(_0x20267f['result'][_0x3acf('0x13')]);}})[_0x3acf('0x14')](function(_0x12c5f5){logger[_0x3acf('0x11')](_0x3acf('0xd'),_0x130988,_0x12c5f5);_0x5ad041(_0x12c5f5);});});}exports[_0x3acf('0x15')]=function(_0x403951){var _0x346d69=this;return new Promise(function(_0x5c260b,_0x505396){return db[_0x3acf('0x16')][_0x3acf('0x17')]({'raw':_0x403951[_0x3acf('0x18')]?_0x403951['options'][_0x3acf('0x19')]===undefined?!![]:![]:!![],'where':_0x403951['options']?_0x403951['options'][_0x3acf('0x1a')]||null:null,'attributes':_0x403951['options']?_0x403951[_0x3acf('0x18')]['attributes']||null:null,'limit':_0x403951[_0x3acf('0x18')]?_0x403951[_0x3acf('0x18')][_0x3acf('0x1b')]||null:null,'include':_0x403951[_0x3acf('0x18')]?_0x403951[_0x3acf('0x18')][_0x3acf('0x1c')]?_['map'](_0x403951[_0x3acf('0x18')][_0x3acf('0x1c')],function(_0x3df5e9){return{'model':db[_0x3df5e9[_0x3acf('0x1d')]],'as':_0x3df5e9['as'],'attributes':_0x3df5e9['attributes'],'include':_0x3df5e9[_0x3acf('0x1c')]?_[_0x3acf('0x1e')](_0x3df5e9['include'],function(_0x1d8bcf){return{'model':db[_0x1d8bcf[_0x3acf('0x1d')]],'as':_0x1d8bcf['as'],'attributes':_0x1d8bcf[_0x3acf('0x1f')],'include':_0x1d8bcf[_0x3acf('0x1c')]?_['map'](_0x1d8bcf[_0x3acf('0x1c')],function(_0x36d24c){return{'model':db[_0x36d24c[_0x3acf('0x1d')]],'as':_0x36d24c['as'],'attributes':_0x36d24c[_0x3acf('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x3acf('0xb')](function(_0x57d45a){logger[_0x3acf('0xc')](_0x3acf('0x15'),_0x403951);logger[_0x3acf('0xf')](_0x3acf('0x15'),_0x403951,JSON['stringify'](_0x57d45a));_0x5c260b(_0x57d45a);})[_0x3acf('0x14')](function(_0x304a39){logger[_0x3acf('0x11')](_0x3acf('0x15'),_0x304a39[_0x3acf('0x13')],_0x403951);_0x505396(_0x346d69[_0x3acf('0x11')](0x1f4,_0x304a39[_0x3acf('0x13')]));});});};exports[_0x3acf('0x20')]=function(_0x2dc24c){var _0x2c99c3=this;return new Promise(function(_0x380210,_0x2e1f65){return db[_0x3acf('0x16')][_0x3acf('0x21')]({'raw':_0x2dc24c[_0x3acf('0x18')]?_0x2dc24c[_0x3acf('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x2dc24c[_0x3acf('0x18')]?_0x2dc24c[_0x3acf('0x18')]['where']||null:null,'attributes':_0x2dc24c[_0x3acf('0x18')]?_0x2dc24c['options'][_0x3acf('0x1f')]||null:null,'include':_0x2dc24c['options']?_0x2dc24c[_0x3acf('0x18')][_0x3acf('0x1c')]?_[_0x3acf('0x1e')](_0x2dc24c[_0x3acf('0x18')][_0x3acf('0x1c')],function(_0x5a372d){return{'model':db[_0x5a372d[_0x3acf('0x1d')]],'as':_0x5a372d['as'],'attributes':_0x5a372d[_0x3acf('0x1f')],'include':_0x5a372d[_0x3acf('0x1c')]?_[_0x3acf('0x1e')](_0x5a372d['include'],function(_0x4ec9d6){return{'model':db[_0x4ec9d6[_0x3acf('0x1d')]],'as':_0x4ec9d6['as'],'attributes':_0x4ec9d6[_0x3acf('0x1f')],'include':_0x4ec9d6[_0x3acf('0x1c')]?_[_0x3acf('0x1e')](_0x4ec9d6[_0x3acf('0x1c')],function(_0x25b126){return{'model':db[_0x25b126['model']],'as':_0x25b126['as'],'attributes':_0x25b126[_0x3acf('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xf5095f){logger[_0x3acf('0xc')](_0x3acf('0x20'),_0x2dc24c);logger[_0x3acf('0xf')](_0x3acf('0x20'),_0x2dc24c,JSON[_0x3acf('0x22')](_0xf5095f));_0x380210(_0xf5095f);})[_0x3acf('0x14')](function(_0x244b95){logger[_0x3acf('0x11')](_0x3acf('0x20'),_0x244b95[_0x3acf('0x13')],_0x2dc24c);_0x2e1f65(_0x2c99c3['error'](0x1f4,_0x244b95[_0x3acf('0x13')]));});});};exports[_0x3acf('0x23')]=function(_0x2ff924){var _0x2c3387=this;return new Promise(function(_0x343f80,_0x4f6541){var _0x3a503e={'body':_0x2ff924[_0x3acf('0x24')],'channel':_0x3acf('0x25')};var _0x24a2c1=_[_0x3acf('0x26')](_['keys'](db[_0x3acf('0x27')][_0x3acf('0x28')]),[_0x3acf('0x29'),_0x3acf('0x2a'),_0x3acf('0x2b'),_0x3acf('0x2c')]);var _0x166f6d=![];if(_0x2ff924[_0x3acf('0x24')]['id']){delete _0x2ff924[_0x3acf('0x24')]['id'];}if(_[_0x3acf('0x2d')](_0x2ff924[_0x3acf('0x24')][_0x3acf('0x2e')])){return _0x4f6541(_0x2c3387[_0x3acf('0x11')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x3acf('0x2d')](_0x2ff924['body'][_0x3acf('0x24')])||_0x2ff924['body'][_0x3acf('0x24')]===''){return _0x4f6541(_0x2c3387[_0x3acf('0x11')](0x1f4,_0x3acf('0x2f')));}if(_[_0x3acf('0x2d')](_0x2ff924[_0x3acf('0x24')]['mapKey'])){return _0x4f6541(_0x2c3387[_0x3acf('0x11')](0x1f4,_0x3acf('0x30')+_0x24a2c1));}if(!_[_0x3acf('0x31')](_0x24a2c1,_0x2ff924[_0x3acf('0x24')]['mapKey'])){return _0x4f6541(_0x2c3387[_0x3acf('0x11')](0x1f4,_0x3acf('0x32')+_0x24a2c1));}var _0x2714ee={};_0x2714ee[_0x2ff924[_0x3acf('0x24')][_0x3acf('0x33')]]=_0x2ff924[_0x3acf('0x24')]['from'];return db[_0x3acf('0x16')][_0x3acf('0x21')]({'where':{'id':_0x2ff924[_0x3acf('0x34')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x3acf('0x27')],'as':_0x3acf('0x35'),'where':_0x2714ee,'limit':0x1,'order':[[_0x3acf('0x2a'),_0x3acf('0x36')]]}]},{'model':db[_0x3acf('0x37')],'as':_0x3acf('0x38')},{'model':db[_0x3acf('0x39')],'as':_0x3acf('0x3a')}]})['then'](function(_0x5cb0e0){if(_0x5cb0e0&&_0x5cb0e0[_0x3acf('0x3b')]){var _0x1bde14=_0x5cb0e0['get']({'plain':!![]});_0x3a503e[_0x3acf('0x34')]=_[_0x3acf('0x3c')](_0x1bde14,[_0x3acf('0x38'),_0x3acf('0x3b')]);_0x3a503e[_0x3acf('0x3d')]=_0x1bde14['Applications'];_0x3a503e[_0x3acf('0x3e')]=_0x1bde14['List'];_0x3a503e[_0x3acf('0x3d')]=_[_0x3acf('0x3f')](_0x3a503e[_0x3acf('0x3d')],['priority'],['asc']);if(_0x3a503e['account']&&_0x3a503e[_0x3acf('0x34')][_0x3acf('0x40')]){_0x3a503e[_0x3acf('0x3d')]['push']({'id':0x0,'priority':_0x3a503e[_0x3acf('0x3d')][_0x3acf('0x41')]+0x1,'app':'close','appdata':'autoclose','interval':'*,*,*,*'});}if(_0x3a503e[_0x3acf('0x34')][_0x3acf('0x38')]){delete _0x3a503e[_0x3acf('0x34')][_0x3acf('0x38')];}if(_0x3a503e[_0x3acf('0x34')][_0x3acf('0x3b')]){delete _0x3a503e[_0x3acf('0x34')][_0x3acf('0x3b')];}if(_0x1bde14[_0x3acf('0x3b')]['Contacts'][_0x3acf('0x41')]){return _0x1bde14[_0x3acf('0x3b')][_0x3acf('0x35')][0x0];}var _0x17703e=_['defaults'](_0x2ff924[_0x3acf('0x24')],{'firstName':_0x2ff924[_0x3acf('0x24')][_0x3acf('0x2e')],'ListId':_0x1bde14[_0x3acf('0x2c')]});_0x17703e[_0x2ff924[_0x3acf('0x24')][_0x3acf('0x33')]]=_0x2ff924['body']['from'];return db[_0x3acf('0x27')][_0x3acf('0x42')](_0x17703e);}else{throw new Error(_0x3acf('0x43'));}})[_0x3acf('0xb')](function(_0x5bead4){_0x3a503e[_0x3acf('0x44')]=_0x5bead4;if(_0x5bead4){if(!_0x2ff924[_0x3acf('0x24')][_0x3acf('0x13')][_0x3acf('0x45')]){_0x2ff924[_0x3acf('0x24')][_0x3acf('0x13')]['messageId']=rs[_0x3acf('0x46')]()+'\x20'+_0x2ff924[_0x3acf('0x24')]['message'][_0x3acf('0x2e')];}var _0x32c9dc={'ContactId':_0x5bead4['id'],'MailAccountId':_0x2ff924[_0x3acf('0x34')]['id'],'inReplyTo':_0x2ff924[_0x3acf('0x24')]['message'][_0x3acf('0x45')],'to':_0x2ff924[_0x3acf('0x24')][_0x3acf('0x13')][_0x3acf('0x2e')],'cc':_0x2ff924['body']['message']['cc'],'subject':_0x2ff924[_0x3acf('0x24')][_0x3acf('0x13')]['subject'],'attach':_0x2ff924['body'][_0x3acf('0x13')][_0x3acf('0x47')],'lastMsgAt':moment()[_0x3acf('0x48')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x3acf('0x49')][_0x3acf('0x21')]({'where':{'closed':![],'MailAccountId':_0x2ff924['account']['id']},'include':[{'model':db[_0x3acf('0x4a')],'as':_0x3acf('0x4b'),'attributes':['messageId'],'where':{'messageId':_0x2ff924[_0x3acf('0x24')][_0x3acf('0x13')][_0x3acf('0x4c')]}}]})[_0x3acf('0xb')](function(_0x2ab917){if(_0x2ab917){return[_0x2ab917,![]];}return db[_0x3acf('0x49')][_0x3acf('0x42')](_0x32c9dc)[_0x3acf('0xb')](function(_0x519fb0){return[_0x519fb0,!![]];});});}else{throw new Error(_0x3acf('0x4d'));}})[_0x3acf('0x4e')](function(_0x527a83,_0x175bd6){if(_0x527a83){_0x166f6d=_0x175bd6;if(!_0x175bd6){return _0x527a83['update']({'inReplyTo':_0x2ff924['body'][_0x3acf('0x13')]['messageId'],'to':_0x2ff924[_0x3acf('0x24')]['message'][_0x3acf('0x2e')],'cc':_0x2ff924['body'][_0x3acf('0x13')]['cc'],'subject':_0x2ff924[_0x3acf('0x24')][_0x3acf('0x13')]['subject'],'attach':_0x527a83[_0x3acf('0x47')]?_0x527a83[_0x3acf('0x47')]:_0x2ff924[_0x3acf('0x24')][_0x3acf('0x13')][_0x3acf('0x47')],'substatus':null,'substatusAt':moment()[_0x3acf('0x48')](_0x3acf('0x4f')),'lastMsgAt':moment()[_0x3acf('0x48')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x527a83;}}})[_0x3acf('0xb')](function(_0x36c53e){_0x3a503e[_0x3acf('0x50')]=_0x36c53e[_0x3acf('0x51')]({'plain':!![]});_0x3a503e[_0x3acf('0x50')][_0x3acf('0x52')]=_0x166f6d;return db['MailMessage'][_0x3acf('0x42')]({'body':_0x2ff924[_0x3acf('0x24')][_0x3acf('0x24')],'MailAccountId':_0x2ff924[_0x3acf('0x34')]['id'],'MailInteractionId':_0x36c53e['id'],'direction':'in','ContactId':_0x3a503e[_0x3acf('0x44')]['id'],'messageId':_0x2ff924[_0x3acf('0x24')][_0x3acf('0x13')][_0x3acf('0x45')],'from':_0x2ff924['body'][_0x3acf('0x13')][_0x3acf('0x2e')],'to':_0x2ff924[_0x3acf('0x24')]['message']['to'],'cc':_0x2ff924[_0x3acf('0x24')][_0x3acf('0x13')]['cc'],'subject':_0x2ff924[_0x3acf('0x24')][_0x3acf('0x13')][_0x3acf('0x53')],'attach':_0x2ff924['body']['message'][_0x3acf('0x47')],'Attachments':_0x2ff924[_0x3acf('0x24')]['message'][_0x3acf('0x54')],'originTo':_0x2ff924[_0x3acf('0x24')][_0x3acf('0x13')][_0x3acf('0x55')],'originCc':_0x2ff924[_0x3acf('0x24')][_0x3acf('0x13')][_0x3acf('0x56')],'bcc':_0x2ff924['body'][_0x3acf('0x13')]['bcc'],'ChatWebsiteId':_0x2ff924[_0x3acf('0x24')]['message']['ChatWebsiteId']||null,'originChannel':_0x2ff924['body'][_0x3acf('0x13')][_0x3acf('0x57')]||_0x3acf('0x58'),'ChatOfflineMessageId':_0x2ff924[_0x3acf('0x24')][_0x3acf('0x13')]['ChatOfflineMessageId']||null},{'include':[{'model':db[_0x3acf('0x59')],'as':_0x3acf('0x5a')}]});})['then'](function(_0x2ef884){_0x3a503e['message']=_0x2ef884;if(_0x3a503e[_0x3acf('0x50')][_0x3acf('0x5b')]){return db['User']['find']({'attributes':['id',_0x3acf('0x5c')],'where':{'id':_0x3a503e[_0x3acf('0x50')][_0x3acf('0x5b')]}})[_0x3acf('0xb')](function(_0x5bb036){if(_0x5bb036){_0x3a503e[_0x3acf('0x3d')][_0x3acf('0x5d')]({'id':0x0,'priority':0x0,'app':_0x3acf('0x5e'),'appdata':_0x5bb036[_0x3acf('0x5c')]+','+(_0x3a503e[_0x3acf('0x34')][_0x3acf('0x5f')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise('Start',_0x3acf('0x60'),_0x3a503e);});}return respondWithRpcPromise('Start',_0x3acf('0x60'),_0x3a503e);})[_0x3acf('0xb')](function(_0x300f2c){_0x343f80(_0x300f2c);})[_0x3acf('0x14')](function(_0x237d36){_0x4f6541(_0x2c3387[_0x3acf('0x11')](0x1f4,_0x237d36[_0x3acf('0x13')]));});});};
\ No newline at end of file
index aa25138..788d2a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd12a=['save','update','removeListener','register','length','mailAccount:'];(function(_0x48da84,_0x1fa45d){var _0x5a3ed1=function(_0x4ee0be){while(--_0x4ee0be){_0x48da84['push'](_0x48da84['shift']());}};_0x5a3ed1(++_0x1fa45d);}(_0xd12a,0x1f2));var _0xad12=function(_0x450c21,_0x1f3eef){_0x450c21=_0x450c21-0x0;var _0x56d7e0=_0xd12a[_0x450c21];return _0x56d7e0;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=[_0xad12('0x0'),'remove',_0xad12('0x1')];function createListener(_0x4f98a3,_0x4dccd8){return function(_0x2c9a30){_0x4dccd8['emit'](_0x4f98a3,_0x2c9a30);};}function removeListener(_0x4ef429,_0x1df5b4){return function(){MailAccountEvents[_0xad12('0x2')](_0x4ef429,_0x1df5b4);};}exports[_0xad12('0x3')]=function(_0x5b3733){for(var _0x35484=0x0,_0x2af5ac=events[_0xad12('0x4')];_0x35484<_0x2af5ac;_0x35484++){var _0x314777=events[_0x35484];var _0x5f4080=createListener(_0xad12('0x5')+_0x314777,_0x5b3733);MailAccountEvents['on'](_0x314777,_0x5f4080);}};
\ No newline at end of file
+var _0x2ec8=['mailAccount:','./mailAccount.events','remove','update','emit','register'];(function(_0x55572d,_0x162134){var _0x17c4e1=function(_0x4cd5dd){while(--_0x4cd5dd){_0x55572d['push'](_0x55572d['shift']());}};_0x17c4e1(++_0x162134);}(_0x2ec8,0xfd));var _0x82ec=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x2ec8[_0x1facfa];return _0x9ec701;};'use strict';var MailAccountEvents=require(_0x82ec('0x0'));var events=['save',_0x82ec('0x1'),_0x82ec('0x2')];function createListener(_0x6a2675,_0x58f480){return function(_0x53e62e){_0x58f480[_0x82ec('0x3')](_0x6a2675,_0x53e62e);};}function removeListener(_0x504c72,_0x2ac7df){return function(){MailAccountEvents['removeListener'](_0x504c72,_0x2ac7df);};}exports[_0x82ec('0x4')]=function(_0x4c820c){for(var _0x3ac4ef=0x0,_0x2fb8a4=events['length'];_0x3ac4ef<_0x2fb8a4;_0x3ac4ef++){var _0x1b9efa=events[_0x3ac4ef];var _0x5cf97f=createListener(_0x82ec('0x5')+_0x1b9efa,_0x4c820c);MailAccountEvents['on'](_0x1b9efa,_0x5cf97f);}};
\ No newline at end of file
index c8969f9..aa0fea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x053f=['./mailApplication.controller','get','/:id','isAuthenticated','show','put','delete','destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x479df1,_0xc64f48){var _0x257561=function(_0x58f782){while(--_0x58f782){_0x479df1['push'](_0x479df1['shift']());}};_0x257561(++_0xc64f48);}(_0x053f,0x1e9));var _0xf053=function(_0x5f554c,_0x71669a){_0x5f554c=_0x5f554c-0x0;var _0x4a5e82=_0x053f[_0x5f554c];return _0x4a5e82;};'use strict';var multer=require('multer');var util=require(_0xf053('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf053('0x1'));var router=express[_0xf053('0x2')]();var fs_extra=require(_0xf053('0x3'));var auth=require(_0xf053('0x4'));var interaction=require(_0xf053('0x5'));var config=require(_0xf053('0x6'));var controller=require(_0xf053('0x7'));router[_0xf053('0x8')](_0xf053('0x9'),auth[_0xf053('0xa')](),controller[_0xf053('0xb')]);router[_0xf053('0xc')](_0xf053('0x9'),auth['isAuthenticated'](),controller['update']);router[_0xf053('0xd')](_0xf053('0x9'),auth[_0xf053('0xa')](),controller[_0xf053('0xe')]);module[_0xf053('0xf')]=router;
\ No newline at end of file
+var _0x780c=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','./mailApplication.controller','get','/:id','isAuthenticated','put','update','destroy','exports','multer','util','path'];(function(_0x138f59,_0x1b53fb){var _0x3d114d=function(_0x1f9461){while(--_0x1f9461){_0x138f59['push'](_0x138f59['shift']());}};_0x3d114d(++_0x1b53fb);}(_0x780c,0x13d));var _0xc780=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0x780c[_0x25e7cb];return _0x375d92;};'use strict';var multer=require(_0xc780('0x0'));var util=require(_0xc780('0x1'));var path=require(_0xc780('0x2'));var timeout=require(_0xc780('0x3'));var express=require(_0xc780('0x4'));var router=express[_0xc780('0x5')]();var fs_extra=require(_0xc780('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xc780('0x7'));var config=require('../../config/environment');var controller=require(_0xc780('0x8'));router[_0xc780('0x9')](_0xc780('0xa'),auth[_0xc780('0xb')](),controller['show']);router[_0xc780('0xc')](_0xc780('0xa'),auth[_0xc780('0xb')](),controller[_0xc780('0xd')]);router['delete'](_0xc780('0xa'),auth[_0xc780('0xb')](),controller[_0xc780('0xe')]);module[_0xc780('0xf')]=router;
\ No newline at end of file
index 93006b9..66351b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ff8=['TEXT','*,*,*,*','sequelize','INTEGER','STRING','noop'];(function(_0x17f8c5,_0x44efbc){var _0x117da7=function(_0xedf342){while(--_0xedf342){_0x17f8c5['push'](_0x17f8c5['shift']());}};_0x117da7(++_0x44efbc);}(_0x9ff8,0x74));var _0x89ff=function(_0x2addd5,_0x86c5c5){_0x2addd5=_0x2addd5-0x0;var _0x4adf1b=_0x9ff8[_0x2addd5];return _0x4adf1b;};'use strict';var Sequelize=require(_0x89ff('0x0'));module['exports']={'priority':{'type':Sequelize[_0x89ff('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x89ff('0x2')],'allowNull':![],'defaultValue':_0x89ff('0x3')},'appdata':{'type':Sequelize[_0x89ff('0x4')]()},'description':{'type':Sequelize[_0x89ff('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x89ff('0x5')}};
\ No newline at end of file
+var _0x521d=['exports','INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x54a024,_0x56ace9){var _0x35d9f0=function(_0x44c08a){while(--_0x44c08a){_0x54a024['push'](_0x54a024['shift']());}};_0x35d9f0(++_0x56ace9);}(_0x521d,0x1bf));var _0xd521=function(_0x655625,_0x4b91c0){_0x655625=_0x655625-0x0;var _0x2b229e=_0x521d[_0x655625];return _0x2b229e;};'use strict';var Sequelize=require(_0xd521('0x0'));module[_0xd521('0x1')]={'priority':{'type':Sequelize[_0xd521('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xd521('0x3')],'allowNull':![],'defaultValue':_0xd521('0x4')},'appdata':{'type':Sequelize[_0xd521('0x5')]()},'description':{'type':Sequelize[_0xd521('0x3')]},'interval':{'type':Sequelize[_0xd521('0x3')],'defaultValue':_0xd521('0x6')}};
\ No newline at end of file
index 593062b..e791a99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['catch','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','stack','name','send','show','params','MailApplication','rawAttributes','query','keys','filters','intersection','model','fields','attributes','length','includeAll','include','merge','options','find','body'];(function(_0x33695a,_0x5a0917){var _0x365c89=function(_0x5ab62a){while(--_0x5ab62a){_0x33695a['push'](_0x33695a['shift']());}};_0x365c89(++_0x5a0917);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3071('0x0'));var jsonpatch=require(_0x3071('0x1'));var rp=require(_0x3071('0x2'));var moment=require(_0x3071('0x3'));var BPromise=require(_0x3071('0x4'));var Mustache=require('mustache');var util=require(_0x3071('0x5'));var path=require(_0x3071('0x6'));var sox=require(_0x3071('0x7'));var csv=require(_0x3071('0x8'));var ejs=require(_0x3071('0x9'));var fs=require('fs');var fs_extra=require(_0x3071('0xa'));var _=require(_0x3071('0xb'));var squel=require(_0x3071('0xc'));var crypto=require(_0x3071('0xd'));var jsforce=require(_0x3071('0xe'));var deskjs=require(_0x3071('0xf'));var toCsv=require(_0x3071('0x8'));var querystring=require(_0x3071('0x10'));var Papa=require('papaparse');var Redis=require(_0x3071('0x11'));var authService=require(_0x3071('0x12'));var qs=require(_0x3071('0x13'));var as=require(_0x3071('0x14'));var hardwareService=require(_0x3071('0x15'));var logger=require('../../config/logger')(_0x3071('0x16'));var utils=require(_0x3071('0x17'));var config=require(_0x3071('0x18'));var licenseUtil=require(_0x3071('0x19'));var db=require(_0x3071('0x1a'))['db'];function respondWithStatusCode(_0x4a8cc7,_0x5330a8){_0x5330a8=_0x5330a8||0xcc;return function(_0x1826ca){if(_0x1826ca){return _0x4a8cc7['sendStatus'](_0x5330a8);}return _0x4a8cc7[_0x3071('0x1b')](_0x5330a8)[_0x3071('0x1c')]();};}function respondWithResult(_0x5d4883,_0x104e73){_0x104e73=_0x104e73||0xc8;return function(_0x4e1219){if(_0x4e1219){return _0x5d4883[_0x3071('0x1b')](_0x104e73)[_0x3071('0x1d')](_0x4e1219);}};}function respondWithFilteredResult(_0x1271d0,_0x1f14e1){return function(_0x1caa5d){if(_0x1caa5d){var _0x2a6a4b=typeof _0x1f14e1[_0x3071('0x1e')]===_0x3071('0x1f')&&typeof _0x1f14e1[_0x3071('0x20')]===_0x3071('0x1f');var _0x5f3c22=_0x1caa5d[_0x3071('0x21')];var _0x17dbda=_0x2a6a4b?0x0:_0x1f14e1[_0x3071('0x1e')];var _0x108a83=_0x2a6a4b?_0x1caa5d[_0x3071('0x21')]:_0x1f14e1[_0x3071('0x1e')]+_0x1f14e1[_0x3071('0x20')];var _0x26f113;if(_0x108a83>=_0x5f3c22){_0x108a83=_0x5f3c22;_0x26f113=0xc8;}else{_0x26f113=0xce;}_0x1271d0['status'](_0x26f113);return _0x1271d0[_0x3071('0x22')](_0x3071('0x23'),_0x17dbda+'-'+_0x108a83+'/'+_0x5f3c22)[_0x3071('0x1d')](_0x1caa5d);}return null;};}function patchUpdates(_0x56c267){return function(_0xb8f4e3){try{jsonpatch['apply'](_0xb8f4e3,_0x56c267,!![]);}catch(_0x833074){return BPromise[_0x3071('0x24')](_0x833074);}return _0xb8f4e3[_0x3071('0x25')]();};}function saveUpdates(_0x457b57,_0x33090c){return function(_0x34c50e){if(_0x34c50e){return _0x34c50e[_0x3071('0x26')](_0x457b57)[_0x3071('0x27')](function(_0x542646){return _0x542646;});}return null;};}function removeEntity(_0x481a51,_0x2ce48a){return function(_0xb05b1d){if(_0xb05b1d){return _0xb05b1d[_0x3071('0x28')]()[_0x3071('0x27')](function(){_0x481a51[_0x3071('0x1b')](0xcc)[_0x3071('0x1c')]();});}};}function handleEntityNotFound(_0x7a4cb4,_0x1fe727){return function(_0x1de5fb){if(!_0x1de5fb){_0x7a4cb4['sendStatus'](0x194);}return _0x1de5fb;};}function handleError(_0x2e5f93,_0x3f1e6e){_0x3f1e6e=_0x3f1e6e||0x1f4;return function(_0x177138){logger['error'](_0x177138[_0x3071('0x29')]);if(_0x177138[_0x3071('0x2a')]){delete _0x177138[_0x3071('0x2a')];}_0x2e5f93[_0x3071('0x1b')](_0x3f1e6e)[_0x3071('0x2b')](_0x177138);};}exports[_0x3071('0x2c')]=function(_0x177b5f,_0x3921a1){var _0x32f1b4={'raw':!![],'where':{'id':_0x177b5f[_0x3071('0x2d')]['id']}},_0x292205={};_0x292205['model']=_['keys'](db[_0x3071('0x2e')][_0x3071('0x2f')]);_0x292205[_0x3071('0x30')]=_[_0x3071('0x31')](_0x177b5f[_0x3071('0x30')]);_0x292205[_0x3071('0x32')]=_[_0x3071('0x33')](_0x292205[_0x3071('0x34')],_0x292205['query']);_0x32f1b4['attributes']=_['intersection'](_0x292205[_0x3071('0x34')],qs[_0x3071('0x35')](_0x177b5f['query'][_0x3071('0x35')]));_0x32f1b4[_0x3071('0x36')]=_0x32f1b4[_0x3071('0x36')][_0x3071('0x37')]?_0x32f1b4['attributes']:_0x292205[_0x3071('0x34')];if(_0x177b5f[_0x3071('0x30')][_0x3071('0x38')]){_0x32f1b4[_0x3071('0x39')]=[{'all':!![]}];}_0x32f1b4=_[_0x3071('0x3a')]({},_0x32f1b4,_0x177b5f[_0x3071('0x3b')]);return db[_0x3071('0x2e')][_0x3071('0x3c')](_0x32f1b4)['then'](handleEntityNotFound(_0x3921a1,null))[_0x3071('0x27')](respondWithResult(_0x3921a1,null))['catch'](handleError(_0x3921a1,null));};exports['update']=function(_0x1a1a64,_0xa3a7ae){if(_0x1a1a64['body']['id']){delete _0x1a1a64[_0x3071('0x3d')]['id'];}return db[_0x3071('0x2e')][_0x3071('0x3c')]({'where':{'id':_0x1a1a64[_0x3071('0x2d')]['id']}})[_0x3071('0x27')](handleEntityNotFound(_0xa3a7ae,null))[_0x3071('0x27')](saveUpdates(_0x1a1a64['body'],null))[_0x3071('0x27')](respondWithResult(_0xa3a7ae,null))[_0x3071('0x3e')](handleError(_0xa3a7ae,null));};exports['destroy']=function(_0x44ad05,_0x5b1392){return db[_0x3071('0x2e')][_0x3071('0x3c')]({'where':{'id':_0x44ad05['params']['id']}})['then'](handleEntityNotFound(_0x5b1392,null))[_0x3071('0x27')](removeEntity(_0x5b1392,null))[_0x3071('0x3e')](handleError(_0x5b1392,null));};
\ No newline at end of file
+var _0x9bde=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','error','name','send','show','model','keys','MailApplication','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','update','body','params','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/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment'];(function(_0x2a94cf,_0x2b970d){var _0x22147f=function(_0xfc71ab){while(--_0xfc71ab){_0x2a94cf['push'](_0x2a94cf['shift']());}};_0x22147f(++_0x2b970d);}(_0x9bde,0xe1));var _0xe9bd=function(_0x57321d,_0x871b56){_0x57321d=_0x57321d-0x0;var _0x309d9a=_0x9bde[_0x57321d];return _0x309d9a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe9bd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe9bd('0x1'));var rp=require('request-promise');var moment=require(_0xe9bd('0x2'));var BPromise=require(_0xe9bd('0x3'));var Mustache=require(_0xe9bd('0x4'));var util=require(_0xe9bd('0x5'));var path=require(_0xe9bd('0x6'));var sox=require(_0xe9bd('0x7'));var csv=require(_0xe9bd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe9bd('0x9'));var _=require(_0xe9bd('0xa'));var squel=require(_0xe9bd('0xb'));var crypto=require(_0xe9bd('0xc'));var jsforce=require(_0xe9bd('0xd'));var deskjs=require(_0xe9bd('0xe'));var toCsv=require(_0xe9bd('0x8'));var querystring=require(_0xe9bd('0xf'));var Papa=require(_0xe9bd('0x10'));var Redis=require(_0xe9bd('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe9bd('0x12'));var hardwareService=require(_0xe9bd('0x13'));var logger=require(_0xe9bd('0x14'))('api');var utils=require(_0xe9bd('0x15'));var config=require(_0xe9bd('0x16'));var licenseUtil=require(_0xe9bd('0x17'));var db=require(_0xe9bd('0x18'))['db'];function respondWithStatusCode(_0x5e022a,_0x2c1d98){_0x2c1d98=_0x2c1d98||0xcc;return function(_0x4ac319){if(_0x4ac319){return _0x5e022a[_0xe9bd('0x19')](_0x2c1d98);}return _0x5e022a[_0xe9bd('0x1a')](_0x2c1d98)[_0xe9bd('0x1b')]();};}function respondWithResult(_0x51109f,_0x47ba5e){_0x47ba5e=_0x47ba5e||0xc8;return function(_0x46a95e){if(_0x46a95e){return _0x51109f[_0xe9bd('0x1a')](_0x47ba5e)[_0xe9bd('0x1c')](_0x46a95e);}};}function respondWithFilteredResult(_0x46a59b,_0x3360bd){return function(_0x389e7b){if(_0x389e7b){var _0x45a9f2=typeof _0x3360bd['offset']===_0xe9bd('0x1d')&&typeof _0x3360bd[_0xe9bd('0x1e')]===_0xe9bd('0x1d');var _0x494b27=_0x389e7b[_0xe9bd('0x1f')];var _0x3bae08=_0x45a9f2?0x0:_0x3360bd[_0xe9bd('0x20')];var _0x330733=_0x45a9f2?_0x389e7b['count']:_0x3360bd[_0xe9bd('0x20')]+_0x3360bd['limit'];var _0xc6b661;if(_0x330733>=_0x494b27){_0x330733=_0x494b27;_0xc6b661=0xc8;}else{_0xc6b661=0xce;}_0x46a59b['status'](_0xc6b661);return _0x46a59b[_0xe9bd('0x21')](_0xe9bd('0x22'),_0x3bae08+'-'+_0x330733+'/'+_0x494b27)[_0xe9bd('0x1c')](_0x389e7b);}return null;};}function patchUpdates(_0x3dda13){return function(_0x1acb82){try{jsonpatch[_0xe9bd('0x23')](_0x1acb82,_0x3dda13,!![]);}catch(_0x6593ce){return BPromise['reject'](_0x6593ce);}return _0x1acb82[_0xe9bd('0x24')]();};}function saveUpdates(_0x28cd17,_0x4ecaf5){return function(_0x37aec1){if(_0x37aec1){return _0x37aec1['update'](_0x28cd17)[_0xe9bd('0x25')](function(_0x1b9cc9){return _0x1b9cc9;});}return null;};}function removeEntity(_0x36f8c0,_0xf02209){return function(_0x5bc4bf){if(_0x5bc4bf){return _0x5bc4bf[_0xe9bd('0x26')]()[_0xe9bd('0x25')](function(){_0x36f8c0[_0xe9bd('0x1a')](0xcc)[_0xe9bd('0x1b')]();});}};}function handleEntityNotFound(_0x2641be,_0xb52d45){return function(_0x399f3c){if(!_0x399f3c){_0x2641be[_0xe9bd('0x19')](0x194);}return _0x399f3c;};}function handleError(_0x1ae889,_0x5987af){_0x5987af=_0x5987af||0x1f4;return function(_0x3c211a){logger[_0xe9bd('0x27')](_0x3c211a['stack']);if(_0x3c211a[_0xe9bd('0x28')]){delete _0x3c211a[_0xe9bd('0x28')];}_0x1ae889[_0xe9bd('0x1a')](_0x5987af)[_0xe9bd('0x29')](_0x3c211a);};}exports[_0xe9bd('0x2a')]=function(_0x183601,_0x519f48){var _0x5b7f1d={'raw':!![],'where':{'id':_0x183601['params']['id']}},_0x1de54c={};_0x1de54c[_0xe9bd('0x2b')]=_[_0xe9bd('0x2c')](db[_0xe9bd('0x2d')][_0xe9bd('0x2e')]);_0x1de54c[_0xe9bd('0x2f')]=_['keys'](_0x183601['query']);_0x1de54c[_0xe9bd('0x30')]=_[_0xe9bd('0x31')](_0x1de54c[_0xe9bd('0x2b')],_0x1de54c[_0xe9bd('0x2f')]);_0x5b7f1d[_0xe9bd('0x32')]=_[_0xe9bd('0x31')](_0x1de54c[_0xe9bd('0x2b')],qs[_0xe9bd('0x33')](_0x183601[_0xe9bd('0x2f')]['fields']));_0x5b7f1d[_0xe9bd('0x32')]=_0x5b7f1d[_0xe9bd('0x32')][_0xe9bd('0x34')]?_0x5b7f1d['attributes']:_0x1de54c['model'];if(_0x183601[_0xe9bd('0x2f')][_0xe9bd('0x35')]){_0x5b7f1d[_0xe9bd('0x36')]=[{'all':!![]}];}_0x5b7f1d=_[_0xe9bd('0x37')]({},_0x5b7f1d,_0x183601[_0xe9bd('0x38')]);return db[_0xe9bd('0x2d')][_0xe9bd('0x39')](_0x5b7f1d)[_0xe9bd('0x25')](handleEntityNotFound(_0x519f48,null))[_0xe9bd('0x25')](respondWithResult(_0x519f48,null))[_0xe9bd('0x3a')](handleError(_0x519f48,null));};exports[_0xe9bd('0x3b')]=function(_0x549dd1,_0x2ad46e){if(_0x549dd1[_0xe9bd('0x3c')]['id']){delete _0x549dd1[_0xe9bd('0x3c')]['id'];}return db[_0xe9bd('0x2d')][_0xe9bd('0x39')]({'where':{'id':_0x549dd1[_0xe9bd('0x3d')]['id']}})['then'](handleEntityNotFound(_0x2ad46e,null))[_0xe9bd('0x25')](saveUpdates(_0x549dd1[_0xe9bd('0x3c')],null))['then'](respondWithResult(_0x2ad46e,null))[_0xe9bd('0x3a')](handleError(_0x2ad46e,null));};exports[_0xe9bd('0x26')]=function(_0x4c7d47,_0x4b1da0){return db[_0xe9bd('0x2d')][_0xe9bd('0x39')]({'where':{'id':_0x4c7d47['params']['id']}})[_0xe9bd('0x25')](handleEntityNotFound(_0x4b1da0,null))[_0xe9bd('0x25')](removeEntity(_0x4b1da0,null))[_0xe9bd('0x3a')](handleError(_0x4b1da0,null));};
\ No newline at end of file
index 7d0edc6..46bf1e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffdd=['api','moment','bluebird','request-promise','path','../../config/environment','./mailApplication.attributes','exports','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xffdd,0x165));var _0xdffd=function(_0x2ca070,_0x5e86f7){_0x2ca070=_0x2ca070-0x0;var _0x2ae74d=_0xffdd[_0x2ca070];return _0x2ae74d;};'use strict';var _=require(_0xdffd('0x0'));var util=require(_0xdffd('0x1'));var logger=require(_0xdffd('0x2'))(_0xdffd('0x3'));var moment=require(_0xdffd('0x4'));var BPromise=require(_0xdffd('0x5'));var rp=require(_0xdffd('0x6'));var fs=require('fs');var path=require(_0xdffd('0x7'));var rimraf=require('rimraf');var config=require(_0xdffd('0x8'));var attributes=require(_0xdffd('0x9'));module[_0xdffd('0xa')]=function(_0x486e51,_0x1303b7){return _0x486e51['define'](_0xdffd('0xb'),attributes,{'tableName':_0xdffd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xdffd('0xd'),'collate':_0xdffd('0xe')});};
\ No newline at end of file
+var _0xcb4b=['utf8mb4_unicode_ci','lodash','bluebird','path','rimraf','../../config/environment','MailApplication','mail_applications'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcb4b,0x91));var _0xbcb4=function(_0x17a328,_0x40bdb8){_0x17a328=_0x17a328-0x0;var _0x71e569=_0xcb4b[_0x17a328];return _0x71e569;};'use strict';var _=require(_0xbcb4('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xbcb4('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbcb4('0x2'));var rimraf=require(_0xbcb4('0x3'));var config=require(_0xbcb4('0x4'));var attributes=require('./mailApplication.attributes');module['exports']=function(_0x11beb4,_0x25cfeb){return _0x11beb4['define'](_0xbcb4('0x5'),attributes,{'tableName':_0xbcb4('0x6'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xbcb4('0x7')});};
\ No newline at end of file
index 47ad97d..b24199b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x562f=['where','limit','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','MailApplication,\x20%s,\x20%s','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateMailApplication','MailApplication','update','body','options','raw'];(function(_0x4433a9,_0x4fc58c){var _0x478f70=function(_0x29ead6){while(--_0x29ead6){_0x4433a9['push'](_0x4433a9['shift']());}};_0x478f70(++_0x4fc58c);}(_0x562f,0x10b));var _0xf562=function(_0x19a2eb,_0x2df439){_0x19a2eb=_0x19a2eb-0x0;var _0x3c8514=_0x562f[_0x19a2eb];return _0x3c8514;};'use strict';var _=require(_0xf562('0x0'));var util=require(_0xf562('0x1'));var moment=require(_0xf562('0x2'));var BPromise=require(_0xf562('0x3'));var rs=require(_0xf562('0x4'));var fs=require('fs');var Redis=require(_0xf562('0x5'));var db=require(_0xf562('0x6'))['db'];var utils=require(_0xf562('0x7'));var logger=require('../../config/logger')(_0xf562('0x8'));var config=require(_0xf562('0x9'));var jayson=require(_0xf562('0xa'));var client=jayson[_0xf562('0xb')][_0xf562('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xd62436,_0x27e822,_0x273e48){return new BPromise(function(_0x1ddf2a,_0x58c0e3){return client['request'](_0xd62436,_0x273e48)[_0xf562('0xd')](function(_0x4faf30){logger[_0xf562('0xe')](_0xf562('0xf'),_0x27e822,'request\x20sent');logger['debug'](_0xf562('0x10'),_0x27e822,_0xf562('0x11'),JSON[_0xf562('0x12')](_0x4faf30));if(_0x4faf30[_0xf562('0x13')]){if(_0x4faf30[_0xf562('0x13')][_0xf562('0x14')]===0x1f4){logger['error'](_0xf562('0xf'),_0x27e822,_0x4faf30[_0xf562('0x13')][_0xf562('0x15')]);return _0x58c0e3(_0x4faf30[_0xf562('0x13')]['message']);}logger[_0xf562('0x13')]('MailApplication,\x20%s,\x20%s',_0x27e822,_0x4faf30['error'][_0xf562('0x15')]);return _0x1ddf2a(_0x4faf30['error'][_0xf562('0x15')]);}else{logger[_0xf562('0xe')](_0xf562('0xf'),_0x27e822,'request\x20sent');_0x1ddf2a(_0x4faf30[_0xf562('0x16')][_0xf562('0x15')]);}})[_0xf562('0x17')](function(_0x2d5dd4){logger['error'](_0xf562('0xf'),_0x27e822,_0x2d5dd4);_0x58c0e3(_0x2d5dd4);});});}exports[_0xf562('0x18')]=function(_0x354587){var _0x1a17f7=this;return new Promise(function(_0x5e8420,_0x2ea7e9){return db[_0xf562('0x19')][_0xf562('0x1a')](_0x354587[_0xf562('0x1b')],{'raw':_0x354587[_0xf562('0x1c')]?_0x354587['options'][_0xf562('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x354587[_0xf562('0x1c')]?_0x354587[_0xf562('0x1c')][_0xf562('0x1e')]||null:null,'attributes':_0x354587[_0xf562('0x1c')]?_0x354587['options']['attributes']||null:null,'limit':_0x354587[_0xf562('0x1c')]?_0x354587[_0xf562('0x1c')][_0xf562('0x1f')]||null:null})[_0xf562('0xd')](function(_0x35aec1){logger[_0xf562('0xe')](_0xf562('0x18'),_0x354587);logger[_0xf562('0x20')](_0xf562('0x18'),_0x354587,JSON[_0xf562('0x12')](_0x35aec1));_0x5e8420(_0x35aec1);})[_0xf562('0x17')](function(_0x1c1208){logger[_0xf562('0x13')](_0xf562('0x18'),_0x1c1208[_0xf562('0x15')],_0x354587);_0x2ea7e9(_0x1a17f7[_0xf562('0x13')](0x1f4,_0x1c1208['message']));});});};
\ No newline at end of file
+var _0xe4ba=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','MailApplication,\x20%s,\x20%s','request\x20sent','result','catch','MailApplication','update','options','attributes','limit','UpdateMailApplication','debug','lodash','util','moment'];(function(_0x32151e,_0x9961de){var _0x1a355c=function(_0x3b7ad0){while(--_0x3b7ad0){_0x32151e['push'](_0x32151e['shift']());}};_0x1a355c(++_0x9961de);}(_0xe4ba,0x115));var _0xae4b=function(_0x601aec,_0xd3e909){_0x601aec=_0x601aec-0x0;var _0x4a88c5=_0xe4ba[_0x601aec];return _0x4a88c5;};'use strict';var _=require(_0xae4b('0x0'));var util=require(_0xae4b('0x1'));var moment=require(_0xae4b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xae4b('0x3'))['db'];var utils=require(_0xae4b('0x4'));var logger=require(_0xae4b('0x5'))(_0xae4b('0x6'));var config=require(_0xae4b('0x7'));var jayson=require(_0xae4b('0x8'));var client=jayson[_0xae4b('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2874f1,_0x503621,_0x13e0f9){return new BPromise(function(_0x3f8029,_0xcf9317){return client[_0xae4b('0xa')](_0x2874f1,_0x13e0f9)[_0xae4b('0xb')](function(_0x387319){logger[_0xae4b('0xc')]('MailApplication,\x20%s,\x20%s',_0x503621,'request\x20sent');logger['debug'](_0xae4b('0xd'),_0x503621,'request\x20sent',JSON[_0xae4b('0xe')](_0x387319));if(_0x387319[_0xae4b('0xf')]){if(_0x387319[_0xae4b('0xf')]['code']===0x1f4){logger[_0xae4b('0xf')]('MailApplication,\x20%s,\x20%s',_0x503621,_0x387319['error'][_0xae4b('0x10')]);return _0xcf9317(_0x387319[_0xae4b('0xf')][_0xae4b('0x10')]);}logger['error'](_0xae4b('0x11'),_0x503621,_0x387319[_0xae4b('0xf')][_0xae4b('0x10')]);return _0x3f8029(_0x387319[_0xae4b('0xf')][_0xae4b('0x10')]);}else{logger[_0xae4b('0xc')](_0xae4b('0x11'),_0x503621,_0xae4b('0x12'));_0x3f8029(_0x387319[_0xae4b('0x13')][_0xae4b('0x10')]);}})[_0xae4b('0x14')](function(_0x104cb0){logger['error'](_0xae4b('0x11'),_0x503621,_0x104cb0);_0xcf9317(_0x104cb0);});});}exports['UpdateMailApplication']=function(_0x287002){var _0x4f4c05=this;return new Promise(function(_0x50395a,_0x19ab43){return db[_0xae4b('0x15')][_0xae4b('0x16')](_0x287002['body'],{'raw':_0x287002['options']?_0x287002[_0xae4b('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x287002[_0xae4b('0x17')]?_0x287002['options']['where']||null:null,'attributes':_0x287002['options']?_0x287002[_0xae4b('0x17')][_0xae4b('0x18')]||null:null,'limit':_0x287002[_0xae4b('0x17')]?_0x287002[_0xae4b('0x17')][_0xae4b('0x19')]||null:null})[_0xae4b('0xb')](function(_0x29fa82){logger[_0xae4b('0xc')](_0xae4b('0x1a'),_0x287002);logger[_0xae4b('0x1b')](_0xae4b('0x1a'),_0x287002,JSON[_0xae4b('0xe')](_0x29fa82));_0x50395a(_0x29fa82);})['catch'](function(_0x5ac2d6){logger[_0xae4b('0xf')](_0xae4b('0x1a'),_0x5ac2d6[_0xae4b('0x10')],_0x287002);_0x19ab43(_0x4f4c05[_0xae4b('0xf')](0x1f4,_0x5ac2d6[_0xae4b('0x10')]));});});};
\ No newline at end of file
index 9724bf8..c747c57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc98=['../../components/interaction/service','get','isAuthenticated','index','/describe','/:id/messages','getMessages','download','create','post','addMessage','tracked','mailinteraction:addtags','addTags','/:id','mail','update','destroy','delete','removeTags','exports','Router','../../components/auth/service'];(function(_0xe32406,_0x45e983){var _0x187a0b=function(_0x455593){while(--_0x455593){_0xe32406['push'](_0xe32406['shift']());}};_0x187a0b(++_0x45e983);}(_0xcc98,0x1e1));var _0x8cc9=function(_0x1bbfd8,_0x4c8511){_0x1bbfd8=_0x1bbfd8-0x0;var _0x4bf75a=_0xcc98[_0x1bbfd8];return _0x4bf75a;};'use strict';var express=require('express');var router=express[_0x8cc9('0x0')]();var auth=require(_0x8cc9('0x1'));var interaction=require(_0x8cc9('0x2'));var controller=require('./mailInteraction.controller');router[_0x8cc9('0x3')]('/',auth[_0x8cc9('0x4')](),controller[_0x8cc9('0x5')]);router[_0x8cc9('0x3')](_0x8cc9('0x6'),auth['isAuthenticated'](),controller['describe']);router[_0x8cc9('0x3')]('/:id',auth[_0x8cc9('0x4')](),controller['show']);router[_0x8cc9('0x3')](_0x8cc9('0x7'),auth[_0x8cc9('0x4')](),controller[_0x8cc9('0x8')]);router[_0x8cc9('0x3')]('/:id/download',auth[_0x8cc9('0x4')](),controller[_0x8cc9('0x9')]);router['post']('/',auth['isAuthenticated'](),controller[_0x8cc9('0xa')]);router[_0x8cc9('0xb')]('/:id/messages',auth['isAuthenticated'](),controller[_0x8cc9('0xc')]);router[_0x8cc9('0xb')]('/:id/tags',auth[_0x8cc9('0x4')](),interaction[_0x8cc9('0xd')]('mail',_0x8cc9('0xe')),controller[_0x8cc9('0xf')]);router['put'](_0x8cc9('0x10'),auth[_0x8cc9('0x4')](),interaction[_0x8cc9('0xd')](_0x8cc9('0x11'),'mailinteraction:update'),controller[_0x8cc9('0x12')]);router['delete']('/:id',auth[_0x8cc9('0x4')](),interaction[_0x8cc9('0xd')]('mail','mailinteraction:destroy'),controller[_0x8cc9('0x13')]);router[_0x8cc9('0x14')]('/:id/tags',auth[_0x8cc9('0x4')](),controller[_0x8cc9('0x15')]);module[_0x8cc9('0x16')]=router;
\ No newline at end of file
+var _0x4fe2=['download','post','create','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','update','delete','mailinteraction:destroy','destroy','exports','express','Router','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download'];(function(_0x198933,_0x719208){var _0x8503c8=function(_0x68546b){while(--_0x68546b){_0x198933['push'](_0x198933['shift']());}};_0x8503c8(++_0x719208);}(_0x4fe2,0x179));var _0x24fe=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x4fe2[_0x3947c9];return _0x2e7871;};'use strict';var express=require(_0x24fe('0x0'));var router=express[_0x24fe('0x1')]();var auth=require('../../components/auth/service');var interaction=require(_0x24fe('0x2'));var controller=require(_0x24fe('0x3'));router[_0x24fe('0x4')]('/',auth[_0x24fe('0x5')](),controller['index']);router[_0x24fe('0x4')](_0x24fe('0x6'),auth['isAuthenticated'](),controller[_0x24fe('0x7')]);router[_0x24fe('0x4')](_0x24fe('0x8'),auth['isAuthenticated'](),controller[_0x24fe('0x9')]);router[_0x24fe('0x4')](_0x24fe('0xa'),auth[_0x24fe('0x5')](),controller[_0x24fe('0xb')]);router[_0x24fe('0x4')](_0x24fe('0xc'),auth[_0x24fe('0x5')](),controller[_0x24fe('0xd')]);router[_0x24fe('0xe')]('/',auth[_0x24fe('0x5')](),controller[_0x24fe('0xf')]);router[_0x24fe('0xe')](_0x24fe('0xa'),auth[_0x24fe('0x5')](),controller['addMessage']);router[_0x24fe('0xe')](_0x24fe('0x10'),auth[_0x24fe('0x5')](),interaction[_0x24fe('0x11')](_0x24fe('0x12'),_0x24fe('0x13')),controller[_0x24fe('0x14')]);router['put']('/:id',auth[_0x24fe('0x5')](),interaction[_0x24fe('0x11')](_0x24fe('0x12'),'mailinteraction:update'),controller[_0x24fe('0x15')]);router[_0x24fe('0x16')](_0x24fe('0x8'),auth['isAuthenticated'](),interaction[_0x24fe('0x11')]('mail',_0x24fe('0x17')),controller[_0x24fe('0x18')]);router[_0x24fe('0x16')](_0x24fe('0x10'),auth[_0x24fe('0x5')](),controller['removeTags']);module[_0x24fe('0x19')]=router;
\ No newline at end of file
index ddfb60c..2ab2a95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9e1=['long','ENUM','out','sequelize','iconv','exports','BOOLEAN','DATE','STRING','TEXT'];(function(_0x14474a,_0x5be492){var _0x1f8b71=function(_0x4a7acd){while(--_0x4a7acd){_0x14474a['push'](_0x14474a['shift']());}};_0x1f8b71(++_0x5be492);}(_0xb9e1,0xad));var _0x1b9e=function(_0x205c11,_0x941d3d){_0x205c11=_0x205c11-0x0;var _0x550e7b=_0xb9e1[_0x205c11];return _0x550e7b;};'use strict';var Sequelize=require(_0x1b9e('0x0'));var iconv=require(_0x1b9e('0x1'));module[_0x1b9e('0x2')]={'closed':{'type':Sequelize[_0x1b9e('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1b9e('0x4')]},'disposition':{'type':Sequelize[_0x1b9e('0x5')]},'secondDisposition':{'type':Sequelize[_0x1b9e('0x5')]},'thirdDisposition':{'type':Sequelize[_0x1b9e('0x5')]},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x1b9e('0x5')](0x1fe)},'to':{'type':Sequelize[_0x1b9e('0x5')]},'cc':{'type':Sequelize[_0x1b9e('0x6')](_0x1b9e('0x7'))},'subject':{'type':Sequelize[_0x1b9e('0x6')]()},'attach':{'type':Sequelize[_0x1b9e('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x1b9e('0x4')]},'substatus':{'type':Sequelize[_0x1b9e('0x5')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x1b9e('0x8')]('in',_0x1b9e('0x9')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x1b9e('0x8')]('in',_0x1b9e('0x9')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x1b9e('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x445a=['exports','STRING','TEXT','BOOLEAN','ENUM','out','DATE','sequelize','iconv'];(function(_0xb39453,_0x22c39a){var _0x357c8f=function(_0x319f0e){while(--_0x319f0e){_0xb39453['push'](_0xb39453['shift']());}};_0x357c8f(++_0x22c39a);}(_0x445a,0x1e4));var _0xa445=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x445a[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0xa445('0x0'));var iconv=require(_0xa445('0x1'));module[_0xa445('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xa445('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xa445('0x3')]},'inReplyTo':{'type':Sequelize[_0xa445('0x3')](0x1fe)},'to':{'type':Sequelize[_0xa445('0x3')]},'cc':{'type':Sequelize[_0xa445('0x4')]('long')},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize[_0xa445('0x5')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize['STRING'](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0xa445('0x6')]('in',_0xa445('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xa445('0x8')]},'lastMsgDirection':{'type':Sequelize[_0xa445('0x6')]('in',_0xa445('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xa445('0x5')],'defaultValue':![]}};
\ No newline at end of file
index d651fd8..dae4178 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4134=['parseSearch','conditions','find','value','`\x20=\x200','having','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','some','compact','isEmpty','MailAccountId','where','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','getMailAccounts','i.MailAccountId\x20IS\x20NULL','agent','sequelize','toString','keyBy','merge','MailInteraction','a.key','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.createdAt','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.secondDisposition','i.substatus','i.to','i.ContactId','i.UserId','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','enableEmailPreview','all','rows','catch','show','params','rawAttributes','includeAll','include','options','create','body','describe','addMessage','ids','omit','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','spread','Tag','color','emit','removeTags','download','unix','join','root','files','server','transcript-%d-%s.zip','attachments','Attachment','Attachments','Messages','bcc','subject','get','mkdirSync','each','format','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','build','writeFileSync','message%d.eml','unlinkSync','rimraf','zip-dir','lodash','juice','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./mailInteraction.socket','register','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','update','then','destroy','stack','Users','fullname','TagIds','Tags','split','forEach','push','MailMessage','findOne','out','-id','plainBody','map','fieldName','model','name','query','keys','intersection','fields','attributes','length','nolimit','limit','order','sort','filters','pick','select','field','tools_tags','u.fullname','ui.MailInteractionId','from','user_has_mail_interactions','users','u.id\x20=\x20ui.UserId','mail_interactions','left_join','cm_contacts','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','mail_interaction_has_tags','it.MailInteractionId\x20=\x20i.id','expr','search','log','req.query.search'];(function(_0x4d1ce6,_0x110926){var _0x271cab=function(_0x5cf50d){while(--_0x5cf50d){_0x4d1ce6['push'](_0x4d1ce6['shift']());}};_0x271cab(++_0x110926);}(_0x4134,0x17c));var _0x4413=function(_0x483c92,_0x297cab){_0x483c92=_0x483c92-0x0;var _0x2af16c=_0x4134[_0x483c92];return _0x2af16c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4413('0x0'));var zipdir=require(_0x4413('0x1'));var moment=require('moment');var BPromise=require('bluebird');var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0x4413('0x2'));var squel=require('squel');var juice=require(_0x4413('0x3'));var Redis=require(_0x4413('0x4'));var qs=require('../../components/parsers/qs');var as=require(_0x4413('0x5'));var logger=require(_0x4413('0x6'))(_0x4413('0x7'));var config=require(_0x4413('0x8'));var db=require(_0x4413('0x9'))['db'];config[_0x4413('0xa')]=_[_0x4413('0xb')](config[_0x4413('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x4413('0xc'))(new Redis(config[_0x4413('0xa')]));require(_0x4413('0xd'))[_0x4413('0xe')](socket);function respondWithStatusCode(_0x5e4652,_0x3ba73b){_0x3ba73b=_0x3ba73b||0xcc;return function(_0xb95a8b){if(_0xb95a8b){return _0x5e4652[_0x4413('0xf')](_0x3ba73b);}return _0x5e4652['status'](_0x3ba73b)[_0x4413('0x10')]();};}function respondWithResult(_0x2662ea,_0x54296e){_0x54296e=_0x54296e||0xc8;return function(_0x37b550){if(_0x37b550){return _0x2662ea[_0x4413('0x11')](_0x54296e)[_0x4413('0x12')](_0x37b550);}};}function respondWithFilteredResult(_0x232586,_0x4427be){return function(_0x52c4af){if(_0x52c4af){var _0x56421e=typeof _0x4427be[_0x4413('0x13')]===_0x4413('0x14')&&typeof _0x4427be['limit']===_0x4413('0x14');var _0x3a7506=_0x52c4af[_0x4413('0x15')];var _0x3eec73=_0x56421e?0x0:_0x4427be[_0x4413('0x13')];var _0x55ae82=_0x56421e?_0x52c4af[_0x4413('0x15')]:_0x4427be[_0x4413('0x13')]+_0x4427be['limit'];var _0x23d0c1;if(_0x55ae82>=_0x3a7506){_0x55ae82=_0x3a7506;_0x23d0c1=0xc8;}else{_0x23d0c1=0xce;}_0x232586[_0x4413('0x11')](_0x23d0c1);return _0x232586[_0x4413('0x16')](_0x4413('0x17'),_0x3eec73+'-'+_0x55ae82+'/'+_0x3a7506)[_0x4413('0x12')](_0x52c4af);}return null;};}function saveUpdates(_0x39249e){return function(_0x40a3be){if(_0x40a3be){return _0x40a3be[_0x4413('0x18')](_0x39249e)[_0x4413('0x19')](function(_0x499d43){return _0x499d43;});}return null;};}function removeEntity(_0x4d96c9){return function(_0x48583a){if(_0x48583a){return _0x48583a[_0x4413('0x1a')]()[_0x4413('0x19')](function(){_0x4d96c9[_0x4413('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4532bb){return function(_0x52b786){if(!_0x52b786){_0x4532bb[_0x4413('0xf')](0x194);}return _0x52b786;};}function handleError(_0x167aca,_0x39c4b8){_0x39c4b8=_0x39c4b8||0x1f4;return function(_0xd8d380){logger['error'](_0xd8d380[_0x4413('0x1b')]);if(_0xd8d380['name']){delete _0xd8d380['name'];}_0x167aca[_0x4413('0x11')](_0x39c4b8)['send'](_0xd8d380);};}function getInteractionUsers(_0x3f4858,_0x3b427e){return new BPromise(function(_0x1dd6f3,_0x3b0c06){try{if(_0x3b427e[_0x3f4858['id']]){_0x3f4858[_0x4413('0x1c')]=_['map'](_0x3b427e[_0x3f4858['id']],function(_0x2d0951){return{'id':_0x2d0951['id'],'fullname':_0x2d0951[_0x4413('0x1d')]};});}}catch(_0x595f13){_0x3b0c06(_0x595f13);}_0x1dd6f3(_0x3f4858);});}function getInteractionTags(_0x21dd3f,_0x4e0c1e){return new BPromise(function(_0x16141b,_0x13e5c6){try{if(_0x21dd3f[_0x4413('0x1e')]){_0x21dd3f[_0x4413('0x1f')]=[];_0x21dd3f[_0x4413('0x1e')][_0x4413('0x20')](',')[_0x4413('0x21')](function(_0x11e319){_0x21dd3f[_0x4413('0x1f')][_0x4413('0x22')](_0x4e0c1e[_0x11e319]);});}delete _0x21dd3f['TagIds'];}catch(_0xf6f30a){_0x13e5c6(_0xf6f30a);}_0x16141b(_0x21dd3f);});}function getLastMessageText(_0x11fa6f){return new BPromise(function(_0x55d652,_0x271c75){return db[_0x4413('0x23')][_0x4413('0x24')]({'where':{'$and':[{'MailInteractionId':_0x11fa6f['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x4413('0x25')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x4413('0x26'),'raw':!![]})[_0x4413('0x19')](function(_0x378343){if(_0x378343&&_0x378343[_0x4413('0x27')]){_0x11fa6f['lastMsgText']=_['trimStart'](_0x378343['plainBody']);}_0x55d652(_0x11fa6f);})['catch'](function(_0x406119){_0x271c75(_0x406119);});});}function updateMailInteraction(_0x3cc2b3,_0x2528d7,_0x17a81c,_0x4532df){return new BPromise(function(_0x322814,_0x51a447){return getInteractionUsers(_0x3cc2b3,_0x17a81c)[_0x4413('0x19')](function(_0x3ecec9){return getInteractionTags(_0x3ecec9,_0x2528d7);})[_0x4413('0x19')](function(_0x202ef3){if(_0x4532df){_0x322814(getLastMessageText(_0x202ef3));}else{_0x322814(_0x202ef3);}})['catch'](function(_0x589ec2){_0x51a447(_0x589ec2);});});}exports['index']=function(_0x40328c,_0x59c2ba){var _0x2fe3e5={},_0x1e9695={},_0x463dfa={'count':0x0,'rows':[]};var _0x5012c6=_[_0x4413('0x28')](db['MailInteraction']['rawAttributes'],function(_0x883e8b){return{'name':_0x883e8b[_0x4413('0x29')],'type':_0x883e8b['type']['key']};});_0x1e9695[_0x4413('0x2a')]=_[_0x4413('0x28')](_0x5012c6,_0x4413('0x2b'));_0x1e9695[_0x4413('0x2c')]=_[_0x4413('0x2d')](_0x40328c['query']);_0x1e9695['filters']=_[_0x4413('0x2e')](_0x1e9695[_0x4413('0x2a')],_0x1e9695['query']);_0x2fe3e5['attributes']=_[_0x4413('0x2e')](_0x1e9695[_0x4413('0x2a')],qs[_0x4413('0x2f')](_0x40328c[_0x4413('0x2c')]['fields']));_0x2fe3e5[_0x4413('0x30')]=_0x2fe3e5['attributes'][_0x4413('0x31')]?_0x2fe3e5['attributes']:_0x1e9695[_0x4413('0x2a')];if(!_0x40328c[_0x4413('0x2c')]['hasOwnProperty'](_0x4413('0x32'))){_0x2fe3e5[_0x4413('0x33')]=qs['limit'](_0x40328c[_0x4413('0x2c')]['limit']);_0x2fe3e5[_0x4413('0x13')]=qs['offset'](_0x40328c[_0x4413('0x2c')][_0x4413('0x13')]);}_0x2fe3e5[_0x4413('0x34')]=qs[_0x4413('0x35')](_0x40328c[_0x4413('0x2c')][_0x4413('0x35')]);_0x2fe3e5['where']=qs[_0x4413('0x36')](_[_0x4413('0x37')](_0x40328c[_0x4413('0x2c')],_0x1e9695[_0x4413('0x36')]),_0x5012c6);var _0x389be7=[];var _0x37686e=squel[_0x4413('0x38')]()[_0x4413('0x39')]('id')['field']('name')['field']('color')['from'](_0x4413('0x3a'));var _0x2d9e23=squel['select']()[_0x4413('0x39')]('u.id')[_0x4413('0x39')](_0x4413('0x3b'))[_0x4413('0x39')](_0x4413('0x3c'))[_0x4413('0x3d')](_0x4413('0x3e'),'ui')['left_join'](_0x4413('0x3f'),'u',_0x4413('0x40'));var _0x6a6fb2=squel['select']()['from'](_0x4413('0x41'),'i')[_0x4413('0x42')](_0x4413('0x43'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x4413('0x42')](_0x4413('0x3f'),'o','o.id\x20=\x20i.UserId')['left_join'](_0x4413('0x44'),'a',_0x4413('0x45'))[_0x4413('0x42')](_0x4413('0x46'),'me',_0x4413('0x47'))['left_join'](_0x4413('0x48'),'it',_0x4413('0x49'))[_0x4413('0x42')]('tools_tags','t','t.id\x20=\x20it.TagId');var _0x33ec73=squel[_0x4413('0x4a')]();var _0x36ea37=[];var _0x5aca25=squel[_0x4413('0x4a')]();var _0x286a8b;if(_0x40328c[_0x4413('0x2c')][_0x4413('0x4b')]){console[_0x4413('0x4c')](_0x4413('0x4d'),_0x40328c[_0x4413('0x2c')][_0x4413('0x4b')]);_0x286a8b=as[_0x4413('0x4e')](_0x40328c[_0x4413('0x2c')][_0x4413('0x4b')]);var _0x8958f8=_0x286a8b['sqlOperator'];for(var _0x2b14fb=0x0;_0x2b14fb<_0x286a8b[_0x4413('0x4f')][_0x4413('0x31')];_0x2b14fb++){var _0x91132=_0x286a8b[_0x4413('0x4f')][_0x2b14fb];var _0x27f639='i';var _0x1717bb=_[_0x4413('0x50')](_0x5012c6,['name',_0x91132[_0x4413('0x39')]]);if(!_0x1717bb){switch(_0x91132[_0x4413('0x39')]){case'unreadMessages':if(_0x91132[_0x4413('0x51')]==0x1){_0x6a6fb2['having']('`'+_0x91132['field']+_0x4413('0x52'));}else{_0x6a6fb2[_0x4413('0x53')]('`'+_0x91132['field']+'`\x20>\x200');}break;case _0x4413('0x54'):if(_0x91132['operator']===_0x4413('0x55')){if(_0x91132[_0x4413('0x51')]['split']('\x20')['length']>0x1){_0x33ec73[_0x8958f8](_0x4413('0x56'),qs[_0x4413('0x57')](_0x91132[_0x4413('0x51')]),null);}else{var _0x7e1225='%'+_0x91132[_0x4413('0x51')]+'%';_0x33ec73[_0x8958f8](_0x4413('0x58'),_0x7e1225,_0x7e1225,_0x7e1225);}}else{_0x1717bb=_[_0x4413('0x50')](_0x5012c6,['name',_0x4413('0x59')]);_0x91132[_0x4413('0x39')]=_0x4413('0x59');_0x5b84d3=as[_0x4413('0x5a')](_0x27f639,_0x1717bb[_0x4413('0x5b')],_0x91132);_0x33ec73[_0x8958f8](_0x5b84d3[_0x4413('0x5c')],_0x5b84d3[_0x4413('0x51')][_0x4413('0x5d')],_0x5b84d3['value'][_0x4413('0x10')]);}break;case'Tag':var _0x4874ad=_0x91132[_0x4413('0x51')][_0x4413('0x20')](',')[_0x4413('0x28')](function(_0x54679b){return Number(_0x54679b);});_0x4874ad[_0x4413('0x21')](function(_0x122872){_0x5aca25['or'](_0x4413('0x5e'),'%,'+_0x122872+',%');});_0x36ea37=_[_0x4413('0x5f')](_0x36ea37,_0x4874ad);break;case'User':if(_0x91132['operator']===_0x4413('0x55')){_0x33ec73[_0x8958f8](_0x4413('0x60'),'%'+_0x91132[_0x4413('0x51')]+'%',null);}else{_0x1717bb=_[_0x4413('0x50')](_0x5012c6,[_0x4413('0x2b'),'UserId']);_0x91132[_0x4413('0x39')]='UserId';_0x5b84d3=as[_0x4413('0x5a')](_0x27f639,_0x1717bb['type'],_0x91132);_0x33ec73[_0x8958f8](_0x5b84d3[_0x4413('0x5c')],_0x5b84d3[_0x4413('0x51')][_0x4413('0x5d')],_0x5b84d3[_0x4413('0x51')]['end']);}break;case _0x4413('0x27'):_0x5b84d3=as[_0x4413('0x5a')]('me',null,_0x91132);_0x33ec73[_0x8958f8](_0x5b84d3[_0x4413('0x5c')],_0x5b84d3[_0x4413('0x51')][_0x4413('0x5d')],_0x5b84d3[_0x4413('0x51')][_0x4413('0x10')]);break;}}else{var _0x5b84d3=as['buildExpression'](_0x27f639,_0x1717bb[_0x4413('0x5b')],_0x91132);_0x33ec73[_0x8958f8](_0x5b84d3[_0x4413('0x5c')],_0x5b84d3['value'][_0x4413('0x5d')],_0x5b84d3[_0x4413('0x51')][_0x4413('0x10')]);}}}else{var _0x138977=_(_0x40328c['query'])[_0x4413('0x2d')]()[_0x4413('0x28')](function(_0x56fbc0){return _[_0x4413('0x61')](_0x5012c6,[_0x4413('0x2b'),_0x56fbc0])?_0x56fbc0:undefined;})[_0x4413('0x62')]()[_0x4413('0x51')]();if(!_[_0x4413('0x63')](_0x138977)){_0x138977[_0x4413('0x21')](function(_0x4f31d9){if(_0x4f31d9===_0x4413('0x64')){_0x6a6fb2[_0x4413('0x65')](_0x4413('0x66'),[][_0x4413('0x67')](_0x40328c[_0x4413('0x2c')][_0x4f31d9]));}else if(_0x4f31d9===_0x4413('0x68')){var _0x14e45c=JSON[_0x4413('0x69')](_0x40328c[_0x4413('0x2c')][_0x4f31d9])[_0x4413('0x6a')];var _0x39e84e=JSON[_0x4413('0x69')](_0x40328c[_0x4413('0x2c')][_0x4f31d9])['$lte'];_0x6a6fb2[_0x4413('0x65')](_0x4413('0x6b'),_0x14e45c,_0x39e84e);}else{if(_0x40328c[_0x4413('0x2c')][_0x4f31d9]===_0x4413('0x6c')){_0x6a6fb2[_0x4413('0x65')]('i.'+_0x4f31d9+_0x4413('0x6d'));}else{_0x6a6fb2[_0x4413('0x65')]('i.'+_0x4f31d9+_0x4413('0x6e'),_0x40328c[_0x4413('0x2c')][_0x4f31d9]);}}});}if(_0x40328c[_0x4413('0x2c')][_0x4413('0x6f')]){if(_0x40328c[_0x4413('0x2c')]['read']==0x1){_0x6a6fb2[_0x4413('0x53')](_0x4413('0x70'));}else{_0x6a6fb2['having'](_0x4413('0x71'));}}if(_0x40328c[_0x4413('0x2c')][_0x4413('0x72')]){_0x36ea37=_[_0x4413('0x73')](_0x40328c[_0x4413('0x2c')][_0x4413('0x72')])?_0x40328c[_0x4413('0x2c')][_0x4413('0x72')]:new Array(_0x40328c[_0x4413('0x2c')][_0x4413('0x72')]);_0x36ea37[_0x4413('0x21')](function(_0x3a4bb5){_0x5aca25['or'](_0x4413('0x5e'),'%,'+_0x3a4bb5+',%');});}if(_0x40328c[_0x4413('0x2c')]['filter']){var _0x9aee66=_0x40328c[_0x4413('0x2c')]['filter'][_0x4413('0x74')]('\x5c','\x5c\x5c')[_0x4413('0x74')](/'/g,'\x27\x27');if(qs[_0x4413('0x75')](_0x9aee66)){_0x33ec73['or'](_0x4413('0x76'),_0x9aee66+'%');}else if(qs[_0x4413('0x77')](_0x9aee66)){_0x33ec73['or'](_0x4413('0x78'),_0x9aee66+'%');}else{_0x33ec73['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x4413('0x57')](_0x9aee66))['or'](_0x4413('0x79'),qs['getFullTextValue'](_0x9aee66));}}}_0x6a6fb2[_0x4413('0x65')](_0x33ec73);_0x6a6fb2[_0x4413('0x7a')](_0x4413('0x7b'));var _0x12d9f0={'type':db['Sequelize'][_0x4413('0x7c')][_0x4413('0x7d')],'raw':!![]};var _0x4f1ba0=_0x6a6fb2[_0x4413('0x7e')]();_0x4f1ba0['field']('i.id');_0x4f1ba0[_0x4413('0x39')](_0x4413('0x7f'),_0x4413('0x80'));if(_0x2fe3e5[_0x4413('0x34')]){_0x2fe3e5[_0x4413('0x34')][_0x4413('0x21')](function(_0x57b485){var _0x5883a7=_0x57b485[0x0]===_0x4413('0x81')?_0x57b485[0x0]:'i.'+_0x57b485[0x0];_0x6a6fb2[_0x4413('0x34')](_0x5883a7,_0x57b485[0x1]===_0x4413('0x82')?![]:!![]);});}if(!_[_0x4413('0x63')](_0x36ea37)){_0x6a6fb2[_0x4413('0x53')](_0x5aca25);_0x4f1ba0[_0x4413('0x65')]('t.id\x20IN\x20?',_0x36ea37);}BPromise[_0x4413('0x83')]()['then'](function(){if(!_0x286a8b){if(_0x40328c[_0x4413('0x2c')][_0x4413('0x64')])return;_0x4f1ba0['where'](_0x4413('0x84'));_0x6a6fb2['where']('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x40328c[_0x4413('0x85')][_0x4413('0x86')]!=='agent')return;return _0x40328c[_0x4413('0x85')][_0x4413('0x87')]({'attributes':['id'],'raw':!![]})[_0x4413('0x19')](function(_0x5aebfc){if(_[_0x4413('0x63')](_0x5aebfc)){_0x4f1ba0[_0x4413('0x65')](_0x4413('0x88'));_0x6a6fb2[_0x4413('0x65')]('i.MailAccountId\x20IS\x20NULL');}else{_0x4f1ba0['where'](_0x4413('0x66'),_[_0x4413('0x28')](_0x5aebfc,'id'));_0x6a6fb2[_0x4413('0x65')](_0x4413('0x66'),_[_0x4413('0x28')](_0x5aebfc,'id'));}});})[_0x4413('0x19')](function(){if(_0x40328c[_0x4413('0x85')]['role']===_0x4413('0x89')&&!_0x286a8b&&!_0x40328c['query'][_0x4413('0x64')])return[];return db[_0x4413('0x8a')]['query'](_0x4f1ba0['toString'](),_0x12d9f0);})[_0x4413('0x19')](function(_0xbd61e){_0x463dfa['count']=_0xbd61e[_0x4413('0x31')];if(_0x463dfa[_0x4413('0x15')]===0x0)return[];return db[_0x4413('0x8a')][_0x4413('0x2c')](_0x37686e[_0x4413('0x8b')](),_0x12d9f0)['then'](function(_0x22c6e9){_0x389be7=_[_0x4413('0x8c')](_0x22c6e9,'id');_0x12d9f0=_[_0x4413('0x8d')](_0x12d9f0,{'model':db[_0x4413('0x8e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x40328c[_0x4413('0x2c')][_0x4413('0x2f')]){_0x2fe3e5[_0x4413('0x30')]['forEach'](function(_0xcc885){_0x6a6fb2[_0x4413('0x39')]('i.'+_0xcc885);});}else{_0x6a6fb2[_0x4413('0x39')](_0x4413('0x7f'),_0x4413('0x80'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x8f'),_0x4413('0x90'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x91'),'Account.mandatoryDisposition');_0x6a6fb2[_0x4413('0x39')](_0x4413('0x92'),_0x4413('0x81'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x7b'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x93'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x94'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x95'));_0x6a6fb2[_0x4413('0x39')]('i.closedAt');_0x6a6fb2[_0x4413('0x39')](_0x4413('0x96'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x97'));_0x6a6fb2['field'](_0x4413('0x98'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x99'));_0x6a6fb2['field']('i.disposition');_0x6a6fb2['field'](_0x4413('0x9a'));_0x6a6fb2[_0x4413('0x39')]('i.thirdDisposition');_0x6a6fb2[_0x4413('0x39')](_0x4413('0x9b'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x9c'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x9d'));_0x6a6fb2[_0x4413('0x39')]('i.MailAccountId');_0x6a6fb2[_0x4413('0x39')](_0x4413('0x9e'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0x9f'),_0x4413('0xa0'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0xa1'),'Contact.lastName');_0x6a6fb2[_0x4413('0x39')](_0x4413('0xa2'),_0x4413('0xa3'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0xa4'),'Contact.phone');_0x6a6fb2[_0x4413('0x39')]('c.mobile',_0x4413('0xa5'));_0x6a6fb2['field'](_0x4413('0xa6'),_0x4413('0xa7'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0xa8'),_0x4413('0xa9'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0xaa'),_0x4413('0xab'));_0x6a6fb2[_0x4413('0x39')](_0x4413('0xac'),_0x4413('0x1e'));}if(_0x2fe3e5[_0x4413('0x33')])_0x6a6fb2[_0x4413('0x33')](_0x2fe3e5['limit']);if(_0x2fe3e5[_0x4413('0x13')])_0x6a6fb2[_0x4413('0x13')](_0x2fe3e5['offset']);return db[_0x4413('0x8a')]['query'](_0x6a6fb2['toString'](),_0x12d9f0);})['then'](function(_0x20ce3a){if(_0x20ce3a[_0x4413('0x31')]>0x0)_0x2d9e23['where'](_0x4413('0xad'),_[_0x4413('0x28')](_0x20ce3a,'id'));return db['sequelize'][_0x4413('0x2c')](_0x2d9e23[_0x4413('0x8b')](),_0x12d9f0)[_0x4413('0x19')](function(_0xe14045){var _0x1184dc=_[_0x4413('0xae')](_0xe14045,_0x4413('0xaf'));var _0x14559c=[];return db[_0x4413('0xb0')][_0x4413('0x24')]({'attributes':[_0x4413('0xb1')],'raw':!![]})[_0x4413('0x19')](function(_0xf80c4){var _0x5aa53e=_0xf80c4[_0x4413('0xb1')];_0x20ce3a[_0x4413('0x21')](function(_0x386183){_0x14559c[_0x4413('0x22')](updateMailInteraction(_0x386183,_0x389be7,_0x1184dc,_0x5aa53e));});return BPromise[_0x4413('0xb2')](_0x14559c);});});});})[_0x4413('0x19')](function(_0x1c6ce6){_0x463dfa[_0x4413('0xb3')]=_0x1c6ce6;return _0x463dfa;})[_0x4413('0x19')](respondWithFilteredResult(_0x59c2ba,_0x2fe3e5))[_0x4413('0xb4')](handleError(_0x59c2ba,null));};exports[_0x4413('0xb5')]=function(_0xfbaac9,_0x51661f){var _0x21baf6={'raw':![],'where':{'id':_0xfbaac9[_0x4413('0xb6')]['id']}},_0x2a5f69={};_0x2a5f69[_0x4413('0x2a')]=_[_0x4413('0x2d')](db[_0x4413('0x8e')][_0x4413('0xb7')]);_0x2a5f69[_0x4413('0x2c')]=_[_0x4413('0x2d')](_0xfbaac9[_0x4413('0x2c')]);_0x2a5f69[_0x4413('0x36')]=_['intersection'](_0x2a5f69[_0x4413('0x2a')],_0x2a5f69[_0x4413('0x2c')]);_0x21baf6[_0x4413('0x30')]=_[_0x4413('0x2e')](_0x2a5f69[_0x4413('0x2a')],qs['fields'](_0xfbaac9['query'][_0x4413('0x2f')]));_0x21baf6[_0x4413('0x30')]=_0x21baf6[_0x4413('0x30')][_0x4413('0x31')]?_0x21baf6[_0x4413('0x30')]:_0x2a5f69[_0x4413('0x2a')];if(_0xfbaac9[_0x4413('0x2c')][_0x4413('0xb8')]){_0x21baf6[_0x4413('0xb9')]=[{'all':!![]}];}_0x21baf6=_[_0x4413('0x8d')]({},_0x21baf6,_0xfbaac9[_0x4413('0xba')]);return db[_0x4413('0x8e')]['find'](_0x21baf6)[_0x4413('0x19')](handleEntityNotFound(_0x51661f,null))[_0x4413('0x19')](respondWithResult(_0x51661f,null))['catch'](handleError(_0x51661f,null));};exports[_0x4413('0xbb')]=function(_0x23e774,_0x153bf3){return db[_0x4413('0x8e')][_0x4413('0xbb')](_0x23e774[_0x4413('0xbc')],{})['then'](respondWithResult(_0x153bf3,0xc9))[_0x4413('0xb4')](handleError(_0x153bf3,null));};exports[_0x4413('0x18')]=function(_0x4802be,_0x3b1bb3){if(_0x4802be[_0x4413('0xbc')]['id']){delete _0x4802be[_0x4413('0xbc')]['id'];}return db['MailInteraction'][_0x4413('0x50')]({'where':{'id':_0x4802be[_0x4413('0xb6')]['id']}})[_0x4413('0x19')](handleEntityNotFound(_0x3b1bb3,null))['then'](saveUpdates(_0x4802be[_0x4413('0xbc')],null))['then'](respondWithResult(_0x3b1bb3,null))[_0x4413('0xb4')](handleError(_0x3b1bb3,null));};exports['destroy']=function(_0x12e62e,_0x7b469a){return db['MailInteraction'][_0x4413('0x50')]({'where':{'id':_0x12e62e[_0x4413('0xb6')]['id']}})[_0x4413('0x19')](handleEntityNotFound(_0x7b469a,null))[_0x4413('0x19')](removeEntity(_0x7b469a,null))[_0x4413('0xb4')](handleError(_0x7b469a,null));};exports[_0x4413('0xbd')]=function(_0x1241c7,_0x3c78c7){return db['MailInteraction'][_0x4413('0xbd')]()[_0x4413('0x19')](respondWithResult(_0x3c78c7,null))[_0x4413('0xb4')](handleError(_0x3c78c7,null));};exports['addMessage']=function(_0x473a5c,_0x4c6f22){return db['MailMessage'][_0x4413('0x50')]({'where':{'id':_0x473a5c[_0x4413('0xb6')]['id']}})[_0x4413('0x19')](handleEntityNotFound(_0x4c6f22,null))[_0x4413('0x19')](function(_0x2c9d10){if(_0x2c9d10){return _0x2c9d10[_0x4413('0xbe')](_0x473a5c[_0x4413('0xbc')][_0x4413('0xbf')],_[_0x4413('0xc0')](_0x473a5c['body'],['ids','id'])||{});}})[_0x4413('0x19')](respondWithResult(_0x4c6f22,null))['catch'](handleError(_0x4c6f22,null));};exports['getMessages']=function(_0x4b1b76,_0x262b18){var _0x35eac3={'raw':![],'where':{}};var _0x331b98={};var _0x29067d={'count':0x0,'rows':[]};return db[_0x4413('0x8e')][_0x4413('0x24')]({'where':{'id':_0x4b1b76['params']['id']}})[_0x4413('0x19')](handleEntityNotFound(_0x262b18,null))[_0x4413('0x19')](function(_0x14ff24){if(_0x14ff24){_0x331b98[_0x4413('0x2a')]=_[_0x4413('0x2d')](db[_0x4413('0x23')][_0x4413('0xb7')]);_0x331b98[_0x4413('0x2c')]=_[_0x4413('0x2d')](_0x4b1b76[_0x4413('0x2c')]);_0x331b98[_0x4413('0x36')]=_[_0x4413('0x2e')](_0x331b98['model'],_0x331b98[_0x4413('0x2c')]);_0x35eac3[_0x4413('0x30')]=_['intersection'](_0x331b98[_0x4413('0x2a')],qs[_0x4413('0x2f')](_0x4b1b76[_0x4413('0x2c')][_0x4413('0x2f')]));_0x35eac3[_0x4413('0x30')]=_0x35eac3[_0x4413('0x30')][_0x4413('0x31')]?_0x35eac3['attributes']:_0x331b98[_0x4413('0x2a')];if(!_0x4b1b76['query']['hasOwnProperty'](_0x4413('0x32'))){_0x35eac3['limit']=qs['limit'](_0x4b1b76[_0x4413('0x2c')][_0x4413('0x33')]);_0x35eac3['offset']=qs[_0x4413('0x13')](_0x4b1b76[_0x4413('0x2c')][_0x4413('0x13')]);}_0x35eac3[_0x4413('0x34')]=qs[_0x4413('0x35')](_0x4b1b76['query'][_0x4413('0x35')]);_0x35eac3[_0x4413('0x65')]=qs[_0x4413('0x36')](_[_0x4413('0x37')](_0x4b1b76['query'],_0x331b98[_0x4413('0x36')]));_0x35eac3['where'][_0x4413('0xaf')]=_0x14ff24['id'];if(_0x4b1b76[_0x4413('0x2c')]['filter']){_0x35eac3[_0x4413('0x65')]=_['merge'](_0x35eac3[_0x4413('0x65')],{'$or':_[_0x4413('0x28')](_0x35eac3['attributes'],function(_0x45f7dc){var _0x34e9b9={};_0x34e9b9[_0x45f7dc]={'$like':'%'+_0x4b1b76[_0x4413('0x2c')]['filter']+'%'};return _0x34e9b9;})});}if(_0x4b1b76[_0x4413('0x2c')][_0x4413('0x6a')]){var _0x3f9c3a=_0x4b1b76[_0x4413('0x2c')][_0x4413('0x6a')][_0x4413('0x20')](',');var _0xa7e7bd={};_0xa7e7bd[_0x3f9c3a[0x0]]={'$gte':moment(_0x3f9c3a[0x1])['format'](_0x4413('0xc1'))};_0x35eac3[_0x4413('0x65')]=_[_0x4413('0x8d')](_0x35eac3[_0x4413('0x65')],_0xa7e7bd);}_0x35eac3=_['merge']({},_0x35eac3,_0x4b1b76[_0x4413('0xba')]);return db[_0x4413('0x23')][_0x4413('0x15')]({'where':_0x35eac3[_0x4413('0x65')]})[_0x4413('0x19')](function(_0x1ca3b9){_0x29067d['count']=_0x1ca3b9;if(_0x4b1b76['query'][_0x4413('0xb8')]){_0x35eac3[_0x4413('0xb9')]=[{'all':!![]}];}return db['MailMessage'][_0x4413('0xc2')](_0x35eac3);})['then'](function(_0xee003d){if(_0x4b1b76['query'][_0x4413('0xc3')]===_0x4413('0xc4')){for(var _0x340531=0x0;_0x340531<_0xee003d[_0x4413('0x31')];_0x340531++){_0xee003d[_0x340531]['body']=juice(_0xee003d[_0x340531]['body']);}}_0x29067d[_0x4413('0xb3')]=_0xee003d;return _0x29067d;});}})[_0x4413('0x19')](respondWithFilteredResult(_0x262b18,_0x35eac3))[_0x4413('0xb4')](handleError(_0x262b18,null));};exports[_0x4413('0xc5')]=function(_0x58ff72,_0x4f07ad){return db['MailInteraction'][_0x4413('0x50')]({'where':{'id':_0x58ff72['params']['id']}})[_0x4413('0x19')](handleEntityNotFound(_0x4f07ad,null))[_0x4413('0x19')](function(_0x45788b){if(_0x45788b){return _0x45788b[_0x4413('0xc6')](_0x58ff72[_0x4413('0xbc')][_0x4413('0xbf')],_['omit'](_0x58ff72[_0x4413('0xbc')],[_0x4413('0xbf'),'id'])||{})[_0x4413('0xc7')](function(){return db[_0x4413('0xc8')][_0x4413('0xc2')]({'attributes':['id',_0x4413('0x2b'),_0x4413('0xc9')],'where':{'id':_0x58ff72[_0x4413('0xbc')]['ids']}});})[_0x4413('0x19')](function(_0x5adb22){socket[_0x4413('0xca')]('mailInteractionTags:save',{'id':Number(_0x58ff72[_0x4413('0xb6')]['id']),'tags':_0x5adb22||[]});return{'id':Number(_0x58ff72[_0x4413('0xb6')]['id']),'tags':_0x5adb22||[]};});}})[_0x4413('0x19')](respondWithResult(_0x4f07ad,null))[_0x4413('0xb4')](handleError(_0x4f07ad,null));};exports[_0x4413('0xcb')]=function(_0x22f0c2,_0x1a38b2){return db['MailInteraction'][_0x4413('0x50')]({'where':{'id':_0x22f0c2[_0x4413('0xb6')]['id']}})[_0x4413('0x19')](handleEntityNotFound(_0x1a38b2,null))['then'](function(_0x8513d7){if(_0x8513d7){return _0x8513d7['removeTags'](_0x22f0c2['query']['ids']);}})[_0x4413('0x19')](respondWithStatusCode(_0x1a38b2,null))[_0x4413('0xb4')](handleError(_0x1a38b2,null));};exports[_0x4413('0xcc')]=function(_0x2c8031,_0x2b2ea5){var _0x1f6858=moment()[_0x4413('0xcd')]()[_0x4413('0x8b')]();var _0x67c89c=path[_0x4413('0xce')](config[_0x4413('0xcf')],'server',_0x4413('0xd0'),'tmp');var _0x39dc9d=path[_0x4413('0xce')](config[_0x4413('0xcf')],_0x4413('0xd1'),_0x4413('0xd0'),'attachments');var _0x5ec446=path[_0x4413('0xce')](_0x67c89c,_0x1f6858);var _0x58fdef=util['format'](_0x4413('0xd2'),_0x2c8031[_0x4413('0xb6')]['id'],_0x1f6858);var _0xc471e8=path[_0x4413('0xce')](_0x67c89c,_0x58fdef);var _0x34ff57=[];if(_0x2c8031[_0x4413('0x2c')][_0x4413('0xd3')]){_0x34ff57['push']({'model':db[_0x4413('0xd4')],'as':_0x4413('0xd5'),'raw':!![]});}var _0x30c86f=[{'model':db['MailMessage'],'as':_0x4413('0xd6'),'attributes':['id',_0x4413('0xbc'),_0x4413('0x3d'),'to','cc',_0x4413('0xd7'),_0x4413('0xd8'),'createdAt'],'where':{'secret':![]},'order':qs[_0x4413('0x35')]('id'),'include':_0x34ff57}];return db[_0x4413('0x8e')][_0x4413('0x50')]({'where':{'id':_0x2c8031[_0x4413('0xb6')]['id']},'include':_0x30c86f})[_0x4413('0x19')](handleEntityNotFound(_0x2b2ea5,null))[_0x4413('0x19')](function(_0x3ba8ff){if(_0x3ba8ff&&_0x3ba8ff[_0x4413('0xd6')]){var _0x5d9cfa=_0x3ba8ff[_0x4413('0xd9')]({'plain':!![]});fs[_0x4413('0xda')](_0x5ec446);return BPromise[_0x4413('0xdb')](_0x5d9cfa[_0x4413('0xd6')],function(_0x300e9b,_0x4e2140){var _0x52d923={'from':_0x300e9b[_0x4413('0x3d')],'to':_0x300e9b['to'],'subject':_0x300e9b[_0x4413('0xd8')],'html':_0x300e9b[_0x4413('0xbc')],'headers':{'Date':moment(_0x300e9b[_0x4413('0x68')])[_0x4413('0xdc')](_0x4413('0xdd'))},'attachments':[]};if(_0x300e9b['cc']){_0x52d923[_0x4413('0xde')]['Cc']=_0x300e9b['cc'];}if(_0x300e9b[_0x4413('0xd7')]){_0x52d923['headers'][_0x4413('0xdf')]=_0x300e9b[_0x4413('0xd7')];}return new BPromise(function(_0x5a8585,_0x317d74){if(_0x300e9b['Attachments']){for(var _0x3570a0=0x0;_0x3570a0<_0x300e9b[_0x4413('0xd5')][_0x4413('0x31')];_0x3570a0++){var _0x5ac0db=_0x300e9b[_0x4413('0xd5')][_0x3570a0];var _0x845bff=path['join'](_0x39dc9d,_0x5ac0db['basename']);if(fs[_0x4413('0xe0')](_0x845bff)){_0x52d923[_0x4413('0xd3')][_0x4413('0x22')]({'name':_0x5ac0db['name'],'contentType':_0x5ac0db['type'],'data':fs['readFileSync'](_0x845bff)});}}}emlformat[_0x4413('0xe1')](_0x52d923,function(_0x5a5bdf,_0x249ab1){if(_0x5a5bdf)return _0x317d74(_0x5a5bdf);fs[_0x4413('0xe2')](path['join'](_0x5ec446,util[_0x4413('0xdc')](_0x4413('0xe3'),_0x4e2140)),_0x249ab1);return _0x5a8585(_0x249ab1);});});})['then'](function(){return new BPromise(function(_0x2ae590,_0x20cb62){zipdir(_0x5ec446,{'saveTo':_0xc471e8},function(_0x3b20c3,_0x26a3bf){if(_0x3b20c3)return _0x20cb62(_0x3b20c3);return _0x2ae590(_0x26a3bf);});})['then'](function(){return new BPromise(function(_0x57e88a,_0x5e461d){rimraf(_0x5ec446,function(_0x12135c){if(_0x12135c)_0x5e461d(_0x12135c);return _0x57e88a();});});})['then'](function(){return _0x2b2ea5[_0x4413('0xcc')](_0xc471e8,_0x58fdef,function(_0x53e57f){if(!_0x53e57f)fs[_0x4413('0xe4')](_0xc471e8);});});});}else{return _0x2b2ea5[_0x4413('0xf')](0xc8);}})['catch'](handleError(_0x2b2ea5,null));};
\ No newline at end of file
+var _0x965d=['update','then','destroy','sendStatus','name','send','Users','map','fullname','split','forEach','push','TagIds','findOne','out','-id','plainBody','lastMsgText','trimStart','catch','waiting','talking','answered','total','UserId','closed','unmanaged','index','MailInteraction','rawAttributes','fieldName','type','key','model','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','where','pick','select','field','color','ui.MailInteractionId','user_has_mail_interactions','left_join','users','from','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','mail_interaction_has_tags','it.MailInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','conditions','find','value','`\x20=\x200','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','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','start','some','compact','isEmpty','MailAccountId','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isEmail','c.email\x20LIKE\x20?','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','Sequelize','SELECT','clone','i.id','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','role','agent','user','i.MailAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','i.createdAt','i.updatedAt','i.closedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.to','i.ContactId','i.UserId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','Setting','enableEmailPreview','all','params','includeAll','options','create','body','describe','addMessage','MailMessage','ids','getMessages','keys','nolimit','sort','MailInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','include','findAll','inlineCss','true','rows','addTags','omit','spread','emit','removeTags','download','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','Attachment','Attachments','Messages','bcc','mkdirSync','each','subject','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','moment','bluebird','util','lodash','squel','juice','api','../../config/environment','html-entities','defaults','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','end','status','json','offset','count','limit','Content-Range'];(function(_0x22c407,_0x40c8c8){var _0x3d698b=function(_0x13e471){while(--_0x13e471){_0x22c407['push'](_0x22c407['shift']());}};_0x3d698b(++_0x40c8c8);}(_0x965d,0x1be));var _0xd965=function(_0x205c8,_0x5c4834){_0x205c8=_0x205c8-0x0;var _0x9fd7a1=_0x965d[_0x205c8];return _0x9fd7a1;};'use strict';var emlformat=require(_0xd965('0x0'));var rimraf=require(_0xd965('0x1'));var zipdir=require('zip-dir');var moment=require(_0xd965('0x2'));var BPromise=require(_0xd965('0x3'));var util=require(_0xd965('0x4'));var path=require('path');var fs=require('fs');var _=require(_0xd965('0x5'));var squel=require(_0xd965('0x6'));var juice=require(_0xd965('0x7'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var logger=require('../../config/logger')(_0xd965('0x8'));var config=require(_0xd965('0x9'));var db=require('../../mysqldb')['db'];var htmlEntities=require(_0xd965('0xa'));config['redis']=_[_0xd965('0xb')](config[_0xd965('0xc')],{'host':_0xd965('0xd'),'port':0x18eb});var socket=require(_0xd965('0xe'))(new Redis(config['redis']));require(_0xd965('0xf'))[_0xd965('0x10')](socket);function respondWithStatusCode(_0x21c632,_0x52da8d){_0x52da8d=_0x52da8d||0xcc;return function(_0x56554f){if(_0x56554f){return _0x21c632['sendStatus'](_0x52da8d);}return _0x21c632['status'](_0x52da8d)[_0xd965('0x11')]();};}function respondWithResult(_0x21b59d,_0x5b962b){_0x5b962b=_0x5b962b||0xc8;return function(_0x321065){if(_0x321065){return _0x21b59d[_0xd965('0x12')](_0x5b962b)[_0xd965('0x13')](_0x321065);}};}function respondWithFilteredResult(_0x42539d,_0x25c007){return function(_0x538b7f){if(_0x538b7f){var _0xd3f08a=typeof _0x25c007[_0xd965('0x14')]==='undefined'&&typeof _0x25c007['limit']==='undefined';var _0x30edc3=_0x538b7f[_0xd965('0x15')];var _0x13feed=_0xd3f08a?0x0:_0x25c007[_0xd965('0x14')];var _0x4f1960=_0xd3f08a?_0x538b7f[_0xd965('0x15')]:_0x25c007[_0xd965('0x14')]+_0x25c007[_0xd965('0x16')];var _0x233506;if(_0x4f1960>=_0x30edc3){_0x4f1960=_0x30edc3;_0x233506=0xc8;}else{_0x233506=0xce;}_0x42539d[_0xd965('0x12')](_0x233506);return _0x42539d['set'](_0xd965('0x17'),_0x13feed+'-'+_0x4f1960+'/'+_0x30edc3)['json'](_0x538b7f);}return null;};}function saveUpdates(_0x47b63a){return function(_0x4b3547){if(_0x4b3547){return _0x4b3547[_0xd965('0x18')](_0x47b63a)[_0xd965('0x19')](function(_0x876ef4){return _0x876ef4;});}return null;};}function removeEntity(_0xabe074){return function(_0x532c40){if(_0x532c40){return _0x532c40[_0xd965('0x1a')]()[_0xd965('0x19')](function(){_0xabe074[_0xd965('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4c523d){return function(_0x5afd43){if(!_0x5afd43){_0x4c523d[_0xd965('0x1b')](0x194);}return _0x5afd43;};}function handleError(_0x5d5216,_0x26acc5){_0x26acc5=_0x26acc5||0x1f4;return function(_0xef392d){logger['error'](_0xef392d['stack']);if(_0xef392d[_0xd965('0x1c')]){delete _0xef392d[_0xd965('0x1c')];}_0x5d5216[_0xd965('0x12')](_0x26acc5)[_0xd965('0x1d')](_0xef392d);};}function getInteractionUsers(_0x448642,_0x16b304){return new BPromise(function(_0x1ce1a6,_0x1a7367){try{if(_0x16b304[_0x448642['id']]){_0x448642[_0xd965('0x1e')]=_[_0xd965('0x1f')](_0x16b304[_0x448642['id']],function(_0x420d91){return{'id':_0x420d91['id'],'fullname':_0x420d91[_0xd965('0x20')]};});}}catch(_0x4af63e){_0x1a7367(_0x4af63e);}_0x1ce1a6(_0x448642);});}function getInteractionTags(_0x3d8899,_0x823420){return new BPromise(function(_0x540d0c,_0x47a140){try{if(_0x3d8899['TagIds']){_0x3d8899['Tags']=[];_0x3d8899['TagIds'][_0xd965('0x21')](',')[_0xd965('0x22')](function(_0x36fc2c){_0x3d8899['Tags'][_0xd965('0x23')](_0x823420[_0x36fc2c]);});}delete _0x3d8899[_0xd965('0x24')];}catch(_0x1cd27d){_0x47a140(_0x1cd27d);}_0x540d0c(_0x3d8899);});}function getLastMessageText(_0x5c1d91){return new BPromise(function(_0x280d62,_0x591ed2){return db['MailMessage'][_0xd965('0x25')]({'where':{'$and':[{'MailInteractionId':_0x5c1d91['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xd965('0x26')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0xd965('0x27'),'raw':!![]})['then'](function(_0xec5851){if(_0xec5851&&_0xec5851[_0xd965('0x28')]){_0x5c1d91[_0xd965('0x29')]=_[_0xd965('0x2a')](_0xec5851['plainBody']);}_0x280d62(_0x5c1d91);})[_0xd965('0x2b')](function(_0x1eb100){_0x591ed2(_0x1eb100);});});}function updateMailInteraction(_0x52099a,_0x2b0081,_0x71cd9d,_0x4f5053){return new BPromise(function(_0x3a3f93,_0x5e36b3){return getInteractionUsers(_0x52099a,_0x71cd9d)[_0xd965('0x19')](function(_0x29d93e){return getInteractionTags(_0x29d93e,_0x2b0081);})[_0xd965('0x19')](function(_0x3e32b6){return getStateInteraction(_0x3e32b6);})['then'](function(_0x10f552){if(_0x4f5053){_0x3a3f93(getLastMessageText(_0x10f552));}else{_0x3a3f93(_0x10f552);}})[_0xd965('0x2b')](function(_0x4e974a){_0x5e36b3(_0x4e974a);});});}function getStateInteraction(_0x259543){return new BPromise(function(_0x15286,_0x3dd72d){_0x259543[_0xd965('0x2c')]=0x0;_0x259543[_0xd965('0x2d')]=0x0;_0x259543[_0xd965('0x2e')]=0x0;_0x259543['unmanaged']=0x0;_0x259543[_0xd965('0x2f')]=0x0;if(!_0x259543['closed']&&!_0x259543[_0xd965('0x30')])_0x259543[_0xd965('0x2c')]+=0x1;if(!_0x259543['closed']&&_0x259543[_0xd965('0x30')])_0x259543[_0xd965('0x2d')]+=0x1;if(_0x259543[_0xd965('0x31')]&&_0x259543[_0xd965('0x30')])_0x259543[_0xd965('0x2e')]+=0x1;if(_0x259543[_0xd965('0x31')]&&!_0x259543[_0xd965('0x30')])_0x259543[_0xd965('0x32')]+=0x1;_0x259543[_0xd965('0x2f')]+=0x1;_0x15286(_0x259543);});}exports[_0xd965('0x33')]=function(_0x574256,_0x449045){var _0x18a967={},_0x21b852={},_0x48115b={'count':0x0,'rows':[]};var _0x48dc70=_['map'](db[_0xd965('0x34')][_0xd965('0x35')],function(_0x2f3863){return{'name':_0x2f3863[_0xd965('0x36')],'type':_0x2f3863[_0xd965('0x37')][_0xd965('0x38')]};});_0x21b852[_0xd965('0x39')]=_[_0xd965('0x1f')](_0x48dc70,_0xd965('0x1c'));_0x21b852['query']=_['keys'](_0x574256['query']);_0x21b852[_0xd965('0x3a')]=_[_0xd965('0x3b')](_0x21b852[_0xd965('0x39')],_0x21b852[_0xd965('0x3c')]);_0x18a967[_0xd965('0x3d')]=_[_0xd965('0x3b')](_0x21b852[_0xd965('0x39')],qs[_0xd965('0x3e')](_0x574256['query'][_0xd965('0x3e')]));_0x18a967[_0xd965('0x3d')]=_0x18a967[_0xd965('0x3d')][_0xd965('0x3f')]?_0x18a967['attributes']:_0x21b852['model'];if(!_0x574256[_0xd965('0x3c')][_0xd965('0x40')]('nolimit')){_0x18a967['limit']=qs[_0xd965('0x16')](_0x574256[_0xd965('0x3c')][_0xd965('0x16')]);_0x18a967['offset']=qs[_0xd965('0x14')](_0x574256[_0xd965('0x3c')][_0xd965('0x14')]);}_0x18a967[_0xd965('0x41')]=qs['sort'](_0x574256[_0xd965('0x3c')]['sort']);_0x18a967[_0xd965('0x42')]=qs[_0xd965('0x3a')](_[_0xd965('0x43')](_0x574256[_0xd965('0x3c')],_0x21b852[_0xd965('0x3a')]),_0x48dc70);var _0xb915ed=[];var _0x2995ce=squel[_0xd965('0x44')]()[_0xd965('0x45')]('id')['field'](_0xd965('0x1c'))['field'](_0xd965('0x46'))['from']('tools_tags');var _0x5cbd5f=squel[_0xd965('0x44')]()[_0xd965('0x45')]('u.id')[_0xd965('0x45')]('u.fullname')[_0xd965('0x45')](_0xd965('0x47'))['from'](_0xd965('0x48'),'ui')[_0xd965('0x49')](_0xd965('0x4a'),'u','u.id\x20=\x20ui.UserId');var _0x57ef85=squel[_0xd965('0x44')]()[_0xd965('0x4b')]('mail_interactions','i')[_0xd965('0x49')](_0xd965('0x4c'),'c',_0xd965('0x4d'))[_0xd965('0x49')]('users','o',_0xd965('0x4e'))['left_join']('mail_accounts','a',_0xd965('0x4f'))['left_join'](_0xd965('0x50'),'me',_0xd965('0x51'))[_0xd965('0x49')](_0xd965('0x52'),'it',_0xd965('0x53'))[_0xd965('0x49')](_0xd965('0x54'),'t',_0xd965('0x55'));var _0x50b6b8=squel['expr']();var _0x245cdb=[];var _0x1d5d6c=squel[_0xd965('0x56')]();var _0x444570;if(_0x574256[_0xd965('0x3c')][_0xd965('0x57')]){_0x444570=as[_0xd965('0x58')](_0x574256['query'][_0xd965('0x57')]);var _0x3d53a4=_0x444570['sqlOperator'];for(var _0x269467=0x0;_0x269467<_0x444570[_0xd965('0x59')][_0xd965('0x3f')];_0x269467++){var _0x2002e7=_0x444570[_0xd965('0x59')][_0x269467];var _0x134a1e='i';var _0x3ec810=_[_0xd965('0x5a')](_0x48dc70,['name',_0x2002e7[_0xd965('0x45')]]);if(!_0x3ec810){switch(_0x2002e7['field']){case'unreadMessages':if(_0x2002e7[_0xd965('0x5b')]==0x1){_0x57ef85['having']('`'+_0x2002e7[_0xd965('0x45')]+_0xd965('0x5c'));}else{_0x57ef85[_0xd965('0x5d')]('`'+_0x2002e7[_0xd965('0x45')]+_0xd965('0x5e'));}break;case _0xd965('0x5f'):if(_0x2002e7[_0xd965('0x60')]===_0xd965('0x61')){if(_0x2002e7[_0xd965('0x5b')][_0xd965('0x21')]('\x20')[_0xd965('0x3f')]>0x1){_0x50b6b8[_0x3d53a4](_0xd965('0x62'),qs[_0xd965('0x63')](_0x2002e7[_0xd965('0x5b')]),null);}else{var _0x440093='%'+_0x2002e7[_0xd965('0x5b')]+'%';_0x50b6b8[_0x3d53a4](_0xd965('0x64'),_0x440093,_0x440093,_0x440093);}}else{_0x3ec810=_[_0xd965('0x5a')](_0x48dc70,[_0xd965('0x1c'),_0xd965('0x65')]);_0x2002e7[_0xd965('0x45')]='ContactId';_0x5922b9=as[_0xd965('0x66')](_0x134a1e,_0x3ec810['type'],_0x2002e7);_0x50b6b8[_0x3d53a4](_0x5922b9[_0xd965('0x67')],_0x5922b9[_0xd965('0x5b')]['start'],_0x5922b9[_0xd965('0x5b')]['end']);}break;case _0xd965('0x68'):var _0x490e79=_0x2002e7[_0xd965('0x5b')][_0xd965('0x21')](',')[_0xd965('0x1f')](function(_0x94b3f6){return Number(_0x94b3f6);});_0x490e79['forEach'](function(_0x2bbb5d){_0x1d5d6c['or'](_0xd965('0x69'),'%,'+_0x2bbb5d+',%');});_0x245cdb=_[_0xd965('0x6a')](_0x245cdb,_0x490e79);break;case _0xd965('0x6b'):if(_0x2002e7[_0xd965('0x60')]===_0xd965('0x61')){_0x50b6b8[_0x3d53a4]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x2002e7[_0xd965('0x5b')]+'%',null);}else{_0x3ec810=_[_0xd965('0x5a')](_0x48dc70,[_0xd965('0x1c'),_0xd965('0x30')]);_0x2002e7[_0xd965('0x45')]=_0xd965('0x30');_0x5922b9=as[_0xd965('0x66')](_0x134a1e,_0x3ec810['type'],_0x2002e7);_0x50b6b8[_0x3d53a4](_0x5922b9[_0xd965('0x67')],_0x5922b9[_0xd965('0x5b')][_0xd965('0x6c')],_0x5922b9[_0xd965('0x5b')][_0xd965('0x11')]);}break;case'plainBody':_0x5922b9=as[_0xd965('0x66')]('me',null,_0x2002e7);_0x50b6b8[_0x3d53a4](_0x5922b9[_0xd965('0x67')],_0x5922b9[_0xd965('0x5b')][_0xd965('0x6c')],_0x5922b9[_0xd965('0x5b')][_0xd965('0x11')]);break;}}else{var _0x5922b9=as[_0xd965('0x66')](_0x134a1e,_0x3ec810[_0xd965('0x37')],_0x2002e7);_0x50b6b8[_0x3d53a4](_0x5922b9[_0xd965('0x67')],_0x5922b9['value'][_0xd965('0x6c')],_0x5922b9[_0xd965('0x5b')][_0xd965('0x11')]);}}}else{var _0xb33e6b=_(_0x574256['query'])['keys']()[_0xd965('0x1f')](function(_0x17d12e){return _[_0xd965('0x6d')](_0x48dc70,['name',_0x17d12e])?_0x17d12e:undefined;})[_0xd965('0x6e')]()['value']();if(!_[_0xd965('0x6f')](_0xb33e6b)){_0xb33e6b[_0xd965('0x22')](function(_0x5f0cd1){if(_0x5f0cd1===_0xd965('0x70')){_0x57ef85[_0xd965('0x42')](_0xd965('0x71'),[][_0xd965('0x72')](_0x574256[_0xd965('0x3c')][_0x5f0cd1]));}else if(_0x5f0cd1===_0xd965('0x73')){var _0x3d8ad6=JSON[_0xd965('0x74')](_0x574256[_0xd965('0x3c')][_0x5f0cd1])[_0xd965('0x75')];var _0x347c5f=JSON[_0xd965('0x74')](_0x574256[_0xd965('0x3c')][_0x5f0cd1])[_0xd965('0x76')];_0x57ef85['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3d8ad6,_0x347c5f);}else{if(_0x574256[_0xd965('0x3c')][_0x5f0cd1]===_0xd965('0x77')){_0x57ef85['where']('i.'+_0x5f0cd1+_0xd965('0x78'));}else{_0x57ef85[_0xd965('0x42')]('i.'+_0x5f0cd1+'\x20=\x20?',_0x574256['query'][_0x5f0cd1]);}}});}if(_0x574256['query'][_0xd965('0x79')]){if(_0x574256[_0xd965('0x3c')][_0xd965('0x79')]==0x1){_0x57ef85['having'](_0xd965('0x7a'));}else{_0x57ef85['having'](_0xd965('0x7b'));}}if(_0x574256[_0xd965('0x3c')]['tag']){_0x245cdb=_['isArray'](_0x574256['query'][_0xd965('0x7c')])?_0x574256[_0xd965('0x3c')][_0xd965('0x7c')]:new Array(_0x574256['query'][_0xd965('0x7c')]);_0x245cdb[_0xd965('0x22')](function(_0x338c92){_0x1d5d6c['or'](_0xd965('0x69'),'%,'+_0x338c92+',%');});}if(_0x574256[_0xd965('0x3c')][_0xd965('0x7d')]){var _0x537928=_0x574256['query'][_0xd965('0x7d')][_0xd965('0x7e')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x537928)){_0x50b6b8['or']('i.id\x20LIKE\x20?',_0x537928+'%');}else if(qs[_0xd965('0x7f')](_0x537928)){_0x50b6b8['or'](_0xd965('0x80'),_0x537928+'%');}else{_0x50b6b8['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xd965('0x63')](_0x537928))['or'](_0xd965('0x81'),qs[_0xd965('0x63')](_0x537928));}}}_0x57ef85[_0xd965('0x42')](_0x50b6b8);_0x57ef85[_0xd965('0x82')]('i.id');var _0x3dd32a={'type':db[_0xd965('0x83')]['QueryTypes'][_0xd965('0x84')],'raw':!![]};var _0x444aa3=_0x57ef85[_0xd965('0x85')]();_0x444aa3[_0xd965('0x45')](_0xd965('0x86'));_0x444aa3['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xd965('0x87'));if(_0x18a967['order']){_0x18a967[_0xd965('0x41')][_0xd965('0x22')](function(_0x3a6fa7){var _0x58a2fe=_0x3a6fa7[0x0]===_0xd965('0x88')?_0x3a6fa7[0x0]:'i.'+_0x3a6fa7[0x0];_0x57ef85[_0xd965('0x41')](_0x58a2fe,_0x3a6fa7[0x1]===_0xd965('0x89')?![]:!![]);});}if(!_[_0xd965('0x6f')](_0x245cdb)){_0x57ef85['having'](_0x1d5d6c);_0x444aa3[_0xd965('0x42')](_0xd965('0x8a'),_0x245cdb);}BPromise[_0xd965('0x8b')]()[_0xd965('0x19')](function(){if(!_0x444570){if(_0x574256['query']['MailAccountId'])return;_0x444aa3[_0xd965('0x42')]('i.MailAccountId\x20IS\x20NOT\x20NULL');_0x57ef85[_0xd965('0x42')](_0xd965('0x8c'));return;}if(_0x574256['user'][_0xd965('0x8d')]!==_0xd965('0x8e'))return;return _0x574256[_0xd965('0x8f')]['getMailAccounts']({'attributes':['id'],'raw':!![]})[_0xd965('0x19')](function(_0x230c9b){if(_[_0xd965('0x6f')](_0x230c9b)){_0x444aa3[_0xd965('0x42')](_0xd965('0x90'));_0x57ef85[_0xd965('0x42')](_0xd965('0x90'));}else{_0x444aa3['where'](_0xd965('0x71'),_[_0xd965('0x1f')](_0x230c9b,'id'));_0x57ef85[_0xd965('0x42')](_0xd965('0x71'),_['map'](_0x230c9b,'id'));}});})[_0xd965('0x19')](function(){if(_0x574256[_0xd965('0x8f')][_0xd965('0x8d')]==='agent'&&!_0x444570&&!_0x574256[_0xd965('0x3c')]['MailAccountId'])return[];return db[_0xd965('0x91')][_0xd965('0x3c')](_0x444aa3[_0xd965('0x92')](),_0x3dd32a);})[_0xd965('0x19')](function(_0x4fef61){_0x48115b[_0xd965('0x15')]=_0x4fef61['length'];if(_0x48115b[_0xd965('0x15')]===0x0)return[];return db[_0xd965('0x91')][_0xd965('0x3c')](_0x2995ce[_0xd965('0x92')](),_0x3dd32a)[_0xd965('0x19')](function(_0x5f5d3f){_0xb915ed=_[_0xd965('0x93')](_0x5f5d3f,'id');_0x3dd32a=_[_0xd965('0x94')](_0x3dd32a,{'model':db[_0xd965('0x34')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x574256['query']['fields']){_0x18a967['attributes']['forEach'](function(_0x4bcafd){_0x57ef85['field']('i.'+_0x4bcafd);});}else{_0x57ef85['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xd965('0x87'));_0x57ef85[_0xd965('0x45')](_0xd965('0x95'),_0xd965('0x96'));_0x57ef85['field'](_0xd965('0x97'),'Account.mandatoryDisposition');_0x57ef85[_0xd965('0x45')]('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',_0xd965('0x88'));_0x57ef85[_0xd965('0x45')](_0xd965('0x86'));_0x57ef85[_0xd965('0x45')](_0xd965('0x98'));_0x57ef85[_0xd965('0x45')](_0xd965('0x99'));_0x57ef85[_0xd965('0x45')]('i.closed');_0x57ef85['field'](_0xd965('0x9a'));_0x57ef85[_0xd965('0x45')](_0xd965('0x9b'));_0x57ef85[_0xd965('0x45')](_0xd965('0x9c'));_0x57ef85[_0xd965('0x45')](_0xd965('0x9d'));_0x57ef85[_0xd965('0x45')](_0xd965('0x9e'));_0x57ef85['field'](_0xd965('0x9f'));_0x57ef85[_0xd965('0x45')](_0xd965('0xa0'));_0x57ef85['field'](_0xd965('0xa1'));_0x57ef85['field']('i.substatus');_0x57ef85[_0xd965('0x45')](_0xd965('0xa2'));_0x57ef85['field'](_0xd965('0xa3'));_0x57ef85[_0xd965('0x45')]('i.MailAccountId');_0x57ef85[_0xd965('0x45')](_0xd965('0xa4'));_0x57ef85['field'](_0xd965('0xa5'),_0xd965('0xa6'));_0x57ef85[_0xd965('0x45')](_0xd965('0xa7'),_0xd965('0xa8'));_0x57ef85['field'](_0xd965('0xa9'),'Contact.email');_0x57ef85[_0xd965('0x45')](_0xd965('0xaa'),_0xd965('0xab'));_0x57ef85[_0xd965('0x45')](_0xd965('0xac'),'Contact.mobile');_0x57ef85[_0xd965('0x45')](_0xd965('0xad'),_0xd965('0xae'));_0x57ef85[_0xd965('0x45')](_0xd965('0xaf'),_0xd965('0xb0'));_0x57ef85['field'](_0xd965('0xb1'),_0xd965('0xb2'));_0x57ef85['field'](_0xd965('0xb3'),_0xd965('0x24'));}if(_0x18a967[_0xd965('0x16')])_0x57ef85[_0xd965('0x16')](_0x18a967['limit']);if(_0x18a967[_0xd965('0x14')])_0x57ef85['offset'](_0x18a967[_0xd965('0x14')]);return db[_0xd965('0x91')][_0xd965('0x3c')](_0x57ef85[_0xd965('0x92')](),_0x3dd32a);})['then'](function(_0x261cbf){if(_0x261cbf['length']>0x0)_0x5cbd5f['where'](_0xd965('0xb4'),_[_0xd965('0x1f')](_0x261cbf,'id'));return db[_0xd965('0x91')]['query'](_0x5cbd5f[_0xd965('0x92')](),_0x3dd32a)['then'](function(_0x36c0c2){var _0xa5ac87=_['groupBy'](_0x36c0c2,'MailInteractionId');var _0x59c569=[];return db[_0xd965('0xb5')][_0xd965('0x25')]({'attributes':[_0xd965('0xb6')],'raw':!![]})['then'](function(_0x569ee2){var _0x1acbee=_0x569ee2[_0xd965('0xb6')];_0x261cbf['forEach'](function(_0x1e12c7){_0x59c569[_0xd965('0x23')](updateMailInteraction(_0x1e12c7,_0xb915ed,_0xa5ac87,_0x1acbee));});return BPromise[_0xd965('0xb7')](_0x59c569);});});});})['then'](function(_0x556090){_0x48115b['rows']=_0x556090;return _0x48115b;})['then'](respondWithFilteredResult(_0x449045,_0x18a967))[_0xd965('0x2b')](handleError(_0x449045,null));};exports['show']=function(_0x3fdc59,_0x29ab4a){var _0x5e4c90={'raw':![],'where':{'id':_0x3fdc59[_0xd965('0xb8')]['id']}},_0x22bdcb={};_0x22bdcb['model']=_['keys'](db['MailInteraction'][_0xd965('0x35')]);_0x22bdcb['query']=_['keys'](_0x3fdc59[_0xd965('0x3c')]);_0x22bdcb[_0xd965('0x3a')]=_[_0xd965('0x3b')](_0x22bdcb[_0xd965('0x39')],_0x22bdcb['query']);_0x5e4c90[_0xd965('0x3d')]=_[_0xd965('0x3b')](_0x22bdcb[_0xd965('0x39')],qs[_0xd965('0x3e')](_0x3fdc59['query']['fields']));_0x5e4c90[_0xd965('0x3d')]=_0x5e4c90['attributes'][_0xd965('0x3f')]?_0x5e4c90[_0xd965('0x3d')]:_0x22bdcb['model'];if(_0x3fdc59[_0xd965('0x3c')][_0xd965('0xb9')]){_0x5e4c90['include']=[{'all':!![]}];}_0x5e4c90=_[_0xd965('0x94')]({},_0x5e4c90,_0x3fdc59[_0xd965('0xba')]);return db[_0xd965('0x34')][_0xd965('0x5a')](_0x5e4c90)[_0xd965('0x19')](handleEntityNotFound(_0x29ab4a,null))[_0xd965('0x19')](respondWithResult(_0x29ab4a,null))[_0xd965('0x2b')](handleError(_0x29ab4a,null));};exports[_0xd965('0xbb')]=function(_0x5de665,_0xe6da5c){return db[_0xd965('0x34')][_0xd965('0xbb')](_0x5de665['body'],{})[_0xd965('0x19')](respondWithResult(_0xe6da5c,0xc9))[_0xd965('0x2b')](handleError(_0xe6da5c,null));};exports[_0xd965('0x18')]=function(_0x16c61f,_0x48f47a){if(_0x16c61f[_0xd965('0xbc')]['id']){delete _0x16c61f[_0xd965('0xbc')]['id'];}return db['MailInteraction'][_0xd965('0x5a')]({'where':{'id':_0x16c61f[_0xd965('0xb8')]['id']}})[_0xd965('0x19')](handleEntityNotFound(_0x48f47a,null))[_0xd965('0x19')](saveUpdates(_0x16c61f['body'],null))[_0xd965('0x19')](respondWithResult(_0x48f47a,null))[_0xd965('0x2b')](handleError(_0x48f47a,null));};exports[_0xd965('0x1a')]=function(_0x5b268f,_0x356168){return db['MailInteraction'][_0xd965('0x5a')]({'where':{'id':_0x5b268f['params']['id']}})[_0xd965('0x19')](handleEntityNotFound(_0x356168,null))['then'](removeEntity(_0x356168,null))[_0xd965('0x2b')](handleError(_0x356168,null));};exports[_0xd965('0xbd')]=function(_0x115d74,_0x2965d4){return db[_0xd965('0x34')][_0xd965('0xbd')]()[_0xd965('0x19')](respondWithResult(_0x2965d4,null))[_0xd965('0x2b')](handleError(_0x2965d4,null));};exports[_0xd965('0xbe')]=function(_0x132c4e,_0x4752e3){return db[_0xd965('0xbf')][_0xd965('0x5a')]({'where':{'id':_0x132c4e[_0xd965('0xb8')]['id']}})[_0xd965('0x19')](handleEntityNotFound(_0x4752e3,null))['then'](function(_0x3df7dd){if(_0x3df7dd){return _0x3df7dd['addMessage'](_0x132c4e[_0xd965('0xbc')][_0xd965('0xc0')],_['omit'](_0x132c4e[_0xd965('0xbc')],[_0xd965('0xc0'),'id'])||{});}})[_0xd965('0x19')](respondWithResult(_0x4752e3,null))[_0xd965('0x2b')](handleError(_0x4752e3,null));};exports[_0xd965('0xc1')]=function(_0x4998ad,_0x4069f2){var _0x2a92e5={'raw':![],'where':{}};var _0x39b837={};var _0x505153={'count':0x0,'rows':[]};return db['MailInteraction'][_0xd965('0x25')]({'where':{'id':_0x4998ad['params']['id']}})['then'](handleEntityNotFound(_0x4069f2,null))[_0xd965('0x19')](function(_0x383b7a){if(_0x383b7a){_0x39b837[_0xd965('0x39')]=_[_0xd965('0xc2')](db['MailMessage'][_0xd965('0x35')]);_0x39b837[_0xd965('0x3c')]=_[_0xd965('0xc2')](_0x4998ad[_0xd965('0x3c')]);_0x39b837['filters']=_[_0xd965('0x3b')](_0x39b837['model'],_0x39b837[_0xd965('0x3c')]);_0x2a92e5[_0xd965('0x3d')]=_[_0xd965('0x3b')](_0x39b837[_0xd965('0x39')],qs[_0xd965('0x3e')](_0x4998ad[_0xd965('0x3c')]['fields']));_0x2a92e5[_0xd965('0x3d')]=_0x2a92e5['attributes']['length']?_0x2a92e5[_0xd965('0x3d')]:_0x39b837[_0xd965('0x39')];if(!_0x4998ad[_0xd965('0x3c')][_0xd965('0x40')](_0xd965('0xc3'))){_0x2a92e5[_0xd965('0x16')]=qs[_0xd965('0x16')](_0x4998ad[_0xd965('0x3c')][_0xd965('0x16')]);_0x2a92e5[_0xd965('0x14')]=qs['offset'](_0x4998ad['query']['offset']);}_0x2a92e5[_0xd965('0x41')]=qs['sort'](_0x4998ad[_0xd965('0x3c')][_0xd965('0xc4')]);_0x2a92e5[_0xd965('0x42')]=qs['filters'](_['pick'](_0x4998ad['query'],_0x39b837['filters']));_0x2a92e5[_0xd965('0x42')][_0xd965('0xc5')]=_0x383b7a['id'];if(_0x4998ad[_0xd965('0x3c')]['filter']){_0x2a92e5[_0xd965('0x42')]=_['merge'](_0x2a92e5[_0xd965('0x42')],{'$or':_['map'](_0x2a92e5[_0xd965('0x3d')],function(_0x27a5e5){var _0x30fe5f={};_0x30fe5f[_0x27a5e5]={'$like':'%'+_0x4998ad[_0xd965('0x3c')]['filter']+'%'};return _0x30fe5f;})});}if(_0x4998ad[_0xd965('0x3c')][_0xd965('0x75')]){var _0x2ccc1a=_0x4998ad[_0xd965('0x3c')]['$gte'][_0xd965('0x21')](',');var _0x178270={};_0x178270[_0x2ccc1a[0x0]]={'$gte':moment(_0x2ccc1a[0x1])[_0xd965('0xc6')](_0xd965('0xc7'))};_0x2a92e5[_0xd965('0x42')]=_['merge'](_0x2a92e5['where'],_0x178270);}_0x2a92e5=_[_0xd965('0x94')]({},_0x2a92e5,_0x4998ad[_0xd965('0xba')]);return db[_0xd965('0xbf')][_0xd965('0x15')]({'where':_0x2a92e5[_0xd965('0x42')]})[_0xd965('0x19')](function(_0x327fb3){_0x505153[_0xd965('0x15')]=_0x327fb3;if(_0x4998ad[_0xd965('0x3c')][_0xd965('0xb9')]){_0x2a92e5[_0xd965('0xc8')]=[{'all':!![]}];}return db['MailMessage'][_0xd965('0xc9')](_0x2a92e5);})['then'](function(_0x520341){if(_0x4998ad['query'][_0xd965('0xca')]===_0xd965('0xcb')){for(var _0x500d6e=0x0;_0x500d6e<_0x520341['length'];_0x500d6e++){_0x520341[_0x500d6e][_0xd965('0xbc')]=juice(_0x520341[_0x500d6e][_0xd965('0xbc')]);}}_0x505153[_0xd965('0xcc')]=_0x520341;return _0x505153;});}})['then'](respondWithFilteredResult(_0x4069f2,_0x2a92e5))[_0xd965('0x2b')](handleError(_0x4069f2,null));};exports[_0xd965('0xcd')]=function(_0x3ad7a0,_0x36a904){return db['MailInteraction']['find']({'where':{'id':_0x3ad7a0[_0xd965('0xb8')]['id']}})[_0xd965('0x19')](handleEntityNotFound(_0x36a904,null))['then'](function(_0x55a97b){if(_0x55a97b){return _0x55a97b['setTags'](_0x3ad7a0[_0xd965('0xbc')][_0xd965('0xc0')],_[_0xd965('0xce')](_0x3ad7a0['body'],[_0xd965('0xc0'),'id'])||{})[_0xd965('0xcf')](function(){return db[_0xd965('0x68')][_0xd965('0xc9')]({'attributes':['id','name',_0xd965('0x46')],'where':{'id':_0x3ad7a0[_0xd965('0xbc')][_0xd965('0xc0')]}});})[_0xd965('0x19')](function(_0x16a6bd){socket[_0xd965('0xd0')]('mailInteractionTags:save',{'id':Number(_0x3ad7a0['params']['id']),'tags':_0x16a6bd||[]});return{'id':Number(_0x3ad7a0[_0xd965('0xb8')]['id']),'tags':_0x16a6bd||[]};});}})[_0xd965('0x19')](respondWithResult(_0x36a904,null))[_0xd965('0x2b')](handleError(_0x36a904,null));};exports[_0xd965('0xd1')]=function(_0x65a14e,_0x32245f){return db['MailInteraction']['find']({'where':{'id':_0x65a14e[_0xd965('0xb8')]['id']}})['then'](handleEntityNotFound(_0x32245f,null))[_0xd965('0x19')](function(_0xef9d66){if(_0xef9d66){return _0xef9d66[_0xd965('0xd1')](_0x65a14e['query']['ids']);}})[_0xd965('0x19')](respondWithStatusCode(_0x32245f,null))[_0xd965('0x2b')](handleError(_0x32245f,null));};exports[_0xd965('0xd2')]=function(_0xc72df7,_0xf93b1e){var _0x58123e=moment()['unix']()['toString']();var _0x88dd54=path[_0xd965('0xd3')](config[_0xd965('0xd4')],_0xd965('0xd5'),_0xd965('0xd6'),_0xd965('0xd7'));var _0x1a56e6=path['join'](config[_0xd965('0xd4')],_0xd965('0xd5'),_0xd965('0xd6'),_0xd965('0xd8'));var _0x82cae3=path[_0xd965('0xd3')](_0x88dd54,_0x58123e);var _0x3a3c25=util['format'](_0xd965('0xd9'),_0xc72df7[_0xd965('0xb8')]['id'],_0x58123e);var _0x3946eb=path[_0xd965('0xd3')](_0x88dd54,_0x3a3c25);var _0x17cb8e=[];if(_0xc72df7[_0xd965('0x3c')][_0xd965('0xd8')]){_0x17cb8e[_0xd965('0x23')]({'model':db[_0xd965('0xda')],'as':_0xd965('0xdb'),'raw':!![]});}var _0x2fdd06=[{'model':db[_0xd965('0xbf')],'as':_0xd965('0xdc'),'attributes':['id',_0xd965('0xbc'),_0xd965('0x4b'),'to','cc',_0xd965('0xdd'),'subject',_0xd965('0x73')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x17cb8e}];return db[_0xd965('0x34')][_0xd965('0x5a')]({'where':{'id':_0xc72df7[_0xd965('0xb8')]['id']},'include':_0x2fdd06})[_0xd965('0x19')](handleEntityNotFound(_0xf93b1e,null))[_0xd965('0x19')](function(_0x3047b8){if(_0x3047b8&&_0x3047b8['Messages']){var _0x33b682=_0x3047b8['get']({'plain':!![]});fs[_0xd965('0xde')](_0x82cae3);return BPromise[_0xd965('0xdf')](_0x33b682[_0xd965('0xdc')],function(_0x1353fc,_0xf3f36){var _0x1488d9={'from':_0x1353fc['from'],'to':_0x1353fc['to'],'subject':_0x1353fc[_0xd965('0xe0')],'html':htmlEntities[_0xd965('0xe1')](_0x1353fc[_0xd965('0xbc')]),'headers':{'Date':moment(_0x1353fc[_0xd965('0x73')])[_0xd965('0xc6')](_0xd965('0xe2'))},'attachments':[]};if(_0x1353fc['cc']){_0x1488d9[_0xd965('0xe3')]['Cc']=_0x1353fc['cc'];}if(_0x1353fc[_0xd965('0xdd')]){_0x1488d9[_0xd965('0xe3')][_0xd965('0xe4')]=_0x1353fc[_0xd965('0xdd')];}return new BPromise(function(_0x3eb6cc,_0x581ff3){if(_0x1353fc['Attachments']){for(var _0x4bf4fe=0x0;_0x4bf4fe<_0x1353fc[_0xd965('0xdb')]['length'];_0x4bf4fe++){var _0x2169b1=_0x1353fc[_0xd965('0xdb')][_0x4bf4fe];var _0x582fee=path[_0xd965('0xd3')](_0x1a56e6,_0x2169b1[_0xd965('0xe5')]);if(fs['existsSync'](_0x582fee)){_0x1488d9['attachments'][_0xd965('0x23')]({'name':_0x2169b1['name'],'contentType':_0x2169b1[_0xd965('0x37')],'data':fs[_0xd965('0xe6')](_0x582fee)});}}}emlformat[_0xd965('0xe7')](_0x1488d9,function(_0x1995c0,_0x51db7c){if(_0x1995c0)return _0x581ff3(_0x1995c0);fs[_0xd965('0xe8')](path['join'](_0x82cae3,util[_0xd965('0xc6')](_0xd965('0xe9'),_0xf3f36)),_0x51db7c);return _0x3eb6cc(_0x51db7c);});});})[_0xd965('0x19')](function(){return new BPromise(function(_0x29915c,_0x1bb435){zipdir(_0x82cae3,{'saveTo':_0x3946eb},function(_0x3d7e36,_0x4e2e8b){if(_0x3d7e36)return _0x1bb435(_0x3d7e36);return _0x29915c(_0x4e2e8b);});})[_0xd965('0x19')](function(){return new BPromise(function(_0x50a264,_0xf4b132){rimraf(_0x82cae3,function(_0x4562e){if(_0x4562e)_0xf4b132(_0x4562e);return _0x50a264();});});})[_0xd965('0x19')](function(){return _0xf93b1e['download'](_0x3946eb,_0x3a3c25,function(_0x1500ea){if(!_0x1500ea)fs[_0xd965('0xea')](_0x3946eb);});});});}else{return _0xf93b1e[_0xd965('0x1b')](0xc8);}})[_0xd965('0x2b')](handleError(_0xf93b1e,null));};
\ No newline at end of file
index d26f2c1..443c258 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24b7=['Users','map','findAll','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','MailMessage','save','update','remove','setDataValue'];(function(_0x3c82e2,_0x2bff81){var _0x1317b8=function(_0x23694b){while(--_0x23694b){_0x3c82e2['push'](_0x3c82e2['shift']());}};_0x1317b8(++_0x2bff81);}(_0x24b7,0xa2));var _0x724b=function(_0x5a7f85,_0x1b8327){_0x5a7f85=_0x5a7f85-0x0;var _0x1581a4=_0x24b7[_0x5a7f85];return _0x1581a4;};'use strict';var EventEmitter=require('events');var MailInteraction=require(_0x724b('0x0'))['db']['MailInteraction'];var MailMessage=require(_0x724b('0x0'))['db'][_0x724b('0x1')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x724b('0x2'),'afterUpdate':_0x724b('0x3'),'afterDestroy':_0x724b('0x4')};function emitEvent(_0x120756){return function(_0x5c89ce,_0xc8cc70,_0x470f9d){_0x5c89ce['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x334173){_0x5c89ce[_0x724b('0x5')](_0x724b('0x6'),_0x334173[_0x724b('0x7')](function(_0x588116){return{'id':_0x588116['id']};}));return MailMessage[_0x724b('0x8')]({'where':{'MailInteractionId':_0x5c89ce['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x2d18f3){_0x5c89ce[_0x724b('0x5')]('unreadMessages',_0x2d18f3['length']);MailInteractionEvents[_0x724b('0x9')](_0x120756+':'+_0x5c89ce['id'],_0x5c89ce);MailInteractionEvents[_0x724b('0x9')](_0x120756,_0x5c89ce);_0x470f9d(null);})[_0x724b('0xa')](_0x470f9d(null));};}for(var e in events){if(events[_0x724b('0xb')](e)){var event=events[e];MailInteraction[_0x724b('0xc')](e,emitEvent(event));}}module[_0x724b('0xd')]=MailInteractionEvents;
\ No newline at end of file
+var _0x5a3c=['events','../../mysqldb','MailInteraction','MailMessage','setMaxListeners','save','update','getUsers','then','setDataValue','Users','map','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports'];(function(_0x25b437,_0x2ee00e){var _0x18a3b1=function(_0x2ef8d3){while(--_0x2ef8d3){_0x25b437['push'](_0x25b437['shift']());}};_0x18a3b1(++_0x2ee00e);}(_0x5a3c,0x10a));var _0xc5a3=function(_0x1fc122,_0x5e2c17){_0x1fc122=_0x1fc122-0x0;var _0xa2cb13=_0x5a3c[_0x1fc122];return _0xa2cb13;};'use strict';var EventEmitter=require(_0xc5a3('0x0'));var MailInteraction=require(_0xc5a3('0x1'))['db'][_0xc5a3('0x2')];var MailMessage=require(_0xc5a3('0x1'))['db'][_0xc5a3('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xc5a3('0x4')](0x0);var events={'afterCreate':_0xc5a3('0x5'),'afterUpdate':_0xc5a3('0x6'),'afterDestroy':'remove'};function emitEvent(_0x410a91){return function(_0x4c8f3c,_0x3fbcc7,_0x1b7aa8){_0x4c8f3c[_0xc5a3('0x7')]({'attributes':['id'],'raw':!![]})[_0xc5a3('0x8')](function(_0x321d7d){_0x4c8f3c[_0xc5a3('0x9')](_0xc5a3('0xa'),_0x321d7d[_0xc5a3('0xb')](function(_0x3b32dc){return{'id':_0x3b32dc['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x4c8f3c['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x2a7729){_0x4c8f3c[_0xc5a3('0x9')](_0xc5a3('0xc'),_0x2a7729[_0xc5a3('0xd')]);MailInteractionEvents['emit'](_0x410a91+':'+_0x4c8f3c['id'],_0x4c8f3c);MailInteractionEvents[_0xc5a3('0xe')](_0x410a91,_0x4c8f3c);_0x1b7aa8(null);})[_0xc5a3('0xf')](_0x1b7aa8(null));};}for(var e in events){if(events[_0xc5a3('0x10')](e)){var event=events[e];MailInteraction[_0xc5a3('0x11')](e,emitEvent(event));}}module[_0xc5a3('0x12')]=MailInteractionEvents;
\ No newline at end of file
index 17fbe9a..f3e6685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad72=['substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','changed','models','MailMessage','update','then','catch','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise','define','MailInteraction','fti_mail_interactions','substatus'];(function(_0x5efb06,_0x2d200d){var _0x1bb222=function(_0x26ff04){while(--_0x26ff04){_0x5efb06['push'](_0x5efb06['shift']());}};_0x1bb222(++_0x2d200d);}(_0xad72,0xa6));var _0x2ad7=function(_0x59c979,_0x3ed6db){_0x59c979=_0x59c979-0x0;var _0x327c25=_0xad72[_0x59c979];return _0x327c25;};'use strict';var _=require(_0x2ad7('0x0'));var util=require('util');var logger=require(_0x2ad7('0x1'))(_0x2ad7('0x2'));var moment=require(_0x2ad7('0x3'));var BPromise=require(_0x2ad7('0x4'));var rp=require(_0x2ad7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./mailInteraction.attributes');module['exports']=function(_0x12f658,_0x1790de){return _0x12f658[_0x2ad7('0x6')](_0x2ad7('0x7'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0x2ad7('0x8'),'fields':['subject','to'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5b4e62,_0x5d20eb,_0x3b59c0){if(_0x5b4e62[_0x2ad7('0x9')]){_0x5b4e62[_0x2ad7('0xa')]=moment()[_0x2ad7('0xb')](_0x2ad7('0xc'));}if(_0x5b4e62[_0x2ad7('0xd')]){_0x5b4e62[_0x2ad7('0xe')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x3b59c0(null,_0x5d20eb);},'beforeUpdate':function(_0x28ab54,_0x459726,_0x529146){if(_0x28ab54[_0x2ad7('0xf')](_0x2ad7('0x9'))){_0x28ab54['substatusAt']=_0x28ab54['substatus']?moment()['format'](_0x2ad7('0xc')):null;}if(_0x28ab54['changed'](_0x2ad7('0xd'))){_0x28ab54['closedAt']=moment()[_0x2ad7('0xb')](_0x2ad7('0xc'));_0x28ab54[_0x2ad7('0x9')]=null;_0x28ab54['substatusAt']=null;}_0x529146(null,_0x28ab54);},'afterUpdate':function(_0xd28ed9,_0x4ecc36,_0x1fea61){var _0x486119=_0x12f658[_0x2ad7('0x10')];var _0x1cbefb=_0xd28ed9['get']({'plain':!![]});if(_0x1cbefb[_0x2ad7('0xd')]){return _0x486119[_0x2ad7('0x11')][_0x2ad7('0x12')]({'read':!![]},{'where':{'MailInteractionId':_0x1cbefb['id']}})[_0x2ad7('0x13')](function(){_0x1fea61();})[_0x2ad7('0x14')](function(_0x3568d9){_0x1fea61(_0x3568d9);});}else{_0x1fea61();}}},'charset':_0x2ad7('0x15'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xf275=['substatus','substatusAt','format','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','changed','models','get','MailMessage','update','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailInteraction.attributes','exports','MailInteraction','mail_interactions','subject'];(function(_0x23c847,_0x38ae60){var _0x59c8d9=function(_0x17d2e0){while(--_0x17d2e0){_0x23c847['push'](_0x23c847['shift']());}};_0x59c8d9(++_0x38ae60);}(_0xf275,0x1d8));var _0x5f27=function(_0x4b3b60,_0x5176f6){_0x4b3b60=_0x4b3b60-0x0;var _0x2476e3=_0xf275[_0x4b3b60];return _0x2476e3;};'use strict';var _=require(_0x5f27('0x0'));var util=require(_0x5f27('0x1'));var logger=require(_0x5f27('0x2'))(_0x5f27('0x3'));var moment=require(_0x5f27('0x4'));var BPromise=require(_0x5f27('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5f27('0x6'));var rimraf=require(_0x5f27('0x7'));var config=require(_0x5f27('0x8'));var attributes=require(_0x5f27('0x9'));module[_0x5f27('0xa')]=function(_0x2b59b0,_0x1ef89a){return _0x2b59b0['define'](_0x5f27('0xb'),attributes,{'tableName':_0x5f27('0xc'),'paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':[_0x5f27('0xd'),'to'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3097f4,_0x42b112,_0x1a69ac){if(_0x3097f4[_0x5f27('0xe')]){_0x3097f4[_0x5f27('0xf')]=moment()[_0x5f27('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x3097f4[_0x5f27('0x11')]){_0x3097f4[_0x5f27('0x12')]=moment()[_0x5f27('0x10')](_0x5f27('0x13'));}_0x1a69ac(null,_0x42b112);},'beforeUpdate':function(_0x16f762,_0x1fa666,_0x242084){if(_0x16f762[_0x5f27('0x14')](_0x5f27('0xe'))){_0x16f762['substatusAt']=_0x16f762[_0x5f27('0xe')]?moment()[_0x5f27('0x10')](_0x5f27('0x13')):null;}if(_0x16f762[_0x5f27('0x14')](_0x5f27('0x11'))){_0x16f762[_0x5f27('0x12')]=moment()['format'](_0x5f27('0x13'));_0x16f762[_0x5f27('0xe')]=null;_0x16f762['substatusAt']=null;}_0x242084(null,_0x16f762);},'afterUpdate':function(_0x538a83,_0x37c734,_0x1f9f60){var _0xc59d8b=_0x2b59b0[_0x5f27('0x15')];var _0x313329=_0x538a83[_0x5f27('0x16')]({'plain':!![]});if(_0x313329[_0x5f27('0x11')]){return _0xc59d8b[_0x5f27('0x17')][_0x5f27('0x18')]({'read':!![]},{'where':{'MailInteractionId':_0x313329['id']}})['then'](function(){_0x1f9f60();})['catch'](function(_0x15fb1e){_0x1f9f60(_0x15fb1e);});}else{_0x1f9f60();}}},'charset':_0x5f27('0x19'),'collate':_0x5f27('0x1a')});};
\ No newline at end of file
index d15351f..4d7b1d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x222a=['stringify','error','code','message','result','catch','update','options','attributes','limit','UpdateMailInteraction','AddTagsToMailInteraction','MailInteraction','find','addTags','body','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./mailInteraction.socket','then','info','MailInteraction,\x20%s,\x20%s','MailInteraction,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x222a,0xb3));var _0xa222=function(_0x392e6f,_0x1723de){_0x392e6f=_0x392e6f-0x0;var _0x1a2cb4=_0x222a[_0x392e6f];return _0x1a2cb4;};'use strict';var _=require(_0xa222('0x0'));var util=require(_0xa222('0x1'));var moment=require(_0xa222('0x2'));var BPromise=require(_0xa222('0x3'));var rs=require(_0xa222('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa222('0x5'))['db'];var utils=require(_0xa222('0x6'));var logger=require(_0xa222('0x7'))('rpc');var config=require(_0xa222('0x8'));var jayson=require(_0xa222('0x9'));var client=jayson[_0xa222('0xa')][_0xa222('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xa222('0xc')],{'host':_0xa222('0xd'),'port':0x18eb});var socket=require(_0xa222('0xe'))(new Redis(config[_0xa222('0xc')]));require(_0xa222('0xf'))['register'](socket);function respondWithRpcPromise(_0x34f46b,_0x53df0e,_0x32cf17){return new BPromise(function(_0xf1a872,_0x5edba6){return client['request'](_0x34f46b,_0x32cf17)[_0xa222('0x10')](function(_0x303fe4){logger[_0xa222('0x11')](_0xa222('0x12'),_0x53df0e,'request\x20sent');logger['debug'](_0xa222('0x13'),_0x53df0e,_0xa222('0x14'),JSON[_0xa222('0x15')](_0x303fe4));if(_0x303fe4[_0xa222('0x16')]){if(_0x303fe4['error'][_0xa222('0x17')]===0x1f4){logger[_0xa222('0x16')](_0xa222('0x12'),_0x53df0e,_0x303fe4[_0xa222('0x16')][_0xa222('0x18')]);return _0x5edba6(_0x303fe4[_0xa222('0x16')][_0xa222('0x18')]);}logger['error'](_0xa222('0x12'),_0x53df0e,_0x303fe4[_0xa222('0x16')][_0xa222('0x18')]);return _0xf1a872(_0x303fe4[_0xa222('0x16')]['message']);}else{logger[_0xa222('0x11')]('MailInteraction,\x20%s,\x20%s',_0x53df0e,_0xa222('0x14'));_0xf1a872(_0x303fe4[_0xa222('0x19')]['message']);}})[_0xa222('0x1a')](function(_0x5e0617){logger[_0xa222('0x16')](_0xa222('0x12'),_0x53df0e,_0x5e0617);_0x5edba6(_0x5e0617);});});}exports['UpdateMailInteraction']=function(_0x5e7bbc){var _0x195766=this;return new Promise(function(_0x149d3b,_0xe98df9){return db['MailInteraction'][_0xa222('0x1b')](_0x5e7bbc['body'],{'raw':_0x5e7bbc[_0xa222('0x1c')]?_0x5e7bbc[_0xa222('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e7bbc[_0xa222('0x1c')]?_0x5e7bbc['options']['where']||null:null,'attributes':_0x5e7bbc['options']?_0x5e7bbc['options'][_0xa222('0x1d')]||null:null,'limit':_0x5e7bbc[_0xa222('0x1c')]?_0x5e7bbc[_0xa222('0x1c')][_0xa222('0x1e')]||null:null})['then'](function(_0x2b6d7b){logger[_0xa222('0x11')](_0xa222('0x1f'),_0x5e7bbc);logger['debug'](_0xa222('0x1f'),_0x5e7bbc,JSON[_0xa222('0x15')](_0x2b6d7b));_0x149d3b(_0x2b6d7b);})['catch'](function(_0x4985aa){logger[_0xa222('0x16')](_0xa222('0x1f'),_0x4985aa[_0xa222('0x18')],_0x5e7bbc);_0xe98df9(_0x195766[_0xa222('0x16')](0x1f4,_0x4985aa[_0xa222('0x18')]));});});};exports[_0xa222('0x20')]=function(_0x41d8a9){return new Promise(function(_0x4711ca,_0x454593){return db[_0xa222('0x21')][_0xa222('0x22')]({'where':_0x41d8a9[_0xa222('0x1c')]?_0x41d8a9['options']['where']||null:null})['then'](function(_0x48a098){if(_0x48a098){return _0x48a098[_0xa222('0x23')](_0x41d8a9[_0xa222('0x24')][_0xa222('0x25')],_[_0xa222('0x26')](_0x41d8a9[_0xa222('0x24')],['ids','id'])||{});}})['spread'](function(_0x3092ba){logger[_0xa222('0x11')]('AddTags',_0x41d8a9);logger['debug']('AddTags',_0x41d8a9,JSON['stringify'](_0x3092ba));_0x4711ca(_0x3092ba);})[_0xa222('0x1a')](function(_0x12519d){logger[_0xa222('0x16')](_0xa222('0x27'),_0x12519d[_0xa222('0x18')],_0x41d8a9);_0x454593(_this[_0xa222('0x16')](0x1f4,_0x12519d[_0xa222('0x18')]));});});};
\ No newline at end of file
+var _0x03e2=['where','AddTagsToMailInteraction','ids','omit','body','spread','AddTags','debug','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateMailInteraction','MailInteraction','update','options'];(function(_0x550e9c,_0x266357){var _0x35d985=function(_0x5cff8a){while(--_0x5cff8a){_0x550e9c['push'](_0x550e9c['shift']());}};_0x35d985(++_0x266357);}(_0x03e2,0x119));var _0x203e=function(_0x89f162,_0x53434e){_0x89f162=_0x89f162-0x0;var _0x5994b=_0x03e2[_0x89f162];return _0x5994b;};'use strict';var _=require('lodash');var util=require(_0x203e('0x0'));var moment=require(_0x203e('0x1'));var BPromise=require(_0x203e('0x2'));var rs=require(_0x203e('0x3'));var fs=require('fs');var Redis=require(_0x203e('0x4'));var db=require(_0x203e('0x5'))['db'];var utils=require(_0x203e('0x6'));var logger=require(_0x203e('0x7'))(_0x203e('0x8'));var config=require('../../config/environment');var jayson=require(_0x203e('0x9'));var client=jayson[_0x203e('0xa')]['http']({'port':0x232a});config[_0x203e('0xb')]=_[_0x203e('0xc')](config['redis'],{'host':_0x203e('0xd'),'port':0x18eb});var socket=require(_0x203e('0xe'))(new Redis(config[_0x203e('0xb')]));require('./mailInteraction.socket')[_0x203e('0xf')](socket);function respondWithRpcPromise(_0x2b1a06,_0x1c2e5c,_0xcd5dc7){return new BPromise(function(_0xf9724f,_0x4e4bf6){return client[_0x203e('0x10')](_0x2b1a06,_0xcd5dc7)[_0x203e('0x11')](function(_0x43c46e){logger[_0x203e('0x12')](_0x203e('0x13'),_0x1c2e5c,_0x203e('0x14'));logger['debug']('MailInteraction,\x20%s,\x20%s,\x20%s',_0x1c2e5c,_0x203e('0x14'),JSON[_0x203e('0x15')](_0x43c46e));if(_0x43c46e[_0x203e('0x16')]){if(_0x43c46e[_0x203e('0x16')][_0x203e('0x17')]===0x1f4){logger[_0x203e('0x16')](_0x203e('0x13'),_0x1c2e5c,_0x43c46e['error'][_0x203e('0x18')]);return _0x4e4bf6(_0x43c46e['error'][_0x203e('0x18')]);}logger[_0x203e('0x16')](_0x203e('0x13'),_0x1c2e5c,_0x43c46e['error']['message']);return _0xf9724f(_0x43c46e[_0x203e('0x16')][_0x203e('0x18')]);}else{logger[_0x203e('0x12')](_0x203e('0x13'),_0x1c2e5c,_0x203e('0x14'));_0xf9724f(_0x43c46e[_0x203e('0x19')][_0x203e('0x18')]);}})[_0x203e('0x1a')](function(_0x1a0d36){logger[_0x203e('0x16')](_0x203e('0x13'),_0x1c2e5c,_0x1a0d36);_0x4e4bf6(_0x1a0d36);});});}exports[_0x203e('0x1b')]=function(_0x5669ab){var _0x304e0c=this;return new Promise(function(_0x4fb839,_0x20ac7a){return db[_0x203e('0x1c')][_0x203e('0x1d')](_0x5669ab['body'],{'raw':_0x5669ab[_0x203e('0x1e')]?_0x5669ab[_0x203e('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5669ab[_0x203e('0x1e')]?_0x5669ab[_0x203e('0x1e')][_0x203e('0x1f')]||null:null,'attributes':_0x5669ab[_0x203e('0x1e')]?_0x5669ab[_0x203e('0x1e')]['attributes']||null:null,'limit':_0x5669ab[_0x203e('0x1e')]?_0x5669ab[_0x203e('0x1e')]['limit']||null:null})['then'](function(_0xda78e4){logger[_0x203e('0x12')]('UpdateMailInteraction',_0x5669ab);logger['debug'](_0x203e('0x1b'),_0x5669ab,JSON[_0x203e('0x15')](_0xda78e4));_0x4fb839(_0xda78e4);})[_0x203e('0x1a')](function(_0x4f3ae5){logger['error'](_0x203e('0x1b'),_0x4f3ae5[_0x203e('0x18')],_0x5669ab);_0x20ac7a(_0x304e0c[_0x203e('0x16')](0x1f4,_0x4f3ae5[_0x203e('0x18')]));});});};exports[_0x203e('0x20')]=function(_0x1a48e9){return new Promise(function(_0x36095d,_0x1d870d){return db['MailInteraction']['find']({'where':_0x1a48e9[_0x203e('0x1e')]?_0x1a48e9[_0x203e('0x1e')][_0x203e('0x1f')]||null:null})[_0x203e('0x11')](function(_0x1ecd4e){if(_0x1ecd4e){return _0x1ecd4e['addTags'](_0x1a48e9['body'][_0x203e('0x21')],_[_0x203e('0x22')](_0x1a48e9[_0x203e('0x23')],[_0x203e('0x21'),'id'])||{});}})[_0x203e('0x24')](function(_0x1f3607){logger['info'](_0x203e('0x25'),_0x1a48e9);logger[_0x203e('0x26')]('AddTags',_0x1a48e9,JSON['stringify'](_0x1f3607));_0x36095d(_0x1f3607);})[_0x203e('0x1a')](function(_0x4ba156){logger['error'](_0x203e('0x25'),_0x4ba156[_0x203e('0x18')],_0x1a48e9);_0x1d870d(_this[_0x203e('0x16')](0x1f4,_0x4ba156[_0x203e('0x18')]));});});};
\ No newline at end of file
index 71f3c49..4cd24c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd30=['save','update','emit','removeListener','register','length','mailInteraction:','./mailInteraction.events'];(function(_0x5d7747,_0x55c074){var _0x291142=function(_0x221f7d){while(--_0x221f7d){_0x5d7747['push'](_0x5d7747['shift']());}};_0x291142(++_0x55c074);}(_0xcd30,0x1df));var _0x0cd3=function(_0x43d604,_0x38a6d3){_0x43d604=_0x43d604-0x0;var _0x2f0f74=_0xcd30[_0x43d604];return _0x2f0f74;};'use strict';var MailInteractionEvents=require(_0x0cd3('0x0'));var events=[_0x0cd3('0x1'),'remove',_0x0cd3('0x2')];function createListener(_0x43f407,_0x146eec){return function(_0x1cb7b3){_0x146eec[_0x0cd3('0x3')](_0x43f407,_0x1cb7b3);};}function removeListener(_0x499757,_0x3cbbf8){return function(){MailInteractionEvents[_0x0cd3('0x4')](_0x499757,_0x3cbbf8);};}exports[_0x0cd3('0x5')]=function(_0x2d4266){for(var _0x3c6bf7=0x0,_0x2994d8=events[_0x0cd3('0x6')];_0x3c6bf7<_0x2994d8;_0x3c6bf7++){var _0x36db12=events[_0x3c6bf7];var _0x40bbc6=createListener(_0x0cd3('0x7')+_0x36db12,_0x2d4266);MailInteractionEvents['on'](_0x36db12,_0x40bbc6);}};
\ No newline at end of file
+var _0x8c7b=['register','length','mailInteraction:','save','remove','update','removeListener'];(function(_0x231dda,_0x5b04cc){var _0x3f88cb=function(_0x16eb77){while(--_0x16eb77){_0x231dda['push'](_0x231dda['shift']());}};_0x3f88cb(++_0x5b04cc);}(_0x8c7b,0x168));var _0xb8c7=function(_0x10554b,_0x3ef283){_0x10554b=_0x10554b-0x0;var _0x442208=_0x8c7b[_0x10554b];return _0x442208;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0xb8c7('0x0'),_0xb8c7('0x1'),_0xb8c7('0x2')];function createListener(_0xf9a9be,_0x9f8483){return function(_0xb2cc2c){_0x9f8483['emit'](_0xf9a9be,_0xb2cc2c);};}function removeListener(_0x1024a2,_0x51e3c4){return function(){MailInteractionEvents[_0xb8c7('0x3')](_0x1024a2,_0x51e3c4);};}exports[_0xb8c7('0x4')]=function(_0xf17b5){for(var _0x37b968=0x0,_0x5f2b86=events[_0xb8c7('0x5')];_0x37b968<_0x5f2b86;_0x37b968++){var _0x4edf3c=events[_0x37b968];var _0x175c3c=createListener(_0xb8c7('0x6')+_0x4edf3c,_0xf17b5);MailInteractionEvents['on'](_0x4edf3c,_0x175c3c);}};
\ No newline at end of file
index 92da667..5e1a84c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41c8=['download','post','tracked','mail','mailmessage:create','update','put','/:id/accept','accept','/:id/reject','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','/describe','/:id','show'];(function(_0x26d0be,_0x16acf1){var _0x4987ab=function(_0x13e563){while(--_0x13e563){_0x26d0be['push'](_0x26d0be['shift']());}};_0x4987ab(++_0x16acf1);}(_0x41c8,0x98));var _0x841c=function(_0x40d935,_0x5b9806){_0x40d935=_0x40d935-0x0;var _0x1dc457=_0x41c8[_0x40d935];return _0x1dc457;};'use strict';var multer=require(_0x841c('0x0'));var util=require(_0x841c('0x1'));var path=require('path');var timeout=require(_0x841c('0x2'));var express=require(_0x841c('0x3'));var router=express[_0x841c('0x4')]();var fs_extra=require(_0x841c('0x5'));var auth=require(_0x841c('0x6'));var interaction=require(_0x841c('0x7'));var config=require(_0x841c('0x8'));var controller=require(_0x841c('0x9'));router[_0x841c('0xa')]('/',auth[_0x841c('0xb')](),controller[_0x841c('0xc')]);router[_0x841c('0xa')](_0x841c('0xd'),auth[_0x841c('0xb')](),controller['describe']);router[_0x841c('0xa')](_0x841c('0xe'),auth[_0x841c('0xb')](),controller[_0x841c('0xf')]);router[_0x841c('0xa')]('/:id/download',auth['isAuthenticated'](),controller[_0x841c('0x10')]);router[_0x841c('0x11')]('/',auth['isAuthenticated'](),interaction[_0x841c('0x12')](_0x841c('0x13'),_0x841c('0x14')),controller['create']);router['put']('/:id',auth[_0x841c('0xb')](),controller[_0x841c('0x15')]);router[_0x841c('0x16')](_0x841c('0x17'),auth['isAuthenticated'](),controller[_0x841c('0x18')]);router[_0x841c('0x16')](_0x841c('0x19'),auth[_0x841c('0xb')](),controller['reject']);router[_0x841c('0x1a')](_0x841c('0xe'),auth[_0x841c('0xb')](),controller[_0x841c('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0xbe5d=['/:id/reject','reject','delete','exports','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/describe','isAuthenticated','describe','/:id','/:id/download','download','post','tracked','mail','mailmessage:create','create','put','update','accept'];(function(_0x3826ad,_0x49a30d){var _0x17b900=function(_0x38474f){while(--_0x38474f){_0x3826ad['push'](_0x3826ad['shift']());}};_0x17b900(++_0x49a30d);}(_0xbe5d,0xd4));var _0xdbe5=function(_0x33feca,_0x2bd9ae){_0x33feca=_0x33feca-0x0;var _0x3c558f=_0xbe5d[_0x33feca];return _0x3c558f;};'use strict';var multer=require('multer');var util=require(_0xdbe5('0x0'));var path=require(_0xdbe5('0x1'));var timeout=require(_0xdbe5('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xdbe5('0x3'));var interaction=require(_0xdbe5('0x4'));var config=require(_0xdbe5('0x5'));var controller=require('./mailMessage.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xdbe5('0x6')]);router[_0xdbe5('0x7')](_0xdbe5('0x8'),auth[_0xdbe5('0x9')](),controller[_0xdbe5('0xa')]);router[_0xdbe5('0x7')](_0xdbe5('0xb'),auth[_0xdbe5('0x9')](),controller['show']);router['get'](_0xdbe5('0xc'),auth[_0xdbe5('0x9')](),controller[_0xdbe5('0xd')]);router[_0xdbe5('0xe')]('/',auth['isAuthenticated'](),interaction[_0xdbe5('0xf')](_0xdbe5('0x10'),_0xdbe5('0x11')),controller[_0xdbe5('0x12')]);router[_0xdbe5('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xdbe5('0x14')]);router[_0xdbe5('0x13')]('/:id/accept',auth[_0xdbe5('0x9')](),controller[_0xdbe5('0x15')]);router[_0xdbe5('0x13')](_0xdbe5('0x16'),auth[_0xdbe5('0x9')](),controller[_0xdbe5('0x17')]);router[_0xdbe5('0x18')](_0xdbe5('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0xdbe5('0x19')]=router;
\ No newline at end of file
index 48e30c2..bf6780e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f38=['ENUM','Email','Chat','exports','TEXT','long','medium','out','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x368bba,_0x1f625b){var _0x409f8f=function(_0x463373){while(--_0x463373){_0x368bba['push'](_0x368bba['shift']());}};_0x409f8f(++_0x1f625b);}(_0x9f38,0x153));var _0x89f3=function(_0x19a855,_0x3d09be){_0x19a855=_0x19a855-0x0;var _0x26456e=_0x9f38[_0x19a855];return _0x26456e;};'use strict';var Sequelize=require('sequelize');var _=require('lodash');module[_0x89f3('0x0')]={'body':{'type':Sequelize[_0x89f3('0x1')](_0x89f3('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x89f3('0x3'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x89f3('0x4')),'defaultValue':_0x89f3('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x89f3('0x5')](0x1fe)},'from':{'type':Sequelize[_0x89f3('0x5')]},'to':{'type':Sequelize[_0x89f3('0x1')](_0x89f3('0x2'))},'cc':{'type':Sequelize[_0x89f3('0x1')]('long')},'bcc':{'type':Sequelize[_0x89f3('0x1')]('long')},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize[_0x89f3('0x6')]},'attach':{'type':Sequelize[_0x89f3('0x7')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x89f3('0x8')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x89f3('0x6')]},'originTo':{'type':Sequelize[_0x89f3('0x1')]('long')},'originCc':{'type':Sequelize[_0x89f3('0x1')](_0x89f3('0x2'))},'originChannel':{'type':Sequelize[_0x89f3('0x9')](_0x89f3('0xa'),_0x89f3('0xb')),'defaultValue':_0x89f3('0xa'),'allowNull':![]}};
\ No newline at end of file
+var _0x269e=['lodash','exports','TEXT','long','medium','BOOLEAN','ENUM','out','STRING','DATE','Chat','Email','sequelize'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x269e,0x144));var _0xe269=function(_0x3147ce,_0x1e2e75){_0x3147ce=_0x3147ce-0x0;var _0x1fe7ed=_0x269e[_0x3147ce];return _0x1fe7ed;};'use strict';var Sequelize=require(_0xe269('0x0'));var _=require(_0xe269('0x1'));module[_0xe269('0x2')]={'body':{'type':Sequelize[_0xe269('0x3')](_0xe269('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xe269('0x3')](_0xe269('0x5'))},'read':{'type':Sequelize[_0xe269('0x6')],'defaultValue':![]},'direction':{'type':Sequelize[_0xe269('0x7')]('in',_0xe269('0x8')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xe269('0x9')](0x1fe)},'from':{'type':Sequelize[_0xe269('0x9')]},'to':{'type':Sequelize[_0xe269('0x3')](_0xe269('0x4'))},'cc':{'type':Sequelize[_0xe269('0x3')](_0xe269('0x4'))},'bcc':{'type':Sequelize[_0xe269('0x3')](_0xe269('0x4'))},'subject':{'type':Sequelize[_0xe269('0x3')]},'sentAt':{'type':Sequelize[_0xe269('0xa')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize[_0xe269('0xa')]},'originTo':{'type':Sequelize[_0xe269('0x3')]('long')},'originCc':{'type':Sequelize[_0xe269('0x3')](_0xe269('0x4'))},'originChannel':{'type':Sequelize[_0xe269('0x7')]('Email',_0xe269('0xb')),'defaultValue':_0xe269('0xc'),'allowNull':![]}};
\ No newline at end of file
index aa04c89..8ab1bf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['message','info','catch','status','json','offset','undefined','limit','count','set','Content-Range','destroy','end','sendStatus','name','send','index','map','MailMessage','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','rows','show','params','length','include','find','body','create','direction','out','secret','MailAccount','findOne','CmList','List','CmContact','Contacts','DESC','MailServerOut','Smtp','isNil','service','host','port','secure','authentication','auth','user','pass','attachments','join','root','server/files/attachments','basename','ListId','sendMail','update','messageId','YYYY-MM-DD\x20HH:mm:ss','accept','readAt','UserId','agent','get','MailInteraction','MailInteractionId','format','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','SIP/%s','channel','fromString','EventManager','acceptmessage','reject','mail','RejectMessage','rejectMessage','email','interface','event','rejectmessage','download','unix','toString','files','tmp','server','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','push','build','writeFileSync','unlinkSync','eml-format','moment','bluebird','util','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','client','http','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0xcfeff4,_0x3f2e19){var _0xb2fadc=function(_0x4cd013){while(--_0x4cd013){_0xcfeff4['push'](_0xcfeff4['shift']());}};_0xb2fadc(++_0x3f2e19);}(_0x34e8,0x12c));var _0x834e=function(_0x14d249,_0x352923){_0x14d249=_0x14d249-0x0;var _0xebe8ed=_0x34e8[_0x14d249];return _0xebe8ed;};'use strict';var emlformat=require(_0x834e('0x0'));var moment=require(_0x834e('0x1'));var BPromise=require(_0x834e('0x2'));var util=require(_0x834e('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x834e('0x4'));var Redis=require(_0x834e('0x5'));var htmlToText=require(_0x834e('0x6'));var qs=require(_0x834e('0x7'));var logger=require(_0x834e('0x8'))(_0x834e('0x9'));var interaction_log=require(_0x834e('0x8'))('mail-interactions');var config=require(_0x834e('0xa'));var db=require('../../mysqldb')['db'];config[_0x834e('0xb')]=_[_0x834e('0xc')](config[_0x834e('0xb')],{'host':_0x834e('0xd'),'port':0x18eb});var socket=require(_0x834e('0xe'))(new Redis(config[_0x834e('0xb')]));require(_0x834e('0xf'))[_0x834e('0x10')](socket);var jayson=require(_0x834e('0x11'));var client=jayson[_0x834e('0x12')][_0x834e('0x13')]({'port':0x232c});var client9003=jayson[_0x834e('0x12')][_0x834e('0x13')]({'port':0x232b});var client9002=jayson[_0x834e('0x12')][_0x834e('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x1e00de,_0x2fd95c,_0x538bb3,_0x5e5b6d){return new BPromise(function(_0x6cd9b9,_0x58a27e){var _0x23848e=_0x5e5b6d||client;return _0x23848e[_0x834e('0x14')](_0x1e00de,_0x538bb3)[_0x834e('0x15')](function(_0x21cc0a){logger['info'](_0x834e('0x16'),_0x2fd95c,_0x834e('0x17'));logger['debug'](_0x834e('0x18'),_0x2fd95c,'request\x20sent',JSON[_0x834e('0x19')](_0x21cc0a));if(_0x21cc0a[_0x834e('0x1a')]){if(_0x21cc0a['error'][_0x834e('0x1b')]===0x1f4){logger[_0x834e('0x1a')](_0x834e('0x16'),_0x2fd95c,_0x21cc0a['error'][_0x834e('0x1c')]);return _0x58a27e(_0x21cc0a[_0x834e('0x1a')][_0x834e('0x1c')]);}logger[_0x834e('0x1a')](_0x834e('0x16'),_0x2fd95c,_0x21cc0a[_0x834e('0x1a')][_0x834e('0x1c')]);return _0x6cd9b9(_0x21cc0a['error'][_0x834e('0x1c')]);}else{logger[_0x834e('0x1d')](_0x834e('0x16'),_0x2fd95c,_0x834e('0x17'));_0x6cd9b9(_0x21cc0a['result'][_0x834e('0x1c')]);}})[_0x834e('0x1e')](function(_0x5a05c0){logger[_0x834e('0x1a')](_0x834e('0x16'),_0x2fd95c,_0x5a05c0);_0x58a27e(_0x5a05c0);});});}function respondWithResult(_0x8d406e,_0x5c55ca){_0x5c55ca=_0x5c55ca||0xc8;return function(_0x4e3f48){if(_0x4e3f48){return _0x8d406e[_0x834e('0x1f')](_0x5c55ca)[_0x834e('0x20')](_0x4e3f48);}};}function respondWithFilteredResult(_0x589dde,_0x25ee1d){return function(_0x1dc1e0){if(_0x1dc1e0){var _0x58f4fd=typeof _0x25ee1d[_0x834e('0x21')]===_0x834e('0x22')&&typeof _0x25ee1d[_0x834e('0x23')]==='undefined';var _0x24fcf7=_0x1dc1e0[_0x834e('0x24')];var _0x5e1cc5=_0x58f4fd?0x0:_0x25ee1d['offset'];var _0x1e713a=_0x58f4fd?_0x1dc1e0['count']:_0x25ee1d[_0x834e('0x21')]+_0x25ee1d[_0x834e('0x23')];var _0x3db026;if(_0x1e713a>=_0x24fcf7){_0x1e713a=_0x24fcf7;_0x3db026=0xc8;}else{_0x3db026=0xce;}_0x589dde[_0x834e('0x1f')](_0x3db026);return _0x589dde[_0x834e('0x25')](_0x834e('0x26'),_0x5e1cc5+'-'+_0x1e713a+'/'+_0x24fcf7)['json'](_0x1dc1e0);}return null;};}function saveUpdates(_0x510780){return function(_0x4dc64a){if(_0x4dc64a){return _0x4dc64a['update'](_0x510780)[_0x834e('0x15')](function(_0x567cea){return _0x567cea;});}return null;};}function removeEntity(_0x106d6a){return function(_0x5dacc1){if(_0x5dacc1){return _0x5dacc1[_0x834e('0x27')]()[_0x834e('0x15')](function(){_0x106d6a[_0x834e('0x1f')](0xcc)[_0x834e('0x28')]();});}};}function handleEntityNotFound(_0x4551f5){return function(_0x390119){if(!_0x390119){_0x4551f5[_0x834e('0x29')](0x194);}return _0x390119;};}function handleError(_0xfaf716,_0x278db3){_0x278db3=_0x278db3||0x1f4;return function(_0x493289){logger[_0x834e('0x1a')](_0x493289['stack']);if(_0x493289[_0x834e('0x2a')]){delete _0x493289[_0x834e('0x2a')];}_0xfaf716[_0x834e('0x1f')](_0x278db3)[_0x834e('0x2b')](_0x493289);};}exports[_0x834e('0x2c')]=function(_0x4689c2,_0x4696a1){var _0x38cd29={},_0x358c31={},_0x12b2bc={'count':0x0,'rows':[]};var _0x5bd232=_[_0x834e('0x2d')](db[_0x834e('0x2e')][_0x834e('0x2f')],function(_0xaf01f4){return{'name':_0xaf01f4['fieldName'],'type':_0xaf01f4[_0x834e('0x30')][_0x834e('0x31')]};});_0x358c31['model']=_['map'](_0x5bd232,'name');_0x358c31[_0x834e('0x32')]=_[_0x834e('0x33')](_0x4689c2[_0x834e('0x32')]);_0x358c31[_0x834e('0x34')]=_[_0x834e('0x35')](_0x358c31[_0x834e('0x36')],_0x358c31['query']);_0x38cd29[_0x834e('0x37')]=_['intersection'](_0x358c31[_0x834e('0x36')],qs[_0x834e('0x38')](_0x4689c2['query'][_0x834e('0x38')]));_0x38cd29[_0x834e('0x37')]=_0x38cd29['attributes']['length']?_0x38cd29[_0x834e('0x37')]:_0x358c31[_0x834e('0x36')];if(!_0x4689c2[_0x834e('0x32')][_0x834e('0x39')](_0x834e('0x3a'))){_0x38cd29['limit']=qs[_0x834e('0x23')](_0x4689c2['query']['limit']);_0x38cd29[_0x834e('0x21')]=qs['offset'](_0x4689c2[_0x834e('0x32')][_0x834e('0x21')]);}_0x38cd29[_0x834e('0x3b')]=qs[_0x834e('0x3c')](_0x4689c2[_0x834e('0x32')]['sort']);_0x38cd29[_0x834e('0x3d')]=qs[_0x834e('0x34')](_[_0x834e('0x3e')](_0x4689c2['query'],_0x358c31[_0x834e('0x34')]),_0x5bd232);if(_0x4689c2[_0x834e('0x32')]['filter']){_0x38cd29[_0x834e('0x3d')]=_['merge'](_0x38cd29[_0x834e('0x3d')],{'$or':_[_0x834e('0x2d')](_0x5bd232,function(_0x4a18bb){if(_0x4a18bb['type']!==_0x834e('0x3f')){var _0x16969b={};_0x16969b[_0x4a18bb[_0x834e('0x2a')]]={'$like':'%'+_0x4689c2[_0x834e('0x32')][_0x834e('0x40')]+'%'};return _0x16969b;}})});}_0x38cd29=_[_0x834e('0x41')]({},_0x38cd29,_0x4689c2[_0x834e('0x42')]);var _0x4a3381={'where':_0x38cd29[_0x834e('0x3d')]};return db['MailMessage'][_0x834e('0x24')](_0x4a3381)['then'](function(_0x1df5b0){_0x12b2bc['count']=_0x1df5b0;if(_0x4689c2[_0x834e('0x32')][_0x834e('0x43')]){_0x38cd29['include']=[{'all':!![]}];}return db[_0x834e('0x2e')][_0x834e('0x44')](_0x38cd29);})[_0x834e('0x15')](function(_0xd55cc3){_0x12b2bc[_0x834e('0x45')]=_0xd55cc3;return _0x12b2bc;})[_0x834e('0x15')](respondWithFilteredResult(_0x4696a1,_0x38cd29))[_0x834e('0x1e')](handleError(_0x4696a1,null));};exports[_0x834e('0x46')]=function(_0x5dc63b,_0x279ea1){var _0x5f3943={'raw':!![],'where':{'id':_0x5dc63b[_0x834e('0x47')]['id']}},_0x3124be={};_0x3124be['model']=_[_0x834e('0x33')](db[_0x834e('0x2e')][_0x834e('0x2f')]);_0x3124be[_0x834e('0x32')]=_[_0x834e('0x33')](_0x5dc63b[_0x834e('0x32')]);_0x3124be['filters']=_['intersection'](_0x3124be[_0x834e('0x36')],_0x3124be[_0x834e('0x32')]);_0x5f3943[_0x834e('0x37')]=_[_0x834e('0x35')](_0x3124be[_0x834e('0x36')],qs[_0x834e('0x38')](_0x5dc63b[_0x834e('0x32')][_0x834e('0x38')]));_0x5f3943[_0x834e('0x37')]=_0x5f3943[_0x834e('0x37')][_0x834e('0x48')]?_0x5f3943[_0x834e('0x37')]:_0x3124be[_0x834e('0x36')];if(_0x5dc63b[_0x834e('0x32')][_0x834e('0x43')]){_0x5f3943[_0x834e('0x49')]=[{'all':!![]}];}_0x5f3943=_[_0x834e('0x41')]({},_0x5f3943,_0x5dc63b[_0x834e('0x42')]);return db[_0x834e('0x2e')][_0x834e('0x4a')](_0x5f3943)['then'](handleEntityNotFound(_0x279ea1,null))[_0x834e('0x15')](respondWithResult(_0x279ea1,null))[_0x834e('0x1e')](handleError(_0x279ea1,null));};exports['update']=function(_0x3c00a3,_0x3b0988){if(_0x3c00a3['body']['id']){delete _0x3c00a3[_0x834e('0x4b')]['id'];}return db[_0x834e('0x2e')][_0x834e('0x4a')]({'where':{'id':_0x3c00a3[_0x834e('0x47')]['id']}})[_0x834e('0x15')](handleEntityNotFound(_0x3b0988,null))[_0x834e('0x15')](saveUpdates(_0x3c00a3[_0x834e('0x4b')],null))['then'](respondWithResult(_0x3b0988,null))[_0x834e('0x1e')](handleError(_0x3b0988,null));};exports[_0x834e('0x27')]=function(_0x3e0550,_0x363675){return db[_0x834e('0x2e')][_0x834e('0x4a')]({'where':{'id':_0x3e0550[_0x834e('0x47')]['id']}})[_0x834e('0x15')](handleEntityNotFound(_0x363675,null))['then'](removeEntity(_0x363675,null))[_0x834e('0x1e')](handleError(_0x363675,null));};exports['describe']=function(_0x2f4bde,_0x53a9ee){return db[_0x834e('0x2e')]['describe']()['then'](respondWithResult(_0x53a9ee,null))[_0x834e('0x1e')](handleError(_0x53a9ee,null));};exports[_0x834e('0x4c')]=function(_0x5291ae,_0x5be43d){return db[_0x834e('0x2e')][_0x834e('0x4c')](_0x5291ae[_0x834e('0x4b')])[_0x834e('0x15')](function(_0x21c417){if(_0x21c417){if(_0x21c417[_0x834e('0x4d')]===_0x834e('0x4e')&&!_0x21c417[_0x834e('0x4f')]){var _0x528e66,_0x142334,_0x3c70bf;if(_0x5291ae['body']['to']){_0x142334=_0x5291ae[_0x834e('0x4b')]['to']['split'](',')[0x0];}return db[_0x834e('0x50')][_0x834e('0x51')]({'where':{'id':_0x21c417['MailAccountId']},'include':[{'model':db[_0x834e('0x52')],'as':_0x834e('0x53'),'include':[{'model':db[_0x834e('0x54')],'as':_0x834e('0x55'),'where':{'email':_0x142334},'limit':0x1,'order':[['updatedAt',_0x834e('0x56')]]}]},{'model':db[_0x834e('0x57')],'as':_0x834e('0x58'),'raw':!![]}]})['then'](function(_0x246b8e){_0x528e66=_0x246b8e;if(_0x528e66&&_0x528e66[_0x834e('0x58')]){var _0x3a7683={'tls':{'rejectUnauthorized':![]}};if(_[_0x834e('0x59')](_0x528e66[_0x834e('0x58')][_0x834e('0x5a')])){_0x3a7683[_0x834e('0x5b')]=_0x528e66[_0x834e('0x58')][_0x834e('0x5b')];_0x3a7683[_0x834e('0x5c')]=_0x528e66[_0x834e('0x58')][_0x834e('0x5c')];_0x3a7683[_0x834e('0x5d')]=_0x528e66[_0x834e('0x58')][_0x834e('0x5d')];if(_0x528e66[_0x834e('0x58')][_0x834e('0x5e')]){_0x3a7683[_0x834e('0x5f')]={'user':_0x528e66[_0x834e('0x58')][_0x834e('0x60')],'pass':_0x528e66[_0x834e('0x58')][_0x834e('0x61')]};}}else{_0x3a7683['service']=_0x528e66[_0x834e('0x58')][_0x834e('0x5a')];_0x3a7683[_0x834e('0x5f')]={'user':_0x528e66[_0x834e('0x58')]['user'],'pass':_0x528e66[_0x834e('0x58')]['pass']};_0x3a7683['secure']=_0x528e66[_0x834e('0x58')][_0x834e('0x5d')];}if(_0x5291ae[_0x834e('0x4b')][_0x834e('0x62')]&&_0x5291ae[_0x834e('0x4b')][_0x834e('0x62')][_0x834e('0x48')]){for(var _0xe5c8f6=0x0;_0xe5c8f6<_0x5291ae['body'][_0x834e('0x62')]['length'];_0xe5c8f6+=0x1){_0x5291ae[_0x834e('0x4b')][_0x834e('0x62')][_0xe5c8f6]={'filename':_0x5291ae['body']['attachments'][_0xe5c8f6][_0x834e('0x2a')],'path':path[_0x834e('0x63')](config[_0x834e('0x64')],_0x834e('0x65'),_0x5291ae[_0x834e('0x4b')]['attachments'][_0xe5c8f6][_0x834e('0x66')])};}}_0x3c70bf={'account':_0x3a7683,'message':_0x5291ae[_0x834e('0x4b')]};return;}})[_0x834e('0x15')](function(){if(_0x528e66[_0x834e('0x53')]){if(_0x528e66[_0x834e('0x53')][_0x834e('0x55')][_0x834e('0x48')]){return _0x528e66[_0x834e('0x53')][_0x834e('0x55')][0x0];}else{return db[_0x834e('0x54')]['create'](_[_0x834e('0xc')](_0x5291ae[_0x834e('0x4b')],{'firstName':_0x5291ae[_0x834e('0x4b')]['to'],'email':_0x5291ae[_0x834e('0x4b')]['to'],'phone':_0x5291ae['body']['to'],'ListId':_0x528e66[_0x834e('0x67')]}));}}else{throw new Error('List\x20not\x20found');}})['then'](function(){if(_0x3c70bf){return respondWithRpcPromise('SendMail',_0x834e('0x68'),_0x3c70bf,client9003)[_0x834e('0x15')](function(_0x514aac){return _0x21c417[_0x834e('0x69')]({'read':!![],'messageId':_0x514aac[_0x834e('0x6a')],'sentAt':moment()['format'](_0x834e('0x6b'))});})[_0x834e('0x1e')](function(_0x4b88e7){logger['error']('%s',JSON[_0x834e('0x19')](_0x4b88e7));return _0x21c417;});}return _0x21c417;});}return _0x21c417;}})[_0x834e('0x15')](respondWithResult(_0x5be43d,0xc9))[_0x834e('0x1e')](handleError(_0x5be43d,null));};exports[_0x834e('0x6c')]=function(_0x1d8e7,_0x493239){var _0x264a6f={'agent':{},'channel':'mail'};if(_0x1d8e7[_0x834e('0x4b')]['id']){delete _0x1d8e7[_0x834e('0x4b')]['id'];}_0x1d8e7[_0x834e('0x4b')]['read']=!![];_0x1d8e7[_0x834e('0x4b')][_0x834e('0x6d')]=moment()['format'](_0x834e('0x6b'));_0x1d8e7[_0x834e('0x4b')][_0x834e('0x6e')]=_0x1d8e7['body'][_0x834e('0x6e')]||_0x1d8e7[_0x834e('0x60')]['id'];_0x264a6f[_0x834e('0x6f')]['id']=_0x1d8e7[_0x834e('0x4b')][_0x834e('0x6e')];return db[_0x834e('0x2e')][_0x834e('0x4a')]({'where':{'id':_0x1d8e7[_0x834e('0x47')]['id'],'UserId':null}})[_0x834e('0x15')](handleEntityNotFound(_0x493239,null))[_0x834e('0x15')](saveUpdates(_0x1d8e7['body'],null))['then'](function(_0x4e466e){if(_0x4e466e){_0x264a6f[_0x834e('0x1c')]=_0x4e466e[_0x834e('0x70')]({'plain':!![]});return db[_0x834e('0x71')][_0x834e('0x4a')]({'where':{'id':_0x4e466e[_0x834e('0x72')]}});}return null;})['then'](handleEntityNotFound(_0x493239,null))['then'](function(_0x4520fc){if(_0x4520fc){return _0x4520fc[_0x834e('0x69')]({'UserId':_0x1d8e7[_0x834e('0x4b')][_0x834e('0x6e')],'read1stAt':_[_0x834e('0x59')](_0x4520fc['read1stAt'])?moment()[_0x834e('0x73')](_0x834e('0x6b')):undefined});}return null;})[_0x834e('0x15')](function(_0x4e1735){if(_0x4e1735){_0x264a6f[_0x834e('0x74')]=_0x4e1735[_0x834e('0x70')]({'plain':!![]});interaction_log[_0x834e('0x1d')](_0x834e('0x75'),_0x1d8e7[_0x834e('0x60')]['id'],_0x1d8e7['user']['name'],_0x1d8e7[_0x834e('0x60')][_0x834e('0x76')],_0x264a6f['interaction']['id'],_0x1d8e7[_0x834e('0x4b')]?JSON['stringify'](_0x1d8e7[_0x834e('0x4b')]):_0x834e('0x77'));return respondWithRpcPromise(_0x834e('0x78'),'acceptMessage',_0x264a6f);}return null;})[_0x834e('0x15')](function(_0x49e721){var _0x5b2621='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x49e721[_0x834e('0x1c')][_0x834e('0x79')];return db[_0x834e('0x7a')][_0x834e('0x32')](_0x5b2621,{'type':db[_0x834e('0x7b')][_0x834e('0x7c')][_0x834e('0x7d')],'raw':!![]})[_0x834e('0x15')](function(_0x17e61a){return _0x17e61a;});})['then'](function(_0x2f775a){if(_0x2f775a){_0x264a6f['message'][_0x834e('0x7e')]=_0x2f775a[0x0];if(!_0x1d8e7[_0x834e('0x4b')][_0x834e('0x6e')])return;return db[_0x834e('0x7f')][_0x834e('0x4a')]({'where':{'id':_0x1d8e7[_0x834e('0x4b')]['UserId'],'role':'agent'},'attributes':['id',_0x834e('0x2a'),_0x834e('0x80'),'email',_0x834e('0x81')],'raw':!![]});}return null;})[_0x834e('0x15')](function(_0x1bc5d1){if(!_0x1bc5d1)return null;_0x264a6f[_0x834e('0x1c')][_0x834e('0x6f')]=_0x1bc5d1;return _0x264a6f;})['then'](function(_0x29839d){if(_0x29839d){if(_0x1d8e7[_0x834e('0x4b')]['manual']){_0x264a6f['message']['interface']=util[_0x834e('0x73')](_0x834e('0x82'),_0x1d8e7['user'][_0x834e('0x2a')]);_0x264a6f[_0x834e('0x1c')]['channel']=_0x264a6f[_0x834e('0x83')];_0x264a6f['message']['event']=_0x834e('0x6c');_0x264a6f[_0x834e('0x1c')][_0x834e('0x4b')]=htmlToText[_0x834e('0x84')](_0x264a6f['message'][_0x834e('0x4b')]);return respondWithRpcPromise(_0x834e('0x85'),_0x834e('0x85'),{'event':_0x834e('0x86'),'message':_0x264a6f[_0x834e('0x1c')]},client9002)[_0x834e('0x15')](function(){return _0x264a6f;});}return _0x264a6f;}return null;})[_0x834e('0x15')](respondWithResult(_0x493239,null))[_0x834e('0x1e')](handleError(_0x493239,null));};exports[_0x834e('0x87')]=function(_0x2821fe,_0x2fa64c){var _0x261e3d={'agent':{},'channel':_0x834e('0x88')};if(_0x2821fe[_0x834e('0x4b')]['id']){delete _0x2821fe[_0x834e('0x4b')]['id'];}_0x2821fe[_0x834e('0x4b')][_0x834e('0x6e')]=_0x2821fe[_0x834e('0x4b')][_0x834e('0x6e')]||_0x2821fe[_0x834e('0x60')]['id'];_0x261e3d[_0x834e('0x6f')]['id']=_0x2821fe[_0x834e('0x4b')]['UserId'];return db[_0x834e('0x2e')][_0x834e('0x4a')]({'where':{'id':_0x2821fe[_0x834e('0x47')]['id'],'UserId':null}})[_0x834e('0x15')](handleEntityNotFound(_0x2fa64c,null))[_0x834e('0x15')](function(_0x3bcdcd){if(_0x3bcdcd){_0x261e3d[_0x834e('0x1c')]=_0x3bcdcd[_0x834e('0x70')]({'plain':!![]});return db[_0x834e('0x71')]['find']({'where':{'id':_0x3bcdcd['MailInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x2fa64c,null))[_0x834e('0x15')](function(_0x493e1f){if(_0x493e1f){_0x261e3d[_0x834e('0x74')]=_0x493e1f[_0x834e('0x70')]({'plain':!![]});interaction_log[_0x834e('0x1d')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2821fe[_0x834e('0x60')]['id'],_0x2821fe[_0x834e('0x60')][_0x834e('0x2a')],_0x2821fe[_0x834e('0x60')][_0x834e('0x76')],_0x261e3d[_0x834e('0x74')]['id'],_0x2821fe['body']?JSON[_0x834e('0x19')](_0x2821fe[_0x834e('0x4b')]):_0x834e('0x77'));return respondWithRpcPromise(_0x834e('0x89'),_0x834e('0x8a'),_0x261e3d);}return null;})['then'](function(_0x4ebeba){var _0x508b3e='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4ebeba[_0x834e('0x1c')][_0x834e('0x79')];return db['sequelize'][_0x834e('0x32')](_0x508b3e,{'type':db[_0x834e('0x7b')]['QueryTypes'][_0x834e('0x7d')],'raw':!![]})[_0x834e('0x15')](function(_0xbf7693){return _0xbf7693;});})[_0x834e('0x15')](function(_0x1d1075){if(_0x1d1075){_0x261e3d[_0x834e('0x1c')]['contact']=_0x1d1075[0x0];if(!_0x2821fe['body'][_0x834e('0x6e')])return;return db[_0x834e('0x7f')][_0x834e('0x4a')]({'where':{'id':_0x2821fe['body'][_0x834e('0x6e')],'role':_0x834e('0x6f')},'attributes':['id','name',_0x834e('0x80'),_0x834e('0x8b'),_0x834e('0x81')],'raw':!![]});}return null;})[_0x834e('0x15')](function(_0x4cb802){if(!_0x4cb802)return null;_0x261e3d[_0x834e('0x1c')]['agent']=_0x4cb802;return _0x261e3d;})['then'](function(_0xc64958){if(_0xc64958){_0xc64958[_0x834e('0x1c')][_0x834e('0x8c')]=util[_0x834e('0x73')](_0x834e('0x82'),_0x2821fe[_0x834e('0x60')]['name']);_0xc64958['message'][_0x834e('0x83')]=_0x261e3d[_0x834e('0x83')];_0xc64958[_0x834e('0x1c')][_0x834e('0x8d')]=_0x834e('0x87');_0xc64958[_0x834e('0x1c')][_0x834e('0x4b')]=htmlToText['fromString'](_0x261e3d[_0x834e('0x1c')][_0x834e('0x4b')]);respondWithRpcPromise('EventManager',_0x834e('0x85'),{'event':_0x834e('0x8e'),'message':_0xc64958[_0x834e('0x1c')]},client9002);return _0x261e3d;}return null;})[_0x834e('0x15')](respondWithResult(_0x2fa64c,null))[_0x834e('0x1e')](handleError(_0x2fa64c,null));};exports[_0x834e('0x8f')]=function(_0x231f0b,_0x3b44f3){var _0x14e794=moment()[_0x834e('0x90')]()[_0x834e('0x91')]();var _0x152372=path[_0x834e('0x63')](config[_0x834e('0x64')],'server',_0x834e('0x92'),_0x834e('0x93'));var _0x522eab=path[_0x834e('0x63')](config['root'],_0x834e('0x94'),'files',_0x834e('0x62'));var _0x560d10=util[_0x834e('0x73')](_0x834e('0x95'),_0x14e794);return db[_0x834e('0x2e')][_0x834e('0x4a')]({'where':{'id':_0x231f0b['params']['id']},'attributes':['id',_0x834e('0x4b'),_0x834e('0x96'),'to','cc',_0x834e('0x97'),_0x834e('0x98'),_0x834e('0x99')],'include':_0x231f0b[_0x834e('0x32')][_0x834e('0x62')]?[{'model':db[_0x834e('0x9a')],'as':_0x834e('0x9b')}]:undefined})[_0x834e('0x15')](handleEntityNotFound(_0x3b44f3,null))[_0x834e('0x15')](function(_0x1cb4d0){if(_0x1cb4d0){var _0x3a6546=_0x1cb4d0;var _0x246f01={'from':_0x3a6546[_0x834e('0x96')],'to':_0x3a6546['to'],'subject':_0x3a6546[_0x834e('0x98')],'html':_0x3a6546[_0x834e('0x4b')],'headers':{'Date':moment(_0x3a6546['createdAt'])['format'](_0x834e('0x9c'))},'attachments':[]};if(_0x1cb4d0['cc']){_0x246f01[_0x834e('0x9d')]['Cc']=_0x1cb4d0['cc'];}if(_0x1cb4d0[_0x834e('0x97')]){_0x246f01[_0x834e('0x9d')][_0x834e('0x9e')]=_0x1cb4d0[_0x834e('0x97')];}return new BPromise(function(_0x22f90d,_0x40fd40){if(_0x1cb4d0[_0x834e('0x9b')]){for(var _0x58cd3b=0x0;_0x58cd3b<_0x1cb4d0[_0x834e('0x9b')][_0x834e('0x48')];_0x58cd3b++){var _0x513d9e=_0x1cb4d0[_0x834e('0x9b')][_0x58cd3b];var _0x54c129=path[_0x834e('0x63')](_0x522eab,_0x513d9e[_0x834e('0x66')]);if(fs[_0x834e('0x9f')](_0x54c129)){_0x246f01['attachments'][_0x834e('0xa0')]({'name':_0x513d9e[_0x834e('0x2a')],'contentType':_0x513d9e['type'],'data':fs['readFileSync'](_0x54c129)});}}}emlformat[_0x834e('0xa1')](_0x246f01,function(_0x3b7b1a,_0x4e0f4d){if(_0x3b7b1a)return _0x40fd40(_0x3b7b1a);fs[_0x834e('0xa2')](path[_0x834e('0x63')](_0x152372,_0x560d10),_0x4e0f4d);return _0x22f90d(_0x4e0f4d);});});}})[_0x834e('0x15')](function(_0x135219){if(_0x135219){return _0x3b44f3[_0x834e('0x8f')](path['join'](_0x152372,_0x560d10),_0x560d10,function(_0x4e7545){if(!_0x4e7545)fs[_0x834e('0xa3')](path['join'](_0x152372,_0x560d10));});}})['catch'](handleError(_0x3b44f3,null));};
\ No newline at end of file
+var _0xe632=['SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','rejectmessage','download','unix','toString','files','tmp','server','message-%s.eml','from','bcc','createdAt','Attachments','subject','decode','headers','Bcc','push','readFileSync','build','writeFileSync','eml-format','moment','bluebird','util','path','lodash','ioredis','html-to-text','mail-interactions','../../config/environment','../../mysqldb','defaults','redis','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','client','request','then','info','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','status','json','undefined','limit','count','offset','set','Content-Range','update','destroy','end','sendStatus','stack','name','send','index','map','MailMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','where','filter','VIRTUAL','merge','options','includeAll','include','show','params','length','find','body','describe','create','direction','out','secret','split','findOne','MailAccountId','CmList','CmContact','Contacts','updatedAt','MailServerOut','Smtp','host','port','secure','authentication','auth','pass','service','user','attachments','join','root','server/files/attachments','basename','List','ListId','List\x20not\x20found','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','MailInteraction','MailInteractionId','isNil','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','ContactId','sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','fromString','EventManager','acceptmessage','reject','mail','null','rejectMessage'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xe632,0xb9));var _0x2e63=function(_0x40829d,_0xb4358b){_0x40829d=_0x40829d-0x0;var _0x2dc998=_0xe632[_0x40829d];return _0x2dc998;};'use strict';var emlformat=require(_0x2e63('0x0'));var moment=require(_0x2e63('0x1'));var BPromise=require(_0x2e63('0x2'));var util=require(_0x2e63('0x3'));var path=require(_0x2e63('0x4'));var fs=require('fs');var _=require(_0x2e63('0x5'));var Redis=require(_0x2e63('0x6'));var htmlToText=require(_0x2e63('0x7'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var interaction_log=require('../../config/logger')(_0x2e63('0x8'));var config=require(_0x2e63('0x9'));var db=require(_0x2e63('0xa'))['db'];config['redis']=_[_0x2e63('0xb')](config[_0x2e63('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x2e63('0xd'))(new Redis(config[_0x2e63('0xc')]));var htmlEntities=require(_0x2e63('0xe'));require(_0x2e63('0xf'))[_0x2e63('0x10')](socket);var jayson=require(_0x2e63('0x11'));var client=jayson[_0x2e63('0x12')]['http']({'port':0x232c});var client9003=jayson[_0x2e63('0x12')]['http']({'port':0x232b});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x43a121,_0x38fe33,_0x37c593,_0x208b9e){return new BPromise(function(_0x4a07f6,_0x18b122){var _0x53109f=_0x208b9e||client;return _0x53109f[_0x2e63('0x13')](_0x43a121,_0x37c593)[_0x2e63('0x14')](function(_0xb2d64e){logger[_0x2e63('0x15')](_0x2e63('0x16'),_0x38fe33,'request\x20sent');logger[_0x2e63('0x17')](_0x2e63('0x18'),_0x38fe33,_0x2e63('0x19'),JSON[_0x2e63('0x1a')](_0xb2d64e));if(_0xb2d64e['error']){if(_0xb2d64e[_0x2e63('0x1b')]['code']===0x1f4){logger['error'](_0x2e63('0x16'),_0x38fe33,_0xb2d64e[_0x2e63('0x1b')][_0x2e63('0x1c')]);return _0x18b122(_0xb2d64e['error'][_0x2e63('0x1c')]);}logger[_0x2e63('0x1b')]('MailMessage,\x20%s,\x20%s',_0x38fe33,_0xb2d64e[_0x2e63('0x1b')]['message']);return _0x4a07f6(_0xb2d64e[_0x2e63('0x1b')]['message']);}else{logger[_0x2e63('0x15')]('MailMessage,\x20%s,\x20%s',_0x38fe33,_0x2e63('0x19'));_0x4a07f6(_0xb2d64e[_0x2e63('0x1d')][_0x2e63('0x1c')]);}})[_0x2e63('0x1e')](function(_0x101eb9){logger[_0x2e63('0x1b')](_0x2e63('0x16'),_0x38fe33,_0x101eb9);_0x18b122(_0x101eb9);});});}function respondWithResult(_0x451373,_0x3f9bad){_0x3f9bad=_0x3f9bad||0xc8;return function(_0x5eaefc){if(_0x5eaefc){return _0x451373[_0x2e63('0x1f')](_0x3f9bad)[_0x2e63('0x20')](_0x5eaefc);}};}function respondWithFilteredResult(_0x4d56e3,_0x42aac5){return function(_0x1640a4){if(_0x1640a4){var _0x596dc5=typeof _0x42aac5['offset']===_0x2e63('0x21')&&typeof _0x42aac5[_0x2e63('0x22')]===_0x2e63('0x21');var _0x54451c=_0x1640a4[_0x2e63('0x23')];var _0x1569a8=_0x596dc5?0x0:_0x42aac5['offset'];var _0x437974=_0x596dc5?_0x1640a4['count']:_0x42aac5[_0x2e63('0x24')]+_0x42aac5[_0x2e63('0x22')];var _0x14dc3d;if(_0x437974>=_0x54451c){_0x437974=_0x54451c;_0x14dc3d=0xc8;}else{_0x14dc3d=0xce;}_0x4d56e3['status'](_0x14dc3d);return _0x4d56e3[_0x2e63('0x25')](_0x2e63('0x26'),_0x1569a8+'-'+_0x437974+'/'+_0x54451c)[_0x2e63('0x20')](_0x1640a4);}return null;};}function saveUpdates(_0x57d939){return function(_0x2d8520){if(_0x2d8520){return _0x2d8520[_0x2e63('0x27')](_0x57d939)[_0x2e63('0x14')](function(_0x1b581f){return _0x1b581f;});}return null;};}function removeEntity(_0x3ca3db){return function(_0x57d248){if(_0x57d248){return _0x57d248[_0x2e63('0x28')]()[_0x2e63('0x14')](function(){_0x3ca3db[_0x2e63('0x1f')](0xcc)[_0x2e63('0x29')]();});}};}function handleEntityNotFound(_0x19af73){return function(_0x236cb5){if(!_0x236cb5){_0x19af73[_0x2e63('0x2a')](0x194);}return _0x236cb5;};}function handleError(_0x28c5af,_0x143f15){_0x143f15=_0x143f15||0x1f4;return function(_0x139399){logger[_0x2e63('0x1b')](_0x139399[_0x2e63('0x2b')]);if(_0x139399[_0x2e63('0x2c')]){delete _0x139399[_0x2e63('0x2c')];}_0x28c5af[_0x2e63('0x1f')](_0x143f15)[_0x2e63('0x2d')](_0x139399);};}exports[_0x2e63('0x2e')]=function(_0x495301,_0x3f8636){var _0x445cf5={},_0x3ebdb1={},_0x3e5e86={'count':0x0,'rows':[]};var _0x4bdfb7=_[_0x2e63('0x2f')](db[_0x2e63('0x30')][_0x2e63('0x31')],function(_0xe47952){return{'name':_0xe47952[_0x2e63('0x32')],'type':_0xe47952[_0x2e63('0x33')][_0x2e63('0x34')]};});_0x3ebdb1[_0x2e63('0x35')]=_[_0x2e63('0x2f')](_0x4bdfb7,_0x2e63('0x2c'));_0x3ebdb1[_0x2e63('0x36')]=_[_0x2e63('0x37')](_0x495301['query']);_0x3ebdb1[_0x2e63('0x38')]=_[_0x2e63('0x39')](_0x3ebdb1['model'],_0x3ebdb1[_0x2e63('0x36')]);_0x445cf5[_0x2e63('0x3a')]=_[_0x2e63('0x39')](_0x3ebdb1['model'],qs[_0x2e63('0x3b')](_0x495301[_0x2e63('0x36')][_0x2e63('0x3b')]));_0x445cf5[_0x2e63('0x3a')]=_0x445cf5['attributes']['length']?_0x445cf5[_0x2e63('0x3a')]:_0x3ebdb1[_0x2e63('0x35')];if(!_0x495301['query'][_0x2e63('0x3c')]('nolimit')){_0x445cf5[_0x2e63('0x22')]=qs[_0x2e63('0x22')](_0x495301[_0x2e63('0x36')][_0x2e63('0x22')]);_0x445cf5[_0x2e63('0x24')]=qs['offset'](_0x495301[_0x2e63('0x36')]['offset']);}_0x445cf5['order']=qs[_0x2e63('0x3d')](_0x495301['query'][_0x2e63('0x3d')]);_0x445cf5[_0x2e63('0x3e')]=qs[_0x2e63('0x38')](_['pick'](_0x495301['query'],_0x3ebdb1[_0x2e63('0x38')]),_0x4bdfb7);if(_0x495301['query'][_0x2e63('0x3f')]){_0x445cf5['where']=_['merge'](_0x445cf5[_0x2e63('0x3e')],{'$or':_[_0x2e63('0x2f')](_0x4bdfb7,function(_0x9d2b68){if(_0x9d2b68[_0x2e63('0x33')]!==_0x2e63('0x40')){var _0x219a3b={};_0x219a3b[_0x9d2b68[_0x2e63('0x2c')]]={'$like':'%'+_0x495301[_0x2e63('0x36')][_0x2e63('0x3f')]+'%'};return _0x219a3b;}})});}_0x445cf5=_[_0x2e63('0x41')]({},_0x445cf5,_0x495301[_0x2e63('0x42')]);var _0x543580={'where':_0x445cf5[_0x2e63('0x3e')]};return db['MailMessage'][_0x2e63('0x23')](_0x543580)[_0x2e63('0x14')](function(_0x437204){_0x3e5e86['count']=_0x437204;if(_0x495301[_0x2e63('0x36')][_0x2e63('0x43')]){_0x445cf5[_0x2e63('0x44')]=[{'all':!![]}];}return db[_0x2e63('0x30')]['findAll'](_0x445cf5);})[_0x2e63('0x14')](function(_0x20676a){_0x3e5e86['rows']=_0x20676a;return _0x3e5e86;})[_0x2e63('0x14')](respondWithFilteredResult(_0x3f8636,_0x445cf5))['catch'](handleError(_0x3f8636,null));};exports[_0x2e63('0x45')]=function(_0x2832a7,_0x20e327){var _0x346f4b={'raw':!![],'where':{'id':_0x2832a7[_0x2e63('0x46')]['id']}},_0x402781={};_0x402781[_0x2e63('0x35')]=_[_0x2e63('0x37')](db['MailMessage'][_0x2e63('0x31')]);_0x402781['query']=_[_0x2e63('0x37')](_0x2832a7[_0x2e63('0x36')]);_0x402781['filters']=_[_0x2e63('0x39')](_0x402781[_0x2e63('0x35')],_0x402781[_0x2e63('0x36')]);_0x346f4b[_0x2e63('0x3a')]=_['intersection'](_0x402781[_0x2e63('0x35')],qs['fields'](_0x2832a7[_0x2e63('0x36')][_0x2e63('0x3b')]));_0x346f4b[_0x2e63('0x3a')]=_0x346f4b['attributes'][_0x2e63('0x47')]?_0x346f4b[_0x2e63('0x3a')]:_0x402781[_0x2e63('0x35')];if(_0x2832a7[_0x2e63('0x36')][_0x2e63('0x43')]){_0x346f4b['include']=[{'all':!![]}];}_0x346f4b=_[_0x2e63('0x41')]({},_0x346f4b,_0x2832a7[_0x2e63('0x42')]);return db[_0x2e63('0x30')][_0x2e63('0x48')](_0x346f4b)[_0x2e63('0x14')](handleEntityNotFound(_0x20e327,null))['then'](respondWithResult(_0x20e327,null))['catch'](handleError(_0x20e327,null));};exports[_0x2e63('0x27')]=function(_0x41c096,_0x5b568f){if(_0x41c096[_0x2e63('0x49')]['id']){delete _0x41c096[_0x2e63('0x49')]['id'];}return db[_0x2e63('0x30')][_0x2e63('0x48')]({'where':{'id':_0x41c096['params']['id']}})[_0x2e63('0x14')](handleEntityNotFound(_0x5b568f,null))[_0x2e63('0x14')](saveUpdates(_0x41c096[_0x2e63('0x49')],null))[_0x2e63('0x14')](respondWithResult(_0x5b568f,null))[_0x2e63('0x1e')](handleError(_0x5b568f,null));};exports['destroy']=function(_0x195dae,_0xf8ade5){return db['MailMessage'][_0x2e63('0x48')]({'where':{'id':_0x195dae['params']['id']}})['then'](handleEntityNotFound(_0xf8ade5,null))[_0x2e63('0x14')](removeEntity(_0xf8ade5,null))[_0x2e63('0x1e')](handleError(_0xf8ade5,null));};exports[_0x2e63('0x4a')]=function(_0x2b2709,_0x78270){return db['MailMessage'][_0x2e63('0x4a')]()[_0x2e63('0x14')](respondWithResult(_0x78270,null))[_0x2e63('0x1e')](handleError(_0x78270,null));};exports[_0x2e63('0x4b')]=function(_0x1bf83e,_0x2edae2){return db[_0x2e63('0x30')]['create'](_0x1bf83e[_0x2e63('0x49')])[_0x2e63('0x14')](function(_0x46aafb){if(_0x46aafb){if(_0x46aafb[_0x2e63('0x4c')]===_0x2e63('0x4d')&&!_0x46aafb[_0x2e63('0x4e')]){var _0x5cd93d,_0x574f6f,_0x481f27;if(_0x1bf83e[_0x2e63('0x49')]['to']){_0x574f6f=_0x1bf83e[_0x2e63('0x49')]['to'][_0x2e63('0x4f')](',')[0x0];}return db['MailAccount'][_0x2e63('0x50')]({'where':{'id':_0x46aafb[_0x2e63('0x51')]},'include':[{'model':db[_0x2e63('0x52')],'as':'List','include':[{'model':db[_0x2e63('0x53')],'as':_0x2e63('0x54'),'where':{'email':_0x574f6f},'limit':0x1,'order':[[_0x2e63('0x55'),'DESC']]}]},{'model':db[_0x2e63('0x56')],'as':_0x2e63('0x57'),'raw':!![]}]})[_0x2e63('0x14')](function(_0xc4d7c2){_0x5cd93d=_0xc4d7c2;if(_0x5cd93d&&_0x5cd93d[_0x2e63('0x57')]){var _0x41a092={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x5cd93d['Smtp']['service'])){_0x41a092[_0x2e63('0x58')]=_0x5cd93d[_0x2e63('0x57')]['host'];_0x41a092['port']=_0x5cd93d[_0x2e63('0x57')][_0x2e63('0x59')];_0x41a092[_0x2e63('0x5a')]=_0x5cd93d[_0x2e63('0x57')][_0x2e63('0x5a')];if(_0x5cd93d[_0x2e63('0x57')][_0x2e63('0x5b')]){_0x41a092[_0x2e63('0x5c')]={'user':_0x5cd93d['Smtp']['user'],'pass':_0x5cd93d['Smtp'][_0x2e63('0x5d')]};}}else{_0x41a092[_0x2e63('0x5e')]=_0x5cd93d[_0x2e63('0x57')][_0x2e63('0x5e')];_0x41a092[_0x2e63('0x5c')]={'user':_0x5cd93d['Smtp'][_0x2e63('0x5f')],'pass':_0x5cd93d[_0x2e63('0x57')][_0x2e63('0x5d')]};_0x41a092[_0x2e63('0x5a')]=_0x5cd93d['Smtp'][_0x2e63('0x5a')];}if(_0x1bf83e[_0x2e63('0x49')]['attachments']&&_0x1bf83e[_0x2e63('0x49')][_0x2e63('0x60')][_0x2e63('0x47')]){for(var _0x34253d=0x0;_0x34253d<_0x1bf83e[_0x2e63('0x49')][_0x2e63('0x60')][_0x2e63('0x47')];_0x34253d+=0x1){_0x1bf83e[_0x2e63('0x49')][_0x2e63('0x60')][_0x34253d]={'filename':_0x1bf83e[_0x2e63('0x49')][_0x2e63('0x60')][_0x34253d][_0x2e63('0x2c')],'path':path[_0x2e63('0x61')](config[_0x2e63('0x62')],_0x2e63('0x63'),_0x1bf83e['body'][_0x2e63('0x60')][_0x34253d][_0x2e63('0x64')])};}}_0x481f27={'account':_0x41a092,'message':_0x1bf83e['body']};return;}})[_0x2e63('0x14')](function(){if(_0x5cd93d[_0x2e63('0x65')]){if(_0x5cd93d[_0x2e63('0x65')]['Contacts'][_0x2e63('0x47')]){return _0x5cd93d['List'][_0x2e63('0x54')][0x0];}else{return db[_0x2e63('0x53')][_0x2e63('0x4b')](_['defaults'](_0x1bf83e['body'],{'firstName':_0x1bf83e[_0x2e63('0x49')]['to'],'email':_0x1bf83e[_0x2e63('0x49')]['to'],'phone':_0x1bf83e['body']['to'],'ListId':_0x5cd93d[_0x2e63('0x66')]}));}}else{throw new Error(_0x2e63('0x67'));}})[_0x2e63('0x14')](function(){if(_0x481f27){return respondWithRpcPromise(_0x2e63('0x68'),_0x2e63('0x69'),_0x481f27,client9003)['then'](function(_0x3eaec3){return _0x46aafb[_0x2e63('0x27')]({'read':!![],'messageId':_0x3eaec3[_0x2e63('0x6a')],'sentAt':moment()[_0x2e63('0x6b')](_0x2e63('0x6c'))});})[_0x2e63('0x1e')](function(_0x2533e2){logger['error']('%s',JSON[_0x2e63('0x1a')](_0x2533e2));return _0x46aafb;});}return _0x46aafb;});}return _0x46aafb;}})[_0x2e63('0x14')](respondWithResult(_0x2edae2,0xc9))[_0x2e63('0x1e')](handleError(_0x2edae2,null));};exports['accept']=function(_0x1ad7a6,_0x19b540){var _0x2d2f74={'agent':{},'channel':'mail'};if(_0x1ad7a6['body']['id']){delete _0x1ad7a6['body']['id'];}_0x1ad7a6[_0x2e63('0x49')]['read']=!![];_0x1ad7a6['body']['readAt']=moment()[_0x2e63('0x6b')](_0x2e63('0x6c'));_0x1ad7a6[_0x2e63('0x49')][_0x2e63('0x6d')]=_0x1ad7a6['body'][_0x2e63('0x6d')]||_0x1ad7a6['user']['id'];_0x2d2f74[_0x2e63('0x6e')]['id']=_0x1ad7a6['body'][_0x2e63('0x6d')];return db[_0x2e63('0x30')][_0x2e63('0x48')]({'where':{'id':_0x1ad7a6[_0x2e63('0x46')]['id'],'UserId':null}})[_0x2e63('0x14')](handleEntityNotFound(_0x19b540,null))[_0x2e63('0x14')](saveUpdates(_0x1ad7a6[_0x2e63('0x49')],null))['then'](function(_0x16fba4){if(_0x16fba4){_0x2d2f74['message']=_0x16fba4[_0x2e63('0x6f')]({'plain':!![]});return db[_0x2e63('0x70')]['find']({'where':{'id':_0x16fba4[_0x2e63('0x71')]}});}return null;})[_0x2e63('0x14')](handleEntityNotFound(_0x19b540,null))[_0x2e63('0x14')](function(_0x20fa4d){if(_0x20fa4d){return _0x20fa4d[_0x2e63('0x27')]({'UserId':_0x1ad7a6[_0x2e63('0x49')][_0x2e63('0x6d')],'read1stAt':_[_0x2e63('0x72')](_0x20fa4d[_0x2e63('0x73')])?moment()[_0x2e63('0x6b')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x2e63('0x14')](function(_0x4b5ff5){if(_0x4b5ff5){_0x2d2f74[_0x2e63('0x74')]=_0x4b5ff5[_0x2e63('0x6f')]({'plain':!![]});interaction_log[_0x2e63('0x15')](_0x2e63('0x75'),_0x1ad7a6[_0x2e63('0x5f')]['id'],_0x1ad7a6[_0x2e63('0x5f')]['name'],_0x1ad7a6['user'][_0x2e63('0x76')],_0x2d2f74[_0x2e63('0x74')]['id'],_0x1ad7a6['body']?JSON[_0x2e63('0x1a')](_0x1ad7a6[_0x2e63('0x49')]):'null');return respondWithRpcPromise(_0x2e63('0x77'),'acceptMessage',_0x2d2f74);}return null;})['then'](function(_0xe585ea){var _0x2e2837='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xe585ea[_0x2e63('0x1c')][_0x2e63('0x78')];return db[_0x2e63('0x79')]['query'](_0x2e2837,{'type':db['Sequelize'][_0x2e63('0x7a')][_0x2e63('0x7b')],'raw':!![]})[_0x2e63('0x14')](function(_0x5a8ea2){return _0x5a8ea2;});})[_0x2e63('0x14')](function(_0x117658){if(_0x117658){_0x2d2f74[_0x2e63('0x1c')][_0x2e63('0x7c')]=_0x117658[0x0];if(!_0x1ad7a6[_0x2e63('0x49')][_0x2e63('0x6d')])return;return db[_0x2e63('0x7d')][_0x2e63('0x48')]({'where':{'id':_0x1ad7a6[_0x2e63('0x49')][_0x2e63('0x6d')],'role':_0x2e63('0x6e')},'attributes':['id',_0x2e63('0x2c'),_0x2e63('0x7e'),_0x2e63('0x7f'),_0x2e63('0x80')],'raw':!![]});}return null;})[_0x2e63('0x14')](function(_0x1e98c6){if(!_0x1e98c6)return null;_0x2d2f74['message'][_0x2e63('0x6e')]=_0x1e98c6;return _0x2d2f74;})[_0x2e63('0x14')](function(_0x33ed18){if(_0x33ed18){if(_0x1ad7a6[_0x2e63('0x49')][_0x2e63('0x81')]){_0x2d2f74[_0x2e63('0x1c')][_0x2e63('0x82')]=util['format'](_0x2e63('0x83'),_0x1ad7a6[_0x2e63('0x5f')][_0x2e63('0x2c')]);_0x2d2f74[_0x2e63('0x1c')][_0x2e63('0x84')]=_0x2d2f74[_0x2e63('0x84')];_0x2d2f74[_0x2e63('0x1c')]['motionChannel']=_0x2d2f74[_0x2e63('0x84')];_0x2d2f74['message'][_0x2e63('0x85')]='accept';_0x2d2f74[_0x2e63('0x1c')][_0x2e63('0x49')]=htmlToText[_0x2e63('0x86')](_0x2d2f74[_0x2e63('0x1c')][_0x2e63('0x49')]);return respondWithRpcPromise('EventManager',_0x2e63('0x87'),{'event':_0x2e63('0x88'),'message':_0x2d2f74['message']},client9002)[_0x2e63('0x14')](function(){return _0x2d2f74;});}return _0x2d2f74;}return null;})[_0x2e63('0x14')](respondWithResult(_0x19b540,null))[_0x2e63('0x1e')](handleError(_0x19b540,null));};exports[_0x2e63('0x89')]=function(_0x56b124,_0x527ca9){var _0x5ed394={'agent':{},'channel':_0x2e63('0x8a')};if(_0x56b124[_0x2e63('0x49')]['id']){delete _0x56b124[_0x2e63('0x49')]['id'];}_0x56b124['body'][_0x2e63('0x6d')]=_0x56b124['body'][_0x2e63('0x6d')]||_0x56b124[_0x2e63('0x5f')]['id'];_0x5ed394[_0x2e63('0x6e')]['id']=_0x56b124['body'][_0x2e63('0x6d')];return db['MailMessage']['find']({'where':{'id':_0x56b124['params']['id'],'UserId':null}})[_0x2e63('0x14')](handleEntityNotFound(_0x527ca9,null))[_0x2e63('0x14')](function(_0x583bc4){if(_0x583bc4){_0x5ed394[_0x2e63('0x1c')]=_0x583bc4[_0x2e63('0x6f')]({'plain':!![]});return db[_0x2e63('0x70')][_0x2e63('0x48')]({'where':{'id':_0x583bc4[_0x2e63('0x71')]}});}return null;})[_0x2e63('0x14')](handleEntityNotFound(_0x527ca9,null))[_0x2e63('0x14')](function(_0x2a36f5){if(_0x2a36f5){_0x5ed394['interaction']=_0x2a36f5[_0x2e63('0x6f')]({'plain':!![]});interaction_log[_0x2e63('0x15')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x56b124[_0x2e63('0x5f')]['id'],_0x56b124[_0x2e63('0x5f')][_0x2e63('0x2c')],_0x56b124[_0x2e63('0x5f')][_0x2e63('0x76')],_0x5ed394['interaction']['id'],_0x56b124[_0x2e63('0x49')]?JSON[_0x2e63('0x1a')](_0x56b124[_0x2e63('0x49')]):_0x2e63('0x8b'));return respondWithRpcPromise('RejectMessage',_0x2e63('0x8c'),_0x5ed394);}return null;})[_0x2e63('0x14')](function(_0x2f8133){var _0x5b0697=_0x2e63('0x8d')+_0x2f8133['message'][_0x2e63('0x78')];return db[_0x2e63('0x79')][_0x2e63('0x36')](_0x5b0697,{'type':db[_0x2e63('0x8e')][_0x2e63('0x7a')][_0x2e63('0x7b')],'raw':!![]})[_0x2e63('0x14')](function(_0x3420a6){return _0x3420a6;});})[_0x2e63('0x14')](function(_0x1aab27){if(_0x1aab27){_0x5ed394[_0x2e63('0x1c')]['contact']=_0x1aab27[0x0];if(!_0x56b124[_0x2e63('0x49')][_0x2e63('0x6d')])return;return db[_0x2e63('0x7d')][_0x2e63('0x48')]({'where':{'id':_0x56b124['body'][_0x2e63('0x6d')],'role':_0x2e63('0x6e')},'attributes':['id',_0x2e63('0x2c'),_0x2e63('0x7e'),_0x2e63('0x7f'),_0x2e63('0x80')],'raw':!![]});}return null;})[_0x2e63('0x14')](function(_0x159bd0){if(!_0x159bd0)return null;_0x5ed394[_0x2e63('0x1c')][_0x2e63('0x6e')]=_0x159bd0;return _0x5ed394;})['then'](function(_0x47f38d){if(_0x47f38d){_0x47f38d[_0x2e63('0x1c')]['interface']=util[_0x2e63('0x6b')](_0x2e63('0x83'),_0x56b124[_0x2e63('0x5f')][_0x2e63('0x2c')]);_0x47f38d[_0x2e63('0x1c')]['channel']=_0x5ed394[_0x2e63('0x84')];_0x47f38d[_0x2e63('0x1c')]['motionChannel']=_0x5ed394[_0x2e63('0x84')];_0x47f38d['message'][_0x2e63('0x85')]=_0x2e63('0x89');_0x47f38d[_0x2e63('0x1c')][_0x2e63('0x49')]=htmlToText[_0x2e63('0x86')](_0x5ed394[_0x2e63('0x1c')][_0x2e63('0x49')]);respondWithRpcPromise('EventManager','EventManager',{'event':_0x2e63('0x8f'),'message':_0x47f38d[_0x2e63('0x1c')]},client9002);return _0x5ed394;}return null;})[_0x2e63('0x14')](respondWithResult(_0x527ca9,null))[_0x2e63('0x1e')](handleError(_0x527ca9,null));};exports[_0x2e63('0x90')]=function(_0xf90185,_0x3f0704){var _0x42f7cc=moment()[_0x2e63('0x91')]()[_0x2e63('0x92')]();var _0x2e22c5=path[_0x2e63('0x61')](config[_0x2e63('0x62')],'server',_0x2e63('0x93'),_0x2e63('0x94'));var _0x159279=path[_0x2e63('0x61')](config[_0x2e63('0x62')],_0x2e63('0x95'),'files',_0x2e63('0x60'));var _0x53efc7=util[_0x2e63('0x6b')](_0x2e63('0x96'),_0x42f7cc);return db[_0x2e63('0x30')]['find']({'where':{'id':_0xf90185[_0x2e63('0x46')]['id']},'attributes':['id',_0x2e63('0x49'),_0x2e63('0x97'),'to','cc',_0x2e63('0x98'),'subject',_0x2e63('0x99')],'include':_0xf90185[_0x2e63('0x36')]['attachments']?[{'model':db['Attachment'],'as':_0x2e63('0x9a')}]:undefined})[_0x2e63('0x14')](handleEntityNotFound(_0x3f0704,null))['then'](function(_0x4025cf){if(_0x4025cf){var _0x7f16c1=_0x4025cf;var _0x36472b={'from':_0x7f16c1[_0x2e63('0x97')],'to':_0x7f16c1['to'],'subject':_0x7f16c1[_0x2e63('0x9b')],'html':htmlEntities[_0x2e63('0x9c')](_0x7f16c1[_0x2e63('0x49')]),'headers':{'Date':moment(_0x7f16c1[_0x2e63('0x99')])[_0x2e63('0x6b')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x4025cf['cc']){_0x36472b[_0x2e63('0x9d')]['Cc']=_0x4025cf['cc'];}if(_0x4025cf[_0x2e63('0x98')]){_0x36472b[_0x2e63('0x9d')][_0x2e63('0x9e')]=_0x4025cf[_0x2e63('0x98')];}return new BPromise(function(_0x157f75,_0x172609){if(_0x4025cf[_0x2e63('0x9a')]){for(var _0x4f0ffa=0x0;_0x4f0ffa<_0x4025cf[_0x2e63('0x9a')][_0x2e63('0x47')];_0x4f0ffa++){var _0x22b3ce=_0x4025cf[_0x2e63('0x9a')][_0x4f0ffa];var _0x572dd6=path[_0x2e63('0x61')](_0x159279,_0x22b3ce[_0x2e63('0x64')]);if(fs['existsSync'](_0x572dd6)){_0x36472b[_0x2e63('0x60')][_0x2e63('0x9f')]({'name':_0x22b3ce['name'],'contentType':_0x22b3ce['type'],'data':fs[_0x2e63('0xa0')](_0x572dd6)});}}}emlformat[_0x2e63('0xa1')](_0x36472b,function(_0x1512b7,_0x15e364){if(_0x1512b7)return _0x172609(_0x1512b7);fs[_0x2e63('0xa2')](path[_0x2e63('0x61')](_0x2e22c5,_0x53efc7),_0x15e364);return _0x157f75(_0x15e364);});});}})['then'](function(_0x11995c){if(_0x11995c){return _0x3f0704[_0x2e63('0x90')](path[_0x2e63('0x61')](_0x2e22c5,_0x53efc7),_0x53efc7,function(_0x43efed){if(!_0x43efed)fs['unlinkSync'](path['join'](_0x2e22c5,_0x53efc7));});}})[_0x2e63('0x1e')](handleError(_0x3f0704,null));};
\ No newline at end of file
index c26c559..c271349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dcb=['events','../../mysqldb','MailMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x4dcb,0xbb));var _0xb4dc=function(_0x14c6e5,_0x26ebb4){_0x14c6e5=_0x14c6e5-0x0;var _0x389975=_0x4dcb[_0x14c6e5];return _0x389975;};'use strict';var EventEmitter=require(_0xb4dc('0x0'));var MailMessage=require(_0xb4dc('0x1'))['db'][_0xb4dc('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xb4dc('0x3')](0x0);var events={'afterCreate':_0xb4dc('0x4'),'afterUpdate':_0xb4dc('0x5'),'afterDestroy':_0xb4dc('0x6')};function emitEvent(_0x3574e0){return function(_0x127d21,_0x25a54a,_0x24b86a){MailMessageEvents[_0xb4dc('0x7')](_0x3574e0+':'+_0x127d21['id'],_0x127d21);MailMessageEvents[_0xb4dc('0x7')](_0x3574e0,_0x127d21);_0x24b86a(null);};}for(var e in events){if(events[_0xb4dc('0x8')](e)){var event=events[e];MailMessage[_0xb4dc('0x9')](e,emitEvent(event));}}module[_0xb4dc('0xa')]=MailMessageEvents;
\ No newline at end of file
+var _0x614f=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','MailMessage'];(function(_0x14363e,_0x4f0e0d){var _0x17c56d=function(_0x1c7bac){while(--_0x1c7bac){_0x14363e['push'](_0x14363e['shift']());}};_0x17c56d(++_0x4f0e0d);}(_0x614f,0x1c0));var _0xf614=function(_0x23b99e,_0x55ede0){_0x23b99e=_0x23b99e-0x0;var _0x24ea10=_0x614f[_0x23b99e];return _0x24ea10;};'use strict';var EventEmitter=require(_0xf614('0x0'));var MailMessage=require('../../mysqldb')['db'][_0xf614('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xf614('0x2')](0x0);var events={'afterCreate':_0xf614('0x3'),'afterUpdate':_0xf614('0x4'),'afterDestroy':_0xf614('0x5')};function emitEvent(_0x303c12){return function(_0x49f5cf,_0x3f287f,_0x2ed7e1){MailMessageEvents['emit'](_0x303c12+':'+_0x49f5cf['id'],_0x49f5cf);MailMessageEvents[_0xf614('0x6')](_0x303c12,_0x49f5cf);_0x2ed7e1(null);};}for(var e in events){if(events[_0xf614('0x7')](e)){var event=events[e];MailMessage[_0xf614('0x8')](e,emitEvent(event));}}module[_0xf614('0x9')]=MailMessageEvents;
\ No newline at end of file
index 4ab75b6..9a8c219 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e26=['util','../../config/logger','api','moment','bluebird','path','../../config/environment','./mailMessage.attributes','exports','define','messageId','fti_mail_messages','subject','FULLTEXT','body','plainBody','fromString','get','toLowerCase','direction','out','secret','UserId','findOne','MailInteractionId','then','createdAt','catch','utf8mb4','lodash'];(function(_0x449e37,_0xc0a199){var _0x1fbe57=function(_0x2e9a1d){while(--_0x2e9a1d){_0x449e37['push'](_0x449e37['shift']());}};_0x1fbe57(++_0xc0a199);}(_0x7e26,0x185));var _0x67e2=function(_0x37288c,_0x39ebcd){_0x37288c=_0x37288c-0x0;var _0x2d9955=_0x7e26[_0x37288c];return _0x2d9955;};'use strict';var _=require(_0x67e2('0x0'));var util=require(_0x67e2('0x1'));var logger=require(_0x67e2('0x2'))(_0x67e2('0x3'));var moment=require(_0x67e2('0x4'));var BPromise=require(_0x67e2('0x5'));var rp=require('request-promise');var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0x67e2('0x6'));var rimraf=require('rimraf');var config=require(_0x67e2('0x7'));var attributes=require(_0x67e2('0x8'));module[_0x67e2('0x9')]=function(_0x505cd3,_0x414813){return _0x505cd3[_0x67e2('0xa')]('MailMessage',attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':'messageId','fields':[_0x67e2('0xb')]},{'name':_0x67e2('0xc'),'fields':['plainBody',_0x67e2('0xd')],'type':_0x67e2('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3a6161,_0x1fa7be,_0x4d9a6e){if(_0x3a6161[_0x67e2('0xf')]){_0x3a6161[_0x67e2('0x10')]=htmlToText[_0x67e2('0x11')](_0x3a6161[_0x67e2('0xf')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x4d9a6e(null,_0x1fa7be);},'afterCreate':function(_0x4c8708,_0x4c744b,_0x18ff66){var _0x30991b=_0x505cd3['models'];var _0x4c937f=_0x4c8708[_0x67e2('0x12')]({'plain':!![]});if(_0x4c937f['direction'][_0x67e2('0x13')]()==='in'||_0x4c937f[_0x67e2('0x14')][_0x67e2('0x13')]()===_0x67e2('0x15')&&!_0x4c937f[_0x67e2('0x16')]&&!_['isNil'](_0x4c937f[_0x67e2('0x17')])){_0x30991b['MailInteraction'][_0x67e2('0x18')]({'where':{'id':_0x4c937f[_0x67e2('0x19')]}})[_0x67e2('0x1a')](function(_0x43da46){if(_0x43da46){_0x43da46['update']({'lastMsgAt':_0x4c937f[_0x67e2('0x1b')],'lastMsgDirection':_0x4c937f[_0x67e2('0x14')][_0x67e2('0x13')]()});}})[_0x67e2('0x1c')](function(_0x285ad6){console['error'](_0x285ad6);});}_0x18ff66();}},'charset':_0x67e2('0x1d'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x7d46=['secret','UserId','MailInteraction','findOne','MailInteractionId','createdAt','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','html-to-text','path','rimraf','define','MailMessage','mail_messages','messageId','fti_mail_messages','subject','plainBody','fromString','body','models','direction','toLowerCase','out'];(function(_0xb179b5,_0x3601bf){var _0x4088a7=function(_0x41a21f){while(--_0x41a21f){_0xb179b5['push'](_0xb179b5['shift']());}};_0x4088a7(++_0x3601bf);}(_0x7d46,0xf0));var _0x67d4=function(_0x5bfa44,_0x76dacc){_0x5bfa44=_0x5bfa44-0x0;var _0x43815f=_0x7d46[_0x5bfa44];return _0x43815f;};'use strict';var _=require('lodash');var util=require(_0x67d4('0x0'));var logger=require(_0x67d4('0x1'))(_0x67d4('0x2'));var moment=require(_0x67d4('0x3'));var BPromise=require(_0x67d4('0x4'));var rp=require('request-promise');var htmlToText=require(_0x67d4('0x5'));var fs=require('fs');var path=require(_0x67d4('0x6'));var rimraf=require(_0x67d4('0x7'));var config=require('../../config/environment');var attributes=require('./mailMessage.attributes');module['exports']=function(_0x570b81,_0x55211e){return _0x570b81[_0x67d4('0x8')](_0x67d4('0x9'),attributes,{'tableName':_0x67d4('0xa'),'paranoid':![],'indexes':[{'name':_0x67d4('0xb'),'fields':[_0x67d4('0xb')]},{'name':_0x67d4('0xc'),'fields':['plainBody',_0x67d4('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x12ecaf,_0x765b9b,_0x4692ea){if(_0x12ecaf['body']){_0x12ecaf[_0x67d4('0xe')]=htmlToText[_0x67d4('0xf')](_0x12ecaf[_0x67d4('0x10')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x4692ea(null,_0x765b9b);},'afterCreate':function(_0x15cef8,_0x332e01,_0x2893a7){var _0x5b6190=_0x570b81[_0x67d4('0x11')];var _0x1224b1=_0x15cef8['get']({'plain':!![]});if(_0x1224b1[_0x67d4('0x12')][_0x67d4('0x13')]()==='in'||_0x1224b1[_0x67d4('0x12')]['toLowerCase']()===_0x67d4('0x14')&&!_0x1224b1[_0x67d4('0x15')]&&!_['isNil'](_0x1224b1[_0x67d4('0x16')])){_0x5b6190[_0x67d4('0x17')][_0x67d4('0x18')]({'where':{'id':_0x1224b1[_0x67d4('0x19')]}})['then'](function(_0x295a80){if(_0x295a80){_0x295a80['update']({'lastMsgAt':_0x1224b1[_0x67d4('0x1a')],'lastMsgDirection':_0x1224b1['direction'][_0x67d4('0x13')]()});}})['catch'](function(_0x30ec70){console['error'](_0x30ec70);});}_0x2893a7();}},'charset':_0x67d4('0x1b'),'collate':_0x67d4('0x1c')});};
\ No newline at end of file
index 6c7b895..1a0a6dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f59=['redis','localhost','socket.io-emitter','register','info','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailMessage,\x20%s,\x20%s','result','catch','create','body','options','raw','then','CreateMailMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x397d16,_0x204327){var _0x3eef4d=function(_0x40e24f){while(--_0x40e24f){_0x397d16['push'](_0x397d16['shift']());}};_0x3eef4d(++_0x204327);}(_0x8f59,0x11d));var _0x98f5=function(_0x47e93d,_0x26bbdd){_0x47e93d=_0x47e93d-0x0;var _0xe86c46=_0x8f59[_0x47e93d];return _0xe86c46;};'use strict';var _=require(_0x98f5('0x0'));var util=require(_0x98f5('0x1'));var moment=require(_0x98f5('0x2'));var BPromise=require(_0x98f5('0x3'));var rs=require(_0x98f5('0x4'));var fs=require('fs');var Redis=require(_0x98f5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x98f5('0x6'));var logger=require(_0x98f5('0x7'))(_0x98f5('0x8'));var config=require(_0x98f5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x98f5('0xa')][_0x98f5('0xb')]({'port':0x232a});config[_0x98f5('0xc')]=_['defaults'](config['redis'],{'host':_0x98f5('0xd'),'port':0x18eb});var socket=require(_0x98f5('0xe'))(new Redis(config[_0x98f5('0xc')]));require('./mailMessage.socket')[_0x98f5('0xf')](socket);function respondWithRpcPromise(_0x31b669,_0x227cf3,_0x39e85d){return new BPromise(function(_0x4c4abc,_0x26a0fc){return client['request'](_0x31b669,_0x39e85d)['then'](function(_0x3cf4b2){logger[_0x98f5('0x10')]('MailMessage,\x20%s,\x20%s',_0x227cf3,_0x98f5('0x11'));logger[_0x98f5('0x12')](_0x98f5('0x13'),_0x227cf3,_0x98f5('0x11'),JSON[_0x98f5('0x14')](_0x3cf4b2));if(_0x3cf4b2[_0x98f5('0x15')]){if(_0x3cf4b2['error'][_0x98f5('0x16')]===0x1f4){logger[_0x98f5('0x15')]('MailMessage,\x20%s,\x20%s',_0x227cf3,_0x3cf4b2[_0x98f5('0x15')][_0x98f5('0x17')]);return _0x26a0fc(_0x3cf4b2[_0x98f5('0x15')]['message']);}logger[_0x98f5('0x15')](_0x98f5('0x18'),_0x227cf3,_0x3cf4b2[_0x98f5('0x15')]['message']);return _0x4c4abc(_0x3cf4b2[_0x98f5('0x15')][_0x98f5('0x17')]);}else{logger['info'](_0x98f5('0x18'),_0x227cf3,'request\x20sent');_0x4c4abc(_0x3cf4b2[_0x98f5('0x19')][_0x98f5('0x17')]);}})[_0x98f5('0x1a')](function(_0x11b6d4){logger[_0x98f5('0x15')](_0x98f5('0x18'),_0x227cf3,_0x11b6d4);_0x26a0fc(_0x11b6d4);});});}exports['CreateMailMessage']=function(_0xf88f34){var _0x5500a2=this;return new Promise(function(_0xd1209d,_0x191f23){return db['MailMessage'][_0x98f5('0x1b')](_0xf88f34[_0x98f5('0x1c')],{'raw':_0xf88f34[_0x98f5('0x1d')]?_0xf88f34[_0x98f5('0x1d')][_0x98f5('0x1e')]===undefined?!![]:![]:!![]})[_0x98f5('0x1f')](function(_0x38b46d){logger['info'](_0x98f5('0x20'),_0xf88f34);logger['debug'](_0x98f5('0x20'),_0xf88f34,JSON['stringify'](_0x38b46d));_0xd1209d(_0x38b46d);})[_0x98f5('0x1a')](function(_0x40c69b){logger[_0x98f5('0x15')](_0x98f5('0x20'),_0x40c69b[_0x98f5('0x17')],_0xf88f34);_0x191f23(_0x5500a2[_0x98f5('0x15')](0x1f4,_0x40c69b[_0x98f5('0x17')]));});});};
\ No newline at end of file
+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(_0x25be05,_0x546aa8){var _0xd35acd=function(_0x245536){while(--_0x245536){_0x25be05['push'](_0x25be05['shift']());}};_0xd35acd(++_0x546aa8);}(_0x80ed,0x11c));var _0xd80e=function(_0x4a1338,_0x368bc5){_0x4a1338=_0x4a1338-0x0;var _0x66857b=_0x80ed[_0x4a1338];return _0x66857b;};'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
index d037f1a..91dc79b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cbc=['save','update','emit','register','mailMessage:'];(function(_0x3fe38a,_0x112e1d){var _0x4cbd58=function(_0x3c1ac8){while(--_0x3c1ac8){_0x3fe38a['push'](_0x3fe38a['shift']());}};_0x4cbd58(++_0x112e1d);}(_0x4cbc,0x127));var _0xc4cb=function(_0x5542bf,_0x3760ac){_0x5542bf=_0x5542bf-0x0;var _0x5270b8=_0x4cbc[_0x5542bf];return _0x5270b8;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0xc4cb('0x0'),'remove',_0xc4cb('0x1')];function createListener(_0x248c4f,_0x19e177){return function(_0x567d54){_0x19e177[_0xc4cb('0x2')](_0x248c4f,_0x567d54);};}function removeListener(_0x2179f7,_0x3c33b1){return function(){MailMessageEvents['removeListener'](_0x2179f7,_0x3c33b1);};}exports[_0xc4cb('0x3')]=function(_0x5cf49e){for(var _0x25abb7=0x0,_0x4217f1=events['length'];_0x25abb7<_0x4217f1;_0x25abb7++){var _0x537db1=events[_0x25abb7];var _0x102c14=createListener(_0xc4cb('0x4')+_0x537db1,_0x5cf49e);MailMessageEvents['on'](_0x537db1,_0x102c14);}};
\ No newline at end of file
+var _0xa273=['update','emit','register','length','mailMessage:','./mailMessage.events','save','remove'];(function(_0x3b0b01,_0x536ad0){var _0x2f7897=function(_0x5d2548){while(--_0x5d2548){_0x3b0b01['push'](_0x3b0b01['shift']());}};_0x2f7897(++_0x536ad0);}(_0xa273,0x1d5));var _0x3a27=function(_0x68952e,_0x355f7d){_0x68952e=_0x68952e-0x0;var _0x4a7415=_0xa273[_0x68952e];return _0x4a7415;};'use strict';var MailMessageEvents=require(_0x3a27('0x0'));var events=[_0x3a27('0x1'),_0x3a27('0x2'),_0x3a27('0x3')];function createListener(_0x25dfb2,_0x301912){return function(_0x272237){_0x301912[_0x3a27('0x4')](_0x25dfb2,_0x272237);};}function removeListener(_0x1080c0,_0xcb494d){return function(){MailMessageEvents['removeListener'](_0x1080c0,_0xcb494d);};}exports[_0x3a27('0x5')]=function(_0xf9418d){for(var _0x530abf=0x0,_0x43aa5b=events[_0x3a27('0x6')];_0x530abf<_0x43aa5b;_0x530abf++){var _0x3c1afb=events[_0x530abf];var _0x486981=createListener(_0x3a27('0x7')+_0x3c1afb,_0xf9418d);MailMessageEvents['on'](_0x3c1afb,_0x486981);}};
\ No newline at end of file
index fad097c..e8283e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc33=['post','create','addAgents','put','/:id','update','delete','destroy','removeTeams','removeAgents','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','/describe','isAuthenticated','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents'];(function(_0xe106e,_0x15a706){var _0x4f62a4=function(_0x4c6f12){while(--_0x4c6f12){_0xe106e['push'](_0xe106e['shift']());}};_0x4f62a4(++_0x15a706);}(_0xbc33,0xb2));var _0x3bc3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbc33[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3bc3('0x0'));var timeout=require(_0x3bc3('0x1'));var express=require(_0x3bc3('0x2'));var router=express[_0x3bc3('0x3')]();var fs_extra=require(_0x3bc3('0x4'));var auth=require(_0x3bc3('0x5'));var interaction=require(_0x3bc3('0x6'));var config=require(_0x3bc3('0x7'));var controller=require(_0x3bc3('0x8'));router[_0x3bc3('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3bc3('0x9')](_0x3bc3('0xa'),auth[_0x3bc3('0xb')](),controller['describe']);router[_0x3bc3('0x9')]('/:id',auth[_0x3bc3('0xb')](),controller[_0x3bc3('0xc')]);router[_0x3bc3('0x9')](_0x3bc3('0xd'),auth[_0x3bc3('0xb')](),controller[_0x3bc3('0xe')]);router[_0x3bc3('0x9')](_0x3bc3('0xf'),auth['isAuthenticated'](),controller['getTeams']);router[_0x3bc3('0x9')](_0x3bc3('0x10'),auth[_0x3bc3('0xb')](),controller[_0x3bc3('0x11')]);router[_0x3bc3('0x12')]('/',auth[_0x3bc3('0xb')](),controller[_0x3bc3('0x13')]);router[_0x3bc3('0x12')](_0x3bc3('0xf'),auth[_0x3bc3('0xb')](),controller['addTeams']);router[_0x3bc3('0x12')](_0x3bc3('0x10'),auth['isAuthenticated'](),controller[_0x3bc3('0x14')]);router[_0x3bc3('0x15')](_0x3bc3('0x16'),auth[_0x3bc3('0xb')](),controller[_0x3bc3('0x17')]);router[_0x3bc3('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x3bc3('0x19')]);router[_0x3bc3('0x18')](_0x3bc3('0xf'),auth[_0x3bc3('0xb')](),controller[_0x3bc3('0x1a')]);router['delete'](_0x3bc3('0x10'),auth['isAuthenticated'](),controller[_0x3bc3('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x3bfd=['update','delete','removeTeams','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','describe','/:id','getMembers','/:id/teams','getTeams','/:id/users','post','addAgents','put'];(function(_0x3d18af,_0x5b4fa0){var _0x2ef919=function(_0x3c26d6){while(--_0x3c26d6){_0x3d18af['push'](_0x3d18af['shift']());}};_0x2ef919(++_0x5b4fa0);}(_0x3bfd,0x81));var _0xd3bf=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3bfd[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xd3bf('0x0'));var util=require('util');var path=require(_0xd3bf('0x1'));var timeout=require(_0xd3bf('0x2'));var express=require(_0xd3bf('0x3'));var router=express[_0xd3bf('0x4')]();var fs_extra=require(_0xd3bf('0x5'));var auth=require(_0xd3bf('0x6'));var interaction=require(_0xd3bf('0x7'));var config=require(_0xd3bf('0x8'));var controller=require('./mailQueue.controller');router[_0xd3bf('0x9')]('/',auth['isAuthenticated'](),controller[_0xd3bf('0xa')]);router[_0xd3bf('0x9')]('/describe',auth[_0xd3bf('0xb')](),controller[_0xd3bf('0xc')]);router[_0xd3bf('0x9')](_0xd3bf('0xd'),auth[_0xd3bf('0xb')](),controller['show']);router[_0xd3bf('0x9')]('/:id/members',auth[_0xd3bf('0xb')](),controller[_0xd3bf('0xe')]);router[_0xd3bf('0x9')](_0xd3bf('0xf'),auth[_0xd3bf('0xb')](),controller[_0xd3bf('0x10')]);router[_0xd3bf('0x9')](_0xd3bf('0x11'),auth[_0xd3bf('0xb')](),controller['getAgents']);router[_0xd3bf('0x12')]('/',auth[_0xd3bf('0xb')](),controller['create']);router[_0xd3bf('0x12')](_0xd3bf('0xf'),auth[_0xd3bf('0xb')](),controller['addTeams']);router[_0xd3bf('0x12')]('/:id/users',auth[_0xd3bf('0xb')](),controller[_0xd3bf('0x13')]);router[_0xd3bf('0x14')](_0xd3bf('0xd'),auth[_0xd3bf('0xb')](),controller[_0xd3bf('0x15')]);router[_0xd3bf('0x16')](_0xd3bf('0xd'),auth[_0xd3bf('0xb')](),controller['destroy']);router['delete'](_0xd3bf('0xf'),auth['isAuthenticated'](),controller[_0xd3bf('0x17')]);router['delete'](_0xd3bf('0x11'),auth[_0xd3bf('0xb')](),controller['removeAgents']);module[_0xd3bf('0x18')]=router;
\ No newline at end of file
index d0961f2..5e9e2bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29c3=['sequelize','exports','name','STRING','INTEGER','ENUM','rrmemory','roundrobin'];(function(_0xe4cddc,_0x11d252){var _0x466358=function(_0x27ca7c){while(--_0x27ca7c){_0xe4cddc['push'](_0xe4cddc['shift']());}};_0x466358(++_0x11d252);}(_0x29c3,0x1f0));var _0x329c=function(_0x5d47ca,_0x5838f3){_0x5d47ca=_0x5d47ca-0x0;var _0x206021=_0x29c3[_0x5d47ca];return _0x206021;};'use strict';var Sequelize=require(_0x329c('0x0'));module[_0x329c('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x329c('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x329c('0x3')]},'timeout':{'type':Sequelize[_0x329c('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x329c('0x5')](_0x329c('0x6'),'beepall',_0x329c('0x7'))}};
\ No newline at end of file
+var _0x7b13=['roundrobin','STRING','name','INTEGER','beepall'];(function(_0x5466ab,_0x227b13){var _0x40751a=function(_0x477f9e){while(--_0x477f9e){_0x5466ab['push'](_0x5466ab['shift']());}};_0x40751a(++_0x227b13);}(_0x7b13,0x119));var _0x37b1=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x7b13[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x37b1('0x0')],'unique':_0x37b1('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x37b1('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x37b1('0x3'),_0x37b1('0x4'))}};
\ No newline at end of file
index 1c950e6..9289b78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7235=['redis','defaults','socket.io-emitter','./mailQueue.socket','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','get','UserProfileResource','then','error','stack','name','send','map','MailQueue','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserMailQueue','User','UserId','agent','mailPause','createdAt','format','SIP','updatedAt','getTeams','Team','order','addTeams','ids','Agents','online','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','removeTeams','select','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','includes','union','compact','value','isEmpty','removeAgents','emit','userMailQueue:remove','addAgents','spread','userMailQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x47abf4,_0x3c50c0){var _0x42bb06=function(_0xfb9cce){while(--_0xfb9cce){_0x47abf4['push'](_0x47abf4['shift']());}};_0x42bb06(++_0x3c50c0);}(_0x7235,0x77));var _0x5723=function(_0x34491b,_0x1ec3a8){_0x34491b=_0x34491b-0x0;var _0x417e10=_0x7235[_0x34491b];return _0x417e10;};'use strict';var emlformat=require(_0x5723('0x0'));var rimraf=require(_0x5723('0x1'));var zipdir=require(_0x5723('0x2'));var jsonpatch=require(_0x5723('0x3'));var rp=require('request-promise');var moment=require(_0x5723('0x4'));var BPromise=require(_0x5723('0x5'));var Mustache=require(_0x5723('0x6'));var util=require(_0x5723('0x7'));var path=require(_0x5723('0x8'));var sox=require(_0x5723('0x9'));var csv=require(_0x5723('0xa'));var ejs=require(_0x5723('0xb'));var fs=require('fs');var fs_extra=require(_0x5723('0xc'));var _=require(_0x5723('0xd'));var squel=require(_0x5723('0xe'));var crypto=require(_0x5723('0xf'));var jsforce=require(_0x5723('0x10'));var deskjs=require(_0x5723('0x11'));var toCsv=require(_0x5723('0xa'));var querystring=require(_0x5723('0x12'));var Papa=require(_0x5723('0x13'));var Redis=require('ioredis');var authService=require(_0x5723('0x14'));var qs=require(_0x5723('0x15'));var as=require(_0x5723('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5723('0x17'))(_0x5723('0x18'));var utils=require(_0x5723('0x19'));var config=require(_0x5723('0x1a'));var licenseUtil=require(_0x5723('0x1b'));var db=require(_0x5723('0x1c'))['db'];config[_0x5723('0x1d')]=_[_0x5723('0x1e')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5723('0x1f'))(new Redis(config[_0x5723('0x1d')]));require(_0x5723('0x20'))['register'](socket);function respondWithStatusCode(_0x441186,_0x4f96b9){_0x4f96b9=_0x4f96b9||0xcc;return function(_0x144cc9){if(_0x144cc9){return _0x441186[_0x5723('0x21')](_0x4f96b9);}return _0x441186['status'](_0x4f96b9)['end']();};}function respondWithResult(_0x360318,_0x447add){_0x447add=_0x447add||0xc8;return function(_0x49db63){if(_0x49db63){return _0x360318[_0x5723('0x22')](_0x447add)['json'](_0x49db63);}};}function respondWithFilteredResult(_0x5a6cfd,_0x2793c2){return function(_0x454ce1){if(_0x454ce1){var _0x3c8025=typeof _0x2793c2[_0x5723('0x23')]===_0x5723('0x24')&&typeof _0x2793c2[_0x5723('0x25')]==='undefined';var _0x37b78e=_0x454ce1[_0x5723('0x26')];var _0x496490=_0x3c8025?0x0:_0x2793c2['offset'];var _0x224a78=_0x3c8025?_0x454ce1[_0x5723('0x26')]:_0x2793c2['offset']+_0x2793c2[_0x5723('0x25')];var _0x4f2174;if(_0x224a78>=_0x37b78e){_0x224a78=_0x37b78e;_0x4f2174=0xc8;}else{_0x4f2174=0xce;}_0x5a6cfd[_0x5723('0x22')](_0x4f2174);return _0x5a6cfd[_0x5723('0x27')](_0x5723('0x28'),_0x496490+'-'+_0x224a78+'/'+_0x37b78e)[_0x5723('0x29')](_0x454ce1);}return null;};}function patchUpdates(_0x1c83af){return function(_0x4ed47f){try{jsonpatch[_0x5723('0x2a')](_0x4ed47f,_0x1c83af,!![]);}catch(_0x3fd758){return BPromise[_0x5723('0x2b')](_0x3fd758);}return _0x4ed47f[_0x5723('0x2c')]();};}function saveUpdates(_0x149530,_0x40ae14){return function(_0x4a5505){if(_0x4a5505){return _0x4a5505[_0x5723('0x2d')](_0x149530)['then'](function(_0x5351f9){return _0x5351f9;});}return null;};}function removeEntity(_0x2fcacd,_0x32d490){return function(_0x2d25e9){if(_0x2d25e9){return _0x2d25e9[_0x5723('0x2e')]()['then'](function(){var _0x580653=_0x2d25e9[_0x5723('0x2f')]({'plain':!![]});var _0x15e048='MailQueues';return db[_0x5723('0x30')][_0x5723('0x2e')]({'where':{'type':_0x15e048,'resourceId':_0x580653['id']}})[_0x5723('0x31')](function(){return _0x2d25e9;});})[_0x5723('0x31')](function(){_0x2fcacd[_0x5723('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3bfb6d,_0xa4945a){return function(_0x332000){if(!_0x332000){_0x3bfb6d[_0x5723('0x21')](0x194);}return _0x332000;};}function handleError(_0x125a46,_0x25479d){_0x25479d=_0x25479d||0x1f4;return function(_0x345c02){logger[_0x5723('0x32')](_0x345c02[_0x5723('0x33')]);if(_0x345c02[_0x5723('0x34')]){delete _0x345c02[_0x5723('0x34')];}_0x125a46[_0x5723('0x22')](_0x25479d)[_0x5723('0x35')](_0x345c02);};}exports['index']=function(_0x76b37b,_0x5249b4){var _0x520107={},_0x242f03={},_0xac66d1={'count':0x0,'rows':[]};var _0x47af31=_[_0x5723('0x36')](db[_0x5723('0x37')][_0x5723('0x38')],function(_0x2e1961){return{'name':_0x2e1961[_0x5723('0x39')],'type':_0x2e1961['type'][_0x5723('0x3a')]};});_0x242f03[_0x5723('0x3b')]=_[_0x5723('0x36')](_0x47af31,'name');_0x242f03[_0x5723('0x3c')]=_[_0x5723('0x3d')](_0x76b37b['query']);_0x242f03[_0x5723('0x3e')]=_[_0x5723('0x3f')](_0x242f03[_0x5723('0x3b')],_0x242f03[_0x5723('0x3c')]);_0x520107[_0x5723('0x40')]=_[_0x5723('0x3f')](_0x242f03[_0x5723('0x3b')],qs[_0x5723('0x41')](_0x76b37b['query'][_0x5723('0x41')]));_0x520107['attributes']=_0x520107[_0x5723('0x40')][_0x5723('0x42')]?_0x520107[_0x5723('0x40')]:_0x242f03[_0x5723('0x3b')];if(!_0x76b37b[_0x5723('0x3c')][_0x5723('0x43')](_0x5723('0x44'))){_0x520107[_0x5723('0x25')]=qs[_0x5723('0x25')](_0x76b37b['query']['limit']);_0x520107['offset']=qs['offset'](_0x76b37b[_0x5723('0x3c')][_0x5723('0x23')]);}_0x520107['order']=qs[_0x5723('0x45')](_0x76b37b[_0x5723('0x3c')][_0x5723('0x45')]);_0x520107['where']=qs['filters'](_[_0x5723('0x46')](_0x76b37b[_0x5723('0x3c')],_0x242f03[_0x5723('0x3e')]),_0x47af31);if(_0x76b37b[_0x5723('0x3c')][_0x5723('0x47')]){_0x520107[_0x5723('0x48')]=_[_0x5723('0x49')](_0x520107[_0x5723('0x48')],{'$or':_[_0x5723('0x36')](_0x47af31,function(_0x3e8b3e){if(_0x3e8b3e[_0x5723('0x4a')]!==_0x5723('0x4b')){var _0x2315ee={};_0x2315ee[_0x3e8b3e[_0x5723('0x34')]]={'$like':'%'+_0x76b37b[_0x5723('0x3c')][_0x5723('0x47')]+'%'};return _0x2315ee;}})});}_0x520107=_[_0x5723('0x49')]({},_0x520107,_0x76b37b[_0x5723('0x4c')]);var _0x40a66d={'where':_0x520107['where']};return db[_0x5723('0x37')]['count'](_0x40a66d)[_0x5723('0x31')](function(_0x13b74e){_0xac66d1['count']=_0x13b74e;if(_0x76b37b[_0x5723('0x3c')][_0x5723('0x4d')]){_0x520107[_0x5723('0x4e')]=[{'all':!![]}];}return db[_0x5723('0x37')][_0x5723('0x4f')](_0x520107);})[_0x5723('0x31')](function(_0x8c6bc6){_0xac66d1[_0x5723('0x50')]=_0x8c6bc6;return _0xac66d1;})[_0x5723('0x31')](respondWithFilteredResult(_0x5249b4,_0x520107))[_0x5723('0x51')](handleError(_0x5249b4,null));};exports[_0x5723('0x52')]=function(_0x1cf99e,_0x5a986c){var _0x389c50={'raw':!![],'where':{'id':_0x1cf99e[_0x5723('0x53')]['id']}},_0x2cb9ec={};_0x2cb9ec[_0x5723('0x3b')]=_[_0x5723('0x3d')](db[_0x5723('0x37')][_0x5723('0x38')]);_0x2cb9ec[_0x5723('0x3c')]=_[_0x5723('0x3d')](_0x1cf99e['query']);_0x2cb9ec['filters']=_[_0x5723('0x3f')](_0x2cb9ec['model'],_0x2cb9ec[_0x5723('0x3c')]);_0x389c50[_0x5723('0x40')]=_[_0x5723('0x3f')](_0x2cb9ec['model'],qs[_0x5723('0x41')](_0x1cf99e['query'][_0x5723('0x41')]));_0x389c50[_0x5723('0x40')]=_0x389c50[_0x5723('0x40')]['length']?_0x389c50[_0x5723('0x40')]:_0x2cb9ec[_0x5723('0x3b')];if(_0x1cf99e[_0x5723('0x3c')]['includeAll']){_0x389c50[_0x5723('0x4e')]=[{'all':!![]}];}_0x389c50=_[_0x5723('0x49')]({},_0x389c50,_0x1cf99e[_0x5723('0x4c')]);return db[_0x5723('0x37')][_0x5723('0x54')](_0x389c50)[_0x5723('0x31')](handleEntityNotFound(_0x5a986c,null))[_0x5723('0x31')](respondWithResult(_0x5a986c,null))[_0x5723('0x51')](handleError(_0x5a986c,null));};exports[_0x5723('0x55')]=function(_0x1602ce,_0x1b5313){return db['MailQueue'][_0x5723('0x55')](_0x1602ce[_0x5723('0x56')],{})['then'](function(_0x2bb490){var _0x19ccca=_0x1602ce[_0x5723('0x57')][_0x5723('0x2f')]({'plain':!![]});if(!_0x19ccca)throw new Error(_0x5723('0x58'));if(_0x19ccca[_0x5723('0x59')]===_0x5723('0x57')){var _0x286d46=_0x2bb490[_0x5723('0x2f')]({'plain':!![]});var _0x472fc1=_0x5723('0x5a');return db[_0x5723('0x5b')]['find']({'where':{'name':_0x472fc1,'userProfileId':_0x19ccca[_0x5723('0x5c')]},'raw':!![]})[_0x5723('0x31')](function(_0x373275){if(_0x373275&&_0x373275[_0x5723('0x5d')]===0x0){return db[_0x5723('0x30')][_0x5723('0x55')]({'name':_0x286d46[_0x5723('0x34')],'resourceId':_0x286d46['id'],'type':_0x373275[_0x5723('0x34')],'sectionId':_0x373275['id']},{})[_0x5723('0x31')](function(){return _0x2bb490;});}else{return _0x2bb490;}})[_0x5723('0x51')](function(_0x10e1d4){logger[_0x5723('0x32')](_0x5723('0x5e'),_0x10e1d4);throw _0x10e1d4;});}return _0x2bb490;})['then'](respondWithResult(_0x1b5313,0xc9))[_0x5723('0x51')](handleError(_0x1b5313,null));};exports[_0x5723('0x2d')]=function(_0x3a94dc,_0x3b8fb5){if(_0x3a94dc[_0x5723('0x56')]['id']){delete _0x3a94dc[_0x5723('0x56')]['id'];}return db[_0x5723('0x37')][_0x5723('0x54')]({'where':{'id':_0x3a94dc['params']['id']}})[_0x5723('0x31')](handleEntityNotFound(_0x3b8fb5,null))[_0x5723('0x31')](saveUpdates(_0x3a94dc[_0x5723('0x56')],null))[_0x5723('0x31')](respondWithResult(_0x3b8fb5,null))[_0x5723('0x51')](handleError(_0x3b8fb5,null));};exports[_0x5723('0x2e')]=function(_0x1e1ff5,_0x36e83e){return db[_0x5723('0x37')][_0x5723('0x54')]({'where':{'id':_0x1e1ff5[_0x5723('0x53')]['id']}})['then'](handleEntityNotFound(_0x36e83e,null))[_0x5723('0x31')](removeEntity(_0x36e83e,null))['catch'](handleError(_0x36e83e,null));};exports['describe']=function(_0x4e3758,_0x5797a0){return db[_0x5723('0x37')][_0x5723('0x5f')]()[_0x5723('0x31')](respondWithResult(_0x5797a0,null))['catch'](handleError(_0x5797a0,null));};exports[_0x5723('0x60')]=function(_0x5c1e9a,_0x367d11,_0x257a2f){var _0x2ffbbc={'raw':!![],'where':{}},_0x5cb6c3={},_0x34e71f;return db[_0x5723('0x37')][_0x5723('0x61')]({'where':{'id':_0x5c1e9a[_0x5723('0x53')]['id']}})[_0x5723('0x31')](handleEntityNotFound(_0x367d11,null))[_0x5723('0x31')](function(_0x2dac33){if(_0x2dac33){_0x34e71f=_0x2dac33[_0x5723('0x2f')]({'plain':!![]});_0x5cb6c3[_0x5723('0x3b')]=_[_0x5723('0x3d')](db['UserMailQueue'][_0x5723('0x38')]);_0x5cb6c3['query']=_[_0x5723('0x3d')](_0x5c1e9a[_0x5723('0x3c')]);_0x5cb6c3['filters']=_[_0x5723('0x3f')](_0x5cb6c3[_0x5723('0x3b')],_0x5cb6c3['query']);_0x2ffbbc['attributes']=_[_0x5723('0x3f')](_0x5cb6c3['model'],qs[_0x5723('0x41')](_0x5c1e9a[_0x5723('0x3c')][_0x5723('0x41')]));_0x2ffbbc[_0x5723('0x40')]=_0x2ffbbc[_0x5723('0x40')][_0x5723('0x42')]?_0x2ffbbc[_0x5723('0x40')]:_0x5cb6c3[_0x5723('0x3b')];if(!_0x5c1e9a['query']['hasOwnProperty'](_0x5723('0x44'))){_0x2ffbbc[_0x5723('0x25')]=qs['limit'](_0x5c1e9a['query'][_0x5723('0x25')]);_0x2ffbbc[_0x5723('0x23')]=qs[_0x5723('0x23')](_0x5c1e9a[_0x5723('0x3c')]['offset']);}_0x2ffbbc['order']=qs[_0x5723('0x45')](_0x5c1e9a[_0x5723('0x3c')][_0x5723('0x45')]);_0x2ffbbc['where']=qs['filters'](_[_0x5723('0x46')](_0x5c1e9a['query'],_0x5cb6c3[_0x5723('0x3e')]));_0x2ffbbc[_0x5723('0x48')]['MailQueueId']=_0x2dac33['id'];if(_0x5c1e9a['query'][_0x5723('0x47')]){_0x2ffbbc['where']=_['merge'](_0x2ffbbc[_0x5723('0x48')],{'$or':_[_0x5723('0x36')](_0x2ffbbc[_0x5723('0x40')],function(_0x2336e3){var _0x47e1cd={};_0x47e1cd[_0x2336e3]={'$like':'%'+_0x5c1e9a['query'][_0x5723('0x47')]+'%'};return _0x47e1cd;})});}_0x2ffbbc=_[_0x5723('0x49')]({},_0x2ffbbc,_0x5c1e9a['options']);return db[_0x5723('0x62')]['findAll'](_0x2ffbbc);}})[_0x5723('0x31')](function(_0x24f158){if(_0x24f158){return db[_0x5723('0x63')]['findAndCountAll']({'where':{'id':_[_0x5723('0x36')](_0x24f158,_0x5723('0x64')),'role':_0x5723('0x65')},'attributes':['id',_0x5723('0x34'),_0x5723('0x66'),'updatedAt',_0x5723('0x67')]});}})['then'](function(_0x5b2e94){if(_0x5b2e94){return{'count':_0x5b2e94[_0x5723('0x26')],'rows':_[_0x5723('0x36')](_0x5b2e94[_0x5723('0x50')],function(_0x3290e1){return{'membername':_0x3290e1[_0x5723('0x34')],'UserId':_0x3290e1['id'],'queue_name':_0x34e71f['name'],'MailQueueId':_0x34e71f['id'],'interface':util[_0x5723('0x68')]('%s/%s',_0x5723('0x69'),_0x3290e1['name']),'penalty':0x0,'paused':_0x3290e1[_0x5723('0x66')],'createdAt':_0x3290e1['createdAt'],'updatedAt':_0x3290e1[_0x5723('0x6a')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x5723('0x31')](respondWithFilteredResult(_0x367d11,_0x2ffbbc))[_0x5723('0x51')](handleError(_0x367d11,null));};exports[_0x5723('0x6b')]=function(_0x12814b,_0x52dd39,_0x2adc61){var _0x48f290={};var _0x2884cf={};var _0x45929d;var _0xe8b486;return db['MailQueue'][_0x5723('0x61')]({'where':{'id':_0x12814b['params']['id']}})['then'](handleEntityNotFound(_0x52dd39,null))[_0x5723('0x31')](function(_0x1e5ec5){if(_0x1e5ec5){_0x45929d=_0x1e5ec5;_0x2884cf['model']=_[_0x5723('0x3d')](db[_0x5723('0x6c')][_0x5723('0x38')]);_0x2884cf[_0x5723('0x3c')]=_[_0x5723('0x3d')](_0x12814b['query']);_0x2884cf[_0x5723('0x3e')]=_['intersection'](_0x2884cf[_0x5723('0x3b')],_0x2884cf['query']);_0x48f290[_0x5723('0x40')]=_[_0x5723('0x3f')](_0x2884cf[_0x5723('0x3b')],qs[_0x5723('0x41')](_0x12814b['query']['fields']));_0x48f290[_0x5723('0x40')]=_0x48f290[_0x5723('0x40')][_0x5723('0x42')]?_0x48f290[_0x5723('0x40')]:_0x2884cf['model'];_0x48f290[_0x5723('0x6d')]=qs[_0x5723('0x45')](_0x12814b[_0x5723('0x3c')]['sort']);_0x48f290[_0x5723('0x48')]=qs[_0x5723('0x3e')](_[_0x5723('0x46')](_0x12814b[_0x5723('0x3c')],_0x2884cf['filters']));if(_0x12814b[_0x5723('0x3c')]['filter']){_0x48f290[_0x5723('0x48')]=_[_0x5723('0x49')](_0x48f290[_0x5723('0x48')],{'$or':_[_0x5723('0x36')](_0x48f290[_0x5723('0x40')],function(_0x1b050a){var _0x31e775={};_0x31e775[_0x1b050a]={'$like':'%'+_0x12814b[_0x5723('0x3c')][_0x5723('0x47')]+'%'};return _0x31e775;})});}_0x48f290=_[_0x5723('0x49')]({},_0x48f290,_0x12814b[_0x5723('0x4c')]);return _0x45929d['getTeams'](_0x48f290);}})[_0x5723('0x31')](function(_0x44594e){if(_0x44594e){_0xe8b486=_0x44594e[_0x5723('0x42')];if(!_0x12814b[_0x5723('0x3c')][_0x5723('0x43')](_0x5723('0x44'))){_0x48f290['limit']=qs[_0x5723('0x25')](_0x12814b[_0x5723('0x3c')][_0x5723('0x25')]);_0x48f290[_0x5723('0x23')]=qs[_0x5723('0x23')](_0x12814b[_0x5723('0x3c')]['offset']);}return _0x45929d[_0x5723('0x6b')](_0x48f290);}})[_0x5723('0x31')](function(_0x4c8df5){if(_0x4c8df5){return _0x4c8df5?{'count':_0xe8b486,'rows':_0x4c8df5}:null;}})[_0x5723('0x31')](respondWithResult(_0x52dd39,null))[_0x5723('0x51')](handleError(_0x52dd39,null));};exports[_0x5723('0x6e')]=function(_0x66f53b,_0x14b730,_0x12e89f){var _0x34683f=_0x66f53b[_0x5723('0x56')][_0x5723('0x6f')];return db[_0x5723('0x6c')][_0x5723('0x4f')]({'where':{'id':_0x34683f},'attributes':['id'],'include':[{'model':db[_0x5723('0x63')],'as':_0x5723('0x70'),'attributes':['id',_0x5723('0x34'),_0x5723('0x71'),'voicePause',_0x5723('0x72')],'raw':!![]}]})[_0x5723('0x31')](function(_0x2003e2){if(_0x2003e2){var _0x105a65=_[_0x5723('0x73')](_0x2003e2,function(_0x324047){var _0x1e26ce=_0x324047['get']({'plain':!![]});return _0x1e26ce['Agents'];});return db['MailQueue'][_0x5723('0x54')]({'where':{'id':_0x66f53b[_0x5723('0x53')]['id']}})[_0x5723('0x31')](function(_0x62aa97){return db[_0x5723('0x74')][_0x5723('0x75')](function(_0x6b9131){return _0x62aa97[_0x5723('0x6e')](_0x34683f,{'transaction':_0x6b9131})['then'](function(){return BPromise[_0x5723('0x76')](_0x105a65,function(_0x5fe4b0){return db['UserMailQueue'][_0x5723('0x77')]({'where':{'UserId':_0x5fe4b0['id'],'MailQueueId':_0x66f53b[_0x5723('0x53')]['id']},'transaction':_0x6b9131});});})[_0x5723('0x31')](function(){_0x105a65[_0x5723('0x78')](function(_0x2845fe){socket['emit']('userMailQueue:save',{'UserId':_0x2845fe['id'],'MailQueueId':_0x62aa97['id']});});});});});}})[_0x5723('0x31')](respondWithStatusCode(_0x14b730,null))['catch'](handleError(_0x14b730,null));};exports[_0x5723('0x79')]=function(_0x526ac0,_0x2b1f17,_0x541a07){return db[_0x5723('0x6c')]['findAll']({'where':{'id':_0x526ac0[_0x5723('0x3c')]['ids']},'attributes':['id'],'include':[{'model':db[_0x5723('0x63')],'as':_0x5723('0x70'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x2b1f17,null))[_0x5723('0x31')](function(_0x543a13){var _0x3a6e0d=_[_0x5723('0x36')](_0x543a13,'id');var _0x8b20b0=[];var _0x2f3209=[];var _0x417f14=squel[_0x5723('0x7a')]();_0x417f14[_0x5723('0x7b')](_0x5723('0x7c'))['from']('team_has_mail_queues','tq')[_0x5723('0x7d')](_0x5723('0x7e'),'ut',_0x5723('0x7f'))[_0x5723('0x48')](_0x5723('0x80'),_0x526ac0[_0x5723('0x53')]['id']);for(var _0x3a7b97=0x0;_0x3a7b97<_0x543a13[_0x5723('0x42')];_0x3a7b97+=0x1){let _0x3ecce1=_0x543a13[_0x3a7b97];for(var _0x251c75=0x0;_0x251c75<_0x3ecce1['Agents']['length'];_0x251c75+=0x1){let _0x537a25=_0x3ecce1[_0x5723('0x70')][_0x251c75];var _0x2e2385=_0x417f14['clone']();_0x2e2385['where'](_0x5723('0x81'),_0x537a25['id']);_0x2f3209[_0x5723('0x82')](db[_0x5723('0x74')][_0x5723('0x3c')](_0x2e2385[_0x5723('0x83')](),{'type':db['sequelize'][_0x5723('0x84')][_0x5723('0x85')]})[_0x5723('0x31')](function(_0x558f5b){if(_0x558f5b['length']===0x1){return _0x537a25['id'];}else{var _0x310009=_[_0x5723('0x86')](_['map'](_0x558f5b,'TeamId'),function(_0x38ba94){return _[_0x5723('0x87')](_0x3a6e0d,_0x38ba94);});if(_0x310009){return _0x537a25['id'];}}}));}}return BPromise['all'](_0x2f3209)['then'](function(_0x3939ee){_0x8b20b0=_(_0x8b20b0)[_0x5723('0x88')](_0x3939ee)[_0x5723('0x89')]()[_0x5723('0x8a')]();return db[_0x5723('0x37')]['find']({'where':{'id':_0x526ac0[_0x5723('0x53')]['id']}})[_0x5723('0x31')](function(_0x22eaf0){return db[_0x5723('0x74')][_0x5723('0x75')](function(_0x58f921){return _0x22eaf0[_0x5723('0x79')](_0x526ac0[_0x5723('0x3c')][_0x5723('0x6f')],{'transaction':_0x58f921})[_0x5723('0x31')](function(){if(!_[_0x5723('0x8b')](_0x8b20b0)){return _0x22eaf0[_0x5723('0x8c')](_0x8b20b0,{'transaction':_0x58f921});}})['then'](function(){_0x8b20b0['forEach'](function(_0x3d5fc7){socket[_0x5723('0x8d')](_0x5723('0x8e'),{'UserId':_0x3d5fc7,'MailQueueId':_0x22eaf0['id']});});});});});});})['then'](respondWithStatusCode(_0x2b1f17,null))['catch'](handleError(_0x2b1f17,null));};exports[_0x5723('0x8f')]=function(_0x6ceab3,_0x46535c,_0x2d1ee1){return db[_0x5723('0x37')][_0x5723('0x54')]({'where':{'id':_0x6ceab3[_0x5723('0x53')]['id']}})['then'](handleEntityNotFound(_0x46535c,null))['then'](function(_0x4be9be){if(_0x4be9be){return _0x4be9be[_0x5723('0x8f')](_0x6ceab3[_0x5723('0x56')][_0x5723('0x6f')],_['omit'](_0x6ceab3[_0x5723('0x56')],[_0x5723('0x6f'),'id'])||{})[_0x5723('0x90')](function(_0x2e49e7){for(var _0x5efe31=0x0;_0x5efe31<_0x6ceab3[_0x5723('0x56')]['ids']['length'];_0x5efe31+=0x1){socket[_0x5723('0x8d')](_0x5723('0x91'),{'UserId':Number(_0x6ceab3[_0x5723('0x56')][_0x5723('0x6f')][_0x5efe31]),'MailQueueId':Number(_0x6ceab3['params']['id'])});}return _0x2e49e7;});}})[_0x5723('0x31')](respondWithResult(_0x46535c,null))[_0x5723('0x51')](handleError(_0x46535c,null));};exports['removeAgents']=function(_0x31b237,_0x29a8a0,_0x43e374){return db[_0x5723('0x37')][_0x5723('0x54')]({'where':{'id':_0x31b237[_0x5723('0x53')]['id']}})[_0x5723('0x31')](handleEntityNotFound(_0x29a8a0,null))[_0x5723('0x31')](function(_0x56894f){if(_0x56894f){return _0x56894f['removeAgents'](_0x31b237[_0x5723('0x3c')][_0x5723('0x6f')])[_0x5723('0x31')](function(){if(_[_0x5723('0x92')](_0x31b237[_0x5723('0x3c')][_0x5723('0x6f')])){for(var _0x458bf0=0x0;_0x458bf0<_0x31b237['query'][_0x5723('0x6f')]['length'];_0x458bf0+=0x1){socket[_0x5723('0x8d')]('userMailQueue:remove',{'UserId':Number(_0x31b237['query'][_0x5723('0x6f')][_0x458bf0]),'MailQueueId':Number(_0x31b237['params']['id'])});}}else{socket[_0x5723('0x8d')]('userMailQueue:remove',{'UserId':Number(_0x31b237[_0x5723('0x3c')]['ids']),'MailQueueId':Number(_0x31b237[_0x5723('0x53')]['id'])});}});}})['then'](respondWithStatusCode(_0x29a8a0,null))[_0x5723('0x51')](handleError(_0x29a8a0,null));};exports[_0x5723('0x93')]=function(_0x567034,_0x1c776f,_0x1ecf36){var _0x26370a={};var _0x5e8935={};var _0x14168e;var _0x389273;return db[_0x5723('0x37')][_0x5723('0x61')]({'where':{'id':_0x567034[_0x5723('0x53')]['id']}})[_0x5723('0x31')](handleEntityNotFound(_0x1c776f,null))[_0x5723('0x31')](function(_0x344bc7){if(_0x344bc7){_0x14168e=_0x344bc7;_0x5e8935['model']=_[_0x5723('0x3d')](db[_0x5723('0x63')][_0x5723('0x38')]);_0x5e8935[_0x5723('0x3c')]=_['keys'](_0x567034[_0x5723('0x3c')]);_0x5e8935[_0x5723('0x3e')]=_[_0x5723('0x3f')](_0x5e8935[_0x5723('0x3b')],_0x5e8935['query']);_0x26370a['attributes']=_['intersection'](_0x5e8935[_0x5723('0x3b')],qs[_0x5723('0x41')](_0x567034[_0x5723('0x3c')][_0x5723('0x41')]));_0x26370a[_0x5723('0x40')]=_0x26370a[_0x5723('0x40')][_0x5723('0x42')]?_0x26370a[_0x5723('0x40')]:_0x5e8935[_0x5723('0x3b')];_0x26370a[_0x5723('0x6d')]=qs[_0x5723('0x45')](_0x567034['query'][_0x5723('0x45')]);_0x26370a[_0x5723('0x48')]=qs[_0x5723('0x3e')](_['pick'](_0x567034[_0x5723('0x3c')],_0x5e8935[_0x5723('0x3e')]));if(_0x567034[_0x5723('0x3c')][_0x5723('0x47')]){_0x26370a[_0x5723('0x48')]=_[_0x5723('0x49')](_0x26370a[_0x5723('0x48')],{'$or':_['map'](_0x26370a[_0x5723('0x40')],function(_0x8b0f64){var _0xfd405c={};_0xfd405c[_0x8b0f64]={'$like':'%'+_0x567034[_0x5723('0x3c')][_0x5723('0x47')]+'%'};return _0xfd405c;})});}_0x26370a=_[_0x5723('0x49')]({},_0x26370a,_0x567034[_0x5723('0x4c')]);return _0x14168e[_0x5723('0x93')](_0x26370a);}})['then'](function(_0x549307){if(_0x549307){_0x389273=_0x549307[_0x5723('0x42')];if(!_0x567034[_0x5723('0x3c')]['hasOwnProperty'](_0x5723('0x44'))){_0x26370a[_0x5723('0x25')]=qs['limit'](_0x567034['query'][_0x5723('0x25')]);_0x26370a[_0x5723('0x23')]=qs[_0x5723('0x23')](_0x567034[_0x5723('0x3c')][_0x5723('0x23')]);}return _0x14168e[_0x5723('0x93')](_0x26370a);}})[_0x5723('0x31')](function(_0x4101de){if(_0x4101de){return _0x4101de?{'count':_0x389273,'rows':_0x4101de}:null;}})[_0x5723('0x31')](respondWithResult(_0x1c776f,null))['catch'](handleError(_0x1c776f,null));};
\ No newline at end of file
+var _0x2b2d=['removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','json','reject','save','update','then','destroy','MailQueues','UserProfileResource','stack','name','send','index','map','MailQueue','rawAttributes','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','type','filter','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','userProfileId','autoAssociation','describe','getMembers','findOne','UserMailQueue','order','User','UserId','agent','updatedAt','createdAt','format','%s/%s','SIP','Team','getTeams','addTeams','ids','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_mail_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','push','toString','SELECT','includes','compact','value','isEmpty','userMailQueue:remove','addAgents','omit','spread'];(function(_0x513e32,_0x33dd33){var _0x1ed135=function(_0x20160c){while(--_0x20160c){_0x513e32['push'](_0x513e32['shift']());}};_0x1ed135(++_0x33dd33);}(_0x2b2d,0x1ad));var _0xd2b2=function(_0x562ec2,_0x33932b){_0x562ec2=_0x562ec2-0x0;var _0xd3a205=_0x2b2d[_0x562ec2];return _0xd3a205;};'use strict';var emlformat=require(_0xd2b2('0x0'));var rimraf=require(_0xd2b2('0x1'));var zipdir=require(_0xd2b2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd2b2('0x3'));var moment=require(_0xd2b2('0x4'));var BPromise=require(_0xd2b2('0x5'));var Mustache=require(_0xd2b2('0x6'));var util=require(_0xd2b2('0x7'));var path=require(_0xd2b2('0x8'));var sox=require(_0xd2b2('0x9'));var csv=require('to-csv');var ejs=require(_0xd2b2('0xa'));var fs=require('fs');var fs_extra=require(_0xd2b2('0xb'));var _=require(_0xd2b2('0xc'));var squel=require(_0xd2b2('0xd'));var crypto=require('crypto');var jsforce=require(_0xd2b2('0xe'));var deskjs=require(_0xd2b2('0xf'));var toCsv=require(_0xd2b2('0x10'));var querystring=require(_0xd2b2('0x11'));var Papa=require(_0xd2b2('0x12'));var Redis=require(_0xd2b2('0x13'));var authService=require(_0xd2b2('0x14'));var qs=require(_0xd2b2('0x15'));var as=require(_0xd2b2('0x16'));var hardwareService=require(_0xd2b2('0x17'));var logger=require('../../config/logger')(_0xd2b2('0x18'));var utils=require(_0xd2b2('0x19'));var config=require(_0xd2b2('0x1a'));var licenseUtil=require(_0xd2b2('0x1b'));var db=require(_0xd2b2('0x1c'))['db'];config[_0xd2b2('0x1d')]=_['defaults'](config['redis'],{'host':_0xd2b2('0x1e'),'port':0x18eb});var socket=require(_0xd2b2('0x1f'))(new Redis(config['redis']));require('./mailQueue.socket')[_0xd2b2('0x20')](socket);function respondWithStatusCode(_0x3e926f,_0x40ac84){_0x40ac84=_0x40ac84||0xcc;return function(_0x5a2ed4){if(_0x5a2ed4){return _0x3e926f[_0xd2b2('0x21')](_0x40ac84);}return _0x3e926f[_0xd2b2('0x22')](_0x40ac84)[_0xd2b2('0x23')]();};}function respondWithResult(_0x2f1188,_0x33a7c9){_0x33a7c9=_0x33a7c9||0xc8;return function(_0x4c13fd){if(_0x4c13fd){return _0x2f1188[_0xd2b2('0x22')](_0x33a7c9)['json'](_0x4c13fd);}};}function respondWithFilteredResult(_0x1ca071,_0x28e3ef){return function(_0x5037c7){if(_0x5037c7){var _0x11d708=typeof _0x28e3ef[_0xd2b2('0x24')]===_0xd2b2('0x25')&&typeof _0x28e3ef[_0xd2b2('0x26')]===_0xd2b2('0x25');var _0x1bdb8e=_0x5037c7['count'];var _0x533b37=_0x11d708?0x0:_0x28e3ef['offset'];var _0x1d04a4=_0x11d708?_0x5037c7[_0xd2b2('0x27')]:_0x28e3ef[_0xd2b2('0x24')]+_0x28e3ef[_0xd2b2('0x26')];var _0x6db92e;if(_0x1d04a4>=_0x1bdb8e){_0x1d04a4=_0x1bdb8e;_0x6db92e=0xc8;}else{_0x6db92e=0xce;}_0x1ca071[_0xd2b2('0x22')](_0x6db92e);return _0x1ca071[_0xd2b2('0x28')]('Content-Range',_0x533b37+'-'+_0x1d04a4+'/'+_0x1bdb8e)[_0xd2b2('0x29')](_0x5037c7);}return null;};}function patchUpdates(_0x4f8b24){return function(_0x4c355d){try{jsonpatch['apply'](_0x4c355d,_0x4f8b24,!![]);}catch(_0x428d78){return BPromise[_0xd2b2('0x2a')](_0x428d78);}return _0x4c355d[_0xd2b2('0x2b')]();};}function saveUpdates(_0x65f221,_0xd12285){return function(_0x4f0a65){if(_0x4f0a65){return _0x4f0a65[_0xd2b2('0x2c')](_0x65f221)[_0xd2b2('0x2d')](function(_0x4b6af8){return _0x4b6af8;});}return null;};}function removeEntity(_0x2bc396,_0x4cee18){return function(_0x39f32d){if(_0x39f32d){return _0x39f32d[_0xd2b2('0x2e')]()[_0xd2b2('0x2d')](function(){var _0x39928c=_0x39f32d['get']({'plain':!![]});var _0x2a9739=_0xd2b2('0x2f');return db[_0xd2b2('0x30')][_0xd2b2('0x2e')]({'where':{'type':_0x2a9739,'resourceId':_0x39928c['id']}})['then'](function(){return _0x39f32d;});})['then'](function(){_0x2bc396['status'](0xcc)[_0xd2b2('0x23')]();});}};}function handleEntityNotFound(_0x8dcc6a,_0x359757){return function(_0x27b17d){if(!_0x27b17d){_0x8dcc6a[_0xd2b2('0x21')](0x194);}return _0x27b17d;};}function handleError(_0x545581,_0x45c72e){_0x45c72e=_0x45c72e||0x1f4;return function(_0x304fbf){logger['error'](_0x304fbf[_0xd2b2('0x31')]);if(_0x304fbf[_0xd2b2('0x32')]){delete _0x304fbf['name'];}_0x545581[_0xd2b2('0x22')](_0x45c72e)[_0xd2b2('0x33')](_0x304fbf);};}exports[_0xd2b2('0x34')]=function(_0x5abf8f,_0x48bd90){var _0x38b7fd={},_0x140ad9={},_0x243b90={'count':0x0,'rows':[]};var _0x4c43da=_[_0xd2b2('0x35')](db[_0xd2b2('0x36')][_0xd2b2('0x37')],function(_0x42c5ac){return{'name':_0x42c5ac['fieldName'],'type':_0x42c5ac['type']['key']};});_0x140ad9[_0xd2b2('0x38')]=_['map'](_0x4c43da,_0xd2b2('0x32'));_0x140ad9[_0xd2b2('0x39')]=_[_0xd2b2('0x3a')](_0x5abf8f['query']);_0x140ad9['filters']=_[_0xd2b2('0x3b')](_0x140ad9[_0xd2b2('0x38')],_0x140ad9[_0xd2b2('0x39')]);_0x38b7fd[_0xd2b2('0x3c')]=_[_0xd2b2('0x3b')](_0x140ad9[_0xd2b2('0x38')],qs['fields'](_0x5abf8f[_0xd2b2('0x39')][_0xd2b2('0x3d')]));_0x38b7fd[_0xd2b2('0x3c')]=_0x38b7fd[_0xd2b2('0x3c')][_0xd2b2('0x3e')]?_0x38b7fd[_0xd2b2('0x3c')]:_0x140ad9[_0xd2b2('0x38')];if(!_0x5abf8f[_0xd2b2('0x39')][_0xd2b2('0x3f')](_0xd2b2('0x40'))){_0x38b7fd['limit']=qs[_0xd2b2('0x26')](_0x5abf8f[_0xd2b2('0x39')][_0xd2b2('0x26')]);_0x38b7fd['offset']=qs['offset'](_0x5abf8f[_0xd2b2('0x39')][_0xd2b2('0x24')]);}_0x38b7fd['order']=qs[_0xd2b2('0x41')](_0x5abf8f[_0xd2b2('0x39')][_0xd2b2('0x41')]);_0x38b7fd[_0xd2b2('0x42')]=qs[_0xd2b2('0x43')](_[_0xd2b2('0x44')](_0x5abf8f[_0xd2b2('0x39')],_0x140ad9['filters']),_0x4c43da);if(_0x5abf8f[_0xd2b2('0x39')]['filter']){_0x38b7fd[_0xd2b2('0x42')]=_[_0xd2b2('0x45')](_0x38b7fd['where'],{'$or':_[_0xd2b2('0x35')](_0x4c43da,function(_0x44dfce){if(_0x44dfce[_0xd2b2('0x46')]!=='VIRTUAL'){var _0x5a8211={};_0x5a8211[_0x44dfce['name']]={'$like':'%'+_0x5abf8f[_0xd2b2('0x39')][_0xd2b2('0x47')]+'%'};return _0x5a8211;}})});}_0x38b7fd=_[_0xd2b2('0x45')]({},_0x38b7fd,_0x5abf8f['options']);var _0x58a872={'where':_0x38b7fd[_0xd2b2('0x42')]};return db[_0xd2b2('0x36')][_0xd2b2('0x27')](_0x58a872)[_0xd2b2('0x2d')](function(_0x415e9b){_0x243b90['count']=_0x415e9b;if(_0x5abf8f[_0xd2b2('0x39')][_0xd2b2('0x48')]){_0x38b7fd[_0xd2b2('0x49')]=[{'all':!![]}];}return db[_0xd2b2('0x36')][_0xd2b2('0x4a')](_0x38b7fd);})['then'](function(_0x4c5584){_0x243b90[_0xd2b2('0x4b')]=_0x4c5584;return _0x243b90;})[_0xd2b2('0x2d')](respondWithFilteredResult(_0x48bd90,_0x38b7fd))[_0xd2b2('0x4c')](handleError(_0x48bd90,null));};exports[_0xd2b2('0x4d')]=function(_0x1b407b,_0x391636){var _0x16b10c={'raw':!![],'where':{'id':_0x1b407b[_0xd2b2('0x4e')]['id']}},_0x100b5e={};_0x100b5e[_0xd2b2('0x38')]=_['keys'](db[_0xd2b2('0x36')][_0xd2b2('0x37')]);_0x100b5e[_0xd2b2('0x39')]=_[_0xd2b2('0x3a')](_0x1b407b[_0xd2b2('0x39')]);_0x100b5e['filters']=_[_0xd2b2('0x3b')](_0x100b5e['model'],_0x100b5e[_0xd2b2('0x39')]);_0x16b10c['attributes']=_[_0xd2b2('0x3b')](_0x100b5e[_0xd2b2('0x38')],qs[_0xd2b2('0x3d')](_0x1b407b['query'][_0xd2b2('0x3d')]));_0x16b10c[_0xd2b2('0x3c')]=_0x16b10c['attributes'][_0xd2b2('0x3e')]?_0x16b10c['attributes']:_0x100b5e[_0xd2b2('0x38')];if(_0x1b407b[_0xd2b2('0x39')][_0xd2b2('0x48')]){_0x16b10c[_0xd2b2('0x49')]=[{'all':!![]}];}_0x16b10c=_[_0xd2b2('0x45')]({},_0x16b10c,_0x1b407b[_0xd2b2('0x4f')]);return db['MailQueue'][_0xd2b2('0x50')](_0x16b10c)[_0xd2b2('0x2d')](handleEntityNotFound(_0x391636,null))[_0xd2b2('0x2d')](respondWithResult(_0x391636,null))[_0xd2b2('0x4c')](handleError(_0x391636,null));};exports['create']=function(_0x371989,_0x5b2833){return db[_0xd2b2('0x36')][_0xd2b2('0x51')](_0x371989[_0xd2b2('0x52')],{})[_0xd2b2('0x2d')](function(_0x2561b7){var _0x3efc9c=_0x371989['user']['get']({'plain':!![]});if(!_0x3efc9c)throw new Error(_0xd2b2('0x53'));if(_0x3efc9c['role']===_0xd2b2('0x54')){var _0x3a62a8=_0x2561b7[_0xd2b2('0x55')]({'plain':!![]});var _0x29ce69=_0xd2b2('0x2f');return db[_0xd2b2('0x56')]['find']({'where':{'name':_0x29ce69,'userProfileId':_0x3efc9c[_0xd2b2('0x57')]},'raw':!![]})[_0xd2b2('0x2d')](function(_0x4c7057){if(_0x4c7057&&_0x4c7057[_0xd2b2('0x58')]===0x0){return db[_0xd2b2('0x30')][_0xd2b2('0x51')]({'name':_0x3a62a8[_0xd2b2('0x32')],'resourceId':_0x3a62a8['id'],'type':_0x4c7057[_0xd2b2('0x32')],'sectionId':_0x4c7057['id']},{})[_0xd2b2('0x2d')](function(){return _0x2561b7;});}else{return _0x2561b7;}})[_0xd2b2('0x4c')](function(_0x132cfb){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x132cfb);throw _0x132cfb;});}return _0x2561b7;})[_0xd2b2('0x2d')](respondWithResult(_0x5b2833,0xc9))[_0xd2b2('0x4c')](handleError(_0x5b2833,null));};exports['update']=function(_0x205d81,_0xe6816f){if(_0x205d81[_0xd2b2('0x52')]['id']){delete _0x205d81[_0xd2b2('0x52')]['id'];}return db[_0xd2b2('0x36')]['find']({'where':{'id':_0x205d81[_0xd2b2('0x4e')]['id']}})[_0xd2b2('0x2d')](handleEntityNotFound(_0xe6816f,null))[_0xd2b2('0x2d')](saveUpdates(_0x205d81[_0xd2b2('0x52')],null))[_0xd2b2('0x2d')](respondWithResult(_0xe6816f,null))['catch'](handleError(_0xe6816f,null));};exports['destroy']=function(_0x2863ae,_0x565131){return db[_0xd2b2('0x36')]['find']({'where':{'id':_0x2863ae['params']['id']}})[_0xd2b2('0x2d')](handleEntityNotFound(_0x565131,null))[_0xd2b2('0x2d')](removeEntity(_0x565131,null))[_0xd2b2('0x4c')](handleError(_0x565131,null));};exports['describe']=function(_0x1a9590,_0x3c8de0){return db[_0xd2b2('0x36')][_0xd2b2('0x59')]()[_0xd2b2('0x2d')](respondWithResult(_0x3c8de0,null))[_0xd2b2('0x4c')](handleError(_0x3c8de0,null));};exports[_0xd2b2('0x5a')]=function(_0x5a1ef7,_0x503f77,_0x313d01){var _0x508f90={'raw':!![],'where':{}},_0x4ce663={},_0x13d37e;return db[_0xd2b2('0x36')][_0xd2b2('0x5b')]({'where':{'id':_0x5a1ef7[_0xd2b2('0x4e')]['id']}})[_0xd2b2('0x2d')](handleEntityNotFound(_0x503f77,null))[_0xd2b2('0x2d')](function(_0x42d9a0){if(_0x42d9a0){_0x13d37e=_0x42d9a0['get']({'plain':!![]});_0x4ce663[_0xd2b2('0x38')]=_['keys'](db[_0xd2b2('0x5c')][_0xd2b2('0x37')]);_0x4ce663[_0xd2b2('0x39')]=_[_0xd2b2('0x3a')](_0x5a1ef7[_0xd2b2('0x39')]);_0x4ce663[_0xd2b2('0x43')]=_[_0xd2b2('0x3b')](_0x4ce663[_0xd2b2('0x38')],_0x4ce663[_0xd2b2('0x39')]);_0x508f90[_0xd2b2('0x3c')]=_['intersection'](_0x4ce663[_0xd2b2('0x38')],qs[_0xd2b2('0x3d')](_0x5a1ef7['query'][_0xd2b2('0x3d')]));_0x508f90[_0xd2b2('0x3c')]=_0x508f90[_0xd2b2('0x3c')]['length']?_0x508f90['attributes']:_0x4ce663[_0xd2b2('0x38')];if(!_0x5a1ef7[_0xd2b2('0x39')][_0xd2b2('0x3f')](_0xd2b2('0x40'))){_0x508f90[_0xd2b2('0x26')]=qs['limit'](_0x5a1ef7['query'][_0xd2b2('0x26')]);_0x508f90[_0xd2b2('0x24')]=qs['offset'](_0x5a1ef7[_0xd2b2('0x39')][_0xd2b2('0x24')]);}_0x508f90[_0xd2b2('0x5d')]=qs[_0xd2b2('0x41')](_0x5a1ef7[_0xd2b2('0x39')][_0xd2b2('0x41')]);_0x508f90[_0xd2b2('0x42')]=qs[_0xd2b2('0x43')](_['pick'](_0x5a1ef7[_0xd2b2('0x39')],_0x4ce663[_0xd2b2('0x43')]));_0x508f90['where']['MailQueueId']=_0x42d9a0['id'];if(_0x5a1ef7['query']['filter']){_0x508f90['where']=_['merge'](_0x508f90[_0xd2b2('0x42')],{'$or':_[_0xd2b2('0x35')](_0x508f90['attributes'],function(_0x2cccfc){var _0x56c885={};_0x56c885[_0x2cccfc]={'$like':'%'+_0x5a1ef7[_0xd2b2('0x39')][_0xd2b2('0x47')]+'%'};return _0x56c885;})});}_0x508f90=_[_0xd2b2('0x45')]({},_0x508f90,_0x5a1ef7['options']);return db[_0xd2b2('0x5c')][_0xd2b2('0x4a')](_0x508f90);}})[_0xd2b2('0x2d')](function(_0x23fa99){if(_0x23fa99){return db[_0xd2b2('0x5e')]['findAndCountAll']({'where':{'id':_[_0xd2b2('0x35')](_0x23fa99,_0xd2b2('0x5f')),'role':_0xd2b2('0x60')},'attributes':['id',_0xd2b2('0x32'),'mailPause',_0xd2b2('0x61'),_0xd2b2('0x62')]});}})[_0xd2b2('0x2d')](function(_0x989bb4){if(_0x989bb4){return{'count':_0x989bb4[_0xd2b2('0x27')],'rows':_[_0xd2b2('0x35')](_0x989bb4['rows'],function(_0x31e094){return{'membername':_0x31e094[_0xd2b2('0x32')],'UserId':_0x31e094['id'],'queue_name':_0x13d37e[_0xd2b2('0x32')],'MailQueueId':_0x13d37e['id'],'interface':util[_0xd2b2('0x63')](_0xd2b2('0x64'),_0xd2b2('0x65'),_0x31e094['name']),'penalty':0x0,'paused':_0x31e094['mailPause'],'createdAt':_0x31e094[_0xd2b2('0x62')],'updatedAt':_0x31e094[_0xd2b2('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xd2b2('0x2d')](respondWithFilteredResult(_0x503f77,_0x508f90))[_0xd2b2('0x4c')](handleError(_0x503f77,null));};exports['getTeams']=function(_0x17c951,_0x31d0e9,_0x15be85){var _0x1080ab={};var _0x553ff4={};var _0x5c2309;var _0x2570d0;return db[_0xd2b2('0x36')][_0xd2b2('0x5b')]({'where':{'id':_0x17c951['params']['id']}})[_0xd2b2('0x2d')](handleEntityNotFound(_0x31d0e9,null))['then'](function(_0x4c29e5){if(_0x4c29e5){_0x5c2309=_0x4c29e5;_0x553ff4[_0xd2b2('0x38')]=_[_0xd2b2('0x3a')](db[_0xd2b2('0x66')][_0xd2b2('0x37')]);_0x553ff4['query']=_[_0xd2b2('0x3a')](_0x17c951[_0xd2b2('0x39')]);_0x553ff4[_0xd2b2('0x43')]=_[_0xd2b2('0x3b')](_0x553ff4['model'],_0x553ff4[_0xd2b2('0x39')]);_0x1080ab[_0xd2b2('0x3c')]=_[_0xd2b2('0x3b')](_0x553ff4[_0xd2b2('0x38')],qs[_0xd2b2('0x3d')](_0x17c951['query'][_0xd2b2('0x3d')]));_0x1080ab[_0xd2b2('0x3c')]=_0x1080ab['attributes'][_0xd2b2('0x3e')]?_0x1080ab[_0xd2b2('0x3c')]:_0x553ff4['model'];_0x1080ab[_0xd2b2('0x5d')]=qs['sort'](_0x17c951[_0xd2b2('0x39')][_0xd2b2('0x41')]);_0x1080ab['where']=qs[_0xd2b2('0x43')](_[_0xd2b2('0x44')](_0x17c951[_0xd2b2('0x39')],_0x553ff4[_0xd2b2('0x43')]));if(_0x17c951[_0xd2b2('0x39')][_0xd2b2('0x47')]){_0x1080ab['where']=_['merge'](_0x1080ab[_0xd2b2('0x42')],{'$or':_[_0xd2b2('0x35')](_0x1080ab['attributes'],function(_0x161d68){var _0x1d265b={};_0x1d265b[_0x161d68]={'$like':'%'+_0x17c951[_0xd2b2('0x39')][_0xd2b2('0x47')]+'%'};return _0x1d265b;})});}_0x1080ab=_['merge']({},_0x1080ab,_0x17c951[_0xd2b2('0x4f')]);return _0x5c2309[_0xd2b2('0x67')](_0x1080ab);}})['then'](function(_0x252968){if(_0x252968){_0x2570d0=_0x252968[_0xd2b2('0x3e')];if(!_0x17c951[_0xd2b2('0x39')][_0xd2b2('0x3f')](_0xd2b2('0x40'))){_0x1080ab[_0xd2b2('0x26')]=qs[_0xd2b2('0x26')](_0x17c951[_0xd2b2('0x39')][_0xd2b2('0x26')]);_0x1080ab[_0xd2b2('0x24')]=qs[_0xd2b2('0x24')](_0x17c951['query'][_0xd2b2('0x24')]);}return _0x5c2309[_0xd2b2('0x67')](_0x1080ab);}})[_0xd2b2('0x2d')](function(_0x485de3){if(_0x485de3){return _0x485de3?{'count':_0x2570d0,'rows':_0x485de3}:null;}})[_0xd2b2('0x2d')](respondWithResult(_0x31d0e9,null))[_0xd2b2('0x4c')](handleError(_0x31d0e9,null));};exports[_0xd2b2('0x68')]=function(_0x5f4a55,_0x194143,_0x1b6a8a){var _0x105112=_0x5f4a55[_0xd2b2('0x52')][_0xd2b2('0x69')];return db[_0xd2b2('0x66')][_0xd2b2('0x4a')]({'where':{'id':_0x105112},'attributes':['id'],'include':[{'model':db[_0xd2b2('0x5e')],'as':'Agents','attributes':['id','name',_0xd2b2('0x6a'),_0xd2b2('0x6b'),_0xd2b2('0x6c')],'raw':!![]}]})[_0xd2b2('0x2d')](function(_0xe6a7b8){if(_0xe6a7b8){var _0x3ffafd=_[_0xd2b2('0x6d')](_0xe6a7b8,function(_0x4bdb2d){var _0x39b0b1=_0x4bdb2d[_0xd2b2('0x55')]({'plain':!![]});return _0x39b0b1[_0xd2b2('0x6e')];});return db[_0xd2b2('0x36')][_0xd2b2('0x50')]({'where':{'id':_0x5f4a55[_0xd2b2('0x4e')]['id']}})[_0xd2b2('0x2d')](function(_0x3f8cc1){return db[_0xd2b2('0x6f')][_0xd2b2('0x70')](function(_0x5c8b78){return _0x3f8cc1['addTeams'](_0x105112,{'transaction':_0x5c8b78})['then'](function(){return BPromise[_0xd2b2('0x71')](_0x3ffafd,function(_0x222390){return db['UserMailQueue'][_0xd2b2('0x72')]({'where':{'UserId':_0x222390['id'],'MailQueueId':_0x5f4a55[_0xd2b2('0x4e')]['id']},'transaction':_0x5c8b78});});})[_0xd2b2('0x2d')](function(){_0x3ffafd[_0xd2b2('0x73')](function(_0x1b9cd5){socket[_0xd2b2('0x74')](_0xd2b2('0x75'),{'UserId':_0x1b9cd5['id'],'MailQueueId':_0x3f8cc1['id']});});});});});}})[_0xd2b2('0x2d')](respondWithStatusCode(_0x194143,null))[_0xd2b2('0x4c')](handleError(_0x194143,null));};exports[_0xd2b2('0x76')]=function(_0x4dcb8c,_0x270e0e,_0x21fa05){return db[_0xd2b2('0x66')][_0xd2b2('0x4a')]({'where':{'id':_0x4dcb8c['query'][_0xd2b2('0x69')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xd2b2('0x6e'),'attributes':['id'],'raw':!![]}]})[_0xd2b2('0x2d')](handleEntityNotFound(_0x270e0e,null))[_0xd2b2('0x2d')](function(_0x2102b5){var _0x28f53a=_[_0xd2b2('0x35')](_0x2102b5,'id');var _0x2f09cf=[];var _0x33a2f7=[];var _0x33d402=squel[_0xd2b2('0x77')]();_0x33d402[_0xd2b2('0x78')](_0xd2b2('0x79'))[_0xd2b2('0x7a')](_0xd2b2('0x7b'),'tq')['join'](_0xd2b2('0x7c'),'ut',_0xd2b2('0x7d'))['where'](_0xd2b2('0x7e'),_0x4dcb8c[_0xd2b2('0x4e')]['id']);for(var _0x5ca96d=0x0;_0x5ca96d<_0x2102b5[_0xd2b2('0x3e')];_0x5ca96d+=0x1){let _0x402b9c=_0x2102b5[_0x5ca96d];for(var _0x5c6337=0x0;_0x5c6337<_0x402b9c[_0xd2b2('0x6e')][_0xd2b2('0x3e')];_0x5c6337+=0x1){let _0x1ecd52=_0x402b9c['Agents'][_0x5c6337];var _0x48715a=_0x33d402[_0xd2b2('0x7f')]();_0x48715a[_0xd2b2('0x42')]('ut.UserId\x20=\x20?',_0x1ecd52['id']);_0x33a2f7[_0xd2b2('0x80')](db[_0xd2b2('0x6f')][_0xd2b2('0x39')](_0x48715a[_0xd2b2('0x81')](),{'type':db[_0xd2b2('0x6f')]['QueryTypes'][_0xd2b2('0x82')]})[_0xd2b2('0x2d')](function(_0x59702b){if(_0x59702b[_0xd2b2('0x3e')]===0x1){return _0x1ecd52['id'];}else{var _0x14f99e=_['every'](_[_0xd2b2('0x35')](_0x59702b,'TeamId'),function(_0x4feb81){return _[_0xd2b2('0x83')](_0x28f53a,_0x4feb81);});if(_0x14f99e){return _0x1ecd52['id'];}}}));}}return BPromise['all'](_0x33a2f7)['then'](function(_0x2974d8){_0x2f09cf=_(_0x2f09cf)['union'](_0x2974d8)[_0xd2b2('0x84')]()[_0xd2b2('0x85')]();return db[_0xd2b2('0x36')][_0xd2b2('0x50')]({'where':{'id':_0x4dcb8c[_0xd2b2('0x4e')]['id']}})[_0xd2b2('0x2d')](function(_0x57c150){return db[_0xd2b2('0x6f')][_0xd2b2('0x70')](function(_0x2da050){return _0x57c150[_0xd2b2('0x76')](_0x4dcb8c[_0xd2b2('0x39')][_0xd2b2('0x69')],{'transaction':_0x2da050})[_0xd2b2('0x2d')](function(){if(!_[_0xd2b2('0x86')](_0x2f09cf)){return _0x57c150['removeAgents'](_0x2f09cf,{'transaction':_0x2da050});}})[_0xd2b2('0x2d')](function(){_0x2f09cf[_0xd2b2('0x73')](function(_0x3be3a5){socket[_0xd2b2('0x74')](_0xd2b2('0x87'),{'UserId':_0x3be3a5,'MailQueueId':_0x57c150['id']});});});});});});})['then'](respondWithStatusCode(_0x270e0e,null))[_0xd2b2('0x4c')](handleError(_0x270e0e,null));};exports[_0xd2b2('0x88')]=function(_0x1d982d,_0x43b705,_0x5b94f9){return db['MailQueue'][_0xd2b2('0x50')]({'where':{'id':_0x1d982d[_0xd2b2('0x4e')]['id']}})['then'](handleEntityNotFound(_0x43b705,null))[_0xd2b2('0x2d')](function(_0x115920){if(_0x115920){return _0x115920[_0xd2b2('0x88')](_0x1d982d[_0xd2b2('0x52')][_0xd2b2('0x69')],_[_0xd2b2('0x89')](_0x1d982d[_0xd2b2('0x52')],[_0xd2b2('0x69'),'id'])||{})[_0xd2b2('0x8a')](function(_0x567265){for(var _0x3eff6d=0x0;_0x3eff6d<_0x1d982d['body'][_0xd2b2('0x69')][_0xd2b2('0x3e')];_0x3eff6d+=0x1){socket[_0xd2b2('0x74')](_0xd2b2('0x75'),{'UserId':Number(_0x1d982d[_0xd2b2('0x52')]['ids'][_0x3eff6d]),'MailQueueId':Number(_0x1d982d[_0xd2b2('0x4e')]['id'])});}return _0x567265;});}})[_0xd2b2('0x2d')](respondWithResult(_0x43b705,null))[_0xd2b2('0x4c')](handleError(_0x43b705,null));};exports[_0xd2b2('0x8b')]=function(_0xf2edd2,_0x273efd,_0x531510){return db['MailQueue']['find']({'where':{'id':_0xf2edd2[_0xd2b2('0x4e')]['id']}})[_0xd2b2('0x2d')](handleEntityNotFound(_0x273efd,null))[_0xd2b2('0x2d')](function(_0x348255){if(_0x348255){return _0x348255[_0xd2b2('0x8b')](_0xf2edd2[_0xd2b2('0x39')][_0xd2b2('0x69')])['then'](function(){if(_[_0xd2b2('0x8c')](_0xf2edd2[_0xd2b2('0x39')][_0xd2b2('0x69')])){for(var _0x1fbae7=0x0;_0x1fbae7<_0xf2edd2[_0xd2b2('0x39')][_0xd2b2('0x69')]['length'];_0x1fbae7+=0x1){socket[_0xd2b2('0x74')](_0xd2b2('0x87'),{'UserId':Number(_0xf2edd2[_0xd2b2('0x39')][_0xd2b2('0x69')][_0x1fbae7]),'MailQueueId':Number(_0xf2edd2[_0xd2b2('0x4e')]['id'])});}}else{socket['emit'](_0xd2b2('0x87'),{'UserId':Number(_0xf2edd2[_0xd2b2('0x39')][_0xd2b2('0x69')]),'MailQueueId':Number(_0xf2edd2['params']['id'])});}});}})[_0xd2b2('0x2d')](respondWithStatusCode(_0x273efd,null))[_0xd2b2('0x4c')](handleError(_0x273efd,null));};exports[_0xd2b2('0x8d')]=function(_0x3f2813,_0x4b4991,_0x8163ff){var _0x4f2f0a={};var _0x12926d={};var _0x320e3e;var _0x3c4f2b;return db[_0xd2b2('0x36')]['findOne']({'where':{'id':_0x3f2813[_0xd2b2('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4b4991,null))['then'](function(_0x3f1908){if(_0x3f1908){_0x320e3e=_0x3f1908;_0x12926d[_0xd2b2('0x38')]=_[_0xd2b2('0x3a')](db[_0xd2b2('0x5e')]['rawAttributes']);_0x12926d[_0xd2b2('0x39')]=_[_0xd2b2('0x3a')](_0x3f2813['query']);_0x12926d[_0xd2b2('0x43')]=_[_0xd2b2('0x3b')](_0x12926d['model'],_0x12926d[_0xd2b2('0x39')]);_0x4f2f0a[_0xd2b2('0x3c')]=_[_0xd2b2('0x3b')](_0x12926d[_0xd2b2('0x38')],qs[_0xd2b2('0x3d')](_0x3f2813[_0xd2b2('0x39')][_0xd2b2('0x3d')]));_0x4f2f0a[_0xd2b2('0x3c')]=_0x4f2f0a['attributes'][_0xd2b2('0x3e')]?_0x4f2f0a[_0xd2b2('0x3c')]:_0x12926d[_0xd2b2('0x38')];_0x4f2f0a[_0xd2b2('0x5d')]=qs[_0xd2b2('0x41')](_0x3f2813[_0xd2b2('0x39')][_0xd2b2('0x41')]);_0x4f2f0a[_0xd2b2('0x42')]=qs[_0xd2b2('0x43')](_[_0xd2b2('0x44')](_0x3f2813[_0xd2b2('0x39')],_0x12926d[_0xd2b2('0x43')]));if(_0x3f2813[_0xd2b2('0x39')][_0xd2b2('0x47')]){_0x4f2f0a[_0xd2b2('0x42')]=_[_0xd2b2('0x45')](_0x4f2f0a[_0xd2b2('0x42')],{'$or':_[_0xd2b2('0x35')](_0x4f2f0a[_0xd2b2('0x3c')],function(_0x4d3fcd){var _0x1093dc={};_0x1093dc[_0x4d3fcd]={'$like':'%'+_0x3f2813[_0xd2b2('0x39')][_0xd2b2('0x47')]+'%'};return _0x1093dc;})});}_0x4f2f0a=_[_0xd2b2('0x45')]({},_0x4f2f0a,_0x3f2813[_0xd2b2('0x4f')]);return _0x320e3e[_0xd2b2('0x8d')](_0x4f2f0a);}})[_0xd2b2('0x2d')](function(_0x1e613b){if(_0x1e613b){_0x3c4f2b=_0x1e613b['length'];if(!_0x3f2813['query'][_0xd2b2('0x3f')]('nolimit')){_0x4f2f0a[_0xd2b2('0x26')]=qs[_0xd2b2('0x26')](_0x3f2813['query']['limit']);_0x4f2f0a['offset']=qs[_0xd2b2('0x24')](_0x3f2813[_0xd2b2('0x39')][_0xd2b2('0x24')]);}return _0x320e3e[_0xd2b2('0x8d')](_0x4f2f0a);}})[_0xd2b2('0x2d')](function(_0x31b744){if(_0x31b744){return _0x31b744?{'count':_0x3c4f2b,'rows':_0x31b744}:null;}})['then'](respondWithResult(_0x4b4991,null))[_0xd2b2('0x4c')](handleError(_0x4b4991,null));};
\ No newline at end of file
index 9bbd1f9..3f31003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ab9=['exports','events','../../mysqldb','MailQueue','save','update','emit','hook'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0x0ab9,0x1e9));var _0x90ab=function(_0x58f5a4,_0x277483){_0x58f5a4=_0x58f5a4-0x0;var _0x5134a2=_0x0ab9[_0x58f5a4];return _0x5134a2;};'use strict';var EventEmitter=require(_0x90ab('0x0'));var MailQueue=require(_0x90ab('0x1'))['db'][_0x90ab('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x90ab('0x3'),'afterUpdate':_0x90ab('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3eede6){return function(_0x2534f6,_0x1c9af9,_0x3d109d){MailQueueEvents[_0x90ab('0x5')](_0x3eede6+':'+_0x2534f6['id'],_0x2534f6);MailQueueEvents[_0x90ab('0x5')](_0x3eede6,_0x2534f6);_0x3d109d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0x90ab('0x6')](e,emitEvent(event));}}module[_0x90ab('0x7')]=MailQueueEvents;
\ No newline at end of file
+var _0x3cc1=['hasOwnProperty','hook','exports','events','MailQueue','setMaxListeners','emit'];(function(_0x125ff8,_0x41925f){var _0x2d9ef=function(_0x4ef34c){while(--_0x4ef34c){_0x125ff8['push'](_0x125ff8['shift']());}};_0x2d9ef(++_0x41925f);}(_0x3cc1,0x161));var _0x13cc=function(_0x51d767,_0x24ed13){_0x51d767=_0x51d767-0x0;var _0x2b3e2f=_0x3cc1[_0x51d767];return _0x2b3e2f;};'use strict';var EventEmitter=require(_0x13cc('0x0'));var MailQueue=require('../../mysqldb')['db'][_0x13cc('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x13cc('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x3db19a){return function(_0x17e050,_0x4cef82,_0x5c658b){MailQueueEvents['emit'](_0x3db19a+':'+_0x17e050['id'],_0x17e050);MailQueueEvents[_0x13cc('0x3')](_0x3db19a,_0x17e050);_0x5c658b(null);};}for(var e in events){if(events[_0x13cc('0x4')](e)){var event=events[e];MailQueue[_0x13cc('0x5')](e,emitEvent(event));}}module[_0x13cc('0x6')]=MailQueueEvents;
\ No newline at end of file
index 52ddf72..7626d0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1135=['lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./mailQueue.attributes','exports','define','MailQueue'];(function(_0xe66cf2,_0x32ba5f){var _0x2d84e7=function(_0x58a7d8){while(--_0x58a7d8){_0xe66cf2['push'](_0xe66cf2['shift']());}};_0x2d84e7(++_0x32ba5f);}(_0x1135,0x150));var _0x5113=function(_0x4eced5,_0x58b8b6){_0x4eced5=_0x4eced5-0x0;var _0x18bfb9=_0x1135[_0x4eced5];return _0x18bfb9;};'use strict';var _=require(_0x5113('0x0'));var util=require(_0x5113('0x1'));var logger=require(_0x5113('0x2'))(_0x5113('0x3'));var moment=require('moment');var BPromise=require(_0x5113('0x4'));var rp=require(_0x5113('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5113('0x6'));var config=require(_0x5113('0x7'));var attributes=require(_0x5113('0x8'));module[_0x5113('0x9')]=function(_0x11a389,_0x592461){return _0x11a389[_0x5113('0xa')](_0x5113('0xb'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5c4e=['moment','bluebird','request-promise','path','rimraf','exports','define','MailQueue','mail_queues','lodash','../../config/logger','api'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0x5c4e,0x69));var _0xe5c4=function(_0x422ba0,_0xb34a3e){_0x422ba0=_0x422ba0-0x0;var _0x10656d=_0x5c4e[_0x422ba0];return _0x10656d;};'use strict';var _=require(_0xe5c4('0x0'));var util=require('util');var logger=require(_0xe5c4('0x1'))(_0xe5c4('0x2'));var moment=require(_0xe5c4('0x3'));var BPromise=require(_0xe5c4('0x4'));var rp=require(_0xe5c4('0x5'));var fs=require('fs');var path=require(_0xe5c4('0x6'));var rimraf=require(_0xe5c4('0x7'));var config=require('../../config/environment');var attributes=require('./mailQueue.attributes');module[_0xe5c4('0x8')]=function(_0x4ea924,_0x4cfb1b){return _0x4ea924[_0xe5c4('0x9')](_0xe5c4('0xa'),attributes,{'tableName':_0xe5c4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 08bb804..27f673a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x828f=['include','map','attributes','model','debug','ShowMailQueue','find','then','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./mailQueue.socket','register','info','MailQueue,\x20%s,\x20%s','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetMailQueue','MailQueue','findAll','options','raw','where'];(function(_0x46284c,_0x4ddd51){var _0x3d25e7=function(_0x2597a1){while(--_0x2597a1){_0x46284c['push'](_0x46284c['shift']());}};_0x3d25e7(++_0x4ddd51);}(_0x828f,0xc1));var _0xf828=function(_0x1a0daa,_0x2a4634){_0x1a0daa=_0x1a0daa-0x0;var _0x1dbe15=_0x828f[_0x1a0daa];return _0x1dbe15;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xf828('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf828('0x1'));var db=require(_0xf828('0x2'))['db'];var utils=require(_0xf828('0x3'));var logger=require(_0xf828('0x4'))(_0xf828('0x5'));var config=require(_0xf828('0x6'));var jayson=require(_0xf828('0x7'));var client=jayson[_0xf828('0x8')]['http']({'port':0x232a});config[_0xf828('0x9')]=_[_0xf828('0xa')](config[_0xf828('0x9')],{'host':_0xf828('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf828('0xc'))[_0xf828('0xd')](socket);function respondWithRpcPromise(_0x368f1c,_0x1ef5b9,_0x4dd44d){return new BPromise(function(_0x2580ea,_0x130860){return client['request'](_0x368f1c,_0x4dd44d)['then'](function(_0x2328f2){logger[_0xf828('0xe')](_0xf828('0xf'),_0x1ef5b9,_0xf828('0x10'));logger['debug'](_0xf828('0x11'),_0x1ef5b9,'request\x20sent',JSON[_0xf828('0x12')](_0x2328f2));if(_0x2328f2['error']){if(_0x2328f2[_0xf828('0x13')][_0xf828('0x14')]===0x1f4){logger[_0xf828('0x13')](_0xf828('0xf'),_0x1ef5b9,_0x2328f2[_0xf828('0x13')][_0xf828('0x15')]);return _0x130860(_0x2328f2[_0xf828('0x13')][_0xf828('0x15')]);}logger[_0xf828('0x13')](_0xf828('0xf'),_0x1ef5b9,_0x2328f2[_0xf828('0x13')]['message']);return _0x2580ea(_0x2328f2[_0xf828('0x13')][_0xf828('0x15')]);}else{logger[_0xf828('0xe')]('MailQueue,\x20%s,\x20%s',_0x1ef5b9,_0xf828('0x10'));_0x2580ea(_0x2328f2['result'][_0xf828('0x15')]);}})[_0xf828('0x16')](function(_0x3f016e){logger[_0xf828('0x13')](_0xf828('0xf'),_0x1ef5b9,_0x3f016e);_0x130860(_0x3f016e);});});}exports[_0xf828('0x17')]=function(_0x20e4de){var _0x2a3046=this;return new Promise(function(_0xb66157,_0x10eb5b){return db[_0xf828('0x18')][_0xf828('0x19')]({'raw':_0x20e4de[_0xf828('0x1a')]?_0x20e4de[_0xf828('0x1a')][_0xf828('0x1b')]===undefined?!![]:![]:!![],'where':_0x20e4de[_0xf828('0x1a')]?_0x20e4de[_0xf828('0x1a')][_0xf828('0x1c')]||null:null,'attributes':_0x20e4de[_0xf828('0x1a')]?_0x20e4de[_0xf828('0x1a')]['attributes']||null:null,'limit':_0x20e4de[_0xf828('0x1a')]?_0x20e4de[_0xf828('0x1a')]['limit']||null:null,'include':_0x20e4de[_0xf828('0x1a')]?_0x20e4de[_0xf828('0x1a')][_0xf828('0x1d')]?_[_0xf828('0x1e')](_0x20e4de[_0xf828('0x1a')][_0xf828('0x1d')],function(_0x161f5a){return{'model':db[_0x161f5a['model']],'as':_0x161f5a['as'],'attributes':_0x161f5a[_0xf828('0x1f')],'include':_0x161f5a['include']?_[_0xf828('0x1e')](_0x161f5a[_0xf828('0x1d')],function(_0x4d49d4){return{'model':db[_0x4d49d4[_0xf828('0x20')]],'as':_0x4d49d4['as'],'attributes':_0x4d49d4[_0xf828('0x1f')],'include':_0x4d49d4['include']?_[_0xf828('0x1e')](_0x4d49d4['include'],function(_0x259758){return{'model':db[_0x259758[_0xf828('0x20')]],'as':_0x259758['as'],'attributes':_0x259758[_0xf828('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x48d9f1){logger[_0xf828('0xe')]('GetMailQueue',_0x20e4de);logger[_0xf828('0x21')](_0xf828('0x17'),_0x20e4de,JSON[_0xf828('0x12')](_0x48d9f1));_0xb66157(_0x48d9f1);})['catch'](function(_0x52089b){logger[_0xf828('0x13')](_0xf828('0x17'),_0x52089b['message'],_0x20e4de);_0x10eb5b(_0x2a3046[_0xf828('0x13')](0x1f4,_0x52089b[_0xf828('0x15')]));});});};exports[_0xf828('0x22')]=function(_0x5680e7){var _0x4959c6=this;return new Promise(function(_0x594b13,_0x5772ba){return db[_0xf828('0x18')][_0xf828('0x23')]({'raw':_0x5680e7['options']?_0x5680e7[_0xf828('0x1a')][_0xf828('0x1b')]===undefined?!![]:![]:!![],'where':_0x5680e7['options']?_0x5680e7[_0xf828('0x1a')][_0xf828('0x1c')]||null:null,'attributes':_0x5680e7['options']?_0x5680e7[_0xf828('0x1a')]['attributes']||null:null,'include':_0x5680e7[_0xf828('0x1a')]?_0x5680e7[_0xf828('0x1a')][_0xf828('0x1d')]?_[_0xf828('0x1e')](_0x5680e7[_0xf828('0x1a')][_0xf828('0x1d')],function(_0x18447e){return{'model':db[_0x18447e[_0xf828('0x20')]],'as':_0x18447e['as'],'attributes':_0x18447e['attributes'],'include':_0x18447e['include']?_[_0xf828('0x1e')](_0x18447e[_0xf828('0x1d')],function(_0x2bdd8c){return{'model':db[_0x2bdd8c[_0xf828('0x20')]],'as':_0x2bdd8c['as'],'attributes':_0x2bdd8c[_0xf828('0x1f')],'include':_0x2bdd8c[_0xf828('0x1d')]?_[_0xf828('0x1e')](_0x2bdd8c[_0xf828('0x1d')],function(_0x57d2c1){return{'model':db[_0x57d2c1[_0xf828('0x20')]],'as':_0x57d2c1['as'],'attributes':_0x57d2c1[_0xf828('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xf828('0x24')](function(_0x5564c5){logger[_0xf828('0xe')](_0xf828('0x22'),_0x5680e7);logger[_0xf828('0x21')](_0xf828('0x22'),_0x5680e7,JSON[_0xf828('0x12')](_0x5564c5));_0x594b13(_0x5564c5);})['catch'](function(_0x2d3aa7){logger[_0xf828('0x13')]('ShowMailQueue',_0x2d3aa7[_0xf828('0x15')],_0x5680e7);_0x5772ba(_0x4959c6[_0xf828('0x13')](0x1f4,_0x2d3aa7[_0xf828('0x15')]));});});};
\ No newline at end of file
+var _0x05cc=['info','result','catch','GetMailQueue','MailQueue','findAll','options','where','attributes','limit','include','map','model','ShowMailQueue','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','MailQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x2fed60,_0x1cb9de){var _0x2ec4d1=function(_0xa14641){while(--_0xa14641){_0x2fed60['push'](_0x2fed60['shift']());}};_0x2ec4d1(++_0x1cb9de);}(_0x05cc,0x1e9));var _0xc05c=function(_0x20c3c2,_0x1b45e1){_0x20c3c2=_0x20c3c2-0x0;var _0x527149=_0x05cc[_0x20c3c2];return _0x527149;};'use strict';var _=require(_0xc05c('0x0'));var util=require(_0xc05c('0x1'));var moment=require(_0xc05c('0x2'));var BPromise=require(_0xc05c('0x3'));var rs=require(_0xc05c('0x4'));var fs=require('fs');var Redis=require(_0xc05c('0x5'));var db=require(_0xc05c('0x6'))['db'];var utils=require(_0xc05c('0x7'));var logger=require(_0xc05c('0x8'))(_0xc05c('0x9'));var config=require(_0xc05c('0xa'));var jayson=require(_0xc05c('0xb'));var client=jayson[_0xc05c('0xc')][_0xc05c('0xd')]({'port':0x232a});config[_0xc05c('0xe')]=_[_0xc05c('0xf')](config['redis'],{'host':_0xc05c('0x10'),'port':0x18eb});var socket=require(_0xc05c('0x11'))(new Redis(config[_0xc05c('0xe')]));require('./mailQueue.socket')[_0xc05c('0x12')](socket);function respondWithRpcPromise(_0x4e4e4d,_0x1a488e,_0x2b47ec){return new BPromise(function(_0x438225,_0xc598ea){return client['request'](_0x4e4e4d,_0x2b47ec)[_0xc05c('0x13')](function(_0x20d45b){logger['info'](_0xc05c('0x14'),_0x1a488e,_0xc05c('0x15'));logger[_0xc05c('0x16')]('MailQueue,\x20%s,\x20%s,\x20%s',_0x1a488e,_0xc05c('0x15'),JSON[_0xc05c('0x17')](_0x20d45b));if(_0x20d45b[_0xc05c('0x18')]){if(_0x20d45b['error'][_0xc05c('0x19')]===0x1f4){logger[_0xc05c('0x18')]('MailQueue,\x20%s,\x20%s',_0x1a488e,_0x20d45b[_0xc05c('0x18')][_0xc05c('0x1a')]);return _0xc598ea(_0x20d45b['error'][_0xc05c('0x1a')]);}logger[_0xc05c('0x18')]('MailQueue,\x20%s,\x20%s',_0x1a488e,_0x20d45b['error'][_0xc05c('0x1a')]);return _0x438225(_0x20d45b[_0xc05c('0x18')][_0xc05c('0x1a')]);}else{logger[_0xc05c('0x1b')]('MailQueue,\x20%s,\x20%s',_0x1a488e,_0xc05c('0x15'));_0x438225(_0x20d45b[_0xc05c('0x1c')]['message']);}})[_0xc05c('0x1d')](function(_0xf7707d){logger[_0xc05c('0x18')]('MailQueue,\x20%s,\x20%s',_0x1a488e,_0xf7707d);_0xc598ea(_0xf7707d);});});}exports[_0xc05c('0x1e')]=function(_0x1a00fc){var _0x218fb7=this;return new Promise(function(_0x331501,_0x3c984b){return db[_0xc05c('0x1f')][_0xc05c('0x20')]({'raw':_0x1a00fc[_0xc05c('0x21')]?_0x1a00fc[_0xc05c('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0x1a00fc[_0xc05c('0x21')]?_0x1a00fc[_0xc05c('0x21')][_0xc05c('0x22')]||null:null,'attributes':_0x1a00fc[_0xc05c('0x21')]?_0x1a00fc[_0xc05c('0x21')][_0xc05c('0x23')]||null:null,'limit':_0x1a00fc[_0xc05c('0x21')]?_0x1a00fc[_0xc05c('0x21')][_0xc05c('0x24')]||null:null,'include':_0x1a00fc[_0xc05c('0x21')]?_0x1a00fc['options'][_0xc05c('0x25')]?_[_0xc05c('0x26')](_0x1a00fc['options']['include'],function(_0x527c1c){return{'model':db[_0x527c1c[_0xc05c('0x27')]],'as':_0x527c1c['as'],'attributes':_0x527c1c['attributes'],'include':_0x527c1c['include']?_[_0xc05c('0x26')](_0x527c1c[_0xc05c('0x25')],function(_0x1df8f7){return{'model':db[_0x1df8f7[_0xc05c('0x27')]],'as':_0x1df8f7['as'],'attributes':_0x1df8f7['attributes'],'include':_0x1df8f7[_0xc05c('0x25')]?_['map'](_0x1df8f7[_0xc05c('0x25')],function(_0x2dc5d2){return{'model':db[_0x2dc5d2[_0xc05c('0x27')]],'as':_0x2dc5d2['as'],'attributes':_0x2dc5d2[_0xc05c('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x117fa3){logger[_0xc05c('0x1b')]('GetMailQueue',_0x1a00fc);logger['debug']('GetMailQueue',_0x1a00fc,JSON['stringify'](_0x117fa3));_0x331501(_0x117fa3);})['catch'](function(_0x24438f){logger[_0xc05c('0x18')](_0xc05c('0x1e'),_0x24438f['message'],_0x1a00fc);_0x3c984b(_0x218fb7[_0xc05c('0x18')](0x1f4,_0x24438f[_0xc05c('0x1a')]));});});};exports[_0xc05c('0x28')]=function(_0x3ca338){var _0x3fe505=this;return new Promise(function(_0x5a6ac3,_0x44db5f){return db[_0xc05c('0x1f')][_0xc05c('0x29')]({'raw':_0x3ca338[_0xc05c('0x21')]?_0x3ca338[_0xc05c('0x21')][_0xc05c('0x2a')]===undefined?!![]:![]:!![],'where':_0x3ca338[_0xc05c('0x21')]?_0x3ca338['options'][_0xc05c('0x22')]||null:null,'attributes':_0x3ca338[_0xc05c('0x21')]?_0x3ca338[_0xc05c('0x21')][_0xc05c('0x23')]||null:null,'include':_0x3ca338[_0xc05c('0x21')]?_0x3ca338[_0xc05c('0x21')]['include']?_[_0xc05c('0x26')](_0x3ca338[_0xc05c('0x21')][_0xc05c('0x25')],function(_0x4c6439){return{'model':db[_0x4c6439['model']],'as':_0x4c6439['as'],'attributes':_0x4c6439[_0xc05c('0x23')],'include':_0x4c6439[_0xc05c('0x25')]?_['map'](_0x4c6439[_0xc05c('0x25')],function(_0x43fad5){return{'model':db[_0x43fad5['model']],'as':_0x43fad5['as'],'attributes':_0x43fad5[_0xc05c('0x23')],'include':_0x43fad5['include']?_['map'](_0x43fad5[_0xc05c('0x25')],function(_0x209135){return{'model':db[_0x209135[_0xc05c('0x27')]],'as':_0x209135['as'],'attributes':_0x209135[_0xc05c('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2dd560){logger[_0xc05c('0x1b')](_0xc05c('0x28'),_0x3ca338);logger[_0xc05c('0x16')](_0xc05c('0x28'),_0x3ca338,JSON[_0xc05c('0x17')](_0x2dd560));_0x5a6ac3(_0x2dd560);})[_0xc05c('0x1d')](function(_0x706053){logger[_0xc05c('0x18')](_0xc05c('0x28'),_0x706053[_0xc05c('0x1a')],_0x3ca338);_0x44db5f(_0x3fe505[_0xc05c('0x18')](0x1f4,_0x706053[_0xc05c('0x1a')]));});});};
\ No newline at end of file
index 5a0b5f3..7ca2b15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x276e=['remove','emit','removeListener','length','mailQueue:','./mailQueue.events','save'];(function(_0x458f49,_0x1a1af1){var _0x36e8c9=function(_0x1273cb){while(--_0x1273cb){_0x458f49['push'](_0x458f49['shift']());}};_0x36e8c9(++_0x1a1af1);}(_0x276e,0xec));var _0xe276=function(_0x3c97e3,_0x321677){_0x3c97e3=_0x3c97e3-0x0;var _0x9bb0ed=_0x276e[_0x3c97e3];return _0x9bb0ed;};'use strict';var MailQueueEvents=require(_0xe276('0x0'));var events=[_0xe276('0x1'),_0xe276('0x2'),'update'];function createListener(_0x4c7280,_0x222cf5){return function(_0x50c31b){_0x222cf5[_0xe276('0x3')](_0x4c7280,_0x50c31b);};}function removeListener(_0xc38c0f,_0x57ab21){return function(){MailQueueEvents[_0xe276('0x4')](_0xc38c0f,_0x57ab21);};}exports['register']=function(_0x572bea){for(var _0x216565=0x0,_0x40aa2a=events[_0xe276('0x5')];_0x216565<_0x40aa2a;_0x216565++){var _0x243fd6=events[_0x216565];var _0x5de3b8=createListener(_0xe276('0x6')+_0x243fd6,_0x572bea);MailQueueEvents['on'](_0x243fd6,_0x5de3b8);}};
\ No newline at end of file
+var _0x6da1=['update','emit','removeListener','register','length','mailQueue:','save'];(function(_0x4c72e1,_0x557af7){var _0x29070a=function(_0x8633d0){while(--_0x8633d0){_0x4c72e1['push'](_0x4c72e1['shift']());}};_0x29070a(++_0x557af7);}(_0x6da1,0x1b8));var _0x16da=function(_0x20ebb5,_0x237d88){_0x20ebb5=_0x20ebb5-0x0;var _0x487182=_0x6da1[_0x20ebb5];return _0x487182;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=[_0x16da('0x0'),'remove',_0x16da('0x1')];function createListener(_0x202305,_0x4022ae){return function(_0x4c6c15){_0x4022ae[_0x16da('0x2')](_0x202305,_0x4c6c15);};}function removeListener(_0x2a27dc,_0x4990d9){return function(){MailQueueEvents[_0x16da('0x3')](_0x2a27dc,_0x4990d9);};}exports[_0x16da('0x4')]=function(_0x3058f2){for(var _0x57612f=0x0,_0x4aa4b0=events[_0x16da('0x5')];_0x57612f<_0x4aa4b0;_0x57612f++){var _0x9ced5c=events[_0x57612f];var _0x12df0e=createListener(_0x16da('0x6')+_0x9ced5c,_0x3058f2);MailQueueEvents['on'](_0x9ced5c,_0x12df0e);}};
\ No newline at end of file
index 7505a58..f1a7642 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc1f=['../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra'];(function(_0x301b48,_0x29ae1c){var _0x1bd0d3=function(_0x16e1a9){while(--_0x16e1a9){_0x301b48['push'](_0x301b48['shift']());}};_0x1bd0d3(++_0x29ae1c);}(_0xbc1f,0x9b));var _0xfbc1=function(_0x3f6395,_0x43f6f6){_0x3f6395=_0x3f6395-0x0;var _0x41fb2f=_0xbc1f[_0x3f6395];return _0x41fb2f;};'use strict';var multer=require(_0xfbc1('0x0'));var util=require(_0xfbc1('0x1'));var path=require(_0xfbc1('0x2'));var timeout=require('connect-timeout');var express=require(_0xfbc1('0x3'));var router=express[_0xfbc1('0x4')]();var fs_extra=require(_0xfbc1('0x5'));var auth=require(_0xfbc1('0x6'));var interaction=require(_0xfbc1('0x7'));var config=require(_0xfbc1('0x8'));var controller=require(_0xfbc1('0x9'));router['get']('/',auth[_0xfbc1('0xa')](),controller[_0xfbc1('0xb')]);router[_0xfbc1('0xc')](_0xfbc1('0xd'),auth[_0xfbc1('0xa')](),controller[_0xfbc1('0xe')]);router[_0xfbc1('0xc')](_0xfbc1('0xf'),auth['isAuthenticated'](),controller[_0xfbc1('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xfbc1('0x11')]);router[_0xfbc1('0x12')](_0xfbc1('0xf'),auth[_0xfbc1('0xa')](),controller[_0xfbc1('0x13')]);router[_0xfbc1('0x14')](_0xfbc1('0xf'),auth[_0xfbc1('0xa')](),controller[_0xfbc1('0x15')]);module[_0xfbc1('0x16')]=router;
\ No newline at end of file
+var _0xfd18=['delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','put','update'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfd18,0x66));var _0x8fd1=function(_0x4a46ad,_0x5d0428){_0x4a46ad=_0x4a46ad-0x0;var _0x29ab8e=_0xfd18[_0x4a46ad];return _0x29ab8e;};'use strict';var multer=require('multer');var util=require(_0x8fd1('0x0'));var path=require(_0x8fd1('0x1'));var timeout=require(_0x8fd1('0x2'));var express=require(_0x8fd1('0x3'));var router=express[_0x8fd1('0x4')]();var fs_extra=require(_0x8fd1('0x5'));var auth=require(_0x8fd1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8fd1('0x7'));var controller=require(_0x8fd1('0x8'));router[_0x8fd1('0x9')]('/',auth[_0x8fd1('0xa')](),controller[_0x8fd1('0xb')]);router[_0x8fd1('0x9')](_0x8fd1('0xc'),auth[_0x8fd1('0xa')](),controller['describe']);router[_0x8fd1('0x9')](_0x8fd1('0xd'),auth['isAuthenticated'](),controller[_0x8fd1('0xe')]);router[_0x8fd1('0xf')]('/',auth[_0x8fd1('0xa')](),controller['create']);router[_0x8fd1('0x10')](_0x8fd1('0xd'),auth[_0x8fd1('0xa')](),controller[_0x8fd1('0x11')]);router[_0x8fd1('0x12')](_0x8fd1('0xd'),auth[_0x8fd1('0xa')](),controller['destroy']);module[_0x8fd1('0x13')]=router;
\ No newline at end of file
index 8982952..adc4536 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b22=['STRING','DATE','moment','sequelize'];(function(_0x61b3ab,_0x1fc298){var _0x57097f=function(_0x25970b){while(--_0x25970b){_0x61b3ab['push'](_0x61b3ab['shift']());}};_0x57097f(++_0x1fc298);}(_0x4b22,0x166));var _0x24b2=function(_0x4355c9,_0xadbc7c){_0x4355c9=_0x4355c9-0x0;var _0x4b1de1=_0x4b22[_0x4355c9];return _0x4b1de1;};'use strict';var moment=require(_0x24b2('0x0'));var Sequelize=require(_0x24b2('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x24b2('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x24b2('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x24b2('0x3')]},'reason':{'type':Sequelize[_0x24b2('0x2')]}};
\ No newline at end of file
+var _0x75ba=['STRING','DATE','moment','exports'];(function(_0x1ecb37,_0x1d8195){var _0x397083=function(_0x1bb567){while(--_0x1bb567){_0x1ecb37['push'](_0x1ecb37['shift']());}};_0x397083(++_0x1d8195);}(_0x75ba,0x1c2));var _0xa75b=function(_0x12d6c2,_0x409bc8){_0x12d6c2=_0x12d6c2-0x0;var _0x1c9825=_0x75ba[_0x12d6c2];return _0x1c9825;};'use strict';var moment=require(_0xa75b('0x0'));var Sequelize=require('sequelize');module[_0xa75b('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xa75b('0x2')]},'joinAt':{'type':Sequelize[_0xa75b('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xa75b('0x3')]},'exitAt':{'type':Sequelize[_0xa75b('0x3')]},'reason':{'type':Sequelize[_0xa75b('0x2')]}};
\ No newline at end of file
index 94b721d..f367790 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','MailQueueReport','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','VIRTUAL','filter','includeAll','include','findAll','show','params','merge','options','create','body','find','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash'];(function(_0x1de912,_0x332d99){var _0x10d7c2=function(_0xb4eedf){while(--_0xb4eedf){_0x1de912['push'](_0x1de912['shift']());}};_0x10d7c2(++_0x332d99);}(_0x2272,0xd8));var _0x2227=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x2272[_0x17d9e3];return _0x14192d;};'use strict';var emlformat=require(_0x2227('0x0'));var rimraf=require(_0x2227('0x1'));var zipdir=require(_0x2227('0x2'));var jsonpatch=require(_0x2227('0x3'));var rp=require(_0x2227('0x4'));var moment=require('moment');var BPromise=require(_0x2227('0x5'));var Mustache=require(_0x2227('0x6'));var util=require(_0x2227('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x2227('0x8'));var ejs=require(_0x2227('0x9'));var fs=require('fs');var fs_extra=require(_0x2227('0xa'));var _=require(_0x2227('0xb'));var squel=require(_0x2227('0xc'));var crypto=require(_0x2227('0xd'));var jsforce=require(_0x2227('0xe'));var deskjs=require(_0x2227('0xf'));var toCsv=require(_0x2227('0x8'));var querystring=require(_0x2227('0x10'));var Papa=require('papaparse');var Redis=require(_0x2227('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x2227('0x12'));var as=require(_0x2227('0x13'));var hardwareService=require(_0x2227('0x14'));var logger=require(_0x2227('0x15'))(_0x2227('0x16'));var utils=require('../../config/utils');var config=require(_0x2227('0x17'));var licenseUtil=require(_0x2227('0x18'));var db=require(_0x2227('0x19'))['db'];function respondWithStatusCode(_0x2e19fb,_0x125c3b){_0x125c3b=_0x125c3b||0xcc;return function(_0x18a2c0){if(_0x18a2c0){return _0x2e19fb['sendStatus'](_0x125c3b);}return _0x2e19fb['status'](_0x125c3b)['end']();};}function respondWithResult(_0x136f6b,_0x571dd1){_0x571dd1=_0x571dd1||0xc8;return function(_0x42f60b){if(_0x42f60b){return _0x136f6b[_0x2227('0x1a')](_0x571dd1)['json'](_0x42f60b);}};}function respondWithFilteredResult(_0x3da09c,_0x4fa23d){return function(_0x1df1ef){if(_0x1df1ef){var _0x43e174=typeof _0x4fa23d[_0x2227('0x1b')]===_0x2227('0x1c')&&typeof _0x4fa23d['limit']===_0x2227('0x1c');var _0x1cf016=_0x1df1ef[_0x2227('0x1d')];var _0x531f75=_0x43e174?0x0:_0x4fa23d[_0x2227('0x1b')];var _0x620012=_0x43e174?_0x1df1ef[_0x2227('0x1d')]:_0x4fa23d[_0x2227('0x1b')]+_0x4fa23d[_0x2227('0x1e')];var _0x28e642;if(_0x620012>=_0x1cf016){_0x620012=_0x1cf016;_0x28e642=0xc8;}else{_0x28e642=0xce;}_0x3da09c[_0x2227('0x1a')](_0x28e642);return _0x3da09c['set'](_0x2227('0x1f'),_0x531f75+'-'+_0x620012+'/'+_0x1cf016)['json'](_0x1df1ef);}return null;};}function patchUpdates(_0x2b26b7){return function(_0x3aed68){try{jsonpatch[_0x2227('0x20')](_0x3aed68,_0x2b26b7,!![]);}catch(_0x1f28ef){return BPromise[_0x2227('0x21')](_0x1f28ef);}return _0x3aed68[_0x2227('0x22')]();};}function saveUpdates(_0x19ab59,_0x10d9ca){return function(_0x3299fd){if(_0x3299fd){return _0x3299fd[_0x2227('0x23')](_0x19ab59)[_0x2227('0x24')](function(_0x5a454f){return _0x5a454f;});}return null;};}function removeEntity(_0x45def5,_0x42d500){return function(_0x5b3a09){if(_0x5b3a09){return _0x5b3a09[_0x2227('0x25')]()[_0x2227('0x24')](function(){_0x45def5['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x17c7a4,_0xa4d18b){return function(_0x35333f){if(!_0x35333f){_0x17c7a4[_0x2227('0x26')](0x194);}return _0x35333f;};}function handleError(_0x5be889,_0x191a3e){_0x191a3e=_0x191a3e||0x1f4;return function(_0x301304){logger[_0x2227('0x27')](_0x301304[_0x2227('0x28')]);if(_0x301304['name']){delete _0x301304[_0x2227('0x29')];}_0x5be889[_0x2227('0x1a')](_0x191a3e)[_0x2227('0x2a')](_0x301304);};}exports[_0x2227('0x2b')]=function(_0x1627d3,_0x4789eb){var _0x55015e={},_0x5d1d56={},_0x2dc38d={'count':0x0,'rows':[]};var _0x497f91=_[_0x2227('0x2c')](db[_0x2227('0x2d')]['rawAttributes'],function(_0x5916d4){return{'name':_0x5916d4[_0x2227('0x2e')],'type':_0x5916d4[_0x2227('0x2f')][_0x2227('0x30')]};});_0x5d1d56['model']=_[_0x2227('0x2c')](_0x497f91,'name');_0x5d1d56[_0x2227('0x31')]=_[_0x2227('0x32')](_0x1627d3[_0x2227('0x31')]);_0x5d1d56[_0x2227('0x33')]=_[_0x2227('0x34')](_0x5d1d56[_0x2227('0x35')],_0x5d1d56[_0x2227('0x31')]);_0x55015e[_0x2227('0x36')]=_[_0x2227('0x34')](_0x5d1d56[_0x2227('0x35')],qs[_0x2227('0x37')](_0x1627d3['query'][_0x2227('0x37')]));_0x55015e[_0x2227('0x36')]=_0x55015e[_0x2227('0x36')][_0x2227('0x38')]?_0x55015e['attributes']:_0x5d1d56[_0x2227('0x35')];if(!_0x1627d3[_0x2227('0x31')][_0x2227('0x39')](_0x2227('0x3a'))){_0x55015e['limit']=qs[_0x2227('0x1e')](_0x1627d3[_0x2227('0x31')][_0x2227('0x1e')]);_0x55015e['offset']=qs['offset'](_0x1627d3[_0x2227('0x31')][_0x2227('0x1b')]);}_0x55015e['order']=qs[_0x2227('0x3b')](_0x1627d3[_0x2227('0x31')]['sort']);_0x55015e[_0x2227('0x3c')]=qs['filters'](_[_0x2227('0x3d')](_0x1627d3[_0x2227('0x31')],_0x5d1d56[_0x2227('0x33')]),_0x497f91);if(_0x1627d3[_0x2227('0x31')]['filter']){_0x55015e[_0x2227('0x3c')]=_['merge'](_0x55015e[_0x2227('0x3c')],{'$or':_[_0x2227('0x2c')](_0x497f91,function(_0x5ef625){if(_0x5ef625['type']!==_0x2227('0x3e')){var _0x2b96b1={};_0x2b96b1[_0x5ef625[_0x2227('0x29')]]={'$like':'%'+_0x1627d3[_0x2227('0x31')][_0x2227('0x3f')]+'%'};return _0x2b96b1;}})});}_0x55015e=_['merge']({},_0x55015e,_0x1627d3['options']);var _0x2b1a8c={'where':_0x55015e['where']};return db[_0x2227('0x2d')][_0x2227('0x1d')](_0x2b1a8c)[_0x2227('0x24')](function(_0x3ae79a){_0x2dc38d[_0x2227('0x1d')]=_0x3ae79a;if(_0x1627d3[_0x2227('0x31')][_0x2227('0x40')]){_0x55015e[_0x2227('0x41')]=[{'all':!![]}];}return db['MailQueueReport'][_0x2227('0x42')](_0x55015e);})['then'](function(_0x3c67c6){_0x2dc38d['rows']=_0x3c67c6;return _0x2dc38d;})[_0x2227('0x24')](respondWithFilteredResult(_0x4789eb,_0x55015e))['catch'](handleError(_0x4789eb,null));};exports[_0x2227('0x43')]=function(_0x49239e,_0xf45d6b){var _0x307099={'raw':!![],'where':{'id':_0x49239e[_0x2227('0x44')]['id']}},_0x46eb0f={};_0x46eb0f[_0x2227('0x35')]=_[_0x2227('0x32')](db['MailQueueReport']['rawAttributes']);_0x46eb0f[_0x2227('0x31')]=_['keys'](_0x49239e[_0x2227('0x31')]);_0x46eb0f['filters']=_[_0x2227('0x34')](_0x46eb0f[_0x2227('0x35')],_0x46eb0f[_0x2227('0x31')]);_0x307099[_0x2227('0x36')]=_[_0x2227('0x34')](_0x46eb0f[_0x2227('0x35')],qs['fields'](_0x49239e[_0x2227('0x31')][_0x2227('0x37')]));_0x307099[_0x2227('0x36')]=_0x307099[_0x2227('0x36')][_0x2227('0x38')]?_0x307099[_0x2227('0x36')]:_0x46eb0f[_0x2227('0x35')];if(_0x49239e[_0x2227('0x31')]['includeAll']){_0x307099[_0x2227('0x41')]=[{'all':!![]}];}_0x307099=_[_0x2227('0x45')]({},_0x307099,_0x49239e[_0x2227('0x46')]);return db[_0x2227('0x2d')]['find'](_0x307099)[_0x2227('0x24')](handleEntityNotFound(_0xf45d6b,null))[_0x2227('0x24')](respondWithResult(_0xf45d6b,null))['catch'](handleError(_0xf45d6b,null));};exports[_0x2227('0x47')]=function(_0x475a1b,_0x1e4d8f){return db[_0x2227('0x2d')][_0x2227('0x47')](_0x475a1b[_0x2227('0x48')],{})[_0x2227('0x24')](respondWithResult(_0x1e4d8f,0xc9))['catch'](handleError(_0x1e4d8f,null));};exports[_0x2227('0x23')]=function(_0x3155dd,_0x482bf9){if(_0x3155dd[_0x2227('0x48')]['id']){delete _0x3155dd['body']['id'];}return db[_0x2227('0x2d')][_0x2227('0x49')]({'where':{'id':_0x3155dd[_0x2227('0x44')]['id']}})[_0x2227('0x24')](handleEntityNotFound(_0x482bf9,null))['then'](saveUpdates(_0x3155dd['body'],null))['then'](respondWithResult(_0x482bf9,null))[_0x2227('0x4a')](handleError(_0x482bf9,null));};exports[_0x2227('0x25')]=function(_0x5b0e5b,_0x3ab28b){return db[_0x2227('0x2d')][_0x2227('0x49')]({'where':{'id':_0x5b0e5b[_0x2227('0x44')]['id']}})['then'](handleEntityNotFound(_0x3ab28b,null))['then'](removeEntity(_0x3ab28b,null))[_0x2227('0x4a')](handleError(_0x3ab28b,null));};exports[_0x2227('0x4b')]=function(_0x225299,_0xc13872){return db['MailQueueReport'][_0x2227('0x4b')]()[_0x2227('0x24')](respondWithResult(_0xc13872,null))[_0x2227('0x4a')](handleError(_0xc13872,null));};
\ No newline at end of file
+var _0x5c3c=['findAll','rows','params','merge','catch','create','body','find','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','limit','count','offset','Content-Range','json','apply','reject','save','update','then','sendStatus','stack','name','send','index','map','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','options','MailQueueReport','includeAll','include'];(function(_0x3ab293,_0x2d162a){var _0x2744ec=function(_0x57d471){while(--_0x57d471){_0x3ab293['push'](_0x3ab293['shift']());}};_0x2744ec(++_0x2d162a);}(_0x5c3c,0x132));var _0xc5c3=function(_0x1b5aea,_0x3f04b7){_0x1b5aea=_0x1b5aea-0x0;var _0x15cfc6=_0x5c3c[_0x1b5aea];return _0x15cfc6;};'use strict';var emlformat=require(_0xc5c3('0x0'));var rimraf=require(_0xc5c3('0x1'));var zipdir=require(_0xc5c3('0x2'));var jsonpatch=require(_0xc5c3('0x3'));var rp=require('request-promise');var moment=require(_0xc5c3('0x4'));var BPromise=require(_0xc5c3('0x5'));var Mustache=require(_0xc5c3('0x6'));var util=require(_0xc5c3('0x7'));var path=require(_0xc5c3('0x8'));var sox=require(_0xc5c3('0x9'));var csv=require(_0xc5c3('0xa'));var ejs=require(_0xc5c3('0xb'));var fs=require('fs');var fs_extra=require(_0xc5c3('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc5c3('0xd'));var deskjs=require(_0xc5c3('0xe'));var toCsv=require('to-csv');var querystring=require(_0xc5c3('0xf'));var Papa=require(_0xc5c3('0x10'));var Redis=require('ioredis');var authService=require(_0xc5c3('0x11'));var qs=require(_0xc5c3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc5c3('0x13'));var logger=require(_0xc5c3('0x14'))(_0xc5c3('0x15'));var utils=require('../../config/utils');var config=require(_0xc5c3('0x16'));var licenseUtil=require(_0xc5c3('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b56e6,_0x44d2b9){_0x44d2b9=_0x44d2b9||0xcc;return function(_0x3f0f45){if(_0x3f0f45){return _0x2b56e6['sendStatus'](_0x44d2b9);}return _0x2b56e6[_0xc5c3('0x18')](_0x44d2b9)[_0xc5c3('0x19')]();};}function respondWithResult(_0x1488ab,_0x13a740){_0x13a740=_0x13a740||0xc8;return function(_0xc8a636){if(_0xc8a636){return _0x1488ab['status'](_0x13a740)['json'](_0xc8a636);}};}function respondWithFilteredResult(_0x4445ea,_0x577e1a){return function(_0x1bae87){if(_0x1bae87){var _0xef8b21=typeof _0x577e1a['offset']==='undefined'&&typeof _0x577e1a[_0xc5c3('0x1a')]==='undefined';var _0xa9bc84=_0x1bae87[_0xc5c3('0x1b')];var _0x2ff158=_0xef8b21?0x0:_0x577e1a[_0xc5c3('0x1c')];var _0x28bae6=_0xef8b21?_0x1bae87['count']:_0x577e1a[_0xc5c3('0x1c')]+_0x577e1a[_0xc5c3('0x1a')];var _0x123dba;if(_0x28bae6>=_0xa9bc84){_0x28bae6=_0xa9bc84;_0x123dba=0xc8;}else{_0x123dba=0xce;}_0x4445ea[_0xc5c3('0x18')](_0x123dba);return _0x4445ea['set'](_0xc5c3('0x1d'),_0x2ff158+'-'+_0x28bae6+'/'+_0xa9bc84)[_0xc5c3('0x1e')](_0x1bae87);}return null;};}function patchUpdates(_0x3cc612){return function(_0x3ca20a){try{jsonpatch[_0xc5c3('0x1f')](_0x3ca20a,_0x3cc612,!![]);}catch(_0x564815){return BPromise[_0xc5c3('0x20')](_0x564815);}return _0x3ca20a[_0xc5c3('0x21')]();};}function saveUpdates(_0x370254,_0x2de266){return function(_0x1c5793){if(_0x1c5793){return _0x1c5793[_0xc5c3('0x22')](_0x370254)[_0xc5c3('0x23')](function(_0x5996a0){return _0x5996a0;});}return null;};}function removeEntity(_0x52d638,_0x45affe){return function(_0x38dd9e){if(_0x38dd9e){return _0x38dd9e['destroy']()['then'](function(){_0x52d638[_0xc5c3('0x18')](0xcc)[_0xc5c3('0x19')]();});}};}function handleEntityNotFound(_0x38a3df,_0x52e54a){return function(_0x4af067){if(!_0x4af067){_0x38a3df[_0xc5c3('0x24')](0x194);}return _0x4af067;};}function handleError(_0x22f607,_0x20c506){_0x20c506=_0x20c506||0x1f4;return function(_0x29791c){logger['error'](_0x29791c[_0xc5c3('0x25')]);if(_0x29791c['name']){delete _0x29791c[_0xc5c3('0x26')];}_0x22f607['status'](_0x20c506)[_0xc5c3('0x27')](_0x29791c);};}exports[_0xc5c3('0x28')]=function(_0x4269eb,_0x4773c5){var _0x15361c={},_0x2d07e1={},_0x35a397={'count':0x0,'rows':[]};var _0x4b5a0c=_[_0xc5c3('0x29')](db['MailQueueReport'][_0xc5c3('0x2a')],function(_0x43ebfc){return{'name':_0x43ebfc['fieldName'],'type':_0x43ebfc['type'][_0xc5c3('0x2b')]};});_0x2d07e1[_0xc5c3('0x2c')]=_[_0xc5c3('0x29')](_0x4b5a0c,_0xc5c3('0x26'));_0x2d07e1['query']=_[_0xc5c3('0x2d')](_0x4269eb[_0xc5c3('0x2e')]);_0x2d07e1[_0xc5c3('0x2f')]=_[_0xc5c3('0x30')](_0x2d07e1[_0xc5c3('0x2c')],_0x2d07e1[_0xc5c3('0x2e')]);_0x15361c[_0xc5c3('0x31')]=_[_0xc5c3('0x30')](_0x2d07e1[_0xc5c3('0x2c')],qs['fields'](_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x32')]));_0x15361c[_0xc5c3('0x31')]=_0x15361c[_0xc5c3('0x31')][_0xc5c3('0x33')]?_0x15361c[_0xc5c3('0x31')]:_0x2d07e1[_0xc5c3('0x2c')];if(!_0x4269eb['query']['hasOwnProperty'](_0xc5c3('0x34'))){_0x15361c['limit']=qs[_0xc5c3('0x1a')](_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x1a')]);_0x15361c[_0xc5c3('0x1c')]=qs[_0xc5c3('0x1c')](_0x4269eb['query'][_0xc5c3('0x1c')]);}_0x15361c[_0xc5c3('0x35')]=qs['sort'](_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x36')]);_0x15361c[_0xc5c3('0x37')]=qs[_0xc5c3('0x2f')](_[_0xc5c3('0x38')](_0x4269eb[_0xc5c3('0x2e')],_0x2d07e1[_0xc5c3('0x2f')]),_0x4b5a0c);if(_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x39')]){_0x15361c[_0xc5c3('0x37')]=_['merge'](_0x15361c[_0xc5c3('0x37')],{'$or':_['map'](_0x4b5a0c,function(_0x4fdbe6){if(_0x4fdbe6[_0xc5c3('0x3a')]!==_0xc5c3('0x3b')){var _0x1b546e={};_0x1b546e[_0x4fdbe6[_0xc5c3('0x26')]]={'$like':'%'+_0x4269eb[_0xc5c3('0x2e')]['filter']+'%'};return _0x1b546e;}})});}_0x15361c=_['merge']({},_0x15361c,_0x4269eb[_0xc5c3('0x3c')]);var _0xa7cb91={'where':_0x15361c['where']};return db[_0xc5c3('0x3d')]['count'](_0xa7cb91)[_0xc5c3('0x23')](function(_0x2dfd19){_0x35a397[_0xc5c3('0x1b')]=_0x2dfd19;if(_0x4269eb['query'][_0xc5c3('0x3e')]){_0x15361c[_0xc5c3('0x3f')]=[{'all':!![]}];}return db['MailQueueReport'][_0xc5c3('0x40')](_0x15361c);})['then'](function(_0x33936c){_0x35a397[_0xc5c3('0x41')]=_0x33936c;return _0x35a397;})['then'](respondWithFilteredResult(_0x4773c5,_0x15361c))['catch'](handleError(_0x4773c5,null));};exports['show']=function(_0xfb64bb,_0x2f02ab){var _0x49b1fc={'raw':!![],'where':{'id':_0xfb64bb[_0xc5c3('0x42')]['id']}},_0x1a8490={};_0x1a8490[_0xc5c3('0x2c')]=_[_0xc5c3('0x2d')](db['MailQueueReport'][_0xc5c3('0x2a')]);_0x1a8490['query']=_['keys'](_0xfb64bb[_0xc5c3('0x2e')]);_0x1a8490[_0xc5c3('0x2f')]=_['intersection'](_0x1a8490[_0xc5c3('0x2c')],_0x1a8490[_0xc5c3('0x2e')]);_0x49b1fc['attributes']=_[_0xc5c3('0x30')](_0x1a8490['model'],qs[_0xc5c3('0x32')](_0xfb64bb[_0xc5c3('0x2e')]['fields']));_0x49b1fc[_0xc5c3('0x31')]=_0x49b1fc['attributes'][_0xc5c3('0x33')]?_0x49b1fc[_0xc5c3('0x31')]:_0x1a8490['model'];if(_0xfb64bb[_0xc5c3('0x2e')][_0xc5c3('0x3e')]){_0x49b1fc[_0xc5c3('0x3f')]=[{'all':!![]}];}_0x49b1fc=_[_0xc5c3('0x43')]({},_0x49b1fc,_0xfb64bb[_0xc5c3('0x3c')]);return db[_0xc5c3('0x3d')]['find'](_0x49b1fc)[_0xc5c3('0x23')](handleEntityNotFound(_0x2f02ab,null))[_0xc5c3('0x23')](respondWithResult(_0x2f02ab,null))[_0xc5c3('0x44')](handleError(_0x2f02ab,null));};exports[_0xc5c3('0x45')]=function(_0x23002b,_0x4a7330){return db['MailQueueReport'][_0xc5c3('0x45')](_0x23002b[_0xc5c3('0x46')],{})[_0xc5c3('0x23')](respondWithResult(_0x4a7330,0xc9))['catch'](handleError(_0x4a7330,null));};exports[_0xc5c3('0x22')]=function(_0x65f720,_0x3a901f){if(_0x65f720[_0xc5c3('0x46')]['id']){delete _0x65f720[_0xc5c3('0x46')]['id'];}return db[_0xc5c3('0x3d')][_0xc5c3('0x47')]({'where':{'id':_0x65f720['params']['id']}})[_0xc5c3('0x23')](handleEntityNotFound(_0x3a901f,null))[_0xc5c3('0x23')](saveUpdates(_0x65f720[_0xc5c3('0x46')],null))['then'](respondWithResult(_0x3a901f,null))[_0xc5c3('0x44')](handleError(_0x3a901f,null));};exports[_0xc5c3('0x48')]=function(_0x3b1bc2,_0x103bde){return db[_0xc5c3('0x3d')]['find']({'where':{'id':_0x3b1bc2[_0xc5c3('0x42')]['id']}})['then'](handleEntityNotFound(_0x103bde,null))[_0xc5c3('0x23')](removeEntity(_0x103bde,null))['catch'](handleError(_0x103bde,null));};exports[_0xc5c3('0x49')]=function(_0x34a2c3,_0x4add6b){return db[_0xc5c3('0x3d')][_0xc5c3('0x49')]()['then'](respondWithResult(_0x4add6b,null))[_0xc5c3('0x44')](handleError(_0x4add6b,null));};
\ No newline at end of file
index f7aa608..6be543f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x889e=['api','bluebird','request-promise','path','rimraf','../../config/environment','exports','MailQueueReport','report_mail_queue','lodash','util'];(function(_0x5453c5,_0x344b1d){var _0x4135e4=function(_0x174cd7){while(--_0x174cd7){_0x5453c5['push'](_0x5453c5['shift']());}};_0x4135e4(++_0x344b1d);}(_0x889e,0x77));var _0xe889=function(_0x433be8,_0x2e0800){_0x433be8=_0x433be8-0x0;var _0x1f2525=_0x889e[_0x433be8];return _0x1f2525;};'use strict';var _=require(_0xe889('0x0'));var util=require(_0xe889('0x1'));var logger=require('../../config/logger')(_0xe889('0x2'));var moment=require('moment');var BPromise=require(_0xe889('0x3'));var rp=require(_0xe889('0x4'));var fs=require('fs');var path=require(_0xe889('0x5'));var rimraf=require(_0xe889('0x6'));var config=require(_0xe889('0x7'));var attributes=require('./mailQueueReport.attributes');module[_0xe889('0x8')]=function(_0x2f7b58,_0x51a440){return _0x2f7b58['define'](_0xe889('0x9'),attributes,{'tableName':_0xe889('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5b60=['path','rimraf','../../config/environment','exports','define','MailQueueReport','report_mail_queue','uniqueid','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x21abf7,_0x280b4f){var _0x527030=function(_0x5e50a2){while(--_0x5e50a2){_0x21abf7['push'](_0x21abf7['shift']());}};_0x527030(++_0x280b4f);}(_0x5b60,0x112));var _0x05b6=function(_0x494d1f,_0x3f72ff){_0x494d1f=_0x494d1f-0x0;var _0x457b6e=_0x5b60[_0x494d1f];return _0x457b6e;};'use strict';var _=require(_0x05b6('0x0'));var util=require(_0x05b6('0x1'));var logger=require(_0x05b6('0x2'))(_0x05b6('0x3'));var moment=require(_0x05b6('0x4'));var BPromise=require('bluebird');var rp=require(_0x05b6('0x5'));var fs=require('fs');var path=require(_0x05b6('0x6'));var rimraf=require(_0x05b6('0x7'));var config=require(_0x05b6('0x8'));var attributes=require('./mailQueueReport.attributes');module[_0x05b6('0x9')]=function(_0x4fcfd3,_0x3caecd){return _0x4fcfd3[_0x05b6('0xa')](_0x05b6('0xb'),attributes,{'tableName':_0x05b6('0xc'),'paranoid':![],'indexes':[{'name':_0x05b6('0xd'),'fields':[_0x05b6('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index fd1f45a..ea7ed63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['create','body','options','raw','update','where','attributes','limit','UpdateMailQueueReport','stringify','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','CreateMailQueueReport','MailQueueReport'];(function(_0x5216e9,_0x52fce6){var _0x17c5d7=function(_0x528da0){while(--_0x528da0){_0x5216e9['push'](_0x5216e9['shift']());}};_0x17c5d7(++_0x52fce6);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0xc4aa[_0x273c39];return _0x46d6b5;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}exports[_0xac4a('0x15')]=function(_0x28e304){var _0x44ec59=this;return new Promise(function(_0x546c5d,_0x5ac21e){return db[_0xac4a('0x16')][_0xac4a('0x17')](_0x28e304[_0xac4a('0x18')],{'raw':_0x28e304['options']?_0x28e304[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![]})[_0xac4a('0xc')](function(_0x3a3cdb){logger[_0xac4a('0x13')](_0xac4a('0x15'),_0x28e304);logger[_0xac4a('0xf')](_0xac4a('0x15'),_0x28e304,JSON['stringify'](_0x3a3cdb));_0x546c5d(_0x3a3cdb);})[_0xac4a('0x14')](function(_0x3204ad){logger['error'](_0xac4a('0x15'),_0x3204ad[_0xac4a('0x12')],_0x28e304);_0x5ac21e(_0x44ec59[_0xac4a('0x10')](0x1f4,_0x3204ad[_0xac4a('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x1b7998){var _0x2503d8=this;return new Promise(function(_0x15435c,_0x412494){return db[_0xac4a('0x16')][_0xac4a('0x1b')](_0x1b7998[_0xac4a('0x18')],{'raw':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1c')]||null:null,'attributes':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1d')]||null:null,'limit':_0x1b7998['options']?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1e')]||null:null})[_0xac4a('0xc')](function(_0x2772fe){logger[_0xac4a('0x13')]('UpdateMailQueueReport',_0x1b7998);logger['debug'](_0xac4a('0x1f'),_0x1b7998,JSON[_0xac4a('0x20')](_0x2772fe));_0x15435c(_0x2772fe);})[_0xac4a('0x14')](function(_0x546b65){logger['error'](_0xac4a('0x1f'),_0x546b65[_0xac4a('0x12')],_0x1b7998);_0x412494(_0x2503d8[_0xac4a('0x10')](0x1f4,_0x546b65[_0xac4a('0x12')]));});});};
\ No newline at end of file
+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(_0x34647a,_0x556406){var _0x20aa33=function(_0x3d42bf){while(--_0x3d42bf){_0x34647a['push'](_0x34647a['shift']());}};_0x20aa33(++_0x556406);}(_0x7a54,0x106));var _0x47a5=function(_0x1aa191,_0x126c8f){_0x1aa191=_0x1aa191-0x0;var _0xe4dc5f=_0x7a54[_0x1aa191];return _0xe4dc5f;};'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 6d1e260..5677f7e 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(_0x3f1e52,_0x176277){var _0x268502=function(_0x3762d8){while(--_0x3762d8){_0x3f1e52['push'](_0x3f1e52['shift']());}};_0x268502(++_0x176277);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3e21f4,_0x43d310){_0x3e21f4=_0x3e21f4-0x0;var _0x40fc49=_0xcb91[_0x3e21f4];return _0x40fc49;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x5e4b69,_0x21051a){var _0x1f9510=function(_0x5e179e){while(--_0x5e179e){_0x5e4b69['push'](_0x5e4b69['shift']());}};_0x1f9510(++_0x21051a);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2b1551,_0x1776fe){_0x2b1551=_0x2b1551-0x0;var _0x2fc2a1=_0xcb91[_0x2b1551];return _0x2fc2a1;};'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 ee00c3f..f634a54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x073e=['sequelize','exports','STRING','INTEGER','BOOLEAN'];(function(_0x13722d,_0x275f21){var _0x3362c4=function(_0x2dcd48){while(--_0x2dcd48){_0x13722d['push'](_0x13722d['shift']());}};_0x3362c4(++_0x275f21);}(_0x073e,0x181));var _0xe073=function(_0xbf4ddf,_0x66b3cb){_0xbf4ddf=_0xbf4ddf-0x0;var _0x3cb273=_0x073e[_0xbf4ddf];return _0x3cb273;};'use strict';var Sequelize=require(_0xe073('0x0'));module[_0xe073('0x1')]={'description':{'type':Sequelize[_0xe073('0x2')]},'host':{'type':Sequelize[_0xe073('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xe073('0x3')]},'tls':{'type':Sequelize[_0xe073('0x4')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xe073('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0xe073('0x2')]}};
\ No newline at end of file
+var _0xe511=['INTEGER','sequelize','exports','STRING','BOOLEAN','INBOX'];(function(_0x47a3d6,_0x48c3ba){var _0x975fa=function(_0x5ce2c3){while(--_0x5ce2c3){_0x47a3d6['push'](_0x47a3d6['shift']());}};_0x975fa(++_0x48c3ba);}(_0xe511,0x16f));var _0x1e51=function(_0xe3f0b0,_0x43edc9){_0xe3f0b0=_0xe3f0b0-0x0;var _0x3a839e=_0xe511[_0xe3f0b0];return _0x3a839e;};'use strict';var Sequelize=require(_0x1e51('0x0'));module[_0x1e51('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x1e51('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0x1e51('0x2')]},'password':{'type':Sequelize[_0x1e51('0x2')]},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize[_0x1e51('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x1e51('0x2')],'defaultValue':_0x1e51('0x4')},'connTimeout':{'type':Sequelize[_0x1e51('0x5')],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0x1e51('0x2')]}};
\ No newline at end of file
index eb89558..78db5ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7800=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','lodash','util','../../config/logger','api'];(function(_0x45f951,_0x2750c8){var _0x24756c=function(_0x31c931){while(--_0x31c931){_0x45f951['push'](_0x45f951['shift']());}};_0x24756c(++_0x2750c8);}(_0x7800,0xb2));var _0x0780=function(_0x1b1517,_0x5d2916){_0x1b1517=_0x1b1517-0x0;var _0x40f7c9=_0x7800[_0x1b1517];return _0x40f7c9;};'use strict';var _=require(_0x0780('0x0'));var util=require(_0x0780('0x1'));var logger=require(_0x0780('0x2'))(_0x0780('0x3'));var moment=require(_0x0780('0x4'));var BPromise=require(_0x0780('0x5'));var rp=require(_0x0780('0x6'));var fs=require('fs');var path=require(_0x0780('0x7'));var rimraf=require(_0x0780('0x8'));var config=require(_0x0780('0x9'));var attributes=require(_0x0780('0xa'));module[_0x0780('0xb')]=function(_0x1b16b0,_0x375e81){return _0x1b16b0[_0x0780('0xc')]('MailServerIn',attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x18a2=['define','MailServerIn','mail_servers_in','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x39f777,_0x2df0ad){var _0x2877e5=function(_0x5d3764){while(--_0x5d3764){_0x39f777['push'](_0x39f777['shift']());}};_0x2877e5(++_0x2df0ad);}(_0x18a2,0x1a5));var _0x218a=function(_0x560bbd,_0x3e48){_0x560bbd=_0x560bbd-0x0;var _0x1214f1=_0x18a2[_0x560bbd];return _0x1214f1;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x218a('0x0'))(_0x218a('0x1'));var moment=require('moment');var BPromise=require(_0x218a('0x2'));var rp=require(_0x218a('0x3'));var fs=require('fs');var path=require(_0x218a('0x4'));var rimraf=require(_0x218a('0x5'));var config=require(_0x218a('0x6'));var attributes=require('./mailServerIn.attributes');module[_0x218a('0x7')]=function(_0x5ecc53,_0x59d52b){return _0x5ecc53[_0x218a('0x8')](_0x218a('0x9'),attributes,{'tableName':_0x218a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2cf4f43..9c0e52a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94dc=['attributes','limit','include','map','model','GetMailServerIn','stringify','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','findAll','options','raw','where'];(function(_0x8a969d,_0x339d9f){var _0x1d8dc7=function(_0x283ec0){while(--_0x283ec0){_0x8a969d['push'](_0x8a969d['shift']());}};_0x1d8dc7(++_0x339d9f);}(_0x94dc,0xb1));var _0xc94d=function(_0x1c41af,_0x36baf7){_0x1c41af=_0x1c41af-0x0;var _0x2f40a8=_0x94dc[_0x1c41af];return _0x2f40a8;};'use strict';var _=require(_0xc94d('0x0'));var util=require('util');var moment=require(_0xc94d('0x1'));var BPromise=require('bluebird');var rs=require(_0xc94d('0x2'));var fs=require('fs');var Redis=require(_0xc94d('0x3'));var db=require(_0xc94d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xc94d('0x5'))(_0xc94d('0x6'));var config=require(_0xc94d('0x7'));var jayson=require(_0xc94d('0x8'));var client=jayson[_0xc94d('0x9')][_0xc94d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xb7275c,_0x5776ab,_0x2f9757){return new BPromise(function(_0xbe5904,_0x15265c){return client[_0xc94d('0xb')](_0xb7275c,_0x2f9757)[_0xc94d('0xc')](function(_0x579245){logger[_0xc94d('0xd')](_0xc94d('0xe'),_0x5776ab,_0xc94d('0xf'));logger[_0xc94d('0x10')](_0xc94d('0x11'),_0x5776ab,_0xc94d('0xf'),JSON['stringify'](_0x579245));if(_0x579245[_0xc94d('0x12')]){if(_0x579245[_0xc94d('0x12')][_0xc94d('0x13')]===0x1f4){logger[_0xc94d('0x12')]('MailServerIn,\x20%s,\x20%s',_0x5776ab,_0x579245['error']['message']);return _0x15265c(_0x579245[_0xc94d('0x12')][_0xc94d('0x14')]);}logger[_0xc94d('0x12')](_0xc94d('0xe'),_0x5776ab,_0x579245[_0xc94d('0x12')][_0xc94d('0x14')]);return _0xbe5904(_0x579245[_0xc94d('0x12')][_0xc94d('0x14')]);}else{logger[_0xc94d('0xd')](_0xc94d('0xe'),_0x5776ab,_0xc94d('0xf'));_0xbe5904(_0x579245[_0xc94d('0x15')][_0xc94d('0x14')]);}})[_0xc94d('0x16')](function(_0x19508d){logger['error']('MailServerIn,\x20%s,\x20%s',_0x5776ab,_0x19508d);_0x15265c(_0x19508d);});});}exports['GetMailServerIn']=function(_0x48b879){var _0x345259=this;return new Promise(function(_0x4784a2,_0x4f7287){return db['MailServerIn'][_0xc94d('0x17')]({'raw':_0x48b879[_0xc94d('0x18')]?_0x48b879['options'][_0xc94d('0x19')]===undefined?!![]:![]:!![],'where':_0x48b879[_0xc94d('0x18')]?_0x48b879[_0xc94d('0x18')][_0xc94d('0x1a')]||null:null,'attributes':_0x48b879[_0xc94d('0x18')]?_0x48b879[_0xc94d('0x18')][_0xc94d('0x1b')]||null:null,'limit':_0x48b879[_0xc94d('0x18')]?_0x48b879[_0xc94d('0x18')][_0xc94d('0x1c')]||null:null,'include':_0x48b879['options']?_0x48b879[_0xc94d('0x18')][_0xc94d('0x1d')]?_[_0xc94d('0x1e')](_0x48b879[_0xc94d('0x18')][_0xc94d('0x1d')],function(_0x557bfb){return{'model':db[_0x557bfb['model']],'as':_0x557bfb['as'],'attributes':_0x557bfb['attributes'],'include':_0x557bfb[_0xc94d('0x1d')]?_[_0xc94d('0x1e')](_0x557bfb[_0xc94d('0x1d')],function(_0x1de964){return{'model':db[_0x1de964['model']],'as':_0x1de964['as'],'attributes':_0x1de964['attributes'],'include':_0x1de964[_0xc94d('0x1d')]?_['map'](_0x1de964[_0xc94d('0x1d')],function(_0x362ff4){return{'model':db[_0x362ff4[_0xc94d('0x1f')]],'as':_0x362ff4['as'],'attributes':_0x362ff4['attributes']};}):[]};}):[]};}):[]:[]})[_0xc94d('0xc')](function(_0x196b59){logger[_0xc94d('0xd')](_0xc94d('0x20'),_0x48b879);logger[_0xc94d('0x10')]('GetMailServerIn',_0x48b879,JSON[_0xc94d('0x21')](_0x196b59));_0x4784a2(_0x196b59);})[_0xc94d('0x16')](function(_0x3a2342){logger[_0xc94d('0x12')](_0xc94d('0x20'),_0x3a2342['message'],_0x48b879);_0x4f7287(_0x345259[_0xc94d('0x12')](0x1f4,_0x3a2342[_0xc94d('0x14')]));});});};
\ No newline at end of file
+var _0xd73f=['rpc','../../config/environment','jayson/promise','client','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','MailServerIn','options','raw','attributes','include','map','model','GetMailServerIn','catch','util','moment','bluebird','ioredis','../../config/utils','../../config/logger'];(function(_0x4a3898,_0x4c9853){var _0x25ceb0=function(_0x528b6d){while(--_0x528b6d){_0x4a3898['push'](_0x4a3898['shift']());}};_0x25ceb0(++_0x4c9853);}(_0xd73f,0x90));var _0xfd73=function(_0x3110ab,_0x5b6a7a){_0x3110ab=_0x3110ab-0x0;var _0x24c310=_0xd73f[_0x3110ab];return _0x24c310;};'use strict';var _=require('lodash');var util=require(_0xfd73('0x0'));var moment=require(_0xfd73('0x1'));var BPromise=require(_0xfd73('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfd73('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xfd73('0x4'));var logger=require(_0xfd73('0x5'))(_0xfd73('0x6'));var config=require(_0xfd73('0x7'));var jayson=require(_0xfd73('0x8'));var client=jayson[_0xfd73('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2b000b,_0x540c76,_0x2edf9e){return new BPromise(function(_0xf40b11,_0x2c8cc4){return client[_0xfd73('0xa')](_0x2b000b,_0x2edf9e)[_0xfd73('0xb')](function(_0x5162a5){logger[_0xfd73('0xc')](_0xfd73('0xd'),_0x540c76,_0xfd73('0xe'));logger['debug'](_0xfd73('0xf'),_0x540c76,'request\x20sent',JSON[_0xfd73('0x10')](_0x5162a5));if(_0x5162a5[_0xfd73('0x11')]){if(_0x5162a5[_0xfd73('0x11')][_0xfd73('0x12')]===0x1f4){logger[_0xfd73('0x11')]('MailServerIn,\x20%s,\x20%s',_0x540c76,_0x5162a5[_0xfd73('0x11')]['message']);return _0x2c8cc4(_0x5162a5[_0xfd73('0x11')][_0xfd73('0x13')]);}logger[_0xfd73('0x11')](_0xfd73('0xd'),_0x540c76,_0x5162a5[_0xfd73('0x11')][_0xfd73('0x13')]);return _0xf40b11(_0x5162a5[_0xfd73('0x11')][_0xfd73('0x13')]);}else{logger['info'](_0xfd73('0xd'),_0x540c76,_0xfd73('0xe'));_0xf40b11(_0x5162a5[_0xfd73('0x14')][_0xfd73('0x13')]);}})['catch'](function(_0x23032){logger['error'](_0xfd73('0xd'),_0x540c76,_0x23032);_0x2c8cc4(_0x23032);});});}exports['GetMailServerIn']=function(_0x41b535){var _0x3ce67f=this;return new Promise(function(_0x77e96b,_0x5426cb){return db[_0xfd73('0x15')]['findAll']({'raw':_0x41b535['options']?_0x41b535[_0xfd73('0x16')][_0xfd73('0x17')]===undefined?!![]:![]:!![],'where':_0x41b535[_0xfd73('0x16')]?_0x41b535[_0xfd73('0x16')]['where']||null:null,'attributes':_0x41b535[_0xfd73('0x16')]?_0x41b535[_0xfd73('0x16')][_0xfd73('0x18')]||null:null,'limit':_0x41b535[_0xfd73('0x16')]?_0x41b535[_0xfd73('0x16')]['limit']||null:null,'include':_0x41b535[_0xfd73('0x16')]?_0x41b535[_0xfd73('0x16')][_0xfd73('0x19')]?_[_0xfd73('0x1a')](_0x41b535[_0xfd73('0x16')][_0xfd73('0x19')],function(_0x310442){return{'model':db[_0x310442[_0xfd73('0x1b')]],'as':_0x310442['as'],'attributes':_0x310442[_0xfd73('0x18')],'include':_0x310442[_0xfd73('0x19')]?_['map'](_0x310442[_0xfd73('0x19')],function(_0x3ee2ff){return{'model':db[_0x3ee2ff[_0xfd73('0x1b')]],'as':_0x3ee2ff['as'],'attributes':_0x3ee2ff['attributes'],'include':_0x3ee2ff[_0xfd73('0x19')]?_[_0xfd73('0x1a')](_0x3ee2ff[_0xfd73('0x19')],function(_0x228a46){return{'model':db[_0x228a46[_0xfd73('0x1b')]],'as':_0x228a46['as'],'attributes':_0x228a46[_0xfd73('0x18')]};}):[]};}):[]};}):[]:[]})[_0xfd73('0xb')](function(_0x2e67a5){logger['info'](_0xfd73('0x1c'),_0x41b535);logger['debug'](_0xfd73('0x1c'),_0x41b535,JSON[_0xfd73('0x10')](_0x2e67a5));_0x77e96b(_0x2e67a5);})[_0xfd73('0x1d')](function(_0x4cf91e){logger[_0xfd73('0x11')](_0xfd73('0x1c'),_0x4cf91e[_0xfd73('0x13')],_0x41b535);_0x5426cb(_0x3ce67f['error'](0x1f4,_0x4cf91e[_0xfd73('0x13')]));});});};
\ No newline at end of file
index 2525c03..6cb7b45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
+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(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x7a54,0x106));var _0x47a5=function(_0x1cb89d,_0x3df03b){_0x1cb89d=_0x1cb89d-0x0;var _0x227272=_0x7a54[_0x1cb89d];return _0x227272;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
index bcc91f4..d278fe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52c2=['exports','STRING','INTEGER','BOOLEAN','sequelize'];(function(_0x50aa2e,_0xfbd6f0){var _0x5e07f0=function(_0x3ed540){while(--_0x3ed540){_0x50aa2e['push'](_0x50aa2e['shift']());}};_0x5e07f0(++_0xfbd6f0);}(_0x52c2,0x1b2));var _0x252c=function(_0x266a85,_0x28d7c0){_0x266a85=_0x266a85-0x0;var _0x16e9e6=_0x52c2[_0x266a85];return _0x16e9e6;};'use strict';var Sequelize=require(_0x252c('0x0'));module[_0x252c('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x252c('0x2')]},'user':{'type':Sequelize[_0x252c('0x2')]},'pass':{'type':Sequelize[_0x252c('0x2')]},'port':{'type':Sequelize[_0x252c('0x3')]},'secure':{'type':Sequelize[_0x252c('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0x252c('0x2')]},'authentication':{'type':Sequelize[_0x252c('0x4')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xe59d=['BOOLEAN','STRING','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe59d,0x97));var _0xde59=function(_0x2142c8,_0x3001eb){_0x2142c8=_0x2142c8-0x0;var _0x4286e9=_0xe59d[_0x2142c8];return _0x4286e9;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xde59('0x0')]},'user':{'type':Sequelize[_0xde59('0x0')]},'pass':{'type':Sequelize[_0xde59('0x0')]},'port':{'type':Sequelize[_0xde59('0x1')]},'secure':{'type':Sequelize[_0xde59('0x2')],'defaultValue':![]},'service':{'type':Sequelize[_0xde59('0x0')]},'authentication':{'type':Sequelize[_0xde59('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index d1b304e..f8573fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9312=['lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','MailServerOut','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','params','rawAttributes','find','catch','create','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','to-csv'];(function(_0x315aea,_0x318a80){var _0x4a4bdb=function(_0x7c049c){while(--_0x7c049c){_0x315aea['push'](_0x315aea['shift']());}};_0x4a4bdb(++_0x318a80);}(_0x9312,0x90));var _0x2931=function(_0x21353c,_0x2ea587){_0x21353c=_0x21353c-0x0;var _0xa99120=_0x9312[_0x21353c];return _0xa99120;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2931('0x0'));var zipdir=require(_0x2931('0x1'));var jsonpatch=require(_0x2931('0x2'));var rp=require('request-promise');var moment=require(_0x2931('0x3'));var BPromise=require(_0x2931('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x2931('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2931('0x6'));var squel=require(_0x2931('0x7'));var crypto=require(_0x2931('0x8'));var jsforce=require(_0x2931('0x9'));var deskjs=require(_0x2931('0xa'));var toCsv=require(_0x2931('0x5'));var querystring=require('querystring');var Papa=require(_0x2931('0xb'));var Redis=require(_0x2931('0xc'));var authService=require(_0x2931('0xd'));var qs=require(_0x2931('0xe'));var as=require(_0x2931('0xf'));var hardwareService=require(_0x2931('0x10'));var logger=require(_0x2931('0x11'))(_0x2931('0x12'));var utils=require('../../config/utils');var config=require(_0x2931('0x13'));var licenseUtil=require(_0x2931('0x14'));var db=require(_0x2931('0x15'))['db'];function respondWithStatusCode(_0x39ae85,_0x47215e){_0x47215e=_0x47215e||0xcc;return function(_0x344967){if(_0x344967){return _0x39ae85[_0x2931('0x16')](_0x47215e);}return _0x39ae85[_0x2931('0x17')](_0x47215e)[_0x2931('0x18')]();};}function respondWithResult(_0x3d94c4,_0x2a0788){_0x2a0788=_0x2a0788||0xc8;return function(_0x13fb50){if(_0x13fb50){return _0x3d94c4[_0x2931('0x17')](_0x2a0788)['json'](_0x13fb50);}};}function respondWithFilteredResult(_0x392030,_0xe7657){return function(_0x1d5807){if(_0x1d5807){var _0x21bdd7=typeof _0xe7657['offset']===_0x2931('0x19')&&typeof _0xe7657['limit']==='undefined';var _0x3a73a3=_0x1d5807[_0x2931('0x1a')];var _0x38bcb9=_0x21bdd7?0x0:_0xe7657[_0x2931('0x1b')];var _0x4dbe09=_0x21bdd7?_0x1d5807[_0x2931('0x1a')]:_0xe7657[_0x2931('0x1b')]+_0xe7657[_0x2931('0x1c')];var _0x18d6e7;if(_0x4dbe09>=_0x3a73a3){_0x4dbe09=_0x3a73a3;_0x18d6e7=0xc8;}else{_0x18d6e7=0xce;}_0x392030[_0x2931('0x17')](_0x18d6e7);return _0x392030[_0x2931('0x1d')](_0x2931('0x1e'),_0x38bcb9+'-'+_0x4dbe09+'/'+_0x3a73a3)[_0x2931('0x1f')](_0x1d5807);}return null;};}function patchUpdates(_0x2cfdad){return function(_0xfcea49){try{jsonpatch[_0x2931('0x20')](_0xfcea49,_0x2cfdad,!![]);}catch(_0x41f9c2){return BPromise[_0x2931('0x21')](_0x41f9c2);}return _0xfcea49[_0x2931('0x22')]();};}function saveUpdates(_0x3bc20f,_0x428b9e){return function(_0x2c9105){if(_0x2c9105){return _0x2c9105[_0x2931('0x23')](_0x3bc20f)[_0x2931('0x24')](function(_0x570e0f){return _0x570e0f;});}return null;};}function removeEntity(_0x257b24,_0xda14c9){return function(_0x1ee0c3){if(_0x1ee0c3){return _0x1ee0c3[_0x2931('0x25')]()['then'](function(){_0x257b24[_0x2931('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x232aa9,_0x32105c){return function(_0x3b2da6){if(!_0x3b2da6){_0x232aa9[_0x2931('0x16')](0x194);}return _0x3b2da6;};}function handleError(_0x513f64,_0x227f4d){_0x227f4d=_0x227f4d||0x1f4;return function(_0x321730){logger[_0x2931('0x26')](_0x321730[_0x2931('0x27')]);if(_0x321730['name']){delete _0x321730[_0x2931('0x28')];}_0x513f64['status'](_0x227f4d)[_0x2931('0x29')](_0x321730);};}exports[_0x2931('0x2a')]=function(_0x3b57cc,_0x50fc36){var _0x147dc9={},_0x297fc1={},_0x6f48b1={'count':0x0,'rows':[]};var _0x2ac68e=_[_0x2931('0x2b')](db[_0x2931('0x2c')]['rawAttributes'],function(_0x55ba94){return{'name':_0x55ba94[_0x2931('0x2d')],'type':_0x55ba94[_0x2931('0x2e')][_0x2931('0x2f')]};});_0x297fc1[_0x2931('0x30')]=_[_0x2931('0x2b')](_0x2ac68e,_0x2931('0x28'));_0x297fc1[_0x2931('0x31')]=_[_0x2931('0x32')](_0x3b57cc[_0x2931('0x31')]);_0x297fc1[_0x2931('0x33')]=_[_0x2931('0x34')](_0x297fc1[_0x2931('0x30')],_0x297fc1['query']);_0x147dc9[_0x2931('0x35')]=_['intersection'](_0x297fc1['model'],qs[_0x2931('0x36')](_0x3b57cc[_0x2931('0x31')][_0x2931('0x36')]));_0x147dc9[_0x2931('0x35')]=_0x147dc9[_0x2931('0x35')][_0x2931('0x37')]?_0x147dc9[_0x2931('0x35')]:_0x297fc1[_0x2931('0x30')];if(!_0x3b57cc[_0x2931('0x31')][_0x2931('0x38')](_0x2931('0x39'))){_0x147dc9[_0x2931('0x1c')]=qs[_0x2931('0x1c')](_0x3b57cc[_0x2931('0x31')]['limit']);_0x147dc9[_0x2931('0x1b')]=qs[_0x2931('0x1b')](_0x3b57cc['query'][_0x2931('0x1b')]);}_0x147dc9[_0x2931('0x3a')]=qs[_0x2931('0x3b')](_0x3b57cc[_0x2931('0x31')][_0x2931('0x3b')]);_0x147dc9[_0x2931('0x3c')]=qs[_0x2931('0x33')](_[_0x2931('0x3d')](_0x3b57cc[_0x2931('0x31')],_0x297fc1[_0x2931('0x33')]),_0x2ac68e);if(_0x3b57cc[_0x2931('0x31')][_0x2931('0x3e')]){_0x147dc9[_0x2931('0x3c')]=_['merge'](_0x147dc9[_0x2931('0x3c')],{'$or':_[_0x2931('0x2b')](_0x2ac68e,function(_0x249346){if(_0x249346[_0x2931('0x2e')]!==_0x2931('0x3f')){var _0x48903d={};_0x48903d[_0x249346[_0x2931('0x28')]]={'$like':'%'+_0x3b57cc[_0x2931('0x31')][_0x2931('0x3e')]+'%'};return _0x48903d;}})});}_0x147dc9=_[_0x2931('0x40')]({},_0x147dc9,_0x3b57cc['options']);var _0x498a52={'where':_0x147dc9['where']};return db[_0x2931('0x2c')][_0x2931('0x1a')](_0x498a52)[_0x2931('0x24')](function(_0x40d3f2){_0x6f48b1['count']=_0x40d3f2;if(_0x3b57cc['query'][_0x2931('0x41')]){_0x147dc9[_0x2931('0x42')]=[{'all':!![]}];}return db[_0x2931('0x2c')][_0x2931('0x43')](_0x147dc9);})[_0x2931('0x24')](function(_0xa0eaa8){_0x6f48b1[_0x2931('0x44')]=_0xa0eaa8;return _0x6f48b1;})[_0x2931('0x24')](respondWithFilteredResult(_0x50fc36,_0x147dc9))['catch'](handleError(_0x50fc36,null));};exports['show']=function(_0xf4fb49,_0x4457ec){var _0x5addd9={'raw':!![],'where':{'id':_0xf4fb49[_0x2931('0x45')]['id']}},_0x588a52={};_0x588a52['model']=_[_0x2931('0x32')](db['MailServerOut'][_0x2931('0x46')]);_0x588a52[_0x2931('0x31')]=_[_0x2931('0x32')](_0xf4fb49['query']);_0x588a52[_0x2931('0x33')]=_[_0x2931('0x34')](_0x588a52['model'],_0x588a52['query']);_0x5addd9[_0x2931('0x35')]=_[_0x2931('0x34')](_0x588a52['model'],qs[_0x2931('0x36')](_0xf4fb49[_0x2931('0x31')]['fields']));_0x5addd9['attributes']=_0x5addd9['attributes'][_0x2931('0x37')]?_0x5addd9[_0x2931('0x35')]:_0x588a52[_0x2931('0x30')];if(_0xf4fb49[_0x2931('0x31')][_0x2931('0x41')]){_0x5addd9[_0x2931('0x42')]=[{'all':!![]}];}_0x5addd9=_[_0x2931('0x40')]({},_0x5addd9,_0xf4fb49['options']);return db[_0x2931('0x2c')][_0x2931('0x47')](_0x5addd9)['then'](handleEntityNotFound(_0x4457ec,null))[_0x2931('0x24')](respondWithResult(_0x4457ec,null))[_0x2931('0x48')](handleError(_0x4457ec,null));};exports['create']=function(_0x135d47,_0x36b46e){return db[_0x2931('0x2c')][_0x2931('0x49')](_0x135d47[_0x2931('0x4a')],{})[_0x2931('0x24')](respondWithResult(_0x36b46e,0xc9))['catch'](handleError(_0x36b46e,null));};exports[_0x2931('0x23')]=function(_0x53fe42,_0x3e6475){if(_0x53fe42[_0x2931('0x4a')]['id']){delete _0x53fe42[_0x2931('0x4a')]['id'];}return db[_0x2931('0x2c')][_0x2931('0x47')]({'where':{'id':_0x53fe42[_0x2931('0x45')]['id']}})[_0x2931('0x24')](handleEntityNotFound(_0x3e6475,null))[_0x2931('0x24')](saveUpdates(_0x53fe42[_0x2931('0x4a')],null))[_0x2931('0x24')](respondWithResult(_0x3e6475,null))[_0x2931('0x48')](handleError(_0x3e6475,null));};exports['destroy']=function(_0x594496,_0x8375f0){return db['MailServerOut']['find']({'where':{'id':_0x594496[_0x2931('0x45')]['id']}})[_0x2931('0x24')](handleEntityNotFound(_0x8375f0,null))['then'](removeEntity(_0x8375f0,null))[_0x2931('0x48')](handleError(_0x8375f0,null));};
\ No newline at end of file
+var _0x3ade=['params','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','name','send','index','map','MailServerOut','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','rows','catch','show','includeAll','find','create','body','destroy'];(function(_0x5ba085,_0x33bb9a){var _0x5efc82=function(_0x586799){while(--_0x586799){_0x5ba085['push'](_0x5ba085['shift']());}};_0x5efc82(++_0x33bb9a);}(_0x3ade,0x131));var _0xe3ad=function(_0x29cfba,_0x28c40f){_0x29cfba=_0x29cfba-0x0;var _0x1f694c=_0x3ade[_0x29cfba];return _0x1f694c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe3ad('0x0'));var zipdir=require(_0xe3ad('0x1'));var jsonpatch=require(_0xe3ad('0x2'));var rp=require('request-promise');var moment=require(_0xe3ad('0x3'));var BPromise=require(_0xe3ad('0x4'));var Mustache=require(_0xe3ad('0x5'));var util=require(_0xe3ad('0x6'));var path=require(_0xe3ad('0x7'));var sox=require(_0xe3ad('0x8'));var csv=require(_0xe3ad('0x9'));var ejs=require(_0xe3ad('0xa'));var fs=require('fs');var fs_extra=require(_0xe3ad('0xb'));var _=require(_0xe3ad('0xc'));var squel=require(_0xe3ad('0xd'));var crypto=require(_0xe3ad('0xe'));var jsforce=require(_0xe3ad('0xf'));var deskjs=require(_0xe3ad('0x10'));var toCsv=require(_0xe3ad('0x9'));var querystring=require(_0xe3ad('0x11'));var Papa=require(_0xe3ad('0x12'));var Redis=require(_0xe3ad('0x13'));var authService=require(_0xe3ad('0x14'));var qs=require(_0xe3ad('0x15'));var as=require(_0xe3ad('0x16'));var hardwareService=require(_0xe3ad('0x17'));var logger=require('../../config/logger')(_0xe3ad('0x18'));var utils=require(_0xe3ad('0x19'));var config=require(_0xe3ad('0x1a'));var licenseUtil=require(_0xe3ad('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x503417,_0x105861){_0x105861=_0x105861||0xcc;return function(_0x24ff1a){if(_0x24ff1a){return _0x503417[_0xe3ad('0x1c')](_0x105861);}return _0x503417[_0xe3ad('0x1d')](_0x105861)[_0xe3ad('0x1e')]();};}function respondWithResult(_0x21b8ae,_0x52cb6a){_0x52cb6a=_0x52cb6a||0xc8;return function(_0x44b3e9){if(_0x44b3e9){return _0x21b8ae['status'](_0x52cb6a)[_0xe3ad('0x1f')](_0x44b3e9);}};}function respondWithFilteredResult(_0x148510,_0x452e35){return function(_0x12e4e2){if(_0x12e4e2){var _0xeaed83=typeof _0x452e35[_0xe3ad('0x20')]===_0xe3ad('0x21')&&typeof _0x452e35[_0xe3ad('0x22')]==='undefined';var _0x9a48c1=_0x12e4e2['count'];var _0x40f07b=_0xeaed83?0x0:_0x452e35[_0xe3ad('0x20')];var _0x31170a=_0xeaed83?_0x12e4e2[_0xe3ad('0x23')]:_0x452e35[_0xe3ad('0x20')]+_0x452e35[_0xe3ad('0x22')];var _0x1d7dcb;if(_0x31170a>=_0x9a48c1){_0x31170a=_0x9a48c1;_0x1d7dcb=0xc8;}else{_0x1d7dcb=0xce;}_0x148510[_0xe3ad('0x1d')](_0x1d7dcb);return _0x148510['set'](_0xe3ad('0x24'),_0x40f07b+'-'+_0x31170a+'/'+_0x9a48c1)[_0xe3ad('0x1f')](_0x12e4e2);}return null;};}function patchUpdates(_0x3f592f){return function(_0x5514fb){try{jsonpatch['apply'](_0x5514fb,_0x3f592f,!![]);}catch(_0x53d54d){return BPromise[_0xe3ad('0x25')](_0x53d54d);}return _0x5514fb[_0xe3ad('0x26')]();};}function saveUpdates(_0x2caa1f,_0x148e04){return function(_0x4f73c2){if(_0x4f73c2){return _0x4f73c2[_0xe3ad('0x27')](_0x2caa1f)['then'](function(_0x4db1c1){return _0x4db1c1;});}return null;};}function removeEntity(_0x2cd272,_0x22ac0d){return function(_0x82ef5b){if(_0x82ef5b){return _0x82ef5b['destroy']()[_0xe3ad('0x28')](function(){_0x2cd272[_0xe3ad('0x1d')](0xcc)[_0xe3ad('0x1e')]();});}};}function handleEntityNotFound(_0x257f06,_0x3a45f1){return function(_0x1d28bf){if(!_0x1d28bf){_0x257f06['sendStatus'](0x194);}return _0x1d28bf;};}function handleError(_0x982432,_0x4f0b27){_0x4f0b27=_0x4f0b27||0x1f4;return function(_0x31bb78){logger['error'](_0x31bb78['stack']);if(_0x31bb78[_0xe3ad('0x29')]){delete _0x31bb78[_0xe3ad('0x29')];}_0x982432['status'](_0x4f0b27)[_0xe3ad('0x2a')](_0x31bb78);};}exports[_0xe3ad('0x2b')]=function(_0x2f7e33,_0x544cbc){var _0x2591b5={},_0xe943e5={},_0x118095={'count':0x0,'rows':[]};var _0x10d5a3=_[_0xe3ad('0x2c')](db[_0xe3ad('0x2d')][_0xe3ad('0x2e')],function(_0x37ef7b){return{'name':_0x37ef7b[_0xe3ad('0x2f')],'type':_0x37ef7b[_0xe3ad('0x30')][_0xe3ad('0x31')]};});_0xe943e5[_0xe3ad('0x32')]=_[_0xe3ad('0x2c')](_0x10d5a3,_0xe3ad('0x29'));_0xe943e5[_0xe3ad('0x33')]=_[_0xe3ad('0x34')](_0x2f7e33[_0xe3ad('0x33')]);_0xe943e5['filters']=_[_0xe3ad('0x35')](_0xe943e5['model'],_0xe943e5['query']);_0x2591b5['attributes']=_[_0xe3ad('0x35')](_0xe943e5[_0xe3ad('0x32')],qs['fields'](_0x2f7e33[_0xe3ad('0x33')][_0xe3ad('0x36')]));_0x2591b5[_0xe3ad('0x37')]=_0x2591b5[_0xe3ad('0x37')][_0xe3ad('0x38')]?_0x2591b5[_0xe3ad('0x37')]:_0xe943e5[_0xe3ad('0x32')];if(!_0x2f7e33['query'][_0xe3ad('0x39')]('nolimit')){_0x2591b5[_0xe3ad('0x22')]=qs[_0xe3ad('0x22')](_0x2f7e33[_0xe3ad('0x33')][_0xe3ad('0x22')]);_0x2591b5[_0xe3ad('0x20')]=qs[_0xe3ad('0x20')](_0x2f7e33[_0xe3ad('0x33')][_0xe3ad('0x20')]);}_0x2591b5[_0xe3ad('0x3a')]=qs[_0xe3ad('0x3b')](_0x2f7e33[_0xe3ad('0x33')][_0xe3ad('0x3b')]);_0x2591b5[_0xe3ad('0x3c')]=qs[_0xe3ad('0x3d')](_[_0xe3ad('0x3e')](_0x2f7e33[_0xe3ad('0x33')],_0xe943e5['filters']),_0x10d5a3);if(_0x2f7e33[_0xe3ad('0x33')][_0xe3ad('0x3f')]){_0x2591b5[_0xe3ad('0x3c')]=_[_0xe3ad('0x40')](_0x2591b5[_0xe3ad('0x3c')],{'$or':_['map'](_0x10d5a3,function(_0x39b4d5){if(_0x39b4d5['type']!==_0xe3ad('0x41')){var _0x3e1daa={};_0x3e1daa[_0x39b4d5[_0xe3ad('0x29')]]={'$like':'%'+_0x2f7e33['query'][_0xe3ad('0x3f')]+'%'};return _0x3e1daa;}})});}_0x2591b5=_[_0xe3ad('0x40')]({},_0x2591b5,_0x2f7e33[_0xe3ad('0x42')]);var _0x5a26ac={'where':_0x2591b5['where']};return db['MailServerOut'][_0xe3ad('0x23')](_0x5a26ac)[_0xe3ad('0x28')](function(_0x73b859){_0x118095['count']=_0x73b859;if(_0x2f7e33['query']['includeAll']){_0x2591b5['include']=[{'all':!![]}];}return db[_0xe3ad('0x2d')]['findAll'](_0x2591b5);})[_0xe3ad('0x28')](function(_0x361daf){_0x118095[_0xe3ad('0x43')]=_0x361daf;return _0x118095;})[_0xe3ad('0x28')](respondWithFilteredResult(_0x544cbc,_0x2591b5))[_0xe3ad('0x44')](handleError(_0x544cbc,null));};exports[_0xe3ad('0x45')]=function(_0x40726d,_0x4eb4b8){var _0x43abe5={'raw':!![],'where':{'id':_0x40726d['params']['id']}},_0x15c603={};_0x15c603['model']=_[_0xe3ad('0x34')](db[_0xe3ad('0x2d')]['rawAttributes']);_0x15c603[_0xe3ad('0x33')]=_[_0xe3ad('0x34')](_0x40726d[_0xe3ad('0x33')]);_0x15c603[_0xe3ad('0x3d')]=_[_0xe3ad('0x35')](_0x15c603[_0xe3ad('0x32')],_0x15c603['query']);_0x43abe5[_0xe3ad('0x37')]=_[_0xe3ad('0x35')](_0x15c603[_0xe3ad('0x32')],qs[_0xe3ad('0x36')](_0x40726d[_0xe3ad('0x33')][_0xe3ad('0x36')]));_0x43abe5[_0xe3ad('0x37')]=_0x43abe5[_0xe3ad('0x37')]['length']?_0x43abe5[_0xe3ad('0x37')]:_0x15c603[_0xe3ad('0x32')];if(_0x40726d['query'][_0xe3ad('0x46')]){_0x43abe5['include']=[{'all':!![]}];}_0x43abe5=_[_0xe3ad('0x40')]({},_0x43abe5,_0x40726d[_0xe3ad('0x42')]);return db[_0xe3ad('0x2d')][_0xe3ad('0x47')](_0x43abe5)['then'](handleEntityNotFound(_0x4eb4b8,null))[_0xe3ad('0x28')](respondWithResult(_0x4eb4b8,null))[_0xe3ad('0x44')](handleError(_0x4eb4b8,null));};exports[_0xe3ad('0x48')]=function(_0x5eaa1c,_0x5934d4){return db[_0xe3ad('0x2d')][_0xe3ad('0x48')](_0x5eaa1c[_0xe3ad('0x49')],{})['then'](respondWithResult(_0x5934d4,0xc9))[_0xe3ad('0x44')](handleError(_0x5934d4,null));};exports['update']=function(_0xef0a8,_0x100b2c){if(_0xef0a8['body']['id']){delete _0xef0a8[_0xe3ad('0x49')]['id'];}return db['MailServerOut']['find']({'where':{'id':_0xef0a8['params']['id']}})['then'](handleEntityNotFound(_0x100b2c,null))[_0xe3ad('0x28')](saveUpdates(_0xef0a8[_0xe3ad('0x49')],null))[_0xe3ad('0x28')](respondWithResult(_0x100b2c,null))['catch'](handleError(_0x100b2c,null));};exports[_0xe3ad('0x4a')]=function(_0x30ca55,_0x9f8d57){return db[_0xe3ad('0x2d')][_0xe3ad('0x47')]({'where':{'id':_0x30ca55[_0xe3ad('0x4b')]['id']}})[_0xe3ad('0x28')](handleEntityNotFound(_0x9f8d57,null))[_0xe3ad('0x28')](removeEntity(_0x9f8d57,null))[_0xe3ad('0x44')](handleError(_0x9f8d57,null));};
\ No newline at end of file
index 57ad5a4..b276607 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x628e=['lodash','util','../../config/logger','api','moment','bluebird','rimraf','./mailServerOut.attributes','exports','define','MailServerOut','mail_servers_out'];(function(_0x4c445a,_0x4ee80f){var _0x2f611c=function(_0x4f3699){while(--_0x4f3699){_0x4c445a['push'](_0x4c445a['shift']());}};_0x2f611c(++_0x4ee80f);}(_0x628e,0x168));var _0xe628=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x628e[_0xfae23b];return _0x200640;};'use strict';var _=require(_0xe628('0x0'));var util=require(_0xe628('0x1'));var logger=require(_0xe628('0x2'))(_0xe628('0x3'));var moment=require(_0xe628('0x4'));var BPromise=require(_0xe628('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe628('0x6'));var config=require('../../config/environment');var attributes=require(_0xe628('0x7'));module[_0xe628('0x8')]=function(_0x220d17,_0x23ad35){return _0x220d17[_0xe628('0x9')](_0xe628('0xa'),attributes,{'tableName':_0xe628('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ed6=['bluebird','request-promise','path','rimraf','../../config/environment','./mailServerOut.attributes','exports','MailServerOut','util','../../config/logger','api','moment'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x2ed6,0x128));var _0x62ed=function(_0x12b4c1,_0x59e2c8){_0x12b4c1=_0x12b4c1-0x0;var _0x1730cf=_0x2ed6[_0x12b4c1];return _0x1730cf;};'use strict';var _=require('lodash');var util=require(_0x62ed('0x0'));var logger=require(_0x62ed('0x1'))(_0x62ed('0x2'));var moment=require(_0x62ed('0x3'));var BPromise=require(_0x62ed('0x4'));var rp=require(_0x62ed('0x5'));var fs=require('fs');var path=require(_0x62ed('0x6'));var rimraf=require(_0x62ed('0x7'));var config=require(_0x62ed('0x8'));var attributes=require(_0x62ed('0x9'));module[_0x62ed('0xa')]=function(_0x5e110e,_0x945c74){return _0x5e110e['define'](_0x62ed('0xb'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a9ed9fe..0fc1461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x542a9b,_0x351513){var _0x4d5032=function(_0x538ed2){while(--_0x538ed2){_0x542a9b['push'](_0x542a9b['shift']());}};_0x4d5032(++_0x351513);}(_0xadb5,0xad));var _0x5adb=function(_0xca2e4f,_0x36270a){_0xca2e4f=_0xca2e4f-0x0;var _0x1e00c5=_0xadb5[_0xca2e4f];return _0x1e00c5;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailServerOut,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
+var _0x7a54=['info','MailServerOut,\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(_0x458aa7,_0x3157ef){_0x458aa7=_0x458aa7-0x0;var _0x3af040=_0x7a54[_0x458aa7];return _0x3af040;};'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')]('MailServerOut,\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 9b3ed8b..4719949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65fc=['path','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/:id','post','update','delete','destroy','exports','multer','util'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x65fc,0x98));var _0xc65f=function(_0x161514,_0xf203c1){_0x161514=_0x161514-0x0;var _0x230fc0=_0x65fc[_0x161514];return _0x230fc0;};'use strict';var multer=require(_0xc65f('0x0'));var util=require(_0xc65f('0x1'));var path=require(_0xc65f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc65f('0x3')]();var fs_extra=require(_0xc65f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc65f('0x5'));var config=require('../../config/environment');var controller=require('./mailSubstatus.controller');router[_0xc65f('0x6')]('/',auth[_0xc65f('0x7')](),controller['index']);router['get']('/describe',auth[_0xc65f('0x7')](),controller['describe']);router[_0xc65f('0x6')](_0xc65f('0x8'),auth['isAuthenticated'](),controller['show']);router[_0xc65f('0x9')]('/',auth[_0xc65f('0x7')](),controller['create']);router['put']('/:id',auth[_0xc65f('0x7')](),controller[_0xc65f('0xa')]);router[_0xc65f('0xb')]('/:id',auth[_0xc65f('0x7')](),controller[_0xc65f('0xc')]);module[_0xc65f('0xd')]=router;
\ No newline at end of file
+var _0x5bf6=['exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','index','isAuthenticated','show','post','create','put','/:id','update','delete','destroy'];(function(_0xc14df7,_0x163f90){var _0x34a445=function(_0x1bbf28){while(--_0x1bbf28){_0xc14df7['push'](_0xc14df7['shift']());}};_0x34a445(++_0x163f90);}(_0x5bf6,0xa9));var _0x65bf=function(_0x47a5bd,_0x508329){_0x47a5bd=_0x47a5bd-0x0;var _0x5c2184=_0x5bf6[_0x47a5bd];return _0x5c2184;};'use strict';var multer=require(_0x65bf('0x0'));var util=require(_0x65bf('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x65bf('0x2'));var router=express[_0x65bf('0x3')]();var fs_extra=require(_0x65bf('0x4'));var auth=require(_0x65bf('0x5'));var interaction=require(_0x65bf('0x6'));var config=require(_0x65bf('0x7'));var controller=require(_0x65bf('0x8'));router[_0x65bf('0x9')]('/',auth['isAuthenticated'](),controller[_0x65bf('0xa')]);router['get']('/describe',auth[_0x65bf('0xb')](),controller['describe']);router['get']('/:id',auth[_0x65bf('0xb')](),controller[_0x65bf('0xc')]);router[_0x65bf('0xd')]('/',auth[_0x65bf('0xb')](),controller[_0x65bf('0xe')]);router[_0x65bf('0xf')](_0x65bf('0x10'),auth[_0x65bf('0xb')](),controller[_0x65bf('0x11')]);router[_0x65bf('0x12')](_0x65bf('0x10'),auth[_0x65bf('0xb')](),controller[_0x65bf('0x13')]);module[_0x65bf('0x14')]=router;
\ No newline at end of file
index e336953..9c2c299 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd59=['exports','STRING','name','sequelize'];(function(_0xf6e75d,_0xc70967){var _0x27514d=function(_0xc2c6dd){while(--_0xc2c6dd){_0xf6e75d['push'](_0xf6e75d['shift']());}};_0x27514d(++_0xc70967);}(_0xcd59,0x14b));var _0x9cd5=function(_0x2a74a6,_0x10592f){_0x2a74a6=_0x2a74a6-0x0;var _0xc2e34a=_0xcd59[_0x2a74a6];return _0xc2e34a;};'use strict';var Sequelize=require(_0x9cd5('0x0'));module[_0x9cd5('0x1')]={'name':{'type':Sequelize[_0x9cd5('0x2')],'unique':_0x9cd5('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x9cd5('0x2')]}};
\ No newline at end of file
+var _0xbd10=['STRING','sequelize','exports'];(function(_0x2142c8,_0x3001eb){var _0x4286e9=function(_0x43d768){while(--_0x43d768){_0x2142c8['push'](_0x2142c8['shift']());}};_0x4286e9(++_0x3001eb);}(_0xbd10,0x85));var _0x0bd1=function(_0x5523af,_0x59514a){_0x5523af=_0x5523af-0x0;var _0x27b22e=_0xbd10[_0x5523af];return _0x27b22e;};'use strict';var Sequelize=require(_0x0bd1('0x0'));module[_0x0bd1('0x1')]={'name':{'type':Sequelize[_0x0bd1('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x0bd1('0x2')]}};
\ No newline at end of file
index 4d87f91..88c4967 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccec=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','MailSubstatus','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x340380,_0x4bd2a8){var _0x49ce1c=function(_0x4cb9e2){while(--_0x4cb9e2){_0x340380['push'](_0x340380['shift']());}};_0x49ce1c(++_0x4bd2a8);}(_0xccec,0x17b));var _0xccce=function(_0x382e11,_0x24daf4){_0x382e11=_0x382e11-0x0;var _0xcd301c=_0xccec[_0x382e11];return _0xcd301c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xccce('0x0'));var zipdir=require(_0xccce('0x1'));var jsonpatch=require(_0xccce('0x2'));var rp=require('request-promise');var moment=require(_0xccce('0x3'));var BPromise=require(_0xccce('0x4'));var Mustache=require(_0xccce('0x5'));var util=require('util');var path=require(_0xccce('0x6'));var sox=require(_0xccce('0x7'));var csv=require(_0xccce('0x8'));var ejs=require(_0xccce('0x9'));var fs=require('fs');var fs_extra=require(_0xccce('0xa'));var _=require(_0xccce('0xb'));var squel=require(_0xccce('0xc'));var crypto=require(_0xccce('0xd'));var jsforce=require(_0xccce('0xe'));var deskjs=require(_0xccce('0xf'));var toCsv=require(_0xccce('0x8'));var querystring=require(_0xccce('0x10'));var Papa=require(_0xccce('0x11'));var Redis=require(_0xccce('0x12'));var authService=require(_0xccce('0x13'));var qs=require(_0xccce('0x14'));var as=require(_0xccce('0x15'));var hardwareService=require(_0xccce('0x16'));var logger=require(_0xccce('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xccce('0x18'));var licenseUtil=require(_0xccce('0x19'));var db=require(_0xccce('0x1a'))['db'];function respondWithStatusCode(_0x1ee11e,_0x14af7b){_0x14af7b=_0x14af7b||0xcc;return function(_0x118cdd){if(_0x118cdd){return _0x1ee11e['sendStatus'](_0x14af7b);}return _0x1ee11e[_0xccce('0x1b')](_0x14af7b)[_0xccce('0x1c')]();};}function respondWithResult(_0x5c48c9,_0x518799){_0x518799=_0x518799||0xc8;return function(_0xd9edf7){if(_0xd9edf7){return _0x5c48c9[_0xccce('0x1b')](_0x518799)['json'](_0xd9edf7);}};}function respondWithFilteredResult(_0x405f8a,_0x13d1a9){return function(_0x2d47c1){if(_0x2d47c1){var _0x5a0cd9=typeof _0x13d1a9[_0xccce('0x1d')]===_0xccce('0x1e')&&typeof _0x13d1a9[_0xccce('0x1f')]===_0xccce('0x1e');var _0x160089=_0x2d47c1['count'];var _0x212b88=_0x5a0cd9?0x0:_0x13d1a9[_0xccce('0x1d')];var _0x36face=_0x5a0cd9?_0x2d47c1[_0xccce('0x20')]:_0x13d1a9[_0xccce('0x1d')]+_0x13d1a9[_0xccce('0x1f')];var _0x2ce270;if(_0x36face>=_0x160089){_0x36face=_0x160089;_0x2ce270=0xc8;}else{_0x2ce270=0xce;}_0x405f8a[_0xccce('0x1b')](_0x2ce270);return _0x405f8a['set'](_0xccce('0x21'),_0x212b88+'-'+_0x36face+'/'+_0x160089)['json'](_0x2d47c1);}return null;};}function patchUpdates(_0x4ecaa2){return function(_0x2b2501){try{jsonpatch[_0xccce('0x22')](_0x2b2501,_0x4ecaa2,!![]);}catch(_0x43e6fb){return BPromise[_0xccce('0x23')](_0x43e6fb);}return _0x2b2501[_0xccce('0x24')]();};}function saveUpdates(_0x596733,_0x51f3a6){return function(_0x2c2e48){if(_0x2c2e48){return _0x2c2e48[_0xccce('0x25')](_0x596733)[_0xccce('0x26')](function(_0x3d499c){return _0x3d499c;});}return null;};}function removeEntity(_0x275416,_0x38a219){return function(_0x33c50d){if(_0x33c50d){return _0x33c50d[_0xccce('0x27')]()[_0xccce('0x26')](function(){_0x275416[_0xccce('0x1b')](0xcc)[_0xccce('0x1c')]();});}};}function handleEntityNotFound(_0x54b2a0,_0x49f3fa){return function(_0xe2bc23){if(!_0xe2bc23){_0x54b2a0[_0xccce('0x28')](0x194);}return _0xe2bc23;};}function handleError(_0x574c3e,_0x148dbe){_0x148dbe=_0x148dbe||0x1f4;return function(_0x3c2c67){logger[_0xccce('0x29')](_0x3c2c67[_0xccce('0x2a')]);if(_0x3c2c67[_0xccce('0x2b')]){delete _0x3c2c67[_0xccce('0x2b')];}_0x574c3e[_0xccce('0x1b')](_0x148dbe)['send'](_0x3c2c67);};}exports[_0xccce('0x2c')]=function(_0x5946e9,_0x2cdd37){var _0x189f59={},_0x1b1f75={},_0x10d07={'count':0x0,'rows':[]};var _0x1765cd=_[_0xccce('0x2d')](db[_0xccce('0x2e')][_0xccce('0x2f')],function(_0x5a257a){return{'name':_0x5a257a['fieldName'],'type':_0x5a257a[_0xccce('0x30')][_0xccce('0x31')]};});_0x1b1f75[_0xccce('0x32')]=_[_0xccce('0x2d')](_0x1765cd,_0xccce('0x2b'));_0x1b1f75[_0xccce('0x33')]=_[_0xccce('0x34')](_0x5946e9[_0xccce('0x33')]);_0x1b1f75[_0xccce('0x35')]=_['intersection'](_0x1b1f75[_0xccce('0x32')],_0x1b1f75[_0xccce('0x33')]);_0x189f59[_0xccce('0x36')]=_[_0xccce('0x37')](_0x1b1f75[_0xccce('0x32')],qs[_0xccce('0x38')](_0x5946e9[_0xccce('0x33')]['fields']));_0x189f59[_0xccce('0x36')]=_0x189f59[_0xccce('0x36')][_0xccce('0x39')]?_0x189f59[_0xccce('0x36')]:_0x1b1f75['model'];if(!_0x5946e9[_0xccce('0x33')]['hasOwnProperty'](_0xccce('0x3a'))){_0x189f59['limit']=qs[_0xccce('0x1f')](_0x5946e9['query'][_0xccce('0x1f')]);_0x189f59[_0xccce('0x1d')]=qs[_0xccce('0x1d')](_0x5946e9[_0xccce('0x33')][_0xccce('0x1d')]);}_0x189f59[_0xccce('0x3b')]=qs[_0xccce('0x3c')](_0x5946e9['query']['sort']);_0x189f59['where']=qs[_0xccce('0x35')](_[_0xccce('0x3d')](_0x5946e9['query'],_0x1b1f75['filters']),_0x1765cd);if(_0x5946e9[_0xccce('0x33')][_0xccce('0x3e')]){_0x189f59[_0xccce('0x3f')]=_[_0xccce('0x40')](_0x189f59[_0xccce('0x3f')],{'$or':_[_0xccce('0x2d')](_0x1765cd,function(_0x210c32){if(_0x210c32[_0xccce('0x30')]!==_0xccce('0x41')){var _0x1e1b11={};_0x1e1b11[_0x210c32[_0xccce('0x2b')]]={'$like':'%'+_0x5946e9[_0xccce('0x33')][_0xccce('0x3e')]+'%'};return _0x1e1b11;}})});}_0x189f59=_[_0xccce('0x40')]({},_0x189f59,_0x5946e9[_0xccce('0x42')]);var _0xe4b966={'where':_0x189f59[_0xccce('0x3f')]};return db[_0xccce('0x2e')][_0xccce('0x20')](_0xe4b966)[_0xccce('0x26')](function(_0x456ba3){_0x10d07[_0xccce('0x20')]=_0x456ba3;if(_0x5946e9[_0xccce('0x33')][_0xccce('0x43')]){_0x189f59[_0xccce('0x44')]=[{'all':!![]}];}return db[_0xccce('0x2e')][_0xccce('0x45')](_0x189f59);})[_0xccce('0x26')](function(_0x2c0fcc){_0x10d07[_0xccce('0x46')]=_0x2c0fcc;return _0x10d07;})['then'](respondWithFilteredResult(_0x2cdd37,_0x189f59))['catch'](handleError(_0x2cdd37,null));};exports['show']=function(_0x408adc,_0x2024b1){var _0x5ccbd5={'raw':!![],'where':{'id':_0x408adc[_0xccce('0x47')]['id']}},_0x559d67={};_0x559d67[_0xccce('0x32')]=_[_0xccce('0x34')](db[_0xccce('0x2e')]['rawAttributes']);_0x559d67[_0xccce('0x33')]=_[_0xccce('0x34')](_0x408adc[_0xccce('0x33')]);_0x559d67['filters']=_['intersection'](_0x559d67[_0xccce('0x32')],_0x559d67[_0xccce('0x33')]);_0x5ccbd5['attributes']=_[_0xccce('0x37')](_0x559d67[_0xccce('0x32')],qs['fields'](_0x408adc[_0xccce('0x33')][_0xccce('0x38')]));_0x5ccbd5['attributes']=_0x5ccbd5['attributes'][_0xccce('0x39')]?_0x5ccbd5[_0xccce('0x36')]:_0x559d67[_0xccce('0x32')];if(_0x408adc[_0xccce('0x33')]['includeAll']){_0x5ccbd5[_0xccce('0x44')]=[{'all':!![]}];}_0x5ccbd5=_[_0xccce('0x40')]({},_0x5ccbd5,_0x408adc['options']);return db[_0xccce('0x2e')][_0xccce('0x48')](_0x5ccbd5)[_0xccce('0x26')](handleEntityNotFound(_0x2024b1,null))['then'](respondWithResult(_0x2024b1,null))[_0xccce('0x49')](handleError(_0x2024b1,null));};exports['create']=function(_0x1fc49e,_0x1594e7){return db['MailSubstatus'][_0xccce('0x4a')](_0x1fc49e[_0xccce('0x4b')],{})[_0xccce('0x26')](respondWithResult(_0x1594e7,0xc9))[_0xccce('0x49')](handleError(_0x1594e7,null));};exports[_0xccce('0x25')]=function(_0x399afb,_0x404861){if(_0x399afb['body']['id']){delete _0x399afb[_0xccce('0x4b')]['id'];}return db[_0xccce('0x2e')]['find']({'where':{'id':_0x399afb[_0xccce('0x47')]['id']}})[_0xccce('0x26')](handleEntityNotFound(_0x404861,null))[_0xccce('0x26')](saveUpdates(_0x399afb[_0xccce('0x4b')],null))[_0xccce('0x26')](respondWithResult(_0x404861,null))[_0xccce('0x49')](handleError(_0x404861,null));};exports['destroy']=function(_0x2c6d25,_0xbed37d){return db[_0xccce('0x2e')][_0xccce('0x48')]({'where':{'id':_0x2c6d25[_0xccce('0x47')]['id']}})[_0xccce('0x26')](handleEntityNotFound(_0xbed37d,null))[_0xccce('0x26')](removeEntity(_0xbed37d,null))[_0xccce('0x49')](handleError(_0xbed37d,null));};exports[_0xccce('0x4c')]=function(_0x6e10cb,_0x2a78d1){return db[_0xccce('0x2e')][_0xccce('0x4c')]()[_0xccce('0x26')](respondWithResult(_0x2a78d1,null))['catch'](handleError(_0x2a78d1,null));};
\ No newline at end of file
+var _0xea10=['ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','set','Content-Range','json','save','update','then','destroy','sendStatus','error','stack','name','send','map','MailSubstatus','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','order','sort','where','pick','merge','options','includeAll','include','findAll','rows','show','params','fields','find','catch','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse'];(function(_0x5f3adc,_0x3f03e6){var _0x5629da=function(_0x5347e3){while(--_0x5347e3){_0x5f3adc['push'](_0x5f3adc['shift']());}};_0x5629da(++_0x3f03e6);}(_0xea10,0x10d));var _0x0ea1=function(_0x399a1c,_0x389c8d){_0x399a1c=_0x399a1c-0x0;var _0x15ce52=_0xea10[_0x399a1c];return _0x15ce52;};'use strict';var emlformat=require(_0x0ea1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0ea1('0x1'));var jsonpatch=require(_0x0ea1('0x2'));var rp=require(_0x0ea1('0x3'));var moment=require('moment');var BPromise=require(_0x0ea1('0x4'));var Mustache=require(_0x0ea1('0x5'));var util=require('util');var path=require(_0x0ea1('0x6'));var sox=require(_0x0ea1('0x7'));var csv=require(_0x0ea1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0ea1('0x9'));var _=require(_0x0ea1('0xa'));var squel=require('squel');var crypto=require(_0x0ea1('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x0ea1('0xc'));var toCsv=require(_0x0ea1('0x8'));var querystring=require(_0x0ea1('0xd'));var Papa=require(_0x0ea1('0xe'));var Redis=require(_0x0ea1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x0ea1('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0ea1('0x11'));var logger=require(_0x0ea1('0x12'))('api');var utils=require(_0x0ea1('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x0ea1('0x14'));var db=require(_0x0ea1('0x15'))['db'];function respondWithStatusCode(_0x2bab6e,_0x57c502){_0x57c502=_0x57c502||0xcc;return function(_0x2e1fd8){if(_0x2e1fd8){return _0x2bab6e['sendStatus'](_0x57c502);}return _0x2bab6e[_0x0ea1('0x16')](_0x57c502)[_0x0ea1('0x17')]();};}function respondWithResult(_0x63ad33,_0x508d60){_0x508d60=_0x508d60||0xc8;return function(_0x205c2e){if(_0x205c2e){return _0x63ad33[_0x0ea1('0x16')](_0x508d60)['json'](_0x205c2e);}};}function respondWithFilteredResult(_0x52093f,_0xf4ee21){return function(_0x4ea712){if(_0x4ea712){var _0x287c61=typeof _0xf4ee21[_0x0ea1('0x18')]==='undefined'&&typeof _0xf4ee21['limit']===_0x0ea1('0x19');var _0x3e89a1=_0x4ea712['count'];var _0x5a9ad8=_0x287c61?0x0:_0xf4ee21['offset'];var _0x2c6826=_0x287c61?_0x4ea712[_0x0ea1('0x1a')]:_0xf4ee21[_0x0ea1('0x18')]+_0xf4ee21[_0x0ea1('0x1b')];var _0x3c2770;if(_0x2c6826>=_0x3e89a1){_0x2c6826=_0x3e89a1;_0x3c2770=0xc8;}else{_0x3c2770=0xce;}_0x52093f[_0x0ea1('0x16')](_0x3c2770);return _0x52093f[_0x0ea1('0x1c')](_0x0ea1('0x1d'),_0x5a9ad8+'-'+_0x2c6826+'/'+_0x3e89a1)[_0x0ea1('0x1e')](_0x4ea712);}return null;};}function patchUpdates(_0x19fc4f){return function(_0x1e682c){try{jsonpatch['apply'](_0x1e682c,_0x19fc4f,!![]);}catch(_0x48f119){return BPromise['reject'](_0x48f119);}return _0x1e682c[_0x0ea1('0x1f')]();};}function saveUpdates(_0x5423f7,_0x3144bd){return function(_0x564d28){if(_0x564d28){return _0x564d28[_0x0ea1('0x20')](_0x5423f7)[_0x0ea1('0x21')](function(_0x5a588e){return _0x5a588e;});}return null;};}function removeEntity(_0x5c0da7,_0xe43dd){return function(_0x18f24f){if(_0x18f24f){return _0x18f24f[_0x0ea1('0x22')]()[_0x0ea1('0x21')](function(){_0x5c0da7[_0x0ea1('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x544a5e,_0x78befc){return function(_0x42eb81){if(!_0x42eb81){_0x544a5e[_0x0ea1('0x23')](0x194);}return _0x42eb81;};}function handleError(_0x4577cd,_0x128c43){_0x128c43=_0x128c43||0x1f4;return function(_0x8424af){logger[_0x0ea1('0x24')](_0x8424af[_0x0ea1('0x25')]);if(_0x8424af[_0x0ea1('0x26')]){delete _0x8424af['name'];}_0x4577cd[_0x0ea1('0x16')](_0x128c43)[_0x0ea1('0x27')](_0x8424af);};}exports['index']=function(_0x5d1ffe,_0x2b5635){var _0x595036={},_0x46a4b1={},_0x1dc07a={'count':0x0,'rows':[]};var _0xf28194=_[_0x0ea1('0x28')](db[_0x0ea1('0x29')][_0x0ea1('0x2a')],function(_0xe970be){return{'name':_0xe970be[_0x0ea1('0x2b')],'type':_0xe970be[_0x0ea1('0x2c')][_0x0ea1('0x2d')]};});_0x46a4b1[_0x0ea1('0x2e')]=_[_0x0ea1('0x28')](_0xf28194,_0x0ea1('0x26'));_0x46a4b1[_0x0ea1('0x2f')]=_[_0x0ea1('0x30')](_0x5d1ffe[_0x0ea1('0x2f')]);_0x46a4b1[_0x0ea1('0x31')]=_[_0x0ea1('0x32')](_0x46a4b1[_0x0ea1('0x2e')],_0x46a4b1['query']);_0x595036[_0x0ea1('0x33')]=_[_0x0ea1('0x32')](_0x46a4b1[_0x0ea1('0x2e')],qs['fields'](_0x5d1ffe[_0x0ea1('0x2f')]['fields']));_0x595036[_0x0ea1('0x33')]=_0x595036[_0x0ea1('0x33')][_0x0ea1('0x34')]?_0x595036['attributes']:_0x46a4b1[_0x0ea1('0x2e')];if(!_0x5d1ffe['query']['hasOwnProperty']('nolimit')){_0x595036[_0x0ea1('0x1b')]=qs[_0x0ea1('0x1b')](_0x5d1ffe['query'][_0x0ea1('0x1b')]);_0x595036[_0x0ea1('0x18')]=qs['offset'](_0x5d1ffe[_0x0ea1('0x2f')][_0x0ea1('0x18')]);}_0x595036[_0x0ea1('0x35')]=qs['sort'](_0x5d1ffe[_0x0ea1('0x2f')][_0x0ea1('0x36')]);_0x595036[_0x0ea1('0x37')]=qs['filters'](_[_0x0ea1('0x38')](_0x5d1ffe[_0x0ea1('0x2f')],_0x46a4b1[_0x0ea1('0x31')]),_0xf28194);if(_0x5d1ffe[_0x0ea1('0x2f')]['filter']){_0x595036['where']=_[_0x0ea1('0x39')](_0x595036['where'],{'$or':_[_0x0ea1('0x28')](_0xf28194,function(_0x1e0d64){if(_0x1e0d64[_0x0ea1('0x2c')]!=='VIRTUAL'){var _0xd915a2={};_0xd915a2[_0x1e0d64[_0x0ea1('0x26')]]={'$like':'%'+_0x5d1ffe[_0x0ea1('0x2f')]['filter']+'%'};return _0xd915a2;}})});}_0x595036=_[_0x0ea1('0x39')]({},_0x595036,_0x5d1ffe[_0x0ea1('0x3a')]);var _0x41cf25={'where':_0x595036[_0x0ea1('0x37')]};return db[_0x0ea1('0x29')][_0x0ea1('0x1a')](_0x41cf25)[_0x0ea1('0x21')](function(_0x47c56c){_0x1dc07a[_0x0ea1('0x1a')]=_0x47c56c;if(_0x5d1ffe[_0x0ea1('0x2f')][_0x0ea1('0x3b')]){_0x595036[_0x0ea1('0x3c')]=[{'all':!![]}];}return db['MailSubstatus'][_0x0ea1('0x3d')](_0x595036);})['then'](function(_0x3aa20a){_0x1dc07a[_0x0ea1('0x3e')]=_0x3aa20a;return _0x1dc07a;})[_0x0ea1('0x21')](respondWithFilteredResult(_0x2b5635,_0x595036))['catch'](handleError(_0x2b5635,null));};exports[_0x0ea1('0x3f')]=function(_0x46d8cd,_0x4fd7a3){var _0x5a4a15={'raw':!![],'where':{'id':_0x46d8cd[_0x0ea1('0x40')]['id']}},_0xaa8b15={};_0xaa8b15[_0x0ea1('0x2e')]=_[_0x0ea1('0x30')](db[_0x0ea1('0x29')][_0x0ea1('0x2a')]);_0xaa8b15['query']=_[_0x0ea1('0x30')](_0x46d8cd[_0x0ea1('0x2f')]);_0xaa8b15[_0x0ea1('0x31')]=_[_0x0ea1('0x32')](_0xaa8b15[_0x0ea1('0x2e')],_0xaa8b15[_0x0ea1('0x2f')]);_0x5a4a15['attributes']=_['intersection'](_0xaa8b15['model'],qs[_0x0ea1('0x41')](_0x46d8cd[_0x0ea1('0x2f')]['fields']));_0x5a4a15[_0x0ea1('0x33')]=_0x5a4a15[_0x0ea1('0x33')][_0x0ea1('0x34')]?_0x5a4a15[_0x0ea1('0x33')]:_0xaa8b15[_0x0ea1('0x2e')];if(_0x46d8cd['query'][_0x0ea1('0x3b')]){_0x5a4a15[_0x0ea1('0x3c')]=[{'all':!![]}];}_0x5a4a15=_[_0x0ea1('0x39')]({},_0x5a4a15,_0x46d8cd['options']);return db[_0x0ea1('0x29')][_0x0ea1('0x42')](_0x5a4a15)[_0x0ea1('0x21')](handleEntityNotFound(_0x4fd7a3,null))['then'](respondWithResult(_0x4fd7a3,null))[_0x0ea1('0x43')](handleError(_0x4fd7a3,null));};exports['create']=function(_0xb6de82,_0x587834){return db[_0x0ea1('0x29')][_0x0ea1('0x44')](_0xb6de82[_0x0ea1('0x45')],{})[_0x0ea1('0x21')](respondWithResult(_0x587834,0xc9))['catch'](handleError(_0x587834,null));};exports[_0x0ea1('0x20')]=function(_0x585d0f,_0x251e12){if(_0x585d0f[_0x0ea1('0x45')]['id']){delete _0x585d0f['body']['id'];}return db[_0x0ea1('0x29')][_0x0ea1('0x42')]({'where':{'id':_0x585d0f['params']['id']}})[_0x0ea1('0x21')](handleEntityNotFound(_0x251e12,null))[_0x0ea1('0x21')](saveUpdates(_0x585d0f[_0x0ea1('0x45')],null))[_0x0ea1('0x21')](respondWithResult(_0x251e12,null))['catch'](handleError(_0x251e12,null));};exports[_0x0ea1('0x22')]=function(_0x165247,_0x3ba763){return db[_0x0ea1('0x29')][_0x0ea1('0x42')]({'where':{'id':_0x165247[_0x0ea1('0x40')]['id']}})[_0x0ea1('0x21')](handleEntityNotFound(_0x3ba763,null))[_0x0ea1('0x21')](removeEntity(_0x3ba763,null))[_0x0ea1('0x43')](handleError(_0x3ba763,null));};exports['describe']=function(_0x249082,_0x1a7326){return db[_0x0ea1('0x29')][_0x0ea1('0x46')]()[_0x0ea1('0x21')](respondWithResult(_0x1a7326,null))[_0x0ea1('0x43')](handleError(_0x1a7326,null));};
\ No newline at end of file
index fa4126d..a63ba06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56ca=['./mailSubstatus.attributes','exports','define','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x26bef5,_0x2f791e){var _0x190544=function(_0x5ac8b8){while(--_0x5ac8b8){_0x26bef5['push'](_0x26bef5['shift']());}};_0x190544(++_0x2f791e);}(_0x56ca,0x1ef));var _0xa56c=function(_0x27625a,_0x10c778){_0x27625a=_0x27625a-0x0;var _0x481f91=_0x56ca[_0x27625a];return _0x481f91;};'use strict';var _=require(_0xa56c('0x0'));var util=require(_0xa56c('0x1'));var logger=require(_0xa56c('0x2'))(_0xa56c('0x3'));var moment=require(_0xa56c('0x4'));var BPromise=require(_0xa56c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa56c('0x6'));var rimraf=require(_0xa56c('0x7'));var config=require(_0xa56c('0x8'));var attributes=require(_0xa56c('0x9'));module[_0xa56c('0xa')]=function(_0xddfc38,_0x2e2017){return _0xddfc38[_0xa56c('0xb')]('MailSubstatus',attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3da0=['lodash','../../config/logger','api','bluebird','rimraf','exports','define','MailSubstatus','mail_substatuses'];(function(_0x377fd8,_0x11062d){var _0x451606=function(_0x25e2e9){while(--_0x25e2e9){_0x377fd8['push'](_0x377fd8['shift']());}};_0x451606(++_0x11062d);}(_0x3da0,0xa2));var _0x03da=function(_0x406e46,_0x5799cb){_0x406e46=_0x406e46-0x0;var _0x4a3742=_0x3da0[_0x406e46];return _0x4a3742;};'use strict';var _=require(_0x03da('0x0'));var util=require('util');var logger=require(_0x03da('0x1'))(_0x03da('0x2'));var moment=require('moment');var BPromise=require(_0x03da('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x03da('0x4'));var config=require('../../config/environment');var attributes=require('./mailSubstatus.attributes');module[_0x03da('0x5')]=function(_0x27a019,_0x3168e4){return _0x27a019[_0x03da('0x6')](_0x03da('0x7'),attributes,{'tableName':_0x03da('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 19458af..8a7632c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc64=['debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent'];(function(_0x32d457,_0x1a39c9){var _0x338386=function(_0x199d7a){while(--_0x199d7a){_0x32d457['push'](_0x32d457['shift']());}};_0x338386(++_0x1a39c9);}(_0xfc64,0x1a4));var _0x4fc6=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xfc64[_0x1035c1];return _0x308d67;};'use strict';var _=require(_0x4fc6('0x0'));var util=require(_0x4fc6('0x1'));var moment=require(_0x4fc6('0x2'));var BPromise=require(_0x4fc6('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4fc6('0x4'));var db=require(_0x4fc6('0x5'))['db'];var utils=require(_0x4fc6('0x6'));var logger=require(_0x4fc6('0x7'))('rpc');var config=require(_0x4fc6('0x8'));var jayson=require(_0x4fc6('0x9'));var client=jayson[_0x4fc6('0xa')][_0x4fc6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ec217,_0x5adf90,_0x13960e){return new BPromise(function(_0x2aa819,_0x3da744){return client[_0x4fc6('0xc')](_0x5ec217,_0x13960e)[_0x4fc6('0xd')](function(_0x211848){logger[_0x4fc6('0xe')](_0x4fc6('0xf'),_0x5adf90,_0x4fc6('0x10'));logger[_0x4fc6('0x11')](_0x4fc6('0x12'),_0x5adf90,'request\x20sent',JSON[_0x4fc6('0x13')](_0x211848));if(_0x211848[_0x4fc6('0x14')]){if(_0x211848[_0x4fc6('0x14')]['code']===0x1f4){logger[_0x4fc6('0x14')](_0x4fc6('0xf'),_0x5adf90,_0x211848[_0x4fc6('0x14')][_0x4fc6('0x15')]);return _0x3da744(_0x211848[_0x4fc6('0x14')][_0x4fc6('0x15')]);}logger[_0x4fc6('0x14')](_0x4fc6('0xf'),_0x5adf90,_0x211848['error'][_0x4fc6('0x15')]);return _0x2aa819(_0x211848[_0x4fc6('0x14')][_0x4fc6('0x15')]);}else{logger[_0x4fc6('0xe')]('MailSubstatus,\x20%s,\x20%s',_0x5adf90,'request\x20sent');_0x2aa819(_0x211848['result'][_0x4fc6('0x15')]);}})[_0x4fc6('0x16')](function(_0x2da60b){logger[_0x4fc6('0x14')](_0x4fc6('0xf'),_0x5adf90,_0x2da60b);_0x3da744(_0x2da60b);});});}
\ No newline at end of file
+var _0x8d24=['MailSubstatus,\x20%s,\x20%s','request\x20sent','MailSubstatus,\x20%s,\x20%s,\x20%s','error','message','result','catch','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info'];(function(_0x3e69f6,_0x419f18){var _0x58af85=function(_0x386108){while(--_0x386108){_0x3e69f6['push'](_0x3e69f6['shift']());}};_0x58af85(++_0x419f18);}(_0x8d24,0x18e));var _0x48d2=function(_0x2c6fb9,_0xc7d7c0){_0x2c6fb9=_0x2c6fb9-0x0;var _0x49fd5e=_0x8d24[_0x2c6fb9];return _0x49fd5e;};'use strict';var _=require('lodash');var util=require(_0x48d2('0x0'));var moment=require(_0x48d2('0x1'));var BPromise=require(_0x48d2('0x2'));var rs=require(_0x48d2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x48d2('0x4'));var logger=require(_0x48d2('0x5'))(_0x48d2('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x48d2('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x185e21,_0x3476b2,_0x42f6e1){return new BPromise(function(_0x2a7271,_0x395509){return client['request'](_0x185e21,_0x42f6e1)[_0x48d2('0x8')](function(_0x2cfc56){logger[_0x48d2('0x9')](_0x48d2('0xa'),_0x3476b2,_0x48d2('0xb'));logger['debug'](_0x48d2('0xc'),_0x3476b2,_0x48d2('0xb'),JSON['stringify'](_0x2cfc56));if(_0x2cfc56[_0x48d2('0xd')]){if(_0x2cfc56[_0x48d2('0xd')]['code']===0x1f4){logger[_0x48d2('0xd')](_0x48d2('0xa'),_0x3476b2,_0x2cfc56['error'][_0x48d2('0xe')]);return _0x395509(_0x2cfc56[_0x48d2('0xd')][_0x48d2('0xe')]);}logger[_0x48d2('0xd')](_0x48d2('0xa'),_0x3476b2,_0x2cfc56['error'][_0x48d2('0xe')]);return _0x2a7271(_0x2cfc56[_0x48d2('0xd')][_0x48d2('0xe')]);}else{logger[_0x48d2('0x9')](_0x48d2('0xa'),_0x3476b2,_0x48d2('0xb'));_0x2a7271(_0x2cfc56[_0x48d2('0xf')]['message']);}})[_0x48d2('0x10')](function(_0x35dd90){logger[_0x48d2('0xd')](_0x48d2('0xa'),_0x3476b2,_0x35dd90);_0x395509(_0x35dd90);});});}
\ No newline at end of file
index b8389ee..ed12e89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3015=['post','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','describe','/:id','show'];(function(_0x3c61c4,_0x5156bc){var _0x57f8c6=function(_0x234141){while(--_0x234141){_0x3c61c4['push'](_0x3c61c4['shift']());}};_0x57f8c6(++_0x5156bc);}(_0x3015,0xfa));var _0x5301=function(_0x572d89,_0x3f637a){_0x572d89=_0x572d89-0x0;var _0x1a08a2=_0x3015[_0x572d89];return _0x1a08a2;};'use strict';var multer=require(_0x5301('0x0'));var util=require(_0x5301('0x1'));var path=require(_0x5301('0x2'));var timeout=require(_0x5301('0x3'));var express=require(_0x5301('0x4'));var router=express[_0x5301('0x5')]();var fs_extra=require(_0x5301('0x6'));var auth=require(_0x5301('0x7'));var interaction=require(_0x5301('0x8'));var config=require(_0x5301('0x9'));var controller=require(_0x5301('0xa'));router[_0x5301('0xb')]('/',auth[_0x5301('0xc')](),controller['index']);router[_0x5301('0xb')]('/describe',auth[_0x5301('0xc')](),controller[_0x5301('0xd')]);router[_0x5301('0xb')](_0x5301('0xe'),auth[_0x5301('0xc')](),controller[_0x5301('0xf')]);router[_0x5301('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x5301('0xc')](),controller[_0x5301('0x11')]);router['delete'](_0x5301('0xe'),auth['isAuthenticated'](),controller[_0x5301('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x8a99=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','update','destroy','exports','multer','util','path'];(function(_0x3c6ae2,_0x5c52d8){var _0x4edda=function(_0x5593eb){while(--_0x5593eb){_0x3c6ae2['push'](_0x3c6ae2['shift']());}};_0x4edda(++_0x5c52d8);}(_0x8a99,0x1dd));var _0x98a9=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x8a99[_0x199572];return _0x13cfa3;};'use strict';var multer=require(_0x98a9('0x0'));var util=require(_0x98a9('0x1'));var path=require(_0x98a9('0x2'));var timeout=require(_0x98a9('0x3'));var express=require(_0x98a9('0x4'));var router=express['Router']();var fs_extra=require(_0x98a9('0x5'));var auth=require(_0x98a9('0x6'));var interaction=require(_0x98a9('0x7'));var config=require('../../config/environment');var controller=require('./mailTransferReport.controller');router[_0x98a9('0x8')]('/',auth[_0x98a9('0x9')](),controller[_0x98a9('0xa')]);router[_0x98a9('0x8')](_0x98a9('0xb'),auth['isAuthenticated'](),controller[_0x98a9('0xc')]);router[_0x98a9('0x8')](_0x98a9('0xd'),auth[_0x98a9('0x9')](),controller[_0x98a9('0xe')]);router['post']('/',auth[_0x98a9('0x9')](),controller[_0x98a9('0xf')]);router[_0x98a9('0x10')](_0x98a9('0xd'),auth['isAuthenticated'](),controller[_0x98a9('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x98a9('0x12')]);module[_0x98a9('0x13')]=router;
\ No newline at end of file
index 82a3634..1668141 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x1ec9d1,_0x35ecaf){var _0x4b6bc2=function(_0x2695c6){while(--_0x2695c6){_0x1ec9d1['push'](_0x1ec9d1['shift']());}};_0x4b6bc2(++_0x35ecaf);}(_0x34e8,0x12c));var _0x834e=function(_0x4ad08d,_0x3b831c){_0x4ad08d=_0x4ad08d-0x0;var _0x193fc1=_0x34e8[_0x4ad08d];return _0x193fc1;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
+var _0xe706=['NOW','moment','sequelize','exports','ENUM','account','agent','queue','DATE'];(function(_0x2a5aa2,_0x3f2ad8){var _0x23ca98=function(_0x39a739){while(--_0x39a739){_0x2a5aa2['push'](_0x2a5aa2['shift']());}};_0x23ca98(++_0x3f2ad8);}(_0xe706,0xa3));var _0x6e70=function(_0x2a5bb7,_0x3a0bf3){_0x2a5bb7=_0x2a5bb7-0x0;var _0x503330=_0xe706[_0x2a5bb7];return _0x503330;};'use strict';var moment=require(_0x6e70('0x0'));var Sequelize=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6e70('0x3')](_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6')),'allowNull':![],'defaultValue':_0x6e70('0x6')},'transferredAt':{'type':Sequelize[_0x6e70('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x6e70('0x8')]}};
\ No newline at end of file
index bc8ba29..cf1d6f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16cb=['intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','type','VIRTUAL','filter','merge','options','MailTransferReport','include','findAll','rows','catch','show','includeAll','find','create','body','params','describe','rimraf','request-promise','moment','bluebird','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','error','name','send','index','map','fieldName','model','query','keys','attributes'];(function(_0x3bbbf3,_0x5f1261){var _0x257e1f=function(_0x3b5596){while(--_0x3b5596){_0x3bbbf3['push'](_0x3bbbf3['shift']());}};_0x257e1f(++_0x5f1261);}(_0x16cb,0x1ca));var _0xb16c=function(_0x3db47d,_0x2dd66e){_0x3db47d=_0x3db47d-0x0;var _0x34a00f=_0x16cb[_0x3db47d];return _0x34a00f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb16c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb16c('0x1'));var moment=require(_0xb16c('0x2'));var BPromise=require(_0xb16c('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb16c('0x4'));var sox=require(_0xb16c('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb16c('0x6'));var _=require(_0xb16c('0x7'));var squel=require('squel');var crypto=require(_0xb16c('0x8'));var jsforce=require(_0xb16c('0x9'));var deskjs=require(_0xb16c('0xa'));var toCsv=require(_0xb16c('0xb'));var querystring=require(_0xb16c('0xc'));var Papa=require(_0xb16c('0xd'));var Redis=require(_0xb16c('0xe'));var authService=require(_0xb16c('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb16c('0x10'));var logger=require(_0xb16c('0x11'))(_0xb16c('0x12'));var utils=require(_0xb16c('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xb16c('0x14'));var db=require(_0xb16c('0x15'))['db'];function respondWithStatusCode(_0x4e8e82,_0x3a0a65){_0x3a0a65=_0x3a0a65||0xcc;return function(_0x484236){if(_0x484236){return _0x4e8e82[_0xb16c('0x16')](_0x3a0a65);}return _0x4e8e82[_0xb16c('0x17')](_0x3a0a65)[_0xb16c('0x18')]();};}function respondWithResult(_0x5746bc,_0x2fa663){_0x2fa663=_0x2fa663||0xc8;return function(_0x13deb5){if(_0x13deb5){return _0x5746bc['status'](_0x2fa663)[_0xb16c('0x19')](_0x13deb5);}};}function respondWithFilteredResult(_0x35fc77,_0x57ce78){return function(_0x208760){if(_0x208760){var _0x5cf57c=typeof _0x57ce78[_0xb16c('0x1a')]===_0xb16c('0x1b')&&typeof _0x57ce78[_0xb16c('0x1c')]===_0xb16c('0x1b');var _0x3cb364=_0x208760[_0xb16c('0x1d')];var _0x147cf0=_0x5cf57c?0x0:_0x57ce78[_0xb16c('0x1a')];var _0x493cd9=_0x5cf57c?_0x208760[_0xb16c('0x1d')]:_0x57ce78['offset']+_0x57ce78[_0xb16c('0x1c')];var _0x3f5b92;if(_0x493cd9>=_0x3cb364){_0x493cd9=_0x3cb364;_0x3f5b92=0xc8;}else{_0x3f5b92=0xce;}_0x35fc77[_0xb16c('0x17')](_0x3f5b92);return _0x35fc77[_0xb16c('0x1e')](_0xb16c('0x1f'),_0x147cf0+'-'+_0x493cd9+'/'+_0x3cb364)['json'](_0x208760);}return null;};}function patchUpdates(_0x2679a3){return function(_0xd64225){try{jsonpatch['apply'](_0xd64225,_0x2679a3,!![]);}catch(_0x30e37e){return BPromise['reject'](_0x30e37e);}return _0xd64225[_0xb16c('0x20')]();};}function saveUpdates(_0x27df3e,_0x9664fb){return function(_0x4a28cd){if(_0x4a28cd){return _0x4a28cd[_0xb16c('0x21')](_0x27df3e)[_0xb16c('0x22')](function(_0x39b007){return _0x39b007;});}return null;};}function removeEntity(_0xf51640,_0x32c9f5){return function(_0x1ee571){if(_0x1ee571){return _0x1ee571[_0xb16c('0x23')]()[_0xb16c('0x22')](function(){_0xf51640[_0xb16c('0x17')](0xcc)[_0xb16c('0x18')]();});}};}function handleEntityNotFound(_0x5f1797,_0x3b6282){return function(_0x5e6b14){if(!_0x5e6b14){_0x5f1797[_0xb16c('0x16')](0x194);}return _0x5e6b14;};}function handleError(_0x3766fe,_0x29fc5b){_0x29fc5b=_0x29fc5b||0x1f4;return function(_0x355f1f){logger[_0xb16c('0x24')](_0x355f1f['stack']);if(_0x355f1f[_0xb16c('0x25')]){delete _0x355f1f['name'];}_0x3766fe[_0xb16c('0x17')](_0x29fc5b)[_0xb16c('0x26')](_0x355f1f);};}exports[_0xb16c('0x27')]=function(_0x5dee87,_0x5bc1c0){var _0x2667fc={},_0x403bcf={},_0x3d032f={'count':0x0,'rows':[]};var _0x4f130f=_[_0xb16c('0x28')](db['MailTransferReport']['rawAttributes'],function(_0x3d854d){return{'name':_0x3d854d[_0xb16c('0x29')],'type':_0x3d854d['type']['key']};});_0x403bcf[_0xb16c('0x2a')]=_[_0xb16c('0x28')](_0x4f130f,_0xb16c('0x25'));_0x403bcf[_0xb16c('0x2b')]=_[_0xb16c('0x2c')](_0x5dee87[_0xb16c('0x2b')]);_0x403bcf['filters']=_['intersection'](_0x403bcf['model'],_0x403bcf[_0xb16c('0x2b')]);_0x2667fc[_0xb16c('0x2d')]=_[_0xb16c('0x2e')](_0x403bcf[_0xb16c('0x2a')],qs[_0xb16c('0x2f')](_0x5dee87[_0xb16c('0x2b')][_0xb16c('0x2f')]));_0x2667fc['attributes']=_0x2667fc[_0xb16c('0x2d')][_0xb16c('0x30')]?_0x2667fc[_0xb16c('0x2d')]:_0x403bcf[_0xb16c('0x2a')];if(!_0x5dee87[_0xb16c('0x2b')][_0xb16c('0x31')](_0xb16c('0x32'))){_0x2667fc[_0xb16c('0x1c')]=qs[_0xb16c('0x1c')](_0x5dee87[_0xb16c('0x2b')][_0xb16c('0x1c')]);_0x2667fc['offset']=qs[_0xb16c('0x1a')](_0x5dee87[_0xb16c('0x2b')][_0xb16c('0x1a')]);}_0x2667fc['order']=qs[_0xb16c('0x33')](_0x5dee87[_0xb16c('0x2b')]['sort']);_0x2667fc[_0xb16c('0x34')]=qs[_0xb16c('0x35')](_[_0xb16c('0x36')](_0x5dee87['query'],_0x403bcf[_0xb16c('0x35')]),_0x4f130f);if(_0x5dee87['query']['filter']){_0x2667fc['where']=_['merge'](_0x2667fc[_0xb16c('0x34')],{'$or':_[_0xb16c('0x28')](_0x4f130f,function(_0x5cdce3){if(_0x5cdce3[_0xb16c('0x37')]!==_0xb16c('0x38')){var _0x4b6dea={};_0x4b6dea[_0x5cdce3[_0xb16c('0x25')]]={'$like':'%'+_0x5dee87[_0xb16c('0x2b')][_0xb16c('0x39')]+'%'};return _0x4b6dea;}})});}_0x2667fc=_[_0xb16c('0x3a')]({},_0x2667fc,_0x5dee87[_0xb16c('0x3b')]);var _0x127109={'where':_0x2667fc['where']};return db[_0xb16c('0x3c')][_0xb16c('0x1d')](_0x127109)[_0xb16c('0x22')](function(_0x55e8e4){_0x3d032f[_0xb16c('0x1d')]=_0x55e8e4;if(_0x5dee87[_0xb16c('0x2b')]['includeAll']){_0x2667fc[_0xb16c('0x3d')]=[{'all':!![]}];}return db[_0xb16c('0x3c')][_0xb16c('0x3e')](_0x2667fc);})[_0xb16c('0x22')](function(_0x579a09){_0x3d032f[_0xb16c('0x3f')]=_0x579a09;return _0x3d032f;})[_0xb16c('0x22')](respondWithFilteredResult(_0x5bc1c0,_0x2667fc))[_0xb16c('0x40')](handleError(_0x5bc1c0,null));};exports[_0xb16c('0x41')]=function(_0x3cb1e2,_0x5b142b){var _0x279ea7={'raw':!![],'where':{'id':_0x3cb1e2['params']['id']}},_0x253656={};_0x253656[_0xb16c('0x2a')]=_['keys'](db[_0xb16c('0x3c')]['rawAttributes']);_0x253656['query']=_[_0xb16c('0x2c')](_0x3cb1e2[_0xb16c('0x2b')]);_0x253656['filters']=_['intersection'](_0x253656[_0xb16c('0x2a')],_0x253656[_0xb16c('0x2b')]);_0x279ea7['attributes']=_[_0xb16c('0x2e')](_0x253656['model'],qs[_0xb16c('0x2f')](_0x3cb1e2[_0xb16c('0x2b')][_0xb16c('0x2f')]));_0x279ea7[_0xb16c('0x2d')]=_0x279ea7[_0xb16c('0x2d')][_0xb16c('0x30')]?_0x279ea7[_0xb16c('0x2d')]:_0x253656[_0xb16c('0x2a')];if(_0x3cb1e2['query'][_0xb16c('0x42')]){_0x279ea7[_0xb16c('0x3d')]=[{'all':!![]}];}_0x279ea7=_[_0xb16c('0x3a')]({},_0x279ea7,_0x3cb1e2['options']);return db[_0xb16c('0x3c')][_0xb16c('0x43')](_0x279ea7)[_0xb16c('0x22')](handleEntityNotFound(_0x5b142b,null))[_0xb16c('0x22')](respondWithResult(_0x5b142b,null))[_0xb16c('0x40')](handleError(_0x5b142b,null));};exports[_0xb16c('0x44')]=function(_0xc117ed,_0x50569a){return db[_0xb16c('0x3c')][_0xb16c('0x44')](_0xc117ed[_0xb16c('0x45')],{})['then'](respondWithResult(_0x50569a,0xc9))[_0xb16c('0x40')](handleError(_0x50569a,null));};exports[_0xb16c('0x21')]=function(_0x46f81c,_0x5b6dec){if(_0x46f81c[_0xb16c('0x45')]['id']){delete _0x46f81c[_0xb16c('0x45')]['id'];}return db[_0xb16c('0x3c')][_0xb16c('0x43')]({'where':{'id':_0x46f81c[_0xb16c('0x46')]['id']}})['then'](handleEntityNotFound(_0x5b6dec,null))[_0xb16c('0x22')](saveUpdates(_0x46f81c[_0xb16c('0x45')],null))['then'](respondWithResult(_0x5b6dec,null))[_0xb16c('0x40')](handleError(_0x5b6dec,null));};exports[_0xb16c('0x23')]=function(_0x51a0ca,_0x2300fc){return db[_0xb16c('0x3c')][_0xb16c('0x43')]({'where':{'id':_0x51a0ca[_0xb16c('0x46')]['id']}})['then'](handleEntityNotFound(_0x2300fc,null))[_0xb16c('0x22')](removeEntity(_0x2300fc,null))['catch'](handleError(_0x2300fc,null));};exports['describe']=function(_0x6d6919,_0x12b4de){return db['MailTransferReport'][_0xb16c('0x47')]()[_0xb16c('0x22')](respondWithResult(_0x12b4de,null))[_0xb16c('0x40')](handleError(_0x12b4de,null));};
\ No newline at end of file
+var _0xf298=['keys','query','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','rawAttributes','catch','create','body','find','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','name','send','index','MailTransferReport','type','key','model'];(function(_0x19b3f9,_0xade753){var _0x18c3f6=function(_0x21439f){while(--_0x21439f){_0x19b3f9['push'](_0x19b3f9['shift']());}};_0x18c3f6(++_0xade753);}(_0xf298,0xb0));var _0x8f29=function(_0x254072,_0x4cc74a){_0x254072=_0x254072-0x0;var _0x1d0f03=_0xf298[_0x254072];return _0x1d0f03;};'use strict';var emlformat=require(_0x8f29('0x0'));var rimraf=require(_0x8f29('0x1'));var zipdir=require(_0x8f29('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8f29('0x3'));var moment=require(_0x8f29('0x4'));var BPromise=require(_0x8f29('0x5'));var Mustache=require(_0x8f29('0x6'));var util=require('util');var path=require(_0x8f29('0x7'));var sox=require(_0x8f29('0x8'));var csv=require('to-csv');var ejs=require(_0x8f29('0x9'));var fs=require('fs');var fs_extra=require(_0x8f29('0xa'));var _=require(_0x8f29('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8f29('0xc'));var deskjs=require(_0x8f29('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8f29('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8f29('0xf'));var qs=require(_0x8f29('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8f29('0x11'))('api');var utils=require(_0x8f29('0x12'));var config=require(_0x8f29('0x13'));var licenseUtil=require(_0x8f29('0x14'));var db=require(_0x8f29('0x15'))['db'];function respondWithStatusCode(_0x368e13,_0x80b7f2){_0x80b7f2=_0x80b7f2||0xcc;return function(_0x381a58){if(_0x381a58){return _0x368e13[_0x8f29('0x16')](_0x80b7f2);}return _0x368e13[_0x8f29('0x17')](_0x80b7f2)['end']();};}function respondWithResult(_0x3bb561,_0x4e6d36){_0x4e6d36=_0x4e6d36||0xc8;return function(_0xbde421){if(_0xbde421){return _0x3bb561[_0x8f29('0x17')](_0x4e6d36)[_0x8f29('0x18')](_0xbde421);}};}function respondWithFilteredResult(_0x89df32,_0x2bc3bc){return function(_0xfd31d8){if(_0xfd31d8){var _0x52cf61=typeof _0x2bc3bc[_0x8f29('0x19')]===_0x8f29('0x1a')&&typeof _0x2bc3bc['limit']===_0x8f29('0x1a');var _0x38f0b9=_0xfd31d8[_0x8f29('0x1b')];var _0xba5063=_0x52cf61?0x0:_0x2bc3bc['offset'];var _0x5d8ab5=_0x52cf61?_0xfd31d8[_0x8f29('0x1b')]:_0x2bc3bc[_0x8f29('0x19')]+_0x2bc3bc[_0x8f29('0x1c')];var _0x2729a7;if(_0x5d8ab5>=_0x38f0b9){_0x5d8ab5=_0x38f0b9;_0x2729a7=0xc8;}else{_0x2729a7=0xce;}_0x89df32[_0x8f29('0x17')](_0x2729a7);return _0x89df32[_0x8f29('0x1d')](_0x8f29('0x1e'),_0xba5063+'-'+_0x5d8ab5+'/'+_0x38f0b9)[_0x8f29('0x18')](_0xfd31d8);}return null;};}function patchUpdates(_0x3fc9b6){return function(_0x4d93e0){try{jsonpatch[_0x8f29('0x1f')](_0x4d93e0,_0x3fc9b6,!![]);}catch(_0x37c45f){return BPromise[_0x8f29('0x20')](_0x37c45f);}return _0x4d93e0[_0x8f29('0x21')]();};}function saveUpdates(_0x45c728,_0x15227f){return function(_0x15a7a5){if(_0x15a7a5){return _0x15a7a5[_0x8f29('0x22')](_0x45c728)[_0x8f29('0x23')](function(_0x4392c0){return _0x4392c0;});}return null;};}function removeEntity(_0x34feb3,_0xe75007){return function(_0x29e395){if(_0x29e395){return _0x29e395[_0x8f29('0x24')]()['then'](function(){_0x34feb3['status'](0xcc)[_0x8f29('0x25')]();});}};}function handleEntityNotFound(_0x13576d,_0x336957){return function(_0x2446f1){if(!_0x2446f1){_0x13576d[_0x8f29('0x16')](0x194);}return _0x2446f1;};}function handleError(_0x1c2fdf,_0x29c4f0){_0x29c4f0=_0x29c4f0||0x1f4;return function(_0xaa6e0a){logger[_0x8f29('0x26')](_0xaa6e0a['stack']);if(_0xaa6e0a[_0x8f29('0x27')]){delete _0xaa6e0a[_0x8f29('0x27')];}_0x1c2fdf[_0x8f29('0x17')](_0x29c4f0)[_0x8f29('0x28')](_0xaa6e0a);};}exports[_0x8f29('0x29')]=function(_0x118d17,_0xe8142d){var _0x3c2932={},_0x265d2a={},_0x3bf70b={'count':0x0,'rows':[]};var _0x598d8d=_['map'](db[_0x8f29('0x2a')]['rawAttributes'],function(_0xcde97d){return{'name':_0xcde97d['fieldName'],'type':_0xcde97d[_0x8f29('0x2b')][_0x8f29('0x2c')]};});_0x265d2a[_0x8f29('0x2d')]=_['map'](_0x598d8d,_0x8f29('0x27'));_0x265d2a['query']=_[_0x8f29('0x2e')](_0x118d17[_0x8f29('0x2f')]);_0x265d2a['filters']=_[_0x8f29('0x30')](_0x265d2a[_0x8f29('0x2d')],_0x265d2a['query']);_0x3c2932['attributes']=_['intersection'](_0x265d2a['model'],qs[_0x8f29('0x31')](_0x118d17[_0x8f29('0x2f')]['fields']));_0x3c2932[_0x8f29('0x32')]=_0x3c2932['attributes'][_0x8f29('0x33')]?_0x3c2932[_0x8f29('0x32')]:_0x265d2a[_0x8f29('0x2d')];if(!_0x118d17[_0x8f29('0x2f')]['hasOwnProperty'](_0x8f29('0x34'))){_0x3c2932[_0x8f29('0x1c')]=qs[_0x8f29('0x1c')](_0x118d17[_0x8f29('0x2f')][_0x8f29('0x1c')]);_0x3c2932[_0x8f29('0x19')]=qs[_0x8f29('0x19')](_0x118d17[_0x8f29('0x2f')][_0x8f29('0x19')]);}_0x3c2932[_0x8f29('0x35')]=qs[_0x8f29('0x36')](_0x118d17[_0x8f29('0x2f')][_0x8f29('0x36')]);_0x3c2932[_0x8f29('0x37')]=qs['filters'](_[_0x8f29('0x38')](_0x118d17[_0x8f29('0x2f')],_0x265d2a[_0x8f29('0x39')]),_0x598d8d);if(_0x118d17[_0x8f29('0x2f')][_0x8f29('0x3a')]){_0x3c2932['where']=_[_0x8f29('0x3b')](_0x3c2932[_0x8f29('0x37')],{'$or':_['map'](_0x598d8d,function(_0x1b81d6){if(_0x1b81d6[_0x8f29('0x2b')]!==_0x8f29('0x3c')){var _0x3f0573={};_0x3f0573[_0x1b81d6[_0x8f29('0x27')]]={'$like':'%'+_0x118d17[_0x8f29('0x2f')][_0x8f29('0x3a')]+'%'};return _0x3f0573;}})});}_0x3c2932=_[_0x8f29('0x3b')]({},_0x3c2932,_0x118d17[_0x8f29('0x3d')]);var _0xa23f08={'where':_0x3c2932['where']};return db[_0x8f29('0x2a')]['count'](_0xa23f08)[_0x8f29('0x23')](function(_0x202951){_0x3bf70b[_0x8f29('0x1b')]=_0x202951;if(_0x118d17[_0x8f29('0x2f')][_0x8f29('0x3e')]){_0x3c2932[_0x8f29('0x3f')]=[{'all':!![]}];}return db[_0x8f29('0x2a')][_0x8f29('0x40')](_0x3c2932);})[_0x8f29('0x23')](function(_0x3a1665){_0x3bf70b[_0x8f29('0x41')]=_0x3a1665;return _0x3bf70b;})[_0x8f29('0x23')](respondWithFilteredResult(_0xe8142d,_0x3c2932))['catch'](handleError(_0xe8142d,null));};exports[_0x8f29('0x42')]=function(_0x4217a2,_0x4ea9be){var _0x83f922={'raw':!![],'where':{'id':_0x4217a2['params']['id']}},_0x3bec05={};_0x3bec05[_0x8f29('0x2d')]=_[_0x8f29('0x2e')](db[_0x8f29('0x2a')][_0x8f29('0x43')]);_0x3bec05[_0x8f29('0x2f')]=_[_0x8f29('0x2e')](_0x4217a2[_0x8f29('0x2f')]);_0x3bec05['filters']=_[_0x8f29('0x30')](_0x3bec05[_0x8f29('0x2d')],_0x3bec05['query']);_0x83f922[_0x8f29('0x32')]=_[_0x8f29('0x30')](_0x3bec05[_0x8f29('0x2d')],qs['fields'](_0x4217a2[_0x8f29('0x2f')][_0x8f29('0x31')]));_0x83f922[_0x8f29('0x32')]=_0x83f922['attributes'][_0x8f29('0x33')]?_0x83f922[_0x8f29('0x32')]:_0x3bec05[_0x8f29('0x2d')];if(_0x4217a2[_0x8f29('0x2f')][_0x8f29('0x3e')]){_0x83f922['include']=[{'all':!![]}];}_0x83f922=_[_0x8f29('0x3b')]({},_0x83f922,_0x4217a2['options']);return db[_0x8f29('0x2a')]['find'](_0x83f922)[_0x8f29('0x23')](handleEntityNotFound(_0x4ea9be,null))[_0x8f29('0x23')](respondWithResult(_0x4ea9be,null))[_0x8f29('0x44')](handleError(_0x4ea9be,null));};exports['create']=function(_0xa2f085,_0x48f6e0){return db[_0x8f29('0x2a')][_0x8f29('0x45')](_0xa2f085[_0x8f29('0x46')],{})[_0x8f29('0x23')](respondWithResult(_0x48f6e0,0xc9))[_0x8f29('0x44')](handleError(_0x48f6e0,null));};exports[_0x8f29('0x22')]=function(_0x6036c,_0x37711e){if(_0x6036c[_0x8f29('0x46')]['id']){delete _0x6036c[_0x8f29('0x46')]['id'];}return db['MailTransferReport'][_0x8f29('0x47')]({'where':{'id':_0x6036c[_0x8f29('0x48')]['id']}})[_0x8f29('0x23')](handleEntityNotFound(_0x37711e,null))[_0x8f29('0x23')](saveUpdates(_0x6036c[_0x8f29('0x46')],null))[_0x8f29('0x23')](respondWithResult(_0x37711e,null))[_0x8f29('0x44')](handleError(_0x37711e,null));};exports[_0x8f29('0x24')]=function(_0x5bdd87,_0x5500c8){return db[_0x8f29('0x2a')][_0x8f29('0x47')]({'where':{'id':_0x5bdd87[_0x8f29('0x48')]['id']}})[_0x8f29('0x23')](handleEntityNotFound(_0x5500c8,null))[_0x8f29('0x23')](removeEntity(_0x5500c8,null))['catch'](handleError(_0x5500c8,null));};exports[_0x8f29('0x49')]=function(_0x52c735,_0x4fc09a){return db['MailTransferReport']['describe']()[_0x8f29('0x23')](respondWithResult(_0x4fc09a,null))['catch'](handleError(_0x4fc09a,null));};
\ No newline at end of file
index 9ad91fd..f830962 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x252f=['./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x40302f,_0x1c909c){var _0x27a251=function(_0x21808b){while(--_0x21808b){_0x40302f['push'](_0x40302f['shift']());}};_0x27a251(++_0x1c909c);}(_0x252f,0x1e2));var _0xf252=function(_0x1e7f4d,_0x20acaa){_0x1e7f4d=_0x1e7f4d-0x0;var _0x5f0fd9=_0x252f[_0x1e7f4d];return _0x5f0fd9;};'use strict';var _=require(_0xf252('0x0'));var util=require('util');var logger=require(_0xf252('0x1'))(_0xf252('0x2'));var moment=require(_0xf252('0x3'));var BPromise=require(_0xf252('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf252('0x5'));var rimraf=require(_0xf252('0x6'));var config=require(_0xf252('0x7'));var attributes=require(_0xf252('0x8'));module[_0xf252('0x9')]=function(_0x2bb2e8,_0x351b14){return _0x2bb2e8[_0xf252('0xa')](_0xf252('0xb'),attributes,{'tableName':_0xf252('0xc'),'paranoid':![],'indexes':[{'name':_0xf252('0xd'),'fields':[_0xf252('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9933=['util','api','bluebird','request-promise','path','exports','define','MailTransferReport','uniqueid','lodash'];(function(_0xf00357,_0xfbb768){var _0x1699e0=function(_0x1b04f2){while(--_0x1b04f2){_0xf00357['push'](_0xf00357['shift']());}};_0x1699e0(++_0xfbb768);}(_0x9933,0xe5));var _0x3993=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x9933[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x3993('0x0'));var util=require(_0x3993('0x1'));var logger=require('../../config/logger')(_0x3993('0x2'));var moment=require('moment');var BPromise=require(_0x3993('0x3'));var rp=require(_0x3993('0x4'));var fs=require('fs');var path=require(_0x3993('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./mailTransferReport.attributes');module[_0x3993('0x6')]=function(_0x537de0,_0x43d802){return _0x537de0[_0x3993('0x7')](_0x3993('0x8'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x3993('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 3f0dc20..c679964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x016e=['../../config/logger','rpc','jayson/promise','http','request','info','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','MailTransferReport,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','moment','bluebird'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x016e,0x1e3));var _0xe016=function(_0x45d2ec,_0x5736a5){_0x45d2ec=_0x45d2ec-0x0;var _0x454a8f=_0x016e[_0x45d2ec];return _0x454a8f;};'use strict';var _=require(_0xe016('0x0'));var util=require('util');var moment=require(_0xe016('0x1'));var BPromise=require(_0xe016('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xe016('0x3'))(_0xe016('0x4'));var config=require('../../config/environment');var jayson=require(_0xe016('0x5'));var client=jayson['client'][_0xe016('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x320276,_0x8e7596,_0x28dace){return new BPromise(function(_0xcc825d,_0x1f7d9c){return client[_0xe016('0x7')](_0x320276,_0x28dace)['then'](function(_0x374c49){logger[_0xe016('0x8')]('MailTransferReport,\x20%s,\x20%s',_0x8e7596,'request\x20sent');logger['debug'](_0xe016('0x9'),_0x8e7596,'request\x20sent',JSON[_0xe016('0xa')](_0x374c49));if(_0x374c49['error']){if(_0x374c49[_0xe016('0xb')][_0xe016('0xc')]===0x1f4){logger[_0xe016('0xb')](_0xe016('0xd'),_0x8e7596,_0x374c49['error'][_0xe016('0xe')]);return _0x1f7d9c(_0x374c49['error'][_0xe016('0xe')]);}logger['error'](_0xe016('0xd'),_0x8e7596,_0x374c49['error'][_0xe016('0xe')]);return _0xcc825d(_0x374c49[_0xe016('0xb')][_0xe016('0xe')]);}else{logger['info'](_0xe016('0xd'),_0x8e7596,_0xe016('0xf'));_0xcc825d(_0x374c49[_0xe016('0x10')]['message']);}})[_0xe016('0x11')](function(_0x41cae0){logger[_0xe016('0xb')](_0xe016('0xd'),_0x8e7596,_0x41cae0);_0x1f7d9c(_0x41cae0);});});}
\ No newline at end of file
+var _0x4fbe=['info','MailTransferReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x4fbe,0x172));var _0xe4fb=function(_0x3ea7aa,_0x322bac){_0x3ea7aa=_0x3ea7aa-0x0;var _0x339ad2=_0x4fbe[_0x3ea7aa];return _0x339ad2;};'use strict';var _=require('lodash');var util=require(_0xe4fb('0x0'));var moment=require('moment');var BPromise=require(_0xe4fb('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe4fb('0x2'));var db=require(_0xe4fb('0x3'))['db'];var utils=require(_0xe4fb('0x4'));var logger=require('../../config/logger')(_0xe4fb('0x5'));var config=require(_0xe4fb('0x6'));var jayson=require(_0xe4fb('0x7'));var client=jayson[_0xe4fb('0x8')][_0xe4fb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x337314,_0x2e123a,_0x5f2869){return new BPromise(function(_0xe09ba1,_0x351b5c){return client['request'](_0x337314,_0x5f2869)['then'](function(_0x17d6c7){logger[_0xe4fb('0xa')](_0xe4fb('0xb'),_0x2e123a,_0xe4fb('0xc'));logger['debug']('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x2e123a,_0xe4fb('0xc'),JSON[_0xe4fb('0xd')](_0x17d6c7));if(_0x17d6c7[_0xe4fb('0xe')]){if(_0x17d6c7['error'][_0xe4fb('0xf')]===0x1f4){logger[_0xe4fb('0xe')](_0xe4fb('0xb'),_0x2e123a,_0x17d6c7[_0xe4fb('0xe')][_0xe4fb('0x10')]);return _0x351b5c(_0x17d6c7['error'][_0xe4fb('0x10')]);}logger[_0xe4fb('0xe')]('MailTransferReport,\x20%s,\x20%s',_0x2e123a,_0x17d6c7[_0xe4fb('0xe')][_0xe4fb('0x10')]);return _0xe09ba1(_0x17d6c7[_0xe4fb('0xe')]['message']);}else{logger[_0xe4fb('0xa')](_0xe4fb('0xb'),_0x2e123a,_0xe4fb('0xc'));_0xe09ba1(_0x17d6c7[_0xe4fb('0x11')][_0xe4fb('0x10')]);}})[_0xe4fb('0x12')](function(_0x23a2a4){logger['error'](_0xe4fb('0xb'),_0x2e123a,_0x23a2a4);_0x351b5c(_0x23a2a4);});});}
\ No newline at end of file
index 2b226d9..2254d30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08b7=['Router','../../components/auth/service','./memberReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','destroy','multer','util','path','express'];(function(_0x4444ab,_0x3fc6ad){var _0x4d86e9=function(_0x33905c){while(--_0x33905c){_0x4444ab['push'](_0x4444ab['shift']());}};_0x4d86e9(++_0x3fc6ad);}(_0x08b7,0x9c));var _0x708b=function(_0x3191b4,_0x357c67){_0x3191b4=_0x3191b4-0x0;var _0x2aaf8a=_0x08b7[_0x3191b4];return _0x2aaf8a;};'use strict';var multer=require(_0x708b('0x0'));var util=require(_0x708b('0x1'));var path=require(_0x708b('0x2'));var timeout=require('connect-timeout');var express=require(_0x708b('0x3'));var router=express[_0x708b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x708b('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x708b('0x6'));router[_0x708b('0x7')]('/',auth[_0x708b('0x8')](),controller['index']);router[_0x708b('0x7')](_0x708b('0x9'),auth[_0x708b('0x8')](),controller[_0x708b('0xa')]);router[_0x708b('0x7')](_0x708b('0xb'),auth['isAuthenticated'](),controller[_0x708b('0xc')]);router[_0x708b('0xd')]('/',auth[_0x708b('0x8')](),controller[_0x708b('0xe')]);router['put'](_0x708b('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x708b('0xb'),auth['isAuthenticated'](),controller[_0x708b('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x3b6e=['../../components/interaction/service','../../config/environment','./memberReport.controller','get','index','isAuthenticated','post','put','/:id','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x4dde60,_0x37204b){var _0x4e6b7f=function(_0x5e486b){while(--_0x5e486b){_0x4dde60['push'](_0x4dde60['shift']());}};_0x4e6b7f(++_0x37204b);}(_0x3b6e,0x19b));var _0xe3b6=function(_0xd133f2,_0x4eb0ab){_0xd133f2=_0xd133f2-0x0;var _0x202c8b=_0x3b6e[_0xd133f2];return _0x202c8b;};'use strict';var multer=require('multer');var util=require(_0xe3b6('0x0'));var path=require(_0xe3b6('0x1'));var timeout=require(_0xe3b6('0x2'));var express=require(_0xe3b6('0x3'));var router=express[_0xe3b6('0x4')]();var fs_extra=require(_0xe3b6('0x5'));var auth=require(_0xe3b6('0x6'));var interaction=require(_0xe3b6('0x7'));var config=require(_0xe3b6('0x8'));var controller=require(_0xe3b6('0x9'));router[_0xe3b6('0xa')]('/',auth['isAuthenticated'](),controller[_0xe3b6('0xb')]);router[_0xe3b6('0xa')]('/describe',auth[_0xe3b6('0xc')](),controller['describe']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0xe3b6('0xd')]('/',auth[_0xe3b6('0xc')](),controller['create']);router[_0xe3b6('0xe')](_0xe3b6('0xf'),auth[_0xe3b6('0xc')](),controller[_0xe3b6('0x10')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xe3b6('0x11')]);module[_0xe3b6('0x12')]=router;
\ No newline at end of file
index 3f9954e..0c84e32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x720c=['sequelize','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','diff','seconds','setDataValue','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','talk:[queue]'];(function(_0x3a7fc2,_0x2a5b3b){var _0x295a6a=function(_0x24792f){while(--_0x24792f){_0x3a7fc2['push'](_0x3a7fc2['shift']());}};_0x295a6a(++_0x2a5b3b);}(_0x720c,0x154));var _0xc720=function(_0x336c8e,_0x564361){_0x336c8e=_0x336c8e-0x0;var _0x4d33ee=_0x720c[_0x336c8e];return _0x4d33ee;};'use strict';var Sequelize=require(_0xc720('0x0'));var moment=require('moment');module[_0xc720('0x1')]={'channel':{'type':Sequelize[_0xc720('0x2')]},'membername':{'type':Sequelize[_0xc720('0x2')]},'interface':{'type':Sequelize[_0xc720('0x2')]},'type':{'type':Sequelize['STRING'],'defaultValue':_0xc720('0x3'),'comment':_0xc720('0x4')},'duration':{'type':Sequelize[_0xc720('0x5')]},'enterAt':{'type':Sequelize[_0xc720('0x6')]},'exitAt':{'type':Sequelize[_0xc720('0x6')],'set':function(_0x6f8d9f){var _0x7d6830=moment(_0x6f8d9f);var _0x5bc8b0=moment(this[_0xc720('0x7')](_0xc720('0x8')));var _0x10a2c8=_0x7d6830[_0xc720('0x9')](_0x5bc8b0,_0xc720('0xa'));this['setDataValue']('exitAt',_0x6f8d9f);this[_0xc720('0xb')]('duration',_0x10a2c8||null);}},'data1':{'type':Sequelize[_0xc720('0x2')],'comment':_0xc720('0xc')},'data2':{'type':Sequelize['STRING'],'comment':_0xc720('0xd')},'data3':{'type':Sequelize[_0xc720('0x2')],'comment':_0xc720('0xe')},'data4':{'type':Sequelize[_0xc720('0x2')],'comment':_0xc720('0xf')},'data5':{'type':Sequelize['STRING'],'comment':_0xc720('0x10')},'role':{'type':Sequelize[_0xc720('0x2')]},'internal':{'type':Sequelize[_0xc720('0x5')]},'uniqueid':{'type':Sequelize[_0xc720('0x2')]}};
\ No newline at end of file
+var _0xd0bb=['INTEGER','DATE','getDataValue','diff','seconds','setDataValue','exitAt','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE'];(function(_0x4c0332,_0x6e90a9){var _0x5ef834=function(_0x17877b){while(--_0x17877b){_0x4c0332['push'](_0x4c0332['shift']());}};_0x5ef834(++_0x6e90a9);}(_0xd0bb,0x1eb));var _0xbd0b=function(_0xbb5075,_0x50d7f5){_0xbb5075=_0xbb5075-0x0;var _0x902d8=_0xd0bb[_0xbb5075];return _0x902d8;};'use strict';var Sequelize=require(_0xbd0b('0x0'));var moment=require(_0xbd0b('0x1'));module[_0xbd0b('0x2')]={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xbd0b('0x3')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xbd0b('0x3')],'defaultValue':_0xbd0b('0x4'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0xbd0b('0x5')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xbd0b('0x6')],'set':function(_0x1b2499){var _0x158b5c=moment(_0x1b2499);var _0x37c205=moment(this[_0xbd0b('0x7')]('enterAt'));var _0x2a4075=_0x158b5c[_0xbd0b('0x8')](_0x37c205,_0xbd0b('0x9'));this[_0xbd0b('0xa')](_0xbd0b('0xb'),_0x1b2499);this['setDataValue']('duration',_0x2a4075||null);}},'data1':{'type':Sequelize[_0xbd0b('0x3')],'comment':_0xbd0b('0xc')},'data2':{'type':Sequelize['STRING'],'comment':_0xbd0b('0xd')},'data3':{'type':Sequelize[_0xbd0b('0x3')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0xbd0b('0x3')],'comment':_0xbd0b('0xe')},'data5':{'type':Sequelize[_0xbd0b('0x3')],'comment':_0xbd0b('0xf')},'role':{'type':Sequelize[_0xbd0b('0x3')]},'internal':{'type':Sequelize[_0xbd0b('0x5')]},'uniqueid':{'type':Sequelize[_0xbd0b('0x3')]}};
\ No newline at end of file
index c4cb97c..b2610bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['destroy','sendStatus','send','index','MemberReport','rawAttributes','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','catch','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','save','update','then'];(function(_0x135a1c,_0x28b5f6){var _0x295c98=function(_0x2747fc){while(--_0x2747fc){_0x135a1c['push'](_0x135a1c['shift']());}};_0x295c98(++_0x28b5f6);}(_0x008c,0x188));var _0xc008=function(_0x41c842,_0x3865f6){_0x41c842=_0x41c842-0x0;var _0x15ee6b=_0x008c[_0x41c842];return _0x15ee6b;};'use strict';var emlformat=require(_0xc008('0x0'));var rimraf=require(_0xc008('0x1'));var zipdir=require(_0xc008('0x2'));var jsonpatch=require(_0xc008('0x3'));var rp=require(_0xc008('0x4'));var moment=require('moment');var BPromise=require(_0xc008('0x5'));var Mustache=require(_0xc008('0x6'));var util=require(_0xc008('0x7'));var path=require(_0xc008('0x8'));var sox=require(_0xc008('0x9'));var csv=require(_0xc008('0xa'));var ejs=require(_0xc008('0xb'));var fs=require('fs');var fs_extra=require(_0xc008('0xc'));var _=require(_0xc008('0xd'));var squel=require('squel');var crypto=require(_0xc008('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc008('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc008('0x10'));var Redis=require(_0xc008('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc008('0x12'));var logger=require(_0xc008('0x13'))('api');var utils=require(_0xc008('0x14'));var config=require(_0xc008('0x15'));var licenseUtil=require(_0xc008('0x16'));var db=require(_0xc008('0x17'))['db'];function respondWithStatusCode(_0x9ffa93,_0x1819c6){_0x1819c6=_0x1819c6||0xcc;return function(_0x69726e){if(_0x69726e){return _0x9ffa93['sendStatus'](_0x1819c6);}return _0x9ffa93['status'](_0x1819c6)[_0xc008('0x18')]();};}function respondWithResult(_0x50c1ab,_0x25e13f){_0x25e13f=_0x25e13f||0xc8;return function(_0x4584e1){if(_0x4584e1){return _0x50c1ab[_0xc008('0x19')](_0x25e13f)[_0xc008('0x1a')](_0x4584e1);}};}function respondWithFilteredResult(_0x3f0ecf,_0x5ee00b){return function(_0x5e894e){if(_0x5e894e){var _0x4bd0f4=typeof _0x5ee00b[_0xc008('0x1b')]===_0xc008('0x1c')&&typeof _0x5ee00b[_0xc008('0x1d')]===_0xc008('0x1c');var _0x4fe771=_0x5e894e['count'];var _0x540e45=_0x4bd0f4?0x0:_0x5ee00b['offset'];var _0x46042b=_0x4bd0f4?_0x5e894e[_0xc008('0x1e')]:_0x5ee00b['offset']+_0x5ee00b[_0xc008('0x1d')];var _0x5906e6;if(_0x46042b>=_0x4fe771){_0x46042b=_0x4fe771;_0x5906e6=0xc8;}else{_0x5906e6=0xce;}_0x3f0ecf['status'](_0x5906e6);return _0x3f0ecf['set']('Content-Range',_0x540e45+'-'+_0x46042b+'/'+_0x4fe771)[_0xc008('0x1a')](_0x5e894e);}return null;};}function patchUpdates(_0x4b9726){return function(_0x5560b1){try{jsonpatch['apply'](_0x5560b1,_0x4b9726,!![]);}catch(_0x4a582d){return BPromise['reject'](_0x4a582d);}return _0x5560b1[_0xc008('0x1f')]();};}function saveUpdates(_0x4777a6,_0x251db2){return function(_0x415af3){if(_0x415af3){return _0x415af3[_0xc008('0x20')](_0x4777a6)[_0xc008('0x21')](function(_0x4f43e2){return _0x4f43e2;});}return null;};}function removeEntity(_0x459fd9,_0x5c85f2){return function(_0x58a6ea){if(_0x58a6ea){return _0x58a6ea[_0xc008('0x22')]()[_0xc008('0x21')](function(){_0x459fd9[_0xc008('0x19')](0xcc)[_0xc008('0x18')]();});}};}function handleEntityNotFound(_0x5410f5,_0x48582b){return function(_0x5de1e9){if(!_0x5de1e9){_0x5410f5[_0xc008('0x23')](0x194);}return _0x5de1e9;};}function handleError(_0x15dade,_0x92c582){_0x92c582=_0x92c582||0x1f4;return function(_0x2e31c2){logger['error'](_0x2e31c2['stack']);if(_0x2e31c2['name']){delete _0x2e31c2['name'];}_0x15dade['status'](_0x92c582)[_0xc008('0x24')](_0x2e31c2);};}exports[_0xc008('0x25')]=function(_0x25eae4,_0x529961){var _0x24c14c={},_0x32390d={},_0x209591={'count':0x0,'rows':[]};var _0x2a7d4f=_['map'](db[_0xc008('0x26')][_0xc008('0x27')],function(_0x53ed35){return{'name':_0x53ed35['fieldName'],'type':_0x53ed35['type'][_0xc008('0x28')]};});_0x32390d[_0xc008('0x29')]=_[_0xc008('0x2a')](_0x2a7d4f,_0xc008('0x2b'));_0x32390d[_0xc008('0x2c')]=_[_0xc008('0x2d')](_0x25eae4[_0xc008('0x2c')]);_0x32390d[_0xc008('0x2e')]=_[_0xc008('0x2f')](_0x32390d[_0xc008('0x29')],_0x32390d[_0xc008('0x2c')]);_0x24c14c[_0xc008('0x30')]=_['intersection'](_0x32390d[_0xc008('0x29')],qs[_0xc008('0x31')](_0x25eae4['query'][_0xc008('0x31')]));_0x24c14c[_0xc008('0x30')]=_0x24c14c[_0xc008('0x30')][_0xc008('0x32')]?_0x24c14c[_0xc008('0x30')]:_0x32390d[_0xc008('0x29')];if(!_0x25eae4[_0xc008('0x2c')][_0xc008('0x33')](_0xc008('0x34'))){_0x24c14c['limit']=qs[_0xc008('0x1d')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1d')]);_0x24c14c[_0xc008('0x1b')]=qs[_0xc008('0x1b')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1b')]);}_0x24c14c['order']=qs[_0xc008('0x35')](_0x25eae4[_0xc008('0x2c')]['sort']);_0x24c14c[_0xc008('0x36')]=qs[_0xc008('0x2e')](_['pick'](_0x25eae4[_0xc008('0x2c')],_0x32390d[_0xc008('0x2e')]),_0x2a7d4f);if(_0x25eae4[_0xc008('0x2c')]['filter']){_0x24c14c['where']=_['merge'](_0x24c14c[_0xc008('0x36')],{'$or':_['map'](_0x2a7d4f,function(_0x3dd0ac){if(_0x3dd0ac[_0xc008('0x37')]!==_0xc008('0x38')){var _0x440459={};_0x440459[_0x3dd0ac[_0xc008('0x2b')]]={'$like':'%'+_0x25eae4[_0xc008('0x2c')][_0xc008('0x39')]+'%'};return _0x440459;}})});}_0x24c14c=_[_0xc008('0x3a')]({},_0x24c14c,_0x25eae4[_0xc008('0x3b')]);var _0x387dfd={'where':_0x24c14c[_0xc008('0x36')]};return db[_0xc008('0x26')][_0xc008('0x1e')](_0x387dfd)[_0xc008('0x21')](function(_0x4cace5){_0x209591[_0xc008('0x1e')]=_0x4cace5;if(_0x25eae4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x24c14c[_0xc008('0x3d')]=[{'all':!![]}];}return db['MemberReport'][_0xc008('0x3e')](_0x24c14c);})[_0xc008('0x21')](function(_0xc8cb91){_0x209591[_0xc008('0x3f')]=_0xc8cb91;return _0x209591;})[_0xc008('0x21')](respondWithFilteredResult(_0x529961,_0x24c14c))['catch'](handleError(_0x529961,null));};exports[_0xc008('0x40')]=function(_0x3323f4,_0x3794b0){var _0x3e9a99={'raw':!![],'where':{'id':_0x3323f4['params']['id']}},_0x7279e8={};_0x7279e8[_0xc008('0x29')]=_[_0xc008('0x2d')](db[_0xc008('0x26')][_0xc008('0x27')]);_0x7279e8['query']=_[_0xc008('0x2d')](_0x3323f4[_0xc008('0x2c')]);_0x7279e8[_0xc008('0x2e')]=_['intersection'](_0x7279e8[_0xc008('0x29')],_0x7279e8['query']);_0x3e9a99[_0xc008('0x30')]=_['intersection'](_0x7279e8[_0xc008('0x29')],qs[_0xc008('0x31')](_0x3323f4['query'][_0xc008('0x31')]));_0x3e9a99[_0xc008('0x30')]=_0x3e9a99[_0xc008('0x30')]['length']?_0x3e9a99[_0xc008('0x30')]:_0x7279e8[_0xc008('0x29')];if(_0x3323f4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x3e9a99[_0xc008('0x3d')]=[{'all':!![]}];}_0x3e9a99=_[_0xc008('0x3a')]({},_0x3e9a99,_0x3323f4['options']);return db['MemberReport']['find'](_0x3e9a99)[_0xc008('0x21')](handleEntityNotFound(_0x3794b0,null))[_0xc008('0x21')](respondWithResult(_0x3794b0,null))[_0xc008('0x41')](handleError(_0x3794b0,null));};exports[_0xc008('0x42')]=function(_0x25289f,_0x24f6a4){return db[_0xc008('0x26')][_0xc008('0x42')](_0x25289f['body'],{})['then'](respondWithResult(_0x24f6a4,0xc9))['catch'](handleError(_0x24f6a4,null));};exports[_0xc008('0x20')]=function(_0x2651cf,_0x158eae){if(_0x2651cf['body']['id']){delete _0x2651cf[_0xc008('0x43')]['id'];}return db[_0xc008('0x26')][_0xc008('0x44')]({'where':{'id':_0x2651cf[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x158eae,null))[_0xc008('0x21')](saveUpdates(_0x2651cf[_0xc008('0x43')],null))[_0xc008('0x21')](respondWithResult(_0x158eae,null))[_0xc008('0x41')](handleError(_0x158eae,null));};exports[_0xc008('0x22')]=function(_0x52c444,_0x4c63d4){return db[_0xc008('0x26')]['find']({'where':{'id':_0x52c444[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x4c63d4,null))[_0xc008('0x21')](removeEntity(_0x4c63d4,null))['catch'](handleError(_0x4c63d4,null));};exports[_0xc008('0x46')]=function(_0x32b435,_0xee64){return db[_0xc008('0x26')][_0xc008('0x46')]()['then'](respondWithResult(_0xee64,null))[_0xc008('0x41')](handleError(_0xee64,null));};
\ No newline at end of file
+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(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0x34e8,0x12c));var _0x834e=function(_0x476ff6,_0x35f940){_0x476ff6=_0x476ff6-0x0;var _0x4c8893=_0x34e8[_0x476ff6];return _0x4c8893;};'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
index 4775deb..df6304a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc80=['bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','define','MemberReport','report_member','membername_interface','membername','interface','lodash','../../config/logger','api','moment'];(function(_0x58e5d8,_0x33f17f){var _0x4d53fd=function(_0x321e53){while(--_0x321e53){_0x58e5d8['push'](_0x58e5d8['shift']());}};_0x4d53fd(++_0x33f17f);}(_0xcc80,0xb7));var _0x0cc8=function(_0x31e8e8,_0x4e725c){_0x31e8e8=_0x31e8e8-0x0;var _0x52a543=_0xcc80[_0x31e8e8];return _0x52a543;};'use strict';var _=require(_0x0cc8('0x0'));var util=require('util');var logger=require(_0x0cc8('0x1'))(_0x0cc8('0x2'));var moment=require(_0x0cc8('0x3'));var BPromise=require(_0x0cc8('0x4'));var rp=require(_0x0cc8('0x5'));var fs=require('fs');var path=require(_0x0cc8('0x6'));var rimraf=require(_0x0cc8('0x7'));var config=require(_0x0cc8('0x8'));var attributes=require(_0x0cc8('0x9'));module[_0x0cc8('0xa')]=function(_0x29067d,_0x20fb1e){return _0x29067d[_0x0cc8('0xb')](_0x0cc8('0xc'),attributes,{'tableName':_0x0cc8('0xd'),'paranoid':![],'indexes':[{'name':_0x0cc8('0xe'),'fields':[_0x0cc8('0xf'),_0x0cc8('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2bf4=['exports','define','MemberReport','membername','util','../../config/logger','api','moment','bluebird','request-promise','./memberReport.attributes'];(function(_0xc77a27,_0x1366e7){var _0x51ebf9=function(_0x353b5c){while(--_0x353b5c){_0xc77a27['push'](_0xc77a27['shift']());}};_0x51ebf9(++_0x1366e7);}(_0x2bf4,0x117));var _0x42bf=function(_0x7af400,_0xfba5b8){_0x7af400=_0x7af400-0x0;var _0x552a76=_0x2bf4[_0x7af400];return _0x552a76;};'use strict';var _=require('lodash');var util=require(_0x42bf('0x0'));var logger=require(_0x42bf('0x1'))(_0x42bf('0x2'));var moment=require(_0x42bf('0x3'));var BPromise=require(_0x42bf('0x4'));var rp=require(_0x42bf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x42bf('0x6'));module[_0x42bf('0x7')]=function(_0x5bb11c,_0x675b44){return _0x5bb11c[_0x42bf('0x8')](_0x42bf('0x9'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':'membername_interface','fields':[_0x42bf('0xa'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
index eac39ea..3c58861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0272=['request\x20sent','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMemberReport','findAll','options','raw','where','attributes','limit','include','model','map','then','CreateMemberReport','MemberReport','create','UpdateMemberReport','update','body','debug','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','info','MemberReport,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0272,0x15a));var _0x2027=function(_0x284188,_0x3443f0){_0x284188=_0x284188-0x0;var _0x462e6d=_0x0272[_0x284188];return _0x462e6d;};'use strict';var _=require(_0x2027('0x0'));var util=require(_0x2027('0x1'));var moment=require('moment');var BPromise=require(_0x2027('0x2'));var rs=require(_0x2027('0x3'));var fs=require('fs');var Redis=require(_0x2027('0x4'));var db=require(_0x2027('0x5'))['db'];var utils=require(_0x2027('0x6'));var logger=require(_0x2027('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2027('0x8'));var client=jayson[_0x2027('0x9')][_0x2027('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54a8f1,_0x5cd8f3,_0x56c261){return new BPromise(function(_0x2ac3bd,_0x4eb86c){return client[_0x2027('0xb')](_0x54a8f1,_0x56c261)['then'](function(_0x2f549d){logger[_0x2027('0xc')](_0x2027('0xd'),_0x5cd8f3,_0x2027('0xe'));logger['debug'](_0x2027('0xf'),_0x5cd8f3,_0x2027('0xe'),JSON[_0x2027('0x10')](_0x2f549d));if(_0x2f549d[_0x2027('0x11')]){if(_0x2f549d[_0x2027('0x11')][_0x2027('0x12')]===0x1f4){logger['error'](_0x2027('0xd'),_0x5cd8f3,_0x2f549d[_0x2027('0x11')]['message']);return _0x4eb86c(_0x2f549d[_0x2027('0x11')][_0x2027('0x13')]);}logger[_0x2027('0x11')](_0x2027('0xd'),_0x5cd8f3,_0x2f549d['error'][_0x2027('0x13')]);return _0x2ac3bd(_0x2f549d['error'][_0x2027('0x13')]);}else{logger[_0x2027('0xc')](_0x2027('0xd'),_0x5cd8f3,_0x2027('0xe'));_0x2ac3bd(_0x2f549d[_0x2027('0x14')][_0x2027('0x13')]);}})[_0x2027('0x15')](function(_0x4e8bc8){logger[_0x2027('0x11')](_0x2027('0xd'),_0x5cd8f3,_0x4e8bc8);_0x4eb86c(_0x4e8bc8);});});}exports[_0x2027('0x16')]=function(_0x532a2c){var _0x3bd053=this;return new Promise(function(_0x5d47bf,_0x28092f){return db['MemberReport'][_0x2027('0x17')]({'raw':_0x532a2c[_0x2027('0x18')]?_0x532a2c[_0x2027('0x18')][_0x2027('0x19')]===undefined?!![]:![]:!![],'where':_0x532a2c['options']?_0x532a2c[_0x2027('0x18')][_0x2027('0x1a')]||null:null,'attributes':_0x532a2c[_0x2027('0x18')]?_0x532a2c['options'][_0x2027('0x1b')]||null:null,'limit':_0x532a2c[_0x2027('0x18')]?_0x532a2c[_0x2027('0x18')][_0x2027('0x1c')]||null:null,'include':_0x532a2c['options']?_0x532a2c[_0x2027('0x18')]['include']?_['map'](_0x532a2c[_0x2027('0x18')][_0x2027('0x1d')],function(_0x462ff){return{'model':db[_0x462ff['model']],'as':_0x462ff['as'],'attributes':_0x462ff['attributes'],'include':_0x462ff[_0x2027('0x1d')]?_['map'](_0x462ff[_0x2027('0x1d')],function(_0x250775){return{'model':db[_0x250775[_0x2027('0x1e')]],'as':_0x250775['as'],'attributes':_0x250775[_0x2027('0x1b')],'include':_0x250775[_0x2027('0x1d')]?_[_0x2027('0x1f')](_0x250775[_0x2027('0x1d')],function(_0x49f9f8){return{'model':db[_0x49f9f8[_0x2027('0x1e')]],'as':_0x49f9f8['as'],'attributes':_0x49f9f8[_0x2027('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2027('0x20')](function(_0x47b184){logger['info'](_0x2027('0x16'),_0x532a2c);logger['debug'](_0x2027('0x16'),_0x532a2c,JSON['stringify'](_0x47b184));_0x5d47bf(_0x47b184);})['catch'](function(_0x36f98d){logger[_0x2027('0x11')](_0x2027('0x16'),_0x36f98d[_0x2027('0x13')],_0x532a2c);_0x28092f(_0x3bd053[_0x2027('0x11')](0x1f4,_0x36f98d[_0x2027('0x13')]));});});};exports[_0x2027('0x21')]=function(_0x3b1bbd){var _0x510fc0=this;return new Promise(function(_0x2fe2a6,_0x3ae017){return db[_0x2027('0x22')][_0x2027('0x23')](_0x3b1bbd['body'],{'raw':_0x3b1bbd['options']?_0x3b1bbd[_0x2027('0x18')][_0x2027('0x19')]===undefined?!![]:![]:!![]})[_0x2027('0x20')](function(_0x320e52){logger[_0x2027('0xc')]('CreateMemberReport',_0x3b1bbd);logger['debug'](_0x2027('0x21'),_0x3b1bbd,JSON['stringify'](_0x320e52));_0x2fe2a6(_0x320e52);})[_0x2027('0x15')](function(_0x35b562){logger[_0x2027('0x11')](_0x2027('0x21'),_0x35b562[_0x2027('0x13')],_0x3b1bbd);_0x3ae017(_0x510fc0['error'](0x1f4,_0x35b562[_0x2027('0x13')]));});});};exports[_0x2027('0x24')]=function(_0xfa5977){var _0x4a6fb7=this;return new Promise(function(_0x2fcf0e,_0x4c9ed0){return db['MemberReport'][_0x2027('0x25')](_0xfa5977[_0x2027('0x26')],{'raw':_0xfa5977[_0x2027('0x18')]?_0xfa5977[_0x2027('0x18')][_0x2027('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xfa5977['options']?_0xfa5977['options'][_0x2027('0x1a')]||null:null,'attributes':_0xfa5977[_0x2027('0x18')]?_0xfa5977[_0x2027('0x18')][_0x2027('0x1b')]||null:null,'limit':_0xfa5977['options']?_0xfa5977['options'][_0x2027('0x1c')]||null:null})[_0x2027('0x20')](function(_0x4eaaaa){logger[_0x2027('0xc')](_0x2027('0x24'),_0xfa5977);logger[_0x2027('0x27')](_0x2027('0x24'),_0xfa5977,JSON[_0x2027('0x10')](_0x4eaaaa));_0x2fcf0e(_0x4eaaaa);})[_0x2027('0x15')](function(_0x1239b6){logger[_0x2027('0x11')](_0x2027('0x24'),_0x1239b6[_0x2027('0x13')],_0xfa5977);_0x4c9ed0(_0x4a6fb7['error'](0x1f4,_0x1239b6[_0x2027('0x13')]));});});};
\ No newline at end of file
+var _0xf981=['request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','error','code','MemberReport,\x20%s,\x20%s','message','result','catch','GetMemberReport','findAll','options','raw','where','attributes','limit','map','model','include','stringify','CreateMemberReport','body','UpdateMemberReport','MemberReport','update','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x4e00f3,_0x4e7ccc){var _0x2e3471=function(_0x485126){while(--_0x485126){_0x4e00f3['push'](_0x4e00f3['shift']());}};_0x2e3471(++_0x4e7ccc);}(_0xf981,0xe6));var _0x1f98=function(_0x195af0,_0x59df8d){_0x195af0=_0x195af0-0x0;var _0x32a7ad=_0xf981[_0x195af0];return _0x32a7ad;};'use strict';var _=require(_0x1f98('0x0'));var util=require(_0x1f98('0x1'));var moment=require(_0x1f98('0x2'));var BPromise=require(_0x1f98('0x3'));var rs=require(_0x1f98('0x4'));var fs=require('fs');var Redis=require(_0x1f98('0x5'));var db=require(_0x1f98('0x6'))['db'];var utils=require(_0x1f98('0x7'));var logger=require('../../config/logger')(_0x1f98('0x8'));var config=require(_0x1f98('0x9'));var jayson=require(_0x1f98('0xa'));var client=jayson[_0x1f98('0xb')][_0x1f98('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4a4526,_0x5cd3d5,_0x24a520){return new BPromise(function(_0x501423,_0x23e6a6){return client[_0x1f98('0xd')](_0x4a4526,_0x24a520)[_0x1f98('0xe')](function(_0x31b037){logger[_0x1f98('0xf')]('MemberReport,\x20%s,\x20%s',_0x5cd3d5,_0x1f98('0x10'));logger[_0x1f98('0x11')](_0x1f98('0x12'),_0x5cd3d5,_0x1f98('0x10'),JSON['stringify'](_0x31b037));if(_0x31b037[_0x1f98('0x13')]){if(_0x31b037['error'][_0x1f98('0x14')]===0x1f4){logger[_0x1f98('0x13')](_0x1f98('0x15'),_0x5cd3d5,_0x31b037['error']['message']);return _0x23e6a6(_0x31b037['error'][_0x1f98('0x16')]);}logger[_0x1f98('0x13')](_0x1f98('0x15'),_0x5cd3d5,_0x31b037[_0x1f98('0x13')][_0x1f98('0x16')]);return _0x501423(_0x31b037[_0x1f98('0x13')][_0x1f98('0x16')]);}else{logger['info'](_0x1f98('0x15'),_0x5cd3d5,'request\x20sent');_0x501423(_0x31b037[_0x1f98('0x17')]['message']);}})[_0x1f98('0x18')](function(_0xf711c3){logger[_0x1f98('0x13')](_0x1f98('0x15'),_0x5cd3d5,_0xf711c3);_0x23e6a6(_0xf711c3);});});}exports[_0x1f98('0x19')]=function(_0x414268){var _0x25dd3e=this;return new Promise(function(_0x52966d,_0x2bcb6b){return db['MemberReport'][_0x1f98('0x1a')]({'raw':_0x414268[_0x1f98('0x1b')]?_0x414268[_0x1f98('0x1b')][_0x1f98('0x1c')]===undefined?!![]:![]:!![],'where':_0x414268[_0x1f98('0x1b')]?_0x414268[_0x1f98('0x1b')][_0x1f98('0x1d')]||null:null,'attributes':_0x414268[_0x1f98('0x1b')]?_0x414268[_0x1f98('0x1b')][_0x1f98('0x1e')]||null:null,'limit':_0x414268['options']?_0x414268['options'][_0x1f98('0x1f')]||null:null,'include':_0x414268[_0x1f98('0x1b')]?_0x414268[_0x1f98('0x1b')]['include']?_[_0x1f98('0x20')](_0x414268[_0x1f98('0x1b')]['include'],function(_0x55d29e){return{'model':db[_0x55d29e[_0x1f98('0x21')]],'as':_0x55d29e['as'],'attributes':_0x55d29e['attributes'],'include':_0x55d29e[_0x1f98('0x22')]?_['map'](_0x55d29e['include'],function(_0x48a5dc){return{'model':db[_0x48a5dc[_0x1f98('0x21')]],'as':_0x48a5dc['as'],'attributes':_0x48a5dc['attributes'],'include':_0x48a5dc[_0x1f98('0x22')]?_[_0x1f98('0x20')](_0x48a5dc[_0x1f98('0x22')],function(_0x1ce5cd){return{'model':db[_0x1ce5cd[_0x1f98('0x21')]],'as':_0x1ce5cd['as'],'attributes':_0x1ce5cd[_0x1f98('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x1f98('0xe')](function(_0x1721fc){logger['info'](_0x1f98('0x19'),_0x414268);logger['debug'](_0x1f98('0x19'),_0x414268,JSON[_0x1f98('0x23')](_0x1721fc));_0x52966d(_0x1721fc);})[_0x1f98('0x18')](function(_0x308da3){logger['error']('GetMemberReport',_0x308da3[_0x1f98('0x16')],_0x414268);_0x2bcb6b(_0x25dd3e[_0x1f98('0x13')](0x1f4,_0x308da3[_0x1f98('0x16')]));});});};exports[_0x1f98('0x24')]=function(_0x4b7c89){var _0x20ab93=this;return new Promise(function(_0x5b1122,_0x29f830){return db['MemberReport']['create'](_0x4b7c89[_0x1f98('0x25')],{'raw':_0x4b7c89[_0x1f98('0x1b')]?_0x4b7c89[_0x1f98('0x1b')][_0x1f98('0x1c')]===undefined?!![]:![]:!![]})[_0x1f98('0xe')](function(_0xb24ee6){logger['info'](_0x1f98('0x24'),_0x4b7c89);logger[_0x1f98('0x11')](_0x1f98('0x24'),_0x4b7c89,JSON[_0x1f98('0x23')](_0xb24ee6));_0x5b1122(_0xb24ee6);})[_0x1f98('0x18')](function(_0x313e20){logger[_0x1f98('0x13')](_0x1f98('0x24'),_0x313e20[_0x1f98('0x16')],_0x4b7c89);_0x29f830(_0x20ab93[_0x1f98('0x13')](0x1f4,_0x313e20[_0x1f98('0x16')]));});});};exports[_0x1f98('0x26')]=function(_0x1d434d){var _0x3faf84=this;return new Promise(function(_0x274c94,_0x3c1f29){return db[_0x1f98('0x27')][_0x1f98('0x28')](_0x1d434d['body'],{'raw':_0x1d434d['options']?_0x1d434d[_0x1f98('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d434d[_0x1f98('0x1b')]?_0x1d434d['options'][_0x1f98('0x1d')]||null:null,'attributes':_0x1d434d[_0x1f98('0x1b')]?_0x1d434d[_0x1f98('0x1b')][_0x1f98('0x1e')]||null:null,'limit':_0x1d434d[_0x1f98('0x1b')]?_0x1d434d[_0x1f98('0x1b')]['limit']||null:null})[_0x1f98('0xe')](function(_0x5a14b2){logger['info'](_0x1f98('0x26'),_0x1d434d);logger[_0x1f98('0x11')](_0x1f98('0x26'),_0x1d434d,JSON[_0x1f98('0x23')](_0x5a14b2));_0x274c94(_0x5a14b2);})[_0x1f98('0x18')](function(_0x5bfe32){logger[_0x1f98('0x13')](_0x1f98('0x26'),_0x5bfe32[_0x1f98('0x16')],_0x1d434d);_0x3c1f29(_0x3faf84[_0x1f98('0x13')](0x1f4,_0x5bfe32[_0x1f98('0x16')]));});});};
\ No newline at end of file
index 8e43b82..d3bb1c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31f0=['path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./migration.controller','multer'];(function(_0x3a891f,_0x10e7ef){var _0x4ec879=function(_0x241515){while(--_0x241515){_0x3a891f['push'](_0x3a891f['shift']());}};_0x4ec879(++_0x10e7ef);}(_0x31f0,0xb7));var _0x031f=function(_0x3bcb8b,_0x2b3c76){_0x3bcb8b=_0x3bcb8b-0x0;var _0x1ed518=_0x31f0[_0x3bcb8b];return _0x1ed518;};'use strict';var multer=require(_0x031f('0x0'));var util=require('util');var path=require(_0x031f('0x1'));var timeout=require('connect-timeout');var express=require(_0x031f('0x2'));var router=express[_0x031f('0x3')]();var fs_extra=require(_0x031f('0x4'));var auth=require(_0x031f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x031f('0x6'));var controller=require(_0x031f('0x7'));router['get']('/',controller['index']);module['exports']=router;
\ No newline at end of file
+var _0x4b28=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','exports','multer'];(function(_0x4f1fbe,_0x544305){var _0x407bdd=function(_0x420481){while(--_0x420481){_0x4f1fbe['push'](_0x4f1fbe['shift']());}};_0x407bdd(++_0x544305);}(_0x4b28,0x121));var _0x84b2=function(_0x14779e,_0x1939b7){_0x14779e=_0x14779e-0x0;var _0x50e0ce=_0x4b28[_0x14779e];return _0x50e0ce;};'use strict';var multer=require(_0x84b2('0x0'));var util=require(_0x84b2('0x1'));var path=require(_0x84b2('0x2'));var timeout=require(_0x84b2('0x3'));var express=require(_0x84b2('0x4'));var router=express[_0x84b2('0x5')]();var fs_extra=require(_0x84b2('0x6'));var auth=require(_0x84b2('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x84b2('0x8'));var controller=require('./migration.controller');router['get']('/',controller['index']);module[_0x84b2('0x9')]=router;
\ No newline at end of file
index 54279ed..eca613c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bba=['STRING','version','sequelize','exports'];(function(_0x4eba87,_0x5c2f21){var _0x33f33e=function(_0x4fed89){while(--_0x4fed89){_0x4eba87['push'](_0x4eba87['shift']());}};_0x33f33e(++_0x5c2f21);}(_0x1bba,0x186));var _0xa1bb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1bba[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xa1bb('0x0'));module[_0xa1bb('0x1')]={'version':{'type':Sequelize[_0xa1bb('0x2')],'unique':_0xa1bb('0x3')}};
\ No newline at end of file
+var _0x2534=['sequelize','version'];(function(_0x1e17eb,_0x2e15c5){var _0x4de4c7=function(_0x52d003){while(--_0x52d003){_0x1e17eb['push'](_0x1e17eb['shift']());}};_0x4de4c7(++_0x2e15c5);}(_0x2534,0x1c0));var _0x4253=function(_0x82b961,_0x56d40b){_0x82b961=_0x82b961-0x0;var _0x32728d=_0x2534[_0x82b961];return _0x32728d;};'use strict';var Sequelize=require(_0x4253('0x0'));module['exports']={'version':{'type':Sequelize['STRING'],'unique':_0x4253('0x1')}};
\ No newline at end of file
index 81bc128..cc06d31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24dc=['reject','save','then','stack','name','send','index','Migration','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','limit','count','set','apply'];(function(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0x24dc,0x65));var _0xc24d=function(_0x573482,_0x583eaf){_0x573482=_0x573482-0x0;var _0xd4824c=_0x24dc[_0x573482];return _0xd4824c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc24d('0x0'));var jsonpatch=require(_0xc24d('0x1'));var rp=require(_0xc24d('0x2'));var moment=require(_0xc24d('0x3'));var BPromise=require(_0xc24d('0x4'));var Mustache=require(_0xc24d('0x5'));var util=require(_0xc24d('0x6'));var path=require(_0xc24d('0x7'));var sox=require(_0xc24d('0x8'));var csv=require(_0xc24d('0x9'));var ejs=require(_0xc24d('0xa'));var fs=require('fs');var fs_extra=require(_0xc24d('0xb'));var _=require(_0xc24d('0xc'));var squel=require('squel');var crypto=require(_0xc24d('0xd'));var jsforce=require(_0xc24d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc24d('0x9'));var querystring=require('querystring');var Papa=require(_0xc24d('0xf'));var Redis=require(_0xc24d('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xc24d('0x11'));var as=require(_0xc24d('0x12'));var hardwareService=require(_0xc24d('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xc24d('0x14'));var config=require(_0xc24d('0x15'));var licenseUtil=require(_0xc24d('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10447a,_0x1d1ee0){_0x1d1ee0=_0x1d1ee0||0xcc;return function(_0x8f9b29){if(_0x8f9b29){return _0x10447a[_0xc24d('0x17')](_0x1d1ee0);}return _0x10447a[_0xc24d('0x18')](_0x1d1ee0)[_0xc24d('0x19')]();};}function respondWithResult(_0x2675f1,_0x3d6a19){_0x3d6a19=_0x3d6a19||0xc8;return function(_0x1a03b0){if(_0x1a03b0){return _0x2675f1[_0xc24d('0x18')](_0x3d6a19)['json'](_0x1a03b0);}};}function respondWithFilteredResult(_0x6d7594,_0x45608a){return function(_0x11dba2){if(_0x11dba2){var _0x4cd394=typeof _0x45608a[_0xc24d('0x1a')]==='undefined'&&typeof _0x45608a[_0xc24d('0x1b')]==='undefined';var _0x579b4e=_0x11dba2[_0xc24d('0x1c')];var _0x3c7255=_0x4cd394?0x0:_0x45608a['offset'];var _0x4c5fc2=_0x4cd394?_0x11dba2[_0xc24d('0x1c')]:_0x45608a[_0xc24d('0x1a')]+_0x45608a[_0xc24d('0x1b')];var _0x3025e0;if(_0x4c5fc2>=_0x579b4e){_0x4c5fc2=_0x579b4e;_0x3025e0=0xc8;}else{_0x3025e0=0xce;}_0x6d7594[_0xc24d('0x18')](_0x3025e0);return _0x6d7594[_0xc24d('0x1d')]('Content-Range',_0x3c7255+'-'+_0x4c5fc2+'/'+_0x579b4e)['json'](_0x11dba2);}return null;};}function patchUpdates(_0x25ae13){return function(_0x5c2c83){try{jsonpatch[_0xc24d('0x1e')](_0x5c2c83,_0x25ae13,!![]);}catch(_0xfa63f){return BPromise[_0xc24d('0x1f')](_0xfa63f);}return _0x5c2c83[_0xc24d('0x20')]();};}function saveUpdates(_0x150de6,_0x2ae2d0){return function(_0x38c47f){if(_0x38c47f){return _0x38c47f['update'](_0x150de6)[_0xc24d('0x21')](function(_0x35db6a){return _0x35db6a;});}return null;};}function removeEntity(_0x3cfdca,_0x43d6c9){return function(_0x4569d7){if(_0x4569d7){return _0x4569d7['destroy']()[_0xc24d('0x21')](function(){_0x3cfdca[_0xc24d('0x18')](0xcc)[_0xc24d('0x19')]();});}};}function handleEntityNotFound(_0x3d74e7,_0x2103af){return function(_0x573b8e){if(!_0x573b8e){_0x3d74e7[_0xc24d('0x17')](0x194);}return _0x573b8e;};}function handleError(_0x44906c,_0x317195){_0x317195=_0x317195||0x1f4;return function(_0x33ae98){logger['error'](_0x33ae98[_0xc24d('0x22')]);if(_0x33ae98[_0xc24d('0x23')]){delete _0x33ae98[_0xc24d('0x23')];}_0x44906c[_0xc24d('0x18')](_0x317195)[_0xc24d('0x24')](_0x33ae98);};}exports[_0xc24d('0x25')]=function(_0x48d87f,_0x262d2c){var _0xdba521={},_0x5a044f={},_0x3d27e5={'count':0x0,'rows':[]};var _0x3238f0=_['map'](db[_0xc24d('0x26')][_0xc24d('0x27')],function(_0x334417){return{'name':_0x334417[_0xc24d('0x28')],'type':_0x334417[_0xc24d('0x29')][_0xc24d('0x2a')]};});_0x5a044f[_0xc24d('0x2b')]=_[_0xc24d('0x2c')](_0x3238f0,'name');_0x5a044f['query']=_[_0xc24d('0x2d')](_0x48d87f[_0xc24d('0x2e')]);_0x5a044f[_0xc24d('0x2f')]=_[_0xc24d('0x30')](_0x5a044f[_0xc24d('0x2b')],_0x5a044f[_0xc24d('0x2e')]);_0xdba521[_0xc24d('0x31')]=_[_0xc24d('0x30')](_0x5a044f['model'],qs[_0xc24d('0x32')](_0x48d87f['query'][_0xc24d('0x32')]));_0xdba521[_0xc24d('0x31')]=_0xdba521[_0xc24d('0x31')][_0xc24d('0x33')]?_0xdba521[_0xc24d('0x31')]:_0x5a044f[_0xc24d('0x2b')];if(!_0x48d87f['query'][_0xc24d('0x34')](_0xc24d('0x35'))){_0xdba521[_0xc24d('0x1b')]=qs['limit'](_0x48d87f[_0xc24d('0x2e')][_0xc24d('0x1b')]);_0xdba521['offset']=qs['offset'](_0x48d87f[_0xc24d('0x2e')]['offset']);}_0xdba521[_0xc24d('0x36')]=qs[_0xc24d('0x37')](_0x48d87f[_0xc24d('0x2e')][_0xc24d('0x37')]);_0xdba521[_0xc24d('0x38')]=qs['filters'](_[_0xc24d('0x39')](_0x48d87f[_0xc24d('0x2e')],_0x5a044f['filters']),_0x3238f0);if(_0x48d87f[_0xc24d('0x2e')][_0xc24d('0x3a')]){_0xdba521[_0xc24d('0x38')]=_[_0xc24d('0x3b')](_0xdba521['where'],{'$or':_[_0xc24d('0x2c')](_0x3238f0,function(_0xf23ce0){if(_0xf23ce0['type']!==_0xc24d('0x3c')){var _0x57359c={};_0x57359c[_0xf23ce0[_0xc24d('0x23')]]={'$like':'%'+_0x48d87f[_0xc24d('0x2e')][_0xc24d('0x3a')]+'%'};return _0x57359c;}})});}_0xdba521=_[_0xc24d('0x3b')]({},_0xdba521,_0x48d87f[_0xc24d('0x3d')]);var _0x4da6c9={'where':_0xdba521[_0xc24d('0x38')]};return db[_0xc24d('0x26')][_0xc24d('0x1c')](_0x4da6c9)[_0xc24d('0x21')](function(_0x5ca279){_0x3d27e5[_0xc24d('0x1c')]=_0x5ca279;if(_0x48d87f[_0xc24d('0x2e')][_0xc24d('0x3e')]){_0xdba521[_0xc24d('0x3f')]=[{'all':!![]}];}return db[_0xc24d('0x26')]['findAll'](_0xdba521);})['then'](function(_0x3462f7){_0x3d27e5[_0xc24d('0x40')]=_0x3462f7;return _0x3d27e5;})[_0xc24d('0x21')](respondWithFilteredResult(_0x262d2c,_0xdba521))[_0xc24d('0x41')](handleError(_0x262d2c,null));};
\ No newline at end of file
+var _0x7cc1=['bluebird','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','error','name','map','Migration','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','findAll','rows','eml-format','fast-json-patch','request-promise','moment'];(function(_0x447a84,_0x257916){var _0x3f6d67=function(_0x83985b){while(--_0x83985b){_0x447a84['push'](_0x447a84['shift']());}};_0x3f6d67(++_0x257916);}(_0x7cc1,0x7a));var _0x17cc=function(_0x549040,_0x9199de){_0x549040=_0x549040-0x0;var _0x12eef1=_0x7cc1[_0x549040];return _0x12eef1;};'use strict';var emlformat=require(_0x17cc('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x17cc('0x1'));var rp=require(_0x17cc('0x2'));var moment=require(_0x17cc('0x3'));var BPromise=require(_0x17cc('0x4'));var Mustache=require(_0x17cc('0x5'));var util=require(_0x17cc('0x6'));var path=require('path');var sox=require(_0x17cc('0x7'));var csv=require(_0x17cc('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x17cc('0x9'));var squel=require(_0x17cc('0xa'));var crypto=require(_0x17cc('0xb'));var jsforce=require(_0x17cc('0xc'));var deskjs=require(_0x17cc('0xd'));var toCsv=require('to-csv');var querystring=require(_0x17cc('0xe'));var Papa=require('papaparse');var Redis=require(_0x17cc('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x17cc('0x10'));var as=require(_0x17cc('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x17cc('0x12'))(_0x17cc('0x13'));var utils=require(_0x17cc('0x14'));var config=require(_0x17cc('0x15'));var licenseUtil=require(_0x17cc('0x16'));var db=require(_0x17cc('0x17'))['db'];function respondWithStatusCode(_0x34dabe,_0x22167a){_0x22167a=_0x22167a||0xcc;return function(_0x3622f0){if(_0x3622f0){return _0x34dabe[_0x17cc('0x18')](_0x22167a);}return _0x34dabe[_0x17cc('0x19')](_0x22167a)['end']();};}function respondWithResult(_0x240746,_0x56a8c0){_0x56a8c0=_0x56a8c0||0xc8;return function(_0x4d3851){if(_0x4d3851){return _0x240746[_0x17cc('0x19')](_0x56a8c0)[_0x17cc('0x1a')](_0x4d3851);}};}function respondWithFilteredResult(_0x344794,_0x5e29d3){return function(_0x1cfe83){if(_0x1cfe83){var _0x3e53e1=typeof _0x5e29d3[_0x17cc('0x1b')]==='undefined'&&typeof _0x5e29d3[_0x17cc('0x1c')]===_0x17cc('0x1d');var _0x442d0a=_0x1cfe83['count'];var _0x284b7e=_0x3e53e1?0x0:_0x5e29d3[_0x17cc('0x1b')];var _0x20098a=_0x3e53e1?_0x1cfe83[_0x17cc('0x1e')]:_0x5e29d3['offset']+_0x5e29d3['limit'];var _0x400c5f;if(_0x20098a>=_0x442d0a){_0x20098a=_0x442d0a;_0x400c5f=0xc8;}else{_0x400c5f=0xce;}_0x344794[_0x17cc('0x19')](_0x400c5f);return _0x344794[_0x17cc('0x1f')](_0x17cc('0x20'),_0x284b7e+'-'+_0x20098a+'/'+_0x442d0a)[_0x17cc('0x1a')](_0x1cfe83);}return null;};}function patchUpdates(_0x22b260){return function(_0x29c2e1){try{jsonpatch[_0x17cc('0x21')](_0x29c2e1,_0x22b260,!![]);}catch(_0x7f97c9){return BPromise[_0x17cc('0x22')](_0x7f97c9);}return _0x29c2e1[_0x17cc('0x23')]();};}function saveUpdates(_0x416b05,_0x4cae81){return function(_0x435db8){if(_0x435db8){return _0x435db8['update'](_0x416b05)[_0x17cc('0x24')](function(_0x19116b){return _0x19116b;});}return null;};}function removeEntity(_0x17002e,_0x34e1ab){return function(_0x2d8ab4){if(_0x2d8ab4){return _0x2d8ab4['destroy']()[_0x17cc('0x24')](function(){_0x17002e[_0x17cc('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d41a8,_0x589499){return function(_0x3b5657){if(!_0x3b5657){_0x3d41a8[_0x17cc('0x18')](0x194);}return _0x3b5657;};}function handleError(_0x38bbc5,_0x2ab67b){_0x2ab67b=_0x2ab67b||0x1f4;return function(_0x1807d1){logger[_0x17cc('0x25')](_0x1807d1['stack']);if(_0x1807d1['name']){delete _0x1807d1[_0x17cc('0x26')];}_0x38bbc5[_0x17cc('0x19')](_0x2ab67b)['send'](_0x1807d1);};}exports['index']=function(_0x5ca3b3,_0x34c1ec){var _0x51ae0a={},_0x43ede7={},_0x145808={'count':0x0,'rows':[]};var _0x1f1789=_[_0x17cc('0x27')](db[_0x17cc('0x28')][_0x17cc('0x29')],function(_0x4b930){return{'name':_0x4b930[_0x17cc('0x2a')],'type':_0x4b930[_0x17cc('0x2b')][_0x17cc('0x2c')]};});_0x43ede7[_0x17cc('0x2d')]=_['map'](_0x1f1789,'name');_0x43ede7[_0x17cc('0x2e')]=_['keys'](_0x5ca3b3[_0x17cc('0x2e')]);_0x43ede7[_0x17cc('0x2f')]=_[_0x17cc('0x30')](_0x43ede7[_0x17cc('0x2d')],_0x43ede7[_0x17cc('0x2e')]);_0x51ae0a['attributes']=_['intersection'](_0x43ede7[_0x17cc('0x2d')],qs[_0x17cc('0x31')](_0x5ca3b3[_0x17cc('0x2e')][_0x17cc('0x31')]));_0x51ae0a[_0x17cc('0x32')]=_0x51ae0a[_0x17cc('0x32')][_0x17cc('0x33')]?_0x51ae0a['attributes']:_0x43ede7[_0x17cc('0x2d')];if(!_0x5ca3b3[_0x17cc('0x2e')][_0x17cc('0x34')](_0x17cc('0x35'))){_0x51ae0a[_0x17cc('0x1c')]=qs[_0x17cc('0x1c')](_0x5ca3b3['query'][_0x17cc('0x1c')]);_0x51ae0a['offset']=qs['offset'](_0x5ca3b3[_0x17cc('0x2e')][_0x17cc('0x1b')]);}_0x51ae0a[_0x17cc('0x36')]=qs[_0x17cc('0x37')](_0x5ca3b3[_0x17cc('0x2e')][_0x17cc('0x37')]);_0x51ae0a[_0x17cc('0x38')]=qs['filters'](_['pick'](_0x5ca3b3[_0x17cc('0x2e')],_0x43ede7[_0x17cc('0x2f')]),_0x1f1789);if(_0x5ca3b3[_0x17cc('0x2e')][_0x17cc('0x39')]){_0x51ae0a['where']=_[_0x17cc('0x3a')](_0x51ae0a[_0x17cc('0x38')],{'$or':_['map'](_0x1f1789,function(_0x341c7c){if(_0x341c7c[_0x17cc('0x2b')]!=='VIRTUAL'){var _0x11b73a={};_0x11b73a[_0x341c7c[_0x17cc('0x26')]]={'$like':'%'+_0x5ca3b3[_0x17cc('0x2e')][_0x17cc('0x39')]+'%'};return _0x11b73a;}})});}_0x51ae0a=_[_0x17cc('0x3a')]({},_0x51ae0a,_0x5ca3b3[_0x17cc('0x3b')]);var _0x1b3b4c={'where':_0x51ae0a[_0x17cc('0x38')]};return db[_0x17cc('0x28')]['count'](_0x1b3b4c)['then'](function(_0x54e26c){_0x145808[_0x17cc('0x1e')]=_0x54e26c;if(_0x5ca3b3[_0x17cc('0x2e')][_0x17cc('0x3c')]){_0x51ae0a['include']=[{'all':!![]}];}return db[_0x17cc('0x28')][_0x17cc('0x3d')](_0x51ae0a);})[_0x17cc('0x24')](function(_0x38c41f){_0x145808[_0x17cc('0x3e')]=_0x38c41f;return _0x145808;})['then'](respondWithFilteredResult(_0x34c1ec,_0x51ae0a))['catch'](handleError(_0x34c1ec,null));};
\ No newline at end of file
index 42798b3..eeb3580 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0341=['../../config/environment','./migration.attributes','exports','define','migrations','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x355f43,_0x2fff21){var _0x15794d=function(_0x4c3db2){while(--_0x4c3db2){_0x355f43['push'](_0x355f43['shift']());}};_0x15794d(++_0x2fff21);}(_0x0341,0xad));var _0x1034=function(_0x5d73ea,_0x590a08){_0x5d73ea=_0x5d73ea-0x0;var _0x344493=_0x0341[_0x5d73ea];return _0x344493;};'use strict';var _=require(_0x1034('0x0'));var util=require(_0x1034('0x1'));var logger=require(_0x1034('0x2'))(_0x1034('0x3'));var moment=require('moment');var BPromise=require(_0x1034('0x4'));var rp=require(_0x1034('0x5'));var fs=require('fs');var path=require(_0x1034('0x6'));var rimraf=require('rimraf');var config=require(_0x1034('0x7'));var attributes=require(_0x1034('0x8'));module[_0x1034('0x9')]=function(_0x1f9eac,_0x20e16f){return _0x1f9eac[_0x1034('0xa')]('Migration',attributes,{'tableName':_0x1034('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x28bf=['../../config/environment','./migration.attributes','exports','define','Migration','migrations','lodash','util','api','moment','request-promise','rimraf'];(function(_0x4a6ad9,_0x5a4661){var _0x347f31=function(_0x22e54b){while(--_0x22e54b){_0x4a6ad9['push'](_0x4a6ad9['shift']());}};_0x347f31(++_0x5a4661);}(_0x28bf,0x7e));var _0xf28b=function(_0x1d706e,_0xcb2866){_0x1d706e=_0x1d706e-0x0;var _0x539ba5=_0x28bf[_0x1d706e];return _0x539ba5;};'use strict';var _=require(_0xf28b('0x0'));var util=require(_0xf28b('0x1'));var logger=require('../../config/logger')(_0xf28b('0x2'));var moment=require(_0xf28b('0x3'));var BPromise=require('bluebird');var rp=require(_0xf28b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf28b('0x5'));var config=require(_0xf28b('0x6'));var attributes=require(_0xf28b('0x7'));module[_0xf28b('0x8')]=function(_0x48e05f,_0x4d66d4){return _0x48e05f[_0xf28b('0x9')](_0xf28b('0xa'),attributes,{'tableName':_0xf28b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9a3838a..64c52ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad13=['catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Migration,\x20%s,\x20%s','debug','Migration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result'];(function(_0x2f0c33,_0xa12eb){var _0x34e66c=function(_0x2bb9ee){while(--_0x2bb9ee){_0x2f0c33['push'](_0x2f0c33['shift']());}};_0x34e66c(++_0xa12eb);}(_0xad13,0x79));var _0x3ad1=function(_0x1dd9b7,_0x2cf490){_0x1dd9b7=_0x1dd9b7-0x0;var _0xc23314=_0xad13[_0x1dd9b7];return _0xc23314;};'use strict';var _=require(_0x3ad1('0x0'));var util=require('util');var moment=require(_0x3ad1('0x1'));var BPromise=require(_0x3ad1('0x2'));var rs=require(_0x3ad1('0x3'));var fs=require('fs');var Redis=require(_0x3ad1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3ad1('0x5'));var logger=require(_0x3ad1('0x6'))(_0x3ad1('0x7'));var config=require(_0x3ad1('0x8'));var jayson=require(_0x3ad1('0x9'));var client=jayson[_0x3ad1('0xa')][_0x3ad1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x23ed63,_0x44fd50,_0x313ad9){return new BPromise(function(_0x4d27b0,_0x2429f4){return client[_0x3ad1('0xc')](_0x23ed63,_0x313ad9)[_0x3ad1('0xd')](function(_0x4e93df){logger[_0x3ad1('0xe')](_0x3ad1('0xf'),_0x44fd50,'request\x20sent');logger[_0x3ad1('0x10')](_0x3ad1('0x11'),_0x44fd50,_0x3ad1('0x12'),JSON[_0x3ad1('0x13')](_0x4e93df));if(_0x4e93df[_0x3ad1('0x14')]){if(_0x4e93df[_0x3ad1('0x14')]['code']===0x1f4){logger['error'](_0x3ad1('0xf'),_0x44fd50,_0x4e93df[_0x3ad1('0x14')][_0x3ad1('0x15')]);return _0x2429f4(_0x4e93df[_0x3ad1('0x14')]['message']);}logger[_0x3ad1('0x14')]('Migration,\x20%s,\x20%s',_0x44fd50,_0x4e93df[_0x3ad1('0x14')][_0x3ad1('0x15')]);return _0x4d27b0(_0x4e93df[_0x3ad1('0x14')][_0x3ad1('0x15')]);}else{logger[_0x3ad1('0xe')](_0x3ad1('0xf'),_0x44fd50,_0x3ad1('0x12'));_0x4d27b0(_0x4e93df[_0x3ad1('0x16')][_0x3ad1('0x15')]);}})[_0x3ad1('0x17')](function(_0x1d924e){logger[_0x3ad1('0x14')]('Migration,\x20%s,\x20%s',_0x44fd50,_0x1d924e);_0x2429f4(_0x1d924e);});});}
\ No newline at end of file
+var _0xc737=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','then','info','request\x20sent','debug','error','code','Migration,\x20%s,\x20%s','message','result','catch'];(function(_0xb7bb0a,_0x19fe24){var _0x11684c=function(_0x2bddd9){while(--_0x2bddd9){_0xb7bb0a['push'](_0xb7bb0a['shift']());}};_0x11684c(++_0x19fe24);}(_0xc737,0x154));var _0x7c73=function(_0x3c0348,_0x2e277a){_0x3c0348=_0x3c0348-0x0;var _0x2a8f9a=_0xc737[_0x3c0348];return _0x2a8f9a;};'use strict';var _=require(_0x7c73('0x0'));var util=require(_0x7c73('0x1'));var moment=require(_0x7c73('0x2'));var BPromise=require(_0x7c73('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7c73('0x4'));var db=require(_0x7c73('0x5'))['db'];var utils=require(_0x7c73('0x6'));var logger=require('../../config/logger')(_0x7c73('0x7'));var config=require(_0x7c73('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7c73('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3f6f81,_0x57e442,_0x9264a9){return new BPromise(function(_0x3281fe,_0x5bf225){return client['request'](_0x3f6f81,_0x9264a9)[_0x7c73('0xa')](function(_0x8237f){logger[_0x7c73('0xb')]('Migration,\x20%s,\x20%s',_0x57e442,_0x7c73('0xc'));logger[_0x7c73('0xd')]('Migration,\x20%s,\x20%s,\x20%s',_0x57e442,_0x7c73('0xc'),JSON['stringify'](_0x8237f));if(_0x8237f[_0x7c73('0xe')]){if(_0x8237f[_0x7c73('0xe')][_0x7c73('0xf')]===0x1f4){logger['error'](_0x7c73('0x10'),_0x57e442,_0x8237f[_0x7c73('0xe')][_0x7c73('0x11')]);return _0x5bf225(_0x8237f[_0x7c73('0xe')]['message']);}logger[_0x7c73('0xe')]('Migration,\x20%s,\x20%s',_0x57e442,_0x8237f[_0x7c73('0xe')][_0x7c73('0x11')]);return _0x3281fe(_0x8237f[_0x7c73('0xe')][_0x7c73('0x11')]);}else{logger[_0x7c73('0xb')](_0x7c73('0x10'),_0x57e442,_0x7c73('0xc'));_0x3281fe(_0x8237f[_0x7c73('0x12')]['message']);}})[_0x7c73('0x13')](function(_0x562b50){logger[_0x7c73('0xe')](_0x7c73('0x10'),_0x57e442,_0x562b50);_0x5bf225(_0x562b50);});});}
\ No newline at end of file
index a58cd7c..dfad24b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b47=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout'];(function(_0x55f699,_0x3373d8){var _0x1c02c5=function(_0x53679c){while(--_0x53679c){_0x55f699['push'](_0x55f699['shift']());}};_0x1c02c5(++_0x3373d8);}(_0x2b47,0x177));var _0x72b4=function(_0x4a645b,_0xec3e70){_0x4a645b=_0x4a645b-0x0;var _0x29ae21=_0x2b47[_0x4a645b];return _0x29ae21;};'use strict';var multer=require(_0x72b4('0x0'));var util=require('util');var path=require(_0x72b4('0x1'));var timeout=require(_0x72b4('0x2'));var express=require(_0x72b4('0x3'));var router=express['Router']();var fs_extra=require(_0x72b4('0x4'));var auth=require(_0x72b4('0x5'));var interaction=require(_0x72b4('0x6'));var config=require(_0x72b4('0x7'));var controller=require(_0x72b4('0x8'));router[_0x72b4('0x9')]('/',auth['isAuthenticated'](),controller[_0x72b4('0xa')]);router['get'](_0x72b4('0xb'),auth[_0x72b4('0xc')](),controller[_0x72b4('0xd')]);router[_0x72b4('0xe')]('/',auth[_0x72b4('0xc')](),controller[_0x72b4('0xf')]);router[_0x72b4('0x10')](_0x72b4('0xb'),auth[_0x72b4('0xc')](),controller[_0x72b4('0x11')]);router[_0x72b4('0x12')]('/:id',auth[_0x72b4('0xc')](),controller[_0x72b4('0x13')]);module[_0x72b4('0x14')]=router;
\ No newline at end of file
+var _0x2df7=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./network.controller','get','index','show','post','create','isAuthenticated','update','delete','/:id','destroy','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2df7,0x1f4));var _0x72df=function(_0x5e0834,_0x188188){_0x5e0834=_0x5e0834-0x0;var _0x3c75fb=_0x2df7[_0x5e0834];return _0x3c75fb;};'use strict';var multer=require(_0x72df('0x0'));var util=require('util');var path=require(_0x72df('0x1'));var timeout=require(_0x72df('0x2'));var express=require(_0x72df('0x3'));var router=express[_0x72df('0x4')]();var fs_extra=require(_0x72df('0x5'));var auth=require(_0x72df('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x72df('0x7'));var controller=require(_0x72df('0x8'));router[_0x72df('0x9')]('/',auth['isAuthenticated'](),controller[_0x72df('0xa')]);router[_0x72df('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x72df('0xb')]);router[_0x72df('0xc')]('/',auth['isAuthenticated'](),controller[_0x72df('0xd')]);router['put']('/:id',auth[_0x72df('0xe')](),controller[_0x72df('0xf')]);router[_0x72df('0x10')](_0x72df('0x11'),auth[_0x72df('0xe')](),controller[_0x72df('0x12')]);module[_0x72df('0x13')]=router;
\ No newline at end of file
index befe08c..7a229e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf385=['localnet','externip','stun','turn','STRING','exports','ENUM'];(function(_0x299784,_0xb0918f){var _0x5ab008=function(_0x49c1f5){while(--_0x49c1f5){_0x299784['push'](_0x299784['shift']());}};_0x5ab008(++_0xb0918f);}(_0xf385,0xc9));var _0x5f38=function(_0x53be66,_0x9ec3be){_0x53be66=_0x53be66-0x0;var _0x9e5520=_0xf385[_0x53be66];return _0x9e5520;};'use strict';var Sequelize=require('sequelize');module[_0x5f38('0x0')]={'type':{'type':Sequelize[_0x5f38('0x1')](_0x5f38('0x2'),_0x5f38('0x3'),_0x5f38('0x4'),_0x5f38('0x5'))},'value':{'type':Sequelize[_0x5f38('0x6')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x5f38('0x6')]}};
\ No newline at end of file
+var _0xdb5e=['ENUM','localnet','externip','STRING','exports'];(function(_0x1a3634,_0x3a5fe7){var _0x2338c7=function(_0x5ee63d){while(--_0x5ee63d){_0x1a3634['push'](_0x1a3634['shift']());}};_0x2338c7(++_0x3a5fe7);}(_0xdb5e,0x135));var _0xedb5=function(_0x235528,_0x198446){_0x235528=_0x235528-0x0;var _0xc602e9=_0xdb5e[_0x235528];return _0xc602e9;};'use strict';var Sequelize=require('sequelize');module[_0xedb5('0x0')]={'type':{'type':Sequelize[_0xedb5('0x1')](_0xedb5('0x2'),_0xedb5('0x3'),'stun','turn')},'value':{'type':Sequelize[_0xedb5('0x4')]},'username':{'type':Sequelize[_0xedb5('0x4')]},'password':{'type':Sequelize[_0xedb5('0x4')]}};
\ No newline at end of file
index 8251d05..d4485ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7378=['../../mysqldb','jayson/promise','client','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','Network,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','save','stack','name','send','index','rawAttributes','fieldName','type','key','model','keys','filters','intersection','attributes','query','fields','hasOwnProperty','nolimit','sort','pick','where','VIRTUAL','filter','Network','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','sequelize','transaction','create','body','root','utf8','render','writeFileSync','Reload','res_stun_monitor.so','toUpperCase','join','/etc/asterisk/turn_xcally.conf','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','update','/etc/asterisk/stun_xcally.conf','TURN','readFileSync','server/files/templates/turn_multiple.ejs','server/files/templates/network.ejs','destroy','STUN','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x7378,0xbd));var _0x8737=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7378[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8737('0x0'));var zipdir=require(_0x8737('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8737('0x2'));var BPromise=require(_0x8737('0x3'));var Mustache=require('mustache');var util=require(_0x8737('0x4'));var path=require(_0x8737('0x5'));var sox=require(_0x8737('0x6'));var csv=require(_0x8737('0x7'));var ejs=require(_0x8737('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8737('0x9'));var squel=require(_0x8737('0xa'));var crypto=require('crypto');var jsforce=require(_0x8737('0xb'));var deskjs=require(_0x8737('0xc'));var toCsv=require(_0x8737('0x7'));var querystring=require('querystring');var Papa=require(_0x8737('0xd'));var Redis=require(_0x8737('0xe'));var authService=require(_0x8737('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x8737('0x10'));var hardwareService=require(_0x8737('0x11'));var logger=require(_0x8737('0x12'))(_0x8737('0x13'));var utils=require('../../config/utils');var config=require(_0x8737('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x8737('0x15'))['db'];var jayson=require(_0x8737('0x16'));var client=jayson[_0x8737('0x17')][_0x8737('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x475369,_0x4ad31e,_0x4840c7,_0x354f3f){return new BPromise(function(_0x53c3fb,_0x162b10){var _0x47f49e=_0x354f3f||client;return _0x47f49e[_0x8737('0x19')](_0x475369,_0x4840c7)[_0x8737('0x1a')](function(_0x388cb5){logger[_0x8737('0x1b')](_0x8737('0x1c'),_0x4ad31e,_0x8737('0x1d'));logger['debug'](_0x8737('0x1e'),_0x4ad31e,'request\x20sent',JSON['stringify'](_0x388cb5));if(_0x388cb5[_0x8737('0x1f')]){if(_0x388cb5['error'][_0x8737('0x20')]===0x1f4){logger[_0x8737('0x1f')](_0x8737('0x1c'),_0x4ad31e,_0x388cb5[_0x8737('0x1f')]['message']);return _0x162b10(_0x388cb5[_0x8737('0x1f')][_0x8737('0x21')]);}logger[_0x8737('0x1f')](_0x8737('0x1c'),_0x4ad31e,_0x388cb5[_0x8737('0x1f')][_0x8737('0x21')]);return _0x53c3fb(_0x388cb5['error'][_0x8737('0x21')]);}else{logger[_0x8737('0x1b')]('Network,\x20%s,\x20%s',_0x4ad31e,_0x8737('0x1d'));_0x53c3fb(_0x388cb5[_0x8737('0x22')]['message']);}})['catch'](function(_0x4ebfe5){logger[_0x8737('0x1f')]('Network,\x20%s,\x20%s',_0x4ad31e,_0x4ebfe5);_0x162b10(_0x4ebfe5);});});}function respondWithStatusCode(_0xea3d60,_0x54cebf){_0x54cebf=_0x54cebf||0xcc;return function(_0x508a3c){if(_0x508a3c){return _0xea3d60[_0x8737('0x23')](_0x54cebf);}return _0xea3d60[_0x8737('0x24')](_0x54cebf)[_0x8737('0x25')]();};}function respondWithResult(_0x30f165,_0x42315c){_0x42315c=_0x42315c||0xc8;return function(_0x42276c){if(_0x42276c){return _0x30f165[_0x8737('0x24')](_0x42315c)['json'](_0x42276c);}};}function respondWithFilteredResult(_0x3a895a,_0x4a30c0){return function(_0x123470){if(_0x123470){var _0x13b105=typeof _0x4a30c0[_0x8737('0x26')]==='undefined'&&typeof _0x4a30c0[_0x8737('0x27')]===_0x8737('0x28');var _0x31ea6b=_0x123470[_0x8737('0x29')];var _0x5e8a68=_0x13b105?0x0:_0x4a30c0['offset'];var _0x1eeba5=_0x13b105?_0x123470[_0x8737('0x29')]:_0x4a30c0[_0x8737('0x26')]+_0x4a30c0['limit'];var _0x19d1d0;if(_0x1eeba5>=_0x31ea6b){_0x1eeba5=_0x31ea6b;_0x19d1d0=0xc8;}else{_0x19d1d0=0xce;}_0x3a895a[_0x8737('0x24')](_0x19d1d0);return _0x3a895a[_0x8737('0x2a')](_0x8737('0x2b'),_0x5e8a68+'-'+_0x1eeba5+'/'+_0x31ea6b)[_0x8737('0x2c')](_0x123470);}return null;};}function patchUpdates(_0x174b8f){return function(_0x44d7c6){try{jsonpatch['apply'](_0x44d7c6,_0x174b8f,!![]);}catch(_0xc90116){return BPromise['reject'](_0xc90116);}return _0x44d7c6[_0x8737('0x2d')]();};}function saveUpdates(_0x7bde36,_0x562b2b){return function(_0x338352){if(_0x338352){return _0x338352['update'](_0x7bde36)['then'](function(_0x2ae129){return _0x2ae129;});}return null;};}function removeEntity(_0x581928,_0x193380){return function(_0x4cd616){if(_0x4cd616){return _0x4cd616['destroy']()['then'](function(){_0x581928[_0x8737('0x24')](0xcc)[_0x8737('0x25')]();});}};}function handleEntityNotFound(_0x5e184c,_0xa71ba2){return function(_0x338840){if(!_0x338840){_0x5e184c['sendStatus'](0x194);}return _0x338840;};}function handleError(_0x46920c,_0x225c62){_0x225c62=_0x225c62||0x1f4;return function(_0x201f35){logger[_0x8737('0x1f')](_0x201f35[_0x8737('0x2e')]);if(_0x201f35[_0x8737('0x2f')]){delete _0x201f35['name'];}_0x46920c[_0x8737('0x24')](_0x225c62)[_0x8737('0x30')](_0x201f35);};}exports[_0x8737('0x31')]=function(_0x588885,_0x40ab1c){var _0x50c4c8={},_0x2158f8={},_0x4e391c={'count':0x0,'rows':[]};var _0x14a10e=_['map'](db['Network'][_0x8737('0x32')],function(_0x350a40){return{'name':_0x350a40[_0x8737('0x33')],'type':_0x350a40[_0x8737('0x34')][_0x8737('0x35')]};});_0x2158f8[_0x8737('0x36')]=_['map'](_0x14a10e,_0x8737('0x2f'));_0x2158f8['query']=_[_0x8737('0x37')](_0x588885['query']);_0x2158f8[_0x8737('0x38')]=_[_0x8737('0x39')](_0x2158f8[_0x8737('0x36')],_0x2158f8['query']);_0x50c4c8[_0x8737('0x3a')]=_[_0x8737('0x39')](_0x2158f8['model'],qs['fields'](_0x588885[_0x8737('0x3b')][_0x8737('0x3c')]));_0x50c4c8['attributes']=_0x50c4c8['attributes']['length']?_0x50c4c8[_0x8737('0x3a')]:_0x2158f8[_0x8737('0x36')];if(!_0x588885['query'][_0x8737('0x3d')](_0x8737('0x3e'))){_0x50c4c8[_0x8737('0x27')]=qs[_0x8737('0x27')](_0x588885[_0x8737('0x3b')][_0x8737('0x27')]);_0x50c4c8[_0x8737('0x26')]=qs['offset'](_0x588885[_0x8737('0x3b')][_0x8737('0x26')]);}_0x50c4c8['order']=qs[_0x8737('0x3f')](_0x588885[_0x8737('0x3b')][_0x8737('0x3f')]);_0x50c4c8['where']=qs['filters'](_[_0x8737('0x40')](_0x588885['query'],_0x2158f8[_0x8737('0x38')]),_0x14a10e);if(_0x588885[_0x8737('0x3b')]['filter']){_0x50c4c8[_0x8737('0x41')]=_['merge'](_0x50c4c8[_0x8737('0x41')],{'$or':_['map'](_0x14a10e,function(_0x19400a){if(_0x19400a[_0x8737('0x34')]!==_0x8737('0x42')){var _0x26e73c={};_0x26e73c[_0x19400a['name']]={'$like':'%'+_0x588885[_0x8737('0x3b')][_0x8737('0x43')]+'%'};return _0x26e73c;}})});}_0x50c4c8=_['merge']({},_0x50c4c8,_0x588885['options']);var _0x10de6a={'where':_0x50c4c8[_0x8737('0x41')]};return db[_0x8737('0x44')]['count'](_0x10de6a)[_0x8737('0x1a')](function(_0x567bdb){_0x4e391c[_0x8737('0x29')]=_0x567bdb;if(_0x588885[_0x8737('0x3b')][_0x8737('0x45')]){_0x50c4c8[_0x8737('0x46')]=[{'all':!![]}];}return db[_0x8737('0x44')][_0x8737('0x47')](_0x50c4c8);})['then'](function(_0x4bfeaa){_0x4e391c[_0x8737('0x48')]=_0x4bfeaa;return _0x4e391c;})[_0x8737('0x1a')](respondWithFilteredResult(_0x40ab1c,_0x50c4c8))['catch'](handleError(_0x40ab1c,null));};exports[_0x8737('0x49')]=function(_0xaa9e5a,_0x36eb41){var _0x14d425={'raw':!![],'where':{'id':_0xaa9e5a[_0x8737('0x4a')]['id']}},_0x2b6248={};_0x2b6248['model']=_[_0x8737('0x37')](db['Network'][_0x8737('0x32')]);_0x2b6248[_0x8737('0x3b')]=_['keys'](_0xaa9e5a[_0x8737('0x3b')]);_0x2b6248['filters']=_[_0x8737('0x39')](_0x2b6248[_0x8737('0x36')],_0x2b6248[_0x8737('0x3b')]);_0x14d425['attributes']=_['intersection'](_0x2b6248['model'],qs[_0x8737('0x3c')](_0xaa9e5a[_0x8737('0x3b')]['fields']));_0x14d425[_0x8737('0x3a')]=_0x14d425[_0x8737('0x3a')][_0x8737('0x4b')]?_0x14d425[_0x8737('0x3a')]:_0x2b6248[_0x8737('0x36')];if(_0xaa9e5a[_0x8737('0x3b')]['includeAll']){_0x14d425[_0x8737('0x46')]=[{'all':!![]}];}_0x14d425=_[_0x8737('0x4c')]({},_0x14d425,_0xaa9e5a[_0x8737('0x4d')]);return db[_0x8737('0x44')][_0x8737('0x4e')](_0x14d425)[_0x8737('0x1a')](handleEntityNotFound(_0x36eb41,null))[_0x8737('0x1a')](respondWithResult(_0x36eb41,null))[_0x8737('0x4f')](handleError(_0x36eb41,null));};exports['create']=function(_0x355957,_0x1c2420,_0x4360e5){var _0x5cbbdb;return db[_0x8737('0x50')][_0x8737('0x51')](function(_0x448daf){return db[_0x8737('0x44')][_0x8737('0x52')](_0x355957[_0x8737('0x53')],{'raw':!![]})['then'](function(_0xbae619){_0x5cbbdb=_0xbae619;return db[_0x8737('0x44')][_0x8737('0x47')]({'where':{'type':_0x355957[_0x8737('0x53')]['type']},'raw':!![]});})[_0x8737('0x1a')](function(_0x5d4b4d){if(_0x5cbbdb[_0x8737('0x34')]['toUpperCase']()=='STUN'){var _0x1533ed=fs['readFileSync'](path['join'](config[_0x8737('0x54')],'server/files/templates/stun_multiple.ejs'),_0x8737('0x55'));var _0x546699=ejs[_0x8737('0x56')](_0x1533ed,{'networks':_0x5d4b4d||[]});fs[_0x8737('0x57')]('/etc/asterisk/stun_xcally.conf',_0x546699);return respondWithRpcPromise(_0x8737('0x58'),'create',{'module':_0x8737('0x59')});}else if(_0x5cbbdb['type'][_0x8737('0x5a')]()=='TURN'){var _0x28586f=fs['readFileSync'](path[_0x8737('0x5b')](config[_0x8737('0x54')],'server/files/templates/turn_multiple.ejs'),_0x8737('0x55'));var _0x50ac16=ejs['render'](_0x28586f,{'networks':_0x5d4b4d||[]});fs[_0x8737('0x57')](_0x8737('0x5c'),_0x50ac16);return respondWithRpcPromise(_0x8737('0x58'),'create',{'module':_0x8737('0x59')});}else{var _0x296cae=fs['readFileSync'](path['join'](config[_0x8737('0x54')],'server/files/templates/network.ejs'),'utf8');var _0x424fd2=ejs[_0x8737('0x56')](_0x296cae,{'networks':_0x5d4b4d||[]});fs[_0x8737('0x57')](util[_0x8737('0x5d')](_0x8737('0x5e'),_0x355957[_0x8737('0x53')][_0x8737('0x34')][_0x8737('0x5f')]()),_0x424fd2);return respondWithRpcPromise(_0x8737('0x58'),'create',{'module':_0x8737('0x60')});}return null;})['then'](function(){return _0x5cbbdb;});})['then'](respondWithResult(_0x1c2420,0xc9))[_0x8737('0x4f')](handleError(_0x1c2420,null));};exports[_0x8737('0x61')]=function(_0x2663a5,_0x3768ec,_0x423ba1){var _0x176b07;return db[_0x8737('0x50')][_0x8737('0x51')](function(_0x1abdf5){return db['Network'][_0x8737('0x4e')]({'where':{'id':_0x2663a5['params']['id']}})[_0x8737('0x1a')](handleEntityNotFound(_0x3768ec,null))['then'](saveUpdates(_0x2663a5[_0x8737('0x53')],null))[_0x8737('0x1a')](function(_0x546987){if(_0x546987){_0x176b07=_0x546987;return db['Network'][_0x8737('0x47')]({'where':{'type':_0x176b07['type']},'raw':!![]});}return null;})[_0x8737('0x1a')](function(_0x9c9e62){if(_0x176b07[_0x8737('0x34')][_0x8737('0x5a')]()=='STUN'){var _0x3bb4f4=fs['readFileSync'](path['join'](config[_0x8737('0x54')],'server/files/templates/stun_multiple.ejs'),'utf8');var _0xbc315=ejs['render'](_0x3bb4f4,{'networks':_0x9c9e62||[]});fs['writeFileSync'](_0x8737('0x62'),_0xbc315);return respondWithRpcPromise(_0x8737('0x58'),_0x8737('0x61'),{'module':_0x8737('0x59')});}else if(_0x176b07[_0x8737('0x34')][_0x8737('0x5a')]()==_0x8737('0x63')){var _0x556c37=fs[_0x8737('0x64')](path[_0x8737('0x5b')](config[_0x8737('0x54')],_0x8737('0x65')),_0x8737('0x55'));var _0xf27e1b=ejs[_0x8737('0x56')](_0x556c37,{'networks':_0x9c9e62||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0xf27e1b);return respondWithRpcPromise('Reload',_0x8737('0x61'),{'module':_0x8737('0x59')});}else{var _0x55a0d5=fs[_0x8737('0x64')](path[_0x8737('0x5b')](config[_0x8737('0x54')],_0x8737('0x66')),'utf8');var _0xf2eef4=ejs[_0x8737('0x56')](_0x55a0d5,{'networks':_0x9c9e62||[]});fs['writeFileSync'](util['format'](_0x8737('0x5e'),_0x2663a5[_0x8737('0x53')]['type']['toLowerCase']()),_0xf2eef4);return respondWithRpcPromise(_0x8737('0x58'),_0x8737('0x61'),{'module':_0x8737('0x60')});}return null;})[_0x8737('0x1a')](function(_0x4cbd4a){if(_0x4cbd4a){return _0x176b07;}return null;});})['then'](respondWithResult(_0x3768ec,null))[_0x8737('0x4f')](handleError(_0x3768ec,null));};exports[_0x8737('0x67')]=function(_0x4b61bc,_0x27f18c,_0x37622e){var _0x334ea4;return db[_0x8737('0x44')][_0x8737('0x4e')]({'where':{'id':_0x4b61bc[_0x8737('0x4a')]['id']}})[_0x8737('0x1a')](function(_0x536bc8){_0x334ea4=_0x536bc8;return _0x536bc8;})[_0x8737('0x1a')](handleEntityNotFound(_0x27f18c,null))[_0x8737('0x1a')](removeEntity(_0x27f18c,null))[_0x8737('0x1a')](function(){if(_0x334ea4){return db['Network']['findAll']({'where':{'type':_0x334ea4[_0x8737('0x34')]},'raw':!![]});}})[_0x8737('0x1a')](function(_0x1cdb8f){if(_0x334ea4[_0x8737('0x34')][_0x8737('0x5a')]()==_0x8737('0x68')){var _0xe5b9bd=fs['readFileSync'](path['join'](config[_0x8737('0x54')],'server/files/templates/stun_multiple.ejs'),_0x8737('0x55'));var _0x1131e6=ejs[_0x8737('0x56')](_0xe5b9bd,{'networks':_0x1cdb8f||[]});fs[_0x8737('0x57')](_0x8737('0x62'),_0x1131e6);return respondWithRpcPromise(_0x8737('0x58'),_0x8737('0x67'),{'module':_0x8737('0x59')});}else if(_0x334ea4[_0x8737('0x34')][_0x8737('0x5a')]()=='TURN'){var _0x3f74d0=fs[_0x8737('0x64')](path['join'](config[_0x8737('0x54')],'server/files/templates/turn_multiple.ejs'),_0x8737('0x55'));var _0x828f36=ejs[_0x8737('0x56')](_0x3f74d0,{'networks':_0x1cdb8f||[]});fs['writeFileSync'](_0x8737('0x5c'),_0x828f36);return respondWithRpcPromise(_0x8737('0x58'),_0x8737('0x67'),{'module':_0x8737('0x59')});}else{var _0x67d639=fs[_0x8737('0x64')](path[_0x8737('0x5b')](config['root'],_0x8737('0x66')),_0x8737('0x55'));var _0x111e48=ejs[_0x8737('0x56')](_0x67d639,{'networks':_0x1cdb8f||[]});fs[_0x8737('0x57')](util[_0x8737('0x5d')]('/etc/asterisk/sip_xcally_%s.conf',_0x4b61bc[_0x8737('0x53')]['type'][_0x8737('0x5f')]()),_0x111e48);return respondWithRpcPromise(_0x8737('0x58'),_0x8737('0x67'),{'module':_0x8737('0x60')});}return null;})['catch'](handleError(_0x27f18c,null));};
\ No newline at end of file
+var _0xc8f7=['request','then','info','Network,\x20%s,\x20%s','request\x20sent','Network,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','name','send','index','map','Network','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','VIRTUAL','options','includeAll','include','findAll','rows','params','rawAttributes','keys','find','create','sequelize','transaction','body','toUpperCase','STUN','readFileSync','root','server/files/templates/stun_multiple.ejs','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','join','utf8','render','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','server/files/templates/turn_multiple.ejs','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','client','http'];(function(_0x4258d3,_0x3b6d9c){var _0x517157=function(_0x34f80d){while(--_0x34f80d){_0x4258d3['push'](_0x4258d3['shift']());}};_0x517157(++_0x3b6d9c);}(_0xc8f7,0xbd));var _0x7c8f=function(_0x3e4011,_0x1daf18){_0x3e4011=_0x3e4011-0x0;var _0x43dbbe=_0xc8f7[_0x3e4011];return _0x43dbbe;};'use strict';var emlformat=require(_0x7c8f('0x0'));var rimraf=require(_0x7c8f('0x1'));var zipdir=require(_0x7c8f('0x2'));var jsonpatch=require(_0x7c8f('0x3'));var rp=require(_0x7c8f('0x4'));var moment=require('moment');var BPromise=require(_0x7c8f('0x5'));var Mustache=require(_0x7c8f('0x6'));var util=require(_0x7c8f('0x7'));var path=require(_0x7c8f('0x8'));var sox=require(_0x7c8f('0x9'));var csv=require(_0x7c8f('0xa'));var ejs=require(_0x7c8f('0xb'));var fs=require('fs');var fs_extra=require(_0x7c8f('0xc'));var _=require(_0x7c8f('0xd'));var squel=require(_0x7c8f('0xe'));var crypto=require(_0x7c8f('0xf'));var jsforce=require(_0x7c8f('0x10'));var deskjs=require(_0x7c8f('0x11'));var toCsv=require('to-csv');var querystring=require(_0x7c8f('0x12'));var Papa=require(_0x7c8f('0x13'));var Redis=require(_0x7c8f('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x7c8f('0x15'));var as=require(_0x7c8f('0x16'));var hardwareService=require(_0x7c8f('0x17'));var logger=require('../../config/logger')(_0x7c8f('0x18'));var utils=require('../../config/utils');var config=require(_0x7c8f('0x19'));var licenseUtil=require(_0x7c8f('0x1a'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0x7c8f('0x1b')][_0x7c8f('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x310554,_0x59e1b8,_0x497bbe,_0x590920){return new BPromise(function(_0x4e3d34,_0x3aa35d){var _0xf16558=_0x590920||client;return _0xf16558[_0x7c8f('0x1d')](_0x310554,_0x497bbe)[_0x7c8f('0x1e')](function(_0x4d00a2){logger[_0x7c8f('0x1f')](_0x7c8f('0x20'),_0x59e1b8,_0x7c8f('0x21'));logger['debug'](_0x7c8f('0x22'),_0x59e1b8,'request\x20sent',JSON[_0x7c8f('0x23')](_0x4d00a2));if(_0x4d00a2['error']){if(_0x4d00a2['error']['code']===0x1f4){logger[_0x7c8f('0x24')](_0x7c8f('0x20'),_0x59e1b8,_0x4d00a2[_0x7c8f('0x24')]['message']);return _0x3aa35d(_0x4d00a2[_0x7c8f('0x24')]['message']);}logger[_0x7c8f('0x24')](_0x7c8f('0x20'),_0x59e1b8,_0x4d00a2[_0x7c8f('0x24')][_0x7c8f('0x25')]);return _0x4e3d34(_0x4d00a2[_0x7c8f('0x24')][_0x7c8f('0x25')]);}else{logger[_0x7c8f('0x1f')]('Network,\x20%s,\x20%s',_0x59e1b8,_0x7c8f('0x21'));_0x4e3d34(_0x4d00a2[_0x7c8f('0x26')][_0x7c8f('0x25')]);}})[_0x7c8f('0x27')](function(_0x34660c){logger['error']('Network,\x20%s,\x20%s',_0x59e1b8,_0x34660c);_0x3aa35d(_0x34660c);});});}function respondWithStatusCode(_0x2ea7de,_0x43fb62){_0x43fb62=_0x43fb62||0xcc;return function(_0x3029cb){if(_0x3029cb){return _0x2ea7de[_0x7c8f('0x28')](_0x43fb62);}return _0x2ea7de[_0x7c8f('0x29')](_0x43fb62)[_0x7c8f('0x2a')]();};}function respondWithResult(_0x4e9af5,_0x148d11){_0x148d11=_0x148d11||0xc8;return function(_0x2b09d4){if(_0x2b09d4){return _0x4e9af5[_0x7c8f('0x29')](_0x148d11)[_0x7c8f('0x2b')](_0x2b09d4);}};}function respondWithFilteredResult(_0x550205,_0xff7aa7){return function(_0x2aa1bc){if(_0x2aa1bc){var _0x9bf2e8=typeof _0xff7aa7[_0x7c8f('0x2c')]===_0x7c8f('0x2d')&&typeof _0xff7aa7[_0x7c8f('0x2e')]===_0x7c8f('0x2d');var _0x152b46=_0x2aa1bc[_0x7c8f('0x2f')];var _0x1da144=_0x9bf2e8?0x0:_0xff7aa7[_0x7c8f('0x2c')];var _0x26412b=_0x9bf2e8?_0x2aa1bc[_0x7c8f('0x2f')]:_0xff7aa7[_0x7c8f('0x2c')]+_0xff7aa7['limit'];var _0x4dcb9f;if(_0x26412b>=_0x152b46){_0x26412b=_0x152b46;_0x4dcb9f=0xc8;}else{_0x4dcb9f=0xce;}_0x550205[_0x7c8f('0x29')](_0x4dcb9f);return _0x550205[_0x7c8f('0x30')](_0x7c8f('0x31'),_0x1da144+'-'+_0x26412b+'/'+_0x152b46)[_0x7c8f('0x2b')](_0x2aa1bc);}return null;};}function patchUpdates(_0x457c6f){return function(_0xbc94af){try{jsonpatch[_0x7c8f('0x32')](_0xbc94af,_0x457c6f,!![]);}catch(_0x145a61){return BPromise[_0x7c8f('0x33')](_0x145a61);}return _0xbc94af[_0x7c8f('0x34')]();};}function saveUpdates(_0x493837,_0x8faa09){return function(_0x68929c){if(_0x68929c){return _0x68929c[_0x7c8f('0x35')](_0x493837)[_0x7c8f('0x1e')](function(_0x1bbeb7){return _0x1bbeb7;});}return null;};}function removeEntity(_0x4fcfc0,_0x20fce8){return function(_0x54bf00){if(_0x54bf00){return _0x54bf00[_0x7c8f('0x36')]()[_0x7c8f('0x1e')](function(){_0x4fcfc0[_0x7c8f('0x29')](0xcc)[_0x7c8f('0x2a')]();});}};}function handleEntityNotFound(_0xe15597,_0x5788b8){return function(_0x223d49){if(!_0x223d49){_0xe15597[_0x7c8f('0x28')](0x194);}return _0x223d49;};}function handleError(_0x4d83e1,_0x13bc1e){_0x13bc1e=_0x13bc1e||0x1f4;return function(_0x3345ae){logger[_0x7c8f('0x24')](_0x3345ae['stack']);if(_0x3345ae[_0x7c8f('0x37')]){delete _0x3345ae[_0x7c8f('0x37')];}_0x4d83e1[_0x7c8f('0x29')](_0x13bc1e)[_0x7c8f('0x38')](_0x3345ae);};}exports[_0x7c8f('0x39')]=function(_0x45c7e3,_0x461841){var _0x308e19={},_0x6b28b3={},_0x4d91aa={'count':0x0,'rows':[]};var _0x2224f2=_[_0x7c8f('0x3a')](db[_0x7c8f('0x3b')]['rawAttributes'],function(_0x58fa0c){return{'name':_0x58fa0c['fieldName'],'type':_0x58fa0c[_0x7c8f('0x3c')][_0x7c8f('0x3d')]};});_0x6b28b3['model']=_['map'](_0x2224f2,_0x7c8f('0x37'));_0x6b28b3['query']=_['keys'](_0x45c7e3[_0x7c8f('0x3e')]);_0x6b28b3[_0x7c8f('0x3f')]=_[_0x7c8f('0x40')](_0x6b28b3[_0x7c8f('0x41')],_0x6b28b3[_0x7c8f('0x3e')]);_0x308e19[_0x7c8f('0x42')]=_[_0x7c8f('0x40')](_0x6b28b3[_0x7c8f('0x41')],qs[_0x7c8f('0x43')](_0x45c7e3[_0x7c8f('0x3e')][_0x7c8f('0x43')]));_0x308e19[_0x7c8f('0x42')]=_0x308e19[_0x7c8f('0x42')][_0x7c8f('0x44')]?_0x308e19[_0x7c8f('0x42')]:_0x6b28b3['model'];if(!_0x45c7e3[_0x7c8f('0x3e')][_0x7c8f('0x45')]('nolimit')){_0x308e19[_0x7c8f('0x2e')]=qs['limit'](_0x45c7e3[_0x7c8f('0x3e')]['limit']);_0x308e19[_0x7c8f('0x2c')]=qs['offset'](_0x45c7e3[_0x7c8f('0x3e')][_0x7c8f('0x2c')]);}_0x308e19[_0x7c8f('0x46')]=qs[_0x7c8f('0x47')](_0x45c7e3[_0x7c8f('0x3e')][_0x7c8f('0x47')]);_0x308e19['where']=qs[_0x7c8f('0x3f')](_[_0x7c8f('0x48')](_0x45c7e3[_0x7c8f('0x3e')],_0x6b28b3['filters']),_0x2224f2);if(_0x45c7e3['query'][_0x7c8f('0x49')]){_0x308e19[_0x7c8f('0x4a')]=_['merge'](_0x308e19[_0x7c8f('0x4a')],{'$or':_['map'](_0x2224f2,function(_0x1df064){if(_0x1df064[_0x7c8f('0x3c')]!==_0x7c8f('0x4b')){var _0x267bd0={};_0x267bd0[_0x1df064[_0x7c8f('0x37')]]={'$like':'%'+_0x45c7e3['query'][_0x7c8f('0x49')]+'%'};return _0x267bd0;}})});}_0x308e19=_['merge']({},_0x308e19,_0x45c7e3[_0x7c8f('0x4c')]);var _0x24f676={'where':_0x308e19[_0x7c8f('0x4a')]};return db[_0x7c8f('0x3b')][_0x7c8f('0x2f')](_0x24f676)['then'](function(_0x1b71a6){_0x4d91aa['count']=_0x1b71a6;if(_0x45c7e3[_0x7c8f('0x3e')][_0x7c8f('0x4d')]){_0x308e19[_0x7c8f('0x4e')]=[{'all':!![]}];}return db[_0x7c8f('0x3b')][_0x7c8f('0x4f')](_0x308e19);})['then'](function(_0xbb8016){_0x4d91aa[_0x7c8f('0x50')]=_0xbb8016;return _0x4d91aa;})[_0x7c8f('0x1e')](respondWithFilteredResult(_0x461841,_0x308e19))[_0x7c8f('0x27')](handleError(_0x461841,null));};exports['show']=function(_0x3f4ff8,_0x5db47b){var _0x3a806a={'raw':!![],'where':{'id':_0x3f4ff8[_0x7c8f('0x51')]['id']}},_0x3a91d6={};_0x3a91d6['model']=_['keys'](db[_0x7c8f('0x3b')][_0x7c8f('0x52')]);_0x3a91d6['query']=_[_0x7c8f('0x53')](_0x3f4ff8[_0x7c8f('0x3e')]);_0x3a91d6['filters']=_[_0x7c8f('0x40')](_0x3a91d6[_0x7c8f('0x41')],_0x3a91d6[_0x7c8f('0x3e')]);_0x3a806a[_0x7c8f('0x42')]=_[_0x7c8f('0x40')](_0x3a91d6[_0x7c8f('0x41')],qs[_0x7c8f('0x43')](_0x3f4ff8[_0x7c8f('0x3e')]['fields']));_0x3a806a[_0x7c8f('0x42')]=_0x3a806a[_0x7c8f('0x42')][_0x7c8f('0x44')]?_0x3a806a['attributes']:_0x3a91d6[_0x7c8f('0x41')];if(_0x3f4ff8[_0x7c8f('0x3e')]['includeAll']){_0x3a806a[_0x7c8f('0x4e')]=[{'all':!![]}];}_0x3a806a=_['merge']({},_0x3a806a,_0x3f4ff8[_0x7c8f('0x4c')]);return db[_0x7c8f('0x3b')][_0x7c8f('0x54')](_0x3a806a)[_0x7c8f('0x1e')](handleEntityNotFound(_0x5db47b,null))[_0x7c8f('0x1e')](respondWithResult(_0x5db47b,null))[_0x7c8f('0x27')](handleError(_0x5db47b,null));};exports[_0x7c8f('0x55')]=function(_0x290ac9,_0x2505ed,_0x44632c){var _0x51086e;return db[_0x7c8f('0x56')][_0x7c8f('0x57')](function(_0x407b6a){return db[_0x7c8f('0x3b')][_0x7c8f('0x55')](_0x290ac9['body'],{'raw':!![]})[_0x7c8f('0x1e')](function(_0x5e9a53){_0x51086e=_0x5e9a53;return db[_0x7c8f('0x3b')][_0x7c8f('0x4f')]({'where':{'type':_0x290ac9[_0x7c8f('0x58')]['type']},'raw':!![]});})[_0x7c8f('0x1e')](function(_0x529ae5){if(_0x51086e['type'][_0x7c8f('0x59')]()==_0x7c8f('0x5a')){var _0x43a0a8=fs[_0x7c8f('0x5b')](path['join'](config[_0x7c8f('0x5c')],_0x7c8f('0x5d')),'utf8');var _0xcf2af4=ejs['render'](_0x43a0a8,{'networks':_0x529ae5||[]});fs[_0x7c8f('0x5e')](_0x7c8f('0x5f'),_0xcf2af4);return respondWithRpcPromise(_0x7c8f('0x60'),_0x7c8f('0x55'),{'module':_0x7c8f('0x61')});}else if(_0x51086e['type'][_0x7c8f('0x59')]()==_0x7c8f('0x62')){var _0x19f358=fs[_0x7c8f('0x5b')](path[_0x7c8f('0x63')](config['root'],'server/files/templates/turn_multiple.ejs'),_0x7c8f('0x64'));var _0x33b031=ejs[_0x7c8f('0x65')](_0x19f358,{'networks':_0x529ae5||[]});fs['writeFileSync'](_0x7c8f('0x66'),_0x33b031);return respondWithRpcPromise(_0x7c8f('0x60'),'create',{'module':_0x7c8f('0x61')});}else{var _0x406201=fs[_0x7c8f('0x5b')](path['join'](config[_0x7c8f('0x5c')],_0x7c8f('0x67')),'utf8');var _0x2d9943=ejs[_0x7c8f('0x65')](_0x406201,{'networks':_0x529ae5||[]});fs[_0x7c8f('0x5e')](util[_0x7c8f('0x68')](_0x7c8f('0x69'),_0x290ac9[_0x7c8f('0x58')][_0x7c8f('0x3c')][_0x7c8f('0x6a')]()),_0x2d9943);return respondWithRpcPromise(_0x7c8f('0x60'),_0x7c8f('0x55'),{'module':_0x7c8f('0x6b')});}return null;})[_0x7c8f('0x1e')](function(){return _0x51086e;});})[_0x7c8f('0x1e')](respondWithResult(_0x2505ed,0xc9))['catch'](handleError(_0x2505ed,null));};exports[_0x7c8f('0x35')]=function(_0x4c38ae,_0x104a6b,_0x4e0099){var _0x4178b1;return db[_0x7c8f('0x56')][_0x7c8f('0x57')](function(_0x514291){return db[_0x7c8f('0x3b')][_0x7c8f('0x54')]({'where':{'id':_0x4c38ae[_0x7c8f('0x51')]['id']}})[_0x7c8f('0x1e')](handleEntityNotFound(_0x104a6b,null))[_0x7c8f('0x1e')](saveUpdates(_0x4c38ae[_0x7c8f('0x58')],null))[_0x7c8f('0x1e')](function(_0x369aab){if(_0x369aab){_0x4178b1=_0x369aab;return db[_0x7c8f('0x3b')][_0x7c8f('0x4f')]({'where':{'type':_0x4178b1[_0x7c8f('0x3c')]},'raw':!![]});}return null;})['then'](function(_0x1567cd){if(_0x4178b1[_0x7c8f('0x3c')][_0x7c8f('0x59')]()==_0x7c8f('0x5a')){var _0xb84ac3=fs['readFileSync'](path[_0x7c8f('0x63')](config[_0x7c8f('0x5c')],_0x7c8f('0x5d')),'utf8');var _0x522613=ejs[_0x7c8f('0x65')](_0xb84ac3,{'networks':_0x1567cd||[]});fs[_0x7c8f('0x5e')](_0x7c8f('0x5f'),_0x522613);return respondWithRpcPromise(_0x7c8f('0x60'),_0x7c8f('0x35'),{'module':'res_stun_monitor.so'});}else if(_0x4178b1[_0x7c8f('0x3c')]['toUpperCase']()=='TURN'){var _0x122d0e=fs['readFileSync'](path[_0x7c8f('0x63')](config[_0x7c8f('0x5c')],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x41178d=ejs['render'](_0x122d0e,{'networks':_0x1567cd||[]});fs[_0x7c8f('0x5e')](_0x7c8f('0x66'),_0x41178d);return respondWithRpcPromise(_0x7c8f('0x60'),_0x7c8f('0x35'),{'module':_0x7c8f('0x61')});}else{var _0xd1e99f=fs[_0x7c8f('0x5b')](path[_0x7c8f('0x63')](config[_0x7c8f('0x5c')],'server/files/templates/network.ejs'),_0x7c8f('0x64'));var _0x316d4f=ejs['render'](_0xd1e99f,{'networks':_0x1567cd||[]});fs['writeFileSync'](util[_0x7c8f('0x68')](_0x7c8f('0x69'),_0x4c38ae[_0x7c8f('0x58')]['type'][_0x7c8f('0x6a')]()),_0x316d4f);return respondWithRpcPromise(_0x7c8f('0x60'),'update',{'module':_0x7c8f('0x6b')});}return null;})[_0x7c8f('0x1e')](function(_0x57ca3e){if(_0x57ca3e){return _0x4178b1;}return null;});})[_0x7c8f('0x1e')](respondWithResult(_0x104a6b,null))[_0x7c8f('0x27')](handleError(_0x104a6b,null));};exports[_0x7c8f('0x36')]=function(_0x3aef7f,_0x29c59a,_0xbe10ab){var _0x148535;return db[_0x7c8f('0x3b')][_0x7c8f('0x54')]({'where':{'id':_0x3aef7f[_0x7c8f('0x51')]['id']}})[_0x7c8f('0x1e')](function(_0x550b85){_0x148535=_0x550b85;return _0x550b85;})[_0x7c8f('0x1e')](handleEntityNotFound(_0x29c59a,null))[_0x7c8f('0x1e')](removeEntity(_0x29c59a,null))[_0x7c8f('0x1e')](function(){if(_0x148535){return db[_0x7c8f('0x3b')][_0x7c8f('0x4f')]({'where':{'type':_0x148535[_0x7c8f('0x3c')]},'raw':!![]});}})['then'](function(_0xd084aa){if(_0x148535['type'][_0x7c8f('0x59')]()==_0x7c8f('0x5a')){var _0x1efd0d=fs['readFileSync'](path[_0x7c8f('0x63')](config[_0x7c8f('0x5c')],_0x7c8f('0x5d')),_0x7c8f('0x64'));var _0x1f7a52=ejs[_0x7c8f('0x65')](_0x1efd0d,{'networks':_0xd084aa||[]});fs[_0x7c8f('0x5e')]('/etc/asterisk/stun_xcally.conf',_0x1f7a52);return respondWithRpcPromise('Reload','destroy',{'module':_0x7c8f('0x61')});}else if(_0x148535['type']['toUpperCase']()=='TURN'){var _0xa155f9=fs['readFileSync'](path[_0x7c8f('0x63')](config[_0x7c8f('0x5c')],_0x7c8f('0x6c')),_0x7c8f('0x64'));var _0x5b8c02=ejs[_0x7c8f('0x65')](_0xa155f9,{'networks':_0xd084aa||[]});fs['writeFileSync'](_0x7c8f('0x66'),_0x5b8c02);return respondWithRpcPromise(_0x7c8f('0x60'),_0x7c8f('0x36'),{'module':_0x7c8f('0x61')});}else{var _0x557dd1=fs['readFileSync'](path['join'](config['root'],_0x7c8f('0x67')),_0x7c8f('0x64'));var _0x53c5f8=ejs[_0x7c8f('0x65')](_0x557dd1,{'networks':_0xd084aa||[]});fs[_0x7c8f('0x5e')](util[_0x7c8f('0x68')](_0x7c8f('0x69'),_0x3aef7f[_0x7c8f('0x58')]['type']['toLowerCase']()),_0x53c5f8);return respondWithRpcPromise(_0x7c8f('0x60'),_0x7c8f('0x36'),{'module':_0x7c8f('0x6b')});}return null;})[_0x7c8f('0x27')](handleError(_0x29c59a,null));};
\ No newline at end of file
index 50b22ad..0266f46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee4f=['bluebird','path','../../config/environment','Network','network','lodash','api','moment'];(function(_0x358c86,_0x38a8a2){var _0x52edc5=function(_0x560096){while(--_0x560096){_0x358c86['push'](_0x358c86['shift']());}};_0x52edc5(++_0x38a8a2);}(_0xee4f,0xad));var _0xfee4=function(_0x40cb9d,_0x1fb2ca){_0x40cb9d=_0x40cb9d-0x0;var _0x7c2743=_0xee4f[_0x40cb9d];return _0x7c2743;};'use strict';var _=require(_0xfee4('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xfee4('0x1'));var moment=require(_0xfee4('0x2'));var BPromise=require(_0xfee4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfee4('0x4'));var rimraf=require('rimraf');var config=require(_0xfee4('0x5'));var attributes=require('./network.attributes');module['exports']=function(_0x1c39b1,_0x498647){return _0x1c39b1['define'](_0xfee4('0x6'),attributes,{'tableName':_0xfee4('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6308=['bluebird','request-promise','path','rimraf','../../config/environment','define','Network','network','lodash','../../config/logger'];(function(_0xf34f52,_0x5112f2){var _0x32bf53=function(_0x9dd768){while(--_0x9dd768){_0xf34f52['push'](_0xf34f52['shift']());}};_0x32bf53(++_0x5112f2);}(_0x6308,0x1f2));var _0x8630=function(_0x409353,_0xe9f04d){_0x409353=_0x409353-0x0;var _0x4f4b59=_0x6308[_0x409353];return _0x4f4b59;};'use strict';var _=require(_0x8630('0x0'));var util=require('util');var logger=require(_0x8630('0x1'))('api');var moment=require('moment');var BPromise=require(_0x8630('0x2'));var rp=require(_0x8630('0x3'));var fs=require('fs');var path=require(_0x8630('0x4'));var rimraf=require(_0x8630('0x5'));var config=require(_0x8630('0x6'));var attributes=require('./network.attributes');module['exports']=function(_0x1d62c8,_0x571543){return _0x1d62c8[_0x8630('0x7')](_0x8630('0x8'),attributes,{'tableName':_0x8630('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4252840..a916955 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7a54,0x106));var _0x47a5=function(_0x4ec4c1,_0x585af5){_0x4ec4c1=_0x4ec4c1-0x0;var _0x4c04b7=_0x7a54[_0x4ec4c1];return _0x4c04b7;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
+var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x7a54,0x106));var _0x47a5=function(_0x21af2e,_0x5f59ea){_0x21af2e=_0x21af2e-0x0;var _0x17739e=_0x7a54[_0x21af2e];return _0x17739e;};'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 627ee9b..7470e38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ea2=['/:id/applications','addApplications','addAgents','send','put','/:id','update','destroy','delete','removeAnswers','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','index','/describe','isAuthenticated','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getApplications','/:id/interactions','getInteractions','/:id/users','create','post','addDisposition','addAnswer','notify'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x6ea2,0x161));var _0x26ea=function(_0x3bcbb2,_0x5f4449){_0x3bcbb2=_0x3bcbb2-0x0;var _0x31744e=_0x6ea2[_0x3bcbb2];return _0x31744e;};'use strict';var multer=require(_0x26ea('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x26ea('0x1'));var express=require(_0x26ea('0x2'));var router=express['Router']();var fs_extra=require(_0x26ea('0x3'));var auth=require(_0x26ea('0x4'));var interaction=require(_0x26ea('0x5'));var config=require(_0x26ea('0x6'));var controller=require(_0x26ea('0x7'));router[_0x26ea('0x8')]('/',auth['isAuthenticated'](),controller[_0x26ea('0x9')]);router['get'](_0x26ea('0xa'),auth[_0x26ea('0xb')](),controller[_0x26ea('0xc')]);router['get']('/:id',auth[_0x26ea('0xb')](),controller[_0x26ea('0xd')]);router[_0x26ea('0x8')](_0x26ea('0xe'),auth['isAuthenticated'](),controller[_0x26ea('0xf')]);router[_0x26ea('0x8')](_0x26ea('0x10'),auth['isAuthenticated'](),controller[_0x26ea('0x11')]);router[_0x26ea('0x8')]('/:id/applications',auth[_0x26ea('0xb')](),controller[_0x26ea('0x12')]);router[_0x26ea('0x8')](_0x26ea('0x13'),auth['isAuthenticated'](),controller[_0x26ea('0x14')]);router[_0x26ea('0x8')](_0x26ea('0x15'),auth[_0x26ea('0xb')](),controller['getAgents']);router['post']('/',auth[_0x26ea('0xb')](),controller[_0x26ea('0x16')]);router[_0x26ea('0x17')](_0x26ea('0xe'),auth[_0x26ea('0xb')](),controller[_0x26ea('0x18')]);router[_0x26ea('0x17')](_0x26ea('0x10'),auth[_0x26ea('0xb')](),controller[_0x26ea('0x19')]);router[_0x26ea('0x17')]('/:id/notify',controller[_0x26ea('0x1a')]);router[_0x26ea('0x17')](_0x26ea('0x1b'),auth['isAuthenticated'](),controller[_0x26ea('0x1c')]);router[_0x26ea('0x17')](_0x26ea('0x15'),auth['isAuthenticated'](),controller[_0x26ea('0x1d')]);router[_0x26ea('0x17')]('/:id/send',auth[_0x26ea('0xb')](),controller[_0x26ea('0x1e')]);router[_0x26ea('0x1f')](_0x26ea('0x20'),auth[_0x26ea('0xb')](),controller[_0x26ea('0x21')]);router['delete'](_0x26ea('0x20'),auth[_0x26ea('0xb')](),controller[_0x26ea('0x22')]);router[_0x26ea('0x23')]('/:id/dispositions',auth[_0x26ea('0xb')](),controller['removeDispositions']);router['delete'](_0x26ea('0x10'),auth[_0x26ea('0xb')](),controller[_0x26ea('0x24')]);router[_0x26ea('0x23')](_0x26ea('0x15'),auth[_0x26ea('0xb')](),controller['removeAgents']);module[_0x26ea('0x25')]=router;
\ No newline at end of file
+var _0x0e77=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','getAnswers','/:id/applications','getApplications','getInteractions','/:id/users','post','create','addDisposition','/:id/canned_answers','addAnswer','notify','addApplications','addAgents','/:id/send','send','put','delete','exports','multer','util','path','express','Router'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x0e77,0x11b));var _0x70e7=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x0e77[_0xa148b7];return _0x51efd3;};'use strict';var multer=require(_0x70e7('0x0'));var util=require(_0x70e7('0x1'));var path=require(_0x70e7('0x2'));var timeout=require('connect-timeout');var express=require(_0x70e7('0x3'));var router=express[_0x70e7('0x4')]();var fs_extra=require(_0x70e7('0x5'));var auth=require(_0x70e7('0x6'));var interaction=require(_0x70e7('0x7'));var config=require(_0x70e7('0x8'));var controller=require('./openchannelAccount.controller');router[_0x70e7('0x9')]('/',auth[_0x70e7('0xa')](),controller[_0x70e7('0xb')]);router[_0x70e7('0x9')](_0x70e7('0xc'),auth[_0x70e7('0xa')](),controller[_0x70e7('0xd')]);router[_0x70e7('0x9')](_0x70e7('0xe'),auth[_0x70e7('0xa')](),controller[_0x70e7('0xf')]);router[_0x70e7('0x9')](_0x70e7('0x10'),auth[_0x70e7('0xa')](),controller[_0x70e7('0x11')]);router[_0x70e7('0x9')]('/:id/canned_answers',auth[_0x70e7('0xa')](),controller[_0x70e7('0x12')]);router['get'](_0x70e7('0x13'),auth[_0x70e7('0xa')](),controller[_0x70e7('0x14')]);router['get']('/:id/interactions',auth[_0x70e7('0xa')](),controller[_0x70e7('0x15')]);router[_0x70e7('0x9')](_0x70e7('0x16'),auth['isAuthenticated'](),controller['getAgents']);router[_0x70e7('0x17')]('/',auth[_0x70e7('0xa')](),controller[_0x70e7('0x18')]);router['post'](_0x70e7('0x10'),auth['isAuthenticated'](),controller[_0x70e7('0x19')]);router[_0x70e7('0x17')](_0x70e7('0x1a'),auth['isAuthenticated'](),controller[_0x70e7('0x1b')]);router[_0x70e7('0x17')]('/:id/notify',controller[_0x70e7('0x1c')]);router['post'](_0x70e7('0x13'),auth['isAuthenticated'](),controller[_0x70e7('0x1d')]);router[_0x70e7('0x17')]('/:id/users',auth[_0x70e7('0xa')](),controller[_0x70e7('0x1e')]);router[_0x70e7('0x17')](_0x70e7('0x1f'),auth[_0x70e7('0xa')](),controller[_0x70e7('0x20')]);router[_0x70e7('0x21')](_0x70e7('0xe'),auth[_0x70e7('0xa')](),controller['update']);router[_0x70e7('0x22')](_0x70e7('0xe'),auth[_0x70e7('0xa')](),controller['destroy']);router[_0x70e7('0x22')](_0x70e7('0x10'),auth['isAuthenticated'](),controller['removeDispositions']);router['delete'](_0x70e7('0x1a'),auth[_0x70e7('0xa')](),controller['removeAnswers']);router[_0x70e7('0x22')](_0x70e7('0x16'),auth[_0x70e7('0xa')](),controller['removeAgents']);module[_0x70e7('0x23')]=router;
\ No newline at end of file
index 3eecbed..a7afdfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdef6=['TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring','exports','STRING','name'];(function(_0x57b432,_0x1589a0){var _0x2edf2a=function(_0x20edfc){while(--_0x20edfc){_0x57b432['push'](_0x57b432['shift']());}};_0x2edf2a(++_0x1589a0);}(_0xdef6,0xeb));var _0x6def=function(_0x57d53b,_0x4b0c2f){_0x57d53b=_0x57d53b-0x0;var _0x13a2df=_0xdef6[_0x57d53b];return _0x13a2df;};'use strict';var Sequelize=require(_0x6def('0x0'));var rs=require(_0x6def('0x1'));module[_0x6def('0x2')]={'name':{'type':Sequelize[_0x6def('0x3')],'unique':_0x6def('0x4'),'allowNull':![]},'description':{'type':Sequelize[_0x6def('0x3')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0x6def('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x6def('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x6def('0x5')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x6def('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x6def('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x6def('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x6def('0x3')]},'queueTransfer':{'type':Sequelize[_0x6def('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x6def('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x6def('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x6def('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0x6def('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x6def('0x6')],'defaultValue':![],'comment':_0x6def('0x9'),'set':function(_0x592e19){if(!_0x592e19)this[_0x6def('0xa')]('mandatoryDispositionPauseId',null);this[_0x6def('0xa')](_0x6def('0xb'),_0x592e19);}}};
\ No newline at end of file
+var _0x99a7=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','STRING','name','generate','TEXT','INTEGER','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x1877c4,_0x40a3c2){var _0x20a0e0=function(_0x14d4bd){while(--_0x14d4bd){_0x1877c4['push'](_0x1877c4['shift']());}};_0x20a0e0(++_0x40a3c2);}(_0x99a7,0xc7));var _0x799a=function(_0x365be9,_0x3c88b9){_0x365be9=_0x365be9-0x0;var _0x185c12=_0x99a7[_0x365be9];return _0x185c12;};'use strict';var Sequelize=require(_0x799a('0x0'));var rs=require(_0x799a('0x1'));module['exports']={'name':{'type':Sequelize[_0x799a('0x2')],'unique':_0x799a('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x799a('0x2')],'defaultValue':function(){return rs[_0x799a('0x4')]();}},'replyUri':{'type':Sequelize[_0x799a('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x799a('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x799a('0x5')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x799a('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x799a('0x2')]},'queueTransfer':{'type':Sequelize[_0x799a('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x799a('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x799a('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x799a('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x799a('0x7')],'defaultValue':![],'comment':_0x799a('0x9'),'set':function(_0x3eeed9){if(!_0x3eeed9)this[_0x799a('0xa')](_0x799a('0xb'),null);this['setDataValue'](_0x799a('0xc'),_0x3eeed9);}}};
\ No newline at end of file
index 826ed3e..c8b7fd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x089c=['OpenchannelAccount','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','includeAll','include','findAll','rows','show','params','length','merge','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','openchannel','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','Contacts','Applications','List','account','applications','list','orderBy','priority','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','contact','messageId','interaction','created','autoclose','push','unmanaged','OpenchannelMessage','AttachmentId','User','unshift','*,*,*,*','forcedOwnership','Start','startRouting','sequelize','transaction','OpenchannelApplication','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','DESC','out','Messages','spread','dataValues','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./openchannelAccount.socket','register','jayson/promise','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','message','catch','sendStatus','end','status','limit','offset','count','set','apply','save','update','destroy','OpenchannelAccounts','stack','name','send','index','Pause','mandatoryDispositionPause','map'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0x089c,0x7d));var _0xc089=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x089c[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc089('0x0'));var rp=require(_0xc089('0x1'));var moment=require(_0xc089('0x2'));var BPromise=require(_0xc089('0x3'));var Mustache=require(_0xc089('0x4'));var util=require('util');var path=require(_0xc089('0x5'));var sox=require(_0xc089('0x6'));var csv=require(_0xc089('0x7'));var ejs=require(_0xc089('0x8'));var fs=require('fs');var fs_extra=require(_0xc089('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc089('0xa'));var deskjs=require(_0xc089('0xb'));var toCsv=require(_0xc089('0x7'));var querystring=require(_0xc089('0xc'));var Papa=require(_0xc089('0xd'));var Redis=require(_0xc089('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xc089('0xf'));var as=require(_0xc089('0x10'));var hardwareService=require(_0xc089('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0xc089('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xc089('0x13'));var db=require(_0xc089('0x14'))['db'];config[_0xc089('0x15')]=_[_0xc089('0x16')](config[_0xc089('0x15')],{'host':_0xc089('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc089('0x15')]));require(_0xc089('0x18'))[_0xc089('0x19')](socket);var jayson=require(_0xc089('0x1a'));var client=jayson[_0xc089('0x1b')][_0xc089('0x1c')]({'port':0x232c});var client9002=jayson[_0xc089('0x1b')][_0xc089('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x39f497,_0x4ecafa,_0x1c5bc6,_0x543144){return new BPromise(function(_0x34506f,_0x32e5f7){var _0x201c37=_0x543144||client;return _0x201c37[_0xc089('0x1d')](_0x39f497,_0x1c5bc6)[_0xc089('0x1e')](function(_0x3c3375){logger[_0xc089('0x1f')](_0xc089('0x20'),_0x4ecafa,_0xc089('0x21'));logger[_0xc089('0x22')](_0xc089('0x23'),_0x4ecafa,_0xc089('0x21'),JSON['stringify'](_0x3c3375));if(_0x3c3375[_0xc089('0x24')]){if(_0x3c3375[_0xc089('0x24')]['code']===0x1f4){logger[_0xc089('0x24')]('OpenchannelAccount,\x20%s,\x20%s',_0x4ecafa,_0x3c3375[_0xc089('0x24')][_0xc089('0x25')]);return _0x32e5f7(_0x3c3375[_0xc089('0x24')][_0xc089('0x25')]);}logger[_0xc089('0x24')](_0xc089('0x20'),_0x4ecafa,_0x3c3375['error'][_0xc089('0x25')]);return _0x34506f(_0x3c3375[_0xc089('0x24')]['message']);}else{logger[_0xc089('0x1f')](_0xc089('0x20'),_0x4ecafa,'request\x20sent');_0x34506f(_0x3c3375['result'][_0xc089('0x25')]);}})[_0xc089('0x26')](function(_0x3a22b6){logger['error'](_0xc089('0x20'),_0x4ecafa,_0x3a22b6);_0x32e5f7(_0x3a22b6);});});}function respondWithStatusCode(_0x3840f8,_0x4ff0e3){_0x4ff0e3=_0x4ff0e3||0xcc;return function(_0x51cd1a){if(_0x51cd1a){return _0x3840f8[_0xc089('0x27')](_0x4ff0e3);}return _0x3840f8['status'](_0x4ff0e3)[_0xc089('0x28')]();};}function respondWithResult(_0x3798cb,_0xdfd2cb){_0xdfd2cb=_0xdfd2cb||0xc8;return function(_0x56fb4b){if(_0x56fb4b){return _0x3798cb[_0xc089('0x29')](_0xdfd2cb)['json'](_0x56fb4b);}};}function respondWithFilteredResult(_0x47daad,_0xd81a1e){return function(_0x9f3d1b){if(_0x9f3d1b){var _0x25f871=typeof _0xd81a1e['offset']==='undefined'&&typeof _0xd81a1e[_0xc089('0x2a')]==='undefined';var _0x3d0f9e=_0x9f3d1b['count'];var _0x142464=_0x25f871?0x0:_0xd81a1e[_0xc089('0x2b')];var _0x3c109d=_0x25f871?_0x9f3d1b[_0xc089('0x2c')]:_0xd81a1e['offset']+_0xd81a1e[_0xc089('0x2a')];var _0x152a59;if(_0x3c109d>=_0x3d0f9e){_0x3c109d=_0x3d0f9e;_0x152a59=0xc8;}else{_0x152a59=0xce;}_0x47daad[_0xc089('0x29')](_0x152a59);return _0x47daad[_0xc089('0x2d')]('Content-Range',_0x142464+'-'+_0x3c109d+'/'+_0x3d0f9e)['json'](_0x9f3d1b);}return null;};}function patchUpdates(_0x4934b6){return function(_0x1903f8){try{jsonpatch[_0xc089('0x2e')](_0x1903f8,_0x4934b6,!![]);}catch(_0x56eb91){return BPromise['reject'](_0x56eb91);}return _0x1903f8[_0xc089('0x2f')]();};}function saveUpdates(_0x4bf6e4,_0x42f4f3){return function(_0x48420e){if(_0x48420e){return _0x48420e[_0xc089('0x30')](_0x4bf6e4)[_0xc089('0x1e')](function(_0x77bfe){return _0x77bfe;});}return null;};}function removeEntity(_0x33fc64,_0xe770d8){return function(_0x546ebf){if(_0x546ebf){return _0x546ebf[_0xc089('0x31')]()[_0xc089('0x1e')](function(){var _0x23ff5d=_0x546ebf['get']({'plain':!![]});var _0x47dc4d=_0xc089('0x32');return db['UserProfileResource'][_0xc089('0x31')]({'where':{'type':_0x47dc4d,'resourceId':_0x23ff5d['id']}})[_0xc089('0x1e')](function(){return _0x546ebf;});})['then'](function(){_0x33fc64[_0xc089('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x37ea73,_0x2e843b){return function(_0x313375){if(!_0x313375){_0x37ea73[_0xc089('0x27')](0x194);}return _0x313375;};}function handleError(_0x57a397,_0x185ffb){_0x185ffb=_0x185ffb||0x1f4;return function(_0x3d777f){logger[_0xc089('0x24')](_0x3d777f[_0xc089('0x33')]);if(_0x3d777f[_0xc089('0x34')]){delete _0x3d777f['name'];}_0x57a397['status'](_0x185ffb)[_0xc089('0x35')](_0x3d777f);};}exports[_0xc089('0x36')]=function(_0x23328c,_0x487c62){var _0xa1a4d={'include':[{'model':db[_0xc089('0x37')],'as':_0xc089('0x38')}]},_0x47fc53={},_0x368f3e={'count':0x0,'rows':[]};var _0x48522f=_[_0xc089('0x39')](db[_0xc089('0x3a')][_0xc089('0x3b')],function(_0x5e0792){return{'name':_0x5e0792[_0xc089('0x3c')],'type':_0x5e0792[_0xc089('0x3d')][_0xc089('0x3e')]};});_0x47fc53['model']=_['map'](_0x48522f,_0xc089('0x34'));_0x47fc53[_0xc089('0x3f')]=_[_0xc089('0x40')](_0x23328c[_0xc089('0x3f')]);_0x47fc53['filters']=_[_0xc089('0x41')](_0x47fc53[_0xc089('0x42')],_0x47fc53[_0xc089('0x3f')]);_0xa1a4d[_0xc089('0x43')]=_[_0xc089('0x41')](_0x47fc53[_0xc089('0x42')],qs['fields'](_0x23328c[_0xc089('0x3f')][_0xc089('0x44')]));_0xa1a4d['attributes']=_0xa1a4d[_0xc089('0x43')]['length']?_0xa1a4d[_0xc089('0x43')]:_0x47fc53[_0xc089('0x42')];if(!_0x23328c['query'][_0xc089('0x45')](_0xc089('0x46'))){_0xa1a4d[_0xc089('0x2a')]=qs[_0xc089('0x2a')](_0x23328c[_0xc089('0x3f')][_0xc089('0x2a')]);_0xa1a4d['offset']=qs[_0xc089('0x2b')](_0x23328c[_0xc089('0x3f')][_0xc089('0x2b')]);}_0xa1a4d[_0xc089('0x47')]=qs[_0xc089('0x48')](_0x23328c[_0xc089('0x3f')][_0xc089('0x48')]);_0xa1a4d[_0xc089('0x49')]=qs['filters'](_[_0xc089('0x4a')](_0x23328c[_0xc089('0x3f')],_0x47fc53[_0xc089('0x4b')]),_0x48522f);if(_0x23328c[_0xc089('0x3f')][_0xc089('0x4c')]){_0xa1a4d[_0xc089('0x49')]=_['merge'](_0xa1a4d['where'],{'$or':_[_0xc089('0x39')](_0x48522f,function(_0x2b0747){if(_0x2b0747[_0xc089('0x3d')]!=='VIRTUAL'){var _0x415828={};_0x415828[_0x2b0747[_0xc089('0x34')]]={'$like':'%'+_0x23328c['query'][_0xc089('0x4c')]+'%'};return _0x415828;}})});}_0xa1a4d=_['merge']({},_0xa1a4d,_0x23328c['options']);var _0x3e0ac9={'where':_0xa1a4d[_0xc089('0x49')]};return db[_0xc089('0x3a')][_0xc089('0x2c')](_0x3e0ac9)['then'](function(_0x491687){_0x368f3e[_0xc089('0x2c')]=_0x491687;if(_0x23328c[_0xc089('0x3f')][_0xc089('0x4d')]){_0xa1a4d[_0xc089('0x4e')]=[{'all':!![]}];}return db[_0xc089('0x3a')][_0xc089('0x4f')](_0xa1a4d);})[_0xc089('0x1e')](function(_0x4194e0){_0x368f3e[_0xc089('0x50')]=_0x4194e0;return _0x368f3e;})[_0xc089('0x1e')](respondWithFilteredResult(_0x487c62,_0xa1a4d))[_0xc089('0x26')](handleError(_0x487c62,null));};exports[_0xc089('0x51')]=function(_0x264cf5,_0x1c288d){var _0x14b3ac={'raw':![],'where':{'id':_0x264cf5[_0xc089('0x52')]['id']},'include':[{'model':db[_0xc089('0x37')],'as':_0xc089('0x38')}]},_0x141ab8={};_0x141ab8[_0xc089('0x42')]=_['keys'](db['OpenchannelAccount']['rawAttributes']);_0x141ab8[_0xc089('0x3f')]=_[_0xc089('0x40')](_0x264cf5[_0xc089('0x3f')]);_0x141ab8['filters']=_[_0xc089('0x41')](_0x141ab8[_0xc089('0x42')],_0x141ab8['query']);_0x14b3ac[_0xc089('0x43')]=_[_0xc089('0x41')](_0x141ab8[_0xc089('0x42')],qs[_0xc089('0x44')](_0x264cf5[_0xc089('0x3f')][_0xc089('0x44')]));_0x14b3ac[_0xc089('0x43')]=_0x14b3ac[_0xc089('0x43')][_0xc089('0x53')]?_0x14b3ac[_0xc089('0x43')]:_0x141ab8[_0xc089('0x42')];if(_0x264cf5[_0xc089('0x3f')]['includeAll']){_0x14b3ac[_0xc089('0x4e')]=[{'all':!![]}];}_0x14b3ac=_[_0xc089('0x54')]({},_0x14b3ac,_0x264cf5[_0xc089('0x55')]);return db[_0xc089('0x3a')]['find'](_0x14b3ac)[_0xc089('0x1e')](handleEntityNotFound(_0x1c288d,null))['then'](respondWithResult(_0x1c288d,null))[_0xc089('0x26')](handleError(_0x1c288d,null));};exports[_0xc089('0x56')]=function(_0x2426bd,_0x166407){return db[_0xc089('0x3a')][_0xc089('0x56')](_0x2426bd[_0xc089('0x57')],{})[_0xc089('0x1e')](function(_0xa7c484){var _0x5aefc3=_0x2426bd[_0xc089('0x58')]['get']({'plain':!![]});if(!_0x5aefc3)throw new Error(_0xc089('0x59'));if(_0x5aefc3[_0xc089('0x5a')]==='user'){var _0x380022=_0xa7c484[_0xc089('0x5b')]({'plain':!![]});var _0x179f99=_0xc089('0x32');return db[_0xc089('0x5c')][_0xc089('0x5d')]({'where':{'name':_0x179f99,'userProfileId':_0x5aefc3[_0xc089('0x5e')]},'raw':!![]})[_0xc089('0x1e')](function(_0x2f443f){if(_0x2f443f&&_0x2f443f[_0xc089('0x5f')]===0x0){return db[_0xc089('0x60')][_0xc089('0x56')]({'name':_0x380022[_0xc089('0x34')],'resourceId':_0x380022['id'],'type':_0x2f443f[_0xc089('0x34')],'sectionId':_0x2f443f['id']},{})['then'](function(){return _0xa7c484;});}else{return _0xa7c484;}})[_0xc089('0x26')](function(_0x36e30c){logger[_0xc089('0x24')](_0xc089('0x61'),_0x36e30c);throw _0x36e30c;});}return _0xa7c484;})[_0xc089('0x1e')](respondWithResult(_0x166407,0xc9))[_0xc089('0x26')](handleError(_0x166407,null));};exports[_0xc089('0x30')]=function(_0x21b941,_0x6b106f){if(_0x21b941[_0xc089('0x57')]['id']){delete _0x21b941[_0xc089('0x57')]['id'];}return db[_0xc089('0x3a')]['find']({'where':{'id':_0x21b941[_0xc089('0x52')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0xc089('0x1e')](handleEntityNotFound(_0x6b106f,null))[_0xc089('0x1e')](saveUpdates(_0x21b941[_0xc089('0x57')],null))[_0xc089('0x1e')](respondWithResult(_0x6b106f,null))['catch'](handleError(_0x6b106f,null));};exports[_0xc089('0x31')]=function(_0x279645,_0x33ab1c){return db[_0xc089('0x3a')]['find']({'where':{'id':_0x279645[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x33ab1c,null))[_0xc089('0x1e')](removeEntity(_0x33ab1c,null))[_0xc089('0x26')](handleError(_0x33ab1c,null));};exports[_0xc089('0x62')]=function(_0x3119e2,_0x157e58){return db[_0xc089('0x3a')][_0xc089('0x62')]()[_0xc089('0x1e')](respondWithResult(_0x157e58,null))[_0xc089('0x26')](handleError(_0x157e58,null));};exports[_0xc089('0x63')]=function(_0x2a973d,_0x327314,_0x2b4d72){if(_0x2a973d[_0xc089('0x57')]['id']){delete _0x2a973d[_0xc089('0x57')]['id'];}return db[_0xc089('0x3a')][_0xc089('0x5d')]({'where':{'id':_0x2a973d['params']['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x327314,null))['then'](function(_0x30f991){if(_0x30f991){_0x2a973d[_0xc089('0x57')][_0xc089('0x64')]=_0x30f991['id'];return db[_0xc089('0x65')][_0xc089('0x56')](_0x2a973d[_0xc089('0x57')]);}})['then'](respondWithResult(_0x327314,null))[_0xc089('0x26')](handleError(_0x327314,null));};exports[_0xc089('0x66')]=function(_0x5ac7aa,_0x4e27d2,_0x5f46e2){var _0x49ea4a={'raw':![],'where':{}};var _0x772c07={};var _0x26b732={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0xc089('0x67')]({'where':{'id':_0x5ac7aa[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x4e27d2,null))[_0xc089('0x1e')](function(_0x52fc0d){if(_0x52fc0d){_0x772c07['model']=_[_0xc089('0x40')](db[_0xc089('0x65')][_0xc089('0x3b')]);_0x772c07[_0xc089('0x3f')]=_['keys'](_0x5ac7aa['query']);_0x772c07[_0xc089('0x4b')]=_[_0xc089('0x41')](_0x772c07['model'],_0x772c07[_0xc089('0x3f')]);_0x49ea4a[_0xc089('0x43')]=_[_0xc089('0x41')](_0x772c07['model'],qs['fields'](_0x5ac7aa[_0xc089('0x3f')][_0xc089('0x44')]));_0x49ea4a[_0xc089('0x43')]=_0x49ea4a[_0xc089('0x43')]['length']?_0x49ea4a[_0xc089('0x43')]:_0x772c07[_0xc089('0x42')];if(!_0x5ac7aa[_0xc089('0x3f')]['hasOwnProperty']('nolimit')){_0x49ea4a['limit']=qs['limit'](_0x5ac7aa[_0xc089('0x3f')][_0xc089('0x2a')]);_0x49ea4a[_0xc089('0x2b')]=qs[_0xc089('0x2b')](_0x5ac7aa['query'][_0xc089('0x2b')]);}_0x49ea4a[_0xc089('0x47')]=qs[_0xc089('0x48')](_0x5ac7aa['query'][_0xc089('0x48')]);_0x49ea4a[_0xc089('0x49')]=qs[_0xc089('0x4b')](_[_0xc089('0x4a')](_0x5ac7aa[_0xc089('0x3f')],_0x772c07[_0xc089('0x4b')]));_0x49ea4a[_0xc089('0x49')][_0xc089('0x64')]=_0x52fc0d['id'];if(_0x5ac7aa[_0xc089('0x3f')][_0xc089('0x4c')]){_0x49ea4a[_0xc089('0x49')]=_[_0xc089('0x54')](_0x49ea4a[_0xc089('0x49')],{'$or':_[_0xc089('0x39')](_0x49ea4a[_0xc089('0x43')],function(_0x316208){var _0x35fa35={};_0x35fa35[_0x316208]={'$like':'%'+_0x5ac7aa[_0xc089('0x3f')][_0xc089('0x4c')]+'%'};return _0x35fa35;})});}_0x49ea4a=_[_0xc089('0x54')]({},_0x49ea4a,_0x5ac7aa['options']);return db[_0xc089('0x65')][_0xc089('0x2c')]({'where':_0x49ea4a['where']})[_0xc089('0x1e')](function(_0x46e826){_0x26b732[_0xc089('0x2c')]=_0x46e826;if(_0x5ac7aa['query'][_0xc089('0x4d')]){_0x49ea4a[_0xc089('0x4e')]=[{'all':!![]}];}return db[_0xc089('0x65')][_0xc089('0x4f')](_0x49ea4a);})['then'](function(_0x1005ee){_0x26b732[_0xc089('0x50')]=_0x1005ee;return _0x26b732;});}})[_0xc089('0x1e')](respondWithFilteredResult(_0x4e27d2,_0x49ea4a))['catch'](handleError(_0x4e27d2,null));};exports[_0xc089('0x68')]=function(_0x24f05e,_0xa073f,_0x4ed1a0){return db[_0xc089('0x3a')]['find']({'where':{'id':_0x24f05e[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0xa073f,null))['then'](function(_0x3debc0){if(_0x3debc0){return _0x3debc0[_0xc089('0x68')](_0x24f05e[_0xc089('0x3f')][_0xc089('0x69')]);}})[_0xc089('0x1e')](respondWithStatusCode(_0xa073f,null))[_0xc089('0x26')](handleError(_0xa073f,null));};exports[_0xc089('0x6a')]=function(_0x65ddce,_0x53b487,_0x5db838){if(_0x65ddce[_0xc089('0x57')]['id']){delete _0x65ddce[_0xc089('0x57')]['id'];}return db[_0xc089('0x3a')][_0xc089('0x5d')]({'where':{'id':_0x65ddce[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x53b487,null))['then'](function(_0x1c8944){if(_0x1c8944){_0x65ddce[_0xc089('0x57')][_0xc089('0x64')]=_0x1c8944['id'];return db[_0xc089('0x6b')]['create'](_0x65ddce['body']);}})['then'](respondWithResult(_0x53b487,null))[_0xc089('0x26')](handleError(_0x53b487,null));};exports[_0xc089('0x6c')]=function(_0x11181d,_0xbe2b4c,_0x454eee){var _0x2740e5={'raw':![],'where':{}};var _0x23d5a0={};var _0x4600a4={'count':0x0,'rows':[]};return db[_0xc089('0x3a')][_0xc089('0x67')]({'where':{'id':_0x11181d[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0xbe2b4c,null))[_0xc089('0x1e')](function(_0x565fae){if(_0x565fae){_0x23d5a0['model']=_['keys'](db[_0xc089('0x6b')][_0xc089('0x3b')]);_0x23d5a0[_0xc089('0x3f')]=_[_0xc089('0x40')](_0x11181d[_0xc089('0x3f')]);_0x23d5a0[_0xc089('0x4b')]=_[_0xc089('0x41')](_0x23d5a0[_0xc089('0x42')],_0x23d5a0[_0xc089('0x3f')]);_0x2740e5[_0xc089('0x43')]=_[_0xc089('0x41')](_0x23d5a0[_0xc089('0x42')],qs[_0xc089('0x44')](_0x11181d[_0xc089('0x3f')][_0xc089('0x44')]));_0x2740e5[_0xc089('0x43')]=_0x2740e5[_0xc089('0x43')]['length']?_0x2740e5[_0xc089('0x43')]:_0x23d5a0[_0xc089('0x42')];if(!_0x11181d['query']['hasOwnProperty']('nolimit')){_0x2740e5[_0xc089('0x2a')]=qs[_0xc089('0x2a')](_0x11181d['query']['limit']);_0x2740e5[_0xc089('0x2b')]=qs[_0xc089('0x2b')](_0x11181d['query'][_0xc089('0x2b')]);}_0x2740e5[_0xc089('0x47')]=qs[_0xc089('0x48')](_0x11181d[_0xc089('0x3f')]['sort']);_0x2740e5[_0xc089('0x49')]=qs[_0xc089('0x4b')](_[_0xc089('0x4a')](_0x11181d[_0xc089('0x3f')],_0x23d5a0[_0xc089('0x4b')]));_0x2740e5['where'][_0xc089('0x64')]=_0x565fae['id'];if(_0x11181d[_0xc089('0x3f')][_0xc089('0x4c')]){_0x2740e5[_0xc089('0x49')]=_['merge'](_0x2740e5['where'],{'$or':_['map'](_0x2740e5[_0xc089('0x43')],function(_0x21fb98){var _0x415e4b={};_0x415e4b[_0x21fb98]={'$like':'%'+_0x11181d[_0xc089('0x3f')][_0xc089('0x4c')]+'%'};return _0x415e4b;})});}_0x2740e5=_['merge']({},_0x2740e5,_0x11181d[_0xc089('0x55')]);return db['CannedAnswer'][_0xc089('0x2c')]({'where':_0x2740e5[_0xc089('0x49')]})['then'](function(_0x224641){_0x4600a4[_0xc089('0x2c')]=_0x224641;if(_0x11181d['query']['includeAll']){_0x2740e5['include']=[{'all':!![]}];}return db[_0xc089('0x6b')][_0xc089('0x4f')](_0x2740e5);})[_0xc089('0x1e')](function(_0x33a905){_0x4600a4[_0xc089('0x50')]=_0x33a905;return _0x4600a4;});}})[_0xc089('0x1e')](respondWithFilteredResult(_0xbe2b4c,_0x2740e5))[_0xc089('0x26')](handleError(_0xbe2b4c,null));};exports[_0xc089('0x6d')]=function(_0x5f05f8,_0x5d82d4,_0x1c7a05){return db[_0xc089('0x3a')][_0xc089('0x5d')]({'where':{'id':_0x5f05f8[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x5d82d4,null))[_0xc089('0x1e')](function(_0x1ac4a3){if(_0x1ac4a3){return _0x1ac4a3[_0xc089('0x6d')](_0x5f05f8[_0xc089('0x3f')][_0xc089('0x69')]);}})['then'](respondWithStatusCode(_0x5d82d4,null))[_0xc089('0x26')](handleError(_0x5d82d4,null));};exports['notify']=function(_0x37ee13,_0x8b7d8d,_0x21badf){var _0x58e4c3={'body':_0x37ee13[_0xc089('0x57')],'channel':_0xc089('0x6e')};var _0xf5add9=[];var _0x39a3bd=[];var _0x55089e={};var _0x30feba=![];return db['CmContact'][_0xc089('0x62')]()[_0xc089('0x1e')](function(_0x3bd84c){if(!_0x3bd84c){throw new db['Sequelize'][(_0xc089('0x6f'))](_0xc089('0x70'));}_0xf5add9=_[_0xc089('0x71')](_['keys'](_0x3bd84c),[_0xc089('0x72'),'updatedAt']);_0x39a3bd=_[_0xc089('0x71')](_[_0xc089('0x40')](_0x3bd84c),['createdAt',_0xc089('0x73'),_0xc089('0x74'),_0xc089('0x75')]);if(_0x37ee13['body']['id']){delete _0x37ee13['body']['id'];}if(_[_0xc089('0x76')](_0x37ee13['body'][_0xc089('0x77')])){throw new db[(_0xc089('0x78'))][(_0xc089('0x6f'))](_0xc089('0x79'));}if(_['isNil'](_0x37ee13[_0xc089('0x57')]['body'])||_0x37ee13[_0xc089('0x57')][_0xc089('0x57')]===''){throw new db[(_0xc089('0x78'))]['ValidationError'](_0xc089('0x7a'));}if(_[_0xc089('0x76')](_0x37ee13[_0xc089('0x57')][_0xc089('0x7b')])){throw new db[(_0xc089('0x78'))][(_0xc089('0x6f'))](_0xc089('0x7c')+_0x39a3bd);}if(!_[_0xc089('0x7d')](_0x39a3bd,_0x37ee13[_0xc089('0x57')][_0xc089('0x7b')])){throw new db['Sequelize'][(_0xc089('0x6f'))](_0xc089('0x7e')+_0x39a3bd);}_0x55089e[_0x37ee13['body']['mapKey']]=_0x37ee13[_0xc089('0x57')][_0xc089('0x77')];})['then'](function(){return db[_0xc089('0x3a')][_0xc089('0x5d')]({'where':{'id':_0x37ee13[_0xc089('0x52')]['id']},'include':[{'model':db[_0xc089('0x7f')],'as':'List','include':[{'model':db[_0xc089('0x80')],'as':_0xc089('0x81'),'where':_0x55089e,'limit':0x1,'order':[[_0xc089('0x73'),'DESC']]}]},{'model':db['OpenchannelApplication'],'as':_0xc089('0x82')}]});})[_0xc089('0x1e')](handleEntityNotFound(_0x8b7d8d,null))[_0xc089('0x1e')](function(_0xd45cd4){if(_0xd45cd4&&_0xd45cd4[_0xc089('0x83')]){_0x58e4c3[_0xc089('0x84')]=_0xd45cd4;_0x58e4c3[_0xc089('0x85')]=_0xd45cd4[_0xc089('0x82')];_0x58e4c3[_0xc089('0x86')]=_0xd45cd4['List'];_0x58e4c3[_0xc089('0x85')]=_[_0xc089('0x87')](_0x58e4c3['applications'],[_0xc089('0x88')],['asc']);if(_0x58e4c3[_0xc089('0x84')][_0xc089('0x82')]){delete _0x58e4c3[_0xc089('0x84')][_0xc089('0x82')];}if(_0x58e4c3['account'][_0xc089('0x83')]&&_0x58e4c3['account'][_0xc089('0x83')]['Contacts'][_0xc089('0x53')]){return _0x58e4c3[_0xc089('0x84')][_0xc089('0x83')][_0xc089('0x81')][0x0];}var _0x3d5620=_[_0xc089('0x16')](_0x37ee13[_0xc089('0x57')],{'firstName':_0x37ee13['body'][_0xc089('0x77')],'ListId':_0xd45cd4[_0xc089('0x75')]});_0x3d5620[_0x37ee13[_0xc089('0x57')]['mapKey']]=_0x37ee13[_0xc089('0x57')][_0xc089('0x77')];return db['CmContact'][_0xc089('0x56')](_0x3d5620,{'fields':_0xf5add9,'raw':!![]});}})[_0xc089('0x1e')](handleEntityNotFound(_0x8b7d8d,null))['then'](function(_0x7ca2b8){_0x58e4c3['contact']=_0x7ca2b8;if(_0x7ca2b8){var _0x4189fa={'ContactId':_0x7ca2b8['id'],'OpenchannelAccountId':_0x37ee13[_0xc089('0x52')]['id'],'from':(_0x7ca2b8['firstName']||'')+'\x20'+(_0x7ca2b8[_0xc089('0x89')]||'')};var _0x1a791b={'OpenchannelAccountId':_0x37ee13[_0xc089('0x52')]['id'],'closed':![]};if(_0x37ee13['body'][_0xc089('0x8a')]){_0x1a791b[_0xc089('0x8a')]=_0x37ee13[_0xc089('0x57')]['threadId'];return db[_0xc089('0x8b')][_0xc089('0x5d')]({'where':_0x1a791b})['then'](function(_0xd4b27e){if(_0xd4b27e){return[_0xd4b27e,![]];}_0x4189fa['threadId']=_0x37ee13['body'][_0xc089('0x8a')];_0x4189fa[_0xc089('0x8c')]=_0x37ee13[_0xc089('0x57')][_0xc089('0x8c')];return db[_0xc089('0x8b')][_0xc089('0x56')](_0x4189fa)[_0xc089('0x1e')](function(_0x2ef807){return[_0x2ef807,!![]];});});}else{_0x1a791b[_0xc089('0x8a')]=null;}_0x1a791b[_0xc089('0x8d')]=_0x7ca2b8['id'];return db[_0xc089('0x8b')][_0xc089('0x5d')]({'where':_0x1a791b})[_0xc089('0x1e')](function(_0x12310c){if(_0x12310c){return[_0x12310c,![]];}return db['OpenchannelInteraction'][_0xc089('0x56')](_0x4189fa)[_0xc089('0x1e')](function(_0x56ceb6){return[_0x56ceb6,!![]];});});}})['spread'](function(_0x242f66,_0x285a21){if(_0x242f66){_0x30feba=_0x285a21;if(!_0x285a21){var _0xb61363={'from':(_0x58e4c3[_0xc089('0x8e')]['firstName']||'')+'\x20'+(_0x58e4c3[_0xc089('0x8e')]['lastName']||'')};if(_0x37ee13['body'][_0xc089('0x8a')]&&_0x37ee13[_0xc089('0x57')]['messageId']&&_0x37ee13[_0xc089('0x57')]['threadId']!=_0x37ee13[_0xc089('0x57')][_0xc089('0x8f')]){_0xb61363[_0xc089('0x8a')]=_0x37ee13[_0xc089('0x57')][_0xc089('0x8f')];}return _0x242f66[_0xc089('0x30')](_0xb61363);}else{return _0x242f66;}}})[_0xc089('0x1e')](function(_0x31b0ee){_0x58e4c3[_0xc089('0x90')]=_0x31b0ee['get']({'plain':!![]});_0x58e4c3[_0xc089('0x90')][_0xc089('0x91')]=_0x30feba;if(_0x58e4c3[_0xc089('0x90')]['created']){if(_0x58e4c3[_0xc089('0x84')][_0xc089('0x92')]){_0x58e4c3[_0xc089('0x85')][_0xc089('0x93')]({'id':0x0,'priority':_0x58e4c3[_0xc089('0x85')]['length']+0x1,'app':'close','appdata':_0xc089('0x94'),'interval':'*,*,*,*'});}}return db[_0xc089('0x95')][_0xc089('0x56')]({'body':_0x37ee13['body'][_0xc089('0x57')],'OpenchannelAccountId':_0x37ee13[_0xc089('0x52')]['id'],'OpenchannelInteractionId':_0x31b0ee['id'],'direction':'in','ContactId':_0x58e4c3[_0xc089('0x8e')]['id'],'AttachmentId':_0x37ee13['body'][_0xc089('0x96')]});})[_0xc089('0x1e')](function(_0x4f9de0){_0x58e4c3['message']=_0x4f9de0;if(_0x58e4c3[_0xc089('0x90')]['UserId']){return db[_0xc089('0x97')]['find']({'attributes':['id',_0xc089('0x34')],'where':{'id':_0x58e4c3['interaction']['UserId']}})[_0xc089('0x1e')](function(_0x1c7d96){if(_0x1c7d96){_0x58e4c3[_0xc089('0x85')][_0xc089('0x98')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x1c7d96[_0xc089('0x34')]+','+(_0x58e4c3[_0xc089('0x84')]['waitForTheAssignedAgent']||0xa),'interval':_0xc089('0x99')});_0x58e4c3[_0xc089('0x9a')]=![];}return respondWithRpcPromise(_0xc089('0x9b'),_0xc089('0x9c'),_0x58e4c3);});}return respondWithRpcPromise('Start',_0xc089('0x9c'),_0x58e4c3);})[_0xc089('0x1e')](function(_0x155e27){respondWithRpcPromise('EventManager','EventManager',{'event':'notify','message':_0x155e27},client9002);return _0x155e27;})[_0xc089('0x1e')](respondWithResult(_0x8b7d8d,null))['catch'](handleError(_0x8b7d8d,null));};exports['addApplications']=function(_0x574f55,_0x89bde5,_0x3f9edf){return db['OpenchannelAccount'][_0xc089('0x67')]({'where':{'id':_0x574f55['params']['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x89bde5,null))['then'](function(_0x4a4bb3){if(_0x4a4bb3){return db[_0xc089('0x9d')][_0xc089('0x9e')](function(_0x45ca2f){return db[_0xc089('0x9f')][_0xc089('0x31')]({'where':{'OpenchannelAccountId':_0x574f55[_0xc089('0x52')]['id']},'transaction':_0x45ca2f})[_0xc089('0x1e')](function(_0x107955){var _0x506e8d=_['map'](_0x574f55[_0xc089('0x57')],function(_0x3b20a9){_0x3b20a9['OpenchannelAccountId']=_0x574f55[_0xc089('0x52')]['id'];return _0x3b20a9;});return db['OpenchannelApplication']['bulkCreate'](_0x506e8d,{'transaction':_0x45ca2f});});})[_0xc089('0x1e')](function(){return db[_0xc089('0x9f')][_0xc089('0xa0')]({'where':{'OpenchannelAccountId':_0x574f55[_0xc089('0x52')]['id']},'order':_0xc089('0x88')});});}})['then'](respondWithResult(_0x89bde5,null))[_0xc089('0x26')](handleError(_0x89bde5,null));};exports[_0xc089('0xa1')]=function(_0x3fb772,_0x3b907e,_0x2f3a33){var _0x4730dd={};var _0x1b6fd0={};var _0x51a056;var _0x2c407c;return db['OpenchannelAccount'][_0xc089('0x67')]({'where':{'id':_0x3fb772[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x3b907e,null))[_0xc089('0x1e')](function(_0x28eab1){if(_0x28eab1){_0x51a056=_0x28eab1;_0x1b6fd0[_0xc089('0x42')]=_[_0xc089('0x40')](db[_0xc089('0x9f')][_0xc089('0x3b')]);_0x1b6fd0[_0xc089('0x3f')]=_['keys'](_0x3fb772[_0xc089('0x3f')]);_0x1b6fd0[_0xc089('0x4b')]=_['intersection'](_0x1b6fd0[_0xc089('0x42')],_0x1b6fd0[_0xc089('0x3f')]);_0x4730dd[_0xc089('0x43')]=_['intersection'](_0x1b6fd0['model'],qs[_0xc089('0x44')](_0x3fb772[_0xc089('0x3f')][_0xc089('0x44')]));_0x4730dd['attributes']=_0x4730dd[_0xc089('0x43')][_0xc089('0x53')]?_0x4730dd[_0xc089('0x43')]:_0x1b6fd0[_0xc089('0x42')];_0x4730dd[_0xc089('0x47')]=qs[_0xc089('0x48')](_0x3fb772['query'][_0xc089('0x48')]);_0x4730dd[_0xc089('0x49')]=qs[_0xc089('0x4b')](_[_0xc089('0x4a')](_0x3fb772['query'],_0x1b6fd0[_0xc089('0x4b')]));if(_0x3fb772[_0xc089('0x3f')][_0xc089('0x4c')]){_0x4730dd[_0xc089('0x49')]=_['merge'](_0x4730dd[_0xc089('0x49')],{'$or':_[_0xc089('0x39')](_0x4730dd['attributes'],function(_0x132ada){var _0x4a143b={};_0x4a143b[_0x132ada]={'$like':'%'+_0x3fb772[_0xc089('0x3f')]['filter']+'%'};return _0x4a143b;})});}_0x4730dd=_[_0xc089('0x54')]({},_0x4730dd,_0x3fb772[_0xc089('0x55')]);return _0x51a056[_0xc089('0xa1')](_0x4730dd);}})['then'](function(_0x124bf1){if(_0x124bf1){_0x2c407c=_0x124bf1[_0xc089('0x53')];if(!_0x3fb772[_0xc089('0x3f')]['hasOwnProperty'](_0xc089('0x46'))){_0x4730dd[_0xc089('0x2a')]=qs[_0xc089('0x2a')](_0x3fb772[_0xc089('0x3f')][_0xc089('0x2a')]);_0x4730dd[_0xc089('0x2b')]=qs[_0xc089('0x2b')](_0x3fb772[_0xc089('0x3f')][_0xc089('0x2b')]);}return _0x51a056[_0xc089('0xa1')](_0x4730dd);}})['then'](function(_0x529f46){if(_0x529f46){return _0x529f46?{'count':_0x2c407c,'rows':_0x529f46}:null;}})[_0xc089('0x1e')](respondWithResult(_0x3b907e,null))['catch'](handleError(_0x3b907e,null));};exports[_0xc089('0xa2')]=function(_0x4eb2f3,_0x2ceb1f,_0x42c1f5){var _0x13bb88={'raw':![],'where':{}};var _0x472870={};var _0x184806={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0xc089('0x67')]({'where':{'id':_0x4eb2f3[_0xc089('0x52')]['id']}})['then'](handleEntityNotFound(_0x2ceb1f,null))[_0xc089('0x1e')](function(_0x27fd9e){if(_0x27fd9e){_0x472870[_0xc089('0x42')]=_['keys'](db[_0xc089('0x8b')]['rawAttributes']);_0x472870[_0xc089('0x3f')]=_[_0xc089('0x40')](_0x4eb2f3[_0xc089('0x3f')]);_0x472870[_0xc089('0x4b')]=_[_0xc089('0x41')](_0x472870['model'],_0x472870[_0xc089('0x3f')]);_0x13bb88[_0xc089('0x43')]=_[_0xc089('0x41')](_0x472870[_0xc089('0x42')],qs['fields'](_0x4eb2f3[_0xc089('0x3f')]['fields']));_0x13bb88['attributes']=_0x13bb88[_0xc089('0x43')][_0xc089('0x53')]?_0x13bb88[_0xc089('0x43')]:_0x472870[_0xc089('0x42')];if(!_0x4eb2f3[_0xc089('0x3f')]['hasOwnProperty'](_0xc089('0x46'))){_0x13bb88[_0xc089('0x2a')]=qs[_0xc089('0x2a')](_0x4eb2f3['query']['limit']);_0x13bb88['offset']=qs[_0xc089('0x2b')](_0x4eb2f3[_0xc089('0x3f')][_0xc089('0x2b')]);}_0x13bb88[_0xc089('0x47')]=qs[_0xc089('0x48')](_0x4eb2f3[_0xc089('0x3f')][_0xc089('0x48')]);_0x13bb88['where']=qs['filters'](_[_0xc089('0x4a')](_0x4eb2f3['query'],_0x472870[_0xc089('0x4b')]));_0x13bb88[_0xc089('0x49')][_0xc089('0x64')]=_0x27fd9e['id'];if(_0x4eb2f3['query'][_0xc089('0x4c')]){_0x13bb88['where']=_[_0xc089('0x54')](_0x13bb88[_0xc089('0x49')],{'$or':_[_0xc089('0x39')](_0x13bb88[_0xc089('0x43')],function(_0x1a823b){var _0x1d5ba5={};_0x1d5ba5[_0x1a823b]={'$like':'%'+_0x4eb2f3[_0xc089('0x3f')][_0xc089('0x4c')]+'%'};return _0x1d5ba5;})});}_0x13bb88=_[_0xc089('0x54')]({},_0x13bb88,_0x4eb2f3[_0xc089('0x55')]);return db[_0xc089('0x8b')]['count']({'where':_0x13bb88[_0xc089('0x49')]})[_0xc089('0x1e')](function(_0x9a8f08){_0x184806[_0xc089('0x2c')]=_0x9a8f08;if(_0x4eb2f3[_0xc089('0x3f')][_0xc089('0x4d')]){_0x13bb88['include']=[{'model':db[_0xc089('0x80')],'as':_0xc089('0xa3'),'required':![]},{'model':db[_0xc089('0x97')],'as':_0xc089('0xa4'),'attributes':[_0xc089('0x34'),_0xc089('0xa5'),'internal'],'required':![]},{'model':db[_0xc089('0xa6')],'as':_0xc089('0xa7'),'attributes':['id',_0xc089('0x34'),_0xc089('0xa8')],'where':_0x4eb2f3['query']['tag']?{'id':_0x4eb2f3['query'][_0xc089('0xa9')]}:undefined,'required':_0x4eb2f3[_0xc089('0x3f')][_0xc089('0xa9')]?!![]:![]}];}return db[_0xc089('0x8b')][_0xc089('0x4f')](_0x13bb88);})['then'](function(_0x350bc6){_0x184806[_0xc089('0x50')]=_0x350bc6;return _0x184806;});}})[_0xc089('0x1e')](respondWithFilteredResult(_0x2ceb1f,_0x13bb88))[_0xc089('0x26')](handleError(_0x2ceb1f,null));};exports[_0xc089('0xaa')]=function(_0xe58c70,_0xafdbc6,_0x3d23a){return db[_0xc089('0x3a')]['find']({'where':{'id':_0xe58c70[_0xc089('0x52')]['id']}})['then'](handleEntityNotFound(_0xafdbc6,null))[_0xc089('0x1e')](function(_0x3a397c){if(_0x3a397c){return _0x3a397c[_0xc089('0xaa')](_0xe58c70[_0xc089('0x57')]['ids'],_[_0xc089('0xab')](_0xe58c70[_0xc089('0x57')],['ids','id'])||{})['spread'](function(_0x2dd26f){for(var _0x42fa23=0x0;_0x42fa23<_0xe58c70['body'][_0xc089('0x69')][_0xc089('0x53')];_0x42fa23+=0x1){socket[_0xc089('0xac')](_0xc089('0xad'),{'UserId':Number(_0xe58c70['body'][_0xc089('0x69')][_0x42fa23]),'OpenchannelAccountId':Number(_0xe58c70[_0xc089('0x52')]['id'])});}return _0x2dd26f;});}})[_0xc089('0x1e')](respondWithResult(_0xafdbc6,null))[_0xc089('0x26')](handleError(_0xafdbc6,null));};exports[_0xc089('0xae')]=function(_0x799b48,_0x2037a1,_0x70e653){return db[_0xc089('0x3a')][_0xc089('0x5d')]({'where':{'id':_0x799b48[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x2037a1,null))[_0xc089('0x1e')](function(_0x1d9b2c){if(_0x1d9b2c){return _0x1d9b2c['removeAgents'](_0x799b48[_0xc089('0x3f')][_0xc089('0x69')])['then'](function(){if(_[_0xc089('0xaf')](_0x799b48[_0xc089('0x3f')][_0xc089('0x69')])){for(var _0x1a7116=0x0;_0x1a7116<_0x799b48[_0xc089('0x3f')][_0xc089('0x69')][_0xc089('0x53')];_0x1a7116+=0x1){socket[_0xc089('0xac')](_0xc089('0xb0'),{'UserId':Number(_0x799b48[_0xc089('0x3f')]['ids'][_0x1a7116]),'OpenchannelAccountId':Number(_0x799b48[_0xc089('0x52')]['id'])});}}else{socket['emit'](_0xc089('0xb0'),{'UserId':Number(_0x799b48[_0xc089('0x3f')]['ids']),'OpenchannelAccountId':Number(_0x799b48[_0xc089('0x52')]['id'])});}});}})[_0xc089('0x1e')](respondWithStatusCode(_0x2037a1,null))[_0xc089('0x26')](handleError(_0x2037a1,null));};exports[_0xc089('0xb1')]=function(_0x54a8aa,_0x1e9c09,_0x841ec6){var _0x4a1b54={};var _0x94e857={};var _0x1578d9;var _0x4bf603;return db[_0xc089('0x3a')][_0xc089('0x67')]({'where':{'id':_0x54a8aa['params']['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x1e9c09,null))['then'](function(_0x18ca87){if(_0x18ca87){_0x1578d9=_0x18ca87;_0x94e857[_0xc089('0x42')]=_[_0xc089('0x40')](db[_0xc089('0x97')]['rawAttributes']);_0x94e857[_0xc089('0x3f')]=_[_0xc089('0x40')](_0x54a8aa['query']);_0x94e857[_0xc089('0x4b')]=_[_0xc089('0x41')](_0x94e857[_0xc089('0x42')],_0x94e857['query']);_0x4a1b54[_0xc089('0x43')]=_[_0xc089('0x41')](_0x94e857[_0xc089('0x42')],qs[_0xc089('0x44')](_0x54a8aa[_0xc089('0x3f')]['fields']));_0x4a1b54[_0xc089('0x43')]=_0x4a1b54[_0xc089('0x43')][_0xc089('0x53')]?_0x4a1b54[_0xc089('0x43')]:_0x94e857['model'];_0x4a1b54[_0xc089('0x47')]=qs['sort'](_0x54a8aa[_0xc089('0x3f')]['sort']);_0x4a1b54[_0xc089('0x49')]=qs['filters'](_['pick'](_0x54a8aa['query'],_0x94e857[_0xc089('0x4b')]));if(_0x54a8aa[_0xc089('0x3f')]['filter']){_0x4a1b54[_0xc089('0x49')]=_[_0xc089('0x54')](_0x4a1b54[_0xc089('0x49')],{'$or':_[_0xc089('0x39')](_0x4a1b54['attributes'],function(_0x50f7c8){var _0x5a1d60={};_0x5a1d60[_0x50f7c8]={'$like':'%'+_0x54a8aa[_0xc089('0x3f')][_0xc089('0x4c')]+'%'};return _0x5a1d60;})});}_0x4a1b54=_[_0xc089('0x54')]({},_0x4a1b54,_0x54a8aa['options']);return _0x1578d9[_0xc089('0xb1')](_0x4a1b54);}})[_0xc089('0x1e')](function(_0x32a14c){if(_0x32a14c){_0x4bf603=_0x32a14c[_0xc089('0x53')];if(!_0x54a8aa[_0xc089('0x3f')]['hasOwnProperty'](_0xc089('0x46'))){_0x4a1b54['limit']=qs[_0xc089('0x2a')](_0x54a8aa[_0xc089('0x3f')][_0xc089('0x2a')]);_0x4a1b54[_0xc089('0x2b')]=qs['offset'](_0x54a8aa[_0xc089('0x3f')][_0xc089('0x2b')]);}return _0x1578d9[_0xc089('0xb1')](_0x4a1b54);}})[_0xc089('0x1e')](function(_0x2b8f34){if(_0x2b8f34){return _0x2b8f34?{'count':_0x4bf603,'rows':_0x2b8f34}:null;}})[_0xc089('0x1e')](respondWithResult(_0x1e9c09,null))[_0xc089('0x26')](handleError(_0x1e9c09,null));};exports[_0xc089('0x35')]=function(_0x47b8fa,_0x529b11,_0x5ec7b9){var _0x46f82f,_0x1b11db,_0x5a22bb;if(_[_0xc089('0x76')](_0x47b8fa[_0xc089('0x57')][_0xc089('0x57')])||_0x47b8fa[_0xc089('0x57')][_0xc089('0x57')]===''){throw new db[(_0xc089('0x78'))][(_0xc089('0x6f'))](_0xc089('0x7a'));}if(_[_0xc089('0x76')](_0x47b8fa[_0xc089('0x57')]['to'])){}_0x46f82f=_0x47b8fa[_0xc089('0x57')]['to'];return db[_0xc089('0x3a')]['findOne']({'where':{'id':_0x47b8fa[_0xc089('0x52')]['id']}})[_0xc089('0x1e')](handleEntityNotFound(_0x529b11,null))[_0xc089('0x1e')](function(_0x3b01a2){if(_0x3b01a2){return db[_0xc089('0x3a')][_0xc089('0x5d')]({'where':{'id':_0x3b01a2['id']},'include':[{'model':db['CmList'],'as':_0xc089('0x83'),'include':[{'model':db[_0xc089('0x80')],'as':_0xc089('0x81'),'where':{[_0x3b01a2[_0xc089('0x7b')]]:_0x46f82f},'limit':0x1,'order':[[_0xc089('0x73'),_0xc089('0xb2')]]}]}]})[_0xc089('0x1e')](handleEntityNotFound(_0x529b11,null))['then'](function(_0x37e391){if(_0x37e391&&_0x37e391['List']){_0x1b11db=_0x37e391[_0xc089('0x5b')]({'plain':!![]});if(_0x1b11db[_0xc089('0x83')]&&_0x1b11db[_0xc089('0x83')]['Contacts'][_0xc089('0x53')]){return _0x1b11db['List'][_0xc089('0x81')][0x0];}return db['CmContact'][_0xc089('0x56')](_[_0xc089('0x16')](_0x47b8fa[_0xc089('0x57')],{'firstName':_0x46f82f,[_0x37e391[_0xc089('0x7b')]]:_0x46f82f,'phone':_0x46f82f,'ListId':_0x1b11db[_0xc089('0x75')]}));}})['then'](handleEntityNotFound(_0x529b11,null))[_0xc089('0x1e')](function(_0x5225ce){if(_0x5225ce){_0x5a22bb=_0x5225ce;return db[_0xc089('0x8b')]['find']({'where':{'ContactId':_0x5a22bb['id'],'closed':![],'OpenchannelAccountId':_0x1b11db['id']}})[_0xc089('0x1e')](function(_0x22bbac){if(_0x22bbac){return[_0x22bbac,![]];}return db[_0xc089('0x8b')]['create']({'UserId':_0x47b8fa[_0xc089('0x58')]['id'],'ContactId':_0x5a22bb['id'],'OpenchannelAccountId':_0x1b11db['id'],'lastMsgDirection':_0xc089('0xb3'),'Messages':[_[_0xc089('0x54')](_0x47b8fa[_0xc089('0x57')],{'read':![],'body':_0x47b8fa[_0xc089('0x57')][_0xc089('0x57')],'OpenchannelAccountId':_0x1b11db['id'],'UserId':_0x47b8fa['user']['id'],'ContactId':_0x5a22bb['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0xc089('0xb4')}]})[_0xc089('0x1e')](function(_0x3c0ecf){return[_0x3c0ecf,!![]];});});}})[_0xc089('0xb5')](function(_0x4db7b8,_0x58fd0d){if(_0x58fd0d){return _0x4db7b8;}return db[_0xc089('0x95')][_0xc089('0x56')](_['merge'](_0x47b8fa['body'],{'read':![],'body':_0x47b8fa[_0xc089('0x57')][_0xc089('0x57')],'OpenchannelAccountId':_0x1b11db['id'],'OpenchannelInteractionId':_0x4db7b8['id'],'UserId':_0x47b8fa[_0xc089('0x58')]['id'],'ContactId':_0x5a22bb['id']}))[_0xc089('0x1e')](function(_0x20ae13){_0x4db7b8['dataValues'][_0xc089('0xb4')]=[];_0x4db7b8[_0xc089('0xb6')][_0xc089('0xb4')][_0xc089('0x93')](_0x20ae13[_0xc089('0xb6')]);return _0x4db7b8;});});}})[_0xc089('0x1e')](respondWithResult(_0x529b11,null))[_0xc089('0x26')](handleError(_0x529b11,null));};
\ No newline at end of file
+var _0x88a6=['User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','addApplications','transaction','findAndCountAll','getApplications','findOne','Contact','Tag','Tags','color','tag','rows','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','eml-format','zip-dir','mustache','util','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','jayson/promise','client','http','then','info','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','OpenchannelAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','offset','count','set','Content-Range','json','apply','save','destroy','get','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','OpenchannelAccounts','UserProfileSection','userProfileId','autoAssociation','describe','addDisposition','OpenchannelAccountId','getDispositions','Disposition','nolimit','removeDispositions','ids','CannedAnswer','removeAnswers','notify','openchannel','CmContact','Sequelize','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','ListId','from','ValidationError','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','List','Contacts','DESC','OpenchannelApplication','Applications','account','applications','orderBy','priority','asc','contact','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','firstName','messageId','update','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId'];(function(_0x4d40f2,_0x4c0cc7){var _0x55a092=function(_0x398128){while(--_0x398128){_0x4d40f2['push'](_0x4d40f2['shift']());}};_0x55a092(++_0x4c0cc7);}(_0x88a6,0x17a));var _0x688a=function(_0x8ec6b4,_0x31ef52){_0x8ec6b4=_0x8ec6b4-0x0;var _0x52c0d0=_0x88a6[_0x8ec6b4];return _0x52c0d0;};'use strict';var emlformat=require(_0x688a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x688a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x688a('0x2'));var util=require(_0x688a('0x3'));var path=require('path');var sox=require(_0x688a('0x4'));var csv=require('to-csv');var ejs=require(_0x688a('0x5'));var fs=require('fs');var fs_extra=require(_0x688a('0x6'));var _=require(_0x688a('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x688a('0x8'));var deskjs=require(_0x688a('0x9'));var toCsv=require(_0x688a('0xa'));var querystring=require('querystring');var Papa=require(_0x688a('0xb'));var Redis=require(_0x688a('0xc'));var authService=require(_0x688a('0xd'));var qs=require(_0x688a('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x688a('0xf'))('api');var utils=require(_0x688a('0x10'));var config=require(_0x688a('0x11'));var licenseUtil=require(_0x688a('0x12'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x688a('0x13')](config[_0x688a('0x14')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x688a('0x14')]));require('./openchannelAccount.socket')['register'](socket);var jayson=require(_0x688a('0x15'));var client=jayson[_0x688a('0x16')][_0x688a('0x17')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3a527a,_0x45bae3,_0x5e77e9,_0x112579){return new BPromise(function(_0x5e7f8b,_0x405025){var _0x3d955e=_0x112579||client;return _0x3d955e['request'](_0x3a527a,_0x5e77e9)[_0x688a('0x18')](function(_0x28a646){logger[_0x688a('0x19')]('OpenchannelAccount,\x20%s,\x20%s',_0x45bae3,_0x688a('0x1a'));logger[_0x688a('0x1b')](_0x688a('0x1c'),_0x45bae3,_0x688a('0x1a'),JSON['stringify'](_0x28a646));if(_0x28a646[_0x688a('0x1d')]){if(_0x28a646[_0x688a('0x1d')]['code']===0x1f4){logger[_0x688a('0x1d')](_0x688a('0x1e'),_0x45bae3,_0x28a646[_0x688a('0x1d')][_0x688a('0x1f')]);return _0x405025(_0x28a646[_0x688a('0x1d')][_0x688a('0x1f')]);}logger[_0x688a('0x1d')](_0x688a('0x1e'),_0x45bae3,_0x28a646[_0x688a('0x1d')][_0x688a('0x1f')]);return _0x5e7f8b(_0x28a646[_0x688a('0x1d')][_0x688a('0x1f')]);}else{logger[_0x688a('0x19')]('OpenchannelAccount,\x20%s,\x20%s',_0x45bae3,'request\x20sent');_0x5e7f8b(_0x28a646[_0x688a('0x20')][_0x688a('0x1f')]);}})[_0x688a('0x21')](function(_0x4d513b){logger[_0x688a('0x1d')]('OpenchannelAccount,\x20%s,\x20%s',_0x45bae3,_0x4d513b);_0x405025(_0x4d513b);});});}function respondWithStatusCode(_0x346f6d,_0x5a14e4){_0x5a14e4=_0x5a14e4||0xcc;return function(_0x93ab57){if(_0x93ab57){return _0x346f6d[_0x688a('0x22')](_0x5a14e4);}return _0x346f6d[_0x688a('0x23')](_0x5a14e4)['end']();};}function respondWithResult(_0x51867e,_0x1efdcf){_0x1efdcf=_0x1efdcf||0xc8;return function(_0x12394d){if(_0x12394d){return _0x51867e[_0x688a('0x23')](_0x1efdcf)['json'](_0x12394d);}};}function respondWithFilteredResult(_0x5005eb,_0x1d4506){return function(_0x4746d1){if(_0x4746d1){var _0x1a45cf=typeof _0x1d4506[_0x688a('0x24')]==='undefined'&&typeof _0x1d4506['limit']==='undefined';var _0x258500=_0x4746d1[_0x688a('0x25')];var _0x2976df=_0x1a45cf?0x0:_0x1d4506['offset'];var _0x3c892c=_0x1a45cf?_0x4746d1['count']:_0x1d4506[_0x688a('0x24')]+_0x1d4506['limit'];var _0x289377;if(_0x3c892c>=_0x258500){_0x3c892c=_0x258500;_0x289377=0xc8;}else{_0x289377=0xce;}_0x5005eb[_0x688a('0x23')](_0x289377);return _0x5005eb[_0x688a('0x26')](_0x688a('0x27'),_0x2976df+'-'+_0x3c892c+'/'+_0x258500)[_0x688a('0x28')](_0x4746d1);}return null;};}function patchUpdates(_0x3deb81){return function(_0x4b093e){try{jsonpatch[_0x688a('0x29')](_0x4b093e,_0x3deb81,!![]);}catch(_0x38868a){return BPromise['reject'](_0x38868a);}return _0x4b093e[_0x688a('0x2a')]();};}function saveUpdates(_0x2a1619,_0x34e44a){return function(_0x40a3b6){if(_0x40a3b6){return _0x40a3b6['update'](_0x2a1619)[_0x688a('0x18')](function(_0x5f4f12){return _0x5f4f12;});}return null;};}function removeEntity(_0x549790,_0x100050){return function(_0x2788bf){if(_0x2788bf){return _0x2788bf[_0x688a('0x2b')]()[_0x688a('0x18')](function(){var _0x55b417=_0x2788bf[_0x688a('0x2c')]({'plain':!![]});var _0x45588e='OpenchannelAccounts';return db[_0x688a('0x2d')][_0x688a('0x2b')]({'where':{'type':_0x45588e,'resourceId':_0x55b417['id']}})['then'](function(){return _0x2788bf;});})['then'](function(){_0x549790[_0x688a('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1721d7,_0x2118ce){return function(_0x4c008b){if(!_0x4c008b){_0x1721d7[_0x688a('0x22')](0x194);}return _0x4c008b;};}function handleError(_0x3e76c6,_0x3f6d04){_0x3f6d04=_0x3f6d04||0x1f4;return function(_0x264324){logger[_0x688a('0x1d')](_0x264324[_0x688a('0x2e')]);if(_0x264324[_0x688a('0x2f')]){delete _0x264324[_0x688a('0x2f')];}_0x3e76c6['status'](_0x3f6d04)[_0x688a('0x30')](_0x264324);};}exports[_0x688a('0x31')]=function(_0xbd87b,_0x21eda9){var _0x56940a={'include':[{'model':db[_0x688a('0x32')],'as':_0x688a('0x33')}]},_0x177fbf={},_0x4d3746={'count':0x0,'rows':[]};var _0x19d813=_[_0x688a('0x34')](db[_0x688a('0x35')][_0x688a('0x36')],function(_0x3a2430){return{'name':_0x3a2430['fieldName'],'type':_0x3a2430['type'][_0x688a('0x37')]};});_0x177fbf[_0x688a('0x38')]=_[_0x688a('0x34')](_0x19d813,'name');_0x177fbf['query']=_[_0x688a('0x39')](_0xbd87b[_0x688a('0x3a')]);_0x177fbf[_0x688a('0x3b')]=_[_0x688a('0x3c')](_0x177fbf['model'],_0x177fbf['query']);_0x56940a[_0x688a('0x3d')]=_[_0x688a('0x3c')](_0x177fbf[_0x688a('0x38')],qs['fields'](_0xbd87b['query'][_0x688a('0x3e')]));_0x56940a[_0x688a('0x3d')]=_0x56940a[_0x688a('0x3d')][_0x688a('0x3f')]?_0x56940a[_0x688a('0x3d')]:_0x177fbf[_0x688a('0x38')];if(!_0xbd87b['query'][_0x688a('0x40')]('nolimit')){_0x56940a[_0x688a('0x41')]=qs[_0x688a('0x41')](_0xbd87b['query'][_0x688a('0x41')]);_0x56940a[_0x688a('0x24')]=qs[_0x688a('0x24')](_0xbd87b[_0x688a('0x3a')][_0x688a('0x24')]);}_0x56940a[_0x688a('0x42')]=qs[_0x688a('0x43')](_0xbd87b['query']['sort']);_0x56940a[_0x688a('0x44')]=qs['filters'](_[_0x688a('0x45')](_0xbd87b['query'],_0x177fbf[_0x688a('0x3b')]),_0x19d813);if(_0xbd87b[_0x688a('0x3a')][_0x688a('0x46')]){_0x56940a[_0x688a('0x44')]=_['merge'](_0x56940a[_0x688a('0x44')],{'$or':_[_0x688a('0x34')](_0x19d813,function(_0x3936cb){if(_0x3936cb['type']!==_0x688a('0x47')){var _0x30ec10={};_0x30ec10[_0x3936cb[_0x688a('0x2f')]]={'$like':'%'+_0xbd87b[_0x688a('0x3a')][_0x688a('0x46')]+'%'};return _0x30ec10;}})});}_0x56940a=_[_0x688a('0x48')]({},_0x56940a,_0xbd87b[_0x688a('0x49')]);var _0x592926={'where':_0x56940a[_0x688a('0x44')]};return db['OpenchannelAccount']['count'](_0x592926)['then'](function(_0x399843){_0x4d3746[_0x688a('0x25')]=_0x399843;if(_0xbd87b['query'][_0x688a('0x4a')]){_0x56940a[_0x688a('0x4b')]=[{'all':!![]}];}return db['OpenchannelAccount'][_0x688a('0x4c')](_0x56940a);})['then'](function(_0x33720c){_0x4d3746['rows']=_0x33720c;return _0x4d3746;})[_0x688a('0x18')](respondWithFilteredResult(_0x21eda9,_0x56940a))[_0x688a('0x21')](handleError(_0x21eda9,null));};exports['show']=function(_0x1a750d,_0x1b38ab){var _0x11afff={'raw':![],'where':{'id':_0x1a750d[_0x688a('0x4d')]['id']},'include':[{'model':db[_0x688a('0x32')],'as':_0x688a('0x33')}]},_0x332fa3={};_0x332fa3[_0x688a('0x38')]=_[_0x688a('0x39')](db[_0x688a('0x35')][_0x688a('0x36')]);_0x332fa3[_0x688a('0x3a')]=_[_0x688a('0x39')](_0x1a750d[_0x688a('0x3a')]);_0x332fa3['filters']=_[_0x688a('0x3c')](_0x332fa3['model'],_0x332fa3[_0x688a('0x3a')]);_0x11afff[_0x688a('0x3d')]=_[_0x688a('0x3c')](_0x332fa3['model'],qs[_0x688a('0x3e')](_0x1a750d['query'][_0x688a('0x3e')]));_0x11afff[_0x688a('0x3d')]=_0x11afff[_0x688a('0x3d')]['length']?_0x11afff['attributes']:_0x332fa3[_0x688a('0x38')];if(_0x1a750d[_0x688a('0x3a')][_0x688a('0x4a')]){_0x11afff[_0x688a('0x4b')]=[{'all':!![]}];}_0x11afff=_[_0x688a('0x48')]({},_0x11afff,_0x1a750d[_0x688a('0x49')]);return db[_0x688a('0x35')][_0x688a('0x4e')](_0x11afff)['then'](handleEntityNotFound(_0x1b38ab,null))[_0x688a('0x18')](respondWithResult(_0x1b38ab,null))[_0x688a('0x21')](handleError(_0x1b38ab,null));};exports['create']=function(_0x566860,_0x4678a5){return db['OpenchannelAccount'][_0x688a('0x4f')](_0x566860[_0x688a('0x50')],{})[_0x688a('0x18')](function(_0xe9d158){var _0x40fca2=_0x566860['user'][_0x688a('0x2c')]({'plain':!![]});if(!_0x40fca2)throw new Error(_0x688a('0x51'));if(_0x40fca2[_0x688a('0x52')]===_0x688a('0x53')){var _0x51adfe=_0xe9d158[_0x688a('0x2c')]({'plain':!![]});var _0x384d36=_0x688a('0x54');return db[_0x688a('0x55')][_0x688a('0x4e')]({'where':{'name':_0x384d36,'userProfileId':_0x40fca2[_0x688a('0x56')]},'raw':!![]})[_0x688a('0x18')](function(_0x32700c){if(_0x32700c&&_0x32700c[_0x688a('0x57')]===0x0){return db[_0x688a('0x2d')]['create']({'name':_0x51adfe[_0x688a('0x2f')],'resourceId':_0x51adfe['id'],'type':_0x32700c['name'],'sectionId':_0x32700c['id']},{})[_0x688a('0x18')](function(){return _0xe9d158;});}else{return _0xe9d158;}})['catch'](function(_0x3f853a){logger[_0x688a('0x1d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3f853a);throw _0x3f853a;});}return _0xe9d158;})[_0x688a('0x18')](respondWithResult(_0x4678a5,0xc9))[_0x688a('0x21')](handleError(_0x4678a5,null));};exports['update']=function(_0x4700db,_0x5bdd23){if(_0x4700db['body']['id']){delete _0x4700db[_0x688a('0x50')]['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x4700db[_0x688a('0x4d')]['id']},'include':[{'model':db[_0x688a('0x32')],'as':_0x688a('0x33')}]})['then'](handleEntityNotFound(_0x5bdd23,null))[_0x688a('0x18')](saveUpdates(_0x4700db[_0x688a('0x50')],null))[_0x688a('0x18')](respondWithResult(_0x5bdd23,null))[_0x688a('0x21')](handleError(_0x5bdd23,null));};exports[_0x688a('0x2b')]=function(_0x3a8408,_0x511114){return db[_0x688a('0x35')][_0x688a('0x4e')]({'where':{'id':_0x3a8408[_0x688a('0x4d')]['id']}})[_0x688a('0x18')](handleEntityNotFound(_0x511114,null))[_0x688a('0x18')](removeEntity(_0x511114,null))['catch'](handleError(_0x511114,null));};exports[_0x688a('0x58')]=function(_0x5273a3,_0x5d0e1f){return db[_0x688a('0x35')][_0x688a('0x58')]()[_0x688a('0x18')](respondWithResult(_0x5d0e1f,null))['catch'](handleError(_0x5d0e1f,null));};exports[_0x688a('0x59')]=function(_0x33fd64,_0x58d4da,_0x4d6c8e){if(_0x33fd64[_0x688a('0x50')]['id']){delete _0x33fd64['body']['id'];}return db[_0x688a('0x35')]['find']({'where':{'id':_0x33fd64['params']['id']}})[_0x688a('0x18')](handleEntityNotFound(_0x58d4da,null))[_0x688a('0x18')](function(_0x331fc5){if(_0x331fc5){_0x33fd64['body'][_0x688a('0x5a')]=_0x331fc5['id'];return db['Disposition'][_0x688a('0x4f')](_0x33fd64[_0x688a('0x50')]);}})[_0x688a('0x18')](respondWithResult(_0x58d4da,null))[_0x688a('0x21')](handleError(_0x58d4da,null));};exports[_0x688a('0x5b')]=function(_0x320023,_0x57e7bd,_0x1d674a){var _0x27ac90={'raw':![],'where':{}};var _0x257537={};var _0x3ea41a={'count':0x0,'rows':[]};return db[_0x688a('0x35')]['findOne']({'where':{'id':_0x320023[_0x688a('0x4d')]['id']}})[_0x688a('0x18')](handleEntityNotFound(_0x57e7bd,null))[_0x688a('0x18')](function(_0x405c0a){if(_0x405c0a){_0x257537['model']=_[_0x688a('0x39')](db[_0x688a('0x5c')][_0x688a('0x36')]);_0x257537[_0x688a('0x3a')]=_[_0x688a('0x39')](_0x320023[_0x688a('0x3a')]);_0x257537[_0x688a('0x3b')]=_['intersection'](_0x257537[_0x688a('0x38')],_0x257537[_0x688a('0x3a')]);_0x27ac90[_0x688a('0x3d')]=_['intersection'](_0x257537[_0x688a('0x38')],qs['fields'](_0x320023[_0x688a('0x3a')][_0x688a('0x3e')]));_0x27ac90[_0x688a('0x3d')]=_0x27ac90[_0x688a('0x3d')][_0x688a('0x3f')]?_0x27ac90['attributes']:_0x257537[_0x688a('0x38')];if(!_0x320023['query']['hasOwnProperty'](_0x688a('0x5d'))){_0x27ac90[_0x688a('0x41')]=qs['limit'](_0x320023[_0x688a('0x3a')][_0x688a('0x41')]);_0x27ac90[_0x688a('0x24')]=qs[_0x688a('0x24')](_0x320023[_0x688a('0x3a')][_0x688a('0x24')]);}_0x27ac90[_0x688a('0x42')]=qs[_0x688a('0x43')](_0x320023[_0x688a('0x3a')][_0x688a('0x43')]);_0x27ac90[_0x688a('0x44')]=qs[_0x688a('0x3b')](_[_0x688a('0x45')](_0x320023[_0x688a('0x3a')],_0x257537[_0x688a('0x3b')]));_0x27ac90['where'][_0x688a('0x5a')]=_0x405c0a['id'];if(_0x320023['query'][_0x688a('0x46')]){_0x27ac90[_0x688a('0x44')]=_[_0x688a('0x48')](_0x27ac90[_0x688a('0x44')],{'$or':_[_0x688a('0x34')](_0x27ac90[_0x688a('0x3d')],function(_0x9ee71c){var _0x3372c7={};_0x3372c7[_0x9ee71c]={'$like':'%'+_0x320023[_0x688a('0x3a')][_0x688a('0x46')]+'%'};return _0x3372c7;})});}_0x27ac90=_[_0x688a('0x48')]({},_0x27ac90,_0x320023[_0x688a('0x49')]);return db[_0x688a('0x5c')][_0x688a('0x25')]({'where':_0x27ac90['where']})[_0x688a('0x18')](function(_0x364b5e){_0x3ea41a['count']=_0x364b5e;if(_0x320023[_0x688a('0x3a')][_0x688a('0x4a')]){_0x27ac90[_0x688a('0x4b')]=[{'all':!![]}];}return db[_0x688a('0x5c')][_0x688a('0x4c')](_0x27ac90);})[_0x688a('0x18')](function(_0x2ae6bf){_0x3ea41a['rows']=_0x2ae6bf;return _0x3ea41a;});}})[_0x688a('0x18')](respondWithFilteredResult(_0x57e7bd,_0x27ac90))['catch'](handleError(_0x57e7bd,null));};exports['removeDispositions']=function(_0x419efe,_0x229c64,_0xe0f1fa){return db[_0x688a('0x35')][_0x688a('0x4e')]({'where':{'id':_0x419efe[_0x688a('0x4d')]['id']}})['then'](handleEntityNotFound(_0x229c64,null))[_0x688a('0x18')](function(_0x288103){if(_0x288103){return _0x288103[_0x688a('0x5e')](_0x419efe[_0x688a('0x3a')][_0x688a('0x5f')]);}})[_0x688a('0x18')](respondWithStatusCode(_0x229c64,null))[_0x688a('0x21')](handleError(_0x229c64,null));};exports['addAnswer']=function(_0x4db5c0,_0x144791,_0x40d3fa){if(_0x4db5c0[_0x688a('0x50')]['id']){delete _0x4db5c0[_0x688a('0x50')]['id'];}return db[_0x688a('0x35')][_0x688a('0x4e')]({'where':{'id':_0x4db5c0[_0x688a('0x4d')]['id']}})[_0x688a('0x18')](handleEntityNotFound(_0x144791,null))[_0x688a('0x18')](function(_0x5af813){if(_0x5af813){_0x4db5c0[_0x688a('0x50')][_0x688a('0x5a')]=_0x5af813['id'];return db[_0x688a('0x60')][_0x688a('0x4f')](_0x4db5c0[_0x688a('0x50')]);}})['then'](respondWithResult(_0x144791,null))[_0x688a('0x21')](handleError(_0x144791,null));};exports['getAnswers']=function(_0x1351b6,_0x562a89,_0x4cdada){var _0xf379aa={'raw':![],'where':{}};var _0x4f2e01={};var _0x336c83={'count':0x0,'rows':[]};return db[_0x688a('0x35')]['findOne']({'where':{'id':_0x1351b6[_0x688a('0x4d')]['id']}})[_0x688a('0x18')](handleEntityNotFound(_0x562a89,null))[_0x688a('0x18')](function(_0x166896){if(_0x166896){_0x4f2e01[_0x688a('0x38')]=_[_0x688a('0x39')](db[_0x688a('0x60')][_0x688a('0x36')]);_0x4f2e01[_0x688a('0x3a')]=_[_0x688a('0x39')](_0x1351b6[_0x688a('0x3a')]);_0x4f2e01[_0x688a('0x3b')]=_[_0x688a('0x3c')](_0x4f2e01[_0x688a('0x38')],_0x4f2e01[_0x688a('0x3a')]);_0xf379aa['attributes']=_[_0x688a('0x3c')](_0x4f2e01['model'],qs[_0x688a('0x3e')](_0x1351b6[_0x688a('0x3a')][_0x688a('0x3e')]));_0xf379aa[_0x688a('0x3d')]=_0xf379aa['attributes'][_0x688a('0x3f')]?_0xf379aa[_0x688a('0x3d')]:_0x4f2e01[_0x688a('0x38')];if(!_0x1351b6[_0x688a('0x3a')]['hasOwnProperty'](_0x688a('0x5d'))){_0xf379aa['limit']=qs[_0x688a('0x41')](_0x1351b6[_0x688a('0x3a')][_0x688a('0x41')]);_0xf379aa[_0x688a('0x24')]=qs[_0x688a('0x24')](_0x1351b6[_0x688a('0x3a')][_0x688a('0x24')]);}_0xf379aa['order']=qs[_0x688a('0x43')](_0x1351b6[_0x688a('0x3a')]['sort']);_0xf379aa[_0x688a('0x44')]=qs[_0x688a('0x3b')](_['pick'](_0x1351b6[_0x688a('0x3a')],_0x4f2e01[_0x688a('0x3b')]));_0xf379aa[_0x688a('0x44')][_0x688a('0x5a')]=_0x166896['id'];if(_0x1351b6[_0x688a('0x3a')]['filter']){_0xf379aa['where']=_[_0x688a('0x48')](_0xf379aa[_0x688a('0x44')],{'$or':_[_0x688a('0x34')](_0xf379aa[_0x688a('0x3d')],function(_0x16aa6a){var _0x1754dc={};_0x1754dc[_0x16aa6a]={'$like':'%'+_0x1351b6[_0x688a('0x3a')][_0x688a('0x46')]+'%'};return _0x1754dc;})});}_0xf379aa=_[_0x688a('0x48')]({},_0xf379aa,_0x1351b6[_0x688a('0x49')]);return db['CannedAnswer'][_0x688a('0x25')]({'where':_0xf379aa[_0x688a('0x44')]})['then'](function(_0x5d1746){_0x336c83['count']=_0x5d1746;if(_0x1351b6[_0x688a('0x3a')]['includeAll']){_0xf379aa['include']=[{'all':!![]}];}return db[_0x688a('0x60')][_0x688a('0x4c')](_0xf379aa);})[_0x688a('0x18')](function(_0x580700){_0x336c83['rows']=_0x580700;return _0x336c83;});}})['then'](respondWithFilteredResult(_0x562a89,_0xf379aa))[_0x688a('0x21')](handleError(_0x562a89,null));};exports[_0x688a('0x61')]=function(_0x51cc62,_0x5d24a3,_0x5506ed){return db[_0x688a('0x35')][_0x688a('0x4e')]({'where':{'id':_0x51cc62[_0x688a('0x4d')]['id']}})[_0x688a('0x18')](handleEntityNotFound(_0x5d24a3,null))[_0x688a('0x18')](function(_0x31d692){if(_0x31d692){return _0x31d692[_0x688a('0x61')](_0x51cc62[_0x688a('0x3a')][_0x688a('0x5f')]);}})[_0x688a('0x18')](respondWithStatusCode(_0x5d24a3,null))[_0x688a('0x21')](handleError(_0x5d24a3,null));};exports[_0x688a('0x62')]=function(_0x50ece3,_0x2a2f88,_0x1461f3){var _0x52c21d={'body':_0x50ece3[_0x688a('0x50')],'channel':_0x688a('0x63')};var _0x4b6989=[];var _0x4a2586=[];var _0x415326={};var _0x2e89e9=![];return db[_0x688a('0x64')][_0x688a('0x58')]()[_0x688a('0x18')](function(_0x41a58d){if(!_0x41a58d){throw new db[(_0x688a('0x65'))]['ValidationError'](_0x688a('0x66'));}_0x4b6989=_[_0x688a('0x67')](_[_0x688a('0x39')](_0x41a58d),['createdAt',_0x688a('0x68')]);_0x4a2586=_['difference'](_[_0x688a('0x39')](_0x41a58d),[_0x688a('0x69'),_0x688a('0x68'),_0x688a('0x6a'),_0x688a('0x6b')]);if(_0x50ece3[_0x688a('0x50')]['id']){delete _0x50ece3[_0x688a('0x50')]['id'];}if(_['isNil'](_0x50ece3[_0x688a('0x50')][_0x688a('0x6c')])){throw new db[(_0x688a('0x65'))][(_0x688a('0x6d'))](_0x688a('0x6e'));}if(_[_0x688a('0x6f')](_0x50ece3['body'][_0x688a('0x50')])||_0x50ece3[_0x688a('0x50')]['body']===''){throw new db[(_0x688a('0x65'))][(_0x688a('0x6d'))](_0x688a('0x70'));}if(_[_0x688a('0x6f')](_0x50ece3[_0x688a('0x50')][_0x688a('0x71')])){throw new db[(_0x688a('0x65'))][(_0x688a('0x6d'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4a2586);}if(!_['includes'](_0x4a2586,_0x50ece3[_0x688a('0x50')]['mapKey'])){throw new db[(_0x688a('0x65'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4a2586);}_0x415326[_0x50ece3['body'][_0x688a('0x71')]]=_0x50ece3[_0x688a('0x50')][_0x688a('0x6c')];})[_0x688a('0x18')](function(){return db[_0x688a('0x35')][_0x688a('0x4e')]({'where':{'id':_0x50ece3['params']['id']},'include':[{'model':db['CmList'],'as':_0x688a('0x72'),'include':[{'model':db[_0x688a('0x64')],'as':_0x688a('0x73'),'where':_0x415326,'limit':0x1,'order':[[_0x688a('0x68'),_0x688a('0x74')]]}]},{'model':db[_0x688a('0x75')],'as':_0x688a('0x76')}]});})[_0x688a('0x18')](handleEntityNotFound(_0x2a2f88,null))[_0x688a('0x18')](function(_0x27a8df){if(_0x27a8df&&_0x27a8df[_0x688a('0x72')]){_0x52c21d[_0x688a('0x77')]=_0x27a8df;_0x52c21d[_0x688a('0x78')]=_0x27a8df[_0x688a('0x76')];_0x52c21d['list']=_0x27a8df['List'];_0x52c21d[_0x688a('0x78')]=_[_0x688a('0x79')](_0x52c21d['applications'],[_0x688a('0x7a')],[_0x688a('0x7b')]);if(_0x52c21d[_0x688a('0x77')][_0x688a('0x76')]){delete _0x52c21d[_0x688a('0x77')][_0x688a('0x76')];}if(_0x52c21d[_0x688a('0x77')]['List']&&_0x52c21d['account']['List'][_0x688a('0x73')][_0x688a('0x3f')]){return _0x52c21d[_0x688a('0x77')][_0x688a('0x72')][_0x688a('0x73')][0x0];}var _0x3946c5=_[_0x688a('0x13')](_0x50ece3[_0x688a('0x50')],{'firstName':_0x50ece3['body']['from'],'ListId':_0x27a8df[_0x688a('0x6b')]});_0x3946c5[_0x50ece3[_0x688a('0x50')][_0x688a('0x71')]]=_0x50ece3[_0x688a('0x50')]['from'];return db['CmContact'][_0x688a('0x4f')](_0x3946c5,{'fields':_0x4b6989,'raw':!![]});}})[_0x688a('0x18')](handleEntityNotFound(_0x2a2f88,null))[_0x688a('0x18')](function(_0x306f9f){_0x52c21d[_0x688a('0x7c')]=_0x306f9f;if(_0x306f9f){var _0x134985={'ContactId':_0x306f9f['id'],'OpenchannelAccountId':_0x50ece3[_0x688a('0x4d')]['id'],'from':(_0x306f9f['firstName']||'')+'\x20'+(_0x306f9f[_0x688a('0x7d')]||'')};var _0x5e3b20={'OpenchannelAccountId':_0x50ece3[_0x688a('0x4d')]['id'],'closed':![]};if(_0x50ece3[_0x688a('0x50')][_0x688a('0x7e')]){_0x5e3b20[_0x688a('0x7e')]=_0x50ece3[_0x688a('0x50')][_0x688a('0x7e')];return db[_0x688a('0x7f')][_0x688a('0x4e')]({'where':_0x5e3b20})[_0x688a('0x18')](function(_0x2ce503){if(_0x2ce503){return[_0x2ce503,![]];}_0x134985[_0x688a('0x7e')]=_0x50ece3['body']['threadId'];_0x134985[_0x688a('0x80')]=_0x50ece3[_0x688a('0x50')][_0x688a('0x80')];return db['OpenchannelInteraction']['create'](_0x134985)['then'](function(_0x3ae5c7){return[_0x3ae5c7,!![]];});});}else{_0x5e3b20['threadId']=null;}_0x5e3b20[_0x688a('0x81')]=_0x306f9f['id'];return db[_0x688a('0x7f')][_0x688a('0x4e')]({'where':_0x5e3b20})[_0x688a('0x18')](function(_0x4a5806){if(_0x4a5806){return[_0x4a5806,![]];}return db[_0x688a('0x7f')][_0x688a('0x4f')](_0x134985)[_0x688a('0x18')](function(_0x41e128){return[_0x41e128,!![]];});});}})[_0x688a('0x82')](function(_0x3b9d04,_0x695856){if(_0x3b9d04){_0x2e89e9=_0x695856;if(!_0x695856){var _0x2cb0fc={'from':(_0x52c21d[_0x688a('0x7c')][_0x688a('0x83')]||'')+'\x20'+(_0x52c21d['contact'][_0x688a('0x7d')]||'')};if(_0x50ece3[_0x688a('0x50')][_0x688a('0x7e')]&&_0x50ece3[_0x688a('0x50')][_0x688a('0x84')]&&_0x50ece3['body'][_0x688a('0x7e')]!=_0x50ece3[_0x688a('0x50')][_0x688a('0x84')]){_0x2cb0fc['threadId']=_0x50ece3[_0x688a('0x50')]['messageId'];}return _0x3b9d04[_0x688a('0x85')](_0x2cb0fc);}else{return _0x3b9d04;}}})[_0x688a('0x18')](function(_0x160836){_0x52c21d[_0x688a('0x86')]=_0x160836[_0x688a('0x2c')]({'plain':!![]});_0x52c21d[_0x688a('0x86')][_0x688a('0x87')]=_0x2e89e9;if(_0x52c21d['interaction']['created']){if(_0x52c21d[_0x688a('0x77')][_0x688a('0x88')]){_0x52c21d[_0x688a('0x78')][_0x688a('0x89')]({'id':0x0,'priority':_0x52c21d[_0x688a('0x78')][_0x688a('0x3f')]+0x1,'app':_0x688a('0x8a'),'appdata':_0x688a('0x8b'),'interval':_0x688a('0x8c')});}}return db[_0x688a('0x8d')][_0x688a('0x4f')]({'body':_0x50ece3[_0x688a('0x50')][_0x688a('0x50')],'OpenchannelAccountId':_0x50ece3[_0x688a('0x4d')]['id'],'OpenchannelInteractionId':_0x160836['id'],'direction':'in','ContactId':_0x52c21d['contact']['id'],'AttachmentId':_0x50ece3['body'][_0x688a('0x8e')]});})[_0x688a('0x18')](function(_0x55f6ae){_0x52c21d[_0x688a('0x1f')]=_0x55f6ae;if(_0x52c21d[_0x688a('0x86')][_0x688a('0x8f')]){return db[_0x688a('0x90')][_0x688a('0x4e')]({'attributes':['id',_0x688a('0x2f')],'where':{'id':_0x52c21d['interaction'][_0x688a('0x8f')]}})[_0x688a('0x18')](function(_0x36b47e){if(_0x36b47e){_0x52c21d[_0x688a('0x78')][_0x688a('0x91')]({'id':0x0,'priority':0x0,'app':_0x688a('0x92'),'appdata':_0x36b47e[_0x688a('0x2f')]+','+(_0x52c21d[_0x688a('0x77')][_0x688a('0x93')]||0xa),'interval':_0x688a('0x8c')});_0x52c21d[_0x688a('0x94')]=![];}return respondWithRpcPromise(_0x688a('0x95'),_0x688a('0x96'),_0x52c21d);});}return respondWithRpcPromise('Start',_0x688a('0x96'),_0x52c21d);})[_0x688a('0x18')](function(_0x4f0a71){respondWithRpcPromise(_0x688a('0x97'),_0x688a('0x97'),{'event':_0x688a('0x62'),'message':_0x4f0a71},client9002);return _0x4f0a71;})[_0x688a('0x18')](respondWithResult(_0x2a2f88,null))[_0x688a('0x21')](handleError(_0x2a2f88,null));};exports[_0x688a('0x98')]=function(_0x31bbef,_0x2149f8,_0x454abb){return db['OpenchannelAccount']['findOne']({'where':{'id':_0x31bbef[_0x688a('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2149f8,null))[_0x688a('0x18')](function(_0xc282f3){if(_0xc282f3){return db['sequelize'][_0x688a('0x99')](function(_0x44d99b){return db[_0x688a('0x75')][_0x688a('0x2b')]({'where':{'OpenchannelAccountId':_0x31bbef['params']['id']},'transaction':_0x44d99b})[_0x688a('0x18')](function(_0x9dfd1a){var _0x414aa0=_['map'](_0x31bbef[_0x688a('0x50')],function(_0xe4dfab){_0xe4dfab[_0x688a('0x5a')]=_0x31bbef['params']['id'];return _0xe4dfab;});return db[_0x688a('0x75')]['bulkCreate'](_0x414aa0,{'transaction':_0x44d99b});});})['then'](function(){return db[_0x688a('0x75')][_0x688a('0x9a')]({'where':{'OpenchannelAccountId':_0x31bbef[_0x688a('0x4d')]['id']},'order':_0x688a('0x7a')});});}})[_0x688a('0x18')](respondWithResult(_0x2149f8,null))[_0x688a('0x21')](handleError(_0x2149f8,null));};exports[_0x688a('0x9b')]=function(_0x19f2bb,_0x20c907,_0x3136c1){var _0x46d2e9={};var _0x106a9f={};var _0x4c2e7f;var _0x55b95c;return db[_0x688a('0x35')][_0x688a('0x9c')]({'where':{'id':_0x19f2bb[_0x688a('0x4d')]['id']}})[_0x688a('0x18')](handleEntityNotFound(_0x20c907,null))[_0x688a('0x18')](function(_0x30e5a2){if(_0x30e5a2){_0x4c2e7f=_0x30e5a2;_0x106a9f[_0x688a('0x38')]=_[_0x688a('0x39')](db[_0x688a('0x75')][_0x688a('0x36')]);_0x106a9f[_0x688a('0x3a')]=_[_0x688a('0x39')](_0x19f2bb[_0x688a('0x3a')]);_0x106a9f[_0x688a('0x3b')]=_['intersection'](_0x106a9f[_0x688a('0x38')],_0x106a9f[_0x688a('0x3a')]);_0x46d2e9[_0x688a('0x3d')]=_[_0x688a('0x3c')](_0x106a9f[_0x688a('0x38')],qs[_0x688a('0x3e')](_0x19f2bb[_0x688a('0x3a')][_0x688a('0x3e')]));_0x46d2e9[_0x688a('0x3d')]=_0x46d2e9['attributes'][_0x688a('0x3f')]?_0x46d2e9[_0x688a('0x3d')]:_0x106a9f['model'];_0x46d2e9[_0x688a('0x42')]=qs[_0x688a('0x43')](_0x19f2bb[_0x688a('0x3a')][_0x688a('0x43')]);_0x46d2e9[_0x688a('0x44')]=qs[_0x688a('0x3b')](_['pick'](_0x19f2bb[_0x688a('0x3a')],_0x106a9f['filters']));if(_0x19f2bb[_0x688a('0x3a')][_0x688a('0x46')]){_0x46d2e9[_0x688a('0x44')]=_[_0x688a('0x48')](_0x46d2e9[_0x688a('0x44')],{'$or':_[_0x688a('0x34')](_0x46d2e9[_0x688a('0x3d')],function(_0x1c3335){var _0x40a1b3={};_0x40a1b3[_0x1c3335]={'$like':'%'+_0x19f2bb['query'][_0x688a('0x46')]+'%'};return _0x40a1b3;})});}_0x46d2e9=_[_0x688a('0x48')]({},_0x46d2e9,_0x19f2bb[_0x688a('0x49')]);return _0x4c2e7f[_0x688a('0x9b')](_0x46d2e9);}})[_0x688a('0x18')](function(_0x48744b){if(_0x48744b){_0x55b95c=_0x48744b['length'];if(!_0x19f2bb['query'][_0x688a('0x40')](_0x688a('0x5d'))){_0x46d2e9[_0x688a('0x41')]=qs[_0x688a('0x41')](_0x19f2bb[_0x688a('0x3a')]['limit']);_0x46d2e9[_0x688a('0x24')]=qs[_0x688a('0x24')](_0x19f2bb[_0x688a('0x3a')][_0x688a('0x24')]);}return _0x4c2e7f[_0x688a('0x9b')](_0x46d2e9);}})[_0x688a('0x18')](function(_0x2e68f7){if(_0x2e68f7){return _0x2e68f7?{'count':_0x55b95c,'rows':_0x2e68f7}:null;}})['then'](respondWithResult(_0x20c907,null))[_0x688a('0x21')](handleError(_0x20c907,null));};exports['getInteractions']=function(_0x492d06,_0x44c878,_0xf55011){var _0x1878da={'raw':![],'where':{}};var _0x4c6027={};var _0x5544bb={'count':0x0,'rows':[]};return db[_0x688a('0x35')][_0x688a('0x9c')]({'where':{'id':_0x492d06['params']['id']}})['then'](handleEntityNotFound(_0x44c878,null))[_0x688a('0x18')](function(_0x347b49){if(_0x347b49){_0x4c6027[_0x688a('0x38')]=_[_0x688a('0x39')](db['OpenchannelInteraction'][_0x688a('0x36')]);_0x4c6027['query']=_[_0x688a('0x39')](_0x492d06[_0x688a('0x3a')]);_0x4c6027[_0x688a('0x3b')]=_[_0x688a('0x3c')](_0x4c6027['model'],_0x4c6027[_0x688a('0x3a')]);_0x1878da[_0x688a('0x3d')]=_['intersection'](_0x4c6027[_0x688a('0x38')],qs[_0x688a('0x3e')](_0x492d06[_0x688a('0x3a')][_0x688a('0x3e')]));_0x1878da[_0x688a('0x3d')]=_0x1878da[_0x688a('0x3d')]['length']?_0x1878da['attributes']:_0x4c6027[_0x688a('0x38')];if(!_0x492d06[_0x688a('0x3a')][_0x688a('0x40')](_0x688a('0x5d'))){_0x1878da['limit']=qs[_0x688a('0x41')](_0x492d06[_0x688a('0x3a')][_0x688a('0x41')]);_0x1878da['offset']=qs['offset'](_0x492d06[_0x688a('0x3a')][_0x688a('0x24')]);}_0x1878da[_0x688a('0x42')]=qs[_0x688a('0x43')](_0x492d06[_0x688a('0x3a')]['sort']);_0x1878da['where']=qs[_0x688a('0x3b')](_[_0x688a('0x45')](_0x492d06['query'],_0x4c6027[_0x688a('0x3b')]));_0x1878da[_0x688a('0x44')]['OpenchannelAccountId']=_0x347b49['id'];if(_0x492d06['query'][_0x688a('0x46')]){_0x1878da[_0x688a('0x44')]=_['merge'](_0x1878da[_0x688a('0x44')],{'$or':_[_0x688a('0x34')](_0x1878da[_0x688a('0x3d')],function(_0x29643d){var _0xc77685={};_0xc77685[_0x29643d]={'$like':'%'+_0x492d06[_0x688a('0x3a')][_0x688a('0x46')]+'%'};return _0xc77685;})});}_0x1878da=_[_0x688a('0x48')]({},_0x1878da,_0x492d06[_0x688a('0x49')]);return db['OpenchannelInteraction'][_0x688a('0x25')]({'where':_0x1878da[_0x688a('0x44')]})[_0x688a('0x18')](function(_0x2558e5){_0x5544bb['count']=_0x2558e5;if(_0x492d06['query'][_0x688a('0x4a')]){_0x1878da[_0x688a('0x4b')]=[{'model':db[_0x688a('0x64')],'as':_0x688a('0x9d'),'required':![]},{'model':db[_0x688a('0x90')],'as':'Owner','attributes':[_0x688a('0x2f'),'fullname','internal'],'required':![]},{'model':db[_0x688a('0x9e')],'as':_0x688a('0x9f'),'attributes':['id',_0x688a('0x2f'),_0x688a('0xa0')],'where':_0x492d06[_0x688a('0x3a')][_0x688a('0xa1')]?{'id':_0x492d06[_0x688a('0x3a')]['tag']}:undefined,'required':_0x492d06[_0x688a('0x3a')][_0x688a('0xa1')]?!![]:![]}];}return db[_0x688a('0x7f')][_0x688a('0x4c')](_0x1878da);})['then'](function(_0x3ba81d){_0x5544bb[_0x688a('0xa2')]=_0x3ba81d;return _0x5544bb;});}})[_0x688a('0x18')](respondWithFilteredResult(_0x44c878,_0x1878da))[_0x688a('0x21')](handleError(_0x44c878,null));};exports['addAgents']=function(_0x57d8e4,_0x191fda,_0x501598){return db[_0x688a('0x35')]['find']({'where':{'id':_0x57d8e4[_0x688a('0x4d')]['id']}})['then'](handleEntityNotFound(_0x191fda,null))[_0x688a('0x18')](function(_0x191444){if(_0x191444){return _0x191444[_0x688a('0xa3')](_0x57d8e4[_0x688a('0x50')][_0x688a('0x5f')],_[_0x688a('0xa4')](_0x57d8e4[_0x688a('0x50')],[_0x688a('0x5f'),'id'])||{})[_0x688a('0x82')](function(_0x5a2a2e){for(var _0x2a0170=0x0;_0x2a0170<_0x57d8e4[_0x688a('0x50')][_0x688a('0x5f')][_0x688a('0x3f')];_0x2a0170+=0x1){socket[_0x688a('0xa5')](_0x688a('0xa6'),{'UserId':Number(_0x57d8e4['body'][_0x688a('0x5f')][_0x2a0170]),'OpenchannelAccountId':Number(_0x57d8e4[_0x688a('0x4d')]['id'])});}return _0x5a2a2e;});}})[_0x688a('0x18')](respondWithResult(_0x191fda,null))[_0x688a('0x21')](handleError(_0x191fda,null));};exports[_0x688a('0xa7')]=function(_0x5c20ba,_0x595f87,_0x43b4ec){return db[_0x688a('0x35')][_0x688a('0x4e')]({'where':{'id':_0x5c20ba[_0x688a('0x4d')]['id']}})[_0x688a('0x18')](handleEntityNotFound(_0x595f87,null))[_0x688a('0x18')](function(_0x21248d){if(_0x21248d){return _0x21248d['removeAgents'](_0x5c20ba[_0x688a('0x3a')][_0x688a('0x5f')])[_0x688a('0x18')](function(){if(_[_0x688a('0xa8')](_0x5c20ba[_0x688a('0x3a')][_0x688a('0x5f')])){for(var _0x5a203e=0x0;_0x5a203e<_0x5c20ba['query'][_0x688a('0x5f')][_0x688a('0x3f')];_0x5a203e+=0x1){socket[_0x688a('0xa5')](_0x688a('0xa9'),{'UserId':Number(_0x5c20ba['query'][_0x688a('0x5f')][_0x5a203e]),'OpenchannelAccountId':Number(_0x5c20ba[_0x688a('0x4d')]['id'])});}}else{socket['emit'](_0x688a('0xa9'),{'UserId':Number(_0x5c20ba['query'][_0x688a('0x5f')]),'OpenchannelAccountId':Number(_0x5c20ba[_0x688a('0x4d')]['id'])});}});}})[_0x688a('0x18')](respondWithStatusCode(_0x595f87,null))[_0x688a('0x21')](handleError(_0x595f87,null));};exports[_0x688a('0xaa')]=function(_0x3db5c8,_0x2c57df,_0x13efc7){var _0x253e4d={};var _0x1a8c4d={};var _0x139a95;var _0x18847f;return db[_0x688a('0x35')][_0x688a('0x9c')]({'where':{'id':_0x3db5c8[_0x688a('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2c57df,null))[_0x688a('0x18')](function(_0x57b628){if(_0x57b628){_0x139a95=_0x57b628;_0x1a8c4d[_0x688a('0x38')]=_[_0x688a('0x39')](db['User']['rawAttributes']);_0x1a8c4d[_0x688a('0x3a')]=_['keys'](_0x3db5c8['query']);_0x1a8c4d['filters']=_[_0x688a('0x3c')](_0x1a8c4d[_0x688a('0x38')],_0x1a8c4d['query']);_0x253e4d[_0x688a('0x3d')]=_['intersection'](_0x1a8c4d['model'],qs['fields'](_0x3db5c8['query'][_0x688a('0x3e')]));_0x253e4d['attributes']=_0x253e4d[_0x688a('0x3d')][_0x688a('0x3f')]?_0x253e4d[_0x688a('0x3d')]:_0x1a8c4d[_0x688a('0x38')];_0x253e4d[_0x688a('0x42')]=qs[_0x688a('0x43')](_0x3db5c8[_0x688a('0x3a')][_0x688a('0x43')]);_0x253e4d[_0x688a('0x44')]=qs['filters'](_['pick'](_0x3db5c8['query'],_0x1a8c4d['filters']));if(_0x3db5c8[_0x688a('0x3a')][_0x688a('0x46')]){_0x253e4d[_0x688a('0x44')]=_[_0x688a('0x48')](_0x253e4d[_0x688a('0x44')],{'$or':_['map'](_0x253e4d[_0x688a('0x3d')],function(_0x408670){var _0x255751={};_0x255751[_0x408670]={'$like':'%'+_0x3db5c8['query']['filter']+'%'};return _0x255751;})});}_0x253e4d=_[_0x688a('0x48')]({},_0x253e4d,_0x3db5c8[_0x688a('0x49')]);return _0x139a95[_0x688a('0xaa')](_0x253e4d);}})['then'](function(_0x2403b4){if(_0x2403b4){_0x18847f=_0x2403b4['length'];if(!_0x3db5c8[_0x688a('0x3a')]['hasOwnProperty'](_0x688a('0x5d'))){_0x253e4d['limit']=qs[_0x688a('0x41')](_0x3db5c8['query'][_0x688a('0x41')]);_0x253e4d[_0x688a('0x24')]=qs[_0x688a('0x24')](_0x3db5c8[_0x688a('0x3a')][_0x688a('0x24')]);}return _0x139a95[_0x688a('0xaa')](_0x253e4d);}})[_0x688a('0x18')](function(_0x103ae4){if(_0x103ae4){return _0x103ae4?{'count':_0x18847f,'rows':_0x103ae4}:null;}})[_0x688a('0x18')](respondWithResult(_0x2c57df,null))[_0x688a('0x21')](handleError(_0x2c57df,null));};exports[_0x688a('0x30')]=function(_0x34ea20,_0x435f05,_0x4e26c5){var _0x5a5417,_0x4599a0,_0x3757de;if(_[_0x688a('0x6f')](_0x34ea20['body'][_0x688a('0x50')])||_0x34ea20[_0x688a('0x50')]['body']===''){throw new db[(_0x688a('0x65'))][(_0x688a('0x6d'))](_0x688a('0x70'));}if(_['isNil'](_0x34ea20[_0x688a('0x50')]['to'])){}_0x5a5417=_0x34ea20[_0x688a('0x50')]['to'];return db[_0x688a('0x35')][_0x688a('0x9c')]({'where':{'id':_0x34ea20[_0x688a('0x4d')]['id']}})[_0x688a('0x18')](handleEntityNotFound(_0x435f05,null))['then'](function(_0x49b991){if(_0x49b991){return db[_0x688a('0x35')]['find']({'where':{'id':_0x49b991['id']},'include':[{'model':db['CmList'],'as':_0x688a('0x72'),'include':[{'model':db[_0x688a('0x64')],'as':_0x688a('0x73'),'where':{[_0x49b991['mapKey']]:_0x5a5417},'limit':0x1,'order':[[_0x688a('0x68'),'DESC']]}]}]})[_0x688a('0x18')](handleEntityNotFound(_0x435f05,null))['then'](function(_0x1dcf16){if(_0x1dcf16&&_0x1dcf16['List']){_0x4599a0=_0x1dcf16[_0x688a('0x2c')]({'plain':!![]});if(_0x4599a0[_0x688a('0x72')]&&_0x4599a0[_0x688a('0x72')][_0x688a('0x73')]['length']){return _0x4599a0['List']['Contacts'][0x0];}return db[_0x688a('0x64')][_0x688a('0x4f')](_[_0x688a('0x13')](_0x34ea20[_0x688a('0x50')],{'firstName':_0x5a5417,[_0x1dcf16[_0x688a('0x71')]]:_0x5a5417,'phone':_0x5a5417,'ListId':_0x4599a0['ListId']}));}})[_0x688a('0x18')](handleEntityNotFound(_0x435f05,null))[_0x688a('0x18')](function(_0x4f944a){if(_0x4f944a){_0x3757de=_0x4f944a;return db[_0x688a('0x7f')]['find']({'where':{'ContactId':_0x3757de['id'],'closed':![],'OpenchannelAccountId':_0x4599a0['id']}})[_0x688a('0x18')](function(_0x4b2906){if(_0x4b2906){return[_0x4b2906,![]];}return db[_0x688a('0x7f')]['create']({'UserId':_0x34ea20['user']['id'],'ContactId':_0x3757de['id'],'OpenchannelAccountId':_0x4599a0['id'],'lastMsgDirection':_0x688a('0xab'),'Messages':[_[_0x688a('0x48')](_0x34ea20['body'],{'read':![],'body':_0x34ea20[_0x688a('0x50')]['body'],'OpenchannelAccountId':_0x4599a0['id'],'UserId':_0x34ea20[_0x688a('0x53')]['id'],'ContactId':_0x3757de['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0x688a('0xac')}]})['then'](function(_0x45be45){return[_0x45be45,!![]];});});}})['spread'](function(_0x5aa197,_0x1664ee){if(_0x1664ee){return _0x5aa197;}return db['OpenchannelMessage'][_0x688a('0x4f')](_['merge'](_0x34ea20[_0x688a('0x50')],{'read':![],'body':_0x34ea20[_0x688a('0x50')][_0x688a('0x50')],'OpenchannelAccountId':_0x4599a0['id'],'OpenchannelInteractionId':_0x5aa197['id'],'UserId':_0x34ea20[_0x688a('0x53')]['id'],'ContactId':_0x3757de['id']}))[_0x688a('0x18')](function(_0xf0553a){_0x5aa197[_0x688a('0xad')][_0x688a('0xac')]=[];_0x5aa197[_0x688a('0xad')]['Messages']['push'](_0xf0553a[_0x688a('0xad')]);return _0x5aa197;});});}})['then'](respondWithResult(_0x435f05,null))[_0x688a('0x21')](handleError(_0x435f05,null));};
\ No newline at end of file
index 3c33fec..9ceb467 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96cc=['remove','emit','hook','exports','events','OpenchannelAccount','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x96cc,0x16c));var _0xc96c=function(_0x1a31e8,_0x5387bc){_0x1a31e8=_0x1a31e8-0x0;var _0x3adc72=_0x96cc[_0x1a31e8];return _0x3adc72;};'use strict';var EventEmitter=require(_0xc96c('0x0'));var OpenchannelAccount=require('../../mysqldb')['db'][_0xc96c('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc96c('0x2'),'afterUpdate':_0xc96c('0x3'),'afterDestroy':_0xc96c('0x4')};function emitEvent(_0x421701){return function(_0x71140d,_0x29b6f1,_0x377e6c){OpenchannelAccountEvents[_0xc96c('0x5')](_0x421701+':'+_0x71140d['id'],_0x71140d);OpenchannelAccountEvents[_0xc96c('0x5')](_0x421701,_0x71140d);_0x377e6c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0xc96c('0x6')](e,emitEvent(event));}}module[_0xc96c('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x750a=['../../mysqldb','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x2bf903,_0x30b955){var _0x2d6fa1=function(_0x1c5b1d){while(--_0x1c5b1d){_0x2bf903['push'](_0x2bf903['shift']());}};_0x2d6fa1(++_0x30b955);}(_0x750a,0x140));var _0xa750=function(_0xa49733,_0x5420b3){_0xa49733=_0xa49733-0x0;var _0x49dca8=_0x750a[_0xa49733];return _0x49dca8;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require(_0xa750('0x0'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa750('0x1'),'afterUpdate':_0xa750('0x2'),'afterDestroy':_0xa750('0x3')};function emitEvent(_0x19bd5f){return function(_0x457cae,_0x43d704,_0x562911){OpenchannelAccountEvents[_0xa750('0x4')](_0x19bd5f+':'+_0x457cae['id'],_0x457cae);OpenchannelAccountEvents[_0xa750('0x4')](_0x19bd5f,_0x457cae);_0x562911(null);};}for(var e in events){if(events[_0xa750('0x5')](e)){var event=events[e];OpenchannelAccount[_0xa750('0x6')](e,emitEvent(event));}}module[_0xa750('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
index 6f05bf1..a734b0a 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(_0x3092dc,_0x2608a4){var _0x1997f9=function(_0x1dcb6e){while(--_0x1dcb6e){_0x3092dc['push'](_0x3092dc['shift']());}};_0x1997f9(++_0x2608a4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x5db9ba,_0x2e09f0){var _0x1fa374=function(_0x11ad49){while(--_0x11ad49){_0x5db9ba['push'](_0x5db9ba['shift']());}};_0x1fa374(++_0x2e09f0);}(_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 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 452dad9..7815ab9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd523=['info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register','request','then','OpenchannelAccount,\x20%s,\x20%s','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message'];(function(_0x5e650a,_0x25f7b0){var _0x424183=function(_0x51453a){while(--_0x51453a){_0x5e650a['push'](_0x5e650a['shift']());}};_0x424183(++_0x25f7b0);}(_0xd523,0x153));var _0x3d52=function(_0x20df32,_0x4a0d06){_0x20df32=_0x20df32-0x0;var _0x159c26=_0xd523[_0x20df32];return _0x159c26;};'use strict';var _=require(_0x3d52('0x0'));var util=require(_0x3d52('0x1'));var moment=require(_0x3d52('0x2'));var BPromise=require(_0x3d52('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3d52('0x4'));var db=require(_0x3d52('0x5'))['db'];var utils=require(_0x3d52('0x6'));var logger=require('../../config/logger')(_0x3d52('0x7'));var config=require(_0x3d52('0x8'));var jayson=require(_0x3d52('0x9'));var client=jayson[_0x3d52('0xa')]['http']({'port':0x232a});config['redis']=_[_0x3d52('0xb')](config[_0x3d52('0xc')],{'host':_0x3d52('0xd'),'port':0x18eb});var socket=require(_0x3d52('0xe'))(new Redis(config[_0x3d52('0xc')]));require(_0x3d52('0xf'))[_0x3d52('0x10')](socket);function respondWithRpcPromise(_0x2d966e,_0x30ee09,_0x4a5a9a){return new BPromise(function(_0x46c2e6,_0x873de6){return client[_0x3d52('0x11')](_0x2d966e,_0x4a5a9a)[_0x3d52('0x12')](function(_0x2675d2){logger['info'](_0x3d52('0x13'),_0x30ee09,'request\x20sent');logger['debug'](_0x3d52('0x14'),_0x30ee09,_0x3d52('0x15'),JSON['stringify'](_0x2675d2));if(_0x2675d2['error']){if(_0x2675d2['error'][_0x3d52('0x16')]===0x1f4){logger[_0x3d52('0x17')](_0x3d52('0x13'),_0x30ee09,_0x2675d2[_0x3d52('0x17')][_0x3d52('0x18')]);return _0x873de6(_0x2675d2[_0x3d52('0x17')][_0x3d52('0x18')]);}logger[_0x3d52('0x17')](_0x3d52('0x13'),_0x30ee09,_0x2675d2[_0x3d52('0x17')][_0x3d52('0x18')]);return _0x46c2e6(_0x2675d2[_0x3d52('0x17')][_0x3d52('0x18')]);}else{logger[_0x3d52('0x19')](_0x3d52('0x13'),_0x30ee09,'request\x20sent');_0x46c2e6(_0x2675d2[_0x3d52('0x1a')][_0x3d52('0x18')]);}})[_0x3d52('0x1b')](function(_0x54a514){logger[_0x3d52('0x17')](_0x3d52('0x13'),_0x30ee09,_0x54a514);_0x873de6(_0x54a514);});});}
\ No newline at end of file
+var _0x76dc=['error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x309b87,_0x5bdb31){var _0x44e8cd=function(_0x568e69){while(--_0x568e69){_0x309b87['push'](_0x309b87['shift']());}};_0x44e8cd(++_0x5bdb31);}(_0x76dc,0x1f2));var _0xc76d=function(_0x13aa6c,_0x48fdd5){_0x13aa6c=_0x13aa6c-0x0;var _0x24a7bd=_0x76dc[_0x13aa6c];return _0x24a7bd;};'use strict';var _=require(_0xc76d('0x0'));var util=require(_0xc76d('0x1'));var moment=require(_0xc76d('0x2'));var BPromise=require(_0xc76d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc76d('0x4'));var db=require(_0xc76d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc76d('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc76d('0x7'));var client=jayson[_0xc76d('0x8')][_0xc76d('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0xc76d('0xa')],{'host':_0xc76d('0xb'),'port':0x18eb});var socket=require(_0xc76d('0xc'))(new Redis(config['redis']));require('./openchannelAccount.socket')[_0xc76d('0xd')](socket);function respondWithRpcPromise(_0x2f81bd,_0x4d625c,_0x39a47f){return new BPromise(function(_0x583e46,_0xd5c042){return client[_0xc76d('0xe')](_0x2f81bd,_0x39a47f)[_0xc76d('0xf')](function(_0x95e06b){logger[_0xc76d('0x10')](_0xc76d('0x11'),_0x4d625c,_0xc76d('0x12'));logger[_0xc76d('0x13')](_0xc76d('0x14'),_0x4d625c,_0xc76d('0x12'),JSON[_0xc76d('0x15')](_0x95e06b));if(_0x95e06b[_0xc76d('0x16')]){if(_0x95e06b[_0xc76d('0x16')][_0xc76d('0x17')]===0x1f4){logger['error'](_0xc76d('0x11'),_0x4d625c,_0x95e06b[_0xc76d('0x16')]['message']);return _0xd5c042(_0x95e06b[_0xc76d('0x16')][_0xc76d('0x18')]);}logger[_0xc76d('0x16')](_0xc76d('0x11'),_0x4d625c,_0x95e06b['error'][_0xc76d('0x18')]);return _0x583e46(_0x95e06b['error']['message']);}else{logger[_0xc76d('0x10')](_0xc76d('0x11'),_0x4d625c,_0xc76d('0x12'));_0x583e46(_0x95e06b[_0xc76d('0x19')][_0xc76d('0x18')]);}})['catch'](function(_0x20a078){logger[_0xc76d('0x16')](_0xc76d('0x11'),_0x4d625c,_0x20a078);_0xd5c042(_0x20a078);});});}
\ No newline at end of file
index 7e5edd1..bfb7b97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['remove','emit','removeListener','length','./openchannelAccount.events','save'];(function(_0x58651d,_0x4349a6){var _0x1bbea3=function(_0x9bacc4){while(--_0x9bacc4){_0x58651d['push'](_0x58651d['shift']());}};_0x1bbea3(++_0x4349a6);}(_0x54ef,0x112));var _0xf54e=function(_0x400f57,_0x53371e){_0x400f57=_0x400f57-0x0;var _0x58ca18=_0x54ef[_0x400f57];return _0x58ca18;};'use strict';var OpenchannelAccountEvents=require(_0xf54e('0x0'));var events=[_0xf54e('0x1'),_0xf54e('0x2'),'update'];function createListener(_0xd936f7,_0x18b7d6){return function(_0x18b1cf){_0x18b7d6[_0xf54e('0x3')](_0xd936f7,_0x18b1cf);};}function removeListener(_0x8b6bb6,_0x431e36){return function(){OpenchannelAccountEvents[_0xf54e('0x4')](_0x8b6bb6,_0x431e36);};}exports['register']=function(_0x55e611){for(var _0x18e84e=0x0,_0x99cf9=events[_0xf54e('0x5')];_0x18e84e<_0x99cf9;_0x18e84e++){var _0x561870=events[_0x18e84e];var _0x27e69b=createListener('openchannelAccount:'+_0x561870,_0x55e611);OpenchannelAccountEvents['on'](_0x561870,_0x27e69b);}};
\ No newline at end of file
+var _0x3fb7=['register','length','openchannelAccount:','save','update','removeListener'];(function(_0x57486e,_0x32283b){var _0x5f110b=function(_0xa18fc3){while(--_0xa18fc3){_0x57486e['push'](_0x57486e['shift']());}};_0x5f110b(++_0x32283b);}(_0x3fb7,0x189));var _0x73fb=function(_0x98099,_0x19ec43){_0x98099=_0x98099-0x0;var _0x28dcd7=_0x3fb7[_0x98099];return _0x28dcd7;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0x73fb('0x0'),'remove',_0x73fb('0x1')];function createListener(_0x302333,_0x4e9e05){return function(_0xdecce4){_0x4e9e05['emit'](_0x302333,_0xdecce4);};}function removeListener(_0x309b77,_0x2c4f8c){return function(){OpenchannelAccountEvents[_0x73fb('0x2')](_0x309b77,_0x2c4f8c);};}exports[_0x73fb('0x3')]=function(_0x3330e3){for(var _0x423496=0x0,_0x33d35b=events[_0x73fb('0x4')];_0x423496<_0x33d35b;_0x423496++){var _0x1455de=events[_0x423496];var _0x2413ee=createListener(_0x73fb('0x5')+_0x1455de,_0x3330e3);OpenchannelAccountEvents['on'](_0x1455de,_0x2413ee);}};
\ No newline at end of file
index d83f865..137faa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd165=['isAuthenticated','create','put','update','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','/:id','show'];(function(_0x35461f,_0x299002){var _0x59a5ed=function(_0x38ed01){while(--_0x38ed01){_0x35461f['push'](_0x35461f['shift']());}};_0x59a5ed(++_0x299002);}(_0xd165,0x9f));var _0x5d16=function(_0x596ae5,_0x4321c7){_0x596ae5=_0x596ae5-0x0;var _0x5cc651=_0xd165[_0x596ae5];return _0x5cc651;};'use strict';var multer=require(_0x5d16('0x0'));var util=require(_0x5d16('0x1'));var path=require('path');var timeout=require(_0x5d16('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5d16('0x3'));var auth=require(_0x5d16('0x4'));var interaction=require(_0x5d16('0x5'));var config=require(_0x5d16('0x6'));var controller=require(_0x5d16('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x5d16('0x8')](_0x5d16('0x9'),auth['isAuthenticated'](),controller[_0x5d16('0xa')]);router['post']('/',auth[_0x5d16('0xb')](),controller[_0x5d16('0xc')]);router[_0x5d16('0xd')](_0x5d16('0x9'),auth['isAuthenticated'](),controller[_0x5d16('0xe')]);router['delete'](_0x5d16('0x9'),auth[_0x5d16('0xb')](),controller[_0x5d16('0xf')]);module[_0x5d16('0x10')]=router;
\ No newline at end of file
+var _0x8e68=['destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','./openchannelApplication.controller','get','isAuthenticated','/:id','put','update','delete'];(function(_0x1afd36,_0x447b43){var _0x59e59f=function(_0x4b71ba){while(--_0x4b71ba){_0x1afd36['push'](_0x1afd36['shift']());}};_0x59e59f(++_0x447b43);}(_0x8e68,0x1e2));var _0x88e6=function(_0x17e0ee,_0x27653e){_0x17e0ee=_0x17e0ee-0x0;var _0x15b5d3=_0x8e68[_0x17e0ee];return _0x15b5d3;};'use strict';var multer=require(_0x88e6('0x0'));var util=require(_0x88e6('0x1'));var path=require(_0x88e6('0x2'));var timeout=require('connect-timeout');var express=require(_0x88e6('0x3'));var router=express[_0x88e6('0x4')]();var fs_extra=require(_0x88e6('0x5'));var auth=require(_0x88e6('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x88e6('0x7'));router[_0x88e6('0x8')]('/',auth[_0x88e6('0x9')](),controller['index']);router[_0x88e6('0x8')](_0x88e6('0xa'),auth[_0x88e6('0x9')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x88e6('0xb')](_0x88e6('0xa'),auth['isAuthenticated'](),controller[_0x88e6('0xc')]);router[_0x88e6('0xd')](_0x88e6('0xa'),auth[_0x88e6('0x9')](),controller[_0x88e6('0xe')]);module[_0x88e6('0xf')]=router;
\ No newline at end of file
index 502e664..c4abe6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecd8=['sequelize','INTEGER','STRING','noop','TEXT'];(function(_0x34b2c3,_0x961f3a){var _0x2ddb1e=function(_0x2cefad){while(--_0x2cefad){_0x34b2c3['push'](_0x34b2c3['shift']());}};_0x2ddb1e(++_0x961f3a);}(_0xecd8,0x6e));var _0x8ecd=function(_0x40af3d,_0x2c86a5){_0x40af3d=_0x40af3d-0x0;var _0x592293=_0xecd8[_0x40af3d];return _0x592293;};'use strict';var Sequelize=require(_0x8ecd('0x0'));module['exports']={'priority':{'type':Sequelize[_0x8ecd('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x8ecd('0x2')],'allowNull':![],'defaultValue':_0x8ecd('0x3')},'appdata':{'type':Sequelize[_0x8ecd('0x4')]()},'description':{'type':Sequelize[_0x8ecd('0x2')]},'interval':{'type':Sequelize[_0x8ecd('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xe0e5=['INTEGER','STRING','noop','sequelize'];(function(_0x35b18a,_0x6b2fbe){var _0x4db1bd=function(_0x389e62){while(--_0x389e62){_0x35b18a['push'](_0x35b18a['shift']());}};_0x4db1bd(++_0x6b2fbe);}(_0xe0e5,0x1bb));var _0x5e0e=function(_0xfbdff6,_0x2af690){_0xfbdff6=_0xfbdff6-0x0;var _0x4cb9be=_0xe0e5[_0xfbdff6];return _0x4cb9be;};'use strict';var Sequelize=require(_0x5e0e('0x0'));module['exports']={'priority':{'type':Sequelize[_0x5e0e('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x5e0e('0x2')],'allowNull':![],'defaultValue':_0x5e0e('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x5e0e('0x2')]},'interval':{'type':Sequelize[_0x5e0e('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index dfdd973..197346e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f0=['options','includeAll','include','findAll','catch','show','params','find','create','body','destroy','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','reject','update','then','stack','name','map','OpenchannelApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL'];(function(_0x339f14,_0x26ad96){var _0xdb9bd3=function(_0xa21d20){while(--_0xa21d20){_0x339f14['push'](_0x339f14['shift']());}};_0xdb9bd3(++_0x26ad96);}(_0xd4f0,0x178));var _0x0d4f=function(_0x2fbd0e,_0x3460a9){_0x2fbd0e=_0x2fbd0e-0x0;var _0x481c9f=_0xd4f0[_0x2fbd0e];return _0x481c9f;};'use strict';var emlformat=require(_0x0d4f('0x0'));var rimraf=require(_0x0d4f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0d4f('0x2'));var moment=require(_0x0d4f('0x3'));var BPromise=require(_0x0d4f('0x4'));var Mustache=require(_0x0d4f('0x5'));var util=require(_0x0d4f('0x6'));var path=require(_0x0d4f('0x7'));var sox=require(_0x0d4f('0x8'));var csv=require(_0x0d4f('0x9'));var ejs=require(_0x0d4f('0xa'));var fs=require('fs');var fs_extra=require(_0x0d4f('0xb'));var _=require(_0x0d4f('0xc'));var squel=require('squel');var crypto=require(_0x0d4f('0xd'));var jsforce=require(_0x0d4f('0xe'));var deskjs=require(_0x0d4f('0xf'));var toCsv=require(_0x0d4f('0x9'));var querystring=require(_0x0d4f('0x10'));var Papa=require(_0x0d4f('0x11'));var Redis=require(_0x0d4f('0x12'));var authService=require(_0x0d4f('0x13'));var qs=require(_0x0d4f('0x14'));var as=require(_0x0d4f('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0d4f('0x16'))('api');var utils=require(_0x0d4f('0x17'));var config=require(_0x0d4f('0x18'));var licenseUtil=require(_0x0d4f('0x19'));var db=require(_0x0d4f('0x1a'))['db'];function respondWithStatusCode(_0x165e3e,_0x489f75){_0x489f75=_0x489f75||0xcc;return function(_0x32672d){if(_0x32672d){return _0x165e3e[_0x0d4f('0x1b')](_0x489f75);}return _0x165e3e['status'](_0x489f75)[_0x0d4f('0x1c')]();};}function respondWithResult(_0x49635e,_0x12071c){_0x12071c=_0x12071c||0xc8;return function(_0x2a984e){if(_0x2a984e){return _0x49635e[_0x0d4f('0x1d')](_0x12071c)[_0x0d4f('0x1e')](_0x2a984e);}};}function respondWithFilteredResult(_0x454eb9,_0x564f80){return function(_0x12378d){if(_0x12378d){var _0x41d5f4=typeof _0x564f80['offset']===_0x0d4f('0x1f')&&typeof _0x564f80[_0x0d4f('0x20')]===_0x0d4f('0x1f');var _0x3f73d1=_0x12378d[_0x0d4f('0x21')];var _0x102dbc=_0x41d5f4?0x0:_0x564f80[_0x0d4f('0x22')];var _0x22b0b7=_0x41d5f4?_0x12378d['count']:_0x564f80['offset']+_0x564f80[_0x0d4f('0x20')];var _0x35ad57;if(_0x22b0b7>=_0x3f73d1){_0x22b0b7=_0x3f73d1;_0x35ad57=0xc8;}else{_0x35ad57=0xce;}_0x454eb9[_0x0d4f('0x1d')](_0x35ad57);return _0x454eb9['set'](_0x0d4f('0x23'),_0x102dbc+'-'+_0x22b0b7+'/'+_0x3f73d1)[_0x0d4f('0x1e')](_0x12378d);}return null;};}function patchUpdates(_0x4b2563){return function(_0x2230f0){try{jsonpatch['apply'](_0x2230f0,_0x4b2563,!![]);}catch(_0x2700ec){return BPromise[_0x0d4f('0x24')](_0x2700ec);}return _0x2230f0['save']();};}function saveUpdates(_0x5482a4,_0x4268ce){return function(_0x458159){if(_0x458159){return _0x458159[_0x0d4f('0x25')](_0x5482a4)['then'](function(_0x24ac5d){return _0x24ac5d;});}return null;};}function removeEntity(_0x39588b,_0x33de36){return function(_0x397bce){if(_0x397bce){return _0x397bce['destroy']()[_0x0d4f('0x26')](function(){_0x39588b[_0x0d4f('0x1d')](0xcc)[_0x0d4f('0x1c')]();});}};}function handleEntityNotFound(_0x68af0c,_0x418571){return function(_0x18ff68){if(!_0x18ff68){_0x68af0c[_0x0d4f('0x1b')](0x194);}return _0x18ff68;};}function handleError(_0x2c8cd7,_0xb5dc59){_0xb5dc59=_0xb5dc59||0x1f4;return function(_0x2ed870){logger['error'](_0x2ed870[_0x0d4f('0x27')]);if(_0x2ed870[_0x0d4f('0x28')]){delete _0x2ed870[_0x0d4f('0x28')];}_0x2c8cd7[_0x0d4f('0x1d')](_0xb5dc59)['send'](_0x2ed870);};}exports['index']=function(_0x327bec,_0x51989e){var _0x239841={},_0x131399={},_0x55c145={'count':0x0,'rows':[]};var _0xd8436a=_[_0x0d4f('0x29')](db[_0x0d4f('0x2a')][_0x0d4f('0x2b')],function(_0x1d0842){return{'name':_0x1d0842[_0x0d4f('0x2c')],'type':_0x1d0842[_0x0d4f('0x2d')][_0x0d4f('0x2e')]};});_0x131399[_0x0d4f('0x2f')]=_['map'](_0xd8436a,_0x0d4f('0x28'));_0x131399[_0x0d4f('0x30')]=_[_0x0d4f('0x31')](_0x327bec[_0x0d4f('0x30')]);_0x131399[_0x0d4f('0x32')]=_[_0x0d4f('0x33')](_0x131399[_0x0d4f('0x2f')],_0x131399[_0x0d4f('0x30')]);_0x239841[_0x0d4f('0x34')]=_[_0x0d4f('0x33')](_0x131399['model'],qs[_0x0d4f('0x35')](_0x327bec[_0x0d4f('0x30')][_0x0d4f('0x35')]));_0x239841[_0x0d4f('0x34')]=_0x239841[_0x0d4f('0x34')][_0x0d4f('0x36')]?_0x239841[_0x0d4f('0x34')]:_0x131399[_0x0d4f('0x2f')];if(!_0x327bec[_0x0d4f('0x30')][_0x0d4f('0x37')](_0x0d4f('0x38'))){_0x239841[_0x0d4f('0x20')]=qs[_0x0d4f('0x20')](_0x327bec[_0x0d4f('0x30')][_0x0d4f('0x20')]);_0x239841[_0x0d4f('0x22')]=qs['offset'](_0x327bec['query'][_0x0d4f('0x22')]);}_0x239841[_0x0d4f('0x39')]=qs[_0x0d4f('0x3a')](_0x327bec['query'][_0x0d4f('0x3a')]);_0x239841['where']=qs[_0x0d4f('0x32')](_['pick'](_0x327bec[_0x0d4f('0x30')],_0x131399['filters']),_0xd8436a);if(_0x327bec[_0x0d4f('0x30')]['filter']){_0x239841[_0x0d4f('0x3b')]=_[_0x0d4f('0x3c')](_0x239841['where'],{'$or':_['map'](_0xd8436a,function(_0x49b279){if(_0x49b279[_0x0d4f('0x2d')]!==_0x0d4f('0x3d')){var _0x38aa27={};_0x38aa27[_0x49b279['name']]={'$like':'%'+_0x327bec[_0x0d4f('0x30')]['filter']+'%'};return _0x38aa27;}})});}_0x239841=_[_0x0d4f('0x3c')]({},_0x239841,_0x327bec[_0x0d4f('0x3e')]);var _0x1922ca={'where':_0x239841[_0x0d4f('0x3b')]};return db[_0x0d4f('0x2a')][_0x0d4f('0x21')](_0x1922ca)[_0x0d4f('0x26')](function(_0x218a63){_0x55c145['count']=_0x218a63;if(_0x327bec[_0x0d4f('0x30')][_0x0d4f('0x3f')]){_0x239841[_0x0d4f('0x40')]=[{'all':!![]}];}return db[_0x0d4f('0x2a')][_0x0d4f('0x41')](_0x239841);})['then'](function(_0x2feac7){_0x55c145['rows']=_0x2feac7;return _0x55c145;})[_0x0d4f('0x26')](respondWithFilteredResult(_0x51989e,_0x239841))[_0x0d4f('0x42')](handleError(_0x51989e,null));};exports[_0x0d4f('0x43')]=function(_0x587321,_0x58cb5a){var _0x2cecbc={'raw':!![],'where':{'id':_0x587321[_0x0d4f('0x44')]['id']}},_0x13cabe={};_0x13cabe['model']=_[_0x0d4f('0x31')](db[_0x0d4f('0x2a')][_0x0d4f('0x2b')]);_0x13cabe['query']=_[_0x0d4f('0x31')](_0x587321[_0x0d4f('0x30')]);_0x13cabe['filters']=_['intersection'](_0x13cabe[_0x0d4f('0x2f')],_0x13cabe[_0x0d4f('0x30')]);_0x2cecbc[_0x0d4f('0x34')]=_[_0x0d4f('0x33')](_0x13cabe[_0x0d4f('0x2f')],qs[_0x0d4f('0x35')](_0x587321['query'][_0x0d4f('0x35')]));_0x2cecbc[_0x0d4f('0x34')]=_0x2cecbc[_0x0d4f('0x34')][_0x0d4f('0x36')]?_0x2cecbc[_0x0d4f('0x34')]:_0x13cabe['model'];if(_0x587321[_0x0d4f('0x30')]['includeAll']){_0x2cecbc[_0x0d4f('0x40')]=[{'all':!![]}];}_0x2cecbc=_[_0x0d4f('0x3c')]({},_0x2cecbc,_0x587321['options']);return db['OpenchannelApplication'][_0x0d4f('0x45')](_0x2cecbc)[_0x0d4f('0x26')](handleEntityNotFound(_0x58cb5a,null))[_0x0d4f('0x26')](respondWithResult(_0x58cb5a,null))[_0x0d4f('0x42')](handleError(_0x58cb5a,null));};exports[_0x0d4f('0x46')]=function(_0x3365fd,_0x3d08fb){return db['OpenchannelApplication'][_0x0d4f('0x46')](_0x3365fd[_0x0d4f('0x47')],{})[_0x0d4f('0x26')](respondWithResult(_0x3d08fb,0xc9))[_0x0d4f('0x42')](handleError(_0x3d08fb,null));};exports[_0x0d4f('0x25')]=function(_0x3dbff8,_0x51c8ad){if(_0x3dbff8[_0x0d4f('0x47')]['id']){delete _0x3dbff8[_0x0d4f('0x47')]['id'];}return db[_0x0d4f('0x2a')][_0x0d4f('0x45')]({'where':{'id':_0x3dbff8[_0x0d4f('0x44')]['id']}})[_0x0d4f('0x26')](handleEntityNotFound(_0x51c8ad,null))['then'](saveUpdates(_0x3dbff8['body'],null))[_0x0d4f('0x26')](respondWithResult(_0x51c8ad,null))[_0x0d4f('0x42')](handleError(_0x51c8ad,null));};exports[_0x0d4f('0x48')]=function(_0x11b8fd,_0x1d7487){return db[_0x0d4f('0x2a')]['find']({'where':{'id':_0x11b8fd['params']['id']}})[_0x0d4f('0x26')](handleEntityNotFound(_0x1d7487,null))['then'](removeEntity(_0x1d7487,null))[_0x0d4f('0x42')](handleError(_0x1d7487,null));};
\ No newline at end of file
+var _0x9758=['model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','findAll','rows','catch','show','params','intersection','include','options','find','create','body','destroy','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','save','update','then','end','error','stack','name','index','map','OpenchannelApplication','rawAttributes','fieldName','type','key','keys','query','filters'];(function(_0x527733,_0x16051c){var _0x5400ba=function(_0x265d39){while(--_0x265d39){_0x527733['push'](_0x527733['shift']());}};_0x5400ba(++_0x16051c);}(_0x9758,0xfa));var _0x8975=function(_0x548dab,_0x4c0363){_0x548dab=_0x548dab-0x0;var _0x7dabec=_0x9758[_0x548dab];return _0x7dabec;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8975('0x0'));var jsonpatch=require(_0x8975('0x1'));var rp=require(_0x8975('0x2'));var moment=require(_0x8975('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8975('0x4'));var util=require(_0x8975('0x5'));var path=require('path');var sox=require(_0x8975('0x6'));var csv=require(_0x8975('0x7'));var ejs=require(_0x8975('0x8'));var fs=require('fs');var fs_extra=require(_0x8975('0x9'));var _=require('lodash');var squel=require(_0x8975('0xa'));var crypto=require(_0x8975('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x8975('0xc'));var toCsv=require(_0x8975('0x7'));var querystring=require(_0x8975('0xd'));var Papa=require('papaparse');var Redis=require(_0x8975('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x8975('0xf'));var as=require(_0x8975('0x10'));var hardwareService=require(_0x8975('0x11'));var logger=require(_0x8975('0x12'))(_0x8975('0x13'));var utils=require(_0x8975('0x14'));var config=require(_0x8975('0x15'));var licenseUtil=require(_0x8975('0x16'));var db=require(_0x8975('0x17'))['db'];function respondWithStatusCode(_0x3ffa26,_0x5a59bf){_0x5a59bf=_0x5a59bf||0xcc;return function(_0x255117){if(_0x255117){return _0x3ffa26[_0x8975('0x18')](_0x5a59bf);}return _0x3ffa26[_0x8975('0x19')](_0x5a59bf)['end']();};}function respondWithResult(_0x4d33e6,_0x5132e2){_0x5132e2=_0x5132e2||0xc8;return function(_0x29723c){if(_0x29723c){return _0x4d33e6[_0x8975('0x19')](_0x5132e2)[_0x8975('0x1a')](_0x29723c);}};}function respondWithFilteredResult(_0x173ce6,_0xe32945){return function(_0x503e9c){if(_0x503e9c){var _0x177486=typeof _0xe32945[_0x8975('0x1b')]==='undefined'&&typeof _0xe32945[_0x8975('0x1c')]===_0x8975('0x1d');var _0x52fd7=_0x503e9c[_0x8975('0x1e')];var _0x5d1673=_0x177486?0x0:_0xe32945[_0x8975('0x1b')];var _0x46230a=_0x177486?_0x503e9c[_0x8975('0x1e')]:_0xe32945[_0x8975('0x1b')]+_0xe32945['limit'];var _0x2bfab9;if(_0x46230a>=_0x52fd7){_0x46230a=_0x52fd7;_0x2bfab9=0xc8;}else{_0x2bfab9=0xce;}_0x173ce6[_0x8975('0x19')](_0x2bfab9);return _0x173ce6['set'](_0x8975('0x1f'),_0x5d1673+'-'+_0x46230a+'/'+_0x52fd7)[_0x8975('0x1a')](_0x503e9c);}return null;};}function patchUpdates(_0x183ae4){return function(_0x1b555e){try{jsonpatch[_0x8975('0x20')](_0x1b555e,_0x183ae4,!![]);}catch(_0xcea8eb){return BPromise['reject'](_0xcea8eb);}return _0x1b555e[_0x8975('0x21')]();};}function saveUpdates(_0x1d3109,_0x2accdd){return function(_0x1aa1e4){if(_0x1aa1e4){return _0x1aa1e4[_0x8975('0x22')](_0x1d3109)[_0x8975('0x23')](function(_0x324e73){return _0x324e73;});}return null;};}function removeEntity(_0x2bf142,_0x11882f){return function(_0x5c2c33){if(_0x5c2c33){return _0x5c2c33['destroy']()[_0x8975('0x23')](function(){_0x2bf142[_0x8975('0x19')](0xcc)[_0x8975('0x24')]();});}};}function handleEntityNotFound(_0x443b8d,_0x252ac9){return function(_0x5b892d){if(!_0x5b892d){_0x443b8d[_0x8975('0x18')](0x194);}return _0x5b892d;};}function handleError(_0x3bbb4a,_0x3721b4){_0x3721b4=_0x3721b4||0x1f4;return function(_0x3fff7a){logger[_0x8975('0x25')](_0x3fff7a[_0x8975('0x26')]);if(_0x3fff7a[_0x8975('0x27')]){delete _0x3fff7a[_0x8975('0x27')];}_0x3bbb4a[_0x8975('0x19')](_0x3721b4)['send'](_0x3fff7a);};}exports[_0x8975('0x28')]=function(_0x2b3be1,_0x3eacef){var _0xefe21c={},_0x1fb740={},_0x38d6d6={'count':0x0,'rows':[]};var _0x2c458d=_[_0x8975('0x29')](db[_0x8975('0x2a')][_0x8975('0x2b')],function(_0x1f27fa){return{'name':_0x1f27fa[_0x8975('0x2c')],'type':_0x1f27fa[_0x8975('0x2d')][_0x8975('0x2e')]};});_0x1fb740['model']=_[_0x8975('0x29')](_0x2c458d,'name');_0x1fb740['query']=_[_0x8975('0x2f')](_0x2b3be1[_0x8975('0x30')]);_0x1fb740[_0x8975('0x31')]=_['intersection'](_0x1fb740[_0x8975('0x32')],_0x1fb740[_0x8975('0x30')]);_0xefe21c[_0x8975('0x33')]=_['intersection'](_0x1fb740[_0x8975('0x32')],qs[_0x8975('0x34')](_0x2b3be1[_0x8975('0x30')][_0x8975('0x34')]));_0xefe21c[_0x8975('0x33')]=_0xefe21c[_0x8975('0x33')][_0x8975('0x35')]?_0xefe21c[_0x8975('0x33')]:_0x1fb740[_0x8975('0x32')];if(!_0x2b3be1[_0x8975('0x30')][_0x8975('0x36')](_0x8975('0x37'))){_0xefe21c['limit']=qs[_0x8975('0x1c')](_0x2b3be1[_0x8975('0x30')][_0x8975('0x1c')]);_0xefe21c[_0x8975('0x1b')]=qs[_0x8975('0x1b')](_0x2b3be1[_0x8975('0x30')]['offset']);}_0xefe21c[_0x8975('0x38')]=qs[_0x8975('0x39')](_0x2b3be1[_0x8975('0x30')]['sort']);_0xefe21c[_0x8975('0x3a')]=qs[_0x8975('0x31')](_[_0x8975('0x3b')](_0x2b3be1[_0x8975('0x30')],_0x1fb740['filters']),_0x2c458d);if(_0x2b3be1[_0x8975('0x30')][_0x8975('0x3c')]){_0xefe21c[_0x8975('0x3a')]=_[_0x8975('0x3d')](_0xefe21c[_0x8975('0x3a')],{'$or':_[_0x8975('0x29')](_0x2c458d,function(_0x6a4b70){if(_0x6a4b70['type']!==_0x8975('0x3e')){var _0x24c58c={};_0x24c58c[_0x6a4b70[_0x8975('0x27')]]={'$like':'%'+_0x2b3be1[_0x8975('0x30')][_0x8975('0x3c')]+'%'};return _0x24c58c;}})});}_0xefe21c=_['merge']({},_0xefe21c,_0x2b3be1['options']);var _0x2d59cc={'where':_0xefe21c['where']};return db['OpenchannelApplication'][_0x8975('0x1e')](_0x2d59cc)['then'](function(_0x5c6781){_0x38d6d6[_0x8975('0x1e')]=_0x5c6781;if(_0x2b3be1[_0x8975('0x30')]['includeAll']){_0xefe21c['include']=[{'all':!![]}];}return db['OpenchannelApplication'][_0x8975('0x3f')](_0xefe21c);})['then'](function(_0x3cf8ba){_0x38d6d6[_0x8975('0x40')]=_0x3cf8ba;return _0x38d6d6;})[_0x8975('0x23')](respondWithFilteredResult(_0x3eacef,_0xefe21c))[_0x8975('0x41')](handleError(_0x3eacef,null));};exports[_0x8975('0x42')]=function(_0x34d85,_0x3c7cd2){var _0x51b7f5={'raw':!![],'where':{'id':_0x34d85[_0x8975('0x43')]['id']}},_0x5e84a6={};_0x5e84a6['model']=_[_0x8975('0x2f')](db['OpenchannelApplication']['rawAttributes']);_0x5e84a6[_0x8975('0x30')]=_[_0x8975('0x2f')](_0x34d85[_0x8975('0x30')]);_0x5e84a6[_0x8975('0x31')]=_[_0x8975('0x44')](_0x5e84a6[_0x8975('0x32')],_0x5e84a6[_0x8975('0x30')]);_0x51b7f5[_0x8975('0x33')]=_[_0x8975('0x44')](_0x5e84a6[_0x8975('0x32')],qs[_0x8975('0x34')](_0x34d85[_0x8975('0x30')][_0x8975('0x34')]));_0x51b7f5['attributes']=_0x51b7f5[_0x8975('0x33')][_0x8975('0x35')]?_0x51b7f5['attributes']:_0x5e84a6[_0x8975('0x32')];if(_0x34d85[_0x8975('0x30')]['includeAll']){_0x51b7f5[_0x8975('0x45')]=[{'all':!![]}];}_0x51b7f5=_[_0x8975('0x3d')]({},_0x51b7f5,_0x34d85[_0x8975('0x46')]);return db[_0x8975('0x2a')][_0x8975('0x47')](_0x51b7f5)[_0x8975('0x23')](handleEntityNotFound(_0x3c7cd2,null))['then'](respondWithResult(_0x3c7cd2,null))[_0x8975('0x41')](handleError(_0x3c7cd2,null));};exports[_0x8975('0x48')]=function(_0x2891a4,_0x4d2f64){return db['OpenchannelApplication'][_0x8975('0x48')](_0x2891a4[_0x8975('0x49')],{})[_0x8975('0x23')](respondWithResult(_0x4d2f64,0xc9))[_0x8975('0x41')](handleError(_0x4d2f64,null));};exports[_0x8975('0x22')]=function(_0x4308ee,_0x47bdf3){if(_0x4308ee['body']['id']){delete _0x4308ee[_0x8975('0x49')]['id'];}return db[_0x8975('0x2a')][_0x8975('0x47')]({'where':{'id':_0x4308ee[_0x8975('0x43')]['id']}})['then'](handleEntityNotFound(_0x47bdf3,null))['then'](saveUpdates(_0x4308ee[_0x8975('0x49')],null))[_0x8975('0x23')](respondWithResult(_0x47bdf3,null))['catch'](handleError(_0x47bdf3,null));};exports[_0x8975('0x4a')]=function(_0x358f3b,_0x2fa8b7){return db[_0x8975('0x2a')][_0x8975('0x47')]({'where':{'id':_0x358f3b['params']['id']}})[_0x8975('0x23')](handleEntityNotFound(_0x2fa8b7,null))[_0x8975('0x23')](removeEntity(_0x2fa8b7,null))[_0x8975('0x41')](handleError(_0x2fa8b7,null));};
\ No newline at end of file
index 659a115..30bbf50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1f=['util','../../config/logger','moment','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4','lodash'];(function(_0x38bd6e,_0x9d3bd8){var _0x3378ef=function(_0x2a28fd){while(--_0x2a28fd){_0x38bd6e['push'](_0x38bd6e['shift']());}};_0x3378ef(++_0x9d3bd8);}(_0xed1f,0x185));var _0xfed1=function(_0x26462c,_0xd20a35){_0x26462c=_0x26462c-0x0;var _0x509a42=_0xed1f[_0x26462c];return _0x509a42;};'use strict';var _=require(_0xfed1('0x0'));var util=require(_0xfed1('0x1'));var logger=require(_0xfed1('0x2'))('api');var moment=require(_0xfed1('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xfed1('0x4'));var rimraf=require(_0xfed1('0x5'));var config=require(_0xfed1('0x6'));var attributes=require(_0xfed1('0x7'));module[_0xfed1('0x8')]=function(_0x4e81ed,_0x1c83f2){return _0x4e81ed[_0xfed1('0x9')](_0xfed1('0xa'),attributes,{'tableName':_0xfed1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xfed1('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x4e94=['api','moment','request-promise','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','openchannel_applications','utf8mb4','lodash'];(function(_0x10b8a7,_0x596628){var _0x887fef=function(_0x51eb55){while(--_0x51eb55){_0x10b8a7['push'](_0x10b8a7['shift']());}};_0x887fef(++_0x596628);}(_0x4e94,0x77));var _0x44e9=function(_0x1b2255,_0x3de34f){_0x1b2255=_0x1b2255-0x0;var _0x33e57d=_0x4e94[_0x1b2255];return _0x33e57d;};'use strict';var _=require(_0x44e9('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x44e9('0x1'));var moment=require(_0x44e9('0x2'));var BPromise=require('bluebird');var rp=require(_0x44e9('0x3'));var fs=require('fs');var path=require(_0x44e9('0x4'));var rimraf=require(_0x44e9('0x5'));var config=require(_0x44e9('0x6'));var attributes=require(_0x44e9('0x7'));module[_0x44e9('0x8')]=function(_0x4d69ce,_0x1a83fd){return _0x4d69ce[_0x44e9('0x9')]('OpenchannelApplication',attributes,{'tableName':_0x44e9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x44e9('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 1d21320..4451ca4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cb4=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelApplication,\x20%s,\x20%s','message','result','OpenchannelApplication','update','body','options','raw','where','attributes','limit','UpdateOpenchannelApplication','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x13d15e,_0x2bc13e){var _0x5e2cad=function(_0x55f14f){while(--_0x55f14f){_0x13d15e['push'](_0x13d15e['shift']());}};_0x5e2cad(++_0x2bc13e);}(_0x5cb4,0x19a));var _0x45cb=function(_0x1a27df,_0x11891c){_0x1a27df=_0x1a27df-0x0;var _0x194543=_0x5cb4[_0x1a27df];return _0x194543;};'use strict';var _=require(_0x45cb('0x0'));var util=require(_0x45cb('0x1'));var moment=require(_0x45cb('0x2'));var BPromise=require('bluebird');var rs=require(_0x45cb('0x3'));var fs=require('fs');var Redis=require(_0x45cb('0x4'));var db=require(_0x45cb('0x5'))['db'];var utils=require(_0x45cb('0x6'));var logger=require('../../config/logger')(_0x45cb('0x7'));var config=require(_0x45cb('0x8'));var jayson=require(_0x45cb('0x9'));var client=jayson[_0x45cb('0xa')][_0x45cb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4ab7ce,_0x527efd,_0x292bce){return new BPromise(function(_0x6b3a1,_0x53060c){return client['request'](_0x4ab7ce,_0x292bce)[_0x45cb('0xc')](function(_0x399809){logger[_0x45cb('0xd')]('OpenchannelApplication,\x20%s,\x20%s',_0x527efd,_0x45cb('0xe'));logger[_0x45cb('0xf')](_0x45cb('0x10'),_0x527efd,_0x45cb('0xe'),JSON[_0x45cb('0x11')](_0x399809));if(_0x399809['error']){if(_0x399809[_0x45cb('0x12')]['code']===0x1f4){logger['error'](_0x45cb('0x13'),_0x527efd,_0x399809[_0x45cb('0x12')][_0x45cb('0x14')]);return _0x53060c(_0x399809[_0x45cb('0x12')][_0x45cb('0x14')]);}logger[_0x45cb('0x12')](_0x45cb('0x13'),_0x527efd,_0x399809['error']['message']);return _0x6b3a1(_0x399809[_0x45cb('0x12')][_0x45cb('0x14')]);}else{logger[_0x45cb('0xd')](_0x45cb('0x13'),_0x527efd,_0x45cb('0xe'));_0x6b3a1(_0x399809[_0x45cb('0x15')]['message']);}})['catch'](function(_0x22e752){logger[_0x45cb('0x12')](_0x45cb('0x13'),_0x527efd,_0x22e752);_0x53060c(_0x22e752);});});}exports['UpdateOpenchannelApplication']=function(_0x3527a9){var _0xa8842e=this;return new Promise(function(_0x399433,_0x287ca1){return db[_0x45cb('0x16')][_0x45cb('0x17')](_0x3527a9[_0x45cb('0x18')],{'raw':_0x3527a9[_0x45cb('0x19')]?_0x3527a9[_0x45cb('0x19')][_0x45cb('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3527a9[_0x45cb('0x19')]?_0x3527a9[_0x45cb('0x19')][_0x45cb('0x1b')]||null:null,'attributes':_0x3527a9['options']?_0x3527a9['options'][_0x45cb('0x1c')]||null:null,'limit':_0x3527a9[_0x45cb('0x19')]?_0x3527a9['options'][_0x45cb('0x1d')]||null:null})[_0x45cb('0xc')](function(_0x43b872){logger[_0x45cb('0xd')](_0x45cb('0x1e'),_0x3527a9);logger['debug']('UpdateOpenchannelApplication',_0x3527a9,JSON[_0x45cb('0x11')](_0x43b872));_0x399433(_0x43b872);})[_0x45cb('0x1f')](function(_0x239fa5){logger[_0x45cb('0x12')](_0x45cb('0x1e'),_0x239fa5[_0x45cb('0x14')],_0x3527a9);_0x287ca1(_0xa8842e[_0x45cb('0x12')](0x1f4,_0x239fa5['message']));});});};
\ No newline at end of file
+var _0x36b8=['options','raw','debug','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body'];(function(_0x49fb5e,_0x3cc3e7){var _0x1ac562=function(_0x4112dc){while(--_0x4112dc){_0x49fb5e['push'](_0x49fb5e['shift']());}};_0x1ac562(++_0x3cc3e7);}(_0x36b8,0xeb));var _0x836b=function(_0x57d400,_0x1baa5e){_0x57d400=_0x57d400-0x0;var _0x1c353f=_0x36b8[_0x57d400];return _0x1c353f;};'use strict';var _=require('lodash');var util=require(_0x836b('0x0'));var moment=require('moment');var BPromise=require(_0x836b('0x1'));var rs=require(_0x836b('0x2'));var fs=require('fs');var Redis=require(_0x836b('0x3'));var db=require(_0x836b('0x4'))['db'];var utils=require(_0x836b('0x5'));var logger=require(_0x836b('0x6'))(_0x836b('0x7'));var config=require('../../config/environment');var jayson=require(_0x836b('0x8'));var client=jayson['client'][_0x836b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1ca30b,_0x5a45e2,_0x1d1650){return new BPromise(function(_0x4540a8,_0x240dce){return client[_0x836b('0xa')](_0x1ca30b,_0x1d1650)[_0x836b('0xb')](function(_0x112610){logger[_0x836b('0xc')](_0x836b('0xd'),_0x5a45e2,_0x836b('0xe'));logger['debug'](_0x836b('0xf'),_0x5a45e2,_0x836b('0xe'),JSON[_0x836b('0x10')](_0x112610));if(_0x112610[_0x836b('0x11')]){if(_0x112610['error'][_0x836b('0x12')]===0x1f4){logger['error'](_0x836b('0xd'),_0x5a45e2,_0x112610[_0x836b('0x11')]['message']);return _0x240dce(_0x112610[_0x836b('0x11')][_0x836b('0x13')]);}logger[_0x836b('0x11')](_0x836b('0xd'),_0x5a45e2,_0x112610[_0x836b('0x11')]['message']);return _0x4540a8(_0x112610[_0x836b('0x11')][_0x836b('0x13')]);}else{logger[_0x836b('0xc')](_0x836b('0xd'),_0x5a45e2,'request\x20sent');_0x4540a8(_0x112610[_0x836b('0x14')][_0x836b('0x13')]);}})[_0x836b('0x15')](function(_0x36bb49){logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x5a45e2,_0x36bb49);_0x240dce(_0x36bb49);});});}exports[_0x836b('0x16')]=function(_0x271317){var _0x1ae106=this;return new Promise(function(_0x18bccd,_0x2870fe){return db[_0x836b('0x17')][_0x836b('0x18')](_0x271317[_0x836b('0x19')],{'raw':_0x271317[_0x836b('0x1a')]?_0x271317[_0x836b('0x1a')][_0x836b('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x271317['options']?_0x271317[_0x836b('0x1a')]['where']||null:null,'attributes':_0x271317[_0x836b('0x1a')]?_0x271317[_0x836b('0x1a')]['attributes']||null:null,'limit':_0x271317[_0x836b('0x1a')]?_0x271317[_0x836b('0x1a')]['limit']||null:null})[_0x836b('0xb')](function(_0x4fab36){logger[_0x836b('0xc')](_0x836b('0x16'),_0x271317);logger[_0x836b('0x1c')](_0x836b('0x16'),_0x271317,JSON[_0x836b('0x10')](_0x4fab36));_0x18bccd(_0x4fab36);})['catch'](function(_0x104162){logger[_0x836b('0x11')](_0x836b('0x16'),_0x104162['message'],_0x271317);_0x2870fe(_0x1ae106[_0x836b('0x11')](0x1f4,_0x104162[_0x836b('0x13')]));});});};
\ No newline at end of file
index 642751f..533d55a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7697=['fs-extra','../../components/auth/service','get','/describe','describe','isAuthenticated','show','/:id/messages','post','create','addMessage','/:id/tags','openchannel','openchannelinteraction:addtags','put','/:id','openchannelinteraction:update','delete','tracked','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x40ce18,_0x1def7e){var _0x79985e=function(_0x42dddc){while(--_0x42dddc){_0x40ce18['push'](_0x40ce18['shift']());}};_0x79985e(++_0x1def7e);}(_0x7697,0x182));var _0x7769=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x7697[_0x40220a];return _0x3903cc;};'use strict';var multer=require(_0x7769('0x0'));var util=require(_0x7769('0x1'));var path=require(_0x7769('0x2'));var timeout=require(_0x7769('0x3'));var express=require(_0x7769('0x4'));var router=express[_0x7769('0x5')]();var fs_extra=require(_0x7769('0x6'));var auth=require(_0x7769('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./openchannelInteraction.controller');router[_0x7769('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7769('0x8')](_0x7769('0x9'),auth['isAuthenticated'](),controller[_0x7769('0xa')]);router[_0x7769('0x8')]('/:id',auth[_0x7769('0xb')](),controller[_0x7769('0xc')]);router['get'](_0x7769('0xd'),auth[_0x7769('0xb')](),controller['getMessages']);router[_0x7769('0x8')]('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0x7769('0xe')]('/',auth['isAuthenticated'](),controller[_0x7769('0xf')]);router[_0x7769('0xe')](_0x7769('0xd'),auth[_0x7769('0xb')](),controller[_0x7769('0x10')]);router['post'](_0x7769('0x11'),auth[_0x7769('0xb')](),interaction['tracked'](_0x7769('0x12'),_0x7769('0x13')),controller['addTags']);router[_0x7769('0x14')](_0x7769('0x15'),auth[_0x7769('0xb')](),interaction['tracked'](_0x7769('0x12'),_0x7769('0x16')),controller['update']);router[_0x7769('0x17')](_0x7769('0x15'),auth[_0x7769('0xb')](),interaction[_0x7769('0x18')](_0x7769('0x12'),'openchannelinteraction:destroy'),controller[_0x7769('0x19')]);router[_0x7769('0x17')](_0x7769('0x11'),auth['isAuthenticated'](),controller[_0x7769('0x1a')]);module[_0x7769('0x1b')]=router;
\ No newline at end of file
+var _0xf7b5=['tracked','openchannel','openchannelinteraction:addtags','addTags','put','/:id','openchannelinteraction:update','openchannelinteraction:destroy','destroy','delete','removeTags','exports','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','/describe','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags'];(function(_0x562362,_0x5d54f4){var _0x3a18ce=function(_0x4b96ed){while(--_0x4b96ed){_0x562362['push'](_0x562362['shift']());}};_0x3a18ce(++_0x5d54f4);}(_0xf7b5,0x12e));var _0x5f7b=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xf7b5[_0x36c5b0];return _0xf19333;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x5f7b('0x0'));var express=require('express');var router=express[_0x5f7b('0x1')]();var fs_extra=require(_0x5f7b('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x5f7b('0x3'));var config=require(_0x5f7b('0x4'));var controller=require(_0x5f7b('0x5'));router[_0x5f7b('0x6')]('/',auth[_0x5f7b('0x7')](),controller['index']);router[_0x5f7b('0x6')](_0x5f7b('0x8'),auth['isAuthenticated'](),controller['describe']);router[_0x5f7b('0x6')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x5f7b('0x6')](_0x5f7b('0x9'),auth[_0x5f7b('0x7')](),controller[_0x5f7b('0xa')]);router[_0x5f7b('0x6')](_0x5f7b('0xb'),auth[_0x5f7b('0x7')](),controller[_0x5f7b('0xc')]);router[_0x5f7b('0xd')]('/',auth[_0x5f7b('0x7')](),controller[_0x5f7b('0xe')]);router[_0x5f7b('0xd')](_0x5f7b('0x9'),auth[_0x5f7b('0x7')](),controller[_0x5f7b('0xf')]);router[_0x5f7b('0xd')](_0x5f7b('0x10'),auth[_0x5f7b('0x7')](),interaction[_0x5f7b('0x11')](_0x5f7b('0x12'),_0x5f7b('0x13')),controller[_0x5f7b('0x14')]);router[_0x5f7b('0x15')](_0x5f7b('0x16'),auth['isAuthenticated'](),interaction[_0x5f7b('0x11')](_0x5f7b('0x12'),_0x5f7b('0x17')),controller['update']);router['delete'](_0x5f7b('0x16'),auth[_0x5f7b('0x7')](),interaction[_0x5f7b('0x11')](_0x5f7b('0x12'),_0x5f7b('0x18')),controller[_0x5f7b('0x19')]);router[_0x5f7b('0x1a')]('/:id/tags',auth[_0x5f7b('0x7')](),controller[_0x5f7b('0x1b')]);module[_0x5f7b('0x1c')]=router;
\ No newline at end of file
index 5582618..ede2010 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ff=['STRING','ENUM','BOOLEAN','sequelize','exports','DATE'];(function(_0x50e40b,_0x338d17){var _0x2608b7=function(_0x4ded5e){while(--_0x4ded5e){_0x50e40b['push'](_0x50e40b['shift']());}};_0x2608b7(++_0x338d17);}(_0xb2ff,0x123));var _0xfb2f=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xb2ff[_0x3bf83f];return _0x22c4a9;};'use strict';var Sequelize=require(_0xfb2f('0x0'));module[_0xfb2f('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xfb2f('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xfb2f('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0xfb2f('0x3')]},'externalUrl':{'type':Sequelize[_0xfb2f('0x3')]},'lastMsgAt':{'type':Sequelize[_0xfb2f('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xfb2f('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0xfb2f('0x5')],'defaultValue':![]}};
\ No newline at end of file
+var _0xa990=['BOOLEAN','DATE','STRING','ENUM','out','sequelize','exports'];(function(_0x1ab313,_0x12bccc){var _0x2d73f4=function(_0x225f28){while(--_0x225f28){_0x1ab313['push'](_0x1ab313['shift']());}};_0x2d73f4(++_0x12bccc);}(_0xa990,0xc9));var _0x0a99=function(_0x196dca,_0x338586){_0x196dca=_0x196dca-0x0;var _0x20583e=_0xa990[_0x196dca];return _0x20583e;};'use strict';var Sequelize=require(_0x0a99('0x0'));module[_0x0a99('0x1')]={'closed':{'type':Sequelize[_0x0a99('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x0a99('0x3')]},'disposition':{'type':Sequelize[_0x0a99('0x4')]},'secondDisposition':{'type':Sequelize[_0x0a99('0x4')]},'thirdDisposition':{'type':Sequelize[_0x0a99('0x4')]},'note':{'type':Sequelize[_0x0a99('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0x0a99('0x4')]},'lastMsgAt':{'type':Sequelize[_0x0a99('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x0a99('0x5')]('in',_0x0a99('0x6')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x0a99('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x0a99('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 7f72804..221cc01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ecb=['transcript-%d-%s.zip','User','CmContact','Contact','lastName','Attachment','direction','secret','OpenchannelAccount','Owner','get','mkdirSync','N.A.','closedAt','disposition','threadId','Public','Messages','basename','existsSync','createReadStream','out','System','renderFile','views','.pdf','Openchannel','createPdfFromHTML','log','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error','stack','name','send','Users','fullname','TagIds','Tags','split','forEach','push','catch','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','select','field','color','from','u.id','u.fullname','ui.OpenchannelInteractionId','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','it.OpenchannelInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','value','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','operator','$substring','UserId','buildExpression','body','keys','compact','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','replace','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','role','agent','user','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','toString','merge','OpenchannelInteraction','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','Contact.lastName','c.email','Contact.email','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','all','rows','show','params','include','create','update','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findOne','OpenchannelInteractionId','filter','format','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','findAll','addTags','setTags','spread','Tag','emit','openchannelInteractionTags:save','removeTags','download','unix','root','files','tmp','server','attachments','join'];(function(_0x16783d,_0x366e77){var _0xb8342d=function(_0x1d974c){while(--_0x1d974c){_0x16783d['push'](_0x16783d['shift']());}};_0xb8342d(++_0x366e77);}(_0x7ecb,0x10d));var _0xb7ec=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7ecb[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xb7ec('0x0'));var rimraf=require(_0xb7ec('0x1'));var zipdir=require(_0xb7ec('0x2'));var jsonpatch=require(_0xb7ec('0x3'));var rp=require('request-promise');var moment=require(_0xb7ec('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb7ec('0x5'));var util=require(_0xb7ec('0x6'));var path=require('path');var sox=require(_0xb7ec('0x7'));var csv=require('to-csv');var ejs=require(_0xb7ec('0x8'));var fs=require('fs');var fs_extra=require(_0xb7ec('0x9'));var _=require(_0xb7ec('0xa'));var squel=require(_0xb7ec('0xb'));var crypto=require('crypto');var jsforce=require(_0xb7ec('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xb7ec('0xd'));var querystring=require(_0xb7ec('0xe'));var Papa=require(_0xb7ec('0xf'));var Redis=require('ioredis');var authService=require(_0xb7ec('0x10'));var qs=require(_0xb7ec('0x11'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb7ec('0x12'))(_0xb7ec('0x13'));var utils=require('../../config/utils');var config=require(_0xb7ec('0x14'));var licenseUtil=require(_0xb7ec('0x15'));var db=require(_0xb7ec('0x16'))['db'];config['redis']=_[_0xb7ec('0x17')](config[_0xb7ec('0x18')],{'host':_0xb7ec('0x19'),'port':0x18eb});var socket=require(_0xb7ec('0x1a'))(new Redis(config[_0xb7ec('0x18')]));require(_0xb7ec('0x1b'))[_0xb7ec('0x1c')](socket);function respondWithStatusCode(_0x47e730,_0x370b7b){_0x370b7b=_0x370b7b||0xcc;return function(_0x36caa6){if(_0x36caa6){return _0x47e730[_0xb7ec('0x1d')](_0x370b7b);}return _0x47e730[_0xb7ec('0x1e')](_0x370b7b)[_0xb7ec('0x1f')]();};}function respondWithResult(_0x43bc47,_0x147053){_0x147053=_0x147053||0xc8;return function(_0x528b8d){if(_0x528b8d){return _0x43bc47[_0xb7ec('0x1e')](_0x147053)[_0xb7ec('0x20')](_0x528b8d);}};}function respondWithFilteredResult(_0x4e7d99,_0x451029){return function(_0x35b9c5){if(_0x35b9c5){var _0x281efa=typeof _0x451029[_0xb7ec('0x21')]===_0xb7ec('0x22')&&typeof _0x451029[_0xb7ec('0x23')]===_0xb7ec('0x22');var _0x333477=_0x35b9c5[_0xb7ec('0x24')];var _0x10a3d4=_0x281efa?0x0:_0x451029['offset'];var _0x1bae6b=_0x281efa?_0x35b9c5[_0xb7ec('0x24')]:_0x451029[_0xb7ec('0x21')]+_0x451029[_0xb7ec('0x23')];var _0x397439;if(_0x1bae6b>=_0x333477){_0x1bae6b=_0x333477;_0x397439=0xc8;}else{_0x397439=0xce;}_0x4e7d99[_0xb7ec('0x1e')](_0x397439);return _0x4e7d99[_0xb7ec('0x25')](_0xb7ec('0x26'),_0x10a3d4+'-'+_0x1bae6b+'/'+_0x333477)['json'](_0x35b9c5);}return null;};}function patchUpdates(_0x4c6762){return function(_0x1baa28){try{jsonpatch['apply'](_0x1baa28,_0x4c6762,!![]);}catch(_0x541d11){return BPromise[_0xb7ec('0x27')](_0x541d11);}return _0x1baa28[_0xb7ec('0x28')]();};}function saveUpdates(_0x31186e,_0x57e7ac){return function(_0x51fc99){if(_0x51fc99){return _0x51fc99['update'](_0x31186e)[_0xb7ec('0x29')](function(_0xbb67cd){return _0xbb67cd;});}return null;};}function removeEntity(_0xe5553,_0x451316){return function(_0xdc2ae4){if(_0xdc2ae4){return _0xdc2ae4[_0xb7ec('0x2a')]()[_0xb7ec('0x29')](function(){_0xe5553[_0xb7ec('0x1e')](0xcc)[_0xb7ec('0x1f')]();});}};}function handleEntityNotFound(_0x1e15af,_0x42cc2f){return function(_0x4cb1fe){if(!_0x4cb1fe){_0x1e15af[_0xb7ec('0x1d')](0x194);}return _0x4cb1fe;};}function handleError(_0x3b5ca2,_0x1394d8){_0x1394d8=_0x1394d8||0x1f4;return function(_0x580b71){logger[_0xb7ec('0x2b')](_0x580b71[_0xb7ec('0x2c')]);if(_0x580b71[_0xb7ec('0x2d')]){delete _0x580b71[_0xb7ec('0x2d')];}_0x3b5ca2[_0xb7ec('0x1e')](_0x1394d8)[_0xb7ec('0x2e')](_0x580b71);};}function getInteractionUsers(_0x14f1d4,_0x56bd8c){return new BPromise(function(_0x45f6b0,_0x364871){try{if(_0x56bd8c[_0x14f1d4['id']]){_0x14f1d4[_0xb7ec('0x2f')]=_['map'](_0x56bd8c[_0x14f1d4['id']],function(_0x313c3b){return{'id':_0x313c3b['id'],'fullname':_0x313c3b[_0xb7ec('0x30')]};});}}catch(_0x3c212e){_0x364871(_0x3c212e);}_0x45f6b0(_0x14f1d4);});}function getInteractionTags(_0x887fea,_0x4b2058){return new BPromise(function(_0x39012b,_0x45bb24){try{if(_0x887fea[_0xb7ec('0x31')]){_0x887fea[_0xb7ec('0x32')]=[];_0x887fea[_0xb7ec('0x31')][_0xb7ec('0x33')](',')[_0xb7ec('0x34')](function(_0x3a9f97){_0x887fea[_0xb7ec('0x32')][_0xb7ec('0x35')](_0x4b2058[_0x3a9f97]);});}delete _0x887fea['TagIds'];}catch(_0x2374ef){_0x45bb24(_0x2374ef);}_0x39012b(_0x887fea);});}function updateOpenchannelInteraction(_0x249b5f,_0x1e6fea,_0x22c317){return new BPromise(function(_0x3b5cb3,_0x47e685){return getInteractionUsers(_0x249b5f,_0x22c317)[_0xb7ec('0x29')](function(_0x32ef88){return getInteractionTags(_0x32ef88,_0x1e6fea);})['then'](function(_0x58b308){_0x3b5cb3(_0x58b308);})[_0xb7ec('0x36')](function(_0x3c4ec8){_0x47e685(_0x3c4ec8);});});}exports[_0xb7ec('0x37')]=function(_0x5dabed,_0x3eeeb3){var _0x35bc68={},_0x768bd9={},_0x27dc3a={'count':0x0,'rows':[]};var _0x196bd1=_[_0xb7ec('0x38')](db['OpenchannelInteraction'][_0xb7ec('0x39')],function(_0x44f298){return{'name':_0x44f298[_0xb7ec('0x3a')],'type':_0x44f298[_0xb7ec('0x3b')][_0xb7ec('0x3c')]};});_0x768bd9[_0xb7ec('0x3d')]=_[_0xb7ec('0x38')](_0x196bd1,_0xb7ec('0x2d'));_0x768bd9[_0xb7ec('0x3e')]=_['keys'](_0x5dabed['query']);_0x768bd9[_0xb7ec('0x3f')]=_[_0xb7ec('0x40')](_0x768bd9[_0xb7ec('0x3d')],_0x768bd9['query']);_0x35bc68['attributes']=_['intersection'](_0x768bd9[_0xb7ec('0x3d')],qs[_0xb7ec('0x41')](_0x5dabed['query'][_0xb7ec('0x41')]));_0x35bc68[_0xb7ec('0x42')]=_0x35bc68[_0xb7ec('0x42')][_0xb7ec('0x43')]?_0x35bc68[_0xb7ec('0x42')]:_0x768bd9[_0xb7ec('0x3d')];if(!_0x5dabed['query'][_0xb7ec('0x44')]('nolimit')){_0x35bc68['limit']=qs['limit'](_0x5dabed['query'][_0xb7ec('0x23')]);_0x35bc68[_0xb7ec('0x21')]=qs[_0xb7ec('0x21')](_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x21')]);}_0x35bc68[_0xb7ec('0x45')]=qs[_0xb7ec('0x46')](_0x5dabed['query'][_0xb7ec('0x46')]);_0x35bc68[_0xb7ec('0x47')]=qs[_0xb7ec('0x3f')](_[_0xb7ec('0x48')](_0x5dabed[_0xb7ec('0x3e')],_0x768bd9[_0xb7ec('0x3f')]),_0x196bd1);var _0x114d3c=[];var _0x261da2=squel[_0xb7ec('0x49')]()[_0xb7ec('0x4a')]('id')[_0xb7ec('0x4a')](_0xb7ec('0x2d'))['field'](_0xb7ec('0x4b'))[_0xb7ec('0x4c')]('tools_tags');var _0x3427e2=squel[_0xb7ec('0x49')]()[_0xb7ec('0x4a')](_0xb7ec('0x4d'))[_0xb7ec('0x4a')](_0xb7ec('0x4e'))['field'](_0xb7ec('0x4f'))[_0xb7ec('0x4c')]('user_has_openchannel_interactions','ui')[_0xb7ec('0x50')](_0xb7ec('0x51'),'u',_0xb7ec('0x52'));var _0x5e0c6a=squel['select']()['from'](_0xb7ec('0x53'),'i')[_0xb7ec('0x50')]('cm_contacts','c',_0xb7ec('0x54'))['left_join'](_0xb7ec('0x51'),'o',_0xb7ec('0x55'))[_0xb7ec('0x50')]('openchannel_accounts','a','a.id\x20=\x20i.OpenchannelAccountId')[_0xb7ec('0x50')](_0xb7ec('0x56'),'me',_0xb7ec('0x57'))['left_join']('openchannel_interaction_has_tags','it',_0xb7ec('0x58'))[_0xb7ec('0x50')](_0xb7ec('0x59'),'t',_0xb7ec('0x5a'));var _0x2e6a27=squel[_0xb7ec('0x5b')]();var _0x3c04c3=[];var _0x142d0c=squel['expr']();var _0x34fb2b;if(_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x5c')]){_0x34fb2b=as['parseSearch'](_0x5dabed['query']['search']);var _0x38f1a8=_0x34fb2b[_0xb7ec('0x5d')];for(var _0xea058f=0x0;_0xea058f<_0x34fb2b[_0xb7ec('0x5e')]['length'];_0xea058f++){var _0x3db7b4=_0x34fb2b[_0xb7ec('0x5e')][_0xea058f];var _0x1db52f='i';var _0x10d81c=_[_0xb7ec('0x5f')](_0x196bd1,[_0xb7ec('0x2d'),_0x3db7b4[_0xb7ec('0x4a')]]);if(!_0x10d81c){switch(_0x3db7b4['field']){case _0xb7ec('0x60'):if(_0x3db7b4['value']==0x1){_0x5e0c6a[_0xb7ec('0x61')]('`'+_0x3db7b4['field']+_0xb7ec('0x62'));}else{_0x5e0c6a[_0xb7ec('0x61')]('`'+_0x3db7b4[_0xb7ec('0x4a')]+_0xb7ec('0x63'));}break;case'Contact':if(_0x3db7b4['operator']==='$substring'){if(_0x3db7b4['value'][_0xb7ec('0x33')]('\x20')[_0xb7ec('0x43')]>0x1){_0x2e6a27[_0x38f1a8](_0xb7ec('0x64'),qs['getFullTextValue'](_0x3db7b4['value']),null);}else{var _0x34861c='%'+_0x3db7b4[_0xb7ec('0x65')]+'%';_0x2e6a27[_0x38f1a8](_0xb7ec('0x66'),_0x34861c,_0x34861c,_0x34861c);}}else{_0x10d81c=_[_0xb7ec('0x5f')](_0x196bd1,[_0xb7ec('0x2d'),_0xb7ec('0x67')]);_0x3db7b4[_0xb7ec('0x4a')]='ContactId';_0x513393=as['buildExpression'](_0x1db52f,_0x10d81c[_0xb7ec('0x3b')],_0x3db7b4);_0x2e6a27[_0x38f1a8](_0x513393[_0xb7ec('0x68')],_0x513393['value'][_0xb7ec('0x69')],_0x513393[_0xb7ec('0x65')]['end']);}break;case'Tag':var _0x3ffc03=_0x3db7b4['value'][_0xb7ec('0x33')](',')[_0xb7ec('0x38')](function(_0x7cbf32){return Number(_0x7cbf32);});_0x3ffc03[_0xb7ec('0x34')](function(_0x257bb2){_0x142d0c['or'](_0xb7ec('0x6a'),'%,'+_0x257bb2+',%');});_0x3c04c3=_['union'](_0x3c04c3,_0x3ffc03);break;case'User':if(_0x3db7b4[_0xb7ec('0x6b')]===_0xb7ec('0x6c')){_0x2e6a27[_0x38f1a8]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x3db7b4['value']+'%',null);}else{_0x10d81c=_['find'](_0x196bd1,[_0xb7ec('0x2d'),_0xb7ec('0x6d')]);_0x3db7b4['field']='UserId';_0x513393=as[_0xb7ec('0x6e')](_0x1db52f,_0x10d81c[_0xb7ec('0x3b')],_0x3db7b4);_0x2e6a27[_0x38f1a8](_0x513393['text'],_0x513393[_0xb7ec('0x65')][_0xb7ec('0x69')],_0x513393[_0xb7ec('0x65')][_0xb7ec('0x1f')]);}break;case _0xb7ec('0x6f'):_0x513393=as['buildExpression']('me',null,_0x3db7b4);_0x2e6a27[_0x38f1a8](_0x513393[_0xb7ec('0x68')],_0x513393[_0xb7ec('0x65')][_0xb7ec('0x69')],_0x513393[_0xb7ec('0x65')][_0xb7ec('0x1f')]);break;}}else{var _0x513393=as[_0xb7ec('0x6e')](_0x1db52f,_0x10d81c['type'],_0x3db7b4);_0x2e6a27[_0x38f1a8](_0x513393['text'],_0x513393[_0xb7ec('0x65')][_0xb7ec('0x69')],_0x513393[_0xb7ec('0x65')]['end']);}}}else{var _0x2bd1e8=_(_0x5dabed[_0xb7ec('0x3e')])[_0xb7ec('0x70')]()[_0xb7ec('0x38')](function(_0x563917){return _['some'](_0x196bd1,['name',_0x563917])?_0x563917:undefined;})[_0xb7ec('0x71')]()[_0xb7ec('0x65')]();if(!_[_0xb7ec('0x72')](_0x2bd1e8)){_0x2bd1e8[_0xb7ec('0x34')](function(_0x144a40){if(_0x144a40===_0xb7ec('0x73')){_0x5e0c6a['where'](_0xb7ec('0x74'),[][_0xb7ec('0x75')](_0x5dabed[_0xb7ec('0x3e')][_0x144a40]));}else if(_0x144a40===_0xb7ec('0x76')){var _0x346a10=JSON[_0xb7ec('0x77')](_0x5dabed['query'][_0x144a40])[_0xb7ec('0x78')];var _0x18cf7d=JSON['parse'](_0x5dabed[_0xb7ec('0x3e')][_0x144a40])['$lte'];_0x5e0c6a[_0xb7ec('0x47')](_0xb7ec('0x79'),_0x346a10,_0x18cf7d);}else{if(_0x5dabed['query'][_0x144a40]===_0xb7ec('0x7a')){_0x5e0c6a[_0xb7ec('0x47')]('i.'+_0x144a40+'\x20IS\x20NULL');}else{_0x5e0c6a[_0xb7ec('0x47')]('i.'+_0x144a40+_0xb7ec('0x7b'),_0x5dabed[_0xb7ec('0x3e')][_0x144a40]);}}});}if(_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x7c')]){if(_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x7c')]==0x1){_0x5e0c6a[_0xb7ec('0x61')](_0xb7ec('0x7d'));}else{_0x5e0c6a[_0xb7ec('0x61')](_0xb7ec('0x7e'));}}if(_0x5dabed['query'][_0xb7ec('0x7f')]){_0x3c04c3=_[_0xb7ec('0x80')](_0x5dabed[_0xb7ec('0x3e')]['tag'])?_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x7f')]:new Array(_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x7f')]);_0x3c04c3['forEach'](function(_0x304915){_0x142d0c['or'](_0xb7ec('0x6a'),'%,'+_0x304915+',%');});}if(_0x5dabed[_0xb7ec('0x3e')]['filter']){var _0x1865d7=_0x5dabed[_0xb7ec('0x3e')]['filter'][_0xb7ec('0x81')]('\x5c','\x5c\x5c')[_0xb7ec('0x81')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x1865d7)){_0x2e6a27['or'](_0xb7ec('0x82'),_0x1865d7+'%');}else{_0x2e6a27['or'](_0xb7ec('0x83'),qs[_0xb7ec('0x84')](_0x1865d7))['or'](_0xb7ec('0x85'),_0x1865d7+'%')['or'](_0xb7ec('0x86'),_0x1865d7+'%');}}}_0x5e0c6a[_0xb7ec('0x47')](_0x2e6a27);_0x5e0c6a[_0xb7ec('0x87')](_0xb7ec('0x88'));var _0x2fbda0={'type':db[_0xb7ec('0x89')][_0xb7ec('0x8a')][_0xb7ec('0x8b')],'raw':!![]};var _0xcbd338=_0x5e0c6a['clone']();_0xcbd338[_0xb7ec('0x4a')](_0xb7ec('0x88'));_0xcbd338['field'](_0xb7ec('0x8c'),'unreadMessages');if(_0x35bc68[_0xb7ec('0x45')]){_0x35bc68[_0xb7ec('0x45')]['forEach'](function(_0x3de644){var _0x14de2b=_0x3de644[0x0]===_0xb7ec('0x8d')?_0x3de644[0x0]:'i.'+_0x3de644[0x0];_0x5e0c6a[_0xb7ec('0x45')](_0x14de2b,_0x3de644[0x1]===_0xb7ec('0x8e')?![]:!![]);});}if(!_[_0xb7ec('0x72')](_0x3c04c3)){_0x5e0c6a[_0xb7ec('0x61')](_0x142d0c);_0xcbd338[_0xb7ec('0x47')](_0xb7ec('0x8f'),_0x3c04c3);}BPromise[_0xb7ec('0x90')]()[_0xb7ec('0x29')](function(){if(!_0x34fb2b){if(_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x73')])return;_0xcbd338[_0xb7ec('0x47')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');_0x5e0c6a['where'](_0xb7ec('0x91'));return;}if(_0x5dabed['user'][_0xb7ec('0x92')]!==_0xb7ec('0x93'))return;return _0x5dabed[_0xb7ec('0x94')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})[_0xb7ec('0x29')](function(_0x36a3fe){if(_[_0xb7ec('0x72')](_0x36a3fe)){_0xcbd338[_0xb7ec('0x47')](_0xb7ec('0x95'));_0x5e0c6a[_0xb7ec('0x47')](_0xb7ec('0x95'));}else{_0xcbd338['where'](_0xb7ec('0x74'),_['map'](_0x36a3fe,'id'));_0x5e0c6a[_0xb7ec('0x47')](_0xb7ec('0x74'),_[_0xb7ec('0x38')](_0x36a3fe,'id'));}});})['then'](function(){if(_0x5dabed[_0xb7ec('0x94')][_0xb7ec('0x92')]===_0xb7ec('0x93')&&!_0x34fb2b&&!_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x73')])return[];return db[_0xb7ec('0x96')][_0xb7ec('0x3e')](_0xcbd338[_0xb7ec('0x97')](),_0x2fbda0);})[_0xb7ec('0x29')](function(_0x4755f6){_0x27dc3a[_0xb7ec('0x24')]=_0x4755f6[_0xb7ec('0x43')];if(_0x27dc3a[_0xb7ec('0x24')]===0x0)return[];return db[_0xb7ec('0x96')][_0xb7ec('0x3e')](_0x261da2['toString'](),_0x2fbda0)[_0xb7ec('0x29')](function(_0x2b2025){_0x114d3c=_['keyBy'](_0x2b2025,'id');_0x2fbda0=_[_0xb7ec('0x98')](_0x2fbda0,{'model':db[_0xb7ec('0x99')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5dabed[_0xb7ec('0x3e')][_0xb7ec('0x41')]){_0x35bc68[_0xb7ec('0x42')][_0xb7ec('0x34')](function(_0x4ba036){_0x5e0c6a[_0xb7ec('0x4a')]('i.'+_0x4ba036);});}else{_0x5e0c6a[_0xb7ec('0x4a')](_0xb7ec('0x8c'),_0xb7ec('0x60'));_0x5e0c6a[_0xb7ec('0x4a')](_0xb7ec('0x9a'),'Account.key');_0x5e0c6a['field'](_0xb7ec('0x9b'),_0xb7ec('0x9c'));_0x5e0c6a[_0xb7ec('0x4a')](_0xb7ec('0x9d'),_0xb7ec('0x8d'));_0x5e0c6a['field'](_0xb7ec('0x9e'));_0x5e0c6a['field'](_0xb7ec('0x9f'),_0xb7ec('0xa0'));_0x5e0c6a['field']('c.lastName',_0xb7ec('0xa1'));_0x5e0c6a[_0xb7ec('0x4a')](_0xb7ec('0xa2'),_0xb7ec('0xa3'));_0x5e0c6a[_0xb7ec('0x4a')]('c.phone',_0xb7ec('0xa4'));_0x5e0c6a[_0xb7ec('0x4a')]('c.mobile',_0xb7ec('0xa5'));_0x5e0c6a['field'](_0xb7ec('0xa6'),_0xb7ec('0xa7'));_0x5e0c6a[_0xb7ec('0x4a')](_0xb7ec('0xa8'),'Owner.fullname');_0x5e0c6a[_0xb7ec('0x4a')](_0xb7ec('0xa9'),'Owner.internal');_0x5e0c6a['field'](_0xb7ec('0xaa'),_0xb7ec('0x31'));}if(_0x35bc68[_0xb7ec('0x23')])_0x5e0c6a[_0xb7ec('0x23')](_0x35bc68[_0xb7ec('0x23')]);if(_0x35bc68[_0xb7ec('0x21')])_0x5e0c6a[_0xb7ec('0x21')](_0x35bc68[_0xb7ec('0x21')]);return db[_0xb7ec('0x96')][_0xb7ec('0x3e')](_0x5e0c6a[_0xb7ec('0x97')](),_0x2fbda0);})['then'](function(_0x32243e){if(_0x32243e['length']>0x0)_0x3427e2[_0xb7ec('0x47')](_0xb7ec('0xab'),_[_0xb7ec('0x38')](_0x32243e,'id'));return db[_0xb7ec('0x96')]['query'](_0x3427e2[_0xb7ec('0x97')](),_0x2fbda0)[_0xb7ec('0x29')](function(_0x2a2a6c){var _0x3f5f6a=_[_0xb7ec('0xac')](_0x2a2a6c,'OpenchannelInteractionId');var _0x1cde3a=[];_0x32243e['forEach'](function(_0x3e133d){_0x1cde3a['push'](updateOpenchannelInteraction(_0x3e133d,_0x114d3c,_0x3f5f6a));});return BPromise[_0xb7ec('0xad')](_0x1cde3a);});});})['then'](function(_0x2446a5){_0x27dc3a[_0xb7ec('0xae')]=_0x2446a5;return _0x27dc3a;})[_0xb7ec('0x29')](respondWithFilteredResult(_0x3eeeb3,_0x35bc68))['catch'](handleError(_0x3eeeb3,null));};exports[_0xb7ec('0xaf')]=function(_0x43c1dd,_0x416f85){var _0x478456={};if(_0x43c1dd[_0xb7ec('0x3e')][_0xb7ec('0x3b')]&&_0x43c1dd['query'][_0xb7ec('0x3b')]==='from'){_0x478456[_0xb7ec('0x4c')]=_0x43c1dd[_0xb7ec('0xb0')]['id'];}else{_0x478456['id']=_0x43c1dd['params']['id'];}var _0x3657cf={'raw':![],'where':_0x478456},_0x12b14b={};_0x12b14b[_0xb7ec('0x3d')]=_['keys'](db[_0xb7ec('0x99')][_0xb7ec('0x39')]);_0x12b14b[_0xb7ec('0x3e')]=_['keys'](_0x43c1dd['query']);_0x12b14b[_0xb7ec('0x3f')]=_[_0xb7ec('0x40')](_0x12b14b['model'],_0x12b14b[_0xb7ec('0x3e')]);_0x3657cf[_0xb7ec('0x42')]=_[_0xb7ec('0x40')](_0x12b14b['model'],qs[_0xb7ec('0x41')](_0x43c1dd[_0xb7ec('0x3e')][_0xb7ec('0x41')]));_0x3657cf[_0xb7ec('0x42')]=_0x3657cf['attributes'][_0xb7ec('0x43')]?_0x3657cf[_0xb7ec('0x42')]:_0x12b14b[_0xb7ec('0x3d')];if(_0x43c1dd['query']['includeAll']){_0x3657cf[_0xb7ec('0xb1')]=[{'all':!![]}];}_0x3657cf=_[_0xb7ec('0x98')]({},_0x3657cf,_0x43c1dd['options']);return db['OpenchannelInteraction'][_0xb7ec('0x5f')](_0x3657cf)[_0xb7ec('0x29')](handleEntityNotFound(_0x416f85,null))[_0xb7ec('0x29')](respondWithResult(_0x416f85,null))[_0xb7ec('0x36')](handleError(_0x416f85,null));};exports[_0xb7ec('0xb2')]=function(_0x3faff1,_0x55bde0){return db[_0xb7ec('0x99')][_0xb7ec('0xb2')](_0x3faff1[_0xb7ec('0x6f')],{})[_0xb7ec('0x29')](respondWithResult(_0x55bde0,0xc9))[_0xb7ec('0x36')](handleError(_0x55bde0,null));};exports[_0xb7ec('0xb3')]=function(_0x3a82be,_0x134408){if(_0x3a82be[_0xb7ec('0x6f')]['id']){delete _0x3a82be[_0xb7ec('0x6f')]['id'];}return db[_0xb7ec('0x99')][_0xb7ec('0x5f')]({'where':{'id':_0x3a82be['params']['id']}})[_0xb7ec('0x29')](handleEntityNotFound(_0x134408,null))[_0xb7ec('0x29')](saveUpdates(_0x3a82be['body'],null))[_0xb7ec('0x29')](respondWithResult(_0x134408,null))[_0xb7ec('0x36')](handleError(_0x134408,null));};exports[_0xb7ec('0x2a')]=function(_0x1e6d4a,_0x57be5c){return db[_0xb7ec('0x99')][_0xb7ec('0x5f')]({'where':{'id':_0x1e6d4a[_0xb7ec('0xb0')]['id']}})[_0xb7ec('0x29')](handleEntityNotFound(_0x57be5c,null))['then'](removeEntity(_0x57be5c,null))[_0xb7ec('0x36')](handleError(_0x57be5c,null));};exports[_0xb7ec('0xb4')]=function(_0x559e92,_0x86b1f2){return db[_0xb7ec('0x99')][_0xb7ec('0xb4')]()[_0xb7ec('0x29')](respondWithResult(_0x86b1f2,null))[_0xb7ec('0x36')](handleError(_0x86b1f2,null));};exports[_0xb7ec('0xb5')]=function(_0x3d8206,_0x124306,_0x223100){return db[_0xb7ec('0xb6')][_0xb7ec('0x5f')]({'where':{'id':_0x3d8206['params']['id']}})['then'](handleEntityNotFound(_0x124306,null))[_0xb7ec('0x29')](function(_0x3b4aef){if(_0x3b4aef){return _0x3b4aef[_0xb7ec('0xb5')](_0x3d8206[_0xb7ec('0x6f')][_0xb7ec('0xb7')],_[_0xb7ec('0xb8')](_0x3d8206[_0xb7ec('0x6f')],[_0xb7ec('0xb7'),'id'])||{});}})[_0xb7ec('0x29')](respondWithResult(_0x124306,null))[_0xb7ec('0x36')](handleError(_0x124306,null));};exports[_0xb7ec('0xb9')]=function(_0x2a1329,_0x318346,_0x18e450){var _0x38e664={'raw':![],'where':{}};var _0x162e52={};var _0x1a3b96={'count':0x0,'rows':[]};return db[_0xb7ec('0x99')][_0xb7ec('0xba')]({'where':{'id':_0x2a1329[_0xb7ec('0xb0')]['id']}})[_0xb7ec('0x29')](handleEntityNotFound(_0x318346,null))[_0xb7ec('0x29')](function(_0x37f2d6){if(_0x37f2d6){_0x162e52['model']=_[_0xb7ec('0x70')](db[_0xb7ec('0xb6')][_0xb7ec('0x39')]);_0x162e52['query']=_[_0xb7ec('0x70')](_0x2a1329[_0xb7ec('0x3e')]);_0x162e52[_0xb7ec('0x3f')]=_[_0xb7ec('0x40')](_0x162e52[_0xb7ec('0x3d')],_0x162e52['query']);_0x38e664['attributes']=_[_0xb7ec('0x40')](_0x162e52[_0xb7ec('0x3d')],qs['fields'](_0x2a1329['query']['fields']));_0x38e664[_0xb7ec('0x42')]=_0x38e664[_0xb7ec('0x42')]['length']?_0x38e664['attributes']:_0x162e52['model'];if(!_0x2a1329[_0xb7ec('0x3e')][_0xb7ec('0x44')]('nolimit')){_0x38e664['limit']=qs['limit'](_0x2a1329[_0xb7ec('0x3e')][_0xb7ec('0x23')]);_0x38e664['offset']=qs[_0xb7ec('0x21')](_0x2a1329['query']['offset']);}_0x38e664['order']=qs[_0xb7ec('0x46')](_0x2a1329[_0xb7ec('0x3e')]['sort']);_0x38e664[_0xb7ec('0x47')]=qs[_0xb7ec('0x3f')](_['pick'](_0x2a1329[_0xb7ec('0x3e')],_0x162e52['filters']));_0x38e664[_0xb7ec('0x47')][_0xb7ec('0xbb')]=_0x37f2d6['id'];if(_0x2a1329[_0xb7ec('0x3e')][_0xb7ec('0xbc')]){_0x38e664[_0xb7ec('0x47')]=_[_0xb7ec('0x98')](_0x38e664[_0xb7ec('0x47')],{'$or':_[_0xb7ec('0x38')](_0x38e664[_0xb7ec('0x42')],function(_0x402d82){var _0x5e862e={};_0x5e862e[_0x402d82]={'$like':'%'+_0x2a1329[_0xb7ec('0x3e')][_0xb7ec('0xbc')]+'%'};return _0x5e862e;})});}if(_0x2a1329[_0xb7ec('0x3e')][_0xb7ec('0x78')]){var _0x1cc899=_0x2a1329['query'][_0xb7ec('0x78')][_0xb7ec('0x33')](',');var _0x1d052e={};_0x1d052e[_0x1cc899[0x0]]={'$gte':moment(_0x1cc899[0x1])[_0xb7ec('0xbd')](_0xb7ec('0xbe'))};_0x38e664[_0xb7ec('0x47')]=_['merge'](_0x38e664[_0xb7ec('0x47')],_0x1d052e);}_0x38e664=_['merge']({},_0x38e664,_0x2a1329[_0xb7ec('0xbf')]);return db['OpenchannelMessage'][_0xb7ec('0x24')]({'where':_0x38e664[_0xb7ec('0x47')]})[_0xb7ec('0x29')](function(_0x57f922){_0x1a3b96['count']=_0x57f922;if(_0x2a1329['query'][_0xb7ec('0xc0')]){_0x38e664['include']=[{'all':!![]}];}return db['OpenchannelMessage'][_0xb7ec('0xc1')](_0x38e664);})[_0xb7ec('0x29')](function(_0x58ba98){_0x1a3b96[_0xb7ec('0xae')]=_0x58ba98;return _0x1a3b96;});}})[_0xb7ec('0x29')](respondWithFilteredResult(_0x318346,_0x38e664))['catch'](handleError(_0x318346,null));};exports[_0xb7ec('0xc2')]=function(_0x2c1e5e,_0x24256e,_0x5cecea){return db[_0xb7ec('0x99')][_0xb7ec('0x5f')]({'where':{'id':_0x2c1e5e[_0xb7ec('0xb0')]['id']}})[_0xb7ec('0x29')](handleEntityNotFound(_0x24256e,null))['then'](function(_0x408d3c){if(_0x408d3c){return _0x408d3c[_0xb7ec('0xc3')](_0x2c1e5e['body'][_0xb7ec('0xb7')],_['omit'](_0x2c1e5e[_0xb7ec('0x6f')],[_0xb7ec('0xb7'),'id'])||{})[_0xb7ec('0xc4')](function(){return db[_0xb7ec('0xc5')][_0xb7ec('0xc1')]({'attributes':['id','name',_0xb7ec('0x4b')],'where':{'id':_0x2c1e5e[_0xb7ec('0x6f')][_0xb7ec('0xb7')]}});})[_0xb7ec('0x29')](function(_0x29a042){socket[_0xb7ec('0xc6')](_0xb7ec('0xc7'),{'id':Number(_0x2c1e5e[_0xb7ec('0xb0')]['id']),'tags':_0x29a042||[]});return{'id':Number(_0x2c1e5e[_0xb7ec('0xb0')]['id']),'tags':_0x29a042||[]};});}})[_0xb7ec('0x29')](respondWithResult(_0x24256e,null))[_0xb7ec('0x36')](handleError(_0x24256e,null));};exports[_0xb7ec('0xc8')]=function(_0x1e4fe4,_0x178732,_0x5d465c){return db[_0xb7ec('0x99')]['find']({'where':{'id':_0x1e4fe4[_0xb7ec('0xb0')]['id']}})['then'](handleEntityNotFound(_0x178732,null))[_0xb7ec('0x29')](function(_0x197917){if(_0x197917){return _0x197917['removeTags'](_0x1e4fe4[_0xb7ec('0x3e')][_0xb7ec('0xb7')]);}})[_0xb7ec('0x29')](respondWithStatusCode(_0x178732,null))[_0xb7ec('0x36')](handleError(_0x178732,null));};exports[_0xb7ec('0xc9')]=function(_0x280a16,_0xa7370c){var _0x35b76c=moment()[_0xb7ec('0xca')]()[_0xb7ec('0x97')]();var _0x1cd188=path['join'](config[_0xb7ec('0xcb')],'server',_0xb7ec('0xcc'),_0xb7ec('0xcd'));var _0x16df20=path['join'](config['root'],_0xb7ec('0xce'),_0xb7ec('0xcc'),_0xb7ec('0xcf'));var _0x87f794=path[_0xb7ec('0xd0')](_0x1cd188,_0x35b76c);var _0x3d14ce=util['format'](_0xb7ec('0xd1'),_0x280a16[_0xb7ec('0xb0')]['id'],_0x35b76c);var _0x17fbf5=path[_0xb7ec('0xd0')](_0x1cd188,_0x3d14ce);var _0x3d93ef=[];_0x3d93ef['push']({'model':db[_0xb7ec('0xd2')],'as':_0xb7ec('0xd2'),'attributes':['id',_0xb7ec('0x30')],'raw':!![]});_0x3d93ef['push']({'model':db[_0xb7ec('0xd3')],'as':_0xb7ec('0xd4'),'attributes':['id','firstName',_0xb7ec('0xd5')],'raw':!![]});if(_0x280a16[_0xb7ec('0x3e')]['attachments']){_0x3d93ef[_0xb7ec('0x35')]({'model':db[_0xb7ec('0xd6')],'as':_0xb7ec('0xd6'),'raw':!![]});}var _0x33bcf9=[{'model':db[_0xb7ec('0xb6')],'as':'Messages','attributes':['id',_0xb7ec('0x6f'),_0xb7ec('0x76'),_0xb7ec('0xd7'),_0xb7ec('0xd8'),_0xb7ec('0x7c')],'include':_0x3d93ef}];_0x33bcf9[_0xb7ec('0x35')]({'model':db[_0xb7ec('0xd9')],'as':'Account','attributes':['id',_0xb7ec('0x2d')]});_0x33bcf9[_0xb7ec('0x35')]({'model':db[_0xb7ec('0xd2')],'as':_0xb7ec('0xda'),'attributes':['id',_0xb7ec('0x30')]});return db[_0xb7ec('0x99')][_0xb7ec('0x5f')]({'where':{'id':_0x280a16['params']['id']},'include':_0x33bcf9})['then'](handleEntityNotFound(_0xa7370c,null))[_0xb7ec('0x29')](function(_0x34315a){if(_0x34315a){var _0x1a3c16=_0x34315a[_0xb7ec('0xdb')]({'plain':!![]});fs[_0xb7ec('0xdc')](_0x87f794);var _0x52c33d={'channel':'Openchannel','account':_0x1a3c16['Account'][_0xb7ec('0x2d')],'agent':_0x1a3c16[_0xb7ec('0xda')]?_0x1a3c16[_0xb7ec('0xda')]['fullname']:_0xb7ec('0xdd'),'createdAt':moment(_0x1a3c16[_0xb7ec('0x76')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xb7ec('0x97')](),'closedAt':_0x1a3c16['closed']?moment(_0x1a3c16[_0xb7ec('0xde')])[_0xb7ec('0xbd')](_0xb7ec('0xbe'))[_0xb7ec('0x97')]():'','disposition':_0x1a3c16[_0xb7ec('0xdf')],'visibility':_0x1a3c16[_0xb7ec('0xe0')]?_0xb7ec('0xe1'):'Private','messages':_(_0x1a3c16[_0xb7ec('0xe2')])[_0xb7ec('0xbc')]({'secret':![]})['map'](function(_0x437ae1){if(_0x437ae1[_0xb7ec('0xd6')]){var _0x74132=path[_0xb7ec('0xd0')](_0x16df20,_0x437ae1['Attachment'][_0xb7ec('0xe3')]);if(fs[_0xb7ec('0xe4')](_0x74132)){fs[_0xb7ec('0xe5')](_0x74132)['pipe'](fs['createWriteStream'](path[_0xb7ec('0xd0')](_0x87f794,_0x437ae1[_0xb7ec('0xd6')][_0xb7ec('0xe3')])));}}return{'date':moment(_0x437ae1[_0xb7ec('0x76')])[_0xb7ec('0xbd')](_0xb7ec('0xbe'))['toString'](),'sender':_0x437ae1[_0xb7ec('0xd7')]===_0xb7ec('0xe6')?_0x437ae1[_0xb7ec('0xd2')]?_0x437ae1[_0xb7ec('0xd2')][_0xb7ec('0x30')]:_0xb7ec('0xe7'):_0x437ae1[_0xb7ec('0xd4')]['firstName']+(_0x437ae1[_0xb7ec('0xd4')][_0xb7ec('0xd5')]?'\x20'+_0x437ae1[_0xb7ec('0xd4')][_0xb7ec('0xd5')]:''),'body':_0x437ae1[_0xb7ec('0xd6')]?_0x437ae1['Attachment'][_0xb7ec('0xe3')]:_0x437ae1[_0xb7ec('0x6f')],'direction':_0x437ae1[_0xb7ec('0xd7')]===_0xb7ec('0xe6')?'A':'C','secret':_0x437ae1[_0xb7ec('0xd8')],'read':_0x437ae1[_0xb7ec('0x7c')],'attachment':_0x437ae1[_0xb7ec('0xd6')]};})[_0xb7ec('0x65')]()};return ejs[_0xb7ec('0xe8')](path[_0xb7ec('0xd0')](config[_0xb7ec('0xcb')],_0xb7ec('0xce'),_0xb7ec('0xe9'),'downloadInteraction.ejs'),{'interaction':_0x52c33d})[_0xb7ec('0x29')](function(_0x1aecc8){var _0xea345=path[_0xb7ec('0xd0')](_0x87f794,'transcript-'+_0x1a3c16['id']+'-'+_0x35b76c+_0xb7ec('0xea'));var _0xf464ca={'path':_0xea345,'channel':_0xb7ec('0xeb'),'interactionId':_0x1a3c16['id']};return pdf[_0xb7ec('0xec')](_0x1aecc8,_0xf464ca);})['then'](function(){return new BPromise(function(_0x9570b3,_0x59378d){zipdir(_0x87f794,{'saveTo':_0x17fbf5},function(_0x54839b,_0x2b01fb){if(_0x54839b)return _0x59378d(_0x54839b);return _0x9570b3(_0x2b01fb);});})['then'](function(){return new BPromise(function(_0x4f9386,_0x5824a1){rimraf(_0x87f794,function(_0x5221cf){if(_0x5221cf)_0x5824a1(_0x5221cf);return _0x4f9386();});});})[_0xb7ec('0x29')](function(){return _0xa7370c[_0xb7ec('0xc9')](_0x17fbf5,_0x3d14ce,function(_0x290c55){if(_0x290c55){console[_0xb7ec('0xed')]('err',_0x290c55);}else{fs[_0xb7ec('0xee')](_0x17fbf5);}});});});}else{return _0xa7370c['sendStatus'](0xc8);}})[_0xb7ec('0x36')](handleError(_0xa7370c,null));};
\ No newline at end of file
+var _0xa8f3=['Tags','split','push','catch','waiting','talking','answered','total','closed','UserId','unmanaged','index','OpenchannelInteraction','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','order','where','pick','filters','select','field','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','from','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','buildExpression','text','start','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','body','some','compact','createdAt','parse','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','i.id','DESC','isEmpty','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.OpenchannelAccountId\x20IS\x20NULL','i.OpenchannelAccountId\x20IN\x20?','sequelize','toString','keyBy','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.*','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.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','rows','show','params','include','create','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','nolimit','sort','$gte','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','findAll','setTags','spread','Tag','color','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','format','transcript-%d-%s.zip','User','fullname','Contact','lastName','Attachment','Messages','direction','secret','OpenchannelAccount','Account','get','Openchannel','Owner','closedAt','disposition','Public','Private','basename','createReadStream','pipe','out','System','firstName','views','downloadInteraction.ejs','createPdfFromHTML','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','destroy','then','error','name','send','Users','map','TagIds'];(function(_0x4853fd,_0xed34b6){var _0x348c4b=function(_0x4dd299){while(--_0x4dd299){_0x4853fd['push'](_0x4853fd['shift']());}};_0x348c4b(++_0xed34b6);}(_0xa8f3,0xc1));var _0x3a8f=function(_0x403e13,_0x9cdd85){_0x403e13=_0x403e13-0x0;var _0x3ab111=_0xa8f3[_0x403e13];return _0x3ab111;};'use strict';var emlformat=require(_0x3a8f('0x0'));var rimraf=require(_0x3a8f('0x1'));var zipdir=require(_0x3a8f('0x2'));var jsonpatch=require(_0x3a8f('0x3'));var rp=require(_0x3a8f('0x4'));var moment=require(_0x3a8f('0x5'));var BPromise=require(_0x3a8f('0x6'));var Mustache=require(_0x3a8f('0x7'));var util=require(_0x3a8f('0x8'));var path=require(_0x3a8f('0x9'));var sox=require(_0x3a8f('0xa'));var csv=require(_0x3a8f('0xb'));var ejs=require(_0x3a8f('0xc'));var fs=require('fs');var fs_extra=require(_0x3a8f('0xd'));var _=require(_0x3a8f('0xe'));var squel=require(_0x3a8f('0xf'));var crypto=require('crypto');var jsforce=require(_0x3a8f('0x10'));var deskjs=require(_0x3a8f('0x11'));var toCsv=require(_0x3a8f('0xb'));var querystring=require(_0x3a8f('0x12'));var Papa=require(_0x3a8f('0x13'));var Redis=require(_0x3a8f('0x14'));var authService=require(_0x3a8f('0x15'));var qs=require(_0x3a8f('0x16'));var as=require(_0x3a8f('0x17'));var pdf=require(_0x3a8f('0x18'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3a8f('0x19'))('api');var utils=require(_0x3a8f('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0x3a8f('0x1b'));var db=require(_0x3a8f('0x1c'))['db'];config[_0x3a8f('0x1d')]=_[_0x3a8f('0x1e')](config['redis'],{'host':_0x3a8f('0x1f'),'port':0x18eb});var socket=require(_0x3a8f('0x20'))(new Redis(config[_0x3a8f('0x1d')]));require('./openchannelInteraction.socket')['register'](socket);function respondWithStatusCode(_0x4104b4,_0x9f0413){_0x9f0413=_0x9f0413||0xcc;return function(_0x3b5d1c){if(_0x3b5d1c){return _0x4104b4[_0x3a8f('0x21')](_0x9f0413);}return _0x4104b4[_0x3a8f('0x22')](_0x9f0413)[_0x3a8f('0x23')]();};}function respondWithResult(_0xdf06a6,_0x26efc2){_0x26efc2=_0x26efc2||0xc8;return function(_0x21695b){if(_0x21695b){return _0xdf06a6[_0x3a8f('0x22')](_0x26efc2)[_0x3a8f('0x24')](_0x21695b);}};}function respondWithFilteredResult(_0x30095f,_0x171060){return function(_0x375f80){if(_0x375f80){var _0xe06ae3=typeof _0x171060[_0x3a8f('0x25')]===_0x3a8f('0x26')&&typeof _0x171060[_0x3a8f('0x27')]===_0x3a8f('0x26');var _0x22a7e8=_0x375f80[_0x3a8f('0x28')];var _0x123aca=_0xe06ae3?0x0:_0x171060[_0x3a8f('0x25')];var _0x42e710=_0xe06ae3?_0x375f80['count']:_0x171060[_0x3a8f('0x25')]+_0x171060[_0x3a8f('0x27')];var _0x54bc56;if(_0x42e710>=_0x22a7e8){_0x42e710=_0x22a7e8;_0x54bc56=0xc8;}else{_0x54bc56=0xce;}_0x30095f[_0x3a8f('0x22')](_0x54bc56);return _0x30095f[_0x3a8f('0x29')](_0x3a8f('0x2a'),_0x123aca+'-'+_0x42e710+'/'+_0x22a7e8)[_0x3a8f('0x24')](_0x375f80);}return null;};}function patchUpdates(_0x34f5a4){return function(_0x1e07d6){try{jsonpatch[_0x3a8f('0x2b')](_0x1e07d6,_0x34f5a4,!![]);}catch(_0x3639da){return BPromise['reject'](_0x3639da);}return _0x1e07d6['save']();};}function saveUpdates(_0x5a3756,_0x5accdb){return function(_0x396b15){if(_0x396b15){return _0x396b15[_0x3a8f('0x2c')](_0x5a3756)['then'](function(_0x23eb08){return _0x23eb08;});}return null;};}function removeEntity(_0x1e165a,_0xfa7efe){return function(_0xa90b53){if(_0xa90b53){return _0xa90b53[_0x3a8f('0x2d')]()[_0x3a8f('0x2e')](function(){_0x1e165a[_0x3a8f('0x22')](0xcc)[_0x3a8f('0x23')]();});}};}function handleEntityNotFound(_0x38c66d,_0x5bdfed){return function(_0x1c65b1){if(!_0x1c65b1){_0x38c66d[_0x3a8f('0x21')](0x194);}return _0x1c65b1;};}function handleError(_0x3d6236,_0x2d4c2c){_0x2d4c2c=_0x2d4c2c||0x1f4;return function(_0x303292){logger[_0x3a8f('0x2f')](_0x303292['stack']);if(_0x303292[_0x3a8f('0x30')]){delete _0x303292[_0x3a8f('0x30')];}_0x3d6236[_0x3a8f('0x22')](_0x2d4c2c)[_0x3a8f('0x31')](_0x303292);};}function getInteractionUsers(_0x3c6488,_0x554c8e){return new BPromise(function(_0x4cf659,_0x5e092f){try{if(_0x554c8e[_0x3c6488['id']]){_0x3c6488[_0x3a8f('0x32')]=_[_0x3a8f('0x33')](_0x554c8e[_0x3c6488['id']],function(_0x2fcbbb){return{'id':_0x2fcbbb['id'],'fullname':_0x2fcbbb['fullname']};});}}catch(_0x13a9d4){_0x5e092f(_0x13a9d4);}_0x4cf659(_0x3c6488);});}function getInteractionTags(_0x3c9b33,_0x2925bc){return new BPromise(function(_0x5af623,_0x4bd5ff){try{if(_0x3c9b33[_0x3a8f('0x34')]){_0x3c9b33[_0x3a8f('0x35')]=[];_0x3c9b33[_0x3a8f('0x34')][_0x3a8f('0x36')](',')['forEach'](function(_0x559863){_0x3c9b33[_0x3a8f('0x35')][_0x3a8f('0x37')](_0x2925bc[_0x559863]);});}delete _0x3c9b33[_0x3a8f('0x34')];}catch(_0x1859ff){_0x4bd5ff(_0x1859ff);}_0x5af623(_0x3c9b33);});}function updateOpenchannelInteraction(_0x169675,_0x15ec3f,_0x24d933){return new BPromise(function(_0x1c5e6d,_0x456d10){return getInteractionUsers(_0x169675,_0x24d933)[_0x3a8f('0x2e')](function(_0x5228ed){return getInteractionTags(_0x5228ed,_0x15ec3f);})[_0x3a8f('0x2e')](function(_0x582551){return getStateInteraction(_0x582551);})[_0x3a8f('0x2e')](function(_0x5e341f){_0x1c5e6d(_0x5e341f);})[_0x3a8f('0x38')](function(_0x3becdd){_0x456d10(_0x3becdd);});});}function getStateInteraction(_0x26d10e){return new BPromise(function(_0xa61ecb,_0x556d8d){_0x26d10e[_0x3a8f('0x39')]=0x0;_0x26d10e[_0x3a8f('0x3a')]=0x0;_0x26d10e[_0x3a8f('0x3b')]=0x0;_0x26d10e['unmanaged']=0x0;_0x26d10e[_0x3a8f('0x3c')]=0x0;if(!_0x26d10e[_0x3a8f('0x3d')]&&!_0x26d10e[_0x3a8f('0x3e')])_0x26d10e[_0x3a8f('0x39')]+=0x1;if(!_0x26d10e[_0x3a8f('0x3d')]&&_0x26d10e[_0x3a8f('0x3e')])_0x26d10e[_0x3a8f('0x3a')]+=0x1;if(_0x26d10e[_0x3a8f('0x3d')]&&_0x26d10e[_0x3a8f('0x3e')])_0x26d10e['answered']+=0x1;if(_0x26d10e[_0x3a8f('0x3d')]&&!_0x26d10e[_0x3a8f('0x3e')])_0x26d10e[_0x3a8f('0x3f')]+=0x1;_0x26d10e[_0x3a8f('0x3c')]+=0x1;_0xa61ecb(_0x26d10e);});}exports[_0x3a8f('0x40')]=function(_0x3a0ed5,_0x35c6a9){var _0x266bb5={},_0x3acf5a={},_0x125349={'count':0x0,'rows':[]};var _0x2cb318=_['map'](db[_0x3a8f('0x41')][_0x3a8f('0x42')],function(_0x194390){return{'name':_0x194390[_0x3a8f('0x43')],'type':_0x194390[_0x3a8f('0x44')][_0x3a8f('0x45')]};});_0x3acf5a[_0x3a8f('0x46')]=_[_0x3a8f('0x33')](_0x2cb318,_0x3a8f('0x30'));_0x3acf5a['query']=_[_0x3a8f('0x47')](_0x3a0ed5[_0x3a8f('0x48')]);_0x3acf5a['filters']=_['intersection'](_0x3acf5a['model'],_0x3acf5a['query']);_0x266bb5[_0x3a8f('0x49')]=_[_0x3a8f('0x4a')](_0x3acf5a[_0x3a8f('0x46')],qs[_0x3a8f('0x4b')](_0x3a0ed5[_0x3a8f('0x48')][_0x3a8f('0x4b')]));_0x266bb5['attributes']=_0x266bb5[_0x3a8f('0x49')][_0x3a8f('0x4c')]?_0x266bb5[_0x3a8f('0x49')]:_0x3acf5a[_0x3a8f('0x46')];if(!_0x3a0ed5[_0x3a8f('0x48')][_0x3a8f('0x4d')]('nolimit')){_0x266bb5[_0x3a8f('0x27')]=qs['limit'](_0x3a0ed5[_0x3a8f('0x48')][_0x3a8f('0x27')]);_0x266bb5[_0x3a8f('0x25')]=qs[_0x3a8f('0x25')](_0x3a0ed5[_0x3a8f('0x48')][_0x3a8f('0x25')]);}_0x266bb5[_0x3a8f('0x4e')]=qs['sort'](_0x3a0ed5[_0x3a8f('0x48')]['sort']);_0x266bb5[_0x3a8f('0x4f')]=qs['filters'](_[_0x3a8f('0x50')](_0x3a0ed5[_0x3a8f('0x48')],_0x3acf5a[_0x3a8f('0x51')]),_0x2cb318);var _0x3af973=[];var _0x3d472e=squel[_0x3a8f('0x52')]()[_0x3a8f('0x53')]('id')[_0x3a8f('0x53')](_0x3a8f('0x30'))[_0x3a8f('0x53')]('color')['from'](_0x3a8f('0x54'));var _0x467a85=squel[_0x3a8f('0x52')]()[_0x3a8f('0x53')](_0x3a8f('0x55'))[_0x3a8f('0x53')](_0x3a8f('0x56'))[_0x3a8f('0x53')](_0x3a8f('0x57'))[_0x3a8f('0x58')](_0x3a8f('0x59'),'ui')[_0x3a8f('0x5a')](_0x3a8f('0x5b'),'u',_0x3a8f('0x5c'));var _0x106b87=squel[_0x3a8f('0x52')]()['from'](_0x3a8f('0x5d'),'i')[_0x3a8f('0x5a')](_0x3a8f('0x5e'),'c',_0x3a8f('0x5f'))[_0x3a8f('0x5a')](_0x3a8f('0x5b'),'o',_0x3a8f('0x60'))[_0x3a8f('0x5a')]('openchannel_accounts','a',_0x3a8f('0x61'))[_0x3a8f('0x5a')](_0x3a8f('0x62'),'me',_0x3a8f('0x63'))[_0x3a8f('0x5a')](_0x3a8f('0x64'),'it',_0x3a8f('0x65'))[_0x3a8f('0x5a')](_0x3a8f('0x54'),'t','t.id\x20=\x20it.TagId');var _0x369b1c=squel[_0x3a8f('0x66')]();var _0x5b066a=[];var _0x498b17=squel[_0x3a8f('0x66')]();var _0x1eae9f;if(_0x3a0ed5[_0x3a8f('0x48')][_0x3a8f('0x67')]){_0x1eae9f=as[_0x3a8f('0x68')](_0x3a0ed5[_0x3a8f('0x48')][_0x3a8f('0x67')]);var _0x122331=_0x1eae9f[_0x3a8f('0x69')];for(var _0x5d0a17=0x0;_0x5d0a17<_0x1eae9f[_0x3a8f('0x6a')][_0x3a8f('0x4c')];_0x5d0a17++){var _0x186be0=_0x1eae9f[_0x3a8f('0x6a')][_0x5d0a17];var _0x2e7552='i';var _0x4dd5ea=_[_0x3a8f('0x6b')](_0x2cb318,[_0x3a8f('0x30'),_0x186be0[_0x3a8f('0x53')]]);if(!_0x4dd5ea){switch(_0x186be0[_0x3a8f('0x53')]){case _0x3a8f('0x6c'):if(_0x186be0[_0x3a8f('0x6d')]==0x1){_0x106b87['having']('`'+_0x186be0[_0x3a8f('0x53')]+_0x3a8f('0x6e'));}else{_0x106b87[_0x3a8f('0x6f')]('`'+_0x186be0[_0x3a8f('0x53')]+_0x3a8f('0x70'));}break;case'Contact':if(_0x186be0[_0x3a8f('0x71')]===_0x3a8f('0x72')){if(_0x186be0[_0x3a8f('0x6d')][_0x3a8f('0x36')]('\x20')[_0x3a8f('0x4c')]>0x1){_0x369b1c[_0x122331](_0x3a8f('0x73'),qs['getFullTextValue'](_0x186be0[_0x3a8f('0x6d')]),null);}else{var _0x3e1b7a='%'+_0x186be0[_0x3a8f('0x6d')]+'%';_0x369b1c[_0x122331]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x3e1b7a,_0x3e1b7a,_0x3e1b7a);}}else{_0x4dd5ea=_[_0x3a8f('0x6b')](_0x2cb318,[_0x3a8f('0x30'),'ContactId']);_0x186be0['field']=_0x3a8f('0x74');_0x1ff08a=as[_0x3a8f('0x75')](_0x2e7552,_0x4dd5ea['type'],_0x186be0);_0x369b1c[_0x122331](_0x1ff08a[_0x3a8f('0x76')],_0x1ff08a[_0x3a8f('0x6d')][_0x3a8f('0x77')],_0x1ff08a[_0x3a8f('0x6d')][_0x3a8f('0x23')]);}break;case'Tag':var _0xcc7224=_0x186be0[_0x3a8f('0x6d')][_0x3a8f('0x36')](',')[_0x3a8f('0x33')](function(_0x49f070){return Number(_0x49f070);});_0xcc7224[_0x3a8f('0x78')](function(_0x261ad9){_0x498b17['or'](_0x3a8f('0x79'),'%,'+_0x261ad9+',%');});_0x5b066a=_[_0x3a8f('0x7a')](_0x5b066a,_0xcc7224);break;case'User':if(_0x186be0['operator']===_0x3a8f('0x72')){_0x369b1c[_0x122331]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x186be0[_0x3a8f('0x6d')]+'%',null);}else{_0x4dd5ea=_[_0x3a8f('0x6b')](_0x2cb318,[_0x3a8f('0x30'),_0x3a8f('0x3e')]);_0x186be0['field']='UserId';_0x1ff08a=as[_0x3a8f('0x75')](_0x2e7552,_0x4dd5ea[_0x3a8f('0x44')],_0x186be0);_0x369b1c[_0x122331](_0x1ff08a['text'],_0x1ff08a[_0x3a8f('0x6d')][_0x3a8f('0x77')],_0x1ff08a['value'][_0x3a8f('0x23')]);}break;case _0x3a8f('0x7b'):_0x1ff08a=as[_0x3a8f('0x75')]('me',null,_0x186be0);_0x369b1c[_0x122331](_0x1ff08a[_0x3a8f('0x76')],_0x1ff08a[_0x3a8f('0x6d')][_0x3a8f('0x77')],_0x1ff08a[_0x3a8f('0x6d')][_0x3a8f('0x23')]);break;}}else{var _0x1ff08a=as[_0x3a8f('0x75')](_0x2e7552,_0x4dd5ea[_0x3a8f('0x44')],_0x186be0);_0x369b1c[_0x122331](_0x1ff08a['text'],_0x1ff08a['value'][_0x3a8f('0x77')],_0x1ff08a[_0x3a8f('0x6d')]['end']);}}}else{var _0x10b90f=_(_0x3a0ed5[_0x3a8f('0x48')])[_0x3a8f('0x47')]()[_0x3a8f('0x33')](function(_0x198c22){return _[_0x3a8f('0x7c')](_0x2cb318,[_0x3a8f('0x30'),_0x198c22])?_0x198c22:undefined;})[_0x3a8f('0x7d')]()[_0x3a8f('0x6d')]();if(!_['isEmpty'](_0x10b90f)){_0x10b90f[_0x3a8f('0x78')](function(_0x1d9c60){if(_0x1d9c60==='OpenchannelAccountId'){_0x106b87[_0x3a8f('0x4f')]('i.OpenchannelAccountId\x20IN\x20?',[]['concat'](_0x3a0ed5[_0x3a8f('0x48')][_0x1d9c60]));}else if(_0x1d9c60===_0x3a8f('0x7e')){var _0x2ffe6a=JSON[_0x3a8f('0x7f')](_0x3a0ed5[_0x3a8f('0x48')][_0x1d9c60])['$gte'];var _0x2de5d8=JSON[_0x3a8f('0x7f')](_0x3a0ed5[_0x3a8f('0x48')][_0x1d9c60])['$lte'];_0x106b87['where'](_0x3a8f('0x80'),_0x2ffe6a,_0x2de5d8);}else{if(_0x3a0ed5['query'][_0x1d9c60]===_0x3a8f('0x81')){_0x106b87[_0x3a8f('0x4f')]('i.'+_0x1d9c60+'\x20IS\x20NULL');}else{_0x106b87[_0x3a8f('0x4f')]('i.'+_0x1d9c60+_0x3a8f('0x82'),_0x3a0ed5[_0x3a8f('0x48')][_0x1d9c60]);}}});}if(_0x3a0ed5[_0x3a8f('0x48')][_0x3a8f('0x83')]){if(_0x3a0ed5[_0x3a8f('0x48')]['read']==0x1){_0x106b87['having'](_0x3a8f('0x84'));}else{_0x106b87[_0x3a8f('0x6f')](_0x3a8f('0x85'));}}if(_0x3a0ed5[_0x3a8f('0x48')][_0x3a8f('0x86')]){_0x5b066a=_['isArray'](_0x3a0ed5[_0x3a8f('0x48')]['tag'])?_0x3a0ed5[_0x3a8f('0x48')][_0x3a8f('0x86')]:new Array(_0x3a0ed5[_0x3a8f('0x48')][_0x3a8f('0x86')]);_0x5b066a[_0x3a8f('0x78')](function(_0x31d978){_0x498b17['or'](_0x3a8f('0x79'),'%,'+_0x31d978+',%');});}if(_0x3a0ed5['query']['filter']){var _0x4b8acf=_0x3a0ed5[_0x3a8f('0x48')][_0x3a8f('0x87')][_0x3a8f('0x88')]('\x5c','\x5c\x5c')[_0x3a8f('0x88')](/'/g,'\x27\x27');if(qs[_0x3a8f('0x89')](_0x4b8acf)){_0x369b1c['or'](_0x3a8f('0x8a'),_0x4b8acf+'%');}else{_0x369b1c['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x4b8acf))['or'](_0x3a8f('0x8b'),_0x4b8acf+'%')['or'](_0x3a8f('0x8c'),_0x4b8acf+'%');}}}_0x106b87[_0x3a8f('0x4f')](_0x369b1c);_0x106b87[_0x3a8f('0x8d')]('i.id');var _0x278979={'type':db[_0x3a8f('0x8e')][_0x3a8f('0x8f')][_0x3a8f('0x90')],'raw':!![]};var _0x221b30=_0x106b87[_0x3a8f('0x91')]();_0x221b30[_0x3a8f('0x53')](_0x3a8f('0x92'));_0x221b30[_0x3a8f('0x53')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x3a8f('0x6c'));if(_0x266bb5[_0x3a8f('0x4e')]){_0x266bb5[_0x3a8f('0x4e')][_0x3a8f('0x78')](function(_0x43c9b5){var _0x35c783=_0x43c9b5[0x0]==='contactName'?_0x43c9b5[0x0]:'i.'+_0x43c9b5[0x0];_0x106b87[_0x3a8f('0x4e')](_0x35c783,_0x43c9b5[0x1]===_0x3a8f('0x93')?![]:!![]);});}if(!_[_0x3a8f('0x94')](_0x5b066a)){_0x106b87['having'](_0x498b17);_0x221b30[_0x3a8f('0x4f')]('t.id\x20IN\x20?',_0x5b066a);}BPromise['resolve']()[_0x3a8f('0x2e')](function(){if(!_0x1eae9f){if(_0x3a0ed5[_0x3a8f('0x48')]['OpenchannelAccountId'])return;_0x221b30[_0x3a8f('0x4f')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');_0x106b87[_0x3a8f('0x4f')](_0x3a8f('0x95'));return;}if(_0x3a0ed5[_0x3a8f('0x96')][_0x3a8f('0x97')]!==_0x3a8f('0x98'))return;return _0x3a0ed5[_0x3a8f('0x96')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})[_0x3a8f('0x2e')](function(_0x314f7f){if(_[_0x3a8f('0x94')](_0x314f7f)){_0x221b30[_0x3a8f('0x4f')](_0x3a8f('0x99'));_0x106b87[_0x3a8f('0x4f')](_0x3a8f('0x99'));}else{_0x221b30[_0x3a8f('0x4f')](_0x3a8f('0x9a'),_[_0x3a8f('0x33')](_0x314f7f,'id'));_0x106b87[_0x3a8f('0x4f')]('i.OpenchannelAccountId\x20IN\x20?',_['map'](_0x314f7f,'id'));}});})['then'](function(){if(_0x3a0ed5[_0x3a8f('0x96')]['role']===_0x3a8f('0x98')&&!_0x1eae9f&&!_0x3a0ed5[_0x3a8f('0x48')]['OpenchannelAccountId'])return[];return db[_0x3a8f('0x9b')][_0x3a8f('0x48')](_0x221b30[_0x3a8f('0x9c')](),_0x278979);})[_0x3a8f('0x2e')](function(_0x44477b){_0x125349[_0x3a8f('0x28')]=_0x44477b[_0x3a8f('0x4c')];if(_0x125349[_0x3a8f('0x28')]===0x0)return[];return db['sequelize']['query'](_0x3d472e[_0x3a8f('0x9c')](),_0x278979)[_0x3a8f('0x2e')](function(_0x55d4f3){_0x3af973=_[_0x3a8f('0x9d')](_0x55d4f3,'id');_0x278979=_[_0x3a8f('0x9e')](_0x278979,{'model':db[_0x3a8f('0x41')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3a0ed5['query'][_0x3a8f('0x4b')]){_0x266bb5['attributes']['forEach'](function(_0x61ff72){_0x106b87[_0x3a8f('0x53')]('i.'+_0x61ff72);});}else{_0x106b87['field'](_0x3a8f('0x9f'),_0x3a8f('0x6c'));_0x106b87[_0x3a8f('0x53')](_0x3a8f('0xa0'),'Account.key');_0x106b87[_0x3a8f('0x53')](_0x3a8f('0xa1'),_0x3a8f('0xa2'));_0x106b87[_0x3a8f('0x53')]('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');_0x106b87[_0x3a8f('0x53')](_0x3a8f('0xa3'));_0x106b87[_0x3a8f('0x53')](_0x3a8f('0xa4'),_0x3a8f('0xa5'));_0x106b87[_0x3a8f('0x53')](_0x3a8f('0xa6'),_0x3a8f('0xa7'));_0x106b87['field'](_0x3a8f('0xa8'),_0x3a8f('0xa9'));_0x106b87[_0x3a8f('0x53')]('c.phone',_0x3a8f('0xaa'));_0x106b87[_0x3a8f('0x53')](_0x3a8f('0xab'),_0x3a8f('0xac'));_0x106b87[_0x3a8f('0x53')](_0x3a8f('0xad'),_0x3a8f('0xae'));_0x106b87[_0x3a8f('0x53')](_0x3a8f('0xaf'),_0x3a8f('0xb0'));_0x106b87['field'](_0x3a8f('0xb1'),_0x3a8f('0xb2'));_0x106b87[_0x3a8f('0x53')](_0x3a8f('0xb3'),'TagIds');}if(_0x266bb5[_0x3a8f('0x27')])_0x106b87['limit'](_0x266bb5['limit']);if(_0x266bb5[_0x3a8f('0x25')])_0x106b87[_0x3a8f('0x25')](_0x266bb5[_0x3a8f('0x25')]);return db[_0x3a8f('0x9b')][_0x3a8f('0x48')](_0x106b87[_0x3a8f('0x9c')](),_0x278979);})[_0x3a8f('0x2e')](function(_0x80f89a){if(_0x80f89a[_0x3a8f('0x4c')]>0x0)_0x467a85[_0x3a8f('0x4f')](_0x3a8f('0xb4'),_[_0x3a8f('0x33')](_0x80f89a,'id'));return db['sequelize']['query'](_0x467a85[_0x3a8f('0x9c')](),_0x278979)[_0x3a8f('0x2e')](function(_0x2a8360){var _0x1b23d5=_[_0x3a8f('0xb5')](_0x2a8360,_0x3a8f('0xb6'));var _0x3072f4=[];_0x80f89a[_0x3a8f('0x78')](function(_0x474b0d){_0x3072f4[_0x3a8f('0x37')](updateOpenchannelInteraction(_0x474b0d,_0x3af973,_0x1b23d5));});return BPromise[_0x3a8f('0xb7')](_0x3072f4);});});})[_0x3a8f('0x2e')](function(_0x11f3b1){_0x125349[_0x3a8f('0xb8')]=_0x11f3b1;return _0x125349;})['then'](respondWithFilteredResult(_0x35c6a9,_0x266bb5))['catch'](handleError(_0x35c6a9,null));};exports[_0x3a8f('0xb9')]=function(_0x1edd14,_0x1d3ce9){var _0x48b28a={};if(_0x1edd14[_0x3a8f('0x48')][_0x3a8f('0x44')]&&_0x1edd14['query']['type']===_0x3a8f('0x58')){_0x48b28a['from']=_0x1edd14['params']['id'];}else{_0x48b28a['id']=_0x1edd14[_0x3a8f('0xba')]['id'];}var _0x15bab6={'raw':![],'where':_0x48b28a},_0x205c97={};_0x205c97['model']=_[_0x3a8f('0x47')](db[_0x3a8f('0x41')]['rawAttributes']);_0x205c97[_0x3a8f('0x48')]=_[_0x3a8f('0x47')](_0x1edd14[_0x3a8f('0x48')]);_0x205c97[_0x3a8f('0x51')]=_[_0x3a8f('0x4a')](_0x205c97[_0x3a8f('0x46')],_0x205c97['query']);_0x15bab6[_0x3a8f('0x49')]=_[_0x3a8f('0x4a')](_0x205c97[_0x3a8f('0x46')],qs[_0x3a8f('0x4b')](_0x1edd14['query'][_0x3a8f('0x4b')]));_0x15bab6['attributes']=_0x15bab6[_0x3a8f('0x49')]['length']?_0x15bab6[_0x3a8f('0x49')]:_0x205c97['model'];if(_0x1edd14[_0x3a8f('0x48')]['includeAll']){_0x15bab6[_0x3a8f('0xbb')]=[{'all':!![]}];}_0x15bab6=_[_0x3a8f('0x9e')]({},_0x15bab6,_0x1edd14['options']);return db[_0x3a8f('0x41')][_0x3a8f('0x6b')](_0x15bab6)[_0x3a8f('0x2e')](handleEntityNotFound(_0x1d3ce9,null))[_0x3a8f('0x2e')](respondWithResult(_0x1d3ce9,null))[_0x3a8f('0x38')](handleError(_0x1d3ce9,null));};exports['create']=function(_0x5a3dc7,_0x2ba457){return db[_0x3a8f('0x41')][_0x3a8f('0xbc')](_0x5a3dc7[_0x3a8f('0x7b')],{})['then'](respondWithResult(_0x2ba457,0xc9))[_0x3a8f('0x38')](handleError(_0x2ba457,null));};exports[_0x3a8f('0x2c')]=function(_0x1879a5,_0x546a0c){if(_0x1879a5[_0x3a8f('0x7b')]['id']){delete _0x1879a5[_0x3a8f('0x7b')]['id'];}return db['OpenchannelInteraction'][_0x3a8f('0x6b')]({'where':{'id':_0x1879a5[_0x3a8f('0xba')]['id']}})[_0x3a8f('0x2e')](handleEntityNotFound(_0x546a0c,null))[_0x3a8f('0x2e')](saveUpdates(_0x1879a5['body'],null))['then'](respondWithResult(_0x546a0c,null))[_0x3a8f('0x38')](handleError(_0x546a0c,null));};exports[_0x3a8f('0x2d')]=function(_0x2ac2bd,_0xb3eb6d){return db[_0x3a8f('0x41')][_0x3a8f('0x6b')]({'where':{'id':_0x2ac2bd[_0x3a8f('0xba')]['id']}})['then'](handleEntityNotFound(_0xb3eb6d,null))[_0x3a8f('0x2e')](removeEntity(_0xb3eb6d,null))[_0x3a8f('0x38')](handleError(_0xb3eb6d,null));};exports[_0x3a8f('0xbd')]=function(_0x388e1d,_0x24364b){return db[_0x3a8f('0x41')][_0x3a8f('0xbd')]()[_0x3a8f('0x2e')](respondWithResult(_0x24364b,null))[_0x3a8f('0x38')](handleError(_0x24364b,null));};exports[_0x3a8f('0xbe')]=function(_0xbd9f1f,_0x570df7,_0x33e063){return db[_0x3a8f('0xbf')][_0x3a8f('0x6b')]({'where':{'id':_0xbd9f1f[_0x3a8f('0xba')]['id']}})[_0x3a8f('0x2e')](handleEntityNotFound(_0x570df7,null))[_0x3a8f('0x2e')](function(_0xa918c){if(_0xa918c){return _0xa918c['addMessage'](_0xbd9f1f[_0x3a8f('0x7b')][_0x3a8f('0xc0')],_[_0x3a8f('0xc1')](_0xbd9f1f[_0x3a8f('0x7b')],[_0x3a8f('0xc0'),'id'])||{});}})[_0x3a8f('0x2e')](respondWithResult(_0x570df7,null))['catch'](handleError(_0x570df7,null));};exports[_0x3a8f('0xc2')]=function(_0x47f474,_0x484b30,_0x47e132){var _0x3d4ecd={'raw':![],'where':{}};var _0x3df8bb={};var _0x46189f={'count':0x0,'rows':[]};return db[_0x3a8f('0x41')]['findOne']({'where':{'id':_0x47f474[_0x3a8f('0xba')]['id']}})[_0x3a8f('0x2e')](handleEntityNotFound(_0x484b30,null))[_0x3a8f('0x2e')](function(_0x196a7b){if(_0x196a7b){_0x3df8bb[_0x3a8f('0x46')]=_[_0x3a8f('0x47')](db[_0x3a8f('0xbf')]['rawAttributes']);_0x3df8bb[_0x3a8f('0x48')]=_['keys'](_0x47f474[_0x3a8f('0x48')]);_0x3df8bb[_0x3a8f('0x51')]=_[_0x3a8f('0x4a')](_0x3df8bb[_0x3a8f('0x46')],_0x3df8bb[_0x3a8f('0x48')]);_0x3d4ecd[_0x3a8f('0x49')]=_[_0x3a8f('0x4a')](_0x3df8bb['model'],qs[_0x3a8f('0x4b')](_0x47f474[_0x3a8f('0x48')][_0x3a8f('0x4b')]));_0x3d4ecd[_0x3a8f('0x49')]=_0x3d4ecd[_0x3a8f('0x49')][_0x3a8f('0x4c')]?_0x3d4ecd[_0x3a8f('0x49')]:_0x3df8bb[_0x3a8f('0x46')];if(!_0x47f474[_0x3a8f('0x48')][_0x3a8f('0x4d')](_0x3a8f('0xc3'))){_0x3d4ecd[_0x3a8f('0x27')]=qs[_0x3a8f('0x27')](_0x47f474[_0x3a8f('0x48')][_0x3a8f('0x27')]);_0x3d4ecd[_0x3a8f('0x25')]=qs[_0x3a8f('0x25')](_0x47f474[_0x3a8f('0x48')]['offset']);}_0x3d4ecd['order']=qs['sort'](_0x47f474[_0x3a8f('0x48')][_0x3a8f('0xc4')]);_0x3d4ecd[_0x3a8f('0x4f')]=qs[_0x3a8f('0x51')](_[_0x3a8f('0x50')](_0x47f474[_0x3a8f('0x48')],_0x3df8bb[_0x3a8f('0x51')]));_0x3d4ecd[_0x3a8f('0x4f')][_0x3a8f('0xb6')]=_0x196a7b['id'];if(_0x47f474[_0x3a8f('0x48')]['filter']){_0x3d4ecd[_0x3a8f('0x4f')]=_[_0x3a8f('0x9e')](_0x3d4ecd[_0x3a8f('0x4f')],{'$or':_[_0x3a8f('0x33')](_0x3d4ecd['attributes'],function(_0x2506cb){var _0x43913d={};_0x43913d[_0x2506cb]={'$like':'%'+_0x47f474[_0x3a8f('0x48')][_0x3a8f('0x87')]+'%'};return _0x43913d;})});}if(_0x47f474[_0x3a8f('0x48')][_0x3a8f('0xc5')]){var _0x24bbf2=_0x47f474[_0x3a8f('0x48')][_0x3a8f('0xc5')][_0x3a8f('0x36')](',');var _0x424cbc={};_0x424cbc[_0x24bbf2[0x0]]={'$gte':moment(_0x24bbf2[0x1])['format'](_0x3a8f('0xc6'))};_0x3d4ecd['where']=_[_0x3a8f('0x9e')](_0x3d4ecd[_0x3a8f('0x4f')],_0x424cbc);}_0x3d4ecd=_[_0x3a8f('0x9e')]({},_0x3d4ecd,_0x47f474[_0x3a8f('0xc7')]);return db[_0x3a8f('0xbf')][_0x3a8f('0x28')]({'where':_0x3d4ecd['where']})['then'](function(_0x121fc1){_0x46189f[_0x3a8f('0x28')]=_0x121fc1;if(_0x47f474['query'][_0x3a8f('0xc8')]){_0x3d4ecd['include']=[{'all':!![]}];}return db[_0x3a8f('0xbf')][_0x3a8f('0xc9')](_0x3d4ecd);})[_0x3a8f('0x2e')](function(_0x4f30cf){_0x46189f['rows']=_0x4f30cf;return _0x46189f;});}})[_0x3a8f('0x2e')](respondWithFilteredResult(_0x484b30,_0x3d4ecd))[_0x3a8f('0x38')](handleError(_0x484b30,null));};exports['addTags']=function(_0x4a56f3,_0x186a7c,_0x41ae1a){return db[_0x3a8f('0x41')][_0x3a8f('0x6b')]({'where':{'id':_0x4a56f3[_0x3a8f('0xba')]['id']}})['then'](handleEntityNotFound(_0x186a7c,null))[_0x3a8f('0x2e')](function(_0x1830d0){if(_0x1830d0){return _0x1830d0[_0x3a8f('0xca')](_0x4a56f3[_0x3a8f('0x7b')][_0x3a8f('0xc0')],_[_0x3a8f('0xc1')](_0x4a56f3[_0x3a8f('0x7b')],[_0x3a8f('0xc0'),'id'])||{})[_0x3a8f('0xcb')](function(){return db[_0x3a8f('0xcc')][_0x3a8f('0xc9')]({'attributes':['id',_0x3a8f('0x30'),_0x3a8f('0xcd')],'where':{'id':_0x4a56f3['body'][_0x3a8f('0xc0')]}});})['then'](function(_0x39895d){socket[_0x3a8f('0xce')](_0x3a8f('0xcf'),{'id':Number(_0x4a56f3[_0x3a8f('0xba')]['id']),'tags':_0x39895d||[]});return{'id':Number(_0x4a56f3[_0x3a8f('0xba')]['id']),'tags':_0x39895d||[]};});}})['then'](respondWithResult(_0x186a7c,null))[_0x3a8f('0x38')](handleError(_0x186a7c,null));};exports[_0x3a8f('0xd0')]=function(_0x3c9d68,_0x51456e,_0x21fe89){return db['OpenchannelInteraction'][_0x3a8f('0x6b')]({'where':{'id':_0x3c9d68[_0x3a8f('0xba')]['id']}})[_0x3a8f('0x2e')](handleEntityNotFound(_0x51456e,null))[_0x3a8f('0x2e')](function(_0x199c7a){if(_0x199c7a){return _0x199c7a[_0x3a8f('0xd0')](_0x3c9d68['query']['ids']);}})[_0x3a8f('0x2e')](respondWithStatusCode(_0x51456e,null))[_0x3a8f('0x38')](handleError(_0x51456e,null));};exports[_0x3a8f('0xd1')]=function(_0x24f434,_0x2160ca){var _0x4a3dda=moment()[_0x3a8f('0xd2')]()[_0x3a8f('0x9c')]();var _0x15408d=path[_0x3a8f('0xd3')](config[_0x3a8f('0xd4')],_0x3a8f('0xd5'),_0x3a8f('0xd6'),_0x3a8f('0xd7'));var _0x47f9cc=path[_0x3a8f('0xd3')](config[_0x3a8f('0xd4')],_0x3a8f('0xd5'),'files',_0x3a8f('0xd8'));var _0x29cfeb=path[_0x3a8f('0xd3')](_0x15408d,_0x4a3dda);var _0x3f8f7a=util[_0x3a8f('0xd9')](_0x3a8f('0xda'),_0x24f434[_0x3a8f('0xba')]['id'],_0x4a3dda);var _0x2570cc=path[_0x3a8f('0xd3')](_0x15408d,_0x3f8f7a);var _0x4e77e3=[];_0x4e77e3[_0x3a8f('0x37')]({'model':db[_0x3a8f('0xdb')],'as':'User','attributes':['id',_0x3a8f('0xdc')],'raw':!![]});_0x4e77e3[_0x3a8f('0x37')]({'model':db['CmContact'],'as':_0x3a8f('0xdd'),'attributes':['id','firstName',_0x3a8f('0xde')],'raw':!![]});if(_0x24f434['query'][_0x3a8f('0xd8')]){_0x4e77e3['push']({'model':db[_0x3a8f('0xdf')],'as':_0x3a8f('0xdf'),'raw':!![]});}var _0x4f31d8=[{'model':db['OpenchannelMessage'],'as':_0x3a8f('0xe0'),'attributes':['id',_0x3a8f('0x7b'),_0x3a8f('0x7e'),_0x3a8f('0xe1'),_0x3a8f('0xe2'),_0x3a8f('0x83')],'include':_0x4e77e3}];_0x4f31d8[_0x3a8f('0x37')]({'model':db[_0x3a8f('0xe3')],'as':_0x3a8f('0xe4'),'attributes':['id',_0x3a8f('0x30')]});_0x4f31d8[_0x3a8f('0x37')]({'model':db[_0x3a8f('0xdb')],'as':'Owner','attributes':['id',_0x3a8f('0xdc')]});return db[_0x3a8f('0x41')][_0x3a8f('0x6b')]({'where':{'id':_0x24f434[_0x3a8f('0xba')]['id']},'include':_0x4f31d8})[_0x3a8f('0x2e')](handleEntityNotFound(_0x2160ca,null))[_0x3a8f('0x2e')](function(_0x2fe4a6){if(_0x2fe4a6){var _0x5a2ba7=_0x2fe4a6[_0x3a8f('0xe5')]({'plain':!![]});fs['mkdirSync'](_0x29cfeb);var _0x7b6f6a={'channel':_0x3a8f('0xe6'),'account':_0x5a2ba7[_0x3a8f('0xe4')]['name'],'agent':_0x5a2ba7[_0x3a8f('0xe7')]?_0x5a2ba7[_0x3a8f('0xe7')]['fullname']:'N.A.','createdAt':moment(_0x5a2ba7[_0x3a8f('0x7e')])[_0x3a8f('0xd9')](_0x3a8f('0xc6'))[_0x3a8f('0x9c')](),'closedAt':_0x5a2ba7[_0x3a8f('0x3d')]?moment(_0x5a2ba7[_0x3a8f('0xe8')])[_0x3a8f('0xd9')](_0x3a8f('0xc6'))[_0x3a8f('0x9c')]():'','disposition':_0x5a2ba7[_0x3a8f('0xe9')],'visibility':_0x5a2ba7['threadId']?_0x3a8f('0xea'):_0x3a8f('0xeb'),'messages':_(_0x5a2ba7[_0x3a8f('0xe0')])[_0x3a8f('0x87')]({'secret':![]})[_0x3a8f('0x33')](function(_0x3bca74){if(_0x3bca74['Attachment']){var _0x191456=path['join'](_0x47f9cc,_0x3bca74['Attachment'][_0x3a8f('0xec')]);if(fs['existsSync'](_0x191456)){fs[_0x3a8f('0xed')](_0x191456)[_0x3a8f('0xee')](fs['createWriteStream'](path[_0x3a8f('0xd3')](_0x29cfeb,_0x3bca74[_0x3a8f('0xdf')][_0x3a8f('0xec')])));}}return{'date':moment(_0x3bca74[_0x3a8f('0x7e')])[_0x3a8f('0xd9')](_0x3a8f('0xc6'))[_0x3a8f('0x9c')](),'sender':_0x3bca74[_0x3a8f('0xe1')]===_0x3a8f('0xef')?_0x3bca74[_0x3a8f('0xdb')]?_0x3bca74[_0x3a8f('0xdb')]['fullname']:_0x3a8f('0xf0'):_0x3bca74['Contact'][_0x3a8f('0xf1')]+(_0x3bca74[_0x3a8f('0xdd')]['lastName']?'\x20'+_0x3bca74[_0x3a8f('0xdd')][_0x3a8f('0xde')]:''),'body':_0x3bca74[_0x3a8f('0xdf')]?_0x3bca74[_0x3a8f('0xdf')][_0x3a8f('0xec')]:_0x3bca74['body'],'direction':_0x3bca74[_0x3a8f('0xe1')]===_0x3a8f('0xef')?'A':'C','secret':_0x3bca74[_0x3a8f('0xe2')],'read':_0x3bca74[_0x3a8f('0x83')],'attachment':_0x3bca74[_0x3a8f('0xdf')]};})[_0x3a8f('0x6d')]()};return ejs['renderFile'](path[_0x3a8f('0xd3')](config[_0x3a8f('0xd4')],'server',_0x3a8f('0xf2'),_0x3a8f('0xf3')),{'interaction':_0x7b6f6a})[_0x3a8f('0x2e')](function(_0x3e4bde){var _0x18bde0=path['join'](_0x29cfeb,'transcript-'+_0x5a2ba7['id']+'-'+_0x4a3dda+'.pdf');var _0x42b68e={'path':_0x18bde0,'channel':_0x3a8f('0xe6'),'interactionId':_0x5a2ba7['id']};return pdf[_0x3a8f('0xf4')](_0x3e4bde,_0x42b68e);})[_0x3a8f('0x2e')](function(){return new BPromise(function(_0x5ea208,_0xd5df6){zipdir(_0x29cfeb,{'saveTo':_0x2570cc},function(_0x782a88,_0x34b79b){if(_0x782a88)return _0xd5df6(_0x782a88);return _0x5ea208(_0x34b79b);});})[_0x3a8f('0x2e')](function(){return new BPromise(function(_0xb66d2d,_0x502269){rimraf(_0x29cfeb,function(_0x3b2afb){if(_0x3b2afb)_0x502269(_0x3b2afb);return _0xb66d2d();});});})['then'](function(){return _0x2160ca[_0x3a8f('0xd1')](_0x2570cc,_0x3f8f7a,function(_0x5212ac){if(_0x5212ac){console['log']('err',_0x5212ac);}else{fs[_0x3a8f('0xf5')](_0x2570cc);}});});});}else{return _0x2160ca[_0x3a8f('0x21')](0xc8);}})[_0x3a8f('0x38')](handleError(_0x2160ca,null));};
\ No newline at end of file
index 5a3fca8..bebf91c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6553=['exports','events','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook'];(function(_0x442f02,_0x47d845){var _0xab6ef1=function(_0x4cad5c){while(--_0x4cad5c){_0x442f02['push'](_0x442f02['shift']());}};_0xab6ef1(++_0x47d845);}(_0x6553,0x131));var _0x3655=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x6553[_0x5b644e];return _0x49c6bf;};'use strict';var EventEmitter=require(_0x3655('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db'][_0x3655('0x1')];var OpenchannelMessage=require('../../mysqldb')['db'][_0x3655('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x3655('0x3')](0x0);var events={'afterCreate':_0x3655('0x4'),'afterUpdate':_0x3655('0x5'),'afterDestroy':_0x3655('0x6')};function emitEvent(_0x249ac4){return function(_0x2289c7,_0x25326e,_0x17e94b){_0x2289c7[_0x3655('0x7')]({'attributes':['id'],'raw':!![]})[_0x3655('0x8')](function(_0x50dc60){_0x2289c7[_0x3655('0x9')](_0x3655('0xa'),_0x50dc60['map'](function(_0xc27b0d){return{'id':_0xc27b0d['id']};}));return OpenchannelMessage[_0x3655('0xb')]({'where':{'OpenchannelInteractionId':_0x2289c7['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x5deb5c){_0x2289c7[_0x3655('0x9')](_0x3655('0xc'),_0x5deb5c[_0x3655('0xd')]);OpenchannelInteractionEvents[_0x3655('0xe')](_0x249ac4+':'+_0x2289c7['id'],_0x2289c7);OpenchannelInteractionEvents[_0x3655('0xe')](_0x249ac4,_0x2289c7);_0x17e94b(null);})[_0x3655('0xf')](_0x17e94b(null));};}for(var e in events){if(events[_0x3655('0x10')](e)){var event=events[e];OpenchannelInteraction[_0x3655('0x11')](e,emitEvent(event));}}module[_0x3655('0x12')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xb9f6=['events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','unreadMessages','emit','catch','hasOwnProperty','hook','exports'];(function(_0x215361,_0x3193ce){var _0x19a352=function(_0x45ef6c){while(--_0x45ef6c){_0x215361['push'](_0x215361['shift']());}};_0x19a352(++_0x3193ce);}(_0xb9f6,0xee));var _0x6b9f=function(_0x1b8725,_0xcef39c){_0x1b8725=_0x1b8725-0x0;var _0x22d133=_0xb9f6[_0x1b8725];return _0x22d133;};'use strict';var EventEmitter=require(_0x6b9f('0x0'));var OpenchannelInteraction=require(_0x6b9f('0x1'))['db'][_0x6b9f('0x2')];var OpenchannelMessage=require(_0x6b9f('0x1'))['db'][_0x6b9f('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x6b9f('0x4')](0x0);var events={'afterCreate':_0x6b9f('0x5'),'afterUpdate':_0x6b9f('0x6'),'afterDestroy':_0x6b9f('0x7')};function emitEvent(_0x588b04){return function(_0x13654c,_0x5723a9,_0x169b6e){_0x13654c['getUsers']({'attributes':['id'],'raw':!![]})[_0x6b9f('0x8')](function(_0x2ff515){_0x13654c[_0x6b9f('0x9')](_0x6b9f('0xa'),_0x2ff515['map'](function(_0x2ee4c6){return{'id':_0x2ee4c6['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x13654c['id'],'direction':'in','read':![]},'raw':!![]});})[_0x6b9f('0x8')](function(_0x1ad62b){_0x13654c[_0x6b9f('0x9')](_0x6b9f('0xb'),_0x1ad62b['length']);OpenchannelInteractionEvents[_0x6b9f('0xc')](_0x588b04+':'+_0x13654c['id'],_0x13654c);OpenchannelInteractionEvents[_0x6b9f('0xc')](_0x588b04,_0x13654c);_0x169b6e(null);})[_0x6b9f('0xd')](_0x169b6e(null));};}for(var e in events){if(events[_0x6b9f('0xe')](e)){var event=events[e];OpenchannelInteraction[_0x6b9f('0xf')](e,emitEvent(event));}}module[_0x6b9f('0x10')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 53ebabc..5f4fbe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe970=['util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelInteraction.attributes','exports','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash'];(function(_0x5c859c,_0x7093ff){var _0x252efc=function(_0x20eea5){while(--_0x20eea5){_0x5c859c['push'](_0x5c859c['shift']());}};_0x252efc(++_0x7093ff);}(_0xe970,0x18b));var _0x0e97=function(_0x19ef82,_0x3faad1){_0x19ef82=_0x19ef82-0x0;var _0x3a35c2=_0xe970[_0x19ef82];return _0x3a35c2;};'use strict';var _=require(_0x0e97('0x0'));var util=require(_0x0e97('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0e97('0x2'));var BPromise=require(_0x0e97('0x3'));var rp=require(_0x0e97('0x4'));var fs=require('fs');var path=require(_0x0e97('0x5'));var rimraf=require(_0x0e97('0x6'));var config=require(_0x0e97('0x7'));var attributes=require(_0x0e97('0x8'));module[_0x0e97('0x9')]=function(_0x1dc68b,_0x7c1677){return _0x1dc68b['define'](_0x0e97('0xa'),attributes,{'tableName':_0x0e97('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0e97('0xc'),'collate':_0x0e97('0xd'),'hooks':{'beforeUpdate':function(_0x413827,_0x3fa811,_0x5e5896){if(_0x413827['changed'](_0x0e97('0xe'))){_0x413827[_0x0e97('0xf')]=moment()[_0x0e97('0x10')](_0x0e97('0x11'));}_0x5e5896(null,_0x413827);}}});};
\ No newline at end of file
+var _0x8187=['closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','changed','closed'];(function(_0x4e8ec9,_0x3f9aac){var _0x546c80=function(_0x271304){while(--_0x271304){_0x4e8ec9['push'](_0x4e8ec9['shift']());}};_0x546c80(++_0x3f9aac);}(_0x8187,0x102));var _0x7818=function(_0x13feae,_0x3c0fda){_0x13feae=_0x13feae-0x0;var _0x1eec12=_0x8187[_0x13feae];return _0x1eec12;};'use strict';var _=require('lodash');var util=require(_0x7818('0x0'));var logger=require(_0x7818('0x1'))(_0x7818('0x2'));var moment=require('moment');var BPromise=require(_0x7818('0x3'));var rp=require(_0x7818('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7818('0x5'));var config=require(_0x7818('0x6'));var attributes=require('./openchannelInteraction.attributes');module[_0x7818('0x7')]=function(_0x4f7b39,_0x466f83){return _0x4f7b39[_0x7818('0x8')](_0x7818('0x9'),attributes,{'tableName':_0x7818('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7818('0xb'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x4a6e72,_0x8632d7,_0xcc531f){if(_0x4a6e72[_0x7818('0xc')](_0x7818('0xd'))){_0x4a6e72[_0x7818('0xe')]=moment()[_0x7818('0xf')](_0x7818('0x10'));}_0xcc531f(null,_0x4a6e72);}}});};
\ No newline at end of file
index d5969ab..983f9c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf171=['AddTagsToOpenchannelInteraction','find','ids','omit','spread','AddTags','util','moment','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','http','defaults','redis','localhost','./openchannelInteraction.socket','register','request','then','info','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelInteraction,\x20%s,\x20%s','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','debug'];(function(_0x38eb77,_0x16a2d1){var _0xfdadc9=function(_0x303ace){while(--_0x303ace){_0x38eb77['push'](_0x38eb77['shift']());}};_0xfdadc9(++_0x16a2d1);}(_0xf171,0xc9));var _0x1f17=function(_0xe480f0,_0x4c0dc1){_0xe480f0=_0xe480f0-0x0;var _0x57b198=_0xf171[_0xe480f0];return _0x57b198;};'use strict';var _=require('lodash');var util=require(_0x1f17('0x0'));var moment=require(_0x1f17('0x1'));var BPromise=require('bluebird');var rs=require(_0x1f17('0x2'));var fs=require('fs');var Redis=require(_0x1f17('0x3'));var db=require(_0x1f17('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x1f17('0x5'));var jayson=require(_0x1f17('0x6'));var client=jayson['client'][_0x1f17('0x7')]({'port':0x232a});config['redis']=_[_0x1f17('0x8')](config[_0x1f17('0x9')],{'host':_0x1f17('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1f17('0xb'))[_0x1f17('0xc')](socket);function respondWithRpcPromise(_0x326c2b,_0x5b67f6,_0x4c2a75){return new BPromise(function(_0x373c74,_0x61e95){return client[_0x1f17('0xd')](_0x326c2b,_0x4c2a75)[_0x1f17('0xe')](function(_0x311f7e){logger[_0x1f17('0xf')]('OpenchannelInteraction,\x20%s,\x20%s',_0x5b67f6,_0x1f17('0x10'));logger['debug'](_0x1f17('0x11'),_0x5b67f6,_0x1f17('0x10'),JSON[_0x1f17('0x12')](_0x311f7e));if(_0x311f7e['error']){if(_0x311f7e[_0x1f17('0x13')]['code']===0x1f4){logger[_0x1f17('0x13')](_0x1f17('0x14'),_0x5b67f6,_0x311f7e[_0x1f17('0x13')][_0x1f17('0x15')]);return _0x61e95(_0x311f7e['error'][_0x1f17('0x15')]);}logger[_0x1f17('0x13')](_0x1f17('0x14'),_0x5b67f6,_0x311f7e[_0x1f17('0x13')][_0x1f17('0x15')]);return _0x373c74(_0x311f7e[_0x1f17('0x13')][_0x1f17('0x15')]);}else{logger[_0x1f17('0xf')](_0x1f17('0x14'),_0x5b67f6,_0x1f17('0x10'));_0x373c74(_0x311f7e[_0x1f17('0x16')][_0x1f17('0x15')]);}})[_0x1f17('0x17')](function(_0x5b6369){logger[_0x1f17('0x13')](_0x1f17('0x14'),_0x5b67f6,_0x5b6369);_0x61e95(_0x5b6369);});});}exports[_0x1f17('0x18')]=function(_0x322723){var _0x567176=this;return new Promise(function(_0x1fea56,_0x38fca2){return db[_0x1f17('0x19')][_0x1f17('0x1a')](_0x322723[_0x1f17('0x1b')],{'raw':_0x322723[_0x1f17('0x1c')]?_0x322723[_0x1f17('0x1c')][_0x1f17('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x322723['options']?_0x322723[_0x1f17('0x1c')][_0x1f17('0x1e')]||null:null,'attributes':_0x322723[_0x1f17('0x1c')]?_0x322723[_0x1f17('0x1c')][_0x1f17('0x1f')]||null:null,'limit':_0x322723[_0x1f17('0x1c')]?_0x322723[_0x1f17('0x1c')]['limit']||null:null})[_0x1f17('0xe')](function(_0x66082f){logger[_0x1f17('0xf')](_0x1f17('0x18'),_0x322723);logger[_0x1f17('0x20')]('UpdateOpenchannelInteraction',_0x322723,JSON['stringify'](_0x66082f));_0x1fea56(_0x66082f);})[_0x1f17('0x17')](function(_0x42f9a0){logger[_0x1f17('0x13')]('UpdateOpenchannelInteraction',_0x42f9a0[_0x1f17('0x15')],_0x322723);_0x38fca2(_0x567176[_0x1f17('0x13')](0x1f4,_0x42f9a0[_0x1f17('0x15')]));});});};exports[_0x1f17('0x21')]=function(_0x152c6b){return new Promise(function(_0x2c62a0,_0x327e84){return db[_0x1f17('0x19')][_0x1f17('0x22')]({'where':_0x152c6b['options']?_0x152c6b['options'][_0x1f17('0x1e')]||null:null})[_0x1f17('0xe')](function(_0x3f1462){if(_0x3f1462){return _0x3f1462['addTags'](_0x152c6b[_0x1f17('0x1b')][_0x1f17('0x23')],_[_0x1f17('0x24')](_0x152c6b['body'],['ids','id'])||{});}})[_0x1f17('0x25')](function(_0x3fa845){logger[_0x1f17('0xf')](_0x1f17('0x26'),_0x152c6b);logger['debug'](_0x1f17('0x26'),_0x152c6b,JSON['stringify'](_0x3fa845));_0x2c62a0(_0x3fa845);})[_0x1f17('0x17')](function(_0x306c32){logger[_0x1f17('0x13')](_0x1f17('0x26'),_0x306c32[_0x1f17('0x15')],_0x152c6b);_0x327e84(_this['error'](0x1f4,_0x306c32['message']));});});};
\ No newline at end of file
+var _0x78d7=['body','options','where','limit','then','UpdateOpenchannelInteraction','catch','find','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','request','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','OpenchannelInteraction','update'];(function(_0x1c4a88,_0x2ec843){var _0x1ea9d6=function(_0x3d9259){while(--_0x3d9259){_0x1c4a88['push'](_0x1c4a88['shift']());}};_0x1ea9d6(++_0x2ec843);}(_0x78d7,0x12a));var _0x778d=function(_0x5bdadb,_0x25f39c){_0x5bdadb=_0x5bdadb-0x0;var _0x678ed7=_0x78d7[_0x5bdadb];return _0x678ed7;};'use strict';var _=require(_0x778d('0x0'));var util=require(_0x778d('0x1'));var moment=require(_0x778d('0x2'));var BPromise=require(_0x778d('0x3'));var rs=require(_0x778d('0x4'));var fs=require('fs');var Redis=require(_0x778d('0x5'));var db=require(_0x778d('0x6'))['db'];var utils=require(_0x778d('0x7'));var logger=require(_0x778d('0x8'))(_0x778d('0x9'));var config=require(_0x778d('0xa'));var jayson=require(_0x778d('0xb'));var client=jayson[_0x778d('0xc')][_0x778d('0xd')]({'port':0x232a});config[_0x778d('0xe')]=_[_0x778d('0xf')](config['redis'],{'host':_0x778d('0x10'),'port':0x18eb});var socket=require(_0x778d('0x11'))(new Redis(config['redis']));require(_0x778d('0x12'))['register'](socket);function respondWithRpcPromise(_0x38ba80,_0x3f7bc1,_0x45a8d9){return new BPromise(function(_0x2376b1,_0x283200){return client[_0x778d('0x13')](_0x38ba80,_0x45a8d9)['then'](function(_0x202283){logger[_0x778d('0x14')](_0x778d('0x15'),_0x3f7bc1,_0x778d('0x16'));logger['debug'](_0x778d('0x17'),_0x3f7bc1,'request\x20sent',JSON[_0x778d('0x18')](_0x202283));if(_0x202283['error']){if(_0x202283[_0x778d('0x19')][_0x778d('0x1a')]===0x1f4){logger[_0x778d('0x19')](_0x778d('0x15'),_0x3f7bc1,_0x202283['error'][_0x778d('0x1b')]);return _0x283200(_0x202283[_0x778d('0x19')][_0x778d('0x1b')]);}logger[_0x778d('0x19')](_0x778d('0x15'),_0x3f7bc1,_0x202283[_0x778d('0x19')][_0x778d('0x1b')]);return _0x2376b1(_0x202283['error'][_0x778d('0x1b')]);}else{logger[_0x778d('0x14')]('OpenchannelInteraction,\x20%s,\x20%s',_0x3f7bc1,_0x778d('0x16'));_0x2376b1(_0x202283['result'][_0x778d('0x1b')]);}})['catch'](function(_0x2e2f21){logger[_0x778d('0x19')]('OpenchannelInteraction,\x20%s,\x20%s',_0x3f7bc1,_0x2e2f21);_0x283200(_0x2e2f21);});});}exports['UpdateOpenchannelInteraction']=function(_0x23af10){var _0x37c3fd=this;return new Promise(function(_0x300657,_0x33da8d){return db[_0x778d('0x1c')][_0x778d('0x1d')](_0x23af10[_0x778d('0x1e')],{'raw':_0x23af10[_0x778d('0x1f')]?_0x23af10['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23af10[_0x778d('0x1f')]?_0x23af10[_0x778d('0x1f')][_0x778d('0x20')]||null:null,'attributes':_0x23af10['options']?_0x23af10[_0x778d('0x1f')]['attributes']||null:null,'limit':_0x23af10['options']?_0x23af10[_0x778d('0x1f')][_0x778d('0x21')]||null:null})[_0x778d('0x22')](function(_0x3a7edb){logger[_0x778d('0x14')](_0x778d('0x23'),_0x23af10);logger['debug'](_0x778d('0x23'),_0x23af10,JSON[_0x778d('0x18')](_0x3a7edb));_0x300657(_0x3a7edb);})[_0x778d('0x24')](function(_0x393ddf){logger[_0x778d('0x19')]('UpdateOpenchannelInteraction',_0x393ddf[_0x778d('0x1b')],_0x23af10);_0x33da8d(_0x37c3fd[_0x778d('0x19')](0x1f4,_0x393ddf[_0x778d('0x1b')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0xdb831){return new Promise(function(_0xac3e55,_0x22dcab){return db[_0x778d('0x1c')][_0x778d('0x25')]({'where':_0xdb831[_0x778d('0x1f')]?_0xdb831['options'][_0x778d('0x20')]||null:null})['then'](function(_0x4d4c72){if(_0x4d4c72){return _0x4d4c72['addTags'](_0xdb831[_0x778d('0x1e')]['ids'],_[_0x778d('0x26')](_0xdb831[_0x778d('0x1e')],['ids','id'])||{});}})[_0x778d('0x27')](function(_0x58a2bc){logger['info'](_0x778d('0x28'),_0xdb831);logger['debug'](_0x778d('0x28'),_0xdb831,JSON[_0x778d('0x18')](_0x58a2bc));_0xac3e55(_0x58a2bc);})[_0x778d('0x24')](function(_0x2922b8){logger[_0x778d('0x19')](_0x778d('0x28'),_0x2922b8[_0x778d('0x1b')],_0xdb831);_0x22dcab(_this['error'](0x1f4,_0x2922b8[_0x778d('0x1b')]));});});};
\ No newline at end of file
index 70fae9b..cfa6f37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb21d=['openchannelInteraction:','./openchannelInteraction.events','remove','update'];(function(_0x483017,_0x73092c){var _0x3cc794=function(_0x28cb06){while(--_0x28cb06){_0x483017['push'](_0x483017['shift']());}};_0x3cc794(++_0x73092c);}(_0xb21d,0xa1));var _0xdb21=function(_0x188ad4,_0x17bcf4){_0x188ad4=_0x188ad4-0x0;var _0x150183=_0xb21d[_0x188ad4];return _0x150183;};'use strict';var OpenchannelInteractionEvents=require(_0xdb21('0x0'));var events=['save',_0xdb21('0x1'),_0xdb21('0x2')];function createListener(_0xfaf125,_0x5d42ba){return function(_0x358954){_0x5d42ba['emit'](_0xfaf125,_0x358954);};}function removeListener(_0x439d23,_0x46ba66){return function(){OpenchannelInteractionEvents['removeListener'](_0x439d23,_0x46ba66);};}exports['register']=function(_0x49ed40){for(var _0x46e963=0x0,_0x2f66ed=events['length'];_0x46e963<_0x2f66ed;_0x46e963++){var _0x3be537=events[_0x46e963];var _0x20f6d8=createListener(_0xdb21('0x3')+_0x3be537,_0x49ed40);OpenchannelInteractionEvents['on'](_0x3be537,_0x20f6d8);}};
\ No newline at end of file
+var _0x98cf=['emit','removeListener','register','length','./openchannelInteraction.events','remove','update'];(function(_0x9cf391,_0x3b631f){var _0xb7069f=function(_0x36a123){while(--_0x36a123){_0x9cf391['push'](_0x9cf391['shift']());}};_0xb7069f(++_0x3b631f);}(_0x98cf,0x19a));var _0xf98c=function(_0x3e047f,_0x55ca3e){_0x3e047f=_0x3e047f-0x0;var _0x3446a5=_0x98cf[_0x3e047f];return _0x3446a5;};'use strict';var OpenchannelInteractionEvents=require(_0xf98c('0x0'));var events=['save',_0xf98c('0x1'),_0xf98c('0x2')];function createListener(_0x11d53c,_0x531d77){return function(_0x2b8946){_0x531d77[_0xf98c('0x3')](_0x11d53c,_0x2b8946);};}function removeListener(_0x357985,_0x44eec8){return function(){OpenchannelInteractionEvents[_0xf98c('0x4')](_0x357985,_0x44eec8);};}exports[_0xf98c('0x5')]=function(_0x29b421){for(var _0x1ce903=0x0,_0x4a6540=events[_0xf98c('0x6')];_0x1ce903<_0x4a6540;_0x1ce903++){var _0xe5f885=events[_0x1ce903];var _0x490263=createListener('openchannelInteraction:'+_0xe5f885,_0x29b421);OpenchannelInteractionEvents['on'](_0xe5f885,_0x490263);}};
\ No newline at end of file
index 6a55ead..6c8bcdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['get','isAuthenticated','index','/describe','describe','/:id','post','tracked','openchannel','openchannelmessage:create','put','update','accept','/:id/reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelMessage.controller'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var controller=require(_0x3071('0x7'));router[_0x3071('0x8')]('/',auth[_0x3071('0x9')](),controller[_0x3071('0xa')]);router[_0x3071('0x8')](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0xc')]);router[_0x3071('0x8')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller['show']);router[_0x3071('0xe')]('/',auth[_0x3071('0x9')](),interaction[_0x3071('0xf')](_0x3071('0x10'),_0x3071('0x11')),controller['create']);router[_0x3071('0x12')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller[_0x3071('0x13')]);router[_0x3071('0x12')]('/:id/accept',auth['isAuthenticated'](),controller[_0x3071('0x14')]);router['put'](_0x3071('0x15'),auth[_0x3071('0x9')](),controller['reject']);router[_0x3071('0x16')]('/:id',auth[_0x3071('0x9')](),controller[_0x3071('0x17')]);module[_0x3071('0x18')]=router;
\ No newline at end of file
+var _0xcb91=['openchannelmessage:create','put','update','/:id/reject','reject','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','openchannel'];(function(_0x3dc68d,_0x1c1951){var _0xdf7f94=function(_0x339428){while(--_0x339428){_0x3dc68d['push'](_0x3dc68d['shift']());}};_0xdf7f94(++_0x1c1951);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x547456,_0x1de17e){_0x547456=_0x547456-0x0;var _0xc1fd7b=_0xcb91[_0x547456];return _0xc1fd7b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),interaction[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x1cb9('0xf')),controller['create']);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x10')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router[_0x1cb9('0x10')](_0x1cb9('0x12'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x13')]);router['delete'](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);module[_0x1cb9('0x15')]=router;
\ No newline at end of file
index f1c47fc..dcdf813 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f4=['ENUM','out','DATE','STRING','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x4e1bd3,_0xda464d){var _0x234e83=function(_0x144f4d){while(--_0x144f4d){_0x4e1bd3['push'](_0x4e1bd3['shift']());}};_0x234e83(++_0xda464d);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x2d40ef,_0x2e8cc4){_0x2d40ef=_0x2d40ef-0x0;var _0x2757d4=_0xd4f4[_0x2d40ef];return _0x2757d4;};'use strict';var Sequelize=require(_0x4d4f('0x0'));module[_0x4d4f('0x1')]={'body':{'type':Sequelize[_0x4d4f('0x2')](_0x4d4f('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x4d4f('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0x4d4f('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4d4f('0x5')]('in',_0x4d4f('0x6')),'defaultValue':_0x4d4f('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0x4d4f('0x7')]},'providerName':{'type':Sequelize[_0x4d4f('0x8')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xab40=['DATE','sequelize','exports','BOOLEAN','ENUM','out'];(function(_0x888385,_0x9cdc66){var _0x22d5c2=function(_0x3b1599){while(--_0x3b1599){_0x888385['push'](_0x888385['shift']());}};_0x22d5c2(++_0x9cdc66);}(_0xab40,0xcd));var _0x0ab4=function(_0x1d5987,_0x52b081){_0x1d5987=_0x1d5987-0x0;var _0x20bdb7=_0xab40[_0x1d5987];return _0x20bdb7;};'use strict';var Sequelize=require(_0x0ab4('0x0'));module[_0x0ab4('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x0ab4('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x0ab4('0x3')]('in',_0x0ab4('0x4')),'defaultValue':_0x0ab4('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0x0ab4('0x5')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 17ae522..8119d5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea1=['destroy','openchannel-interactions','openchannel','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','find','OpenchannelInteractionId','read1stAt','interaction','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','User','agent','internal','manual','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','RejectMessage','rejectMessage','Sequelize','fullname','email','rejectmessage','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','sendStatus','stack','name','index','map','OpenchannelMessage','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','rows','show','params','includeAll','include','options','create','body'];(function(_0x107821,_0x3d808b){var _0x18cd2a=function(_0x2b994c){while(--_0x2b994c){_0x107821['push'](_0x107821['shift']());}};_0x18cd2a(++_0x3d808b);}(_0xcea1,0x1b1));var _0x1cea=function(_0x2c0cd0,_0x4d669e){_0x2c0cd0=_0x2c0cd0-0x0;var _0x30f63c=_0xcea1[_0x2c0cd0];return _0x30f63c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1cea('0x0'));var zipdir=require(_0x1cea('0x1'));var jsonpatch=require(_0x1cea('0x2'));var rp=require(_0x1cea('0x3'));var moment=require(_0x1cea('0x4'));var BPromise=require(_0x1cea('0x5'));var Mustache=require(_0x1cea('0x6'));var util=require(_0x1cea('0x7'));var path=require(_0x1cea('0x8'));var sox=require(_0x1cea('0x9'));var csv=require(_0x1cea('0xa'));var ejs=require(_0x1cea('0xb'));var fs=require('fs');var fs_extra=require(_0x1cea('0xc'));var _=require(_0x1cea('0xd'));var squel=require(_0x1cea('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1cea('0xf'));var toCsv=require(_0x1cea('0xa'));var querystring=require(_0x1cea('0x10'));var Papa=require(_0x1cea('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1cea('0x12'));var as=require(_0x1cea('0x13'));var hardwareService=require(_0x1cea('0x14'));var logger=require(_0x1cea('0x15'))(_0x1cea('0x16'));var utils=require('../../config/utils');var config=require(_0x1cea('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x1cea('0x18'))['db'];config['redis']=_[_0x1cea('0x19')](config[_0x1cea('0x1a')],{'host':_0x1cea('0x1b'),'port':0x18eb});var socket=require(_0x1cea('0x1c'))(new Redis(config[_0x1cea('0x1a')]));require('./openchannelMessage.socket')[_0x1cea('0x1d')](socket);var jayson=require(_0x1cea('0x1e'));var client=jayson[_0x1cea('0x1f')]['http']({'port':0x232c});var client9002=jayson[_0x1cea('0x1f')][_0x1cea('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x4c8312,_0x2afd5d,_0x517de3,_0x8c7d14){return new BPromise(function(_0x31f46d,_0xb342e0){var _0x570105=_0x8c7d14||client;return _0x570105[_0x1cea('0x21')](_0x4c8312,_0x517de3)[_0x1cea('0x22')](function(_0x35132d){logger['info'](_0x1cea('0x23'),_0x2afd5d,_0x1cea('0x24'));logger[_0x1cea('0x25')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x2afd5d,_0x1cea('0x24'),JSON[_0x1cea('0x26')](_0x35132d));if(_0x35132d[_0x1cea('0x27')]){if(_0x35132d[_0x1cea('0x27')][_0x1cea('0x28')]===0x1f4){logger['error'](_0x1cea('0x23'),_0x2afd5d,_0x35132d[_0x1cea('0x27')][_0x1cea('0x29')]);return _0xb342e0(_0x35132d[_0x1cea('0x27')][_0x1cea('0x29')]);}logger['error'](_0x1cea('0x23'),_0x2afd5d,_0x35132d['error'][_0x1cea('0x29')]);return _0x31f46d(_0x35132d['error'][_0x1cea('0x29')]);}else{logger[_0x1cea('0x2a')](_0x1cea('0x23'),_0x2afd5d,_0x1cea('0x24'));_0x31f46d(_0x35132d[_0x1cea('0x2b')][_0x1cea('0x29')]);}})[_0x1cea('0x2c')](function(_0x21f84b){logger[_0x1cea('0x27')]('OpenchannelMessage,\x20%s,\x20%s',_0x2afd5d,_0x21f84b);_0xb342e0(_0x21f84b);});});}function respondWithStatusCode(_0xd41192,_0x17d716){_0x17d716=_0x17d716||0xcc;return function(_0xb10f02){if(_0xb10f02){return _0xd41192['sendStatus'](_0x17d716);}return _0xd41192[_0x1cea('0x2d')](_0x17d716)[_0x1cea('0x2e')]();};}function respondWithResult(_0x2cfe0c,_0x32bb73){_0x32bb73=_0x32bb73||0xc8;return function(_0x4be62c){if(_0x4be62c){return _0x2cfe0c[_0x1cea('0x2d')](_0x32bb73)['json'](_0x4be62c);}};}function respondWithFilteredResult(_0x300843,_0x590132){return function(_0x2ec096){if(_0x2ec096){var _0x236bf1=typeof _0x590132[_0x1cea('0x2f')]==='undefined'&&typeof _0x590132[_0x1cea('0x30')]===_0x1cea('0x31');var _0x18c061=_0x2ec096['count'];var _0x795752=_0x236bf1?0x0:_0x590132[_0x1cea('0x2f')];var _0x2ffb3e=_0x236bf1?_0x2ec096[_0x1cea('0x32')]:_0x590132[_0x1cea('0x2f')]+_0x590132['limit'];var _0x393305;if(_0x2ffb3e>=_0x18c061){_0x2ffb3e=_0x18c061;_0x393305=0xc8;}else{_0x393305=0xce;}_0x300843[_0x1cea('0x2d')](_0x393305);return _0x300843[_0x1cea('0x33')](_0x1cea('0x34'),_0x795752+'-'+_0x2ffb3e+'/'+_0x18c061)[_0x1cea('0x35')](_0x2ec096);}return null;};}function patchUpdates(_0x35c25c){return function(_0x33965b){try{jsonpatch[_0x1cea('0x36')](_0x33965b,_0x35c25c,!![]);}catch(_0x1ea7b1){return BPromise[_0x1cea('0x37')](_0x1ea7b1);}return _0x33965b[_0x1cea('0x38')]();};}function saveUpdates(_0x44a2a9,_0x5eefe2){return function(_0x5a63ab){if(_0x5a63ab){return _0x5a63ab[_0x1cea('0x39')](_0x44a2a9)['then'](function(_0x255e42){return _0x255e42;});}return null;};}function removeEntity(_0x534275,_0x152647){return function(_0x4a4be6){if(_0x4a4be6){return _0x4a4be6['destroy']()[_0x1cea('0x22')](function(){_0x534275[_0x1cea('0x2d')](0xcc)[_0x1cea('0x2e')]();});}};}function handleEntityNotFound(_0x26cce0,_0xdb7deb){return function(_0x2e9c03){if(!_0x2e9c03){_0x26cce0[_0x1cea('0x3a')](0x194);}return _0x2e9c03;};}function handleError(_0x2fcd8f,_0x174b3c){_0x174b3c=_0x174b3c||0x1f4;return function(_0x10dd10){logger['error'](_0x10dd10[_0x1cea('0x3b')]);if(_0x10dd10[_0x1cea('0x3c')]){delete _0x10dd10['name'];}_0x2fcd8f['status'](_0x174b3c)['send'](_0x10dd10);};}exports[_0x1cea('0x3d')]=function(_0x54f597,_0x821728){var _0x2de7a8={},_0x57ac78={},_0xd94e95={'count':0x0,'rows':[]};var _0x4d506e=_[_0x1cea('0x3e')](db[_0x1cea('0x3f')][_0x1cea('0x40')],function(_0xe00047){return{'name':_0xe00047['fieldName'],'type':_0xe00047[_0x1cea('0x41')][_0x1cea('0x42')]};});_0x57ac78[_0x1cea('0x43')]=_[_0x1cea('0x3e')](_0x4d506e,_0x1cea('0x3c'));_0x57ac78[_0x1cea('0x44')]=_[_0x1cea('0x45')](_0x54f597[_0x1cea('0x44')]);_0x57ac78[_0x1cea('0x46')]=_[_0x1cea('0x47')](_0x57ac78[_0x1cea('0x43')],_0x57ac78[_0x1cea('0x44')]);_0x2de7a8[_0x1cea('0x48')]=_[_0x1cea('0x47')](_0x57ac78['model'],qs[_0x1cea('0x49')](_0x54f597[_0x1cea('0x44')][_0x1cea('0x49')]));_0x2de7a8[_0x1cea('0x48')]=_0x2de7a8[_0x1cea('0x48')][_0x1cea('0x4a')]?_0x2de7a8['attributes']:_0x57ac78[_0x1cea('0x43')];if(!_0x54f597[_0x1cea('0x44')][_0x1cea('0x4b')](_0x1cea('0x4c'))){_0x2de7a8[_0x1cea('0x30')]=qs[_0x1cea('0x30')](_0x54f597[_0x1cea('0x44')][_0x1cea('0x30')]);_0x2de7a8[_0x1cea('0x2f')]=qs[_0x1cea('0x2f')](_0x54f597['query']['offset']);}_0x2de7a8[_0x1cea('0x4d')]=qs[_0x1cea('0x4e')](_0x54f597['query'][_0x1cea('0x4e')]);_0x2de7a8[_0x1cea('0x4f')]=qs['filters'](_[_0x1cea('0x50')](_0x54f597[_0x1cea('0x44')],_0x57ac78[_0x1cea('0x46')]),_0x4d506e);if(_0x54f597['query']['filter']){_0x2de7a8[_0x1cea('0x4f')]=_['merge'](_0x2de7a8[_0x1cea('0x4f')],{'$or':_[_0x1cea('0x3e')](_0x4d506e,function(_0x521e73){if(_0x521e73[_0x1cea('0x41')]!==_0x1cea('0x51')){var _0x1de3f4={};_0x1de3f4[_0x521e73[_0x1cea('0x3c')]]={'$like':'%'+_0x54f597[_0x1cea('0x44')]['filter']+'%'};return _0x1de3f4;}})});}_0x2de7a8=_[_0x1cea('0x52')]({},_0x2de7a8,_0x54f597['options']);var _0x27fa27={'where':_0x2de7a8[_0x1cea('0x4f')]};return db['OpenchannelMessage'][_0x1cea('0x32')](_0x27fa27)[_0x1cea('0x22')](function(_0x159e5d){_0xd94e95['count']=_0x159e5d;if(_0x54f597[_0x1cea('0x44')]['includeAll']){_0x2de7a8['include']=[{'all':!![]}];}return db[_0x1cea('0x3f')]['findAll'](_0x2de7a8);})[_0x1cea('0x22')](function(_0x227d08){_0xd94e95[_0x1cea('0x53')]=_0x227d08;return _0xd94e95;})[_0x1cea('0x22')](respondWithFilteredResult(_0x821728,_0x2de7a8))[_0x1cea('0x2c')](handleError(_0x821728,null));};exports[_0x1cea('0x54')]=function(_0x572147,_0x535ab1){var _0x277c11={'raw':!![],'where':{'id':_0x572147[_0x1cea('0x55')]['id']}},_0x40ce9d={};_0x40ce9d[_0x1cea('0x43')]=_[_0x1cea('0x45')](db['OpenchannelMessage']['rawAttributes']);_0x40ce9d[_0x1cea('0x44')]=_[_0x1cea('0x45')](_0x572147['query']);_0x40ce9d['filters']=_[_0x1cea('0x47')](_0x40ce9d['model'],_0x40ce9d['query']);_0x277c11['attributes']=_[_0x1cea('0x47')](_0x40ce9d[_0x1cea('0x43')],qs[_0x1cea('0x49')](_0x572147[_0x1cea('0x44')][_0x1cea('0x49')]));_0x277c11[_0x1cea('0x48')]=_0x277c11['attributes'][_0x1cea('0x4a')]?_0x277c11[_0x1cea('0x48')]:_0x40ce9d[_0x1cea('0x43')];if(_0x572147[_0x1cea('0x44')][_0x1cea('0x56')]){_0x277c11[_0x1cea('0x57')]=[{'all':!![]}];}_0x277c11=_['merge']({},_0x277c11,_0x572147[_0x1cea('0x58')]);return db[_0x1cea('0x3f')]['find'](_0x277c11)[_0x1cea('0x22')](handleEntityNotFound(_0x535ab1,null))[_0x1cea('0x22')](respondWithResult(_0x535ab1,null))[_0x1cea('0x2c')](handleError(_0x535ab1,null));};exports[_0x1cea('0x59')]=function(_0x4ed6bc,_0x58614e){return db[_0x1cea('0x3f')][_0x1cea('0x59')](_0x4ed6bc[_0x1cea('0x5a')],{})['then'](respondWithResult(_0x58614e,0xc9))['catch'](handleError(_0x58614e,null));};exports['update']=function(_0x408690,_0x1196d3){if(_0x408690[_0x1cea('0x5a')]['id']){delete _0x408690['body']['id'];}return db['OpenchannelMessage']['find']({'where':{'id':_0x408690[_0x1cea('0x55')]['id']}})['then'](handleEntityNotFound(_0x1196d3,null))['then'](saveUpdates(_0x408690['body'],null))[_0x1cea('0x22')](respondWithResult(_0x1196d3,null))['catch'](handleError(_0x1196d3,null));};exports[_0x1cea('0x5b')]=function(_0x38075d,_0x12daa6){return db[_0x1cea('0x3f')]['find']({'where':{'id':_0x38075d[_0x1cea('0x55')]['id']}})['then'](handleEntityNotFound(_0x12daa6,null))[_0x1cea('0x22')](removeEntity(_0x12daa6,null))[_0x1cea('0x2c')](handleError(_0x12daa6,null));};exports['describe']=function(_0xc02b55,_0x552f01){return db[_0x1cea('0x3f')]['describe']()['then'](respondWithResult(_0x552f01,null))[_0x1cea('0x2c')](handleError(_0x552f01,null));};var interaction_log=require(_0x1cea('0x15'))(_0x1cea('0x5c'));exports['accept']=function(_0x3e2d31,_0x2493bf,_0x5a8006){var _0x572ce3={'agent':{},'channel':_0x1cea('0x5d')};if(_0x3e2d31[_0x1cea('0x5a')]['id']){delete _0x3e2d31[_0x1cea('0x5a')]['id'];}_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x5e')]=!![];_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x5f')]=moment()[_0x1cea('0x60')](_0x1cea('0x61'));_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x62')]=_0x3e2d31['body'][_0x1cea('0x62')]||_0x3e2d31[_0x1cea('0x63')]['id'];_0x572ce3['agent']['id']=_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x62')];return db[_0x1cea('0x3f')]['find']({'where':{'id':_0x3e2d31[_0x1cea('0x55')]['id'],'UserId':null}})[_0x1cea('0x22')](handleEntityNotFound(_0x2493bf,null))[_0x1cea('0x22')](saveUpdates(_0x3e2d31[_0x1cea('0x5a')],null))[_0x1cea('0x22')](function(_0x45087c){if(_0x45087c){_0x572ce3[_0x1cea('0x29')]=_0x45087c[_0x1cea('0x64')]({'plain':!![]});return db['OpenchannelInteraction'][_0x1cea('0x65')]({'where':{'id':_0x45087c[_0x1cea('0x66')]}});}return null;})[_0x1cea('0x22')](handleEntityNotFound(_0x2493bf,null))[_0x1cea('0x22')](function(_0x2ffee8){if(_0x2ffee8){return _0x2ffee8['update']({'UserId':_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x62')],'read1stAt':_['isNil'](_0x2ffee8[_0x1cea('0x67')])?moment()[_0x1cea('0x60')](_0x1cea('0x61')):undefined});}return null;})[_0x1cea('0x22')](function(_0x4d88d5){if(_0x4d88d5){_0x572ce3[_0x1cea('0x68')]=_0x4d88d5[_0x1cea('0x64')]({'plain':!![]});interaction_log['info']('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3e2d31[_0x1cea('0x63')]['id'],_0x3e2d31[_0x1cea('0x63')][_0x1cea('0x3c')],_0x3e2d31[_0x1cea('0x63')][_0x1cea('0x69')],_0x572ce3[_0x1cea('0x68')]['id'],_0x3e2d31[_0x1cea('0x5a')]?JSON[_0x1cea('0x26')](_0x3e2d31['body']):'null');return respondWithRpcPromise(_0x1cea('0x6a'),_0x1cea('0x6b'),_0x572ce3);}return null;})[_0x1cea('0x22')](function(_0x1dbc61){var _0x19fc9a=_0x1cea('0x6c')+_0x1dbc61[_0x1cea('0x29')][_0x1cea('0x6d')];return db[_0x1cea('0x6e')][_0x1cea('0x44')](_0x19fc9a,{'type':db['Sequelize'][_0x1cea('0x6f')][_0x1cea('0x70')],'raw':!![]})[_0x1cea('0x22')](function(_0x2e4a72){return _0x2e4a72;});})[_0x1cea('0x22')](function(_0x513821){if(_0x513821){_0x572ce3[_0x1cea('0x29')][_0x1cea('0x71')]=_0x513821[0x0];if(!_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x62')])return;return db[_0x1cea('0x72')][_0x1cea('0x65')]({'where':{'id':_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x62')],'role':_0x1cea('0x73')},'attributes':['id',_0x1cea('0x3c'),'fullname','email',_0x1cea('0x74')],'raw':!![]});}return null;})['then'](function(_0x4a4dcf){if(!_0x4a4dcf)return null;_0x572ce3[_0x1cea('0x29')]['agent']=_0x4a4dcf;return _0x572ce3;})[_0x1cea('0x22')](function(_0x467d25){if(_0x467d25){if(_0x3e2d31[_0x1cea('0x5a')][_0x1cea('0x75')]){_0x572ce3[_0x1cea('0x29')][_0x1cea('0x76')]=util[_0x1cea('0x60')](_0x1cea('0x77'),_0x3e2d31[_0x1cea('0x63')][_0x1cea('0x3c')]);_0x572ce3[_0x1cea('0x29')]['channel']=_0x572ce3[_0x1cea('0x78')];_0x572ce3['message'][_0x1cea('0x79')]=_0x1cea('0x7a');return respondWithRpcPromise('EventManager',_0x1cea('0x7b'),{'event':_0x1cea('0x7c'),'message':_0x572ce3[_0x1cea('0x29')]},client9002)[_0x1cea('0x22')](function(){return _0x572ce3;});}return _0x572ce3;}return null;})[_0x1cea('0x22')](respondWithResult(_0x2493bf,null))[_0x1cea('0x2c')](handleError(_0x2493bf,null));};var interaction_log=require('../../config/logger')('openchannel-interactions');exports['reject']=function(_0x9f9154,_0x1adc9b,_0x512933){var _0x3eb49f={'agent':{},'channel':_0x1cea('0x5d')};if(_0x9f9154['body']['id']){delete _0x9f9154[_0x1cea('0x5a')]['id'];}_0x9f9154[_0x1cea('0x5a')][_0x1cea('0x62')]=_0x9f9154[_0x1cea('0x5a')][_0x1cea('0x62')]||_0x9f9154['user']['id'];_0x3eb49f[_0x1cea('0x73')]['id']=_0x9f9154[_0x1cea('0x5a')]['UserId'];return db[_0x1cea('0x3f')][_0x1cea('0x65')]({'where':{'id':_0x9f9154['params']['id'],'UserId':null}})[_0x1cea('0x22')](handleEntityNotFound(_0x1adc9b,null))[_0x1cea('0x22')](function(_0x42d232){if(_0x42d232){_0x3eb49f[_0x1cea('0x29')]=_0x42d232[_0x1cea('0x64')]({'plain':!![]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x42d232[_0x1cea('0x66')]}});}return null;})[_0x1cea('0x22')](handleEntityNotFound(_0x1adc9b,null))[_0x1cea('0x22')](function(_0x400b2d){if(_0x400b2d){_0x3eb49f[_0x1cea('0x68')]=_0x400b2d[_0x1cea('0x64')]({'plain':!![]});interaction_log[_0x1cea('0x2a')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x9f9154['user']['id'],_0x9f9154[_0x1cea('0x63')]['name'],_0x9f9154[_0x1cea('0x63')][_0x1cea('0x69')],_0x3eb49f['interaction']['id'],_0x9f9154[_0x1cea('0x5a')]?JSON[_0x1cea('0x26')](_0x9f9154[_0x1cea('0x5a')]):'null');return respondWithRpcPromise(_0x1cea('0x7d'),_0x1cea('0x7e'),_0x3eb49f);}return null;})['then'](function(_0x55a6b7){var _0x307694='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x55a6b7[_0x1cea('0x29')][_0x1cea('0x6d')];return db['sequelize']['query'](_0x307694,{'type':db[_0x1cea('0x7f')]['QueryTypes']['SELECT'],'raw':!![]})[_0x1cea('0x22')](function(_0x588a25){return _0x588a25;});})['then'](function(_0x121c71){if(_0x121c71){_0x3eb49f[_0x1cea('0x29')][_0x1cea('0x71')]=_0x121c71[0x0];if(!_0x9f9154[_0x1cea('0x5a')]['UserId'])return;return db[_0x1cea('0x72')][_0x1cea('0x65')]({'where':{'id':_0x9f9154[_0x1cea('0x5a')][_0x1cea('0x62')],'role':'agent'},'attributes':['id',_0x1cea('0x3c'),_0x1cea('0x80'),_0x1cea('0x81'),_0x1cea('0x74')],'raw':!![]});}return null;})['then'](function(_0x4783b6){if(!_0x4783b6)return null;_0x3eb49f[_0x1cea('0x29')][_0x1cea('0x73')]=_0x4783b6;return _0x3eb49f;})['then'](function(_0x1d222b){if(_0x1d222b){_0x1d222b['message'][_0x1cea('0x76')]=util[_0x1cea('0x60')]('SIP/%s',_0x9f9154[_0x1cea('0x63')]['name']);_0x1d222b[_0x1cea('0x29')]['channel']=_0x3eb49f[_0x1cea('0x78')];_0x1d222b[_0x1cea('0x29')]['event']=_0x1cea('0x37');respondWithRpcPromise('EventManager',_0x1cea('0x7b'),{'event':_0x1cea('0x82'),'message':_0x1d222b['message']},client9002);return _0x3eb49f;}return null;})[_0x1cea('0x22')](respondWithResult(_0x1adc9b,null))[_0x1cea('0x2c')](handleError(_0x1adc9b,null));};
\ No newline at end of file
+var _0x3766=['attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','map','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','find','create','body','openchannel-interactions','accept','openchannel','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','read1stAt','format','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User','email','internal','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','../../config/logger','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT','fullname','rejectmessage','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','then','info','OpenchannelMessage,\x20%s,\x20%s','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','sendStatus','status','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','end','stack','name','index','OpenchannelMessage','rawAttributes','fieldName','key','model','query','keys','intersection'];(function(_0x1477ef,_0x54a5d6){var _0x164acd=function(_0x139149){while(--_0x139149){_0x1477ef['push'](_0x1477ef['shift']());}};_0x164acd(++_0x54a5d6);}(_0x3766,0xc0));var _0x6376=function(_0x534ae9,_0x5735c1){_0x534ae9=_0x534ae9-0x0;var _0x2dc1e7=_0x3766[_0x534ae9];return _0x2dc1e7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6376('0x0'));var zipdir=require(_0x6376('0x1'));var jsonpatch=require(_0x6376('0x2'));var rp=require(_0x6376('0x3'));var moment=require('moment');var BPromise=require(_0x6376('0x4'));var Mustache=require(_0x6376('0x5'));var util=require(_0x6376('0x6'));var path=require(_0x6376('0x7'));var sox=require(_0x6376('0x8'));var csv=require(_0x6376('0x9'));var ejs=require(_0x6376('0xa'));var fs=require('fs');var fs_extra=require(_0x6376('0xb'));var _=require(_0x6376('0xc'));var squel=require('squel');var crypto=require(_0x6376('0xd'));var jsforce=require(_0x6376('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6376('0x9'));var querystring=require(_0x6376('0xf'));var Papa=require(_0x6376('0x10'));var Redis=require('ioredis');var authService=require(_0x6376('0x11'));var qs=require(_0x6376('0x12'));var as=require(_0x6376('0x13'));var hardwareService=require(_0x6376('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x6376('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6376('0x16'));var db=require(_0x6376('0x17'))['db'];config[_0x6376('0x18')]=_[_0x6376('0x19')](config[_0x6376('0x18')],{'host':_0x6376('0x1a'),'port':0x18eb});var socket=require(_0x6376('0x1b'))(new Redis(config[_0x6376('0x18')]));require(_0x6376('0x1c'))[_0x6376('0x1d')](socket);var jayson=require(_0x6376('0x1e'));var client=jayson[_0x6376('0x1f')][_0x6376('0x20')]({'port':0x232c});var client9002=jayson[_0x6376('0x1f')][_0x6376('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x1cd63a,_0x1683c8,_0x376c25,_0x53449d){return new BPromise(function(_0x1bdfee,_0x5e10f9){var _0x3b7680=_0x53449d||client;return _0x3b7680['request'](_0x1cd63a,_0x376c25)[_0x6376('0x21')](function(_0x290296){logger[_0x6376('0x22')](_0x6376('0x23'),_0x1683c8,'request\x20sent');logger['debug'](_0x6376('0x24'),_0x1683c8,_0x6376('0x25'),JSON['stringify'](_0x290296));if(_0x290296['error']){if(_0x290296[_0x6376('0x26')]['code']===0x1f4){logger[_0x6376('0x26')]('OpenchannelMessage,\x20%s,\x20%s',_0x1683c8,_0x290296[_0x6376('0x26')][_0x6376('0x27')]);return _0x5e10f9(_0x290296['error'][_0x6376('0x27')]);}logger['error'](_0x6376('0x23'),_0x1683c8,_0x290296[_0x6376('0x26')]['message']);return _0x1bdfee(_0x290296['error'][_0x6376('0x27')]);}else{logger[_0x6376('0x22')](_0x6376('0x23'),_0x1683c8,'request\x20sent');_0x1bdfee(_0x290296[_0x6376('0x28')][_0x6376('0x27')]);}})[_0x6376('0x29')](function(_0x55cf3c){logger[_0x6376('0x26')](_0x6376('0x23'),_0x1683c8,_0x55cf3c);_0x5e10f9(_0x55cf3c);});});}function respondWithStatusCode(_0x14a5fb,_0x2bcb7b){_0x2bcb7b=_0x2bcb7b||0xcc;return function(_0x22bd5f){if(_0x22bd5f){return _0x14a5fb[_0x6376('0x2a')](_0x2bcb7b);}return _0x14a5fb[_0x6376('0x2b')](_0x2bcb7b)['end']();};}function respondWithResult(_0xc0945a,_0x177c31){_0x177c31=_0x177c31||0xc8;return function(_0x5665f2){if(_0x5665f2){return _0xc0945a['status'](_0x177c31)['json'](_0x5665f2);}};}function respondWithFilteredResult(_0x1b9e77,_0x3a3025){return function(_0x726f2b){if(_0x726f2b){var _0x17d999=typeof _0x3a3025[_0x6376('0x2c')]===_0x6376('0x2d')&&typeof _0x3a3025[_0x6376('0x2e')]==='undefined';var _0x4b7286=_0x726f2b[_0x6376('0x2f')];var _0x11811b=_0x17d999?0x0:_0x3a3025[_0x6376('0x2c')];var _0x3f138f=_0x17d999?_0x726f2b[_0x6376('0x2f')]:_0x3a3025[_0x6376('0x2c')]+_0x3a3025[_0x6376('0x2e')];var _0x1059f7;if(_0x3f138f>=_0x4b7286){_0x3f138f=_0x4b7286;_0x1059f7=0xc8;}else{_0x1059f7=0xce;}_0x1b9e77[_0x6376('0x2b')](_0x1059f7);return _0x1b9e77[_0x6376('0x30')](_0x6376('0x31'),_0x11811b+'-'+_0x3f138f+'/'+_0x4b7286)['json'](_0x726f2b);}return null;};}function patchUpdates(_0x46482a){return function(_0xc07912){try{jsonpatch['apply'](_0xc07912,_0x46482a,!![]);}catch(_0x493b2d){return BPromise[_0x6376('0x32')](_0x493b2d);}return _0xc07912[_0x6376('0x33')]();};}function saveUpdates(_0x18e2de,_0x420e9a){return function(_0x24b5d1){if(_0x24b5d1){return _0x24b5d1[_0x6376('0x34')](_0x18e2de)[_0x6376('0x21')](function(_0x3c58d9){return _0x3c58d9;});}return null;};}function removeEntity(_0x4360bd,_0x18ebc7){return function(_0x8dd866){if(_0x8dd866){return _0x8dd866[_0x6376('0x35')]()[_0x6376('0x21')](function(){_0x4360bd['status'](0xcc)[_0x6376('0x36')]();});}};}function handleEntityNotFound(_0x144fb6,_0x184970){return function(_0x106ca8){if(!_0x106ca8){_0x144fb6[_0x6376('0x2a')](0x194);}return _0x106ca8;};}function handleError(_0x4e68f7,_0x406471){_0x406471=_0x406471||0x1f4;return function(_0x27ea25){logger[_0x6376('0x26')](_0x27ea25[_0x6376('0x37')]);if(_0x27ea25[_0x6376('0x38')]){delete _0x27ea25[_0x6376('0x38')];}_0x4e68f7[_0x6376('0x2b')](_0x406471)['send'](_0x27ea25);};}exports[_0x6376('0x39')]=function(_0x4d3af4,_0x2e30d4){var _0x3d366d={},_0x435df5={},_0x204c44={'count':0x0,'rows':[]};var _0x4bfe43=_['map'](db[_0x6376('0x3a')][_0x6376('0x3b')],function(_0x437b14){return{'name':_0x437b14[_0x6376('0x3c')],'type':_0x437b14['type'][_0x6376('0x3d')]};});_0x435df5[_0x6376('0x3e')]=_['map'](_0x4bfe43,_0x6376('0x38'));_0x435df5[_0x6376('0x3f')]=_[_0x6376('0x40')](_0x4d3af4[_0x6376('0x3f')]);_0x435df5['filters']=_[_0x6376('0x41')](_0x435df5[_0x6376('0x3e')],_0x435df5['query']);_0x3d366d[_0x6376('0x42')]=_[_0x6376('0x41')](_0x435df5['model'],qs[_0x6376('0x43')](_0x4d3af4['query'][_0x6376('0x43')]));_0x3d366d[_0x6376('0x42')]=_0x3d366d[_0x6376('0x42')]['length']?_0x3d366d['attributes']:_0x435df5[_0x6376('0x3e')];if(!_0x4d3af4['query'][_0x6376('0x44')](_0x6376('0x45'))){_0x3d366d[_0x6376('0x2e')]=qs[_0x6376('0x2e')](_0x4d3af4['query'][_0x6376('0x2e')]);_0x3d366d[_0x6376('0x2c')]=qs[_0x6376('0x2c')](_0x4d3af4[_0x6376('0x3f')]['offset']);}_0x3d366d[_0x6376('0x46')]=qs[_0x6376('0x47')](_0x4d3af4[_0x6376('0x3f')][_0x6376('0x47')]);_0x3d366d[_0x6376('0x48')]=qs[_0x6376('0x49')](_[_0x6376('0x4a')](_0x4d3af4[_0x6376('0x3f')],_0x435df5[_0x6376('0x49')]),_0x4bfe43);if(_0x4d3af4[_0x6376('0x3f')][_0x6376('0x4b')]){_0x3d366d[_0x6376('0x48')]=_['merge'](_0x3d366d[_0x6376('0x48')],{'$or':_[_0x6376('0x4c')](_0x4bfe43,function(_0x216660){if(_0x216660[_0x6376('0x4d')]!==_0x6376('0x4e')){var _0x3b768f={};_0x3b768f[_0x216660[_0x6376('0x38')]]={'$like':'%'+_0x4d3af4['query']['filter']+'%'};return _0x3b768f;}})});}_0x3d366d=_[_0x6376('0x4f')]({},_0x3d366d,_0x4d3af4[_0x6376('0x50')]);var _0x2876a9={'where':_0x3d366d[_0x6376('0x48')]};return db['OpenchannelMessage'][_0x6376('0x2f')](_0x2876a9)[_0x6376('0x21')](function(_0x2d839b){_0x204c44['count']=_0x2d839b;if(_0x4d3af4[_0x6376('0x3f')][_0x6376('0x51')]){_0x3d366d[_0x6376('0x52')]=[{'all':!![]}];}return db[_0x6376('0x3a')][_0x6376('0x53')](_0x3d366d);})['then'](function(_0x1402e8){_0x204c44[_0x6376('0x54')]=_0x1402e8;return _0x204c44;})['then'](respondWithFilteredResult(_0x2e30d4,_0x3d366d))[_0x6376('0x29')](handleError(_0x2e30d4,null));};exports[_0x6376('0x55')]=function(_0x1ddcfb,_0x3e518d){var _0x3fe122={'raw':!![],'where':{'id':_0x1ddcfb[_0x6376('0x56')]['id']}},_0x4beccf={};_0x4beccf[_0x6376('0x3e')]=_[_0x6376('0x40')](db[_0x6376('0x3a')][_0x6376('0x3b')]);_0x4beccf[_0x6376('0x3f')]=_[_0x6376('0x40')](_0x1ddcfb[_0x6376('0x3f')]);_0x4beccf[_0x6376('0x49')]=_[_0x6376('0x41')](_0x4beccf[_0x6376('0x3e')],_0x4beccf[_0x6376('0x3f')]);_0x3fe122[_0x6376('0x42')]=_[_0x6376('0x41')](_0x4beccf['model'],qs[_0x6376('0x43')](_0x1ddcfb['query'][_0x6376('0x43')]));_0x3fe122[_0x6376('0x42')]=_0x3fe122['attributes']['length']?_0x3fe122[_0x6376('0x42')]:_0x4beccf[_0x6376('0x3e')];if(_0x1ddcfb[_0x6376('0x3f')][_0x6376('0x51')]){_0x3fe122[_0x6376('0x52')]=[{'all':!![]}];}_0x3fe122=_[_0x6376('0x4f')]({},_0x3fe122,_0x1ddcfb[_0x6376('0x50')]);return db[_0x6376('0x3a')][_0x6376('0x57')](_0x3fe122)[_0x6376('0x21')](handleEntityNotFound(_0x3e518d,null))[_0x6376('0x21')](respondWithResult(_0x3e518d,null))[_0x6376('0x29')](handleError(_0x3e518d,null));};exports[_0x6376('0x58')]=function(_0x1ffe49,_0x22cb4b){return db[_0x6376('0x3a')][_0x6376('0x58')](_0x1ffe49[_0x6376('0x59')],{})[_0x6376('0x21')](respondWithResult(_0x22cb4b,0xc9))[_0x6376('0x29')](handleError(_0x22cb4b,null));};exports['update']=function(_0x1a0e2f,_0x47dc6c){if(_0x1a0e2f[_0x6376('0x59')]['id']){delete _0x1a0e2f[_0x6376('0x59')]['id'];}return db[_0x6376('0x3a')][_0x6376('0x57')]({'where':{'id':_0x1a0e2f[_0x6376('0x56')]['id']}})[_0x6376('0x21')](handleEntityNotFound(_0x47dc6c,null))[_0x6376('0x21')](saveUpdates(_0x1a0e2f['body'],null))['then'](respondWithResult(_0x47dc6c,null))[_0x6376('0x29')](handleError(_0x47dc6c,null));};exports['destroy']=function(_0x503233,_0x2ac146){return db[_0x6376('0x3a')]['find']({'where':{'id':_0x503233[_0x6376('0x56')]['id']}})['then'](handleEntityNotFound(_0x2ac146,null))[_0x6376('0x21')](removeEntity(_0x2ac146,null))['catch'](handleError(_0x2ac146,null));};exports['describe']=function(_0x28e252,_0x4eb2f4){return db[_0x6376('0x3a')]['describe']()[_0x6376('0x21')](respondWithResult(_0x4eb2f4,null))['catch'](handleError(_0x4eb2f4,null));};var interaction_log=require('../../config/logger')(_0x6376('0x5a'));exports[_0x6376('0x5b')]=function(_0x566b29,_0x4c45ae,_0x546251){var _0x5301cd={'agent':{},'channel':_0x6376('0x5c')};if(_0x566b29[_0x6376('0x59')]['id']){delete _0x566b29[_0x6376('0x59')]['id'];}_0x566b29['body']['read']=!![];_0x566b29[_0x6376('0x59')]['readAt']=moment()['format'](_0x6376('0x5d'));_0x566b29[_0x6376('0x59')][_0x6376('0x5e')]=_0x566b29[_0x6376('0x59')]['UserId']||_0x566b29[_0x6376('0x5f')]['id'];_0x5301cd[_0x6376('0x60')]['id']=_0x566b29[_0x6376('0x59')]['UserId'];return db['OpenchannelMessage'][_0x6376('0x57')]({'where':{'id':_0x566b29[_0x6376('0x56')]['id'],'UserId':null}})[_0x6376('0x21')](handleEntityNotFound(_0x4c45ae,null))[_0x6376('0x21')](saveUpdates(_0x566b29['body'],null))[_0x6376('0x21')](function(_0x4a2b2a){if(_0x4a2b2a){_0x5301cd[_0x6376('0x27')]=_0x4a2b2a[_0x6376('0x61')]({'plain':!![]});return db[_0x6376('0x62')]['find']({'where':{'id':_0x4a2b2a[_0x6376('0x63')]}});}return null;})[_0x6376('0x21')](handleEntityNotFound(_0x4c45ae,null))['then'](function(_0x3a2fe3){if(_0x3a2fe3){return _0x3a2fe3[_0x6376('0x34')]({'UserId':_0x566b29[_0x6376('0x59')]['UserId'],'read1stAt':_['isNil'](_0x3a2fe3[_0x6376('0x64')])?moment()[_0x6376('0x65')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x6376('0x21')](function(_0x38ab89){if(_0x38ab89){_0x5301cd[_0x6376('0x66')]=_0x38ab89[_0x6376('0x61')]({'plain':!![]});interaction_log[_0x6376('0x22')](_0x6376('0x67'),_0x566b29[_0x6376('0x5f')]['id'],_0x566b29['user']['name'],_0x566b29[_0x6376('0x5f')][_0x6376('0x68')],_0x5301cd[_0x6376('0x66')]['id'],_0x566b29[_0x6376('0x59')]?JSON[_0x6376('0x69')](_0x566b29['body']):'null');return respondWithRpcPromise('AcceptMessage',_0x6376('0x6a'),_0x5301cd);}return null;})[_0x6376('0x21')](function(_0x3f2c8a){var _0x91f615=_0x6376('0x6b')+_0x3f2c8a[_0x6376('0x27')][_0x6376('0x6c')];return db[_0x6376('0x6d')][_0x6376('0x3f')](_0x91f615,{'type':db[_0x6376('0x6e')][_0x6376('0x6f')]['SELECT'],'raw':!![]})[_0x6376('0x21')](function(_0x37ddad){return _0x37ddad;});})[_0x6376('0x21')](function(_0x6f088b){if(_0x6f088b){_0x5301cd['message'][_0x6376('0x70')]=_0x6f088b[0x0];if(!_0x566b29[_0x6376('0x59')][_0x6376('0x5e')])return;return db[_0x6376('0x71')][_0x6376('0x57')]({'where':{'id':_0x566b29[_0x6376('0x59')][_0x6376('0x5e')],'role':_0x6376('0x60')},'attributes':['id','name','fullname',_0x6376('0x72'),_0x6376('0x73')],'raw':!![]});}return null;})[_0x6376('0x21')](function(_0x5f5b74){if(!_0x5f5b74)return null;_0x5301cd[_0x6376('0x27')][_0x6376('0x60')]=_0x5f5b74;return _0x5301cd;})[_0x6376('0x21')](function(_0x1d1f7c){if(_0x1d1f7c){if(_0x566b29[_0x6376('0x59')]['manual']){_0x5301cd[_0x6376('0x27')]['interface']=util[_0x6376('0x65')](_0x6376('0x74'),_0x566b29[_0x6376('0x5f')]['name']);_0x5301cd[_0x6376('0x27')][_0x6376('0x75')]=_0x5301cd[_0x6376('0x75')];_0x5301cd[_0x6376('0x27')][_0x6376('0x76')]=_0x5301cd['channel'];_0x5301cd[_0x6376('0x27')][_0x6376('0x77')]=_0x6376('0x5b');return respondWithRpcPromise(_0x6376('0x78'),'EventManager',{'event':_0x6376('0x79'),'message':_0x5301cd[_0x6376('0x27')]},client9002)[_0x6376('0x21')](function(){return _0x5301cd;});}return _0x5301cd;}return null;})[_0x6376('0x21')](respondWithResult(_0x4c45ae,null))[_0x6376('0x29')](handleError(_0x4c45ae,null));};var interaction_log=require(_0x6376('0x7a'))(_0x6376('0x5a'));exports[_0x6376('0x32')]=function(_0x1710ce,_0x9ab73c,_0xf9c823){var _0x47c113={'agent':{},'channel':'openchannel'};if(_0x1710ce[_0x6376('0x59')]['id']){delete _0x1710ce['body']['id'];}_0x1710ce[_0x6376('0x59')][_0x6376('0x5e')]=_0x1710ce[_0x6376('0x59')][_0x6376('0x5e')]||_0x1710ce['user']['id'];_0x47c113['agent']['id']=_0x1710ce[_0x6376('0x59')][_0x6376('0x5e')];return db[_0x6376('0x3a')]['find']({'where':{'id':_0x1710ce['params']['id'],'UserId':null}})[_0x6376('0x21')](handleEntityNotFound(_0x9ab73c,null))['then'](function(_0x19e921){if(_0x19e921){_0x47c113[_0x6376('0x27')]=_0x19e921[_0x6376('0x61')]({'plain':!![]});return db[_0x6376('0x62')][_0x6376('0x57')]({'where':{'id':_0x19e921[_0x6376('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x9ab73c,null))[_0x6376('0x21')](function(_0x1eb1a6){if(_0x1eb1a6){_0x47c113[_0x6376('0x66')]=_0x1eb1a6[_0x6376('0x61')]({'plain':!![]});interaction_log[_0x6376('0x22')](_0x6376('0x7b'),_0x1710ce['user']['id'],_0x1710ce['user'][_0x6376('0x38')],_0x1710ce[_0x6376('0x5f')][_0x6376('0x68')],_0x47c113[_0x6376('0x66')]['id'],_0x1710ce[_0x6376('0x59')]?JSON['stringify'](_0x1710ce['body']):'null');return respondWithRpcPromise(_0x6376('0x7c'),_0x6376('0x7d'),_0x47c113);}return null;})['then'](function(_0x46a014){var _0x4278af=_0x6376('0x6b')+_0x46a014[_0x6376('0x27')][_0x6376('0x6c')];return db['sequelize'][_0x6376('0x3f')](_0x4278af,{'type':db[_0x6376('0x6e')]['QueryTypes'][_0x6376('0x7e')],'raw':!![]})[_0x6376('0x21')](function(_0x5381ff){return _0x5381ff;});})[_0x6376('0x21')](function(_0x8e75a7){if(_0x8e75a7){_0x47c113[_0x6376('0x27')][_0x6376('0x70')]=_0x8e75a7[0x0];if(!_0x1710ce['body'][_0x6376('0x5e')])return;return db[_0x6376('0x71')][_0x6376('0x57')]({'where':{'id':_0x1710ce[_0x6376('0x59')][_0x6376('0x5e')],'role':_0x6376('0x60')},'attributes':['id',_0x6376('0x38'),_0x6376('0x7f'),_0x6376('0x72'),_0x6376('0x73')],'raw':!![]});}return null;})[_0x6376('0x21')](function(_0x56c426){if(!_0x56c426)return null;_0x47c113[_0x6376('0x27')][_0x6376('0x60')]=_0x56c426;return _0x47c113;})[_0x6376('0x21')](function(_0x58512c){if(_0x58512c){_0x58512c['message']['interface']=util[_0x6376('0x65')](_0x6376('0x74'),_0x1710ce[_0x6376('0x5f')][_0x6376('0x38')]);_0x58512c[_0x6376('0x27')][_0x6376('0x75')]=_0x47c113[_0x6376('0x75')];_0x58512c['message']['motionChannel']=_0x47c113[_0x6376('0x75')];_0x58512c[_0x6376('0x27')][_0x6376('0x77')]=_0x6376('0x32');respondWithRpcPromise(_0x6376('0x78'),_0x6376('0x78'),{'event':_0x6376('0x80'),'message':_0x58512c[_0x6376('0x27')]},client9002);return _0x47c113;}return null;})['then'](respondWithResult(_0x9ab73c,null))['catch'](handleError(_0x9ab73c,null));};
\ No newline at end of file
index 38622de..cbdb160 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fe1=['save','update','emit','hasOwnProperty','hook','exports','../../mysqldb','OpenchannelMessage','setMaxListeners'];(function(_0x8bbe95,_0x407d05){var _0x587734=function(_0xb47af){while(--_0xb47af){_0x8bbe95['push'](_0x8bbe95['shift']());}};_0x587734(++_0x407d05);}(_0x2fe1,0x8d));var _0x12fe=function(_0x32f234,_0x2aa66e){_0x32f234=_0x32f234-0x0;var _0x5b944e=_0x2fe1[_0x32f234];return _0x5b944e;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require(_0x12fe('0x0'))['db'][_0x12fe('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x12fe('0x2')](0x0);var events={'afterCreate':_0x12fe('0x3'),'afterUpdate':_0x12fe('0x4'),'afterDestroy':'remove'};function emitEvent(_0x1547fb){return function(_0x4000c0,_0x208b2b,_0x1f342a){OpenchannelMessageEvents[_0x12fe('0x5')](_0x1547fb+':'+_0x4000c0['id'],_0x4000c0);OpenchannelMessageEvents[_0x12fe('0x5')](_0x1547fb,_0x4000c0);_0x1f342a(null);};}for(var e in events){if(events[_0x12fe('0x6')](e)){var event=events[e];OpenchannelMessage[_0x12fe('0x7')](e,emitEvent(event));}}module[_0x12fe('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x8463=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events','OpenchannelMessage'];(function(_0xb5a3a1,_0x274b0a){var _0x5e46bd=function(_0x50c2e9){while(--_0x50c2e9){_0xb5a3a1['push'](_0xb5a3a1['shift']());}};_0x5e46bd(++_0x274b0a);}(_0x8463,0x1d2));var _0x3846=function(_0x24427e,_0x18d253){_0x24427e=_0x24427e-0x0;var _0xa298db=_0x8463[_0x24427e];return _0xa298db;};'use strict';var EventEmitter=require(_0x3846('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0x3846('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x3846('0x2')](0x0);var events={'afterCreate':_0x3846('0x3'),'afterUpdate':'update','afterDestroy':_0x3846('0x4')};function emitEvent(_0x207352){return function(_0x377077,_0x9236b6,_0x318934){OpenchannelMessageEvents[_0x3846('0x5')](_0x207352+':'+_0x377077['id'],_0x377077);OpenchannelMessageEvents[_0x3846('0x5')](_0x207352,_0x377077);_0x318934(null);};}for(var e in events){if(events[_0x3846('0x6')](e)){var event=events[e];OpenchannelMessage[_0x3846('0x7')](e,emitEvent(event));}}module[_0x3846('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
index 47bd52b..731369d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3423=['update','createdAt','catch','CmContact','describe','OpenchannelAccount','find','OpenchannelAccountId','OpenchannelInteraction','Interactions','Contact','keys','get','info','OpenchannelMessage,\x20%s,\x20%s','format','replyUri','length','Interaction','omit','POST','GET','afterCreate','threadId','error','inspect','finally','utf8mb4','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','toLowerCase','direction','out','isNil','UserId','findOne','OpenchannelInteractionId','then'];(function(_0x22ece2,_0x3ef319){var _0x4b0568=function(_0x53dbb1){while(--_0x53dbb1){_0x22ece2['push'](_0x22ece2['shift']());}};_0x4b0568(++_0x3ef319);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3342('0x0'))(_0x3342('0x1'));var moment=require(_0x3342('0x2'));var BPromise=require(_0x3342('0x3'));var rp=require(_0x3342('0x4'));var fs=require('fs');var path=require(_0x3342('0x5'));var rimraf=require(_0x3342('0x6'));var config=require(_0x3342('0x7'));var attributes=require(_0x3342('0x8'));module[_0x3342('0x9')]=function(_0x467453,_0x2ccbe0){return _0x467453[_0x3342('0xa')](_0x3342('0xb'),attributes,{'tableName':_0x3342('0xc'),'paranoid':![],'indexes':[{'name':_0x3342('0xd'),'fields':[_0x3342('0xe')],'type':_0x3342('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x9cc419,_0x4ae4f3,_0x582c37){var _0x2d0cb0=_0x467453['models'];var _0x5a1fba=_0x9cc419['get']({'plain':!![]});if(_0x5a1fba['direction'][_0x3342('0x10')]()==='in'||_0x5a1fba[_0x3342('0x11')]['toLowerCase']()===_0x3342('0x12')&&!_0x5a1fba['secret']&&!_[_0x3342('0x13')](_0x5a1fba[_0x3342('0x14')])){_0x2d0cb0['OpenchannelInteraction'][_0x3342('0x15')]({'where':{'id':_0x5a1fba[_0x3342('0x16')]}})[_0x3342('0x17')](function(_0xe4689e){if(_0xe4689e){_0xe4689e[_0x3342('0x18')]({'lastMsgAt':_0x5a1fba[_0x3342('0x19')],'lastMsgDirection':_0x5a1fba[_0x3342('0x11')]['toLowerCase']()});}})[_0x3342('0x1a')](function(_0x19bd71){console['error'](_0x19bd71);});}if(_0x5a1fba[_0x3342('0x11')]===_0x3342('0x12')&&!_0x5a1fba['secret']){var _0x554f9c;_0x2d0cb0[_0x3342('0x1b')][_0x3342('0x1c')]()[_0x3342('0x17')](function(_0x2075cb){return _0x2d0cb0[_0x3342('0x1d')][_0x3342('0x1e')]({'where':{'id':_0x5a1fba[_0x3342('0x1f')]},'include':[{'model':_0x2d0cb0[_0x3342('0x20')],'as':_0x3342('0x21'),'where':{'id':_0x5a1fba['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x2d0cb0[_0x3342('0x1b')],'as':_0x3342('0x22'),'attributes':_[_0x3342('0x23')](_0x2075cb)}]}]});})['then'](function(_0x3cb86f){_0x554f9c=_0x3cb86f[_0x3342('0x24')]({'plain':!![]});if(_0x554f9c&&_0x554f9c['replyUri']){logger[_0x3342('0x25')](_0x3342('0x26'),'afterCreate',util[_0x3342('0x27')]('Forwarding\x20message\x20%d\x20to\x20%s',_0x5a1fba['id'],_0x554f9c[_0x3342('0x28')]));if(_0x554f9c[_0x3342('0x21')]&&_0x554f9c[_0x3342('0x21')][_0x3342('0x29')]){_0x5a1fba[_0x3342('0x2a')]=_[_0x3342('0x2b')](_0x554f9c[_0x3342('0x21')][0x0],_0x3342('0x22'));_0x5a1fba['Contact']=_0x554f9c[_0x3342('0x21')][0x0]['Contact'];}var _0x4ae4f3={'method':_0x3342('0x2c'),'uri':encodeURI(_0x554f9c['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x4ae4f3['method']){case _0x3342('0x2d'):_0x4ae4f3['qs']=_0x5a1fba;break;case'POST':_0x4ae4f3[_0x3342('0xe')]=_0x5a1fba;break;}return rp(_0x4ae4f3)['then'](function(_0x524286){logger['info'](_0x3342('0x26'),_0x3342('0x2e'),util[_0x3342('0x27')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x5a1fba['id'],_0x554f9c[_0x3342('0x28')]));if(_0x524286[_0x3342('0xe')][_0x3342('0x2f')]&&_0x524286[_0x3342('0xe')]['threadId']!=_0x5a1fba[_0x3342('0x2a')][_0x3342('0x2f')]){return _0x2d0cb0[_0x3342('0x20')][_0x3342('0x18')]({'threadId':_0x524286[_0x3342('0xe')][_0x3342('0x2f')]},{'logging':!![],'where':{'id':_0x5a1fba[_0x3342('0x2a')]['id']}});}else{return;}})['then'](function(){return _0x9cc419[_0x3342('0x18')]({'read':!![]});})['catch'](function(_0x9c9def){logger[_0x3342('0x30')]('OpenchannelMessage,\x20%s,\x20%s',_0x3342('0x2e'),util[_0x3342('0x31')](_0x9c9def,{'showHidden':![],'depth':null}));_0x582c37();});}else{_0x582c37();}})[_0x3342('0x32')](function(){_0x582c37();});}else{_0x582c37();}}},'charset':_0x3342('0x33'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xed3c=['OpenchannelInteractionId','createdAt','catch','error','CmContact','describe','find','OpenchannelAccountId','Interactions','Contact','keys','then','get','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','omit','replyUri','GET','POST','body','Message\x20%d\x20forwarded\x20to\x20%s','threadId','Interaction','update','OpenchannelMessage,\x20%s,\x20%s','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path','./openchannelMessage.attributes','exports','fti_openchannel_messages','models','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','findOne'];(function(_0x58eec7,_0x2353db){var _0x25c5d3=function(_0x1ae895){while(--_0x1ae895){_0x58eec7['push'](_0x58eec7['shift']());}};_0x25c5d3(++_0x2353db);}(_0xed3c,0x1a6));var _0xced3=function(_0x43446f,_0x2af360){_0x43446f=_0x43446f-0x0;var _0x2a1369=_0xed3c[_0x43446f];return _0x2a1369;};'use strict';var _=require(_0xced3('0x0'));var util=require(_0xced3('0x1'));var logger=require(_0xced3('0x2'))(_0xced3('0x3'));var moment=require('moment');var BPromise=require(_0xced3('0x4'));var rp=require(_0xced3('0x5'));var fs=require('fs');var path=require(_0xced3('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xced3('0x7'));module[_0xced3('0x8')]=function(_0x2f92f8,_0x1cd694){return _0x2f92f8['define']('OpenchannelMessage',attributes,{'tableName':'openchannel_messages','paranoid':![],'indexes':[{'name':_0xced3('0x9'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4be020,_0x19a727,_0x321c42){var _0x3e5a04=_0x2f92f8[_0xced3('0xa')];var _0x1cb639=_0x4be020['get']({'plain':!![]});if(_0x1cb639[_0xced3('0xb')][_0xced3('0xc')]()==='in'||_0x1cb639[_0xced3('0xb')]['toLowerCase']()===_0xced3('0xd')&&!_0x1cb639[_0xced3('0xe')]&&!_[_0xced3('0xf')](_0x1cb639[_0xced3('0x10')])){_0x3e5a04[_0xced3('0x11')][_0xced3('0x12')]({'where':{'id':_0x1cb639[_0xced3('0x13')]}})['then'](function(_0x65bb58){if(_0x65bb58){_0x65bb58['update']({'lastMsgAt':_0x1cb639[_0xced3('0x14')],'lastMsgDirection':_0x1cb639[_0xced3('0xb')][_0xced3('0xc')]()});}})[_0xced3('0x15')](function(_0x4dd4c3){console[_0xced3('0x16')](_0x4dd4c3);});}if(_0x1cb639[_0xced3('0xb')]==='out'&&!_0x1cb639[_0xced3('0xe')]){var _0x37e2d5;_0x3e5a04[_0xced3('0x17')][_0xced3('0x18')]()['then'](function(_0x4569af){return _0x3e5a04['OpenchannelAccount'][_0xced3('0x19')]({'where':{'id':_0x1cb639[_0xced3('0x1a')]},'include':[{'model':_0x3e5a04[_0xced3('0x11')],'as':_0xced3('0x1b'),'where':{'id':_0x1cb639[_0xced3('0x13')]},'limit':0x1,'include':[{'model':_0x3e5a04[_0xced3('0x17')],'as':_0xced3('0x1c'),'attributes':_[_0xced3('0x1d')](_0x4569af)}]}]});})[_0xced3('0x1e')](function(_0x17c011){_0x37e2d5=_0x17c011[_0xced3('0x1f')]({'plain':!![]});if(_0x37e2d5&&_0x37e2d5['replyUri']){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0xced3('0x20'),util[_0xced3('0x21')](_0xced3('0x22'),_0x1cb639['id'],_0x37e2d5['replyUri']));if(_0x37e2d5[_0xced3('0x1b')]&&_0x37e2d5[_0xced3('0x1b')]['length']){_0x1cb639['Interaction']=_[_0xced3('0x23')](_0x37e2d5[_0xced3('0x1b')][0x0],_0xced3('0x1c'));_0x1cb639[_0xced3('0x1c')]=_0x37e2d5['Interactions'][0x0][_0xced3('0x1c')];}var _0x19a727={'method':'POST','uri':encodeURI(_0x37e2d5[_0xced3('0x24')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x19a727['method']){case _0xced3('0x25'):_0x19a727['qs']=_0x1cb639;break;case _0xced3('0x26'):_0x19a727[_0xced3('0x27')]=_0x1cb639;break;}return rp(_0x19a727)[_0xced3('0x1e')](function(_0x2ec2c4){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0xced3('0x20'),util['format'](_0xced3('0x28'),_0x1cb639['id'],_0x37e2d5[_0xced3('0x24')]));if(_0x2ec2c4['body'][_0xced3('0x29')]&&_0x2ec2c4[_0xced3('0x27')][_0xced3('0x29')]!=_0x1cb639[_0xced3('0x2a')][_0xced3('0x29')]){return _0x3e5a04[_0xced3('0x11')][_0xced3('0x2b')]({'threadId':_0x2ec2c4[_0xced3('0x27')][_0xced3('0x29')]},{'logging':!![],'where':{'id':_0x1cb639['Interaction']['id']}});}else{return;}})[_0xced3('0x1e')](function(){return _0x4be020[_0xced3('0x2b')]({'read':!![]});})[_0xced3('0x15')](function(_0x5867af){logger[_0xced3('0x16')](_0xced3('0x2c'),_0xced3('0x20'),util[_0xced3('0x2d')](_0x5867af,{'showHidden':![],'depth':null}));_0x321c42();});}else{_0x321c42();}})[_0xced3('0x2e')](function(){_0x321c42();});}else{_0x321c42();}}},'charset':_0xced3('0x2f'),'collate':_0xced3('0x30')});};
\ No newline at end of file
index b60a8fd..7930fc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateOpenchannelMessage','OpenchannelMessage','create','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','request'];(function(_0x12742e,_0x43f6fa){var _0x173452=function(_0x500743){while(--_0x500743){_0x12742e['push'](_0x12742e['shift']());}};_0x173452(++_0x43f6fa);}(_0xdb28,0x106));var _0x8db2=function(_0x5de332,_0x4c05c9){_0x5de332=_0x5de332-0x0;var _0x27f288=_0xdb28[_0x5de332];return _0x27f288;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});config['redis']=_[_0x8db2('0xb')](config[_0x8db2('0xc')],{'host':_0x8db2('0xd'),'port':0x18eb});var socket=require(_0x8db2('0xe'))(new Redis(config[_0x8db2('0xc')]));require(_0x8db2('0xf'))[_0x8db2('0x10')](socket);function respondWithRpcPromise(_0x4ba340,_0x30dc90,_0x476216){return new BPromise(function(_0x1f62af,_0x57015f){return client[_0x8db2('0x11')](_0x4ba340,_0x476216)[_0x8db2('0x12')](function(_0x576475){logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));logger[_0x8db2('0x16')](_0x8db2('0x17'),_0x30dc90,'request\x20sent',JSON['stringify'](_0x576475));if(_0x576475[_0x8db2('0x18')]){if(_0x576475[_0x8db2('0x18')][_0x8db2('0x19')]===0x1f4){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x57015f(_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);}logger[_0x8db2('0x18')]('OpenchannelMessage,\x20%s,\x20%s',_0x30dc90,_0x576475[_0x8db2('0x18')][_0x8db2('0x1a')]);return _0x1f62af(_0x576475['error'][_0x8db2('0x1a')]);}else{logger[_0x8db2('0x13')](_0x8db2('0x14'),_0x30dc90,_0x8db2('0x15'));_0x1f62af(_0x576475[_0x8db2('0x1b')][_0x8db2('0x1a')]);}})['catch'](function(_0x5df464){logger[_0x8db2('0x18')](_0x8db2('0x14'),_0x30dc90,_0x5df464);_0x57015f(_0x5df464);});});}exports[_0x8db2('0x1c')]=function(_0x1b64e4){var _0x58562e=this;return new Promise(function(_0x431d60,_0x36a9ff){return db[_0x8db2('0x1d')][_0x8db2('0x1e')](_0x1b64e4[_0x8db2('0x1f')],{'raw':_0x1b64e4['options']?_0x1b64e4[_0x8db2('0x20')][_0x8db2('0x21')]===undefined?!![]:![]:!![]})[_0x8db2('0x12')](function(_0x125be2){logger[_0x8db2('0x13')](_0x8db2('0x1c'),_0x1b64e4);logger[_0x8db2('0x16')]('CreateOpenchannelMessage',_0x1b64e4,JSON[_0x8db2('0x22')](_0x125be2));_0x431d60(_0x125be2);})['catch'](function(_0x5725f0){logger['error']('CreateOpenchannelMessage',_0x5725f0[_0x8db2('0x1a')],_0x1b64e4);_0x36a9ff(_0x58562e[_0x8db2('0x18')](0x1f4,_0x5725f0[_0x8db2('0x1a')]));});});};
\ No newline at end of file
+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(_0x27b923,_0x427b92){var _0x59f09c=function(_0x33b213){while(--_0x33b213){_0x27b923['push'](_0x27b923['shift']());}};_0x59f09c(++_0x427b92);}(_0x2ef3,0xba));var _0x32ef=function(_0x3cc69c,_0x3480dd){_0x3cc69c=_0x3cc69c-0x0;var _0x14f294=_0x2ef3[_0x3cc69c];return _0x14f294;};'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
index 623026b..88b9d48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8110=['emit','removeListener','register','length','openchannelMessage:','save'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x8110,0x185));var _0x0811=function(_0x1fd24e,_0x4f1323){_0x1fd24e=_0x1fd24e-0x0;var _0x598aaf=_0x8110[_0x1fd24e];return _0x598aaf;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0x0811('0x0'),'remove','update'];function createListener(_0x50711c,_0x4167c8){return function(_0x4b623f){_0x4167c8[_0x0811('0x1')](_0x50711c,_0x4b623f);};}function removeListener(_0x266310,_0x424170){return function(){OpenchannelMessageEvents[_0x0811('0x2')](_0x266310,_0x424170);};}exports[_0x0811('0x3')]=function(_0x4ed4e1){for(var _0x263e0f=0x0,_0x53b418=events[_0x0811('0x4')];_0x263e0f<_0x53b418;_0x263e0f++){var _0x375ae0=events[_0x263e0f];var _0x934f6c=createListener(_0x0811('0x5')+_0x375ae0,_0x4ed4e1);OpenchannelMessageEvents['on'](_0x375ae0,_0x934f6c);}};
\ No newline at end of file
+var _0xc748=['register','length','./openchannelMessage.events','save','remove','update','emit','removeListener'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc748,0x12a));var _0x8c74=function(_0x4b26b5,_0x4f71fd){_0x4b26b5=_0x4b26b5-0x0;var _0x4dec71=_0xc748[_0x4b26b5];return _0x4dec71;};'use strict';var OpenchannelMessageEvents=require(_0x8c74('0x0'));var events=[_0x8c74('0x1'),_0x8c74('0x2'),_0x8c74('0x3')];function createListener(_0x20d717,_0x16a81e){return function(_0x37ab3c){_0x16a81e[_0x8c74('0x4')](_0x20d717,_0x37ab3c);};}function removeListener(_0x578804,_0x4f8c7d){return function(){OpenchannelMessageEvents[_0x8c74('0x5')](_0x578804,_0x4f8c7d);};}exports[_0x8c74('0x6')]=function(_0x1020da){for(var _0x120c0e=0x0,_0x41bba2=events[_0x8c74('0x7')];_0x120c0e<_0x41bba2;_0x120c0e++){var _0x382d94=events[_0x120c0e];var _0x15efdf=createListener('openchannelMessage:'+_0x382d94,_0x1020da);OpenchannelMessageEvents['on'](_0x382d94,_0x15efdf);}};
\ No newline at end of file
index 4d7c420..f29ae7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf81a=['removeTeams','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','/:id','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','addAgents','put','update','delete','destroy'];(function(_0x2f45ea,_0x15c656){var _0x485a84=function(_0x4a1fe3){while(--_0x4a1fe3){_0x2f45ea['push'](_0x2f45ea['shift']());}};_0x485a84(++_0x15c656);}(_0xf81a,0xf3));var _0xaf81=function(_0x2a791c,_0x138255){_0x2a791c=_0x2a791c-0x0;var _0x516297=_0xf81a[_0x2a791c];return _0x516297;};'use strict';var multer=require(_0xaf81('0x0'));var util=require(_0xaf81('0x1'));var path=require(_0xaf81('0x2'));var timeout=require('connect-timeout');var express=require(_0xaf81('0x3'));var router=express[_0xaf81('0x4')]();var fs_extra=require(_0xaf81('0x5'));var auth=require(_0xaf81('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xaf81('0x7'));var controller=require(_0xaf81('0x8'));router[_0xaf81('0x9')]('/',auth[_0xaf81('0xa')](),controller[_0xaf81('0xb')]);router[_0xaf81('0x9')](_0xaf81('0xc'),auth[_0xaf81('0xa')](),controller['describe']);router[_0xaf81('0x9')](_0xaf81('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xaf81('0x9')](_0xaf81('0xe'),auth[_0xaf81('0xa')](),controller['getMembers']);router[_0xaf81('0x9')](_0xaf81('0xf'),auth[_0xaf81('0xa')](),controller[_0xaf81('0x10')]);router[_0xaf81('0x9')](_0xaf81('0x11'),auth[_0xaf81('0xa')](),controller[_0xaf81('0x12')]);router['post']('/',auth[_0xaf81('0xa')](),controller[_0xaf81('0x13')]);router[_0xaf81('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0xaf81('0x15')]);router[_0xaf81('0x14')](_0xaf81('0x11'),auth[_0xaf81('0xa')](),controller[_0xaf81('0x16')]);router[_0xaf81('0x17')](_0xaf81('0xd'),auth['isAuthenticated'](),controller[_0xaf81('0x18')]);router[_0xaf81('0x19')](_0xaf81('0xd'),auth[_0xaf81('0xa')](),controller[_0xaf81('0x1a')]);router[_0xaf81('0x19')](_0xaf81('0xf'),auth[_0xaf81('0xa')](),controller[_0xaf81('0x1b')]);router[_0xaf81('0x19')](_0xaf81('0x11'),auth[_0xaf81('0xa')](),controller[_0xaf81('0x1c')]);module[_0xaf81('0x1d')]=router;
\ No newline at end of file
+var _0x8bbb=['/:id/members','getMembers','/:id/teams','getTeams','getAgents','create','post','addTeams','/:id/users','addAgents','put','/:id','destroy','delete','removeTeams','removeAgents','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelQueue.controller','get','isAuthenticated','index','/describe','describe','show'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8bbb,0x109));var _0xb8bb=function(_0xed5f9c,_0x5a25cd){_0xed5f9c=_0xed5f9c-0x0;var _0x3a1c43=_0x8bbb[_0xed5f9c];return _0x3a1c43;};'use strict';var multer=require(_0xb8bb('0x0'));var util=require(_0xb8bb('0x1'));var path=require('path');var timeout=require(_0xb8bb('0x2'));var express=require('express');var router=express[_0xb8bb('0x3')]();var fs_extra=require(_0xb8bb('0x4'));var auth=require(_0xb8bb('0x5'));var interaction=require(_0xb8bb('0x6'));var config=require('../../config/environment');var controller=require(_0xb8bb('0x7'));router[_0xb8bb('0x8')]('/',auth[_0xb8bb('0x9')](),controller[_0xb8bb('0xa')]);router[_0xb8bb('0x8')](_0xb8bb('0xb'),auth[_0xb8bb('0x9')](),controller[_0xb8bb('0xc')]);router[_0xb8bb('0x8')]('/:id',auth[_0xb8bb('0x9')](),controller[_0xb8bb('0xd')]);router[_0xb8bb('0x8')](_0xb8bb('0xe'),auth[_0xb8bb('0x9')](),controller[_0xb8bb('0xf')]);router[_0xb8bb('0x8')](_0xb8bb('0x10'),auth['isAuthenticated'](),controller[_0xb8bb('0x11')]);router[_0xb8bb('0x8')]('/:id/users',auth['isAuthenticated'](),controller[_0xb8bb('0x12')]);router['post']('/',auth[_0xb8bb('0x9')](),controller[_0xb8bb('0x13')]);router[_0xb8bb('0x14')](_0xb8bb('0x10'),auth['isAuthenticated'](),controller[_0xb8bb('0x15')]);router['post'](_0xb8bb('0x16'),auth[_0xb8bb('0x9')](),controller[_0xb8bb('0x17')]);router[_0xb8bb('0x18')]('/:id',auth[_0xb8bb('0x9')](),controller['update']);router['delete'](_0xb8bb('0x19'),auth[_0xb8bb('0x9')](),controller[_0xb8bb('0x1a')]);router[_0xb8bb('0x1b')](_0xb8bb('0x10'),auth[_0xb8bb('0x9')](),controller[_0xb8bb('0x1c')]);router['delete'](_0xb8bb('0x16'),auth[_0xb8bb('0x9')](),controller[_0xb8bb('0x1d')]);module[_0xb8bb('0x1e')]=router;
\ No newline at end of file
index 0810d96..1922ffa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cfc=['STRING','name','beepall','roundrobin','sequelize','exports'];(function(_0x51380e,_0x55b897){var _0x2ed390=function(_0x217cfe){while(--_0x217cfe){_0x51380e['push'](_0x51380e['shift']());}};_0x2ed390(++_0x55b897);}(_0x8cfc,0x106));var _0xc8cf=function(_0x59500c,_0x23afdd){_0x59500c=_0x59500c-0x0;var _0x3aec6c=_0x8cfc[_0x59500c];return _0x3aec6c;};'use strict';var Sequelize=require(_0xc8cf('0x0'));module[_0xc8cf('0x1')]={'name':{'type':Sequelize[_0xc8cf('0x2')],'unique':_0xc8cf('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xc8cf('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0xc8cf('0x4'),_0xc8cf('0x5'))}};
\ No newline at end of file
+var _0x2d4b=['ENUM','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0x4bee59,_0x48f132){var _0x3ed6bb=function(_0x2b6c48){while(--_0x2b6c48){_0x4bee59['push'](_0x4bee59['shift']());}};_0x3ed6bb(++_0x48f132);}(_0x2d4b,0x18b));var _0xb2d4=function(_0x47375a,_0x3d96ac){_0x47375a=_0x47375a-0x0;var _0x317a80=_0x2d4b[_0x47375a];return _0x317a80;};'use strict';var Sequelize=require(_0xb2d4('0x0'));module[_0xb2d4('0x1')]={'name':{'type':Sequelize[_0xb2d4('0x2')],'unique':_0xb2d4('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb2d4('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb2d4('0x4')]('rrmemory',_0xb2d4('0x5'),_0xb2d4('0x6'))}};
\ No newline at end of file
index cb8b192..6934600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf89=['offset','undefined','limit','count','Content-Range','json','apply','save','then','destroy','get','OpenchannelQueues','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','OpenchannelQueue','includeAll','include','findAll','rows','show','params','keys','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','order','pick','OpenchannelQueueId','UserOpenchannelQueue','findAndCountAll','UserId','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','User','Agents','interface','flatMap','sequelize','transaction','each','forEach','emit','userOpenchannelQueue:save','removeTeams','select','from','team_has_openchannel_queues','join','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','TeamId','includes','all','compact','isEmpty','removeAgents','addAgents','omit','isArray','userOpenchannelQueue:remove','getAgents','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','path','sox','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end'];(function(_0x4cd62b,_0x3a53ba){var _0x57b32e=function(_0xc0c554){while(--_0xc0c554){_0x4cd62b['push'](_0x4cd62b['shift']());}};_0x57b32e(++_0x3a53ba);}(_0xbf89,0x182));var _0x9bf8=function(_0x1fdce6,_0x4412d9){_0x1fdce6=_0x1fdce6-0x0;var _0x36b546=_0xbf89[_0x1fdce6];return _0x36b546;};'use strict';var emlformat=require(_0x9bf8('0x0'));var rimraf=require(_0x9bf8('0x1'));var zipdir=require(_0x9bf8('0x2'));var jsonpatch=require(_0x9bf8('0x3'));var rp=require(_0x9bf8('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x9bf8('0x5'));var sox=require(_0x9bf8('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9bf8('0x7'));var _=require(_0x9bf8('0x8'));var squel=require(_0x9bf8('0x9'));var crypto=require('crypto');var jsforce=require(_0x9bf8('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x9bf8('0xb'));var querystring=require(_0x9bf8('0xc'));var Papa=require(_0x9bf8('0xd'));var Redis=require(_0x9bf8('0xe'));var authService=require(_0x9bf8('0xf'));var qs=require(_0x9bf8('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9bf8('0x11'));var logger=require(_0x9bf8('0x12'))('api');var utils=require(_0x9bf8('0x13'));var config=require(_0x9bf8('0x14'));var licenseUtil=require(_0x9bf8('0x15'));var db=require(_0x9bf8('0x16'))['db'];config['redis']=_['defaults'](config[_0x9bf8('0x17')],{'host':_0x9bf8('0x18'),'port':0x18eb});var socket=require(_0x9bf8('0x19'))(new Redis(config['redis']));require(_0x9bf8('0x1a'))[_0x9bf8('0x1b')](socket);function respondWithStatusCode(_0x24bfb6,_0x4466e7){_0x4466e7=_0x4466e7||0xcc;return function(_0x56799c){if(_0x56799c){return _0x24bfb6[_0x9bf8('0x1c')](_0x4466e7);}return _0x24bfb6[_0x9bf8('0x1d')](_0x4466e7)[_0x9bf8('0x1e')]();};}function respondWithResult(_0x47fd55,_0x3b7ab4){_0x3b7ab4=_0x3b7ab4||0xc8;return function(_0xe1fb63){if(_0xe1fb63){return _0x47fd55[_0x9bf8('0x1d')](_0x3b7ab4)['json'](_0xe1fb63);}};}function respondWithFilteredResult(_0x1e76ee,_0x4fcc9b){return function(_0x1fe2db){if(_0x1fe2db){var _0x5ef117=typeof _0x4fcc9b[_0x9bf8('0x1f')]===_0x9bf8('0x20')&&typeof _0x4fcc9b[_0x9bf8('0x21')]===_0x9bf8('0x20');var _0x11f28c=_0x1fe2db[_0x9bf8('0x22')];var _0x2eac28=_0x5ef117?0x0:_0x4fcc9b[_0x9bf8('0x1f')];var _0x4249a6=_0x5ef117?_0x1fe2db[_0x9bf8('0x22')]:_0x4fcc9b[_0x9bf8('0x1f')]+_0x4fcc9b['limit'];var _0x122528;if(_0x4249a6>=_0x11f28c){_0x4249a6=_0x11f28c;_0x122528=0xc8;}else{_0x122528=0xce;}_0x1e76ee[_0x9bf8('0x1d')](_0x122528);return _0x1e76ee['set'](_0x9bf8('0x23'),_0x2eac28+'-'+_0x4249a6+'/'+_0x11f28c)[_0x9bf8('0x24')](_0x1fe2db);}return null;};}function patchUpdates(_0x388da1){return function(_0x3697af){try{jsonpatch[_0x9bf8('0x25')](_0x3697af,_0x388da1,!![]);}catch(_0x5b8846){return BPromise['reject'](_0x5b8846);}return _0x3697af[_0x9bf8('0x26')]();};}function saveUpdates(_0x324bbb,_0xdcbe4b){return function(_0x337133){if(_0x337133){return _0x337133['update'](_0x324bbb)[_0x9bf8('0x27')](function(_0x262907){return _0x262907;});}return null;};}function removeEntity(_0x3f9ed4,_0x4bd905){return function(_0x2677e5){if(_0x2677e5){return _0x2677e5[_0x9bf8('0x28')]()[_0x9bf8('0x27')](function(){var _0x19785e=_0x2677e5[_0x9bf8('0x29')]({'plain':!![]});var _0x15a46b=_0x9bf8('0x2a');return db['UserProfileResource'][_0x9bf8('0x28')]({'where':{'type':_0x15a46b,'resourceId':_0x19785e['id']}})[_0x9bf8('0x27')](function(){return _0x2677e5;});})[_0x9bf8('0x27')](function(){_0x3f9ed4[_0x9bf8('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2272d6,_0x47b206){return function(_0x4756c9){if(!_0x4756c9){_0x2272d6[_0x9bf8('0x1c')](0x194);}return _0x4756c9;};}function handleError(_0x4c1fd2,_0xe53417){_0xe53417=_0xe53417||0x1f4;return function(_0x5300b0){logger[_0x9bf8('0x2b')](_0x5300b0[_0x9bf8('0x2c')]);if(_0x5300b0[_0x9bf8('0x2d')]){delete _0x5300b0[_0x9bf8('0x2d')];}_0x4c1fd2[_0x9bf8('0x1d')](_0xe53417)[_0x9bf8('0x2e')](_0x5300b0);};}exports[_0x9bf8('0x2f')]=function(_0x4356fe,_0x2434e0){var _0xdc913e={},_0x5e1d5f={},_0x5a9e60={'count':0x0,'rows':[]};var _0x5760da=_[_0x9bf8('0x30')](db['OpenchannelQueue'][_0x9bf8('0x31')],function(_0x2d25e0){return{'name':_0x2d25e0[_0x9bf8('0x32')],'type':_0x2d25e0[_0x9bf8('0x33')][_0x9bf8('0x34')]};});_0x5e1d5f[_0x9bf8('0x35')]=_['map'](_0x5760da,_0x9bf8('0x2d'));_0x5e1d5f[_0x9bf8('0x36')]=_['keys'](_0x4356fe[_0x9bf8('0x36')]);_0x5e1d5f[_0x9bf8('0x37')]=_[_0x9bf8('0x38')](_0x5e1d5f[_0x9bf8('0x35')],_0x5e1d5f[_0x9bf8('0x36')]);_0xdc913e[_0x9bf8('0x39')]=_[_0x9bf8('0x38')](_0x5e1d5f['model'],qs[_0x9bf8('0x3a')](_0x4356fe['query']['fields']));_0xdc913e['attributes']=_0xdc913e[_0x9bf8('0x39')][_0x9bf8('0x3b')]?_0xdc913e[_0x9bf8('0x39')]:_0x5e1d5f['model'];if(!_0x4356fe[_0x9bf8('0x36')][_0x9bf8('0x3c')](_0x9bf8('0x3d'))){_0xdc913e['limit']=qs[_0x9bf8('0x21')](_0x4356fe[_0x9bf8('0x36')][_0x9bf8('0x21')]);_0xdc913e[_0x9bf8('0x1f')]=qs[_0x9bf8('0x1f')](_0x4356fe['query'][_0x9bf8('0x1f')]);}_0xdc913e['order']=qs[_0x9bf8('0x3e')](_0x4356fe['query'][_0x9bf8('0x3e')]);_0xdc913e[_0x9bf8('0x3f')]=qs[_0x9bf8('0x37')](_['pick'](_0x4356fe['query'],_0x5e1d5f[_0x9bf8('0x37')]),_0x5760da);if(_0x4356fe[_0x9bf8('0x36')][_0x9bf8('0x40')]){_0xdc913e[_0x9bf8('0x3f')]=_[_0x9bf8('0x41')](_0xdc913e['where'],{'$or':_[_0x9bf8('0x30')](_0x5760da,function(_0xf09d95){if(_0xf09d95['type']!==_0x9bf8('0x42')){var _0xeb75d2={};_0xeb75d2[_0xf09d95[_0x9bf8('0x2d')]]={'$like':'%'+_0x4356fe[_0x9bf8('0x36')][_0x9bf8('0x40')]+'%'};return _0xeb75d2;}})});}_0xdc913e=_[_0x9bf8('0x41')]({},_0xdc913e,_0x4356fe[_0x9bf8('0x43')]);var _0x4b8f79={'where':_0xdc913e['where']};return db[_0x9bf8('0x44')][_0x9bf8('0x22')](_0x4b8f79)['then'](function(_0x4a4393){_0x5a9e60['count']=_0x4a4393;if(_0x4356fe[_0x9bf8('0x36')][_0x9bf8('0x45')]){_0xdc913e[_0x9bf8('0x46')]=[{'all':!![]}];}return db[_0x9bf8('0x44')][_0x9bf8('0x47')](_0xdc913e);})[_0x9bf8('0x27')](function(_0x344ab0){_0x5a9e60[_0x9bf8('0x48')]=_0x344ab0;return _0x5a9e60;})[_0x9bf8('0x27')](respondWithFilteredResult(_0x2434e0,_0xdc913e))['catch'](handleError(_0x2434e0,null));};exports[_0x9bf8('0x49')]=function(_0x10df31,_0x323260){var _0x1dc332={'raw':!![],'where':{'id':_0x10df31[_0x9bf8('0x4a')]['id']}},_0x1153b1={};_0x1153b1['model']=_[_0x9bf8('0x4b')](db[_0x9bf8('0x44')][_0x9bf8('0x31')]);_0x1153b1['query']=_[_0x9bf8('0x4b')](_0x10df31['query']);_0x1153b1['filters']=_[_0x9bf8('0x38')](_0x1153b1['model'],_0x1153b1[_0x9bf8('0x36')]);_0x1dc332['attributes']=_[_0x9bf8('0x38')](_0x1153b1['model'],qs[_0x9bf8('0x3a')](_0x10df31[_0x9bf8('0x36')][_0x9bf8('0x3a')]));_0x1dc332[_0x9bf8('0x39')]=_0x1dc332[_0x9bf8('0x39')]['length']?_0x1dc332['attributes']:_0x1153b1[_0x9bf8('0x35')];if(_0x10df31[_0x9bf8('0x36')][_0x9bf8('0x45')]){_0x1dc332['include']=[{'all':!![]}];}_0x1dc332=_[_0x9bf8('0x41')]({},_0x1dc332,_0x10df31[_0x9bf8('0x43')]);return db[_0x9bf8('0x44')][_0x9bf8('0x4c')](_0x1dc332)[_0x9bf8('0x27')](handleEntityNotFound(_0x323260,null))['then'](respondWithResult(_0x323260,null))[_0x9bf8('0x4d')](handleError(_0x323260,null));};exports['create']=function(_0x59ffe9,_0xa48c44){return db[_0x9bf8('0x44')][_0x9bf8('0x4e')](_0x59ffe9[_0x9bf8('0x4f')],{})[_0x9bf8('0x27')](function(_0x2b0ac3){var _0x10d765=_0x59ffe9[_0x9bf8('0x50')][_0x9bf8('0x29')]({'plain':!![]});if(!_0x10d765)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x10d765[_0x9bf8('0x51')]===_0x9bf8('0x50')){var _0x477095=_0x2b0ac3[_0x9bf8('0x29')]({'plain':!![]});var _0x3acaf9=_0x9bf8('0x2a');return db[_0x9bf8('0x52')][_0x9bf8('0x4c')]({'where':{'name':_0x3acaf9,'userProfileId':_0x10d765[_0x9bf8('0x53')]},'raw':!![]})[_0x9bf8('0x27')](function(_0x494157){if(_0x494157&&_0x494157[_0x9bf8('0x54')]===0x0){return db['UserProfileResource'][_0x9bf8('0x4e')]({'name':_0x477095[_0x9bf8('0x2d')],'resourceId':_0x477095['id'],'type':_0x494157[_0x9bf8('0x2d')],'sectionId':_0x494157['id']},{})['then'](function(){return _0x2b0ac3;});}else{return _0x2b0ac3;}})['catch'](function(_0x122593){logger[_0x9bf8('0x2b')](_0x9bf8('0x55'),_0x122593);throw _0x122593;});}return _0x2b0ac3;})['then'](respondWithResult(_0xa48c44,0xc9))[_0x9bf8('0x4d')](handleError(_0xa48c44,null));};exports['update']=function(_0x5b2f96,_0x28136b){if(_0x5b2f96['body']['id']){delete _0x5b2f96[_0x9bf8('0x4f')]['id'];}return db[_0x9bf8('0x44')][_0x9bf8('0x4c')]({'where':{'id':_0x5b2f96[_0x9bf8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x28136b,null))[_0x9bf8('0x27')](saveUpdates(_0x5b2f96[_0x9bf8('0x4f')],null))[_0x9bf8('0x27')](respondWithResult(_0x28136b,null))[_0x9bf8('0x4d')](handleError(_0x28136b,null));};exports[_0x9bf8('0x28')]=function(_0xc5853c,_0x250d11){return db[_0x9bf8('0x44')][_0x9bf8('0x4c')]({'where':{'id':_0xc5853c['params']['id']}})[_0x9bf8('0x27')](handleEntityNotFound(_0x250d11,null))['then'](removeEntity(_0x250d11,null))[_0x9bf8('0x4d')](handleError(_0x250d11,null));};exports[_0x9bf8('0x56')]=function(_0x34fd05,_0x279072){return db[_0x9bf8('0x44')][_0x9bf8('0x56')]()['then'](respondWithResult(_0x279072,null))[_0x9bf8('0x4d')](handleError(_0x279072,null));};exports[_0x9bf8('0x57')]=function(_0x4059c0,_0x173eeb,_0x1489da){var _0x5459c3={'raw':!![],'where':{}},_0x1e63c7={},_0x3fd0f6;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x4059c0[_0x9bf8('0x4a')]['id']}})[_0x9bf8('0x27')](handleEntityNotFound(_0x173eeb,null))['then'](function(_0x433316){if(_0x433316){_0x3fd0f6=_0x433316[_0x9bf8('0x29')]({'plain':!![]});_0x1e63c7[_0x9bf8('0x35')]=_['keys'](db['UserOpenchannelQueue'][_0x9bf8('0x31')]);_0x1e63c7['query']=_[_0x9bf8('0x4b')](_0x4059c0[_0x9bf8('0x36')]);_0x1e63c7[_0x9bf8('0x37')]=_[_0x9bf8('0x38')](_0x1e63c7['model'],_0x1e63c7[_0x9bf8('0x36')]);_0x5459c3[_0x9bf8('0x39')]=_[_0x9bf8('0x38')](_0x1e63c7[_0x9bf8('0x35')],qs['fields'](_0x4059c0[_0x9bf8('0x36')][_0x9bf8('0x3a')]));_0x5459c3['attributes']=_0x5459c3[_0x9bf8('0x39')][_0x9bf8('0x3b')]?_0x5459c3[_0x9bf8('0x39')]:_0x1e63c7[_0x9bf8('0x35')];if(!_0x4059c0[_0x9bf8('0x36')][_0x9bf8('0x3c')](_0x9bf8('0x3d'))){_0x5459c3[_0x9bf8('0x21')]=qs['limit'](_0x4059c0[_0x9bf8('0x36')][_0x9bf8('0x21')]);_0x5459c3[_0x9bf8('0x1f')]=qs[_0x9bf8('0x1f')](_0x4059c0[_0x9bf8('0x36')]['offset']);}_0x5459c3[_0x9bf8('0x58')]=qs[_0x9bf8('0x3e')](_0x4059c0[_0x9bf8('0x36')]['sort']);_0x5459c3[_0x9bf8('0x3f')]=qs[_0x9bf8('0x37')](_[_0x9bf8('0x59')](_0x4059c0[_0x9bf8('0x36')],_0x1e63c7[_0x9bf8('0x37')]));_0x5459c3[_0x9bf8('0x3f')][_0x9bf8('0x5a')]=_0x433316['id'];if(_0x4059c0['query'][_0x9bf8('0x40')]){_0x5459c3[_0x9bf8('0x3f')]=_[_0x9bf8('0x41')](_0x5459c3[_0x9bf8('0x3f')],{'$or':_[_0x9bf8('0x30')](_0x5459c3[_0x9bf8('0x39')],function(_0x4b2031){var _0x317679={};_0x317679[_0x4b2031]={'$like':'%'+_0x4059c0[_0x9bf8('0x36')][_0x9bf8('0x40')]+'%'};return _0x317679;})});}_0x5459c3=_['merge']({},_0x5459c3,_0x4059c0['options']);return db[_0x9bf8('0x5b')][_0x9bf8('0x47')](_0x5459c3);}})['then'](function(_0xdd04f0){if(_0xdd04f0){return db['User'][_0x9bf8('0x5c')]({'where':{'id':_[_0x9bf8('0x30')](_0xdd04f0,_0x9bf8('0x5d')),'role':_0x9bf8('0x5e')},'attributes':['id',_0x9bf8('0x2d'),_0x9bf8('0x5f'),_0x9bf8('0x60'),_0x9bf8('0x61')]});}})[_0x9bf8('0x27')](function(_0x4dfc09){if(_0x4dfc09){return{'count':_0x4dfc09['count'],'rows':_[_0x9bf8('0x30')](_0x4dfc09[_0x9bf8('0x48')],function(_0x2f729b){return{'membername':_0x2f729b['name'],'UserId':_0x2f729b['id'],'queue_name':_0x3fd0f6['name'],'OpenchannelQueueId':_0x3fd0f6['id'],'interface':util[_0x9bf8('0x62')](_0x9bf8('0x63'),_0x9bf8('0x64'),_0x2f729b[_0x9bf8('0x2d')]),'penalty':0x0,'paused':_0x2f729b['openchannelPause'],'createdAt':_0x2f729b[_0x9bf8('0x61')],'updatedAt':_0x2f729b[_0x9bf8('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x173eeb,_0x5459c3))[_0x9bf8('0x4d')](handleError(_0x173eeb,null));};exports[_0x9bf8('0x65')]=function(_0x1d48a3,_0x1182c5,_0x223014){var _0x104555={};var _0x30f1d9={};var _0x4d985b;var _0x506363;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x1d48a3['params']['id']}})[_0x9bf8('0x27')](handleEntityNotFound(_0x1182c5,null))[_0x9bf8('0x27')](function(_0x5e9f8b){if(_0x5e9f8b){_0x4d985b=_0x5e9f8b;_0x30f1d9[_0x9bf8('0x35')]=_[_0x9bf8('0x4b')](db[_0x9bf8('0x66')][_0x9bf8('0x31')]);_0x30f1d9['query']=_[_0x9bf8('0x4b')](_0x1d48a3[_0x9bf8('0x36')]);_0x30f1d9['filters']=_[_0x9bf8('0x38')](_0x30f1d9['model'],_0x30f1d9[_0x9bf8('0x36')]);_0x104555[_0x9bf8('0x39')]=_[_0x9bf8('0x38')](_0x30f1d9[_0x9bf8('0x35')],qs[_0x9bf8('0x3a')](_0x1d48a3[_0x9bf8('0x36')]['fields']));_0x104555[_0x9bf8('0x39')]=_0x104555[_0x9bf8('0x39')][_0x9bf8('0x3b')]?_0x104555[_0x9bf8('0x39')]:_0x30f1d9['model'];_0x104555[_0x9bf8('0x58')]=qs['sort'](_0x1d48a3[_0x9bf8('0x36')][_0x9bf8('0x3e')]);_0x104555['where']=qs[_0x9bf8('0x37')](_['pick'](_0x1d48a3[_0x9bf8('0x36')],_0x30f1d9[_0x9bf8('0x37')]));if(_0x1d48a3[_0x9bf8('0x36')][_0x9bf8('0x40')]){_0x104555[_0x9bf8('0x3f')]=_['merge'](_0x104555['where'],{'$or':_['map'](_0x104555[_0x9bf8('0x39')],function(_0x195f7f){var _0x1c6093={};_0x1c6093[_0x195f7f]={'$like':'%'+_0x1d48a3[_0x9bf8('0x36')][_0x9bf8('0x40')]+'%'};return _0x1c6093;})});}_0x104555=_[_0x9bf8('0x41')]({},_0x104555,_0x1d48a3['options']);return _0x4d985b['getTeams'](_0x104555);}})[_0x9bf8('0x27')](function(_0x5a6dcb){if(_0x5a6dcb){_0x506363=_0x5a6dcb[_0x9bf8('0x3b')];if(!_0x1d48a3[_0x9bf8('0x36')][_0x9bf8('0x3c')](_0x9bf8('0x3d'))){_0x104555[_0x9bf8('0x21')]=qs[_0x9bf8('0x21')](_0x1d48a3[_0x9bf8('0x36')][_0x9bf8('0x21')]);_0x104555[_0x9bf8('0x1f')]=qs[_0x9bf8('0x1f')](_0x1d48a3[_0x9bf8('0x36')][_0x9bf8('0x1f')]);}return _0x4d985b['getTeams'](_0x104555);}})['then'](function(_0x50a811){if(_0x50a811){return _0x50a811?{'count':_0x506363,'rows':_0x50a811}:null;}})['then'](respondWithResult(_0x1182c5,null))[_0x9bf8('0x4d')](handleError(_0x1182c5,null));};exports[_0x9bf8('0x67')]=function(_0x18d507,_0x5d4780,_0x565e75){var _0x50990c=_0x18d507[_0x9bf8('0x4f')][_0x9bf8('0x68')];return db[_0x9bf8('0x66')]['findAll']({'where':{'id':_0x50990c},'attributes':['id'],'include':[{'model':db[_0x9bf8('0x69')],'as':_0x9bf8('0x6a'),'attributes':['id','name','online','voicePause',_0x9bf8('0x6b')],'raw':!![]}]})['then'](function(_0x3abdbe){if(_0x3abdbe){var _0x277bff=_[_0x9bf8('0x6c')](_0x3abdbe,function(_0x1a5d01){var _0x2d0715=_0x1a5d01['get']({'plain':!![]});return _0x2d0715[_0x9bf8('0x6a')];});return db[_0x9bf8('0x44')][_0x9bf8('0x4c')]({'where':{'id':_0x18d507[_0x9bf8('0x4a')]['id']}})[_0x9bf8('0x27')](function(_0x1f2554){return db[_0x9bf8('0x6d')][_0x9bf8('0x6e')](function(_0x415c8d){return _0x1f2554[_0x9bf8('0x67')](_0x50990c,{'transaction':_0x415c8d})[_0x9bf8('0x27')](function(){return BPromise[_0x9bf8('0x6f')](_0x277bff,function(_0x11b617){return db[_0x9bf8('0x5b')]['findOrCreate']({'where':{'UserId':_0x11b617['id'],'OpenchannelQueueId':_0x18d507[_0x9bf8('0x4a')]['id']},'transaction':_0x415c8d});});})[_0x9bf8('0x27')](function(){_0x277bff[_0x9bf8('0x70')](function(_0x1ecf85){socket[_0x9bf8('0x71')](_0x9bf8('0x72'),{'UserId':_0x1ecf85['id'],'OpenchannelQueueId':_0x1f2554['id']});});});});});}})[_0x9bf8('0x27')](respondWithStatusCode(_0x5d4780,null))[_0x9bf8('0x4d')](handleError(_0x5d4780,null));};exports[_0x9bf8('0x73')]=function(_0x4b8d15,_0x5d77ba,_0xb38b78){return db[_0x9bf8('0x66')]['findAll']({'where':{'id':_0x4b8d15['query'][_0x9bf8('0x68')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x9bf8('0x6a'),'attributes':['id'],'raw':!![]}]})[_0x9bf8('0x27')](handleEntityNotFound(_0x5d77ba,null))[_0x9bf8('0x27')](function(_0x1a25f9){var _0x116572=_[_0x9bf8('0x30')](_0x1a25f9,'id');var _0x268603=[];var _0x243fab=[];var _0x2870e1=squel[_0x9bf8('0x74')]();_0x2870e1['field']('tq.TeamId')[_0x9bf8('0x75')](_0x9bf8('0x76'),'tq')[_0x9bf8('0x77')]('user_has_teams','ut',_0x9bf8('0x78'))['where'](_0x9bf8('0x79'),_0x4b8d15['params']['id']);for(var _0x1f559c=0x0;_0x1f559c<_0x1a25f9[_0x9bf8('0x3b')];_0x1f559c+=0x1){let _0x5927ef=_0x1a25f9[_0x1f559c];for(var _0x26a05b=0x0;_0x26a05b<_0x5927ef[_0x9bf8('0x6a')][_0x9bf8('0x3b')];_0x26a05b+=0x1){let _0x2655b8=_0x5927ef[_0x9bf8('0x6a')][_0x26a05b];var _0x48f510=_0x2870e1[_0x9bf8('0x7a')]();_0x48f510[_0x9bf8('0x3f')](_0x9bf8('0x7b'),_0x2655b8['id']);_0x243fab['push'](db[_0x9bf8('0x6d')][_0x9bf8('0x36')](_0x48f510[_0x9bf8('0x7c')](),{'type':db[_0x9bf8('0x6d')][_0x9bf8('0x7d')][_0x9bf8('0x7e')]})[_0x9bf8('0x27')](function(_0x5bc804){if(_0x5bc804[_0x9bf8('0x3b')]===0x1){return _0x2655b8['id'];}else{var _0xde84fa=_['every'](_['map'](_0x5bc804,_0x9bf8('0x7f')),function(_0x388ea8){return _[_0x9bf8('0x80')](_0x116572,_0x388ea8);});if(_0xde84fa){return _0x2655b8['id'];}}}));}}return BPromise[_0x9bf8('0x81')](_0x243fab)['then'](function(_0x4bb79e){_0x268603=_(_0x268603)['union'](_0x4bb79e)[_0x9bf8('0x82')]()['value']();return db[_0x9bf8('0x44')]['find']({'where':{'id':_0x4b8d15[_0x9bf8('0x4a')]['id']}})[_0x9bf8('0x27')](function(_0x1fcaee){return db[_0x9bf8('0x6d')][_0x9bf8('0x6e')](function(_0x487526){return _0x1fcaee['removeTeams'](_0x4b8d15[_0x9bf8('0x36')]['ids'],{'transaction':_0x487526})['then'](function(){if(!_[_0x9bf8('0x83')](_0x268603)){return _0x1fcaee[_0x9bf8('0x84')](_0x268603,{'transaction':_0x487526});}})[_0x9bf8('0x27')](function(){_0x268603[_0x9bf8('0x70')](function(_0x570121){socket[_0x9bf8('0x71')]('userOpenchannelQueue:remove',{'UserId':_0x570121,'OpenchannelQueueId':_0x1fcaee['id']});});});});});});})[_0x9bf8('0x27')](respondWithStatusCode(_0x5d77ba,null))[_0x9bf8('0x4d')](handleError(_0x5d77ba,null));};exports[_0x9bf8('0x85')]=function(_0x20f403,_0x4aa76c,_0x1743c2){return db[_0x9bf8('0x44')][_0x9bf8('0x4c')]({'where':{'id':_0x20f403[_0x9bf8('0x4a')]['id']}})[_0x9bf8('0x27')](handleEntityNotFound(_0x4aa76c,null))[_0x9bf8('0x27')](function(_0x486eb9){if(_0x486eb9){return _0x486eb9[_0x9bf8('0x85')](_0x20f403[_0x9bf8('0x4f')][_0x9bf8('0x68')],_[_0x9bf8('0x86')](_0x20f403['body'],[_0x9bf8('0x68'),'id'])||{})['spread'](function(_0x28f6d9){for(var _0x4ffbee=0x0;_0x4ffbee<_0x20f403[_0x9bf8('0x4f')][_0x9bf8('0x68')][_0x9bf8('0x3b')];_0x4ffbee+=0x1){socket['emit']('userOpenchannelQueue:save',{'UserId':Number(_0x20f403['body'][_0x9bf8('0x68')][_0x4ffbee]),'OpenchannelQueueId':Number(_0x20f403[_0x9bf8('0x4a')]['id'])});}return _0x28f6d9;});}})['then'](respondWithResult(_0x4aa76c,null))[_0x9bf8('0x4d')](handleError(_0x4aa76c,null));};exports[_0x9bf8('0x84')]=function(_0x391ade,_0x18488c,_0x5235e4){return db['OpenchannelQueue'][_0x9bf8('0x4c')]({'where':{'id':_0x391ade[_0x9bf8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x18488c,null))[_0x9bf8('0x27')](function(_0x3f3cfb){if(_0x3f3cfb){return _0x3f3cfb[_0x9bf8('0x84')](_0x391ade[_0x9bf8('0x36')][_0x9bf8('0x68')])[_0x9bf8('0x27')](function(){if(_[_0x9bf8('0x87')](_0x391ade[_0x9bf8('0x36')][_0x9bf8('0x68')])){for(var _0x1e4747=0x0;_0x1e4747<_0x391ade[_0x9bf8('0x36')][_0x9bf8('0x68')][_0x9bf8('0x3b')];_0x1e4747+=0x1){socket[_0x9bf8('0x71')](_0x9bf8('0x88'),{'UserId':Number(_0x391ade[_0x9bf8('0x36')][_0x9bf8('0x68')][_0x1e4747]),'OpenchannelQueueId':Number(_0x391ade[_0x9bf8('0x4a')]['id'])});}}else{socket[_0x9bf8('0x71')](_0x9bf8('0x88'),{'UserId':Number(_0x391ade[_0x9bf8('0x36')]['ids']),'OpenchannelQueueId':Number(_0x391ade[_0x9bf8('0x4a')]['id'])});}});}})['then'](respondWithStatusCode(_0x18488c,null))['catch'](handleError(_0x18488c,null));};exports[_0x9bf8('0x89')]=function(_0x2219b2,_0x4e5668,_0x4c60a4){var _0x23376e={};var _0x262151={};var _0x57ada7;var _0x51ea94;return db[_0x9bf8('0x44')][_0x9bf8('0x8a')]({'where':{'id':_0x2219b2[_0x9bf8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4e5668,null))[_0x9bf8('0x27')](function(_0x3cf02a){if(_0x3cf02a){_0x57ada7=_0x3cf02a;_0x262151[_0x9bf8('0x35')]=_['keys'](db[_0x9bf8('0x69')]['rawAttributes']);_0x262151['query']=_[_0x9bf8('0x4b')](_0x2219b2[_0x9bf8('0x36')]);_0x262151['filters']=_[_0x9bf8('0x38')](_0x262151['model'],_0x262151['query']);_0x23376e['attributes']=_[_0x9bf8('0x38')](_0x262151[_0x9bf8('0x35')],qs['fields'](_0x2219b2[_0x9bf8('0x36')][_0x9bf8('0x3a')]));_0x23376e[_0x9bf8('0x39')]=_0x23376e['attributes']['length']?_0x23376e[_0x9bf8('0x39')]:_0x262151[_0x9bf8('0x35')];_0x23376e[_0x9bf8('0x58')]=qs[_0x9bf8('0x3e')](_0x2219b2[_0x9bf8('0x36')][_0x9bf8('0x3e')]);_0x23376e[_0x9bf8('0x3f')]=qs[_0x9bf8('0x37')](_[_0x9bf8('0x59')](_0x2219b2[_0x9bf8('0x36')],_0x262151[_0x9bf8('0x37')]));if(_0x2219b2[_0x9bf8('0x36')]['filter']){_0x23376e[_0x9bf8('0x3f')]=_[_0x9bf8('0x41')](_0x23376e['where'],{'$or':_['map'](_0x23376e[_0x9bf8('0x39')],function(_0x1c0edf){var _0x2c4a56={};_0x2c4a56[_0x1c0edf]={'$like':'%'+_0x2219b2[_0x9bf8('0x36')][_0x9bf8('0x40')]+'%'};return _0x2c4a56;})});}_0x23376e=_['merge']({},_0x23376e,_0x2219b2[_0x9bf8('0x43')]);return _0x57ada7[_0x9bf8('0x89')](_0x23376e);}})[_0x9bf8('0x27')](function(_0x3571ba){if(_0x3571ba){_0x51ea94=_0x3571ba[_0x9bf8('0x3b')];if(!_0x2219b2['query'][_0x9bf8('0x3c')](_0x9bf8('0x3d'))){_0x23376e[_0x9bf8('0x21')]=qs[_0x9bf8('0x21')](_0x2219b2[_0x9bf8('0x36')][_0x9bf8('0x21')]);_0x23376e['offset']=qs[_0x9bf8('0x1f')](_0x2219b2['query']['offset']);}return _0x57ada7['getAgents'](_0x23376e);}})[_0x9bf8('0x27')](function(_0x40f028){if(_0x40f028){return _0x40f028?{'count':_0x51ea94,'rows':_0x40f028}:null;}})[_0x9bf8('0x27')](respondWithResult(_0x4e5668,null))['catch'](handleError(_0x4e5668,null));};
\ No newline at end of file
+var _0xfc93=['addTeams','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','userOpenchannelQueue:save','removeTeams','ids','select','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','OpenchannelQueueId\x20=\x20?','push','toString','SELECT','every','TeamId','includes','value','isEmpty','removeAgents','emit','userOpenchannelQueue:remove','addAgents','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','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','./openchannelQueue.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','map','OpenchannelQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserOpenchannelQueue','length','sort','OpenchannelQueueId','findAll','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team'];(function(_0x23a7fc,_0xf96953){var _0x4e28ff=function(_0x5654b5){while(--_0x5654b5){_0x23a7fc['push'](_0x23a7fc['shift']());}};_0x4e28ff(++_0xf96953);}(_0xfc93,0xb4));var _0x3fc9=function(_0x551e63,_0x50b6e2){_0x551e63=_0x551e63-0x0;var _0x58011d=_0xfc93[_0x551e63];return _0x58011d;};'use strict';var emlformat=require(_0x3fc9('0x0'));var rimraf=require(_0x3fc9('0x1'));var zipdir=require(_0x3fc9('0x2'));var jsonpatch=require(_0x3fc9('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3fc9('0x4'));var Mustache=require('mustache');var util=require(_0x3fc9('0x5'));var path=require(_0x3fc9('0x6'));var sox=require(_0x3fc9('0x7'));var csv=require(_0x3fc9('0x8'));var ejs=require(_0x3fc9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3fc9('0xa'));var squel=require(_0x3fc9('0xb'));var crypto=require(_0x3fc9('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3fc9('0x8'));var querystring=require('querystring');var Papa=require(_0x3fc9('0xd'));var Redis=require(_0x3fc9('0xe'));var authService=require(_0x3fc9('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x3fc9('0x10'));var hardwareService=require(_0x3fc9('0x11'));var logger=require(_0x3fc9('0x12'))(_0x3fc9('0x13'));var utils=require(_0x3fc9('0x14'));var config=require(_0x3fc9('0x15'));var licenseUtil=require(_0x3fc9('0x16'));var db=require(_0x3fc9('0x17'))['db'];config[_0x3fc9('0x18')]=_[_0x3fc9('0x19')](config[_0x3fc9('0x18')],{'host':_0x3fc9('0x1a'),'port':0x18eb});var socket=require(_0x3fc9('0x1b'))(new Redis(config[_0x3fc9('0x18')]));require(_0x3fc9('0x1c'))[_0x3fc9('0x1d')](socket);function respondWithStatusCode(_0x3a7ddc,_0x3286ca){_0x3286ca=_0x3286ca||0xcc;return function(_0x159e14){if(_0x159e14){return _0x3a7ddc[_0x3fc9('0x1e')](_0x3286ca);}return _0x3a7ddc[_0x3fc9('0x1f')](_0x3286ca)['end']();};}function respondWithResult(_0x3b18d8,_0x1434c7){_0x1434c7=_0x1434c7||0xc8;return function(_0x4c8994){if(_0x4c8994){return _0x3b18d8[_0x3fc9('0x1f')](_0x1434c7)['json'](_0x4c8994);}};}function respondWithFilteredResult(_0x54d950,_0x3aa327){return function(_0x810980){if(_0x810980){var _0x12753a=typeof _0x3aa327[_0x3fc9('0x20')]===_0x3fc9('0x21')&&typeof _0x3aa327[_0x3fc9('0x22')]===_0x3fc9('0x21');var _0x585eec=_0x810980[_0x3fc9('0x23')];var _0x2e15ba=_0x12753a?0x0:_0x3aa327[_0x3fc9('0x20')];var _0x1ba6f1=_0x12753a?_0x810980[_0x3fc9('0x23')]:_0x3aa327[_0x3fc9('0x20')]+_0x3aa327[_0x3fc9('0x22')];var _0x23889d;if(_0x1ba6f1>=_0x585eec){_0x1ba6f1=_0x585eec;_0x23889d=0xc8;}else{_0x23889d=0xce;}_0x54d950[_0x3fc9('0x1f')](_0x23889d);return _0x54d950[_0x3fc9('0x24')](_0x3fc9('0x25'),_0x2e15ba+'-'+_0x1ba6f1+'/'+_0x585eec)[_0x3fc9('0x26')](_0x810980);}return null;};}function patchUpdates(_0x475789){return function(_0x39e261){try{jsonpatch[_0x3fc9('0x27')](_0x39e261,_0x475789,!![]);}catch(_0x2d6dbd){return BPromise['reject'](_0x2d6dbd);}return _0x39e261[_0x3fc9('0x28')]();};}function saveUpdates(_0x132d37,_0x497c20){return function(_0x571d04){if(_0x571d04){return _0x571d04['update'](_0x132d37)[_0x3fc9('0x29')](function(_0x42f350){return _0x42f350;});}return null;};}function removeEntity(_0x165034,_0x3d7bc4){return function(_0x1255c5){if(_0x1255c5){return _0x1255c5[_0x3fc9('0x2a')]()[_0x3fc9('0x29')](function(){var _0xff42e5=_0x1255c5[_0x3fc9('0x2b')]({'plain':!![]});var _0x358cb0=_0x3fc9('0x2c');return db[_0x3fc9('0x2d')][_0x3fc9('0x2a')]({'where':{'type':_0x358cb0,'resourceId':_0xff42e5['id']}})[_0x3fc9('0x29')](function(){return _0x1255c5;});})[_0x3fc9('0x29')](function(){_0x165034[_0x3fc9('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x548f5f,_0x24bd1a){return function(_0x3a17b4){if(!_0x3a17b4){_0x548f5f[_0x3fc9('0x1e')](0x194);}return _0x3a17b4;};}function handleError(_0x2ee486,_0x4401d1){_0x4401d1=_0x4401d1||0x1f4;return function(_0x5039b2){logger[_0x3fc9('0x2e')](_0x5039b2[_0x3fc9('0x2f')]);if(_0x5039b2[_0x3fc9('0x30')]){delete _0x5039b2['name'];}_0x2ee486[_0x3fc9('0x1f')](_0x4401d1)[_0x3fc9('0x31')](_0x5039b2);};}exports['index']=function(_0x1fa9da,_0x7e1f53){var _0x5dcf18={},_0x46ed9e={},_0x4eb936={'count':0x0,'rows':[]};var _0x14ea33=_[_0x3fc9('0x32')](db[_0x3fc9('0x33')][_0x3fc9('0x34')],function(_0x2513f6){return{'name':_0x2513f6[_0x3fc9('0x35')],'type':_0x2513f6[_0x3fc9('0x36')][_0x3fc9('0x37')]};});_0x46ed9e[_0x3fc9('0x38')]=_[_0x3fc9('0x32')](_0x14ea33,_0x3fc9('0x30'));_0x46ed9e[_0x3fc9('0x39')]=_[_0x3fc9('0x3a')](_0x1fa9da[_0x3fc9('0x39')]);_0x46ed9e[_0x3fc9('0x3b')]=_[_0x3fc9('0x3c')](_0x46ed9e[_0x3fc9('0x38')],_0x46ed9e[_0x3fc9('0x39')]);_0x5dcf18['attributes']=_[_0x3fc9('0x3c')](_0x46ed9e['model'],qs[_0x3fc9('0x3d')](_0x1fa9da['query'][_0x3fc9('0x3d')]));_0x5dcf18[_0x3fc9('0x3e')]=_0x5dcf18[_0x3fc9('0x3e')]['length']?_0x5dcf18['attributes']:_0x46ed9e[_0x3fc9('0x38')];if(!_0x1fa9da[_0x3fc9('0x39')][_0x3fc9('0x3f')](_0x3fc9('0x40'))){_0x5dcf18[_0x3fc9('0x22')]=qs[_0x3fc9('0x22')](_0x1fa9da[_0x3fc9('0x39')][_0x3fc9('0x22')]);_0x5dcf18['offset']=qs[_0x3fc9('0x20')](_0x1fa9da[_0x3fc9('0x39')]['offset']);}_0x5dcf18[_0x3fc9('0x41')]=qs['sort'](_0x1fa9da[_0x3fc9('0x39')]['sort']);_0x5dcf18[_0x3fc9('0x42')]=qs[_0x3fc9('0x3b')](_[_0x3fc9('0x43')](_0x1fa9da['query'],_0x46ed9e['filters']),_0x14ea33);if(_0x1fa9da[_0x3fc9('0x39')]['filter']){_0x5dcf18[_0x3fc9('0x42')]=_[_0x3fc9('0x44')](_0x5dcf18[_0x3fc9('0x42')],{'$or':_[_0x3fc9('0x32')](_0x14ea33,function(_0x59d185){if(_0x59d185['type']!==_0x3fc9('0x45')){var _0x2ca1e7={};_0x2ca1e7[_0x59d185['name']]={'$like':'%'+_0x1fa9da[_0x3fc9('0x39')][_0x3fc9('0x46')]+'%'};return _0x2ca1e7;}})});}_0x5dcf18=_['merge']({},_0x5dcf18,_0x1fa9da[_0x3fc9('0x47')]);var _0x45bdb2={'where':_0x5dcf18[_0x3fc9('0x42')]};return db[_0x3fc9('0x33')][_0x3fc9('0x23')](_0x45bdb2)[_0x3fc9('0x29')](function(_0x199a09){_0x4eb936[_0x3fc9('0x23')]=_0x199a09;if(_0x1fa9da[_0x3fc9('0x39')][_0x3fc9('0x48')]){_0x5dcf18[_0x3fc9('0x49')]=[{'all':!![]}];}return db[_0x3fc9('0x33')]['findAll'](_0x5dcf18);})[_0x3fc9('0x29')](function(_0x2f6ceb){_0x4eb936[_0x3fc9('0x4a')]=_0x2f6ceb;return _0x4eb936;})['then'](respondWithFilteredResult(_0x7e1f53,_0x5dcf18))['catch'](handleError(_0x7e1f53,null));};exports[_0x3fc9('0x4b')]=function(_0x28cf5e,_0xc1654d){var _0x17810b={'raw':!![],'where':{'id':_0x28cf5e[_0x3fc9('0x4c')]['id']}},_0x12e8dc={};_0x12e8dc['model']=_[_0x3fc9('0x3a')](db[_0x3fc9('0x33')][_0x3fc9('0x34')]);_0x12e8dc[_0x3fc9('0x39')]=_['keys'](_0x28cf5e[_0x3fc9('0x39')]);_0x12e8dc['filters']=_[_0x3fc9('0x3c')](_0x12e8dc[_0x3fc9('0x38')],_0x12e8dc['query']);_0x17810b['attributes']=_['intersection'](_0x12e8dc[_0x3fc9('0x38')],qs['fields'](_0x28cf5e[_0x3fc9('0x39')]['fields']));_0x17810b[_0x3fc9('0x3e')]=_0x17810b[_0x3fc9('0x3e')]['length']?_0x17810b['attributes']:_0x12e8dc[_0x3fc9('0x38')];if(_0x28cf5e[_0x3fc9('0x39')]['includeAll']){_0x17810b[_0x3fc9('0x49')]=[{'all':!![]}];}_0x17810b=_[_0x3fc9('0x44')]({},_0x17810b,_0x28cf5e[_0x3fc9('0x47')]);return db['OpenchannelQueue'][_0x3fc9('0x4d')](_0x17810b)[_0x3fc9('0x29')](handleEntityNotFound(_0xc1654d,null))[_0x3fc9('0x29')](respondWithResult(_0xc1654d,null))[_0x3fc9('0x4e')](handleError(_0xc1654d,null));};exports[_0x3fc9('0x4f')]=function(_0x225995,_0x5e5417){return db[_0x3fc9('0x33')][_0x3fc9('0x4f')](_0x225995[_0x3fc9('0x50')],{})[_0x3fc9('0x29')](function(_0x1086f7){var _0x1053fe=_0x225995[_0x3fc9('0x51')]['get']({'plain':!![]});if(!_0x1053fe)throw new Error(_0x3fc9('0x52'));if(_0x1053fe[_0x3fc9('0x53')]==='user'){var _0x1c9492=_0x1086f7['get']({'plain':!![]});var _0x3396b5=_0x3fc9('0x2c');return db[_0x3fc9('0x54')][_0x3fc9('0x4d')]({'where':{'name':_0x3396b5,'userProfileId':_0x1053fe[_0x3fc9('0x55')]},'raw':!![]})[_0x3fc9('0x29')](function(_0x2caef1){if(_0x2caef1&&_0x2caef1[_0x3fc9('0x56')]===0x0){return db[_0x3fc9('0x2d')][_0x3fc9('0x4f')]({'name':_0x1c9492[_0x3fc9('0x30')],'resourceId':_0x1c9492['id'],'type':_0x2caef1[_0x3fc9('0x30')],'sectionId':_0x2caef1['id']},{})[_0x3fc9('0x29')](function(){return _0x1086f7;});}else{return _0x1086f7;}})[_0x3fc9('0x4e')](function(_0x1c4f17){logger[_0x3fc9('0x2e')](_0x3fc9('0x57'),_0x1c4f17);throw _0x1c4f17;});}return _0x1086f7;})[_0x3fc9('0x29')](respondWithResult(_0x5e5417,0xc9))[_0x3fc9('0x4e')](handleError(_0x5e5417,null));};exports['update']=function(_0x18b556,_0x571cad){if(_0x18b556[_0x3fc9('0x50')]['id']){delete _0x18b556[_0x3fc9('0x50')]['id'];}return db[_0x3fc9('0x33')][_0x3fc9('0x4d')]({'where':{'id':_0x18b556[_0x3fc9('0x4c')]['id']}})[_0x3fc9('0x29')](handleEntityNotFound(_0x571cad,null))[_0x3fc9('0x29')](saveUpdates(_0x18b556['body'],null))[_0x3fc9('0x29')](respondWithResult(_0x571cad,null))['catch'](handleError(_0x571cad,null));};exports[_0x3fc9('0x2a')]=function(_0x112021,_0x1f62d5){return db['OpenchannelQueue']['find']({'where':{'id':_0x112021['params']['id']}})[_0x3fc9('0x29')](handleEntityNotFound(_0x1f62d5,null))[_0x3fc9('0x29')](removeEntity(_0x1f62d5,null))['catch'](handleError(_0x1f62d5,null));};exports[_0x3fc9('0x58')]=function(_0x13cb9b,_0x455ef6){return db[_0x3fc9('0x33')][_0x3fc9('0x58')]()[_0x3fc9('0x29')](respondWithResult(_0x455ef6,null))[_0x3fc9('0x4e')](handleError(_0x455ef6,null));};exports[_0x3fc9('0x59')]=function(_0x37693f,_0x1fab95,_0x3d51b3){var _0x445183={'raw':!![],'where':{}},_0x5ecb1e={},_0x456ef6;return db['OpenchannelQueue'][_0x3fc9('0x5a')]({'where':{'id':_0x37693f[_0x3fc9('0x4c')]['id']}})[_0x3fc9('0x29')](handleEntityNotFound(_0x1fab95,null))[_0x3fc9('0x29')](function(_0x1df9bb){if(_0x1df9bb){_0x456ef6=_0x1df9bb[_0x3fc9('0x2b')]({'plain':!![]});_0x5ecb1e[_0x3fc9('0x38')]=_['keys'](db[_0x3fc9('0x5b')][_0x3fc9('0x34')]);_0x5ecb1e[_0x3fc9('0x39')]=_[_0x3fc9('0x3a')](_0x37693f[_0x3fc9('0x39')]);_0x5ecb1e[_0x3fc9('0x3b')]=_[_0x3fc9('0x3c')](_0x5ecb1e['model'],_0x5ecb1e['query']);_0x445183[_0x3fc9('0x3e')]=_[_0x3fc9('0x3c')](_0x5ecb1e['model'],qs[_0x3fc9('0x3d')](_0x37693f[_0x3fc9('0x39')][_0x3fc9('0x3d')]));_0x445183[_0x3fc9('0x3e')]=_0x445183[_0x3fc9('0x3e')][_0x3fc9('0x5c')]?_0x445183[_0x3fc9('0x3e')]:_0x5ecb1e['model'];if(!_0x37693f[_0x3fc9('0x39')][_0x3fc9('0x3f')](_0x3fc9('0x40'))){_0x445183['limit']=qs[_0x3fc9('0x22')](_0x37693f[_0x3fc9('0x39')][_0x3fc9('0x22')]);_0x445183['offset']=qs[_0x3fc9('0x20')](_0x37693f[_0x3fc9('0x39')]['offset']);}_0x445183[_0x3fc9('0x41')]=qs[_0x3fc9('0x5d')](_0x37693f[_0x3fc9('0x39')][_0x3fc9('0x5d')]);_0x445183['where']=qs[_0x3fc9('0x3b')](_[_0x3fc9('0x43')](_0x37693f[_0x3fc9('0x39')],_0x5ecb1e[_0x3fc9('0x3b')]));_0x445183[_0x3fc9('0x42')][_0x3fc9('0x5e')]=_0x1df9bb['id'];if(_0x37693f[_0x3fc9('0x39')][_0x3fc9('0x46')]){_0x445183[_0x3fc9('0x42')]=_[_0x3fc9('0x44')](_0x445183[_0x3fc9('0x42')],{'$or':_[_0x3fc9('0x32')](_0x445183[_0x3fc9('0x3e')],function(_0x5f2a9a){var _0xd7e5ab={};_0xd7e5ab[_0x5f2a9a]={'$like':'%'+_0x37693f[_0x3fc9('0x39')][_0x3fc9('0x46')]+'%'};return _0xd7e5ab;})});}_0x445183=_[_0x3fc9('0x44')]({},_0x445183,_0x37693f[_0x3fc9('0x47')]);return db['UserOpenchannelQueue'][_0x3fc9('0x5f')](_0x445183);}})['then'](function(_0x1a018d){if(_0x1a018d){return db[_0x3fc9('0x60')][_0x3fc9('0x61')]({'where':{'id':_['map'](_0x1a018d,_0x3fc9('0x62')),'role':_0x3fc9('0x63')},'attributes':['id',_0x3fc9('0x30'),_0x3fc9('0x64'),_0x3fc9('0x65'),_0x3fc9('0x66')]});}})[_0x3fc9('0x29')](function(_0x3cf30c){if(_0x3cf30c){return{'count':_0x3cf30c[_0x3fc9('0x23')],'rows':_['map'](_0x3cf30c[_0x3fc9('0x4a')],function(_0x22eaf6){return{'membername':_0x22eaf6['name'],'UserId':_0x22eaf6['id'],'queue_name':_0x456ef6[_0x3fc9('0x30')],'OpenchannelQueueId':_0x456ef6['id'],'interface':util[_0x3fc9('0x67')](_0x3fc9('0x68'),_0x3fc9('0x69'),_0x22eaf6['name']),'penalty':0x0,'paused':_0x22eaf6[_0x3fc9('0x64')],'createdAt':_0x22eaf6[_0x3fc9('0x66')],'updatedAt':_0x22eaf6[_0x3fc9('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x3fc9('0x29')](respondWithFilteredResult(_0x1fab95,_0x445183))['catch'](handleError(_0x1fab95,null));};exports[_0x3fc9('0x6a')]=function(_0x2b54f5,_0x553bac,_0x341169){var _0x503cbf={};var _0x3b4f02={};var _0x4f7bd2;var _0x24762f;return db[_0x3fc9('0x33')][_0x3fc9('0x5a')]({'where':{'id':_0x2b54f5[_0x3fc9('0x4c')]['id']}})[_0x3fc9('0x29')](handleEntityNotFound(_0x553bac,null))['then'](function(_0x5e6a01){if(_0x5e6a01){_0x4f7bd2=_0x5e6a01;_0x3b4f02[_0x3fc9('0x38')]=_[_0x3fc9('0x3a')](db[_0x3fc9('0x6b')][_0x3fc9('0x34')]);_0x3b4f02[_0x3fc9('0x39')]=_[_0x3fc9('0x3a')](_0x2b54f5[_0x3fc9('0x39')]);_0x3b4f02[_0x3fc9('0x3b')]=_[_0x3fc9('0x3c')](_0x3b4f02[_0x3fc9('0x38')],_0x3b4f02[_0x3fc9('0x39')]);_0x503cbf[_0x3fc9('0x3e')]=_[_0x3fc9('0x3c')](_0x3b4f02[_0x3fc9('0x38')],qs[_0x3fc9('0x3d')](_0x2b54f5[_0x3fc9('0x39')]['fields']));_0x503cbf[_0x3fc9('0x3e')]=_0x503cbf[_0x3fc9('0x3e')][_0x3fc9('0x5c')]?_0x503cbf[_0x3fc9('0x3e')]:_0x3b4f02[_0x3fc9('0x38')];_0x503cbf['order']=qs[_0x3fc9('0x5d')](_0x2b54f5[_0x3fc9('0x39')][_0x3fc9('0x5d')]);_0x503cbf[_0x3fc9('0x42')]=qs[_0x3fc9('0x3b')](_[_0x3fc9('0x43')](_0x2b54f5['query'],_0x3b4f02[_0x3fc9('0x3b')]));if(_0x2b54f5[_0x3fc9('0x39')][_0x3fc9('0x46')]){_0x503cbf[_0x3fc9('0x42')]=_[_0x3fc9('0x44')](_0x503cbf[_0x3fc9('0x42')],{'$or':_['map'](_0x503cbf['attributes'],function(_0x1ff087){var _0x4d6d49={};_0x4d6d49[_0x1ff087]={'$like':'%'+_0x2b54f5[_0x3fc9('0x39')][_0x3fc9('0x46')]+'%'};return _0x4d6d49;})});}_0x503cbf=_[_0x3fc9('0x44')]({},_0x503cbf,_0x2b54f5[_0x3fc9('0x47')]);return _0x4f7bd2['getTeams'](_0x503cbf);}})[_0x3fc9('0x29')](function(_0x149df1){if(_0x149df1){_0x24762f=_0x149df1[_0x3fc9('0x5c')];if(!_0x2b54f5[_0x3fc9('0x39')]['hasOwnProperty'](_0x3fc9('0x40'))){_0x503cbf['limit']=qs[_0x3fc9('0x22')](_0x2b54f5[_0x3fc9('0x39')][_0x3fc9('0x22')]);_0x503cbf[_0x3fc9('0x20')]=qs[_0x3fc9('0x20')](_0x2b54f5[_0x3fc9('0x39')][_0x3fc9('0x20')]);}return _0x4f7bd2[_0x3fc9('0x6a')](_0x503cbf);}})[_0x3fc9('0x29')](function(_0x23ed46){if(_0x23ed46){return _0x23ed46?{'count':_0x24762f,'rows':_0x23ed46}:null;}})[_0x3fc9('0x29')](respondWithResult(_0x553bac,null))[_0x3fc9('0x4e')](handleError(_0x553bac,null));};exports[_0x3fc9('0x6c')]=function(_0x282842,_0x44cfac,_0x9c0fa5){var _0x2bebbe=_0x282842[_0x3fc9('0x50')]['ids'];return db[_0x3fc9('0x6b')][_0x3fc9('0x5f')]({'where':{'id':_0x2bebbe},'attributes':['id'],'include':[{'model':db[_0x3fc9('0x60')],'as':_0x3fc9('0x6d'),'attributes':['id','name',_0x3fc9('0x6e'),_0x3fc9('0x6f'),_0x3fc9('0x70')],'raw':!![]}]})['then'](function(_0x59a281){if(_0x59a281){var _0x20ba98=_[_0x3fc9('0x71')](_0x59a281,function(_0x12702c){var _0x42966c=_0x12702c['get']({'plain':!![]});return _0x42966c[_0x3fc9('0x6d')];});return db[_0x3fc9('0x33')][_0x3fc9('0x4d')]({'where':{'id':_0x282842[_0x3fc9('0x4c')]['id']}})[_0x3fc9('0x29')](function(_0x31259b){return db[_0x3fc9('0x72')][_0x3fc9('0x73')](function(_0x1fcba8){return _0x31259b['addTeams'](_0x2bebbe,{'transaction':_0x1fcba8})[_0x3fc9('0x29')](function(){return BPromise[_0x3fc9('0x74')](_0x20ba98,function(_0x4edcdc){return db[_0x3fc9('0x5b')][_0x3fc9('0x75')]({'where':{'UserId':_0x4edcdc['id'],'OpenchannelQueueId':_0x282842['params']['id']},'transaction':_0x1fcba8});});})['then'](function(){_0x20ba98[_0x3fc9('0x76')](function(_0x193aa0){socket['emit'](_0x3fc9('0x77'),{'UserId':_0x193aa0['id'],'OpenchannelQueueId':_0x31259b['id']});});});});});}})[_0x3fc9('0x29')](respondWithStatusCode(_0x44cfac,null))[_0x3fc9('0x4e')](handleError(_0x44cfac,null));};exports[_0x3fc9('0x78')]=function(_0x4c5c01,_0x179060,_0x5a81ca){return db[_0x3fc9('0x6b')][_0x3fc9('0x5f')]({'where':{'id':_0x4c5c01['query'][_0x3fc9('0x79')]},'attributes':['id'],'include':[{'model':db[_0x3fc9('0x60')],'as':_0x3fc9('0x6d'),'attributes':['id'],'raw':!![]}]})[_0x3fc9('0x29')](handleEntityNotFound(_0x179060,null))[_0x3fc9('0x29')](function(_0x3362ad){var _0x201ccd=_['map'](_0x3362ad,'id');var _0x1026de=[];var _0x411460=[];var _0x5925ed=squel[_0x3fc9('0x7a')]();_0x5925ed['field'](_0x3fc9('0x7b'))[_0x3fc9('0x7c')](_0x3fc9('0x7d'),'tq')[_0x3fc9('0x7e')](_0x3fc9('0x7f'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x3fc9('0x42')](_0x3fc9('0x80'),_0x4c5c01[_0x3fc9('0x4c')]['id']);for(var _0x5684da=0x0;_0x5684da<_0x3362ad['length'];_0x5684da+=0x1){let _0x457dba=_0x3362ad[_0x5684da];for(var _0x4daf7a=0x0;_0x4daf7a<_0x457dba['Agents'][_0x3fc9('0x5c')];_0x4daf7a+=0x1){let _0x1597db=_0x457dba[_0x3fc9('0x6d')][_0x4daf7a];var _0x1da54a=_0x5925ed['clone']();_0x1da54a[_0x3fc9('0x42')]('ut.UserId\x20=\x20?',_0x1597db['id']);_0x411460[_0x3fc9('0x81')](db['sequelize']['query'](_0x1da54a[_0x3fc9('0x82')](),{'type':db[_0x3fc9('0x72')]['QueryTypes'][_0x3fc9('0x83')]})[_0x3fc9('0x29')](function(_0xad2370){if(_0xad2370[_0x3fc9('0x5c')]===0x1){return _0x1597db['id'];}else{var _0x3e3794=_[_0x3fc9('0x84')](_['map'](_0xad2370,_0x3fc9('0x85')),function(_0x2d8cb4){return _[_0x3fc9('0x86')](_0x201ccd,_0x2d8cb4);});if(_0x3e3794){return _0x1597db['id'];}}}));}}return BPromise['all'](_0x411460)['then'](function(_0x3c205d){_0x1026de=_(_0x1026de)['union'](_0x3c205d)['compact']()[_0x3fc9('0x87')]();return db[_0x3fc9('0x33')]['find']({'where':{'id':_0x4c5c01['params']['id']}})['then'](function(_0x111d3d){return db[_0x3fc9('0x72')][_0x3fc9('0x73')](function(_0x18f885){return _0x111d3d['removeTeams'](_0x4c5c01[_0x3fc9('0x39')][_0x3fc9('0x79')],{'transaction':_0x18f885})[_0x3fc9('0x29')](function(){if(!_[_0x3fc9('0x88')](_0x1026de)){return _0x111d3d[_0x3fc9('0x89')](_0x1026de,{'transaction':_0x18f885});}})[_0x3fc9('0x29')](function(){_0x1026de[_0x3fc9('0x76')](function(_0x2cdf7f){socket[_0x3fc9('0x8a')](_0x3fc9('0x8b'),{'UserId':_0x2cdf7f,'OpenchannelQueueId':_0x111d3d['id']});});});});});});})['then'](respondWithStatusCode(_0x179060,null))['catch'](handleError(_0x179060,null));};exports[_0x3fc9('0x8c')]=function(_0x430c40,_0x676048,_0x166e52){return db[_0x3fc9('0x33')][_0x3fc9('0x4d')]({'where':{'id':_0x430c40[_0x3fc9('0x4c')]['id']}})[_0x3fc9('0x29')](handleEntityNotFound(_0x676048,null))['then'](function(_0x705003){if(_0x705003){return _0x705003[_0x3fc9('0x8c')](_0x430c40[_0x3fc9('0x50')][_0x3fc9('0x79')],_['omit'](_0x430c40[_0x3fc9('0x50')],[_0x3fc9('0x79'),'id'])||{})[_0x3fc9('0x8d')](function(_0x326f30){for(var _0x3f26cf=0x0;_0x3f26cf<_0x430c40['body'][_0x3fc9('0x79')][_0x3fc9('0x5c')];_0x3f26cf+=0x1){socket[_0x3fc9('0x8a')](_0x3fc9('0x77'),{'UserId':Number(_0x430c40[_0x3fc9('0x50')][_0x3fc9('0x79')][_0x3f26cf]),'OpenchannelQueueId':Number(_0x430c40[_0x3fc9('0x4c')]['id'])});}return _0x326f30;});}})['then'](respondWithResult(_0x676048,null))[_0x3fc9('0x4e')](handleError(_0x676048,null));};exports['removeAgents']=function(_0x4028da,_0x7d0b69,_0x295581){return db['OpenchannelQueue'][_0x3fc9('0x4d')]({'where':{'id':_0x4028da['params']['id']}})[_0x3fc9('0x29')](handleEntityNotFound(_0x7d0b69,null))[_0x3fc9('0x29')](function(_0x4a5e6a){if(_0x4a5e6a){return _0x4a5e6a['removeAgents'](_0x4028da[_0x3fc9('0x39')][_0x3fc9('0x79')])[_0x3fc9('0x29')](function(){if(_[_0x3fc9('0x8e')](_0x4028da[_0x3fc9('0x39')]['ids'])){for(var _0x2e8887=0x0;_0x2e8887<_0x4028da[_0x3fc9('0x39')][_0x3fc9('0x79')][_0x3fc9('0x5c')];_0x2e8887+=0x1){socket[_0x3fc9('0x8a')](_0x3fc9('0x8b'),{'UserId':Number(_0x4028da[_0x3fc9('0x39')][_0x3fc9('0x79')][_0x2e8887]),'OpenchannelQueueId':Number(_0x4028da[_0x3fc9('0x4c')]['id'])});}}else{socket['emit'](_0x3fc9('0x8b'),{'UserId':Number(_0x4028da[_0x3fc9('0x39')][_0x3fc9('0x79')]),'OpenchannelQueueId':Number(_0x4028da[_0x3fc9('0x4c')]['id'])});}});}})[_0x3fc9('0x29')](respondWithStatusCode(_0x7d0b69,null))['catch'](handleError(_0x7d0b69,null));};exports[_0x3fc9('0x8f')]=function(_0x406601,_0x28a052,_0x5b38fc){var _0x3e41fd={};var _0x306cbb={};var _0x570170;var _0x575771;return db[_0x3fc9('0x33')][_0x3fc9('0x5a')]({'where':{'id':_0x406601[_0x3fc9('0x4c')]['id']}})['then'](handleEntityNotFound(_0x28a052,null))['then'](function(_0x12926b){if(_0x12926b){_0x570170=_0x12926b;_0x306cbb['model']=_['keys'](db[_0x3fc9('0x60')][_0x3fc9('0x34')]);_0x306cbb[_0x3fc9('0x39')]=_[_0x3fc9('0x3a')](_0x406601['query']);_0x306cbb['filters']=_[_0x3fc9('0x3c')](_0x306cbb[_0x3fc9('0x38')],_0x306cbb['query']);_0x3e41fd[_0x3fc9('0x3e')]=_[_0x3fc9('0x3c')](_0x306cbb[_0x3fc9('0x38')],qs[_0x3fc9('0x3d')](_0x406601[_0x3fc9('0x39')]['fields']));_0x3e41fd[_0x3fc9('0x3e')]=_0x3e41fd[_0x3fc9('0x3e')][_0x3fc9('0x5c')]?_0x3e41fd[_0x3fc9('0x3e')]:_0x306cbb[_0x3fc9('0x38')];_0x3e41fd['order']=qs[_0x3fc9('0x5d')](_0x406601[_0x3fc9('0x39')][_0x3fc9('0x5d')]);_0x3e41fd['where']=qs[_0x3fc9('0x3b')](_[_0x3fc9('0x43')](_0x406601[_0x3fc9('0x39')],_0x306cbb[_0x3fc9('0x3b')]));if(_0x406601[_0x3fc9('0x39')]['filter']){_0x3e41fd[_0x3fc9('0x42')]=_['merge'](_0x3e41fd[_0x3fc9('0x42')],{'$or':_[_0x3fc9('0x32')](_0x3e41fd[_0x3fc9('0x3e')],function(_0x3f2190){var _0xbedd9b={};_0xbedd9b[_0x3f2190]={'$like':'%'+_0x406601[_0x3fc9('0x39')]['filter']+'%'};return _0xbedd9b;})});}_0x3e41fd=_[_0x3fc9('0x44')]({},_0x3e41fd,_0x406601['options']);return _0x570170[_0x3fc9('0x8f')](_0x3e41fd);}})[_0x3fc9('0x29')](function(_0x27f3b6){if(_0x27f3b6){_0x575771=_0x27f3b6[_0x3fc9('0x5c')];if(!_0x406601['query']['hasOwnProperty'](_0x3fc9('0x40'))){_0x3e41fd[_0x3fc9('0x22')]=qs[_0x3fc9('0x22')](_0x406601[_0x3fc9('0x39')]['limit']);_0x3e41fd[_0x3fc9('0x20')]=qs[_0x3fc9('0x20')](_0x406601[_0x3fc9('0x39')][_0x3fc9('0x20')]);}return _0x570170['getAgents'](_0x3e41fd);}})[_0x3fc9('0x29')](function(_0x500510){if(_0x500510){return _0x500510?{'count':_0x575771,'rows':_0x500510}:null;}})[_0x3fc9('0x29')](respondWithResult(_0x28a052,null))['catch'](handleError(_0x28a052,null));};
\ No newline at end of file
index 73a0ee4..b9b4a46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x527d=['emit','hook','exports','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x3285a3,_0x2538e7){var _0x34e414=function(_0x5ae61a){while(--_0x5ae61a){_0x3285a3['push'](_0x3285a3['shift']());}};_0x34e414(++_0x2538e7);}(_0x527d,0x19b));var _0xd527=function(_0x587dd0,_0x273922){_0x587dd0=_0x587dd0-0x0;var _0x56f153=_0x527d[_0x587dd0];return _0x56f153;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0xd527('0x0'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xd527('0x1')](0x0);var events={'afterCreate':_0xd527('0x2'),'afterUpdate':_0xd527('0x3'),'afterDestroy':_0xd527('0x4')};function emitEvent(_0x1e7647){return function(_0x55e0be,_0x475948,_0x4d7eea){OpenchannelQueueEvents[_0xd527('0x5')](_0x1e7647+':'+_0x55e0be['id'],_0x55e0be);OpenchannelQueueEvents[_0xd527('0x5')](_0x1e7647,_0x55e0be);_0x4d7eea(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue[_0xd527('0x6')](e,emitEvent(event));}}module[_0xd527('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x3a05=['OpenchannelQueue','save','update','remove','emit','hasOwnProperty','events','../../mysqldb'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x3a05,0x1ce));var _0x53a0=function(_0x4e093f,_0x206d13){_0x4e093f=_0x4e093f-0x0;var _0x3dcc1e=_0x3a05[_0x4e093f];return _0x3dcc1e;};'use strict';var EventEmitter=require(_0x53a0('0x0'));var OpenchannelQueue=require(_0x53a0('0x1'))['db'][_0x53a0('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x53a0('0x3'),'afterUpdate':_0x53a0('0x4'),'afterDestroy':_0x53a0('0x5')};function emitEvent(_0x554f61){return function(_0x102061,_0x18db67,_0x549d6a){OpenchannelQueueEvents[_0x53a0('0x6')](_0x554f61+':'+_0x102061['id'],_0x102061);OpenchannelQueueEvents['emit'](_0x554f61,_0x102061);_0x549d6a(null);};}for(var e in events){if(events[_0x53a0('0x7')](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
index c0209f1..d3a95a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6304=['OpenchannelQueue','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./openchannelQueue.attributes','exports'];(function(_0x28c44f,_0xec54c){var _0x8bde08=function(_0x7ca3be){while(--_0x7ca3be){_0x28c44f['push'](_0x28c44f['shift']());}};_0x8bde08(++_0xec54c);}(_0x6304,0xa1));var _0x4630=function(_0x14cc75,_0x6bcc74){_0x14cc75=_0x14cc75-0x0;var _0x128349=_0x6304[_0x14cc75];return _0x128349;};'use strict';var _=require('lodash');var util=require(_0x4630('0x0'));var logger=require(_0x4630('0x1'))(_0x4630('0x2'));var moment=require('moment');var BPromise=require(_0x4630('0x3'));var rp=require(_0x4630('0x4'));var fs=require('fs');var path=require(_0x4630('0x5'));var rimraf=require(_0x4630('0x6'));var config=require('../../config/environment');var attributes=require(_0x4630('0x7'));module[_0x4630('0x8')]=function(_0x544a7e,_0x1339d6){return _0x544a7e['define'](_0x4630('0x9'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb0a1=['../../config/environment','./openchannelQueue.attributes','exports','define','OpenchannelQueue','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x22c169,_0x3298a6){var _0x30cc6f=function(_0x2cd339){while(--_0x2cd339){_0x22c169['push'](_0x22c169['shift']());}};_0x30cc6f(++_0x3298a6);}(_0xb0a1,0xc8));var _0x1b0a=function(_0x2e31ad,_0x4afc42){_0x2e31ad=_0x2e31ad-0x0;var _0x183e05=_0xb0a1[_0x2e31ad];return _0x183e05;};'use strict';var _=require(_0x1b0a('0x0'));var util=require(_0x1b0a('0x1'));var logger=require(_0x1b0a('0x2'))(_0x1b0a('0x3'));var moment=require(_0x1b0a('0x4'));var BPromise=require(_0x1b0a('0x5'));var rp=require(_0x1b0a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1b0a('0x7'));var config=require(_0x1b0a('0x8'));var attributes=require(_0x1b0a('0x9'));module[_0x1b0a('0xa')]=function(_0x5d2609,_0x3538d7){return _0x5d2609[_0x1b0a('0xb')](_0x1b0a('0xc'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d618c81..ff80ecd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1464=['OpenchannelQueue','findAll','raw','options','attributes','limit','include','model','map','GetOpenchannelQueue','stringify','ShowOpenchannelQueue','find','where','debug','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./openchannelQueue.socket','register','request','then','info','request\x20sent','error','OpenchannelQueue,\x20%s,\x20%s','message','result','catch'];(function(_0x44e00a,_0x248bbc){var _0x2bdfba=function(_0x5e66c4){while(--_0x5e66c4){_0x44e00a['push'](_0x44e00a['shift']());}};_0x2bdfba(++_0x248bbc);}(_0x1464,0x127));var _0x4146=function(_0x236cc0,_0xc76be8){_0x236cc0=_0x236cc0-0x0;var _0x509cc7=_0x1464[_0x236cc0];return _0x509cc7;};'use strict';var _=require(_0x4146('0x0'));var util=require(_0x4146('0x1'));var moment=require(_0x4146('0x2'));var BPromise=require(_0x4146('0x3'));var rs=require(_0x4146('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4146('0x5'));var logger=require(_0x4146('0x6'))(_0x4146('0x7'));var config=require(_0x4146('0x8'));var jayson=require(_0x4146('0x9'));var client=jayson['client'][_0x4146('0xa')]({'port':0x232a});config[_0x4146('0xb')]=_[_0x4146('0xc')](config[_0x4146('0xb')],{'host':_0x4146('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4146('0xb')]));require(_0x4146('0xe'))[_0x4146('0xf')](socket);function respondWithRpcPromise(_0x511a03,_0x46b219,_0x3aefb8){return new BPromise(function(_0x2821fc,_0x251892){return client[_0x4146('0x10')](_0x511a03,_0x3aefb8)[_0x4146('0x11')](function(_0x244c99){logger[_0x4146('0x12')]('OpenchannelQueue,\x20%s,\x20%s',_0x46b219,_0x4146('0x13'));logger['debug']('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x46b219,_0x4146('0x13'),JSON['stringify'](_0x244c99));if(_0x244c99[_0x4146('0x14')]){if(_0x244c99[_0x4146('0x14')]['code']===0x1f4){logger[_0x4146('0x14')](_0x4146('0x15'),_0x46b219,_0x244c99[_0x4146('0x14')]['message']);return _0x251892(_0x244c99[_0x4146('0x14')][_0x4146('0x16')]);}logger[_0x4146('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x46b219,_0x244c99[_0x4146('0x14')][_0x4146('0x16')]);return _0x2821fc(_0x244c99[_0x4146('0x14')][_0x4146('0x16')]);}else{logger[_0x4146('0x12')](_0x4146('0x15'),_0x46b219,_0x4146('0x13'));_0x2821fc(_0x244c99[_0x4146('0x17')][_0x4146('0x16')]);}})[_0x4146('0x18')](function(_0x1a8f49){logger[_0x4146('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x46b219,_0x1a8f49);_0x251892(_0x1a8f49);});});}exports['GetOpenchannelQueue']=function(_0xd8752b){var _0x5cc7df=this;return new Promise(function(_0x569853,_0x3ed880){return db[_0x4146('0x19')][_0x4146('0x1a')]({'raw':_0xd8752b['options']?_0xd8752b['options'][_0x4146('0x1b')]===undefined?!![]:![]:!![],'where':_0xd8752b[_0x4146('0x1c')]?_0xd8752b[_0x4146('0x1c')]['where']||null:null,'attributes':_0xd8752b[_0x4146('0x1c')]?_0xd8752b[_0x4146('0x1c')][_0x4146('0x1d')]||null:null,'limit':_0xd8752b[_0x4146('0x1c')]?_0xd8752b[_0x4146('0x1c')][_0x4146('0x1e')]||null:null,'include':_0xd8752b['options']?_0xd8752b[_0x4146('0x1c')]['include']?_['map'](_0xd8752b['options'][_0x4146('0x1f')],function(_0x5b3129){return{'model':db[_0x5b3129[_0x4146('0x20')]],'as':_0x5b3129['as'],'attributes':_0x5b3129[_0x4146('0x1d')],'include':_0x5b3129[_0x4146('0x1f')]?_[_0x4146('0x21')](_0x5b3129['include'],function(_0x3d8138){return{'model':db[_0x3d8138['model']],'as':_0x3d8138['as'],'attributes':_0x3d8138[_0x4146('0x1d')],'include':_0x3d8138[_0x4146('0x1f')]?_['map'](_0x3d8138['include'],function(_0x165427){return{'model':db[_0x165427['model']],'as':_0x165427['as'],'attributes':_0x165427[_0x4146('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x4146('0x11')](function(_0xe72f3c){logger[_0x4146('0x12')]('GetOpenchannelQueue',_0xd8752b);logger['debug'](_0x4146('0x22'),_0xd8752b,JSON[_0x4146('0x23')](_0xe72f3c));_0x569853(_0xe72f3c);})[_0x4146('0x18')](function(_0x53608d){logger[_0x4146('0x14')](_0x4146('0x22'),_0x53608d[_0x4146('0x16')],_0xd8752b);_0x3ed880(_0x5cc7df[_0x4146('0x14')](0x1f4,_0x53608d[_0x4146('0x16')]));});});};exports[_0x4146('0x24')]=function(_0x1aff88){var _0x73ffb5=this;return new Promise(function(_0x1d41b2,_0x5df558){return db['OpenchannelQueue'][_0x4146('0x25')]({'raw':_0x1aff88[_0x4146('0x1c')]?_0x1aff88['options']['raw']===undefined?!![]:![]:!![],'where':_0x1aff88[_0x4146('0x1c')]?_0x1aff88[_0x4146('0x1c')][_0x4146('0x26')]||null:null,'attributes':_0x1aff88[_0x4146('0x1c')]?_0x1aff88['options'][_0x4146('0x1d')]||null:null,'include':_0x1aff88[_0x4146('0x1c')]?_0x1aff88[_0x4146('0x1c')][_0x4146('0x1f')]?_[_0x4146('0x21')](_0x1aff88[_0x4146('0x1c')][_0x4146('0x1f')],function(_0x58f162){return{'model':db[_0x58f162['model']],'as':_0x58f162['as'],'attributes':_0x58f162['attributes'],'include':_0x58f162[_0x4146('0x1f')]?_[_0x4146('0x21')](_0x58f162[_0x4146('0x1f')],function(_0x2036e4){return{'model':db[_0x2036e4[_0x4146('0x20')]],'as':_0x2036e4['as'],'attributes':_0x2036e4[_0x4146('0x1d')],'include':_0x2036e4[_0x4146('0x1f')]?_['map'](_0x2036e4[_0x4146('0x1f')],function(_0x5618c1){return{'model':db[_0x5618c1[_0x4146('0x20')]],'as':_0x5618c1['as'],'attributes':_0x5618c1['attributes']};}):[]};}):[]};}):[]:[]})[_0x4146('0x11')](function(_0x2d8809){logger[_0x4146('0x12')]('ShowOpenchannelQueue',_0x1aff88);logger[_0x4146('0x27')](_0x4146('0x24'),_0x1aff88,JSON[_0x4146('0x23')](_0x2d8809));_0x1d41b2(_0x2d8809);})[_0x4146('0x18')](function(_0x546499){logger[_0x4146('0x14')]('ShowOpenchannelQueue',_0x546499[_0x4146('0x16')],_0x1aff88);_0x5df558(_0x73ffb5[_0x4146('0x14')](0x1f4,_0x546499[_0x4146('0x16')]));});});};
\ No newline at end of file
+var _0xe430=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','./openchannelQueue.socket','register','request','then','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetOpenchannelQueue','findAll','options','raw','limit','include','model','attributes','map','ShowOpenchannelQueue','OpenchannelQueue','find','where','util'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xe430,0x1cd));var _0x0e43=function(_0x35197c,_0x326103){_0x35197c=_0x35197c-0x0;var _0x76b4cb=_0xe430[_0x35197c];return _0x76b4cb;};'use strict';var _=require('lodash');var util=require(_0x0e43('0x0'));var moment=require(_0x0e43('0x1'));var BPromise=require(_0x0e43('0x2'));var rs=require(_0x0e43('0x3'));var fs=require('fs');var Redis=require(_0x0e43('0x4'));var db=require(_0x0e43('0x5'))['db'];var utils=require(_0x0e43('0x6'));var logger=require(_0x0e43('0x7'))(_0x0e43('0x8'));var config=require(_0x0e43('0x9'));var jayson=require(_0x0e43('0xa'));var client=jayson[_0x0e43('0xb')]['http']({'port':0x232a});config[_0x0e43('0xc')]=_['defaults'](config['redis'],{'host':_0x0e43('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0e43('0xc')]));require(_0x0e43('0xe'))[_0x0e43('0xf')](socket);function respondWithRpcPromise(_0x3bdf8e,_0x309d71,_0x8d71b6){return new BPromise(function(_0x29d9e6,_0x50ad14){return client[_0x0e43('0x10')](_0x3bdf8e,_0x8d71b6)[_0x0e43('0x11')](function(_0x60b777){logger['info'](_0x0e43('0x12'),_0x309d71,_0x0e43('0x13'));logger[_0x0e43('0x14')](_0x0e43('0x15'),_0x309d71,_0x0e43('0x13'),JSON[_0x0e43('0x16')](_0x60b777));if(_0x60b777[_0x0e43('0x17')]){if(_0x60b777[_0x0e43('0x17')][_0x0e43('0x18')]===0x1f4){logger[_0x0e43('0x17')](_0x0e43('0x12'),_0x309d71,_0x60b777[_0x0e43('0x17')]['message']);return _0x50ad14(_0x60b777[_0x0e43('0x17')][_0x0e43('0x19')]);}logger[_0x0e43('0x17')]('OpenchannelQueue,\x20%s,\x20%s',_0x309d71,_0x60b777['error']['message']);return _0x29d9e6(_0x60b777['error'][_0x0e43('0x19')]);}else{logger[_0x0e43('0x1a')](_0x0e43('0x12'),_0x309d71,_0x0e43('0x13'));_0x29d9e6(_0x60b777[_0x0e43('0x1b')][_0x0e43('0x19')]);}})[_0x0e43('0x1c')](function(_0x15366a){logger['error'](_0x0e43('0x12'),_0x309d71,_0x15366a);_0x50ad14(_0x15366a);});});}exports[_0x0e43('0x1d')]=function(_0x4122a7){var _0x1b2885=this;return new Promise(function(_0x65b12e,_0x23ef09){return db['OpenchannelQueue'][_0x0e43('0x1e')]({'raw':_0x4122a7[_0x0e43('0x1f')]?_0x4122a7[_0x0e43('0x1f')][_0x0e43('0x20')]===undefined?!![]:![]:!![],'where':_0x4122a7[_0x0e43('0x1f')]?_0x4122a7[_0x0e43('0x1f')]['where']||null:null,'attributes':_0x4122a7[_0x0e43('0x1f')]?_0x4122a7['options']['attributes']||null:null,'limit':_0x4122a7[_0x0e43('0x1f')]?_0x4122a7[_0x0e43('0x1f')][_0x0e43('0x21')]||null:null,'include':_0x4122a7['options']?_0x4122a7[_0x0e43('0x1f')][_0x0e43('0x22')]?_['map'](_0x4122a7[_0x0e43('0x1f')]['include'],function(_0x29a542){return{'model':db[_0x29a542[_0x0e43('0x23')]],'as':_0x29a542['as'],'attributes':_0x29a542[_0x0e43('0x24')],'include':_0x29a542[_0x0e43('0x22')]?_['map'](_0x29a542[_0x0e43('0x22')],function(_0x43ce4b){return{'model':db[_0x43ce4b[_0x0e43('0x23')]],'as':_0x43ce4b['as'],'attributes':_0x43ce4b[_0x0e43('0x24')],'include':_0x43ce4b['include']?_[_0x0e43('0x25')](_0x43ce4b[_0x0e43('0x22')],function(_0xa6d833){return{'model':db[_0xa6d833[_0x0e43('0x23')]],'as':_0xa6d833['as'],'attributes':_0xa6d833[_0x0e43('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f5ee6){logger[_0x0e43('0x1a')](_0x0e43('0x1d'),_0x4122a7);logger[_0x0e43('0x14')](_0x0e43('0x1d'),_0x4122a7,JSON[_0x0e43('0x16')](_0x1f5ee6));_0x65b12e(_0x1f5ee6);})[_0x0e43('0x1c')](function(_0x14d3ce){logger[_0x0e43('0x17')](_0x0e43('0x1d'),_0x14d3ce[_0x0e43('0x19')],_0x4122a7);_0x23ef09(_0x1b2885[_0x0e43('0x17')](0x1f4,_0x14d3ce['message']));});});};exports[_0x0e43('0x26')]=function(_0x53a3d2){var _0x1d3581=this;return new Promise(function(_0x5b7920,_0xdba45f){return db[_0x0e43('0x27')][_0x0e43('0x28')]({'raw':_0x53a3d2['options']?_0x53a3d2[_0x0e43('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x53a3d2['options']?_0x53a3d2[_0x0e43('0x1f')][_0x0e43('0x29')]||null:null,'attributes':_0x53a3d2[_0x0e43('0x1f')]?_0x53a3d2[_0x0e43('0x1f')][_0x0e43('0x24')]||null:null,'include':_0x53a3d2[_0x0e43('0x1f')]?_0x53a3d2[_0x0e43('0x1f')][_0x0e43('0x22')]?_[_0x0e43('0x25')](_0x53a3d2[_0x0e43('0x1f')]['include'],function(_0x39b51e){return{'model':db[_0x39b51e[_0x0e43('0x23')]],'as':_0x39b51e['as'],'attributes':_0x39b51e[_0x0e43('0x24')],'include':_0x39b51e[_0x0e43('0x22')]?_['map'](_0x39b51e['include'],function(_0x44e61a){return{'model':db[_0x44e61a[_0x0e43('0x23')]],'as':_0x44e61a['as'],'attributes':_0x44e61a[_0x0e43('0x24')],'include':_0x44e61a[_0x0e43('0x22')]?_['map'](_0x44e61a[_0x0e43('0x22')],function(_0x2fee73){return{'model':db[_0x2fee73['model']],'as':_0x2fee73['as'],'attributes':_0x2fee73[_0x0e43('0x24')]};}):[]};}):[]};}):[]:[]})[_0x0e43('0x11')](function(_0x15ca5e){logger['info'](_0x0e43('0x26'),_0x53a3d2);logger[_0x0e43('0x14')](_0x0e43('0x26'),_0x53a3d2,JSON[_0x0e43('0x16')](_0x15ca5e));_0x5b7920(_0x15ca5e);})[_0x0e43('0x1c')](function(_0x5e027e){logger[_0x0e43('0x17')](_0x0e43('0x26'),_0x5e027e[_0x0e43('0x19')],_0x53a3d2);_0xdba45f(_0x1d3581['error'](0x1f4,_0x5e027e['message']));});});};
\ No newline at end of file
index 8c92205..6ccc58f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d03=['update','emit','removeListener','register','./openchannelQueue.events','save','remove'];(function(_0x11ed68,_0x304460){var _0x5e3a3f=function(_0x3269b2){while(--_0x3269b2){_0x11ed68['push'](_0x11ed68['shift']());}};_0x5e3a3f(++_0x304460);}(_0x5d03,0x1a1));var _0x35d0=function(_0x18c34f,_0x102373){_0x18c34f=_0x18c34f-0x0;var _0x37e6fe=_0x5d03[_0x18c34f];return _0x37e6fe;};'use strict';var OpenchannelQueueEvents=require(_0x35d0('0x0'));var events=[_0x35d0('0x1'),_0x35d0('0x2'),_0x35d0('0x3')];function createListener(_0x524218,_0x147425){return function(_0x482663){_0x147425[_0x35d0('0x4')](_0x524218,_0x482663);};}function removeListener(_0x57914a,_0xd381ff){return function(){OpenchannelQueueEvents[_0x35d0('0x5')](_0x57914a,_0xd381ff);};}exports[_0x35d0('0x6')]=function(_0x1684cb){for(var _0x1d1db1=0x0,_0x2a695c=events['length'];_0x1d1db1<_0x2a695c;_0x1d1db1++){var _0x2e6c44=events[_0x1d1db1];var _0x33b4d8=createListener('openchannelQueue:'+_0x2e6c44,_0x1684cb);OpenchannelQueueEvents['on'](_0x2e6c44,_0x33b4d8);}};
\ No newline at end of file
+var _0xdd55=['update','removeListener','register','length','./openchannelQueue.events'];(function(_0x3a6b78,_0x2d62be){var _0x4943d4=function(_0x33ab64){while(--_0x33ab64){_0x3a6b78['push'](_0x3a6b78['shift']());}};_0x4943d4(++_0x2d62be);}(_0xdd55,0x1e9));var _0x5dd5=function(_0x2e0def,_0x11f7df){_0x2e0def=_0x2e0def-0x0;var _0x397c2b=_0xdd55[_0x2e0def];return _0x397c2b;};'use strict';var OpenchannelQueueEvents=require(_0x5dd5('0x0'));var events=['save','remove',_0x5dd5('0x1')];function createListener(_0x43f2da,_0x2437b4){return function(_0x541649){_0x2437b4['emit'](_0x43f2da,_0x541649);};}function removeListener(_0x147add,_0x1e62b9){return function(){OpenchannelQueueEvents[_0x5dd5('0x2')](_0x147add,_0x1e62b9);};}exports[_0x5dd5('0x3')]=function(_0x4f7531){for(var _0x5d05bb=0x0,_0x5ba483=events[_0x5dd5('0x4')];_0x5d05bb<_0x5ba483;_0x5d05bb++){var _0x162c8b=events[_0x5d05bb];var _0x19061f=createListener('openchannelQueue:'+_0x162c8b,_0x4f7531);OpenchannelQueueEvents['on'](_0x162c8b,_0x19061f);}};
\ No newline at end of file
index 5504c31..48bc1d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41b8=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','describe','show','create','put','delete','destroy','multer'];(function(_0x51e6cd,_0xf26d1d){var _0x17a851=function(_0x35c059){while(--_0x35c059){_0x51e6cd['push'](_0x51e6cd['shift']());}};_0x17a851(++_0xf26d1d);}(_0x41b8,0xa1));var _0x841b=function(_0x16c2b1,_0x36a70c){_0x16c2b1=_0x16c2b1-0x0;var _0x199ac4=_0x41b8[_0x16c2b1];return _0x199ac4;};'use strict';var multer=require(_0x841b('0x0'));var util=require('util');var path=require(_0x841b('0x1'));var timeout=require(_0x841b('0x2'));var express=require(_0x841b('0x3'));var router=express[_0x841b('0x4')]();var fs_extra=require(_0x841b('0x5'));var auth=require(_0x841b('0x6'));var interaction=require(_0x841b('0x7'));var config=require(_0x841b('0x8'));var controller=require('./openchannelQueueReport.controller');router['get']('/',auth[_0x841b('0x9')](),controller['index']);router[_0x841b('0xa')](_0x841b('0xb'),auth[_0x841b('0x9')](),controller[_0x841b('0xc')]);router[_0x841b('0xa')]('/:id',auth[_0x841b('0x9')](),controller[_0x841b('0xd')]);router['post']('/',auth[_0x841b('0x9')](),controller[_0x841b('0xe')]);router[_0x841b('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x841b('0x10')]('/:id',auth[_0x841b('0x9')](),controller[_0x841b('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xf0cb=['/:id','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0xf0cb,0x133));var _0xbf0c=function(_0x20099a,_0x2bf584){_0x20099a=_0x20099a-0x0;var _0x2c3649=_0xf0cb[_0x20099a];return _0x2c3649;};'use strict';var multer=require(_0xbf0c('0x0'));var util=require(_0xbf0c('0x1'));var path=require(_0xbf0c('0x2'));var timeout=require(_0xbf0c('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xbf0c('0x4'));var auth=require(_0xbf0c('0x5'));var interaction=require(_0xbf0c('0x6'));var config=require(_0xbf0c('0x7'));var controller=require(_0xbf0c('0x8'));router[_0xbf0c('0x9')]('/',auth[_0xbf0c('0xa')](),controller[_0xbf0c('0xb')]);router[_0xbf0c('0x9')](_0xbf0c('0xc'),auth[_0xbf0c('0xa')](),controller['describe']);router[_0xbf0c('0x9')](_0xbf0c('0xd'),auth[_0xbf0c('0xa')](),controller['show']);router[_0xbf0c('0xe')]('/',auth[_0xbf0c('0xa')](),controller[_0xbf0c('0xf')]);router[_0xbf0c('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xbf0c('0x11')]);router[_0xbf0c('0x12')](_0xbf0c('0xd'),auth[_0xbf0c('0xa')](),controller[_0xbf0c('0x13')]);module['exports']=router;
\ No newline at end of file
index 421155e..58420b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c42=['DATE','moment','sequelize','exports','STRING'];(function(_0xee63ea,_0x2e8134){var _0x572565=function(_0x4a34fd){while(--_0x4a34fd){_0xee63ea['push'](_0xee63ea['shift']());}};_0x572565(++_0x2e8134);}(_0x0c42,0x191));var _0x20c4=function(_0x18caf8,_0x4509b5){_0x18caf8=_0x18caf8-0x0;var _0xd2e820=_0x0c42[_0x18caf8];return _0xd2e820;};'use strict';var moment=require(_0x20c4('0x0'));var Sequelize=require(_0x20c4('0x1'));module[_0x20c4('0x2')]={'uniqueid':{'type':Sequelize[_0x20c4('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x20c4('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x20c4('0x4')]},'exitAt':{'type':Sequelize[_0x20c4('0x4')]},'reason':{'type':Sequelize[_0x20c4('0x3')]}};
\ No newline at end of file
+var _0xe75e=['STRING','DATE','moment','sequelize','exports'];(function(_0x198a68,_0x1ab1cc){var _0x5f0d21=function(_0x2cf1d0){while(--_0x2cf1d0){_0x198a68['push'](_0x198a68['shift']());}};_0x5f0d21(++_0x1ab1cc);}(_0xe75e,0x7f));var _0xee75=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0xe75e[_0x12f688];return _0x59c3de;};'use strict';var moment=require(_0xee75('0x0'));var Sequelize=require(_0xee75('0x1'));module[_0xee75('0x2')]={'uniqueid':{'type':Sequelize[_0xee75('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xee75('0x3')]},'joinAt':{'type':Sequelize[_0xee75('0x4')]},'leaveAt':{'type':Sequelize[_0xee75('0x4')]},'acceptAt':{'type':Sequelize[_0xee75('0x4')]},'exitAt':{'type':Sequelize[_0xee75('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 68eb54f..52e6153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa5f=['index','map','OpenchannelQueueReport','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','destroy','describe','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','error','name','send'];(function(_0x55fa1b,_0x470dd2){var _0x934524=function(_0x5e976c){while(--_0x5e976c){_0x55fa1b['push'](_0x55fa1b['shift']());}};_0x934524(++_0x470dd2);}(_0xaa5f,0x18d));var _0xfaa5=function(_0x22ae85,_0xd307ef){_0x22ae85=_0x22ae85-0x0;var _0x30cfa3=_0xaa5f[_0x22ae85];return _0x30cfa3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfaa5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfaa5('0x1'));var rp=require(_0xfaa5('0x2'));var moment=require(_0xfaa5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xfaa5('0x4'));var util=require(_0xfaa5('0x5'));var path=require(_0xfaa5('0x6'));var sox=require(_0xfaa5('0x7'));var csv=require(_0xfaa5('0x8'));var ejs=require(_0xfaa5('0x9'));var fs=require('fs');var fs_extra=require(_0xfaa5('0xa'));var _=require('lodash');var squel=require(_0xfaa5('0xb'));var crypto=require(_0xfaa5('0xc'));var jsforce=require(_0xfaa5('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xfaa5('0x8'));var querystring=require(_0xfaa5('0xe'));var Papa=require(_0xfaa5('0xf'));var Redis=require('ioredis');var authService=require(_0xfaa5('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xfaa5('0x11'));var hardwareService=require(_0xfaa5('0x12'));var logger=require(_0xfaa5('0x13'))(_0xfaa5('0x14'));var utils=require(_0xfaa5('0x15'));var config=require(_0xfaa5('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xfaa5('0x17'))['db'];function respondWithStatusCode(_0x5ccf0f,_0x273117){_0x273117=_0x273117||0xcc;return function(_0x37a04f){if(_0x37a04f){return _0x5ccf0f[_0xfaa5('0x18')](_0x273117);}return _0x5ccf0f[_0xfaa5('0x19')](_0x273117)[_0xfaa5('0x1a')]();};}function respondWithResult(_0x30e058,_0x55a077){_0x55a077=_0x55a077||0xc8;return function(_0x3c336){if(_0x3c336){return _0x30e058[_0xfaa5('0x19')](_0x55a077)['json'](_0x3c336);}};}function respondWithFilteredResult(_0x21111f,_0x159078){return function(_0x5b0062){if(_0x5b0062){var _0x131390=typeof _0x159078[_0xfaa5('0x1b')]===_0xfaa5('0x1c')&&typeof _0x159078[_0xfaa5('0x1d')]===_0xfaa5('0x1c');var _0x542db4=_0x5b0062[_0xfaa5('0x1e')];var _0x21377d=_0x131390?0x0:_0x159078[_0xfaa5('0x1b')];var _0x39751a=_0x131390?_0x5b0062[_0xfaa5('0x1e')]:_0x159078[_0xfaa5('0x1b')]+_0x159078[_0xfaa5('0x1d')];var _0x5bb8d3;if(_0x39751a>=_0x542db4){_0x39751a=_0x542db4;_0x5bb8d3=0xc8;}else{_0x5bb8d3=0xce;}_0x21111f[_0xfaa5('0x19')](_0x5bb8d3);return _0x21111f[_0xfaa5('0x1f')](_0xfaa5('0x20'),_0x21377d+'-'+_0x39751a+'/'+_0x542db4)[_0xfaa5('0x21')](_0x5b0062);}return null;};}function patchUpdates(_0x51ef4b){return function(_0x5b3faf){try{jsonpatch['apply'](_0x5b3faf,_0x51ef4b,!![]);}catch(_0x19d68f){return BPromise[_0xfaa5('0x22')](_0x19d68f);}return _0x5b3faf[_0xfaa5('0x23')]();};}function saveUpdates(_0x188f4a,_0x51a423){return function(_0x477dbe){if(_0x477dbe){return _0x477dbe[_0xfaa5('0x24')](_0x188f4a)['then'](function(_0x232a89){return _0x232a89;});}return null;};}function removeEntity(_0x1635d3,_0xa7ceff){return function(_0x14c161){if(_0x14c161){return _0x14c161['destroy']()[_0xfaa5('0x25')](function(){_0x1635d3['status'](0xcc)[_0xfaa5('0x1a')]();});}};}function handleEntityNotFound(_0x162cdf,_0x25ed2a){return function(_0x34b025){if(!_0x34b025){_0x162cdf[_0xfaa5('0x18')](0x194);}return _0x34b025;};}function handleError(_0x5601ee,_0x3e1dc5){_0x3e1dc5=_0x3e1dc5||0x1f4;return function(_0x220179){logger[_0xfaa5('0x26')](_0x220179['stack']);if(_0x220179[_0xfaa5('0x27')]){delete _0x220179[_0xfaa5('0x27')];}_0x5601ee['status'](_0x3e1dc5)[_0xfaa5('0x28')](_0x220179);};}exports[_0xfaa5('0x29')]=function(_0x890124,_0x68d4f1){var _0x162788={},_0x42f822={},_0x5773af={'count':0x0,'rows':[]};var _0x4c8738=_[_0xfaa5('0x2a')](db[_0xfaa5('0x2b')]['rawAttributes'],function(_0x5aece3){return{'name':_0x5aece3['fieldName'],'type':_0x5aece3[_0xfaa5('0x2c')]['key']};});_0x42f822[_0xfaa5('0x2d')]=_[_0xfaa5('0x2a')](_0x4c8738,_0xfaa5('0x27'));_0x42f822['query']=_[_0xfaa5('0x2e')](_0x890124[_0xfaa5('0x2f')]);_0x42f822[_0xfaa5('0x30')]=_[_0xfaa5('0x31')](_0x42f822['model'],_0x42f822['query']);_0x162788[_0xfaa5('0x32')]=_[_0xfaa5('0x31')](_0x42f822[_0xfaa5('0x2d')],qs['fields'](_0x890124[_0xfaa5('0x2f')][_0xfaa5('0x33')]));_0x162788[_0xfaa5('0x32')]=_0x162788[_0xfaa5('0x32')][_0xfaa5('0x34')]?_0x162788['attributes']:_0x42f822[_0xfaa5('0x2d')];if(!_0x890124['query'][_0xfaa5('0x35')](_0xfaa5('0x36'))){_0x162788[_0xfaa5('0x1d')]=qs[_0xfaa5('0x1d')](_0x890124[_0xfaa5('0x2f')]['limit']);_0x162788[_0xfaa5('0x1b')]=qs[_0xfaa5('0x1b')](_0x890124[_0xfaa5('0x2f')][_0xfaa5('0x1b')]);}_0x162788[_0xfaa5('0x37')]=qs['sort'](_0x890124[_0xfaa5('0x2f')][_0xfaa5('0x38')]);_0x162788[_0xfaa5('0x39')]=qs[_0xfaa5('0x30')](_['pick'](_0x890124[_0xfaa5('0x2f')],_0x42f822[_0xfaa5('0x30')]),_0x4c8738);if(_0x890124['query'][_0xfaa5('0x3a')]){_0x162788[_0xfaa5('0x39')]=_['merge'](_0x162788[_0xfaa5('0x39')],{'$or':_[_0xfaa5('0x2a')](_0x4c8738,function(_0x4fe6f0){if(_0x4fe6f0[_0xfaa5('0x2c')]!=='VIRTUAL'){var _0x2b4836={};_0x2b4836[_0x4fe6f0['name']]={'$like':'%'+_0x890124[_0xfaa5('0x2f')]['filter']+'%'};return _0x2b4836;}})});}_0x162788=_[_0xfaa5('0x3b')]({},_0x162788,_0x890124[_0xfaa5('0x3c')]);var _0x32368a={'where':_0x162788['where']};return db['OpenchannelQueueReport']['count'](_0x32368a)['then'](function(_0x19028d){_0x5773af[_0xfaa5('0x1e')]=_0x19028d;if(_0x890124[_0xfaa5('0x2f')][_0xfaa5('0x3d')]){_0x162788[_0xfaa5('0x3e')]=[{'all':!![]}];}return db[_0xfaa5('0x2b')][_0xfaa5('0x3f')](_0x162788);})[_0xfaa5('0x25')](function(_0x19876f){_0x5773af[_0xfaa5('0x40')]=_0x19876f;return _0x5773af;})[_0xfaa5('0x25')](respondWithFilteredResult(_0x68d4f1,_0x162788))[_0xfaa5('0x41')](handleError(_0x68d4f1,null));};exports['show']=function(_0x413477,_0xd25815){var _0x53153b={'raw':!![],'where':{'id':_0x413477[_0xfaa5('0x42')]['id']}},_0x1f4a22={};_0x1f4a22[_0xfaa5('0x2d')]=_['keys'](db[_0xfaa5('0x2b')][_0xfaa5('0x43')]);_0x1f4a22[_0xfaa5('0x2f')]=_[_0xfaa5('0x2e')](_0x413477[_0xfaa5('0x2f')]);_0x1f4a22[_0xfaa5('0x30')]=_['intersection'](_0x1f4a22['model'],_0x1f4a22[_0xfaa5('0x2f')]);_0x53153b[_0xfaa5('0x32')]=_[_0xfaa5('0x31')](_0x1f4a22[_0xfaa5('0x2d')],qs[_0xfaa5('0x33')](_0x413477[_0xfaa5('0x2f')][_0xfaa5('0x33')]));_0x53153b[_0xfaa5('0x32')]=_0x53153b[_0xfaa5('0x32')][_0xfaa5('0x34')]?_0x53153b['attributes']:_0x1f4a22[_0xfaa5('0x2d')];if(_0x413477[_0xfaa5('0x2f')][_0xfaa5('0x3d')]){_0x53153b[_0xfaa5('0x3e')]=[{'all':!![]}];}_0x53153b=_[_0xfaa5('0x3b')]({},_0x53153b,_0x413477[_0xfaa5('0x3c')]);return db['OpenchannelQueueReport'][_0xfaa5('0x44')](_0x53153b)['then'](handleEntityNotFound(_0xd25815,null))[_0xfaa5('0x25')](respondWithResult(_0xd25815,null))[_0xfaa5('0x41')](handleError(_0xd25815,null));};exports[_0xfaa5('0x45')]=function(_0x1947fb,_0x29e9c9){return db['OpenchannelQueueReport'][_0xfaa5('0x45')](_0x1947fb[_0xfaa5('0x46')],{})[_0xfaa5('0x25')](respondWithResult(_0x29e9c9,0xc9))[_0xfaa5('0x41')](handleError(_0x29e9c9,null));};exports[_0xfaa5('0x24')]=function(_0x33c94d,_0x3716d0){if(_0x33c94d[_0xfaa5('0x46')]['id']){delete _0x33c94d[_0xfaa5('0x46')]['id'];}return db[_0xfaa5('0x2b')]['find']({'where':{'id':_0x33c94d['params']['id']}})['then'](handleEntityNotFound(_0x3716d0,null))[_0xfaa5('0x25')](saveUpdates(_0x33c94d[_0xfaa5('0x46')],null))[_0xfaa5('0x25')](respondWithResult(_0x3716d0,null))[_0xfaa5('0x41')](handleError(_0x3716d0,null));};exports[_0xfaa5('0x47')]=function(_0xd3588,_0x5806ae){return db[_0xfaa5('0x2b')][_0xfaa5('0x44')]({'where':{'id':_0xd3588[_0xfaa5('0x42')]['id']}})[_0xfaa5('0x25')](handleEntityNotFound(_0x5806ae,null))[_0xfaa5('0x25')](removeEntity(_0x5806ae,null))[_0xfaa5('0x41')](handleError(_0x5806ae,null));};exports['describe']=function(_0x529424,_0x4670e1){return db['OpenchannelQueueReport'][_0xfaa5('0x48')]()[_0xfaa5('0x25')](respondWithResult(_0x4670e1,null))['catch'](handleError(_0x4670e1,null));};
\ No newline at end of file
+var _0xb50e=['util','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','reject','save','update','then','error','stack','name','send','map','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','OpenchannelQueueReport','includeAll','include','findAll','catch','show','params','rawAttributes','options','find','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache'];(function(_0x2416ee,_0x4d4c81){var _0x1edd18=function(_0x5c396e){while(--_0x5c396e){_0x2416ee['push'](_0x2416ee['shift']());}};_0x1edd18(++_0x4d4c81);}(_0xb50e,0x1f1));var _0xeb50=function(_0x4b8ab7,_0x37c8bd){_0x4b8ab7=_0x4b8ab7-0x0;var _0x3f6c00=_0xb50e[_0x4b8ab7];return _0x3f6c00;};'use strict';var emlformat=require(_0xeb50('0x0'));var rimraf=require(_0xeb50('0x1'));var zipdir=require(_0xeb50('0x2'));var jsonpatch=require(_0xeb50('0x3'));var rp=require(_0xeb50('0x4'));var moment=require('moment');var BPromise=require(_0xeb50('0x5'));var Mustache=require(_0xeb50('0x6'));var util=require(_0xeb50('0x7'));var path=require(_0xeb50('0x8'));var sox=require(_0xeb50('0x9'));var csv=require(_0xeb50('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xeb50('0xb'));var _=require(_0xeb50('0xc'));var squel=require('squel');var crypto=require(_0xeb50('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xeb50('0xe'));var toCsv=require(_0xeb50('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xeb50('0xf'));var authService=require(_0xeb50('0x10'));var qs=require(_0xeb50('0x11'));var as=require(_0xeb50('0x12'));var hardwareService=require(_0xeb50('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xeb50('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xeb50('0x15'));var db=require(_0xeb50('0x16'))['db'];function respondWithStatusCode(_0xc6ceb1,_0x19b86f){_0x19b86f=_0x19b86f||0xcc;return function(_0x21b66c){if(_0x21b66c){return _0xc6ceb1[_0xeb50('0x17')](_0x19b86f);}return _0xc6ceb1[_0xeb50('0x18')](_0x19b86f)[_0xeb50('0x19')]();};}function respondWithResult(_0x814b1d,_0x471e92){_0x471e92=_0x471e92||0xc8;return function(_0x980682){if(_0x980682){return _0x814b1d['status'](_0x471e92)[_0xeb50('0x1a')](_0x980682);}};}function respondWithFilteredResult(_0x445f4f,_0x385c57){return function(_0xc5502c){if(_0xc5502c){var _0x539175=typeof _0x385c57[_0xeb50('0x1b')]===_0xeb50('0x1c')&&typeof _0x385c57['limit']===_0xeb50('0x1c');var _0x26e9e4=_0xc5502c['count'];var _0x11772f=_0x539175?0x0:_0x385c57[_0xeb50('0x1b')];var _0x1b8530=_0x539175?_0xc5502c[_0xeb50('0x1d')]:_0x385c57['offset']+_0x385c57[_0xeb50('0x1e')];var _0x8e8b54;if(_0x1b8530>=_0x26e9e4){_0x1b8530=_0x26e9e4;_0x8e8b54=0xc8;}else{_0x8e8b54=0xce;}_0x445f4f[_0xeb50('0x18')](_0x8e8b54);return _0x445f4f['set'](_0xeb50('0x1f'),_0x11772f+'-'+_0x1b8530+'/'+_0x26e9e4)['json'](_0xc5502c);}return null;};}function patchUpdates(_0x5f4593){return function(_0x552aac){try{jsonpatch['apply'](_0x552aac,_0x5f4593,!![]);}catch(_0x511d6b){return BPromise[_0xeb50('0x20')](_0x511d6b);}return _0x552aac[_0xeb50('0x21')]();};}function saveUpdates(_0x385b3c,_0x2cd9e6){return function(_0x5428fc){if(_0x5428fc){return _0x5428fc[_0xeb50('0x22')](_0x385b3c)[_0xeb50('0x23')](function(_0x1acb3a){return _0x1acb3a;});}return null;};}function removeEntity(_0x5f2a0,_0x50983d){return function(_0x333beb){if(_0x333beb){return _0x333beb['destroy']()[_0xeb50('0x23')](function(){_0x5f2a0[_0xeb50('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x31771f,_0x1794b9){return function(_0x3763fb){if(!_0x3763fb){_0x31771f[_0xeb50('0x17')](0x194);}return _0x3763fb;};}function handleError(_0x4b9be5,_0x3361b4){_0x3361b4=_0x3361b4||0x1f4;return function(_0x1463a4){logger[_0xeb50('0x24')](_0x1463a4[_0xeb50('0x25')]);if(_0x1463a4[_0xeb50('0x26')]){delete _0x1463a4[_0xeb50('0x26')];}_0x4b9be5['status'](_0x3361b4)[_0xeb50('0x27')](_0x1463a4);};}exports['index']=function(_0x2cfbb8,_0x3fb9e4){var _0x562aab={},_0x1b1665={},_0x486370={'count':0x0,'rows':[]};var _0xb70af3=_[_0xeb50('0x28')](db['OpenchannelQueueReport']['rawAttributes'],function(_0x5a31f9){return{'name':_0x5a31f9[_0xeb50('0x29')],'type':_0x5a31f9[_0xeb50('0x2a')]['key']};});_0x1b1665[_0xeb50('0x2b')]=_[_0xeb50('0x28')](_0xb70af3,_0xeb50('0x26'));_0x1b1665[_0xeb50('0x2c')]=_[_0xeb50('0x2d')](_0x2cfbb8['query']);_0x1b1665[_0xeb50('0x2e')]=_[_0xeb50('0x2f')](_0x1b1665[_0xeb50('0x2b')],_0x1b1665[_0xeb50('0x2c')]);_0x562aab[_0xeb50('0x30')]=_[_0xeb50('0x2f')](_0x1b1665['model'],qs[_0xeb50('0x31')](_0x2cfbb8[_0xeb50('0x2c')]['fields']));_0x562aab['attributes']=_0x562aab[_0xeb50('0x30')][_0xeb50('0x32')]?_0x562aab[_0xeb50('0x30')]:_0x1b1665[_0xeb50('0x2b')];if(!_0x2cfbb8[_0xeb50('0x2c')][_0xeb50('0x33')](_0xeb50('0x34'))){_0x562aab[_0xeb50('0x1e')]=qs[_0xeb50('0x1e')](_0x2cfbb8[_0xeb50('0x2c')][_0xeb50('0x1e')]);_0x562aab['offset']=qs[_0xeb50('0x1b')](_0x2cfbb8[_0xeb50('0x2c')][_0xeb50('0x1b')]);}_0x562aab[_0xeb50('0x35')]=qs['sort'](_0x2cfbb8[_0xeb50('0x2c')][_0xeb50('0x36')]);_0x562aab[_0xeb50('0x37')]=qs[_0xeb50('0x2e')](_[_0xeb50('0x38')](_0x2cfbb8[_0xeb50('0x2c')],_0x1b1665[_0xeb50('0x2e')]),_0xb70af3);if(_0x2cfbb8[_0xeb50('0x2c')]['filter']){_0x562aab[_0xeb50('0x37')]=_[_0xeb50('0x39')](_0x562aab[_0xeb50('0x37')],{'$or':_[_0xeb50('0x28')](_0xb70af3,function(_0x17fa98){if(_0x17fa98[_0xeb50('0x2a')]!==_0xeb50('0x3a')){var _0x16b02d={};_0x16b02d[_0x17fa98['name']]={'$like':'%'+_0x2cfbb8['query']['filter']+'%'};return _0x16b02d;}})});}_0x562aab=_[_0xeb50('0x39')]({},_0x562aab,_0x2cfbb8['options']);var _0x410963={'where':_0x562aab[_0xeb50('0x37')]};return db[_0xeb50('0x3b')][_0xeb50('0x1d')](_0x410963)['then'](function(_0x34e642){_0x486370[_0xeb50('0x1d')]=_0x34e642;if(_0x2cfbb8[_0xeb50('0x2c')][_0xeb50('0x3c')]){_0x562aab[_0xeb50('0x3d')]=[{'all':!![]}];}return db[_0xeb50('0x3b')][_0xeb50('0x3e')](_0x562aab);})[_0xeb50('0x23')](function(_0x210747){_0x486370['rows']=_0x210747;return _0x486370;})[_0xeb50('0x23')](respondWithFilteredResult(_0x3fb9e4,_0x562aab))[_0xeb50('0x3f')](handleError(_0x3fb9e4,null));};exports[_0xeb50('0x40')]=function(_0x126006,_0x4ade40){var _0x14ae64={'raw':!![],'where':{'id':_0x126006[_0xeb50('0x41')]['id']}},_0x1a0e08={};_0x1a0e08['model']=_[_0xeb50('0x2d')](db['OpenchannelQueueReport'][_0xeb50('0x42')]);_0x1a0e08[_0xeb50('0x2c')]=_[_0xeb50('0x2d')](_0x126006[_0xeb50('0x2c')]);_0x1a0e08[_0xeb50('0x2e')]=_['intersection'](_0x1a0e08[_0xeb50('0x2b')],_0x1a0e08[_0xeb50('0x2c')]);_0x14ae64['attributes']=_[_0xeb50('0x2f')](_0x1a0e08[_0xeb50('0x2b')],qs[_0xeb50('0x31')](_0x126006['query'][_0xeb50('0x31')]));_0x14ae64[_0xeb50('0x30')]=_0x14ae64[_0xeb50('0x30')][_0xeb50('0x32')]?_0x14ae64['attributes']:_0x1a0e08[_0xeb50('0x2b')];if(_0x126006[_0xeb50('0x2c')][_0xeb50('0x3c')]){_0x14ae64[_0xeb50('0x3d')]=[{'all':!![]}];}_0x14ae64=_[_0xeb50('0x39')]({},_0x14ae64,_0x126006[_0xeb50('0x43')]);return db[_0xeb50('0x3b')][_0xeb50('0x44')](_0x14ae64)[_0xeb50('0x23')](handleEntityNotFound(_0x4ade40,null))['then'](respondWithResult(_0x4ade40,null))[_0xeb50('0x3f')](handleError(_0x4ade40,null));};exports['create']=function(_0x5034f2,_0x5564cc){return db[_0xeb50('0x3b')]['create'](_0x5034f2[_0xeb50('0x45')],{})[_0xeb50('0x23')](respondWithResult(_0x5564cc,0xc9))[_0xeb50('0x3f')](handleError(_0x5564cc,null));};exports[_0xeb50('0x22')]=function(_0x59c6d6,_0x1aae2f){if(_0x59c6d6[_0xeb50('0x45')]['id']){delete _0x59c6d6[_0xeb50('0x45')]['id'];}return db[_0xeb50('0x3b')][_0xeb50('0x44')]({'where':{'id':_0x59c6d6[_0xeb50('0x41')]['id']}})[_0xeb50('0x23')](handleEntityNotFound(_0x1aae2f,null))[_0xeb50('0x23')](saveUpdates(_0x59c6d6[_0xeb50('0x45')],null))[_0xeb50('0x23')](respondWithResult(_0x1aae2f,null))[_0xeb50('0x3f')](handleError(_0x1aae2f,null));};exports[_0xeb50('0x46')]=function(_0x589e94,_0x178fff){return db[_0xeb50('0x3b')]['find']({'where':{'id':_0x589e94[_0xeb50('0x41')]['id']}})[_0xeb50('0x23')](handleEntityNotFound(_0x178fff,null))[_0xeb50('0x23')](removeEntity(_0x178fff,null))[_0xeb50('0x3f')](handleError(_0x178fff,null));};exports[_0xeb50('0x47')]=function(_0x2c8a02,_0x210384){return db[_0xeb50('0x3b')][_0xeb50('0x47')]()[_0xeb50('0x23')](respondWithResult(_0x210384,null))['catch'](handleError(_0x210384,null));};
\ No newline at end of file
index 3d23b3e..6bdb78f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['util','api','moment','bluebird','request-promise','path','../../config/environment','./openchannelQueueReport.attributes','exports','define','report_openchannel_queue','uniqueid','lodash'];(function(_0x5940cd,_0x2fcacc){var _0x54b550=function(_0x1f0359){while(--_0x1f0359){_0x5940cd['push'](_0x5940cd['shift']());}};_0x54b550(++_0x2fcacc);}(_0x5fc3,0xa8));var _0x35fc=function(_0x5c14f6,_0x2979d8){_0x5c14f6=_0x5c14f6-0x0;var _0x4949b3=_0x5fc3[_0x5c14f6];return _0x4949b3;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[{'name':_0x35fc('0xc'),'fields':[_0x35fc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash'];(function(_0x2b8654,_0x56ebcf){var _0x2166f3=function(_0x5a5d83){while(--_0x5a5d83){_0x2b8654['push'](_0x2b8654['shift']());}};_0x2166f3(++_0x56ebcf);}(_0x326f,0xd1));var _0xf326=function(_0x18c073,_0x4cab95){_0x18c073=_0x18c073-0x0;var _0xeeb5f=_0x326f[_0x18c073];return _0xeeb5f;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 16d3d4e..089f795 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b12=['OpenchannelQueueReport,\x20%s,\x20%s','message','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','options','raw','UpdateOpenchannelQueueReport','update','body','where','attributes','limit','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','client','request','then','info','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3bc0b1,_0x1f1bf8){var _0x11975b=function(_0x3b6bfc){while(--_0x3b6bfc){_0x3bc0b1['push'](_0x3bc0b1['shift']());}};_0x11975b(++_0x1f1bf8);}(_0x5b12,0xa3));var _0x25b1=function(_0x11eb2a,_0x2dce76){_0x11eb2a=_0x11eb2a-0x0;var _0x560ffa=_0x5b12[_0x11eb2a];return _0x560ffa;};'use strict';var _=require(_0x25b1('0x0'));var util=require(_0x25b1('0x1'));var moment=require(_0x25b1('0x2'));var BPromise=require('bluebird');var rs=require(_0x25b1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x25b1('0x4'))['db'];var utils=require(_0x25b1('0x5'));var logger=require('../../config/logger')(_0x25b1('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x25b1('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bb95b,_0x1f715d,_0x28c980){return new BPromise(function(_0x451c66,_0x2a46e0){return client[_0x25b1('0x8')](_0x5bb95b,_0x28c980)[_0x25b1('0x9')](function(_0x3346ed){logger[_0x25b1('0xa')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x1f715d,_0x25b1('0xb'));logger[_0x25b1('0xc')](_0x25b1('0xd'),_0x1f715d,_0x25b1('0xb'),JSON[_0x25b1('0xe')](_0x3346ed));if(_0x3346ed[_0x25b1('0xf')]){if(_0x3346ed[_0x25b1('0xf')][_0x25b1('0x10')]===0x1f4){logger[_0x25b1('0xf')](_0x25b1('0x11'),_0x1f715d,_0x3346ed[_0x25b1('0xf')][_0x25b1('0x12')]);return _0x2a46e0(_0x3346ed[_0x25b1('0xf')][_0x25b1('0x12')]);}logger[_0x25b1('0xf')](_0x25b1('0x11'),_0x1f715d,_0x3346ed['error'][_0x25b1('0x12')]);return _0x451c66(_0x3346ed[_0x25b1('0xf')]['message']);}else{logger[_0x25b1('0xa')](_0x25b1('0x11'),_0x1f715d,_0x25b1('0xb'));_0x451c66(_0x3346ed['result']['message']);}})[_0x25b1('0x13')](function(_0x573ec2){logger[_0x25b1('0xf')](_0x25b1('0x11'),_0x1f715d,_0x573ec2);_0x2a46e0(_0x573ec2);});});}exports[_0x25b1('0x14')]=function(_0x27ccc9){var _0x1f78c2=this;return new Promise(function(_0x2a7d14,_0x17024a){return db[_0x25b1('0x15')]['create'](_0x27ccc9['body'],{'raw':_0x27ccc9[_0x25b1('0x16')]?_0x27ccc9['options'][_0x25b1('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x3bfd7d){logger['info'](_0x25b1('0x14'),_0x27ccc9);logger['debug'](_0x25b1('0x14'),_0x27ccc9,JSON['stringify'](_0x3bfd7d));_0x2a7d14(_0x3bfd7d);})['catch'](function(_0x565cfd){logger[_0x25b1('0xf')](_0x25b1('0x14'),_0x565cfd['message'],_0x27ccc9);_0x17024a(_0x1f78c2[_0x25b1('0xf')](0x1f4,_0x565cfd[_0x25b1('0x12')]));});});};exports[_0x25b1('0x18')]=function(_0x246acd){var _0x1aabbb=this;return new Promise(function(_0x5e6b6b,_0x3fa043){return db[_0x25b1('0x15')][_0x25b1('0x19')](_0x246acd[_0x25b1('0x1a')],{'raw':_0x246acd[_0x25b1('0x16')]?_0x246acd[_0x25b1('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x246acd[_0x25b1('0x16')]?_0x246acd[_0x25b1('0x16')][_0x25b1('0x1b')]||null:null,'attributes':_0x246acd['options']?_0x246acd[_0x25b1('0x16')][_0x25b1('0x1c')]||null:null,'limit':_0x246acd[_0x25b1('0x16')]?_0x246acd['options'][_0x25b1('0x1d')]||null:null})['then'](function(_0x19ecd1){logger[_0x25b1('0xa')](_0x25b1('0x18'),_0x246acd);logger[_0x25b1('0xc')](_0x25b1('0x18'),_0x246acd,JSON[_0x25b1('0xe')](_0x19ecd1));_0x5e6b6b(_0x19ecd1);})[_0x25b1('0x13')](function(_0x4cd825){logger[_0x25b1('0xf')](_0x25b1('0x18'),_0x4cd825[_0x25b1('0x12')],_0x246acd);_0x3fa043(_0x1aabbb[_0x25b1('0xf')](0x1f4,_0x4cd825[_0x25b1('0x12')]));});});};
\ No newline at end of file
+var _0x958a=['http','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','UpdateOpenchannelQueueReport','update','where','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0x23f98f,_0x4faa45){var _0x4e89fd=function(_0x1aa729){while(--_0x1aa729){_0x23f98f['push'](_0x23f98f['shift']());}};_0x4e89fd(++_0x4faa45);}(_0x958a,0x128));var _0xa958=function(_0x305131,_0x204535){_0x305131=_0x305131-0x0;var _0x14b03d=_0x958a[_0x305131];return _0x14b03d;};'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')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3ca01f,_0x249764['error']['message']);return _0x54c0e0(_0x249764[_0xa958('0x12')][_0xa958('0x14')]);}logger[_0xa958('0x12')]('OpenchannelQueueReport,\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')]('OpenchannelQueueReport,\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?!![]:![]:!![]})['then'](function(_0x4a90c2){logger[_0xa958('0xc')](_0xa958('0x17'),_0x4eadc9);logger[_0xa958('0xf')]('CreateOpenchannelQueueReport',_0x4eadc9,JSON[_0xa958('0x11')](_0x4a90c2));_0x70d13e(_0x4a90c2);})[_0xa958('0x16')](function(_0x5c091a){logger[_0xa958('0x12')](_0xa958('0x17'),_0x5c091a['message'],_0x4eadc9);_0x52a184(_0x3a053f['error'](0x1f4,_0x5c091a[_0xa958('0x14')]));});});};exports[_0xa958('0x1d')]=function(_0x50b3c3){var _0x25f461=this;return new Promise(function(_0x27097a,_0x2f03df){return db[_0xa958('0x18')][_0xa958('0x1e')](_0x50b3c3[_0xa958('0x1a')],{'raw':_0x50b3c3['options']?_0x50b3c3[_0xa958('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x50b3c3[_0xa958('0x1b')]?_0x50b3c3[_0xa958('0x1b')][_0xa958('0x1f')]||null:null,'attributes':_0x50b3c3[_0xa958('0x1b')]?_0x50b3c3[_0xa958('0x1b')][_0xa958('0x20')]||null:null,'limit':_0x50b3c3[_0xa958('0x1b')]?_0x50b3c3[_0xa958('0x1b')][_0xa958('0x21')]||null:null})[_0xa958('0xb')](function(_0x4c4c37){logger['info'](_0xa958('0x1d'),_0x50b3c3);logger['debug'](_0xa958('0x1d'),_0x50b3c3,JSON[_0xa958('0x11')](_0x4c4c37));_0x27097a(_0x4c4c37);})['catch'](function(_0x23bdbf){logger[_0xa958('0x12')](_0xa958('0x1d'),_0x23bdbf[_0xa958('0x14')],_0x50b3c3);_0x2f03df(_0x25f461[_0xa958('0x12')](0x1f4,_0x23bdbf['message']));});});};
\ No newline at end of file
index 1929686..7222704 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc6a=['isAuthenticated','get','describe','show','create','put','/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelTransferReport.controller'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfc6a,0xee));var _0xafc6=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xfc6a[_0x565c49];return _0x20ca34;};'use strict';var multer=require('multer');var util=require(_0xafc6('0x0'));var path=require(_0xafc6('0x1'));var timeout=require(_0xafc6('0x2'));var express=require(_0xafc6('0x3'));var router=express[_0xafc6('0x4')]();var fs_extra=require(_0xafc6('0x5'));var auth=require(_0xafc6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xafc6('0x7'));var controller=require(_0xafc6('0x8'));router['get']('/',auth[_0xafc6('0x9')](),controller['index']);router[_0xafc6('0xa')]('/describe',auth[_0xafc6('0x9')](),controller[_0xafc6('0xb')]);router[_0xafc6('0xa')]('/:id',auth[_0xafc6('0x9')](),controller[_0xafc6('0xc')]);router['post']('/',auth[_0xafc6('0x9')](),controller[_0xafc6('0xd')]);router[_0xafc6('0xe')](_0xafc6('0xf'),auth['isAuthenticated'](),controller[_0xafc6('0x10')]);router[_0xafc6('0x11')](_0xafc6('0xf'),auth[_0xafc6('0x9')](),controller['destroy']);module[_0xafc6('0x12')]=router;
\ No newline at end of file
+var _0xcf66=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','delete','exports','multer','path','connect-timeout'];(function(_0x5834bc,_0x3d4801){var _0x3e183a=function(_0x18b023){while(--_0x18b023){_0x5834bc['push'](_0x5834bc['shift']());}};_0x3e183a(++_0x3d4801);}(_0xcf66,0x9d));var _0x6cf6=function(_0x48da43,_0x59b19f){_0x48da43=_0x48da43-0x0;var _0x3a7a36=_0xcf66[_0x48da43];return _0x3a7a36;};'use strict';var multer=require(_0x6cf6('0x0'));var util=require('util');var path=require(_0x6cf6('0x1'));var timeout=require(_0x6cf6('0x2'));var express=require(_0x6cf6('0x3'));var router=express[_0x6cf6('0x4')]();var fs_extra=require(_0x6cf6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6cf6('0x6'));var config=require(_0x6cf6('0x7'));var controller=require(_0x6cf6('0x8'));router[_0x6cf6('0x9')]('/',auth[_0x6cf6('0xa')](),controller['index']);router[_0x6cf6('0x9')](_0x6cf6('0xb'),auth[_0x6cf6('0xa')](),controller[_0x6cf6('0xc')]);router['get'](_0x6cf6('0xd'),auth[_0x6cf6('0xa')](),controller[_0x6cf6('0xe')]);router[_0x6cf6('0xf')]('/',auth[_0x6cf6('0xa')](),controller[_0x6cf6('0x10')]);router[_0x6cf6('0x11')]('/:id',auth[_0x6cf6('0xa')](),controller['update']);router[_0x6cf6('0x12')](_0x6cf6('0xd'),auth[_0x6cf6('0xa')](),controller['destroy']);module[_0x6cf6('0x13')]=router;
\ No newline at end of file
index 7d992ab..97ad82b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0xf1af27,_0x598bb1){var _0x46b274=function(_0x1dba43){while(--_0x1dba43){_0xf1af27['push'](_0xf1af27['shift']());}};_0x46b274(++_0x598bb1);}(_0x34e8,0x12c));var _0x834e=function(_0x1e83be,_0x6d6191){_0x1e83be=_0x1e83be-0x0;var _0x167481=_0x34e8[_0x1e83be];return _0x167481;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
+var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x527fe4,_0xc96042){var _0x4bfc67=function(_0x21c7f3){while(--_0x21c7f3){_0x527fe4['push'](_0x527fe4['shift']());}};_0x4bfc67(++_0xc96042);}(_0xedd9,0xfc));var _0x9edd=function(_0x117681,_0x3c4b02){_0x117681=_0x117681-0x0;var _0x43b050=_0xedd9[_0x117681];return _0x43b050;};'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 81d5847..c756159 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e5f=['sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','update','then','destroy','sendStatus','error','stack','name','index','map','OpenchannelTransferReport','rawAttributes','type','key','keys','filters','intersection','query','attributes','fields','length','model','hasOwnProperty','order'];(function(_0x49bdc4,_0x1e2507){var _0x1f7437=function(_0x25a9f9){while(--_0x25a9f9){_0x49bdc4['push'](_0x49bdc4['shift']());}};_0x1f7437(++_0x1e2507);}(_0x1e5f,0xae));var _0xf1e5=function(_0x71cd05,_0x36ac11){_0x71cd05=_0x71cd05-0x0;var _0x59c9e7=_0x1e5f[_0x71cd05];return _0x59c9e7;};'use strict';var emlformat=require(_0xf1e5('0x0'));var rimraf=require(_0xf1e5('0x1'));var zipdir=require(_0xf1e5('0x2'));var jsonpatch=require(_0xf1e5('0x3'));var rp=require(_0xf1e5('0x4'));var moment=require(_0xf1e5('0x5'));var BPromise=require(_0xf1e5('0x6'));var Mustache=require(_0xf1e5('0x7'));var util=require(_0xf1e5('0x8'));var path=require('path');var sox=require(_0xf1e5('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf1e5('0xa'));var _=require(_0xf1e5('0xb'));var squel=require(_0xf1e5('0xc'));var crypto=require(_0xf1e5('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf1e5('0xe'));var toCsv=require(_0xf1e5('0xf'));var querystring=require(_0xf1e5('0x10'));var Papa=require(_0xf1e5('0x11'));var Redis=require(_0xf1e5('0x12'));var authService=require(_0xf1e5('0x13'));var qs=require(_0xf1e5('0x14'));var as=require(_0xf1e5('0x15'));var hardwareService=require(_0xf1e5('0x16'));var logger=require(_0xf1e5('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xf1e5('0x18'));var licenseUtil=require(_0xf1e5('0x19'));var db=require(_0xf1e5('0x1a'))['db'];function respondWithStatusCode(_0xba064,_0x337de7){_0x337de7=_0x337de7||0xcc;return function(_0x22b92a){if(_0x22b92a){return _0xba064['sendStatus'](_0x337de7);}return _0xba064[_0xf1e5('0x1b')](_0x337de7)[_0xf1e5('0x1c')]();};}function respondWithResult(_0x26c793,_0x36cae2){_0x36cae2=_0x36cae2||0xc8;return function(_0xbc4a94){if(_0xbc4a94){return _0x26c793['status'](_0x36cae2)[_0xf1e5('0x1d')](_0xbc4a94);}};}function respondWithFilteredResult(_0x28823,_0x48b461){return function(_0x403868){if(_0x403868){var _0x21df31=typeof _0x48b461[_0xf1e5('0x1e')]===_0xf1e5('0x1f')&&typeof _0x48b461['limit']===_0xf1e5('0x1f');var _0xe3bbf3=_0x403868[_0xf1e5('0x20')];var _0x4788b3=_0x21df31?0x0:_0x48b461[_0xf1e5('0x1e')];var _0x21c54a=_0x21df31?_0x403868[_0xf1e5('0x20')]:_0x48b461[_0xf1e5('0x1e')]+_0x48b461[_0xf1e5('0x21')];var _0x32bb91;if(_0x21c54a>=_0xe3bbf3){_0x21c54a=_0xe3bbf3;_0x32bb91=0xc8;}else{_0x32bb91=0xce;}_0x28823[_0xf1e5('0x1b')](_0x32bb91);return _0x28823[_0xf1e5('0x22')](_0xf1e5('0x23'),_0x4788b3+'-'+_0x21c54a+'/'+_0xe3bbf3)[_0xf1e5('0x1d')](_0x403868);}return null;};}function patchUpdates(_0x153adc){return function(_0x58d777){try{jsonpatch[_0xf1e5('0x24')](_0x58d777,_0x153adc,!![]);}catch(_0x2383eb){return BPromise['reject'](_0x2383eb);}return _0x58d777['save']();};}function saveUpdates(_0x202020,_0x1a56f2){return function(_0xc0da65){if(_0xc0da65){return _0xc0da65[_0xf1e5('0x25')](_0x202020)[_0xf1e5('0x26')](function(_0xbbb446){return _0xbbb446;});}return null;};}function removeEntity(_0x3c4bba,_0x1d5d0d){return function(_0x15c332){if(_0x15c332){return _0x15c332[_0xf1e5('0x27')]()[_0xf1e5('0x26')](function(){_0x3c4bba[_0xf1e5('0x1b')](0xcc)[_0xf1e5('0x1c')]();});}};}function handleEntityNotFound(_0xfc9fa,_0x47542b){return function(_0x553a1c){if(!_0x553a1c){_0xfc9fa[_0xf1e5('0x28')](0x194);}return _0x553a1c;};}function handleError(_0x249038,_0x668eb2){_0x668eb2=_0x668eb2||0x1f4;return function(_0x88158e){logger[_0xf1e5('0x29')](_0x88158e[_0xf1e5('0x2a')]);if(_0x88158e['name']){delete _0x88158e[_0xf1e5('0x2b')];}_0x249038[_0xf1e5('0x1b')](_0x668eb2)['send'](_0x88158e);};}exports[_0xf1e5('0x2c')]=function(_0x6bf3f7,_0x4cc1ff){var _0x36ea06={},_0x173254={},_0x3d911e={'count':0x0,'rows':[]};var _0x4f5e1c=_[_0xf1e5('0x2d')](db[_0xf1e5('0x2e')][_0xf1e5('0x2f')],function(_0x14e955){return{'name':_0x14e955['fieldName'],'type':_0x14e955[_0xf1e5('0x30')][_0xf1e5('0x31')]};});_0x173254['model']=_['map'](_0x4f5e1c,_0xf1e5('0x2b'));_0x173254['query']=_[_0xf1e5('0x32')](_0x6bf3f7['query']);_0x173254[_0xf1e5('0x33')]=_[_0xf1e5('0x34')](_0x173254['model'],_0x173254[_0xf1e5('0x35')]);_0x36ea06[_0xf1e5('0x36')]=_[_0xf1e5('0x34')](_0x173254['model'],qs[_0xf1e5('0x37')](_0x6bf3f7[_0xf1e5('0x35')]['fields']));_0x36ea06['attributes']=_0x36ea06['attributes'][_0xf1e5('0x38')]?_0x36ea06[_0xf1e5('0x36')]:_0x173254[_0xf1e5('0x39')];if(!_0x6bf3f7[_0xf1e5('0x35')][_0xf1e5('0x3a')]('nolimit')){_0x36ea06[_0xf1e5('0x21')]=qs['limit'](_0x6bf3f7[_0xf1e5('0x35')][_0xf1e5('0x21')]);_0x36ea06['offset']=qs['offset'](_0x6bf3f7[_0xf1e5('0x35')]['offset']);}_0x36ea06[_0xf1e5('0x3b')]=qs[_0xf1e5('0x3c')](_0x6bf3f7[_0xf1e5('0x35')]['sort']);_0x36ea06['where']=qs['filters'](_[_0xf1e5('0x3d')](_0x6bf3f7[_0xf1e5('0x35')],_0x173254[_0xf1e5('0x33')]),_0x4f5e1c);if(_0x6bf3f7[_0xf1e5('0x35')][_0xf1e5('0x3e')]){_0x36ea06[_0xf1e5('0x3f')]=_[_0xf1e5('0x40')](_0x36ea06[_0xf1e5('0x3f')],{'$or':_[_0xf1e5('0x2d')](_0x4f5e1c,function(_0x50cc6f){if(_0x50cc6f['type']!==_0xf1e5('0x41')){var _0x1cf030={};_0x1cf030[_0x50cc6f[_0xf1e5('0x2b')]]={'$like':'%'+_0x6bf3f7[_0xf1e5('0x35')][_0xf1e5('0x3e')]+'%'};return _0x1cf030;}})});}_0x36ea06=_['merge']({},_0x36ea06,_0x6bf3f7['options']);var _0x2dcd91={'where':_0x36ea06[_0xf1e5('0x3f')]};return db[_0xf1e5('0x2e')][_0xf1e5('0x20')](_0x2dcd91)[_0xf1e5('0x26')](function(_0x49ebf8){_0x3d911e[_0xf1e5('0x20')]=_0x49ebf8;if(_0x6bf3f7['query'][_0xf1e5('0x42')]){_0x36ea06[_0xf1e5('0x43')]=[{'all':!![]}];}return db[_0xf1e5('0x2e')][_0xf1e5('0x44')](_0x36ea06);})[_0xf1e5('0x26')](function(_0x663e22){_0x3d911e[_0xf1e5('0x45')]=_0x663e22;return _0x3d911e;})[_0xf1e5('0x26')](respondWithFilteredResult(_0x4cc1ff,_0x36ea06))['catch'](handleError(_0x4cc1ff,null));};exports[_0xf1e5('0x46')]=function(_0x4fea8a,_0x336150){var _0x4c3a28={'raw':!![],'where':{'id':_0x4fea8a[_0xf1e5('0x47')]['id']}},_0x321da8={};_0x321da8[_0xf1e5('0x39')]=_[_0xf1e5('0x32')](db[_0xf1e5('0x2e')][_0xf1e5('0x2f')]);_0x321da8['query']=_['keys'](_0x4fea8a[_0xf1e5('0x35')]);_0x321da8[_0xf1e5('0x33')]=_[_0xf1e5('0x34')](_0x321da8[_0xf1e5('0x39')],_0x321da8['query']);_0x4c3a28[_0xf1e5('0x36')]=_[_0xf1e5('0x34')](_0x321da8[_0xf1e5('0x39')],qs[_0xf1e5('0x37')](_0x4fea8a[_0xf1e5('0x35')][_0xf1e5('0x37')]));_0x4c3a28[_0xf1e5('0x36')]=_0x4c3a28[_0xf1e5('0x36')][_0xf1e5('0x38')]?_0x4c3a28[_0xf1e5('0x36')]:_0x321da8[_0xf1e5('0x39')];if(_0x4fea8a[_0xf1e5('0x35')][_0xf1e5('0x42')]){_0x4c3a28[_0xf1e5('0x43')]=[{'all':!![]}];}_0x4c3a28=_[_0xf1e5('0x40')]({},_0x4c3a28,_0x4fea8a[_0xf1e5('0x48')]);return db[_0xf1e5('0x2e')][_0xf1e5('0x49')](_0x4c3a28)[_0xf1e5('0x26')](handleEntityNotFound(_0x336150,null))[_0xf1e5('0x26')](respondWithResult(_0x336150,null))[_0xf1e5('0x4a')](handleError(_0x336150,null));};exports['create']=function(_0x2124c8,_0x1e82d0){return db[_0xf1e5('0x2e')][_0xf1e5('0x4b')](_0x2124c8[_0xf1e5('0x4c')],{})['then'](respondWithResult(_0x1e82d0,0xc9))[_0xf1e5('0x4a')](handleError(_0x1e82d0,null));};exports[_0xf1e5('0x25')]=function(_0x2151bd,_0x28b855){if(_0x2151bd[_0xf1e5('0x4c')]['id']){delete _0x2151bd[_0xf1e5('0x4c')]['id'];}return db['OpenchannelTransferReport'][_0xf1e5('0x49')]({'where':{'id':_0x2151bd[_0xf1e5('0x47')]['id']}})[_0xf1e5('0x26')](handleEntityNotFound(_0x28b855,null))[_0xf1e5('0x26')](saveUpdates(_0x2151bd[_0xf1e5('0x4c')],null))[_0xf1e5('0x26')](respondWithResult(_0x28b855,null))['catch'](handleError(_0x28b855,null));};exports[_0xf1e5('0x27')]=function(_0x1c25cf,_0x2b151e){return db['OpenchannelTransferReport'][_0xf1e5('0x49')]({'where':{'id':_0x1c25cf[_0xf1e5('0x47')]['id']}})[_0xf1e5('0x26')](handleEntityNotFound(_0x2b151e,null))[_0xf1e5('0x26')](removeEntity(_0x2b151e,null))[_0xf1e5('0x4a')](handleError(_0x2b151e,null));};exports[_0xf1e5('0x4d')]=function(_0xd27270,_0x55b033){return db[_0xf1e5('0x2e')][_0xf1e5('0x4d')]()['then'](respondWithResult(_0x55b033,null))['catch'](handleError(_0x55b033,null));};
\ No newline at end of file
+var _0x89b6=['keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','filter','VIRTUAL','merge','options','then','includeAll','include','findAll','rows','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','undefined','count','apply','reject','save','update','destroy','end','error','stack','name','send','map','OpenchannelTransferReport','rawAttributes','fieldName','type','model'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x89b6,0x1ca));var _0x689b=function(_0x35bad0,_0x21927d){_0x35bad0=_0x35bad0-0x0;var _0x4fe50f=_0x89b6[_0x35bad0];return _0x4fe50f;};'use strict';var emlformat=require(_0x689b('0x0'));var rimraf=require(_0x689b('0x1'));var zipdir=require(_0x689b('0x2'));var jsonpatch=require(_0x689b('0x3'));var rp=require(_0x689b('0x4'));var moment=require(_0x689b('0x5'));var BPromise=require(_0x689b('0x6'));var Mustache=require(_0x689b('0x7'));var util=require(_0x689b('0x8'));var path=require(_0x689b('0x9'));var sox=require(_0x689b('0xa'));var csv=require('to-csv');var ejs=require(_0x689b('0xb'));var fs=require('fs');var fs_extra=require(_0x689b('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x689b('0xd'));var jsforce=require(_0x689b('0xe'));var deskjs=require(_0x689b('0xf'));var toCsv=require(_0x689b('0x10'));var querystring=require(_0x689b('0x11'));var Papa=require(_0x689b('0x12'));var Redis=require(_0x689b('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x689b('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x689b('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x689b('0x16'));var db=require(_0x689b('0x17'))['db'];function respondWithStatusCode(_0x269d16,_0x3f3ab6){_0x3f3ab6=_0x3f3ab6||0xcc;return function(_0x52c03c){if(_0x52c03c){return _0x269d16[_0x689b('0x18')](_0x3f3ab6);}return _0x269d16[_0x689b('0x19')](_0x3f3ab6)['end']();};}function respondWithResult(_0x436da5,_0x557f54){_0x557f54=_0x557f54||0xc8;return function(_0x211f21){if(_0x211f21){return _0x436da5[_0x689b('0x19')](_0x557f54)['json'](_0x211f21);}};}function respondWithFilteredResult(_0x3ed533,_0x316fa7){return function(_0x56f9a6){if(_0x56f9a6){var _0x12b272=typeof _0x316fa7[_0x689b('0x1a')]==='undefined'&&typeof _0x316fa7[_0x689b('0x1b')]===_0x689b('0x1c');var _0x6c0dfe=_0x56f9a6[_0x689b('0x1d')];var _0x315043=_0x12b272?0x0:_0x316fa7[_0x689b('0x1a')];var _0x17ce4d=_0x12b272?_0x56f9a6[_0x689b('0x1d')]:_0x316fa7['offset']+_0x316fa7[_0x689b('0x1b')];var _0x30b20e;if(_0x17ce4d>=_0x6c0dfe){_0x17ce4d=_0x6c0dfe;_0x30b20e=0xc8;}else{_0x30b20e=0xce;}_0x3ed533['status'](_0x30b20e);return _0x3ed533['set']('Content-Range',_0x315043+'-'+_0x17ce4d+'/'+_0x6c0dfe)['json'](_0x56f9a6);}return null;};}function patchUpdates(_0x429a7a){return function(_0x4f583d){try{jsonpatch[_0x689b('0x1e')](_0x4f583d,_0x429a7a,!![]);}catch(_0x259e53){return BPromise[_0x689b('0x1f')](_0x259e53);}return _0x4f583d[_0x689b('0x20')]();};}function saveUpdates(_0x1cd23e,_0x4d6ad6){return function(_0x34ef70){if(_0x34ef70){return _0x34ef70[_0x689b('0x21')](_0x1cd23e)['then'](function(_0x4f2948){return _0x4f2948;});}return null;};}function removeEntity(_0x318c34,_0xaa7062){return function(_0x491cea){if(_0x491cea){return _0x491cea[_0x689b('0x22')]()['then'](function(){_0x318c34[_0x689b('0x19')](0xcc)[_0x689b('0x23')]();});}};}function handleEntityNotFound(_0x2b7f52,_0x41bab9){return function(_0x39fa65){if(!_0x39fa65){_0x2b7f52[_0x689b('0x18')](0x194);}return _0x39fa65;};}function handleError(_0xcb8c28,_0x4f842c){_0x4f842c=_0x4f842c||0x1f4;return function(_0xa3ce0a){logger[_0x689b('0x24')](_0xa3ce0a[_0x689b('0x25')]);if(_0xa3ce0a[_0x689b('0x26')]){delete _0xa3ce0a['name'];}_0xcb8c28[_0x689b('0x19')](_0x4f842c)[_0x689b('0x27')](_0xa3ce0a);};}exports['index']=function(_0x28f63a,_0xc47464){var _0xad38cb={},_0x524072={},_0x5840fc={'count':0x0,'rows':[]};var _0xeca9aa=_[_0x689b('0x28')](db[_0x689b('0x29')][_0x689b('0x2a')],function(_0x232ba8){return{'name':_0x232ba8[_0x689b('0x2b')],'type':_0x232ba8[_0x689b('0x2c')]['key']};});_0x524072[_0x689b('0x2d')]=_['map'](_0xeca9aa,'name');_0x524072['query']=_[_0x689b('0x2e')](_0x28f63a[_0x689b('0x2f')]);_0x524072[_0x689b('0x30')]=_[_0x689b('0x31')](_0x524072[_0x689b('0x2d')],_0x524072[_0x689b('0x2f')]);_0xad38cb['attributes']=_[_0x689b('0x31')](_0x524072[_0x689b('0x2d')],qs[_0x689b('0x32')](_0x28f63a['query'][_0x689b('0x32')]));_0xad38cb[_0x689b('0x33')]=_0xad38cb['attributes'][_0x689b('0x34')]?_0xad38cb[_0x689b('0x33')]:_0x524072[_0x689b('0x2d')];if(!_0x28f63a['query'][_0x689b('0x35')](_0x689b('0x36'))){_0xad38cb[_0x689b('0x1b')]=qs['limit'](_0x28f63a[_0x689b('0x2f')]['limit']);_0xad38cb['offset']=qs[_0x689b('0x1a')](_0x28f63a[_0x689b('0x2f')][_0x689b('0x1a')]);}_0xad38cb[_0x689b('0x37')]=qs['sort'](_0x28f63a['query']['sort']);_0xad38cb[_0x689b('0x38')]=qs[_0x689b('0x30')](_['pick'](_0x28f63a['query'],_0x524072[_0x689b('0x30')]),_0xeca9aa);if(_0x28f63a[_0x689b('0x2f')][_0x689b('0x39')]){_0xad38cb['where']=_['merge'](_0xad38cb[_0x689b('0x38')],{'$or':_[_0x689b('0x28')](_0xeca9aa,function(_0xee8d97){if(_0xee8d97['type']!==_0x689b('0x3a')){var _0x137567={};_0x137567[_0xee8d97[_0x689b('0x26')]]={'$like':'%'+_0x28f63a['query']['filter']+'%'};return _0x137567;}})});}_0xad38cb=_[_0x689b('0x3b')]({},_0xad38cb,_0x28f63a[_0x689b('0x3c')]);var _0x3f6f95={'where':_0xad38cb[_0x689b('0x38')]};return db[_0x689b('0x29')][_0x689b('0x1d')](_0x3f6f95)[_0x689b('0x3d')](function(_0x3f9021){_0x5840fc['count']=_0x3f9021;if(_0x28f63a['query'][_0x689b('0x3e')]){_0xad38cb[_0x689b('0x3f')]=[{'all':!![]}];}return db['OpenchannelTransferReport'][_0x689b('0x40')](_0xad38cb);})[_0x689b('0x3d')](function(_0x2f94cb){_0x5840fc[_0x689b('0x41')]=_0x2f94cb;return _0x5840fc;})[_0x689b('0x3d')](respondWithFilteredResult(_0xc47464,_0xad38cb))[_0x689b('0x42')](handleError(_0xc47464,null));};exports['show']=function(_0x4a9894,_0x317552){var _0x4448ef={'raw':!![],'where':{'id':_0x4a9894[_0x689b('0x43')]['id']}},_0x5ebc3e={};_0x5ebc3e[_0x689b('0x2d')]=_[_0x689b('0x2e')](db['OpenchannelTransferReport']['rawAttributes']);_0x5ebc3e['query']=_[_0x689b('0x2e')](_0x4a9894['query']);_0x5ebc3e['filters']=_[_0x689b('0x31')](_0x5ebc3e[_0x689b('0x2d')],_0x5ebc3e[_0x689b('0x2f')]);_0x4448ef['attributes']=_[_0x689b('0x31')](_0x5ebc3e[_0x689b('0x2d')],qs[_0x689b('0x32')](_0x4a9894[_0x689b('0x2f')]['fields']));_0x4448ef[_0x689b('0x33')]=_0x4448ef[_0x689b('0x33')]['length']?_0x4448ef[_0x689b('0x33')]:_0x5ebc3e[_0x689b('0x2d')];if(_0x4a9894[_0x689b('0x2f')]['includeAll']){_0x4448ef[_0x689b('0x3f')]=[{'all':!![]}];}_0x4448ef=_[_0x689b('0x3b')]({},_0x4448ef,_0x4a9894[_0x689b('0x3c')]);return db['OpenchannelTransferReport'][_0x689b('0x44')](_0x4448ef)[_0x689b('0x3d')](handleEntityNotFound(_0x317552,null))[_0x689b('0x3d')](respondWithResult(_0x317552,null))[_0x689b('0x42')](handleError(_0x317552,null));};exports[_0x689b('0x45')]=function(_0x41ea0a,_0x5db3de){return db[_0x689b('0x29')][_0x689b('0x45')](_0x41ea0a['body'],{})[_0x689b('0x3d')](respondWithResult(_0x5db3de,0xc9))[_0x689b('0x42')](handleError(_0x5db3de,null));};exports[_0x689b('0x21')]=function(_0x327e75,_0x35251f){if(_0x327e75[_0x689b('0x46')]['id']){delete _0x327e75[_0x689b('0x46')]['id'];}return db['OpenchannelTransferReport']['find']({'where':{'id':_0x327e75[_0x689b('0x43')]['id']}})[_0x689b('0x3d')](handleEntityNotFound(_0x35251f,null))[_0x689b('0x3d')](saveUpdates(_0x327e75[_0x689b('0x46')],null))[_0x689b('0x3d')](respondWithResult(_0x35251f,null))[_0x689b('0x42')](handleError(_0x35251f,null));};exports[_0x689b('0x22')]=function(_0x36e048,_0x21bad7){return db[_0x689b('0x29')][_0x689b('0x44')]({'where':{'id':_0x36e048[_0x689b('0x43')]['id']}})[_0x689b('0x3d')](handleEntityNotFound(_0x21bad7,null))['then'](removeEntity(_0x21bad7,null))[_0x689b('0x42')](handleError(_0x21bad7,null));};exports[_0x689b('0x47')]=function(_0x1d6ea8,_0x2bc15d){return db['OpenchannelTransferReport'][_0x689b('0x47')]()[_0x689b('0x3d')](respondWithResult(_0x2bc15d,null))[_0x689b('0x42')](handleError(_0x2bc15d,null));};
\ No newline at end of file
index 9a84cc5..72eb1f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda14=['define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xda14,0x66));var _0x4da1=function(_0x1d50f2,_0x3c3ec6){_0x1d50f2=_0x1d50f2-0x0;var _0x3769b8=_0xda14[_0x1d50f2];return _0x3769b8;};'use strict';var _=require(_0x4da1('0x0'));var util=require(_0x4da1('0x1'));var logger=require(_0x4da1('0x2'))(_0x4da1('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4da1('0x4'));var fs=require('fs');var path=require(_0x4da1('0x5'));var rimraf=require(_0x4da1('0x6'));var config=require(_0x4da1('0x7'));var attributes=require(_0x4da1('0x8'));module[_0x4da1('0x9')]=function(_0x3d5bf5,_0x442263){return _0x3d5bf5[_0x4da1('0xa')](_0x4da1('0xb'),attributes,{'tableName':_0x4da1('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x4da1('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2756=['uniqueid','lodash','util','bluebird','request-promise','path','./openchannelTransferReport.attributes','OpenchannelTransferReport','report_openchannel_transfer'];(function(_0x356bb2,_0x2fd51b){var _0x437381=function(_0x27a254){while(--_0x27a254){_0x356bb2['push'](_0x356bb2['shift']());}};_0x437381(++_0x2fd51b);}(_0x2756,0x169));var _0x6275=function(_0x16337a,_0x4789a1){_0x16337a=_0x16337a-0x0;var _0x422365=_0x2756[_0x16337a];return _0x422365;};'use strict';var _=require(_0x6275('0x0'));var util=require(_0x6275('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x6275('0x2'));var rp=require(_0x6275('0x3'));var fs=require('fs');var path=require(_0x6275('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6275('0x5'));module['exports']=function(_0x309f92,_0x4ccdda){return _0x309f92['define'](_0x6275('0x6'),attributes,{'tableName':_0x6275('0x7'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x6275('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index 2558fa8..c2204ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ed=['OpenchannelTransferReport,\x20%s,\x20%s','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x46ed,0x168));var _0xd46e=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x46ed[_0x599f41];return _0x2e4d58;};'use strict';var _=require(_0xd46e('0x0'));var util=require(_0xd46e('0x1'));var moment=require('moment');var BPromise=require(_0xd46e('0x2'));var rs=require(_0xd46e('0x3'));var fs=require('fs');var Redis=require(_0xd46e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd46e('0x5'));var logger=require(_0xd46e('0x6'))('rpc');var config=require(_0xd46e('0x7'));var jayson=require(_0xd46e('0x8'));var client=jayson[_0xd46e('0x9')][_0xd46e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x45e680,_0x855f24,_0x437ea0){return new BPromise(function(_0x144687,_0x31259b){return client[_0xd46e('0xb')](_0x45e680,_0x437ea0)[_0xd46e('0xc')](function(_0x59c88d){logger[_0xd46e('0xd')](_0xd46e('0xe'),_0x855f24,'request\x20sent');logger[_0xd46e('0xf')](_0xd46e('0x10'),_0x855f24,_0xd46e('0x11'),JSON[_0xd46e('0x12')](_0x59c88d));if(_0x59c88d[_0xd46e('0x13')]){if(_0x59c88d[_0xd46e('0x13')]['code']===0x1f4){logger[_0xd46e('0x13')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x855f24,_0x59c88d['error'][_0xd46e('0x14')]);return _0x31259b(_0x59c88d[_0xd46e('0x13')]['message']);}logger['error'](_0xd46e('0xe'),_0x855f24,_0x59c88d[_0xd46e('0x13')][_0xd46e('0x14')]);return _0x144687(_0x59c88d[_0xd46e('0x13')]['message']);}else{logger[_0xd46e('0xd')](_0xd46e('0xe'),_0x855f24,_0xd46e('0x11'));_0x144687(_0x59c88d[_0xd46e('0x15')][_0xd46e('0x14')]);}})['catch'](function(_0x1d50a5){logger[_0xd46e('0x13')](_0xd46e('0xe'),_0x855f24,_0x1d50a5);_0x31259b(_0x1d50a5);});});}
\ No newline at end of file
+var _0x5b20=['OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info'];(function(_0x210af9,_0x1b196d){var _0x59d6ec=function(_0x3e9c09){while(--_0x3e9c09){_0x210af9['push'](_0x210af9['shift']());}};_0x59d6ec(++_0x1b196d);}(_0x5b20,0x86));var _0x05b2=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x5b20[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x05b2('0x0'));var util=require(_0x05b2('0x1'));var moment=require(_0x05b2('0x2'));var BPromise=require(_0x05b2('0x3'));var rs=require(_0x05b2('0x4'));var fs=require('fs');var Redis=require(_0x05b2('0x5'));var db=require(_0x05b2('0x6'))['db'];var utils=require(_0x05b2('0x7'));var logger=require(_0x05b2('0x8'))(_0x05b2('0x9'));var config=require(_0x05b2('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x05b2('0xb')][_0x05b2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x541855,_0x24f11f,_0x43cd94){return new BPromise(function(_0x3be69a,_0x1b66e4){return client[_0x05b2('0xd')](_0x541855,_0x43cd94)[_0x05b2('0xe')](function(_0xfe6680){logger[_0x05b2('0xf')](_0x05b2('0x10'),_0x24f11f,_0x05b2('0x11'));logger[_0x05b2('0x12')](_0x05b2('0x13'),_0x24f11f,_0x05b2('0x11'),JSON[_0x05b2('0x14')](_0xfe6680));if(_0xfe6680[_0x05b2('0x15')]){if(_0xfe6680[_0x05b2('0x15')]['code']===0x1f4){logger[_0x05b2('0x15')](_0x05b2('0x10'),_0x24f11f,_0xfe6680[_0x05b2('0x15')][_0x05b2('0x16')]);return _0x1b66e4(_0xfe6680['error'][_0x05b2('0x16')]);}logger[_0x05b2('0x15')](_0x05b2('0x10'),_0x24f11f,_0xfe6680['error']['message']);return _0x3be69a(_0xfe6680[_0x05b2('0x15')][_0x05b2('0x16')]);}else{logger['info']('OpenchannelTransferReport,\x20%s,\x20%s',_0x24f11f,_0x05b2('0x11'));_0x3be69a(_0xfe6680[_0x05b2('0x17')][_0x05b2('0x16')]);}})[_0x05b2('0x18')](function(_0x234843){logger[_0x05b2('0x15')](_0x05b2('0x10'),_0x24f11f,_0x234843);_0x1b66e4(_0x234843);});});}
\ No newline at end of file
index 0c6de72..a15d135 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa130=['Router','fs-extra','get','isAuthenticated','index','show','create','put','/:id','update','destroy','multer','util','path','connect-timeout','express'];(function(_0x4c2a45,_0x12a8ae){var _0x5e6412=function(_0x37224b){while(--_0x37224b){_0x4c2a45['push'](_0x4c2a45['shift']());}};_0x5e6412(++_0x12a8ae);}(_0xa130,0x1cb));var _0x0a13=function(_0x34391f,_0x1bb9f2){_0x34391f=_0x34391f-0x0;var _0x48fff7=_0xa130[_0x34391f];return _0x48fff7;};'use strict';var multer=require(_0x0a13('0x0'));var util=require(_0x0a13('0x1'));var path=require(_0x0a13('0x2'));var timeout=require(_0x0a13('0x3'));var express=require(_0x0a13('0x4'));var router=express[_0x0a13('0x5')]();var fs_extra=require(_0x0a13('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./pause.controller');router[_0x0a13('0x7')]('/',auth[_0x0a13('0x8')](),controller[_0x0a13('0x9')]);router['get']('/:id',auth[_0x0a13('0x8')](),controller[_0x0a13('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0x0a13('0xb')]);router[_0x0a13('0xc')](_0x0a13('0xd'),auth[_0x0a13('0x8')](),controller[_0x0a13('0xe')]);router['delete'](_0x0a13('0xd'),auth[_0x0a13('0x8')](),controller[_0x0a13('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x1e90=['../../config/environment','./pause.controller','get','index','/:id','post','isAuthenticated','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2afb44,_0x249a57){var _0x15ccc2=function(_0x180748){while(--_0x180748){_0x2afb44['push'](_0x2afb44['shift']());}};_0x15ccc2(++_0x249a57);}(_0x1e90,0x1c5));var _0x01e9=function(_0x667f53,_0x40af1e){_0x667f53=_0x667f53-0x0;var _0x3a54fb=_0x1e90[_0x667f53];return _0x3a54fb;};'use strict';var multer=require(_0x01e9('0x0'));var util=require(_0x01e9('0x1'));var path=require(_0x01e9('0x2'));var timeout=require(_0x01e9('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x01e9('0x4'));var auth=require(_0x01e9('0x5'));var interaction=require(_0x01e9('0x6'));var config=require(_0x01e9('0x7'));var controller=require(_0x01e9('0x8'));router[_0x01e9('0x9')]('/',auth['isAuthenticated'](),controller[_0x01e9('0xa')]);router['get'](_0x01e9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x01e9('0xc')]('/',auth[_0x01e9('0xd')](),controller[_0x01e9('0xe')]);router[_0x01e9('0xf')](_0x01e9('0xb'),auth[_0x01e9('0xd')](),controller[_0x01e9('0x10')]);router[_0x01e9('0x11')]('/:id',auth[_0x01e9('0xd')](),controller[_0x01e9('0x12')]);module[_0x01e9('0x13')]=router;
\ No newline at end of file
index 65ab9fa..9df7288 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe261=['exports','STRING','name','sequelize'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xe261,0x9f));var _0x1e26=function(_0x72f9c1,_0x1be647){_0x72f9c1=_0x72f9c1-0x0;var _0x3d0701=_0xe261[_0x72f9c1];return _0x3d0701;};'use strict';var Sequelize=require(_0x1e26('0x0'));module[_0x1e26('0x1')]={'name':{'type':Sequelize[_0x1e26('0x2')],'unique':_0x1e26('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x1e26('0x2')]}};
\ No newline at end of file
+var _0xc637=['sequelize','exports','STRING'];(function(_0x39db49,_0x1b9b0e){var _0x4b3cfc=function(_0x128213){while(--_0x128213){_0x39db49['push'](_0x39db49['shift']());}};_0x4b3cfc(++_0x1b9b0e);}(_0xc637,0x9c));var _0x7c63=function(_0x4a66fc,_0x2da159){_0x4a66fc=_0x4a66fc-0x0;var _0x5d74cb=_0xc637[_0x4a66fc];return _0x5d74cb;};'use strict';var Sequelize=require(_0x7c63('0x0'));module[_0x7c63('0x1')]={'name':{'type':Sequelize[_0x7c63('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x7c63('0x2')]}};
\ No newline at end of file
index 0a23e06..303b4d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec9f=['get','Pauses','UserProfileResource','error','stack','name','map','Pause','rawAttributes','type','model','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy'];(function(_0x47cc56,_0x425420){var _0xdbe67f=function(_0x2a77a3){while(--_0x2a77a3){_0x47cc56['push'](_0x47cc56['shift']());}};_0xdbe67f(++_0x425420);}(_0xec9f,0xcd));var _0xfec9=function(_0x2719e3,_0x562a76){_0x2719e3=_0x2719e3-0x0;var _0x138189=_0xec9f[_0x2719e3];return _0x138189;};'use strict';var emlformat=require(_0xfec9('0x0'));var rimraf=require(_0xfec9('0x1'));var zipdir=require(_0xfec9('0x2'));var jsonpatch=require(_0xfec9('0x3'));var rp=require(_0xfec9('0x4'));var moment=require(_0xfec9('0x5'));var BPromise=require(_0xfec9('0x6'));var Mustache=require(_0xfec9('0x7'));var util=require('util');var path=require(_0xfec9('0x8'));var sox=require(_0xfec9('0x9'));var csv=require(_0xfec9('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfec9('0xb'));var _=require(_0xfec9('0xc'));var squel=require(_0xfec9('0xd'));var crypto=require('crypto');var jsforce=require(_0xfec9('0xe'));var deskjs=require(_0xfec9('0xf'));var toCsv=require(_0xfec9('0xa'));var querystring=require(_0xfec9('0x10'));var Papa=require(_0xfec9('0x11'));var Redis=require('ioredis');var authService=require(_0xfec9('0x12'));var qs=require(_0xfec9('0x13'));var as=require(_0xfec9('0x14'));var hardwareService=require(_0xfec9('0x15'));var logger=require('../../config/logger')(_0xfec9('0x16'));var utils=require('../../config/utils');var config=require(_0xfec9('0x17'));var licenseUtil=require(_0xfec9('0x18'));var db=require(_0xfec9('0x19'))['db'];function respondWithStatusCode(_0x2cef33,_0x30757a){_0x30757a=_0x30757a||0xcc;return function(_0x41ea53){if(_0x41ea53){return _0x2cef33[_0xfec9('0x1a')](_0x30757a);}return _0x2cef33[_0xfec9('0x1b')](_0x30757a)[_0xfec9('0x1c')]();};}function respondWithResult(_0x27d691,_0x254261){_0x254261=_0x254261||0xc8;return function(_0x3bba11){if(_0x3bba11){return _0x27d691[_0xfec9('0x1b')](_0x254261)[_0xfec9('0x1d')](_0x3bba11);}};}function respondWithFilteredResult(_0x59c002,_0x4e798a){return function(_0x15c0b2){if(_0x15c0b2){var _0x2ff6a6=typeof _0x4e798a[_0xfec9('0x1e')]===_0xfec9('0x1f')&&typeof _0x4e798a['limit']===_0xfec9('0x1f');var _0x1c1a1a=_0x15c0b2[_0xfec9('0x20')];var _0x46e001=_0x2ff6a6?0x0:_0x4e798a[_0xfec9('0x1e')];var _0x138923=_0x2ff6a6?_0x15c0b2[_0xfec9('0x20')]:_0x4e798a[_0xfec9('0x1e')]+_0x4e798a[_0xfec9('0x21')];var _0x53b5ca;if(_0x138923>=_0x1c1a1a){_0x138923=_0x1c1a1a;_0x53b5ca=0xc8;}else{_0x53b5ca=0xce;}_0x59c002['status'](_0x53b5ca);return _0x59c002[_0xfec9('0x22')](_0xfec9('0x23'),_0x46e001+'-'+_0x138923+'/'+_0x1c1a1a)[_0xfec9('0x1d')](_0x15c0b2);}return null;};}function patchUpdates(_0x475e62){return function(_0x178bc3){try{jsonpatch[_0xfec9('0x24')](_0x178bc3,_0x475e62,!![]);}catch(_0x70d88e){return BPromise[_0xfec9('0x25')](_0x70d88e);}return _0x178bc3['save']();};}function saveUpdates(_0x34dd0e,_0x4eb3b4){return function(_0x2e0331){if(_0x2e0331){return _0x2e0331[_0xfec9('0x26')](_0x34dd0e)[_0xfec9('0x27')](function(_0x10188a){return _0x10188a;});}return null;};}function removeEntity(_0x27cc55,_0x18a6a1){return function(_0x6efd72){if(_0x6efd72){return _0x6efd72[_0xfec9('0x28')]()['then'](function(){var _0x337e22=_0x6efd72[_0xfec9('0x29')]({'plain':!![]});var _0x4d96d7=_0xfec9('0x2a');return db[_0xfec9('0x2b')][_0xfec9('0x28')]({'where':{'type':_0x4d96d7,'resourceId':_0x337e22['id']}})[_0xfec9('0x27')](function(){return _0x6efd72;});})[_0xfec9('0x27')](function(){_0x27cc55[_0xfec9('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x479a61,_0x192670){return function(_0x4acb06){if(!_0x4acb06){_0x479a61[_0xfec9('0x1a')](0x194);}return _0x4acb06;};}function handleError(_0x5b2d7b,_0x57f94a){_0x57f94a=_0x57f94a||0x1f4;return function(_0x455e7f){logger[_0xfec9('0x2c')](_0x455e7f[_0xfec9('0x2d')]);if(_0x455e7f['name']){delete _0x455e7f[_0xfec9('0x2e')];}_0x5b2d7b['status'](_0x57f94a)['send'](_0x455e7f);};}exports['index']=function(_0x3b47d5,_0x40f346){var _0x37f03f={},_0x42e52d={},_0x3d082a={'count':0x0,'rows':[]};var _0x564d75=_[_0xfec9('0x2f')](db[_0xfec9('0x30')][_0xfec9('0x31')],function(_0x19284a){return{'name':_0x19284a['fieldName'],'type':_0x19284a[_0xfec9('0x32')]['key']};});_0x42e52d[_0xfec9('0x33')]=_[_0xfec9('0x2f')](_0x564d75,_0xfec9('0x2e'));_0x42e52d[_0xfec9('0x34')]=_['keys'](_0x3b47d5['query']);_0x42e52d[_0xfec9('0x35')]=_[_0xfec9('0x36')](_0x42e52d[_0xfec9('0x33')],_0x42e52d[_0xfec9('0x34')]);_0x37f03f[_0xfec9('0x37')]=_[_0xfec9('0x36')](_0x42e52d[_0xfec9('0x33')],qs[_0xfec9('0x38')](_0x3b47d5[_0xfec9('0x34')]['fields']));_0x37f03f[_0xfec9('0x37')]=_0x37f03f[_0xfec9('0x37')][_0xfec9('0x39')]?_0x37f03f[_0xfec9('0x37')]:_0x42e52d[_0xfec9('0x33')];if(!_0x3b47d5[_0xfec9('0x34')]['hasOwnProperty'](_0xfec9('0x3a'))){_0x37f03f[_0xfec9('0x21')]=qs['limit'](_0x3b47d5[_0xfec9('0x34')][_0xfec9('0x21')]);_0x37f03f[_0xfec9('0x1e')]=qs[_0xfec9('0x1e')](_0x3b47d5['query'][_0xfec9('0x1e')]);}_0x37f03f['order']=qs['sort'](_0x3b47d5[_0xfec9('0x34')][_0xfec9('0x3b')]);_0x37f03f[_0xfec9('0x3c')]=qs[_0xfec9('0x35')](_[_0xfec9('0x3d')](_0x3b47d5['query'],_0x42e52d[_0xfec9('0x35')]),_0x564d75);if(_0x3b47d5['query'][_0xfec9('0x3e')]){_0x37f03f['where']=_[_0xfec9('0x3f')](_0x37f03f[_0xfec9('0x3c')],{'$or':_[_0xfec9('0x2f')](_0x564d75,function(_0x4ac35d){if(_0x4ac35d[_0xfec9('0x32')]!==_0xfec9('0x40')){var _0x50f842={};_0x50f842[_0x4ac35d[_0xfec9('0x2e')]]={'$like':'%'+_0x3b47d5[_0xfec9('0x34')]['filter']+'%'};return _0x50f842;}})});}_0x37f03f=_[_0xfec9('0x3f')]({},_0x37f03f,_0x3b47d5[_0xfec9('0x41')]);var _0x369589={'where':_0x37f03f['where']};return db[_0xfec9('0x30')]['count'](_0x369589)['then'](function(_0x13e443){_0x3d082a['count']=_0x13e443;if(_0x3b47d5[_0xfec9('0x34')][_0xfec9('0x42')]){_0x37f03f[_0xfec9('0x43')]=[{'all':!![]}];}return db[_0xfec9('0x30')][_0xfec9('0x44')](_0x37f03f);})[_0xfec9('0x27')](function(_0x4ea0ea){_0x3d082a['rows']=_0x4ea0ea;return _0x3d082a;})[_0xfec9('0x27')](respondWithFilteredResult(_0x40f346,_0x37f03f))[_0xfec9('0x45')](handleError(_0x40f346,null));};exports[_0xfec9('0x46')]=function(_0x59e413,_0xa9b757){var _0x22e952={'raw':!![],'where':{'id':_0x59e413[_0xfec9('0x47')]['id']}},_0x5798e3={};_0x5798e3[_0xfec9('0x33')]=_[_0xfec9('0x48')](db[_0xfec9('0x30')][_0xfec9('0x31')]);_0x5798e3[_0xfec9('0x34')]=_['keys'](_0x59e413[_0xfec9('0x34')]);_0x5798e3['filters']=_[_0xfec9('0x36')](_0x5798e3[_0xfec9('0x33')],_0x5798e3[_0xfec9('0x34')]);_0x22e952['attributes']=_[_0xfec9('0x36')](_0x5798e3[_0xfec9('0x33')],qs[_0xfec9('0x38')](_0x59e413[_0xfec9('0x34')][_0xfec9('0x38')]));_0x22e952[_0xfec9('0x37')]=_0x22e952['attributes']['length']?_0x22e952[_0xfec9('0x37')]:_0x5798e3[_0xfec9('0x33')];if(_0x59e413['query']['includeAll']){_0x22e952[_0xfec9('0x43')]=[{'all':!![]}];}_0x22e952=_[_0xfec9('0x3f')]({},_0x22e952,_0x59e413[_0xfec9('0x41')]);return db[_0xfec9('0x30')][_0xfec9('0x49')](_0x22e952)['then'](handleEntityNotFound(_0xa9b757,null))[_0xfec9('0x27')](respondWithResult(_0xa9b757,null))[_0xfec9('0x45')](handleError(_0xa9b757,null));};exports[_0xfec9('0x4a')]=function(_0x1a3a83,_0x5c5ffc){return db[_0xfec9('0x30')][_0xfec9('0x4a')](_0x1a3a83['body'],{})['then'](function(_0x11284a){var _0x1eb402=_0x1a3a83['user'][_0xfec9('0x29')]({'plain':!![]});if(!_0x1eb402)throw new Error(_0xfec9('0x4b'));if(_0x1eb402['role']===_0xfec9('0x4c')){var _0x388120=_0x11284a[_0xfec9('0x29')]({'plain':!![]});var _0x5ba319='Pauses';return db[_0xfec9('0x4d')]['find']({'where':{'name':_0x5ba319,'userProfileId':_0x1eb402[_0xfec9('0x4e')]},'raw':!![]})[_0xfec9('0x27')](function(_0x2470ac){if(_0x2470ac&&_0x2470ac[_0xfec9('0x4f')]===0x0){return db['UserProfileResource'][_0xfec9('0x4a')]({'name':_0x388120['name'],'resourceId':_0x388120['id'],'type':_0x2470ac[_0xfec9('0x2e')],'sectionId':_0x2470ac['id']},{})[_0xfec9('0x27')](function(){return _0x11284a;});}else{return _0x11284a;}})[_0xfec9('0x45')](function(_0x32210d){logger['error'](_0xfec9('0x50'),_0x32210d);throw _0x32210d;});}return _0x11284a;})['then'](respondWithResult(_0x5c5ffc,0xc9))[_0xfec9('0x45')](handleError(_0x5c5ffc,null));};exports[_0xfec9('0x26')]=function(_0x5a6278,_0x18c225){if(_0x5a6278[_0xfec9('0x51')]['id']){delete _0x5a6278['body']['id'];}return db['Pause'][_0xfec9('0x49')]({'where':{'id':_0x5a6278[_0xfec9('0x47')]['id']}})[_0xfec9('0x27')](handleEntityNotFound(_0x18c225,null))[_0xfec9('0x27')](saveUpdates(_0x5a6278[_0xfec9('0x51')],null))['then'](respondWithResult(_0x18c225,null))[_0xfec9('0x45')](handleError(_0x18c225,null));};exports[_0xfec9('0x28')]=function(_0x1e3125,_0x1f0844){return db[_0xfec9('0x30')][_0xfec9('0x49')]({'where':{'id':_0x1e3125[_0xfec9('0x47')]['id']}})[_0xfec9('0x27')](handleEntityNotFound(_0x1f0844,null))[_0xfec9('0x27')](removeEntity(_0x1f0844,null))[_0xfec9('0x45')](handleError(_0x1f0844,null));};
\ No newline at end of file
+var _0xa43d=['role','user','UserProfileSection','userProfileId','autoAssociation','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','set','apply','reject','update','then','destroy','Pauses','UserProfileResource','end','sendStatus','error','stack','name','index','rawAttributes','fieldName','key','model','map','query','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','merge','type','filter','options','count','includeAll','include','Pause','findAll','catch','show','keys','length','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x2b91c5,_0x3b6db5){var _0xbd5531=function(_0x54783d){while(--_0x54783d){_0x2b91c5['push'](_0x2b91c5['shift']());}};_0xbd5531(++_0x3b6db5);}(_0xa43d,0xb0));var _0xda43=function(_0x24cf7f,_0xcda231){_0x24cf7f=_0x24cf7f-0x0;var _0x4c6742=_0xa43d[_0x24cf7f];return _0x4c6742;};'use strict';var emlformat=require(_0xda43('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xda43('0x1'));var jsonpatch=require(_0xda43('0x2'));var rp=require(_0xda43('0x3'));var moment=require(_0xda43('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xda43('0x5'));var util=require(_0xda43('0x6'));var path=require(_0xda43('0x7'));var sox=require(_0xda43('0x8'));var csv=require('to-csv');var ejs=require(_0xda43('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xda43('0xa'));var squel=require(_0xda43('0xb'));var crypto=require(_0xda43('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xda43('0xd'));var toCsv=require(_0xda43('0xe'));var querystring=require(_0xda43('0xf'));var Papa=require(_0xda43('0x10'));var Redis=require(_0xda43('0x11'));var authService=require(_0xda43('0x12'));var qs=require(_0xda43('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xda43('0x14'));var logger=require(_0xda43('0x15'))(_0xda43('0x16'));var utils=require(_0xda43('0x17'));var config=require(_0xda43('0x18'));var licenseUtil=require(_0xda43('0x19'));var db=require(_0xda43('0x1a'))['db'];function respondWithStatusCode(_0x235140,_0x6ec300){_0x6ec300=_0x6ec300||0xcc;return function(_0x76dc3e){if(_0x76dc3e){return _0x235140['sendStatus'](_0x6ec300);}return _0x235140[_0xda43('0x1b')](_0x6ec300)['end']();};}function respondWithResult(_0x1e8e9f,_0x3243b5){_0x3243b5=_0x3243b5||0xc8;return function(_0x5c6ca2){if(_0x5c6ca2){return _0x1e8e9f[_0xda43('0x1b')](_0x3243b5)[_0xda43('0x1c')](_0x5c6ca2);}};}function respondWithFilteredResult(_0x31bde1,_0xffee63){return function(_0x1d12d3){if(_0x1d12d3){var _0x461471=typeof _0xffee63[_0xda43('0x1d')]===_0xda43('0x1e')&&typeof _0xffee63[_0xda43('0x1f')]===_0xda43('0x1e');var _0x5d8af2=_0x1d12d3['count'];var _0x3e3133=_0x461471?0x0:_0xffee63[_0xda43('0x1d')];var _0x473db9=_0x461471?_0x1d12d3['count']:_0xffee63[_0xda43('0x1d')]+_0xffee63[_0xda43('0x1f')];var _0x1b0732;if(_0x473db9>=_0x5d8af2){_0x473db9=_0x5d8af2;_0x1b0732=0xc8;}else{_0x1b0732=0xce;}_0x31bde1[_0xda43('0x1b')](_0x1b0732);return _0x31bde1[_0xda43('0x20')]('Content-Range',_0x3e3133+'-'+_0x473db9+'/'+_0x5d8af2)['json'](_0x1d12d3);}return null;};}function patchUpdates(_0x1f44ad){return function(_0x3efca6){try{jsonpatch[_0xda43('0x21')](_0x3efca6,_0x1f44ad,!![]);}catch(_0xb1cbfa){return BPromise[_0xda43('0x22')](_0xb1cbfa);}return _0x3efca6['save']();};}function saveUpdates(_0x774d8,_0x4a0734){return function(_0x259bf8){if(_0x259bf8){return _0x259bf8[_0xda43('0x23')](_0x774d8)[_0xda43('0x24')](function(_0x3c5d88){return _0x3c5d88;});}return null;};}function removeEntity(_0x3576a5,_0x130a07){return function(_0x5e5e63){if(_0x5e5e63){return _0x5e5e63[_0xda43('0x25')]()[_0xda43('0x24')](function(){var _0x12cee1=_0x5e5e63['get']({'plain':!![]});var _0x22ae19=_0xda43('0x26');return db[_0xda43('0x27')][_0xda43('0x25')]({'where':{'type':_0x22ae19,'resourceId':_0x12cee1['id']}})[_0xda43('0x24')](function(){return _0x5e5e63;});})[_0xda43('0x24')](function(){_0x3576a5['status'](0xcc)[_0xda43('0x28')]();});}};}function handleEntityNotFound(_0x21576f,_0x146168){return function(_0x3af72c){if(!_0x3af72c){_0x21576f[_0xda43('0x29')](0x194);}return _0x3af72c;};}function handleError(_0x32a476,_0x1dc807){_0x1dc807=_0x1dc807||0x1f4;return function(_0x388d01){logger[_0xda43('0x2a')](_0x388d01[_0xda43('0x2b')]);if(_0x388d01[_0xda43('0x2c')]){delete _0x388d01[_0xda43('0x2c')];}_0x32a476[_0xda43('0x1b')](_0x1dc807)['send'](_0x388d01);};}exports[_0xda43('0x2d')]=function(_0xb3a52d,_0x3e9082){var _0x2c7407={},_0x162306={},_0x3de2a1={'count':0x0,'rows':[]};var _0x10b11e=_['map'](db['Pause'][_0xda43('0x2e')],function(_0xb4532f){return{'name':_0xb4532f[_0xda43('0x2f')],'type':_0xb4532f['type'][_0xda43('0x30')]};});_0x162306[_0xda43('0x31')]=_[_0xda43('0x32')](_0x10b11e,_0xda43('0x2c'));_0x162306[_0xda43('0x33')]=_['keys'](_0xb3a52d[_0xda43('0x33')]);_0x162306['filters']=_[_0xda43('0x34')](_0x162306[_0xda43('0x31')],_0x162306[_0xda43('0x33')]);_0x2c7407['attributes']=_[_0xda43('0x34')](_0x162306[_0xda43('0x31')],qs[_0xda43('0x35')](_0xb3a52d[_0xda43('0x33')][_0xda43('0x35')]));_0x2c7407['attributes']=_0x2c7407[_0xda43('0x36')]['length']?_0x2c7407['attributes']:_0x162306[_0xda43('0x31')];if(!_0xb3a52d['query'][_0xda43('0x37')](_0xda43('0x38'))){_0x2c7407['limit']=qs[_0xda43('0x1f')](_0xb3a52d[_0xda43('0x33')][_0xda43('0x1f')]);_0x2c7407[_0xda43('0x1d')]=qs[_0xda43('0x1d')](_0xb3a52d[_0xda43('0x33')]['offset']);}_0x2c7407['order']=qs[_0xda43('0x39')](_0xb3a52d[_0xda43('0x33')][_0xda43('0x39')]);_0x2c7407[_0xda43('0x3a')]=qs[_0xda43('0x3b')](_[_0xda43('0x3c')](_0xb3a52d[_0xda43('0x33')],_0x162306[_0xda43('0x3b')]),_0x10b11e);if(_0xb3a52d[_0xda43('0x33')]['filter']){_0x2c7407[_0xda43('0x3a')]=_[_0xda43('0x3d')](_0x2c7407[_0xda43('0x3a')],{'$or':_[_0xda43('0x32')](_0x10b11e,function(_0x1e8280){if(_0x1e8280[_0xda43('0x3e')]!=='VIRTUAL'){var _0x485447={};_0x485447[_0x1e8280[_0xda43('0x2c')]]={'$like':'%'+_0xb3a52d[_0xda43('0x33')][_0xda43('0x3f')]+'%'};return _0x485447;}})});}_0x2c7407=_[_0xda43('0x3d')]({},_0x2c7407,_0xb3a52d[_0xda43('0x40')]);var _0x8c3804={'where':_0x2c7407['where']};return db['Pause']['count'](_0x8c3804)[_0xda43('0x24')](function(_0x1044da){_0x3de2a1[_0xda43('0x41')]=_0x1044da;if(_0xb3a52d[_0xda43('0x33')][_0xda43('0x42')]){_0x2c7407[_0xda43('0x43')]=[{'all':!![]}];}return db[_0xda43('0x44')][_0xda43('0x45')](_0x2c7407);})['then'](function(_0x5a385b){_0x3de2a1['rows']=_0x5a385b;return _0x3de2a1;})[_0xda43('0x24')](respondWithFilteredResult(_0x3e9082,_0x2c7407))[_0xda43('0x46')](handleError(_0x3e9082,null));};exports[_0xda43('0x47')]=function(_0x3f0788,_0x3e0cf3){var _0x306840={'raw':!![],'where':{'id':_0x3f0788['params']['id']}},_0x26474c={};_0x26474c['model']=_[_0xda43('0x48')](db[_0xda43('0x44')][_0xda43('0x2e')]);_0x26474c[_0xda43('0x33')]=_[_0xda43('0x48')](_0x3f0788[_0xda43('0x33')]);_0x26474c[_0xda43('0x3b')]=_['intersection'](_0x26474c['model'],_0x26474c[_0xda43('0x33')]);_0x306840[_0xda43('0x36')]=_['intersection'](_0x26474c[_0xda43('0x31')],qs[_0xda43('0x35')](_0x3f0788['query'][_0xda43('0x35')]));_0x306840['attributes']=_0x306840['attributes'][_0xda43('0x49')]?_0x306840['attributes']:_0x26474c[_0xda43('0x31')];if(_0x3f0788['query']['includeAll']){_0x306840[_0xda43('0x43')]=[{'all':!![]}];}_0x306840=_[_0xda43('0x3d')]({},_0x306840,_0x3f0788[_0xda43('0x40')]);return db[_0xda43('0x44')][_0xda43('0x4a')](_0x306840)[_0xda43('0x24')](handleEntityNotFound(_0x3e0cf3,null))[_0xda43('0x24')](respondWithResult(_0x3e0cf3,null))[_0xda43('0x46')](handleError(_0x3e0cf3,null));};exports[_0xda43('0x4b')]=function(_0x2c522a,_0x1c7908){return db[_0xda43('0x44')][_0xda43('0x4b')](_0x2c522a[_0xda43('0x4c')],{})[_0xda43('0x24')](function(_0x8c6e79){var _0x28c5d5=_0x2c522a['user'][_0xda43('0x4d')]({'plain':!![]});if(!_0x28c5d5)throw new Error(_0xda43('0x4e'));if(_0x28c5d5[_0xda43('0x4f')]===_0xda43('0x50')){var _0x34bf39=_0x8c6e79[_0xda43('0x4d')]({'plain':!![]});var _0x5598ad='Pauses';return db[_0xda43('0x51')][_0xda43('0x4a')]({'where':{'name':_0x5598ad,'userProfileId':_0x28c5d5[_0xda43('0x52')]},'raw':!![]})[_0xda43('0x24')](function(_0x4bc120){if(_0x4bc120&&_0x4bc120[_0xda43('0x53')]===0x0){return db[_0xda43('0x27')]['create']({'name':_0x34bf39[_0xda43('0x2c')],'resourceId':_0x34bf39['id'],'type':_0x4bc120[_0xda43('0x2c')],'sectionId':_0x4bc120['id']},{})[_0xda43('0x24')](function(){return _0x8c6e79;});}else{return _0x8c6e79;}})['catch'](function(_0x5a9c02){logger[_0xda43('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5a9c02);throw _0x5a9c02;});}return _0x8c6e79;})[_0xda43('0x24')](respondWithResult(_0x1c7908,0xc9))[_0xda43('0x46')](handleError(_0x1c7908,null));};exports[_0xda43('0x23')]=function(_0x14c39f,_0x2ac86a){if(_0x14c39f[_0xda43('0x4c')]['id']){delete _0x14c39f[_0xda43('0x4c')]['id'];}return db['Pause']['find']({'where':{'id':_0x14c39f[_0xda43('0x54')]['id']}})[_0xda43('0x24')](handleEntityNotFound(_0x2ac86a,null))['then'](saveUpdates(_0x14c39f[_0xda43('0x4c')],null))[_0xda43('0x24')](respondWithResult(_0x2ac86a,null))[_0xda43('0x46')](handleError(_0x2ac86a,null));};exports[_0xda43('0x25')]=function(_0x38a193,_0x55860e){return db[_0xda43('0x44')]['find']({'where':{'id':_0x38a193[_0xda43('0x54')]['id']}})[_0xda43('0x24')](handleEntityNotFound(_0x55860e,null))[_0xda43('0x24')](removeEntity(_0x55860e,null))[_0xda43('0x46')](handleError(_0x55860e,null));};
\ No newline at end of file
index b13416e..0541773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['../../config/environment','./pause.attributes','exports','define','Pause','tools_pauses','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2a67fe,_0x295c09){var _0x57e726=function(_0x280573){while(--_0x280573){_0x2a67fe['push'](_0x2a67fe['shift']());}};_0x57e726(++_0x295c09);}(_0x7217,0x19e));var _0x7721=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0x7217[_0x3b5250];return _0xc844a1;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6aa7=['Pause','tools_pauses','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','define'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6aa7,0x178));var _0x76aa=function(_0x3b525d,_0x1587d2){_0x3b525d=_0x3b525d-0x0;var _0x329879=_0x6aa7[_0x3b525d];return _0x329879;};'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 8c595b0..09ff66f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x4911cc,_0x4be0e9){var _0xe9af82=function(_0xb4b276){while(--_0xb4b276){_0x4911cc['push'](_0x4911cc['shift']());}};_0xe9af82(++_0x4be0e9);}(_0xb10b,0x12a));var _0xbb10=function(_0x1ea015,_0x5e416a){_0x1ea015=_0x1ea015-0x0;var _0x5ed37f=_0xb10b[_0x1ea015];return _0x5ed37f;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
+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(_0x94fb24,_0x38f766){var _0xa8db17=function(_0x2ab7fa){while(--_0x2ab7fa){_0x94fb24['push'](_0x94fb24['shift']());}};_0xa8db17(++_0x38f766);}(_0x7a54,0x106));var _0x47a5=function(_0x23f305,_0x8d90ba){_0x23f305=_0x23f305-0x0;var _0x39c19a=_0x7a54[_0x23f305];return _0x39c19a;};'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 bd25fcd..1e9316e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['originalname','format','%s-%s%s','basename','now','extname','file','upload','post','put','update','delete','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook','webhookGet','/:id','download','diskStorage','join','root'];(function(_0x2a1ba2,_0x5654af){var _0x4c9bc8=function(_0x5dbe38){while(--_0x5dbe38){_0x2a1ba2['push'](_0x2a1ba2['shift']());}};_0x4c9bc8(++_0x5654af);}(_0x3e74,0x175));var _0x43e7=function(_0x188ddd,_0x172a5d){_0x188ddd=_0x188ddd-0x0;var _0x1bb4f9=_0x3e74[_0x188ddd];return _0x1bb4f9;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth[_0x43e7('0x8')](),controller['show']);router[_0x43e7('0x7')]('/:id/download',auth['isAuthenticated'](),controller[_0x43e7('0xd')]);var upload=multer({'storage':multer[_0x43e7('0xe')]({'destination':function(_0x5c34f4,_0x2803d9,_0x513707){_0x513707(null,path[_0x43e7('0xf')](config[_0x43e7('0x10')],'server/files/plugins'));},'filename':function(_0x3eb206,_0xc960ea,_0x2718d3){_0xc960ea[_0x43e7('0x11')]=_0xc960ea['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2718d3(null,util[_0x43e7('0x12')](_0x43e7('0x13'),path[_0x43e7('0x14')](_0xc960ea['originalname'],path['extname'](_0xc960ea[_0x43e7('0x11')])),Date[_0x43e7('0x15')](),path[_0x43e7('0x16')](_0xc960ea[_0x43e7('0x11')])));}})});router['post']('/',upload['single'](_0x43e7('0x17')),controller[_0x43e7('0x18')]);router[_0x43e7('0x19')]('/webhook',controller['webhookPost']);router[_0x43e7('0x1a')](_0x43e7('0xc'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x1b')]);router[_0x43e7('0x1c')](_0x43e7('0xc'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x1c')]);module[_0x43e7('0x1d')]=router;
\ No newline at end of file
+var _0x29d4=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook','show','download','root','server/files/plugins','originalname','replace','%s-%s%s','basename','extname','now','post','file','webhookPost','put','update','delete','exports','multer','path','connect-timeout'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x29d4,0x1a1));var _0x429d=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x29d4[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x429d('0x0'));var util=require('util');var path=require(_0x429d('0x1'));var timeout=require(_0x429d('0x2'));var express=require(_0x429d('0x3'));var router=express[_0x429d('0x4')]();var fs_extra=require(_0x429d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x429d('0x6'));var config=require(_0x429d('0x7'));var controller=require(_0x429d('0x8'));router[_0x429d('0x9')]('/',auth[_0x429d('0xa')](),controller[_0x429d('0xb')]);router[_0x429d('0x9')](_0x429d('0xc'),controller['webhookGet']);router[_0x429d('0x9')]('/:id',auth[_0x429d('0xa')](),controller[_0x429d('0xd')]);router[_0x429d('0x9')]('/:id/download',auth[_0x429d('0xa')](),controller[_0x429d('0xe')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x31ff87,_0x2fd1ca,_0x417f77){_0x417f77(null,path['join'](config[_0x429d('0xf')],_0x429d('0x10')));},'filename':function(_0x1d933b,_0x1cb1cf,_0x4843af){_0x1cb1cf[_0x429d('0x11')]=_0x1cb1cf[_0x429d('0x11')][_0x429d('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4843af(null,util['format'](_0x429d('0x13'),path[_0x429d('0x14')](_0x1cb1cf['originalname'],path[_0x429d('0x15')](_0x1cb1cf[_0x429d('0x11')])),Date[_0x429d('0x16')](),path[_0x429d('0x15')](_0x1cb1cf[_0x429d('0x11')])));}})});router[_0x429d('0x17')]('/',upload['single'](_0x429d('0x18')),controller['upload']);router[_0x429d('0x17')](_0x429d('0xc'),controller[_0x429d('0x19')]);router[_0x429d('0x1a')]('/:id',auth[_0x429d('0xa')](),controller[_0x429d('0x1b')]);router[_0x429d('0x1c')]('/:id',auth[_0x429d('0xa')](),controller[_0x429d('0x1c')]);module[_0x429d('0x1d')]=router;
\ No newline at end of file
index 2859404..90f82e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x121e=['never','exports','ENUM','html','script','TEXT','STRING','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always'];(function(_0x259d17,_0x220710){var _0x407535=function(_0x49bc38){while(--_0x49bc38){_0x259d17['push'](_0x259d17['shift']());}};_0x407535(++_0x220710);}(_0x121e,0x12c));var _0xe121=function(_0x17ac71,_0x24249b){_0x17ac71=_0x17ac71-0x0;var _0x4f626c=_0x121e[_0x17ac71];return _0x4f626c;};'use strict';var Sequelize=require('sequelize');module[_0xe121('0x0')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xe121('0x1')](_0xe121('0x2'),_0xe121('0x3'))},'description':{'type':Sequelize[_0xe121('0x4')]},'version':{'type':Sequelize[_0xe121('0x4')]},'path':{'type':Sequelize[_0xe121('0x5')],'comment':_0xe121('0x6')},'active':{'type':Sequelize[_0xe121('0x7')],'defaultValue':0x0,'comment':_0xe121('0x8')},'sidebar':{'type':Sequelize[_0xe121('0x1')](_0xe121('0x9'),_0xe121('0xa'),_0xe121('0xb'),_0xe121('0xc')),'defaultValue':_0xe121('0xb'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0xe121('0x5')]},'adminUrl':{'type':Sequelize[_0xe121('0x5')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize[_0xe121('0x5')]},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3f83=['agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','html','script','TEXT','STRING','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','ENUM'];(function(_0x6b96b9,_0x1bad2a){var _0x243018=function(_0x422d0a){while(--_0x422d0a){_0x6b96b9['push'](_0x6b96b9['shift']());}};_0x243018(++_0x1bad2a);}(_0x3f83,0x163));var _0x33f8=function(_0x128425,_0x49e9db){_0x128425=_0x128425-0x0;var _0x22c5c2=_0x3f83[_0x128425];return _0x22c5c2;};'use strict';var Sequelize=require(_0x33f8('0x0'));module[_0x33f8('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x33f8('0x2'),_0x33f8('0x3'))},'description':{'type':Sequelize[_0x33f8('0x4')]},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize[_0x33f8('0x5')],'comment':_0x33f8('0x6')},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x33f8('0x7')},'sidebar':{'type':Sequelize[_0x33f8('0x8')]('adminOnly',_0x33f8('0x9'),_0x33f8('0xa'),_0x33f8('0xb')),'defaultValue':_0x33f8('0xa'),'comment':_0x33f8('0xc')},'icon':{'type':Sequelize[_0x33f8('0x5')]},'adminUrl':{'type':Sequelize[_0x33f8('0x5')]},'agentUrl':{'type':Sequelize[_0x33f8('0x5')]},'scriptName':{'type':Sequelize[_0x33f8('0x5')]},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ba9a558..1459f26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce8b=['server/files/plugins','format','%s.zip','basename','createWriteStream','zip','warning','ENOENT','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','Sequelize','pipe','glob','**/*','dirname','node_modules/**/*','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','filename','extname','file','root','Plugin\x20upload\x20destination:\x20%s','chmodSync','readdirSync','lstatSync','isFile','Invalid\x20plugin\x20structure','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','Invalid\x20manifest:\x20no\x20view\x20specified','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','sidebar','always','icon','icon-apps','version','admin','test','plugins','agent','script','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','update','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','encoding','method','%s%s','headers','content-length','content-type','statusCode','webhookPost','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','archiver','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','json','undefined','limit','count','offset','set','apply','reject','save','then','destroy','get','Plugins','end','error','stack','name','send','map','Plugin','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','download','join'];(function(_0x19b5fe,_0x55ed7d){var _0x18ef32=function(_0x3f0c11){while(--_0x3f0c11){_0x19b5fe['push'](_0x19b5fe['shift']());}};_0x18ef32(++_0x55ed7d);}(_0xce8b,0x107));var _0xbce8=function(_0x3e91a9,_0x53c466){_0x3e91a9=_0x3e91a9-0x0;var _0x25c9ad=_0xce8b[_0x3e91a9];return _0x25c9ad;};'use strict';var emlformat=require(_0xbce8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbce8('0x1'));var jsonpatch=require(_0xbce8('0x2'));var rp=require(_0xbce8('0x3'));var moment=require(_0xbce8('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbce8('0x5'));var util=require(_0xbce8('0x6'));var path=require(_0xbce8('0x7'));var sox=require(_0xbce8('0x8'));var csv=require(_0xbce8('0x9'));var ejs=require(_0xbce8('0xa'));var fs=require('fs');var fs_extra=require(_0xbce8('0xb'));var _=require(_0xbce8('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xbce8('0xd'));var deskjs=require(_0xbce8('0xe'));var toCsv=require(_0xbce8('0x9'));var querystring=require(_0xbce8('0xf'));var Papa=require('papaparse');var extract=require('extract-zip');var rimraf=require('rimraf');var archiver=require(_0xbce8('0x10'));var Redis=require(_0xbce8('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xbce8('0x12'));var as=require(_0xbce8('0x13'));var hardwareService=require(_0xbce8('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xbce8('0x15'));var config=require(_0xbce8('0x16'));var licenseUtil=require(_0xbce8('0x17'));var db=require(_0xbce8('0x18'))['db'];config['redis']=_['defaults'](config[_0xbce8('0x19')],{'host':_0xbce8('0x1a'),'port':0x18eb});var socket=require(_0xbce8('0x1b'))(new Redis(config[_0xbce8('0x19')]));require(_0xbce8('0x1c'))[_0xbce8('0x1d')](socket);function respondWithStatusCode(_0x33adb5,_0x3f5794){_0x3f5794=_0x3f5794||0xcc;return function(_0x2f576d){if(_0x2f576d){return _0x33adb5[_0xbce8('0x1e')](_0x3f5794);}return _0x33adb5['status'](_0x3f5794)['end']();};}function respondWithResult(_0x166e79,_0x4d2597){_0x4d2597=_0x4d2597||0xc8;return function(_0x45e5e4){if(_0x45e5e4){return _0x166e79[_0xbce8('0x1f')](_0x4d2597)[_0xbce8('0x20')](_0x45e5e4);}};}function respondWithFilteredResult(_0x3be001,_0x16f63b){return function(_0x4422da){if(_0x4422da){var _0x2fc466=typeof _0x16f63b['offset']===_0xbce8('0x21')&&typeof _0x16f63b[_0xbce8('0x22')]===_0xbce8('0x21');var _0x1056f1=_0x4422da[_0xbce8('0x23')];var _0x32d9c9=_0x2fc466?0x0:_0x16f63b['offset'];var _0x591915=_0x2fc466?_0x4422da[_0xbce8('0x23')]:_0x16f63b[_0xbce8('0x24')]+_0x16f63b[_0xbce8('0x22')];var _0x1a7707;if(_0x591915>=_0x1056f1){_0x591915=_0x1056f1;_0x1a7707=0xc8;}else{_0x1a7707=0xce;}_0x3be001[_0xbce8('0x1f')](_0x1a7707);return _0x3be001[_0xbce8('0x25')]('Content-Range',_0x32d9c9+'-'+_0x591915+'/'+_0x1056f1)[_0xbce8('0x20')](_0x4422da);}return null;};}function patchUpdates(_0x10936f){return function(_0x536c01){try{jsonpatch[_0xbce8('0x26')](_0x536c01,_0x10936f,!![]);}catch(_0x1ea96a){return BPromise[_0xbce8('0x27')](_0x1ea96a);}return _0x536c01[_0xbce8('0x28')]();};}function saveUpdates(_0x521692,_0x402e34){return function(_0x389d01){if(_0x389d01){return _0x389d01['update'](_0x521692)[_0xbce8('0x29')](function(_0x25c715){return _0x25c715;});}return null;};}function removeEntity(_0x512343,_0x347a23){return function(_0x49cf85){if(_0x49cf85){return _0x49cf85[_0xbce8('0x2a')]()[_0xbce8('0x29')](function(){var _0x35f3ef=_0x49cf85[_0xbce8('0x2b')]({'plain':!![]});var _0x3e7020=_0xbce8('0x2c');return db['UserProfileResource'][_0xbce8('0x2a')]({'where':{'type':_0x3e7020,'resourceId':_0x35f3ef['id']}})[_0xbce8('0x29')](function(){return _0x49cf85;});})[_0xbce8('0x29')](function(){_0x512343[_0xbce8('0x1f')](0xcc)[_0xbce8('0x2d')]();});}};}function handleEntityNotFound(_0x358853,_0x1232cd){return function(_0xc71078){if(!_0xc71078){_0x358853['sendStatus'](0x194);}return _0xc71078;};}function handleError(_0x3d4eb4,_0x29d3c2){_0x29d3c2=_0x29d3c2||0x1f4;return function(_0x489ef3){logger[_0xbce8('0x2e')](_0x489ef3[_0xbce8('0x2f')]);if(_0x489ef3[_0xbce8('0x30')]){delete _0x489ef3[_0xbce8('0x30')];}_0x3d4eb4[_0xbce8('0x1f')](_0x29d3c2)[_0xbce8('0x31')](_0x489ef3);};}exports['index']=function(_0x422e32,_0x967f22){var _0x216996={},_0x75abb4={},_0x26adef={'count':0x0,'rows':[]};var _0x477bea=_[_0xbce8('0x32')](db[_0xbce8('0x33')]['rawAttributes'],function(_0xfdd923){return{'name':_0xfdd923[_0xbce8('0x34')],'type':_0xfdd923[_0xbce8('0x35')][_0xbce8('0x36')]};});_0x75abb4[_0xbce8('0x37')]=_[_0xbce8('0x32')](_0x477bea,_0xbce8('0x30'));_0x75abb4[_0xbce8('0x38')]=_[_0xbce8('0x39')](_0x422e32[_0xbce8('0x38')]);_0x75abb4[_0xbce8('0x3a')]=_[_0xbce8('0x3b')](_0x75abb4[_0xbce8('0x37')],_0x75abb4[_0xbce8('0x38')]);_0x216996['attributes']=_[_0xbce8('0x3b')](_0x75abb4[_0xbce8('0x37')],qs[_0xbce8('0x3c')](_0x422e32[_0xbce8('0x38')][_0xbce8('0x3c')]));_0x216996[_0xbce8('0x3d')]=_0x216996[_0xbce8('0x3d')][_0xbce8('0x3e')]?_0x216996[_0xbce8('0x3d')]:_0x75abb4[_0xbce8('0x37')];if(!_0x422e32[_0xbce8('0x38')][_0xbce8('0x3f')](_0xbce8('0x40'))){_0x216996['limit']=qs['limit'](_0x422e32[_0xbce8('0x38')][_0xbce8('0x22')]);_0x216996[_0xbce8('0x24')]=qs[_0xbce8('0x24')](_0x422e32[_0xbce8('0x38')][_0xbce8('0x24')]);}_0x216996[_0xbce8('0x41')]=qs[_0xbce8('0x42')](_0x422e32[_0xbce8('0x38')][_0xbce8('0x42')]);_0x216996[_0xbce8('0x43')]=qs[_0xbce8('0x3a')](_[_0xbce8('0x44')](_0x422e32['query'],_0x75abb4[_0xbce8('0x3a')]),_0x477bea);if(_0x422e32['query']['filter']){_0x216996[_0xbce8('0x43')]=_['merge'](_0x216996[_0xbce8('0x43')],{'$or':_[_0xbce8('0x32')](_0x477bea,function(_0x23e36e){if(_0x23e36e['type']!==_0xbce8('0x45')){var _0x3a5ddc={};_0x3a5ddc[_0x23e36e[_0xbce8('0x30')]]={'$like':'%'+_0x422e32[_0xbce8('0x38')]['filter']+'%'};return _0x3a5ddc;}})});}_0x216996=_[_0xbce8('0x46')]({},_0x216996,_0x422e32[_0xbce8('0x47')]);var _0x14ac77={'where':_0x216996[_0xbce8('0x43')]};return db[_0xbce8('0x33')][_0xbce8('0x23')](_0x14ac77)[_0xbce8('0x29')](function(_0x9742c2){_0x26adef[_0xbce8('0x23')]=_0x9742c2;if(_0x422e32[_0xbce8('0x38')][_0xbce8('0x48')]){_0x216996[_0xbce8('0x49')]=[{'all':!![]}];}return db[_0xbce8('0x33')][_0xbce8('0x4a')](_0x216996);})[_0xbce8('0x29')](function(_0x2e8d5c){_0x26adef[_0xbce8('0x4b')]=_0x2e8d5c;return _0x26adef;})['then'](respondWithFilteredResult(_0x967f22,_0x216996))[_0xbce8('0x4c')](handleError(_0x967f22,null));};exports[_0xbce8('0x4d')]=function(_0x1862cf,_0x4dc530){var _0x15dcdc={'raw':!![],'where':{'id':_0x1862cf[_0xbce8('0x4e')]['id']}},_0x295cf8={};_0x295cf8[_0xbce8('0x37')]=_[_0xbce8('0x39')](db[_0xbce8('0x33')][_0xbce8('0x4f')]);_0x295cf8['query']=_['keys'](_0x1862cf[_0xbce8('0x38')]);_0x295cf8[_0xbce8('0x3a')]=_[_0xbce8('0x3b')](_0x295cf8['model'],_0x295cf8[_0xbce8('0x38')]);_0x15dcdc[_0xbce8('0x3d')]=_['intersection'](_0x295cf8[_0xbce8('0x37')],qs[_0xbce8('0x3c')](_0x1862cf[_0xbce8('0x38')][_0xbce8('0x3c')]));_0x15dcdc[_0xbce8('0x3d')]=_0x15dcdc[_0xbce8('0x3d')][_0xbce8('0x3e')]?_0x15dcdc[_0xbce8('0x3d')]:_0x295cf8[_0xbce8('0x37')];if(_0x1862cf[_0xbce8('0x38')][_0xbce8('0x48')]){_0x15dcdc[_0xbce8('0x49')]=[{'all':!![]}];}_0x15dcdc=_[_0xbce8('0x46')]({},_0x15dcdc,_0x1862cf[_0xbce8('0x47')]);return db[_0xbce8('0x33')][_0xbce8('0x50')](_0x15dcdc)['then'](handleEntityNotFound(_0x4dc530,null))[_0xbce8('0x29')](respondWithResult(_0x4dc530,null))['catch'](handleError(_0x4dc530,null));};exports[_0xbce8('0x51')]=function(_0x4d177e,_0x1365fc,_0x32078d){return db[_0xbce8('0x33')][_0xbce8('0x50')]({'where':{'id':_0x4d177e[_0xbce8('0x4e')]['id']},'attributes':['name',_0xbce8('0x7')],'raw':!![]})[_0xbce8('0x29')](handleEntityNotFound(_0x1365fc,null))['then'](function(_0x3bbca7){if(_0x3bbca7){var _0x2fab41=path[_0xbce8('0x52')](config['root'],_0xbce8('0x53'),util[_0xbce8('0x54')](_0xbce8('0x55'),path[_0xbce8('0x56')](_0x3bbca7['path'])));var _0x78ced8=fs[_0xbce8('0x57')](_0x2fab41);var _0x18e747=archiver(_0xbce8('0x58'),{'zlib':{'level':0x9}});_0x18e747['on'](_0xbce8('0x59'),function(_0x35a2a4){if(_0x35a2a4['code']===_0xbce8('0x5a')){logger[_0xbce8('0x2e')](_0x35a2a4);}else{throw new db['Sequelize'][(_0xbce8('0x5b'))](_0xbce8('0x5c'));}});_0x18e747['on']('error',function(_0x280473){throw new db[(_0xbce8('0x5d'))][(_0xbce8('0x5b'))](_0xbce8('0x5c'));});_0x18e747[_0xbce8('0x5e')](_0x78ced8);_0x18e747[_0xbce8('0x5f')](_0xbce8('0x60'),{'cwd':path[_0xbce8('0x52')](config['root'],_0xbce8('0x53'),path[_0xbce8('0x61')](_0x3bbca7[_0xbce8('0x7')])),'ignore':[path['join'](path['basename'](_0x3bbca7[_0xbce8('0x7')]),_0xbce8('0x62')),path['join'](path[_0xbce8('0x56')](_0x3bbca7[_0xbce8('0x7')]),_0xbce8('0x63'))],'nodir':!![]})[_0xbce8('0x64')]();_0x78ced8['on'](_0xbce8('0x65'),function(){if(!fs[_0xbce8('0x66')](_0x2fab41)){throw new db['Sequelize'][(_0xbce8('0x5b'))](_0xbce8('0x67'));}return _0x1365fc[_0xbce8('0x51')](_0x2fab41,util[_0xbce8('0x54')](_0xbce8('0x55'),path[_0xbce8('0x56')](_0x3bbca7[_0xbce8('0x7')])),function(_0x3f4888){if(_0x3f4888){throw new db[(_0xbce8('0x5d'))][(_0xbce8('0x5b'))](_0xbce8('0x68'));}fs[_0xbce8('0x69')](_0x2fab41);logger[_0xbce8('0x6a')](_0xbce8('0x6b'));logger['info'](_0xbce8('0x6c'));});});}return null;})[_0xbce8('0x4c')](handleError(_0x1365fc,null));};exports[_0xbce8('0x6d')]=function(_0x48005a,_0x27d52e,_0x30ed61){var _0x2040fa=path[_0xbce8('0x56')](_0x48005a['file'][_0xbce8('0x6e')],path[_0xbce8('0x6f')](_0x48005a[_0xbce8('0x70')][_0xbce8('0x6e')]));var _0x2c2ce9=path[_0xbce8('0x52')](config['root'],_0xbce8('0x53'),_0x48005a[_0xbce8('0x70')][_0xbce8('0x6e')]);var _0x23bb98=path[_0xbce8('0x52')](config[_0xbce8('0x71')],_0xbce8('0x53'),_0x2040fa);logger[_0xbce8('0x6a')]('Plugin\x20upload\x20filepath:\x20%s',_0x2c2ce9);logger[_0xbce8('0x6a')](_0xbce8('0x72'),_0x23bb98);try{fs[_0xbce8('0x73')](_0x2c2ce9,parseInt('0777',0x8));extract(_0x2c2ce9,{'dir':_0x23bb98},function(_0x4d3e51){if(_0x4d3e51){logger[_0xbce8('0x2e')](_0x4d3e51);handleError(_0x4d3e51,!![]);};var _0x2c930d=fs[_0xbce8('0x74')](_0x23bb98);if(_0x2c930d['length']>0x1){removeReferences(_0x2c2ce9,_0x23bb98);logger[_0xbce8('0x2e')]('Invalid\x20plugin\x20structure');return _0x30ed61(new Error('Invalid\x20plugin\x20structure'));}var _0x3f8696=fs[_0xbce8('0x75')](path['join'](_0x23bb98,_0x2c930d[0x0]));if(_0x3f8696[_0xbce8('0x76')]()){removeReferences(_0x2c2ce9,_0x23bb98);logger[_0xbce8('0x2e')](_0xbce8('0x77'));return _0x30ed61(new Error(_0xbce8('0x77')));}if(_0x3f8696[_0xbce8('0x78')]()){var _0x89ff22=fs[_0xbce8('0x74')](path[_0xbce8('0x52')](_0x23bb98,_0x2c930d[0x0]));if(_0x89ff22[_0xbce8('0x3e')]===0x0){removeReferences(_0x2c2ce9,_0x23bb98);logger['error'](_0xbce8('0x77'));return _0x30ed61(new Error(_0xbce8('0x77')));}var _0x5cbcde=_0x89ff22[_0xbce8('0x79')](function(_0x41bd9a){return _0x41bd9a===_0xbce8('0x7a');});if(!_0x5cbcde){return _0x30ed61(new Error(_0xbce8('0x7b')));}var _0x24936b=fs[_0xbce8('0x7c')](path['join'](_0x23bb98,_0x2c930d[0x0],'manifest.json'));var _0x283a21=JSON['parse'](_0x24936b);if(_0xbce8('0x21')==typeof _0x283a21['name']){return _0x30ed61(new Error(_0xbce8('0x7d')));}if(_0xbce8('0x21')==typeof _0x283a21['type']){return _0x30ed61(new Error(_0xbce8('0x7e')));}if(_0xbce8('0x21')==typeof _0x283a21['version']){return _0x30ed61(new Error(_0xbce8('0x7f')));}if('undefined'==typeof _0x283a21[_0xbce8('0x80')]){return _0x30ed61(new Error(_0xbce8('0x81')));}if(_0x283a21[_0xbce8('0x35')]===_0xbce8('0x82')){if(_0xbce8('0x21')==typeof _0x283a21['parameters'][_0xbce8('0x83')]){return _0x30ed61(new Error(_0xbce8('0x84')));}if('undefined'==typeof _0x283a21[_0xbce8('0x80')][_0xbce8('0x83')]['admin']&&_0xbce8('0x21')==typeof _0x283a21['parameters'][_0xbce8('0x83')]['agent']){return _0x30ed61(new Error(_0xbce8('0x85')));}}else if(_0x283a21[_0xbce8('0x35')]==='script'){if(_0xbce8('0x21')==typeof _0x283a21[_0xbce8('0x80')]['scriptName']){return _0x30ed61(new Error(_0xbce8('0x86')));}if(_0xbce8('0x21')==typeof _0x283a21[_0xbce8('0x80')][_0xbce8('0x87')]){return _0x30ed61(new Error(_0xbce8('0x88')));}}else{return _0x30ed61(new Error(_0xbce8('0x89')));}var _0xbb6dbc=_0x283a21[_0xbce8('0x30')];var _0x4916da=_0x283a21['description'];var _0x2a9d43=_0x283a21[_0xbce8('0x35')];var _0x5bccab=_0x283a21[_0xbce8('0x8a')]?_0x283a21[_0xbce8('0x8a')]:_0xbce8('0x8b');var _0x16abbc=_0x283a21[_0xbce8('0x8c')]?_0x283a21['icon']:_0xbce8('0x8d');var _0xfdbf99='';var _0x4f5e24='';var _0x5bc5e5='';var _0x13ef85='';var _0x149dae=_0x283a21[_0xbce8('0x8e')];if(_0x2a9d43===_0xbce8('0x82')){if(_0xbce8('0x21')!=typeof _0x283a21[_0xbce8('0x80')][_0xbce8('0x83')][_0xbce8('0x8f')]){var _0x4ce69d=_0x283a21['parameters'][_0xbce8('0x83')][_0xbce8('0x8f')];if(!/^(f|ht)tps?:\/\//i[_0xbce8('0x90')](_0x4ce69d)){_0xfdbf99=path[_0xbce8('0x52')](_0xbce8('0x91'),_0x2040fa,_0x2c930d[0x0],_0x4ce69d);}else{_0xfdbf99=_0x4ce69d;}}else{logger['info']('Warning:\x20admin\x20view\x20not\x20specified');}if('undefined'!=typeof _0x283a21[_0xbce8('0x80')][_0xbce8('0x83')][_0xbce8('0x92')]){var _0x1177e4=_0x283a21[_0xbce8('0x80')][_0xbce8('0x83')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0xbce8('0x90')](_0x1177e4)){_0x4f5e24=path[_0xbce8('0x52')](_0xbce8('0x91'),_0x2040fa,_0x2c930d[0x0],_0x1177e4);}else{_0x4f5e24=_0x1177e4;}}else{logger[_0xbce8('0x6a')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x2a9d43===_0xbce8('0x93')){_0x5bc5e5=_0x283a21[_0xbce8('0x80')]['scriptName'];_0x13ef85=_0x283a21[_0xbce8('0x80')][_0xbce8('0x87')];if(_0xbce8('0x21')!=typeof _0x283a21[_0xbce8('0x80')]['views']){if(_0xbce8('0x21')!=typeof _0x283a21['parameters'][_0xbce8('0x83')][_0xbce8('0x8f')]){var _0x4ce69d=_0x283a21[_0xbce8('0x80')][_0xbce8('0x83')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xbce8('0x90')](_0x4ce69d)){_0xfdbf99=path[_0xbce8('0x52')](_0xbce8('0x91'),_0x2040fa,_0x2c930d[0x0],_0x4ce69d);}else{_0xfdbf99=_0x4ce69d;}}if(_0xbce8('0x21')!=typeof _0x283a21[_0xbce8('0x80')][_0xbce8('0x83')][_0xbce8('0x92')]){var _0x1177e4=_0x283a21[_0xbce8('0x80')][_0xbce8('0x83')][_0xbce8('0x92')];if(!/^(f|ht)tps?:\/\//i[_0xbce8('0x90')](_0x1177e4)){_0x4f5e24=path['join'](_0xbce8('0x91'),_0x2040fa,_0x2c930d[0x0],_0x1177e4);}else{_0x4f5e24=_0x1177e4;}}}}var _0x2892f0={'name':_0xbb6dbc,'description':_0x4916da,'path':path[_0xbce8('0x52')](_0x2040fa,_0x2c930d[0x0]),'type':_0x2a9d43,'sidebar':_0x5bccab,'icon':_0x16abbc,'adminUrl':_0xfdbf99,'agentUrl':_0x4f5e24,'scriptName':_0x5bc5e5,'scriptPath':_0x13ef85,'version':_0x149dae};removeReferences(_0x2c2ce9,null);return db[_0xbce8('0x33')][_0xbce8('0x94')](_0x2892f0)[_0xbce8('0x29')](function(_0x5cc7c0){var _0x31ac69={'role':_0x48005a[_0xbce8('0x95')][_0xbce8('0x96')],'userProfileId':_0x48005a[_0xbce8('0x95')][_0xbce8('0x97')]};if(!_0x31ac69)throw new Error(_0xbce8('0x98'));if(_0x31ac69[_0xbce8('0x96')]==='user'){var _0x228b3b=_0x5cc7c0['get']({'plain':!![]});return db['UserProfileSection'][_0xbce8('0x50')]({'where':{'name':_0xbce8('0x2c'),'userProfileId':_0x31ac69[_0xbce8('0x97')]},'raw':!![]})['then'](function(_0x371864){if(_0x371864&&_0x371864[_0xbce8('0x99')]===0x0){return db[_0xbce8('0x9a')][_0xbce8('0x94')]({'name':_0x228b3b['name'],'resourceId':_0x228b3b['id'],'type':_0x371864[_0xbce8('0x30')],'sectionId':_0x371864['id']},{})[_0xbce8('0x29')](function(){return _0x5cc7c0;});}else{return _0x5cc7c0;}})[_0xbce8('0x4c')](function(_0x2bbf89){logger[_0xbce8('0x2e')](_0xbce8('0x9b'),_0x2bbf89);throw _0x2bbf89;});}return _0x5cc7c0;})['then'](respondWithResult(_0x27d52e,null))[_0xbce8('0x4c')](handleError(_0x27d52e,null));}});}catch(_0x469ad2){_0x27d52e[_0xbce8('0x1f')](0x1f4)[_0xbce8('0x31')](_0x469ad2);}};function removeReferences(_0x5e3d05,_0x4d3116){try{if(_0x5e3d05){fs[_0xbce8('0x69')](_0x5e3d05);logger[_0xbce8('0x6a')](_0xbce8('0x9c'));}if(_0x4d3116){rimraf(_0x4d3116,function(){});logger[_0xbce8('0x6a')]('Extracted\x20folder\x20removed');}}catch(_0x35846f){logger[_0xbce8('0x2e')](_0x35846f);}}exports[_0xbce8('0x9d')]=function(_0x30a8cc,_0x35f818,_0x34d3f7){return db['Plugin'][_0xbce8('0x50')]({'where':{'id':_0x30a8cc[_0xbce8('0x4e')]['id']}})[_0xbce8('0x29')](handleEntityNotFound(_0x35f818,null))[_0xbce8('0x29')](saveUpdates(_0x30a8cc[_0xbce8('0x95')],null))[_0xbce8('0x29')](respondWithResult(_0x35f818,null))['catch'](handleError(_0x35f818,null));};exports[_0xbce8('0x9e')]=function(_0x36f352,_0x16a449,_0x4b7061){return db[_0xbce8('0x33')]['find']({'where':{'id':_0x36f352[_0xbce8('0x4e')]['id']}})['then'](function(_0x319bca){if(_0x319bca){return _0x319bca[_0xbce8('0x2a')]();}})[_0xbce8('0x29')](function(_0xf7b48b){rimraf(path[_0xbce8('0x52')](config[_0xbce8('0x71')],'server/files/plugins',path[_0xbce8('0x61')](_0xf7b48b['path'])),function(){});return _0xf7b48b;})[_0xbce8('0x29')](handleEntityNotFound(_0x16a449,null))[_0xbce8('0x29')](respondWithStatusCode(_0x16a449,null))[_0xbce8('0x4c')](handleError(_0x16a449,null));};exports[_0xbce8('0x9f')]=function(_0x3fdff1,_0x47fccc,_0x435543){return BPromise[_0xbce8('0xa0')]()[_0xbce8('0x29')](function(){if(!_0x3fdff1['query'][_0xbce8('0x7')]){throw new Error(_0xbce8('0xa1'));}if(!_0x3fdff1[_0xbce8('0x38')][_0xbce8('0xa2')]){throw new Error(_0xbce8('0xa3'));}var _0x1b2861=_0x3fdff1[_0xbce8('0x38')][_0xbce8('0xa4')]?_0x3fdff1[_0xbce8('0x38')][_0xbce8('0xa4')]+':'+_0x3fdff1[_0xbce8('0x38')][_0xbce8('0xa2')]:'http://localhost:'+_0x3fdff1['query'][_0xbce8('0xa2')];var _0x13b6fc=_0x3fdff1[_0xbce8('0x38')][_0xbce8('0x20')]?_0x3fdff1['query']['json']:!![];var _0x5bea9c=_0x3fdff1['query'][_0xbce8('0xa5')]?_0x3fdff1[_0xbce8('0x38')][_0xbce8('0xa5')]:null;var _0x5e0561={'method':_0x3fdff1[_0xbce8('0xa6')],'uri':util[_0xbce8('0x54')](_0xbce8('0xa7'),_0x1b2861,_0x3fdff1['query']['path']),'json':_0x13b6fc,'resolveWithFullResponse':!![],'encoding':_0x5bea9c,'qs':_0x3fdff1[_0xbce8('0x38')]};if(_0x3fdff1['headers']){_0x5e0561[_0xbce8('0xa8')]=_0x3fdff1[_0xbce8('0xa8')];if(_0x5e0561[_0xbce8('0xa8')][_0xbce8('0xa9')]){delete _0x5e0561[_0xbce8('0xa8')][_0xbce8('0xa9')];}}if(_0x5e0561['headers'][_0xbce8('0xaa')]){delete _0x5e0561[_0xbce8('0xa8')]['content-type'];}return rp(_0x5e0561);})['then'](function(_0x51a096){if(_0x51a096){_0x47fccc[_0xbce8('0x25')](_0x51a096['headers']);logger[_0xbce8('0x6a')](_0x51a096[_0xbce8('0x95')]);if(_['endsWith'](_0x3fdff1['query'][_0xbce8('0x7')],'download')&&_0x51a096[_0xbce8('0xab')]==0x1f4){return _0x47fccc[_0xbce8('0x1e')](_0x51a096[_0xbce8('0xab')]);}else{return _0x47fccc[_0xbce8('0x1f')](_0x51a096[_0xbce8('0xab')])[_0xbce8('0x31')](_0x51a096[_0xbce8('0x95')]);}}else{return _0x47fccc[_0xbce8('0x1e')](0xc8);}})[_0xbce8('0x4c')](handleError(_0x47fccc,null));};exports[_0xbce8('0xac')]=function(_0x5d0622,_0x5ef7d4,_0x131d42){return BPromise[_0xbce8('0xa0')]()[_0xbce8('0x29')](function(){if(!_0x5d0622[_0xbce8('0x38')][_0xbce8('0x7')]){throw new Error(_0xbce8('0xa1'));}if(!_0x5d0622[_0xbce8('0x38')][_0xbce8('0xa2')]){throw new Error(_0xbce8('0xa3'));}var _0xbc01e=_0x5d0622[_0xbce8('0x38')][_0xbce8('0xa4')]?_0x5d0622[_0xbce8('0x38')]['hostname']+':'+_0x5d0622[_0xbce8('0x38')][_0xbce8('0xa2')]:'http://localhost:'+_0x5d0622[_0xbce8('0x38')]['port'];var _0x1d4e2c=_0x5d0622[_0xbce8('0x38')][_0xbce8('0x20')]?_0x5d0622[_0xbce8('0x38')][_0xbce8('0x20')]:!![];var _0x595f85=_0x5d0622[_0xbce8('0x38')][_0xbce8('0xa5')]?_0x5d0622[_0xbce8('0x38')]['encoding']:null;var _0x6cbf22={'method':_0x5d0622[_0xbce8('0xa6')],'uri':util['format'](_0xbce8('0xa7'),_0xbc01e,_0x5d0622['query'][_0xbce8('0x7')]),'json':_0x1d4e2c,'resolveWithFullResponse':!![],'encoding':_0x595f85,'body':_0x5d0622[_0xbce8('0x95')]};if(_0x5d0622['headers']){_0x6cbf22[_0xbce8('0xa8')]=_0x5d0622['headers'];if(_0x6cbf22[_0xbce8('0xa8')][_0xbce8('0xa9')]){delete _0x6cbf22[_0xbce8('0xa8')][_0xbce8('0xa9')];}}if(_0x6cbf22[_0xbce8('0xa8')]['content-type']){delete _0x6cbf22[_0xbce8('0xa8')][_0xbce8('0xaa')];}return rp(_0x6cbf22);})[_0xbce8('0x29')](function(_0x430738){if(_0x430738){_0x5ef7d4[_0xbce8('0x25')](_0x430738[_0xbce8('0xa8')]);logger[_0xbce8('0x6a')](_0x430738[_0xbce8('0x95')]);return _0x5ef7d4['status'](_0x430738[_0xbce8('0xab')])[_0xbce8('0x31')](_0x430738[_0xbce8('0x95')]);}else{return _0x5ef7d4[_0xbce8('0x1e')](0xc8);}})['catch'](handleError(_0x5ef7d4,null));};
\ No newline at end of file
+var _0x6f3f=['userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','update','delete','destroy','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','hostname','encoding','method','%s%s','headers','content-length','content-type','http://localhost:','statusCode','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','desk.js','to-csv','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./plugin.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','Plugins','UserProfileResource','error','stack','name','send','index','map','Plugin','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','download','find','join','server/files/plugins','format','%s.zip','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','glob','**/*','root','dirname','basename','finalize','close','existsSync','Plugin\x20not\x20found','unlinkSync','info','Temporary\x20file\x20removed','upload','filename','extname','file','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','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','html','views','Invalid\x20manifest:\x20views\x20missing','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','always','icon','icon-apps','admin','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','create','body','role'];(function(_0x521929,_0x479be5){var _0x632436=function(_0x288290){while(--_0x288290){_0x521929['push'](_0x521929['shift']());}};_0x632436(++_0x479be5);}(_0x6f3f,0x170));var _0xf6f3=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x6f3f[_0x2c91e9];return _0x13f0ff;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf6f3('0x0'));var zipdir=require(_0xf6f3('0x1'));var jsonpatch=require(_0xf6f3('0x2'));var rp=require('request-promise');var moment=require(_0xf6f3('0x3'));var BPromise=require(_0xf6f3('0x4'));var Mustache=require(_0xf6f3('0x5'));var util=require(_0xf6f3('0x6'));var path=require(_0xf6f3('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf6f3('0x8'));var fs=require('fs');var fs_extra=require(_0xf6f3('0x9'));var _=require(_0xf6f3('0xa'));var squel=require('squel');var crypto=require(_0xf6f3('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xf6f3('0xc'));var toCsv=require(_0xf6f3('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var extract=require(_0xf6f3('0xe'));var rimraf=require(_0xf6f3('0x0'));var archiver=require(_0xf6f3('0xf'));var Redis=require(_0xf6f3('0x10'));var authService=require(_0xf6f3('0x11'));var qs=require(_0xf6f3('0x12'));var as=require(_0xf6f3('0x13'));var hardwareService=require(_0xf6f3('0x14'));var logger=require(_0xf6f3('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xf6f3('0x16'));var licenseUtil=require(_0xf6f3('0x17'));var db=require(_0xf6f3('0x18'))['db'];config['redis']=_[_0xf6f3('0x19')](config[_0xf6f3('0x1a')],{'host':_0xf6f3('0x1b'),'port':0x18eb});var socket=require(_0xf6f3('0x1c'))(new Redis(config[_0xf6f3('0x1a')]));require(_0xf6f3('0x1d'))['register'](socket);function respondWithStatusCode(_0x3cdf97,_0x3e77ef){_0x3e77ef=_0x3e77ef||0xcc;return function(_0x2bc3eb){if(_0x2bc3eb){return _0x3cdf97[_0xf6f3('0x1e')](_0x3e77ef);}return _0x3cdf97[_0xf6f3('0x1f')](_0x3e77ef)[_0xf6f3('0x20')]();};}function respondWithResult(_0x519f09,_0x1f2024){_0x1f2024=_0x1f2024||0xc8;return function(_0x286bba){if(_0x286bba){return _0x519f09[_0xf6f3('0x1f')](_0x1f2024)[_0xf6f3('0x21')](_0x286bba);}};}function respondWithFilteredResult(_0x335733,_0x24c0c5){return function(_0x26df07){if(_0x26df07){var _0x492edc=typeof _0x24c0c5[_0xf6f3('0x22')]===_0xf6f3('0x23')&&typeof _0x24c0c5[_0xf6f3('0x24')]===_0xf6f3('0x23');var _0x370ea8=_0x26df07['count'];var _0x135991=_0x492edc?0x0:_0x24c0c5[_0xf6f3('0x22')];var _0x1a6610=_0x492edc?_0x26df07[_0xf6f3('0x25')]:_0x24c0c5[_0xf6f3('0x22')]+_0x24c0c5[_0xf6f3('0x24')];var _0x23ed64;if(_0x1a6610>=_0x370ea8){_0x1a6610=_0x370ea8;_0x23ed64=0xc8;}else{_0x23ed64=0xce;}_0x335733[_0xf6f3('0x1f')](_0x23ed64);return _0x335733[_0xf6f3('0x26')](_0xf6f3('0x27'),_0x135991+'-'+_0x1a6610+'/'+_0x370ea8)[_0xf6f3('0x21')](_0x26df07);}return null;};}function patchUpdates(_0x3705f2){return function(_0x225f84){try{jsonpatch[_0xf6f3('0x28')](_0x225f84,_0x3705f2,!![]);}catch(_0x36d217){return BPromise['reject'](_0x36d217);}return _0x225f84[_0xf6f3('0x29')]();};}function saveUpdates(_0x1c9398,_0x265b32){return function(_0x52f05f){if(_0x52f05f){return _0x52f05f['update'](_0x1c9398)[_0xf6f3('0x2a')](function(_0x36dc92){return _0x36dc92;});}return null;};}function removeEntity(_0x4dcf57,_0x8c4aa7){return function(_0x4cd1fb){if(_0x4cd1fb){return _0x4cd1fb['destroy']()[_0xf6f3('0x2a')](function(){var _0x14b631=_0x4cd1fb['get']({'plain':!![]});var _0x540eec=_0xf6f3('0x2b');return db[_0xf6f3('0x2c')]['destroy']({'where':{'type':_0x540eec,'resourceId':_0x14b631['id']}})['then'](function(){return _0x4cd1fb;});})[_0xf6f3('0x2a')](function(){_0x4dcf57['status'](0xcc)[_0xf6f3('0x20')]();});}};}function handleEntityNotFound(_0x4cd858,_0x390702){return function(_0x207a6c){if(!_0x207a6c){_0x4cd858[_0xf6f3('0x1e')](0x194);}return _0x207a6c;};}function handleError(_0x2bd95b,_0x324ce6){_0x324ce6=_0x324ce6||0x1f4;return function(_0x2d2f27){logger[_0xf6f3('0x2d')](_0x2d2f27[_0xf6f3('0x2e')]);if(_0x2d2f27[_0xf6f3('0x2f')]){delete _0x2d2f27[_0xf6f3('0x2f')];}_0x2bd95b[_0xf6f3('0x1f')](_0x324ce6)[_0xf6f3('0x30')](_0x2d2f27);};}exports[_0xf6f3('0x31')]=function(_0x875dec,_0x12fb47){var _0x5b2a28={},_0x8c3dfa={},_0x568c00={'count':0x0,'rows':[]};var _0x430e29=_[_0xf6f3('0x32')](db[_0xf6f3('0x33')][_0xf6f3('0x34')],function(_0x2774b1){return{'name':_0x2774b1[_0xf6f3('0x35')],'type':_0x2774b1[_0xf6f3('0x36')][_0xf6f3('0x37')]};});_0x8c3dfa[_0xf6f3('0x38')]=_['map'](_0x430e29,_0xf6f3('0x2f'));_0x8c3dfa['query']=_[_0xf6f3('0x39')](_0x875dec[_0xf6f3('0x3a')]);_0x8c3dfa[_0xf6f3('0x3b')]=_[_0xf6f3('0x3c')](_0x8c3dfa[_0xf6f3('0x38')],_0x8c3dfa[_0xf6f3('0x3a')]);_0x5b2a28[_0xf6f3('0x3d')]=_['intersection'](_0x8c3dfa['model'],qs[_0xf6f3('0x3e')](_0x875dec[_0xf6f3('0x3a')][_0xf6f3('0x3e')]));_0x5b2a28['attributes']=_0x5b2a28[_0xf6f3('0x3d')][_0xf6f3('0x3f')]?_0x5b2a28[_0xf6f3('0x3d')]:_0x8c3dfa[_0xf6f3('0x38')];if(!_0x875dec['query'][_0xf6f3('0x40')](_0xf6f3('0x41'))){_0x5b2a28['limit']=qs[_0xf6f3('0x24')](_0x875dec[_0xf6f3('0x3a')][_0xf6f3('0x24')]);_0x5b2a28[_0xf6f3('0x22')]=qs[_0xf6f3('0x22')](_0x875dec[_0xf6f3('0x3a')][_0xf6f3('0x22')]);}_0x5b2a28[_0xf6f3('0x42')]=qs['sort'](_0x875dec[_0xf6f3('0x3a')]['sort']);_0x5b2a28[_0xf6f3('0x43')]=qs[_0xf6f3('0x3b')](_[_0xf6f3('0x44')](_0x875dec[_0xf6f3('0x3a')],_0x8c3dfa[_0xf6f3('0x3b')]),_0x430e29);if(_0x875dec['query'][_0xf6f3('0x45')]){_0x5b2a28['where']=_['merge'](_0x5b2a28['where'],{'$or':_[_0xf6f3('0x32')](_0x430e29,function(_0x53f0f1){if(_0x53f0f1[_0xf6f3('0x36')]!=='VIRTUAL'){var _0x49d0bc={};_0x49d0bc[_0x53f0f1[_0xf6f3('0x2f')]]={'$like':'%'+_0x875dec[_0xf6f3('0x3a')][_0xf6f3('0x45')]+'%'};return _0x49d0bc;}})});}_0x5b2a28=_[_0xf6f3('0x46')]({},_0x5b2a28,_0x875dec[_0xf6f3('0x47')]);var _0x3f33ae={'where':_0x5b2a28['where']};return db[_0xf6f3('0x33')]['count'](_0x3f33ae)[_0xf6f3('0x2a')](function(_0x23aae4){_0x568c00[_0xf6f3('0x25')]=_0x23aae4;if(_0x875dec[_0xf6f3('0x3a')][_0xf6f3('0x48')]){_0x5b2a28[_0xf6f3('0x49')]=[{'all':!![]}];}return db[_0xf6f3('0x33')][_0xf6f3('0x4a')](_0x5b2a28);})[_0xf6f3('0x2a')](function(_0x3c4e8c){_0x568c00[_0xf6f3('0x4b')]=_0x3c4e8c;return _0x568c00;})['then'](respondWithFilteredResult(_0x12fb47,_0x5b2a28))[_0xf6f3('0x4c')](handleError(_0x12fb47,null));};exports[_0xf6f3('0x4d')]=function(_0x5d5ad9,_0x3073c0){var _0x23fc87={'raw':!![],'where':{'id':_0x5d5ad9[_0xf6f3('0x4e')]['id']}},_0x382173={};_0x382173[_0xf6f3('0x38')]=_[_0xf6f3('0x39')](db[_0xf6f3('0x33')]['rawAttributes']);_0x382173[_0xf6f3('0x3a')]=_[_0xf6f3('0x39')](_0x5d5ad9[_0xf6f3('0x3a')]);_0x382173[_0xf6f3('0x3b')]=_['intersection'](_0x382173[_0xf6f3('0x38')],_0x382173[_0xf6f3('0x3a')]);_0x23fc87[_0xf6f3('0x3d')]=_[_0xf6f3('0x3c')](_0x382173['model'],qs[_0xf6f3('0x3e')](_0x5d5ad9[_0xf6f3('0x3a')]['fields']));_0x23fc87['attributes']=_0x23fc87[_0xf6f3('0x3d')][_0xf6f3('0x3f')]?_0x23fc87[_0xf6f3('0x3d')]:_0x382173[_0xf6f3('0x38')];if(_0x5d5ad9['query'][_0xf6f3('0x48')]){_0x23fc87[_0xf6f3('0x49')]=[{'all':!![]}];}_0x23fc87=_[_0xf6f3('0x46')]({},_0x23fc87,_0x5d5ad9['options']);return db[_0xf6f3('0x33')]['find'](_0x23fc87)[_0xf6f3('0x2a')](handleEntityNotFound(_0x3073c0,null))[_0xf6f3('0x2a')](respondWithResult(_0x3073c0,null))['catch'](handleError(_0x3073c0,null));};exports[_0xf6f3('0x4f')]=function(_0x4f3156,_0x531c7b,_0x5d1525){return db[_0xf6f3('0x33')][_0xf6f3('0x50')]({'where':{'id':_0x4f3156['params']['id']},'attributes':['name',_0xf6f3('0x7')],'raw':!![]})['then'](handleEntityNotFound(_0x531c7b,null))['then'](function(_0x5c1130){if(_0x5c1130){var _0x50a903=path[_0xf6f3('0x51')](config['root'],_0xf6f3('0x52'),util[_0xf6f3('0x53')](_0xf6f3('0x54'),path['basename'](_0x5c1130[_0xf6f3('0x7')])));var _0x4aa1ab=fs[_0xf6f3('0x55')](_0x50a903);var _0x25d140=archiver(_0xf6f3('0x56'),{'zlib':{'level':0x9}});_0x25d140['on'](_0xf6f3('0x57'),function(_0x310455){if(_0x310455[_0xf6f3('0x58')]===_0xf6f3('0x59')){logger[_0xf6f3('0x2d')](_0x310455);}else{throw new db[(_0xf6f3('0x5a'))][(_0xf6f3('0x5b'))](_0xf6f3('0x5c'));}});_0x25d140['on']('error',function(_0x10df66){throw new db[(_0xf6f3('0x5a'))][(_0xf6f3('0x5b'))](_0xf6f3('0x5c'));});_0x25d140['pipe'](_0x4aa1ab);_0x25d140[_0xf6f3('0x5d')](_0xf6f3('0x5e'),{'cwd':path[_0xf6f3('0x51')](config[_0xf6f3('0x5f')],_0xf6f3('0x52'),path[_0xf6f3('0x60')](_0x5c1130[_0xf6f3('0x7')])),'ignore':[path[_0xf6f3('0x51')](path[_0xf6f3('0x61')](_0x5c1130[_0xf6f3('0x7')]),'node_modules/**/*'),path[_0xf6f3('0x51')](path['basename'](_0x5c1130['path']),'attachments/**/*')],'nodir':!![]})[_0xf6f3('0x62')]();_0x4aa1ab['on'](_0xf6f3('0x63'),function(){if(!fs[_0xf6f3('0x64')](_0x50a903)){throw new db['Sequelize'][(_0xf6f3('0x5b'))](_0xf6f3('0x65'));}return _0x531c7b[_0xf6f3('0x4f')](_0x50a903,util[_0xf6f3('0x53')](_0xf6f3('0x54'),path[_0xf6f3('0x61')](_0x5c1130[_0xf6f3('0x7')])),function(_0x26efa1){if(_0x26efa1){throw new db[(_0xf6f3('0x5a'))][(_0xf6f3('0x5b'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0xf6f3('0x66')](_0x50a903);logger['info']('Download\x20completed');logger[_0xf6f3('0x67')](_0xf6f3('0x68'));});});}return null;})['catch'](handleError(_0x531c7b,null));};exports[_0xf6f3('0x69')]=function(_0x288441,_0x2222cf,_0x814339){var _0x2c8961=path[_0xf6f3('0x61')](_0x288441['file'][_0xf6f3('0x6a')],path[_0xf6f3('0x6b')](_0x288441[_0xf6f3('0x6c')][_0xf6f3('0x6a')]));var _0x344f66=path['join'](config[_0xf6f3('0x5f')],'server/files/plugins',_0x288441[_0xf6f3('0x6c')][_0xf6f3('0x6a')]);var _0x16c76f=path[_0xf6f3('0x51')](config['root'],_0xf6f3('0x52'),_0x2c8961);logger[_0xf6f3('0x67')](_0xf6f3('0x6d'),_0x344f66);logger[_0xf6f3('0x67')](_0xf6f3('0x6e'),_0x16c76f);try{fs[_0xf6f3('0x6f')](_0x344f66,parseInt(_0xf6f3('0x70'),0x8));extract(_0x344f66,{'dir':_0x16c76f},function(_0x320f74){if(_0x320f74){logger['error'](_0x320f74);handleError(_0x320f74,!![]);};var _0x585d0e=fs['readdirSync'](_0x16c76f);if(_0x585d0e[_0xf6f3('0x3f')]>0x1){removeReferences(_0x344f66,_0x16c76f);logger[_0xf6f3('0x2d')](_0xf6f3('0x71'));return _0x814339(new Error(_0xf6f3('0x71')));}var _0xc41a41=fs[_0xf6f3('0x72')](path['join'](_0x16c76f,_0x585d0e[0x0]));if(_0xc41a41[_0xf6f3('0x73')]()){removeReferences(_0x344f66,_0x16c76f);logger['error'](_0xf6f3('0x71'));return _0x814339(new Error(_0xf6f3('0x71')));}if(_0xc41a41[_0xf6f3('0x74')]()){var _0x48c251=fs[_0xf6f3('0x75')](path['join'](_0x16c76f,_0x585d0e[0x0]));if(_0x48c251[_0xf6f3('0x3f')]===0x0){removeReferences(_0x344f66,_0x16c76f);logger['error'](_0xf6f3('0x71'));return _0x814339(new Error(_0xf6f3('0x71')));}var _0x2ea30c=_0x48c251[_0xf6f3('0x76')](function(_0x5be9bb){return _0x5be9bb===_0xf6f3('0x77');});if(!_0x2ea30c){return _0x814339(new Error(_0xf6f3('0x78')));}var _0x38134f=fs['readFileSync'](path[_0xf6f3('0x51')](_0x16c76f,_0x585d0e[0x0],'manifest.json'));var _0x5811a1=JSON[_0xf6f3('0x79')](_0x38134f);if(_0xf6f3('0x23')==typeof _0x5811a1[_0xf6f3('0x2f')]){return _0x814339(new Error(_0xf6f3('0x7a')));}if(_0xf6f3('0x23')==typeof _0x5811a1[_0xf6f3('0x36')]){return _0x814339(new Error(_0xf6f3('0x7b')));}if(_0xf6f3('0x23')==typeof _0x5811a1[_0xf6f3('0x7c')]){return _0x814339(new Error(_0xf6f3('0x7d')));}if(_0xf6f3('0x23')==typeof _0x5811a1[_0xf6f3('0x7e')]){return _0x814339(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x5811a1[_0xf6f3('0x36')]===_0xf6f3('0x7f')){if('undefined'==typeof _0x5811a1[_0xf6f3('0x7e')][_0xf6f3('0x80')]){return _0x814339(new Error(_0xf6f3('0x81')));}if('undefined'==typeof _0x5811a1[_0xf6f3('0x7e')][_0xf6f3('0x80')]['admin']&&_0xf6f3('0x23')==typeof _0x5811a1['parameters']['views'][_0xf6f3('0x82')]){return _0x814339(new Error(_0xf6f3('0x83')));}}else if(_0x5811a1[_0xf6f3('0x36')]===_0xf6f3('0x84')){if(_0xf6f3('0x23')==typeof _0x5811a1[_0xf6f3('0x7e')]['scriptName']){return _0x814339(new Error(_0xf6f3('0x85')));}if(_0xf6f3('0x23')==typeof _0x5811a1['parameters']['scriptPath']){return _0x814339(new Error(_0xf6f3('0x86')));}}else{return _0x814339(new Error(_0xf6f3('0x87')));}var _0x37c85d=_0x5811a1[_0xf6f3('0x2f')];var _0x399b68=_0x5811a1[_0xf6f3('0x88')];var _0x58c828=_0x5811a1['type'];var _0x2c59e3=_0x5811a1['sidebar']?_0x5811a1['sidebar']:_0xf6f3('0x89');var _0x3c1ecf=_0x5811a1['icon']?_0x5811a1[_0xf6f3('0x8a')]:_0xf6f3('0x8b');var _0x504601='';var _0x432044='';var _0xf215a4='';var _0x28bad7='';var _0x5b28ce=_0x5811a1[_0xf6f3('0x7c')];if(_0x58c828==='html'){if(_0xf6f3('0x23')!=typeof _0x5811a1['parameters'][_0xf6f3('0x80')][_0xf6f3('0x8c')]){var _0x12adc0=_0x5811a1['parameters'][_0xf6f3('0x80')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xf6f3('0x8d')](_0x12adc0)){_0x504601=path[_0xf6f3('0x51')](_0xf6f3('0x8e'),_0x2c8961,_0x585d0e[0x0],_0x12adc0);}else{_0x504601=_0x12adc0;}}else{logger[_0xf6f3('0x67')](_0xf6f3('0x8f'));}if('undefined'!=typeof _0x5811a1[_0xf6f3('0x7e')]['views'][_0xf6f3('0x82')]){var _0x57b1e0=_0x5811a1['parameters'][_0xf6f3('0x80')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0xf6f3('0x8d')](_0x57b1e0)){_0x432044=path[_0xf6f3('0x51')](_0xf6f3('0x8e'),_0x2c8961,_0x585d0e[0x0],_0x57b1e0);}else{_0x432044=_0x57b1e0;}}else{logger[_0xf6f3('0x67')](_0xf6f3('0x90'));}}else if(_0x58c828===_0xf6f3('0x84')){_0xf215a4=_0x5811a1[_0xf6f3('0x7e')]['scriptName'];_0x28bad7=_0x5811a1[_0xf6f3('0x7e')]['scriptPath'];if(_0xf6f3('0x23')!=typeof _0x5811a1['parameters'][_0xf6f3('0x80')]){if(_0xf6f3('0x23')!=typeof _0x5811a1['parameters'][_0xf6f3('0x80')][_0xf6f3('0x8c')]){var _0x12adc0=_0x5811a1[_0xf6f3('0x7e')][_0xf6f3('0x80')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xf6f3('0x8d')](_0x12adc0)){_0x504601=path[_0xf6f3('0x51')](_0xf6f3('0x8e'),_0x2c8961,_0x585d0e[0x0],_0x12adc0);}else{_0x504601=_0x12adc0;}}if('undefined'!=typeof _0x5811a1['parameters'][_0xf6f3('0x80')][_0xf6f3('0x82')]){var _0x57b1e0=_0x5811a1[_0xf6f3('0x7e')][_0xf6f3('0x80')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0xf6f3('0x8d')](_0x57b1e0)){_0x432044=path[_0xf6f3('0x51')](_0xf6f3('0x8e'),_0x2c8961,_0x585d0e[0x0],_0x57b1e0);}else{_0x432044=_0x57b1e0;}}}}var _0x19a58e={'name':_0x37c85d,'description':_0x399b68,'path':path[_0xf6f3('0x51')](_0x2c8961,_0x585d0e[0x0]),'type':_0x58c828,'sidebar':_0x2c59e3,'icon':_0x3c1ecf,'adminUrl':_0x504601,'agentUrl':_0x432044,'scriptName':_0xf215a4,'scriptPath':_0x28bad7,'version':_0x5b28ce};removeReferences(_0x344f66,null);return db[_0xf6f3('0x33')][_0xf6f3('0x91')](_0x19a58e)[_0xf6f3('0x2a')](function(_0x12aa22){var _0x5b1e3a={'role':_0x288441[_0xf6f3('0x92')][_0xf6f3('0x93')],'userProfileId':_0x288441[_0xf6f3('0x92')][_0xf6f3('0x94')]};if(!_0x5b1e3a)throw new Error(_0xf6f3('0x95'));if(_0x5b1e3a[_0xf6f3('0x93')]===_0xf6f3('0x96')){var _0x4cfe2e=_0x12aa22[_0xf6f3('0x97')]({'plain':!![]});return db[_0xf6f3('0x98')][_0xf6f3('0x50')]({'where':{'name':_0xf6f3('0x2b'),'userProfileId':_0x5b1e3a['userProfileId']},'raw':!![]})[_0xf6f3('0x2a')](function(_0x5c0829){if(_0x5c0829&&_0x5c0829[_0xf6f3('0x99')]===0x0){return db[_0xf6f3('0x2c')][_0xf6f3('0x91')]({'name':_0x4cfe2e[_0xf6f3('0x2f')],'resourceId':_0x4cfe2e['id'],'type':_0x5c0829[_0xf6f3('0x2f')],'sectionId':_0x5c0829['id']},{})['then'](function(){return _0x12aa22;});}else{return _0x12aa22;}})['catch'](function(_0x2373af){logger[_0xf6f3('0x2d')](_0xf6f3('0x9a'),_0x2373af);throw _0x2373af;});}return _0x12aa22;})['then'](respondWithResult(_0x2222cf,null))[_0xf6f3('0x4c')](handleError(_0x2222cf,null));}});}catch(_0x49d13f){_0x2222cf[_0xf6f3('0x1f')](0x1f4)[_0xf6f3('0x30')](_0x49d13f);}};function removeReferences(_0x3a3d0d,_0x2768b0){try{if(_0x3a3d0d){fs[_0xf6f3('0x66')](_0x3a3d0d);logger[_0xf6f3('0x67')](_0xf6f3('0x9b'));}if(_0x2768b0){rimraf(_0x2768b0,function(){});logger[_0xf6f3('0x67')]('Extracted\x20folder\x20removed');}}catch(_0x32e612){logger[_0xf6f3('0x2d')](_0x32e612);}}exports[_0xf6f3('0x9c')]=function(_0x73774,_0x3789f7,_0x10a16b){return db[_0xf6f3('0x33')][_0xf6f3('0x50')]({'where':{'id':_0x73774[_0xf6f3('0x4e')]['id']}})[_0xf6f3('0x2a')](handleEntityNotFound(_0x3789f7,null))[_0xf6f3('0x2a')](saveUpdates(_0x73774[_0xf6f3('0x92')],null))[_0xf6f3('0x2a')](respondWithResult(_0x3789f7,null))[_0xf6f3('0x4c')](handleError(_0x3789f7,null));};exports[_0xf6f3('0x9d')]=function(_0x1d3c49,_0x8cfdec,_0x51cd49){return db[_0xf6f3('0x33')][_0xf6f3('0x50')]({'where':{'id':_0x1d3c49[_0xf6f3('0x4e')]['id']}})[_0xf6f3('0x2a')](function(_0x2535cd){if(_0x2535cd){return _0x2535cd[_0xf6f3('0x9e')]();}})[_0xf6f3('0x2a')](function(_0x4f816e){rimraf(path['join'](config[_0xf6f3('0x5f')],'server/files/plugins',path[_0xf6f3('0x60')](_0x4f816e['path'])),function(){});return _0x4f816e;})['then'](handleEntityNotFound(_0x8cfdec,null))['then'](respondWithStatusCode(_0x8cfdec,null))[_0xf6f3('0x4c')](handleError(_0x8cfdec,null));};exports[_0xf6f3('0x9f')]=function(_0x5ba8c8,_0x32842b,_0xfe2bb6){return BPromise[_0xf6f3('0xa0')]()[_0xf6f3('0x2a')](function(){if(!_0x5ba8c8['query'][_0xf6f3('0x7')]){throw new Error(_0xf6f3('0xa1'));}if(!_0x5ba8c8[_0xf6f3('0x3a')][_0xf6f3('0xa2')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x1e7969=_0x5ba8c8[_0xf6f3('0x3a')][_0xf6f3('0xa3')]?_0x5ba8c8[_0xf6f3('0x3a')][_0xf6f3('0xa3')]+':'+_0x5ba8c8[_0xf6f3('0x3a')][_0xf6f3('0xa2')]:'http://localhost:'+_0x5ba8c8[_0xf6f3('0x3a')][_0xf6f3('0xa2')];var _0x5a4ab4=_0x5ba8c8[_0xf6f3('0x3a')][_0xf6f3('0x21')]?_0x5ba8c8[_0xf6f3('0x3a')]['json']:!![];var _0x418e31=_0x5ba8c8[_0xf6f3('0x3a')][_0xf6f3('0xa4')]?_0x5ba8c8['query'][_0xf6f3('0xa4')]:null;var _0x4b3fe5={'method':_0x5ba8c8[_0xf6f3('0xa5')],'uri':util['format'](_0xf6f3('0xa6'),_0x1e7969,_0x5ba8c8[_0xf6f3('0x3a')][_0xf6f3('0x7')]),'json':_0x5a4ab4,'resolveWithFullResponse':!![],'encoding':_0x418e31,'qs':_0x5ba8c8['query']};if(_0x5ba8c8[_0xf6f3('0xa7')]){_0x4b3fe5['headers']=_0x5ba8c8[_0xf6f3('0xa7')];if(_0x4b3fe5[_0xf6f3('0xa7')][_0xf6f3('0xa8')]){delete _0x4b3fe5[_0xf6f3('0xa7')][_0xf6f3('0xa8')];}}if(_0x4b3fe5['headers'][_0xf6f3('0xa9')]){delete _0x4b3fe5['headers'][_0xf6f3('0xa9')];}return rp(_0x4b3fe5);})['then'](function(_0xdc6504){if(_0xdc6504){_0x32842b[_0xf6f3('0x26')](_0xdc6504[_0xf6f3('0xa7')]);logger[_0xf6f3('0x67')](_0xdc6504[_0xf6f3('0x92')]);if(_['endsWith'](_0x5ba8c8[_0xf6f3('0x3a')][_0xf6f3('0x7')],'download')&&_0xdc6504['statusCode']==0x1f4){return _0x32842b[_0xf6f3('0x1e')](_0xdc6504['statusCode']);}else{return _0x32842b['status'](_0xdc6504['statusCode'])[_0xf6f3('0x30')](_0xdc6504['body']);}}else{return _0x32842b['sendStatus'](0xc8);}})[_0xf6f3('0x4c')](handleError(_0x32842b,null));};exports['webhookPost']=function(_0x4b2cee,_0x254aa6,_0x22dff2){return BPromise['resolve']()[_0xf6f3('0x2a')](function(){if(!_0x4b2cee['query']['path']){throw new Error(_0xf6f3('0xa1'));}if(!_0x4b2cee[_0xf6f3('0x3a')]['port']){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x331bb0=_0x4b2cee[_0xf6f3('0x3a')]['hostname']?_0x4b2cee['query'][_0xf6f3('0xa3')]+':'+_0x4b2cee[_0xf6f3('0x3a')][_0xf6f3('0xa2')]:_0xf6f3('0xaa')+_0x4b2cee['query'][_0xf6f3('0xa2')];var _0x4552bf=_0x4b2cee[_0xf6f3('0x3a')]['json']?_0x4b2cee[_0xf6f3('0x3a')][_0xf6f3('0x21')]:!![];var _0x18729a=_0x4b2cee[_0xf6f3('0x3a')][_0xf6f3('0xa4')]?_0x4b2cee[_0xf6f3('0x3a')][_0xf6f3('0xa4')]:null;var _0x20fa6e={'method':_0x4b2cee[_0xf6f3('0xa5')],'uri':util[_0xf6f3('0x53')](_0xf6f3('0xa6'),_0x331bb0,_0x4b2cee[_0xf6f3('0x3a')][_0xf6f3('0x7')]),'json':_0x4552bf,'resolveWithFullResponse':!![],'encoding':_0x18729a,'body':_0x4b2cee['body']};if(_0x4b2cee[_0xf6f3('0xa7')]){_0x20fa6e[_0xf6f3('0xa7')]=_0x4b2cee[_0xf6f3('0xa7')];if(_0x20fa6e['headers'][_0xf6f3('0xa8')]){delete _0x20fa6e['headers'][_0xf6f3('0xa8')];}}if(_0x20fa6e[_0xf6f3('0xa7')][_0xf6f3('0xa9')]){delete _0x20fa6e[_0xf6f3('0xa7')]['content-type'];}return rp(_0x20fa6e);})['then'](function(_0x57c890){if(_0x57c890){_0x254aa6[_0xf6f3('0x26')](_0x57c890[_0xf6f3('0xa7')]);logger[_0xf6f3('0x67')](_0x57c890[_0xf6f3('0x92')]);return _0x254aa6['status'](_0x57c890[_0xf6f3('0xab')])[_0xf6f3('0x30')](_0x57c890[_0xf6f3('0x92')]);}else{return _0x254aa6['sendStatus'](0xc8);}})['catch'](handleError(_0x254aa6,null));};
\ No newline at end of file
index e0b22fb..582c333 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x744c=['Plugin','setMaxListeners','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x583c51,_0x36e279){var _0x3b9148=function(_0x4d5a67){while(--_0x4d5a67){_0x583c51['push'](_0x583c51['shift']());}};_0x3b9148(++_0x36e279);}(_0x744c,0xa0));var _0xc744=function(_0xbf171b,_0x21c916){_0xbf171b=_0xbf171b-0x0;var _0x21ab7e=_0x744c[_0xbf171b];return _0x21ab7e;};'use strict';var EventEmitter=require(_0xc744('0x0'));var Plugin=require(_0xc744('0x1'))['db'][_0xc744('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0xc744('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc744('0x4'),'afterDestroy':_0xc744('0x5')};function emitEvent(_0xe29616){return function(_0xde4228,_0x4f1c94,_0x5dc024){PluginEvents[_0xc744('0x6')](_0xe29616+':'+_0xde4228['id'],_0xde4228);PluginEvents[_0xc744('0x6')](_0xe29616,_0xde4228);_0x5dc024(null);};}for(var e in events){if(events[_0xc744('0x7')](e)){var event=events[e];Plugin[_0xc744('0x8')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
+var _0x27a8=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','Plugin'];(function(_0x1bd138,_0x41da45){var _0x4de916=function(_0x49062b){while(--_0x49062b){_0x1bd138['push'](_0x1bd138['shift']());}};_0x4de916(++_0x41da45);}(_0x27a8,0x170));var _0x827a=function(_0xa5600c,_0x28586e){_0xa5600c=_0xa5600c-0x0;var _0x272a06=_0x27a8[_0xa5600c];return _0x272a06;};'use strict';var EventEmitter=require('events');var Plugin=require('../../mysqldb')['db'][_0x827a('0x0')];var PluginEvents=new EventEmitter();PluginEvents[_0x827a('0x1')](0x0);var events={'afterCreate':_0x827a('0x2'),'afterUpdate':_0x827a('0x3'),'afterDestroy':_0x827a('0x4')};function emitEvent(_0x300907){return function(_0x18cf5e,_0x215b35,_0x2b3486){PluginEvents[_0x827a('0x5')](_0x300907+':'+_0x18cf5e['id'],_0x18cf5e);PluginEvents[_0x827a('0x5')](_0x300907,_0x18cf5e);_0x2b3486(null);};}for(var e in events){if(events[_0x827a('0x6')](e)){var event=events[e];Plugin[_0x827a('0x7')](e,emitEvent(event));}}module[_0x827a('0x8')]=PluginEvents;
\ No newline at end of file
index 460b1ea..92ebbf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ab=['request-promise','path','../../config/environment','./plugin.attributes','exports','Plugin','lodash','util','../../config/logger','api','moment'];(function(_0x10403c,_0x391bc7){var _0x15423b=function(_0x5bd404){while(--_0x5bd404){_0x10403c['push'](_0x10403c['shift']());}};_0x15423b(++_0x391bc7);}(_0x84ab,0x12f));var _0xb84a=function(_0x33bc64,_0x4d1e92){_0x33bc64=_0x33bc64-0x0;var _0x3fdd34=_0x84ab[_0x33bc64];return _0x3fdd34;};'use strict';var _=require(_0xb84a('0x0'));var util=require(_0xb84a('0x1'));var logger=require(_0xb84a('0x2'))(_0xb84a('0x3'));var moment=require(_0xb84a('0x4'));var BPromise=require('bluebird');var rp=require(_0xb84a('0x5'));var fs=require('fs');var path=require(_0xb84a('0x6'));var rimraf=require('rimraf');var config=require(_0xb84a('0x7'));var attributes=require(_0xb84a('0x8'));module[_0xb84a('0x9')]=function(_0x5b9def,_0x521a64){return _0x5b9def['define'](_0xb84a('0xa'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc9a8=['define','Plugin','plugins','lodash','../../config/logger','api','request-promise','path','rimraf','exports'];(function(_0x2592c7,_0x51f50e){var _0x34f726=function(_0x16c05b){while(--_0x16c05b){_0x2592c7['push'](_0x2592c7['shift']());}};_0x34f726(++_0x51f50e);}(_0xc9a8,0x143));var _0x8c9a=function(_0x3238ea,_0x91809d){_0x3238ea=_0x3238ea-0x0;var _0x4aaac2=_0xc9a8[_0x3238ea];return _0x4aaac2;};'use strict';var _=require(_0x8c9a('0x0'));var util=require('util');var logger=require(_0x8c9a('0x1'))(_0x8c9a('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8c9a('0x3'));var fs=require('fs');var path=require(_0x8c9a('0x4'));var rimraf=require(_0x8c9a('0x5'));var config=require('../../config/environment');var attributes=require('./plugin.attributes');module[_0x8c9a('0x6')]=function(_0x49bf78,_0x319753){return _0x49bf78[_0x8c9a('0x7')](_0x8c9a('0x8'),attributes,{'tableName':_0x8c9a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 17a0dd7..40a1bfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f39=['socket.io-emitter','./plugin.socket','register','request','info','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','message','Plugin,\x20%s,\x20%s','result','catch','CreatePlugin','Plugin','create','body','options','raw','then','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults','localhost'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7f39,0xfc));var _0x97f3=function(_0x559499,_0x2ecc11){_0x559499=_0x559499-0x0;var _0x476cb7=_0x7f39[_0x559499];return _0x476cb7;};'use strict';var _=require(_0x97f3('0x0'));var util=require('util');var moment=require(_0x97f3('0x1'));var BPromise=require('bluebird');var rs=require(_0x97f3('0x2'));var fs=require('fs');var Redis=require(_0x97f3('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x97f3('0x4'));var logger=require(_0x97f3('0x5'))('rpc');var config=require(_0x97f3('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x97f3('0x7')][_0x97f3('0x8')]({'port':0x232a});config[_0x97f3('0x9')]=_[_0x97f3('0xa')](config['redis'],{'host':_0x97f3('0xb'),'port':0x18eb});var socket=require(_0x97f3('0xc'))(new Redis(config['redis']));require(_0x97f3('0xd'))[_0x97f3('0xe')](socket);function respondWithRpcPromise(_0x3f9efb,_0x29c358,_0x3baaa0){return new BPromise(function(_0x3aa073,_0x174aba){return client[_0x97f3('0xf')](_0x3f9efb,_0x3baaa0)['then'](function(_0x171f3e){logger[_0x97f3('0x10')]('Plugin,\x20%s,\x20%s',_0x29c358,_0x97f3('0x11'));logger[_0x97f3('0x12')](_0x97f3('0x13'),_0x29c358,_0x97f3('0x11'),JSON[_0x97f3('0x14')](_0x171f3e));if(_0x171f3e[_0x97f3('0x15')]){if(_0x171f3e[_0x97f3('0x15')]['code']===0x1f4){logger[_0x97f3('0x15')]('Plugin,\x20%s,\x20%s',_0x29c358,_0x171f3e[_0x97f3('0x15')][_0x97f3('0x16')]);return _0x174aba(_0x171f3e[_0x97f3('0x15')]['message']);}logger[_0x97f3('0x15')](_0x97f3('0x17'),_0x29c358,_0x171f3e['error'][_0x97f3('0x16')]);return _0x3aa073(_0x171f3e['error']['message']);}else{logger['info'](_0x97f3('0x17'),_0x29c358,'request\x20sent');_0x3aa073(_0x171f3e[_0x97f3('0x18')][_0x97f3('0x16')]);}})[_0x97f3('0x19')](function(_0x1ce0e9){logger['error']('Plugin,\x20%s,\x20%s',_0x29c358,_0x1ce0e9);_0x174aba(_0x1ce0e9);});});}exports[_0x97f3('0x1a')]=function(_0x5457b8){var _0xd76ee=this;return new Promise(function(_0x4d35cf,_0x24955b){return db[_0x97f3('0x1b')][_0x97f3('0x1c')](_0x5457b8[_0x97f3('0x1d')],{'raw':_0x5457b8[_0x97f3('0x1e')]?_0x5457b8[_0x97f3('0x1e')][_0x97f3('0x1f')]===undefined?!![]:![]:!![]})[_0x97f3('0x20')](function(_0x392d99){logger[_0x97f3('0x10')](_0x97f3('0x1a'),_0x5457b8);logger[_0x97f3('0x12')](_0x97f3('0x1a'),_0x5457b8,JSON[_0x97f3('0x14')](_0x392d99));_0x4d35cf(_0x392d99);})[_0x97f3('0x19')](function(_0x2b463d){logger[_0x97f3('0x15')](_0x97f3('0x1a'),_0x2b463d[_0x97f3('0x16')],_0x5457b8);_0x24955b(_0xd76ee[_0x97f3('0x15')](0x1f4,_0x2b463d[_0x97f3('0x16')]));});});};
\ No newline at end of file
+var _0xed35=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./plugin.socket','register','then','info','Plugin,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','CreatePlugin','Plugin','body','options','raw','debug','catch','lodash','util','bluebird'];(function(_0x2d2c0d,_0x22db83){var _0x3ce632=function(_0x49a897){while(--_0x49a897){_0x2d2c0d['push'](_0x2d2c0d['shift']());}};_0x3ce632(++_0x22db83);}(_0xed35,0x89));var _0x5ed3=function(_0x4ff109,_0x27e15e){_0x4ff109=_0x4ff109-0x0;var _0x90a2bc=_0xed35[_0x4ff109];return _0x90a2bc;};'use strict';var _=require(_0x5ed3('0x0'));var util=require(_0x5ed3('0x1'));var moment=require('moment');var BPromise=require(_0x5ed3('0x2'));var rs=require(_0x5ed3('0x3'));var fs=require('fs');var Redis=require(_0x5ed3('0x4'));var db=require(_0x5ed3('0x5'))['db'];var utils=require(_0x5ed3('0x6'));var logger=require(_0x5ed3('0x7'))(_0x5ed3('0x8'));var config=require(_0x5ed3('0x9'));var jayson=require(_0x5ed3('0xa'));var client=jayson[_0x5ed3('0xb')][_0x5ed3('0xc')]({'port':0x232a});config['redis']=_[_0x5ed3('0xd')](config[_0x5ed3('0xe')],{'host':_0x5ed3('0xf'),'port':0x18eb});var socket=require(_0x5ed3('0x10'))(new Redis(config[_0x5ed3('0xe')]));require(_0x5ed3('0x11'))[_0x5ed3('0x12')](socket);function respondWithRpcPromise(_0x13a849,_0x39a266,_0x12f57c){return new BPromise(function(_0x15418b,_0x428c6e){return client['request'](_0x13a849,_0x12f57c)[_0x5ed3('0x13')](function(_0x5d63c3){logger[_0x5ed3('0x14')](_0x5ed3('0x15'),_0x39a266,_0x5ed3('0x16'));logger['debug']('Plugin,\x20%s,\x20%s,\x20%s',_0x39a266,_0x5ed3('0x16'),JSON[_0x5ed3('0x17')](_0x5d63c3));if(_0x5d63c3[_0x5ed3('0x18')]){if(_0x5d63c3[_0x5ed3('0x18')][_0x5ed3('0x19')]===0x1f4){logger[_0x5ed3('0x18')](_0x5ed3('0x15'),_0x39a266,_0x5d63c3[_0x5ed3('0x18')][_0x5ed3('0x1a')]);return _0x428c6e(_0x5d63c3[_0x5ed3('0x18')][_0x5ed3('0x1a')]);}logger[_0x5ed3('0x18')](_0x5ed3('0x15'),_0x39a266,_0x5d63c3[_0x5ed3('0x18')][_0x5ed3('0x1a')]);return _0x15418b(_0x5d63c3['error'][_0x5ed3('0x1a')]);}else{logger[_0x5ed3('0x14')](_0x5ed3('0x15'),_0x39a266,'request\x20sent');_0x15418b(_0x5d63c3[_0x5ed3('0x1b')][_0x5ed3('0x1a')]);}})['catch'](function(_0x340039){logger[_0x5ed3('0x18')]('Plugin,\x20%s,\x20%s',_0x39a266,_0x340039);_0x428c6e(_0x340039);});});}exports[_0x5ed3('0x1c')]=function(_0x5dd362){var _0x466199=this;return new Promise(function(_0x340ba8,_0x4c9730){return db[_0x5ed3('0x1d')]['create'](_0x5dd362[_0x5ed3('0x1e')],{'raw':_0x5dd362['options']?_0x5dd362[_0x5ed3('0x1f')][_0x5ed3('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x47e975){logger[_0x5ed3('0x14')](_0x5ed3('0x1c'),_0x5dd362);logger[_0x5ed3('0x21')]('CreatePlugin',_0x5dd362,JSON['stringify'](_0x47e975));_0x340ba8(_0x47e975);})[_0x5ed3('0x22')](function(_0x34fdbc){logger['error'](_0x5ed3('0x1c'),_0x34fdbc[_0x5ed3('0x1a')],_0x5dd362);_0x4c9730(_0x466199[_0x5ed3('0x18')](0x1f4,_0x34fdbc[_0x5ed3('0x1a')]));});});};
\ No newline at end of file
index d18132c..548c6c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bb0=['save','remove','update','removeListener','register','length','plugin:'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x9bb0,0x77));var _0x09bb=function(_0x57d209,_0x37dc1a){_0x57d209=_0x57d209-0x0;var _0x182ced=_0x9bb0[_0x57d209];return _0x182ced;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0x09bb('0x0'),_0x09bb('0x1'),_0x09bb('0x2')];function createListener(_0x5ce3c1,_0x24c722){return function(_0x58df8f){_0x24c722['emit'](_0x5ce3c1,_0x58df8f);};}function removeListener(_0x19a3f4,_0x198faa){return function(){PluginEvents[_0x09bb('0x3')](_0x19a3f4,_0x198faa);};}exports[_0x09bb('0x4')]=function(_0x54b629){for(var _0x5ed084=0x0,_0x1bc983=events[_0x09bb('0x5')];_0x5ed084<_0x1bc983;_0x5ed084++){var _0x424c17=events[_0x5ed084];var _0x28a9b5=createListener(_0x09bb('0x6')+_0x424c17,_0x54b629);PluginEvents['on'](_0x424c17,_0x28a9b5);}};
\ No newline at end of file
+var _0x3e3f=['plugin:','save','remove','update','emit','removeListener','length'];(function(_0x2fffff,_0x415518){var _0x4f2a2c=function(_0x32c77b){while(--_0x32c77b){_0x2fffff['push'](_0x2fffff['shift']());}};_0x4f2a2c(++_0x415518);}(_0x3e3f,0x78));var _0xf3e3=function(_0x154411,_0x5eb5fd){_0x154411=_0x154411-0x0;var _0x440c9a=_0x3e3f[_0x154411];return _0x440c9a;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0xf3e3('0x0'),_0xf3e3('0x1'),_0xf3e3('0x2')];function createListener(_0x41f24f,_0x1b508b){return function(_0x5d132a){_0x1b508b[_0xf3e3('0x3')](_0x41f24f,_0x5d132a);};}function removeListener(_0x3764ba,_0x46b7d6){return function(){PluginEvents[_0xf3e3('0x4')](_0x3764ba,_0x46b7d6);};}exports['register']=function(_0x1500fd){for(var _0x4d40c4=0x0,_0x1b66a9=events[_0xf3e3('0x5')];_0x4d40c4<_0x1b66a9;_0x4d40c4++){var _0x579278=events[_0x4d40c4];var _0xf7a2f2=createListener(_0xf3e3('0x6')+_0x579278,_0x1500fd);PluginEvents['on'](_0x579278,_0xf7a2f2);}};
\ No newline at end of file
index 8bd3c9a..3346539 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(_0x1b34e4,_0x33b0e7){var _0x4608c8=function(_0x59b23c){while(--_0x59b23c){_0x1b34e4['push'](_0x1b34e4['shift']());}};_0x4608c8(++_0x33b0e7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
+var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x28b3e1,_0x4d73d8){var _0x3e7b44=function(_0x28e8da){while(--_0x28e8da){_0x28b3e1['push'](_0x28b3e1['shift']());}};_0x3e7b44(++_0x4d73d8);}(_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
index a8cbda5..1f0cd18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41bb=['restart','stop','hasOwnProperty','Unknown\x20status','delete','dump','Unknown\x20id','lodash','../../config/pm2','api','child_process','exec','bluebird','sendStatus','json','error','stack','name','status','send','info','index','list','then','express','motion2','catch','show','describe','params','create','body','join','../../files/plugins','script','dirname','start','update'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x41bb,0xc5));var _0xb41b=function(_0x536320,_0x56301f){_0x536320=_0x536320-0x0;var _0x5dcd95=_0x41bb[_0x536320];return _0x5dcd95;};'use strict';var _=require(_0xb41b('0x0'));var pm2=require(_0xb41b('0x1'));var logger=require('../../config/logger')(_0xb41b('0x2'));var path=require('path');var exec=require(_0xb41b('0x3'))[_0xb41b('0x4')];var BPromise=require(_0xb41b('0x5'));function handleEntityNotFound(_0x448c8e,_0x4ee21b){return function(_0x12cea3){if(!_0x12cea3){_0x448c8e[_0xb41b('0x6')](0x194);;}return _0x12cea3;};}function respondWithResult(_0x2dbaa3,_0x50bc62){_0x50bc62=_0x50bc62||0xc8;return function(_0x5455ce){if(_0x5455ce){return _0x2dbaa3['status'](_0x50bc62)[_0xb41b('0x7')](_0x5455ce);}return null;};}function handleError(_0x29c30d,_0x53722a){_0x53722a=_0x53722a||0x1f4;return function(_0x13d44e){logger[_0xb41b('0x8')](_0x13d44e[_0xb41b('0x9')]);if(_0x13d44e[_0xb41b('0xa')]){delete _0x13d44e[_0xb41b('0xa')];}_0x29c30d[_0xb41b('0xb')](_0x53722a)[_0xb41b('0xc')](_0x13d44e);};}function execChildProcess(){return new BPromise(function(_0x4baa03,_0x1a9e2c){exec('npm\x20install',function(_0x2e906c,_0xb02d60,_0x1e1c82){logger[_0xb41b('0xd')](_0xb02d60);logger[_0xb41b('0xd')](_0x1e1c82);if(_0x2e906c){logger['error'](_0x2e906c);return _0x1a9e2c(_0x2e906c);}return _0x4baa03(_0xb02d60);});});}exports[_0xb41b('0xe')]=function(_0x2d947a,_0x33d1b5){return pm2[_0xb41b('0xf')]()[_0xb41b('0x10')](function(_0x4e8603){if(_0x4e8603){var _0x4e7f11=_['reject'](_0x4e8603,function(_0x1a09ec){return _0x1a09ec[_0xb41b('0xa')]===_0xb41b('0x11')||_0x1a09ec[_0xb41b('0xa')]===_0xb41b('0x12');});return{'rows':_0x4e7f11,'count':_0x4e7f11['length']};}return null;})[_0xb41b('0x10')](respondWithResult(_0x33d1b5,null))[_0xb41b('0x13')](handleError(_0x33d1b5,null));};exports[_0xb41b('0x14')]=function(_0xcf0728,_0x43f4ea){return pm2[_0xb41b('0x15')](_0xcf0728[_0xb41b('0x16')]['id'])['then'](respondWithResult(_0x43f4ea,null))['then'](handleEntityNotFound(_0x43f4ea,null))['catch'](handleError(_0x43f4ea,null));};exports[_0xb41b('0x17')]=function(_0x503e86,_0x307633){if(_0x503e86[_0xb41b('0x18')][_0xb41b('0xa')]&&_0x503e86['body']['script']){var _0x1a1386=path[_0xb41b('0x19')](__dirname,_0xb41b('0x1a'),_0x503e86[_0xb41b('0x18')][_0xb41b('0x1b')]);var _0x42dccb=process['cwd']();process['chdir'](path[_0xb41b('0x1c')](_0x1a1386));return execChildProcess()[_0xb41b('0x10')](function(_0x871b35){process['chdir'](_0x42dccb);return pm2[_0xb41b('0x1d')]({'name':_0x503e86[_0xb41b('0x18')]['name'],'script':_0x1a1386});})[_0xb41b('0x10')](function(_0x34f908){pm2['dump']();return _0x34f908[0x0];})[_0xb41b('0x10')](respondWithResult(_0x307633,0xc9))['catch'](handleError(_0x307633,null));}else{return _0x307633[_0xb41b('0xb')](0x1f4)[_0xb41b('0xc')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0xb41b('0x1e')]=function(_0x4265b8,_0x583099){if(_0x4265b8['body']['id']){delete _0x4265b8[_0xb41b('0x18')]['id'];}var _0x46aecf={'online':_0xb41b('0x1f'),'stopped':_0xb41b('0x20')};if(_0x46aecf[_0xb41b('0x21')](_0x4265b8[_0xb41b('0x18')][_0xb41b('0xb')])){return pm2[_0x46aecf[_0x4265b8['body'][_0xb41b('0xb')]]](_0x4265b8[_0xb41b('0x16')]['id'])['then'](respondWithResult(_0x583099,0xc8))[_0xb41b('0x13')](handleError(_0x583099,null));}else{return _0x583099['status'](0x1f4)[_0xb41b('0xc')]({'message':_0xb41b('0x22')});}};exports['destroy']=function(_0x23a6ed,_0x4a95e7){if(_0x23a6ed[_0xb41b('0x18')]['id']){delete _0x23a6ed[_0xb41b('0x18')]['id'];}if(_0x23a6ed['params']['id']){return pm2[_0xb41b('0x23')](_0x23a6ed[_0xb41b('0x16')]['id'])[_0xb41b('0x10')](function(_0x4503cf){pm2[_0xb41b('0x24')]();return _0x4503cf[0x0];})[_0xb41b('0x10')](respondWithResult(_0x4a95e7,null))[_0xb41b('0x13')](handleError(_0x4a95e7,null));}else{return _0x4a95e7[_0xb41b('0xb')](0x1f4)[_0xb41b('0xc')]({'message':_0xb41b('0x25')});}};
\ No newline at end of file
+var _0xbfcc=['exec','sendStatus','json','stack','name','status','send','npm\x20install','info','error','index','list','then','reject','express','motion2','catch','show','params','create','body','script','../../files/plugins','start','dump','Missing\x20name\x20and/or\x20path','update','stop','hasOwnProperty','Unknown\x20status','destroy','delete','Unknown\x20id','lodash','api','path','child_process'];(function(_0x5ac1e5,_0x4b5012){var _0x1bccc6=function(_0x102562){while(--_0x102562){_0x5ac1e5['push'](_0x5ac1e5['shift']());}};_0x1bccc6(++_0x4b5012);}(_0xbfcc,0x1dd));var _0xcbfc=function(_0x3ce2c4,_0x4544c1){_0x3ce2c4=_0x3ce2c4-0x0;var _0x4047c1=_0xbfcc[_0x3ce2c4];return _0x4047c1;};'use strict';var _=require(_0xcbfc('0x0'));var pm2=require('../../config/pm2');var logger=require('../../config/logger')(_0xcbfc('0x1'));var path=require(_0xcbfc('0x2'));var exec=require(_0xcbfc('0x3'))[_0xcbfc('0x4')];var BPromise=require('bluebird');function handleEntityNotFound(_0x59b1de,_0x54f81b){return function(_0x4b8361){if(!_0x4b8361){_0x59b1de[_0xcbfc('0x5')](0x194);;}return _0x4b8361;};}function respondWithResult(_0x2dbb05,_0x537813){_0x537813=_0x537813||0xc8;return function(_0x1b3917){if(_0x1b3917){return _0x2dbb05['status'](_0x537813)[_0xcbfc('0x6')](_0x1b3917);}return null;};}function handleError(_0x1f8b71,_0x1b1377){_0x1b1377=_0x1b1377||0x1f4;return function(_0xa1c83b){logger['error'](_0xa1c83b[_0xcbfc('0x7')]);if(_0xa1c83b[_0xcbfc('0x8')]){delete _0xa1c83b[_0xcbfc('0x8')];}_0x1f8b71[_0xcbfc('0x9')](_0x1b1377)[_0xcbfc('0xa')](_0xa1c83b);};}function execChildProcess(){return new BPromise(function(_0x3498c7,_0x4b34aa){exec(_0xcbfc('0xb'),function(_0x376a4c,_0x1e0d79,_0xbbb176){logger[_0xcbfc('0xc')](_0x1e0d79);logger['info'](_0xbbb176);if(_0x376a4c){logger[_0xcbfc('0xd')](_0x376a4c);return _0x4b34aa(_0x376a4c);}return _0x3498c7(_0x1e0d79);});});}exports[_0xcbfc('0xe')]=function(_0x80d08d,_0x5ba249){return pm2[_0xcbfc('0xf')]()[_0xcbfc('0x10')](function(_0x2f2bdd){if(_0x2f2bdd){var _0x45a5cc=_[_0xcbfc('0x11')](_0x2f2bdd,function(_0x53a7ea){return _0x53a7ea[_0xcbfc('0x8')]===_0xcbfc('0x12')||_0x53a7ea[_0xcbfc('0x8')]===_0xcbfc('0x13');});return{'rows':_0x45a5cc,'count':_0x45a5cc['length']};}return null;})['then'](respondWithResult(_0x5ba249,null))[_0xcbfc('0x14')](handleError(_0x5ba249,null));};exports[_0xcbfc('0x15')]=function(_0xa65368,_0x4d6946){return pm2['describe'](_0xa65368[_0xcbfc('0x16')]['id'])[_0xcbfc('0x10')](respondWithResult(_0x4d6946,null))[_0xcbfc('0x10')](handleEntityNotFound(_0x4d6946,null))['catch'](handleError(_0x4d6946,null));};exports[_0xcbfc('0x17')]=function(_0x552777,_0x28f7fb){if(_0x552777[_0xcbfc('0x18')][_0xcbfc('0x8')]&&_0x552777[_0xcbfc('0x18')][_0xcbfc('0x19')]){var _0x2653b1=path['join'](__dirname,_0xcbfc('0x1a'),_0x552777[_0xcbfc('0x18')]['script']);var _0x1da958=process['cwd']();process['chdir'](path['dirname'](_0x2653b1));return execChildProcess()[_0xcbfc('0x10')](function(_0x4a0fcb){process['chdir'](_0x1da958);return pm2[_0xcbfc('0x1b')]({'name':_0x552777[_0xcbfc('0x18')][_0xcbfc('0x8')],'script':_0x2653b1});})[_0xcbfc('0x10')](function(_0x49f5bf){pm2[_0xcbfc('0x1c')]();return _0x49f5bf[0x0];})['then'](respondWithResult(_0x28f7fb,0xc9))[_0xcbfc('0x14')](handleError(_0x28f7fb,null));}else{return _0x28f7fb[_0xcbfc('0x9')](0x1f4)['send']({'message':_0xcbfc('0x1d')});}};exports[_0xcbfc('0x1e')]=function(_0x4ab48e,_0x1b2c01){if(_0x4ab48e[_0xcbfc('0x18')]['id']){delete _0x4ab48e[_0xcbfc('0x18')]['id'];}var _0x41f3b8={'online':'restart','stopped':_0xcbfc('0x1f')};if(_0x41f3b8[_0xcbfc('0x20')](_0x4ab48e['body'][_0xcbfc('0x9')])){return pm2[_0x41f3b8[_0x4ab48e[_0xcbfc('0x18')][_0xcbfc('0x9')]]](_0x4ab48e[_0xcbfc('0x16')]['id'])[_0xcbfc('0x10')](respondWithResult(_0x1b2c01,0xc8))[_0xcbfc('0x14')](handleError(_0x1b2c01,null));}else{return _0x1b2c01[_0xcbfc('0x9')](0x1f4)['send']({'message':_0xcbfc('0x21')});}};exports[_0xcbfc('0x22')]=function(_0x3f9d20,_0x20a378){if(_0x3f9d20['body']['id']){delete _0x3f9d20[_0xcbfc('0x18')]['id'];}if(_0x3f9d20[_0xcbfc('0x16')]['id']){return pm2[_0xcbfc('0x23')](_0x3f9d20[_0xcbfc('0x16')]['id'])[_0xcbfc('0x10')](function(_0x34baa6){pm2[_0xcbfc('0x1c')]();return _0x34baa6[0x0];})['then'](respondWithResult(_0x20a378,null))[_0xcbfc('0x14')](handleError(_0x20a378,null));}else{return _0x20a378[_0xcbfc('0x9')](0x1f4)['send']({'message':_0xcbfc('0x24')});}};
\ No newline at end of file
index 4429d32..46348a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ca4=['express','Router','../../components/auth/service','./realtime.controller','get','/queues','isAuthenticated','getQueues'];(function(_0x249d7c,_0x17163a){var _0x20f24b=function(_0x5db7c4){while(--_0x5db7c4){_0x249d7c['push'](_0x249d7c['shift']());}};_0x20f24b(++_0x17163a);}(_0x4ca4,0x100));var _0x44ca=function(_0x39dc92,_0x5599f0){_0x39dc92=_0x39dc92-0x0;var _0x3f750f=_0x4ca4[_0x39dc92];return _0x3f750f;};'use strict';var express=require(_0x44ca('0x0'));var router=express[_0x44ca('0x1')]();var auth=require(_0x44ca('0x2'));var controller=require(_0x44ca('0x3'));router[_0x44ca('0x4')](_0x44ca('0x5'),auth[_0x44ca('0x6')](),controller[_0x44ca('0x7')]);module['exports']=router;
\ No newline at end of file
+var _0x3cc7=['express','Router','../../components/auth/service','./realtime.controller','get','isAuthenticated','exports'];(function(_0xc33ad2,_0xcc3046){var _0x2883f2=function(_0x57445b){while(--_0x57445b){_0xc33ad2['push'](_0xc33ad2['shift']());}};_0x2883f2(++_0xcc3046);}(_0x3cc7,0x11f));var _0x73cc=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0x3cc7[_0x8de54f];return _0x14cba4;};'use strict';var express=require(_0x73cc('0x0'));var router=express[_0x73cc('0x1')]();var auth=require(_0x73cc('0x2'));var controller=require(_0x73cc('0x3'));router[_0x73cc('0x4')]('/queues',auth[_0x73cc('0x5')](),controller['getQueues']);module[_0x73cc('0x6')]=router;
\ No newline at end of file
index cb7aa40..2f5b88f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11e5=['fieldName','type','key','getOptions','user','role','outbound','QueueCampaigns','Queues','filter','getResources','findAndCountAll','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','waiting','talking','paused','push','originated','message','dialActive','dialMethod','startProgressive','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','get','loggedInDb','available','pTalking','merge','pick','getAgents','online','getMembers','length','agents','Queue','QueueId','User','findAll','UserId','agent','all','rows','catch','util','jayson/promise','../../components/parsers/qs','api','../../mysqldb','client','limit','undefined','count','offset','set','error','stack','name','status','send','mail','chat','sms','openchannel','whatsapp','voice','then','includes','channel','toLowerCase','Invalid\x20channel','query','startCase','map','rawAttributes'];(function(_0x3f2d47,_0x48af3d){var _0x5a575d=function(_0x32f193){while(--_0x32f193){_0x3f2d47['push'](_0x3f2d47['shift']());}};_0x5a575d(++_0x48af3d);}(_0x11e5,0x8b));var _0x511e=function(_0x1ec06d,_0xe71dfb){_0x1ec06d=_0x1ec06d-0x0;var _0x2a434f=_0x11e5[_0x1ec06d];return _0x2a434f;};'use strict';var util=require(_0x511e('0x0'));var _=require('lodash');var jayson=require(_0x511e('0x1'));var qs=require(_0x511e('0x2'));var logger=require('../../config/logger')(_0x511e('0x3'));var db=require(_0x511e('0x4'))['db'];var client=jayson[_0x511e('0x5')]['http']({'port':0x232a});var routingClient=jayson[_0x511e('0x5')]['http']({'port':0x232c});function respondWithFilteredResult(_0x5923a7,_0x342539){return function(_0x323f8c){if(_0x323f8c){var _0x466dec=typeof _0x342539['offset']==='undefined'&&typeof _0x342539[_0x511e('0x6')]===_0x511e('0x7');var _0x25deeb=_0x323f8c[_0x511e('0x8')];var _0x4449c4=_0x466dec?0x0:_0x342539[_0x511e('0x9')];var _0x1596b3=_0x466dec?_0x323f8c[_0x511e('0x8')]:_0x342539[_0x511e('0x9')]+_0x342539[_0x511e('0x6')];var _0x464085;if(_0x1596b3>=_0x25deeb){_0x1596b3=_0x25deeb;_0x464085=0xc8;}else{_0x464085=0xce;}_0x5923a7['status'](_0x464085);return _0x5923a7[_0x511e('0xa')]('Content-Range',_0x4449c4+'-'+_0x1596b3+'/'+_0x25deeb)['json'](_0x323f8c);}return null;};}function handleError(_0x3deecc,_0x327880){_0x327880=_0x327880||0x1f4;return function(_0x42679e){logger[_0x511e('0xb')](_0x42679e[_0x511e('0xc')]);if(_0x42679e[_0x511e('0xd')]){delete _0x42679e['name'];}_0x3deecc[_0x511e('0xe')](_0x327880)[_0x511e('0xf')](_0x42679e);};}exports['getQueues']=function(_0x14b34e,_0x43a329){var _0x4f50b9=[_0x511e('0x10'),_0x511e('0x11'),_0x511e('0x12'),_0x511e('0x13'),'fax',_0x511e('0x14'),_0x511e('0x15')];var _0x2e66b6={'count':0x0,'rows':[]},_0x577616={},_0x26af67;Promise['resolve']()[_0x511e('0x16')](function(){if(_0x14b34e['query']['channel']){if(!_[_0x511e('0x17')](_0x4f50b9,_0x14b34e['query'][_0x511e('0x18')][_0x511e('0x19')]()))throw new Error(_0x511e('0x1a'));_0x26af67=_0x14b34e[_0x511e('0x1b')][_0x511e('0x18')][_0x511e('0x19')]();}var _0x3723ff=_[_0x511e('0x1c')](_0x26af67)+'Queue';var _0x1e2b41=_[_0x511e('0x1d')](db[_0x3723ff][_0x511e('0x1e')],function(_0x1a273b){return{'name':_0x1a273b[_0x511e('0x1f')],'type':_0x1a273b[_0x511e('0x20')][_0x511e('0x21')]};});_0x577616=qs[_0x511e('0x22')](_0x1e2b41,_0x14b34e);if(_0x14b34e[_0x511e('0x23')][_0x511e('0x24')]==='user'){var _0x4ad22b={'params':{'id':_0x14b34e[_0x511e('0x23')]['userProfileId']},'query':{'section':_0x26af67===_0x511e('0x15')&&_0x14b34e['query'][_0x511e('0x20')]===_0x511e('0x25')?_0x511e('0x26'):_[_0x511e('0x1c')](_0x26af67)+_0x511e('0x27'),'type':_0x14b34e[_0x511e('0x1b')][_0x511e('0x20')],'nolimit':!![],'sort':_0x511e('0xd'),'filter':_0x14b34e[_0x511e('0x1b')][_0x511e('0x28')]}};return db['UserProfile'][_0x511e('0x29')](_0x4ad22b);}return db[_0x3723ff][_0x511e('0x2a')](_0x577616);})[_0x511e('0x16')](function(_0x1aaac1){_0x2e66b6[_0x511e('0x8')]=_0x1aaac1['count'];var _0x431b75=_0x26af67==='voice'?client:routingClient;return _0x431b75['request'](_[_0x511e('0x1c')](_0x26af67)+_0x511e('0x27'),_0x14b34e)[_0x511e('0x16')](function(_0x2fb396){if(_0x2fb396[_0x511e('0xb')])throw new Error(util['format'](_0x511e('0x2b'),_0x26af67));var _0x2e6529=_0x2fb396[_0x511e('0x2c')];var _0x32be08=[_0x511e('0x2d'),'available',_0x511e('0x2e'),_0x511e('0x2f'),_0x511e('0x30')];if(_0x26af67===_0x511e('0x15')&&_0x14b34e[_0x511e('0x1b')][_0x511e('0x20')]===_0x511e('0x25')){_0x32be08[_0x511e('0x31')]('pTalking',_0x511e('0x32'),_0x511e('0x33'),_0x511e('0x34'),_0x511e('0x35'),'Trunk','startPredictive',_0x511e('0x36'),'erlangCalls','erlangCallToSecond',_0x511e('0x37'),_0x511e('0x38'),_0x511e('0x39'),_0x511e('0x3a'),_0x511e('0x3b'),'predictiveIntervalAvailable',_0x511e('0x3c'),_0x511e('0x3d'),_0x511e('0x3e'),'predictiveIntervalDroppedCallsCallersExit',_0x511e('0x3f'),_0x511e('0x40'));}var _0x345ad3=_0x1aaac1['rows'][_0x511e('0x1d')](function(_0x2fd83d){var _0x4f124f=_0x2fd83d[_0x511e('0x41')]({'plain':!![]});_0x4f124f[_0x511e('0x30')]=0x0;_0x4f124f[_0x511e('0x42')]=0x0;_0x4f124f[_0x511e('0x2d')]=0x0;_0x4f124f[_0x511e('0x43')]=0x0;_0x4f124f[_0x511e('0x30')]=0x0;_0x4f124f[_0x511e('0x2e')]=0x0;if(_0x26af67===_0x511e('0x15')){_0x4f124f[_0x511e('0x2f')]=0x0;if(_0x14b34e[_0x511e('0x1b')][_0x511e('0x20')]==='outbound'){_0x4f124f[_0x511e('0x44')]=0x0;_0x4f124f['originated']=0x0;}}_0x4f124f['agents']=[];var _0xd31415=_['find'](_0x2e6529['rows'],['id',_0x4f124f['id']]);if(_0xd31415)_[_0x511e('0x45')](_0x4f124f,_[_0x511e('0x46')](_0xd31415,_0x32be08));if(_0x26af67===_0x511e('0x15')){return _0x2fd83d[_0x511e('0x47')]({'attributes':['id',_0x511e('0xd'),_0x511e('0x48')],'joinTableAttributes':[],'raw':!![]})[_0x511e('0x16')](function(_0x27a78a){return _0x2fd83d[_0x511e('0x49')]({'raw':!![]})[_0x511e('0x16')](function(_0x26b1be){for(var _0x17f95c=0x0;_0x17f95c<_0x27a78a[_0x511e('0x4a')];_0x17f95c++){var _0x443908=_['find'](_0x26b1be,['UserId',_0x27a78a[_0x17f95c]['id']]);var _0x19ffde={'id':_0x27a78a[_0x17f95c]['id'],'name':_0x27a78a[_0x17f95c][_0x511e('0xd')],'online':Boolean(_0x27a78a[_0x17f95c][_0x511e('0x48')]),'paused':_0x443908?Boolean(_0x443908[_0x511e('0x30')]):![]};if(_0x19ffde[_0x511e('0x48')])_0x4f124f['loggedInDb']++;if(_0x19ffde[_0x511e('0x30')])_0x4f124f[_0x511e('0x30')]++;_0x4f124f[_0x511e('0x4b')]['push'](_0x19ffde);}return _0x4f124f;});});}else{var _0x5cdc4d='User'+_[_0x511e('0x1c')](_0x26af67)+_0x511e('0x4c');var _0x28ee1f=_0x26af67+'Pause';return db[_0x5cdc4d]['findAll']({'where':{[_['startCase'](_0x26af67)+_0x511e('0x4d')]:_0x2fd83d['id']},'raw':!![]})[_0x511e('0x16')](function(_0x4120be){return db[_0x511e('0x4e')][_0x511e('0x4f')]({'attributes':['id',_0x511e('0xd'),_0x511e('0x48'),_0x28ee1f],'where':{'id':_[_0x511e('0x1d')](_0x4120be,_0x511e('0x50')),'role':_0x511e('0x51')},'raw':!![]});})[_0x511e('0x16')](function(_0x354f06){for(var _0x19a6c8=0x0;_0x19a6c8<_0x354f06[_0x511e('0x4a')];_0x19a6c8++){var _0x625454={'id':_0x354f06[_0x19a6c8]['id'],'name':_0x354f06[_0x19a6c8][_0x511e('0xd')],'online':Boolean(_0x354f06[_0x19a6c8][_0x511e('0x48')]),'paused':Boolean(_0x354f06[_0x19a6c8][_0x28ee1f])};if(_0x625454[_0x511e('0x48')])_0x4f124f[_0x511e('0x42')]++;if(_0x625454[_0x511e('0x30')])_0x4f124f[_0x511e('0x30')]++;_0x4f124f[_0x511e('0x4b')][_0x511e('0x31')](_0x625454);}return _0x4f124f;});}});return Promise[_0x511e('0x52')](_0x345ad3);});})[_0x511e('0x16')](function(_0x4096c0){_0x2e66b6[_0x511e('0x53')]=_0x4096c0;return _0x2e66b6;})[_0x511e('0x16')](respondWithFilteredResult(_0x43a329,_0x577616))[_0x511e('0x54')](handleError(_0x43a329,null));};
\ No newline at end of file
+var _0xaa3f=['User','Queue','findAll','QueueId','agent','all','catch','util','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client','http','offset','undefined','limit','status','set','Content-Range','error','stack','name','send','getQueues','mail','openchannel','fax','whatsapp','voice','query','includes','channel','toLowerCase','Invalid\x20channel','startCase','map','rawAttributes','type','key','getOptions','user','role','outbound','QueueCampaigns','Queues','filter','UserProfile','getResources','findAndCountAll','count','then','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','available','waiting','talking','paused','push','pTalking','originated','message','dialActive','dialMethod','Trunk','startPredictive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','get','loggedInDb','agents','find','rows','merge','online','getMembers','UserId'];(function(_0x2d396c,_0x538d13){var _0x3d89fa=function(_0x4a22d3){while(--_0x4a22d3){_0x2d396c['push'](_0x2d396c['shift']());}};_0x3d89fa(++_0x538d13);}(_0xaa3f,0xbb));var _0xfaa3=function(_0x1a5e9d,_0x4d8c51){_0x1a5e9d=_0x1a5e9d-0x0;var _0x3b5801=_0xaa3f[_0x1a5e9d];return _0x3b5801;};'use strict';var util=require(_0xfaa3('0x0'));var _=require(_0xfaa3('0x1'));var jayson=require(_0xfaa3('0x2'));var qs=require(_0xfaa3('0x3'));var logger=require(_0xfaa3('0x4'))(_0xfaa3('0x5'));var db=require(_0xfaa3('0x6'))['db'];var client=jayson[_0xfaa3('0x7')][_0xfaa3('0x8')]({'port':0x232a});var routingClient=jayson['client']['http']({'port':0x232c});function respondWithFilteredResult(_0x2ac57f,_0x4bac92){return function(_0x3d09aa){if(_0x3d09aa){var _0xeecce5=typeof _0x4bac92[_0xfaa3('0x9')]===_0xfaa3('0xa')&&typeof _0x4bac92[_0xfaa3('0xb')]===_0xfaa3('0xa');var _0xf420ec=_0x3d09aa['count'];var _0x37bcd5=_0xeecce5?0x0:_0x4bac92[_0xfaa3('0x9')];var _0x49380c=_0xeecce5?_0x3d09aa['count']:_0x4bac92[_0xfaa3('0x9')]+_0x4bac92[_0xfaa3('0xb')];var _0x34d3dc;if(_0x49380c>=_0xf420ec){_0x49380c=_0xf420ec;_0x34d3dc=0xc8;}else{_0x34d3dc=0xce;}_0x2ac57f[_0xfaa3('0xc')](_0x34d3dc);return _0x2ac57f[_0xfaa3('0xd')](_0xfaa3('0xe'),_0x37bcd5+'-'+_0x49380c+'/'+_0xf420ec)['json'](_0x3d09aa);}return null;};}function handleError(_0x10ea75,_0x5be067){_0x5be067=_0x5be067||0x1f4;return function(_0x1aa8e8){logger[_0xfaa3('0xf')](_0x1aa8e8[_0xfaa3('0x10')]);if(_0x1aa8e8['name']){delete _0x1aa8e8[_0xfaa3('0x11')];}_0x10ea75['status'](_0x5be067)[_0xfaa3('0x12')](_0x1aa8e8);};}exports[_0xfaa3('0x13')]=function(_0x2361a9,_0x3ddb40){var _0x1243ed=[_0xfaa3('0x14'),'chat','sms',_0xfaa3('0x15'),_0xfaa3('0x16'),_0xfaa3('0x17'),_0xfaa3('0x18')];var _0x4e54e4={'count':0x0,'rows':[]},_0x5dd38c={},_0x50f121;Promise['resolve']()['then'](function(){if(_0x2361a9[_0xfaa3('0x19')]['channel']){if(!_[_0xfaa3('0x1a')](_0x1243ed,_0x2361a9[_0xfaa3('0x19')][_0xfaa3('0x1b')][_0xfaa3('0x1c')]()))throw new Error(_0xfaa3('0x1d'));_0x50f121=_0x2361a9[_0xfaa3('0x19')][_0xfaa3('0x1b')][_0xfaa3('0x1c')]();}var _0x220c9e=_[_0xfaa3('0x1e')](_0x50f121)+'Queue';var _0x434c8b=_[_0xfaa3('0x1f')](db[_0x220c9e][_0xfaa3('0x20')],function(_0x42b214){return{'name':_0x42b214['fieldName'],'type':_0x42b214[_0xfaa3('0x21')][_0xfaa3('0x22')]};});_0x5dd38c=qs[_0xfaa3('0x23')](_0x434c8b,_0x2361a9);if(_0x2361a9[_0xfaa3('0x24')][_0xfaa3('0x25')]===_0xfaa3('0x24')){var _0x2f2989={'params':{'id':_0x2361a9[_0xfaa3('0x24')]['userProfileId']},'query':{'section':_0x50f121===_0xfaa3('0x18')&&_0x2361a9[_0xfaa3('0x19')][_0xfaa3('0x21')]===_0xfaa3('0x26')?_0xfaa3('0x27'):_[_0xfaa3('0x1e')](_0x50f121)+_0xfaa3('0x28'),'type':_0x2361a9[_0xfaa3('0x19')][_0xfaa3('0x21')],'nolimit':!![],'sort':_0xfaa3('0x11'),'filter':_0x2361a9[_0xfaa3('0x19')][_0xfaa3('0x29')]}};return db[_0xfaa3('0x2a')][_0xfaa3('0x2b')](_0x2f2989);}return db[_0x220c9e][_0xfaa3('0x2c')](_0x5dd38c);})['then'](function(_0x230430){_0x4e54e4[_0xfaa3('0x2d')]=_0x230430[_0xfaa3('0x2d')];var _0x54bc09=_0x50f121===_0xfaa3('0x18')?client:routingClient;return _0x54bc09['request'](_[_0xfaa3('0x1e')](_0x50f121)+'Queues',_0x2361a9)[_0xfaa3('0x2e')](function(_0x1ece24){if(_0x1ece24[_0xfaa3('0xf')])throw new Error(util[_0xfaa3('0x2f')](_0xfaa3('0x30'),_0x50f121));var _0x33ae08=_0x1ece24[_0xfaa3('0x31')];var _0xb2aeac=['loggedIn',_0xfaa3('0x32'),_0xfaa3('0x33'),_0xfaa3('0x34'),_0xfaa3('0x35')];if(_0x50f121===_0xfaa3('0x18')&&_0x2361a9[_0xfaa3('0x19')][_0xfaa3('0x21')]===_0xfaa3('0x26')){_0xb2aeac[_0xfaa3('0x36')](_0xfaa3('0x37'),_0xfaa3('0x38'),_0xfaa3('0x39'),_0xfaa3('0x3a'),_0xfaa3('0x3b'),_0xfaa3('0x3c'),_0xfaa3('0x3d'),'startProgressive',_0xfaa3('0x3e'),_0xfaa3('0x3f'),_0xfaa3('0x40'),_0xfaa3('0x41'),_0xfaa3('0x42'),_0xfaa3('0x43'),_0xfaa3('0x44'),_0xfaa3('0x45'),'predictiveIntervalTotalCalls',_0xfaa3('0x46'),_0xfaa3('0x47'),_0xfaa3('0x48'),'predictiveIntervalAvgHoldtime',_0xfaa3('0x49'));}var _0x3b2741=_0x230430['rows'][_0xfaa3('0x1f')](function(_0x23fc89){var _0x3a322d=_0x23fc89[_0xfaa3('0x4a')]({'plain':!![]});_0x3a322d[_0xfaa3('0x35')]=0x0;_0x3a322d[_0xfaa3('0x4b')]=0x0;_0x3a322d['loggedIn']=0x0;_0x3a322d['available']=0x0;_0x3a322d[_0xfaa3('0x35')]=0x0;_0x3a322d[_0xfaa3('0x33')]=0x0;if(_0x50f121==='voice'){_0x3a322d['talking']=0x0;if(_0x2361a9[_0xfaa3('0x19')]['type']===_0xfaa3('0x26')){_0x3a322d[_0xfaa3('0x37')]=0x0;_0x3a322d[_0xfaa3('0x38')]=0x0;}}_0x3a322d[_0xfaa3('0x4c')]=[];var _0x3100c3=_[_0xfaa3('0x4d')](_0x33ae08[_0xfaa3('0x4e')],['id',_0x3a322d['id']]);if(_0x3100c3)_[_0xfaa3('0x4f')](_0x3a322d,_['pick'](_0x3100c3,_0xb2aeac));if(_0x50f121==='voice'){return _0x23fc89['getAgents']({'attributes':['id','name',_0xfaa3('0x50')],'joinTableAttributes':[],'raw':!![]})[_0xfaa3('0x2e')](function(_0x55c079){return _0x23fc89[_0xfaa3('0x51')]({'raw':!![]})[_0xfaa3('0x2e')](function(_0x46683d){for(var _0x4abf3a=0x0;_0x4abf3a<_0x55c079['length'];_0x4abf3a++){var _0x1e5d33=_['find'](_0x46683d,[_0xfaa3('0x52'),_0x55c079[_0x4abf3a]['id']]);var _0x57b77c={'id':_0x55c079[_0x4abf3a]['id'],'name':_0x55c079[_0x4abf3a]['name'],'online':Boolean(_0x55c079[_0x4abf3a][_0xfaa3('0x50')]),'paused':_0x1e5d33?Boolean(_0x1e5d33[_0xfaa3('0x35')]):![]};if(_0x57b77c['online'])_0x3a322d[_0xfaa3('0x4b')]++;if(_0x57b77c['paused'])_0x3a322d[_0xfaa3('0x35')]++;_0x3a322d['agents'][_0xfaa3('0x36')](_0x57b77c);}return _0x3a322d;});});}else{var _0x74d3fe=_0xfaa3('0x53')+_['startCase'](_0x50f121)+_0xfaa3('0x54');var _0x305a96=_0x50f121+'Pause';return db[_0x74d3fe][_0xfaa3('0x55')]({'where':{[_[_0xfaa3('0x1e')](_0x50f121)+_0xfaa3('0x56')]:_0x23fc89['id']},'raw':!![]})[_0xfaa3('0x2e')](function(_0x4b227f){return db[_0xfaa3('0x53')][_0xfaa3('0x55')]({'attributes':['id','name',_0xfaa3('0x50'),_0x305a96],'where':{'id':_['map'](_0x4b227f,_0xfaa3('0x52')),'role':_0xfaa3('0x57')},'raw':!![]});})[_0xfaa3('0x2e')](function(_0x54ffab){for(var _0x1b3006=0x0;_0x1b3006<_0x54ffab['length'];_0x1b3006++){var _0x5c3d0d={'id':_0x54ffab[_0x1b3006]['id'],'name':_0x54ffab[_0x1b3006][_0xfaa3('0x11')],'online':Boolean(_0x54ffab[_0x1b3006][_0xfaa3('0x50')]),'paused':Boolean(_0x54ffab[_0x1b3006][_0x305a96])};if(_0x5c3d0d[_0xfaa3('0x50')])_0x3a322d[_0xfaa3('0x4b')]++;if(_0x5c3d0d[_0xfaa3('0x35')])_0x3a322d[_0xfaa3('0x35')]++;_0x3a322d[_0xfaa3('0x4c')]['push'](_0x5c3d0d);}return _0x3a322d;});}});return Promise[_0xfaa3('0x58')](_0x3b2741);});})[_0xfaa3('0x2e')](function(_0x320555){_0x4e54e4[_0xfaa3('0x4e')]=_0x320555;return _0x4e54e4;})[_0xfaa3('0x2e')](respondWithFilteredResult(_0x3ddb40,_0x5dd38c))[_0xfaa3('0x59')](handleError(_0x3ddb40,null));};
\ No newline at end of file
index 9606087..8cf8c9b 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(_0x52ab17,_0xf51f71){var _0x4f420f=function(_0x269965){while(--_0x269965){_0x52ab17['push'](_0x52ab17['shift']());}};_0x4f420f(++_0xf51f71);}(_0x9c44,0x178));var _0x49c4=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x9c44[_0x5d2803];return _0xdcad2c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x339783,_0x4108d2){var _0x2b20ef=function(_0x3a1a2a){while(--_0x3a1a2a){_0x339783['push'](_0x339783['shift']());}};_0x2b20ef(++_0x4108d2);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x421c56,_0x4efd00){_0x421c56=_0x421c56-0x0;var _0x49b244=_0xcb91[_0x421c56];return _0x49b244;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index 23b9204..30c3767 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8fb=['INTEGER','STRING','DATE','sequelize','exports'];(function(_0x89d086,_0x10a9a5){var _0x5a992c=function(_0x2b4fbd){while(--_0x2b4fbd){_0x89d086['push'](_0x89d086['shift']());}};_0x5a992c(++_0x10a9a5);}(_0xd8fb,0x99));var _0xbd8f=function(_0x148753,_0x20f48b){_0x148753=_0x148753-0x0;var _0x20e899=_0xd8fb[_0x148753];return _0x20e899;};'use strict';var Sequelize=require(_0xbd8f('0x0'));module[_0xbd8f('0x1')]={'state':{'type':Sequelize[_0xbd8f('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xbd8f('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xbd8f('0x4')]},'ringtime':{'type':Sequelize[_0xbd8f('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xbd8f('0x3')]},'membername':{'type':Sequelize[_0xbd8f('0x3')]}};
\ No newline at end of file
+var _0xa1f6=['INTEGER','STRING','DATE','sequelize','exports'];(function(_0x1fe23d,_0x5cd903){var _0x11eb92=function(_0x49b226){while(--_0x49b226){_0x1fe23d['push'](_0x1fe23d['shift']());}};_0x11eb92(++_0x5cd903);}(_0xa1f6,0x19d));var _0x6a1f=function(_0x25c988,_0xce8221){_0x25c988=_0x25c988-0x0;var _0x45fcc2=_0xa1f6[_0x25c988];return _0x45fcc2;};'use strict';var Sequelize=require(_0x6a1f('0x0'));module[_0x6a1f('0x1')]={'state':{'type':Sequelize[_0x6a1f('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x6a1f('0x3')]},'scheduledat':{'type':Sequelize[_0x6a1f('0x4')]},'uniqueid':{'type':Sequelize[_0x6a1f('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x6a1f('0x3')]}};
\ No newline at end of file
index ec6fc64..3a59880 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1faa=['exports','define','report_agent_preview','util','api','moment','request-promise','path','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1faa,0xa5));var _0xa1fa=function(_0x5759e8,_0x6ff466){_0x5759e8=_0x5759e8-0x0;var _0x26ea95=_0x1faa[_0x5759e8];return _0x26ea95;};'use strict';var _=require('lodash');var util=require(_0xa1fa('0x0'));var logger=require('../../config/logger')(_0xa1fa('0x1'));var moment=require(_0xa1fa('0x2'));var BPromise=require('bluebird');var rp=require(_0xa1fa('0x3'));var fs=require('fs');var path=require(_0xa1fa('0x4'));var rimraf=require('rimraf');var config=require(_0xa1fa('0x5'));var attributes=require('./reportAgentPreview.attributes');module[_0xa1fa('0x6')]=function(_0x5895e9,_0x3a0276){return _0x5895e9[_0xa1fa('0x7')]('ReportAgentPreview',attributes,{'tableName':_0xa1fa('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x08e0=['ReportAgentPreview','report_agent_preview','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./reportAgentPreview.attributes'];(function(_0x10ddbd,_0x520018){var _0x46c953=function(_0x1fb978){while(--_0x1fb978){_0x10ddbd['push'](_0x10ddbd['shift']());}};_0x46c953(++_0x520018);}(_0x08e0,0x16a));var _0x008e=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0x08e0[_0x29d915];return _0x160f86;};'use strict';var _=require(_0x008e('0x0'));var util=require(_0x008e('0x1'));var logger=require(_0x008e('0x2'))(_0x008e('0x3'));var moment=require(_0x008e('0x4'));var BPromise=require(_0x008e('0x5'));var rp=require(_0x008e('0x6'));var fs=require('fs');var path=require(_0x008e('0x7'));var rimraf=require(_0x008e('0x8'));var config=require('../../config/environment');var attributes=require(_0x008e('0x9'));module['exports']=function(_0x38e6c6,_0x3e6de6){return _0x38e6c6['define'](_0x008e('0xa'),attributes,{'tableName':_0x008e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a945936..fef6bd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d2c=['info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','error','message','CreateReportAgentPreview','create','body','options','raw','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0d2c,0xaf));var _0xc0d2=function(_0x315a02,_0x4f4f){_0x315a02=_0x315a02-0x0;var _0x158e79=_0x0d2c[_0x315a02];return _0x158e79;};'use strict';var _=require(_0xc0d2('0x0'));var util=require(_0xc0d2('0x1'));var moment=require(_0xc0d2('0x2'));var BPromise=require(_0xc0d2('0x3'));var rs=require(_0xc0d2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc0d2('0x5'))['db'];var utils=require(_0xc0d2('0x6'));var logger=require(_0xc0d2('0x7'))(_0xc0d2('0x8'));var config=require(_0xc0d2('0x9'));var jayson=require(_0xc0d2('0xa'));var client=jayson[_0xc0d2('0xb')][_0xc0d2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x15e315,_0x314cfe,_0x5618d1){return new BPromise(function(_0x102385,_0x113bb4){return client['request'](_0x15e315,_0x5618d1)[_0xc0d2('0xd')](function(_0x4f03cd){logger[_0xc0d2('0xe')](_0xc0d2('0xf'),_0x314cfe,_0xc0d2('0x10'));logger[_0xc0d2('0x11')](_0xc0d2('0x12'),_0x314cfe,_0xc0d2('0x10'),JSON['stringify'](_0x4f03cd));if(_0x4f03cd[_0xc0d2('0x13')]){if(_0x4f03cd[_0xc0d2('0x13')]['code']===0x1f4){logger[_0xc0d2('0x13')]('ReportAgentPreview,\x20%s,\x20%s',_0x314cfe,_0x4f03cd[_0xc0d2('0x13')]['message']);return _0x113bb4(_0x4f03cd[_0xc0d2('0x13')][_0xc0d2('0x14')]);}logger[_0xc0d2('0x13')]('ReportAgentPreview,\x20%s,\x20%s',_0x314cfe,_0x4f03cd[_0xc0d2('0x13')][_0xc0d2('0x14')]);return _0x102385(_0x4f03cd[_0xc0d2('0x13')][_0xc0d2('0x14')]);}else{logger['info'](_0xc0d2('0xf'),_0x314cfe,'request\x20sent');_0x102385(_0x4f03cd['result']['message']);}})['catch'](function(_0x1a56f2){logger['error'](_0xc0d2('0xf'),_0x314cfe,_0x1a56f2);_0x113bb4(_0x1a56f2);});});}exports[_0xc0d2('0x15')]=function(_0x3bf74b){var _0x3bdf30=this;return new Promise(function(_0x323d8b,_0x283595){return db['ReportAgentPreview'][_0xc0d2('0x16')](_0x3bf74b[_0xc0d2('0x17')],{'raw':_0x3bf74b[_0xc0d2('0x18')]?_0x3bf74b[_0xc0d2('0x18')][_0xc0d2('0x19')]===undefined?!![]:![]:!![]})[_0xc0d2('0xd')](function(_0x53cf5d){logger[_0xc0d2('0xe')](_0xc0d2('0x15'),_0x3bf74b);logger[_0xc0d2('0x11')](_0xc0d2('0x15'),_0x3bf74b,JSON[_0xc0d2('0x1a')](_0x53cf5d));_0x323d8b(_0x53cf5d);})['catch'](function(_0x1ac7a9){logger[_0xc0d2('0x13')]('CreateReportAgentPreview',_0x1ac7a9['message'],_0x3bf74b);_0x283595(_0x3bdf30['error'](0x1f4,_0x1ac7a9[_0xc0d2('0x14')]));});});};
\ No newline at end of file
+var _0x40a2=['then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ReportAgentPreview','create','options','raw','debug','CreateReportAgentPreview','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x40a2,0xd5));var _0x240a=function(_0x6bca01,_0x490f13){_0x6bca01=_0x6bca01-0x0;var _0x5c7bf9=_0x40a2[_0x6bca01];return _0x5c7bf9;};'use strict';var _=require(_0x240a('0x0'));var util=require('util');var moment=require(_0x240a('0x1'));var BPromise=require(_0x240a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x240a('0x3'));var db=require(_0x240a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x240a('0x5'))(_0x240a('0x6'));var config=require(_0x240a('0x7'));var jayson=require(_0x240a('0x8'));var client=jayson['client'][_0x240a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x337835,_0x29eda8,_0x48bb01){return new BPromise(function(_0x17308c,_0x44eff6){return client[_0x240a('0xa')](_0x337835,_0x48bb01)[_0x240a('0xb')](function(_0x29e195){logger[_0x240a('0xc')](_0x240a('0xd'),_0x29eda8,_0x240a('0xe'));logger['debug'](_0x240a('0xf'),_0x29eda8,_0x240a('0xe'),JSON[_0x240a('0x10')](_0x29e195));if(_0x29e195['error']){if(_0x29e195[_0x240a('0x11')][_0x240a('0x12')]===0x1f4){logger[_0x240a('0x11')](_0x240a('0xd'),_0x29eda8,_0x29e195[_0x240a('0x11')]['message']);return _0x44eff6(_0x29e195[_0x240a('0x11')][_0x240a('0x13')]);}logger[_0x240a('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x29eda8,_0x29e195[_0x240a('0x11')]['message']);return _0x17308c(_0x29e195['error'][_0x240a('0x13')]);}else{logger[_0x240a('0xc')](_0x240a('0xd'),_0x29eda8,_0x240a('0xe'));_0x17308c(_0x29e195[_0x240a('0x14')][_0x240a('0x13')]);}})['catch'](function(_0x147b42){logger[_0x240a('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x29eda8,_0x147b42);_0x44eff6(_0x147b42);});});}exports['CreateReportAgentPreview']=function(_0x5ac2e3){var _0x3d9aeb=this;return new Promise(function(_0x6419e0,_0x5b0e1f){return db[_0x240a('0x15')][_0x240a('0x16')](_0x5ac2e3['body'],{'raw':_0x5ac2e3[_0x240a('0x17')]?_0x5ac2e3['options'][_0x240a('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x284a2b){logger[_0x240a('0xc')]('CreateReportAgentPreview',_0x5ac2e3);logger[_0x240a('0x19')](_0x240a('0x1a'),_0x5ac2e3,JSON[_0x240a('0x10')](_0x284a2b));_0x6419e0(_0x284a2b);})[_0x240a('0x1b')](function(_0x693056){logger[_0x240a('0x11')](_0x240a('0x1a'),_0x693056[_0x240a('0x13')],_0x5ac2e3);_0x5b0e1f(_0x3d9aeb[_0x240a('0x11')](0x1f4,_0x693056[_0x240a('0x13')]));});});};
\ No newline at end of file
index 8b6dddb..f514741 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfce=['updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','/trunks','trunks','campaigns','/fax/accounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','showChatQueues','/fax/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','whatsapp','/sms/queues/:id','showSmsQueues','/agents/:id/notify','agentNotify','exports','multer','path','Router','../../components/auth/service','./rpc.controller','isAuthenticated','voiceChannels','get','/voice/channels/:uniqueid/mixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','/mail/queues','mailQueues','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','put'];(function(_0x1d8791,_0x22d1db){var _0x399770=function(_0x18a779){while(--_0x18a779){_0x1d8791['push'](_0x1d8791['shift']());}};_0x399770(++_0x22d1db);}(_0xbfce,0xcb));var _0xebfc=function(_0x134387,_0x3bff4b){_0x134387=_0x134387-0x0;var _0x34b800=_0xbfce[_0x134387];return _0x34b800;};'use strict';var multer=require(_0xebfc('0x0'));var util=require('util');var path=require(_0xebfc('0x1'));var express=require('express');var router=express[_0xebfc('0x2')]();var auth=require(_0xebfc('0x3'));var controller=require(_0xebfc('0x4'));router['get']('/voice/channels',auth[_0xebfc('0x5')](),controller[_0xebfc('0x6')]);router[_0xebfc('0x7')](_0xebfc('0x8'),auth[_0xebfc('0x5')](),controller['voiceChannelMixMonitor']);router[_0xebfc('0x7')]('/voice/channels/:uniqueid/stopmixmonitor',auth['isAuthenticated'](),controller[_0xebfc('0x9')]);router[_0xebfc('0x7')](_0xebfc('0xa'),auth['isAuthenticated'](),controller[_0xebfc('0xb')]);router[_0xebfc('0x7')](_0xebfc('0xc'),auth[_0xebfc('0x5')](),controller['chatQueues']);router[_0xebfc('0x7')](_0xebfc('0xd'),auth[_0xebfc('0x5')](),controller[_0xebfc('0xe')]);router[_0xebfc('0x7')]('/mail/accounts',auth['isAuthenticated'](),controller[_0xebfc('0xf')]);router[_0xebfc('0x7')](_0xebfc('0x10'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x11')]);router[_0xebfc('0x7')](_0xebfc('0x12'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x13')]);router['get'](_0xebfc('0x14'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x15')]);router[_0xebfc('0x7')](_0xebfc('0x16'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x17')]);router[_0xebfc('0x7')]('/voice/queues/preview/:id',auth[_0xebfc('0x5')](),controller[_0xebfc('0x18')]);router[_0xebfc('0x7')](_0xebfc('0x19'),auth['isAuthenticated'](),controller[_0xebfc('0x1a')]);router[_0xebfc('0x7')](_0xebfc('0x1b'),auth[_0xebfc('0x5')](),controller['voiceQueuesChannel']);router[_0xebfc('0x7')](_0xebfc('0x1c'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x1d')]);router[_0xebfc('0x7')](_0xebfc('0x1e'),auth['isAuthenticated'](),controller[_0xebfc('0x1f')]);router[_0xebfc('0x7')](_0xebfc('0x20'),auth[_0xebfc('0x5')](),controller['showVoiceQueues']);router[_0xebfc('0x21')](_0xebfc('0x20'),auth['isAuthenticated'](),controller[_0xebfc('0x22')]);router[_0xebfc('0x7')](_0xebfc('0x23'),auth['isAuthenticated'](),controller[_0xebfc('0x24')]);router[_0xebfc('0x7')](_0xebfc('0x25'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x26')]);router[_0xebfc('0x7')](_0xebfc('0x27'),auth[_0xebfc('0x5')](),controller['agents']);router['put'](_0xebfc('0x28'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x29')]);router['get'](_0xebfc('0x2a'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x2b')]);router['get'](_0xebfc('0x2c'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x2d')]);router[_0xebfc('0x7')]('/campaigns',auth[_0xebfc('0x5')](),controller[_0xebfc('0x2e')]);router[_0xebfc('0x7')](_0xebfc('0x2f'),auth['isAuthenticated'](),controller['faxAccounts']);router[_0xebfc('0x7')](_0xebfc('0x30'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x31')]);router[_0xebfc('0x7')](_0xebfc('0x32'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x33')]);router['get'](_0xebfc('0x34'),auth[_0xebfc('0x5')](),controller['openchannelQueuesWaitingInteractions']);router[_0xebfc('0x7')](_0xebfc('0x35'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x36')]);router['get'](_0xebfc('0x37'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x38')]);router[_0xebfc('0x7')]('/whatsapp/queues/waitinginteractions',auth[_0xebfc('0x5')](),controller['whatsappQueuesWaitingInteractions']);router[_0xebfc('0x7')](_0xebfc('0x39'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x3a')]);router[_0xebfc('0x3b')](_0xebfc('0x3c'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x3d')](_0xebfc('0x3e')));router['get'](_0xebfc('0x3f'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x40')]);router[_0xebfc('0x3b')](_0xebfc('0x41'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x3d')]('chat'));router['get']('/chat/queues/:id',auth[_0xebfc('0x5')](),controller[_0xebfc('0x42')]);router['post'](_0xebfc('0x43'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x3d')]('fax'));router[_0xebfc('0x7')]('/fax/queues/:id',auth['isAuthenticated'](),controller['showFaxQueues']);router['post']('/openchannel/queues/:id/notify',auth[_0xebfc('0x5')](),controller[_0xebfc('0x3d')](_0xebfc('0x44')));router[_0xebfc('0x7')](_0xebfc('0x45'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x46')]);router[_0xebfc('0x3b')](_0xebfc('0x47'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x3d')](_0xebfc('0x48')));router[_0xebfc('0x3b')]('/whatsapp/queues/:id/notify',auth[_0xebfc('0x5')](),controller[_0xebfc('0x3d')](_0xebfc('0x49')));router[_0xebfc('0x7')](_0xebfc('0x4a'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x4b')]);router[_0xebfc('0x7')]('/whatsapp/queues/:id',auth[_0xebfc('0x5')](),controller['showWhatsappQueues']);router[_0xebfc('0x3b')](_0xebfc('0x4c'),auth[_0xebfc('0x5')](),controller[_0xebfc('0x4d')]);module[_0xebfc('0x4e')]=router;
\ No newline at end of file
+var _0xc126=['Router','./rpc.controller','get','/voice/channels','voiceChannels','voiceChannelMixMonitor','voiceChannelStopMixMonitor','/voice/queues','isAuthenticated','/mail/queues','mailQueues','/mail/accounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','whatsappQueues','/voice/queues/preview/:id','voiceQueuesPreview','voiceQueuesChannels','voiceQueuesChannel','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','agents','/agents/:id/capacity','/telephones','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','showChatQueues','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','/agents/:id/notify','multer','util','path','express'];(function(_0x673722,_0x275d7e){var _0x21249c=function(_0x25b4e7){while(--_0x25b4e7){_0x673722['push'](_0x673722['shift']());}};_0x21249c(++_0x275d7e);}(_0xc126,0x1b2));var _0x6c12=function(_0x23a71a,_0x13a521){_0x23a71a=_0x23a71a-0x0;var _0x2b6ff2=_0xc126[_0x23a71a];return _0x2b6ff2;};'use strict';var multer=require(_0x6c12('0x0'));var util=require(_0x6c12('0x1'));var path=require(_0x6c12('0x2'));var express=require(_0x6c12('0x3'));var router=express[_0x6c12('0x4')]();var auth=require('../../components/auth/service');var controller=require(_0x6c12('0x5'));router[_0x6c12('0x6')](_0x6c12('0x7'),auth['isAuthenticated'](),controller[_0x6c12('0x8')]);router[_0x6c12('0x6')]('/voice/channels/:uniqueid/mixmonitor',auth['isAuthenticated'](),controller[_0x6c12('0x9')]);router[_0x6c12('0x6')]('/voice/channels/:uniqueid/stopmixmonitor',auth['isAuthenticated'](),controller[_0x6c12('0xa')]);router[_0x6c12('0x6')](_0x6c12('0xb'),auth[_0x6c12('0xc')](),controller['voiceQueues']);router['get']('/chat/queues',auth[_0x6c12('0xc')](),controller['chatQueues']);router['get'](_0x6c12('0xd'),auth['isAuthenticated'](),controller[_0x6c12('0xe')]);router[_0x6c12('0x6')](_0x6c12('0xf'),auth[_0x6c12('0xc')](),controller['mailAccounts']);router[_0x6c12('0x6')](_0x6c12('0x10'),auth[_0x6c12('0xc')](),controller[_0x6c12('0x11')]);router[_0x6c12('0x6')](_0x6c12('0x12'),auth['isAuthenticated'](),controller[_0x6c12('0x13')]);router[_0x6c12('0x6')]('/whatsapp/queues',auth[_0x6c12('0xc')](),controller[_0x6c12('0x14')]);router[_0x6c12('0x6')]('/fax/queues',auth[_0x6c12('0xc')](),controller['faxQueues']);router['get'](_0x6c12('0x15'),auth['isAuthenticated'](),controller[_0x6c12('0x16')]);router[_0x6c12('0x6')]('/voice/queues/channels',auth[_0x6c12('0xc')](),controller[_0x6c12('0x17')]);router[_0x6c12('0x6')]('/voice/queues/channels/:uniqueid',auth['isAuthenticated'](),controller[_0x6c12('0x18')]);router[_0x6c12('0x6')]('/voice/queues/channels/:uniqueid/hangup',auth[_0x6c12('0xc')](),controller['voiceQueuesChannelHangup']);router[_0x6c12('0x6')](_0x6c12('0x19'),auth['isAuthenticated'](),controller[_0x6c12('0x1a')]);router[_0x6c12('0x6')](_0x6c12('0x1b'),auth[_0x6c12('0xc')](),controller[_0x6c12('0x1c')]);router[_0x6c12('0x1d')](_0x6c12('0x1b'),auth['isAuthenticated'](),controller[_0x6c12('0x1e')]);router[_0x6c12('0x6')](_0x6c12('0x1f'),auth[_0x6c12('0xc')](),controller[_0x6c12('0x20')]);router[_0x6c12('0x6')](_0x6c12('0x21'),auth['isAuthenticated'](),controller[_0x6c12('0x22')]);router['get']('/agents',auth[_0x6c12('0xc')](),controller[_0x6c12('0x23')]);router['put'](_0x6c12('0x24'),auth[_0x6c12('0xc')](),controller['agentCapacity']);router[_0x6c12('0x6')](_0x6c12('0x25'),auth['isAuthenticated'](),controller['telephones']);router['get']('/trunks',auth[_0x6c12('0xc')](),controller[_0x6c12('0x26')]);router['get'](_0x6c12('0x27'),auth[_0x6c12('0xc')](),controller[_0x6c12('0x28')]);router[_0x6c12('0x6')](_0x6c12('0x29'),auth[_0x6c12('0xc')](),controller[_0x6c12('0x2a')]);router[_0x6c12('0x6')](_0x6c12('0x2b'),auth[_0x6c12('0xc')](),controller[_0x6c12('0x2c')]);router[_0x6c12('0x6')](_0x6c12('0x2d'),auth[_0x6c12('0xc')](),controller['mailQueuesWaitingInteractions']);router[_0x6c12('0x6')](_0x6c12('0x2e'),auth['isAuthenticated'](),controller[_0x6c12('0x2f')]);router[_0x6c12('0x6')](_0x6c12('0x30'),auth[_0x6c12('0xc')](),controller['openchannelQueuesIdWaitingInteractions']);router[_0x6c12('0x6')]('/sms/queues/waitinginteractions',auth[_0x6c12('0xc')](),controller[_0x6c12('0x31')]);router[_0x6c12('0x6')](_0x6c12('0x32'),auth[_0x6c12('0xc')](),controller['whatsappQueuesWaitingInteractions']);router[_0x6c12('0x6')](_0x6c12('0x33'),auth['isAuthenticated'](),controller[_0x6c12('0x34')]);router[_0x6c12('0x35')](_0x6c12('0x36'),auth[_0x6c12('0xc')](),controller[_0x6c12('0x37')]('mail'));router[_0x6c12('0x6')](_0x6c12('0x38'),auth[_0x6c12('0xc')](),controller[_0x6c12('0x39')]);router[_0x6c12('0x35')](_0x6c12('0x3a'),auth[_0x6c12('0xc')](),controller[_0x6c12('0x37')]('chat'));router[_0x6c12('0x6')]('/chat/queues/:id',auth[_0x6c12('0xc')](),controller[_0x6c12('0x3b')]);router['post'](_0x6c12('0x3c'),auth[_0x6c12('0xc')](),controller[_0x6c12('0x37')](_0x6c12('0x3d')));router[_0x6c12('0x6')](_0x6c12('0x3e'),auth[_0x6c12('0xc')](),controller[_0x6c12('0x3f')]);router['post'](_0x6c12('0x40'),auth[_0x6c12('0xc')](),controller['queueNotify'](_0x6c12('0x41')));router['get']('/openchannel/queues/:id',auth[_0x6c12('0xc')](),controller['showOpenchannelQueues']);router[_0x6c12('0x35')]('/sms/queues/:id/notify',auth['isAuthenticated'](),controller[_0x6c12('0x37')](_0x6c12('0x42')));router[_0x6c12('0x35')](_0x6c12('0x43'),auth[_0x6c12('0xc')](),controller[_0x6c12('0x37')](_0x6c12('0x44')));router[_0x6c12('0x6')](_0x6c12('0x45'),auth[_0x6c12('0xc')](),controller[_0x6c12('0x46')]);router[_0x6c12('0x6')](_0x6c12('0x47'),auth['isAuthenticated'](),controller['showWhatsappQueues']);router[_0x6c12('0x35')](_0x6c12('0x48'),auth['isAuthenticated'](),controller['agentNotify']);module['exports']=router;
\ No newline at end of file
index e867b32..5206d31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0e=['merge','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','agents','Agents','body','interaction','user','hasOwnProperty','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','MemberReport','findOrCreate','interface','SIP/%s','AgentCapacity','capacity','telephones','Telephones','trunks','Trunks','campaigns','showChatQueues','ChatQueues','mailQueues','showMailQueues','openchannelQueues','OpenchannelQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','value','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Account','findOne','messageId','Interaction','update','MessageId','InteractionId','From','QueueId','TransferReport','create','Start','queue','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','Website','agent','\x20Message\x20not\x20found','bluebird','moment','lodash','util','../../mysqldb','../../config/logger','api','jayson/promise','client','http','request','error','message','result','catch','json','stack','name','send','isNil','rows','voiceChannels','query','then','VoiceChannelMixMonitor'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x2c4ca8,_0x5f156c){_0x2c4ca8=_0x2c4ca8-0x0;var _0x4974d5=_0x8d0e[_0x2c4ca8];return _0x4974d5;};'use strict';var BPromise=require(_0xe8d0('0x0'));var moment=require(_0xe8d0('0x1'));var _=require(_0xe8d0('0x2'));var util=require(_0xe8d0('0x3'));var db=require(_0xe8d0('0x4'))['db'];var logger=require(_0xe8d0('0x5'))(_0xe8d0('0x6'));var jayson=require(_0xe8d0('0x7'));var amiClient=jayson[_0xe8d0('0x8')]['http']({'port':0x232a});var mailClient=jayson[_0xe8d0('0x8')]['http']({'port':0x232b});var routingClient=jayson['client'][_0xe8d0('0x9')]({'port':0x232c});function respondWithRpcPromise(_0x92483d,_0x469d37,_0xcc03d0){return new BPromise(function(_0x2b6dce,_0x13aa63){var _0x1b353a=_0xcc03d0?_0xcc03d0:amiClient;return _0x1b353a[_0xe8d0('0xa')](_0x92483d,_0x469d37)['then'](function(_0x10e56c){if(_0x10e56c[_0xe8d0('0xb')]){if(_0x10e56c[_0xe8d0('0xb')]['code']===0x1f4){return _0x13aa63(_0x10e56c['error'][_0xe8d0('0xc')]);}return _0x2b6dce(_0x10e56c[_0xe8d0('0xb')][_0xe8d0('0xc')]);}else{_0x2b6dce(_0x10e56c[_0xe8d0('0xd')]);}})[_0xe8d0('0xe')](function(_0x41de69){_0x13aa63(_0x41de69);});});}function respondWithResult(_0x5934b2,_0x38fac0){_0x38fac0=_0x38fac0||0xc8;return function(_0x15b9e5){if(_0x15b9e5){return _0x5934b2['status'](_0x38fac0)[_0xe8d0('0xf')](_0x15b9e5);}return _0x5934b2['sendStatus'](0x194);};}function handleError(_0x59b4b7,_0x90a1ea){_0x90a1ea=_0x90a1ea||0x1f4;return function(_0x2aa906){logger[_0xe8d0('0xb')](_0x2aa906[_0xe8d0('0x10')]);if(_0x2aa906[_0xe8d0('0x11')]){delete _0x2aa906[_0xe8d0('0x11')];}_0x59b4b7['status'](_0x90a1ea)[_0xe8d0('0x12')](_0x2aa906);};}function findById(_0x49554d){return function(_0x6d932b){if(!_[_0xe8d0('0x13')](_0x49554d)&&!_[_0xe8d0('0x13')](_0x6d932b)&&!_['isNil'](_0x6d932b['rows'])){return _['find'](_0x6d932b[_0xe8d0('0x14')],function(_0x384854){return _0x384854['id']==_0x49554d;});}return null;};}exports[_0xe8d0('0x15')]=function(_0x44bbe4,_0x83177b){return respondWithRpcPromise('VoiceChannels',_0x44bbe4[_0xe8d0('0x16')])[_0xe8d0('0x17')](respondWithResult(_0x83177b,null))['catch'](handleError(_0x83177b,null));};exports['voiceChannelMixMonitor']=function(_0x554402,_0x384a60){return respondWithRpcPromise(_0xe8d0('0x18'),_[_0xe8d0('0x19')](_0x554402[_0xe8d0('0x16')],_0x554402[_0xe8d0('0x1a')]))[_0xe8d0('0x17')](respondWithResult(_0x384a60,null))[_0xe8d0('0xe')](handleError(_0x384a60,null));};exports[_0xe8d0('0x1b')]=function(_0x32e39a,_0x5ab4e7){return respondWithRpcPromise(_0xe8d0('0x1c'),_[_0xe8d0('0x19')](_0x32e39a['query'],_0x32e39a[_0xe8d0('0x1a')]))[_0xe8d0('0x17')](respondWithResult(_0x5ab4e7,null))[_0xe8d0('0xe')](handleError(_0x5ab4e7,null));};exports[_0xe8d0('0x1d')]=function(_0x146783,_0x149dfd){return respondWithRpcPromise(_0xe8d0('0x1e'),_0x146783[_0xe8d0('0x16')])[_0xe8d0('0x17')](respondWithResult(_0x149dfd,null))[_0xe8d0('0xe')](handleError(_0x149dfd,null));};exports[_0xe8d0('0x1f')]=function(_0x539548,_0x24982c){return respondWithRpcPromise(_0xe8d0('0x1e'),_0x539548[_0xe8d0('0x16')])['then'](findById(_0x539548[_0xe8d0('0x1a')]['id']))[_0xe8d0('0x17')](respondWithResult(_0x24982c,null))['catch'](handleError(_0x24982c,null));};exports[_0xe8d0('0x20')]=function(_0x3ffcb7,_0x11fcf2){return respondWithRpcPromise(_0xe8d0('0x21'),_[_0xe8d0('0x19')](_0x3ffcb7['body'],_0x3ffcb7[_0xe8d0('0x1a')]))['then'](respondWithResult(_0x11fcf2,null))['catch'](handleError(_0x11fcf2,null));};exports['voiceQueuesPreview']=function(_0x547a2b,_0x13cd4c){return respondWithRpcPromise(_0xe8d0('0x22'),_['merge'](_0x547a2b['query'],_0x547a2b[_0xe8d0('0x1a')]))['then'](respondWithResult(_0x13cd4c,null))[_0xe8d0('0xe')](handleError(_0x13cd4c,null));};exports[_0xe8d0('0x23')]=function(_0x327004,_0x1b2b0a){return respondWithRpcPromise(_0xe8d0('0x24'),_0x327004['query'])[_0xe8d0('0x17')](respondWithResult(_0x1b2b0a,null))[_0xe8d0('0xe')](handleError(_0x1b2b0a,null));};exports[_0xe8d0('0x25')]=function(_0x145ddb,_0x587819){return respondWithRpcPromise(_0xe8d0('0x26'),_[_0xe8d0('0x19')](_0x145ddb['query'],_0x145ddb[_0xe8d0('0x1a')]))['then'](respondWithResult(_0x587819,null))[_0xe8d0('0xe')](handleError(_0x587819,null));};exports['voiceQueuesChannelHangup']=function(_0x197e01,_0x531835){return respondWithRpcPromise(_0xe8d0('0x27'),_[_0xe8d0('0x19')](_0x197e01[_0xe8d0('0x16')],_0x197e01[_0xe8d0('0x1a')]))['then'](respondWithResult(_0x531835,null))[_0xe8d0('0xe')](handleError(_0x531835,null));};exports[_0xe8d0('0x28')]=function(_0x20eec5,_0x516243){return respondWithRpcPromise(_0xe8d0('0x29'),_[_0xe8d0('0x19')](_0x20eec5[_0xe8d0('0x16')],_0x20eec5[_0xe8d0('0x1a')]))[_0xe8d0('0x17')](respondWithResult(_0x516243,null))['catch'](handleError(_0x516243,null));};exports[_0xe8d0('0x2a')]=function(_0x1828c5,_0x10970d){return respondWithRpcPromise(_0xe8d0('0x2b'),_0x1828c5[_0xe8d0('0x16')])[_0xe8d0('0x17')](respondWithResult(_0x10970d,null))[_0xe8d0('0xe')](handleError(_0x10970d,null));};exports[_0xe8d0('0x2c')]=function(_0x4edb3d,_0x5dff14){return respondWithRpcPromise(_0xe8d0('0x2d'),_0x4edb3d[_0xe8d0('0x16')])[_0xe8d0('0x17')](respondWithResult(_0x5dff14,null))[_0xe8d0('0xe')](handleError(_0x5dff14,null));};exports[_0xe8d0('0x2e')]=function(_0x585d27,_0x2e4362){var _0x4bd7a2;return respondWithRpcPromise(_0xe8d0('0x2f'),_0x585d27[_0xe8d0('0x16')])[_0xe8d0('0x17')](function(_0x48fa07){_0x4bd7a2=_0x48fa07;return respondWithRpcPromise(_0xe8d0('0x2f'),_0x585d27[_0xe8d0('0x16')],routingClient);})[_0xe8d0('0x17')](function(_0x230a90){return _[_0xe8d0('0x19')]({},_0x230a90,_0x4bd7a2);})['then'](respondWithResult(_0x2e4362,null))['catch'](handleError(_0x2e4362,null));};exports['agentCapacity']=function(_0x4cf0da,_0x14ffb6){if(_0x4cf0da['body']&&_0x4cf0da[_0xe8d0('0x30')][_0xe8d0('0x31')]&&_0x4cf0da[_0xe8d0('0x32')]&&_0x4cf0da[_0xe8d0('0x32')][_0xe8d0('0x11')]){for(var _0x1156da in _0x4cf0da[_0xe8d0('0x30')][_0xe8d0('0x31')]){if(_0x4cf0da['body'][_0xe8d0('0x31')][_0xe8d0('0x33')](_0x1156da)){db['MemberReport']['findAll']({'where':{'channel':_0x1156da,'membername':_0x4cf0da[_0xe8d0('0x32')][_0xe8d0('0x11')],'type':_0xe8d0('0x34'),'exitAt':null,'uniqueid':_0x4cf0da['body'][_0xe8d0('0x31')][_0x1156da]&&_0x4cf0da[_0xe8d0('0x30')]['interaction'][_0x1156da][_0xe8d0('0x35')]?{'$notIn':_0x4cf0da[_0xe8d0('0x30')]['interaction'][_0x1156da]}:{'$ne':null}}})[_0xe8d0('0x17')](function(_0x23e250){var _0x1b7866=moment()[_0xe8d0('0x36')](_0xe8d0('0x37'));for(var _0x2a6760=0x0,_0x11339d=_0x23e250[_0xe8d0('0x35')];_0x2a6760<_0x11339d;_0x2a6760+=0x1){_0x23e250[_0x2a6760]['updateAttributes']({'exitAt':_0x1b7866});}});for(var _0x31a370=0x0;_0x31a370<_0x4cf0da[_0xe8d0('0x30')][_0xe8d0('0x31')][_0x1156da][_0xe8d0('0x35')];_0x31a370+=0x1){db[_0xe8d0('0x38')][_0xe8d0('0x39')]({'where':{'channel':_0x1156da,'membername':_0x4cf0da[_0xe8d0('0x32')][_0xe8d0('0x11')],'type':_0xe8d0('0x34'),'uniqueid':_0x4cf0da[_0xe8d0('0x30')][_0xe8d0('0x31')][_0x1156da][_0x31a370],'exitAt':null},'defaults':{'channel':_0x1156da,'membername':_0x4cf0da[_0xe8d0('0x32')]['name'],'interface':_[_0xe8d0('0x13')](_0x4cf0da[_0xe8d0('0x32')][_0xe8d0('0x3a')])?util[_0xe8d0('0x36')](_0xe8d0('0x3b'),_0x4cf0da[_0xe8d0('0x32')][_0xe8d0('0x11')]):_0x4cf0da['user'][_0xe8d0('0x3a')],'type':_0xe8d0('0x34'),'enterAt':moment()[_0xe8d0('0x36')](_0xe8d0('0x37')),'role':'agent','internal':_0x4cf0da[_0xe8d0('0x32')]['internal'],'uniqueid':_0x4cf0da[_0xe8d0('0x30')][_0xe8d0('0x31')][_0x1156da][_0x31a370]}});}}}}return respondWithRpcPromise(_0xe8d0('0x3c'),{'id':_0x4cf0da[_0xe8d0('0x1a')]['id'],'capacity':_0x4cf0da[_0xe8d0('0x30')][_0xe8d0('0x3d')]},routingClient)[_0xe8d0('0x17')](respondWithResult(_0x14ffb6,null))['catch'](handleError(_0x14ffb6,null));};exports[_0xe8d0('0x3e')]=function(_0x55f93d,_0x581a34){return respondWithRpcPromise(_0xe8d0('0x3f'),_0x55f93d['query'])[_0xe8d0('0x17')](respondWithResult(_0x581a34,null))['catch'](handleError(_0x581a34,null));};exports[_0xe8d0('0x40')]=function(_0x28494c,_0x13713c){return respondWithRpcPromise(_0xe8d0('0x41'),_0x28494c['query'])[_0xe8d0('0x17')](respondWithResult(_0x13713c,null))[_0xe8d0('0xe')](handleError(_0x13713c,null));};exports[_0xe8d0('0x42')]=function(_0x2e3f1d,_0x18cc14){return respondWithRpcPromise('Campaigns',_0x2e3f1d[_0xe8d0('0x16')])[_0xe8d0('0x17')](respondWithResult(_0x18cc14,null))[_0xe8d0('0xe')](handleError(_0x18cc14,null));};exports['chatQueues']=function(_0x2f4d43,_0x571c4e){return respondWithRpcPromise('ChatQueues',_0x2f4d43[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x571c4e,null))['catch'](handleError(_0x571c4e,null));};exports[_0xe8d0('0x43')]=function(_0x3a8074,_0x47893d){return respondWithRpcPromise(_0xe8d0('0x44'),_0x3a8074[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](findById(_0x3a8074[_0xe8d0('0x1a')]['id']))['then'](respondWithResult(_0x47893d,null))[_0xe8d0('0xe')](handleError(_0x47893d,null));};exports[_0xe8d0('0x45')]=function(_0x25e5ab,_0x76316a){return respondWithRpcPromise('MailQueues',_0x25e5ab[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x76316a,null))[_0xe8d0('0xe')](handleError(_0x76316a,null));};exports[_0xe8d0('0x46')]=function(_0x1a74d0,_0x29667c){return respondWithRpcPromise('MailQueues',_0x1a74d0['query'],routingClient)[_0xe8d0('0x17')](findById(_0x1a74d0['params']['id']))[_0xe8d0('0x17')](respondWithResult(_0x29667c,null))[_0xe8d0('0xe')](handleError(_0x29667c,null));};exports['mailAccounts']=function(_0x5ac1ae,_0x995163){return respondWithRpcPromise('MailAccounts',_0x5ac1ae[_0xe8d0('0x16')],mailClient)['then'](respondWithResult(_0x995163,null))[_0xe8d0('0xe')](handleError(_0x995163,null));};exports[_0xe8d0('0x47')]=function(_0x13b9f0,_0x4e2abc){return respondWithRpcPromise(_0xe8d0('0x48'),_0x13b9f0[_0xe8d0('0x16')],routingClient)['then'](respondWithResult(_0x4e2abc,null))[_0xe8d0('0xe')](handleError(_0x4e2abc,null));};exports['showOpenchannelQueues']=function(_0x3d0908,_0x4ff583){return respondWithRpcPromise(_0xe8d0('0x48'),_0x3d0908[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](findById(_0x3d0908[_0xe8d0('0x1a')]['id']))[_0xe8d0('0x17')](respondWithResult(_0x4ff583,null))['catch'](handleError(_0x4ff583,null));};exports['smsQueues']=function(_0xd7d433,_0x55a2df){return respondWithRpcPromise(_0xe8d0('0x49'),_0xd7d433[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x55a2df,null))[_0xe8d0('0xe')](handleError(_0x55a2df,null));};exports[_0xe8d0('0x4a')]=function(_0x1e806b,_0x177485){return respondWithRpcPromise(_0xe8d0('0x49'),_0x1e806b[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](findById(_0x1e806b[_0xe8d0('0x1a')]['id']))[_0xe8d0('0x17')](respondWithResult(_0x177485,null))[_0xe8d0('0xe')](handleError(_0x177485,null));};exports[_0xe8d0('0x4b')]=function(_0x22992f,_0x4a68d5){return respondWithRpcPromise(_0xe8d0('0x4c'),_0x22992f[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x4a68d5,null))[_0xe8d0('0xe')](handleError(_0x4a68d5,null));};exports[_0xe8d0('0x4d')]=function(_0x4848d4,_0x2eeb92){return respondWithRpcPromise(_0xe8d0('0x4c'),_0x4848d4[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](findById(_0x4848d4[_0xe8d0('0x1a')]['id']))[_0xe8d0('0x17')](respondWithResult(_0x2eeb92,null))[_0xe8d0('0xe')](handleError(_0x2eeb92,null));};exports[_0xe8d0('0x4e')]=function(_0x40cb5c,_0x24be86){return respondWithRpcPromise(_0xe8d0('0x4f'),_0x40cb5c[_0xe8d0('0x16')],routingClient)['then'](respondWithResult(_0x24be86,null))['catch'](handleError(_0x24be86,null));};exports[_0xe8d0('0x50')]=function(_0x54c04f,_0x169047){return respondWithRpcPromise(_0xe8d0('0x4f'),_0x54c04f['query'],routingClient)[_0xe8d0('0x17')](findById(_0x54c04f[_0xe8d0('0x1a')]['id']))[_0xe8d0('0x17')](respondWithResult(_0x169047,null))[_0xe8d0('0xe')](handleError(_0x169047,null));};exports[_0xe8d0('0x51')]=function(_0x1b5df8,_0x473e0b){return respondWithRpcPromise(_0xe8d0('0x52'),_0x1b5df8[_0xe8d0('0x16')])[_0xe8d0('0x17')](respondWithResult(_0x473e0b,null))[_0xe8d0('0xe')](handleError(_0x473e0b,null));};exports[_0xe8d0('0x53')]=function(_0xa0c61a,_0x2147d5){return respondWithRpcPromise(_0xe8d0('0x54'),_0xa0c61a[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x2147d5,null))[_0xe8d0('0xe')](handleError(_0x2147d5,null));};exports[_0xe8d0('0x55')]=function(_0x500fb0,_0x30ed66){return respondWithRpcPromise(_0xe8d0('0x56'),_0x500fb0[_0xe8d0('0x16')],routingClient)['then'](respondWithResult(_0x30ed66,null))[_0xe8d0('0xe')](handleError(_0x30ed66,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x31e6df,_0x1c1794){return respondWithRpcPromise(_0xe8d0('0x57'),_0x31e6df['query'],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x1c1794,null))[_0xe8d0('0xe')](handleError(_0x1c1794,null));};exports[_0xe8d0('0x58')]=function(_0x207680,_0x939184){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x207680[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](function(_0x23ba49){if(_0x207680[_0xe8d0('0x16')][_0xe8d0('0x59')]!==undefined){var _0x385a73=_(_0x23ba49[_0xe8d0('0x14')])[_0xe8d0('0x5a')]([_0x207680['query'][_0xe8d0('0x59')],_0x207680[_0xe8d0('0x1a')]['id']])[_0xe8d0('0x5b')](_0xe8d0('0x5c'))['uniq']()[_0xe8d0('0x5d')]();return _0x23ba49[_0xe8d0('0x14')][_0xe8d0('0x5a')](function(_0x575730){return _0x385a73[_0xe8d0('0x5e')](_0x575730['queue_id'])>-0x1;});}else{return _0x23ba49[_0xe8d0('0x14')]['filter'](function(_0x25bc77){return _0x25bc77[_0xe8d0('0x5c')]===parseInt(_0x207680[_0xe8d0('0x1a')]['id']);});}})[_0xe8d0('0x17')](respondWithResult(_0x939184,null))[_0xe8d0('0xe')](handleError(_0x939184,null));};exports[_0xe8d0('0x5f')]=function(_0x17fbdc,_0x3f5c69){return respondWithRpcPromise(_0xe8d0('0x60'),_0x17fbdc[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x3f5c69,null))[_0xe8d0('0xe')](handleError(_0x3f5c69,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x20e4ff,_0x1fa61e){return respondWithRpcPromise(_0xe8d0('0x61'),_0x20e4ff[_0xe8d0('0x16')],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x1fa61e,null))[_0xe8d0('0xe')](handleError(_0x1fa61e,null));};exports[_0xe8d0('0x62')]=function(_0x605b5f,_0x2f9702){return respondWithRpcPromise(_0xe8d0('0x63'),_0x605b5f['query'],routingClient)[_0xe8d0('0x17')](respondWithResult(_0x2f9702,null))[_0xe8d0('0xe')](handleError(_0x2f9702,null));};exports[_0xe8d0('0x64')]=function(_0xebc89e){return function(_0x255e4b,_0x550fe6){var _0x4c4ff0,_0xca752a;var _0x5c8c7d=_[_0xe8d0('0x65')](_0xebc89e);var _0x16098b=_0xebc89e===_0xe8d0('0x66')?'Website':_0xe8d0('0x67');return db[_0x5c8c7d+'Queue'][_0xe8d0('0x68')]({'raw':!![],'where':{'id':_0x255e4b[_0xe8d0('0x1a')]['id']}})[_0xe8d0('0x17')](function(_0x1a04a6){if(_[_0xe8d0('0x13')](_0x1a04a6)){throw new Error(_0x5c8c7d+'\x20Queue\x20not\x20found');}_0x4c4ff0=_0x1a04a6;return db[_0x5c8c7d+'Message'][_0xe8d0('0x68')]({'where':{'id':_0x255e4b[_0xe8d0('0x30')][_0xe8d0('0x69')]},'include':[{'model':db[_0x5c8c7d+_0xe8d0('0x6a')],'as':_0xe8d0('0x6a')},{'model':db[_0x5c8c7d+_0x16098b],'as':_0xe8d0('0x67')}]});})[_0xe8d0('0x17')](function(_0x1ff1cc){if(_[_0xe8d0('0x13')](_0x1ff1cc)){throw new Error(_0x5c8c7d+'\x20Message\x20not\x20found');}_0xca752a=_0x1ff1cc;return _0x1ff1cc[_0xe8d0('0x6b')]({'read':0x0,'readAt':null,'UserId':null});})[_0xe8d0('0x17')](function(){var _0x142db4={'uniqueid':_0xebc89e+'.'+_0xca752a['id']+'.'+_0xca752a[_0xe8d0('0x6a')]['id'],'FromUserId':_0x255e4b['user']['id'],'type':'queue'};_0x142db4[_0x5c8c7d+_0xe8d0('0x6c')]=_0xca752a['id'];_0x142db4[_0x5c8c7d+_0xe8d0('0x6d')]=_0xca752a[_0xe8d0('0x6a')]['id'];_0x142db4[_0xe8d0('0x6e')+_0x5c8c7d+_0x16098b+'Id']=_0xca752a[_0xe8d0('0x67')]['id'];_0x142db4['To'+_0x5c8c7d+_0xe8d0('0x6f')]=_0x4c4ff0['id'];return db[_0x5c8c7d+_0xe8d0('0x70')][_0xe8d0('0x71')](_0x142db4);})[_0xe8d0('0x17')](function(){return respondWithRpcPromise(_0xe8d0('0x72'),{'channel':_0xebc89e,'interaction':_0xca752a['Interaction'],'message':_0xca752a,'account':_0xca752a[_0xe8d0('0x67')],'applications':[{'id':0x0,'priority':0x1,'app':_0xe8d0('0x73'),'appdata':_0x4c4ff0[_0xe8d0('0x11')]+','+(_0xca752a[_0xe8d0('0x67')][_0xe8d0('0x74')]||0x12c),'interval':_0xe8d0('0x75')}]},routingClient);})[_0xe8d0('0x17')](respondWithResult(_0x550fe6,null))[_0xe8d0('0xe')](handleError(_0x550fe6,null));};};exports[_0xe8d0('0x76')]=function(_0x47bdc2,_0x52aece){var _0x2e11fc,_0x38e83f;if(_['isNil'](_0x47bdc2[_0xe8d0('0x30')][_0xe8d0('0x77')])){throw new Error(_0xe8d0('0x78'));}var _0x499efb=_0x47bdc2[_0xe8d0('0x30')][_0xe8d0('0x77')];var _0x233a5a=_[_0xe8d0('0x65')](_0x499efb);var _0x55588a=_0x499efb==='chat'?_0xe8d0('0x79'):_0xe8d0('0x67');return db['User']['findOne']({'raw':!![],'where':{'id':_0x47bdc2[_0xe8d0('0x1a')]['id'],'role':_0xe8d0('0x7a')}})[_0xe8d0('0x17')](function(_0x5eaf13){if(_[_0xe8d0('0x13')](_0x5eaf13)){throw new Error('Agent\x20not\x20found');}_0x2e11fc=_0x5eaf13;return db[_0x233a5a+'Message'][_0xe8d0('0x68')]({'where':{'id':_0x47bdc2[_0xe8d0('0x30')][_0xe8d0('0x69')]},'include':[{'model':db[_0x233a5a+_0xe8d0('0x6a')],'as':_0xe8d0('0x6a')},{'model':db[_0x233a5a+_0x55588a],'as':'Account'}]});})[_0xe8d0('0x17')](function(_0x455614){if(_['isNil'](_0x455614)){throw new Error(_0x233a5a+_0xe8d0('0x7b'));}_0x38e83f=_0x455614;return _0x455614[_0xe8d0('0x6b')]({'read':0x0,'readAt':null,'UserId':null});})[_0xe8d0('0x17')](function(){var _0x3e18af={'uniqueid':_0x499efb+'.'+_0x38e83f['id']+'.'+_0x38e83f['Interaction']['id'],'FromUserId':_0x47bdc2[_0xe8d0('0x32')]['id'],'type':_0xe8d0('0x73'),'ToUserId':_0x2e11fc['id']};_0x3e18af[_0x233a5a+_0xe8d0('0x6c')]=_0x38e83f['id'];_0x3e18af[_0x233a5a+_0xe8d0('0x6d')]=_0x38e83f[_0xe8d0('0x6a')]['id'];_0x3e18af[_0xe8d0('0x6e')+_0x233a5a+_0x55588a+'Id']=_0x38e83f[_0xe8d0('0x67')]['id'];return db[_0x233a5a+_0xe8d0('0x70')]['create'](_0x3e18af);})[_0xe8d0('0x17')](function(){return respondWithRpcPromise(_0xe8d0('0x72'),{'channel':_0x499efb,'interaction':_0x38e83f['Interaction'],'message':_0x38e83f,'account':_0x38e83f['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x2e11fc['name']+','+(_0x38e83f[_0xe8d0('0x67')]['agentTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xe8d0('0x17')](respondWithResult(_0x52aece,null))['catch'](handleError(_0x52aece,null));};
\ No newline at end of file
+var _0xf2ca=['voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','VoiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','OutboundChannels','agents','Agents','agentCapacity','body','user','interaction','hasOwnProperty','findAll','INTERACTION','length','findOrCreate','interface','format','YYYY-MM-DD\x20HH:mm:ss','agent','internal','AgentCapacity','capacity','Telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','showMailQueues','MailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','WhatsappQueues','faxQueues','showFaxQueues','FaxQueues','faxAccounts','FaxAccounts','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','filter','map','uniq','value','indexOf','queue_id','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','findOne','\x20Queue\x20not\x20found','messageId','Interaction','\x20Message\x20not\x20found','queue','MessageId','InteractionId','From','QueueId','*,*,*,*','agentNotify','channel','User','Agent\x20not\x20found','Message','TransferReport','create','Start','bluebird','moment','lodash','../../mysqldb','../../config/logger','api','jayson/promise','client','http','then','error','code','message','result','catch','status','json','sendStatus','stack','name','send','isNil','find','rows','VoiceChannels','query','VoiceChannelMixMonitor','merge','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','params'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x41382c,_0xc3ffd1){_0x41382c=_0x41382c-0x0;var _0x4da35b=_0xf2ca[_0x41382c];return _0x4da35b;};'use strict';var BPromise=require(_0xaf2c('0x0'));var moment=require(_0xaf2c('0x1'));var _=require(_0xaf2c('0x2'));var util=require('util');var db=require(_0xaf2c('0x3'))['db'];var logger=require(_0xaf2c('0x4'))(_0xaf2c('0x5'));var jayson=require(_0xaf2c('0x6'));var amiClient=jayson[_0xaf2c('0x7')][_0xaf2c('0x8')]({'port':0x232a});var mailClient=jayson['client'][_0xaf2c('0x8')]({'port':0x232b});var routingClient=jayson[_0xaf2c('0x7')][_0xaf2c('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x1f9531,_0x58351f,_0x37fedd){return new BPromise(function(_0x3c0421,_0x4a7397){var _0x2a011d=_0x37fedd?_0x37fedd:amiClient;return _0x2a011d['request'](_0x1f9531,_0x58351f)[_0xaf2c('0x9')](function(_0x4a0064){if(_0x4a0064[_0xaf2c('0xa')]){if(_0x4a0064[_0xaf2c('0xa')][_0xaf2c('0xb')]===0x1f4){return _0x4a7397(_0x4a0064[_0xaf2c('0xa')]['message']);}return _0x3c0421(_0x4a0064['error'][_0xaf2c('0xc')]);}else{_0x3c0421(_0x4a0064[_0xaf2c('0xd')]);}})[_0xaf2c('0xe')](function(_0xd56a5d){_0x4a7397(_0xd56a5d);});});}function respondWithResult(_0x285dac,_0x59a59b){_0x59a59b=_0x59a59b||0xc8;return function(_0x590126){if(_0x590126){return _0x285dac[_0xaf2c('0xf')](_0x59a59b)[_0xaf2c('0x10')](_0x590126);}return _0x285dac[_0xaf2c('0x11')](0x194);};}function handleError(_0x18a8a5,_0x293ca6){_0x293ca6=_0x293ca6||0x1f4;return function(_0x152c73){logger[_0xaf2c('0xa')](_0x152c73[_0xaf2c('0x12')]);if(_0x152c73[_0xaf2c('0x13')]){delete _0x152c73[_0xaf2c('0x13')];}_0x18a8a5[_0xaf2c('0xf')](_0x293ca6)[_0xaf2c('0x14')](_0x152c73);};}function findById(_0x26bf7b){return function(_0x3432e4){if(!_[_0xaf2c('0x15')](_0x26bf7b)&&!_['isNil'](_0x3432e4)&&!_[_0xaf2c('0x15')](_0x3432e4['rows'])){return _[_0xaf2c('0x16')](_0x3432e4[_0xaf2c('0x17')],function(_0x1d544a){return _0x1d544a['id']==_0x26bf7b;});}return null;};}exports['voiceChannels']=function(_0x28ae7b,_0x297bcd){return respondWithRpcPromise(_0xaf2c('0x18'),_0x28ae7b[_0xaf2c('0x19')])[_0xaf2c('0x9')](respondWithResult(_0x297bcd,null))[_0xaf2c('0xe')](handleError(_0x297bcd,null));};exports['voiceChannelMixMonitor']=function(_0x35e712,_0x164bcb){return respondWithRpcPromise(_0xaf2c('0x1a'),_[_0xaf2c('0x1b')](_0x35e712[_0xaf2c('0x19')],_0x35e712['params']))[_0xaf2c('0x9')](respondWithResult(_0x164bcb,null))[_0xaf2c('0xe')](handleError(_0x164bcb,null));};exports[_0xaf2c('0x1c')]=function(_0x4be6ed,_0x59b113){return respondWithRpcPromise(_0xaf2c('0x1d'),_[_0xaf2c('0x1b')](_0x4be6ed[_0xaf2c('0x19')],_0x4be6ed[_0xaf2c('0x1e')]))['then'](respondWithResult(_0x59b113,null))[_0xaf2c('0xe')](handleError(_0x59b113,null));};exports[_0xaf2c('0x1f')]=function(_0x3a0145,_0x3c1ae6){return respondWithRpcPromise(_0xaf2c('0x20'),_0x3a0145[_0xaf2c('0x19')])[_0xaf2c('0x9')](respondWithResult(_0x3c1ae6,null))['catch'](handleError(_0x3c1ae6,null));};exports[_0xaf2c('0x21')]=function(_0x2051be,_0x36f37c){return respondWithRpcPromise(_0xaf2c('0x20'),_0x2051be['query'])[_0xaf2c('0x9')](findById(_0x2051be['params']['id']))[_0xaf2c('0x9')](respondWithResult(_0x36f37c,null))[_0xaf2c('0xe')](handleError(_0x36f37c,null));};exports[_0xaf2c('0x22')]=function(_0x5d685a,_0x2747bb){return respondWithRpcPromise(_0xaf2c('0x23'),_[_0xaf2c('0x1b')](_0x5d685a['body'],_0x5d685a[_0xaf2c('0x1e')]))[_0xaf2c('0x9')](respondWithResult(_0x2747bb,null))[_0xaf2c('0xe')](handleError(_0x2747bb,null));};exports[_0xaf2c('0x24')]=function(_0x59d858,_0x3da072){return respondWithRpcPromise(_0xaf2c('0x25'),_[_0xaf2c('0x1b')](_0x59d858['query'],_0x59d858['params']))[_0xaf2c('0x9')](respondWithResult(_0x3da072,null))['catch'](handleError(_0x3da072,null));};exports[_0xaf2c('0x26')]=function(_0x5e7247,_0x337cea){return respondWithRpcPromise(_0xaf2c('0x27'),_0x5e7247['query'])[_0xaf2c('0x9')](respondWithResult(_0x337cea,null))[_0xaf2c('0xe')](handleError(_0x337cea,null));};exports['voiceQueuesChannel']=function(_0x13ced2,_0xbec302){return respondWithRpcPromise(_0xaf2c('0x28'),_[_0xaf2c('0x1b')](_0x13ced2[_0xaf2c('0x19')],_0x13ced2[_0xaf2c('0x1e')]))['then'](respondWithResult(_0xbec302,null))[_0xaf2c('0xe')](handleError(_0xbec302,null));};exports['voiceQueuesChannelHangup']=function(_0x321f7c,_0x514bff){return respondWithRpcPromise(_0xaf2c('0x29'),_['merge'](_0x321f7c[_0xaf2c('0x19')],_0x321f7c['params']))[_0xaf2c('0x9')](respondWithResult(_0x514bff,null))['catch'](handleError(_0x514bff,null));};exports[_0xaf2c('0x2a')]=function(_0x356402,_0x1a6929){return respondWithRpcPromise(_0xaf2c('0x2b'),_[_0xaf2c('0x1b')](_0x356402['query'],_0x356402['params']))[_0xaf2c('0x9')](respondWithResult(_0x1a6929,null))[_0xaf2c('0xe')](handleError(_0x1a6929,null));};exports[_0xaf2c('0x2c')]=function(_0xa44813,_0x4eeecf){return respondWithRpcPromise(_0xaf2c('0x2d'),_0xa44813['query'])[_0xaf2c('0x9')](respondWithResult(_0x4eeecf,null))[_0xaf2c('0xe')](handleError(_0x4eeecf,null));};exports['outboundChannels']=function(_0x36081a,_0x24668d){return respondWithRpcPromise(_0xaf2c('0x2e'),_0x36081a[_0xaf2c('0x19')])[_0xaf2c('0x9')](respondWithResult(_0x24668d,null))[_0xaf2c('0xe')](handleError(_0x24668d,null));};exports[_0xaf2c('0x2f')]=function(_0x310d3b,_0x296ca8){var _0x106eb9;return respondWithRpcPromise(_0xaf2c('0x30'),_0x310d3b[_0xaf2c('0x19')])[_0xaf2c('0x9')](function(_0x4b524d){_0x106eb9=_0x4b524d;return respondWithRpcPromise('Agents',_0x310d3b['query'],routingClient);})[_0xaf2c('0x9')](function(_0x3cb075){return _[_0xaf2c('0x1b')]({},_0x3cb075,_0x106eb9);})[_0xaf2c('0x9')](respondWithResult(_0x296ca8,null))[_0xaf2c('0xe')](handleError(_0x296ca8,null));};exports[_0xaf2c('0x31')]=function(_0x51c441,_0x1d58bd){if(_0x51c441[_0xaf2c('0x32')]&&_0x51c441[_0xaf2c('0x32')]['interaction']&&_0x51c441['user']&&_0x51c441[_0xaf2c('0x33')]['name']){for(var _0x181787 in _0x51c441[_0xaf2c('0x32')][_0xaf2c('0x34')]){if(_0x51c441[_0xaf2c('0x32')]['interaction'][_0xaf2c('0x35')](_0x181787)){db['MemberReport'][_0xaf2c('0x36')]({'where':{'channel':_0x181787,'membername':_0x51c441[_0xaf2c('0x33')]['name'],'type':_0xaf2c('0x37'),'exitAt':null,'uniqueid':_0x51c441['body'][_0xaf2c('0x34')][_0x181787]&&_0x51c441[_0xaf2c('0x32')][_0xaf2c('0x34')][_0x181787][_0xaf2c('0x38')]?{'$notIn':_0x51c441[_0xaf2c('0x32')][_0xaf2c('0x34')][_0x181787]}:{'$ne':null}}})[_0xaf2c('0x9')](function(_0x16b469){var _0x922b9=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x18e62b=0x0,_0x4d0977=_0x16b469['length'];_0x18e62b<_0x4d0977;_0x18e62b+=0x1){_0x16b469[_0x18e62b]['updateAttributes']({'exitAt':_0x922b9});}});for(var _0x11a90a=0x0;_0x11a90a<_0x51c441[_0xaf2c('0x32')][_0xaf2c('0x34')][_0x181787][_0xaf2c('0x38')];_0x11a90a+=0x1){db['MemberReport'][_0xaf2c('0x39')]({'where':{'channel':_0x181787,'membername':_0x51c441['user'][_0xaf2c('0x13')],'type':'INTERACTION','uniqueid':_0x51c441[_0xaf2c('0x32')][_0xaf2c('0x34')][_0x181787][_0x11a90a],'exitAt':null},'defaults':{'channel':_0x181787,'membername':_0x51c441[_0xaf2c('0x33')][_0xaf2c('0x13')],'interface':_[_0xaf2c('0x15')](_0x51c441['user'][_0xaf2c('0x3a')])?util[_0xaf2c('0x3b')]('SIP/%s',_0x51c441['user'][_0xaf2c('0x13')]):_0x51c441['user'][_0xaf2c('0x3a')],'type':_0xaf2c('0x37'),'enterAt':moment()[_0xaf2c('0x3b')](_0xaf2c('0x3c')),'role':_0xaf2c('0x3d'),'internal':_0x51c441[_0xaf2c('0x33')][_0xaf2c('0x3e')],'uniqueid':_0x51c441[_0xaf2c('0x32')][_0xaf2c('0x34')][_0x181787][_0x11a90a]}});}}}}return respondWithRpcPromise(_0xaf2c('0x3f'),{'id':_0x51c441[_0xaf2c('0x1e')]['id'],'capacity':_0x51c441['body'][_0xaf2c('0x40')]},routingClient)[_0xaf2c('0x9')](respondWithResult(_0x1d58bd,null))['catch'](handleError(_0x1d58bd,null));};exports['telephones']=function(_0x56d7ce,_0x7ddca0){return respondWithRpcPromise(_0xaf2c('0x41'),_0x56d7ce['query'])[_0xaf2c('0x9')](respondWithResult(_0x7ddca0,null))[_0xaf2c('0xe')](handleError(_0x7ddca0,null));};exports[_0xaf2c('0x42')]=function(_0x3085e5,_0x265748){return respondWithRpcPromise(_0xaf2c('0x43'),_0x3085e5[_0xaf2c('0x19')])['then'](respondWithResult(_0x265748,null))[_0xaf2c('0xe')](handleError(_0x265748,null));};exports[_0xaf2c('0x44')]=function(_0x5771e5,_0x245797){return respondWithRpcPromise(_0xaf2c('0x45'),_0x5771e5[_0xaf2c('0x19')])[_0xaf2c('0x9')](respondWithResult(_0x245797,null))[_0xaf2c('0xe')](handleError(_0x245797,null));};exports[_0xaf2c('0x46')]=function(_0x332340,_0x15a335){return respondWithRpcPromise(_0xaf2c('0x47'),_0x332340[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x15a335,null))[_0xaf2c('0xe')](handleError(_0x15a335,null));};exports[_0xaf2c('0x48')]=function(_0x2356a0,_0x297a22){return respondWithRpcPromise(_0xaf2c('0x47'),_0x2356a0[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](findById(_0x2356a0[_0xaf2c('0x1e')]['id']))[_0xaf2c('0x9')](respondWithResult(_0x297a22,null))['catch'](handleError(_0x297a22,null));};exports[_0xaf2c('0x49')]=function(_0x3ac79c,_0xfe5928){return respondWithRpcPromise('MailQueues',_0x3ac79c[_0xaf2c('0x19')],routingClient)['then'](respondWithResult(_0xfe5928,null))[_0xaf2c('0xe')](handleError(_0xfe5928,null));};exports[_0xaf2c('0x4a')]=function(_0xb3ad9,_0x45918b){return respondWithRpcPromise(_0xaf2c('0x4b'),_0xb3ad9[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](findById(_0xb3ad9[_0xaf2c('0x1e')]['id']))[_0xaf2c('0x9')](respondWithResult(_0x45918b,null))['catch'](handleError(_0x45918b,null));};exports[_0xaf2c('0x4c')]=function(_0x400dcd,_0x262937){return respondWithRpcPromise(_0xaf2c('0x4d'),_0x400dcd[_0xaf2c('0x19')],mailClient)['then'](respondWithResult(_0x262937,null))[_0xaf2c('0xe')](handleError(_0x262937,null));};exports[_0xaf2c('0x4e')]=function(_0x506000,_0x33aa67){return respondWithRpcPromise(_0xaf2c('0x4f'),_0x506000['query'],routingClient)['then'](respondWithResult(_0x33aa67,null))[_0xaf2c('0xe')](handleError(_0x33aa67,null));};exports[_0xaf2c('0x50')]=function(_0xc83d19,_0x39c5d2){return respondWithRpcPromise('OpenchannelQueues',_0xc83d19[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](findById(_0xc83d19['params']['id']))[_0xaf2c('0x9')](respondWithResult(_0x39c5d2,null))['catch'](handleError(_0x39c5d2,null));};exports[_0xaf2c('0x51')]=function(_0xe6a251,_0x16e9f4){return respondWithRpcPromise(_0xaf2c('0x52'),_0xe6a251[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x16e9f4,null))[_0xaf2c('0xe')](handleError(_0x16e9f4,null));};exports[_0xaf2c('0x53')]=function(_0x1520ec,_0xc27601){return respondWithRpcPromise('SmsQueues',_0x1520ec[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](findById(_0x1520ec[_0xaf2c('0x1e')]['id']))[_0xaf2c('0x9')](respondWithResult(_0xc27601,null))[_0xaf2c('0xe')](handleError(_0xc27601,null));};exports['whatsappQueues']=function(_0xbfb776,_0x28b09f){return respondWithRpcPromise(_0xaf2c('0x54'),_0xbfb776[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x28b09f,null))['catch'](handleError(_0x28b09f,null));};exports['showWhatsappQueues']=function(_0x1166c9,_0x1ead61){return respondWithRpcPromise('WhatsappQueues',_0x1166c9[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](findById(_0x1166c9[_0xaf2c('0x1e')]['id']))['then'](respondWithResult(_0x1ead61,null))[_0xaf2c('0xe')](handleError(_0x1ead61,null));};exports[_0xaf2c('0x55')]=function(_0x18dcde,_0x2aae3a){return respondWithRpcPromise('FaxQueues',_0x18dcde[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x2aae3a,null))[_0xaf2c('0xe')](handleError(_0x2aae3a,null));};exports[_0xaf2c('0x56')]=function(_0x20c120,_0x1ecf97){return respondWithRpcPromise(_0xaf2c('0x57'),_0x20c120[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](findById(_0x20c120[_0xaf2c('0x1e')]['id']))[_0xaf2c('0x9')](respondWithResult(_0x1ecf97,null))['catch'](handleError(_0x1ecf97,null));};exports[_0xaf2c('0x58')]=function(_0x5d965c,_0x1a0795){return respondWithRpcPromise(_0xaf2c('0x59'),_0x5d965c['query'])[_0xaf2c('0x9')](respondWithResult(_0x1a0795,null))['catch'](handleError(_0x1a0795,null));};exports['chatQueuesWaitingInteractions']=function(_0x316333,_0x1d73ef){return respondWithRpcPromise(_0xaf2c('0x5a'),_0x316333['query'],routingClient)['then'](respondWithResult(_0x1d73ef,null))['catch'](handleError(_0x1d73ef,null));};exports[_0xaf2c('0x5b')]=function(_0x3e972c,_0x517f8d){return respondWithRpcPromise(_0xaf2c('0x5c'),_0x3e972c[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x517f8d,null))[_0xaf2c('0xe')](handleError(_0x517f8d,null));};exports[_0xaf2c('0x5d')]=function(_0x44303c,_0x4be47b){return respondWithRpcPromise(_0xaf2c('0x5e'),_0x44303c[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x4be47b,null))['catch'](handleError(_0x4be47b,null));};exports[_0xaf2c('0x5f')]=function(_0x3c53ff,_0x37ee02){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x3c53ff[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](function(_0x433f9e){if(_0x3c53ff[_0xaf2c('0x19')]['type']!==undefined){var _0x286a40=_(_0x433f9e[_0xaf2c('0x17')])[_0xaf2c('0x60')]([_0x3c53ff['query']['type'],_0x3c53ff[_0xaf2c('0x1e')]['id']])[_0xaf2c('0x61')]('queue_id')[_0xaf2c('0x62')]()[_0xaf2c('0x63')]();return _0x433f9e['rows'][_0xaf2c('0x60')](function(_0x31cf3e){return _0x286a40[_0xaf2c('0x64')](_0x31cf3e[_0xaf2c('0x65')])>-0x1;});}else{return _0x433f9e[_0xaf2c('0x17')]['filter'](function(_0x5831c9){return _0x5831c9[_0xaf2c('0x65')]===parseInt(_0x3c53ff[_0xaf2c('0x1e')]['id']);});}})[_0xaf2c('0x9')](respondWithResult(_0x37ee02,null))['catch'](handleError(_0x37ee02,null));};exports[_0xaf2c('0x66')]=function(_0x467a36,_0x3d8471){return respondWithRpcPromise(_0xaf2c('0x67'),_0x467a36[_0xaf2c('0x19')],routingClient)['then'](respondWithResult(_0x3d8471,null))[_0xaf2c('0xe')](handleError(_0x3d8471,null));};exports[_0xaf2c('0x68')]=function(_0x154f69,_0x1ef61f){return respondWithRpcPromise(_0xaf2c('0x69'),_0x154f69[_0xaf2c('0x19')],routingClient)['then'](respondWithResult(_0x1ef61f,null))[_0xaf2c('0xe')](handleError(_0x1ef61f,null));};exports[_0xaf2c('0x6a')]=function(_0x483774,_0x5beb89){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x483774[_0xaf2c('0x19')],routingClient)[_0xaf2c('0x9')](respondWithResult(_0x5beb89,null))[_0xaf2c('0xe')](handleError(_0x5beb89,null));};exports[_0xaf2c('0x6b')]=function(_0x499bbe){return function(_0x19fbd5,_0x2d7ca5){var _0x2b57d2,_0x430567;var _0x4ddf95=_[_0xaf2c('0x6c')](_0x499bbe);var _0x23aeac=_0x499bbe===_0xaf2c('0x6d')?_0xaf2c('0x6e'):_0xaf2c('0x6f');return db[_0x4ddf95+'Queue'][_0xaf2c('0x70')]({'raw':!![],'where':{'id':_0x19fbd5[_0xaf2c('0x1e')]['id']}})['then'](function(_0x516193){if(_[_0xaf2c('0x15')](_0x516193)){throw new Error(_0x4ddf95+_0xaf2c('0x71'));}_0x2b57d2=_0x516193;return db[_0x4ddf95+'Message'][_0xaf2c('0x70')]({'where':{'id':_0x19fbd5[_0xaf2c('0x32')][_0xaf2c('0x72')]},'include':[{'model':db[_0x4ddf95+_0xaf2c('0x73')],'as':_0xaf2c('0x73')},{'model':db[_0x4ddf95+_0x23aeac],'as':_0xaf2c('0x6f')}]});})[_0xaf2c('0x9')](function(_0x43c174){if(_['isNil'](_0x43c174)){throw new Error(_0x4ddf95+_0xaf2c('0x74'));}_0x430567=_0x43c174;return _0x43c174['update']({'read':0x0,'readAt':null,'UserId':null});})[_0xaf2c('0x9')](function(){var _0x7724cc={'uniqueid':_0x499bbe+'.'+_0x430567['id']+'.'+_0x430567['Interaction']['id'],'FromUserId':_0x19fbd5['user']['id'],'type':_0xaf2c('0x75')};_0x7724cc[_0x4ddf95+_0xaf2c('0x76')]=_0x430567['id'];_0x7724cc[_0x4ddf95+_0xaf2c('0x77')]=_0x430567['Interaction']['id'];_0x7724cc[_0xaf2c('0x78')+_0x4ddf95+_0x23aeac+'Id']=_0x430567[_0xaf2c('0x6f')]['id'];_0x7724cc['To'+_0x4ddf95+_0xaf2c('0x79')]=_0x2b57d2['id'];return db[_0x4ddf95+'TransferReport']['create'](_0x7724cc);})['then'](function(){return respondWithRpcPromise('Start',{'channel':_0x499bbe,'interaction':_0x430567[_0xaf2c('0x73')],'message':_0x430567,'account':_0x430567[_0xaf2c('0x6f')],'applications':[{'id':0x0,'priority':0x1,'app':_0xaf2c('0x75'),'appdata':_0x2b57d2[_0xaf2c('0x13')]+','+(_0x430567[_0xaf2c('0x6f')]['queueTransferTimeout']||0x12c),'interval':_0xaf2c('0x7a')}]},routingClient);})[_0xaf2c('0x9')](respondWithResult(_0x2d7ca5,null))['catch'](handleError(_0x2d7ca5,null));};};exports[_0xaf2c('0x7b')]=function(_0x4a3a61,_0x31f1d3){var _0x25d49c,_0x1e403a;if(_[_0xaf2c('0x15')](_0x4a3a61[_0xaf2c('0x32')][_0xaf2c('0x7c')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x47b971=_0x4a3a61[_0xaf2c('0x32')][_0xaf2c('0x7c')];var _0x1bc548=_[_0xaf2c('0x6c')](_0x47b971);var _0x118e78=_0x47b971===_0xaf2c('0x6d')?'Website':'Account';return db[_0xaf2c('0x7d')]['findOne']({'raw':!![],'where':{'id':_0x4a3a61[_0xaf2c('0x1e')]['id'],'role':'agent'}})[_0xaf2c('0x9')](function(_0x639b4b){if(_['isNil'](_0x639b4b)){throw new Error(_0xaf2c('0x7e'));}_0x25d49c=_0x639b4b;return db[_0x1bc548+_0xaf2c('0x7f')][_0xaf2c('0x70')]({'where':{'id':_0x4a3a61['body'][_0xaf2c('0x72')]},'include':[{'model':db[_0x1bc548+_0xaf2c('0x73')],'as':_0xaf2c('0x73')},{'model':db[_0x1bc548+_0x118e78],'as':_0xaf2c('0x6f')}]});})[_0xaf2c('0x9')](function(_0xb311e1){if(_['isNil'](_0xb311e1)){throw new Error(_0x1bc548+'\x20Message\x20not\x20found');}_0x1e403a=_0xb311e1;return _0xb311e1['update']({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x2db412={'uniqueid':_0x47b971+'.'+_0x1e403a['id']+'.'+_0x1e403a['Interaction']['id'],'FromUserId':_0x4a3a61[_0xaf2c('0x33')]['id'],'type':'queue','ToUserId':_0x25d49c['id']};_0x2db412[_0x1bc548+'MessageId']=_0x1e403a['id'];_0x2db412[_0x1bc548+_0xaf2c('0x77')]=_0x1e403a[_0xaf2c('0x73')]['id'];_0x2db412['From'+_0x1bc548+_0x118e78+'Id']=_0x1e403a[_0xaf2c('0x6f')]['id'];return db[_0x1bc548+_0xaf2c('0x80')][_0xaf2c('0x81')](_0x2db412);})[_0xaf2c('0x9')](function(){return respondWithRpcPromise(_0xaf2c('0x82'),{'channel':_0x47b971,'interaction':_0x1e403a[_0xaf2c('0x73')],'message':_0x1e403a,'account':_0x1e403a[_0xaf2c('0x6f')],'applications':[{'id':0x0,'priority':0x1,'app':_0xaf2c('0x3d'),'appdata':_0x25d49c[_0xaf2c('0x13')]+','+(_0x1e403a[_0xaf2c('0x6f')]['agentTransferTimeout']||0x12c),'interval':_0xaf2c('0x7a')}]},routingClient);})['then'](respondWithResult(_0x31f1d3,null))[_0xaf2c('0xe')](handleError(_0x31f1d3,null));};
\ No newline at end of file
index 7fd7945..bf00acc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc339=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','run','post','put','update','delete','destroy','exports','multer','util','path'];(function(_0x3dfeb9,_0x1cc6e4){var _0x412314=function(_0x321253){while(--_0x321253){_0x3dfeb9['push'](_0x3dfeb9['shift']());}};_0x412314(++_0x1cc6e4);}(_0xc339,0xa5));var _0x9c33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc339[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x9c33('0x0'));var util=require(_0x9c33('0x1'));var path=require(_0x9c33('0x2'));var timeout=require('connect-timeout');var express=require(_0x9c33('0x3'));var router=express[_0x9c33('0x4')]();var fs_extra=require(_0x9c33('0x5'));var auth=require(_0x9c33('0x6'));var interaction=require(_0x9c33('0x7'));var config=require(_0x9c33('0x8'));var controller=require('./schedule.controller');router['get']('/',auth[_0x9c33('0x9')](),controller[_0x9c33('0xa')]);router[_0x9c33('0xb')](_0x9c33('0xc'),auth[_0x9c33('0x9')](),controller[_0x9c33('0xd')]);router[_0x9c33('0xb')]('/:id/run',auth[_0x9c33('0x9')](),controller[_0x9c33('0xe')]);router[_0x9c33('0xf')]('/',auth[_0x9c33('0x9')](),controller['create']);router[_0x9c33('0x10')](_0x9c33('0xc'),auth[_0x9c33('0x9')](),controller[_0x9c33('0x11')]);router[_0x9c33('0x12')](_0x9c33('0xc'),auth[_0x9c33('0x9')](),controller[_0x9c33('0x13')]);module[_0x9c33('0x14')]=router;
\ No newline at end of file
+var _0x99bb=['put','update','destroy','exports','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','isAuthenticated','/:id','show','/:id/run','run','create'];(function(_0x40dd5d,_0x29a815){var _0x29fb14=function(_0x549a1c){while(--_0x549a1c){_0x40dd5d['push'](_0x40dd5d['shift']());}};_0x29fb14(++_0x29a815);}(_0x99bb,0xf2));var _0xb99b=function(_0x26bf3c,_0x55716e){_0x26bf3c=_0x26bf3c-0x0;var _0x1e3cdb=_0x99bb[_0x26bf3c];return _0x1e3cdb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb99b('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xb99b('0x1'));var auth=require(_0xb99b('0x2'));var interaction=require(_0xb99b('0x3'));var config=require(_0xb99b('0x4'));var controller=require(_0xb99b('0x5'));router[_0xb99b('0x6')]('/',auth[_0xb99b('0x7')](),controller['index']);router[_0xb99b('0x6')](_0xb99b('0x8'),auth['isAuthenticated'](),controller[_0xb99b('0x9')]);router['get'](_0xb99b('0xa'),auth[_0xb99b('0x7')](),controller[_0xb99b('0xb')]);router['post']('/',auth[_0xb99b('0x7')](),controller[_0xb99b('0xc')]);router[_0xb99b('0xd')](_0xb99b('0x8'),auth[_0xb99b('0x7')](),controller[_0xb99b('0xe')]);router['delete'](_0xb99b('0x8'),auth['isAuthenticated'](),controller[_0xb99b('0xf')]);module[_0xb99b('0x10')]=router;
\ No newline at end of file
index f301e4f..f63585f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7601=['INTEGER','ENUM','years','quarters','months','weeks','days','hours','minutes','xlsx','csv','custom','TEXT','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE'];(function(_0xa93747,_0xc8a4dd){var _0x43962d=function(_0x344104){while(--_0x344104){_0xa93747['push'](_0xa93747['shift']());}};_0x43962d(++_0xc8a4dd);}(_0x7601,0x151));var _0x1760=function(_0x31a938,_0x4daec6){_0x31a938=_0x31a938-0x0;var _0x1bf341=_0x7601[_0x31a938];return _0x1bf341;};'use strict';var Sequelize=require('sequelize');module[_0x1760('0x0')]={'name':{'type':Sequelize[_0x1760('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x1760('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x1760('0x1')],'allowNull':![],'defaultValue':_0x1760('0x3')},'startAt':{'type':Sequelize[_0x1760('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0x1760('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x1760('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x1760('0x6')](_0x1760('0x7'),_0x1760('0x8'),_0x1760('0x9'),_0x1760('0xa'),_0x1760('0xb'),_0x1760('0xc'),_0x1760('0xd')),'allowNull':![],'defaultValue':_0x1760('0xb')},'output':{'type':Sequelize[_0x1760('0x6')]('csv','pdf',_0x1760('0xe')),'allowNull':![],'defaultValue':_0x1760('0xf')},'type':{'type':Sequelize[_0x1760('0x6')](_0x1760('0x10'),'default'),'allowNull':![],'defaultValue':_0x1760('0x10')},'sendMail':{'type':Sequelize[_0x1760('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x1760('0x1')]},'cc':{'type':Sequelize[_0x1760('0x11')]},'bcc':{'type':Sequelize[_0x1760('0x11')]},'sendIfEmpty':{'type':Sequelize[_0x1760('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xc69c=['TEXT','sequelize','exports','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','quarters','weeks','days','minutes','csv','xlsx','default','custom','BOOLEAN'];(function(_0x106c8e,_0x2cec76){var _0x5b0aa8=function(_0x18065a){while(--_0x18065a){_0x106c8e['push'](_0x106c8e['shift']());}};_0x5b0aa8(++_0x2cec76);}(_0xc69c,0x18d));var _0xcc69=function(_0x102243,_0x2b4dde){_0x102243=_0x102243-0x0;var _0x1d302c=_0xc69c[_0x102243];return _0x1d302c;};'use strict';var Sequelize=require(_0xcc69('0x0'));module[_0xcc69('0x1')]={'name':{'type':Sequelize[_0xcc69('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xcc69('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xcc69('0x3')},'startAt':{'type':Sequelize[_0xcc69('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0xcc69('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xcc69('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xcc69('0x6')](_0xcc69('0x7'),_0xcc69('0x8'),'months',_0xcc69('0x9'),_0xcc69('0xa'),'hours',_0xcc69('0xb')),'allowNull':![],'defaultValue':_0xcc69('0xa')},'output':{'type':Sequelize[_0xcc69('0x6')](_0xcc69('0xc'),'pdf',_0xcc69('0xd')),'allowNull':![],'defaultValue':_0xcc69('0xc')},'type':{'type':Sequelize[_0xcc69('0x6')]('custom',_0xcc69('0xe')),'allowNull':![],'defaultValue':_0xcc69('0xf')},'sendMail':{'type':Sequelize[_0xcc69('0x10')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xcc69('0x11')]},'bcc':{'type':Sequelize[_0xcc69('0x11')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 6966f40..5185f06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fd8=['rawAttributes','type','key','model','map','query','keys','intersection','fields','attributes','length','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','rows','catch','params','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','run','../../config/schedule','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Scheduler','UserProfileResource','end','error','name','send','index','Schedule'];(function(_0x48c1c8,_0x2612a5){var _0x4cd023=function(_0x4dbc03){while(--_0x4dbc03){_0x48c1c8['push'](_0x48c1c8['shift']());}};_0x4cd023(++_0x2612a5);}(_0x4fd8,0x11c));var _0x84fd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4fd8[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x84fd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x84fd('0x1'));var jsonpatch=require(_0x84fd('0x2'));var rp=require(_0x84fd('0x3'));var moment=require(_0x84fd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x84fd('0x5'));var util=require(_0x84fd('0x6'));var path=require('path');var sox=require(_0x84fd('0x7'));var csv=require(_0x84fd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x84fd('0x9'));var _=require('lodash');var squel=require(_0x84fd('0xa'));var crypto=require(_0x84fd('0xb'));var jsforce=require(_0x84fd('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x84fd('0xd'));var Papa=require(_0x84fd('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x84fd('0xf'));var as=require(_0x84fd('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x84fd('0x11'))('api');var utils=require(_0x84fd('0x12'));var config=require(_0x84fd('0x13'));var licenseUtil=require(_0x84fd('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x477a0a,_0x5e2547){_0x5e2547=_0x5e2547||0xcc;return function(_0xe4d49e){if(_0xe4d49e){return _0x477a0a['sendStatus'](_0x5e2547);}return _0x477a0a[_0x84fd('0x15')](_0x5e2547)['end']();};}function respondWithResult(_0x31c7af,_0x2fd921){_0x2fd921=_0x2fd921||0xc8;return function(_0x41d5b0){if(_0x41d5b0){return _0x31c7af['status'](_0x2fd921)[_0x84fd('0x16')](_0x41d5b0);}};}function respondWithFilteredResult(_0x581fa2,_0x2e45f5){return function(_0x59253d){if(_0x59253d){var _0x2e5642=typeof _0x2e45f5[_0x84fd('0x17')]==='undefined'&&typeof _0x2e45f5[_0x84fd('0x18')]===_0x84fd('0x19');var _0x56384c=_0x59253d[_0x84fd('0x1a')];var _0x36aec0=_0x2e5642?0x0:_0x2e45f5[_0x84fd('0x17')];var _0x1923c0=_0x2e5642?_0x59253d[_0x84fd('0x1a')]:_0x2e45f5[_0x84fd('0x17')]+_0x2e45f5[_0x84fd('0x18')];var _0x35c61c;if(_0x1923c0>=_0x56384c){_0x1923c0=_0x56384c;_0x35c61c=0xc8;}else{_0x35c61c=0xce;}_0x581fa2[_0x84fd('0x15')](_0x35c61c);return _0x581fa2[_0x84fd('0x1b')](_0x84fd('0x1c'),_0x36aec0+'-'+_0x1923c0+'/'+_0x56384c)['json'](_0x59253d);}return null;};}function patchUpdates(_0x4dae77){return function(_0x3ec738){try{jsonpatch[_0x84fd('0x1d')](_0x3ec738,_0x4dae77,!![]);}catch(_0x3730dd){return BPromise[_0x84fd('0x1e')](_0x3730dd);}return _0x3ec738[_0x84fd('0x1f')]();};}function saveUpdates(_0x52a016,_0x4def06){return function(_0x108865){if(_0x108865){return _0x108865[_0x84fd('0x20')](_0x52a016)[_0x84fd('0x21')](function(_0x1cfec9){return _0x1cfec9;});}return null;};}function removeEntity(_0x144a8f,_0x3e4a58){return function(_0x56b70e){if(_0x56b70e){return _0x56b70e[_0x84fd('0x22')]()[_0x84fd('0x21')](function(){var _0x5a18a8=_0x56b70e[_0x84fd('0x23')]({'plain':!![]});var _0x489da3=_0x84fd('0x24');return db[_0x84fd('0x25')]['destroy']({'where':{'type':_0x489da3,'resourceId':_0x5a18a8['id']}})[_0x84fd('0x21')](function(){return _0x56b70e;});})[_0x84fd('0x21')](function(){_0x144a8f['status'](0xcc)[_0x84fd('0x26')]();});}};}function handleEntityNotFound(_0x2a52d4,_0x4bff3a){return function(_0x1d78f9){if(!_0x1d78f9){_0x2a52d4['sendStatus'](0x194);}return _0x1d78f9;};}function handleError(_0x217220,_0x57e182){_0x57e182=_0x57e182||0x1f4;return function(_0x31d592){logger[_0x84fd('0x27')](_0x31d592['stack']);if(_0x31d592['name']){delete _0x31d592[_0x84fd('0x28')];}_0x217220[_0x84fd('0x15')](_0x57e182)[_0x84fd('0x29')](_0x31d592);};}exports[_0x84fd('0x2a')]=function(_0x4e814d,_0x326a9e){var _0x188c50={},_0x476cea={},_0x554b11={'count':0x0,'rows':[]};var _0x565dd4=_['map'](db[_0x84fd('0x2b')][_0x84fd('0x2c')],function(_0x3241eb){return{'name':_0x3241eb['fieldName'],'type':_0x3241eb[_0x84fd('0x2d')][_0x84fd('0x2e')]};});_0x476cea[_0x84fd('0x2f')]=_[_0x84fd('0x30')](_0x565dd4,_0x84fd('0x28'));_0x476cea[_0x84fd('0x31')]=_[_0x84fd('0x32')](_0x4e814d[_0x84fd('0x31')]);_0x476cea['filters']=_[_0x84fd('0x33')](_0x476cea['model'],_0x476cea[_0x84fd('0x31')]);_0x188c50['attributes']=_[_0x84fd('0x33')](_0x476cea['model'],qs[_0x84fd('0x34')](_0x4e814d['query'][_0x84fd('0x34')]));_0x188c50[_0x84fd('0x35')]=_0x188c50[_0x84fd('0x35')][_0x84fd('0x36')]?_0x188c50[_0x84fd('0x35')]:_0x476cea[_0x84fd('0x2f')];if(!_0x4e814d[_0x84fd('0x31')]['hasOwnProperty'](_0x84fd('0x37'))){_0x188c50['limit']=qs[_0x84fd('0x18')](_0x4e814d[_0x84fd('0x31')][_0x84fd('0x18')]);_0x188c50[_0x84fd('0x17')]=qs[_0x84fd('0x17')](_0x4e814d['query'][_0x84fd('0x17')]);}_0x188c50[_0x84fd('0x38')]=qs['sort'](_0x4e814d[_0x84fd('0x31')][_0x84fd('0x39')]);_0x188c50['where']=qs[_0x84fd('0x3a')](_[_0x84fd('0x3b')](_0x4e814d[_0x84fd('0x31')],_0x476cea[_0x84fd('0x3a')]),_0x565dd4);if(_0x4e814d[_0x84fd('0x31')]['filter']){_0x188c50[_0x84fd('0x3c')]=_[_0x84fd('0x3d')](_0x188c50[_0x84fd('0x3c')],{'$or':_['map'](_0x565dd4,function(_0x2b0d7a){if(_0x2b0d7a[_0x84fd('0x2d')]!==_0x84fd('0x3e')){var _0x4fa4f5={};_0x4fa4f5[_0x2b0d7a[_0x84fd('0x28')]]={'$like':'%'+_0x4e814d[_0x84fd('0x31')][_0x84fd('0x3f')]+'%'};return _0x4fa4f5;}})});}_0x188c50=_[_0x84fd('0x3d')]({},_0x188c50,_0x4e814d[_0x84fd('0x40')]);var _0x4b810b={'where':_0x188c50[_0x84fd('0x3c')]};return db[_0x84fd('0x2b')][_0x84fd('0x1a')](_0x4b810b)[_0x84fd('0x21')](function(_0x394903){_0x554b11[_0x84fd('0x1a')]=_0x394903;if(_0x4e814d[_0x84fd('0x31')][_0x84fd('0x41')]){_0x188c50['include']=[{'all':!![]}];}return db[_0x84fd('0x2b')]['findAll'](_0x188c50);})[_0x84fd('0x21')](function(_0x27048e){_0x554b11[_0x84fd('0x42')]=_0x27048e;return _0x554b11;})['then'](respondWithFilteredResult(_0x326a9e,_0x188c50))[_0x84fd('0x43')](handleError(_0x326a9e,null));};exports['show']=function(_0xc3136a,_0x3f708f){var _0x1856b6={'raw':![],'where':{'id':_0xc3136a[_0x84fd('0x44')]['id']}},_0x10bb4c={};_0x10bb4c[_0x84fd('0x2f')]=_[_0x84fd('0x32')](db['Schedule'][_0x84fd('0x2c')]);_0x10bb4c['query']=_['keys'](_0xc3136a[_0x84fd('0x31')]);_0x10bb4c[_0x84fd('0x3a')]=_[_0x84fd('0x33')](_0x10bb4c[_0x84fd('0x2f')],_0x10bb4c['query']);_0x1856b6['attributes']=_[_0x84fd('0x33')](_0x10bb4c[_0x84fd('0x2f')],qs[_0x84fd('0x34')](_0xc3136a[_0x84fd('0x31')][_0x84fd('0x34')]));_0x1856b6[_0x84fd('0x35')]=_0x1856b6[_0x84fd('0x35')][_0x84fd('0x36')]?_0x1856b6[_0x84fd('0x35')]:_0x10bb4c['model'];if(_0xc3136a[_0x84fd('0x31')][_0x84fd('0x41')]){_0x1856b6[_0x84fd('0x45')]=[{'all':!![]}];}_0x1856b6=_[_0x84fd('0x3d')]({},_0x1856b6,_0xc3136a[_0x84fd('0x40')]);return db[_0x84fd('0x2b')][_0x84fd('0x46')](_0x1856b6)[_0x84fd('0x21')](handleEntityNotFound(_0x3f708f,null))[_0x84fd('0x21')](respondWithResult(_0x3f708f,null))['catch'](handleError(_0x3f708f,null));};exports[_0x84fd('0x47')]=function(_0x5dfaaa,_0x6134d5){return db[_0x84fd('0x2b')][_0x84fd('0x47')](_0x5dfaaa['body'],{})[_0x84fd('0x21')](function(_0x23d1a4){var _0x55aa6f=_0x5dfaaa[_0x84fd('0x48')]['get']({'plain':!![]});if(!_0x55aa6f)throw new Error(_0x84fd('0x49'));if(_0x55aa6f[_0x84fd('0x4a')]===_0x84fd('0x48')){var _0x453fff=_0x23d1a4['get']({'plain':!![]});var _0x1e2db9=_0x84fd('0x24');return db[_0x84fd('0x4b')][_0x84fd('0x46')]({'where':{'name':_0x1e2db9,'userProfileId':_0x55aa6f[_0x84fd('0x4c')]},'raw':!![]})[_0x84fd('0x21')](function(_0x1bac4c){if(_0x1bac4c&&_0x1bac4c[_0x84fd('0x4d')]===0x0){return db[_0x84fd('0x25')]['create']({'name':_0x453fff[_0x84fd('0x28')],'resourceId':_0x453fff['id'],'type':_0x1bac4c[_0x84fd('0x28')],'sectionId':_0x1bac4c['id']},{})['then'](function(){return _0x23d1a4;});}else{return _0x23d1a4;}})[_0x84fd('0x43')](function(_0x2fddf6){logger[_0x84fd('0x27')](_0x84fd('0x4e'),_0x2fddf6);throw _0x2fddf6;});}return _0x23d1a4;})[_0x84fd('0x21')](respondWithResult(_0x6134d5,0xc9))['catch'](handleError(_0x6134d5,null));};exports[_0x84fd('0x20')]=function(_0x49ff6c,_0x20054d){if(_0x49ff6c['body']['id']){delete _0x49ff6c[_0x84fd('0x4f')]['id'];}return db[_0x84fd('0x2b')][_0x84fd('0x46')]({'where':{'id':_0x49ff6c[_0x84fd('0x44')]['id']}})[_0x84fd('0x21')](handleEntityNotFound(_0x20054d,null))['then'](saveUpdates(_0x49ff6c[_0x84fd('0x4f')],null))[_0x84fd('0x21')](respondWithResult(_0x20054d,null))[_0x84fd('0x43')](handleError(_0x20054d,null));};exports[_0x84fd('0x22')]=function(_0x89c006,_0x36a8d6){return db[_0x84fd('0x2b')][_0x84fd('0x46')]({'where':{'id':_0x89c006[_0x84fd('0x44')]['id']}})[_0x84fd('0x21')](handleEntityNotFound(_0x36a8d6,null))[_0x84fd('0x21')](removeEntity(_0x36a8d6,null))[_0x84fd('0x43')](handleError(_0x36a8d6,null));};exports[_0x84fd('0x50')]=function(_0xa149d3,_0x2d2383,_0x1bf07c){var _0x522238=require(_0x84fd('0x51'));return db[_0x84fd('0x2b')]['find']({'where':{'id':_0xa149d3[_0x84fd('0x44')]['id']},'raw':!![]})[_0x84fd('0x21')](handleEntityNotFound(_0x2d2383,null))['then'](function(){_0x522238[_0x84fd('0x50')](_0xa149d3[_0x84fd('0x44')]['id']);})[_0x84fd('0x21')](respondWithStatusCode(_0x2d2383,null))['catch'](handleError(_0x2d2383,null));};
\ No newline at end of file
+var _0xe619=['status','end','json','offset','undefined','limit','count','set','reject','save','update','destroy','then','get','UserProfileResource','sendStatus','name','send','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','Schedule','includeAll','rows','params','include','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','../../config/schedule','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0xe619,0x1d2));var _0x9e61=function(_0x5641d9,_0x1de53b){_0x5641d9=_0x5641d9-0x0;var _0x1b1f89=_0xe619[_0x5641d9];return _0x1b1f89;};'use strict';var emlformat=require(_0x9e61('0x0'));var rimraf=require(_0x9e61('0x1'));var zipdir=require(_0x9e61('0x2'));var jsonpatch=require(_0x9e61('0x3'));var rp=require(_0x9e61('0x4'));var moment=require(_0x9e61('0x5'));var BPromise=require(_0x9e61('0x6'));var Mustache=require(_0x9e61('0x7'));var util=require(_0x9e61('0x8'));var path=require(_0x9e61('0x9'));var sox=require(_0x9e61('0xa'));var csv=require(_0x9e61('0xb'));var ejs=require(_0x9e61('0xc'));var fs=require('fs');var fs_extra=require(_0x9e61('0xd'));var _=require(_0x9e61('0xe'));var squel=require(_0x9e61('0xf'));var crypto=require(_0x9e61('0x10'));var jsforce=require(_0x9e61('0x11'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9e61('0x12'));var Redis=require(_0x9e61('0x13'));var authService=require(_0x9e61('0x14'));var qs=require(_0x9e61('0x15'));var as=require(_0x9e61('0x16'));var hardwareService=require(_0x9e61('0x17'));var logger=require('../../config/logger')(_0x9e61('0x18'));var utils=require('../../config/utils');var config=require(_0x9e61('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c5e1b,_0x582c92){_0x582c92=_0x582c92||0xcc;return function(_0x3a0c87){if(_0x3a0c87){return _0x4c5e1b['sendStatus'](_0x582c92);}return _0x4c5e1b[_0x9e61('0x1a')](_0x582c92)[_0x9e61('0x1b')]();};}function respondWithResult(_0x152e4c,_0xd85469){_0xd85469=_0xd85469||0xc8;return function(_0x23bd21){if(_0x23bd21){return _0x152e4c[_0x9e61('0x1a')](_0xd85469)[_0x9e61('0x1c')](_0x23bd21);}};}function respondWithFilteredResult(_0x29ec1b,_0x477e6d){return function(_0x301e6e){if(_0x301e6e){var _0x13fad6=typeof _0x477e6d[_0x9e61('0x1d')]===_0x9e61('0x1e')&&typeof _0x477e6d[_0x9e61('0x1f')]==='undefined';var _0xd20c93=_0x301e6e['count'];var _0x1d75ca=_0x13fad6?0x0:_0x477e6d[_0x9e61('0x1d')];var _0x5177f1=_0x13fad6?_0x301e6e[_0x9e61('0x20')]:_0x477e6d[_0x9e61('0x1d')]+_0x477e6d[_0x9e61('0x1f')];var _0x2088f9;if(_0x5177f1>=_0xd20c93){_0x5177f1=_0xd20c93;_0x2088f9=0xc8;}else{_0x2088f9=0xce;}_0x29ec1b[_0x9e61('0x1a')](_0x2088f9);return _0x29ec1b[_0x9e61('0x21')]('Content-Range',_0x1d75ca+'-'+_0x5177f1+'/'+_0xd20c93)[_0x9e61('0x1c')](_0x301e6e);}return null;};}function patchUpdates(_0x38b52d){return function(_0x3d272c){try{jsonpatch['apply'](_0x3d272c,_0x38b52d,!![]);}catch(_0x57f6d0){return BPromise[_0x9e61('0x22')](_0x57f6d0);}return _0x3d272c[_0x9e61('0x23')]();};}function saveUpdates(_0x10a268,_0x227242){return function(_0x1a93dc){if(_0x1a93dc){return _0x1a93dc[_0x9e61('0x24')](_0x10a268)['then'](function(_0x2d8d9b){return _0x2d8d9b;});}return null;};}function removeEntity(_0x1d0e7a,_0x3e99df){return function(_0xfb67b9){if(_0xfb67b9){return _0xfb67b9[_0x9e61('0x25')]()[_0x9e61('0x26')](function(){var _0x58dbf5=_0xfb67b9[_0x9e61('0x27')]({'plain':!![]});var _0x114a77='Scheduler';return db[_0x9e61('0x28')][_0x9e61('0x25')]({'where':{'type':_0x114a77,'resourceId':_0x58dbf5['id']}})['then'](function(){return _0xfb67b9;});})['then'](function(){_0x1d0e7a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x28a00e,_0x1863c0){return function(_0x4853a9){if(!_0x4853a9){_0x28a00e[_0x9e61('0x29')](0x194);}return _0x4853a9;};}function handleError(_0x3cdce6,_0x54180c){_0x54180c=_0x54180c||0x1f4;return function(_0x161634){logger['error'](_0x161634['stack']);if(_0x161634['name']){delete _0x161634[_0x9e61('0x2a')];}_0x3cdce6[_0x9e61('0x1a')](_0x54180c)[_0x9e61('0x2b')](_0x161634);};}exports['index']=function(_0x2b1464,_0x3f5e19){var _0x308b7f={},_0x2a34f1={},_0x4783a8={'count':0x0,'rows':[]};var _0x5c944d=_[_0x9e61('0x2c')](db['Schedule'][_0x9e61('0x2d')],function(_0x29fba1){return{'name':_0x29fba1[_0x9e61('0x2e')],'type':_0x29fba1['type'][_0x9e61('0x2f')]};});_0x2a34f1[_0x9e61('0x30')]=_[_0x9e61('0x2c')](_0x5c944d,_0x9e61('0x2a'));_0x2a34f1[_0x9e61('0x31')]=_[_0x9e61('0x32')](_0x2b1464[_0x9e61('0x31')]);_0x2a34f1[_0x9e61('0x33')]=_[_0x9e61('0x34')](_0x2a34f1[_0x9e61('0x30')],_0x2a34f1['query']);_0x308b7f[_0x9e61('0x35')]=_['intersection'](_0x2a34f1[_0x9e61('0x30')],qs[_0x9e61('0x36')](_0x2b1464[_0x9e61('0x31')][_0x9e61('0x36')]));_0x308b7f[_0x9e61('0x35')]=_0x308b7f[_0x9e61('0x35')]['length']?_0x308b7f[_0x9e61('0x35')]:_0x2a34f1[_0x9e61('0x30')];if(!_0x2b1464['query'][_0x9e61('0x37')](_0x9e61('0x38'))){_0x308b7f[_0x9e61('0x1f')]=qs[_0x9e61('0x1f')](_0x2b1464[_0x9e61('0x31')][_0x9e61('0x1f')]);_0x308b7f[_0x9e61('0x1d')]=qs['offset'](_0x2b1464[_0x9e61('0x31')][_0x9e61('0x1d')]);}_0x308b7f[_0x9e61('0x39')]=qs['sort'](_0x2b1464[_0x9e61('0x31')][_0x9e61('0x3a')]);_0x308b7f[_0x9e61('0x3b')]=qs['filters'](_['pick'](_0x2b1464[_0x9e61('0x31')],_0x2a34f1[_0x9e61('0x33')]),_0x5c944d);if(_0x2b1464[_0x9e61('0x31')]['filter']){_0x308b7f['where']=_[_0x9e61('0x3c')](_0x308b7f[_0x9e61('0x3b')],{'$or':_['map'](_0x5c944d,function(_0x20aab9){if(_0x20aab9['type']!==_0x9e61('0x3d')){var _0x13143b={};_0x13143b[_0x20aab9[_0x9e61('0x2a')]]={'$like':'%'+_0x2b1464[_0x9e61('0x31')][_0x9e61('0x3e')]+'%'};return _0x13143b;}})});}_0x308b7f=_[_0x9e61('0x3c')]({},_0x308b7f,_0x2b1464[_0x9e61('0x3f')]);var _0x37741f={'where':_0x308b7f[_0x9e61('0x3b')]};return db[_0x9e61('0x40')][_0x9e61('0x20')](_0x37741f)['then'](function(_0xe32788){_0x4783a8['count']=_0xe32788;if(_0x2b1464[_0x9e61('0x31')][_0x9e61('0x41')]){_0x308b7f['include']=[{'all':!![]}];}return db[_0x9e61('0x40')]['findAll'](_0x308b7f);})['then'](function(_0x35f5c8){_0x4783a8[_0x9e61('0x42')]=_0x35f5c8;return _0x4783a8;})[_0x9e61('0x26')](respondWithFilteredResult(_0x3f5e19,_0x308b7f))['catch'](handleError(_0x3f5e19,null));};exports['show']=function(_0x10b280,_0x227b37){var _0x91ce7a={'raw':![],'where':{'id':_0x10b280[_0x9e61('0x43')]['id']}},_0x9144d4={};_0x9144d4[_0x9e61('0x30')]=_[_0x9e61('0x32')](db[_0x9e61('0x40')][_0x9e61('0x2d')]);_0x9144d4[_0x9e61('0x31')]=_[_0x9e61('0x32')](_0x10b280[_0x9e61('0x31')]);_0x9144d4[_0x9e61('0x33')]=_[_0x9e61('0x34')](_0x9144d4[_0x9e61('0x30')],_0x9144d4['query']);_0x91ce7a['attributes']=_[_0x9e61('0x34')](_0x9144d4[_0x9e61('0x30')],qs[_0x9e61('0x36')](_0x10b280[_0x9e61('0x31')]['fields']));_0x91ce7a[_0x9e61('0x35')]=_0x91ce7a[_0x9e61('0x35')]['length']?_0x91ce7a['attributes']:_0x9144d4[_0x9e61('0x30')];if(_0x10b280['query'][_0x9e61('0x41')]){_0x91ce7a[_0x9e61('0x44')]=[{'all':!![]}];}_0x91ce7a=_['merge']({},_0x91ce7a,_0x10b280[_0x9e61('0x3f')]);return db[_0x9e61('0x40')]['find'](_0x91ce7a)['then'](handleEntityNotFound(_0x227b37,null))[_0x9e61('0x26')](respondWithResult(_0x227b37,null))[_0x9e61('0x45')](handleError(_0x227b37,null));};exports[_0x9e61('0x46')]=function(_0x459e8c,_0x42bef9){return db['Schedule'][_0x9e61('0x46')](_0x459e8c[_0x9e61('0x47')],{})['then'](function(_0x5dabfb){var _0x21f422=_0x459e8c['user'][_0x9e61('0x27')]({'plain':!![]});if(!_0x21f422)throw new Error(_0x9e61('0x48'));if(_0x21f422[_0x9e61('0x49')]===_0x9e61('0x4a')){var _0x65bcf0=_0x5dabfb['get']({'plain':!![]});var _0x2c24f4='Scheduler';return db['UserProfileSection'][_0x9e61('0x4b')]({'where':{'name':_0x2c24f4,'userProfileId':_0x21f422[_0x9e61('0x4c')]},'raw':!![]})['then'](function(_0x8f716e){if(_0x8f716e&&_0x8f716e[_0x9e61('0x4d')]===0x0){return db[_0x9e61('0x28')][_0x9e61('0x46')]({'name':_0x65bcf0[_0x9e61('0x2a')],'resourceId':_0x65bcf0['id'],'type':_0x8f716e['name'],'sectionId':_0x8f716e['id']},{})[_0x9e61('0x26')](function(){return _0x5dabfb;});}else{return _0x5dabfb;}})[_0x9e61('0x45')](function(_0x34a29a){logger[_0x9e61('0x4e')](_0x9e61('0x4f'),_0x34a29a);throw _0x34a29a;});}return _0x5dabfb;})[_0x9e61('0x26')](respondWithResult(_0x42bef9,0xc9))[_0x9e61('0x45')](handleError(_0x42bef9,null));};exports[_0x9e61('0x24')]=function(_0x501c80,_0x2c6d08){if(_0x501c80[_0x9e61('0x47')]['id']){delete _0x501c80[_0x9e61('0x47')]['id'];}return db[_0x9e61('0x40')]['find']({'where':{'id':_0x501c80[_0x9e61('0x43')]['id']}})['then'](handleEntityNotFound(_0x2c6d08,null))[_0x9e61('0x26')](saveUpdates(_0x501c80[_0x9e61('0x47')],null))[_0x9e61('0x26')](respondWithResult(_0x2c6d08,null))['catch'](handleError(_0x2c6d08,null));};exports[_0x9e61('0x25')]=function(_0x201f5b,_0x3b0902){return db['Schedule'][_0x9e61('0x4b')]({'where':{'id':_0x201f5b[_0x9e61('0x43')]['id']}})[_0x9e61('0x26')](handleEntityNotFound(_0x3b0902,null))[_0x9e61('0x26')](removeEntity(_0x3b0902,null))['catch'](handleError(_0x3b0902,null));};exports[_0x9e61('0x50')]=function(_0x252a9d,_0x3e1738,_0x3a0ebd){var _0x2fbd93=require(_0x9e61('0x51'));return db[_0x9e61('0x40')][_0x9e61('0x4b')]({'where':{'id':_0x252a9d[_0x9e61('0x43')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x3e1738,null))[_0x9e61('0x26')](function(){_0x2fbd93['run'](_0x252a9d['params']['id']);})[_0x9e61('0x26')](respondWithStatusCode(_0x3e1738,null))[_0x9e61('0x45')](handleError(_0x3e1738,null));};
\ No newline at end of file
index 9d98b0d..af3009e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc551=['./schedule.attributes','Schedule','tools_schedules','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x53f402,_0x326920){var _0x45a76d=function(_0x51f590){while(--_0x51f590){_0x53f402['push'](_0x53f402['shift']());}};_0x45a76d(++_0x326920);}(_0xc551,0x1b3));var _0x1c55=function(_0x53bb02,_0x224ef9){_0x53bb02=_0x53bb02-0x0;var _0x56e423=_0xc551[_0x53bb02];return _0x56e423;};'use strict';var _=require(_0x1c55('0x0'));var util=require('util');var logger=require(_0x1c55('0x1'))(_0x1c55('0x2'));var moment=require(_0x1c55('0x3'));var BPromise=require(_0x1c55('0x4'));var rp=require(_0x1c55('0x5'));var fs=require('fs');var path=require(_0x1c55('0x6'));var rimraf=require(_0x1c55('0x7'));var config=require(_0x1c55('0x8'));var attributes=require(_0x1c55('0x9'));module['exports']=function(_0x379ad4,_0x2f9ae3){return _0x379ad4['define'](_0x1c55('0xa'),attributes,{'tableName':_0x1c55('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x89ed=['Schedule','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./schedule.attributes','define'];(function(_0x77b655,_0x368548){var _0x38a4b6=function(_0x4c432c){while(--_0x4c432c){_0x77b655['push'](_0x77b655['shift']());}};_0x38a4b6(++_0x368548);}(_0x89ed,0xbf));var _0xd89e=function(_0x2ffad6,_0x137196){_0x2ffad6=_0x2ffad6-0x0;var _0x31cfaa=_0x89ed[_0x2ffad6];return _0x31cfaa;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd89e('0x0'))(_0xd89e('0x1'));var moment=require(_0xd89e('0x2'));var BPromise=require(_0xd89e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd89e('0x4'));var rimraf=require(_0xd89e('0x5'));var config=require(_0xd89e('0x6'));var attributes=require(_0xd89e('0x7'));module['exports']=function(_0x7a325c,_0x8b4119){return _0x7a325c[_0xd89e('0x8')](_0xd89e('0x9'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3262660..dfb1c6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d4=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','Schedule,\x20%s,\x20%s','message','catch','lodash','util','bluebird','randomstring','ioredis'];(function(_0xca1a30,_0x34b576){var _0x29a358=function(_0x2009dc){while(--_0x2009dc){_0xca1a30['push'](_0xca1a30['shift']());}};_0x29a358(++_0x34b576);}(_0x69d4,0x17b));var _0x469d=function(_0x5e8eae,_0x4f81e0){_0x5e8eae=_0x5e8eae-0x0;var _0xdd09cd=_0x69d4[_0x5e8eae];return _0xdd09cd;};'use strict';var _=require(_0x469d('0x0'));var util=require(_0x469d('0x1'));var moment=require('moment');var BPromise=require(_0x469d('0x2'));var rs=require(_0x469d('0x3'));var fs=require('fs');var Redis=require(_0x469d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x469d('0x5'));var logger=require(_0x469d('0x6'))(_0x469d('0x7'));var config=require(_0x469d('0x8'));var jayson=require(_0x469d('0x9'));var client=jayson[_0x469d('0xa')][_0x469d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xc4d2b2,_0x40dbae,_0x2b397a){return new BPromise(function(_0x6c321d,_0x5ed666){return client[_0x469d('0xc')](_0xc4d2b2,_0x2b397a)[_0x469d('0xd')](function(_0x2621aa){logger[_0x469d('0xe')]('Schedule,\x20%s,\x20%s',_0x40dbae,_0x469d('0xf'));logger[_0x469d('0x10')](_0x469d('0x11'),_0x40dbae,_0x469d('0xf'),JSON[_0x469d('0x12')](_0x2621aa));if(_0x2621aa[_0x469d('0x13')]){if(_0x2621aa[_0x469d('0x13')][_0x469d('0x14')]===0x1f4){logger[_0x469d('0x13')](_0x469d('0x15'),_0x40dbae,_0x2621aa[_0x469d('0x13')][_0x469d('0x16')]);return _0x5ed666(_0x2621aa[_0x469d('0x13')]['message']);}logger[_0x469d('0x13')]('Schedule,\x20%s,\x20%s',_0x40dbae,_0x2621aa[_0x469d('0x13')][_0x469d('0x16')]);return _0x6c321d(_0x2621aa['error'][_0x469d('0x16')]);}else{logger[_0x469d('0xe')](_0x469d('0x15'),_0x40dbae,'request\x20sent');_0x6c321d(_0x2621aa['result'][_0x469d('0x16')]);}})[_0x469d('0x17')](function(_0x5d80c5){logger[_0x469d('0x13')](_0x469d('0x15'),_0x40dbae,_0x5d80c5);_0x5ed666(_0x5d80c5);});});}
\ No newline at end of file
+var _0xb3b2=['result','catch','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','Schedule,\x20%s,\x20%s','request\x20sent','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x54a761,_0x431fd4){var _0x37d1da=function(_0x5ca617){while(--_0x5ca617){_0x54a761['push'](_0x54a761['shift']());}};_0x37d1da(++_0x431fd4);}(_0xb3b2,0x6b));var _0x2b3b=function(_0x35695f,_0x41aa07){_0x35695f=_0x35695f-0x0;var _0xc68766=_0xb3b2[_0x35695f];return _0xc68766;};'use strict';var _=require(_0x2b3b('0x0'));var util=require('util');var moment=require(_0x2b3b('0x1'));var BPromise=require('bluebird');var rs=require(_0x2b3b('0x2'));var fs=require('fs');var Redis=require(_0x2b3b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x2b3b('0x4'));var logger=require(_0x2b3b('0x5'))(_0x2b3b('0x6'));var config=require(_0x2b3b('0x7'));var jayson=require(_0x2b3b('0x8'));var client=jayson[_0x2b3b('0x9')][_0x2b3b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x39b260,_0xef2a5f,_0x5c1e75){return new BPromise(function(_0x10908c,_0x45db7d){return client['request'](_0x39b260,_0x5c1e75)['then'](function(_0x3d6cdc){logger[_0x2b3b('0xb')](_0x2b3b('0xc'),_0xef2a5f,_0x2b3b('0xd'));logger['debug'](_0x2b3b('0xe'),_0xef2a5f,'request\x20sent',JSON[_0x2b3b('0xf')](_0x3d6cdc));if(_0x3d6cdc[_0x2b3b('0x10')]){if(_0x3d6cdc[_0x2b3b('0x10')][_0x2b3b('0x11')]===0x1f4){logger[_0x2b3b('0x10')]('Schedule,\x20%s,\x20%s',_0xef2a5f,_0x3d6cdc[_0x2b3b('0x10')]['message']);return _0x45db7d(_0x3d6cdc[_0x2b3b('0x10')][_0x2b3b('0x12')]);}logger[_0x2b3b('0x10')](_0x2b3b('0xc'),_0xef2a5f,_0x3d6cdc[_0x2b3b('0x10')][_0x2b3b('0x12')]);return _0x10908c(_0x3d6cdc[_0x2b3b('0x10')][_0x2b3b('0x12')]);}else{logger['info'](_0x2b3b('0xc'),_0xef2a5f,_0x2b3b('0xd'));_0x10908c(_0x3d6cdc[_0x2b3b('0x13')][_0x2b3b('0x12')]);}})[_0x2b3b('0x14')](function(_0xe49290){logger[_0x2b3b('0x10')](_0x2b3b('0xc'),_0xef2a5f,_0xe49290);_0x45db7d(_0xe49290);});});}
\ No newline at end of file
index 36a8018..a8650fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb7e=['get','isAuthenticated','/describe','describe','download','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./screenRecording.controller'];(function(_0x25bcc3,_0xaf7fd3){var _0x18a543=function(_0x3e0bc6){while(--_0x3e0bc6){_0x25bcc3['push'](_0x25bcc3['shift']());}};_0x18a543(++_0xaf7fd3);}(_0xdb7e,0x10a));var _0xedb7=function(_0x3b2f61,_0x18856b){_0x3b2f61=_0x3b2f61-0x0;var _0xec40dc=_0xdb7e[_0x3b2f61];return _0xec40dc;};'use strict';var multer=require(_0xedb7('0x0'));var util=require(_0xedb7('0x1'));var path=require(_0xedb7('0x2'));var timeout=require(_0xedb7('0x3'));var express=require(_0xedb7('0x4'));var router=express[_0xedb7('0x5')]();var fs_extra=require(_0xedb7('0x6'));var auth=require(_0xedb7('0x7'));var interaction=require(_0xedb7('0x8'));var config=require('../../config/environment');var controller=require(_0xedb7('0x9'));router[_0xedb7('0xa')]('/',auth[_0xedb7('0xb')](),controller['index']);router[_0xedb7('0xa')](_0xedb7('0xc'),auth['isAuthenticated'](),controller[_0xedb7('0xd')]);router[_0xedb7('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xedb7('0xa')]('/:id/download',auth[_0xedb7('0xb')](),controller[_0xedb7('0xe')]);router[_0xedb7('0xf')]('/',auth['isAuthenticated'](),controller[_0xedb7('0x10')]);router[_0xedb7('0x11')](_0xedb7('0x12'),auth[_0xedb7('0xb')](),controller[_0xedb7('0x13')]);router[_0xedb7('0x14')](_0xedb7('0x12'),auth[_0xedb7('0xb')](),controller[_0xedb7('0x15')]);module[_0xedb7('0x16')]=router;
\ No newline at end of file
+var _0xd589=['download','post','create','put','update','delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','/:id','show','/:id/download'];(function(_0x3bc459,_0x3d5b31){var _0x2c8eeb=function(_0x3c80c8){while(--_0x3c80c8){_0x3bc459['push'](_0x3bc459['shift']());}};_0x2c8eeb(++_0x3d5b31);}(_0xd589,0xe3));var _0x9d58=function(_0x2af4ae,_0x18396b){_0x2af4ae=_0x2af4ae-0x0;var _0x2894b=_0xd589[_0x2af4ae];return _0x2894b;};'use strict';var multer=require(_0x9d58('0x0'));var util=require(_0x9d58('0x1'));var path=require('path');var timeout=require(_0x9d58('0x2'));var express=require('express');var router=express[_0x9d58('0x3')]();var fs_extra=require(_0x9d58('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x9d58('0x5'));var config=require(_0x9d58('0x6'));var controller=require(_0x9d58('0x7'));router[_0x9d58('0x8')]('/',auth[_0x9d58('0x9')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x9d58('0x8')](_0x9d58('0xa'),auth['isAuthenticated'](),controller[_0x9d58('0xb')]);router['get'](_0x9d58('0xc'),auth['isAuthenticated'](),controller[_0x9d58('0xd')]);router[_0x9d58('0xe')]('/',auth[_0x9d58('0x9')](),controller[_0x9d58('0xf')]);router[_0x9d58('0x10')](_0x9d58('0xa'),auth[_0x9d58('0x9')](),controller[_0x9d58('0x11')]);router[_0x9d58('0x12')]('/:id',auth[_0x9d58('0x9')](),controller['destroy']);module[_0x9d58('0x13')]=router;
\ No newline at end of file
index 9f44bdf..32bdc88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13b6=['setDataValue','INTEGER','startedAt','subtract','DATE','format','MM-DD-YYYY\x20HH:mm','toString','closedAt','createdAt','updatedAt','sequelize','path','../../config/environment','exports','VIRTUAL','value','extname','getDataValue','STRING'];(function(_0x673722,_0x275d7e){var _0x21249c=function(_0x25b4e7){while(--_0x25b4e7){_0x673722['push'](_0x673722['shift']());}};_0x21249c(++_0x275d7e);}(_0x13b6,0x97));var _0x613b=function(_0x10d342,_0x7361c4){_0x10d342=_0x10d342-0x0;var _0x4e4be9=_0x13b6[_0x10d342];return _0x4e4be9;};'use strict';var Sequelize=require(_0x613b('0x0'));var moment=require('moment');var path=require(_0x613b('0x1'));var config=require(_0x613b('0x2'));module[_0x613b('0x3')]={'format':{'type':Sequelize[_0x613b('0x4')],'get':function(){return this['getDataValue'](_0x613b('0x5'))?path[_0x613b('0x6')](this[_0x613b('0x7')]('value')):undefined;}},'interactionid':{'type':Sequelize[_0x613b('0x8')]},'channel':{'type':Sequelize[_0x613b('0x8')]},'value':{'type':Sequelize[_0x613b('0x8')],'set':function(_0x593a18){var _0x31a96f=_0x593a18['replace'](/\\/g,'/');this[_0x613b('0x9')]('value',_0x31a96f);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x613b('0xa')],'set':function(_0x37dbc7){this[_0x613b('0x9')](_0x613b('0xb'),moment()[_0x613b('0xc')](_0x37dbc7,'ms'));this['setDataValue']('closedAt',moment());this[_0x613b('0x9')]('duration',_0x37dbc7);}},'startedAt':{'type':Sequelize[_0x613b('0xd')],'get':function(){return moment(this['getDataValue']('startedAt'))[_0x613b('0xe')](_0x613b('0xf'))[_0x613b('0x10')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x613b('0x7')](_0x613b('0x11')))[_0x613b('0xe')](_0x613b('0xf'))[_0x613b('0x10')]();}},'createdAt':{'type':Sequelize[_0x613b('0xd')],'get':function(){return moment(this[_0x613b('0x7')](_0x613b('0x12')))[_0x613b('0xe')](_0x613b('0xf'))['toString']();}},'updatedAt':{'type':Sequelize[_0x613b('0xd')],'get':function(){return moment(this[_0x613b('0x7')](_0x613b('0x13')))['format']('MM-DD-YYYY\x20HH:mm')[_0x613b('0x10')]();}}};
\ No newline at end of file
+var _0x6d38=['subtract','setDataValue','duration','format','MM-DD-YYYY\x20HH:mm','toString','DATE','closedAt','createdAt','moment','path','../../config/environment','getDataValue','extname','value','STRING','INTEGER','startedAt'];(function(_0x93dd2b,_0x4078bb){var _0x2d62bb=function(_0x5042bd){while(--_0x5042bd){_0x93dd2b['push'](_0x93dd2b['shift']());}};_0x2d62bb(++_0x4078bb);}(_0x6d38,0x1ef));var _0x86d3=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x6d38[_0x173441];return _0x2423a8;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x86d3('0x0'));var path=require(_0x86d3('0x1'));var config=require(_0x86d3('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x86d3('0x3')]('value')?path[_0x86d3('0x4')](this[_0x86d3('0x3')](_0x86d3('0x5'))):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x86d3('0x6')]},'value':{'type':Sequelize[_0x86d3('0x6')],'set':function(_0x33d4aa){var _0x2eaa15=_0x33d4aa['replace'](/\\/g,'/');this['setDataValue'](_0x86d3('0x5'),_0x2eaa15);}},'rating':{'type':Sequelize[_0x86d3('0x7')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x86d3('0x7')],'set':function(_0x499640){this['setDataValue'](_0x86d3('0x8'),moment()[_0x86d3('0x9')](_0x499640,'ms'));this['setDataValue']('closedAt',moment());this[_0x86d3('0xa')](_0x86d3('0xb'),_0x499640);}},'startedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x86d3('0x3')]('startedAt'))[_0x86d3('0xc')](_0x86d3('0xd'))[_0x86d3('0xe')]();}},'closedAt':{'type':Sequelize[_0x86d3('0xf')],'get':function(){return moment(this[_0x86d3('0x3')](_0x86d3('0x10')))[_0x86d3('0xc')](_0x86d3('0xd'))['toString']();}},'createdAt':{'type':Sequelize[_0x86d3('0xf')],'get':function(){return moment(this[_0x86d3('0x3')](_0x86d3('0x11')))[_0x86d3('0xc')](_0x86d3('0xd'))[_0x86d3('0xe')]();}},'updatedAt':{'type':Sequelize[_0x86d3('0xf')],'get':function(){return moment(this[_0x86d3('0x3')]('updatedAt'))[_0x86d3('0xc')](_0x86d3('0xd'))[_0x86d3('0xe')]();}}};
\ No newline at end of file
index d5d3015..e038712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x038b=['offset','undefined','count','limit','set','Content-Range','json','reject','save','update','then','error','name','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','differenceBy','format','keys','filters','intersection','query','attributes','fields','length','nolimit','order','sort','where','filter','merge','includeAll','include','findAll','rows','catch','params','find','create','body','duration','createdAt','closedAt','value','describe','../../components/encryptor','uniqueid','root','%s.cypher','decryptFile','secrets','recording','join','server/files/screen_recordings','existsSync','ValidationError','ScreenRecording\x20not\x20found','filename','download','unlink','message','send','Not\x20found','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','unlinkSync','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','lodash','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0xe94404,_0x13e6e7){var _0x1c0955=function(_0x5d58ff){while(--_0x5d58ff){_0xe94404['push'](_0xe94404['shift']());}};_0x1c0955(++_0x13e6e7);}(_0x038b,0x114));var _0xb038=function(_0xe3f4a8,_0x56a67){_0xe3f4a8=_0xe3f4a8-0x0;var _0x2d28f1=_0x038b[_0xe3f4a8];return _0x2d28f1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb038('0x0'));var zipdir=require(_0xb038('0x1'));var jsonpatch=require(_0xb038('0x2'));var rp=require('request-promise');var moment=require(_0xb038('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb038('0x4'));var util=require(_0xb038('0x5'));var path=require('path');var sox=require(_0xb038('0x6'));var csv=require(_0xb038('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb038('0x8'));var squel=require(_0xb038('0x9'));var crypto=require(_0xb038('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb038('0x7'));var querystring=require(_0xb038('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb038('0xc'));var qs=require(_0xb038('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb038('0xe'));var logger=require(_0xb038('0xf'))(_0xb038('0x10'));var utils=require(_0xb038('0x11'));var config=require(_0xb038('0x12'));var licenseUtil=require(_0xb038('0x13'));var db=require(_0xb038('0x14'))['db'];function respondWithStatusCode(_0x439751,_0x16e4a3){_0x16e4a3=_0x16e4a3||0xcc;return function(_0x57acd8){if(_0x57acd8){return _0x439751[_0xb038('0x15')](_0x16e4a3);}return _0x439751[_0xb038('0x16')](_0x16e4a3)[_0xb038('0x17')]();};}function respondWithResult(_0x3cc717,_0x3a71a6){_0x3a71a6=_0x3a71a6||0xc8;return function(_0x13acc7){if(_0x13acc7){return _0x3cc717[_0xb038('0x16')](_0x3a71a6)['json'](_0x13acc7);}};}function respondWithFilteredResult(_0xe8aa7c,_0x26e4f2){return function(_0x183141){if(_0x183141){var _0x39323e=typeof _0x26e4f2[_0xb038('0x18')]===_0xb038('0x19')&&typeof _0x26e4f2['limit']===_0xb038('0x19');var _0x3039b0=_0x183141[_0xb038('0x1a')];var _0x3b095a=_0x39323e?0x0:_0x26e4f2['offset'];var _0x49b237=_0x39323e?_0x183141[_0xb038('0x1a')]:_0x26e4f2[_0xb038('0x18')]+_0x26e4f2[_0xb038('0x1b')];var _0x31c348;if(_0x49b237>=_0x3039b0){_0x49b237=_0x3039b0;_0x31c348=0xc8;}else{_0x31c348=0xce;}_0xe8aa7c['status'](_0x31c348);return _0xe8aa7c[_0xb038('0x1c')](_0xb038('0x1d'),_0x3b095a+'-'+_0x49b237+'/'+_0x3039b0)[_0xb038('0x1e')](_0x183141);}return null;};}function patchUpdates(_0x33a377){return function(_0xc6cd61){try{jsonpatch['apply'](_0xc6cd61,_0x33a377,!![]);}catch(_0x2e0369){return BPromise[_0xb038('0x1f')](_0x2e0369);}return _0xc6cd61[_0xb038('0x20')]();};}function saveUpdates(_0x87b899,_0x5f123d){return function(_0x2812c9){if(_0x2812c9){return _0x2812c9[_0xb038('0x21')](_0x87b899)['then'](function(_0x1eb9cd){return _0x1eb9cd;});}return null;};}function removeEntity(_0x43d403,_0x573f93){return function(_0x241329){if(_0x241329){return _0x241329['destroy']()[_0xb038('0x22')](function(){_0x43d403[_0xb038('0x16')](0xcc)[_0xb038('0x17')]();});}};}function handleEntityNotFound(_0x1df7c4,_0x5d4343){return function(_0xe4ceda){if(!_0xe4ceda){_0x1df7c4[_0xb038('0x15')](0x194);}return _0xe4ceda;};}function handleError(_0x576be5,_0xb6d93f){_0xb6d93f=_0xb6d93f||0x1f4;return function(_0x33cf3c){logger[_0xb038('0x23')](_0x33cf3c['stack']);if(_0x33cf3c[_0xb038('0x24')]){delete _0x33cf3c[_0xb038('0x24')];}_0x576be5[_0xb038('0x16')](_0xb6d93f)['send'](_0x33cf3c);};}exports[_0xb038('0x25')]=function(_0x2855a6,_0x28a6a9){var _0x12b3b6={},_0xc387d={},_0x551b55={'count':0x0,'rows':[]};var _0x1783d4=_[_0xb038('0x26')](db[_0xb038('0x27')][_0xb038('0x28')],function(_0x1abe23){return{'name':_0x1abe23[_0xb038('0x29')],'type':_0x1abe23[_0xb038('0x2a')][_0xb038('0x2b')]};});_0xc387d[_0xb038('0x2c')]=_[_0xb038('0x2d')](_[_0xb038('0x26')](_0x1783d4,_0xb038('0x24')),[_0xb038('0x2e')]);_0xc387d['query']=_[_0xb038('0x2f')](_0x2855a6['query']);_0xc387d[_0xb038('0x30')]=_[_0xb038('0x31')](_0xc387d[_0xb038('0x2c')],_0xc387d[_0xb038('0x32')]);_0x12b3b6[_0xb038('0x33')]=_[_0xb038('0x31')](_0xc387d[_0xb038('0x2c')],qs[_0xb038('0x34')](_0x2855a6[_0xb038('0x32')][_0xb038('0x34')]));_0x12b3b6['attributes']=_0x12b3b6[_0xb038('0x33')][_0xb038('0x35')]?_0x12b3b6[_0xb038('0x33')]:_0xc387d['model'];if(!_0x2855a6['query']['hasOwnProperty'](_0xb038('0x36'))){_0x12b3b6[_0xb038('0x1b')]=qs[_0xb038('0x1b')](_0x2855a6[_0xb038('0x32')][_0xb038('0x1b')]);_0x12b3b6[_0xb038('0x18')]=qs['offset'](_0x2855a6[_0xb038('0x32')][_0xb038('0x18')]);}_0x12b3b6[_0xb038('0x37')]=qs[_0xb038('0x38')](_0x2855a6['query'][_0xb038('0x38')]);_0x12b3b6[_0xb038('0x39')]=qs['filters'](_['pick'](_0x2855a6[_0xb038('0x32')],_0xc387d[_0xb038('0x30')]),_0x1783d4);if(_0x2855a6[_0xb038('0x32')][_0xb038('0x3a')]){_0x12b3b6[_0xb038('0x39')]=_['merge'](_0x12b3b6[_0xb038('0x39')],{'$or':_[_0xb038('0x26')](_0x1783d4,function(_0x26d48c){if(_0x26d48c[_0xb038('0x2a')]!=='VIRTUAL'){var _0x793da9={};_0x793da9[_0x26d48c[_0xb038('0x24')]]={'$like':'%'+_0x2855a6[_0xb038('0x32')]['filter']+'%'};return _0x793da9;}})});}_0x12b3b6=_[_0xb038('0x3b')]({},_0x12b3b6,_0x2855a6['options']);var _0x36f281={'where':_0x12b3b6[_0xb038('0x39')]};return db[_0xb038('0x27')]['count'](_0x36f281)[_0xb038('0x22')](function(_0x357c78){_0x551b55[_0xb038('0x1a')]=_0x357c78;if(_0x2855a6['query'][_0xb038('0x3c')]){_0x12b3b6[_0xb038('0x3d')]=[{'all':!![]}];}return db[_0xb038('0x27')][_0xb038('0x3e')](_0x12b3b6);})['then'](function(_0x28b922){_0x551b55[_0xb038('0x3f')]=_0x28b922;return _0x551b55;})[_0xb038('0x22')](respondWithFilteredResult(_0x28a6a9,_0x12b3b6))[_0xb038('0x40')](handleError(_0x28a6a9,null));};exports['show']=function(_0x19dc7b,_0x269c7d){var _0x57816c={'raw':![],'where':{'id':_0x19dc7b[_0xb038('0x41')]['id']}},_0x207fb5={};_0x207fb5[_0xb038('0x2c')]=_['keys'](db[_0xb038('0x27')][_0xb038('0x28')]);_0x207fb5['query']=_['keys'](_0x19dc7b[_0xb038('0x32')]);_0x207fb5[_0xb038('0x30')]=_[_0xb038('0x31')](_0x207fb5[_0xb038('0x2c')],_0x207fb5[_0xb038('0x32')]);_0x57816c[_0xb038('0x33')]=_[_0xb038('0x31')](_0x207fb5[_0xb038('0x2c')],qs['fields'](_0x19dc7b['query']['fields']));_0x57816c[_0xb038('0x33')]=_0x57816c[_0xb038('0x33')]['length']?_0x57816c[_0xb038('0x33')]:_0x207fb5[_0xb038('0x2c')];if(_0x19dc7b[_0xb038('0x32')]['includeAll']){_0x57816c[_0xb038('0x3d')]=[{'all':!![]}];}_0x57816c=_['merge']({},_0x57816c,_0x19dc7b['options']);return db[_0xb038('0x27')][_0xb038('0x42')](_0x57816c)[_0xb038('0x22')](handleEntityNotFound(_0x269c7d,null))[_0xb038('0x22')](respondWithResult(_0x269c7d,null))[_0xb038('0x40')](handleError(_0x269c7d,null));};exports[_0xb038('0x43')]=function(_0x2f053a,_0x473aae){return db[_0xb038('0x27')][_0xb038('0x43')](_0x2f053a['body'],{})[_0xb038('0x22')](respondWithResult(_0x473aae,0xc9))[_0xb038('0x40')](handleError(_0x473aae,null));};exports['update']=function(_0x906c9c,_0x19ab72){if(_0x906c9c['body']['id']){delete _0x906c9c[_0xb038('0x44')]['id'];}delete _0x906c9c[_0xb038('0x44')][_0xb038('0x45')];delete _0x906c9c[_0xb038('0x44')][_0xb038('0x46')];delete _0x906c9c[_0xb038('0x44')][_0xb038('0x47')];delete _0x906c9c[_0xb038('0x44')][_0xb038('0x48')];return db['ScreenRecording'][_0xb038('0x42')]({'where':{'id':_0x906c9c[_0xb038('0x41')]['id']}})[_0xb038('0x22')](handleEntityNotFound(_0x19ab72,null))[_0xb038('0x22')](saveUpdates(_0x906c9c[_0xb038('0x44')],null))[_0xb038('0x22')](respondWithResult(_0x19ab72,null))['catch'](handleError(_0x19ab72,null));};exports[_0xb038('0x49')]=function(_0x2f3622,_0x2b2b4d){return db[_0xb038('0x27')][_0xb038('0x49')]()[_0xb038('0x22')](respondWithResult(_0x2b2b4d,null))[_0xb038('0x40')](handleError(_0x2b2b4d,null));};exports['download']=function(_0x3abe7a,_0x5c4a79,_0x77f211){var _0x1ea8ad=require(_0xb038('0x4a'));var _0x998fe3=![];var _0x1518c4={};if(_0x3abe7a['query']['type']&&_0x3abe7a['query'][_0xb038('0x2a')]===_0xb038('0x4b')){_0x1518c4[_0xb038('0x4b')]=_0x3abe7a[_0xb038('0x41')]['id'];}else{_0x1518c4['id']=_0x3abe7a[_0xb038('0x41')]['id'];}return db[_0xb038('0x27')]['find']({'where':_0x1518c4,'attributes':['id',_0xb038('0x48')],'raw':!![]})[_0xb038('0x22')](handleEntityNotFound(_0x5c4a79,null))['then'](function(_0x5b27d3){if(_0x5b27d3){var _0xf2907b=path['join'](config[_0xb038('0x4c')],'server/files/screen_recordings',_0x5b27d3[_0xb038('0x48')]);var _0x4677b8=util[_0xb038('0x2e')](_0xb038('0x4d'),_0xf2907b);if(fs['existsSync'](_0x4677b8)){_0x998fe3=!![];return _0x1ea8ad[_0xb038('0x4e')](_0x4677b8,_0xf2907b,config[_0xb038('0x4f')][_0xb038('0x50')])[_0xb038('0x22')](function(){return _0x5b27d3;});}return _0x5b27d3;}})[_0xb038('0x22')](function(_0x1246c8){if(_0x1246c8){var _0x14a553=path[_0xb038('0x51')](config[_0xb038('0x4c')],_0xb038('0x52'),_0x1246c8[_0xb038('0x48')]);if(!fs[_0xb038('0x53')](_0x14a553)){throw new db['Sequelize'][(_0xb038('0x54'))](_0xb038('0x55'));}if(_0x1246c8[_0xb038('0x56')]){return _0x5c4a79[_0xb038('0x57')](_0x14a553,_0x1246c8[_0xb038('0x56')]+path['extname'](_0x14a553),function(){if(_0x998fe3){fs[_0xb038('0x58')](_0x14a553);}});}else{return _0x5c4a79['download'](_0x14a553,function(_0xfb3ce6){if(_0x998fe3){fs[_0xb038('0x58')](_0x14a553);}});}}})['catch'](function(_0x15d61c){if(_0x15d61c[_0xb038('0x59')]===_0xb038('0x55')){_0x5c4a79[_0xb038('0x16')](0x194)[_0xb038('0x5a')](_0xb038('0x5b'));}else{return handleError(_0x5c4a79,null);}});};exports[_0xb038('0x5c')]=function(_0xe275b8,_0x769f1e){return db[_0xb038('0x27')]['find']({'where':{'id':_0xe275b8[_0xb038('0x41')]['id']}})['then'](function(_0x189894){if(_[_0xb038('0x5d')](_0x189894)){throw new ReferenceError(_0xb038('0x5e'));}return _0x189894;})[_0xb038('0x22')](function(_0x1f5f3f){var _0x23fb92=path[_0xb038('0x51')](config['root'],'server/files/screen_recordings',_0x1f5f3f[_0xb038('0x48')]);logger[_0xb038('0x5f')](_0xb038('0x60'),_0x23fb92);if(!_['isNil'](_0x1f5f3f['value'])&&fs[_0xb038('0x53')](_0x23fb92)){logger['info'](_0xb038('0x61')+_0x23fb92+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xb038('0x62')](_0x23fb92);}_0x23fb92=_0x23fb92+'.cypher';if(!_[_0xb038('0x5d')](_0x1f5f3f[_0xb038('0x48')])&&fs[_0xb038('0x53')](_0x23fb92)){logger[_0xb038('0x5f')](_0xb038('0x61')+_0x23fb92+_0xb038('0x63'));fs['unlinkSync'](_0x23fb92);}return _0x1f5f3f;})['then'](function(_0x45e628){if(!_0x45e628)throw new InternalError();return _0x45e628['destroy']();})[_0xb038('0x22')](function(){_0x769f1e[_0xb038('0x16')](0xcc)[_0xb038('0x17')]();})['catch'](handleError(_0x769f1e,null));};
\ No newline at end of file
+var _0x207c=['sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','name','send','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','differenceBy','format','query','keys','filters','attributes','intersection','fields','length','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','show','params','options','find','catch','create','body','duration','createdAt','value','describe','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','%s.cypher','existsSync','secrets','recording','Sequelize','ScreenRecording\x20not\x20found','filename','extname','unlink','download','message','Not\x20found','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../mysqldb'];(function(_0x52a812,_0x50ed23){var _0x5a1ca5=function(_0xf6961c){while(--_0xf6961c){_0x52a812['push'](_0x52a812['shift']());}};_0x5a1ca5(++_0x50ed23);}(_0x207c,0x1e8));var _0xc207=function(_0x1c6089,_0x3816e2){_0x1c6089=_0x1c6089-0x0;var _0x4d97c1=_0x207c[_0x1c6089];return _0x4d97c1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc207('0x0'));var zipdir=require(_0xc207('0x1'));var jsonpatch=require(_0xc207('0x2'));var rp=require(_0xc207('0x3'));var moment=require(_0xc207('0x4'));var BPromise=require(_0xc207('0x5'));var Mustache=require(_0xc207('0x6'));var util=require('util');var path=require(_0xc207('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc207('0x8'));var _=require(_0xc207('0x9'));var squel=require(_0xc207('0xa'));var crypto=require('crypto');var jsforce=require(_0xc207('0xb'));var deskjs=require(_0xc207('0xc'));var toCsv=require(_0xc207('0xd'));var querystring=require('querystring');var Papa=require(_0xc207('0xe'));var Redis=require(_0xc207('0xf'));var authService=require(_0xc207('0x10'));var qs=require(_0xc207('0x11'));var as=require(_0xc207('0x12'));var hardwareService=require(_0xc207('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xc207('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc207('0x15'))['db'];function respondWithStatusCode(_0x2782ce,_0x59d401){_0x59d401=_0x59d401||0xcc;return function(_0x3e1108){if(_0x3e1108){return _0x2782ce[_0xc207('0x16')](_0x59d401);}return _0x2782ce[_0xc207('0x17')](_0x59d401)[_0xc207('0x18')]();};}function respondWithResult(_0xe993a0,_0x51e967){_0x51e967=_0x51e967||0xc8;return function(_0xc62672){if(_0xc62672){return _0xe993a0[_0xc207('0x17')](_0x51e967)[_0xc207('0x19')](_0xc62672);}};}function respondWithFilteredResult(_0x4031ad,_0x4ef6c4){return function(_0x564cef){if(_0x564cef){var _0x554e5c=typeof _0x4ef6c4[_0xc207('0x1a')]===_0xc207('0x1b')&&typeof _0x4ef6c4[_0xc207('0x1c')]===_0xc207('0x1b');var _0x4b8f44=_0x564cef[_0xc207('0x1d')];var _0x282595=_0x554e5c?0x0:_0x4ef6c4[_0xc207('0x1a')];var _0x5f288e=_0x554e5c?_0x564cef[_0xc207('0x1d')]:_0x4ef6c4['offset']+_0x4ef6c4[_0xc207('0x1c')];var _0x33ddb1;if(_0x5f288e>=_0x4b8f44){_0x5f288e=_0x4b8f44;_0x33ddb1=0xc8;}else{_0x33ddb1=0xce;}_0x4031ad[_0xc207('0x17')](_0x33ddb1);return _0x4031ad[_0xc207('0x1e')](_0xc207('0x1f'),_0x282595+'-'+_0x5f288e+'/'+_0x4b8f44)[_0xc207('0x19')](_0x564cef);}return null;};}function patchUpdates(_0x35c0b0){return function(_0x464dea){try{jsonpatch[_0xc207('0x20')](_0x464dea,_0x35c0b0,!![]);}catch(_0x2bd2eb){return BPromise[_0xc207('0x21')](_0x2bd2eb);}return _0x464dea[_0xc207('0x22')]();};}function saveUpdates(_0x40de25,_0x4b52a7){return function(_0x163b36){if(_0x163b36){return _0x163b36['update'](_0x40de25)[_0xc207('0x23')](function(_0x3ac142){return _0x3ac142;});}return null;};}function removeEntity(_0x1eabe8,_0x83253f){return function(_0x3539f4){if(_0x3539f4){return _0x3539f4[_0xc207('0x24')]()[_0xc207('0x23')](function(){_0x1eabe8[_0xc207('0x17')](0xcc)[_0xc207('0x18')]();});}};}function handleEntityNotFound(_0x2385f7,_0x25c91e){return function(_0x27df03){if(!_0x27df03){_0x2385f7[_0xc207('0x16')](0x194);}return _0x27df03;};}function handleError(_0x138970,_0x1445d3){_0x1445d3=_0x1445d3||0x1f4;return function(_0x56a066){logger[_0xc207('0x25')](_0x56a066['stack']);if(_0x56a066['name']){delete _0x56a066[_0xc207('0x26')];}_0x138970[_0xc207('0x17')](_0x1445d3)[_0xc207('0x27')](_0x56a066);};}exports[_0xc207('0x28')]=function(_0x6a653d,_0x478af7){var _0xe5e848={},_0x463ac8={},_0x6223ef={'count':0x0,'rows':[]};var _0x1bec3f=_[_0xc207('0x29')](db[_0xc207('0x2a')][_0xc207('0x2b')],function(_0x27bc72){return{'name':_0x27bc72[_0xc207('0x2c')],'type':_0x27bc72[_0xc207('0x2d')][_0xc207('0x2e')]};});_0x463ac8[_0xc207('0x2f')]=_[_0xc207('0x30')](_['map'](_0x1bec3f,_0xc207('0x26')),[_0xc207('0x31')]);_0x463ac8[_0xc207('0x32')]=_[_0xc207('0x33')](_0x6a653d[_0xc207('0x32')]);_0x463ac8[_0xc207('0x34')]=_['intersection'](_0x463ac8[_0xc207('0x2f')],_0x463ac8[_0xc207('0x32')]);_0xe5e848[_0xc207('0x35')]=_[_0xc207('0x36')](_0x463ac8['model'],qs[_0xc207('0x37')](_0x6a653d[_0xc207('0x32')][_0xc207('0x37')]));_0xe5e848[_0xc207('0x35')]=_0xe5e848[_0xc207('0x35')][_0xc207('0x38')]?_0xe5e848[_0xc207('0x35')]:_0x463ac8[_0xc207('0x2f')];if(!_0x6a653d[_0xc207('0x32')]['hasOwnProperty']('nolimit')){_0xe5e848[_0xc207('0x1c')]=qs[_0xc207('0x1c')](_0x6a653d[_0xc207('0x32')][_0xc207('0x1c')]);_0xe5e848['offset']=qs[_0xc207('0x1a')](_0x6a653d[_0xc207('0x32')][_0xc207('0x1a')]);}_0xe5e848[_0xc207('0x39')]=qs[_0xc207('0x3a')](_0x6a653d['query'][_0xc207('0x3a')]);_0xe5e848[_0xc207('0x3b')]=qs['filters'](_[_0xc207('0x3c')](_0x6a653d['query'],_0x463ac8[_0xc207('0x34')]),_0x1bec3f);if(_0x6a653d[_0xc207('0x32')]['filter']){_0xe5e848[_0xc207('0x3b')]=_[_0xc207('0x3d')](_0xe5e848[_0xc207('0x3b')],{'$or':_['map'](_0x1bec3f,function(_0x5b3041){if(_0x5b3041[_0xc207('0x2d')]!==_0xc207('0x3e')){var _0x41d66c={};_0x41d66c[_0x5b3041[_0xc207('0x26')]]={'$like':'%'+_0x6a653d['query'][_0xc207('0x3f')]+'%'};return _0x41d66c;}})});}_0xe5e848=_['merge']({},_0xe5e848,_0x6a653d['options']);var _0x4c10ed={'where':_0xe5e848['where']};return db[_0xc207('0x2a')][_0xc207('0x1d')](_0x4c10ed)[_0xc207('0x23')](function(_0x487f98){_0x6223ef[_0xc207('0x1d')]=_0x487f98;if(_0x6a653d[_0xc207('0x32')][_0xc207('0x40')]){_0xe5e848[_0xc207('0x41')]=[{'all':!![]}];}return db['ScreenRecording'][_0xc207('0x42')](_0xe5e848);})[_0xc207('0x23')](function(_0x123a46){_0x6223ef[_0xc207('0x43')]=_0x123a46;return _0x6223ef;})[_0xc207('0x23')](respondWithFilteredResult(_0x478af7,_0xe5e848))['catch'](handleError(_0x478af7,null));};exports[_0xc207('0x44')]=function(_0x19a67d,_0x3a935a){var _0x471a85={'raw':![],'where':{'id':_0x19a67d[_0xc207('0x45')]['id']}},_0x153490={};_0x153490[_0xc207('0x2f')]=_[_0xc207('0x33')](db[_0xc207('0x2a')]['rawAttributes']);_0x153490[_0xc207('0x32')]=_[_0xc207('0x33')](_0x19a67d['query']);_0x153490[_0xc207('0x34')]=_[_0xc207('0x36')](_0x153490[_0xc207('0x2f')],_0x153490[_0xc207('0x32')]);_0x471a85[_0xc207('0x35')]=_['intersection'](_0x153490[_0xc207('0x2f')],qs[_0xc207('0x37')](_0x19a67d[_0xc207('0x32')]['fields']));_0x471a85[_0xc207('0x35')]=_0x471a85[_0xc207('0x35')][_0xc207('0x38')]?_0x471a85[_0xc207('0x35')]:_0x153490['model'];if(_0x19a67d['query'][_0xc207('0x40')]){_0x471a85[_0xc207('0x41')]=[{'all':!![]}];}_0x471a85=_[_0xc207('0x3d')]({},_0x471a85,_0x19a67d[_0xc207('0x46')]);return db[_0xc207('0x2a')][_0xc207('0x47')](_0x471a85)[_0xc207('0x23')](handleEntityNotFound(_0x3a935a,null))[_0xc207('0x23')](respondWithResult(_0x3a935a,null))[_0xc207('0x48')](handleError(_0x3a935a,null));};exports[_0xc207('0x49')]=function(_0x2afcd1,_0x2fda4f){return db['ScreenRecording']['create'](_0x2afcd1[_0xc207('0x4a')],{})[_0xc207('0x23')](respondWithResult(_0x2fda4f,0xc9))[_0xc207('0x48')](handleError(_0x2fda4f,null));};exports['update']=function(_0x2b89e0,_0x3f712d){if(_0x2b89e0[_0xc207('0x4a')]['id']){delete _0x2b89e0[_0xc207('0x4a')]['id'];}delete _0x2b89e0['body'][_0xc207('0x4b')];delete _0x2b89e0['body'][_0xc207('0x4c')];delete _0x2b89e0['body']['closedAt'];delete _0x2b89e0[_0xc207('0x4a')][_0xc207('0x4d')];return db['ScreenRecording']['find']({'where':{'id':_0x2b89e0['params']['id']}})[_0xc207('0x23')](handleEntityNotFound(_0x3f712d,null))[_0xc207('0x23')](saveUpdates(_0x2b89e0[_0xc207('0x4a')],null))[_0xc207('0x23')](respondWithResult(_0x3f712d,null))[_0xc207('0x48')](handleError(_0x3f712d,null));};exports[_0xc207('0x4e')]=function(_0x3dc457,_0x1dfdee){return db['ScreenRecording'][_0xc207('0x4e')]()[_0xc207('0x23')](respondWithResult(_0x1dfdee,null))['catch'](handleError(_0x1dfdee,null));};exports['download']=function(_0x362001,_0x47c630,_0x49a78b){var _0x2634d6=require(_0xc207('0x4f'));var _0x356c8c=![];var _0x3b2448={};if(_0x362001[_0xc207('0x32')][_0xc207('0x2d')]&&_0x362001[_0xc207('0x32')][_0xc207('0x2d')]===_0xc207('0x50')){_0x3b2448[_0xc207('0x50')]=_0x362001[_0xc207('0x45')]['id'];}else{_0x3b2448['id']=_0x362001['params']['id'];}return db['ScreenRecording'][_0xc207('0x47')]({'where':_0x3b2448,'attributes':['id',_0xc207('0x4d')],'raw':!![]})[_0xc207('0x23')](handleEntityNotFound(_0x47c630,null))[_0xc207('0x23')](function(_0xaff7a0){if(_0xaff7a0){var _0x21c12b=path[_0xc207('0x51')](config[_0xc207('0x52')],_0xc207('0x53'),_0xaff7a0['value']);var _0x1cc4e3=util[_0xc207('0x31')](_0xc207('0x54'),_0x21c12b);if(fs[_0xc207('0x55')](_0x1cc4e3)){_0x356c8c=!![];return _0x2634d6['decryptFile'](_0x1cc4e3,_0x21c12b,config[_0xc207('0x56')][_0xc207('0x57')])[_0xc207('0x23')](function(){return _0xaff7a0;});}return _0xaff7a0;}})[_0xc207('0x23')](function(_0x464263){if(_0x464263){var _0x45ad58=path[_0xc207('0x51')](config['root'],_0xc207('0x53'),_0x464263[_0xc207('0x4d')]);if(!fs[_0xc207('0x55')](_0x45ad58)){throw new db[(_0xc207('0x58'))]['ValidationError'](_0xc207('0x59'));}if(_0x464263['filename']){return _0x47c630['download'](_0x45ad58,_0x464263[_0xc207('0x5a')]+path[_0xc207('0x5b')](_0x45ad58),function(){if(_0x356c8c){fs[_0xc207('0x5c')](_0x45ad58);}});}else{return _0x47c630[_0xc207('0x5d')](_0x45ad58,function(_0x441d5f){if(_0x356c8c){fs[_0xc207('0x5c')](_0x45ad58);}});}}})[_0xc207('0x48')](function(_0x33c372){if(_0x33c372[_0xc207('0x5e')]===_0xc207('0x59')){_0x47c630[_0xc207('0x17')](0x194)[_0xc207('0x27')](_0xc207('0x5f'));}else{return handleError(_0x47c630,null);}});};exports[_0xc207('0x24')]=function(_0x282ae5,_0x501bca){return db[_0xc207('0x2a')]['find']({'where':{'id':_0x282ae5[_0xc207('0x45')]['id']}})[_0xc207('0x23')](function(_0x2ade23){if(_['isNil'](_0x2ade23)){throw new ReferenceError('Entity\x20not\x20found');}return _0x2ade23;})[_0xc207('0x23')](function(_0x3ac0dd){var _0x2f18a2=path['join'](config[_0xc207('0x52')],_0xc207('0x53'),_0x3ac0dd[_0xc207('0x4d')]);logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x2f18a2);if(!_[_0xc207('0x60')](_0x3ac0dd['value'])&&fs[_0xc207('0x55')](_0x2f18a2)){logger[_0xc207('0x61')](_0xc207('0x62')+_0x2f18a2+_0xc207('0x63'));fs[_0xc207('0x64')](_0x2f18a2);}_0x2f18a2=_0x2f18a2+_0xc207('0x65');if(!_[_0xc207('0x60')](_0x3ac0dd[_0xc207('0x4d')])&&fs['existsSync'](_0x2f18a2)){logger[_0xc207('0x61')](_0xc207('0x62')+_0x2f18a2+_0xc207('0x63'));fs[_0xc207('0x64')](_0x2f18a2);}return _0x3ac0dd;})[_0xc207('0x23')](function(_0x14050a){if(!_0x14050a)throw new InternalError();return _0x14050a[_0xc207('0x24')]();})[_0xc207('0x23')](function(){_0x501bca[_0xc207('0x17')](0xcc)[_0xc207('0x18')]();})[_0xc207('0x48')](handleError(_0x501bca,null));};
\ No newline at end of file
index c031dd0..8aa4348 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55fd=['../../config/logger','api','moment','path','rimraf','./screenRecording.attributes','screen_recordings','util'];(function(_0x4a32e3,_0x2bf09b){var _0x1f7317=function(_0x252d23){while(--_0x252d23){_0x4a32e3['push'](_0x4a32e3['shift']());}};_0x1f7317(++_0x2bf09b);}(_0x55fd,0x1af));var _0xd55f=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0x55fd[_0xbb091];return _0x467a04;};'use strict';var _=require('lodash');var util=require(_0xd55f('0x0'));var logger=require(_0xd55f('0x1'))(_0xd55f('0x2'));var moment=require(_0xd55f('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd55f('0x4'));var rimraf=require(_0xd55f('0x5'));var config=require('../../config/environment');var attributes=require(_0xd55f('0x6'));module['exports']=function(_0x223a59,_0x42bbf8){return _0x223a59['define']('ScreenRecording',attributes,{'tableName':_0xd55f('0x7'),'paranoid':![],'indexes':[{'name':'interactionid','fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d3d=['util','../../config/logger','api','moment','bluebird','path','rimraf','define','ScreenRecording','screen_recordings','interactionid'];(function(_0x1d006a,_0x2812b5){var _0x20a76b=function(_0x15953f){while(--_0x15953f){_0x1d006a['push'](_0x1d006a['shift']());}};_0x20a76b(++_0x2812b5);}(_0x3d3d,0x8f));var _0xd3d3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3d3d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xd3d3('0x0'));var logger=require(_0xd3d3('0x1'))(_0xd3d3('0x2'));var moment=require(_0xd3d3('0x3'));var BPromise=require(_0xd3d3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd3d3('0x5'));var rimraf=require(_0xd3d3('0x6'));var config=require('../../config/environment');var attributes=require('./screenRecording.attributes');module['exports']=function(_0x582e91,_0x2e5acc){return _0x582e91[_0xd3d3('0x7')](_0xd3d3('0x8'),attributes,{'tableName':_0xd3d3('0x9'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0xd3d3('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index d0e9d58..7ee922f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a11=['randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird'];(function(_0x45351d,_0x1c32e3){var _0x4425c3=function(_0x24c4fa){while(--_0x24c4fa){_0x45351d['push'](_0x45351d['shift']());}};_0x4425c3(++_0x1c32e3);}(_0x7a11,0x6a));var _0x17a1=function(_0x421a59,_0x48e6bd){_0x421a59=_0x421a59-0x0;var _0x3d0634=_0x7a11[_0x421a59];return _0x3d0634;};'use strict';var _=require(_0x17a1('0x0'));var util=require(_0x17a1('0x1'));var moment=require(_0x17a1('0x2'));var BPromise=require(_0x17a1('0x3'));var rs=require(_0x17a1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x17a1('0x5'))['db'];var utils=require(_0x17a1('0x6'));var logger=require(_0x17a1('0x7'))('rpc');var config=require(_0x17a1('0x8'));var jayson=require(_0x17a1('0x9'));var client=jayson[_0x17a1('0xa')][_0x17a1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x51ae2d,_0x442826,_0x288c93){return new BPromise(function(_0x427959,_0x287d33){return client[_0x17a1('0xc')](_0x51ae2d,_0x288c93)[_0x17a1('0xd')](function(_0x58d6ad){logger['info'](_0x17a1('0xe'),_0x442826,_0x17a1('0xf'));logger[_0x17a1('0x10')](_0x17a1('0x11'),_0x442826,_0x17a1('0xf'),JSON[_0x17a1('0x12')](_0x58d6ad));if(_0x58d6ad['error']){if(_0x58d6ad[_0x17a1('0x13')]['code']===0x1f4){logger[_0x17a1('0x13')](_0x17a1('0xe'),_0x442826,_0x58d6ad['error'][_0x17a1('0x14')]);return _0x287d33(_0x58d6ad['error'][_0x17a1('0x14')]);}logger['error'](_0x17a1('0xe'),_0x442826,_0x58d6ad[_0x17a1('0x13')][_0x17a1('0x14')]);return _0x427959(_0x58d6ad[_0x17a1('0x13')][_0x17a1('0x14')]);}else{logger['info'](_0x17a1('0xe'),_0x442826,_0x17a1('0xf'));_0x427959(_0x58d6ad['result'][_0x17a1('0x14')]);}})[_0x17a1('0x15')](function(_0x1e7e53){logger[_0x17a1('0x13')](_0x17a1('0xe'),_0x442826,_0x1e7e53);_0x287d33(_0x1e7e53);});});}
\ No newline at end of file
+var _0xacf7=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','then','ScreenRecording,\x20%s,\x20%s','request\x20sent','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x6a42a,_0x1b6ea8){var _0x5c9071=function(_0x4d789c){while(--_0x4d789c){_0x6a42a['push'](_0x6a42a['shift']());}};_0x5c9071(++_0x1b6ea8);}(_0xacf7,0x152));var _0x7acf=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xacf7[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x7acf('0x0'));var util=require(_0x7acf('0x1'));var moment=require(_0x7acf('0x2'));var BPromise=require(_0x7acf('0x3'));var rs=require(_0x7acf('0x4'));var fs=require('fs');var Redis=require(_0x7acf('0x5'));var db=require(_0x7acf('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x7acf('0x7'))('rpc');var config=require(_0x7acf('0x8'));var jayson=require(_0x7acf('0x9'));var client=jayson[_0x7acf('0xa')][_0x7acf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x66ac,_0x94c02d,_0x1bdc90){return new BPromise(function(_0x29b2f3,_0x136190){return client['request'](_0x66ac,_0x1bdc90)[_0x7acf('0xc')](function(_0x361740){logger['info'](_0x7acf('0xd'),_0x94c02d,_0x7acf('0xe'));logger['debug'](_0x7acf('0xf'),_0x94c02d,_0x7acf('0xe'),JSON[_0x7acf('0x10')](_0x361740));if(_0x361740[_0x7acf('0x11')]){if(_0x361740[_0x7acf('0x11')]['code']===0x1f4){logger[_0x7acf('0x11')](_0x7acf('0xd'),_0x94c02d,_0x361740['error'][_0x7acf('0x12')]);return _0x136190(_0x361740[_0x7acf('0x11')]['message']);}logger[_0x7acf('0x11')](_0x7acf('0xd'),_0x94c02d,_0x361740['error'][_0x7acf('0x12')]);return _0x29b2f3(_0x361740[_0x7acf('0x11')][_0x7acf('0x12')]);}else{logger['info'](_0x7acf('0xd'),_0x94c02d,'request\x20sent');_0x29b2f3(_0x361740[_0x7acf('0x13')][_0x7acf('0x12')]);}})[_0x7acf('0x14')](function(_0x425568){logger['error']('ScreenRecording,\x20%s,\x20%s',_0x94c02d,_0x425568);_0x136190(_0x425568);});});}
\ No newline at end of file
index dca2aba..405f7a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe978=['/:id/logo','single','file','addLogo','format','logologin','originalname','addLogoLogin','post','addPreferred','update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','/now','getDate','get','/:id','show','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','%s%s','extname'];(function(_0x464183,_0x1b5274){var _0x325318=function(_0x418ccd){while(--_0x418ccd){_0x464183['push'](_0x464183['shift']());}};_0x325318(++_0x1b5274);}(_0xe978,0x108));var _0x8e97=function(_0x352349,_0x3c710c){_0x352349=_0x352349-0x0;var _0x2930ba=_0xe978[_0x352349];return _0x2930ba;};'use strict';var multer=require(_0x8e97('0x0'));var util=require(_0x8e97('0x1'));var path=require(_0x8e97('0x2'));var timeout=require('connect-timeout');var express=require(_0x8e97('0x3'));var router=express[_0x8e97('0x4')]();var fs_extra=require(_0x8e97('0x5'));var auth=require(_0x8e97('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8e97('0x7'));var controller=require('./setting.controller');router['get']('/',auth[_0x8e97('0x8')](),controller[_0x8e97('0x9')]);router['get'](_0x8e97('0xa'),controller[_0x8e97('0xb')]);router[_0x8e97('0xc')](_0x8e97('0xd'),controller[_0x8e97('0xe')]);router[_0x8e97('0xc')]('/:id/logo',controller[_0x8e97('0xf')]);router[_0x8e97('0xc')](_0x8e97('0x10'),controller[_0x8e97('0x11')]);router['get'](_0x8e97('0x12'),controller[_0x8e97('0x13')]);router['get'](_0x8e97('0x14'),controller[_0x8e97('0x15')]);router[_0x8e97('0xc')](_0x8e97('0x16'),controller[_0x8e97('0x17')]);var upload=multer({'storage':multer[_0x8e97('0x18')]({'destination':function(_0x3c6e38,_0x1944e9,_0x148fc9){_0x148fc9(null,path[_0x8e97('0x19')](config[_0x8e97('0x1a')],_0x8e97('0x1b')));},'filename':function(_0x97daed,_0x3ffdd5,_0x10596d){_0x10596d(null,util['format'](_0x8e97('0x1c'),'logo',path[_0x8e97('0x1d')](_0x3ffdd5['originalname'])));}})});router['post'](_0x8e97('0x1e'),upload[_0x8e97('0x1f')](_0x8e97('0x20')),controller[_0x8e97('0x21')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x213037,_0x3f8dc7,_0xe50607){_0xe50607(null,path['join'](config[_0x8e97('0x1a')],_0x8e97('0x1b')));},'filename':function(_0x5645ec,_0x5183ef,_0xe80753){_0xe80753(null,util[_0x8e97('0x22')]('%s%s',_0x8e97('0x23'),path[_0x8e97('0x1d')](_0x5183ef[_0x8e97('0x24')])));}})});router['post'](_0x8e97('0x10'),upload['single'](_0x8e97('0x20')),controller[_0x8e97('0x25')]);var upload=multer({'storage':multer[_0x8e97('0x18')]({'destination':function(_0x4bbf6f,_0x37962d,_0x2f2120){_0x2f2120(null,path[_0x8e97('0x19')](config[_0x8e97('0x1a')],'server/files/images/logos/'));},'filename':function(_0x4391b3,_0x47649d,_0x2142b5){_0x2142b5(null,util[_0x8e97('0x22')](_0x8e97('0x1c'),'preferred',path[_0x8e97('0x1d')](_0x47649d[_0x8e97('0x24')])));}})});router[_0x8e97('0x26')](_0x8e97('0x14'),upload[_0x8e97('0x1f')](_0x8e97('0x20')),controller[_0x8e97('0x27')]);var upload=multer({'storage':multer[_0x8e97('0x18')]({'destination':function(_0x4835a8,_0x51ff05,_0x2844e2){_0x2844e2(null,path['join'](config[_0x8e97('0x1a')],_0x8e97('0x1b')));},'filename':function(_0x307512,_0x17ef10,_0x1a41c6){_0x1a41c6(null,util[_0x8e97('0x22')](_0x8e97('0x1c'),'favicon',path['extname'](_0x17ef10['originalname'])));}})});router[_0x8e97('0x26')]('/:id/favicon',upload['single']('file'),controller['addFavicon']);router['put'](_0x8e97('0xd'),auth[_0x8e97('0x8')](),controller[_0x8e97('0x28')]);module[_0x8e97('0x29')]=router;
\ No newline at end of file
+var _0x3e6a=['originalname','post','single','file','addLogo','server/files/images/logos/','format','%s%s','logologin','addLogoLogin','addPreferred','favicon','addFavicon','put','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./setting.controller','get','isAuthenticated','index','getDate','/:id','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','gdpr','/:id/preferred','getPreferred','/:id/favicon','diskStorage','join','root','logo','extname'];(function(_0x3dee4f,_0x1bad69){var _0x1aa7aa=function(_0x3daf79){while(--_0x3daf79){_0x3dee4f['push'](_0x3dee4f['shift']());}};_0x1aa7aa(++_0x1bad69);}(_0x3e6a,0x10b));var _0xa3e6=function(_0x5db4b0,_0x17dfb5){_0x5db4b0=_0x5db4b0-0x0;var _0x126c9f=_0x3e6a[_0x5db4b0];return _0x126c9f;};'use strict';var multer=require(_0xa3e6('0x0'));var util=require('util');var path=require(_0xa3e6('0x1'));var timeout=require(_0xa3e6('0x2'));var express=require('express');var router=express[_0xa3e6('0x3')]();var fs_extra=require(_0xa3e6('0x4'));var auth=require(_0xa3e6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa3e6('0x6'));var controller=require(_0xa3e6('0x7'));router[_0xa3e6('0x8')]('/',auth[_0xa3e6('0x9')](),controller[_0xa3e6('0xa')]);router[_0xa3e6('0x8')]('/now',controller[_0xa3e6('0xb')]);router[_0xa3e6('0x8')](_0xa3e6('0xc'),controller[_0xa3e6('0xd')]);router[_0xa3e6('0x8')](_0xa3e6('0xe'),controller[_0xa3e6('0xf')]);router[_0xa3e6('0x8')](_0xa3e6('0x10'),controller[_0xa3e6('0x11')]);router[_0xa3e6('0x8')]('/:id/gdpr',controller[_0xa3e6('0x12')]);router[_0xa3e6('0x8')](_0xa3e6('0x13'),controller[_0xa3e6('0x14')]);router[_0xa3e6('0x8')](_0xa3e6('0x15'),controller['getFavicon']);var upload=multer({'storage':multer[_0xa3e6('0x16')]({'destination':function(_0x10f13a,_0x3cd1ab,_0x24987b){_0x24987b(null,path[_0xa3e6('0x17')](config[_0xa3e6('0x18')],'server/files/images/logos/'));},'filename':function(_0x46b621,_0x46d084,_0x44ae91){_0x44ae91(null,util['format']('%s%s',_0xa3e6('0x19'),path[_0xa3e6('0x1a')](_0x46d084[_0xa3e6('0x1b')])));}})});router[_0xa3e6('0x1c')](_0xa3e6('0xe'),upload[_0xa3e6('0x1d')](_0xa3e6('0x1e')),controller[_0xa3e6('0x1f')]);var upload=multer({'storage':multer[_0xa3e6('0x16')]({'destination':function(_0x4b1a3e,_0x2dd4f7,_0x27eb37){_0x27eb37(null,path[_0xa3e6('0x17')](config['root'],_0xa3e6('0x20')));},'filename':function(_0x43d6b6,_0x1e368a,_0x3e62c8){_0x3e62c8(null,util[_0xa3e6('0x21')](_0xa3e6('0x22'),_0xa3e6('0x23'),path[_0xa3e6('0x1a')](_0x1e368a[_0xa3e6('0x1b')])));}})});router['post']('/:id/logo_login',upload[_0xa3e6('0x1d')](_0xa3e6('0x1e')),controller[_0xa3e6('0x24')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3b29ea,_0x1b738f,_0x3588e5){_0x3588e5(null,path[_0xa3e6('0x17')](config[_0xa3e6('0x18')],_0xa3e6('0x20')));},'filename':function(_0xb38af8,_0x5ce4c3,_0x3e5cf4){_0x3e5cf4(null,util['format'](_0xa3e6('0x22'),'preferred',path['extname'](_0x5ce4c3[_0xa3e6('0x1b')])));}})});router['post'](_0xa3e6('0x13'),upload[_0xa3e6('0x1d')](_0xa3e6('0x1e')),controller[_0xa3e6('0x25')]);var upload=multer({'storage':multer[_0xa3e6('0x16')]({'destination':function(_0xfe03ea,_0x51b951,_0x7b7907){_0x7b7907(null,path[_0xa3e6('0x17')](config[_0xa3e6('0x18')],_0xa3e6('0x20')));},'filename':function(_0x2abd0d,_0x53dfaf,_0x46243b){_0x46243b(null,util[_0xa3e6('0x21')](_0xa3e6('0x22'),_0xa3e6('0x26'),path['extname'](_0x53dfaf[_0xa3e6('0x1b')])));}})});router['post'](_0xa3e6('0x15'),upload[_0xa3e6('0x1d')](_0xa3e6('0x1e')),controller[_0xa3e6('0x27')]);router[_0xa3e6('0x28')](_0xa3e6('0xc'),auth['isAuthenticated'](),controller['update']);module[_0xa3e6('0x29')]=router;
\ No newline at end of file
index 8666e49..a395987 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate'];(function(_0x4ade94,_0x32bb1c){var _0x4b9faa=function(_0x24117e){while(--_0x24117e){_0x4ade94['push'](_0x4ade94['shift']());}};_0x4b9faa(++_0x32bb1c);}(_0x7a54,0x106));var _0x47a5=function(_0x7c37e9,_0x3f1b83){_0x7c37e9=_0x7c37e9-0x0;var _0x40cf20=_0x7a54[_0x7c37e9];return _0x40cf20;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'min_internal':{'type':Sequelize[_0x47a5('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x47a5('0x2')](0xb),'unique':_0x47a5('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x47a5('0x4')],'defaultValue':_0x47a5('0x5')},'logo':{'type':Sequelize[_0x47a5('0x4')]},'defaultLogo':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x47a5('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x47a5('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x47a5('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x47a5('0x4')],'defaultValue':_0x47a5('0x7')},'chatTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x47a5('0x4')]},'defaultPreferred':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x47a5('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x47a5('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x47a5('0x2')]},'transcribeRegion':{'type':Sequelize[_0x47a5('0x4')]},'sentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x47a5('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize[_0x47a5('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize['INTEGER'](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5f2f=['INTEGER','min_internal','min_mailbox','STRING','BOOLEAN','alternate','UNSIGNED','sequelize','exports'];(function(_0x2171f7,_0x540ddc){var _0x18ca0d=function(_0x23d7dd){while(--_0x23d7dd){_0x2171f7['push'](_0x2171f7['shift']());}};_0x18ca0d(++_0x540ddc);}(_0x5f2f,0x73));var _0xf5f2=function(_0xb4d86,_0x5b1240){_0xb4d86=_0xb4d86-0x0;var _0x50e1ed=_0x5f2f[_0xb4d86];return _0x50e1ed;};'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 c26dd7f..c655fa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15cb=['YYYY-MM-DD\x20HH:mm:ss:SSS','rimraf','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','http','request','then','info','request\x20sent','debug','stringify','error','code','Setting,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','stack','name','send','index','map','Setting','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','show','params','options','find','body','addLogo','file','filename','logo','loginLogo','server/files/images/logos','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultFavicon','existsSync','join','root','toLower','default','custom','default_logo.svg','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','default_loginLogo.svg','upperFirst','gdpr','securePassword','addPreferred','getPreferred','defaultPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','now','format'];(function(_0x21d145,_0x4eeddb){var _0x613ec4=function(_0x14c714){while(--_0x14c714){_0x21d145['push'](_0x21d145['shift']());}};_0x613ec4(++_0x4eeddb);}(_0x15cb,0x16f));var _0xb15c=function(_0x5dfd8a,_0x430bc3){_0x5dfd8a=_0x5dfd8a-0x0;var _0x37c9ea=_0x15cb[_0x5dfd8a];return _0x37c9ea;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb15c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb15c('0x1'));var rp=require('request-promise');var moment=require(_0xb15c('0x2'));var BPromise=require(_0xb15c('0x3'));var Mustache=require(_0xb15c('0x4'));var util=require(_0xb15c('0x5'));var path=require('path');var sox=require(_0xb15c('0x6'));var csv=require(_0xb15c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb15c('0x8'));var squel=require(_0xb15c('0x9'));var crypto=require(_0xb15c('0xa'));var jsforce=require(_0xb15c('0xb'));var deskjs=require(_0xb15c('0xc'));var toCsv=require(_0xb15c('0x7'));var querystring=require(_0xb15c('0xd'));var Papa=require(_0xb15c('0xe'));var Redis=require('ioredis');var authService=require(_0xb15c('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb15c('0x10'))(_0xb15c('0x11'));var utils=require(_0xb15c('0x12'));var config=require(_0xb15c('0x13'));var licenseUtil=require(_0xb15c('0x14'));var db=require(_0xb15c('0x15'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xb15c('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x52816e,_0xf8031d,_0x182f14,_0x3a384f){return new BPromise(function(_0x435c0a,_0x465c44){var _0x429c89=_0x3a384f||client;return _0x429c89[_0xb15c('0x17')](_0x52816e,_0x182f14)[_0xb15c('0x18')](function(_0x29f591){logger[_0xb15c('0x19')]('Setting,\x20%s,\x20%s',_0xf8031d,_0xb15c('0x1a'));logger[_0xb15c('0x1b')]('Setting,\x20%s,\x20%s,\x20%s',_0xf8031d,_0xb15c('0x1a'),JSON[_0xb15c('0x1c')](_0x29f591));if(_0x29f591[_0xb15c('0x1d')]){if(_0x29f591[_0xb15c('0x1d')][_0xb15c('0x1e')]===0x1f4){logger[_0xb15c('0x1d')](_0xb15c('0x1f'),_0xf8031d,_0x29f591['error'][_0xb15c('0x20')]);return _0x465c44(_0x29f591[_0xb15c('0x1d')][_0xb15c('0x20')]);}logger['error'](_0xb15c('0x1f'),_0xf8031d,_0x29f591['error'][_0xb15c('0x20')]);return _0x435c0a(_0x29f591[_0xb15c('0x1d')][_0xb15c('0x20')]);}else{logger[_0xb15c('0x19')](_0xb15c('0x1f'),_0xf8031d,_0xb15c('0x1a'));_0x435c0a(_0x29f591[_0xb15c('0x21')][_0xb15c('0x20')]);}})[_0xb15c('0x22')](function(_0x29e7b3){logger[_0xb15c('0x1d')](_0xb15c('0x1f'),_0xf8031d,_0x29e7b3);_0x465c44(_0x29e7b3);});});}function respondWithStatusCode(_0xc47a07,_0x90951f){_0x90951f=_0x90951f||0xcc;return function(_0x352065){if(_0x352065){return _0xc47a07[_0xb15c('0x23')](_0x90951f);}return _0xc47a07[_0xb15c('0x24')](_0x90951f)[_0xb15c('0x25')]();};}function respondWithResult(_0xd38e82,_0x2740a2){_0x2740a2=_0x2740a2||0xc8;return function(_0x204219){if(_0x204219){return _0xd38e82[_0xb15c('0x24')](_0x2740a2)[_0xb15c('0x26')](_0x204219);}};}function respondWithFilteredResult(_0x4d0490,_0x345452){return function(_0x5c0cd9){if(_0x5c0cd9){var _0x28c732=typeof _0x345452[_0xb15c('0x27')]===_0xb15c('0x28')&&typeof _0x345452[_0xb15c('0x29')]===_0xb15c('0x28');var _0x3fdc1d=_0x5c0cd9[_0xb15c('0x2a')];var _0xf59691=_0x28c732?0x0:_0x345452['offset'];var _0x469c50=_0x28c732?_0x5c0cd9[_0xb15c('0x2a')]:_0x345452['offset']+_0x345452['limit'];var _0x5b1f53;if(_0x469c50>=_0x3fdc1d){_0x469c50=_0x3fdc1d;_0x5b1f53=0xc8;}else{_0x5b1f53=0xce;}_0x4d0490[_0xb15c('0x24')](_0x5b1f53);return _0x4d0490[_0xb15c('0x2b')](_0xb15c('0x2c'),_0xf59691+'-'+_0x469c50+'/'+_0x3fdc1d)[_0xb15c('0x26')](_0x5c0cd9);}return null;};}function patchUpdates(_0x2110f2){return function(_0x54c1ed){try{jsonpatch[_0xb15c('0x2d')](_0x54c1ed,_0x2110f2,!![]);}catch(_0xc4c1e4){return BPromise[_0xb15c('0x2e')](_0xc4c1e4);}return _0x54c1ed['save']();};}function saveUpdates(_0x18028f,_0x85b7a5){return function(_0x46e47a){if(_0x46e47a){return _0x46e47a[_0xb15c('0x2f')](_0x18028f)[_0xb15c('0x18')](function(_0x453f5a){return _0x453f5a;});}return null;};}function removeEntity(_0x350181,_0x2feb1c){return function(_0x2012d1){if(_0x2012d1){return _0x2012d1[_0xb15c('0x30')]()[_0xb15c('0x18')](function(){_0x350181[_0xb15c('0x24')](0xcc)[_0xb15c('0x25')]();});}};}function handleEntityNotFound(_0x399abd,_0x4cbd9f){return function(_0x460423){if(!_0x460423){_0x399abd[_0xb15c('0x23')](0x194);}return _0x460423;};}function handleError(_0x59c364,_0x3459a3){_0x3459a3=_0x3459a3||0x1f4;return function(_0x2695b5){logger['error'](_0x2695b5[_0xb15c('0x31')]);if(_0x2695b5[_0xb15c('0x32')]){delete _0x2695b5[_0xb15c('0x32')];}_0x59c364[_0xb15c('0x24')](_0x3459a3)[_0xb15c('0x33')](_0x2695b5);};}exports[_0xb15c('0x34')]=function(_0x4382f3,_0x42930d){var _0x5890cc={},_0x574ebb={},_0x3df19c={'count':0x0,'rows':[]};var _0x1272ec=_[_0xb15c('0x35')](db[_0xb15c('0x36')][_0xb15c('0x37')],function(_0xa207c4){return{'name':_0xa207c4[_0xb15c('0x38')],'type':_0xa207c4[_0xb15c('0x39')]['key']};});_0x574ebb[_0xb15c('0x3a')]=_[_0xb15c('0x35')](_0x1272ec,'name');_0x574ebb[_0xb15c('0x3b')]=_[_0xb15c('0x3c')](_0x4382f3['query']);_0x574ebb[_0xb15c('0x3d')]=_[_0xb15c('0x3e')](_0x574ebb['model'],_0x574ebb[_0xb15c('0x3b')]);_0x5890cc['attributes']=_['intersection'](_0x574ebb[_0xb15c('0x3a')],qs[_0xb15c('0x3f')](_0x4382f3[_0xb15c('0x3b')][_0xb15c('0x3f')]));_0x5890cc['attributes']=_0x5890cc[_0xb15c('0x40')][_0xb15c('0x41')]?_0x5890cc[_0xb15c('0x40')]:_0x574ebb['model'];if(!_0x4382f3['query'][_0xb15c('0x42')](_0xb15c('0x43'))){_0x5890cc[_0xb15c('0x29')]=qs[_0xb15c('0x29')](_0x4382f3[_0xb15c('0x3b')]['limit']);_0x5890cc[_0xb15c('0x27')]=qs['offset'](_0x4382f3[_0xb15c('0x3b')][_0xb15c('0x27')]);}_0x5890cc[_0xb15c('0x44')]=qs[_0xb15c('0x45')](_0x4382f3[_0xb15c('0x3b')][_0xb15c('0x45')]);_0x5890cc[_0xb15c('0x46')]=qs['filters'](_[_0xb15c('0x47')](_0x4382f3[_0xb15c('0x3b')],_0x574ebb['filters']),_0x1272ec);if(_0x4382f3['query'][_0xb15c('0x48')]){_0x5890cc[_0xb15c('0x46')]=_[_0xb15c('0x49')](_0x5890cc[_0xb15c('0x46')],{'$or':_[_0xb15c('0x35')](_0x1272ec,function(_0x17da6e){if(_0x17da6e[_0xb15c('0x39')]!=='VIRTUAL'){var _0x20ea64={};_0x20ea64[_0x17da6e['name']]={'$like':'%'+_0x4382f3[_0xb15c('0x3b')][_0xb15c('0x48')]+'%'};return _0x20ea64;}})});}_0x5890cc=_['merge']({},_0x5890cc,_0x4382f3['options']);var _0x2116be={'where':_0x5890cc[_0xb15c('0x46')]};return db[_0xb15c('0x36')][_0xb15c('0x2a')](_0x2116be)[_0xb15c('0x18')](function(_0x7d6858){_0x3df19c[_0xb15c('0x2a')]=_0x7d6858;if(_0x4382f3['query'][_0xb15c('0x4a')]){_0x5890cc[_0xb15c('0x4b')]=[{'all':!![]}];}return db['Setting'][_0xb15c('0x4c')](_0x5890cc);})['then'](function(_0x407c22){_0x3df19c[_0xb15c('0x4d')]=_0x407c22;return _0x3df19c;})[_0xb15c('0x18')](respondWithFilteredResult(_0x42930d,_0x5890cc))[_0xb15c('0x22')](handleError(_0x42930d,null));};exports[_0xb15c('0x4e')]=function(_0x4271a5,_0x1d216d){var _0x238c6d={'raw':![],'where':{'id':_0x4271a5[_0xb15c('0x4f')]['id']}},_0x429862={};_0x429862[_0xb15c('0x3a')]=_[_0xb15c('0x3c')](db[_0xb15c('0x36')][_0xb15c('0x37')]);_0x429862['query']=_[_0xb15c('0x3c')](_0x4271a5[_0xb15c('0x3b')]);_0x429862['filters']=_[_0xb15c('0x3e')](_0x429862[_0xb15c('0x3a')],_0x429862[_0xb15c('0x3b')]);_0x238c6d[_0xb15c('0x40')]=_[_0xb15c('0x3e')](_0x429862[_0xb15c('0x3a')],qs[_0xb15c('0x3f')](_0x4271a5[_0xb15c('0x3b')][_0xb15c('0x3f')]));_0x238c6d[_0xb15c('0x40')]=_0x238c6d[_0xb15c('0x40')][_0xb15c('0x41')]?_0x238c6d['attributes']:_0x429862[_0xb15c('0x3a')];if(_0x4271a5[_0xb15c('0x3b')][_0xb15c('0x4a')]){_0x238c6d[_0xb15c('0x4b')]=[{'all':!![]}];}_0x238c6d=_[_0xb15c('0x49')]({},_0x238c6d,_0x4271a5[_0xb15c('0x50')]);return db['Setting'][_0xb15c('0x51')](_0x238c6d)[_0xb15c('0x18')](handleEntityNotFound(_0x1d216d,null))[_0xb15c('0x18')](respondWithResult(_0x1d216d,null))['catch'](handleError(_0x1d216d,null));};exports[_0xb15c('0x2f')]=function(_0xd2678f,_0x250a16){if(_0xd2678f[_0xb15c('0x52')]['id']){delete _0xd2678f['body']['id'];}return db['Setting'][_0xb15c('0x51')]({'where':{'id':_0xd2678f[_0xb15c('0x4f')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x250a16,null))[_0xb15c('0x18')](saveUpdates(_0xd2678f[_0xb15c('0x52')],null))[_0xb15c('0x18')](respondWithResult(_0x250a16,null))['catch'](handleError(_0x250a16,null));};exports[_0xb15c('0x53')]=function(_0xd0e83f,_0x34df62,_0x176063){if(_0xd0e83f['file']&&_0xd0e83f[_0xb15c('0x54')][_0xb15c('0x55')]){_0xd0e83f[_0xb15c('0x52')][_0xb15c('0x56')]=_0xd0e83f[_0xb15c('0x54')][_0xb15c('0x55')];}return db[_0xb15c('0x36')]['find']({'where':{'id':_0xd0e83f[_0xb15c('0x4f')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x34df62,null))[_0xb15c('0x18')](saveUpdates(_0xd0e83f[_0xb15c('0x52')],null))[_0xb15c('0x18')](respondWithResult(_0x34df62,null))['catch'](handleError(_0x34df62,null));};exports['addLogoLogin']=function(_0x3a25c5,_0x4b1db7,_0x5a1564){if(_0x3a25c5[_0xb15c('0x54')]&&_0x3a25c5[_0xb15c('0x54')][_0xb15c('0x55')]){_0x3a25c5[_0xb15c('0x52')][_0xb15c('0x57')]=_0x3a25c5[_0xb15c('0x54')][_0xb15c('0x55')];}return db[_0xb15c('0x36')]['find']({'where':{'id':_0x3a25c5[_0xb15c('0x4f')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x4b1db7,null))[_0xb15c('0x18')](saveUpdates(_0x3a25c5[_0xb15c('0x52')],null))[_0xb15c('0x18')](respondWithResult(_0x4b1db7,null))[_0xb15c('0x22')](handleError(_0x4b1db7,null));};var utilLicense=require(_0xb15c('0x14'));exports['getLogo']=function(_0xa49f8a,_0xad25ed,_0x33cee9){var _0x397458=_0xb15c('0x58');var _0x9ef15d={'custom':![]};return utilLicense[_0xb15c('0x59')]()[_0xb15c('0x18')](function(_0x6fda9c){if(_0x6fda9c){_0x9ef15d=_0x6fda9c;}return db[_0xb15c('0x36')][_0xb15c('0x51')]({'where':{'id':_0xa49f8a[_0xb15c('0x4f')]['id']},'attributes':[_0xb15c('0x56'),_0xb15c('0x57'),_0xb15c('0x5a'),_0xb15c('0x5b'),_0xb15c('0x5c'),_0xb15c('0x5d'),'defaultPreferred',_0xb15c('0x5e')],'raw':!![]});})[_0xb15c('0x18')](handleEntityNotFound(_0xad25ed,null))[_0xb15c('0x18')](function(_0x48d07c){if(_0x48d07c){var _0x2f6e8c=_0x48d07c[_0xb15c('0x56')]&&fs[_0xb15c('0x5f')](path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x397458,_['toLower'](_0x48d07c['logo'])))?path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x397458,_[_0xb15c('0x62')](_0x48d07c[_0xb15c('0x56')])):path['join'](config[_0xb15c('0x61')],_0x397458,_[_0xb15c('0x62')]('default_logo.svg'));var _0x27a8ef=_0xb15c('0x63')+_['upperFirst'](_0xb15c('0x56'));if(_0x48d07c[_0x27a8ef]||!_0x9ef15d[_0xb15c('0x64')]){_0x2f6e8c=path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x397458,_['toLower'](_0xb15c('0x65')));}if(!fs[_0xb15c('0x5f')](_0x2f6e8c)){throw new db[(_0xb15c('0x66'))][(_0xb15c('0x67'))](_['upperFirst']('logo')+_0xb15c('0x68'));}return _0xad25ed[_0xb15c('0x69')](_0x2f6e8c);}})['catch'](handleError(_0xad25ed,null));};var utilLicense=require(_0xb15c('0x14'));exports[_0xb15c('0x6a')]=function(_0x3e89c1,_0x4d4337,_0x59a210){var _0x42f092='server/files/images/logos';var _0x182ea2={'custom':![]};return utilLicense['getLicense']()[_0xb15c('0x18')](function(_0x42e6f2){if(_0x42e6f2){_0x182ea2=_0x42e6f2;}return db[_0xb15c('0x36')][_0xb15c('0x51')]({'where':{'id':_0x3e89c1[_0xb15c('0x4f')]['id']},'attributes':[_0xb15c('0x56'),'loginLogo',_0xb15c('0x5a'),_0xb15c('0x5b'),_0xb15c('0x5c'),_0xb15c('0x5d'),'defaultPreferred',_0xb15c('0x5e')],'raw':!![]});})[_0xb15c('0x18')](handleEntityNotFound(_0x4d4337,null))[_0xb15c('0x18')](function(_0x124dc2){if(_0x124dc2){var _0x571753=_0x124dc2[_0xb15c('0x57')]&&fs[_0xb15c('0x5f')](path[_0xb15c('0x60')](config['root'],_0x42f092,_[_0xb15c('0x62')](_0x124dc2[_0xb15c('0x57')])))?path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x42f092,_[_0xb15c('0x62')](_0x124dc2['loginLogo'])):path['join'](config[_0xb15c('0x61')],_0x42f092,_[_0xb15c('0x62')](_0xb15c('0x6b')));var _0x500db0=_0xb15c('0x63')+_[_0xb15c('0x6c')](_0xb15c('0x57'));if(_0x124dc2[_0x500db0]||!_0x182ea2['custom']){_0x571753=path[_0xb15c('0x60')](config['root'],_0x42f092,_['toLower'](_0xb15c('0x6b')));}if(!fs['existsSync'](_0x571753)){throw new db[(_0xb15c('0x66'))][(_0xb15c('0x67'))](_['upperFirst'](_0xb15c('0x57'))+'\x20not\x20found');}return _0x4d4337[_0xb15c('0x69')](_0x571753);}})[_0xb15c('0x22')](handleError(_0x4d4337,null));};exports[_0xb15c('0x6d')]=function(_0x57af46,_0x258946){return db[_0xb15c('0x36')]['find']({'where':{'id':_0x57af46['params']['id']},'attributes':[_0xb15c('0x6e')]})['then'](respondWithResult(_0x258946,null))['catch'](handleError(_0x258946,null));};exports[_0xb15c('0x6f')]=function(_0x4a3d13,_0x4c2c18,_0xc8a64b){if(_0x4a3d13[_0xb15c('0x54')]&&_0x4a3d13[_0xb15c('0x54')][_0xb15c('0x55')]){_0x4a3d13['body'][_0xb15c('0x5a')]=_0x4a3d13[_0xb15c('0x54')]['filename'];}return db['Setting'][_0xb15c('0x51')]({'where':{'id':_0x4a3d13[_0xb15c('0x4f')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x4c2c18,null))[_0xb15c('0x18')](saveUpdates(_0x4a3d13[_0xb15c('0x52')],null))['then'](respondWithResult(_0x4c2c18,null))[_0xb15c('0x22')](handleError(_0x4c2c18,null));};var utilLicense=require(_0xb15c('0x14'));exports[_0xb15c('0x70')]=function(_0x1c17ad,_0x45e9fd,_0x428509){var _0x2bbb2c=_0xb15c('0x58');var _0x4dd6ed={'custom':![]};return utilLicense[_0xb15c('0x59')]()['then'](function(_0x552fb9){if(_0x552fb9){_0x4dd6ed=_0x552fb9;}return db['Setting'][_0xb15c('0x51')]({'where':{'id':_0x1c17ad[_0xb15c('0x4f')]['id']},'attributes':['logo',_0xb15c('0x57'),_0xb15c('0x5a'),'favicon','defaultLogo',_0xb15c('0x5d'),_0xb15c('0x71'),_0xb15c('0x5e')],'raw':!![]});})[_0xb15c('0x18')](handleEntityNotFound(_0x45e9fd,null))[_0xb15c('0x18')](function(_0x24e826){if(_0x24e826){var _0x45d8cc=_0x24e826['preferred']&&fs['existsSync'](path['join'](config[_0xb15c('0x61')],_0x2bbb2c,_[_0xb15c('0x62')](_0x24e826[_0xb15c('0x5a')])))?path['join'](config[_0xb15c('0x61')],_0x2bbb2c,_[_0xb15c('0x62')](_0x24e826[_0xb15c('0x5a')])):path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x2bbb2c,_[_0xb15c('0x62')]('default_preferred.png'));var _0x15f5ff=_0xb15c('0x63')+_[_0xb15c('0x6c')](_0xb15c('0x5a'));if(_0x24e826[_0x15f5ff]||!_0x4dd6ed[_0xb15c('0x64')]||!_0x4dd6ed[_0xb15c('0x5a')]){_0x45d8cc=path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x2bbb2c,_[_0xb15c('0x62')](_0xb15c('0x72')));}if(!fs[_0xb15c('0x5f')](_0x45d8cc)){throw new db[(_0xb15c('0x66'))]['ValidationError'](_['upperFirst'](_0xb15c('0x5a'))+_0xb15c('0x68'));}return _0x45e9fd[_0xb15c('0x69')](_0x45d8cc);}})[_0xb15c('0x22')](handleError(_0x45e9fd,null));};exports[_0xb15c('0x73')]=function(_0x5a52c4,_0x202e98,_0x11f233){if(_0x5a52c4['file']&&_0x5a52c4[_0xb15c('0x54')][_0xb15c('0x55')]){_0x5a52c4[_0xb15c('0x52')][_0xb15c('0x5b')]=_0x5a52c4[_0xb15c('0x54')][_0xb15c('0x55')];}return db[_0xb15c('0x36')]['find']({'where':{'id':_0x5a52c4['params']['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x202e98,null))[_0xb15c('0x18')](saveUpdates(_0x5a52c4[_0xb15c('0x52')],null))[_0xb15c('0x18')](respondWithResult(_0x202e98,null))[_0xb15c('0x22')](handleError(_0x202e98,null));};var utilLicense=require(_0xb15c('0x14'));exports[_0xb15c('0x74')]=function(_0x3e9d5b,_0x25a9f4,_0x20679d){var _0x5c62d6='server/files/images/logos';var _0x35186d={'custom':![]};return utilLicense[_0xb15c('0x59')]()[_0xb15c('0x18')](function(_0x1e094a){if(_0x1e094a){_0x35186d=_0x1e094a;}return db['Setting'][_0xb15c('0x51')]({'where':{'id':_0x3e9d5b['params']['id']},'attributes':['logo',_0xb15c('0x57'),_0xb15c('0x5a'),_0xb15c('0x5b'),_0xb15c('0x5c'),_0xb15c('0x5d'),_0xb15c('0x71'),_0xb15c('0x5e')],'raw':!![]});})[_0xb15c('0x18')](handleEntityNotFound(_0x25a9f4,null))[_0xb15c('0x18')](function(_0x57a8d9){if(_0x57a8d9){var _0x40e0b8=_0x57a8d9[_0xb15c('0x5b')]&&fs[_0xb15c('0x5f')](path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x5c62d6,_[_0xb15c('0x62')](_0x57a8d9[_0xb15c('0x5b')])))?path[_0xb15c('0x60')](config['root'],_0x5c62d6,_[_0xb15c('0x62')](_0x57a8d9[_0xb15c('0x5b')])):path['join'](config[_0xb15c('0x61')],_0x5c62d6,_[_0xb15c('0x62')](_0xb15c('0x75')));var _0x5ca78e='default'+_[_0xb15c('0x6c')](_0xb15c('0x5b'));if(_0x57a8d9[_0x5ca78e]||!_0x35186d['custom']){_0x40e0b8=path[_0xb15c('0x60')](config[_0xb15c('0x61')],_0x5c62d6,_[_0xb15c('0x62')](_0xb15c('0x75')));}if(!fs['existsSync'](_0x40e0b8)){throw new db[(_0xb15c('0x66'))][(_0xb15c('0x67'))](_[_0xb15c('0x6c')](_0xb15c('0x5b'))+_0xb15c('0x68'));}return _0x25a9f4[_0xb15c('0x69')](_0x40e0b8);}})[_0xb15c('0x22')](handleError(_0x25a9f4,null));};exports[_0xb15c('0x76')]=function(_0x374e64,_0x18ef26){var _0x48d6a5={'offset':moment()['utcOffset']()};_0x48d6a5[_0xb15c('0x77')]=moment()['utcOffset'](_0x48d6a5[_0xb15c('0x27')])[_0xb15c('0x78')](_0xb15c('0x79'));return _0x18ef26[_0xb15c('0x24')](0xc8)['send'](_0x48d6a5);};
\ No newline at end of file
+var _0xe4d4=['zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','message','result','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','stack','name','index','map','Setting','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','catch','show','params','keys','rawAttributes','options','update','body','addLogo','file','filename','addLogoLogin','find','getLogo','server/files/images/logos','getLicense','logo','preferred','favicon','defaultLogo','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','upperFirst','custom','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','defaultLoginLogo','defaultPreferred','loginLogo','default_loginLogo.svg','gdpr','securePassword','addPreferred','getPreferred','default_preferred.png','default','getFavicon','default_favicon.ico','getDate','utcOffset','now','format','send','eml-format','rimraf'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0xe4d4,0x184));var _0x4e4d=function(_0x2c5965,_0x4cf35b){_0x2c5965=_0x2c5965-0x0;var _0x1029a0=_0xe4d4[_0x2c5965];return _0x1029a0;};'use strict';var emlformat=require(_0x4e4d('0x0'));var rimraf=require(_0x4e4d('0x1'));var zipdir=require(_0x4e4d('0x2'));var jsonpatch=require(_0x4e4d('0x3'));var rp=require('request-promise');var moment=require(_0x4e4d('0x4'));var BPromise=require(_0x4e4d('0x5'));var Mustache=require(_0x4e4d('0x6'));var util=require(_0x4e4d('0x7'));var path=require(_0x4e4d('0x8'));var sox=require(_0x4e4d('0x9'));var csv=require(_0x4e4d('0xa'));var ejs=require(_0x4e4d('0xb'));var fs=require('fs');var fs_extra=require(_0x4e4d('0xc'));var _=require(_0x4e4d('0xd'));var squel=require(_0x4e4d('0xe'));var crypto=require(_0x4e4d('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x4e4d('0x10'));var toCsv=require(_0x4e4d('0xa'));var querystring=require(_0x4e4d('0x11'));var Papa=require(_0x4e4d('0x12'));var Redis=require('ioredis');var authService=require(_0x4e4d('0x13'));var qs=require(_0x4e4d('0x14'));var as=require(_0x4e4d('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4e4d('0x16'));var utils=require(_0x4e4d('0x17'));var config=require(_0x4e4d('0x18'));var licenseUtil=require(_0x4e4d('0x19'));var db=require(_0x4e4d('0x1a'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x4e4d('0x1b')][_0x4e4d('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x401988,_0x4f0b75,_0x1eaadf,_0x4ffe6b){return new BPromise(function(_0x43b6c1,_0x13522d){var _0x594c06=_0x4ffe6b||client;return _0x594c06[_0x4e4d('0x1d')](_0x401988,_0x1eaadf)['then'](function(_0x4d203c){logger[_0x4e4d('0x1e')](_0x4e4d('0x1f'),_0x4f0b75,_0x4e4d('0x20'));logger[_0x4e4d('0x21')](_0x4e4d('0x22'),_0x4f0b75,'request\x20sent',JSON[_0x4e4d('0x23')](_0x4d203c));if(_0x4d203c['error']){if(_0x4d203c[_0x4e4d('0x24')]['code']===0x1f4){logger[_0x4e4d('0x24')](_0x4e4d('0x1f'),_0x4f0b75,_0x4d203c[_0x4e4d('0x24')][_0x4e4d('0x25')]);return _0x13522d(_0x4d203c[_0x4e4d('0x24')][_0x4e4d('0x25')]);}logger[_0x4e4d('0x24')](_0x4e4d('0x1f'),_0x4f0b75,_0x4d203c['error'][_0x4e4d('0x25')]);return _0x43b6c1(_0x4d203c[_0x4e4d('0x24')][_0x4e4d('0x25')]);}else{logger[_0x4e4d('0x1e')](_0x4e4d('0x1f'),_0x4f0b75,_0x4e4d('0x20'));_0x43b6c1(_0x4d203c[_0x4e4d('0x26')][_0x4e4d('0x25')]);}})['catch'](function(_0x3babd0){logger['error'](_0x4e4d('0x1f'),_0x4f0b75,_0x3babd0);_0x13522d(_0x3babd0);});});}function respondWithStatusCode(_0x33205f,_0x3820b6){_0x3820b6=_0x3820b6||0xcc;return function(_0x4c9a37){if(_0x4c9a37){return _0x33205f[_0x4e4d('0x27')](_0x3820b6);}return _0x33205f[_0x4e4d('0x28')](_0x3820b6)[_0x4e4d('0x29')]();};}function respondWithResult(_0x5ea605,_0x118726){_0x118726=_0x118726||0xc8;return function(_0x3a274e){if(_0x3a274e){return _0x5ea605['status'](_0x118726)[_0x4e4d('0x2a')](_0x3a274e);}};}function respondWithFilteredResult(_0x77e2f9,_0x1852a5){return function(_0x212f5c){if(_0x212f5c){var _0x1240fd=typeof _0x1852a5[_0x4e4d('0x2b')]==='undefined'&&typeof _0x1852a5[_0x4e4d('0x2c')]===_0x4e4d('0x2d');var _0x83d5f1=_0x212f5c[_0x4e4d('0x2e')];var _0x3a5db5=_0x1240fd?0x0:_0x1852a5['offset'];var _0x562dd5=_0x1240fd?_0x212f5c['count']:_0x1852a5['offset']+_0x1852a5[_0x4e4d('0x2c')];var _0x24bfa7;if(_0x562dd5>=_0x83d5f1){_0x562dd5=_0x83d5f1;_0x24bfa7=0xc8;}else{_0x24bfa7=0xce;}_0x77e2f9[_0x4e4d('0x28')](_0x24bfa7);return _0x77e2f9[_0x4e4d('0x2f')](_0x4e4d('0x30'),_0x3a5db5+'-'+_0x562dd5+'/'+_0x83d5f1)[_0x4e4d('0x2a')](_0x212f5c);}return null;};}function patchUpdates(_0x4618ba){return function(_0x7499fb){try{jsonpatch[_0x4e4d('0x31')](_0x7499fb,_0x4618ba,!![]);}catch(_0x2ed5ab){return BPromise[_0x4e4d('0x32')](_0x2ed5ab);}return _0x7499fb[_0x4e4d('0x33')]();};}function saveUpdates(_0x3f37ec,_0x3a4fc7){return function(_0x2c8fc4){if(_0x2c8fc4){return _0x2c8fc4['update'](_0x3f37ec)[_0x4e4d('0x34')](function(_0x10d4dc){return _0x10d4dc;});}return null;};}function removeEntity(_0x1ba870,_0x4d7e29){return function(_0x2ae6ff){if(_0x2ae6ff){return _0x2ae6ff[_0x4e4d('0x35')]()['then'](function(){_0x1ba870[_0x4e4d('0x28')](0xcc)[_0x4e4d('0x29')]();});}};}function handleEntityNotFound(_0x5be749,_0x71bcc0){return function(_0x510c8e){if(!_0x510c8e){_0x5be749[_0x4e4d('0x27')](0x194);}return _0x510c8e;};}function handleError(_0x3fab48,_0x3935fe){_0x3935fe=_0x3935fe||0x1f4;return function(_0x48c96d){logger[_0x4e4d('0x24')](_0x48c96d[_0x4e4d('0x36')]);if(_0x48c96d[_0x4e4d('0x37')]){delete _0x48c96d['name'];}_0x3fab48[_0x4e4d('0x28')](_0x3935fe)['send'](_0x48c96d);};}exports[_0x4e4d('0x38')]=function(_0x41d12a,_0x47ad00){var _0x34008a={},_0x2c59c3={},_0x17301b={'count':0x0,'rows':[]};var _0x55808=_[_0x4e4d('0x39')](db[_0x4e4d('0x3a')]['rawAttributes'],function(_0x215ee7){return{'name':_0x215ee7[_0x4e4d('0x3b')],'type':_0x215ee7['type'][_0x4e4d('0x3c')]};});_0x2c59c3[_0x4e4d('0x3d')]=_[_0x4e4d('0x39')](_0x55808,_0x4e4d('0x37'));_0x2c59c3['query']=_['keys'](_0x41d12a[_0x4e4d('0x3e')]);_0x2c59c3[_0x4e4d('0x3f')]=_[_0x4e4d('0x40')](_0x2c59c3[_0x4e4d('0x3d')],_0x2c59c3['query']);_0x34008a['attributes']=_[_0x4e4d('0x40')](_0x2c59c3[_0x4e4d('0x3d')],qs['fields'](_0x41d12a[_0x4e4d('0x3e')][_0x4e4d('0x41')]));_0x34008a[_0x4e4d('0x42')]=_0x34008a[_0x4e4d('0x42')][_0x4e4d('0x43')]?_0x34008a['attributes']:_0x2c59c3[_0x4e4d('0x3d')];if(!_0x41d12a[_0x4e4d('0x3e')][_0x4e4d('0x44')]('nolimit')){_0x34008a[_0x4e4d('0x2c')]=qs[_0x4e4d('0x2c')](_0x41d12a['query']['limit']);_0x34008a[_0x4e4d('0x2b')]=qs[_0x4e4d('0x2b')](_0x41d12a[_0x4e4d('0x3e')][_0x4e4d('0x2b')]);}_0x34008a[_0x4e4d('0x45')]=qs[_0x4e4d('0x46')](_0x41d12a[_0x4e4d('0x3e')][_0x4e4d('0x46')]);_0x34008a[_0x4e4d('0x47')]=qs[_0x4e4d('0x3f')](_[_0x4e4d('0x48')](_0x41d12a['query'],_0x2c59c3[_0x4e4d('0x3f')]),_0x55808);if(_0x41d12a[_0x4e4d('0x3e')][_0x4e4d('0x49')]){_0x34008a[_0x4e4d('0x47')]=_[_0x4e4d('0x4a')](_0x34008a[_0x4e4d('0x47')],{'$or':_[_0x4e4d('0x39')](_0x55808,function(_0x5b7a16){if(_0x5b7a16[_0x4e4d('0x4b')]!==_0x4e4d('0x4c')){var _0x45b4eb={};_0x45b4eb[_0x5b7a16[_0x4e4d('0x37')]]={'$like':'%'+_0x41d12a[_0x4e4d('0x3e')]['filter']+'%'};return _0x45b4eb;}})});}_0x34008a=_[_0x4e4d('0x4a')]({},_0x34008a,_0x41d12a['options']);var _0x1a0754={'where':_0x34008a[_0x4e4d('0x47')]};return db[_0x4e4d('0x3a')]['count'](_0x1a0754)['then'](function(_0x2646ac){_0x17301b[_0x4e4d('0x2e')]=_0x2646ac;if(_0x41d12a[_0x4e4d('0x3e')][_0x4e4d('0x4d')]){_0x34008a[_0x4e4d('0x4e')]=[{'all':!![]}];}return db[_0x4e4d('0x3a')][_0x4e4d('0x4f')](_0x34008a);})['then'](function(_0x274581){_0x17301b['rows']=_0x274581;return _0x17301b;})['then'](respondWithFilteredResult(_0x47ad00,_0x34008a))[_0x4e4d('0x50')](handleError(_0x47ad00,null));};exports[_0x4e4d('0x51')]=function(_0x24f915,_0x16bff6){var _0x3abe10={'raw':![],'where':{'id':_0x24f915[_0x4e4d('0x52')]['id']}},_0x336afe={};_0x336afe['model']=_[_0x4e4d('0x53')](db[_0x4e4d('0x3a')][_0x4e4d('0x54')]);_0x336afe[_0x4e4d('0x3e')]=_[_0x4e4d('0x53')](_0x24f915[_0x4e4d('0x3e')]);_0x336afe[_0x4e4d('0x3f')]=_[_0x4e4d('0x40')](_0x336afe[_0x4e4d('0x3d')],_0x336afe['query']);_0x3abe10[_0x4e4d('0x42')]=_[_0x4e4d('0x40')](_0x336afe[_0x4e4d('0x3d')],qs[_0x4e4d('0x41')](_0x24f915['query'][_0x4e4d('0x41')]));_0x3abe10['attributes']=_0x3abe10['attributes'][_0x4e4d('0x43')]?_0x3abe10[_0x4e4d('0x42')]:_0x336afe[_0x4e4d('0x3d')];if(_0x24f915['query'][_0x4e4d('0x4d')]){_0x3abe10[_0x4e4d('0x4e')]=[{'all':!![]}];}_0x3abe10=_['merge']({},_0x3abe10,_0x24f915[_0x4e4d('0x55')]);return db[_0x4e4d('0x3a')]['find'](_0x3abe10)[_0x4e4d('0x34')](handleEntityNotFound(_0x16bff6,null))[_0x4e4d('0x34')](respondWithResult(_0x16bff6,null))[_0x4e4d('0x50')](handleError(_0x16bff6,null));};exports[_0x4e4d('0x56')]=function(_0x5e99e3,_0x5eb0b5){if(_0x5e99e3[_0x4e4d('0x57')]['id']){delete _0x5e99e3[_0x4e4d('0x57')]['id'];}return db[_0x4e4d('0x3a')]['find']({'where':{'id':_0x5e99e3[_0x4e4d('0x52')]['id']}})['then'](handleEntityNotFound(_0x5eb0b5,null))[_0x4e4d('0x34')](saveUpdates(_0x5e99e3[_0x4e4d('0x57')],null))[_0x4e4d('0x34')](respondWithResult(_0x5eb0b5,null))[_0x4e4d('0x50')](handleError(_0x5eb0b5,null));};exports[_0x4e4d('0x58')]=function(_0x83ff59,_0x2c93c0,_0x25427f){if(_0x83ff59[_0x4e4d('0x59')]&&_0x83ff59[_0x4e4d('0x59')][_0x4e4d('0x5a')]){_0x83ff59['body']['logo']=_0x83ff59[_0x4e4d('0x59')]['filename'];}return db['Setting']['find']({'where':{'id':_0x83ff59['params']['id']}})[_0x4e4d('0x34')](handleEntityNotFound(_0x2c93c0,null))[_0x4e4d('0x34')](saveUpdates(_0x83ff59[_0x4e4d('0x57')],null))[_0x4e4d('0x34')](respondWithResult(_0x2c93c0,null))[_0x4e4d('0x50')](handleError(_0x2c93c0,null));};exports[_0x4e4d('0x5b')]=function(_0x39eff1,_0xc1d7be,_0x35f335){if(_0x39eff1[_0x4e4d('0x59')]&&_0x39eff1[_0x4e4d('0x59')][_0x4e4d('0x5a')]){_0x39eff1[_0x4e4d('0x57')]['loginLogo']=_0x39eff1['file'][_0x4e4d('0x5a')];}return db[_0x4e4d('0x3a')][_0x4e4d('0x5c')]({'where':{'id':_0x39eff1[_0x4e4d('0x52')]['id']}})[_0x4e4d('0x34')](handleEntityNotFound(_0xc1d7be,null))['then'](saveUpdates(_0x39eff1[_0x4e4d('0x57')],null))[_0x4e4d('0x34')](respondWithResult(_0xc1d7be,null))[_0x4e4d('0x50')](handleError(_0xc1d7be,null));};var utilLicense=require(_0x4e4d('0x19'));exports[_0x4e4d('0x5d')]=function(_0x2d46e,_0xb60ecf,_0x12ae84){var _0x25f726=_0x4e4d('0x5e');var _0xa0563c={'custom':![]};return utilLicense[_0x4e4d('0x5f')]()[_0x4e4d('0x34')](function(_0x1eeb4b){if(_0x1eeb4b){_0xa0563c=_0x1eeb4b;}return db[_0x4e4d('0x3a')][_0x4e4d('0x5c')]({'where':{'id':_0x2d46e[_0x4e4d('0x52')]['id']},'attributes':[_0x4e4d('0x60'),'loginLogo',_0x4e4d('0x61'),_0x4e4d('0x62'),_0x4e4d('0x63'),'defaultLoginLogo','defaultPreferred',_0x4e4d('0x64')],'raw':!![]});})[_0x4e4d('0x34')](handleEntityNotFound(_0xb60ecf,null))['then'](function(_0x186303){if(_0x186303){var _0x53571d=_0x186303['logo']&&fs[_0x4e4d('0x65')](path[_0x4e4d('0x66')](config[_0x4e4d('0x67')],_0x25f726,_[_0x4e4d('0x68')](_0x186303[_0x4e4d('0x60')])))?path[_0x4e4d('0x66')](config[_0x4e4d('0x67')],_0x25f726,_[_0x4e4d('0x68')](_0x186303[_0x4e4d('0x60')])):path[_0x4e4d('0x66')](config[_0x4e4d('0x67')],_0x25f726,_[_0x4e4d('0x68')](_0x4e4d('0x69')));var _0x2df7fe='default'+_[_0x4e4d('0x6a')](_0x4e4d('0x60'));if(_0x186303[_0x2df7fe]||!_0xa0563c[_0x4e4d('0x6b')]){_0x53571d=path['join'](config['root'],_0x25f726,_[_0x4e4d('0x68')](_0x4e4d('0x69')));}if(!fs['existsSync'](_0x53571d)){throw new db[(_0x4e4d('0x6c'))][(_0x4e4d('0x6d'))](_['upperFirst'](_0x4e4d('0x60'))+_0x4e4d('0x6e'));}return _0xb60ecf[_0x4e4d('0x6f')](_0x53571d);}})[_0x4e4d('0x50')](handleError(_0xb60ecf,null));};var utilLicense=require(_0x4e4d('0x19'));exports[_0x4e4d('0x70')]=function(_0x37873f,_0x11c1f4,_0x2ef543){var _0x23e683=_0x4e4d('0x5e');var _0x5701d9={'custom':![]};return utilLicense[_0x4e4d('0x5f')]()[_0x4e4d('0x34')](function(_0x13acec){if(_0x13acec){_0x5701d9=_0x13acec;}return db[_0x4e4d('0x3a')][_0x4e4d('0x5c')]({'where':{'id':_0x37873f[_0x4e4d('0x52')]['id']},'attributes':[_0x4e4d('0x60'),'loginLogo','preferred',_0x4e4d('0x62'),'defaultLogo',_0x4e4d('0x71'),_0x4e4d('0x72'),'defaultFavicon'],'raw':!![]});})[_0x4e4d('0x34')](handleEntityNotFound(_0x11c1f4,null))[_0x4e4d('0x34')](function(_0x50da8f){if(_0x50da8f){var _0x233ca5=_0x50da8f[_0x4e4d('0x73')]&&fs[_0x4e4d('0x65')](path[_0x4e4d('0x66')](config[_0x4e4d('0x67')],_0x23e683,_[_0x4e4d('0x68')](_0x50da8f[_0x4e4d('0x73')])))?path['join'](config[_0x4e4d('0x67')],_0x23e683,_['toLower'](_0x50da8f[_0x4e4d('0x73')])):path[_0x4e4d('0x66')](config[_0x4e4d('0x67')],_0x23e683,_['toLower'](_0x4e4d('0x74')));var _0x4766f7='default'+_[_0x4e4d('0x6a')](_0x4e4d('0x73'));if(_0x50da8f[_0x4766f7]||!_0x5701d9[_0x4e4d('0x6b')]){_0x233ca5=path[_0x4e4d('0x66')](config[_0x4e4d('0x67')],_0x23e683,_[_0x4e4d('0x68')]('default_loginLogo.svg'));}if(!fs[_0x4e4d('0x65')](_0x233ca5)){throw new db['Sequelize']['ValidationError'](_[_0x4e4d('0x6a')]('loginLogo')+_0x4e4d('0x6e'));}return _0x11c1f4[_0x4e4d('0x6f')](_0x233ca5);}})[_0x4e4d('0x50')](handleError(_0x11c1f4,null));};exports[_0x4e4d('0x75')]=function(_0x4b2cc3,_0x232ccb){return db[_0x4e4d('0x3a')][_0x4e4d('0x5c')]({'where':{'id':_0x4b2cc3[_0x4e4d('0x52')]['id']},'attributes':[_0x4e4d('0x76')]})[_0x4e4d('0x34')](respondWithResult(_0x232ccb,null))['catch'](handleError(_0x232ccb,null));};exports[_0x4e4d('0x77')]=function(_0x183aed,_0x5d044d,_0x5a8e6b){if(_0x183aed[_0x4e4d('0x59')]&&_0x183aed[_0x4e4d('0x59')]['filename']){_0x183aed[_0x4e4d('0x57')][_0x4e4d('0x61')]=_0x183aed['file'][_0x4e4d('0x5a')];}return db[_0x4e4d('0x3a')][_0x4e4d('0x5c')]({'where':{'id':_0x183aed[_0x4e4d('0x52')]['id']}})['then'](handleEntityNotFound(_0x5d044d,null))['then'](saveUpdates(_0x183aed[_0x4e4d('0x57')],null))[_0x4e4d('0x34')](respondWithResult(_0x5d044d,null))[_0x4e4d('0x50')](handleError(_0x5d044d,null));};var utilLicense=require(_0x4e4d('0x19'));exports[_0x4e4d('0x78')]=function(_0x42e534,_0x3407a0,_0x289d21){var _0x1a111f='server/files/images/logos';var _0x3e35bf={'custom':![]};return utilLicense[_0x4e4d('0x5f')]()[_0x4e4d('0x34')](function(_0x485d11){if(_0x485d11){_0x3e35bf=_0x485d11;}return db[_0x4e4d('0x3a')][_0x4e4d('0x5c')]({'where':{'id':_0x42e534['params']['id']},'attributes':[_0x4e4d('0x60'),_0x4e4d('0x73'),'preferred',_0x4e4d('0x62'),_0x4e4d('0x63'),_0x4e4d('0x71'),_0x4e4d('0x72'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x3407a0,null))['then'](function(_0x247984){if(_0x247984){var _0x15f195=_0x247984[_0x4e4d('0x61')]&&fs[_0x4e4d('0x65')](path[_0x4e4d('0x66')](config[_0x4e4d('0x67')],_0x1a111f,_['toLower'](_0x247984[_0x4e4d('0x61')])))?path[_0x4e4d('0x66')](config[_0x4e4d('0x67')],_0x1a111f,_[_0x4e4d('0x68')](_0x247984[_0x4e4d('0x61')])):path[_0x4e4d('0x66')](config[_0x4e4d('0x67')],_0x1a111f,_[_0x4e4d('0x68')](_0x4e4d('0x79')));var _0x6744c9=_0x4e4d('0x7a')+_[_0x4e4d('0x6a')](_0x4e4d('0x61'));if(_0x247984[_0x6744c9]||!_0x3e35bf[_0x4e4d('0x6b')]||!_0x3e35bf[_0x4e4d('0x61')]){_0x15f195=path[_0x4e4d('0x66')](config[_0x4e4d('0x67')],_0x1a111f,_[_0x4e4d('0x68')](_0x4e4d('0x79')));}if(!fs[_0x4e4d('0x65')](_0x15f195)){throw new db[(_0x4e4d('0x6c'))][(_0x4e4d('0x6d'))](_['upperFirst'](_0x4e4d('0x61'))+_0x4e4d('0x6e'));}return _0x3407a0[_0x4e4d('0x6f')](_0x15f195);}})[_0x4e4d('0x50')](handleError(_0x3407a0,null));};exports['addFavicon']=function(_0x4f5829,_0x1cff0f,_0x589df4){if(_0x4f5829[_0x4e4d('0x59')]&&_0x4f5829[_0x4e4d('0x59')][_0x4e4d('0x5a')]){_0x4f5829[_0x4e4d('0x57')]['favicon']=_0x4f5829[_0x4e4d('0x59')]['filename'];}return db[_0x4e4d('0x3a')]['find']({'where':{'id':_0x4f5829['params']['id']}})[_0x4e4d('0x34')](handleEntityNotFound(_0x1cff0f,null))[_0x4e4d('0x34')](saveUpdates(_0x4f5829[_0x4e4d('0x57')],null))[_0x4e4d('0x34')](respondWithResult(_0x1cff0f,null))[_0x4e4d('0x50')](handleError(_0x1cff0f,null));};var utilLicense=require(_0x4e4d('0x19'));exports[_0x4e4d('0x7b')]=function(_0x3fc2b6,_0x14b5d1,_0x245a73){var _0x2696ea='server/files/images/logos';var _0x4181fb={'custom':![]};return utilLicense[_0x4e4d('0x5f')]()[_0x4e4d('0x34')](function(_0xe701e){if(_0xe701e){_0x4181fb=_0xe701e;}return db['Setting'][_0x4e4d('0x5c')]({'where':{'id':_0x3fc2b6[_0x4e4d('0x52')]['id']},'attributes':[_0x4e4d('0x60'),_0x4e4d('0x73'),_0x4e4d('0x61'),_0x4e4d('0x62'),_0x4e4d('0x63'),_0x4e4d('0x71'),_0x4e4d('0x72'),_0x4e4d('0x64')],'raw':!![]});})[_0x4e4d('0x34')](handleEntityNotFound(_0x14b5d1,null))[_0x4e4d('0x34')](function(_0x27478b){if(_0x27478b){var _0x13e829=_0x27478b['favicon']&&fs[_0x4e4d('0x65')](path[_0x4e4d('0x66')](config['root'],_0x2696ea,_[_0x4e4d('0x68')](_0x27478b['favicon'])))?path[_0x4e4d('0x66')](config[_0x4e4d('0x67')],_0x2696ea,_[_0x4e4d('0x68')](_0x27478b[_0x4e4d('0x62')])):path[_0x4e4d('0x66')](config[_0x4e4d('0x67')],_0x2696ea,_['toLower'](_0x4e4d('0x7c')));var _0x4a5e08='default'+_[_0x4e4d('0x6a')](_0x4e4d('0x62'));if(_0x27478b[_0x4a5e08]||!_0x4181fb[_0x4e4d('0x6b')]){_0x13e829=path['join'](config[_0x4e4d('0x67')],_0x2696ea,_[_0x4e4d('0x68')](_0x4e4d('0x7c')));}if(!fs['existsSync'](_0x13e829)){throw new db[(_0x4e4d('0x6c'))]['ValidationError'](_[_0x4e4d('0x6a')](_0x4e4d('0x62'))+_0x4e4d('0x6e'));}return _0x14b5d1['download'](_0x13e829);}})[_0x4e4d('0x50')](handleError(_0x14b5d1,null));};exports[_0x4e4d('0x7d')]=function(_0x4b2b82,_0x3bbefc){var _0x405769={'offset':moment()[_0x4e4d('0x7e')]()};_0x405769[_0x4e4d('0x7f')]=moment()['utcOffset'](_0x405769[_0x4e4d('0x2b')])[_0x4e4d('0x80')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x3bbefc['status'](0xc8)[_0x4e4d('0x81')](_0x405769);};
\ No newline at end of file
index 8ae5e04..8d7ef1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Setting','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./setting.attributes'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7217=['../../config/environment','./setting.attributes','exports','define','Setting','settings','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0x7217,0x19e));var _0x7721=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0x7217[_0x21aec3];return _0x288bbc;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index da8a149..c14f9b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabb2=['code','message','result','ShowSetting','Setting','find','options','raw','where','attributes','map','include','model','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error'];(function(_0x58e75f,_0x4f0a65){var _0x256f39=function(_0x449d59){while(--_0x449d59){_0x58e75f['push'](_0x58e75f['shift']());}};_0x256f39(++_0x4f0a65);}(_0xabb2,0x6e));var _0x2abb=function(_0x3e69ae,_0x366e8d){_0x3e69ae=_0x3e69ae-0x0;var _0x3d7f42=_0xabb2[_0x3e69ae];return _0x3d7f42;};'use strict';var _=require(_0x2abb('0x0'));var util=require(_0x2abb('0x1'));var moment=require(_0x2abb('0x2'));var BPromise=require(_0x2abb('0x3'));var rs=require(_0x2abb('0x4'));var fs=require('fs');var Redis=require(_0x2abb('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2abb('0x6'));var logger=require(_0x2abb('0x7'))(_0x2abb('0x8'));var config=require(_0x2abb('0x9'));var jayson=require(_0x2abb('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4f32d5,_0x341812,_0x42474e){return new BPromise(function(_0x424e91,_0x1b7964){return client['request'](_0x4f32d5,_0x42474e)[_0x2abb('0xb')](function(_0x4c7e35){logger[_0x2abb('0xc')](_0x2abb('0xd'),_0x341812,_0x2abb('0xe'));logger[_0x2abb('0xf')](_0x2abb('0x10'),_0x341812,_0x2abb('0xe'),JSON['stringify'](_0x4c7e35));if(_0x4c7e35['error']){if(_0x4c7e35[_0x2abb('0x11')][_0x2abb('0x12')]===0x1f4){logger[_0x2abb('0x11')](_0x2abb('0xd'),_0x341812,_0x4c7e35['error']['message']);return _0x1b7964(_0x4c7e35['error'][_0x2abb('0x13')]);}logger[_0x2abb('0x11')]('Setting,\x20%s,\x20%s',_0x341812,_0x4c7e35[_0x2abb('0x11')][_0x2abb('0x13')]);return _0x424e91(_0x4c7e35[_0x2abb('0x11')][_0x2abb('0x13')]);}else{logger[_0x2abb('0xc')](_0x2abb('0xd'),_0x341812,_0x2abb('0xe'));_0x424e91(_0x4c7e35[_0x2abb('0x14')][_0x2abb('0x13')]);}})['catch'](function(_0x54ded4){logger[_0x2abb('0x11')](_0x2abb('0xd'),_0x341812,_0x54ded4);_0x1b7964(_0x54ded4);});});}exports[_0x2abb('0x15')]=function(_0x5c3094){var _0x4fa39a=this;return new Promise(function(_0x637ce1,_0x218d50){return db[_0x2abb('0x16')][_0x2abb('0x17')]({'raw':_0x5c3094[_0x2abb('0x18')]?_0x5c3094[_0x2abb('0x18')][_0x2abb('0x19')]===undefined?!![]:![]:!![],'where':_0x5c3094[_0x2abb('0x18')]?_0x5c3094['options'][_0x2abb('0x1a')]||null:null,'attributes':_0x5c3094[_0x2abb('0x18')]?_0x5c3094[_0x2abb('0x18')][_0x2abb('0x1b')]||null:null,'include':_0x5c3094[_0x2abb('0x18')]?_0x5c3094[_0x2abb('0x18')]['include']?_[_0x2abb('0x1c')](_0x5c3094[_0x2abb('0x18')][_0x2abb('0x1d')],function(_0x503989){return{'model':db[_0x503989[_0x2abb('0x1e')]],'as':_0x503989['as'],'attributes':_0x503989[_0x2abb('0x1b')],'include':_0x503989[_0x2abb('0x1d')]?_[_0x2abb('0x1c')](_0x503989[_0x2abb('0x1d')],function(_0x287d4b){return{'model':db[_0x287d4b['model']],'as':_0x287d4b['as'],'attributes':_0x287d4b[_0x2abb('0x1b')],'include':_0x287d4b[_0x2abb('0x1d')]?_['map'](_0x287d4b[_0x2abb('0x1d')],function(_0x4f2280){return{'model':db[_0x4f2280[_0x2abb('0x1e')]],'as':_0x4f2280['as'],'attributes':_0x4f2280[_0x2abb('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2abb('0xb')](function(_0x2628ef){logger[_0x2abb('0xc')](_0x2abb('0x15'),_0x5c3094);logger['debug'](_0x2abb('0x15'),_0x5c3094,JSON['stringify'](_0x2628ef));_0x637ce1(_0x2628ef);})[_0x2abb('0x1f')](function(_0x55dce4){logger[_0x2abb('0x11')](_0x2abb('0x15'),_0x55dce4[_0x2abb('0x13')],_0x5c3094);_0x218d50(_0x4fa39a['error'](0x1f4,_0x55dce4[_0x2abb('0x13')]));});});};
\ No newline at end of file
+var _0x8d7e=['error','message','Setting,\x20%s,\x20%s','result','catch','Setting','find','options','raw','where','attributes','include','map','model','info','stringify','ShowSetting','lodash','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s'];(function(_0x4ec505,_0x454616){var _0x20b7c1=function(_0x178bcd){while(--_0x178bcd){_0x4ec505['push'](_0x4ec505['shift']());}};_0x20b7c1(++_0x454616);}(_0x8d7e,0xcb));var _0xe8d7=function(_0x4ad6c4,_0x5b66d4){_0x4ad6c4=_0x4ad6c4-0x0;var _0x5225b7=_0x8d7e[_0x4ad6c4];return _0x5225b7;};'use strict';var _=require(_0xe8d7('0x0'));var util=require('util');var moment=require(_0xe8d7('0x1'));var BPromise=require(_0xe8d7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe8d7('0x3'));var logger=require(_0xe8d7('0x4'))(_0xe8d7('0x5'));var config=require(_0xe8d7('0x6'));var jayson=require(_0xe8d7('0x7'));var client=jayson[_0xe8d7('0x8')][_0xe8d7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2fac2f,_0x1f383c,_0x553eed){return new BPromise(function(_0x4d28bf,_0x306057){return client['request'](_0x2fac2f,_0x553eed)[_0xe8d7('0xa')](function(_0xa7509f){logger['info']('Setting,\x20%s,\x20%s',_0x1f383c,_0xe8d7('0xb'));logger[_0xe8d7('0xc')](_0xe8d7('0xd'),_0x1f383c,_0xe8d7('0xb'),JSON['stringify'](_0xa7509f));if(_0xa7509f[_0xe8d7('0xe')]){if(_0xa7509f[_0xe8d7('0xe')]['code']===0x1f4){logger[_0xe8d7('0xe')]('Setting,\x20%s,\x20%s',_0x1f383c,_0xa7509f[_0xe8d7('0xe')][_0xe8d7('0xf')]);return _0x306057(_0xa7509f['error'][_0xe8d7('0xf')]);}logger['error'](_0xe8d7('0x10'),_0x1f383c,_0xa7509f['error'][_0xe8d7('0xf')]);return _0x4d28bf(_0xa7509f[_0xe8d7('0xe')][_0xe8d7('0xf')]);}else{logger['info'](_0xe8d7('0x10'),_0x1f383c,_0xe8d7('0xb'));_0x4d28bf(_0xa7509f[_0xe8d7('0x11')][_0xe8d7('0xf')]);}})[_0xe8d7('0x12')](function(_0x231690){logger[_0xe8d7('0xe')](_0xe8d7('0x10'),_0x1f383c,_0x231690);_0x306057(_0x231690);});});}exports['ShowSetting']=function(_0x1e611e){var _0x12ab7b=this;return new Promise(function(_0x42d559,_0x2dd5cb){return db[_0xe8d7('0x13')][_0xe8d7('0x14')]({'raw':_0x1e611e[_0xe8d7('0x15')]?_0x1e611e['options'][_0xe8d7('0x16')]===undefined?!![]:![]:!![],'where':_0x1e611e[_0xe8d7('0x15')]?_0x1e611e['options'][_0xe8d7('0x17')]||null:null,'attributes':_0x1e611e[_0xe8d7('0x15')]?_0x1e611e[_0xe8d7('0x15')][_0xe8d7('0x18')]||null:null,'include':_0x1e611e[_0xe8d7('0x15')]?_0x1e611e[_0xe8d7('0x15')][_0xe8d7('0x19')]?_[_0xe8d7('0x1a')](_0x1e611e[_0xe8d7('0x15')][_0xe8d7('0x19')],function(_0x46d864){return{'model':db[_0x46d864['model']],'as':_0x46d864['as'],'attributes':_0x46d864[_0xe8d7('0x18')],'include':_0x46d864[_0xe8d7('0x19')]?_[_0xe8d7('0x1a')](_0x46d864[_0xe8d7('0x19')],function(_0x4cc416){return{'model':db[_0x4cc416[_0xe8d7('0x1b')]],'as':_0x4cc416['as'],'attributes':_0x4cc416[_0xe8d7('0x18')],'include':_0x4cc416[_0xe8d7('0x19')]?_[_0xe8d7('0x1a')](_0x4cc416[_0xe8d7('0x19')],function(_0x9b95da){return{'model':db[_0x9b95da['model']],'as':_0x9b95da['as'],'attributes':_0x9b95da[_0xe8d7('0x18')]};}):[]};}):[]};}):[]:[]})[_0xe8d7('0xa')](function(_0x23ff08){logger[_0xe8d7('0x1c')]('ShowSetting',_0x1e611e);logger[_0xe8d7('0xc')]('ShowSetting',_0x1e611e,JSON[_0xe8d7('0x1d')](_0x23ff08));_0x42d559(_0x23ff08);})[_0xe8d7('0x12')](function(_0x4261e4){logger[_0xe8d7('0xe')](_0xe8d7('0x1e'),_0x4261e4[_0xe8d7('0xf')],_0x1e611e);_0x2dd5cb(_0x12ab7b[_0xe8d7('0xe')](0x1f4,_0x4261e4['message']));});});};
\ No newline at end of file
index a5777c4..4b752de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','post','create','/:id/notify','notify','put','delete','removeAnswers','path','connect-timeout','express'];(function(_0x485889,_0x3d8a94){var _0x15a66f=function(_0x23b577){while(--_0x23b577){_0x485889['push'](_0x485889['shift']());}};_0x15a66f(++_0x3d8a94);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x27d11f,_0x2c59a8){_0x27d11f=_0x27d11f-0x0;var _0x36c1a5=_0x7fbe[_0x27d11f];return _0x36c1a5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7fb('0x0'));var timeout=require(_0xe7fb('0x1'));var express=require(_0xe7fb('0x2'));var router=express[_0xe7fb('0x3')]();var fs_extra=require(_0xe7fb('0x4'));var auth=require(_0xe7fb('0x5'));var interaction=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var controller=require(_0xe7fb('0x8'));router[_0xe7fb('0x9')]('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xb')]);router[_0xe7fb('0x9')](_0xe7fb('0xc'),auth['isAuthenticated'](),controller[_0xe7fb('0xd')]);router[_0xe7fb('0x9')](_0xe7fb('0xe'),auth[_0xe7fb('0xa')](),controller['show']);router['get'](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x10')]);router[_0xe7fb('0x9')](_0xe7fb('0x11'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x12')]);router[_0xe7fb('0x9')](_0xe7fb('0x13'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x14')]);router[_0xe7fb('0x9')](_0xe7fb('0x15'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x16')]);router['get'](_0xe7fb('0x17'),controller[_0xe7fb('0x18')]);router['get'](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['getAgents']);router[_0xe7fb('0x1a')]('/',auth['isAuthenticated'](),controller[_0xe7fb('0x1b')]);router[_0xe7fb('0x1a')](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller['addDisposition']);router[_0xe7fb('0x1a')]('/:id/canned_answers',auth[_0xe7fb('0xa')](),controller['addAnswer']);router[_0xe7fb('0x1a')](_0xe7fb('0x1c'),controller[_0xe7fb('0x1d')]);router[_0xe7fb('0x1a')]('/:id/applications',auth[_0xe7fb('0xa')](),controller['addApplications']);router[_0xe7fb('0x1a')]('/:id/send',auth[_0xe7fb('0xa')](),controller['send']);router[_0xe7fb('0x1a')](_0xe7fb('0x17'),controller['status']);router[_0xe7fb('0x1a')](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['addAgents']);router[_0xe7fb('0x1e')](_0xe7fb('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xe7fb('0xe'),auth['isAuthenticated'](),controller['destroy']);router[_0xe7fb('0x1f')](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller['removeDispositions']);router[_0xe7fb('0x1f')](_0xe7fb('0x11'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x20')]);router[_0xe7fb('0x1f')](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x53ec=['send','status','update','delete','removeDispositions','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./smsAccount.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/applications','getApplications','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/send'];(function(_0x1d6e52,_0x49ea25){var _0x2711ef=function(_0x2bb4b5){while(--_0x2bb4b5){_0x1d6e52['push'](_0x1d6e52['shift']());}};_0x2711ef(++_0x49ea25);}(_0x53ec,0x192));var _0xc53e=function(_0x230e39,_0x5341){_0x230e39=_0x230e39-0x0;var _0xa804e=_0x53ec[_0x230e39];return _0xa804e;};'use strict';var multer=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var path=require(_0xc53e('0x2'));var timeout=require(_0xc53e('0x3'));var express=require(_0xc53e('0x4'));var router=express[_0xc53e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc53e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53e('0x7'));var controller=require(_0xc53e('0x8'));router['get']('/',auth[_0xc53e('0x9')](),controller['index']);router[_0xc53e('0xa')](_0xc53e('0xb'),auth['isAuthenticated'](),controller[_0xc53e('0xc')]);router[_0xc53e('0xa')](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0xe')]);router[_0xc53e('0xa')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x10')]);router['get']('/:id/canned_answers',auth[_0xc53e('0x9')](),controller['getAnswers']);router['get'](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x12')]);router[_0xc53e('0xa')]('/:id/interactions',auth['isAuthenticated'](),controller[_0xc53e('0x13')]);router[_0xc53e('0xa')](_0xc53e('0x14'),controller[_0xc53e('0x15')]);router[_0xc53e('0xa')](_0xc53e('0x16'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x17')]);router[_0xc53e('0x18')]('/',auth[_0xc53e('0x9')](),controller['create']);router[_0xc53e('0x18')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x19')]);router[_0xc53e('0x18')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1b')]);router[_0xc53e('0x18')]('/:id/notify',controller['notify']);router[_0xc53e('0x18')](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1c')]);router[_0xc53e('0x18')](_0xc53e('0x1d'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1e')]);router[_0xc53e('0x18')](_0xc53e('0x14'),controller[_0xc53e('0x1f')]);router[_0xc53e('0x18')](_0xc53e('0x16'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x20')]);router[_0xc53e('0x21')](_0xc53e('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0xc53e('0x21')]('/:id/dispositions',auth[_0xc53e('0x9')](),controller[_0xc53e('0x22')]);router[_0xc53e('0x21')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller['removeAnswers']);router[_0xc53e('0x21')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xc53e('0x23')]=router;
\ No newline at end of file
index b15780c..bef4014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e2c=['randomstring','exports','STRING','name','generate','ENUM','twilio','connectel','plivo','clickatell','csc','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize'];(function(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0x9e2c,0xd7));var _0xc9e2=function(_0x525954,_0x5e38c6){_0x525954=_0x525954-0x0;var _0xe7289e=_0x9e2c[_0x525954];return _0xe7289e;};'use strict';var Sequelize=require(_0xc9e2('0x0'));var rs=require(_0xc9e2('0x1'));module[_0xc9e2('0x2')]={'name':{'type':Sequelize[_0xc9e2('0x3')],'unique':_0xc9e2('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0xc9e2('0x3')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0xc9e2('0x3')],'defaultValue':function(){return rs[_0xc9e2('0x5')]();}},'phone':{'type':Sequelize[_0xc9e2('0x3')]},'type':{'type':Sequelize[_0xc9e2('0x6')](_0xc9e2('0x7'),'skebby',_0xc9e2('0x8'),'clicksend',_0xc9e2('0x9'),_0xc9e2('0xa'),'bandwidth',_0xc9e2('0xb'),'infobip','intelepeer')},'accountSid':{'type':Sequelize[_0xc9e2('0x3')]},'authId':{'type':Sequelize[_0xc9e2('0x3')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0xc9e2('0x6')]('SI','TI','GP')},'username':{'type':Sequelize[_0xc9e2('0x3')]},'password':{'type':Sequelize[_0xc9e2('0x3')]},'apiKey':{'type':Sequelize[_0xc9e2('0x3')]},'applicationId':{'type':Sequelize[_0xc9e2('0x3')]},'accountId':{'type':Sequelize[_0xc9e2('0x3')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0xc9e2('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xc9e2('0xc');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xc9e2('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xc9e2('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xc9e2('0xd')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc9e2('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xc9e2('0xd')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xc9e2('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xc9e2('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc9e2('0xe')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x492d0f){if(!_0x492d0f)this[_0xc9e2('0xf')](_0xc9e2('0x10'),null);this[_0xc9e2('0xf')](_0xc9e2('0x11'),_0x492d0f);}}};
\ No newline at end of file
+var _0xd3cf=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','exports','name','STRING','generate','ENUM','twilio','skebby','connectel','clicksend','plivo','clickatell','bandwidth','csc','infobip','intelepeer','BOOLEAN','TEXT'];(function(_0x68a176,_0x3779de){var _0x317283=function(_0x298513){while(--_0x298513){_0x68a176['push'](_0x68a176['shift']());}};_0x317283(++_0x3779de);}(_0xd3cf,0x186));var _0xfd3c=function(_0x387954,_0x1842f1){_0x387954=_0x387954-0x0;var _0x59af64=_0xd3cf[_0x387954];return _0x59af64;};'use strict';var Sequelize=require(_0xfd3c('0x0'));var rs=require('randomstring');module[_0xfd3c('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xfd3c('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0xfd3c('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0xfd3c('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xfd3c('0x3')],'defaultValue':function(){return rs[_0xfd3c('0x4')]();}},'phone':{'type':Sequelize[_0xfd3c('0x3')]},'type':{'type':Sequelize[_0xfd3c('0x5')](_0xfd3c('0x6'),_0xfd3c('0x7'),_0xfd3c('0x8'),_0xfd3c('0x9'),_0xfd3c('0xa'),_0xfd3c('0xb'),_0xfd3c('0xc'),_0xfd3c('0xd'),_0xfd3c('0xe'),_0xfd3c('0xf'))},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0xfd3c('0x3')]},'smsMethod':{'type':Sequelize[_0xfd3c('0x5')]('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xfd3c('0x3')]},'apiKey':{'type':Sequelize[_0xfd3c('0x3')]},'applicationId':{'type':Sequelize[_0xfd3c('0x3')]},'accountId':{'type':Sequelize[_0xfd3c('0x3')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize[_0xfd3c('0x10')],'defaultValue':![]},'description':{'type':Sequelize[_0xfd3c('0x3')]},'notificationTemplate':{'type':Sequelize[_0xfd3c('0x11')],'defaultValue':function(){return _0xfd3c('0x12');}},'notificationSound':{'type':Sequelize[_0xfd3c('0x10')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xfd3c('0x10')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xfd3c('0x13')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xfd3c('0x13')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize['STRING']},'mandatoryDispositionPauseId':{'type':Sequelize[_0xfd3c('0x13')],'comment':_0xfd3c('0x14')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xfd3c('0x15'),'set':function(_0x35abb3){if(!_0x35abb3)this[_0xfd3c('0x16')](_0xfd3c('0x17'),null);this[_0xfd3c('0x16')]('mandatoryDisposition',_0x35abb3);}}};
\ No newline at end of file
index 592dfef..7bd07f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0a1=['fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','include','rows','catch','show','params','merge','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','options','includeAll','findAll','removeDispositions','ids','CannedAnswer','removeAnswers','notify','Applications','applications','orderBy','account','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','Body','messageId','MessageSid','skebby','text','connectel','message_id','plivo','MessageUUID','infobip','results','csc','fromNumber','replyMessageId','intelepeer','refid','isNil','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','Contacts','DESC','omit','contact','SmsInteraction','spread','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','SmsMessage','ContactId','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','transaction','SmsApplication','bulkCreate','findAndCountAll','priority','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','List','out','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','statusInt','requestid','status_code','groupName','DELIVERED','clickatell','bandwidth','redif','clicksend','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','destroy','get','SmsAccounts','UserProfileResource','name','send','index','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection'];(function(_0x123284,_0xafe473){var _0x101138=function(_0x3f99c4){while(--_0x3f99c4){_0x123284['push'](_0x123284['shift']());}};_0x101138(++_0xafe473);}(_0xd0a1,0x97));var _0x1d0a=function(_0x55a101,_0x3df81b){_0x55a101=_0x55a101-0x0;var _0x43466b=_0xd0a1[_0x55a101];return _0x43466b;};'use strict';var emlformat=require(_0x1d0a('0x0'));var rimraf=require(_0x1d0a('0x1'));var zipdir=require(_0x1d0a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1d0a('0x3'));var BPromise=require(_0x1d0a('0x4'));var Mustache=require(_0x1d0a('0x5'));var util=require(_0x1d0a('0x6'));var path=require(_0x1d0a('0x7'));var sox=require(_0x1d0a('0x8'));var csv=require('to-csv');var ejs=require(_0x1d0a('0x9'));var fs=require('fs');var fs_extra=require(_0x1d0a('0xa'));var _=require(_0x1d0a('0xb'));var squel=require(_0x1d0a('0xc'));var crypto=require('crypto');var jsforce=require(_0x1d0a('0xd'));var deskjs=require(_0x1d0a('0xe'));var toCsv=require(_0x1d0a('0xf'));var querystring=require(_0x1d0a('0x10'));var Papa=require('papaparse');var Redis=require(_0x1d0a('0x11'));var authService=require(_0x1d0a('0x12'));var qs=require(_0x1d0a('0x13'));var as=require(_0x1d0a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1d0a('0x15'));var utils=require(_0x1d0a('0x16'));var config=require(_0x1d0a('0x17'));var licenseUtil=require(_0x1d0a('0x18'));var db=require(_0x1d0a('0x19'))['db'];config[_0x1d0a('0x1a')]=_[_0x1d0a('0x1b')](config['redis'],{'host':_0x1d0a('0x1c'),'port':0x18eb});var socket=require(_0x1d0a('0x1d'))(new Redis(config[_0x1d0a('0x1a')]));require(_0x1d0a('0x1e'))[_0x1d0a('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0x1d0a('0x20')][_0x1d0a('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x5afb33,_0x3459a7,_0x389454,_0x1ac67a){return new BPromise(function(_0x5c23c4,_0x54feab){var _0x583819=_0x1ac67a||client;return _0x583819[_0x1d0a('0x22')](_0x5afb33,_0x389454)[_0x1d0a('0x23')](function(_0x54a862){logger[_0x1d0a('0x24')](_0x1d0a('0x25'),_0x3459a7,_0x1d0a('0x26'));logger[_0x1d0a('0x27')](_0x1d0a('0x28'),_0x3459a7,'request\x20sent',JSON[_0x1d0a('0x29')](_0x54a862));if(_0x54a862[_0x1d0a('0x2a')]){if(_0x54a862[_0x1d0a('0x2a')]['code']===0x1f4){logger[_0x1d0a('0x2a')](_0x1d0a('0x25'),_0x3459a7,_0x54a862[_0x1d0a('0x2a')][_0x1d0a('0x2b')]);return _0x54feab(_0x54a862[_0x1d0a('0x2a')][_0x1d0a('0x2b')]);}logger[_0x1d0a('0x2a')](_0x1d0a('0x25'),_0x3459a7,_0x54a862['error'][_0x1d0a('0x2b')]);return _0x5c23c4(_0x54a862['error']['message']);}else{logger['info'](_0x1d0a('0x25'),_0x3459a7,_0x1d0a('0x26'));_0x5c23c4(_0x54a862[_0x1d0a('0x2c')][_0x1d0a('0x2b')]);}})['catch'](function(_0x1b1069){logger[_0x1d0a('0x2a')]('SmsAccount,\x20%s,\x20%s',_0x3459a7,_0x1b1069);_0x54feab(_0x1b1069);});});}function respondWithStatusCode(_0x596664,_0xcc6abb){_0xcc6abb=_0xcc6abb||0xcc;return function(_0x1f2959){if(_0x1f2959){return _0x596664[_0x1d0a('0x2d')](_0xcc6abb);}return _0x596664[_0x1d0a('0x2e')](_0xcc6abb)[_0x1d0a('0x2f')]();};}function respondWithResult(_0x1be5bd,_0xd1b0da){_0xd1b0da=_0xd1b0da||0xc8;return function(_0x1184f7){if(_0x1184f7){return _0x1be5bd[_0x1d0a('0x2e')](_0xd1b0da)[_0x1d0a('0x30')](_0x1184f7);}};}function respondWithFilteredResult(_0x146f73,_0x41db3b){return function(_0x5bd749){if(_0x5bd749){var _0x4f2466=typeof _0x41db3b[_0x1d0a('0x31')]==='undefined'&&typeof _0x41db3b[_0x1d0a('0x32')]===_0x1d0a('0x33');var _0x2255ac=_0x5bd749[_0x1d0a('0x34')];var _0x479363=_0x4f2466?0x0:_0x41db3b[_0x1d0a('0x31')];var _0x225723=_0x4f2466?_0x5bd749[_0x1d0a('0x34')]:_0x41db3b[_0x1d0a('0x31')]+_0x41db3b[_0x1d0a('0x32')];var _0x2c49dc;if(_0x225723>=_0x2255ac){_0x225723=_0x2255ac;_0x2c49dc=0xc8;}else{_0x2c49dc=0xce;}_0x146f73[_0x1d0a('0x2e')](_0x2c49dc);return _0x146f73[_0x1d0a('0x35')]('Content-Range',_0x479363+'-'+_0x225723+'/'+_0x2255ac)['json'](_0x5bd749);}return null;};}function patchUpdates(_0x33fa20){return function(_0x4f4ed3){try{jsonpatch[_0x1d0a('0x36')](_0x4f4ed3,_0x33fa20,!![]);}catch(_0x2b9ffd){return BPromise[_0x1d0a('0x37')](_0x2b9ffd);}return _0x4f4ed3[_0x1d0a('0x38')]();};}function saveUpdates(_0x207d5b,_0x482048){return function(_0x34e3c0){if(_0x34e3c0){return _0x34e3c0['update'](_0x207d5b)[_0x1d0a('0x23')](function(_0x25595a){return _0x25595a;});}return null;};}function removeEntity(_0x24f76c,_0x82c79f){return function(_0x5cf5c6){if(_0x5cf5c6){return _0x5cf5c6[_0x1d0a('0x39')]()[_0x1d0a('0x23')](function(){var _0x3b36a1=_0x5cf5c6[_0x1d0a('0x3a')]({'plain':!![]});var _0x19166d=_0x1d0a('0x3b');return db[_0x1d0a('0x3c')][_0x1d0a('0x39')]({'where':{'type':_0x19166d,'resourceId':_0x3b36a1['id']}})[_0x1d0a('0x23')](function(){return _0x5cf5c6;});})['then'](function(){_0x24f76c[_0x1d0a('0x2e')](0xcc)[_0x1d0a('0x2f')]();});}};}function handleEntityNotFound(_0x3a63d9,_0x5f5662){return function(_0x3ed12f){if(!_0x3ed12f){_0x3a63d9[_0x1d0a('0x2d')](0x194);}return _0x3ed12f;};}function handleError(_0x49272d,_0x232979){_0x232979=_0x232979||0x1f4;return function(_0x3e1b37){logger['error'](_0x3e1b37['stack']);if(_0x3e1b37['name']){delete _0x3e1b37[_0x1d0a('0x3d')];}_0x49272d[_0x1d0a('0x2e')](_0x232979)[_0x1d0a('0x3e')](_0x3e1b37);};}exports[_0x1d0a('0x3f')]=function(_0x373443,_0x4bc278){var _0x462e49={'include':[{'model':db[_0x1d0a('0x40')],'as':_0x1d0a('0x41')}]},_0x18975e={},_0xabdc1f={'count':0x0,'rows':[]};var _0x2ba076=_[_0x1d0a('0x42')](db[_0x1d0a('0x43')][_0x1d0a('0x44')],function(_0x434334){return{'name':_0x434334[_0x1d0a('0x45')],'type':_0x434334[_0x1d0a('0x46')][_0x1d0a('0x47')]};});_0x18975e[_0x1d0a('0x48')]=_[_0x1d0a('0x42')](_0x2ba076,_0x1d0a('0x3d'));_0x18975e['query']=_[_0x1d0a('0x49')](_0x373443[_0x1d0a('0x4a')]);_0x18975e[_0x1d0a('0x4b')]=_[_0x1d0a('0x4c')](_0x18975e[_0x1d0a('0x48')],_0x18975e[_0x1d0a('0x4a')]);_0x462e49['attributes']=_[_0x1d0a('0x4c')](_0x18975e[_0x1d0a('0x48')],qs[_0x1d0a('0x4d')](_0x373443[_0x1d0a('0x4a')][_0x1d0a('0x4d')]));_0x462e49[_0x1d0a('0x4e')]=_0x462e49[_0x1d0a('0x4e')][_0x1d0a('0x4f')]?_0x462e49['attributes']:_0x18975e[_0x1d0a('0x48')];if(!_0x373443[_0x1d0a('0x4a')][_0x1d0a('0x50')](_0x1d0a('0x51'))){_0x462e49[_0x1d0a('0x32')]=qs[_0x1d0a('0x32')](_0x373443['query'][_0x1d0a('0x32')]);_0x462e49['offset']=qs[_0x1d0a('0x31')](_0x373443[_0x1d0a('0x4a')][_0x1d0a('0x31')]);}_0x462e49[_0x1d0a('0x52')]=qs[_0x1d0a('0x53')](_0x373443[_0x1d0a('0x4a')][_0x1d0a('0x53')]);_0x462e49[_0x1d0a('0x54')]=qs[_0x1d0a('0x4b')](_[_0x1d0a('0x55')](_0x373443[_0x1d0a('0x4a')],_0x18975e[_0x1d0a('0x4b')]),_0x2ba076);if(_0x373443[_0x1d0a('0x4a')][_0x1d0a('0x56')]){_0x462e49[_0x1d0a('0x54')]=_['merge'](_0x462e49[_0x1d0a('0x54')],{'$or':_[_0x1d0a('0x42')](_0x2ba076,function(_0x33a2c8){if(_0x33a2c8['type']!==_0x1d0a('0x57')){var _0x347efe={};_0x347efe[_0x33a2c8['name']]={'$like':'%'+_0x373443['query']['filter']+'%'};return _0x347efe;}})});}_0x462e49=_['merge']({},_0x462e49,_0x373443['options']);var _0xc83cbd={'where':_0x462e49[_0x1d0a('0x54')]};return db['SmsAccount']['count'](_0xc83cbd)['then'](function(_0x4743e1){_0xabdc1f[_0x1d0a('0x34')]=_0x4743e1;if(_0x373443[_0x1d0a('0x4a')]['includeAll']){_0x462e49[_0x1d0a('0x58')]=[{'all':!![]}];}return db[_0x1d0a('0x43')]['findAll'](_0x462e49);})[_0x1d0a('0x23')](function(_0x11ed97){_0xabdc1f[_0x1d0a('0x59')]=_0x11ed97;return _0xabdc1f;})[_0x1d0a('0x23')](respondWithFilteredResult(_0x4bc278,_0x462e49))[_0x1d0a('0x5a')](handleError(_0x4bc278,null));};exports[_0x1d0a('0x5b')]=function(_0x580909,_0x73b26a){var _0x39372c={'raw':![],'where':{'id':_0x580909[_0x1d0a('0x5c')]['id']},'include':[{'model':db[_0x1d0a('0x40')],'as':_0x1d0a('0x41')}]},_0x3bda10={};_0x3bda10[_0x1d0a('0x48')]=_[_0x1d0a('0x49')](db['SmsAccount']['rawAttributes']);_0x3bda10[_0x1d0a('0x4a')]=_[_0x1d0a('0x49')](_0x580909[_0x1d0a('0x4a')]);_0x3bda10[_0x1d0a('0x4b')]=_[_0x1d0a('0x4c')](_0x3bda10[_0x1d0a('0x48')],_0x3bda10[_0x1d0a('0x4a')]);_0x39372c[_0x1d0a('0x4e')]=_[_0x1d0a('0x4c')](_0x3bda10[_0x1d0a('0x48')],qs[_0x1d0a('0x4d')](_0x580909[_0x1d0a('0x4a')][_0x1d0a('0x4d')]));_0x39372c[_0x1d0a('0x4e')]=_0x39372c['attributes'][_0x1d0a('0x4f')]?_0x39372c[_0x1d0a('0x4e')]:_0x3bda10['model'];if(_0x580909[_0x1d0a('0x4a')]['includeAll']){_0x39372c[_0x1d0a('0x58')]=[{'all':!![]}];}_0x39372c=_[_0x1d0a('0x5d')]({},_0x39372c,_0x580909['options']);return db['SmsAccount']['find'](_0x39372c)[_0x1d0a('0x23')](handleEntityNotFound(_0x73b26a,null))[_0x1d0a('0x23')](respondWithResult(_0x73b26a,null))[_0x1d0a('0x5a')](handleError(_0x73b26a,null));};exports['create']=function(_0x34791d,_0x5c6e91){return db['SmsAccount'][_0x1d0a('0x5e')](_0x34791d[_0x1d0a('0x5f')],{})[_0x1d0a('0x23')](function(_0x354ac9){var _0x18ffe3=_0x34791d[_0x1d0a('0x60')][_0x1d0a('0x3a')]({'plain':!![]});if(!_0x18ffe3)throw new Error(_0x1d0a('0x61'));if(_0x18ffe3['role']===_0x1d0a('0x60')){var _0x877a97=_0x354ac9['get']({'plain':!![]});var _0x3df28b=_0x1d0a('0x3b');return db['UserProfileSection'][_0x1d0a('0x62')]({'where':{'name':_0x3df28b,'userProfileId':_0x18ffe3[_0x1d0a('0x63')]},'raw':!![]})[_0x1d0a('0x23')](function(_0x3c51b8){if(_0x3c51b8&&_0x3c51b8[_0x1d0a('0x64')]===0x0){return db[_0x1d0a('0x3c')][_0x1d0a('0x5e')]({'name':_0x877a97[_0x1d0a('0x3d')],'resourceId':_0x877a97['id'],'type':_0x3c51b8[_0x1d0a('0x3d')],'sectionId':_0x3c51b8['id']},{})[_0x1d0a('0x23')](function(){return _0x354ac9;});}else{return _0x354ac9;}})[_0x1d0a('0x5a')](function(_0x5621f0){logger[_0x1d0a('0x2a')](_0x1d0a('0x65'),_0x5621f0);throw _0x5621f0;});}return _0x354ac9;})[_0x1d0a('0x23')](respondWithResult(_0x5c6e91,0xc9))[_0x1d0a('0x5a')](handleError(_0x5c6e91,null));};exports[_0x1d0a('0x66')]=function(_0x5887f0,_0x56edbf){if(_0x5887f0[_0x1d0a('0x5f')]['id']){delete _0x5887f0[_0x1d0a('0x5f')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x5887f0[_0x1d0a('0x5c')]['id']},'include':[{'model':db[_0x1d0a('0x40')],'as':_0x1d0a('0x41')}]})[_0x1d0a('0x23')](handleEntityNotFound(_0x56edbf,null))[_0x1d0a('0x23')](saveUpdates(_0x5887f0[_0x1d0a('0x5f')],null))[_0x1d0a('0x23')](respondWithResult(_0x56edbf,null))[_0x1d0a('0x5a')](handleError(_0x56edbf,null));};exports[_0x1d0a('0x39')]=function(_0x520a03,_0x3f9e70){return db['SmsAccount'][_0x1d0a('0x62')]({'where':{'id':_0x520a03['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x3f9e70,null))[_0x1d0a('0x23')](removeEntity(_0x3f9e70,null))[_0x1d0a('0x5a')](handleError(_0x3f9e70,null));};exports[_0x1d0a('0x67')]=function(_0x373dcc,_0x161a7b){return db[_0x1d0a('0x43')]['describe']()[_0x1d0a('0x23')](respondWithResult(_0x161a7b,null))[_0x1d0a('0x5a')](handleError(_0x161a7b,null));};exports[_0x1d0a('0x68')]=function(_0xee54bb,_0x457380,_0x1762bb){if(_0xee54bb[_0x1d0a('0x5f')]['id']){delete _0xee54bb[_0x1d0a('0x5f')]['id'];}return db['SmsAccount'][_0x1d0a('0x62')]({'where':{'id':_0xee54bb[_0x1d0a('0x5c')]['id']}})['then'](handleEntityNotFound(_0x457380,null))['then'](function(_0x350b21){if(_0x350b21){_0xee54bb[_0x1d0a('0x5f')][_0x1d0a('0x69')]=_0x350b21['id'];return db[_0x1d0a('0x6a')][_0x1d0a('0x5e')](_0xee54bb[_0x1d0a('0x5f')]);}})[_0x1d0a('0x23')](respondWithResult(_0x457380,null))[_0x1d0a('0x5a')](handleError(_0x457380,null));};exports[_0x1d0a('0x6b')]=function(_0x3773ce,_0x31d323,_0x4f89c3){var _0x5856ab={'raw':![],'where':{}};var _0x439f6e={};var _0x2c096a={'count':0x0,'rows':[]};return db[_0x1d0a('0x43')][_0x1d0a('0x6c')]({'where':{'id':_0x3773ce['params']['id']}})['then'](handleEntityNotFound(_0x31d323,null))[_0x1d0a('0x23')](function(_0x18d8c2){if(_0x18d8c2){_0x439f6e[_0x1d0a('0x48')]=_[_0x1d0a('0x49')](db['Disposition'][_0x1d0a('0x44')]);_0x439f6e[_0x1d0a('0x4a')]=_[_0x1d0a('0x49')](_0x3773ce[_0x1d0a('0x4a')]);_0x439f6e[_0x1d0a('0x4b')]=_[_0x1d0a('0x4c')](_0x439f6e[_0x1d0a('0x48')],_0x439f6e[_0x1d0a('0x4a')]);_0x5856ab[_0x1d0a('0x4e')]=_[_0x1d0a('0x4c')](_0x439f6e['model'],qs[_0x1d0a('0x4d')](_0x3773ce[_0x1d0a('0x4a')][_0x1d0a('0x4d')]));_0x5856ab[_0x1d0a('0x4e')]=_0x5856ab[_0x1d0a('0x4e')][_0x1d0a('0x4f')]?_0x5856ab['attributes']:_0x439f6e[_0x1d0a('0x48')];if(!_0x3773ce[_0x1d0a('0x4a')][_0x1d0a('0x50')](_0x1d0a('0x51'))){_0x5856ab[_0x1d0a('0x32')]=qs[_0x1d0a('0x32')](_0x3773ce[_0x1d0a('0x4a')][_0x1d0a('0x32')]);_0x5856ab[_0x1d0a('0x31')]=qs[_0x1d0a('0x31')](_0x3773ce[_0x1d0a('0x4a')]['offset']);}_0x5856ab['order']=qs['sort'](_0x3773ce[_0x1d0a('0x4a')]['sort']);_0x5856ab[_0x1d0a('0x54')]=qs[_0x1d0a('0x4b')](_[_0x1d0a('0x55')](_0x3773ce[_0x1d0a('0x4a')],_0x439f6e[_0x1d0a('0x4b')]));_0x5856ab[_0x1d0a('0x54')]['SmsAccountId']=_0x18d8c2['id'];if(_0x3773ce['query'][_0x1d0a('0x56')]){_0x5856ab[_0x1d0a('0x54')]=_['merge'](_0x5856ab[_0x1d0a('0x54')],{'$or':_['map'](_0x5856ab[_0x1d0a('0x4e')],function(_0x4c41cd){var _0x201980={};_0x201980[_0x4c41cd]={'$like':'%'+_0x3773ce['query']['filter']+'%'};return _0x201980;})});}_0x5856ab=_['merge']({},_0x5856ab,_0x3773ce[_0x1d0a('0x6d')]);return db[_0x1d0a('0x6a')]['count']({'where':_0x5856ab['where']})[_0x1d0a('0x23')](function(_0x2815c8){_0x2c096a[_0x1d0a('0x34')]=_0x2815c8;if(_0x3773ce[_0x1d0a('0x4a')][_0x1d0a('0x6e')]){_0x5856ab[_0x1d0a('0x58')]=[{'all':!![]}];}return db['Disposition'][_0x1d0a('0x6f')](_0x5856ab);})['then'](function(_0x5e20f4){_0x2c096a[_0x1d0a('0x59')]=_0x5e20f4;return _0x2c096a;});}})['then'](respondWithFilteredResult(_0x31d323,_0x5856ab))['catch'](handleError(_0x31d323,null));};exports['removeDispositions']=function(_0x3a0b1d,_0x42735c,_0x55a7ea){return db[_0x1d0a('0x43')][_0x1d0a('0x62')]({'where':{'id':_0x3a0b1d['params']['id']}})['then'](handleEntityNotFound(_0x42735c,null))[_0x1d0a('0x23')](function(_0x38ff50){if(_0x38ff50){return _0x38ff50[_0x1d0a('0x70')](_0x3a0b1d[_0x1d0a('0x4a')][_0x1d0a('0x71')]);}})[_0x1d0a('0x23')](respondWithStatusCode(_0x42735c,null))[_0x1d0a('0x5a')](handleError(_0x42735c,null));};exports['addAnswer']=function(_0x3808b8,_0x161eaf,_0xf05a34){if(_0x3808b8[_0x1d0a('0x5f')]['id']){delete _0x3808b8[_0x1d0a('0x5f')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x3808b8[_0x1d0a('0x5c')]['id']}})['then'](handleEntityNotFound(_0x161eaf,null))[_0x1d0a('0x23')](function(_0x21246f){if(_0x21246f){_0x3808b8[_0x1d0a('0x5f')][_0x1d0a('0x69')]=_0x21246f['id'];return db['CannedAnswer'][_0x1d0a('0x5e')](_0x3808b8['body']);}})[_0x1d0a('0x23')](respondWithResult(_0x161eaf,null))[_0x1d0a('0x5a')](handleError(_0x161eaf,null));};exports['getAnswers']=function(_0x472ce7,_0x257e0c,_0x3715b0){var _0x1891e7={'raw':![],'where':{}};var _0x5b6089={};var _0x196a46={'count':0x0,'rows':[]};return db[_0x1d0a('0x43')][_0x1d0a('0x6c')]({'where':{'id':_0x472ce7['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x257e0c,null))['then'](function(_0x80bf8a){if(_0x80bf8a){_0x5b6089['model']=_[_0x1d0a('0x49')](db[_0x1d0a('0x72')][_0x1d0a('0x44')]);_0x5b6089[_0x1d0a('0x4a')]=_[_0x1d0a('0x49')](_0x472ce7[_0x1d0a('0x4a')]);_0x5b6089['filters']=_['intersection'](_0x5b6089[_0x1d0a('0x48')],_0x5b6089[_0x1d0a('0x4a')]);_0x1891e7[_0x1d0a('0x4e')]=_[_0x1d0a('0x4c')](_0x5b6089['model'],qs['fields'](_0x472ce7['query'][_0x1d0a('0x4d')]));_0x1891e7['attributes']=_0x1891e7['attributes'][_0x1d0a('0x4f')]?_0x1891e7[_0x1d0a('0x4e')]:_0x5b6089[_0x1d0a('0x48')];if(!_0x472ce7['query'][_0x1d0a('0x50')](_0x1d0a('0x51'))){_0x1891e7[_0x1d0a('0x32')]=qs[_0x1d0a('0x32')](_0x472ce7[_0x1d0a('0x4a')][_0x1d0a('0x32')]);_0x1891e7[_0x1d0a('0x31')]=qs[_0x1d0a('0x31')](_0x472ce7[_0x1d0a('0x4a')][_0x1d0a('0x31')]);}_0x1891e7[_0x1d0a('0x52')]=qs[_0x1d0a('0x53')](_0x472ce7['query'][_0x1d0a('0x53')]);_0x1891e7[_0x1d0a('0x54')]=qs['filters'](_[_0x1d0a('0x55')](_0x472ce7['query'],_0x5b6089[_0x1d0a('0x4b')]));_0x1891e7[_0x1d0a('0x54')][_0x1d0a('0x69')]=_0x80bf8a['id'];if(_0x472ce7[_0x1d0a('0x4a')][_0x1d0a('0x56')]){_0x1891e7['where']=_[_0x1d0a('0x5d')](_0x1891e7['where'],{'$or':_[_0x1d0a('0x42')](_0x1891e7[_0x1d0a('0x4e')],function(_0x5abd20){var _0xf35e7f={};_0xf35e7f[_0x5abd20]={'$like':'%'+_0x472ce7[_0x1d0a('0x4a')][_0x1d0a('0x56')]+'%'};return _0xf35e7f;})});}_0x1891e7=_['merge']({},_0x1891e7,_0x472ce7[_0x1d0a('0x6d')]);return db[_0x1d0a('0x72')][_0x1d0a('0x34')]({'where':_0x1891e7[_0x1d0a('0x54')]})[_0x1d0a('0x23')](function(_0x2ece76){_0x196a46[_0x1d0a('0x34')]=_0x2ece76;if(_0x472ce7[_0x1d0a('0x4a')][_0x1d0a('0x6e')]){_0x1891e7[_0x1d0a('0x58')]=[{'all':!![]}];}return db[_0x1d0a('0x72')][_0x1d0a('0x6f')](_0x1891e7);})['then'](function(_0x4be858){_0x196a46[_0x1d0a('0x59')]=_0x4be858;return _0x196a46;});}})[_0x1d0a('0x23')](respondWithFilteredResult(_0x257e0c,_0x1891e7))[_0x1d0a('0x5a')](handleError(_0x257e0c,null));};exports[_0x1d0a('0x73')]=function(_0x28eb96,_0x3a2970,_0x2e95c8){return db[_0x1d0a('0x43')][_0x1d0a('0x62')]({'where':{'id':_0x28eb96['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x3a2970,null))[_0x1d0a('0x23')](function(_0x4a20f9){if(_0x4a20f9){return _0x4a20f9[_0x1d0a('0x73')](_0x28eb96[_0x1d0a('0x4a')][_0x1d0a('0x71')]);}})[_0x1d0a('0x23')](respondWithStatusCode(_0x3a2970,null))[_0x1d0a('0x5a')](handleError(_0x3a2970,null));};exports[_0x1d0a('0x74')]=function(_0x12f1c2,_0x273e42,_0x1d1ff1){var _0x56f77c={'channel':'sms'};var _0x27c656=[];var _0x432dfd=[];var _0x4d65c3={};return db[_0x1d0a('0x43')][_0x1d0a('0x62')]({'where':{'id':_0x12f1c2[_0x1d0a('0x5c')]['id']},'include':[{'model':db['SmsApplication'],'as':_0x1d0a('0x75')}]})[_0x1d0a('0x23')](handleEntityNotFound(_0x273e42,null))[_0x1d0a('0x23')](function(_0x15ff53){_0x56f77c['account']=_0x15ff53;_0x56f77c[_0x1d0a('0x76')]=_[_0x1d0a('0x77')](_0x15ff53[_0x1d0a('0x75')],['priority'],['asc']);if(_0x56f77c[_0x1d0a('0x78')]['Applications']){delete _0x56f77c['account'][_0x1d0a('0x75')];}return db[_0x1d0a('0x79')][_0x1d0a('0x67')]();})['then'](function(_0x2fdf95){if(!_0x2fdf95){throw new db[(_0x1d0a('0x7a'))]['ValidationError'](_0x1d0a('0x7b'));}_0x27c656=_[_0x1d0a('0x7c')](_[_0x1d0a('0x49')](_0x2fdf95),['createdAt','updatedAt']);_0x432dfd=_[_0x1d0a('0x7c')](_[_0x1d0a('0x49')](_0x2fdf95),[_0x1d0a('0x7d'),_0x1d0a('0x7e'),_0x1d0a('0x7f'),_0x1d0a('0x80')]);_0x56f77c[_0x1d0a('0x5f')]={'mapKey':_0x1d0a('0x81')};if(_0x56f77c[_0x1d0a('0x78')]['type']){switch(_0x56f77c[_0x1d0a('0x78')][_0x1d0a('0x46')]){case _0x1d0a('0x82'):_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x84')];_0x56f77c[_0x1d0a('0x5f')]['body']=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x85')];_0x56f77c['body'][_0x1d0a('0x86')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x87')];break;case _0x1d0a('0x88'):_0x56f77c[_0x1d0a('0x5f')]['from']='+'+_0x12f1c2[_0x1d0a('0x5f')]['sender'];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x5f')]=_0x12f1c2['body'][_0x1d0a('0x89')];break;case _0x1d0a('0x8a'):_0x56f77c[_0x1d0a('0x5f')]['from']=_0x12f1c2[_0x1d0a('0x5f')]['from'];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x5f')]=_0x12f1c2[_0x1d0a('0x5f')]['message'];break;case'clicksend':_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x83')];_0x56f77c['body'][_0x1d0a('0x5f')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x5f')];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x86')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x8b')];break;case _0x1d0a('0x8c'):_0x56f77c['body']['from']=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x84')];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x5f')]=_0x12f1c2[_0x1d0a('0x5f')]['Text'];_0x56f77c[_0x1d0a('0x5f')]['messageId']=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x8d')];break;case _0x1d0a('0x8e'):_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')]='+'+_0x12f1c2['body'][_0x1d0a('0x8f')][0x0][_0x1d0a('0x83')];_0x56f77c[_0x1d0a('0x5f')]['body']=_0x12f1c2['body'][_0x1d0a('0x8f')][0x0][_0x1d0a('0x89')];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x86')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x8f')][0x0][_0x1d0a('0x86')];break;case _0x1d0a('0x90'):_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')]=_0x12f1c2[_0x1d0a('0x5f')]['originatingAddress'];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x5f')]=_0x12f1c2[_0x1d0a('0x5f')]['segmentedMessage'][_0x1d0a('0x2b')];break;case'clickatell':_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x91')];_0x56f77c[_0x1d0a('0x5f')]['body']=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x89')];_0x56f77c['body'][_0x1d0a('0x86')]=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x92')];break;case'bandwidth':_0x56f77c[_0x1d0a('0x5f')]['messageId']=_0x12f1c2[_0x1d0a('0x5f')][0x0]['message']['id'];_0x56f77c['body'][_0x1d0a('0x83')]=_0x12f1c2[_0x1d0a('0x5f')][0x0]['message']['from'];_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x5f')]=_0x12f1c2[_0x1d0a('0x5f')][0x0][_0x1d0a('0x2b')][_0x1d0a('0x89')];break;case _0x1d0a('0x93'):_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')]=_0x12f1c2['body']['from'];_0x56f77c[_0x1d0a('0x5f')]['body']=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x2b')];_0x56f77c['body']['messageId']=_0x12f1c2[_0x1d0a('0x5f')][_0x1d0a('0x94')];break;}}if(_0x56f77c[_0x1d0a('0x5f')]['id']){delete _0x56f77c['body']['id'];}if(_[_0x1d0a('0x95')](_0x56f77c['body'][_0x1d0a('0x83')])){throw new db[(_0x1d0a('0x7a'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x1d0a('0x95')](_0x56f77c['body'][_0x1d0a('0x5f')])||_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x5f')]===''){throw new db[(_0x1d0a('0x7a'))][(_0x1d0a('0x96'))](_0x1d0a('0x97'));}if(_[_0x1d0a('0x95')](_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x98')])){throw new db['Sequelize']['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x432dfd);}if(!_[_0x1d0a('0x99')](_0x432dfd,_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x98')])){throw new db[(_0x1d0a('0x7a'))][(_0x1d0a('0x96'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x432dfd);}_0x4d65c3[_0x56f77c[_0x1d0a('0x5f')]['mapKey']]=_0x56f77c['body'][_0x1d0a('0x83')];return db['CmList'][_0x1d0a('0x62')]({'where':{'id':_0x56f77c[_0x1d0a('0x78')][_0x1d0a('0x80')]},'include':[{'model':db['CmContact'],'as':_0x1d0a('0x9a'),'where':_0x4d65c3,'limit':0x1,'order':[[_0x1d0a('0x7e'),_0x1d0a('0x9b')]]}]});})[_0x1d0a('0x23')](handleEntityNotFound(_0x273e42,null))[_0x1d0a('0x23')](function(_0x53edc6){if(_0x53edc6){_0x56f77c['list']=_[_0x1d0a('0x9c')](_0x53edc6,[_0x1d0a('0x9a')]);if(_0x53edc6[_0x1d0a('0x9a')][_0x1d0a('0x4f')]){return _0x53edc6['Contacts'][0x0];}var _0x5e3046=_[_0x1d0a('0x1b')](_0x56f77c[_0x1d0a('0x5f')],{'firstName':_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')],'ListId':_0x53edc6['id']});_0x5e3046[_0x56f77c[_0x1d0a('0x5f')]['mapKey']]=_0x56f77c[_0x1d0a('0x5f')][_0x1d0a('0x83')];return db[_0x1d0a('0x79')][_0x1d0a('0x5e')](_0x5e3046,{'fields':_0x27c656,'raw':!![]});}})[_0x1d0a('0x23')](handleEntityNotFound(_0x273e42,null))[_0x1d0a('0x23')](function(_0x3c10e6){if(_0x3c10e6){_0x56f77c[_0x1d0a('0x9d')]=_0x3c10e6;var _0x34578f={'ContactId':_0x3c10e6['id'],'phone':_0x56f77c[_0x1d0a('0x5f')]['from'],'SmsAccountId':_0x12f1c2[_0x1d0a('0x5c')]['id']};var _0x296e9e={'ContactId':_0x3c10e6['id'],'SmsAccountId':_0x12f1c2['params']['id'],'closed':![]};return db[_0x1d0a('0x9e')][_0x1d0a('0x62')]({'where':_0x296e9e})[_0x1d0a('0x23')](function(_0x2c1e37){if(_0x2c1e37){return[_0x2c1e37,![]];}return db['SmsInteraction'][_0x1d0a('0x5e')](_0x34578f)[_0x1d0a('0x23')](function(_0x1bfb0b){return[_0x1bfb0b,!![]];});});}})[_0x1d0a('0x9f')](function(_0x39b4ba,_0x5bd6d2){_0x56f77c[_0x1d0a('0xa0')]=_0x39b4ba['get']({'plain':!![]});_0x56f77c[_0x1d0a('0xa0')][_0x1d0a('0xa1')]=![];if(_0x5bd6d2){if(_0x56f77c[_0x1d0a('0x78')][_0x1d0a('0xa2')]){_0x56f77c[_0x1d0a('0x76')][_0x1d0a('0xa3')]({'id':0x0,'priority':_0x56f77c['applications'][_0x1d0a('0x4f')]+0x1,'app':_0x1d0a('0xa4'),'appdata':_0x1d0a('0xa5'),'interval':_0x1d0a('0xa6')});}_0x56f77c[_0x1d0a('0xa0')][_0x1d0a('0xa1')]=!![];}return db[_0x1d0a('0xa7')][_0x1d0a('0x5e')]({'phone':_0x56f77c['body'][_0x1d0a('0x83')],'messageId':_0x56f77c['body'][_0x1d0a('0x86')],'body':_0x56f77c['body'][_0x1d0a('0x5f')],'SmsAccountId':_0x12f1c2[_0x1d0a('0x5c')]['id'],'SmsInteractionId':_0x39b4ba['id'],'direction':'in','ContactId':_0x39b4ba[_0x1d0a('0xa8')],'AttachmentId':_0x56f77c['body']['AttachmentId']});})[_0x1d0a('0x23')](function(_0x5e169c){_0x56f77c['message']=_0x5e169c;if(_0x56f77c[_0x1d0a('0xa0')][_0x1d0a('0xa9')]){return db[_0x1d0a('0xaa')][_0x1d0a('0x62')]({'attributes':['id','name'],'where':{'id':_0x56f77c[_0x1d0a('0xa0')][_0x1d0a('0xa9')]}})['then'](function(_0x502f69){if(_0x502f69){_0x56f77c[_0x1d0a('0x76')][_0x1d0a('0xab')]({'id':0x0,'priority':0x0,'app':_0x1d0a('0xac'),'appdata':_0x502f69[_0x1d0a('0x3d')]+','+(_0x56f77c['account'][_0x1d0a('0xad')]||0xa),'interval':_0x1d0a('0xa6')});}return respondWithRpcPromise(_0x1d0a('0xae'),_0x1d0a('0xaf'),_0x56f77c);});}return respondWithRpcPromise(_0x1d0a('0xae'),_0x1d0a('0xaf'),_0x56f77c);})[_0x1d0a('0x23')](function(_0x474e55){if(_0x474e55){var _0x37e72f=0xc8;var _0x1c04a9=_0x1d0a('0xb0');logger['info'](_0x1d0a('0x28'),_0x1c04a9,_0x37e72f,'entity\x20found');logger[_0x1d0a('0x27')](_0x1d0a('0xb1'),_0x1c04a9,_0x37e72f,_0x1d0a('0xb2'),JSON[_0x1d0a('0x29')](_0x474e55));if(_0x56f77c[_0x1d0a('0x78')]['type']===_0x1d0a('0x82')){return _0x273e42['status'](_0x37e72f)['set'](_0x1d0a('0xb3'),_0x1d0a('0xb4'))[_0x1d0a('0x3e')](_0x1d0a('0xb5'));}else{return _0x273e42[_0x1d0a('0x2e')](_0x37e72f)[_0x1d0a('0x30')](_0x474e55);}}})[_0x1d0a('0x5a')](handleError(_0x273e42,null));};exports[_0x1d0a('0xb6')]=function(_0x17f365,_0x1c14a2,_0x2b6c2f){return db[_0x1d0a('0x43')][_0x1d0a('0x6c')]({'where':{'id':_0x17f365['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x1c14a2,null))['then'](function(_0x4c3d89){if(_0x4c3d89){return db['sequelize'][_0x1d0a('0xb7')](function(_0x3fe160){return db[_0x1d0a('0xb8')][_0x1d0a('0x39')]({'where':{'SmsAccountId':_0x17f365[_0x1d0a('0x5c')]['id']},'transaction':_0x3fe160})[_0x1d0a('0x23')](function(_0x9ad662){var _0x4e8d3b=_['map'](_0x17f365[_0x1d0a('0x5f')],function(_0x14d44e){_0x14d44e[_0x1d0a('0x69')]=_0x17f365[_0x1d0a('0x5c')]['id'];return _0x14d44e;});return db['SmsApplication'][_0x1d0a('0xb9')](_0x4e8d3b,{'transaction':_0x3fe160});});})[_0x1d0a('0x23')](function(){return db[_0x1d0a('0xb8')][_0x1d0a('0xba')]({'where':{'SmsAccountId':_0x17f365[_0x1d0a('0x5c')]['id']},'order':_0x1d0a('0xbb')});});}})[_0x1d0a('0x23')](respondWithResult(_0x1c14a2,null))[_0x1d0a('0x5a')](handleError(_0x1c14a2,null));};exports[_0x1d0a('0xbc')]=function(_0x1de524,_0x36feaf,_0x166861){var _0x4f82e3={};var _0x394e91={};var _0x3e1132;var _0x5bc500;return db['SmsAccount']['findOne']({'where':{'id':_0x1de524[_0x1d0a('0x5c')]['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x36feaf,null))[_0x1d0a('0x23')](function(_0x4f79f0){if(_0x4f79f0){_0x3e1132=_0x4f79f0;_0x394e91[_0x1d0a('0x48')]=_[_0x1d0a('0x49')](db['SmsApplication']['rawAttributes']);_0x394e91[_0x1d0a('0x4a')]=_['keys'](_0x1de524['query']);_0x394e91[_0x1d0a('0x4b')]=_[_0x1d0a('0x4c')](_0x394e91['model'],_0x394e91[_0x1d0a('0x4a')]);_0x4f82e3[_0x1d0a('0x4e')]=_['intersection'](_0x394e91[_0x1d0a('0x48')],qs[_0x1d0a('0x4d')](_0x1de524[_0x1d0a('0x4a')]['fields']));_0x4f82e3[_0x1d0a('0x4e')]=_0x4f82e3[_0x1d0a('0x4e')]['length']?_0x4f82e3[_0x1d0a('0x4e')]:_0x394e91[_0x1d0a('0x48')];_0x4f82e3[_0x1d0a('0x52')]=qs['sort'](_0x1de524[_0x1d0a('0x4a')][_0x1d0a('0x53')]);_0x4f82e3[_0x1d0a('0x54')]=qs[_0x1d0a('0x4b')](_[_0x1d0a('0x55')](_0x1de524[_0x1d0a('0x4a')],_0x394e91[_0x1d0a('0x4b')]));if(_0x1de524['query'][_0x1d0a('0x56')]){_0x4f82e3[_0x1d0a('0x54')]=_[_0x1d0a('0x5d')](_0x4f82e3[_0x1d0a('0x54')],{'$or':_[_0x1d0a('0x42')](_0x4f82e3[_0x1d0a('0x4e')],function(_0x452102){var _0x363e27={};_0x363e27[_0x452102]={'$like':'%'+_0x1de524[_0x1d0a('0x4a')][_0x1d0a('0x56')]+'%'};return _0x363e27;})});}_0x4f82e3=_[_0x1d0a('0x5d')]({},_0x4f82e3,_0x1de524['options']);return _0x3e1132[_0x1d0a('0xbc')](_0x4f82e3);}})[_0x1d0a('0x23')](function(_0x3cafb7){if(_0x3cafb7){_0x5bc500=_0x3cafb7['length'];if(!_0x1de524[_0x1d0a('0x4a')][_0x1d0a('0x50')]('nolimit')){_0x4f82e3[_0x1d0a('0x32')]=qs['limit'](_0x1de524['query']['limit']);_0x4f82e3[_0x1d0a('0x31')]=qs[_0x1d0a('0x31')](_0x1de524[_0x1d0a('0x4a')][_0x1d0a('0x31')]);}return _0x3e1132[_0x1d0a('0xbc')](_0x4f82e3);}})[_0x1d0a('0x23')](function(_0x5d42a5){if(_0x5d42a5){return _0x5d42a5?{'count':_0x5bc500,'rows':_0x5d42a5}:null;}})[_0x1d0a('0x23')](respondWithResult(_0x36feaf,null))['catch'](handleError(_0x36feaf,null));};exports[_0x1d0a('0xbd')]=function(_0x13cb97,_0x25845c,_0x1e2982){var _0x4ad69c={'raw':![],'where':{}};var _0x41b17a={};var _0x5eef00={'count':0x0,'rows':[]};return db[_0x1d0a('0x43')]['findOne']({'where':{'id':_0x13cb97[_0x1d0a('0x5c')]['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x25845c,null))[_0x1d0a('0x23')](function(_0x3b315e){if(_0x3b315e){_0x41b17a['model']=_[_0x1d0a('0x49')](db[_0x1d0a('0x9e')]['rawAttributes']);_0x41b17a[_0x1d0a('0x4a')]=_[_0x1d0a('0x49')](_0x13cb97[_0x1d0a('0x4a')]);_0x41b17a[_0x1d0a('0x4b')]=_[_0x1d0a('0x4c')](_0x41b17a[_0x1d0a('0x48')],_0x41b17a['query']);_0x4ad69c[_0x1d0a('0x4e')]=_[_0x1d0a('0x4c')](_0x41b17a[_0x1d0a('0x48')],qs[_0x1d0a('0x4d')](_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0x4d')]));_0x4ad69c[_0x1d0a('0x4e')]=_0x4ad69c['attributes'][_0x1d0a('0x4f')]?_0x4ad69c[_0x1d0a('0x4e')]:_0x41b17a[_0x1d0a('0x48')];if(!_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0x50')]('nolimit')){_0x4ad69c[_0x1d0a('0x32')]=qs[_0x1d0a('0x32')](_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0x32')]);_0x4ad69c[_0x1d0a('0x31')]=qs[_0x1d0a('0x31')](_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0x31')]);}_0x4ad69c['order']=qs[_0x1d0a('0x53')](_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0x53')]);_0x4ad69c[_0x1d0a('0x54')]=qs[_0x1d0a('0x4b')](_['pick'](_0x13cb97[_0x1d0a('0x4a')],_0x41b17a[_0x1d0a('0x4b')]));_0x4ad69c[_0x1d0a('0x54')]['SmsAccountId']=_0x3b315e['id'];if(_0x13cb97['query'][_0x1d0a('0x56')]){_0x4ad69c[_0x1d0a('0x54')]=_[_0x1d0a('0x5d')](_0x4ad69c[_0x1d0a('0x54')],{'$or':_[_0x1d0a('0x42')](_0x4ad69c[_0x1d0a('0x4e')],function(_0x12a25e){var _0x1bc6a2={};_0x1bc6a2[_0x12a25e]={'$like':'%'+_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0x56')]+'%'};return _0x1bc6a2;})});}_0x4ad69c=_['merge']({},_0x4ad69c,_0x13cb97[_0x1d0a('0x6d')]);return db[_0x1d0a('0x9e')]['count']({'where':_0x4ad69c[_0x1d0a('0x54')]})[_0x1d0a('0x23')](function(_0x49df58){_0x5eef00[_0x1d0a('0x34')]=_0x49df58;if(_0x13cb97['query']['includeAll']){_0x4ad69c[_0x1d0a('0x58')]=[{'model':db[_0x1d0a('0x79')],'as':_0x1d0a('0xbe'),'required':![]},{'model':db[_0x1d0a('0xaa')],'as':_0x1d0a('0xbf'),'attributes':['name',_0x1d0a('0xc0'),_0x1d0a('0xc1')],'required':![]},{'model':db[_0x1d0a('0xc2')],'as':_0x1d0a('0xc3'),'attributes':['id',_0x1d0a('0x3d'),_0x1d0a('0xc4')],'where':_0x13cb97[_0x1d0a('0x4a')]['tag']?{'id':_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0xc5')]}:undefined,'required':_0x13cb97[_0x1d0a('0x4a')][_0x1d0a('0xc5')]?!![]:![]}];}return db['SmsInteraction'][_0x1d0a('0x6f')](_0x4ad69c);})['then'](function(_0x1e9366){_0x5eef00['rows']=_0x1e9366;return _0x5eef00;});}})['then'](respondWithFilteredResult(_0x25845c,_0x4ad69c))['catch'](handleError(_0x25845c,null));};exports[_0x1d0a('0x3e')]=function(_0xe9ec14,_0x50ff1c,_0x2722c7){var _0x5b4054,_0x4367ca,_0x3445d1;if(_['isNil'](_0xe9ec14[_0x1d0a('0x5f')][_0x1d0a('0x5f')])||_0xe9ec14[_0x1d0a('0x5f')][_0x1d0a('0x5f')]===''){throw new db['Sequelize'][(_0x1d0a('0x96'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x1d0a('0x95')](_0xe9ec14[_0x1d0a('0x5f')]['to'])){throw new db[(_0x1d0a('0x7a'))][(_0x1d0a('0x96'))]('to\x20is\x20mandatory');}_0x5b4054=_0xe9ec14['body']['to'];return db[_0x1d0a('0x43')]['find']({'where':{'id':_0xe9ec14[_0x1d0a('0x5c')]['id']},'include':[{'model':db['CmList'],'as':_0x1d0a('0xc6'),'include':[{'model':db[_0x1d0a('0x79')],'as':_0x1d0a('0x9a'),'where':{'mobile':_0x5b4054},'limit':0x1,'order':[[_0x1d0a('0x7e'),_0x1d0a('0x9b')]]}]}]})['then'](handleEntityNotFound(_0x50ff1c,null))['then'](function(_0x12ab91){if(_0x12ab91&&_0x12ab91[_0x1d0a('0xc6')]){_0x4367ca=_0x12ab91[_0x1d0a('0x3a')]({'plain':!![]});if(_0x4367ca[_0x1d0a('0xc6')]&&_0x4367ca['List'][_0x1d0a('0x9a')]['length']){return _0x4367ca[_0x1d0a('0xc6')][_0x1d0a('0x9a')][0x0];}return db[_0x1d0a('0x79')][_0x1d0a('0x5e')](_['defaults'](_0xe9ec14['body'],{'firstName':_0x5b4054,'mobile':_0x5b4054,'phone':_0x5b4054,'ListId':_0x4367ca['ListId']}));}})[_0x1d0a('0x23')](handleEntityNotFound(_0x50ff1c,null))[_0x1d0a('0x23')](function(_0x2618af){if(_0x2618af){_0x3445d1=_0x2618af;return db[_0x1d0a('0x9e')]['find']({'where':{'ContactId':_0x3445d1['id'],'closed':![],'SmsAccountId':_0x4367ca['id']}})['then'](function(_0x3894e4){if(_0x3894e4){return[_0x3894e4,![]];}return db['SmsInteraction'][_0x1d0a('0x5e')]({'UserId':_0xe9ec14[_0x1d0a('0x60')]['id'],'ContactId':_0x3445d1['id'],'SmsAccountId':_0x4367ca['id'],'phone':_0x5b4054,'firstMsgDirection':_0x1d0a('0xc7'),'Messages':[_[_0x1d0a('0x5d')](_0xe9ec14['body'],{'read':![],'body':_0xe9ec14[_0x1d0a('0x5f')][_0x1d0a('0x5f')],'phone':_0x5b4054,'SmsAccountId':_0x4367ca['id'],'UserId':_0xe9ec14[_0x1d0a('0x60')]['id'],'ContactId':_0x3445d1['id']})]},{'include':[{'model':db['SmsMessage'],'as':_0x1d0a('0xc8')}]})[_0x1d0a('0x23')](function(_0x2ef8f5){return[_0x2ef8f5,!![]];});});}})[_0x1d0a('0x9f')](function(_0x11d4a7,_0x5cd87b){if(_0x5cd87b){return _0x11d4a7;}return db[_0x1d0a('0xa7')][_0x1d0a('0x5e')](_['merge'](_0xe9ec14[_0x1d0a('0x5f')],{'read':![],'body':_0xe9ec14[_0x1d0a('0x5f')][_0x1d0a('0x5f')],'phone':_0x5b4054,'SmsAccountId':_0x4367ca['id'],'SmsInteractionId':_0x11d4a7['id'],'UserId':_0xe9ec14[_0x1d0a('0x60')]['id'],'ContactId':_0x3445d1['id']}))[_0x1d0a('0x23')](function(_0x552ba6){_0x11d4a7[_0x1d0a('0xc9')][_0x1d0a('0xc8')]=[];_0x11d4a7[_0x1d0a('0xc9')][_0x1d0a('0xc8')]['push'](_0x552ba6[_0x1d0a('0xc9')]);return _0x11d4a7;});})[_0x1d0a('0x23')](respondWithResult(_0x50ff1c,null))[_0x1d0a('0x5a')](handleError(_0x50ff1c,null));};exports['status']=function(_0x318956,_0x4836ae,_0xcb6c94){if(_0x318956[_0x1d0a('0x5f')]['id']){delete _0x318956[_0x1d0a('0x5f')]['id'];}var _0x5ed51e,_0x3725c6,_0x1419be;return db[_0x1d0a('0x43')][_0x1d0a('0x62')]({'where':{'id':_0x318956['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x4836ae,null))['then'](function(_0x37a11f){if(_0x37a11f){_0x1419be=_0x37a11f;logger[_0x1d0a('0x27')](_0x1d0a('0x28'),_0x1d0a('0x2e'),_0x1d0a('0xca'),_0x37a11f[_0x1d0a('0x46')],util[_0x1d0a('0xcb')](_0x318956['body'],{'showHidden':![],'depth':null}));switch(_0x37a11f['type']){case _0x1d0a('0x88'):if(_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xcc')]&&_0x318956['body'][_0x1d0a('0x2e')]){_0x3725c6=_0x318956[_0x1d0a('0x5f')]['status'];return db[_0x1d0a('0xa7')][_0x1d0a('0x62')]({'where':{'messageId':_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xcc')]}});}break;case _0x1d0a('0x8a'):if(_0x318956[_0x1d0a('0x5f')]['requestid']&&_0x318956[_0x1d0a('0x5f')]['statusInt']){_0x3725c6=_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xcd')];return db[_0x1d0a('0xa7')][_0x1d0a('0x62')]({'where':{'messageId':_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xce')]}});}break;case'clicksend':if(_0x318956['body'][_0x1d0a('0x8b')]&&_0x318956['body'][_0x1d0a('0xcf')]){_0x3725c6=_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xcf')];return db[_0x1d0a('0xa7')]['find']({'where':{'messageId':_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x8b')]}});}break;case _0x1d0a('0x8e'):var _0x5339c4=_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x8f')][0x0];if(_0x5339c4['messageId']&&_0x5339c4[_0x1d0a('0x2e')][_0x1d0a('0xd0')]===_0x1d0a('0xd1')){_0x3725c6=_0x5339c4[_0x1d0a('0x2e')][_0x1d0a('0xd0')];return db[_0x1d0a('0xa7')]['find']({'where':{'messageId':_0x5339c4[_0x1d0a('0x86')]}});}break;case _0x1d0a('0xd2'):if(_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x86')]&&_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x2e')]){_0x3725c6=_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x2e')];return db[_0x1d0a('0xa7')]['find']({'where':{'messageId':_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x86')]}});}break;case _0x1d0a('0xd3'):if(_0x318956[_0x1d0a('0x5f')][0x0][_0x1d0a('0x2b')]['id']){_0x3725c6=_0x318956['body'][0x0][_0x1d0a('0x46')];return db[_0x1d0a('0xa7')][_0x1d0a('0x62')]({'where':{'messageId':_0x318956['body'][0x0]['message']['id']}});}break;case _0x1d0a('0x93'):if(_0x318956['body']['redif']&&_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x2e')]){_0x3725c6=_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x2e')];return db[_0x1d0a('0xa7')][_0x1d0a('0x62')]({'where':{'messageId':_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xd4')]}});}break;}}})[_0x1d0a('0x23')](handleEntityNotFound(_0x4836ae,null))[_0x1d0a('0x23')](function(_0x312106){if(_0x312106){_0x5ed51e=_0x312106;switch(_0x1419be['type']){case'skebby':if(_0x3725c6===_0x1d0a('0xd1')){return _0x5ed51e[_0x1d0a('0x66')]({'read':!![]});}else{logger[_0x1d0a('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x1d0a('0x2e'),_0x1d0a('0x88'),util['inspect'](_0x318956[_0x1d0a('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1d0a('0x8a'):if(_0x3725c6==='1'){return _0x5ed51e[_0x1d0a('0x66')]({'read':!![]});}else{logger[_0x1d0a('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x1d0a('0x2e'),_0x1d0a('0x88'),util['inspect'](_0x318956[_0x1d0a('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1d0a('0xd5'):if(!_0x318956[_0x1d0a('0x5f')][_0x1d0a('0xd6')]&&_0x3725c6>=0xc8&&_0x3725c6<=0xce){return _0x5ed51e[_0x1d0a('0x66')]({'read':!![]});}else{logger[_0x1d0a('0x2a')](_0x1d0a('0x28'),_0x1d0a('0x2e'),'clicksend',util[_0x1d0a('0xcb')](_0x318956[_0x1d0a('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1d0a('0x8e'):var _0x4eca44=_0x318956[_0x1d0a('0x5f')][_0x1d0a('0x8f')][0x0];if(_0x4eca44[_0x1d0a('0x2e')]['groupName']==='DELIVERED'){return _0x5ed51e[_0x1d0a('0x66')]({'read':!![]});}else{logger[_0x1d0a('0x2a')](_0x1d0a('0x28'),'status',_0x1d0a('0x8e'),util[_0x1d0a('0xcb')](_0x318956['body'],{'showHidden':![],'depth':null}));}break;case _0x1d0a('0xd2'):if(_0x3725c6==_0x1d0a('0xd7')||_0x3725c6==_0x1d0a('0xd8')){return _0x5ed51e['update']({'read':!![]});}else{logger[_0x1d0a('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x1d0a('0x2e'),_0x1d0a('0xd2'),util['inspect'](_0x318956[_0x1d0a('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1d0a('0xd3'):if(_0x3725c6==_0x1d0a('0xd9')){return _0x5ed51e['update']({'read':!![]});}else{logger[_0x1d0a('0x2a')](_0x1d0a('0x28'),_0x1d0a('0x2e'),_0x1d0a('0xd3'),util[_0x1d0a('0xcb')](_0x318956[_0x1d0a('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1d0a('0x93'):if(_0x3725c6===_0x1d0a('0xda')||_0x3725c6===_0x1d0a('0xdb')){return _0x5ed51e[_0x1d0a('0x66')]({'read':!![]});}else{logger[_0x1d0a('0x2a')](_0x1d0a('0x28'),_0x1d0a('0x2e'),_0x1d0a('0x93'),util['inspect'](_0x318956[_0x1d0a('0x5f')],{'showHidden':![],'depth':null}));}break;}return _0x5ed51e;}})[_0x1d0a('0x23')](respondWithResult(_0x4836ae,null))[_0x1d0a('0x5a')](handleError(_0x4836ae,null));};exports['statusGet']=function(_0x2b1b31,_0x1672a0,_0x122eae){var _0x293ba4,_0x25e4fd,_0x12b184;return db[_0x1d0a('0x43')]['find']({'where':{'id':_0x2b1b31['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x1672a0,null))['then'](function(_0x4c8ad3){if(_0x4c8ad3){_0x12b184=_0x4c8ad3;logger[_0x1d0a('0x27')](_0x1d0a('0x28'),_0x1d0a('0x2e'),_0x1d0a('0xca'),_0x4c8ad3[_0x1d0a('0x46')],util[_0x1d0a('0xcb')](_0x2b1b31['query'],{'showHidden':![],'depth':null}));switch(_0x4c8ad3['type']){case'csc':if(_0x2b1b31[_0x1d0a('0x4a')][_0x1d0a('0xdc')]&&_0x2b1b31['query'][_0x1d0a('0xdd')]){_0x25e4fd=_0x2b1b31[_0x1d0a('0x4a')][_0x1d0a('0xdd')];return db['SmsMessage']['find']({'where':{'messageId':_0x2b1b31[_0x1d0a('0x4a')]['message-id']}});}break;}}})[_0x1d0a('0x23')](handleEntityNotFound(_0x1672a0,null))[_0x1d0a('0x23')](function(_0x3b35b0){if(_0x3b35b0){_0x293ba4=_0x3b35b0;switch(_0x12b184['type']){case _0x1d0a('0x90'):if(_0x25e4fd==='2'||_0x25e4fd==='6'){return _0x293ba4['update']({'read':!![]});}else{logger[_0x1d0a('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x1d0a('0x2e'),_0x1d0a('0x90'),util['inspect'](_0x2b1b31[_0x1d0a('0x4a')],{'showHidden':![],'depth':null}));};break;}return _0x293ba4;}})[_0x1d0a('0x23')](respondWithResult(_0x1672a0,null))[_0x1d0a('0x5a')](handleError(_0x1672a0,null));};exports[_0x1d0a('0xde')]=function(_0x292bf2,_0x26382d,_0x3c39e4){return db[_0x1d0a('0x43')][_0x1d0a('0x62')]({'where':{'id':_0x292bf2['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x26382d,null))[_0x1d0a('0x23')](function(_0x3af3f2){if(_0x3af3f2){return _0x3af3f2[_0x1d0a('0xde')](_0x292bf2[_0x1d0a('0x5f')][_0x1d0a('0x71')],_['omit'](_0x292bf2[_0x1d0a('0x5f')],[_0x1d0a('0x71'),'id'])||{})[_0x1d0a('0x9f')](function(_0x3bced9){for(var _0x2ac0cb=0x0;_0x2ac0cb<_0x292bf2[_0x1d0a('0x5f')]['ids'][_0x1d0a('0x4f')];_0x2ac0cb+=0x1){socket[_0x1d0a('0xdf')](_0x1d0a('0xe0'),{'UserId':Number(_0x292bf2[_0x1d0a('0x5f')][_0x1d0a('0x71')][_0x2ac0cb]),'SmsAccountId':Number(_0x292bf2[_0x1d0a('0x5c')]['id'])});}return _0x3bced9;});}})[_0x1d0a('0x23')](respondWithResult(_0x26382d,null))[_0x1d0a('0x5a')](handleError(_0x26382d,null));};exports[_0x1d0a('0xe1')]=function(_0x406f11,_0x562fd0,_0x49a6b4){return db[_0x1d0a('0x43')][_0x1d0a('0x62')]({'where':{'id':_0x406f11['params']['id']}})['then'](handleEntityNotFound(_0x562fd0,null))[_0x1d0a('0x23')](function(_0x2cd719){if(_0x2cd719){return _0x2cd719[_0x1d0a('0xe1')](_0x406f11[_0x1d0a('0x4a')][_0x1d0a('0x71')])[_0x1d0a('0x23')](function(){if(_['isArray'](_0x406f11[_0x1d0a('0x4a')]['ids'])){for(var _0x49d285=0x0;_0x49d285<_0x406f11[_0x1d0a('0x4a')][_0x1d0a('0x71')][_0x1d0a('0x4f')];_0x49d285+=0x1){socket[_0x1d0a('0xdf')](_0x1d0a('0xe2'),{'UserId':Number(_0x406f11[_0x1d0a('0x4a')][_0x1d0a('0x71')][_0x49d285]),'SmsAccountId':Number(_0x406f11[_0x1d0a('0x5c')]['id'])});}}else{socket['emit'](_0x1d0a('0xe2'),{'UserId':Number(_0x406f11['query'][_0x1d0a('0x71')]),'SmsAccountId':Number(_0x406f11['params']['id'])});}});}})[_0x1d0a('0x23')](respondWithStatusCode(_0x562fd0,null))[_0x1d0a('0x5a')](handleError(_0x562fd0,null));};exports[_0x1d0a('0xe3')]=function(_0xd81c23,_0x2471b3,_0x368c26){var _0x679b48={};var _0x3dd4a8={};var _0x3e8efc;var _0x6a97ab;return db[_0x1d0a('0x43')][_0x1d0a('0x6c')]({'where':{'id':_0xd81c23['params']['id']}})[_0x1d0a('0x23')](handleEntityNotFound(_0x2471b3,null))[_0x1d0a('0x23')](function(_0x3a1bd5){if(_0x3a1bd5){_0x3e8efc=_0x3a1bd5;_0x3dd4a8['model']=_[_0x1d0a('0x49')](db[_0x1d0a('0xaa')][_0x1d0a('0x44')]);_0x3dd4a8['query']=_[_0x1d0a('0x49')](_0xd81c23[_0x1d0a('0x4a')]);_0x3dd4a8[_0x1d0a('0x4b')]=_[_0x1d0a('0x4c')](_0x3dd4a8[_0x1d0a('0x48')],_0x3dd4a8[_0x1d0a('0x4a')]);_0x679b48['attributes']=_['intersection'](_0x3dd4a8[_0x1d0a('0x48')],qs['fields'](_0xd81c23[_0x1d0a('0x4a')][_0x1d0a('0x4d')]));_0x679b48[_0x1d0a('0x4e')]=_0x679b48['attributes'][_0x1d0a('0x4f')]?_0x679b48[_0x1d0a('0x4e')]:_0x3dd4a8[_0x1d0a('0x48')];_0x679b48[_0x1d0a('0x52')]=qs[_0x1d0a('0x53')](_0xd81c23[_0x1d0a('0x4a')][_0x1d0a('0x53')]);_0x679b48[_0x1d0a('0x54')]=qs[_0x1d0a('0x4b')](_['pick'](_0xd81c23[_0x1d0a('0x4a')],_0x3dd4a8[_0x1d0a('0x4b')]));if(_0xd81c23[_0x1d0a('0x4a')]['filter']){_0x679b48[_0x1d0a('0x54')]=_[_0x1d0a('0x5d')](_0x679b48['where'],{'$or':_[_0x1d0a('0x42')](_0x679b48['attributes'],function(_0x9d6130){var _0x200cd7={};_0x200cd7[_0x9d6130]={'$like':'%'+_0xd81c23[_0x1d0a('0x4a')][_0x1d0a('0x56')]+'%'};return _0x200cd7;})});}_0x679b48=_['merge']({},_0x679b48,_0xd81c23[_0x1d0a('0x6d')]);return _0x3e8efc[_0x1d0a('0xe3')](_0x679b48);}})[_0x1d0a('0x23')](function(_0x4ffd79){if(_0x4ffd79){_0x6a97ab=_0x4ffd79[_0x1d0a('0x4f')];if(!_0xd81c23['query'][_0x1d0a('0x50')]('nolimit')){_0x679b48['limit']=qs[_0x1d0a('0x32')](_0xd81c23['query'][_0x1d0a('0x32')]);_0x679b48['offset']=qs[_0x1d0a('0x31')](_0xd81c23[_0x1d0a('0x4a')][_0x1d0a('0x31')]);}return _0x3e8efc[_0x1d0a('0xe3')](_0x679b48);}})[_0x1d0a('0x23')](function(_0x43fb5d){if(_0x43fb5d){return _0x43fb5d?{'count':_0x6a97ab,'rows':_0x43fb5d}:null;}})[_0x1d0a('0x23')](respondWithResult(_0x2471b3,null))['catch'](handleError(_0x2471b3,null));};
\ No newline at end of file
+var _0xb0a8=['message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','jayson/promise','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','save','update','destroy','stack','name','send','index','Pause','map','SmsAccount','rawAttributes','fieldName','key','query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','type','VIRTUAL','options','includeAll','include','findAll','rows','mandatoryDispositionPause','intersection','merge','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SmsAccounts','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','SmsAccountId','Disposition','order','removeDispositions','ids','getAnswers','findOne','CannedAnswer','removeAnswers','notify','sms','SmsApplication','account','orderBy','Applications','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','twilio','from','From','Body','messageId','MessageSid','sender','text','connectel','clicksend','message_id','plivo','Text','MessageUUID','infobip','results','csc','segmentedMessage','clickatell','fromNumber','replyMessageId','bandwidth','intelepeer','refid','isNil','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','DESC','list','defaults','contact','SmsInteraction','spread','interaction','created','push','applications','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','agent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','transaction','bulkCreate','findAndCountAll','getApplications','Contact','User','fullname','internal','Tag','Tags','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','CmList','List','out','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby','skebby_dispatch_id','requestid','statusInt','status_code','groupName','redif','error_code','DELIVERED','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','statusGet'];(function(_0x30c0c6,_0xcc4562){var _0x330cf5=function(_0x3f19b2){while(--_0x3f19b2){_0x30c0c6['push'](_0x30c0c6['shift']());}};_0x330cf5(++_0xcc4562);}(_0xb0a8,0xe7));var _0x8b0a=function(_0xb0e36,_0x269cab){_0xb0e36=_0xb0e36-0x0;var _0x34b7fc=_0xb0a8[_0xb0e36];return _0x34b7fc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x8b0a('0x0'));var rp=require(_0x8b0a('0x1'));var moment=require(_0x8b0a('0x2'));var BPromise=require(_0x8b0a('0x3'));var Mustache=require(_0x8b0a('0x4'));var util=require('util');var path=require(_0x8b0a('0x5'));var sox=require(_0x8b0a('0x6'));var csv=require(_0x8b0a('0x7'));var ejs=require(_0x8b0a('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8b0a('0x9'));var squel=require(_0x8b0a('0xa'));var crypto=require(_0x8b0a('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x8b0a('0xc'));var toCsv=require(_0x8b0a('0x7'));var querystring=require('querystring');var Papa=require(_0x8b0a('0xd'));var Redis=require(_0x8b0a('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x8b0a('0xf'));var as=require(_0x8b0a('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8b0a('0x11'));var utils=require('../../config/utils');var config=require(_0x8b0a('0x12'));var licenseUtil=require(_0x8b0a('0x13'));var db=require(_0x8b0a('0x14'))['db'];config['redis']=_['defaults'](config[_0x8b0a('0x15')],{'host':_0x8b0a('0x16'),'port':0x18eb});var socket=require(_0x8b0a('0x17'))(new Redis(config[_0x8b0a('0x15')]));require('./smsAccount.socket')['register'](socket);var jayson=require(_0x8b0a('0x18'));var client=jayson['client'][_0x8b0a('0x19')]({'port':0x232c});function respondWithRpcPromise(_0x14f79b,_0x3d4e85,_0x1e2216,_0x256bf7){return new BPromise(function(_0x38fea2,_0x3a7cee){var _0x30bb24=_0x256bf7||client;return _0x30bb24[_0x8b0a('0x1a')](_0x14f79b,_0x1e2216)[_0x8b0a('0x1b')](function(_0xf19b49){logger[_0x8b0a('0x1c')](_0x8b0a('0x1d'),_0x3d4e85,_0x8b0a('0x1e'));logger[_0x8b0a('0x1f')](_0x8b0a('0x20'),_0x3d4e85,_0x8b0a('0x1e'),JSON[_0x8b0a('0x21')](_0xf19b49));if(_0xf19b49[_0x8b0a('0x22')]){if(_0xf19b49[_0x8b0a('0x22')][_0x8b0a('0x23')]===0x1f4){logger[_0x8b0a('0x22')](_0x8b0a('0x1d'),_0x3d4e85,_0xf19b49[_0x8b0a('0x22')][_0x8b0a('0x24')]);return _0x3a7cee(_0xf19b49[_0x8b0a('0x22')][_0x8b0a('0x24')]);}logger[_0x8b0a('0x22')](_0x8b0a('0x1d'),_0x3d4e85,_0xf19b49['error'][_0x8b0a('0x24')]);return _0x38fea2(_0xf19b49[_0x8b0a('0x22')][_0x8b0a('0x24')]);}else{logger[_0x8b0a('0x1c')](_0x8b0a('0x1d'),_0x3d4e85,'request\x20sent');_0x38fea2(_0xf19b49[_0x8b0a('0x25')][_0x8b0a('0x24')]);}})[_0x8b0a('0x26')](function(_0x8fb2){logger['error']('SmsAccount,\x20%s,\x20%s',_0x3d4e85,_0x8fb2);_0x3a7cee(_0x8fb2);});});}function respondWithStatusCode(_0x2a23fd,_0x16cf16){_0x16cf16=_0x16cf16||0xcc;return function(_0x3153fa){if(_0x3153fa){return _0x2a23fd[_0x8b0a('0x27')](_0x16cf16);}return _0x2a23fd[_0x8b0a('0x28')](_0x16cf16)[_0x8b0a('0x29')]();};}function respondWithResult(_0x416192,_0x28bb1d){_0x28bb1d=_0x28bb1d||0xc8;return function(_0x50ec6c){if(_0x50ec6c){return _0x416192['status'](_0x28bb1d)[_0x8b0a('0x2a')](_0x50ec6c);}};}function respondWithFilteredResult(_0x2277c7,_0x470888){return function(_0x3f6317){if(_0x3f6317){var _0x201f85=typeof _0x470888[_0x8b0a('0x2b')]==='undefined'&&typeof _0x470888[_0x8b0a('0x2c')]===_0x8b0a('0x2d');var _0x5a7ca2=_0x3f6317[_0x8b0a('0x2e')];var _0x4e1fac=_0x201f85?0x0:_0x470888[_0x8b0a('0x2b')];var _0x260989=_0x201f85?_0x3f6317[_0x8b0a('0x2e')]:_0x470888[_0x8b0a('0x2b')]+_0x470888[_0x8b0a('0x2c')];var _0x5b5d86;if(_0x260989>=_0x5a7ca2){_0x260989=_0x5a7ca2;_0x5b5d86=0xc8;}else{_0x5b5d86=0xce;}_0x2277c7[_0x8b0a('0x28')](_0x5b5d86);return _0x2277c7[_0x8b0a('0x2f')]('Content-Range',_0x4e1fac+'-'+_0x260989+'/'+_0x5a7ca2)[_0x8b0a('0x2a')](_0x3f6317);}return null;};}function patchUpdates(_0x2bddd8){return function(_0x384160){try{jsonpatch[_0x8b0a('0x30')](_0x384160,_0x2bddd8,!![]);}catch(_0x5dc0dd){return BPromise['reject'](_0x5dc0dd);}return _0x384160[_0x8b0a('0x31')]();};}function saveUpdates(_0x2a6b8c,_0x8c1f3){return function(_0x3c2918){if(_0x3c2918){return _0x3c2918[_0x8b0a('0x32')](_0x2a6b8c)[_0x8b0a('0x1b')](function(_0x2427a2){return _0x2427a2;});}return null;};}function removeEntity(_0x5957cd,_0xdb543c){return function(_0x1a4a1a){if(_0x1a4a1a){return _0x1a4a1a[_0x8b0a('0x33')]()['then'](function(){var _0x5792b8=_0x1a4a1a['get']({'plain':!![]});var _0x3e1c27='SmsAccounts';return db['UserProfileResource'][_0x8b0a('0x33')]({'where':{'type':_0x3e1c27,'resourceId':_0x5792b8['id']}})[_0x8b0a('0x1b')](function(){return _0x1a4a1a;});})[_0x8b0a('0x1b')](function(){_0x5957cd[_0x8b0a('0x28')](0xcc)[_0x8b0a('0x29')]();});}};}function handleEntityNotFound(_0x113c60,_0x20e821){return function(_0x1ccbd5){if(!_0x1ccbd5){_0x113c60['sendStatus'](0x194);}return _0x1ccbd5;};}function handleError(_0x19cc2e,_0x322984){_0x322984=_0x322984||0x1f4;return function(_0x23b744){logger[_0x8b0a('0x22')](_0x23b744[_0x8b0a('0x34')]);if(_0x23b744['name']){delete _0x23b744[_0x8b0a('0x35')];}_0x19cc2e[_0x8b0a('0x28')](_0x322984)[_0x8b0a('0x36')](_0x23b744);};}exports[_0x8b0a('0x37')]=function(_0x5b9b3d,_0x2dbbc4){var _0x17c4ea={'include':[{'model':db[_0x8b0a('0x38')],'as':'mandatoryDispositionPause'}]},_0x516a35={},_0x37db7e={'count':0x0,'rows':[]};var _0x2c7776=_[_0x8b0a('0x39')](db[_0x8b0a('0x3a')][_0x8b0a('0x3b')],function(_0x21d7b0){return{'name':_0x21d7b0[_0x8b0a('0x3c')],'type':_0x21d7b0['type'][_0x8b0a('0x3d')]};});_0x516a35['model']=_[_0x8b0a('0x39')](_0x2c7776,_0x8b0a('0x35'));_0x516a35[_0x8b0a('0x3e')]=_[_0x8b0a('0x3f')](_0x5b9b3d[_0x8b0a('0x3e')]);_0x516a35[_0x8b0a('0x40')]=_['intersection'](_0x516a35[_0x8b0a('0x41')],_0x516a35[_0x8b0a('0x3e')]);_0x17c4ea[_0x8b0a('0x42')]=_['intersection'](_0x516a35['model'],qs[_0x8b0a('0x43')](_0x5b9b3d['query'][_0x8b0a('0x43')]));_0x17c4ea[_0x8b0a('0x42')]=_0x17c4ea['attributes'][_0x8b0a('0x44')]?_0x17c4ea['attributes']:_0x516a35[_0x8b0a('0x41')];if(!_0x5b9b3d['query'][_0x8b0a('0x45')](_0x8b0a('0x46'))){_0x17c4ea[_0x8b0a('0x2c')]=qs[_0x8b0a('0x2c')](_0x5b9b3d[_0x8b0a('0x3e')]['limit']);_0x17c4ea['offset']=qs['offset'](_0x5b9b3d['query'][_0x8b0a('0x2b')]);}_0x17c4ea['order']=qs[_0x8b0a('0x47')](_0x5b9b3d[_0x8b0a('0x3e')][_0x8b0a('0x47')]);_0x17c4ea['where']=qs['filters'](_[_0x8b0a('0x48')](_0x5b9b3d[_0x8b0a('0x3e')],_0x516a35[_0x8b0a('0x40')]),_0x2c7776);if(_0x5b9b3d['query'][_0x8b0a('0x49')]){_0x17c4ea[_0x8b0a('0x4a')]=_['merge'](_0x17c4ea[_0x8b0a('0x4a')],{'$or':_[_0x8b0a('0x39')](_0x2c7776,function(_0x1e8927){if(_0x1e8927[_0x8b0a('0x4b')]!==_0x8b0a('0x4c')){var _0x152bd2={};_0x152bd2[_0x1e8927[_0x8b0a('0x35')]]={'$like':'%'+_0x5b9b3d[_0x8b0a('0x3e')][_0x8b0a('0x49')]+'%'};return _0x152bd2;}})});}_0x17c4ea=_['merge']({},_0x17c4ea,_0x5b9b3d[_0x8b0a('0x4d')]);var _0x2b2386={'where':_0x17c4ea[_0x8b0a('0x4a')]};return db[_0x8b0a('0x3a')][_0x8b0a('0x2e')](_0x2b2386)['then'](function(_0x3ff048){_0x37db7e[_0x8b0a('0x2e')]=_0x3ff048;if(_0x5b9b3d['query'][_0x8b0a('0x4e')]){_0x17c4ea[_0x8b0a('0x4f')]=[{'all':!![]}];}return db[_0x8b0a('0x3a')][_0x8b0a('0x50')](_0x17c4ea);})['then'](function(_0x5ded1b){_0x37db7e[_0x8b0a('0x51')]=_0x5ded1b;return _0x37db7e;})[_0x8b0a('0x1b')](respondWithFilteredResult(_0x2dbbc4,_0x17c4ea))[_0x8b0a('0x26')](handleError(_0x2dbbc4,null));};exports['show']=function(_0x42bc37,_0x4ac238){var _0x1e2813={'raw':![],'where':{'id':_0x42bc37['params']['id']},'include':[{'model':db['Pause'],'as':_0x8b0a('0x52')}]},_0x325b1d={};_0x325b1d['model']=_[_0x8b0a('0x3f')](db['SmsAccount'][_0x8b0a('0x3b')]);_0x325b1d['query']=_[_0x8b0a('0x3f')](_0x42bc37[_0x8b0a('0x3e')]);_0x325b1d[_0x8b0a('0x40')]=_[_0x8b0a('0x53')](_0x325b1d['model'],_0x325b1d[_0x8b0a('0x3e')]);_0x1e2813[_0x8b0a('0x42')]=_[_0x8b0a('0x53')](_0x325b1d[_0x8b0a('0x41')],qs[_0x8b0a('0x43')](_0x42bc37[_0x8b0a('0x3e')][_0x8b0a('0x43')]));_0x1e2813['attributes']=_0x1e2813[_0x8b0a('0x42')][_0x8b0a('0x44')]?_0x1e2813[_0x8b0a('0x42')]:_0x325b1d[_0x8b0a('0x41')];if(_0x42bc37[_0x8b0a('0x3e')][_0x8b0a('0x4e')]){_0x1e2813[_0x8b0a('0x4f')]=[{'all':!![]}];}_0x1e2813=_[_0x8b0a('0x54')]({},_0x1e2813,_0x42bc37[_0x8b0a('0x4d')]);return db['SmsAccount'][_0x8b0a('0x55')](_0x1e2813)[_0x8b0a('0x1b')](handleEntityNotFound(_0x4ac238,null))['then'](respondWithResult(_0x4ac238,null))['catch'](handleError(_0x4ac238,null));};exports[_0x8b0a('0x56')]=function(_0x1c170a,_0x44dc2a){return db['SmsAccount']['create'](_0x1c170a[_0x8b0a('0x57')],{})[_0x8b0a('0x1b')](function(_0x44cf0f){var _0x2fcb29=_0x1c170a[_0x8b0a('0x58')][_0x8b0a('0x59')]({'plain':!![]});if(!_0x2fcb29)throw new Error(_0x8b0a('0x5a'));if(_0x2fcb29[_0x8b0a('0x5b')]===_0x8b0a('0x58')){var _0x32a721=_0x44cf0f[_0x8b0a('0x59')]({'plain':!![]});var _0x4bdd30=_0x8b0a('0x5c');return db[_0x8b0a('0x5d')][_0x8b0a('0x55')]({'where':{'name':_0x4bdd30,'userProfileId':_0x2fcb29['userProfileId']},'raw':!![]})[_0x8b0a('0x1b')](function(_0x5ddb00){if(_0x5ddb00&&_0x5ddb00[_0x8b0a('0x5e')]===0x0){return db[_0x8b0a('0x5f')]['create']({'name':_0x32a721[_0x8b0a('0x35')],'resourceId':_0x32a721['id'],'type':_0x5ddb00['name'],'sectionId':_0x5ddb00['id']},{})[_0x8b0a('0x1b')](function(){return _0x44cf0f;});}else{return _0x44cf0f;}})[_0x8b0a('0x26')](function(_0x1b6a6c){logger[_0x8b0a('0x22')](_0x8b0a('0x60'),_0x1b6a6c);throw _0x1b6a6c;});}return _0x44cf0f;})[_0x8b0a('0x1b')](respondWithResult(_0x44dc2a,0xc9))[_0x8b0a('0x26')](handleError(_0x44dc2a,null));};exports[_0x8b0a('0x32')]=function(_0x5a4af7,_0xbdb491){if(_0x5a4af7[_0x8b0a('0x57')]['id']){delete _0x5a4af7[_0x8b0a('0x57')]['id'];}return db['SmsAccount'][_0x8b0a('0x55')]({'where':{'id':_0x5a4af7[_0x8b0a('0x61')]['id']},'include':[{'model':db['Pause'],'as':_0x8b0a('0x52')}]})[_0x8b0a('0x1b')](handleEntityNotFound(_0xbdb491,null))['then'](saveUpdates(_0x5a4af7['body'],null))[_0x8b0a('0x1b')](respondWithResult(_0xbdb491,null))[_0x8b0a('0x26')](handleError(_0xbdb491,null));};exports[_0x8b0a('0x33')]=function(_0x1e814f,_0x23446d){return db[_0x8b0a('0x3a')][_0x8b0a('0x55')]({'where':{'id':_0x1e814f[_0x8b0a('0x61')]['id']}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x23446d,null))[_0x8b0a('0x1b')](removeEntity(_0x23446d,null))[_0x8b0a('0x26')](handleError(_0x23446d,null));};exports['describe']=function(_0x277607,_0x4af2e7){return db[_0x8b0a('0x3a')][_0x8b0a('0x62')]()[_0x8b0a('0x1b')](respondWithResult(_0x4af2e7,null))[_0x8b0a('0x26')](handleError(_0x4af2e7,null));};exports[_0x8b0a('0x63')]=function(_0x391d1a,_0x21abc3,_0x42edbd){if(_0x391d1a[_0x8b0a('0x57')]['id']){delete _0x391d1a[_0x8b0a('0x57')]['id'];}return db[_0x8b0a('0x3a')][_0x8b0a('0x55')]({'where':{'id':_0x391d1a[_0x8b0a('0x61')]['id']}})['then'](handleEntityNotFound(_0x21abc3,null))[_0x8b0a('0x1b')](function(_0x1c55ac){if(_0x1c55ac){_0x391d1a[_0x8b0a('0x57')][_0x8b0a('0x64')]=_0x1c55ac['id'];return db[_0x8b0a('0x65')]['create'](_0x391d1a['body']);}})['then'](respondWithResult(_0x21abc3,null))[_0x8b0a('0x26')](handleError(_0x21abc3,null));};exports['getDispositions']=function(_0x1a42c5,_0x4c3ebc,_0x15d0c5){var _0x52d4ab={'raw':![],'where':{}};var _0x1f6e51={};var _0x540033={'count':0x0,'rows':[]};return db[_0x8b0a('0x3a')]['findOne']({'where':{'id':_0x1a42c5['params']['id']}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x4c3ebc,null))[_0x8b0a('0x1b')](function(_0x18a1c8){if(_0x18a1c8){_0x1f6e51['model']=_[_0x8b0a('0x3f')](db[_0x8b0a('0x65')][_0x8b0a('0x3b')]);_0x1f6e51[_0x8b0a('0x3e')]=_['keys'](_0x1a42c5[_0x8b0a('0x3e')]);_0x1f6e51[_0x8b0a('0x40')]=_[_0x8b0a('0x53')](_0x1f6e51[_0x8b0a('0x41')],_0x1f6e51['query']);_0x52d4ab[_0x8b0a('0x42')]=_[_0x8b0a('0x53')](_0x1f6e51[_0x8b0a('0x41')],qs[_0x8b0a('0x43')](_0x1a42c5[_0x8b0a('0x3e')][_0x8b0a('0x43')]));_0x52d4ab[_0x8b0a('0x42')]=_0x52d4ab['attributes'][_0x8b0a('0x44')]?_0x52d4ab['attributes']:_0x1f6e51[_0x8b0a('0x41')];if(!_0x1a42c5[_0x8b0a('0x3e')][_0x8b0a('0x45')](_0x8b0a('0x46'))){_0x52d4ab[_0x8b0a('0x2c')]=qs['limit'](_0x1a42c5[_0x8b0a('0x3e')][_0x8b0a('0x2c')]);_0x52d4ab['offset']=qs['offset'](_0x1a42c5[_0x8b0a('0x3e')][_0x8b0a('0x2b')]);}_0x52d4ab[_0x8b0a('0x66')]=qs['sort'](_0x1a42c5['query'][_0x8b0a('0x47')]);_0x52d4ab[_0x8b0a('0x4a')]=qs[_0x8b0a('0x40')](_[_0x8b0a('0x48')](_0x1a42c5[_0x8b0a('0x3e')],_0x1f6e51['filters']));_0x52d4ab[_0x8b0a('0x4a')][_0x8b0a('0x64')]=_0x18a1c8['id'];if(_0x1a42c5[_0x8b0a('0x3e')][_0x8b0a('0x49')]){_0x52d4ab[_0x8b0a('0x4a')]=_[_0x8b0a('0x54')](_0x52d4ab[_0x8b0a('0x4a')],{'$or':_[_0x8b0a('0x39')](_0x52d4ab[_0x8b0a('0x42')],function(_0x80e2ed){var _0x32eea5={};_0x32eea5[_0x80e2ed]={'$like':'%'+_0x1a42c5['query'][_0x8b0a('0x49')]+'%'};return _0x32eea5;})});}_0x52d4ab=_[_0x8b0a('0x54')]({},_0x52d4ab,_0x1a42c5['options']);return db[_0x8b0a('0x65')][_0x8b0a('0x2e')]({'where':_0x52d4ab[_0x8b0a('0x4a')]})[_0x8b0a('0x1b')](function(_0x491d11){_0x540033[_0x8b0a('0x2e')]=_0x491d11;if(_0x1a42c5[_0x8b0a('0x3e')][_0x8b0a('0x4e')]){_0x52d4ab[_0x8b0a('0x4f')]=[{'all':!![]}];}return db[_0x8b0a('0x65')][_0x8b0a('0x50')](_0x52d4ab);})[_0x8b0a('0x1b')](function(_0x3c47b6){_0x540033[_0x8b0a('0x51')]=_0x3c47b6;return _0x540033;});}})['then'](respondWithFilteredResult(_0x4c3ebc,_0x52d4ab))[_0x8b0a('0x26')](handleError(_0x4c3ebc,null));};exports[_0x8b0a('0x67')]=function(_0x33d498,_0x548fe9,_0x4e4a0){return db[_0x8b0a('0x3a')][_0x8b0a('0x55')]({'where':{'id':_0x33d498[_0x8b0a('0x61')]['id']}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x548fe9,null))['then'](function(_0xf29f9d){if(_0xf29f9d){return _0xf29f9d[_0x8b0a('0x67')](_0x33d498[_0x8b0a('0x3e')][_0x8b0a('0x68')]);}})['then'](respondWithStatusCode(_0x548fe9,null))[_0x8b0a('0x26')](handleError(_0x548fe9,null));};exports['addAnswer']=function(_0x2afcdc,_0x285683,_0x14263f){if(_0x2afcdc[_0x8b0a('0x57')]['id']){delete _0x2afcdc['body']['id'];}return db['SmsAccount'][_0x8b0a('0x55')]({'where':{'id':_0x2afcdc['params']['id']}})['then'](handleEntityNotFound(_0x285683,null))['then'](function(_0x4a7873){if(_0x4a7873){_0x2afcdc[_0x8b0a('0x57')]['SmsAccountId']=_0x4a7873['id'];return db['CannedAnswer'][_0x8b0a('0x56')](_0x2afcdc[_0x8b0a('0x57')]);}})[_0x8b0a('0x1b')](respondWithResult(_0x285683,null))[_0x8b0a('0x26')](handleError(_0x285683,null));};exports[_0x8b0a('0x69')]=function(_0x1414a6,_0x1e0c8c,_0x533ef3){var _0x328724={'raw':![],'where':{}};var _0x5cdc5a={};var _0x3bc236={'count':0x0,'rows':[]};return db[_0x8b0a('0x3a')][_0x8b0a('0x6a')]({'where':{'id':_0x1414a6['params']['id']}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x1e0c8c,null))['then'](function(_0x677624){if(_0x677624){_0x5cdc5a[_0x8b0a('0x41')]=_[_0x8b0a('0x3f')](db[_0x8b0a('0x6b')][_0x8b0a('0x3b')]);_0x5cdc5a[_0x8b0a('0x3e')]=_[_0x8b0a('0x3f')](_0x1414a6[_0x8b0a('0x3e')]);_0x5cdc5a[_0x8b0a('0x40')]=_[_0x8b0a('0x53')](_0x5cdc5a['model'],_0x5cdc5a[_0x8b0a('0x3e')]);_0x328724[_0x8b0a('0x42')]=_[_0x8b0a('0x53')](_0x5cdc5a[_0x8b0a('0x41')],qs[_0x8b0a('0x43')](_0x1414a6[_0x8b0a('0x3e')][_0x8b0a('0x43')]));_0x328724[_0x8b0a('0x42')]=_0x328724[_0x8b0a('0x42')][_0x8b0a('0x44')]?_0x328724['attributes']:_0x5cdc5a['model'];if(!_0x1414a6[_0x8b0a('0x3e')]['hasOwnProperty'](_0x8b0a('0x46'))){_0x328724[_0x8b0a('0x2c')]=qs[_0x8b0a('0x2c')](_0x1414a6[_0x8b0a('0x3e')][_0x8b0a('0x2c')]);_0x328724[_0x8b0a('0x2b')]=qs[_0x8b0a('0x2b')](_0x1414a6[_0x8b0a('0x3e')]['offset']);}_0x328724[_0x8b0a('0x66')]=qs[_0x8b0a('0x47')](_0x1414a6['query'][_0x8b0a('0x47')]);_0x328724[_0x8b0a('0x4a')]=qs[_0x8b0a('0x40')](_[_0x8b0a('0x48')](_0x1414a6[_0x8b0a('0x3e')],_0x5cdc5a[_0x8b0a('0x40')]));_0x328724[_0x8b0a('0x4a')][_0x8b0a('0x64')]=_0x677624['id'];if(_0x1414a6[_0x8b0a('0x3e')][_0x8b0a('0x49')]){_0x328724[_0x8b0a('0x4a')]=_[_0x8b0a('0x54')](_0x328724[_0x8b0a('0x4a')],{'$or':_['map'](_0x328724[_0x8b0a('0x42')],function(_0x136733){var _0xbe655c={};_0xbe655c[_0x136733]={'$like':'%'+_0x1414a6[_0x8b0a('0x3e')][_0x8b0a('0x49')]+'%'};return _0xbe655c;})});}_0x328724=_[_0x8b0a('0x54')]({},_0x328724,_0x1414a6[_0x8b0a('0x4d')]);return db[_0x8b0a('0x6b')][_0x8b0a('0x2e')]({'where':_0x328724[_0x8b0a('0x4a')]})[_0x8b0a('0x1b')](function(_0x615c4d){_0x3bc236[_0x8b0a('0x2e')]=_0x615c4d;if(_0x1414a6[_0x8b0a('0x3e')][_0x8b0a('0x4e')]){_0x328724[_0x8b0a('0x4f')]=[{'all':!![]}];}return db[_0x8b0a('0x6b')][_0x8b0a('0x50')](_0x328724);})[_0x8b0a('0x1b')](function(_0x4db037){_0x3bc236[_0x8b0a('0x51')]=_0x4db037;return _0x3bc236;});}})['then'](respondWithFilteredResult(_0x1e0c8c,_0x328724))[_0x8b0a('0x26')](handleError(_0x1e0c8c,null));};exports[_0x8b0a('0x6c')]=function(_0x19b81a,_0x1b7b1f,_0x25b859){return db[_0x8b0a('0x3a')][_0x8b0a('0x55')]({'where':{'id':_0x19b81a['params']['id']}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x1b7b1f,null))[_0x8b0a('0x1b')](function(_0x59515e){if(_0x59515e){return _0x59515e[_0x8b0a('0x6c')](_0x19b81a[_0x8b0a('0x3e')][_0x8b0a('0x68')]);}})[_0x8b0a('0x1b')](respondWithStatusCode(_0x1b7b1f,null))[_0x8b0a('0x26')](handleError(_0x1b7b1f,null));};exports[_0x8b0a('0x6d')]=function(_0x4819e8,_0x429e08,_0x42b16e){var _0xdf0b95={'channel':_0x8b0a('0x6e')};var _0x25dd2a=[];var _0x459df9=[];var _0xb8db87={};return db[_0x8b0a('0x3a')][_0x8b0a('0x55')]({'where':{'id':_0x4819e8[_0x8b0a('0x61')]['id']},'include':[{'model':db[_0x8b0a('0x6f')],'as':'Applications'}]})[_0x8b0a('0x1b')](handleEntityNotFound(_0x429e08,null))['then'](function(_0x442841){_0xdf0b95[_0x8b0a('0x70')]=_0x442841;_0xdf0b95['applications']=_[_0x8b0a('0x71')](_0x442841[_0x8b0a('0x72')],['priority'],[_0x8b0a('0x73')]);if(_0xdf0b95[_0x8b0a('0x70')]['Applications']){delete _0xdf0b95[_0x8b0a('0x70')][_0x8b0a('0x72')];}return db[_0x8b0a('0x74')][_0x8b0a('0x62')]();})['then'](function(_0x3f4a30){if(!_0x3f4a30){throw new db[(_0x8b0a('0x75'))][(_0x8b0a('0x76'))](_0x8b0a('0x77'));}_0x25dd2a=_[_0x8b0a('0x78')](_['keys'](_0x3f4a30),[_0x8b0a('0x79'),'updatedAt']);_0x459df9=_[_0x8b0a('0x78')](_[_0x8b0a('0x3f')](_0x3f4a30),['createdAt',_0x8b0a('0x7a'),_0x8b0a('0x7b'),_0x8b0a('0x7c')]);_0xdf0b95[_0x8b0a('0x57')]={'mapKey':'mobile'};if(_0xdf0b95[_0x8b0a('0x70')][_0x8b0a('0x4b')]){switch(_0xdf0b95[_0x8b0a('0x70')][_0x8b0a('0x4b')]){case _0x8b0a('0x7d'):_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x7e')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x7f')];_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x57')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x80')];_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x81')]=_0x4819e8['body'][_0x8b0a('0x82')];break;case'skebby':_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x7e')]='+'+_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x83')];_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x57')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x84')];break;case _0x8b0a('0x85'):_0xdf0b95[_0x8b0a('0x57')]['from']=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x7e')];_0xdf0b95['body'][_0x8b0a('0x57')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x24')];break;case _0x8b0a('0x86'):_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x7e')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x7e')];_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x57')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x57')];_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x81')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x87')];break;case _0x8b0a('0x88'):_0xdf0b95[_0x8b0a('0x57')]['from']=_0x4819e8[_0x8b0a('0x57')]['From'];_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x57')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x89')];_0xdf0b95[_0x8b0a('0x57')]['messageId']=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x8a')];break;case _0x8b0a('0x8b'):_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x7e')]='+'+_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x8c')][0x0][_0x8b0a('0x7e')];_0xdf0b95['body'][_0x8b0a('0x57')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x8c')][0x0][_0x8b0a('0x84')];_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x81')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x8c')][0x0][_0x8b0a('0x81')];break;case _0x8b0a('0x8d'):_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x7e')]=_0x4819e8[_0x8b0a('0x57')]['originatingAddress'];_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x57')]=_0x4819e8['body'][_0x8b0a('0x8e')]['message'];break;case _0x8b0a('0x8f'):_0xdf0b95[_0x8b0a('0x57')]['from']=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x90')];_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x57')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x84')];_0xdf0b95['body'][_0x8b0a('0x81')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x91')];break;case _0x8b0a('0x92'):_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x81')]=_0x4819e8['body'][0x0]['message']['id'];_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x7e')]=_0x4819e8['body'][0x0]['message']['from'];_0xdf0b95['body']['body']=_0x4819e8[_0x8b0a('0x57')][0x0][_0x8b0a('0x24')][_0x8b0a('0x84')];break;case _0x8b0a('0x93'):_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x7e')]=_0x4819e8['body']['from'];_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x57')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x24')];_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x81')]=_0x4819e8[_0x8b0a('0x57')][_0x8b0a('0x94')];break;}}if(_0xdf0b95['body']['id']){delete _0xdf0b95[_0x8b0a('0x57')]['id'];}if(_[_0x8b0a('0x95')](_0xdf0b95['body']['from'])){throw new db[(_0x8b0a('0x75'))][(_0x8b0a('0x76'))](_0x8b0a('0x96'));}if(_[_0x8b0a('0x95')](_0xdf0b95[_0x8b0a('0x57')]['body'])||_0xdf0b95[_0x8b0a('0x57')]['body']===''){throw new db['Sequelize']['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x8b0a('0x95')](_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x97')])){throw new db['Sequelize'][(_0x8b0a('0x76'))](_0x8b0a('0x98')+_0x459df9);}if(!_[_0x8b0a('0x99')](_0x459df9,_0xdf0b95['body'][_0x8b0a('0x97')])){throw new db[(_0x8b0a('0x75'))]['ValidationError'](_0x8b0a('0x9a')+_0x459df9);}_0xb8db87[_0xdf0b95['body'][_0x8b0a('0x97')]]=_0xdf0b95['body'][_0x8b0a('0x7e')];return db['CmList'][_0x8b0a('0x55')]({'where':{'id':_0xdf0b95[_0x8b0a('0x70')][_0x8b0a('0x7c')]},'include':[{'model':db[_0x8b0a('0x74')],'as':_0x8b0a('0x9b'),'where':_0xb8db87,'limit':0x1,'order':[['updatedAt',_0x8b0a('0x9c')]]}]});})[_0x8b0a('0x1b')](handleEntityNotFound(_0x429e08,null))[_0x8b0a('0x1b')](function(_0x35f8a7){if(_0x35f8a7){_0xdf0b95[_0x8b0a('0x9d')]=_['omit'](_0x35f8a7,[_0x8b0a('0x9b')]);if(_0x35f8a7[_0x8b0a('0x9b')][_0x8b0a('0x44')]){return _0x35f8a7['Contacts'][0x0];}var _0x390ab7=_[_0x8b0a('0x9e')](_0xdf0b95[_0x8b0a('0x57')],{'firstName':_0xdf0b95['body']['from'],'ListId':_0x35f8a7['id']});_0x390ab7[_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x97')]]=_0xdf0b95['body']['from'];return db[_0x8b0a('0x74')]['create'](_0x390ab7,{'fields':_0x25dd2a,'raw':!![]});}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x429e08,null))[_0x8b0a('0x1b')](function(_0x57f6e3){if(_0x57f6e3){_0xdf0b95[_0x8b0a('0x9f')]=_0x57f6e3;var _0xc42521={'ContactId':_0x57f6e3['id'],'phone':_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x7e')],'SmsAccountId':_0x4819e8['params']['id']};var _0x26c02c={'ContactId':_0x57f6e3['id'],'SmsAccountId':_0x4819e8['params']['id'],'closed':![]};return db[_0x8b0a('0xa0')]['find']({'where':_0x26c02c})['then'](function(_0x5be821){if(_0x5be821){return[_0x5be821,![]];}return db[_0x8b0a('0xa0')][_0x8b0a('0x56')](_0xc42521)[_0x8b0a('0x1b')](function(_0x533e37){return[_0x533e37,!![]];});});}})[_0x8b0a('0xa1')](function(_0x5b4f5f,_0x609475){_0xdf0b95[_0x8b0a('0xa2')]=_0x5b4f5f[_0x8b0a('0x59')]({'plain':!![]});_0xdf0b95[_0x8b0a('0xa2')][_0x8b0a('0xa3')]=![];if(_0x609475){if(_0xdf0b95[_0x8b0a('0x70')]['autoclose']){_0xdf0b95['applications'][_0x8b0a('0xa4')]({'id':0x0,'priority':_0xdf0b95[_0x8b0a('0xa5')]['length']+0x1,'app':'close','appdata':_0x8b0a('0xa6'),'interval':_0x8b0a('0xa7')});}_0xdf0b95['interaction'][_0x8b0a('0xa3')]=!![];}return db[_0x8b0a('0xa8')]['create']({'phone':_0xdf0b95['body']['from'],'messageId':_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x81')],'body':_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0x57')],'SmsAccountId':_0x4819e8[_0x8b0a('0x61')]['id'],'SmsInteractionId':_0x5b4f5f['id'],'direction':'in','ContactId':_0x5b4f5f[_0x8b0a('0xa9')],'AttachmentId':_0xdf0b95[_0x8b0a('0x57')][_0x8b0a('0xaa')]});})[_0x8b0a('0x1b')](function(_0x5aeb77){_0xdf0b95[_0x8b0a('0x24')]=_0x5aeb77;if(_0xdf0b95['interaction'][_0x8b0a('0xab')]){return db['User'][_0x8b0a('0x55')]({'attributes':['id',_0x8b0a('0x35')],'where':{'id':_0xdf0b95[_0x8b0a('0xa2')]['UserId']}})[_0x8b0a('0x1b')](function(_0x221059){if(_0x221059){_0xdf0b95[_0x8b0a('0xa5')]['unshift']({'id':0x0,'priority':0x0,'app':_0x8b0a('0xac'),'appdata':_0x221059[_0x8b0a('0x35')]+','+(_0xdf0b95[_0x8b0a('0x70')]['waitForTheAssignedAgent']||0xa),'interval':_0x8b0a('0xa7')});}return respondWithRpcPromise(_0x8b0a('0xad'),_0x8b0a('0xae'),_0xdf0b95);});}return respondWithRpcPromise('Start',_0x8b0a('0xae'),_0xdf0b95);})[_0x8b0a('0x1b')](function(_0x5cef55){if(_0x5cef55){var _0x31f65a=0xc8;var _0xa46b27=_0x8b0a('0xaf');logger['info']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xa46b27,_0x31f65a,'entity\x20found');logger[_0x8b0a('0x1f')](_0x8b0a('0xb0'),_0xa46b27,_0x31f65a,'entity\x20found',JSON[_0x8b0a('0x21')](_0x5cef55));if(_0xdf0b95[_0x8b0a('0x70')][_0x8b0a('0x4b')]===_0x8b0a('0x7d')){return _0x429e08[_0x8b0a('0x28')](_0x31f65a)[_0x8b0a('0x2f')]('Content-Type',_0x8b0a('0xb1'))['send'](_0x8b0a('0xb2'));}else{return _0x429e08[_0x8b0a('0x28')](_0x31f65a)[_0x8b0a('0x2a')](_0x5cef55);}}})[_0x8b0a('0x26')](handleError(_0x429e08,null));};exports[_0x8b0a('0xb3')]=function(_0x306476,_0x136894,_0x3b1845){return db[_0x8b0a('0x3a')][_0x8b0a('0x6a')]({'where':{'id':_0x306476['params']['id']}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x136894,null))['then'](function(_0x1c2faa){if(_0x1c2faa){return db['sequelize'][_0x8b0a('0xb4')](function(_0x1f65df){return db[_0x8b0a('0x6f')]['destroy']({'where':{'SmsAccountId':_0x306476[_0x8b0a('0x61')]['id']},'transaction':_0x1f65df})['then'](function(_0x541890){var _0x71771f=_[_0x8b0a('0x39')](_0x306476[_0x8b0a('0x57')],function(_0x4292e6){_0x4292e6['SmsAccountId']=_0x306476[_0x8b0a('0x61')]['id'];return _0x4292e6;});return db['SmsApplication'][_0x8b0a('0xb5')](_0x71771f,{'transaction':_0x1f65df});});})['then'](function(){return db['SmsApplication'][_0x8b0a('0xb6')]({'where':{'SmsAccountId':_0x306476[_0x8b0a('0x61')]['id']},'order':'priority'});});}})[_0x8b0a('0x1b')](respondWithResult(_0x136894,null))['catch'](handleError(_0x136894,null));};exports[_0x8b0a('0xb7')]=function(_0x22b669,_0xcc1bec,_0x39dfed){var _0xd7a61={};var _0xca2471={};var _0x58ef93;var _0x30a021;return db[_0x8b0a('0x3a')]['findOne']({'where':{'id':_0x22b669['params']['id']}})[_0x8b0a('0x1b')](handleEntityNotFound(_0xcc1bec,null))[_0x8b0a('0x1b')](function(_0x590818){if(_0x590818){_0x58ef93=_0x590818;_0xca2471[_0x8b0a('0x41')]=_[_0x8b0a('0x3f')](db[_0x8b0a('0x6f')][_0x8b0a('0x3b')]);_0xca2471[_0x8b0a('0x3e')]=_[_0x8b0a('0x3f')](_0x22b669[_0x8b0a('0x3e')]);_0xca2471[_0x8b0a('0x40')]=_[_0x8b0a('0x53')](_0xca2471['model'],_0xca2471[_0x8b0a('0x3e')]);_0xd7a61[_0x8b0a('0x42')]=_[_0x8b0a('0x53')](_0xca2471[_0x8b0a('0x41')],qs['fields'](_0x22b669[_0x8b0a('0x3e')]['fields']));_0xd7a61[_0x8b0a('0x42')]=_0xd7a61[_0x8b0a('0x42')][_0x8b0a('0x44')]?_0xd7a61[_0x8b0a('0x42')]:_0xca2471[_0x8b0a('0x41')];_0xd7a61[_0x8b0a('0x66')]=qs['sort'](_0x22b669[_0x8b0a('0x3e')][_0x8b0a('0x47')]);_0xd7a61['where']=qs[_0x8b0a('0x40')](_[_0x8b0a('0x48')](_0x22b669[_0x8b0a('0x3e')],_0xca2471[_0x8b0a('0x40')]));if(_0x22b669[_0x8b0a('0x3e')]['filter']){_0xd7a61['where']=_[_0x8b0a('0x54')](_0xd7a61[_0x8b0a('0x4a')],{'$or':_['map'](_0xd7a61[_0x8b0a('0x42')],function(_0x39b673){var _0x4dcb70={};_0x4dcb70[_0x39b673]={'$like':'%'+_0x22b669[_0x8b0a('0x3e')][_0x8b0a('0x49')]+'%'};return _0x4dcb70;})});}_0xd7a61=_[_0x8b0a('0x54')]({},_0xd7a61,_0x22b669['options']);return _0x58ef93[_0x8b0a('0xb7')](_0xd7a61);}})[_0x8b0a('0x1b')](function(_0x19db25){if(_0x19db25){_0x30a021=_0x19db25[_0x8b0a('0x44')];if(!_0x22b669[_0x8b0a('0x3e')][_0x8b0a('0x45')](_0x8b0a('0x46'))){_0xd7a61[_0x8b0a('0x2c')]=qs[_0x8b0a('0x2c')](_0x22b669['query'][_0x8b0a('0x2c')]);_0xd7a61[_0x8b0a('0x2b')]=qs['offset'](_0x22b669['query']['offset']);}return _0x58ef93[_0x8b0a('0xb7')](_0xd7a61);}})[_0x8b0a('0x1b')](function(_0x2d6019){if(_0x2d6019){return _0x2d6019?{'count':_0x30a021,'rows':_0x2d6019}:null;}})[_0x8b0a('0x1b')](respondWithResult(_0xcc1bec,null))['catch'](handleError(_0xcc1bec,null));};exports['getInteractions']=function(_0x4fcf16,_0x1b5bb0,_0x13fb51){var _0x432b67={'raw':![],'where':{}};var _0x337d54={};var _0x4909a7={'count':0x0,'rows':[]};return db[_0x8b0a('0x3a')][_0x8b0a('0x6a')]({'where':{'id':_0x4fcf16[_0x8b0a('0x61')]['id']}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x1b5bb0,null))[_0x8b0a('0x1b')](function(_0x2c2b7e){if(_0x2c2b7e){_0x337d54[_0x8b0a('0x41')]=_[_0x8b0a('0x3f')](db[_0x8b0a('0xa0')][_0x8b0a('0x3b')]);_0x337d54[_0x8b0a('0x3e')]=_[_0x8b0a('0x3f')](_0x4fcf16[_0x8b0a('0x3e')]);_0x337d54[_0x8b0a('0x40')]=_[_0x8b0a('0x53')](_0x337d54[_0x8b0a('0x41')],_0x337d54[_0x8b0a('0x3e')]);_0x432b67['attributes']=_[_0x8b0a('0x53')](_0x337d54[_0x8b0a('0x41')],qs['fields'](_0x4fcf16[_0x8b0a('0x3e')][_0x8b0a('0x43')]));_0x432b67[_0x8b0a('0x42')]=_0x432b67[_0x8b0a('0x42')][_0x8b0a('0x44')]?_0x432b67[_0x8b0a('0x42')]:_0x337d54[_0x8b0a('0x41')];if(!_0x4fcf16['query']['hasOwnProperty'](_0x8b0a('0x46'))){_0x432b67[_0x8b0a('0x2c')]=qs[_0x8b0a('0x2c')](_0x4fcf16['query']['limit']);_0x432b67['offset']=qs[_0x8b0a('0x2b')](_0x4fcf16['query']['offset']);}_0x432b67[_0x8b0a('0x66')]=qs[_0x8b0a('0x47')](_0x4fcf16[_0x8b0a('0x3e')][_0x8b0a('0x47')]);_0x432b67[_0x8b0a('0x4a')]=qs['filters'](_[_0x8b0a('0x48')](_0x4fcf16[_0x8b0a('0x3e')],_0x337d54['filters']));_0x432b67[_0x8b0a('0x4a')][_0x8b0a('0x64')]=_0x2c2b7e['id'];if(_0x4fcf16[_0x8b0a('0x3e')][_0x8b0a('0x49')]){_0x432b67[_0x8b0a('0x4a')]=_[_0x8b0a('0x54')](_0x432b67['where'],{'$or':_[_0x8b0a('0x39')](_0x432b67[_0x8b0a('0x42')],function(_0x48fa73){var _0x21731e={};_0x21731e[_0x48fa73]={'$like':'%'+_0x4fcf16[_0x8b0a('0x3e')][_0x8b0a('0x49')]+'%'};return _0x21731e;})});}_0x432b67=_[_0x8b0a('0x54')]({},_0x432b67,_0x4fcf16[_0x8b0a('0x4d')]);return db[_0x8b0a('0xa0')][_0x8b0a('0x2e')]({'where':_0x432b67[_0x8b0a('0x4a')]})[_0x8b0a('0x1b')](function(_0x4c737c){_0x4909a7['count']=_0x4c737c;if(_0x4fcf16[_0x8b0a('0x3e')][_0x8b0a('0x4e')]){_0x432b67[_0x8b0a('0x4f')]=[{'model':db[_0x8b0a('0x74')],'as':_0x8b0a('0xb8'),'required':![]},{'model':db[_0x8b0a('0xb9')],'as':'Owner','attributes':[_0x8b0a('0x35'),_0x8b0a('0xba'),_0x8b0a('0xbb')],'required':![]},{'model':db[_0x8b0a('0xbc')],'as':_0x8b0a('0xbd'),'attributes':['id','name','color'],'where':_0x4fcf16[_0x8b0a('0x3e')][_0x8b0a('0xbe')]?{'id':_0x4fcf16[_0x8b0a('0x3e')][_0x8b0a('0xbe')]}:undefined,'required':_0x4fcf16[_0x8b0a('0x3e')][_0x8b0a('0xbe')]?!![]:![]}];}return db[_0x8b0a('0xa0')]['findAll'](_0x432b67);})['then'](function(_0x5732bc){_0x4909a7[_0x8b0a('0x51')]=_0x5732bc;return _0x4909a7;});}})[_0x8b0a('0x1b')](respondWithFilteredResult(_0x1b5bb0,_0x432b67))['catch'](handleError(_0x1b5bb0,null));};exports[_0x8b0a('0x36')]=function(_0x232915,_0x297f5c,_0x45732e){var _0x44f42c,_0x2504fc,_0x330350;if(_[_0x8b0a('0x95')](_0x232915['body'][_0x8b0a('0x57')])||_0x232915[_0x8b0a('0x57')]['body']===''){throw new db['Sequelize'][(_0x8b0a('0x76'))](_0x8b0a('0xbf'));}if(_[_0x8b0a('0x95')](_0x232915[_0x8b0a('0x57')]['to'])){throw new db['Sequelize'][(_0x8b0a('0x76'))]('to\x20is\x20mandatory');}_0x44f42c=_0x232915[_0x8b0a('0x57')]['to'];return db[_0x8b0a('0x3a')][_0x8b0a('0x55')]({'where':{'id':_0x232915[_0x8b0a('0x61')]['id']},'include':[{'model':db[_0x8b0a('0xc0')],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0x44f42c},'limit':0x1,'order':[[_0x8b0a('0x7a'),_0x8b0a('0x9c')]]}]}]})[_0x8b0a('0x1b')](handleEntityNotFound(_0x297f5c,null))['then'](function(_0x362b3d){if(_0x362b3d&&_0x362b3d[_0x8b0a('0xc1')]){_0x2504fc=_0x362b3d[_0x8b0a('0x59')]({'plain':!![]});if(_0x2504fc[_0x8b0a('0xc1')]&&_0x2504fc[_0x8b0a('0xc1')][_0x8b0a('0x9b')][_0x8b0a('0x44')]){return _0x2504fc[_0x8b0a('0xc1')][_0x8b0a('0x9b')][0x0];}return db['CmContact']['create'](_[_0x8b0a('0x9e')](_0x232915['body'],{'firstName':_0x44f42c,'mobile':_0x44f42c,'phone':_0x44f42c,'ListId':_0x2504fc[_0x8b0a('0x7c')]}));}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x297f5c,null))[_0x8b0a('0x1b')](function(_0x3ce708){if(_0x3ce708){_0x330350=_0x3ce708;return db[_0x8b0a('0xa0')][_0x8b0a('0x55')]({'where':{'ContactId':_0x330350['id'],'closed':![],'SmsAccountId':_0x2504fc['id']}})['then'](function(_0x3c1eee){if(_0x3c1eee){return[_0x3c1eee,![]];}return db[_0x8b0a('0xa0')][_0x8b0a('0x56')]({'UserId':_0x232915[_0x8b0a('0x58')]['id'],'ContactId':_0x330350['id'],'SmsAccountId':_0x2504fc['id'],'phone':_0x44f42c,'firstMsgDirection':_0x8b0a('0xc2'),'Messages':[_['merge'](_0x232915[_0x8b0a('0x57')],{'read':![],'body':_0x232915['body'][_0x8b0a('0x57')],'phone':_0x44f42c,'SmsAccountId':_0x2504fc['id'],'UserId':_0x232915[_0x8b0a('0x58')]['id'],'ContactId':_0x330350['id']})]},{'include':[{'model':db[_0x8b0a('0xa8')],'as':_0x8b0a('0xc3')}]})[_0x8b0a('0x1b')](function(_0x19df4a){return[_0x19df4a,!![]];});});}})['spread'](function(_0x4c7abf,_0x4a8856){if(_0x4a8856){return _0x4c7abf;}return db[_0x8b0a('0xa8')][_0x8b0a('0x56')](_[_0x8b0a('0x54')](_0x232915[_0x8b0a('0x57')],{'read':![],'body':_0x232915[_0x8b0a('0x57')][_0x8b0a('0x57')],'phone':_0x44f42c,'SmsAccountId':_0x2504fc['id'],'SmsInteractionId':_0x4c7abf['id'],'UserId':_0x232915[_0x8b0a('0x58')]['id'],'ContactId':_0x330350['id']}))['then'](function(_0x23034d){_0x4c7abf['dataValues']['Messages']=[];_0x4c7abf[_0x8b0a('0xc4')][_0x8b0a('0xc3')]['push'](_0x23034d[_0x8b0a('0xc4')]);return _0x4c7abf;});})[_0x8b0a('0x1b')](respondWithResult(_0x297f5c,null))[_0x8b0a('0x26')](handleError(_0x297f5c,null));};exports[_0x8b0a('0x28')]=function(_0xf7f338,_0x140a6d,_0x5e706c){if(_0xf7f338['body']['id']){delete _0xf7f338[_0x8b0a('0x57')]['id'];}var _0x2ddfff,_0x2f1685,_0x27bd44;return db['SmsAccount'][_0x8b0a('0x55')]({'where':{'id':_0xf7f338[_0x8b0a('0x61')]['id']}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x140a6d,null))['then'](function(_0x4a9ef2){if(_0x4a9ef2){_0x27bd44=_0x4a9ef2;logger['debug'](_0x8b0a('0x20'),'status',_0x8b0a('0xc5'),_0x4a9ef2[_0x8b0a('0x4b')],util[_0x8b0a('0xc6')](_0xf7f338[_0x8b0a('0x57')],{'showHidden':![],'depth':null}));switch(_0x4a9ef2[_0x8b0a('0x4b')]){case _0x8b0a('0xc7'):if(_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0xc8')]&&_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0x28')]){_0x2f1685=_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0x28')];return db[_0x8b0a('0xa8')][_0x8b0a('0x55')]({'where':{'messageId':_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0xc8')]}});}break;case _0x8b0a('0x85'):if(_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0xc9')]&&_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0xca')]){_0x2f1685=_0xf7f338[_0x8b0a('0x57')]['statusInt'];return db[_0x8b0a('0xa8')][_0x8b0a('0x55')]({'where':{'messageId':_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0xc9')]}});}break;case _0x8b0a('0x86'):if(_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0x87')]&&_0xf7f338['body'][_0x8b0a('0xcb')]){_0x2f1685=_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0xcb')];return db[_0x8b0a('0xa8')][_0x8b0a('0x55')]({'where':{'messageId':_0xf7f338[_0x8b0a('0x57')]['message_id']}});}break;case _0x8b0a('0x8b'):var _0x5c332a=_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0x8c')][0x0];if(_0x5c332a[_0x8b0a('0x81')]&&_0x5c332a['status'][_0x8b0a('0xcc')]==='DELIVERED'){_0x2f1685=_0x5c332a[_0x8b0a('0x28')][_0x8b0a('0xcc')];return db[_0x8b0a('0xa8')]['find']({'where':{'messageId':_0x5c332a[_0x8b0a('0x81')]}});}break;case _0x8b0a('0x8f'):if(_0xf7f338[_0x8b0a('0x57')]['messageId']&&_0xf7f338['body'][_0x8b0a('0x28')]){_0x2f1685=_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0x28')];return db[_0x8b0a('0xa8')][_0x8b0a('0x55')]({'where':{'messageId':_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0x81')]}});}break;case _0x8b0a('0x92'):if(_0xf7f338[_0x8b0a('0x57')][0x0][_0x8b0a('0x24')]['id']){_0x2f1685=_0xf7f338[_0x8b0a('0x57')][0x0][_0x8b0a('0x4b')];return db[_0x8b0a('0xa8')][_0x8b0a('0x55')]({'where':{'messageId':_0xf7f338[_0x8b0a('0x57')][0x0][_0x8b0a('0x24')]['id']}});}break;case'intelepeer':if(_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0xcd')]&&_0xf7f338[_0x8b0a('0x57')]['status']){_0x2f1685=_0xf7f338['body'][_0x8b0a('0x28')];return db[_0x8b0a('0xa8')][_0x8b0a('0x55')]({'where':{'messageId':_0xf7f338['body'][_0x8b0a('0xcd')]}});}break;}}})['then'](handleEntityNotFound(_0x140a6d,null))['then'](function(_0x1bad8f){if(_0x1bad8f){_0x2ddfff=_0x1bad8f;switch(_0x27bd44['type']){case'skebby':if(_0x2f1685==='DELIVERED'){return _0x2ddfff[_0x8b0a('0x32')]({'read':!![]});}else{logger[_0x8b0a('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x8b0a('0x28'),_0x8b0a('0xc7'),util[_0x8b0a('0xc6')](_0xf7f338[_0x8b0a('0x57')],{'showHidden':![],'depth':null}));}break;case _0x8b0a('0x85'):if(_0x2f1685==='1'){return _0x2ddfff['update']({'read':!![]});}else{logger[_0x8b0a('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x8b0a('0x28'),'skebby',util['inspect'](_0xf7f338[_0x8b0a('0x57')],{'showHidden':![],'depth':null}));}break;case _0x8b0a('0x86'):if(!_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0xce')]&&_0x2f1685>=0xc8&&_0x2f1685<=0xce){return _0x2ddfff[_0x8b0a('0x32')]({'read':!![]});}else{logger[_0x8b0a('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x8b0a('0x28'),_0x8b0a('0x86'),util[_0x8b0a('0xc6')](_0xf7f338[_0x8b0a('0x57')],{'showHidden':![],'depth':null}));}break;case _0x8b0a('0x8b'):var _0x13e5b8=_0xf7f338[_0x8b0a('0x57')][_0x8b0a('0x8c')][0x0];if(_0x13e5b8[_0x8b0a('0x28')][_0x8b0a('0xcc')]===_0x8b0a('0xcf')){return _0x2ddfff[_0x8b0a('0x32')]({'read':!![]});}else{logger[_0x8b0a('0x22')](_0x8b0a('0x20'),_0x8b0a('0x28'),'infobip',util[_0x8b0a('0xc6')](_0xf7f338[_0x8b0a('0x57')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x2f1685==_0x8b0a('0xd0')||_0x2f1685==_0x8b0a('0xd1')){return _0x2ddfff[_0x8b0a('0x32')]({'read':!![]});}else{logger[_0x8b0a('0x22')](_0x8b0a('0x20'),_0x8b0a('0x28'),_0x8b0a('0x8f'),util[_0x8b0a('0xc6')](_0xf7f338[_0x8b0a('0x57')],{'showHidden':![],'depth':null}));}break;case _0x8b0a('0x92'):if(_0x2f1685=='message-delivered'){return _0x2ddfff[_0x8b0a('0x32')]({'read':!![]});}else{logger[_0x8b0a('0x22')](_0x8b0a('0x20'),'status',_0x8b0a('0x92'),util[_0x8b0a('0xc6')](_0xf7f338[_0x8b0a('0x57')],{'showHidden':![],'depth':null}));}break;case _0x8b0a('0x93'):if(_0x2f1685===_0x8b0a('0xd2')||_0x2f1685===_0x8b0a('0xd3')){return _0x2ddfff[_0x8b0a('0x32')]({'read':!![]});}else{logger[_0x8b0a('0x22')](_0x8b0a('0x20'),_0x8b0a('0x28'),'intelepeer',util['inspect'](_0xf7f338['body'],{'showHidden':![],'depth':null}));}break;}return _0x2ddfff;}})['then'](respondWithResult(_0x140a6d,null))[_0x8b0a('0x26')](handleError(_0x140a6d,null));};exports[_0x8b0a('0xd4')]=function(_0x299be1,_0x4b5b3b,_0x323c59){var _0x534d9d,_0x21f1b5,_0x38b30a;return db[_0x8b0a('0x3a')][_0x8b0a('0x55')]({'where':{'id':_0x299be1[_0x8b0a('0x61')]['id']}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x4b5b3b,null))[_0x8b0a('0x1b')](function(_0x12f530){if(_0x12f530){_0x38b30a=_0x12f530;logger[_0x8b0a('0x1f')](_0x8b0a('0x20'),_0x8b0a('0x28'),_0x8b0a('0xc5'),_0x12f530[_0x8b0a('0x4b')],util[_0x8b0a('0xc6')](_0x299be1[_0x8b0a('0x3e')],{'showHidden':![],'depth':null}));switch(_0x12f530[_0x8b0a('0x4b')]){case _0x8b0a('0x8d'):if(_0x299be1[_0x8b0a('0x3e')][_0x8b0a('0xd5')]&&_0x299be1[_0x8b0a('0x3e')][_0x8b0a('0xd6')]){_0x21f1b5=_0x299be1[_0x8b0a('0x3e')]['state'];return db[_0x8b0a('0xa8')]['find']({'where':{'messageId':_0x299be1[_0x8b0a('0x3e')][_0x8b0a('0xd5')]}});}break;}}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x4b5b3b,null))['then'](function(_0x45f9a4){if(_0x45f9a4){_0x534d9d=_0x45f9a4;switch(_0x38b30a[_0x8b0a('0x4b')]){case _0x8b0a('0x8d'):if(_0x21f1b5==='2'||_0x21f1b5==='6'){return _0x534d9d[_0x8b0a('0x32')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x8b0a('0x28'),_0x8b0a('0x8d'),util[_0x8b0a('0xc6')](_0x299be1[_0x8b0a('0x3e')],{'showHidden':![],'depth':null}));};break;}return _0x534d9d;}})[_0x8b0a('0x1b')](respondWithResult(_0x4b5b3b,null))[_0x8b0a('0x26')](handleError(_0x4b5b3b,null));};exports[_0x8b0a('0xd7')]=function(_0x5295a8,_0x48d554,_0x19721f){return db[_0x8b0a('0x3a')]['find']({'where':{'id':_0x5295a8[_0x8b0a('0x61')]['id']}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x48d554,null))[_0x8b0a('0x1b')](function(_0x2b1268){if(_0x2b1268){return _0x2b1268[_0x8b0a('0xd7')](_0x5295a8[_0x8b0a('0x57')][_0x8b0a('0x68')],_['omit'](_0x5295a8[_0x8b0a('0x57')],[_0x8b0a('0x68'),'id'])||{})[_0x8b0a('0xa1')](function(_0x85fafe){for(var _0x5a309e=0x0;_0x5a309e<_0x5295a8[_0x8b0a('0x57')][_0x8b0a('0x68')][_0x8b0a('0x44')];_0x5a309e+=0x1){socket[_0x8b0a('0xd8')](_0x8b0a('0xd9'),{'UserId':Number(_0x5295a8[_0x8b0a('0x57')][_0x8b0a('0x68')][_0x5a309e]),'SmsAccountId':Number(_0x5295a8[_0x8b0a('0x61')]['id'])});}return _0x85fafe;});}})[_0x8b0a('0x1b')](respondWithResult(_0x48d554,null))[_0x8b0a('0x26')](handleError(_0x48d554,null));};exports[_0x8b0a('0xda')]=function(_0xc98dc4,_0x3170bb,_0x328268){return db[_0x8b0a('0x3a')][_0x8b0a('0x55')]({'where':{'id':_0xc98dc4[_0x8b0a('0x61')]['id']}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x3170bb,null))[_0x8b0a('0x1b')](function(_0x4a22d5){if(_0x4a22d5){return _0x4a22d5[_0x8b0a('0xda')](_0xc98dc4[_0x8b0a('0x3e')][_0x8b0a('0x68')])[_0x8b0a('0x1b')](function(){if(_[_0x8b0a('0xdb')](_0xc98dc4['query'][_0x8b0a('0x68')])){for(var _0x515aeb=0x0;_0x515aeb<_0xc98dc4[_0x8b0a('0x3e')]['ids'][_0x8b0a('0x44')];_0x515aeb+=0x1){socket[_0x8b0a('0xd8')](_0x8b0a('0xdc'),{'UserId':Number(_0xc98dc4[_0x8b0a('0x3e')][_0x8b0a('0x68')][_0x515aeb]),'SmsAccountId':Number(_0xc98dc4[_0x8b0a('0x61')]['id'])});}}else{socket[_0x8b0a('0xd8')](_0x8b0a('0xdc'),{'UserId':Number(_0xc98dc4[_0x8b0a('0x3e')][_0x8b0a('0x68')]),'SmsAccountId':Number(_0xc98dc4[_0x8b0a('0x61')]['id'])});}});}})[_0x8b0a('0x1b')](respondWithStatusCode(_0x3170bb,null))[_0x8b0a('0x26')](handleError(_0x3170bb,null));};exports['getAgents']=function(_0x217e63,_0x4fa07c,_0xfbe0e2){var _0x1d08a0={};var _0x4d9018={};var _0x2f818b;var _0x201dea;return db[_0x8b0a('0x3a')][_0x8b0a('0x6a')]({'where':{'id':_0x217e63[_0x8b0a('0x61')]['id']}})[_0x8b0a('0x1b')](handleEntityNotFound(_0x4fa07c,null))[_0x8b0a('0x1b')](function(_0x1e09d6){if(_0x1e09d6){_0x2f818b=_0x1e09d6;_0x4d9018['model']=_['keys'](db[_0x8b0a('0xb9')][_0x8b0a('0x3b')]);_0x4d9018[_0x8b0a('0x3e')]=_[_0x8b0a('0x3f')](_0x217e63['query']);_0x4d9018[_0x8b0a('0x40')]=_[_0x8b0a('0x53')](_0x4d9018[_0x8b0a('0x41')],_0x4d9018[_0x8b0a('0x3e')]);_0x1d08a0['attributes']=_[_0x8b0a('0x53')](_0x4d9018[_0x8b0a('0x41')],qs[_0x8b0a('0x43')](_0x217e63['query'][_0x8b0a('0x43')]));_0x1d08a0[_0x8b0a('0x42')]=_0x1d08a0['attributes'][_0x8b0a('0x44')]?_0x1d08a0[_0x8b0a('0x42')]:_0x4d9018[_0x8b0a('0x41')];_0x1d08a0[_0x8b0a('0x66')]=qs[_0x8b0a('0x47')](_0x217e63[_0x8b0a('0x3e')]['sort']);_0x1d08a0[_0x8b0a('0x4a')]=qs[_0x8b0a('0x40')](_[_0x8b0a('0x48')](_0x217e63[_0x8b0a('0x3e')],_0x4d9018['filters']));if(_0x217e63['query'][_0x8b0a('0x49')]){_0x1d08a0['where']=_[_0x8b0a('0x54')](_0x1d08a0[_0x8b0a('0x4a')],{'$or':_[_0x8b0a('0x39')](_0x1d08a0[_0x8b0a('0x42')],function(_0x304840){var _0x24f7fb={};_0x24f7fb[_0x304840]={'$like':'%'+_0x217e63[_0x8b0a('0x3e')][_0x8b0a('0x49')]+'%'};return _0x24f7fb;})});}_0x1d08a0=_['merge']({},_0x1d08a0,_0x217e63[_0x8b0a('0x4d')]);return _0x2f818b[_0x8b0a('0xdd')](_0x1d08a0);}})['then'](function(_0xeb6bae){if(_0xeb6bae){_0x201dea=_0xeb6bae['length'];if(!_0x217e63[_0x8b0a('0x3e')][_0x8b0a('0x45')](_0x8b0a('0x46'))){_0x1d08a0[_0x8b0a('0x2c')]=qs['limit'](_0x217e63['query'][_0x8b0a('0x2c')]);_0x1d08a0[_0x8b0a('0x2b')]=qs[_0x8b0a('0x2b')](_0x217e63[_0x8b0a('0x3e')]['offset']);}return _0x2f818b['getAgents'](_0x1d08a0);}})[_0x8b0a('0x1b')](function(_0x3076b3){if(_0x3076b3){return _0x3076b3?{'count':_0x201dea,'rows':_0x3076b3}:null;}})['then'](respondWithResult(_0x4fa07c,null))['catch'](handleError(_0x4fa07c,null));};
\ No newline at end of file
index 7dbb91b..a09661b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d37=['hasOwnProperty','hook','exports','events','setMaxListeners','update','emit'];(function(_0x2b1ec0,_0x15ac0a){var _0x15227a=function(_0x576553){while(--_0x576553){_0x2b1ec0['push'](_0x2b1ec0['shift']());}};_0x15227a(++_0x15ac0a);}(_0x2d37,0x1a0));var _0x72d3=function(_0x4f27c0,_0x93696){_0x4f27c0=_0x4f27c0-0x0;var _0x5f0deb=_0x2d37[_0x4f27c0];return _0x5f0deb;};'use strict';var EventEmitter=require(_0x72d3('0x0'));var SmsAccount=require('../../mysqldb')['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x72d3('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x72d3('0x2'),'afterDestroy':'remove'};function emitEvent(_0x39752a){return function(_0x139c73,_0x572d77,_0x21d12a){SmsAccountEvents[_0x72d3('0x3')](_0x39752a+':'+_0x139c73['id'],_0x139c73);SmsAccountEvents[_0x72d3('0x3')](_0x39752a,_0x139c73);_0x21d12a(null);};}for(var e in events){if(events[_0x72d3('0x4')](e)){var event=events[e];SmsAccount[_0x72d3('0x5')](e,emitEvent(event));}}module[_0x72d3('0x6')]=SmsAccountEvents;
\ No newline at end of file
+var _0x0973=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x158ad5,_0x335477){var _0x264448=function(_0x4da69e){while(--_0x4da69e){_0x158ad5['push'](_0x158ad5['shift']());}};_0x264448(++_0x335477);}(_0x0973,0x10b));var _0x3097=function(_0x3dec21,_0x498a4e){_0x3dec21=_0x3dec21-0x0;var _0x33bc4a=_0x0973[_0x3dec21];return _0x33bc4a;};'use strict';var EventEmitter=require(_0x3097('0x0'));var SmsAccount=require(_0x3097('0x1'))['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x3097('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3097('0x3'),'afterDestroy':_0x3097('0x4')};function emitEvent(_0x1de201){return function(_0x1d237f,_0x5d615b,_0x43e750){SmsAccountEvents['emit'](_0x1de201+':'+_0x1d237f['id'],_0x1d237f);SmsAccountEvents[_0x3097('0x5')](_0x1de201,_0x1d237f);_0x43e750(null);};}for(var e in events){if(events[_0x3097('0x6')](e)){var event=events[e];SmsAccount[_0x3097('0x7')](e,emitEvent(event));}}module[_0x3097('0x8')]=SmsAccountEvents;
\ No newline at end of file
index 3dca55c..62652d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e54=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','lodash','util'];(function(_0x161f59,_0x42e9ff){var _0x3ffa0e=function(_0x3aef14){while(--_0x3aef14){_0x161f59['push'](_0x161f59['shift']());}};_0x3ffa0e(++_0x42e9ff);}(_0x8e54,0x108));var _0x48e5=function(_0x298dc7,_0x5114fb){_0x298dc7=_0x298dc7-0x0;var _0x30ec59=_0x8e54[_0x298dc7];return _0x30ec59;};'use strict';var _=require(_0x48e5('0x0'));var util=require(_0x48e5('0x1'));var logger=require(_0x48e5('0x2'))(_0x48e5('0x3'));var moment=require(_0x48e5('0x4'));var BPromise=require(_0x48e5('0x5'));var rp=require(_0x48e5('0x6'));var fs=require('fs');var path=require(_0x48e5('0x7'));var rimraf=require('rimraf');var config=require(_0x48e5('0x8'));var attributes=require(_0x48e5('0x9'));module[_0x48e5('0xa')]=function(_0x7112f7,_0x7b6fc6){return _0x7112f7[_0x48e5('0xb')](_0x48e5('0xc'),attributes,{'tableName':_0x48e5('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x94d1=['bluebird','request-promise','path','rimraf','./smsAccount.attributes','exports','sms_accounts','lodash','util','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x94d1,0x1f1));var _0x194d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x94d1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x194d('0x0'));var util=require(_0x194d('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x194d('0x2'));var BPromise=require(_0x194d('0x3'));var rp=require(_0x194d('0x4'));var fs=require('fs');var path=require(_0x194d('0x5'));var rimraf=require(_0x194d('0x6'));var config=require('../../config/environment');var attributes=require(_0x194d('0x7'));module[_0x194d('0x8')]=function(_0x2ba849,_0x280f70){return _0x2ba849['define']('SmsAccount',attributes,{'tableName':_0x194d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aac5520..9c99a1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9251=['model','util','moment','bluebird','randomstring','ioredis','../../mysqldb','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowSmsAccount','SmsAccount','find','options','where','attributes','include','map'];(function(_0x42e980,_0x407b17){var _0x3c0468=function(_0x41d359){while(--_0x41d359){_0x42e980['push'](_0x42e980['shift']());}};_0x3c0468(++_0x407b17);}(_0x9251,0xd3));var _0x1925=function(_0x236d24,_0x29e80a){_0x236d24=_0x236d24-0x0;var _0x1574cf=_0x9251[_0x236d24];return _0x1574cf;};'use strict';var _=require('lodash');var util=require(_0x1925('0x0'));var moment=require(_0x1925('0x1'));var BPromise=require(_0x1925('0x2'));var rs=require(_0x1925('0x3'));var fs=require('fs');var Redis=require(_0x1925('0x4'));var db=require(_0x1925('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x1925('0x6'));var client=jayson[_0x1925('0x7')][_0x1925('0x8')]({'port':0x232a});config[_0x1925('0x9')]=_[_0x1925('0xa')](config[_0x1925('0x9')],{'host':_0x1925('0xb'),'port':0x18eb});var socket=require(_0x1925('0xc'))(new Redis(config[_0x1925('0x9')]));require(_0x1925('0xd'))[_0x1925('0xe')](socket);function respondWithRpcPromise(_0x54d1a9,_0x513f71,_0x37ca29){return new BPromise(function(_0x3b7d2d,_0x41bf5b){return client[_0x1925('0xf')](_0x54d1a9,_0x37ca29)[_0x1925('0x10')](function(_0xc248a0){logger[_0x1925('0x11')](_0x1925('0x12'),_0x513f71,_0x1925('0x13'));logger['debug'](_0x1925('0x14'),_0x513f71,'request\x20sent',JSON[_0x1925('0x15')](_0xc248a0));if(_0xc248a0['error']){if(_0xc248a0['error']['code']===0x1f4){logger[_0x1925('0x16')](_0x1925('0x12'),_0x513f71,_0xc248a0[_0x1925('0x16')]['message']);return _0x41bf5b(_0xc248a0[_0x1925('0x16')][_0x1925('0x17')]);}logger[_0x1925('0x16')]('SmsAccount,\x20%s,\x20%s',_0x513f71,_0xc248a0[_0x1925('0x16')]['message']);return _0x3b7d2d(_0xc248a0[_0x1925('0x16')][_0x1925('0x17')]);}else{logger[_0x1925('0x11')](_0x1925('0x12'),_0x513f71,'request\x20sent');_0x3b7d2d(_0xc248a0[_0x1925('0x18')][_0x1925('0x17')]);}})[_0x1925('0x19')](function(_0x2ed1bb){logger['error'](_0x1925('0x12'),_0x513f71,_0x2ed1bb);_0x41bf5b(_0x2ed1bb);});});}exports[_0x1925('0x1a')]=function(_0x3385fa){var _0x48bafa=this;return new Promise(function(_0x51868e,_0x444cd4){return db[_0x1925('0x1b')][_0x1925('0x1c')]({'raw':_0x3385fa[_0x1925('0x1d')]?_0x3385fa[_0x1925('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x3385fa['options']?_0x3385fa['options'][_0x1925('0x1e')]||null:null,'attributes':_0x3385fa['options']?_0x3385fa[_0x1925('0x1d')][_0x1925('0x1f')]||null:null,'include':_0x3385fa[_0x1925('0x1d')]?_0x3385fa[_0x1925('0x1d')][_0x1925('0x20')]?_[_0x1925('0x21')](_0x3385fa[_0x1925('0x1d')][_0x1925('0x20')],function(_0x4c08a7){return{'model':db[_0x4c08a7[_0x1925('0x22')]],'as':_0x4c08a7['as'],'attributes':_0x4c08a7[_0x1925('0x1f')],'include':_0x4c08a7[_0x1925('0x20')]?_[_0x1925('0x21')](_0x4c08a7['include'],function(_0x478bf0){return{'model':db[_0x478bf0[_0x1925('0x22')]],'as':_0x478bf0['as'],'attributes':_0x478bf0['attributes'],'include':_0x478bf0[_0x1925('0x20')]?_[_0x1925('0x21')](_0x478bf0[_0x1925('0x20')],function(_0x3d020b){return{'model':db[_0x3d020b['model']],'as':_0x3d020b['as'],'attributes':_0x3d020b[_0x1925('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x1925('0x10')](function(_0x5b814c){logger[_0x1925('0x11')]('ShowSmsAccount',_0x3385fa);logger['debug']('ShowSmsAccount',_0x3385fa,JSON['stringify'](_0x5b814c));_0x51868e(_0x5b814c);})[_0x1925('0x19')](function(_0x299c4d){logger[_0x1925('0x16')](_0x1925('0x1a'),_0x299c4d[_0x1925('0x17')],_0x3385fa);_0x444cd4(_0x48bafa[_0x1925('0x16')](0x1f4,_0x299c4d[_0x1925('0x17')]));});});};
\ No newline at end of file
+var _0x5c5a=['debug','error','code','message','SmsAccount,\x20%s,\x20%s','result','catch','SmsAccount','find','options','raw','where','attributes','include','map','model','ShowSmsAccount','stringify','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','register','then','info','request\x20sent'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x5c5a,0x166));var _0xa5c5=function(_0x33387b,_0x691f19){_0x33387b=_0x33387b-0x0;var _0x4796b0=_0x5c5a[_0x33387b];return _0x4796b0;};'use strict';var _=require(_0xa5c5('0x0'));var util=require(_0xa5c5('0x1'));var moment=require('moment');var BPromise=require(_0xa5c5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa5c5('0x3'));var db=require(_0xa5c5('0x4'))['db'];var utils=require(_0xa5c5('0x5'));var logger=require('../../config/logger')(_0xa5c5('0x6'));var config=require(_0xa5c5('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa5c5('0x8')][_0xa5c5('0x9')]({'port':0x232a});config[_0xa5c5('0xa')]=_[_0xa5c5('0xb')](config[_0xa5c5('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa5c5('0xa')]));require('./smsAccount.socket')[_0xa5c5('0xc')](socket);function respondWithRpcPromise(_0x2cd6ad,_0xfd9b02,_0x972406){return new BPromise(function(_0x552a75,_0x593ff0){return client['request'](_0x2cd6ad,_0x972406)[_0xa5c5('0xd')](function(_0x4a5bb2){logger[_0xa5c5('0xe')]('SmsAccount,\x20%s,\x20%s',_0xfd9b02,_0xa5c5('0xf'));logger[_0xa5c5('0x10')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfd9b02,_0xa5c5('0xf'),JSON['stringify'](_0x4a5bb2));if(_0x4a5bb2[_0xa5c5('0x11')]){if(_0x4a5bb2[_0xa5c5('0x11')][_0xa5c5('0x12')]===0x1f4){logger[_0xa5c5('0x11')]('SmsAccount,\x20%s,\x20%s',_0xfd9b02,_0x4a5bb2[_0xa5c5('0x11')]['message']);return _0x593ff0(_0x4a5bb2[_0xa5c5('0x11')][_0xa5c5('0x13')]);}logger[_0xa5c5('0x11')](_0xa5c5('0x14'),_0xfd9b02,_0x4a5bb2[_0xa5c5('0x11')][_0xa5c5('0x13')]);return _0x552a75(_0x4a5bb2[_0xa5c5('0x11')][_0xa5c5('0x13')]);}else{logger[_0xa5c5('0xe')](_0xa5c5('0x14'),_0xfd9b02,_0xa5c5('0xf'));_0x552a75(_0x4a5bb2[_0xa5c5('0x15')][_0xa5c5('0x13')]);}})[_0xa5c5('0x16')](function(_0x5bc603){logger[_0xa5c5('0x11')](_0xa5c5('0x14'),_0xfd9b02,_0x5bc603);_0x593ff0(_0x5bc603);});});}exports['ShowSmsAccount']=function(_0x241da3){var _0x5156c7=this;return new Promise(function(_0x43b38c,_0x34c8f5){return db[_0xa5c5('0x17')][_0xa5c5('0x18')]({'raw':_0x241da3[_0xa5c5('0x19')]?_0x241da3[_0xa5c5('0x19')][_0xa5c5('0x1a')]===undefined?!![]:![]:!![],'where':_0x241da3['options']?_0x241da3[_0xa5c5('0x19')][_0xa5c5('0x1b')]||null:null,'attributes':_0x241da3[_0xa5c5('0x19')]?_0x241da3[_0xa5c5('0x19')][_0xa5c5('0x1c')]||null:null,'include':_0x241da3['options']?_0x241da3[_0xa5c5('0x19')][_0xa5c5('0x1d')]?_[_0xa5c5('0x1e')](_0x241da3[_0xa5c5('0x19')][_0xa5c5('0x1d')],function(_0x540bb8){return{'model':db[_0x540bb8[_0xa5c5('0x1f')]],'as':_0x540bb8['as'],'attributes':_0x540bb8['attributes'],'include':_0x540bb8[_0xa5c5('0x1d')]?_[_0xa5c5('0x1e')](_0x540bb8[_0xa5c5('0x1d')],function(_0x6acef6){return{'model':db[_0x6acef6[_0xa5c5('0x1f')]],'as':_0x6acef6['as'],'attributes':_0x6acef6[_0xa5c5('0x1c')],'include':_0x6acef6['include']?_[_0xa5c5('0x1e')](_0x6acef6[_0xa5c5('0x1d')],function(_0x20ae71){return{'model':db[_0x20ae71[_0xa5c5('0x1f')]],'as':_0x20ae71['as'],'attributes':_0x20ae71[_0xa5c5('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa5c5('0xd')](function(_0x373058){logger['info']('ShowSmsAccount',_0x241da3);logger[_0xa5c5('0x10')](_0xa5c5('0x20'),_0x241da3,JSON[_0xa5c5('0x21')](_0x373058));_0x43b38c(_0x373058);})[_0xa5c5('0x16')](function(_0x1ea5cb){logger['error'](_0xa5c5('0x20'),_0x1ea5cb['message'],_0x241da3);_0x34c8f5(_0x5156c7[_0xa5c5('0x11')](0x1f4,_0x1ea5cb[_0xa5c5('0x13')]));});});};
\ No newline at end of file
index d7587b0..ed604bb 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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'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 f5fdb4f..50f01e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['update','delete','/:id','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','show','create'];(function(_0x4497bf,_0x464dce){var _0x3b734f=function(_0x1c6ff9){while(--_0x1c6ff9){_0x4497bf['push'](_0x4497bf['shift']());}};_0x3b734f(++_0x464dce);}(_0x55ca,0x126));var _0xa55c=function(_0x20dda3,_0xfcb775){_0x20dda3=_0x20dda3-0x0;var _0x547b71=_0x55ca[_0x20dda3];return _0x547b71;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['post']('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0xb')]);router['put']('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xc')]);router[_0xa55c('0xd')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);module[_0xa55c('0x10')]=router;
\ No newline at end of file
+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(_0x4ffbb0,_0x5b28ea){var _0xd29dd8=function(_0x568154){while(--_0x568154){_0x4ffbb0['push'](_0x4ffbb0['shift']());}};_0xd29dd8(++_0x5b28ea);}(_0x3e74,0x175));var _0x43e7=function(_0x244923,_0x1239df){_0x244923=_0x244923-0x0;var _0x5356ff=_0x3e74[_0x244923];return _0x5356ff;};'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
index f9ad79d..3d4238f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3d5=['INTEGER','STRING','noop','TEXT'];(function(_0x5c67c1,_0x31b26c){var _0x5bf1b1=function(_0x28365d){while(--_0x28365d){_0x5c67c1['push'](_0x5c67c1['shift']());}};_0x5bf1b1(++_0x31b26c);}(_0xe3d5,0x158));var _0x5e3d=function(_0x2c2980,_0x34282a){_0x2c2980=_0x2c2980-0x0;var _0x2a20a9=_0xe3d5[_0x2c2980];return _0x2a20a9;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0x5e3d('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0x5e3d('0x1')],'allowNull':![],'defaultValue':_0x5e3d('0x2')},'appdata':{'type':Sequelize[_0x5e3d('0x3')]()},'description':{'type':Sequelize[_0x5e3d('0x1')]},'interval':{'type':Sequelize[_0x5e3d('0x1')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x0ffd=['*,*,*,*','sequelize','INTEGER','STRING','noop','TEXT'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0x0ffd,0x169));var _0xd0ff=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x0ffd[_0x4d8ed9];return _0x1e2140;};'use strict';var Sequelize=require(_0xd0ff('0x0'));module['exports']={'priority':{'type':Sequelize[_0xd0ff('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xd0ff('0x2')],'allowNull':![],'defaultValue':_0xd0ff('0x3')},'appdata':{'type':Sequelize[_0xd0ff('0x4')]()},'description':{'type':Sequelize[_0xd0ff('0x2')]},'interval':{'type':Sequelize[_0xd0ff('0x2')],'defaultValue':_0xd0ff('0x5')}};
\ No newline at end of file
index e2fcd21..78ffa12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4993=['error','stack','name','send','map','rawAttributes','fieldName','type','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','order','where','pick','filters','filter','merge','VIRTUAL','options','SmsApplication','include','catch','show','includeAll','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','save','update','then','destroy'];(function(_0x56db44,_0x63219a){var _0x206d12=function(_0x358e6f){while(--_0x358e6f){_0x56db44['push'](_0x56db44['shift']());}};_0x206d12(++_0x63219a);}(_0x4993,0x189));var _0x3499=function(_0x83bf,_0x4b3273){_0x83bf=_0x83bf-0x0;var _0x14a6d3=_0x4993[_0x83bf];return _0x14a6d3;};'use strict';var emlformat=require(_0x3499('0x0'));var rimraf=require(_0x3499('0x1'));var zipdir=require(_0x3499('0x2'));var jsonpatch=require(_0x3499('0x3'));var rp=require(_0x3499('0x4'));var moment=require(_0x3499('0x5'));var BPromise=require(_0x3499('0x6'));var Mustache=require(_0x3499('0x7'));var util=require('util');var path=require(_0x3499('0x8'));var sox=require(_0x3499('0x9'));var csv=require(_0x3499('0xa'));var ejs=require(_0x3499('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3499('0xc'));var crypto=require(_0x3499('0xd'));var jsforce=require(_0x3499('0xe'));var deskjs=require(_0x3499('0xf'));var toCsv=require(_0x3499('0xa'));var querystring=require('querystring');var Papa=require(_0x3499('0x10'));var Redis=require(_0x3499('0x11'));var authService=require(_0x3499('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x3499('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3499('0x14'))(_0x3499('0x15'));var utils=require(_0x3499('0x16'));var config=require(_0x3499('0x17'));var licenseUtil=require(_0x3499('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x121335,_0x4593ea){_0x4593ea=_0x4593ea||0xcc;return function(_0x4340bc){if(_0x4340bc){return _0x121335[_0x3499('0x19')](_0x4593ea);}return _0x121335[_0x3499('0x1a')](_0x4593ea)[_0x3499('0x1b')]();};}function respondWithResult(_0x5b595c,_0x550cc5){_0x550cc5=_0x550cc5||0xc8;return function(_0x16d651){if(_0x16d651){return _0x5b595c[_0x3499('0x1a')](_0x550cc5)[_0x3499('0x1c')](_0x16d651);}};}function respondWithFilteredResult(_0x4f12fe,_0x4826bf){return function(_0x4cef41){if(_0x4cef41){var _0x139ed5=typeof _0x4826bf[_0x3499('0x1d')]==='undefined'&&typeof _0x4826bf[_0x3499('0x1e')]==='undefined';var _0x25c267=_0x4cef41[_0x3499('0x1f')];var _0x3a7c12=_0x139ed5?0x0:_0x4826bf[_0x3499('0x1d')];var _0x339642=_0x139ed5?_0x4cef41[_0x3499('0x1f')]:_0x4826bf[_0x3499('0x1d')]+_0x4826bf[_0x3499('0x1e')];var _0x249006;if(_0x339642>=_0x25c267){_0x339642=_0x25c267;_0x249006=0xc8;}else{_0x249006=0xce;}_0x4f12fe[_0x3499('0x1a')](_0x249006);return _0x4f12fe[_0x3499('0x20')](_0x3499('0x21'),_0x3a7c12+'-'+_0x339642+'/'+_0x25c267)['json'](_0x4cef41);}return null;};}function patchUpdates(_0x2e177f){return function(_0x53ebb0){try{jsonpatch[_0x3499('0x22')](_0x53ebb0,_0x2e177f,!![]);}catch(_0x4e2cc4){return BPromise['reject'](_0x4e2cc4);}return _0x53ebb0[_0x3499('0x23')]();};}function saveUpdates(_0x46641d,_0x5ccc04){return function(_0x57c31c){if(_0x57c31c){return _0x57c31c[_0x3499('0x24')](_0x46641d)[_0x3499('0x25')](function(_0x3422ca){return _0x3422ca;});}return null;};}function removeEntity(_0x403039,_0x71d9bd){return function(_0x5b7694){if(_0x5b7694){return _0x5b7694[_0x3499('0x26')]()['then'](function(){_0x403039[_0x3499('0x1a')](0xcc)[_0x3499('0x1b')]();});}};}function handleEntityNotFound(_0x105da2,_0x189897){return function(_0x136e48){if(!_0x136e48){_0x105da2['sendStatus'](0x194);}return _0x136e48;};}function handleError(_0x2b7cb5,_0x5b663d){_0x5b663d=_0x5b663d||0x1f4;return function(_0x5db2a0){logger[_0x3499('0x27')](_0x5db2a0[_0x3499('0x28')]);if(_0x5db2a0[_0x3499('0x29')]){delete _0x5db2a0[_0x3499('0x29')];}_0x2b7cb5[_0x3499('0x1a')](_0x5b663d)[_0x3499('0x2a')](_0x5db2a0);};}exports['index']=function(_0x284cbc,_0x362492){var _0x55e51b={},_0x3e3bdd={},_0x4445e0={'count':0x0,'rows':[]};var _0x5c89dc=_[_0x3499('0x2b')](db['SmsApplication'][_0x3499('0x2c')],function(_0x4df330){return{'name':_0x4df330[_0x3499('0x2d')],'type':_0x4df330[_0x3499('0x2e')]['key']};});_0x3e3bdd['model']=_[_0x3499('0x2b')](_0x5c89dc,_0x3499('0x29'));_0x3e3bdd[_0x3499('0x2f')]=_[_0x3499('0x30')](_0x284cbc['query']);_0x3e3bdd['filters']=_[_0x3499('0x31')](_0x3e3bdd[_0x3499('0x32')],_0x3e3bdd[_0x3499('0x2f')]);_0x55e51b['attributes']=_[_0x3499('0x31')](_0x3e3bdd[_0x3499('0x32')],qs['fields'](_0x284cbc[_0x3499('0x2f')][_0x3499('0x33')]));_0x55e51b[_0x3499('0x34')]=_0x55e51b[_0x3499('0x34')][_0x3499('0x35')]?_0x55e51b[_0x3499('0x34')]:_0x3e3bdd['model'];if(!_0x284cbc[_0x3499('0x2f')][_0x3499('0x36')]('nolimit')){_0x55e51b[_0x3499('0x1e')]=qs[_0x3499('0x1e')](_0x284cbc['query'][_0x3499('0x1e')]);_0x55e51b[_0x3499('0x1d')]=qs[_0x3499('0x1d')](_0x284cbc[_0x3499('0x2f')][_0x3499('0x1d')]);}_0x55e51b[_0x3499('0x37')]=qs['sort'](_0x284cbc[_0x3499('0x2f')]['sort']);_0x55e51b[_0x3499('0x38')]=qs['filters'](_[_0x3499('0x39')](_0x284cbc[_0x3499('0x2f')],_0x3e3bdd[_0x3499('0x3a')]),_0x5c89dc);if(_0x284cbc[_0x3499('0x2f')][_0x3499('0x3b')]){_0x55e51b[_0x3499('0x38')]=_[_0x3499('0x3c')](_0x55e51b[_0x3499('0x38')],{'$or':_[_0x3499('0x2b')](_0x5c89dc,function(_0x385fe9){if(_0x385fe9[_0x3499('0x2e')]!==_0x3499('0x3d')){var _0x5a750f={};_0x5a750f[_0x385fe9[_0x3499('0x29')]]={'$like':'%'+_0x284cbc[_0x3499('0x2f')][_0x3499('0x3b')]+'%'};return _0x5a750f;}})});}_0x55e51b=_[_0x3499('0x3c')]({},_0x55e51b,_0x284cbc[_0x3499('0x3e')]);var _0x134c5d={'where':_0x55e51b[_0x3499('0x38')]};return db[_0x3499('0x3f')][_0x3499('0x1f')](_0x134c5d)[_0x3499('0x25')](function(_0x331e6c){_0x4445e0[_0x3499('0x1f')]=_0x331e6c;if(_0x284cbc[_0x3499('0x2f')]['includeAll']){_0x55e51b[_0x3499('0x40')]=[{'all':!![]}];}return db[_0x3499('0x3f')]['findAll'](_0x55e51b);})[_0x3499('0x25')](function(_0x16e862){_0x4445e0['rows']=_0x16e862;return _0x4445e0;})[_0x3499('0x25')](respondWithFilteredResult(_0x362492,_0x55e51b))[_0x3499('0x41')](handleError(_0x362492,null));};exports[_0x3499('0x42')]=function(_0x326550,_0x4678e6){var _0x5ef12c={'raw':!![],'where':{'id':_0x326550['params']['id']}},_0x3cfe55={};_0x3cfe55[_0x3499('0x32')]=_['keys'](db[_0x3499('0x3f')][_0x3499('0x2c')]);_0x3cfe55[_0x3499('0x2f')]=_[_0x3499('0x30')](_0x326550[_0x3499('0x2f')]);_0x3cfe55['filters']=_[_0x3499('0x31')](_0x3cfe55[_0x3499('0x32')],_0x3cfe55[_0x3499('0x2f')]);_0x5ef12c[_0x3499('0x34')]=_[_0x3499('0x31')](_0x3cfe55[_0x3499('0x32')],qs['fields'](_0x326550[_0x3499('0x2f')]['fields']));_0x5ef12c[_0x3499('0x34')]=_0x5ef12c['attributes'][_0x3499('0x35')]?_0x5ef12c['attributes']:_0x3cfe55[_0x3499('0x32')];if(_0x326550[_0x3499('0x2f')][_0x3499('0x43')]){_0x5ef12c[_0x3499('0x40')]=[{'all':!![]}];}_0x5ef12c=_[_0x3499('0x3c')]({},_0x5ef12c,_0x326550[_0x3499('0x3e')]);return db[_0x3499('0x3f')][_0x3499('0x44')](_0x5ef12c)[_0x3499('0x25')](handleEntityNotFound(_0x4678e6,null))[_0x3499('0x25')](respondWithResult(_0x4678e6,null))['catch'](handleError(_0x4678e6,null));};exports[_0x3499('0x45')]=function(_0x394147,_0x18a48f){return db[_0x3499('0x3f')][_0x3499('0x45')](_0x394147[_0x3499('0x46')],{})[_0x3499('0x25')](respondWithResult(_0x18a48f,0xc9))[_0x3499('0x41')](handleError(_0x18a48f,null));};exports['update']=function(_0x3472aa,_0x54b224){if(_0x3472aa[_0x3499('0x46')]['id']){delete _0x3472aa['body']['id'];}return db[_0x3499('0x3f')][_0x3499('0x44')]({'where':{'id':_0x3472aa['params']['id']}})[_0x3499('0x25')](handleEntityNotFound(_0x54b224,null))[_0x3499('0x25')](saveUpdates(_0x3472aa[_0x3499('0x46')],null))[_0x3499('0x25')](respondWithResult(_0x54b224,null))['catch'](handleError(_0x54b224,null));};exports[_0x3499('0x26')]=function(_0x2b6fbd,_0x103800){return db[_0x3499('0x3f')][_0x3499('0x44')]({'where':{'id':_0x2b6fbd[_0x3499('0x47')]['id']}})['then'](handleEntityNotFound(_0x103800,null))[_0x3499('0x25')](removeEntity(_0x103800,null))[_0x3499('0x41')](handleError(_0x103800,null));};
\ No newline at end of file
+var _0x8a6f=['key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','bluebird','mustache','path','sox','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/license/util','status','end','offset','undefined','limit','count','set','json','reject','save','update','destroy','then','sendStatus','name','send','index','map','SmsApplication','fieldName','type'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8a6f,0x16f));var _0xf8a6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8a6f[_0x3dd15e];return _0x231fd0;};'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('request-promise');var moment=require('moment');var BPromise=require(_0xf8a6('0x0'));var Mustache=require(_0xf8a6('0x1'));var util=require('util');var path=require(_0xf8a6('0x2'));var sox=require(_0xf8a6('0x3'));var csv=require(_0xf8a6('0x4'));var ejs=require(_0xf8a6('0x5'));var fs=require('fs');var fs_extra=require(_0xf8a6('0x6'));var _=require(_0xf8a6('0x7'));var squel=require(_0xf8a6('0x8'));var crypto=require('crypto');var jsforce=require(_0xf8a6('0x9'));var deskjs=require(_0xf8a6('0xa'));var toCsv=require('to-csv');var querystring=require(_0xf8a6('0xb'));var Papa=require(_0xf8a6('0xc'));var Redis=require(_0xf8a6('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xf8a6('0xe'));var as=require(_0xf8a6('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf8a6('0x10'))(_0xf8a6('0x11'));var utils=require(_0xf8a6('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xf8a6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2eda84,_0x94dee9){_0x94dee9=_0x94dee9||0xcc;return function(_0x2e2c67){if(_0x2e2c67){return _0x2eda84['sendStatus'](_0x94dee9);}return _0x2eda84[_0xf8a6('0x14')](_0x94dee9)[_0xf8a6('0x15')]();};}function respondWithResult(_0x532fef,_0x1ce187){_0x1ce187=_0x1ce187||0xc8;return function(_0x135b84){if(_0x135b84){return _0x532fef['status'](_0x1ce187)['json'](_0x135b84);}};}function respondWithFilteredResult(_0x5ada2e,_0x113804){return function(_0x5523b0){if(_0x5523b0){var _0x513d10=typeof _0x113804[_0xf8a6('0x16')]===_0xf8a6('0x17')&&typeof _0x113804[_0xf8a6('0x18')]===_0xf8a6('0x17');var _0x3ed991=_0x5523b0[_0xf8a6('0x19')];var _0x138e06=_0x513d10?0x0:_0x113804[_0xf8a6('0x16')];var _0x1a4447=_0x513d10?_0x5523b0[_0xf8a6('0x19')]:_0x113804[_0xf8a6('0x16')]+_0x113804[_0xf8a6('0x18')];var _0x3cebaa;if(_0x1a4447>=_0x3ed991){_0x1a4447=_0x3ed991;_0x3cebaa=0xc8;}else{_0x3cebaa=0xce;}_0x5ada2e[_0xf8a6('0x14')](_0x3cebaa);return _0x5ada2e[_0xf8a6('0x1a')]('Content-Range',_0x138e06+'-'+_0x1a4447+'/'+_0x3ed991)[_0xf8a6('0x1b')](_0x5523b0);}return null;};}function patchUpdates(_0x4f8e2a){return function(_0x19958c){try{jsonpatch['apply'](_0x19958c,_0x4f8e2a,!![]);}catch(_0x810e25){return BPromise[_0xf8a6('0x1c')](_0x810e25);}return _0x19958c[_0xf8a6('0x1d')]();};}function saveUpdates(_0x32d839,_0x1441e4){return function(_0x4579c5){if(_0x4579c5){return _0x4579c5[_0xf8a6('0x1e')](_0x32d839)['then'](function(_0x1177d9){return _0x1177d9;});}return null;};}function removeEntity(_0xe0b6d7,_0x3d590b){return function(_0x34771b){if(_0x34771b){return _0x34771b[_0xf8a6('0x1f')]()[_0xf8a6('0x20')](function(){_0xe0b6d7['status'](0xcc)[_0xf8a6('0x15')]();});}};}function handleEntityNotFound(_0x57892e,_0x5d4166){return function(_0x4d96e4){if(!_0x4d96e4){_0x57892e[_0xf8a6('0x21')](0x194);}return _0x4d96e4;};}function handleError(_0x2e1583,_0x56fffd){_0x56fffd=_0x56fffd||0x1f4;return function(_0x14e081){logger['error'](_0x14e081['stack']);if(_0x14e081['name']){delete _0x14e081[_0xf8a6('0x22')];}_0x2e1583[_0xf8a6('0x14')](_0x56fffd)[_0xf8a6('0x23')](_0x14e081);};}exports[_0xf8a6('0x24')]=function(_0xa0d536,_0x2681a6){var _0x2f5599={},_0x567de7={},_0x522af5={'count':0x0,'rows':[]};var _0x27edb4=_[_0xf8a6('0x25')](db[_0xf8a6('0x26')]['rawAttributes'],function(_0x30fbfd){return{'name':_0x30fbfd[_0xf8a6('0x27')],'type':_0x30fbfd[_0xf8a6('0x28')][_0xf8a6('0x29')]};});_0x567de7[_0xf8a6('0x2a')]=_[_0xf8a6('0x25')](_0x27edb4,_0xf8a6('0x22'));_0x567de7[_0xf8a6('0x2b')]=_[_0xf8a6('0x2c')](_0xa0d536['query']);_0x567de7[_0xf8a6('0x2d')]=_[_0xf8a6('0x2e')](_0x567de7[_0xf8a6('0x2a')],_0x567de7[_0xf8a6('0x2b')]);_0x2f5599[_0xf8a6('0x2f')]=_[_0xf8a6('0x2e')](_0x567de7['model'],qs['fields'](_0xa0d536[_0xf8a6('0x2b')][_0xf8a6('0x30')]));_0x2f5599[_0xf8a6('0x2f')]=_0x2f5599['attributes'][_0xf8a6('0x31')]?_0x2f5599[_0xf8a6('0x2f')]:_0x567de7[_0xf8a6('0x2a')];if(!_0xa0d536['query'][_0xf8a6('0x32')]('nolimit')){_0x2f5599[_0xf8a6('0x18')]=qs[_0xf8a6('0x18')](_0xa0d536['query'][_0xf8a6('0x18')]);_0x2f5599[_0xf8a6('0x16')]=qs[_0xf8a6('0x16')](_0xa0d536['query'][_0xf8a6('0x16')]);}_0x2f5599['order']=qs[_0xf8a6('0x33')](_0xa0d536[_0xf8a6('0x2b')][_0xf8a6('0x33')]);_0x2f5599['where']=qs['filters'](_[_0xf8a6('0x34')](_0xa0d536[_0xf8a6('0x2b')],_0x567de7['filters']),_0x27edb4);if(_0xa0d536[_0xf8a6('0x2b')][_0xf8a6('0x35')]){_0x2f5599[_0xf8a6('0x36')]=_[_0xf8a6('0x37')](_0x2f5599[_0xf8a6('0x36')],{'$or':_[_0xf8a6('0x25')](_0x27edb4,function(_0x370442){if(_0x370442[_0xf8a6('0x28')]!==_0xf8a6('0x38')){var _0x5c431c={};_0x5c431c[_0x370442[_0xf8a6('0x22')]]={'$like':'%'+_0xa0d536[_0xf8a6('0x2b')][_0xf8a6('0x35')]+'%'};return _0x5c431c;}})});}_0x2f5599=_[_0xf8a6('0x37')]({},_0x2f5599,_0xa0d536[_0xf8a6('0x39')]);var _0x8f62fa={'where':_0x2f5599[_0xf8a6('0x36')]};return db[_0xf8a6('0x26')]['count'](_0x8f62fa)[_0xf8a6('0x20')](function(_0x17438d){_0x522af5[_0xf8a6('0x19')]=_0x17438d;if(_0xa0d536['query'][_0xf8a6('0x3a')]){_0x2f5599[_0xf8a6('0x3b')]=[{'all':!![]}];}return db[_0xf8a6('0x26')][_0xf8a6('0x3c')](_0x2f5599);})['then'](function(_0x332a90){_0x522af5[_0xf8a6('0x3d')]=_0x332a90;return _0x522af5;})['then'](respondWithFilteredResult(_0x2681a6,_0x2f5599))[_0xf8a6('0x3e')](handleError(_0x2681a6,null));};exports[_0xf8a6('0x3f')]=function(_0x4ab49b,_0x2a3e4f){var _0x289c5f={'raw':!![],'where':{'id':_0x4ab49b[_0xf8a6('0x40')]['id']}},_0x4283fc={};_0x4283fc[_0xf8a6('0x2a')]=_[_0xf8a6('0x2c')](db[_0xf8a6('0x26')]['rawAttributes']);_0x4283fc['query']=_['keys'](_0x4ab49b['query']);_0x4283fc[_0xf8a6('0x2d')]=_[_0xf8a6('0x2e')](_0x4283fc[_0xf8a6('0x2a')],_0x4283fc[_0xf8a6('0x2b')]);_0x289c5f[_0xf8a6('0x2f')]=_[_0xf8a6('0x2e')](_0x4283fc[_0xf8a6('0x2a')],qs[_0xf8a6('0x30')](_0x4ab49b['query'][_0xf8a6('0x30')]));_0x289c5f[_0xf8a6('0x2f')]=_0x289c5f[_0xf8a6('0x2f')][_0xf8a6('0x31')]?_0x289c5f[_0xf8a6('0x2f')]:_0x4283fc['model'];if(_0x4ab49b[_0xf8a6('0x2b')][_0xf8a6('0x3a')]){_0x289c5f[_0xf8a6('0x3b')]=[{'all':!![]}];}_0x289c5f=_[_0xf8a6('0x37')]({},_0x289c5f,_0x4ab49b[_0xf8a6('0x39')]);return db['SmsApplication'][_0xf8a6('0x41')](_0x289c5f)[_0xf8a6('0x20')](handleEntityNotFound(_0x2a3e4f,null))[_0xf8a6('0x20')](respondWithResult(_0x2a3e4f,null))[_0xf8a6('0x3e')](handleError(_0x2a3e4f,null));};exports[_0xf8a6('0x42')]=function(_0xbe3b83,_0x327117){return db[_0xf8a6('0x26')][_0xf8a6('0x42')](_0xbe3b83[_0xf8a6('0x43')],{})[_0xf8a6('0x20')](respondWithResult(_0x327117,0xc9))[_0xf8a6('0x3e')](handleError(_0x327117,null));};exports['update']=function(_0x3e3947,_0x4951ca){if(_0x3e3947['body']['id']){delete _0x3e3947['body']['id'];}return db[_0xf8a6('0x26')][_0xf8a6('0x41')]({'where':{'id':_0x3e3947[_0xf8a6('0x40')]['id']}})[_0xf8a6('0x20')](handleEntityNotFound(_0x4951ca,null))[_0xf8a6('0x20')](saveUpdates(_0x3e3947[_0xf8a6('0x43')],null))[_0xf8a6('0x20')](respondWithResult(_0x4951ca,null))[_0xf8a6('0x3e')](handleError(_0x4951ca,null));};exports[_0xf8a6('0x1f')]=function(_0x5192f9,_0x23e5eb){return db['SmsApplication'][_0xf8a6('0x41')]({'where':{'id':_0x5192f9[_0xf8a6('0x40')]['id']}})[_0xf8a6('0x20')](handleEntityNotFound(_0x23e5eb,null))['then'](removeEntity(_0x23e5eb,null))[_0xf8a6('0x3e')](handleError(_0x23e5eb,null));};
\ No newline at end of file
index 9092508..4bcc89b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0aa=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger'];(function(_0xd70515,_0x50cfb3){var _0x1e9a3a=function(_0xbb7d0c){while(--_0xbb7d0c){_0xd70515['push'](_0xd70515['shift']());}};_0x1e9a3a(++_0x50cfb3);}(_0xf0aa,0x16e));var _0xaf0a=function(_0x4bb213,_0xe97108){_0x4bb213=_0x4bb213-0x0;var _0x518991=_0xf0aa[_0x4bb213];return _0x518991;};'use strict';var _=require(_0xaf0a('0x0'));var util=require('util');var logger=require(_0xaf0a('0x1'))(_0xaf0a('0x2'));var moment=require(_0xaf0a('0x3'));var BPromise=require(_0xaf0a('0x4'));var rp=require(_0xaf0a('0x5'));var fs=require('fs');var path=require(_0xaf0a('0x6'));var rimraf=require(_0xaf0a('0x7'));var config=require(_0xaf0a('0x8'));var attributes=require(_0xaf0a('0x9'));module[_0xaf0a('0xa')]=function(_0x4a000b,_0x3f7dbf){return _0x4a000b[_0xaf0a('0xb')](_0xaf0a('0xc'),attributes,{'tableName':_0xaf0a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xaf0a('0xe'),'collate':_0xaf0a('0xf')});};
\ No newline at end of file
+var _0xe086=['../../config/environment','./smsApplication.attributes','define','SmsApplication','sms_applications','utf8mb4','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x5729e6,_0x3a947b){var _0x32e86b=function(_0x1d2f9e){while(--_0x1d2f9e){_0x5729e6['push'](_0x5729e6['shift']());}};_0x32e86b(++_0x3a947b);}(_0xe086,0x199));var _0x6e08=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe086[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6e08('0x0'));var util=require('util');var logger=require(_0x6e08('0x1'))(_0x6e08('0x2'));var moment=require('moment');var BPromise=require(_0x6e08('0x3'));var rp=require(_0x6e08('0x4'));var fs=require('fs');var path=require(_0x6e08('0x5'));var rimraf=require(_0x6e08('0x6'));var config=require(_0x6e08('0x7'));var attributes=require(_0x6e08('0x8'));module['exports']=function(_0x13cd9d,_0x2ad920){return _0x13cd9d[_0x6e08('0x9')](_0x6e08('0xa'),attributes,{'tableName':_0x6e08('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6e08('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index cc10d99..7df4ae0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x905a=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','error','code','message','SmsApplication,\x20%s,\x20%s','info','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils'];(function(_0xfe115f,_0x27e9fe){var _0x57b607=function(_0x1dbe42){while(--_0x1dbe42){_0xfe115f['push'](_0xfe115f['shift']());}};_0x57b607(++_0x27e9fe);}(_0x905a,0xeb));var _0xa905=function(_0x8d798c,_0x30948e){_0x8d798c=_0x8d798c-0x0;var _0x2dd577=_0x905a[_0x8d798c];return _0x2dd577;};'use strict';var _=require(_0xa905('0x0'));var util=require('util');var moment=require(_0xa905('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa905('0x2'));var db=require(_0xa905('0x3'))['db'];var utils=require(_0xa905('0x4'));var logger=require(_0xa905('0x5'))(_0xa905('0x6'));var config=require(_0xa905('0x7'));var jayson=require(_0xa905('0x8'));var client=jayson[_0xa905('0x9')][_0xa905('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3a0072,_0x18c72e,_0x16ac5b){return new BPromise(function(_0x314e6d,_0x51ae6d){return client[_0xa905('0xb')](_0x3a0072,_0x16ac5b)['then'](function(_0x43eced){logger['info']('SmsApplication,\x20%s,\x20%s',_0x18c72e,_0xa905('0xc'));logger[_0xa905('0xd')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0x18c72e,_0xa905('0xc'),JSON['stringify'](_0x43eced));if(_0x43eced['error']){if(_0x43eced[_0xa905('0xe')][_0xa905('0xf')]===0x1f4){logger['error']('SmsApplication,\x20%s,\x20%s',_0x18c72e,_0x43eced[_0xa905('0xe')][_0xa905('0x10')]);return _0x51ae6d(_0x43eced[_0xa905('0xe')][_0xa905('0x10')]);}logger[_0xa905('0xe')](_0xa905('0x11'),_0x18c72e,_0x43eced['error'][_0xa905('0x10')]);return _0x314e6d(_0x43eced['error'][_0xa905('0x10')]);}else{logger[_0xa905('0x12')]('SmsApplication,\x20%s,\x20%s',_0x18c72e,'request\x20sent');_0x314e6d(_0x43eced['result'][_0xa905('0x10')]);}})[_0xa905('0x13')](function(_0x1d393b){logger[_0xa905('0xe')](_0xa905('0x11'),_0x18c72e,_0x1d393b);_0x51ae6d(_0x1d393b);});});}
\ No newline at end of file
+var _0xcae2=['SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','info'];(function(_0x5d8a0f,_0x36c1da){var _0x19b518=function(_0x205da6){while(--_0x205da6){_0x5d8a0f['push'](_0x5d8a0f['shift']());}};_0x19b518(++_0x36c1da);}(_0xcae2,0x143));var _0x2cae=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcae2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2cae('0x0'));var util=require(_0x2cae('0x1'));var moment=require(_0x2cae('0x2'));var BPromise=require(_0x2cae('0x3'));var rs=require(_0x2cae('0x4'));var fs=require('fs');var Redis=require(_0x2cae('0x5'));var db=require(_0x2cae('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x2cae('0x7'))(_0x2cae('0x8'));var config=require(_0x2cae('0x9'));var jayson=require(_0x2cae('0xa'));var client=jayson['client'][_0x2cae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1feff6,_0x1e1a3d,_0x25b6a2){return new BPromise(function(_0x2e7498,_0x49e1d1){return client['request'](_0x1feff6,_0x25b6a2)['then'](function(_0x49f0d3){logger[_0x2cae('0xc')](_0x2cae('0xd'),_0x1e1a3d,_0x2cae('0xe'));logger[_0x2cae('0xf')](_0x2cae('0x10'),_0x1e1a3d,_0x2cae('0xe'),JSON['stringify'](_0x49f0d3));if(_0x49f0d3[_0x2cae('0x11')]){if(_0x49f0d3['error'][_0x2cae('0x12')]===0x1f4){logger[_0x2cae('0x11')](_0x2cae('0xd'),_0x1e1a3d,_0x49f0d3[_0x2cae('0x11')][_0x2cae('0x13')]);return _0x49e1d1(_0x49f0d3[_0x2cae('0x11')]['message']);}logger[_0x2cae('0x11')]('SmsApplication,\x20%s,\x20%s',_0x1e1a3d,_0x49f0d3[_0x2cae('0x11')][_0x2cae('0x13')]);return _0x2e7498(_0x49f0d3['error'][_0x2cae('0x13')]);}else{logger[_0x2cae('0xc')](_0x2cae('0xd'),_0x1e1a3d,_0x2cae('0xe'));_0x2e7498(_0x49f0d3['result'][_0x2cae('0x13')]);}})[_0x2cae('0x14')](function(_0x4a89e1){logger[_0x2cae('0x11')](_0x2cae('0xd'),_0x1e1a3d,_0x4a89e1);_0x49e1d1(_0x4a89e1);});});}
\ No newline at end of file
index 52ae71c..14431e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0abf=['create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','update','smsinteraction:destroy','destroy','delete','removeTags','exports','multer','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','describe','/:id','show','/:id/messages','download','post'];(function(_0x29d9bf,_0x2056c8){var _0x5a6887=function(_0xc58c72){while(--_0xc58c72){_0x29d9bf['push'](_0x29d9bf['shift']());}};_0x5a6887(++_0x2056c8);}(_0x0abf,0xe8));var _0xf0ab=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0abf[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0xf0ab('0x0'));var util=require('util');var path=require(_0xf0ab('0x1'));var timeout=require(_0xf0ab('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf0ab('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xf0ab('0x4'));var config=require(_0xf0ab('0x5'));var controller=require(_0xf0ab('0x6'));router[_0xf0ab('0x7')]('/',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x9')]);router[_0xf0ab('0x7')]('/describe',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0xa')]);router[_0xf0ab('0x7')](_0xf0ab('0xb'),auth['isAuthenticated'](),controller[_0xf0ab('0xc')]);router[_0xf0ab('0x7')](_0xf0ab('0xd'),auth['isAuthenticated'](),controller['getMessages']);router[_0xf0ab('0x7')]('/:id/download',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0xe')]);router[_0xf0ab('0xf')]('/',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x10')]);router[_0xf0ab('0xf')](_0xf0ab('0xd'),auth['isAuthenticated'](),controller[_0xf0ab('0x11')]);router[_0xf0ab('0xf')](_0xf0ab('0x12'),auth[_0xf0ab('0x8')](),interaction[_0xf0ab('0x13')](_0xf0ab('0x14'),_0xf0ab('0x15')),controller[_0xf0ab('0x16')]);router[_0xf0ab('0x17')](_0xf0ab('0xb'),auth[_0xf0ab('0x8')](),interaction[_0xf0ab('0x13')](_0xf0ab('0x14'),_0xf0ab('0x18')),controller[_0xf0ab('0x19')]);router['delete'](_0xf0ab('0xb'),auth[_0xf0ab('0x8')](),interaction[_0xf0ab('0x13')](_0xf0ab('0x14'),_0xf0ab('0x1a')),controller[_0xf0ab('0x1b')]);router[_0xf0ab('0x1c')](_0xf0ab('0x12'),auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x1d')]);module[_0xf0ab('0x1e')]=router;
\ No newline at end of file
+var _0xb688=['destroy','/:id/tags','removeTags','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','smsinteraction:addtags','addTags','put','tracked','smsinteraction:update','update','delete','sms'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xb688,0xcf));var _0x8b68=function(_0x34b299,_0x2b9c4f){_0x34b299=_0x34b299-0x0;var _0x5d9ad3=_0xb688[_0x34b299];return _0x5d9ad3;};'use strict';var multer=require('multer');var util=require(_0x8b68('0x0'));var path=require(_0x8b68('0x1'));var timeout=require(_0x8b68('0x2'));var express=require(_0x8b68('0x3'));var router=express[_0x8b68('0x4')]();var fs_extra=require(_0x8b68('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8b68('0x6'));var config=require(_0x8b68('0x7'));var controller=require(_0x8b68('0x8'));router[_0x8b68('0x9')]('/',auth['isAuthenticated'](),controller[_0x8b68('0xa')]);router['get'](_0x8b68('0xb'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xd')]);router[_0x8b68('0x9')](_0x8b68('0xe'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xf')]);router[_0x8b68('0x9')](_0x8b68('0x10'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x11')]);router[_0x8b68('0x9')](_0x8b68('0x12'),auth['isAuthenticated'](),controller[_0x8b68('0x13')]);router[_0x8b68('0x14')]('/',auth[_0x8b68('0xc')](),controller[_0x8b68('0x15')]);router[_0x8b68('0x14')](_0x8b68('0x10'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x16')]);router[_0x8b68('0x14')]('/:id/tags',auth[_0x8b68('0xc')](),interaction['tracked']('sms',_0x8b68('0x17')),controller[_0x8b68('0x18')]);router[_0x8b68('0x19')]('/:id',auth['isAuthenticated'](),interaction[_0x8b68('0x1a')]('sms',_0x8b68('0x1b')),controller[_0x8b68('0x1c')]);router[_0x8b68('0x1d')](_0x8b68('0xe'),auth['isAuthenticated'](),interaction[_0x8b68('0x1a')](_0x8b68('0x1e'),'smsinteraction:destroy'),controller[_0x8b68('0x1f')]);router[_0x8b68('0x1d')](_0x8b68('0x20'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x21')]);module['exports']=router;
\ No newline at end of file
index eb1e746..8fc3691 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2070=['DATE','STRING','out','exports','BOOLEAN'];(function(_0xd60c2c,_0x1f76d6){var _0x55730b=function(_0x190d51){while(--_0x190d51){_0xd60c2c['push'](_0xd60c2c['shift']());}};_0x55730b(++_0x1f76d6);}(_0x2070,0x1a2));var _0x0207=function(_0x46530f,_0x12134){_0x46530f=_0x46530f-0x0;var _0x316fdb=_0x2070[_0x46530f];return _0x316fdb;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x0207('0x0')]={'closed':{'type':Sequelize[_0x0207('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x0207('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x0207('0x3')]},'thirdDisposition':{'type':Sequelize[_0x0207('0x3')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x0207('0x3')]},'read1stAt':{'type':Sequelize[_0x0207('0x2')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x0207('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x0207('0x4')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x0207('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0xe5e0=['STRING','ENUM','out','sequelize','moment','exports','BOOLEAN','DATE'];(function(_0x19c6e3,_0x3acce4){var _0xc944c=function(_0x440a26){while(--_0x440a26){_0x19c6e3['push'](_0x19c6e3['shift']());}};_0xc944c(++_0x3acce4);}(_0xe5e0,0x123));var _0x0e5e=function(_0x46099f,_0x37e8af){_0x46099f=_0x46099f-0x0;var _0x5c706f=_0xe5e0[_0x46099f];return _0x5c706f;};'use strict';var Sequelize=require(_0x0e5e('0x0'));var moment=require(_0x0e5e('0x1'));module[_0x0e5e('0x2')]={'closed':{'type':Sequelize[_0x0e5e('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x0e5e('0x4')]},'disposition':{'type':Sequelize[_0x0e5e('0x5')]},'secondDisposition':{'type':Sequelize[_0x0e5e('0x5')]},'thirdDisposition':{'type':Sequelize[_0x0e5e('0x5')]},'note':{'type':Sequelize[_0x0e5e('0x5')]},'phone':{'type':Sequelize[_0x0e5e('0x5')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x0e5e('0x6')]('in',_0x0e5e('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x0e5e('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x0e5e('0x3')],'defaultValue':![]}};
\ No newline at end of file
index a29e84f..e9454f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7a6=['../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','error','name','send','Users','map','fullname','Tags','split','forEach','push','then','catch','index','SmsInteraction','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','select','field','from','tools_tags','u.id','u.fullname','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','unreadMessages','value','`\x20=\x200','having','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','UserId','text','body','some','compact','SmsAccountId','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','i.SmsAccountId\x20IN\x20?','role','agent','sequelize','toString','keyBy','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','rows','params','includeAll','include','options','create','describe','addMessage','ids','getMessages','findOne','SmsMessage','rawAttributes','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','merge','findAll','addTags','spread','color','emit','smsInteractionTags:save','removeTags','unix','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','CmContact','firstName','lastName','direction','secret','SmsAccount','Account','mkdirSync','Sms','Owner','closed','disposition','Messages','out','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','log','err','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa7a6,0x1d2));var _0x6a7a=function(_0x248afa,_0xc057df){_0x248afa=_0x248afa-0x0;var _0x26d2d2=_0xa7a6[_0x248afa];return _0x26d2d2;};'use strict';var emlformat=require(_0x6a7a('0x0'));var rimraf=require(_0x6a7a('0x1'));var zipdir=require(_0x6a7a('0x2'));var jsonpatch=require(_0x6a7a('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6a7a('0x4'));var Mustache=require(_0x6a7a('0x5'));var util=require(_0x6a7a('0x6'));var path=require(_0x6a7a('0x7'));var sox=require(_0x6a7a('0x8'));var csv=require(_0x6a7a('0x9'));var ejs=require(_0x6a7a('0xa'));var fs=require('fs');var fs_extra=require(_0x6a7a('0xb'));var _=require(_0x6a7a('0xc'));var squel=require(_0x6a7a('0xd'));var crypto=require(_0x6a7a('0xe'));var jsforce=require(_0x6a7a('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x6a7a('0x9'));var querystring=require(_0x6a7a('0x10'));var Papa=require(_0x6a7a('0x11'));var Redis=require(_0x6a7a('0x12'));var authService=require(_0x6a7a('0x13'));var qs=require(_0x6a7a('0x14'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x6a7a('0x15'));var hardwareService=require(_0x6a7a('0x16'));var logger=require(_0x6a7a('0x17'))(_0x6a7a('0x18'));var utils=require(_0x6a7a('0x19'));var config=require(_0x6a7a('0x1a'));var licenseUtil=require(_0x6a7a('0x1b'));var db=require(_0x6a7a('0x1c'))['db'];config[_0x6a7a('0x1d')]=_[_0x6a7a('0x1e')](config['redis'],{'host':_0x6a7a('0x1f'),'port':0x18eb});var socket=require(_0x6a7a('0x20'))(new Redis(config[_0x6a7a('0x1d')]));require(_0x6a7a('0x21'))[_0x6a7a('0x22')](socket);function respondWithStatusCode(_0x2d70be,_0x4100d6){_0x4100d6=_0x4100d6||0xcc;return function(_0x5c472e){if(_0x5c472e){return _0x2d70be[_0x6a7a('0x23')](_0x4100d6);}return _0x2d70be[_0x6a7a('0x24')](_0x4100d6)[_0x6a7a('0x25')]();};}function respondWithResult(_0x5e943a,_0x5a2791){_0x5a2791=_0x5a2791||0xc8;return function(_0x1bca30){if(_0x1bca30){return _0x5e943a['status'](_0x5a2791)[_0x6a7a('0x26')](_0x1bca30);}};}function respondWithFilteredResult(_0x52472b,_0x34e55a){return function(_0xcd6ee7){if(_0xcd6ee7){var _0x41267b=typeof _0x34e55a[_0x6a7a('0x27')]===_0x6a7a('0x28')&&typeof _0x34e55a['limit']===_0x6a7a('0x28');var _0x46efdb=_0xcd6ee7[_0x6a7a('0x29')];var _0x2afe56=_0x41267b?0x0:_0x34e55a['offset'];var _0x34f2c4=_0x41267b?_0xcd6ee7['count']:_0x34e55a[_0x6a7a('0x27')]+_0x34e55a[_0x6a7a('0x2a')];var _0x19af14;if(_0x34f2c4>=_0x46efdb){_0x34f2c4=_0x46efdb;_0x19af14=0xc8;}else{_0x19af14=0xce;}_0x52472b['status'](_0x19af14);return _0x52472b[_0x6a7a('0x2b')](_0x6a7a('0x2c'),_0x2afe56+'-'+_0x34f2c4+'/'+_0x46efdb)[_0x6a7a('0x26')](_0xcd6ee7);}return null;};}function patchUpdates(_0x33aaa8){return function(_0x1539a4){try{jsonpatch[_0x6a7a('0x2d')](_0x1539a4,_0x33aaa8,!![]);}catch(_0x1a7ab4){return BPromise[_0x6a7a('0x2e')](_0x1a7ab4);}return _0x1539a4[_0x6a7a('0x2f')]();};}function saveUpdates(_0x532526,_0xae5e31){return function(_0x5779e2){if(_0x5779e2){return _0x5779e2[_0x6a7a('0x30')](_0x532526)['then'](function(_0x333166){return _0x333166;});}return null;};}function removeEntity(_0x5c8912,_0x27ae50){return function(_0x47dd73){if(_0x47dd73){return _0x47dd73[_0x6a7a('0x31')]()['then'](function(){_0x5c8912['status'](0xcc)[_0x6a7a('0x25')]();});}};}function handleEntityNotFound(_0x88bae6,_0x14b975){return function(_0x109c31){if(!_0x109c31){_0x88bae6[_0x6a7a('0x23')](0x194);}return _0x109c31;};}function handleError(_0x515138,_0xfedc59){_0xfedc59=_0xfedc59||0x1f4;return function(_0x3b4f4e){logger[_0x6a7a('0x32')](_0x3b4f4e['stack']);if(_0x3b4f4e[_0x6a7a('0x33')]){delete _0x3b4f4e[_0x6a7a('0x33')];}_0x515138[_0x6a7a('0x24')](_0xfedc59)[_0x6a7a('0x34')](_0x3b4f4e);};}function getInteractionUsers(_0x12ee4f,_0x4f7917){return new BPromise(function(_0x5d7e4d,_0x598921){try{if(_0x4f7917[_0x12ee4f['id']]){_0x12ee4f[_0x6a7a('0x35')]=_[_0x6a7a('0x36')](_0x4f7917[_0x12ee4f['id']],function(_0xd8a6d8){return{'id':_0xd8a6d8['id'],'fullname':_0xd8a6d8[_0x6a7a('0x37')]};});}}catch(_0x4704e0){_0x598921(_0x4704e0);}_0x5d7e4d(_0x12ee4f);});}function getInteractionTags(_0x51f432,_0x545e2f){return new BPromise(function(_0x4e784f,_0x1acf10){try{if(_0x51f432['TagIds']){_0x51f432[_0x6a7a('0x38')]=[];_0x51f432['TagIds'][_0x6a7a('0x39')](',')[_0x6a7a('0x3a')](function(_0x2c9f70){_0x51f432[_0x6a7a('0x38')][_0x6a7a('0x3b')](_0x545e2f[_0x2c9f70]);});}delete _0x51f432['TagIds'];}catch(_0x3a538d){_0x1acf10(_0x3a538d);}_0x4e784f(_0x51f432);});}function updateSmsInteraction(_0x3ac8c2,_0x1fd52c,_0x2e76b4){return new BPromise(function(_0x4c04c6,_0x4c1f90){return getInteractionUsers(_0x3ac8c2,_0x2e76b4)[_0x6a7a('0x3c')](function(_0x342535){return getInteractionTags(_0x342535,_0x1fd52c);})[_0x6a7a('0x3c')](function(_0x217d1a){_0x4c04c6(_0x217d1a);})[_0x6a7a('0x3d')](function(_0x558bc0){_0x4c1f90(_0x558bc0);});});}exports[_0x6a7a('0x3e')]=function(_0x1bb3b5,_0x2602d4){var _0x32a64b={},_0x46d92c={},_0x560d3b={'count':0x0,'rows':[]};var _0x5504aa=_[_0x6a7a('0x36')](db[_0x6a7a('0x3f')]['rawAttributes'],function(_0x4e0c31){return{'name':_0x4e0c31[_0x6a7a('0x40')],'type':_0x4e0c31[_0x6a7a('0x41')][_0x6a7a('0x42')]};});_0x46d92c[_0x6a7a('0x43')]=_[_0x6a7a('0x36')](_0x5504aa,_0x6a7a('0x33'));_0x46d92c['query']=_[_0x6a7a('0x44')](_0x1bb3b5[_0x6a7a('0x45')]);_0x46d92c['filters']=_[_0x6a7a('0x46')](_0x46d92c[_0x6a7a('0x43')],_0x46d92c['query']);_0x32a64b[_0x6a7a('0x47')]=_[_0x6a7a('0x46')](_0x46d92c['model'],qs['fields'](_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x48')]));_0x32a64b[_0x6a7a('0x47')]=_0x32a64b[_0x6a7a('0x47')][_0x6a7a('0x49')]?_0x32a64b[_0x6a7a('0x47')]:_0x46d92c[_0x6a7a('0x43')];if(!_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x4a')]('nolimit')){_0x32a64b[_0x6a7a('0x2a')]=qs[_0x6a7a('0x2a')](_0x1bb3b5['query'][_0x6a7a('0x2a')]);_0x32a64b[_0x6a7a('0x27')]=qs[_0x6a7a('0x27')](_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x27')]);}_0x32a64b[_0x6a7a('0x4b')]=qs[_0x6a7a('0x4c')](_0x1bb3b5['query'][_0x6a7a('0x4c')]);_0x32a64b[_0x6a7a('0x4d')]=qs[_0x6a7a('0x4e')](_[_0x6a7a('0x4f')](_0x1bb3b5[_0x6a7a('0x45')],_0x46d92c[_0x6a7a('0x4e')]),_0x5504aa);var _0x168596=[];var _0xbadae0=squel[_0x6a7a('0x50')]()[_0x6a7a('0x51')]('id')[_0x6a7a('0x51')](_0x6a7a('0x33'))[_0x6a7a('0x51')]('color')[_0x6a7a('0x52')](_0x6a7a('0x53'));var _0x26ad58=squel[_0x6a7a('0x50')]()[_0x6a7a('0x51')](_0x6a7a('0x54'))['field'](_0x6a7a('0x55'))[_0x6a7a('0x51')]('ui.SmsInteractionId')[_0x6a7a('0x52')](_0x6a7a('0x56'),'ui')[_0x6a7a('0x57')](_0x6a7a('0x58'),'u',_0x6a7a('0x59'));var _0x25f624=squel[_0x6a7a('0x50')]()[_0x6a7a('0x52')](_0x6a7a('0x5a'),'i')[_0x6a7a('0x57')](_0x6a7a('0x5b'),'c',_0x6a7a('0x5c'))[_0x6a7a('0x57')](_0x6a7a('0x58'),'o',_0x6a7a('0x5d'))[_0x6a7a('0x57')](_0x6a7a('0x5e'),'a',_0x6a7a('0x5f'))[_0x6a7a('0x57')](_0x6a7a('0x60'),'me',_0x6a7a('0x61'))[_0x6a7a('0x57')]('sms_interaction_has_tags','it',_0x6a7a('0x62'))[_0x6a7a('0x57')](_0x6a7a('0x53'),'t',_0x6a7a('0x63'));var _0x34bc3a=squel[_0x6a7a('0x64')]();var _0xe29709=[];var _0x4dab7a=squel[_0x6a7a('0x64')]();var _0x4ae404;if(_0x1bb3b5['query'][_0x6a7a('0x65')]){_0x4ae404=as[_0x6a7a('0x66')](_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x65')]);var _0x5561c7=_0x4ae404[_0x6a7a('0x67')];for(var _0x5daa3a=0x0;_0x5daa3a<_0x4ae404[_0x6a7a('0x68')][_0x6a7a('0x49')];_0x5daa3a++){var _0x524f3c=_0x4ae404['conditions'][_0x5daa3a];var _0x27db25='i';var _0x56ebd5=_['find'](_0x5504aa,[_0x6a7a('0x33'),_0x524f3c[_0x6a7a('0x51')]]);if(!_0x56ebd5){switch(_0x524f3c[_0x6a7a('0x51')]){case _0x6a7a('0x69'):if(_0x524f3c[_0x6a7a('0x6a')]==0x1){_0x25f624['having']('`'+_0x524f3c[_0x6a7a('0x51')]+_0x6a7a('0x6b'));}else{_0x25f624[_0x6a7a('0x6c')]('`'+_0x524f3c[_0x6a7a('0x51')]+'`\x20>\x200');}break;case _0x6a7a('0x6d'):if(_0x524f3c[_0x6a7a('0x6e')]===_0x6a7a('0x6f')){if(_0x524f3c[_0x6a7a('0x6a')][_0x6a7a('0x39')]('\x20')[_0x6a7a('0x49')]>0x1){_0x34bc3a[_0x5561c7](_0x6a7a('0x70'),qs[_0x6a7a('0x71')](_0x524f3c[_0x6a7a('0x6a')]),null);}else{var _0x4733e5='%'+_0x524f3c[_0x6a7a('0x6a')]+'%';_0x34bc3a[_0x5561c7]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x4733e5,_0x4733e5,_0x4733e5);}}else{_0x56ebd5=_['find'](_0x5504aa,[_0x6a7a('0x33'),_0x6a7a('0x72')]);_0x524f3c[_0x6a7a('0x51')]=_0x6a7a('0x72');_0x36b431=as[_0x6a7a('0x73')](_0x27db25,_0x56ebd5['type'],_0x524f3c);_0x34bc3a[_0x5561c7](_0x36b431['text'],_0x36b431[_0x6a7a('0x6a')][_0x6a7a('0x74')],_0x36b431['value'][_0x6a7a('0x25')]);}break;case'Tag':var _0x2886bc=_0x524f3c[_0x6a7a('0x6a')][_0x6a7a('0x39')](',')[_0x6a7a('0x36')](function(_0x4d20e4){return Number(_0x4d20e4);});_0x2886bc[_0x6a7a('0x3a')](function(_0x1441dc){_0x4dab7a['or'](_0x6a7a('0x75'),'%,'+_0x1441dc+',%');});_0xe29709=_[_0x6a7a('0x76')](_0xe29709,_0x2886bc);break;case _0x6a7a('0x77'):if(_0x524f3c[_0x6a7a('0x6e')]===_0x6a7a('0x6f')){_0x34bc3a[_0x5561c7](_0x6a7a('0x78'),'%'+_0x524f3c[_0x6a7a('0x6a')]+'%',null);}else{_0x56ebd5=_[_0x6a7a('0x79')](_0x5504aa,[_0x6a7a('0x33'),_0x6a7a('0x7a')]);_0x524f3c['field']=_0x6a7a('0x7a');_0x36b431=as[_0x6a7a('0x73')](_0x27db25,_0x56ebd5[_0x6a7a('0x41')],_0x524f3c);_0x34bc3a[_0x5561c7](_0x36b431[_0x6a7a('0x7b')],_0x36b431[_0x6a7a('0x6a')][_0x6a7a('0x74')],_0x36b431[_0x6a7a('0x6a')][_0x6a7a('0x25')]);}break;case _0x6a7a('0x7c'):_0x36b431=as['buildExpression']('me',null,_0x524f3c);_0x34bc3a[_0x5561c7](_0x36b431[_0x6a7a('0x7b')],_0x36b431['value'][_0x6a7a('0x74')],_0x36b431[_0x6a7a('0x6a')][_0x6a7a('0x25')]);break;}}else{var _0x36b431=as[_0x6a7a('0x73')](_0x27db25,_0x56ebd5['type'],_0x524f3c);_0x34bc3a[_0x5561c7](_0x36b431[_0x6a7a('0x7b')],_0x36b431[_0x6a7a('0x6a')][_0x6a7a('0x74')],_0x36b431[_0x6a7a('0x6a')][_0x6a7a('0x25')]);}}}else{var _0x240204=_(_0x1bb3b5[_0x6a7a('0x45')])['keys']()[_0x6a7a('0x36')](function(_0x5a6cd7){return _[_0x6a7a('0x7d')](_0x5504aa,[_0x6a7a('0x33'),_0x5a6cd7])?_0x5a6cd7:undefined;})[_0x6a7a('0x7e')]()[_0x6a7a('0x6a')]();if(!_['isEmpty'](_0x240204)){_0x240204[_0x6a7a('0x3a')](function(_0x37066a){if(_0x37066a===_0x6a7a('0x7f')){_0x25f624[_0x6a7a('0x4d')]('i.SmsAccountId\x20IN\x20?',[][_0x6a7a('0x80')](_0x1bb3b5[_0x6a7a('0x45')][_0x37066a]));}else if(_0x37066a===_0x6a7a('0x81')){var _0x4dc723=JSON[_0x6a7a('0x82')](_0x1bb3b5['query'][_0x37066a])[_0x6a7a('0x83')];var _0x19a1f2=JSON[_0x6a7a('0x82')](_0x1bb3b5[_0x6a7a('0x45')][_0x37066a])[_0x6a7a('0x84')];_0x25f624[_0x6a7a('0x4d')](_0x6a7a('0x85'),_0x4dc723,_0x19a1f2);}else{if(_0x1bb3b5[_0x6a7a('0x45')][_0x37066a]===_0x6a7a('0x86')){_0x25f624[_0x6a7a('0x4d')]('i.'+_0x37066a+_0x6a7a('0x87'));}else{_0x25f624[_0x6a7a('0x4d')]('i.'+_0x37066a+_0x6a7a('0x88'),_0x1bb3b5[_0x6a7a('0x45')][_0x37066a]);}}});}if(_0x1bb3b5[_0x6a7a('0x45')]['read']){if(_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x89')]==0x1){_0x25f624['having'](_0x6a7a('0x8a'));}else{_0x25f624[_0x6a7a('0x6c')](_0x6a7a('0x8b'));}}if(_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x8c')]){_0xe29709=_[_0x6a7a('0x8d')](_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x8c')])?_0x1bb3b5['query'][_0x6a7a('0x8c')]:new Array(_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x8c')]);_0xe29709[_0x6a7a('0x3a')](function(_0x2c6893){_0x4dab7a['or'](_0x6a7a('0x75'),'%,'+_0x2c6893+',%');});}if(_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x8e')]){var _0x23446a=_0x1bb3b5[_0x6a7a('0x45')]['filter'][_0x6a7a('0x8f')]('\x5c','\x5c\x5c')[_0x6a7a('0x8f')](/'/g,'\x27\x27');if(qs[_0x6a7a('0x90')](_0x23446a)){_0x34bc3a['or'](_0x6a7a('0x91'),_0x23446a+'%')['or'](_0x6a7a('0x92'),_0x23446a+'%');}else{_0x34bc3a['or'](_0x6a7a('0x93'),qs[_0x6a7a('0x71')](_0x23446a))['or'](_0x6a7a('0x94'),_0x23446a+'%');}}}_0x25f624[_0x6a7a('0x4d')](_0x34bc3a);_0x25f624['group']('i.id');var _0x6f4129={'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]};var _0x464586=_0x25f624[_0x6a7a('0x95')]();_0x464586[_0x6a7a('0x51')](_0x6a7a('0x96'));_0x464586[_0x6a7a('0x51')](_0x6a7a('0x97'),'unreadMessages');if(_0x32a64b[_0x6a7a('0x4b')]){_0x32a64b[_0x6a7a('0x4b')][_0x6a7a('0x3a')](function(_0x4dfb41){var _0x1f6379=_0x4dfb41[0x0]==='contactName'?_0x4dfb41[0x0]:'i.'+_0x4dfb41[0x0];_0x25f624[_0x6a7a('0x4b')](_0x1f6379,_0x4dfb41[0x1]===_0x6a7a('0x98')?![]:!![]);});}if(!_[_0x6a7a('0x99')](_0xe29709)){_0x25f624[_0x6a7a('0x6c')](_0x4dab7a);_0x464586['where'](_0x6a7a('0x9a'),_0xe29709);}BPromise[_0x6a7a('0x9b')]()[_0x6a7a('0x3c')](function(){if(!_0x4ae404){if(_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x7f')])return;_0x464586['where']('i.SmsAccountId\x20IS\x20NOT\x20NULL');_0x25f624[_0x6a7a('0x4d')](_0x6a7a('0x9c'));return;}if(_0x1bb3b5['user']['role']!=='agent')return;return _0x1bb3b5[_0x6a7a('0x9d')][_0x6a7a('0x9e')]({'attributes':['id'],'raw':!![]})['then'](function(_0x51e377){if(_[_0x6a7a('0x99')](_0x51e377)){_0x464586[_0x6a7a('0x4d')](_0x6a7a('0x9f'));_0x25f624[_0x6a7a('0x4d')](_0x6a7a('0x9f'));}else{_0x464586[_0x6a7a('0x4d')](_0x6a7a('0xa0'),_[_0x6a7a('0x36')](_0x51e377,'id'));_0x25f624[_0x6a7a('0x4d')](_0x6a7a('0xa0'),_[_0x6a7a('0x36')](_0x51e377,'id'));}});})[_0x6a7a('0x3c')](function(){if(_0x1bb3b5[_0x6a7a('0x9d')][_0x6a7a('0xa1')]===_0x6a7a('0xa2')&&!_0x4ae404&&!_0x1bb3b5[_0x6a7a('0x45')][_0x6a7a('0x7f')])return[];return db[_0x6a7a('0xa3')][_0x6a7a('0x45')](_0x464586[_0x6a7a('0xa4')](),_0x6f4129);})[_0x6a7a('0x3c')](function(_0xec6df0){_0x560d3b[_0x6a7a('0x29')]=_0xec6df0[_0x6a7a('0x49')];if(_0x560d3b[_0x6a7a('0x29')]===0x0)return[];return db[_0x6a7a('0xa3')]['query'](_0xbadae0[_0x6a7a('0xa4')](),_0x6f4129)[_0x6a7a('0x3c')](function(_0x94e2f9){_0x168596=_[_0x6a7a('0xa5')](_0x94e2f9,'id');_0x6f4129=_['merge'](_0x6f4129,{'model':db[_0x6a7a('0x3f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1bb3b5[_0x6a7a('0x45')]['fields']){_0x32a64b['attributes'][_0x6a7a('0x3a')](function(_0x7af228){_0x25f624[_0x6a7a('0x51')]('i.'+_0x7af228);});}else{_0x25f624['field'](_0x6a7a('0x97'),_0x6a7a('0x69'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xa6'),_0x6a7a('0xa7'));_0x25f624[_0x6a7a('0x51')]('a.mandatoryDisposition',_0x6a7a('0xa8'));_0x25f624['field'](_0x6a7a('0xa9'),'contactName');_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xaa'));_0x25f624[_0x6a7a('0x51')]('c.firstName','Contact.firstName');_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xab'),'Contact.lastName');_0x25f624[_0x6a7a('0x51')]('c.email',_0x6a7a('0xac'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xad'),_0x6a7a('0xae'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xaf'),_0x6a7a('0xb0'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xb1'),_0x6a7a('0xb2'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xb3'),_0x6a7a('0xb4'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xb5'),_0x6a7a('0xb6'));_0x25f624[_0x6a7a('0x51')](_0x6a7a('0xb7'),'TagIds');}if(_0x32a64b[_0x6a7a('0x2a')])_0x25f624[_0x6a7a('0x2a')](_0x32a64b['limit']);if(_0x32a64b[_0x6a7a('0x27')])_0x25f624[_0x6a7a('0x27')](_0x32a64b[_0x6a7a('0x27')]);return db['sequelize'][_0x6a7a('0x45')](_0x25f624['toString'](),_0x6f4129);})['then'](function(_0x33cc45){if(_0x33cc45[_0x6a7a('0x49')]>0x0)_0x26ad58[_0x6a7a('0x4d')](_0x6a7a('0xb8'),_[_0x6a7a('0x36')](_0x33cc45,'id'));return db[_0x6a7a('0xa3')][_0x6a7a('0x45')](_0x26ad58['toString'](),_0x6f4129)[_0x6a7a('0x3c')](function(_0x3799cc){var _0x481477=_[_0x6a7a('0xb9')](_0x3799cc,_0x6a7a('0xba'));var _0x351a08=[];_0x33cc45[_0x6a7a('0x3a')](function(_0x5d3d69){_0x351a08[_0x6a7a('0x3b')](updateSmsInteraction(_0x5d3d69,_0x168596,_0x481477));});return BPromise[_0x6a7a('0xbb')](_0x351a08);});});})['then'](function(_0x3b8ea5){_0x560d3b[_0x6a7a('0xbc')]=_0x3b8ea5;return _0x560d3b;})[_0x6a7a('0x3c')](respondWithFilteredResult(_0x2602d4,_0x32a64b))['catch'](handleError(_0x2602d4,null));};exports['show']=function(_0xb5c1da,_0x262211){var _0x23ee07={'raw':![],'where':{'id':_0xb5c1da[_0x6a7a('0xbd')]['id']}},_0x3b186d={};_0x3b186d[_0x6a7a('0x43')]=_['keys'](db[_0x6a7a('0x3f')]['rawAttributes']);_0x3b186d[_0x6a7a('0x45')]=_[_0x6a7a('0x44')](_0xb5c1da['query']);_0x3b186d[_0x6a7a('0x4e')]=_[_0x6a7a('0x46')](_0x3b186d[_0x6a7a('0x43')],_0x3b186d[_0x6a7a('0x45')]);_0x23ee07['attributes']=_[_0x6a7a('0x46')](_0x3b186d['model'],qs[_0x6a7a('0x48')](_0xb5c1da['query'][_0x6a7a('0x48')]));_0x23ee07[_0x6a7a('0x47')]=_0x23ee07[_0x6a7a('0x47')][_0x6a7a('0x49')]?_0x23ee07[_0x6a7a('0x47')]:_0x3b186d[_0x6a7a('0x43')];if(_0xb5c1da[_0x6a7a('0x45')][_0x6a7a('0xbe')]){_0x23ee07[_0x6a7a('0xbf')]=[{'all':!![]}];}_0x23ee07=_['merge']({},_0x23ee07,_0xb5c1da[_0x6a7a('0xc0')]);return db[_0x6a7a('0x3f')][_0x6a7a('0x79')](_0x23ee07)[_0x6a7a('0x3c')](handleEntityNotFound(_0x262211,null))[_0x6a7a('0x3c')](respondWithResult(_0x262211,null))['catch'](handleError(_0x262211,null));};exports[_0x6a7a('0xc1')]=function(_0x3bdea5,_0x3ccf75){return db[_0x6a7a('0x3f')]['create'](_0x3bdea5[_0x6a7a('0x7c')],{})[_0x6a7a('0x3c')](respondWithResult(_0x3ccf75,0xc9))['catch'](handleError(_0x3ccf75,null));};exports['update']=function(_0x15a348,_0x58d31c){if(_0x15a348[_0x6a7a('0x7c')]['id']){delete _0x15a348[_0x6a7a('0x7c')]['id'];}return db[_0x6a7a('0x3f')]['find']({'where':{'id':_0x15a348[_0x6a7a('0xbd')]['id']}})['then'](handleEntityNotFound(_0x58d31c,null))[_0x6a7a('0x3c')](saveUpdates(_0x15a348[_0x6a7a('0x7c')],null))[_0x6a7a('0x3c')](respondWithResult(_0x58d31c,null))[_0x6a7a('0x3d')](handleError(_0x58d31c,null));};exports['destroy']=function(_0x105c39,_0x58a15b){return db[_0x6a7a('0x3f')][_0x6a7a('0x79')]({'where':{'id':_0x105c39[_0x6a7a('0xbd')]['id']}})[_0x6a7a('0x3c')](handleEntityNotFound(_0x58a15b,null))[_0x6a7a('0x3c')](removeEntity(_0x58a15b,null))['catch'](handleError(_0x58a15b,null));};exports[_0x6a7a('0xc2')]=function(_0x7efee8,_0x18eb5b){return db[_0x6a7a('0x3f')]['describe']()[_0x6a7a('0x3c')](respondWithResult(_0x18eb5b,null))[_0x6a7a('0x3d')](handleError(_0x18eb5b,null));};exports['addMessage']=function(_0x552b09,_0x202d6a,_0xdc08f6){return db['SmsMessage'][_0x6a7a('0x79')]({'where':{'id':_0x552b09[_0x6a7a('0xbd')]['id']}})['then'](handleEntityNotFound(_0x202d6a,null))[_0x6a7a('0x3c')](function(_0x212f0f){if(_0x212f0f){return _0x212f0f[_0x6a7a('0xc3')](_0x552b09[_0x6a7a('0x7c')][_0x6a7a('0xc4')],_['omit'](_0x552b09[_0x6a7a('0x7c')],[_0x6a7a('0xc4'),'id'])||{});}})[_0x6a7a('0x3c')](respondWithResult(_0x202d6a,null))['catch'](handleError(_0x202d6a,null));};exports[_0x6a7a('0xc5')]=function(_0x1e5d9b,_0x570cf0,_0x205658){var _0x188e95={'raw':![],'where':{}};var _0x414f0d={};var _0x1f6553={'count':0x0,'rows':[]};return db[_0x6a7a('0x3f')][_0x6a7a('0xc6')]({'where':{'id':_0x1e5d9b[_0x6a7a('0xbd')]['id']}})['then'](handleEntityNotFound(_0x570cf0,null))[_0x6a7a('0x3c')](function(_0xb190d7){if(_0xb190d7){_0x414f0d['model']=_[_0x6a7a('0x44')](db[_0x6a7a('0xc7')][_0x6a7a('0xc8')]);_0x414f0d[_0x6a7a('0x45')]=_['keys'](_0x1e5d9b[_0x6a7a('0x45')]);_0x414f0d[_0x6a7a('0x4e')]=_[_0x6a7a('0x46')](_0x414f0d[_0x6a7a('0x43')],_0x414f0d[_0x6a7a('0x45')]);_0x188e95[_0x6a7a('0x47')]=_['intersection'](_0x414f0d[_0x6a7a('0x43')],qs['fields'](_0x1e5d9b[_0x6a7a('0x45')]['fields']));_0x188e95[_0x6a7a('0x47')]=_0x188e95[_0x6a7a('0x47')][_0x6a7a('0x49')]?_0x188e95['attributes']:_0x414f0d[_0x6a7a('0x43')];if(!_0x1e5d9b[_0x6a7a('0x45')]['hasOwnProperty'](_0x6a7a('0xc9'))){_0x188e95[_0x6a7a('0x2a')]=qs[_0x6a7a('0x2a')](_0x1e5d9b[_0x6a7a('0x45')]['limit']);_0x188e95[_0x6a7a('0x27')]=qs[_0x6a7a('0x27')](_0x1e5d9b[_0x6a7a('0x45')][_0x6a7a('0x27')]);}_0x188e95[_0x6a7a('0x4b')]=qs[_0x6a7a('0x4c')](_0x1e5d9b[_0x6a7a('0x45')]['sort']);_0x188e95['where']=qs[_0x6a7a('0x4e')](_[_0x6a7a('0x4f')](_0x1e5d9b[_0x6a7a('0x45')],_0x414f0d[_0x6a7a('0x4e')]));_0x188e95[_0x6a7a('0x4d')]['SmsInteractionId']=_0xb190d7['id'];if(_0x1e5d9b[_0x6a7a('0x45')][_0x6a7a('0x8e')]){_0x188e95['where']=_['merge'](_0x188e95[_0x6a7a('0x4d')],{'$or':_[_0x6a7a('0x36')](_0x188e95[_0x6a7a('0x47')],function(_0xcf9461){var _0x5ad604={};_0x5ad604[_0xcf9461]={'$like':'%'+_0x1e5d9b[_0x6a7a('0x45')]['filter']+'%'};return _0x5ad604;})});}if(_0x1e5d9b[_0x6a7a('0x45')]['$gte']){var _0x48ddfd=_0x1e5d9b['query'][_0x6a7a('0x83')]['split'](',');var _0x27b3c7={};_0x27b3c7[_0x48ddfd[0x0]]={'$gte':moment(_0x48ddfd[0x1])[_0x6a7a('0xca')](_0x6a7a('0xcb'))};_0x188e95['where']=_[_0x6a7a('0xcc')](_0x188e95[_0x6a7a('0x4d')],_0x27b3c7);}_0x188e95=_['merge']({},_0x188e95,_0x1e5d9b[_0x6a7a('0xc0')]);return db[_0x6a7a('0xc7')]['count']({'where':_0x188e95[_0x6a7a('0x4d')]})[_0x6a7a('0x3c')](function(_0x21d4d3){_0x1f6553[_0x6a7a('0x29')]=_0x21d4d3;if(_0x1e5d9b[_0x6a7a('0x45')][_0x6a7a('0xbe')]){_0x188e95[_0x6a7a('0xbf')]=[{'all':!![]}];}return db['SmsMessage'][_0x6a7a('0xcd')](_0x188e95);})[_0x6a7a('0x3c')](function(_0x2ec102){_0x1f6553[_0x6a7a('0xbc')]=_0x2ec102;return _0x1f6553;});}})[_0x6a7a('0x3c')](respondWithFilteredResult(_0x570cf0,_0x188e95))['catch'](handleError(_0x570cf0,null));};exports[_0x6a7a('0xce')]=function(_0x43d599,_0x4116e7,_0xfa53cf){return db[_0x6a7a('0x3f')][_0x6a7a('0x79')]({'where':{'id':_0x43d599[_0x6a7a('0xbd')]['id']}})['then'](handleEntityNotFound(_0x4116e7,null))['then'](function(_0x4b63d5){if(_0x4b63d5){return _0x4b63d5['setTags'](_0x43d599[_0x6a7a('0x7c')][_0x6a7a('0xc4')],_['omit'](_0x43d599[_0x6a7a('0x7c')],[_0x6a7a('0xc4'),'id'])||{})[_0x6a7a('0xcf')](function(){return db['Tag'][_0x6a7a('0xcd')]({'attributes':['id',_0x6a7a('0x33'),_0x6a7a('0xd0')],'where':{'id':_0x43d599[_0x6a7a('0x7c')]['ids']}});})['then'](function(_0x4ae30c){socket[_0x6a7a('0xd1')](_0x6a7a('0xd2'),{'id':Number(_0x43d599[_0x6a7a('0xbd')]['id']),'tags':_0x4ae30c||[]});return{'id':Number(_0x43d599[_0x6a7a('0xbd')]['id']),'tags':_0x4ae30c||[]};});}})['then'](respondWithResult(_0x4116e7,null))[_0x6a7a('0x3d')](handleError(_0x4116e7,null));};exports[_0x6a7a('0xd3')]=function(_0x92488c,_0xa5c94a,_0x1d8965){return db[_0x6a7a('0x3f')]['find']({'where':{'id':_0x92488c['params']['id']}})[_0x6a7a('0x3c')](handleEntityNotFound(_0xa5c94a,null))[_0x6a7a('0x3c')](function(_0xb3fab1){if(_0xb3fab1){return _0xb3fab1['removeTags'](_0x92488c[_0x6a7a('0x45')]['ids']);}})['then'](respondWithStatusCode(_0xa5c94a,null))['catch'](handleError(_0xa5c94a,null));};exports['download']=function(_0x4bed17,_0x3d18c1){var _0x44ced8=moment()[_0x6a7a('0xd4')]()[_0x6a7a('0xa4')]();var _0x1ec006=path[_0x6a7a('0xd5')](config[_0x6a7a('0xd6')],_0x6a7a('0xd7'),'files',_0x6a7a('0xd8'));var _0xb12bc9=path[_0x6a7a('0xd5')](config[_0x6a7a('0xd6')],_0x6a7a('0xd7'),_0x6a7a('0xd9'),_0x6a7a('0xda'));var _0x4f7e31=path[_0x6a7a('0xd5')](_0x1ec006,_0x44ced8);var _0x2e689a=util['format'](_0x6a7a('0xdb'),_0x4bed17[_0x6a7a('0xbd')]['id'],_0x44ced8);var _0x163816=path['join'](_0x1ec006,_0x2e689a);var _0x14582e=[];_0x14582e[_0x6a7a('0x3b')]({'model':db[_0x6a7a('0x77')],'as':'User','attributes':['id',_0x6a7a('0x37')],'raw':!![]});_0x14582e[_0x6a7a('0x3b')]({'model':db[_0x6a7a('0xdc')],'as':_0x6a7a('0x6d'),'attributes':['id',_0x6a7a('0xdd'),_0x6a7a('0xde')],'raw':!![]});var _0x296e82=[{'model':db['SmsMessage'],'as':'Messages','attributes':['id',_0x6a7a('0x7c'),_0x6a7a('0x81'),_0x6a7a('0xdf'),_0x6a7a('0xe0'),_0x6a7a('0x89')],'include':_0x14582e}];_0x296e82['push']({'model':db[_0x6a7a('0xe1')],'as':_0x6a7a('0xe2'),'attributes':['id',_0x6a7a('0x33')]});_0x296e82[_0x6a7a('0x3b')]({'model':db[_0x6a7a('0x77')],'as':'Owner','attributes':['id',_0x6a7a('0x37')]});return db['SmsInteraction'][_0x6a7a('0x79')]({'where':{'id':_0x4bed17[_0x6a7a('0xbd')]['id']},'include':_0x296e82})[_0x6a7a('0x3c')](handleEntityNotFound(_0x3d18c1,null))['then'](function(_0xb83422){if(_0xb83422){var _0x224de6=_0xb83422['get']({'plain':!![]});fs[_0x6a7a('0xe3')](_0x4f7e31);var _0x4b7271={'channel':_0x6a7a('0xe4'),'account':_0x224de6[_0x6a7a('0xe2')][_0x6a7a('0x33')],'agent':_0x224de6[_0x6a7a('0xe5')]?_0x224de6['Owner']['fullname']:'N.A.','createdAt':moment(_0x224de6[_0x6a7a('0x81')])[_0x6a7a('0xca')]('YYYY-MM-DD\x20HH:mm:ss')[_0x6a7a('0xa4')](),'closedAt':_0x224de6[_0x6a7a('0xe6')]?moment(_0x224de6['closedAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x224de6[_0x6a7a('0xe7')],'messages':_(_0x224de6[_0x6a7a('0xe8')])[_0x6a7a('0x8e')]({'secret':![]})[_0x6a7a('0x36')](function(_0x2d48d9){return{'date':moment(_0x2d48d9[_0x6a7a('0x81')])['format'](_0x6a7a('0xcb'))[_0x6a7a('0xa4')](),'sender':_0x2d48d9[_0x6a7a('0xdf')]==='out'?_0x2d48d9[_0x6a7a('0x77')]?_0x2d48d9[_0x6a7a('0x77')][_0x6a7a('0x37')]:'System':_0x2d48d9[_0x6a7a('0x6d')][_0x6a7a('0xdd')]+(_0x2d48d9['Contact'][_0x6a7a('0xde')]?'\x20'+_0x2d48d9[_0x6a7a('0x6d')][_0x6a7a('0xde')]:''),'body':_0x2d48d9['body'],'direction':_0x2d48d9['direction']===_0x6a7a('0xe9')?'A':'C','secret':_0x2d48d9[_0x6a7a('0xe0')],'read':_0x2d48d9[_0x6a7a('0x89')]};})[_0x6a7a('0x6a')]()};return ejs[_0x6a7a('0xea')](path[_0x6a7a('0xd5')](config[_0x6a7a('0xd6')],_0x6a7a('0xd7'),_0x6a7a('0xeb'),_0x6a7a('0xec')),{'interaction':_0x4b7271})['then'](function(_0x2182dd){var _0x37fb7d=path[_0x6a7a('0xd5')](_0x4f7e31,_0x6a7a('0xed')+_0x224de6['id']+'-'+_0x44ced8+_0x6a7a('0xee'));var _0x4ca5b0={'path':_0x37fb7d,'channel':_0x6a7a('0xe4'),'interactionId':_0x224de6['id']};return pdf[_0x6a7a('0xef')](_0x2182dd,_0x4ca5b0);})[_0x6a7a('0x3c')](function(){return new BPromise(function(_0x278376,_0x3e47ee){zipdir(_0x4f7e31,{'saveTo':_0x163816},function(_0xc065be,_0x297815){if(_0xc065be)return _0x3e47ee(_0xc065be);return _0x278376(_0x297815);});})[_0x6a7a('0x3c')](function(){return new BPromise(function(_0x3699ea,_0x3b7edd){rimraf(_0x4f7e31,function(_0x5e8643){if(_0x5e8643)_0x3b7edd(_0x5e8643);return _0x3699ea();});});})[_0x6a7a('0x3c')](function(){return _0x3d18c1[_0x6a7a('0xf0')](_0x163816,_0x2e689a,function(_0x2a8deb){if(_0x2a8deb){console[_0x6a7a('0xf1')](_0x6a7a('0xf2'),_0x2a8deb);}else{fs['unlinkSync'](_0x163816);}});});});}else{return _0x3d18c1[_0x6a7a('0x23')](0xc8);}})['catch'](handleError(_0x3d18c1,null));};
\ No newline at end of file
+var _0x2b99=['moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./smsInteraction.socket','register','status','end','json','offset','undefined','count','set','reject','save','update','then','destroy','sendStatus','error','stack','name','send','Users','map','fullname','TagIds','split','forEach','Tags','push','talking','answered','total','closed','waiting','UserId','rawAttributes','fieldName','type','key','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','pick','select','field','color','from','u.id','u.fullname','ui.SmsInteractionId','user_has_sms_interactions','left_join','users','sms_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','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','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','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','body','some','compact','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','$gte','null','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','isEmpty','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.SmsAccountId\x20IS\x20NULL','sequelize','toString','keyBy','SmsInteraction','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','Contact.email','Contact.phone','c.mobile','Contact.mobile','Owner.fullname','Owner.internal','ui.SmsInteractionId\x20IN\x20?','SmsInteractionId','all','rows','catch','show','params','merge','options','create','describe','addMessage','ids','omit','findOne','format','SmsMessage','includeAll','include','findAll','addTags','setTags','emit','removeTags','download','unix','join','root','files','tmp','attachments','transcript-%d-%s.zip','User','CmContact','firstName','lastName','Messages','direction','secret','SmsAccount','Account','Owner','get','mkdirSync','Sms','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','out','System','server','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2b99,0x1d8));var _0x92b9=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x2b99[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x92b9('0x0'));var zipdir=require(_0x92b9('0x1'));var jsonpatch=require(_0x92b9('0x2'));var rp=require(_0x92b9('0x3'));var moment=require(_0x92b9('0x4'));var BPromise=require(_0x92b9('0x5'));var Mustache=require(_0x92b9('0x6'));var util=require(_0x92b9('0x7'));var path=require(_0x92b9('0x8'));var sox=require(_0x92b9('0x9'));var csv=require('to-csv');var ejs=require(_0x92b9('0xa'));var fs=require('fs');var fs_extra=require(_0x92b9('0xb'));var _=require(_0x92b9('0xc'));var squel=require('squel');var crypto=require(_0x92b9('0xd'));var jsforce=require(_0x92b9('0xe'));var deskjs=require(_0x92b9('0xf'));var toCsv=require(_0x92b9('0x10'));var querystring=require('querystring');var Papa=require(_0x92b9('0x11'));var Redis=require(_0x92b9('0x12'));var authService=require(_0x92b9('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x92b9('0x14'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0x92b9('0x15'));var logger=require(_0x92b9('0x16'))(_0x92b9('0x17'));var utils=require(_0x92b9('0x18'));var config=require(_0x92b9('0x19'));var licenseUtil=require(_0x92b9('0x1a'));var db=require(_0x92b9('0x1b'))['db'];config[_0x92b9('0x1c')]=_['defaults'](config[_0x92b9('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x92b9('0x1d'))(new Redis(config[_0x92b9('0x1c')]));require(_0x92b9('0x1e'))[_0x92b9('0x1f')](socket);function respondWithStatusCode(_0x383322,_0x6db40c){_0x6db40c=_0x6db40c||0xcc;return function(_0x2353ce){if(_0x2353ce){return _0x383322['sendStatus'](_0x6db40c);}return _0x383322[_0x92b9('0x20')](_0x6db40c)[_0x92b9('0x21')]();};}function respondWithResult(_0x201adf,_0x2136d6){_0x2136d6=_0x2136d6||0xc8;return function(_0x1729ef){if(_0x1729ef){return _0x201adf['status'](_0x2136d6)[_0x92b9('0x22')](_0x1729ef);}};}function respondWithFilteredResult(_0x5e5d5b,_0x18021c){return function(_0x2c2b1f){if(_0x2c2b1f){var _0x11c15d=typeof _0x18021c[_0x92b9('0x23')]==='undefined'&&typeof _0x18021c['limit']===_0x92b9('0x24');var _0x21d844=_0x2c2b1f['count'];var _0x335fc2=_0x11c15d?0x0:_0x18021c[_0x92b9('0x23')];var _0x3be756=_0x11c15d?_0x2c2b1f[_0x92b9('0x25')]:_0x18021c[_0x92b9('0x23')]+_0x18021c['limit'];var _0xde1ed4;if(_0x3be756>=_0x21d844){_0x3be756=_0x21d844;_0xde1ed4=0xc8;}else{_0xde1ed4=0xce;}_0x5e5d5b['status'](_0xde1ed4);return _0x5e5d5b[_0x92b9('0x26')]('Content-Range',_0x335fc2+'-'+_0x3be756+'/'+_0x21d844)[_0x92b9('0x22')](_0x2c2b1f);}return null;};}function patchUpdates(_0xda90bf){return function(_0x46af1a){try{jsonpatch['apply'](_0x46af1a,_0xda90bf,!![]);}catch(_0x5af729){return BPromise[_0x92b9('0x27')](_0x5af729);}return _0x46af1a[_0x92b9('0x28')]();};}function saveUpdates(_0x546328,_0x336504){return function(_0x415bec){if(_0x415bec){return _0x415bec[_0x92b9('0x29')](_0x546328)[_0x92b9('0x2a')](function(_0x12f2ce){return _0x12f2ce;});}return null;};}function removeEntity(_0x4458a0,_0x50b9ca){return function(_0x457e28){if(_0x457e28){return _0x457e28[_0x92b9('0x2b')]()['then'](function(){_0x4458a0[_0x92b9('0x20')](0xcc)[_0x92b9('0x21')]();});}};}function handleEntityNotFound(_0x5407bb,_0xf6d86f){return function(_0x302a1b){if(!_0x302a1b){_0x5407bb[_0x92b9('0x2c')](0x194);}return _0x302a1b;};}function handleError(_0xacb3f5,_0x4ea416){_0x4ea416=_0x4ea416||0x1f4;return function(_0x46c7d2){logger[_0x92b9('0x2d')](_0x46c7d2[_0x92b9('0x2e')]);if(_0x46c7d2[_0x92b9('0x2f')]){delete _0x46c7d2['name'];}_0xacb3f5[_0x92b9('0x20')](_0x4ea416)[_0x92b9('0x30')](_0x46c7d2);};}function getInteractionUsers(_0x480a02,_0x46c1e9){return new BPromise(function(_0x3f1906,_0x3e6fe6){try{if(_0x46c1e9[_0x480a02['id']]){_0x480a02[_0x92b9('0x31')]=_[_0x92b9('0x32')](_0x46c1e9[_0x480a02['id']],function(_0x46d1b2){return{'id':_0x46d1b2['id'],'fullname':_0x46d1b2[_0x92b9('0x33')]};});}}catch(_0xddada6){_0x3e6fe6(_0xddada6);}_0x3f1906(_0x480a02);});}function getInteractionTags(_0x36bce4,_0x2e99fc){return new BPromise(function(_0x31f623,_0x5b54a3){try{if(_0x36bce4[_0x92b9('0x34')]){_0x36bce4['Tags']=[];_0x36bce4[_0x92b9('0x34')][_0x92b9('0x35')](',')[_0x92b9('0x36')](function(_0x55fb58){_0x36bce4[_0x92b9('0x37')][_0x92b9('0x38')](_0x2e99fc[_0x55fb58]);});}delete _0x36bce4[_0x92b9('0x34')];}catch(_0x3e6f0e){_0x5b54a3(_0x3e6f0e);}_0x31f623(_0x36bce4);});}function updateSmsInteraction(_0x313d50,_0x11f3d4,_0xbe93bd){return new BPromise(function(_0x438b8a,_0x237d5a){return getInteractionUsers(_0x313d50,_0xbe93bd)['then'](function(_0x370c8f){return getInteractionTags(_0x370c8f,_0x11f3d4);})[_0x92b9('0x2a')](function(_0x198baa){return getStateInteraction(_0x198baa);})[_0x92b9('0x2a')](function(_0x3c3c3a){_0x438b8a(_0x3c3c3a);})['catch'](function(_0x191e6c){_0x237d5a(_0x191e6c);});});}function getStateInteraction(_0x269f9c){return new BPromise(function(_0x49a36e,_0x34963f){_0x269f9c['waiting']=0x0;_0x269f9c[_0x92b9('0x39')]=0x0;_0x269f9c[_0x92b9('0x3a')]=0x0;_0x269f9c['unmanaged']=0x0;_0x269f9c[_0x92b9('0x3b')]=0x0;if(!_0x269f9c[_0x92b9('0x3c')]&&!_0x269f9c['UserId'])_0x269f9c[_0x92b9('0x3d')]+=0x1;if(!_0x269f9c[_0x92b9('0x3c')]&&_0x269f9c['UserId'])_0x269f9c['talking']+=0x1;if(_0x269f9c[_0x92b9('0x3c')]&&_0x269f9c[_0x92b9('0x3e')])_0x269f9c['answered']+=0x1;if(_0x269f9c[_0x92b9('0x3c')]&&!_0x269f9c[_0x92b9('0x3e')])_0x269f9c['unmanaged']+=0x1;_0x269f9c[_0x92b9('0x3b')]+=0x1;_0x49a36e(_0x269f9c);});}exports['index']=function(_0x58f95b,_0x12faf4){var _0x34cbed={},_0x6f75e6={},_0x1a66bf={'count':0x0,'rows':[]};var _0x480842=_[_0x92b9('0x32')](db['SmsInteraction'][_0x92b9('0x3f')],function(_0xfae6da){return{'name':_0xfae6da[_0x92b9('0x40')],'type':_0xfae6da[_0x92b9('0x41')][_0x92b9('0x42')]};});_0x6f75e6['model']=_[_0x92b9('0x32')](_0x480842,'name');_0x6f75e6[_0x92b9('0x43')]=_[_0x92b9('0x44')](_0x58f95b[_0x92b9('0x43')]);_0x6f75e6['filters']=_[_0x92b9('0x45')](_0x6f75e6['model'],_0x6f75e6[_0x92b9('0x43')]);_0x34cbed[_0x92b9('0x46')]=_[_0x92b9('0x45')](_0x6f75e6[_0x92b9('0x47')],qs[_0x92b9('0x48')](_0x58f95b[_0x92b9('0x43')][_0x92b9('0x48')]));_0x34cbed[_0x92b9('0x46')]=_0x34cbed[_0x92b9('0x46')][_0x92b9('0x49')]?_0x34cbed['attributes']:_0x6f75e6[_0x92b9('0x47')];if(!_0x58f95b[_0x92b9('0x43')][_0x92b9('0x4a')](_0x92b9('0x4b'))){_0x34cbed[_0x92b9('0x4c')]=qs[_0x92b9('0x4c')](_0x58f95b['query']['limit']);_0x34cbed[_0x92b9('0x23')]=qs[_0x92b9('0x23')](_0x58f95b[_0x92b9('0x43')][_0x92b9('0x23')]);}_0x34cbed[_0x92b9('0x4d')]=qs[_0x92b9('0x4e')](_0x58f95b['query'][_0x92b9('0x4e')]);_0x34cbed[_0x92b9('0x4f')]=qs[_0x92b9('0x50')](_[_0x92b9('0x51')](_0x58f95b['query'],_0x6f75e6[_0x92b9('0x50')]),_0x480842);var _0x13d385=[];var _0x40eaa7=squel[_0x92b9('0x52')]()['field']('id')[_0x92b9('0x53')](_0x92b9('0x2f'))['field'](_0x92b9('0x54'))[_0x92b9('0x55')]('tools_tags');var _0x35160e=squel[_0x92b9('0x52')]()['field'](_0x92b9('0x56'))[_0x92b9('0x53')](_0x92b9('0x57'))['field'](_0x92b9('0x58'))[_0x92b9('0x55')](_0x92b9('0x59'),'ui')[_0x92b9('0x5a')](_0x92b9('0x5b'),'u','u.id\x20=\x20ui.UserId');var _0x57431e=squel[_0x92b9('0x52')]()['from'](_0x92b9('0x5c'),'i')[_0x92b9('0x5a')]('cm_contacts','c',_0x92b9('0x5d'))[_0x92b9('0x5a')]('users','o',_0x92b9('0x5e'))[_0x92b9('0x5a')]('sms_accounts','a','a.id\x20=\x20i.SmsAccountId')['left_join']('sms_messages','me','me.SmsInteractionId\x20=\x20i.id')['left_join'](_0x92b9('0x5f'),'it',_0x92b9('0x60'))[_0x92b9('0x5a')](_0x92b9('0x61'),'t',_0x92b9('0x62'));var _0x2397e0=squel[_0x92b9('0x63')]();var _0x137ee4=[];var _0x502f1e=squel[_0x92b9('0x63')]();var _0x487039;if(_0x58f95b['query']['search']){_0x487039=as[_0x92b9('0x64')](_0x58f95b[_0x92b9('0x43')][_0x92b9('0x65')]);var _0x283e7f=_0x487039[_0x92b9('0x66')];for(var _0x34324e=0x0;_0x34324e<_0x487039[_0x92b9('0x67')]['length'];_0x34324e++){var _0x1418c3=_0x487039[_0x92b9('0x67')][_0x34324e];var _0x1d2b79='i';var _0xb35e8d=_[_0x92b9('0x68')](_0x480842,['name',_0x1418c3[_0x92b9('0x53')]]);if(!_0xb35e8d){switch(_0x1418c3['field']){case _0x92b9('0x69'):if(_0x1418c3[_0x92b9('0x6a')]==0x1){_0x57431e[_0x92b9('0x6b')]('`'+_0x1418c3[_0x92b9('0x53')]+_0x92b9('0x6c'));}else{_0x57431e[_0x92b9('0x6b')]('`'+_0x1418c3[_0x92b9('0x53')]+_0x92b9('0x6d'));}break;case _0x92b9('0x6e'):if(_0x1418c3[_0x92b9('0x6f')]===_0x92b9('0x70')){if(_0x1418c3[_0x92b9('0x6a')]['split']('\x20')[_0x92b9('0x49')]>0x1){_0x2397e0[_0x283e7f](_0x92b9('0x71'),qs[_0x92b9('0x72')](_0x1418c3[_0x92b9('0x6a')]),null);}else{var _0x26b98f='%'+_0x1418c3[_0x92b9('0x6a')]+'%';_0x2397e0[_0x283e7f](_0x92b9('0x73'),_0x26b98f,_0x26b98f,_0x26b98f);}}else{_0xb35e8d=_['find'](_0x480842,[_0x92b9('0x2f'),'ContactId']);_0x1418c3[_0x92b9('0x53')]=_0x92b9('0x74');_0x45ccd0=as[_0x92b9('0x75')](_0x1d2b79,_0xb35e8d[_0x92b9('0x41')],_0x1418c3);_0x2397e0[_0x283e7f](_0x45ccd0[_0x92b9('0x76')],_0x45ccd0['value'][_0x92b9('0x77')],_0x45ccd0[_0x92b9('0x6a')][_0x92b9('0x21')]);}break;case _0x92b9('0x78'):var _0x28a7e8=_0x1418c3[_0x92b9('0x6a')][_0x92b9('0x35')](',')[_0x92b9('0x32')](function(_0x3d0200){return Number(_0x3d0200);});_0x28a7e8[_0x92b9('0x36')](function(_0x58aa3e){_0x502f1e['or'](_0x92b9('0x79'),'%,'+_0x58aa3e+',%');});_0x137ee4=_[_0x92b9('0x7a')](_0x137ee4,_0x28a7e8);break;case'User':if(_0x1418c3['operator']===_0x92b9('0x70')){_0x2397e0[_0x283e7f](_0x92b9('0x7b'),'%'+_0x1418c3[_0x92b9('0x6a')]+'%',null);}else{_0xb35e8d=_['find'](_0x480842,['name','UserId']);_0x1418c3[_0x92b9('0x53')]=_0x92b9('0x3e');_0x45ccd0=as['buildExpression'](_0x1d2b79,_0xb35e8d[_0x92b9('0x41')],_0x1418c3);_0x2397e0[_0x283e7f](_0x45ccd0['text'],_0x45ccd0[_0x92b9('0x6a')][_0x92b9('0x77')],_0x45ccd0[_0x92b9('0x6a')][_0x92b9('0x21')]);}break;case _0x92b9('0x7c'):_0x45ccd0=as[_0x92b9('0x75')]('me',null,_0x1418c3);_0x2397e0[_0x283e7f](_0x45ccd0[_0x92b9('0x76')],_0x45ccd0[_0x92b9('0x6a')][_0x92b9('0x77')],_0x45ccd0[_0x92b9('0x6a')][_0x92b9('0x21')]);break;}}else{var _0x45ccd0=as[_0x92b9('0x75')](_0x1d2b79,_0xb35e8d['type'],_0x1418c3);_0x2397e0[_0x283e7f](_0x45ccd0[_0x92b9('0x76')],_0x45ccd0['value'][_0x92b9('0x77')],_0x45ccd0[_0x92b9('0x6a')][_0x92b9('0x21')]);}}}else{var _0x1b76ae=_(_0x58f95b['query'])[_0x92b9('0x44')]()[_0x92b9('0x32')](function(_0x391ea4){return _[_0x92b9('0x7d')](_0x480842,[_0x92b9('0x2f'),_0x391ea4])?_0x391ea4:undefined;})[_0x92b9('0x7e')]()['value']();if(!_['isEmpty'](_0x1b76ae)){_0x1b76ae[_0x92b9('0x36')](function(_0x184c52){if(_0x184c52===_0x92b9('0x7f')){_0x57431e[_0x92b9('0x4f')](_0x92b9('0x80'),[][_0x92b9('0x81')](_0x58f95b[_0x92b9('0x43')][_0x184c52]));}else if(_0x184c52===_0x92b9('0x82')){var _0x587974=JSON[_0x92b9('0x83')](_0x58f95b['query'][_0x184c52])[_0x92b9('0x84')];var _0x40ca79=JSON['parse'](_0x58f95b[_0x92b9('0x43')][_0x184c52])['$lte'];_0x57431e['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x587974,_0x40ca79);}else{if(_0x58f95b['query'][_0x184c52]===_0x92b9('0x85')){_0x57431e['where']('i.'+_0x184c52+'\x20IS\x20NULL');}else{_0x57431e[_0x92b9('0x4f')]('i.'+_0x184c52+'\x20=\x20?',_0x58f95b[_0x92b9('0x43')][_0x184c52]);}}});}if(_0x58f95b[_0x92b9('0x43')][_0x92b9('0x86')]){if(_0x58f95b[_0x92b9('0x43')][_0x92b9('0x86')]==0x1){_0x57431e['having'](_0x92b9('0x87'));}else{_0x57431e[_0x92b9('0x6b')](_0x92b9('0x88'));}}if(_0x58f95b['query'][_0x92b9('0x89')]){_0x137ee4=_[_0x92b9('0x8a')](_0x58f95b[_0x92b9('0x43')][_0x92b9('0x89')])?_0x58f95b['query'][_0x92b9('0x89')]:new Array(_0x58f95b[_0x92b9('0x43')][_0x92b9('0x89')]);_0x137ee4['forEach'](function(_0x1298d3){_0x502f1e['or'](_0x92b9('0x79'),'%,'+_0x1298d3+',%');});}if(_0x58f95b[_0x92b9('0x43')][_0x92b9('0x8b')]){var _0xb018f7=_0x58f95b[_0x92b9('0x43')][_0x92b9('0x8b')][_0x92b9('0x8c')]('\x5c','\x5c\x5c')[_0x92b9('0x8c')](/'/g,'\x27\x27');if(qs[_0x92b9('0x8d')](_0xb018f7)){_0x2397e0['or'](_0x92b9('0x8e'),_0xb018f7+'%')['or'](_0x92b9('0x8f'),_0xb018f7+'%');}else{_0x2397e0['or'](_0x92b9('0x90'),qs[_0x92b9('0x72')](_0xb018f7))['or'](_0x92b9('0x91'),_0xb018f7+'%');}}}_0x57431e[_0x92b9('0x4f')](_0x2397e0);_0x57431e[_0x92b9('0x92')](_0x92b9('0x93'));var _0x17dc1c={'type':db[_0x92b9('0x94')][_0x92b9('0x95')][_0x92b9('0x96')],'raw':!![]};var _0x4782bf=_0x57431e['clone']();_0x4782bf[_0x92b9('0x53')](_0x92b9('0x93'));_0x4782bf['field'](_0x92b9('0x97'),_0x92b9('0x69'));if(_0x34cbed[_0x92b9('0x4d')]){_0x34cbed[_0x92b9('0x4d')]['forEach'](function(_0x2edf31){var _0x27a57d=_0x2edf31[0x0]===_0x92b9('0x98')?_0x2edf31[0x0]:'i.'+_0x2edf31[0x0];_0x57431e['order'](_0x27a57d,_0x2edf31[0x1]==='DESC'?![]:!![]);});}if(!_[_0x92b9('0x99')](_0x137ee4)){_0x57431e['having'](_0x502f1e);_0x4782bf[_0x92b9('0x4f')](_0x92b9('0x9a'),_0x137ee4);}BPromise[_0x92b9('0x9b')]()['then'](function(){if(!_0x487039){if(_0x58f95b[_0x92b9('0x43')][_0x92b9('0x7f')])return;_0x4782bf[_0x92b9('0x4f')](_0x92b9('0x9c'));_0x57431e['where'](_0x92b9('0x9c'));return;}if(_0x58f95b[_0x92b9('0x9d')][_0x92b9('0x9e')]!==_0x92b9('0x9f'))return;return _0x58f95b[_0x92b9('0x9d')]['getSmsAccounts']({'attributes':['id'],'raw':!![]})[_0x92b9('0x2a')](function(_0x5d8aab){if(_['isEmpty'](_0x5d8aab)){_0x4782bf[_0x92b9('0x4f')](_0x92b9('0xa0'));_0x57431e[_0x92b9('0x4f')](_0x92b9('0xa0'));}else{_0x4782bf[_0x92b9('0x4f')](_0x92b9('0x80'),_[_0x92b9('0x32')](_0x5d8aab,'id'));_0x57431e['where']('i.SmsAccountId\x20IN\x20?',_[_0x92b9('0x32')](_0x5d8aab,'id'));}});})[_0x92b9('0x2a')](function(){if(_0x58f95b[_0x92b9('0x9d')][_0x92b9('0x9e')]===_0x92b9('0x9f')&&!_0x487039&&!_0x58f95b[_0x92b9('0x43')][_0x92b9('0x7f')])return[];return db[_0x92b9('0xa1')]['query'](_0x4782bf[_0x92b9('0xa2')](),_0x17dc1c);})[_0x92b9('0x2a')](function(_0x13535d){_0x1a66bf['count']=_0x13535d[_0x92b9('0x49')];if(_0x1a66bf[_0x92b9('0x25')]===0x0)return[];return db[_0x92b9('0xa1')][_0x92b9('0x43')](_0x40eaa7[_0x92b9('0xa2')](),_0x17dc1c)[_0x92b9('0x2a')](function(_0x5d37ae){_0x13d385=_[_0x92b9('0xa3')](_0x5d37ae,'id');_0x17dc1c=_['merge'](_0x17dc1c,{'model':db[_0x92b9('0xa4')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x58f95b[_0x92b9('0x43')]['fields']){_0x34cbed[_0x92b9('0x46')][_0x92b9('0x36')](function(_0xdd6352){_0x57431e[_0x92b9('0x53')]('i.'+_0xdd6352);});}else{_0x57431e[_0x92b9('0x53')](_0x92b9('0x97'),_0x92b9('0x69'));_0x57431e[_0x92b9('0x53')](_0x92b9('0xa5'),_0x92b9('0xa6'));_0x57431e[_0x92b9('0x53')](_0x92b9('0xa7'),_0x92b9('0xa8'));_0x57431e[_0x92b9('0x53')](_0x92b9('0xa9'),'contactName');_0x57431e[_0x92b9('0x53')](_0x92b9('0xaa'));_0x57431e['field'](_0x92b9('0xab'),'Contact.firstName');_0x57431e[_0x92b9('0x53')](_0x92b9('0xac'),_0x92b9('0xad'));_0x57431e[_0x92b9('0x53')]('c.email',_0x92b9('0xae'));_0x57431e[_0x92b9('0x53')]('c.phone',_0x92b9('0xaf'));_0x57431e['field'](_0x92b9('0xb0'),_0x92b9('0xb1'));_0x57431e[_0x92b9('0x53')]('c.fax','Contact.fax');_0x57431e[_0x92b9('0x53')]('o.fullname',_0x92b9('0xb2'));_0x57431e[_0x92b9('0x53')]('o.internal',_0x92b9('0xb3'));_0x57431e[_0x92b9('0x53')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x34cbed[_0x92b9('0x4c')])_0x57431e['limit'](_0x34cbed['limit']);if(_0x34cbed[_0x92b9('0x23')])_0x57431e[_0x92b9('0x23')](_0x34cbed[_0x92b9('0x23')]);return db['sequelize'][_0x92b9('0x43')](_0x57431e[_0x92b9('0xa2')](),_0x17dc1c);})[_0x92b9('0x2a')](function(_0x5c097a){if(_0x5c097a[_0x92b9('0x49')]>0x0)_0x35160e['where'](_0x92b9('0xb4'),_['map'](_0x5c097a,'id'));return db[_0x92b9('0xa1')][_0x92b9('0x43')](_0x35160e['toString'](),_0x17dc1c)[_0x92b9('0x2a')](function(_0x340a95){var _0x4c9040=_['groupBy'](_0x340a95,_0x92b9('0xb5'));var _0x5c2758=[];_0x5c097a[_0x92b9('0x36')](function(_0x14c3c7){_0x5c2758['push'](updateSmsInteraction(_0x14c3c7,_0x13d385,_0x4c9040));});return BPromise[_0x92b9('0xb6')](_0x5c2758);});});})[_0x92b9('0x2a')](function(_0x43a138){_0x1a66bf[_0x92b9('0xb7')]=_0x43a138;return _0x1a66bf;})[_0x92b9('0x2a')](respondWithFilteredResult(_0x12faf4,_0x34cbed))[_0x92b9('0xb8')](handleError(_0x12faf4,null));};exports[_0x92b9('0xb9')]=function(_0x224329,_0x1da2ef){var _0x31d150={'raw':![],'where':{'id':_0x224329[_0x92b9('0xba')]['id']}},_0x8d46a8={};_0x8d46a8[_0x92b9('0x47')]=_['keys'](db[_0x92b9('0xa4')][_0x92b9('0x3f')]);_0x8d46a8[_0x92b9('0x43')]=_[_0x92b9('0x44')](_0x224329['query']);_0x8d46a8[_0x92b9('0x50')]=_[_0x92b9('0x45')](_0x8d46a8['model'],_0x8d46a8[_0x92b9('0x43')]);_0x31d150[_0x92b9('0x46')]=_['intersection'](_0x8d46a8[_0x92b9('0x47')],qs[_0x92b9('0x48')](_0x224329[_0x92b9('0x43')][_0x92b9('0x48')]));_0x31d150[_0x92b9('0x46')]=_0x31d150['attributes']['length']?_0x31d150[_0x92b9('0x46')]:_0x8d46a8[_0x92b9('0x47')];if(_0x224329[_0x92b9('0x43')]['includeAll']){_0x31d150['include']=[{'all':!![]}];}_0x31d150=_[_0x92b9('0xbb')]({},_0x31d150,_0x224329[_0x92b9('0xbc')]);return db['SmsInteraction'][_0x92b9('0x68')](_0x31d150)['then'](handleEntityNotFound(_0x1da2ef,null))[_0x92b9('0x2a')](respondWithResult(_0x1da2ef,null))['catch'](handleError(_0x1da2ef,null));};exports['create']=function(_0x1d4039,_0x2f1dc6){return db[_0x92b9('0xa4')][_0x92b9('0xbd')](_0x1d4039[_0x92b9('0x7c')],{})[_0x92b9('0x2a')](respondWithResult(_0x2f1dc6,0xc9))[_0x92b9('0xb8')](handleError(_0x2f1dc6,null));};exports[_0x92b9('0x29')]=function(_0xb7a3b4,_0x39d694){if(_0xb7a3b4[_0x92b9('0x7c')]['id']){delete _0xb7a3b4[_0x92b9('0x7c')]['id'];}return db[_0x92b9('0xa4')][_0x92b9('0x68')]({'where':{'id':_0xb7a3b4[_0x92b9('0xba')]['id']}})[_0x92b9('0x2a')](handleEntityNotFound(_0x39d694,null))[_0x92b9('0x2a')](saveUpdates(_0xb7a3b4[_0x92b9('0x7c')],null))[_0x92b9('0x2a')](respondWithResult(_0x39d694,null))[_0x92b9('0xb8')](handleError(_0x39d694,null));};exports[_0x92b9('0x2b')]=function(_0x2c207d,_0x2d6a03){return db['SmsInteraction'][_0x92b9('0x68')]({'where':{'id':_0x2c207d['params']['id']}})[_0x92b9('0x2a')](handleEntityNotFound(_0x2d6a03,null))[_0x92b9('0x2a')](removeEntity(_0x2d6a03,null))[_0x92b9('0xb8')](handleError(_0x2d6a03,null));};exports[_0x92b9('0xbe')]=function(_0x623e2c,_0xf617db){return db[_0x92b9('0xa4')]['describe']()[_0x92b9('0x2a')](respondWithResult(_0xf617db,null))[_0x92b9('0xb8')](handleError(_0xf617db,null));};exports[_0x92b9('0xbf')]=function(_0x46bc59,_0x5801f4,_0x29fe8c){return db['SmsMessage']['find']({'where':{'id':_0x46bc59['params']['id']}})[_0x92b9('0x2a')](handleEntityNotFound(_0x5801f4,null))['then'](function(_0x3457e2){if(_0x3457e2){return _0x3457e2[_0x92b9('0xbf')](_0x46bc59[_0x92b9('0x7c')][_0x92b9('0xc0')],_[_0x92b9('0xc1')](_0x46bc59[_0x92b9('0x7c')],[_0x92b9('0xc0'),'id'])||{});}})[_0x92b9('0x2a')](respondWithResult(_0x5801f4,null))[_0x92b9('0xb8')](handleError(_0x5801f4,null));};exports['getMessages']=function(_0x440905,_0x1d53a,_0x3a7a56){var _0x158e98={'raw':![],'where':{}};var _0x2cb350={};var _0x4f5aae={'count':0x0,'rows':[]};return db[_0x92b9('0xa4')][_0x92b9('0xc2')]({'where':{'id':_0x440905[_0x92b9('0xba')]['id']}})[_0x92b9('0x2a')](handleEntityNotFound(_0x1d53a,null))['then'](function(_0x128c53){if(_0x128c53){_0x2cb350['model']=_[_0x92b9('0x44')](db['SmsMessage'][_0x92b9('0x3f')]);_0x2cb350[_0x92b9('0x43')]=_[_0x92b9('0x44')](_0x440905[_0x92b9('0x43')]);_0x2cb350[_0x92b9('0x50')]=_['intersection'](_0x2cb350['model'],_0x2cb350[_0x92b9('0x43')]);_0x158e98[_0x92b9('0x46')]=_['intersection'](_0x2cb350[_0x92b9('0x47')],qs[_0x92b9('0x48')](_0x440905[_0x92b9('0x43')][_0x92b9('0x48')]));_0x158e98[_0x92b9('0x46')]=_0x158e98[_0x92b9('0x46')][_0x92b9('0x49')]?_0x158e98[_0x92b9('0x46')]:_0x2cb350[_0x92b9('0x47')];if(!_0x440905[_0x92b9('0x43')][_0x92b9('0x4a')](_0x92b9('0x4b'))){_0x158e98[_0x92b9('0x4c')]=qs[_0x92b9('0x4c')](_0x440905[_0x92b9('0x43')]['limit']);_0x158e98[_0x92b9('0x23')]=qs['offset'](_0x440905[_0x92b9('0x43')][_0x92b9('0x23')]);}_0x158e98[_0x92b9('0x4d')]=qs[_0x92b9('0x4e')](_0x440905[_0x92b9('0x43')]['sort']);_0x158e98['where']=qs[_0x92b9('0x50')](_[_0x92b9('0x51')](_0x440905[_0x92b9('0x43')],_0x2cb350['filters']));_0x158e98[_0x92b9('0x4f')][_0x92b9('0xb5')]=_0x128c53['id'];if(_0x440905[_0x92b9('0x43')]['filter']){_0x158e98[_0x92b9('0x4f')]=_[_0x92b9('0xbb')](_0x158e98['where'],{'$or':_[_0x92b9('0x32')](_0x158e98[_0x92b9('0x46')],function(_0x5b4117){var _0xc3761f={};_0xc3761f[_0x5b4117]={'$like':'%'+_0x440905['query'][_0x92b9('0x8b')]+'%'};return _0xc3761f;})});}if(_0x440905[_0x92b9('0x43')][_0x92b9('0x84')]){var _0x4679f4=_0x440905[_0x92b9('0x43')][_0x92b9('0x84')]['split'](',');var _0x277b85={};_0x277b85[_0x4679f4[0x0]]={'$gte':moment(_0x4679f4[0x1])[_0x92b9('0xc3')]('YYYY-MM-DD\x20HH:mm:ss')};_0x158e98[_0x92b9('0x4f')]=_['merge'](_0x158e98[_0x92b9('0x4f')],_0x277b85);}_0x158e98=_['merge']({},_0x158e98,_0x440905['options']);return db[_0x92b9('0xc4')][_0x92b9('0x25')]({'where':_0x158e98[_0x92b9('0x4f')]})[_0x92b9('0x2a')](function(_0x311214){_0x4f5aae[_0x92b9('0x25')]=_0x311214;if(_0x440905[_0x92b9('0x43')][_0x92b9('0xc5')]){_0x158e98[_0x92b9('0xc6')]=[{'all':!![]}];}return db[_0x92b9('0xc4')][_0x92b9('0xc7')](_0x158e98);})['then'](function(_0x1da449){_0x4f5aae[_0x92b9('0xb7')]=_0x1da449;return _0x4f5aae;});}})[_0x92b9('0x2a')](respondWithFilteredResult(_0x1d53a,_0x158e98))[_0x92b9('0xb8')](handleError(_0x1d53a,null));};exports[_0x92b9('0xc8')]=function(_0x3dbd9c,_0x23d551,_0x17f2d5){return db[_0x92b9('0xa4')][_0x92b9('0x68')]({'where':{'id':_0x3dbd9c[_0x92b9('0xba')]['id']}})[_0x92b9('0x2a')](handleEntityNotFound(_0x23d551,null))['then'](function(_0x4c1a8e){if(_0x4c1a8e){return _0x4c1a8e[_0x92b9('0xc9')](_0x3dbd9c[_0x92b9('0x7c')][_0x92b9('0xc0')],_['omit'](_0x3dbd9c[_0x92b9('0x7c')],[_0x92b9('0xc0'),'id'])||{})['spread'](function(){return db[_0x92b9('0x78')][_0x92b9('0xc7')]({'attributes':['id','name',_0x92b9('0x54')],'where':{'id':_0x3dbd9c[_0x92b9('0x7c')]['ids']}});})[_0x92b9('0x2a')](function(_0x3e5e20){socket[_0x92b9('0xca')]('smsInteractionTags:save',{'id':Number(_0x3dbd9c[_0x92b9('0xba')]['id']),'tags':_0x3e5e20||[]});return{'id':Number(_0x3dbd9c[_0x92b9('0xba')]['id']),'tags':_0x3e5e20||[]};});}})[_0x92b9('0x2a')](respondWithResult(_0x23d551,null))[_0x92b9('0xb8')](handleError(_0x23d551,null));};exports[_0x92b9('0xcb')]=function(_0x1cf53f,_0x5099bc,_0x9965d1){return db[_0x92b9('0xa4')]['find']({'where':{'id':_0x1cf53f[_0x92b9('0xba')]['id']}})[_0x92b9('0x2a')](handleEntityNotFound(_0x5099bc,null))[_0x92b9('0x2a')](function(_0x267fc8){if(_0x267fc8){return _0x267fc8[_0x92b9('0xcb')](_0x1cf53f[_0x92b9('0x43')]['ids']);}})[_0x92b9('0x2a')](respondWithStatusCode(_0x5099bc,null))[_0x92b9('0xb8')](handleError(_0x5099bc,null));};exports[_0x92b9('0xcc')]=function(_0x5804a2,_0x2fad7c){var _0x40ad90=moment()[_0x92b9('0xcd')]()[_0x92b9('0xa2')]();var _0x4b3174=path[_0x92b9('0xce')](config[_0x92b9('0xcf')],'server',_0x92b9('0xd0'),_0x92b9('0xd1'));var _0x35fb6b=path[_0x92b9('0xce')](config[_0x92b9('0xcf')],'server',_0x92b9('0xd0'),_0x92b9('0xd2'));var _0x1f2762=path[_0x92b9('0xce')](_0x4b3174,_0x40ad90);var _0x3aa66a=util[_0x92b9('0xc3')](_0x92b9('0xd3'),_0x5804a2[_0x92b9('0xba')]['id'],_0x40ad90);var _0x3d230b=path[_0x92b9('0xce')](_0x4b3174,_0x3aa66a);var _0x13261a=[];_0x13261a[_0x92b9('0x38')]({'model':db['User'],'as':_0x92b9('0xd4'),'attributes':['id','fullname'],'raw':!![]});_0x13261a[_0x92b9('0x38')]({'model':db[_0x92b9('0xd5')],'as':_0x92b9('0x6e'),'attributes':['id',_0x92b9('0xd6'),_0x92b9('0xd7')],'raw':!![]});var _0x56b474=[{'model':db[_0x92b9('0xc4')],'as':_0x92b9('0xd8'),'attributes':['id','body',_0x92b9('0x82'),_0x92b9('0xd9'),_0x92b9('0xda'),_0x92b9('0x86')],'include':_0x13261a}];_0x56b474[_0x92b9('0x38')]({'model':db[_0x92b9('0xdb')],'as':_0x92b9('0xdc'),'attributes':['id',_0x92b9('0x2f')]});_0x56b474[_0x92b9('0x38')]({'model':db[_0x92b9('0xd4')],'as':_0x92b9('0xdd'),'attributes':['id',_0x92b9('0x33')]});return db[_0x92b9('0xa4')][_0x92b9('0x68')]({'where':{'id':_0x5804a2[_0x92b9('0xba')]['id']},'include':_0x56b474})[_0x92b9('0x2a')](handleEntityNotFound(_0x2fad7c,null))[_0x92b9('0x2a')](function(_0x54fd80){if(_0x54fd80){var _0x4106e9=_0x54fd80[_0x92b9('0xde')]({'plain':!![]});fs[_0x92b9('0xdf')](_0x1f2762);var _0x51c9cd={'channel':_0x92b9('0xe0'),'account':_0x4106e9[_0x92b9('0xdc')][_0x92b9('0x2f')],'agent':_0x4106e9[_0x92b9('0xdd')]?_0x4106e9[_0x92b9('0xdd')]['fullname']:_0x92b9('0xe1'),'createdAt':moment(_0x4106e9['createdAt'])[_0x92b9('0xc3')](_0x92b9('0xe2'))[_0x92b9('0xa2')](),'closedAt':_0x4106e9['closed']?moment(_0x4106e9[_0x92b9('0xe3')])[_0x92b9('0xc3')](_0x92b9('0xe2'))[_0x92b9('0xa2')]():'','disposition':_0x4106e9[_0x92b9('0xe4')],'messages':_(_0x4106e9['Messages'])[_0x92b9('0x8b')]({'secret':![]})[_0x92b9('0x32')](function(_0x1e7b6b){return{'date':moment(_0x1e7b6b[_0x92b9('0x82')])['format'](_0x92b9('0xe2'))['toString'](),'sender':_0x1e7b6b[_0x92b9('0xd9')]===_0x92b9('0xe5')?_0x1e7b6b['User']?_0x1e7b6b[_0x92b9('0xd4')][_0x92b9('0x33')]:_0x92b9('0xe6'):_0x1e7b6b[_0x92b9('0x6e')]['firstName']+(_0x1e7b6b[_0x92b9('0x6e')][_0x92b9('0xd7')]?'\x20'+_0x1e7b6b[_0x92b9('0x6e')][_0x92b9('0xd7')]:''),'body':_0x1e7b6b[_0x92b9('0x7c')],'direction':_0x1e7b6b['direction']===_0x92b9('0xe5')?'A':'C','secret':_0x1e7b6b[_0x92b9('0xda')],'read':_0x1e7b6b[_0x92b9('0x86')]};})['value']()};return ejs['renderFile'](path[_0x92b9('0xce')](config[_0x92b9('0xcf')],_0x92b9('0xe7'),_0x92b9('0xe8'),_0x92b9('0xe9')),{'interaction':_0x51c9cd})[_0x92b9('0x2a')](function(_0x16c662){var _0x5e6a30=path[_0x92b9('0xce')](_0x1f2762,'transcript-'+_0x4106e9['id']+'-'+_0x40ad90+_0x92b9('0xea'));var _0x3941a1={'path':_0x5e6a30,'channel':_0x92b9('0xe0'),'interactionId':_0x4106e9['id']};return pdf[_0x92b9('0xeb')](_0x16c662,_0x3941a1);})[_0x92b9('0x2a')](function(){return new BPromise(function(_0x20f407,_0x15acce){zipdir(_0x1f2762,{'saveTo':_0x3d230b},function(_0x1ed47e,_0x3ad635){if(_0x1ed47e)return _0x15acce(_0x1ed47e);return _0x20f407(_0x3ad635);});})[_0x92b9('0x2a')](function(){return new BPromise(function(_0x2a1e6c,_0x4d3845){rimraf(_0x1f2762,function(_0x49d946){if(_0x49d946)_0x4d3845(_0x49d946);return _0x2a1e6c();});});})[_0x92b9('0x2a')](function(){return _0x2fad7c[_0x92b9('0xcc')](_0x3d230b,_0x3aa66a,function(_0x22a5c4){if(_0x22a5c4){console['log'](_0x92b9('0xec'),_0x22a5c4);}else{fs[_0x92b9('0xed')](_0x3d230b);}});});});}else{return _0x2fad7c['sendStatus'](0xc8);}})[_0x92b9('0xb8')](handleError(_0x2fad7c,null));};
\ No newline at end of file
index 4c6121a..ab4c7ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f4=['../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events'];(function(_0x40d62a,_0x295735){var _0x8cff50=function(_0x4dbe13){while(--_0x4dbe13){_0x40d62a['push'](_0x40d62a['shift']());}};_0x8cff50(++_0x295735);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x9da4a8,_0x57d8f6){_0x9da4a8=_0x9da4a8-0x0;var _0x472380=_0xd4f4[_0x9da4a8];return _0x472380;};'use strict';var EventEmitter=require(_0x4d4f('0x0'));var SmsInteraction=require(_0x4d4f('0x1'))['db'][_0x4d4f('0x2')];var SmsMessage=require(_0x4d4f('0x1'))['db'][_0x4d4f('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x4d4f('0x4')](0x0);var events={'afterCreate':_0x4d4f('0x5'),'afterUpdate':_0x4d4f('0x6'),'afterDestroy':_0x4d4f('0x7')};function emitEvent(_0xa53cb8){return function(_0x15585,_0x5a98c7,_0x5f451b){_0x15585['getUsers']({'attributes':['id'],'raw':!![]})[_0x4d4f('0x8')](function(_0xecc103){_0x15585[_0x4d4f('0x9')](_0x4d4f('0xa'),_0xecc103[_0x4d4f('0xb')](function(_0x3c70b9){return{'id':_0x3c70b9['id']};}));return SmsMessage[_0x4d4f('0xc')]({'where':{'SmsInteractionId':_0x15585['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4d4f('0x8')](function(_0x385597){_0x15585[_0x4d4f('0x9')](_0x4d4f('0xd'),_0x385597[_0x4d4f('0xe')]);SmsInteractionEvents[_0x4d4f('0xf')](_0xa53cb8+':'+_0x15585['id'],_0x15585);SmsInteractionEvents[_0x4d4f('0xf')](_0xa53cb8,_0x15585);_0x5f451b(null);})[_0x4d4f('0x10')](_0x5f451b(null));};}for(var e in events){if(events[_0x4d4f('0x11')](e)){var event=events[e];SmsInteraction[_0x4d4f('0x12')](e,emitEvent(event));}}module[_0x4d4f('0x13')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x5f2f=['catch','hasOwnProperty','exports','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','update','getUsers','then','Users','map','setDataValue','length'];(function(_0x7f434e,_0x2d063f){var _0x3bff08=function(_0x225933){while(--_0x225933){_0x7f434e['push'](_0x7f434e['shift']());}};_0x3bff08(++_0x2d063f);}(_0x5f2f,0x73));var _0xf5f2=function(_0x52e130,_0x36a67c){_0x52e130=_0x52e130-0x0;var _0x167346=_0x5f2f[_0x52e130];return _0x167346;};'use strict';var EventEmitter=require(_0xf5f2('0x0'));var SmsInteraction=require(_0xf5f2('0x1'))['db'][_0xf5f2('0x2')];var SmsMessage=require(_0xf5f2('0x1'))['db'][_0xf5f2('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xf5f2('0x4')](0x0);var events={'afterCreate':_0xf5f2('0x5'),'afterUpdate':_0xf5f2('0x6'),'afterDestroy':'remove'};function emitEvent(_0x4854b6){return function(_0x1665c7,_0x192215,_0xad7f65){_0x1665c7[_0xf5f2('0x7')]({'attributes':['id'],'raw':!![]})[_0xf5f2('0x8')](function(_0x473100){_0x1665c7['setDataValue'](_0xf5f2('0x9'),_0x473100[_0xf5f2('0xa')](function(_0x2ec345){return{'id':_0x2ec345['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x1665c7['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf5f2('0x8')](function(_0x15dd7c){_0x1665c7[_0xf5f2('0xb')]('unreadMessages',_0x15dd7c[_0xf5f2('0xc')]);SmsInteractionEvents['emit'](_0x4854b6+':'+_0x1665c7['id'],_0x1665c7);SmsInteractionEvents['emit'](_0x4854b6,_0x1665c7);_0xad7f65(null);})[_0xf5f2('0xd')](_0xad7f65(null));};}for(var e in events){if(events[_0xf5f2('0xe')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0xf5f2('0xf')]=SmsInteractionEvents;
\ No newline at end of file
index d7afc3c..d270700 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafb3=['changed','format','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','sms_interactions'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xafb3,0x6b));var _0x3afb=function(_0x1d6bbd,_0x2596b6){_0x1d6bbd=_0x1d6bbd-0x0;var _0x3c5210=_0xafb3[_0x1d6bbd];return _0x3c5210;};'use strict';var _=require(_0x3afb('0x0'));var util=require(_0x3afb('0x1'));var logger=require(_0x3afb('0x2'))(_0x3afb('0x3'));var moment=require(_0x3afb('0x4'));var BPromise=require(_0x3afb('0x5'));var rp=require(_0x3afb('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3afb('0x7'));var config=require(_0x3afb('0x8'));var attributes=require(_0x3afb('0x9'));module[_0x3afb('0xa')]=function(_0xdf64d9,_0x36dcb4){return _0xdf64d9[_0x3afb('0xb')]('SmsInteraction',attributes,{'tableName':_0x3afb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x282051,_0x9132a,_0x466408){if(_0x282051[_0x3afb('0xd')]('closed')){_0x282051['closedAt']=moment()[_0x3afb('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x466408(null,_0x282051);}}});};
\ No newline at end of file
+var _0x93d8=['define','SmsInteraction','closed','format','YYYY-MM-DD\x20HH:mm:ss','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x1704d5,_0x1f1740){var _0x58b71d=function(_0x252c42){while(--_0x252c42){_0x1704d5['push'](_0x1704d5['shift']());}};_0x58b71d(++_0x1f1740);}(_0x93d8,0xf5));var _0x893d=function(_0x40cea1,_0x4aa184){_0x40cea1=_0x40cea1-0x0;var _0x5d323d=_0x93d8[_0x40cea1];return _0x5d323d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x893d('0x0'))(_0x893d('0x1'));var moment=require(_0x893d('0x2'));var BPromise=require(_0x893d('0x3'));var rp=require(_0x893d('0x4'));var fs=require('fs');var path=require(_0x893d('0x5'));var rimraf=require(_0x893d('0x6'));var config=require('../../config/environment');var attributes=require('./smsInteraction.attributes');module['exports']=function(_0x4c0e62,_0x549ee1){return _0x4c0e62[_0x893d('0x7')](_0x893d('0x8'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3c2e71,_0x1ba303,_0x1f7669){if(_0x3c2e71['changed'](_0x893d('0x9'))){_0x3c2e71['closedAt']=moment()[_0x893d('0xa')](_0x893d('0xb'));}_0x1f7669(null,_0x3c2e71);}}});};
\ No newline at end of file
index 29a7f17..5e2132b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd10=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','redis','defaults','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','attributes','limit','ids','spread','AddTags','lodash','util'];(function(_0x5b7d78,_0x1fbb0d){var _0x10354a=function(_0x15daea){while(--_0x15daea){_0x5b7d78['push'](_0x5b7d78['shift']());}};_0x10354a(++_0x1fbb0d);}(_0xbd10,0xee));var _0x0bd1=function(_0x19b747,_0x425536){_0x19b747=_0x19b747-0x0;var _0x5b6533=_0xbd10[_0x19b747];return _0x5b6533;};'use strict';var _=require(_0x0bd1('0x0'));var util=require(_0x0bd1('0x1'));var moment=require(_0x0bd1('0x2'));var BPromise=require(_0x0bd1('0x3'));var rs=require(_0x0bd1('0x4'));var fs=require('fs');var Redis=require(_0x0bd1('0x5'));var db=require(_0x0bd1('0x6'))['db'];var utils=require(_0x0bd1('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x0bd1('0x8'));var client=jayson[_0x0bd1('0x9')][_0x0bd1('0xa')]({'port':0x232a});config[_0x0bd1('0xb')]=_[_0x0bd1('0xc')](config[_0x0bd1('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0bd1('0xd'))[_0x0bd1('0xe')](socket);function respondWithRpcPromise(_0x39cf3f,_0x35a2d2,_0x22cd37){return new BPromise(function(_0x597df3,_0x51c7c7){return client[_0x0bd1('0xf')](_0x39cf3f,_0x22cd37)[_0x0bd1('0x10')](function(_0x5dc6e7){logger[_0x0bd1('0x11')](_0x0bd1('0x12'),_0x35a2d2,_0x0bd1('0x13'));logger[_0x0bd1('0x14')](_0x0bd1('0x15'),_0x35a2d2,'request\x20sent',JSON[_0x0bd1('0x16')](_0x5dc6e7));if(_0x5dc6e7['error']){if(_0x5dc6e7['error'][_0x0bd1('0x17')]===0x1f4){logger[_0x0bd1('0x18')](_0x0bd1('0x12'),_0x35a2d2,_0x5dc6e7[_0x0bd1('0x18')][_0x0bd1('0x19')]);return _0x51c7c7(_0x5dc6e7[_0x0bd1('0x18')][_0x0bd1('0x19')]);}logger[_0x0bd1('0x18')](_0x0bd1('0x12'),_0x35a2d2,_0x5dc6e7[_0x0bd1('0x18')][_0x0bd1('0x19')]);return _0x597df3(_0x5dc6e7['error'][_0x0bd1('0x19')]);}else{logger[_0x0bd1('0x11')]('SmsInteraction,\x20%s,\x20%s',_0x35a2d2,_0x0bd1('0x13'));_0x597df3(_0x5dc6e7[_0x0bd1('0x1a')][_0x0bd1('0x19')]);}})[_0x0bd1('0x1b')](function(_0xe22211){logger['error'](_0x0bd1('0x12'),_0x35a2d2,_0xe22211);_0x51c7c7(_0xe22211);});});}exports[_0x0bd1('0x1c')]=function(_0x1d3442){var _0x2fb4f8=this;return new Promise(function(_0x17fe06,_0x288172){return db[_0x0bd1('0x1d')][_0x0bd1('0x1e')](_0x1d3442[_0x0bd1('0x1f')],{'raw':_0x1d3442[_0x0bd1('0x20')]?_0x1d3442[_0x0bd1('0x20')][_0x0bd1('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d3442[_0x0bd1('0x20')]?_0x1d3442[_0x0bd1('0x20')][_0x0bd1('0x22')]||null:null,'attributes':_0x1d3442['options']?_0x1d3442[_0x0bd1('0x20')][_0x0bd1('0x23')]||null:null,'limit':_0x1d3442['options']?_0x1d3442[_0x0bd1('0x20')][_0x0bd1('0x24')]||null:null})[_0x0bd1('0x10')](function(_0x20609f){logger[_0x0bd1('0x11')](_0x0bd1('0x1c'),_0x1d3442);logger[_0x0bd1('0x14')](_0x0bd1('0x1c'),_0x1d3442,JSON[_0x0bd1('0x16')](_0x20609f));_0x17fe06(_0x20609f);})[_0x0bd1('0x1b')](function(_0x1828d7){logger[_0x0bd1('0x18')](_0x0bd1('0x1c'),_0x1828d7[_0x0bd1('0x19')],_0x1d3442);_0x288172(_0x2fb4f8[_0x0bd1('0x18')](0x1f4,_0x1828d7[_0x0bd1('0x19')]));});});};exports['AddTagsToSmsInteraction']=function(_0x503593){return new Promise(function(_0x2e003c,_0xa8ef4d){return db[_0x0bd1('0x1d')]['find']({'where':_0x503593[_0x0bd1('0x20')]?_0x503593[_0x0bd1('0x20')][_0x0bd1('0x22')]||null:null})[_0x0bd1('0x10')](function(_0x26ba0a){if(_0x26ba0a){return _0x26ba0a['addTags'](_0x503593['body'][_0x0bd1('0x25')],_['omit'](_0x503593[_0x0bd1('0x1f')],['ids','id'])||{});}})[_0x0bd1('0x26')](function(_0x42206f){logger['info'](_0x0bd1('0x27'),_0x503593);logger['debug'](_0x0bd1('0x27'),_0x503593,JSON[_0x0bd1('0x16')](_0x42206f));_0x2e003c(_0x42206f);})[_0x0bd1('0x1b')](function(_0x15057f){logger['error'](_0x0bd1('0x27'),_0x15057f[_0x0bd1('0x19')],_0x503593);_0xa8ef4d(_this['error'](0x1f4,_0x15057f['message']));});});};
\ No newline at end of file
+var _0x1e55=['attributes','limit','AddTagsToSmsInteraction','find','ids','omit','body','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsInteraction,\x20%s,\x20%s','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','options','raw','where'];(function(_0x34f470,_0x464db5){var _0x3ac6cd=function(_0x4a72be){while(--_0x4a72be){_0x34f470['push'](_0x34f470['shift']());}};_0x3ac6cd(++_0x464db5);}(_0x1e55,0x14b));var _0x51e5=function(_0x2bd603,_0x903fd4){_0x2bd603=_0x2bd603-0x0;var _0x3e40da=_0x1e55[_0x2bd603];return _0x3e40da;};'use strict';var _=require(_0x51e5('0x0'));var util=require('util');var moment=require(_0x51e5('0x1'));var BPromise=require(_0x51e5('0x2'));var rs=require(_0x51e5('0x3'));var fs=require('fs');var Redis=require(_0x51e5('0x4'));var db=require(_0x51e5('0x5'))['db'];var utils=require(_0x51e5('0x6'));var logger=require(_0x51e5('0x7'))(_0x51e5('0x8'));var config=require(_0x51e5('0x9'));var jayson=require(_0x51e5('0xa'));var client=jayson[_0x51e5('0xb')][_0x51e5('0xc')]({'port':0x232a});config[_0x51e5('0xd')]=_['defaults'](config['redis'],{'host':_0x51e5('0xe'),'port':0x18eb});var socket=require(_0x51e5('0xf'))(new Redis(config['redis']));require(_0x51e5('0x10'))[_0x51e5('0x11')](socket);function respondWithRpcPromise(_0x2478da,_0xb84561,_0x43e619){return new BPromise(function(_0x11a639,_0x242405){return client[_0x51e5('0x12')](_0x2478da,_0x43e619)[_0x51e5('0x13')](function(_0x2c0855){logger[_0x51e5('0x14')]('SmsInteraction,\x20%s,\x20%s',_0xb84561,_0x51e5('0x15'));logger[_0x51e5('0x16')](_0x51e5('0x17'),_0xb84561,_0x51e5('0x15'),JSON[_0x51e5('0x18')](_0x2c0855));if(_0x2c0855[_0x51e5('0x19')]){if(_0x2c0855['error'][_0x51e5('0x1a')]===0x1f4){logger[_0x51e5('0x19')](_0x51e5('0x1b'),_0xb84561,_0x2c0855[_0x51e5('0x19')][_0x51e5('0x1c')]);return _0x242405(_0x2c0855['error']['message']);}logger[_0x51e5('0x19')](_0x51e5('0x1b'),_0xb84561,_0x2c0855[_0x51e5('0x19')][_0x51e5('0x1c')]);return _0x11a639(_0x2c0855['error']['message']);}else{logger[_0x51e5('0x14')](_0x51e5('0x1b'),_0xb84561,_0x51e5('0x15'));_0x11a639(_0x2c0855[_0x51e5('0x1d')]['message']);}})[_0x51e5('0x1e')](function(_0x3a93a0){logger['error'](_0x51e5('0x1b'),_0xb84561,_0x3a93a0);_0x242405(_0x3a93a0);});});}exports[_0x51e5('0x1f')]=function(_0x265b76){var _0x5aee41=this;return new Promise(function(_0x3bd2be,_0x1c8693){return db[_0x51e5('0x20')][_0x51e5('0x21')](_0x265b76['body'],{'raw':_0x265b76['options']?_0x265b76[_0x51e5('0x22')][_0x51e5('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x265b76[_0x51e5('0x22')]?_0x265b76[_0x51e5('0x22')][_0x51e5('0x24')]||null:null,'attributes':_0x265b76[_0x51e5('0x22')]?_0x265b76['options'][_0x51e5('0x25')]||null:null,'limit':_0x265b76[_0x51e5('0x22')]?_0x265b76['options'][_0x51e5('0x26')]||null:null})[_0x51e5('0x13')](function(_0x3aa7a5){logger[_0x51e5('0x14')](_0x51e5('0x1f'),_0x265b76);logger[_0x51e5('0x16')](_0x51e5('0x1f'),_0x265b76,JSON[_0x51e5('0x18')](_0x3aa7a5));_0x3bd2be(_0x3aa7a5);})[_0x51e5('0x1e')](function(_0x59766f){logger[_0x51e5('0x19')](_0x51e5('0x1f'),_0x59766f[_0x51e5('0x1c')],_0x265b76);_0x1c8693(_0x5aee41[_0x51e5('0x19')](0x1f4,_0x59766f[_0x51e5('0x1c')]));});});};exports[_0x51e5('0x27')]=function(_0x2f37e5){return new Promise(function(_0x29e835,_0x17cc65){return db[_0x51e5('0x20')][_0x51e5('0x28')]({'where':_0x2f37e5['options']?_0x2f37e5['options'][_0x51e5('0x24')]||null:null})[_0x51e5('0x13')](function(_0x22d424){if(_0x22d424){return _0x22d424['addTags'](_0x2f37e5['body'][_0x51e5('0x29')],_[_0x51e5('0x2a')](_0x2f37e5[_0x51e5('0x2b')],['ids','id'])||{});}})[_0x51e5('0x2c')](function(_0x1734a6){logger[_0x51e5('0x14')](_0x51e5('0x2d'),_0x2f37e5);logger['debug']('AddTags',_0x2f37e5,JSON['stringify'](_0x1734a6));_0x29e835(_0x1734a6);})[_0x51e5('0x1e')](function(_0x2103ba){logger['error'](_0x51e5('0x2d'),_0x2103ba['message'],_0x2f37e5);_0x17cc65(_this[_0x51e5('0x19')](0x1f4,_0x2103ba[_0x51e5('0x1c')]));});});};
\ No newline at end of file
index e4bc167..df15200 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb00=['removeListener','register','./smsInteraction.events','save','remove'];(function(_0x5723a1,_0x624b39){var _0x3a01e9=function(_0x22e30e){while(--_0x22e30e){_0x5723a1['push'](_0x5723a1['shift']());}};_0x3a01e9(++_0x624b39);}(_0xbb00,0xca));var _0x0bb0=function(_0x341845,_0x4db5bc){_0x341845=_0x341845-0x0;var _0xa605e2=_0xbb00[_0x341845];return _0xa605e2;};'use strict';var SmsInteractionEvents=require(_0x0bb0('0x0'));var events=[_0x0bb0('0x1'),_0x0bb0('0x2'),'update'];function createListener(_0x40b067,_0xcd5714){return function(_0x499606){_0xcd5714['emit'](_0x40b067,_0x499606);};}function removeListener(_0x2fc553,_0x3cb1ca){return function(){SmsInteractionEvents[_0x0bb0('0x3')](_0x2fc553,_0x3cb1ca);};}exports[_0x0bb0('0x4')]=function(_0x352a75){for(var _0x120205=0x0,_0xfaf623=events['length'];_0x120205<_0xfaf623;_0x120205++){var _0x2fca2a=events[_0x120205];var _0x5029fe=createListener('smsInteraction:'+_0x2fca2a,_0x352a75);SmsInteractionEvents['on'](_0x2fca2a,_0x5029fe);}};
\ No newline at end of file
+var _0xab05=['remove','update','emit','removeListener','register','length','smsInteraction:','./smsInteraction.events','save'];(function(_0x5e765f,_0x2f0668){var _0x12cda6=function(_0x53cf9c){while(--_0x53cf9c){_0x5e765f['push'](_0x5e765f['shift']());}};_0x12cda6(++_0x2f0668);}(_0xab05,0xcd));var _0x5ab0=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xab05[_0x47b58b];return _0x46bebe;};'use strict';var SmsInteractionEvents=require(_0x5ab0('0x0'));var events=[_0x5ab0('0x1'),_0x5ab0('0x2'),_0x5ab0('0x3')];function createListener(_0x512b78,_0x10dd25){return function(_0x706561){_0x10dd25[_0x5ab0('0x4')](_0x512b78,_0x706561);};}function removeListener(_0x33b148,_0x423059){return function(){SmsInteractionEvents[_0x5ab0('0x5')](_0x33b148,_0x423059);};}exports[_0x5ab0('0x6')]=function(_0x3c4254){for(var _0xbe4787=0x0,_0xea4cb3=events[_0x5ab0('0x7')];_0xbe4787<_0xea4cb3;_0xbe4787++){var _0x187e06=events[_0xbe4787];var _0x4b5786=createListener(_0x5ab0('0x8')+_0x187e06,_0x3c4254);SmsInteractionEvents['on'](_0x187e06,_0x4b5786);}};
\ No newline at end of file
index de5230c..5eb2ac2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d60=['post','tracked','/:id/status','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/describe','describe','/:id','isAuthenticated','show'];(function(_0x459e2d,_0x2c4f73){var _0x54e591=function(_0x3d4ecf){while(--_0x3d4ecf){_0x459e2d['push'](_0x459e2d['shift']());}};_0x54e591(++_0x2c4f73);}(_0x7d60,0xd0));var _0x07d6=function(_0x13413e,_0x5886c8){_0x13413e=_0x13413e-0x0;var _0x42b823=_0x7d60[_0x13413e];return _0x42b823;};'use strict';var multer=require(_0x07d6('0x0'));var util=require(_0x07d6('0x1'));var path=require(_0x07d6('0x2'));var timeout=require(_0x07d6('0x3'));var express=require(_0x07d6('0x4'));var router=express[_0x07d6('0x5')]();var fs_extra=require(_0x07d6('0x6'));var auth=require(_0x07d6('0x7'));var interaction=require(_0x07d6('0x8'));var config=require('../../config/environment');var controller=require('./smsMessage.controller');router[_0x07d6('0x9')]('/',auth['isAuthenticated'](),controller[_0x07d6('0xa')]);router[_0x07d6('0x9')](_0x07d6('0xb'),auth['isAuthenticated'](),controller[_0x07d6('0xc')]);router[_0x07d6('0x9')](_0x07d6('0xd'),auth[_0x07d6('0xe')](),controller[_0x07d6('0xf')]);router[_0x07d6('0x10')]('/',auth[_0x07d6('0xe')](),interaction[_0x07d6('0x11')]('sms','smsmessage:create'),controller['create']);router[_0x07d6('0x10')](_0x07d6('0x12'),controller['status']);router[_0x07d6('0x13')](_0x07d6('0xd'),auth[_0x07d6('0xe')](),controller[_0x07d6('0x14')]);router[_0x07d6('0x13')](_0x07d6('0x15'),auth[_0x07d6('0xe')](),controller[_0x07d6('0x16')]);router[_0x07d6('0x13')](_0x07d6('0x17'),auth['isAuthenticated'](),controller[_0x07d6('0x18')]);router[_0x07d6('0x19')](_0x07d6('0xd'),auth['isAuthenticated'](),controller[_0x07d6('0x1a')]);module[_0x07d6('0x1b')]=router;
\ No newline at end of file
+var _0xad3a=['../../config/environment','./smsMessage.controller','get','isAuthenticated','/describe','describe','show','post','tracked','create','status','put','/:id','update','/:id/accept','accept','/:id/reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0xad3a,0x13d));var _0xaad3=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xad3a[_0x397e5f];return _0x5302b8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xaad3('0x0'));var timeout=require(_0xaad3('0x1'));var express=require(_0xaad3('0x2'));var router=express[_0xaad3('0x3')]();var fs_extra=require(_0xaad3('0x4'));var auth=require(_0xaad3('0x5'));var interaction=require(_0xaad3('0x6'));var config=require(_0xaad3('0x7'));var controller=require(_0xaad3('0x8'));router[_0xaad3('0x9')]('/',auth[_0xaad3('0xa')](),controller['index']);router['get'](_0xaad3('0xb'),auth[_0xaad3('0xa')](),controller[_0xaad3('0xc')]);router[_0xaad3('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xaad3('0xd')]);router[_0xaad3('0xe')]('/',auth[_0xaad3('0xa')](),interaction[_0xaad3('0xf')]('sms','smsmessage:create'),controller[_0xaad3('0x10')]);router[_0xaad3('0xe')]('/:id/status',controller[_0xaad3('0x11')]);router[_0xaad3('0x12')](_0xaad3('0x13'),auth['isAuthenticated'](),controller[_0xaad3('0x14')]);router[_0xaad3('0x12')](_0xaad3('0x15'),auth['isAuthenticated'](),controller[_0xaad3('0x16')]);router[_0xaad3('0x12')](_0xaad3('0x17'),auth['isAuthenticated'](),controller['reject']);router[_0xaad3('0x18')](_0xaad3('0x13'),auth['isAuthenticated'](),controller[_0xaad3('0x19')]);module[_0xaad3('0x1a')]=router;
\ No newline at end of file
index 21f27af..d936483 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a9b=['DATE','BOOLEAN','TEXT','sequelize','exports','medium','out','STRING'];(function(_0x30b280,_0x529f93){var _0x2c074f=function(_0x4f5b55){while(--_0x4f5b55){_0x30b280['push'](_0x30b280['shift']());}};_0x2c074f(++_0x529f93);}(_0x5a9b,0x1e3));var _0xb5a9=function(_0x5691dc,_0x3b2efe){_0x5691dc=_0x5691dc-0x0;var _0x4139c8=_0x5a9b[_0x5691dc];return _0x4139c8;};'use strict';var Sequelize=require(_0xb5a9('0x0'));module[_0xb5a9('0x1')]={'body':{'type':Sequelize['TEXT'](_0xb5a9('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xb5a9('0x3')),'defaultValue':_0xb5a9('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0xb5a9('0x4')](0xbe)},'phone':{'type':Sequelize[_0xb5a9('0x4')]},'readAt':{'type':Sequelize[_0xb5a9('0x5')]},'secret':{'type':Sequelize[_0xb5a9('0x6')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xb5a9('0x7')]}};
\ No newline at end of file
+var _0x17bf=['medium','BOOLEAN','ENUM','STRING','DATE','sequelize','exports','TEXT'];(function(_0x2effc1,_0x4ccd09){var _0x5c6b05=function(_0x9b4520){while(--_0x9b4520){_0x2effc1['push'](_0x2effc1['shift']());}};_0x5c6b05(++_0x4ccd09);}(_0x17bf,0x11d));var _0xf17b=function(_0x12f241,_0xb02d0d){_0x12f241=_0x12f241-0x0;var _0x39c146=_0x17bf[_0x12f241];return _0x39c146;};'use strict';var Sequelize=require(_0xf17b('0x0'));module[_0xf17b('0x1')]={'body':{'type':Sequelize[_0xf17b('0x2')](_0xf17b('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xf17b('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xf17b('0x5')]('in','out'),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xf17b('0x6')](0xbe)},'phone':{'type':Sequelize[_0xf17b('0x6')]},'readAt':{'type':Sequelize[_0xf17b('0x7')]},'secret':{'type':Sequelize[_0xf17b('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xf17b('0x6')]},'providerResponse':{'type':Sequelize[_0xf17b('0x2')]}};
\ No newline at end of file
index a561e71..0a89203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb3f=['read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','SmsInteraction','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','acceptMessage','ContactId','sequelize','Sequelize','SELECT','contact','User','fullname','internal','manual','interface','event','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','email','channel','rejectmessage','received\x20delivery\x20report\x20from','twilio','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','inspect','plivo','MessageUUID','sent','delivered','Status','plivio','infobip','results','groupName','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','lodash','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','jayson/promise','client','http','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','SmsMessage','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','include','findAll','rows','show','params','keys','includeAll','create','body','find','describe','sms-interactions','accept'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xbb3f,0x14d));var _0xfbb3=function(_0x2de51e,_0x10bb7a){_0x2de51e=_0x2de51e-0x0;var _0x39c01a=_0xbb3f[_0x2de51e];return _0x39c01a;};'use strict';var emlformat=require(_0xfbb3('0x0'));var rimraf=require(_0xfbb3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfbb3('0x2'));var rp=require(_0xfbb3('0x3'));var moment=require(_0xfbb3('0x4'));var BPromise=require(_0xfbb3('0x5'));var Mustache=require('mustache');var util=require(_0xfbb3('0x6'));var path=require('path');var sox=require(_0xfbb3('0x7'));var csv=require('to-csv');var ejs=require(_0xfbb3('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfbb3('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfbb3('0xa'));var deskjs=require(_0xfbb3('0xb'));var toCsv=require(_0xfbb3('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xfbb3('0xd'));var authService=require(_0xfbb3('0xe'));var qs=require(_0xfbb3('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfbb3('0x10'));var logger=require(_0xfbb3('0x11'))(_0xfbb3('0x12'));var utils=require(_0xfbb3('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xfbb3('0x14'))['db'];config[_0xfbb3('0x15')]=_[_0xfbb3('0x16')](config[_0xfbb3('0x15')],{'host':_0xfbb3('0x17'),'port':0x18eb});var socket=require(_0xfbb3('0x18'))(new Redis(config[_0xfbb3('0x15')]));require(_0xfbb3('0x19'))[_0xfbb3('0x1a')](socket);var jayson=require(_0xfbb3('0x1b'));var client=jayson[_0xfbb3('0x1c')][_0xfbb3('0x1d')]({'port':0x232c});var client9002=jayson[_0xfbb3('0x1c')][_0xfbb3('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0xc1916b,_0x1b37e9,_0x5e7c79,_0x4a1f73){return new BPromise(function(_0x5499f2,_0x48beb3){var _0x1dae23=_0x4a1f73||client;return _0x1dae23['request'](_0xc1916b,_0x5e7c79)[_0xfbb3('0x1e')](function(_0x16fa94){logger[_0xfbb3('0x1f')](_0xfbb3('0x20'),_0x1b37e9,_0xfbb3('0x21'));logger[_0xfbb3('0x22')](_0xfbb3('0x23'),_0x1b37e9,_0xfbb3('0x21'),JSON[_0xfbb3('0x24')](_0x16fa94));if(_0x16fa94[_0xfbb3('0x25')]){if(_0x16fa94['error']['code']===0x1f4){logger[_0xfbb3('0x25')](_0xfbb3('0x20'),_0x1b37e9,_0x16fa94[_0xfbb3('0x25')][_0xfbb3('0x26')]);return _0x48beb3(_0x16fa94[_0xfbb3('0x25')]['message']);}logger[_0xfbb3('0x25')](_0xfbb3('0x20'),_0x1b37e9,_0x16fa94[_0xfbb3('0x25')]['message']);return _0x5499f2(_0x16fa94[_0xfbb3('0x25')][_0xfbb3('0x26')]);}else{logger[_0xfbb3('0x1f')](_0xfbb3('0x20'),_0x1b37e9,_0xfbb3('0x21'));_0x5499f2(_0x16fa94[_0xfbb3('0x27')]['message']);}})[_0xfbb3('0x28')](function(_0x1e1a56){logger[_0xfbb3('0x25')]('SmsMessage,\x20%s,\x20%s',_0x1b37e9,_0x1e1a56);_0x48beb3(_0x1e1a56);});});}function respondWithStatusCode(_0x3f0aae,_0x52b1af){_0x52b1af=_0x52b1af||0xcc;return function(_0x3b71de){if(_0x3b71de){return _0x3f0aae[_0xfbb3('0x29')](_0x52b1af);}return _0x3f0aae['status'](_0x52b1af)[_0xfbb3('0x2a')]();};}function respondWithResult(_0x5b52f9,_0xc6f8a8){_0xc6f8a8=_0xc6f8a8||0xc8;return function(_0x3a7938){if(_0x3a7938){return _0x5b52f9[_0xfbb3('0x2b')](_0xc6f8a8)[_0xfbb3('0x2c')](_0x3a7938);}};}function respondWithFilteredResult(_0x461bc6,_0x5b658c){return function(_0x5ccd50){if(_0x5ccd50){var _0x3d3c1d=typeof _0x5b658c[_0xfbb3('0x2d')]==='undefined'&&typeof _0x5b658c[_0xfbb3('0x2e')]===_0xfbb3('0x2f');var _0x51dbbb=_0x5ccd50[_0xfbb3('0x30')];var _0x5b78aa=_0x3d3c1d?0x0:_0x5b658c['offset'];var _0x12572e=_0x3d3c1d?_0x5ccd50[_0xfbb3('0x30')]:_0x5b658c[_0xfbb3('0x2d')]+_0x5b658c[_0xfbb3('0x2e')];var _0x1b400a;if(_0x12572e>=_0x51dbbb){_0x12572e=_0x51dbbb;_0x1b400a=0xc8;}else{_0x1b400a=0xce;}_0x461bc6['status'](_0x1b400a);return _0x461bc6[_0xfbb3('0x31')](_0xfbb3('0x32'),_0x5b78aa+'-'+_0x12572e+'/'+_0x51dbbb)[_0xfbb3('0x2c')](_0x5ccd50);}return null;};}function patchUpdates(_0x2e89f6){return function(_0x1a8987){try{jsonpatch[_0xfbb3('0x33')](_0x1a8987,_0x2e89f6,!![]);}catch(_0x36d1fa){return BPromise[_0xfbb3('0x34')](_0x36d1fa);}return _0x1a8987[_0xfbb3('0x35')]();};}function saveUpdates(_0x1afebd,_0x216809){return function(_0x5481b8){if(_0x5481b8){return _0x5481b8[_0xfbb3('0x36')](_0x1afebd)[_0xfbb3('0x1e')](function(_0x44ba9e){return _0x44ba9e;});}return null;};}function removeEntity(_0x1233b7,_0xbe8a5d){return function(_0x1209d2){if(_0x1209d2){return _0x1209d2[_0xfbb3('0x37')]()['then'](function(){_0x1233b7[_0xfbb3('0x2b')](0xcc)[_0xfbb3('0x2a')]();});}};}function handleEntityNotFound(_0x2d39b6,_0x288e86){return function(_0x1c7ef0){if(!_0x1c7ef0){_0x2d39b6['sendStatus'](0x194);}return _0x1c7ef0;};}function handleError(_0x363e3e,_0x111970){_0x111970=_0x111970||0x1f4;return function(_0x477f42){logger[_0xfbb3('0x25')](_0x477f42[_0xfbb3('0x38')]);if(_0x477f42[_0xfbb3('0x39')]){delete _0x477f42[_0xfbb3('0x39')];}_0x363e3e[_0xfbb3('0x2b')](_0x111970)[_0xfbb3('0x3a')](_0x477f42);};}exports[_0xfbb3('0x3b')]=function(_0x38d3d9,_0x4b13da){var _0x3f0e0c={},_0x1d3d80={},_0x69eae9={'count':0x0,'rows':[]};var _0x5e7243=_[_0xfbb3('0x3c')](db[_0xfbb3('0x3d')][_0xfbb3('0x3e')],function(_0x107308){return{'name':_0x107308[_0xfbb3('0x3f')],'type':_0x107308[_0xfbb3('0x40')][_0xfbb3('0x41')]};});_0x1d3d80[_0xfbb3('0x42')]=_[_0xfbb3('0x3c')](_0x5e7243,_0xfbb3('0x39'));_0x1d3d80[_0xfbb3('0x43')]=_['keys'](_0x38d3d9[_0xfbb3('0x43')]);_0x1d3d80[_0xfbb3('0x44')]=_[_0xfbb3('0x45')](_0x1d3d80[_0xfbb3('0x42')],_0x1d3d80[_0xfbb3('0x43')]);_0x3f0e0c[_0xfbb3('0x46')]=_[_0xfbb3('0x45')](_0x1d3d80['model'],qs[_0xfbb3('0x47')](_0x38d3d9[_0xfbb3('0x43')][_0xfbb3('0x47')]));_0x3f0e0c[_0xfbb3('0x46')]=_0x3f0e0c[_0xfbb3('0x46')][_0xfbb3('0x48')]?_0x3f0e0c[_0xfbb3('0x46')]:_0x1d3d80['model'];if(!_0x38d3d9['query'][_0xfbb3('0x49')](_0xfbb3('0x4a'))){_0x3f0e0c[_0xfbb3('0x2e')]=qs[_0xfbb3('0x2e')](_0x38d3d9[_0xfbb3('0x43')][_0xfbb3('0x2e')]);_0x3f0e0c[_0xfbb3('0x2d')]=qs[_0xfbb3('0x2d')](_0x38d3d9[_0xfbb3('0x43')]['offset']);}_0x3f0e0c[_0xfbb3('0x4b')]=qs[_0xfbb3('0x4c')](_0x38d3d9[_0xfbb3('0x43')]['sort']);_0x3f0e0c[_0xfbb3('0x4d')]=qs[_0xfbb3('0x44')](_['pick'](_0x38d3d9[_0xfbb3('0x43')],_0x1d3d80['filters']),_0x5e7243);if(_0x38d3d9['query'][_0xfbb3('0x4e')]){_0x3f0e0c['where']=_['merge'](_0x3f0e0c[_0xfbb3('0x4d')],{'$or':_[_0xfbb3('0x3c')](_0x5e7243,function(_0x5f427d){if(_0x5f427d[_0xfbb3('0x40')]!=='VIRTUAL'){var _0x4256f9={};_0x4256f9[_0x5f427d['name']]={'$like':'%'+_0x38d3d9[_0xfbb3('0x43')]['filter']+'%'};return _0x4256f9;}})});}_0x3f0e0c=_[_0xfbb3('0x4f')]({},_0x3f0e0c,_0x38d3d9['options']);var _0x3bac14={'where':_0x3f0e0c[_0xfbb3('0x4d')]};return db['SmsMessage'][_0xfbb3('0x30')](_0x3bac14)[_0xfbb3('0x1e')](function(_0x6aa8e4){_0x69eae9[_0xfbb3('0x30')]=_0x6aa8e4;if(_0x38d3d9[_0xfbb3('0x43')]['includeAll']){_0x3f0e0c[_0xfbb3('0x50')]=[{'all':!![]}];}return db[_0xfbb3('0x3d')][_0xfbb3('0x51')](_0x3f0e0c);})[_0xfbb3('0x1e')](function(_0x4359cf){_0x69eae9[_0xfbb3('0x52')]=_0x4359cf;return _0x69eae9;})[_0xfbb3('0x1e')](respondWithFilteredResult(_0x4b13da,_0x3f0e0c))[_0xfbb3('0x28')](handleError(_0x4b13da,null));};exports[_0xfbb3('0x53')]=function(_0x1646e1,_0x437735){var _0x126c15={'raw':!![],'where':{'id':_0x1646e1[_0xfbb3('0x54')]['id']}},_0x1810b3={};_0x1810b3[_0xfbb3('0x42')]=_[_0xfbb3('0x55')](db['SmsMessage'][_0xfbb3('0x3e')]);_0x1810b3[_0xfbb3('0x43')]=_[_0xfbb3('0x55')](_0x1646e1['query']);_0x1810b3['filters']=_[_0xfbb3('0x45')](_0x1810b3[_0xfbb3('0x42')],_0x1810b3[_0xfbb3('0x43')]);_0x126c15['attributes']=_[_0xfbb3('0x45')](_0x1810b3['model'],qs['fields'](_0x1646e1[_0xfbb3('0x43')][_0xfbb3('0x47')]));_0x126c15[_0xfbb3('0x46')]=_0x126c15[_0xfbb3('0x46')][_0xfbb3('0x48')]?_0x126c15[_0xfbb3('0x46')]:_0x1810b3[_0xfbb3('0x42')];if(_0x1646e1[_0xfbb3('0x43')][_0xfbb3('0x56')]){_0x126c15[_0xfbb3('0x50')]=[{'all':!![]}];}_0x126c15=_[_0xfbb3('0x4f')]({},_0x126c15,_0x1646e1['options']);return db[_0xfbb3('0x3d')]['find'](_0x126c15)[_0xfbb3('0x1e')](handleEntityNotFound(_0x437735,null))[_0xfbb3('0x1e')](respondWithResult(_0x437735,null))[_0xfbb3('0x28')](handleError(_0x437735,null));};exports[_0xfbb3('0x57')]=function(_0x3850d1,_0x4c8788){return db[_0xfbb3('0x3d')][_0xfbb3('0x57')](_0x3850d1[_0xfbb3('0x58')],{})['then'](respondWithResult(_0x4c8788,0xc9))['catch'](handleError(_0x4c8788,null));};exports[_0xfbb3('0x36')]=function(_0x41b9a1,_0x1de90e){if(_0x41b9a1['body']['id']){delete _0x41b9a1[_0xfbb3('0x58')]['id'];}return db[_0xfbb3('0x3d')][_0xfbb3('0x59')]({'where':{'id':_0x41b9a1['params']['id']}})[_0xfbb3('0x1e')](handleEntityNotFound(_0x1de90e,null))[_0xfbb3('0x1e')](saveUpdates(_0x41b9a1[_0xfbb3('0x58')],null))[_0xfbb3('0x1e')](respondWithResult(_0x1de90e,null))['catch'](handleError(_0x1de90e,null));};exports['destroy']=function(_0x2c792c,_0x23a729){return db[_0xfbb3('0x3d')][_0xfbb3('0x59')]({'where':{'id':_0x2c792c[_0xfbb3('0x54')]['id']}})[_0xfbb3('0x1e')](handleEntityNotFound(_0x23a729,null))[_0xfbb3('0x1e')](removeEntity(_0x23a729,null))['catch'](handleError(_0x23a729,null));};exports[_0xfbb3('0x5a')]=function(_0x19d1f7,_0x12e79c){return db[_0xfbb3('0x3d')]['describe']()[_0xfbb3('0x1e')](respondWithResult(_0x12e79c,null))[_0xfbb3('0x28')](handleError(_0x12e79c,null));};var interaction_log=require(_0xfbb3('0x11'))(_0xfbb3('0x5b'));exports[_0xfbb3('0x5c')]=function(_0x55d1b1,_0x29c76a,_0x5004c7){var _0x3cab71={'agent':{},'channel':'sms'};if(_0x55d1b1['body']['id']){delete _0x55d1b1['body']['id'];}_0x55d1b1[_0xfbb3('0x58')][_0xfbb3('0x5d')]=!![];_0x55d1b1[_0xfbb3('0x58')][_0xfbb3('0x5e')]=moment()[_0xfbb3('0x5f')](_0xfbb3('0x60'));_0x55d1b1[_0xfbb3('0x58')][_0xfbb3('0x61')]=_0x55d1b1['body'][_0xfbb3('0x61')]||_0x55d1b1[_0xfbb3('0x62')]['id'];_0x3cab71[_0xfbb3('0x63')]['id']=_0x55d1b1['body'][_0xfbb3('0x61')];return db[_0xfbb3('0x3d')]['find']({'where':{'id':_0x55d1b1['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x29c76a,null))[_0xfbb3('0x1e')](saveUpdates(_0x55d1b1[_0xfbb3('0x58')],null))['then'](function(_0x36d887){if(_0x36d887){_0x3cab71[_0xfbb3('0x26')]=_0x36d887[_0xfbb3('0x64')]({'plain':!![]});return db[_0xfbb3('0x65')][_0xfbb3('0x59')]({'where':{'id':_0x36d887['SmsInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x29c76a,null))[_0xfbb3('0x1e')](function(_0x54ff75){if(_0x54ff75){return _0x54ff75[_0xfbb3('0x36')]({'UserId':_0x55d1b1[_0xfbb3('0x58')][_0xfbb3('0x61')],'read1stAt':_['isNil'](_0x54ff75[_0xfbb3('0x66')])?moment()[_0xfbb3('0x5f')](_0xfbb3('0x60')):undefined});}return null;})['then'](function(_0x3d9fac){if(_0x3d9fac){_0x3cab71[_0xfbb3('0x67')]=_0x3d9fac[_0xfbb3('0x64')]({'plain':!![]});interaction_log[_0xfbb3('0x1f')](_0xfbb3('0x68'),_0x55d1b1[_0xfbb3('0x62')]['id'],_0x55d1b1[_0xfbb3('0x62')][_0xfbb3('0x39')],_0x55d1b1['user']['role'],_0x3cab71[_0xfbb3('0x67')]['id'],_0x55d1b1[_0xfbb3('0x58')]?JSON[_0xfbb3('0x24')](_0x55d1b1['body']):_0xfbb3('0x69'));return respondWithRpcPromise('AcceptMessage',_0xfbb3('0x6a'),_0x3cab71);}return null;})['then'](function(_0x43985a){var _0x46fdfc='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x43985a[_0xfbb3('0x26')][_0xfbb3('0x6b')];return db[_0xfbb3('0x6c')][_0xfbb3('0x43')](_0x46fdfc,{'type':db[_0xfbb3('0x6d')]['QueryTypes'][_0xfbb3('0x6e')],'raw':!![]})['then'](function(_0x366d9d){return _0x366d9d;});})[_0xfbb3('0x1e')](function(_0x37fa67){if(_0x37fa67){_0x3cab71[_0xfbb3('0x26')][_0xfbb3('0x6f')]=_0x37fa67[0x0];if(!_0x55d1b1[_0xfbb3('0x58')][_0xfbb3('0x61')])return;return db[_0xfbb3('0x70')]['find']({'where':{'id':_0x55d1b1[_0xfbb3('0x58')][_0xfbb3('0x61')],'role':'agent'},'attributes':['id','name',_0xfbb3('0x71'),'email',_0xfbb3('0x72')],'raw':!![]});}return null;})[_0xfbb3('0x1e')](function(_0xbd0e9e){if(!_0xbd0e9e)return null;_0x3cab71[_0xfbb3('0x26')]['agent']=_0xbd0e9e;return _0x3cab71;})[_0xfbb3('0x1e')](function(_0x3eba08){if(_0x3eba08){if(_0x55d1b1['body'][_0xfbb3('0x73')]){_0x3cab71[_0xfbb3('0x26')][_0xfbb3('0x74')]=util[_0xfbb3('0x5f')]('SIP/%s',_0x55d1b1[_0xfbb3('0x62')][_0xfbb3('0x39')]);_0x3cab71[_0xfbb3('0x26')]['channel']=_0x3cab71['channel'];_0x3cab71['message'][_0xfbb3('0x75')]=_0xfbb3('0x5c');return respondWithRpcPromise(_0xfbb3('0x76'),'EventManager',{'event':_0xfbb3('0x77'),'message':_0x3cab71[_0xfbb3('0x26')]},client9002)[_0xfbb3('0x1e')](function(){return _0x3cab71;});}return _0x3cab71;}return null;})[_0xfbb3('0x1e')](respondWithResult(_0x29c76a,null))['catch'](handleError(_0x29c76a,null));};var interaction_log=require(_0xfbb3('0x11'))(_0xfbb3('0x5b'));exports[_0xfbb3('0x34')]=function(_0x2e0bc2,_0x27f1f5,_0x234196){var _0x587d2b={'agent':{},'channel':'sms'};if(_0x2e0bc2[_0xfbb3('0x58')]['id']){delete _0x2e0bc2[_0xfbb3('0x58')]['id'];}_0x2e0bc2['body']['UserId']=_0x2e0bc2[_0xfbb3('0x58')][_0xfbb3('0x61')]||_0x2e0bc2[_0xfbb3('0x62')]['id'];_0x587d2b['agent']['id']=_0x2e0bc2['body']['UserId'];return db[_0xfbb3('0x3d')]['find']({'where':{'id':_0x2e0bc2[_0xfbb3('0x54')]['id'],'UserId':null}})[_0xfbb3('0x1e')](handleEntityNotFound(_0x27f1f5,null))['then'](function(_0xca50cb){if(_0xca50cb){_0x587d2b[_0xfbb3('0x26')]=_0xca50cb[_0xfbb3('0x64')]({'plain':!![]});return db[_0xfbb3('0x65')][_0xfbb3('0x59')]({'where':{'id':_0xca50cb['SmsInteractionId']}});}return null;})[_0xfbb3('0x1e')](handleEntityNotFound(_0x27f1f5,null))['then'](function(_0x1edae4){if(_0x1edae4){_0x587d2b[_0xfbb3('0x67')]=_0x1edae4[_0xfbb3('0x64')]({'plain':!![]});interaction_log['info'](_0xfbb3('0x78'),_0x2e0bc2['user']['id'],_0x2e0bc2[_0xfbb3('0x62')][_0xfbb3('0x39')],_0x2e0bc2[_0xfbb3('0x62')][_0xfbb3('0x79')],_0x587d2b[_0xfbb3('0x67')]['id'],_0x2e0bc2['body']?JSON[_0xfbb3('0x24')](_0x2e0bc2[_0xfbb3('0x58')]):_0xfbb3('0x69'));return respondWithRpcPromise('RejectMessage',_0xfbb3('0x7a'),_0x587d2b);}return null;})[_0xfbb3('0x1e')](function(_0x1e09b7){var _0x35ca9f=_0xfbb3('0x7b')+_0x1e09b7[_0xfbb3('0x26')]['ContactId'];return db[_0xfbb3('0x6c')][_0xfbb3('0x43')](_0x35ca9f,{'type':db['Sequelize'][_0xfbb3('0x7c')]['SELECT'],'raw':!![]})[_0xfbb3('0x1e')](function(_0x3aca26){return _0x3aca26;});})[_0xfbb3('0x1e')](function(_0x1a7a99){if(_0x1a7a99){_0x587d2b['message'][_0xfbb3('0x6f')]=_0x1a7a99[0x0];if(!_0x2e0bc2[_0xfbb3('0x58')]['UserId'])return;return db['User'][_0xfbb3('0x59')]({'where':{'id':_0x2e0bc2[_0xfbb3('0x58')][_0xfbb3('0x61')],'role':'agent'},'attributes':['id','name',_0xfbb3('0x71'),_0xfbb3('0x7d'),_0xfbb3('0x72')],'raw':!![]});}return null;})[_0xfbb3('0x1e')](function(_0x4f6e3f){if(!_0x4f6e3f)return null;_0x587d2b[_0xfbb3('0x26')][_0xfbb3('0x63')]=_0x4f6e3f;return _0x587d2b;})[_0xfbb3('0x1e')](function(_0x400266){if(_0x400266){_0x400266[_0xfbb3('0x26')][_0xfbb3('0x74')]=util[_0xfbb3('0x5f')]('SIP/%s',_0x2e0bc2['user']['name']);_0x400266[_0xfbb3('0x26')][_0xfbb3('0x7e')]=_0x587d2b['channel'];_0x400266[_0xfbb3('0x26')][_0xfbb3('0x75')]=_0xfbb3('0x34');respondWithRpcPromise('EventManager','EventManager',{'event':_0xfbb3('0x7f'),'message':_0x400266[_0xfbb3('0x26')]},client9002);return _0x587d2b;}return null;})[_0xfbb3('0x1e')](respondWithResult(_0x27f1f5,null))['catch'](handleError(_0x27f1f5,null));};exports[_0xfbb3('0x2b')]=function(_0x1dfbf2,_0x123474,_0x1fd008){if(_0x1dfbf2[_0xfbb3('0x58')]['id']){delete _0x1dfbf2[_0xfbb3('0x58')]['id'];}var _0x4e1b4b;return db[_0xfbb3('0x3d')][_0xfbb3('0x59')]({'where':{'id':_0x1dfbf2['params']['id']}})[_0xfbb3('0x1e')](handleEntityNotFound(_0x123474,null))['then'](function(_0x3a10fc){if(_0x3a10fc){_0x4e1b4b=_0x3a10fc;return db['SmsAccount'][_0xfbb3('0x59')]({'where':{'id':_0x3a10fc['SmsAccountId']}});}})[_0xfbb3('0x1e')](handleEntityNotFound(_0x123474,null))[_0xfbb3('0x1e')](function(_0x144199){if(_0x144199){logger[_0xfbb3('0x22')]('SmsMessage,\x20%s,\x20%s,\x20%s','status',_0xfbb3('0x80'),_0x144199[_0xfbb3('0x40')],util['inspect'](_0x1dfbf2[_0xfbb3('0x58')],{'showHidden':![],'depth':null}));switch(_0x144199[_0xfbb3('0x40')]){case _0xfbb3('0x81'):if(_0x1dfbf2[_0xfbb3('0x58')]['MessageSid']&&_0x1dfbf2['body']['MessageSid']===_0x4e1b4b[_0xfbb3('0x82')]){return _0x4e1b4b[_0xfbb3('0x36')]({'read':!![]});}else{logger[_0xfbb3('0x25')](_0xfbb3('0x83'),_0xfbb3('0x2b'),_0xfbb3('0x81'),util[_0xfbb3('0x84')](_0x1dfbf2[_0xfbb3('0x58')],{'showHidden':![],'depth':null}));}break;case _0xfbb3('0x85'):if(_0x1dfbf2[_0xfbb3('0x58')][_0xfbb3('0x86')]&&_0x1dfbf2['body'][_0xfbb3('0x86')]===_0x4e1b4b[_0xfbb3('0x82')]&&_['indexOf']([_0xfbb3('0x87'),_0xfbb3('0x88')],_0x1dfbf2['body'][_0xfbb3('0x89')])>=0x0){return _0x4e1b4b['update']({'read':!![]});}else{logger[_0xfbb3('0x25')](_0xfbb3('0x83'),'status',_0xfbb3('0x8a'),util['inspect'](_0x1dfbf2[_0xfbb3('0x58')],{'showHidden':![],'depth':null}));}break;case _0xfbb3('0x8b'):var _0x13634f=_0x1dfbf2['body'][_0xfbb3('0x8c')][0x0];if(_0x13634f[_0xfbb3('0x2b')][_0xfbb3('0x8d')]==='DELIVERED'){return _0x4e1b4b['update']({'read':!![]});}else{logger[_0xfbb3('0x25')](_0xfbb3('0x83'),'status',_0xfbb3('0x8b'),util[_0xfbb3('0x84')](_0x1dfbf2['body'],{'showHidden':![],'depth':null}));}break;}return _0x4e1b4b;}})[_0xfbb3('0x1e')](respondWithResult(_0x123474,null))[_0xfbb3('0x28')](handleError(_0x123474,null));};
\ No newline at end of file
+var _0x9a28=['hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','params','includeAll','find','create','body','describe','sms-interactions','accept','sms','format','user','agent','UserId','get','SmsInteraction','SmsInteractionId','isNil','YYYY-MM-DD\x20HH:mm:ss','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','acceptMessage','ContactId','Sequelize','QueryTypes','contact','User','fullname','email','internal','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageUUID','indexOf','delivered','Status','plivio','results','groupName','DELIVERED','SmsAccount,\x20%s,\x20%s,\x20%s','infobip','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','ejs','squel','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','jayson/promise','client','http','request','then','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','offset','count','set','Content-Range','json','apply','reject','update','end','stack','name','send','map','SmsMessage','rawAttributes','fieldName','type','key','keys','query','filters','model','attributes','intersection','fields','length'];(function(_0x2013d1,_0x29fddb){var _0x593cb0=function(_0x534b94){while(--_0x534b94){_0x2013d1['push'](_0x2013d1['shift']());}};_0x593cb0(++_0x29fddb);}(_0x9a28,0x16a));var _0x89a2=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0x9a28[_0xd1d19a];return _0x52a79d;};'use strict';var emlformat=require(_0x89a2('0x0'));var rimraf=require(_0x89a2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x89a2('0x2'));var moment=require(_0x89a2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x89a2('0x4'));var util=require(_0x89a2('0x5'));var path=require(_0x89a2('0x6'));var sox=require(_0x89a2('0x7'));var csv=require('to-csv');var ejs=require(_0x89a2('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x89a2('0x9'));var crypto=require('crypto');var jsforce=require(_0x89a2('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x89a2('0xb'));var querystring=require('querystring');var Papa=require(_0x89a2('0xc'));var Redis=require(_0x89a2('0xd'));var authService=require(_0x89a2('0xe'));var qs=require(_0x89a2('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x89a2('0x10'));var logger=require(_0x89a2('0x11'))(_0x89a2('0x12'));var utils=require(_0x89a2('0x13'));var config=require(_0x89a2('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x89a2('0x15'))['db'];config[_0x89a2('0x16')]=_[_0x89a2('0x17')](config[_0x89a2('0x16')],{'host':_0x89a2('0x18'),'port':0x18eb});var socket=require(_0x89a2('0x19'))(new Redis(config['redis']));require(_0x89a2('0x1a'))[_0x89a2('0x1b')](socket);var jayson=require(_0x89a2('0x1c'));var client=jayson[_0x89a2('0x1d')]['http']({'port':0x232c});var client9002=jayson[_0x89a2('0x1d')][_0x89a2('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x1daafd,_0x17a794,_0x2155ae,_0x25b2fd){return new BPromise(function(_0x5109a8,_0x31c36e){var _0x249b18=_0x25b2fd||client;return _0x249b18[_0x89a2('0x1f')](_0x1daafd,_0x2155ae)[_0x89a2('0x20')](function(_0xb7a504){logger['info'](_0x89a2('0x21'),_0x17a794,'request\x20sent');logger[_0x89a2('0x22')](_0x89a2('0x23'),_0x17a794,_0x89a2('0x24'),JSON[_0x89a2('0x25')](_0xb7a504));if(_0xb7a504[_0x89a2('0x26')]){if(_0xb7a504[_0x89a2('0x26')]['code']===0x1f4){logger['error'](_0x89a2('0x21'),_0x17a794,_0xb7a504[_0x89a2('0x26')][_0x89a2('0x27')]);return _0x31c36e(_0xb7a504[_0x89a2('0x26')][_0x89a2('0x27')]);}logger[_0x89a2('0x26')]('SmsMessage,\x20%s,\x20%s',_0x17a794,_0xb7a504[_0x89a2('0x26')][_0x89a2('0x27')]);return _0x5109a8(_0xb7a504[_0x89a2('0x26')][_0x89a2('0x27')]);}else{logger['info'](_0x89a2('0x21'),_0x17a794,'request\x20sent');_0x5109a8(_0xb7a504[_0x89a2('0x28')][_0x89a2('0x27')]);}})[_0x89a2('0x29')](function(_0x94fbf){logger[_0x89a2('0x26')]('SmsMessage,\x20%s,\x20%s',_0x17a794,_0x94fbf);_0x31c36e(_0x94fbf);});});}function respondWithStatusCode(_0x3a79db,_0x4be962){_0x4be962=_0x4be962||0xcc;return function(_0x2c961a){if(_0x2c961a){return _0x3a79db[_0x89a2('0x2a')](_0x4be962);}return _0x3a79db[_0x89a2('0x2b')](_0x4be962)['end']();};}function respondWithResult(_0x2b3308,_0x2c76d7){_0x2c76d7=_0x2c76d7||0xc8;return function(_0x54ca1e){if(_0x54ca1e){return _0x2b3308['status'](_0x2c76d7)['json'](_0x54ca1e);}};}function respondWithFilteredResult(_0x18f690,_0x139f4e){return function(_0x31cbbe){if(_0x31cbbe){var _0x28e290=typeof _0x139f4e[_0x89a2('0x2c')]==='undefined'&&typeof _0x139f4e['limit']==='undefined';var _0x41088a=_0x31cbbe[_0x89a2('0x2d')];var _0x3ec6b5=_0x28e290?0x0:_0x139f4e['offset'];var _0x34b0f6=_0x28e290?_0x31cbbe[_0x89a2('0x2d')]:_0x139f4e[_0x89a2('0x2c')]+_0x139f4e['limit'];var _0x13448c;if(_0x34b0f6>=_0x41088a){_0x34b0f6=_0x41088a;_0x13448c=0xc8;}else{_0x13448c=0xce;}_0x18f690['status'](_0x13448c);return _0x18f690[_0x89a2('0x2e')](_0x89a2('0x2f'),_0x3ec6b5+'-'+_0x34b0f6+'/'+_0x41088a)[_0x89a2('0x30')](_0x31cbbe);}return null;};}function patchUpdates(_0x3f235d){return function(_0x5b3c81){try{jsonpatch[_0x89a2('0x31')](_0x5b3c81,_0x3f235d,!![]);}catch(_0x43d31b){return BPromise[_0x89a2('0x32')](_0x43d31b);}return _0x5b3c81['save']();};}function saveUpdates(_0x455b06,_0x5e31e0){return function(_0x1c82b4){if(_0x1c82b4){return _0x1c82b4[_0x89a2('0x33')](_0x455b06)[_0x89a2('0x20')](function(_0x2921cd){return _0x2921cd;});}return null;};}function removeEntity(_0x459da7,_0x19746a){return function(_0x36f624){if(_0x36f624){return _0x36f624['destroy']()['then'](function(){_0x459da7['status'](0xcc)[_0x89a2('0x34')]();});}};}function handleEntityNotFound(_0x32b231,_0x5c85df){return function(_0x5a7817){if(!_0x5a7817){_0x32b231[_0x89a2('0x2a')](0x194);}return _0x5a7817;};}function handleError(_0x22b32a,_0x4f6627){_0x4f6627=_0x4f6627||0x1f4;return function(_0xf60c3b){logger[_0x89a2('0x26')](_0xf60c3b[_0x89a2('0x35')]);if(_0xf60c3b[_0x89a2('0x36')]){delete _0xf60c3b[_0x89a2('0x36')];}_0x22b32a[_0x89a2('0x2b')](_0x4f6627)[_0x89a2('0x37')](_0xf60c3b);};}exports['index']=function(_0x4973da,_0x2348af){var _0x33aac0={},_0xc1e538={},_0x1b1f50={'count':0x0,'rows':[]};var _0x56f341=_[_0x89a2('0x38')](db[_0x89a2('0x39')][_0x89a2('0x3a')],function(_0xb90d8c){return{'name':_0xb90d8c[_0x89a2('0x3b')],'type':_0xb90d8c[_0x89a2('0x3c')][_0x89a2('0x3d')]};});_0xc1e538['model']=_[_0x89a2('0x38')](_0x56f341,_0x89a2('0x36'));_0xc1e538['query']=_[_0x89a2('0x3e')](_0x4973da[_0x89a2('0x3f')]);_0xc1e538[_0x89a2('0x40')]=_['intersection'](_0xc1e538[_0x89a2('0x41')],_0xc1e538[_0x89a2('0x3f')]);_0x33aac0[_0x89a2('0x42')]=_[_0x89a2('0x43')](_0xc1e538['model'],qs[_0x89a2('0x44')](_0x4973da[_0x89a2('0x3f')][_0x89a2('0x44')]));_0x33aac0[_0x89a2('0x42')]=_0x33aac0[_0x89a2('0x42')][_0x89a2('0x45')]?_0x33aac0['attributes']:_0xc1e538['model'];if(!_0x4973da[_0x89a2('0x3f')][_0x89a2('0x46')](_0x89a2('0x47'))){_0x33aac0[_0x89a2('0x48')]=qs['limit'](_0x4973da['query'][_0x89a2('0x48')]);_0x33aac0[_0x89a2('0x2c')]=qs[_0x89a2('0x2c')](_0x4973da[_0x89a2('0x3f')][_0x89a2('0x2c')]);}_0x33aac0[_0x89a2('0x49')]=qs['sort'](_0x4973da['query'][_0x89a2('0x4a')]);_0x33aac0[_0x89a2('0x4b')]=qs[_0x89a2('0x40')](_[_0x89a2('0x4c')](_0x4973da[_0x89a2('0x3f')],_0xc1e538[_0x89a2('0x40')]),_0x56f341);if(_0x4973da[_0x89a2('0x3f')][_0x89a2('0x4d')]){_0x33aac0[_0x89a2('0x4b')]=_['merge'](_0x33aac0[_0x89a2('0x4b')],{'$or':_[_0x89a2('0x38')](_0x56f341,function(_0x12d5d3){if(_0x12d5d3[_0x89a2('0x3c')]!==_0x89a2('0x4e')){var _0xe12c7b={};_0xe12c7b[_0x12d5d3['name']]={'$like':'%'+_0x4973da[_0x89a2('0x3f')][_0x89a2('0x4d')]+'%'};return _0xe12c7b;}})});}_0x33aac0=_[_0x89a2('0x4f')]({},_0x33aac0,_0x4973da[_0x89a2('0x50')]);var _0x30e524={'where':_0x33aac0[_0x89a2('0x4b')]};return db[_0x89a2('0x39')][_0x89a2('0x2d')](_0x30e524)[_0x89a2('0x20')](function(_0x3bc45a){_0x1b1f50[_0x89a2('0x2d')]=_0x3bc45a;if(_0x4973da[_0x89a2('0x3f')]['includeAll']){_0x33aac0[_0x89a2('0x51')]=[{'all':!![]}];}return db[_0x89a2('0x39')][_0x89a2('0x52')](_0x33aac0);})[_0x89a2('0x20')](function(_0x1ad6cf){_0x1b1f50[_0x89a2('0x53')]=_0x1ad6cf;return _0x1b1f50;})[_0x89a2('0x20')](respondWithFilteredResult(_0x2348af,_0x33aac0))[_0x89a2('0x29')](handleError(_0x2348af,null));};exports['show']=function(_0x57e27c,_0x84c658){var _0xe7628c={'raw':!![],'where':{'id':_0x57e27c[_0x89a2('0x54')]['id']}},_0x5279a7={};_0x5279a7[_0x89a2('0x41')]=_[_0x89a2('0x3e')](db[_0x89a2('0x39')][_0x89a2('0x3a')]);_0x5279a7[_0x89a2('0x3f')]=_[_0x89a2('0x3e')](_0x57e27c[_0x89a2('0x3f')]);_0x5279a7[_0x89a2('0x40')]=_['intersection'](_0x5279a7[_0x89a2('0x41')],_0x5279a7[_0x89a2('0x3f')]);_0xe7628c[_0x89a2('0x42')]=_['intersection'](_0x5279a7[_0x89a2('0x41')],qs[_0x89a2('0x44')](_0x57e27c[_0x89a2('0x3f')]['fields']));_0xe7628c[_0x89a2('0x42')]=_0xe7628c['attributes'][_0x89a2('0x45')]?_0xe7628c[_0x89a2('0x42')]:_0x5279a7['model'];if(_0x57e27c['query'][_0x89a2('0x55')]){_0xe7628c[_0x89a2('0x51')]=[{'all':!![]}];}_0xe7628c=_['merge']({},_0xe7628c,_0x57e27c['options']);return db[_0x89a2('0x39')][_0x89a2('0x56')](_0xe7628c)[_0x89a2('0x20')](handleEntityNotFound(_0x84c658,null))[_0x89a2('0x20')](respondWithResult(_0x84c658,null))[_0x89a2('0x29')](handleError(_0x84c658,null));};exports[_0x89a2('0x57')]=function(_0x233053,_0x13776f){return db[_0x89a2('0x39')]['create'](_0x233053[_0x89a2('0x58')],{})[_0x89a2('0x20')](respondWithResult(_0x13776f,0xc9))[_0x89a2('0x29')](handleError(_0x13776f,null));};exports[_0x89a2('0x33')]=function(_0x5ecf93,_0x40e8eb){if(_0x5ecf93[_0x89a2('0x58')]['id']){delete _0x5ecf93[_0x89a2('0x58')]['id'];}return db[_0x89a2('0x39')][_0x89a2('0x56')]({'where':{'id':_0x5ecf93[_0x89a2('0x54')]['id']}})[_0x89a2('0x20')](handleEntityNotFound(_0x40e8eb,null))[_0x89a2('0x20')](saveUpdates(_0x5ecf93[_0x89a2('0x58')],null))[_0x89a2('0x20')](respondWithResult(_0x40e8eb,null))['catch'](handleError(_0x40e8eb,null));};exports['destroy']=function(_0x1f3362,_0x3c69b5){return db[_0x89a2('0x39')][_0x89a2('0x56')]({'where':{'id':_0x1f3362[_0x89a2('0x54')]['id']}})['then'](handleEntityNotFound(_0x3c69b5,null))[_0x89a2('0x20')](removeEntity(_0x3c69b5,null))['catch'](handleError(_0x3c69b5,null));};exports[_0x89a2('0x59')]=function(_0x12b0dd,_0x2a2ae5){return db[_0x89a2('0x39')][_0x89a2('0x59')]()[_0x89a2('0x20')](respondWithResult(_0x2a2ae5,null))[_0x89a2('0x29')](handleError(_0x2a2ae5,null));};var interaction_log=require(_0x89a2('0x11'))(_0x89a2('0x5a'));exports[_0x89a2('0x5b')]=function(_0x4b5be0,_0x3ac967,_0x5b7e2b){var _0x2fbc1e={'agent':{},'channel':_0x89a2('0x5c')};if(_0x4b5be0['body']['id']){delete _0x4b5be0[_0x89a2('0x58')]['id'];}_0x4b5be0['body']['read']=!![];_0x4b5be0[_0x89a2('0x58')]['readAt']=moment()[_0x89a2('0x5d')]('YYYY-MM-DD\x20HH:mm:ss');_0x4b5be0[_0x89a2('0x58')]['UserId']=_0x4b5be0[_0x89a2('0x58')]['UserId']||_0x4b5be0[_0x89a2('0x5e')]['id'];_0x2fbc1e[_0x89a2('0x5f')]['id']=_0x4b5be0[_0x89a2('0x58')][_0x89a2('0x60')];return db[_0x89a2('0x39')][_0x89a2('0x56')]({'where':{'id':_0x4b5be0[_0x89a2('0x54')]['id'],'UserId':null}})[_0x89a2('0x20')](handleEntityNotFound(_0x3ac967,null))[_0x89a2('0x20')](saveUpdates(_0x4b5be0['body'],null))[_0x89a2('0x20')](function(_0x573280){if(_0x573280){_0x2fbc1e['message']=_0x573280[_0x89a2('0x61')]({'plain':!![]});return db[_0x89a2('0x62')][_0x89a2('0x56')]({'where':{'id':_0x573280[_0x89a2('0x63')]}});}return null;})[_0x89a2('0x20')](handleEntityNotFound(_0x3ac967,null))['then'](function(_0xf42f32){if(_0xf42f32){return _0xf42f32[_0x89a2('0x33')]({'UserId':_0x4b5be0[_0x89a2('0x58')][_0x89a2('0x60')],'read1stAt':_[_0x89a2('0x64')](_0xf42f32['read1stAt'])?moment()['format'](_0x89a2('0x65')):undefined});}return null;})[_0x89a2('0x20')](function(_0x5daefc){if(_0x5daefc){_0x2fbc1e['interaction']=_0x5daefc['get']({'plain':!![]});interaction_log['info'](_0x89a2('0x66'),_0x4b5be0['user']['id'],_0x4b5be0['user'][_0x89a2('0x36')],_0x4b5be0[_0x89a2('0x5e')][_0x89a2('0x67')],_0x2fbc1e[_0x89a2('0x68')]['id'],_0x4b5be0[_0x89a2('0x58')]?JSON['stringify'](_0x4b5be0['body']):_0x89a2('0x69'));return respondWithRpcPromise(_0x89a2('0x6a'),_0x89a2('0x6b'),_0x2fbc1e);}return null;})['then'](function(_0x278eb5){var _0x340457='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x278eb5[_0x89a2('0x27')][_0x89a2('0x6c')];return db['sequelize']['query'](_0x340457,{'type':db[_0x89a2('0x6d')][_0x89a2('0x6e')]['SELECT'],'raw':!![]})['then'](function(_0x5ec67e){return _0x5ec67e;});})[_0x89a2('0x20')](function(_0x575e69){if(_0x575e69){_0x2fbc1e[_0x89a2('0x27')][_0x89a2('0x6f')]=_0x575e69[0x0];if(!_0x4b5be0['body']['UserId'])return;return db[_0x89a2('0x70')][_0x89a2('0x56')]({'where':{'id':_0x4b5be0['body'][_0x89a2('0x60')],'role':_0x89a2('0x5f')},'attributes':['id','name',_0x89a2('0x71'),_0x89a2('0x72'),_0x89a2('0x73')],'raw':!![]});}return null;})['then'](function(_0x580c40){if(!_0x580c40)return null;_0x2fbc1e['message'][_0x89a2('0x5f')]=_0x580c40;return _0x2fbc1e;})['then'](function(_0x41dc88){if(_0x41dc88){if(_0x4b5be0[_0x89a2('0x58')]['manual']){_0x2fbc1e[_0x89a2('0x27')][_0x89a2('0x74')]=util[_0x89a2('0x5d')](_0x89a2('0x75'),_0x4b5be0['user'][_0x89a2('0x36')]);_0x2fbc1e[_0x89a2('0x27')]['channel']=_0x2fbc1e[_0x89a2('0x76')];_0x2fbc1e[_0x89a2('0x27')][_0x89a2('0x77')]=_0x2fbc1e['channel'];_0x2fbc1e['message'][_0x89a2('0x78')]=_0x89a2('0x5b');return respondWithRpcPromise(_0x89a2('0x79'),_0x89a2('0x79'),{'event':_0x89a2('0x7a'),'message':_0x2fbc1e[_0x89a2('0x27')]},client9002)['then'](function(){return _0x2fbc1e;});}return _0x2fbc1e;}return null;})[_0x89a2('0x20')](respondWithResult(_0x3ac967,null))['catch'](handleError(_0x3ac967,null));};var interaction_log=require(_0x89a2('0x11'))(_0x89a2('0x5a'));exports[_0x89a2('0x32')]=function(_0x567d75,_0x1787d0,_0x5d5ff7){var _0x14c284={'agent':{},'channel':'sms'};if(_0x567d75['body']['id']){delete _0x567d75[_0x89a2('0x58')]['id'];}_0x567d75[_0x89a2('0x58')][_0x89a2('0x60')]=_0x567d75[_0x89a2('0x58')]['UserId']||_0x567d75['user']['id'];_0x14c284[_0x89a2('0x5f')]['id']=_0x567d75[_0x89a2('0x58')][_0x89a2('0x60')];return db['SmsMessage'][_0x89a2('0x56')]({'where':{'id':_0x567d75[_0x89a2('0x54')]['id'],'UserId':null}})[_0x89a2('0x20')](handleEntityNotFound(_0x1787d0,null))[_0x89a2('0x20')](function(_0x4431bb){if(_0x4431bb){_0x14c284['message']=_0x4431bb[_0x89a2('0x61')]({'plain':!![]});return db[_0x89a2('0x62')][_0x89a2('0x56')]({'where':{'id':_0x4431bb[_0x89a2('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x1787d0,null))[_0x89a2('0x20')](function(_0x326c50){if(_0x326c50){_0x14c284['interaction']=_0x326c50[_0x89a2('0x61')]({'plain':!![]});interaction_log['info'](_0x89a2('0x7b'),_0x567d75[_0x89a2('0x5e')]['id'],_0x567d75[_0x89a2('0x5e')][_0x89a2('0x36')],_0x567d75[_0x89a2('0x5e')][_0x89a2('0x67')],_0x14c284[_0x89a2('0x68')]['id'],_0x567d75[_0x89a2('0x58')]?JSON['stringify'](_0x567d75['body']):_0x89a2('0x69'));return respondWithRpcPromise('RejectMessage',_0x89a2('0x7c'),_0x14c284);}return null;})['then'](function(_0x2ea73d){var _0x29e6ec=_0x89a2('0x7d')+_0x2ea73d[_0x89a2('0x27')][_0x89a2('0x6c')];return db['sequelize'][_0x89a2('0x3f')](_0x29e6ec,{'type':db[_0x89a2('0x6d')][_0x89a2('0x6e')]['SELECT'],'raw':!![]})[_0x89a2('0x20')](function(_0x469df8){return _0x469df8;});})[_0x89a2('0x20')](function(_0x159054){if(_0x159054){_0x14c284[_0x89a2('0x27')][_0x89a2('0x6f')]=_0x159054[0x0];if(!_0x567d75[_0x89a2('0x58')][_0x89a2('0x60')])return;return db['User'][_0x89a2('0x56')]({'where':{'id':_0x567d75[_0x89a2('0x58')][_0x89a2('0x60')],'role':'agent'},'attributes':['id',_0x89a2('0x36'),'fullname','email','internal'],'raw':!![]});}return null;})['then'](function(_0x2dc767){if(!_0x2dc767)return null;_0x14c284['message'][_0x89a2('0x5f')]=_0x2dc767;return _0x14c284;})[_0x89a2('0x20')](function(_0x1bbb11){if(_0x1bbb11){_0x1bbb11[_0x89a2('0x27')][_0x89a2('0x74')]=util['format']('SIP/%s',_0x567d75[_0x89a2('0x5e')][_0x89a2('0x36')]);_0x1bbb11['message'][_0x89a2('0x76')]=_0x14c284[_0x89a2('0x76')];_0x1bbb11[_0x89a2('0x27')][_0x89a2('0x77')]=_0x14c284['channel'];_0x1bbb11[_0x89a2('0x27')][_0x89a2('0x78')]=_0x89a2('0x32');respondWithRpcPromise(_0x89a2('0x79'),'EventManager',{'event':_0x89a2('0x7e'),'message':_0x1bbb11[_0x89a2('0x27')]},client9002);return _0x14c284;}return null;})[_0x89a2('0x20')](respondWithResult(_0x1787d0,null))[_0x89a2('0x29')](handleError(_0x1787d0,null));};exports['status']=function(_0x50319f,_0x4e4382,_0x5109f6){if(_0x50319f[_0x89a2('0x58')]['id']){delete _0x50319f['body']['id'];}var _0x2d8132;return db[_0x89a2('0x39')]['find']({'where':{'id':_0x50319f[_0x89a2('0x54')]['id']}})[_0x89a2('0x20')](handleEntityNotFound(_0x4e4382,null))[_0x89a2('0x20')](function(_0x488fd1){if(_0x488fd1){_0x2d8132=_0x488fd1;return db[_0x89a2('0x7f')][_0x89a2('0x56')]({'where':{'id':_0x488fd1[_0x89a2('0x80')]}});}})[_0x89a2('0x20')](handleEntityNotFound(_0x4e4382,null))[_0x89a2('0x20')](function(_0x3de5bd){if(_0x3de5bd){logger[_0x89a2('0x22')](_0x89a2('0x23'),_0x89a2('0x2b'),_0x89a2('0x81'),_0x3de5bd[_0x89a2('0x3c')],util[_0x89a2('0x82')](_0x50319f[_0x89a2('0x58')],{'showHidden':![],'depth':null}));switch(_0x3de5bd[_0x89a2('0x3c')]){case _0x89a2('0x83'):if(_0x50319f[_0x89a2('0x58')][_0x89a2('0x84')]&&_0x50319f[_0x89a2('0x58')][_0x89a2('0x84')]===_0x2d8132[_0x89a2('0x85')]){return _0x2d8132[_0x89a2('0x33')]({'read':!![]});}else{logger[_0x89a2('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x89a2('0x83'),util[_0x89a2('0x82')](_0x50319f['body'],{'showHidden':![],'depth':null}));}break;case'plivo':if(_0x50319f[_0x89a2('0x58')][_0x89a2('0x86')]&&_0x50319f[_0x89a2('0x58')][_0x89a2('0x86')]===_0x2d8132[_0x89a2('0x85')]&&_[_0x89a2('0x87')](['sent',_0x89a2('0x88')],_0x50319f[_0x89a2('0x58')][_0x89a2('0x89')])>=0x0){return _0x2d8132[_0x89a2('0x33')]({'read':!![]});}else{logger[_0x89a2('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x89a2('0x8a'),util[_0x89a2('0x82')](_0x50319f[_0x89a2('0x58')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x1efe05=_0x50319f[_0x89a2('0x58')][_0x89a2('0x8b')][0x0];if(_0x1efe05[_0x89a2('0x2b')][_0x89a2('0x8c')]===_0x89a2('0x8d')){return _0x2d8132['update']({'read':!![]});}else{logger[_0x89a2('0x26')](_0x89a2('0x8e'),_0x89a2('0x2b'),_0x89a2('0x8f'),util[_0x89a2('0x82')](_0x50319f[_0x89a2('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x2d8132;}})['then'](respondWithResult(_0x4e4382,null))[_0x89a2('0x29')](handleError(_0x4e4382,null));};
\ No newline at end of file
index 940ca96..d1ca244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2db1=['exports','events','SmsMessage','setMaxListeners','save','update','remove','emit','hook'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x2db1,0x64));var _0x12db=function(_0x1da7f8,_0x3f70aa){_0x1da7f8=_0x1da7f8-0x0;var _0x1b11e3=_0x2db1[_0x1da7f8];return _0x1b11e3;};'use strict';var EventEmitter=require(_0x12db('0x0'));var SmsMessage=require('../../mysqldb')['db'][_0x12db('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x12db('0x2')](0x0);var events={'afterCreate':_0x12db('0x3'),'afterUpdate':_0x12db('0x4'),'afterDestroy':_0x12db('0x5')};function emitEvent(_0x370c0d){return function(_0x70b217,_0x2e4128,_0x2856d9){SmsMessageEvents[_0x12db('0x6')](_0x370c0d+':'+_0x70b217['id'],_0x70b217);SmsMessageEvents[_0x12db('0x6')](_0x370c0d,_0x70b217);_0x2856d9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0x12db('0x7')](e,emitEvent(event));}}module[_0x12db('0x8')]=SmsMessageEvents;
\ No newline at end of file
+var _0x9d83=['hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','remove','emit'];(function(_0x4ad2c3,_0x3f36ff){var _0x346218=function(_0x4f91d1){while(--_0x4f91d1){_0x4ad2c3['push'](_0x4ad2c3['shift']());}};_0x346218(++_0x3f36ff);}(_0x9d83,0x189));var _0x39d8=function(_0x1b98b4,_0xb1826a){_0x1b98b4=_0x1b98b4-0x0;var _0x448bb3=_0x9d83[_0x1b98b4];return _0x448bb3;};'use strict';var EventEmitter=require(_0x39d8('0x0'));var SmsMessage=require(_0x39d8('0x1'))['db'][_0x39d8('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x39d8('0x3')](0x0);var events={'afterCreate':_0x39d8('0x4'),'afterUpdate':'update','afterDestroy':_0x39d8('0x5')};function emitEvent(_0x5e8eaa){return function(_0x304632,_0x8b3645,_0x27ae36){SmsMessageEvents[_0x39d8('0x6')](_0x5e8eaa+':'+_0x304632['id'],_0x304632);SmsMessageEvents['emit'](_0x5e8eaa,_0x304632);_0x27ae36(null);};}for(var e in events){if(events[_0x39d8('0x7')](e)){var event=events[e];SmsMessage[_0x39d8('0x8')](e,emitEvent(event));}}module[_0x39d8('0x9')]=SmsMessageEvents;
\ No newline at end of file
index 969a874..fdfdd27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf296=['keys','sort','length','createHash','md5','hex','signature=','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','https://platform.clickatell.com/messages','UTF-8','apiMessageId','clickatell','bandwidth','https://messaging.bandwidth.com/api/v2/users/','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','status','refid','Token\x20not\x20received','finally','utf8mb4','lodash','util','api','request-promise','path','../../config/environment','./smsMessage.attributes','exports','define','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','get','toLowerCase','direction','secret','isNil','UserId','SmsInteraction','findOne','then','update','catch','error','SmsAccount','type','twilio','accountSid','authToken','phone','create','remote','/api/sms/messages/','/status?token=','token','sid','afterCreate','inspect','SmsMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','sender','login?username=','&password=','GET','split','sms','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','skebby','Missing\x20parameters:\x20username,\x20password','connectel','senderString','POST','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','username','xCALLY\x20Motion','format','%s:%s','Basic\x20%s','toString','base64','http_code','data','queued_count','head','message_id','clickSend','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','messages','Missing\x20parameters:\x20base_url','csc','apiKey','login','text'];(function(_0x52d8e9,_0x402208){var _0x307f94=function(_0x396b4c){while(--_0x396b4c){_0x52d8e9['push'](_0x52d8e9['shift']());}};_0x307f94(++_0x402208);}(_0xf296,0x94));var _0x6f29=function(_0x4ce315,_0x388074){_0x4ce315=_0x4ce315-0x0;var _0x1a6160=_0xf296[_0x4ce315];return _0x1a6160;};'use strict';var _=require(_0x6f29('0x0'));var util=require(_0x6f29('0x1'));var logger=require('../../config/logger')(_0x6f29('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6f29('0x3'));var fs=require('fs');var path=require(_0x6f29('0x4'));var rimraf=require('rimraf');var config=require(_0x6f29('0x5'));var attributes=require(_0x6f29('0x6'));module[_0x6f29('0x7')]=function(_0x4f0712,_0x1d9c3f){return _0x4f0712[_0x6f29('0x8')]('SmsMessage',attributes,{'tableName':_0x6f29('0x9'),'paranoid':![],'indexes':[{'name':_0x6f29('0xa'),'fields':[_0x6f29('0xa')]},{'name':_0x6f29('0xb'),'fields':[_0x6f29('0xc')],'type':_0x6f29('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x42773f,_0x533e59,_0x53db5d){var _0xbf45fd=_0x4f0712['models'];var _0x5201d4=_0x42773f[_0x6f29('0xe')]({'plain':!![]});if(_0x5201d4['direction'][_0x6f29('0xf')]()==='in'||_0x5201d4[_0x6f29('0x10')][_0x6f29('0xf')]()==='out'&&!_0x5201d4[_0x6f29('0x11')]&&!_[_0x6f29('0x12')](_0x5201d4[_0x6f29('0x13')])){_0xbf45fd[_0x6f29('0x14')][_0x6f29('0x15')]({'where':{'id':_0x5201d4['SmsInteractionId']}})[_0x6f29('0x16')](function(_0x115d08){if(_0x115d08){_0x115d08[_0x6f29('0x17')]({'lastMsgAt':_0x5201d4['createdAt'],'lastMsgDirection':_0x5201d4[_0x6f29('0x10')]['toLowerCase']()});}})[_0x6f29('0x18')](function(_0x2907e4){console[_0x6f29('0x19')](_0x2907e4);});}if(_0x5201d4[_0x6f29('0x10')]==='out'&&!_0x5201d4['secret']){var _0x28995e;_0xbf45fd[_0x6f29('0x1a')]['find']({'where':{'id':_0x5201d4['SmsAccountId']},'raw':!![]})[_0x6f29('0x16')](function(_0x19a72c){_0x28995e=_0x19a72c;if(_0x28995e&&_0x28995e[_0x6f29('0x1b')]){switch(_0x28995e[_0x6f29('0x1b')]){case _0x6f29('0x1c'):var _0x4d7964=require(_0x6f29('0x1c'));if(_0x28995e[_0x6f29('0x1d')]&&_0x28995e[_0x6f29('0x1e')]&&_0x28995e[_0x6f29('0x1f')]){var _0x1f7c53=new _0x4d7964(_0x28995e[_0x6f29('0x1d')],_0x28995e['authToken']);_0x1f7c53['messages'][_0x6f29('0x20')]({'body':_0x5201d4[_0x6f29('0xc')],'to':_0x5201d4[_0x6f29('0x1f')],'from':_0x28995e['phone'],'statusCallback':_0x28995e[_0x6f29('0x21')]+_0x6f29('0x22')+_0x5201d4['id']+_0x6f29('0x23')+_0x28995e[_0x6f29('0x24')]})[_0x6f29('0x16')](function(_0x9d7eda){if(_0x9d7eda['sid']){return _0x42773f[_0x6f29('0x17')]({'messageId':_0x9d7eda[_0x6f29('0x25')]});}})[_0x6f29('0x18')](function(_0x54c05b){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6f29('0x26'),_0x6f29('0x1c'),util[_0x6f29('0x27')](_0x54c05b,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x1c'),_0x6f29('0x29'));}break;case'skebby':var _0x36384c=_0x6f29('0x2a');if(_0x28995e['username']&&_0x28995e[_0x6f29('0x2b')]){var _0x8e0348={'recipient':[_0x5201d4[_0x6f29('0x1f')]],'message':_0x5201d4[_0x6f29('0xc')],'message_type':_0x28995e[_0x6f29('0x2c')]};if(_0x28995e['smsMethod']&&_0x28995e[_0x6f29('0x2c')]!=='SI'){_0x8e0348[_0x6f29('0x2d')]=_0x28995e['phone'];}var _0x5c43b2={'url':_0x36384c+_0x6f29('0x2e')+_0x28995e['username']+_0x6f29('0x2f')+_0x28995e['password'],'method':_0x6f29('0x30')};rp(_0x5c43b2)[_0x6f29('0x16')](function(_0x100bbf){var _0x52ebd3=_0x100bbf[_0x6f29('0x31')](';');var _0x220ddf={'user_key':_0x52ebd3[0x0],'session_key':_0x52ebd3[0x1]};_0x5c43b2={'url':_0x36384c+_0x6f29('0x32'),'method':'POST','headers':{'user_key':_0x220ddf[_0x6f29('0x33')],'Session_key':_0x220ddf[_0x6f29('0x34')]},'json':!![],'body':_0x8e0348};return rp(_0x5c43b2);})['then'](function(_0x3cdcfe){if(_0x3cdcfe[_0x6f29('0x35')]>=0x1){var _0x404097={'messageId':_0x3cdcfe[_0x6f29('0x36')]};if(_0x28995e[_0x6f29('0x2c')]!=='GP'||!_0x28995e[_0x6f29('0x37')]){_0x404097[_0x6f29('0x38')]=!![];}return _0x42773f[_0x6f29('0x17')](_0x404097);}else{return logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate','skebby',util[_0x6f29('0x27')](_0x3cdcfe,{'showHidden':![],'depth':null}));}})['catch'](function(_0xf9fed3){return logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate',_0x6f29('0x39'),util[_0x6f29('0x27')](_0xf9fed3,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x6f29('0x28'),'afterCreate',_0x6f29('0x39'),_0x6f29('0x3a'));}break;case _0x6f29('0x3b'):if(_0x28995e['authToken']){var _0x42135a={'recipient':_0x5201d4[_0x6f29('0x1f')],'message':_0x5201d4[_0x6f29('0xc')],'sender':_0x28995e[_0x6f29('0x3c')]||_0x28995e[_0x6f29('0x1f')],'authorization':_0x28995e[_0x6f29('0x1e')]};var _0x533e59={'method':_0x6f29('0x3d'),'uri':_0x6f29('0x3e'),'body':_0x42135a,'json':!![]};rp(_0x533e59)[_0x6f29('0x16')](function(_0x314004){var _0x476090={'messageId':_0x314004[_0x6f29('0x3f')]};if(!_0x28995e['deliveryReport']){_0x476090['read']=!![];}return _0x42773f[_0x6f29('0x17')](_0x476090);})[_0x6f29('0x18')](function(_0x3b23d4){logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x3b'),util['inspect'](_0x3b23d4,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate','connectel',_0x6f29('0x40'));}break;case'clicksend':if(_0x28995e[_0x6f29('0x41')]&&_0x28995e[_0x6f29('0x2b')]){var _0x42135a={'messages':[{'source':_0x6f29('0x42'),'to':_0x5201d4['phone'],'body':_0x5201d4['body'],'from':_0x28995e[_0x6f29('0x3c')]||_0x28995e[_0x6f29('0x1f')]}]};var _0x1ec590=util[_0x6f29('0x43')](_0x6f29('0x44'),_0x28995e[_0x6f29('0x41')],_0x28995e['password']);var _0x533e59={'method':_0x6f29('0x3d'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x42135a,'headers':{'Authorization':util[_0x6f29('0x43')](_0x6f29('0x45'),new Buffer(_0x1ec590)[_0x6f29('0x46')](_0x6f29('0x47')))},'json':!![]};rp(_0x533e59)[_0x6f29('0x16')](function(_0x2bc09b){if(_0x2bc09b[_0x6f29('0x48')]>=0xc8&&_0x2bc09b[_0x6f29('0x48')]<=0xce){if(_0x2bc09b[_0x6f29('0x49')]&&_0x2bc09b[_0x6f29('0x49')][_0x6f29('0x4a')]>0x0){var _0x3ab5d9=_[_0x6f29('0x4b')](_0x2bc09b[_0x6f29('0x49')]['messages']);var _0x2df2fc={'messageId':_0x3ab5d9[_0x6f29('0x4c')]};if(!_0x28995e['deliveryReport']){_0x2df2fc[_0x6f29('0x38')]=!![];}return _0x42773f[_0x6f29('0x17')](_0x2df2fc);}else{logger[_0x6f29('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6f29('0x26'),_0x6f29('0x4d'),util['inspect'](_0x2bc09b,{'showHidden':![],'depth':null}));}}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x4d'),util[_0x6f29('0x27')](_0x2bc09b,{'showHidden':![],'depth':null}));}})[_0x6f29('0x18')](function(_0x118f6e){logger[_0x6f29('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6f29('0x26'),_0x6f29('0x4d'),util[_0x6f29('0x27')](_0x118f6e,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate',_0x6f29('0x4d'),_0x6f29('0x3a'));}break;case _0x6f29('0x4e'):if(_0x28995e[_0x6f29('0x4f')]&&_0x28995e['authToken']){var _0x42135a={'dst':_0x5201d4[_0x6f29('0x1f')],'text':_0x5201d4[_0x6f29('0xc')],'src':_0x28995e[_0x6f29('0x3c')]||_0x28995e['phone'],'url':_0x28995e[_0x6f29('0x21')]+_0x6f29('0x22')+_0x5201d4['id']+_0x6f29('0x23')+_0x28995e[_0x6f29('0x24')]};var _0x1ec590=util['format'](_0x6f29('0x44'),_0x28995e[_0x6f29('0x4f')],_0x28995e[_0x6f29('0x1e')]);var _0x533e59={'method':_0x6f29('0x3d'),'uri':util[_0x6f29('0x43')](_0x6f29('0x50'),_0x28995e[_0x6f29('0x4f')]),'body':_0x42135a,'headers':{'Authorization':util[_0x6f29('0x43')](_0x6f29('0x45'),new Buffer(_0x1ec590)['toString'](_0x6f29('0x47')))},'json':!![]};rp(_0x533e59)[_0x6f29('0x16')](function(_0x5bf27c){var _0x54c208={'messageId':_0x5bf27c[_0x6f29('0x51')][0x0]};return _0x42773f[_0x6f29('0x17')](_0x54c208);})['catch'](function(_0x9f4c47){logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate',_0x6f29('0x4e'),util[_0x6f29('0x27')](_0x9f4c47,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x4e'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case _0x6f29('0x52'):if(_0x28995e[_0x6f29('0x41')]&&_0x28995e[_0x6f29('0x2b')]){if(_0x28995e[_0x6f29('0x53')]){var _0x5dba6a={'method':_0x6f29('0x3d'),'uri':_0x28995e[_0x6f29('0x53')]+_0x6f29('0x54'),'body':{'username':_0x28995e[_0x6f29('0x41')],'password':_0x28995e['password']},'json':!![]};return rp(_0x5dba6a)[_0x6f29('0x16')](function(_0x145220){var _0x56f730={'method':_0x6f29('0x3d'),'uri':_0x28995e[_0x6f29('0x53')]+_0x6f29('0x55'),'body':{'messages':[{'from':_0x28995e[_0x6f29('0x1f')],'destinations':[{'to':_0x5201d4[_0x6f29('0x1f')]}],'text':_0x5201d4[_0x6f29('0xc')],'notifyUrl':_0x28995e[_0x6f29('0x21')]+'/api/sms/messages/'+_0x5201d4['id']+_0x6f29('0x23')+_0x28995e[_0x6f29('0x24')],'notifyContentType':_0x6f29('0x56'),'callbackData':_0x28995e[_0x6f29('0x1f')]+';'+_0x5201d4[_0x6f29('0xc')]}]},'headers':{'Authorization':_0x6f29('0x57')+_0x145220['token']},'json':!![]};return rp(_0x56f730)[_0x6f29('0x16')](function(_0x406734){if(_0x406734[_0x6f29('0x58')]){var _0x5aa655={'messageId':_0x406734['messages'][0x0][_0x6f29('0xa')]};if(!_0x28995e[_0x6f29('0x37')]){_0x5aa655[_0x6f29('0x38')]=!![];}return _0x42773f[_0x6f29('0x17')](_0x5aa655);}else{return logger[_0x6f29('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6f29('0x26'),_0x6f29('0x52'),util[_0x6f29('0x27')](_0x406734,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x2302c0){return logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x52'),util[_0x6f29('0x27')](_0x2302c0,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate',_0x6f29('0x52'),_0x6f29('0x59'));}}else{logger[_0x6f29('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','infobip',_0x6f29('0x3a'));}break;case _0x6f29('0x5a'):var _0x666fcc=require('crypto');if(_0x28995e[_0x6f29('0x5b')]){var _0x1c555f={};_0x1c555f[_0x6f29('0x5c')]=_0x28995e[_0x6f29('0x41')];_0x1c555f[_0x6f29('0x1f')]=_0x5201d4[_0x6f29('0x1f')];_0x1c555f[_0x6f29('0x2d')]=_0x28995e[_0x6f29('0x1f')];_0x1c555f[_0x6f29('0x5d')]=_0x5201d4[_0x6f29('0xc')];_0x1c555f['timestamp']=+new Date();var _0x21989f='';var _0x53c7a5='';var _0x2b2766=Object[_0x6f29('0x5e')](_0x1c555f);_0x2b2766[_0x6f29('0x5f')]();for(var _0x525a78=0x0;_0x525a78<_0x2b2766[_0x6f29('0x60')];_0x525a78++){if(_0x21989f!=''){_0x21989f+='&';}_0x21989f+=_0x2b2766[_0x525a78]+'='+encodeURIComponent(_0x1c555f[_0x2b2766[_0x525a78]]);_0x53c7a5+=_0x1c555f[_0x2b2766[_0x525a78]];}_0x53c7a5+=_0x28995e[_0x6f29('0x5b')];_0x53c7a5=_0x666fcc[_0x6f29('0x61')](_0x6f29('0x62'))[_0x6f29('0x17')](_0x53c7a5)['digest'](_0x6f29('0x63'));if(_0x21989f!==''){_0x21989f+='&';}_0x21989f+=_0x6f29('0x64')+_0x53c7a5;var _0x5c43b2={'method':_0x6f29('0x30'),'uri':_0x28995e[_0x6f29('0x53')]+_0x6f29('0x65')+_0x21989f,'json':!![]};return rp(_0x5c43b2)[_0x6f29('0x16')](function(_0x422f12){var _0x3f1391=Object[_0x6f29('0x5e')](_0x422f12);if(_0x422f12[_0x3f1391[0x0]][_0x6f29('0x19')]&&parseInt(_0x422f12[_0x3f1391[0x0]][_0x6f29('0x19')])===0x0){var _0x3c1551={'messageId':_0x422f12[_0x3f1391[0x0]][_0x6f29('0x66')]};if(!_0x28995e['deliveryReport']){_0x3c1551[_0x6f29('0x38')]=!![];}return _0x42773f[_0x6f29('0x17')](_0x3c1551);}else{return logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x5a'),util[_0x6f29('0x27')](_0x422f12['error'],{'showHidden':![],'depth':null}));}})[_0x6f29('0x18')](function(_0x3150f9){return logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x5a'),util[_0x6f29('0x27')](_0x3150f9,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x5a'),_0x6f29('0x67'));}break;case'clickatell':if(_0x28995e['apiKey']){var _0x51b4ae={'method':_0x6f29('0x3d'),'uri':_0x6f29('0x68'),'headers':{'Authorization':_0x28995e['apiKey']},'body':{'content':_0x5201d4[_0x6f29('0xc')],'to':[_0x5201d4[_0x6f29('0x1f')]],'from':_0x28995e['phone'],'binary':![],'clientMessageId':'uuid','charset':_0x6f29('0x69')},'json':!![]};rp(_0x51b4ae)[_0x6f29('0x16')](function(_0x4446ca){if(!_0x4446ca[_0x6f29('0x19')]){var _0x21703b={'messageId':_0x4446ca[_0x6f29('0x58')][0x0][_0x6f29('0x6a')]};if(!_0x28995e[_0x6f29('0x37')]){_0x21703b[_0x6f29('0x38')]=!![];}return _0x42773f[_0x6f29('0x17')](_0x21703b);}else{return logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x6b'),util[_0x6f29('0x27')](_0x4446ca['error'],{'showHidden':![],'depth':null}));}})[_0x6f29('0x18')](function(_0x1e503b){return logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),'clickatell',util[_0x6f29('0x27')](_0x1e503b,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x6b'),_0x6f29('0x67'));}break;case _0x6f29('0x6c'):if(_0x28995e[_0x6f29('0x41')]&&_0x28995e[_0x6f29('0x2b')]){var _0x1ec590=util[_0x6f29('0x43')](_0x6f29('0x44'),_0x28995e[_0x6f29('0x41')],_0x28995e[_0x6f29('0x2b')]);var _0x533e59={'method':'POST','uri':_0x6f29('0x6d')+_0x28995e['accountId']+'/messages','body':{'to':[_0x5201d4['phone']],'text':_0x5201d4[_0x6f29('0xc')],'from':_0x28995e[_0x6f29('0x1f')],'applicationId':_0x28995e[_0x6f29('0x6e')]},'headers':{'Authorization':util['format'](_0x6f29('0x45'),new Buffer(_0x1ec590)['toString'](_0x6f29('0x47')))},'json':!![]};rp(_0x533e59)[_0x6f29('0x16')](function(_0x580c8a){if(_0x580c8a['id']){var _0x239ece={'messageId':_0x580c8a['id']};return _0x42773f['update'](_0x239ece);}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate',_0x6f29('0x6c'),util[_0x6f29('0x27')](_0x580c8a,{'showHidden':![],'depth':null}));}})[_0x6f29('0x18')](function(_0x24a678){logger[_0x6f29('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6f29('0x26'),'bandwidth',util[_0x6f29('0x27')](_0x24a678,{'showHidden':![],'depth':null}));});}else{logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate',_0x6f29('0x6c'),_0x6f29('0x3a'));}break;case _0x6f29('0x6f'):if(_0x28995e['apiKey']){var _0x3034db={};var _0x5c43b2={'method':_0x6f29('0x3d'),'uri':_0x6f29('0x70'),'headers':{'Authorization':_0x6f29('0x71')+_0x28995e['apiKey'],'Content-Type':_0x6f29('0x56')},'body':{'from':_0x28995e[_0x6f29('0x1f')],'to':_0x5201d4['phone'],'text':_0x5201d4['body']},'json':!![]};return rp(_0x5c43b2)[_0x6f29('0x16')](function(_0x23b4a4){if(_0x23b4a4[_0x6f29('0x72')]==0xca){_0x3034db[_0x6f29('0x73')]=_0x23b4a4;var _0x583211={'method':_0x6f29('0x3d'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0x6f29('0x71')+_0x28995e['apiKey'],'Content-Type':_0x6f29('0x56')},'body':{'refid':_0x3034db[_0x6f29('0x73')]['refid']},'json':!![]};return rp(_0x583211)[_0x6f29('0x16')](function(_0x48c3f8){_0x3034db[_0x6f29('0x74')]=_0x48c3f8;var _0x5d53f0={'messageId':_0x3034db['message'][_0x6f29('0x75')],'read':!![]};return _0x42773f[_0x6f29('0x17')](_0x5d53f0);});}else{return logger[_0x6f29('0x19')](_0x6f29('0x28'),'afterCreate','intelepeer',util['inspect'](_0x23b4a4,{'showHidden':![],'depth':null}));}})[_0x6f29('0x18')](function(_0xe82f16){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6f29('0x26'),'intelepeer',util[_0x6f29('0x27')](_0xe82f16,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0x6f29('0x28'),_0x6f29('0x26'),_0x6f29('0x6f'),_0x6f29('0x76'));}break;}}})[_0x6f29('0x77')](function(){_0x53db5d();});}else{_0x53db5d();}}},'charset':_0x6f29('0x78'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x3ce4=['messages','create','/api/sms/messages/','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','login?username=','&password=','GET','split','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','read','Missing\x20parameters:\x20authToken','clicksend','format','%s:%s','https://rest.clicksend.com/v3/sms/send','toString','http_code','data','head','message_id','clickSend','plivo','authId','remote','/status?token=','https://api.plivo.com/v1/Account/%s/Message/','Basic\x20%s','base64','baseUrl','application/json','infobip','Missing\x20parameters:\x20base_url','crypto','apiKey','login','timestamp','sort','length','createHash','md5','digest','hex','signature=','/external/get/send.php?','id_sms','csc','Missing\x20parameters:\x20apiKey','https://platform.clickatell.com/messages','clickatell','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','Missing\x20parameters:\x20username,\x20password','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','intelepeer','Token\x20not\x20received','finally','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','./smsMessage.attributes','exports','SmsMessage','sms_messages','messageId','body','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','UserId','SmsInteraction','SmsInteractionId','update','createdAt','catch','error','SmsAccount','find','SmsAccountId','then','type','twilio','authToken','phone'];(function(_0x3bf1e0,_0x1580be){var _0x5a9ded=function(_0x229240){while(--_0x229240){_0x3bf1e0['push'](_0x3bf1e0['shift']());}};_0x5a9ded(++_0x1580be);}(_0x3ce4,0xcb));var _0x43ce=function(_0x280f4a,_0x2ed8d6){_0x280f4a=_0x280f4a-0x0;var _0x1bb157=_0x3ce4[_0x280f4a];return _0x1bb157;};'use strict';var _=require(_0x43ce('0x0'));var util=require('util');var logger=require(_0x43ce('0x1'))('api');var moment=require(_0x43ce('0x2'));var BPromise=require(_0x43ce('0x3'));var rp=require(_0x43ce('0x4'));var fs=require('fs');var path=require(_0x43ce('0x5'));var rimraf=require(_0x43ce('0x6'));var config=require('../../config/environment');var attributes=require(_0x43ce('0x7'));module[_0x43ce('0x8')]=function(_0x563597,_0x1412d1){return _0x563597['define'](_0x43ce('0x9'),attributes,{'tableName':_0x43ce('0xa'),'paranoid':![],'indexes':[{'name':_0x43ce('0xb'),'fields':[_0x43ce('0xb')]},{'name':'fti_sms_messages','fields':[_0x43ce('0xc')],'type':_0x43ce('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x6c5677,_0x16e93c,_0x19e378){var _0x3d7d60=_0x563597[_0x43ce('0xe')];var _0x145982=_0x6c5677['get']({'plain':!![]});if(_0x145982[_0x43ce('0xf')]['toLowerCase']()==='in'||_0x145982[_0x43ce('0xf')][_0x43ce('0x10')]()===_0x43ce('0x11')&&!_0x145982[_0x43ce('0x12')]&&!_[_0x43ce('0x13')](_0x145982[_0x43ce('0x14')])){_0x3d7d60[_0x43ce('0x15')]['findOne']({'where':{'id':_0x145982[_0x43ce('0x16')]}})['then'](function(_0x1a02f8){if(_0x1a02f8){_0x1a02f8[_0x43ce('0x17')]({'lastMsgAt':_0x145982[_0x43ce('0x18')],'lastMsgDirection':_0x145982['direction'][_0x43ce('0x10')]()});}})[_0x43ce('0x19')](function(_0x298771){console[_0x43ce('0x1a')](_0x298771);});}if(_0x145982[_0x43ce('0xf')]===_0x43ce('0x11')&&!_0x145982[_0x43ce('0x12')]){var _0xfb7e97;_0x3d7d60[_0x43ce('0x1b')][_0x43ce('0x1c')]({'where':{'id':_0x145982[_0x43ce('0x1d')]},'raw':!![]})[_0x43ce('0x1e')](function(_0x36b87f){_0xfb7e97=_0x36b87f;if(_0xfb7e97&&_0xfb7e97[_0x43ce('0x1f')]){switch(_0xfb7e97[_0x43ce('0x1f')]){case _0x43ce('0x20'):var _0x18d500=require('twilio');if(_0xfb7e97['accountSid']&&_0xfb7e97[_0x43ce('0x21')]&&_0xfb7e97[_0x43ce('0x22')]){var _0x34db72=new _0x18d500(_0xfb7e97['accountSid'],_0xfb7e97['authToken']);_0x34db72[_0x43ce('0x23')][_0x43ce('0x24')]({'body':_0x145982[_0x43ce('0xc')],'to':_0x145982[_0x43ce('0x22')],'from':_0xfb7e97['phone'],'statusCallback':_0xfb7e97['remote']+_0x43ce('0x25')+_0x145982['id']+'/status?token='+_0xfb7e97[_0x43ce('0x26')]})[_0x43ce('0x1e')](function(_0x2a74ec){if(_0x2a74ec[_0x43ce('0x27')]){return _0x6c5677[_0x43ce('0x17')]({'messageId':_0x2a74ec['sid']});}})['catch'](function(_0x151777){logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),'twilio',util[_0x43ce('0x2a')](_0x151777,{'showHidden':![],'depth':null}));});}else{logger[_0x43ce('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x43ce('0x29'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0x43ce('0x2b'):var _0x28b08b=_0x43ce('0x2c');if(_0xfb7e97[_0x43ce('0x2d')]&&_0xfb7e97[_0x43ce('0x2e')]){var _0x5a1607={'recipient':[_0x145982[_0x43ce('0x22')]],'message':_0x145982[_0x43ce('0xc')],'message_type':_0xfb7e97[_0x43ce('0x2f')]};if(_0xfb7e97[_0x43ce('0x2f')]&&_0xfb7e97['smsMethod']!=='SI'){_0x5a1607[_0x43ce('0x30')]=_0xfb7e97[_0x43ce('0x22')];}var _0x9b85c3={'url':_0x28b08b+_0x43ce('0x31')+_0xfb7e97[_0x43ce('0x2d')]+_0x43ce('0x32')+_0xfb7e97[_0x43ce('0x2e')],'method':_0x43ce('0x33')};rp(_0x9b85c3)[_0x43ce('0x1e')](function(_0x50aa48){var _0x39a0ee=_0x50aa48[_0x43ce('0x34')](';');var _0x4264de={'user_key':_0x39a0ee[0x0],'session_key':_0x39a0ee[0x1]};_0x9b85c3={'url':_0x28b08b+_0x43ce('0x35'),'method':_0x43ce('0x36'),'headers':{'user_key':_0x4264de[_0x43ce('0x37')],'Session_key':_0x4264de[_0x43ce('0x38')]},'json':!![],'body':_0x5a1607};return rp(_0x9b85c3);})['then'](function(_0xd84c19){if(_0xd84c19[_0x43ce('0x39')]>=0x1){var _0x30c188={'messageId':_0xd84c19[_0x43ce('0x3a')]};if(_0xfb7e97[_0x43ce('0x2f')]!=='GP'||!_0xfb7e97[_0x43ce('0x3b')]){_0x30c188['read']=!![];}return _0x6c5677[_0x43ce('0x17')](_0x30c188);}else{return logger['error'](_0x43ce('0x28'),_0x43ce('0x29'),'skebby',util[_0x43ce('0x2a')](_0xd84c19,{'showHidden':![],'depth':null}));}})['catch'](function(_0x5317e8){return logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),_0x43ce('0x2b'),util[_0x43ce('0x2a')](_0x5317e8,{'showHidden':![],'depth':null}));});}else{logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),'skebby','Missing\x20parameters:\x20username,\x20password');}break;case _0x43ce('0x3c'):if(_0xfb7e97[_0x43ce('0x21')]){var _0xc8c497={'recipient':_0x145982[_0x43ce('0x22')],'message':_0x145982['body'],'sender':_0xfb7e97[_0x43ce('0x3d')]||_0xfb7e97[_0x43ce('0x22')],'authorization':_0xfb7e97['authToken']};var _0x16e93c={'method':'POST','uri':_0x43ce('0x3e'),'body':_0xc8c497,'json':!![]};rp(_0x16e93c)[_0x43ce('0x1e')](function(_0x256f9a){var _0x4152ec={'messageId':_0x256f9a[_0x43ce('0x3f')]};if(!_0xfb7e97[_0x43ce('0x3b')]){_0x4152ec[_0x43ce('0x40')]=!![];}return _0x6c5677['update'](_0x4152ec);})['catch'](function(_0x296cc3){logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),'connectel',util[_0x43ce('0x2a')](_0x296cc3,{'showHidden':![],'depth':null}));});}else{logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),_0x43ce('0x3c'),_0x43ce('0x41'));}break;case _0x43ce('0x42'):if(_0xfb7e97[_0x43ce('0x2d')]&&_0xfb7e97['password']){var _0xc8c497={'messages':[{'source':'xCALLY\x20Motion','to':_0x145982[_0x43ce('0x22')],'body':_0x145982[_0x43ce('0xc')],'from':_0xfb7e97['senderString']||_0xfb7e97[_0x43ce('0x22')]}]};var _0x53be3e=util[_0x43ce('0x43')](_0x43ce('0x44'),_0xfb7e97[_0x43ce('0x2d')],_0xfb7e97[_0x43ce('0x2e')]);var _0x16e93c={'method':_0x43ce('0x36'),'uri':_0x43ce('0x45'),'body':_0xc8c497,'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x53be3e)[_0x43ce('0x46')]('base64'))},'json':!![]};rp(_0x16e93c)[_0x43ce('0x1e')](function(_0x1beba1){if(_0x1beba1[_0x43ce('0x47')]>=0xc8&&_0x1beba1['http_code']<=0xce){if(_0x1beba1[_0x43ce('0x48')]&&_0x1beba1[_0x43ce('0x48')]['queued_count']>0x0){var _0x407f0c=_[_0x43ce('0x49')](_0x1beba1[_0x43ce('0x48')]['messages']);var _0x56d3c4={'messageId':_0x407f0c[_0x43ce('0x4a')]};if(!_0xfb7e97['deliveryReport']){_0x56d3c4[_0x43ce('0x40')]=!![];}return _0x6c5677[_0x43ce('0x17')](_0x56d3c4);}else{logger[_0x43ce('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x43ce('0x4b'),util[_0x43ce('0x2a')](_0x1beba1,{'showHidden':![],'depth':null}));}}else{logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),'clickSend',util[_0x43ce('0x2a')](_0x1beba1,{'showHidden':![],'depth':null}));}})['catch'](function(_0x2dac25){logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),_0x43ce('0x4b'),util[_0x43ce('0x2a')](_0x2dac25,{'showHidden':![],'depth':null}));});}else{logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),_0x43ce('0x4b'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x43ce('0x4c'):if(_0xfb7e97[_0x43ce('0x4d')]&&_0xfb7e97[_0x43ce('0x21')]){var _0xc8c497={'dst':_0x145982[_0x43ce('0x22')],'text':_0x145982[_0x43ce('0xc')],'src':_0xfb7e97[_0x43ce('0x3d')]||_0xfb7e97[_0x43ce('0x22')],'url':_0xfb7e97[_0x43ce('0x4e')]+_0x43ce('0x25')+_0x145982['id']+_0x43ce('0x4f')+_0xfb7e97[_0x43ce('0x26')]};var _0x53be3e=util[_0x43ce('0x43')](_0x43ce('0x44'),_0xfb7e97[_0x43ce('0x4d')],_0xfb7e97[_0x43ce('0x21')]);var _0x16e93c={'method':'POST','uri':util['format'](_0x43ce('0x50'),_0xfb7e97[_0x43ce('0x4d')]),'body':_0xc8c497,'headers':{'Authorization':util[_0x43ce('0x43')](_0x43ce('0x51'),new Buffer(_0x53be3e)['toString'](_0x43ce('0x52')))},'json':!![]};rp(_0x16e93c)['then'](function(_0x106fa1){var _0x1c6627={'messageId':_0x106fa1['message_uuid'][0x0]};return _0x6c5677[_0x43ce('0x17')](_0x1c6627);})[_0x43ce('0x19')](function(_0x114860){logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),_0x43ce('0x4c'),util[_0x43ce('0x2a')](_0x114860,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x43ce('0x28'),_0x43ce('0x29'),_0x43ce('0x4c'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case'infobip':if(_0xfb7e97[_0x43ce('0x2d')]&&_0xfb7e97[_0x43ce('0x2e')]){if(_0xfb7e97['baseUrl']){var _0x44a5c0={'method':_0x43ce('0x36'),'uri':_0xfb7e97[_0x43ce('0x53')]+'/auth/1/session','body':{'username':_0xfb7e97[_0x43ce('0x2d')],'password':_0xfb7e97[_0x43ce('0x2e')]},'json':!![]};return rp(_0x44a5c0)[_0x43ce('0x1e')](function(_0x2f5f05){var _0x3dc07d={'method':'POST','uri':_0xfb7e97[_0x43ce('0x53')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0xfb7e97['phone'],'destinations':[{'to':_0x145982[_0x43ce('0x22')]}],'text':_0x145982[_0x43ce('0xc')],'notifyUrl':_0xfb7e97['remote']+_0x43ce('0x25')+_0x145982['id']+_0x43ce('0x4f')+_0xfb7e97[_0x43ce('0x26')],'notifyContentType':_0x43ce('0x54'),'callbackData':_0xfb7e97[_0x43ce('0x22')]+';'+_0x145982[_0x43ce('0xc')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x2f5f05[_0x43ce('0x26')]},'json':!![]};return rp(_0x3dc07d)[_0x43ce('0x1e')](function(_0xa0c0ae){if(_0xa0c0ae[_0x43ce('0x23')]){var _0x1605f4={'messageId':_0xa0c0ae[_0x43ce('0x23')][0x0]['messageId']};if(!_0xfb7e97[_0x43ce('0x3b')]){_0x1605f4['read']=!![];}return _0x6c5677[_0x43ce('0x17')](_0x1605f4);}else{return logger[_0x43ce('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x43ce('0x29'),'infobip',util[_0x43ce('0x2a')](_0xa0c0ae,{'showHidden':![],'depth':null}));}});})[_0x43ce('0x19')](function(_0x2771d9){return logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),_0x43ce('0x55'),util[_0x43ce('0x2a')](_0x2771d9,{'showHidden':![],'depth':null}));});}else{logger[_0x43ce('0x1a')](_0x43ce('0x28'),'afterCreate',_0x43ce('0x55'),_0x43ce('0x56'));}}else{logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),'infobip','Missing\x20parameters:\x20username,\x20password');}break;case'csc':var _0x100fd9=require(_0x43ce('0x57'));if(_0xfb7e97[_0x43ce('0x58')]){var _0x27d25a={};_0x27d25a[_0x43ce('0x59')]=_0xfb7e97[_0x43ce('0x2d')];_0x27d25a[_0x43ce('0x22')]=_0x145982[_0x43ce('0x22')];_0x27d25a[_0x43ce('0x30')]=_0xfb7e97[_0x43ce('0x22')];_0x27d25a['text']=_0x145982[_0x43ce('0xc')];_0x27d25a[_0x43ce('0x5a')]=+new Date();var _0x3a9112='';var _0x203353='';var _0x52a4c=Object['keys'](_0x27d25a);_0x52a4c[_0x43ce('0x5b')]();for(var _0x277a50=0x0;_0x277a50<_0x52a4c[_0x43ce('0x5c')];_0x277a50++){if(_0x3a9112!=''){_0x3a9112+='&';}_0x3a9112+=_0x52a4c[_0x277a50]+'='+encodeURIComponent(_0x27d25a[_0x52a4c[_0x277a50]]);_0x203353+=_0x27d25a[_0x52a4c[_0x277a50]];}_0x203353+=_0xfb7e97[_0x43ce('0x58')];_0x203353=_0x100fd9[_0x43ce('0x5d')](_0x43ce('0x5e'))[_0x43ce('0x17')](_0x203353)[_0x43ce('0x5f')](_0x43ce('0x60'));if(_0x3a9112!==''){_0x3a9112+='&';}_0x3a9112+=_0x43ce('0x61')+_0x203353;var _0x9b85c3={'method':_0x43ce('0x33'),'uri':_0xfb7e97[_0x43ce('0x53')]+_0x43ce('0x62')+_0x3a9112,'json':!![]};return rp(_0x9b85c3)['then'](function(_0x586cb9){var _0x5993ca=Object['keys'](_0x586cb9);if(_0x586cb9[_0x5993ca[0x0]][_0x43ce('0x1a')]&&parseInt(_0x586cb9[_0x5993ca[0x0]]['error'])===0x0){var _0xf456aa={'messageId':_0x586cb9[_0x5993ca[0x0]][_0x43ce('0x63')]};if(!_0xfb7e97[_0x43ce('0x3b')]){_0xf456aa['read']=!![];}return _0x6c5677[_0x43ce('0x17')](_0xf456aa);}else{return logger[_0x43ce('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x43ce('0x64'),util[_0x43ce('0x2a')](_0x586cb9[_0x43ce('0x1a')],{'showHidden':![],'depth':null}));}})[_0x43ce('0x19')](function(_0xfb3331){return logger['error'](_0x43ce('0x28'),_0x43ce('0x29'),_0x43ce('0x64'),util[_0x43ce('0x2a')](_0xfb3331,{'showHidden':![],'depth':null}));});}else{logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),'csc',_0x43ce('0x65'));}break;case'clickatell':if(_0xfb7e97[_0x43ce('0x58')]){var _0x2c65ec={'method':_0x43ce('0x36'),'uri':_0x43ce('0x66'),'headers':{'Authorization':_0xfb7e97[_0x43ce('0x58')]},'body':{'content':_0x145982['body'],'to':[_0x145982[_0x43ce('0x22')]],'from':_0xfb7e97[_0x43ce('0x22')],'binary':![],'clientMessageId':'uuid','charset':'UTF-8'},'json':!![]};rp(_0x2c65ec)[_0x43ce('0x1e')](function(_0x3e74b4){if(!_0x3e74b4[_0x43ce('0x1a')]){var _0x2103e5={'messageId':_0x3e74b4[_0x43ce('0x23')][0x0]['apiMessageId']};if(!_0xfb7e97[_0x43ce('0x3b')]){_0x2103e5[_0x43ce('0x40')]=!![];}return _0x6c5677[_0x43ce('0x17')](_0x2103e5);}else{return logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),'clickatell',util[_0x43ce('0x2a')](_0x3e74b4['error'],{'showHidden':![],'depth':null}));}})['catch'](function(_0x22c4f1){return logger['error'](_0x43ce('0x28'),_0x43ce('0x29'),'clickatell',util[_0x43ce('0x2a')](_0x22c4f1,{'showHidden':![],'depth':null}));});}else{logger[_0x43ce('0x1a')](_0x43ce('0x28'),'afterCreate',_0x43ce('0x67'),_0x43ce('0x65'));}break;case _0x43ce('0x68'):if(_0xfb7e97[_0x43ce('0x2d')]&&_0xfb7e97[_0x43ce('0x2e')]){var _0x53be3e=util[_0x43ce('0x43')](_0x43ce('0x44'),_0xfb7e97[_0x43ce('0x2d')],_0xfb7e97['password']);var _0x16e93c={'method':'POST','uri':_0x43ce('0x69')+_0xfb7e97[_0x43ce('0x6a')]+_0x43ce('0x6b'),'body':{'to':[_0x145982[_0x43ce('0x22')]],'text':_0x145982[_0x43ce('0xc')],'from':_0xfb7e97[_0x43ce('0x22')],'applicationId':_0xfb7e97[_0x43ce('0x6c')]},'headers':{'Authorization':util[_0x43ce('0x43')](_0x43ce('0x51'),new Buffer(_0x53be3e)[_0x43ce('0x46')]('base64'))},'json':!![]};rp(_0x16e93c)[_0x43ce('0x1e')](function(_0x7ae8d0){if(_0x7ae8d0['id']){var _0x287810={'messageId':_0x7ae8d0['id']};return _0x6c5677['update'](_0x287810);}else{logger[_0x43ce('0x1a')](_0x43ce('0x28'),'afterCreate',_0x43ce('0x68'),util[_0x43ce('0x2a')](_0x7ae8d0,{'showHidden':![],'depth':null}));}})[_0x43ce('0x19')](function(_0x538ad3){logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),_0x43ce('0x68'),util[_0x43ce('0x2a')](_0x538ad3,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x43ce('0x28'),_0x43ce('0x29'),_0x43ce('0x68'),_0x43ce('0x6d'));}break;case'intelepeer':if(_0xfb7e97[_0x43ce('0x58')]){var _0xbd8851={};var _0x9b85c3={'method':_0x43ce('0x36'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0x43ce('0x6e')+_0xfb7e97[_0x43ce('0x58')],'Content-Type':_0x43ce('0x54')},'body':{'from':_0xfb7e97[_0x43ce('0x22')],'to':_0x145982['phone'],'text':_0x145982[_0x43ce('0xc')]},'json':!![]};return rp(_0x9b85c3)[_0x43ce('0x1e')](function(_0x268d11){if(_0x268d11[_0x43ce('0x6f')]==0xca){_0xbd8851[_0x43ce('0x70')]=_0x268d11;var _0x549967={'method':_0x43ce('0x36'),'uri':_0x43ce('0x71'),'headers':{'Authorization':_0x43ce('0x6e')+_0xfb7e97['apiKey'],'Content-Type':'application/json'},'body':{'refid':_0xbd8851[_0x43ce('0x70')][_0x43ce('0x72')]},'json':!![]};return rp(_0x549967)[_0x43ce('0x1e')](function(_0x1b6f0a){_0xbd8851[_0x43ce('0x73')]=_0x1b6f0a;var _0x3005d6={'messageId':_0xbd8851[_0x43ce('0x70')][_0x43ce('0x72')],'read':!![]};return _0x6c5677['update'](_0x3005d6);});}else{return logger[_0x43ce('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x43ce('0x29'),_0x43ce('0x74'),util[_0x43ce('0x2a')](_0x268d11,{'showHidden':![],'depth':null}));}})['catch'](function(_0x538b7d){return logger[_0x43ce('0x1a')](_0x43ce('0x28'),_0x43ce('0x29'),_0x43ce('0x74'),util['inspect'](_0x538b7d,{'showHidden':![],'depth':null}));});}else{return logger[_0x43ce('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x43ce('0x29'),_0x43ce('0x74'),_0x43ce('0x75'));}break;}}})[_0x43ce('0x76')](function(){_0x19e378();});}else{_0x19e378();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 9ece9b1..806be3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2526=['info','request\x20sent','debug','stringify','error','code','message','SmsMessage,\x20%s,\x20%s','result','CreateSmsMessage','SmsMessage','create','body','options','raw','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','register','then'];(function(_0x495476,_0x199f0a){var _0x5c9a77=function(_0x31a863){while(--_0x31a863){_0x495476['push'](_0x495476['shift']());}};_0x5c9a77(++_0x199f0a);}(_0x2526,0x98));var _0x6252=function(_0x54c419,_0x3bee42){_0x54c419=_0x54c419-0x0;var _0x1fd72c=_0x2526[_0x54c419];return _0x1fd72c;};'use strict';var _=require(_0x6252('0x0'));var util=require(_0x6252('0x1'));var moment=require(_0x6252('0x2'));var BPromise=require(_0x6252('0x3'));var rs=require(_0x6252('0x4'));var fs=require('fs');var Redis=require(_0x6252('0x5'));var db=require(_0x6252('0x6'))['db'];var utils=require(_0x6252('0x7'));var logger=require(_0x6252('0x8'))(_0x6252('0x9'));var config=require(_0x6252('0xa'));var jayson=require(_0x6252('0xb'));var client=jayson[_0x6252('0xc')][_0x6252('0xd')]({'port':0x232a});config['redis']=_[_0x6252('0xe')](config['redis'],{'host':_0x6252('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./smsMessage.socket')[_0x6252('0x10')](socket);function respondWithRpcPromise(_0x105728,_0x30cd47,_0x19883){return new BPromise(function(_0x1ab0e7,_0x35955a){return client['request'](_0x105728,_0x19883)[_0x6252('0x11')](function(_0x10cc26){logger[_0x6252('0x12')]('SmsMessage,\x20%s,\x20%s',_0x30cd47,_0x6252('0x13'));logger[_0x6252('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x30cd47,'request\x20sent',JSON[_0x6252('0x15')](_0x10cc26));if(_0x10cc26[_0x6252('0x16')]){if(_0x10cc26[_0x6252('0x16')][_0x6252('0x17')]===0x1f4){logger[_0x6252('0x16')]('SmsMessage,\x20%s,\x20%s',_0x30cd47,_0x10cc26[_0x6252('0x16')][_0x6252('0x18')]);return _0x35955a(_0x10cc26[_0x6252('0x16')][_0x6252('0x18')]);}logger['error'](_0x6252('0x19'),_0x30cd47,_0x10cc26[_0x6252('0x16')][_0x6252('0x18')]);return _0x1ab0e7(_0x10cc26['error'][_0x6252('0x18')]);}else{logger[_0x6252('0x12')](_0x6252('0x19'),_0x30cd47,_0x6252('0x13'));_0x1ab0e7(_0x10cc26[_0x6252('0x1a')][_0x6252('0x18')]);}})['catch'](function(_0x4e969a){logger[_0x6252('0x16')](_0x6252('0x19'),_0x30cd47,_0x4e969a);_0x35955a(_0x4e969a);});});}exports[_0x6252('0x1b')]=function(_0x331786){var _0x20989b=this;return new Promise(function(_0x4c00be,_0x4cda38){return db[_0x6252('0x1c')][_0x6252('0x1d')](_0x331786[_0x6252('0x1e')],{'raw':_0x331786[_0x6252('0x1f')]?_0x331786['options'][_0x6252('0x20')]===undefined?!![]:![]:!![]})[_0x6252('0x11')](function(_0x537da9){logger[_0x6252('0x12')](_0x6252('0x1b'),_0x331786);logger[_0x6252('0x14')](_0x6252('0x1b'),_0x331786,JSON[_0x6252('0x15')](_0x537da9));_0x4c00be(_0x537da9);})[_0x6252('0x21')](function(_0x4e442a){logger[_0x6252('0x16')](_0x6252('0x1b'),_0x4e442a[_0x6252('0x18')],_0x331786);_0x4cda38(_0x20989b[_0x6252('0x16')](0x1f4,_0x4e442a[_0x6252('0x18')]));});});};
\ No newline at end of file
+var _0x10f7=['request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','SmsMessage,\x20%s,\x20%s','message','info','catch','SmsMessage','body','options','raw','CreateSmsMessage','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','then'];(function(_0x4153f0,_0x80bcfa){var _0x2b1e9c=function(_0x5cdb6){while(--_0x5cdb6){_0x4153f0['push'](_0x4153f0['shift']());}};_0x2b1e9c(++_0x80bcfa);}(_0x10f7,0x126));var _0x710f=function(_0x141c70,_0x5bea2c){_0x141c70=_0x141c70-0x0;var _0x249ae7=_0x10f7[_0x141c70];return _0x249ae7;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x710f('0x0'));var BPromise=require(_0x710f('0x1'));var rs=require(_0x710f('0x2'));var fs=require('fs');var Redis=require(_0x710f('0x3'));var db=require(_0x710f('0x4'))['db'];var utils=require(_0x710f('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x710f('0x6'));var client=jayson[_0x710f('0x7')][_0x710f('0x8')]({'port':0x232a});config[_0x710f('0x9')]=_[_0x710f('0xa')](config[_0x710f('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x710f('0xb'))(new Redis(config[_0x710f('0x9')]));require('./smsMessage.socket')[_0x710f('0xc')](socket);function respondWithRpcPromise(_0x40ec68,_0x3482f1,_0x2f14f6){return new BPromise(function(_0x3d7288,_0x41e24d){return client['request'](_0x40ec68,_0x2f14f6)[_0x710f('0xd')](function(_0xdbc9dc){logger['info']('SmsMessage,\x20%s,\x20%s',_0x3482f1,_0x710f('0xe'));logger[_0x710f('0xf')](_0x710f('0x10'),_0x3482f1,_0x710f('0xe'),JSON['stringify'](_0xdbc9dc));if(_0xdbc9dc[_0x710f('0x11')]){if(_0xdbc9dc[_0x710f('0x11')][_0x710f('0x12')]===0x1f4){logger[_0x710f('0x11')](_0x710f('0x13'),_0x3482f1,_0xdbc9dc['error'][_0x710f('0x14')]);return _0x41e24d(_0xdbc9dc['error'][_0x710f('0x14')]);}logger[_0x710f('0x11')]('SmsMessage,\x20%s,\x20%s',_0x3482f1,_0xdbc9dc[_0x710f('0x11')][_0x710f('0x14')]);return _0x3d7288(_0xdbc9dc['error'][_0x710f('0x14')]);}else{logger[_0x710f('0x15')]('SmsMessage,\x20%s,\x20%s',_0x3482f1,_0x710f('0xe'));_0x3d7288(_0xdbc9dc['result'][_0x710f('0x14')]);}})[_0x710f('0x16')](function(_0x48e110){logger[_0x710f('0x11')](_0x710f('0x13'),_0x3482f1,_0x48e110);_0x41e24d(_0x48e110);});});}exports['CreateSmsMessage']=function(_0x296622){var _0x4d10f5=this;return new Promise(function(_0x4b23fa,_0x60f52e){return db[_0x710f('0x17')]['create'](_0x296622[_0x710f('0x18')],{'raw':_0x296622[_0x710f('0x19')]?_0x296622[_0x710f('0x19')][_0x710f('0x1a')]===undefined?!![]:![]:!![]})[_0x710f('0xd')](function(_0x2a0406){logger['info'](_0x710f('0x1b'),_0x296622);logger[_0x710f('0xf')](_0x710f('0x1b'),_0x296622,JSON['stringify'](_0x2a0406));_0x4b23fa(_0x2a0406);})[_0x710f('0x16')](function(_0x82e0b4){logger[_0x710f('0x11')](_0x710f('0x1b'),_0x82e0b4[_0x710f('0x14')],_0x296622);_0x60f52e(_0x4d10f5[_0x710f('0x11')](0x1f4,_0x82e0b4['message']));});});};
\ No newline at end of file
index bf2cd14..86735c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f38=['update','emit','removeListener','register','length','smsMessage:','save','remove'];(function(_0x35b18a,_0x6b2fbe){var _0x4db1bd=function(_0x389e62){while(--_0x389e62){_0x35b18a['push'](_0x35b18a['shift']());}};_0x4db1bd(++_0x6b2fbe);}(_0x1f38,0x96));var _0x81f3=function(_0x584528,_0xa9e2ef){_0x584528=_0x584528-0x0;var _0x369f6f=_0x1f38[_0x584528];return _0x369f6f;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=[_0x81f3('0x0'),_0x81f3('0x1'),_0x81f3('0x2')];function createListener(_0xb47f06,_0x68bd62){return function(_0x79c8af){_0x68bd62[_0x81f3('0x3')](_0xb47f06,_0x79c8af);};}function removeListener(_0x56153c,_0x4efe47){return function(){SmsMessageEvents[_0x81f3('0x4')](_0x56153c,_0x4efe47);};}exports[_0x81f3('0x5')]=function(_0x2d1a58){for(var _0x3096b2=0x0,_0x5651e1=events[_0x81f3('0x6')];_0x3096b2<_0x5651e1;_0x3096b2++){var _0x3d8337=events[_0x3096b2];var _0x3d1193=createListener(_0x81f3('0x7')+_0x3d8337,_0x2d1a58);SmsMessageEvents['on'](_0x3d8337,_0x3d1193);}};
\ No newline at end of file
+var _0xb414=['emit','removeListener','register','length','smsMessage:','./smsMessage.events','save','remove'];(function(_0x2b6ea0,_0x47e6f4){var _0x54c551=function(_0x2782ff){while(--_0x2782ff){_0x2b6ea0['push'](_0x2b6ea0['shift']());}};_0x54c551(++_0x47e6f4);}(_0xb414,0xd5));var _0x4b41=function(_0x3a6b3e,_0x1f9a6e){_0x3a6b3e=_0x3a6b3e-0x0;var _0x129570=_0xb414[_0x3a6b3e];return _0x129570;};'use strict';var SmsMessageEvents=require(_0x4b41('0x0'));var events=[_0x4b41('0x1'),_0x4b41('0x2'),'update'];function createListener(_0x2c1405,_0x2ded5c){return function(_0x4cc673){_0x2ded5c[_0x4b41('0x3')](_0x2c1405,_0x4cc673);};}function removeListener(_0x3e9532,_0x513a09){return function(){SmsMessageEvents[_0x4b41('0x4')](_0x3e9532,_0x513a09);};}exports[_0x4b41('0x5')]=function(_0x4d846a){for(var _0x2c01ca=0x0,_0x96aa7c=events[_0x4b41('0x6')];_0x2c01ca<_0x96aa7c;_0x2c01ca++){var _0x21c33c=events[_0x2c01ca];var _0x5ebb7e=createListener(_0x4b41('0x7')+_0x21c33c,_0x4d846a);SmsMessageEvents['on'](_0x21c33c,_0x5ebb7e);}};
\ No newline at end of file
index 7056f7b..4dfc92f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8584=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/:id','show','/:id/members','getMembers','getTeams','/:id/users','post','create','/:id/teams','addAgents','destroy','delete','removeTeams','removeAgents','exports'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x8584,0x16c));var _0x4858=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x8584[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require('multer');var util=require(_0x4858('0x0'));var path=require(_0x4858('0x1'));var timeout=require(_0x4858('0x2'));var express=require(_0x4858('0x3'));var router=express[_0x4858('0x4')]();var fs_extra=require(_0x4858('0x5'));var auth=require(_0x4858('0x6'));var interaction=require(_0x4858('0x7'));var config=require(_0x4858('0x8'));var controller=require(_0x4858('0x9'));router[_0x4858('0xa')]('/',auth[_0x4858('0xb')](),controller[_0x4858('0xc')]);router[_0x4858('0xa')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x4858('0xa')](_0x4858('0xd'),auth[_0x4858('0xb')](),controller[_0x4858('0xe')]);router[_0x4858('0xa')](_0x4858('0xf'),auth[_0x4858('0xb')](),controller[_0x4858('0x10')]);router['get']('/:id/teams',auth[_0x4858('0xb')](),controller[_0x4858('0x11')]);router[_0x4858('0xa')](_0x4858('0x12'),auth[_0x4858('0xb')](),controller['getAgents']);router[_0x4858('0x13')]('/',auth[_0x4858('0xb')](),controller[_0x4858('0x14')]);router[_0x4858('0x13')](_0x4858('0x15'),auth[_0x4858('0xb')](),controller['addTeams']);router['post'](_0x4858('0x12'),auth['isAuthenticated'](),controller[_0x4858('0x16')]);router['put'](_0x4858('0xd'),auth[_0x4858('0xb')](),controller['update']);router['delete'](_0x4858('0xd'),auth[_0x4858('0xb')](),controller[_0x4858('0x17')]);router[_0x4858('0x18')](_0x4858('0x15'),auth[_0x4858('0xb')](),controller[_0x4858('0x19')]);router[_0x4858('0x18')](_0x4858('0x12'),auth[_0x4858('0xb')](),controller[_0x4858('0x1a')]);module[_0x4858('0x1b')]=router;
\ No newline at end of file
+var _0xda36=['../../config/environment','get','isAuthenticated','index','/describe','describe','/:id/members','getMembers','/:id/teams','getTeams','getAgents','create','post','/:id/users','addAgents','put','/:id','update','delete','destroy','removeTeams','removeAgents','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2888e9,_0x15c63e){var _0x4afc77=function(_0xb511f2){while(--_0xb511f2){_0x2888e9['push'](_0x2888e9['shift']());}};_0x4afc77(++_0x15c63e);}(_0xda36,0x160));var _0x6da3=function(_0x460b74,_0x2e9517){_0x460b74=_0x460b74-0x0;var _0x2d584c=_0xda36[_0x460b74];return _0x2d584c;};'use strict';var multer=require(_0x6da3('0x0'));var util=require(_0x6da3('0x1'));var path=require(_0x6da3('0x2'));var timeout=require(_0x6da3('0x3'));var express=require('express');var router=express[_0x6da3('0x4')]();var fs_extra=require(_0x6da3('0x5'));var auth=require(_0x6da3('0x6'));var interaction=require(_0x6da3('0x7'));var config=require(_0x6da3('0x8'));var controller=require('./smsQueue.controller');router[_0x6da3('0x9')]('/',auth[_0x6da3('0xa')](),controller[_0x6da3('0xb')]);router[_0x6da3('0x9')](_0x6da3('0xc'),auth[_0x6da3('0xa')](),controller[_0x6da3('0xd')]);router[_0x6da3('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x6da3('0x9')](_0x6da3('0xe'),auth['isAuthenticated'](),controller[_0x6da3('0xf')]);router[_0x6da3('0x9')](_0x6da3('0x10'),auth[_0x6da3('0xa')](),controller[_0x6da3('0x11')]);router[_0x6da3('0x9')]('/:id/users',auth[_0x6da3('0xa')](),controller[_0x6da3('0x12')]);router['post']('/',auth[_0x6da3('0xa')](),controller[_0x6da3('0x13')]);router[_0x6da3('0x14')](_0x6da3('0x10'),auth['isAuthenticated'](),controller['addTeams']);router[_0x6da3('0x14')](_0x6da3('0x15'),auth[_0x6da3('0xa')](),controller[_0x6da3('0x16')]);router[_0x6da3('0x17')](_0x6da3('0x18'),auth[_0x6da3('0xa')](),controller[_0x6da3('0x19')]);router[_0x6da3('0x1a')](_0x6da3('0x18'),auth[_0x6da3('0xa')](),controller[_0x6da3('0x1b')]);router[_0x6da3('0x1a')](_0x6da3('0x10'),auth[_0x6da3('0xa')](),controller[_0x6da3('0x1c')]);router[_0x6da3('0x1a')](_0x6da3('0x15'),auth[_0x6da3('0xa')](),controller[_0x6da3('0x1d')]);module['exports']=router;
\ No newline at end of file
index 1519017..1f9cd25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd6a=['beepall','roundrobin','sequelize','exports','STRING','name','ENUM','rrmemory'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0xcd6a,0x12a));var _0xacd6=function(_0x1557c,_0x3c4b95){_0x1557c=_0x1557c-0x0;var _0x54f07a=_0xcd6a[_0x1557c];return _0x54f07a;};'use strict';var Sequelize=require(_0xacd6('0x0'));module[_0xacd6('0x1')]={'name':{'type':Sequelize[_0xacd6('0x2')],'unique':_0xacd6('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xacd6('0x4')](_0xacd6('0x5'),_0xacd6('0x6'),_0xacd6('0x7'))}};
\ No newline at end of file
+var _0x603a=['ENUM','rrmemory','beepall','roundrobin','exports','name','STRING','INTEGER'];(function(_0x233397,_0x1dd5ce){var _0x357bc3=function(_0x22b6f6){while(--_0x22b6f6){_0x233397['push'](_0x233397['shift']());}};_0x357bc3(++_0x1dd5ce);}(_0x603a,0x11c));var _0xa603=function(_0x2c41bb,_0x36e302){_0x2c41bb=_0x2c41bb-0x0;var _0x3580e3=_0x603a[_0x2c41bb];return _0x3580e3;};'use strict';var Sequelize=require('sequelize');module[_0xa603('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xa603('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xa603('0x2')]},'timeout':{'type':Sequelize[_0xa603('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xa603('0x4')](_0xa603('0x5'),_0xa603('0x6'),_0xa603('0x7'))}};
\ No newline at end of file
index ef4c933..fd60e10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6811=['value','sequelize','isEmpty','removeAgents','addAgents','omit','spread','userSmsQueue:save','isArray','userSmsQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','status','end','json','offset','undefined','limit','count','apply','reject','update','then','destroy','get','SmsQueues','UserProfileResource','error','stack','name','send','index','map','SmsQueue','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserSmsQueue','SmsQueueId','UserId','updatedAt','SIP','smsPause','createdAt','getTeams','Team','addTeams','User','Agents','online','voicePause','interface','flatMap','transaction','findOrCreate','forEach','emit','ids','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','TeamId','includes','union','compact'];(function(_0x10f68e,_0xf198ea){var _0x4c8372=function(_0x38517){while(--_0x38517){_0x10f68e['push'](_0x10f68e['shift']());}};_0x4c8372(++_0xf198ea);}(_0x6811,0x121));var _0x1681=function(_0x551442,_0x34942b){_0x551442=_0x551442-0x0;var _0xa62b18=_0x6811[_0x551442];return _0xa62b18;};'use strict';var emlformat=require(_0x1681('0x0'));var rimraf=require(_0x1681('0x1'));var zipdir=require(_0x1681('0x2'));var jsonpatch=require(_0x1681('0x3'));var rp=require(_0x1681('0x4'));var moment=require(_0x1681('0x5'));var BPromise=require(_0x1681('0x6'));var Mustache=require(_0x1681('0x7'));var util=require(_0x1681('0x8'));var path=require(_0x1681('0x9'));var sox=require('sox');var csv=require(_0x1681('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1681('0xb'));var _=require('lodash');var squel=require(_0x1681('0xc'));var crypto=require(_0x1681('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1681('0xe'));var toCsv=require(_0x1681('0xa'));var querystring=require('querystring');var Papa=require(_0x1681('0xf'));var Redis=require(_0x1681('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x1681('0x11'));var as=require(_0x1681('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1681('0x13'))(_0x1681('0x14'));var utils=require(_0x1681('0x15'));var config=require(_0x1681('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x1681('0x17'))['db'];config[_0x1681('0x18')]=_[_0x1681('0x19')](config[_0x1681('0x18')],{'host':_0x1681('0x1a'),'port':0x18eb});var socket=require(_0x1681('0x1b'))(new Redis(config[_0x1681('0x18')]));require(_0x1681('0x1c'))[_0x1681('0x1d')](socket);function respondWithStatusCode(_0xdef75,_0x527fa9){_0x527fa9=_0x527fa9||0xcc;return function(_0x4705f8){if(_0x4705f8){return _0xdef75['sendStatus'](_0x527fa9);}return _0xdef75[_0x1681('0x1e')](_0x527fa9)[_0x1681('0x1f')]();};}function respondWithResult(_0x3243c6,_0x4e3d86){_0x4e3d86=_0x4e3d86||0xc8;return function(_0x2e6a2f){if(_0x2e6a2f){return _0x3243c6['status'](_0x4e3d86)[_0x1681('0x20')](_0x2e6a2f);}};}function respondWithFilteredResult(_0x594d28,_0x14f923){return function(_0x1f11cc){if(_0x1f11cc){var _0x40a9cd=typeof _0x14f923[_0x1681('0x21')]===_0x1681('0x22')&&typeof _0x14f923[_0x1681('0x23')]===_0x1681('0x22');var _0x48f18c=_0x1f11cc[_0x1681('0x24')];var _0x57ab0a=_0x40a9cd?0x0:_0x14f923['offset'];var _0x124145=_0x40a9cd?_0x1f11cc[_0x1681('0x24')]:_0x14f923[_0x1681('0x21')]+_0x14f923['limit'];var _0x1661b4;if(_0x124145>=_0x48f18c){_0x124145=_0x48f18c;_0x1661b4=0xc8;}else{_0x1661b4=0xce;}_0x594d28[_0x1681('0x1e')](_0x1661b4);return _0x594d28['set']('Content-Range',_0x57ab0a+'-'+_0x124145+'/'+_0x48f18c)[_0x1681('0x20')](_0x1f11cc);}return null;};}function patchUpdates(_0xd69dd2){return function(_0x56ca3a){try{jsonpatch[_0x1681('0x25')](_0x56ca3a,_0xd69dd2,!![]);}catch(_0x180fcc){return BPromise[_0x1681('0x26')](_0x180fcc);}return _0x56ca3a['save']();};}function saveUpdates(_0x4092ed,_0x47d542){return function(_0x5b58a6){if(_0x5b58a6){return _0x5b58a6[_0x1681('0x27')](_0x4092ed)[_0x1681('0x28')](function(_0x123c07){return _0x123c07;});}return null;};}function removeEntity(_0x572d78,_0x18f288){return function(_0x5bbb13){if(_0x5bbb13){return _0x5bbb13[_0x1681('0x29')]()[_0x1681('0x28')](function(){var _0x14a5ce=_0x5bbb13[_0x1681('0x2a')]({'plain':!![]});var _0x392082=_0x1681('0x2b');return db[_0x1681('0x2c')][_0x1681('0x29')]({'where':{'type':_0x392082,'resourceId':_0x14a5ce['id']}})[_0x1681('0x28')](function(){return _0x5bbb13;});})['then'](function(){_0x572d78[_0x1681('0x1e')](0xcc)[_0x1681('0x1f')]();});}};}function handleEntityNotFound(_0x42443b,_0x32d6a9){return function(_0x49c1fd){if(!_0x49c1fd){_0x42443b['sendStatus'](0x194);}return _0x49c1fd;};}function handleError(_0x2cf6d0,_0x2759c1){_0x2759c1=_0x2759c1||0x1f4;return function(_0x19e1f1){logger[_0x1681('0x2d')](_0x19e1f1[_0x1681('0x2e')]);if(_0x19e1f1[_0x1681('0x2f')]){delete _0x19e1f1['name'];}_0x2cf6d0['status'](_0x2759c1)[_0x1681('0x30')](_0x19e1f1);};}exports[_0x1681('0x31')]=function(_0x19d3cd,_0x388ad7){var _0x58d934={},_0x150cd5={},_0x2c734a={'count':0x0,'rows':[]};var _0x84a3f9=_[_0x1681('0x32')](db[_0x1681('0x33')][_0x1681('0x34')],function(_0x314908){return{'name':_0x314908[_0x1681('0x35')],'type':_0x314908[_0x1681('0x36')][_0x1681('0x37')]};});_0x150cd5['model']=_[_0x1681('0x32')](_0x84a3f9,'name');_0x150cd5[_0x1681('0x38')]=_[_0x1681('0x39')](_0x19d3cd[_0x1681('0x38')]);_0x150cd5[_0x1681('0x3a')]=_[_0x1681('0x3b')](_0x150cd5[_0x1681('0x3c')],_0x150cd5[_0x1681('0x38')]);_0x58d934[_0x1681('0x3d')]=_['intersection'](_0x150cd5[_0x1681('0x3c')],qs[_0x1681('0x3e')](_0x19d3cd['query'][_0x1681('0x3e')]));_0x58d934[_0x1681('0x3d')]=_0x58d934[_0x1681('0x3d')][_0x1681('0x3f')]?_0x58d934[_0x1681('0x3d')]:_0x150cd5[_0x1681('0x3c')];if(!_0x19d3cd['query'][_0x1681('0x40')](_0x1681('0x41'))){_0x58d934[_0x1681('0x23')]=qs[_0x1681('0x23')](_0x19d3cd[_0x1681('0x38')][_0x1681('0x23')]);_0x58d934[_0x1681('0x21')]=qs['offset'](_0x19d3cd[_0x1681('0x38')][_0x1681('0x21')]);}_0x58d934[_0x1681('0x42')]=qs[_0x1681('0x43')](_0x19d3cd[_0x1681('0x38')][_0x1681('0x43')]);_0x58d934[_0x1681('0x44')]=qs[_0x1681('0x3a')](_[_0x1681('0x45')](_0x19d3cd['query'],_0x150cd5[_0x1681('0x3a')]),_0x84a3f9);if(_0x19d3cd[_0x1681('0x38')]['filter']){_0x58d934[_0x1681('0x44')]=_[_0x1681('0x46')](_0x58d934[_0x1681('0x44')],{'$or':_[_0x1681('0x32')](_0x84a3f9,function(_0x56ba0b){if(_0x56ba0b[_0x1681('0x36')]!==_0x1681('0x47')){var _0x3e3b35={};_0x3e3b35[_0x56ba0b['name']]={'$like':'%'+_0x19d3cd['query'][_0x1681('0x48')]+'%'};return _0x3e3b35;}})});}_0x58d934=_[_0x1681('0x46')]({},_0x58d934,_0x19d3cd[_0x1681('0x49')]);var _0x5ec288={'where':_0x58d934['where']};return db['SmsQueue'][_0x1681('0x24')](_0x5ec288)[_0x1681('0x28')](function(_0x56ea41){_0x2c734a[_0x1681('0x24')]=_0x56ea41;if(_0x19d3cd[_0x1681('0x38')][_0x1681('0x4a')]){_0x58d934[_0x1681('0x4b')]=[{'all':!![]}];}return db[_0x1681('0x33')][_0x1681('0x4c')](_0x58d934);})[_0x1681('0x28')](function(_0x2f0ece){_0x2c734a[_0x1681('0x4d')]=_0x2f0ece;return _0x2c734a;})['then'](respondWithFilteredResult(_0x388ad7,_0x58d934))['catch'](handleError(_0x388ad7,null));};exports[_0x1681('0x4e')]=function(_0x462490,_0x452a94){var _0x2cd255={'raw':!![],'where':{'id':_0x462490[_0x1681('0x4f')]['id']}},_0x3b25d9={};_0x3b25d9['model']=_[_0x1681('0x39')](db[_0x1681('0x33')][_0x1681('0x34')]);_0x3b25d9['query']=_[_0x1681('0x39')](_0x462490[_0x1681('0x38')]);_0x3b25d9['filters']=_[_0x1681('0x3b')](_0x3b25d9[_0x1681('0x3c')],_0x3b25d9[_0x1681('0x38')]);_0x2cd255[_0x1681('0x3d')]=_[_0x1681('0x3b')](_0x3b25d9[_0x1681('0x3c')],qs['fields'](_0x462490[_0x1681('0x38')][_0x1681('0x3e')]));_0x2cd255[_0x1681('0x3d')]=_0x2cd255['attributes']['length']?_0x2cd255[_0x1681('0x3d')]:_0x3b25d9[_0x1681('0x3c')];if(_0x462490[_0x1681('0x38')]['includeAll']){_0x2cd255[_0x1681('0x4b')]=[{'all':!![]}];}_0x2cd255=_[_0x1681('0x46')]({},_0x2cd255,_0x462490[_0x1681('0x49')]);return db['SmsQueue'][_0x1681('0x50')](_0x2cd255)[_0x1681('0x28')](handleEntityNotFound(_0x452a94,null))[_0x1681('0x28')](respondWithResult(_0x452a94,null))[_0x1681('0x51')](handleError(_0x452a94,null));};exports['create']=function(_0x3b957c,_0x42a324){return db[_0x1681('0x33')][_0x1681('0x52')](_0x3b957c[_0x1681('0x53')],{})[_0x1681('0x28')](function(_0x29b167){var _0x551399=_0x3b957c[_0x1681('0x54')]['get']({'plain':!![]});if(!_0x551399)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x551399[_0x1681('0x55')]===_0x1681('0x54')){var _0x4ecd65=_0x29b167[_0x1681('0x2a')]({'plain':!![]});var _0x198270=_0x1681('0x2b');return db[_0x1681('0x56')][_0x1681('0x50')]({'where':{'name':_0x198270,'userProfileId':_0x551399[_0x1681('0x57')]},'raw':!![]})['then'](function(_0x4e95a1){if(_0x4e95a1&&_0x4e95a1[_0x1681('0x58')]===0x0){return db['UserProfileResource'][_0x1681('0x52')]({'name':_0x4ecd65['name'],'resourceId':_0x4ecd65['id'],'type':_0x4e95a1[_0x1681('0x2f')],'sectionId':_0x4e95a1['id']},{})[_0x1681('0x28')](function(){return _0x29b167;});}else{return _0x29b167;}})[_0x1681('0x51')](function(_0x19ced3){logger['error'](_0x1681('0x59'),_0x19ced3);throw _0x19ced3;});}return _0x29b167;})[_0x1681('0x28')](respondWithResult(_0x42a324,0xc9))['catch'](handleError(_0x42a324,null));};exports[_0x1681('0x27')]=function(_0x52fb1f,_0x3a4a13){if(_0x52fb1f[_0x1681('0x53')]['id']){delete _0x52fb1f[_0x1681('0x53')]['id'];}return db[_0x1681('0x33')][_0x1681('0x50')]({'where':{'id':_0x52fb1f[_0x1681('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3a4a13,null))[_0x1681('0x28')](saveUpdates(_0x52fb1f[_0x1681('0x53')],null))[_0x1681('0x28')](respondWithResult(_0x3a4a13,null))[_0x1681('0x51')](handleError(_0x3a4a13,null));};exports[_0x1681('0x29')]=function(_0x45a15d,_0x40241d){return db[_0x1681('0x33')][_0x1681('0x50')]({'where':{'id':_0x45a15d[_0x1681('0x4f')]['id']}})['then'](handleEntityNotFound(_0x40241d,null))['then'](removeEntity(_0x40241d,null))[_0x1681('0x51')](handleError(_0x40241d,null));};exports['describe']=function(_0x2b041b,_0x4455b4){return db[_0x1681('0x33')][_0x1681('0x5a')]()[_0x1681('0x28')](respondWithResult(_0x4455b4,null))[_0x1681('0x51')](handleError(_0x4455b4,null));};exports['getMembers']=function(_0x4d1b3e,_0x4e0ce1,_0x5434b3){var _0x5e95db={'raw':!![],'where':{}},_0xbb0731={},_0x6dc6f9;return db['SmsQueue'][_0x1681('0x5b')]({'where':{'id':_0x4d1b3e[_0x1681('0x4f')]['id']}})[_0x1681('0x28')](handleEntityNotFound(_0x4e0ce1,null))[_0x1681('0x28')](function(_0x2ec0f4){if(_0x2ec0f4){_0x6dc6f9=_0x2ec0f4[_0x1681('0x2a')]({'plain':!![]});_0xbb0731[_0x1681('0x3c')]=_[_0x1681('0x39')](db[_0x1681('0x5c')]['rawAttributes']);_0xbb0731['query']=_[_0x1681('0x39')](_0x4d1b3e[_0x1681('0x38')]);_0xbb0731['filters']=_[_0x1681('0x3b')](_0xbb0731[_0x1681('0x3c')],_0xbb0731['query']);_0x5e95db[_0x1681('0x3d')]=_[_0x1681('0x3b')](_0xbb0731['model'],qs[_0x1681('0x3e')](_0x4d1b3e[_0x1681('0x38')]['fields']));_0x5e95db[_0x1681('0x3d')]=_0x5e95db[_0x1681('0x3d')][_0x1681('0x3f')]?_0x5e95db[_0x1681('0x3d')]:_0xbb0731[_0x1681('0x3c')];if(!_0x4d1b3e['query'][_0x1681('0x40')](_0x1681('0x41'))){_0x5e95db['limit']=qs[_0x1681('0x23')](_0x4d1b3e[_0x1681('0x38')]['limit']);_0x5e95db[_0x1681('0x21')]=qs['offset'](_0x4d1b3e['query']['offset']);}_0x5e95db[_0x1681('0x42')]=qs['sort'](_0x4d1b3e[_0x1681('0x38')]['sort']);_0x5e95db[_0x1681('0x44')]=qs[_0x1681('0x3a')](_[_0x1681('0x45')](_0x4d1b3e[_0x1681('0x38')],_0xbb0731[_0x1681('0x3a')]));_0x5e95db[_0x1681('0x44')][_0x1681('0x5d')]=_0x2ec0f4['id'];if(_0x4d1b3e['query'][_0x1681('0x48')]){_0x5e95db[_0x1681('0x44')]=_[_0x1681('0x46')](_0x5e95db[_0x1681('0x44')],{'$or':_[_0x1681('0x32')](_0x5e95db['attributes'],function(_0x4f9802){var _0x3cb7b4={};_0x3cb7b4[_0x4f9802]={'$like':'%'+_0x4d1b3e[_0x1681('0x38')][_0x1681('0x48')]+'%'};return _0x3cb7b4;})});}_0x5e95db=_[_0x1681('0x46')]({},_0x5e95db,_0x4d1b3e['options']);return db[_0x1681('0x5c')]['findAll'](_0x5e95db);}})[_0x1681('0x28')](function(_0x4f6148){if(_0x4f6148){return db['User']['findAndCountAll']({'where':{'id':_['map'](_0x4f6148,_0x1681('0x5e')),'role':'agent'},'attributes':['id','name','smsPause',_0x1681('0x5f'),'createdAt']});}})['then'](function(_0x4ea2e5){if(_0x4ea2e5){return{'count':_0x4ea2e5[_0x1681('0x24')],'rows':_[_0x1681('0x32')](_0x4ea2e5[_0x1681('0x4d')],function(_0x3fa30e){return{'membername':_0x3fa30e[_0x1681('0x2f')],'UserId':_0x3fa30e['id'],'queue_name':_0x6dc6f9[_0x1681('0x2f')],'SmsQueueId':_0x6dc6f9['id'],'interface':util['format']('%s/%s',_0x1681('0x60'),_0x3fa30e[_0x1681('0x2f')]),'penalty':0x0,'paused':_0x3fa30e[_0x1681('0x61')],'createdAt':_0x3fa30e[_0x1681('0x62')],'updatedAt':_0x3fa30e[_0x1681('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4e0ce1,_0x5e95db))[_0x1681('0x51')](handleError(_0x4e0ce1,null));};exports[_0x1681('0x63')]=function(_0xe25ddf,_0x57aac9,_0x19f9aa){var _0x431b1f={};var _0x10aba3={};var _0x59ec1c;var _0x30fe07;return db[_0x1681('0x33')][_0x1681('0x5b')]({'where':{'id':_0xe25ddf[_0x1681('0x4f')]['id']}})['then'](handleEntityNotFound(_0x57aac9,null))['then'](function(_0x3c558a){if(_0x3c558a){_0x59ec1c=_0x3c558a;_0x10aba3[_0x1681('0x3c')]=_['keys'](db[_0x1681('0x64')][_0x1681('0x34')]);_0x10aba3[_0x1681('0x38')]=_[_0x1681('0x39')](_0xe25ddf[_0x1681('0x38')]);_0x10aba3[_0x1681('0x3a')]=_[_0x1681('0x3b')](_0x10aba3[_0x1681('0x3c')],_0x10aba3['query']);_0x431b1f[_0x1681('0x3d')]=_[_0x1681('0x3b')](_0x10aba3[_0x1681('0x3c')],qs[_0x1681('0x3e')](_0xe25ddf[_0x1681('0x38')][_0x1681('0x3e')]));_0x431b1f[_0x1681('0x3d')]=_0x431b1f[_0x1681('0x3d')][_0x1681('0x3f')]?_0x431b1f[_0x1681('0x3d')]:_0x10aba3[_0x1681('0x3c')];_0x431b1f[_0x1681('0x42')]=qs[_0x1681('0x43')](_0xe25ddf[_0x1681('0x38')]['sort']);_0x431b1f[_0x1681('0x44')]=qs[_0x1681('0x3a')](_[_0x1681('0x45')](_0xe25ddf[_0x1681('0x38')],_0x10aba3[_0x1681('0x3a')]));if(_0xe25ddf['query'][_0x1681('0x48')]){_0x431b1f[_0x1681('0x44')]=_[_0x1681('0x46')](_0x431b1f[_0x1681('0x44')],{'$or':_[_0x1681('0x32')](_0x431b1f[_0x1681('0x3d')],function(_0x17fbc6){var _0xc4b3b3={};_0xc4b3b3[_0x17fbc6]={'$like':'%'+_0xe25ddf[_0x1681('0x38')][_0x1681('0x48')]+'%'};return _0xc4b3b3;})});}_0x431b1f=_['merge']({},_0x431b1f,_0xe25ddf[_0x1681('0x49')]);return _0x59ec1c[_0x1681('0x63')](_0x431b1f);}})['then'](function(_0x253837){if(_0x253837){_0x30fe07=_0x253837[_0x1681('0x3f')];if(!_0xe25ddf[_0x1681('0x38')]['hasOwnProperty'](_0x1681('0x41'))){_0x431b1f[_0x1681('0x23')]=qs['limit'](_0xe25ddf[_0x1681('0x38')][_0x1681('0x23')]);_0x431b1f[_0x1681('0x21')]=qs['offset'](_0xe25ddf[_0x1681('0x38')][_0x1681('0x21')]);}return _0x59ec1c[_0x1681('0x63')](_0x431b1f);}})['then'](function(_0x19c6ea){if(_0x19c6ea){return _0x19c6ea?{'count':_0x30fe07,'rows':_0x19c6ea}:null;}})['then'](respondWithResult(_0x57aac9,null))[_0x1681('0x51')](handleError(_0x57aac9,null));};exports[_0x1681('0x65')]=function(_0x3fef70,_0x502ff2,_0x340110){var _0xbe8ff8=_0x3fef70[_0x1681('0x53')]['ids'];return db[_0x1681('0x64')][_0x1681('0x4c')]({'where':{'id':_0xbe8ff8},'attributes':['id'],'include':[{'model':db[_0x1681('0x66')],'as':_0x1681('0x67'),'attributes':['id',_0x1681('0x2f'),_0x1681('0x68'),_0x1681('0x69'),_0x1681('0x6a')],'raw':!![]}]})['then'](function(_0x2e6283){if(_0x2e6283){var _0xbd71c6=_[_0x1681('0x6b')](_0x2e6283,function(_0x25d5ab){var _0x10d75f=_0x25d5ab[_0x1681('0x2a')]({'plain':!![]});return _0x10d75f[_0x1681('0x67')];});return db[_0x1681('0x33')]['find']({'where':{'id':_0x3fef70[_0x1681('0x4f')]['id']}})[_0x1681('0x28')](function(_0x2efc24){return db['sequelize'][_0x1681('0x6c')](function(_0x15c8ef){return _0x2efc24[_0x1681('0x65')](_0xbe8ff8,{'transaction':_0x15c8ef})[_0x1681('0x28')](function(){return BPromise['each'](_0xbd71c6,function(_0x600fa1){return db['UserSmsQueue'][_0x1681('0x6d')]({'where':{'UserId':_0x600fa1['id'],'SmsQueueId':_0x3fef70['params']['id']},'transaction':_0x15c8ef});});})['then'](function(){_0xbd71c6[_0x1681('0x6e')](function(_0x225460){socket[_0x1681('0x6f')]('userSmsQueue:save',{'UserId':_0x225460['id'],'SmsQueueId':_0x2efc24['id']});});});});});}})[_0x1681('0x28')](respondWithStatusCode(_0x502ff2,null))[_0x1681('0x51')](handleError(_0x502ff2,null));};exports['removeTeams']=function(_0x428250,_0x1c16f4,_0x5739d6){return db[_0x1681('0x64')]['findAll']({'where':{'id':_0x428250['query'][_0x1681('0x70')]},'attributes':['id'],'include':[{'model':db[_0x1681('0x66')],'as':_0x1681('0x67'),'attributes':['id'],'raw':!![]}]})[_0x1681('0x28')](handleEntityNotFound(_0x1c16f4,null))['then'](function(_0x1ce7e7){var _0x362acb=_['map'](_0x1ce7e7,'id');var _0x5c5793=[];var _0x2d4feb=[];var _0x5b8d65=squel['select']();_0x5b8d65['field'](_0x1681('0x71'))[_0x1681('0x72')](_0x1681('0x73'),'tq')[_0x1681('0x74')](_0x1681('0x75'),'ut',_0x1681('0x76'))[_0x1681('0x44')]('SmsQueueId\x20=\x20?',_0x428250[_0x1681('0x4f')]['id']);for(var _0x4149cc=0x0;_0x4149cc<_0x1ce7e7[_0x1681('0x3f')];_0x4149cc+=0x1){let _0x2e8f4a=_0x1ce7e7[_0x4149cc];for(var _0x500932=0x0;_0x500932<_0x2e8f4a['Agents'][_0x1681('0x3f')];_0x500932+=0x1){let _0x2ed9cc=_0x2e8f4a[_0x1681('0x67')][_0x500932];var _0x17815d=_0x5b8d65[_0x1681('0x77')]();_0x17815d[_0x1681('0x44')](_0x1681('0x78'),_0x2ed9cc['id']);_0x2d4feb[_0x1681('0x79')](db['sequelize'][_0x1681('0x38')](_0x17815d['toString'](),{'type':db['sequelize'][_0x1681('0x7a')][_0x1681('0x7b')]})['then'](function(_0x3aed54){if(_0x3aed54[_0x1681('0x3f')]===0x1){return _0x2ed9cc['id'];}else{var _0x5794d1=_['every'](_[_0x1681('0x32')](_0x3aed54,_0x1681('0x7c')),function(_0x1cf215){return _[_0x1681('0x7d')](_0x362acb,_0x1cf215);});if(_0x5794d1){return _0x2ed9cc['id'];}}}));}}return BPromise['all'](_0x2d4feb)[_0x1681('0x28')](function(_0x2090c4){_0x5c5793=_(_0x5c5793)[_0x1681('0x7e')](_0x2090c4)[_0x1681('0x7f')]()[_0x1681('0x80')]();return db[_0x1681('0x33')][_0x1681('0x50')]({'where':{'id':_0x428250['params']['id']}})[_0x1681('0x28')](function(_0x53616d){return db[_0x1681('0x81')][_0x1681('0x6c')](function(_0x1bb34d){return _0x53616d['removeTeams'](_0x428250['query'][_0x1681('0x70')],{'transaction':_0x1bb34d})['then'](function(){if(!_[_0x1681('0x82')](_0x5c5793)){return _0x53616d[_0x1681('0x83')](_0x5c5793,{'transaction':_0x1bb34d});}})[_0x1681('0x28')](function(){_0x5c5793[_0x1681('0x6e')](function(_0x5a6217){socket['emit']('userSmsQueue:remove',{'UserId':_0x5a6217,'SmsQueueId':_0x53616d['id']});});});});});});})[_0x1681('0x28')](respondWithStatusCode(_0x1c16f4,null))[_0x1681('0x51')](handleError(_0x1c16f4,null));};exports[_0x1681('0x84')]=function(_0x543ffe,_0x1cb096,_0x326f27){return db[_0x1681('0x33')][_0x1681('0x50')]({'where':{'id':_0x543ffe['params']['id']}})[_0x1681('0x28')](handleEntityNotFound(_0x1cb096,null))[_0x1681('0x28')](function(_0x48aa91){if(_0x48aa91){return _0x48aa91[_0x1681('0x84')](_0x543ffe[_0x1681('0x53')][_0x1681('0x70')],_[_0x1681('0x85')](_0x543ffe[_0x1681('0x53')],[_0x1681('0x70'),'id'])||{})[_0x1681('0x86')](function(_0x3fe281){for(var _0x1ab51f=0x0;_0x1ab51f<_0x543ffe[_0x1681('0x53')][_0x1681('0x70')]['length'];_0x1ab51f+=0x1){socket['emit'](_0x1681('0x87'),{'UserId':Number(_0x543ffe['body'][_0x1681('0x70')][_0x1ab51f]),'SmsQueueId':Number(_0x543ffe[_0x1681('0x4f')]['id'])});}return _0x3fe281;});}})[_0x1681('0x28')](respondWithResult(_0x1cb096,null))[_0x1681('0x51')](handleError(_0x1cb096,null));};exports[_0x1681('0x83')]=function(_0x30b74f,_0x43ad5e,_0x5d164f){return db[_0x1681('0x33')][_0x1681('0x50')]({'where':{'id':_0x30b74f[_0x1681('0x4f')]['id']}})[_0x1681('0x28')](handleEntityNotFound(_0x43ad5e,null))[_0x1681('0x28')](function(_0x4fc246){if(_0x4fc246){return _0x4fc246[_0x1681('0x83')](_0x30b74f['query'][_0x1681('0x70')])[_0x1681('0x28')](function(){if(_[_0x1681('0x88')](_0x30b74f[_0x1681('0x38')]['ids'])){for(var _0x3f0661=0x0;_0x3f0661<_0x30b74f[_0x1681('0x38')][_0x1681('0x70')]['length'];_0x3f0661+=0x1){socket[_0x1681('0x6f')](_0x1681('0x89'),{'UserId':Number(_0x30b74f[_0x1681('0x38')]['ids'][_0x3f0661]),'SmsQueueId':Number(_0x30b74f['params']['id'])});}}else{socket['emit'](_0x1681('0x89'),{'UserId':Number(_0x30b74f[_0x1681('0x38')][_0x1681('0x70')]),'SmsQueueId':Number(_0x30b74f[_0x1681('0x4f')]['id'])});}});}})['then'](respondWithStatusCode(_0x43ad5e,null))[_0x1681('0x51')](handleError(_0x43ad5e,null));};exports[_0x1681('0x8a')]=function(_0x358703,_0x27308a,_0x1a3e92){var _0x257db5={};var _0x461564={};var _0x2a8d3d;var _0x545534;return db['SmsQueue'][_0x1681('0x5b')]({'where':{'id':_0x358703['params']['id']}})[_0x1681('0x28')](handleEntityNotFound(_0x27308a,null))[_0x1681('0x28')](function(_0x488c10){if(_0x488c10){_0x2a8d3d=_0x488c10;_0x461564[_0x1681('0x3c')]=_[_0x1681('0x39')](db[_0x1681('0x66')][_0x1681('0x34')]);_0x461564[_0x1681('0x38')]=_['keys'](_0x358703[_0x1681('0x38')]);_0x461564[_0x1681('0x3a')]=_[_0x1681('0x3b')](_0x461564[_0x1681('0x3c')],_0x461564[_0x1681('0x38')]);_0x257db5['attributes']=_['intersection'](_0x461564['model'],qs[_0x1681('0x3e')](_0x358703[_0x1681('0x38')][_0x1681('0x3e')]));_0x257db5[_0x1681('0x3d')]=_0x257db5[_0x1681('0x3d')]['length']?_0x257db5[_0x1681('0x3d')]:_0x461564[_0x1681('0x3c')];_0x257db5[_0x1681('0x42')]=qs['sort'](_0x358703[_0x1681('0x38')]['sort']);_0x257db5['where']=qs[_0x1681('0x3a')](_[_0x1681('0x45')](_0x358703[_0x1681('0x38')],_0x461564[_0x1681('0x3a')]));if(_0x358703[_0x1681('0x38')][_0x1681('0x48')]){_0x257db5[_0x1681('0x44')]=_[_0x1681('0x46')](_0x257db5['where'],{'$or':_['map'](_0x257db5['attributes'],function(_0x2fe434){var _0x16ef8a={};_0x16ef8a[_0x2fe434]={'$like':'%'+_0x358703[_0x1681('0x38')][_0x1681('0x48')]+'%'};return _0x16ef8a;})});}_0x257db5=_['merge']({},_0x257db5,_0x358703[_0x1681('0x49')]);return _0x2a8d3d[_0x1681('0x8a')](_0x257db5);}})[_0x1681('0x28')](function(_0x3041c6){if(_0x3041c6){_0x545534=_0x3041c6[_0x1681('0x3f')];if(!_0x358703[_0x1681('0x38')][_0x1681('0x40')](_0x1681('0x41'))){_0x257db5['limit']=qs['limit'](_0x358703[_0x1681('0x38')][_0x1681('0x23')]);_0x257db5['offset']=qs[_0x1681('0x21')](_0x358703[_0x1681('0x38')]['offset']);}return _0x2a8d3d[_0x1681('0x8a')](_0x257db5);}})[_0x1681('0x28')](function(_0x4e5477){if(_0x4e5477){return _0x4e5477?{'count':_0x545534,'rows':_0x4e5477}:null;}})[_0x1681('0x28')](respondWithResult(_0x27308a,null))['catch'](handleError(_0x27308a,null));};
\ No newline at end of file
+var _0xa9b2=['fields','hasOwnProperty','order','sort','where','pick','merge','filter','options','include','SmsQueue','rows','show','params','length','includeAll','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserSmsQueue','SmsQueueId','findAll','User','UserId','smsPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','nolimit','ids','Agents','online','interface','flatMap','sequelize','transaction','each','forEach','userSmsQueue:save','removeTeams','Team','select','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','SELECT','every','TeamId','includes','all','union','compact','value','removeAgents','emit','userSmsQueue:remove','addAgents','omit','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsQueue.socket','sendStatus','status','end','offset','limit','count','set','Content-Range','json','apply','save','update','then','destroy','get','SmsQueues','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes'];(function(_0x472d19,_0x38c5dc){var _0x55b721=function(_0x8ccb62){while(--_0x8ccb62){_0x472d19['push'](_0x472d19['shift']());}};_0x55b721(++_0x38c5dc);}(_0xa9b2,0xde));var _0x2a9b=function(_0x17541e,_0x46df72){_0x17541e=_0x17541e-0x0;var _0x1c17eb=_0xa9b2[_0x17541e];return _0x1c17eb;};'use strict';var emlformat=require(_0x2a9b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2a9b('0x1'));var jsonpatch=require(_0x2a9b('0x2'));var rp=require(_0x2a9b('0x3'));var moment=require(_0x2a9b('0x4'));var BPromise=require(_0x2a9b('0x5'));var Mustache=require(_0x2a9b('0x6'));var util=require(_0x2a9b('0x7'));var path=require(_0x2a9b('0x8'));var sox=require(_0x2a9b('0x9'));var csv=require(_0x2a9b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2a9b('0xb'));var _=require(_0x2a9b('0xc'));var squel=require('squel');var crypto=require(_0x2a9b('0xd'));var jsforce=require(_0x2a9b('0xe'));var deskjs=require(_0x2a9b('0xf'));var toCsv=require(_0x2a9b('0xa'));var querystring=require(_0x2a9b('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2a9b('0x11'));var as=require(_0x2a9b('0x12'));var hardwareService=require(_0x2a9b('0x13'));var logger=require(_0x2a9b('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2a9b('0x15'));var db=require(_0x2a9b('0x16'))['db'];config[_0x2a9b('0x17')]=_[_0x2a9b('0x18')](config[_0x2a9b('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x2a9b('0x19'))(new Redis(config['redis']));require(_0x2a9b('0x1a'))['register'](socket);function respondWithStatusCode(_0x16c71c,_0x349325){_0x349325=_0x349325||0xcc;return function(_0xed253a){if(_0xed253a){return _0x16c71c[_0x2a9b('0x1b')](_0x349325);}return _0x16c71c[_0x2a9b('0x1c')](_0x349325)[_0x2a9b('0x1d')]();};}function respondWithResult(_0x56499f,_0x5806a7){_0x5806a7=_0x5806a7||0xc8;return function(_0x513691){if(_0x513691){return _0x56499f[_0x2a9b('0x1c')](_0x5806a7)['json'](_0x513691);}};}function respondWithFilteredResult(_0x2a94c8,_0x266502){return function(_0x536cba){if(_0x536cba){var _0x4e5580=typeof _0x266502[_0x2a9b('0x1e')]==='undefined'&&typeof _0x266502[_0x2a9b('0x1f')]==='undefined';var _0x258e60=_0x536cba[_0x2a9b('0x20')];var _0x562409=_0x4e5580?0x0:_0x266502[_0x2a9b('0x1e')];var _0x1aafb6=_0x4e5580?_0x536cba[_0x2a9b('0x20')]:_0x266502[_0x2a9b('0x1e')]+_0x266502[_0x2a9b('0x1f')];var _0x252a2f;if(_0x1aafb6>=_0x258e60){_0x1aafb6=_0x258e60;_0x252a2f=0xc8;}else{_0x252a2f=0xce;}_0x2a94c8['status'](_0x252a2f);return _0x2a94c8[_0x2a9b('0x21')](_0x2a9b('0x22'),_0x562409+'-'+_0x1aafb6+'/'+_0x258e60)[_0x2a9b('0x23')](_0x536cba);}return null;};}function patchUpdates(_0x3c3743){return function(_0x561695){try{jsonpatch[_0x2a9b('0x24')](_0x561695,_0x3c3743,!![]);}catch(_0x4c108c){return BPromise['reject'](_0x4c108c);}return _0x561695[_0x2a9b('0x25')]();};}function saveUpdates(_0x1becb0,_0x41a1f8){return function(_0x19efd1){if(_0x19efd1){return _0x19efd1[_0x2a9b('0x26')](_0x1becb0)[_0x2a9b('0x27')](function(_0x5da9d9){return _0x5da9d9;});}return null;};}function removeEntity(_0x2f3653,_0x8bb928){return function(_0x13597d){if(_0x13597d){return _0x13597d[_0x2a9b('0x28')]()['then'](function(){var _0x253ce6=_0x13597d[_0x2a9b('0x29')]({'plain':!![]});var _0x160c04=_0x2a9b('0x2a');return db[_0x2a9b('0x2b')][_0x2a9b('0x28')]({'where':{'type':_0x160c04,'resourceId':_0x253ce6['id']}})['then'](function(){return _0x13597d;});})[_0x2a9b('0x27')](function(){_0x2f3653['status'](0xcc)[_0x2a9b('0x1d')]();});}};}function handleEntityNotFound(_0x486b19,_0x211cd8){return function(_0x2e0e99){if(!_0x2e0e99){_0x486b19[_0x2a9b('0x1b')](0x194);}return _0x2e0e99;};}function handleError(_0x21279d,_0x576468){_0x576468=_0x576468||0x1f4;return function(_0x1c3efb){logger[_0x2a9b('0x2c')](_0x1c3efb[_0x2a9b('0x2d')]);if(_0x1c3efb[_0x2a9b('0x2e')]){delete _0x1c3efb['name'];}_0x21279d[_0x2a9b('0x1c')](_0x576468)[_0x2a9b('0x2f')](_0x1c3efb);};}exports[_0x2a9b('0x30')]=function(_0x8b2046,_0x1051b6){var _0x2ab697={},_0x434f1d={},_0x5d79b7={'count':0x0,'rows':[]};var _0x250d8b=_[_0x2a9b('0x31')](db['SmsQueue'][_0x2a9b('0x32')],function(_0x36b61e){return{'name':_0x36b61e[_0x2a9b('0x33')],'type':_0x36b61e[_0x2a9b('0x34')][_0x2a9b('0x35')]};});_0x434f1d[_0x2a9b('0x36')]=_[_0x2a9b('0x31')](_0x250d8b,'name');_0x434f1d[_0x2a9b('0x37')]=_[_0x2a9b('0x38')](_0x8b2046[_0x2a9b('0x37')]);_0x434f1d[_0x2a9b('0x39')]=_[_0x2a9b('0x3a')](_0x434f1d[_0x2a9b('0x36')],_0x434f1d['query']);_0x2ab697[_0x2a9b('0x3b')]=_['intersection'](_0x434f1d[_0x2a9b('0x36')],qs[_0x2a9b('0x3c')](_0x8b2046['query']['fields']));_0x2ab697[_0x2a9b('0x3b')]=_0x2ab697[_0x2a9b('0x3b')]['length']?_0x2ab697['attributes']:_0x434f1d[_0x2a9b('0x36')];if(!_0x8b2046[_0x2a9b('0x37')][_0x2a9b('0x3d')]('nolimit')){_0x2ab697[_0x2a9b('0x1f')]=qs[_0x2a9b('0x1f')](_0x8b2046['query'][_0x2a9b('0x1f')]);_0x2ab697['offset']=qs['offset'](_0x8b2046[_0x2a9b('0x37')][_0x2a9b('0x1e')]);}_0x2ab697[_0x2a9b('0x3e')]=qs[_0x2a9b('0x3f')](_0x8b2046[_0x2a9b('0x37')][_0x2a9b('0x3f')]);_0x2ab697[_0x2a9b('0x40')]=qs[_0x2a9b('0x39')](_[_0x2a9b('0x41')](_0x8b2046[_0x2a9b('0x37')],_0x434f1d[_0x2a9b('0x39')]),_0x250d8b);if(_0x8b2046['query']['filter']){_0x2ab697[_0x2a9b('0x40')]=_[_0x2a9b('0x42')](_0x2ab697[_0x2a9b('0x40')],{'$or':_['map'](_0x250d8b,function(_0x2cf539){if(_0x2cf539[_0x2a9b('0x34')]!=='VIRTUAL'){var _0x11bdec={};_0x11bdec[_0x2cf539[_0x2a9b('0x2e')]]={'$like':'%'+_0x8b2046['query'][_0x2a9b('0x43')]+'%'};return _0x11bdec;}})});}_0x2ab697=_[_0x2a9b('0x42')]({},_0x2ab697,_0x8b2046[_0x2a9b('0x44')]);var _0x3d8c64={'where':_0x2ab697[_0x2a9b('0x40')]};return db['SmsQueue'][_0x2a9b('0x20')](_0x3d8c64)['then'](function(_0x2c65fb){_0x5d79b7[_0x2a9b('0x20')]=_0x2c65fb;if(_0x8b2046[_0x2a9b('0x37')]['includeAll']){_0x2ab697[_0x2a9b('0x45')]=[{'all':!![]}];}return db[_0x2a9b('0x46')]['findAll'](_0x2ab697);})[_0x2a9b('0x27')](function(_0x8509d7){_0x5d79b7[_0x2a9b('0x47')]=_0x8509d7;return _0x5d79b7;})['then'](respondWithFilteredResult(_0x1051b6,_0x2ab697))['catch'](handleError(_0x1051b6,null));};exports[_0x2a9b('0x48')]=function(_0x213029,_0x23bd43){var _0x49db41={'raw':!![],'where':{'id':_0x213029[_0x2a9b('0x49')]['id']}},_0x364c74={};_0x364c74[_0x2a9b('0x36')]=_[_0x2a9b('0x38')](db[_0x2a9b('0x46')][_0x2a9b('0x32')]);_0x364c74[_0x2a9b('0x37')]=_[_0x2a9b('0x38')](_0x213029[_0x2a9b('0x37')]);_0x364c74['filters']=_['intersection'](_0x364c74[_0x2a9b('0x36')],_0x364c74[_0x2a9b('0x37')]);_0x49db41['attributes']=_[_0x2a9b('0x3a')](_0x364c74['model'],qs[_0x2a9b('0x3c')](_0x213029['query']['fields']));_0x49db41['attributes']=_0x49db41[_0x2a9b('0x3b')][_0x2a9b('0x4a')]?_0x49db41[_0x2a9b('0x3b')]:_0x364c74[_0x2a9b('0x36')];if(_0x213029[_0x2a9b('0x37')][_0x2a9b('0x4b')]){_0x49db41[_0x2a9b('0x45')]=[{'all':!![]}];}_0x49db41=_[_0x2a9b('0x42')]({},_0x49db41,_0x213029['options']);return db[_0x2a9b('0x46')][_0x2a9b('0x4c')](_0x49db41)[_0x2a9b('0x27')](handleEntityNotFound(_0x23bd43,null))['then'](respondWithResult(_0x23bd43,null))[_0x2a9b('0x4d')](handleError(_0x23bd43,null));};exports[_0x2a9b('0x4e')]=function(_0x4d85b2,_0x168269){return db[_0x2a9b('0x46')]['create'](_0x4d85b2[_0x2a9b('0x4f')],{})[_0x2a9b('0x27')](function(_0x314da8){var _0x470811=_0x4d85b2[_0x2a9b('0x50')][_0x2a9b('0x29')]({'plain':!![]});if(!_0x470811)throw new Error(_0x2a9b('0x51'));if(_0x470811[_0x2a9b('0x52')]===_0x2a9b('0x50')){var _0x412150=_0x314da8['get']({'plain':!![]});var _0x9432de=_0x2a9b('0x2a');return db[_0x2a9b('0x53')]['find']({'where':{'name':_0x9432de,'userProfileId':_0x470811[_0x2a9b('0x54')]},'raw':!![]})[_0x2a9b('0x27')](function(_0xcabf82){if(_0xcabf82&&_0xcabf82[_0x2a9b('0x55')]===0x0){return db[_0x2a9b('0x2b')][_0x2a9b('0x4e')]({'name':_0x412150['name'],'resourceId':_0x412150['id'],'type':_0xcabf82[_0x2a9b('0x2e')],'sectionId':_0xcabf82['id']},{})['then'](function(){return _0x314da8;});}else{return _0x314da8;}})[_0x2a9b('0x4d')](function(_0x38eebb){logger[_0x2a9b('0x2c')](_0x2a9b('0x56'),_0x38eebb);throw _0x38eebb;});}return _0x314da8;})['then'](respondWithResult(_0x168269,0xc9))[_0x2a9b('0x4d')](handleError(_0x168269,null));};exports[_0x2a9b('0x26')]=function(_0x4c4f1d,_0x3d21ed){if(_0x4c4f1d[_0x2a9b('0x4f')]['id']){delete _0x4c4f1d[_0x2a9b('0x4f')]['id'];}return db[_0x2a9b('0x46')][_0x2a9b('0x4c')]({'where':{'id':_0x4c4f1d[_0x2a9b('0x49')]['id']}})[_0x2a9b('0x27')](handleEntityNotFound(_0x3d21ed,null))[_0x2a9b('0x27')](saveUpdates(_0x4c4f1d[_0x2a9b('0x4f')],null))['then'](respondWithResult(_0x3d21ed,null))[_0x2a9b('0x4d')](handleError(_0x3d21ed,null));};exports[_0x2a9b('0x28')]=function(_0x563ea6,_0xe55778){return db[_0x2a9b('0x46')][_0x2a9b('0x4c')]({'where':{'id':_0x563ea6[_0x2a9b('0x49')]['id']}})[_0x2a9b('0x27')](handleEntityNotFound(_0xe55778,null))[_0x2a9b('0x27')](removeEntity(_0xe55778,null))[_0x2a9b('0x4d')](handleError(_0xe55778,null));};exports[_0x2a9b('0x57')]=function(_0x1cfda8,_0x11666a){return db[_0x2a9b('0x46')][_0x2a9b('0x57')]()[_0x2a9b('0x27')](respondWithResult(_0x11666a,null))[_0x2a9b('0x4d')](handleError(_0x11666a,null));};exports[_0x2a9b('0x58')]=function(_0x5956bc,_0x18f620,_0x14e25d){var _0x8ae9f7={'raw':!![],'where':{}},_0x1be085={},_0x1dae16;return db['SmsQueue'][_0x2a9b('0x59')]({'where':{'id':_0x5956bc['params']['id']}})[_0x2a9b('0x27')](handleEntityNotFound(_0x18f620,null))[_0x2a9b('0x27')](function(_0x1e3563){if(_0x1e3563){_0x1dae16=_0x1e3563['get']({'plain':!![]});_0x1be085[_0x2a9b('0x36')]=_['keys'](db[_0x2a9b('0x5a')][_0x2a9b('0x32')]);_0x1be085[_0x2a9b('0x37')]=_[_0x2a9b('0x38')](_0x5956bc[_0x2a9b('0x37')]);_0x1be085[_0x2a9b('0x39')]=_[_0x2a9b('0x3a')](_0x1be085['model'],_0x1be085[_0x2a9b('0x37')]);_0x8ae9f7[_0x2a9b('0x3b')]=_[_0x2a9b('0x3a')](_0x1be085['model'],qs[_0x2a9b('0x3c')](_0x5956bc[_0x2a9b('0x37')][_0x2a9b('0x3c')]));_0x8ae9f7[_0x2a9b('0x3b')]=_0x8ae9f7[_0x2a9b('0x3b')][_0x2a9b('0x4a')]?_0x8ae9f7['attributes']:_0x1be085[_0x2a9b('0x36')];if(!_0x5956bc[_0x2a9b('0x37')][_0x2a9b('0x3d')]('nolimit')){_0x8ae9f7[_0x2a9b('0x1f')]=qs[_0x2a9b('0x1f')](_0x5956bc[_0x2a9b('0x37')][_0x2a9b('0x1f')]);_0x8ae9f7[_0x2a9b('0x1e')]=qs[_0x2a9b('0x1e')](_0x5956bc[_0x2a9b('0x37')][_0x2a9b('0x1e')]);}_0x8ae9f7[_0x2a9b('0x3e')]=qs[_0x2a9b('0x3f')](_0x5956bc[_0x2a9b('0x37')][_0x2a9b('0x3f')]);_0x8ae9f7[_0x2a9b('0x40')]=qs['filters'](_[_0x2a9b('0x41')](_0x5956bc[_0x2a9b('0x37')],_0x1be085[_0x2a9b('0x39')]));_0x8ae9f7[_0x2a9b('0x40')][_0x2a9b('0x5b')]=_0x1e3563['id'];if(_0x5956bc['query'][_0x2a9b('0x43')]){_0x8ae9f7['where']=_[_0x2a9b('0x42')](_0x8ae9f7[_0x2a9b('0x40')],{'$or':_[_0x2a9b('0x31')](_0x8ae9f7[_0x2a9b('0x3b')],function(_0x56012b){var _0x49312f={};_0x49312f[_0x56012b]={'$like':'%'+_0x5956bc[_0x2a9b('0x37')][_0x2a9b('0x43')]+'%'};return _0x49312f;})});}_0x8ae9f7=_[_0x2a9b('0x42')]({},_0x8ae9f7,_0x5956bc[_0x2a9b('0x44')]);return db[_0x2a9b('0x5a')][_0x2a9b('0x5c')](_0x8ae9f7);}})[_0x2a9b('0x27')](function(_0x56e26f){if(_0x56e26f){return db[_0x2a9b('0x5d')]['findAndCountAll']({'where':{'id':_['map'](_0x56e26f,_0x2a9b('0x5e')),'role':'agent'},'attributes':['id','name',_0x2a9b('0x5f'),_0x2a9b('0x60'),_0x2a9b('0x61')]});}})[_0x2a9b('0x27')](function(_0x18a466){if(_0x18a466){return{'count':_0x18a466[_0x2a9b('0x20')],'rows':_['map'](_0x18a466[_0x2a9b('0x47')],function(_0x40f25d){return{'membername':_0x40f25d['name'],'UserId':_0x40f25d['id'],'queue_name':_0x1dae16[_0x2a9b('0x2e')],'SmsQueueId':_0x1dae16['id'],'interface':util[_0x2a9b('0x62')](_0x2a9b('0x63'),_0x2a9b('0x64'),_0x40f25d[_0x2a9b('0x2e')]),'penalty':0x0,'paused':_0x40f25d[_0x2a9b('0x5f')],'createdAt':_0x40f25d[_0x2a9b('0x61')],'updatedAt':_0x40f25d[_0x2a9b('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x2a9b('0x27')](respondWithFilteredResult(_0x18f620,_0x8ae9f7))[_0x2a9b('0x4d')](handleError(_0x18f620,null));};exports[_0x2a9b('0x65')]=function(_0x2e3ae6,_0x1c7389,_0x3f6e96){var _0x2ee44f={};var _0x12faef={};var _0x514a73;var _0x3c657b;return db['SmsQueue'][_0x2a9b('0x59')]({'where':{'id':_0x2e3ae6[_0x2a9b('0x49')]['id']}})[_0x2a9b('0x27')](handleEntityNotFound(_0x1c7389,null))[_0x2a9b('0x27')](function(_0x65a23){if(_0x65a23){_0x514a73=_0x65a23;_0x12faef[_0x2a9b('0x36')]=_[_0x2a9b('0x38')](db['Team'][_0x2a9b('0x32')]);_0x12faef['query']=_[_0x2a9b('0x38')](_0x2e3ae6['query']);_0x12faef[_0x2a9b('0x39')]=_[_0x2a9b('0x3a')](_0x12faef[_0x2a9b('0x36')],_0x12faef[_0x2a9b('0x37')]);_0x2ee44f[_0x2a9b('0x3b')]=_['intersection'](_0x12faef[_0x2a9b('0x36')],qs[_0x2a9b('0x3c')](_0x2e3ae6[_0x2a9b('0x37')][_0x2a9b('0x3c')]));_0x2ee44f[_0x2a9b('0x3b')]=_0x2ee44f['attributes']['length']?_0x2ee44f[_0x2a9b('0x3b')]:_0x12faef[_0x2a9b('0x36')];_0x2ee44f[_0x2a9b('0x3e')]=qs[_0x2a9b('0x3f')](_0x2e3ae6[_0x2a9b('0x37')]['sort']);_0x2ee44f[_0x2a9b('0x40')]=qs[_0x2a9b('0x39')](_[_0x2a9b('0x41')](_0x2e3ae6['query'],_0x12faef[_0x2a9b('0x39')]));if(_0x2e3ae6[_0x2a9b('0x37')]['filter']){_0x2ee44f['where']=_[_0x2a9b('0x42')](_0x2ee44f[_0x2a9b('0x40')],{'$or':_['map'](_0x2ee44f[_0x2a9b('0x3b')],function(_0x4cad7f){var _0x4d04f3={};_0x4d04f3[_0x4cad7f]={'$like':'%'+_0x2e3ae6[_0x2a9b('0x37')][_0x2a9b('0x43')]+'%'};return _0x4d04f3;})});}_0x2ee44f=_[_0x2a9b('0x42')]({},_0x2ee44f,_0x2e3ae6[_0x2a9b('0x44')]);return _0x514a73[_0x2a9b('0x65')](_0x2ee44f);}})['then'](function(_0x2cc306){if(_0x2cc306){_0x3c657b=_0x2cc306[_0x2a9b('0x4a')];if(!_0x2e3ae6[_0x2a9b('0x37')][_0x2a9b('0x3d')](_0x2a9b('0x66'))){_0x2ee44f[_0x2a9b('0x1f')]=qs[_0x2a9b('0x1f')](_0x2e3ae6[_0x2a9b('0x37')][_0x2a9b('0x1f')]);_0x2ee44f['offset']=qs['offset'](_0x2e3ae6[_0x2a9b('0x37')][_0x2a9b('0x1e')]);}return _0x514a73['getTeams'](_0x2ee44f);}})[_0x2a9b('0x27')](function(_0x513b79){if(_0x513b79){return _0x513b79?{'count':_0x3c657b,'rows':_0x513b79}:null;}})['then'](respondWithResult(_0x1c7389,null))[_0x2a9b('0x4d')](handleError(_0x1c7389,null));};exports['addTeams']=function(_0x2d8678,_0x3ec8f1,_0x18eda2){var _0x210bbc=_0x2d8678[_0x2a9b('0x4f')][_0x2a9b('0x67')];return db['Team'][_0x2a9b('0x5c')]({'where':{'id':_0x210bbc},'attributes':['id'],'include':[{'model':db['User'],'as':_0x2a9b('0x68'),'attributes':['id',_0x2a9b('0x2e'),_0x2a9b('0x69'),'voicePause',_0x2a9b('0x6a')],'raw':!![]}]})[_0x2a9b('0x27')](function(_0x51ed28){if(_0x51ed28){var _0xb2164b=_[_0x2a9b('0x6b')](_0x51ed28,function(_0x18dbd3){var _0x12b0a6=_0x18dbd3[_0x2a9b('0x29')]({'plain':!![]});return _0x12b0a6[_0x2a9b('0x68')];});return db[_0x2a9b('0x46')]['find']({'where':{'id':_0x2d8678[_0x2a9b('0x49')]['id']}})[_0x2a9b('0x27')](function(_0x3a3a33){return db[_0x2a9b('0x6c')][_0x2a9b('0x6d')](function(_0x376867){return _0x3a3a33['addTeams'](_0x210bbc,{'transaction':_0x376867})[_0x2a9b('0x27')](function(){return BPromise[_0x2a9b('0x6e')](_0xb2164b,function(_0x39cb9f){return db[_0x2a9b('0x5a')]['findOrCreate']({'where':{'UserId':_0x39cb9f['id'],'SmsQueueId':_0x2d8678[_0x2a9b('0x49')]['id']},'transaction':_0x376867});});})[_0x2a9b('0x27')](function(){_0xb2164b[_0x2a9b('0x6f')](function(_0x5269df){socket['emit'](_0x2a9b('0x70'),{'UserId':_0x5269df['id'],'SmsQueueId':_0x3a3a33['id']});});});});});}})[_0x2a9b('0x27')](respondWithStatusCode(_0x3ec8f1,null))[_0x2a9b('0x4d')](handleError(_0x3ec8f1,null));};exports[_0x2a9b('0x71')]=function(_0x50f80d,_0x3df60f,_0x4be589){return db[_0x2a9b('0x72')][_0x2a9b('0x5c')]({'where':{'id':_0x50f80d[_0x2a9b('0x37')]['ids']},'attributes':['id'],'include':[{'model':db[_0x2a9b('0x5d')],'as':_0x2a9b('0x68'),'attributes':['id'],'raw':!![]}]})[_0x2a9b('0x27')](handleEntityNotFound(_0x3df60f,null))[_0x2a9b('0x27')](function(_0x3b34ea){var _0x2b969e=_['map'](_0x3b34ea,'id');var _0x3d2934=[];var _0x23a18b=[];var _0x3d38f5=squel[_0x2a9b('0x73')]();_0x3d38f5['field'](_0x2a9b('0x74'))[_0x2a9b('0x75')](_0x2a9b('0x76'),'tq')[_0x2a9b('0x77')](_0x2a9b('0x78'),'ut',_0x2a9b('0x79'))[_0x2a9b('0x40')](_0x2a9b('0x7a'),_0x50f80d[_0x2a9b('0x49')]['id']);for(var _0x1f0b4d=0x0;_0x1f0b4d<_0x3b34ea[_0x2a9b('0x4a')];_0x1f0b4d+=0x1){let _0xa247d1=_0x3b34ea[_0x1f0b4d];for(var _0x1443b0=0x0;_0x1443b0<_0xa247d1['Agents'][_0x2a9b('0x4a')];_0x1443b0+=0x1){let _0x109a7a=_0xa247d1[_0x2a9b('0x68')][_0x1443b0];var _0x362adc=_0x3d38f5[_0x2a9b('0x7b')]();_0x362adc[_0x2a9b('0x40')](_0x2a9b('0x7c'),_0x109a7a['id']);_0x23a18b['push'](db[_0x2a9b('0x6c')][_0x2a9b('0x37')](_0x362adc[_0x2a9b('0x7d')](),{'type':db[_0x2a9b('0x6c')]['QueryTypes'][_0x2a9b('0x7e')]})['then'](function(_0x2abd32){if(_0x2abd32[_0x2a9b('0x4a')]===0x1){return _0x109a7a['id'];}else{var _0x1b3c36=_[_0x2a9b('0x7f')](_[_0x2a9b('0x31')](_0x2abd32,_0x2a9b('0x80')),function(_0x4003ac){return _[_0x2a9b('0x81')](_0x2b969e,_0x4003ac);});if(_0x1b3c36){return _0x109a7a['id'];}}}));}}return BPromise[_0x2a9b('0x82')](_0x23a18b)[_0x2a9b('0x27')](function(_0x42f557){_0x3d2934=_(_0x3d2934)[_0x2a9b('0x83')](_0x42f557)[_0x2a9b('0x84')]()[_0x2a9b('0x85')]();return db[_0x2a9b('0x46')][_0x2a9b('0x4c')]({'where':{'id':_0x50f80d[_0x2a9b('0x49')]['id']}})[_0x2a9b('0x27')](function(_0x4de63f){return db[_0x2a9b('0x6c')][_0x2a9b('0x6d')](function(_0x2c6637){return _0x4de63f[_0x2a9b('0x71')](_0x50f80d['query'][_0x2a9b('0x67')],{'transaction':_0x2c6637})[_0x2a9b('0x27')](function(){if(!_['isEmpty'](_0x3d2934)){return _0x4de63f[_0x2a9b('0x86')](_0x3d2934,{'transaction':_0x2c6637});}})[_0x2a9b('0x27')](function(){_0x3d2934[_0x2a9b('0x6f')](function(_0x41bef9){socket[_0x2a9b('0x87')](_0x2a9b('0x88'),{'UserId':_0x41bef9,'SmsQueueId':_0x4de63f['id']});});});});});});})[_0x2a9b('0x27')](respondWithStatusCode(_0x3df60f,null))[_0x2a9b('0x4d')](handleError(_0x3df60f,null));};exports[_0x2a9b('0x89')]=function(_0x287e76,_0x2b7f5e,_0xcfe054){return db['SmsQueue']['find']({'where':{'id':_0x287e76['params']['id']}})[_0x2a9b('0x27')](handleEntityNotFound(_0x2b7f5e,null))[_0x2a9b('0x27')](function(_0x4894f4){if(_0x4894f4){return _0x4894f4['addAgents'](_0x287e76[_0x2a9b('0x4f')][_0x2a9b('0x67')],_[_0x2a9b('0x8a')](_0x287e76[_0x2a9b('0x4f')],[_0x2a9b('0x67'),'id'])||{})['spread'](function(_0x104287){for(var _0x522d1b=0x0;_0x522d1b<_0x287e76[_0x2a9b('0x4f')][_0x2a9b('0x67')]['length'];_0x522d1b+=0x1){socket[_0x2a9b('0x87')](_0x2a9b('0x70'),{'UserId':Number(_0x287e76['body'][_0x2a9b('0x67')][_0x522d1b]),'SmsQueueId':Number(_0x287e76[_0x2a9b('0x49')]['id'])});}return _0x104287;});}})[_0x2a9b('0x27')](respondWithResult(_0x2b7f5e,null))['catch'](handleError(_0x2b7f5e,null));};exports[_0x2a9b('0x86')]=function(_0x16bb15,_0x3bf8f3,_0x35bfda){return db[_0x2a9b('0x46')]['find']({'where':{'id':_0x16bb15[_0x2a9b('0x49')]['id']}})[_0x2a9b('0x27')](handleEntityNotFound(_0x3bf8f3,null))[_0x2a9b('0x27')](function(_0xbcf86d){if(_0xbcf86d){return _0xbcf86d[_0x2a9b('0x86')](_0x16bb15[_0x2a9b('0x37')][_0x2a9b('0x67')])[_0x2a9b('0x27')](function(){if(_[_0x2a9b('0x8b')](_0x16bb15['query']['ids'])){for(var _0xfde723=0x0;_0xfde723<_0x16bb15['query'][_0x2a9b('0x67')][_0x2a9b('0x4a')];_0xfde723+=0x1){socket[_0x2a9b('0x87')](_0x2a9b('0x88'),{'UserId':Number(_0x16bb15['query'][_0x2a9b('0x67')][_0xfde723]),'SmsQueueId':Number(_0x16bb15[_0x2a9b('0x49')]['id'])});}}else{socket[_0x2a9b('0x87')](_0x2a9b('0x88'),{'UserId':Number(_0x16bb15[_0x2a9b('0x37')][_0x2a9b('0x67')]),'SmsQueueId':Number(_0x16bb15[_0x2a9b('0x49')]['id'])});}});}})[_0x2a9b('0x27')](respondWithStatusCode(_0x3bf8f3,null))[_0x2a9b('0x4d')](handleError(_0x3bf8f3,null));};exports['getAgents']=function(_0x261661,_0x1ed263,_0x3318f9){var _0x577c24={};var _0x4d8d5c={};var _0x574904;var _0x3277f5;return db[_0x2a9b('0x46')]['findOne']({'where':{'id':_0x261661[_0x2a9b('0x49')]['id']}})[_0x2a9b('0x27')](handleEntityNotFound(_0x1ed263,null))[_0x2a9b('0x27')](function(_0x5d95d6){if(_0x5d95d6){_0x574904=_0x5d95d6;_0x4d8d5c[_0x2a9b('0x36')]=_[_0x2a9b('0x38')](db[_0x2a9b('0x5d')][_0x2a9b('0x32')]);_0x4d8d5c['query']=_[_0x2a9b('0x38')](_0x261661['query']);_0x4d8d5c[_0x2a9b('0x39')]=_[_0x2a9b('0x3a')](_0x4d8d5c[_0x2a9b('0x36')],_0x4d8d5c['query']);_0x577c24[_0x2a9b('0x3b')]=_[_0x2a9b('0x3a')](_0x4d8d5c[_0x2a9b('0x36')],qs[_0x2a9b('0x3c')](_0x261661[_0x2a9b('0x37')][_0x2a9b('0x3c')]));_0x577c24[_0x2a9b('0x3b')]=_0x577c24['attributes'][_0x2a9b('0x4a')]?_0x577c24['attributes']:_0x4d8d5c['model'];_0x577c24[_0x2a9b('0x3e')]=qs['sort'](_0x261661[_0x2a9b('0x37')][_0x2a9b('0x3f')]);_0x577c24['where']=qs[_0x2a9b('0x39')](_['pick'](_0x261661[_0x2a9b('0x37')],_0x4d8d5c[_0x2a9b('0x39')]));if(_0x261661['query']['filter']){_0x577c24[_0x2a9b('0x40')]=_['merge'](_0x577c24[_0x2a9b('0x40')],{'$or':_[_0x2a9b('0x31')](_0x577c24['attributes'],function(_0xd809ca){var _0x371ee1={};_0x371ee1[_0xd809ca]={'$like':'%'+_0x261661[_0x2a9b('0x37')][_0x2a9b('0x43')]+'%'};return _0x371ee1;})});}_0x577c24=_[_0x2a9b('0x42')]({},_0x577c24,_0x261661[_0x2a9b('0x44')]);return _0x574904[_0x2a9b('0x8c')](_0x577c24);}})['then'](function(_0x21ee6f){if(_0x21ee6f){_0x3277f5=_0x21ee6f[_0x2a9b('0x4a')];if(!_0x261661[_0x2a9b('0x37')][_0x2a9b('0x3d')](_0x2a9b('0x66'))){_0x577c24[_0x2a9b('0x1f')]=qs[_0x2a9b('0x1f')](_0x261661[_0x2a9b('0x37')][_0x2a9b('0x1f')]);_0x577c24[_0x2a9b('0x1e')]=qs['offset'](_0x261661[_0x2a9b('0x37')]['offset']);}return _0x574904[_0x2a9b('0x8c')](_0x577c24);}})[_0x2a9b('0x27')](function(_0x30e580){if(_0x30e580){return _0x30e580?{'count':_0x3277f5,'rows':_0x30e580}:null;}})['then'](respondWithResult(_0x1ed263,null))[_0x2a9b('0x4d')](handleError(_0x1ed263,null));};
\ No newline at end of file
index 8bfc8fc..846bbae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x843a=['hook','exports','SmsQueue','save','update','remove','emit','hasOwnProperty'];(function(_0x19ea71,_0x28639e){var _0x4f94ef=function(_0x2360cc){while(--_0x2360cc){_0x19ea71['push'](_0x19ea71['shift']());}};_0x4f94ef(++_0x28639e);}(_0x843a,0x182));var _0xa843=function(_0x3599f5,_0x324184){_0x3599f5=_0x3599f5-0x0;var _0x4efb59=_0x843a[_0x3599f5];return _0x4efb59;};'use strict';var EventEmitter=require('events');var SmsQueue=require('../../mysqldb')['db'][_0xa843('0x0')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa843('0x1'),'afterUpdate':_0xa843('0x2'),'afterDestroy':_0xa843('0x3')};function emitEvent(_0x5b2237){return function(_0x1f41df,_0x550ed5,_0x564564){SmsQueueEvents[_0xa843('0x4')](_0x5b2237+':'+_0x1f41df['id'],_0x1f41df);SmsQueueEvents[_0xa843('0x4')](_0x5b2237,_0x1f41df);_0x564564(null);};}for(var e in events){if(events[_0xa843('0x5')](e)){var event=events[e];SmsQueue[_0xa843('0x6')](e,emitEvent(event));}}module[_0xa843('0x7')]=SmsQueueEvents;
\ No newline at end of file
+var _0xc609=['../../mysqldb','SmsQueue','setMaxListeners','emit','hook','exports','events'];(function(_0x2f227c,_0x360c3a){var _0x5032bc=function(_0x824bb){while(--_0x824bb){_0x2f227c['push'](_0x2f227c['shift']());}};_0x5032bc(++_0x360c3a);}(_0xc609,0xa7));var _0x9c60=function(_0x74fbe4,_0x479246){_0x74fbe4=_0x74fbe4-0x0;var _0x31f4ce=_0xc609[_0x74fbe4];return _0x31f4ce;};'use strict';var EventEmitter=require(_0x9c60('0x0'));var SmsQueue=require(_0x9c60('0x1'))['db'][_0x9c60('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x9c60('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x39b9b1){return function(_0x12b77f,_0x2493a6,_0x5320ac){SmsQueueEvents[_0x9c60('0x4')](_0x39b9b1+':'+_0x12b77f['id'],_0x12b77f);SmsQueueEvents[_0x9c60('0x4')](_0x39b9b1,_0x12b77f);_0x5320ac(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0x9c60('0x5')](e,emitEvent(event));}}module[_0x9c60('0x6')]=SmsQueueEvents;
\ No newline at end of file
index 6620c94..7083c9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb54e=['./smsQueue.attributes','exports','define','SmsQueue','lodash','util','api','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb54e,0x138));var _0xeb54=function(_0x42a4cf,_0x1dffea){_0x42a4cf=_0x42a4cf-0x0;var _0x27e14a=_0xb54e[_0x42a4cf];return _0x27e14a;};'use strict';var _=require(_0xeb54('0x0'));var util=require(_0xeb54('0x1'));var logger=require('../../config/logger')(_0xeb54('0x2'));var moment=require('moment');var BPromise=require(_0xeb54('0x3'));var rp=require(_0xeb54('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeb54('0x5'));var config=require(_0xeb54('0x6'));var attributes=require(_0xeb54('0x7'));module[_0xeb54('0x8')]=function(_0x3f885,_0x311325){return _0x3f885[_0xeb54('0x9')](_0xeb54('0xa'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd167=['bluebird','request-promise','rimraf','./smsQueue.attributes','exports','sms_queues','lodash','util','../../config/logger','api','moment'];(function(_0x280a2c,_0x123814){var _0x48b498=function(_0x4fc6f1){while(--_0x4fc6f1){_0x280a2c['push'](_0x280a2c['shift']());}};_0x48b498(++_0x123814);}(_0xd167,0x15b));var _0x7d16=function(_0x478f27,_0x4d9544){_0x478f27=_0x478f27-0x0;var _0x584f0b=_0xd167[_0x478f27];return _0x584f0b;};'use strict';var _=require(_0x7d16('0x0'));var util=require(_0x7d16('0x1'));var logger=require(_0x7d16('0x2'))(_0x7d16('0x3'));var moment=require(_0x7d16('0x4'));var BPromise=require(_0x7d16('0x5'));var rp=require(_0x7d16('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7d16('0x7'));var config=require('../../config/environment');var attributes=require(_0x7d16('0x8'));module[_0x7d16('0x9')]=function(_0x3763b2,_0x330afc){return _0x3763b2['define']('SmsQueue',attributes,{'tableName':_0x7d16('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9119078..18e170f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7f5=['limit','include','map','model','catch','find','ShowSmsQueue','util','moment','bluebird','../../mysqldb','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./smsQueue.socket','register','request','then','info','SmsQueue,\x20%s,\x20%s','debug','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','GetSmsQueue','SmsQueue','findAll','options','raw','where','attributes'];(function(_0x298b53,_0x3f830d){var _0x370c14=function(_0x16a8d7){while(--_0x16a8d7){_0x298b53['push'](_0x298b53['shift']());}};_0x370c14(++_0x3f830d);}(_0xf7f5,0xc5));var _0x5f7f=function(_0x30420c,_0x2e5b1d){_0x30420c=_0x30420c-0x0;var _0x13b10e=_0xf7f5[_0x30420c];return _0x13b10e;};'use strict';var _=require('lodash');var util=require(_0x5f7f('0x0'));var moment=require(_0x5f7f('0x1'));var BPromise=require(_0x5f7f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5f7f('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x5f7f('0x4'));var jayson=require(_0x5f7f('0x5'));var client=jayson[_0x5f7f('0x6')][_0x5f7f('0x7')]({'port':0x232a});config[_0x5f7f('0x8')]=_[_0x5f7f('0x9')](config[_0x5f7f('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x5f7f('0xa'))(new Redis(config['redis']));require(_0x5f7f('0xb'))[_0x5f7f('0xc')](socket);function respondWithRpcPromise(_0x5a856d,_0x15a3b2,_0x8b1d43){return new BPromise(function(_0x2affbd,_0x265b2c){return client[_0x5f7f('0xd')](_0x5a856d,_0x8b1d43)[_0x5f7f('0xe')](function(_0x15b075){logger[_0x5f7f('0xf')](_0x5f7f('0x10'),_0x15a3b2,'request\x20sent');logger[_0x5f7f('0x11')](_0x5f7f('0x12'),_0x15a3b2,_0x5f7f('0x13'),JSON[_0x5f7f('0x14')](_0x15b075));if(_0x15b075['error']){if(_0x15b075[_0x5f7f('0x15')][_0x5f7f('0x16')]===0x1f4){logger[_0x5f7f('0x15')](_0x5f7f('0x10'),_0x15a3b2,_0x15b075[_0x5f7f('0x15')]['message']);return _0x265b2c(_0x15b075[_0x5f7f('0x15')][_0x5f7f('0x17')]);}logger['error'](_0x5f7f('0x10'),_0x15a3b2,_0x15b075[_0x5f7f('0x15')][_0x5f7f('0x17')]);return _0x2affbd(_0x15b075[_0x5f7f('0x15')][_0x5f7f('0x17')]);}else{logger[_0x5f7f('0xf')](_0x5f7f('0x10'),_0x15a3b2,_0x5f7f('0x13'));_0x2affbd(_0x15b075['result'][_0x5f7f('0x17')]);}})['catch'](function(_0x58c4d6){logger[_0x5f7f('0x15')](_0x5f7f('0x10'),_0x15a3b2,_0x58c4d6);_0x265b2c(_0x58c4d6);});});}exports[_0x5f7f('0x18')]=function(_0x53b4df){var _0x1cbfad=this;return new Promise(function(_0x112efb,_0x1fa931){return db[_0x5f7f('0x19')][_0x5f7f('0x1a')]({'raw':_0x53b4df[_0x5f7f('0x1b')]?_0x53b4df[_0x5f7f('0x1b')][_0x5f7f('0x1c')]===undefined?!![]:![]:!![],'where':_0x53b4df['options']?_0x53b4df['options'][_0x5f7f('0x1d')]||null:null,'attributes':_0x53b4df[_0x5f7f('0x1b')]?_0x53b4df[_0x5f7f('0x1b')][_0x5f7f('0x1e')]||null:null,'limit':_0x53b4df[_0x5f7f('0x1b')]?_0x53b4df['options'][_0x5f7f('0x1f')]||null:null,'include':_0x53b4df['options']?_0x53b4df['options'][_0x5f7f('0x20')]?_[_0x5f7f('0x21')](_0x53b4df['options'][_0x5f7f('0x20')],function(_0x28169f){return{'model':db[_0x28169f[_0x5f7f('0x22')]],'as':_0x28169f['as'],'attributes':_0x28169f[_0x5f7f('0x1e')],'include':_0x28169f[_0x5f7f('0x20')]?_['map'](_0x28169f[_0x5f7f('0x20')],function(_0x4743f7){return{'model':db[_0x4743f7[_0x5f7f('0x22')]],'as':_0x4743f7['as'],'attributes':_0x4743f7[_0x5f7f('0x1e')],'include':_0x4743f7['include']?_['map'](_0x4743f7[_0x5f7f('0x20')],function(_0x21696a){return{'model':db[_0x21696a[_0x5f7f('0x22')]],'as':_0x21696a['as'],'attributes':_0x21696a[_0x5f7f('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x5f7f('0xe')](function(_0x4643eb){logger[_0x5f7f('0xf')]('GetSmsQueue',_0x53b4df);logger['debug'](_0x5f7f('0x18'),_0x53b4df,JSON['stringify'](_0x4643eb));_0x112efb(_0x4643eb);})[_0x5f7f('0x23')](function(_0x1f9a27){logger[_0x5f7f('0x15')](_0x5f7f('0x18'),_0x1f9a27[_0x5f7f('0x17')],_0x53b4df);_0x1fa931(_0x1cbfad[_0x5f7f('0x15')](0x1f4,_0x1f9a27['message']));});});};exports['ShowSmsQueue']=function(_0x438e69){var _0x464b78=this;return new Promise(function(_0xb8ce5f,_0x7162e9){return db[_0x5f7f('0x19')][_0x5f7f('0x24')]({'raw':_0x438e69[_0x5f7f('0x1b')]?_0x438e69['options'][_0x5f7f('0x1c')]===undefined?!![]:![]:!![],'where':_0x438e69[_0x5f7f('0x1b')]?_0x438e69[_0x5f7f('0x1b')][_0x5f7f('0x1d')]||null:null,'attributes':_0x438e69['options']?_0x438e69[_0x5f7f('0x1b')][_0x5f7f('0x1e')]||null:null,'include':_0x438e69['options']?_0x438e69[_0x5f7f('0x1b')][_0x5f7f('0x20')]?_[_0x5f7f('0x21')](_0x438e69['options'][_0x5f7f('0x20')],function(_0x413b08){return{'model':db[_0x413b08[_0x5f7f('0x22')]],'as':_0x413b08['as'],'attributes':_0x413b08[_0x5f7f('0x1e')],'include':_0x413b08['include']?_[_0x5f7f('0x21')](_0x413b08[_0x5f7f('0x20')],function(_0x2473b0){return{'model':db[_0x2473b0[_0x5f7f('0x22')]],'as':_0x2473b0['as'],'attributes':_0x2473b0[_0x5f7f('0x1e')],'include':_0x2473b0[_0x5f7f('0x20')]?_[_0x5f7f('0x21')](_0x2473b0[_0x5f7f('0x20')],function(_0x249e4a){return{'model':db[_0x249e4a[_0x5f7f('0x22')]],'as':_0x249e4a['as'],'attributes':_0x249e4a['attributes']};}):[]};}):[]};}):[]:[]})[_0x5f7f('0xe')](function(_0x1ddd04){logger[_0x5f7f('0xf')](_0x5f7f('0x25'),_0x438e69);logger[_0x5f7f('0x11')](_0x5f7f('0x25'),_0x438e69,JSON[_0x5f7f('0x14')](_0x1ddd04));_0xb8ce5f(_0x1ddd04);})[_0x5f7f('0x23')](function(_0x1bedc7){logger[_0x5f7f('0x15')](_0x5f7f('0x25'),_0x1bedc7[_0x5f7f('0x17')],_0x438e69);_0x7162e9(_0x464b78['error'](0x1f4,_0x1bedc7['message']));});});};
\ No newline at end of file
+var _0x122f=['model','debug','catch','SmsQueue','find','raw','then','ShowSmsQueue','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','localhost','./smsQueue.socket','register','info','SmsQueue,\x20%s,\x20%s','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','GetSmsQueue','options','where','attributes','map','include'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x122f,0x15e));var _0xf122=function(_0x3fa802,_0x137b9c){_0x3fa802=_0x3fa802-0x0;var _0x3e9fd4=_0x122f[_0x3fa802];return _0x3e9fd4;};'use strict';var _=require(_0xf122('0x0'));var util=require(_0xf122('0x1'));var moment=require(_0xf122('0x2'));var BPromise=require('bluebird');var rs=require(_0xf122('0x3'));var fs=require('fs');var Redis=require(_0xf122('0x4'));var db=require(_0xf122('0x5'))['db'];var utils=require(_0xf122('0x6'));var logger=require(_0xf122('0x7'))(_0xf122('0x8'));var config=require(_0xf122('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf122('0xa')][_0xf122('0xb')]({'port':0x232a});config['redis']=_[_0xf122('0xc')](config[_0xf122('0xd')],{'host':_0xf122('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf122('0xd')]));require(_0xf122('0xf'))[_0xf122('0x10')](socket);function respondWithRpcPromise(_0x477a78,_0x2e5041,_0x187b3c){return new BPromise(function(_0x43cd3f,_0x426cb2){return client['request'](_0x477a78,_0x187b3c)['then'](function(_0x3251fa){logger[_0xf122('0x11')](_0xf122('0x12'),_0x2e5041,'request\x20sent');logger['debug'](_0xf122('0x13'),_0x2e5041,_0xf122('0x14'),JSON['stringify'](_0x3251fa));if(_0x3251fa[_0xf122('0x15')]){if(_0x3251fa[_0xf122('0x15')][_0xf122('0x16')]===0x1f4){logger[_0xf122('0x15')](_0xf122('0x12'),_0x2e5041,_0x3251fa[_0xf122('0x15')][_0xf122('0x17')]);return _0x426cb2(_0x3251fa['error'][_0xf122('0x17')]);}logger[_0xf122('0x15')](_0xf122('0x12'),_0x2e5041,_0x3251fa[_0xf122('0x15')]['message']);return _0x43cd3f(_0x3251fa['error'][_0xf122('0x17')]);}else{logger[_0xf122('0x11')](_0xf122('0x12'),_0x2e5041,_0xf122('0x14'));_0x43cd3f(_0x3251fa['result'][_0xf122('0x17')]);}})['catch'](function(_0x3be0ea){logger[_0xf122('0x15')](_0xf122('0x12'),_0x2e5041,_0x3be0ea);_0x426cb2(_0x3be0ea);});});}exports[_0xf122('0x18')]=function(_0x199b39){var _0xeecd54=this;return new Promise(function(_0x45a675,_0x5190d8){return db['SmsQueue']['findAll']({'raw':_0x199b39['options']?_0x199b39[_0xf122('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x199b39[_0xf122('0x19')]?_0x199b39['options'][_0xf122('0x1a')]||null:null,'attributes':_0x199b39[_0xf122('0x19')]?_0x199b39['options'][_0xf122('0x1b')]||null:null,'limit':_0x199b39[_0xf122('0x19')]?_0x199b39[_0xf122('0x19')]['limit']||null:null,'include':_0x199b39['options']?_0x199b39[_0xf122('0x19')]['include']?_[_0xf122('0x1c')](_0x199b39[_0xf122('0x19')][_0xf122('0x1d')],function(_0x2953de){return{'model':db[_0x2953de['model']],'as':_0x2953de['as'],'attributes':_0x2953de[_0xf122('0x1b')],'include':_0x2953de[_0xf122('0x1d')]?_[_0xf122('0x1c')](_0x2953de['include'],function(_0x11dcdd){return{'model':db[_0x11dcdd[_0xf122('0x1e')]],'as':_0x11dcdd['as'],'attributes':_0x11dcdd[_0xf122('0x1b')],'include':_0x11dcdd['include']?_[_0xf122('0x1c')](_0x11dcdd['include'],function(_0x229040){return{'model':db[_0x229040[_0xf122('0x1e')]],'as':_0x229040['as'],'attributes':_0x229040[_0xf122('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x588ad8){logger['info'](_0xf122('0x18'),_0x199b39);logger[_0xf122('0x1f')]('GetSmsQueue',_0x199b39,JSON['stringify'](_0x588ad8));_0x45a675(_0x588ad8);})[_0xf122('0x20')](function(_0x5a7525){logger['error']('GetSmsQueue',_0x5a7525['message'],_0x199b39);_0x5190d8(_0xeecd54['error'](0x1f4,_0x5a7525['message']));});});};exports['ShowSmsQueue']=function(_0x230fd2){var _0x346878=this;return new Promise(function(_0x4cf4be,_0x48bcde){return db[_0xf122('0x21')][_0xf122('0x22')]({'raw':_0x230fd2[_0xf122('0x19')]?_0x230fd2[_0xf122('0x19')][_0xf122('0x23')]===undefined?!![]:![]:!![],'where':_0x230fd2[_0xf122('0x19')]?_0x230fd2['options']['where']||null:null,'attributes':_0x230fd2['options']?_0x230fd2['options'][_0xf122('0x1b')]||null:null,'include':_0x230fd2[_0xf122('0x19')]?_0x230fd2[_0xf122('0x19')][_0xf122('0x1d')]?_[_0xf122('0x1c')](_0x230fd2[_0xf122('0x19')][_0xf122('0x1d')],function(_0x33c859){return{'model':db[_0x33c859[_0xf122('0x1e')]],'as':_0x33c859['as'],'attributes':_0x33c859['attributes'],'include':_0x33c859[_0xf122('0x1d')]?_[_0xf122('0x1c')](_0x33c859[_0xf122('0x1d')],function(_0x439404){return{'model':db[_0x439404['model']],'as':_0x439404['as'],'attributes':_0x439404['attributes'],'include':_0x439404['include']?_['map'](_0x439404[_0xf122('0x1d')],function(_0x409c32){return{'model':db[_0x409c32['model']],'as':_0x409c32['as'],'attributes':_0x409c32[_0xf122('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xf122('0x24')](function(_0x1ae62f){logger[_0xf122('0x11')](_0xf122('0x25'),_0x230fd2);logger[_0xf122('0x1f')]('ShowSmsQueue',_0x230fd2,JSON['stringify'](_0x1ae62f));_0x4cf4be(_0x1ae62f);})[_0xf122('0x20')](function(_0x255041){logger['error']('ShowSmsQueue',_0x255041[_0xf122('0x17')],_0x230fd2);_0x48bcde(_0x346878[_0xf122('0x15')](0x1f4,_0x255041[_0xf122('0x17')]));});});};
\ No newline at end of file
index f0ce300..7b304b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ca1=['save','remove','update','emit','removeListener','register','length','smsQueue:','./smsQueue.events'];(function(_0x5b740b,_0x381833){var _0x6f8f4e=function(_0x86d068){while(--_0x86d068){_0x5b740b['push'](_0x5b740b['shift']());}};_0x6f8f4e(++_0x381833);}(_0x8ca1,0x170));var _0x18ca=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8ca1[_0x20a584];return _0x4b41a8;};'use strict';var SmsQueueEvents=require(_0x18ca('0x0'));var events=[_0x18ca('0x1'),_0x18ca('0x2'),_0x18ca('0x3')];function createListener(_0x444db6,_0x46224c){return function(_0x5376b7){_0x46224c[_0x18ca('0x4')](_0x444db6,_0x5376b7);};}function removeListener(_0x30e69d,_0x191999){return function(){SmsQueueEvents[_0x18ca('0x5')](_0x30e69d,_0x191999);};}exports[_0x18ca('0x6')]=function(_0x1c539d){for(var _0x4c5d68=0x0,_0x55187b=events[_0x18ca('0x7')];_0x4c5d68<_0x55187b;_0x4c5d68++){var _0x390220=events[_0x4c5d68];var _0x32a44c=createListener(_0x18ca('0x8')+_0x390220,_0x1c539d);SmsQueueEvents['on'](_0x390220,_0x32a44c);}};
\ No newline at end of file
+var _0x6216=['smsQueue:','./smsQueue.events','save','remove','update','length'];(function(_0x3fde62,_0x1ae4a8){var _0x160618=function(_0x203200){while(--_0x203200){_0x3fde62['push'](_0x3fde62['shift']());}};_0x160618(++_0x1ae4a8);}(_0x6216,0x1db));var _0x6621=function(_0x3b2397,_0x4d52e8){_0x3b2397=_0x3b2397-0x0;var _0x4a81ea=_0x6216[_0x3b2397];return _0x4a81ea;};'use strict';var SmsQueueEvents=require(_0x6621('0x0'));var events=[_0x6621('0x1'),_0x6621('0x2'),_0x6621('0x3')];function createListener(_0x7ce2d8,_0x1723a5){return function(_0x1a6b66){_0x1723a5['emit'](_0x7ce2d8,_0x1a6b66);};}function removeListener(_0x37abd7,_0x35a5a8){return function(){SmsQueueEvents['removeListener'](_0x37abd7,_0x35a5a8);};}exports['register']=function(_0x5effa8){for(var _0x50a842=0x0,_0x29b1fe=events[_0x6621('0x4')];_0x50a842<_0x29b1fe;_0x50a842++){var _0x463212=events[_0x50a842];var _0x96ee80=createListener(_0x6621('0x5')+_0x463212,_0x5effa8);SmsQueueEvents['on'](_0x463212,_0x96ee80);}};
\ No newline at end of file
index 68b664b..81a2067 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f27=['/describe','/:id','show','post','put','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','get','isAuthenticated','index'];(function(_0x381098,_0x11cc33){var _0x4481a2=function(_0x3e00e6){while(--_0x3e00e6){_0x381098['push'](_0x381098['shift']());}};_0x4481a2(++_0x11cc33);}(_0x3f27,0x1f4));var _0x73f2=function(_0x3737d9,_0x15b5b6){_0x3737d9=_0x3737d9-0x0;var _0x3e6da3=_0x3f27[_0x3737d9];return _0x3e6da3;};'use strict';var multer=require(_0x73f2('0x0'));var util=require(_0x73f2('0x1'));var path=require(_0x73f2('0x2'));var timeout=require(_0x73f2('0x3'));var express=require(_0x73f2('0x4'));var router=express['Router']();var fs_extra=require(_0x73f2('0x5'));var auth=require(_0x73f2('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./smsQueueReport.controller');router[_0x73f2('0x7')]('/',auth[_0x73f2('0x8')](),controller[_0x73f2('0x9')]);router[_0x73f2('0x7')](_0x73f2('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x73f2('0x7')](_0x73f2('0xb'),auth[_0x73f2('0x8')](),controller[_0x73f2('0xc')]);router[_0x73f2('0xd')]('/',auth[_0x73f2('0x8')](),controller['create']);router[_0x73f2('0xe')](_0x73f2('0xb'),auth[_0x73f2('0x8')](),controller['update']);router['delete']('/:id',auth[_0x73f2('0x8')](),controller[_0x73f2('0xf')]);module[_0x73f2('0x10')]=router;
\ No newline at end of file
+var _0xb695=['/:id','show','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','/describe'];(function(_0x33bb07,_0x5b1849){var _0x481c81=function(_0x1709f0){while(--_0x1709f0){_0x33bb07['push'](_0x33bb07['shift']());}};_0x481c81(++_0x5b1849);}(_0xb695,0x1d6));var _0x5b69=function(_0x537794,_0x5c61f3){_0x537794=_0x537794-0x0;var _0xbfe28=_0xb695[_0x537794];return _0xbfe28;};'use strict';var multer=require(_0x5b69('0x0'));var util=require(_0x5b69('0x1'));var path=require(_0x5b69('0x2'));var timeout=require(_0x5b69('0x3'));var express=require(_0x5b69('0x4'));var router=express[_0x5b69('0x5')]();var fs_extra=require(_0x5b69('0x6'));var auth=require(_0x5b69('0x7'));var interaction=require(_0x5b69('0x8'));var config=require(_0x5b69('0x9'));var controller=require(_0x5b69('0xa'));router[_0x5b69('0xb')]('/',auth[_0x5b69('0xc')](),controller['index']);router['get'](_0x5b69('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x5b69('0xb')](_0x5b69('0xe'),auth[_0x5b69('0xc')](),controller[_0x5b69('0xf')]);router[_0x5b69('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x5b69('0x11')](_0x5b69('0xe'),auth['isAuthenticated'](),controller[_0x5b69('0x12')]);router[_0x5b69('0x13')](_0x5b69('0xe'),auth['isAuthenticated'](),controller[_0x5b69('0x14')]);module[_0x5b69('0x15')]=router;
\ No newline at end of file
index 9f72944..ff45d11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6439=['DATE','sequelize','exports','STRING'];(function(_0x30d7ad,_0x13c394){var _0x34369f=function(_0x39be46){while(--_0x39be46){_0x30d7ad['push'](_0x30d7ad['shift']());}};_0x34369f(++_0x13c394);}(_0x6439,0xc9));var _0x9643=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x6439[_0xfae23b];return _0x200640;};'use strict';var moment=require('moment');var Sequelize=require(_0x9643('0x0'));module[_0x9643('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x9643('0x2')]},'joinAt':{'type':Sequelize[_0x9643('0x3')]},'leaveAt':{'type':Sequelize[_0x9643('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1851=['moment','sequelize','STRING','DATE'];(function(_0x350ed4,_0x4eeaa0){var _0x11c939=function(_0xc7e009){while(--_0xc7e009){_0x350ed4['push'](_0x350ed4['shift']());}};_0x11c939(++_0x4eeaa0);}(_0x1851,0x16c));var _0x1185=function(_0x1ca0aa,_0x42080f){_0x1ca0aa=_0x1ca0aa-0x0;var _0x58ec24=_0x1851[_0x1ca0aa];return _0x58ec24;};'use strict';var moment=require(_0x1185('0x0'));var Sequelize=require(_0x1185('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x1185('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x1185('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x1185('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x1185('0x2')]}};
\ No newline at end of file
index 8e282d6..50bd1a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9703=['key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','SmsQueueReport','then','includeAll','include','findAll','rows','catch','params','find','create','update','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','count','set','apply','save','stack','name','index','map','rawAttributes','type'];(function(_0x17813e,_0x5a5da9){var _0x50ad2b=function(_0x4af077){while(--_0x4af077){_0x17813e['push'](_0x17813e['shift']());}};_0x50ad2b(++_0x5a5da9);}(_0x9703,0x138));var _0x3970=function(_0x3a2a74,_0x3b4775){_0x3a2a74=_0x3a2a74-0x0;var _0x5a2c55=_0x9703[_0x3a2a74];return _0x5a2c55;};'use strict';var emlformat=require(_0x3970('0x0'));var rimraf=require(_0x3970('0x1'));var zipdir=require(_0x3970('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3970('0x3'));var moment=require(_0x3970('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3970('0x5'));var util=require(_0x3970('0x6'));var path=require(_0x3970('0x7'));var sox=require(_0x3970('0x8'));var csv=require('to-csv');var ejs=require(_0x3970('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3970('0xa'));var deskjs=require(_0x3970('0xb'));var toCsv=require('to-csv');var querystring=require(_0x3970('0xc'));var Papa=require(_0x3970('0xd'));var Redis=require(_0x3970('0xe'));var authService=require(_0x3970('0xf'));var qs=require(_0x3970('0x10'));var as=require(_0x3970('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3970('0x12'))(_0x3970('0x13'));var utils=require(_0x3970('0x14'));var config=require(_0x3970('0x15'));var licenseUtil=require(_0x3970('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1be54b,_0x11b17a){_0x11b17a=_0x11b17a||0xcc;return function(_0x158a52){if(_0x158a52){return _0x1be54b[_0x3970('0x17')](_0x11b17a);}return _0x1be54b[_0x3970('0x18')](_0x11b17a)[_0x3970('0x19')]();};}function respondWithResult(_0x46fcc5,_0x172cdb){_0x172cdb=_0x172cdb||0xc8;return function(_0x133880){if(_0x133880){return _0x46fcc5[_0x3970('0x18')](_0x172cdb)[_0x3970('0x1a')](_0x133880);}};}function respondWithFilteredResult(_0x472165,_0x4c6490){return function(_0x27f3f6){if(_0x27f3f6){var _0x100c14=typeof _0x4c6490[_0x3970('0x1b')]==='undefined'&&typeof _0x4c6490['limit']==='undefined';var _0x221638=_0x27f3f6[_0x3970('0x1c')];var _0x1c5b1=_0x100c14?0x0:_0x4c6490['offset'];var _0x2df97d=_0x100c14?_0x27f3f6['count']:_0x4c6490[_0x3970('0x1b')]+_0x4c6490['limit'];var _0x5638d3;if(_0x2df97d>=_0x221638){_0x2df97d=_0x221638;_0x5638d3=0xc8;}else{_0x5638d3=0xce;}_0x472165[_0x3970('0x18')](_0x5638d3);return _0x472165[_0x3970('0x1d')]('Content-Range',_0x1c5b1+'-'+_0x2df97d+'/'+_0x221638)[_0x3970('0x1a')](_0x27f3f6);}return null;};}function patchUpdates(_0x3db17b){return function(_0x2bad83){try{jsonpatch[_0x3970('0x1e')](_0x2bad83,_0x3db17b,!![]);}catch(_0x1b72fe){return BPromise['reject'](_0x1b72fe);}return _0x2bad83[_0x3970('0x1f')]();};}function saveUpdates(_0x2de7a2,_0x32f5be){return function(_0x4ed514){if(_0x4ed514){return _0x4ed514['update'](_0x2de7a2)['then'](function(_0x12f97a){return _0x12f97a;});}return null;};}function removeEntity(_0x14c295,_0x10dd36){return function(_0x110b02){if(_0x110b02){return _0x110b02['destroy']()['then'](function(){_0x14c295[_0x3970('0x18')](0xcc)[_0x3970('0x19')]();});}};}function handleEntityNotFound(_0x52cf91,_0x27e250){return function(_0x22ed28){if(!_0x22ed28){_0x52cf91[_0x3970('0x17')](0x194);}return _0x22ed28;};}function handleError(_0xc5e426,_0x328de0){_0x328de0=_0x328de0||0x1f4;return function(_0xc1626e){logger['error'](_0xc1626e[_0x3970('0x20')]);if(_0xc1626e[_0x3970('0x21')]){delete _0xc1626e[_0x3970('0x21')];}_0xc5e426[_0x3970('0x18')](_0x328de0)['send'](_0xc1626e);};}exports[_0x3970('0x22')]=function(_0x6f57a5,_0x2202ac){var _0x5a2e43={},_0x52de1c={},_0xb3db05={'count':0x0,'rows':[]};var _0x4f5c1e=_[_0x3970('0x23')](db['SmsQueueReport'][_0x3970('0x24')],function(_0x55be3a){return{'name':_0x55be3a['fieldName'],'type':_0x55be3a[_0x3970('0x25')][_0x3970('0x26')]};});_0x52de1c[_0x3970('0x27')]=_[_0x3970('0x23')](_0x4f5c1e,_0x3970('0x21'));_0x52de1c['query']=_[_0x3970('0x28')](_0x6f57a5[_0x3970('0x29')]);_0x52de1c[_0x3970('0x2a')]=_[_0x3970('0x2b')](_0x52de1c['model'],_0x52de1c['query']);_0x5a2e43[_0x3970('0x2c')]=_[_0x3970('0x2b')](_0x52de1c['model'],qs[_0x3970('0x2d')](_0x6f57a5[_0x3970('0x29')]['fields']));_0x5a2e43['attributes']=_0x5a2e43['attributes'][_0x3970('0x2e')]?_0x5a2e43[_0x3970('0x2c')]:_0x52de1c[_0x3970('0x27')];if(!_0x6f57a5[_0x3970('0x29')][_0x3970('0x2f')](_0x3970('0x30'))){_0x5a2e43[_0x3970('0x31')]=qs['limit'](_0x6f57a5[_0x3970('0x29')][_0x3970('0x31')]);_0x5a2e43['offset']=qs[_0x3970('0x1b')](_0x6f57a5[_0x3970('0x29')][_0x3970('0x1b')]);}_0x5a2e43[_0x3970('0x32')]=qs[_0x3970('0x33')](_0x6f57a5['query'][_0x3970('0x33')]);_0x5a2e43[_0x3970('0x34')]=qs[_0x3970('0x2a')](_['pick'](_0x6f57a5[_0x3970('0x29')],_0x52de1c[_0x3970('0x2a')]),_0x4f5c1e);if(_0x6f57a5[_0x3970('0x29')][_0x3970('0x35')]){_0x5a2e43[_0x3970('0x34')]=_[_0x3970('0x36')](_0x5a2e43[_0x3970('0x34')],{'$or':_[_0x3970('0x23')](_0x4f5c1e,function(_0x23b7d6){if(_0x23b7d6['type']!==_0x3970('0x37')){var _0x74a75={};_0x74a75[_0x23b7d6[_0x3970('0x21')]]={'$like':'%'+_0x6f57a5[_0x3970('0x29')][_0x3970('0x35')]+'%'};return _0x74a75;}})});}_0x5a2e43=_[_0x3970('0x36')]({},_0x5a2e43,_0x6f57a5[_0x3970('0x38')]);var _0xcd0fa={'where':_0x5a2e43['where']};return db[_0x3970('0x39')][_0x3970('0x1c')](_0xcd0fa)[_0x3970('0x3a')](function(_0x14aa5b){_0xb3db05['count']=_0x14aa5b;if(_0x6f57a5[_0x3970('0x29')][_0x3970('0x3b')]){_0x5a2e43[_0x3970('0x3c')]=[{'all':!![]}];}return db['SmsQueueReport'][_0x3970('0x3d')](_0x5a2e43);})[_0x3970('0x3a')](function(_0xbbdfa6){_0xb3db05[_0x3970('0x3e')]=_0xbbdfa6;return _0xb3db05;})[_0x3970('0x3a')](respondWithFilteredResult(_0x2202ac,_0x5a2e43))[_0x3970('0x3f')](handleError(_0x2202ac,null));};exports['show']=function(_0x384fb4,_0x5dca69){var _0x23132d={'raw':!![],'where':{'id':_0x384fb4[_0x3970('0x40')]['id']}},_0x341450={};_0x341450[_0x3970('0x27')]=_['keys'](db[_0x3970('0x39')][_0x3970('0x24')]);_0x341450['query']=_[_0x3970('0x28')](_0x384fb4[_0x3970('0x29')]);_0x341450['filters']=_[_0x3970('0x2b')](_0x341450[_0x3970('0x27')],_0x341450[_0x3970('0x29')]);_0x23132d[_0x3970('0x2c')]=_[_0x3970('0x2b')](_0x341450[_0x3970('0x27')],qs[_0x3970('0x2d')](_0x384fb4['query'][_0x3970('0x2d')]));_0x23132d[_0x3970('0x2c')]=_0x23132d['attributes']['length']?_0x23132d[_0x3970('0x2c')]:_0x341450[_0x3970('0x27')];if(_0x384fb4[_0x3970('0x29')]['includeAll']){_0x23132d[_0x3970('0x3c')]=[{'all':!![]}];}_0x23132d=_[_0x3970('0x36')]({},_0x23132d,_0x384fb4[_0x3970('0x38')]);return db[_0x3970('0x39')][_0x3970('0x41')](_0x23132d)[_0x3970('0x3a')](handleEntityNotFound(_0x5dca69,null))[_0x3970('0x3a')](respondWithResult(_0x5dca69,null))[_0x3970('0x3f')](handleError(_0x5dca69,null));};exports[_0x3970('0x42')]=function(_0xebd863,_0x248018){return db[_0x3970('0x39')][_0x3970('0x42')](_0xebd863['body'],{})[_0x3970('0x3a')](respondWithResult(_0x248018,0xc9))[_0x3970('0x3f')](handleError(_0x248018,null));};exports[_0x3970('0x43')]=function(_0x3bf5ba,_0x399bed){if(_0x3bf5ba[_0x3970('0x44')]['id']){delete _0x3bf5ba[_0x3970('0x44')]['id'];}return db[_0x3970('0x39')][_0x3970('0x41')]({'where':{'id':_0x3bf5ba[_0x3970('0x40')]['id']}})[_0x3970('0x3a')](handleEntityNotFound(_0x399bed,null))['then'](saveUpdates(_0x3bf5ba[_0x3970('0x44')],null))[_0x3970('0x3a')](respondWithResult(_0x399bed,null))['catch'](handleError(_0x399bed,null));};exports['destroy']=function(_0x588094,_0xa55897){return db[_0x3970('0x39')]['find']({'where':{'id':_0x588094[_0x3970('0x40')]['id']}})['then'](handleEntityNotFound(_0xa55897,null))[_0x3970('0x3a')](removeEntity(_0xa55897,null))[_0x3970('0x3f')](handleError(_0xa55897,null));};exports[_0x3970('0x45')]=function(_0x50f5a5,_0x271c34){return db[_0x3970('0x39')][_0x3970('0x45')]()[_0x3970('0x3a')](respondWithResult(_0x271c34,null))[_0x3970('0x3f')](handleError(_0x271c34,null));};
\ No newline at end of file
+var _0x971d=['sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','reject','update','then','destroy','error','stack','send','index','map','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','SmsQueueReport','findAll','catch','show','params','keys','includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x42afde,_0x377195){var _0x5e9990=function(_0x157ea9){while(--_0x157ea9){_0x42afde['push'](_0x42afde['shift']());}};_0x5e9990(++_0x377195);}(_0x971d,0xb6));var _0xd971=function(_0x2bc31d,_0x41e1e9){_0x2bc31d=_0x2bc31d-0x0;var _0x2a4cbc=_0x971d[_0x2bc31d];return _0x2a4cbc;};'use strict';var emlformat=require(_0xd971('0x0'));var rimraf=require(_0xd971('0x1'));var zipdir=require(_0xd971('0x2'));var jsonpatch=require(_0xd971('0x3'));var rp=require(_0xd971('0x4'));var moment=require(_0xd971('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd971('0x6'));var path=require(_0xd971('0x7'));var sox=require('sox');var csv=require(_0xd971('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xd971('0x9'));var crypto=require(_0xd971('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xd971('0x8'));var querystring=require('querystring');var Papa=require(_0xd971('0xb'));var Redis=require(_0xd971('0xc'));var authService=require(_0xd971('0xd'));var qs=require(_0xd971('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd971('0xf'));var utils=require('../../config/utils');var config=require(_0xd971('0x10'));var licenseUtil=require(_0xd971('0x11'));var db=require(_0xd971('0x12'))['db'];function respondWithStatusCode(_0x3c796b,_0x5917b0){_0x5917b0=_0x5917b0||0xcc;return function(_0x54fc22){if(_0x54fc22){return _0x3c796b[_0xd971('0x13')](_0x5917b0);}return _0x3c796b['status'](_0x5917b0)[_0xd971('0x14')]();};}function respondWithResult(_0x45f1a1,_0x13d351){_0x13d351=_0x13d351||0xc8;return function(_0x41165f){if(_0x41165f){return _0x45f1a1[_0xd971('0x15')](_0x13d351)[_0xd971('0x16')](_0x41165f);}};}function respondWithFilteredResult(_0x5d15bd,_0x83cce2){return function(_0x6108dd){if(_0x6108dd){var _0x11cced=typeof _0x83cce2[_0xd971('0x17')]===_0xd971('0x18')&&typeof _0x83cce2[_0xd971('0x19')]===_0xd971('0x18');var _0x5a0306=_0x6108dd['count'];var _0x4cd988=_0x11cced?0x0:_0x83cce2[_0xd971('0x17')];var _0x1b0ff4=_0x11cced?_0x6108dd[_0xd971('0x1a')]:_0x83cce2[_0xd971('0x17')]+_0x83cce2[_0xd971('0x19')];var _0x29effb;if(_0x1b0ff4>=_0x5a0306){_0x1b0ff4=_0x5a0306;_0x29effb=0xc8;}else{_0x29effb=0xce;}_0x5d15bd[_0xd971('0x15')](_0x29effb);return _0x5d15bd['set'](_0xd971('0x1b'),_0x4cd988+'-'+_0x1b0ff4+'/'+_0x5a0306)[_0xd971('0x16')](_0x6108dd);}return null;};}function patchUpdates(_0x12fc4b){return function(_0x554a20){try{jsonpatch['apply'](_0x554a20,_0x12fc4b,!![]);}catch(_0x1be7e6){return BPromise[_0xd971('0x1c')](_0x1be7e6);}return _0x554a20['save']();};}function saveUpdates(_0x59cdd4,_0x5003e4){return function(_0x3da553){if(_0x3da553){return _0x3da553[_0xd971('0x1d')](_0x59cdd4)[_0xd971('0x1e')](function(_0x218e52){return _0x218e52;});}return null;};}function removeEntity(_0x5a05e8,_0x2a1533){return function(_0x39d22d){if(_0x39d22d){return _0x39d22d[_0xd971('0x1f')]()[_0xd971('0x1e')](function(){_0x5a05e8[_0xd971('0x15')](0xcc)[_0xd971('0x14')]();});}};}function handleEntityNotFound(_0x17d8f9,_0x447ba9){return function(_0x4a7115){if(!_0x4a7115){_0x17d8f9[_0xd971('0x13')](0x194);}return _0x4a7115;};}function handleError(_0x5661a2,_0x12cf74){_0x12cf74=_0x12cf74||0x1f4;return function(_0x477c5e){logger[_0xd971('0x20')](_0x477c5e[_0xd971('0x21')]);if(_0x477c5e['name']){delete _0x477c5e['name'];}_0x5661a2[_0xd971('0x15')](_0x12cf74)[_0xd971('0x22')](_0x477c5e);};}exports[_0xd971('0x23')]=function(_0x226110,_0x2fe8c0){var _0x5192b3={},_0x46a8c7={},_0x3f4d8c={'count':0x0,'rows':[]};var _0x35c689=_[_0xd971('0x24')](db['SmsQueueReport'][_0xd971('0x25')],function(_0x90433d){return{'name':_0x90433d[_0xd971('0x26')],'type':_0x90433d[_0xd971('0x27')]['key']};});_0x46a8c7[_0xd971('0x28')]=_[_0xd971('0x24')](_0x35c689,'name');_0x46a8c7['query']=_['keys'](_0x226110[_0xd971('0x29')]);_0x46a8c7[_0xd971('0x2a')]=_[_0xd971('0x2b')](_0x46a8c7['model'],_0x46a8c7[_0xd971('0x29')]);_0x5192b3[_0xd971('0x2c')]=_[_0xd971('0x2b')](_0x46a8c7[_0xd971('0x28')],qs[_0xd971('0x2d')](_0x226110[_0xd971('0x29')]['fields']));_0x5192b3['attributes']=_0x5192b3['attributes'][_0xd971('0x2e')]?_0x5192b3['attributes']:_0x46a8c7[_0xd971('0x28')];if(!_0x226110[_0xd971('0x29')][_0xd971('0x2f')](_0xd971('0x30'))){_0x5192b3['limit']=qs[_0xd971('0x19')](_0x226110[_0xd971('0x29')][_0xd971('0x19')]);_0x5192b3['offset']=qs[_0xd971('0x17')](_0x226110[_0xd971('0x29')][_0xd971('0x17')]);}_0x5192b3[_0xd971('0x31')]=qs[_0xd971('0x32')](_0x226110[_0xd971('0x29')]['sort']);_0x5192b3[_0xd971('0x33')]=qs[_0xd971('0x2a')](_[_0xd971('0x34')](_0x226110['query'],_0x46a8c7['filters']),_0x35c689);if(_0x226110['query'][_0xd971('0x35')]){_0x5192b3[_0xd971('0x33')]=_[_0xd971('0x36')](_0x5192b3[_0xd971('0x33')],{'$or':_[_0xd971('0x24')](_0x35c689,function(_0x157f4d){if(_0x157f4d['type']!==_0xd971('0x37')){var _0x3bb1e0={};_0x3bb1e0[_0x157f4d['name']]={'$like':'%'+_0x226110['query']['filter']+'%'};return _0x3bb1e0;}})});}_0x5192b3=_[_0xd971('0x36')]({},_0x5192b3,_0x226110['options']);var _0x1e7e3c={'where':_0x5192b3[_0xd971('0x33')]};return db[_0xd971('0x38')]['count'](_0x1e7e3c)[_0xd971('0x1e')](function(_0x56595f){_0x3f4d8c[_0xd971('0x1a')]=_0x56595f;if(_0x226110[_0xd971('0x29')]['includeAll']){_0x5192b3['include']=[{'all':!![]}];}return db['SmsQueueReport'][_0xd971('0x39')](_0x5192b3);})[_0xd971('0x1e')](function(_0x4ebd11){_0x3f4d8c['rows']=_0x4ebd11;return _0x3f4d8c;})[_0xd971('0x1e')](respondWithFilteredResult(_0x2fe8c0,_0x5192b3))[_0xd971('0x3a')](handleError(_0x2fe8c0,null));};exports[_0xd971('0x3b')]=function(_0x563bc3,_0x2421ab){var _0x336dd2={'raw':!![],'where':{'id':_0x563bc3[_0xd971('0x3c')]['id']}},_0x30590c={};_0x30590c[_0xd971('0x28')]=_['keys'](db[_0xd971('0x38')][_0xd971('0x25')]);_0x30590c[_0xd971('0x29')]=_[_0xd971('0x3d')](_0x563bc3['query']);_0x30590c[_0xd971('0x2a')]=_[_0xd971('0x2b')](_0x30590c['model'],_0x30590c[_0xd971('0x29')]);_0x336dd2[_0xd971('0x2c')]=_[_0xd971('0x2b')](_0x30590c[_0xd971('0x28')],qs[_0xd971('0x2d')](_0x563bc3[_0xd971('0x29')][_0xd971('0x2d')]));_0x336dd2[_0xd971('0x2c')]=_0x336dd2[_0xd971('0x2c')][_0xd971('0x2e')]?_0x336dd2[_0xd971('0x2c')]:_0x30590c[_0xd971('0x28')];if(_0x563bc3[_0xd971('0x29')][_0xd971('0x3e')]){_0x336dd2['include']=[{'all':!![]}];}_0x336dd2=_[_0xd971('0x36')]({},_0x336dd2,_0x563bc3['options']);return db[_0xd971('0x38')][_0xd971('0x3f')](_0x336dd2)[_0xd971('0x1e')](handleEntityNotFound(_0x2421ab,null))[_0xd971('0x1e')](respondWithResult(_0x2421ab,null))[_0xd971('0x3a')](handleError(_0x2421ab,null));};exports[_0xd971('0x40')]=function(_0xae7d3a,_0x4d98aa){return db['SmsQueueReport'][_0xd971('0x40')](_0xae7d3a['body'],{})[_0xd971('0x1e')](respondWithResult(_0x4d98aa,0xc9))['catch'](handleError(_0x4d98aa,null));};exports[_0xd971('0x1d')]=function(_0x2f23c4,_0x36d544){if(_0x2f23c4[_0xd971('0x41')]['id']){delete _0x2f23c4[_0xd971('0x41')]['id'];}return db['SmsQueueReport'][_0xd971('0x3f')]({'where':{'id':_0x2f23c4[_0xd971('0x3c')]['id']}})[_0xd971('0x1e')](handleEntityNotFound(_0x36d544,null))['then'](saveUpdates(_0x2f23c4[_0xd971('0x41')],null))['then'](respondWithResult(_0x36d544,null))[_0xd971('0x3a')](handleError(_0x36d544,null));};exports[_0xd971('0x1f')]=function(_0x34034e,_0x1e0ade){return db['SmsQueueReport'][_0xd971('0x3f')]({'where':{'id':_0x34034e[_0xd971('0x3c')]['id']}})[_0xd971('0x1e')](handleEntityNotFound(_0x1e0ade,null))[_0xd971('0x1e')](removeEntity(_0x1e0ade,null))['catch'](handleError(_0x1e0ade,null));};exports[_0xd971('0x42')]=function(_0x4b7bc3,_0x1cab2a){return db[_0xd971('0x38')][_0xd971('0x42')]()[_0xd971('0x1e')](respondWithResult(_0x1cab2a,null))[_0xd971('0x3a')](handleError(_0x1cab2a,null));};
\ No newline at end of file
index 18f0ac8..0107979 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','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid','lodash','util'];(function(_0x275a90,_0xa0f3cc){var _0x17b092=function(_0x45ec5a){while(--_0x45ec5a){_0x275a90['push'](_0x275a90['shift']());}};_0x17b092(++_0xa0f3cc);}(_0xe706,0xa3));var _0x6e70=function(_0x3eee56,_0x176daf){_0x3eee56=_0x3eee56-0x0;var _0x506bcd=_0xe706[_0x3eee56];return _0x506bcd;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));module[_0x6e70('0xa')]=function(_0x1b0389,_0x4381d1){return _0x1b0389[_0x6e70('0xb')](_0x6e70('0xc'),attributes,{'tableName':_0x6e70('0xd'),'paranoid':![],'indexes':[{'name':_0x6e70('0xe'),'fields':[_0x6e70('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid','lodash','util'];(function(_0x46b1c9,_0x169f87){var _0x17569c=function(_0x4b7c45){while(--_0x4b7c45){_0x46b1c9['push'](_0x46b1c9['shift']());}};_0x17569c(++_0x169f87);}(_0xe706,0xa3));var _0x6e70=function(_0x44b362,_0x1b5fd9){_0x44b362=_0x44b362-0x0;var _0x38b45c=_0xe706[_0x44b362];return _0x38b45c;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));module[_0x6e70('0xa')]=function(_0x1b0389,_0x4381d1){return _0x1b0389[_0x6e70('0xb')](_0x6e70('0xc'),attributes,{'tableName':_0x6e70('0xd'),'paranoid':![],'indexes':[{'name':_0x6e70('0xe'),'fields':[_0x6e70('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 017a61a..245de7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0012=['where','attributes','limit','UpdateSmsQueueReport','lodash','moment','randomstring','ioredis','../../config/logger','jayson/promise','client','http','request','then','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','CreateSmsQueueReport','create','body','options','raw','update'];(function(_0x4cec6c,_0x98a94e){var _0x105876=function(_0x465baa){while(--_0x465baa){_0x4cec6c['push'](_0x4cec6c['shift']());}};_0x105876(++_0x98a94e);}(_0x0012,0xd6));var _0x2001=function(_0x3acd5d,_0x4a424a){_0x3acd5d=_0x3acd5d-0x0;var _0x586bed=_0x0012[_0x3acd5d];return _0x586bed;};'use strict';var _=require(_0x2001('0x0'));var util=require('util');var moment=require(_0x2001('0x1'));var BPromise=require('bluebird');var rs=require(_0x2001('0x2'));var fs=require('fs');var Redis=require(_0x2001('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2001('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2001('0x5'));var client=jayson[_0x2001('0x6')][_0x2001('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4ff638,_0x38f048,_0x53715c){return new BPromise(function(_0x5f1ce6,_0x425b87){return client[_0x2001('0x8')](_0x4ff638,_0x53715c)[_0x2001('0x9')](function(_0x29e40a){logger['info'](_0x2001('0xa'),_0x38f048,_0x2001('0xb'));logger[_0x2001('0xc')](_0x2001('0xd'),_0x38f048,_0x2001('0xb'),JSON[_0x2001('0xe')](_0x29e40a));if(_0x29e40a[_0x2001('0xf')]){if(_0x29e40a['error']['code']===0x1f4){logger[_0x2001('0xf')](_0x2001('0xa'),_0x38f048,_0x29e40a['error'][_0x2001('0x10')]);return _0x425b87(_0x29e40a['error'][_0x2001('0x10')]);}logger[_0x2001('0xf')]('SmsQueueReport,\x20%s,\x20%s',_0x38f048,_0x29e40a['error'][_0x2001('0x10')]);return _0x5f1ce6(_0x29e40a[_0x2001('0xf')][_0x2001('0x10')]);}else{logger[_0x2001('0x11')](_0x2001('0xa'),_0x38f048,_0x2001('0xb'));_0x5f1ce6(_0x29e40a[_0x2001('0x12')]['message']);}})[_0x2001('0x13')](function(_0x331a04){logger[_0x2001('0xf')](_0x2001('0xa'),_0x38f048,_0x331a04);_0x425b87(_0x331a04);});});}exports[_0x2001('0x14')]=function(_0x473636){var _0x3e8cec=this;return new Promise(function(_0x52152d,_0xd0ffd1){return db['SmsQueueReport'][_0x2001('0x15')](_0x473636[_0x2001('0x16')],{'raw':_0x473636[_0x2001('0x17')]?_0x473636[_0x2001('0x17')][_0x2001('0x18')]===undefined?!![]:![]:!![]})[_0x2001('0x9')](function(_0x444df9){logger['info'](_0x2001('0x14'),_0x473636);logger[_0x2001('0xc')](_0x2001('0x14'),_0x473636,JSON[_0x2001('0xe')](_0x444df9));_0x52152d(_0x444df9);})[_0x2001('0x13')](function(_0x5d9d8f){logger[_0x2001('0xf')]('CreateSmsQueueReport',_0x5d9d8f['message'],_0x473636);_0xd0ffd1(_0x3e8cec[_0x2001('0xf')](0x1f4,_0x5d9d8f[_0x2001('0x10')]));});});};exports['UpdateSmsQueueReport']=function(_0x559149){var _0x1c70b6=this;return new Promise(function(_0x3ae628,_0x491b67){return db['SmsQueueReport'][_0x2001('0x19')](_0x559149[_0x2001('0x16')],{'raw':_0x559149[_0x2001('0x17')]?_0x559149[_0x2001('0x17')][_0x2001('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x559149[_0x2001('0x17')]?_0x559149[_0x2001('0x17')][_0x2001('0x1a')]||null:null,'attributes':_0x559149[_0x2001('0x17')]?_0x559149['options'][_0x2001('0x1b')]||null:null,'limit':_0x559149[_0x2001('0x17')]?_0x559149[_0x2001('0x17')][_0x2001('0x1c')]||null:null})['then'](function(_0x156354){logger[_0x2001('0x11')](_0x2001('0x1d'),_0x559149);logger[_0x2001('0xc')](_0x2001('0x1d'),_0x559149,JSON[_0x2001('0xe')](_0x156354));_0x3ae628(_0x156354);})['catch'](function(_0x28c7cf){logger['error'](_0x2001('0x1d'),_0x28c7cf['message'],_0x559149);_0x491b67(_0x1c70b6[_0x2001('0xf')](0x1f4,_0x28c7cf[_0x2001('0x10')]));});});};
\ No newline at end of file
+var _0x6cd7=['create','body','options','raw','limit','UpdateSmsQueueReport','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','SmsQueueReport,\x20%s,\x20%s','message','info','request\x20sent','result','catch','CreateSmsQueueReport','SmsQueueReport'];(function(_0x498c3d,_0x3d4977){var _0x241547=function(_0x46510c){while(--_0x46510c){_0x498c3d['push'](_0x498c3d['shift']());}};_0x241547(++_0x3d4977);}(_0x6cd7,0xc6));var _0x76cd=function(_0x536128,_0x205e2b){_0x536128=_0x536128-0x0;var _0x19eb75=_0x6cd7[_0x536128];return _0x19eb75;};'use strict';var _=require(_0x76cd('0x0'));var util=require(_0x76cd('0x1'));var moment=require(_0x76cd('0x2'));var BPromise=require(_0x76cd('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x76cd('0x4'));var db=require(_0x76cd('0x5'))['db'];var utils=require(_0x76cd('0x6'));var logger=require(_0x76cd('0x7'))('rpc');var config=require(_0x76cd('0x8'));var jayson=require(_0x76cd('0x9'));var client=jayson[_0x76cd('0xa')][_0x76cd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4a85b5,_0x35404d,_0x26ef0b){return new BPromise(function(_0x1a7279,_0x1ae3b8){return client[_0x76cd('0xc')](_0x4a85b5,_0x26ef0b)[_0x76cd('0xd')](function(_0x1a7ae1){logger['info']('SmsQueueReport,\x20%s,\x20%s',_0x35404d,'request\x20sent');logger[_0x76cd('0xe')](_0x76cd('0xf'),_0x35404d,'request\x20sent',JSON[_0x76cd('0x10')](_0x1a7ae1));if(_0x1a7ae1[_0x76cd('0x11')]){if(_0x1a7ae1['error']['code']===0x1f4){logger[_0x76cd('0x11')](_0x76cd('0x12'),_0x35404d,_0x1a7ae1[_0x76cd('0x11')][_0x76cd('0x13')]);return _0x1ae3b8(_0x1a7ae1[_0x76cd('0x11')]['message']);}logger[_0x76cd('0x11')](_0x76cd('0x12'),_0x35404d,_0x1a7ae1['error'][_0x76cd('0x13')]);return _0x1a7279(_0x1a7ae1[_0x76cd('0x11')][_0x76cd('0x13')]);}else{logger[_0x76cd('0x14')](_0x76cd('0x12'),_0x35404d,_0x76cd('0x15'));_0x1a7279(_0x1a7ae1[_0x76cd('0x16')][_0x76cd('0x13')]);}})[_0x76cd('0x17')](function(_0x238dbc){logger[_0x76cd('0x11')](_0x76cd('0x12'),_0x35404d,_0x238dbc);_0x1ae3b8(_0x238dbc);});});}exports[_0x76cd('0x18')]=function(_0x178054){var _0x502aed=this;return new Promise(function(_0x33a6c9,_0x1e09a5){return db[_0x76cd('0x19')][_0x76cd('0x1a')](_0x178054[_0x76cd('0x1b')],{'raw':_0x178054[_0x76cd('0x1c')]?_0x178054[_0x76cd('0x1c')][_0x76cd('0x1d')]===undefined?!![]:![]:!![]})[_0x76cd('0xd')](function(_0x69f9c3){logger[_0x76cd('0x14')](_0x76cd('0x18'),_0x178054);logger[_0x76cd('0xe')](_0x76cd('0x18'),_0x178054,JSON[_0x76cd('0x10')](_0x69f9c3));_0x33a6c9(_0x69f9c3);})['catch'](function(_0x2b6668){logger[_0x76cd('0x11')](_0x76cd('0x18'),_0x2b6668['message'],_0x178054);_0x1e09a5(_0x502aed[_0x76cd('0x11')](0x1f4,_0x2b6668[_0x76cd('0x13')]));});});};exports['UpdateSmsQueueReport']=function(_0x419b8b){var _0x3ae256=this;return new Promise(function(_0xb79d00,_0x5e1efc){return db[_0x76cd('0x19')]['update'](_0x419b8b[_0x76cd('0x1b')],{'raw':_0x419b8b[_0x76cd('0x1c')]?_0x419b8b[_0x76cd('0x1c')][_0x76cd('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x419b8b['options']?_0x419b8b[_0x76cd('0x1c')]['where']||null:null,'attributes':_0x419b8b[_0x76cd('0x1c')]?_0x419b8b[_0x76cd('0x1c')]['attributes']||null:null,'limit':_0x419b8b[_0x76cd('0x1c')]?_0x419b8b[_0x76cd('0x1c')][_0x76cd('0x1e')]||null:null})[_0x76cd('0xd')](function(_0x1a3e11){logger['info'](_0x76cd('0x1f'),_0x419b8b);logger['debug']('UpdateSmsQueueReport',_0x419b8b,JSON[_0x76cd('0x10')](_0x1a3e11));_0xb79d00(_0x1a3e11);})['catch'](function(_0x1626f8){logger[_0x76cd('0x11')](_0x76cd('0x1f'),_0x1626f8[_0x76cd('0x13')],_0x419b8b);_0x5e1efc(_0x3ae256[_0x76cd('0x11')](0x1f4,_0x1626f8[_0x76cd('0x13')]));});});};
\ No newline at end of file
index 1bbc1cc..18e4c3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31af=['delete','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','post','create','put','update'];(function(_0x36b909,_0xc33e4b){var _0x598733=function(_0x382fcb){while(--_0x382fcb){_0x36b909['push'](_0x36b909['shift']());}};_0x598733(++_0xc33e4b);}(_0x31af,0xde));var _0xf31a=function(_0x5d8966,_0x83813){_0x5d8966=_0x5d8966-0x0;var _0x2444c4=_0x31af[_0x5d8966];return _0x2444c4;};'use strict';var multer=require(_0xf31a('0x0'));var util=require(_0xf31a('0x1'));var path=require(_0xf31a('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf31a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf31a('0x4'));var interaction=require(_0xf31a('0x5'));var config=require(_0xf31a('0x6'));var controller=require(_0xf31a('0x7'));router['get']('/',auth[_0xf31a('0x8')](),controller[_0xf31a('0x9')]);router[_0xf31a('0xa')](_0xf31a('0xb'),auth['isAuthenticated'](),controller[_0xf31a('0xc')]);router[_0xf31a('0xa')](_0xf31a('0xd'),auth[_0xf31a('0x8')](),controller['show']);router[_0xf31a('0xe')]('/',auth[_0xf31a('0x8')](),controller[_0xf31a('0xf')]);router[_0xf31a('0x10')](_0xf31a('0xd'),auth['isAuthenticated'](),controller[_0xf31a('0x11')]);router[_0xf31a('0x12')](_0xf31a('0xd'),auth[_0xf31a('0x8')](),controller['destroy']);module[_0xf31a('0x13')]=router;
\ No newline at end of file
+var _0x2fed=['path','connect-timeout','express','fs-extra','../../components/auth/service','./smsTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x9e70c1,_0x5ad5a3){var _0xf75c5e=function(_0x24b6ef){while(--_0x24b6ef){_0x9e70c1['push'](_0x9e70c1['shift']());}};_0xf75c5e(++_0x5ad5a3);}(_0x2fed,0x7c));var _0xd2fe=function(_0x29005f,_0x2f735b){_0x29005f=_0x29005f-0x0;var _0x1d5c29=_0x2fed[_0x29005f];return _0x1d5c29;};'use strict';var multer=require(_0xd2fe('0x0'));var util=require(_0xd2fe('0x1'));var path=require(_0xd2fe('0x2'));var timeout=require(_0xd2fe('0x3'));var express=require(_0xd2fe('0x4'));var router=express['Router']();var fs_extra=require(_0xd2fe('0x5'));var auth=require(_0xd2fe('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd2fe('0x7'));router[_0xd2fe('0x8')]('/',auth[_0xd2fe('0x9')](),controller['index']);router[_0xd2fe('0x8')](_0xd2fe('0xa'),auth[_0xd2fe('0x9')](),controller[_0xd2fe('0xb')]);router['get'](_0xd2fe('0xc'),auth[_0xd2fe('0x9')](),controller[_0xd2fe('0xd')]);router[_0xd2fe('0xe')]('/',auth[_0xd2fe('0x9')](),controller[_0xd2fe('0xf')]);router[_0xd2fe('0x10')](_0xd2fe('0xc'),auth[_0xd2fe('0x9')](),controller[_0xd2fe('0x11')]);router[_0xd2fe('0x12')](_0xd2fe('0xc'),auth[_0xd2fe('0x9')](),controller[_0xd2fe('0x13')]);module[_0xd2fe('0x14')]=router;
\ No newline at end of file
index 414232b..0b280bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x2e3b22,_0x1e3c7e){var _0x150e7c=function(_0x395356){while(--_0x395356){_0x2e3b22['push'](_0x2e3b22['shift']());}};_0x150e7c(++_0x1e3c7e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'use strict';var moment=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x0a9e('0x3'),'agent',_0x0a9e('0x4')),'allowNull':![],'defaultValue':_0x0a9e('0x4')},'transferredAt':{'type':Sequelize[_0x0a9e('0x5')],'allowNull':![],'defaultValue':Sequelize[_0x0a9e('0x6')]}};
\ No newline at end of file
+var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x374ada,_0x27b3a5){var _0x449ed8=function(_0x3efc46){while(--_0x3efc46){_0x374ada['push'](_0x374ada['shift']());}};_0x449ed8(++_0x27b3a5);}(_0xb43b,0x1b2));var _0xbb43=function(_0x2f730c,_0x11d773){_0x2f730c=_0x2f730c-0x0;var _0x218986=_0xb43b[_0x2f730c];return _0x218986;};'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 9b2e194..1a439a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5089=['path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','error','name','send','map','SmsTransferReport','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','merge','where','then','includeAll','include','findAll','rows','catch','params','options','find','create','body','update','destroy','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache'];(function(_0x9b99da,_0x5a8535){var _0x52a08f=function(_0x4d1e6e){while(--_0x4d1e6e){_0x9b99da['push'](_0x9b99da['shift']());}};_0x52a08f(++_0x5a8535);}(_0x5089,0xd4));var _0x9508=function(_0x358806,_0x322b66){_0x358806=_0x358806-0x0;var _0x19fdcb=_0x5089[_0x358806];return _0x19fdcb;};'use strict';var emlformat=require(_0x9508('0x0'));var rimraf=require(_0x9508('0x1'));var zipdir=require(_0x9508('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9508('0x3'));var moment=require(_0x9508('0x4'));var BPromise=require(_0x9508('0x5'));var Mustache=require(_0x9508('0x6'));var util=require('util');var path=require(_0x9508('0x7'));var sox=require(_0x9508('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9508('0x9'));var _=require(_0x9508('0xa'));var squel=require(_0x9508('0xb'));var crypto=require('crypto');var jsforce=require(_0x9508('0xc'));var deskjs=require(_0x9508('0xd'));var toCsv=require(_0x9508('0xe'));var querystring=require(_0x9508('0xf'));var Papa=require(_0x9508('0x10'));var Redis=require(_0x9508('0x11'));var authService=require(_0x9508('0x12'));var qs=require(_0x9508('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9508('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x9508('0x15'));var config=require(_0x9508('0x16'));var licenseUtil=require(_0x9508('0x17'));var db=require(_0x9508('0x18'))['db'];function respondWithStatusCode(_0x4e4737,_0x3beb5a){_0x3beb5a=_0x3beb5a||0xcc;return function(_0x5939fc){if(_0x5939fc){return _0x4e4737[_0x9508('0x19')](_0x3beb5a);}return _0x4e4737[_0x9508('0x1a')](_0x3beb5a)[_0x9508('0x1b')]();};}function respondWithResult(_0x468e78,_0x2219f1){_0x2219f1=_0x2219f1||0xc8;return function(_0x555de9){if(_0x555de9){return _0x468e78[_0x9508('0x1a')](_0x2219f1)[_0x9508('0x1c')](_0x555de9);}};}function respondWithFilteredResult(_0x14fd50,_0x5289fc){return function(_0x5e5701){if(_0x5e5701){var _0x1453ae=typeof _0x5289fc['offset']==='undefined'&&typeof _0x5289fc['limit']==='undefined';var _0x5709a5=_0x5e5701[_0x9508('0x1d')];var _0x1c1cdf=_0x1453ae?0x0:_0x5289fc['offset'];var _0x5c1ef9=_0x1453ae?_0x5e5701[_0x9508('0x1d')]:_0x5289fc[_0x9508('0x1e')]+_0x5289fc[_0x9508('0x1f')];var _0x2c9bf9;if(_0x5c1ef9>=_0x5709a5){_0x5c1ef9=_0x5709a5;_0x2c9bf9=0xc8;}else{_0x2c9bf9=0xce;}_0x14fd50['status'](_0x2c9bf9);return _0x14fd50[_0x9508('0x20')](_0x9508('0x21'),_0x1c1cdf+'-'+_0x5c1ef9+'/'+_0x5709a5)[_0x9508('0x1c')](_0x5e5701);}return null;};}function patchUpdates(_0x5e5238){return function(_0x239ede){try{jsonpatch[_0x9508('0x22')](_0x239ede,_0x5e5238,!![]);}catch(_0x58ac36){return BPromise[_0x9508('0x23')](_0x58ac36);}return _0x239ede[_0x9508('0x24')]();};}function saveUpdates(_0x41d6eb,_0x12c7c3){return function(_0x59d8cc){if(_0x59d8cc){return _0x59d8cc['update'](_0x41d6eb)['then'](function(_0x1a5cb7){return _0x1a5cb7;});}return null;};}function removeEntity(_0x5b30cc,_0x1b387c){return function(_0x2d2e7e){if(_0x2d2e7e){return _0x2d2e7e['destroy']()['then'](function(){_0x5b30cc['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x9e758c,_0x5d9008){return function(_0x201685){if(!_0x201685){_0x9e758c[_0x9508('0x19')](0x194);}return _0x201685;};}function handleError(_0x2f1049,_0x44de04){_0x44de04=_0x44de04||0x1f4;return function(_0x2b1709){logger[_0x9508('0x25')](_0x2b1709['stack']);if(_0x2b1709[_0x9508('0x26')]){delete _0x2b1709[_0x9508('0x26')];}_0x2f1049[_0x9508('0x1a')](_0x44de04)[_0x9508('0x27')](_0x2b1709);};}exports['index']=function(_0x4554ef,_0x33c5c1){var _0x5322c9={},_0x22d87c={},_0x38ad62={'count':0x0,'rows':[]};var _0x2fdd79=_[_0x9508('0x28')](db[_0x9508('0x29')][_0x9508('0x2a')],function(_0x4f6cbf){return{'name':_0x4f6cbf['fieldName'],'type':_0x4f6cbf[_0x9508('0x2b')]['key']};});_0x22d87c[_0x9508('0x2c')]=_[_0x9508('0x28')](_0x2fdd79,_0x9508('0x26'));_0x22d87c[_0x9508('0x2d')]=_[_0x9508('0x2e')](_0x4554ef[_0x9508('0x2d')]);_0x22d87c[_0x9508('0x2f')]=_[_0x9508('0x30')](_0x22d87c[_0x9508('0x2c')],_0x22d87c[_0x9508('0x2d')]);_0x5322c9[_0x9508('0x31')]=_['intersection'](_0x22d87c[_0x9508('0x2c')],qs[_0x9508('0x32')](_0x4554ef[_0x9508('0x2d')][_0x9508('0x32')]));_0x5322c9[_0x9508('0x31')]=_0x5322c9[_0x9508('0x31')][_0x9508('0x33')]?_0x5322c9['attributes']:_0x22d87c[_0x9508('0x2c')];if(!_0x4554ef[_0x9508('0x2d')]['hasOwnProperty'](_0x9508('0x34'))){_0x5322c9[_0x9508('0x1f')]=qs[_0x9508('0x1f')](_0x4554ef[_0x9508('0x2d')][_0x9508('0x1f')]);_0x5322c9[_0x9508('0x1e')]=qs[_0x9508('0x1e')](_0x4554ef[_0x9508('0x2d')][_0x9508('0x1e')]);}_0x5322c9[_0x9508('0x35')]=qs[_0x9508('0x36')](_0x4554ef[_0x9508('0x2d')][_0x9508('0x36')]);_0x5322c9['where']=qs[_0x9508('0x2f')](_[_0x9508('0x37')](_0x4554ef[_0x9508('0x2d')],_0x22d87c[_0x9508('0x2f')]),_0x2fdd79);if(_0x4554ef[_0x9508('0x2d')][_0x9508('0x38')]){_0x5322c9['where']=_[_0x9508('0x39')](_0x5322c9[_0x9508('0x3a')],{'$or':_[_0x9508('0x28')](_0x2fdd79,function(_0x309c68){if(_0x309c68['type']!=='VIRTUAL'){var _0x235b2a={};_0x235b2a[_0x309c68[_0x9508('0x26')]]={'$like':'%'+_0x4554ef[_0x9508('0x2d')][_0x9508('0x38')]+'%'};return _0x235b2a;}})});}_0x5322c9=_[_0x9508('0x39')]({},_0x5322c9,_0x4554ef['options']);var _0x2199e2={'where':_0x5322c9[_0x9508('0x3a')]};return db['SmsTransferReport']['count'](_0x2199e2)[_0x9508('0x3b')](function(_0x6b1578){_0x38ad62['count']=_0x6b1578;if(_0x4554ef['query'][_0x9508('0x3c')]){_0x5322c9[_0x9508('0x3d')]=[{'all':!![]}];}return db['SmsTransferReport'][_0x9508('0x3e')](_0x5322c9);})['then'](function(_0xfb6a5b){_0x38ad62[_0x9508('0x3f')]=_0xfb6a5b;return _0x38ad62;})[_0x9508('0x3b')](respondWithFilteredResult(_0x33c5c1,_0x5322c9))[_0x9508('0x40')](handleError(_0x33c5c1,null));};exports['show']=function(_0x4badfc,_0x47b690){var _0x38d803={'raw':!![],'where':{'id':_0x4badfc[_0x9508('0x41')]['id']}},_0x2fd5a9={};_0x2fd5a9['model']=_['keys'](db[_0x9508('0x29')][_0x9508('0x2a')]);_0x2fd5a9[_0x9508('0x2d')]=_[_0x9508('0x2e')](_0x4badfc[_0x9508('0x2d')]);_0x2fd5a9[_0x9508('0x2f')]=_[_0x9508('0x30')](_0x2fd5a9[_0x9508('0x2c')],_0x2fd5a9[_0x9508('0x2d')]);_0x38d803[_0x9508('0x31')]=_[_0x9508('0x30')](_0x2fd5a9[_0x9508('0x2c')],qs[_0x9508('0x32')](_0x4badfc['query']['fields']));_0x38d803[_0x9508('0x31')]=_0x38d803['attributes']['length']?_0x38d803[_0x9508('0x31')]:_0x2fd5a9[_0x9508('0x2c')];if(_0x4badfc[_0x9508('0x2d')][_0x9508('0x3c')]){_0x38d803['include']=[{'all':!![]}];}_0x38d803=_['merge']({},_0x38d803,_0x4badfc[_0x9508('0x42')]);return db[_0x9508('0x29')][_0x9508('0x43')](_0x38d803)[_0x9508('0x3b')](handleEntityNotFound(_0x47b690,null))[_0x9508('0x3b')](respondWithResult(_0x47b690,null))[_0x9508('0x40')](handleError(_0x47b690,null));};exports[_0x9508('0x44')]=function(_0x273d24,_0x4619fe){return db[_0x9508('0x29')][_0x9508('0x44')](_0x273d24[_0x9508('0x45')],{})[_0x9508('0x3b')](respondWithResult(_0x4619fe,0xc9))[_0x9508('0x40')](handleError(_0x4619fe,null));};exports[_0x9508('0x46')]=function(_0x51e990,_0x2115ea){if(_0x51e990[_0x9508('0x45')]['id']){delete _0x51e990[_0x9508('0x45')]['id'];}return db['SmsTransferReport'][_0x9508('0x43')]({'where':{'id':_0x51e990['params']['id']}})[_0x9508('0x3b')](handleEntityNotFound(_0x2115ea,null))[_0x9508('0x3b')](saveUpdates(_0x51e990[_0x9508('0x45')],null))[_0x9508('0x3b')](respondWithResult(_0x2115ea,null))[_0x9508('0x40')](handleError(_0x2115ea,null));};exports[_0x9508('0x47')]=function(_0x372f90,_0x5dedda){return db[_0x9508('0x29')][_0x9508('0x43')]({'where':{'id':_0x372f90[_0x9508('0x41')]['id']}})['then'](handleEntityNotFound(_0x5dedda,null))[_0x9508('0x3b')](removeEntity(_0x5dedda,null))[_0x9508('0x40')](handleError(_0x5dedda,null));};exports[_0x9508('0x48')]=function(_0x20368b,_0x5d14c1){return db[_0x9508('0x29')][_0x9508('0x48')]()[_0x9508('0x3b')](respondWithResult(_0x5d14c1,null))[_0x9508('0x40')](handleError(_0x5d14c1,null));};
\ No newline at end of file
+var _0x2040=['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','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','SmsTransferReport','rawAttributes','fieldName','type','map','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','catch','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path'];(function(_0x3c22e0,_0x1dc6ea){var _0x215811=function(_0x1b453c){while(--_0x1b453c){_0x3c22e0['push'](_0x3c22e0['shift']());}};_0x215811(++_0x1dc6ea);}(_0x2040,0x1d1));var _0x0204=function(_0x96602e,_0x3d75d4){_0x96602e=_0x96602e-0x0;var _0x5c004d=_0x2040[_0x96602e];return _0x5c004d;};'use strict';var emlformat=require(_0x0204('0x0'));var rimraf=require(_0x0204('0x1'));var zipdir=require(_0x0204('0x2'));var jsonpatch=require(_0x0204('0x3'));var rp=require(_0x0204('0x4'));var moment=require(_0x0204('0x5'));var BPromise=require(_0x0204('0x6'));var Mustache=require('mustache');var util=require(_0x0204('0x7'));var path=require(_0x0204('0x8'));var sox=require(_0x0204('0x9'));var csv=require(_0x0204('0xa'));var ejs=require(_0x0204('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0204('0xc'));var squel=require(_0x0204('0xd'));var crypto=require(_0x0204('0xe'));var jsforce=require(_0x0204('0xf'));var deskjs=require(_0x0204('0x10'));var toCsv=require(_0x0204('0xa'));var querystring=require(_0x0204('0x11'));var Papa=require(_0x0204('0x12'));var Redis=require(_0x0204('0x13'));var authService=require(_0x0204('0x14'));var qs=require(_0x0204('0x15'));var as=require(_0x0204('0x16'));var hardwareService=require(_0x0204('0x17'));var logger=require(_0x0204('0x18'))(_0x0204('0x19'));var utils=require(_0x0204('0x1a'));var config=require(_0x0204('0x1b'));var licenseUtil=require(_0x0204('0x1c'));var db=require(_0x0204('0x1d'))['db'];function respondWithStatusCode(_0x70966e,_0x1df256){_0x1df256=_0x1df256||0xcc;return function(_0x360678){if(_0x360678){return _0x70966e[_0x0204('0x1e')](_0x1df256);}return _0x70966e[_0x0204('0x1f')](_0x1df256)[_0x0204('0x20')]();};}function respondWithResult(_0x2b5dc7,_0x56ff57){_0x56ff57=_0x56ff57||0xc8;return function(_0x13671a){if(_0x13671a){return _0x2b5dc7[_0x0204('0x1f')](_0x56ff57)[_0x0204('0x21')](_0x13671a);}};}function respondWithFilteredResult(_0x67d9,_0x4d4e17){return function(_0x3eed05){if(_0x3eed05){var _0xdc4443=typeof _0x4d4e17['offset']===_0x0204('0x22')&&typeof _0x4d4e17[_0x0204('0x23')]===_0x0204('0x22');var _0xd4de2f=_0x3eed05[_0x0204('0x24')];var _0x1aad42=_0xdc4443?0x0:_0x4d4e17['offset'];var _0x87287=_0xdc4443?_0x3eed05[_0x0204('0x24')]:_0x4d4e17[_0x0204('0x25')]+_0x4d4e17[_0x0204('0x23')];var _0x5df4bd;if(_0x87287>=_0xd4de2f){_0x87287=_0xd4de2f;_0x5df4bd=0xc8;}else{_0x5df4bd=0xce;}_0x67d9[_0x0204('0x1f')](_0x5df4bd);return _0x67d9[_0x0204('0x26')](_0x0204('0x27'),_0x1aad42+'-'+_0x87287+'/'+_0xd4de2f)[_0x0204('0x21')](_0x3eed05);}return null;};}function patchUpdates(_0x1b79dd){return function(_0x3b0437){try{jsonpatch[_0x0204('0x28')](_0x3b0437,_0x1b79dd,!![]);}catch(_0x59115d){return BPromise[_0x0204('0x29')](_0x59115d);}return _0x3b0437[_0x0204('0x2a')]();};}function saveUpdates(_0x22e37c,_0x1c837f){return function(_0x445c78){if(_0x445c78){return _0x445c78[_0x0204('0x2b')](_0x22e37c)[_0x0204('0x2c')](function(_0xa917ed){return _0xa917ed;});}return null;};}function removeEntity(_0x5aa59a,_0x57b62d){return function(_0x293241){if(_0x293241){return _0x293241[_0x0204('0x2d')]()[_0x0204('0x2c')](function(){_0x5aa59a['status'](0xcc)[_0x0204('0x20')]();});}};}function handleEntityNotFound(_0x45554e,_0x6ebbe2){return function(_0x40e902){if(!_0x40e902){_0x45554e[_0x0204('0x1e')](0x194);}return _0x40e902;};}function handleError(_0x1db390,_0x87109d){_0x87109d=_0x87109d||0x1f4;return function(_0x27005b){logger[_0x0204('0x2e')](_0x27005b[_0x0204('0x2f')]);if(_0x27005b[_0x0204('0x30')]){delete _0x27005b[_0x0204('0x30')];}_0x1db390[_0x0204('0x1f')](_0x87109d)[_0x0204('0x31')](_0x27005b);};}exports[_0x0204('0x32')]=function(_0x505a20,_0x2e1c3f){var _0x4f235c={},_0x2fe653={},_0x8e7aab={'count':0x0,'rows':[]};var _0x24d441=_['map'](db[_0x0204('0x33')][_0x0204('0x34')],function(_0x47bde6){return{'name':_0x47bde6[_0x0204('0x35')],'type':_0x47bde6[_0x0204('0x36')]['key']};});_0x2fe653['model']=_[_0x0204('0x37')](_0x24d441,_0x0204('0x30'));_0x2fe653[_0x0204('0x38')]=_[_0x0204('0x39')](_0x505a20[_0x0204('0x38')]);_0x2fe653[_0x0204('0x3a')]=_[_0x0204('0x3b')](_0x2fe653['model'],_0x2fe653[_0x0204('0x38')]);_0x4f235c[_0x0204('0x3c')]=_['intersection'](_0x2fe653['model'],qs[_0x0204('0x3d')](_0x505a20[_0x0204('0x38')][_0x0204('0x3d')]));_0x4f235c['attributes']=_0x4f235c[_0x0204('0x3c')][_0x0204('0x3e')]?_0x4f235c['attributes']:_0x2fe653[_0x0204('0x3f')];if(!_0x505a20['query'][_0x0204('0x40')](_0x0204('0x41'))){_0x4f235c[_0x0204('0x23')]=qs[_0x0204('0x23')](_0x505a20[_0x0204('0x38')][_0x0204('0x23')]);_0x4f235c[_0x0204('0x25')]=qs[_0x0204('0x25')](_0x505a20[_0x0204('0x38')]['offset']);}_0x4f235c[_0x0204('0x42')]=qs[_0x0204('0x43')](_0x505a20[_0x0204('0x38')][_0x0204('0x43')]);_0x4f235c[_0x0204('0x44')]=qs[_0x0204('0x3a')](_[_0x0204('0x45')](_0x505a20[_0x0204('0x38')],_0x2fe653[_0x0204('0x3a')]),_0x24d441);if(_0x505a20[_0x0204('0x38')][_0x0204('0x46')]){_0x4f235c[_0x0204('0x44')]=_[_0x0204('0x47')](_0x4f235c[_0x0204('0x44')],{'$or':_[_0x0204('0x37')](_0x24d441,function(_0x4c1b27){if(_0x4c1b27[_0x0204('0x36')]!=='VIRTUAL'){var _0x13ee34={};_0x13ee34[_0x4c1b27['name']]={'$like':'%'+_0x505a20[_0x0204('0x38')][_0x0204('0x46')]+'%'};return _0x13ee34;}})});}_0x4f235c=_[_0x0204('0x47')]({},_0x4f235c,_0x505a20['options']);var _0x39bb1e={'where':_0x4f235c['where']};return db[_0x0204('0x33')][_0x0204('0x24')](_0x39bb1e)['then'](function(_0x1cff9d){_0x8e7aab['count']=_0x1cff9d;if(_0x505a20[_0x0204('0x38')][_0x0204('0x48')]){_0x4f235c['include']=[{'all':!![]}];}return db[_0x0204('0x33')]['findAll'](_0x4f235c);})[_0x0204('0x2c')](function(_0x5225ad){_0x8e7aab['rows']=_0x5225ad;return _0x8e7aab;})[_0x0204('0x2c')](respondWithFilteredResult(_0x2e1c3f,_0x4f235c))[_0x0204('0x49')](handleError(_0x2e1c3f,null));};exports['show']=function(_0x1c153e,_0x545814){var _0xc81b75={'raw':!![],'where':{'id':_0x1c153e['params']['id']}},_0x453a0e={};_0x453a0e[_0x0204('0x3f')]=_['keys'](db[_0x0204('0x33')][_0x0204('0x34')]);_0x453a0e[_0x0204('0x38')]=_[_0x0204('0x39')](_0x1c153e['query']);_0x453a0e['filters']=_[_0x0204('0x3b')](_0x453a0e[_0x0204('0x3f')],_0x453a0e['query']);_0xc81b75['attributes']=_[_0x0204('0x3b')](_0x453a0e[_0x0204('0x3f')],qs['fields'](_0x1c153e[_0x0204('0x38')][_0x0204('0x3d')]));_0xc81b75[_0x0204('0x3c')]=_0xc81b75['attributes'][_0x0204('0x3e')]?_0xc81b75['attributes']:_0x453a0e['model'];if(_0x1c153e['query'][_0x0204('0x48')]){_0xc81b75['include']=[{'all':!![]}];}_0xc81b75=_['merge']({},_0xc81b75,_0x1c153e['options']);return db[_0x0204('0x33')]['find'](_0xc81b75)[_0x0204('0x2c')](handleEntityNotFound(_0x545814,null))[_0x0204('0x2c')](respondWithResult(_0x545814,null))['catch'](handleError(_0x545814,null));};exports['create']=function(_0x51f647,_0x176598){return db['SmsTransferReport'][_0x0204('0x4a')](_0x51f647[_0x0204('0x4b')],{})[_0x0204('0x2c')](respondWithResult(_0x176598,0xc9))['catch'](handleError(_0x176598,null));};exports[_0x0204('0x2b')]=function(_0x4c3b1b,_0x441c61){if(_0x4c3b1b['body']['id']){delete _0x4c3b1b[_0x0204('0x4b')]['id'];}return db[_0x0204('0x33')][_0x0204('0x4c')]({'where':{'id':_0x4c3b1b[_0x0204('0x4d')]['id']}})[_0x0204('0x2c')](handleEntityNotFound(_0x441c61,null))['then'](saveUpdates(_0x4c3b1b[_0x0204('0x4b')],null))[_0x0204('0x2c')](respondWithResult(_0x441c61,null))[_0x0204('0x49')](handleError(_0x441c61,null));};exports[_0x0204('0x2d')]=function(_0x4e6f0f,_0x337eef){return db[_0x0204('0x33')][_0x0204('0x4c')]({'where':{'id':_0x4e6f0f[_0x0204('0x4d')]['id']}})[_0x0204('0x2c')](handleEntityNotFound(_0x337eef,null))[_0x0204('0x2c')](removeEntity(_0x337eef,null))[_0x0204('0x49')](handleError(_0x337eef,null));};exports[_0x0204('0x4e')]=function(_0x561355,_0x4e7da3){return db[_0x0204('0x33')]['describe']()['then'](respondWithResult(_0x4e7da3,null))[_0x0204('0x49')](handleError(_0x4e7da3,null));};
\ No newline at end of file
index e13f9c4..9edc9b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6149=['request-promise','path','rimraf','./smsTransferReport.attributes','exports','define','SmsTransferReport','report_sms_transfer','uniqueid','../../config/logger','moment','bluebird'];(function(_0x42bc91,_0x41f40a){var _0x3f5507=function(_0x20cfaf){while(--_0x20cfaf){_0x42bc91['push'](_0x42bc91['shift']());}};_0x3f5507(++_0x41f40a);}(_0x6149,0x165));var _0x9614=function(_0x1f0d03,_0x5be7f4){_0x1f0d03=_0x1f0d03-0x0;var _0x1ed0b1=_0x6149[_0x1f0d03];return _0x1ed0b1;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9614('0x0'))('api');var moment=require(_0x9614('0x1'));var BPromise=require(_0x9614('0x2'));var rp=require(_0x9614('0x3'));var fs=require('fs');var path=require(_0x9614('0x4'));var rimraf=require(_0x9614('0x5'));var config=require('../../config/environment');var attributes=require(_0x9614('0x6'));module[_0x9614('0x7')]=function(_0x2db4c2,_0x5786e2){return _0x2db4c2[_0x9614('0x8')](_0x9614('0x9'),attributes,{'tableName':_0x9614('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x9614('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0bec=['request-promise','path','./smsTransferReport.attributes','define','SmsTransferReport','report_sms_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x3aa12b,_0x1cea89){var _0x1acb6f=function(_0x9dce11){while(--_0x9dce11){_0x3aa12b['push'](_0x3aa12b['shift']());}};_0x1acb6f(++_0x1cea89);}(_0x0bec,0x173));var _0xc0be=function(_0x1967be,_0x2e5f33){_0x1967be=_0x1967be-0x0;var _0x4f9253=_0x0bec[_0x1967be];return _0x4f9253;};'use strict';var _=require(_0xc0be('0x0'));var util=require(_0xc0be('0x1'));var logger=require(_0xc0be('0x2'))(_0xc0be('0x3'));var moment=require(_0xc0be('0x4'));var BPromise=require(_0xc0be('0x5'));var rp=require(_0xc0be('0x6'));var fs=require('fs');var path=require(_0xc0be('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc0be('0x8'));module['exports']=function(_0x59c5e4,_0x3a6cef){return _0x59c5e4[_0xc0be('0x9')](_0xc0be('0xa'),attributes,{'tableName':_0xc0be('0xb'),'paranoid':![],'indexes':[{'name':_0xc0be('0xc'),'fields':[_0xc0be('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index ee7c10a..d7d3a12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabe8=['result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','SmsTransferReport,\x20%s,\x20%s','message','info'];(function(_0x473d3c,_0x417145){var _0x467125=function(_0x5b2f39){while(--_0x5b2f39){_0x473d3c['push'](_0x473d3c['shift']());}};_0x467125(++_0x417145);}(_0xabe8,0x8c));var _0x8abe=function(_0x3f913e,_0x286dce){_0x3f913e=_0x3f913e-0x0;var _0x1228c8=_0xabe8[_0x3f913e];return _0x1228c8;};'use strict';var _=require(_0x8abe('0x0'));var util=require(_0x8abe('0x1'));var moment=require(_0x8abe('0x2'));var BPromise=require('bluebird');var rs=require(_0x8abe('0x3'));var fs=require('fs');var Redis=require(_0x8abe('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8abe('0x5'));var logger=require('../../config/logger')(_0x8abe('0x6'));var config=require(_0x8abe('0x7'));var jayson=require(_0x8abe('0x8'));var client=jayson[_0x8abe('0x9')][_0x8abe('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4e49d7,_0x57355d,_0x27ebd9){return new BPromise(function(_0xd686ac,_0x45ea69){return client[_0x8abe('0xb')](_0x4e49d7,_0x27ebd9)[_0x8abe('0xc')](function(_0x16e5e9){logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x57355d,'request\x20sent');logger[_0x8abe('0xd')](_0x8abe('0xe'),_0x57355d,_0x8abe('0xf'),JSON[_0x8abe('0x10')](_0x16e5e9));if(_0x16e5e9[_0x8abe('0x11')]){if(_0x16e5e9['error']['code']===0x1f4){logger[_0x8abe('0x11')](_0x8abe('0x12'),_0x57355d,_0x16e5e9[_0x8abe('0x11')][_0x8abe('0x13')]);return _0x45ea69(_0x16e5e9['error']['message']);}logger['error'](_0x8abe('0x12'),_0x57355d,_0x16e5e9['error'][_0x8abe('0x13')]);return _0xd686ac(_0x16e5e9['error'][_0x8abe('0x13')]);}else{logger[_0x8abe('0x14')]('SmsTransferReport,\x20%s,\x20%s',_0x57355d,_0x8abe('0xf'));_0xd686ac(_0x16e5e9[_0x8abe('0x15')][_0x8abe('0x13')]);}})[_0x8abe('0x16')](function(_0x34b2c7){logger[_0x8abe('0x11')](_0x8abe('0x12'),_0x57355d,_0x34b2c7);_0x45ea69(_0x34b2c7);});});}
\ No newline at end of file
+var _0x5c12=['../../config/environment','client','http','request','then','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','error','message','info','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x404cde,_0x27b51c){var _0x139882=function(_0x1f31d1){while(--_0x1f31d1){_0x404cde['push'](_0x404cde['shift']());}};_0x139882(++_0x27b51c);}(_0x5c12,0x188));var _0x25c1=function(_0x542da8,_0x509c26){_0x542da8=_0x542da8-0x0;var _0x533d7e=_0x5c12[_0x542da8];return _0x533d7e;};'use strict';var _=require('lodash');var util=require(_0x25c1('0x0'));var moment=require(_0x25c1('0x1'));var BPromise=require('bluebird');var rs=require(_0x25c1('0x2'));var fs=require('fs');var Redis=require(_0x25c1('0x3'));var db=require(_0x25c1('0x4'))['db'];var utils=require(_0x25c1('0x5'));var logger=require(_0x25c1('0x6'))(_0x25c1('0x7'));var config=require(_0x25c1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x25c1('0x9')][_0x25c1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x382922,_0x4ab674,_0x5c69b1){return new BPromise(function(_0x24981c,_0x3b69ba){return client[_0x25c1('0xb')](_0x382922,_0x5c69b1)[_0x25c1('0xc')](function(_0xf8363f){logger['info'](_0x25c1('0xd'),_0x4ab674,_0x25c1('0xe'));logger[_0x25c1('0xf')](_0x25c1('0x10'),_0x4ab674,_0x25c1('0xe'),JSON['stringify'](_0xf8363f));if(_0xf8363f[_0x25c1('0x11')]){if(_0xf8363f[_0x25c1('0x11')]['code']===0x1f4){logger[_0x25c1('0x11')](_0x25c1('0xd'),_0x4ab674,_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);return _0x3b69ba(_0xf8363f['error']['message']);}logger['error']('SmsTransferReport,\x20%s,\x20%s',_0x4ab674,_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);return _0x24981c(_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);}else{logger[_0x25c1('0x13')]('SmsTransferReport,\x20%s,\x20%s',_0x4ab674,_0x25c1('0xe'));_0x24981c(_0xf8363f['result']['message']);}})['catch'](function(_0x284712){logger[_0x25c1('0x11')]('SmsTransferReport,\x20%s,\x20%s',_0x4ab674,_0x284712);_0x3b69ba(_0x284712);});});}
\ No newline at end of file
index efc2faa..da2c45e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bcd=['./sound.controller','get','isAuthenticated','index','/:id','show','download','join','root','server/files/sounds/original/','originalname','format','%s-%s%s','basename','extname','now','post','single','file','create','put','update','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service'];(function(_0x4bd5da,_0x28e606){var _0x5a857b=function(_0x4dbe58){while(--_0x4dbe58){_0x4bd5da['push'](_0x4bd5da['shift']());}};_0x5a857b(++_0x28e606);}(_0x7bcd,0x19e));var _0xd7bc=function(_0x24cc72,_0x4dc73a){_0x24cc72=_0x24cc72-0x0;var _0xd49f1e=_0x7bcd[_0x24cc72];return _0xd49f1e;};'use strict';var multer=require('multer');var util=require(_0xd7bc('0x0'));var path=require(_0xd7bc('0x1'));var timeout=require(_0xd7bc('0x2'));var express=require('express');var router=express[_0xd7bc('0x3')]();var fs_extra=require(_0xd7bc('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xd7bc('0x5'));var config=require('../../config/environment');var controller=require(_0xd7bc('0x6'));router[_0xd7bc('0x7')]('/',auth[_0xd7bc('0x8')](),controller[_0xd7bc('0x9')]);router[_0xd7bc('0x7')](_0xd7bc('0xa'),auth[_0xd7bc('0x8')](),controller[_0xd7bc('0xb')]);router[_0xd7bc('0x7')]('/:id/download',auth['isAuthenticated'](),controller[_0xd7bc('0xc')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x462153,_0x2d8eac,_0x8dfd3){_0x8dfd3(null,path[_0xd7bc('0xd')](config[_0xd7bc('0xe')],_0xd7bc('0xf')));},'filename':function(_0x16b83c,_0xdff831,_0x28bc8a){_0xdff831['originalname']=_0xdff831[_0xd7bc('0x10')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x28bc8a(null,util[_0xd7bc('0x11')](_0xd7bc('0x12'),path[_0xd7bc('0x13')](_0xdff831[_0xd7bc('0x10')],path[_0xd7bc('0x14')](_0xdff831[_0xd7bc('0x10')])),Date[_0xd7bc('0x15')](),path[_0xd7bc('0x14')](_0xdff831['originalname'])));}})});router[_0xd7bc('0x16')]('/',upload[_0xd7bc('0x17')](_0xd7bc('0x18')),controller[_0xd7bc('0x19')]);router[_0xd7bc('0x1a')](_0xd7bc('0xa'),auth[_0xd7bc('0x8')](),controller[_0xd7bc('0x1b')]);router['delete'](_0xd7bc('0xa'),auth[_0xd7bc('0x8')](),controller[_0xd7bc('0x1c')]);module[_0xd7bc('0x1d')]=router;
\ No newline at end of file
+var _0x2215=['show','/:id/download','download','diskStorage','join','server/files/sounds/original/','originalname','replace','basename','extname','post','file','create','put','update','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','get','index','/:id','isAuthenticated'];(function(_0x1b9bb3,_0x314e5d){var _0x52f37e=function(_0x2282f4){while(--_0x2282f4){_0x1b9bb3['push'](_0x1b9bb3['shift']());}};_0x52f37e(++_0x314e5d);}(_0x2215,0x1b4));var _0x5221=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x2215[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require('multer');var util=require(_0x5221('0x0'));var path=require(_0x5221('0x1'));var timeout=require(_0x5221('0x2'));var express=require(_0x5221('0x3'));var router=express[_0x5221('0x4')]();var fs_extra=require(_0x5221('0x5'));var auth=require(_0x5221('0x6'));var interaction=require(_0x5221('0x7'));var config=require(_0x5221('0x8'));var controller=require(_0x5221('0x9'));router[_0x5221('0xa')]('/',auth['isAuthenticated'](),controller[_0x5221('0xb')]);router[_0x5221('0xa')](_0x5221('0xc'),auth[_0x5221('0xd')](),controller[_0x5221('0xe')]);router[_0x5221('0xa')](_0x5221('0xf'),auth[_0x5221('0xd')](),controller[_0x5221('0x10')]);var upload=multer({'storage':multer[_0x5221('0x11')]({'destination':function(_0x4fcb3e,_0x4cb0c8,_0x26ca5a){_0x26ca5a(null,path[_0x5221('0x12')](config['root'],_0x5221('0x13')));},'filename':function(_0x52d3af,_0x54a95a,_0x3ea960){_0x54a95a[_0x5221('0x14')]=_0x54a95a[_0x5221('0x14')][_0x5221('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3ea960(null,util['format']('%s-%s%s',path[_0x5221('0x16')](_0x54a95a[_0x5221('0x14')],path[_0x5221('0x17')](_0x54a95a[_0x5221('0x14')])),Date['now'](),path[_0x5221('0x17')](_0x54a95a[_0x5221('0x14')])));}})});router[_0x5221('0x18')]('/',upload['single'](_0x5221('0x19')),controller[_0x5221('0x1a')]);router[_0x5221('0x1b')]('/:id',auth[_0x5221('0xd')](),controller[_0x5221('0x1c')]);router['delete']('/:id',auth[_0x5221('0xd')](),controller['delete']);module[_0x5221('0x1d')]=router;
\ No newline at end of file
index afbc6ad..c81528e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdd0=['STRING','name','FLOAT','INTEGER','BIGINT','exports'];(function(_0x95975e,_0x51412c){var _0x5d4933=function(_0x1cb2da){while(--_0x1cb2da){_0x95975e['push'](_0x95975e['shift']());}};_0x5d4933(++_0x51412c);}(_0xfdd0,0x7d));var _0x0fdd=function(_0xed5729,_0x4979b1){_0xed5729=_0xed5729-0x0;var _0x4607e4=_0xfdd0[_0xed5729];return _0x4607e4;};'use strict';var Sequelize=require('sequelize');module[_0x0fdd('0x0')]={'name':{'type':Sequelize[_0x0fdd('0x1')],'unique':_0x0fdd('0x2'),'allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0x0fdd('0x1')]},'original_format':{'type':Sequelize[_0x0fdd('0x1')]},'original_duration':{'type':Sequelize[_0x0fdd('0x3')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0x0fdd('0x4')]},'original_bitRate':{'type':Sequelize[_0x0fdd('0x5')]},'original_sampleRate':{'type':Sequelize[_0x0fdd('0x4')]},'converted_format':{'type':Sequelize[_0x0fdd('0x1')]},'converted_duration':{'type':Sequelize[_0x0fdd('0x3')]},'converted_sampleCount':{'type':Sequelize[_0x0fdd('0x5')]},'converted_channelCount':{'type':Sequelize[_0x0fdd('0x4')]},'converted_bitRate':{'type':Sequelize[_0x0fdd('0x5')]},'converted_sampleRate':{'type':Sequelize[_0x0fdd('0x4')]}};
\ No newline at end of file
+var _0x42bc=['exports','STRING','name','FLOAT','BIGINT','INTEGER','sequelize'];(function(_0x4e5b9c,_0x539f2a){var _0x77a832=function(_0x49ee96){while(--_0x49ee96){_0x4e5b9c['push'](_0x4e5b9c['shift']());}};_0x77a832(++_0x539f2a);}(_0x42bc,0x12c));var _0xc42b=function(_0xc9396b,_0x734ceb){_0xc9396b=_0xc9396b-0x0;var _0x56d6ee=_0x42bc[_0xc9396b];return _0x56d6ee;};'use strict';var Sequelize=require(_0xc42b('0x0'));module[_0xc42b('0x1')]={'name':{'type':Sequelize[_0xc42b('0x2')],'unique':_0xc42b('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0xc42b('0x2')]},'display_name':{'type':Sequelize[_0xc42b('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xc42b('0x2')]},'original_format':{'type':Sequelize[_0xc42b('0x2')]},'original_duration':{'type':Sequelize[_0xc42b('0x4')]},'original_sampleCount':{'type':Sequelize[_0xc42b('0x5')]},'original_channelCount':{'type':Sequelize[_0xc42b('0x6')]},'original_bitRate':{'type':Sequelize[_0xc42b('0x5')]},'original_sampleRate':{'type':Sequelize[_0xc42b('0x6')]},'converted_format':{'type':Sequelize[_0xc42b('0x2')]},'converted_duration':{'type':Sequelize[_0xc42b('0x4')]},'converted_sampleCount':{'type':Sequelize[_0xc42b('0x5')]},'converted_channelCount':{'type':Sequelize[_0xc42b('0x6')]},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0xc42b('0x6')]}};
\ No newline at end of file
index 493b897..301920c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d54=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','reject','save','update','then','Sounds','UserProfileResource','destroy','error','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','Sound','findAll','rows','params','include','find','catch','download','converted_format','join','root','save_name','Sound\x20not\x20found','server/files/sounds/converted','format','%s.%s','create','file','originalname','extname','filename','substring','wav','basename','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','unlinkSync','src','duration','sampleCount','original_channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','channelCount','converted_bitRate','converted_sampleRate','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','delete','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment'];(function(_0x51d245,_0x5f2dcf){var _0x4079af=function(_0x57fab3){while(--_0x57fab3){_0x51d245['push'](_0x51d245['shift']());}};_0x4079af(++_0x5f2dcf);}(_0x3d54,0x1db));var _0x43d5=function(_0x12dc94,_0x121794){_0x12dc94=_0x12dc94-0x0;var _0x3a6d65=_0x3d54[_0x12dc94];return _0x3a6d65;};'use strict';var emlformat=require(_0x43d5('0x0'));var rimraf=require(_0x43d5('0x1'));var zipdir=require(_0x43d5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x43d5('0x3'));var moment=require(_0x43d5('0x4'));var BPromise=require(_0x43d5('0x5'));var Mustache=require(_0x43d5('0x6'));var util=require('util');var path=require(_0x43d5('0x7'));var sox=require(_0x43d5('0x8'));var csv=require('to-csv');var ejs=require(_0x43d5('0x9'));var fs=require('fs');var fs_extra=require(_0x43d5('0xa'));var _=require(_0x43d5('0xb'));var squel=require(_0x43d5('0xc'));var crypto=require(_0x43d5('0xd'));var jsforce=require(_0x43d5('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x43d5('0xf'));var querystring=require(_0x43d5('0x10'));var Papa=require('papaparse');var Redis=require(_0x43d5('0x11'));var authService=require(_0x43d5('0x12'));var qs=require(_0x43d5('0x13'));var as=require(_0x43d5('0x14'));var hardwareService=require(_0x43d5('0x15'));var logger=require(_0x43d5('0x16'))(_0x43d5('0x17'));var utils=require('../../config/utils');var config=require(_0x43d5('0x18'));var licenseUtil=require(_0x43d5('0x19'));var db=require(_0x43d5('0x1a'))['db'];function respondWithStatusCode(_0x1d5e70,_0xcbd135){_0xcbd135=_0xcbd135||0xcc;return function(_0x15b1c8){if(_0x15b1c8){return _0x1d5e70[_0x43d5('0x1b')](_0xcbd135);}return _0x1d5e70[_0x43d5('0x1c')](_0xcbd135)[_0x43d5('0x1d')]();};}function respondWithResult(_0x4ff6a4,_0x373207){_0x373207=_0x373207||0xc8;return function(_0x2d4820){if(_0x2d4820){return _0x4ff6a4[_0x43d5('0x1c')](_0x373207)[_0x43d5('0x1e')](_0x2d4820);}};}function respondWithFilteredResult(_0x5e66a9,_0x5ca599){return function(_0x1b565f){if(_0x1b565f){var _0x1da3e9=typeof _0x5ca599[_0x43d5('0x1f')]===_0x43d5('0x20')&&typeof _0x5ca599[_0x43d5('0x21')]==='undefined';var _0x4bc6b1=_0x1b565f[_0x43d5('0x22')];var _0x36e973=_0x1da3e9?0x0:_0x5ca599[_0x43d5('0x1f')];var _0x52977a=_0x1da3e9?_0x1b565f[_0x43d5('0x22')]:_0x5ca599[_0x43d5('0x1f')]+_0x5ca599['limit'];var _0x200ca8;if(_0x52977a>=_0x4bc6b1){_0x52977a=_0x4bc6b1;_0x200ca8=0xc8;}else{_0x200ca8=0xce;}_0x5e66a9[_0x43d5('0x1c')](_0x200ca8);return _0x5e66a9['set']('Content-Range',_0x36e973+'-'+_0x52977a+'/'+_0x4bc6b1)[_0x43d5('0x1e')](_0x1b565f);}return null;};}function patchUpdates(_0x5790b1){return function(_0x4d9523){try{jsonpatch['apply'](_0x4d9523,_0x5790b1,!![]);}catch(_0x322075){return BPromise[_0x43d5('0x23')](_0x322075);}return _0x4d9523[_0x43d5('0x24')]();};}function saveUpdates(_0x3e9a66,_0x25db35){return function(_0x39dcdb){if(_0x39dcdb){return _0x39dcdb[_0x43d5('0x25')](_0x3e9a66)[_0x43d5('0x26')](function(_0x4af918){return _0x4af918;});}return null;};}function removeEntity(_0x38ea28,_0x3f691a){return function(_0x420e02){if(_0x420e02){return _0x420e02['destroy']()['then'](function(){var _0x422cd5=_0x420e02['get']({'plain':!![]});var _0x3531ff=_0x43d5('0x27');return db[_0x43d5('0x28')][_0x43d5('0x29')]({'where':{'type':_0x3531ff,'resourceId':_0x422cd5['id']}})[_0x43d5('0x26')](function(){return _0x420e02;});})[_0x43d5('0x26')](function(){_0x38ea28[_0x43d5('0x1c')](0xcc)[_0x43d5('0x1d')]();});}};}function handleEntityNotFound(_0x2af2ef,_0x2071e2){return function(_0x23d733){if(!_0x23d733){_0x2af2ef[_0x43d5('0x1b')](0x194);}return _0x23d733;};}function handleError(_0x55dbf8,_0x3ffaad){_0x3ffaad=_0x3ffaad||0x1f4;return function(_0x45b4b9){logger[_0x43d5('0x2a')](_0x45b4b9['stack']);if(_0x45b4b9[_0x43d5('0x2b')]){delete _0x45b4b9[_0x43d5('0x2b')];}_0x55dbf8['status'](_0x3ffaad)[_0x43d5('0x2c')](_0x45b4b9);};}exports[_0x43d5('0x2d')]=function(_0x3259a6,_0xb53fe6){var _0x59ad33={},_0xe651d7={},_0x2e0b94={'count':0x0,'rows':[]};var _0x42563b=_['map'](db['Sound'][_0x43d5('0x2e')],function(_0x7e20d5){return{'name':_0x7e20d5[_0x43d5('0x2f')],'type':_0x7e20d5[_0x43d5('0x30')][_0x43d5('0x31')]};});_0xe651d7[_0x43d5('0x32')]=_[_0x43d5('0x33')](_0x42563b,'name');_0xe651d7[_0x43d5('0x34')]=_[_0x43d5('0x35')](_0x3259a6[_0x43d5('0x34')]);_0xe651d7[_0x43d5('0x36')]=_[_0x43d5('0x37')](_0xe651d7['model'],_0xe651d7['query']);_0x59ad33[_0x43d5('0x38')]=_[_0x43d5('0x37')](_0xe651d7[_0x43d5('0x32')],qs['fields'](_0x3259a6[_0x43d5('0x34')][_0x43d5('0x39')]));_0x59ad33['attributes']=_0x59ad33['attributes'][_0x43d5('0x3a')]?_0x59ad33[_0x43d5('0x38')]:_0xe651d7[_0x43d5('0x32')];if(!_0x3259a6[_0x43d5('0x34')][_0x43d5('0x3b')](_0x43d5('0x3c'))){_0x59ad33['limit']=qs[_0x43d5('0x21')](_0x3259a6[_0x43d5('0x34')][_0x43d5('0x21')]);_0x59ad33[_0x43d5('0x1f')]=qs[_0x43d5('0x1f')](_0x3259a6['query'][_0x43d5('0x1f')]);}_0x59ad33[_0x43d5('0x3d')]=qs[_0x43d5('0x3e')](_0x3259a6[_0x43d5('0x34')][_0x43d5('0x3e')]);_0x59ad33[_0x43d5('0x3f')]=qs[_0x43d5('0x36')](_[_0x43d5('0x40')](_0x3259a6[_0x43d5('0x34')],_0xe651d7[_0x43d5('0x36')]),_0x42563b);if(_0x3259a6['query'][_0x43d5('0x41')]){_0x59ad33[_0x43d5('0x3f')]=_['merge'](_0x59ad33['where'],{'$or':_[_0x43d5('0x33')](_0x42563b,function(_0x5046bd){if(_0x5046bd[_0x43d5('0x30')]!==_0x43d5('0x42')){var _0x181d3b={};_0x181d3b[_0x5046bd[_0x43d5('0x2b')]]={'$like':'%'+_0x3259a6[_0x43d5('0x34')][_0x43d5('0x41')]+'%'};return _0x181d3b;}})});}_0x59ad33=_[_0x43d5('0x43')]({},_0x59ad33,_0x3259a6[_0x43d5('0x44')]);var _0x8f199f={'where':_0x59ad33['where']};return db['Sound']['count'](_0x8f199f)[_0x43d5('0x26')](function(_0x29df61){_0x2e0b94[_0x43d5('0x22')]=_0x29df61;if(_0x3259a6[_0x43d5('0x34')][_0x43d5('0x45')]){_0x59ad33['include']=[{'all':!![]}];}return db[_0x43d5('0x46')][_0x43d5('0x47')](_0x59ad33);})['then'](function(_0xab28b5){_0x2e0b94[_0x43d5('0x48')]=_0xab28b5;return _0x2e0b94;})['then'](respondWithFilteredResult(_0xb53fe6,_0x59ad33))['catch'](handleError(_0xb53fe6,null));};exports['show']=function(_0x3bfe04,_0x9dffdf){var _0x1166ee={'raw':!![],'where':{'id':_0x3bfe04[_0x43d5('0x49')]['id']}},_0x500ade={};_0x500ade[_0x43d5('0x32')]=_[_0x43d5('0x35')](db[_0x43d5('0x46')][_0x43d5('0x2e')]);_0x500ade['query']=_[_0x43d5('0x35')](_0x3bfe04[_0x43d5('0x34')]);_0x500ade[_0x43d5('0x36')]=_[_0x43d5('0x37')](_0x500ade[_0x43d5('0x32')],_0x500ade[_0x43d5('0x34')]);_0x1166ee['attributes']=_[_0x43d5('0x37')](_0x500ade['model'],qs[_0x43d5('0x39')](_0x3bfe04[_0x43d5('0x34')][_0x43d5('0x39')]));_0x1166ee[_0x43d5('0x38')]=_0x1166ee[_0x43d5('0x38')][_0x43d5('0x3a')]?_0x1166ee[_0x43d5('0x38')]:_0x500ade[_0x43d5('0x32')];if(_0x3bfe04[_0x43d5('0x34')]['includeAll']){_0x1166ee[_0x43d5('0x4a')]=[{'all':!![]}];}_0x1166ee=_[_0x43d5('0x43')]({},_0x1166ee,_0x3bfe04[_0x43d5('0x44')]);return db[_0x43d5('0x46')][_0x43d5('0x4b')](_0x1166ee)[_0x43d5('0x26')](handleEntityNotFound(_0x9dffdf,null))[_0x43d5('0x26')](respondWithResult(_0x9dffdf,null))[_0x43d5('0x4c')](handleError(_0x9dffdf,null));};exports[_0x43d5('0x4d')]=function(_0x394a90,_0x2941e9,_0xa2c5c2){return db[_0x43d5('0x46')]['find']({'where':{'id':_0x394a90['params']['id']},'attributes':[_0x43d5('0x2b'),'save_name',_0x43d5('0x4e')],'raw':!![]})[_0x43d5('0x26')](handleEntityNotFound(_0x2941e9,null))[_0x43d5('0x26')](function(_0x160336){if(_0x160336){if(!fs['existsSync'](path[_0x43d5('0x4f')](config[_0x43d5('0x50')],'server/files/sounds/converted',_0x160336[_0x43d5('0x51')]+'.'+_0x160336[_0x43d5('0x4e')]))){throw new db['Sequelize']['ValidationError'](_0x43d5('0x52'));}return _0x2941e9['download'](path['join'](config['root'],_0x43d5('0x53'),util[_0x43d5('0x54')](_0x43d5('0x55'),_0x160336[_0x43d5('0x51')],_0x160336[_0x43d5('0x4e')])),util[_0x43d5('0x54')](_0x43d5('0x55'),_0x160336[_0x43d5('0x2b')],_0x160336['converted_format']));}return null;})[_0x43d5('0x4c')](handleError(_0x2941e9,null));};exports[_0x43d5('0x56')]=function(_0x450dbb,_0x2e0941,_0x2bfe6e){var _0x2c187f={'name':path['basename'](_0x450dbb[_0x43d5('0x57')][_0x43d5('0x58')],path[_0x43d5('0x59')](_0x450dbb[_0x43d5('0x57')]['originalname'])),'save_name':path['basename'](_0x450dbb['file']['filename'],path[_0x43d5('0x59')](_0x450dbb[_0x43d5('0x57')][_0x43d5('0x5a')])),'original_format':path['extname'](_0x450dbb[_0x43d5('0x57')]['originalname'])[_0x43d5('0x5b')](0x1),'converted_format':_0x43d5('0x5c')};var _0xfe4080=path[_0x43d5('0x4f')](config['root'],'server/files/sounds/original',_0x450dbb[_0x43d5('0x57')]['filename']);var _0x100a44=path[_0x43d5('0x4f')](config['root'],_0x43d5('0x53'),util[_0x43d5('0x54')](_0x43d5('0x55'),path[_0x43d5('0x5d')](_0x450dbb[_0x43d5('0x57')]['filename'],path[_0x43d5('0x59')](_0x450dbb[_0x43d5('0x57')][_0x43d5('0x5a')])),_0x2c187f[_0x43d5('0x4e')]));logger[_0x43d5('0x5e')](_0x43d5('0x5f'),_0xfe4080);logger['info'](_0x43d5('0x60'),_0x100a44);try{fs[_0x43d5('0x61')](_0xfe4080,parseInt(_0x43d5('0x62'),0x8));var _0x21b995=sox['transcode'](_0xfe4080,_0x100a44,{'sampleRate':0x1f40,'format':_0x43d5('0x5c'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x21b995['on'](_0x43d5('0x2a'),function(_0x155384){fs[_0x43d5('0x63')](_0xfe4080);_0x2e0941['status'](0x1f4)[_0x43d5('0x2c')](_0x155384);});_0x21b995['on'](_0x43d5('0x64'),function(_0x1de44d){_0x2c187f['original_duration']=isNaN(_0x1de44d[_0x43d5('0x65')])?null:_0x1de44d[_0x43d5('0x65')]*0x3e8;_0x2c187f['original_sampleCount']=isNaN(_0x1de44d['sampleCount'])?null:_0x1de44d[_0x43d5('0x66')];_0x2c187f[_0x43d5('0x67')]=isNaN(_0x1de44d['channelCount'])?null:_0x1de44d['channelCount'];_0x2c187f[_0x43d5('0x68')]=isNaN(_0x1de44d['bitRate'])?null:_0x1de44d[_0x43d5('0x69')];_0x2c187f[_0x43d5('0x6a')]=isNaN(_0x1de44d['sampleRate'])?null:_0x1de44d[_0x43d5('0x6b')];});_0x21b995['on'](_0x43d5('0x6c'),function(_0xc26b3a){_0x2c187f[_0x43d5('0x6d')]=isNaN(_0xc26b3a[_0x43d5('0x65')])?null:_0xc26b3a[_0x43d5('0x65')]*0x3e8;_0x2c187f[_0x43d5('0x6e')]=isNaN(_0xc26b3a[_0x43d5('0x66')])?null:_0xc26b3a['sampleCount'];_0x2c187f[_0x43d5('0x6f')]=isNaN(_0xc26b3a[_0x43d5('0x70')])?null:_0xc26b3a[_0x43d5('0x70')];_0x2c187f[_0x43d5('0x71')]=isNaN(_0xc26b3a[_0x43d5('0x69')])?null:_0xc26b3a[_0x43d5('0x69')];_0x2c187f[_0x43d5('0x72')]=isNaN(_0xc26b3a[_0x43d5('0x6b')])?null:_0xc26b3a[_0x43d5('0x6b')];});_0x21b995['on'](_0x43d5('0x1d'),function(){fs[_0x43d5('0x61')](_0x100a44,parseInt(_0x43d5('0x62'),0x8));return db['Sound'][_0x43d5('0x56')](_0x2c187f)[_0x43d5('0x26')](function(_0x1c3082){var _0x21b2db={'role':_0x450dbb[_0x43d5('0x73')]['role'],'userProfileId':_0x450dbb[_0x43d5('0x73')][_0x43d5('0x74')]};if(!_0x21b2db)throw new Error(_0x43d5('0x75'));if(_0x21b2db[_0x43d5('0x76')]===_0x43d5('0x77')){var _0x3ff174=_0x1c3082['get']({'plain':!![]});return db[_0x43d5('0x78')][_0x43d5('0x4b')]({'where':{'name':_0x43d5('0x27'),'userProfileId':_0x21b2db[_0x43d5('0x74')]},'raw':!![]})[_0x43d5('0x26')](function(_0x3074d6){if(_0x3074d6&&_0x3074d6[_0x43d5('0x79')]===0x0){return db[_0x43d5('0x28')][_0x43d5('0x56')]({'name':_0x3ff174[_0x43d5('0x2b')],'resourceId':_0x3ff174['id'],'type':_0x3074d6[_0x43d5('0x2b')],'sectionId':_0x3074d6['id']},{})[_0x43d5('0x26')](function(){return _0x1c3082;});}else{return _0x1c3082;}})[_0x43d5('0x4c')](function(_0x122764){logger[_0x43d5('0x2a')](_0x43d5('0x7a'),_0x122764);throw _0x122764;});}return _0x1c3082;})[_0x43d5('0x26')](respondWithResult(_0x2e0941,null))[_0x43d5('0x4c')](handleError(_0x2e0941,null));});_0x21b995[_0x43d5('0x7b')]();}catch(_0x59db3e){_0x2e0941['status'](0x1f4)[_0x43d5('0x2c')](_0x59db3e);}};exports[_0x43d5('0x25')]=function(_0x1fe33c,_0xabc4e2,_0x448a59){return db[_0x43d5('0x46')]['find']({'where':{'id':_0x1fe33c[_0x43d5('0x49')]['id']}})[_0x43d5('0x26')](handleEntityNotFound(_0xabc4e2,null))[_0x43d5('0x26')](saveUpdates(_['pick'](_0x1fe33c[_0x43d5('0x73')],['name','description']),null))[_0x43d5('0x26')](respondWithResult(_0xabc4e2,null))['catch'](handleError(_0xabc4e2,null));};exports[_0x43d5('0x7c')]=function(_0x2ecf8e,_0x403582,_0x384bb8){return db[_0x43d5('0x46')][_0x43d5('0x4b')]({'where':{'id':_0x2ecf8e[_0x43d5('0x49')]['id']}})[_0x43d5('0x26')](function(_0x2954af){if(_0x2954af){return _0x2954af[_0x43d5('0x29')]();}})['then'](function(_0x138ce2){var _0x51c265=path[_0x43d5('0x4f')](config['root'],'server/files/sounds/original',util[_0x43d5('0x54')](_0x43d5('0x55'),_0x138ce2[_0x43d5('0x51')],_0x138ce2['original_format']));var _0x2d638e=path[_0x43d5('0x4f')](config[_0x43d5('0x50')],_0x43d5('0x53'),util[_0x43d5('0x54')]('%s.%s',_0x138ce2['save_name'],_0x138ce2[_0x43d5('0x4e')]));fs[_0x43d5('0x63')](_0x51c265);fs[_0x43d5('0x63')](_0x2d638e);return _0x138ce2;})['then'](function(_0x535175){if(_0x535175){return _0x403582[_0x43d5('0x1c')](0xcc)[_0x43d5('0x1d')]();}})[_0x43d5('0x26')](handleEntityNotFound(_0x403582,null))[_0x43d5('0x4c')](handleError(_0x403582,null));};
\ No newline at end of file
+var _0x992c=['src','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','body','role','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','original_format','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','get','Sounds','destroy','error','stack','index','map','Sound','rawAttributes','type','key','model','name','query','keys','filters','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','download','converted_format','existsSync','root','save_name','Sequelize','ValidationError','join','server/files/sounds/converted','format','%s.%s','create','file','originalname','extname','basename','wav','server/files/sounds/original','filename','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','send'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0x992c,0x99));var _0xc992=function(_0x20920f,_0x20c3c8){_0x20920f=_0x20920f-0x0;var _0x1804ca=_0x992c[_0x20920f];return _0x1804ca;};'use strict';var emlformat=require(_0xc992('0x0'));var rimraf=require(_0xc992('0x1'));var zipdir=require(_0xc992('0x2'));var jsonpatch=require(_0xc992('0x3'));var rp=require(_0xc992('0x4'));var moment=require(_0xc992('0x5'));var BPromise=require(_0xc992('0x6'));var Mustache=require(_0xc992('0x7'));var util=require(_0xc992('0x8'));var path=require(_0xc992('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc992('0xa'));var fs=require('fs');var fs_extra=require(_0xc992('0xb'));var _=require('lodash');var squel=require(_0xc992('0xc'));var crypto=require('crypto');var jsforce=require(_0xc992('0xd'));var deskjs=require(_0xc992('0xe'));var toCsv=require('to-csv');var querystring=require(_0xc992('0xf'));var Papa=require(_0xc992('0x10'));var Redis=require('ioredis');var authService=require(_0xc992('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xc992('0x12'));var hardwareService=require(_0xc992('0x13'));var logger=require(_0xc992('0x14'))('api');var utils=require(_0xc992('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc992('0x16'))['db'];function respondWithStatusCode(_0x2d744e,_0xcf03fb){_0xcf03fb=_0xcf03fb||0xcc;return function(_0x299ea1){if(_0x299ea1){return _0x2d744e[_0xc992('0x17')](_0xcf03fb);}return _0x2d744e[_0xc992('0x18')](_0xcf03fb)[_0xc992('0x19')]();};}function respondWithResult(_0x41399c,_0x3c3cc4){_0x3c3cc4=_0x3c3cc4||0xc8;return function(_0x5d048d){if(_0x5d048d){return _0x41399c[_0xc992('0x18')](_0x3c3cc4)[_0xc992('0x1a')](_0x5d048d);}};}function respondWithFilteredResult(_0x5679e1,_0x4b683c){return function(_0x2fd10b){if(_0x2fd10b){var _0x30d0a0=typeof _0x4b683c[_0xc992('0x1b')]===_0xc992('0x1c')&&typeof _0x4b683c[_0xc992('0x1d')]===_0xc992('0x1c');var _0x3bf57d=_0x2fd10b[_0xc992('0x1e')];var _0x2ce9f3=_0x30d0a0?0x0:_0x4b683c[_0xc992('0x1b')];var _0x5e2db1=_0x30d0a0?_0x2fd10b[_0xc992('0x1e')]:_0x4b683c[_0xc992('0x1b')]+_0x4b683c[_0xc992('0x1d')];var _0x4142c0;if(_0x5e2db1>=_0x3bf57d){_0x5e2db1=_0x3bf57d;_0x4142c0=0xc8;}else{_0x4142c0=0xce;}_0x5679e1[_0xc992('0x18')](_0x4142c0);return _0x5679e1[_0xc992('0x1f')](_0xc992('0x20'),_0x2ce9f3+'-'+_0x5e2db1+'/'+_0x3bf57d)['json'](_0x2fd10b);}return null;};}function patchUpdates(_0x4f5358){return function(_0x5b49ff){try{jsonpatch[_0xc992('0x21')](_0x5b49ff,_0x4f5358,!![]);}catch(_0x9f6c45){return BPromise[_0xc992('0x22')](_0x9f6c45);}return _0x5b49ff[_0xc992('0x23')]();};}function saveUpdates(_0x599a0d,_0x5d5b4e){return function(_0x185123){if(_0x185123){return _0x185123['update'](_0x599a0d)[_0xc992('0x24')](function(_0x868cec){return _0x868cec;});}return null;};}function removeEntity(_0x350537,_0x353bbc){return function(_0x36cd3b){if(_0x36cd3b){return _0x36cd3b['destroy']()[_0xc992('0x24')](function(){var _0x3cfdcf=_0x36cd3b[_0xc992('0x25')]({'plain':!![]});var _0x1a9d19=_0xc992('0x26');return db['UserProfileResource'][_0xc992('0x27')]({'where':{'type':_0x1a9d19,'resourceId':_0x3cfdcf['id']}})[_0xc992('0x24')](function(){return _0x36cd3b;});})['then'](function(){_0x350537[_0xc992('0x18')](0xcc)[_0xc992('0x19')]();});}};}function handleEntityNotFound(_0x3bcd8f,_0x30b9a5){return function(_0x3ce6de){if(!_0x3ce6de){_0x3bcd8f[_0xc992('0x17')](0x194);}return _0x3ce6de;};}function handleError(_0x1dedb3,_0x2f685b){_0x2f685b=_0x2f685b||0x1f4;return function(_0x5817c4){logger[_0xc992('0x28')](_0x5817c4[_0xc992('0x29')]);if(_0x5817c4['name']){delete _0x5817c4['name'];}_0x1dedb3[_0xc992('0x18')](_0x2f685b)['send'](_0x5817c4);};}exports[_0xc992('0x2a')]=function(_0x927efd,_0x44a8ef){var _0x2687e9={},_0x3fe666={},_0x419503={'count':0x0,'rows':[]};var _0x4bedac=_[_0xc992('0x2b')](db[_0xc992('0x2c')][_0xc992('0x2d')],function(_0x387095){return{'name':_0x387095['fieldName'],'type':_0x387095[_0xc992('0x2e')][_0xc992('0x2f')]};});_0x3fe666[_0xc992('0x30')]=_['map'](_0x4bedac,_0xc992('0x31'));_0x3fe666[_0xc992('0x32')]=_[_0xc992('0x33')](_0x927efd[_0xc992('0x32')]);_0x3fe666[_0xc992('0x34')]=_['intersection'](_0x3fe666['model'],_0x3fe666[_0xc992('0x32')]);_0x2687e9['attributes']=_['intersection'](_0x3fe666[_0xc992('0x30')],qs[_0xc992('0x35')](_0x927efd[_0xc992('0x32')][_0xc992('0x35')]));_0x2687e9['attributes']=_0x2687e9['attributes'][_0xc992('0x36')]?_0x2687e9[_0xc992('0x37')]:_0x3fe666[_0xc992('0x30')];if(!_0x927efd[_0xc992('0x32')][_0xc992('0x38')](_0xc992('0x39'))){_0x2687e9[_0xc992('0x1d')]=qs[_0xc992('0x1d')](_0x927efd[_0xc992('0x32')]['limit']);_0x2687e9[_0xc992('0x1b')]=qs[_0xc992('0x1b')](_0x927efd[_0xc992('0x32')][_0xc992('0x1b')]);}_0x2687e9[_0xc992('0x3a')]=qs[_0xc992('0x3b')](_0x927efd[_0xc992('0x32')][_0xc992('0x3b')]);_0x2687e9[_0xc992('0x3c')]=qs[_0xc992('0x34')](_[_0xc992('0x3d')](_0x927efd[_0xc992('0x32')],_0x3fe666['filters']),_0x4bedac);if(_0x927efd[_0xc992('0x32')][_0xc992('0x3e')]){_0x2687e9[_0xc992('0x3c')]=_['merge'](_0x2687e9[_0xc992('0x3c')],{'$or':_[_0xc992('0x2b')](_0x4bedac,function(_0x13f3b3){if(_0x13f3b3[_0xc992('0x2e')]!==_0xc992('0x3f')){var _0x1dceb6={};_0x1dceb6[_0x13f3b3[_0xc992('0x31')]]={'$like':'%'+_0x927efd[_0xc992('0x32')][_0xc992('0x3e')]+'%'};return _0x1dceb6;}})});}_0x2687e9=_[_0xc992('0x40')]({},_0x2687e9,_0x927efd[_0xc992('0x41')]);var _0x49e3c6={'where':_0x2687e9['where']};return db['Sound'][_0xc992('0x1e')](_0x49e3c6)[_0xc992('0x24')](function(_0x4efa43){_0x419503[_0xc992('0x1e')]=_0x4efa43;if(_0x927efd['query'][_0xc992('0x42')]){_0x2687e9[_0xc992('0x43')]=[{'all':!![]}];}return db[_0xc992('0x2c')][_0xc992('0x44')](_0x2687e9);})[_0xc992('0x24')](function(_0x2a090c){_0x419503[_0xc992('0x45')]=_0x2a090c;return _0x419503;})['then'](respondWithFilteredResult(_0x44a8ef,_0x2687e9))[_0xc992('0x46')](handleError(_0x44a8ef,null));};exports[_0xc992('0x47')]=function(_0xa0c7d3,_0x13c8ad){var _0x282b67={'raw':!![],'where':{'id':_0xa0c7d3[_0xc992('0x48')]['id']}},_0x180879={};_0x180879[_0xc992('0x30')]=_[_0xc992('0x33')](db[_0xc992('0x2c')][_0xc992('0x2d')]);_0x180879[_0xc992('0x32')]=_[_0xc992('0x33')](_0xa0c7d3[_0xc992('0x32')]);_0x180879[_0xc992('0x34')]=_[_0xc992('0x49')](_0x180879[_0xc992('0x30')],_0x180879[_0xc992('0x32')]);_0x282b67[_0xc992('0x37')]=_[_0xc992('0x49')](_0x180879[_0xc992('0x30')],qs['fields'](_0xa0c7d3['query'][_0xc992('0x35')]));_0x282b67[_0xc992('0x37')]=_0x282b67[_0xc992('0x37')][_0xc992('0x36')]?_0x282b67['attributes']:_0x180879[_0xc992('0x30')];if(_0xa0c7d3[_0xc992('0x32')][_0xc992('0x42')]){_0x282b67[_0xc992('0x43')]=[{'all':!![]}];}_0x282b67=_['merge']({},_0x282b67,_0xa0c7d3[_0xc992('0x41')]);return db['Sound'][_0xc992('0x4a')](_0x282b67)[_0xc992('0x24')](handleEntityNotFound(_0x13c8ad,null))[_0xc992('0x24')](respondWithResult(_0x13c8ad,null))['catch'](handleError(_0x13c8ad,null));};exports[_0xc992('0x4b')]=function(_0x3752b9,_0x59a798,_0x589a7b){return db[_0xc992('0x2c')]['find']({'where':{'id':_0x3752b9[_0xc992('0x48')]['id']},'attributes':[_0xc992('0x31'),'save_name',_0xc992('0x4c')],'raw':!![]})[_0xc992('0x24')](handleEntityNotFound(_0x59a798,null))[_0xc992('0x24')](function(_0xc28d91){if(_0xc28d91){if(!fs[_0xc992('0x4d')](path['join'](config[_0xc992('0x4e')],'server/files/sounds/converted',_0xc28d91[_0xc992('0x4f')]+'.'+_0xc28d91[_0xc992('0x4c')]))){throw new db[(_0xc992('0x50'))][(_0xc992('0x51'))]('Sound\x20not\x20found');}return _0x59a798[_0xc992('0x4b')](path[_0xc992('0x52')](config[_0xc992('0x4e')],_0xc992('0x53'),util[_0xc992('0x54')]('%s.%s',_0xc28d91['save_name'],_0xc28d91[_0xc992('0x4c')])),util[_0xc992('0x54')](_0xc992('0x55'),_0xc28d91['name'],_0xc28d91[_0xc992('0x4c')]));}return null;})[_0xc992('0x46')](handleError(_0x59a798,null));};exports[_0xc992('0x56')]=function(_0x37d7ea,_0x2f9c61,_0x25bc90){var _0xd68112={'name':path['basename'](_0x37d7ea[_0xc992('0x57')][_0xc992('0x58')],path[_0xc992('0x59')](_0x37d7ea[_0xc992('0x57')][_0xc992('0x58')])),'save_name':path[_0xc992('0x5a')](_0x37d7ea[_0xc992('0x57')]['filename'],path[_0xc992('0x59')](_0x37d7ea['file']['filename'])),'original_format':path['extname'](_0x37d7ea[_0xc992('0x57')][_0xc992('0x58')])['substring'](0x1),'converted_format':_0xc992('0x5b')};var _0x5ec196=path[_0xc992('0x52')](config['root'],_0xc992('0x5c'),_0x37d7ea[_0xc992('0x57')][_0xc992('0x5d')]);var _0x327e57=path[_0xc992('0x52')](config[_0xc992('0x4e')],_0xc992('0x53'),util['format'](_0xc992('0x55'),path[_0xc992('0x5a')](_0x37d7ea[_0xc992('0x57')][_0xc992('0x5d')],path[_0xc992('0x59')](_0x37d7ea[_0xc992('0x57')][_0xc992('0x5d')])),_0xd68112['converted_format']));logger[_0xc992('0x5e')](_0xc992('0x5f'),_0x5ec196);logger[_0xc992('0x5e')](_0xc992('0x60'),_0x327e57);try{fs[_0xc992('0x61')](_0x5ec196,parseInt(_0xc992('0x62'),0x8));var _0x3261c4=sox[_0xc992('0x63')](_0x5ec196,_0x327e57,{'sampleRate':0x1f40,'format':_0xc992('0x5b'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3261c4['on'](_0xc992('0x28'),function(_0x332e7a){fs['unlinkSync'](_0x5ec196);_0x2f9c61['status'](0x1f4)[_0xc992('0x64')](_0x332e7a);});_0x3261c4['on'](_0xc992('0x65'),function(_0x3c7f96){_0xd68112['original_duration']=isNaN(_0x3c7f96[_0xc992('0x66')])?null:_0x3c7f96['duration']*0x3e8;_0xd68112[_0xc992('0x67')]=isNaN(_0x3c7f96[_0xc992('0x68')])?null:_0x3c7f96[_0xc992('0x68')];_0xd68112[_0xc992('0x69')]=isNaN(_0x3c7f96[_0xc992('0x6a')])?null:_0x3c7f96[_0xc992('0x6a')];_0xd68112[_0xc992('0x6b')]=isNaN(_0x3c7f96[_0xc992('0x6c')])?null:_0x3c7f96[_0xc992('0x6c')];_0xd68112[_0xc992('0x6d')]=isNaN(_0x3c7f96[_0xc992('0x6e')])?null:_0x3c7f96['sampleRate'];});_0x3261c4['on'](_0xc992('0x6f'),function(_0x489227){_0xd68112[_0xc992('0x70')]=isNaN(_0x489227[_0xc992('0x66')])?null:_0x489227[_0xc992('0x66')]*0x3e8;_0xd68112[_0xc992('0x71')]=isNaN(_0x489227[_0xc992('0x68')])?null:_0x489227[_0xc992('0x68')];_0xd68112[_0xc992('0x72')]=isNaN(_0x489227[_0xc992('0x6a')])?null:_0x489227[_0xc992('0x6a')];_0xd68112[_0xc992('0x73')]=isNaN(_0x489227[_0xc992('0x6c')])?null:_0x489227[_0xc992('0x6c')];_0xd68112['converted_sampleRate']=isNaN(_0x489227['sampleRate'])?null:_0x489227[_0xc992('0x6e')];});_0x3261c4['on'](_0xc992('0x19'),function(){fs[_0xc992('0x61')](_0x327e57,parseInt(_0xc992('0x62'),0x8));return db[_0xc992('0x2c')]['create'](_0xd68112)['then'](function(_0x2a49ec){var _0x514fe7={'role':_0x37d7ea[_0xc992('0x74')][_0xc992('0x75')],'userProfileId':_0x37d7ea[_0xc992('0x74')]['userProfileId']};if(!_0x514fe7)throw new Error(_0xc992('0x76'));if(_0x514fe7[_0xc992('0x75')]===_0xc992('0x77')){var _0x1d2491=_0x2a49ec['get']({'plain':!![]});return db[_0xc992('0x78')][_0xc992('0x4a')]({'where':{'name':_0xc992('0x26'),'userProfileId':_0x514fe7['userProfileId']},'raw':!![]})['then'](function(_0x253f74){if(_0x253f74&&_0x253f74[_0xc992('0x79')]===0x0){return db[_0xc992('0x7a')]['create']({'name':_0x1d2491[_0xc992('0x31')],'resourceId':_0x1d2491['id'],'type':_0x253f74['name'],'sectionId':_0x253f74['id']},{})[_0xc992('0x24')](function(){return _0x2a49ec;});}else{return _0x2a49ec;}})[_0xc992('0x46')](function(_0x543e4a){logger[_0xc992('0x28')](_0xc992('0x7b'),_0x543e4a);throw _0x543e4a;});}return _0x2a49ec;})[_0xc992('0x24')](respondWithResult(_0x2f9c61,null))[_0xc992('0x46')](handleError(_0x2f9c61,null));});_0x3261c4[_0xc992('0x7c')]();}catch(_0x10a189){_0x2f9c61[_0xc992('0x18')](0x1f4)['send'](_0x10a189);}};exports['update']=function(_0x2c6692,_0x23cfe1,_0x2fc5db){return db['Sound'][_0xc992('0x4a')]({'where':{'id':_0x2c6692[_0xc992('0x48')]['id']}})['then'](handleEntityNotFound(_0x23cfe1,null))[_0xc992('0x24')](saveUpdates(_[_0xc992('0x3d')](_0x2c6692[_0xc992('0x74')],['name','description']),null))[_0xc992('0x24')](respondWithResult(_0x23cfe1,null))[_0xc992('0x46')](handleError(_0x23cfe1,null));};exports['delete']=function(_0x31709f,_0x1c7a78,_0x1157ab){return db[_0xc992('0x2c')][_0xc992('0x4a')]({'where':{'id':_0x31709f[_0xc992('0x48')]['id']}})['then'](function(_0x7dc70){if(_0x7dc70){return _0x7dc70[_0xc992('0x27')]();}})[_0xc992('0x24')](function(_0x105ba0){var _0x3c3c1f=path[_0xc992('0x52')](config['root'],_0xc992('0x5c'),util[_0xc992('0x54')]('%s.%s',_0x105ba0[_0xc992('0x4f')],_0x105ba0[_0xc992('0x7d')]));var _0x170926=path['join'](config['root'],_0xc992('0x53'),util['format']('%s.%s',_0x105ba0['save_name'],_0x105ba0[_0xc992('0x4c')]));fs[_0xc992('0x7e')](_0x3c3c1f);fs[_0xc992('0x7e')](_0x170926);return _0x105ba0;})[_0xc992('0x24')](function(_0x4de4de){if(_0x4de4de){return _0x1c7a78['status'](0xcc)[_0xc992('0x19')]();}})['then'](handleEntityNotFound(_0x1c7a78,null))[_0xc992('0x46')](handleError(_0x1c7a78,null));};
\ No newline at end of file
index 8b9abf8..6e3de1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac6b=['./sound.attributes','define','tools_sounds','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xac6b,0xab));var _0xbac6=function(_0x29314d,_0x538a65){_0x29314d=_0x29314d-0x0;var _0x10b540=_0xac6b[_0x29314d];return _0x10b540;};'use strict';var _=require(_0xbac6('0x0'));var util=require(_0xbac6('0x1'));var logger=require(_0xbac6('0x2'))(_0xbac6('0x3'));var moment=require(_0xbac6('0x4'));var BPromise=require('bluebird');var rp=require(_0xbac6('0x5'));var fs=require('fs');var path=require(_0xbac6('0x6'));var rimraf=require(_0xbac6('0x7'));var config=require(_0xbac6('0x8'));var attributes=require(_0xbac6('0x9'));module['exports']=function(_0x283f57,_0x39d0a7){return _0x283f57[_0xbac6('0xa')]('Sound',attributes,{'tableName':_0xbac6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6795=['path','rimraf','exports','define','Sound','tools_sounds','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x396b3f,_0x2a2c16){var _0x3b9907=function(_0x2b4394){while(--_0x2b4394){_0x396b3f['push'](_0x396b3f['shift']());}};_0x3b9907(++_0x2a2c16);}(_0x6795,0x95));var _0x5679=function(_0xe09733,_0x584a43){_0xe09733=_0xe09733-0x0;var _0x2aa162=_0x6795[_0xe09733];return _0x2aa162;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5679('0x0'))(_0x5679('0x1'));var moment=require(_0x5679('0x2'));var BPromise=require(_0x5679('0x3'));var rp=require(_0x5679('0x4'));var fs=require('fs');var path=require(_0x5679('0x5'));var rimraf=require(_0x5679('0x6'));var config=require('../../config/environment');var attributes=require('./sound.attributes');module[_0x5679('0x7')]=function(_0x3cbc35,_0x2af6b1){return _0x3cbc35[_0x5679('0x8')](_0x5679('0x9'),attributes,{'tableName':_0x5679('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cad2fd5..088c108 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93f1=['then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','ShowSound','options','raw','attributes','include','model','map','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x53532b,_0x38e675){var _0x5a6f64=function(_0xa805e1){while(--_0xa805e1){_0x53532b['push'](_0x53532b['shift']());}};_0x5a6f64(++_0x38e675);}(_0x93f1,0x133));var _0x193f=function(_0x124098,_0x143963){_0x124098=_0x124098-0x0;var _0x41d3d4=_0x93f1[_0x124098];return _0x41d3d4;};'use strict';var _=require(_0x193f('0x0'));var util=require(_0x193f('0x1'));var moment=require(_0x193f('0x2'));var BPromise=require(_0x193f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x193f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x193f('0x5'))(_0x193f('0x6'));var config=require(_0x193f('0x7'));var jayson=require(_0x193f('0x8'));var client=jayson[_0x193f('0x9')][_0x193f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x24afef,_0x56dd2c,_0x30d57e){return new BPromise(function(_0xffdf93,_0x764aaf){return client[_0x193f('0xb')](_0x24afef,_0x30d57e)[_0x193f('0xc')](function(_0x496408){logger[_0x193f('0xd')](_0x193f('0xe'),_0x56dd2c,_0x193f('0xf'));logger[_0x193f('0x10')]('Sound,\x20%s,\x20%s,\x20%s',_0x56dd2c,_0x193f('0xf'),JSON[_0x193f('0x11')](_0x496408));if(_0x496408[_0x193f('0x12')]){if(_0x496408[_0x193f('0x12')][_0x193f('0x13')]===0x1f4){logger['error'](_0x193f('0xe'),_0x56dd2c,_0x496408[_0x193f('0x12')]['message']);return _0x764aaf(_0x496408[_0x193f('0x12')]['message']);}logger[_0x193f('0x12')]('Sound,\x20%s,\x20%s',_0x56dd2c,_0x496408[_0x193f('0x12')][_0x193f('0x14')]);return _0xffdf93(_0x496408['error'][_0x193f('0x14')]);}else{logger[_0x193f('0xd')](_0x193f('0xe'),_0x56dd2c,_0x193f('0xf'));_0xffdf93(_0x496408['result'][_0x193f('0x14')]);}})[_0x193f('0x15')](function(_0x3973d7){logger[_0x193f('0x12')](_0x193f('0xe'),_0x56dd2c,_0x3973d7);_0x764aaf(_0x3973d7);});});}exports[_0x193f('0x16')]=function(_0x76deec){var _0x5713d3=this;return new Promise(function(_0x5db1d9,_0x138af3){return db['Sound']['find']({'raw':_0x76deec[_0x193f('0x17')]?_0x76deec[_0x193f('0x17')][_0x193f('0x18')]===undefined?!![]:![]:!![],'where':_0x76deec[_0x193f('0x17')]?_0x76deec['options']['where']||null:null,'attributes':_0x76deec[_0x193f('0x17')]?_0x76deec[_0x193f('0x17')][_0x193f('0x19')]||null:null,'include':_0x76deec[_0x193f('0x17')]?_0x76deec[_0x193f('0x17')][_0x193f('0x1a')]?_['map'](_0x76deec[_0x193f('0x17')][_0x193f('0x1a')],function(_0x1f4024){return{'model':db[_0x1f4024[_0x193f('0x1b')]],'as':_0x1f4024['as'],'attributes':_0x1f4024[_0x193f('0x19')],'include':_0x1f4024[_0x193f('0x1a')]?_['map'](_0x1f4024[_0x193f('0x1a')],function(_0x32fb36){return{'model':db[_0x32fb36[_0x193f('0x1b')]],'as':_0x32fb36['as'],'attributes':_0x32fb36[_0x193f('0x19')],'include':_0x32fb36[_0x193f('0x1a')]?_[_0x193f('0x1c')](_0x32fb36[_0x193f('0x1a')],function(_0x34d906){return{'model':db[_0x34d906[_0x193f('0x1b')]],'as':_0x34d906['as'],'attributes':_0x34d906[_0x193f('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1c6eea){logger[_0x193f('0xd')](_0x193f('0x16'),_0x76deec);logger[_0x193f('0x10')](_0x193f('0x16'),_0x76deec,JSON[_0x193f('0x11')](_0x1c6eea));_0x5db1d9(_0x1c6eea);})[_0x193f('0x15')](function(_0x1839e4){logger[_0x193f('0x12')](_0x193f('0x16'),_0x1839e4[_0x193f('0x14')],_0x76deec);_0x138af3(_0x5713d3['error'](0x1f4,_0x1839e4[_0x193f('0x14')]));});});};
\ No newline at end of file
+var _0x3431=['catch','ShowSound','Sound','find','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x5416db,_0x55683a){var _0x243e35=function(_0x1eb623){while(--_0x1eb623){_0x5416db['push'](_0x5416db['shift']());}};_0x243e35(++_0x55683a);}(_0x3431,0x74));var _0x1343=function(_0x507ac5,_0x33aaee){_0x507ac5=_0x507ac5-0x0;var _0x12c1bc=_0x3431[_0x507ac5];return _0x12c1bc;};'use strict';var _=require(_0x1343('0x0'));var util=require(_0x1343('0x1'));var moment=require(_0x1343('0x2'));var BPromise=require(_0x1343('0x3'));var rs=require(_0x1343('0x4'));var fs=require('fs');var Redis=require(_0x1343('0x5'));var db=require(_0x1343('0x6'))['db'];var utils=require(_0x1343('0x7'));var logger=require('../../config/logger')(_0x1343('0x8'));var config=require('../../config/environment');var jayson=require(_0x1343('0x9'));var client=jayson[_0x1343('0xa')][_0x1343('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x56226d,_0x1597b3,_0x3abd65){return new BPromise(function(_0x1bd5d0,_0x3278b4){return client[_0x1343('0xc')](_0x56226d,_0x3abd65)[_0x1343('0xd')](function(_0x1ff5d7){logger[_0x1343('0xe')](_0x1343('0xf'),_0x1597b3,_0x1343('0x10'));logger[_0x1343('0x11')](_0x1343('0x12'),_0x1597b3,_0x1343('0x10'),JSON[_0x1343('0x13')](_0x1ff5d7));if(_0x1ff5d7[_0x1343('0x14')]){if(_0x1ff5d7[_0x1343('0x14')][_0x1343('0x15')]===0x1f4){logger[_0x1343('0x14')](_0x1343('0xf'),_0x1597b3,_0x1ff5d7[_0x1343('0x14')][_0x1343('0x16')]);return _0x3278b4(_0x1ff5d7[_0x1343('0x14')][_0x1343('0x16')]);}logger['error']('Sound,\x20%s,\x20%s',_0x1597b3,_0x1ff5d7[_0x1343('0x14')][_0x1343('0x16')]);return _0x1bd5d0(_0x1ff5d7[_0x1343('0x14')][_0x1343('0x16')]);}else{logger[_0x1343('0xe')](_0x1343('0xf'),_0x1597b3,_0x1343('0x10'));_0x1bd5d0(_0x1ff5d7[_0x1343('0x17')][_0x1343('0x16')]);}})[_0x1343('0x18')](function(_0x37bb2b){logger['error'](_0x1343('0xf'),_0x1597b3,_0x37bb2b);_0x3278b4(_0x37bb2b);});});}exports[_0x1343('0x19')]=function(_0x174db2){var _0xc2a39a=this;return new Promise(function(_0x419fca,_0xf2984){return db[_0x1343('0x1a')][_0x1343('0x1b')]({'raw':_0x174db2[_0x1343('0x1c')]?_0x174db2[_0x1343('0x1c')][_0x1343('0x1d')]===undefined?!![]:![]:!![],'where':_0x174db2[_0x1343('0x1c')]?_0x174db2[_0x1343('0x1c')][_0x1343('0x1e')]||null:null,'attributes':_0x174db2[_0x1343('0x1c')]?_0x174db2[_0x1343('0x1c')][_0x1343('0x1f')]||null:null,'include':_0x174db2['options']?_0x174db2[_0x1343('0x1c')][_0x1343('0x20')]?_[_0x1343('0x21')](_0x174db2[_0x1343('0x1c')][_0x1343('0x20')],function(_0x1af9cd){return{'model':db[_0x1af9cd[_0x1343('0x22')]],'as':_0x1af9cd['as'],'attributes':_0x1af9cd[_0x1343('0x1f')],'include':_0x1af9cd[_0x1343('0x20')]?_[_0x1343('0x21')](_0x1af9cd[_0x1343('0x20')],function(_0x5dd60d){return{'model':db[_0x5dd60d[_0x1343('0x22')]],'as':_0x5dd60d['as'],'attributes':_0x5dd60d[_0x1343('0x1f')],'include':_0x5dd60d[_0x1343('0x20')]?_[_0x1343('0x21')](_0x5dd60d[_0x1343('0x20')],function(_0x559937){return{'model':db[_0x559937[_0x1343('0x22')]],'as':_0x559937['as'],'attributes':_0x559937[_0x1343('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x1343('0xd')](function(_0x459c2f){logger['info']('ShowSound',_0x174db2);logger[_0x1343('0x11')](_0x1343('0x19'),_0x174db2,JSON[_0x1343('0x13')](_0x459c2f));_0x419fca(_0x459c2f);})[_0x1343('0x18')](function(_0x3f8f32){logger[_0x1343('0x14')](_0x1343('0x19'),_0x3f8f32[_0x1343('0x16')],_0x174db2);_0xf2984(_0xc2a39a[_0x1343('0x14')](0x1f4,_0x3f8f32[_0x1343('0x16')]));});});};
\ No newline at end of file
index 5c46573..430b8ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['destroy','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','index','isAuthenticated','show','post','create','/:id','update','delete'];(function(_0x2b10e0,_0x3c15a2){var _0x195046=function(_0x1ed4ea){while(--_0x1ed4ea){_0x2b10e0['push'](_0x2b10e0['shift']());}};_0x195046(++_0x3c15a2);}(_0x757a,0xde));var _0xa757=function(_0x3ac402,_0x352932){_0x3ac402=_0x3ac402-0x0;var _0x927620=_0x757a[_0x3ac402];return _0x927620;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0xb')]('/',auth[_0xa757('0x9')](),controller[_0xa757('0xc')]);router['put'](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0xe')]);router[_0xa757('0xf')](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0x10')]);module['exports']=router;
\ No newline at end of file
+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(_0x344ccc,_0x526941){var _0x2285e3=function(_0x451e21){while(--_0x451e21){_0x344ccc['push'](_0x344ccc['shift']());}};_0x2285e3(++_0x526941);}(_0xb10b,0x12a));var _0xbb10=function(_0x53a6c0,_0x53df9a){_0x53a6c0=_0x53a6c0-0x0;var _0x30c452=_0xb10b[_0x53a6c0];return _0x30c452;};'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 8e12226..65d62c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f31=['TEXT','medium','ENUM','out','exports','STRING'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x9f31,0xdc));var _0x19f3=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0x9f31[_0x4b2436];return _0x4f5ab2;};'use strict';var Sequelize=require('sequelize');module[_0x19f3('0x0')]={'uniqueid':{'type':Sequelize[_0x19f3('0x1')]},'body':{'type':Sequelize[_0x19f3('0x2')](_0x19f3('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x19f3('0x4')]('in','out'),'defaultValue':_0x19f3('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0x19f3('0x1')]},'providerResponse':{'type':Sequelize[_0x19f3('0x2')]}};
\ No newline at end of file
+var _0xa4a9=['medium','out','STRING','TEXT','sequelize','exports'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0xa4a9,0xb2));var _0x9a4a=function(_0xd2d54,_0x5329f7){_0xd2d54=_0xd2d54-0x0;var _0x78b113=_0xa4a9[_0xd2d54];return _0x78b113;};'use strict';var Sequelize=require(_0x9a4a('0x0'));module[_0x9a4a('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize['TEXT'](_0x9a4a('0x2')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in',_0x9a4a('0x3')),'defaultValue':_0x9a4a('0x3'),'allowNull':![]},'providerName':{'type':Sequelize[_0x9a4a('0x4')]},'providerResponse':{'type':Sequelize[_0x9a4a('0x5')]}};
\ No newline at end of file
index 5f4dfac..550730a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d0c=['squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','name','send','map','SquareMessage','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','fs-extra','lodash'];(function(_0x3c5f8d,_0x39891f){var _0x3b7beb=function(_0x44d6c9){while(--_0x44d6c9){_0x3c5f8d['push'](_0x3c5f8d['shift']());}};_0x3b7beb(++_0x39891f);}(_0x6d0c,0x8c));var _0xc6d0=function(_0x50368e,_0x466c09){_0x50368e=_0x50368e-0x0;var _0x4a65cd=_0x6d0c[_0x50368e];return _0x4a65cd;};'use strict';var emlformat=require(_0xc6d0('0x0'));var rimraf=require(_0xc6d0('0x1'));var zipdir=require(_0xc6d0('0x2'));var jsonpatch=require(_0xc6d0('0x3'));var rp=require(_0xc6d0('0x4'));var moment=require(_0xc6d0('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc6d0('0x6'));var util=require('util');var path=require('path');var sox=require(_0xc6d0('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc6d0('0x8'));var _=require(_0xc6d0('0x9'));var squel=require(_0xc6d0('0xa'));var crypto=require(_0xc6d0('0xb'));var jsforce=require(_0xc6d0('0xc'));var deskjs=require(_0xc6d0('0xd'));var toCsv=require(_0xc6d0('0xe'));var querystring=require(_0xc6d0('0xf'));var Papa=require(_0xc6d0('0x10'));var Redis=require(_0xc6d0('0x11'));var authService=require(_0xc6d0('0x12'));var qs=require(_0xc6d0('0x13'));var as=require(_0xc6d0('0x14'));var hardwareService=require(_0xc6d0('0x15'));var logger=require(_0xc6d0('0x16'))(_0xc6d0('0x17'));var utils=require(_0xc6d0('0x18'));var config=require(_0xc6d0('0x19'));var licenseUtil=require(_0xc6d0('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x562ae9,_0x170c38){_0x170c38=_0x170c38||0xcc;return function(_0x3b3a05){if(_0x3b3a05){return _0x562ae9['sendStatus'](_0x170c38);}return _0x562ae9[_0xc6d0('0x1b')](_0x170c38)[_0xc6d0('0x1c')]();};}function respondWithResult(_0x16170e,_0x58393c){_0x58393c=_0x58393c||0xc8;return function(_0x5c4521){if(_0x5c4521){return _0x16170e[_0xc6d0('0x1b')](_0x58393c)[_0xc6d0('0x1d')](_0x5c4521);}};}function respondWithFilteredResult(_0x17afb5,_0x501260){return function(_0x2e1ba2){if(_0x2e1ba2){var _0x49ef8e=typeof _0x501260[_0xc6d0('0x1e')]===_0xc6d0('0x1f')&&typeof _0x501260[_0xc6d0('0x20')]===_0xc6d0('0x1f');var _0x3acff1=_0x2e1ba2['count'];var _0x4b178c=_0x49ef8e?0x0:_0x501260['offset'];var _0x1fa160=_0x49ef8e?_0x2e1ba2[_0xc6d0('0x21')]:_0x501260[_0xc6d0('0x1e')]+_0x501260['limit'];var _0x278552;if(_0x1fa160>=_0x3acff1){_0x1fa160=_0x3acff1;_0x278552=0xc8;}else{_0x278552=0xce;}_0x17afb5['status'](_0x278552);return _0x17afb5['set'](_0xc6d0('0x22'),_0x4b178c+'-'+_0x1fa160+'/'+_0x3acff1)[_0xc6d0('0x1d')](_0x2e1ba2);}return null;};}function patchUpdates(_0x2121f2){return function(_0x42d2d7){try{jsonpatch[_0xc6d0('0x23')](_0x42d2d7,_0x2121f2,!![]);}catch(_0x7a0604){return BPromise[_0xc6d0('0x24')](_0x7a0604);}return _0x42d2d7[_0xc6d0('0x25')]();};}function saveUpdates(_0x4e88b2,_0x411faa){return function(_0x2fbbd9){if(_0x2fbbd9){return _0x2fbbd9[_0xc6d0('0x26')](_0x4e88b2)[_0xc6d0('0x27')](function(_0x4b48f3){return _0x4b48f3;});}return null;};}function removeEntity(_0x5e7a68,_0x321a97){return function(_0x55b44d){if(_0x55b44d){return _0x55b44d[_0xc6d0('0x28')]()[_0xc6d0('0x27')](function(){_0x5e7a68[_0xc6d0('0x1b')](0xcc)[_0xc6d0('0x1c')]();});}};}function handleEntityNotFound(_0x2cc17e,_0x47182b){return function(_0x420cf4){if(!_0x420cf4){_0x2cc17e[_0xc6d0('0x29')](0x194);}return _0x420cf4;};}function handleError(_0x345c58,_0x1126fa){_0x1126fa=_0x1126fa||0x1f4;return function(_0x2bb7a8){logger['error'](_0x2bb7a8['stack']);if(_0x2bb7a8[_0xc6d0('0x2a')]){delete _0x2bb7a8[_0xc6d0('0x2a')];}_0x345c58[_0xc6d0('0x1b')](_0x1126fa)[_0xc6d0('0x2b')](_0x2bb7a8);};}exports['index']=function(_0xa457fa,_0x4720d7){var _0x1e2a03={},_0x3dcc61={},_0x6d0d94={'count':0x0,'rows':[]};var _0x4b7013=_[_0xc6d0('0x2c')](db[_0xc6d0('0x2d')][_0xc6d0('0x2e')],function(_0x8463ab){return{'name':_0x8463ab[_0xc6d0('0x2f')],'type':_0x8463ab[_0xc6d0('0x30')]['key']};});_0x3dcc61[_0xc6d0('0x31')]=_[_0xc6d0('0x2c')](_0x4b7013,_0xc6d0('0x2a'));_0x3dcc61[_0xc6d0('0x32')]=_[_0xc6d0('0x33')](_0xa457fa['query']);_0x3dcc61['filters']=_[_0xc6d0('0x34')](_0x3dcc61[_0xc6d0('0x31')],_0x3dcc61['query']);_0x1e2a03[_0xc6d0('0x35')]=_[_0xc6d0('0x34')](_0x3dcc61[_0xc6d0('0x31')],qs[_0xc6d0('0x36')](_0xa457fa[_0xc6d0('0x32')][_0xc6d0('0x36')]));_0x1e2a03['attributes']=_0x1e2a03[_0xc6d0('0x35')]['length']?_0x1e2a03['attributes']:_0x3dcc61[_0xc6d0('0x31')];if(!_0xa457fa[_0xc6d0('0x32')][_0xc6d0('0x37')]('nolimit')){_0x1e2a03['limit']=qs[_0xc6d0('0x20')](_0xa457fa[_0xc6d0('0x32')]['limit']);_0x1e2a03['offset']=qs[_0xc6d0('0x1e')](_0xa457fa[_0xc6d0('0x32')]['offset']);}_0x1e2a03[_0xc6d0('0x38')]=qs[_0xc6d0('0x39')](_0xa457fa[_0xc6d0('0x32')]['sort']);_0x1e2a03['where']=qs[_0xc6d0('0x3a')](_[_0xc6d0('0x3b')](_0xa457fa[_0xc6d0('0x32')],_0x3dcc61['filters']),_0x4b7013);if(_0xa457fa['query']['filter']){_0x1e2a03[_0xc6d0('0x3c')]=_[_0xc6d0('0x3d')](_0x1e2a03[_0xc6d0('0x3c')],{'$or':_['map'](_0x4b7013,function(_0x50a30e){if(_0x50a30e[_0xc6d0('0x30')]!==_0xc6d0('0x3e')){var _0xcd19fa={};_0xcd19fa[_0x50a30e['name']]={'$like':'%'+_0xa457fa[_0xc6d0('0x32')][_0xc6d0('0x3f')]+'%'};return _0xcd19fa;}})});}_0x1e2a03=_['merge']({},_0x1e2a03,_0xa457fa[_0xc6d0('0x40')]);var _0x1d812f={'where':_0x1e2a03[_0xc6d0('0x3c')]};return db[_0xc6d0('0x2d')][_0xc6d0('0x21')](_0x1d812f)['then'](function(_0x3718c0){_0x6d0d94[_0xc6d0('0x21')]=_0x3718c0;if(_0xa457fa['query'][_0xc6d0('0x41')]){_0x1e2a03[_0xc6d0('0x42')]=[{'all':!![]}];}return db[_0xc6d0('0x2d')][_0xc6d0('0x43')](_0x1e2a03);})['then'](function(_0x4a3cd8){_0x6d0d94[_0xc6d0('0x44')]=_0x4a3cd8;return _0x6d0d94;})[_0xc6d0('0x27')](respondWithFilteredResult(_0x4720d7,_0x1e2a03))[_0xc6d0('0x45')](handleError(_0x4720d7,null));};exports[_0xc6d0('0x46')]=function(_0x2e7c85,_0x1d4962){var _0x5776bf={'raw':!![],'where':{'id':_0x2e7c85[_0xc6d0('0x47')]['id']}},_0x3c54fc={};_0x3c54fc[_0xc6d0('0x31')]=_[_0xc6d0('0x33')](db['SquareMessage'][_0xc6d0('0x2e')]);_0x3c54fc['query']=_[_0xc6d0('0x33')](_0x2e7c85['query']);_0x3c54fc[_0xc6d0('0x3a')]=_[_0xc6d0('0x34')](_0x3c54fc[_0xc6d0('0x31')],_0x3c54fc[_0xc6d0('0x32')]);_0x5776bf['attributes']=_[_0xc6d0('0x34')](_0x3c54fc['model'],qs[_0xc6d0('0x36')](_0x2e7c85['query'][_0xc6d0('0x36')]));_0x5776bf[_0xc6d0('0x35')]=_0x5776bf[_0xc6d0('0x35')]['length']?_0x5776bf[_0xc6d0('0x35')]:_0x3c54fc[_0xc6d0('0x31')];if(_0x2e7c85[_0xc6d0('0x32')][_0xc6d0('0x41')]){_0x5776bf['include']=[{'all':!![]}];}_0x5776bf=_[_0xc6d0('0x3d')]({},_0x5776bf,_0x2e7c85[_0xc6d0('0x40')]);return db[_0xc6d0('0x2d')][_0xc6d0('0x48')](_0x5776bf)['then'](handleEntityNotFound(_0x1d4962,null))['then'](respondWithResult(_0x1d4962,null))['catch'](handleError(_0x1d4962,null));};exports[_0xc6d0('0x49')]=function(_0x45f786,_0x1f7320){return db['SquareMessage'][_0xc6d0('0x49')](_0x45f786[_0xc6d0('0x4a')],{})[_0xc6d0('0x27')](respondWithResult(_0x1f7320,0xc9))[_0xc6d0('0x45')](handleError(_0x1f7320,null));};exports['update']=function(_0x530472,_0x47ec13){if(_0x530472[_0xc6d0('0x4a')]['id']){delete _0x530472['body']['id'];}return db['SquareMessage'][_0xc6d0('0x48')]({'where':{'id':_0x530472[_0xc6d0('0x47')]['id']}})['then'](handleEntityNotFound(_0x47ec13,null))['then'](saveUpdates(_0x530472['body'],null))['then'](respondWithResult(_0x47ec13,null))[_0xc6d0('0x45')](handleError(_0x47ec13,null));};exports['destroy']=function(_0x234783,_0x212ce8){return db[_0xc6d0('0x2d')][_0xc6d0('0x48')]({'where':{'id':_0x234783['params']['id']}})['then'](handleEntityNotFound(_0x212ce8,null))['then'](removeEntity(_0x212ce8,null))[_0xc6d0('0x45')](handleError(_0x212ce8,null));};
\ No newline at end of file
+var _0x5009=['desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','status','json','offset','limit','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','index','map','SquareMessage','rawAttributes','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','options','includeAll','findAll','rows','show','params','keys','filters','include','merge','find','catch','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','jsforce'];(function(_0x3c715d,_0x1c2554){var _0x441f7d=function(_0x2b6a0f){while(--_0x2b6a0f){_0x3c715d['push'](_0x3c715d['shift']());}};_0x441f7d(++_0x1c2554);}(_0x5009,0x1b4));var _0x9500=function(_0x2f464f,_0x25f647){_0x2f464f=_0x2f464f-0x0;var _0x4f407b=_0x5009[_0x2f464f];return _0x4f407b;};'use strict';var emlformat=require(_0x9500('0x0'));var rimraf=require(_0x9500('0x1'));var zipdir=require(_0x9500('0x2'));var jsonpatch=require(_0x9500('0x3'));var rp=require('request-promise');var moment=require(_0x9500('0x4'));var BPromise=require(_0x9500('0x5'));var Mustache=require(_0x9500('0x6'));var util=require(_0x9500('0x7'));var path=require(_0x9500('0x8'));var sox=require('sox');var csv=require(_0x9500('0x9'));var ejs=require(_0x9500('0xa'));var fs=require('fs');var fs_extra=require(_0x9500('0xb'));var _=require(_0x9500('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9500('0xd'));var deskjs=require(_0x9500('0xe'));var toCsv=require(_0x9500('0x9'));var querystring=require(_0x9500('0xf'));var Papa=require(_0x9500('0x10'));var Redis=require('ioredis');var authService=require(_0x9500('0x11'));var qs=require(_0x9500('0x12'));var as=require(_0x9500('0x13'));var hardwareService=require(_0x9500('0x14'));var logger=require(_0x9500('0x15'))(_0x9500('0x16'));var utils=require(_0x9500('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9500('0x18'))['db'];function respondWithStatusCode(_0x323026,_0x276cbc){_0x276cbc=_0x276cbc||0xcc;return function(_0x2dfbc7){if(_0x2dfbc7){return _0x323026[_0x9500('0x19')](_0x276cbc);}return _0x323026['status'](_0x276cbc)[_0x9500('0x1a')]();};}function respondWithResult(_0x50723e,_0x5066c1){_0x5066c1=_0x5066c1||0xc8;return function(_0x1906df){if(_0x1906df){return _0x50723e[_0x9500('0x1b')](_0x5066c1)[_0x9500('0x1c')](_0x1906df);}};}function respondWithFilteredResult(_0xc12317,_0x5d01f1){return function(_0x320294){if(_0x320294){var _0x3ad952=typeof _0x5d01f1[_0x9500('0x1d')]==='undefined'&&typeof _0x5d01f1[_0x9500('0x1e')]==='undefined';var _0x462123=_0x320294[_0x9500('0x1f')];var _0x2c1d0f=_0x3ad952?0x0:_0x5d01f1['offset'];var _0x508244=_0x3ad952?_0x320294[_0x9500('0x1f')]:_0x5d01f1['offset']+_0x5d01f1[_0x9500('0x1e')];var _0x9c3495;if(_0x508244>=_0x462123){_0x508244=_0x462123;_0x9c3495=0xc8;}else{_0x9c3495=0xce;}_0xc12317[_0x9500('0x1b')](_0x9c3495);return _0xc12317['set'](_0x9500('0x20'),_0x2c1d0f+'-'+_0x508244+'/'+_0x462123)[_0x9500('0x1c')](_0x320294);}return null;};}function patchUpdates(_0x2138a4){return function(_0x524c2f){try{jsonpatch[_0x9500('0x21')](_0x524c2f,_0x2138a4,!![]);}catch(_0x3516b3){return BPromise[_0x9500('0x22')](_0x3516b3);}return _0x524c2f[_0x9500('0x23')]();};}function saveUpdates(_0x4d5e15,_0x46ac7c){return function(_0x2e3e95){if(_0x2e3e95){return _0x2e3e95['update'](_0x4d5e15)[_0x9500('0x24')](function(_0xcc8382){return _0xcc8382;});}return null;};}function removeEntity(_0x8ac489,_0x433cc6){return function(_0xb74f7c){if(_0xb74f7c){return _0xb74f7c[_0x9500('0x25')]()[_0x9500('0x24')](function(){_0x8ac489[_0x9500('0x1b')](0xcc)[_0x9500('0x1a')]();});}};}function handleEntityNotFound(_0x555b31,_0x1854fd){return function(_0x617354){if(!_0x617354){_0x555b31['sendStatus'](0x194);}return _0x617354;};}function handleError(_0x385414,_0x465d94){_0x465d94=_0x465d94||0x1f4;return function(_0x10b048){logger[_0x9500('0x26')](_0x10b048[_0x9500('0x27')]);if(_0x10b048[_0x9500('0x28')]){delete _0x10b048['name'];}_0x385414[_0x9500('0x1b')](_0x465d94)['send'](_0x10b048);};}exports[_0x9500('0x29')]=function(_0x468ba7,_0x20e0c2){var _0x197d79={},_0x23cf0c={},_0x210890={'count':0x0,'rows':[]};var _0x47d4be=_[_0x9500('0x2a')](db[_0x9500('0x2b')][_0x9500('0x2c')],function(_0x333847){return{'name':_0x333847['fieldName'],'type':_0x333847[_0x9500('0x2d')][_0x9500('0x2e')]};});_0x23cf0c[_0x9500('0x2f')]=_[_0x9500('0x2a')](_0x47d4be,_0x9500('0x28'));_0x23cf0c[_0x9500('0x30')]=_['keys'](_0x468ba7[_0x9500('0x30')]);_0x23cf0c['filters']=_[_0x9500('0x31')](_0x23cf0c['model'],_0x23cf0c[_0x9500('0x30')]);_0x197d79['attributes']=_[_0x9500('0x31')](_0x23cf0c['model'],qs[_0x9500('0x32')](_0x468ba7['query'][_0x9500('0x32')]));_0x197d79['attributes']=_0x197d79[_0x9500('0x33')][_0x9500('0x34')]?_0x197d79['attributes']:_0x23cf0c['model'];if(!_0x468ba7[_0x9500('0x30')][_0x9500('0x35')](_0x9500('0x36'))){_0x197d79[_0x9500('0x1e')]=qs[_0x9500('0x1e')](_0x468ba7[_0x9500('0x30')][_0x9500('0x1e')]);_0x197d79[_0x9500('0x1d')]=qs['offset'](_0x468ba7[_0x9500('0x30')][_0x9500('0x1d')]);}_0x197d79['order']=qs[_0x9500('0x37')](_0x468ba7['query'][_0x9500('0x37')]);_0x197d79[_0x9500('0x38')]=qs['filters'](_[_0x9500('0x39')](_0x468ba7[_0x9500('0x30')],_0x23cf0c['filters']),_0x47d4be);if(_0x468ba7[_0x9500('0x30')][_0x9500('0x3a')]){_0x197d79[_0x9500('0x38')]=_['merge'](_0x197d79[_0x9500('0x38')],{'$or':_['map'](_0x47d4be,function(_0x42b163){if(_0x42b163[_0x9500('0x2d')]!==_0x9500('0x3b')){var _0x1137fe={};_0x1137fe[_0x42b163['name']]={'$like':'%'+_0x468ba7[_0x9500('0x30')][_0x9500('0x3a')]+'%'};return _0x1137fe;}})});}_0x197d79=_['merge']({},_0x197d79,_0x468ba7[_0x9500('0x3c')]);var _0x4b18e5={'where':_0x197d79[_0x9500('0x38')]};return db[_0x9500('0x2b')][_0x9500('0x1f')](_0x4b18e5)[_0x9500('0x24')](function(_0x14e82c){_0x210890[_0x9500('0x1f')]=_0x14e82c;if(_0x468ba7[_0x9500('0x30')][_0x9500('0x3d')]){_0x197d79['include']=[{'all':!![]}];}return db[_0x9500('0x2b')][_0x9500('0x3e')](_0x197d79);})[_0x9500('0x24')](function(_0x1b2216){_0x210890[_0x9500('0x3f')]=_0x1b2216;return _0x210890;})['then'](respondWithFilteredResult(_0x20e0c2,_0x197d79))['catch'](handleError(_0x20e0c2,null));};exports[_0x9500('0x40')]=function(_0x1f6288,_0xfd2660){var _0x537c8d={'raw':!![],'where':{'id':_0x1f6288[_0x9500('0x41')]['id']}},_0x53abe7={};_0x53abe7[_0x9500('0x2f')]=_[_0x9500('0x42')](db[_0x9500('0x2b')][_0x9500('0x2c')]);_0x53abe7[_0x9500('0x30')]=_[_0x9500('0x42')](_0x1f6288['query']);_0x53abe7[_0x9500('0x43')]=_[_0x9500('0x31')](_0x53abe7['model'],_0x53abe7[_0x9500('0x30')]);_0x537c8d[_0x9500('0x33')]=_['intersection'](_0x53abe7[_0x9500('0x2f')],qs[_0x9500('0x32')](_0x1f6288[_0x9500('0x30')]['fields']));_0x537c8d['attributes']=_0x537c8d[_0x9500('0x33')][_0x9500('0x34')]?_0x537c8d['attributes']:_0x53abe7['model'];if(_0x1f6288[_0x9500('0x30')][_0x9500('0x3d')]){_0x537c8d[_0x9500('0x44')]=[{'all':!![]}];}_0x537c8d=_[_0x9500('0x45')]({},_0x537c8d,_0x1f6288['options']);return db['SquareMessage'][_0x9500('0x46')](_0x537c8d)[_0x9500('0x24')](handleEntityNotFound(_0xfd2660,null))['then'](respondWithResult(_0xfd2660,null))[_0x9500('0x47')](handleError(_0xfd2660,null));};exports[_0x9500('0x48')]=function(_0x57a70c,_0x1aba72){return db[_0x9500('0x2b')][_0x9500('0x48')](_0x57a70c[_0x9500('0x49')],{})[_0x9500('0x24')](respondWithResult(_0x1aba72,0xc9))[_0x9500('0x47')](handleError(_0x1aba72,null));};exports[_0x9500('0x4a')]=function(_0x146cb3,_0x4cc03d){if(_0x146cb3[_0x9500('0x49')]['id']){delete _0x146cb3[_0x9500('0x49')]['id'];}return db['SquareMessage']['find']({'where':{'id':_0x146cb3[_0x9500('0x41')]['id']}})[_0x9500('0x24')](handleEntityNotFound(_0x4cc03d,null))[_0x9500('0x24')](saveUpdates(_0x146cb3[_0x9500('0x49')],null))[_0x9500('0x24')](respondWithResult(_0x4cc03d,null))[_0x9500('0x47')](handleError(_0x4cc03d,null));};exports['destroy']=function(_0x5dec69,_0x3cf402){return db[_0x9500('0x2b')][_0x9500('0x46')]({'where':{'id':_0x5dec69['params']['id']}})[_0x9500('0x24')](handleEntityNotFound(_0x3cf402,null))[_0x9500('0x24')](removeEntity(_0x3cf402,null))[_0x9500('0x47')](handleError(_0x3cf402,null));};
\ No newline at end of file
index d4bff76..1929ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf812=['moment','bluebird','path','rimraf','../../config/environment','./squareMessage.attributes','define','SquareMessage','square_messages','lodash','util','../../config/logger','api'];(function(_0x4d1dcb,_0x49df03){var _0x3088a7=function(_0xeb5143){while(--_0xeb5143){_0x4d1dcb['push'](_0x4d1dcb['shift']());}};_0x3088a7(++_0x49df03);}(_0xf812,0x8b));var _0x2f81=function(_0x831eff,_0x3c447c){_0x831eff=_0x831eff-0x0;var _0x4a3f84=_0xf812[_0x831eff];return _0x4a3f84;};'use strict';var _=require(_0x2f81('0x0'));var util=require(_0x2f81('0x1'));var logger=require(_0x2f81('0x2'))(_0x2f81('0x3'));var moment=require(_0x2f81('0x4'));var BPromise=require(_0x2f81('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2f81('0x6'));var rimraf=require(_0x2f81('0x7'));var config=require(_0x2f81('0x8'));var attributes=require(_0x2f81('0x9'));module['exports']=function(_0x38fe96,_0x46f6cd){return _0x38fe96[_0x2f81('0xa')](_0x2f81('0xb'),attributes,{'tableName':_0x2f81('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf4b=['SquareMessage','square_messages','../../config/logger','api','moment','bluebird','path','./squareMessage.attributes'];(function(_0x55c979,_0x36c5f0){var _0x690107=function(_0xa61dad){while(--_0xa61dad){_0x55c979['push'](_0x55c979['shift']());}};_0x690107(++_0x36c5f0);}(_0xcf4b,0x10a));var _0xbcf4=function(_0x5bd645,_0x111689){_0x5bd645=_0x5bd645-0x0;var _0xa295e9=_0xcf4b[_0x5bd645];return _0xa295e9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xbcf4('0x0'))(_0xbcf4('0x1'));var moment=require(_0xbcf4('0x2'));var BPromise=require(_0xbcf4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbcf4('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbcf4('0x5'));module['exports']=function(_0x233c3e,_0x3e5ddb){return _0x233c3e['define'](_0xbcf4('0x6'),attributes,{'tableName':_0xbcf4('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 547a24b..eb6917c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4517=['request\x20sent','debug','stringify','error','code','SquareMessage,\x20%s,\x20%s','message','catch','SquareMessage','create','body','options','then','CreateSquareMessage','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','info'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4517,0x146));var _0x7451=function(_0x6aa13c,_0x525802){_0x6aa13c=_0x6aa13c-0x0;var _0x2d688f=_0x4517[_0x6aa13c];return _0x2d688f;};'use strict';var _=require(_0x7451('0x0'));var util=require(_0x7451('0x1'));var moment=require(_0x7451('0x2'));var BPromise=require('bluebird');var rs=require(_0x7451('0x3'));var fs=require('fs');var Redis=require(_0x7451('0x4'));var db=require(_0x7451('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7451('0x6'))(_0x7451('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7451('0x8')][_0x7451('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2215cf,_0x56fdf6,_0x5dc3ed){return new BPromise(function(_0x31b4e0,_0x808ec2){return client[_0x7451('0xa')](_0x2215cf,_0x5dc3ed)['then'](function(_0x2df14a){logger[_0x7451('0xb')]('SquareMessage,\x20%s,\x20%s',_0x56fdf6,_0x7451('0xc'));logger[_0x7451('0xd')]('SquareMessage,\x20%s,\x20%s,\x20%s',_0x56fdf6,_0x7451('0xc'),JSON[_0x7451('0xe')](_0x2df14a));if(_0x2df14a['error']){if(_0x2df14a[_0x7451('0xf')][_0x7451('0x10')]===0x1f4){logger['error'](_0x7451('0x11'),_0x56fdf6,_0x2df14a['error'][_0x7451('0x12')]);return _0x808ec2(_0x2df14a[_0x7451('0xf')][_0x7451('0x12')]);}logger[_0x7451('0xf')]('SquareMessage,\x20%s,\x20%s',_0x56fdf6,_0x2df14a[_0x7451('0xf')]['message']);return _0x31b4e0(_0x2df14a[_0x7451('0xf')]['message']);}else{logger['info'](_0x7451('0x11'),_0x56fdf6,_0x7451('0xc'));_0x31b4e0(_0x2df14a['result'][_0x7451('0x12')]);}})[_0x7451('0x13')](function(_0x4a4905){logger['error']('SquareMessage,\x20%s,\x20%s',_0x56fdf6,_0x4a4905);_0x808ec2(_0x4a4905);});});}exports['CreateSquareMessage']=function(_0x346b5d){var _0xe51fc5=this;return new Promise(function(_0x527698,_0x47db45){return db[_0x7451('0x14')][_0x7451('0x15')](_0x346b5d[_0x7451('0x16')],{'raw':_0x346b5d[_0x7451('0x17')]?_0x346b5d[_0x7451('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x7451('0x18')](function(_0x265c1a){logger[_0x7451('0xb')](_0x7451('0x19'),_0x346b5d);logger[_0x7451('0xd')](_0x7451('0x19'),_0x346b5d,JSON[_0x7451('0xe')](_0x265c1a));_0x527698(_0x265c1a);})[_0x7451('0x13')](function(_0x4ea096){logger[_0x7451('0xf')](_0x7451('0x19'),_0x4ea096[_0x7451('0x12')],_0x346b5d);_0x47db45(_0xe51fc5['error'](0x1f4,_0x4ea096[_0x7451('0x12')]));});});};
\ No newline at end of file
+var _0xbfc2=['jayson/promise','client','http','request','then','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','CreateSquareMessage','SquareMessage','create','body','options','raw','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3c6b7d,_0x5f0d90){var _0x1d3ed2=function(_0x1a8f35){while(--_0x1a8f35){_0x3c6b7d['push'](_0x3c6b7d['shift']());}};_0x1d3ed2(++_0x5f0d90);}(_0xbfc2,0x1c8));var _0x2bfc=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xbfc2[_0x46698a];return _0x356db0;};'use strict';var _=require(_0x2bfc('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2bfc('0x1'));var rs=require(_0x2bfc('0x2'));var fs=require('fs');var Redis=require(_0x2bfc('0x3'));var db=require(_0x2bfc('0x4'))['db'];var utils=require(_0x2bfc('0x5'));var logger=require(_0x2bfc('0x6'))(_0x2bfc('0x7'));var config=require(_0x2bfc('0x8'));var jayson=require(_0x2bfc('0x9'));var client=jayson[_0x2bfc('0xa')][_0x2bfc('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4a4aee,_0x41e818,_0x25cc3c){return new BPromise(function(_0x43ea82,_0x1a70e0){return client[_0x2bfc('0xc')](_0x4a4aee,_0x25cc3c)[_0x2bfc('0xd')](function(_0x241373){logger['info'](_0x2bfc('0xe'),_0x41e818,_0x2bfc('0xf'));logger[_0x2bfc('0x10')](_0x2bfc('0x11'),_0x41e818,_0x2bfc('0xf'),JSON[_0x2bfc('0x12')](_0x241373));if(_0x241373['error']){if(_0x241373['error'][_0x2bfc('0x13')]===0x1f4){logger['error']('SquareMessage,\x20%s,\x20%s',_0x41e818,_0x241373[_0x2bfc('0x14')][_0x2bfc('0x15')]);return _0x1a70e0(_0x241373[_0x2bfc('0x14')]['message']);}logger[_0x2bfc('0x14')](_0x2bfc('0xe'),_0x41e818,_0x241373[_0x2bfc('0x14')]['message']);return _0x43ea82(_0x241373[_0x2bfc('0x14')][_0x2bfc('0x15')]);}else{logger[_0x2bfc('0x16')](_0x2bfc('0xe'),_0x41e818,_0x2bfc('0xf'));_0x43ea82(_0x241373[_0x2bfc('0x17')]['message']);}})[_0x2bfc('0x18')](function(_0x3192a4){logger['error'](_0x2bfc('0xe'),_0x41e818,_0x3192a4);_0x1a70e0(_0x3192a4);});});}exports[_0x2bfc('0x19')]=function(_0x563c82){var _0x13558d=this;return new Promise(function(_0x4b60c0,_0x482013){return db[_0x2bfc('0x1a')][_0x2bfc('0x1b')](_0x563c82[_0x2bfc('0x1c')],{'raw':_0x563c82['options']?_0x563c82[_0x2bfc('0x1d')][_0x2bfc('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x4ffacc){logger['info']('CreateSquareMessage',_0x563c82);logger['debug'](_0x2bfc('0x19'),_0x563c82,JSON['stringify'](_0x4ffacc));_0x4b60c0(_0x4ffacc);})[_0x2bfc('0x18')](function(_0x32c857){logger[_0x2bfc('0x14')](_0x2bfc('0x19'),_0x32c857['message'],_0x563c82);_0x482013(_0x13558d['error'](0x1f4,_0x32c857['message']));});});};
\ No newline at end of file
index d3b6a69..978d57b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5be8=['create','put','/:id','destroy','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','/:id/test','15s','test'];(function(_0x3f8f5c,_0x461c6e){var _0x51f351=function(_0x7cc97e){while(--_0x7cc97e){_0x3f8f5c['push'](_0x3f8f5c['shift']());}};_0x51f351(++_0x461c6e);}(_0x5be8,0x1b4));var _0x85be=function(_0x16f300,_0x1ed589){_0x16f300=_0x16f300-0x0;var _0x36d640=_0x5be8[_0x16f300];return _0x36d640;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x85be('0x0'));var express=require('express');var router=express[_0x85be('0x1')]();var fs_extra=require(_0x85be('0x2'));var auth=require(_0x85be('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x85be('0x4'));var controller=require(_0x85be('0x5'));router[_0x85be('0x6')]('/',auth[_0x85be('0x7')](),controller[_0x85be('0x8')]);router['get']('/:id',auth[_0x85be('0x7')](),controller['show']);router['get'](_0x85be('0x9'),auth[_0x85be('0x7')](),timeout(_0x85be('0xa')),controller[_0x85be('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x85be('0xc')]);router[_0x85be('0xd')](_0x85be('0xe'),auth[_0x85be('0x7')](),controller['update']);router['delete'](_0x85be('0xe'),auth[_0x85be('0x7')](),controller[_0x85be('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xd1b5=['/:id/test','15s','post','create','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','/:id','show'];(function(_0xcd82ef,_0x28ceef){var _0x1c7ebf=function(_0x477574){while(--_0x477574){_0xcd82ef['push'](_0xcd82ef['shift']());}};_0x1c7ebf(++_0x28ceef);}(_0xd1b5,0x104));var _0x5d1b=function(_0x5cd60a,_0x1b3c5e){_0x5cd60a=_0x5cd60a-0x0;var _0xc311a1=_0xd1b5[_0x5cd60a];return _0xc311a1;};'use strict';var multer=require(_0x5d1b('0x0'));var util=require(_0x5d1b('0x1'));var path=require(_0x5d1b('0x2'));var timeout=require(_0x5d1b('0x3'));var express=require(_0x5d1b('0x4'));var router=express[_0x5d1b('0x5')]();var fs_extra=require(_0x5d1b('0x6'));var auth=require(_0x5d1b('0x7'));var interaction=require(_0x5d1b('0x8'));var config=require(_0x5d1b('0x9'));var controller=require(_0x5d1b('0xa'));router[_0x5d1b('0xb')]('/',auth[_0x5d1b('0xc')](),controller[_0x5d1b('0xd')]);router[_0x5d1b('0xb')](_0x5d1b('0xe'),auth[_0x5d1b('0xc')](),controller[_0x5d1b('0xf')]);router['get'](_0x5d1b('0x10'),auth[_0x5d1b('0xc')](),timeout(_0x5d1b('0x11')),controller['test']);router[_0x5d1b('0x12')]('/',auth[_0x5d1b('0xc')](),controller[_0x5d1b('0x13')]);router[_0x5d1b('0x14')](_0x5d1b('0xe'),auth[_0x5d1b('0xc')](),controller[_0x5d1b('0x15')]);router['delete']('/:id',auth[_0x5d1b('0xc')](),controller['destroy']);module[_0x5d1b('0x16')]=router;
\ No newline at end of file
index 0a59d84..c381827 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd353=['name','STRING','sequelize','exports'];(function(_0x2eb88f,_0x37fe90){var _0x52e1ed=function(_0x531ff1){while(--_0x531ff1){_0x2eb88f['push'](_0x2eb88f['shift']());}};_0x52e1ed(++_0x37fe90);}(_0xd353,0x7e));var _0x3d35=function(_0x6751f2,_0x314f17){_0x6751f2=_0x6751f2-0x0;var _0x71e504=_0xd353[_0x6751f2];return _0x71e504;};'use strict';var Sequelize=require(_0x3d35('0x0'));module[_0x3d35('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x3d35('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x3d35('0x3')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0b10=['sequelize','exports','STRING'];(function(_0x28eb36,_0x12fee4){var _0x2a73d5=function(_0x267eea){while(--_0x267eea){_0x28eb36['push'](_0x28eb36['shift']());}};_0x2a73d5(++_0x12fee4);}(_0x0b10,0x15c));var _0x00b1=function(_0x2d234d,_0x4c8a89){_0x2d234d=_0x2d234d-0x0;var _0x8f412b=_0x0b10[_0x2d234d];return _0x8f412b;};'use strict';var Sequelize=require(_0x00b1('0x0'));module[_0x00b1('0x1')]={'name':{'type':Sequelize[_0x00b1('0x2')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0x00b1('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 307490a..c243f8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd022=['dsn','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','limit','count','offset','Content-Range','json','apply','save','update','then','destroy','get','UserProfileResource','end','error','stack','name','send','index','map','SquareOdbc','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','ODBC','UserProfileSection','userProfileId','autoAssociation','test','odbc','openSync'];(function(_0x33eb5c,_0x4a7d98){var _0x253328=function(_0x3b23a0){while(--_0x3b23a0){_0x33eb5c['push'](_0x33eb5c['shift']());}};_0x253328(++_0x4a7d98);}(_0xd022,0x166));var _0x2d02=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0xd022[_0x24061a];return _0x82054e;};'use strict';var emlformat=require(_0x2d02('0x0'));var rimraf=require(_0x2d02('0x1'));var zipdir=require(_0x2d02('0x2'));var jsonpatch=require(_0x2d02('0x3'));var rp=require(_0x2d02('0x4'));var moment=require(_0x2d02('0x5'));var BPromise=require(_0x2d02('0x6'));var Mustache=require(_0x2d02('0x7'));var util=require(_0x2d02('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x2d02('0x9'));var ejs=require(_0x2d02('0xa'));var fs=require('fs');var fs_extra=require(_0x2d02('0xb'));var _=require(_0x2d02('0xc'));var squel=require(_0x2d02('0xd'));var crypto=require(_0x2d02('0xe'));var jsforce=require(_0x2d02('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x2d02('0x9'));var querystring=require(_0x2d02('0x10'));var Papa=require(_0x2d02('0x11'));var Redis=require(_0x2d02('0x12'));var authService=require(_0x2d02('0x13'));var qs=require(_0x2d02('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2d02('0x15'))(_0x2d02('0x16'));var utils=require('../../config/utils');var config=require(_0x2d02('0x17'));var licenseUtil=require(_0x2d02('0x18'));var db=require(_0x2d02('0x19'))['db'];function respondWithStatusCode(_0x48359c,_0x49b367){_0x49b367=_0x49b367||0xcc;return function(_0x5e1ec0){if(_0x5e1ec0){return _0x48359c[_0x2d02('0x1a')](_0x49b367);}return _0x48359c[_0x2d02('0x1b')](_0x49b367)['end']();};}function respondWithResult(_0x14445f,_0x3057ec){_0x3057ec=_0x3057ec||0xc8;return function(_0x48059b){if(_0x48059b){return _0x14445f[_0x2d02('0x1b')](_0x3057ec)['json'](_0x48059b);}};}function respondWithFilteredResult(_0x96a5cc,_0x4265bc){return function(_0x4a4302){if(_0x4a4302){var _0x307647=typeof _0x4265bc['offset']==='undefined'&&typeof _0x4265bc[_0x2d02('0x1c')]==='undefined';var _0x4f6af0=_0x4a4302[_0x2d02('0x1d')];var _0x1ae88b=_0x307647?0x0:_0x4265bc[_0x2d02('0x1e')];var _0x13e240=_0x307647?_0x4a4302[_0x2d02('0x1d')]:_0x4265bc[_0x2d02('0x1e')]+_0x4265bc['limit'];var _0x2a3552;if(_0x13e240>=_0x4f6af0){_0x13e240=_0x4f6af0;_0x2a3552=0xc8;}else{_0x2a3552=0xce;}_0x96a5cc[_0x2d02('0x1b')](_0x2a3552);return _0x96a5cc['set'](_0x2d02('0x1f'),_0x1ae88b+'-'+_0x13e240+'/'+_0x4f6af0)[_0x2d02('0x20')](_0x4a4302);}return null;};}function patchUpdates(_0x1a8a1f){return function(_0x29c7a7){try{jsonpatch[_0x2d02('0x21')](_0x29c7a7,_0x1a8a1f,!![]);}catch(_0x14d516){return BPromise['reject'](_0x14d516);}return _0x29c7a7[_0x2d02('0x22')]();};}function saveUpdates(_0x5ace0c,_0x4508e8){return function(_0x168e7c){if(_0x168e7c){return _0x168e7c[_0x2d02('0x23')](_0x5ace0c)[_0x2d02('0x24')](function(_0x4f32a1){return _0x4f32a1;});}return null;};}function removeEntity(_0x506fe6,_0x512c43){return function(_0x2055fa){if(_0x2055fa){return _0x2055fa[_0x2d02('0x25')]()[_0x2d02('0x24')](function(){var _0x58ffb9=_0x2055fa[_0x2d02('0x26')]({'plain':!![]});var _0x5ef4d6='ODBC';return db[_0x2d02('0x27')]['destroy']({'where':{'type':_0x5ef4d6,'resourceId':_0x58ffb9['id']}})[_0x2d02('0x24')](function(){return _0x2055fa;});})[_0x2d02('0x24')](function(){_0x506fe6[_0x2d02('0x1b')](0xcc)[_0x2d02('0x28')]();});}};}function handleEntityNotFound(_0x3b23af,_0x356e9c){return function(_0x165380){if(!_0x165380){_0x3b23af['sendStatus'](0x194);}return _0x165380;};}function handleError(_0x422b29,_0x450305){_0x450305=_0x450305||0x1f4;return function(_0x5092a9){logger[_0x2d02('0x29')](_0x5092a9[_0x2d02('0x2a')]);if(_0x5092a9[_0x2d02('0x2b')]){delete _0x5092a9['name'];}_0x422b29[_0x2d02('0x1b')](_0x450305)[_0x2d02('0x2c')](_0x5092a9);};}exports[_0x2d02('0x2d')]=function(_0x21b553,_0x297b88){var _0x53e068={},_0x4fca91={},_0x465b4e={'count':0x0,'rows':[]};var _0x1892bf=_[_0x2d02('0x2e')](db[_0x2d02('0x2f')][_0x2d02('0x30')],function(_0x504e2b){return{'name':_0x504e2b[_0x2d02('0x31')],'type':_0x504e2b[_0x2d02('0x32')][_0x2d02('0x33')]};});_0x4fca91[_0x2d02('0x34')]=_[_0x2d02('0x2e')](_0x1892bf,_0x2d02('0x2b'));_0x4fca91[_0x2d02('0x35')]=_[_0x2d02('0x36')](_0x21b553[_0x2d02('0x35')]);_0x4fca91['filters']=_[_0x2d02('0x37')](_0x4fca91[_0x2d02('0x34')],_0x4fca91[_0x2d02('0x35')]);_0x53e068[_0x2d02('0x38')]=_[_0x2d02('0x37')](_0x4fca91[_0x2d02('0x34')],qs[_0x2d02('0x39')](_0x21b553['query'][_0x2d02('0x39')]));_0x53e068[_0x2d02('0x38')]=_0x53e068[_0x2d02('0x38')][_0x2d02('0x3a')]?_0x53e068[_0x2d02('0x38')]:_0x4fca91['model'];if(!_0x21b553[_0x2d02('0x35')][_0x2d02('0x3b')](_0x2d02('0x3c'))){_0x53e068[_0x2d02('0x1c')]=qs['limit'](_0x21b553[_0x2d02('0x35')][_0x2d02('0x1c')]);_0x53e068[_0x2d02('0x1e')]=qs[_0x2d02('0x1e')](_0x21b553[_0x2d02('0x35')][_0x2d02('0x1e')]);}_0x53e068[_0x2d02('0x3d')]=qs[_0x2d02('0x3e')](_0x21b553[_0x2d02('0x35')][_0x2d02('0x3e')]);_0x53e068[_0x2d02('0x3f')]=qs[_0x2d02('0x40')](_['pick'](_0x21b553[_0x2d02('0x35')],_0x4fca91[_0x2d02('0x40')]),_0x1892bf);if(_0x21b553[_0x2d02('0x35')]['filter']){_0x53e068[_0x2d02('0x3f')]=_['merge'](_0x53e068[_0x2d02('0x3f')],{'$or':_[_0x2d02('0x2e')](_0x1892bf,function(_0x995916){if(_0x995916[_0x2d02('0x32')]!==_0x2d02('0x41')){var _0x278210={};_0x278210[_0x995916['name']]={'$like':'%'+_0x21b553['query'][_0x2d02('0x42')]+'%'};return _0x278210;}})});}_0x53e068=_[_0x2d02('0x43')]({},_0x53e068,_0x21b553[_0x2d02('0x44')]);var _0x2ca0a0={'where':_0x53e068['where']};return db[_0x2d02('0x2f')][_0x2d02('0x1d')](_0x2ca0a0)[_0x2d02('0x24')](function(_0x4c67da){_0x465b4e['count']=_0x4c67da;if(_0x21b553['query'][_0x2d02('0x45')]){_0x53e068[_0x2d02('0x46')]=[{'all':!![]}];}return db[_0x2d02('0x2f')][_0x2d02('0x47')](_0x53e068);})[_0x2d02('0x24')](function(_0x3f8133){_0x465b4e[_0x2d02('0x48')]=_0x3f8133;return _0x465b4e;})['then'](respondWithFilteredResult(_0x297b88,_0x53e068))[_0x2d02('0x49')](handleError(_0x297b88,null));};exports[_0x2d02('0x4a')]=function(_0x476867,_0x42bf51){var _0x3f484a={'raw':!![],'where':{'id':_0x476867[_0x2d02('0x4b')]['id']}},_0x307ed4={};_0x307ed4[_0x2d02('0x34')]=_[_0x2d02('0x36')](db[_0x2d02('0x2f')][_0x2d02('0x30')]);_0x307ed4[_0x2d02('0x35')]=_[_0x2d02('0x36')](_0x476867['query']);_0x307ed4[_0x2d02('0x40')]=_['intersection'](_0x307ed4[_0x2d02('0x34')],_0x307ed4[_0x2d02('0x35')]);_0x3f484a[_0x2d02('0x38')]=_[_0x2d02('0x37')](_0x307ed4[_0x2d02('0x34')],qs[_0x2d02('0x39')](_0x476867['query'][_0x2d02('0x39')]));_0x3f484a[_0x2d02('0x38')]=_0x3f484a[_0x2d02('0x38')][_0x2d02('0x3a')]?_0x3f484a[_0x2d02('0x38')]:_0x307ed4[_0x2d02('0x34')];if(_0x476867[_0x2d02('0x35')][_0x2d02('0x45')]){_0x3f484a[_0x2d02('0x46')]=[{'all':!![]}];}_0x3f484a=_[_0x2d02('0x43')]({},_0x3f484a,_0x476867[_0x2d02('0x44')]);return db[_0x2d02('0x2f')][_0x2d02('0x4c')](_0x3f484a)[_0x2d02('0x24')](handleEntityNotFound(_0x42bf51,null))['then'](respondWithResult(_0x42bf51,null))[_0x2d02('0x49')](handleError(_0x42bf51,null));};exports['create']=function(_0x297a39,_0x32cb7c){return db[_0x2d02('0x2f')][_0x2d02('0x4d')](_0x297a39[_0x2d02('0x4e')],{})[_0x2d02('0x24')](function(_0x18f8bb){var _0x4dac4e=_0x297a39['user'][_0x2d02('0x26')]({'plain':!![]});if(!_0x4dac4e)throw new Error(_0x2d02('0x4f'));if(_0x4dac4e['role']==='user'){var _0x3e70a0=_0x18f8bb[_0x2d02('0x26')]({'plain':!![]});var _0x465ad3=_0x2d02('0x50');return db[_0x2d02('0x51')][_0x2d02('0x4c')]({'where':{'name':_0x465ad3,'userProfileId':_0x4dac4e[_0x2d02('0x52')]},'raw':!![]})[_0x2d02('0x24')](function(_0x4dd94f){if(_0x4dd94f&&_0x4dd94f[_0x2d02('0x53')]===0x0){return db['UserProfileResource'][_0x2d02('0x4d')]({'name':_0x3e70a0[_0x2d02('0x2b')],'resourceId':_0x3e70a0['id'],'type':_0x4dd94f['name'],'sectionId':_0x4dd94f['id']},{})['then'](function(){return _0x18f8bb;});}else{return _0x18f8bb;}})['catch'](function(_0x523375){logger[_0x2d02('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x523375);throw _0x523375;});}return _0x18f8bb;})[_0x2d02('0x24')](respondWithResult(_0x32cb7c,0xc9))[_0x2d02('0x49')](handleError(_0x32cb7c,null));};exports[_0x2d02('0x23')]=function(_0x56ff5b,_0x34a925){if(_0x56ff5b[_0x2d02('0x4e')]['id']){delete _0x56ff5b[_0x2d02('0x4e')]['id'];}return db[_0x2d02('0x2f')][_0x2d02('0x4c')]({'where':{'id':_0x56ff5b[_0x2d02('0x4b')]['id']}})[_0x2d02('0x24')](handleEntityNotFound(_0x34a925,null))[_0x2d02('0x24')](saveUpdates(_0x56ff5b[_0x2d02('0x4e')],null))['then'](respondWithResult(_0x34a925,null))[_0x2d02('0x49')](handleError(_0x34a925,null));};exports[_0x2d02('0x25')]=function(_0x52d314,_0x15f242){return db[_0x2d02('0x2f')]['find']({'where':{'id':_0x52d314[_0x2d02('0x4b')]['id']}})[_0x2d02('0x24')](handleEntityNotFound(_0x15f242,null))['then'](removeEntity(_0x15f242,null))[_0x2d02('0x49')](handleError(_0x15f242,null));};exports[_0x2d02('0x54')]=function(_0x921943,_0x593e5d,_0x4b83a0){var _0x51d87d;return db[_0x2d02('0x2f')]['find']({'where':{'id':_0x921943['params']['id']},'attributes':['id','dsn']})[_0x2d02('0x24')](handleEntityNotFound(_0x593e5d,null))[_0x2d02('0x24')](function(_0x43b2fa){if(_0x43b2fa){var _0x44c485=require(_0x2d02('0x55'))();_0x44c485[_0x2d02('0x56')](_0x43b2fa[_0x2d02('0x57')]);_0x44c485[_0x2d02('0x58')]();return _0x43b2fa;}})[_0x2d02('0x24')](respondWithResult(_0x593e5d,null))[_0x2d02('0x49')](handleError(_0x593e5d,null));};
\ No newline at end of file
+var _0x62a5=['params','rawAttributes','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','test','dsn','odbc','openSync','closeSync','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','ODBC','UserProfileResource','sendStatus','error','name','send','SquareOdbc','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch'];(function(_0x1a45d7,_0x4b6fb4){var _0xe20202=function(_0x58f98a){while(--_0x58f98a){_0x1a45d7['push'](_0x1a45d7['shift']());}};_0xe20202(++_0x4b6fb4);}(_0x62a5,0xc1));var _0x562a=function(_0x30c4fa,_0x326268){_0x30c4fa=_0x30c4fa-0x0;var _0x2b8995=_0x62a5[_0x30c4fa];return _0x2b8995;};'use strict';var emlformat=require(_0x562a('0x0'));var rimraf=require(_0x562a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x562a('0x2'));var rp=require(_0x562a('0x3'));var moment=require(_0x562a('0x4'));var BPromise=require(_0x562a('0x5'));var Mustache=require(_0x562a('0x6'));var util=require('util');var path=require(_0x562a('0x7'));var sox=require(_0x562a('0x8'));var csv=require('to-csv');var ejs=require(_0x562a('0x9'));var fs=require('fs');var fs_extra=require(_0x562a('0xa'));var _=require(_0x562a('0xb'));var squel=require(_0x562a('0xc'));var crypto=require(_0x562a('0xd'));var jsforce=require(_0x562a('0xe'));var deskjs=require(_0x562a('0xf'));var toCsv=require(_0x562a('0x10'));var querystring=require(_0x562a('0x11'));var Papa=require(_0x562a('0x12'));var Redis=require(_0x562a('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x562a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x562a('0x15'))(_0x562a('0x16'));var utils=require(_0x562a('0x17'));var config=require(_0x562a('0x18'));var licenseUtil=require(_0x562a('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3d8e94,_0xd88351){_0xd88351=_0xd88351||0xcc;return function(_0xeb476f){if(_0xeb476f){return _0x3d8e94['sendStatus'](_0xd88351);}return _0x3d8e94[_0x562a('0x1a')](_0xd88351)[_0x562a('0x1b')]();};}function respondWithResult(_0x35d3ff,_0x3c0849){_0x3c0849=_0x3c0849||0xc8;return function(_0x2b9b59){if(_0x2b9b59){return _0x35d3ff[_0x562a('0x1a')](_0x3c0849)[_0x562a('0x1c')](_0x2b9b59);}};}function respondWithFilteredResult(_0x1dfa58,_0x3f1f3f){return function(_0x1a1e16){if(_0x1a1e16){var _0x5f46f8=typeof _0x3f1f3f[_0x562a('0x1d')]===_0x562a('0x1e')&&typeof _0x3f1f3f[_0x562a('0x1f')]==='undefined';var _0x551115=_0x1a1e16[_0x562a('0x20')];var _0xdefb9b=_0x5f46f8?0x0:_0x3f1f3f[_0x562a('0x1d')];var _0x5a243f=_0x5f46f8?_0x1a1e16[_0x562a('0x20')]:_0x3f1f3f['offset']+_0x3f1f3f[_0x562a('0x1f')];var _0x426e89;if(_0x5a243f>=_0x551115){_0x5a243f=_0x551115;_0x426e89=0xc8;}else{_0x426e89=0xce;}_0x1dfa58[_0x562a('0x1a')](_0x426e89);return _0x1dfa58[_0x562a('0x21')](_0x562a('0x22'),_0xdefb9b+'-'+_0x5a243f+'/'+_0x551115)[_0x562a('0x1c')](_0x1a1e16);}return null;};}function patchUpdates(_0x549267){return function(_0x1b714e){try{jsonpatch[_0x562a('0x23')](_0x1b714e,_0x549267,!![]);}catch(_0x347d48){return BPromise[_0x562a('0x24')](_0x347d48);}return _0x1b714e[_0x562a('0x25')]();};}function saveUpdates(_0x24daad,_0x23e3cd){return function(_0x3a64cc){if(_0x3a64cc){return _0x3a64cc[_0x562a('0x26')](_0x24daad)[_0x562a('0x27')](function(_0x1abb81){return _0x1abb81;});}return null;};}function removeEntity(_0x5cbe06,_0x36fb5c){return function(_0x46ac34){if(_0x46ac34){return _0x46ac34[_0x562a('0x28')]()[_0x562a('0x27')](function(){var _0x205fd0=_0x46ac34[_0x562a('0x29')]({'plain':!![]});var _0x10169c=_0x562a('0x2a');return db[_0x562a('0x2b')][_0x562a('0x28')]({'where':{'type':_0x10169c,'resourceId':_0x205fd0['id']}})['then'](function(){return _0x46ac34;});})[_0x562a('0x27')](function(){_0x5cbe06[_0x562a('0x1a')](0xcc)[_0x562a('0x1b')]();});}};}function handleEntityNotFound(_0x3a2155,_0x177ac8){return function(_0x48e4d7){if(!_0x48e4d7){_0x3a2155[_0x562a('0x2c')](0x194);}return _0x48e4d7;};}function handleError(_0x457d18,_0x3f0b0e){_0x3f0b0e=_0x3f0b0e||0x1f4;return function(_0x238a50){logger[_0x562a('0x2d')](_0x238a50['stack']);if(_0x238a50['name']){delete _0x238a50[_0x562a('0x2e')];}_0x457d18['status'](_0x3f0b0e)[_0x562a('0x2f')](_0x238a50);};}exports['index']=function(_0x14a92c,_0x546ce1){var _0x316151={},_0x2d6dad={},_0x5f0e5f={'count':0x0,'rows':[]};var _0x22a5b9=_['map'](db[_0x562a('0x30')]['rawAttributes'],function(_0x31f69f){return{'name':_0x31f69f[_0x562a('0x31')],'type':_0x31f69f[_0x562a('0x32')][_0x562a('0x33')]};});_0x2d6dad[_0x562a('0x34')]=_[_0x562a('0x35')](_0x22a5b9,_0x562a('0x2e'));_0x2d6dad['query']=_[_0x562a('0x36')](_0x14a92c[_0x562a('0x37')]);_0x2d6dad[_0x562a('0x38')]=_[_0x562a('0x39')](_0x2d6dad[_0x562a('0x34')],_0x2d6dad[_0x562a('0x37')]);_0x316151[_0x562a('0x3a')]=_['intersection'](_0x2d6dad[_0x562a('0x34')],qs[_0x562a('0x3b')](_0x14a92c['query'][_0x562a('0x3b')]));_0x316151[_0x562a('0x3a')]=_0x316151['attributes'][_0x562a('0x3c')]?_0x316151[_0x562a('0x3a')]:_0x2d6dad[_0x562a('0x34')];if(!_0x14a92c[_0x562a('0x37')][_0x562a('0x3d')]('nolimit')){_0x316151[_0x562a('0x1f')]=qs[_0x562a('0x1f')](_0x14a92c[_0x562a('0x37')]['limit']);_0x316151[_0x562a('0x1d')]=qs[_0x562a('0x1d')](_0x14a92c['query'][_0x562a('0x1d')]);}_0x316151[_0x562a('0x3e')]=qs['sort'](_0x14a92c[_0x562a('0x37')][_0x562a('0x3f')]);_0x316151[_0x562a('0x40')]=qs[_0x562a('0x38')](_[_0x562a('0x41')](_0x14a92c[_0x562a('0x37')],_0x2d6dad[_0x562a('0x38')]),_0x22a5b9);if(_0x14a92c['query'][_0x562a('0x42')]){_0x316151[_0x562a('0x40')]=_[_0x562a('0x43')](_0x316151['where'],{'$or':_[_0x562a('0x35')](_0x22a5b9,function(_0x23df50){if(_0x23df50[_0x562a('0x32')]!==_0x562a('0x44')){var _0x2a07bb={};_0x2a07bb[_0x23df50[_0x562a('0x2e')]]={'$like':'%'+_0x14a92c[_0x562a('0x37')][_0x562a('0x42')]+'%'};return _0x2a07bb;}})});}_0x316151=_['merge']({},_0x316151,_0x14a92c[_0x562a('0x45')]);var _0x478109={'where':_0x316151['where']};return db[_0x562a('0x30')]['count'](_0x478109)[_0x562a('0x27')](function(_0xa9494e){_0x5f0e5f[_0x562a('0x20')]=_0xa9494e;if(_0x14a92c['query']['includeAll']){_0x316151[_0x562a('0x46')]=[{'all':!![]}];}return db['SquareOdbc'][_0x562a('0x47')](_0x316151);})[_0x562a('0x27')](function(_0x4f689d){_0x5f0e5f[_0x562a('0x48')]=_0x4f689d;return _0x5f0e5f;})[_0x562a('0x27')](respondWithFilteredResult(_0x546ce1,_0x316151))[_0x562a('0x49')](handleError(_0x546ce1,null));};exports['show']=function(_0xa659fc,_0xef7e46){var _0x48afff={'raw':!![],'where':{'id':_0xa659fc[_0x562a('0x4a')]['id']}},_0x523d3f={};_0x523d3f[_0x562a('0x34')]=_[_0x562a('0x36')](db[_0x562a('0x30')][_0x562a('0x4b')]);_0x523d3f['query']=_[_0x562a('0x36')](_0xa659fc[_0x562a('0x37')]);_0x523d3f['filters']=_[_0x562a('0x39')](_0x523d3f[_0x562a('0x34')],_0x523d3f[_0x562a('0x37')]);_0x48afff[_0x562a('0x3a')]=_[_0x562a('0x39')](_0x523d3f[_0x562a('0x34')],qs['fields'](_0xa659fc[_0x562a('0x37')][_0x562a('0x3b')]));_0x48afff[_0x562a('0x3a')]=_0x48afff[_0x562a('0x3a')][_0x562a('0x3c')]?_0x48afff[_0x562a('0x3a')]:_0x523d3f[_0x562a('0x34')];if(_0xa659fc['query'][_0x562a('0x4c')]){_0x48afff[_0x562a('0x46')]=[{'all':!![]}];}_0x48afff=_[_0x562a('0x43')]({},_0x48afff,_0xa659fc[_0x562a('0x45')]);return db[_0x562a('0x30')][_0x562a('0x4d')](_0x48afff)['then'](handleEntityNotFound(_0xef7e46,null))[_0x562a('0x27')](respondWithResult(_0xef7e46,null))[_0x562a('0x49')](handleError(_0xef7e46,null));};exports['create']=function(_0x55449c,_0x570be4){return db['SquareOdbc'][_0x562a('0x4e')](_0x55449c[_0x562a('0x4f')],{})[_0x562a('0x27')](function(_0x37b760){var _0x48c4ca=_0x55449c[_0x562a('0x50')][_0x562a('0x29')]({'plain':!![]});if(!_0x48c4ca)throw new Error(_0x562a('0x51'));if(_0x48c4ca['role']==='user'){var _0x57883f=_0x37b760[_0x562a('0x29')]({'plain':!![]});var _0x525872='ODBC';return db[_0x562a('0x52')][_0x562a('0x4d')]({'where':{'name':_0x525872,'userProfileId':_0x48c4ca['userProfileId']},'raw':!![]})[_0x562a('0x27')](function(_0x2e9cd2){if(_0x2e9cd2&&_0x2e9cd2[_0x562a('0x53')]===0x0){return db[_0x562a('0x2b')][_0x562a('0x4e')]({'name':_0x57883f['name'],'resourceId':_0x57883f['id'],'type':_0x2e9cd2[_0x562a('0x2e')],'sectionId':_0x2e9cd2['id']},{})[_0x562a('0x27')](function(){return _0x37b760;});}else{return _0x37b760;}})[_0x562a('0x49')](function(_0x1d7c8a){logger[_0x562a('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1d7c8a);throw _0x1d7c8a;});}return _0x37b760;})['then'](respondWithResult(_0x570be4,0xc9))[_0x562a('0x49')](handleError(_0x570be4,null));};exports['update']=function(_0x4b8500,_0x528900){if(_0x4b8500[_0x562a('0x4f')]['id']){delete _0x4b8500[_0x562a('0x4f')]['id'];}return db[_0x562a('0x30')][_0x562a('0x4d')]({'where':{'id':_0x4b8500[_0x562a('0x4a')]['id']}})[_0x562a('0x27')](handleEntityNotFound(_0x528900,null))[_0x562a('0x27')](saveUpdates(_0x4b8500['body'],null))[_0x562a('0x27')](respondWithResult(_0x528900,null))[_0x562a('0x49')](handleError(_0x528900,null));};exports[_0x562a('0x28')]=function(_0x1c6c0a,_0x3f356b){return db[_0x562a('0x30')][_0x562a('0x4d')]({'where':{'id':_0x1c6c0a[_0x562a('0x4a')]['id']}})[_0x562a('0x27')](handleEntityNotFound(_0x3f356b,null))[_0x562a('0x27')](removeEntity(_0x3f356b,null))[_0x562a('0x49')](handleError(_0x3f356b,null));};exports[_0x562a('0x54')]=function(_0x1919c9,_0x2e96df,_0x4d3c1b){var _0x289db1;return db[_0x562a('0x30')][_0x562a('0x4d')]({'where':{'id':_0x1919c9[_0x562a('0x4a')]['id']},'attributes':['id',_0x562a('0x55')]})[_0x562a('0x27')](handleEntityNotFound(_0x2e96df,null))[_0x562a('0x27')](function(_0x566fb5){if(_0x566fb5){var _0x1d9074=require(_0x562a('0x56'))();_0x1d9074[_0x562a('0x57')](_0x566fb5[_0x562a('0x55')]);_0x1d9074[_0x562a('0x58')]();return _0x566fb5;}})[_0x562a('0x27')](respondWithResult(_0x2e96df,null))[_0x562a('0x49')](handleError(_0x2e96df,null));};
\ No newline at end of file
index 213e818..61ba0d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2296=['SquareOdbc','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2296,0x7f));var _0x6229=function(_0x20057d,_0x5763a8){_0x20057d=_0x20057d-0x0;var _0x4feb5a=_0x2296[_0x20057d];return _0x4feb5a;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x6229('0x0'));var BPromise=require(_0x6229('0x1'));var rp=require(_0x6229('0x2'));var fs=require('fs');var path=require(_0x6229('0x3'));var rimraf=require(_0x6229('0x4'));var config=require(_0x6229('0x5'));var attributes=require(_0x6229('0x6'));module['exports']=function(_0x50a032,_0x489202){return _0x50a032[_0x6229('0x7')](_0x6229('0x8'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdeb9=['rimraf','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc','square_odbc','lodash','util','../../config/logger','api','bluebird'];(function(_0x128443,_0x2fe025){var _0x1a4ce1=function(_0x12d72c){while(--_0x12d72c){_0x128443['push'](_0x128443['shift']());}};_0x1a4ce1(++_0x2fe025);}(_0xdeb9,0x67));var _0x9deb=function(_0x25e657,_0x41c64a){_0x25e657=_0x25e657-0x0;var _0xd1ea9e=_0xdeb9[_0x25e657];return _0xd1ea9e;};'use strict';var _=require(_0x9deb('0x0'));var util=require(_0x9deb('0x1'));var logger=require(_0x9deb('0x2'))(_0x9deb('0x3'));var moment=require('moment');var BPromise=require(_0x9deb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x9deb('0x5'));var config=require(_0x9deb('0x6'));var attributes=require(_0x9deb('0x7'));module[_0x9deb('0x8')]=function(_0x347255,_0x37bf27){return _0x347255[_0x9deb('0x9')](_0x9deb('0xa'),attributes,{'tableName':_0x9deb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 98c2d58..222c00f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9eb6=['request','info','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','SquareOdbc,\x20%s,\x20%s','message','result','catch','SquareOdbc','find','options','raw','where','attributes','include','model','map','then','ShowSquareOdbc','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x53ab4f,_0x429c14){var _0x4e9ba2=function(_0x70884b){while(--_0x70884b){_0x53ab4f['push'](_0x53ab4f['shift']());}};_0x4e9ba2(++_0x429c14);}(_0x9eb6,0x126));var _0x69eb=function(_0xa8883,_0x1f107f){_0xa8883=_0xa8883-0x0;var _0x479426=_0x9eb6[_0xa8883];return _0x479426;};'use strict';var _=require(_0x69eb('0x0'));var util=require(_0x69eb('0x1'));var moment=require(_0x69eb('0x2'));var BPromise=require(_0x69eb('0x3'));var rs=require(_0x69eb('0x4'));var fs=require('fs');var Redis=require(_0x69eb('0x5'));var db=require(_0x69eb('0x6'))['db'];var utils=require(_0x69eb('0x7'));var logger=require(_0x69eb('0x8'))(_0x69eb('0x9'));var config=require(_0x69eb('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x69eb('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x35cec9,_0x5e910f,_0x14629f){return new BPromise(function(_0x482836,_0x4eb05d){return client[_0x69eb('0xc')](_0x35cec9,_0x14629f)['then'](function(_0x3215f2){logger[_0x69eb('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x5e910f,_0x69eb('0xe'));logger[_0x69eb('0xf')](_0x69eb('0x10'),_0x5e910f,'request\x20sent',JSON[_0x69eb('0x11')](_0x3215f2));if(_0x3215f2[_0x69eb('0x12')]){if(_0x3215f2['error']['code']===0x1f4){logger[_0x69eb('0x12')](_0x69eb('0x13'),_0x5e910f,_0x3215f2[_0x69eb('0x12')]['message']);return _0x4eb05d(_0x3215f2['error'][_0x69eb('0x14')]);}logger[_0x69eb('0x12')](_0x69eb('0x13'),_0x5e910f,_0x3215f2[_0x69eb('0x12')][_0x69eb('0x14')]);return _0x482836(_0x3215f2['error'][_0x69eb('0x14')]);}else{logger[_0x69eb('0xd')](_0x69eb('0x13'),_0x5e910f,_0x69eb('0xe'));_0x482836(_0x3215f2[_0x69eb('0x15')]['message']);}})[_0x69eb('0x16')](function(_0x471720){logger[_0x69eb('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x5e910f,_0x471720);_0x4eb05d(_0x471720);});});}exports['ShowSquareOdbc']=function(_0x3ebba3){var _0x42cb45=this;return new Promise(function(_0x52cff3,_0x1618b8){return db[_0x69eb('0x17')][_0x69eb('0x18')]({'raw':_0x3ebba3[_0x69eb('0x19')]?_0x3ebba3[_0x69eb('0x19')][_0x69eb('0x1a')]===undefined?!![]:![]:!![],'where':_0x3ebba3[_0x69eb('0x19')]?_0x3ebba3[_0x69eb('0x19')][_0x69eb('0x1b')]||null:null,'attributes':_0x3ebba3[_0x69eb('0x19')]?_0x3ebba3[_0x69eb('0x19')][_0x69eb('0x1c')]||null:null,'include':_0x3ebba3[_0x69eb('0x19')]?_0x3ebba3[_0x69eb('0x19')][_0x69eb('0x1d')]?_['map'](_0x3ebba3[_0x69eb('0x19')]['include'],function(_0x20de85){return{'model':db[_0x20de85[_0x69eb('0x1e')]],'as':_0x20de85['as'],'attributes':_0x20de85[_0x69eb('0x1c')],'include':_0x20de85[_0x69eb('0x1d')]?_[_0x69eb('0x1f')](_0x20de85[_0x69eb('0x1d')],function(_0xb7133b){return{'model':db[_0xb7133b[_0x69eb('0x1e')]],'as':_0xb7133b['as'],'attributes':_0xb7133b['attributes'],'include':_0xb7133b['include']?_['map'](_0xb7133b[_0x69eb('0x1d')],function(_0x2ce6c1){return{'model':db[_0x2ce6c1['model']],'as':_0x2ce6c1['as'],'attributes':_0x2ce6c1['attributes']};}):[]};}):[]};}):[]:[]})[_0x69eb('0x20')](function(_0x14ca32){logger[_0x69eb('0xd')](_0x69eb('0x21'),_0x3ebba3);logger['debug'](_0x69eb('0x21'),_0x3ebba3,JSON[_0x69eb('0x11')](_0x14ca32));_0x52cff3(_0x14ca32);})[_0x69eb('0x16')](function(_0x4c384e){logger[_0x69eb('0x12')](_0x69eb('0x21'),_0x4c384e[_0x69eb('0x14')],_0x3ebba3);_0x1618b8(_0x42cb45[_0x69eb('0x12')](0x1f4,_0x4c384e[_0x69eb('0x14')]));});});};
\ No newline at end of file
+var _0xc80c=['jayson/promise','http','request','then','info','SquareOdbc,\x20%s,\x20%s,\x20%s','error','code','SquareOdbc,\x20%s,\x20%s','message','request\x20sent','result','catch','ShowSquareOdbc','SquareOdbc','options','raw','where','attributes','include','map','model','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x3edb43,_0x1dac51){var _0x17425c=function(_0x2df628){while(--_0x2df628){_0x3edb43['push'](_0x3edb43['shift']());}};_0x17425c(++_0x1dac51);}(_0xc80c,0xd7));var _0xcc80=function(_0x5cb1af,_0x4bdc8c){_0x5cb1af=_0x5cb1af-0x0;var _0x8d7940=_0xc80c[_0x5cb1af];return _0x8d7940;};'use strict';var _=require('lodash');var util=require(_0xcc80('0x0'));var moment=require(_0xcc80('0x1'));var BPromise=require(_0xcc80('0x2'));var rs=require(_0xcc80('0x3'));var fs=require('fs');var Redis=require(_0xcc80('0x4'));var db=require(_0xcc80('0x5'))['db'];var utils=require(_0xcc80('0x6'));var logger=require(_0xcc80('0x7'))(_0xcc80('0x8'));var config=require('../../config/environment');var jayson=require(_0xcc80('0x9'));var client=jayson['client'][_0xcc80('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x567ac8,_0x239c0a,_0x1ae206){return new BPromise(function(_0x274d2c,_0x1ae428){return client[_0xcc80('0xb')](_0x567ac8,_0x1ae206)[_0xcc80('0xc')](function(_0x59715f){logger[_0xcc80('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x239c0a,'request\x20sent');logger['debug'](_0xcc80('0xe'),_0x239c0a,'request\x20sent',JSON['stringify'](_0x59715f));if(_0x59715f['error']){if(_0x59715f[_0xcc80('0xf')][_0xcc80('0x10')]===0x1f4){logger[_0xcc80('0xf')](_0xcc80('0x11'),_0x239c0a,_0x59715f[_0xcc80('0xf')]['message']);return _0x1ae428(_0x59715f[_0xcc80('0xf')][_0xcc80('0x12')]);}logger['error'](_0xcc80('0x11'),_0x239c0a,_0x59715f[_0xcc80('0xf')][_0xcc80('0x12')]);return _0x274d2c(_0x59715f[_0xcc80('0xf')][_0xcc80('0x12')]);}else{logger[_0xcc80('0xd')](_0xcc80('0x11'),_0x239c0a,_0xcc80('0x13'));_0x274d2c(_0x59715f[_0xcc80('0x14')]['message']);}})[_0xcc80('0x15')](function(_0x24eaf7){logger['error']('SquareOdbc,\x20%s,\x20%s',_0x239c0a,_0x24eaf7);_0x1ae428(_0x24eaf7);});});}exports[_0xcc80('0x16')]=function(_0x5e9472){var _0x299dec=this;return new Promise(function(_0x1f1052,_0x4b7b9a){return db[_0xcc80('0x17')]['find']({'raw':_0x5e9472[_0xcc80('0x18')]?_0x5e9472['options'][_0xcc80('0x19')]===undefined?!![]:![]:!![],'where':_0x5e9472[_0xcc80('0x18')]?_0x5e9472[_0xcc80('0x18')][_0xcc80('0x1a')]||null:null,'attributes':_0x5e9472[_0xcc80('0x18')]?_0x5e9472[_0xcc80('0x18')][_0xcc80('0x1b')]||null:null,'include':_0x5e9472[_0xcc80('0x18')]?_0x5e9472[_0xcc80('0x18')][_0xcc80('0x1c')]?_[_0xcc80('0x1d')](_0x5e9472['options']['include'],function(_0x503c1a){return{'model':db[_0x503c1a[_0xcc80('0x1e')]],'as':_0x503c1a['as'],'attributes':_0x503c1a['attributes'],'include':_0x503c1a['include']?_['map'](_0x503c1a[_0xcc80('0x1c')],function(_0x153929){return{'model':db[_0x153929[_0xcc80('0x1e')]],'as':_0x153929['as'],'attributes':_0x153929['attributes'],'include':_0x153929['include']?_[_0xcc80('0x1d')](_0x153929[_0xcc80('0x1c')],function(_0x1f5cb3){return{'model':db[_0x1f5cb3[_0xcc80('0x1e')]],'as':_0x1f5cb3['as'],'attributes':_0x1f5cb3[_0xcc80('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xcc80('0xc')](function(_0x4b848f){logger[_0xcc80('0xd')](_0xcc80('0x16'),_0x5e9472);logger['debug'](_0xcc80('0x16'),_0x5e9472,JSON[_0xcc80('0x1f')](_0x4b848f));_0x1f1052(_0x4b848f);})[_0xcc80('0x15')](function(_0x20325f){logger[_0xcc80('0xf')](_0xcc80('0x16'),_0x20325f[_0xcc80('0x12')],_0x5e9472);_0x4b7b9a(_0x299dec[_0xcc80('0xf')](0x1f4,_0x20325f[_0xcc80('0x12')]));});});};
\ No newline at end of file
index fc8909b..a0d9b78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87d0=['multer','util','path','express','fs-extra','../../components/auth/service','get','isAuthenticated','index','getUsers','post','create','/:id/users','addUsers','put','update','/:id','destroy','delete','removeUsers','exports'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x87d0,0xbd));var _0x087d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x87d0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x087d('0x0'));var util=require(_0x087d('0x1'));var path=require(_0x087d('0x2'));var timeout=require('connect-timeout');var express=require(_0x087d('0x3'));var router=express['Router']();var fs_extra=require(_0x087d('0x4'));var auth=require(_0x087d('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./squareProject.controller');router[_0x087d('0x6')]('/',auth[_0x087d('0x7')](),controller[_0x087d('0x8')]);router[_0x087d('0x6')]('/:id',auth[_0x087d('0x7')](),controller['show']);router[_0x087d('0x6')]('/:id/users',auth[_0x087d('0x7')](),controller[_0x087d('0x9')]);router[_0x087d('0xa')]('/',auth[_0x087d('0x7')](),controller[_0x087d('0xb')]);router[_0x087d('0xa')](_0x087d('0xc'),auth[_0x087d('0x7')](),controller[_0x087d('0xd')]);router[_0x087d('0xe')]('/:id',auth[_0x087d('0x7')](),controller[_0x087d('0xf')]);router['delete'](_0x087d('0x10'),auth['isAuthenticated'](),controller[_0x087d('0x11')]);router[_0x087d('0x12')](_0x087d('0xc'),auth[_0x087d('0x7')](),controller[_0x087d('0x13')]);module[_0x087d('0x14')]=router;
\ No newline at end of file
+var _0x8caf=['fs-extra','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','/:id','show','getUsers','create','post','/:id/users','addUsers','put','delete','destroy','removeUsers','exports','util','path','connect-timeout','express','Router'];(function(_0x15b087,_0x252ec6){var _0x37a6be=function(_0x327307){while(--_0x327307){_0x15b087['push'](_0x15b087['shift']());}};_0x37a6be(++_0x252ec6);}(_0x8caf,0x1ab));var _0xf8ca=function(_0x55d76f,_0x3ec4e8){_0x55d76f=_0x55d76f-0x0;var _0x27f726=_0x8caf[_0x55d76f];return _0x27f726;};'use strict';var multer=require('multer');var util=require(_0xf8ca('0x0'));var path=require(_0xf8ca('0x1'));var timeout=require(_0xf8ca('0x2'));var express=require(_0xf8ca('0x3'));var router=express[_0xf8ca('0x4')]();var fs_extra=require(_0xf8ca('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf8ca('0x6'));var config=require(_0xf8ca('0x7'));var controller=require(_0xf8ca('0x8'));router[_0xf8ca('0x9')]('/',auth[_0xf8ca('0xa')](),controller[_0xf8ca('0xb')]);router['get'](_0xf8ca('0xc'),auth[_0xf8ca('0xa')](),controller[_0xf8ca('0xd')]);router[_0xf8ca('0x9')]('/:id/users',auth['isAuthenticated'](),controller[_0xf8ca('0xe')]);router['post']('/',auth[_0xf8ca('0xa')](),controller[_0xf8ca('0xf')]);router[_0xf8ca('0x10')](_0xf8ca('0x11'),auth['isAuthenticated'](),controller[_0xf8ca('0x12')]);router[_0xf8ca('0x13')](_0xf8ca('0xc'),auth[_0xf8ca('0xa')](),controller['update']);router[_0xf8ca('0x14')](_0xf8ca('0xc'),auth['isAuthenticated'](),controller[_0xf8ca('0x15')]);router[_0xf8ca('0x14')](_0xf8ca('0x11'),auth[_0xf8ca('0xa')](),controller[_0xf8ca('0x16')]);module[_0xf8ca('0x17')]=router;
\ No newline at end of file
index 7c754c6..ef760be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c33=['STRING','name','BLOB','getDataValue','preproduction','toString','utf8','long','production','DATE','sequelize','exports'];(function(_0x5b69f6,_0x5dac2e){var _0x1d18dd=function(_0xd52ecb){while(--_0xd52ecb){_0x5b69f6['push'](_0x5b69f6['shift']());}};_0x1d18dd(++_0x5dac2e);}(_0x6c33,0x82));var _0x36c3=function(_0x37656f,_0x350ac6){_0x37656f=_0x37656f-0x0;var _0x5cd9d8=_0x6c33[_0x37656f];return _0x5cd9d8;};'use strict';var Sequelize=require(_0x36c3('0x0'));module[_0x36c3('0x1')]={'name':{'type':Sequelize[_0x36c3('0x2')],'unique':_0x36c3('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x36c3('0x2')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x36c3('0x4')]('long'),'get':function(){if(this[_0x36c3('0x5')](_0x36c3('0x6'))){return this[_0x36c3('0x5')](_0x36c3('0x6'))[_0x36c3('0x7')](_0x36c3('0x8'));}}},'production':{'type':Sequelize[_0x36c3('0x4')](_0x36c3('0x9')),'get':function(){if(this['getDataValue'](_0x36c3('0xa'))){return this[_0x36c3('0x5')](_0x36c3('0xa'))[_0x36c3('0x7')](_0x36c3('0x8'));}}},'savedAt':{'type':Sequelize[_0x36c3('0xb')]},'publishedAt':{'type':Sequelize[_0x36c3('0xb')]}};
\ No newline at end of file
+var _0x90d9=['toString','utf8','long','production','DATE','exports','STRING','name','TEXT','BLOB','getDataValue','preproduction'];(function(_0x441981,_0x12a3eb){var _0x19ce77=function(_0x26973d){while(--_0x26973d){_0x441981['push'](_0x441981['shift']());}};_0x19ce77(++_0x12a3eb);}(_0x90d9,0x1e5));var _0x990d=function(_0x2bd6f7,_0x2c9371){_0x2bd6f7=_0x2bd6f7-0x0;var _0x111331=_0x90d9[_0x2bd6f7];return _0x111331;};'use strict';var Sequelize=require('sequelize');module[_0x990d('0x0')]={'name':{'type':Sequelize[_0x990d('0x1')],'unique':_0x990d('0x2'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize[_0x990d('0x3')]},'preproduction':{'type':Sequelize[_0x990d('0x4')]('long'),'get':function(){if(this[_0x990d('0x5')]('preproduction')){return this['getDataValue'](_0x990d('0x6'))[_0x990d('0x7')](_0x990d('0x8'));}}},'production':{'type':Sequelize[_0x990d('0x4')](_0x990d('0x9')),'get':function(){if(this['getDataValue'](_0x990d('0xa'))){return this[_0x990d('0x5')](_0x990d('0xa'))[_0x990d('0x7')](_0x990d('0x8'));}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x990d('0xb')]}};
\ No newline at end of file
index 20256fe..0dc7e3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc83f=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','send','index','map','SquareProject','fieldName','type','key','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','findOne','User','getUsers','nolimit','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc83f,0xc9));var _0xfc83=function(_0x32d8f6,_0x153146){_0x32d8f6=_0x32d8f6-0x0;var _0x4d6740=_0xc83f[_0x32d8f6];return _0x4d6740;};'use strict';var emlformat=require(_0xfc83('0x0'));var rimraf=require(_0xfc83('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfc83('0x2'));var rp=require(_0xfc83('0x3'));var moment=require('moment');var BPromise=require(_0xfc83('0x4'));var Mustache=require(_0xfc83('0x5'));var util=require(_0xfc83('0x6'));var path=require(_0xfc83('0x7'));var sox=require(_0xfc83('0x8'));var csv=require(_0xfc83('0x9'));var ejs=require(_0xfc83('0xa'));var fs=require('fs');var fs_extra=require(_0xfc83('0xb'));var _=require(_0xfc83('0xc'));var squel=require(_0xfc83('0xd'));var crypto=require(_0xfc83('0xe'));var jsforce=require(_0xfc83('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfc83('0x10'));var Papa=require(_0xfc83('0x11'));var Redis=require(_0xfc83('0x12'));var authService=require(_0xfc83('0x13'));var qs=require(_0xfc83('0x14'));var as=require(_0xfc83('0x15'));var hardwareService=require(_0xfc83('0x16'));var logger=require(_0xfc83('0x17'))('api');var utils=require(_0xfc83('0x18'));var config=require(_0xfc83('0x19'));var licenseUtil=require(_0xfc83('0x1a'));var db=require(_0xfc83('0x1b'))['db'];config[_0xfc83('0x1c')]=_[_0xfc83('0x1d')](config[_0xfc83('0x1c')],{'host':_0xfc83('0x1e'),'port':0x18eb});var socket=require(_0xfc83('0x1f'))(new Redis(config[_0xfc83('0x1c')]));require(_0xfc83('0x20'))[_0xfc83('0x21')](socket);function respondWithStatusCode(_0x696dd6,_0x35d49a){_0x35d49a=_0x35d49a||0xcc;return function(_0xfb1007){if(_0xfb1007){return _0x696dd6[_0xfc83('0x22')](_0x35d49a);}return _0x696dd6[_0xfc83('0x23')](_0x35d49a)[_0xfc83('0x24')]();};}function respondWithResult(_0x36ef88,_0x68c761){_0x68c761=_0x68c761||0xc8;return function(_0x4bfad9){if(_0x4bfad9){return _0x36ef88['status'](_0x68c761)[_0xfc83('0x25')](_0x4bfad9);}};}function respondWithFilteredResult(_0x42cbac,_0x1af051){return function(_0x28b274){if(_0x28b274){var _0xd11e1=typeof _0x1af051[_0xfc83('0x26')]===_0xfc83('0x27')&&typeof _0x1af051[_0xfc83('0x28')]===_0xfc83('0x27');var _0x4e672c=_0x28b274[_0xfc83('0x29')];var _0x55df68=_0xd11e1?0x0:_0x1af051['offset'];var _0x1c1452=_0xd11e1?_0x28b274[_0xfc83('0x29')]:_0x1af051['offset']+_0x1af051[_0xfc83('0x28')];var _0x20e907;if(_0x1c1452>=_0x4e672c){_0x1c1452=_0x4e672c;_0x20e907=0xc8;}else{_0x20e907=0xce;}_0x42cbac['status'](_0x20e907);return _0x42cbac[_0xfc83('0x2a')]('Content-Range',_0x55df68+'-'+_0x1c1452+'/'+_0x4e672c)[_0xfc83('0x25')](_0x28b274);}return null;};}function patchUpdates(_0x2d4119){return function(_0x2311bf){try{jsonpatch[_0xfc83('0x2b')](_0x2311bf,_0x2d4119,!![]);}catch(_0x5e313d){return BPromise[_0xfc83('0x2c')](_0x5e313d);}return _0x2311bf[_0xfc83('0x2d')]();};}function saveUpdates(_0x2d3bd8,_0x4b30ad){return function(_0x3a41c3){if(_0x3a41c3){return _0x3a41c3[_0xfc83('0x2e')](_0x2d3bd8)[_0xfc83('0x2f')](function(_0x3d630e){return _0x3d630e;});}return null;};}function removeEntity(_0x53028f,_0x2ec5ce){return function(_0x2fee97){if(_0x2fee97){return _0x2fee97[_0xfc83('0x30')]()[_0xfc83('0x2f')](function(){var _0x487ed9=_0x2fee97[_0xfc83('0x31')]({'plain':!![]});var _0x1c98b8='SquareProjects';return db[_0xfc83('0x32')][_0xfc83('0x30')]({'where':{'type':_0x1c98b8,'resourceId':_0x487ed9['id']}})[_0xfc83('0x2f')](function(){return _0x2fee97;});})['then'](function(){_0x53028f[_0xfc83('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x36b18e,_0x217104){return function(_0xeba8e){if(!_0xeba8e){_0x36b18e['sendStatus'](0x194);}return _0xeba8e;};}function handleError(_0x1f6773,_0x2c9e13){_0x2c9e13=_0x2c9e13||0x1f4;return function(_0x3acabf){logger[_0xfc83('0x33')](_0x3acabf[_0xfc83('0x34')]);if(_0x3acabf['name']){delete _0x3acabf['name'];}_0x1f6773[_0xfc83('0x23')](_0x2c9e13)[_0xfc83('0x35')](_0x3acabf);};}exports[_0xfc83('0x36')]=function(_0x4868a2,_0x43793c){var _0x3aa42e={},_0x47f4ed={},_0x588bbe={'count':0x0,'rows':[]};var _0x1ae38a=_[_0xfc83('0x37')](db[_0xfc83('0x38')]['rawAttributes'],function(_0x321c86){return{'name':_0x321c86[_0xfc83('0x39')],'type':_0x321c86[_0xfc83('0x3a')][_0xfc83('0x3b')]};});_0x47f4ed['model']=_['map'](_0x1ae38a,_0xfc83('0x3c'));_0x47f4ed[_0xfc83('0x3d')]=_[_0xfc83('0x3e')](_0x4868a2[_0xfc83('0x3d')]);_0x47f4ed[_0xfc83('0x3f')]=_[_0xfc83('0x40')](_0x47f4ed[_0xfc83('0x41')],_0x47f4ed[_0xfc83('0x3d')]);_0x3aa42e[_0xfc83('0x42')]=_[_0xfc83('0x40')](_0x47f4ed[_0xfc83('0x41')],qs[_0xfc83('0x43')](_0x4868a2[_0xfc83('0x3d')][_0xfc83('0x43')]));_0x3aa42e[_0xfc83('0x42')]=_0x3aa42e[_0xfc83('0x42')][_0xfc83('0x44')]?_0x3aa42e[_0xfc83('0x42')]:_0x47f4ed['model'];if(!_0x4868a2[_0xfc83('0x3d')][_0xfc83('0x45')]('nolimit')){_0x3aa42e['limit']=qs['limit'](_0x4868a2[_0xfc83('0x3d')][_0xfc83('0x28')]);_0x3aa42e[_0xfc83('0x26')]=qs[_0xfc83('0x26')](_0x4868a2['query'][_0xfc83('0x26')]);}_0x3aa42e[_0xfc83('0x46')]=qs[_0xfc83('0x47')](_0x4868a2[_0xfc83('0x3d')][_0xfc83('0x47')]);_0x3aa42e[_0xfc83('0x48')]=qs[_0xfc83('0x3f')](_[_0xfc83('0x49')](_0x4868a2[_0xfc83('0x3d')],_0x47f4ed['filters']),_0x1ae38a);if(_0x4868a2[_0xfc83('0x3d')][_0xfc83('0x4a')]){_0x3aa42e['where']=_[_0xfc83('0x4b')](_0x3aa42e[_0xfc83('0x48')],{'$or':_[_0xfc83('0x37')](_0x1ae38a,function(_0x4f4c13){if(_0x4f4c13[_0xfc83('0x3a')]!=='VIRTUAL'){var _0x4fbc67={};_0x4fbc67[_0x4f4c13[_0xfc83('0x3c')]]={'$like':'%'+_0x4868a2[_0xfc83('0x3d')][_0xfc83('0x4a')]+'%'};return _0x4fbc67;}})});}_0x3aa42e=_[_0xfc83('0x4b')]({},_0x3aa42e,_0x4868a2[_0xfc83('0x4c')]);var _0x495ab0={'where':_0x3aa42e['where']};return db['SquareProject'][_0xfc83('0x29')](_0x495ab0)[_0xfc83('0x2f')](function(_0x12f8f5){_0x588bbe[_0xfc83('0x29')]=_0x12f8f5;if(_0x4868a2['query'][_0xfc83('0x4d')]){_0x3aa42e[_0xfc83('0x4e')]=[{'all':!![]}];}return db['SquareProject'][_0xfc83('0x4f')](_0x3aa42e);})[_0xfc83('0x2f')](function(_0x42a465){_0x588bbe[_0xfc83('0x50')]=_0x42a465;return _0x588bbe;})[_0xfc83('0x2f')](respondWithFilteredResult(_0x43793c,_0x3aa42e))[_0xfc83('0x51')](handleError(_0x43793c,null));};exports[_0xfc83('0x52')]=function(_0x4389fe,_0x52b91b){var _0x2f5e56={'raw':![],'where':{'id':_0x4389fe[_0xfc83('0x53')]['id']}},_0x5b5c76={};_0x5b5c76['model']=_[_0xfc83('0x3e')](db[_0xfc83('0x38')][_0xfc83('0x54')]);_0x5b5c76['query']=_['keys'](_0x4389fe['query']);_0x5b5c76[_0xfc83('0x3f')]=_[_0xfc83('0x40')](_0x5b5c76['model'],_0x5b5c76['query']);_0x2f5e56[_0xfc83('0x42')]=_[_0xfc83('0x40')](_0x5b5c76[_0xfc83('0x41')],qs[_0xfc83('0x43')](_0x4389fe['query']['fields']));_0x2f5e56[_0xfc83('0x42')]=_0x2f5e56['attributes'][_0xfc83('0x44')]?_0x2f5e56[_0xfc83('0x42')]:_0x5b5c76['model'];if(_0x4389fe[_0xfc83('0x3d')][_0xfc83('0x4d')]){_0x2f5e56['include']=[{'all':!![]}];}_0x2f5e56=_[_0xfc83('0x4b')]({},_0x2f5e56,_0x4389fe['options']);return db['SquareProject'][_0xfc83('0x55')](_0x2f5e56)['then'](handleEntityNotFound(_0x52b91b,null))[_0xfc83('0x2f')](respondWithResult(_0x52b91b,null))[_0xfc83('0x51')](handleError(_0x52b91b,null));};exports[_0xfc83('0x56')]=function(_0x21acb3,_0x20b7a2){return db[_0xfc83('0x38')][_0xfc83('0x56')](_0x21acb3[_0xfc83('0x57')],{})[_0xfc83('0x2f')](function(_0x460801){var _0x70db4d=_0x21acb3[_0xfc83('0x58')]['get']({'plain':!![]});if(!_0x70db4d)throw new Error(_0xfc83('0x59'));if(_0x70db4d[_0xfc83('0x5a')]===_0xfc83('0x58')){var _0x3214e6=_0x460801['get']({'plain':!![]});var _0x38cf9e='SquareProjects';return db[_0xfc83('0x5b')][_0xfc83('0x55')]({'where':{'name':_0x38cf9e,'userProfileId':_0x70db4d[_0xfc83('0x5c')]},'raw':!![]})['then'](function(_0x19b2f0){if(_0x19b2f0&&_0x19b2f0['autoAssociation']===0x0){return db[_0xfc83('0x32')][_0xfc83('0x56')]({'name':_0x3214e6[_0xfc83('0x3c')],'resourceId':_0x3214e6['id'],'type':_0x19b2f0[_0xfc83('0x3c')],'sectionId':_0x19b2f0['id']},{})['then'](function(){return _0x460801;});}else{return _0x460801;}})['catch'](function(_0x539061){logger['error'](_0xfc83('0x5d'),_0x539061);throw _0x539061;});}return _0x460801;})['then'](respondWithResult(_0x20b7a2,0xc9))[_0xfc83('0x51')](handleError(_0x20b7a2,null));};exports[_0xfc83('0x2e')]=function(_0x5a8441,_0x17f715){if(_0x5a8441[_0xfc83('0x57')]['id']){delete _0x5a8441['body']['id'];}return db[_0xfc83('0x38')][_0xfc83('0x55')]({'where':{'id':_0x5a8441[_0xfc83('0x53')]['id']}})[_0xfc83('0x2f')](handleEntityNotFound(_0x17f715,null))[_0xfc83('0x2f')](saveUpdates(_0x5a8441[_0xfc83('0x57')],null))[_0xfc83('0x2f')](respondWithResult(_0x17f715,null))[_0xfc83('0x51')](handleError(_0x17f715,null));};exports['destroy']=function(_0x55a7ea,_0x34e9f4){return db['SquareProject']['find']({'where':{'id':_0x55a7ea[_0xfc83('0x53')]['id']}})[_0xfc83('0x2f')](handleEntityNotFound(_0x34e9f4,null))['then'](removeEntity(_0x34e9f4,null))['catch'](handleError(_0x34e9f4,null));};exports[_0xfc83('0x5e')]=function(_0x5d9c67,_0x26eb87,_0x1d05e6){return db[_0xfc83('0x38')][_0xfc83('0x55')]({'where':{'id':_0x5d9c67[_0xfc83('0x53')]['id']}})['then'](handleEntityNotFound(_0x26eb87,null))['then'](function(_0x1cb7c2){if(_0x1cb7c2){return _0x1cb7c2[_0xfc83('0x5e')](_0x5d9c67[_0xfc83('0x57')][_0xfc83('0x5f')],_[_0xfc83('0x60')](_0x5d9c67['body'],[_0xfc83('0x5f'),'id'])||{});}})[_0xfc83('0x2f')](respondWithResult(_0x26eb87,null))[_0xfc83('0x51')](handleError(_0x26eb87,null));};exports[_0xfc83('0x61')]=function(_0x1c6a67,_0x425614,_0x3329d4){return db['SquareProject']['find']({'where':{'id':_0x1c6a67[_0xfc83('0x53')]['id']}})[_0xfc83('0x2f')](handleEntityNotFound(_0x425614,null))['then'](function(_0x32ffaf){if(_0x32ffaf){return _0x32ffaf['removeUsers'](_0x1c6a67['query'][_0xfc83('0x5f')])[_0xfc83('0x2f')](function(){if(_[_0xfc83('0x62')](_0x1c6a67[_0xfc83('0x3d')][_0xfc83('0x5f')])){for(var _0x962675=0x0;_0x962675<_0x1c6a67[_0xfc83('0x3d')][_0xfc83('0x5f')][_0xfc83('0x44')];_0x962675+=0x1){socket[_0xfc83('0x63')](_0xfc83('0x64'),{'UserId':Number(_0x1c6a67[_0xfc83('0x3d')]['ids'][_0x962675]),'SquareProjectId':Number(_0x1c6a67['params']['id'])});}}else{socket[_0xfc83('0x63')]('userSquareProject:remove',{'UserId':Number(_0x1c6a67[_0xfc83('0x3d')][_0xfc83('0x5f')]),'SquareProjectId':Number(_0x1c6a67[_0xfc83('0x53')]['id'])});}});}})[_0xfc83('0x2f')](respondWithStatusCode(_0x425614,null))[_0xfc83('0x51')](handleError(_0x425614,null));};exports['getUsers']=function(_0x13d0e9,_0x5f76ac,_0xba7929){var _0x516df0={};var _0x27985b={};var _0x266b78;var _0x27fc71;return db[_0xfc83('0x38')][_0xfc83('0x65')]({'where':{'id':_0x13d0e9[_0xfc83('0x53')]['id']}})[_0xfc83('0x2f')](handleEntityNotFound(_0x5f76ac,null))[_0xfc83('0x2f')](function(_0x5ad332){if(_0x5ad332){_0x266b78=_0x5ad332;_0x27985b[_0xfc83('0x41')]=_[_0xfc83('0x3e')](db[_0xfc83('0x66')][_0xfc83('0x54')]);_0x27985b[_0xfc83('0x3d')]=_[_0xfc83('0x3e')](_0x13d0e9['query']);_0x27985b[_0xfc83('0x3f')]=_[_0xfc83('0x40')](_0x27985b[_0xfc83('0x41')],_0x27985b[_0xfc83('0x3d')]);_0x516df0[_0xfc83('0x42')]=_[_0xfc83('0x40')](_0x27985b[_0xfc83('0x41')],qs[_0xfc83('0x43')](_0x13d0e9[_0xfc83('0x3d')][_0xfc83('0x43')]));_0x516df0['attributes']=_0x516df0['attributes'][_0xfc83('0x44')]?_0x516df0[_0xfc83('0x42')]:_0x27985b['model'];_0x516df0[_0xfc83('0x46')]=qs[_0xfc83('0x47')](_0x13d0e9[_0xfc83('0x3d')][_0xfc83('0x47')]);_0x516df0[_0xfc83('0x48')]=qs['filters'](_['pick'](_0x13d0e9[_0xfc83('0x3d')],_0x27985b['filters']));if(_0x13d0e9['query']['filter']){_0x516df0[_0xfc83('0x48')]=_[_0xfc83('0x4b')](_0x516df0[_0xfc83('0x48')],{'$or':_[_0xfc83('0x37')](_0x516df0[_0xfc83('0x42')],function(_0x4a7ad3){var _0x5965ae={};_0x5965ae[_0x4a7ad3]={'$like':'%'+_0x13d0e9[_0xfc83('0x3d')][_0xfc83('0x4a')]+'%'};return _0x5965ae;})});}_0x516df0=_['merge']({},_0x516df0,_0x13d0e9[_0xfc83('0x4c')]);return _0x266b78[_0xfc83('0x67')](_0x516df0);}})[_0xfc83('0x2f')](function(_0x4379e8){if(_0x4379e8){_0x27fc71=_0x4379e8[_0xfc83('0x44')];if(!_0x13d0e9['query'][_0xfc83('0x45')](_0xfc83('0x68'))){_0x516df0[_0xfc83('0x28')]=qs[_0xfc83('0x28')](_0x13d0e9[_0xfc83('0x3d')][_0xfc83('0x28')]);_0x516df0[_0xfc83('0x26')]=qs[_0xfc83('0x26')](_0x13d0e9[_0xfc83('0x3d')][_0xfc83('0x26')]);}return _0x266b78[_0xfc83('0x67')](_0x516df0);}})['then'](function(_0x552b1a){if(_0x552b1a){return _0x552b1a?{'count':_0x27fc71,'rows':_0x552b1a}:null;}})[_0xfc83('0x2f')](respondWithResult(_0x5f76ac,null))[_0xfc83('0x51')](handleError(_0x5f76ac,null));};
\ No newline at end of file
+var _0x09d9=['removeUsers','isArray','emit','userSquareProject:remove','getUsers','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','sox','ejs','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','register','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','VIRTUAL','merge','count','findAll','rows','catch','show','params','includeAll','include','options','find','create','role','user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addUsers','ids'];(function(_0x4b42b4,_0x29766e){var _0x119af1=function(_0x5216d7){while(--_0x5216d7){_0x4b42b4['push'](_0x4b42b4['shift']());}};_0x119af1(++_0x29766e);}(_0x09d9,0x181));var _0x909d=function(_0xd9d339,_0x821263){_0xd9d339=_0xd9d339-0x0;var _0x52e281=_0x09d9[_0xd9d339];return _0x52e281;};'use strict';var emlformat=require(_0x909d('0x0'));var rimraf=require(_0x909d('0x1'));var zipdir=require(_0x909d('0x2'));var jsonpatch=require(_0x909d('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x909d('0x4'));var Mustache=require(_0x909d('0x5'));var util=require('util');var path=require('path');var sox=require(_0x909d('0x6'));var csv=require('to-csv');var ejs=require(_0x909d('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x909d('0x8'));var crypto=require('crypto');var jsforce=require(_0x909d('0x9'));var deskjs=require(_0x909d('0xa'));var toCsv=require(_0x909d('0xb'));var querystring=require('querystring');var Papa=require(_0x909d('0xc'));var Redis=require(_0x909d('0xd'));var authService=require(_0x909d('0xe'));var qs=require(_0x909d('0xf'));var as=require(_0x909d('0x10'));var hardwareService=require(_0x909d('0x11'));var logger=require(_0x909d('0x12'))('api');var utils=require(_0x909d('0x13'));var config=require(_0x909d('0x14'));var licenseUtil=require(_0x909d('0x15'));var db=require(_0x909d('0x16'))['db'];config[_0x909d('0x17')]=_['defaults'](config[_0x909d('0x17')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x909d('0x17')]));require('./squareProject.socket')[_0x909d('0x18')](socket);function respondWithStatusCode(_0x4bc6b0,_0x43a487){_0x43a487=_0x43a487||0xcc;return function(_0x5704c7){if(_0x5704c7){return _0x4bc6b0[_0x909d('0x19')](_0x43a487);}return _0x4bc6b0[_0x909d('0x1a')](_0x43a487)[_0x909d('0x1b')]();};}function respondWithResult(_0x2a0431,_0x9c8f53){_0x9c8f53=_0x9c8f53||0xc8;return function(_0x3d7f7c){if(_0x3d7f7c){return _0x2a0431[_0x909d('0x1a')](_0x9c8f53)[_0x909d('0x1c')](_0x3d7f7c);}};}function respondWithFilteredResult(_0x2eef52,_0x2c4fff){return function(_0x2ddfe){if(_0x2ddfe){var _0x5ac452=typeof _0x2c4fff[_0x909d('0x1d')]===_0x909d('0x1e')&&typeof _0x2c4fff[_0x909d('0x1f')]==='undefined';var _0x8bcb06=_0x2ddfe['count'];var _0x342aba=_0x5ac452?0x0:_0x2c4fff[_0x909d('0x1d')];var _0x1ae0c7=_0x5ac452?_0x2ddfe['count']:_0x2c4fff['offset']+_0x2c4fff['limit'];var _0x14f85f;if(_0x1ae0c7>=_0x8bcb06){_0x1ae0c7=_0x8bcb06;_0x14f85f=0xc8;}else{_0x14f85f=0xce;}_0x2eef52['status'](_0x14f85f);return _0x2eef52[_0x909d('0x20')](_0x909d('0x21'),_0x342aba+'-'+_0x1ae0c7+'/'+_0x8bcb06)['json'](_0x2ddfe);}return null;};}function patchUpdates(_0x305329){return function(_0x478d7b){try{jsonpatch[_0x909d('0x22')](_0x478d7b,_0x305329,!![]);}catch(_0x382905){return BPromise[_0x909d('0x23')](_0x382905);}return _0x478d7b[_0x909d('0x24')]();};}function saveUpdates(_0x4fda84,_0x3db296){return function(_0x420ea4){if(_0x420ea4){return _0x420ea4[_0x909d('0x25')](_0x4fda84)[_0x909d('0x26')](function(_0x403551){return _0x403551;});}return null;};}function removeEntity(_0x26d198,_0x38ba34){return function(_0x1fd22b){if(_0x1fd22b){return _0x1fd22b[_0x909d('0x27')]()[_0x909d('0x26')](function(){var _0x1b1eb2=_0x1fd22b[_0x909d('0x28')]({'plain':!![]});var _0x3cfa68='SquareProjects';return db[_0x909d('0x29')][_0x909d('0x27')]({'where':{'type':_0x3cfa68,'resourceId':_0x1b1eb2['id']}})[_0x909d('0x26')](function(){return _0x1fd22b;});})[_0x909d('0x26')](function(){_0x26d198[_0x909d('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x585288,_0xd695b){return function(_0x13ebcd){if(!_0x13ebcd){_0x585288['sendStatus'](0x194);}return _0x13ebcd;};}function handleError(_0x1540f8,_0x2cd076){_0x2cd076=_0x2cd076||0x1f4;return function(_0x3de5aa){logger['error'](_0x3de5aa[_0x909d('0x2a')]);if(_0x3de5aa[_0x909d('0x2b')]){delete _0x3de5aa[_0x909d('0x2b')];}_0x1540f8[_0x909d('0x1a')](_0x2cd076)[_0x909d('0x2c')](_0x3de5aa);};}exports[_0x909d('0x2d')]=function(_0x2feee6,_0x38d97e){var _0x261f74={},_0x3113a1={},_0x58ba33={'count':0x0,'rows':[]};var _0x3cad03=_[_0x909d('0x2e')](db[_0x909d('0x2f')][_0x909d('0x30')],function(_0x5f1892){return{'name':_0x5f1892[_0x909d('0x31')],'type':_0x5f1892['type'][_0x909d('0x32')]};});_0x3113a1[_0x909d('0x33')]=_[_0x909d('0x2e')](_0x3cad03,_0x909d('0x2b'));_0x3113a1[_0x909d('0x34')]=_[_0x909d('0x35')](_0x2feee6['query']);_0x3113a1[_0x909d('0x36')]=_[_0x909d('0x37')](_0x3113a1['model'],_0x3113a1['query']);_0x261f74['attributes']=_[_0x909d('0x37')](_0x3113a1[_0x909d('0x33')],qs[_0x909d('0x38')](_0x2feee6[_0x909d('0x34')][_0x909d('0x38')]));_0x261f74[_0x909d('0x39')]=_0x261f74[_0x909d('0x39')][_0x909d('0x3a')]?_0x261f74[_0x909d('0x39')]:_0x3113a1[_0x909d('0x33')];if(!_0x2feee6[_0x909d('0x34')][_0x909d('0x3b')](_0x909d('0x3c'))){_0x261f74[_0x909d('0x1f')]=qs[_0x909d('0x1f')](_0x2feee6[_0x909d('0x34')][_0x909d('0x1f')]);_0x261f74['offset']=qs[_0x909d('0x1d')](_0x2feee6['query'][_0x909d('0x1d')]);}_0x261f74[_0x909d('0x3d')]=qs[_0x909d('0x3e')](_0x2feee6[_0x909d('0x34')]['sort']);_0x261f74['where']=qs[_0x909d('0x36')](_[_0x909d('0x3f')](_0x2feee6[_0x909d('0x34')],_0x3113a1[_0x909d('0x36')]),_0x3cad03);if(_0x2feee6[_0x909d('0x34')][_0x909d('0x40')]){_0x261f74[_0x909d('0x41')]=_['merge'](_0x261f74[_0x909d('0x41')],{'$or':_[_0x909d('0x2e')](_0x3cad03,function(_0x2c4bbf){if(_0x2c4bbf[_0x909d('0x42')]!==_0x909d('0x43')){var _0x2d2da9={};_0x2d2da9[_0x2c4bbf['name']]={'$like':'%'+_0x2feee6['query'][_0x909d('0x40')]+'%'};return _0x2d2da9;}})});}_0x261f74=_[_0x909d('0x44')]({},_0x261f74,_0x2feee6['options']);var _0x113b60={'where':_0x261f74[_0x909d('0x41')]};return db[_0x909d('0x2f')][_0x909d('0x45')](_0x113b60)['then'](function(_0x50173f){_0x58ba33['count']=_0x50173f;if(_0x2feee6[_0x909d('0x34')]['includeAll']){_0x261f74['include']=[{'all':!![]}];}return db[_0x909d('0x2f')][_0x909d('0x46')](_0x261f74);})[_0x909d('0x26')](function(_0x3808d0){_0x58ba33[_0x909d('0x47')]=_0x3808d0;return _0x58ba33;})['then'](respondWithFilteredResult(_0x38d97e,_0x261f74))[_0x909d('0x48')](handleError(_0x38d97e,null));};exports[_0x909d('0x49')]=function(_0x424022,_0x490f83){var _0x3c30f1={'raw':![],'where':{'id':_0x424022[_0x909d('0x4a')]['id']}},_0xb5b6b={};_0xb5b6b['model']=_[_0x909d('0x35')](db[_0x909d('0x2f')][_0x909d('0x30')]);_0xb5b6b[_0x909d('0x34')]=_[_0x909d('0x35')](_0x424022['query']);_0xb5b6b['filters']=_[_0x909d('0x37')](_0xb5b6b['model'],_0xb5b6b[_0x909d('0x34')]);_0x3c30f1[_0x909d('0x39')]=_[_0x909d('0x37')](_0xb5b6b['model'],qs[_0x909d('0x38')](_0x424022[_0x909d('0x34')][_0x909d('0x38')]));_0x3c30f1[_0x909d('0x39')]=_0x3c30f1[_0x909d('0x39')]['length']?_0x3c30f1[_0x909d('0x39')]:_0xb5b6b[_0x909d('0x33')];if(_0x424022[_0x909d('0x34')][_0x909d('0x4b')]){_0x3c30f1[_0x909d('0x4c')]=[{'all':!![]}];}_0x3c30f1=_[_0x909d('0x44')]({},_0x3c30f1,_0x424022[_0x909d('0x4d')]);return db[_0x909d('0x2f')][_0x909d('0x4e')](_0x3c30f1)[_0x909d('0x26')](handleEntityNotFound(_0x490f83,null))[_0x909d('0x26')](respondWithResult(_0x490f83,null))[_0x909d('0x48')](handleError(_0x490f83,null));};exports[_0x909d('0x4f')]=function(_0x1e26da,_0x3bd585){return db[_0x909d('0x2f')][_0x909d('0x4f')](_0x1e26da['body'],{})[_0x909d('0x26')](function(_0x42a7bf){var _0x21b493=_0x1e26da['user'][_0x909d('0x28')]({'plain':!![]});if(!_0x21b493)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x21b493[_0x909d('0x50')]===_0x909d('0x51')){var _0x32bd4f=_0x42a7bf['get']({'plain':!![]});var _0x455dab='SquareProjects';return db[_0x909d('0x52')][_0x909d('0x4e')]({'where':{'name':_0x455dab,'userProfileId':_0x21b493[_0x909d('0x53')]},'raw':!![]})['then'](function(_0x51b607){if(_0x51b607&&_0x51b607[_0x909d('0x54')]===0x0){return db[_0x909d('0x29')][_0x909d('0x4f')]({'name':_0x32bd4f[_0x909d('0x2b')],'resourceId':_0x32bd4f['id'],'type':_0x51b607[_0x909d('0x2b')],'sectionId':_0x51b607['id']},{})[_0x909d('0x26')](function(){return _0x42a7bf;});}else{return _0x42a7bf;}})[_0x909d('0x48')](function(_0x584407){logger[_0x909d('0x55')](_0x909d('0x56'),_0x584407);throw _0x584407;});}return _0x42a7bf;})['then'](respondWithResult(_0x3bd585,0xc9))['catch'](handleError(_0x3bd585,null));};exports['update']=function(_0x2129ca,_0x76fea8){if(_0x2129ca['body']['id']){delete _0x2129ca[_0x909d('0x57')]['id'];}return db[_0x909d('0x2f')]['find']({'where':{'id':_0x2129ca[_0x909d('0x4a')]['id']}})[_0x909d('0x26')](handleEntityNotFound(_0x76fea8,null))['then'](saveUpdates(_0x2129ca['body'],null))[_0x909d('0x26')](respondWithResult(_0x76fea8,null))['catch'](handleError(_0x76fea8,null));};exports['destroy']=function(_0x44fc71,_0x266c52){return db['SquareProject'][_0x909d('0x4e')]({'where':{'id':_0x44fc71[_0x909d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x266c52,null))[_0x909d('0x26')](removeEntity(_0x266c52,null))[_0x909d('0x48')](handleError(_0x266c52,null));};exports['addUsers']=function(_0x4a4d23,_0x2eafd5,_0x2f8360){return db[_0x909d('0x2f')]['find']({'where':{'id':_0x4a4d23[_0x909d('0x4a')]['id']}})[_0x909d('0x26')](handleEntityNotFound(_0x2eafd5,null))['then'](function(_0x473604){if(_0x473604){return _0x473604[_0x909d('0x58')](_0x4a4d23[_0x909d('0x57')][_0x909d('0x59')],_['omit'](_0x4a4d23['body'],[_0x909d('0x59'),'id'])||{});}})[_0x909d('0x26')](respondWithResult(_0x2eafd5,null))['catch'](handleError(_0x2eafd5,null));};exports['removeUsers']=function(_0x1bf11a,_0x8645f1,_0x2b7ed6){return db[_0x909d('0x2f')][_0x909d('0x4e')]({'where':{'id':_0x1bf11a[_0x909d('0x4a')]['id']}})[_0x909d('0x26')](handleEntityNotFound(_0x8645f1,null))[_0x909d('0x26')](function(_0x214818){if(_0x214818){return _0x214818[_0x909d('0x5a')](_0x1bf11a[_0x909d('0x34')][_0x909d('0x59')])[_0x909d('0x26')](function(){if(_[_0x909d('0x5b')](_0x1bf11a[_0x909d('0x34')][_0x909d('0x59')])){for(var _0x48f25e=0x0;_0x48f25e<_0x1bf11a[_0x909d('0x34')][_0x909d('0x59')][_0x909d('0x3a')];_0x48f25e+=0x1){socket[_0x909d('0x5c')](_0x909d('0x5d'),{'UserId':Number(_0x1bf11a[_0x909d('0x34')]['ids'][_0x48f25e]),'SquareProjectId':Number(_0x1bf11a[_0x909d('0x4a')]['id'])});}}else{socket[_0x909d('0x5c')](_0x909d('0x5d'),{'UserId':Number(_0x1bf11a[_0x909d('0x34')][_0x909d('0x59')]),'SquareProjectId':Number(_0x1bf11a[_0x909d('0x4a')]['id'])});}});}})[_0x909d('0x26')](respondWithStatusCode(_0x8645f1,null))[_0x909d('0x48')](handleError(_0x8645f1,null));};exports[_0x909d('0x5e')]=function(_0x49f9af,_0x1d9bcf,_0x1dd987){var _0x4d2e9c={};var _0x148c4e={};var _0x1162f4;var _0xe99000;return db[_0x909d('0x2f')]['findOne']({'where':{'id':_0x49f9af[_0x909d('0x4a')]['id']}})[_0x909d('0x26')](handleEntityNotFound(_0x1d9bcf,null))[_0x909d('0x26')](function(_0xdee707){if(_0xdee707){_0x1162f4=_0xdee707;_0x148c4e[_0x909d('0x33')]=_['keys'](db['User'][_0x909d('0x30')]);_0x148c4e['query']=_['keys'](_0x49f9af[_0x909d('0x34')]);_0x148c4e[_0x909d('0x36')]=_[_0x909d('0x37')](_0x148c4e[_0x909d('0x33')],_0x148c4e['query']);_0x4d2e9c[_0x909d('0x39')]=_[_0x909d('0x37')](_0x148c4e['model'],qs[_0x909d('0x38')](_0x49f9af[_0x909d('0x34')]['fields']));_0x4d2e9c[_0x909d('0x39')]=_0x4d2e9c[_0x909d('0x39')][_0x909d('0x3a')]?_0x4d2e9c[_0x909d('0x39')]:_0x148c4e[_0x909d('0x33')];_0x4d2e9c[_0x909d('0x3d')]=qs[_0x909d('0x3e')](_0x49f9af['query'][_0x909d('0x3e')]);_0x4d2e9c[_0x909d('0x41')]=qs[_0x909d('0x36')](_[_0x909d('0x3f')](_0x49f9af['query'],_0x148c4e[_0x909d('0x36')]));if(_0x49f9af[_0x909d('0x34')][_0x909d('0x40')]){_0x4d2e9c[_0x909d('0x41')]=_[_0x909d('0x44')](_0x4d2e9c['where'],{'$or':_[_0x909d('0x2e')](_0x4d2e9c[_0x909d('0x39')],function(_0x5b01bd){var _0x4a9400={};_0x4a9400[_0x5b01bd]={'$like':'%'+_0x49f9af[_0x909d('0x34')][_0x909d('0x40')]+'%'};return _0x4a9400;})});}_0x4d2e9c=_[_0x909d('0x44')]({},_0x4d2e9c,_0x49f9af['options']);return _0x1162f4[_0x909d('0x5e')](_0x4d2e9c);}})[_0x909d('0x26')](function(_0x5e0cd3){if(_0x5e0cd3){_0xe99000=_0x5e0cd3[_0x909d('0x3a')];if(!_0x49f9af[_0x909d('0x34')]['hasOwnProperty'](_0x909d('0x3c'))){_0x4d2e9c['limit']=qs[_0x909d('0x1f')](_0x49f9af[_0x909d('0x34')][_0x909d('0x1f')]);_0x4d2e9c[_0x909d('0x1d')]=qs[_0x909d('0x1d')](_0x49f9af[_0x909d('0x34')][_0x909d('0x1d')]);}return _0x1162f4[_0x909d('0x5e')](_0x4d2e9c);}})[_0x909d('0x26')](function(_0xb96f8a){if(_0xb96f8a){return _0xb96f8a?{'count':_0xe99000,'rows':_0xb96f8a}:null;}})[_0x909d('0x26')](respondWithResult(_0x1d9bcf,null))[_0x909d('0x48')](handleError(_0x1d9bcf,null));};
\ No newline at end of file
index dd82e5e..07c5de2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8db=['hasOwnProperty','hook','exports','events','../../mysqldb','SquareProject','setMaxListeners','update','remove','emit'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xd8db,0x67));var _0xbd8d=function(_0x5aedc7,_0x102a15){_0x5aedc7=_0x5aedc7-0x0;var _0x54a4ce=_0xd8db[_0x5aedc7];return _0x54a4ce;};'use strict';var EventEmitter=require(_0xbd8d('0x0'));var SquareProject=require(_0xbd8d('0x1'))['db'][_0xbd8d('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xbd8d('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xbd8d('0x4'),'afterDestroy':_0xbd8d('0x5')};function emitEvent(_0x20fc14){return function(_0x275b22,_0xdbea94,_0x1cc031){SquareProjectEvents[_0xbd8d('0x6')](_0x20fc14+':'+_0x275b22['id'],_0x275b22);SquareProjectEvents[_0xbd8d('0x6')](_0x20fc14,_0x275b22);_0x1cc031(null);};}for(var e in events){if(events[_0xbd8d('0x7')](e)){var event=events[e];SquareProject[_0xbd8d('0x8')](e,emitEvent(event));}}module[_0xbd8d('0x9')]=SquareProjectEvents;
\ No newline at end of file
+var _0xdc30=['hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save','update','emit'];(function(_0x9ba863,_0x2490d9){var _0x54ffff=function(_0x2a08d9){while(--_0x2a08d9){_0x9ba863['push'](_0x9ba863['shift']());}};_0x54ffff(++_0x2490d9);}(_0xdc30,0x1f3));var _0x0dc3=function(_0x4cbb8e,_0x1047c8){_0x4cbb8e=_0x4cbb8e-0x0;var _0x17846f=_0xdc30[_0x4cbb8e];return _0x17846f;};'use strict';var EventEmitter=require('events');var SquareProject=require(_0x0dc3('0x0'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x0dc3('0x1')](0x0);var events={'afterCreate':_0x0dc3('0x2'),'afterUpdate':_0x0dc3('0x3'),'afterDestroy':'remove'};function emitEvent(_0x2590aa){return function(_0x142ca2,_0x2dd52d,_0x908291){SquareProjectEvents['emit'](_0x2590aa+':'+_0x142ca2['id'],_0x142ca2);SquareProjectEvents[_0x0dc3('0x4')](_0x2590aa,_0x142ca2);_0x908291(null);};}for(var e in events){if(events[_0x0dc3('0x5')](e)){var event=events[e];SquareProject[_0x0dc3('0x6')](e,emitEvent(event));}}module[_0x0dc3('0x7')]=SquareProjectEvents;
\ No newline at end of file
index f89dd3c..0a8f8da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2b2=['publishedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./squareProject.attributes','exports','SquareProject','square_projects','changed','preproduction','savedAt','production'];(function(_0x2046dd,_0x40a9ab){var _0x2eb055=function(_0x1c65e8){while(--_0x1c65e8){_0x2046dd['push'](_0x2046dd['shift']());}};_0x2eb055(++_0x40a9ab);}(_0xa2b2,0x1f1));var _0x2a2b=function(_0x41cc22,_0x335c08){_0x41cc22=_0x41cc22-0x0;var _0x344fd4=_0xa2b2[_0x41cc22];return _0x344fd4;};'use strict';var _=require(_0x2a2b('0x0'));var util=require(_0x2a2b('0x1'));var logger=require('../../config/logger')(_0x2a2b('0x2'));var moment=require(_0x2a2b('0x3'));var BPromise=require(_0x2a2b('0x4'));var rp=require(_0x2a2b('0x5'));var fs=require('fs');var path=require(_0x2a2b('0x6'));var rimraf=require('rimraf');var config=require(_0x2a2b('0x7'));var attributes=require(_0x2a2b('0x8'));module[_0x2a2b('0x9')]=function(_0x5c8986,_0x47ad80){return _0x5c8986['define'](_0x2a2b('0xa'),attributes,{'tableName':_0x2a2b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3a2047,_0x502099,_0x3b96a7){if(_0x3a2047[_0x2a2b('0xc')](_0x2a2b('0xd'))){_0x3a2047[_0x2a2b('0xe')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x3a2047['changed'](_0x2a2b('0xf'))){_0x3a2047[_0x2a2b('0x10')]=moment()[_0x2a2b('0x11')](_0x2a2b('0x12'));}_0x3b96a7(null,_0x3a2047);}}});};
\ No newline at end of file
+var _0xed03=['path','rimraf','../../config/environment','define','SquareProject','square_projects','changed','preproduction','savedAt','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','util','api','moment','bluebird','request-promise'];(function(_0x480f34,_0x2f37df){var _0x245d27=function(_0x5e5b9e){while(--_0x5e5b9e){_0x480f34['push'](_0x480f34['shift']());}};_0x245d27(++_0x2f37df);}(_0xed03,0x83));var _0x3ed0=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0xed03[_0x279d37];return _0x530173;};'use strict';var _=require('lodash');var util=require(_0x3ed0('0x0'));var logger=require('../../config/logger')(_0x3ed0('0x1'));var moment=require(_0x3ed0('0x2'));var BPromise=require(_0x3ed0('0x3'));var rp=require(_0x3ed0('0x4'));var fs=require('fs');var path=require(_0x3ed0('0x5'));var rimraf=require(_0x3ed0('0x6'));var config=require(_0x3ed0('0x7'));var attributes=require('./squareProject.attributes');module['exports']=function(_0x166b57,_0x298549){return _0x166b57[_0x3ed0('0x8')](_0x3ed0('0x9'),attributes,{'tableName':_0x3ed0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x49448b,_0x3fa7d8,_0x26f110){if(_0x49448b[_0x3ed0('0xb')](_0x3ed0('0xc'))){_0x49448b[_0x3ed0('0xd')]=moment()['format'](_0x3ed0('0xe'));}if(_0x49448b[_0x3ed0('0xb')](_0x3ed0('0xf'))){_0x49448b[_0x3ed0('0x10')]=moment()['format'](_0x3ed0('0xe'));}_0x26f110(null,_0x49448b);}}});};
\ No newline at end of file
index 80cd3c0..e994798 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf445=['map','then','ShowSquareProject','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./squareProject.socket','register','request','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SquareProject','options','raw','include','model','attributes'];(function(_0x496adf,_0x48c502){var _0x220377=function(_0x3dda53){while(--_0x3dda53){_0x496adf['push'](_0x496adf['shift']());}};_0x220377(++_0x48c502);}(_0xf445,0xe1));var _0x5f44=function(_0x4b4844,_0x2f0dfb){_0x4b4844=_0x4b4844-0x0;var _0x575192=_0xf445[_0x4b4844];return _0x575192;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x5f44('0x0'));var BPromise=require(_0x5f44('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5f44('0x2'));var db=require(_0x5f44('0x3'))['db'];var utils=require(_0x5f44('0x4'));var logger=require(_0x5f44('0x5'))(_0x5f44('0x6'));var config=require('../../config/environment');var jayson=require(_0x5f44('0x7'));var client=jayson[_0x5f44('0x8')][_0x5f44('0x9')]({'port':0x232a});config['redis']=_[_0x5f44('0xa')](config[_0x5f44('0xb')],{'host':_0x5f44('0xc'),'port':0x18eb});var socket=require(_0x5f44('0xd'))(new Redis(config[_0x5f44('0xb')]));require(_0x5f44('0xe'))[_0x5f44('0xf')](socket);function respondWithRpcPromise(_0x58109b,_0xf39747,_0x5daee9){return new BPromise(function(_0x3b8b29,_0x3beac4){return client[_0x5f44('0x10')](_0x58109b,_0x5daee9)['then'](function(_0x324c22){logger[_0x5f44('0x11')](_0x5f44('0x12'),_0xf39747,_0x5f44('0x13'));logger[_0x5f44('0x14')](_0x5f44('0x15'),_0xf39747,_0x5f44('0x13'),JSON[_0x5f44('0x16')](_0x324c22));if(_0x324c22[_0x5f44('0x17')]){if(_0x324c22[_0x5f44('0x17')][_0x5f44('0x18')]===0x1f4){logger[_0x5f44('0x17')](_0x5f44('0x12'),_0xf39747,_0x324c22[_0x5f44('0x17')][_0x5f44('0x19')]);return _0x3beac4(_0x324c22[_0x5f44('0x17')][_0x5f44('0x19')]);}logger[_0x5f44('0x17')](_0x5f44('0x12'),_0xf39747,_0x324c22[_0x5f44('0x17')][_0x5f44('0x19')]);return _0x3b8b29(_0x324c22[_0x5f44('0x17')][_0x5f44('0x19')]);}else{logger[_0x5f44('0x11')]('SquareProject,\x20%s,\x20%s',_0xf39747,_0x5f44('0x13'));_0x3b8b29(_0x324c22[_0x5f44('0x1a')][_0x5f44('0x19')]);}})[_0x5f44('0x1b')](function(_0x8a576c){logger[_0x5f44('0x17')](_0x5f44('0x12'),_0xf39747,_0x8a576c);_0x3beac4(_0x8a576c);});});}exports['ShowSquareProject']=function(_0x218865){var _0x876f63=this;return new Promise(function(_0x5a6cb2,_0x511271){return db[_0x5f44('0x1c')]['find']({'raw':_0x218865['options']?_0x218865[_0x5f44('0x1d')][_0x5f44('0x1e')]===undefined?!![]:![]:!![],'where':_0x218865[_0x5f44('0x1d')]?_0x218865[_0x5f44('0x1d')]['where']||null:null,'attributes':_0x218865[_0x5f44('0x1d')]?_0x218865[_0x5f44('0x1d')]['attributes']||null:null,'include':_0x218865['options']?_0x218865[_0x5f44('0x1d')][_0x5f44('0x1f')]?_['map'](_0x218865[_0x5f44('0x1d')][_0x5f44('0x1f')],function(_0x3b14c4){return{'model':db[_0x3b14c4[_0x5f44('0x20')]],'as':_0x3b14c4['as'],'attributes':_0x3b14c4[_0x5f44('0x21')],'include':_0x3b14c4[_0x5f44('0x1f')]?_[_0x5f44('0x22')](_0x3b14c4[_0x5f44('0x1f')],function(_0x517fc0){return{'model':db[_0x517fc0[_0x5f44('0x20')]],'as':_0x517fc0['as'],'attributes':_0x517fc0[_0x5f44('0x21')],'include':_0x517fc0[_0x5f44('0x1f')]?_['map'](_0x517fc0[_0x5f44('0x1f')],function(_0x364bbc){return{'model':db[_0x364bbc[_0x5f44('0x20')]],'as':_0x364bbc['as'],'attributes':_0x364bbc[_0x5f44('0x21')]};}):[]};}):[]};}):[]:[]})[_0x5f44('0x23')](function(_0xa63dec){logger[_0x5f44('0x11')]('ShowSquareProject',_0x218865);logger['debug'](_0x5f44('0x24'),_0x218865,JSON[_0x5f44('0x16')](_0xa63dec));_0x5a6cb2(_0xa63dec);})['catch'](function(_0x3be107){logger[_0x5f44('0x17')](_0x5f44('0x24'),_0x3be107[_0x5f44('0x19')],_0x218865);_0x511271(_0x876f63[_0x5f44('0x17')](0x1f4,_0x3be107[_0x5f44('0x19')]));});});};
\ No newline at end of file
+var _0x6667=['register','request','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSquareProject','options','where','attributes','include','model','map','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./squareProject.socket'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x6667,0xce));var _0x7666=function(_0x54edc9,_0x345f01){_0x54edc9=_0x54edc9-0x0;var _0x2ae7a9=_0x6667[_0x54edc9];return _0x2ae7a9;};'use strict';var _=require(_0x7666('0x0'));var util=require(_0x7666('0x1'));var moment=require(_0x7666('0x2'));var BPromise=require(_0x7666('0x3'));var rs=require(_0x7666('0x4'));var fs=require('fs');var Redis=require(_0x7666('0x5'));var db=require(_0x7666('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x7666('0x7'))(_0x7666('0x8'));var config=require(_0x7666('0x9'));var jayson=require(_0x7666('0xa'));var client=jayson['client'][_0x7666('0xb')]({'port':0x232a});config[_0x7666('0xc')]=_['defaults'](config[_0x7666('0xc')],{'host':_0x7666('0xd'),'port':0x18eb});var socket=require(_0x7666('0xe'))(new Redis(config[_0x7666('0xc')]));require(_0x7666('0xf'))[_0x7666('0x10')](socket);function respondWithRpcPromise(_0x329cc7,_0x2f9754,_0x1ac7db){return new BPromise(function(_0x2143d5,_0x391138){return client[_0x7666('0x11')](_0x329cc7,_0x1ac7db)[_0x7666('0x12')](function(_0x19717f){logger[_0x7666('0x13')](_0x7666('0x14'),_0x2f9754,_0x7666('0x15'));logger[_0x7666('0x16')](_0x7666('0x17'),_0x2f9754,_0x7666('0x15'),JSON[_0x7666('0x18')](_0x19717f));if(_0x19717f[_0x7666('0x19')]){if(_0x19717f['error'][_0x7666('0x1a')]===0x1f4){logger[_0x7666('0x19')](_0x7666('0x14'),_0x2f9754,_0x19717f[_0x7666('0x19')][_0x7666('0x1b')]);return _0x391138(_0x19717f['error'][_0x7666('0x1b')]);}logger['error']('SquareProject,\x20%s,\x20%s',_0x2f9754,_0x19717f[_0x7666('0x19')]['message']);return _0x2143d5(_0x19717f[_0x7666('0x19')][_0x7666('0x1b')]);}else{logger[_0x7666('0x13')](_0x7666('0x14'),_0x2f9754,_0x7666('0x15'));_0x2143d5(_0x19717f[_0x7666('0x1c')]['message']);}})[_0x7666('0x1d')](function(_0x257c7d){logger[_0x7666('0x19')]('SquareProject,\x20%s,\x20%s',_0x2f9754,_0x257c7d);_0x391138(_0x257c7d);});});}exports[_0x7666('0x1e')]=function(_0x1ae69c){var _0x12a647=this;return new Promise(function(_0x2174c0,_0x5a9bfd){return db['SquareProject']['find']({'raw':_0x1ae69c[_0x7666('0x1f')]?_0x1ae69c['options']['raw']===undefined?!![]:![]:!![],'where':_0x1ae69c[_0x7666('0x1f')]?_0x1ae69c[_0x7666('0x1f')][_0x7666('0x20')]||null:null,'attributes':_0x1ae69c[_0x7666('0x1f')]?_0x1ae69c[_0x7666('0x1f')][_0x7666('0x21')]||null:null,'include':_0x1ae69c[_0x7666('0x1f')]?_0x1ae69c['options'][_0x7666('0x22')]?_['map'](_0x1ae69c[_0x7666('0x1f')]['include'],function(_0x199e27){return{'model':db[_0x199e27[_0x7666('0x23')]],'as':_0x199e27['as'],'attributes':_0x199e27['attributes'],'include':_0x199e27[_0x7666('0x22')]?_[_0x7666('0x24')](_0x199e27[_0x7666('0x22')],function(_0x56d12f){return{'model':db[_0x56d12f[_0x7666('0x23')]],'as':_0x56d12f['as'],'attributes':_0x56d12f[_0x7666('0x21')],'include':_0x56d12f['include']?_[_0x7666('0x24')](_0x56d12f['include'],function(_0x4dc73c){return{'model':db[_0x4dc73c['model']],'as':_0x4dc73c['as'],'attributes':_0x4dc73c[_0x7666('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3c5056){logger[_0x7666('0x13')](_0x7666('0x1e'),_0x1ae69c);logger['debug']('ShowSquareProject',_0x1ae69c,JSON[_0x7666('0x18')](_0x3c5056));_0x2174c0(_0x3c5056);})[_0x7666('0x1d')](function(_0x1e56fa){logger[_0x7666('0x19')](_0x7666('0x1e'),_0x1e56fa[_0x7666('0x1b')],_0x1ae69c);_0x5a9bfd(_0x12a647[_0x7666('0x19')](0x1f4,_0x1e56fa[_0x7666('0x1b')]));});});};
\ No newline at end of file
index 53e54b6..4bcf7d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc128=['length','./squareProject.events','save','emit','register'];(function(_0x31e4bb,_0x3c7802){var _0x426aa3=function(_0x4d2792){while(--_0x4d2792){_0x31e4bb['push'](_0x31e4bb['shift']());}};_0x426aa3(++_0x3c7802);}(_0xc128,0x10f));var _0x8c12=function(_0x3e5a81,_0x4fbcf1){_0x3e5a81=_0x3e5a81-0x0;var _0x8f5dcc=_0xc128[_0x3e5a81];return _0x8f5dcc;};'use strict';var SquareProjectEvents=require(_0x8c12('0x0'));var events=[_0x8c12('0x1'),'remove','update'];function createListener(_0x1fd6ff,_0x2cc538){return function(_0x271c98){_0x2cc538[_0x8c12('0x2')](_0x1fd6ff,_0x271c98);};}function removeListener(_0x49d2da,_0x357fb1){return function(){SquareProjectEvents['removeListener'](_0x49d2da,_0x357fb1);};}exports[_0x8c12('0x3')]=function(_0x2347e3){for(var _0x53450a=0x0,_0x3366e0=events[_0x8c12('0x4')];_0x53450a<_0x3366e0;_0x53450a++){var _0x29b3b0=events[_0x53450a];var _0x32ccc1=createListener('squareProject:'+_0x29b3b0,_0x2347e3);SquareProjectEvents['on'](_0x29b3b0,_0x32ccc1);}};
\ No newline at end of file
+var _0xcbc2=['emit','removeListener','register','length','./squareProject.events','save','update'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xcbc2,0x6d));var _0x2cbc=function(_0x2c072b,_0x6c4449){_0x2c072b=_0x2c072b-0x0;var _0x167ee3=_0xcbc2[_0x2c072b];return _0x167ee3;};'use strict';var SquareProjectEvents=require(_0x2cbc('0x0'));var events=[_0x2cbc('0x1'),'remove',_0x2cbc('0x2')];function createListener(_0x4eb421,_0x26881f){return function(_0x295ad7){_0x26881f[_0x2cbc('0x3')](_0x4eb421,_0x295ad7);};}function removeListener(_0x2189bb,_0x4f8e7a){return function(){SquareProjectEvents[_0x2cbc('0x4')](_0x2189bb,_0x4f8e7a);};}exports[_0x2cbc('0x5')]=function(_0x4a55e6){for(var _0x1bd23f=0x0,_0x211ef2=events[_0x2cbc('0x6')];_0x1bd23f<_0x211ef2;_0x1bd23f++){var _0x45b8f4=events[_0x1bd23f];var _0x406a85=createListener('squareProject:'+_0x45b8f4,_0x4a55e6);SquareProjectEvents['on'](_0x45b8f4,_0x406a85);}};
\ No newline at end of file
index b64cc51..962215a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','index','/:id','isAuthenticated','show','/:id/download','download','post','create','put','update','destroy','exports','multer','path','connect-timeout','express'];(function(_0x3ad2fc,_0x4c5e28){var _0x326336=function(_0x52fb0c){while(--_0x52fb0c){_0x3ad2fc['push'](_0x3ad2fc['shift']());}};_0x326336(++_0x4c5e28);}(_0x4975,0x86));var _0x5497=function(_0x29504f,_0x36a166){_0x29504f=_0x29504f-0x0;var _0x558b70=_0x4975[_0x29504f];return _0x558b70;};'use strict';var multer=require(_0x5497('0x0'));var util=require('util');var path=require(_0x5497('0x1'));var timeout=require(_0x5497('0x2'));var express=require(_0x5497('0x3'));var router=express[_0x5497('0x4')]();var fs_extra=require(_0x5497('0x5'));var auth=require(_0x5497('0x6'));var interaction=require(_0x5497('0x7'));var config=require(_0x5497('0x8'));var controller=require(_0x5497('0x9'));router[_0x5497('0xa')]('/',auth['isAuthenticated'](),controller[_0x5497('0xb')]);router['get'](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0xe')]);router['get'](_0x5497('0xf'),auth['isAuthenticated'](),controller[_0x5497('0x10')]);router[_0x5497('0x11')]('/',auth[_0x5497('0xd')](),controller[_0x5497('0x12')]);router[_0x5497('0x13')](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x5497('0x15')]);module[_0x5497('0x16')]=router;
\ No newline at end of file
+var _0xe14b=['Router','../../components/auth/service','./squareRecording.controller','get','isAuthenticated','index','/:id','download','post','delete','destroy','exports','multer','util','express'];(function(_0x5ef1e7,_0x234593){var _0xfb8f1=function(_0x5280aa){while(--_0x5280aa){_0x5ef1e7['push'](_0x5ef1e7['shift']());}};_0xfb8f1(++_0x234593);}(_0xe14b,0x93));var _0xbe14=function(_0x149a50,_0x59ba3d){_0x149a50=_0x149a50-0x0;var _0x160b44=_0xe14b[_0x149a50];return _0x160b44;};'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['show']);router['get']('/:id/download',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0xb')]('/',auth[_0xbe14('0x7')](),controller['create']);router['put'](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0xc')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xd')]);module[_0xbe14('0xe')]=router;
\ No newline at end of file
index 842e18a..400462c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['sequelize','exports','STRING','VIRTUAL','getDataValue','savePath','lastIndexOf'];(function(_0x3a8ef3,_0x3c9849){var _0x4ae8cc=function(_0x12e6ef){while(--_0x12e6ef){_0x3a8ef3['push'](_0x3a8ef3['shift']());}};_0x4ae8cc(++_0x3c9849);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')]},'callerid':{'type':Sequelize[_0x7995('0x2')]},'calleridname':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x7995('0x2')]},'extension':{'type':Sequelize[_0x7995('0x2')]},'priority':{'type':Sequelize[_0x7995('0x2')]},'accountcode':{'type':Sequelize[_0x7995('0x2')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0x7995('0x2')]},'saveName':{'type':Sequelize[_0x7995('0x2')]},'filename':{'type':Sequelize[_0x7995('0x2')]},'savePath':{'type':Sequelize[_0x7995('0x2')]},'format':{'type':Sequelize[_0x7995('0x3')],'get':function(){var _0x326741='';var _0x4996ca=this[_0x7995('0x4')](_0x7995('0x5'));if(_0x4996ca){_0x326741=_0x4996ca['substring'](_0x4996ca[_0x7995('0x6')]('.'));}return _0x326741;}}};
\ No newline at end of file
+var _0x8ef6=['VIRTUAL','savePath','substring','lastIndexOf','sequelize','exports','STRING'];(function(_0xb3aff4,_0x1ba9ff){var _0x36f6f1=function(_0x277027){while(--_0x277027){_0xb3aff4['push'](_0xb3aff4['shift']());}};_0x36f6f1(++_0x1ba9ff);}(_0x8ef6,0xf2));var _0x68ef=function(_0xeb9212,_0x5544b0){_0xeb9212=_0xeb9212-0x0;var _0xaf722c=_0x8ef6[_0xeb9212];return _0xaf722c;};'use strict';var Sequelize=require(_0x68ef('0x0'));module[_0x68ef('0x1')]={'uniqueid':{'type':Sequelize[_0x68ef('0x2')]},'callerid':{'type':Sequelize[_0x68ef('0x2')]},'calleridname':{'type':Sequelize[_0x68ef('0x2')]},'context':{'type':Sequelize[_0x68ef('0x2')]},'extension':{'type':Sequelize[_0x68ef('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x68ef('0x2')]},'dnid':{'type':Sequelize[_0x68ef('0x2')]},'projectName':{'type':Sequelize[_0x68ef('0x2')]},'saveName':{'type':Sequelize[_0x68ef('0x2')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x68ef('0x3')],'get':function(){var _0x4740e8='';var _0x2de776=this['getDataValue'](_0x68ef('0x4'));if(_0x2de776){_0x4740e8=_0x2de776[_0x68ef('0x5')](_0x2de776[_0x68ef('0x6')]('.'));}return _0x4740e8;}}};
\ No newline at end of file
index 5c794a4..9618a5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2555=['Content-Range','apply','reject','save','then','destroy','send','map','SquareRecording','rawAttributes','type','name','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','limit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','params','find','catch','create','body','update','../../components/encryptor','uniqueid','savePath','filename','format','existsSync','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','download','unlink','Not\x20found','isNil','Entity\x20not\x20found','info','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','set'];(function(_0x35a274,_0x98b399){var _0x40d905=function(_0x5c8455){while(--_0x5c8455){_0x35a274['push'](_0x35a274['shift']());}};_0x40d905(++_0x98b399);}(_0x2555,0x1ab));var _0x5255=function(_0x5b9f1c,_0x57a8af){_0x5b9f1c=_0x5b9f1c-0x0;var _0x11d728=_0x2555[_0x5b9f1c];return _0x11d728;};'use strict';var emlformat=require(_0x5255('0x0'));var rimraf=require(_0x5255('0x1'));var zipdir=require(_0x5255('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5255('0x3'));var moment=require('moment');var BPromise=require(_0x5255('0x4'));var Mustache=require('mustache');var util=require(_0x5255('0x5'));var path=require(_0x5255('0x6'));var sox=require('sox');var csv=require(_0x5255('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5255('0x8'));var _=require(_0x5255('0x9'));var squel=require(_0x5255('0xa'));var crypto=require(_0x5255('0xb'));var jsforce=require(_0x5255('0xc'));var deskjs=require(_0x5255('0xd'));var toCsv=require('to-csv');var querystring=require(_0x5255('0xe'));var Papa=require(_0x5255('0xf'));var Redis=require(_0x5255('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x5255('0x11'));var as=require(_0x5255('0x12'));var hardwareService=require(_0x5255('0x13'));var logger=require(_0x5255('0x14'))(_0x5255('0x15'));var utils=require(_0x5255('0x16'));var config=require(_0x5255('0x17'));var licenseUtil=require(_0x5255('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21f323,_0x1bd7ce){_0x1bd7ce=_0x1bd7ce||0xcc;return function(_0x715725){if(_0x715725){return _0x21f323[_0x5255('0x19')](_0x1bd7ce);}return _0x21f323[_0x5255('0x1a')](_0x1bd7ce)[_0x5255('0x1b')]();};}function respondWithResult(_0x15b327,_0x3b0fea){_0x3b0fea=_0x3b0fea||0xc8;return function(_0x39e35a){if(_0x39e35a){return _0x15b327['status'](_0x3b0fea)[_0x5255('0x1c')](_0x39e35a);}};}function respondWithFilteredResult(_0x325499,_0x52e39a){return function(_0x4f0720){if(_0x4f0720){var _0x4a3d23=typeof _0x52e39a[_0x5255('0x1d')]==='undefined'&&typeof _0x52e39a['limit']===_0x5255('0x1e');var _0x31ce63=_0x4f0720[_0x5255('0x1f')];var _0x179459=_0x4a3d23?0x0:_0x52e39a[_0x5255('0x1d')];var _0x283c21=_0x4a3d23?_0x4f0720['count']:_0x52e39a[_0x5255('0x1d')]+_0x52e39a['limit'];var _0x47d44c;if(_0x283c21>=_0x31ce63){_0x283c21=_0x31ce63;_0x47d44c=0xc8;}else{_0x47d44c=0xce;}_0x325499[_0x5255('0x1a')](_0x47d44c);return _0x325499[_0x5255('0x20')](_0x5255('0x21'),_0x179459+'-'+_0x283c21+'/'+_0x31ce63)['json'](_0x4f0720);}return null;};}function patchUpdates(_0x41df18){return function(_0x10c9db){try{jsonpatch[_0x5255('0x22')](_0x10c9db,_0x41df18,!![]);}catch(_0x424a20){return BPromise[_0x5255('0x23')](_0x424a20);}return _0x10c9db[_0x5255('0x24')]();};}function saveUpdates(_0x548ca1,_0x1c977f){return function(_0x34270b){if(_0x34270b){return _0x34270b['update'](_0x548ca1)[_0x5255('0x25')](function(_0x2eb033){return _0x2eb033;});}return null;};}function removeEntity(_0x5f3721,_0xd53409){return function(_0xf7c58e){if(_0xf7c58e){return _0xf7c58e[_0x5255('0x26')]()['then'](function(){_0x5f3721[_0x5255('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x418e18,_0xc150dc){return function(_0x4532f3){if(!_0x4532f3){_0x418e18[_0x5255('0x19')](0x194);}return _0x4532f3;};}function handleError(_0x38a0e0,_0x3b6289){_0x3b6289=_0x3b6289||0x1f4;return function(_0x58151e){logger['error'](_0x58151e['stack']);if(_0x58151e['name']){delete _0x58151e['name'];}_0x38a0e0['status'](_0x3b6289)[_0x5255('0x27')](_0x58151e);};}exports['index']=function(_0x1a1d47,_0x44e3c){var _0x26d841={},_0x404527={},_0x5d1d47={'count':0x0,'rows':[]};var _0x10a1e1=_[_0x5255('0x28')](db[_0x5255('0x29')][_0x5255('0x2a')],function(_0x436504){return{'name':_0x436504['fieldName'],'type':_0x436504[_0x5255('0x2b')]['key']};});_0x404527['model']=_[_0x5255('0x28')](_0x10a1e1,_0x5255('0x2c'));_0x404527[_0x5255('0x2d')]=_[_0x5255('0x2e')](_0x1a1d47[_0x5255('0x2d')]);_0x404527[_0x5255('0x2f')]=_[_0x5255('0x30')](_0x404527[_0x5255('0x31')],_0x404527['query']);_0x26d841['attributes']=_[_0x5255('0x30')](_0x404527[_0x5255('0x31')],qs['fields'](_0x1a1d47[_0x5255('0x2d')][_0x5255('0x32')]));_0x26d841[_0x5255('0x33')]=_0x26d841[_0x5255('0x33')][_0x5255('0x34')]?_0x26d841[_0x5255('0x33')]:_0x404527[_0x5255('0x31')];if(!_0x1a1d47[_0x5255('0x2d')][_0x5255('0x35')]('nolimit')){_0x26d841['limit']=qs[_0x5255('0x36')](_0x1a1d47[_0x5255('0x2d')]['limit']);_0x26d841['offset']=qs[_0x5255('0x1d')](_0x1a1d47['query'][_0x5255('0x1d')]);}_0x26d841[_0x5255('0x37')]=qs[_0x5255('0x38')](_0x1a1d47['query'][_0x5255('0x38')]);_0x26d841[_0x5255('0x39')]=qs[_0x5255('0x2f')](_['pick'](_0x1a1d47[_0x5255('0x2d')],_0x404527[_0x5255('0x2f')]),_0x10a1e1);if(_0x1a1d47[_0x5255('0x2d')][_0x5255('0x3a')]){_0x26d841[_0x5255('0x39')]=_[_0x5255('0x3b')](_0x26d841[_0x5255('0x39')],{'$or':_[_0x5255('0x28')](_0x10a1e1,function(_0x3edb20){if(_0x3edb20[_0x5255('0x2b')]!=='VIRTUAL'){var _0x348160={};_0x348160[_0x3edb20[_0x5255('0x2c')]]={'$like':'%'+_0x1a1d47[_0x5255('0x2d')][_0x5255('0x3a')]+'%'};return _0x348160;}})});}_0x26d841=_[_0x5255('0x3b')]({},_0x26d841,_0x1a1d47[_0x5255('0x3c')]);var _0x521fe2={'where':_0x26d841[_0x5255('0x39')]};return db[_0x5255('0x29')][_0x5255('0x1f')](_0x521fe2)[_0x5255('0x25')](function(_0x285a54){_0x5d1d47[_0x5255('0x1f')]=_0x285a54;if(_0x1a1d47[_0x5255('0x2d')][_0x5255('0x3d')]){_0x26d841[_0x5255('0x3e')]=[{'all':!![]}];}return db['SquareRecording'][_0x5255('0x3f')](_0x26d841);})['then'](function(_0x19238e){_0x5d1d47[_0x5255('0x40')]=_0x19238e;return _0x5d1d47;})['then'](respondWithFilteredResult(_0x44e3c,_0x26d841))['catch'](handleError(_0x44e3c,null));};exports['show']=function(_0x53b379,_0x506898){var _0x209fce={'raw':!![],'where':{'id':_0x53b379[_0x5255('0x41')]['id']}},_0x54a28a={};_0x54a28a[_0x5255('0x31')]=_[_0x5255('0x2e')](db[_0x5255('0x29')][_0x5255('0x2a')]);_0x54a28a[_0x5255('0x2d')]=_[_0x5255('0x2e')](_0x53b379[_0x5255('0x2d')]);_0x54a28a[_0x5255('0x2f')]=_[_0x5255('0x30')](_0x54a28a[_0x5255('0x31')],_0x54a28a[_0x5255('0x2d')]);_0x209fce[_0x5255('0x33')]=_['intersection'](_0x54a28a[_0x5255('0x31')],qs[_0x5255('0x32')](_0x53b379[_0x5255('0x2d')]['fields']));_0x209fce[_0x5255('0x33')]=_0x209fce['attributes']['length']?_0x209fce[_0x5255('0x33')]:_0x54a28a[_0x5255('0x31')];if(_0x53b379[_0x5255('0x2d')][_0x5255('0x3d')]){_0x209fce[_0x5255('0x3e')]=[{'all':!![]}];}_0x209fce=_[_0x5255('0x3b')]({},_0x209fce,_0x53b379[_0x5255('0x3c')]);return db['SquareRecording'][_0x5255('0x42')](_0x209fce)['then'](handleEntityNotFound(_0x506898,null))[_0x5255('0x25')](respondWithResult(_0x506898,null))[_0x5255('0x43')](handleError(_0x506898,null));};exports[_0x5255('0x44')]=function(_0x1c8dd7,_0x20df4a){return db[_0x5255('0x29')][_0x5255('0x44')](_0x1c8dd7[_0x5255('0x45')],{})['then'](respondWithResult(_0x20df4a,0xc9))['catch'](handleError(_0x20df4a,null));};exports[_0x5255('0x46')]=function(_0x429080,_0x466b0c){if(_0x429080['body']['id']){delete _0x429080['body']['id'];}return db[_0x5255('0x29')][_0x5255('0x42')]({'where':{'id':_0x429080[_0x5255('0x41')]['id']}})['then'](handleEntityNotFound(_0x466b0c,null))[_0x5255('0x25')](saveUpdates(_0x429080[_0x5255('0x45')],null))[_0x5255('0x25')](respondWithResult(_0x466b0c,null))['catch'](handleError(_0x466b0c,null));};exports['download']=function(_0x6a5dbb,_0x4abb8f,_0x300693){var _0xb23286=require(_0x5255('0x47'));var _0x5f2ea6=![];var _0x782c55={};if(_0x6a5dbb[_0x5255('0x2d')][_0x5255('0x2b')]&&_0x6a5dbb['query']['type']===_0x5255('0x48')){_0x782c55[_0x5255('0x48')]=_0x6a5dbb[_0x5255('0x41')]['id'];}else{_0x782c55['id']=_0x6a5dbb[_0x5255('0x41')]['id'];}return db[_0x5255('0x29')][_0x5255('0x42')]({'where':_0x782c55,'attributes':['id',_0x5255('0x49'),_0x5255('0x4a')],'raw':!![]})[_0x5255('0x25')](handleEntityNotFound(_0x4abb8f,null))['then'](function(_0x50ecb4){if(_0x50ecb4){var _0x1d61f9=_0x50ecb4[_0x5255('0x49')];var _0x46126b=util[_0x5255('0x4b')]('%s.cypher',_0x1d61f9);if(fs[_0x5255('0x4c')](_0x46126b)){_0x5f2ea6=!![];return _0xb23286['decryptFile'](_0x46126b,_0x1d61f9,config[_0x5255('0x4d')][_0x5255('0x4e')])[_0x5255('0x25')](function(){return _0x50ecb4;});}return _0x50ecb4;}})[_0x5255('0x25')](function(_0x41269b){if(_0x41269b){var _0x418b5b=_0x41269b['savePath'];if(!fs['existsSync'](_0x418b5b)){throw new db[(_0x5255('0x4f'))][(_0x5255('0x50'))](_0x5255('0x51'));}if(_0x41269b[_0x5255('0x4a')]){return _0x4abb8f[_0x5255('0x52')](_0x418b5b,_0x41269b[_0x5255('0x4a')]+path['extname'](_0x418b5b),function(){if(_0x5f2ea6){fs[_0x5255('0x53')](_0x418b5b);}});}else{return _0x4abb8f[_0x5255('0x52')](_0x418b5b,function(_0x186caf){if(_0x5f2ea6){fs[_0x5255('0x53')](_0x418b5b);}});}}})[_0x5255('0x43')](function(_0x3d4fdd){if(_0x3d4fdd['message']===_0x5255('0x51')){_0x4abb8f[_0x5255('0x1a')](0x194)[_0x5255('0x27')](_0x5255('0x54'));}else{return handleError(_0x4abb8f,null);}});};exports[_0x5255('0x26')]=function(_0x448170,_0x5357c0){return db[_0x5255('0x29')][_0x5255('0x42')]({'where':{'id':_0x448170[_0x5255('0x41')]['id']}})[_0x5255('0x25')](function(_0x5ed179){if(_[_0x5255('0x55')](_0x5ed179)){throw new ReferenceError(_0x5255('0x56'));}return _0x5ed179;})[_0x5255('0x25')](function(_0x50514b){var _0xd9bae8=_0x50514b[_0x5255('0x49')];logger[_0x5255('0x57')]('cancellazione\x20fisica\x20documento\x20%s',_0xd9bae8);if(!_[_0x5255('0x55')](_0x50514b['savePath'])&&fs[_0x5255('0x4c')](_0xd9bae8)){logger[_0x5255('0x57')](_0x5255('0x58')+_0xd9bae8+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x5255('0x59')](_0xd9bae8);}_0xd9bae8=_0xd9bae8+_0x5255('0x5a');if(!_[_0x5255('0x55')](_0x50514b['savePath'])&&fs[_0x5255('0x4c')](_0xd9bae8)){logger[_0x5255('0x57')](_0x5255('0x58')+_0xd9bae8+_0x5255('0x5b'));fs[_0x5255('0x59')](_0xd9bae8);}return _0x50514b;})['then'](function(_0x186a6a){if(!_0x186a6a)throw new InternalError();return _0x186a6a[_0x5255('0x26')]();})[_0x5255('0x25')](function(){_0x5357c0[_0x5255('0x1a')](0xcc)[_0x5255('0x1b')]();})[_0x5255('0x43')](handleError(_0x5357c0,null));};
\ No newline at end of file
+var _0x29da=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','status','end','error','index','SquareRecording','rawAttributes','type','name','keys','filters','intersection','model','query','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','map','VIRTUAL','filter','options','rows','params','length','includeAll','include','catch','create','body','update','find','download','uniqueid','filename','savePath','format','%s.cypher','decryptFile','secrets','recording','existsSync','Sequelize','ValidationError','SquareRecording\x20not\x20found','extname','unlink','message','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs'];(function(_0x3add57,_0x8f815a){var _0x6fdb4b=function(_0xce0fbc){while(--_0xce0fbc){_0x3add57['push'](_0x3add57['shift']());}};_0x6fdb4b(++_0x8f815a);}(_0x29da,0x106));var _0xa29d=function(_0x254db7,_0x58fafc){_0x254db7=_0x254db7-0x0;var _0x36031c=_0x29da[_0x254db7];return _0x36031c;};'use strict';var emlformat=require(_0xa29d('0x0'));var rimraf=require(_0xa29d('0x1'));var zipdir=require(_0xa29d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa29d('0x3'));var Mustache=require(_0xa29d('0x4'));var util=require(_0xa29d('0x5'));var path=require(_0xa29d('0x6'));var sox=require(_0xa29d('0x7'));var csv=require(_0xa29d('0x8'));var ejs=require(_0xa29d('0x9'));var fs=require('fs');var fs_extra=require(_0xa29d('0xa'));var _=require(_0xa29d('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa29d('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa29d('0xd'));var Papa=require(_0xa29d('0xe'));var Redis=require('ioredis');var authService=require(_0xa29d('0xf'));var qs=require(_0xa29d('0x10'));var as=require(_0xa29d('0x11'));var hardwareService=require(_0xa29d('0x12'));var logger=require('../../config/logger')(_0xa29d('0x13'));var utils=require(_0xa29d('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa29d('0x15'))['db'];function respondWithStatusCode(_0x47deba,_0x2e5ff3){_0x2e5ff3=_0x2e5ff3||0xcc;return function(_0x37f0a2){if(_0x37f0a2){return _0x47deba[_0xa29d('0x16')](_0x2e5ff3);}return _0x47deba['status'](_0x2e5ff3)['end']();};}function respondWithResult(_0x213ed6,_0x1b2633){_0x1b2633=_0x1b2633||0xc8;return function(_0x4eec78){if(_0x4eec78){return _0x213ed6['status'](_0x1b2633)[_0xa29d('0x17')](_0x4eec78);}};}function respondWithFilteredResult(_0x5a06fb,_0x3b239a){return function(_0x299ced){if(_0x299ced){var _0x1bb690=typeof _0x3b239a['offset']===_0xa29d('0x18')&&typeof _0x3b239a[_0xa29d('0x19')]===_0xa29d('0x18');var _0xafe9f=_0x299ced[_0xa29d('0x1a')];var _0x1c7b27=_0x1bb690?0x0:_0x3b239a[_0xa29d('0x1b')];var _0x182f2f=_0x1bb690?_0x299ced['count']:_0x3b239a[_0xa29d('0x1b')]+_0x3b239a[_0xa29d('0x19')];var _0x5cb4cf;if(_0x182f2f>=_0xafe9f){_0x182f2f=_0xafe9f;_0x5cb4cf=0xc8;}else{_0x5cb4cf=0xce;}_0x5a06fb['status'](_0x5cb4cf);return _0x5a06fb[_0xa29d('0x1c')](_0xa29d('0x1d'),_0x1c7b27+'-'+_0x182f2f+'/'+_0xafe9f)[_0xa29d('0x17')](_0x299ced);}return null;};}function patchUpdates(_0x154783){return function(_0x4902c3){try{jsonpatch[_0xa29d('0x1e')](_0x4902c3,_0x154783,!![]);}catch(_0x55b3a2){return BPromise['reject'](_0x55b3a2);}return _0x4902c3[_0xa29d('0x1f')]();};}function saveUpdates(_0x11af28,_0x2483d0){return function(_0x554550){if(_0x554550){return _0x554550['update'](_0x11af28)[_0xa29d('0x20')](function(_0x419c2a){return _0x419c2a;});}return null;};}function removeEntity(_0x9a0ae1,_0x44aa60){return function(_0x41edfc){if(_0x41edfc){return _0x41edfc[_0xa29d('0x21')]()['then'](function(){_0x9a0ae1[_0xa29d('0x22')](0xcc)[_0xa29d('0x23')]();});}};}function handleEntityNotFound(_0x66b54,_0x2629bf){return function(_0x5e14fc){if(!_0x5e14fc){_0x66b54[_0xa29d('0x16')](0x194);}return _0x5e14fc;};}function handleError(_0x4aaffa,_0x36a7e9){_0x36a7e9=_0x36a7e9||0x1f4;return function(_0x18e33e){logger[_0xa29d('0x24')](_0x18e33e['stack']);if(_0x18e33e['name']){delete _0x18e33e['name'];}_0x4aaffa['status'](_0x36a7e9)['send'](_0x18e33e);};}exports[_0xa29d('0x25')]=function(_0x38fe96,_0x21be34){var _0x4e8599={},_0x3c986b={},_0x2d850b={'count':0x0,'rows':[]};var _0x3d00ef=_['map'](db[_0xa29d('0x26')][_0xa29d('0x27')],function(_0x294827){return{'name':_0x294827['fieldName'],'type':_0x294827[_0xa29d('0x28')]['key']};});_0x3c986b['model']=_['map'](_0x3d00ef,_0xa29d('0x29'));_0x3c986b['query']=_[_0xa29d('0x2a')](_0x38fe96['query']);_0x3c986b[_0xa29d('0x2b')]=_[_0xa29d('0x2c')](_0x3c986b[_0xa29d('0x2d')],_0x3c986b[_0xa29d('0x2e')]);_0x4e8599[_0xa29d('0x2f')]=_['intersection'](_0x3c986b[_0xa29d('0x2d')],qs['fields'](_0x38fe96[_0xa29d('0x2e')][_0xa29d('0x30')]));_0x4e8599[_0xa29d('0x2f')]=_0x4e8599[_0xa29d('0x2f')]['length']?_0x4e8599[_0xa29d('0x2f')]:_0x3c986b['model'];if(!_0x38fe96[_0xa29d('0x2e')][_0xa29d('0x31')](_0xa29d('0x32'))){_0x4e8599[_0xa29d('0x19')]=qs[_0xa29d('0x19')](_0x38fe96[_0xa29d('0x2e')][_0xa29d('0x19')]);_0x4e8599[_0xa29d('0x1b')]=qs[_0xa29d('0x1b')](_0x38fe96['query']['offset']);}_0x4e8599[_0xa29d('0x33')]=qs[_0xa29d('0x34')](_0x38fe96['query']['sort']);_0x4e8599['where']=qs['filters'](_[_0xa29d('0x35')](_0x38fe96[_0xa29d('0x2e')],_0x3c986b[_0xa29d('0x2b')]),_0x3d00ef);if(_0x38fe96['query']['filter']){_0x4e8599[_0xa29d('0x36')]=_[_0xa29d('0x37')](_0x4e8599['where'],{'$or':_[_0xa29d('0x38')](_0x3d00ef,function(_0xb0801f){if(_0xb0801f['type']!==_0xa29d('0x39')){var _0x4ff3ff={};_0x4ff3ff[_0xb0801f[_0xa29d('0x29')]]={'$like':'%'+_0x38fe96[_0xa29d('0x2e')][_0xa29d('0x3a')]+'%'};return _0x4ff3ff;}})});}_0x4e8599=_[_0xa29d('0x37')]({},_0x4e8599,_0x38fe96[_0xa29d('0x3b')]);var _0x1813a7={'where':_0x4e8599['where']};return db[_0xa29d('0x26')]['count'](_0x1813a7)[_0xa29d('0x20')](function(_0x27e9e6){_0x2d850b[_0xa29d('0x1a')]=_0x27e9e6;if(_0x38fe96['query']['includeAll']){_0x4e8599['include']=[{'all':!![]}];}return db['SquareRecording']['findAll'](_0x4e8599);})[_0xa29d('0x20')](function(_0x458c2a){_0x2d850b[_0xa29d('0x3c')]=_0x458c2a;return _0x2d850b;})[_0xa29d('0x20')](respondWithFilteredResult(_0x21be34,_0x4e8599))['catch'](handleError(_0x21be34,null));};exports['show']=function(_0x49032f,_0x4fe824){var _0x26db23={'raw':!![],'where':{'id':_0x49032f[_0xa29d('0x3d')]['id']}},_0x5b3abd={};_0x5b3abd[_0xa29d('0x2d')]=_[_0xa29d('0x2a')](db['SquareRecording'][_0xa29d('0x27')]);_0x5b3abd[_0xa29d('0x2e')]=_['keys'](_0x49032f[_0xa29d('0x2e')]);_0x5b3abd['filters']=_['intersection'](_0x5b3abd[_0xa29d('0x2d')],_0x5b3abd[_0xa29d('0x2e')]);_0x26db23[_0xa29d('0x2f')]=_['intersection'](_0x5b3abd[_0xa29d('0x2d')],qs[_0xa29d('0x30')](_0x49032f['query'][_0xa29d('0x30')]));_0x26db23['attributes']=_0x26db23[_0xa29d('0x2f')][_0xa29d('0x3e')]?_0x26db23[_0xa29d('0x2f')]:_0x5b3abd[_0xa29d('0x2d')];if(_0x49032f[_0xa29d('0x2e')][_0xa29d('0x3f')]){_0x26db23[_0xa29d('0x40')]=[{'all':!![]}];}_0x26db23=_[_0xa29d('0x37')]({},_0x26db23,_0x49032f[_0xa29d('0x3b')]);return db['SquareRecording']['find'](_0x26db23)[_0xa29d('0x20')](handleEntityNotFound(_0x4fe824,null))[_0xa29d('0x20')](respondWithResult(_0x4fe824,null))[_0xa29d('0x41')](handleError(_0x4fe824,null));};exports[_0xa29d('0x42')]=function(_0x39ea24,_0x579f31){return db[_0xa29d('0x26')][_0xa29d('0x42')](_0x39ea24[_0xa29d('0x43')],{})[_0xa29d('0x20')](respondWithResult(_0x579f31,0xc9))[_0xa29d('0x41')](handleError(_0x579f31,null));};exports[_0xa29d('0x44')]=function(_0x168e29,_0x22bed2){if(_0x168e29[_0xa29d('0x43')]['id']){delete _0x168e29[_0xa29d('0x43')]['id'];}return db[_0xa29d('0x26')][_0xa29d('0x45')]({'where':{'id':_0x168e29[_0xa29d('0x3d')]['id']}})['then'](handleEntityNotFound(_0x22bed2,null))[_0xa29d('0x20')](saveUpdates(_0x168e29['body'],null))[_0xa29d('0x20')](respondWithResult(_0x22bed2,null))['catch'](handleError(_0x22bed2,null));};exports[_0xa29d('0x46')]=function(_0x4ce219,_0x275e08,_0xdd2630){var _0x5dd974=require('../../components/encryptor');var _0x47abf4=![];var _0x5a3bbb={};if(_0x4ce219['query']['type']&&_0x4ce219[_0xa29d('0x2e')][_0xa29d('0x28')]===_0xa29d('0x47')){_0x5a3bbb[_0xa29d('0x47')]=_0x4ce219[_0xa29d('0x3d')]['id'];}else{_0x5a3bbb['id']=_0x4ce219[_0xa29d('0x3d')]['id'];}return db[_0xa29d('0x26')][_0xa29d('0x45')]({'where':_0x5a3bbb,'attributes':['id','savePath',_0xa29d('0x48')],'raw':!![]})[_0xa29d('0x20')](handleEntityNotFound(_0x275e08,null))['then'](function(_0x57ce73){if(_0x57ce73){var _0x5437f5=_0x57ce73[_0xa29d('0x49')];var _0x3efa74=util[_0xa29d('0x4a')](_0xa29d('0x4b'),_0x5437f5);if(fs['existsSync'](_0x3efa74)){_0x47abf4=!![];return _0x5dd974[_0xa29d('0x4c')](_0x3efa74,_0x5437f5,config[_0xa29d('0x4d')][_0xa29d('0x4e')])['then'](function(){return _0x57ce73;});}return _0x57ce73;}})['then'](function(_0x961760){if(_0x961760){var _0xefab39=_0x961760['savePath'];if(!fs[_0xa29d('0x4f')](_0xefab39)){throw new db[(_0xa29d('0x50'))][(_0xa29d('0x51'))](_0xa29d('0x52'));}if(_0x961760[_0xa29d('0x48')]){return _0x275e08[_0xa29d('0x46')](_0xefab39,_0x961760[_0xa29d('0x48')]+path[_0xa29d('0x53')](_0xefab39),function(){if(_0x47abf4){fs[_0xa29d('0x54')](_0xefab39);}});}else{return _0x275e08[_0xa29d('0x46')](_0xefab39,function(_0x3582b1){if(_0x47abf4){fs['unlink'](_0xefab39);}});}}})['catch'](function(_0xcacd8a){if(_0xcacd8a[_0xa29d('0x55')]===_0xa29d('0x52')){_0x275e08[_0xa29d('0x22')](0x194)['send']('Not\x20found');}else{return handleError(_0x275e08,null);}});};exports[_0xa29d('0x21')]=function(_0x110d28,_0x49c05f){return db['SquareRecording'][_0xa29d('0x45')]({'where':{'id':_0x110d28['params']['id']}})['then'](function(_0x3d7252){if(_[_0xa29d('0x56')](_0x3d7252)){throw new ReferenceError('Entity\x20not\x20found');}return _0x3d7252;})[_0xa29d('0x20')](function(_0x4054dc){var _0x5b1d71=_0x4054dc[_0xa29d('0x49')];logger[_0xa29d('0x57')](_0xa29d('0x58'),_0x5b1d71);if(!_[_0xa29d('0x56')](_0x4054dc['savePath'])&&fs[_0xa29d('0x4f')](_0x5b1d71)){logger[_0xa29d('0x57')](_0xa29d('0x59')+_0x5b1d71+_0xa29d('0x5a'));fs[_0xa29d('0x5b')](_0x5b1d71);}_0x5b1d71=_0x5b1d71+_0xa29d('0x5c');if(!_[_0xa29d('0x56')](_0x4054dc[_0xa29d('0x49')])&&fs[_0xa29d('0x4f')](_0x5b1d71)){logger[_0xa29d('0x57')](_0xa29d('0x59')+_0x5b1d71+_0xa29d('0x5a'));fs[_0xa29d('0x5b')](_0x5b1d71);}return _0x4054dc;})[_0xa29d('0x20')](function(_0x43cd8f){if(!_0x43cd8f)throw new InternalError();return _0x43cd8f[_0xa29d('0x21')]();})[_0xa29d('0x20')](function(){_0x49c05f[_0xa29d('0x22')](0xcc)['end']();})[_0xa29d('0x41')](handleError(_0x49c05f,null));};
\ No newline at end of file
index b2c649f..f76fa2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f4a=['define','SquareRecording','square_recordings','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x4261bd,_0xb3ed37){var _0x5c9a4f=function(_0x3d3ab4){while(--_0x3d3ab4){_0x4261bd['push'](_0x4261bd['shift']());}};_0x5c9a4f(++_0xb3ed37);}(_0x2f4a,0x8f));var _0xa2f4=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0x2f4a[_0x5447fd];return _0x15b28a;};'use strict';var _=require(_0xa2f4('0x0'));var util=require(_0xa2f4('0x1'));var logger=require(_0xa2f4('0x2'))(_0xa2f4('0x3'));var moment=require(_0xa2f4('0x4'));var BPromise=require(_0xa2f4('0x5'));var rp=require(_0xa2f4('0x6'));var fs=require('fs');var path=require(_0xa2f4('0x7'));var rimraf=require(_0xa2f4('0x8'));var config=require(_0xa2f4('0x9'));var attributes=require('./squareRecording.attributes');module[_0xa2f4('0xa')]=function(_0x3d4545,_0x37ccfa){return _0x3d4545[_0xa2f4('0xb')](_0xa2f4('0xc'),attributes,{'tableName':_0xa2f4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x61f1=['moment','bluebird','rimraf','../../config/environment','exports','define','SquareRecording','util','api'];(function(_0x65f0c6,_0xa6fa66){var _0x484b41=function(_0x26efd3){while(--_0x26efd3){_0x65f0c6['push'](_0x65f0c6['shift']());}};_0x484b41(++_0xa6fa66);}(_0x61f1,0x18a));var _0x161f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x61f1[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x161f('0x0'));var logger=require('../../config/logger')(_0x161f('0x1'));var moment=require(_0x161f('0x2'));var BPromise=require(_0x161f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x161f('0x4'));var config=require(_0x161f('0x5'));var attributes=require('./squareRecording.attributes');module[_0x161f('0x6')]=function(_0x2317af,_0x15b3a4){return _0x2317af[_0x161f('0x7')](_0x161f('0x8'),attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1578bd7..2d011a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee24=['code','message','catch','CreateSquareRecording','SquareRecording','body','options','debug','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2e5187,_0x37db01){var _0x3bb107=function(_0x205291){while(--_0x205291){_0x2e5187['push'](_0x2e5187['shift']());}};_0x3bb107(++_0x37db01);}(_0xee24,0x14c));var _0x4ee2=function(_0xaf326d,_0xc3a37c){_0xaf326d=_0xaf326d-0x0;var _0x4aacda=_0xee24[_0xaf326d];return _0x4aacda;};'use strict';var _=require(_0x4ee2('0x0'));var util=require('util');var moment=require(_0x4ee2('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4ee2('0x2'));var db=require(_0x4ee2('0x3'))['db'];var utils=require(_0x4ee2('0x4'));var logger=require(_0x4ee2('0x5'))(_0x4ee2('0x6'));var config=require(_0x4ee2('0x7'));var jayson=require(_0x4ee2('0x8'));var client=jayson[_0x4ee2('0x9')][_0x4ee2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2b7b27,_0x58621d,_0x1c49f1){return new BPromise(function(_0x4d2763,_0x509597){return client[_0x4ee2('0xb')](_0x2b7b27,_0x1c49f1)[_0x4ee2('0xc')](function(_0x355345){logger[_0x4ee2('0xd')](_0x4ee2('0xe'),_0x58621d,_0x4ee2('0xf'));logger['debug'](_0x4ee2('0x10'),_0x58621d,'request\x20sent',JSON[_0x4ee2('0x11')](_0x355345));if(_0x355345['error']){if(_0x355345[_0x4ee2('0x12')][_0x4ee2('0x13')]===0x1f4){logger['error'](_0x4ee2('0xe'),_0x58621d,_0x355345[_0x4ee2('0x12')]['message']);return _0x509597(_0x355345['error'][_0x4ee2('0x14')]);}logger['error'](_0x4ee2('0xe'),_0x58621d,_0x355345[_0x4ee2('0x12')][_0x4ee2('0x14')]);return _0x4d2763(_0x355345[_0x4ee2('0x12')][_0x4ee2('0x14')]);}else{logger[_0x4ee2('0xd')]('SquareRecording,\x20%s,\x20%s',_0x58621d,'request\x20sent');_0x4d2763(_0x355345['result'][_0x4ee2('0x14')]);}})[_0x4ee2('0x15')](function(_0x2de35e){logger[_0x4ee2('0x12')](_0x4ee2('0xe'),_0x58621d,_0x2de35e);_0x509597(_0x2de35e);});});}exports[_0x4ee2('0x16')]=function(_0x116323){var _0x1592ee=this;return new Promise(function(_0x484093,_0x57b486){return db[_0x4ee2('0x17')]['create'](_0x116323[_0x4ee2('0x18')],{'raw':_0x116323[_0x4ee2('0x19')]?_0x116323[_0x4ee2('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x4ee2('0xc')](function(_0x2c0e4c){logger['info'](_0x4ee2('0x16'),_0x116323);logger[_0x4ee2('0x1a')]('CreateSquareRecording',_0x116323,JSON['stringify'](_0x2c0e4c));_0x484093(_0x2c0e4c);})[_0x4ee2('0x15')](function(_0x1c3a78){logger[_0x4ee2('0x12')](_0x4ee2('0x16'),_0x1c3a78['message'],_0x116323);_0x57b486(_0x1592ee[_0x4ee2('0x12')](0x1f4,_0x1c3a78['message']));});});};
\ No newline at end of file
+var _0x89f7=['stringify','error','message','result','catch','CreateSquareRecording','SquareRecording','create','body','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','SquareRecording,\x20%s,\x20%s,\x20%s'];(function(_0x1797cf,_0x48b710){var _0x1ca59d=function(_0x601798){while(--_0x601798){_0x1797cf['push'](_0x1797cf['shift']());}};_0x1ca59d(++_0x48b710);}(_0x89f7,0x19f));var _0x789f=function(_0x131205,_0x57575c){_0x131205=_0x131205-0x0;var _0x305300=_0x89f7[_0x131205];return _0x305300;};'use strict';var _=require(_0x789f('0x0'));var util=require(_0x789f('0x1'));var moment=require(_0x789f('0x2'));var BPromise=require(_0x789f('0x3'));var rs=require(_0x789f('0x4'));var fs=require('fs');var Redis=require(_0x789f('0x5'));var db=require(_0x789f('0x6'))['db'];var utils=require(_0x789f('0x7'));var logger=require('../../config/logger')(_0x789f('0x8'));var config=require(_0x789f('0x9'));var jayson=require(_0x789f('0xa'));var client=jayson[_0x789f('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x49bef7,_0x2aa987,_0x24ee11){return new BPromise(function(_0x337f9b,_0x5433d2){return client['request'](_0x49bef7,_0x24ee11)[_0x789f('0xc')](function(_0x3e2183){logger[_0x789f('0xd')](_0x789f('0xe'),_0x2aa987,_0x789f('0xf'));logger['debug'](_0x789f('0x10'),_0x2aa987,_0x789f('0xf'),JSON[_0x789f('0x11')](_0x3e2183));if(_0x3e2183[_0x789f('0x12')]){if(_0x3e2183[_0x789f('0x12')]['code']===0x1f4){logger[_0x789f('0x12')](_0x789f('0xe'),_0x2aa987,_0x3e2183['error'][_0x789f('0x13')]);return _0x5433d2(_0x3e2183[_0x789f('0x12')]['message']);}logger[_0x789f('0x12')](_0x789f('0xe'),_0x2aa987,_0x3e2183[_0x789f('0x12')][_0x789f('0x13')]);return _0x337f9b(_0x3e2183[_0x789f('0x12')][_0x789f('0x13')]);}else{logger['info'](_0x789f('0xe'),_0x2aa987,_0x789f('0xf'));_0x337f9b(_0x3e2183[_0x789f('0x14')][_0x789f('0x13')]);}})[_0x789f('0x15')](function(_0x26cfcd){logger[_0x789f('0x12')](_0x789f('0xe'),_0x2aa987,_0x26cfcd);_0x5433d2(_0x26cfcd);});});}exports[_0x789f('0x16')]=function(_0x1fc2a8){var _0xfee252=this;return new Promise(function(_0x414b19,_0x1871b8){return db[_0x789f('0x17')][_0x789f('0x18')](_0x1fc2a8[_0x789f('0x19')],{'raw':_0x1fc2a8['options']?_0x1fc2a8['options']['raw']===undefined?!![]:![]:!![]})[_0x789f('0xc')](function(_0x2b26bf){logger['info'](_0x789f('0x16'),_0x1fc2a8);logger[_0x789f('0x1a')](_0x789f('0x16'),_0x1fc2a8,JSON[_0x789f('0x11')](_0x2b26bf));_0x414b19(_0x2b26bf);})['catch'](function(_0xc20040){logger[_0x789f('0x12')](_0x789f('0x16'),_0xc20040[_0x789f('0x13')],_0x1fc2a8);_0x1871b8(_0xfee252[_0x789f('0x12')](0x1f4,_0xc20040[_0x789f('0x13')]));});});};
\ No newline at end of file
index 7c9648e..5e7218f 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(_0x40b7ea,_0x550490){var _0x2627ec=function(_0x78fd8e){while(--_0x78fd8e){_0x40b7ea['push'](_0x40b7ea['shift']());}};_0x2627ec(++_0x550490);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./squareReport.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+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(_0x4d3a2b,_0x32a224){var _0xdd32c8=function(_0x18f96f){while(--_0x18f96f){_0x4d3a2b['push'](_0x4d3a2b['shift']());}};_0xdd32c8(++_0x32a224);}(_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('./squareReport.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index 0eb4636..9e6d0d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a35=['DATE','BOOLEAN','exports','STRING'];(function(_0x3ea74b,_0x5a5a3f){var _0x2edf17=function(_0x340ae3){while(--_0x340ae3){_0x3ea74b['push'](_0x3ea74b['shift']());}};_0x2edf17(++_0x5a5a3f);}(_0x3a35,0x1a2));var _0x53a3=function(_0x4d07cc,_0x587613){_0x4d07cc=_0x4d07cc-0x0;var _0x42de3b=_0x3a35[_0x4d07cc];return _0x42de3b;};'use strict';var Sequelize=require('sequelize');module[_0x53a3('0x0')]={'network':{'type':Sequelize[_0x53a3('0x1')]},'network_script':{'type':Sequelize[_0x53a3('0x1')]},'request':{'type':Sequelize[_0x53a3('0x1')]},'channel':{'type':Sequelize[_0x53a3('0x1')]},'language':{'type':Sequelize[_0x53a3('0x1')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x53a3('0x1')]},'version':{'type':Sequelize[_0x53a3('0x1')]},'callerid':{'type':Sequelize[_0x53a3('0x1')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize[_0x53a3('0x1')]},'callingani2':{'type':Sequelize[_0x53a3('0x1')]},'callington':{'type':Sequelize[_0x53a3('0x1')]},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize[_0x53a3('0x1')]},'context':{'type':Sequelize[_0x53a3('0x1')]},'extension':{'type':Sequelize[_0x53a3('0x1')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0x53a3('0x1')]},'accountcode':{'type':Sequelize['STRING']},'threadid':{'type':Sequelize[_0x53a3('0x1')]},'project_name':{'type':Sequelize[_0x53a3('0x1')]},'joinAt':{'type':Sequelize[_0x53a3('0x2')]},'leaveAt':{'type':Sequelize[_0x53a3('0x2')]},'bot':{'type':Sequelize[_0x53a3('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xab2c=['STRING','DATE','BOOLEAN'];(function(_0x30faee,_0x1c3794){var _0x3a90ab=function(_0x11129b){while(--_0x11129b){_0x30faee['push'](_0x30faee['shift']());}};_0x3a90ab(++_0x1c3794);}(_0xab2c,0x16b));var _0xcab2=function(_0x47cd7b,_0x5630af){_0x47cd7b=_0x47cd7b-0x0;var _0x3e6dbf=_0xab2c[_0x47cd7b];return _0x3e6dbf;};'use strict';var Sequelize=require('sequelize');module['exports']={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize[_0xcab2('0x0')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xcab2('0x0')]},'uniqueid':{'type':Sequelize[_0xcab2('0x0')]},'version':{'type':Sequelize[_0xcab2('0x0')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xcab2('0x0')]},'callingpres':{'type':Sequelize[_0xcab2('0x0')]},'callingani2':{'type':Sequelize[_0xcab2('0x0')]},'callington':{'type':Sequelize[_0xcab2('0x0')]},'callingtns':{'type':Sequelize[_0xcab2('0x0')]},'dnid':{'type':Sequelize[_0xcab2('0x0')]},'rdnis':{'type':Sequelize[_0xcab2('0x0')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0xcab2('0x0')]},'priority':{'type':Sequelize[_0xcab2('0x0')]},'enhanced':{'type':Sequelize[_0xcab2('0x0')]},'accountcode':{'type':Sequelize[_0xcab2('0x0')]},'threadid':{'type':Sequelize[_0xcab2('0x0')]},'project_name':{'type':Sequelize[_0xcab2('0x0')]},'joinAt':{'type':Sequelize[_0xcab2('0x1')]},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0xcab2('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 1888de6..c9424be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a68=['merge','type','VIRTUAL','filter','options','includeAll','SquareReport','findAll','catch','show','params','keys','rawAttributes','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','json','reject','save','update','then','error','name','map','fieldName','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','pick','where'];(function(_0x2fbb3a,_0x509ef4){var _0xc7419f=function(_0x3d0595){while(--_0x3d0595){_0x2fbb3a['push'](_0x2fbb3a['shift']());}};_0xc7419f(++_0x509ef4);}(_0x2a68,0xe7));var _0x82a6=function(_0x339ded,_0xb38a57){_0x339ded=_0x339ded-0x0;var _0x37f8dc=_0x2a68[_0x339ded];return _0x37f8dc;};'use strict';var emlformat=require(_0x82a6('0x0'));var rimraf=require(_0x82a6('0x1'));var zipdir=require(_0x82a6('0x2'));var jsonpatch=require(_0x82a6('0x3'));var rp=require(_0x82a6('0x4'));var moment=require(_0x82a6('0x5'));var BPromise=require(_0x82a6('0x6'));var Mustache=require(_0x82a6('0x7'));var util=require(_0x82a6('0x8'));var path=require(_0x82a6('0x9'));var sox=require(_0x82a6('0xa'));var csv=require(_0x82a6('0xb'));var ejs=require(_0x82a6('0xc'));var fs=require('fs');var fs_extra=require(_0x82a6('0xd'));var _=require('lodash');var squel=require(_0x82a6('0xe'));var crypto=require(_0x82a6('0xf'));var jsforce=require(_0x82a6('0x10'));var deskjs=require(_0x82a6('0x11'));var toCsv=require('to-csv');var querystring=require(_0x82a6('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x82a6('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x82a6('0x14'));var utils=require('../../config/utils');var config=require(_0x82a6('0x15'));var licenseUtil=require(_0x82a6('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x131408,_0x21f63f){_0x21f63f=_0x21f63f||0xcc;return function(_0xebbc55){if(_0xebbc55){return _0x131408[_0x82a6('0x17')](_0x21f63f);}return _0x131408[_0x82a6('0x18')](_0x21f63f)[_0x82a6('0x19')]();};}function respondWithResult(_0x138fba,_0x2f57c5){_0x2f57c5=_0x2f57c5||0xc8;return function(_0x1187ff){if(_0x1187ff){return _0x138fba['status'](_0x2f57c5)['json'](_0x1187ff);}};}function respondWithFilteredResult(_0x1cf377,_0x2aa7aa){return function(_0x193230){if(_0x193230){var _0x305a84=typeof _0x2aa7aa[_0x82a6('0x1a')]===_0x82a6('0x1b')&&typeof _0x2aa7aa[_0x82a6('0x1c')]==='undefined';var _0x5c6514=_0x193230[_0x82a6('0x1d')];var _0x49a712=_0x305a84?0x0:_0x2aa7aa[_0x82a6('0x1a')];var _0x87ce4a=_0x305a84?_0x193230[_0x82a6('0x1d')]:_0x2aa7aa[_0x82a6('0x1a')]+_0x2aa7aa[_0x82a6('0x1c')];var _0x420b42;if(_0x87ce4a>=_0x5c6514){_0x87ce4a=_0x5c6514;_0x420b42=0xc8;}else{_0x420b42=0xce;}_0x1cf377[_0x82a6('0x18')](_0x420b42);return _0x1cf377[_0x82a6('0x1e')]('Content-Range',_0x49a712+'-'+_0x87ce4a+'/'+_0x5c6514)[_0x82a6('0x1f')](_0x193230);}return null;};}function patchUpdates(_0x31abd1){return function(_0x1e6807){try{jsonpatch['apply'](_0x1e6807,_0x31abd1,!![]);}catch(_0x3de1fe){return BPromise[_0x82a6('0x20')](_0x3de1fe);}return _0x1e6807[_0x82a6('0x21')]();};}function saveUpdates(_0x56d09c,_0x28a3cb){return function(_0x41c35c){if(_0x41c35c){return _0x41c35c[_0x82a6('0x22')](_0x56d09c)[_0x82a6('0x23')](function(_0x40add0){return _0x40add0;});}return null;};}function removeEntity(_0x1fe205,_0x5ce24f){return function(_0x3cf1b4){if(_0x3cf1b4){return _0x3cf1b4['destroy']()[_0x82a6('0x23')](function(){_0x1fe205[_0x82a6('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x423e34,_0x4698e0){return function(_0x427b5c){if(!_0x427b5c){_0x423e34[_0x82a6('0x17')](0x194);}return _0x427b5c;};}function handleError(_0x41c710,_0x1eb3a9){_0x1eb3a9=_0x1eb3a9||0x1f4;return function(_0x14abbe){logger[_0x82a6('0x24')](_0x14abbe['stack']);if(_0x14abbe[_0x82a6('0x25')]){delete _0x14abbe[_0x82a6('0x25')];}_0x41c710[_0x82a6('0x18')](_0x1eb3a9)['send'](_0x14abbe);};}exports['index']=function(_0x42b934,_0x5151e6){var _0x1cb13b={},_0x40ff81={},_0x280ec1={'count':0x0,'rows':[]};var _0x4c1c9d=_[_0x82a6('0x26')](db['SquareReport']['rawAttributes'],function(_0x1af3b9){return{'name':_0x1af3b9[_0x82a6('0x27')],'type':_0x1af3b9['type'][_0x82a6('0x28')]};});_0x40ff81['model']=_[_0x82a6('0x26')](_0x4c1c9d,'name');_0x40ff81[_0x82a6('0x29')]=_['keys'](_0x42b934['query']);_0x40ff81[_0x82a6('0x2a')]=_[_0x82a6('0x2b')](_0x40ff81[_0x82a6('0x2c')],_0x40ff81[_0x82a6('0x29')]);_0x1cb13b[_0x82a6('0x2d')]=_[_0x82a6('0x2b')](_0x40ff81['model'],qs['fields'](_0x42b934[_0x82a6('0x29')][_0x82a6('0x2e')]));_0x1cb13b['attributes']=_0x1cb13b[_0x82a6('0x2d')][_0x82a6('0x2f')]?_0x1cb13b[_0x82a6('0x2d')]:_0x40ff81[_0x82a6('0x2c')];if(!_0x42b934[_0x82a6('0x29')]['hasOwnProperty'](_0x82a6('0x30'))){_0x1cb13b[_0x82a6('0x1c')]=qs[_0x82a6('0x1c')](_0x42b934[_0x82a6('0x29')][_0x82a6('0x1c')]);_0x1cb13b[_0x82a6('0x1a')]=qs[_0x82a6('0x1a')](_0x42b934[_0x82a6('0x29')][_0x82a6('0x1a')]);}_0x1cb13b[_0x82a6('0x31')]=qs[_0x82a6('0x32')](_0x42b934[_0x82a6('0x29')][_0x82a6('0x32')]);_0x1cb13b['where']=qs[_0x82a6('0x2a')](_[_0x82a6('0x33')](_0x42b934[_0x82a6('0x29')],_0x40ff81[_0x82a6('0x2a')]),_0x4c1c9d);if(_0x42b934['query']['filter']){_0x1cb13b[_0x82a6('0x34')]=_[_0x82a6('0x35')](_0x1cb13b[_0x82a6('0x34')],{'$or':_[_0x82a6('0x26')](_0x4c1c9d,function(_0x1ec039){if(_0x1ec039[_0x82a6('0x36')]!==_0x82a6('0x37')){var _0x3211fb={};_0x3211fb[_0x1ec039[_0x82a6('0x25')]]={'$like':'%'+_0x42b934[_0x82a6('0x29')][_0x82a6('0x38')]+'%'};return _0x3211fb;}})});}_0x1cb13b=_[_0x82a6('0x35')]({},_0x1cb13b,_0x42b934[_0x82a6('0x39')]);var _0x5f4a17={'where':_0x1cb13b[_0x82a6('0x34')]};return db['SquareReport'][_0x82a6('0x1d')](_0x5f4a17)[_0x82a6('0x23')](function(_0x2726bc){_0x280ec1[_0x82a6('0x1d')]=_0x2726bc;if(_0x42b934[_0x82a6('0x29')][_0x82a6('0x3a')]){_0x1cb13b['include']=[{'all':!![]}];}return db[_0x82a6('0x3b')][_0x82a6('0x3c')](_0x1cb13b);})['then'](function(_0x4ed204){_0x280ec1['rows']=_0x4ed204;return _0x280ec1;})[_0x82a6('0x23')](respondWithFilteredResult(_0x5151e6,_0x1cb13b))[_0x82a6('0x3d')](handleError(_0x5151e6,null));};exports[_0x82a6('0x3e')]=function(_0x3995a1,_0x22cc3a){var _0x26858d={'raw':!![],'where':{'id':_0x3995a1[_0x82a6('0x3f')]['id']}},_0x51ca8e={};_0x51ca8e['model']=_[_0x82a6('0x40')](db[_0x82a6('0x3b')][_0x82a6('0x41')]);_0x51ca8e[_0x82a6('0x29')]=_['keys'](_0x3995a1[_0x82a6('0x29')]);_0x51ca8e['filters']=_[_0x82a6('0x2b')](_0x51ca8e[_0x82a6('0x2c')],_0x51ca8e[_0x82a6('0x29')]);_0x26858d[_0x82a6('0x2d')]=_['intersection'](_0x51ca8e[_0x82a6('0x2c')],qs[_0x82a6('0x2e')](_0x3995a1[_0x82a6('0x29')][_0x82a6('0x2e')]));_0x26858d[_0x82a6('0x2d')]=_0x26858d[_0x82a6('0x2d')][_0x82a6('0x2f')]?_0x26858d[_0x82a6('0x2d')]:_0x51ca8e['model'];if(_0x3995a1[_0x82a6('0x29')][_0x82a6('0x3a')]){_0x26858d['include']=[{'all':!![]}];}_0x26858d=_[_0x82a6('0x35')]({},_0x26858d,_0x3995a1[_0x82a6('0x39')]);return db[_0x82a6('0x3b')][_0x82a6('0x42')](_0x26858d)[_0x82a6('0x23')](handleEntityNotFound(_0x22cc3a,null))['then'](respondWithResult(_0x22cc3a,null))[_0x82a6('0x3d')](handleError(_0x22cc3a,null));};exports[_0x82a6('0x43')]=function(_0x4450fe,_0x502991){return db[_0x82a6('0x3b')][_0x82a6('0x43')](_0x4450fe['body'],{})[_0x82a6('0x23')](respondWithResult(_0x502991,0xc9))['catch'](handleError(_0x502991,null));};exports['update']=function(_0x149dc8,_0x3c7274){if(_0x149dc8[_0x82a6('0x44')]['id']){delete _0x149dc8[_0x82a6('0x44')]['id'];}return db['SquareReport'][_0x82a6('0x42')]({'where':{'id':_0x149dc8['params']['id']}})['then'](handleEntityNotFound(_0x3c7274,null))[_0x82a6('0x23')](saveUpdates(_0x149dc8['body'],null))[_0x82a6('0x23')](respondWithResult(_0x3c7274,null))[_0x82a6('0x3d')](handleError(_0x3c7274,null));};exports[_0x82a6('0x45')]=function(_0x39abbe,_0x253d10){return db[_0x82a6('0x3b')][_0x82a6('0x42')]({'where':{'id':_0x39abbe[_0x82a6('0x3f')]['id']}})[_0x82a6('0x23')](handleEntityNotFound(_0x253d10,null))[_0x82a6('0x23')](removeEntity(_0x253d10,null))['catch'](handleError(_0x253d10,null));};exports[_0x82a6('0x46')]=function(_0x443e11,_0x79fad9){return db[_0x82a6('0x3b')][_0x82a6('0x46')]()[_0x82a6('0x23')](respondWithResult(_0x79fad9,null))[_0x82a6('0x3d')](handleError(_0x79fad9,null));};
\ No newline at end of file
+var _0x73ce=['../../config/utils','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','reject','save','update','then','error','name','send','SquareReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','order','sort','where','filter','merge','includeAll','rows','catch','show','params','length','include','options','create','body','find','describe','eml-format','rimraf','zip-dir','request-promise','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x487ae9,_0x439617){var _0x227742=function(_0x5042c7){while(--_0x5042c7){_0x487ae9['push'](_0x487ae9['shift']());}};_0x227742(++_0x439617);}(_0x73ce,0x189));var _0xe73c=function(_0x4a8b61,_0x4adab9){_0x4a8b61=_0x4a8b61-0x0;var _0xac67e3=_0x73ce[_0x4a8b61];return _0xac67e3;};'use strict';var emlformat=require(_0xe73c('0x0'));var rimraf=require(_0xe73c('0x1'));var zipdir=require(_0xe73c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe73c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe73c('0x4'));var util=require('util');var path=require(_0xe73c('0x5'));var sox=require(_0xe73c('0x6'));var csv=require('to-csv');var ejs=require(_0xe73c('0x7'));var fs=require('fs');var fs_extra=require(_0xe73c('0x8'));var _=require('lodash');var squel=require(_0xe73c('0x9'));var crypto=require(_0xe73c('0xa'));var jsforce=require(_0xe73c('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe73c('0xc'));var Papa=require(_0xe73c('0xd'));var Redis=require(_0xe73c('0xe'));var authService=require(_0xe73c('0xf'));var qs=require(_0xe73c('0x10'));var as=require(_0xe73c('0x11'));var hardwareService=require(_0xe73c('0x12'));var logger=require(_0xe73c('0x13'))(_0xe73c('0x14'));var utils=require(_0xe73c('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xe73c('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd419a3,_0x5ab5fb){_0x5ab5fb=_0x5ab5fb||0xcc;return function(_0x538f3e){if(_0x538f3e){return _0xd419a3[_0xe73c('0x17')](_0x5ab5fb);}return _0xd419a3[_0xe73c('0x18')](_0x5ab5fb)[_0xe73c('0x19')]();};}function respondWithResult(_0x377aaf,_0x5b09d2){_0x5b09d2=_0x5b09d2||0xc8;return function(_0x2b2492){if(_0x2b2492){return _0x377aaf[_0xe73c('0x18')](_0x5b09d2)['json'](_0x2b2492);}};}function respondWithFilteredResult(_0x2d1185,_0x3a9bf1){return function(_0x22f17d){if(_0x22f17d){var _0x2919d6=typeof _0x3a9bf1[_0xe73c('0x1a')]===_0xe73c('0x1b')&&typeof _0x3a9bf1[_0xe73c('0x1c')]===_0xe73c('0x1b');var _0x22790e=_0x22f17d[_0xe73c('0x1d')];var _0x384f4b=_0x2919d6?0x0:_0x3a9bf1[_0xe73c('0x1a')];var _0x49e9b1=_0x2919d6?_0x22f17d['count']:_0x3a9bf1['offset']+_0x3a9bf1['limit'];var _0x5f18cc;if(_0x49e9b1>=_0x22790e){_0x49e9b1=_0x22790e;_0x5f18cc=0xc8;}else{_0x5f18cc=0xce;}_0x2d1185[_0xe73c('0x18')](_0x5f18cc);return _0x2d1185['set'](_0xe73c('0x1e'),_0x384f4b+'-'+_0x49e9b1+'/'+_0x22790e)[_0xe73c('0x1f')](_0x22f17d);}return null;};}function patchUpdates(_0x2eede5){return function(_0x5814cd){try{jsonpatch['apply'](_0x5814cd,_0x2eede5,!![]);}catch(_0x647371){return BPromise[_0xe73c('0x20')](_0x647371);}return _0x5814cd[_0xe73c('0x21')]();};}function saveUpdates(_0x4de2c9,_0x29a056){return function(_0x1130ba){if(_0x1130ba){return _0x1130ba[_0xe73c('0x22')](_0x4de2c9)[_0xe73c('0x23')](function(_0x48d58a){return _0x48d58a;});}return null;};}function removeEntity(_0x1a3dbf,_0x1cadd3){return function(_0x13d66f){if(_0x13d66f){return _0x13d66f['destroy']()[_0xe73c('0x23')](function(){_0x1a3dbf[_0xe73c('0x18')](0xcc)[_0xe73c('0x19')]();});}};}function handleEntityNotFound(_0x30ce28,_0x424fcc){return function(_0x1ad438){if(!_0x1ad438){_0x30ce28[_0xe73c('0x17')](0x194);}return _0x1ad438;};}function handleError(_0x2209fe,_0x5bda2b){_0x5bda2b=_0x5bda2b||0x1f4;return function(_0x4bea86){logger[_0xe73c('0x24')](_0x4bea86['stack']);if(_0x4bea86[_0xe73c('0x25')]){delete _0x4bea86['name'];}_0x2209fe[_0xe73c('0x18')](_0x5bda2b)[_0xe73c('0x26')](_0x4bea86);};}exports['index']=function(_0x9ba720,_0x191eb2){var _0x20adc1={},_0x1ea3ac={},_0x523956={'count':0x0,'rows':[]};var _0x490e54=_['map'](db[_0xe73c('0x27')][_0xe73c('0x28')],function(_0x394e5a){return{'name':_0x394e5a[_0xe73c('0x29')],'type':_0x394e5a[_0xe73c('0x2a')][_0xe73c('0x2b')]};});_0x1ea3ac[_0xe73c('0x2c')]=_[_0xe73c('0x2d')](_0x490e54,_0xe73c('0x25'));_0x1ea3ac[_0xe73c('0x2e')]=_[_0xe73c('0x2f')](_0x9ba720['query']);_0x1ea3ac[_0xe73c('0x30')]=_[_0xe73c('0x31')](_0x1ea3ac[_0xe73c('0x2c')],_0x1ea3ac[_0xe73c('0x2e')]);_0x20adc1[_0xe73c('0x32')]=_[_0xe73c('0x31')](_0x1ea3ac[_0xe73c('0x2c')],qs[_0xe73c('0x33')](_0x9ba720['query']['fields']));_0x20adc1[_0xe73c('0x32')]=_0x20adc1[_0xe73c('0x32')]['length']?_0x20adc1[_0xe73c('0x32')]:_0x1ea3ac[_0xe73c('0x2c')];if(!_0x9ba720['query']['hasOwnProperty']('nolimit')){_0x20adc1[_0xe73c('0x1c')]=qs[_0xe73c('0x1c')](_0x9ba720['query']['limit']);_0x20adc1['offset']=qs[_0xe73c('0x1a')](_0x9ba720[_0xe73c('0x2e')]['offset']);}_0x20adc1[_0xe73c('0x34')]=qs[_0xe73c('0x35')](_0x9ba720[_0xe73c('0x2e')][_0xe73c('0x35')]);_0x20adc1[_0xe73c('0x36')]=qs[_0xe73c('0x30')](_['pick'](_0x9ba720[_0xe73c('0x2e')],_0x1ea3ac[_0xe73c('0x30')]),_0x490e54);if(_0x9ba720[_0xe73c('0x2e')][_0xe73c('0x37')]){_0x20adc1['where']=_[_0xe73c('0x38')](_0x20adc1[_0xe73c('0x36')],{'$or':_[_0xe73c('0x2d')](_0x490e54,function(_0x2eed70){if(_0x2eed70[_0xe73c('0x2a')]!=='VIRTUAL'){var _0x491dfe={};_0x491dfe[_0x2eed70[_0xe73c('0x25')]]={'$like':'%'+_0x9ba720[_0xe73c('0x2e')][_0xe73c('0x37')]+'%'};return _0x491dfe;}})});}_0x20adc1=_[_0xe73c('0x38')]({},_0x20adc1,_0x9ba720['options']);var _0x7e9825={'where':_0x20adc1[_0xe73c('0x36')]};return db[_0xe73c('0x27')][_0xe73c('0x1d')](_0x7e9825)[_0xe73c('0x23')](function(_0x177801){_0x523956['count']=_0x177801;if(_0x9ba720[_0xe73c('0x2e')][_0xe73c('0x39')]){_0x20adc1['include']=[{'all':!![]}];}return db[_0xe73c('0x27')]['findAll'](_0x20adc1);})[_0xe73c('0x23')](function(_0x1870d1){_0x523956[_0xe73c('0x3a')]=_0x1870d1;return _0x523956;})[_0xe73c('0x23')](respondWithFilteredResult(_0x191eb2,_0x20adc1))[_0xe73c('0x3b')](handleError(_0x191eb2,null));};exports[_0xe73c('0x3c')]=function(_0x51bc46,_0x36b47e){var _0xfdfdf8={'raw':!![],'where':{'id':_0x51bc46[_0xe73c('0x3d')]['id']}},_0x33a445={};_0x33a445['model']=_[_0xe73c('0x2f')](db[_0xe73c('0x27')]['rawAttributes']);_0x33a445[_0xe73c('0x2e')]=_[_0xe73c('0x2f')](_0x51bc46[_0xe73c('0x2e')]);_0x33a445[_0xe73c('0x30')]=_[_0xe73c('0x31')](_0x33a445[_0xe73c('0x2c')],_0x33a445[_0xe73c('0x2e')]);_0xfdfdf8[_0xe73c('0x32')]=_[_0xe73c('0x31')](_0x33a445[_0xe73c('0x2c')],qs[_0xe73c('0x33')](_0x51bc46[_0xe73c('0x2e')][_0xe73c('0x33')]));_0xfdfdf8['attributes']=_0xfdfdf8['attributes'][_0xe73c('0x3e')]?_0xfdfdf8[_0xe73c('0x32')]:_0x33a445[_0xe73c('0x2c')];if(_0x51bc46[_0xe73c('0x2e')][_0xe73c('0x39')]){_0xfdfdf8[_0xe73c('0x3f')]=[{'all':!![]}];}_0xfdfdf8=_['merge']({},_0xfdfdf8,_0x51bc46[_0xe73c('0x40')]);return db['SquareReport']['find'](_0xfdfdf8)[_0xe73c('0x23')](handleEntityNotFound(_0x36b47e,null))['then'](respondWithResult(_0x36b47e,null))[_0xe73c('0x3b')](handleError(_0x36b47e,null));};exports[_0xe73c('0x41')]=function(_0x41749c,_0x4db5b){return db['SquareReport'][_0xe73c('0x41')](_0x41749c[_0xe73c('0x42')],{})[_0xe73c('0x23')](respondWithResult(_0x4db5b,0xc9))[_0xe73c('0x3b')](handleError(_0x4db5b,null));};exports[_0xe73c('0x22')]=function(_0x2ad6ea,_0x1ee7e8){if(_0x2ad6ea[_0xe73c('0x42')]['id']){delete _0x2ad6ea['body']['id'];}return db['SquareReport'][_0xe73c('0x43')]({'where':{'id':_0x2ad6ea[_0xe73c('0x3d')]['id']}})[_0xe73c('0x23')](handleEntityNotFound(_0x1ee7e8,null))[_0xe73c('0x23')](saveUpdates(_0x2ad6ea[_0xe73c('0x42')],null))['then'](respondWithResult(_0x1ee7e8,null))[_0xe73c('0x3b')](handleError(_0x1ee7e8,null));};exports['destroy']=function(_0xc5942a,_0x46314c){return db[_0xe73c('0x27')]['find']({'where':{'id':_0xc5942a['params']['id']}})[_0xe73c('0x23')](handleEntityNotFound(_0x46314c,null))['then'](removeEntity(_0x46314c,null))[_0xe73c('0x3b')](handleError(_0x46314c,null));};exports[_0xe73c('0x44')]=function(_0x21b4b7,_0x31929a){return db['SquareReport'][_0xe73c('0x44')]()[_0xe73c('0x23')](respondWithResult(_0x31929a,null))[_0xe73c('0x3b')](handleError(_0x31929a,null));};
\ No newline at end of file
index a25e3ef..f661099 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8161=['SquareReport','uid_pname','project_name','leaveAt','lodash','util','api','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8161,0x1b1));var _0x1816=function(_0x38f470,_0x3b1ebd){_0x38f470=_0x38f470-0x0;var _0x57fca3=_0x8161[_0x38f470];return _0x57fca3;};'use strict';var _=require(_0x1816('0x0'));var util=require(_0x1816('0x1'));var logger=require('../../config/logger')(_0x1816('0x2'));var moment=require('moment');var BPromise=require(_0x1816('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1816('0x4'));var rimraf=require(_0x1816('0x5'));var config=require(_0x1816('0x6'));var attributes=require('./squareReport.attributes');module[_0x1816('0x7')]=function(_0x328e00,_0x8ee486){return _0x328e00[_0x1816('0x8')](_0x1816('0x9'),attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':_0x1816('0xa'),'fields':['uniqueid',_0x1816('0xb')]},{'name':'leaveAt','fields':[_0x1816('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe99d=['leaveAt','util','../../config/logger','moment','bluebird','path','rimraf','./squareReport.attributes','exports','define','SquareReport','report_square'];(function(_0x3dc344,_0x345f9e){var _0x1eee28=function(_0x4cab60){while(--_0x4cab60){_0x3dc344['push'](_0x3dc344['shift']());}};_0x1eee28(++_0x345f9e);}(_0xe99d,0x12d));var _0xde99=function(_0xec58b,_0x4b2dc0){_0xec58b=_0xec58b-0x0;var _0x4f76da=_0xe99d[_0xec58b];return _0x4f76da;};'use strict';var _=require('lodash');var util=require(_0xde99('0x0'));var logger=require(_0xde99('0x1'))('api');var moment=require(_0xde99('0x2'));var BPromise=require(_0xde99('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xde99('0x4'));var rimraf=require(_0xde99('0x5'));var config=require('../../config/environment');var attributes=require(_0xde99('0x6'));module[_0xde99('0x7')]=function(_0x2742f2,_0x4b2511){return _0x2742f2[_0xde99('0x8')](_0xde99('0x9'),attributes,{'tableName':_0xde99('0xa'),'paranoid':![],'indexes':[{'name':'uid_pname','fields':['uniqueid','project_name']},{'name':_0xde99('0xb'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
index 1727e5e..ac6309a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9b0=['attributes','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','SquareReport,\x20%s,\x20%s','debug','error','code','message','result','catch','SquareReport','create','body','options','CreateSquareReport','UpdateSquareReport','update','where'];(function(_0x3d3b5b,_0x1d40d0){var _0xe2d20c=function(_0x5d8d25){while(--_0x5d8d25){_0x3d3b5b['push'](_0x3d3b5b['shift']());}};_0xe2d20c(++_0x1d40d0);}(_0xb9b0,0x71));var _0x0b9b=function(_0xac05f3,_0x576385){_0xac05f3=_0xac05f3-0x0;var _0x315ee6=_0xb9b0[_0xac05f3];return _0x315ee6;};'use strict';var _=require(_0x0b9b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0b9b('0x1'));var rs=require(_0x0b9b('0x2'));var fs=require('fs');var Redis=require(_0x0b9b('0x3'));var db=require(_0x0b9b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0b9b('0x5'))(_0x0b9b('0x6'));var config=require(_0x0b9b('0x7'));var jayson=require(_0x0b9b('0x8'));var client=jayson['client'][_0x0b9b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x52621f,_0x2df78d,_0x24bf47){return new BPromise(function(_0x3856ae,_0x3ed952){return client['request'](_0x52621f,_0x24bf47)[_0x0b9b('0xa')](function(_0x208b35){logger[_0x0b9b('0xb')](_0x0b9b('0xc'),_0x2df78d,'request\x20sent');logger[_0x0b9b('0xd')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x2df78d,'request\x20sent',JSON['stringify'](_0x208b35));if(_0x208b35[_0x0b9b('0xe')]){if(_0x208b35[_0x0b9b('0xe')][_0x0b9b('0xf')]===0x1f4){logger[_0x0b9b('0xe')]('SquareReport,\x20%s,\x20%s',_0x2df78d,_0x208b35[_0x0b9b('0xe')][_0x0b9b('0x10')]);return _0x3ed952(_0x208b35[_0x0b9b('0xe')][_0x0b9b('0x10')]);}logger[_0x0b9b('0xe')](_0x0b9b('0xc'),_0x2df78d,_0x208b35['error'][_0x0b9b('0x10')]);return _0x3856ae(_0x208b35[_0x0b9b('0xe')]['message']);}else{logger[_0x0b9b('0xb')](_0x0b9b('0xc'),_0x2df78d,'request\x20sent');_0x3856ae(_0x208b35[_0x0b9b('0x11')][_0x0b9b('0x10')]);}})[_0x0b9b('0x12')](function(_0x47eaaa){logger['error'](_0x0b9b('0xc'),_0x2df78d,_0x47eaaa);_0x3ed952(_0x47eaaa);});});}exports['CreateSquareReport']=function(_0x2e785f){var _0x4cdce7=this;return new Promise(function(_0x12f707,_0x3d306f){return db[_0x0b9b('0x13')][_0x0b9b('0x14')](_0x2e785f[_0x0b9b('0x15')],{'raw':_0x2e785f[_0x0b9b('0x16')]?_0x2e785f[_0x0b9b('0x16')]['raw']===undefined?!![]:![]:!![]})[_0x0b9b('0xa')](function(_0x59f61a){logger[_0x0b9b('0xb')](_0x0b9b('0x17'),_0x2e785f);logger[_0x0b9b('0xd')](_0x0b9b('0x17'),_0x2e785f,JSON['stringify'](_0x59f61a));_0x12f707(_0x59f61a);})[_0x0b9b('0x12')](function(_0x23b322){logger[_0x0b9b('0xe')](_0x0b9b('0x17'),_0x23b322[_0x0b9b('0x10')],_0x2e785f);_0x3d306f(_0x4cdce7[_0x0b9b('0xe')](0x1f4,_0x23b322[_0x0b9b('0x10')]));});});};exports[_0x0b9b('0x18')]=function(_0x168138){var _0x1e0cbc=this;return new Promise(function(_0x4c992c,_0x435604){return db[_0x0b9b('0x13')][_0x0b9b('0x19')](_0x168138['body'],{'raw':_0x168138[_0x0b9b('0x16')]?_0x168138[_0x0b9b('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x168138[_0x0b9b('0x16')]?_0x168138[_0x0b9b('0x16')][_0x0b9b('0x1a')]||null:null,'attributes':_0x168138[_0x0b9b('0x16')]?_0x168138['options'][_0x0b9b('0x1b')]||null:null,'limit':_0x168138[_0x0b9b('0x16')]?_0x168138[_0x0b9b('0x16')]['limit']||null:null})[_0x0b9b('0xa')](function(_0x57d428){logger['info']('UpdateSquareReport',_0x168138);logger[_0x0b9b('0xd')](_0x0b9b('0x18'),_0x168138,JSON['stringify'](_0x57d428));_0x4c992c(_0x57d428);})['catch'](function(_0x15d939){logger[_0x0b9b('0xe')]('UpdateSquareReport',_0x15d939[_0x0b9b('0x10')],_0x168138);_0x435604(_0x1e0cbc['error'](0x1f4,_0x15d939[_0x0b9b('0x10')]));});});};
\ No newline at end of file
+var _0xcbe7=['CreateSquareReport','SquareReport','create','body','options','raw','catch','attributes','then','UpdateSquareReport','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','info','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','SquareReport,\x20%s,\x20%s','message','result'];(function(_0x5ce3b4,_0x507a1f){var _0x3aef55=function(_0x58529f){while(--_0x58529f){_0x5ce3b4['push'](_0x5ce3b4['shift']());}};_0x3aef55(++_0x507a1f);}(_0xcbe7,0xbe));var _0x7cbe=function(_0x9de204,_0x149833){_0x9de204=_0x9de204-0x0;var _0x955f15=_0xcbe7[_0x9de204];return _0x955f15;};'use strict';var _=require(_0x7cbe('0x0'));var util=require(_0x7cbe('0x1'));var moment=require('moment');var BPromise=require(_0x7cbe('0x2'));var rs=require(_0x7cbe('0x3'));var fs=require('fs');var Redis=require(_0x7cbe('0x4'));var db=require(_0x7cbe('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7cbe('0x6'))(_0x7cbe('0x7'));var config=require(_0x7cbe('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x7cbe('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4b6fae,_0x502b8c,_0x25c3c4){return new BPromise(function(_0x11097b,_0x4f70cf){return client[_0x7cbe('0xa')](_0x4b6fae,_0x25c3c4)['then'](function(_0x107553){logger[_0x7cbe('0xb')]('SquareReport,\x20%s,\x20%s',_0x502b8c,_0x7cbe('0xc'));logger[_0x7cbe('0xd')](_0x7cbe('0xe'),_0x502b8c,_0x7cbe('0xc'),JSON[_0x7cbe('0xf')](_0x107553));if(_0x107553[_0x7cbe('0x10')]){if(_0x107553['error']['code']===0x1f4){logger['error'](_0x7cbe('0x11'),_0x502b8c,_0x107553[_0x7cbe('0x10')][_0x7cbe('0x12')]);return _0x4f70cf(_0x107553['error']['message']);}logger[_0x7cbe('0x10')](_0x7cbe('0x11'),_0x502b8c,_0x107553[_0x7cbe('0x10')][_0x7cbe('0x12')]);return _0x11097b(_0x107553[_0x7cbe('0x10')][_0x7cbe('0x12')]);}else{logger['info'](_0x7cbe('0x11'),_0x502b8c,'request\x20sent');_0x11097b(_0x107553[_0x7cbe('0x13')][_0x7cbe('0x12')]);}})['catch'](function(_0x4ca7bd){logger['error'](_0x7cbe('0x11'),_0x502b8c,_0x4ca7bd);_0x4f70cf(_0x4ca7bd);});});}exports[_0x7cbe('0x14')]=function(_0x1076d9){var _0x5daf21=this;return new Promise(function(_0x34ffd7,_0x2364d9){return db[_0x7cbe('0x15')][_0x7cbe('0x16')](_0x1076d9[_0x7cbe('0x17')],{'raw':_0x1076d9[_0x7cbe('0x18')]?_0x1076d9['options'][_0x7cbe('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1655f6){logger[_0x7cbe('0xb')]('CreateSquareReport',_0x1076d9);logger['debug'](_0x7cbe('0x14'),_0x1076d9,JSON[_0x7cbe('0xf')](_0x1655f6));_0x34ffd7(_0x1655f6);})[_0x7cbe('0x1a')](function(_0x8f7354){logger['error'](_0x7cbe('0x14'),_0x8f7354['message'],_0x1076d9);_0x2364d9(_0x5daf21['error'](0x1f4,_0x8f7354[_0x7cbe('0x12')]));});});};exports['UpdateSquareReport']=function(_0x51fd19){var _0x2b54b0=this;return new Promise(function(_0x2fa4fa,_0xa62bf1){return db['SquareReport']['update'](_0x51fd19[_0x7cbe('0x17')],{'raw':_0x51fd19['options']?_0x51fd19[_0x7cbe('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x51fd19[_0x7cbe('0x18')]?_0x51fd19[_0x7cbe('0x18')]['where']||null:null,'attributes':_0x51fd19[_0x7cbe('0x18')]?_0x51fd19['options'][_0x7cbe('0x1b')]||null:null,'limit':_0x51fd19[_0x7cbe('0x18')]?_0x51fd19[_0x7cbe('0x18')]['limit']||null:null})[_0x7cbe('0x1c')](function(_0x5d5f7d){logger[_0x7cbe('0xb')](_0x7cbe('0x1d'),_0x51fd19);logger[_0x7cbe('0xd')](_0x7cbe('0x1d'),_0x51fd19,JSON['stringify'](_0x5d5f7d));_0x2fa4fa(_0x5d5f7d);})[_0x7cbe('0x1a')](function(_0x10688f){logger[_0x7cbe('0x10')](_0x7cbe('0x1d'),_0x10688f['message'],_0x51fd19);_0xa62bf1(_0x2b54b0[_0x7cbe('0x10')](0x1f4,_0x10688f['message']));});});};
\ No newline at end of file
index 9538813..016422a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65e0=['../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe','post','put','/:id','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x65e0,0x1d9));var _0x065e=function(_0x2f39cf,_0x3c59ec){_0x2f39cf=_0x2f39cf-0x0;var _0xd0ece8=_0x65e0[_0x2f39cf];return _0xd0ece8;};'use strict';var multer=require(_0x065e('0x0'));var util=require(_0x065e('0x1'));var path=require(_0x065e('0x2'));var timeout=require(_0x065e('0x3'));var express=require('express');var router=express[_0x065e('0x4')]();var fs_extra=require(_0x065e('0x5'));var auth=require(_0x065e('0x6'));var interaction=require(_0x065e('0x7'));var config=require(_0x065e('0x8'));var controller=require(_0x065e('0x9'));router[_0x065e('0xa')]('/',auth[_0x065e('0xb')](),controller[_0x065e('0xc')]);router[_0x065e('0xa')](_0x065e('0xd'),auth[_0x065e('0xb')](),controller['describe']);router['get']('/:id',auth[_0x065e('0xb')](),controller['show']);router[_0x065e('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x065e('0xf')](_0x065e('0x10'),auth[_0x065e('0xb')](),controller['update']);router[_0x065e('0x11')](_0x065e('0x10'),auth[_0x065e('0xb')](),controller[_0x065e('0x12')]);module[_0x065e('0x13')]=router;
\ No newline at end of file
+var _0xac09=['../../config/environment','./squareReportDetail.controller','get','isAuthenticated','/describe','describe','/:id','post','create','put','update','destroy','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xac09,0x188));var _0x9ac0=function(_0x1fc461,_0x26c61e){_0x1fc461=_0x1fc461-0x0;var _0x19b0ad=_0xac09[_0x1fc461];return _0x19b0ad;};'use strict';var multer=require(_0x9ac0('0x0'));var util=require(_0x9ac0('0x1'));var path=require(_0x9ac0('0x2'));var timeout=require(_0x9ac0('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9ac0('0x4'));var auth=require(_0x9ac0('0x5'));var interaction=require(_0x9ac0('0x6'));var config=require(_0x9ac0('0x7'));var controller=require(_0x9ac0('0x8'));router[_0x9ac0('0x9')]('/',auth[_0x9ac0('0xa')](),controller['index']);router[_0x9ac0('0x9')](_0x9ac0('0xb'),auth[_0x9ac0('0xa')](),controller[_0x9ac0('0xc')]);router[_0x9ac0('0x9')](_0x9ac0('0xd'),auth[_0x9ac0('0xa')](),controller['show']);router[_0x9ac0('0xe')]('/',auth['isAuthenticated'](),controller[_0x9ac0('0xf')]);router[_0x9ac0('0x10')](_0x9ac0('0xd'),auth[_0x9ac0('0xa')](),controller[_0x9ac0('0x11')]);router['delete']('/:id',auth[_0x9ac0('0xa')](),controller[_0x9ac0('0x12')]);module['exports']=router;
\ No newline at end of file
index fe8c3f9..be7cb5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ff1=['sequelize','exports','STRING'];(function(_0x36bff5,_0x3156cb){var _0x80ade5=function(_0x5eee65){while(--_0x5eee65){_0x36bff5['push'](_0x36bff5['shift']());}};_0x80ade5(++_0x3156cb);}(_0x1ff1,0x10e));var _0x11ff=function(_0x187046,_0x26fe60){_0x187046=_0x187046-0x0;var _0xdd564d=_0x1ff1[_0x187046];return _0xdd564d;};'use strict';var Sequelize=require(_0x11ff('0x0'));module[_0x11ff('0x1')]={'uniqueid':{'type':Sequelize[_0x11ff('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0x11ff('0x2')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0x11ff('0x2')]},'callerid':{'type':Sequelize[_0x11ff('0x2')]}};
\ No newline at end of file
+var _0x2560=['STRING','TEXT','sequelize','exports'];(function(_0x4214da,_0x586705){var _0x64da0=function(_0x273e00){while(--_0x273e00){_0x4214da['push'](_0x4214da['shift']());}};_0x64da0(++_0x586705);}(_0x2560,0x9a));var _0x0256=function(_0x488666,_0x58cb8c){_0x488666=_0x488666-0x0;var _0x7f1c2c=_0x2560[_0x488666];return _0x7f1c2c;};'use strict';var Sequelize=require(_0x0256('0x0'));module[_0x0256('0x1')]={'uniqueid':{'type':Sequelize[_0x0256('0x2')]},'node':{'type':Sequelize[_0x0256('0x2')]},'application':{'type':Sequelize[_0x0256('0x2')]},'data':{'type':Sequelize[_0x0256('0x3')]},'project_name':{'type':Sequelize[_0x0256('0x2')]},'callerid':{'type':Sequelize[_0x0256('0x2')]}};
\ No newline at end of file
index 570766c..35ee910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cc0=['find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','reject','save','update','then','error','send','index','map','SquareDetailsReport','rawAttributes','type','key','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','includeAll','catch','params','keys','include','options'];(function(_0x1b1855,_0x1f8fce){var _0x5168bd=function(_0x479115){while(--_0x479115){_0x1b1855['push'](_0x1b1855['shift']());}};_0x5168bd(++_0x1f8fce);}(_0x9cc0,0x93));var _0x09cc=function(_0x57b5d5,_0x25b4ee){_0x57b5d5=_0x57b5d5-0x0;var _0x24e2b5=_0x9cc0[_0x57b5d5];return _0x24e2b5;};'use strict';var emlformat=require(_0x09cc('0x0'));var rimraf=require(_0x09cc('0x1'));var zipdir=require(_0x09cc('0x2'));var jsonpatch=require(_0x09cc('0x3'));var rp=require('request-promise');var moment=require(_0x09cc('0x4'));var BPromise=require(_0x09cc('0x5'));var Mustache=require(_0x09cc('0x6'));var util=require(_0x09cc('0x7'));var path=require(_0x09cc('0x8'));var sox=require(_0x09cc('0x9'));var csv=require(_0x09cc('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x09cc('0xb'));var _=require(_0x09cc('0xc'));var squel=require(_0x09cc('0xd'));var crypto=require(_0x09cc('0xe'));var jsforce=require(_0x09cc('0xf'));var deskjs=require(_0x09cc('0x10'));var toCsv=require(_0x09cc('0xa'));var querystring=require(_0x09cc('0x11'));var Papa=require(_0x09cc('0x12'));var Redis=require(_0x09cc('0x13'));var authService=require(_0x09cc('0x14'));var qs=require(_0x09cc('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x09cc('0x16'));var db=require(_0x09cc('0x17'))['db'];function respondWithStatusCode(_0x3869d0,_0x3e0d58){_0x3e0d58=_0x3e0d58||0xcc;return function(_0x428931){if(_0x428931){return _0x3869d0[_0x09cc('0x18')](_0x3e0d58);}return _0x3869d0[_0x09cc('0x19')](_0x3e0d58)['end']();};}function respondWithResult(_0xccfcdb,_0x5a8e54){_0x5a8e54=_0x5a8e54||0xc8;return function(_0x2783cd){if(_0x2783cd){return _0xccfcdb['status'](_0x5a8e54)[_0x09cc('0x1a')](_0x2783cd);}};}function respondWithFilteredResult(_0xb69a28,_0x1c591a){return function(_0x24c3b9){if(_0x24c3b9){var _0x19864d=typeof _0x1c591a[_0x09cc('0x1b')]==='undefined'&&typeof _0x1c591a['limit']===_0x09cc('0x1c');var _0x588c31=_0x24c3b9[_0x09cc('0x1d')];var _0x5c4326=_0x19864d?0x0:_0x1c591a[_0x09cc('0x1b')];var _0x374bd2=_0x19864d?_0x24c3b9['count']:_0x1c591a[_0x09cc('0x1b')]+_0x1c591a[_0x09cc('0x1e')];var _0x55c9df;if(_0x374bd2>=_0x588c31){_0x374bd2=_0x588c31;_0x55c9df=0xc8;}else{_0x55c9df=0xce;}_0xb69a28['status'](_0x55c9df);return _0xb69a28['set'](_0x09cc('0x1f'),_0x5c4326+'-'+_0x374bd2+'/'+_0x588c31)[_0x09cc('0x1a')](_0x24c3b9);}return null;};}function patchUpdates(_0x4d04f8){return function(_0x2c4bb8){try{jsonpatch['apply'](_0x2c4bb8,_0x4d04f8,!![]);}catch(_0x5dd088){return BPromise[_0x09cc('0x20')](_0x5dd088);}return _0x2c4bb8[_0x09cc('0x21')]();};}function saveUpdates(_0x5cacc9,_0xfd7f19){return function(_0x22ac9a){if(_0x22ac9a){return _0x22ac9a[_0x09cc('0x22')](_0x5cacc9)[_0x09cc('0x23')](function(_0x4b60f6){return _0x4b60f6;});}return null;};}function removeEntity(_0x513ae8,_0x1b8a13){return function(_0x496c1c){if(_0x496c1c){return _0x496c1c['destroy']()[_0x09cc('0x23')](function(){_0x513ae8[_0x09cc('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5eed16,_0x5d02a6){return function(_0x3a0d9e){if(!_0x3a0d9e){_0x5eed16[_0x09cc('0x18')](0x194);}return _0x3a0d9e;};}function handleError(_0x215373,_0x2a5334){_0x2a5334=_0x2a5334||0x1f4;return function(_0x4c0f84){logger[_0x09cc('0x24')](_0x4c0f84['stack']);if(_0x4c0f84['name']){delete _0x4c0f84['name'];}_0x215373[_0x09cc('0x19')](_0x2a5334)[_0x09cc('0x25')](_0x4c0f84);};}exports[_0x09cc('0x26')]=function(_0x3cab33,_0x527e7b){var _0x52b254={},_0x52d7d={},_0x32d432={'count':0x0,'rows':[]};var _0x307431=_[_0x09cc('0x27')](db[_0x09cc('0x28')][_0x09cc('0x29')],function(_0x557eaf){return{'name':_0x557eaf['fieldName'],'type':_0x557eaf[_0x09cc('0x2a')][_0x09cc('0x2b')]};});_0x52d7d[_0x09cc('0x2c')]=_[_0x09cc('0x27')](_0x307431,_0x09cc('0x2d'));_0x52d7d['query']=_['keys'](_0x3cab33[_0x09cc('0x2e')]);_0x52d7d[_0x09cc('0x2f')]=_[_0x09cc('0x30')](_0x52d7d[_0x09cc('0x2c')],_0x52d7d[_0x09cc('0x2e')]);_0x52b254[_0x09cc('0x31')]=_[_0x09cc('0x30')](_0x52d7d['model'],qs[_0x09cc('0x32')](_0x3cab33[_0x09cc('0x2e')][_0x09cc('0x32')]));_0x52b254[_0x09cc('0x31')]=_0x52b254[_0x09cc('0x31')][_0x09cc('0x33')]?_0x52b254[_0x09cc('0x31')]:_0x52d7d[_0x09cc('0x2c')];if(!_0x3cab33[_0x09cc('0x2e')][_0x09cc('0x34')](_0x09cc('0x35'))){_0x52b254[_0x09cc('0x1e')]=qs['limit'](_0x3cab33[_0x09cc('0x2e')][_0x09cc('0x1e')]);_0x52b254[_0x09cc('0x1b')]=qs['offset'](_0x3cab33[_0x09cc('0x2e')][_0x09cc('0x1b')]);}_0x52b254[_0x09cc('0x36')]=qs[_0x09cc('0x37')](_0x3cab33[_0x09cc('0x2e')]['sort']);_0x52b254[_0x09cc('0x38')]=qs[_0x09cc('0x2f')](_[_0x09cc('0x39')](_0x3cab33[_0x09cc('0x2e')],_0x52d7d[_0x09cc('0x2f')]),_0x307431);if(_0x3cab33[_0x09cc('0x2e')]['filter']){_0x52b254['where']=_[_0x09cc('0x3a')](_0x52b254[_0x09cc('0x38')],{'$or':_[_0x09cc('0x27')](_0x307431,function(_0x22012c){if(_0x22012c[_0x09cc('0x2a')]!==_0x09cc('0x3b')){var _0x5688a8={};_0x5688a8[_0x22012c['name']]={'$like':'%'+_0x3cab33[_0x09cc('0x2e')]['filter']+'%'};return _0x5688a8;}})});}_0x52b254=_['merge']({},_0x52b254,_0x3cab33['options']);var _0x531d33={'where':_0x52b254['where']};return db['SquareDetailsReport'][_0x09cc('0x1d')](_0x531d33)[_0x09cc('0x23')](function(_0x5db0b5){_0x32d432[_0x09cc('0x1d')]=_0x5db0b5;if(_0x3cab33[_0x09cc('0x2e')][_0x09cc('0x3c')]){_0x52b254['include']=[{'all':!![]}];}return db[_0x09cc('0x28')]['findAll'](_0x52b254);})[_0x09cc('0x23')](function(_0x377678){_0x32d432['rows']=_0x377678;return _0x32d432;})[_0x09cc('0x23')](respondWithFilteredResult(_0x527e7b,_0x52b254))[_0x09cc('0x3d')](handleError(_0x527e7b,null));};exports['show']=function(_0x2a5734,_0x219731){var _0x1c6e5f={'raw':!![],'where':{'id':_0x2a5734[_0x09cc('0x3e')]['id']}},_0x2cd905={};_0x2cd905[_0x09cc('0x2c')]=_[_0x09cc('0x3f')](db['SquareDetailsReport'][_0x09cc('0x29')]);_0x2cd905[_0x09cc('0x2e')]=_['keys'](_0x2a5734[_0x09cc('0x2e')]);_0x2cd905[_0x09cc('0x2f')]=_[_0x09cc('0x30')](_0x2cd905[_0x09cc('0x2c')],_0x2cd905[_0x09cc('0x2e')]);_0x1c6e5f[_0x09cc('0x31')]=_[_0x09cc('0x30')](_0x2cd905[_0x09cc('0x2c')],qs[_0x09cc('0x32')](_0x2a5734[_0x09cc('0x2e')][_0x09cc('0x32')]));_0x1c6e5f[_0x09cc('0x31')]=_0x1c6e5f[_0x09cc('0x31')][_0x09cc('0x33')]?_0x1c6e5f[_0x09cc('0x31')]:_0x2cd905[_0x09cc('0x2c')];if(_0x2a5734[_0x09cc('0x2e')][_0x09cc('0x3c')]){_0x1c6e5f[_0x09cc('0x40')]=[{'all':!![]}];}_0x1c6e5f=_[_0x09cc('0x3a')]({},_0x1c6e5f,_0x2a5734[_0x09cc('0x41')]);return db[_0x09cc('0x28')][_0x09cc('0x42')](_0x1c6e5f)[_0x09cc('0x23')](handleEntityNotFound(_0x219731,null))[_0x09cc('0x23')](respondWithResult(_0x219731,null))[_0x09cc('0x3d')](handleError(_0x219731,null));};exports[_0x09cc('0x43')]=function(_0xd7de7f,_0x292573){return db['SquareDetailsReport']['create'](_0xd7de7f[_0x09cc('0x44')],{})[_0x09cc('0x23')](respondWithResult(_0x292573,0xc9))[_0x09cc('0x3d')](handleError(_0x292573,null));};exports[_0x09cc('0x22')]=function(_0xf8f49d,_0x1bebd4){if(_0xf8f49d[_0x09cc('0x44')]['id']){delete _0xf8f49d['body']['id'];}return db[_0x09cc('0x28')][_0x09cc('0x42')]({'where':{'id':_0xf8f49d[_0x09cc('0x3e')]['id']}})[_0x09cc('0x23')](handleEntityNotFound(_0x1bebd4,null))[_0x09cc('0x23')](saveUpdates(_0xf8f49d['body'],null))['then'](respondWithResult(_0x1bebd4,null))[_0x09cc('0x3d')](handleError(_0x1bebd4,null));};exports[_0x09cc('0x45')]=function(_0x46ebc0,_0x1fc49d){return db[_0x09cc('0x28')]['find']({'where':{'id':_0x46ebc0[_0x09cc('0x3e')]['id']}})[_0x09cc('0x23')](handleEntityNotFound(_0x1fc49d,null))[_0x09cc('0x23')](removeEntity(_0x1fc49d,null))[_0x09cc('0x3d')](handleError(_0x1fc49d,null));};exports[_0x09cc('0x46')]=function(_0x5a0146,_0x13dde6){return db[_0x09cc('0x28')][_0x09cc('0x46')]()[_0x09cc('0x23')](respondWithResult(_0x13dde6,null))[_0x09cc('0x3d')](handleError(_0x13dde6,null));};
\ No newline at end of file
+var _0x3197=['options','SquareDetailsReport','includeAll','include','rows','catch','show','params','rawAttributes','find','create','body','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','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','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','save','update','then','stack','name','index','fieldName','type','map','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x35f2d6,_0x1eacc1){var _0x33a492=function(_0x3dccc5){while(--_0x3dccc5){_0x35f2d6['push'](_0x35f2d6['shift']());}};_0x33a492(++_0x1eacc1);}(_0x3197,0x18e));var _0x7319=function(_0x2cd1bc,_0x2c46d8){_0x2cd1bc=_0x2cd1bc-0x0;var _0x52732a=_0x3197[_0x2cd1bc];return _0x52732a;};'use strict';var emlformat=require(_0x7319('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7319('0x1'));var jsonpatch=require(_0x7319('0x2'));var rp=require(_0x7319('0x3'));var moment=require(_0x7319('0x4'));var BPromise=require(_0x7319('0x5'));var Mustache=require(_0x7319('0x6'));var util=require(_0x7319('0x7'));var path=require(_0x7319('0x8'));var sox=require(_0x7319('0x9'));var csv=require(_0x7319('0xa'));var ejs=require(_0x7319('0xb'));var fs=require('fs');var fs_extra=require(_0x7319('0xc'));var _=require('lodash');var squel=require(_0x7319('0xd'));var crypto=require(_0x7319('0xe'));var jsforce=require(_0x7319('0xf'));var deskjs=require(_0x7319('0x10'));var toCsv=require(_0x7319('0xa'));var querystring=require(_0x7319('0x11'));var Papa=require(_0x7319('0x12'));var Redis=require(_0x7319('0x13'));var authService=require(_0x7319('0x14'));var qs=require(_0x7319('0x15'));var as=require(_0x7319('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7319('0x17'));var utils=require(_0x7319('0x18'));var config=require(_0x7319('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x7319('0x1a'))['db'];function respondWithStatusCode(_0x29382b,_0x5de713){_0x5de713=_0x5de713||0xcc;return function(_0x496b21){if(_0x496b21){return _0x29382b[_0x7319('0x1b')](_0x5de713);}return _0x29382b[_0x7319('0x1c')](_0x5de713)[_0x7319('0x1d')]();};}function respondWithResult(_0x5ca2cd,_0x576d15){_0x576d15=_0x576d15||0xc8;return function(_0x39e48d){if(_0x39e48d){return _0x5ca2cd[_0x7319('0x1c')](_0x576d15)['json'](_0x39e48d);}};}function respondWithFilteredResult(_0x1b350d,_0x50501f){return function(_0xb7d3f8){if(_0xb7d3f8){var _0x44cf2c=typeof _0x50501f['offset']===_0x7319('0x1e')&&typeof _0x50501f['limit']===_0x7319('0x1e');var _0x543631=_0xb7d3f8[_0x7319('0x1f')];var _0x2996c1=_0x44cf2c?0x0:_0x50501f[_0x7319('0x20')];var _0x18fda5=_0x44cf2c?_0xb7d3f8['count']:_0x50501f[_0x7319('0x20')]+_0x50501f[_0x7319('0x21')];var _0x53a46b;if(_0x18fda5>=_0x543631){_0x18fda5=_0x543631;_0x53a46b=0xc8;}else{_0x53a46b=0xce;}_0x1b350d['status'](_0x53a46b);return _0x1b350d[_0x7319('0x22')](_0x7319('0x23'),_0x2996c1+'-'+_0x18fda5+'/'+_0x543631)[_0x7319('0x24')](_0xb7d3f8);}return null;};}function patchUpdates(_0x2313d7){return function(_0x15df59){try{jsonpatch[_0x7319('0x25')](_0x15df59,_0x2313d7,!![]);}catch(_0x26380d){return BPromise['reject'](_0x26380d);}return _0x15df59[_0x7319('0x26')]();};}function saveUpdates(_0x12f990,_0x103481){return function(_0x1a8b89){if(_0x1a8b89){return _0x1a8b89[_0x7319('0x27')](_0x12f990)[_0x7319('0x28')](function(_0x3d1786){return _0x3d1786;});}return null;};}function removeEntity(_0x3d32ca,_0x45492d){return function(_0xe0f983){if(_0xe0f983){return _0xe0f983['destroy']()[_0x7319('0x28')](function(){_0x3d32ca[_0x7319('0x1c')](0xcc)[_0x7319('0x1d')]();});}};}function handleEntityNotFound(_0x3148a9,_0x469806){return function(_0x37029a){if(!_0x37029a){_0x3148a9['sendStatus'](0x194);}return _0x37029a;};}function handleError(_0x41534e,_0x171f88){_0x171f88=_0x171f88||0x1f4;return function(_0x5825f8){logger['error'](_0x5825f8[_0x7319('0x29')]);if(_0x5825f8[_0x7319('0x2a')]){delete _0x5825f8['name'];}_0x41534e[_0x7319('0x1c')](_0x171f88)['send'](_0x5825f8);};}exports[_0x7319('0x2b')]=function(_0x43b43d,_0x761e88){var _0x779a14={},_0x3fc63a={},_0x367bb={'count':0x0,'rows':[]};var _0x5c86ef=_['map'](db['SquareDetailsReport']['rawAttributes'],function(_0x57ddb9){return{'name':_0x57ddb9[_0x7319('0x2c')],'type':_0x57ddb9[_0x7319('0x2d')]['key']};});_0x3fc63a['model']=_[_0x7319('0x2e')](_0x5c86ef,'name');_0x3fc63a['query']=_[_0x7319('0x2f')](_0x43b43d[_0x7319('0x30')]);_0x3fc63a[_0x7319('0x31')]=_['intersection'](_0x3fc63a[_0x7319('0x32')],_0x3fc63a[_0x7319('0x30')]);_0x779a14[_0x7319('0x33')]=_[_0x7319('0x34')](_0x3fc63a[_0x7319('0x32')],qs[_0x7319('0x35')](_0x43b43d[_0x7319('0x30')]['fields']));_0x779a14[_0x7319('0x33')]=_0x779a14[_0x7319('0x33')][_0x7319('0x36')]?_0x779a14[_0x7319('0x33')]:_0x3fc63a['model'];if(!_0x43b43d[_0x7319('0x30')][_0x7319('0x37')](_0x7319('0x38'))){_0x779a14[_0x7319('0x21')]=qs[_0x7319('0x21')](_0x43b43d[_0x7319('0x30')][_0x7319('0x21')]);_0x779a14['offset']=qs['offset'](_0x43b43d[_0x7319('0x30')][_0x7319('0x20')]);}_0x779a14[_0x7319('0x39')]=qs[_0x7319('0x3a')](_0x43b43d[_0x7319('0x30')][_0x7319('0x3a')]);_0x779a14[_0x7319('0x3b')]=qs[_0x7319('0x31')](_[_0x7319('0x3c')](_0x43b43d[_0x7319('0x30')],_0x3fc63a[_0x7319('0x31')]),_0x5c86ef);if(_0x43b43d[_0x7319('0x30')][_0x7319('0x3d')]){_0x779a14['where']=_[_0x7319('0x3e')](_0x779a14[_0x7319('0x3b')],{'$or':_['map'](_0x5c86ef,function(_0x78d48){if(_0x78d48[_0x7319('0x2d')]!==_0x7319('0x3f')){var _0x3f5678={};_0x3f5678[_0x78d48[_0x7319('0x2a')]]={'$like':'%'+_0x43b43d[_0x7319('0x30')][_0x7319('0x3d')]+'%'};return _0x3f5678;}})});}_0x779a14=_[_0x7319('0x3e')]({},_0x779a14,_0x43b43d[_0x7319('0x40')]);var _0x2ab456={'where':_0x779a14['where']};return db[_0x7319('0x41')]['count'](_0x2ab456)[_0x7319('0x28')](function(_0x10b4b3){_0x367bb[_0x7319('0x1f')]=_0x10b4b3;if(_0x43b43d['query'][_0x7319('0x42')]){_0x779a14[_0x7319('0x43')]=[{'all':!![]}];}return db['SquareDetailsReport']['findAll'](_0x779a14);})[_0x7319('0x28')](function(_0x2a0e96){_0x367bb[_0x7319('0x44')]=_0x2a0e96;return _0x367bb;})[_0x7319('0x28')](respondWithFilteredResult(_0x761e88,_0x779a14))[_0x7319('0x45')](handleError(_0x761e88,null));};exports[_0x7319('0x46')]=function(_0x21270a,_0x8c0a5){var _0x23474d={'raw':!![],'where':{'id':_0x21270a[_0x7319('0x47')]['id']}},_0x93b8c2={};_0x93b8c2['model']=_[_0x7319('0x2f')](db['SquareDetailsReport'][_0x7319('0x48')]);_0x93b8c2[_0x7319('0x30')]=_[_0x7319('0x2f')](_0x21270a[_0x7319('0x30')]);_0x93b8c2['filters']=_['intersection'](_0x93b8c2[_0x7319('0x32')],_0x93b8c2[_0x7319('0x30')]);_0x23474d[_0x7319('0x33')]=_[_0x7319('0x34')](_0x93b8c2[_0x7319('0x32')],qs[_0x7319('0x35')](_0x21270a[_0x7319('0x30')]['fields']));_0x23474d[_0x7319('0x33')]=_0x23474d[_0x7319('0x33')][_0x7319('0x36')]?_0x23474d[_0x7319('0x33')]:_0x93b8c2[_0x7319('0x32')];if(_0x21270a[_0x7319('0x30')][_0x7319('0x42')]){_0x23474d['include']=[{'all':!![]}];}_0x23474d=_[_0x7319('0x3e')]({},_0x23474d,_0x21270a['options']);return db[_0x7319('0x41')][_0x7319('0x49')](_0x23474d)[_0x7319('0x28')](handleEntityNotFound(_0x8c0a5,null))['then'](respondWithResult(_0x8c0a5,null))[_0x7319('0x45')](handleError(_0x8c0a5,null));};exports['create']=function(_0x57ff6b,_0x340c4c){return db[_0x7319('0x41')][_0x7319('0x4a')](_0x57ff6b[_0x7319('0x4b')],{})['then'](respondWithResult(_0x340c4c,0xc9))[_0x7319('0x45')](handleError(_0x340c4c,null));};exports[_0x7319('0x27')]=function(_0x29b828,_0x27b0a3){if(_0x29b828['body']['id']){delete _0x29b828['body']['id'];}return db['SquareDetailsReport'][_0x7319('0x49')]({'where':{'id':_0x29b828[_0x7319('0x47')]['id']}})[_0x7319('0x28')](handleEntityNotFound(_0x27b0a3,null))[_0x7319('0x28')](saveUpdates(_0x29b828['body'],null))[_0x7319('0x28')](respondWithResult(_0x27b0a3,null))[_0x7319('0x45')](handleError(_0x27b0a3,null));};exports[_0x7319('0x4c')]=function(_0x4618d3,_0x222172){return db[_0x7319('0x41')][_0x7319('0x49')]({'where':{'id':_0x4618d3[_0x7319('0x47')]['id']}})[_0x7319('0x28')](handleEntityNotFound(_0x222172,null))[_0x7319('0x28')](removeEntity(_0x222172,null))[_0x7319('0x45')](handleError(_0x222172,null));};exports['describe']=function(_0x6eb147,_0x40dbde){return db[_0x7319('0x41')]['describe']()['then'](respondWithResult(_0x40dbde,null))['catch'](handleError(_0x40dbde,null));};
\ No newline at end of file
index 4a7b118..ddb75d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd583=['request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','define','lodash','util','../../config/logger','api','bluebird'];(function(_0xc1b474,_0x4fff31){var _0x3b3abd=function(_0x42917e){while(--_0x42917e){_0xc1b474['push'](_0xc1b474['shift']());}};_0x3b3abd(++_0x4fff31);}(_0xd583,0x19d));var _0x3d58=function(_0x1b5cc2,_0x4321c2){_0x1b5cc2=_0x1b5cc2-0x0;var _0x375f3b=_0xd583[_0x1b5cc2];return _0x375f3b;};'use strict';var _=require(_0x3d58('0x0'));var util=require(_0x3d58('0x1'));var logger=require(_0x3d58('0x2'))(_0x3d58('0x3'));var moment=require('moment');var BPromise=require(_0x3d58('0x4'));var rp=require(_0x3d58('0x5'));var fs=require('fs');var path=require(_0x3d58('0x6'));var rimraf=require(_0x3d58('0x7'));var config=require(_0x3d58('0x8'));var attributes=require(_0x3d58('0x9'));module['exports']=function(_0x4d58f,_0x5cfc01){return _0x4d58f[_0x3d58('0xa')]('SquareDetailsReport',attributes,{'tableName':'report_square_details','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f97=['path','rimraf','../../config/environment','define','SquareDetailsReport','report_square_details','lodash','moment','bluebird','request-promise'];(function(_0x29eba4,_0x5c763a){var _0x48ecc1=function(_0x654b54){while(--_0x654b54){_0x29eba4['push'](_0x29eba4['shift']());}};_0x48ecc1(++_0x5c763a);}(_0x2f97,0x164));var _0x72f9=function(_0x1d2853,_0x3a145f){_0x1d2853=_0x1d2853-0x0;var _0x3b7a4a=_0x2f97[_0x1d2853];return _0x3b7a4a;};'use strict';var _=require(_0x72f9('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x72f9('0x1'));var BPromise=require(_0x72f9('0x2'));var rp=require(_0x72f9('0x3'));var fs=require('fs');var path=require(_0x72f9('0x4'));var rimraf=require(_0x72f9('0x5'));var config=require(_0x72f9('0x6'));var attributes=require('./squareReportDetail.attributes');module['exports']=function(_0x19f62e,_0x440810){return _0x19f62e[_0x72f9('0x7')](_0x72f9('0x8'),attributes,{'tableName':_0x72f9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a8f1249..e82a020 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26f9=['create','options','CreateSquareDetailsReport','lodash','util','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','SquareDetailsReport,\x20%s,\x20%s','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','SquareDetailsReport'];(function(_0x57bed9,_0x181e67){var _0x3e8241=function(_0x169315){while(--_0x169315){_0x57bed9['push'](_0x57bed9['shift']());}};_0x3e8241(++_0x181e67);}(_0x26f9,0x16f));var _0x926f=function(_0x501ca1,_0x6c6edc){_0x501ca1=_0x501ca1-0x0;var _0x2a99c4=_0x26f9[_0x501ca1];return _0x2a99c4;};'use strict';var _=require(_0x926f('0x0'));var util=require(_0x926f('0x1'));var moment=require('moment');var BPromise=require(_0x926f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x926f('0x3'))['db'];var utils=require(_0x926f('0x4'));var logger=require('../../config/logger')(_0x926f('0x5'));var config=require(_0x926f('0x6'));var jayson=require(_0x926f('0x7'));var client=jayson[_0x926f('0x8')][_0x926f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3d2ded,_0xf56fcb,_0x1e455d){return new BPromise(function(_0x41a7ed,_0x2af11e){return client['request'](_0x3d2ded,_0x1e455d)[_0x926f('0xa')](function(_0x593c13){logger[_0x926f('0xb')](_0x926f('0xc'),_0xf56fcb,'request\x20sent');logger[_0x926f('0xd')](_0x926f('0xe'),_0xf56fcb,_0x926f('0xf'),JSON[_0x926f('0x10')](_0x593c13));if(_0x593c13[_0x926f('0x11')]){if(_0x593c13['error'][_0x926f('0x12')]===0x1f4){logger[_0x926f('0x11')](_0x926f('0xc'),_0xf56fcb,_0x593c13[_0x926f('0x11')][_0x926f('0x13')]);return _0x2af11e(_0x593c13[_0x926f('0x11')][_0x926f('0x13')]);}logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0xf56fcb,_0x593c13['error'][_0x926f('0x13')]);return _0x41a7ed(_0x593c13[_0x926f('0x11')][_0x926f('0x13')]);}else{logger[_0x926f('0xb')]('SquareDetailsReport,\x20%s,\x20%s',_0xf56fcb,_0x926f('0xf'));_0x41a7ed(_0x593c13[_0x926f('0x14')]['message']);}})[_0x926f('0x15')](function(_0x52865b){logger[_0x926f('0x11')]('SquareDetailsReport,\x20%s,\x20%s',_0xf56fcb,_0x52865b);_0x2af11e(_0x52865b);});});}exports['CreateSquareDetailsReport']=function(_0x36ead3){var _0xab29b3=this;return new Promise(function(_0x4f25e3,_0x3ed07d){return db[_0x926f('0x16')][_0x926f('0x17')](_0x36ead3['body'],{'raw':_0x36ead3[_0x926f('0x18')]?_0x36ead3[_0x926f('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x926f('0xa')](function(_0x4241ac){logger['info'](_0x926f('0x19'),_0x36ead3);logger[_0x926f('0xd')](_0x926f('0x19'),_0x36ead3,JSON[_0x926f('0x10')](_0x4241ac));_0x4f25e3(_0x4241ac);})[_0x926f('0x15')](function(_0x3b7179){logger[_0x926f('0x11')](_0x926f('0x19'),_0x3b7179[_0x926f('0x13')],_0x36ead3);_0x3ed07d(_0xab29b3[_0x926f('0x11')](0x1f4,_0x3b7179[_0x926f('0x13')]));});});};
\ No newline at end of file
+var _0x06ef=['debug','stringify','error','code','message','result','catch','SquareDetailsReport,\x20%s,\x20%s','body','options','CreateSquareDetailsReport','moment','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','request\x20sent'];(function(_0x5283be,_0x28ab7b){var _0x651896=function(_0x3e28cb){while(--_0x3e28cb){_0x5283be['push'](_0x5283be['shift']());}};_0x651896(++_0x28ab7b);}(_0x06ef,0x185));var _0xf06e=function(_0xf84af4,_0x578c08){_0xf84af4=_0xf84af4-0x0;var _0x6cdb67=_0x06ef[_0xf84af4];return _0x6cdb67;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf06e('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xf06e('0x1'));var logger=require(_0xf06e('0x2'))(_0xf06e('0x3'));var config=require('../../config/environment');var jayson=require(_0xf06e('0x4'));var client=jayson[_0xf06e('0x5')]['http']({'port':0x232a});function respondWithRpcPromise(_0x59b74b,_0x4e05dc,_0x5cddf1){return new BPromise(function(_0x4ccbee,_0x25b56e){return client[_0xf06e('0x6')](_0x59b74b,_0x5cddf1)[_0xf06e('0x7')](function(_0x2bb08c){logger[_0xf06e('0x8')]('SquareDetailsReport,\x20%s,\x20%s',_0x4e05dc,_0xf06e('0x9'));logger[_0xf06e('0xa')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x4e05dc,_0xf06e('0x9'),JSON[_0xf06e('0xb')](_0x2bb08c));if(_0x2bb08c[_0xf06e('0xc')]){if(_0x2bb08c[_0xf06e('0xc')][_0xf06e('0xd')]===0x1f4){logger[_0xf06e('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x4e05dc,_0x2bb08c[_0xf06e('0xc')][_0xf06e('0xe')]);return _0x25b56e(_0x2bb08c['error'][_0xf06e('0xe')]);}logger[_0xf06e('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x4e05dc,_0x2bb08c['error']['message']);return _0x4ccbee(_0x2bb08c[_0xf06e('0xc')][_0xf06e('0xe')]);}else{logger[_0xf06e('0x8')]('SquareDetailsReport,\x20%s,\x20%s',_0x4e05dc,_0xf06e('0x9'));_0x4ccbee(_0x2bb08c[_0xf06e('0xf')][_0xf06e('0xe')]);}})[_0xf06e('0x10')](function(_0x44157a){logger[_0xf06e('0xc')](_0xf06e('0x11'),_0x4e05dc,_0x44157a);_0x25b56e(_0x44157a);});});}exports['CreateSquareDetailsReport']=function(_0x380c07){var _0x55dabf=this;return new Promise(function(_0x251c9f,_0x7a9f4b){return db['SquareDetailsReport']['create'](_0x380c07[_0xf06e('0x12')],{'raw':_0x380c07[_0xf06e('0x13')]?_0x380c07['options']['raw']===undefined?!![]:![]:!![]})[_0xf06e('0x7')](function(_0x211590){logger[_0xf06e('0x8')]('CreateSquareDetailsReport',_0x380c07);logger[_0xf06e('0xa')](_0xf06e('0x14'),_0x380c07,JSON['stringify'](_0x211590));_0x251c9f(_0x211590);})[_0xf06e('0x10')](function(_0x1ba130){logger[_0xf06e('0xc')]('CreateSquareDetailsReport',_0x1ba130[_0xf06e('0xe')],_0x380c07);_0x7a9f4b(_0x55dabf[_0xf06e('0xc')](0x1f4,_0x1ba130[_0xf06e('0xe')]));});});};
\ No newline at end of file
index fdcf4e1..726d2c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb85=['/process/:pid/kill','killProcess','exports','express','./system.controller','get','isAuthenticated','index'];(function(_0xbd2b07,_0x4015d2){var _0x3e5613=function(_0x3a6992){while(--_0x3a6992){_0xbd2b07['push'](_0xbd2b07['shift']());}};_0x3e5613(++_0x4015d2);}(_0xeb85,0x133));var _0x5eb8=function(_0x171849,_0x144e89){_0x171849=_0x171849-0x0;var _0x254440=_0xeb85[_0x171849];return _0x254440;};'use strict';var express=require(_0x5eb8('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x5eb8('0x1'));router[_0x5eb8('0x2')]('/',auth[_0x5eb8('0x3')](),controller[_0x5eb8('0x4')]);router[_0x5eb8('0x2')](_0x5eb8('0x5'),auth[_0x5eb8('0x3')](),controller[_0x5eb8('0x6')]);module[_0x5eb8('0x7')]=router;
\ No newline at end of file
+var _0x4a67=['Router','../../components/auth/service','./system.controller','get','index','isAuthenticated','killProcess','express'];(function(_0xe27035,_0x1f4876){var _0x3745bc=function(_0xfa83f4){while(--_0xfa83f4){_0xe27035['push'](_0xe27035['shift']());}};_0x3745bc(++_0x1f4876);}(_0x4a67,0x1c7));var _0x74a6=function(_0x59b087,_0x38a9bc){_0x59b087=_0x59b087-0x0;var _0x50563d=_0x4a67[_0x59b087];return _0x50563d;};'use strict';var express=require(_0x74a6('0x0'));var router=express[_0x74a6('0x1')]();var auth=require(_0x74a6('0x2'));var controller=require(_0x74a6('0x3'));router[_0x74a6('0x4')]('/',auth['isAuthenticated'](),controller[_0x74a6('0x5')]);router['get']('/process/:pid/kill',auth[_0x74a6('0x6')](),controller[_0x74a6('0x7')]);module['exports']=router;
\ No newline at end of file
index 9f96d23..bc7eba9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf584=['util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','name','status','send','index','getAllData','then','json','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','Process\x20with\x20pid\x20%s\x20killed\x20correctly','params','catch','../../config/logger','api'];(function(_0x5e886b,_0x582627){var _0x4b05c8=function(_0x2083a6){while(--_0x2083a6){_0x5e886b['push'](_0x5e886b['shift']());}};_0x4b05c8(++_0x582627);}(_0xf584,0x11c));var _0x4f58=function(_0x2b5541,_0x544572){_0x2b5541=_0x2b5541-0x0;var _0x21318f=_0xf584[_0x2b5541];return _0x21318f;};'use strict';var info=require('systeminformation');var exec=require('child_process')['exec'];var logger=require(_0x4f58('0x0'))(_0x4f58('0x1'));var util=require(_0x4f58('0x2'));var BPromise=require(_0x4f58('0x3'));var _=require(_0x4f58('0x4'));function handleError(_0x15eff1,_0x3256d1,_0x590d4d){_0x3256d1=_0x3256d1||0x1f4;return function(_0x1c5c45){logger[_0x4f58('0x5')](_0x4f58('0x6'),_0x590d4d,_0x3256d1,util['inspect'](_0x1c5c45,{'showHidden':![],'depth':null}));delete _0x1c5c45[_0x4f58('0x7')];_0x15eff1[_0x4f58('0x8')](_0x3256d1)[_0x4f58('0x9')](_0x1c5c45);};}exports[_0x4f58('0xa')]=function(_0x4d8415,_0x1fa889){return info[_0x4f58('0xb')]()[_0x4f58('0xc')](function(_0x17ffc4){return _0x1fa889['status'](0xc8)[_0x4f58('0xd')](_0x17ffc4);})['catch'](function(_0x3da4fa){return _0x1fa889[_0x4f58('0x8')](0x1f4)[_0x4f58('0xd')](_0x3da4fa);});};exports[_0x4f58('0xe')]=function(_0x150f50,_0x1dcc82){var _0x5df2de=[_0x4f58('0xf')];return new BPromise(function(_0x2cb637,_0x2d19f6){return exec(util[_0x4f58('0x10')](_0x4f58('0x11'),_0x150f50['params'][_0x4f58('0x12')]),function(_0x5cc442,_0x4c7314,_0x5118a6){if(_0x5cc442){return _0x2d19f6(_0x5cc442);}return _0x2cb637(_0x4c7314);});})['then'](function(_0x300035){var _0x5f0f35=![];var _0x13853e=_0x300035[_0x4f58('0x13')](/\n/);for(var _0x54eb53=0x0,_0x1a5e19=_0x5df2de[_0x4f58('0x14')];_0x54eb53<_0x1a5e19,_0x5f0f35===![];_0x54eb53+=0x1){if(_0x300035[_0x4f58('0x15')](_0x5df2de[_0x54eb53])>=0x0){_0x5f0f35=!![];}}if(!_0x5f0f35){throw new Error(util[_0x4f58('0x10')](_0x4f58('0x16'),_0x150f50['params'][_0x4f58('0x12')]));}process['kill'](_0x150f50['params'][_0x4f58('0x12')],'SIGINT');return _0x1dcc82[_0x4f58('0x8')](0xc8)['json']({'message':util[_0x4f58('0x10')](_0x4f58('0x17'),_0x150f50[_0x4f58('0x18')]['pid'])});})[_0x4f58('0x19')](handleError(_0x1dcc82,null,'killProcess'));};
\ No newline at end of file
+var _0x196d=['getAllData','then','status','catch','json','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','pid','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','params','systeminformation','child_process','exec','util','bluebird','lodash','error','inspect','name','send'];(function(_0xade9d5,_0x3c3941){var _0x414873=function(_0x185b9c){while(--_0x185b9c){_0xade9d5['push'](_0xade9d5['shift']());}};_0x414873(++_0x3c3941);}(_0x196d,0x7d));var _0xd196=function(_0x62c958,_0x2bfdbc){_0x62c958=_0x62c958-0x0;var _0x57ec61=_0x196d[_0x62c958];return _0x57ec61;};'use strict';var info=require(_0xd196('0x0'));var exec=require(_0xd196('0x1'))[_0xd196('0x2')];var logger=require('../../config/logger')('api');var util=require(_0xd196('0x3'));var BPromise=require(_0xd196('0x4'));var _=require(_0xd196('0x5'));function handleError(_0x5b95ee,_0x3ca25e,_0x579160){_0x3ca25e=_0x3ca25e||0x1f4;return function(_0x4e7ad7){logger[_0xd196('0x6')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x579160,_0x3ca25e,util[_0xd196('0x7')](_0x4e7ad7,{'showHidden':![],'depth':null}));delete _0x4e7ad7[_0xd196('0x8')];_0x5b95ee['status'](_0x3ca25e)[_0xd196('0x9')](_0x4e7ad7);};}exports['index']=function(_0xd54cf0,_0x471d70){return info[_0xd196('0xa')]()[_0xd196('0xb')](function(_0x2092db){return _0x471d70[_0xd196('0xc')](0xc8)['json'](_0x2092db);})[_0xd196('0xd')](function(_0x5b5b55){return _0x471d70[_0xd196('0xc')](0x1f4)[_0xd196('0xe')](_0x5b5b55);});};exports[_0xd196('0xf')]=function(_0x3ce273,_0x179c8c){var _0x34b85b=[_0xd196('0x10')];return new BPromise(function(_0xb9f3e9,_0x4b2b06){return exec(util[_0xd196('0x11')](_0xd196('0x12'),_0x3ce273['params']['pid']),function(_0xee2a77,_0x505657,_0x52c470){if(_0xee2a77){return _0x4b2b06(_0xee2a77);}return _0xb9f3e9(_0x505657);});})[_0xd196('0xb')](function(_0xd8e56a){var _0x1442d6=![];var _0x45fec8=_0xd8e56a['split'](/\n/);for(var _0x599132=0x0,_0x46ece8=_0x34b85b[_0xd196('0x13')];_0x599132<_0x46ece8,_0x1442d6===![];_0x599132+=0x1){if(_0xd8e56a[_0xd196('0x14')](_0x34b85b[_0x599132])>=0x0){_0x1442d6=!![];}}if(!_0x1442d6){throw new Error(util[_0xd196('0x11')](_0xd196('0x15'),_0x3ce273['params'][_0xd196('0x16')]));}process[_0xd196('0x17')](_0x3ce273['params']['pid'],_0xd196('0x18'));return _0x179c8c[_0xd196('0xc')](0xc8)['json']({'message':util[_0xd196('0x11')](_0xd196('0x19'),_0x3ce273[_0xd196('0x1a')][_0xd196('0x16')])});})['catch'](handleError(_0x179c8c,null,'killProcess'));};
\ No newline at end of file
index 5f96264..c7c6d64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e1f=['create','/:id','update','destroy','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./tag.controller','get','isAuthenticated','post'];(function(_0xcdd508,_0x38975b){var _0x1febcb=function(_0x2a47b5){while(--_0x2a47b5){_0xcdd508['push'](_0xcdd508['shift']());}};_0x1febcb(++_0x38975b);}(_0x8e1f,0x95));var _0xf8e1=function(_0x5bb2e9,_0x2d3666){_0x5bb2e9=_0x5bb2e9-0x0;var _0xd073e8=_0x8e1f[_0x5bb2e9];return _0xd073e8;};'use strict';var multer=require(_0xf8e1('0x0'));var util=require(_0xf8e1('0x1'));var path=require('path');var timeout=require(_0xf8e1('0x2'));var express=require('express');var router=express[_0xf8e1('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf8e1('0x4'));var interaction=require(_0xf8e1('0x5'));var config=require(_0xf8e1('0x6'));var controller=require(_0xf8e1('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xf8e1('0x8')]('/:id',auth[_0xf8e1('0x9')](),controller['show']);router[_0xf8e1('0xa')]('/',auth['isAuthenticated'](),controller[_0xf8e1('0xb')]);router['put'](_0xf8e1('0xc'),auth[_0xf8e1('0x9')](),controller[_0xf8e1('0xd')]);router['delete'](_0xf8e1('0xc'),auth[_0xf8e1('0x9')](),controller[_0xf8e1('0xe')]);module[_0xf8e1('0xf')]=router;
\ No newline at end of file
+var _0x8fbd=['../../components/auth/service','../../config/environment','./tag.controller','index','isAuthenticated','show','create','put','/:id','delete','exports','util','path','connect-timeout','express','Router'];(function(_0x2d2efe,_0x1ac81b){var _0x135b0a=function(_0x21f1b9){while(--_0x21f1b9){_0x2d2efe['push'](_0x2d2efe['shift']());}};_0x135b0a(++_0x1ac81b);}(_0x8fbd,0x13b));var _0xd8fb=function(_0x13877e,_0x174626){_0x13877e=_0x13877e-0x0;var _0x2ed9fe=_0x8fbd[_0x13877e];return _0x2ed9fe;};'use strict';var multer=require('multer');var util=require(_0xd8fb('0x0'));var path=require(_0xd8fb('0x1'));var timeout=require(_0xd8fb('0x2'));var express=require(_0xd8fb('0x3'));var router=express[_0xd8fb('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd8fb('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd8fb('0x6'));var controller=require(_0xd8fb('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xd8fb('0x8')]);router['get']('/:id',auth[_0xd8fb('0x9')](),controller[_0xd8fb('0xa')]);router['post']('/',auth[_0xd8fb('0x9')](),controller[_0xd8fb('0xb')]);router[_0xd8fb('0xc')](_0xd8fb('0xd'),auth[_0xd8fb('0x9')](),controller['update']);router[_0xd8fb('0xe')]('/:id',auth[_0xd8fb('0x9')](),controller['destroy']);module[_0xd8fb('0xf')]=router;
\ No newline at end of file
index 6773171..bc02abd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c6b=['sequelize','STRING','name','#0091EA'];(function(_0x12df55,_0x24a2cf){var _0x2e2b72=function(_0x18c9ee){while(--_0x18c9ee){_0x12df55['push'](_0x12df55['shift']());}};_0x2e2b72(++_0x24a2cf);}(_0x0c6b,0x1bc));var _0xb0c6=function(_0x1984c9,_0x4717d3){_0x1984c9=_0x1984c9-0x0;var _0x3a59c4=_0x0c6b[_0x1984c9];return _0x3a59c4;};'use strict';var Sequelize=require(_0xb0c6('0x0'));module['exports']={'name':{'type':Sequelize[_0xb0c6('0x1')],'unique':_0xb0c6('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xb0c6('0x1')],'defaultValue':_0xb0c6('0x3')},'description':{'type':Sequelize[_0xb0c6('0x1')]}};
\ No newline at end of file
+var _0x6c9c=['name','STRING','#0091EA','sequelize','exports'];(function(_0x10a8c9,_0x3ae082){var _0x244a3f=function(_0x59888a){while(--_0x59888a){_0x10a8c9['push'](_0x10a8c9['shift']());}};_0x244a3f(++_0x3ae082);}(_0x6c9c,0x12a));var _0xc6c9=function(_0xfd8567,_0xe76765){_0xfd8567=_0xfd8567-0x0;var _0x5d5451=_0x6c9c[_0xfd8567];return _0x5d5451;};'use strict';var Sequelize=require(_0xc6c9('0x0'));module[_0xc6c9('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xc6c9('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xc6c9('0x3')],'defaultValue':_0xc6c9('0x4')},'description':{'type':Sequelize[_0xc6c9('0x3')]}};
\ No newline at end of file
index 9cc2444..5ef2939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x303a=['update','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','get','sendStatus','error','stack','name','send','index','map','Tag','rawAttributes','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','intersection','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Tags','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x20d916,_0x4bfa65){var _0x366417=function(_0xb3c76c){while(--_0xb3c76c){_0x20d916['push'](_0x20d916['shift']());}};_0x366417(++_0x4bfa65);}(_0x303a,0x1a0));var _0xa303=function(_0x38db77,_0x18239f){_0x38db77=_0x38db77-0x0;var _0x916e60=_0x303a[_0x38db77];return _0x916e60;};'use strict';var emlformat=require(_0xa303('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa303('0x1'));var jsonpatch=require(_0xa303('0x2'));var rp=require(_0xa303('0x3'));var moment=require(_0xa303('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa303('0x5'));var util=require(_0xa303('0x6'));var path=require(_0xa303('0x7'));var sox=require(_0xa303('0x8'));var csv=require(_0xa303('0x9'));var ejs=require(_0xa303('0xa'));var fs=require('fs');var fs_extra=require(_0xa303('0xb'));var _=require(_0xa303('0xc'));var squel=require(_0xa303('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa303('0x9'));var querystring=require(_0xa303('0xe'));var Papa=require('papaparse');var Redis=require(_0xa303('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xa303('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa303('0x11'));var logger=require(_0xa303('0x12'))(_0xa303('0x13'));var utils=require(_0xa303('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa303('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf5df1e,_0x43a054){_0x43a054=_0x43a054||0xcc;return function(_0x2ed971){if(_0x2ed971){return _0xf5df1e['sendStatus'](_0x43a054);}return _0xf5df1e[_0xa303('0x16')](_0x43a054)[_0xa303('0x17')]();};}function respondWithResult(_0x28cd7f,_0xfa522c){_0xfa522c=_0xfa522c||0xc8;return function(_0xed0420){if(_0xed0420){return _0x28cd7f[_0xa303('0x16')](_0xfa522c)[_0xa303('0x18')](_0xed0420);}};}function respondWithFilteredResult(_0x2d1110,_0x4c8bc1){return function(_0x2c2939){if(_0x2c2939){var _0xd2e8ee=typeof _0x4c8bc1[_0xa303('0x19')]===_0xa303('0x1a')&&typeof _0x4c8bc1[_0xa303('0x1b')]===_0xa303('0x1a');var _0x5ec243=_0x2c2939[_0xa303('0x1c')];var _0x54ca49=_0xd2e8ee?0x0:_0x4c8bc1[_0xa303('0x19')];var _0x4cf535=_0xd2e8ee?_0x2c2939[_0xa303('0x1c')]:_0x4c8bc1['offset']+_0x4c8bc1[_0xa303('0x1b')];var _0xe263f9;if(_0x4cf535>=_0x5ec243){_0x4cf535=_0x5ec243;_0xe263f9=0xc8;}else{_0xe263f9=0xce;}_0x2d1110[_0xa303('0x16')](_0xe263f9);return _0x2d1110['set'](_0xa303('0x1d'),_0x54ca49+'-'+_0x4cf535+'/'+_0x5ec243)[_0xa303('0x18')](_0x2c2939);}return null;};}function patchUpdates(_0x1b0566){return function(_0x59e551){try{jsonpatch[_0xa303('0x1e')](_0x59e551,_0x1b0566,!![]);}catch(_0x3bc8c3){return BPromise[_0xa303('0x1f')](_0x3bc8c3);}return _0x59e551[_0xa303('0x20')]();};}function saveUpdates(_0x54b173,_0x14f9ab){return function(_0x2a2512){if(_0x2a2512){return _0x2a2512['update'](_0x54b173)[_0xa303('0x21')](function(_0x27c1d7){return _0x27c1d7;});}return null;};}function removeEntity(_0x25db9c,_0x122d1e){return function(_0x65ab0e){if(_0x65ab0e){return _0x65ab0e[_0xa303('0x22')]()[_0xa303('0x21')](function(){var _0x5d9dee=_0x65ab0e[_0xa303('0x23')]({'plain':!![]});var _0x57d584='Tags';return db['UserProfileResource']['destroy']({'where':{'type':_0x57d584,'resourceId':_0x5d9dee['id']}})['then'](function(){return _0x65ab0e;});})[_0xa303('0x21')](function(){_0x25db9c[_0xa303('0x16')](0xcc)[_0xa303('0x17')]();});}};}function handleEntityNotFound(_0xbb93f0,_0x94d3e4){return function(_0x48e79f){if(!_0x48e79f){_0xbb93f0[_0xa303('0x24')](0x194);}return _0x48e79f;};}function handleError(_0xb35c22,_0x561d73){_0x561d73=_0x561d73||0x1f4;return function(_0x221f59){logger[_0xa303('0x25')](_0x221f59[_0xa303('0x26')]);if(_0x221f59[_0xa303('0x27')]){delete _0x221f59[_0xa303('0x27')];}_0xb35c22[_0xa303('0x16')](_0x561d73)[_0xa303('0x28')](_0x221f59);};}exports[_0xa303('0x29')]=function(_0x411b42,_0x3383f4){var _0x9b7e61={},_0x217967={},_0x2f7775={'count':0x0,'rows':[]};var _0x1a44fc=_[_0xa303('0x2a')](db[_0xa303('0x2b')][_0xa303('0x2c')],function(_0x5de180){return{'name':_0x5de180['fieldName'],'type':_0x5de180[_0xa303('0x2d')][_0xa303('0x2e')]};});_0x217967[_0xa303('0x2f')]=_[_0xa303('0x2a')](_0x1a44fc,'name');_0x217967[_0xa303('0x30')]=_[_0xa303('0x31')](_0x411b42[_0xa303('0x30')]);_0x217967[_0xa303('0x32')]=_['intersection'](_0x217967[_0xa303('0x2f')],_0x217967[_0xa303('0x30')]);_0x9b7e61[_0xa303('0x33')]=_['intersection'](_0x217967[_0xa303('0x2f')],qs[_0xa303('0x34')](_0x411b42[_0xa303('0x30')]['fields']));_0x9b7e61[_0xa303('0x33')]=_0x9b7e61[_0xa303('0x33')][_0xa303('0x35')]?_0x9b7e61['attributes']:_0x217967[_0xa303('0x2f')];if(!_0x411b42[_0xa303('0x30')][_0xa303('0x36')](_0xa303('0x37'))){_0x9b7e61['limit']=qs[_0xa303('0x1b')](_0x411b42[_0xa303('0x30')][_0xa303('0x1b')]);_0x9b7e61[_0xa303('0x19')]=qs['offset'](_0x411b42[_0xa303('0x30')][_0xa303('0x19')]);}_0x9b7e61[_0xa303('0x38')]=qs[_0xa303('0x39')](_0x411b42[_0xa303('0x30')]['sort']);_0x9b7e61['where']=qs[_0xa303('0x32')](_[_0xa303('0x3a')](_0x411b42[_0xa303('0x30')],_0x217967['filters']),_0x1a44fc);if(_0x411b42['query'][_0xa303('0x3b')]){_0x9b7e61[_0xa303('0x3c')]=_[_0xa303('0x3d')](_0x9b7e61[_0xa303('0x3c')],{'$or':_['map'](_0x1a44fc,function(_0x59e413){if(_0x59e413[_0xa303('0x2d')]!==_0xa303('0x3e')){var _0x1c99b4={};_0x1c99b4[_0x59e413[_0xa303('0x27')]]={'$like':'%'+_0x411b42[_0xa303('0x30')]['filter']+'%'};return _0x1c99b4;}})});}_0x9b7e61=_[_0xa303('0x3d')]({},_0x9b7e61,_0x411b42[_0xa303('0x3f')]);var _0x468928={'where':_0x9b7e61[_0xa303('0x3c')]};return db['Tag']['count'](_0x468928)['then'](function(_0x1805f6){_0x2f7775[_0xa303('0x1c')]=_0x1805f6;if(_0x411b42[_0xa303('0x30')][_0xa303('0x40')]){_0x9b7e61[_0xa303('0x41')]=[{'all':!![]}];}return db[_0xa303('0x2b')][_0xa303('0x42')](_0x9b7e61);})[_0xa303('0x21')](function(_0x3615c5){_0x2f7775[_0xa303('0x43')]=_0x3615c5;return _0x2f7775;})[_0xa303('0x21')](respondWithFilteredResult(_0x3383f4,_0x9b7e61))['catch'](handleError(_0x3383f4,null));};exports['show']=function(_0x45fb2f,_0x54e558){var _0x839adf={'raw':!![],'where':{'id':_0x45fb2f[_0xa303('0x44')]['id']}},_0x564d59={};_0x564d59[_0xa303('0x2f')]=_[_0xa303('0x31')](db[_0xa303('0x2b')][_0xa303('0x2c')]);_0x564d59[_0xa303('0x30')]=_[_0xa303('0x31')](_0x45fb2f[_0xa303('0x30')]);_0x564d59[_0xa303('0x32')]=_[_0xa303('0x45')](_0x564d59[_0xa303('0x2f')],_0x564d59[_0xa303('0x30')]);_0x839adf[_0xa303('0x33')]=_['intersection'](_0x564d59[_0xa303('0x2f')],qs['fields'](_0x45fb2f[_0xa303('0x30')][_0xa303('0x34')]));_0x839adf[_0xa303('0x33')]=_0x839adf['attributes']['length']?_0x839adf[_0xa303('0x33')]:_0x564d59[_0xa303('0x2f')];if(_0x45fb2f[_0xa303('0x30')][_0xa303('0x40')]){_0x839adf[_0xa303('0x41')]=[{'all':!![]}];}_0x839adf=_[_0xa303('0x3d')]({},_0x839adf,_0x45fb2f[_0xa303('0x3f')]);return db[_0xa303('0x2b')][_0xa303('0x46')](_0x839adf)[_0xa303('0x21')](handleEntityNotFound(_0x54e558,null))['then'](respondWithResult(_0x54e558,null))[_0xa303('0x47')](handleError(_0x54e558,null));};exports[_0xa303('0x48')]=function(_0x532003,_0x3cc97a){return db['Tag'][_0xa303('0x48')](_0x532003[_0xa303('0x49')],{})[_0xa303('0x21')](function(_0x3fd1be){var _0x5a6da0=_0x532003[_0xa303('0x4a')][_0xa303('0x23')]({'plain':!![]});if(!_0x5a6da0)throw new Error(_0xa303('0x4b'));if(_0x5a6da0[_0xa303('0x4c')]===_0xa303('0x4a')){var _0x16242c=_0x3fd1be['get']({'plain':!![]});var _0x1a8bc0=_0xa303('0x4d');return db[_0xa303('0x4e')][_0xa303('0x46')]({'where':{'name':_0x1a8bc0,'userProfileId':_0x5a6da0['userProfileId']},'raw':!![]})['then'](function(_0x34547d){if(_0x34547d&&_0x34547d[_0xa303('0x4f')]===0x0){return db[_0xa303('0x50')]['create']({'name':_0x16242c[_0xa303('0x27')],'resourceId':_0x16242c['id'],'type':_0x34547d['name'],'sectionId':_0x34547d['id']},{})['then'](function(){return _0x3fd1be;});}else{return _0x3fd1be;}})['catch'](function(_0x51c4db){logger[_0xa303('0x25')](_0xa303('0x51'),_0x51c4db);throw _0x51c4db;});}return _0x3fd1be;})['then'](respondWithResult(_0x3cc97a,0xc9))[_0xa303('0x47')](handleError(_0x3cc97a,null));};exports[_0xa303('0x52')]=function(_0x33a667,_0x3cda19){if(_0x33a667[_0xa303('0x49')]['id']){delete _0x33a667['body']['id'];}return db[_0xa303('0x2b')][_0xa303('0x46')]({'where':{'id':_0x33a667[_0xa303('0x44')]['id']}})[_0xa303('0x21')](handleEntityNotFound(_0x3cda19,null))[_0xa303('0x21')](saveUpdates(_0x33a667['body'],null))['then'](respondWithResult(_0x3cda19,null))[_0xa303('0x47')](handleError(_0x3cda19,null));};exports[_0xa303('0x22')]=function(_0x3e377b,_0x87a096){return db[_0xa303('0x2b')][_0xa303('0x46')]({'where':{'id':_0x3e377b[_0xa303('0x44')]['id']}})[_0xa303('0x21')](handleEntityNotFound(_0x87a096,null))[_0xa303('0x21')](removeEntity(_0x87a096,null))['catch'](handleError(_0x87a096,null));};
\ No newline at end of file
+var _0x98d3=['sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','save','update','destroy','then','Tags','UserProfileResource','stack','name','map','Tag','rawAttributes','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','count','includeAll','include','findAll','rows','catch','show','intersection','options','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','autoAssociation','error','params','eml-format','rimraf','fast-json-patch','moment','mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x556109,_0x45cadf){var _0x30b0f6=function(_0x4d7160){while(--_0x4d7160){_0x556109['push'](_0x556109['shift']());}};_0x30b0f6(++_0x45cadf);}(_0x98d3,0x173));var _0x398d=function(_0x97435b,_0x3972c7){_0x97435b=_0x97435b-0x0;var _0x30feb9=_0x98d3[_0x97435b];return _0x30feb9;};'use strict';var emlformat=require(_0x398d('0x0'));var rimraf=require(_0x398d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x398d('0x2'));var rp=require('request-promise');var moment=require(_0x398d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x398d('0x4'));var util=require(_0x398d('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x398d('0x6'));var ejs=require(_0x398d('0x7'));var fs=require('fs');var fs_extra=require(_0x398d('0x8'));var _=require('lodash');var squel=require(_0x398d('0x9'));var crypto=require(_0x398d('0xa'));var jsforce=require(_0x398d('0xb'));var deskjs=require(_0x398d('0xc'));var toCsv=require(_0x398d('0x6'));var querystring=require('querystring');var Papa=require(_0x398d('0xd'));var Redis=require(_0x398d('0xe'));var authService=require(_0x398d('0xf'));var qs=require(_0x398d('0x10'));var as=require(_0x398d('0x11'));var hardwareService=require(_0x398d('0x12'));var logger=require(_0x398d('0x13'))(_0x398d('0x14'));var utils=require('../../config/utils');var config=require(_0x398d('0x15'));var licenseUtil=require(_0x398d('0x16'));var db=require(_0x398d('0x17'))['db'];function respondWithStatusCode(_0x12eb91,_0x15a424){_0x15a424=_0x15a424||0xcc;return function(_0x91619e){if(_0x91619e){return _0x12eb91[_0x398d('0x18')](_0x15a424);}return _0x12eb91[_0x398d('0x19')](_0x15a424)[_0x398d('0x1a')]();};}function respondWithResult(_0x396015,_0x1fc998){_0x1fc998=_0x1fc998||0xc8;return function(_0x537bb6){if(_0x537bb6){return _0x396015['status'](_0x1fc998)[_0x398d('0x1b')](_0x537bb6);}};}function respondWithFilteredResult(_0x36cde2,_0x347508){return function(_0x2197b4){if(_0x2197b4){var _0x278004=typeof _0x347508[_0x398d('0x1c')]===_0x398d('0x1d')&&typeof _0x347508[_0x398d('0x1e')]==='undefined';var _0x26b9a0=_0x2197b4['count'];var _0x673840=_0x278004?0x0:_0x347508[_0x398d('0x1c')];var _0x297768=_0x278004?_0x2197b4['count']:_0x347508['offset']+_0x347508['limit'];var _0x28b124;if(_0x297768>=_0x26b9a0){_0x297768=_0x26b9a0;_0x28b124=0xc8;}else{_0x28b124=0xce;}_0x36cde2[_0x398d('0x19')](_0x28b124);return _0x36cde2[_0x398d('0x1f')](_0x398d('0x20'),_0x673840+'-'+_0x297768+'/'+_0x26b9a0)[_0x398d('0x1b')](_0x2197b4);}return null;};}function patchUpdates(_0x1d9e75){return function(_0x38659b){try{jsonpatch['apply'](_0x38659b,_0x1d9e75,!![]);}catch(_0x55c98e){return BPromise['reject'](_0x55c98e);}return _0x38659b[_0x398d('0x21')]();};}function saveUpdates(_0x3b275a,_0x1ea5f9){return function(_0x2affed){if(_0x2affed){return _0x2affed[_0x398d('0x22')](_0x3b275a)['then'](function(_0x5c4c70){return _0x5c4c70;});}return null;};}function removeEntity(_0x31e87d,_0x497ad1){return function(_0x55a48d){if(_0x55a48d){return _0x55a48d[_0x398d('0x23')]()[_0x398d('0x24')](function(){var _0x5ae3b4=_0x55a48d['get']({'plain':!![]});var _0x4aad76=_0x398d('0x25');return db[_0x398d('0x26')][_0x398d('0x23')]({'where':{'type':_0x4aad76,'resourceId':_0x5ae3b4['id']}})[_0x398d('0x24')](function(){return _0x55a48d;});})[_0x398d('0x24')](function(){_0x31e87d[_0x398d('0x19')](0xcc)[_0x398d('0x1a')]();});}};}function handleEntityNotFound(_0x17318c,_0x4f4466){return function(_0x35bd19){if(!_0x35bd19){_0x17318c['sendStatus'](0x194);}return _0x35bd19;};}function handleError(_0x4aa568,_0x124bc9){_0x124bc9=_0x124bc9||0x1f4;return function(_0x27bc6e){logger['error'](_0x27bc6e[_0x398d('0x27')]);if(_0x27bc6e['name']){delete _0x27bc6e[_0x398d('0x28')];}_0x4aa568[_0x398d('0x19')](_0x124bc9)['send'](_0x27bc6e);};}exports['index']=function(_0x410db2,_0x2ca780){var _0x4abab6={},_0x397f07={},_0x2fbcce={'count':0x0,'rows':[]};var _0x204b27=_[_0x398d('0x29')](db[_0x398d('0x2a')][_0x398d('0x2b')],function(_0x490bee){return{'name':_0x490bee['fieldName'],'type':_0x490bee[_0x398d('0x2c')][_0x398d('0x2d')]};});_0x397f07[_0x398d('0x2e')]=_[_0x398d('0x29')](_0x204b27,_0x398d('0x28'));_0x397f07[_0x398d('0x2f')]=_[_0x398d('0x30')](_0x410db2[_0x398d('0x2f')]);_0x397f07[_0x398d('0x31')]=_['intersection'](_0x397f07[_0x398d('0x2e')],_0x397f07[_0x398d('0x2f')]);_0x4abab6[_0x398d('0x32')]=_['intersection'](_0x397f07['model'],qs[_0x398d('0x33')](_0x410db2[_0x398d('0x2f')][_0x398d('0x33')]));_0x4abab6[_0x398d('0x32')]=_0x4abab6[_0x398d('0x32')][_0x398d('0x34')]?_0x4abab6[_0x398d('0x32')]:_0x397f07[_0x398d('0x2e')];if(!_0x410db2[_0x398d('0x2f')][_0x398d('0x35')](_0x398d('0x36'))){_0x4abab6[_0x398d('0x1e')]=qs[_0x398d('0x1e')](_0x410db2[_0x398d('0x2f')][_0x398d('0x1e')]);_0x4abab6[_0x398d('0x1c')]=qs[_0x398d('0x1c')](_0x410db2[_0x398d('0x2f')][_0x398d('0x1c')]);}_0x4abab6['order']=qs[_0x398d('0x37')](_0x410db2[_0x398d('0x2f')][_0x398d('0x37')]);_0x4abab6[_0x398d('0x38')]=qs[_0x398d('0x31')](_[_0x398d('0x39')](_0x410db2[_0x398d('0x2f')],_0x397f07['filters']),_0x204b27);if(_0x410db2[_0x398d('0x2f')][_0x398d('0x3a')]){_0x4abab6[_0x398d('0x38')]=_[_0x398d('0x3b')](_0x4abab6[_0x398d('0x38')],{'$or':_[_0x398d('0x29')](_0x204b27,function(_0x4d57cc){if(_0x4d57cc[_0x398d('0x2c')]!=='VIRTUAL'){var _0x208eb2={};_0x208eb2[_0x4d57cc[_0x398d('0x28')]]={'$like':'%'+_0x410db2[_0x398d('0x2f')][_0x398d('0x3a')]+'%'};return _0x208eb2;}})});}_0x4abab6=_[_0x398d('0x3b')]({},_0x4abab6,_0x410db2['options']);var _0xa20d77={'where':_0x4abab6[_0x398d('0x38')]};return db['Tag'][_0x398d('0x3c')](_0xa20d77)[_0x398d('0x24')](function(_0x3d72ee){_0x2fbcce[_0x398d('0x3c')]=_0x3d72ee;if(_0x410db2[_0x398d('0x2f')][_0x398d('0x3d')]){_0x4abab6[_0x398d('0x3e')]=[{'all':!![]}];}return db[_0x398d('0x2a')][_0x398d('0x3f')](_0x4abab6);})['then'](function(_0x2760f2){_0x2fbcce[_0x398d('0x40')]=_0x2760f2;return _0x2fbcce;})[_0x398d('0x24')](respondWithFilteredResult(_0x2ca780,_0x4abab6))[_0x398d('0x41')](handleError(_0x2ca780,null));};exports[_0x398d('0x42')]=function(_0x227984,_0x505b78){var _0x26b0c6={'raw':!![],'where':{'id':_0x227984['params']['id']}},_0x1a6bdc={};_0x1a6bdc[_0x398d('0x2e')]=_[_0x398d('0x30')](db[_0x398d('0x2a')]['rawAttributes']);_0x1a6bdc[_0x398d('0x2f')]=_[_0x398d('0x30')](_0x227984[_0x398d('0x2f')]);_0x1a6bdc[_0x398d('0x31')]=_[_0x398d('0x43')](_0x1a6bdc['model'],_0x1a6bdc[_0x398d('0x2f')]);_0x26b0c6[_0x398d('0x32')]=_[_0x398d('0x43')](_0x1a6bdc['model'],qs[_0x398d('0x33')](_0x227984[_0x398d('0x2f')]['fields']));_0x26b0c6[_0x398d('0x32')]=_0x26b0c6[_0x398d('0x32')][_0x398d('0x34')]?_0x26b0c6[_0x398d('0x32')]:_0x1a6bdc[_0x398d('0x2e')];if(_0x227984[_0x398d('0x2f')][_0x398d('0x3d')]){_0x26b0c6[_0x398d('0x3e')]=[{'all':!![]}];}_0x26b0c6=_['merge']({},_0x26b0c6,_0x227984[_0x398d('0x44')]);return db[_0x398d('0x2a')]['find'](_0x26b0c6)['then'](handleEntityNotFound(_0x505b78,null))[_0x398d('0x24')](respondWithResult(_0x505b78,null))[_0x398d('0x41')](handleError(_0x505b78,null));};exports[_0x398d('0x45')]=function(_0x35d260,_0x49a6de){return db[_0x398d('0x2a')]['create'](_0x35d260[_0x398d('0x46')],{})['then'](function(_0x3c27a1){var _0x588548=_0x35d260['user']['get']({'plain':!![]});if(!_0x588548)throw new Error(_0x398d('0x47'));if(_0x588548[_0x398d('0x48')]===_0x398d('0x49')){var _0x3fa030=_0x3c27a1['get']({'plain':!![]});var _0x5d864a=_0x398d('0x25');return db[_0x398d('0x4a')][_0x398d('0x4b')]({'where':{'name':_0x5d864a,'userProfileId':_0x588548['userProfileId']},'raw':!![]})[_0x398d('0x24')](function(_0x2fcb61){if(_0x2fcb61&&_0x2fcb61[_0x398d('0x4c')]===0x0){return db[_0x398d('0x26')][_0x398d('0x45')]({'name':_0x3fa030[_0x398d('0x28')],'resourceId':_0x3fa030['id'],'type':_0x2fcb61['name'],'sectionId':_0x2fcb61['id']},{})[_0x398d('0x24')](function(){return _0x3c27a1;});}else{return _0x3c27a1;}})[_0x398d('0x41')](function(_0x453bf5){logger[_0x398d('0x4d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x453bf5);throw _0x453bf5;});}return _0x3c27a1;})[_0x398d('0x24')](respondWithResult(_0x49a6de,0xc9))[_0x398d('0x41')](handleError(_0x49a6de,null));};exports[_0x398d('0x22')]=function(_0x3ec128,_0x536fd1){if(_0x3ec128['body']['id']){delete _0x3ec128[_0x398d('0x46')]['id'];}return db['Tag'][_0x398d('0x4b')]({'where':{'id':_0x3ec128[_0x398d('0x4e')]['id']}})['then'](handleEntityNotFound(_0x536fd1,null))[_0x398d('0x24')](saveUpdates(_0x3ec128['body'],null))[_0x398d('0x24')](respondWithResult(_0x536fd1,null))[_0x398d('0x41')](handleError(_0x536fd1,null));};exports[_0x398d('0x23')]=function(_0x1c4c38,_0x360e67){return db[_0x398d('0x2a')][_0x398d('0x4b')]({'where':{'id':_0x1c4c38[_0x398d('0x4e')]['id']}})[_0x398d('0x24')](handleEntityNotFound(_0x360e67,null))[_0x398d('0x24')](removeEntity(_0x360e67,null))[_0x398d('0x41')](handleError(_0x360e67,null));};
\ No newline at end of file
index fe2e4fc..278ebc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f4b=['tools_tags','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./tag.attributes','exports','define','Tag'];(function(_0x146837,_0x2aa6a2){var _0x3d7e60=function(_0x1301ac){while(--_0x1301ac){_0x146837['push'](_0x146837['shift']());}};_0x3d7e60(++_0x2aa6a2);}(_0x5f4b,0x1b3));var _0xb5f4=function(_0x5cf6d8,_0x363522){_0x5cf6d8=_0x5cf6d8-0x0;var _0xd2aa1a=_0x5f4b[_0x5cf6d8];return _0xd2aa1a;};'use strict';var _=require(_0xb5f4('0x0'));var util=require(_0xb5f4('0x1'));var logger=require(_0xb5f4('0x2'))(_0xb5f4('0x3'));var moment=require(_0xb5f4('0x4'));var BPromise=require(_0xb5f4('0x5'));var rp=require(_0xb5f4('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb5f4('0x7'));var config=require(_0xb5f4('0x8'));var attributes=require(_0xb5f4('0x9'));module[_0xb5f4('0xa')]=function(_0x4021ea,_0xf8e3ab){return _0x4021ea[_0xb5f4('0xb')](_0xb5f4('0xc'),attributes,{'tableName':_0xb5f4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb6e=['bluebird','request-promise','path','rimraf','../../config/environment','define','Tag','lodash','../../config/logger','moment'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xbb6e,0x115));var _0xebb6=function(_0x1d6d02,_0x5a614f){_0x1d6d02=_0x1d6d02-0x0;var _0x222109=_0xbb6e[_0x1d6d02];return _0x222109;};'use strict';var _=require(_0xebb6('0x0'));var util=require('util');var logger=require(_0xebb6('0x1'))('api');var moment=require(_0xebb6('0x2'));var BPromise=require(_0xebb6('0x3'));var rp=require(_0xebb6('0x4'));var fs=require('fs');var path=require(_0xebb6('0x5'));var rimraf=require(_0xebb6('0x6'));var config=require(_0xebb6('0x7'));var attributes=require('./tag.attributes');module['exports']=function(_0x5b31e9,_0x3d25a3){return _0x5b31e9[_0xebb6('0x8')](_0xebb6('0x9'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a1b8088..da07a2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee24=['stringify','error','code','Tag,\x20%s,\x20%s','message','info','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s'];(function(_0x24249d,_0x367ce0){var _0x43436d=function(_0x9aff80){while(--_0x9aff80){_0x24249d['push'](_0x24249d['shift']());}};_0x43436d(++_0x367ce0);}(_0xee24,0x1a6));var _0x4ee2=function(_0x42ab91,_0x2a0179){_0x42ab91=_0x42ab91-0x0;var _0x259d35=_0xee24[_0x42ab91];return _0x259d35;};'use strict';var _=require('lodash');var util=require(_0x4ee2('0x0'));var moment=require(_0x4ee2('0x1'));var BPromise=require('bluebird');var rs=require(_0x4ee2('0x2'));var fs=require('fs');var Redis=require(_0x4ee2('0x3'));var db=require(_0x4ee2('0x4'))['db'];var utils=require(_0x4ee2('0x5'));var logger=require('../../config/logger')(_0x4ee2('0x6'));var config=require(_0x4ee2('0x7'));var jayson=require(_0x4ee2('0x8'));var client=jayson[_0x4ee2('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2e6e11,_0x319d9d,_0xe966eb){return new BPromise(function(_0x9a963c,_0x8d7266){return client[_0x4ee2('0xa')](_0x2e6e11,_0xe966eb)[_0x4ee2('0xb')](function(_0x3b6028){logger['info']('Tag,\x20%s,\x20%s',_0x319d9d,_0x4ee2('0xc'));logger[_0x4ee2('0xd')](_0x4ee2('0xe'),_0x319d9d,_0x4ee2('0xc'),JSON[_0x4ee2('0xf')](_0x3b6028));if(_0x3b6028['error']){if(_0x3b6028[_0x4ee2('0x10')][_0x4ee2('0x11')]===0x1f4){logger[_0x4ee2('0x10')](_0x4ee2('0x12'),_0x319d9d,_0x3b6028['error'][_0x4ee2('0x13')]);return _0x8d7266(_0x3b6028[_0x4ee2('0x10')][_0x4ee2('0x13')]);}logger[_0x4ee2('0x10')]('Tag,\x20%s,\x20%s',_0x319d9d,_0x3b6028['error'][_0x4ee2('0x13')]);return _0x9a963c(_0x3b6028[_0x4ee2('0x10')]['message']);}else{logger[_0x4ee2('0x14')](_0x4ee2('0x12'),_0x319d9d,_0x4ee2('0xc'));_0x9a963c(_0x3b6028[_0x4ee2('0x15')][_0x4ee2('0x13')]);}})[_0x4ee2('0x16')](function(_0x5e19f8){logger[_0x4ee2('0x10')](_0x4ee2('0x12'),_0x319d9d,_0x5e19f8);_0x8d7266(_0x5e19f8);});});}
\ No newline at end of file
+var _0xa41a=['rpc','../../config/environment','client','http','request','then','info','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x253fbe,_0x6d4b1c){var _0x594bf2=function(_0x4247d2){while(--_0x4247d2){_0x253fbe['push'](_0x253fbe['shift']());}};_0x594bf2(++_0x6d4b1c);}(_0xa41a,0x6b));var _0xaa41=function(_0x3d1cfc,_0x5bef35){_0x3d1cfc=_0x3d1cfc-0x0;var _0x19cc00=_0xa41a[_0x3d1cfc];return _0x19cc00;};'use strict';var _=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var moment=require('moment');var BPromise=require(_0xaa41('0x2'));var rs=require(_0xaa41('0x3'));var fs=require('fs');var Redis=require(_0xaa41('0x4'));var db=require(_0xaa41('0x5'))['db'];var utils=require(_0xaa41('0x6'));var logger=require(_0xaa41('0x7'))(_0xaa41('0x8'));var config=require(_0xaa41('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xaa41('0xa')][_0xaa41('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x54bc5a,_0x5b1fff,_0x179545){return new BPromise(function(_0x202cce,_0x588ab4){return client[_0xaa41('0xc')](_0x54bc5a,_0x179545)[_0xaa41('0xd')](function(_0x409dab){logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));logger[_0xaa41('0x11')](_0xaa41('0x12'),_0x5b1fff,_0xaa41('0x10'),JSON['stringify'](_0x409dab));if(_0x409dab[_0xaa41('0x13')]){if(_0x409dab[_0xaa41('0x13')]['code']===0x1f4){logger['error'](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x588ab4(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x202cce(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}else{logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));_0x202cce(_0x409dab[_0xaa41('0x15')]['message']);}})[_0xaa41('0x16')](function(_0x16b930){logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x16b930);_0x588ab4(_0x16b930);});});}
\ No newline at end of file
index a31cb7f..bd6ba8f 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(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+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(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xa9e0[_0x376b45];return _0x2341b3;};'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 f692bf6..bf569c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x50e064,_0x42e0fc){var _0x1c42d7=function(_0x4ce33c){while(--_0x4ce33c){_0x50e064['push'](_0x50e064['shift']());}};_0x1c42d7(++_0x42e0fc);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb10b=['name','sequelize','STRING'];(function(_0x149794,_0x134337){var _0x80d9aa=function(_0x389cc7){while(--_0x389cc7){_0x149794['push'](_0x149794['shift']());}};_0x80d9aa(++_0x134337);}(_0xb10b,0x12a));var _0xbb10=function(_0x3e2810,_0x104d34){_0x3e2810=_0x3e2810-0x0;var _0x577d18=_0xb10b[_0x3e2810];return _0x577d18;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
index 6f7b6d1..201d70a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbe8=['type','key','model','query','intersection','attributes','fields','length','nolimit','limit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','catch','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Teams','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','getQueues','findOne','channel','Sequelize','ValidationError','capitalize','toLowerCase','Queue','Queues','isValidChannel','Unknown\x20channel','add','ids','removeQueues','remove','addAgents','Voice','Sms','Fax','Openchannel','sequelize','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','findAll','online','UserVoiceQueueRt','isNil','interface','format','SIP/%s','all','removeAgents','Chat','Mail','Whatsapp','transaction','Queue:remove','getAgents','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./team.socket','register','sendStatus','status','end','undefined','count','offset','Content-Range','json','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','Team','rawAttributes'];(function(_0x13d7f2,_0x52d3b0){var _0xe53a30=function(_0xb17e2c){while(--_0xb17e2c){_0x13d7f2['push'](_0x13d7f2['shift']());}};_0xe53a30(++_0x52d3b0);}(_0xfbe8,0x152));var _0x8fbe=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xfbe8[_0x4d613c];return _0x301fe3;};'use strict';var emlformat=require(_0x8fbe('0x0'));var rimraf=require(_0x8fbe('0x1'));var zipdir=require(_0x8fbe('0x2'));var jsonpatch=require(_0x8fbe('0x3'));var rp=require(_0x8fbe('0x4'));var moment=require(_0x8fbe('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8fbe('0x6'));var util=require(_0x8fbe('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8fbe('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8fbe('0x9'));var squel=require(_0x8fbe('0xa'));var crypto=require(_0x8fbe('0xb'));var jsforce=require(_0x8fbe('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8fbe('0xd'));var querystring=require(_0x8fbe('0xe'));var Papa=require(_0x8fbe('0xf'));var Redis=require('ioredis');var authService=require(_0x8fbe('0x10'));var qs=require(_0x8fbe('0x11'));var as=require(_0x8fbe('0x12'));var hardwareService=require(_0x8fbe('0x13'));var logger=require('../../config/logger')(_0x8fbe('0x14'));var utils=require(_0x8fbe('0x15'));var config=require(_0x8fbe('0x16'));var licenseUtil=require(_0x8fbe('0x17'));var db=require(_0x8fbe('0x18'))['db'];config[_0x8fbe('0x19')]=_['defaults'](config[_0x8fbe('0x19')],{'host':_0x8fbe('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8fbe('0x1b'))[_0x8fbe('0x1c')](socket);function respondWithStatusCode(_0x412d1f,_0x151c3e){_0x151c3e=_0x151c3e||0xcc;return function(_0x27dd98){if(_0x27dd98){return _0x412d1f[_0x8fbe('0x1d')](_0x151c3e);}return _0x412d1f[_0x8fbe('0x1e')](_0x151c3e)[_0x8fbe('0x1f')]();};}function respondWithResult(_0x596556,_0x2fae8d){_0x2fae8d=_0x2fae8d||0xc8;return function(_0x178e8b){if(_0x178e8b){return _0x596556[_0x8fbe('0x1e')](_0x2fae8d)['json'](_0x178e8b);}};}function respondWithFilteredResult(_0x4e7315,_0x619874){return function(_0x2f0c80){if(_0x2f0c80){var _0x36b7bc=typeof _0x619874['offset']===_0x8fbe('0x20')&&typeof _0x619874['limit']===_0x8fbe('0x20');var _0x47d0ea=_0x2f0c80[_0x8fbe('0x21')];var _0x46bc1f=_0x36b7bc?0x0:_0x619874['offset'];var _0x283b44=_0x36b7bc?_0x2f0c80[_0x8fbe('0x21')]:_0x619874[_0x8fbe('0x22')]+_0x619874['limit'];var _0x5c7a9e;if(_0x283b44>=_0x47d0ea){_0x283b44=_0x47d0ea;_0x5c7a9e=0xc8;}else{_0x5c7a9e=0xce;}_0x4e7315[_0x8fbe('0x1e')](_0x5c7a9e);return _0x4e7315['set'](_0x8fbe('0x23'),_0x46bc1f+'-'+_0x283b44+'/'+_0x47d0ea)[_0x8fbe('0x24')](_0x2f0c80);}return null;};}function patchUpdates(_0x11eb78){return function(_0x362fb9){try{jsonpatch['apply'](_0x362fb9,_0x11eb78,!![]);}catch(_0x5ef09b){return BPromise['reject'](_0x5ef09b);}return _0x362fb9['save']();};}function saveUpdates(_0x3675a6,_0x2f6c59){return function(_0x3214eb){if(_0x3214eb){return _0x3214eb['update'](_0x3675a6)[_0x8fbe('0x25')](function(_0x1c0c06){return _0x1c0c06;});}return null;};}function removeEntity(_0x5a209d,_0x4bc8de){return function(_0x31f46a){if(_0x31f46a){return _0x31f46a[_0x8fbe('0x26')]()[_0x8fbe('0x25')](function(){var _0x1b1ad5=_0x31f46a[_0x8fbe('0x27')]({'plain':!![]});var _0x145792='Teams';return db[_0x8fbe('0x28')][_0x8fbe('0x26')]({'where':{'type':_0x145792,'resourceId':_0x1b1ad5['id']}})[_0x8fbe('0x25')](function(){return _0x31f46a;});})[_0x8fbe('0x25')](function(){_0x5a209d[_0x8fbe('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x180f43,_0x41fa48){return function(_0x5d3276){if(!_0x5d3276){_0x180f43[_0x8fbe('0x1d')](0x194);}return _0x5d3276;};}function handleError(_0x31482a,_0x11014e){_0x11014e=_0x11014e||0x1f4;return function(_0x5e4562){logger[_0x8fbe('0x29')](_0x5e4562[_0x8fbe('0x2a')]);if(_0x5e4562[_0x8fbe('0x2b')]){delete _0x5e4562[_0x8fbe('0x2b')];}_0x31482a[_0x8fbe('0x1e')](_0x11014e)[_0x8fbe('0x2c')](_0x5e4562);};}exports[_0x8fbe('0x2d')]=function(_0xcc9289,_0x3ac72c){var _0x53de7e={},_0x5003d9={},_0x4e6701={'count':0x0,'rows':[]};var _0x213750=_[_0x8fbe('0x2e')](db[_0x8fbe('0x2f')][_0x8fbe('0x30')],function(_0x21badf){return{'name':_0x21badf['fieldName'],'type':_0x21badf[_0x8fbe('0x31')][_0x8fbe('0x32')]};});_0x5003d9[_0x8fbe('0x33')]=_['map'](_0x213750,_0x8fbe('0x2b'));_0x5003d9['query']=_['keys'](_0xcc9289[_0x8fbe('0x34')]);_0x5003d9['filters']=_[_0x8fbe('0x35')](_0x5003d9[_0x8fbe('0x33')],_0x5003d9[_0x8fbe('0x34')]);_0x53de7e[_0x8fbe('0x36')]=_['intersection'](_0x5003d9[_0x8fbe('0x33')],qs[_0x8fbe('0x37')](_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x37')]));_0x53de7e['attributes']=_0x53de7e[_0x8fbe('0x36')][_0x8fbe('0x38')]?_0x53de7e[_0x8fbe('0x36')]:_0x5003d9[_0x8fbe('0x33')];if(!_0xcc9289['query']['hasOwnProperty'](_0x8fbe('0x39'))){_0x53de7e['limit']=qs[_0x8fbe('0x3a')](_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x3a')]);_0x53de7e['offset']=qs[_0x8fbe('0x22')](_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x22')]);}_0x53de7e[_0x8fbe('0x3b')]=qs[_0x8fbe('0x3c')](_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x3c')]);_0x53de7e[_0x8fbe('0x3d')]=qs[_0x8fbe('0x3e')](_[_0x8fbe('0x3f')](_0xcc9289['query'],_0x5003d9[_0x8fbe('0x3e')]),_0x213750);if(_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x40')]){_0x53de7e[_0x8fbe('0x3d')]=_['merge'](_0x53de7e[_0x8fbe('0x3d')],{'$or':_[_0x8fbe('0x2e')](_0x213750,function(_0x5b39e8){if(_0x5b39e8[_0x8fbe('0x31')]!==_0x8fbe('0x41')){var _0x1bf4cb={};_0x1bf4cb[_0x5b39e8[_0x8fbe('0x2b')]]={'$like':'%'+_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x40')]+'%'};return _0x1bf4cb;}})});}_0x53de7e=_[_0x8fbe('0x42')]({},_0x53de7e,_0xcc9289[_0x8fbe('0x43')]);var _0x416d84={'where':_0x53de7e[_0x8fbe('0x3d')]};return db[_0x8fbe('0x2f')][_0x8fbe('0x21')](_0x416d84)[_0x8fbe('0x25')](function(_0x3154fd){_0x4e6701[_0x8fbe('0x21')]=_0x3154fd;if(_0xcc9289[_0x8fbe('0x34')][_0x8fbe('0x44')]){_0x53de7e[_0x8fbe('0x45')]=[{'all':!![]}];}return db[_0x8fbe('0x2f')]['findAll'](_0x53de7e);})['then'](function(_0x4cef4a){_0x4e6701['rows']=_0x4cef4a;return _0x4e6701;})[_0x8fbe('0x25')](respondWithFilteredResult(_0x3ac72c,_0x53de7e))[_0x8fbe('0x46')](handleError(_0x3ac72c,null));};exports['show']=function(_0x54dace,_0x47e968){var _0x1aaf12={'raw':![],'where':{'id':_0x54dace['params']['id']}},_0x158f96={};_0x158f96['model']=_[_0x8fbe('0x47')](db[_0x8fbe('0x2f')][_0x8fbe('0x30')]);_0x158f96[_0x8fbe('0x34')]=_[_0x8fbe('0x47')](_0x54dace[_0x8fbe('0x34')]);_0x158f96['filters']=_[_0x8fbe('0x35')](_0x158f96[_0x8fbe('0x33')],_0x158f96[_0x8fbe('0x34')]);_0x1aaf12[_0x8fbe('0x36')]=_[_0x8fbe('0x35')](_0x158f96['model'],qs[_0x8fbe('0x37')](_0x54dace[_0x8fbe('0x34')][_0x8fbe('0x37')]));_0x1aaf12[_0x8fbe('0x36')]=_0x1aaf12[_0x8fbe('0x36')][_0x8fbe('0x38')]?_0x1aaf12[_0x8fbe('0x36')]:_0x158f96[_0x8fbe('0x33')];if(_0x54dace[_0x8fbe('0x34')]['includeAll']){_0x1aaf12[_0x8fbe('0x45')]=[{'all':!![]}];}_0x1aaf12=_[_0x8fbe('0x42')]({},_0x1aaf12,_0x54dace[_0x8fbe('0x43')]);return db[_0x8fbe('0x2f')][_0x8fbe('0x48')](_0x1aaf12)['then'](handleEntityNotFound(_0x47e968,null))['then'](respondWithResult(_0x47e968,null))['catch'](handleError(_0x47e968,null));};exports[_0x8fbe('0x49')]=function(_0x3e35fa,_0x4aff39){return db[_0x8fbe('0x2f')][_0x8fbe('0x49')](_0x3e35fa[_0x8fbe('0x4a')],{})[_0x8fbe('0x25')](function(_0x15a7a7){var _0x373f8c=_0x3e35fa[_0x8fbe('0x4b')][_0x8fbe('0x27')]({'plain':!![]});if(!_0x373f8c)throw new Error(_0x8fbe('0x4c'));if(_0x373f8c['role']==='user'){var _0xd6a033=_0x15a7a7['get']({'plain':!![]});var _0xb68c7e=_0x8fbe('0x4d');return db[_0x8fbe('0x4e')][_0x8fbe('0x48')]({'where':{'name':_0xb68c7e,'userProfileId':_0x373f8c[_0x8fbe('0x4f')]},'raw':!![]})[_0x8fbe('0x25')](function(_0x2a43a5){if(_0x2a43a5&&_0x2a43a5[_0x8fbe('0x50')]===0x0){return db[_0x8fbe('0x28')]['create']({'name':_0xd6a033[_0x8fbe('0x2b')],'resourceId':_0xd6a033['id'],'type':_0x2a43a5[_0x8fbe('0x2b')],'sectionId':_0x2a43a5['id']},{})[_0x8fbe('0x25')](function(){return _0x15a7a7;});}else{return _0x15a7a7;}})[_0x8fbe('0x46')](function(_0x16f991){logger[_0x8fbe('0x29')](_0x8fbe('0x51'),_0x16f991);throw _0x16f991;});}return _0x15a7a7;})[_0x8fbe('0x25')](respondWithResult(_0x4aff39,0xc9))[_0x8fbe('0x46')](handleError(_0x4aff39,null));};exports[_0x8fbe('0x52')]=function(_0x460724,_0x31d25a){if(_0x460724[_0x8fbe('0x4a')]['id']){delete _0x460724['body']['id'];}return db[_0x8fbe('0x2f')][_0x8fbe('0x48')]({'where':{'id':_0x460724[_0x8fbe('0x53')]['id']}})['then'](handleEntityNotFound(_0x31d25a,null))['then'](saveUpdates(_0x460724[_0x8fbe('0x4a')],null))[_0x8fbe('0x25')](respondWithResult(_0x31d25a,null))[_0x8fbe('0x46')](handleError(_0x31d25a,null));};exports['destroy']=function(_0x39d2bb,_0x3a1f66){return db[_0x8fbe('0x2f')]['find']({'where':{'id':_0x39d2bb[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](handleEntityNotFound(_0x3a1f66,null))[_0x8fbe('0x25')](removeEntity(_0x3a1f66,null))[_0x8fbe('0x46')](handleError(_0x3a1f66,null));};exports[_0x8fbe('0x54')]=function(_0x3b9f1e,_0x3208f7,_0x40a04f){return db['Team'][_0x8fbe('0x55')]({'where':{'id':_0x3b9f1e[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](handleEntityNotFound(_0x3208f7,null))[_0x8fbe('0x25')](function(_0x2fece4){if(!_0x3b9f1e['query'][_0x8fbe('0x56')]||!utils['isValidChannel'](_0x3b9f1e[_0x8fbe('0x34')][_0x8fbe('0x56')])){throw new db[(_0x8fbe('0x57'))][(_0x8fbe('0x58'))]('Unknown\x20channel');}var _0x32ae4f={};var _0xcf5a14={};_0xcf5a14['model']=_[_0x8fbe('0x47')](db[_[_0x8fbe('0x59')](_0x3b9f1e['query'][_0x8fbe('0x56')][_0x8fbe('0x5a')]())+_0x8fbe('0x5b')]['rawAttributes']);_0xcf5a14[_0x8fbe('0x34')]=_['keys'](_0x3b9f1e[_0x8fbe('0x34')]);_0xcf5a14[_0x8fbe('0x3e')]=_[_0x8fbe('0x35')](_0xcf5a14[_0x8fbe('0x33')],_0xcf5a14[_0x8fbe('0x34')]);_0x32ae4f[_0x8fbe('0x36')]=_['intersection'](_0xcf5a14[_0x8fbe('0x33')],qs[_0x8fbe('0x37')](_0x3b9f1e['query'][_0x8fbe('0x37')]));_0x32ae4f['attributes']=_0x32ae4f[_0x8fbe('0x36')][_0x8fbe('0x38')]?_0x32ae4f[_0x8fbe('0x36')]:_0xcf5a14[_0x8fbe('0x33')];_0x32ae4f[_0x8fbe('0x3a')]=qs[_0x8fbe('0x3a')](_0x3b9f1e[_0x8fbe('0x34')][_0x8fbe('0x3a')]);_0x32ae4f[_0x8fbe('0x22')]=qs[_0x8fbe('0x22')](_0x3b9f1e[_0x8fbe('0x34')][_0x8fbe('0x22')]);_0x32ae4f[_0x8fbe('0x3b')]=qs[_0x8fbe('0x3c')](_0x3b9f1e['query'][_0x8fbe('0x3c')]);_0x32ae4f[_0x8fbe('0x3d')]=qs[_0x8fbe('0x3e')](_[_0x8fbe('0x3f')](_0x3b9f1e[_0x8fbe('0x34')],_0xcf5a14['filters']));_0x32ae4f=_[_0x8fbe('0x42')]({},_0x32ae4f,_0x3b9f1e[_0x8fbe('0x43')]);return _0x2fece4[_0x8fbe('0x27')+_[_0x8fbe('0x59')](_0x3b9f1e['query'][_0x8fbe('0x56')][_0x8fbe('0x5a')]())+_0x8fbe('0x5c')](_0x32ae4f);})[_0x8fbe('0x25')](respondWithResult(_0x3208f7,null))[_0x8fbe('0x46')](handleError(_0x3208f7,null));};exports['addQueues']=function(_0x48c0e4,_0x18193a,_0x49c32b){return db['Team'][_0x8fbe('0x55')]({'where':{'id':_0x48c0e4[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](function(_0x396012){if(_0x396012){if(!_0x48c0e4[_0x8fbe('0x4a')]['channel']||!utils[_0x8fbe('0x5d')](_0x48c0e4[_0x8fbe('0x4a')][_0x8fbe('0x56')])){throw new db[(_0x8fbe('0x57'))][(_0x8fbe('0x58'))](_0x8fbe('0x5e'));}return _0x396012[_0x8fbe('0x5f')+_[_0x8fbe('0x59')](_0x48c0e4[_0x8fbe('0x4a')]['channel'][_0x8fbe('0x5a')]())+_0x8fbe('0x5c')](_0x48c0e4[_0x8fbe('0x4a')][_0x8fbe('0x60')]);}return null;})[_0x8fbe('0x25')](handleEntityNotFound(_0x18193a,null))[_0x8fbe('0x25')](respondWithStatusCode(_0x18193a,null))[_0x8fbe('0x46')](handleError(_0x18193a,null));};exports[_0x8fbe('0x61')]=function(_0x29fe12,_0x5559a3,_0xf4e278){return db[_0x8fbe('0x2f')][_0x8fbe('0x55')]({'where':{'id':_0x29fe12[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](function(_0x2ecc82){if(_0x2ecc82){if(!_0x29fe12[_0x8fbe('0x34')]['channel']||!utils[_0x8fbe('0x5d')](_0x29fe12[_0x8fbe('0x34')][_0x8fbe('0x56')])){throw new db[(_0x8fbe('0x57'))]['ValidationError'](_0x8fbe('0x5e'));}return _0x2ecc82[_0x8fbe('0x62')+_[_0x8fbe('0x59')](_0x29fe12[_0x8fbe('0x34')][_0x8fbe('0x56')][_0x8fbe('0x5a')]())+_0x8fbe('0x5c')](_0x29fe12[_0x8fbe('0x34')][_0x8fbe('0x60')]);}return null;})['then'](handleEntityNotFound(_0x5559a3,null))[_0x8fbe('0x25')](respondWithStatusCode(_0x5559a3,null))[_0x8fbe('0x46')](handleError(_0x5559a3,null));};exports[_0x8fbe('0x63')]=function(_0x374d90,_0x34bf31){return db[_0x8fbe('0x2f')]['find']({'where':{'id':_0x374d90[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](handleEntityNotFound(_0x34bf31,null))[_0x8fbe('0x25')](function(_0x1e786a){if(_0x1e786a){var _0x1c6e5d=[_0x8fbe('0x64'),'Chat','Mail',_0x8fbe('0x65'),_0x8fbe('0x66'),_0x8fbe('0x67'),'Whatsapp'];return db[_0x8fbe('0x68')]['transaction'](function(_0x154373){var _0x525d43=_['map'](_0x1c6e5d,function(_0x3cf093){var _0x4d3d66={'attributes':['id',_0x8fbe('0x2b')]};if(_0x3cf093===_0x8fbe('0x64')){_0x4d3d66[_0x8fbe('0x69')]={'attributes':[_0x8fbe('0x6a')]};}return _0x1e786a[_0x8fbe('0x27')+_0x3cf093+_0x8fbe('0x5c')](_0x4d3d66)[_0x8fbe('0x25')](function(_0x166001){var _0x395f8f=_[_0x8fbe('0x2e')](_0x166001,function(_0x899dd){var _0x449cbb=_['map'](_0x374d90[_0x8fbe('0x4a')][_0x8fbe('0x60')],function(_0x52d802){var _0x13e224={'where':{'UserId':_0x52d802,[_0x3cf093+_0x8fbe('0x6b')]:_0x899dd['id']},'transaction':_0x154373};if(_0x3cf093===_0x8fbe('0x64')){_0x13e224['defaults']={'penalty':_0x899dd[_0x8fbe('0x6c')][_0x8fbe('0x6a')]};}return db[_0x8fbe('0x6d')+_0x3cf093+'Queue'][_0x8fbe('0x6e')](_0x13e224)[_0x8fbe('0x25')](function(){socket[_0x8fbe('0x6f')](_0x8fbe('0x4b')+_0x3cf093+_0x8fbe('0x70'),{'UserId':_0x52d802,[_0x3cf093+_0x8fbe('0x6b')]:_0x899dd['id']});if(_0x3cf093!==_0x8fbe('0x64'))return;return db[_0x8fbe('0x6d')][_0x8fbe('0x71')]({'where':{'id':_0x374d90[_0x8fbe('0x4a')]['ids'],'online':0x1},'attributes':['id',_0x8fbe('0x2b'),_0x8fbe('0x72'),'voicePause','interface'],'raw':!![]})[_0x8fbe('0x25')](function(_0x1d0e40){var _0x41af34=_[_0x8fbe('0x2e')](_0x1d0e40,function(_0x5e8285){return db[_0x8fbe('0x73')]['upsert']({'membername':_0x5e8285[_0x8fbe('0x2b')],'UserId':_0x5e8285['id'],'queue_name':_0x899dd[_0x8fbe('0x2b')],'VoiceQueueId':_0x899dd['id'],'interface':_[_0x8fbe('0x74')](_0x5e8285[_0x8fbe('0x75')])?util[_0x8fbe('0x76')](_0x8fbe('0x77'),_0x5e8285[_0x8fbe('0x2b')]):_0x5e8285['interface'],'paused':_0x5e8285['voicePause']||![],'penalty':_0x899dd['TeamVoiceQueue'][_0x8fbe('0x6a')]},{'transaction':_0x154373});});return Promise[_0x8fbe('0x78')](_0x41af34);});});});return Promise[_0x8fbe('0x78')](_0x449cbb);});return Promise[_0x8fbe('0x78')](_0x395f8f);});});return Promise[_0x8fbe('0x78')](_0x525d43)['then'](function(){return _0x1e786a['addAgents'](_0x374d90[_0x8fbe('0x4a')][_0x8fbe('0x60')],{'transaction':_0x154373})['spread'](function(_0x446d0b){return _0x446d0b;});});});}})[_0x8fbe('0x25')](respondWithResult(_0x34bf31,null))[_0x8fbe('0x46')](handleError(_0x34bf31,null));};exports[_0x8fbe('0x79')]=function(_0x41288c,_0x53c441){return db[_0x8fbe('0x2f')][_0x8fbe('0x48')]({'where':{'id':_0x41288c[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](handleEntityNotFound(_0x53c441,null))['then'](function(_0x23bf8c){if(_0x23bf8c){var _0x7e4de7=[_0x8fbe('0x64'),_0x8fbe('0x7a'),_0x8fbe('0x7b'),_0x8fbe('0x65'),_0x8fbe('0x66'),_0x8fbe('0x67'),_0x8fbe('0x7c')];return db[_0x8fbe('0x68')][_0x8fbe('0x7d')](function(_0x304ed4){var _0x83e7e=_[_0x8fbe('0x2e')](_0x7e4de7,function(_0x327e6d){var _0x4d94b6={'attributes':['id',_0x8fbe('0x2b')]};return _0x23bf8c['get'+_0x327e6d+_0x8fbe('0x5c')](_0x4d94b6)[_0x8fbe('0x25')](function(_0xbe572c){var _0x14e5d5=_[_0x8fbe('0x2e')](_0xbe572c,function(_0x31c1dd){return _0x31c1dd[_0x8fbe('0x79')](_0x41288c[_0x8fbe('0x34')][_0x8fbe('0x60')],{'transaction':_0x304ed4})[_0x8fbe('0x25')](function(){var _0x50de30=JSON['parse']('['+_0x41288c[_0x8fbe('0x34')][_0x8fbe('0x60')]+']');var _0x3e42df=_[_0x8fbe('0x2e')](_0x50de30,function(_0x5266dd){socket['emit']('user'+_0x327e6d+_0x8fbe('0x7e'),{'UserId':Number(_0x5266dd),[_0x327e6d+_0x8fbe('0x6b')]:_0x31c1dd['id']});if(_0x327e6d!==_0x8fbe('0x64'))return;return db[_0x8fbe('0x73')][_0x8fbe('0x26')]({'where':{'VoiceQueueId':_0x31c1dd['id'],'UserId':_0x5266dd},'transaction':_0x304ed4});});return Promise['all'](_0x3e42df);});});return Promise[_0x8fbe('0x78')](_0x14e5d5);});});return Promise['all'](_0x83e7e)['then'](function(){return _0x23bf8c[_0x8fbe('0x79')](_0x41288c[_0x8fbe('0x34')]['ids'],{'transaction':_0x304ed4});});});}})[_0x8fbe('0x25')](respondWithStatusCode(_0x53c441,null))['catch'](handleError(_0x53c441,null));};exports['getAgents']=function(_0x34fb93,_0x1d49dd,_0x45b71c){var _0x4724e2={};var _0x32ca52={};var _0xfffd84;var _0x185cca;return db['Team'][_0x8fbe('0x55')]({'where':{'id':_0x34fb93[_0x8fbe('0x53')]['id']}})[_0x8fbe('0x25')](handleEntityNotFound(_0x1d49dd,null))[_0x8fbe('0x25')](function(_0x48dc75){if(_0x48dc75){_0xfffd84=_0x48dc75;_0x32ca52[_0x8fbe('0x33')]=_[_0x8fbe('0x47')](db[_0x8fbe('0x6d')][_0x8fbe('0x30')]);_0x32ca52[_0x8fbe('0x34')]=_['keys'](_0x34fb93['query']);_0x32ca52[_0x8fbe('0x3e')]=_[_0x8fbe('0x35')](_0x32ca52[_0x8fbe('0x33')],_0x32ca52[_0x8fbe('0x34')]);_0x4724e2[_0x8fbe('0x36')]=_[_0x8fbe('0x35')](_0x32ca52['model'],qs[_0x8fbe('0x37')](_0x34fb93[_0x8fbe('0x34')]['fields']));_0x4724e2[_0x8fbe('0x36')]=_0x4724e2[_0x8fbe('0x36')][_0x8fbe('0x38')]?_0x4724e2[_0x8fbe('0x36')]:_0x32ca52[_0x8fbe('0x33')];_0x4724e2[_0x8fbe('0x3b')]=qs[_0x8fbe('0x3c')](_0x34fb93[_0x8fbe('0x34')][_0x8fbe('0x3c')]);_0x4724e2[_0x8fbe('0x3d')]=qs[_0x8fbe('0x3e')](_[_0x8fbe('0x3f')](_0x34fb93[_0x8fbe('0x34')],_0x32ca52[_0x8fbe('0x3e')]));if(_0x34fb93['query'][_0x8fbe('0x40')]){_0x4724e2[_0x8fbe('0x3d')]=_[_0x8fbe('0x42')](_0x4724e2[_0x8fbe('0x3d')],{'$or':_['map'](_0x4724e2[_0x8fbe('0x36')],function(_0xa9cc3a){var _0x5ce16e={};_0x5ce16e[_0xa9cc3a]={'$like':'%'+_0x34fb93[_0x8fbe('0x34')][_0x8fbe('0x40')]+'%'};return _0x5ce16e;})});}_0x4724e2=_[_0x8fbe('0x42')]({},_0x4724e2,_0x34fb93[_0x8fbe('0x43')]);return _0xfffd84[_0x8fbe('0x7f')](_0x4724e2);}})[_0x8fbe('0x25')](function(_0x341094){if(_0x341094){_0x185cca=_0x341094[_0x8fbe('0x38')];if(!_0x34fb93[_0x8fbe('0x34')][_0x8fbe('0x80')]('nolimit')){_0x4724e2['limit']=qs[_0x8fbe('0x3a')](_0x34fb93['query'][_0x8fbe('0x3a')]);_0x4724e2[_0x8fbe('0x22')]=qs[_0x8fbe('0x22')](_0x34fb93[_0x8fbe('0x34')]['offset']);}return _0xfffd84[_0x8fbe('0x7f')](_0x4724e2);}})[_0x8fbe('0x25')](function(_0x5d6886){if(_0x5d6886){return _0x5d6886?{'count':_0x185cca,'rows':_0x5d6886}:null;}})[_0x8fbe('0x25')](respondWithResult(_0x1d49dd,null))[_0x8fbe('0x46')](handleError(_0x1d49dd,null));};
\ No newline at end of file
+var _0x176e=['sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','register','end','json','offset','undefined','count','limit','status','set','Content-Range','apply','reject','save','update','sendStatus','error','stack','name','send','index','map','Team','rawAttributes','fieldName','key','model','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','options','then','include','findAll','rows','catch','show','params','intersection','includeAll','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','find','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','SELECT','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','VoiceQueueId','UserVoiceQueue','UserMailQueue','SmsQueueId','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','VoicePrefixId','Teams','getQueues','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','order','pick','Queues','addQueues','findOne','add','removeQueues','ids','addAgents','isArray','Voice','Mail','Openchannel','Whatsapp','through','penalty','User','emit','Queue:save','QueueId','online','voicePause','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','all','UserVoicePrefix','spread','removeAgents','Chat','Fax','Queue:remove','getAgents','filter','eml-format','zip-dir','request-promise','moment','mustache','path'];(function(_0xac151d,_0x4ea1d2){var _0x111dba=function(_0x13d7f4){while(--_0x13d7f4){_0xac151d['push'](_0xac151d['shift']());}};_0x111dba(++_0x4ea1d2);}(_0x176e,0x126));var _0xe176=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x176e[_0x334841];return _0x5beb4b;};'use strict';var emlformat=require(_0xe176('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe176('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe176('0x2'));var moment=require(_0xe176('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe176('0x4'));var util=require('util');var path=require(_0xe176('0x5'));var sox=require(_0xe176('0x6'));var csv=require('to-csv');var ejs=require(_0xe176('0x7'));var fs=require('fs');var fs_extra=require(_0xe176('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xe176('0x9'));var jsforce=require(_0xe176('0xa'));var deskjs=require(_0xe176('0xb'));var toCsv=require(_0xe176('0xc'));var querystring=require(_0xe176('0xd'));var Papa=require('papaparse');var Redis=require(_0xe176('0xe'));var authService=require(_0xe176('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe176('0x10'))(_0xe176('0x11'));var utils=require(_0xe176('0x12'));var config=require(_0xe176('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xe176('0x14'))['db'];config[_0xe176('0x15')]=_[_0xe176('0x16')](config[_0xe176('0x15')],{'host':_0xe176('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./team.socket')[_0xe176('0x18')](socket);function respondWithStatusCode(_0x4b9d2f,_0xf38513){_0xf38513=_0xf38513||0xcc;return function(_0x2e3bd2){if(_0x2e3bd2){return _0x4b9d2f['sendStatus'](_0xf38513);}return _0x4b9d2f['status'](_0xf38513)[_0xe176('0x19')]();};}function respondWithResult(_0x5f254e,_0x581c6c){_0x581c6c=_0x581c6c||0xc8;return function(_0x489930){if(_0x489930){return _0x5f254e['status'](_0x581c6c)[_0xe176('0x1a')](_0x489930);}};}function respondWithFilteredResult(_0x4f2529,_0x3595d){return function(_0x2d8c0b){if(_0x2d8c0b){var _0x191219=typeof _0x3595d[_0xe176('0x1b')]===_0xe176('0x1c')&&typeof _0x3595d['limit']==='undefined';var _0x24b0f5=_0x2d8c0b[_0xe176('0x1d')];var _0x116fcd=_0x191219?0x0:_0x3595d[_0xe176('0x1b')];var _0x1ab96e=_0x191219?_0x2d8c0b['count']:_0x3595d[_0xe176('0x1b')]+_0x3595d[_0xe176('0x1e')];var _0x313f8b;if(_0x1ab96e>=_0x24b0f5){_0x1ab96e=_0x24b0f5;_0x313f8b=0xc8;}else{_0x313f8b=0xce;}_0x4f2529[_0xe176('0x1f')](_0x313f8b);return _0x4f2529[_0xe176('0x20')](_0xe176('0x21'),_0x116fcd+'-'+_0x1ab96e+'/'+_0x24b0f5)[_0xe176('0x1a')](_0x2d8c0b);}return null;};}function patchUpdates(_0x4d8f97){return function(_0x52fc16){try{jsonpatch[_0xe176('0x22')](_0x52fc16,_0x4d8f97,!![]);}catch(_0x492660){return BPromise[_0xe176('0x23')](_0x492660);}return _0x52fc16[_0xe176('0x24')]();};}function saveUpdates(_0x298d63,_0x1c45e7){return function(_0x2511ac){if(_0x2511ac){return _0x2511ac[_0xe176('0x25')](_0x298d63)['then'](function(_0x2454a6){return _0x2454a6;});}return null;};}function handleEntityNotFound(_0xb983da,_0x2989cd){return function(_0x230b27){if(!_0x230b27){_0xb983da[_0xe176('0x26')](0x194);}return _0x230b27;};}function handleError(_0x2c70cc,_0xedf9d7){_0xedf9d7=_0xedf9d7||0x1f4;return function(_0x52d344){logger[_0xe176('0x27')](_0x52d344[_0xe176('0x28')]);if(_0x52d344[_0xe176('0x29')]){delete _0x52d344[_0xe176('0x29')];}_0x2c70cc[_0xe176('0x1f')](_0xedf9d7)[_0xe176('0x2a')](_0x52d344);};}exports[_0xe176('0x2b')]=function(_0x303de8,_0x382cee){var _0x51da60={},_0x17123a={},_0x113b4b={'count':0x0,'rows':[]};var _0x151177=_[_0xe176('0x2c')](db[_0xe176('0x2d')][_0xe176('0x2e')],function(_0x3918d9){return{'name':_0x3918d9[_0xe176('0x2f')],'type':_0x3918d9['type'][_0xe176('0x30')]};});_0x17123a[_0xe176('0x31')]=_[_0xe176('0x2c')](_0x151177,_0xe176('0x29'));_0x17123a['query']=_[_0xe176('0x32')](_0x303de8[_0xe176('0x33')]);_0x17123a[_0xe176('0x34')]=_['intersection'](_0x17123a[_0xe176('0x31')],_0x17123a[_0xe176('0x33')]);_0x51da60[_0xe176('0x35')]=_['intersection'](_0x17123a[_0xe176('0x31')],qs[_0xe176('0x36')](_0x303de8[_0xe176('0x33')][_0xe176('0x36')]));_0x51da60[_0xe176('0x35')]=_0x51da60[_0xe176('0x35')][_0xe176('0x37')]?_0x51da60[_0xe176('0x35')]:_0x17123a[_0xe176('0x31')];if(!_0x303de8['query'][_0xe176('0x38')](_0xe176('0x39'))){_0x51da60[_0xe176('0x1e')]=qs[_0xe176('0x1e')](_0x303de8[_0xe176('0x33')][_0xe176('0x1e')]);_0x51da60[_0xe176('0x1b')]=qs[_0xe176('0x1b')](_0x303de8[_0xe176('0x33')]['offset']);}_0x51da60['order']=qs[_0xe176('0x3a')](_0x303de8['query'][_0xe176('0x3a')]);_0x51da60['where']=qs['filters'](_['pick'](_0x303de8[_0xe176('0x33')],_0x17123a[_0xe176('0x34')]),_0x151177);if(_0x303de8['query']['filter']){_0x51da60[_0xe176('0x3b')]=_[_0xe176('0x3c')](_0x51da60['where'],{'$or':_[_0xe176('0x2c')](_0x151177,function(_0x8c9b09){if(_0x8c9b09['type']!==_0xe176('0x3d')){var _0x431da7={};_0x431da7[_0x8c9b09['name']]={'$like':'%'+_0x303de8[_0xe176('0x33')]['filter']+'%'};return _0x431da7;}})});}_0x51da60=_[_0xe176('0x3c')]({},_0x51da60,_0x303de8[_0xe176('0x3e')]);var _0x18aabd={'where':_0x51da60['where']};return db[_0xe176('0x2d')][_0xe176('0x1d')](_0x18aabd)[_0xe176('0x3f')](function(_0x45d35a){_0x113b4b[_0xe176('0x1d')]=_0x45d35a;if(_0x303de8[_0xe176('0x33')]['includeAll']){_0x51da60[_0xe176('0x40')]=[{'all':!![]}];}return db[_0xe176('0x2d')][_0xe176('0x41')](_0x51da60);})[_0xe176('0x3f')](function(_0x5a513a){_0x113b4b[_0xe176('0x42')]=_0x5a513a;return _0x113b4b;})['then'](respondWithFilteredResult(_0x382cee,_0x51da60))[_0xe176('0x43')](handleError(_0x382cee,null));};exports[_0xe176('0x44')]=function(_0x38afd0,_0x5760de){var _0xcb446={'raw':![],'where':{'id':_0x38afd0[_0xe176('0x45')]['id']}},_0x101e6c={};_0x101e6c['model']=_['keys'](db[_0xe176('0x2d')][_0xe176('0x2e')]);_0x101e6c[_0xe176('0x33')]=_['keys'](_0x38afd0['query']);_0x101e6c[_0xe176('0x34')]=_[_0xe176('0x46')](_0x101e6c[_0xe176('0x31')],_0x101e6c[_0xe176('0x33')]);_0xcb446['attributes']=_[_0xe176('0x46')](_0x101e6c[_0xe176('0x31')],qs['fields'](_0x38afd0['query'][_0xe176('0x36')]));_0xcb446[_0xe176('0x35')]=_0xcb446[_0xe176('0x35')][_0xe176('0x37')]?_0xcb446[_0xe176('0x35')]:_0x101e6c[_0xe176('0x31')];if(_0x38afd0['query'][_0xe176('0x47')]){_0xcb446['include']=[{'all':!![]}];}_0xcb446=_['merge']({},_0xcb446,_0x38afd0[_0xe176('0x3e')]);return db[_0xe176('0x2d')]['find'](_0xcb446)[_0xe176('0x3f')](handleEntityNotFound(_0x5760de,null))[_0xe176('0x3f')](respondWithResult(_0x5760de,null))['catch'](handleError(_0x5760de,null));};exports[_0xe176('0x48')]=function(_0x34dab1,_0x24d20d){return db[_0xe176('0x2d')][_0xe176('0x48')](_0x34dab1['body'],{})[_0xe176('0x3f')](function(_0x175dfe){var _0x22c10a=_0x34dab1['user'][_0xe176('0x49')]({'plain':!![]});if(!_0x22c10a)throw new Error(_0xe176('0x4a'));if(_0x22c10a['role']===_0xe176('0x4b')){var _0x3c08bb=_0x175dfe['get']({'plain':!![]});var _0xeb053='Teams';return db['UserProfileSection'][_0xe176('0x4c')]({'where':{'name':_0xeb053,'userProfileId':_0x22c10a['userProfileId']},'raw':!![]})[_0xe176('0x3f')](function(_0x5371ed){if(_0x5371ed&&_0x5371ed[_0xe176('0x4d')]===0x0){return db[_0xe176('0x4e')][_0xe176('0x48')]({'name':_0x3c08bb[_0xe176('0x29')],'resourceId':_0x3c08bb['id'],'type':_0x5371ed[_0xe176('0x29')],'sectionId':_0x5371ed['id']},{})['then'](function(){return _0x175dfe;});}else{return _0x175dfe;}})[_0xe176('0x43')](function(_0xd4ff66){logger[_0xe176('0x27')](_0xe176('0x4f'),_0xd4ff66);throw _0xd4ff66;});}return _0x175dfe;})[_0xe176('0x3f')](respondWithResult(_0x24d20d,0xc9))[_0xe176('0x43')](handleError(_0x24d20d,null));};exports[_0xe176('0x25')]=function(_0x34daf5,_0xd861e6){if(_0x34daf5[_0xe176('0x50')]['id']){delete _0x34daf5[_0xe176('0x50')]['id'];}return db[_0xe176('0x2d')][_0xe176('0x4c')]({'where':{'id':_0x34daf5[_0xe176('0x45')]['id']}})[_0xe176('0x3f')](handleEntityNotFound(_0xd861e6,null))['then'](saveUpdates(_0x34daf5[_0xe176('0x50')],null))[_0xe176('0x3f')](respondWithResult(_0xd861e6,null))[_0xe176('0x43')](handleError(_0xd861e6,null));};exports[_0xe176('0x51')]=function(_0x4d949b,_0x2378c5){var _0x254923=_0x4d949b['params']['id'];var _0x12552a=[];return db[_0xe176('0x52')][_0xe176('0x53')](function(_0x19efb9){var _0x3b10fc=_0xe176('0x54')+_0x254923;return db[_0xe176('0x52')][_0xe176('0x33')](_0x3b10fc,{'type':db[_0xe176('0x55')][_0xe176('0x56')][_0xe176('0x57')],'raw':!![],'transaction':_0x19efb9})[_0xe176('0x3f')](function(_0x265289){_0x12552a=_['map'](_0x265289,function(_0x380ef5){return Number(_0x380ef5['UserId']);});})[_0xe176('0x3f')](function(){var _0x39a052=_0xe176('0x58')+_0x254923;return db[_0xe176('0x52')][_0xe176('0x33')](_0x39a052,{'type':db[_0xe176('0x55')][_0xe176('0x56')]['SELECT'],'raw':!![],'transaction':_0x19efb9});})['then'](function(_0x25b6ba){var _0x479783=_['map'](_0x25b6ba,function(_0x3e85b1){return Number(_0x3e85b1[_0xe176('0x59')]);});return db[_0xe176('0x5a')][_0xe176('0x51')]({'where':{'UserId':{'$in':_0x12552a},'VoiceQueueId':{'$in':_0x479783}},'transaction':_0x19efb9});})[_0xe176('0x3f')](function(){var _0x43efb2='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0x254923;return db[_0xe176('0x52')][_0xe176('0x33')](_0x43efb2,{'type':db['Sequelize'][_0xe176('0x56')]['SELECT'],'raw':!![],'transaction':_0x19efb9});})[_0xe176('0x3f')](function(_0x4e7d01){var _0x5cfbbc=_[_0xe176('0x2c')](_0x4e7d01,function(_0x902d3b){return Number(_0x902d3b['MailQueueId']);});return db[_0xe176('0x5b')]['destroy']({'where':{'UserId':{'$in':_0x12552a},'MailQueueId':{'$in':_0x5cfbbc}},'transaction':_0x19efb9});})[_0xe176('0x3f')](function(){var _0x492217='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x254923;return db['sequelize'][_0xe176('0x33')](_0x492217,{'type':db['Sequelize']['QueryTypes'][_0xe176('0x57')],'raw':!![],'transaction':_0x19efb9});})[_0xe176('0x3f')](function(_0x44cc0a){var _0x8afb6a=_[_0xe176('0x2c')](_0x44cc0a,function(_0x2434f6){return Number(_0x2434f6[_0xe176('0x5c')]);});return db[_0xe176('0x5d')][_0xe176('0x51')]({'where':{'UserId':{'$in':_0x12552a},'SmsQueueId':{'$in':_0x8afb6a}},'transaction':_0x19efb9});})[_0xe176('0x3f')](function(){var _0x3e68fd=_0xe176('0x5e')+_0x254923;return db[_0xe176('0x52')][_0xe176('0x33')](_0x3e68fd,{'type':db[_0xe176('0x55')][_0xe176('0x56')][_0xe176('0x57')],'raw':!![],'transaction':_0x19efb9});})[_0xe176('0x3f')](function(_0x2dce7f){var _0x370fad=_[_0xe176('0x2c')](_0x2dce7f,function(_0x505dc2){return Number(_0x505dc2[_0xe176('0x5f')]);});return db[_0xe176('0x60')][_0xe176('0x51')]({'where':{'UserId':{'$in':_0x12552a},'ChatQueueId':{'$in':_0x370fad}},'transaction':_0x19efb9});})[_0xe176('0x3f')](function(){var _0x36adac=_0xe176('0x61')+_0x254923;return db['sequelize'][_0xe176('0x33')](_0x36adac,{'type':db[_0xe176('0x55')][_0xe176('0x56')]['SELECT'],'raw':!![],'transaction':_0x19efb9});})[_0xe176('0x3f')](function(_0x4c3e05){var _0x33293b=_[_0xe176('0x2c')](_0x4c3e05,function(_0x56b4d9){return Number(_0x56b4d9[_0xe176('0x62')]);});return db['UserFaxQueue'][_0xe176('0x51')]({'where':{'UserId':{'$in':_0x12552a},'FaxQueueId':{'$in':_0x33293b}},'transaction':_0x19efb9});})[_0xe176('0x3f')](function(){var _0x5aabfd=_0xe176('0x63')+_0x254923;return db[_0xe176('0x52')][_0xe176('0x33')](_0x5aabfd,{'type':db[_0xe176('0x55')][_0xe176('0x56')]['SELECT'],'raw':!![],'transaction':_0x19efb9});})[_0xe176('0x3f')](function(_0x1bf8d2){var _0x325e6f=_[_0xe176('0x2c')](_0x1bf8d2,function(_0x181d14){return Number(_0x181d14['OpenchannelQueueId']);});return db['UserOpenchannelQueue'][_0xe176('0x51')]({'where':{'UserId':{'$in':_0x12552a},'OpenchannelQueueId':{'$in':_0x325e6f}},'transaction':_0x19efb9});})[_0xe176('0x3f')](function(){var _0x2dad4e=_0xe176('0x64')+_0x254923;return db[_0xe176('0x52')][_0xe176('0x33')](_0x2dad4e,{'type':db[_0xe176('0x55')][_0xe176('0x56')][_0xe176('0x57')],'raw':!![],'transaction':_0x19efb9});})[_0xe176('0x3f')](function(_0x2eeace){var _0x15c709=_[_0xe176('0x2c')](_0x2eeace,function(_0x58b890){return Number(_0x58b890[_0xe176('0x65')]);});return db[_0xe176('0x66')][_0xe176('0x51')]({'where':{'UserId':{'$in':_0x12552a},'WhatsappQueueId':{'$in':_0x15c709}},'transaction':_0x19efb9});})[_0xe176('0x3f')](function(){return db[_0xe176('0x67')][_0xe176('0x4c')]({'where':{'TeamId':_0x254923}});})[_0xe176('0x3f')](function(_0x4ed57a){if(_0x4ed57a===null){return;}return db['UserVoicePrefix']['destroy']({'where':{'UserId':{'$in':_0x12552a},'VoicePrefixId':_0x4ed57a[_0xe176('0x68')]},'transaction':_0x19efb9});})[_0xe176('0x3f')](function(){return db[_0xe176('0x2d')][_0xe176('0x51')]({'where':{'id':_0x254923},'cascade':!![],'transaction':_0x19efb9});})[_0xe176('0x3f')](function(_0x5d3069){if(_0x5d3069===0x0){_0x2378c5[_0xe176('0x26')](0x194);}else{return db[_0xe176('0x4e')][_0xe176('0x51')]({'where':{'type':_0xe176('0x69'),'resourceId':_0x254923},'cascade':!![],'transaction':_0x19efb9})[_0xe176('0x3f')](function(){_0x2378c5[_0xe176('0x1f')](0xcc)[_0xe176('0x19')]();});}})[_0xe176('0x43')](function(_0x15204c){_0x2378c5[_0xe176('0x1f')](0x1f4)[_0xe176('0x2a')](_0x15204c);});});};exports[_0xe176('0x6a')]=function(_0xebe35b,_0x5af394,_0x1cf5ed){return db[_0xe176('0x2d')]['findOne']({'where':{'id':_0xebe35b[_0xe176('0x45')]['id']}})[_0xe176('0x3f')](handleEntityNotFound(_0x5af394,null))[_0xe176('0x3f')](function(_0x3ddbd0){if(!_0xebe35b[_0xe176('0x33')][_0xe176('0x6b')]||!utils[_0xe176('0x6c')](_0xebe35b[_0xe176('0x33')][_0xe176('0x6b')])){throw new db['Sequelize'][(_0xe176('0x6d'))](_0xe176('0x6e'));}var _0x183e97={};var _0x31d4c9={};_0x31d4c9[_0xe176('0x31')]=_[_0xe176('0x32')](db[_[_0xe176('0x6f')](_0xebe35b[_0xe176('0x33')][_0xe176('0x6b')][_0xe176('0x70')]())+'Queue'][_0xe176('0x2e')]);_0x31d4c9[_0xe176('0x33')]=_['keys'](_0xebe35b['query']);_0x31d4c9[_0xe176('0x34')]=_[_0xe176('0x46')](_0x31d4c9[_0xe176('0x31')],_0x31d4c9[_0xe176('0x33')]);_0x183e97[_0xe176('0x35')]=_['intersection'](_0x31d4c9['model'],qs[_0xe176('0x36')](_0xebe35b[_0xe176('0x33')][_0xe176('0x36')]));_0x183e97[_0xe176('0x35')]=_0x183e97[_0xe176('0x35')][_0xe176('0x37')]?_0x183e97[_0xe176('0x35')]:_0x31d4c9[_0xe176('0x31')];_0x183e97['limit']=qs[_0xe176('0x1e')](_0xebe35b[_0xe176('0x33')]['limit']);_0x183e97[_0xe176('0x1b')]=qs[_0xe176('0x1b')](_0xebe35b[_0xe176('0x33')][_0xe176('0x1b')]);_0x183e97[_0xe176('0x71')]=qs[_0xe176('0x3a')](_0xebe35b[_0xe176('0x33')][_0xe176('0x3a')]);_0x183e97[_0xe176('0x3b')]=qs[_0xe176('0x34')](_[_0xe176('0x72')](_0xebe35b[_0xe176('0x33')],_0x31d4c9[_0xe176('0x34')]));_0x183e97=_['merge']({},_0x183e97,_0xebe35b['options']);return _0x3ddbd0[_0xe176('0x49')+_[_0xe176('0x6f')](_0xebe35b['query'][_0xe176('0x6b')][_0xe176('0x70')]())+_0xe176('0x73')](_0x183e97);})[_0xe176('0x3f')](respondWithResult(_0x5af394,null))[_0xe176('0x43')](handleError(_0x5af394,null));};exports[_0xe176('0x74')]=function(_0x3bb7e8,_0x35ba84,_0x430b75){return db[_0xe176('0x2d')][_0xe176('0x75')]({'where':{'id':_0x3bb7e8[_0xe176('0x45')]['id']}})[_0xe176('0x3f')](function(_0x3829e3){if(_0x3829e3){if(!_0x3bb7e8[_0xe176('0x50')][_0xe176('0x6b')]||!utils[_0xe176('0x6c')](_0x3bb7e8[_0xe176('0x50')]['channel'])){throw new db[(_0xe176('0x55'))][(_0xe176('0x6d'))](_0xe176('0x6e'));}return _0x3829e3[_0xe176('0x76')+_[_0xe176('0x6f')](_0x3bb7e8[_0xe176('0x50')][_0xe176('0x6b')][_0xe176('0x70')]())+_0xe176('0x73')](_0x3bb7e8['body']['ids']);}return null;})['then'](handleEntityNotFound(_0x35ba84,null))[_0xe176('0x3f')](respondWithStatusCode(_0x35ba84,null))[_0xe176('0x43')](handleError(_0x35ba84,null));};exports[_0xe176('0x77')]=function(_0x12e809,_0x376c83,_0x3eca14){return db[_0xe176('0x2d')]['findOne']({'where':{'id':_0x12e809['params']['id']}})['then'](function(_0x5cf8bf){if(_0x5cf8bf){if(!_0x12e809[_0xe176('0x33')][_0xe176('0x6b')]||!utils[_0xe176('0x6c')](_0x12e809[_0xe176('0x33')][_0xe176('0x6b')])){throw new db['Sequelize'][(_0xe176('0x6d'))](_0xe176('0x6e'));}return _0x5cf8bf['remove'+_['capitalize'](_0x12e809[_0xe176('0x33')][_0xe176('0x6b')][_0xe176('0x70')]())+_0xe176('0x73')](_0x12e809[_0xe176('0x33')][_0xe176('0x78')]);}return null;})[_0xe176('0x3f')](handleEntityNotFound(_0x376c83,null))[_0xe176('0x3f')](respondWithStatusCode(_0x376c83,null))[_0xe176('0x43')](handleError(_0x376c83,null));};exports[_0xe176('0x79')]=function(_0x5151fb,_0x167001){var _0x242dd5=_[_0xe176('0x7a')](_0x5151fb['body']['ids'])?_0x5151fb['body'][_0xe176('0x78')]:[_0x5151fb['body'][_0xe176('0x78')]];var _0x1d1a43=_0x5151fb[_0xe176('0x45')]['id'];return db['Team'][_0xe176('0x4c')]({'where':{'id':_0x1d1a43}})[_0xe176('0x3f')](handleEntityNotFound(_0x167001,null))[_0xe176('0x3f')](function(_0x5a08a3){if(_0x5a08a3){var _0x1b8264=[_0xe176('0x7b'),'Chat',_0xe176('0x7c'),'Sms','Fax',_0xe176('0x7d'),_0xe176('0x7e')];return db['sequelize'][_0xe176('0x53')](function(_0x269d17){var _0x3129e1=_[_0xe176('0x2c')](_0x1b8264,function(_0x45064b){var _0x307d37={'attributes':['id',_0xe176('0x29')]};if(_0x45064b===_0xe176('0x7b')){_0x307d37[_0xe176('0x7f')]={'attributes':[_0xe176('0x80')]};}return _0x5a08a3[_0xe176('0x49')+_0x45064b+_0xe176('0x73')](_0x307d37)[_0xe176('0x3f')](function(_0xb694b7){var _0x5900f1=_[_0xe176('0x2c')](_0xb694b7,function(_0x3cafb2){var _0xeae6f5=_[_0xe176('0x2c')](_0x242dd5,function(_0x3d7b04){var _0xa828b7={'where':{'UserId':_0x3d7b04,[_0x45064b+'QueueId']:_0x3cafb2['id']},'transaction':_0x269d17};if(_0x45064b==='Voice'){_0xa828b7[_0xe176('0x16')]={'penalty':_0x3cafb2['TeamVoiceQueue']['penalty']};}return db[_0xe176('0x81')+_0x45064b+'Queue']['findOrCreate'](_0xa828b7)[_0xe176('0x3f')](function(){socket[_0xe176('0x82')](_0xe176('0x4b')+_0x45064b+_0xe176('0x83'),{'UserId':_0x3d7b04,[_0x45064b+_0xe176('0x84')]:_0x3cafb2['id']});if(_0x45064b!==_0xe176('0x7b')){return;}return db['User'][_0xe176('0x41')]({'where':{'id':_0x242dd5,'online':0x1},'attributes':['id',_0xe176('0x29'),_0xe176('0x85'),_0xe176('0x86'),_0xe176('0x87')],'raw':!![]})['then'](function(_0xb1295a){var _0x122455=_[_0xe176('0x2c')](_0xb1295a,function(_0x277c1f){return db[_0xe176('0x88')][_0xe176('0x89')]({'membername':_0x277c1f[_0xe176('0x29')],'UserId':_0x277c1f['id'],'queue_name':_0x3cafb2[_0xe176('0x29')],'VoiceQueueId':_0x3cafb2['id'],'interface':_[_0xe176('0x8a')](_0x277c1f[_0xe176('0x87')])?util[_0xe176('0x8b')](_0xe176('0x8c'),_0x277c1f['name']):_0x277c1f[_0xe176('0x87')],'paused':_0x277c1f[_0xe176('0x86')]||![],'penalty':_0x3cafb2['TeamVoiceQueue'][_0xe176('0x80')]},{'transaction':_0x269d17});});return Promise[_0xe176('0x8d')](_0x122455);});});});return Promise['all'](_0xeae6f5);});return Promise[_0xe176('0x8d')](_0x5900f1);})['then'](function(){return db[_0xe176('0x67')][_0xe176('0x75')]({'where':{'teamId':_0x1d1a43}})['then'](function(_0x22e807){if(_0x22e807){var _0x216f79=_[_0xe176('0x2c')](_0x242dd5,function(_0x284a3c){db[_0xe176('0x8e')]['upsert']({'UserId':_0x284a3c,'VoicePrefixId':_0x22e807['VoicePrefixId']});});return Promise[_0xe176('0x8d')](_0x216f79);}});});});return Promise[_0xe176('0x8d')](_0x3129e1)[_0xe176('0x3f')](function(){return _0x5a08a3[_0xe176('0x79')](_0x242dd5,{'transaction':_0x269d17})[_0xe176('0x8f')](function(_0x2697de){return _0x2697de;});});});}})[_0xe176('0x3f')](respondWithResult(_0x167001,null))[_0xe176('0x43')](handleError(_0x167001,null));};exports[_0xe176('0x90')]=function(_0x5c7564,_0x138a73){var _0x59fc58=_[_0xe176('0x7a')](_0x5c7564['query'][_0xe176('0x78')])?_0x5c7564[_0xe176('0x33')][_0xe176('0x78')]:[_0x5c7564[_0xe176('0x33')]['ids']];var _0x363790=_0x5c7564[_0xe176('0x45')]['id'];return db[_0xe176('0x2d')][_0xe176('0x4c')]({'where':{'id':_0x363790}})[_0xe176('0x3f')](handleEntityNotFound(_0x138a73,null))[_0xe176('0x3f')](function(_0x43dfd8){if(_0x43dfd8){var _0x4345e4=[_0xe176('0x7b'),_0xe176('0x91'),_0xe176('0x7c'),'Sms',_0xe176('0x92'),_0xe176('0x7d'),_0xe176('0x7e')];return db[_0xe176('0x52')][_0xe176('0x53')](function(_0x68105d){var _0x342a5b=_[_0xe176('0x2c')](_0x4345e4,function(_0x4ffbaa){var _0x57e1db={'attributes':['id',_0xe176('0x29')]};return _0x43dfd8[_0xe176('0x49')+_0x4ffbaa+_0xe176('0x73')](_0x57e1db)['then'](function(_0x1fb8f2){var _0x4f31cb=_[_0xe176('0x2c')](_0x1fb8f2,function(_0x121833){return _0x121833['removeAgents'](_0x59fc58,{'transaction':_0x68105d})[_0xe176('0x3f')](function(){var _0x5e2477=_['map'](_0x59fc58,function(_0x3fb278){socket[_0xe176('0x82')](_0xe176('0x4b')+_0x4ffbaa+_0xe176('0x93'),{'UserId':Number(_0x3fb278),[_0x4ffbaa+_0xe176('0x84')]:_0x121833['id']});if(_0x4ffbaa!==_0xe176('0x7b')){return;}return db[_0xe176('0x88')][_0xe176('0x51')]({'where':{'VoiceQueueId':_0x121833['id'],'UserId':_0x3fb278},'transaction':_0x68105d});});return Promise[_0xe176('0x8d')](_0x5e2477);});});return Promise[_0xe176('0x8d')](_0x4f31cb);});});return Promise['all'](_0x342a5b)['then'](function(){return _0x43dfd8[_0xe176('0x90')](_0x59fc58,{'transaction':_0x68105d});})['then'](function(){return db[_0xe176('0x67')]['findOne']({'where':{'teamId':_0x363790}})[_0xe176('0x3f')](function(_0x50507b){if(_0x50507b){var _0x5c614c=_[_0xe176('0x2c')](_0x59fc58,function(_0x1b66f9){db['UserVoicePrefix'][_0xe176('0x51')]({'where':{'UserId':_0x1b66f9,'VoicePrefixId':_0x50507b['VoicePrefixId']}});});return Promise[_0xe176('0x8d')](_0x5c614c);}});});});}})['then'](respondWithStatusCode(_0x138a73,null))[_0xe176('0x43')](handleError(_0x138a73,null));};exports[_0xe176('0x94')]=function(_0x4fd7e4,_0x58d914,_0x183927){var _0xaa25f2={};var _0x2d97f3={};var _0x51c318;var _0x12ebd8;return db['Team']['findOne']({'where':{'id':_0x4fd7e4[_0xe176('0x45')]['id']}})[_0xe176('0x3f')](handleEntityNotFound(_0x58d914,null))[_0xe176('0x3f')](function(_0x25d3b4){if(_0x25d3b4){_0x51c318=_0x25d3b4;_0x2d97f3[_0xe176('0x31')]=_['keys'](db[_0xe176('0x81')][_0xe176('0x2e')]);_0x2d97f3[_0xe176('0x33')]=_['keys'](_0x4fd7e4[_0xe176('0x33')]);_0x2d97f3['filters']=_[_0xe176('0x46')](_0x2d97f3[_0xe176('0x31')],_0x2d97f3[_0xe176('0x33')]);_0xaa25f2[_0xe176('0x35')]=_[_0xe176('0x46')](_0x2d97f3[_0xe176('0x31')],qs[_0xe176('0x36')](_0x4fd7e4[_0xe176('0x33')][_0xe176('0x36')]));_0xaa25f2['attributes']=_0xaa25f2[_0xe176('0x35')][_0xe176('0x37')]?_0xaa25f2['attributes']:_0x2d97f3['model'];_0xaa25f2['order']=qs[_0xe176('0x3a')](_0x4fd7e4[_0xe176('0x33')][_0xe176('0x3a')]);_0xaa25f2[_0xe176('0x3b')]=qs[_0xe176('0x34')](_[_0xe176('0x72')](_0x4fd7e4['query'],_0x2d97f3[_0xe176('0x34')]));if(_0x4fd7e4[_0xe176('0x33')]['filter']){_0xaa25f2[_0xe176('0x3b')]=_[_0xe176('0x3c')](_0xaa25f2[_0xe176('0x3b')],{'$or':_[_0xe176('0x2c')](_0xaa25f2[_0xe176('0x35')],function(_0x13d8ca){var _0x1dae5d={};_0x1dae5d[_0x13d8ca]={'$like':'%'+_0x4fd7e4['query'][_0xe176('0x95')]+'%'};return _0x1dae5d;})});}_0xaa25f2=_[_0xe176('0x3c')]({},_0xaa25f2,_0x4fd7e4[_0xe176('0x3e')]);return _0x51c318['getAgents'](_0xaa25f2);}})['then'](function(_0x51d768){if(_0x51d768){_0x12ebd8=_0x51d768[_0xe176('0x37')];if(!_0x4fd7e4[_0xe176('0x33')][_0xe176('0x38')](_0xe176('0x39'))){_0xaa25f2['limit']=qs[_0xe176('0x1e')](_0x4fd7e4[_0xe176('0x33')][_0xe176('0x1e')]);_0xaa25f2[_0xe176('0x1b')]=qs[_0xe176('0x1b')](_0x4fd7e4['query'][_0xe176('0x1b')]);}return _0x51c318['getAgents'](_0xaa25f2);}})[_0xe176('0x3f')](function(_0x1adaae){if(_0x1adaae){return _0x1adaae?{'count':_0x12ebd8,'rows':_0x1adaae}:null;}})[_0xe176('0x3f')](respondWithResult(_0x58d914,null))[_0xe176('0x43')](handleError(_0x58d914,null));};
\ No newline at end of file
index 7290cc7..a0cce10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd808=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Team'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0xd808,0x11f));var _0x8d80=function(_0x10c51f,_0x11270f){_0x10c51f=_0x10c51f-0x0;var _0x56a0cd=_0xd808[_0x10c51f];return _0x56a0cd;};'use strict';var EventEmitter=require(_0x8d80('0x0'));var Team=require(_0x8d80('0x1'))['db'][_0x8d80('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x8d80('0x3')](0x0);var events={'afterCreate':_0x8d80('0x4'),'afterUpdate':'update','afterDestroy':_0x8d80('0x5')};function emitEvent(_0x373d0a){return function(_0x142e5c,_0x48a25a,_0x43d824){TeamEvents[_0x8d80('0x6')](_0x373d0a+':'+_0x142e5c['id'],_0x142e5c);TeamEvents['emit'](_0x373d0a,_0x142e5c);_0x43d824(null);};}for(var e in events){if(events[_0x8d80('0x7')](e)){var event=events[e];Team[_0x8d80('0x8')](e,emitEvent(event));}}module[_0x8d80('0x9')]=TeamEvents;
\ No newline at end of file
+var _0x973a=['exports','events','../../mysqldb','save','emit','hasOwnProperty'];(function(_0x17b27b,_0x5e76b3){var _0x392373=function(_0xf800a9){while(--_0xf800a9){_0x17b27b['push'](_0x17b27b['shift']());}};_0x392373(++_0x5e76b3);}(_0x973a,0x187));var _0xa973=function(_0x12e512,_0x436395){_0x12e512=_0x12e512-0x0;var _0x4f4f28=_0x973a[_0x12e512];return _0x4f4f28;};'use strict';var EventEmitter=require(_0xa973('0x0'));var Team=require(_0xa973('0x1'))['db']['Team'];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa973('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x456b3f){return function(_0x575da9,_0x494d8f,_0x1ad375){TeamEvents['emit'](_0x456b3f+':'+_0x575da9['id'],_0x575da9);TeamEvents[_0xa973('0x3')](_0x456b3f,_0x575da9);_0x1ad375(null);};}for(var e in events){if(events[_0xa973('0x4')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0xa973('0x5')]=TeamEvents;
\ No newline at end of file
index 2ace2c3..aa62745 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1234=['lodash','api','moment','bluebird','request-promise','path','../../config/environment','./team.attributes','exports','Team'];(function(_0x319687,_0x268ada){var _0x153252=function(_0x3c3a76){while(--_0x3c3a76){_0x319687['push'](_0x319687['shift']());}};_0x153252(++_0x268ada);}(_0x1234,0x14a));var _0x4123=function(_0x15df53,_0x55b292){_0x15df53=_0x15df53-0x0;var _0x10eb13=_0x1234[_0x15df53];return _0x10eb13;};'use strict';var _=require(_0x4123('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x4123('0x1'));var moment=require(_0x4123('0x2'));var BPromise=require(_0x4123('0x3'));var rp=require(_0x4123('0x4'));var fs=require('fs');var path=require(_0x4123('0x5'));var rimraf=require('rimraf');var config=require(_0x4123('0x6'));var attributes=require(_0x4123('0x7'));module[_0x4123('0x8')]=function(_0x3985f0,_0x4bef2f){return _0x3985f0['define'](_0x4123('0x9'),attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc57e=['../../config/environment','./team.attributes','exports','define','Team','teams','lodash','util','../../config/logger','moment','bluebird','path','rimraf'];(function(_0x3f2872,_0x4a1ab6){var _0x1a022f=function(_0x3a9526){while(--_0x3a9526){_0x3f2872['push'](_0x3f2872['shift']());}};_0x1a022f(++_0x4a1ab6);}(_0xc57e,0xbc));var _0xec57=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xc57e[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0xec57('0x0'));var util=require(_0xec57('0x1'));var logger=require(_0xec57('0x2'))('api');var moment=require(_0xec57('0x3'));var BPromise=require(_0xec57('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xec57('0x5'));var rimraf=require(_0xec57('0x6'));var config=require(_0xec57('0x7'));var attributes=require(_0xec57('0x8'));module[_0xec57('0x9')]=function(_0x3f0bd4,_0x355d55){return _0x3f0bd4[_0xec57('0xa')](_0xec57('0xb'),attributes,{'tableName':_0xec57('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ca14f5d..c5193c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x414d=['defaults','localhost','socket.io-emitter','request','then','info','Team,\x20%s,\x20%s','debug','Team,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','client','redis'];(function(_0x24259d,_0x64a194){var _0x5a701=function(_0x204516){while(--_0x204516){_0x24259d['push'](_0x24259d['shift']());}};_0x5a701(++_0x64a194);}(_0x414d,0x154));var _0xd414=function(_0x4c6e4a,_0x263ab8){_0x4c6e4a=_0x4c6e4a-0x0;var _0x3d69f4=_0x414d[_0x4c6e4a];return _0x3d69f4;};'use strict';var _=require(_0xd414('0x0'));var util=require(_0xd414('0x1'));var moment=require(_0xd414('0x2'));var BPromise=require(_0xd414('0x3'));var rs=require(_0xd414('0x4'));var fs=require('fs');var Redis=require(_0xd414('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd414('0x6'));var logger=require(_0xd414('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd414('0x8')]['http']({'port':0x232a});config[_0xd414('0x9')]=_[_0xd414('0xa')](config[_0xd414('0x9')],{'host':_0xd414('0xb'),'port':0x18eb});var socket=require(_0xd414('0xc'))(new Redis(config[_0xd414('0x9')]));require('./team.socket')['register'](socket);function respondWithRpcPromise(_0xec8ca5,_0x71b156,_0x27cb54){return new BPromise(function(_0x20ca8,_0x3cf488){return client[_0xd414('0xd')](_0xec8ca5,_0x27cb54)[_0xd414('0xe')](function(_0x310767){logger[_0xd414('0xf')](_0xd414('0x10'),_0x71b156,'request\x20sent');logger[_0xd414('0x11')](_0xd414('0x12'),_0x71b156,_0xd414('0x13'),JSON[_0xd414('0x14')](_0x310767));if(_0x310767['error']){if(_0x310767[_0xd414('0x15')]['code']===0x1f4){logger[_0xd414('0x15')]('Team,\x20%s,\x20%s',_0x71b156,_0x310767[_0xd414('0x15')][_0xd414('0x16')]);return _0x3cf488(_0x310767[_0xd414('0x15')][_0xd414('0x16')]);}logger[_0xd414('0x15')](_0xd414('0x10'),_0x71b156,_0x310767[_0xd414('0x15')]['message']);return _0x20ca8(_0x310767['error'][_0xd414('0x16')]);}else{logger['info']('Team,\x20%s,\x20%s',_0x71b156,_0xd414('0x13'));_0x20ca8(_0x310767[_0xd414('0x17')][_0xd414('0x16')]);}})[_0xd414('0x18')](function(_0x3c0b1b){logger[_0xd414('0x15')](_0xd414('0x10'),_0x71b156,_0x3c0b1b);_0x3cf488(_0x3c0b1b);});});}
\ No newline at end of file
+var _0x0452=['./team.socket','register','then','info','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','Team,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0452,0x1f4));var _0x2045=function(_0x2be97e,_0x485008){_0x2be97e=_0x2be97e-0x0;var _0x2180ab=_0x0452[_0x2be97e];return _0x2180ab;};'use strict';var _=require('lodash');var util=require(_0x2045('0x0'));var moment=require(_0x2045('0x1'));var BPromise=require(_0x2045('0x2'));var rs=require(_0x2045('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2045('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2045('0x5'))(_0x2045('0x6'));var config=require(_0x2045('0x7'));var jayson=require(_0x2045('0x8'));var client=jayson[_0x2045('0x9')][_0x2045('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x2045('0xb')],{'host':_0x2045('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2045('0xb')]));require(_0x2045('0xd'))[_0x2045('0xe')](socket);function respondWithRpcPromise(_0xb5954,_0x3c5dd4,_0x1ffd29){return new BPromise(function(_0x37224e,_0x42c7d6){return client['request'](_0xb5954,_0x1ffd29)[_0x2045('0xf')](function(_0x41bb27){logger[_0x2045('0x10')]('Team,\x20%s,\x20%s',_0x3c5dd4,_0x2045('0x11'));logger[_0x2045('0x12')](_0x2045('0x13'),_0x3c5dd4,_0x2045('0x11'),JSON[_0x2045('0x14')](_0x41bb27));if(_0x41bb27[_0x2045('0x15')]){if(_0x41bb27[_0x2045('0x15')][_0x2045('0x16')]===0x1f4){logger['error'](_0x2045('0x17'),_0x3c5dd4,_0x41bb27[_0x2045('0x15')][_0x2045('0x18')]);return _0x42c7d6(_0x41bb27[_0x2045('0x15')][_0x2045('0x18')]);}logger['error']('Team,\x20%s,\x20%s',_0x3c5dd4,_0x41bb27[_0x2045('0x15')][_0x2045('0x18')]);return _0x37224e(_0x41bb27[_0x2045('0x15')][_0x2045('0x18')]);}else{logger[_0x2045('0x10')](_0x2045('0x17'),_0x3c5dd4,_0x2045('0x11'));_0x37224e(_0x41bb27[_0x2045('0x19')][_0x2045('0x18')]);}})[_0x2045('0x1a')](function(_0x543c62){logger[_0x2045('0x15')]('Team,\x20%s,\x20%s',_0x3c5dd4,_0x543c62);_0x42c7d6(_0x543c62);});});}
\ No newline at end of file
index 3785647..22a2ed5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fad=['register','length','team:','./team.events','save','remove','emit','removeListener'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x4fad,0xcb));var _0xd4fa=function(_0xfd2cc7,_0x40f00b){_0xfd2cc7=_0xfd2cc7-0x0;var _0x2d99e2=_0x4fad[_0xfd2cc7];return _0x2d99e2;};'use strict';var TeamEvents=require(_0xd4fa('0x0'));var events=[_0xd4fa('0x1'),_0xd4fa('0x2'),'update'];function createListener(_0x22bcd4,_0x3711b4){return function(_0x174360){_0x3711b4[_0xd4fa('0x3')](_0x22bcd4,_0x174360);};}function removeListener(_0x419a9c,_0x3903a1){return function(){TeamEvents[_0xd4fa('0x4')](_0x419a9c,_0x3903a1);};}exports[_0xd4fa('0x5')]=function(_0x597fbe){for(var _0x2d4e07=0x0,_0x52b426=events[_0xd4fa('0x6')];_0x2d4e07<_0x52b426;_0x2d4e07++){var _0x19a910=events[_0x2d4e07];var _0x155c09=createListener(_0xd4fa('0x7')+_0x19a910,_0x597fbe);TeamEvents['on'](_0x19a910,_0x155c09);}};
\ No newline at end of file
+var _0xf29c=['removeListener','length','team:','./team.events','save','remove','emit'];(function(_0x189307,_0x188a83){var _0xb5dd95=function(_0xad5ffa){while(--_0xad5ffa){_0x189307['push'](_0x189307['shift']());}};_0xb5dd95(++_0x188a83);}(_0xf29c,0xf1));var _0xcf29=function(_0x411fcb,_0x13a075){_0x411fcb=_0x411fcb-0x0;var _0x2f12b6=_0xf29c[_0x411fcb];return _0x2f12b6;};'use strict';var TeamEvents=require(_0xcf29('0x0'));var events=[_0xcf29('0x1'),_0xcf29('0x2'),'update'];function createListener(_0x32ccb4,_0x4e0124){return function(_0x54dca0){_0x4e0124[_0xcf29('0x3')](_0x32ccb4,_0x54dca0);};}function removeListener(_0x502c15,_0x429d32){return function(){TeamEvents[_0xcf29('0x4')](_0x502c15,_0x429d32);};}exports['register']=function(_0x25e057){for(var _0x113126=0x0,_0x517477=events[_0xcf29('0x5')];_0x113126<_0x517477;_0x113126++){var _0x1ef44e=events[_0x113126];var _0xa47b6a=createListener(_0xcf29('0x6')+_0x1ef44e,_0x25e057);TeamEvents['on'](_0x1ef44e,_0xa47b6a);}};
\ No newline at end of file
diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js b/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
new file mode 100644 (file)
index 0000000..692c582
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0xac92=['sequelize','exports','INTEGER'];(function(_0x186d17,_0x9fa8ef){var _0x5d4b89=function(_0x57bd70){while(--_0x57bd70){_0x186d17['push'](_0x186d17['shift']());}};_0x5d4b89(++_0x9fa8ef);}(_0xac92,0x7b));var _0x2ac9=function(_0x50f5f8,_0x44f3a2){_0x50f5f8=_0x50f5f8-0x0;var _0x27d589=_0xac92[_0x50f5f8];return _0x27d589;};'use strict';var Sequelize=require(_0x2ac9('0x0'));module[_0x2ac9('0x1')]={'TeamId':{'type':Sequelize[_0x2ac9('0x2')]},'VoicePrefixId':{'type':Sequelize[_0x2ac9('0x2')]}};
\ No newline at end of file
diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.model.js b/server/api/teamVoicePrefix/teamVoicePrefix.model.js
new file mode 100644 (file)
index 0000000..528d376
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0xbdfb=['TeamVoicePrefix','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x46ac8f,_0x1d349d){var _0xf90a67=function(_0x3cceb6){while(--_0x3cceb6){_0x46ac8f['push'](_0x46ac8f['shift']());}};_0xf90a67(++_0x1d349d);}(_0xbdfb,0x1ef));var _0xbbdf=function(_0x108d5f,_0x33f82d){_0x108d5f=_0x108d5f-0x0;var _0x456ea3=_0xbdfb[_0x108d5f];return _0x456ea3;};'use strict';var _=require(_0xbbdf('0x0'));var util=require(_0xbbdf('0x1'));var logger=require(_0xbbdf('0x2'))(_0xbbdf('0x3'));var moment=require(_0xbbdf('0x4'));var BPromise=require(_0xbbdf('0x5'));var rp=require(_0xbbdf('0x6'));var fs=require('fs');var path=require(_0xbbdf('0x7'));var rimraf=require(_0xbbdf('0x8'));var config=require(_0xbbdf('0x9'));var attributes=require('./teamVoicePrefix.attributes');module[_0xbbdf('0xa')]=function(_0x3184ff,_0x54d048){return _0x3184ff[_0xbbdf('0xb')](_0xbbdf('0xc'),attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b59379e..9bfaa6b 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(_0x18e3a1,_0xd51faa){var _0x69b4a1=function(_0x2509a8){while(--_0x2509a8){_0x18e3a1['push'](_0x18e3a1['shift']());}};_0x69b4a1(++_0xd51faa);}(_0x9c44,0x178));var _0x49c4=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x9c44[_0x2064e5];return _0x21a233;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x18525a,_0x39eefa){var _0x215554=function(_0x2676b2){while(--_0x2676b2){_0x18525a['push'](_0x18525a['shift']());}};_0x215554(++_0x39eefa);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 4d49a9f..7175878 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f89=['exports','INTEGER','sequelize'];(function(_0x2e5216,_0x23893f){var _0x4a6e14=function(_0x2679f9){while(--_0x2679f9){_0x2e5216['push'](_0x2e5216['shift']());}};_0x4a6e14(++_0x23893f);}(_0x1f89,0x14c));var _0x91f8=function(_0x2928d4,_0x4fea4c){_0x2928d4=_0x2928d4-0x0;var _0x40d1f5=_0x1f89[_0x2928d4];return _0x40d1f5;};'use strict';var Sequelize=require(_0x91f8('0x0'));module[_0x91f8('0x1')]={'penalty':{'type':Sequelize[_0x91f8('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7148=['INTEGER','exports'];(function(_0x2cd291,_0x19a493){var _0x73a08f=function(_0x224b50){while(--_0x224b50){_0x2cd291['push'](_0x2cd291['shift']());}};_0x73a08f(++_0x19a493);}(_0x7148,0x119));var _0x8714=function(_0x48d4c4,_0x3c934b){_0x48d4c4=_0x48d4c4-0x0;var _0x3ac89b=_0x7148[_0x48d4c4];return _0x3ac89b;};'use strict';var Sequelize=require('sequelize');module[_0x8714('0x0')]={'penalty':{'type':Sequelize[_0x8714('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 78697da..752c4f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','team_has_voice_queues','lodash'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0xe14d,0x1ee));var _0xde14=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xe14d[_0x4dbaad];return _0x226c72;};'use strict';var _=require(_0xde14('0x0'));var util=require(_0xde14('0x1'));var logger=require(_0xde14('0x2'))(_0xde14('0x3'));var moment=require('moment');var BPromise=require(_0xde14('0x4'));var rp=require(_0xde14('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xde14('0x6'));var config=require(_0xde14('0x7'));var attributes=require(_0xde14('0x8'));module[_0xde14('0x9')]=function(_0x461af3,_0xba1514){return _0x461af3['define']('TeamVoiceQueue',attributes,{'tableName':_0xde14('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6bff=['api','bluebird','request-promise','path','rimraf','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue','team_has_voice_queues','lodash','util'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6bff,0xa6));var _0xf6bf=function(_0x370c71,_0x20194b){_0x370c71=_0x370c71-0x0;var _0x34ffc5=_0x6bff[_0x370c71];return _0x34ffc5;};'use strict';var _=require(_0xf6bf('0x0'));var util=require(_0xf6bf('0x1'));var logger=require('../../config/logger')(_0xf6bf('0x2'));var moment=require('moment');var BPromise=require(_0xf6bf('0x3'));var rp=require(_0xf6bf('0x4'));var fs=require('fs');var path=require(_0xf6bf('0x5'));var rimraf=require(_0xf6bf('0x6'));var config=require('../../config/environment');var attributes=require(_0xf6bf('0x7'));module[_0xf6bf('0x8')]=function(_0x27cdda,_0x239d17){return _0x27cdda[_0xf6bf('0x9')](_0xf6bf('0xa'),attributes,{'tableName':_0xf6bf('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 692282c..f43eee3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc997=['then','TeamVoiceQueue,\x20%s,\x20%s','debug','stringify','error','code','message','info','request\x20sent','result','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x41bc53,_0x48fa89){var _0x4a2a35=function(_0x374df3){while(--_0x374df3){_0x41bc53['push'](_0x41bc53['shift']());}};_0x4a2a35(++_0x48fa89);}(_0xc997,0x1ac));var _0x7c99=function(_0x23add2,_0x59a127){_0x23add2=_0x23add2-0x0;var _0x2fdc91=_0xc997[_0x23add2];return _0x2fdc91;};'use strict';var _=require('lodash');var util=require(_0x7c99('0x0'));var moment=require(_0x7c99('0x1'));var BPromise=require(_0x7c99('0x2'));var rs=require(_0x7c99('0x3'));var fs=require('fs');var Redis=require(_0x7c99('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7c99('0x5'));var logger=require(_0x7c99('0x6'))(_0x7c99('0x7'));var config=require(_0x7c99('0x8'));var jayson=require(_0x7c99('0x9'));var client=jayson[_0x7c99('0xa')][_0x7c99('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x36955c,_0x56bf58,_0x6d672){return new BPromise(function(_0x33fd86,_0x905c84){return client['request'](_0x36955c,_0x6d672)[_0x7c99('0xc')](function(_0x9f6f7c){logger['info'](_0x7c99('0xd'),_0x56bf58,'request\x20sent');logger[_0x7c99('0xe')]('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x56bf58,'request\x20sent',JSON[_0x7c99('0xf')](_0x9f6f7c));if(_0x9f6f7c[_0x7c99('0x10')]){if(_0x9f6f7c[_0x7c99('0x10')][_0x7c99('0x11')]===0x1f4){logger[_0x7c99('0x10')](_0x7c99('0xd'),_0x56bf58,_0x9f6f7c[_0x7c99('0x10')][_0x7c99('0x12')]);return _0x905c84(_0x9f6f7c[_0x7c99('0x10')][_0x7c99('0x12')]);}logger[_0x7c99('0x10')](_0x7c99('0xd'),_0x56bf58,_0x9f6f7c[_0x7c99('0x10')][_0x7c99('0x12')]);return _0x33fd86(_0x9f6f7c[_0x7c99('0x10')][_0x7c99('0x12')]);}else{logger[_0x7c99('0x13')](_0x7c99('0xd'),_0x56bf58,_0x7c99('0x14'));_0x33fd86(_0x9f6f7c[_0x7c99('0x15')][_0x7c99('0x12')]);}})['catch'](function(_0x2d80d4){logger['error']('TeamVoiceQueue,\x20%s,\x20%s',_0x56bf58,_0x2d80d4);_0x905c84(_0x2d80d4);});});}
\ No newline at end of file
+var _0xfd2f=['error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','then','info','TeamVoiceQueue,\x20%s,\x20%s','debug'];(function(_0x3e6a06,_0x5ddcd6){var _0xcdc571=function(_0x5b0d06){while(--_0x5b0d06){_0x3e6a06['push'](_0x3e6a06['shift']());}};_0xcdc571(++_0x5ddcd6);}(_0xfd2f,0x14a));var _0xffd2=function(_0x2b4f11,_0x28e679){_0x2b4f11=_0x2b4f11-0x0;var _0xd1b3f8=_0xfd2f[_0x2b4f11];return _0xd1b3f8;};'use strict';var _=require(_0xffd2('0x0'));var util=require(_0xffd2('0x1'));var moment=require(_0xffd2('0x2'));var BPromise=require('bluebird');var rs=require(_0xffd2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xffd2('0x4'))['db'];var utils=require(_0xffd2('0x5'));var logger=require('../../config/logger')(_0xffd2('0x6'));var config=require(_0xffd2('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xd5e752,_0x2074e0,_0x56a1e2){return new BPromise(function(_0x35d327,_0x5b24ca){return client['request'](_0xd5e752,_0x56a1e2)[_0xffd2('0x8')](function(_0x15e33f){logger[_0xffd2('0x9')](_0xffd2('0xa'),_0x2074e0,'request\x20sent');logger[_0xffd2('0xb')]('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x2074e0,'request\x20sent',JSON['stringify'](_0x15e33f));if(_0x15e33f[_0xffd2('0xc')]){if(_0x15e33f[_0xffd2('0xc')][_0xffd2('0xd')]===0x1f4){logger[_0xffd2('0xc')](_0xffd2('0xa'),_0x2074e0,_0x15e33f[_0xffd2('0xc')][_0xffd2('0xe')]);return _0x5b24ca(_0x15e33f['error']['message']);}logger['error']('TeamVoiceQueue,\x20%s,\x20%s',_0x2074e0,_0x15e33f[_0xffd2('0xc')][_0xffd2('0xe')]);return _0x35d327(_0x15e33f['error'][_0xffd2('0xe')]);}else{logger[_0xffd2('0x9')](_0xffd2('0xa'),_0x2074e0,_0xffd2('0xf'));_0x35d327(_0x15e33f[_0xffd2('0x10')][_0xffd2('0xe')]);}})[_0xffd2('0x11')](function(_0x132d38){logger[_0xffd2('0xc')]('TeamVoiceQueue,\x20%s,\x20%s',_0x2074e0,_0x132d38);_0x5b24ca(_0x132d38);});});}
\ No newline at end of file
index f530b16..6bddf72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcbb=['/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0xc02ff2,_0x4a417e){var _0x3cc849=function(_0x14759d){while(--_0x14759d){_0xc02ff2['push'](_0xc02ff2['shift']());}};_0x3cc849(++_0x4a417e);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x19a018,_0x5c996c){_0x19a018=_0x19a018-0x0;var _0x493974=_0xfcbb[_0x19a018];return _0x493974;};'use strict';var multer=require(_0xbfcb('0x0'));var util=require(_0xbfcb('0x1'));var path=require(_0xbfcb('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbfcb('0x3')]();var fs_extra=require(_0xbfcb('0x4'));var auth=require(_0xbfcb('0x5'));var interaction=require(_0xbfcb('0x6'));var config=require(_0xbfcb('0x7'));var controller=require('./template.controller');router['get']('/',auth[_0xbfcb('0x8')](),controller[_0xbfcb('0x9')]);router[_0xbfcb('0xa')](_0xbfcb('0xb'),auth[_0xbfcb('0x8')](),controller[_0xbfcb('0xc')]);router[_0xbfcb('0xd')]('/',auth['isAuthenticated'](),controller[_0xbfcb('0xe')]);router[_0xbfcb('0xf')](_0xbfcb('0xb'),auth['isAuthenticated'](),controller[_0xbfcb('0x10')]);router[_0xbfcb('0x11')](_0xbfcb('0xb'),auth[_0xbfcb('0x8')](),controller[_0xbfcb('0x12')]);module[_0xbfcb('0x13')]=router;
\ No newline at end of file
+var _0x50a5=['exports','multer','util','fs-extra','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated','index','/:id','show','post','create','update','delete'];(function(_0x1d2fd9,_0xe4736a){var _0x5d98b6=function(_0x436d0d){while(--_0x436d0d){_0x1d2fd9['push'](_0x1d2fd9['shift']());}};_0x5d98b6(++_0xe4736a);}(_0x50a5,0xd1));var _0x550a=function(_0x5710de,_0x9ddefa){_0x5710de=_0x5710de-0x0;var _0x2319c0=_0x50a5[_0x5710de];return _0x2319c0;};'use strict';var multer=require(_0x550a('0x0'));var util=require(_0x550a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x550a('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x550a('0x3'));var config=require(_0x550a('0x4'));var controller=require(_0x550a('0x5'));router[_0x550a('0x6')]('/',auth[_0x550a('0x7')](),controller[_0x550a('0x8')]);router[_0x550a('0x6')](_0x550a('0x9'),auth[_0x550a('0x7')](),controller[_0x550a('0xa')]);router[_0x550a('0xb')]('/',auth[_0x550a('0x7')](),controller[_0x550a('0xc')]);router['put'](_0x550a('0x9'),auth[_0x550a('0x7')](),controller[_0x550a('0xd')]);router[_0x550a('0xe')](_0x550a('0x9'),auth[_0x550a('0x7')](),controller['destroy']);module[_0x550a('0xf')]=router;
\ No newline at end of file
index d004ba0..0bb31f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab42=['STRING','TEXT','sequelize','exports'];(function(_0x121350,_0x361f4d){var _0x2e21c7=function(_0x3b6d51){while(--_0x3b6d51){_0x121350['push'](_0x121350['shift']());}};_0x2e21c7(++_0x361f4d);}(_0xab42,0x142));var _0x2ab4=function(_0x3c38d8,_0xa60299){_0x3c38d8=_0x3c38d8-0x0;var _0xdc36fa=_0xab42[_0x3c38d8];return _0xdc36fa;};'use strict';var Sequelize=require(_0x2ab4('0x0'));module[_0x2ab4('0x1')]={'name':{'type':Sequelize[_0x2ab4('0x2')]},'description':{'type':Sequelize[_0x2ab4('0x2')]},'html':{'type':Sequelize[_0x2ab4('0x3')]}};
\ No newline at end of file
+var _0x22cb=['TEXT','sequelize','STRING'];(function(_0x366e75,_0x533d1d){var _0x3b167b=function(_0x3e9f1d){while(--_0x3e9f1d){_0x366e75['push'](_0x366e75['shift']());}};_0x3b167b(++_0x533d1d);}(_0x22cb,0xd3));var _0xb22c=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x22cb[_0x8c43de];return _0xa6591b;};'use strict';var Sequelize=require(_0xb22c('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb22c('0x1')]},'html':{'type':Sequelize[_0xb22c('0x2')]}};
\ No newline at end of file
index efab858..4c01988 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99b3=['apply','reject','save','update','then','destroy','UserProfileResource','error','stack','name','index','map','Template','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','include','findAll','rows','show','params','rawAttributes','includeAll','options','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x4d4058,_0x5b7056){var _0x86eeed=function(_0x519e4a){while(--_0x519e4a){_0x4d4058['push'](_0x4d4058['shift']());}};_0x86eeed(++_0x5b7056);}(_0x99b3,0x1be));var _0x399b=function(_0x24e48c,_0x3b6352){_0x24e48c=_0x24e48c-0x0;var _0x5be973=_0x99b3[_0x24e48c];return _0x5be973;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x399b('0x0'));var zipdir=require(_0x399b('0x1'));var jsonpatch=require(_0x399b('0x2'));var rp=require(_0x399b('0x3'));var moment=require(_0x399b('0x4'));var BPromise=require(_0x399b('0x5'));var Mustache=require('mustache');var util=require(_0x399b('0x6'));var path=require(_0x399b('0x7'));var sox=require('sox');var csv=require(_0x399b('0x8'));var ejs=require(_0x399b('0x9'));var fs=require('fs');var fs_extra=require(_0x399b('0xa'));var _=require(_0x399b('0xb'));var squel=require(_0x399b('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x399b('0xd'));var toCsv=require(_0x399b('0x8'));var querystring=require(_0x399b('0xe'));var Papa=require(_0x399b('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x399b('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x399b('0x11'));var logger=require(_0x399b('0x12'))(_0x399b('0x13'));var utils=require(_0x399b('0x14'));var config=require(_0x399b('0x15'));var licenseUtil=require(_0x399b('0x16'));var db=require(_0x399b('0x17'))['db'];function respondWithStatusCode(_0x19ec82,_0x27c88e){_0x27c88e=_0x27c88e||0xcc;return function(_0x91957){if(_0x91957){return _0x19ec82[_0x399b('0x18')](_0x27c88e);}return _0x19ec82['status'](_0x27c88e)[_0x399b('0x19')]();};}function respondWithResult(_0x1c615d,_0x2e6a42){_0x2e6a42=_0x2e6a42||0xc8;return function(_0x1a53b3){if(_0x1a53b3){return _0x1c615d[_0x399b('0x1a')](_0x2e6a42)[_0x399b('0x1b')](_0x1a53b3);}};}function respondWithFilteredResult(_0x1c1256,_0x471a8c){return function(_0x5ca17a){if(_0x5ca17a){var _0x1e491e=typeof _0x471a8c[_0x399b('0x1c')]===_0x399b('0x1d')&&typeof _0x471a8c[_0x399b('0x1e')]==='undefined';var _0x16989e=_0x5ca17a[_0x399b('0x1f')];var _0x4e9448=_0x1e491e?0x0:_0x471a8c['offset'];var _0x47454d=_0x1e491e?_0x5ca17a[_0x399b('0x1f')]:_0x471a8c['offset']+_0x471a8c[_0x399b('0x1e')];var _0x3631e3;if(_0x47454d>=_0x16989e){_0x47454d=_0x16989e;_0x3631e3=0xc8;}else{_0x3631e3=0xce;}_0x1c1256['status'](_0x3631e3);return _0x1c1256[_0x399b('0x20')](_0x399b('0x21'),_0x4e9448+'-'+_0x47454d+'/'+_0x16989e)[_0x399b('0x1b')](_0x5ca17a);}return null;};}function patchUpdates(_0x215142){return function(_0x1e9402){try{jsonpatch[_0x399b('0x22')](_0x1e9402,_0x215142,!![]);}catch(_0x4a8886){return BPromise[_0x399b('0x23')](_0x4a8886);}return _0x1e9402[_0x399b('0x24')]();};}function saveUpdates(_0x10290f,_0x49ead7){return function(_0x40a050){if(_0x40a050){return _0x40a050[_0x399b('0x25')](_0x10290f)[_0x399b('0x26')](function(_0x89d2fc){return _0x89d2fc;});}return null;};}function removeEntity(_0x54004f,_0x5b8b5a){return function(_0x420ac0){if(_0x420ac0){return _0x420ac0[_0x399b('0x27')]()['then'](function(){var _0x297d6f=_0x420ac0['get']({'plain':!![]});var _0x325f6b='Templates';return db[_0x399b('0x28')][_0x399b('0x27')]({'where':{'type':_0x325f6b,'resourceId':_0x297d6f['id']}})[_0x399b('0x26')](function(){return _0x420ac0;});})[_0x399b('0x26')](function(){_0x54004f[_0x399b('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7b1e3f,_0x374d62){return function(_0x561825){if(!_0x561825){_0x7b1e3f[_0x399b('0x18')](0x194);}return _0x561825;};}function handleError(_0x5099a7,_0x5918c9){_0x5918c9=_0x5918c9||0x1f4;return function(_0x3561a2){logger[_0x399b('0x29')](_0x3561a2[_0x399b('0x2a')]);if(_0x3561a2[_0x399b('0x2b')]){delete _0x3561a2[_0x399b('0x2b')];}_0x5099a7[_0x399b('0x1a')](_0x5918c9)['send'](_0x3561a2);};}exports[_0x399b('0x2c')]=function(_0x41ba3a,_0x541c13){var _0x16601a={},_0x5bac6c={},_0x467be2={'count':0x0,'rows':[]};var _0x46ffa9=_[_0x399b('0x2d')](db[_0x399b('0x2e')]['rawAttributes'],function(_0x596085){return{'name':_0x596085['fieldName'],'type':_0x596085['type'][_0x399b('0x2f')]};});_0x5bac6c[_0x399b('0x30')]=_[_0x399b('0x2d')](_0x46ffa9,_0x399b('0x2b'));_0x5bac6c[_0x399b('0x31')]=_[_0x399b('0x32')](_0x41ba3a['query']);_0x5bac6c[_0x399b('0x33')]=_[_0x399b('0x34')](_0x5bac6c[_0x399b('0x30')],_0x5bac6c[_0x399b('0x31')]);_0x16601a[_0x399b('0x35')]=_['intersection'](_0x5bac6c[_0x399b('0x30')],qs[_0x399b('0x36')](_0x41ba3a[_0x399b('0x31')][_0x399b('0x36')]));_0x16601a['attributes']=_0x16601a[_0x399b('0x35')][_0x399b('0x37')]?_0x16601a[_0x399b('0x35')]:_0x5bac6c[_0x399b('0x30')];if(!_0x41ba3a[_0x399b('0x31')]['hasOwnProperty'](_0x399b('0x38'))){_0x16601a[_0x399b('0x1e')]=qs['limit'](_0x41ba3a[_0x399b('0x31')][_0x399b('0x1e')]);_0x16601a['offset']=qs[_0x399b('0x1c')](_0x41ba3a['query'][_0x399b('0x1c')]);}_0x16601a[_0x399b('0x39')]=qs[_0x399b('0x3a')](_0x41ba3a[_0x399b('0x31')][_0x399b('0x3a')]);_0x16601a['where']=qs[_0x399b('0x33')](_[_0x399b('0x3b')](_0x41ba3a['query'],_0x5bac6c['filters']),_0x46ffa9);if(_0x41ba3a[_0x399b('0x31')][_0x399b('0x3c')]){_0x16601a[_0x399b('0x3d')]=_[_0x399b('0x3e')](_0x16601a[_0x399b('0x3d')],{'$or':_[_0x399b('0x2d')](_0x46ffa9,function(_0x35ce72){if(_0x35ce72['type']!=='VIRTUAL'){var _0xacda28={};_0xacda28[_0x35ce72[_0x399b('0x2b')]]={'$like':'%'+_0x41ba3a['query'][_0x399b('0x3c')]+'%'};return _0xacda28;}})});}_0x16601a=_[_0x399b('0x3e')]({},_0x16601a,_0x41ba3a['options']);var _0x51c642={'where':_0x16601a[_0x399b('0x3d')]};return db[_0x399b('0x2e')][_0x399b('0x1f')](_0x51c642)[_0x399b('0x26')](function(_0x1766f4){_0x467be2[_0x399b('0x1f')]=_0x1766f4;if(_0x41ba3a[_0x399b('0x31')]['includeAll']){_0x16601a[_0x399b('0x3f')]=[{'all':!![]}];}return db[_0x399b('0x2e')][_0x399b('0x40')](_0x16601a);})[_0x399b('0x26')](function(_0x46955f){_0x467be2[_0x399b('0x41')]=_0x46955f;return _0x467be2;})[_0x399b('0x26')](respondWithFilteredResult(_0x541c13,_0x16601a))['catch'](handleError(_0x541c13,null));};exports[_0x399b('0x42')]=function(_0x271c90,_0x167549){var _0xb2a846={'raw':!![],'where':{'id':_0x271c90[_0x399b('0x43')]['id']}},_0x1632d6={};_0x1632d6[_0x399b('0x30')]=_[_0x399b('0x32')](db[_0x399b('0x2e')][_0x399b('0x44')]);_0x1632d6[_0x399b('0x31')]=_[_0x399b('0x32')](_0x271c90[_0x399b('0x31')]);_0x1632d6['filters']=_[_0x399b('0x34')](_0x1632d6[_0x399b('0x30')],_0x1632d6[_0x399b('0x31')]);_0xb2a846[_0x399b('0x35')]=_[_0x399b('0x34')](_0x1632d6['model'],qs[_0x399b('0x36')](_0x271c90['query'][_0x399b('0x36')]));_0xb2a846[_0x399b('0x35')]=_0xb2a846[_0x399b('0x35')][_0x399b('0x37')]?_0xb2a846['attributes']:_0x1632d6[_0x399b('0x30')];if(_0x271c90[_0x399b('0x31')][_0x399b('0x45')]){_0xb2a846['include']=[{'all':!![]}];}_0xb2a846=_['merge']({},_0xb2a846,_0x271c90[_0x399b('0x46')]);return db[_0x399b('0x2e')]['find'](_0xb2a846)[_0x399b('0x26')](handleEntityNotFound(_0x167549,null))[_0x399b('0x26')](respondWithResult(_0x167549,null))[_0x399b('0x47')](handleError(_0x167549,null));};exports['create']=function(_0x27147b,_0x4452bd){return db[_0x399b('0x2e')][_0x399b('0x48')](_0x27147b[_0x399b('0x49')],{})[_0x399b('0x26')](function(_0x14e4b9){var _0x26f799=_0x27147b[_0x399b('0x4a')][_0x399b('0x4b')]({'plain':!![]});if(!_0x26f799)throw new Error(_0x399b('0x4c'));if(_0x26f799[_0x399b('0x4d')]==='user'){var _0x11ba9f=_0x14e4b9[_0x399b('0x4b')]({'plain':!![]});var _0x3544c4='Templates';return db['UserProfileSection'][_0x399b('0x4e')]({'where':{'name':_0x3544c4,'userProfileId':_0x26f799[_0x399b('0x4f')]},'raw':!![]})[_0x399b('0x26')](function(_0x24de61){if(_0x24de61&&_0x24de61['autoAssociation']===0x0){return db[_0x399b('0x28')][_0x399b('0x48')]({'name':_0x11ba9f['name'],'resourceId':_0x11ba9f['id'],'type':_0x24de61[_0x399b('0x2b')],'sectionId':_0x24de61['id']},{})[_0x399b('0x26')](function(){return _0x14e4b9;});}else{return _0x14e4b9;}})[_0x399b('0x47')](function(_0x191475){logger[_0x399b('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x191475);throw _0x191475;});}return _0x14e4b9;})[_0x399b('0x26')](respondWithResult(_0x4452bd,0xc9))[_0x399b('0x47')](handleError(_0x4452bd,null));};exports['update']=function(_0xd9aa58,_0x40fcfa){if(_0xd9aa58[_0x399b('0x49')]['id']){delete _0xd9aa58[_0x399b('0x49')]['id'];}return db['Template']['find']({'where':{'id':_0xd9aa58[_0x399b('0x43')]['id']}})[_0x399b('0x26')](handleEntityNotFound(_0x40fcfa,null))['then'](saveUpdates(_0xd9aa58['body'],null))[_0x399b('0x26')](respondWithResult(_0x40fcfa,null))[_0x399b('0x47')](handleError(_0x40fcfa,null));};exports[_0x399b('0x27')]=function(_0x2c8772,_0x2a1b56){return db[_0x399b('0x2e')][_0x399b('0x4e')]({'where':{'id':_0x2c8772['params']['id']}})[_0x399b('0x26')](handleEntityNotFound(_0x2a1b56,null))['then'](removeEntity(_0x2a1b56,null))[_0x399b('0x47')](handleError(_0x2a1b56,null));};
\ No newline at end of file
+var _0x99dd=['desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','reject','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','sort','where','filter','merge','VIRTUAL','options','include','Template','rows','catch','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Templates','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x3563cc,_0x271a3f){var _0x2837d9=function(_0x501b34){while(--_0x501b34){_0x3563cc['push'](_0x3563cc['shift']());}};_0x2837d9(++_0x271a3f);}(_0x99dd,0x94));var _0xd99d=function(_0x210f17,_0x422fb8){_0x210f17=_0x210f17-0x0;var _0x55428b=_0x99dd[_0x210f17];return _0x55428b;};'use strict';var emlformat=require(_0xd99d('0x0'));var rimraf=require(_0xd99d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd99d('0x2'));var rp=require(_0xd99d('0x3'));var moment=require(_0xd99d('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd99d('0x5'));var path=require(_0xd99d('0x6'));var sox=require(_0xd99d('0x7'));var csv=require(_0xd99d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd99d('0x9'));var _=require(_0xd99d('0xa'));var squel=require(_0xd99d('0xb'));var crypto=require(_0xd99d('0xc'));var jsforce=require(_0xd99d('0xd'));var deskjs=require(_0xd99d('0xe'));var toCsv=require(_0xd99d('0x8'));var querystring=require('querystring');var Papa=require(_0xd99d('0xf'));var Redis=require(_0xd99d('0x10'));var authService=require(_0xd99d('0x11'));var qs=require(_0xd99d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd99d('0x13'));var logger=require(_0xd99d('0x14'))('api');var utils=require(_0xd99d('0x15'));var config=require(_0xd99d('0x16'));var licenseUtil=require(_0xd99d('0x17'));var db=require(_0xd99d('0x18'))['db'];function respondWithStatusCode(_0x4fda3c,_0x2702b0){_0x2702b0=_0x2702b0||0xcc;return function(_0xf73590){if(_0xf73590){return _0x4fda3c[_0xd99d('0x19')](_0x2702b0);}return _0x4fda3c[_0xd99d('0x1a')](_0x2702b0)[_0xd99d('0x1b')]();};}function respondWithResult(_0x2ff995,_0x180dc8){_0x180dc8=_0x180dc8||0xc8;return function(_0x47ac52){if(_0x47ac52){return _0x2ff995[_0xd99d('0x1a')](_0x180dc8)[_0xd99d('0x1c')](_0x47ac52);}};}function respondWithFilteredResult(_0x22a422,_0x4c1376){return function(_0x37260a){if(_0x37260a){var _0x12d0ca=typeof _0x4c1376['offset']===_0xd99d('0x1d')&&typeof _0x4c1376[_0xd99d('0x1e')]===_0xd99d('0x1d');var _0x3fe5c4=_0x37260a['count'];var _0x13dd97=_0x12d0ca?0x0:_0x4c1376[_0xd99d('0x1f')];var _0xfc2a89=_0x12d0ca?_0x37260a[_0xd99d('0x20')]:_0x4c1376[_0xd99d('0x1f')]+_0x4c1376[_0xd99d('0x1e')];var _0xd3e0bc;if(_0xfc2a89>=_0x3fe5c4){_0xfc2a89=_0x3fe5c4;_0xd3e0bc=0xc8;}else{_0xd3e0bc=0xce;}_0x22a422[_0xd99d('0x1a')](_0xd3e0bc);return _0x22a422['set'](_0xd99d('0x21'),_0x13dd97+'-'+_0xfc2a89+'/'+_0x3fe5c4)['json'](_0x37260a);}return null;};}function patchUpdates(_0x1b7813){return function(_0x1d9dcc){try{jsonpatch['apply'](_0x1d9dcc,_0x1b7813,!![]);}catch(_0x1e85cd){return BPromise[_0xd99d('0x22')](_0x1e85cd);}return _0x1d9dcc[_0xd99d('0x23')]();};}function saveUpdates(_0x4f7d67,_0x1041e2){return function(_0x576dac){if(_0x576dac){return _0x576dac[_0xd99d('0x24')](_0x4f7d67)[_0xd99d('0x25')](function(_0x35b3d4){return _0x35b3d4;});}return null;};}function removeEntity(_0x28d78f,_0x3e7926){return function(_0x257782){if(_0x257782){return _0x257782[_0xd99d('0x26')]()[_0xd99d('0x25')](function(){var _0x386b19=_0x257782[_0xd99d('0x27')]({'plain':!![]});var _0x796953='Templates';return db[_0xd99d('0x28')][_0xd99d('0x26')]({'where':{'type':_0x796953,'resourceId':_0x386b19['id']}})[_0xd99d('0x25')](function(){return _0x257782;});})[_0xd99d('0x25')](function(){_0x28d78f['status'](0xcc)[_0xd99d('0x1b')]();});}};}function handleEntityNotFound(_0x2f13de,_0xb2268d){return function(_0x57dc7f){if(!_0x57dc7f){_0x2f13de[_0xd99d('0x19')](0x194);}return _0x57dc7f;};}function handleError(_0x57182d,_0x56f2f0){_0x56f2f0=_0x56f2f0||0x1f4;return function(_0x123299){logger[_0xd99d('0x29')](_0x123299[_0xd99d('0x2a')]);if(_0x123299[_0xd99d('0x2b')]){delete _0x123299[_0xd99d('0x2b')];}_0x57182d['status'](_0x56f2f0)[_0xd99d('0x2c')](_0x123299);};}exports[_0xd99d('0x2d')]=function(_0x4b39b9,_0x528ee2){var _0x2c63ef={},_0xba17d={},_0x5c447e={'count':0x0,'rows':[]};var _0x241bd3=_[_0xd99d('0x2e')](db['Template'][_0xd99d('0x2f')],function(_0x5ec0ee){return{'name':_0x5ec0ee[_0xd99d('0x30')],'type':_0x5ec0ee[_0xd99d('0x31')][_0xd99d('0x32')]};});_0xba17d['model']=_[_0xd99d('0x2e')](_0x241bd3,_0xd99d('0x2b'));_0xba17d[_0xd99d('0x33')]=_[_0xd99d('0x34')](_0x4b39b9['query']);_0xba17d[_0xd99d('0x35')]=_[_0xd99d('0x36')](_0xba17d[_0xd99d('0x37')],_0xba17d[_0xd99d('0x33')]);_0x2c63ef[_0xd99d('0x38')]=_[_0xd99d('0x36')](_0xba17d[_0xd99d('0x37')],qs[_0xd99d('0x39')](_0x4b39b9[_0xd99d('0x33')][_0xd99d('0x39')]));_0x2c63ef['attributes']=_0x2c63ef[_0xd99d('0x38')][_0xd99d('0x3a')]?_0x2c63ef[_0xd99d('0x38')]:_0xba17d[_0xd99d('0x37')];if(!_0x4b39b9['query']['hasOwnProperty']('nolimit')){_0x2c63ef['limit']=qs[_0xd99d('0x1e')](_0x4b39b9[_0xd99d('0x33')][_0xd99d('0x1e')]);_0x2c63ef[_0xd99d('0x1f')]=qs[_0xd99d('0x1f')](_0x4b39b9[_0xd99d('0x33')]['offset']);}_0x2c63ef['order']=qs[_0xd99d('0x3b')](_0x4b39b9[_0xd99d('0x33')][_0xd99d('0x3b')]);_0x2c63ef[_0xd99d('0x3c')]=qs['filters'](_['pick'](_0x4b39b9[_0xd99d('0x33')],_0xba17d[_0xd99d('0x35')]),_0x241bd3);if(_0x4b39b9[_0xd99d('0x33')][_0xd99d('0x3d')]){_0x2c63ef[_0xd99d('0x3c')]=_[_0xd99d('0x3e')](_0x2c63ef[_0xd99d('0x3c')],{'$or':_[_0xd99d('0x2e')](_0x241bd3,function(_0xb9efc0){if(_0xb9efc0[_0xd99d('0x31')]!==_0xd99d('0x3f')){var _0x246b26={};_0x246b26[_0xb9efc0['name']]={'$like':'%'+_0x4b39b9[_0xd99d('0x33')]['filter']+'%'};return _0x246b26;}})});}_0x2c63ef=_[_0xd99d('0x3e')]({},_0x2c63ef,_0x4b39b9[_0xd99d('0x40')]);var _0x5c3ab6={'where':_0x2c63ef[_0xd99d('0x3c')]};return db['Template']['count'](_0x5c3ab6)[_0xd99d('0x25')](function(_0x19424e){_0x5c447e[_0xd99d('0x20')]=_0x19424e;if(_0x4b39b9['query']['includeAll']){_0x2c63ef[_0xd99d('0x41')]=[{'all':!![]}];}return db[_0xd99d('0x42')]['findAll'](_0x2c63ef);})[_0xd99d('0x25')](function(_0x1b04e1){_0x5c447e[_0xd99d('0x43')]=_0x1b04e1;return _0x5c447e;})['then'](respondWithFilteredResult(_0x528ee2,_0x2c63ef))[_0xd99d('0x44')](handleError(_0x528ee2,null));};exports[_0xd99d('0x45')]=function(_0x5d8f70,_0x4d1f6f){var _0x25af92={'raw':!![],'where':{'id':_0x5d8f70['params']['id']}},_0x2c1307={};_0x2c1307[_0xd99d('0x37')]=_['keys'](db[_0xd99d('0x42')][_0xd99d('0x2f')]);_0x2c1307[_0xd99d('0x33')]=_[_0xd99d('0x34')](_0x5d8f70[_0xd99d('0x33')]);_0x2c1307[_0xd99d('0x35')]=_[_0xd99d('0x36')](_0x2c1307[_0xd99d('0x37')],_0x2c1307[_0xd99d('0x33')]);_0x25af92[_0xd99d('0x38')]=_['intersection'](_0x2c1307[_0xd99d('0x37')],qs[_0xd99d('0x39')](_0x5d8f70[_0xd99d('0x33')][_0xd99d('0x39')]));_0x25af92[_0xd99d('0x38')]=_0x25af92['attributes'][_0xd99d('0x3a')]?_0x25af92['attributes']:_0x2c1307[_0xd99d('0x37')];if(_0x5d8f70[_0xd99d('0x33')]['includeAll']){_0x25af92[_0xd99d('0x41')]=[{'all':!![]}];}_0x25af92=_[_0xd99d('0x3e')]({},_0x25af92,_0x5d8f70['options']);return db[_0xd99d('0x42')][_0xd99d('0x46')](_0x25af92)[_0xd99d('0x25')](handleEntityNotFound(_0x4d1f6f,null))[_0xd99d('0x25')](respondWithResult(_0x4d1f6f,null))[_0xd99d('0x44')](handleError(_0x4d1f6f,null));};exports[_0xd99d('0x47')]=function(_0x5dbc81,_0x4a241e){return db['Template'][_0xd99d('0x47')](_0x5dbc81[_0xd99d('0x48')],{})[_0xd99d('0x25')](function(_0x21f8b8){var _0x3262ec=_0x5dbc81[_0xd99d('0x49')][_0xd99d('0x27')]({'plain':!![]});if(!_0x3262ec)throw new Error(_0xd99d('0x4a'));if(_0x3262ec['role']===_0xd99d('0x49')){var _0x24aec6=_0x21f8b8[_0xd99d('0x27')]({'plain':!![]});var _0x42ca75=_0xd99d('0x4b');return db[_0xd99d('0x4c')][_0xd99d('0x46')]({'where':{'name':_0x42ca75,'userProfileId':_0x3262ec[_0xd99d('0x4d')]},'raw':!![]})['then'](function(_0x1d29bc){if(_0x1d29bc&&_0x1d29bc[_0xd99d('0x4e')]===0x0){return db['UserProfileResource'][_0xd99d('0x47')]({'name':_0x24aec6[_0xd99d('0x2b')],'resourceId':_0x24aec6['id'],'type':_0x1d29bc[_0xd99d('0x2b')],'sectionId':_0x1d29bc['id']},{})['then'](function(){return _0x21f8b8;});}else{return _0x21f8b8;}})['catch'](function(_0x4c2a22){logger['error'](_0xd99d('0x4f'),_0x4c2a22);throw _0x4c2a22;});}return _0x21f8b8;})[_0xd99d('0x25')](respondWithResult(_0x4a241e,0xc9))['catch'](handleError(_0x4a241e,null));};exports[_0xd99d('0x24')]=function(_0x223bfe,_0x225c9d){if(_0x223bfe[_0xd99d('0x48')]['id']){delete _0x223bfe[_0xd99d('0x48')]['id'];}return db[_0xd99d('0x42')][_0xd99d('0x46')]({'where':{'id':_0x223bfe['params']['id']}})[_0xd99d('0x25')](handleEntityNotFound(_0x225c9d,null))['then'](saveUpdates(_0x223bfe[_0xd99d('0x48')],null))['then'](respondWithResult(_0x225c9d,null))[_0xd99d('0x44')](handleError(_0x225c9d,null));};exports['destroy']=function(_0x13b214,_0x1a043f){return db[_0xd99d('0x42')][_0xd99d('0x46')]({'where':{'id':_0x13b214[_0xd99d('0x50')]['id']}})['then'](handleEntityNotFound(_0x1a043f,null))[_0xd99d('0x25')](removeEntity(_0x1a043f,null))[_0xd99d('0x44')](handleError(_0x1a043f,null));};
\ No newline at end of file
index baa6134..6fd6822 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb70c=['path','rimraf','./template.attributes','exports','define','tools_templates','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4bcfa6,_0x1c7e43){var _0x1c0165=function(_0x30c963){while(--_0x30c963){_0x4bcfa6['push'](_0x4bcfa6['shift']());}};_0x1c0165(++_0x1c7e43);}(_0xb70c,0x8a));var _0xcb70=function(_0x189305,_0x46c43f){_0x189305=_0x189305-0x0;var _0xea3406=_0xb70c[_0x189305];return _0xea3406;};'use strict';var _=require(_0xcb70('0x0'));var util=require('util');var logger=require(_0xcb70('0x1'))(_0xcb70('0x2'));var moment=require(_0xcb70('0x3'));var BPromise=require(_0xcb70('0x4'));var rp=require(_0xcb70('0x5'));var fs=require('fs');var path=require(_0xcb70('0x6'));var rimraf=require(_0xcb70('0x7'));var config=require('../../config/environment');var attributes=require(_0xcb70('0x8'));module[_0xcb70('0x9')]=function(_0x514f85,_0x5ebbdc){return _0x514f85[_0xcb70('0xa')]('Template',attributes,{'tableName':_0xcb70('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x975d=['./template.attributes','exports','Template','tools_templates','lodash','util','../../config/logger','moment','bluebird','rimraf','../../config/environment'];(function(_0x31d129,_0xeb8c64){var _0x2e8f0e=function(_0x3d5f4f){while(--_0x3d5f4f){_0x31d129['push'](_0x31d129['shift']());}};_0x2e8f0e(++_0xeb8c64);}(_0x975d,0xeb));var _0xd975=function(_0x2ca4f7,_0x501a87){_0x2ca4f7=_0x2ca4f7-0x0;var _0x55fa06=_0x975d[_0x2ca4f7];return _0x55fa06;};'use strict';var _=require(_0xd975('0x0'));var util=require(_0xd975('0x1'));var logger=require(_0xd975('0x2'))('api');var moment=require(_0xd975('0x3'));var BPromise=require(_0xd975('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd975('0x5'));var config=require(_0xd975('0x6'));var attributes=require(_0xd975('0x7'));module[_0xd975('0x8')]=function(_0x4347a9,_0x10bf46){return _0x4347a9['define'](_0xd975('0x9'),attributes,{'tableName':_0xd975('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3bcd085..8e8933b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6664=['rpc','jayson/promise','request','then','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','findAll','options','raw','where','attributes','limit','map','model','include','GetTemplate','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x166947,_0x520bdd){var _0x46f572=function(_0x5832e8){while(--_0x5832e8){_0x166947['push'](_0x166947['shift']());}};_0x46f572(++_0x520bdd);}(_0x6664,0x19e));var _0x4666=function(_0x35fcb7,_0x3734c0){_0x35fcb7=_0x35fcb7-0x0;var _0x30f28a=_0x6664[_0x35fcb7];return _0x30f28a;};'use strict';var _=require(_0x4666('0x0'));var util=require('util');var moment=require(_0x4666('0x1'));var BPromise=require('bluebird');var rs=require(_0x4666('0x2'));var fs=require('fs');var Redis=require(_0x4666('0x3'));var db=require(_0x4666('0x4'))['db'];var utils=require(_0x4666('0x5'));var logger=require('../../config/logger')(_0x4666('0x6'));var config=require('../../config/environment');var jayson=require(_0x4666('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x44f013,_0xcf7915,_0x3fcaeb){return new BPromise(function(_0x5de96d,_0x444770){return client[_0x4666('0x8')](_0x44f013,_0x3fcaeb)[_0x4666('0x9')](function(_0x35e994){logger['info'](_0x4666('0xa'),_0xcf7915,_0x4666('0xb'));logger[_0x4666('0xc')](_0x4666('0xd'),_0xcf7915,'request\x20sent',JSON[_0x4666('0xe')](_0x35e994));if(_0x35e994[_0x4666('0xf')]){if(_0x35e994['error'][_0x4666('0x10')]===0x1f4){logger[_0x4666('0xf')](_0x4666('0xa'),_0xcf7915,_0x35e994[_0x4666('0xf')]['message']);return _0x444770(_0x35e994[_0x4666('0xf')][_0x4666('0x11')]);}logger[_0x4666('0xf')](_0x4666('0xa'),_0xcf7915,_0x35e994['error'][_0x4666('0x11')]);return _0x5de96d(_0x35e994[_0x4666('0xf')]['message']);}else{logger[_0x4666('0x12')](_0x4666('0xa'),_0xcf7915,'request\x20sent');_0x5de96d(_0x35e994[_0x4666('0x13')][_0x4666('0x11')]);}})['catch'](function(_0x18add1){logger[_0x4666('0xf')](_0x4666('0xa'),_0xcf7915,_0x18add1);_0x444770(_0x18add1);});});}exports['GetTemplate']=function(_0x16d1bd){var _0x2f53d9=this;return new Promise(function(_0x2af259,_0xd7fec9){return db['Template'][_0x4666('0x14')]({'raw':_0x16d1bd[_0x4666('0x15')]?_0x16d1bd[_0x4666('0x15')][_0x4666('0x16')]===undefined?!![]:![]:!![],'where':_0x16d1bd[_0x4666('0x15')]?_0x16d1bd['options'][_0x4666('0x17')]||null:null,'attributes':_0x16d1bd['options']?_0x16d1bd[_0x4666('0x15')][_0x4666('0x18')]||null:null,'limit':_0x16d1bd['options']?_0x16d1bd[_0x4666('0x15')][_0x4666('0x19')]||null:null,'include':_0x16d1bd[_0x4666('0x15')]?_0x16d1bd[_0x4666('0x15')]['include']?_[_0x4666('0x1a')](_0x16d1bd['options']['include'],function(_0x2759d7){return{'model':db[_0x2759d7[_0x4666('0x1b')]],'as':_0x2759d7['as'],'attributes':_0x2759d7[_0x4666('0x18')],'include':_0x2759d7[_0x4666('0x1c')]?_[_0x4666('0x1a')](_0x2759d7[_0x4666('0x1c')],function(_0x5717bf){return{'model':db[_0x5717bf['model']],'as':_0x5717bf['as'],'attributes':_0x5717bf[_0x4666('0x18')],'include':_0x5717bf['include']?_['map'](_0x5717bf[_0x4666('0x1c')],function(_0x3edf60){return{'model':db[_0x3edf60[_0x4666('0x1b')]],'as':_0x3edf60['as'],'attributes':_0x3edf60[_0x4666('0x18')]};}):[]};}):[]};}):[]:[]})[_0x4666('0x9')](function(_0x156529){logger[_0x4666('0x12')]('GetTemplate',_0x16d1bd);logger[_0x4666('0xc')]('GetTemplate',_0x16d1bd,JSON[_0x4666('0xe')](_0x156529));_0x2af259(_0x156529);})['catch'](function(_0x3ac77c){logger[_0x4666('0xf')](_0x4666('0x1d'),_0x3ac77c[_0x4666('0x11')],_0x16d1bd);_0xd7fec9(_0x2f53d9[_0x4666('0xf')](0x1f4,_0x3ac77c[_0x4666('0x11')]));});});};
\ No newline at end of file
+var _0x1cd8=['request','info','request\x20sent','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','Template,\x20%s,\x20%s','message','result','catch','GetTemplate','Template','findAll','options','raw','where','attributes','limit','include','model','then','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x27bfc1,_0x491949){var _0x5f33e8=function(_0x58bf36){while(--_0x58bf36){_0x27bfc1['push'](_0x27bfc1['shift']());}};_0x5f33e8(++_0x491949);}(_0x1cd8,0x198));var _0x81cd=function(_0x404828,_0x506d0e){_0x404828=_0x404828-0x0;var _0x1f0149=_0x1cd8[_0x404828];return _0x1f0149;};'use strict';var _=require(_0x81cd('0x0'));var util=require(_0x81cd('0x1'));var moment=require(_0x81cd('0x2'));var BPromise=require(_0x81cd('0x3'));var rs=require(_0x81cd('0x4'));var fs=require('fs');var Redis=require(_0x81cd('0x5'));var db=require(_0x81cd('0x6'))['db'];var utils=require(_0x81cd('0x7'));var logger=require(_0x81cd('0x8'))(_0x81cd('0x9'));var config=require('../../config/environment');var jayson=require(_0x81cd('0xa'));var client=jayson[_0x81cd('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1eaa1a,_0x2924cd,_0x17bd78){return new BPromise(function(_0x1ce14d,_0x1e10b0){return client[_0x81cd('0xc')](_0x1eaa1a,_0x17bd78)['then'](function(_0x3a2a51){logger[_0x81cd('0xd')]('Template,\x20%s,\x20%s',_0x2924cd,_0x81cd('0xe'));logger['debug'](_0x81cd('0xf'),_0x2924cd,_0x81cd('0xe'),JSON[_0x81cd('0x10')](_0x3a2a51));if(_0x3a2a51['error']){if(_0x3a2a51[_0x81cd('0x11')][_0x81cd('0x12')]===0x1f4){logger[_0x81cd('0x11')](_0x81cd('0x13'),_0x2924cd,_0x3a2a51[_0x81cd('0x11')][_0x81cd('0x14')]);return _0x1e10b0(_0x3a2a51[_0x81cd('0x11')][_0x81cd('0x14')]);}logger[_0x81cd('0x11')](_0x81cd('0x13'),_0x2924cd,_0x3a2a51[_0x81cd('0x11')][_0x81cd('0x14')]);return _0x1ce14d(_0x3a2a51[_0x81cd('0x11')][_0x81cd('0x14')]);}else{logger[_0x81cd('0xd')]('Template,\x20%s,\x20%s',_0x2924cd,_0x81cd('0xe'));_0x1ce14d(_0x3a2a51[_0x81cd('0x15')][_0x81cd('0x14')]);}})[_0x81cd('0x16')](function(_0x2c3b06){logger[_0x81cd('0x11')]('Template,\x20%s,\x20%s',_0x2924cd,_0x2c3b06);_0x1e10b0(_0x2c3b06);});});}exports[_0x81cd('0x17')]=function(_0x2d72c2){var _0x515591=this;return new Promise(function(_0x51a744,_0x70a835){return db[_0x81cd('0x18')][_0x81cd('0x19')]({'raw':_0x2d72c2[_0x81cd('0x1a')]?_0x2d72c2[_0x81cd('0x1a')][_0x81cd('0x1b')]===undefined?!![]:![]:!![],'where':_0x2d72c2[_0x81cd('0x1a')]?_0x2d72c2[_0x81cd('0x1a')][_0x81cd('0x1c')]||null:null,'attributes':_0x2d72c2[_0x81cd('0x1a')]?_0x2d72c2[_0x81cd('0x1a')][_0x81cd('0x1d')]||null:null,'limit':_0x2d72c2[_0x81cd('0x1a')]?_0x2d72c2[_0x81cd('0x1a')][_0x81cd('0x1e')]||null:null,'include':_0x2d72c2[_0x81cd('0x1a')]?_0x2d72c2['options'][_0x81cd('0x1f')]?_['map'](_0x2d72c2[_0x81cd('0x1a')]['include'],function(_0x801414){return{'model':db[_0x801414[_0x81cd('0x20')]],'as':_0x801414['as'],'attributes':_0x801414[_0x81cd('0x1d')],'include':_0x801414[_0x81cd('0x1f')]?_['map'](_0x801414[_0x81cd('0x1f')],function(_0x47f397){return{'model':db[_0x47f397['model']],'as':_0x47f397['as'],'attributes':_0x47f397[_0x81cd('0x1d')],'include':_0x47f397[_0x81cd('0x1f')]?_['map'](_0x47f397['include'],function(_0x1788d9){return{'model':db[_0x1788d9['model']],'as':_0x1788d9['as'],'attributes':_0x1788d9[_0x81cd('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x81cd('0x21')](function(_0x5ada75){logger[_0x81cd('0xd')](_0x81cd('0x17'),_0x2d72c2);logger[_0x81cd('0x22')](_0x81cd('0x17'),_0x2d72c2,JSON[_0x81cd('0x10')](_0x5ada75));_0x51a744(_0x5ada75);})[_0x81cd('0x16')](function(_0x286fbe){logger[_0x81cd('0x11')](_0x81cd('0x17'),_0x286fbe[_0x81cd('0x14')],_0x2d72c2);_0x70a835(_0x515591[_0x81cd('0x11')](0x1f4,_0x286fbe[_0x81cd('0x14')]));});});};
\ No newline at end of file
index 178e3ff..3e7616f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6db0=['show','/:id/all_conditions','getAllConditions','getAnyConditions','/:id/actions','getActions','post','/:id/any_conditions','addAnyCondition','addAction','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','get','isAuthenticated','index','/:id'];(function(_0x3015f9,_0x6eeb0d){var _0x3390b6=function(_0x4cff57){while(--_0x4cff57){_0x3015f9['push'](_0x3015f9['shift']());}};_0x3390b6(++_0x6eeb0d);}(_0x6db0,0x87));var _0x06db=function(_0x431e8d,_0x2bdb83){_0x431e8d=_0x431e8d-0x0;var _0x67b452=_0x6db0[_0x431e8d];return _0x67b452;};'use strict';var multer=require(_0x06db('0x0'));var util=require(_0x06db('0x1'));var path=require(_0x06db('0x2'));var timeout=require(_0x06db('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x06db('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./trigger.controller');router[_0x06db('0x5')]('/',auth[_0x06db('0x6')](),controller[_0x06db('0x7')]);router[_0x06db('0x5')](_0x06db('0x8'),auth[_0x06db('0x6')](),controller[_0x06db('0x9')]);router[_0x06db('0x5')](_0x06db('0xa'),auth[_0x06db('0x6')](),controller[_0x06db('0xb')]);router[_0x06db('0x5')]('/:id/any_conditions',auth[_0x06db('0x6')](),controller[_0x06db('0xc')]);router[_0x06db('0x5')](_0x06db('0xd'),auth['isAuthenticated'](),controller[_0x06db('0xe')]);router[_0x06db('0xf')]('/',auth[_0x06db('0x6')](),controller['create']);router[_0x06db('0xf')]('/:id/all_conditions',auth[_0x06db('0x6')](),controller['addAllCondition']);router[_0x06db('0xf')](_0x06db('0x10'),auth[_0x06db('0x6')](),controller[_0x06db('0x11')]);router['post'](_0x06db('0xd'),auth[_0x06db('0x6')](),controller[_0x06db('0x12')]);router[_0x06db('0x13')](_0x06db('0x8'),auth[_0x06db('0x6')](),controller[_0x06db('0x14')]);router[_0x06db('0x15')](_0x06db('0x8'),auth[_0x06db('0x6')](),controller[_0x06db('0x16')]);module[_0x06db('0x17')]=router;
\ No newline at end of file
+var _0x8c11=['getAllConditions','/:id/actions','getActions','post','/:id/all_conditions','/:id/any_conditions','addAnyCondition','addAction','put','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./trigger.controller','get','isAuthenticated','index','/:id','show'];(function(_0x87a21f,_0x2fb35a){var _0x6bf149=function(_0x1be215){while(--_0x1be215){_0x87a21f['push'](_0x87a21f['shift']());}};_0x6bf149(++_0x2fb35a);}(_0x8c11,0xf5));var _0x18c1=function(_0x3587b5,_0x52d8be){_0x3587b5=_0x3587b5-0x0;var _0x529d41=_0x8c11[_0x3587b5];return _0x529d41;};'use strict';var multer=require(_0x18c1('0x0'));var util=require(_0x18c1('0x1'));var path=require(_0x18c1('0x2'));var timeout=require(_0x18c1('0x3'));var express=require(_0x18c1('0x4'));var router=express[_0x18c1('0x5')]();var fs_extra=require(_0x18c1('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x18c1('0x7'));var config=require(_0x18c1('0x8'));var controller=require(_0x18c1('0x9'));router[_0x18c1('0xa')]('/',auth[_0x18c1('0xb')](),controller[_0x18c1('0xc')]);router[_0x18c1('0xa')](_0x18c1('0xd'),auth['isAuthenticated'](),controller[_0x18c1('0xe')]);router[_0x18c1('0xa')]('/:id/all_conditions',auth[_0x18c1('0xb')](),controller[_0x18c1('0xf')]);router[_0x18c1('0xa')]('/:id/any_conditions',auth[_0x18c1('0xb')](),controller['getAnyConditions']);router['get'](_0x18c1('0x10'),auth[_0x18c1('0xb')](),controller[_0x18c1('0x11')]);router[_0x18c1('0x12')]('/',auth[_0x18c1('0xb')](),controller['create']);router['post'](_0x18c1('0x13'),auth[_0x18c1('0xb')](),controller['addAllCondition']);router['post'](_0x18c1('0x14'),auth[_0x18c1('0xb')](),controller[_0x18c1('0x15')]);router['post']('/:id/actions',auth['isAuthenticated'](),controller[_0x18c1('0x16')]);router[_0x18c1('0x17')](_0x18c1('0xd'),auth[_0x18c1('0xb')](),controller['update']);router[_0x18c1('0x18')](_0x18c1('0xd'),auth[_0x18c1('0xb')](),controller['destroy']);module[_0x18c1('0x19')]=router;
\ No newline at end of file
index 49eabc4..eca82f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2922=['sequelize','exports','STRING','BOOLEAN'];(function(_0x21000,_0x531540){var _0x108434=function(_0x83e176){while(--_0x83e176){_0x21000['push'](_0x21000['shift']());}};_0x108434(++_0x531540);}(_0x2922,0x6c));var _0x2292=function(_0x5a87b4,_0x56057e){_0x5a87b4=_0x5a87b4-0x0;var _0x288c42=_0x2922[_0x5a87b4];return _0x288c42;};'use strict';var Sequelize=require(_0x2292('0x0'));module[_0x2292('0x1')]={'name':{'type':Sequelize[_0x2292('0x2')]},'channel':{'type':Sequelize[_0x2292('0x2')]},'description':{'type':Sequelize[_0x2292('0x2')]},'status':{'type':Sequelize[_0x2292('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xba62=['STRING','BOOLEAN','exports'];(function(_0x2d7eb1,_0x518821){var _0x4a55d4=function(_0x4b4df5){while(--_0x4b4df5){_0x2d7eb1['push'](_0x2d7eb1['shift']());}};_0x4a55d4(++_0x518821);}(_0xba62,0xb3));var _0x2ba6=function(_0x44606e,_0x2bf244){_0x44606e=_0x44606e-0x0;var _0xe68388=_0xba62[_0x44606e];return _0xe68388;};'use strict';var Sequelize=require('sequelize');module[_0x2ba6('0x0')]={'name':{'type':Sequelize[_0x2ba6('0x1')]},'channel':{'type':Sequelize[_0x2ba6('0x1')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0x2ba6('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 7b575b8..90a9897 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7be8=['role','Triggers','UserProfileSection','UserProfileResource','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','TriggerAllId','Condition','TriggerAnyId','getAllConditions','findOne','filter','getAnyConditions','addAction','Action','getActions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','then','destroy','get','stack','name','map','Trigger','rawAttributes','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','options','include','rows','show','params','intersection','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x1cfc39,_0x1d3913){var _0x957a28=function(_0x2be930){while(--_0x2be930){_0x1cfc39['push'](_0x1cfc39['shift']());}};_0x957a28(++_0x1d3913);}(_0x7be8,0x17e));var _0x87be=function(_0x5bf4e9,_0x1199da){_0x5bf4e9=_0x5bf4e9-0x0;var _0x14c33d=_0x7be8[_0x5bf4e9];return _0x14c33d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x87be('0x0'));var zipdir=require(_0x87be('0x1'));var jsonpatch=require(_0x87be('0x2'));var rp=require(_0x87be('0x3'));var moment=require(_0x87be('0x4'));var BPromise=require(_0x87be('0x5'));var Mustache=require(_0x87be('0x6'));var util=require(_0x87be('0x7'));var path=require(_0x87be('0x8'));var sox=require(_0x87be('0x9'));var csv=require('to-csv');var ejs=require(_0x87be('0xa'));var fs=require('fs');var fs_extra=require(_0x87be('0xb'));var _=require(_0x87be('0xc'));var squel=require('squel');var crypto=require(_0x87be('0xd'));var jsforce=require(_0x87be('0xe'));var deskjs=require(_0x87be('0xf'));var toCsv=require('to-csv');var querystring=require(_0x87be('0x10'));var Papa=require(_0x87be('0x11'));var Redis=require(_0x87be('0x12'));var authService=require(_0x87be('0x13'));var qs=require(_0x87be('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x87be('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x87be('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x87be('0x17'));var db=require(_0x87be('0x18'))['db'];function respondWithStatusCode(_0x323c9c,_0x12582a){_0x12582a=_0x12582a||0xcc;return function(_0x17bc6d){if(_0x17bc6d){return _0x323c9c[_0x87be('0x19')](_0x12582a);}return _0x323c9c[_0x87be('0x1a')](_0x12582a)[_0x87be('0x1b')]();};}function respondWithResult(_0x4ae4eb,_0x1cefea){_0x1cefea=_0x1cefea||0xc8;return function(_0x230bbb){if(_0x230bbb){return _0x4ae4eb[_0x87be('0x1a')](_0x1cefea)[_0x87be('0x1c')](_0x230bbb);}};}function respondWithFilteredResult(_0x1015d6,_0x5afb98){return function(_0x2ae5f8){if(_0x2ae5f8){var _0x5c2997=typeof _0x5afb98['offset']===_0x87be('0x1d')&&typeof _0x5afb98[_0x87be('0x1e')]==='undefined';var _0x54d33e=_0x2ae5f8[_0x87be('0x1f')];var _0x583401=_0x5c2997?0x0:_0x5afb98[_0x87be('0x20')];var _0x2fb51b=_0x5c2997?_0x2ae5f8['count']:_0x5afb98[_0x87be('0x20')]+_0x5afb98['limit'];var _0x4b7e80;if(_0x2fb51b>=_0x54d33e){_0x2fb51b=_0x54d33e;_0x4b7e80=0xc8;}else{_0x4b7e80=0xce;}_0x1015d6[_0x87be('0x1a')](_0x4b7e80);return _0x1015d6[_0x87be('0x21')](_0x87be('0x22'),_0x583401+'-'+_0x2fb51b+'/'+_0x54d33e)[_0x87be('0x1c')](_0x2ae5f8);}return null;};}function patchUpdates(_0x533517){return function(_0x3ea7ac){try{jsonpatch[_0x87be('0x23')](_0x3ea7ac,_0x533517,!![]);}catch(_0x300089){return BPromise['reject'](_0x300089);}return _0x3ea7ac['save']();};}function saveUpdates(_0x27c7fd,_0x5c55db){return function(_0x2a4899){if(_0x2a4899){return _0x2a4899['update'](_0x27c7fd)[_0x87be('0x24')](function(_0x4597ee){return _0x4597ee;});}return null;};}function removeEntity(_0x336111,_0x1d702b){return function(_0x442a4b){if(_0x442a4b){return _0x442a4b[_0x87be('0x25')]()[_0x87be('0x24')](function(){var _0x1e4674=_0x442a4b[_0x87be('0x26')]({'plain':!![]});var _0xe9a08a='Triggers';return db['UserProfileResource'][_0x87be('0x25')]({'where':{'type':_0xe9a08a,'resourceId':_0x1e4674['id']}})['then'](function(){return _0x442a4b;});})[_0x87be('0x24')](function(){_0x336111[_0x87be('0x1a')](0xcc)[_0x87be('0x1b')]();});}};}function handleEntityNotFound(_0x321837,_0x387742){return function(_0x2c7eca){if(!_0x2c7eca){_0x321837[_0x87be('0x19')](0x194);}return _0x2c7eca;};}function handleError(_0x30e960,_0x56510e){_0x56510e=_0x56510e||0x1f4;return function(_0x380ed5){logger['error'](_0x380ed5[_0x87be('0x27')]);if(_0x380ed5[_0x87be('0x28')]){delete _0x380ed5[_0x87be('0x28')];}_0x30e960[_0x87be('0x1a')](_0x56510e)['send'](_0x380ed5);};}exports['index']=function(_0x425aed,_0x1f7d71){var _0x1e05bf={},_0x25cd7d={},_0x327ebc={'count':0x0,'rows':[]};var _0x38c4a0=_[_0x87be('0x29')](db[_0x87be('0x2a')][_0x87be('0x2b')],function(_0x2835d9){return{'name':_0x2835d9['fieldName'],'type':_0x2835d9['type'][_0x87be('0x2c')]};});_0x25cd7d[_0x87be('0x2d')]=_['map'](_0x38c4a0,'name');_0x25cd7d[_0x87be('0x2e')]=_[_0x87be('0x2f')](_0x425aed[_0x87be('0x2e')]);_0x25cd7d[_0x87be('0x30')]=_['intersection'](_0x25cd7d[_0x87be('0x2d')],_0x25cd7d[_0x87be('0x2e')]);_0x1e05bf[_0x87be('0x31')]=_['intersection'](_0x25cd7d[_0x87be('0x2d')],qs[_0x87be('0x32')](_0x425aed[_0x87be('0x2e')][_0x87be('0x32')]));_0x1e05bf[_0x87be('0x31')]=_0x1e05bf['attributes'][_0x87be('0x33')]?_0x1e05bf[_0x87be('0x31')]:_0x25cd7d[_0x87be('0x2d')];if(!_0x425aed['query'][_0x87be('0x34')](_0x87be('0x35'))){_0x1e05bf[_0x87be('0x1e')]=qs[_0x87be('0x1e')](_0x425aed['query'][_0x87be('0x1e')]);_0x1e05bf[_0x87be('0x20')]=qs[_0x87be('0x20')](_0x425aed[_0x87be('0x2e')]['offset']);}_0x1e05bf[_0x87be('0x36')]=qs[_0x87be('0x37')](_0x425aed['query'][_0x87be('0x37')]);_0x1e05bf[_0x87be('0x38')]=qs[_0x87be('0x30')](_[_0x87be('0x39')](_0x425aed[_0x87be('0x2e')],_0x25cd7d['filters']),_0x38c4a0);if(_0x425aed[_0x87be('0x2e')]['filter']){_0x1e05bf[_0x87be('0x38')]=_[_0x87be('0x3a')](_0x1e05bf[_0x87be('0x38')],{'$or':_[_0x87be('0x29')](_0x38c4a0,function(_0x541fbd){if(_0x541fbd[_0x87be('0x3b')]!==_0x87be('0x3c')){var _0x4a10a5={};_0x4a10a5[_0x541fbd[_0x87be('0x28')]]={'$like':'%'+_0x425aed['query']['filter']+'%'};return _0x4a10a5;}})});}_0x1e05bf=_['merge']({},_0x1e05bf,_0x425aed[_0x87be('0x3d')]);var _0x519fad={'where':_0x1e05bf[_0x87be('0x38')]};return db[_0x87be('0x2a')][_0x87be('0x1f')](_0x519fad)[_0x87be('0x24')](function(_0x59650c){_0x327ebc[_0x87be('0x1f')]=_0x59650c;if(_0x425aed[_0x87be('0x2e')]['includeAll']){_0x1e05bf[_0x87be('0x3e')]=[{'all':!![]}];}return db['Trigger']['findAll'](_0x1e05bf);})[_0x87be('0x24')](function(_0x8716eb){_0x327ebc[_0x87be('0x3f')]=_0x8716eb;return _0x327ebc;})[_0x87be('0x24')](respondWithFilteredResult(_0x1f7d71,_0x1e05bf))['catch'](handleError(_0x1f7d71,null));};exports[_0x87be('0x40')]=function(_0x3962e2,_0x15d177){var _0x2d35d8={'raw':![],'where':{'id':_0x3962e2[_0x87be('0x41')]['id']}},_0x42382d={};_0x42382d[_0x87be('0x2d')]=_['keys'](db[_0x87be('0x2a')]['rawAttributes']);_0x42382d['query']=_[_0x87be('0x2f')](_0x3962e2[_0x87be('0x2e')]);_0x42382d[_0x87be('0x30')]=_[_0x87be('0x42')](_0x42382d[_0x87be('0x2d')],_0x42382d['query']);_0x2d35d8[_0x87be('0x31')]=_[_0x87be('0x42')](_0x42382d['model'],qs[_0x87be('0x32')](_0x3962e2[_0x87be('0x2e')][_0x87be('0x32')]));_0x2d35d8[_0x87be('0x31')]=_0x2d35d8[_0x87be('0x31')][_0x87be('0x33')]?_0x2d35d8[_0x87be('0x31')]:_0x42382d['model'];if(_0x3962e2[_0x87be('0x2e')][_0x87be('0x43')]){_0x2d35d8[_0x87be('0x3e')]=[{'all':!![]}];}_0x2d35d8=_[_0x87be('0x3a')]({},_0x2d35d8,_0x3962e2[_0x87be('0x3d')]);return db[_0x87be('0x2a')][_0x87be('0x44')](_0x2d35d8)[_0x87be('0x24')](handleEntityNotFound(_0x15d177,null))[_0x87be('0x24')](respondWithResult(_0x15d177,null))['catch'](handleError(_0x15d177,null));};exports[_0x87be('0x45')]=function(_0x277c44,_0x4eb14a){return db[_0x87be('0x2a')][_0x87be('0x45')](_0x277c44[_0x87be('0x46')],{})['then'](function(_0x2d6276){var _0x2c8619=_0x277c44[_0x87be('0x47')][_0x87be('0x26')]({'plain':!![]});if(!_0x2c8619)throw new Error(_0x87be('0x48'));if(_0x2c8619[_0x87be('0x49')]===_0x87be('0x47')){var _0x5b8c3f=_0x2d6276[_0x87be('0x26')]({'plain':!![]});var _0x2edb1e=_0x87be('0x4a');return db[_0x87be('0x4b')][_0x87be('0x44')]({'where':{'name':_0x2edb1e,'userProfileId':_0x2c8619['userProfileId']},'raw':!![]})[_0x87be('0x24')](function(_0xc28d4f){if(_0xc28d4f&&_0xc28d4f['autoAssociation']===0x0){return db[_0x87be('0x4c')][_0x87be('0x45')]({'name':_0x5b8c3f[_0x87be('0x28')],'resourceId':_0x5b8c3f['id'],'type':_0xc28d4f[_0x87be('0x28')],'sectionId':_0xc28d4f['id']},{})[_0x87be('0x24')](function(){return _0x2d6276;});}else{return _0x2d6276;}})[_0x87be('0x4d')](function(_0x5cd959){logger[_0x87be('0x4e')](_0x87be('0x4f'),_0x5cd959);throw _0x5cd959;});}return _0x2d6276;})[_0x87be('0x24')](respondWithResult(_0x4eb14a,0xc9))[_0x87be('0x4d')](handleError(_0x4eb14a,null));};exports[_0x87be('0x50')]=function(_0x4fdfa3,_0x828638){if(_0x4fdfa3['body']['id']){delete _0x4fdfa3[_0x87be('0x46')]['id'];}return db['Trigger'][_0x87be('0x44')]({'where':{'id':_0x4fdfa3[_0x87be('0x41')]['id']}})[_0x87be('0x24')](handleEntityNotFound(_0x828638,null))[_0x87be('0x24')](saveUpdates(_0x4fdfa3[_0x87be('0x46')],null))[_0x87be('0x24')](respondWithResult(_0x828638,null))['catch'](handleError(_0x828638,null));};exports['destroy']=function(_0x137ed7,_0x3abb5d){return db['Trigger'][_0x87be('0x44')]({'where':{'id':_0x137ed7[_0x87be('0x41')]['id']}})['then'](handleEntityNotFound(_0x3abb5d,null))[_0x87be('0x24')](removeEntity(_0x3abb5d,null))[_0x87be('0x4d')](handleError(_0x3abb5d,null));};exports['addAllCondition']=function(_0x28fceb,_0x3db316,_0x305864){if(_0x28fceb[_0x87be('0x46')]['id']){delete _0x28fceb['body']['id'];}return db['Trigger'][_0x87be('0x44')]({'where':{'id':_0x28fceb[_0x87be('0x41')]['id']}})[_0x87be('0x24')](handleEntityNotFound(_0x3db316,null))['then'](function(_0x25d93c){if(_0x25d93c){_0x28fceb[_0x87be('0x46')][_0x87be('0x51')]=_0x25d93c['id'];return db[_0x87be('0x52')][_0x87be('0x45')](_0x28fceb[_0x87be('0x46')]);}})[_0x87be('0x24')](respondWithResult(_0x3db316,null))[_0x87be('0x4d')](handleError(_0x3db316,null));};exports['addAnyCondition']=function(_0x3db338,_0x30c8a4,_0x1c5670){if(_0x3db338[_0x87be('0x46')]['id']){delete _0x3db338['body']['id'];}return db[_0x87be('0x2a')][_0x87be('0x44')]({'where':{'id':_0x3db338[_0x87be('0x41')]['id']}})['then'](handleEntityNotFound(_0x30c8a4,null))['then'](function(_0x1ab782){if(_0x1ab782){_0x3db338[_0x87be('0x46')][_0x87be('0x53')]=_0x1ab782['id'];return db[_0x87be('0x52')]['create'](_0x3db338[_0x87be('0x46')]);}})[_0x87be('0x24')](respondWithResult(_0x30c8a4,null))[_0x87be('0x4d')](handleError(_0x30c8a4,null));};exports[_0x87be('0x54')]=function(_0x2a4bfa,_0x4dff81,_0x20df7c){var _0x4b7652={};var _0x3ded47={};var _0x9aa640;var _0x4095d1;return db[_0x87be('0x2a')][_0x87be('0x55')]({'where':{'id':_0x2a4bfa['params']['id']}})[_0x87be('0x24')](handleEntityNotFound(_0x4dff81,null))[_0x87be('0x24')](function(_0x3fabb6){if(_0x3fabb6){_0x9aa640=_0x3fabb6;_0x3ded47[_0x87be('0x2d')]=_['keys'](db[_0x87be('0x52')][_0x87be('0x2b')]);_0x3ded47['query']=_[_0x87be('0x2f')](_0x2a4bfa[_0x87be('0x2e')]);_0x3ded47[_0x87be('0x30')]=_['intersection'](_0x3ded47['model'],_0x3ded47['query']);_0x4b7652['attributes']=_[_0x87be('0x42')](_0x3ded47['model'],qs['fields'](_0x2a4bfa[_0x87be('0x2e')]['fields']));_0x4b7652['attributes']=_0x4b7652[_0x87be('0x31')][_0x87be('0x33')]?_0x4b7652[_0x87be('0x31')]:_0x3ded47['model'];_0x4b7652[_0x87be('0x36')]=qs[_0x87be('0x37')](_0x2a4bfa[_0x87be('0x2e')]['sort']);_0x4b7652[_0x87be('0x38')]=qs[_0x87be('0x30')](_[_0x87be('0x39')](_0x2a4bfa[_0x87be('0x2e')],_0x3ded47[_0x87be('0x30')]));if(_0x2a4bfa['query'][_0x87be('0x56')]){_0x4b7652[_0x87be('0x38')]=_['merge'](_0x4b7652[_0x87be('0x38')],{'$or':_[_0x87be('0x29')](_0x4b7652['attributes'],function(_0x17d832){var _0x20d2d2={};_0x20d2d2[_0x17d832]={'$like':'%'+_0x2a4bfa['query'][_0x87be('0x56')]+'%'};return _0x20d2d2;})});}_0x4b7652=_[_0x87be('0x3a')]({},_0x4b7652,_0x2a4bfa['options']);return _0x9aa640[_0x87be('0x54')](_0x4b7652);}})[_0x87be('0x24')](function(_0x4d3a92){if(_0x4d3a92){_0x4095d1=_0x4d3a92[_0x87be('0x33')];if(!_0x2a4bfa[_0x87be('0x2e')][_0x87be('0x34')](_0x87be('0x35'))){_0x4b7652[_0x87be('0x1e')]=qs[_0x87be('0x1e')](_0x2a4bfa[_0x87be('0x2e')]['limit']);_0x4b7652[_0x87be('0x20')]=qs[_0x87be('0x20')](_0x2a4bfa[_0x87be('0x2e')]['offset']);}return _0x9aa640[_0x87be('0x54')](_0x4b7652);}})[_0x87be('0x24')](function(_0x262f86){if(_0x262f86){return _0x262f86?{'count':_0x4095d1,'rows':_0x262f86}:null;}})[_0x87be('0x24')](respondWithResult(_0x4dff81,null))['catch'](handleError(_0x4dff81,null));};exports['getAnyConditions']=function(_0x166c74,_0x1e635e,_0x263104){var _0x328a57={};var _0x2fa0d2={};var _0x3c2873;var _0x36109d;return db[_0x87be('0x2a')][_0x87be('0x55')]({'where':{'id':_0x166c74[_0x87be('0x41')]['id']}})['then'](handleEntityNotFound(_0x1e635e,null))['then'](function(_0x522e1d){if(_0x522e1d){_0x3c2873=_0x522e1d;_0x2fa0d2[_0x87be('0x2d')]=_[_0x87be('0x2f')](db[_0x87be('0x52')][_0x87be('0x2b')]);_0x2fa0d2['query']=_['keys'](_0x166c74[_0x87be('0x2e')]);_0x2fa0d2[_0x87be('0x30')]=_['intersection'](_0x2fa0d2[_0x87be('0x2d')],_0x2fa0d2['query']);_0x328a57[_0x87be('0x31')]=_[_0x87be('0x42')](_0x2fa0d2[_0x87be('0x2d')],qs[_0x87be('0x32')](_0x166c74[_0x87be('0x2e')][_0x87be('0x32')]));_0x328a57[_0x87be('0x31')]=_0x328a57[_0x87be('0x31')][_0x87be('0x33')]?_0x328a57[_0x87be('0x31')]:_0x2fa0d2[_0x87be('0x2d')];_0x328a57[_0x87be('0x36')]=qs[_0x87be('0x37')](_0x166c74[_0x87be('0x2e')][_0x87be('0x37')]);_0x328a57['where']=qs['filters'](_['pick'](_0x166c74[_0x87be('0x2e')],_0x2fa0d2[_0x87be('0x30')]));if(_0x166c74['query'][_0x87be('0x56')]){_0x328a57[_0x87be('0x38')]=_[_0x87be('0x3a')](_0x328a57[_0x87be('0x38')],{'$or':_[_0x87be('0x29')](_0x328a57[_0x87be('0x31')],function(_0x3af5ad){var _0x513f8c={};_0x513f8c[_0x3af5ad]={'$like':'%'+_0x166c74[_0x87be('0x2e')]['filter']+'%'};return _0x513f8c;})});}_0x328a57=_[_0x87be('0x3a')]({},_0x328a57,_0x166c74['options']);return _0x3c2873[_0x87be('0x57')](_0x328a57);}})['then'](function(_0x110cae){if(_0x110cae){_0x36109d=_0x110cae[_0x87be('0x33')];if(!_0x166c74[_0x87be('0x2e')][_0x87be('0x34')]('nolimit')){_0x328a57['limit']=qs[_0x87be('0x1e')](_0x166c74[_0x87be('0x2e')][_0x87be('0x1e')]);_0x328a57['offset']=qs[_0x87be('0x20')](_0x166c74[_0x87be('0x2e')][_0x87be('0x20')]);}return _0x3c2873[_0x87be('0x57')](_0x328a57);}})[_0x87be('0x24')](function(_0x3c19a2){if(_0x3c19a2){return _0x3c19a2?{'count':_0x36109d,'rows':_0x3c19a2}:null;}})['then'](respondWithResult(_0x1e635e,null))[_0x87be('0x4d')](handleError(_0x1e635e,null));};exports[_0x87be('0x58')]=function(_0x11012d,_0x24c69f,_0xe34203){if(_0x11012d[_0x87be('0x46')]['id']){delete _0x11012d['body']['id'];}return db['Trigger'][_0x87be('0x44')]({'where':{'id':_0x11012d[_0x87be('0x41')]['id']}})[_0x87be('0x24')](handleEntityNotFound(_0x24c69f,null))[_0x87be('0x24')](function(_0x57cb7e){if(_0x57cb7e){_0x11012d[_0x87be('0x46')]['TriggerId']=_0x57cb7e['id'];return db[_0x87be('0x59')][_0x87be('0x45')](_0x11012d[_0x87be('0x46')]);}})[_0x87be('0x24')](respondWithResult(_0x24c69f,null))[_0x87be('0x4d')](handleError(_0x24c69f,null));};exports[_0x87be('0x5a')]=function(_0x22fe7f,_0x4760bb,_0xdb7631){var _0x4a1b00={};var _0x2d2d09={};var _0x4e6638;var _0x320f05;return db['Trigger']['findOne']({'where':{'id':_0x22fe7f[_0x87be('0x41')]['id']}})[_0x87be('0x24')](handleEntityNotFound(_0x4760bb,null))['then'](function(_0x17431b){if(_0x17431b){_0x4e6638=_0x17431b;_0x2d2d09[_0x87be('0x2d')]=_[_0x87be('0x2f')](db['Action']['rawAttributes']);_0x2d2d09[_0x87be('0x2e')]=_['keys'](_0x22fe7f[_0x87be('0x2e')]);_0x2d2d09[_0x87be('0x30')]=_[_0x87be('0x42')](_0x2d2d09['model'],_0x2d2d09['query']);_0x4a1b00[_0x87be('0x31')]=_[_0x87be('0x42')](_0x2d2d09[_0x87be('0x2d')],qs[_0x87be('0x32')](_0x22fe7f['query']['fields']));_0x4a1b00[_0x87be('0x31')]=_0x4a1b00[_0x87be('0x31')][_0x87be('0x33')]?_0x4a1b00['attributes']:_0x2d2d09[_0x87be('0x2d')];_0x4a1b00['order']=qs[_0x87be('0x37')](_0x22fe7f['query'][_0x87be('0x37')]);_0x4a1b00[_0x87be('0x38')]=qs[_0x87be('0x30')](_['pick'](_0x22fe7f[_0x87be('0x2e')],_0x2d2d09[_0x87be('0x30')]));if(_0x22fe7f[_0x87be('0x2e')][_0x87be('0x56')]){_0x4a1b00[_0x87be('0x38')]=_['merge'](_0x4a1b00[_0x87be('0x38')],{'$or':_[_0x87be('0x29')](_0x4a1b00['attributes'],function(_0x1621cd){var _0x5c586b={};_0x5c586b[_0x1621cd]={'$like':'%'+_0x22fe7f['query'][_0x87be('0x56')]+'%'};return _0x5c586b;})});}_0x4a1b00=_['merge']({},_0x4a1b00,_0x22fe7f[_0x87be('0x3d')]);return _0x4e6638['getActions'](_0x4a1b00);}})[_0x87be('0x24')](function(_0x17e3d8){if(_0x17e3d8){_0x320f05=_0x17e3d8['length'];if(!_0x22fe7f[_0x87be('0x2e')][_0x87be('0x34')](_0x87be('0x35'))){_0x4a1b00[_0x87be('0x1e')]=qs[_0x87be('0x1e')](_0x22fe7f[_0x87be('0x2e')]['limit']);_0x4a1b00[_0x87be('0x20')]=qs[_0x87be('0x20')](_0x22fe7f[_0x87be('0x2e')][_0x87be('0x20')]);}return _0x4e6638[_0x87be('0x5a')](_0x4a1b00);}})[_0x87be('0x24')](function(_0x493e3d){if(_0x493e3d){return _0x493e3d?{'count':_0x320f05,'rows':_0x493e3d}:null;}})[_0x87be('0x24')](respondWithResult(_0x4760bb,null))[_0x87be('0x4d')](handleError(_0x4760bb,null));};
\ No newline at end of file
+var _0x8fa0=['merge','filter','includeAll','include','findAll','rows','catch','show','params','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','TriggerAnyId','getAllConditions','findOne','getAnyConditions','options','addAction','TriggerId','getActions','Action','pick','eml-format','rimraf','zip-dir','bluebird','mustache','util','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','then','get','Triggers','UserProfileResource','sendStatus','error','stack','name','send','index','map','Trigger','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x386c3e,_0x44a375){var _0x4b8e13=function(_0x583c8f){while(--_0x583c8f){_0x386c3e['push'](_0x386c3e['shift']());}};_0x4b8e13(++_0x44a375);}(_0x8fa0,0x7b));var _0x08fa=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8fa0[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x08fa('0x0'));var rimraf=require(_0x08fa('0x1'));var zipdir=require(_0x08fa('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x08fa('0x3'));var Mustache=require(_0x08fa('0x4'));var util=require(_0x08fa('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x08fa('0x6'));var ejs=require(_0x08fa('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x08fa('0x8'));var squel=require(_0x08fa('0x9'));var crypto=require('crypto');var jsforce=require(_0x08fa('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x08fa('0x6'));var querystring=require(_0x08fa('0xb'));var Papa=require(_0x08fa('0xc'));var Redis=require(_0x08fa('0xd'));var authService=require(_0x08fa('0xe'));var qs=require(_0x08fa('0xf'));var as=require(_0x08fa('0x10'));var hardwareService=require(_0x08fa('0x11'));var logger=require(_0x08fa('0x12'))('api');var utils=require(_0x08fa('0x13'));var config=require(_0x08fa('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x08fa('0x15'))['db'];function respondWithStatusCode(_0x19ed42,_0x52a353){_0x52a353=_0x52a353||0xcc;return function(_0x3b6a50){if(_0x3b6a50){return _0x19ed42['sendStatus'](_0x52a353);}return _0x19ed42[_0x08fa('0x16')](_0x52a353)[_0x08fa('0x17')]();};}function respondWithResult(_0xe9b61c,_0x12718b){_0x12718b=_0x12718b||0xc8;return function(_0x50820b){if(_0x50820b){return _0xe9b61c['status'](_0x12718b)[_0x08fa('0x18')](_0x50820b);}};}function respondWithFilteredResult(_0x77a8ae,_0x392ac4){return function(_0x314bc5){if(_0x314bc5){var _0x558683=typeof _0x392ac4[_0x08fa('0x19')]===_0x08fa('0x1a')&&typeof _0x392ac4[_0x08fa('0x1b')]===_0x08fa('0x1a');var _0x2a9859=_0x314bc5[_0x08fa('0x1c')];var _0x608da4=_0x558683?0x0:_0x392ac4['offset'];var _0x24593a=_0x558683?_0x314bc5[_0x08fa('0x1c')]:_0x392ac4['offset']+_0x392ac4[_0x08fa('0x1b')];var _0x26e292;if(_0x24593a>=_0x2a9859){_0x24593a=_0x2a9859;_0x26e292=0xc8;}else{_0x26e292=0xce;}_0x77a8ae['status'](_0x26e292);return _0x77a8ae[_0x08fa('0x1d')](_0x08fa('0x1e'),_0x608da4+'-'+_0x24593a+'/'+_0x2a9859)[_0x08fa('0x18')](_0x314bc5);}return null;};}function patchUpdates(_0xe30365){return function(_0x584d46){try{jsonpatch['apply'](_0x584d46,_0xe30365,!![]);}catch(_0x535e45){return BPromise[_0x08fa('0x1f')](_0x535e45);}return _0x584d46['save']();};}function saveUpdates(_0x26c896,_0x2dd69d){return function(_0x350f9c){if(_0x350f9c){return _0x350f9c[_0x08fa('0x20')](_0x26c896)['then'](function(_0x281884){return _0x281884;});}return null;};}function removeEntity(_0x125a3c,_0x267076){return function(_0x896c9e){if(_0x896c9e){return _0x896c9e[_0x08fa('0x21')]()[_0x08fa('0x22')](function(){var _0x3339e4=_0x896c9e[_0x08fa('0x23')]({'plain':!![]});var _0x79bdfe=_0x08fa('0x24');return db[_0x08fa('0x25')][_0x08fa('0x21')]({'where':{'type':_0x79bdfe,'resourceId':_0x3339e4['id']}})[_0x08fa('0x22')](function(){return _0x896c9e;});})[_0x08fa('0x22')](function(){_0x125a3c['status'](0xcc)[_0x08fa('0x17')]();});}};}function handleEntityNotFound(_0x3fdc8f,_0x50e468){return function(_0x584f43){if(!_0x584f43){_0x3fdc8f[_0x08fa('0x26')](0x194);}return _0x584f43;};}function handleError(_0x563f6b,_0x8908da){_0x8908da=_0x8908da||0x1f4;return function(_0x1ea520){logger[_0x08fa('0x27')](_0x1ea520[_0x08fa('0x28')]);if(_0x1ea520['name']){delete _0x1ea520[_0x08fa('0x29')];}_0x563f6b[_0x08fa('0x16')](_0x8908da)[_0x08fa('0x2a')](_0x1ea520);};}exports[_0x08fa('0x2b')]=function(_0x163f7d,_0x395f5d){var _0x44c074={},_0x544ea2={},_0x2e6664={'count':0x0,'rows':[]};var _0x2edb79=_[_0x08fa('0x2c')](db[_0x08fa('0x2d')][_0x08fa('0x2e')],function(_0x4a60be){return{'name':_0x4a60be[_0x08fa('0x2f')],'type':_0x4a60be[_0x08fa('0x30')][_0x08fa('0x31')]};});_0x544ea2[_0x08fa('0x32')]=_[_0x08fa('0x2c')](_0x2edb79,_0x08fa('0x29'));_0x544ea2[_0x08fa('0x33')]=_[_0x08fa('0x34')](_0x163f7d[_0x08fa('0x33')]);_0x544ea2[_0x08fa('0x35')]=_[_0x08fa('0x36')](_0x544ea2[_0x08fa('0x32')],_0x544ea2[_0x08fa('0x33')]);_0x44c074[_0x08fa('0x37')]=_[_0x08fa('0x36')](_0x544ea2[_0x08fa('0x32')],qs[_0x08fa('0x38')](_0x163f7d[_0x08fa('0x33')]['fields']));_0x44c074[_0x08fa('0x37')]=_0x44c074[_0x08fa('0x37')][_0x08fa('0x39')]?_0x44c074[_0x08fa('0x37')]:_0x544ea2[_0x08fa('0x32')];if(!_0x163f7d[_0x08fa('0x33')][_0x08fa('0x3a')](_0x08fa('0x3b'))){_0x44c074[_0x08fa('0x1b')]=qs[_0x08fa('0x1b')](_0x163f7d['query'][_0x08fa('0x1b')]);_0x44c074[_0x08fa('0x19')]=qs[_0x08fa('0x19')](_0x163f7d[_0x08fa('0x33')][_0x08fa('0x19')]);}_0x44c074[_0x08fa('0x3c')]=qs[_0x08fa('0x3d')](_0x163f7d[_0x08fa('0x33')][_0x08fa('0x3d')]);_0x44c074['where']=qs[_0x08fa('0x35')](_['pick'](_0x163f7d[_0x08fa('0x33')],_0x544ea2[_0x08fa('0x35')]),_0x2edb79);if(_0x163f7d[_0x08fa('0x33')]['filter']){_0x44c074[_0x08fa('0x3e')]=_[_0x08fa('0x3f')](_0x44c074[_0x08fa('0x3e')],{'$or':_['map'](_0x2edb79,function(_0x17da35){if(_0x17da35[_0x08fa('0x30')]!=='VIRTUAL'){var _0x583df7={};_0x583df7[_0x17da35['name']]={'$like':'%'+_0x163f7d[_0x08fa('0x33')][_0x08fa('0x40')]+'%'};return _0x583df7;}})});}_0x44c074=_[_0x08fa('0x3f')]({},_0x44c074,_0x163f7d['options']);var _0x5c46f3={'where':_0x44c074[_0x08fa('0x3e')]};return db[_0x08fa('0x2d')][_0x08fa('0x1c')](_0x5c46f3)[_0x08fa('0x22')](function(_0x21cf71){_0x2e6664[_0x08fa('0x1c')]=_0x21cf71;if(_0x163f7d[_0x08fa('0x33')][_0x08fa('0x41')]){_0x44c074[_0x08fa('0x42')]=[{'all':!![]}];}return db['Trigger'][_0x08fa('0x43')](_0x44c074);})['then'](function(_0x270537){_0x2e6664[_0x08fa('0x44')]=_0x270537;return _0x2e6664;})[_0x08fa('0x22')](respondWithFilteredResult(_0x395f5d,_0x44c074))[_0x08fa('0x45')](handleError(_0x395f5d,null));};exports[_0x08fa('0x46')]=function(_0x511da8,_0x5692b0){var _0x1d1c31={'raw':![],'where':{'id':_0x511da8[_0x08fa('0x47')]['id']}},_0x1c06d9={};_0x1c06d9['model']=_['keys'](db[_0x08fa('0x2d')][_0x08fa('0x2e')]);_0x1c06d9['query']=_['keys'](_0x511da8[_0x08fa('0x33')]);_0x1c06d9['filters']=_['intersection'](_0x1c06d9[_0x08fa('0x32')],_0x1c06d9['query']);_0x1d1c31[_0x08fa('0x37')]=_[_0x08fa('0x36')](_0x1c06d9[_0x08fa('0x32')],qs[_0x08fa('0x38')](_0x511da8[_0x08fa('0x33')]['fields']));_0x1d1c31['attributes']=_0x1d1c31[_0x08fa('0x37')][_0x08fa('0x39')]?_0x1d1c31[_0x08fa('0x37')]:_0x1c06d9[_0x08fa('0x32')];if(_0x511da8[_0x08fa('0x33')][_0x08fa('0x41')]){_0x1d1c31[_0x08fa('0x42')]=[{'all':!![]}];}_0x1d1c31=_['merge']({},_0x1d1c31,_0x511da8['options']);return db[_0x08fa('0x2d')]['find'](_0x1d1c31)[_0x08fa('0x22')](handleEntityNotFound(_0x5692b0,null))[_0x08fa('0x22')](respondWithResult(_0x5692b0,null))['catch'](handleError(_0x5692b0,null));};exports[_0x08fa('0x48')]=function(_0x23a489,_0x50ab12){return db[_0x08fa('0x2d')][_0x08fa('0x48')](_0x23a489[_0x08fa('0x49')],{})['then'](function(_0x53ad9a){var _0x39879c=_0x23a489['user'][_0x08fa('0x23')]({'plain':!![]});if(!_0x39879c)throw new Error(_0x08fa('0x4a'));if(_0x39879c['role']===_0x08fa('0x4b')){var _0xb17eb4=_0x53ad9a['get']({'plain':!![]});var _0x2d6530=_0x08fa('0x24');return db['UserProfileSection'][_0x08fa('0x4c')]({'where':{'name':_0x2d6530,'userProfileId':_0x39879c[_0x08fa('0x4d')]},'raw':!![]})[_0x08fa('0x22')](function(_0x5bfb4a){if(_0x5bfb4a&&_0x5bfb4a[_0x08fa('0x4e')]===0x0){return db['UserProfileResource'][_0x08fa('0x48')]({'name':_0xb17eb4[_0x08fa('0x29')],'resourceId':_0xb17eb4['id'],'type':_0x5bfb4a['name'],'sectionId':_0x5bfb4a['id']},{})['then'](function(){return _0x53ad9a;});}else{return _0x53ad9a;}})[_0x08fa('0x45')](function(_0x4f6aaf){logger[_0x08fa('0x27')](_0x08fa('0x4f'),_0x4f6aaf);throw _0x4f6aaf;});}return _0x53ad9a;})['then'](respondWithResult(_0x50ab12,0xc9))[_0x08fa('0x45')](handleError(_0x50ab12,null));};exports['update']=function(_0x164057,_0x2f243e){if(_0x164057[_0x08fa('0x49')]['id']){delete _0x164057[_0x08fa('0x49')]['id'];}return db[_0x08fa('0x2d')][_0x08fa('0x4c')]({'where':{'id':_0x164057[_0x08fa('0x47')]['id']}})[_0x08fa('0x22')](handleEntityNotFound(_0x2f243e,null))['then'](saveUpdates(_0x164057[_0x08fa('0x49')],null))[_0x08fa('0x22')](respondWithResult(_0x2f243e,null))[_0x08fa('0x45')](handleError(_0x2f243e,null));};exports['destroy']=function(_0x132ed4,_0x11c365){return db['Trigger']['find']({'where':{'id':_0x132ed4[_0x08fa('0x47')]['id']}})[_0x08fa('0x22')](handleEntityNotFound(_0x11c365,null))[_0x08fa('0x22')](removeEntity(_0x11c365,null))['catch'](handleError(_0x11c365,null));};exports[_0x08fa('0x50')]=function(_0x10019e,_0xcf6d6a,_0x521a00){if(_0x10019e[_0x08fa('0x49')]['id']){delete _0x10019e[_0x08fa('0x49')]['id'];}return db[_0x08fa('0x2d')][_0x08fa('0x4c')]({'where':{'id':_0x10019e[_0x08fa('0x47')]['id']}})['then'](handleEntityNotFound(_0xcf6d6a,null))[_0x08fa('0x22')](function(_0x21d637){if(_0x21d637){_0x10019e[_0x08fa('0x49')][_0x08fa('0x51')]=_0x21d637['id'];return db[_0x08fa('0x52')][_0x08fa('0x48')](_0x10019e[_0x08fa('0x49')]);}})[_0x08fa('0x22')](respondWithResult(_0xcf6d6a,null))[_0x08fa('0x45')](handleError(_0xcf6d6a,null));};exports['addAnyCondition']=function(_0x2c3a1f,_0x475364,_0xa5c951){if(_0x2c3a1f['body']['id']){delete _0x2c3a1f['body']['id'];}return db[_0x08fa('0x2d')][_0x08fa('0x4c')]({'where':{'id':_0x2c3a1f[_0x08fa('0x47')]['id']}})[_0x08fa('0x22')](handleEntityNotFound(_0x475364,null))['then'](function(_0x13aa70){if(_0x13aa70){_0x2c3a1f[_0x08fa('0x49')][_0x08fa('0x53')]=_0x13aa70['id'];return db['Condition']['create'](_0x2c3a1f[_0x08fa('0x49')]);}})[_0x08fa('0x22')](respondWithResult(_0x475364,null))[_0x08fa('0x45')](handleError(_0x475364,null));};exports[_0x08fa('0x54')]=function(_0x488faf,_0x2b5620,_0x3e71f8){var _0x1b1b1b={};var _0x24ca3d={};var _0x21ada0;var _0x2724e2;return db['Trigger'][_0x08fa('0x55')]({'where':{'id':_0x488faf[_0x08fa('0x47')]['id']}})['then'](handleEntityNotFound(_0x2b5620,null))[_0x08fa('0x22')](function(_0x232096){if(_0x232096){_0x21ada0=_0x232096;_0x24ca3d[_0x08fa('0x32')]=_[_0x08fa('0x34')](db[_0x08fa('0x52')]['rawAttributes']);_0x24ca3d[_0x08fa('0x33')]=_['keys'](_0x488faf[_0x08fa('0x33')]);_0x24ca3d[_0x08fa('0x35')]=_[_0x08fa('0x36')](_0x24ca3d[_0x08fa('0x32')],_0x24ca3d['query']);_0x1b1b1b[_0x08fa('0x37')]=_[_0x08fa('0x36')](_0x24ca3d['model'],qs[_0x08fa('0x38')](_0x488faf[_0x08fa('0x33')]['fields']));_0x1b1b1b[_0x08fa('0x37')]=_0x1b1b1b[_0x08fa('0x37')]['length']?_0x1b1b1b[_0x08fa('0x37')]:_0x24ca3d[_0x08fa('0x32')];_0x1b1b1b[_0x08fa('0x3c')]=qs['sort'](_0x488faf[_0x08fa('0x33')][_0x08fa('0x3d')]);_0x1b1b1b[_0x08fa('0x3e')]=qs[_0x08fa('0x35')](_['pick'](_0x488faf[_0x08fa('0x33')],_0x24ca3d[_0x08fa('0x35')]));if(_0x488faf[_0x08fa('0x33')][_0x08fa('0x40')]){_0x1b1b1b[_0x08fa('0x3e')]=_[_0x08fa('0x3f')](_0x1b1b1b[_0x08fa('0x3e')],{'$or':_[_0x08fa('0x2c')](_0x1b1b1b['attributes'],function(_0x148e87){var _0x3cc70a={};_0x3cc70a[_0x148e87]={'$like':'%'+_0x488faf[_0x08fa('0x33')][_0x08fa('0x40')]+'%'};return _0x3cc70a;})});}_0x1b1b1b=_['merge']({},_0x1b1b1b,_0x488faf['options']);return _0x21ada0[_0x08fa('0x54')](_0x1b1b1b);}})['then'](function(_0x598268){if(_0x598268){_0x2724e2=_0x598268[_0x08fa('0x39')];if(!_0x488faf[_0x08fa('0x33')][_0x08fa('0x3a')](_0x08fa('0x3b'))){_0x1b1b1b[_0x08fa('0x1b')]=qs[_0x08fa('0x1b')](_0x488faf[_0x08fa('0x33')][_0x08fa('0x1b')]);_0x1b1b1b[_0x08fa('0x19')]=qs[_0x08fa('0x19')](_0x488faf['query'][_0x08fa('0x19')]);}return _0x21ada0[_0x08fa('0x54')](_0x1b1b1b);}})['then'](function(_0x4b8182){if(_0x4b8182){return _0x4b8182?{'count':_0x2724e2,'rows':_0x4b8182}:null;}})[_0x08fa('0x22')](respondWithResult(_0x2b5620,null))[_0x08fa('0x45')](handleError(_0x2b5620,null));};exports[_0x08fa('0x56')]=function(_0x4e8d56,_0x58aa39,_0x3de4fa){var _0x46a207={};var _0x292d36={};var _0x1447bf;var _0x3c9af8;return db[_0x08fa('0x2d')][_0x08fa('0x55')]({'where':{'id':_0x4e8d56['params']['id']}})[_0x08fa('0x22')](handleEntityNotFound(_0x58aa39,null))[_0x08fa('0x22')](function(_0x328a35){if(_0x328a35){_0x1447bf=_0x328a35;_0x292d36['model']=_[_0x08fa('0x34')](db[_0x08fa('0x52')][_0x08fa('0x2e')]);_0x292d36[_0x08fa('0x33')]=_['keys'](_0x4e8d56[_0x08fa('0x33')]);_0x292d36['filters']=_[_0x08fa('0x36')](_0x292d36[_0x08fa('0x32')],_0x292d36[_0x08fa('0x33')]);_0x46a207[_0x08fa('0x37')]=_['intersection'](_0x292d36[_0x08fa('0x32')],qs[_0x08fa('0x38')](_0x4e8d56[_0x08fa('0x33')][_0x08fa('0x38')]));_0x46a207[_0x08fa('0x37')]=_0x46a207[_0x08fa('0x37')][_0x08fa('0x39')]?_0x46a207[_0x08fa('0x37')]:_0x292d36[_0x08fa('0x32')];_0x46a207['order']=qs['sort'](_0x4e8d56['query']['sort']);_0x46a207[_0x08fa('0x3e')]=qs[_0x08fa('0x35')](_['pick'](_0x4e8d56[_0x08fa('0x33')],_0x292d36[_0x08fa('0x35')]));if(_0x4e8d56['query']['filter']){_0x46a207['where']=_['merge'](_0x46a207['where'],{'$or':_['map'](_0x46a207[_0x08fa('0x37')],function(_0x37c899){var _0x497a0e={};_0x497a0e[_0x37c899]={'$like':'%'+_0x4e8d56[_0x08fa('0x33')][_0x08fa('0x40')]+'%'};return _0x497a0e;})});}_0x46a207=_[_0x08fa('0x3f')]({},_0x46a207,_0x4e8d56[_0x08fa('0x57')]);return _0x1447bf[_0x08fa('0x56')](_0x46a207);}})[_0x08fa('0x22')](function(_0x122662){if(_0x122662){_0x3c9af8=_0x122662[_0x08fa('0x39')];if(!_0x4e8d56[_0x08fa('0x33')][_0x08fa('0x3a')](_0x08fa('0x3b'))){_0x46a207['limit']=qs[_0x08fa('0x1b')](_0x4e8d56['query']['limit']);_0x46a207[_0x08fa('0x19')]=qs[_0x08fa('0x19')](_0x4e8d56[_0x08fa('0x33')]['offset']);}return _0x1447bf[_0x08fa('0x56')](_0x46a207);}})[_0x08fa('0x22')](function(_0x33d71d){if(_0x33d71d){return _0x33d71d?{'count':_0x3c9af8,'rows':_0x33d71d}:null;}})[_0x08fa('0x22')](respondWithResult(_0x58aa39,null))[_0x08fa('0x45')](handleError(_0x58aa39,null));};exports[_0x08fa('0x58')]=function(_0x217679,_0x3a5edd,_0x5eaf6d){if(_0x217679[_0x08fa('0x49')]['id']){delete _0x217679[_0x08fa('0x49')]['id'];}return db[_0x08fa('0x2d')][_0x08fa('0x4c')]({'where':{'id':_0x217679[_0x08fa('0x47')]['id']}})[_0x08fa('0x22')](handleEntityNotFound(_0x3a5edd,null))[_0x08fa('0x22')](function(_0x3c6272){if(_0x3c6272){_0x217679[_0x08fa('0x49')][_0x08fa('0x59')]=_0x3c6272['id'];return db['Action'][_0x08fa('0x48')](_0x217679['body']);}})[_0x08fa('0x22')](respondWithResult(_0x3a5edd,null))[_0x08fa('0x45')](handleError(_0x3a5edd,null));};exports[_0x08fa('0x5a')]=function(_0xf4bc58,_0x2efac3,_0x8b0fe7){var _0xd38ff1={};var _0x21d981={};var _0x5d392c;var _0x402b92;return db[_0x08fa('0x2d')]['findOne']({'where':{'id':_0xf4bc58[_0x08fa('0x47')]['id']}})[_0x08fa('0x22')](handleEntityNotFound(_0x2efac3,null))[_0x08fa('0x22')](function(_0x44e961){if(_0x44e961){_0x5d392c=_0x44e961;_0x21d981[_0x08fa('0x32')]=_[_0x08fa('0x34')](db[_0x08fa('0x5b')]['rawAttributes']);_0x21d981[_0x08fa('0x33')]=_[_0x08fa('0x34')](_0xf4bc58[_0x08fa('0x33')]);_0x21d981['filters']=_[_0x08fa('0x36')](_0x21d981[_0x08fa('0x32')],_0x21d981[_0x08fa('0x33')]);_0xd38ff1[_0x08fa('0x37')]=_[_0x08fa('0x36')](_0x21d981[_0x08fa('0x32')],qs[_0x08fa('0x38')](_0xf4bc58[_0x08fa('0x33')][_0x08fa('0x38')]));_0xd38ff1['attributes']=_0xd38ff1[_0x08fa('0x37')][_0x08fa('0x39')]?_0xd38ff1[_0x08fa('0x37')]:_0x21d981[_0x08fa('0x32')];_0xd38ff1['order']=qs['sort'](_0xf4bc58[_0x08fa('0x33')][_0x08fa('0x3d')]);_0xd38ff1[_0x08fa('0x3e')]=qs[_0x08fa('0x35')](_[_0x08fa('0x5c')](_0xf4bc58[_0x08fa('0x33')],_0x21d981[_0x08fa('0x35')]));if(_0xf4bc58[_0x08fa('0x33')]['filter']){_0xd38ff1[_0x08fa('0x3e')]=_[_0x08fa('0x3f')](_0xd38ff1[_0x08fa('0x3e')],{'$or':_[_0x08fa('0x2c')](_0xd38ff1[_0x08fa('0x37')],function(_0x12231e){var _0x3a8f4d={};_0x3a8f4d[_0x12231e]={'$like':'%'+_0xf4bc58[_0x08fa('0x33')][_0x08fa('0x40')]+'%'};return _0x3a8f4d;})});}_0xd38ff1=_[_0x08fa('0x3f')]({},_0xd38ff1,_0xf4bc58['options']);return _0x5d392c[_0x08fa('0x5a')](_0xd38ff1);}})[_0x08fa('0x22')](function(_0x19a26f){if(_0x19a26f){_0x402b92=_0x19a26f['length'];if(!_0xf4bc58[_0x08fa('0x33')]['hasOwnProperty'](_0x08fa('0x3b'))){_0xd38ff1[_0x08fa('0x1b')]=qs[_0x08fa('0x1b')](_0xf4bc58[_0x08fa('0x33')]['limit']);_0xd38ff1[_0x08fa('0x19')]=qs[_0x08fa('0x19')](_0xf4bc58[_0x08fa('0x33')]['offset']);}return _0x5d392c['getActions'](_0xd38ff1);}})['then'](function(_0x18d00f){if(_0x18d00f){return _0x18d00f?{'count':_0x402b92,'rows':_0x18d00f}:null;}})[_0x08fa('0x22')](respondWithResult(_0x2efac3,null))[_0x08fa('0x45')](handleError(_0x2efac3,null));};
\ No newline at end of file
index 1be47d5..752df44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6631=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./trigger.attributes','exports','define','Trigger','tools_triggers'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x6631,0x134));var _0x1663=function(_0x458b96,_0x3d8583){_0x458b96=_0x458b96-0x0;var _0x2c0d51=_0x6631[_0x458b96];return _0x2c0d51;};'use strict';var _=require(_0x1663('0x0'));var util=require(_0x1663('0x1'));var logger=require(_0x1663('0x2'))(_0x1663('0x3'));var moment=require(_0x1663('0x4'));var BPromise=require(_0x1663('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1663('0x6'));var rimraf=require(_0x1663('0x7'));var config=require(_0x1663('0x8'));var attributes=require(_0x1663('0x9'));module[_0x1663('0xa')]=function(_0x1faf52,_0x23a307){return _0x1faf52[_0x1663('0xb')](_0x1663('0xc'),attributes,{'tableName':_0x1663('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x92e0=['exports','define','Trigger','tools_triggers','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./trigger.attributes'];(function(_0x4d98b8,_0x539839){var _0x5e271b=function(_0x280ac6){while(--_0x280ac6){_0x4d98b8['push'](_0x4d98b8['shift']());}};_0x5e271b(++_0x539839);}(_0x92e0,0x154));var _0x092e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x92e0[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x092e('0x0'));var util=require('util');var logger=require(_0x092e('0x1'))(_0x092e('0x2'));var moment=require(_0x092e('0x3'));var BPromise=require(_0x092e('0x4'));var rp=require(_0x092e('0x5'));var fs=require('fs');var path=require(_0x092e('0x6'));var rimraf=require(_0x092e('0x7'));var config=require(_0x092e('0x8'));var attributes=require(_0x092e('0x9'));module[_0x092e('0xa')]=function(_0x51779f,_0x48af76){return _0x51779f[_0x092e('0xb')](_0x092e('0xc'),attributes,{'tableName':_0x092e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 673c28b..04e1823 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x102d=['jayson/promise','client','http','request','then','info','Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Trigger,\x20%s,\x20%s','message','result','GetTrigger','options','raw','where','attributes','include','map','model','debug','catch','ShowTrigger','Trigger','find','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x14be9e,_0x44e984){var _0x11fd99=function(_0x26cd70){while(--_0x26cd70){_0x14be9e['push'](_0x14be9e['shift']());}};_0x11fd99(++_0x44e984);}(_0x102d,0x123));var _0xd102=function(_0x5d604d,_0x365495){_0x5d604d=_0x5d604d-0x0;var _0x55e59c=_0x102d[_0x5d604d];return _0x55e59c;};'use strict';var _=require(_0xd102('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd102('0x1'));var fs=require('fs');var Redis=require(_0xd102('0x2'));var db=require(_0xd102('0x3'))['db'];var utils=require(_0xd102('0x4'));var logger=require(_0xd102('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd102('0x6'));var client=jayson[_0xd102('0x7')][_0xd102('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x133ede,_0x3a3732,_0x54e8c8){return new BPromise(function(_0x16f0bf,_0x3b0659){return client[_0xd102('0x9')](_0x133ede,_0x54e8c8)[_0xd102('0xa')](function(_0x2fae91){logger[_0xd102('0xb')]('Trigger,\x20%s,\x20%s',_0x3a3732,'request\x20sent');logger['debug'](_0xd102('0xc'),_0x3a3732,_0xd102('0xd'),JSON[_0xd102('0xe')](_0x2fae91));if(_0x2fae91[_0xd102('0xf')]){if(_0x2fae91['error'][_0xd102('0x10')]===0x1f4){logger[_0xd102('0xf')](_0xd102('0x11'),_0x3a3732,_0x2fae91['error'][_0xd102('0x12')]);return _0x3b0659(_0x2fae91['error']['message']);}logger['error'](_0xd102('0x11'),_0x3a3732,_0x2fae91[_0xd102('0xf')][_0xd102('0x12')]);return _0x16f0bf(_0x2fae91[_0xd102('0xf')][_0xd102('0x12')]);}else{logger['info']('Trigger,\x20%s,\x20%s',_0x3a3732,_0xd102('0xd'));_0x16f0bf(_0x2fae91[_0xd102('0x13')][_0xd102('0x12')]);}})['catch'](function(_0xf54a3f){logger[_0xd102('0xf')](_0xd102('0x11'),_0x3a3732,_0xf54a3f);_0x3b0659(_0xf54a3f);});});}exports[_0xd102('0x14')]=function(_0x50b857){var _0x106d74=this;return new Promise(function(_0x5c91ed,_0x39914c){return db['Trigger']['findAll']({'raw':_0x50b857['options']?_0x50b857[_0xd102('0x15')][_0xd102('0x16')]===undefined?!![]:![]:!![],'where':_0x50b857[_0xd102('0x15')]?_0x50b857[_0xd102('0x15')][_0xd102('0x17')]||null:null,'attributes':_0x50b857[_0xd102('0x15')]?_0x50b857[_0xd102('0x15')][_0xd102('0x18')]||null:null,'limit':_0x50b857[_0xd102('0x15')]?_0x50b857[_0xd102('0x15')]['limit']||null:null,'include':_0x50b857[_0xd102('0x15')]?_0x50b857['options'][_0xd102('0x19')]?_[_0xd102('0x1a')](_0x50b857[_0xd102('0x15')][_0xd102('0x19')],function(_0x2db2ac){return{'model':db[_0x2db2ac['model']],'as':_0x2db2ac['as'],'attributes':_0x2db2ac[_0xd102('0x18')],'include':_0x2db2ac[_0xd102('0x19')]?_['map'](_0x2db2ac[_0xd102('0x19')],function(_0x37e258){return{'model':db[_0x37e258[_0xd102('0x1b')]],'as':_0x37e258['as'],'attributes':_0x37e258['attributes'],'include':_0x37e258[_0xd102('0x19')]?_[_0xd102('0x1a')](_0x37e258[_0xd102('0x19')],function(_0x427b6c){return{'model':db[_0x427b6c[_0xd102('0x1b')]],'as':_0x427b6c['as'],'attributes':_0x427b6c[_0xd102('0x18')]};}):[]};}):[]};}):[]:[]})[_0xd102('0xa')](function(_0x247ae4){logger[_0xd102('0xb')](_0xd102('0x14'),_0x50b857);logger[_0xd102('0x1c')](_0xd102('0x14'),_0x50b857,JSON[_0xd102('0xe')](_0x247ae4));_0x5c91ed(_0x247ae4);})[_0xd102('0x1d')](function(_0x23a7ff){logger['error']('GetTrigger',_0x23a7ff['message'],_0x50b857);_0x39914c(_0x106d74[_0xd102('0xf')](0x1f4,_0x23a7ff[_0xd102('0x12')]));});});};exports[_0xd102('0x1e')]=function(_0x211ff6){var _0x523185=this;return new Promise(function(_0x2be069,_0x4f3f48){return db[_0xd102('0x1f')][_0xd102('0x20')]({'raw':_0x211ff6['options']?_0x211ff6[_0xd102('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x211ff6[_0xd102('0x15')]?_0x211ff6[_0xd102('0x15')]['where']||null:null,'attributes':_0x211ff6[_0xd102('0x15')]?_0x211ff6[_0xd102('0x15')]['attributes']||null:null,'include':_0x211ff6[_0xd102('0x15')]?_0x211ff6[_0xd102('0x15')][_0xd102('0x19')]?_[_0xd102('0x1a')](_0x211ff6[_0xd102('0x15')][_0xd102('0x19')],function(_0x1199ed){return{'model':db[_0x1199ed[_0xd102('0x1b')]],'as':_0x1199ed['as'],'attributes':_0x1199ed[_0xd102('0x18')],'include':_0x1199ed[_0xd102('0x19')]?_[_0xd102('0x1a')](_0x1199ed['include'],function(_0x4fd9ef){return{'model':db[_0x4fd9ef['model']],'as':_0x4fd9ef['as'],'attributes':_0x4fd9ef[_0xd102('0x18')],'include':_0x4fd9ef[_0xd102('0x19')]?_[_0xd102('0x1a')](_0x4fd9ef['include'],function(_0x2745ef){return{'model':db[_0x2745ef[_0xd102('0x1b')]],'as':_0x2745ef['as'],'attributes':_0x2745ef[_0xd102('0x18')]};}):[]};}):[]};}):[]:[]})[_0xd102('0xa')](function(_0x54e0c0){logger[_0xd102('0xb')](_0xd102('0x1e'),_0x211ff6);logger['debug'](_0xd102('0x1e'),_0x211ff6,JSON[_0xd102('0xe')](_0x54e0c0));_0x2be069(_0x54e0c0);})[_0xd102('0x1d')](function(_0x376055){logger[_0xd102('0xf')](_0xd102('0x1e'),_0x376055[_0xd102('0x12')],_0x211ff6);_0x4f3f48(_0x523185[_0xd102('0xf')](0x1f4,_0x376055[_0xd102('0x12')]));});});};
\ No newline at end of file
+var _0xb694=['Trigger,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetTrigger','Trigger','findAll','options','where','attributes','include','model','map','find','raw','ShowTrigger','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xb694,0x10e));var _0x4b69=function(_0x25fbd4,_0x253091){_0x25fbd4=_0x25fbd4-0x0;var _0x1473c2=_0xb694[_0x25fbd4];return _0x1473c2;};'use strict';var _=require(_0x4b69('0x0'));var util=require(_0x4b69('0x1'));var moment=require(_0x4b69('0x2'));var BPromise=require(_0x4b69('0x3'));var rs=require(_0x4b69('0x4'));var fs=require('fs');var Redis=require(_0x4b69('0x5'));var db=require(_0x4b69('0x6'))['db'];var utils=require(_0x4b69('0x7'));var logger=require(_0x4b69('0x8'))(_0x4b69('0x9'));var config=require(_0x4b69('0xa'));var jayson=require(_0x4b69('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x53dc97,_0x2536cc,_0x4cd029){return new BPromise(function(_0x2db6fe,_0x21166c){return client[_0x4b69('0xc')](_0x53dc97,_0x4cd029)[_0x4b69('0xd')](function(_0x31f234){logger[_0x4b69('0xe')](_0x4b69('0xf'),_0x2536cc,_0x4b69('0x10'));logger[_0x4b69('0x11')](_0x4b69('0x12'),_0x2536cc,_0x4b69('0x10'),JSON[_0x4b69('0x13')](_0x31f234));if(_0x31f234[_0x4b69('0x14')]){if(_0x31f234['error']['code']===0x1f4){logger[_0x4b69('0x14')]('Trigger,\x20%s,\x20%s',_0x2536cc,_0x31f234[_0x4b69('0x14')]['message']);return _0x21166c(_0x31f234[_0x4b69('0x14')][_0x4b69('0x15')]);}logger[_0x4b69('0x14')]('Trigger,\x20%s,\x20%s',_0x2536cc,_0x31f234['error'][_0x4b69('0x15')]);return _0x2db6fe(_0x31f234[_0x4b69('0x14')][_0x4b69('0x15')]);}else{logger[_0x4b69('0xe')]('Trigger,\x20%s,\x20%s',_0x2536cc,_0x4b69('0x10'));_0x2db6fe(_0x31f234[_0x4b69('0x16')][_0x4b69('0x15')]);}})['catch'](function(_0x3b186b){logger[_0x4b69('0x14')](_0x4b69('0xf'),_0x2536cc,_0x3b186b);_0x21166c(_0x3b186b);});});}exports[_0x4b69('0x17')]=function(_0x17a5d1){var _0x283355=this;return new Promise(function(_0x3a2ffb,_0x18439e){return db[_0x4b69('0x18')][_0x4b69('0x19')]({'raw':_0x17a5d1[_0x4b69('0x1a')]?_0x17a5d1[_0x4b69('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x17a5d1['options']?_0x17a5d1[_0x4b69('0x1a')][_0x4b69('0x1b')]||null:null,'attributes':_0x17a5d1[_0x4b69('0x1a')]?_0x17a5d1[_0x4b69('0x1a')][_0x4b69('0x1c')]||null:null,'limit':_0x17a5d1[_0x4b69('0x1a')]?_0x17a5d1[_0x4b69('0x1a')]['limit']||null:null,'include':_0x17a5d1['options']?_0x17a5d1[_0x4b69('0x1a')][_0x4b69('0x1d')]?_['map'](_0x17a5d1[_0x4b69('0x1a')][_0x4b69('0x1d')],function(_0x34b4d9){return{'model':db[_0x34b4d9[_0x4b69('0x1e')]],'as':_0x34b4d9['as'],'attributes':_0x34b4d9[_0x4b69('0x1c')],'include':_0x34b4d9[_0x4b69('0x1d')]?_['map'](_0x34b4d9['include'],function(_0x500dfb){return{'model':db[_0x500dfb['model']],'as':_0x500dfb['as'],'attributes':_0x500dfb[_0x4b69('0x1c')],'include':_0x500dfb[_0x4b69('0x1d')]?_[_0x4b69('0x1f')](_0x500dfb[_0x4b69('0x1d')],function(_0x376759){return{'model':db[_0x376759[_0x4b69('0x1e')]],'as':_0x376759['as'],'attributes':_0x376759['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x166781){logger[_0x4b69('0xe')](_0x4b69('0x17'),_0x17a5d1);logger['debug']('GetTrigger',_0x17a5d1,JSON[_0x4b69('0x13')](_0x166781));_0x3a2ffb(_0x166781);})['catch'](function(_0x4e324e){logger['error'](_0x4b69('0x17'),_0x4e324e['message'],_0x17a5d1);_0x18439e(_0x283355['error'](0x1f4,_0x4e324e[_0x4b69('0x15')]));});});};exports['ShowTrigger']=function(_0x1f255c){var _0x147828=this;return new Promise(function(_0x29d6d2,_0x376fc4){return db[_0x4b69('0x18')][_0x4b69('0x20')]({'raw':_0x1f255c['options']?_0x1f255c[_0x4b69('0x1a')][_0x4b69('0x21')]===undefined?!![]:![]:!![],'where':_0x1f255c['options']?_0x1f255c[_0x4b69('0x1a')][_0x4b69('0x1b')]||null:null,'attributes':_0x1f255c[_0x4b69('0x1a')]?_0x1f255c['options']['attributes']||null:null,'include':_0x1f255c[_0x4b69('0x1a')]?_0x1f255c['options'][_0x4b69('0x1d')]?_['map'](_0x1f255c[_0x4b69('0x1a')]['include'],function(_0x40abd8){return{'model':db[_0x40abd8[_0x4b69('0x1e')]],'as':_0x40abd8['as'],'attributes':_0x40abd8[_0x4b69('0x1c')],'include':_0x40abd8[_0x4b69('0x1d')]?_['map'](_0x40abd8['include'],function(_0x3e7c56){return{'model':db[_0x3e7c56['model']],'as':_0x3e7c56['as'],'attributes':_0x3e7c56[_0x4b69('0x1c')],'include':_0x3e7c56[_0x4b69('0x1d')]?_['map'](_0x3e7c56[_0x4b69('0x1d')],function(_0x4db73f){return{'model':db[_0x4db73f[_0x4b69('0x1e')]],'as':_0x4db73f['as'],'attributes':_0x4db73f[_0x4b69('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4b69('0xd')](function(_0x202dbc){logger[_0x4b69('0xe')](_0x4b69('0x22'),_0x1f255c);logger['debug']('ShowTrigger',_0x1f255c,JSON['stringify'](_0x202dbc));_0x29d6d2(_0x202dbc);})[_0x4b69('0x23')](function(_0x1f4c62){logger['error'](_0x4b69('0x22'),_0x1f4c62[_0x4b69('0x15')],_0x1f255c);_0x376fc4(_0x147828[_0x4b69('0x14')](0x1f4,_0x1f4c62[_0x4b69('0x15')]));});});};
\ No newline at end of file
index e2a3cba..dbd81eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ecd=['/:id','show','post','/:id/clone','clone','create','put','update','delete','destroy','multer','path','express','Router','../../components/auth/service','../../config/environment','isAuthenticated','index','get'];(function(_0x8568e9,_0x474bea){var _0x357f5a=function(_0xb8677f){while(--_0xb8677f){_0x8568e9['push'](_0x8568e9['shift']());}};_0x357f5a(++_0x474bea);}(_0x7ecd,0x199));var _0xd7ec=function(_0x30dd0e,_0x4e89f0){_0x30dd0e=_0x30dd0e-0x0;var _0xac744e=_0x7ecd[_0x30dd0e];return _0xac744e;};'use strict';var multer=require(_0xd7ec('0x0'));var util=require('util');var path=require(_0xd7ec('0x1'));var timeout=require('connect-timeout');var express=require(_0xd7ec('0x2'));var router=express[_0xd7ec('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xd7ec('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd7ec('0x5'));var controller=require('./trunk.controller');router['get']('/',auth[_0xd7ec('0x6')](),controller[_0xd7ec('0x7')]);router[_0xd7ec('0x8')](_0xd7ec('0x9'),auth[_0xd7ec('0x6')](),controller[_0xd7ec('0xa')]);router[_0xd7ec('0xb')](_0xd7ec('0xc'),auth[_0xd7ec('0x6')](),controller[_0xd7ec('0xd')]);router[_0xd7ec('0xb')]('/',auth[_0xd7ec('0x6')](),controller[_0xd7ec('0xe')]);router[_0xd7ec('0xf')](_0xd7ec('0x9'),auth['isAuthenticated'](),controller[_0xd7ec('0x10')]);router[_0xd7ec('0x11')](_0xd7ec('0x9'),auth[_0xd7ec('0x6')](),controller[_0xd7ec('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xbe72=['put','update','destroy','exports','multer','util','path','Router','fs-extra','../../config/environment','./trunk.controller','isAuthenticated','index','get','/:id','/:id/clone','post'];(function(_0x4db65b,_0x3a4e02){var _0x14275b=function(_0x24ca7a){while(--_0x24ca7a){_0x4db65b['push'](_0x4db65b['shift']());}};_0x14275b(++_0x3a4e02);}(_0xbe72,0x114));var _0x2be7=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xbe72[_0x32d457];return _0x338386;};'use strict';var multer=require(_0x2be7('0x0'));var util=require(_0x2be7('0x1'));var path=require(_0x2be7('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2be7('0x3')]();var fs_extra=require(_0x2be7('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x2be7('0x5'));var controller=require(_0x2be7('0x6'));router['get']('/',auth[_0x2be7('0x7')](),controller[_0x2be7('0x8')]);router[_0x2be7('0x9')](_0x2be7('0xa'),auth['isAuthenticated'](),controller['show']);router['post'](_0x2be7('0xb'),auth[_0x2be7('0x7')](),controller['clone']);router[_0x2be7('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2be7('0xd')](_0x2be7('0xa'),auth[_0x2be7('0x7')](),controller[_0x2be7('0xe')]);router['delete'](_0x2be7('0xa'),auth[_0x2be7('0x7')](),controller[_0x2be7('0xf')]);module[_0x2be7('0x10')]=router;
\ No newline at end of file
index 66593c8..36f40b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f9=['join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','nonat','update','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','always','accept','refuse','originate','uac','uas','fingerprint','certificate','active','passive','actpass','dynamic','update,nonat','sequelize','exports','STRING','ENUM','friend','user','peer','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_PASSED_SCREEN','PROHIB','udp','setDataValue','transport'];(function(_0x163fe4,_0x17b748){var _0x5c0a8e=function(_0x4f8fe1){while(--_0x4f8fe1){_0x163fe4['push'](_0x163fe4['shift']());}};_0x5c0a8e(++_0x17b748);}(_0xd4f9,0xc1));var _0x9d4f=function(_0x13ad07,_0x5f391a){_0x13ad07=_0x13ad07-0x0;var _0x15ab02=_0xd4f9[_0x13ad07];return _0x15ab02;};'use strict';var Sequelize=require(_0x9d4f('0x0'));module[_0x9d4f('0x1')]={'name':{'type':Sequelize[_0x9d4f('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x4'),_0x9d4f('0x5'),_0x9d4f('0x6')),'allowNull':![],'defaultValue':_0x9d4f('0x4')},'context':{'type':Sequelize[_0x9d4f('0x2')],'allowNull':![],'defaultValue':_0x9d4f('0x7')},'callingpres':{'type':Sequelize[_0x9d4f('0x3')]('ALLOWED_NOT_SCREENED',_0x9d4f('0x8'),_0x9d4f('0x9'),'ALLOWED','PROHIB_NOT_SCREENED',_0x9d4f('0xa'),'PROHIB_FAILED_SCREEN',_0x9d4f('0xb'))},'deny':{'type':Sequelize[_0x9d4f('0x2')]},'permit':{'type':Sequelize[_0x9d4f('0x2')]},'secret':{'type':Sequelize[_0x9d4f('0x2')]},'md5secret':{'type':Sequelize[_0x9d4f('0x2')]},'remotesecret':{'type':Sequelize[_0x9d4f('0x2')]},'transport':{'type':Sequelize[_0x9d4f('0x2')],'defaultValue':_0x9d4f('0xc'),'set':function(_0x3cad4b){this[_0x9d4f('0xd')](_0x9d4f('0xe'),_0x3cad4b?_0x3cad4b[_0x9d4f('0xf')](','):null);},'get':function(){return this[_0x9d4f('0x10')](_0x9d4f('0xe'))?this['getDataValue'](_0x9d4f('0xe'))[_0x9d4f('0x11')](','):null;},'comment':_0x9d4f('0x12')},'dtmfmode':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x13'),_0x9d4f('0x14'),_0x9d4f('0x15'),_0x9d4f('0x16'),_0x9d4f('0x17')),'defaultValue':_0x9d4f('0x13')},'directmedia':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no',_0x9d4f('0x19'),_0x9d4f('0x1a'),'outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x9d4f('0x2')]},'directmediadeny':{'type':Sequelize[_0x9d4f('0x2')]},'nat':{'type':Sequelize[_0x9d4f('0x2')],'defaultValue':_0x9d4f('0x1b'),'set':function(_0x56c0dc){this[_0x9d4f('0xd')]('nat',_0x56c0dc?_0x56c0dc[_0x9d4f('0xf')](','):null);},'get':function(){return this[_0x9d4f('0x10')](_0x9d4f('0x1c'))?this[_0x9d4f('0x10')](_0x9d4f('0x1c'))[_0x9d4f('0x11')](','):null;},'comment':_0x9d4f('0x1d')},'callgroup':{'type':Sequelize[_0x9d4f('0x2')]},'namedcallgroup':{'type':Sequelize[_0x9d4f('0x2')]},'pickupgroup':{'type':Sequelize[_0x9d4f('0x2')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x9d4f('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x9d4f('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x9d4f('0x2')],'defaultValue':_0x9d4f('0x1e')},'allow':{'type':Sequelize[_0x9d4f('0x2')],'allowNull':![],'defaultValue':_0x9d4f('0x1f'),'set':function(_0x45bdb2){this[_0x9d4f('0xd')](_0x9d4f('0x20'),_0x45bdb2?_0x45bdb2['join'](';'):_0x9d4f('0x1f'));},'get':function(){return this[_0x9d4f('0x10')](_0x9d4f('0x20'))?this[_0x9d4f('0x10')]('allow')[_0x9d4f('0x11')](';'):null;},'comment':_0x9d4f('0x21')},'autoframing':{'type':Sequelize['ENUM']('yes','no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x9d4f('0x22'),'set':function(_0x12a047){this[_0x9d4f('0xd')](_0x9d4f('0x23'),_0x12a047?_0x12a047['join'](','):null);},'get':function(){return this[_0x9d4f('0x10')](_0x9d4f('0x23'))?this[_0x9d4f('0x10')](_0x9d4f('0x23'))[_0x9d4f('0x11')](','):null;},'comment':_0x9d4f('0x24')},'trustrpid':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x9d4f('0x3')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no',_0x9d4f('0x25'))},'promiscredir':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no')},'useclientcode':{'type':Sequelize[_0x9d4f('0x3')]('yes','no')},'accountcode':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'setvar':{'type':Sequelize[_0x9d4f('0x2')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no'),'defaultValue':_0x9d4f('0x18')},'busylevel':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'allowoverlap':{'type':Sequelize[_0x9d4f('0x3')]('yes','no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x9d4f('0x18'),'no')},'allowtransfer':{'type':Sequelize['ENUM']('yes','no')},'ignoresdpversion':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize[_0x9d4f('0x2')]},'videosupport':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no',_0x9d4f('0x27')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x9d4f('0x3')]('yes','no')},'mailbox':{'type':Sequelize[_0x9d4f('0x2')]},'session_timers':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x28'),_0x9d4f('0x29'),_0x9d4f('0x2a'))},'session_expires':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'session_minse':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'session_refresher':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x2b'),_0x9d4f('0x2c')),'defaultValue':_0x9d4f('0x2c')},'t38pt_usertpsource':{'type':Sequelize[_0x9d4f('0x2')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0x9d4f('0x2')]},'port':{'type':Sequelize[_0x9d4f('0x26')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0x9d4f('0x18'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'defaultip':{'type':Sequelize[_0x9d4f('0x2')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'sendrpid':{'type':Sequelize[_0x9d4f('0x3')]('yes','no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x9d4f('0x2')]},'callbackextension':{'type':Sequelize[_0x9d4f('0x2')]},'timert1':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'timerb':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'qualifyfreq':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'contactpermit':{'type':Sequelize[_0x9d4f('0x2')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0x9d4f('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0x9d4f('0x2')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'encryption':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no')},'force_avp':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no')},'icesupport':{'type':Sequelize['ENUM'](_0x9d4f('0x18'),'no')},'dtlsenable':{'type':Sequelize['ENUM'](_0x9d4f('0x18'),'no')},'dtlsverify':{'type':Sequelize['ENUM']('yes','no',_0x9d4f('0x2d'),_0x9d4f('0x2e'))},'dtlsrekey':{'type':Sequelize[_0x9d4f('0x26')](0xb)},'dtlscertfile':{'type':Sequelize[_0x9d4f('0x2')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize[_0x9d4f('0x2')]},'dtlscafile':{'type':Sequelize[_0x9d4f('0x2')]},'dtlscapath':{'type':Sequelize[_0x9d4f('0x2')]},'dtlssetup':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x2f'),_0x9d4f('0x30'),_0x9d4f('0x31')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x9d4f('0x2')]},'usereqphone':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x9d4f('0x2')]},'recordofffeature':{'type':Sequelize[_0x9d4f('0x2')]},'call_limit':{'type':Sequelize[_0x9d4f('0x26')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no')},'subscribemwi':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize[_0x9d4f('0x2')]},'parkinglot':{'type':Sequelize[_0x9d4f('0x2')]},'description':{'type':Sequelize[_0x9d4f('0x2')]},'host':{'type':Sequelize[_0x9d4f('0x2')],'defaultValue':_0x9d4f('0x32')},'canreinvite':{'type':Sequelize[_0x9d4f('0x3')](_0x9d4f('0x18'),'no','nonat',_0x9d4f('0x1a'),_0x9d4f('0x33')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x9d4f('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x9d4f('0x2')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x8779=['uas','pai','fingerprint','certificate','active','dynamic','update','update,nonat','sequelize','name','ENUM','peer','friend','STRING','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','setDataValue','transport','join','getDataValue','split','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]','all','ulaw;alaw;gsm','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','INTEGER','always','uac'];(function(_0x1b7ef1,_0x57f93e){var _0x577f11=function(_0x585d88){while(--_0x585d88){_0x1b7ef1['push'](_0x1b7ef1['shift']());}};_0x577f11(++_0x57f93e);}(_0x8779,0x86));var _0x9877=function(_0x5082ce,_0x17e22c){_0x5082ce=_0x5082ce-0x0;var _0x56d3ee=_0x8779[_0x5082ce];return _0x56d3ee;};'use strict';var Sequelize=require(_0x9877('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x9877('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x9877('0x2')]('friend','user',_0x9877('0x3')),'allowNull':![],'defaultValue':_0x9877('0x4')},'context':{'type':Sequelize[_0x9877('0x5')],'allowNull':![],'defaultValue':'from-voip-provider'},'callingpres':{'type':Sequelize[_0x9877('0x2')]('ALLOWED_NOT_SCREENED',_0x9877('0x6'),_0x9877('0x7'),_0x9877('0x8'),_0x9877('0x9'),_0x9877('0xa'),'PROHIB_FAILED_SCREEN','PROHIB')},'deny':{'type':Sequelize[_0x9877('0x5')]},'permit':{'type':Sequelize[_0x9877('0x5')]},'secret':{'type':Sequelize[_0x9877('0x5')]},'md5secret':{'type':Sequelize[_0x9877('0x5')]},'remotesecret':{'type':Sequelize[_0x9877('0x5')]},'transport':{'type':Sequelize['STRING'],'defaultValue':'udp','set':function(_0x1618fb){this[_0x9877('0xb')](_0x9877('0xc'),_0x1618fb?_0x1618fb[_0x9877('0xd')](','):null);},'get':function(){return this['getDataValue'](_0x9877('0xc'))?this[_0x9877('0xe')](_0x9877('0xc'))[_0x9877('0xf')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x9877('0x2')](_0x9877('0x10'),_0x9877('0x11'),'shortinfo',_0x9877('0x12'),_0x9877('0x13')),'defaultValue':_0x9877('0x10')},'directmedia':{'type':Sequelize['ENUM'](_0x9877('0x14'),'no',_0x9877('0x15'),'update',_0x9877('0x16')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x9877('0x2')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x9877('0x5')]},'directmediadeny':{'type':Sequelize[_0x9877('0x5')]},'nat':{'type':Sequelize[_0x9877('0x5')],'defaultValue':_0x9877('0x17'),'set':function(_0x5e6ea4){this[_0x9877('0xb')]('nat',_0x5e6ea4?_0x5e6ea4[_0x9877('0xd')](','):null);},'get':function(){return this[_0x9877('0xe')](_0x9877('0x18'))?this[_0x9877('0xe')](_0x9877('0x18'))[_0x9877('0xf')](','):null;},'comment':_0x9877('0x19')},'callgroup':{'type':Sequelize[_0x9877('0x5')]},'namedcallgroup':{'type':Sequelize[_0x9877('0x5')]},'pickupgroup':{'type':Sequelize[_0x9877('0x5')]},'namedpickupgroup':{'type':Sequelize[_0x9877('0x5')]},'language':{'type':Sequelize[_0x9877('0x5')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x9877('0x5')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0x9877('0x1a')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9877('0x1b'),'set':function(_0x2f5cca){this[_0x9877('0xb')]('allow',_0x2f5cca?_0x2f5cca[_0x9877('0xd')](';'):'ulaw;alaw;gsm');},'get':function(){return this['getDataValue']('allow')?this['getDataValue']('allow')[_0x9877('0xf')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0x9877('0x2')](_0x9877('0x14'),'no')},'insecure':{'type':Sequelize[_0x9877('0x5')],'defaultValue':_0x9877('0x1c'),'set':function(_0x57cb21){this[_0x9877('0xb')](_0x9877('0x1d'),_0x57cb21?_0x57cb21[_0x9877('0xd')](','):null);},'get':function(){return this[_0x9877('0xe')](_0x9877('0x1d'))?this['getDataValue'](_0x9877('0x1d'))[_0x9877('0xf')](','):null;},'comment':_0x9877('0x1e')},'trustrpid':{'type':Sequelize[_0x9877('0x2')](_0x9877('0x14'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0x9877('0x14'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x9877('0x2')](_0x9877('0x14'),'no','never')},'promiscredir':{'type':Sequelize['ENUM'](_0x9877('0x14'),'no')},'useclientcode':{'type':Sequelize['ENUM'](_0x9877('0x14'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0x9877('0x5')]},'callerid':{'type':Sequelize[_0x9877('0x5')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0x9877('0x5')]},'callcounter':{'type':Sequelize[_0x9877('0x2')]('yes','no'),'defaultValue':_0x9877('0x14')},'busylevel':{'type':Sequelize[_0x9877('0x1f')](0xb)},'allowoverlap':{'type':Sequelize[_0x9877('0x2')](_0x9877('0x14'),'no')},'allowsubscribe':{'type':Sequelize[_0x9877('0x2')](_0x9877('0x14'),'no')},'allowtransfer':{'type':Sequelize[_0x9877('0x2')](_0x9877('0x14'),'no')},'ignoresdpversion':{'type':Sequelize[_0x9877('0x2')](_0x9877('0x14'),'no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0x9877('0x2')](_0x9877('0x14'),'no',_0x9877('0x20')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x9877('0x2')]('yes','no')},'mailbox':{'type':Sequelize[_0x9877('0x5')]},'session_timers':{'type':Sequelize['ENUM']('accept','refuse','originate')},'session_expires':{'type':Sequelize[_0x9877('0x1f')](0xb)},'session_minse':{'type':Sequelize[_0x9877('0x1f')](0xb)},'session_refresher':{'type':Sequelize[_0x9877('0x2')](_0x9877('0x21'),_0x9877('0x22')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x9877('0x5')]},'regexten':{'type':Sequelize[_0x9877('0x5')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0x9877('0x5')]},'port':{'type':Sequelize[_0x9877('0x1f')](0x5)},'qualify':{'type':Sequelize[_0x9877('0x2')]('yes','no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x9877('0x1f')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x9877('0x1f')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x9877('0x1f')](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0x9877('0x14'),'no',_0x9877('0x23')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x9877('0x5')]},'callbackextension':{'type':Sequelize[_0x9877('0x5')]},'timert1':{'type':Sequelize[_0x9877('0x1f')](0xb)},'timerb':{'type':Sequelize[_0x9877('0x1f')](0xb)},'qualifyfreq':{'type':Sequelize[_0x9877('0x1f')](0xb)},'contactpermit':{'type':Sequelize[_0x9877('0x5')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0x9877('0x5')]},'unsolicited_mailbox':{'type':Sequelize[_0x9877('0x5')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x9877('0x1f')](0xb)},'encryption':{'type':Sequelize['ENUM'](_0x9877('0x14'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no')},'force_avp':{'type':Sequelize[_0x9877('0x2')](_0x9877('0x14'),'no')},'icesupport':{'type':Sequelize[_0x9877('0x2')](_0x9877('0x14'),'no')},'dtlsenable':{'type':Sequelize[_0x9877('0x2')]('yes','no')},'dtlsverify':{'type':Sequelize['ENUM'](_0x9877('0x14'),'no',_0x9877('0x24'),_0x9877('0x25'))},'dtlsrekey':{'type':Sequelize[_0x9877('0x1f')](0xb)},'dtlscertfile':{'type':Sequelize[_0x9877('0x5')]},'dtlsprivatekey':{'type':Sequelize[_0x9877('0x5')]},'dtlscipher':{'type':Sequelize[_0x9877('0x5')]},'dtlscafile':{'type':Sequelize[_0x9877('0x5')]},'dtlscapath':{'type':Sequelize[_0x9877('0x5')]},'dtlssetup':{'type':Sequelize[_0x9877('0x2')](_0x9877('0x26'),'passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x9877('0x5')]},'usereqphone':{'type':Sequelize[_0x9877('0x2')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x9877('0x5')]},'recordofffeature':{'type':Sequelize[_0x9877('0x5')]},'call_limit':{'type':Sequelize[_0x9877('0x1f')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM'](_0x9877('0x14'),'no')},'subscribemwi':{'type':Sequelize[_0x9877('0x2')]('yes','no')},'vmexten':{'type':Sequelize[_0x9877('0x5')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize[_0x9877('0x5')]},'description':{'type':Sequelize[_0x9877('0x5')]},'host':{'type':Sequelize['STRING'],'defaultValue':_0x9877('0x27')},'canreinvite':{'type':Sequelize['ENUM']('yes','no',_0x9877('0x15'),_0x9877('0x28'),_0x9877('0x29')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x9877('0x5')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x9877('0x5')],'defaultValue':'no'}};
\ No newline at end of file
index 4d5b8e9..1b92202 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','request','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','reject','save','update','get','Trunks','UserProfileResource','destroy','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','offset','order','sort','where','pick','filter','VIRTUAL','merge','Trunk','includeAll','findAll','rows','show','params','fields','include','options','clone','find','omit','createdAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','server/files/templates/registry.ejs','utf8','render','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','root','server/files/templates/trunk.ejs','writeFileSync','rimraf'];(function(_0x27188e,_0x2cb7b7){var _0x466456=function(_0x2b9758){while(--_0x2b9758){_0x27188e['push'](_0x27188e['shift']());}};_0x466456(++_0x2cb7b7);}(_0x9bde,0xe1));var _0xe9bd=function(_0x8fde49,_0x50d944){_0x8fde49=_0x8fde49-0x0;var _0x4e4888=_0x9bde[_0x8fde49];return _0x4e4888;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe9bd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe9bd('0x1'));var rp=require('request-promise');var moment=require(_0xe9bd('0x2'));var BPromise=require(_0xe9bd('0x3'));var Mustache=require(_0xe9bd('0x4'));var util=require(_0xe9bd('0x5'));var path=require(_0xe9bd('0x6'));var sox=require(_0xe9bd('0x7'));var csv=require(_0xe9bd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe9bd('0x9'));var _=require(_0xe9bd('0xa'));var squel=require(_0xe9bd('0xb'));var crypto=require(_0xe9bd('0xc'));var jsforce=require(_0xe9bd('0xd'));var deskjs=require(_0xe9bd('0xe'));var toCsv=require(_0xe9bd('0x8'));var querystring=require(_0xe9bd('0xf'));var Papa=require(_0xe9bd('0x10'));var Redis=require(_0xe9bd('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe9bd('0x12'));var hardwareService=require(_0xe9bd('0x13'));var logger=require(_0xe9bd('0x14'))('api');var utils=require(_0xe9bd('0x15'));var config=require(_0xe9bd('0x16'));var licenseUtil=require(_0xe9bd('0x17'));var db=require(_0xe9bd('0x18'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xe9bd('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x220d07,_0x429e88,_0x3435b4,_0x51109f){return new BPromise(function(_0x47ba5e,_0x46a95e){var _0x248818=_0x51109f||client;return _0x248818[_0xe9bd('0x1a')](_0x220d07,_0x3435b4)[_0xe9bd('0x1b')](function(_0x3360bd){logger[_0xe9bd('0x1c')](_0xe9bd('0x1d'),_0x429e88,'request\x20sent');logger[_0xe9bd('0x1e')](_0xe9bd('0x1f'),_0x429e88,_0xe9bd('0x20'),JSON['stringify'](_0x3360bd));if(_0x3360bd[_0xe9bd('0x21')]){if(_0x3360bd[_0xe9bd('0x21')][_0xe9bd('0x22')]===0x1f4){logger[_0xe9bd('0x21')]('Trunk,\x20%s,\x20%s',_0x429e88,_0x3360bd[_0xe9bd('0x21')]['message']);return _0x46a95e(_0x3360bd[_0xe9bd('0x21')]['message']);}logger[_0xe9bd('0x21')](_0xe9bd('0x1d'),_0x429e88,_0x3360bd[_0xe9bd('0x21')][_0xe9bd('0x23')]);return _0x47ba5e(_0x3360bd[_0xe9bd('0x21')][_0xe9bd('0x23')]);}else{logger[_0xe9bd('0x1c')]('Trunk,\x20%s,\x20%s',_0x429e88,_0xe9bd('0x20'));_0x47ba5e(_0x3360bd[_0xe9bd('0x24')]['message']);}})[_0xe9bd('0x25')](function(_0x505c23){logger[_0xe9bd('0x21')](_0xe9bd('0x1d'),_0x429e88,_0x505c23);_0x46a95e(_0x505c23);});});}function respondWithStatusCode(_0x36f8c0,_0xf02209){_0xf02209=_0xf02209||0xcc;return function(_0x5bc4bf){if(_0x5bc4bf){return _0x36f8c0[_0xe9bd('0x26')](_0xf02209);}return _0x36f8c0[_0xe9bd('0x27')](_0xf02209)[_0xe9bd('0x28')]();};}function respondWithResult(_0x39b206,_0x2641be){_0x2641be=_0x2641be||0xc8;return function(_0xb52d45){if(_0xb52d45){return _0x39b206[_0xe9bd('0x27')](_0x2641be)[_0xe9bd('0x29')](_0xb52d45);}};}function respondWithFilteredResult(_0x1ae889,_0x5987af){return function(_0x3c211a){if(_0x3c211a){var _0x38fdfa=typeof _0x5987af['offset']===_0xe9bd('0x2a')&&typeof _0x5987af[_0xe9bd('0x2b')]===_0xe9bd('0x2a');var _0x429055=_0x3c211a[_0xe9bd('0x2c')];var _0x183601=_0x38fdfa?0x0:_0x5987af['offset'];var _0x5b7f1d=_0x38fdfa?_0x3c211a[_0xe9bd('0x2c')]:_0x5987af['offset']+_0x5987af[_0xe9bd('0x2b')];var _0x1f2c0e;if(_0x5b7f1d>=_0x429055){_0x5b7f1d=_0x429055;_0x1f2c0e=0xc8;}else{_0x1f2c0e=0xce;}_0x1ae889[_0xe9bd('0x27')](_0x1f2c0e);return _0x1ae889[_0xe9bd('0x2d')](_0xe9bd('0x2e'),_0x183601+'-'+_0x5b7f1d+'/'+_0x429055)['json'](_0x3c211a);}return null;};}function patchUpdates(_0x4b7bc2){return function(_0x7f2c5){try{jsonpatch[_0xe9bd('0x2f')](_0x7f2c5,_0x4b7bc2,!![]);}catch(_0x3f96a0){return BPromise[_0xe9bd('0x30')](_0x3f96a0);}return _0x7f2c5[_0xe9bd('0x31')]();};}function saveUpdates(_0x1f0f9e,_0x3c31ee){return function(_0x66213a){if(_0x66213a){return _0x66213a[_0xe9bd('0x32')](_0x1f0f9e)['then'](function(_0x426004){return _0x426004;});}return null;};}function removeEntity(_0x81a31f,_0x390a43){return function(_0x5117bc){if(_0x5117bc){return _0x5117bc['destroy']()[_0xe9bd('0x1b')](function(){var _0x2e9593=_0x5117bc[_0xe9bd('0x33')]({'plain':!![]});var _0x3ed60a=_0xe9bd('0x34');return db[_0xe9bd('0x35')][_0xe9bd('0x36')]({'where':{'type':_0x3ed60a,'resourceId':_0x2e9593['id']}})[_0xe9bd('0x1b')](function(){return _0x5117bc;});})[_0xe9bd('0x1b')](function(){_0x81a31f[_0xe9bd('0x27')](0xcc)[_0xe9bd('0x28')]();});}};}function handleEntityNotFound(_0x549dd1,_0x2ad46e){return function(_0x199477){if(!_0x199477){_0x549dd1[_0xe9bd('0x26')](0x194);}return _0x199477;};}function handleError(_0x8ff624,_0x264ba0){_0x264ba0=_0x264ba0||0x1f4;return function(_0x147da5){logger['error'](_0x147da5[_0xe9bd('0x37')]);if(_0x147da5[_0xe9bd('0x38')]){delete _0x147da5['name'];}_0x8ff624[_0xe9bd('0x27')](_0x264ba0)[_0xe9bd('0x39')](_0x147da5);};}exports['index']=function(_0x4b1da0,_0x2785e6){var _0xdf43b9={},_0x4d2f3d={},_0x2d1289={'count':0x0,'rows':[]};var _0x3ea705=_[_0xe9bd('0x3a')](db['Trunk'][_0xe9bd('0x3b')],function(_0x4d1945){return{'name':_0x4d1945[_0xe9bd('0x3c')],'type':_0x4d1945[_0xe9bd('0x3d')][_0xe9bd('0x3e')]};});_0x4d2f3d[_0xe9bd('0x3f')]=_['map'](_0x3ea705,_0xe9bd('0x38'));_0x4d2f3d[_0xe9bd('0x40')]=_[_0xe9bd('0x41')](_0x4b1da0[_0xe9bd('0x40')]);_0x4d2f3d[_0xe9bd('0x42')]=_[_0xe9bd('0x43')](_0x4d2f3d[_0xe9bd('0x3f')],_0x4d2f3d[_0xe9bd('0x40')]);_0xdf43b9[_0xe9bd('0x44')]=_[_0xe9bd('0x43')](_0x4d2f3d['model'],qs['fields'](_0x4b1da0[_0xe9bd('0x40')]['fields']));_0xdf43b9[_0xe9bd('0x44')]=_0xdf43b9[_0xe9bd('0x44')][_0xe9bd('0x45')]?_0xdf43b9['attributes']:_0x4d2f3d[_0xe9bd('0x3f')];if(!_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x46')]('nolimit')){_0xdf43b9[_0xe9bd('0x2b')]=qs[_0xe9bd('0x2b')](_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x2b')]);_0xdf43b9[_0xe9bd('0x47')]=qs[_0xe9bd('0x47')](_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x47')]);}_0xdf43b9[_0xe9bd('0x48')]=qs[_0xe9bd('0x49')](_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x49')]);_0xdf43b9[_0xe9bd('0x4a')]=qs[_0xe9bd('0x42')](_[_0xe9bd('0x4b')](_0x4b1da0['query'],_0x4d2f3d['filters']),_0x3ea705);if(_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x4c')]){_0xdf43b9[_0xe9bd('0x4a')]=_['merge'](_0xdf43b9['where'],{'$or':_[_0xe9bd('0x3a')](_0x3ea705,function(_0x3f6f22){if(_0x3f6f22[_0xe9bd('0x3d')]!==_0xe9bd('0x4d')){var _0x39fb61={};_0x39fb61[_0x3f6f22[_0xe9bd('0x38')]]={'$like':'%'+_0x4b1da0[_0xe9bd('0x40')]['filter']+'%'};return _0x39fb61;}})});}_0xdf43b9=_[_0xe9bd('0x4e')]({},_0xdf43b9,_0x4b1da0['options']);var _0x36726e={'where':_0xdf43b9[_0xe9bd('0x4a')]};return db[_0xe9bd('0x4f')][_0xe9bd('0x2c')](_0x36726e)[_0xe9bd('0x1b')](function(_0x4b7b67){_0x2d1289[_0xe9bd('0x2c')]=_0x4b7b67;if(_0x4b1da0[_0xe9bd('0x40')][_0xe9bd('0x50')]){_0xdf43b9['include']=[{'all':!![]}];}return db[_0xe9bd('0x4f')][_0xe9bd('0x51')](_0xdf43b9);})[_0xe9bd('0x1b')](function(_0x5a466b){_0x2d1289[_0xe9bd('0x52')]=_0x5a466b;return _0x2d1289;})[_0xe9bd('0x1b')](respondWithFilteredResult(_0x2785e6,_0xdf43b9))[_0xe9bd('0x25')](handleError(_0x2785e6,null));};exports[_0xe9bd('0x53')]=function(_0x1ee09c,_0x579d26){var _0x3f4833={'raw':![],'where':{'id':_0x1ee09c[_0xe9bd('0x54')]['id']}},_0x4b8ff9={};_0x4b8ff9[_0xe9bd('0x3f')]=_[_0xe9bd('0x41')](db[_0xe9bd('0x4f')][_0xe9bd('0x3b')]);_0x4b8ff9['query']=_[_0xe9bd('0x41')](_0x1ee09c['query']);_0x4b8ff9[_0xe9bd('0x42')]=_[_0xe9bd('0x43')](_0x4b8ff9['model'],_0x4b8ff9['query']);_0x3f4833[_0xe9bd('0x44')]=_['intersection'](_0x4b8ff9[_0xe9bd('0x3f')],qs['fields'](_0x1ee09c[_0xe9bd('0x40')][_0xe9bd('0x55')]));_0x3f4833['attributes']=_0x3f4833[_0xe9bd('0x44')]['length']?_0x3f4833[_0xe9bd('0x44')]:_0x4b8ff9[_0xe9bd('0x3f')];if(_0x1ee09c[_0xe9bd('0x40')]['includeAll']){_0x3f4833[_0xe9bd('0x56')]=[{'all':!![]}];}_0x3f4833=_[_0xe9bd('0x4e')]({},_0x3f4833,_0x1ee09c[_0xe9bd('0x57')]);return db[_0xe9bd('0x4f')]['find'](_0x3f4833)['then'](handleEntityNotFound(_0x579d26,null))[_0xe9bd('0x1b')](respondWithResult(_0x579d26,null))['catch'](handleError(_0x579d26,null));};exports[_0xe9bd('0x58')]=function(_0x3c33b8,_0xc7dd2f){var _0xc818b4={'where':{'id':_0x3c33b8[_0xe9bd('0x54')]['id']}},_0x159f68={};_0x159f68[_0xe9bd('0x3f')]=_[_0xe9bd('0x41')](db[_0xe9bd('0x4f')][_0xe9bd('0x3b')]);_0xc818b4[_0xe9bd('0x44')]=_[_0xe9bd('0x43')](_0x159f68['model'],qs['fields'](_0x3c33b8['query'][_0xe9bd('0x55')]));_0xc818b4['attributes']=_0xc818b4[_0xe9bd('0x44')][_0xe9bd('0x45')]?_0xc818b4[_0xe9bd('0x44')]:_0x159f68[_0xe9bd('0x3f')];if(_0x3c33b8[_0xe9bd('0x40')][_0xe9bd('0x50')]){_0xc818b4[_0xe9bd('0x56')]=[{'all':!![]}];}_0xc818b4=_[_0xe9bd('0x4e')]({},_0xc818b4,_0x3c33b8[_0xe9bd('0x57')]);return db['Trunk'][_0xe9bd('0x59')](_0xc818b4)[_0xe9bd('0x1b')](handleEntityNotFound(_0xc7dd2f,null))[_0xe9bd('0x1b')](function(_0x3f848d){if(_0x3f848d){var _0x4d58c1=_0x3f848d[_0xe9bd('0x33')]({'plain':!![]});_0x4d58c1=qs[_0xe9bd('0x5a')](_0x4d58c1,['id',_0xe9bd('0x5b'),'updatedAt']);_0x3c33b8[_0xe9bd('0x5c')]=_[_0xe9bd('0x5a')](_0x3c33b8[_0xe9bd('0x5c')],['id',_0xe9bd('0x5b'),'updatedAt']);return db['Trunk'][_0xe9bd('0x5d')](_[_0xe9bd('0x4e')](_0x4d58c1,_0x3c33b8[_0xe9bd('0x5c')]),{'include':_0x3c33b8[_0xe9bd('0x40')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x305efa){var _0x20855b=_0x3c33b8[_0xe9bd('0x5e')][_0xe9bd('0x33')]({'plain':!![]});if(!_0x20855b)throw new Error(_0xe9bd('0x5f'));if(_0x20855b[_0xe9bd('0x60')]==='user'){var _0x179c8d=_0x305efa['get']({'plain':!![]});var _0x27e07c=_0xe9bd('0x34');return db[_0xe9bd('0x61')][_0xe9bd('0x59')]({'where':{'name':_0x27e07c,'userProfileId':_0x20855b['userProfileId']},'raw':!![]})[_0xe9bd('0x1b')](function(_0x263ad9){if(_0x263ad9&&_0x263ad9[_0xe9bd('0x62')]===0x0){return db['UserProfileResource'][_0xe9bd('0x5d')]({'name':_0x179c8d[_0xe9bd('0x38')],'resourceId':_0x179c8d['id'],'type':_0x263ad9[_0xe9bd('0x38')],'sectionId':_0x263ad9['id']},{})[_0xe9bd('0x1b')](function(){return _0x305efa;});}else{return _0x305efa;}})[_0xe9bd('0x25')](function(_0x16b66c){logger[_0xe9bd('0x21')](_0xe9bd('0x63'),_0x16b66c);throw _0x16b66c;});}return _0x305efa;});}})[_0xe9bd('0x1b')](respondWithResult(_0xc7dd2f,0xc9))[_0xe9bd('0x25')](handleError(_0xc7dd2f,null));};exports[_0xe9bd('0x5d')]=function(_0x37d07a,_0x5d1e4b,_0x3a12e9){var _0x9d0603;return db['Trunk'][_0xe9bd('0x5d')](_0x37d07a[_0xe9bd('0x5c')],{'raw':!![]})['then'](function(_0x561165){_0x9d0603=_0x561165;return db[_0xe9bd('0x4f')][_0xe9bd('0x51')]({'raw':!![]});})['then'](function(_0x4ec8be){var _0x4a6422=fs[_0xe9bd('0x64')](path['join'](config['root'],'server/files/templates/trunk.ejs'),'utf8');var _0x1fc88d=fs[_0xe9bd('0x64')](path[_0xe9bd('0x65')](config['root'],_0xe9bd('0x66')),_0xe9bd('0x67'));var _0x337284=ejs[_0xe9bd('0x68')](_0x4a6422,{'trunks':_0x4ec8be||[]});fs['writeFileSync'](_0xe9bd('0x69'),_0x337284);if(_0x9d0603[_0xe9bd('0x6a')]){var _0x11ebcb=ejs['render'](_0x1fc88d,{'trunks':_0x4ec8be||[]});fs['writeFileSync'](_0xe9bd('0x6b'),_0x11ebcb);}})[_0xe9bd('0x1b')](function(){return respondWithRpcPromise(_0xe9bd('0x6c'),_0xe9bd('0x5d'),{'module':_0xe9bd('0x6d')});})[_0xe9bd('0x1b')](function(){var _0x3fda4c=_0x37d07a[_0xe9bd('0x5e')]['get']({'plain':!![]});if(!_0x3fda4c)throw new Error(_0xe9bd('0x5f'));if(_0x3fda4c[_0xe9bd('0x60')]===_0xe9bd('0x5e')){var _0x3db47a=_0x9d0603[_0xe9bd('0x33')]({'plain':!![]});return db['UserProfileSection'][_0xe9bd('0x59')]({'where':{'name':'Trunks','userProfileId':_0x3fda4c['userProfileId']},'raw':!![]})[_0xe9bd('0x1b')](function(_0x4496e3){if(_0x4496e3&&_0x4496e3['autoAssociation']===0x0){return db[_0xe9bd('0x35')][_0xe9bd('0x5d')]({'name':_0x3db47a[_0xe9bd('0x38')],'resourceId':_0x3db47a['id'],'type':_0x4496e3[_0xe9bd('0x38')],'sectionId':_0x4496e3['id']},{})['then'](function(){return _0x9d0603;});}else{return _0x9d0603;}})[_0xe9bd('0x25')](function(_0x41fb41){logger['error'](_0xe9bd('0x63'),_0x41fb41);throw _0x41fb41;});}return _0x9d0603;})[_0xe9bd('0x1b')](respondWithResult(_0x5d1e4b,0xc9))[_0xe9bd('0x25')](handleError(_0x5d1e4b,null));};exports[_0xe9bd('0x32')]=function(_0x2e63c7,_0x1a36aa,_0x466a89){var _0x5e127b;return db[_0xe9bd('0x4f')][_0xe9bd('0x59')]({'where':{'id':_0x2e63c7[_0xe9bd('0x54')]['id']}})[_0xe9bd('0x1b')](handleEntityNotFound(_0x1a36aa,null))[_0xe9bd('0x1b')](saveUpdates(_0x2e63c7[_0xe9bd('0x5c')],null))[_0xe9bd('0x1b')](function(_0x2adc49){if(_0x2adc49){_0x5e127b=_0x2adc49;return db[_0xe9bd('0x4f')]['findAll']({'raw':!![]});}})[_0xe9bd('0x1b')](function(_0x466952){if(_0x466952){var _0x256890=fs[_0xe9bd('0x64')](path[_0xe9bd('0x65')](config[_0xe9bd('0x6e')],_0xe9bd('0x6f')),'utf8');var _0x18519d=fs[_0xe9bd('0x64')](path['join'](config[_0xe9bd('0x6e')],_0xe9bd('0x66')),_0xe9bd('0x67'));var _0x2083c4=ejs[_0xe9bd('0x68')](_0x256890,{'trunks':_0x466952||[]});fs[_0xe9bd('0x70')](_0xe9bd('0x69'),_0x2083c4);var _0x4f3dc6=ejs['render'](_0x18519d,{'trunks':_0x466952||[]});fs[_0xe9bd('0x70')](_0xe9bd('0x6b'),_0x4f3dc6);return respondWithRpcPromise(_0xe9bd('0x6c'),_0xe9bd('0x32'),{'module':_0xe9bd('0x6d')});}return null;})[_0xe9bd('0x1b')](function(_0x1b46f4){if(_0x1b46f4){return _0x5e127b;}})['then'](respondWithResult(_0x1a36aa,null))[_0xe9bd('0x25')](handleError(_0x1a36aa,null));};exports[_0xe9bd('0x36')]=function(_0x29833b,_0x256862,_0x14cdd5){var _0x74063;return db[_0xe9bd('0x4f')]['find']({'where':{'id':_0x29833b['params']['id']}})['then'](handleEntityNotFound(_0x256862,null))[_0xe9bd('0x1b')](removeEntity(_0x256862,null))['then'](function(){return db['Trunk']['findAll']({'raw':!![]});})[_0xe9bd('0x1b')](function(_0x402ab2){var _0xf170d4=fs[_0xe9bd('0x64')](path[_0xe9bd('0x65')](config[_0xe9bd('0x6e')],_0xe9bd('0x6f')),_0xe9bd('0x67'));var _0x14ec42=fs['readFileSync'](path[_0xe9bd('0x65')](config['root'],_0xe9bd('0x66')),_0xe9bd('0x67'));var _0x22c67f=ejs[_0xe9bd('0x68')](_0xf170d4,{'trunks':_0x402ab2});var _0x416938=ejs['render'](_0x14ec42,{'trunks':_0x402ab2});fs['writeFileSync']('/etc/asterisk/sip_xcally_trunks.conf',_0x22c67f);fs[_0xe9bd('0x70')](_0xe9bd('0x6b'),_0x416938);return respondWithRpcPromise('Reload',_0xe9bd('0x36'),{'module':_0xe9bd('0x6d')});})[_0xe9bd('0x25')](handleError(_0x256862,null));};
\ No newline at end of file
+var _0x98a8=['../../mysqldb','jayson/promise','client','request','Trunk,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','Trunks','UserProfileResource','stack','name','map','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','Trunk','include','show','params','keys','rawAttributes','includeAll','clone','find','createdAt','updatedAt','body','omit','create','user','role','UserProfileSection','userProfileId','autoAssociation','findAll','readFileSync','root','server/files/templates/trunk.ejs','join','server/files/templates/registry.ejs','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment'];(function(_0x195969,_0x361d24){var _0x28df58=function(_0x241d81){while(--_0x241d81){_0x195969['push'](_0x195969['shift']());}};_0x28df58(++_0x361d24);}(_0x98a8,0x12c));var _0x898a=function(_0xaf145c,_0x239651){_0xaf145c=_0xaf145c-0x0;var _0x1a31de=_0x98a8[_0xaf145c];return _0x1a31de;};'use strict';var emlformat=require(_0x898a('0x0'));var rimraf=require(_0x898a('0x1'));var zipdir=require(_0x898a('0x2'));var jsonpatch=require(_0x898a('0x3'));var rp=require(_0x898a('0x4'));var moment=require(_0x898a('0x5'));var BPromise=require(_0x898a('0x6'));var Mustache=require('mustache');var util=require(_0x898a('0x7'));var path=require(_0x898a('0x8'));var sox=require(_0x898a('0x9'));var csv=require(_0x898a('0xa'));var ejs=require(_0x898a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x898a('0xc'));var squel=require('squel');var crypto=require(_0x898a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x898a('0xe'));var toCsv=require(_0x898a('0xa'));var querystring=require(_0x898a('0xf'));var Papa=require(_0x898a('0x10'));var Redis=require(_0x898a('0x11'));var authService=require(_0x898a('0x12'));var qs=require(_0x898a('0x13'));var as=require(_0x898a('0x14'));var hardwareService=require(_0x898a('0x15'));var logger=require('../../config/logger')(_0x898a('0x16'));var utils=require('../../config/utils');var config=require(_0x898a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x898a('0x18'))['db'];var jayson=require(_0x898a('0x19'));var client=jayson[_0x898a('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bfded,_0x5b5c9c,_0x373d53,_0x1f5be4){return new BPromise(function(_0xb24335,_0x116fbe){var _0x1873e9=_0x1f5be4||client;return _0x1873e9[_0x898a('0x1b')](_0x5bfded,_0x373d53)['then'](function(_0x47033c){logger['info'](_0x898a('0x1c'),_0x5b5c9c,'request\x20sent');logger[_0x898a('0x1d')]('Trunk,\x20%s,\x20%s,\x20%s',_0x5b5c9c,_0x898a('0x1e'),JSON['stringify'](_0x47033c));if(_0x47033c[_0x898a('0x1f')]){if(_0x47033c[_0x898a('0x1f')][_0x898a('0x20')]===0x1f4){logger['error'](_0x898a('0x1c'),_0x5b5c9c,_0x47033c['error']['message']);return _0x116fbe(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x5b5c9c,_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);return _0xb24335(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}else{logger[_0x898a('0x22')](_0x898a('0x1c'),_0x5b5c9c,_0x898a('0x1e'));_0xb24335(_0x47033c['result'][_0x898a('0x21')]);}})[_0x898a('0x23')](function(_0x11cae2){logger[_0x898a('0x1f')](_0x898a('0x1c'),_0x5b5c9c,_0x11cae2);_0x116fbe(_0x11cae2);});});}function respondWithStatusCode(_0x310bfa,_0x4e254d){_0x4e254d=_0x4e254d||0xcc;return function(_0x274cdf){if(_0x274cdf){return _0x310bfa[_0x898a('0x24')](_0x4e254d);}return _0x310bfa[_0x898a('0x25')](_0x4e254d)[_0x898a('0x26')]();};}function respondWithResult(_0x3901ab,_0x1426e3){_0x1426e3=_0x1426e3||0xc8;return function(_0x5b7719){if(_0x5b7719){return _0x3901ab[_0x898a('0x25')](_0x1426e3)['json'](_0x5b7719);}};}function respondWithFilteredResult(_0x513c6b,_0x53ddb2){return function(_0x3678be){if(_0x3678be){var _0x1f4d86=typeof _0x53ddb2[_0x898a('0x27')]===_0x898a('0x28')&&typeof _0x53ddb2[_0x898a('0x29')]===_0x898a('0x28');var _0x398e98=_0x3678be[_0x898a('0x2a')];var _0xd31922=_0x1f4d86?0x0:_0x53ddb2['offset'];var _0x4b3e68=_0x1f4d86?_0x3678be['count']:_0x53ddb2[_0x898a('0x27')]+_0x53ddb2[_0x898a('0x29')];var _0x3b7704;if(_0x4b3e68>=_0x398e98){_0x4b3e68=_0x398e98;_0x3b7704=0xc8;}else{_0x3b7704=0xce;}_0x513c6b[_0x898a('0x25')](_0x3b7704);return _0x513c6b[_0x898a('0x2b')](_0x898a('0x2c'),_0xd31922+'-'+_0x4b3e68+'/'+_0x398e98)[_0x898a('0x2d')](_0x3678be);}return null;};}function patchUpdates(_0xf74645){return function(_0x18773a){try{jsonpatch[_0x898a('0x2e')](_0x18773a,_0xf74645,!![]);}catch(_0x44c5d2){return BPromise[_0x898a('0x2f')](_0x44c5d2);}return _0x18773a['save']();};}function saveUpdates(_0x7a1eb5,_0x17a5f3){return function(_0x26eead){if(_0x26eead){return _0x26eead[_0x898a('0x30')](_0x7a1eb5)[_0x898a('0x31')](function(_0x47af5b){return _0x47af5b;});}return null;};}function removeEntity(_0x48cefb,_0x20a3fe){return function(_0x1e2fd4){if(_0x1e2fd4){return _0x1e2fd4[_0x898a('0x32')]()['then'](function(){var _0x105477=_0x1e2fd4[_0x898a('0x33')]({'plain':!![]});var _0x5eafc7=_0x898a('0x34');return db[_0x898a('0x35')][_0x898a('0x32')]({'where':{'type':_0x5eafc7,'resourceId':_0x105477['id']}})[_0x898a('0x31')](function(){return _0x1e2fd4;});})[_0x898a('0x31')](function(){_0x48cefb['status'](0xcc)[_0x898a('0x26')]();});}};}function handleEntityNotFound(_0x5baf5b,_0x573eb3){return function(_0x14e2dc){if(!_0x14e2dc){_0x5baf5b['sendStatus'](0x194);}return _0x14e2dc;};}function handleError(_0x3c9588,_0x4b3aac){_0x4b3aac=_0x4b3aac||0x1f4;return function(_0x37cb11){logger['error'](_0x37cb11[_0x898a('0x36')]);if(_0x37cb11[_0x898a('0x37')]){delete _0x37cb11[_0x898a('0x37')];}_0x3c9588['status'](_0x4b3aac)['send'](_0x37cb11);};}exports['index']=function(_0x1575d2,_0x429c32){var _0x5a228f={},_0xdd019d={},_0x3d3463={'count':0x0,'rows':[]};var _0xe84f7e=_[_0x898a('0x38')](db['Trunk']['rawAttributes'],function(_0x3aed01){return{'name':_0x3aed01[_0x898a('0x39')],'type':_0x3aed01['type']['key']};});_0xdd019d[_0x898a('0x3a')]=_[_0x898a('0x38')](_0xe84f7e,_0x898a('0x37'));_0xdd019d[_0x898a('0x3b')]=_['keys'](_0x1575d2[_0x898a('0x3b')]);_0xdd019d[_0x898a('0x3c')]=_['intersection'](_0xdd019d['model'],_0xdd019d['query']);_0x5a228f[_0x898a('0x3d')]=_[_0x898a('0x3e')](_0xdd019d[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x3f')]));_0x5a228f[_0x898a('0x3d')]=_0x5a228f[_0x898a('0x3d')][_0x898a('0x40')]?_0x5a228f[_0x898a('0x3d')]:_0xdd019d[_0x898a('0x3a')];if(!_0x1575d2[_0x898a('0x3b')][_0x898a('0x41')](_0x898a('0x42'))){_0x5a228f[_0x898a('0x29')]=qs['limit'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x29')]);_0x5a228f[_0x898a('0x27')]=qs['offset'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x27')]);}_0x5a228f[_0x898a('0x43')]=qs[_0x898a('0x44')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x44')]);_0x5a228f[_0x898a('0x45')]=qs[_0x898a('0x3c')](_['pick'](_0x1575d2[_0x898a('0x3b')],_0xdd019d[_0x898a('0x3c')]),_0xe84f7e);if(_0x1575d2[_0x898a('0x3b')][_0x898a('0x46')]){_0x5a228f['where']=_[_0x898a('0x47')](_0x5a228f[_0x898a('0x45')],{'$or':_['map'](_0xe84f7e,function(_0x241677){if(_0x241677['type']!==_0x898a('0x48')){var _0x5137c4={};_0x5137c4[_0x241677['name']]={'$like':'%'+_0x1575d2[_0x898a('0x3b')]['filter']+'%'};return _0x5137c4;}})});}_0x5a228f=_[_0x898a('0x47')]({},_0x5a228f,_0x1575d2[_0x898a('0x49')]);var _0x4d6ac0={'where':_0x5a228f[_0x898a('0x45')]};return db[_0x898a('0x4a')]['count'](_0x4d6ac0)[_0x898a('0x31')](function(_0x199437){_0x3d3463[_0x898a('0x2a')]=_0x199437;if(_0x1575d2[_0x898a('0x3b')]['includeAll']){_0x5a228f[_0x898a('0x4b')]=[{'all':!![]}];}return db[_0x898a('0x4a')]['findAll'](_0x5a228f);})[_0x898a('0x31')](function(_0x1d8c16){_0x3d3463['rows']=_0x1d8c16;return _0x3d3463;})[_0x898a('0x31')](respondWithFilteredResult(_0x429c32,_0x5a228f))['catch'](handleError(_0x429c32,null));};exports[_0x898a('0x4c')]=function(_0x41f291,_0x32ccb9){var _0x50f9e3={'raw':![],'where':{'id':_0x41f291[_0x898a('0x4d')]['id']}},_0x2f6cb3={};_0x2f6cb3[_0x898a('0x3a')]=_[_0x898a('0x4e')](db['Trunk'][_0x898a('0x4f')]);_0x2f6cb3['query']=_[_0x898a('0x4e')](_0x41f291[_0x898a('0x3b')]);_0x2f6cb3[_0x898a('0x3c')]=_['intersection'](_0x2f6cb3[_0x898a('0x3a')],_0x2f6cb3[_0x898a('0x3b')]);_0x50f9e3[_0x898a('0x3d')]=_['intersection'](_0x2f6cb3['model'],qs[_0x898a('0x3f')](_0x41f291[_0x898a('0x3b')][_0x898a('0x3f')]));_0x50f9e3[_0x898a('0x3d')]=_0x50f9e3[_0x898a('0x3d')][_0x898a('0x40')]?_0x50f9e3[_0x898a('0x3d')]:_0x2f6cb3[_0x898a('0x3a')];if(_0x41f291[_0x898a('0x3b')][_0x898a('0x50')]){_0x50f9e3[_0x898a('0x4b')]=[{'all':!![]}];}_0x50f9e3=_['merge']({},_0x50f9e3,_0x41f291[_0x898a('0x49')]);return db[_0x898a('0x4a')]['find'](_0x50f9e3)[_0x898a('0x31')](handleEntityNotFound(_0x32ccb9,null))['then'](respondWithResult(_0x32ccb9,null))['catch'](handleError(_0x32ccb9,null));};exports[_0x898a('0x51')]=function(_0x124f9b,_0x209529){var _0x5bfd61={'where':{'id':_0x124f9b[_0x898a('0x4d')]['id']}},_0x556fd8={};_0x556fd8[_0x898a('0x3a')]=_['keys'](db[_0x898a('0x4a')][_0x898a('0x4f')]);_0x5bfd61['attributes']=_[_0x898a('0x3e')](_0x556fd8[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x124f9b['query'][_0x898a('0x3f')]));_0x5bfd61[_0x898a('0x3d')]=_0x5bfd61[_0x898a('0x3d')][_0x898a('0x40')]?_0x5bfd61[_0x898a('0x3d')]:_0x556fd8[_0x898a('0x3a')];if(_0x124f9b['query'][_0x898a('0x50')]){_0x5bfd61['include']=[{'all':!![]}];}_0x5bfd61=_[_0x898a('0x47')]({},_0x5bfd61,_0x124f9b[_0x898a('0x49')]);return db[_0x898a('0x4a')][_0x898a('0x52')](_0x5bfd61)[_0x898a('0x31')](handleEntityNotFound(_0x209529,null))[_0x898a('0x31')](function(_0x2486a5){if(_0x2486a5){var _0x75ff57=_0x2486a5[_0x898a('0x33')]({'plain':!![]});_0x75ff57=qs['omit'](_0x75ff57,['id',_0x898a('0x53'),_0x898a('0x54')]);_0x124f9b[_0x898a('0x55')]=_[_0x898a('0x56')](_0x124f9b[_0x898a('0x55')],['id',_0x898a('0x53'),_0x898a('0x54')]);return db[_0x898a('0x4a')][_0x898a('0x57')](_[_0x898a('0x47')](_0x75ff57,_0x124f9b[_0x898a('0x55')]),{'include':_0x124f9b[_0x898a('0x3b')][_0x898a('0x50')]?[{'all':!![]}]:undefined})[_0x898a('0x31')](function(_0x22f9ba){var _0x5f42ae=_0x124f9b[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x5f42ae)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5f42ae[_0x898a('0x59')]===_0x898a('0x58')){var _0x5f0944=_0x22f9ba[_0x898a('0x33')]({'plain':!![]});var _0x1daecd=_0x898a('0x34');return db[_0x898a('0x5a')]['find']({'where':{'name':_0x1daecd,'userProfileId':_0x5f42ae[_0x898a('0x5b')]},'raw':!![]})[_0x898a('0x31')](function(_0x137935){if(_0x137935&&_0x137935[_0x898a('0x5c')]===0x0){return db['UserProfileResource'][_0x898a('0x57')]({'name':_0x5f0944[_0x898a('0x37')],'resourceId':_0x5f0944['id'],'type':_0x137935['name'],'sectionId':_0x137935['id']},{})[_0x898a('0x31')](function(){return _0x22f9ba;});}else{return _0x22f9ba;}})[_0x898a('0x23')](function(_0x5b7019){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5b7019);throw _0x5b7019;});}return _0x22f9ba;});}})[_0x898a('0x31')](respondWithResult(_0x209529,0xc9))['catch'](handleError(_0x209529,null));};exports['create']=function(_0x5ed35e,_0xfdd6d8,_0x473f5c){var _0x3909c5;return db[_0x898a('0x4a')]['create'](_0x5ed35e['body'],{'raw':!![]})[_0x898a('0x31')](function(_0x232be0){_0x3909c5=_0x232be0;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x41cf94){var _0x30051d=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x42fda8=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),_0x898a('0x63'));var _0x3bcc3d=ejs[_0x898a('0x64')](_0x30051d,{'trunks':_0x41cf94||[]});fs[_0x898a('0x65')](_0x898a('0x66'),_0x3bcc3d);if(_0x3909c5[_0x898a('0x67')]){var _0x307849=ejs[_0x898a('0x64')](_0x42fda8,{'trunks':_0x41cf94||[]});fs['writeFileSync'](_0x898a('0x68'),_0x307849);}})['then'](function(){return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x57'),{'module':_0x898a('0x6a')});})['then'](function(){var _0x31102d=_0x5ed35e[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x31102d)throw new Error(_0x898a('0x6b'));if(_0x31102d[_0x898a('0x59')]==='user'){var _0x4b9487=_0x3909c5[_0x898a('0x33')]({'plain':!![]});return db[_0x898a('0x5a')][_0x898a('0x52')]({'where':{'name':_0x898a('0x34'),'userProfileId':_0x31102d['userProfileId']},'raw':!![]})[_0x898a('0x31')](function(_0x3d3451){if(_0x3d3451&&_0x3d3451[_0x898a('0x5c')]===0x0){return db[_0x898a('0x35')][_0x898a('0x57')]({'name':_0x4b9487[_0x898a('0x37')],'resourceId':_0x4b9487['id'],'type':_0x3d3451[_0x898a('0x37')],'sectionId':_0x3d3451['id']},{})[_0x898a('0x31')](function(){return _0x3909c5;});}else{return _0x3909c5;}})['catch'](function(_0x32a207){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32a207);throw _0x32a207;});}return _0x3909c5;})[_0x898a('0x31')](respondWithResult(_0xfdd6d8,0xc9))['catch'](handleError(_0xfdd6d8,null));};exports[_0x898a('0x30')]=function(_0x4b2575,_0x2471d8,_0x387f2c){var _0x3b07dc;return db[_0x898a('0x4a')][_0x898a('0x52')]({'where':{'id':_0x4b2575[_0x898a('0x4d')]['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x2471d8,null))[_0x898a('0x31')](saveUpdates(_0x4b2575[_0x898a('0x55')],null))['then'](function(_0x3fe54b){if(_0x3fe54b){_0x3b07dc=_0x3fe54b;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});}})[_0x898a('0x31')](function(_0x290972){if(_0x290972){var _0x1d594b=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x4fad03=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config['root'],'server/files/templates/registry.ejs'),_0x898a('0x63'));var _0x4a79a4=ejs[_0x898a('0x64')](_0x1d594b,{'trunks':_0x290972||[]});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x4a79a4);var _0x3f6815=ejs[_0x898a('0x64')](_0x4fad03,{'trunks':_0x290972||[]});fs[_0x898a('0x65')](_0x898a('0x68'),_0x3f6815);return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x30'),{'module':_0x898a('0x6a')});}return null;})['then'](function(_0x3237e8){if(_0x3237e8){return _0x3b07dc;}})[_0x898a('0x31')](respondWithResult(_0x2471d8,null))[_0x898a('0x23')](handleError(_0x2471d8,null));};exports['destroy']=function(_0x27560f,_0x61247c,_0x5c6247){var _0x39e917;return db['Trunk']['find']({'where':{'id':_0x27560f['params']['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x61247c,null))[_0x898a('0x31')](removeEntity(_0x61247c,null))[_0x898a('0x31')](function(){return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x12e54b){var _0x50dd52=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x24670c=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),'utf8');var _0x5847cb=ejs['render'](_0x50dd52,{'trunks':_0x12e54b});var _0x3b8fb5=ejs[_0x898a('0x64')](_0x24670c,{'trunks':_0x12e54b});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x5847cb);fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_registers.conf',_0x3b8fb5);return respondWithRpcPromise('Reload',_0x898a('0x32'),{'module':_0x898a('0x6a')});})[_0x898a('0x23')](handleError(_0x61247c,null));};
\ No newline at end of file
index 772129c..2adf525 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0575=['lodash','api','moment','bluebird','request-promise','rimraf','../../config/environment','./trunk.attributes','exports','define','Trunk','tools_trunks'];(function(_0x131390,_0xd0846e){var _0x550870=function(_0x13e841){while(--_0x13e841){_0x131390['push'](_0x131390['shift']());}};_0x550870(++_0xd0846e);}(_0x0575,0x150));var _0x5057=function(_0xedf8fb,_0x1f01a5){_0xedf8fb=_0xedf8fb-0x0;var _0x486ab8=_0x0575[_0xedf8fb];return _0x486ab8;};'use strict';var _=require(_0x5057('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5057('0x1'));var moment=require(_0x5057('0x2'));var BPromise=require(_0x5057('0x3'));var rp=require(_0x5057('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5057('0x5'));var config=require(_0x5057('0x6'));var attributes=require(_0x5057('0x7'));module[_0x5057('0x8')]=function(_0x33b9c3,_0xac0a62){return _0x33b9c3[_0x5057('0x9')](_0x5057('0xa'),attributes,{'tableName':_0x5057('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf892=['define','Trunk','tools_trunks','util','api','bluebird','request-promise','path','rimraf','./trunk.attributes'];(function(_0x5f381e,_0x20e3d8){var _0x41130f=function(_0xed11d2){while(--_0xed11d2){_0x5f381e['push'](_0x5f381e['shift']());}};_0x41130f(++_0x20e3d8);}(_0xf892,0xb7));var _0x2f89=function(_0x49a0b9,_0x8201dd){_0x49a0b9=_0x49a0b9-0x0;var _0x457f3e=_0xf892[_0x49a0b9];return _0x457f3e;};'use strict';var _=require('lodash');var util=require(_0x2f89('0x0'));var logger=require('../../config/logger')(_0x2f89('0x1'));var moment=require('moment');var BPromise=require(_0x2f89('0x2'));var rp=require(_0x2f89('0x3'));var fs=require('fs');var path=require(_0x2f89('0x4'));var rimraf=require(_0x2f89('0x5'));var config=require('../../config/environment');var attributes=require(_0x2f89('0x6'));module['exports']=function(_0x568bde,_0x435771){return _0x568bde[_0x2f89('0x7')](_0x2f89('0x8'),attributes,{'tableName':_0x2f89('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 08c457a..0ec83c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c4d=['Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetTrunk','Trunk','findAll','options','raw','limit','include','map','model','attributes','find','ShowTrunk','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x411d4b,_0x8ce248){var _0x3ef5c3=function(_0x2f48cc){while(--_0x2f48cc){_0x411d4b['push'](_0x411d4b['shift']());}};_0x3ef5c3(++_0x8ce248);}(_0x7c4d,0x7b));var _0xd7c4=function(_0x4bbc90,_0x18145e){_0x4bbc90=_0x4bbc90-0x0;var _0xf6f7c2=_0x7c4d[_0x4bbc90];return _0xf6f7c2;};'use strict';var _=require(_0xd7c4('0x0'));var util=require('util');var moment=require(_0xd7c4('0x1'));var BPromise=require(_0xd7c4('0x2'));var rs=require(_0xd7c4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd7c4('0x4'))['db'];var utils=require(_0xd7c4('0x5'));var logger=require(_0xd7c4('0x6'))(_0xd7c4('0x7'));var config=require(_0xd7c4('0x8'));var jayson=require(_0xd7c4('0x9'));var client=jayson[_0xd7c4('0xa')][_0xd7c4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24e3e2,_0x15d580,_0xe05677){return new BPromise(function(_0x39fdfa,_0x331f6b){return client['request'](_0x24e3e2,_0xe05677)[_0xd7c4('0xc')](function(_0x53dec3){logger[_0xd7c4('0xd')](_0xd7c4('0xe'),_0x15d580,_0xd7c4('0xf'));logger[_0xd7c4('0x10')](_0xd7c4('0x11'),_0x15d580,_0xd7c4('0xf'),JSON[_0xd7c4('0x12')](_0x53dec3));if(_0x53dec3[_0xd7c4('0x13')]){if(_0x53dec3[_0xd7c4('0x13')]['code']===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x15d580,_0x53dec3[_0xd7c4('0x13')][_0xd7c4('0x14')]);return _0x331f6b(_0x53dec3[_0xd7c4('0x13')][_0xd7c4('0x14')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x15d580,_0x53dec3[_0xd7c4('0x13')][_0xd7c4('0x14')]);return _0x39fdfa(_0x53dec3[_0xd7c4('0x13')][_0xd7c4('0x14')]);}else{logger[_0xd7c4('0xd')](_0xd7c4('0xe'),_0x15d580,_0xd7c4('0xf'));_0x39fdfa(_0x53dec3[_0xd7c4('0x15')]['message']);}})[_0xd7c4('0x16')](function(_0x5caa93){logger['error'](_0xd7c4('0xe'),_0x15d580,_0x5caa93);_0x331f6b(_0x5caa93);});});}exports[_0xd7c4('0x17')]=function(_0x256c91){var _0x31bb37=this;return new Promise(function(_0x2deadf,_0x1aeb41){return db[_0xd7c4('0x18')][_0xd7c4('0x19')]({'raw':_0x256c91[_0xd7c4('0x1a')]?_0x256c91['options'][_0xd7c4('0x1b')]===undefined?!![]:![]:!![],'where':_0x256c91[_0xd7c4('0x1a')]?_0x256c91[_0xd7c4('0x1a')]['where']||null:null,'attributes':_0x256c91[_0xd7c4('0x1a')]?_0x256c91[_0xd7c4('0x1a')]['attributes']||null:null,'limit':_0x256c91[_0xd7c4('0x1a')]?_0x256c91[_0xd7c4('0x1a')][_0xd7c4('0x1c')]||null:null,'include':_0x256c91[_0xd7c4('0x1a')]?_0x256c91[_0xd7c4('0x1a')][_0xd7c4('0x1d')]?_[_0xd7c4('0x1e')](_0x256c91[_0xd7c4('0x1a')][_0xd7c4('0x1d')],function(_0x3b5cba){return{'model':db[_0x3b5cba[_0xd7c4('0x1f')]],'as':_0x3b5cba['as'],'attributes':_0x3b5cba[_0xd7c4('0x20')],'include':_0x3b5cba[_0xd7c4('0x1d')]?_[_0xd7c4('0x1e')](_0x3b5cba['include'],function(_0x1117f3){return{'model':db[_0x1117f3[_0xd7c4('0x1f')]],'as':_0x1117f3['as'],'attributes':_0x1117f3[_0xd7c4('0x20')],'include':_0x1117f3[_0xd7c4('0x1d')]?_[_0xd7c4('0x1e')](_0x1117f3['include'],function(_0x35560a){return{'model':db[_0x35560a['model']],'as':_0x35560a['as'],'attributes':_0x35560a[_0xd7c4('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x26405){logger['info']('GetTrunk',_0x256c91);logger[_0xd7c4('0x10')]('GetTrunk',_0x256c91,JSON[_0xd7c4('0x12')](_0x26405));_0x2deadf(_0x26405);})['catch'](function(_0x97c381){logger[_0xd7c4('0x13')](_0xd7c4('0x17'),_0x97c381[_0xd7c4('0x14')],_0x256c91);_0x1aeb41(_0x31bb37['error'](0x1f4,_0x97c381[_0xd7c4('0x14')]));});});};exports['ShowTrunk']=function(_0x4b5a86){var _0xdc8601=this;return new Promise(function(_0x46910c,_0x5c0bf2){return db[_0xd7c4('0x18')][_0xd7c4('0x21')]({'raw':_0x4b5a86[_0xd7c4('0x1a')]?_0x4b5a86[_0xd7c4('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x4b5a86[_0xd7c4('0x1a')]?_0x4b5a86[_0xd7c4('0x1a')]['where']||null:null,'attributes':_0x4b5a86[_0xd7c4('0x1a')]?_0x4b5a86[_0xd7c4('0x1a')][_0xd7c4('0x20')]||null:null,'include':_0x4b5a86['options']?_0x4b5a86[_0xd7c4('0x1a')][_0xd7c4('0x1d')]?_[_0xd7c4('0x1e')](_0x4b5a86[_0xd7c4('0x1a')][_0xd7c4('0x1d')],function(_0x1d3e86){return{'model':db[_0x1d3e86[_0xd7c4('0x1f')]],'as':_0x1d3e86['as'],'attributes':_0x1d3e86[_0xd7c4('0x20')],'include':_0x1d3e86[_0xd7c4('0x1d')]?_[_0xd7c4('0x1e')](_0x1d3e86[_0xd7c4('0x1d')],function(_0x164da6){return{'model':db[_0x164da6[_0xd7c4('0x1f')]],'as':_0x164da6['as'],'attributes':_0x164da6[_0xd7c4('0x20')],'include':_0x164da6[_0xd7c4('0x1d')]?_[_0xd7c4('0x1e')](_0x164da6['include'],function(_0x2da28f){return{'model':db[_0x2da28f[_0xd7c4('0x1f')]],'as':_0x2da28f['as'],'attributes':_0x2da28f['attributes']};}):[]};}):[]};}):[]:[]})[_0xd7c4('0xc')](function(_0x38bf35){logger['info'](_0xd7c4('0x22'),_0x4b5a86);logger[_0xd7c4('0x10')](_0xd7c4('0x22'),_0x4b5a86,JSON[_0xd7c4('0x12')](_0x38bf35));_0x46910c(_0x38bf35);})[_0xd7c4('0x16')](function(_0x2c5265){logger[_0xd7c4('0x13')](_0xd7c4('0x22'),_0x2c5265[_0xd7c4('0x14')],_0x4b5a86);_0x5c0bf2(_0xdc8601[_0xd7c4('0x13')](0x1f4,_0x2c5265[_0xd7c4('0x14')]));});});};
\ No newline at end of file
+var _0x6aa7=['request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTrunk','findAll','options','raw','where','limit','include','map','model','attributes','ShowTrunk','Trunk','find','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client'];(function(_0x5517a3,_0xeacda){var _0x27fb53=function(_0x5109d9){while(--_0x5109d9){_0x5517a3['push'](_0x5517a3['shift']());}};_0x27fb53(++_0xeacda);}(_0x6aa7,0x178));var _0x76aa=function(_0x534676,_0x4b83e0){_0x534676=_0x534676-0x0;var _0x138519=_0x6aa7[_0x534676];return _0x138519;};'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);});});}exports[_0x76aa('0x16')]=function(_0x21c16d){var _0xa1bc7=this;return new Promise(function(_0x3ead3f,_0x496902){return db['Trunk'][_0x76aa('0x17')]({'raw':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x19')]===undefined?!![]:![]:!![],'where':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1a')]||null:null,'attributes':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')]['attributes']||null:null,'limit':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1b')]||null:null,'include':_0x21c16d['options']?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1c')]?_[_0x76aa('0x1d')](_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1c')],function(_0xc1044c){return{'model':db[_0xc1044c[_0x76aa('0x1e')]],'as':_0xc1044c['as'],'attributes':_0xc1044c[_0x76aa('0x1f')],'include':_0xc1044c[_0x76aa('0x1c')]?_[_0x76aa('0x1d')](_0xc1044c[_0x76aa('0x1c')],function(_0x26b75e){return{'model':db[_0x26b75e[_0x76aa('0x1e')]],'as':_0x26b75e['as'],'attributes':_0x26b75e['attributes'],'include':_0x26b75e[_0x76aa('0x1c')]?_[_0x76aa('0x1d')](_0x26b75e[_0x76aa('0x1c')],function(_0x2e7ab4){return{'model':db[_0x2e7ab4[_0x76aa('0x1e')]],'as':_0x2e7ab4['as'],'attributes':_0x2e7ab4[_0x76aa('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x76aa('0xa')](function(_0x282d0a){logger[_0x76aa('0xb')](_0x76aa('0x16'),_0x21c16d);logger['debug'](_0x76aa('0x16'),_0x21c16d,JSON['stringify'](_0x282d0a));_0x3ead3f(_0x282d0a);})[_0x76aa('0x15')](function(_0x365ff8){logger[_0x76aa('0x11')](_0x76aa('0x16'),_0x365ff8[_0x76aa('0x13')],_0x21c16d);_0x496902(_0xa1bc7[_0x76aa('0x11')](0x1f4,_0x365ff8[_0x76aa('0x13')]));});});};exports[_0x76aa('0x20')]=function(_0x19fd4f){var _0x3ea05a=this;return new Promise(function(_0x5edcd8,_0x430ad6){return db[_0x76aa('0x21')][_0x76aa('0x22')]({'raw':_0x19fd4f[_0x76aa('0x18')]?_0x19fd4f[_0x76aa('0x18')][_0x76aa('0x19')]===undefined?!![]:![]:!![],'where':_0x19fd4f[_0x76aa('0x18')]?_0x19fd4f['options'][_0x76aa('0x1a')]||null:null,'attributes':_0x19fd4f[_0x76aa('0x18')]?_0x19fd4f['options'][_0x76aa('0x1f')]||null:null,'include':_0x19fd4f['options']?_0x19fd4f[_0x76aa('0x18')]['include']?_[_0x76aa('0x1d')](_0x19fd4f['options']['include'],function(_0x1aa182){return{'model':db[_0x1aa182[_0x76aa('0x1e')]],'as':_0x1aa182['as'],'attributes':_0x1aa182[_0x76aa('0x1f')],'include':_0x1aa182[_0x76aa('0x1c')]?_['map'](_0x1aa182['include'],function(_0xdb18d3){return{'model':db[_0xdb18d3[_0x76aa('0x1e')]],'as':_0xdb18d3['as'],'attributes':_0xdb18d3[_0x76aa('0x1f')],'include':_0xdb18d3[_0x76aa('0x1c')]?_[_0x76aa('0x1d')](_0xdb18d3['include'],function(_0x9ce5f4){return{'model':db[_0x9ce5f4['model']],'as':_0x9ce5f4['as'],'attributes':_0x9ce5f4['attributes']};}):[]};}):[]};}):[]:[]})[_0x76aa('0xa')](function(_0x36d64e){logger[_0x76aa('0xb')](_0x76aa('0x20'),_0x19fd4f);logger['debug'](_0x76aa('0x20'),_0x19fd4f,JSON[_0x76aa('0x10')](_0x36d64e));_0x5edcd8(_0x36d64e);})[_0x76aa('0x15')](function(_0x4e131a){logger[_0x76aa('0x11')](_0x76aa('0x20'),_0x4e131a[_0x76aa('0x13')],_0x19fd4f);_0x430ad6(_0x3ea05a[_0x76aa('0x11')](0x1f4,_0x4e131a[_0x76aa('0x13')]));});});};
\ No newline at end of file
index 161be7a..2bad254 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ff6=['/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','post','create','/create_many','addQueues','join','server/files/images/','format','%s-%s','now','originalname','addAvatar','/:id/login','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','/:id/sms_interactions','/:id/whatsapp_interactions','/:id/mail_accounts','addMailAccounts','addOpenchannelAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','put','/:id/password','changePassword','delete','removeTeams','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','/:id/openchannel_interactions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','/:id/api_key','removeApiKey','exports','util','path','fs-extra','../../components/auth/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','/whoami','whoami','/:id','show','/:id/avatar','getAvatar','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/chat/interactions','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getFaxInteractions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','getMailAccounts','/:id/openchannel_accounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites'];(function(_0x5dca2b,_0x218372){var _0x20097c=function(_0x22e9a3){while(--_0x22e9a3){_0x5dca2b['push'](_0x5dca2b['shift']());}};_0x20097c(++_0x218372);}(_0x7ff6,0x1e4));var _0x67ff=function(_0x23fc0c,_0x53ce48){_0x23fc0c=_0x23fc0c-0x0;var _0x1f6c3a=_0x7ff6[_0x23fc0c];return _0x1f6c3a;};'use strict';var multer=require('multer');var util=require(_0x67ff('0x0'));var path=require(_0x67ff('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x67ff('0x2'));var auth=require(_0x67ff('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x67ff('0x4'));var controller=require(_0x67ff('0x5'));router[_0x67ff('0x6')]('/',auth[_0x67ff('0x7')](),controller[_0x67ff('0x8')]);router[_0x67ff('0x6')](_0x67ff('0x9'),auth[_0x67ff('0x7')](),controller[_0x67ff('0xa')]);router['get'](_0x67ff('0xb'),auth[_0x67ff('0x7')](),controller[_0x67ff('0xc')]);router[_0x67ff('0x6')]('/presence',auth[_0x67ff('0x7')](),controller['getPresence']);router['get'](_0x67ff('0xd'),auth['isAuthenticated'](),controller[_0x67ff('0xe')]);router['get'](_0x67ff('0xf'),controller[_0x67ff('0x10')]);router[_0x67ff('0x6')]('/:id/open_tabs',auth[_0x67ff('0x7')](),controller[_0x67ff('0x11')]);router[_0x67ff('0x6')](_0x67ff('0x12'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x13')]);router[_0x67ff('0x6')](_0x67ff('0x14'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x15')]);router[_0x67ff('0x6')]('/:id/queues_rt',auth[_0x67ff('0x7')](),controller[_0x67ff('0x16')]);router['get'](_0x67ff('0x17'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x18')]);router[_0x67ff('0x6')](_0x67ff('0x19'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x1a')]);router[_0x67ff('0x6')](_0x67ff('0x1b'),auth['isAuthenticated'](),controller['getScreenRecordings']);router[_0x67ff('0x6')](_0x67ff('0x1c'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x1d')]);router['get']('/:id/openchannel/interactions',auth['isAuthenticated'](),controller[_0x67ff('0x1e')]);router['get'](_0x67ff('0x1f'),auth['isAuthenticated'](),controller[_0x67ff('0x20')]);router['get'](_0x67ff('0x21'),auth['isAuthenticated'](),controller['getSmsInteractions']);router['get']('/:id/fax/interactions',auth[_0x67ff('0x7')](),controller[_0x67ff('0x22')]);router['get']('/:id/whatsapp/interactions',auth[_0x67ff('0x7')](),controller[_0x67ff('0x23')]);router[_0x67ff('0x6')](_0x67ff('0x24'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x25')]);router[_0x67ff('0x6')](_0x67ff('0x26'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x27')]);router['get']('/:id/agents',auth[_0x67ff('0x7')](),controller[_0x67ff('0x28')]);router[_0x67ff('0x6')](_0x67ff('0x29'),auth['isAuthenticated'](),controller[_0x67ff('0x2a')]);router[_0x67ff('0x6')](_0x67ff('0x2b'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x2c')]);router[_0x67ff('0x6')]('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0x67ff('0x2d')]);router[_0x67ff('0x6')](_0x67ff('0x2e'),auth[_0x67ff('0x7')](),controller['getOpenchannelAccounts']);router['get'](_0x67ff('0x2f'),auth['isAuthenticated'](),controller[_0x67ff('0x30')]);router[_0x67ff('0x6')](_0x67ff('0x31'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x32')]);router[_0x67ff('0x6')](_0x67ff('0x33'),auth['isAuthenticated'](),controller[_0x67ff('0x34')]);router[_0x67ff('0x6')](_0x67ff('0x35'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x36')]);router[_0x67ff('0x6')](_0x67ff('0x37'),auth['isAuthenticated'](),controller[_0x67ff('0x38')]);router[_0x67ff('0x6')]('/:id/api_key',auth[_0x67ff('0x7')](),controller['getApiKey']);router['post'](_0x67ff('0x12'),auth[_0x67ff('0x7')](),controller['addContacts']);router[_0x67ff('0x39')]('/',auth['isAuthenticated'](),controller[_0x67ff('0x3a')]);router[_0x67ff('0x39')](_0x67ff('0x3b'),auth['isAuthenticated'](),controller['bulkCreate']);router[_0x67ff('0x39')](_0x67ff('0x14'),auth['isAuthenticated'](),controller[_0x67ff('0x3c')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x92337b,_0x40bd3e,_0x574333){_0x574333(null,path[_0x67ff('0x3d')](config['root'],_0x67ff('0x3e')));},'filename':function(_0x181ff3,_0x1ac33e,_0x5d3eef){_0x5d3eef(null,util[_0x67ff('0x3f')](_0x67ff('0x40'),Date[_0x67ff('0x41')](),_0x1ac33e[_0x67ff('0x42')]));}})});router['post'](_0x67ff('0xf'),upload['single']('file'),controller[_0x67ff('0x43')]);router[_0x67ff('0x39')](_0x67ff('0x44'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x45')]);router[_0x67ff('0x39')](_0x67ff('0x46'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x47')]);router[_0x67ff('0x39')](_0x67ff('0x48'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x49')]);router[_0x67ff('0x39')](_0x67ff('0x4a'),auth[_0x67ff('0x7')](),controller['unpause']);router[_0x67ff('0x39')]('/:id/teams',auth['isAuthenticated'](),controller['addTeams']);router[_0x67ff('0x39')](_0x67ff('0x4b'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x4c')]);router[_0x67ff('0x39')](_0x67ff('0x4d'),auth['isAuthenticated'](),controller[_0x67ff('0x4e')]);router[_0x67ff('0x39')](_0x67ff('0x4f'),auth['isAuthenticated'](),controller['addFaxInteractions']);router[_0x67ff('0x39')](_0x67ff('0x50'),auth[_0x67ff('0x7')](),controller['addSmsInteractions']);router[_0x67ff('0x39')]('/:id/openchannel_interactions',auth[_0x67ff('0x7')](),controller['addOpenchannelInteractions']);router[_0x67ff('0x39')](_0x67ff('0x51'),auth[_0x67ff('0x7')](),controller['addWhatsappInteractions']);router['post'](_0x67ff('0x2b'),auth[_0x67ff('0x7')](),controller['addFaxAccounts']);router[_0x67ff('0x39')](_0x67ff('0x52'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x53')]);router[_0x67ff('0x39')](_0x67ff('0x2e'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x54')]);router[_0x67ff('0x39')](_0x67ff('0x2f'),auth[_0x67ff('0x7')](),controller['addSmsAccounts']);router['post'](_0x67ff('0x31'),auth['isAuthenticated'](),controller[_0x67ff('0x55')]);router['post'](_0x67ff('0x33'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x56')]);router[_0x67ff('0x39')]('/:id/square_projects',auth['isAuthenticated'](),controller[_0x67ff('0x57')]);router['post']('/:id/api_key',auth[_0x67ff('0x7')](),controller['createApiKey']);router[_0x67ff('0x58')](_0x67ff('0xd'),auth[_0x67ff('0x7')](),controller['update']);router[_0x67ff('0x58')](_0x67ff('0x59'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x5a')]);router['delete'](_0x67ff('0x14'),auth[_0x67ff('0x7')](),controller['removeQueues']);router[_0x67ff('0x5b')](_0x67ff('0x24'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x5c')]);router['delete'](_0x67ff('0xd'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0x67ff('0x4b'),auth[_0x67ff('0x7')](),controller['removeChatInteractions']);router['delete'](_0x67ff('0x4d'),auth['isAuthenticated'](),controller[_0x67ff('0x5d')]);router[_0x67ff('0x5b')](_0x67ff('0x4f'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x5e')]);router[_0x67ff('0x5b')]('/:id/sms_interactions',auth[_0x67ff('0x7')](),controller[_0x67ff('0x5f')]);router[_0x67ff('0x5b')](_0x67ff('0x60'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x61')]);router[_0x67ff('0x5b')](_0x67ff('0x51'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x62')]);router[_0x67ff('0x5b')](_0x67ff('0x2b'),auth['isAuthenticated'](),controller[_0x67ff('0x63')]);router['delete'](_0x67ff('0x52'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x64')]);router[_0x67ff('0x5b')](_0x67ff('0x2e'),auth['isAuthenticated'](),controller[_0x67ff('0x65')]);router[_0x67ff('0x5b')](_0x67ff('0x2f'),auth['isAuthenticated'](),controller[_0x67ff('0x66')]);router[_0x67ff('0x5b')](_0x67ff('0x31'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x67')]);router[_0x67ff('0x5b')](_0x67ff('0x33'),auth[_0x67ff('0x7')](),controller['removeWhatsappAccounts']);router[_0x67ff('0x5b')](_0x67ff('0x35'),auth[_0x67ff('0x7')](),controller['removeSquareProjects']);router['delete'](_0x67ff('0x68'),auth[_0x67ff('0x7')](),controller[_0x67ff('0x69')]);module[_0x67ff('0x6a')]=router;
\ No newline at end of file
+var _0x4173=['./user.controller','get','isAuthenticated','index','/describe','describe','/whoami','whoami','/presence','getPresence','/:id','show','getAvatar','/:id/open_tabs','/:id/contacts','getContacts','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','getLists','getAgents','/:id/prefixes','/:id/fax_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','getWhatsappAccounts','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','addContacts','create','bulkCreate','addQueues','diskStorage','join','root','server/files/images/','format','%s-%s','now','/:id/avatar','file','login','/:id/logout','logout','/:id/pause','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addSmsInteractions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','/:id/whatsapp_accounts','addWhatsappAccounts','/:id/square_projects','addSquareProjects','createApiKey','put','update','changePassword','/:id/queues','delete','destroy','removeChatInteractions','removeMailInteractions','removeFaxInteractions','/:id/sms_interactions','removeSmsInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x156b03,_0x238b09){var _0x302cc5=function(_0x5ef22e){while(--_0x5ef22e){_0x156b03['push'](_0x156b03['shift']());}};_0x302cc5(++_0x238b09);}(_0x4173,0x6c));var _0x3417=function(_0x4d9403,_0x33c5f0){_0x4d9403=_0x4d9403-0x0;var _0x5eef11=_0x4173[_0x4d9403];return _0x5eef11;};'use strict';var multer=require('multer');var util=require(_0x3417('0x0'));var path=require(_0x3417('0x1'));var timeout=require('connect-timeout');var express=require(_0x3417('0x2'));var router=express[_0x3417('0x3')]();var fs_extra=require(_0x3417('0x4'));var auth=require(_0x3417('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x3417('0x6'));var controller=require(_0x3417('0x7'));router[_0x3417('0x8')]('/',auth[_0x3417('0x9')](),controller[_0x3417('0xa')]);router['get'](_0x3417('0xb'),auth[_0x3417('0x9')](),controller[_0x3417('0xc')]);router[_0x3417('0x8')](_0x3417('0xd'),auth[_0x3417('0x9')](),controller[_0x3417('0xe')]);router[_0x3417('0x8')](_0x3417('0xf'),auth[_0x3417('0x9')](),controller[_0x3417('0x10')]);router[_0x3417('0x8')](_0x3417('0x11'),auth[_0x3417('0x9')](),controller[_0x3417('0x12')]);router[_0x3417('0x8')]('/:id/avatar',controller[_0x3417('0x13')]);router[_0x3417('0x8')](_0x3417('0x14'),auth[_0x3417('0x9')](),controller['getOpenTabs']);router[_0x3417('0x8')](_0x3417('0x15'),auth[_0x3417('0x9')](),controller[_0x3417('0x16')]);router[_0x3417('0x8')]('/:id/queues',auth[_0x3417('0x9')](),controller[_0x3417('0x17')]);router['get'](_0x3417('0x18'),auth[_0x3417('0x9')](),controller[_0x3417('0x19')]);router[_0x3417('0x8')](_0x3417('0x1a'),auth[_0x3417('0x9')](),controller[_0x3417('0x1b')]);router[_0x3417('0x8')](_0x3417('0x1c'),auth['isAuthenticated'](),controller[_0x3417('0x1d')]);router[_0x3417('0x8')](_0x3417('0x1e'),auth[_0x3417('0x9')](),controller[_0x3417('0x1f')]);router['get'](_0x3417('0x20'),auth[_0x3417('0x9')](),controller[_0x3417('0x21')]);router[_0x3417('0x8')](_0x3417('0x22'),auth[_0x3417('0x9')](),controller[_0x3417('0x23')]);router[_0x3417('0x8')]('/:id/mail/interactions',auth[_0x3417('0x9')](),controller[_0x3417('0x24')]);router[_0x3417('0x8')](_0x3417('0x25'),auth[_0x3417('0x9')](),controller[_0x3417('0x26')]);router[_0x3417('0x8')]('/:id/fax/interactions',auth['isAuthenticated'](),controller[_0x3417('0x27')]);router[_0x3417('0x8')](_0x3417('0x28'),auth[_0x3417('0x9')](),controller[_0x3417('0x29')]);router[_0x3417('0x8')](_0x3417('0x2a'),auth['isAuthenticated'](),controller[_0x3417('0x2b')]);router[_0x3417('0x8')]('/:id/lists',auth[_0x3417('0x9')](),controller[_0x3417('0x2c')]);router[_0x3417('0x8')]('/:id/agents',auth['isAuthenticated'](),controller[_0x3417('0x2d')]);router[_0x3417('0x8')](_0x3417('0x2e'),auth[_0x3417('0x9')](),controller['getVoicePrefixes']);router[_0x3417('0x8')](_0x3417('0x2f'),auth[_0x3417('0x9')](),controller['getFaxAccounts']);router[_0x3417('0x8')]('/:id/mail_accounts',auth[_0x3417('0x9')](),controller['getMailAccounts']);router[_0x3417('0x8')](_0x3417('0x30'),auth[_0x3417('0x9')](),controller[_0x3417('0x31')]);router[_0x3417('0x8')](_0x3417('0x32'),auth['isAuthenticated'](),controller[_0x3417('0x33')]);router[_0x3417('0x8')](_0x3417('0x34'),auth[_0x3417('0x9')](),controller[_0x3417('0x35')]);router[_0x3417('0x8')]('/:id/whatsapp_accounts',auth['isAuthenticated'](),controller[_0x3417('0x36')]);router[_0x3417('0x8')]('/:id/square_projects',auth[_0x3417('0x9')](),controller[_0x3417('0x37')]);router[_0x3417('0x8')](_0x3417('0x38'),auth[_0x3417('0x9')](),controller[_0x3417('0x39')]);router[_0x3417('0x8')](_0x3417('0x3a'),auth[_0x3417('0x9')](),controller[_0x3417('0x3b')]);router[_0x3417('0x3c')](_0x3417('0x15'),auth[_0x3417('0x9')](),controller[_0x3417('0x3d')]);router[_0x3417('0x3c')]('/',auth[_0x3417('0x9')](),controller[_0x3417('0x3e')]);router[_0x3417('0x3c')]('/create_many',auth[_0x3417('0x9')](),controller[_0x3417('0x3f')]);router['post']('/:id/queues',auth[_0x3417('0x9')](),controller[_0x3417('0x40')]);var upload=multer({'storage':multer[_0x3417('0x41')]({'destination':function(_0x4b3119,_0x5e8276,_0x303c63){_0x303c63(null,path[_0x3417('0x42')](config[_0x3417('0x43')],_0x3417('0x44')));},'filename':function(_0x53a3a4,_0x5dd67c,_0x1ec217){_0x1ec217(null,util[_0x3417('0x45')](_0x3417('0x46'),Date[_0x3417('0x47')](),_0x5dd67c['originalname']));}})});router[_0x3417('0x3c')](_0x3417('0x48'),upload['single'](_0x3417('0x49')),controller['addAvatar']);router[_0x3417('0x3c')]('/:id/login',auth[_0x3417('0x9')](),controller[_0x3417('0x4a')]);router[_0x3417('0x3c')](_0x3417('0x4b'),auth['isAuthenticated'](),controller[_0x3417('0x4c')]);router[_0x3417('0x3c')](_0x3417('0x4d'),auth[_0x3417('0x9')](),controller['pause']);router[_0x3417('0x3c')]('/:id/unpause',auth['isAuthenticated'](),controller['unpause']);router[_0x3417('0x3c')](_0x3417('0x2a'),auth[_0x3417('0x9')](),controller['addTeams']);router['post'](_0x3417('0x4e'),auth['isAuthenticated'](),controller[_0x3417('0x4f')]);router[_0x3417('0x3c')](_0x3417('0x50'),auth['isAuthenticated'](),controller[_0x3417('0x51')]);router[_0x3417('0x3c')](_0x3417('0x52'),auth[_0x3417('0x9')](),controller['addFaxInteractions']);router[_0x3417('0x3c')]('/:id/sms_interactions',auth[_0x3417('0x9')](),controller[_0x3417('0x53')]);router[_0x3417('0x3c')](_0x3417('0x54'),auth[_0x3417('0x9')](),controller['addOpenchannelInteractions']);router['post'](_0x3417('0x55'),auth['isAuthenticated'](),controller['addWhatsappInteractions']);router[_0x3417('0x3c')](_0x3417('0x2f'),auth[_0x3417('0x9')](),controller[_0x3417('0x56')]);router[_0x3417('0x3c')]('/:id/mail_accounts',auth[_0x3417('0x9')](),controller[_0x3417('0x57')]);router[_0x3417('0x3c')](_0x3417('0x30'),auth['isAuthenticated'](),controller[_0x3417('0x58')]);router[_0x3417('0x3c')](_0x3417('0x32'),auth['isAuthenticated'](),controller[_0x3417('0x59')]);router[_0x3417('0x3c')](_0x3417('0x34'),auth[_0x3417('0x9')](),controller[_0x3417('0x5a')]);router[_0x3417('0x3c')](_0x3417('0x5b'),auth['isAuthenticated'](),controller[_0x3417('0x5c')]);router['post'](_0x3417('0x5d'),auth['isAuthenticated'](),controller[_0x3417('0x5e')]);router[_0x3417('0x3c')]('/:id/api_key',auth[_0x3417('0x9')](),controller[_0x3417('0x5f')]);router[_0x3417('0x60')](_0x3417('0x11'),auth[_0x3417('0x9')](),controller[_0x3417('0x61')]);router[_0x3417('0x60')]('/:id/password',auth[_0x3417('0x9')](),controller[_0x3417('0x62')]);router['delete'](_0x3417('0x63'),auth['isAuthenticated'](),controller['removeQueues']);router['delete']('/:id/teams',auth[_0x3417('0x9')](),controller['removeTeams']);router[_0x3417('0x64')]('/:id',auth[_0x3417('0x9')](),controller[_0x3417('0x65')]);router[_0x3417('0x64')](_0x3417('0x4e'),auth[_0x3417('0x9')](),controller[_0x3417('0x66')]);router[_0x3417('0x64')]('/:id/mail_interactions',auth[_0x3417('0x9')](),controller[_0x3417('0x67')]);router['delete']('/:id/fax_interactions',auth[_0x3417('0x9')](),controller[_0x3417('0x68')]);router['delete'](_0x3417('0x69'),auth[_0x3417('0x9')](),controller[_0x3417('0x6a')]);router[_0x3417('0x64')](_0x3417('0x54'),auth['isAuthenticated'](),controller['removeOpenchannelInteractions']);router[_0x3417('0x64')]('/:id/whatsapp_interactions',auth['isAuthenticated'](),controller[_0x3417('0x6b')]);router['delete'](_0x3417('0x2f'),auth[_0x3417('0x9')](),controller[_0x3417('0x6c')]);router[_0x3417('0x64')]('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0x3417('0x6d')]);router[_0x3417('0x64')](_0x3417('0x30'),auth[_0x3417('0x9')](),controller['removeOpenchannelAccounts']);router[_0x3417('0x64')]('/:id/sms_accounts',auth['isAuthenticated'](),controller['removeSmsAccounts']);router['delete']('/:id/chat_websites',auth['isAuthenticated'](),controller[_0x3417('0x6e')]);router[_0x3417('0x64')](_0x3417('0x5b'),auth['isAuthenticated'](),controller[_0x3417('0x6f')]);router[_0x3417('0x64')](_0x3417('0x5d'),auth[_0x3417('0x9')](),controller[_0x3417('0x70')]);router[_0x3417('0x64')](_0x3417('0x3a'),auth[_0x3417('0x9')](),controller[_0x3417('0x71')]);module[_0x3417('0x72')]=router;
\ No newline at end of file
index 6252197..019a674 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3974=['permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','sequelize','moment','util','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','callerid','format','getDataValue','internal','email','ENUM','admin','user','telephone','INTEGER','accountcode','DATE','BOOLEAN','dynamic','friend','from-sip','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','rfc2833','info','shortinfo','inband','auto','nonat','update','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','yes','never','\x22\x22\x20<>','always','refuse','originate','uac','uas','passive','TEXT','showWebBar','get','isArray','wss','avpf','force_avp','dtlsenable','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','encryption','icesupport','dtlsverify','actpass','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key'];(function(_0x4a73ae,_0x576600){var _0x729796=function(_0x484881){while(--_0x484881){_0x4a73ae['push'](_0x4a73ae['shift']());}};_0x729796(++_0x576600);}(_0x3974,0xbc));var _0x4397=function(_0x2e2ba7,_0x438938){_0x2e2ba7=_0x2e2ba7-0x0;var _0x157e57=_0x3974[_0x2e2ba7];return _0x157e57;};'use strict';var Sequelize=require(_0x4397('0x0'));var moment=require(_0x4397('0x1'));var util=require(_0x4397('0x2'));var _=require('lodash');module['exports']={'name':{'type':Sequelize[_0x4397('0x3')],'allowNull':![],'unique':_0x4397('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x9db237){this[_0x4397('0x5')](_0x4397('0x4'),_0x9db237);this['setDataValue'](_0x4397('0x6'),_0x9db237);},'comment':_0x4397('0x7')},'fullname':{'type':Sequelize[_0x4397('0x3')],'allowNull':![],'set':function(_0x391ea0){this['setDataValue'](_0x4397('0x8'),_0x391ea0);this[_0x4397('0x5')](_0x4397('0x9'),util[_0x4397('0xa')]('\x22%s\x22\x20<%s>',_0x391ea0,this[_0x4397('0xb')](_0x4397('0xc'))));}},'alias':{'type':Sequelize[_0x4397('0x3')]},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':'email','validate':{'isEmail':!![]},'set':function(_0x41d0da){if(_0x41d0da){this[_0x4397('0x5')](_0x4397('0xd'),_0x41d0da['toLowerCase']());}}},'role':{'type':Sequelize[_0x4397('0xe')](_0x4397('0xf'),_0x4397('0x10'),'agent',_0x4397('0x11')),'allowNull':![]},'password':{'type':Sequelize[_0x4397('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x4397('0x3')],'defaultValue':'local'},'internal':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':![],'unique':'internal','set':function(_0x3b7b4a){this['setDataValue'](_0x4397('0xc'),_0x3b7b4a);this[_0x4397('0x5')](_0x4397('0x13'),_0x3b7b4a);this[_0x4397('0x5')](_0x4397('0x9'),util[_0x4397('0xa')]('\x22%s\x22\x20<%s>',this[_0x4397('0xb')](_0x4397('0x8')),_0x3b7b4a));}},'salt':{'type':Sequelize[_0x4397('0x3')]},'phone':{'type':Sequelize[_0x4397('0x3')]},'mobile':{'type':Sequelize[_0x4397('0x3')]},'address':{'type':Sequelize[_0x4397('0x3')]},'zipcode':{'type':Sequelize[_0x4397('0x3')]},'userpic':{'type':Sequelize[_0x4397('0x3')]},'city':{'type':Sequelize[_0x4397('0x3')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x4397('0x14')]},'voicePause':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x4397('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x4397('0x12')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x4397('0x12')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'description':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![],'defaultValue':_0x4397('0x16')},'ipaddr':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'port':{'type':Sequelize[_0x4397('0x12')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x17'),'user','peer'),'allowNull':!![],'defaultValue':_0x4397('0x17')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x4397('0x18')},'callingpres':{'type':Sequelize[_0x4397('0xe')]('ALLOWED_NOT_SCREENED',_0x4397('0x19'),_0x4397('0x1a'),_0x4397('0x1b'),'PROHIB_NOT_SCREENED',_0x4397('0x1c'),_0x4397('0x1d'),_0x4397('0x1e')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![],'defaultValue':_0x4397('0x1f'),'set':function(_0x338519){this[_0x4397('0x5')](_0x4397('0x20'),_0x338519?_0x338519[_0x4397('0x21')](','):null);},'get':function(){return this['getDataValue'](_0x4397('0x20'))?this[_0x4397('0xb')]('transport')['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x22'),_0x4397('0x23'),_0x4397('0x24'),_0x4397('0x25'),_0x4397('0x26')),'allowNull':!![],'defaultValue':_0x4397('0x22')},'directmedia':{'type':Sequelize['ENUM']('yes','no',_0x4397('0x27'),_0x4397('0x28'),_0x4397('0x29')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x4397('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![],'defaultValue':_0x4397('0x2a'),'set':function(_0x4d88ad){this[_0x4397('0x5')](_0x4397('0x2b'),_0x4d88ad?_0x4d88ad['join'](','):null);},'get':function(){return this[_0x4397('0xb')](_0x4397('0x2b'))?this[_0x4397('0xb')]('nat')['split'](','):null;},'comment':_0x4397('0x2c')},'callgroup':{'type':Sequelize[_0x4397('0x3')]},'namedcallgroup':{'type':Sequelize[_0x4397('0x3')]},'pickupgroup':{'type':Sequelize[_0x4397('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x4397('0x3')]},'language':{'type':Sequelize[_0x4397('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4397('0x2d')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4397('0x2e'),'set':function(_0x9d5070){this[_0x4397('0x5')](_0x4397('0x2f'),_0x9d5070?_0x9d5070[_0x4397('0x21')](';'):_0x4397('0x2e'));},'get':function(){return this['getDataValue'](_0x4397('0x2f'))?this[_0x4397('0xb')]('allow')[_0x4397('0x30')](';'):null;},'comment':_0x4397('0x31')},'autoframing':{'type':Sequelize[_0x4397('0xe')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize['STRING'],'allowNull':!![],'set':function(_0x1fb51f){this['setDataValue'](_0x4397('0x32'),_0x1fb51f?_0x1fb51f[_0x4397('0x21')](','):null);},'get':function(){return this[_0x4397('0xb')](_0x4397('0x32'))?this['getDataValue'](_0x4397('0x32'))[_0x4397('0x30')](','):null;},'comment':_0x4397('0x33')},'trustrpid':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x4397('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no',_0x4397('0x35')),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM'](_0x4397('0x34'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![],'defaultValue':_0x4397('0x36')},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![],'defaultValue':_0x4397('0x34')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM']('yes','no',_0x4397('0x37')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x4397('0xe')]('accept',_0x4397('0x38'),_0x4397('0x39')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x3a'),_0x4397('0x3b')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize['STRING'],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x4397('0x34'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x4397('0x34'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x4397('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x4397('0x34'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no','fingerprint','certificate'),'allowNull':!![]},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x4397('0xe')]('active',_0x4397('0x3c'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x4397('0x12')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x4397('0xe')](_0x4397('0x34'),'no',_0x4397('0x27'),_0x4397('0x28'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x4397('0x3')]},'resetPasswordExpires':{'type':Sequelize[_0x4397('0x14')]},'passwordResetAt':{'type':Sequelize[_0x4397('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x4397('0x3d')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x22afd2){this['setDataValue'](_0x4397('0x3e'),_0x22afd2);var _0x143b20=this[_0x4397('0x3f')]({'plain':!![]});switch(_0x22afd2){case 0x0:case 0x1:var _0x1e1529=_0x143b20[_0x4397('0x20')]?_[_0x4397('0x40')](_0x143b20[_0x4397('0x20')])?_0x143b20[_0x4397('0x20')][_0x4397('0x21')]():_0x143b20[_0x4397('0x20')]:'udp';if(_0x1e1529===_0x4397('0x41')){_0x1e1529=_0x4397('0x1f');}this[_0x4397('0x5')](_0x4397('0x20'),_0x1e1529);this[_0x4397('0x5')]('encryption','no');this[_0x4397('0x5')](_0x4397('0x42'),null);this['setDataValue'](_0x4397('0x43'),null);this['setDataValue']('icesupport',null);this[_0x4397('0x5')](_0x4397('0x44'),null);this[_0x4397('0x5')]('dtlsverify',null);this[_0x4397('0x5')](_0x4397('0x45'),null);this[_0x4397('0x5')](_0x4397('0x46'),null);this[_0x4397('0x5')](_0x4397('0x47'),null);this['setDataValue'](_0x4397('0x48'),'no');break;case 0x2:this[_0x4397('0x5')](_0x4397('0x20'),'wss');this[_0x4397('0x5')](_0x4397('0x49'),_0x4397('0x34'));this[_0x4397('0x5')]('avpf',_0x4397('0x34'));this['setDataValue'](_0x4397('0x43'),'yes');this[_0x4397('0x5')](_0x4397('0x4a'),_0x4397('0x34'));this[_0x4397('0x5')](_0x4397('0x44'),'yes');this[_0x4397('0x5')](_0x4397('0x4b'),'no');this[_0x4397('0x5')]('dtlssetup',_0x4397('0x4c'));this[_0x4397('0x5')](_0x4397('0x46'),_0x143b20[_0x4397('0x46')]||_0x4397('0x4d'));this[_0x4397('0x5')]('dtlsprivatekey',_0x143b20[_0x4397('0x47')]||_0x4397('0x4e'));this['setDataValue'](_0x4397('0x48'),_0x4397('0x34'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x1a0a81){this['setDataValue'](_0x4397('0x4f'),_0x1a0a81?_0x1a0a81['join'](','):[]);},'get':function(){return this['getDataValue'](_0x4397('0x4f'))?_[_0x4397('0x50')](this[_0x4397('0xb')](_0x4397('0x4f'))[_0x4397('0x30')](','),function(_0x250da7){return parseInt(_0x250da7,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x4397('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0x4397('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x4397('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x4397('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x4397('0x34'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x4397('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x4397('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x4397('0x51')],'get':function(){return this['getDataValue'](_0x4397('0x52'))?this[_0x4397('0xb')](_0x4397('0x52')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x4397('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x4397('0x15')],'defaultValue':![],'set':function(_0x18dfd3){if(typeof _0x18dfd3===_0x4397('0x53')){var _0x98c487=_0x18dfd3==='1'?!![]:_0x18dfd3==='0'?![]:_0x18dfd3==='true'?!![]:_0x18dfd3==='false'?![]:![];this[_0x4397('0x5')](_0x4397('0x54'),_0x98c487);}else{this['setDataValue'](_0x4397('0x54'),_0x18dfd3);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x53d3d1){this['setDataValue'](_0x4397('0x55'),_0x53d3d1);if(_0x53d3d1===!![]){this[_0x4397('0x5')](_0x4397('0x56'),moment());this[_0x4397('0x5')](_0x4397('0x57'),0x0);}else{this[_0x4397('0x5')](_0x4397('0x56'),null);}}},'blockedAt':{'type':Sequelize[_0x4397('0x14')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x4397('0x12')],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x4397('0x12')](0x5)[_0x4397('0x58')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x4397('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x4397('0x15')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xe574=['auto','yes','nonat','update','outgoing','force_rport,comedia','nat','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','fingerprint','certificate','active','passive','actpass','update,nonat','TEXT','showWebBar','get','udp','encryption','avpf','force_avp','icesupport','dtlscertfile','dtlsprivatekey','rtcp_mux','wss','dtlsverify','dtlssetup','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','sequelize','util','lodash','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','user','agent','telephone','local','INTEGER','accountcode','callerid','DATE','BOOLEAN','DEFAULT\x20PAUSE','dynamic','peer','friend','from-sip','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','join','transport','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband'];(function(_0x380386,_0x5d52ec){var _0x36c984=function(_0x4c45f9){while(--_0x4c45f9){_0x380386['push'](_0x380386['shift']());}};_0x36c984(++_0x5d52ec);}(_0xe574,0x100));var _0x4e57=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xe574[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require(_0x4e57('0x0'));var moment=require('moment');var util=require(_0x4e57('0x1'));var _=require(_0x4e57('0x2'));module[_0x4e57('0x3')]={'name':{'type':Sequelize[_0x4e57('0x4')],'allowNull':![],'unique':_0x4e57('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x1bdd55){this[_0x4e57('0x6')](_0x4e57('0x5'),_0x1bdd55);this[_0x4e57('0x6')](_0x4e57('0x7'),_0x1bdd55);},'comment':_0x4e57('0x8')},'fullname':{'type':Sequelize[_0x4e57('0x4')],'allowNull':![],'set':function(_0x588b4e){this['setDataValue'](_0x4e57('0x9'),_0x588b4e);this['setDataValue']('callerid',util[_0x4e57('0xa')](_0x4e57('0xb'),_0x588b4e,this[_0x4e57('0xc')](_0x4e57('0xd'))));}},'alias':{'type':Sequelize[_0x4e57('0x4')]},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x4e57('0xe'),'validate':{'isEmail':!![]},'set':function(_0x2dbdd5){if(_0x2dbdd5){this[_0x4e57('0x6')](_0x4e57('0xe'),_0x2dbdd5[_0x4e57('0xf')]());}}},'role':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x11'),_0x4e57('0x12'),_0x4e57('0x13'),_0x4e57('0x14')),'allowNull':![]},'password':{'type':Sequelize[_0x4e57('0x4')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x4e57('0x4')],'defaultValue':_0x4e57('0x15')},'internal':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':![],'unique':_0x4e57('0xd'),'set':function(_0x2e9fa8){this['setDataValue'](_0x4e57('0xd'),_0x2e9fa8);this['setDataValue'](_0x4e57('0x17'),_0x2e9fa8);this['setDataValue'](_0x4e57('0x18'),util[_0x4e57('0xa')]('\x22%s\x22\x20<%s>',this[_0x4e57('0xc')](_0x4e57('0x9')),_0x2e9fa8));}},'salt':{'type':Sequelize[_0x4e57('0x4')]},'phone':{'type':Sequelize[_0x4e57('0x4')]},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0x4e57('0x4')]},'zipcode':{'type':Sequelize[_0x4e57('0x4')]},'userpic':{'type':Sequelize[_0x4e57('0x4')]},'city':{'type':Sequelize[_0x4e57('0x4')]},'country':{'type':Sequelize[_0x4e57('0x4')]},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x4e57('0x19')]},'voicePause':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0x4e57('0x1b')},'lastPauseAt':{'type':Sequelize[_0x4e57('0x19')]},'chatCapacity':{'type':Sequelize[_0x4e57('0x16')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x4e57('0x16')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x4e57('0x16')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x4e57('0x16')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x4e57('0x16')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x4e57('0x16')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![],'defaultValue':_0x4e57('0x1c')},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0x4e57('0x16')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x4e57('0x10')]('friend',_0x4e57('0x12'),_0x4e57('0x1d')),'allowNull':!![],'defaultValue':_0x4e57('0x1e')},'context':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![],'defaultValue':_0x4e57('0x1f')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED',_0x4e57('0x20'),_0x4e57('0x21'),_0x4e57('0x22'),_0x4e57('0x23'),'PROHIB_PASSED_SCREEN',_0x4e57('0x24'),_0x4e57('0x25')),'allowNull':!![]},'deny':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'permit':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'secret':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![],'defaultValue':'udp','set':function(_0x149397){this['setDataValue']('transport',_0x149397?_0x149397[_0x4e57('0x26')](','):null);},'get':function(){return this[_0x4e57('0xc')](_0x4e57('0x27'))?this['getDataValue'](_0x4e57('0x27'))['split'](','):null;},'comment':_0x4e57('0x28')},'dtmfmode':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x29'),'info',_0x4e57('0x2a'),_0x4e57('0x2b'),_0x4e57('0x2c')),'allowNull':!![],'defaultValue':_0x4e57('0x29')},'directmedia':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no',_0x4e57('0x2e'),_0x4e57('0x2f'),_0x4e57('0x30')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x4e57('0x31'),'set':function(_0x270d2a){this[_0x4e57('0x6')](_0x4e57('0x32'),_0x270d2a?_0x270d2a['join'](','):null);},'get':function(){return this['getDataValue'](_0x4e57('0x32'))?this[_0x4e57('0xc')](_0x4e57('0x32'))[_0x4e57('0x33')](','):null;},'comment':_0x4e57('0x34')},'callgroup':{'type':Sequelize[_0x4e57('0x4')]},'namedcallgroup':{'type':Sequelize[_0x4e57('0x4')]},'pickupgroup':{'type':Sequelize[_0x4e57('0x4')]},'namedpickupgroup':{'type':Sequelize[_0x4e57('0x4')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x4e57('0x4')]},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4e57('0x35')},'allow':{'type':Sequelize[_0x4e57('0x4')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x1ff9e7){this[_0x4e57('0x6')](_0x4e57('0x36'),_0x1ff9e7?_0x1ff9e7[_0x4e57('0x26')](';'):_0x4e57('0x37'));},'get':function(){return this[_0x4e57('0xc')](_0x4e57('0x36'))?this['getDataValue'](_0x4e57('0x36'))[_0x4e57('0x33')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![],'set':function(_0x3f54c4){this[_0x4e57('0x6')](_0x4e57('0x38'),_0x3f54c4?_0x3f54c4['join'](','):null);},'get':function(){return this[_0x4e57('0xc')](_0x4e57('0x38'))?this[_0x4e57('0xc')](_0x4e57('0x38'))[_0x4e57('0x33')](','):null;},'comment':_0x4e57('0x39')},'trustrpid':{'type':Sequelize[_0x4e57('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no',_0x4e57('0x3a')),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM'](_0x4e57('0x2d'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![],'defaultValue':_0x4e57('0x3b')},'amaflags':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0x4e57('0x2d'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'template':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no',_0x4e57('0x3c')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x4e57('0x2d'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x3d'),_0x4e57('0x3e'),_0x4e57('0x3f')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x40'),_0x4e57('0x41')),'allowNull':!![],'defaultValue':_0x4e57('0x41')},'t38pt_usertpsource':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize[_0x4e57('0x10')]('yes','no'),'allowNull':!![],'defaultValue':_0x4e57('0x2d')},'keepalive':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x4e57('0x10')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x4e57('0x10')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0x4e57('0x2d'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no',_0x4e57('0x42'),_0x4e57('0x43')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM'](_0x4e57('0x44'),_0x4e57('0x45'),_0x4e57('0x46')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x4e57('0x16')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x4e57('0x10')](_0x4e57('0x2d'),'no',_0x4e57('0x2e'),'update',_0x4e57('0x47')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x4e57('0x4')]},'resetPasswordExpires':{'type':Sequelize[_0x4e57('0x19')]},'passwordResetAt':{'type':Sequelize[_0x4e57('0x19')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x4e57('0x48')]},'showWebBar':{'type':Sequelize[_0x4e57('0x16')],'defaultValue':0x0,'set':function(_0x3217a6){this['setDataValue'](_0x4e57('0x49'),_0x3217a6);var _0x5c8ae5=this[_0x4e57('0x4a')]({'plain':!![]});switch(_0x3217a6){case 0x0:case 0x1:var _0x3c8a3a=_0x5c8ae5[_0x4e57('0x27')]?_['isArray'](_0x5c8ae5['transport'])?_0x5c8ae5[_0x4e57('0x27')]['join']():_0x5c8ae5[_0x4e57('0x27')]:_0x4e57('0x4b');if(_0x3c8a3a==='wss'){_0x3c8a3a=_0x4e57('0x4b');}this[_0x4e57('0x6')]('transport',_0x3c8a3a);this[_0x4e57('0x6')](_0x4e57('0x4c'),'no');this['setDataValue'](_0x4e57('0x4d'),null);this[_0x4e57('0x6')](_0x4e57('0x4e'),null);this[_0x4e57('0x6')](_0x4e57('0x4f'),null);this[_0x4e57('0x6')]('dtlsenable',null);this[_0x4e57('0x6')]('dtlsverify',null);this['setDataValue']('dtlssetup',null);this['setDataValue'](_0x4e57('0x50'),null);this[_0x4e57('0x6')](_0x4e57('0x51'),null);this[_0x4e57('0x6')](_0x4e57('0x52'),'no');break;case 0x2:this[_0x4e57('0x6')](_0x4e57('0x27'),_0x4e57('0x53'));this[_0x4e57('0x6')](_0x4e57('0x4c'),_0x4e57('0x2d'));this['setDataValue'](_0x4e57('0x4d'),_0x4e57('0x2d'));this[_0x4e57('0x6')](_0x4e57('0x4e'),_0x4e57('0x2d'));this[_0x4e57('0x6')]('icesupport',_0x4e57('0x2d'));this[_0x4e57('0x6')]('dtlsenable',_0x4e57('0x2d'));this[_0x4e57('0x6')](_0x4e57('0x54'),'no');this[_0x4e57('0x6')](_0x4e57('0x55'),'actpass');this[_0x4e57('0x6')](_0x4e57('0x50'),_0x5c8ae5['dtlscertfile']||_0x4e57('0x56'));this[_0x4e57('0x6')](_0x4e57('0x51'),_0x5c8ae5[_0x4e57('0x51')]||_0x4e57('0x57'));this[_0x4e57('0x6')](_0x4e57('0x52'),_0x4e57('0x2d'));break;default:}}},'permissions':{'type':Sequelize[_0x4e57('0x48')],'set':function(_0x50146c){this[_0x4e57('0x6')](_0x4e57('0x58'),_0x50146c?_0x50146c[_0x4e57('0x26')](','):[]);},'get':function(){return this[_0x4e57('0xc')](_0x4e57('0x58'))?_[_0x4e57('0x59')](this['getDataValue'](_0x4e57('0x58'))['split'](','),function(_0x3957e1){return parseInt(_0x3957e1,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x4e57('0x4')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0x4e57('0x4')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x4e57('0x16')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x4e57('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x4e57('0x16')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x4e57('0x10')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x4e57('0x5a')],'get':function(){return this[_0x4e57('0xc')]('phoneBarEnableScreenRecordingByAgent')?this[_0x4e57('0xc')](_0x4e57('0x5b')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x4e57('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![],'set':function(_0x39c8f0){if(typeof _0x39c8f0===_0x4e57('0x5c')){var _0x2a2d61=_0x39c8f0==='1'?!![]:_0x39c8f0==='0'?![]:_0x39c8f0===_0x4e57('0x5d')?!![]:_0x39c8f0===_0x4e57('0x5e')?![]:![];this[_0x4e57('0x6')](_0x4e57('0x5f'),_0x2a2d61);}else{this[_0x4e57('0x6')](_0x4e57('0x5f'),_0x39c8f0);}}},'blocked':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![],'set':function(_0x223d61){this[_0x4e57('0x6')](_0x4e57('0x60'),_0x223d61);if(_0x223d61===!![]){this[_0x4e57('0x6')](_0x4e57('0x61'),moment());this[_0x4e57('0x6')](_0x4e57('0x62'),0x0);}else{this[_0x4e57('0x6')](_0x4e57('0x61'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x4e57('0x16')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x4e57('0x16')](0x5)[_0x4e57('0x63')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x4e57('0x1a')],'defaultValue':!![]}};
\ No newline at end of file
index cded453..eed545f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1619=['OpenTabs','util','lodash','squel','jayson/promise','../../components/auth/service','../../config/logger','../../config/environment','../../config/license/util','socket.io-emitter','redis','register','defaults','localhost','client','http','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','end','offset','undefined','limit','count','status','set','json','update','destroy','get','role','Users','user','agent','Telephones','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','stack','send','index','User','type','key','password','getOptions','where','include','attributes','push','findAll','rows','query','openTabs','true','sms','dataValues','mail','openchannel','whatsapp','all','catch','show','params','keys','rawAttributes','salt','filters','intersection','model','fields','includeAll','merge','options','fax','body','describe','ids','omit','internal','Setting','findById','securePassword','max','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','length','isNil','from','voicemail','mailbox','VoiceMail','email','permissions','101','103','113','110','105','106','108','109','111','114','115','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','Agents','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','UserProfileSection','isEmpty','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Unauthorized','findOne','enforcePasswordHistory','validatePasswordPattern','previousPasswords','validatePasswordHistory','passwordHistoryLimit','online','loginInPause','interface','isValidChannel','add','toLowerCase','Queues','spread','capitalize','QueueId','Queue:save','voice','VoiceQueue','format','SIP/%s','voicePause','UserVoiceQueueRt','upsert','channel','Unknown\x20channel','remove','isArray','emit','Queue:remove','addAvatar','userpic','file','filename','join','root','download','existsSync','server/files/images/','getOpenTabs','chat','CHAT','FaxOpenTabs','FAX','createdAt','OpenchannelOpenTabs','MailOpenTabs','MAIL','SmsOpenTabs','WhatsappOpenTabs','WHATSAPP','CmContact','order','sort','pick','CmList','Tags','color','tag','hasOwnProperty','nolimit','getContacts','getQueues','Queue','Unknown\x20role','getVoiceQueuesRt','ChatGroup','getGroups','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','phone','mobile','intrf','user:%s','user:forcelogout','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','getChannels','YYYY-MM-DD\x20HH:mm:ss','LOGIN','PAUSE','concat','LOGININPAUSE','isMiddleware','resolve','logout','forEach','pause','QueuePause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','faxPause','smsPause','whatsapppause','lastPauseAt','manual','%s%s','Pause','getTeams','addTeams','Voice','getChatQueues','setDataValue','Chat','getMailQueues','Mail','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','getFaxQueues','getOpenchannelQueues','Openchannel','flatten','addAgent','getDataValue','penalty','removeTeams','Fax','transaction','removeAgent','getLists','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','$and','$gt','$gte','$lte','$eq','$between','$notBetween','$in','$like','$notLike','$notILike','$overlap','$contains','$contained','firstName','lastName','Contact','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','API\x20key\x20not\x20available','whoami','getPresence','teams','queues','Team','getAgents','lower','col','toString','asc','desc','uniqBy','orderBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','idle','unknown','ringing','voiceStatus','busy','slice','toUpperCase','select','field','ui.','InteractionId','_interactions'];(function(_0x4f4668,_0x2a9474){var _0x45ca66=function(_0xb61325){while(--_0xb61325){_0x4f4668['push'](_0x4f4668['shift']());}};_0x45ca66(++_0x2a9474);}(_0x1619,0x189));var _0x9161=function(_0x34347c,_0x1fa27d){_0x34347c=_0x34347c-0x0;var _0x49c4a7=_0x1619[_0x34347c];return _0x49c4a7;};'use strict';var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x9161('0x0'));var path=require('path');var fs=require('fs');var _=require(_0x9161('0x1'));var squel=require(_0x9161('0x2'));var jayson=require(_0x9161('0x3'));var Redis=require('ioredis');var authService=require(_0x9161('0x4'));var qs=require('../../components/parsers/qs');var logger=require(_0x9161('0x5'))('api');var utils=require('../../config/utils');var config=require(_0x9161('0x6'));var licenseUtil=require(_0x9161('0x7'));var db=require('../../mysqldb')['db'];var socket=require(_0x9161('0x8'))(new Redis(config[_0x9161('0x9')]));require('./user.socket')[_0x9161('0xa')](socket);config['redis']=_[_0x9161('0xb')](config['redis'],{'host':_0x9161('0xc'),'port':0x18eb});var client=jayson[_0x9161('0xd')][_0x9161('0xe')]({'port':0x232a});var values;function respondWithRpcPromise(_0x251ee2,_0x37dcc7,_0x442399,_0x32ef57){return new BPromise(function(_0x51030c,_0x5a9a1c){var _0x52f17c=_0x32ef57||client;return _0x52f17c['request'](_0x251ee2,_0x442399)[_0x9161('0xf')](function(_0x575ce5){logger[_0x9161('0x10')](_0x9161('0x11'),_0x37dcc7,_0x9161('0x12'));logger[_0x9161('0x13')](_0x9161('0x14'),_0x37dcc7,_0x9161('0x12'),JSON[_0x9161('0x15')](_0x575ce5));if(_0x575ce5[_0x9161('0x16')]){if(_0x575ce5['error'][_0x9161('0x17')]===0x1f4){logger[_0x9161('0x16')](_0x9161('0x11'),_0x37dcc7,_0x575ce5['error'][_0x9161('0x18')]);return _0x5a9a1c(_0x575ce5[_0x9161('0x16')][_0x9161('0x18')]);}logger['error'](_0x9161('0x11'),_0x37dcc7,_0x575ce5[_0x9161('0x16')]['message']);return _0x51030c(_0x575ce5[_0x9161('0x16')][_0x9161('0x18')]);}else{logger[_0x9161('0x10')](_0x9161('0x11'),_0x37dcc7,_0x9161('0x12'));_0x51030c(_0x575ce5[_0x9161('0x19')][_0x9161('0x18')]);}})['catch'](function(_0x73d1cc){logger['error'](_0x9161('0x11'),_0x37dcc7,_0x73d1cc);_0x5a9a1c(_0x73d1cc);});});}function respondWithStatusCode(_0x12918e,_0x2db6a0){_0x2db6a0=_0x2db6a0||0xcc;return function(_0x56b77a){if(_0x56b77a){return _0x12918e['sendStatus'](_0x2db6a0);}return _0x12918e['status'](_0x2db6a0)[_0x9161('0x1a')]();};}function respondWithResult(_0x30f97f,_0x5b735a){_0x5b735a=_0x5b735a||0xc8;return function(_0x49f1ea){if(_0x49f1ea){return _0x30f97f['status'](_0x5b735a)['json'](_0x49f1ea);}};}function respondWithFilteredResult(_0x20fa48,_0x41a5f8){return function(_0x214e1b){if(_0x214e1b){var _0x2ffeb4=typeof _0x41a5f8[_0x9161('0x1b')]===_0x9161('0x1c')&&typeof _0x41a5f8[_0x9161('0x1d')]==='undefined';var _0x8c4949=_0x214e1b[_0x9161('0x1e')];var _0x20899d=_0x2ffeb4?0x0:_0x41a5f8[_0x9161('0x1b')];var _0x2b17a3=_0x2ffeb4?_0x214e1b[_0x9161('0x1e')]:_0x41a5f8[_0x9161('0x1b')]+_0x41a5f8[_0x9161('0x1d')];var _0x588ea6;if(_0x2b17a3>=_0x8c4949){_0x2b17a3=_0x8c4949;_0x588ea6=0xc8;}else{_0x588ea6=0xce;}_0x20fa48[_0x9161('0x1f')](_0x588ea6);return _0x20fa48[_0x9161('0x20')]('Content-Range',_0x20899d+'-'+_0x2b17a3+'/'+_0x8c4949)[_0x9161('0x21')](_0x214e1b);}return null;};}function saveUpdates(_0x3124dc){return function(_0x522a04){if(_0x522a04){return _0x522a04[_0x9161('0x22')](_0x3124dc)[_0x9161('0xf')](function(_0x5ce294){return _0x5ce294;});}return null;};}function removeEntity(_0x2b29ff){return function(_0x464786){if(_0x464786){return _0x464786[_0x9161('0x23')]()['then'](function(){var _0x40daaf=_0x464786[_0x9161('0x24')]({'plain':!![]});if(_0x40daaf[_0x9161('0x25')]==='admin')return;var _0x4523dd=[{'name':_0x9161('0x26'),'value':_0x9161('0x27'),'ignore':!![]},{'name':'Agents','value':_0x9161('0x28'),'ignore':![]},{'name':_0x9161('0x29'),'value':_0x9161('0x2a'),'ignore':![]}];var _0x207519=_(_0x4523dd)[_0x9161('0x2b')](_0x9161('0x2c'))[_0x9161('0x2d')](_0x9161('0x2e'))[_0x9161('0x2e')]();if(_[_0x9161('0x2f')](_0x207519,_0x40daaf[_0x9161('0x25')])){return;}var _0x44cb29=_[_0x9161('0x30')](_0x4523dd,[_0x9161('0x2e'),_0x40daaf[_0x9161('0x25')]])[_0x9161('0x31')];return db[_0x9161('0x32')][_0x9161('0x23')]({'where':{'type':_0x44cb29,'resourceId':_0x40daaf['id']}})[_0x9161('0xf')](function(){return _0x464786;});})[_0x9161('0xf')](function(){_0x2b29ff[_0x9161('0x1f')](0xcc)[_0x9161('0x1a')]();});}};}function handleEntityNotFound(_0x5b9b49){return function(_0x55b787){if(!_0x55b787){_0x5b9b49['sendStatus'](0x194);}return _0x55b787;};}function handleError(_0xc7b85d,_0x378849){_0x378849=_0x378849||0x1f4;return function(_0x16706b){logger[_0x9161('0x16')](_0x16706b[_0x9161('0x33')]);if(_0x16706b['name']){delete _0x16706b[_0x9161('0x31')];}_0xc7b85d['status'](_0x378849)[_0x9161('0x34')](_0x16706b);};}exports[_0x9161('0x35')]=function(_0x1f6ec1,_0x56f755){var _0x1e9ce3={},_0xa613fe={'count':0x0,'rows':[]};var _0x566711=_(db[_0x9161('0x36')]['rawAttributes'])['map'](function(_0x5b6cdc){return{'name':_0x5b6cdc['fieldName'],'type':_0x5b6cdc[_0x9161('0x37')][_0x9161('0x38')]};})['filter'](function(_0x4d1092){return!_[_0x9161('0x2f')]([_0x9161('0x39'),'salt'],_0x4d1092[_0x9161('0x31')]);})['value']();_0x1e9ce3=qs[_0x9161('0x3a')](_0x566711,_0x1f6ec1);var _0x27be74={'where':_0x1e9ce3[_0x9161('0x3b')]};return db[_0x9161('0x36')]['count'](_0x27be74)['then'](function(_0x2c8eeb){_0xa613fe[_0x9161('0x1e')]=_0x2c8eeb;if(_0x1f6ec1['query']['includeAll']){_0x1e9ce3[_0x9161('0x3c')]=[{'all':!![]}];}if(!_[_0x9161('0x2f')](_0x1e9ce3[_0x9161('0x3d')],'id')){_0x1e9ce3[_0x9161('0x3d')][_0x9161('0x3e')]('id');}return db[_0x9161('0x36')][_0x9161('0x3f')](_0x1e9ce3);})[_0x9161('0xf')](function(_0x2553bd){_0xa613fe[_0x9161('0x40')]=_0x2553bd;if(_0x1f6ec1[_0x9161('0x41')][_0x9161('0x42')]===_0x9161('0x43')){var _0x2ef987=[];for(var _0x177849=0x0;_0x177849<_0xa613fe[_0x9161('0x40')]['length'];_0x177849++){_0x2ef987[_0x9161('0x3e')](get_open_tabs('chat',_0xa613fe[_0x9161('0x40')][_0x177849]['dataValues']));_0x2ef987[_0x9161('0x3e')](get_open_tabs(_0x9161('0x44'),_0xa613fe[_0x9161('0x40')][_0x177849][_0x9161('0x45')]));_0x2ef987[_0x9161('0x3e')](get_open_tabs('fax',_0xa613fe[_0x9161('0x40')][_0x177849]['dataValues']));_0x2ef987[_0x9161('0x3e')](get_open_tabs(_0x9161('0x46'),_0xa613fe[_0x9161('0x40')][_0x177849][_0x9161('0x45')]));_0x2ef987[_0x9161('0x3e')](get_open_tabs(_0x9161('0x47'),_0xa613fe[_0x9161('0x40')][_0x177849][_0x9161('0x45')]));_0x2ef987[_0x9161('0x3e')](get_open_tabs(_0x9161('0x48'),_0xa613fe[_0x9161('0x40')][_0x177849][_0x9161('0x45')]));}return BPromise[_0x9161('0x49')](_0x2ef987)['then'](function(_0x3dfefc){return _0xa613fe;});}else{return _0xa613fe;}})[_0x9161('0xf')](respondWithFilteredResult(_0x56f755,_0x1e9ce3))[_0x9161('0x4a')](handleError(_0x56f755,null));};exports[_0x9161('0x4b')]=function(_0x1a56f8,_0x2af28e){var _0x43db88={'raw':![],'where':{'id':_0x1a56f8[_0x9161('0x4c')]['id']}},_0x3a9492={};_0x3a9492['model']=_['differenceBy'](_[_0x9161('0x4d')](db[_0x9161('0x36')][_0x9161('0x4e')]),[_0x9161('0x39'),_0x9161('0x4f')]);_0x3a9492[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x1a56f8[_0x9161('0x41')]);_0x3a9492[_0x9161('0x50')]=_[_0x9161('0x51')](_0x3a9492[_0x9161('0x52')],_0x3a9492[_0x9161('0x41')]);_0x43db88[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x3a9492['model'],qs[_0x9161('0x53')](_0x1a56f8[_0x9161('0x41')][_0x9161('0x53')]));_0x43db88[_0x9161('0x3d')]=_0x43db88[_0x9161('0x3d')]['length']?_0x43db88['attributes']:_0x3a9492[_0x9161('0x52')];if(_0x1a56f8[_0x9161('0x41')][_0x9161('0x54')]){_0x43db88[_0x9161('0x3c')]=[{'all':!![]}];}_0x43db88=_[_0x9161('0x55')]({},_0x43db88,_0x1a56f8[_0x9161('0x56')]);if(!_[_0x9161('0x2f')](_0x43db88[_0x9161('0x3d')],'id')){_0x43db88['attributes']['push']('id');}return db[_0x9161('0x36')][_0x9161('0x30')](_0x43db88)[_0x9161('0xf')](handleEntityNotFound(_0x2af28e,null))[_0x9161('0xf')](function(_0x4c62db){var _0x1deb75=[];values=_0x4c62db;if(_0x1a56f8[_0x9161('0x41')][_0x9161('0x42')]===_0x9161('0x43')){_0x1deb75[_0x9161('0x3e')](get_open_tabs('chat',_0x4c62db[_0x9161('0x45')]));_0x1deb75['push'](get_open_tabs('sms',_0x4c62db[_0x9161('0x45')]));_0x1deb75['push'](get_open_tabs(_0x9161('0x47'),_0x4c62db['dataValues']));_0x1deb75['push'](get_open_tabs(_0x9161('0x48'),_0x4c62db[_0x9161('0x45')]));_0x1deb75[_0x9161('0x3e')](get_open_tabs(_0x9161('0x57'),_0x4c62db['dataValues']));_0x1deb75[_0x9161('0x3e')](get_open_tabs('mail',_0x4c62db[_0x9161('0x45')]));return BPromise[_0x9161('0x49')](_0x1deb75);}else{return values;}})[_0x9161('0xf')](function(_0x229c73){return values;})[_0x9161('0xf')](respondWithResult(_0x2af28e,null))[_0x9161('0x4a')](handleError(_0x2af28e,null));};exports['update']=function(_0x39ec3e,_0x3edb6b){if(_0x39ec3e[_0x9161('0x58')]['id']){delete _0x39ec3e[_0x9161('0x58')]['id'];}delete _0x39ec3e[_0x9161('0x58')][_0x9161('0x25')];return db[_0x9161('0x36')]['find']({'where':{'id':_0x39ec3e['params']['id']}})['then'](handleEntityNotFound(_0x3edb6b,null))[_0x9161('0xf')](saveUpdates(_0x39ec3e[_0x9161('0x58')],null))[_0x9161('0xf')](respondWithResult(_0x3edb6b,null))[_0x9161('0x4a')](handleError(_0x3edb6b,null));};exports[_0x9161('0x59')]=function(_0x4398d2,_0x23d5d9){return db[_0x9161('0x36')][_0x9161('0x59')]()[_0x9161('0xf')](respondWithResult(_0x23d5d9,null))['catch'](handleError(_0x23d5d9,null));};exports['addContacts']=function(_0x23d291,_0x42f381){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x23d291[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x42f381,null))[_0x9161('0xf')](function(_0xd060a2){if(_0xd060a2){return _0xd060a2['addContacts'](_0x23d291['body'][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x23d291[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{});}})[_0x9161('0xf')](respondWithResult(_0x42f381,null))[_0x9161('0x4a')](handleError(_0x42f381,null));};function validateUser(_0x1390e3){return new BPromise(function(_0x24064c,_0x3f564c){if(_0x1390e3[_0x9161('0x5c')])return _0x24064c(_0x1390e3);return db[_0x9161('0x5d')][_0x9161('0x5e')](0x1)[_0x9161('0xf')](function(_0x24c68d){if(_0x24c68d[_0x9161('0x5f')])authService['validatePasswordPattern'](_0x1390e3[_0x9161('0x39')]);db['User'][_0x9161('0x60')](_0x9161('0x5c'))[_0x9161('0xf')](function(_0x2941c1){if(_['isNil'](_0x2941c1)){_0x1390e3[_0x9161('0x5c')]=_0x24c68d[_0x9161('0x61')]||0x1;return;}if(_['isNil'](_0x24c68d[_0x9161('0x61')])||_0x24c68d[_0x9161('0x61')]===_0x2941c1){_0x1390e3[_0x9161('0x5c')]=_0x2941c1+0x1;return;}if(_0x24c68d['min_internal']>_0x2941c1){_0x1390e3[_0x9161('0x5c')]=_0x24c68d['min_internal'];return;}return db[_0x9161('0x62')][_0x9161('0x41')](_0x9161('0x63'),{'type':db[_0x9161('0x62')][_0x9161('0x64')][_0x9161('0x65')]})['then'](function(_0x35c254){if(_0x35c254&&_0x35c254['length']){for(var _0x5d3d39=0x0,_0x461b17=_0x35c254[_0x9161('0x66')];_0x5d3d39<_0x461b17&&_[_0x9161('0x67')](_0x1390e3['internal']);_0x5d3d39++){if(_0x24c68d[_0x9161('0x61')]<=_0x35c254[_0x5d3d39]['from']){_0x1390e3['internal']=_0x35c254[_0x5d3d39]['from'];}else if(_0x24c68d[_0x9161('0x61')]>_0x35c254[_0x5d3d39][_0x9161('0x68')]&&_0x24c68d[_0x9161('0x61')]<=_0x35c254[_0x5d3d39]['to']){_0x1390e3[_0x9161('0x5c')]=_0x24c68d[_0x9161('0x61')];}}}if(_[_0x9161('0x67')](_0x1390e3[_0x9161('0x5c')])){_0x1390e3[_0x9161('0x5c')]=_0x2941c1+0x1;}return _0x24064c(_0x1390e3);});});})[_0x9161('0x4a')](function(_0x5b7bc3){_0x3f564c(_0x5b7bc3);});});}function updateUser(_0x2a9b17){return new BPromise(function(_0x15f139,_0x4d5211){try{if(_0x2a9b17[_0x9161('0x69')]){_0x2a9b17[_0x9161('0x6a')]=_0x2a9b17[_0x9161('0x5c')];_0x2a9b17[_0x9161('0x6b')]={'mailbox':_0x2a9b17[_0x9161('0x5c')],'password':_0x2a9b17[_0x9161('0x39')],'fullname':_0x2a9b17['fullname'],'email':_0x2a9b17[_0x9161('0x6c')]};}if(_0x2a9b17[_0x9161('0x25')]==='agent'){if(!_0x2a9b17[_0x9161('0x6d')])_0x2a9b17[_0x9161('0x6d')]=[_0x9161('0x6e'),'102',_0x9161('0x6f'),_0x9161('0x70'),_0x9161('0x71'),'104',_0x9161('0x72'),_0x9161('0x73'),'107',_0x9161('0x74'),_0x9161('0x75'),'100',_0x9161('0x76'),_0x9161('0x77'),_0x9161('0x78')];}_0x15f139(_0x2a9b17);}catch(_0x5f4a30){_0x4d5211(_0x5f4a30);}});}exports['create']=function(_0x26699d,_0x272f3f){if(_0x26699d[_0x9161('0x27')][_0x9161('0x25')]===_0x9161('0x28'))throw new Error('Unauthorized');if(_0x26699d[_0x9161('0x58')][_0x9161('0x25')]===_0x9161('0x27')&&_0x26699d[_0x9161('0x27')][_0x9161('0x25')]!==_0x9161('0x79')){throw new Error(_0x9161('0x7a'));}if(_0x26699d[_0x9161('0x58')]['role']===_0x9161('0x79')&&_0x26699d[_0x9161('0x27')][_0x9161('0x25')]!==_0x9161('0x79')){throw new Error(_0x9161('0x7b'));}return licenseUtil[_0x9161('0x7c')]([_0x26699d[_0x9161('0x58')]])[_0x9161('0xf')](function(){return validateUser(_0x26699d[_0x9161('0x58')]);})[_0x9161('0xf')](function(_0x375c52){return updateUser(_0x375c52)[_0x9161('0xf')](function(_0x4b4b85){if(_0x4b4b85['role']==='admin'){_0x4b4b85[_0x9161('0x7d')]=_0x26699d[_0x9161('0x27')]['settingsEnabled'];delete _0x4b4b85['userProfileId'];}return _0x4b4b85;});})[_0x9161('0xf')](function(_0x102402){return db[_0x9161('0x36')]['create'](_0x102402,{'include':[{'model':db[_0x9161('0x6b')],'as':_0x9161('0x6b')}]});})['then'](function(_0x15ba6c){if(_0x26699d[_0x9161('0x58')]['role']===_0x9161('0x27'))return _0x15ba6c;if(_0x26699d[_0x9161('0x27')][_0x9161('0x25')]!==_0x9161('0x27'))return _0x15ba6c;return db['UserProfileSection'][_0x9161('0x30')]({'where':{'name':_0x15ba6c[_0x9161('0x25')]===_0x9161('0x28')?_0x9161('0x7e'):'Telephones','userProfileId':_0x26699d['user'][_0x9161('0x7f')]},'raw':!![]})[_0x9161('0xf')](function(_0xedba89){if(!_0xedba89||_0xedba89[_0x9161('0x80')]!=0x0)return _0x15ba6c;return db['UserProfileResource'][_0x9161('0x81')]({'name':_0x15ba6c['name'],'resourceId':_0x15ba6c['id'],'type':_0xedba89['name'],'sectionId':_0xedba89['id']},{})[_0x9161('0xf')](function(){return _0x15ba6c;});})[_0x9161('0x4a')](function(_0x2b3556){logger[_0x9161('0x16')](_0x9161('0x82'),_0x2b3556);throw _0x2b3556;});})[_0x9161('0xf')](respondWithResult(_0x272f3f,0xc9))[_0x9161('0x4a')](handleError(_0x272f3f,null));};exports[_0x9161('0x83')]=function(_0x47ccec,_0x27623a){var _0x4c22f4=_0x47ccec[_0x9161('0x58')];var _0x24aec3=[];if(_0x47ccec[_0x9161('0x27')][_0x9161('0x25')]==='agent')throw new Error('Unauthorized');if(_['some'](_0x4c22f4,[_0x9161('0x25'),'user'])&&_0x47ccec[_0x9161('0x27')][_0x9161('0x25')]!==_0x9161('0x79')){throw new Error(_0x9161('0x7a'));}if(_[_0x9161('0x84')](_0x4c22f4,['role','admin'])&&_0x47ccec[_0x9161('0x27')][_0x9161('0x25')]!=='admin'){throw new Error(_0x9161('0x85'));}return licenseUtil[_0x9161('0x7c')](_0x4c22f4)[_0x9161('0xf')](function(){return validateUser(_0x4c22f4[0x0]);})[_0x9161('0xf')](function(){for(var _0x57aaba=0x1;_0x57aaba<_0x4c22f4[_0x9161('0x66')];_0x57aaba++){var _0x5de16f=_0x4c22f4[_0x57aaba-0x1][_0x9161('0x5c')];if(!_0x4c22f4[_0x57aaba]['internal'])_0x4c22f4[_0x57aaba][_0x9161('0x5c')]=_0x5de16f+0x1;_0x24aec3[_0x9161('0x3e')](validateUser(_0x4c22f4[_0x57aaba]));}return BPromise['all'](_0x24aec3);})[_0x9161('0xf')](function(){_0x24aec3=[];for(var _0x4700a8=0x0;_0x4700a8<_0x4c22f4[_0x9161('0x66')];_0x4700a8++){_0x24aec3['push'](updateUser(_0x4c22f4[_0x4700a8]));}return BPromise['all'](_0x24aec3);})[_0x9161('0xf')](function(){return BPromise[_0x9161('0x86')](_0x4c22f4,function(_0x2dbe3f){return db[_0x9161('0x36')][_0x9161('0x81')](_0x2dbe3f,{'include':[{'model':db['VoiceMail'],'as':'VoiceMail'}]})[_0x9161('0xf')](function(_0x178e33){_0x2dbe3f['id']=_0x178e33['id'];return _0x2dbe3f;});});})['then'](function(_0x1b00e3){if(_0x47ccec[_0x9161('0x58')][_0x9161('0x25')]===_0x9161('0x27'))return _0x1b00e3;if(_0x47ccec[_0x9161('0x27')]['role']!=='user')return _0x1b00e3;var _0x80b5b8=_['some'](_0x1b00e3,function(_0x17b2d1){return _0x17b2d1['role']===_0x9161('0x28')||_0x17b2d1[_0x9161('0x25')]===_0x9161('0x2a');});if(!_0x80b5b8)return _0x1b00e3;return db[_0x9161('0x87')][_0x9161('0x3f')]({'where':{'name':{'$or':['Agents',_0x9161('0x29')]},'userProfileId':_0x47ccec[_0x9161('0x27')][_0x9161('0x7f')]},'raw':!![]})[_0x9161('0xf')](function(_0x1619ac){if(_[_0x9161('0x88')](_0x1619ac)||!_[_0x9161('0x84')](_0x1619ac,['autoAssociation',0x0]))return _0x1b00e3;_0x24aec3=[];var _0x2ccb78=_(_0x1619ac)[_0x9161('0x2d')](function(_0x4d1a31){if(_0x4d1a31[_0x9161('0x80')]===0x1)return;return _0x4d1a31[_0x9161('0x31')]===_0x9161('0x7e')?_0x9161('0x28'):_0x9161('0x2a');})['compact']()[_0x9161('0x2e')]();for(var _0x1a93a2=0x0;_0x1a93a2<_0x1b00e3[_0x9161('0x66')];_0x1a93a2++){if(!_[_0x9161('0x2f')](_0x2ccb78,_0x1b00e3[_0x1a93a2]['role']))return;var _0x39b2b1=_0x1b00e3[_0x1a93a2][_0x9161('0x25')]==='agent'?_0x9161('0x7e'):_0x9161('0x29');_0x24aec3[_0x9161('0x3e')](db['UserProfileResource']['create']({'name':_0x1b00e3[_0x1a93a2][_0x9161('0x31')],'resourceId':_0x1b00e3[_0x1a93a2]['id'],'type':_0x39b2b1,'sectionId':_['find'](_0x1619ac,[_0x9161('0x31'),_0x39b2b1])['id']},{}));}return BPromise['all'](_0x24aec3);});})[_0x9161('0xf')](respondWithResult(_0x27623a,0xc9))[_0x9161('0x4a')](handleError(_0x27623a,null));};exports[_0x9161('0x89')]=function(_0x43d1fd,_0x42d54a){if(_0x43d1fd['body']['id']){delete _0x43d1fd[_0x9161('0x58')]['id'];}return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x43d1fd[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](function(_0x1935d0){if(!_0x1935d0)return null;if(_0x1935d0['id']===_0x43d1fd[_0x9161('0x27')]['id']){if(!_0x43d1fd[_0x9161('0x58')][_0x9161('0x8a')]||!_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')]){throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0x8e'));}if(!_0x1935d0['authenticate'](_0x43d1fd['body'][_0x9161('0x8a')])){throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))]('Wrong\x20credentials');}if(_0x43d1fd[_0x9161('0x58')][_0x9161('0x8a')]===_0x43d1fd[_0x9161('0x58')]['newPassword']){throw new db['Sequelize']['ValidationError'](_0x9161('0x8f'));}}else if(_0x43d1fd['user'][_0x9161('0x25')]===_0x9161('0x79')){if(!_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')]){throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0x90'));}}else if(_0x43d1fd[_0x9161('0x27')][_0x9161('0x25')]===_0x9161('0x27')){if(!_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')]){throw new db[(_0x9161('0x8c'))]['ValidationError'](_0x9161('0x90'));}if(_0x1935d0[_0x9161('0x25')]!==_0x9161('0x28')){throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0x91'));}}else{throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0x91'));}return _0x1935d0;})[_0x9161('0xf')](handleEntityNotFound(_0x42d54a,null))[_0x9161('0xf')](function(_0xfc328b){return db[_0x9161('0x5d')][_0x9161('0x92')]({'attributes':['id',_0x9161('0x5f'),_0x9161('0x93'),'passwordHistoryLimit']})[_0x9161('0xf')](function(_0x4dbbc1){if(_0x4dbbc1[_0x9161('0x5f')])authService[_0x9161('0x94')](_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')]);if(!_0x4dbbc1[_0x9161('0x93')]||!_0xfc328b[_0x9161('0x95')])return _0xfc328b;authService[_0x9161('0x96')](_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')],_0xfc328b[_0x9161('0x95')],_0x4dbbc1[_0x9161('0x97')]);return _0xfc328b;})[_0x9161('0xf')](saveUpdates({'password':_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')],'passwordResetAt':_0x43d1fd[_0x9161('0x27')]['id']==_0x43d1fd[_0x9161('0x4c')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x43d1fd[_0x9161('0x58')][_0x9161('0x8b')],_0xfc328b[_0x9161('0x95')])},null));})['then'](respondWithResult(_0x42d54a,null))[_0x9161('0x4a')](handleError(_0x42d54a,null));};exports['addQueues']=function(_0x1db9e0,_0x142e2c){var _0x2e9834=_0x1db9e0['body']['channel'];return db['User']['find']({'where':{'id':_0x1db9e0['params']['id']},'attributes':['id',_0x9161('0x31'),_0x9161('0x25'),_0x9161('0x98'),_0x9161('0x99'),'voicePause',_0x9161('0x9a')]})['then'](handleEntityNotFound(_0x142e2c,null))['then'](function(_0x49f519){if(_0x49f519){if(!utils[_0x9161('0x9b')](_0x2e9834)){throw new db['Sequelize'][(_0x9161('0x8d'))]('Unknown\x20channel');}return _0x49f519[_0x9161('0x9c')+_['capitalize'](_0x2e9834[_0x9161('0x9d')]())+_0x9161('0x9e')](_0x1db9e0[_0x9161('0x58')][_0x9161('0x5a')],{'penalty':_0x1db9e0['body']['penalty']||0x0})[_0x9161('0x9f')](function(_0x4ff055){for(var _0x12f67d=0x0;_0x12f67d<_0x1db9e0[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x12f67d+=0x1){var _0x56eb88={'UserId':Number(_0x1db9e0[_0x9161('0x4c')]['id'])};_0x56eb88[_[_0x9161('0xa0')](_0x2e9834[_0x9161('0x9d')]())+_0x9161('0xa1')]=Number(_0x1db9e0['body'][_0x9161('0x5a')][_0x12f67d]);socket['emit'](_0x9161('0x27')+_[_0x9161('0xa0')](_0x2e9834[_0x9161('0x9d')]())+_0x9161('0xa2'),_0x56eb88);}return _0x4ff055;})[_0x9161('0xf')](function(){if(_0x2e9834===_0x9161('0xa3')){return db[_0x9161('0xa4')][_0x9161('0x3f')]({'where':{'id':_0x1db9e0[_0x9161('0x58')][_0x9161('0x5a')]||[]},'raw':!![],'attributes':['id','name']});}})[_0x9161('0xf')](function(_0x21e866){var _0x51611d=_0x49f519['get']({'plain':!![]});var _0x2810b4=[];if(_0x2e9834===_0x9161('0xa3')&&_0x51611d[_0x9161('0x25')]===_0x9161('0x28')&&_0x51611d[_0x9161('0x98')]){for(var _0x215a93=0x0;_0x215a93<_0x21e866[_0x9161('0x66')];_0x215a93+=0x1){_0x2810b4[_0x9161('0x3e')]({'membername':_0x51611d[_0x9161('0x31')],'UserId':_0x51611d['id'],'queue_name':_0x21e866[_0x215a93][_0x9161('0x31')],'VoiceQueueId':_0x21e866[_0x215a93]['id'],'interface':_[_0x9161('0x67')](_0x51611d[_0x9161('0x9a')])?util[_0x9161('0xa5')](_0x9161('0xa6'),_0x51611d[_0x9161('0x31')]):_0x51611d['interface'],'paused':_0x51611d[_0x9161('0xa7')]||![],'penalty':_0x1db9e0[_0x9161('0x58')]['penalty']||0x0});}return BPromise[_0x9161('0x86')](_0x2810b4,function(_0x2f4923){return db[_0x9161('0xa8')][_0x9161('0xa9')](_0x2f4923);});}return _0x49f519;});}})[_0x9161('0xf')](respondWithStatusCode(_0x142e2c,null))[_0x9161('0x4a')](handleError(_0x142e2c,null));};exports['removeQueues']=function(_0x5b88bf,_0x522d1f){var _0x2ee027;return db[_0x9161('0x36')]['find']({'where':{'id':_0x5b88bf[_0x9161('0x4c')]['id']},'attributes':['id',_0x9161('0x31'),_0x9161('0x25')]})[_0x9161('0xf')](handleEntityNotFound(_0x522d1f,null))[_0x9161('0xf')](function(_0x540f9a){if(_0x540f9a){_0x2ee027=_0x540f9a;if(!_0x5b88bf[_0x9161('0x41')]['channel']||!utils['isValidChannel'](_0x5b88bf[_0x9161('0x41')][_0x9161('0xaa')])){throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0xab'));}return _0x540f9a[_0x9161('0xac')+_[_0x9161('0xa0')](_0x5b88bf['query'][_0x9161('0xaa')][_0x9161('0x9d')]())+_0x9161('0x9e')](_0x5b88bf[_0x9161('0x41')][_0x9161('0x5a')]);}})[_0x9161('0xf')](function(_0x1562fa){if(_[_0x9161('0xad')](_0x5b88bf[_0x9161('0x41')][_0x9161('0x5a')])){for(var _0x5ab314=0x0;_0x5ab314<_0x5b88bf['query'][_0x9161('0x5a')][_0x9161('0x66')];_0x5ab314+=0x1){var _0x545140={'UserId':Number(_0x5b88bf[_0x9161('0x4c')]['id'])};_0x545140[_[_0x9161('0xa0')](_0x5b88bf[_0x9161('0x41')]['channel'][_0x9161('0x9d')]())+'QueueId']=Number(_0x5b88bf[_0x9161('0x41')][_0x9161('0x5a')][_0x5ab314]);socket[_0x9161('0xae')](_0x9161('0x27')+_[_0x9161('0xa0')](_0x5b88bf[_0x9161('0x41')][_0x9161('0xaa')][_0x9161('0x9d')]())+'Queue:remove',_0x545140);}}else{var _0x545140={'UserId':Number(_0x5b88bf[_0x9161('0x4c')]['id'])};_0x545140[_[_0x9161('0xa0')](_0x5b88bf['query'][_0x9161('0xaa')][_0x9161('0x9d')]())+_0x9161('0xa1')]=Number(_0x5b88bf[_0x9161('0x41')][_0x9161('0x5a')]);socket['emit'](_0x9161('0x27')+_['capitalize'](_0x5b88bf[_0x9161('0x41')][_0x9161('0xaa')][_0x9161('0x9d')]())+_0x9161('0xaf'),_0x545140);}return _0x1562fa;})['then'](function(){if(_0x5b88bf[_0x9161('0x41')][_0x9161('0xaa')]===_0x9161('0xa3')){return db[_0x9161('0xa8')][_0x9161('0x23')]({'where':{'UserId':_0x5b88bf['params']['id'],'VoiceQueueId':_0x5b88bf[_0x9161('0x41')][_0x9161('0x5a')]},'individualHooks':!![]})[_0x9161('0xf')](function(){return _0x2ee027;});}return _0x2ee027;})[_0x9161('0xf')](respondWithStatusCode(_0x522d1f,null))['catch'](handleError(_0x522d1f,null));};exports[_0x9161('0xb0')]=function(_0x338659,_0x4d50e2){_0x338659['body'][_0x9161('0xb1')]=_0x338659[_0x9161('0xb2')][_0x9161('0xb3')];return db['User'][_0x9161('0x30')]({'where':{'id':_0x338659[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x4d50e2,null))[_0x9161('0xf')](saveUpdates(_0x338659[_0x9161('0x58')],null))[_0x9161('0xf')](respondWithResult(_0x4d50e2,null))[_0x9161('0x4a')](handleError(_0x4d50e2,null));};exports['getAvatar']=function(_0x204643,_0x53ef87){var _0x1d6e82=path[_0x9161('0xb4')](config[_0x9161('0xb5')],'server/files/images/logos/default_profile.png');return db[_0x9161('0x36')]['find']({'where':{'id':_0x204643[_0x9161('0x4c')]['id']},'attributes':['id',_0x9161('0xb1')],'raw':!![]})[_0x9161('0xf')](handleEntityNotFound(_0x53ef87,null))[_0x9161('0xf')](function(_0x492516){if(_0x492516){if(_[_0x9161('0x67')](_0x492516[_0x9161('0xb1')])){return _0x53ef87[_0x9161('0xb6')](_0x1d6e82);}else{if(!fs[_0x9161('0xb7')](path['join'](config[_0x9161('0xb5')],_0x9161('0xb8'),_0x492516['userpic']))){return _0x53ef87[_0x9161('0xb6')](_0x1d6e82);}return _0x53ef87['download'](path[_0x9161('0xb4')](config['root'],_0x9161('0xb8'),_0x492516[_0x9161('0xb1')]));}}})[_0x9161('0x4a')](handleError(_0x53ef87,null));};exports[_0x9161('0xb9')]=function(_0x1c7c8c,_0x4dac04){return db['User'][_0x9161('0x30')]({'where':{'id':_0x1c7c8c['params']['id']},'attributes':['id']})[_0x9161('0xf')](handleEntityNotFound(_0x4dac04,null))[_0x9161('0xf')](function(_0x492090){var _0x2a06db=[];values=_0x492090[_0x9161('0x45')];_0x2a06db['push'](get_open_tabs(_0x9161('0xba'),_0x492090['dataValues']));_0x2a06db[_0x9161('0x3e')](get_open_tabs(_0x9161('0x44'),_0x492090[_0x9161('0x45')]));_0x2a06db['push'](get_open_tabs(_0x9161('0x47'),_0x492090[_0x9161('0x45')]));_0x2a06db[_0x9161('0x3e')](get_open_tabs(_0x9161('0x48'),_0x492090[_0x9161('0x45')]));_0x2a06db['push'](get_open_tabs(_0x9161('0x57'),_0x492090['dataValues']));_0x2a06db[_0x9161('0x3e')](get_open_tabs(_0x9161('0x46'),_0x492090[_0x9161('0x45')]));return BPromise[_0x9161('0x49')](_0x2a06db);})[_0x9161('0xf')](function(_0x5a118b){var _0xe25158=[];if(_0x5a118b){for(var _0x3fb79e=0x0;_0x3fb79e<values['ChatOpenTabs']['length'];_0x3fb79e++){var _0x2eaa70=values['ChatOpenTabs'][_0x3fb79e];_0xe25158['push']({'channel':_0x9161('0xbb'),'id':_0x2eaa70['id'],'createdAt':_0x2eaa70['createdAt']});}for(var _0x3fb79e=0x0;_0x3fb79e<values[_0x9161('0xbc')][_0x9161('0x66')];_0x3fb79e++){var _0x2eaa70=values[_0x9161('0xbc')][_0x3fb79e];_0xe25158['push']({'channel':_0x9161('0xbd'),'id':_0x2eaa70['id'],'createdAt':_0x2eaa70[_0x9161('0xbe')]});}for(var _0x3fb79e=0x0;_0x3fb79e<values[_0x9161('0xbf')][_0x9161('0x66')];_0x3fb79e++){var _0x2eaa70=values[_0x9161('0xbf')][_0x3fb79e];_0xe25158[_0x9161('0x3e')]({'channel':'OPENCHANNEL','id':_0x2eaa70['id'],'createdAt':_0x2eaa70['createdAt']});}for(var _0x3fb79e=0x0;_0x3fb79e<values[_0x9161('0xc0')]['length'];_0x3fb79e++){var _0x2eaa70=values[_0x9161('0xc0')][_0x3fb79e];_0xe25158[_0x9161('0x3e')]({'channel':_0x9161('0xc1'),'id':_0x2eaa70['id'],'createdAt':_0x2eaa70[_0x9161('0xbe')]});}for(var _0x3fb79e=0x0;_0x3fb79e<values[_0x9161('0xc2')]['length'];_0x3fb79e++){var _0x2eaa70=values['SmsOpenTabs'][_0x3fb79e];_0xe25158['push']({'channel':'SMS','id':_0x2eaa70['id'],'createdAt':_0x2eaa70[_0x9161('0xbe')]});}for(var _0x3fb79e=0x0;_0x3fb79e<values['WhatsappOpenTabs']['length'];_0x3fb79e++){var _0x2eaa70=values[_0x9161('0xc3')][_0x3fb79e];_0xe25158['push']({'channel':_0x9161('0xc4'),'id':_0x2eaa70['id'],'createdAt':_0x2eaa70[_0x9161('0xbe')]});}var _0x3ab8c0={'count':_0xe25158[_0x9161('0x66')],'rows':_0xe25158};return _0x3ab8c0;}else return null;})['then'](respondWithResult(_0x4dac04,null))[_0x9161('0x4a')](handleError(_0x4dac04,null));};exports['getContacts']=function(_0x490085,_0x48ba3a){var _0x169103={};var _0x459e13={};var _0xe89568;var _0x2197cb;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x490085[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x48ba3a,null))['then'](function(_0x432d07){if(_0x432d07){_0xe89568=_0x432d07;_0x459e13[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0xc5')]['rawAttributes']);_0x459e13[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x490085['query']);_0x459e13[_0x9161('0x50')]=_['intersection'](_0x459e13[_0x9161('0x52')],_0x459e13[_0x9161('0x41')]);_0x169103[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x459e13[_0x9161('0x52')],qs[_0x9161('0x53')](_0x490085['query'][_0x9161('0x53')]));_0x169103[_0x9161('0x3d')]=_0x169103['attributes'][_0x9161('0x66')]?_0x169103[_0x9161('0x3d')]:_0x459e13[_0x9161('0x52')];_0x169103[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x490085[_0x9161('0x41')]['sort']);_0x169103[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x490085[_0x9161('0x41')],_0x459e13[_0x9161('0x50')]));if(_0x490085[_0x9161('0x41')][_0x9161('0x2b')]){_0x169103['where']=_[_0x9161('0x55')](_0x169103[_0x9161('0x3b')],{'$or':_['map'](_0x169103[_0x9161('0x3d')],function(_0x29384c){var _0x554f7d={};_0x554f7d[_0x29384c]={'$like':'%'+_0x490085[_0x9161('0x41')]['filter']+'%'};return _0x554f7d;})});}_0x169103=_[_0x9161('0x55')]({},_0x169103,_0x490085[_0x9161('0x56')]);return _0xe89568['getContacts'](_0x169103);}})[_0x9161('0xf')](function(_0x30df48){if(_0x30df48){_0x2197cb=_0x30df48[_0x9161('0x66')];if(_0x490085[_0x9161('0x41')]['hasOwnProperty'](_0x9161('0x54'))){_0x169103['include']=[{'model':db[_0x9161('0xc9')],'as':'List','required':![]},{'model':db['Tag'],'as':_0x9161('0xca'),'attributes':['id',_0x9161('0x31'),_0x9161('0xcb')],'where':_0x490085['query'][_0x9161('0xcc')]?{'id':_0x490085[_0x9161('0x41')][_0x9161('0xcc')]}:undefined,'required':_0x490085[_0x9161('0x41')][_0x9161('0xcc')]?!![]:![]}];}if(!_0x490085[_0x9161('0x41')][_0x9161('0xcd')](_0x9161('0xce'))){_0x169103[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x490085['query'][_0x9161('0x1d')]);_0x169103[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x490085[_0x9161('0x41')][_0x9161('0x1b')]);}return _0xe89568[_0x9161('0xcf')](_0x169103);}})[_0x9161('0xf')](function(_0x3518cf){if(_0x3518cf){return _0x3518cf?{'count':_0x2197cb,'rows':_0x3518cf}:null;}})[_0x9161('0xf')](respondWithResult(_0x48ba3a,null))[_0x9161('0x4a')](handleError(_0x48ba3a,null));};exports[_0x9161('0xd0')]=function(_0x321659,_0x590500){var _0x5b1498;var _0x59211f;var _0x5f5a2e={};var _0x2d6257;return db[_0x9161('0x36')]['findOne']({'where':{'id':_0x321659[_0x9161('0x4c')]['id']},'attributes':['id',_0x9161('0x31'),'role']})['then'](handleEntityNotFound(_0x590500,null))[_0x9161('0xf')](function(_0x5e2d10){if(!utils['isValidChannel'](_0x321659[_0x9161('0x41')][_0x9161('0xaa')])){throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0xab'));}_0x5b1498=_0x5e2d10;var _0x3199ce={};_0x3199ce[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_['capitalize'](_0x321659[_0x9161('0x41')]['channel'])+'Queue'][_0x9161('0x4e')]);_0x3199ce['query']=_[_0x9161('0x4d')](_0x321659['query']);_0x3199ce[_0x9161('0x50')]=_[_0x9161('0x51')](_0x3199ce[_0x9161('0x52')],_0x3199ce[_0x9161('0x41')]);_0x5f5a2e[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x3199ce[_0x9161('0x52')],qs[_0x9161('0x53')](_0x321659[_0x9161('0x41')][_0x9161('0x53')]));_0x5f5a2e[_0x9161('0x3d')]=_0x5f5a2e[_0x9161('0x3d')][_0x9161('0x66')]?_0x5f5a2e['attributes']:_0x3199ce[_0x9161('0x52')];_0x5f5a2e[_0x9161('0xc6')]=qs['sort'](_0x321659[_0x9161('0x41')][_0x9161('0xc7')]);_0x5f5a2e['where']=qs['filters'](_[_0x9161('0xc8')](_0x321659[_0x9161('0x41')],_0x3199ce[_0x9161('0x50')]));if(_0x321659[_0x9161('0x41')][_0x9161('0x2b')]){_0x5f5a2e[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x5f5a2e['where'],{'$or':_[_0x9161('0x2d')](_0x5f5a2e[_0x9161('0x3d')],function(_0xa9347){var _0x428ae5={};_0x428ae5[_0xa9347]={'$like':'%'+_0x321659[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x428ae5;})});}_0x5f5a2e=_[_0x9161('0x55')]({},_0x5f5a2e,_0x321659['options']);switch(_0x5b1498[_0x9161('0x25')]){case'admin':return db[_[_0x9161('0xa0')](_0x321659[_0x9161('0x41')][_0x9161('0xaa')])+_0x9161('0xd1')][_0x9161('0x3f')](_0x5f5a2e);case _0x9161('0x27'):case _0x9161('0x28'):return _0x5b1498[_0x9161('0x24')+_['capitalize'](_0x321659['query'][_0x9161('0xaa')])+'Queues'](_0x5f5a2e);default:throw new db[(_0x9161('0x8c'))][(_0x9161('0x8d'))](_0x9161('0xd2'));}})[_0x9161('0xf')](function(_0x21bf06){_0x2d6257=_0x21bf06[_0x9161('0x66')];if(!_0x321659['query']['hasOwnProperty'](_0x9161('0xce'))){_0x5f5a2e['limit']=qs[_0x9161('0x1d')](_0x321659[_0x9161('0x41')][_0x9161('0x1d')]);_0x5f5a2e[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x321659[_0x9161('0x41')][_0x9161('0x1b')]);}switch(_0x5b1498['role']){case _0x9161('0x79'):return db[_['capitalize'](_0x321659[_0x9161('0x41')][_0x9161('0xaa')])+_0x9161('0xd1')][_0x9161('0x3f')](_0x5f5a2e);case _0x9161('0x27'):case _0x9161('0x28'):return _0x5b1498[_0x9161('0x24')+_[_0x9161('0xa0')](_0x321659[_0x9161('0x41')][_0x9161('0xaa')])+_0x9161('0x9e')](_0x5f5a2e);}})[_0x9161('0xf')](function(_0x37aa3c){return{'count':_0x2d6257,'rows':_0x37aa3c};})[_0x9161('0xf')](respondWithResult(_0x590500,null))[_0x9161('0x4a')](handleError(_0x590500,null));};exports[_0x9161('0xd3')]=function(_0x4219af,_0x2a5d40){var _0xc64de1={};var _0x268d5e={};var _0x5d458;var _0x2ed6d4;return db['User']['findOne']({'where':{'id':_0x4219af[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x2a5d40,null))[_0x9161('0xf')](function(_0x4c422a){if(_0x4c422a){_0x5d458=_0x4c422a;_0x268d5e[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0xa8')]['rawAttributes']);_0x268d5e['query']=_[_0x9161('0x4d')](_0x4219af['query']);_0x268d5e[_0x9161('0x50')]=_['intersection'](_0x268d5e[_0x9161('0x52')],_0x268d5e[_0x9161('0x41')]);_0xc64de1['attributes']=_[_0x9161('0x51')](_0x268d5e['model'],qs[_0x9161('0x53')](_0x4219af[_0x9161('0x41')][_0x9161('0x53')]));_0xc64de1[_0x9161('0x3d')]=_0xc64de1[_0x9161('0x3d')][_0x9161('0x66')]?_0xc64de1[_0x9161('0x3d')]:_0x268d5e['model'];_0xc64de1[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x4219af['query'][_0x9161('0xc7')]);_0xc64de1[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x4219af['query'],_0x268d5e[_0x9161('0x50')]));if(_0x4219af[_0x9161('0x41')][_0x9161('0x2b')]){_0xc64de1['where']=_[_0x9161('0x55')](_0xc64de1[_0x9161('0x3b')],{'$or':_['map'](_0xc64de1[_0x9161('0x3d')],function(_0x433d6a){var _0x17763d={};_0x17763d[_0x433d6a]={'$like':'%'+_0x4219af[_0x9161('0x41')]['filter']+'%'};return _0x17763d;})});}_0xc64de1=_['merge']({},_0xc64de1,_0x4219af[_0x9161('0x56')]);return _0x5d458[_0x9161('0xd3')](_0xc64de1);}})[_0x9161('0xf')](function(_0x2d5fbc){if(_0x2d5fbc){_0x2ed6d4=_0x2d5fbc[_0x9161('0x66')];if(!_0x4219af[_0x9161('0x41')][_0x9161('0xcd')]('nolimit')){_0xc64de1[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x4219af[_0x9161('0x41')][_0x9161('0x1d')]);_0xc64de1[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x4219af[_0x9161('0x41')][_0x9161('0x1b')]);}return _0x5d458[_0x9161('0xd3')](_0xc64de1);}})[_0x9161('0xf')](function(_0x2fecdf){if(_0x2fecdf){return _0x2fecdf?{'count':_0x2ed6d4,'rows':_0x2fecdf}:null;}})['then'](respondWithResult(_0x2a5d40,null))[_0x9161('0x4a')](handleError(_0x2a5d40,null));};exports['getGroups']=function(_0x179ee8,_0x514319){var _0x13a13b={};var _0x9b0939={};var _0x3c54a2;var _0x12abb2;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x179ee8[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x514319,null))['then'](function(_0x3eadf6){if(_0x3eadf6){_0x3c54a2=_0x3eadf6;_0x9b0939[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0xd4')][_0x9161('0x4e')]);_0x9b0939['query']=_['keys'](_0x179ee8['query']);_0x9b0939[_0x9161('0x50')]=_[_0x9161('0x51')](_0x9b0939[_0x9161('0x52')],_0x9b0939[_0x9161('0x41')]);_0x13a13b['attributes']=_[_0x9161('0x51')](_0x9b0939['model'],qs[_0x9161('0x53')](_0x179ee8[_0x9161('0x41')]['fields']));_0x13a13b[_0x9161('0x3d')]=_0x13a13b[_0x9161('0x3d')][_0x9161('0x66')]?_0x13a13b['attributes']:_0x9b0939[_0x9161('0x52')];_0x13a13b[_0x9161('0xc6')]=qs['sort'](_0x179ee8[_0x9161('0x41')][_0x9161('0xc7')]);_0x13a13b[_0x9161('0x3b')]=qs[_0x9161('0x50')](_['pick'](_0x179ee8['query'],_0x9b0939['filters']));if(_0x179ee8[_0x9161('0x41')][_0x9161('0x2b')]){_0x13a13b[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x13a13b['where'],{'$or':_[_0x9161('0x2d')](_0x13a13b[_0x9161('0x3d')],function(_0x1a03cc){var _0x45d815={};_0x45d815[_0x1a03cc]={'$like':'%'+_0x179ee8[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x45d815;})});}_0x13a13b=_[_0x9161('0x55')]({},_0x13a13b,_0x179ee8[_0x9161('0x56')]);return _0x3c54a2[_0x9161('0xd5')](_0x13a13b);}})[_0x9161('0xf')](function(_0x47d3cc){if(_0x47d3cc){_0x12abb2=_0x47d3cc[_0x9161('0x66')];if(!_0x179ee8[_0x9161('0x41')]['hasOwnProperty'](_0x9161('0xce'))){_0x13a13b['limit']=qs[_0x9161('0x1d')](_0x179ee8[_0x9161('0x41')][_0x9161('0x1d')]);_0x13a13b[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x179ee8[_0x9161('0x41')]['offset']);}return _0x3c54a2[_0x9161('0xd5')](_0x13a13b);}})['then'](function(_0x1ec180){if(_0x1ec180){return _0x1ec180?{'count':_0x12abb2,'rows':_0x1ec180}:null;}})['then'](respondWithResult(_0x514319,null))[_0x9161('0x4a')](handleError(_0x514319,null));};exports['getRecordings']=function(_0x1115cb,_0x5c1b76){var _0x536c4d={'raw':!![],'where':{}};var _0x2cc287={};var _0x5ba6ca={'count':0x0,'rows':[]};return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x1115cb[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x5c1b76,null))[_0x9161('0xf')](function(_0x1f39d6){if(_0x1f39d6){_0x2cc287[_0x9161('0x52')]=_[_0x9161('0x4d')](db['VoiceRecording'][_0x9161('0x4e')]);_0x2cc287[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x1115cb['query']);_0x2cc287[_0x9161('0x50')]=_[_0x9161('0x51')](_0x2cc287['model'],_0x2cc287[_0x9161('0x41')]);_0x536c4d[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x2cc287[_0x9161('0x52')],qs[_0x9161('0x53')](_0x1115cb['query']['fields']));_0x536c4d[_0x9161('0x3d')]=_0x536c4d[_0x9161('0x3d')][_0x9161('0x66')]?_0x536c4d['attributes']:_0x2cc287[_0x9161('0x52')];if(!_0x1115cb['query'][_0x9161('0xcd')](_0x9161('0xce'))){_0x536c4d[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x1115cb[_0x9161('0x41')]['limit']);_0x536c4d['offset']=qs['offset'](_0x1115cb[_0x9161('0x41')][_0x9161('0x1b')]);}_0x536c4d['order']=qs[_0x9161('0xc7')](_0x1115cb['query'][_0x9161('0xc7')]);_0x536c4d[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x1115cb[_0x9161('0x41')],_0x2cc287['filters']));_0x536c4d[_0x9161('0x3b')][_0x9161('0xd6')]=_0x1f39d6['id'];if(_0x1115cb[_0x9161('0x41')]['filter']){_0x536c4d[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x536c4d['where'],{'$or':_[_0x9161('0x2d')](_0x536c4d[_0x9161('0x3d')],function(_0x24661d){var _0x570eb2={};_0x570eb2[_0x24661d]={'$like':'%'+_0x1115cb[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x570eb2;})});}_0x536c4d=_['merge']({},_0x536c4d,_0x1115cb[_0x9161('0x56')]);return db[_0x9161('0xd7')][_0x9161('0x1e')]({'where':_0x536c4d[_0x9161('0x3b')]})[_0x9161('0xf')](function(_0x138501){_0x5ba6ca['count']=_0x138501;if(_0x1115cb[_0x9161('0x41')][_0x9161('0x54')]){_0x536c4d[_0x9161('0x3c')]=[{'all':!![]}];}return db[_0x9161('0xd7')][_0x9161('0x3f')](_0x536c4d);})['then'](function(_0x162858){_0x5ba6ca[_0x9161('0x40')]=_0x162858;return _0x5ba6ca;});}})['then'](respondWithFilteredResult(_0x5c1b76,_0x536c4d))['catch'](handleError(_0x5c1b76,null));};exports[_0x9161('0xd8')]=function(_0x2930ab,_0x17205c){var _0x3ad313={'raw':!![],'where':{}};var _0x21ef23={};var _0x3634a1={'count':0x0,'rows':[]};return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x2930ab[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x17205c,null))[_0x9161('0xf')](function(_0x280a24){if(_0x280a24){_0x21ef23[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0xd9')]['rawAttributes']);_0x21ef23['query']=_[_0x9161('0x4d')](_0x2930ab['query']);_0x21ef23[_0x9161('0x50')]=_['intersection'](_0x21ef23[_0x9161('0x52')],_0x21ef23[_0x9161('0x41')]);_0x3ad313[_0x9161('0x3d')]=_['intersection'](_0x21ef23[_0x9161('0x52')],qs[_0x9161('0x53')](_0x2930ab[_0x9161('0x41')]['fields']));_0x3ad313[_0x9161('0x3d')]=_0x3ad313[_0x9161('0x3d')][_0x9161('0x66')]?_0x3ad313[_0x9161('0x3d')]:_0x21ef23[_0x9161('0x52')];if(!_0x2930ab[_0x9161('0x41')][_0x9161('0xcd')]('nolimit')){_0x3ad313['limit']=qs[_0x9161('0x1d')](_0x2930ab[_0x9161('0x41')][_0x9161('0x1d')]);_0x3ad313[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x2930ab['query'][_0x9161('0x1b')]);}_0x3ad313[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x2930ab[_0x9161('0x41')][_0x9161('0xc7')]);_0x3ad313[_0x9161('0x3b')]=qs[_0x9161('0x50')](_['pick'](_0x2930ab[_0x9161('0x41')],_0x21ef23[_0x9161('0x50')]));_0x3ad313[_0x9161('0x3b')][_0x9161('0xd6')]=_0x280a24['id'];if(_0x2930ab[_0x9161('0x41')][_0x9161('0x2b')]){_0x3ad313['where']=_[_0x9161('0x55')](_0x3ad313[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x3ad313[_0x9161('0x3d')],function(_0x2746b7){var _0x189e7d={};_0x189e7d[_0x2746b7]={'$like':'%'+_0x2930ab[_0x9161('0x41')]['filter']+'%'};return _0x189e7d;})});}_0x3ad313=_[_0x9161('0x55')]({},_0x3ad313,_0x2930ab[_0x9161('0x56')]);return db[_0x9161('0xd9')][_0x9161('0x1e')]({'where':_0x3ad313[_0x9161('0x3b')]})[_0x9161('0xf')](function(_0x472a49){_0x3634a1[_0x9161('0x1e')]=_0x472a49;if(_0x2930ab['query'][_0x9161('0x54')]){_0x3ad313[_0x9161('0x3c')]=[{'all':!![]}];}return db[_0x9161('0xd9')][_0x9161('0x3f')](_0x3ad313);})[_0x9161('0xf')](function(_0x397387){_0x3634a1['rows']=_0x397387;return _0x3634a1;});}})['then'](respondWithFilteredResult(_0x17205c,_0x3ad313))[_0x9161('0x4a')](handleError(_0x17205c,null));};exports[_0x9161('0xda')]=function(_0x12a92f,_0x35c36c){var _0x1af8c2={};var _0x262940={};var _0x4b1f35;var _0x2fdb66;return db['User'][_0x9161('0x92')]({'where':{'id':_0x12a92f[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x35c36c,null))['then'](function(_0x2b4ff5){if(_0x2b4ff5){_0x4b1f35=_0x2b4ff5;_0x262940['model']=_[_0x9161('0x4d')](db['ChatInteraction']['rawAttributes']);_0x262940[_0x9161('0x41')]=_['keys'](_0x12a92f[_0x9161('0x41')]);_0x262940[_0x9161('0x50')]=_[_0x9161('0x51')](_0x262940[_0x9161('0x52')],_0x262940[_0x9161('0x41')]);_0x1af8c2[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x262940[_0x9161('0x52')],qs[_0x9161('0x53')](_0x12a92f['query'][_0x9161('0x53')]));_0x1af8c2[_0x9161('0x3d')]=_0x1af8c2[_0x9161('0x3d')][_0x9161('0x66')]?_0x1af8c2[_0x9161('0x3d')]:_0x262940['model'];_0x1af8c2['order']=qs[_0x9161('0xc7')](_0x12a92f[_0x9161('0x41')][_0x9161('0xc7')]);_0x1af8c2['where']=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x12a92f[_0x9161('0x41')],_0x262940[_0x9161('0x50')]));if(_0x12a92f['query'][_0x9161('0x2b')]){_0x1af8c2[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x1af8c2[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x1af8c2[_0x9161('0x3d')],function(_0x16d122){var _0x489f2b={};_0x489f2b[_0x16d122]={'$like':'%'+_0x12a92f[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x489f2b;})});}_0x1af8c2=_[_0x9161('0x55')]({},_0x1af8c2,_0x12a92f[_0x9161('0x56')]);return _0x4b1f35[_0x9161('0xda')](_0x1af8c2);}})[_0x9161('0xf')](function(_0x15275c){if(_0x15275c){_0x2fdb66=_0x15275c[_0x9161('0x66')];if(!_0x12a92f['query'][_0x9161('0xcd')]('nolimit')){_0x1af8c2[_0x9161('0x1d')]=qs['limit'](_0x12a92f[_0x9161('0x41')][_0x9161('0x1d')]);_0x1af8c2[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x12a92f['query'][_0x9161('0x1b')]);}return _0x4b1f35[_0x9161('0xda')](_0x1af8c2);}})[_0x9161('0xf')](function(_0x575a52){if(_0x575a52){return _0x575a52?{'count':_0x2fdb66,'rows':_0x575a52}:null;}})[_0x9161('0xf')](respondWithResult(_0x35c36c,null))[_0x9161('0x4a')](handleError(_0x35c36c,null));};exports[_0x9161('0xdb')]=function(_0x11e0e1,_0x158f83){var _0xb22372={};var _0x3c3bec={};var _0xae27a6;var _0x2d9ab1;return db[_0x9161('0x36')]['findOne']({'where':{'id':_0x11e0e1[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x158f83,null))[_0x9161('0xf')](function(_0x40ce89){if(_0x40ce89){_0xae27a6=_0x40ce89;_0x3c3bec['model']=_[_0x9161('0x4d')](db[_0x9161('0xdc')][_0x9161('0x4e')]);_0x3c3bec[_0x9161('0x41')]=_['keys'](_0x11e0e1['query']);_0x3c3bec[_0x9161('0x50')]=_['intersection'](_0x3c3bec[_0x9161('0x52')],_0x3c3bec[_0x9161('0x41')]);_0xb22372[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x3c3bec['model'],qs['fields'](_0x11e0e1[_0x9161('0x41')][_0x9161('0x53')]));_0xb22372[_0x9161('0x3d')]=_0xb22372[_0x9161('0x3d')]['length']?_0xb22372[_0x9161('0x3d')]:_0x3c3bec[_0x9161('0x52')];_0xb22372[_0x9161('0xc6')]=qs['sort'](_0x11e0e1[_0x9161('0x41')]['sort']);_0xb22372[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x11e0e1[_0x9161('0x41')],_0x3c3bec[_0x9161('0x50')]));if(_0x11e0e1[_0x9161('0x41')]['filter']){_0xb22372['where']=_[_0x9161('0x55')](_0xb22372[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0xb22372[_0x9161('0x3d')],function(_0x4e707b){var _0x2a67cb={};_0x2a67cb[_0x4e707b]={'$like':'%'+_0x11e0e1[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x2a67cb;})});}_0xb22372=_['merge']({},_0xb22372,_0x11e0e1[_0x9161('0x56')]);return _0xae27a6['getOpenchannelInteractions'](_0xb22372);}})[_0x9161('0xf')](function(_0x424704){if(_0x424704){_0x2d9ab1=_0x424704[_0x9161('0x66')];if(!_0x11e0e1['query']['hasOwnProperty']('nolimit')){_0xb22372[_0x9161('0x1d')]=qs['limit'](_0x11e0e1[_0x9161('0x41')][_0x9161('0x1d')]);_0xb22372[_0x9161('0x1b')]=qs['offset'](_0x11e0e1[_0x9161('0x41')][_0x9161('0x1b')]);}return _0xae27a6[_0x9161('0xdb')](_0xb22372);}})[_0x9161('0xf')](function(_0x3c9c9c){if(_0x3c9c9c){return _0x3c9c9c?{'count':_0x2d9ab1,'rows':_0x3c9c9c}:null;}})[_0x9161('0xf')](respondWithResult(_0x158f83,null))['catch'](handleError(_0x158f83,null));};exports[_0x9161('0xdd')]=function(_0x12b7c7,_0x22e2c8){var _0x22e257={'raw':!![],'where':{}};var _0x3ca168={};var _0x2fe3ed={'count':0x0,'rows':[]};return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x12b7c7['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x22e2c8,null))[_0x9161('0xf')](function(_0x3d75a3){if(_0x3d75a3){_0x3ca168[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0xde')][_0x9161('0x4e')]);_0x3ca168[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x12b7c7[_0x9161('0x41')]);_0x3ca168[_0x9161('0x50')]=_[_0x9161('0x51')](_0x3ca168['model'],_0x3ca168[_0x9161('0x41')]);_0x22e257[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x3ca168['model'],qs[_0x9161('0x53')](_0x12b7c7[_0x9161('0x41')][_0x9161('0x53')]));_0x22e257[_0x9161('0x3d')]=_0x22e257[_0x9161('0x3d')][_0x9161('0x66')]?_0x22e257[_0x9161('0x3d')]:_0x3ca168[_0x9161('0x52')];if(!_0x12b7c7[_0x9161('0x41')]['hasOwnProperty'](_0x9161('0xce'))){_0x22e257[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x12b7c7['query'][_0x9161('0x1d')]);_0x22e257[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x12b7c7[_0x9161('0x41')][_0x9161('0x1b')]);}_0x22e257[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x12b7c7['query'][_0x9161('0xc7')]);_0x22e257[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x12b7c7[_0x9161('0x41')],_0x3ca168[_0x9161('0x50')]));_0x22e257[_0x9161('0x3b')]['UserId']=_0x3d75a3['id'];if(_0x12b7c7[_0x9161('0x41')][_0x9161('0x2b')]){_0x22e257[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x22e257[_0x9161('0x3b')],{'$or':_['map'](_0x22e257[_0x9161('0x3d')],function(_0x10ffe0){var _0x5deac1={};_0x5deac1[_0x10ffe0]={'$like':'%'+_0x12b7c7[_0x9161('0x41')]['filter']+'%'};return _0x5deac1;})});}_0x22e257=_[_0x9161('0x55')]({},_0x22e257,_0x12b7c7[_0x9161('0x56')]);return db[_0x9161('0xde')][_0x9161('0x1e')]({'where':_0x22e257['where']})[_0x9161('0xf')](function(_0x160030){_0x2fe3ed[_0x9161('0x1e')]=_0x160030;if(_0x12b7c7[_0x9161('0x41')][_0x9161('0x54')]){_0x22e257['include']=[{'all':!![]}];}return db[_0x9161('0xde')][_0x9161('0x3f')](_0x22e257);})['then'](function(_0x3d310e){_0x2fe3ed[_0x9161('0x40')]=_0x3d310e;return _0x2fe3ed;});}})[_0x9161('0xf')](respondWithFilteredResult(_0x22e2c8,_0x22e257))[_0x9161('0x4a')](handleError(_0x22e2c8,null));};exports[_0x9161('0xdf')]=function(_0x2e00be,_0x33a7a3){var _0x271964={};var _0x1f80a2={};var _0x529045;var _0x30624b;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x2e00be['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x33a7a3,null))[_0x9161('0xf')](function(_0x286419){if(_0x286419){_0x529045=_0x286419;_0x1f80a2[_0x9161('0x52')]=_[_0x9161('0x4d')](db['SmsInteraction']['rawAttributes']);_0x1f80a2[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x2e00be[_0x9161('0x41')]);_0x1f80a2[_0x9161('0x50')]=_[_0x9161('0x51')](_0x1f80a2['model'],_0x1f80a2[_0x9161('0x41')]);_0x271964['attributes']=_[_0x9161('0x51')](_0x1f80a2['model'],qs[_0x9161('0x53')](_0x2e00be[_0x9161('0x41')][_0x9161('0x53')]));_0x271964[_0x9161('0x3d')]=_0x271964[_0x9161('0x3d')][_0x9161('0x66')]?_0x271964[_0x9161('0x3d')]:_0x1f80a2[_0x9161('0x52')];_0x271964[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x2e00be[_0x9161('0x41')][_0x9161('0xc7')]);_0x271964['where']=qs['filters'](_[_0x9161('0xc8')](_0x2e00be['query'],_0x1f80a2[_0x9161('0x50')]));if(_0x2e00be[_0x9161('0x41')]['filter']){_0x271964['where']=_['merge'](_0x271964[_0x9161('0x3b')],{'$or':_['map'](_0x271964['attributes'],function(_0x556d08){var _0x304dea={};_0x304dea[_0x556d08]={'$like':'%'+_0x2e00be[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x304dea;})});}_0x271964=_[_0x9161('0x55')]({},_0x271964,_0x2e00be[_0x9161('0x56')]);return _0x529045[_0x9161('0xdf')](_0x271964);}})[_0x9161('0xf')](function(_0x5e4a0e){if(_0x5e4a0e){_0x30624b=_0x5e4a0e[_0x9161('0x66')];if(!_0x2e00be[_0x9161('0x41')][_0x9161('0xcd')](_0x9161('0xce'))){_0x271964[_0x9161('0x1d')]=qs['limit'](_0x2e00be[_0x9161('0x41')]['limit']);_0x271964[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x2e00be['query'][_0x9161('0x1b')]);}return _0x529045[_0x9161('0xdf')](_0x271964);}})['then'](function(_0x46a583){if(_0x46a583){return _0x46a583?{'count':_0x30624b,'rows':_0x46a583}:null;}})[_0x9161('0xf')](respondWithResult(_0x33a7a3,null))[_0x9161('0x4a')](handleError(_0x33a7a3,null));};exports[_0x9161('0xe0')]=function(_0x29d063,_0x287223){var _0xaac0cd={};var _0x3872b6={};var _0x3b99e6;var _0x49139f;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x29d063[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x287223,null))[_0x9161('0xf')](function(_0x70434d){if(_0x70434d){_0x3b99e6=_0x70434d;_0x3872b6[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0xe1')][_0x9161('0x4e')]);_0x3872b6[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x29d063[_0x9161('0x41')]);_0x3872b6[_0x9161('0x50')]=_[_0x9161('0x51')](_0x3872b6['model'],_0x3872b6[_0x9161('0x41')]);_0xaac0cd[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x3872b6[_0x9161('0x52')],qs[_0x9161('0x53')](_0x29d063[_0x9161('0x41')][_0x9161('0x53')]));_0xaac0cd['attributes']=_0xaac0cd[_0x9161('0x3d')][_0x9161('0x66')]?_0xaac0cd['attributes']:_0x3872b6[_0x9161('0x52')];_0xaac0cd[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x29d063[_0x9161('0x41')][_0x9161('0xc7')]);_0xaac0cd[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x29d063[_0x9161('0x41')],_0x3872b6[_0x9161('0x50')]));if(_0x29d063[_0x9161('0x41')]['filter']){_0xaac0cd[_0x9161('0x3b')]=_[_0x9161('0x55')](_0xaac0cd[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0xaac0cd[_0x9161('0x3d')],function(_0x571b0a){var _0x3b1676={};_0x3b1676[_0x571b0a]={'$like':'%'+_0x29d063['query']['filter']+'%'};return _0x3b1676;})});}_0xaac0cd=_['merge']({},_0xaac0cd,_0x29d063['options']);return _0x3b99e6[_0x9161('0xe0')](_0xaac0cd);}})[_0x9161('0xf')](function(_0x2fa44d){if(_0x2fa44d){_0x49139f=_0x2fa44d[_0x9161('0x66')];if(!_0x29d063['query'][_0x9161('0xcd')](_0x9161('0xce'))){_0xaac0cd[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x29d063[_0x9161('0x41')][_0x9161('0x1d')]);_0xaac0cd[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x29d063[_0x9161('0x41')]['offset']);}return _0x3b99e6['getFaxInteractions'](_0xaac0cd);}})['then'](function(_0x1399f7){if(_0x1399f7){return _0x1399f7?{'count':_0x49139f,'rows':_0x1399f7}:null;}})[_0x9161('0xf')](respondWithResult(_0x287223,null))[_0x9161('0x4a')](handleError(_0x287223,null));};exports[_0x9161('0xe2')]=function(_0x53b074,_0x27ac0){var _0x3ee145={};var _0x88a378={};var _0x34ea55;var _0x433968;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x53b074[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x27ac0,null))['then'](function(_0x58c4a3){if(_0x58c4a3){_0x34ea55=_0x58c4a3;_0x88a378['model']=_['keys'](db[_0x9161('0xe3')][_0x9161('0x4e')]);_0x88a378[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x53b074[_0x9161('0x41')]);_0x88a378['filters']=_['intersection'](_0x88a378[_0x9161('0x52')],_0x88a378[_0x9161('0x41')]);_0x3ee145[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x88a378['model'],qs[_0x9161('0x53')](_0x53b074[_0x9161('0x41')][_0x9161('0x53')]));_0x3ee145[_0x9161('0x3d')]=_0x3ee145['attributes']['length']?_0x3ee145[_0x9161('0x3d')]:_0x88a378['model'];_0x3ee145[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x53b074[_0x9161('0x41')][_0x9161('0xc7')]);_0x3ee145['where']=qs['filters'](_[_0x9161('0xc8')](_0x53b074[_0x9161('0x41')],_0x88a378[_0x9161('0x50')]));if(_0x53b074['query'][_0x9161('0x2b')]){_0x3ee145[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x3ee145[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x3ee145[_0x9161('0x3d')],function(_0x2e996c){var _0x1bb3d2={};_0x1bb3d2[_0x2e996c]={'$like':'%'+_0x53b074[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x1bb3d2;})});}_0x3ee145=_['merge']({},_0x3ee145,_0x53b074[_0x9161('0x56')]);return _0x34ea55['getWhatsappInteractions'](_0x3ee145);}})[_0x9161('0xf')](function(_0x1a9710){if(_0x1a9710){_0x433968=_0x1a9710['length'];if(!_0x53b074[_0x9161('0x41')][_0x9161('0xcd')]('nolimit')){_0x3ee145[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x53b074[_0x9161('0x41')][_0x9161('0x1d')]);_0x3ee145[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x53b074['query'][_0x9161('0x1b')]);}return _0x34ea55[_0x9161('0xe2')](_0x3ee145);}})['then'](function(_0x21d292){if(_0x21d292){return _0x21d292?{'count':_0x433968,'rows':_0x21d292}:null;}})['then'](respondWithResult(_0x27ac0,null))[_0x9161('0x4a')](handleError(_0x27ac0,null));};exports['login']=function(_0x1ae722,_0xc827da,_0x27aa46){var _0x18f356;var _0x116228;var _0x13985a;var _0x598072=!_[_0x9161('0x67')](_0x1ae722['params']['id'])?_0x1ae722[_0x9161('0x4c')]['id']:!_[_0x9161('0x67')](_0x1ae722['user']['id'])?_0x1ae722['user']['id']:null;return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x598072,'role':{'$or':['admin',_0x9161('0x27'),_0x9161('0x28')]}},'attributes':['id',_0x9161('0x31'),_0x9161('0xe4'),_0x9161('0xe5'),_0x9161('0x25'),_0x9161('0x5c'),_0x9161('0x99')]})[_0x9161('0xf')](function(_0x2f3e5b){if(_0x2f3e5b){if(_0x2f3e5b[_0x9161('0x25')]===_0x9161('0x28')){_0x18f356=_0x2f3e5b;if(_0x1ae722[_0x9161('0x58')][_0x9161('0x9a')]){_0x13985a=util[_0x9161('0xa5')]('LOCAL/%s@from-sip/n',_0x18f356[_0x1ae722[_0x9161('0x58')][_0x9161('0x9a')]]);}else if(_0x1ae722[_0x9161('0x58')][_0x9161('0xe6')]){_0x13985a=util[_0x9161('0xa5')](_0x9161('0xa6'),_0x1ae722[_0x9161('0x58')][_0x9161('0xe6')]);}else{_0x13985a=util[_0x9161('0xa5')](_0x9161('0xa6'),_0x18f356['name']);}socket['to'](util[_0x9161('0xa5')](_0x9161('0xe7'),_0x18f356[_0x9161('0x31')]))[_0x9161('0xae')](_0x9161('0xe8'),{'user':{'id':_0x18f356['id'],'name':_0x18f356[_0x9161('0x31')]},'ip':_0x1ae722['headers'][_0x9161('0xe9')]||_0x1ae722[_0x9161('0xea')][_0x9161('0xeb')]||_0x1ae722['socket']['remoteAddress']||_0x1ae722[_0x9161('0xea')][_0x9161('0xec')][_0x9161('0xeb')]});return db[_0x9161('0xa8')]['destroy']({'where':{'membername':_0x18f356[_0x9161('0x31')]},'individualHooks':!![]});}}else{throw new db[(_0x9161('0x8c'))]['ValidationError'](_0x9161('0xed'));}})[_0x9161('0xf')](function(){if(_0x18f356){return _0x18f356[_0x9161('0xee')]({'raw':!![]});}})[_0x9161('0xf')](function(_0xaf9a4e){if(_0x18f356){var _0x1d06cf=[];if(_0xaf9a4e){_0x116228=_0xaf9a4e;if(_0x116228[_0x9161('0x66')]){for(var _0x39fe70=0x0;_0x39fe70<_0x116228[_0x9161('0x66')];_0x39fe70++){_0x1d06cf[_0x9161('0x3e')]({'membername':_0x18f356['name'],'UserId':_0x18f356['id'],'queue_name':_0x116228[_0x39fe70][_0x9161('0x31')],'VoiceQueueId':_0x116228[_0x39fe70]['id'],'interface':_0x13985a,'paused':_0x18f356[_0x9161('0x99')]||![],'penalty':_0x116228[_0x39fe70][_0x9161('0xef')]||0x0});}return BPromise[_0x9161('0x86')](_0x1d06cf,function(_0x1ec78c){return db[_0x9161('0xa8')][_0x9161('0xa9')](_0x1ec78c);});}}}})[_0x9161('0xf')](function(){if(_0x18f356){return db[_0x9161('0xf0')][_0x9161('0x3f')]({'where':{'membername':_0x18f356[_0x9161('0x31')],'exitAt':null}});}})['then'](function(_0x421446){if(_0x18f356){var _0x3e9136=[];_0x421446['forEach'](function(_0x516436){_0x3e9136[_0x9161('0x3e')](_0x516436[_0x9161('0x22')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x9161('0x49')](_0x3e9136);}})[_0x9161('0xf')](function(){if(_0x18f356){var _0x575e85=[];var _0x50cb42=[];var _0x19ee75=utils[_0x9161('0xf1')]();var _0x5d4b39={'membername':_0x18f356['name'],'interface':_0x13985a,'enterAt':moment()[_0x9161('0xa5')](_0x9161('0xf2')),'role':_0x18f356[_0x9161('0x25')],'internal':_0x18f356[_0x9161('0x5c')]};_0x19ee75['forEach'](function(_0x50728f){_0x575e85[_0x9161('0x3e')](_[_0x9161('0x55')]({'channel':_0x50728f,'type':_0x9161('0xf3'),'data1':_0x1ae722['body']['device'],'data2':_0x13985a},_0x5d4b39));if(_0x18f356['loginInPause']){_0x50cb42['push'](_['merge']({'channel':_0x50728f,'type':_0x9161('0xf4'),'data1':'LOGININPAUSE'},_0x5d4b39));}});return db[_0x9161('0xf0')][_0x9161('0x83')](_0x575e85[_0x9161('0xf5')](_0x50cb42),{'individualHooks':!![]});}})['then'](function(){if(_0x18f356){return _0x18f356[_0x9161('0x22')]({'online':!![],'lastLoginAt':moment()['format'](_0x9161('0xf2')),'voicePause':_0x18f356[_0x9161('0x99')]||![],'mailPause':_0x18f356[_0x9161('0x99')]||![],'chatPause':_0x18f356[_0x9161('0x99')]||![],'faxPause':_0x18f356['loginInPause']||![],'smsPause':_0x18f356[_0x9161('0x99')]||![],'openchannelPause':_0x18f356[_0x9161('0x99')]||![],'whatsappPause':_0x18f356[_0x9161('0x99')]||![],'pauseType':_0x18f356[_0x9161('0x99')]?_0x9161('0xf6'):null,'interface':_0x13985a,'lastPauseAt':moment()[_0x9161('0xa5')](_0x9161('0xf2'))});}})[_0x9161('0xf')](function(_0x2fb4f2){if(_0x1ae722[_0x9161('0xf7')]){return _0x27aa46();}else{return BPromise[_0x9161('0xf8')](_0x2fb4f2)[_0x9161('0xf')](respondWithResult(_0xc827da,null));}})['catch'](handleError(_0xc827da,null));};exports[_0x9161('0xf9')]=function(_0x446882,_0x14bfc1){var _0x318cf0;return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x446882[_0x9161('0x4c')]['id'],'role':'agent'},'attributes':['id',_0x9161('0x31'),_0x9161('0x25')]})['then'](handleEntityNotFound(_0x14bfc1,null))[_0x9161('0xf')](function(_0x11e666){if(_0x11e666){_0x318cf0=_0x11e666;return db['UserVoiceQueueRt'][_0x9161('0x23')]({'where':{'membername':_0x318cf0[_0x9161('0x31')]},'individualHooks':!![]});}})[_0x9161('0xf')](function(){return db[_0x9161('0xf0')][_0x9161('0x3f')]({'where':{'membername':_0x318cf0['name'],'exitAt':null}});})['then'](function(_0x51777a){var _0xe9b86a=[];_0x51777a[_0x9161('0xfa')](function(_0x2c7d63){_0xe9b86a[_0x9161('0x3e')](_0x2c7d63[_0x9161('0x22')]({'exitAt':moment()[_0x9161('0xa5')](_0x9161('0xf2'))}));});return BPromise[_0x9161('0x49')](_0xe9b86a);})[_0x9161('0xf')](function(){return _0x318cf0['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x9161('0xf')](respondWithResult(_0x14bfc1,null))[_0x9161('0x4a')](handleError(_0x14bfc1,null));};exports[_0x9161('0xfb')]=function(_0x56b744,_0x2b1ef3){var _0x34d9eb;return db[_0x9161('0xa8')][_0x9161('0x22')]({'paused':0x1},{'where':{'UserId':_0x56b744['params']['id']},'individualHooks':!![]})[_0x9161('0xf')](function(){return db['User'][_0x9161('0x30')]({'where':{'id':_0x56b744[_0x9161('0x4c')]['id'],'role':_0x9161('0x28')},'attributes':['id',_0x9161('0x31'),_0x9161('0x25'),_0x9161('0x5c'),_0x9161('0x9a')]});})[_0x9161('0xf')](handleEntityNotFound(_0x2b1ef3,null))[_0x9161('0xf')](function(_0x5a2a18){if(_0x5a2a18){_0x34d9eb=_0x5a2a18;return respondWithRpcPromise(_0x9161('0xfc'),_0x9161('0xfb'),{'id':_0x34d9eb['id'],'name':_0x34d9eb[_0x9161('0x31')],'pause':!![]});}})[_0x9161('0xf')](function(){if(_0x34d9eb){return db[_0x9161('0xf0')]['findAll']({'where':{'membername':_0x34d9eb['name'],'type':_0x9161('0xf4'),'exitAt':null}});}})['then'](function(_0x3c7915){if(_0x3c7915[_0x9161('0x66')]){var _0x5eceb1=moment()['format'](_0x9161('0xf2'));for(var _0x4e5d3a=0x0,_0x4c0b41=_0x3c7915[_0x9161('0x66')];_0x4e5d3a<_0x4c0b41;_0x4e5d3a++){_0x3c7915[_0x4e5d3a][_0x9161('0xfd')]({'exitAt':_0x5eceb1});}}})[_0x9161('0xf')](function(){var _0x39fc8b=[];var _0x299bec=utils[_0x9161('0xf1')]();_0x299bec[_0x9161('0xfa')](function(_0x4f9f23){_0x39fc8b[_0x9161('0x3e')]({'channel':_0x4f9f23,'membername':_0x34d9eb['name'],'interface':_['isNil'](_0x34d9eb['interface'])?util[_0x9161('0xa5')](_0x9161('0xa6'),_0x34d9eb[_0x9161('0x31')]):_0x34d9eb['interface'],'type':'PAUSE','enterAt':moment()[_0x9161('0xa5')](_0x9161('0xf2')),'data1':_0x56b744['body'][_0x9161('0x37')]||_0x9161('0xfe'),'role':_0x34d9eb['role'],'internal':_0x34d9eb[_0x9161('0x5c')]});});return db[_0x9161('0xf0')][_0x9161('0x83')](_0x39fc8b,{'individualHooks':!![]});})[_0x9161('0xf')](function(){return _0x34d9eb['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x56b744[_0x9161('0x58')][_0x9161('0x37')]||_0x9161('0xfe'),'lastPauseAt':moment()[_0x9161('0xa5')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0x9161('0xf')](respondWithResult(_0x2b1ef3,null))['catch'](handleError(_0x2b1ef3,null));};exports[_0x9161('0xff')]=function(_0x386840,_0x1e2d32){var _0x24b0be;return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x386840['params']['id']},'attributes':['id',_0x9161('0x31'),_0x9161('0x25'),_0x9161('0xa7'),_0x9161('0x100'),'chatPause',_0x9161('0x101'),'openchannelPause',_0x9161('0x102'),_0x9161('0x103'),'pauseType',_0x9161('0x104')]})[_0x9161('0xf')](handleEntityNotFound(_0x1e2d32,null))[_0x9161('0xf')](function(_0x1182ac){if(_0x1182ac){_0x24b0be=_0x1182ac;if(_0x386840[_0x9161('0x58')][_0x9161('0xaa')]&&!utils[_0x9161('0x9b')](_0x386840[_0x9161('0x58')][_0x9161('0xaa')])){throw new db['Sequelize'][(_0x9161('0x8d'))](_0x9161('0xab'));}switch(_0x386840[_0x9161('0x58')][_0x9161('0xaa')]){case _0x9161('0xa3'):return respondWithRpcPromise('QueuePause',_0x9161('0xff'),{'id':_0x24b0be['id'],'name':_0x24b0be['name'],'pause':![]})['then'](function(){return db['UserVoiceQueueRt'][_0x9161('0x22')]({'paused':0x0},{'where':{'UserId':_0x24b0be['id']},'individualHooks':!![]});})['then'](function(){return db[_0x9161('0xf0')][_0x9161('0x30')]({'where':{'channel':_0x386840['body'][_0x9161('0xaa')],'membername':_0x24b0be[_0x9161('0x31')],'type':_0x9161('0xf4'),'exitAt':null}});})[_0x9161('0xf')](function(_0x39608b){if(_0x39608b){return _0x39608b[_0x9161('0x22')]({'exitAt':moment()[_0x9161('0xa5')](_0x9161('0xf2')),'data2':_0x9161('0x105')},{'individualHooks':!![]});}return null;})[_0x9161('0xf')](function(){return _0x24b0be[_0x9161('0x22')]({'voicePause':![]});});case _0x9161('0x46'):case _0x9161('0xba'):case _0x9161('0x57'):case _0x9161('0x44'):case _0x9161('0x48'):case'openchannel':return db['MemberReport'][_0x9161('0x30')]({'where':{'channel':_0x386840[_0x9161('0x58')][_0x9161('0xaa')],'membername':_0x24b0be[_0x9161('0x31')],'type':_0x9161('0xf4'),'exitAt':null}})[_0x9161('0xf')](function(_0x5ebd64){if(_0x5ebd64){return _0x5ebd64[_0x9161('0x22')]({'exitAt':moment()['format'](_0x9161('0xf2')),'data2':_0x9161('0x105')},{'individualHooks':!![]});}return null;})[_0x9161('0xf')](function(){var _0x480fb3={};_['set'](_0x480fb3,util[_0x9161('0xa5')](_0x9161('0x106'),_0x386840[_0x9161('0x58')][_0x9161('0xaa')],_0x9161('0x107')),![]);return _0x24b0be['update'](_0x480fb3);});default:return respondWithRpcPromise(_0x9161('0xfc'),_0x9161('0xff'),{'id':_0x24b0be['id'],'name':_0x24b0be['name'],'pause':![]})[_0x9161('0xf')](function(){return db[_0x9161('0xa8')][_0x9161('0x22')]({'paused':0x0},{'where':{'UserId':_0x24b0be['id']}});})['then'](function(){return db['MemberReport'][_0x9161('0x3f')]({'where':{'membername':_0x24b0be[_0x9161('0x31')],'type':'PAUSE','exitAt':null}});})[_0x9161('0xf')](function(_0x45f143){var _0x116b12=[];_0x45f143[_0x9161('0xfa')](function(_0x2e9949){_0x116b12[_0x9161('0x3e')](_0x2e9949[_0x9161('0x22')]({'exitAt':moment()[_0x9161('0xa5')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x9161('0x105')}));});return BPromise[_0x9161('0x49')](_0x116b12);})[_0x9161('0xf')](function(){return _0x24b0be['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x9161('0xf')](respondWithResult(_0x1e2d32,null))[_0x9161('0x4a')](handleError(_0x1e2d32,null));};exports[_0x9161('0x108')]=function(_0x276c1f,_0x1930b2){var _0x1f0c97={};var _0x104c12={};var _0x1924ab;var _0x45d8e0;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x276c1f['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x1930b2,null))[_0x9161('0xf')](function(_0x31f399){if(_0x31f399){_0x1924ab=_0x31f399;_0x104c12['model']=_[_0x9161('0x4d')](db['Team'][_0x9161('0x4e')]);_0x104c12[_0x9161('0x41')]=_['keys'](_0x276c1f['query']);_0x104c12[_0x9161('0x50')]=_['intersection'](_0x104c12[_0x9161('0x52')],_0x104c12[_0x9161('0x41')]);_0x1f0c97[_0x9161('0x3d')]=_['intersection'](_0x104c12[_0x9161('0x52')],qs['fields'](_0x276c1f[_0x9161('0x41')][_0x9161('0x53')]));_0x1f0c97[_0x9161('0x3d')]=_0x1f0c97['attributes'][_0x9161('0x66')]?_0x1f0c97[_0x9161('0x3d')]:_0x104c12[_0x9161('0x52')];_0x1f0c97['order']=qs[_0x9161('0xc7')](_0x276c1f[_0x9161('0x41')][_0x9161('0xc7')]);_0x1f0c97[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x276c1f[_0x9161('0x41')],_0x104c12[_0x9161('0x50')]));if(_0x276c1f[_0x9161('0x41')][_0x9161('0x2b')]){_0x1f0c97[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x1f0c97['where'],{'$or':_['map'](_0x1f0c97[_0x9161('0x3d')],function(_0x4886fc){var _0x29e4b5={};_0x29e4b5[_0x4886fc]={'$like':'%'+_0x276c1f[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x29e4b5;})});}_0x1f0c97=_[_0x9161('0x55')]({},_0x1f0c97,_0x276c1f['options']);return _0x1924ab[_0x9161('0x108')](_0x1f0c97);}})[_0x9161('0xf')](function(_0x5c0add){if(_0x5c0add){_0x45d8e0=_0x5c0add[_0x9161('0x66')];if(!_0x276c1f[_0x9161('0x41')]['hasOwnProperty'](_0x9161('0xce'))){_0x1f0c97[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x276c1f[_0x9161('0x41')]['limit']);_0x1f0c97[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x276c1f[_0x9161('0x41')][_0x9161('0x1b')]);}return _0x1924ab[_0x9161('0x108')](_0x1f0c97);}})[_0x9161('0xf')](function(_0x53790c){if(_0x53790c){return _0x53790c?{'count':_0x45d8e0,'rows':_0x53790c}:null;}})[_0x9161('0xf')](respondWithResult(_0x1930b2,null))[_0x9161('0x4a')](handleError(_0x1930b2,null));};exports[_0x9161('0x109')]=function(_0xdd3647,_0x5a1ec4){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0xdd3647[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x5a1ec4,null))[_0x9161('0xf')](function(_0x390175){if(_0x390175){var _0x22c57e=_0x390175[_0x9161('0x24')]({'plain':!![]});return _0x390175[_0x9161('0x109')](_0xdd3647[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0xdd3647[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{})['then'](function(){for(var _0x3e6a74=0x0;_0x3e6a74<_0xdd3647[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x3e6a74++){var _0x1dd1bc=[];db['Team']['findOne']({'where':{'id':_0xdd3647['body'][_0x9161('0x5a')][_0x3e6a74]}})[_0x9161('0xf')](function(_0x46190b){_0x1dd1bc[_0x9161('0x3e')](_0x46190b[_0x9161('0xee')]()[_0x9161('0xf')](function(_0x20f0d5){for(var _0x1f80b3=0x0;_0x1f80b3<_0x20f0d5[_0x9161('0x66')];_0x1f80b3++){_0x20f0d5[_0x1f80b3]['setDataValue'](_0x9161('0xaa'),_0x9161('0x10a'));}return _0x20f0d5;}));_0x1dd1bc['push'](_0x46190b[_0x9161('0x10b')]()[_0x9161('0xf')](function(_0x3ad5b1){for(var _0x5eb6a7=0x0;_0x5eb6a7<_0x3ad5b1[_0x9161('0x66')];_0x5eb6a7++){_0x3ad5b1[_0x5eb6a7][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x10d'));}return _0x3ad5b1;}));_0x1dd1bc['push'](_0x46190b[_0x9161('0x10e')]()[_0x9161('0xf')](function(_0x2fe594){for(var _0x7babc4=0x0;_0x7babc4<_0x2fe594[_0x9161('0x66')];_0x7babc4++){_0x2fe594[_0x7babc4][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x10f'));}return _0x2fe594;}));_0x1dd1bc[_0x9161('0x3e')](_0x46190b[_0x9161('0x110')]()[_0x9161('0xf')](function(_0x50d4fe){for(var _0x58c1f9=0x0;_0x58c1f9<_0x50d4fe[_0x9161('0x66')];_0x58c1f9++){_0x50d4fe[_0x58c1f9][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x111'));}return _0x50d4fe;}));_0x1dd1bc['push'](_0x46190b[_0x9161('0x112')]()[_0x9161('0xf')](function(_0x431204){for(var _0x3da0e0=0x0;_0x3da0e0<_0x431204[_0x9161('0x66')];_0x3da0e0++){_0x431204[_0x3da0e0][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x113'));}return _0x431204;}));_0x1dd1bc[_0x9161('0x3e')](_0x46190b[_0x9161('0x114')]()[_0x9161('0xf')](function(_0x27f351){for(var _0x40161c=0x0;_0x40161c<_0x27f351[_0x9161('0x66')];_0x40161c++){_0x27f351[_0x40161c][_0x9161('0x10c')](_0x9161('0xaa'),'Fax');}return _0x27f351;}));_0x1dd1bc[_0x9161('0x3e')](_0x46190b[_0x9161('0x115')]()[_0x9161('0xf')](function(_0x3abde3){for(var _0x343cfe=0x0;_0x343cfe<_0x3abde3[_0x9161('0x66')];_0x343cfe++){_0x3abde3[_0x343cfe][_0x9161('0x10c')]('channel',_0x9161('0x116'));}return _0x3abde3;}));return BPromise[_0x9161('0x49')](_0x1dd1bc);})[_0x9161('0xf')](function(_0x4e3dcf){var _0x1b206a=_[_0x9161('0x117')](_0x4e3dcf);_0x1dd1bc=[];return db['sequelize']['transaction'](function(_0x497fd3){for(var _0x550b4d=0x0;_0x550b4d<_0x1b206a[_0x9161('0x66')];_0x550b4d++){_0x1dd1bc[_0x9161('0x3e')](_0x1b206a[_0x550b4d][_0x9161('0x118')](_0x22c57e['id']),{'transaction':_0x497fd3});}return BPromise[_0x9161('0x49')](_0x1dd1bc)['then'](function(){if(_0x22c57e['online']){return BPromise[_0x9161('0x86')](_['filter'](_0x1b206a,function(_0x43aa8f){return _0x43aa8f[_0x9161('0x119')]('channel')===_0x9161('0x10a');}),function(_0x5543d7){return db[_0x9161('0xa8')][_0x9161('0xa9')]({'membername':_0x22c57e[_0x9161('0x31')],'UserId':_0x22c57e['id'],'queue_name':_0x5543d7['name'],'VoiceQueueId':_0x5543d7['id'],'interface':_['isNil'](_0x22c57e[_0x9161('0x9a')])?util[_0x9161('0xa5')](_0x9161('0xa6'),_0x22c57e[_0x9161('0x31')]):_0x22c57e[_0x9161('0x9a')],'paused':_0x22c57e[_0x9161('0xa7')]||![],'penalty':_0x22c57e[_0x9161('0x11a')]},{'transaction':_0x497fd3});});}else{return;}})[_0x9161('0xf')](function(){for(var _0x4abe14=0x0;_0x4abe14<_0x1b206a[_0x9161('0x66')];_0x4abe14++){var _0x32c86d=_0x1b206a[_0x4abe14]['getDataValue'](_0x9161('0xaa'));var _0x5cbf69=_0x32c86d+_0x9161('0xa1');socket[_0x9161('0xae')](_0x9161('0x27')+_0x32c86d+_0x9161('0xa2'),{'UserId':_0x22c57e['id'],['queueField']:_0x1b206a[_0x4abe14]['id']});}});});});}});}})[_0x9161('0xf')](respondWithStatusCode(_0x5a1ec4,null))[_0x9161('0x4a')](handleError(_0x5a1ec4,null));};exports['removeTeams']=function(_0x14e3ac,_0x418750){return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x14e3ac['params']['id']}})['then'](handleEntityNotFound(_0x418750,null))[_0x9161('0xf')](function(_0x278c07){if(_0x278c07){var _0x3bdd93=_0x278c07[_0x9161('0x24')]({'plain':!![]});var _0x25ceba=_0x14e3ac[_0x9161('0x41')]['ids'];return _0x278c07[_0x9161('0x11b')](_0x25ceba)['then'](function(){for(var _0x42cd61=0x0;_0x42cd61<_0x25ceba[_0x9161('0x66')];_0x42cd61++){var _0x4589aa=[];db['Team'][_0x9161('0x92')]({'where':{'id':_0x25ceba[_0x42cd61]}})['then'](function(_0xb23e3a){_0x4589aa[_0x9161('0x3e')](_0xb23e3a[_0x9161('0xee')]()[_0x9161('0xf')](function(_0x111601){for(var _0xf9d2d=0x0;_0xf9d2d<_0x111601['length'];_0xf9d2d++){_0x111601[_0xf9d2d][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x10a'));}return _0x111601;}));_0x4589aa[_0x9161('0x3e')](_0xb23e3a[_0x9161('0x10b')]()['then'](function(_0x594268){for(var _0x154c5e=0x0;_0x154c5e<_0x594268[_0x9161('0x66')];_0x154c5e++){_0x594268[_0x154c5e][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x10d'));}return _0x594268;}));_0x4589aa['push'](_0xb23e3a[_0x9161('0x10e')]()[_0x9161('0xf')](function(_0x4a4b04){for(var _0x2a8787=0x0;_0x2a8787<_0x4a4b04['length'];_0x2a8787++){_0x4a4b04[_0x2a8787][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x10f'));}return _0x4a4b04;}));_0x4589aa[_0x9161('0x3e')](_0xb23e3a[_0x9161('0x110')]()[_0x9161('0xf')](function(_0x2283ae){for(var _0x4870e0=0x0;_0x4870e0<_0x2283ae[_0x9161('0x66')];_0x4870e0++){_0x2283ae[_0x4870e0][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x111'));}return _0x2283ae;}));_0x4589aa[_0x9161('0x3e')](_0xb23e3a['getWhatsappQueues']()['then'](function(_0xa2f05e){for(var _0x312443=0x0;_0x312443<_0xa2f05e['length'];_0x312443++){_0xa2f05e[_0x312443][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x113'));}return _0xa2f05e;}));_0x4589aa['push'](_0xb23e3a[_0x9161('0x114')]()[_0x9161('0xf')](function(_0x5c038a){for(var _0x2181a8=0x0;_0x2181a8<_0x5c038a[_0x9161('0x66')];_0x2181a8++){_0x5c038a[_0x2181a8][_0x9161('0x10c')](_0x9161('0xaa'),_0x9161('0x11c'));}return _0x5c038a;}));_0x4589aa[_0x9161('0x3e')](_0xb23e3a[_0x9161('0x115')]()['then'](function(_0xd577c9){for(var _0x3d784f=0x0;_0x3d784f<_0xd577c9['length'];_0x3d784f++){_0xd577c9[_0x3d784f]['setDataValue'](_0x9161('0xaa'),_0x9161('0x116'));}return _0xd577c9;}));return BPromise['all'](_0x4589aa);})[_0x9161('0xf')](function(_0x166c63){var _0x39060f=_['flatten'](_0x166c63);_0x4589aa=[];return db[_0x9161('0x62')][_0x9161('0x11d')](function(_0x23ef16){for(var _0x1cc8b0=0x0;_0x1cc8b0<_0x39060f[_0x9161('0x66')];_0x1cc8b0++){_0x4589aa[_0x9161('0x3e')](_0x39060f[_0x1cc8b0][_0x9161('0x11e')](_0x3bdd93['id']),{'transaction':_0x23ef16});}return BPromise[_0x9161('0x49')](_0x4589aa)[_0x9161('0xf')](function(){if(_0x3bdd93[_0x9161('0x98')]){return BPromise[_0x9161('0x86')](_[_0x9161('0x2b')](_0x39060f,function(_0x5f3669){return _0x5f3669[_0x9161('0x119')](_0x9161('0xaa'))===_0x9161('0x10a');}),function(_0x42a975){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x42a975['id'],'UserId':_0x3bdd93['id']},'transaction':_0x23ef16});});}else{return;}})[_0x9161('0xf')](function(){for(var _0x3659f9=0x0;_0x3659f9<_0x39060f[_0x9161('0x66')];_0x3659f9++){var _0x19c40c=_0x39060f[_0x3659f9][_0x9161('0x119')](_0x9161('0xaa'));var _0xa37aab=_0x19c40c+'QueueId';socket[_0x9161('0xae')](_0x9161('0x27')+_0x19c40c+'Queue:remove',{'UserId':_0x3bdd93['id'],['queueField']:_0x39060f[_0x3659f9]['id']});}});});});}});}})[_0x9161('0xf')](respondWithStatusCode(_0x418750,null))['catch'](handleError(_0x418750,null));};exports[_0x9161('0x11f')]=function(_0x4c35d5,_0x5cf46c){var _0x4da9b9={};var _0x24b94e={};var _0x122ddb;var _0x1963ea;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x4c35d5[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x5cf46c,null))[_0x9161('0xf')](function(_0x21495d){if(_0x21495d){_0x122ddb=_0x21495d;_0x24b94e[_0x9161('0x52')]=_[_0x9161('0x4d')](db['CmList']['rawAttributes']);_0x24b94e['query']=_[_0x9161('0x4d')](_0x4c35d5[_0x9161('0x41')]);_0x24b94e[_0x9161('0x50')]=_[_0x9161('0x51')](_0x24b94e['model'],_0x24b94e[_0x9161('0x41')]);_0x4da9b9[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x24b94e[_0x9161('0x52')],qs[_0x9161('0x53')](_0x4c35d5[_0x9161('0x41')]['fields']));_0x4da9b9[_0x9161('0x3d')]=_0x4da9b9[_0x9161('0x3d')]['length']?_0x4da9b9[_0x9161('0x3d')]:_0x24b94e[_0x9161('0x52')];_0x4da9b9[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x4c35d5[_0x9161('0x41')][_0x9161('0xc7')]);_0x4da9b9[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x4c35d5[_0x9161('0x41')],_0x24b94e[_0x9161('0x50')]));if(_0x4c35d5[_0x9161('0x41')]['filter']){_0x4da9b9[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x4da9b9['where'],{'$or':_['map'](_0x4da9b9[_0x9161('0x3d')],function(_0xeacb30){var _0x165deb={};_0x165deb[_0xeacb30]={'$like':'%'+_0x4c35d5[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x165deb;})});}_0x4da9b9=_['merge']({},_0x4da9b9,_0x4c35d5[_0x9161('0x56')]);return _0x122ddb[_0x9161('0x11f')](_0x4da9b9);}})[_0x9161('0xf')](function(_0xba3344){if(_0xba3344){_0x1963ea=_0xba3344[_0x9161('0x66')];if(!_0x4c35d5[_0x9161('0x41')][_0x9161('0xcd')]('nolimit')){_0x4da9b9[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x4c35d5[_0x9161('0x41')][_0x9161('0x1d')]);_0x4da9b9['offset']=qs[_0x9161('0x1b')](_0x4c35d5[_0x9161('0x41')]['offset']);}return _0x122ddb['getLists'](_0x4da9b9);}})[_0x9161('0xf')](function(_0x187ab6){if(_0x187ab6){return _0x187ab6?{'count':_0x1963ea,'rows':_0x187ab6}:null;}})['then'](respondWithResult(_0x5cf46c,null))[_0x9161('0x4a')](handleError(_0x5cf46c,null));};exports['getAgents']=function(_0x101f2e,_0x39f430){var _0x4dda16={};var _0x361eb4={};var _0x10ab34;var _0x3c86a6;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x101f2e[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x39f430,null))['then'](function(_0x5fe049){if(_0x5fe049){_0x10ab34=_0x5fe049;_0x361eb4['model']=_[_0x9161('0x4d')](db[_0x9161('0x36')][_0x9161('0x4e')]);_0x361eb4['query']=_[_0x9161('0x4d')](_0x101f2e[_0x9161('0x41')]);_0x361eb4[_0x9161('0x50')]=_['intersection'](_0x361eb4['model'],_0x361eb4['query']);_0x4dda16[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x361eb4['model'],qs[_0x9161('0x53')](_0x101f2e[_0x9161('0x41')]['fields']));_0x4dda16['attributes']=_0x4dda16[_0x9161('0x3d')]['length']?_0x4dda16[_0x9161('0x3d')]:_0x361eb4[_0x9161('0x52')];_0x4dda16[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x101f2e[_0x9161('0x41')][_0x9161('0xc7')]);_0x4dda16[_0x9161('0x3b')]=qs[_0x9161('0x50')](_['pick'](_0x101f2e['query'],_0x361eb4['filters']));if(_0x101f2e[_0x9161('0x41')][_0x9161('0x2b')]){_0x4dda16[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x4dda16[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x4dda16[_0x9161('0x3d')],function(_0x1f6fef){var _0x2625f5={};_0x2625f5[_0x1f6fef]={'$like':'%'+_0x101f2e[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x2625f5;})});}_0x4dda16['model']=db[_0x9161('0x36')];_0x4dda16['as']=_0x9161('0x7e');_0x4dda16=_[_0x9161('0x55')]({},_0x4dda16,_0x101f2e[_0x9161('0x56')]);return _0x10ab34[_0x9161('0xee')]({'include':[_0x4dda16]});}})[_0x9161('0xf')](function(_0x3e6d46){if(_0x3e6d46){var _0x1582fc={},_0x133136=[],_0x55f090=0x0;for(var _0x2c966e=0x0;_0x2c966e<_0x3e6d46[_0x9161('0x66')];_0x2c966e+=0x1){for(var _0x1b1152=0x0,_0x2c6d2f;_0x1b1152<_0x3e6d46[_0x2c966e][_0x9161('0x7e')]['length'];_0x1b1152+=0x1){_0x2c6d2f=_0x3e6d46[_0x2c966e][_0x9161('0x7e')][_0x1b1152][_0x9161('0x24')]({'plain':!![]});_0x1582fc[_0x2c6d2f['id']]=_0x2c6d2f;}}_0x1582fc=_[_0x9161('0x120')](_0x1582fc);for(var _0x441840=qs['offset'](_0x101f2e[_0x9161('0x41')][_0x9161('0x1b')]);_0x441840<_0x1582fc[_0x9161('0x66')]&&_0x133136[_0x9161('0x66')]<qs[_0x9161('0x1d')](_0x101f2e[_0x9161('0x41')][_0x9161('0x1d')]);_0x441840+=0x1){if(_0x1582fc[_0x441840]){_0x133136[_0x9161('0x3e')](_0x1582fc[_0x441840]);}}return{'count':_0x1582fc[_0x9161('0x66')],'rows':_0x133136};}})[_0x9161('0xf')](respondWithResult(_0x39f430,null))['catch'](handleError(_0x39f430,null));};exports[_0x9161('0x23')]=function(_0x15c0d9,_0x9735e5){if(_0x15c0d9['user']['id']==_0x15c0d9[_0x9161('0x4c')]['id']){return _0x9735e5[_0x9161('0x1f')](0x1f4)[_0x9161('0x34')]({'message':_0x9161('0x121')});}return db[_0x9161('0x36')]['find']({'where':{'id':_0x15c0d9['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x9735e5,null))[_0x9161('0xf')](removeEntity(_0x9735e5,null))[_0x9161('0x4a')](handleError(_0x9735e5,null));};exports[_0x9161('0x122')]=function(_0x197a74,_0x368dbd){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x197a74['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x368dbd,null))[_0x9161('0xf')](function(_0x12bcad){if(_0x12bcad){return _0x12bcad[_0x9161('0x122')](_0x197a74[_0x9161('0x58')]['ids'],_[_0x9161('0x5b')](_0x197a74[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{})[_0x9161('0x9f')](function(){for(var _0x285115=0x0;_0x285115<_0x197a74[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x285115+=0x1){socket[_0x9161('0xae')]('user_has_chat_interactions:save',{'ChatInteractionId':Number(_0x197a74['body'][_0x9161('0x5a')][_0x285115]),'UserId':Number(_0x197a74[_0x9161('0x4c')]['id'])});}return _0x197a74[_0x9161('0x58')][_0x9161('0x5a')];});}})['then'](respondWithResult(_0x368dbd,null))['catch'](handleError(_0x368dbd,null));};exports['removeChatInteractions']=function(_0x59fdfb,_0x5d6cad){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x59fdfb['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x5d6cad,null))[_0x9161('0xf')](function(_0x20ecf8){if(_0x20ecf8){return _0x20ecf8[_0x9161('0x123')](_0x59fdfb[_0x9161('0x41')][_0x9161('0x5a')])['then'](function(){if(_[_0x9161('0xad')](_0x59fdfb[_0x9161('0x41')][_0x9161('0x5a')])){for(var _0xcab04e=0x0;_0xcab04e<_0x59fdfb[_0x9161('0x41')][_0x9161('0x5a')][_0x9161('0x66')];_0xcab04e+=0x1){socket[_0x9161('0xae')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x59fdfb[_0x9161('0x41')][_0x9161('0x5a')][_0xcab04e]),'UserId':Number(_0x59fdfb[_0x9161('0x4c')]['id'])});}}else{socket[_0x9161('0xae')](_0x9161('0x124'),{'ChatInteractionId':Number(_0x59fdfb[_0x9161('0x41')][_0x9161('0x5a')]),'UserId':Number(_0x59fdfb[_0x9161('0x4c')]['id'])});}});}})[_0x9161('0xf')](respondWithStatusCode(_0x5d6cad,null))['catch'](handleError(_0x5d6cad,null));};exports[_0x9161('0x125')]=function(_0x150ea9,_0x2d8442){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x150ea9['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x2d8442,null))['then'](function(_0x1f9d6a){if(_0x1f9d6a){return _0x1f9d6a[_0x9161('0x125')](_0x150ea9['body'][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x150ea9['body'],[_0x9161('0x5a'),'id'])||{})['spread'](function(){for(var _0x28d6ad=0x0;_0x28d6ad<_0x150ea9['body'][_0x9161('0x5a')]['length'];_0x28d6ad+=0x1){socket[_0x9161('0xae')](_0x9161('0x126'),{'MailInteractionId':Number(_0x150ea9[_0x9161('0x58')][_0x9161('0x5a')][_0x28d6ad]),'UserId':Number(_0x150ea9[_0x9161('0x4c')]['id'])});}return _0x150ea9[_0x9161('0x58')]['ids'];});}})[_0x9161('0xf')](respondWithResult(_0x2d8442,null))[_0x9161('0x4a')](handleError(_0x2d8442,null));};exports[_0x9161('0x127')]=function(_0x4f8157,_0x1f8cd5){return db[_0x9161('0x36')]['find']({'where':{'id':_0x4f8157['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x1f8cd5,null))[_0x9161('0xf')](function(_0x1590e1){if(_0x1590e1){return _0x1590e1[_0x9161('0x127')](_0x4f8157[_0x9161('0x41')][_0x9161('0x5a')])[_0x9161('0xf')](function(){if(_[_0x9161('0xad')](_0x4f8157[_0x9161('0x41')][_0x9161('0x5a')])){for(var _0xb88c21=0x0;_0xb88c21<_0x4f8157[_0x9161('0x41')]['ids'][_0x9161('0x66')];_0xb88c21+=0x1){socket[_0x9161('0xae')](_0x9161('0x128'),{'MailInteractionId':Number(_0x4f8157[_0x9161('0x41')][_0x9161('0x5a')][_0xb88c21]),'UserId':Number(_0x4f8157['params']['id'])});}}else{socket[_0x9161('0xae')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x4f8157[_0x9161('0x41')][_0x9161('0x5a')]),'UserId':Number(_0x4f8157[_0x9161('0x4c')]['id'])});}});}})[_0x9161('0xf')](respondWithStatusCode(_0x1f8cd5,null))['catch'](handleError(_0x1f8cd5,null));};exports['addFaxInteractions']=function(_0x4d06b4,_0x14c00e){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x4d06b4[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x14c00e,null))['then'](function(_0x3bce00){if(_0x3bce00){return _0x3bce00[_0x9161('0x129')](_0x4d06b4[_0x9161('0x58')][_0x9161('0x5a')],_['omit'](_0x4d06b4[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{})['spread'](function(){for(var _0x2ce844=0x0;_0x2ce844<_0x4d06b4[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x2ce844+=0x1){socket[_0x9161('0xae')](_0x9161('0x12a'),{'FaxInteractionId':Number(_0x4d06b4[_0x9161('0x58')]['ids'][_0x2ce844]),'UserId':Number(_0x4d06b4['params']['id'])});}return _0x4d06b4[_0x9161('0x58')][_0x9161('0x5a')];});}})[_0x9161('0xf')](respondWithResult(_0x14c00e,null))[_0x9161('0x4a')](handleError(_0x14c00e,null));};exports[_0x9161('0x12b')]=function(_0xd9f07f,_0x9ffd34){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0xd9f07f['params']['id']}})['then'](handleEntityNotFound(_0x9ffd34,null))[_0x9161('0xf')](function(_0x51fbc1){if(_0x51fbc1){return _0x51fbc1['removeFaxInteractions'](_0xd9f07f['query'][_0x9161('0x5a')])[_0x9161('0xf')](function(){if(_['isArray'](_0xd9f07f[_0x9161('0x41')][_0x9161('0x5a')])){for(var _0x172ddc=0x0;_0x172ddc<_0xd9f07f['query'][_0x9161('0x5a')][_0x9161('0x66')];_0x172ddc+=0x1){socket[_0x9161('0xae')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0xd9f07f[_0x9161('0x41')][_0x9161('0x5a')][_0x172ddc]),'UserId':Number(_0xd9f07f['params']['id'])});}}else{socket[_0x9161('0xae')](_0x9161('0x12c'),{'FaxInteractionId':Number(_0xd9f07f[_0x9161('0x41')][_0x9161('0x5a')]),'UserId':Number(_0xd9f07f[_0x9161('0x4c')]['id'])});}});}})[_0x9161('0xf')](respondWithStatusCode(_0x9ffd34,null))[_0x9161('0x4a')](handleError(_0x9ffd34,null));};exports[_0x9161('0x12d')]=function(_0x11abce,_0x57197d){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x11abce[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x57197d,null))[_0x9161('0xf')](function(_0x1328e9){if(_0x1328e9){return _0x1328e9['addSmsInteractions'](_0x11abce[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x11abce[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{})[_0x9161('0x9f')](function(){for(var _0x2991e8=0x0;_0x2991e8<_0x11abce[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x2991e8+=0x1){socket[_0x9161('0xae')](_0x9161('0x12e'),{'SmsInteractionId':Number(_0x11abce[_0x9161('0x58')][_0x9161('0x5a')][_0x2991e8]),'UserId':Number(_0x11abce[_0x9161('0x4c')]['id'])});}return _0x11abce['body']['ids'];});}})['then'](respondWithResult(_0x57197d,null))[_0x9161('0x4a')](handleError(_0x57197d,null));};exports['removeSmsInteractions']=function(_0x2b29c2,_0x5473be){return db[_0x9161('0x36')]['find']({'where':{'id':_0x2b29c2[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x5473be,null))['then'](function(_0x93ea7c){if(_0x93ea7c){return _0x93ea7c['removeSmsInteractions'](_0x2b29c2['query'][_0x9161('0x5a')])[_0x9161('0xf')](function(){if(_['isArray'](_0x2b29c2['query'][_0x9161('0x5a')])){for(var _0x413701=0x0;_0x413701<_0x2b29c2[_0x9161('0x41')][_0x9161('0x5a')]['length'];_0x413701+=0x1){socket[_0x9161('0xae')](_0x9161('0x12f'),{'SmsInteractionId':Number(_0x2b29c2[_0x9161('0x41')][_0x9161('0x5a')][_0x413701]),'UserId':Number(_0x2b29c2['params']['id'])});}}else{socket['emit'](_0x9161('0x12f'),{'SmsInteractionId':Number(_0x2b29c2[_0x9161('0x41')][_0x9161('0x5a')]),'UserId':Number(_0x2b29c2[_0x9161('0x4c')]['id'])});}});}})['then'](respondWithStatusCode(_0x5473be,null))['catch'](handleError(_0x5473be,null));};exports['addOpenchannelInteractions']=function(_0x31588c,_0x43a60f){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x31588c[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x43a60f,null))[_0x9161('0xf')](function(_0x5b9ecb){if(_0x5b9ecb){return _0x5b9ecb[_0x9161('0x130')](_0x31588c[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x31588c[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{})[_0x9161('0x9f')](function(){for(var _0x52799e=0x0;_0x52799e<_0x31588c[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x52799e+=0x1){socket[_0x9161('0xae')](_0x9161('0x131'),{'OpenchannelInteractionId':Number(_0x31588c[_0x9161('0x58')][_0x9161('0x5a')][_0x52799e]),'UserId':Number(_0x31588c[_0x9161('0x4c')]['id'])});}return _0x31588c['body'][_0x9161('0x5a')];});}})[_0x9161('0xf')](respondWithResult(_0x43a60f,null))[_0x9161('0x4a')](handleError(_0x43a60f,null));};exports[_0x9161('0x132')]=function(_0x1c7c57,_0xdaec53){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x1c7c57[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0xdaec53,null))['then'](function(_0x576510){if(_0x576510){return _0x576510['removeOpenchannelInteractions'](_0x1c7c57[_0x9161('0x41')][_0x9161('0x5a')])[_0x9161('0xf')](function(){if(_[_0x9161('0xad')](_0x1c7c57[_0x9161('0x41')][_0x9161('0x5a')])){for(var _0x1461a7=0x0;_0x1461a7<_0x1c7c57[_0x9161('0x41')][_0x9161('0x5a')][_0x9161('0x66')];_0x1461a7+=0x1){socket['emit'](_0x9161('0x133'),{'OpenchannelInteractionId':Number(_0x1c7c57[_0x9161('0x41')][_0x9161('0x5a')][_0x1461a7]),'UserId':Number(_0x1c7c57[_0x9161('0x4c')]['id'])});}}else{socket[_0x9161('0xae')](_0x9161('0x133'),{'OpenchannelInteractionId':Number(_0x1c7c57[_0x9161('0x41')][_0x9161('0x5a')]),'UserId':Number(_0x1c7c57[_0x9161('0x4c')]['id'])});}});}})[_0x9161('0xf')](respondWithStatusCode(_0xdaec53,null))[_0x9161('0x4a')](handleError(_0xdaec53,null));};exports[_0x9161('0x134')]=function(_0x21feb8,_0x497c4d){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x21feb8[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x497c4d,null))[_0x9161('0xf')](function(_0x106b73){if(_0x106b73){return _0x106b73[_0x9161('0x134')](_0x21feb8[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x21feb8[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{})['spread'](function(){for(var _0x16a496=0x0;_0x16a496<_0x21feb8[_0x9161('0x58')][_0x9161('0x5a')][_0x9161('0x66')];_0x16a496+=0x1){socket[_0x9161('0xae')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x21feb8['body'][_0x9161('0x5a')][_0x16a496]),'UserId':Number(_0x21feb8[_0x9161('0x4c')]['id'])});}return _0x21feb8['body'][_0x9161('0x5a')];});}})['then'](respondWithResult(_0x497c4d,null))['catch'](handleError(_0x497c4d,null));};exports[_0x9161('0x135')]=function(_0x71ef24,_0x59a1a7){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x71ef24['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x59a1a7,null))[_0x9161('0xf')](function(_0x10aba9){if(_0x10aba9){return _0x10aba9[_0x9161('0x135')](_0x71ef24[_0x9161('0x41')][_0x9161('0x5a')]);}})[_0x9161('0xf')](respondWithStatusCode(_0x59a1a7,null))[_0x9161('0x4a')](handleError(_0x59a1a7,null));};exports[_0x9161('0x136')]=function(_0x3b68e1,_0x23215f){var _0x58f7c9={};var _0x4e7b5d={};var _0x12f016;var _0x25b55f;return db['User'][_0x9161('0x92')]({'where':{'id':_0x3b68e1['params']['id']}})['then'](handleEntityNotFound(_0x23215f,null))[_0x9161('0xf')](function(_0x58cec6){if(_0x58cec6){_0x12f016=_0x58cec6;_0x4e7b5d[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0x137')][_0x9161('0x4e')]);_0x4e7b5d[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x3b68e1[_0x9161('0x41')]);_0x4e7b5d['filters']=_[_0x9161('0x51')](_0x4e7b5d[_0x9161('0x52')],_0x4e7b5d[_0x9161('0x41')]);_0x58f7c9[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x4e7b5d[_0x9161('0x52')],qs[_0x9161('0x53')](_0x3b68e1[_0x9161('0x41')][_0x9161('0x53')]));_0x58f7c9['attributes']=_0x58f7c9[_0x9161('0x3d')][_0x9161('0x66')]?_0x58f7c9[_0x9161('0x3d')]:_0x4e7b5d[_0x9161('0x52')];_0x58f7c9[_0x9161('0xc6')]=qs['sort'](_0x3b68e1[_0x9161('0x41')][_0x9161('0xc7')]);_0x58f7c9[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x3b68e1['query'],_0x4e7b5d['filters']));if(_0x3b68e1[_0x9161('0x41')][_0x9161('0x2b')]){_0x58f7c9[_0x9161('0x3b')]=_['merge'](_0x58f7c9[_0x9161('0x3b')],{'$or':_['map'](_0x58f7c9[_0x9161('0x3d')],function(_0x462351){var _0x390167={};_0x390167[_0x462351]={'$like':'%'+_0x3b68e1[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x390167;})});}_0x58f7c9=_[_0x9161('0x55')]({},_0x58f7c9,_0x3b68e1[_0x9161('0x56')]);return _0x12f016[_0x9161('0x136')](_0x58f7c9);}})[_0x9161('0xf')](function(_0x140fde){if(_0x140fde){_0x25b55f=_0x140fde['length'];if(!_0x3b68e1['query'][_0x9161('0xcd')](_0x9161('0xce'))){_0x58f7c9[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x3b68e1[_0x9161('0x41')][_0x9161('0x1d')]);_0x58f7c9[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x3b68e1[_0x9161('0x41')][_0x9161('0x1b')]);}return _0x12f016[_0x9161('0x136')](_0x58f7c9);}})['then'](function(_0x113779){if(_0x113779){return _0x113779?{'count':_0x25b55f,'rows':_0x113779}:null;}})[_0x9161('0xf')](respondWithResult(_0x23215f,null))[_0x9161('0x4a')](handleError(_0x23215f,null));};exports[_0x9161('0x138')]=function(_0x3ecb81,_0x460de3){var _0x5546f8={};var _0x4e318f={};var _0x2a06de;var _0x906f6a;return db[_0x9161('0x36')]['findOne']({'where':{'id':_0x3ecb81[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x460de3,null))[_0x9161('0xf')](function(_0x35cda9){if(_0x35cda9){_0x2a06de=_0x35cda9;_0x4e318f['model']=_['keys'](db[_0x9161('0x139')][_0x9161('0x4e')]);_0x4e318f[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x3ecb81[_0x9161('0x41')]);_0x4e318f[_0x9161('0x50')]=_[_0x9161('0x51')](_0x4e318f[_0x9161('0x52')],_0x4e318f[_0x9161('0x41')]);_0x5546f8[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x4e318f['model'],qs[_0x9161('0x53')](_0x3ecb81['query'][_0x9161('0x53')]));_0x5546f8[_0x9161('0x3d')]=_0x5546f8[_0x9161('0x3d')][_0x9161('0x66')]?_0x5546f8[_0x9161('0x3d')]:_0x4e318f[_0x9161('0x52')];_0x5546f8[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x3ecb81[_0x9161('0x41')]['sort']);_0x5546f8[_0x9161('0x3b')]=qs['filters'](_['pick'](_0x3ecb81[_0x9161('0x41')],_0x4e318f['filters']));if(_0x3ecb81[_0x9161('0x41')][_0x9161('0x2b')]){_0x5546f8[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x5546f8[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x5546f8[_0x9161('0x3d')],function(_0x51f1c4){var _0x5ef389={};_0x5ef389[_0x51f1c4]={'$like':'%'+_0x3ecb81[_0x9161('0x41')]['filter']+'%'};return _0x5ef389;})});}_0x5546f8=_[_0x9161('0x55')]({},_0x5546f8,_0x3ecb81[_0x9161('0x56')]);return _0x2a06de[_0x9161('0x138')](_0x5546f8);}})['then'](function(_0x13c742){if(_0x13c742){_0x906f6a=_0x13c742[_0x9161('0x66')];if(!_0x3ecb81[_0x9161('0x41')]['hasOwnProperty']('nolimit')){_0x5546f8[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x3ecb81[_0x9161('0x41')][_0x9161('0x1d')]);_0x5546f8[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x3ecb81[_0x9161('0x41')][_0x9161('0x1b')]);}return _0x2a06de[_0x9161('0x138')](_0x5546f8);}})[_0x9161('0xf')](function(_0x5bb046){if(_0x5bb046){return _0x5bb046?{'count':_0x906f6a,'rows':_0x5bb046}:null;}})['then'](respondWithResult(_0x460de3,null))[_0x9161('0x4a')](handleError(_0x460de3,null));};exports[_0x9161('0x13a')]=function(_0x2c0c5f,_0x442fce){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x2c0c5f[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x442fce,null))['then'](function(_0x246867){if(_0x246867){return _0x246867['addFaxAccounts'](_0x2c0c5f[_0x9161('0x58')][_0x9161('0x5a')],_['omit'](_0x2c0c5f['body'],[_0x9161('0x5a'),'id'])||{});}})['then'](respondWithResult(_0x442fce,null))['catch'](handleError(_0x442fce,null));};exports['removeFaxAccounts']=function(_0x40165d,_0x1151ac){return db['User'][_0x9161('0x30')]({'where':{'id':_0x40165d[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1151ac,null))[_0x9161('0xf')](function(_0x628c4c){if(_0x628c4c){return _0x628c4c[_0x9161('0x13b')](_0x40165d['query']['ids']);}})[_0x9161('0xf')](respondWithStatusCode(_0x1151ac,null))[_0x9161('0x4a')](handleError(_0x1151ac,null));};exports[_0x9161('0x13c')]=function(_0x351074,_0x247c5c){var _0x3748ee={};var _0x3c570f={};var _0x5f4e98;var _0x198e11;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x351074[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x247c5c,null))[_0x9161('0xf')](function(_0x1488ad){if(_0x1488ad){_0x5f4e98=_0x1488ad;_0x3c570f['model']=_['keys'](db['MailAccount'][_0x9161('0x4e')]);_0x3c570f[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x351074['query']);_0x3c570f['filters']=_[_0x9161('0x51')](_0x3c570f[_0x9161('0x52')],_0x3c570f[_0x9161('0x41')]);_0x3748ee['attributes']=_[_0x9161('0x51')](_0x3c570f[_0x9161('0x52')],qs[_0x9161('0x53')](_0x351074[_0x9161('0x41')][_0x9161('0x53')]));_0x3748ee[_0x9161('0x3d')]=_0x3748ee[_0x9161('0x3d')][_0x9161('0x66')]?_0x3748ee[_0x9161('0x3d')]:_0x3c570f[_0x9161('0x52')];_0x3748ee[_0x9161('0xc6')]=qs['sort'](_0x351074[_0x9161('0x41')][_0x9161('0xc7')]);_0x3748ee['where']=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x351074[_0x9161('0x41')],_0x3c570f[_0x9161('0x50')]));if(_0x351074['query']['filter']){_0x3748ee['where']=_[_0x9161('0x55')](_0x3748ee[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x3748ee[_0x9161('0x3d')],function(_0x556cec){var _0x20b2f2={};_0x20b2f2[_0x556cec]={'$like':'%'+_0x351074[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x20b2f2;})});}_0x3748ee=_[_0x9161('0x55')]({},_0x3748ee,_0x351074[_0x9161('0x56')]);return _0x5f4e98[_0x9161('0x13c')](_0x3748ee);}})[_0x9161('0xf')](function(_0x3bc097){if(_0x3bc097){_0x198e11=_0x3bc097[_0x9161('0x66')];if(!_0x351074[_0x9161('0x41')]['hasOwnProperty'](_0x9161('0xce'))){_0x3748ee[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x351074[_0x9161('0x41')][_0x9161('0x1d')]);_0x3748ee[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x351074[_0x9161('0x41')]['offset']);}return _0x5f4e98['getMailAccounts'](_0x3748ee);}})['then'](function(_0x16b06d){if(_0x16b06d){return _0x16b06d?{'count':_0x198e11,'rows':_0x16b06d}:null;}})[_0x9161('0xf')](respondWithResult(_0x247c5c,null))[_0x9161('0x4a')](handleError(_0x247c5c,null));};exports[_0x9161('0x13d')]=function(_0x280152,_0x31b52a){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x280152[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x31b52a,null))['then'](function(_0x246e65){if(_0x246e65){return _0x246e65[_0x9161('0x13d')](_0x280152[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x280152[_0x9161('0x58')],['ids','id'])||{});}})[_0x9161('0xf')](respondWithResult(_0x31b52a,null))[_0x9161('0x4a')](handleError(_0x31b52a,null));};exports['removeMailAccounts']=function(_0x142cc3,_0x1c4984){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x142cc3[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1c4984,null))[_0x9161('0xf')](function(_0x5c41bf){if(_0x5c41bf){return _0x5c41bf[_0x9161('0x13e')](_0x142cc3[_0x9161('0x41')]['ids']);}})[_0x9161('0xf')](respondWithStatusCode(_0x1c4984,null))['catch'](handleError(_0x1c4984,null));};exports[_0x9161('0x13f')]=function(_0x3ccb25,_0xf54736){var _0x448bc7={};var _0x3ded5b={};var _0x254cdf;var _0x3d2431;return db['User'][_0x9161('0x92')]({'where':{'id':_0x3ccb25[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0xf54736,null))['then'](function(_0x56e378){if(_0x56e378){_0x254cdf=_0x56e378;_0x3ded5b[_0x9161('0x52')]=_[_0x9161('0x4d')](db['OpenchannelAccount'][_0x9161('0x4e')]);_0x3ded5b['query']=_[_0x9161('0x4d')](_0x3ccb25[_0x9161('0x41')]);_0x3ded5b['filters']=_[_0x9161('0x51')](_0x3ded5b['model'],_0x3ded5b[_0x9161('0x41')]);_0x448bc7['attributes']=_[_0x9161('0x51')](_0x3ded5b[_0x9161('0x52')],qs['fields'](_0x3ccb25[_0x9161('0x41')][_0x9161('0x53')]));_0x448bc7[_0x9161('0x3d')]=_0x448bc7[_0x9161('0x3d')][_0x9161('0x66')]?_0x448bc7[_0x9161('0x3d')]:_0x3ded5b[_0x9161('0x52')];_0x448bc7[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x3ccb25['query'][_0x9161('0xc7')]);_0x448bc7[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x3ccb25[_0x9161('0x41')],_0x3ded5b['filters']));if(_0x3ccb25[_0x9161('0x41')][_0x9161('0x2b')]){_0x448bc7[_0x9161('0x3b')]=_['merge'](_0x448bc7[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x448bc7[_0x9161('0x3d')],function(_0x5d9b73){var _0x5cea1b={};_0x5cea1b[_0x5d9b73]={'$like':'%'+_0x3ccb25[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x5cea1b;})});}_0x448bc7=_[_0x9161('0x55')]({},_0x448bc7,_0x3ccb25[_0x9161('0x56')]);return _0x254cdf[_0x9161('0x13f')](_0x448bc7);}})[_0x9161('0xf')](function(_0x2507c8){if(_0x2507c8){_0x3d2431=_0x2507c8['length'];if(!_0x3ccb25[_0x9161('0x41')][_0x9161('0xcd')](_0x9161('0xce'))){_0x448bc7[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x3ccb25[_0x9161('0x41')]['limit']);_0x448bc7['offset']=qs[_0x9161('0x1b')](_0x3ccb25[_0x9161('0x41')][_0x9161('0x1b')]);}return _0x254cdf['getOpenchannelAccounts'](_0x448bc7);}})[_0x9161('0xf')](function(_0x3ca6fd){if(_0x3ca6fd){return _0x3ca6fd?{'count':_0x3d2431,'rows':_0x3ca6fd}:null;}})['then'](respondWithResult(_0xf54736,null))[_0x9161('0x4a')](handleError(_0xf54736,null));};exports['addOpenchannelAccounts']=function(_0x2521b0,_0x3e24e0){return db['User']['find']({'where':{'id':_0x2521b0[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x3e24e0,null))[_0x9161('0xf')](function(_0x507bbc){if(_0x507bbc){return _0x507bbc[_0x9161('0x140')](_0x2521b0[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x2521b0[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{});}})[_0x9161('0xf')](respondWithResult(_0x3e24e0,null))[_0x9161('0x4a')](handleError(_0x3e24e0,null));};exports[_0x9161('0x141')]=function(_0x395376,_0x1618a0){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x395376[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1618a0,null))[_0x9161('0xf')](function(_0x2f660){if(_0x2f660){return _0x2f660[_0x9161('0x141')](_0x395376[_0x9161('0x41')][_0x9161('0x5a')]);}})[_0x9161('0xf')](respondWithStatusCode(_0x1618a0,null))[_0x9161('0x4a')](handleError(_0x1618a0,null));};exports[_0x9161('0x142')]=function(_0x515776,_0x2802cd){var _0x65ab8={};var _0x633ebd={};var _0x4fd2fd;var _0x173d06;return db[_0x9161('0x36')]['findOne']({'where':{'id':_0x515776[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2802cd,null))['then'](function(_0x2d148a){if(_0x2d148a){_0x4fd2fd=_0x2d148a;_0x633ebd['model']=_['keys'](db['SmsAccount'][_0x9161('0x4e')]);_0x633ebd['query']=_['keys'](_0x515776[_0x9161('0x41')]);_0x633ebd[_0x9161('0x50')]=_['intersection'](_0x633ebd[_0x9161('0x52')],_0x633ebd[_0x9161('0x41')]);_0x65ab8[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x633ebd[_0x9161('0x52')],qs[_0x9161('0x53')](_0x515776[_0x9161('0x41')][_0x9161('0x53')]));_0x65ab8[_0x9161('0x3d')]=_0x65ab8[_0x9161('0x3d')][_0x9161('0x66')]?_0x65ab8[_0x9161('0x3d')]:_0x633ebd[_0x9161('0x52')];_0x65ab8[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x515776['query'][_0x9161('0xc7')]);_0x65ab8[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x515776[_0x9161('0x41')],_0x633ebd['filters']));if(_0x515776[_0x9161('0x41')][_0x9161('0x2b')]){_0x65ab8[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x65ab8[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x65ab8[_0x9161('0x3d')],function(_0x27b334){var _0x5d5359={};_0x5d5359[_0x27b334]={'$like':'%'+_0x515776[_0x9161('0x41')]['filter']+'%'};return _0x5d5359;})});}_0x65ab8=_[_0x9161('0x55')]({},_0x65ab8,_0x515776['options']);return _0x4fd2fd[_0x9161('0x142')](_0x65ab8);}})[_0x9161('0xf')](function(_0x4d620d){if(_0x4d620d){_0x173d06=_0x4d620d[_0x9161('0x66')];if(!_0x515776['query']['hasOwnProperty'](_0x9161('0xce'))){_0x65ab8[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x515776[_0x9161('0x41')]['limit']);_0x65ab8[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x515776['query'][_0x9161('0x1b')]);}return _0x4fd2fd[_0x9161('0x142')](_0x65ab8);}})[_0x9161('0xf')](function(_0x3c229b){if(_0x3c229b){return _0x3c229b?{'count':_0x173d06,'rows':_0x3c229b}:null;}})[_0x9161('0xf')](respondWithResult(_0x2802cd,null))['catch'](handleError(_0x2802cd,null));};exports['addSmsAccounts']=function(_0x1cec56,_0xa6930f){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x1cec56[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0xa6930f,null))[_0x9161('0xf')](function(_0x25cc3d){if(_0x25cc3d){return _0x25cc3d['addSmsAccounts'](_0x1cec56[_0x9161('0x58')]['ids'],_[_0x9161('0x5b')](_0x1cec56[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{});}})[_0x9161('0xf')](respondWithResult(_0xa6930f,null))[_0x9161('0x4a')](handleError(_0xa6930f,null));};exports[_0x9161('0x143')]=function(_0x26bdea,_0xef80ee){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x26bdea['params']['id']}})['then'](handleEntityNotFound(_0xef80ee,null))[_0x9161('0xf')](function(_0x193887){if(_0x193887){return _0x193887[_0x9161('0x143')](_0x26bdea['query'][_0x9161('0x5a')]);}})[_0x9161('0xf')](respondWithStatusCode(_0xef80ee,null))[_0x9161('0x4a')](handleError(_0xef80ee,null));};exports[_0x9161('0x144')]=function(_0x5b48da,_0xfcd6de){var _0x2c53e8={};var _0x256716={};var _0x230827;var _0x7470ee;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x5b48da[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0xfcd6de,null))[_0x9161('0xf')](function(_0x4553eb){if(_0x4553eb){_0x230827=_0x4553eb;_0x256716[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0x145')][_0x9161('0x4e')]);_0x256716[_0x9161('0x41')]=_['keys'](_0x5b48da[_0x9161('0x41')]);_0x256716['filters']=_['intersection'](_0x256716['model'],_0x256716['query']);_0x2c53e8['attributes']=_[_0x9161('0x51')](_0x256716[_0x9161('0x52')],qs[_0x9161('0x53')](_0x5b48da['query'][_0x9161('0x53')]));_0x2c53e8[_0x9161('0x3d')]=_0x2c53e8[_0x9161('0x3d')][_0x9161('0x66')]?_0x2c53e8[_0x9161('0x3d')]:_0x256716[_0x9161('0x52')];_0x2c53e8['order']=qs[_0x9161('0xc7')](_0x5b48da[_0x9161('0x41')][_0x9161('0xc7')]);_0x2c53e8[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x5b48da['query'],_0x256716['filters']));if(_0x5b48da[_0x9161('0x41')][_0x9161('0x2b')]){_0x2c53e8[_0x9161('0x3b')]=_[_0x9161('0x55')](_0x2c53e8['where'],{'$or':_['map'](_0x2c53e8[_0x9161('0x3d')],function(_0x1b1cc2){var _0x58b1ff={};_0x58b1ff[_0x1b1cc2]={'$like':'%'+_0x5b48da[_0x9161('0x41')]['filter']+'%'};return _0x58b1ff;})});}_0x2c53e8=_[_0x9161('0x55')]({},_0x2c53e8,_0x5b48da['options']);return _0x230827[_0x9161('0x144')](_0x2c53e8);}})[_0x9161('0xf')](function(_0x4671df){if(_0x4671df){_0x7470ee=_0x4671df[_0x9161('0x66')];if(!_0x5b48da[_0x9161('0x41')][_0x9161('0xcd')]('nolimit')){_0x2c53e8['limit']=qs[_0x9161('0x1d')](_0x5b48da['query'][_0x9161('0x1d')]);_0x2c53e8['offset']=qs[_0x9161('0x1b')](_0x5b48da['query'][_0x9161('0x1b')]);}return _0x230827['getChatWebsites'](_0x2c53e8);}})[_0x9161('0xf')](function(_0x366c45){if(_0x366c45){return _0x366c45?{'count':_0x7470ee,'rows':_0x366c45}:null;}})['then'](respondWithResult(_0xfcd6de,null))[_0x9161('0x4a')](handleError(_0xfcd6de,null));};exports[_0x9161('0x146')]=function(_0x126b9d,_0x4ffedc){return db['User'][_0x9161('0x30')]({'where':{'id':_0x126b9d[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x4ffedc,null))['then'](function(_0x31b461){if(_0x31b461){return _0x31b461[_0x9161('0x146')](_0x126b9d[_0x9161('0x58')][_0x9161('0x5a')],_[_0x9161('0x5b')](_0x126b9d['body'],[_0x9161('0x5a'),'id'])||{});}})[_0x9161('0xf')](respondWithResult(_0x4ffedc,null))[_0x9161('0x4a')](handleError(_0x4ffedc,null));};exports[_0x9161('0x147')]=function(_0x1e3370,_0x116867){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x1e3370['params']['id']}})['then'](handleEntityNotFound(_0x116867,null))['then'](function(_0x482f87){if(_0x482f87){return _0x482f87[_0x9161('0x147')](_0x1e3370[_0x9161('0x41')][_0x9161('0x5a')]);}})[_0x9161('0xf')](respondWithStatusCode(_0x116867,null))[_0x9161('0x4a')](handleError(_0x116867,null));};exports[_0x9161('0x148')]=function(_0x1ab896,_0x32d6c6){var _0x701dcb={};var _0x59ff36={};var _0x3f43dd;var _0x54b1c6;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x1ab896[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x32d6c6,null))['then'](function(_0x12e03e){if(_0x12e03e){_0x3f43dd=_0x12e03e;_0x59ff36[_0x9161('0x52')]=_[_0x9161('0x4d')](db[_0x9161('0x149')][_0x9161('0x4e')]);_0x59ff36[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x1ab896[_0x9161('0x41')]);_0x59ff36[_0x9161('0x50')]=_[_0x9161('0x51')](_0x59ff36['model'],_0x59ff36[_0x9161('0x41')]);_0x701dcb['attributes']=_[_0x9161('0x51')](_0x59ff36['model'],qs[_0x9161('0x53')](_0x1ab896[_0x9161('0x41')][_0x9161('0x53')]));_0x701dcb[_0x9161('0x3d')]=_0x701dcb[_0x9161('0x3d')][_0x9161('0x66')]?_0x701dcb[_0x9161('0x3d')]:_0x59ff36[_0x9161('0x52')];_0x701dcb[_0x9161('0xc6')]=qs['sort'](_0x1ab896['query'][_0x9161('0xc7')]);_0x701dcb[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x1ab896[_0x9161('0x41')],_0x59ff36[_0x9161('0x50')]));if(_0x1ab896[_0x9161('0x41')][_0x9161('0x2b')]){_0x701dcb[_0x9161('0x3b')]=_['merge'](_0x701dcb[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0x701dcb[_0x9161('0x3d')],function(_0x5af415){var _0x526d0e={};_0x526d0e[_0x5af415]={'$like':'%'+_0x1ab896[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x526d0e;})});}_0x701dcb=_[_0x9161('0x55')]({},_0x701dcb,_0x1ab896[_0x9161('0x56')]);return _0x3f43dd['getWhatsappAccounts'](_0x701dcb);}})[_0x9161('0xf')](function(_0x1502f1){if(_0x1502f1){_0x54b1c6=_0x1502f1['length'];if(!_0x1ab896[_0x9161('0x41')][_0x9161('0xcd')]('nolimit')){_0x701dcb['limit']=qs[_0x9161('0x1d')](_0x1ab896[_0x9161('0x41')][_0x9161('0x1d')]);_0x701dcb[_0x9161('0x1b')]=qs['offset'](_0x1ab896[_0x9161('0x41')][_0x9161('0x1b')]);}return _0x3f43dd[_0x9161('0x148')](_0x701dcb);}})['then'](function(_0x527fdc){if(_0x527fdc){return _0x527fdc?{'count':_0x54b1c6,'rows':_0x527fdc}:null;}})[_0x9161('0xf')](respondWithResult(_0x32d6c6,null))[_0x9161('0x4a')](handleError(_0x32d6c6,null));};exports[_0x9161('0x14a')]=function(_0x2d4647,_0x67793d){return db[_0x9161('0x36')]['find']({'where':{'id':_0x2d4647[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x67793d,null))['then'](function(_0x4be8b7){if(_0x4be8b7){return _0x4be8b7['addWhatsappAccounts'](_0x2d4647[_0x9161('0x58')][_0x9161('0x5a')],_['omit'](_0x2d4647[_0x9161('0x58')],[_0x9161('0x5a'),'id'])||{});}})[_0x9161('0xf')](respondWithResult(_0x67793d,null))[_0x9161('0x4a')](handleError(_0x67793d,null));};exports[_0x9161('0x14b')]=function(_0x2f5617,_0xe1246c){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x2f5617['params']['id']}})[_0x9161('0xf')](handleEntityNotFound(_0xe1246c,null))[_0x9161('0xf')](function(_0x31c2b4){if(_0x31c2b4){return _0x31c2b4[_0x9161('0x14b')](_0x2f5617['query']['ids']);}})[_0x9161('0xf')](respondWithStatusCode(_0xe1246c,null))[_0x9161('0x4a')](handleError(_0xe1246c,null));};exports[_0x9161('0x14c')]=function(_0x1adebc,_0x22055b){var _0xe73def={};var _0x128e25={};var _0x3af3c0;var _0x45ad16;return db[_0x9161('0x36')][_0x9161('0x92')]({'where':{'id':_0x1adebc[_0x9161('0x4c')]['id']}})['then'](handleEntityNotFound(_0x22055b,null))[_0x9161('0xf')](function(_0xb265fa){if(_0xb265fa){_0x3af3c0=_0xb265fa;_0x128e25[_0x9161('0x52')]=_[_0x9161('0x4d')](db['SquareProject'][_0x9161('0x4e')]);_0x128e25['query']=_[_0x9161('0x4d')](_0x1adebc[_0x9161('0x41')]);_0x128e25[_0x9161('0x50')]=_[_0x9161('0x51')](_0x128e25[_0x9161('0x52')],_0x128e25[_0x9161('0x41')]);_0xe73def[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x128e25[_0x9161('0x52')],qs['fields'](_0x1adebc[_0x9161('0x41')][_0x9161('0x53')]));_0xe73def[_0x9161('0x3d')]=_0xe73def[_0x9161('0x3d')][_0x9161('0x66')]?_0xe73def[_0x9161('0x3d')]:_0x128e25[_0x9161('0x52')];_0xe73def[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x1adebc['query'][_0x9161('0xc7')]);_0xe73def[_0x9161('0x3b')]=qs[_0x9161('0x50')](_[_0x9161('0xc8')](_0x1adebc[_0x9161('0x41')],_0x128e25[_0x9161('0x50')]));if(_0x1adebc[_0x9161('0x41')]['filter']){_0xe73def['where']=_[_0x9161('0x55')](_0xe73def[_0x9161('0x3b')],{'$or':_[_0x9161('0x2d')](_0xe73def['attributes'],function(_0x3f4bbf){var _0x2d744a={};_0x2d744a[_0x3f4bbf]={'$like':'%'+_0x1adebc['query'][_0x9161('0x2b')]+'%'};return _0x2d744a;})});}_0xe73def=_[_0x9161('0x55')]({},_0xe73def,_0x1adebc[_0x9161('0x56')]);return _0x3af3c0[_0x9161('0x14c')](_0xe73def);}})[_0x9161('0xf')](function(_0x4aeb88){if(_0x4aeb88){_0x45ad16=_0x4aeb88[_0x9161('0x66')];if(!_0x1adebc['query'][_0x9161('0xcd')](_0x9161('0xce'))){_0xe73def[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x1adebc['query']['limit']);_0xe73def[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x1adebc['query'][_0x9161('0x1b')]);}return _0x3af3c0[_0x9161('0x14c')](_0xe73def);}})[_0x9161('0xf')](function(_0x34d82f){if(_0x34d82f){return _0x34d82f?{'count':_0x45ad16,'rows':_0x34d82f}:null;}})['then'](respondWithResult(_0x22055b,null))[_0x9161('0x4a')](handleError(_0x22055b,null));};exports[_0x9161('0x14d')]=function(_0x522edb,_0x277aff){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x522edb[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x277aff,null))[_0x9161('0xf')](function(_0x480f12){if(_0x480f12){return _0x480f12[_0x9161('0x14d')](_0x522edb[_0x9161('0x58')]['ids'],_['omit'](_0x522edb['body'],[_0x9161('0x5a'),'id'])||{});}})[_0x9161('0xf')](respondWithResult(_0x277aff,null))[_0x9161('0x4a')](handleError(_0x277aff,null));};exports[_0x9161('0x14e')]=function(_0x2ce55b,_0x2c4ae2){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x2ce55b['params']['id']}})['then'](handleEntityNotFound(_0x2c4ae2,null))[_0x9161('0xf')](function(_0x17be9e){if(_0x17be9e){return _0x17be9e[_0x9161('0x14e')](_0x2ce55b[_0x9161('0x41')][_0x9161('0x5a')]);}})[_0x9161('0xf')](respondWithStatusCode(_0x2c4ae2,null))[_0x9161('0x4a')](handleError(_0x2c4ae2,null));};exports[_0x9161('0x14f')]=function(_0x61cf72,_0x21964d){var _0x5469c2={},_0x38ca90={},_0x514b4e={'count':0x0,'rows':[]};var _0x3ba7eb=db['CmHopper'][_0x9161('0x4e')];_0x38ca90['model']=_[_0x9161('0x4d')](_0x3ba7eb);_0x38ca90[_0x9161('0x41')]=_[_0x9161('0x4d')](_0x61cf72[_0x9161('0x41')]);_0x38ca90[_0x9161('0x50')]=_[_0x9161('0x51')](_0x38ca90[_0x9161('0x52')],_0x38ca90[_0x9161('0x41')]);_0x38ca90[_0x9161('0x50')]=_['concat'](_0x38ca90['filters'],[_0x9161('0x150'),'$or',_0x9161('0x151'),_0x9161('0x152'),'$lt',_0x9161('0x153'),'$ne',_0x9161('0x154'),'$not',_0x9161('0x155'),_0x9161('0x156'),_0x9161('0x157'),'$notIn',_0x9161('0x158'),_0x9161('0x159'),'$iLike',_0x9161('0x15a'),_0x9161('0x158'),_0x9161('0x15b'),_0x9161('0x15c'),_0x9161('0x15d'),'$any']);_0x5469c2[_0x9161('0x3d')]=_[_0x9161('0x51')](_0x38ca90[_0x9161('0x52')],qs[_0x9161('0x53')](_0x61cf72[_0x9161('0x41')][_0x9161('0x53')]));_0x5469c2[_0x9161('0x3d')]=_0x5469c2[_0x9161('0x3d')][_0x9161('0x66')]?_0x5469c2[_0x9161('0x3d')]:_0x38ca90[_0x9161('0x52')];if(!_0x61cf72[_0x9161('0x41')][_0x9161('0xcd')](_0x9161('0xce'))){_0x5469c2['limit']=qs[_0x9161('0x1d')](_0x61cf72[_0x9161('0x41')][_0x9161('0x1d')]);_0x5469c2[_0x9161('0x1b')]=qs[_0x9161('0x1b')](_0x61cf72[_0x9161('0x41')][_0x9161('0x1b')]);}_0x5469c2[_0x9161('0xc6')]=qs[_0x9161('0xc7')](_0x61cf72[_0x9161('0x41')][_0x9161('0xc7')]);_0x5469c2[_0x9161('0x3b')]=qs['filters'](_[_0x9161('0xc8')](_0x61cf72[_0x9161('0x41')],_0x38ca90['filters']));if(_0x61cf72['query']['filter']){_0x5469c2['where']=_[_0x9161('0x55')](_0x5469c2[_0x9161('0x3b')],{'$or':_['map'](_0x5469c2['attributes'],function(_0x3e4707){var _0x487189={};_0x487189[_0x3e4707]={'$like':'%'+_0x61cf72[_0x9161('0x41')][_0x9161('0x2b')]+'%'};return _0x487189;})});}_0x5469c2['where']={'$and':[_0x5469c2[_0x9161('0x3b')],{'$or':[{'UserId':_0x61cf72['params']['id']},{'OwnerId':_0x61cf72[_0x9161('0x4c')]['id']}]}]};_0x5469c2=_[_0x9161('0x55')]({},_0x5469c2,_0x61cf72[_0x9161('0x56')]);var _0x337118={'where':_0x5469c2[_0x9161('0x3b')]};return db['CmHopper'][_0x9161('0x1e')](_0x337118)[_0x9161('0xf')](function(_0x436999){_0x514b4e[_0x9161('0x1e')]=_0x436999;if(_0x61cf72[_0x9161('0x41')][_0x9161('0x54')]){_0x5469c2[_0x9161('0x3c')]=[{'attributes':['id',_0x9161('0x15e'),_0x9161('0x15f'),'phone'],'model':db[_0x9161('0xc5')],'as':_0x9161('0x160')},{'attributes':['id',_0x9161('0x31'),_0x9161('0x161')],'model':db['VoiceQueue'],'as':_0x9161('0xd1')}];}return db['CmHopper'][_0x9161('0x3f')](_0x5469c2);})[_0x9161('0xf')](function(_0x25e13e){_0x514b4e[_0x9161('0x40')]=_0x25e13e;return _0x514b4e;})[_0x9161('0xf')](respondWithFilteredResult(_0x21964d,_0x5469c2))[_0x9161('0x4a')](handleError(_0x21964d,null));};exports[_0x9161('0x162')]=function(_0x30ab60,_0x4ef476){if(!_['isNil'](_0x30ab60[_0x9161('0x27')]['id'])&&(_0x30ab60['user']['role']==_0x9161('0x79')||_0x30ab60['user']['role']=='user')){return db['User'][_0x9161('0x92')]({'where':{'id':_0x30ab60[_0x9161('0x4c')]['id']},'raw':!![]})[_0x9161('0xf')](function(_0xf78496){return authService[_0x9161('0x163')](_0xf78496);})[_0x9161('0xf')](function(_0x496a80){if(_0x496a80){return _0x4ef476['status'](0xc8)[_0x9161('0x21')]({'api_key':_0x496a80[_0x9161('0x164')]});}else{return _0x4ef476[_0x9161('0x1f')](0xcc)[_0x9161('0x21')]({'message':_0x9161('0x165')});}})[_0x9161('0x4a')](handleError(_0x4ef476,0x193));}else{return _0x4ef476['status'](0x191)['json']({'message':_0x9161('0x166')});}};exports[_0x9161('0x167')]=function(_0x51c731,_0x14ca1c){if(!_[_0x9161('0x67')](_0x51c731[_0x9161('0x27')]['id'])&&(_0x51c731[_0x9161('0x27')]['role']==_0x9161('0x79')||_0x51c731[_0x9161('0x27')][_0x9161('0x25')]==_0x9161('0x27'))){return db[_0x9161('0x36')][_0x9161('0x30')]({'where':{'id':_0x51c731['params']['id']}})['then'](function(_0x932aba){return authService[_0x9161('0x168')](_0x932aba);})[_0x9161('0xf')](function(_0x5e7d3f){return db[_0x9161('0x36')][_0x9161('0x22')]({'apiKeyIat':_0x5e7d3f[_0x9161('0x169')],'apiKeyNonce':_0x5e7d3f[_0x9161('0x16a')]},{'where':{'id':_0x51c731[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](function(){return _0x14ca1c[_0x9161('0x1f')](0xc8)[_0x9161('0x21')]({'api_key':_0x5e7d3f['token']});});})[_0x9161('0x4a')](handleError(_0x14ca1c,0x193));}else{return _0x14ca1c[_0x9161('0x1f')](0x191)[_0x9161('0x21')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['removeApiKey']=function(_0x4eff02,_0x345cee){if(!_[_0x9161('0x67')](_0x4eff02[_0x9161('0x27')]['id'])&&(_0x4eff02[_0x9161('0x27')][_0x9161('0x25')]==_0x9161('0x79')||_0x4eff02[_0x9161('0x27')]['role']==_0x9161('0x27'))){return db['User'][_0x9161('0x30')]({'where':{'id':_0x4eff02[_0x9161('0x4c')]['id']}})[_0x9161('0xf')](handleEntityNotFound(_0x345cee,null))[_0x9161('0xf')](function(_0x2c8fb3){if(_0x2c8fb3&&_0x2c8fb3['apiKeyNonce']&&_0x2c8fb3['apiKeyIat'])return _0x2c8fb3;else throw{'message':_0x9161('0x16b')};})[_0x9161('0xf')](function(_0x41ec4c){return db[_0x9161('0x36')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x4eff02[_0x9161('0x4c')]['id']}});})['then'](respondWithStatusCode(_0x345cee,0xc8))[_0x9161('0x4a')](handleError(_0x345cee,0x193));}else{return _0x345cee['status'](0x191)[_0x9161('0x21')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0x9161('0x16c')]=function(_0x2db480,_0x4a5055){var _0x5b770c=_0x2db480[_0x9161('0x27')][_0x9161('0x24')]({'plain':!![]});if(!_0x5b770c){return _0x4a5055['status'](0x191)[_0x9161('0x34')]('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{return _0x4a5055['status'](0xc8)['json'](_0x5b770c);}};exports[_0x9161('0x16d')]=function(_0x4762f6,_0x14c78a){var _0x20a79f={'offset':0x0},_0x570f1c={'count':0x0,'rows':[]};Promise[_0x9161('0xf8')]()['then'](function(){if(!_0x4762f6[_0x9161('0x41')]['filter']&&!_0x4762f6[_0x9161('0x41')][_0x9161('0x16e')]&&!_0x4762f6[_0x9161('0x41')][_0x9161('0x16f')])return[];return Promise[_0x9161('0xf8')]()[_0x9161('0xf')](function(){var _0x8f6432=[];if(!_[_0x9161('0x88')](_0x4762f6[_0x9161('0x41')]['teams'])){_0x8f6432[_0x9161('0x3e')](db[_0x9161('0x170')][_0x9161('0x3f')]({'attributes':['id','name'],'where':{'id':_0x4762f6['query'][_0x9161('0x16e')]}}));}if(!_[_0x9161('0x88')](_0x4762f6[_0x9161('0x41')][_0x9161('0x16f')])){_0x8f6432[_0x9161('0x3e')](db[_0x9161('0xa4')][_0x9161('0x3f')]({'attributes':['id',_0x9161('0x31')],'type':'inbound','where':{'id':_0x4762f6[_0x9161('0x41')]['queues']}}));}return Promise[_0x9161('0x49')](_0x8f6432);})[_0x9161('0xf')](function(_0x3aa676){var _0x5caf6d=_[_0x9161('0x117')](_0x3aa676)[_0x9161('0x2d')](function(_0x1d3716){return _0x1d3716[_0x9161('0x171')]({'attributes':['id',_0x9161('0x31'),_0x9161('0x5c'),'online'],'raw':!![]});});return Promise['all'](_0x5caf6d);})[_0x9161('0xf')](function(_0x4fd98d){var _0x4f7942=_[_0x9161('0x117')](_0x4fd98d);if(!_0x4762f6[_0x9161('0x41')][_0x9161('0x2b')])return _0x4f7942;if(_[_0x9161('0x88')](_0x4f7942)){return db[_0x9161('0x36')][_0x9161('0x3f')]({'attributes':['id',_0x9161('0x31'),_0x9161('0x5c'),'online'],'where':{'role':_0x9161('0x28'),'$or':[db[_0x9161('0x62')][_0x9161('0x3b')](db[_0x9161('0x62')]['fn'](_0x9161('0x172'),db[_0x9161('0x62')][_0x9161('0x173')](_0x9161('0x31'))),{'$like':'%'+_0x4762f6[_0x9161('0x41')]['filter'][_0x9161('0x9d')]()+'%'}),{'internal':{'$like':'%'+_0x4762f6[_0x9161('0x41')][_0x9161('0x2b')]+'%'}}]},'raw':!![]});}else{return _(_0x4f7942)[_0x9161('0x117')]()[_0x9161('0x2b')](function(_0x5e20e3){return _0x5e20e3[_0x9161('0x31')]['toLowerCase']()[_0x9161('0x2f')](_0x4762f6[_0x9161('0x41')][_0x9161('0x2b')][_0x9161('0x9d')]())||_0x5e20e3[_0x9161('0x5c')][_0x9161('0x174')]()[_0x9161('0x2f')](_0x4762f6['query'][_0x9161('0x2b')]);})['value']();}})[_0x9161('0xf')](function(_0x5c0c99){var _0x22df10=_0x9161('0x31');var _0x557096=_0x9161('0x175');if(_0x4762f6[_0x9161('0x41')][_0x9161('0xc7')]){var _0x557096=_0x4762f6[_0x9161('0x41')][_0x9161('0xc7')][0x0]==='-'?_0x9161('0x176'):_0x9161('0x175');var _0x22df10=_0x557096===_0x9161('0x175')?_0x4762f6[_0x9161('0x41')][_0x9161('0xc7')]:_0x4762f6[_0x9161('0x41')]['sort']['substring'](0x1);}return _(_0x5c0c99)[_0x9161('0x177')]('id')[_0x9161('0x178')]([function(_0x99b15c){return _0x22df10===_0x9161('0x31')?_0x99b15c[_0x22df10]['toLowerCase']():_0x99b15c[_0x22df10];}],[_0x557096])[_0x9161('0x2d')](function(_0x51a919){return _['pick'](_0x51a919,['id',_0x9161('0x31'),_0x9161('0x5c'),'online']);})[_0x9161('0x2e')]();})[_0x9161('0xf')](function(_0x5d0150){return client[_0x9161('0x179')](_0x9161('0x7e'),_0x4762f6)[_0x9161('0xf')](function(_0x4ff102){if(_0x4ff102[_0x9161('0x16')])throw new Error(_0x9161('0x17a'));var _0x31f0a5=_0x4ff102[_0x9161('0x19')];var _0xa24d94=jayson[_0x9161('0xd')]['http']({'port':0x232c});return _0xa24d94[_0x9161('0x179')]('Agents',_0x4762f6)[_0x9161('0xf')](function(_0x4543e8){if(_0x4543e8['error'])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x40ce9f=_0x4543e8[_0x9161('0x19')];return _['merge']({},_0x40ce9f,_0x31f0a5);});})['then'](function(_0x398588){return _['map'](_0x5d0150,function(_0x56dbc6){var _0x156ee0=_[_0x9161('0x30')](_0x398588[_0x9161('0x40')],['id',_0x56dbc6['id']]);if(!_0x156ee0||!_0x56dbc6['online']){_0x56dbc6['status']='offline';}else if(_0x156ee0['voicePause']){_0x56dbc6[_0x9161('0x1f')]=_0x9161('0xfb');}else{_0x56dbc6['status']=_['includes']([_0x9161('0x17b'),_0x9161('0x17c'),'unavailable',_0x9161('0x17d'),null,undefined],_0x156ee0[_0x9161('0x17e')])?_0x9161('0x98'):_0x9161('0x17f');}return _0x56dbc6;});});});})[_0x9161('0xf')](function(_0x3de369){if(!_0x4762f6[_0x9161('0x41')][_0x9161('0xcd')](_0x9161('0xce'))){_0x20a79f[_0x9161('0x1d')]=qs[_0x9161('0x1d')](_0x4762f6[_0x9161('0x41')][_0x9161('0x1d')]||0xa);_0x20a79f[_0x9161('0x1b')]=qs['offset'](_0x4762f6['query'][_0x9161('0x1b')]);}_0x570f1c[_0x9161('0x1e')]=_0x3de369[_0x9161('0x66')];_0x570f1c['rows']=_0x20a79f[_0x9161('0x1d')]?_0x3de369[_0x9161('0x180')](_0x20a79f[_0x9161('0x1b')],_0x20a79f['offset']+_0x20a79f[_0x9161('0x1d')]):_0x3de369;return _0x570f1c;})[_0x9161('0xf')](respondWithFilteredResult(_0x14c78a,_0x20a79f))[_0x9161('0x4a')](handleError(_0x14c78a,null));};function get_open_tabs(_0x57cd5b,_0x43e46d){var _0xa23b7d=_0x57cd5b['charAt'](0x0)[_0x9161('0x181')]()+_0x57cd5b['slice'](0x1);var _0xd08f08={'type':db[_0x9161('0x8c')][_0x9161('0x64')][_0x9161('0x65')],'raw':!![]};return new BPromise(function(_0x3f813a,_0x4b7b5e){var _0x4d43b2=squel[_0x9161('0x182')]()[_0x9161('0x183')](_0x9161('0x184')+_0xa23b7d+_0x9161('0x185'),'id')[_0x9161('0x183')]('ui.createdAt')['from']('user_has_'+_0x57cd5b+_0x9161('0x186'),'ui')[_0x9161('0x3b')]('ui.UserId\x20=\x20?',_0x43e46d['id']);return db[_0x9161('0x62')][_0x9161('0x41')](_0x4d43b2['toString'](),_0xd08f08)[_0x9161('0xf')](function(_0x531908){_0x43e46d[_0xa23b7d+_0x9161('0x187')]=_0x531908;_0x3f813a(_0x531908);})['catch'](function(_0x4eb0d7){_0x4b7b5e(_0x4eb0d7);});});};
\ No newline at end of file
+var _0x2ef3=['OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','phone','mobile','format','LOCAL/%s@from-sip/n','intrf','user:%s','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','device','LOGININPAUSE','concat','isMiddleware','resolve','pause','QueuePause','PAUSE','updateAttributes','getChannels','DEFAULT\x20PAUSE','mailPause','chatPause','faxPause','pauseType','lastPauseAt','unpause','manual','%s%s','Pause','getTeams','Team','addTeams','setDataValue','getChatQueues','Chat','Mail','getSmsQueues','Sms','Whatsapp','Fax','Openchannel','flatten','transaction','addAgent','getDataValue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','getMailQueues','getWhatsappQueues','getOpenchannelQueues','Voice','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','user_has_chat_interactions:save','removeChatInteractions','isArray','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','VoicePrefix','getVoicePrefixes','FaxAccount','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','OpenchannelAccount','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','SmsAccount','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','SquareProject','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$like','$notLike','$iLike','$notILike','$contains','$contained','$any','CmHopper','firstName','lastName','Contact','VoiceQueue','getApiKey','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','token','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','inbound','lower','col','asc','desc','substring','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','http','idle','unavailable','voiceStatus','busy','slice','toUpperCase','QueryTypes','select','field','ui.','InteractionId','ui.createdAt','_interactions','ui.UserId\x20=\x20?','toString','moment','bluebird','util','path','lodash','squel','ioredis','../../components/auth/service','../../config/logger','api','../../config/license/util','../../mysqldb','socket.io-emitter','redis','./user.socket','register','defaults','localhost','request','info','debug','request\x20sent','stringify','error','message','User,\x20%s,\x20%s','result','catch','sendStatus','end','json','offset','undefined','count','limit','status','set','update','then','destroy','get','role','admin','user','agent','Telephones','filter','ignore','map','value','find','name','UserProfileResource','send','index','rawAttributes','type','key','includes','password','salt','getOptions','where','query','includeAll','include','attributes','push','User','findAll','rows','openTabs','length','chat','dataValues','sms','fax','mail','openchannel','all','show','params','differenceBy','keys','filters','intersection','model','fields','merge','options','true','whatsapp','body','addContacts','omit','internal','Setting','securePassword','validatePasswordPattern','max','isNil','min_internal','sequelize','SELECT','from','VoiceMail','email','permissions','102','103','104','106','108','109','100','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','Agents','create','bulkCreate','some','each','telephone','isEmpty','autoAssociation','compact','oldPassword','newPassword','ValidationError','authenticate','Sequelize','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','enforcePasswordHistory','previousPasswords','validatePasswordHistory','passwordHistoryLimit','updatePasswordsHistory','addQueues','channel','online','loginInPause','voicePause','interface','isValidChannel','add','capitalize','toLowerCase','penalty','spread','ids','QueueId','emit','voice','SIP/%s','upsert','Unknown\x20channel','remove','Queue:remove','UserVoiceQueueRt','userpic','filename','root','server/files/images/logos/default_profile.png','download','existsSync','join','getOpenTabs','ChatOpenTabs','CHAT','FaxOpenTabs','FAX','createdAt','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','findOne','order','pick','hasOwnProperty','CmList','List','Tag','Tags','color','nolimit','Queue','Unknown\x20role','Queues','getVoiceQueuesRt','sort','getGroups','ChatGroup','getRecordings','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','ChatInteraction','getChatInteractions','getOpenchannelInteractions'];(function(_0x4247e5,_0x30b7bb){var _0x5ee3d5=function(_0x5056cd){while(--_0x5056cd){_0x4247e5['push'](_0x4247e5['shift']());}};_0x5ee3d5(++_0x30b7bb);}(_0x2ef3,0xba));var _0x32ef=function(_0x54d023,_0x30813b){_0x54d023=_0x54d023-0x0;var _0x4c5821=_0x2ef3[_0x54d023];return _0x4c5821;};'use strict';var moment=require(_0x32ef('0x0'));var BPromise=require(_0x32ef('0x1'));var util=require(_0x32ef('0x2'));var path=require(_0x32ef('0x3'));var fs=require('fs');var _=require(_0x32ef('0x4'));var squel=require(_0x32ef('0x5'));var jayson=require('jayson/promise');var Redis=require(_0x32ef('0x6'));var authService=require(_0x32ef('0x7'));var qs=require('../../components/parsers/qs');var logger=require(_0x32ef('0x8'))(_0x32ef('0x9'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0xa'));var db=require(_0x32ef('0xb'))['db'];var socket=require(_0x32ef('0xc'))(new Redis(config[_0x32ef('0xd')]));require(_0x32ef('0xe'))[_0x32ef('0xf')](socket);config[_0x32ef('0xd')]=_[_0x32ef('0x10')](config[_0x32ef('0xd')],{'host':_0x32ef('0x11'),'port':0x18eb});var client=jayson['client']['http']({'port':0x232a});var values;function respondWithRpcPromise(_0x401d0b,_0x33281d,_0x45bfd5,_0x1499c2){return new BPromise(function(_0x5af651,_0x193714){var _0x5afcc2=_0x1499c2||client;return _0x5afcc2[_0x32ef('0x12')](_0x401d0b,_0x45bfd5)['then'](function(_0x3e98df){logger[_0x32ef('0x13')]('User,\x20%s,\x20%s',_0x33281d,'request\x20sent');logger[_0x32ef('0x14')]('User,\x20%s,\x20%s,\x20%s',_0x33281d,_0x32ef('0x15'),JSON[_0x32ef('0x16')](_0x3e98df));if(_0x3e98df[_0x32ef('0x17')]){if(_0x3e98df[_0x32ef('0x17')]['code']===0x1f4){logger['error']('User,\x20%s,\x20%s',_0x33281d,_0x3e98df[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x193714(_0x3e98df[_0x32ef('0x17')]['message']);}logger['error'](_0x32ef('0x19'),_0x33281d,_0x3e98df[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x5af651(_0x3e98df['error'][_0x32ef('0x18')]);}else{logger[_0x32ef('0x13')]('User,\x20%s,\x20%s',_0x33281d,_0x32ef('0x15'));_0x5af651(_0x3e98df[_0x32ef('0x1a')][_0x32ef('0x18')]);}})[_0x32ef('0x1b')](function(_0x445cda){logger[_0x32ef('0x17')]('User,\x20%s,\x20%s',_0x33281d,_0x445cda);_0x193714(_0x445cda);});});}function respondWithStatusCode(_0x3c5b78,_0x5cc3ef){_0x5cc3ef=_0x5cc3ef||0xcc;return function(_0x309866){if(_0x309866){return _0x3c5b78[_0x32ef('0x1c')](_0x5cc3ef);}return _0x3c5b78['status'](_0x5cc3ef)[_0x32ef('0x1d')]();};}function respondWithResult(_0x97780,_0x5e8898){_0x5e8898=_0x5e8898||0xc8;return function(_0x55f7f2){if(_0x55f7f2){return _0x97780['status'](_0x5e8898)[_0x32ef('0x1e')](_0x55f7f2);}};}function respondWithFilteredResult(_0xb30fab,_0x225feb){return function(_0x478bef){if(_0x478bef){var _0x59585f=typeof _0x225feb[_0x32ef('0x1f')]==='undefined'&&typeof _0x225feb['limit']===_0x32ef('0x20');var _0x14d4b3=_0x478bef[_0x32ef('0x21')];var _0x1dbe98=_0x59585f?0x0:_0x225feb[_0x32ef('0x1f')];var _0x234175=_0x59585f?_0x478bef[_0x32ef('0x21')]:_0x225feb[_0x32ef('0x1f')]+_0x225feb[_0x32ef('0x22')];var _0x2f52d7;if(_0x234175>=_0x14d4b3){_0x234175=_0x14d4b3;_0x2f52d7=0xc8;}else{_0x2f52d7=0xce;}_0xb30fab[_0x32ef('0x23')](_0x2f52d7);return _0xb30fab[_0x32ef('0x24')]('Content-Range',_0x1dbe98+'-'+_0x234175+'/'+_0x14d4b3)[_0x32ef('0x1e')](_0x478bef);}return null;};}function saveUpdates(_0x2f5d06){return function(_0x5a04cd){if(_0x5a04cd){return _0x5a04cd[_0x32ef('0x25')](_0x2f5d06)[_0x32ef('0x26')](function(_0x30b250){return _0x30b250;});}return null;};}function removeEntity(_0x26e207){return function(_0x50a95b){if(_0x50a95b){return _0x50a95b[_0x32ef('0x27')]()[_0x32ef('0x26')](function(){var _0x31dbc3=_0x50a95b[_0x32ef('0x28')]({'plain':!![]});if(_0x31dbc3[_0x32ef('0x29')]===_0x32ef('0x2a'))return;var _0x1a122d=[{'name':'Users','value':_0x32ef('0x2b'),'ignore':!![]},{'name':'Agents','value':_0x32ef('0x2c'),'ignore':![]},{'name':_0x32ef('0x2d'),'value':'telephone','ignore':![]}];var _0xcc2efb=_(_0x1a122d)[_0x32ef('0x2e')](_0x32ef('0x2f'))[_0x32ef('0x30')](_0x32ef('0x31'))['value']();if(_['includes'](_0xcc2efb,_0x31dbc3[_0x32ef('0x29')])){return;}var _0x5dadf7=_[_0x32ef('0x32')](_0x1a122d,[_0x32ef('0x31'),_0x31dbc3[_0x32ef('0x29')]])[_0x32ef('0x33')];return db[_0x32ef('0x34')][_0x32ef('0x27')]({'where':{'type':_0x5dadf7,'resourceId':_0x31dbc3['id']}})['then'](function(){return _0x50a95b;});})['then'](function(){_0x26e207['status'](0xcc)[_0x32ef('0x1d')]();});}};}function handleEntityNotFound(_0x3c4651){return function(_0x136b02){if(!_0x136b02){_0x3c4651['sendStatus'](0x194);}return _0x136b02;};}function handleError(_0x4fb402,_0x1c3633){_0x1c3633=_0x1c3633||0x1f4;return function(_0x2bd8a9){logger[_0x32ef('0x17')](_0x2bd8a9['stack']);if(_0x2bd8a9['name']){delete _0x2bd8a9[_0x32ef('0x33')];}_0x4fb402[_0x32ef('0x23')](_0x1c3633)[_0x32ef('0x35')](_0x2bd8a9);};}exports[_0x32ef('0x36')]=function(_0x3a7c49,_0x211c79){var _0x3223d5={},_0x21da90={'count':0x0,'rows':[]};var _0x7f2319=_(db['User'][_0x32ef('0x37')])[_0x32ef('0x30')](function(_0x14b54f){return{'name':_0x14b54f['fieldName'],'type':_0x14b54f[_0x32ef('0x38')][_0x32ef('0x39')]};})[_0x32ef('0x2e')](function(_0x393a89){return!_[_0x32ef('0x3a')]([_0x32ef('0x3b'),_0x32ef('0x3c')],_0x393a89[_0x32ef('0x33')]);})[_0x32ef('0x31')]();_0x3223d5=qs[_0x32ef('0x3d')](_0x7f2319,_0x3a7c49);var _0xb4db74={'where':_0x3223d5[_0x32ef('0x3e')]};return db['User'][_0x32ef('0x21')](_0xb4db74)[_0x32ef('0x26')](function(_0x26a40f){_0x21da90[_0x32ef('0x21')]=_0x26a40f;if(_0x3a7c49[_0x32ef('0x3f')][_0x32ef('0x40')]){_0x3223d5[_0x32ef('0x41')]=[{'all':!![]}];}if(!_['includes'](_0x3223d5['attributes'],'id')){_0x3223d5[_0x32ef('0x42')][_0x32ef('0x43')]('id');}return db[_0x32ef('0x44')][_0x32ef('0x45')](_0x3223d5);})['then'](function(_0x2901a1){_0x21da90[_0x32ef('0x46')]=_0x2901a1;if(_0x3a7c49['query'][_0x32ef('0x47')]==='true'){var _0xcb3c08=[];for(var _0x100ec7=0x0;_0x100ec7<_0x21da90[_0x32ef('0x46')][_0x32ef('0x48')];_0x100ec7++){_0xcb3c08[_0x32ef('0x43')](get_open_tabs(_0x32ef('0x49'),_0x21da90[_0x32ef('0x46')][_0x100ec7][_0x32ef('0x4a')]));_0xcb3c08[_0x32ef('0x43')](get_open_tabs(_0x32ef('0x4b'),_0x21da90['rows'][_0x100ec7][_0x32ef('0x4a')]));_0xcb3c08['push'](get_open_tabs(_0x32ef('0x4c'),_0x21da90[_0x32ef('0x46')][_0x100ec7][_0x32ef('0x4a')]));_0xcb3c08['push'](get_open_tabs(_0x32ef('0x4d'),_0x21da90[_0x32ef('0x46')][_0x100ec7][_0x32ef('0x4a')]));_0xcb3c08[_0x32ef('0x43')](get_open_tabs(_0x32ef('0x4e'),_0x21da90[_0x32ef('0x46')][_0x100ec7][_0x32ef('0x4a')]));_0xcb3c08['push'](get_open_tabs('whatsapp',_0x21da90[_0x32ef('0x46')][_0x100ec7][_0x32ef('0x4a')]));}return BPromise[_0x32ef('0x4f')](_0xcb3c08)[_0x32ef('0x26')](function(_0x209361){return _0x21da90;});}else{return _0x21da90;}})[_0x32ef('0x26')](respondWithFilteredResult(_0x211c79,_0x3223d5))[_0x32ef('0x1b')](handleError(_0x211c79,null));};exports[_0x32ef('0x50')]=function(_0xc10e7,_0x1ebedf){var _0x35a294={'raw':![],'where':{'id':_0xc10e7[_0x32ef('0x51')]['id']}},_0x30ad49={};_0x30ad49['model']=_[_0x32ef('0x52')](_[_0x32ef('0x53')](db[_0x32ef('0x44')][_0x32ef('0x37')]),[_0x32ef('0x3b'),_0x32ef('0x3c')]);_0x30ad49[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0xc10e7[_0x32ef('0x3f')]);_0x30ad49[_0x32ef('0x54')]=_[_0x32ef('0x55')](_0x30ad49[_0x32ef('0x56')],_0x30ad49[_0x32ef('0x3f')]);_0x35a294[_0x32ef('0x42')]=_[_0x32ef('0x55')](_0x30ad49[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0xc10e7[_0x32ef('0x3f')]['fields']));_0x35a294['attributes']=_0x35a294[_0x32ef('0x42')][_0x32ef('0x48')]?_0x35a294[_0x32ef('0x42')]:_0x30ad49[_0x32ef('0x56')];if(_0xc10e7[_0x32ef('0x3f')][_0x32ef('0x40')]){_0x35a294[_0x32ef('0x41')]=[{'all':!![]}];}_0x35a294=_[_0x32ef('0x58')]({},_0x35a294,_0xc10e7[_0x32ef('0x59')]);if(!_[_0x32ef('0x3a')](_0x35a294[_0x32ef('0x42')],'id')){_0x35a294['attributes'][_0x32ef('0x43')]('id');}return db[_0x32ef('0x44')][_0x32ef('0x32')](_0x35a294)[_0x32ef('0x26')](handleEntityNotFound(_0x1ebedf,null))[_0x32ef('0x26')](function(_0x387cf0){var _0x52c588=[];values=_0x387cf0;if(_0xc10e7[_0x32ef('0x3f')][_0x32ef('0x47')]===_0x32ef('0x5a')){_0x52c588['push'](get_open_tabs(_0x32ef('0x49'),_0x387cf0['dataValues']));_0x52c588[_0x32ef('0x43')](get_open_tabs(_0x32ef('0x4b'),_0x387cf0['dataValues']));_0x52c588[_0x32ef('0x43')](get_open_tabs('openchannel',_0x387cf0[_0x32ef('0x4a')]));_0x52c588[_0x32ef('0x43')](get_open_tabs(_0x32ef('0x5b'),_0x387cf0[_0x32ef('0x4a')]));_0x52c588[_0x32ef('0x43')](get_open_tabs(_0x32ef('0x4c'),_0x387cf0[_0x32ef('0x4a')]));_0x52c588['push'](get_open_tabs('mail',_0x387cf0[_0x32ef('0x4a')]));return BPromise['all'](_0x52c588);}else{return values;}})['then'](function(_0xb519e9){return values;})[_0x32ef('0x26')](respondWithResult(_0x1ebedf,null))[_0x32ef('0x1b')](handleError(_0x1ebedf,null));};exports[_0x32ef('0x25')]=function(_0x2468e6,_0x356704){if(_0x2468e6[_0x32ef('0x5c')]['id']){delete _0x2468e6[_0x32ef('0x5c')]['id'];}delete _0x2468e6[_0x32ef('0x5c')][_0x32ef('0x29')];return db['User']['find']({'where':{'id':_0x2468e6[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x356704,null))['then'](saveUpdates(_0x2468e6[_0x32ef('0x5c')],null))[_0x32ef('0x26')](respondWithResult(_0x356704,null))[_0x32ef('0x1b')](handleError(_0x356704,null));};exports['describe']=function(_0x2ac877,_0x3c31d0){return db[_0x32ef('0x44')]['describe']()['then'](respondWithResult(_0x3c31d0,null))[_0x32ef('0x1b')](handleError(_0x3c31d0,null));};exports['addContacts']=function(_0x17f447,_0x5bb114){return db['User'][_0x32ef('0x32')]({'where':{'id':_0x17f447[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x5bb114,null))['then'](function(_0x9c89a2){if(_0x9c89a2){return _0x9c89a2[_0x32ef('0x5d')](_0x17f447[_0x32ef('0x5c')]['ids'],_[_0x32ef('0x5e')](_0x17f447[_0x32ef('0x5c')],['ids','id'])||{});}})['then'](respondWithResult(_0x5bb114,null))[_0x32ef('0x1b')](handleError(_0x5bb114,null));};function validateUser(_0x3a6697){return new BPromise(function(_0x2518a0,_0x339625){if(_0x3a6697[_0x32ef('0x5f')])return _0x2518a0(_0x3a6697);return db[_0x32ef('0x60')]['findById'](0x1)[_0x32ef('0x26')](function(_0x63b65){if(_0x63b65[_0x32ef('0x61')])authService[_0x32ef('0x62')](_0x3a6697[_0x32ef('0x3b')]);db[_0x32ef('0x44')][_0x32ef('0x63')](_0x32ef('0x5f'))[_0x32ef('0x26')](function(_0x4fa4df){if(_[_0x32ef('0x64')](_0x4fa4df)){_0x3a6697[_0x32ef('0x5f')]=_0x63b65[_0x32ef('0x65')]||0x1;return;}if(_[_0x32ef('0x64')](_0x63b65[_0x32ef('0x65')])||_0x63b65['min_internal']===_0x4fa4df){_0x3a6697['internal']=_0x4fa4df+0x1;return;}if(_0x63b65[_0x32ef('0x65')]>_0x4fa4df){_0x3a6697[_0x32ef('0x5f')]=_0x63b65[_0x32ef('0x65')];return;}return db[_0x32ef('0x66')][_0x32ef('0x3f')]('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[_0x32ef('0x66')]['QueryTypes'][_0x32ef('0x67')]})[_0x32ef('0x26')](function(_0x48b6f4){if(_0x48b6f4&&_0x48b6f4['length']){for(var _0x2c9f7a=0x0,_0x1538d0=_0x48b6f4[_0x32ef('0x48')];_0x2c9f7a<_0x1538d0&&_['isNil'](_0x3a6697['internal']);_0x2c9f7a++){if(_0x63b65[_0x32ef('0x65')]<=_0x48b6f4[_0x2c9f7a][_0x32ef('0x68')]){_0x3a6697[_0x32ef('0x5f')]=_0x48b6f4[_0x2c9f7a][_0x32ef('0x68')];}else if(_0x63b65['min_internal']>_0x48b6f4[_0x2c9f7a][_0x32ef('0x68')]&&_0x63b65[_0x32ef('0x65')]<=_0x48b6f4[_0x2c9f7a]['to']){_0x3a6697[_0x32ef('0x5f')]=_0x63b65[_0x32ef('0x65')];}}}if(_[_0x32ef('0x64')](_0x3a6697[_0x32ef('0x5f')])){_0x3a6697[_0x32ef('0x5f')]=_0x4fa4df+0x1;}return _0x2518a0(_0x3a6697);});});})[_0x32ef('0x1b')](function(_0x3cdfe6){_0x339625(_0x3cdfe6);});});}function updateUser(_0x1d0448){return new BPromise(function(_0x132d9f,_0x3978cb){try{if(_0x1d0448['voicemail']){_0x1d0448['mailbox']=_0x1d0448[_0x32ef('0x5f')];_0x1d0448[_0x32ef('0x69')]={'mailbox':_0x1d0448['internal'],'password':_0x1d0448[_0x32ef('0x3b')],'fullname':_0x1d0448['fullname'],'email':_0x1d0448[_0x32ef('0x6a')]};}if(_0x1d0448[_0x32ef('0x29')]===_0x32ef('0x2c')){if(!_0x1d0448['permissions'])_0x1d0448[_0x32ef('0x6b')]=['101',_0x32ef('0x6c'),_0x32ef('0x6d'),'113','110',_0x32ef('0x6e'),'105',_0x32ef('0x6f'),'107',_0x32ef('0x70'),_0x32ef('0x71'),_0x32ef('0x72'),'111','114','115'];}_0x132d9f(_0x1d0448);}catch(_0x574fb3){_0x3978cb(_0x574fb3);}});}exports['create']=function(_0x267364,_0x13a374){if(_0x267364[_0x32ef('0x2b')][_0x32ef('0x29')]===_0x32ef('0x2c'))throw new Error(_0x32ef('0x73'));if(_0x267364['body'][_0x32ef('0x29')]==='user'&&_0x267364['user'][_0x32ef('0x29')]!=='admin'){throw new Error(_0x32ef('0x74'));}if(_0x267364[_0x32ef('0x5c')]['role']===_0x32ef('0x2a')&&_0x267364[_0x32ef('0x2b')][_0x32ef('0x29')]!==_0x32ef('0x2a')){throw new Error(_0x32ef('0x75'));}return licenseUtil[_0x32ef('0x76')]([_0x267364['body']])['then'](function(){return validateUser(_0x267364[_0x32ef('0x5c')]);})['then'](function(_0x41bbe1){return updateUser(_0x41bbe1)[_0x32ef('0x26')](function(_0x114d8e){if(_0x114d8e[_0x32ef('0x29')]===_0x32ef('0x2a')){_0x114d8e[_0x32ef('0x77')]=_0x267364['user'][_0x32ef('0x77')];delete _0x114d8e[_0x32ef('0x78')];}return _0x114d8e;});})[_0x32ef('0x26')](function(_0x2aeb11){return db[_0x32ef('0x44')]['create'](_0x2aeb11,{'include':[{'model':db['VoiceMail'],'as':_0x32ef('0x69')}]});})[_0x32ef('0x26')](function(_0x54d7ea){if(_0x267364[_0x32ef('0x5c')][_0x32ef('0x29')]===_0x32ef('0x2b'))return _0x54d7ea;if(_0x267364[_0x32ef('0x2b')][_0x32ef('0x29')]!==_0x32ef('0x2b'))return _0x54d7ea;return db[_0x32ef('0x79')][_0x32ef('0x32')]({'where':{'name':_0x54d7ea[_0x32ef('0x29')]==='agent'?_0x32ef('0x7a'):_0x32ef('0x2d'),'userProfileId':_0x267364['user'][_0x32ef('0x78')]},'raw':!![]})['then'](function(_0x18f96c){if(!_0x18f96c||_0x18f96c['autoAssociation']!=0x0)return _0x54d7ea;return db[_0x32ef('0x34')][_0x32ef('0x7b')]({'name':_0x54d7ea[_0x32ef('0x33')],'resourceId':_0x54d7ea['id'],'type':_0x18f96c[_0x32ef('0x33')],'sectionId':_0x18f96c['id']},{})['then'](function(){return _0x54d7ea;});})[_0x32ef('0x1b')](function(_0x31cff1){logger[_0x32ef('0x17')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x31cff1);throw _0x31cff1;});})['then'](respondWithResult(_0x13a374,0xc9))['catch'](handleError(_0x13a374,null));};exports[_0x32ef('0x7c')]=function(_0x12f5ef,_0x1ec12d){var _0x34fd2b=_0x12f5ef[_0x32ef('0x5c')];var _0x5a1696=[];if(_0x12f5ef[_0x32ef('0x2b')]['role']===_0x32ef('0x2c'))throw new Error(_0x32ef('0x73'));if(_[_0x32ef('0x7d')](_0x34fd2b,['role',_0x32ef('0x2b')])&&_0x12f5ef[_0x32ef('0x2b')][_0x32ef('0x29')]!==_0x32ef('0x2a')){throw new Error(_0x32ef('0x74'));}if(_['some'](_0x34fd2b,[_0x32ef('0x29'),'admin'])&&_0x12f5ef[_0x32ef('0x2b')][_0x32ef('0x29')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0x32ef('0x76')](_0x34fd2b)[_0x32ef('0x26')](function(){return validateUser(_0x34fd2b[0x0]);})[_0x32ef('0x26')](function(){for(var _0x3b9896=0x1;_0x3b9896<_0x34fd2b['length'];_0x3b9896++){var _0x356fd4=_0x34fd2b[_0x3b9896-0x1]['internal'];if(!_0x34fd2b[_0x3b9896]['internal'])_0x34fd2b[_0x3b9896][_0x32ef('0x5f')]=_0x356fd4+0x1;_0x5a1696['push'](validateUser(_0x34fd2b[_0x3b9896]));}return BPromise[_0x32ef('0x4f')](_0x5a1696);})[_0x32ef('0x26')](function(){_0x5a1696=[];for(var _0x20a92b=0x0;_0x20a92b<_0x34fd2b['length'];_0x20a92b++){_0x5a1696['push'](updateUser(_0x34fd2b[_0x20a92b]));}return BPromise[_0x32ef('0x4f')](_0x5a1696);})[_0x32ef('0x26')](function(){return BPromise[_0x32ef('0x7e')](_0x34fd2b,function(_0x3741f8){return db[_0x32ef('0x44')][_0x32ef('0x7b')](_0x3741f8,{'include':[{'model':db[_0x32ef('0x69')],'as':'VoiceMail'}]})[_0x32ef('0x26')](function(_0x8f0436){_0x3741f8['id']=_0x8f0436['id'];return _0x3741f8;});});})[_0x32ef('0x26')](function(_0x143ced){if(_0x12f5ef['body']['role']===_0x32ef('0x2b'))return _0x143ced;if(_0x12f5ef['user'][_0x32ef('0x29')]!==_0x32ef('0x2b'))return _0x143ced;var _0x50f13b=_['some'](_0x143ced,function(_0x5f2637){return _0x5f2637[_0x32ef('0x29')]===_0x32ef('0x2c')||_0x5f2637[_0x32ef('0x29')]===_0x32ef('0x7f');});if(!_0x50f13b)return _0x143ced;return db['UserProfileSection'][_0x32ef('0x45')]({'where':{'name':{'$or':[_0x32ef('0x7a'),_0x32ef('0x2d')]},'userProfileId':_0x12f5ef['user'][_0x32ef('0x78')]},'raw':!![]})['then'](function(_0x1b0063){if(_[_0x32ef('0x80')](_0x1b0063)||!_['some'](_0x1b0063,['autoAssociation',0x0]))return _0x143ced;_0x5a1696=[];var _0x2d6a9a=_(_0x1b0063)[_0x32ef('0x30')](function(_0x435538){if(_0x435538[_0x32ef('0x81')]===0x1)return;return _0x435538[_0x32ef('0x33')]===_0x32ef('0x7a')?_0x32ef('0x2c'):_0x32ef('0x7f');})[_0x32ef('0x82')]()['value']();for(var _0x10594a=0x0;_0x10594a<_0x143ced['length'];_0x10594a++){if(!_[_0x32ef('0x3a')](_0x2d6a9a,_0x143ced[_0x10594a][_0x32ef('0x29')]))return;var _0x1d9d57=_0x143ced[_0x10594a][_0x32ef('0x29')]===_0x32ef('0x2c')?'Agents':_0x32ef('0x2d');_0x5a1696[_0x32ef('0x43')](db[_0x32ef('0x34')][_0x32ef('0x7b')]({'name':_0x143ced[_0x10594a][_0x32ef('0x33')],'resourceId':_0x143ced[_0x10594a]['id'],'type':_0x1d9d57,'sectionId':_[_0x32ef('0x32')](_0x1b0063,[_0x32ef('0x33'),_0x1d9d57])['id']},{}));}return BPromise[_0x32ef('0x4f')](_0x5a1696);});})[_0x32ef('0x26')](respondWithResult(_0x1ec12d,0xc9))['catch'](handleError(_0x1ec12d,null));};exports['changePassword']=function(_0x4fb09e,_0x2e01fa){if(_0x4fb09e[_0x32ef('0x5c')]['id']){delete _0x4fb09e['body']['id'];}return db[_0x32ef('0x44')]['find']({'where':{'id':_0x4fb09e[_0x32ef('0x51')]['id']}})['then'](function(_0x519eda){if(!_0x519eda)return null;if(_0x519eda['id']===_0x4fb09e[_0x32ef('0x2b')]['id']){if(!_0x4fb09e[_0x32ef('0x5c')][_0x32ef('0x83')]||!_0x4fb09e[_0x32ef('0x5c')][_0x32ef('0x84')]){throw new db['Sequelize'][(_0x32ef('0x85'))]('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x519eda[_0x32ef('0x86')](_0x4fb09e['body']['oldPassword'])){throw new db['Sequelize']['ValidationError']('Wrong\x20credentials');}if(_0x4fb09e[_0x32ef('0x5c')][_0x32ef('0x83')]===_0x4fb09e['body'][_0x32ef('0x84')]){throw new db[(_0x32ef('0x87'))][(_0x32ef('0x85'))](_0x32ef('0x88'));}}else if(_0x4fb09e[_0x32ef('0x2b')][_0x32ef('0x29')]==='admin'){if(!_0x4fb09e[_0x32ef('0x5c')]['newPassword']){throw new db[(_0x32ef('0x87'))][(_0x32ef('0x85'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x4fb09e[_0x32ef('0x2b')]['role']===_0x32ef('0x2b')){if(!_0x4fb09e[_0x32ef('0x5c')][_0x32ef('0x84')]){throw new db[(_0x32ef('0x87'))]['ValidationError'](_0x32ef('0x89'));}if(_0x519eda[_0x32ef('0x29')]!==_0x32ef('0x2c')){throw new db[(_0x32ef('0x87'))]['ValidationError'](_0x32ef('0x73'));}}else{throw new db['Sequelize'][(_0x32ef('0x85'))](_0x32ef('0x73'));}return _0x519eda;})[_0x32ef('0x26')](handleEntityNotFound(_0x2e01fa,null))[_0x32ef('0x26')](function(_0x1cbb24){return db[_0x32ef('0x60')]['findOne']({'attributes':['id',_0x32ef('0x61'),'enforcePasswordHistory','passwordHistoryLimit']})[_0x32ef('0x26')](function(_0x1e5237){if(_0x1e5237[_0x32ef('0x61')])authService[_0x32ef('0x62')](_0x4fb09e['body'][_0x32ef('0x84')]);if(!_0x1e5237[_0x32ef('0x8a')]||!_0x1cbb24[_0x32ef('0x8b')])return _0x1cbb24;authService[_0x32ef('0x8c')](_0x4fb09e['body']['newPassword'],_0x1cbb24['previousPasswords'],_0x1e5237[_0x32ef('0x8d')]);return _0x1cbb24;})[_0x32ef('0x26')](saveUpdates({'password':_0x4fb09e[_0x32ef('0x5c')][_0x32ef('0x84')],'passwordResetAt':_0x4fb09e[_0x32ef('0x2b')]['id']==_0x4fb09e[_0x32ef('0x51')]['id']?moment():null,'previousPasswords':authService[_0x32ef('0x8e')](_0x4fb09e[_0x32ef('0x5c')][_0x32ef('0x84')],_0x1cbb24[_0x32ef('0x8b')])},null));})[_0x32ef('0x26')](respondWithResult(_0x2e01fa,null))['catch'](handleError(_0x2e01fa,null));};exports[_0x32ef('0x8f')]=function(_0x7c2649,_0x42d79b){var _0x349e03=_0x7c2649[_0x32ef('0x5c')][_0x32ef('0x90')];return db['User'][_0x32ef('0x32')]({'where':{'id':_0x7c2649[_0x32ef('0x51')]['id']},'attributes':['id',_0x32ef('0x33'),_0x32ef('0x29'),_0x32ef('0x91'),_0x32ef('0x92'),_0x32ef('0x93'),_0x32ef('0x94')]})[_0x32ef('0x26')](handleEntityNotFound(_0x42d79b,null))[_0x32ef('0x26')](function(_0x439146){if(_0x439146){if(!utils[_0x32ef('0x95')](_0x349e03)){throw new db[(_0x32ef('0x87'))][(_0x32ef('0x85'))]('Unknown\x20channel');}return _0x439146[_0x32ef('0x96')+_[_0x32ef('0x97')](_0x349e03[_0x32ef('0x98')]())+'Queues'](_0x7c2649[_0x32ef('0x5c')]['ids'],{'penalty':_0x7c2649[_0x32ef('0x5c')][_0x32ef('0x99')]||0x0})[_0x32ef('0x9a')](function(_0x5c2733){for(var _0x27aff9=0x0;_0x27aff9<_0x7c2649['body'][_0x32ef('0x9b')][_0x32ef('0x48')];_0x27aff9+=0x1){var _0x5b753c={'UserId':Number(_0x7c2649[_0x32ef('0x51')]['id'])};_0x5b753c[_[_0x32ef('0x97')](_0x349e03[_0x32ef('0x98')]())+_0x32ef('0x9c')]=Number(_0x7c2649[_0x32ef('0x5c')][_0x32ef('0x9b')][_0x27aff9]);socket[_0x32ef('0x9d')]('user'+_['capitalize'](_0x349e03[_0x32ef('0x98')]())+'Queue:save',_0x5b753c);}return _0x5c2733;})[_0x32ef('0x26')](function(){if(_0x349e03===_0x32ef('0x9e')){return db['VoiceQueue'][_0x32ef('0x45')]({'where':{'id':_0x7c2649[_0x32ef('0x5c')]['ids']||[]},'raw':!![],'attributes':['id',_0x32ef('0x33')]});}})[_0x32ef('0x26')](function(_0x3f09c9){var _0xa5f787=_0x439146[_0x32ef('0x28')]({'plain':!![]});var _0x599b18=[];if(_0x349e03===_0x32ef('0x9e')&&_0xa5f787[_0x32ef('0x29')]==='agent'&&_0xa5f787[_0x32ef('0x91')]){for(var _0xe7df49=0x0;_0xe7df49<_0x3f09c9[_0x32ef('0x48')];_0xe7df49+=0x1){_0x599b18[_0x32ef('0x43')]({'membername':_0xa5f787[_0x32ef('0x33')],'UserId':_0xa5f787['id'],'queue_name':_0x3f09c9[_0xe7df49]['name'],'VoiceQueueId':_0x3f09c9[_0xe7df49]['id'],'interface':_[_0x32ef('0x64')](_0xa5f787[_0x32ef('0x94')])?util['format'](_0x32ef('0x9f'),_0xa5f787[_0x32ef('0x33')]):_0xa5f787[_0x32ef('0x94')],'paused':_0xa5f787[_0x32ef('0x93')]||![],'penalty':_0x7c2649[_0x32ef('0x5c')][_0x32ef('0x99')]||0x0});}return BPromise[_0x32ef('0x7e')](_0x599b18,function(_0x482c46){return db['UserVoiceQueueRt'][_0x32ef('0xa0')](_0x482c46);});}return _0x439146;});}})[_0x32ef('0x26')](respondWithStatusCode(_0x42d79b,null))[_0x32ef('0x1b')](handleError(_0x42d79b,null));};exports['removeQueues']=function(_0x10c38e,_0x32fe54){var _0x49fef2;return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x10c38e['params']['id']},'attributes':['id','name',_0x32ef('0x29')]})[_0x32ef('0x26')](handleEntityNotFound(_0x32fe54,null))[_0x32ef('0x26')](function(_0x5a86f6){if(_0x5a86f6){_0x49fef2=_0x5a86f6;if(!_0x10c38e['query']['channel']||!utils[_0x32ef('0x95')](_0x10c38e[_0x32ef('0x3f')][_0x32ef('0x90')])){throw new db['Sequelize'][(_0x32ef('0x85'))](_0x32ef('0xa1'));}return _0x5a86f6[_0x32ef('0xa2')+_['capitalize'](_0x10c38e[_0x32ef('0x3f')][_0x32ef('0x90')]['toLowerCase']())+'Queues'](_0x10c38e[_0x32ef('0x3f')]['ids']);}})[_0x32ef('0x26')](function(_0x286ce3){if(_['isArray'](_0x10c38e['query'][_0x32ef('0x9b')])){for(var _0x4bb644=0x0;_0x4bb644<_0x10c38e[_0x32ef('0x3f')][_0x32ef('0x9b')][_0x32ef('0x48')];_0x4bb644+=0x1){var _0x28d85a={'UserId':Number(_0x10c38e[_0x32ef('0x51')]['id'])};_0x28d85a[_[_0x32ef('0x97')](_0x10c38e[_0x32ef('0x3f')][_0x32ef('0x90')][_0x32ef('0x98')]())+_0x32ef('0x9c')]=Number(_0x10c38e['query']['ids'][_0x4bb644]);socket[_0x32ef('0x9d')](_0x32ef('0x2b')+_[_0x32ef('0x97')](_0x10c38e[_0x32ef('0x3f')][_0x32ef('0x90')][_0x32ef('0x98')]())+_0x32ef('0xa3'),_0x28d85a);}}else{var _0x28d85a={'UserId':Number(_0x10c38e[_0x32ef('0x51')]['id'])};_0x28d85a[_[_0x32ef('0x97')](_0x10c38e['query'][_0x32ef('0x90')][_0x32ef('0x98')]())+_0x32ef('0x9c')]=Number(_0x10c38e[_0x32ef('0x3f')][_0x32ef('0x9b')]);socket[_0x32ef('0x9d')](_0x32ef('0x2b')+_[_0x32ef('0x97')](_0x10c38e[_0x32ef('0x3f')][_0x32ef('0x90')][_0x32ef('0x98')]())+_0x32ef('0xa3'),_0x28d85a);}return _0x286ce3;})[_0x32ef('0x26')](function(){if(_0x10c38e['query'][_0x32ef('0x90')]===_0x32ef('0x9e')){return db[_0x32ef('0xa4')][_0x32ef('0x27')]({'where':{'UserId':_0x10c38e[_0x32ef('0x51')]['id'],'VoiceQueueId':_0x10c38e[_0x32ef('0x3f')][_0x32ef('0x9b')]},'individualHooks':!![]})[_0x32ef('0x26')](function(){return _0x49fef2;});}return _0x49fef2;})[_0x32ef('0x26')](respondWithStatusCode(_0x32fe54,null))[_0x32ef('0x1b')](handleError(_0x32fe54,null));};exports['addAvatar']=function(_0x1d7329,_0x85c779){_0x1d7329[_0x32ef('0x5c')][_0x32ef('0xa5')]=_0x1d7329['file'][_0x32ef('0xa6')];return db[_0x32ef('0x44')]['find']({'where':{'id':_0x1d7329['params']['id']}})['then'](handleEntityNotFound(_0x85c779,null))[_0x32ef('0x26')](saveUpdates(_0x1d7329[_0x32ef('0x5c')],null))[_0x32ef('0x26')](respondWithResult(_0x85c779,null))[_0x32ef('0x1b')](handleError(_0x85c779,null));};exports['getAvatar']=function(_0x5f2996,_0x1fc685){var _0x4f9e0a=path['join'](config[_0x32ef('0xa7')],_0x32ef('0xa8'));return db[_0x32ef('0x44')]['find']({'where':{'id':_0x5f2996['params']['id']},'attributes':['id','userpic'],'raw':!![]})[_0x32ef('0x26')](handleEntityNotFound(_0x1fc685,null))[_0x32ef('0x26')](function(_0x419764){if(_0x419764){if(_[_0x32ef('0x64')](_0x419764[_0x32ef('0xa5')])){return _0x1fc685[_0x32ef('0xa9')](_0x4f9e0a);}else{if(!fs[_0x32ef('0xaa')](path[_0x32ef('0xab')](config[_0x32ef('0xa7')],'server/files/images/',_0x419764['userpic']))){return _0x1fc685['download'](_0x4f9e0a);}return _0x1fc685[_0x32ef('0xa9')](path[_0x32ef('0xab')](config['root'],'server/files/images/',_0x419764[_0x32ef('0xa5')]));}}})['catch'](handleError(_0x1fc685,null));};exports[_0x32ef('0xac')]=function(_0x40e8d7,_0x7f710){return db[_0x32ef('0x44')]['find']({'where':{'id':_0x40e8d7[_0x32ef('0x51')]['id']},'attributes':['id']})[_0x32ef('0x26')](handleEntityNotFound(_0x7f710,null))[_0x32ef('0x26')](function(_0x2e710c){var _0x5f290e=[];values=_0x2e710c[_0x32ef('0x4a')];_0x5f290e[_0x32ef('0x43')](get_open_tabs('chat',_0x2e710c['dataValues']));_0x5f290e[_0x32ef('0x43')](get_open_tabs(_0x32ef('0x4b'),_0x2e710c[_0x32ef('0x4a')]));_0x5f290e[_0x32ef('0x43')](get_open_tabs(_0x32ef('0x4e'),_0x2e710c[_0x32ef('0x4a')]));_0x5f290e[_0x32ef('0x43')](get_open_tabs('whatsapp',_0x2e710c[_0x32ef('0x4a')]));_0x5f290e[_0x32ef('0x43')](get_open_tabs(_0x32ef('0x4c'),_0x2e710c[_0x32ef('0x4a')]));_0x5f290e['push'](get_open_tabs('mail',_0x2e710c[_0x32ef('0x4a')]));return BPromise['all'](_0x5f290e);})[_0x32ef('0x26')](function(_0x62f5c6){var _0x323880=[];if(_0x62f5c6){for(var _0x451621=0x0;_0x451621<values[_0x32ef('0xad')][_0x32ef('0x48')];_0x451621++){var _0x59cd48=values[_0x32ef('0xad')][_0x451621];_0x323880['push']({'channel':_0x32ef('0xae'),'id':_0x59cd48['id'],'createdAt':_0x59cd48['createdAt']});}for(var _0x451621=0x0;_0x451621<values['FaxOpenTabs']['length'];_0x451621++){var _0x59cd48=values[_0x32ef('0xaf')][_0x451621];_0x323880['push']({'channel':_0x32ef('0xb0'),'id':_0x59cd48['id'],'createdAt':_0x59cd48['createdAt']});}for(var _0x451621=0x0;_0x451621<values['OpenchannelOpenTabs'][_0x32ef('0x48')];_0x451621++){var _0x59cd48=values['OpenchannelOpenTabs'][_0x451621];_0x323880[_0x32ef('0x43')]({'channel':'OPENCHANNEL','id':_0x59cd48['id'],'createdAt':_0x59cd48[_0x32ef('0xb1')]});}for(var _0x451621=0x0;_0x451621<values[_0x32ef('0xb2')][_0x32ef('0x48')];_0x451621++){var _0x59cd48=values['MailOpenTabs'][_0x451621];_0x323880[_0x32ef('0x43')]({'channel':_0x32ef('0xb3'),'id':_0x59cd48['id'],'createdAt':_0x59cd48[_0x32ef('0xb1')]});}for(var _0x451621=0x0;_0x451621<values[_0x32ef('0xb4')][_0x32ef('0x48')];_0x451621++){var _0x59cd48=values[_0x32ef('0xb4')][_0x451621];_0x323880['push']({'channel':_0x32ef('0xb5'),'id':_0x59cd48['id'],'createdAt':_0x59cd48['createdAt']});}for(var _0x451621=0x0;_0x451621<values[_0x32ef('0xb6')][_0x32ef('0x48')];_0x451621++){var _0x59cd48=values['WhatsappOpenTabs'][_0x451621];_0x323880[_0x32ef('0x43')]({'channel':_0x32ef('0xb7'),'id':_0x59cd48['id'],'createdAt':_0x59cd48[_0x32ef('0xb1')]});}var _0x10e7cc={'count':_0x323880[_0x32ef('0x48')],'rows':_0x323880};return _0x10e7cc;}else return null;})[_0x32ef('0x26')](respondWithResult(_0x7f710,null))[_0x32ef('0x1b')](handleError(_0x7f710,null));};exports[_0x32ef('0xb8')]=function(_0x73a49e,_0x156348){var _0x169a8e={};var _0x4d0170={};var _0x153792;var _0x530838;return db[_0x32ef('0x44')][_0x32ef('0xb9')]({'where':{'id':_0x73a49e[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x156348,null))[_0x32ef('0x26')](function(_0x14ac0a){if(_0x14ac0a){_0x153792=_0x14ac0a;_0x4d0170[_0x32ef('0x56')]=_[_0x32ef('0x53')](db['CmContact'][_0x32ef('0x37')]);_0x4d0170[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0x73a49e[_0x32ef('0x3f')]);_0x4d0170[_0x32ef('0x54')]=_['intersection'](_0x4d0170[_0x32ef('0x56')],_0x4d0170[_0x32ef('0x3f')]);_0x169a8e[_0x32ef('0x42')]=_['intersection'](_0x4d0170['model'],qs[_0x32ef('0x57')](_0x73a49e['query'][_0x32ef('0x57')]));_0x169a8e['attributes']=_0x169a8e[_0x32ef('0x42')][_0x32ef('0x48')]?_0x169a8e[_0x32ef('0x42')]:_0x4d0170[_0x32ef('0x56')];_0x169a8e[_0x32ef('0xba')]=qs['sort'](_0x73a49e[_0x32ef('0x3f')]['sort']);_0x169a8e['where']=qs['filters'](_[_0x32ef('0xbb')](_0x73a49e[_0x32ef('0x3f')],_0x4d0170[_0x32ef('0x54')]));if(_0x73a49e[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0x169a8e['where']=_[_0x32ef('0x58')](_0x169a8e['where'],{'$or':_[_0x32ef('0x30')](_0x169a8e[_0x32ef('0x42')],function(_0x1f5ffe){var _0x3d438d={};_0x3d438d[_0x1f5ffe]={'$like':'%'+_0x73a49e['query']['filter']+'%'};return _0x3d438d;})});}_0x169a8e=_[_0x32ef('0x58')]({},_0x169a8e,_0x73a49e[_0x32ef('0x59')]);return _0x153792[_0x32ef('0xb8')](_0x169a8e);}})[_0x32ef('0x26')](function(_0x1cbd9a){if(_0x1cbd9a){_0x530838=_0x1cbd9a['length'];if(_0x73a49e['query'][_0x32ef('0xbc')]('includeAll')){_0x169a8e['include']=[{'model':db[_0x32ef('0xbd')],'as':_0x32ef('0xbe'),'required':![]},{'model':db[_0x32ef('0xbf')],'as':_0x32ef('0xc0'),'attributes':['id','name',_0x32ef('0xc1')],'where':_0x73a49e[_0x32ef('0x3f')]['tag']?{'id':_0x73a49e['query']['tag']}:undefined,'required':_0x73a49e[_0x32ef('0x3f')]['tag']?!![]:![]}];}if(!_0x73a49e[_0x32ef('0x3f')]['hasOwnProperty'](_0x32ef('0xc2'))){_0x169a8e[_0x32ef('0x22')]=qs[_0x32ef('0x22')](_0x73a49e[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x169a8e[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0x73a49e[_0x32ef('0x3f')]['offset']);}return _0x153792[_0x32ef('0xb8')](_0x169a8e);}})['then'](function(_0x3cb79f){if(_0x3cb79f){return _0x3cb79f?{'count':_0x530838,'rows':_0x3cb79f}:null;}})[_0x32ef('0x26')](respondWithResult(_0x156348,null))[_0x32ef('0x1b')](handleError(_0x156348,null));};exports['getQueues']=function(_0x1a4c97,_0x3aabc0){var _0x1c75f5;var _0x325145;var _0x4d7f2c={};var _0x17ba0f;return db[_0x32ef('0x44')][_0x32ef('0xb9')]({'where':{'id':_0x1a4c97[_0x32ef('0x51')]['id']},'attributes':['id',_0x32ef('0x33'),'role']})[_0x32ef('0x26')](handleEntityNotFound(_0x3aabc0,null))[_0x32ef('0x26')](function(_0x1aa639){if(!utils[_0x32ef('0x95')](_0x1a4c97['query'][_0x32ef('0x90')])){throw new db['Sequelize'][(_0x32ef('0x85'))](_0x32ef('0xa1'));}_0x1c75f5=_0x1aa639;var _0x4859d2={};_0x4859d2[_0x32ef('0x56')]=_[_0x32ef('0x53')](db[_[_0x32ef('0x97')](_0x1a4c97[_0x32ef('0x3f')][_0x32ef('0x90')])+_0x32ef('0xc3')][_0x32ef('0x37')]);_0x4859d2['query']=_[_0x32ef('0x53')](_0x1a4c97[_0x32ef('0x3f')]);_0x4859d2['filters']=_[_0x32ef('0x55')](_0x4859d2['model'],_0x4859d2['query']);_0x4d7f2c['attributes']=_[_0x32ef('0x55')](_0x4859d2[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0x1a4c97[_0x32ef('0x3f')][_0x32ef('0x57')]));_0x4d7f2c[_0x32ef('0x42')]=_0x4d7f2c[_0x32ef('0x42')][_0x32ef('0x48')]?_0x4d7f2c[_0x32ef('0x42')]:_0x4859d2[_0x32ef('0x56')];_0x4d7f2c['order']=qs['sort'](_0x1a4c97[_0x32ef('0x3f')]['sort']);_0x4d7f2c[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_['pick'](_0x1a4c97['query'],_0x4859d2[_0x32ef('0x54')]));if(_0x1a4c97['query'][_0x32ef('0x2e')]){_0x4d7f2c['where']=_[_0x32ef('0x58')](_0x4d7f2c[_0x32ef('0x3e')],{'$or':_['map'](_0x4d7f2c[_0x32ef('0x42')],function(_0x343b45){var _0x174d59={};_0x174d59[_0x343b45]={'$like':'%'+_0x1a4c97['query'][_0x32ef('0x2e')]+'%'};return _0x174d59;})});}_0x4d7f2c=_[_0x32ef('0x58')]({},_0x4d7f2c,_0x1a4c97['options']);switch(_0x1c75f5[_0x32ef('0x29')]){case _0x32ef('0x2a'):return db[_[_0x32ef('0x97')](_0x1a4c97[_0x32ef('0x3f')]['channel'])+'Queue'][_0x32ef('0x45')](_0x4d7f2c);case _0x32ef('0x2b'):case _0x32ef('0x2c'):return _0x1c75f5['get'+_[_0x32ef('0x97')](_0x1a4c97[_0x32ef('0x3f')][_0x32ef('0x90')])+'Queues'](_0x4d7f2c);default:throw new db[(_0x32ef('0x87'))][(_0x32ef('0x85'))](_0x32ef('0xc4'));}})[_0x32ef('0x26')](function(_0x5d2302){_0x17ba0f=_0x5d2302[_0x32ef('0x48')];if(!_0x1a4c97[_0x32ef('0x3f')][_0x32ef('0xbc')](_0x32ef('0xc2'))){_0x4d7f2c[_0x32ef('0x22')]=qs['limit'](_0x1a4c97[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x4d7f2c['offset']=qs[_0x32ef('0x1f')](_0x1a4c97[_0x32ef('0x3f')][_0x32ef('0x1f')]);}switch(_0x1c75f5[_0x32ef('0x29')]){case _0x32ef('0x2a'):return db[_[_0x32ef('0x97')](_0x1a4c97[_0x32ef('0x3f')][_0x32ef('0x90')])+_0x32ef('0xc3')][_0x32ef('0x45')](_0x4d7f2c);case _0x32ef('0x2b'):case _0x32ef('0x2c'):return _0x1c75f5[_0x32ef('0x28')+_[_0x32ef('0x97')](_0x1a4c97[_0x32ef('0x3f')][_0x32ef('0x90')])+_0x32ef('0xc5')](_0x4d7f2c);}})[_0x32ef('0x26')](function(_0x110b02){return{'count':_0x17ba0f,'rows':_0x110b02};})['then'](respondWithResult(_0x3aabc0,null))['catch'](handleError(_0x3aabc0,null));};exports[_0x32ef('0xc6')]=function(_0x137bbb,_0x73f701){var _0x2366bd={};var _0x355ade={};var _0x11b170;var _0x49b902;return db['User'][_0x32ef('0xb9')]({'where':{'id':_0x137bbb['params']['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x73f701,null))[_0x32ef('0x26')](function(_0x1696cc){if(_0x1696cc){_0x11b170=_0x1696cc;_0x355ade['model']=_[_0x32ef('0x53')](db[_0x32ef('0xa4')][_0x32ef('0x37')]);_0x355ade['query']=_[_0x32ef('0x53')](_0x137bbb['query']);_0x355ade[_0x32ef('0x54')]=_[_0x32ef('0x55')](_0x355ade['model'],_0x355ade['query']);_0x2366bd[_0x32ef('0x42')]=_[_0x32ef('0x55')](_0x355ade['model'],qs[_0x32ef('0x57')](_0x137bbb['query'][_0x32ef('0x57')]));_0x2366bd['attributes']=_0x2366bd[_0x32ef('0x42')]['length']?_0x2366bd[_0x32ef('0x42')]:_0x355ade[_0x32ef('0x56')];_0x2366bd[_0x32ef('0xba')]=qs['sort'](_0x137bbb[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0x2366bd[_0x32ef('0x3e')]=qs['filters'](_[_0x32ef('0xbb')](_0x137bbb['query'],_0x355ade[_0x32ef('0x54')]));if(_0x137bbb[_0x32ef('0x3f')]['filter']){_0x2366bd[_0x32ef('0x3e')]=_['merge'](_0x2366bd[_0x32ef('0x3e')],{'$or':_[_0x32ef('0x30')](_0x2366bd[_0x32ef('0x42')],function(_0x3af410){var _0x742a55={};_0x742a55[_0x3af410]={'$like':'%'+_0x137bbb[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'};return _0x742a55;})});}_0x2366bd=_['merge']({},_0x2366bd,_0x137bbb[_0x32ef('0x59')]);return _0x11b170['getVoiceQueuesRt'](_0x2366bd);}})['then'](function(_0x4740d7){if(_0x4740d7){_0x49b902=_0x4740d7[_0x32ef('0x48')];if(!_0x137bbb[_0x32ef('0x3f')][_0x32ef('0xbc')](_0x32ef('0xc2'))){_0x2366bd['limit']=qs[_0x32ef('0x22')](_0x137bbb[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x2366bd[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0x137bbb[_0x32ef('0x3f')][_0x32ef('0x1f')]);}return _0x11b170[_0x32ef('0xc6')](_0x2366bd);}})[_0x32ef('0x26')](function(_0x3417c7){if(_0x3417c7){return _0x3417c7?{'count':_0x49b902,'rows':_0x3417c7}:null;}})[_0x32ef('0x26')](respondWithResult(_0x73f701,null))[_0x32ef('0x1b')](handleError(_0x73f701,null));};exports[_0x32ef('0xc8')]=function(_0xfcb193,_0x473a71){var _0x2aff00={};var _0x349dfa={};var _0x222b78;var _0x45b0d8;return db['User'][_0x32ef('0xb9')]({'where':{'id':_0xfcb193[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x473a71,null))[_0x32ef('0x26')](function(_0x471eec){if(_0x471eec){_0x222b78=_0x471eec;_0x349dfa['model']=_['keys'](db[_0x32ef('0xc9')][_0x32ef('0x37')]);_0x349dfa[_0x32ef('0x3f')]=_['keys'](_0xfcb193[_0x32ef('0x3f')]);_0x349dfa[_0x32ef('0x54')]=_[_0x32ef('0x55')](_0x349dfa[_0x32ef('0x56')],_0x349dfa[_0x32ef('0x3f')]);_0x2aff00[_0x32ef('0x42')]=_[_0x32ef('0x55')](_0x349dfa[_0x32ef('0x56')],qs['fields'](_0xfcb193[_0x32ef('0x3f')][_0x32ef('0x57')]));_0x2aff00['attributes']=_0x2aff00[_0x32ef('0x42')][_0x32ef('0x48')]?_0x2aff00[_0x32ef('0x42')]:_0x349dfa['model'];_0x2aff00['order']=qs[_0x32ef('0xc7')](_0xfcb193[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0x2aff00[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0xfcb193['query'],_0x349dfa[_0x32ef('0x54')]));if(_0xfcb193[_0x32ef('0x3f')]['filter']){_0x2aff00[_0x32ef('0x3e')]=_['merge'](_0x2aff00[_0x32ef('0x3e')],{'$or':_[_0x32ef('0x30')](_0x2aff00[_0x32ef('0x42')],function(_0x999f55){var _0x527c1f={};_0x527c1f[_0x999f55]={'$like':'%'+_0xfcb193[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'};return _0x527c1f;})});}_0x2aff00=_[_0x32ef('0x58')]({},_0x2aff00,_0xfcb193['options']);return _0x222b78[_0x32ef('0xc8')](_0x2aff00);}})[_0x32ef('0x26')](function(_0x1852a1){if(_0x1852a1){_0x45b0d8=_0x1852a1['length'];if(!_0xfcb193[_0x32ef('0x3f')][_0x32ef('0xbc')](_0x32ef('0xc2'))){_0x2aff00['limit']=qs[_0x32ef('0x22')](_0xfcb193[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x2aff00[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0xfcb193[_0x32ef('0x3f')][_0x32ef('0x1f')]);}return _0x222b78['getGroups'](_0x2aff00);}})['then'](function(_0x25cebb){if(_0x25cebb){return _0x25cebb?{'count':_0x45b0d8,'rows':_0x25cebb}:null;}})[_0x32ef('0x26')](respondWithResult(_0x473a71,null))[_0x32ef('0x1b')](handleError(_0x473a71,null));};exports[_0x32ef('0xca')]=function(_0x30bbcb,_0x1db5d9){var _0x1c2a7d={'raw':!![],'where':{}};var _0x28810e={};var _0x2ab371={'count':0x0,'rows':[]};return db['User'][_0x32ef('0xb9')]({'where':{'id':_0x30bbcb[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x1db5d9,null))['then'](function(_0x5dd234){if(_0x5dd234){_0x28810e[_0x32ef('0x56')]=_['keys'](db['VoiceRecording'][_0x32ef('0x37')]);_0x28810e['query']=_[_0x32ef('0x53')](_0x30bbcb['query']);_0x28810e[_0x32ef('0x54')]=_[_0x32ef('0x55')](_0x28810e['model'],_0x28810e[_0x32ef('0x3f')]);_0x1c2a7d[_0x32ef('0x42')]=_['intersection'](_0x28810e[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0x30bbcb[_0x32ef('0x3f')]['fields']));_0x1c2a7d['attributes']=_0x1c2a7d[_0x32ef('0x42')][_0x32ef('0x48')]?_0x1c2a7d[_0x32ef('0x42')]:_0x28810e[_0x32ef('0x56')];if(!_0x30bbcb[_0x32ef('0x3f')]['hasOwnProperty'](_0x32ef('0xc2'))){_0x1c2a7d[_0x32ef('0x22')]=qs['limit'](_0x30bbcb[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x1c2a7d[_0x32ef('0x1f')]=qs['offset'](_0x30bbcb[_0x32ef('0x3f')][_0x32ef('0x1f')]);}_0x1c2a7d[_0x32ef('0xba')]=qs['sort'](_0x30bbcb[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0x1c2a7d[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0x30bbcb[_0x32ef('0x3f')],_0x28810e[_0x32ef('0x54')]));_0x1c2a7d[_0x32ef('0x3e')][_0x32ef('0xcb')]=_0x5dd234['id'];if(_0x30bbcb[_0x32ef('0x3f')]['filter']){_0x1c2a7d[_0x32ef('0x3e')]=_['merge'](_0x1c2a7d['where'],{'$or':_['map'](_0x1c2a7d[_0x32ef('0x42')],function(_0xe882e4){var _0x10ed11={};_0x10ed11[_0xe882e4]={'$like':'%'+_0x30bbcb[_0x32ef('0x3f')]['filter']+'%'};return _0x10ed11;})});}_0x1c2a7d=_[_0x32ef('0x58')]({},_0x1c2a7d,_0x30bbcb[_0x32ef('0x59')]);return db[_0x32ef('0xcc')]['count']({'where':_0x1c2a7d[_0x32ef('0x3e')]})[_0x32ef('0x26')](function(_0x2c3840){_0x2ab371[_0x32ef('0x21')]=_0x2c3840;if(_0x30bbcb[_0x32ef('0x3f')]['includeAll']){_0x1c2a7d['include']=[{'all':!![]}];}return db[_0x32ef('0xcc')][_0x32ef('0x45')](_0x1c2a7d);})[_0x32ef('0x26')](function(_0x2afe9f){_0x2ab371[_0x32ef('0x46')]=_0x2afe9f;return _0x2ab371;});}})['then'](respondWithFilteredResult(_0x1db5d9,_0x1c2a7d))[_0x32ef('0x1b')](handleError(_0x1db5d9,null));};exports[_0x32ef('0xcd')]=function(_0xd9aeec,_0x1e09c6){var _0x527af9={'raw':!![],'where':{}};var _0x1b610c={};var _0x5b09a9={'count':0x0,'rows':[]};return db[_0x32ef('0x44')][_0x32ef('0xb9')]({'where':{'id':_0xd9aeec[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x1e09c6,null))[_0x32ef('0x26')](function(_0x178332){if(_0x178332){_0x1b610c[_0x32ef('0x56')]=_[_0x32ef('0x53')](db['ScreenRecording'][_0x32ef('0x37')]);_0x1b610c[_0x32ef('0x3f')]=_['keys'](_0xd9aeec[_0x32ef('0x3f')]);_0x1b610c[_0x32ef('0x54')]=_['intersection'](_0x1b610c[_0x32ef('0x56')],_0x1b610c[_0x32ef('0x3f')]);_0x527af9[_0x32ef('0x42')]=_[_0x32ef('0x55')](_0x1b610c[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0xd9aeec['query'][_0x32ef('0x57')]));_0x527af9[_0x32ef('0x42')]=_0x527af9[_0x32ef('0x42')][_0x32ef('0x48')]?_0x527af9[_0x32ef('0x42')]:_0x1b610c[_0x32ef('0x56')];if(!_0xd9aeec[_0x32ef('0x3f')]['hasOwnProperty'](_0x32ef('0xc2'))){_0x527af9[_0x32ef('0x22')]=qs['limit'](_0xd9aeec[_0x32ef('0x3f')]['limit']);_0x527af9[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0xd9aeec['query'][_0x32ef('0x1f')]);}_0x527af9[_0x32ef('0xba')]=qs[_0x32ef('0xc7')](_0xd9aeec[_0x32ef('0x3f')]['sort']);_0x527af9[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0xd9aeec[_0x32ef('0x3f')],_0x1b610c['filters']));_0x527af9['where']['UserId']=_0x178332['id'];if(_0xd9aeec[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0x527af9['where']=_[_0x32ef('0x58')](_0x527af9['where'],{'$or':_[_0x32ef('0x30')](_0x527af9[_0x32ef('0x42')],function(_0x5302bc){var _0x1a00e5={};_0x1a00e5[_0x5302bc]={'$like':'%'+_0xd9aeec[_0x32ef('0x3f')]['filter']+'%'};return _0x1a00e5;})});}_0x527af9=_[_0x32ef('0x58')]({},_0x527af9,_0xd9aeec[_0x32ef('0x59')]);return db[_0x32ef('0xce')][_0x32ef('0x21')]({'where':_0x527af9[_0x32ef('0x3e')]})[_0x32ef('0x26')](function(_0x42c888){_0x5b09a9['count']=_0x42c888;if(_0xd9aeec['query'][_0x32ef('0x40')]){_0x527af9[_0x32ef('0x41')]=[{'all':!![]}];}return db[_0x32ef('0xce')][_0x32ef('0x45')](_0x527af9);})['then'](function(_0x46158b){_0x5b09a9[_0x32ef('0x46')]=_0x46158b;return _0x5b09a9;});}})[_0x32ef('0x26')](respondWithFilteredResult(_0x1e09c6,_0x527af9))[_0x32ef('0x1b')](handleError(_0x1e09c6,null));};exports['getChatInteractions']=function(_0x36383e,_0x1e5158){var _0x5c75a9={};var _0x988d97={};var _0x13c687;var _0x51af64;return db[_0x32ef('0x44')]['findOne']({'where':{'id':_0x36383e[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x1e5158,null))[_0x32ef('0x26')](function(_0x1c85f5){if(_0x1c85f5){_0x13c687=_0x1c85f5;_0x988d97[_0x32ef('0x56')]=_[_0x32ef('0x53')](db[_0x32ef('0xcf')][_0x32ef('0x37')]);_0x988d97[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0x36383e['query']);_0x988d97['filters']=_[_0x32ef('0x55')](_0x988d97[_0x32ef('0x56')],_0x988d97[_0x32ef('0x3f')]);_0x5c75a9[_0x32ef('0x42')]=_['intersection'](_0x988d97[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0x36383e['query'][_0x32ef('0x57')]));_0x5c75a9[_0x32ef('0x42')]=_0x5c75a9['attributes']['length']?_0x5c75a9[_0x32ef('0x42')]:_0x988d97['model'];_0x5c75a9[_0x32ef('0xba')]=qs[_0x32ef('0xc7')](_0x36383e['query'][_0x32ef('0xc7')]);_0x5c75a9['where']=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0x36383e[_0x32ef('0x3f')],_0x988d97[_0x32ef('0x54')]));if(_0x36383e[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0x5c75a9[_0x32ef('0x3e')]=_['merge'](_0x5c75a9[_0x32ef('0x3e')],{'$or':_[_0x32ef('0x30')](_0x5c75a9[_0x32ef('0x42')],function(_0x526bae){var _0x419a1c={};_0x419a1c[_0x526bae]={'$like':'%'+_0x36383e[_0x32ef('0x3f')]['filter']+'%'};return _0x419a1c;})});}_0x5c75a9=_[_0x32ef('0x58')]({},_0x5c75a9,_0x36383e[_0x32ef('0x59')]);return _0x13c687[_0x32ef('0xd0')](_0x5c75a9);}})[_0x32ef('0x26')](function(_0x1a6383){if(_0x1a6383){_0x51af64=_0x1a6383[_0x32ef('0x48')];if(!_0x36383e[_0x32ef('0x3f')][_0x32ef('0xbc')]('nolimit')){_0x5c75a9['limit']=qs['limit'](_0x36383e[_0x32ef('0x3f')]['limit']);_0x5c75a9['offset']=qs[_0x32ef('0x1f')](_0x36383e[_0x32ef('0x3f')][_0x32ef('0x1f')]);}return _0x13c687['getChatInteractions'](_0x5c75a9);}})[_0x32ef('0x26')](function(_0xfef1dd){if(_0xfef1dd){return _0xfef1dd?{'count':_0x51af64,'rows':_0xfef1dd}:null;}})[_0x32ef('0x26')](respondWithResult(_0x1e5158,null))[_0x32ef('0x1b')](handleError(_0x1e5158,null));};exports[_0x32ef('0xd1')]=function(_0x3aa395,_0x1e4429){var _0x3bff97={};var _0x2399fd={};var _0x184f20;var _0x2c1ee9;return db[_0x32ef('0x44')]['findOne']({'where':{'id':_0x3aa395[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x1e4429,null))['then'](function(_0x498fe4){if(_0x498fe4){_0x184f20=_0x498fe4;_0x2399fd['model']=_[_0x32ef('0x53')](db[_0x32ef('0xd2')]['rawAttributes']);_0x2399fd['query']=_[_0x32ef('0x53')](_0x3aa395[_0x32ef('0x3f')]);_0x2399fd['filters']=_[_0x32ef('0x55')](_0x2399fd[_0x32ef('0x56')],_0x2399fd['query']);_0x3bff97[_0x32ef('0x42')]=_[_0x32ef('0x55')](_0x2399fd['model'],qs[_0x32ef('0x57')](_0x3aa395['query'][_0x32ef('0x57')]));_0x3bff97[_0x32ef('0x42')]=_0x3bff97['attributes'][_0x32ef('0x48')]?_0x3bff97[_0x32ef('0x42')]:_0x2399fd[_0x32ef('0x56')];_0x3bff97[_0x32ef('0xba')]=qs[_0x32ef('0xc7')](_0x3aa395['query'][_0x32ef('0xc7')]);_0x3bff97['where']=qs[_0x32ef('0x54')](_['pick'](_0x3aa395[_0x32ef('0x3f')],_0x2399fd[_0x32ef('0x54')]));if(_0x3aa395[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0x3bff97['where']=_[_0x32ef('0x58')](_0x3bff97[_0x32ef('0x3e')],{'$or':_['map'](_0x3bff97[_0x32ef('0x42')],function(_0x308846){var _0x223005={};_0x223005[_0x308846]={'$like':'%'+_0x3aa395[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'};return _0x223005;})});}_0x3bff97=_[_0x32ef('0x58')]({},_0x3bff97,_0x3aa395[_0x32ef('0x59')]);return _0x184f20[_0x32ef('0xd1')](_0x3bff97);}})[_0x32ef('0x26')](function(_0x51412c){if(_0x51412c){_0x2c1ee9=_0x51412c[_0x32ef('0x48')];if(!_0x3aa395['query'][_0x32ef('0xbc')](_0x32ef('0xc2'))){_0x3bff97[_0x32ef('0x22')]=qs[_0x32ef('0x22')](_0x3aa395[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x3bff97[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0x3aa395[_0x32ef('0x3f')][_0x32ef('0x1f')]);}return _0x184f20[_0x32ef('0xd1')](_0x3bff97);}})[_0x32ef('0x26')](function(_0x106b36){if(_0x106b36){return _0x106b36?{'count':_0x2c1ee9,'rows':_0x106b36}:null;}})[_0x32ef('0x26')](respondWithResult(_0x1e4429,null))[_0x32ef('0x1b')](handleError(_0x1e4429,null));};exports[_0x32ef('0xd3')]=function(_0x41ef2f,_0x14722b){var _0xe8cc75={'raw':!![],'where':{}};var _0x4fa93c={};var _0x3cbf57={'count':0x0,'rows':[]};return db['User'][_0x32ef('0xb9')]({'where':{'id':_0x41ef2f[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x14722b,null))[_0x32ef('0x26')](function(_0x474293){if(_0x474293){_0x4fa93c[_0x32ef('0x56')]=_[_0x32ef('0x53')](db[_0x32ef('0xd4')][_0x32ef('0x37')]);_0x4fa93c[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0x41ef2f[_0x32ef('0x3f')]);_0x4fa93c['filters']=_[_0x32ef('0x55')](_0x4fa93c[_0x32ef('0x56')],_0x4fa93c[_0x32ef('0x3f')]);_0xe8cc75['attributes']=_[_0x32ef('0x55')](_0x4fa93c['model'],qs['fields'](_0x41ef2f[_0x32ef('0x3f')]['fields']));_0xe8cc75['attributes']=_0xe8cc75[_0x32ef('0x42')][_0x32ef('0x48')]?_0xe8cc75[_0x32ef('0x42')]:_0x4fa93c[_0x32ef('0x56')];if(!_0x41ef2f[_0x32ef('0x3f')][_0x32ef('0xbc')](_0x32ef('0xc2'))){_0xe8cc75[_0x32ef('0x22')]=qs[_0x32ef('0x22')](_0x41ef2f[_0x32ef('0x3f')][_0x32ef('0x22')]);_0xe8cc75[_0x32ef('0x1f')]=qs['offset'](_0x41ef2f[_0x32ef('0x3f')]['offset']);}_0xe8cc75[_0x32ef('0xba')]=qs[_0x32ef('0xc7')](_0x41ef2f[_0x32ef('0x3f')]['sort']);_0xe8cc75[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0x41ef2f[_0x32ef('0x3f')],_0x4fa93c[_0x32ef('0x54')]));_0xe8cc75[_0x32ef('0x3e')][_0x32ef('0xcb')]=_0x474293['id'];if(_0x41ef2f[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0xe8cc75[_0x32ef('0x3e')]=_[_0x32ef('0x58')](_0xe8cc75[_0x32ef('0x3e')],{'$or':_[_0x32ef('0x30')](_0xe8cc75[_0x32ef('0x42')],function(_0x18ed75){var _0xb61d95={};_0xb61d95[_0x18ed75]={'$like':'%'+_0x41ef2f[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'};return _0xb61d95;})});}_0xe8cc75=_[_0x32ef('0x58')]({},_0xe8cc75,_0x41ef2f[_0x32ef('0x59')]);return db['MailInteraction'][_0x32ef('0x21')]({'where':_0xe8cc75['where']})[_0x32ef('0x26')](function(_0x15c6a1){_0x3cbf57['count']=_0x15c6a1;if(_0x41ef2f[_0x32ef('0x3f')][_0x32ef('0x40')]){_0xe8cc75[_0x32ef('0x41')]=[{'all':!![]}];}return db[_0x32ef('0xd4')][_0x32ef('0x45')](_0xe8cc75);})[_0x32ef('0x26')](function(_0x5db712){_0x3cbf57['rows']=_0x5db712;return _0x3cbf57;});}})[_0x32ef('0x26')](respondWithFilteredResult(_0x14722b,_0xe8cc75))[_0x32ef('0x1b')](handleError(_0x14722b,null));};exports[_0x32ef('0xd5')]=function(_0x320c91,_0x113c1e){var _0x24b594={};var _0x1c546c={};var _0x1ff32e;var _0x41cb8c;return db['User'][_0x32ef('0xb9')]({'where':{'id':_0x320c91[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x113c1e,null))[_0x32ef('0x26')](function(_0xf22d14){if(_0xf22d14){_0x1ff32e=_0xf22d14;_0x1c546c[_0x32ef('0x56')]=_[_0x32ef('0x53')](db[_0x32ef('0xd6')]['rawAttributes']);_0x1c546c[_0x32ef('0x3f')]=_['keys'](_0x320c91[_0x32ef('0x3f')]);_0x1c546c[_0x32ef('0x54')]=_['intersection'](_0x1c546c['model'],_0x1c546c['query']);_0x24b594[_0x32ef('0x42')]=_[_0x32ef('0x55')](_0x1c546c['model'],qs[_0x32ef('0x57')](_0x320c91[_0x32ef('0x3f')][_0x32ef('0x57')]));_0x24b594[_0x32ef('0x42')]=_0x24b594[_0x32ef('0x42')]['length']?_0x24b594[_0x32ef('0x42')]:_0x1c546c['model'];_0x24b594[_0x32ef('0xba')]=qs[_0x32ef('0xc7')](_0x320c91[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0x24b594[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_['pick'](_0x320c91[_0x32ef('0x3f')],_0x1c546c[_0x32ef('0x54')]));if(_0x320c91['query'][_0x32ef('0x2e')]){_0x24b594[_0x32ef('0x3e')]=_[_0x32ef('0x58')](_0x24b594[_0x32ef('0x3e')],{'$or':_[_0x32ef('0x30')](_0x24b594[_0x32ef('0x42')],function(_0x1a92a2){var _0x1180e4={};_0x1180e4[_0x1a92a2]={'$like':'%'+_0x320c91[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'};return _0x1180e4;})});}_0x24b594=_['merge']({},_0x24b594,_0x320c91[_0x32ef('0x59')]);return _0x1ff32e['getSmsInteractions'](_0x24b594);}})[_0x32ef('0x26')](function(_0x4f7208){if(_0x4f7208){_0x41cb8c=_0x4f7208['length'];if(!_0x320c91[_0x32ef('0x3f')][_0x32ef('0xbc')](_0x32ef('0xc2'))){_0x24b594[_0x32ef('0x22')]=qs[_0x32ef('0x22')](_0x320c91[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x24b594[_0x32ef('0x1f')]=qs['offset'](_0x320c91[_0x32ef('0x3f')][_0x32ef('0x1f')]);}return _0x1ff32e['getSmsInteractions'](_0x24b594);}})[_0x32ef('0x26')](function(_0x1b0319){if(_0x1b0319){return _0x1b0319?{'count':_0x41cb8c,'rows':_0x1b0319}:null;}})['then'](respondWithResult(_0x113c1e,null))[_0x32ef('0x1b')](handleError(_0x113c1e,null));};exports[_0x32ef('0xd7')]=function(_0x364ca1,_0x5761ff){var _0x1cb7c9={};var _0x29f49c={};var _0x31a8c2;var _0x30c799;return db['User']['findOne']({'where':{'id':_0x364ca1[_0x32ef('0x51')]['id']}})['then'](handleEntityNotFound(_0x5761ff,null))[_0x32ef('0x26')](function(_0x3f9e45){if(_0x3f9e45){_0x31a8c2=_0x3f9e45;_0x29f49c['model']=_[_0x32ef('0x53')](db[_0x32ef('0xd8')][_0x32ef('0x37')]);_0x29f49c[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0x364ca1[_0x32ef('0x3f')]);_0x29f49c['filters']=_[_0x32ef('0x55')](_0x29f49c['model'],_0x29f49c[_0x32ef('0x3f')]);_0x1cb7c9[_0x32ef('0x42')]=_[_0x32ef('0x55')](_0x29f49c[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0x364ca1[_0x32ef('0x3f')][_0x32ef('0x57')]));_0x1cb7c9[_0x32ef('0x42')]=_0x1cb7c9[_0x32ef('0x42')][_0x32ef('0x48')]?_0x1cb7c9[_0x32ef('0x42')]:_0x29f49c['model'];_0x1cb7c9[_0x32ef('0xba')]=qs[_0x32ef('0xc7')](_0x364ca1[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0x1cb7c9['where']=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0x364ca1[_0x32ef('0x3f')],_0x29f49c[_0x32ef('0x54')]));if(_0x364ca1['query'][_0x32ef('0x2e')]){_0x1cb7c9[_0x32ef('0x3e')]=_[_0x32ef('0x58')](_0x1cb7c9['where'],{'$or':_[_0x32ef('0x30')](_0x1cb7c9[_0x32ef('0x42')],function(_0x2751dd){var _0x277860={};_0x277860[_0x2751dd]={'$like':'%'+_0x364ca1[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'};return _0x277860;})});}_0x1cb7c9=_[_0x32ef('0x58')]({},_0x1cb7c9,_0x364ca1['options']);return _0x31a8c2[_0x32ef('0xd7')](_0x1cb7c9);}})['then'](function(_0x5f1c7c){if(_0x5f1c7c){_0x30c799=_0x5f1c7c[_0x32ef('0x48')];if(!_0x364ca1[_0x32ef('0x3f')][_0x32ef('0xbc')]('nolimit')){_0x1cb7c9[_0x32ef('0x22')]=qs[_0x32ef('0x22')](_0x364ca1['query'][_0x32ef('0x22')]);_0x1cb7c9[_0x32ef('0x1f')]=qs['offset'](_0x364ca1[_0x32ef('0x3f')]['offset']);}return _0x31a8c2[_0x32ef('0xd7')](_0x1cb7c9);}})[_0x32ef('0x26')](function(_0x52da88){if(_0x52da88){return _0x52da88?{'count':_0x30c799,'rows':_0x52da88}:null;}})[_0x32ef('0x26')](respondWithResult(_0x5761ff,null))[_0x32ef('0x1b')](handleError(_0x5761ff,null));};exports[_0x32ef('0xd9')]=function(_0x12262a,_0x280791){var _0x56a76c={};var _0x218858={};var _0x5e26d9;var _0x1b274e;return db[_0x32ef('0x44')]['findOne']({'where':{'id':_0x12262a['params']['id']}})['then'](handleEntityNotFound(_0x280791,null))[_0x32ef('0x26')](function(_0xc538a5){if(_0xc538a5){_0x5e26d9=_0xc538a5;_0x218858[_0x32ef('0x56')]=_[_0x32ef('0x53')](db['WhatsappInteraction'][_0x32ef('0x37')]);_0x218858[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0x12262a[_0x32ef('0x3f')]);_0x218858[_0x32ef('0x54')]=_[_0x32ef('0x55')](_0x218858[_0x32ef('0x56')],_0x218858['query']);_0x56a76c[_0x32ef('0x42')]=_['intersection'](_0x218858[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0x12262a[_0x32ef('0x3f')]['fields']));_0x56a76c['attributes']=_0x56a76c[_0x32ef('0x42')][_0x32ef('0x48')]?_0x56a76c[_0x32ef('0x42')]:_0x218858[_0x32ef('0x56')];_0x56a76c[_0x32ef('0xba')]=qs['sort'](_0x12262a[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0x56a76c[_0x32ef('0x3e')]=qs['filters'](_['pick'](_0x12262a[_0x32ef('0x3f')],_0x218858[_0x32ef('0x54')]));if(_0x12262a[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0x56a76c[_0x32ef('0x3e')]=_['merge'](_0x56a76c['where'],{'$or':_[_0x32ef('0x30')](_0x56a76c['attributes'],function(_0x5d0c73){var _0x4ee148={};_0x4ee148[_0x5d0c73]={'$like':'%'+_0x12262a[_0x32ef('0x3f')]['filter']+'%'};return _0x4ee148;})});}_0x56a76c=_[_0x32ef('0x58')]({},_0x56a76c,_0x12262a['options']);return _0x5e26d9[_0x32ef('0xd9')](_0x56a76c);}})['then'](function(_0x415a15){if(_0x415a15){_0x1b274e=_0x415a15[_0x32ef('0x48')];if(!_0x12262a['query'][_0x32ef('0xbc')](_0x32ef('0xc2'))){_0x56a76c[_0x32ef('0x22')]=qs[_0x32ef('0x22')](_0x12262a[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x56a76c['offset']=qs[_0x32ef('0x1f')](_0x12262a[_0x32ef('0x3f')][_0x32ef('0x1f')]);}return _0x5e26d9[_0x32ef('0xd9')](_0x56a76c);}})[_0x32ef('0x26')](function(_0x120371){if(_0x120371){return _0x120371?{'count':_0x1b274e,'rows':_0x120371}:null;}})[_0x32ef('0x26')](respondWithResult(_0x280791,null))[_0x32ef('0x1b')](handleError(_0x280791,null));};exports['login']=function(_0x3169e4,_0x2931a9,_0xeef05a){var _0x3bbae5;var _0x139d53;var _0x281ede;var _0x48a855=!_['isNil'](_0x3169e4[_0x32ef('0x51')]['id'])?_0x3169e4[_0x32ef('0x51')]['id']:!_[_0x32ef('0x64')](_0x3169e4[_0x32ef('0x2b')]['id'])?_0x3169e4[_0x32ef('0x2b')]['id']:null;return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x48a855,'role':{'$or':['admin',_0x32ef('0x2b'),'agent']}},'attributes':['id',_0x32ef('0x33'),_0x32ef('0xda'),_0x32ef('0xdb'),_0x32ef('0x29'),_0x32ef('0x5f'),'loginInPause']})[_0x32ef('0x26')](function(_0x5ef29b){if(_0x5ef29b){if(_0x5ef29b[_0x32ef('0x29')]===_0x32ef('0x2c')){_0x3bbae5=_0x5ef29b;if(_0x3169e4[_0x32ef('0x5c')][_0x32ef('0x94')]){_0x281ede=util[_0x32ef('0xdc')](_0x32ef('0xdd'),_0x3bbae5[_0x3169e4[_0x32ef('0x5c')][_0x32ef('0x94')]]);}else if(_0x3169e4[_0x32ef('0x5c')][_0x32ef('0xde')]){_0x281ede=util[_0x32ef('0xdc')](_0x32ef('0x9f'),_0x3169e4['body']['intrf']);}else{_0x281ede=util[_0x32ef('0xdc')](_0x32ef('0x9f'),_0x3bbae5[_0x32ef('0x33')]);}socket['to'](util[_0x32ef('0xdc')](_0x32ef('0xdf'),_0x3bbae5['name']))[_0x32ef('0x9d')]('user:forcelogout',{'user':{'id':_0x3bbae5['id'],'name':_0x3bbae5['name']},'ip':_0x3169e4[_0x32ef('0xe0')][_0x32ef('0xe1')]||_0x3169e4[_0x32ef('0xe2')][_0x32ef('0xe3')]||_0x3169e4[_0x32ef('0xe4')]['remoteAddress']||_0x3169e4[_0x32ef('0xe2')][_0x32ef('0xe4')][_0x32ef('0xe3')]});return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x3bbae5['name']},'individualHooks':!![]});}}else{throw new db[(_0x32ef('0x87'))][(_0x32ef('0x85'))](_0x32ef('0xe5'));}})[_0x32ef('0x26')](function(){if(_0x3bbae5){return _0x3bbae5[_0x32ef('0xe6')]({'raw':!![]});}})['then'](function(_0x3f6df6){if(_0x3bbae5){var _0x105e9e=[];if(_0x3f6df6){_0x139d53=_0x3f6df6;if(_0x139d53[_0x32ef('0x48')]){for(var _0x4b7d7d=0x0;_0x4b7d7d<_0x139d53[_0x32ef('0x48')];_0x4b7d7d++){_0x105e9e['push']({'membername':_0x3bbae5[_0x32ef('0x33')],'UserId':_0x3bbae5['id'],'queue_name':_0x139d53[_0x4b7d7d][_0x32ef('0x33')],'VoiceQueueId':_0x139d53[_0x4b7d7d]['id'],'interface':_0x281ede,'paused':_0x3bbae5[_0x32ef('0x92')]||![],'penalty':_0x139d53[_0x4b7d7d][_0x32ef('0xe7')]||0x0});}return BPromise[_0x32ef('0x7e')](_0x105e9e,function(_0x532bb4){return db[_0x32ef('0xa4')][_0x32ef('0xa0')](_0x532bb4);});}}}})[_0x32ef('0x26')](function(){if(_0x3bbae5){return db[_0x32ef('0xe8')]['findAll']({'where':{'membername':_0x3bbae5[_0x32ef('0x33')],'exitAt':null}});}})[_0x32ef('0x26')](function(_0x1859b5){if(_0x3bbae5){var _0x15a427=[];_0x1859b5[_0x32ef('0xe9')](function(_0x2187cc){_0x15a427[_0x32ef('0x43')](_0x2187cc[_0x32ef('0x25')]({'exitAt':moment()[_0x32ef('0xdc')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x32ef('0x4f')](_0x15a427);}})[_0x32ef('0x26')](function(){if(_0x3bbae5){var _0x2a0918=[];var _0x24918d=[];var _0x219042=utils['getChannels']();var _0x3ff669={'membername':_0x3bbae5[_0x32ef('0x33')],'interface':_0x281ede,'enterAt':moment()['format'](_0x32ef('0xea')),'role':_0x3bbae5[_0x32ef('0x29')],'internal':_0x3bbae5[_0x32ef('0x5f')]};_0x219042[_0x32ef('0xe9')](function(_0x3f69ca){_0x2a0918[_0x32ef('0x43')](_[_0x32ef('0x58')]({'channel':_0x3f69ca,'type':'LOGIN','data1':_0x3169e4[_0x32ef('0x5c')][_0x32ef('0xeb')],'data2':_0x281ede},_0x3ff669));if(_0x3bbae5[_0x32ef('0x92')]){_0x24918d[_0x32ef('0x43')](_['merge']({'channel':_0x3f69ca,'type':'PAUSE','data1':_0x32ef('0xec')},_0x3ff669));}});return db[_0x32ef('0xe8')][_0x32ef('0x7c')](_0x2a0918[_0x32ef('0xed')](_0x24918d),{'individualHooks':!![]});}})[_0x32ef('0x26')](function(){if(_0x3bbae5){return _0x3bbae5['update']({'online':!![],'lastLoginAt':moment()['format'](_0x32ef('0xea')),'voicePause':_0x3bbae5[_0x32ef('0x92')]||![],'mailPause':_0x3bbae5[_0x32ef('0x92')]||![],'chatPause':_0x3bbae5[_0x32ef('0x92')]||![],'faxPause':_0x3bbae5[_0x32ef('0x92')]||![],'smsPause':_0x3bbae5[_0x32ef('0x92')]||![],'openchannelPause':_0x3bbae5['loginInPause']||![],'whatsappPause':_0x3bbae5[_0x32ef('0x92')]||![],'pauseType':_0x3bbae5[_0x32ef('0x92')]?_0x32ef('0xec'):null,'interface':_0x281ede,'lastPauseAt':moment()[_0x32ef('0xdc')](_0x32ef('0xea'))});}})[_0x32ef('0x26')](function(_0x1ce194){if(_0x3169e4[_0x32ef('0xee')]){return _0xeef05a();}else{return BPromise[_0x32ef('0xef')](_0x1ce194)[_0x32ef('0x26')](respondWithResult(_0x2931a9,null));}})[_0x32ef('0x1b')](handleError(_0x2931a9,null));};exports['logout']=function(_0xbd65ba,_0x2c1bf9){var _0x14a11b;return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0xbd65ba[_0x32ef('0x51')]['id'],'role':_0x32ef('0x2c')},'attributes':['id',_0x32ef('0x33'),_0x32ef('0x29')]})[_0x32ef('0x26')](handleEntityNotFound(_0x2c1bf9,null))[_0x32ef('0x26')](function(_0x4b912d){if(_0x4b912d){_0x14a11b=_0x4b912d;return db[_0x32ef('0xa4')][_0x32ef('0x27')]({'where':{'membername':_0x14a11b[_0x32ef('0x33')]},'individualHooks':!![]});}})[_0x32ef('0x26')](function(){return db[_0x32ef('0xe8')][_0x32ef('0x45')]({'where':{'membername':_0x14a11b[_0x32ef('0x33')],'exitAt':null}});})[_0x32ef('0x26')](function(_0x4ac957){var _0x5ed9fd=[];_0x4ac957['forEach'](function(_0x1187e7){_0x5ed9fd[_0x32ef('0x43')](_0x1187e7[_0x32ef('0x25')]({'exitAt':moment()[_0x32ef('0xdc')](_0x32ef('0xea'))}));});return BPromise['all'](_0x5ed9fd);})[_0x32ef('0x26')](function(){return _0x14a11b['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x2c1bf9,null))[_0x32ef('0x1b')](handleError(_0x2c1bf9,null));};exports[_0x32ef('0xf0')]=function(_0x19b38b,_0x4733ab){var _0x57e271;return db[_0x32ef('0xa4')]['update']({'paused':0x1},{'where':{'UserId':_0x19b38b[_0x32ef('0x51')]['id']},'individualHooks':!![]})[_0x32ef('0x26')](function(){return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x19b38b[_0x32ef('0x51')]['id'],'role':_0x32ef('0x2c')},'attributes':['id',_0x32ef('0x33'),_0x32ef('0x29'),_0x32ef('0x5f'),'interface']});})[_0x32ef('0x26')](handleEntityNotFound(_0x4733ab,null))[_0x32ef('0x26')](function(_0x23b614){if(_0x23b614){_0x57e271=_0x23b614;return respondWithRpcPromise(_0x32ef('0xf1'),'pause',{'id':_0x57e271['id'],'name':_0x57e271[_0x32ef('0x33')],'pause':!![]});}})[_0x32ef('0x26')](function(){if(_0x57e271){return db['MemberReport'][_0x32ef('0x45')]({'where':{'membername':_0x57e271[_0x32ef('0x33')],'type':_0x32ef('0xf2'),'exitAt':null}});}})[_0x32ef('0x26')](function(_0x2343c8){if(_0x2343c8['length']){var _0x49cd73=moment()[_0x32ef('0xdc')](_0x32ef('0xea'));for(var _0x5f2ef2=0x0,_0x2e4b11=_0x2343c8[_0x32ef('0x48')];_0x5f2ef2<_0x2e4b11;_0x5f2ef2++){_0x2343c8[_0x5f2ef2][_0x32ef('0xf3')]({'exitAt':_0x49cd73});}}})['then'](function(){var _0x5a2fb7=[];var _0x92bf2a=utils[_0x32ef('0xf4')]();_0x92bf2a[_0x32ef('0xe9')](function(_0x6a17a4){_0x5a2fb7[_0x32ef('0x43')]({'channel':_0x6a17a4,'membername':_0x57e271[_0x32ef('0x33')],'interface':_[_0x32ef('0x64')](_0x57e271['interface'])?util[_0x32ef('0xdc')]('SIP/%s',_0x57e271[_0x32ef('0x33')]):_0x57e271['interface'],'type':_0x32ef('0xf2'),'enterAt':moment()[_0x32ef('0xdc')](_0x32ef('0xea')),'data1':_0x19b38b[_0x32ef('0x5c')]['type']||_0x32ef('0xf5'),'role':_0x57e271['role'],'internal':_0x57e271[_0x32ef('0x5f')]});});return db['MemberReport'][_0x32ef('0x7c')](_0x5a2fb7,{'individualHooks':!![]});})[_0x32ef('0x26')](function(){return _0x57e271[_0x32ef('0x25')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x19b38b[_0x32ef('0x5c')]['type']||_0x32ef('0xf5'),'lastPauseAt':moment()['format'](_0x32ef('0xea'))});})[_0x32ef('0x26')](respondWithResult(_0x4733ab,null))[_0x32ef('0x1b')](handleError(_0x4733ab,null));};exports['unpause']=function(_0x130b2b,_0x180fa4){var _0x54c5ca;return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x130b2b[_0x32ef('0x51')]['id']},'attributes':['id',_0x32ef('0x33'),'role',_0x32ef('0x93'),_0x32ef('0xf6'),_0x32ef('0xf7'),_0x32ef('0xf8'),'openchannelPause','smsPause','whatsapppause',_0x32ef('0xf9'),_0x32ef('0xfa')]})[_0x32ef('0x26')](handleEntityNotFound(_0x180fa4,null))[_0x32ef('0x26')](function(_0x4687d1){if(_0x4687d1){_0x54c5ca=_0x4687d1;if(_0x130b2b['body'][_0x32ef('0x90')]&&!utils[_0x32ef('0x95')](_0x130b2b[_0x32ef('0x5c')][_0x32ef('0x90')])){throw new db[(_0x32ef('0x87'))][(_0x32ef('0x85'))](_0x32ef('0xa1'));}switch(_0x130b2b['body'][_0x32ef('0x90')]){case'voice':return respondWithRpcPromise(_0x32ef('0xf1'),_0x32ef('0xfb'),{'id':_0x54c5ca['id'],'name':_0x54c5ca[_0x32ef('0x33')],'pause':![]})['then'](function(){return db[_0x32ef('0xa4')][_0x32ef('0x25')]({'paused':0x0},{'where':{'UserId':_0x54c5ca['id']},'individualHooks':!![]});})[_0x32ef('0x26')](function(){return db['MemberReport']['find']({'where':{'channel':_0x130b2b[_0x32ef('0x5c')][_0x32ef('0x90')],'membername':_0x54c5ca[_0x32ef('0x33')],'type':_0x32ef('0xf2'),'exitAt':null}});})[_0x32ef('0x26')](function(_0x3cdd3a){if(_0x3cdd3a){return _0x3cdd3a[_0x32ef('0x25')]({'exitAt':moment()[_0x32ef('0xdc')](_0x32ef('0xea')),'data2':_0x32ef('0xfc')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x54c5ca['update']({'voicePause':![]});});case _0x32ef('0x4d'):case'chat':case _0x32ef('0x4c'):case'sms':case _0x32ef('0x5b'):case _0x32ef('0x4e'):return db[_0x32ef('0xe8')][_0x32ef('0x32')]({'where':{'channel':_0x130b2b[_0x32ef('0x5c')][_0x32ef('0x90')],'membername':_0x54c5ca['name'],'type':_0x32ef('0xf2'),'exitAt':null}})[_0x32ef('0x26')](function(_0x81cc8){if(_0x81cc8){return _0x81cc8['update']({'exitAt':moment()[_0x32ef('0xdc')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x32ef('0xfc')},{'individualHooks':!![]});}return null;})[_0x32ef('0x26')](function(){var _0x388304={};_[_0x32ef('0x24')](_0x388304,util['format'](_0x32ef('0xfd'),_0x130b2b['body'][_0x32ef('0x90')],_0x32ef('0xfe')),![]);return _0x54c5ca[_0x32ef('0x25')](_0x388304);});default:return respondWithRpcPromise('QueuePause',_0x32ef('0xfb'),{'id':_0x54c5ca['id'],'name':_0x54c5ca[_0x32ef('0x33')],'pause':![]})[_0x32ef('0x26')](function(){return db[_0x32ef('0xa4')][_0x32ef('0x25')]({'paused':0x0},{'where':{'UserId':_0x54c5ca['id']}});})[_0x32ef('0x26')](function(){return db[_0x32ef('0xe8')][_0x32ef('0x45')]({'where':{'membername':_0x54c5ca[_0x32ef('0x33')],'type':_0x32ef('0xf2'),'exitAt':null}});})['then'](function(_0x3558eb){var _0x4c36bd=[];_0x3558eb[_0x32ef('0xe9')](function(_0x50de1f){_0x4c36bd[_0x32ef('0x43')](_0x50de1f['update']({'exitAt':moment()[_0x32ef('0xdc')](_0x32ef('0xea')),'data2':'manual'}));});return BPromise['all'](_0x4c36bd);})[_0x32ef('0x26')](function(){return _0x54c5ca[_0x32ef('0x25')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x32ef('0x26')](respondWithResult(_0x180fa4,null))['catch'](handleError(_0x180fa4,null));};exports[_0x32ef('0xff')]=function(_0x4a19b5,_0x3f3a51){var _0xc28ca5={};var _0x185d8f={};var _0x2c3837;var _0x43382f;return db[_0x32ef('0x44')]['findOne']({'where':{'id':_0x4a19b5[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x3f3a51,null))[_0x32ef('0x26')](function(_0x349542){if(_0x349542){_0x2c3837=_0x349542;_0x185d8f[_0x32ef('0x56')]=_[_0x32ef('0x53')](db[_0x32ef('0x100')][_0x32ef('0x37')]);_0x185d8f[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0x4a19b5['query']);_0x185d8f[_0x32ef('0x54')]=_[_0x32ef('0x55')](_0x185d8f['model'],_0x185d8f[_0x32ef('0x3f')]);_0xc28ca5['attributes']=_['intersection'](_0x185d8f[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0x4a19b5[_0x32ef('0x3f')][_0x32ef('0x57')]));_0xc28ca5['attributes']=_0xc28ca5[_0x32ef('0x42')][_0x32ef('0x48')]?_0xc28ca5[_0x32ef('0x42')]:_0x185d8f[_0x32ef('0x56')];_0xc28ca5[_0x32ef('0xba')]=qs['sort'](_0x4a19b5[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0xc28ca5[_0x32ef('0x3e')]=qs['filters'](_['pick'](_0x4a19b5['query'],_0x185d8f[_0x32ef('0x54')]));if(_0x4a19b5[_0x32ef('0x3f')]['filter']){_0xc28ca5['where']=_['merge'](_0xc28ca5[_0x32ef('0x3e')],{'$or':_['map'](_0xc28ca5['attributes'],function(_0x25fee1){var _0x11af22={};_0x11af22[_0x25fee1]={'$like':'%'+_0x4a19b5['query'][_0x32ef('0x2e')]+'%'};return _0x11af22;})});}_0xc28ca5=_[_0x32ef('0x58')]({},_0xc28ca5,_0x4a19b5[_0x32ef('0x59')]);return _0x2c3837['getTeams'](_0xc28ca5);}})[_0x32ef('0x26')](function(_0x463aad){if(_0x463aad){_0x43382f=_0x463aad[_0x32ef('0x48')];if(!_0x4a19b5[_0x32ef('0x3f')][_0x32ef('0xbc')]('nolimit')){_0xc28ca5[_0x32ef('0x22')]=qs[_0x32ef('0x22')](_0x4a19b5[_0x32ef('0x3f')][_0x32ef('0x22')]);_0xc28ca5[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0x4a19b5[_0x32ef('0x3f')]['offset']);}return _0x2c3837['getTeams'](_0xc28ca5);}})[_0x32ef('0x26')](function(_0x218bea){if(_0x218bea){return _0x218bea?{'count':_0x43382f,'rows':_0x218bea}:null;}})[_0x32ef('0x26')](respondWithResult(_0x3f3a51,null))[_0x32ef('0x1b')](handleError(_0x3f3a51,null));};exports['addTeams']=function(_0x5c1daa,_0x565ed6){return db[_0x32ef('0x44')]['find']({'where':{'id':_0x5c1daa[_0x32ef('0x51')]['id']}})['then'](handleEntityNotFound(_0x565ed6,null))[_0x32ef('0x26')](function(_0x5ddece){if(_0x5ddece){var _0x37b447=_0x5ddece[_0x32ef('0x28')]({'plain':!![]});return _0x5ddece[_0x32ef('0x101')](_0x5c1daa['body'][_0x32ef('0x9b')],_[_0x32ef('0x5e')](_0x5c1daa['body'],[_0x32ef('0x9b'),'id'])||{})[_0x32ef('0x26')](function(){for(var _0x43baaf=0x0;_0x43baaf<_0x5c1daa['body'][_0x32ef('0x9b')][_0x32ef('0x48')];_0x43baaf++){var _0x422745=[];var _0x95c02c={};db['Team']['findOne']({'where':{'id':_0x5c1daa[_0x32ef('0x5c')][_0x32ef('0x9b')][_0x43baaf]}})[_0x32ef('0x26')](function(_0x3385a9){_0x95c02c=_0x3385a9['dataValues'];_0x422745[_0x32ef('0x43')](_0x3385a9[_0x32ef('0xe6')]()[_0x32ef('0x26')](function(_0x2f9f8d){for(var _0x371ed1=0x0;_0x371ed1<_0x2f9f8d['length'];_0x371ed1++){_0x2f9f8d[_0x371ed1][_0x32ef('0x102')](_0x32ef('0x90'),'Voice');}return _0x2f9f8d;}));_0x422745[_0x32ef('0x43')](_0x3385a9[_0x32ef('0x103')]()[_0x32ef('0x26')](function(_0x3aea2a){for(var _0x4fc769=0x0;_0x4fc769<_0x3aea2a[_0x32ef('0x48')];_0x4fc769++){_0x3aea2a[_0x4fc769]['setDataValue'](_0x32ef('0x90'),_0x32ef('0x104'));}return _0x3aea2a;}));_0x422745['push'](_0x3385a9['getMailQueues']()[_0x32ef('0x26')](function(_0x4f0096){for(var _0x28c69f=0x0;_0x28c69f<_0x4f0096['length'];_0x28c69f++){_0x4f0096[_0x28c69f][_0x32ef('0x102')](_0x32ef('0x90'),_0x32ef('0x105'));}return _0x4f0096;}));_0x422745[_0x32ef('0x43')](_0x3385a9[_0x32ef('0x106')]()[_0x32ef('0x26')](function(_0x4e4462){for(var _0x39c342=0x0;_0x39c342<_0x4e4462[_0x32ef('0x48')];_0x39c342++){_0x4e4462[_0x39c342][_0x32ef('0x102')](_0x32ef('0x90'),_0x32ef('0x107'));}return _0x4e4462;}));_0x422745['push'](_0x3385a9['getWhatsappQueues']()[_0x32ef('0x26')](function(_0x478ca5){for(var _0x16e6f2=0x0;_0x16e6f2<_0x478ca5[_0x32ef('0x48')];_0x16e6f2++){_0x478ca5[_0x16e6f2][_0x32ef('0x102')](_0x32ef('0x90'),_0x32ef('0x108'));}return _0x478ca5;}));_0x422745['push'](_0x3385a9['getFaxQueues']()['then'](function(_0x3778da){for(var _0x536a34=0x0;_0x536a34<_0x3778da[_0x32ef('0x48')];_0x536a34++){_0x3778da[_0x536a34][_0x32ef('0x102')](_0x32ef('0x90'),_0x32ef('0x109'));}return _0x3778da;}));_0x422745[_0x32ef('0x43')](_0x3385a9['getOpenchannelQueues']()[_0x32ef('0x26')](function(_0x560096){for(var _0x138df0=0x0;_0x138df0<_0x560096['length'];_0x138df0++){_0x560096[_0x138df0][_0x32ef('0x102')]('channel',_0x32ef('0x10a'));}return _0x560096;}));return BPromise[_0x32ef('0x4f')](_0x422745);})['then'](function(_0x3acb08){var _0xeda766=_[_0x32ef('0x10b')](_0x3acb08);_0x422745=[];return db[_0x32ef('0x66')][_0x32ef('0x10c')](function(_0x3527cd){for(var _0xc0d116=0x0;_0xc0d116<_0xeda766[_0x32ef('0x48')];_0xc0d116++){_0x422745[_0x32ef('0x43')](_0xeda766[_0xc0d116][_0x32ef('0x10d')](_0x37b447['id']),{'transaction':_0x3527cd});}return BPromise[_0x32ef('0x4f')](_0x422745)[_0x32ef('0x26')](function(){if(_0x37b447[_0x32ef('0x91')]){return BPromise[_0x32ef('0x7e')](_[_0x32ef('0x2e')](_0xeda766,function(_0x24774b){return _0x24774b[_0x32ef('0x10e')]('channel')==='Voice';}),function(_0x5dd8ce){return db[_0x32ef('0xa4')][_0x32ef('0xa0')]({'membername':_0x37b447[_0x32ef('0x33')],'UserId':_0x37b447['id'],'queue_name':_0x5dd8ce[_0x32ef('0x33')],'VoiceQueueId':_0x5dd8ce['id'],'interface':_[_0x32ef('0x64')](_0x37b447[_0x32ef('0x94')])?util[_0x32ef('0xdc')](_0x32ef('0x9f'),_0x37b447['name']):_0x37b447[_0x32ef('0x94')],'paused':_0x37b447[_0x32ef('0x93')]||![],'penalty':_0x37b447[_0x32ef('0x99')]},{'transaction':_0x3527cd});});}else{return;}})[_0x32ef('0x26')](function(){for(var _0x127a77=0x0;_0x127a77<_0xeda766[_0x32ef('0x48')];_0x127a77++){var _0x25d0c9=_0xeda766[_0x127a77][_0x32ef('0x10e')](_0x32ef('0x90'));var _0x574463=_0x25d0c9+'QueueId';socket[_0x32ef('0x9d')]('user'+_0x25d0c9+'Queue:save',{'UserId':_0x37b447['id'],['queueField']:_0xeda766[_0x127a77]['id']});}});});})[_0x32ef('0x26')](function(){db[_0x32ef('0x10f')][_0x32ef('0xb9')]({'where':{'teamId':_0x95c02c['id']}})['then'](function(_0x571f43){if(_0x571f43){db[_0x32ef('0x110')][_0x32ef('0x7b')]({'UserId':_0x5c1daa['params']['id'],'VoicePrefixId':_0x571f43[_0x32ef('0x111')]});}});});}});}})[_0x32ef('0x26')](respondWithStatusCode(_0x565ed6,null))[_0x32ef('0x1b')](handleError(_0x565ed6,null));};exports[_0x32ef('0x112')]=function(_0x4ffee3,_0x126d3d){return db[_0x32ef('0x44')][_0x32ef('0xb9')]({'where':{'id':_0x4ffee3[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x126d3d,null))[_0x32ef('0x26')](function(_0x3951d7){if(_0x3951d7){var _0x1756d3=_0x3951d7[_0x32ef('0x28')]({'plain':!![]});var _0x1b32da=_0x4ffee3[_0x32ef('0x3f')][_0x32ef('0x9b')];return _0x3951d7[_0x32ef('0x112')](_0x1b32da)['then'](function(){for(var _0x14f0d2=0x0;_0x14f0d2<_0x1b32da[_0x32ef('0x48')];_0x14f0d2++){var _0x25ec80=[];var _0x123d32={};db[_0x32ef('0x100')]['findOne']({'where':{'id':_0x1b32da[_0x14f0d2]}})['then'](function(_0x4ee687){_0x123d32=_0x4ee687['dataValues'];_0x25ec80[_0x32ef('0x43')](_0x4ee687[_0x32ef('0xe6')]()[_0x32ef('0x26')](function(_0x1e3391){for(var _0x38e2e4=0x0;_0x38e2e4<_0x1e3391[_0x32ef('0x48')];_0x38e2e4++){_0x1e3391[_0x38e2e4][_0x32ef('0x102')](_0x32ef('0x90'),'Voice');}return _0x1e3391;}));_0x25ec80['push'](_0x4ee687[_0x32ef('0x103')]()[_0x32ef('0x26')](function(_0x85cdc1){for(var _0x42a2d8=0x0;_0x42a2d8<_0x85cdc1[_0x32ef('0x48')];_0x42a2d8++){_0x85cdc1[_0x42a2d8][_0x32ef('0x102')](_0x32ef('0x90'),_0x32ef('0x104'));}return _0x85cdc1;}));_0x25ec80[_0x32ef('0x43')](_0x4ee687[_0x32ef('0x113')]()[_0x32ef('0x26')](function(_0x4e7ee2){for(var _0x41e510=0x0;_0x41e510<_0x4e7ee2['length'];_0x41e510++){_0x4e7ee2[_0x41e510][_0x32ef('0x102')](_0x32ef('0x90'),'Mail');}return _0x4e7ee2;}));_0x25ec80[_0x32ef('0x43')](_0x4ee687['getSmsQueues']()[_0x32ef('0x26')](function(_0x1bf151){for(var _0x2b30ea=0x0;_0x2b30ea<_0x1bf151['length'];_0x2b30ea++){_0x1bf151[_0x2b30ea][_0x32ef('0x102')](_0x32ef('0x90'),'Sms');}return _0x1bf151;}));_0x25ec80[_0x32ef('0x43')](_0x4ee687[_0x32ef('0x114')]()[_0x32ef('0x26')](function(_0x339269){for(var _0x150418=0x0;_0x150418<_0x339269[_0x32ef('0x48')];_0x150418++){_0x339269[_0x150418]['setDataValue'](_0x32ef('0x90'),_0x32ef('0x108'));}return _0x339269;}));_0x25ec80['push'](_0x4ee687['getFaxQueues']()['then'](function(_0x3beb3e){for(var _0x4553e7=0x0;_0x4553e7<_0x3beb3e[_0x32ef('0x48')];_0x4553e7++){_0x3beb3e[_0x4553e7][_0x32ef('0x102')](_0x32ef('0x90'),_0x32ef('0x109'));}return _0x3beb3e;}));_0x25ec80[_0x32ef('0x43')](_0x4ee687[_0x32ef('0x115')]()[_0x32ef('0x26')](function(_0x105f33){for(var _0x2ab3bc=0x0;_0x2ab3bc<_0x105f33[_0x32ef('0x48')];_0x2ab3bc++){_0x105f33[_0x2ab3bc][_0x32ef('0x102')](_0x32ef('0x90'),'Openchannel');}return _0x105f33;}));return BPromise['all'](_0x25ec80);})[_0x32ef('0x26')](function(_0x4a7f69){var _0x49c2a4=_['flatten'](_0x4a7f69);_0x25ec80=[];return db['sequelize'][_0x32ef('0x10c')](function(_0x485ab6){for(var _0x1d0ccd=0x0;_0x1d0ccd<_0x49c2a4[_0x32ef('0x48')];_0x1d0ccd++){_0x25ec80[_0x32ef('0x43')](_0x49c2a4[_0x1d0ccd]['removeAgent'](_0x1756d3['id']),{'transaction':_0x485ab6});}return BPromise[_0x32ef('0x4f')](_0x25ec80)[_0x32ef('0x26')](function(){if(_0x1756d3[_0x32ef('0x91')]){return BPromise[_0x32ef('0x7e')](_[_0x32ef('0x2e')](_0x49c2a4,function(_0xc0cb3f){return _0xc0cb3f[_0x32ef('0x10e')](_0x32ef('0x90'))===_0x32ef('0x116');}),function(_0xd4298){return db['UserVoiceQueueRt'][_0x32ef('0x27')]({'where':{'VoiceQueueId':_0xd4298['id'],'UserId':_0x1756d3['id']},'transaction':_0x485ab6});});}else{return;}})[_0x32ef('0x26')](function(){db['TeamVoicePrefix'][_0x32ef('0xb9')]({'where':{'teamId':_0x123d32['id']}})['then'](function(_0x2c6e76){if(_0x2c6e76){return db['UserVoicePrefix']['destroy']({'where':{'UserId':_0x1756d3['id'],'VoicePrefixId':_0x2c6e76[_0x32ef('0x4a')]['VoicePrefixId']}});}});})['then'](function(){for(var _0xff9164=0x0;_0xff9164<_0x49c2a4['length'];_0xff9164++){var _0x6c811e=_0x49c2a4[_0xff9164][_0x32ef('0x10e')](_0x32ef('0x90'));var _0x2b002e=_0x6c811e+_0x32ef('0x9c');socket['emit'](_0x32ef('0x2b')+_0x6c811e+_0x32ef('0xa3'),{'UserId':_0x1756d3['id'],['queueField']:_0x49c2a4[_0xff9164]['id']});}});});});}});}})[_0x32ef('0x26')](respondWithStatusCode(_0x126d3d,null))['catch'](handleError(_0x126d3d,null));};exports[_0x32ef('0x117')]=function(_0x6fb216,_0x3c0d29){var _0x295e63={};var _0x188c94={};var _0x2bb882;var _0x424693;return db[_0x32ef('0x44')][_0x32ef('0xb9')]({'where':{'id':_0x6fb216['params']['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x3c0d29,null))['then'](function(_0x42089c){if(_0x42089c){_0x2bb882=_0x42089c;_0x188c94[_0x32ef('0x56')]=_[_0x32ef('0x53')](db[_0x32ef('0xbd')][_0x32ef('0x37')]);_0x188c94[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0x6fb216[_0x32ef('0x3f')]);_0x188c94[_0x32ef('0x54')]=_[_0x32ef('0x55')](_0x188c94[_0x32ef('0x56')],_0x188c94[_0x32ef('0x3f')]);_0x295e63[_0x32ef('0x42')]=_['intersection'](_0x188c94[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0x6fb216[_0x32ef('0x3f')][_0x32ef('0x57')]));_0x295e63[_0x32ef('0x42')]=_0x295e63[_0x32ef('0x42')][_0x32ef('0x48')]?_0x295e63[_0x32ef('0x42')]:_0x188c94[_0x32ef('0x56')];_0x295e63['order']=qs[_0x32ef('0xc7')](_0x6fb216[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0x295e63[_0x32ef('0x3e')]=qs['filters'](_[_0x32ef('0xbb')](_0x6fb216['query'],_0x188c94['filters']));if(_0x6fb216[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0x295e63['where']=_['merge'](_0x295e63[_0x32ef('0x3e')],{'$or':_[_0x32ef('0x30')](_0x295e63[_0x32ef('0x42')],function(_0x4f5dc1){var _0x356c16={};_0x356c16[_0x4f5dc1]={'$like':'%'+_0x6fb216[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'};return _0x356c16;})});}_0x295e63=_[_0x32ef('0x58')]({},_0x295e63,_0x6fb216[_0x32ef('0x59')]);return _0x2bb882[_0x32ef('0x117')](_0x295e63);}})[_0x32ef('0x26')](function(_0x2292d9){if(_0x2292d9){_0x424693=_0x2292d9[_0x32ef('0x48')];if(!_0x6fb216[_0x32ef('0x3f')][_0x32ef('0xbc')](_0x32ef('0xc2'))){_0x295e63[_0x32ef('0x22')]=qs['limit'](_0x6fb216[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x295e63[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0x6fb216[_0x32ef('0x3f')][_0x32ef('0x1f')]);}return _0x2bb882[_0x32ef('0x117')](_0x295e63);}})[_0x32ef('0x26')](function(_0x1d3604){if(_0x1d3604){return _0x1d3604?{'count':_0x424693,'rows':_0x1d3604}:null;}})[_0x32ef('0x26')](respondWithResult(_0x3c0d29,null))['catch'](handleError(_0x3c0d29,null));};exports[_0x32ef('0x118')]=function(_0x246e54,_0x286c7e){var _0x150100={};var _0x340405={};var _0x437066;var _0x3f8436;return db[_0x32ef('0x44')]['findOne']({'where':{'id':_0x246e54['params']['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x286c7e,null))[_0x32ef('0x26')](function(_0x1574ea){if(_0x1574ea){_0x437066=_0x1574ea;_0x340405[_0x32ef('0x56')]=_['keys'](db[_0x32ef('0x44')][_0x32ef('0x37')]);_0x340405[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0x246e54[_0x32ef('0x3f')]);_0x340405[_0x32ef('0x54')]=_[_0x32ef('0x55')](_0x340405[_0x32ef('0x56')],_0x340405[_0x32ef('0x3f')]);_0x150100['attributes']=_[_0x32ef('0x55')](_0x340405[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0x246e54[_0x32ef('0x3f')]['fields']));_0x150100[_0x32ef('0x42')]=_0x150100['attributes'][_0x32ef('0x48')]?_0x150100['attributes']:_0x340405[_0x32ef('0x56')];_0x150100[_0x32ef('0xba')]=qs[_0x32ef('0xc7')](_0x246e54[_0x32ef('0x3f')]['sort']);_0x150100[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0x246e54['query'],_0x340405['filters']));if(_0x246e54[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0x150100[_0x32ef('0x3e')]=_[_0x32ef('0x58')](_0x150100[_0x32ef('0x3e')],{'$or':_[_0x32ef('0x30')](_0x150100[_0x32ef('0x42')],function(_0x27f352){var _0x30a340={};_0x30a340[_0x27f352]={'$like':'%'+_0x246e54['query'][_0x32ef('0x2e')]+'%'};return _0x30a340;})});}_0x150100[_0x32ef('0x56')]=db[_0x32ef('0x44')];_0x150100['as']=_0x32ef('0x7a');_0x150100=_[_0x32ef('0x58')]({},_0x150100,_0x246e54['options']);return _0x437066[_0x32ef('0xe6')]({'include':[_0x150100]});}})[_0x32ef('0x26')](function(_0x2bdbb2){if(_0x2bdbb2){var _0x319e9a={},_0x55e6a7=[],_0x213140=0x0;for(var _0x22e816=0x0;_0x22e816<_0x2bdbb2['length'];_0x22e816+=0x1){for(var _0x238871=0x0,_0x33d72e;_0x238871<_0x2bdbb2[_0x22e816]['Agents'][_0x32ef('0x48')];_0x238871+=0x1){_0x33d72e=_0x2bdbb2[_0x22e816][_0x32ef('0x7a')][_0x238871]['get']({'plain':!![]});_0x319e9a[_0x33d72e['id']]=_0x33d72e;}}_0x319e9a=_[_0x32ef('0x119')](_0x319e9a);for(var _0x2a0f0a=qs[_0x32ef('0x1f')](_0x246e54['query'][_0x32ef('0x1f')]);_0x2a0f0a<_0x319e9a[_0x32ef('0x48')]&&_0x55e6a7[_0x32ef('0x48')]<qs[_0x32ef('0x22')](_0x246e54[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x2a0f0a+=0x1){if(_0x319e9a[_0x2a0f0a]){_0x55e6a7[_0x32ef('0x43')](_0x319e9a[_0x2a0f0a]);}}return{'count':_0x319e9a[_0x32ef('0x48')],'rows':_0x55e6a7};}})[_0x32ef('0x26')](respondWithResult(_0x286c7e,null))[_0x32ef('0x1b')](handleError(_0x286c7e,null));};exports[_0x32ef('0x27')]=function(_0x49611a,_0x257b3f){if(_0x49611a[_0x32ef('0x2b')]['id']==_0x49611a[_0x32ef('0x51')]['id']){return _0x257b3f[_0x32ef('0x23')](0x1f4)['send']({'message':_0x32ef('0x11a')});}return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x49611a[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x257b3f,null))[_0x32ef('0x26')](removeEntity(_0x257b3f,null))[_0x32ef('0x1b')](handleError(_0x257b3f,null));};exports['addChatInteractions']=function(_0x4d9111,_0x56d020){return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x4d9111[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x56d020,null))[_0x32ef('0x26')](function(_0x58b8cc){if(_0x58b8cc){return _0x58b8cc['addChatInteractions'](_0x4d9111[_0x32ef('0x5c')][_0x32ef('0x9b')],_[_0x32ef('0x5e')](_0x4d9111[_0x32ef('0x5c')],[_0x32ef('0x9b'),'id'])||{})[_0x32ef('0x9a')](function(){for(var _0x42ca32=0x0;_0x42ca32<_0x4d9111['body'][_0x32ef('0x9b')][_0x32ef('0x48')];_0x42ca32+=0x1){socket['emit'](_0x32ef('0x11b'),{'ChatInteractionId':Number(_0x4d9111[_0x32ef('0x5c')][_0x32ef('0x9b')][_0x42ca32]),'UserId':Number(_0x4d9111[_0x32ef('0x51')]['id'])});}return _0x4d9111[_0x32ef('0x5c')]['ids'];});}})[_0x32ef('0x26')](respondWithResult(_0x56d020,null))[_0x32ef('0x1b')](handleError(_0x56d020,null));};exports[_0x32ef('0x11c')]=function(_0x1928cd,_0x57de3c){return db[_0x32ef('0x44')]['find']({'where':{'id':_0x1928cd[_0x32ef('0x51')]['id']}})['then'](handleEntityNotFound(_0x57de3c,null))[_0x32ef('0x26')](function(_0x3f6adc){if(_0x3f6adc){return _0x3f6adc['removeChatInteractions'](_0x1928cd['query'][_0x32ef('0x9b')])['then'](function(){if(_[_0x32ef('0x11d')](_0x1928cd[_0x32ef('0x3f')][_0x32ef('0x9b')])){for(var _0x163573=0x0;_0x163573<_0x1928cd[_0x32ef('0x3f')][_0x32ef('0x9b')]['length'];_0x163573+=0x1){socket[_0x32ef('0x9d')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x1928cd['query'][_0x32ef('0x9b')][_0x163573]),'UserId':Number(_0x1928cd[_0x32ef('0x51')]['id'])});}}else{socket[_0x32ef('0x9d')](_0x32ef('0x11e'),{'ChatInteractionId':Number(_0x1928cd['query'][_0x32ef('0x9b')]),'UserId':Number(_0x1928cd[_0x32ef('0x51')]['id'])});}});}})[_0x32ef('0x26')](respondWithStatusCode(_0x57de3c,null))[_0x32ef('0x1b')](handleError(_0x57de3c,null));};exports[_0x32ef('0x11f')]=function(_0x256072,_0x4529d3){return db['User'][_0x32ef('0x32')]({'where':{'id':_0x256072[_0x32ef('0x51')]['id']}})['then'](handleEntityNotFound(_0x4529d3,null))['then'](function(_0x2441fa){if(_0x2441fa){return _0x2441fa[_0x32ef('0x11f')](_0x256072[_0x32ef('0x5c')][_0x32ef('0x9b')],_['omit'](_0x256072[_0x32ef('0x5c')],[_0x32ef('0x9b'),'id'])||{})[_0x32ef('0x9a')](function(){for(var _0x3ec8a4=0x0;_0x3ec8a4<_0x256072[_0x32ef('0x5c')][_0x32ef('0x9b')][_0x32ef('0x48')];_0x3ec8a4+=0x1){socket['emit'](_0x32ef('0x120'),{'MailInteractionId':Number(_0x256072['body'][_0x32ef('0x9b')][_0x3ec8a4]),'UserId':Number(_0x256072['params']['id'])});}return _0x256072[_0x32ef('0x5c')][_0x32ef('0x9b')];});}})['then'](respondWithResult(_0x4529d3,null))[_0x32ef('0x1b')](handleError(_0x4529d3,null));};exports[_0x32ef('0x121')]=function(_0x12347d,_0xadbf0b){return db['User']['find']({'where':{'id':_0x12347d[_0x32ef('0x51')]['id']}})['then'](handleEntityNotFound(_0xadbf0b,null))['then'](function(_0x394a5e){if(_0x394a5e){return _0x394a5e['removeMailInteractions'](_0x12347d[_0x32ef('0x3f')][_0x32ef('0x9b')])[_0x32ef('0x26')](function(){if(_[_0x32ef('0x11d')](_0x12347d['query'][_0x32ef('0x9b')])){for(var _0x2f6e73=0x0;_0x2f6e73<_0x12347d[_0x32ef('0x3f')]['ids'][_0x32ef('0x48')];_0x2f6e73+=0x1){socket['emit'](_0x32ef('0x122'),{'MailInteractionId':Number(_0x12347d[_0x32ef('0x3f')][_0x32ef('0x9b')][_0x2f6e73]),'UserId':Number(_0x12347d['params']['id'])});}}else{socket['emit'](_0x32ef('0x122'),{'MailInteractionId':Number(_0x12347d[_0x32ef('0x3f')]['ids']),'UserId':Number(_0x12347d[_0x32ef('0x51')]['id'])});}});}})[_0x32ef('0x26')](respondWithStatusCode(_0xadbf0b,null))[_0x32ef('0x1b')](handleError(_0xadbf0b,null));};exports[_0x32ef('0x123')]=function(_0x2d9d4e,_0x5e04ca){return db['User'][_0x32ef('0x32')]({'where':{'id':_0x2d9d4e[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x5e04ca,null))[_0x32ef('0x26')](function(_0x614af2){if(_0x614af2){return _0x614af2[_0x32ef('0x123')](_0x2d9d4e[_0x32ef('0x5c')][_0x32ef('0x9b')],_[_0x32ef('0x5e')](_0x2d9d4e['body'],[_0x32ef('0x9b'),'id'])||{})['spread'](function(){for(var _0x511524=0x0;_0x511524<_0x2d9d4e[_0x32ef('0x5c')][_0x32ef('0x9b')][_0x32ef('0x48')];_0x511524+=0x1){socket[_0x32ef('0x9d')](_0x32ef('0x124'),{'FaxInteractionId':Number(_0x2d9d4e[_0x32ef('0x5c')]['ids'][_0x511524]),'UserId':Number(_0x2d9d4e[_0x32ef('0x51')]['id'])});}return _0x2d9d4e[_0x32ef('0x5c')][_0x32ef('0x9b')];});}})[_0x32ef('0x26')](respondWithResult(_0x5e04ca,null))[_0x32ef('0x1b')](handleError(_0x5e04ca,null));};exports[_0x32ef('0x125')]=function(_0x1f526d,_0xa5e793){return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x1f526d[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0xa5e793,null))[_0x32ef('0x26')](function(_0x4993e6){if(_0x4993e6){return _0x4993e6[_0x32ef('0x125')](_0x1f526d[_0x32ef('0x3f')]['ids'])['then'](function(){if(_[_0x32ef('0x11d')](_0x1f526d[_0x32ef('0x3f')]['ids'])){for(var _0x359d65=0x0;_0x359d65<_0x1f526d[_0x32ef('0x3f')]['ids']['length'];_0x359d65+=0x1){socket[_0x32ef('0x9d')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x1f526d[_0x32ef('0x3f')][_0x32ef('0x9b')][_0x359d65]),'UserId':Number(_0x1f526d[_0x32ef('0x51')]['id'])});}}else{socket['emit'](_0x32ef('0x126'),{'FaxInteractionId':Number(_0x1f526d['query'][_0x32ef('0x9b')]),'UserId':Number(_0x1f526d[_0x32ef('0x51')]['id'])});}});}})[_0x32ef('0x26')](respondWithStatusCode(_0xa5e793,null))['catch'](handleError(_0xa5e793,null));};exports[_0x32ef('0x127')]=function(_0x59d386,_0x5ee545){return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x59d386[_0x32ef('0x51')]['id']}})['then'](handleEntityNotFound(_0x5ee545,null))[_0x32ef('0x26')](function(_0x480bde){if(_0x480bde){return _0x480bde[_0x32ef('0x127')](_0x59d386[_0x32ef('0x5c')]['ids'],_['omit'](_0x59d386['body'],[_0x32ef('0x9b'),'id'])||{})['spread'](function(){for(var _0x45701a=0x0;_0x45701a<_0x59d386[_0x32ef('0x5c')][_0x32ef('0x9b')][_0x32ef('0x48')];_0x45701a+=0x1){socket['emit'](_0x32ef('0x128'),{'SmsInteractionId':Number(_0x59d386['body'][_0x32ef('0x9b')][_0x45701a]),'UserId':Number(_0x59d386[_0x32ef('0x51')]['id'])});}return _0x59d386[_0x32ef('0x5c')]['ids'];});}})[_0x32ef('0x26')](respondWithResult(_0x5ee545,null))[_0x32ef('0x1b')](handleError(_0x5ee545,null));};exports['removeSmsInteractions']=function(_0x418ec8,_0x1d2ac7){return db['User'][_0x32ef('0x32')]({'where':{'id':_0x418ec8[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x1d2ac7,null))['then'](function(_0x376a96){if(_0x376a96){return _0x376a96[_0x32ef('0x129')](_0x418ec8[_0x32ef('0x3f')][_0x32ef('0x9b')])[_0x32ef('0x26')](function(){if(_[_0x32ef('0x11d')](_0x418ec8[_0x32ef('0x3f')][_0x32ef('0x9b')])){for(var _0x2e6cc2=0x0;_0x2e6cc2<_0x418ec8['query'][_0x32ef('0x9b')][_0x32ef('0x48')];_0x2e6cc2+=0x1){socket[_0x32ef('0x9d')](_0x32ef('0x12a'),{'SmsInteractionId':Number(_0x418ec8['query'][_0x32ef('0x9b')][_0x2e6cc2]),'UserId':Number(_0x418ec8['params']['id'])});}}else{socket[_0x32ef('0x9d')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x418ec8[_0x32ef('0x3f')][_0x32ef('0x9b')]),'UserId':Number(_0x418ec8[_0x32ef('0x51')]['id'])});}});}})[_0x32ef('0x26')](respondWithStatusCode(_0x1d2ac7,null))['catch'](handleError(_0x1d2ac7,null));};exports[_0x32ef('0x12b')]=function(_0x26a61e,_0xe30ea0){return db['User']['find']({'where':{'id':_0x26a61e[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0xe30ea0,null))[_0x32ef('0x26')](function(_0xe4c0f1){if(_0xe4c0f1){return _0xe4c0f1[_0x32ef('0x12b')](_0x26a61e[_0x32ef('0x5c')][_0x32ef('0x9b')],_['omit'](_0x26a61e[_0x32ef('0x5c')],[_0x32ef('0x9b'),'id'])||{})[_0x32ef('0x9a')](function(){for(var _0x3b3f22=0x0;_0x3b3f22<_0x26a61e['body']['ids'][_0x32ef('0x48')];_0x3b3f22+=0x1){socket[_0x32ef('0x9d')](_0x32ef('0x12c'),{'OpenchannelInteractionId':Number(_0x26a61e['body'][_0x32ef('0x9b')][_0x3b3f22]),'UserId':Number(_0x26a61e[_0x32ef('0x51')]['id'])});}return _0x26a61e['body'][_0x32ef('0x9b')];});}})['then'](respondWithResult(_0xe30ea0,null))['catch'](handleError(_0xe30ea0,null));};exports[_0x32ef('0x12d')]=function(_0x4c49c9,_0x2c3596){return db[_0x32ef('0x44')]['find']({'where':{'id':_0x4c49c9[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x2c3596,null))[_0x32ef('0x26')](function(_0x244509){if(_0x244509){return _0x244509[_0x32ef('0x12d')](_0x4c49c9['query'][_0x32ef('0x9b')])[_0x32ef('0x26')](function(){if(_[_0x32ef('0x11d')](_0x4c49c9[_0x32ef('0x3f')][_0x32ef('0x9b')])){for(var _0x4f6aaf=0x0;_0x4f6aaf<_0x4c49c9[_0x32ef('0x3f')][_0x32ef('0x9b')][_0x32ef('0x48')];_0x4f6aaf+=0x1){socket['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x4c49c9[_0x32ef('0x3f')][_0x32ef('0x9b')][_0x4f6aaf]),'UserId':Number(_0x4c49c9[_0x32ef('0x51')]['id'])});}}else{socket[_0x32ef('0x9d')](_0x32ef('0x12e'),{'OpenchannelInteractionId':Number(_0x4c49c9[_0x32ef('0x3f')][_0x32ef('0x9b')]),'UserId':Number(_0x4c49c9[_0x32ef('0x51')]['id'])});}});}})[_0x32ef('0x26')](respondWithStatusCode(_0x2c3596,null))[_0x32ef('0x1b')](handleError(_0x2c3596,null));};exports[_0x32ef('0x12f')]=function(_0x24671b,_0x321e99){return db['User']['find']({'where':{'id':_0x24671b[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x321e99,null))['then'](function(_0x185a65){if(_0x185a65){return _0x185a65[_0x32ef('0x12f')](_0x24671b[_0x32ef('0x5c')][_0x32ef('0x9b')],_[_0x32ef('0x5e')](_0x24671b[_0x32ef('0x5c')],['ids','id'])||{})[_0x32ef('0x9a')](function(){for(var _0x2d53cd=0x0;_0x2d53cd<_0x24671b['body']['ids'][_0x32ef('0x48')];_0x2d53cd+=0x1){socket[_0x32ef('0x9d')](_0x32ef('0x130'),{'WhatsappInteractionId':Number(_0x24671b[_0x32ef('0x5c')]['ids'][_0x2d53cd]),'UserId':Number(_0x24671b[_0x32ef('0x51')]['id'])});}return _0x24671b[_0x32ef('0x5c')][_0x32ef('0x9b')];});}})[_0x32ef('0x26')](respondWithResult(_0x321e99,null))[_0x32ef('0x1b')](handleError(_0x321e99,null));};exports[_0x32ef('0x131')]=function(_0x4d801c,_0x573fa9){return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x4d801c['params']['id']}})['then'](handleEntityNotFound(_0x573fa9,null))[_0x32ef('0x26')](function(_0x304863){if(_0x304863){return _0x304863[_0x32ef('0x131')](_0x4d801c[_0x32ef('0x3f')][_0x32ef('0x9b')]);}})['then'](respondWithStatusCode(_0x573fa9,null))[_0x32ef('0x1b')](handleError(_0x573fa9,null));};exports['getVoicePrefixes']=function(_0x133761,_0x5c7085){var _0x1f3ca5={};var _0x276e3e={};var _0x3a40a0;var _0x4a1a16;return db['User'][_0x32ef('0xb9')]({'where':{'id':_0x133761[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x5c7085,null))[_0x32ef('0x26')](function(_0xa1fcae){if(_0xa1fcae){_0x3a40a0=_0xa1fcae;_0x276e3e[_0x32ef('0x56')]=_[_0x32ef('0x53')](db[_0x32ef('0x132')]['rawAttributes']);_0x276e3e['query']=_[_0x32ef('0x53')](_0x133761['query']);_0x276e3e[_0x32ef('0x54')]=_[_0x32ef('0x55')](_0x276e3e[_0x32ef('0x56')],_0x276e3e['query']);_0x1f3ca5[_0x32ef('0x42')]=_['intersection'](_0x276e3e[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0x133761[_0x32ef('0x3f')][_0x32ef('0x57')]));_0x1f3ca5['attributes']=_0x1f3ca5['attributes'][_0x32ef('0x48')]?_0x1f3ca5[_0x32ef('0x42')]:_0x276e3e[_0x32ef('0x56')];_0x1f3ca5['order']=qs['sort'](_0x133761[_0x32ef('0x3f')]['sort']);_0x1f3ca5[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0x133761[_0x32ef('0x3f')],_0x276e3e[_0x32ef('0x54')]));if(_0x133761[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0x1f3ca5[_0x32ef('0x3e')]=_['merge'](_0x1f3ca5['where'],{'$or':_['map'](_0x1f3ca5[_0x32ef('0x42')],function(_0x4fd621){var _0x124087={};_0x124087[_0x4fd621]={'$like':'%'+_0x133761[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'};return _0x124087;})});}_0x1f3ca5=_[_0x32ef('0x58')]({},_0x1f3ca5,_0x133761[_0x32ef('0x59')]);return _0x3a40a0[_0x32ef('0x133')](_0x1f3ca5);}})[_0x32ef('0x26')](function(_0x60fe17){if(_0x60fe17){_0x4a1a16=_0x60fe17[_0x32ef('0x48')];if(!_0x133761[_0x32ef('0x3f')][_0x32ef('0xbc')](_0x32ef('0xc2'))){_0x1f3ca5['limit']=qs[_0x32ef('0x22')](_0x133761[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x1f3ca5[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0x133761[_0x32ef('0x3f')][_0x32ef('0x1f')]);}return _0x3a40a0[_0x32ef('0x133')](_0x1f3ca5);}})[_0x32ef('0x26')](function(_0x1f97b0){if(_0x1f97b0){return _0x1f97b0?{'count':_0x4a1a16,'rows':_0x1f97b0}:null;}})[_0x32ef('0x26')](respondWithResult(_0x5c7085,null))[_0x32ef('0x1b')](handleError(_0x5c7085,null));};exports['getFaxAccounts']=function(_0x4fd8fc,_0x542b35){var _0x1ad397={};var _0xbea95e={};var _0x368685;var _0x4f55c5;return db[_0x32ef('0x44')][_0x32ef('0xb9')]({'where':{'id':_0x4fd8fc[_0x32ef('0x51')]['id']}})['then'](handleEntityNotFound(_0x542b35,null))[_0x32ef('0x26')](function(_0x229f32){if(_0x229f32){_0x368685=_0x229f32;_0xbea95e[_0x32ef('0x56')]=_['keys'](db[_0x32ef('0x134')][_0x32ef('0x37')]);_0xbea95e[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0x4fd8fc[_0x32ef('0x3f')]);_0xbea95e[_0x32ef('0x54')]=_[_0x32ef('0x55')](_0xbea95e[_0x32ef('0x56')],_0xbea95e[_0x32ef('0x3f')]);_0x1ad397['attributes']=_[_0x32ef('0x55')](_0xbea95e[_0x32ef('0x56')],qs['fields'](_0x4fd8fc[_0x32ef('0x3f')][_0x32ef('0x57')]));_0x1ad397[_0x32ef('0x42')]=_0x1ad397[_0x32ef('0x42')][_0x32ef('0x48')]?_0x1ad397[_0x32ef('0x42')]:_0xbea95e[_0x32ef('0x56')];_0x1ad397[_0x32ef('0xba')]=qs[_0x32ef('0xc7')](_0x4fd8fc[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0x1ad397[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0x4fd8fc[_0x32ef('0x3f')],_0xbea95e[_0x32ef('0x54')]));if(_0x4fd8fc['query'][_0x32ef('0x2e')]){_0x1ad397[_0x32ef('0x3e')]=_[_0x32ef('0x58')](_0x1ad397['where'],{'$or':_[_0x32ef('0x30')](_0x1ad397['attributes'],function(_0x54c0a9){var _0x1c8701={};_0x1c8701[_0x54c0a9]={'$like':'%'+_0x4fd8fc['query'][_0x32ef('0x2e')]+'%'};return _0x1c8701;})});}_0x1ad397=_[_0x32ef('0x58')]({},_0x1ad397,_0x4fd8fc[_0x32ef('0x59')]);return _0x368685[_0x32ef('0x135')](_0x1ad397);}})[_0x32ef('0x26')](function(_0x28f6d9){if(_0x28f6d9){_0x4f55c5=_0x28f6d9['length'];if(!_0x4fd8fc[_0x32ef('0x3f')][_0x32ef('0xbc')](_0x32ef('0xc2'))){_0x1ad397[_0x32ef('0x22')]=qs[_0x32ef('0x22')](_0x4fd8fc[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x1ad397[_0x32ef('0x1f')]=qs['offset'](_0x4fd8fc['query'][_0x32ef('0x1f')]);}return _0x368685[_0x32ef('0x135')](_0x1ad397);}})[_0x32ef('0x26')](function(_0x33b1bf){if(_0x33b1bf){return _0x33b1bf?{'count':_0x4f55c5,'rows':_0x33b1bf}:null;}})['then'](respondWithResult(_0x542b35,null))[_0x32ef('0x1b')](handleError(_0x542b35,null));};exports[_0x32ef('0x136')]=function(_0x518f43,_0x1a0ba2){return db['User']['find']({'where':{'id':_0x518f43[_0x32ef('0x51')]['id']}})['then'](handleEntityNotFound(_0x1a0ba2,null))[_0x32ef('0x26')](function(_0xdca1ee){if(_0xdca1ee){return _0xdca1ee['addFaxAccounts'](_0x518f43[_0x32ef('0x5c')][_0x32ef('0x9b')],_[_0x32ef('0x5e')](_0x518f43[_0x32ef('0x5c')],[_0x32ef('0x9b'),'id'])||{});}})[_0x32ef('0x26')](respondWithResult(_0x1a0ba2,null))[_0x32ef('0x1b')](handleError(_0x1a0ba2,null));};exports['removeFaxAccounts']=function(_0x70ea9d,_0xf2d356){return db[_0x32ef('0x44')]['find']({'where':{'id':_0x70ea9d[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0xf2d356,null))['then'](function(_0x46ca08){if(_0x46ca08){return _0x46ca08[_0x32ef('0x137')](_0x70ea9d['query']['ids']);}})[_0x32ef('0x26')](respondWithStatusCode(_0xf2d356,null))[_0x32ef('0x1b')](handleError(_0xf2d356,null));};exports['getMailAccounts']=function(_0x2bbce6,_0x3915a9){var _0x32cc9d={};var _0x5ae0c5={};var _0x1fc065;var _0x239a3e;return db[_0x32ef('0x44')][_0x32ef('0xb9')]({'where':{'id':_0x2bbce6[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x3915a9,null))[_0x32ef('0x26')](function(_0x55358a){if(_0x55358a){_0x1fc065=_0x55358a;_0x5ae0c5[_0x32ef('0x56')]=_[_0x32ef('0x53')](db['MailAccount']['rawAttributes']);_0x5ae0c5[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0x2bbce6[_0x32ef('0x3f')]);_0x5ae0c5[_0x32ef('0x54')]=_['intersection'](_0x5ae0c5[_0x32ef('0x56')],_0x5ae0c5[_0x32ef('0x3f')]);_0x32cc9d['attributes']=_['intersection'](_0x5ae0c5[_0x32ef('0x56')],qs['fields'](_0x2bbce6[_0x32ef('0x3f')][_0x32ef('0x57')]));_0x32cc9d[_0x32ef('0x42')]=_0x32cc9d[_0x32ef('0x42')][_0x32ef('0x48')]?_0x32cc9d[_0x32ef('0x42')]:_0x5ae0c5[_0x32ef('0x56')];_0x32cc9d[_0x32ef('0xba')]=qs[_0x32ef('0xc7')](_0x2bbce6['query'][_0x32ef('0xc7')]);_0x32cc9d[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_['pick'](_0x2bbce6['query'],_0x5ae0c5[_0x32ef('0x54')]));if(_0x2bbce6['query'][_0x32ef('0x2e')]){_0x32cc9d[_0x32ef('0x3e')]=_[_0x32ef('0x58')](_0x32cc9d[_0x32ef('0x3e')],{'$or':_[_0x32ef('0x30')](_0x32cc9d[_0x32ef('0x42')],function(_0x3ec8ae){var _0x30d110={};_0x30d110[_0x3ec8ae]={'$like':'%'+_0x2bbce6[_0x32ef('0x3f')]['filter']+'%'};return _0x30d110;})});}_0x32cc9d=_[_0x32ef('0x58')]({},_0x32cc9d,_0x2bbce6[_0x32ef('0x59')]);return _0x1fc065[_0x32ef('0x138')](_0x32cc9d);}})[_0x32ef('0x26')](function(_0x1d32a2){if(_0x1d32a2){_0x239a3e=_0x1d32a2[_0x32ef('0x48')];if(!_0x2bbce6[_0x32ef('0x3f')][_0x32ef('0xbc')](_0x32ef('0xc2'))){_0x32cc9d[_0x32ef('0x22')]=qs['limit'](_0x2bbce6[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x32cc9d[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0x2bbce6['query'][_0x32ef('0x1f')]);}return _0x1fc065['getMailAccounts'](_0x32cc9d);}})[_0x32ef('0x26')](function(_0x3ace7f){if(_0x3ace7f){return _0x3ace7f?{'count':_0x239a3e,'rows':_0x3ace7f}:null;}})[_0x32ef('0x26')](respondWithResult(_0x3915a9,null))['catch'](handleError(_0x3915a9,null));};exports[_0x32ef('0x139')]=function(_0x58c0ea,_0x3698d4){return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x58c0ea[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x3698d4,null))['then'](function(_0x647790){if(_0x647790){return _0x647790[_0x32ef('0x139')](_0x58c0ea[_0x32ef('0x5c')][_0x32ef('0x9b')],_['omit'](_0x58c0ea[_0x32ef('0x5c')],[_0x32ef('0x9b'),'id'])||{});}})[_0x32ef('0x26')](respondWithResult(_0x3698d4,null))[_0x32ef('0x1b')](handleError(_0x3698d4,null));};exports['removeMailAccounts']=function(_0x4a1997,_0x288a92){return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x4a1997[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x288a92,null))[_0x32ef('0x26')](function(_0x3d5df0){if(_0x3d5df0){return _0x3d5df0['removeMailAccounts'](_0x4a1997[_0x32ef('0x3f')]['ids']);}})[_0x32ef('0x26')](respondWithStatusCode(_0x288a92,null))[_0x32ef('0x1b')](handleError(_0x288a92,null));};exports['getOpenchannelAccounts']=function(_0x56e84a,_0x2618c9){var _0x57811b={};var _0x19130f={};var _0x58e216;var _0xa06667;return db['User'][_0x32ef('0xb9')]({'where':{'id':_0x56e84a['params']['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x2618c9,null))[_0x32ef('0x26')](function(_0x2c7438){if(_0x2c7438){_0x58e216=_0x2c7438;_0x19130f[_0x32ef('0x56')]=_[_0x32ef('0x53')](db[_0x32ef('0x13a')][_0x32ef('0x37')]);_0x19130f['query']=_['keys'](_0x56e84a['query']);_0x19130f[_0x32ef('0x54')]=_[_0x32ef('0x55')](_0x19130f[_0x32ef('0x56')],_0x19130f[_0x32ef('0x3f')]);_0x57811b['attributes']=_[_0x32ef('0x55')](_0x19130f['model'],qs[_0x32ef('0x57')](_0x56e84a[_0x32ef('0x3f')]['fields']));_0x57811b[_0x32ef('0x42')]=_0x57811b['attributes'][_0x32ef('0x48')]?_0x57811b['attributes']:_0x19130f[_0x32ef('0x56')];_0x57811b[_0x32ef('0xba')]=qs[_0x32ef('0xc7')](_0x56e84a[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0x57811b[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0x56e84a[_0x32ef('0x3f')],_0x19130f[_0x32ef('0x54')]));if(_0x56e84a[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0x57811b[_0x32ef('0x3e')]=_[_0x32ef('0x58')](_0x57811b[_0x32ef('0x3e')],{'$or':_[_0x32ef('0x30')](_0x57811b[_0x32ef('0x42')],function(_0x59bc61){var _0x2298b0={};_0x2298b0[_0x59bc61]={'$like':'%'+_0x56e84a[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'};return _0x2298b0;})});}_0x57811b=_['merge']({},_0x57811b,_0x56e84a['options']);return _0x58e216['getOpenchannelAccounts'](_0x57811b);}})[_0x32ef('0x26')](function(_0x2dc7bf){if(_0x2dc7bf){_0xa06667=_0x2dc7bf['length'];if(!_0x56e84a[_0x32ef('0x3f')][_0x32ef('0xbc')]('nolimit')){_0x57811b[_0x32ef('0x22')]=qs[_0x32ef('0x22')](_0x56e84a[_0x32ef('0x3f')]['limit']);_0x57811b[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0x56e84a[_0x32ef('0x3f')][_0x32ef('0x1f')]);}return _0x58e216[_0x32ef('0x13b')](_0x57811b);}})[_0x32ef('0x26')](function(_0x205b76){if(_0x205b76){return _0x205b76?{'count':_0xa06667,'rows':_0x205b76}:null;}})[_0x32ef('0x26')](respondWithResult(_0x2618c9,null))[_0x32ef('0x1b')](handleError(_0x2618c9,null));};exports[_0x32ef('0x13c')]=function(_0x3e4a28,_0x3bb832){return db[_0x32ef('0x44')]['find']({'where':{'id':_0x3e4a28[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x3bb832,null))[_0x32ef('0x26')](function(_0x430899){if(_0x430899){return _0x430899[_0x32ef('0x13c')](_0x3e4a28['body'][_0x32ef('0x9b')],_['omit'](_0x3e4a28[_0x32ef('0x5c')],[_0x32ef('0x9b'),'id'])||{});}})[_0x32ef('0x26')](respondWithResult(_0x3bb832,null))['catch'](handleError(_0x3bb832,null));};exports[_0x32ef('0x13d')]=function(_0x10946a,_0xa975e1){return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x10946a[_0x32ef('0x51')]['id']}})['then'](handleEntityNotFound(_0xa975e1,null))[_0x32ef('0x26')](function(_0x38659f){if(_0x38659f){return _0x38659f[_0x32ef('0x13d')](_0x10946a['query'][_0x32ef('0x9b')]);}})[_0x32ef('0x26')](respondWithStatusCode(_0xa975e1,null))[_0x32ef('0x1b')](handleError(_0xa975e1,null));};exports['getSmsAccounts']=function(_0xc38695,_0x320d5e){var _0x1d955f={};var _0x5d9caa={};var _0x4858f5;var _0x323801;return db[_0x32ef('0x44')][_0x32ef('0xb9')]({'where':{'id':_0xc38695[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x320d5e,null))[_0x32ef('0x26')](function(_0x755a25){if(_0x755a25){_0x4858f5=_0x755a25;_0x5d9caa[_0x32ef('0x56')]=_[_0x32ef('0x53')](db[_0x32ef('0x13e')][_0x32ef('0x37')]);_0x5d9caa[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0xc38695[_0x32ef('0x3f')]);_0x5d9caa[_0x32ef('0x54')]=_['intersection'](_0x5d9caa['model'],_0x5d9caa[_0x32ef('0x3f')]);_0x1d955f['attributes']=_[_0x32ef('0x55')](_0x5d9caa[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0xc38695[_0x32ef('0x3f')][_0x32ef('0x57')]));_0x1d955f[_0x32ef('0x42')]=_0x1d955f[_0x32ef('0x42')]['length']?_0x1d955f['attributes']:_0x5d9caa['model'];_0x1d955f['order']=qs[_0x32ef('0xc7')](_0xc38695[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0x1d955f['where']=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0xc38695['query'],_0x5d9caa[_0x32ef('0x54')]));if(_0xc38695['query'][_0x32ef('0x2e')]){_0x1d955f[_0x32ef('0x3e')]=_['merge'](_0x1d955f[_0x32ef('0x3e')],{'$or':_[_0x32ef('0x30')](_0x1d955f['attributes'],function(_0x57ac43){var _0x346f2d={};_0x346f2d[_0x57ac43]={'$like':'%'+_0xc38695[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'};return _0x346f2d;})});}_0x1d955f=_[_0x32ef('0x58')]({},_0x1d955f,_0xc38695['options']);return _0x4858f5[_0x32ef('0x13f')](_0x1d955f);}})['then'](function(_0x44f2bf){if(_0x44f2bf){_0x323801=_0x44f2bf[_0x32ef('0x48')];if(!_0xc38695[_0x32ef('0x3f')]['hasOwnProperty'](_0x32ef('0xc2'))){_0x1d955f[_0x32ef('0x22')]=qs[_0x32ef('0x22')](_0xc38695[_0x32ef('0x3f')]['limit']);_0x1d955f[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0xc38695[_0x32ef('0x3f')][_0x32ef('0x1f')]);}return _0x4858f5[_0x32ef('0x13f')](_0x1d955f);}})[_0x32ef('0x26')](function(_0xac9ccb){if(_0xac9ccb){return _0xac9ccb?{'count':_0x323801,'rows':_0xac9ccb}:null;}})['then'](respondWithResult(_0x320d5e,null))[_0x32ef('0x1b')](handleError(_0x320d5e,null));};exports['addSmsAccounts']=function(_0x9debeb,_0x4dfc19){return db[_0x32ef('0x44')]['find']({'where':{'id':_0x9debeb[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x4dfc19,null))['then'](function(_0x99fe36){if(_0x99fe36){return _0x99fe36[_0x32ef('0x140')](_0x9debeb['body']['ids'],_[_0x32ef('0x5e')](_0x9debeb[_0x32ef('0x5c')],[_0x32ef('0x9b'),'id'])||{});}})[_0x32ef('0x26')](respondWithResult(_0x4dfc19,null))[_0x32ef('0x1b')](handleError(_0x4dfc19,null));};exports[_0x32ef('0x141')]=function(_0x39842e,_0x57e48f){return db[_0x32ef('0x44')]['find']({'where':{'id':_0x39842e[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x57e48f,null))[_0x32ef('0x26')](function(_0x4e9aeb){if(_0x4e9aeb){return _0x4e9aeb[_0x32ef('0x141')](_0x39842e[_0x32ef('0x3f')]['ids']);}})[_0x32ef('0x26')](respondWithStatusCode(_0x57e48f,null))['catch'](handleError(_0x57e48f,null));};exports[_0x32ef('0x142')]=function(_0x466128,_0x5cd1c3){var _0x26bd55={};var _0x2b67d2={};var _0x53f685;var _0x49e5f0;return db['User'][_0x32ef('0xb9')]({'where':{'id':_0x466128[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x5cd1c3,null))[_0x32ef('0x26')](function(_0x51a4d1){if(_0x51a4d1){_0x53f685=_0x51a4d1;_0x2b67d2[_0x32ef('0x56')]=_['keys'](db['ChatWebsite'][_0x32ef('0x37')]);_0x2b67d2[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0x466128[_0x32ef('0x3f')]);_0x2b67d2['filters']=_[_0x32ef('0x55')](_0x2b67d2[_0x32ef('0x56')],_0x2b67d2[_0x32ef('0x3f')]);_0x26bd55['attributes']=_[_0x32ef('0x55')](_0x2b67d2[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0x466128[_0x32ef('0x3f')][_0x32ef('0x57')]));_0x26bd55[_0x32ef('0x42')]=_0x26bd55[_0x32ef('0x42')]['length']?_0x26bd55[_0x32ef('0x42')]:_0x2b67d2[_0x32ef('0x56')];_0x26bd55['order']=qs[_0x32ef('0xc7')](_0x466128[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0x26bd55[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0x466128[_0x32ef('0x3f')],_0x2b67d2['filters']));if(_0x466128[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0x26bd55[_0x32ef('0x3e')]=_[_0x32ef('0x58')](_0x26bd55[_0x32ef('0x3e')],{'$or':_['map'](_0x26bd55['attributes'],function(_0x145e77){var _0x3cde8d={};_0x3cde8d[_0x145e77]={'$like':'%'+_0x466128[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'};return _0x3cde8d;})});}_0x26bd55=_[_0x32ef('0x58')]({},_0x26bd55,_0x466128[_0x32ef('0x59')]);return _0x53f685[_0x32ef('0x142')](_0x26bd55);}})[_0x32ef('0x26')](function(_0x22ba51){if(_0x22ba51){_0x49e5f0=_0x22ba51[_0x32ef('0x48')];if(!_0x466128[_0x32ef('0x3f')][_0x32ef('0xbc')](_0x32ef('0xc2'))){_0x26bd55['limit']=qs[_0x32ef('0x22')](_0x466128[_0x32ef('0x3f')]['limit']);_0x26bd55[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0x466128[_0x32ef('0x3f')]['offset']);}return _0x53f685[_0x32ef('0x142')](_0x26bd55);}})[_0x32ef('0x26')](function(_0xc0e79f){if(_0xc0e79f){return _0xc0e79f?{'count':_0x49e5f0,'rows':_0xc0e79f}:null;}})[_0x32ef('0x26')](respondWithResult(_0x5cd1c3,null))[_0x32ef('0x1b')](handleError(_0x5cd1c3,null));};exports[_0x32ef('0x143')]=function(_0x542aab,_0x1213a7){return db['User'][_0x32ef('0x32')]({'where':{'id':_0x542aab[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x1213a7,null))['then'](function(_0xb59c84){if(_0xb59c84){return _0xb59c84[_0x32ef('0x143')](_0x542aab[_0x32ef('0x5c')]['ids'],_[_0x32ef('0x5e')](_0x542aab[_0x32ef('0x5c')],[_0x32ef('0x9b'),'id'])||{});}})['then'](respondWithResult(_0x1213a7,null))[_0x32ef('0x1b')](handleError(_0x1213a7,null));};exports[_0x32ef('0x144')]=function(_0x5b4f60,_0x9815ee){return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x5b4f60[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x9815ee,null))['then'](function(_0x2416ce){if(_0x2416ce){return _0x2416ce[_0x32ef('0x144')](_0x5b4f60[_0x32ef('0x3f')][_0x32ef('0x9b')]);}})[_0x32ef('0x26')](respondWithStatusCode(_0x9815ee,null))[_0x32ef('0x1b')](handleError(_0x9815ee,null));};exports[_0x32ef('0x145')]=function(_0x211939,_0x2541e0){var _0x442771={};var _0x1b9e44={};var _0xf85bce;var _0x5b7a19;return db[_0x32ef('0x44')]['findOne']({'where':{'id':_0x211939['params']['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x2541e0,null))['then'](function(_0x498813){if(_0x498813){_0xf85bce=_0x498813;_0x1b9e44[_0x32ef('0x56')]=_['keys'](db[_0x32ef('0x146')]['rawAttributes']);_0x1b9e44[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0x211939[_0x32ef('0x3f')]);_0x1b9e44[_0x32ef('0x54')]=_[_0x32ef('0x55')](_0x1b9e44['model'],_0x1b9e44[_0x32ef('0x3f')]);_0x442771['attributes']=_[_0x32ef('0x55')](_0x1b9e44[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0x211939[_0x32ef('0x3f')][_0x32ef('0x57')]));_0x442771[_0x32ef('0x42')]=_0x442771[_0x32ef('0x42')][_0x32ef('0x48')]?_0x442771[_0x32ef('0x42')]:_0x1b9e44[_0x32ef('0x56')];_0x442771[_0x32ef('0xba')]=qs[_0x32ef('0xc7')](_0x211939[_0x32ef('0x3f')]['sort']);_0x442771[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0x211939[_0x32ef('0x3f')],_0x1b9e44[_0x32ef('0x54')]));if(_0x211939[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0x442771[_0x32ef('0x3e')]=_['merge'](_0x442771[_0x32ef('0x3e')],{'$or':_[_0x32ef('0x30')](_0x442771[_0x32ef('0x42')],function(_0x3eacb3){var _0x3dbf89={};_0x3dbf89[_0x3eacb3]={'$like':'%'+_0x211939[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'};return _0x3dbf89;})});}_0x442771=_[_0x32ef('0x58')]({},_0x442771,_0x211939[_0x32ef('0x59')]);return _0xf85bce[_0x32ef('0x145')](_0x442771);}})[_0x32ef('0x26')](function(_0x4a7b10){if(_0x4a7b10){_0x5b7a19=_0x4a7b10[_0x32ef('0x48')];if(!_0x211939[_0x32ef('0x3f')][_0x32ef('0xbc')]('nolimit')){_0x442771['limit']=qs[_0x32ef('0x22')](_0x211939[_0x32ef('0x3f')]['limit']);_0x442771[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0x211939[_0x32ef('0x3f')][_0x32ef('0x1f')]);}return _0xf85bce[_0x32ef('0x145')](_0x442771);}})[_0x32ef('0x26')](function(_0x4348d4){if(_0x4348d4){return _0x4348d4?{'count':_0x5b7a19,'rows':_0x4348d4}:null;}})['then'](respondWithResult(_0x2541e0,null))[_0x32ef('0x1b')](handleError(_0x2541e0,null));};exports[_0x32ef('0x147')]=function(_0x1fc69f,_0x47d80e){return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x1fc69f[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x47d80e,null))[_0x32ef('0x26')](function(_0xa93768){if(_0xa93768){return _0xa93768[_0x32ef('0x147')](_0x1fc69f[_0x32ef('0x5c')][_0x32ef('0x9b')],_[_0x32ef('0x5e')](_0x1fc69f['body'],[_0x32ef('0x9b'),'id'])||{});}})[_0x32ef('0x26')](respondWithResult(_0x47d80e,null))[_0x32ef('0x1b')](handleError(_0x47d80e,null));};exports[_0x32ef('0x148')]=function(_0x40df10,_0x19f573){return db[_0x32ef('0x44')]['find']({'where':{'id':_0x40df10[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x19f573,null))[_0x32ef('0x26')](function(_0x45d737){if(_0x45d737){return _0x45d737['removeWhatsappAccounts'](_0x40df10['query'][_0x32ef('0x9b')]);}})[_0x32ef('0x26')](respondWithStatusCode(_0x19f573,null))[_0x32ef('0x1b')](handleError(_0x19f573,null));};exports['getSquareProjects']=function(_0x42bf31,_0x450d03){var _0x3cfd84={};var _0x2e7e05={};var _0x4046a0;var _0xa7a8c;return db[_0x32ef('0x44')]['findOne']({'where':{'id':_0x42bf31[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x450d03,null))[_0x32ef('0x26')](function(_0x5406a7){if(_0x5406a7){_0x4046a0=_0x5406a7;_0x2e7e05[_0x32ef('0x56')]=_[_0x32ef('0x53')](db[_0x32ef('0x149')]['rawAttributes']);_0x2e7e05[_0x32ef('0x3f')]=_[_0x32ef('0x53')](_0x42bf31[_0x32ef('0x3f')]);_0x2e7e05['filters']=_[_0x32ef('0x55')](_0x2e7e05[_0x32ef('0x56')],_0x2e7e05[_0x32ef('0x3f')]);_0x3cfd84[_0x32ef('0x42')]=_[_0x32ef('0x55')](_0x2e7e05[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0x42bf31[_0x32ef('0x3f')][_0x32ef('0x57')]));_0x3cfd84['attributes']=_0x3cfd84[_0x32ef('0x42')][_0x32ef('0x48')]?_0x3cfd84[_0x32ef('0x42')]:_0x2e7e05[_0x32ef('0x56')];_0x3cfd84['order']=qs[_0x32ef('0xc7')](_0x42bf31[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0x3cfd84[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0x42bf31['query'],_0x2e7e05[_0x32ef('0x54')]));if(_0x42bf31[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0x3cfd84['where']=_['merge'](_0x3cfd84['where'],{'$or':_['map'](_0x3cfd84['attributes'],function(_0x4565f7){var _0x24a8b3={};_0x24a8b3[_0x4565f7]={'$like':'%'+_0x42bf31[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'};return _0x24a8b3;})});}_0x3cfd84=_[_0x32ef('0x58')]({},_0x3cfd84,_0x42bf31[_0x32ef('0x59')]);return _0x4046a0[_0x32ef('0x14a')](_0x3cfd84);}})['then'](function(_0x2cac19){if(_0x2cac19){_0xa7a8c=_0x2cac19[_0x32ef('0x48')];if(!_0x42bf31[_0x32ef('0x3f')]['hasOwnProperty'](_0x32ef('0xc2'))){_0x3cfd84[_0x32ef('0x22')]=qs['limit'](_0x42bf31[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x3cfd84[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0x42bf31['query'][_0x32ef('0x1f')]);}return _0x4046a0[_0x32ef('0x14a')](_0x3cfd84);}})[_0x32ef('0x26')](function(_0x47f96d){if(_0x47f96d){return _0x47f96d?{'count':_0xa7a8c,'rows':_0x47f96d}:null;}})[_0x32ef('0x26')](respondWithResult(_0x450d03,null))['catch'](handleError(_0x450d03,null));};exports[_0x32ef('0x14b')]=function(_0x370448,_0xb10c1f){return db['User'][_0x32ef('0x32')]({'where':{'id':_0x370448[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0xb10c1f,null))[_0x32ef('0x26')](function(_0x56c1a2){if(_0x56c1a2){return _0x56c1a2[_0x32ef('0x14b')](_0x370448['body'][_0x32ef('0x9b')],_['omit'](_0x370448['body'],[_0x32ef('0x9b'),'id'])||{});}})[_0x32ef('0x26')](respondWithResult(_0xb10c1f,null))['catch'](handleError(_0xb10c1f,null));};exports[_0x32ef('0x14c')]=function(_0x2a06a1,_0x4d20b6){return db[_0x32ef('0x44')][_0x32ef('0x32')]({'where':{'id':_0x2a06a1[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0x4d20b6,null))['then'](function(_0x336b7d){if(_0x336b7d){return _0x336b7d['removeSquareProjects'](_0x2a06a1[_0x32ef('0x3f')][_0x32ef('0x9b')]);}})['then'](respondWithStatusCode(_0x4d20b6,null))[_0x32ef('0x1b')](handleError(_0x4d20b6,null));};exports[_0x32ef('0x14d')]=function(_0x26e533,_0x534d9b){var _0x52750e={},_0x484865={},_0x3c02a1={'count':0x0,'rows':[]};var _0x162c04=db['CmHopper']['rawAttributes'];_0x484865['model']=_[_0x32ef('0x53')](_0x162c04);_0x484865[_0x32ef('0x3f')]=_['keys'](_0x26e533[_0x32ef('0x3f')]);_0x484865[_0x32ef('0x54')]=_['intersection'](_0x484865[_0x32ef('0x56')],_0x484865[_0x32ef('0x3f')]);_0x484865['filters']=_['concat'](_0x484865[_0x32ef('0x54')],['$and',_0x32ef('0x14e'),_0x32ef('0x14f'),_0x32ef('0x150'),_0x32ef('0x151'),_0x32ef('0x152'),_0x32ef('0x153'),_0x32ef('0x154'),_0x32ef('0x155'),_0x32ef('0x156'),_0x32ef('0x157'),_0x32ef('0x158'),'$notIn',_0x32ef('0x159'),_0x32ef('0x15a'),_0x32ef('0x15b'),_0x32ef('0x15c'),_0x32ef('0x159'),'$overlap',_0x32ef('0x15d'),_0x32ef('0x15e'),_0x32ef('0x15f')]);_0x52750e['attributes']=_['intersection'](_0x484865[_0x32ef('0x56')],qs[_0x32ef('0x57')](_0x26e533[_0x32ef('0x3f')]['fields']));_0x52750e[_0x32ef('0x42')]=_0x52750e[_0x32ef('0x42')][_0x32ef('0x48')]?_0x52750e['attributes']:_0x484865[_0x32ef('0x56')];if(!_0x26e533[_0x32ef('0x3f')][_0x32ef('0xbc')]('nolimit')){_0x52750e[_0x32ef('0x22')]=qs[_0x32ef('0x22')](_0x26e533[_0x32ef('0x3f')][_0x32ef('0x22')]);_0x52750e[_0x32ef('0x1f')]=qs[_0x32ef('0x1f')](_0x26e533[_0x32ef('0x3f')][_0x32ef('0x1f')]);}_0x52750e[_0x32ef('0xba')]=qs[_0x32ef('0xc7')](_0x26e533[_0x32ef('0x3f')][_0x32ef('0xc7')]);_0x52750e[_0x32ef('0x3e')]=qs[_0x32ef('0x54')](_[_0x32ef('0xbb')](_0x26e533['query'],_0x484865[_0x32ef('0x54')]));if(_0x26e533[_0x32ef('0x3f')][_0x32ef('0x2e')]){_0x52750e['where']=_[_0x32ef('0x58')](_0x52750e[_0x32ef('0x3e')],{'$or':_[_0x32ef('0x30')](_0x52750e[_0x32ef('0x42')],function(_0x5c25ce){var _0x292460={};_0x292460[_0x5c25ce]={'$like':'%'+_0x26e533['query'][_0x32ef('0x2e')]+'%'};return _0x292460;})});}_0x52750e[_0x32ef('0x3e')]={'$and':[_0x52750e[_0x32ef('0x3e')],{'$or':[{'UserId':_0x26e533[_0x32ef('0x51')]['id']},{'OwnerId':_0x26e533['params']['id']}]}]};_0x52750e=_[_0x32ef('0x58')]({},_0x52750e,_0x26e533['options']);var _0x51210d={'where':_0x52750e[_0x32ef('0x3e')]};return db[_0x32ef('0x160')][_0x32ef('0x21')](_0x51210d)[_0x32ef('0x26')](function(_0x4ca66){_0x3c02a1[_0x32ef('0x21')]=_0x4ca66;if(_0x26e533[_0x32ef('0x3f')]['includeAll']){_0x52750e[_0x32ef('0x41')]=[{'attributes':['id',_0x32ef('0x161'),_0x32ef('0x162'),_0x32ef('0xda')],'model':db['CmContact'],'as':_0x32ef('0x163')},{'attributes':['id',_0x32ef('0x33'),'dialActive'],'model':db[_0x32ef('0x164')],'as':_0x32ef('0xc3')}];}return db[_0x32ef('0x160')]['findAll'](_0x52750e);})[_0x32ef('0x26')](function(_0x3e2fa5){_0x3c02a1['rows']=_0x3e2fa5;return _0x3c02a1;})[_0x32ef('0x26')](respondWithFilteredResult(_0x534d9b,_0x52750e))[_0x32ef('0x1b')](handleError(_0x534d9b,null));};exports[_0x32ef('0x165')]=function(_0x5b78a3,_0x2db0f0){if(!_[_0x32ef('0x64')](_0x5b78a3[_0x32ef('0x2b')]['id'])&&(_0x5b78a3[_0x32ef('0x2b')][_0x32ef('0x29')]==_0x32ef('0x2a')||_0x5b78a3['user']['role']==_0x32ef('0x2b'))){return db[_0x32ef('0x44')][_0x32ef('0xb9')]({'where':{'id':_0x5b78a3[_0x32ef('0x51')]['id']},'raw':!![]})[_0x32ef('0x26')](function(_0x10caf4){return authService['retrieveApiKey'](_0x10caf4);})[_0x32ef('0x26')](function(_0x138a3e){if(_0x138a3e){return _0x2db0f0[_0x32ef('0x23')](0xc8)[_0x32ef('0x1e')]({'api_key':_0x138a3e['token']});}else{return _0x2db0f0[_0x32ef('0x23')](0xcc)[_0x32ef('0x1e')]({'message':_0x32ef('0x166')});}})[_0x32ef('0x1b')](handleError(_0x2db0f0,0x193));}else{return _0x2db0f0[_0x32ef('0x23')](0x191)[_0x32ef('0x1e')]({'message':_0x32ef('0x167')});}};exports[_0x32ef('0x168')]=function(_0x1ae5e9,_0x5eacbd){if(!_['isNil'](_0x1ae5e9[_0x32ef('0x2b')]['id'])&&(_0x1ae5e9[_0x32ef('0x2b')][_0x32ef('0x29')]==_0x32ef('0x2a')||_0x1ae5e9[_0x32ef('0x2b')][_0x32ef('0x29')]=='user')){return db['User'][_0x32ef('0x32')]({'where':{'id':_0x1ae5e9[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](function(_0x376ce1){return authService[_0x32ef('0x169')](_0x376ce1);})[_0x32ef('0x26')](function(_0x218854){return db[_0x32ef('0x44')][_0x32ef('0x25')]({'apiKeyIat':_0x218854['iat'],'apiKeyNonce':_0x218854['nonce']},{'where':{'id':_0x1ae5e9[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](function(){return _0x5eacbd[_0x32ef('0x23')](0xc8)['json']({'api_key':_0x218854[_0x32ef('0x16a')]});});})[_0x32ef('0x1b')](handleError(_0x5eacbd,0x193));}else{return _0x5eacbd[_0x32ef('0x23')](0x191)['json']({'message':_0x32ef('0x167')});}};exports[_0x32ef('0x16b')]=function(_0x5dcbbd,_0xb01db9){if(!_[_0x32ef('0x64')](_0x5dcbbd[_0x32ef('0x2b')]['id'])&&(_0x5dcbbd[_0x32ef('0x2b')]['role']==_0x32ef('0x2a')||_0x5dcbbd[_0x32ef('0x2b')]['role']=='user')){return db[_0x32ef('0x44')]['find']({'where':{'id':_0x5dcbbd[_0x32ef('0x51')]['id']}})[_0x32ef('0x26')](handleEntityNotFound(_0xb01db9,null))['then'](function(_0x3a2a60){if(_0x3a2a60&&_0x3a2a60[_0x32ef('0x16c')]&&_0x3a2a60[_0x32ef('0x16d')])return _0x3a2a60;else throw{'message':_0x32ef('0x16e')};})[_0x32ef('0x26')](function(_0x1813ae){return db[_0x32ef('0x44')][_0x32ef('0x25')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x5dcbbd['params']['id']}});})['then'](respondWithStatusCode(_0xb01db9,0xc8))['catch'](handleError(_0xb01db9,0x193));}else{return _0xb01db9[_0x32ef('0x23')](0x191)['json']({'message':_0x32ef('0x167')});}};exports['whoami']=function(_0x5d9007,_0x481043){var _0x4e3ed7=_0x5d9007['user']['get']({'plain':!![]});if(!_0x4e3ed7){return _0x481043['status'](0x191)[_0x32ef('0x35')](_0x32ef('0x16f'));}else{return _0x481043['status'](0xc8)[_0x32ef('0x1e')](_0x4e3ed7);}};exports[_0x32ef('0x170')]=function(_0x1d09a2,_0x43726c){var _0x1e5f5e={'offset':0x0},_0x400d1e={'count':0x0,'rows':[]};Promise[_0x32ef('0xef')]()[_0x32ef('0x26')](function(){if(!_0x1d09a2[_0x32ef('0x3f')]['filter']&&!_0x1d09a2[_0x32ef('0x3f')]['teams']&&!_0x1d09a2[_0x32ef('0x3f')]['queues'])return[];return Promise[_0x32ef('0xef')]()[_0x32ef('0x26')](function(){var _0x334297=[];if(!_[_0x32ef('0x80')](_0x1d09a2[_0x32ef('0x3f')][_0x32ef('0x171')])){_0x334297[_0x32ef('0x43')](db['Team'][_0x32ef('0x45')]({'attributes':['id',_0x32ef('0x33')],'where':{'id':_0x1d09a2['query'][_0x32ef('0x171')]}}));}if(!_['isEmpty'](_0x1d09a2[_0x32ef('0x3f')][_0x32ef('0x172')])){_0x334297['push'](db[_0x32ef('0x164')]['findAll']({'attributes':['id','name'],'type':_0x32ef('0x173'),'where':{'id':_0x1d09a2[_0x32ef('0x3f')][_0x32ef('0x172')]}}));}return Promise[_0x32ef('0x4f')](_0x334297);})[_0x32ef('0x26')](function(_0x5ca9c8){var _0x3c96d3=_[_0x32ef('0x10b')](_0x5ca9c8)[_0x32ef('0x30')](function(_0x5e0d7d){return _0x5e0d7d[_0x32ef('0x118')]({'attributes':['id',_0x32ef('0x33'),_0x32ef('0x5f'),_0x32ef('0x91')],'raw':!![]});});return Promise['all'](_0x3c96d3);})[_0x32ef('0x26')](function(_0x56346d){var _0x2f5a46=_['flatten'](_0x56346d);if(!_0x1d09a2[_0x32ef('0x3f')][_0x32ef('0x2e')])return _0x2f5a46;if(_[_0x32ef('0x80')](_0x2f5a46)){return db[_0x32ef('0x44')][_0x32ef('0x45')]({'attributes':['id',_0x32ef('0x33'),_0x32ef('0x5f'),'online'],'where':{'role':_0x32ef('0x2c'),'$or':[db['sequelize'][_0x32ef('0x3e')](db[_0x32ef('0x66')]['fn'](_0x32ef('0x174'),db[_0x32ef('0x66')][_0x32ef('0x175')](_0x32ef('0x33'))),{'$like':'%'+_0x1d09a2[_0x32ef('0x3f')]['filter'][_0x32ef('0x98')]()+'%'}),{'internal':{'$like':'%'+_0x1d09a2[_0x32ef('0x3f')][_0x32ef('0x2e')]+'%'}}]},'raw':!![]});}else{return _(_0x2f5a46)[_0x32ef('0x10b')]()['filter'](function(_0x55506e){return _0x55506e[_0x32ef('0x33')][_0x32ef('0x98')]()[_0x32ef('0x3a')](_0x1d09a2['query'][_0x32ef('0x2e')][_0x32ef('0x98')]())||_0x55506e[_0x32ef('0x5f')]['toString']()['includes'](_0x1d09a2[_0x32ef('0x3f')][_0x32ef('0x2e')]);})[_0x32ef('0x31')]();}})[_0x32ef('0x26')](function(_0x17c6fe){var _0x1ad723='name';var _0x36e281=_0x32ef('0x176');if(_0x1d09a2[_0x32ef('0x3f')][_0x32ef('0xc7')]){var _0x36e281=_0x1d09a2[_0x32ef('0x3f')][_0x32ef('0xc7')][0x0]==='-'?_0x32ef('0x177'):_0x32ef('0x176');var _0x1ad723=_0x36e281===_0x32ef('0x176')?_0x1d09a2[_0x32ef('0x3f')][_0x32ef('0xc7')]:_0x1d09a2[_0x32ef('0x3f')][_0x32ef('0xc7')][_0x32ef('0x178')](0x1);}return _(_0x17c6fe)[_0x32ef('0x179')]('id')[_0x32ef('0x17a')]([function(_0x141c77){return _0x1ad723===_0x32ef('0x33')?_0x141c77[_0x1ad723][_0x32ef('0x98')]():_0x141c77[_0x1ad723];}],[_0x36e281])[_0x32ef('0x30')](function(_0x12f4e6){return _[_0x32ef('0xbb')](_0x12f4e6,['id',_0x32ef('0x33'),_0x32ef('0x5f'),_0x32ef('0x91')]);})['value']();})[_0x32ef('0x26')](function(_0xf3027d){return client[_0x32ef('0x12')]('Agents',_0x1d09a2)[_0x32ef('0x26')](function(_0x657b58){if(_0x657b58['error'])throw new Error(_0x32ef('0x17b'));var _0x180134=_0x657b58[_0x32ef('0x1a')];var _0x4edba3=jayson['client'][_0x32ef('0x17c')]({'port':0x232c});return _0x4edba3[_0x32ef('0x12')]('Agents',_0x1d09a2)[_0x32ef('0x26')](function(_0x530db0){if(_0x530db0[_0x32ef('0x17')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x2d8e73=_0x530db0[_0x32ef('0x1a')];return _[_0x32ef('0x58')]({},_0x2d8e73,_0x180134);});})['then'](function(_0x551725){return _[_0x32ef('0x30')](_0xf3027d,function(_0x401a1c){var _0x325b13=_['find'](_0x551725[_0x32ef('0x46')],['id',_0x401a1c['id']]);if(!_0x325b13||!_0x401a1c[_0x32ef('0x91')]){_0x401a1c[_0x32ef('0x23')]='offline';}else if(_0x325b13[_0x32ef('0x93')]){_0x401a1c['status']='pause';}else{_0x401a1c[_0x32ef('0x23')]=_['includes']([_0x32ef('0x17d'),'unknown',_0x32ef('0x17e'),'ringing',null,undefined],_0x325b13[_0x32ef('0x17f')])?_0x32ef('0x91'):_0x32ef('0x180');}return _0x401a1c;});});});})[_0x32ef('0x26')](function(_0x38ceb3){if(!_0x1d09a2[_0x32ef('0x3f')][_0x32ef('0xbc')]('nolimit')){_0x1e5f5e['limit']=qs[_0x32ef('0x22')](_0x1d09a2[_0x32ef('0x3f')]['limit']||0xa);_0x1e5f5e[_0x32ef('0x1f')]=qs['offset'](_0x1d09a2[_0x32ef('0x3f')][_0x32ef('0x1f')]);}_0x400d1e[_0x32ef('0x21')]=_0x38ceb3[_0x32ef('0x48')];_0x400d1e[_0x32ef('0x46')]=_0x1e5f5e[_0x32ef('0x22')]?_0x38ceb3[_0x32ef('0x181')](_0x1e5f5e[_0x32ef('0x1f')],_0x1e5f5e[_0x32ef('0x1f')]+_0x1e5f5e[_0x32ef('0x22')]):_0x38ceb3;return _0x400d1e;})[_0x32ef('0x26')](respondWithFilteredResult(_0x43726c,_0x1e5f5e))['catch'](handleError(_0x43726c,null));};function get_open_tabs(_0x13546f,_0x5d2a04){var _0x39ed56=_0x13546f['charAt'](0x0)[_0x32ef('0x182')]()+_0x13546f[_0x32ef('0x181')](0x1);var _0x4dfdbc={'type':db[_0x32ef('0x87')][_0x32ef('0x183')][_0x32ef('0x67')],'raw':!![]};return new BPromise(function(_0x492cd7,_0x106ff6){var _0x4138da=squel[_0x32ef('0x184')]()[_0x32ef('0x185')](_0x32ef('0x186')+_0x39ed56+_0x32ef('0x187'),'id')[_0x32ef('0x185')](_0x32ef('0x188'))[_0x32ef('0x68')]('user_has_'+_0x13546f+_0x32ef('0x189'),'ui')['where'](_0x32ef('0x18a'),_0x5d2a04['id']);return db['sequelize'][_0x32ef('0x3f')](_0x4138da[_0x32ef('0x18b')](),_0x4dfdbc)['then'](function(_0x935262){_0x5d2a04[_0x39ed56+'OpenTabs']=_0x935262;_0x492cd7(_0x935262);})[_0x32ef('0x1b')](function(_0x47b722){_0x106ff6(_0x47b722);});});};
\ No newline at end of file
index 52a480d..9f93ab8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9233=['events','User','setMaxListeners','remove','emit','hook'];(function(_0xeff2c3,_0x3a5a82){var _0x2cade6=function(_0x5a26a1){while(--_0x5a26a1){_0xeff2c3['push'](_0xeff2c3['shift']());}};_0x2cade6(++_0x3a5a82);}(_0x9233,0x114));var _0x3923=function(_0x3944b3,_0xf05375){_0x3944b3=_0x3944b3-0x0;var _0xbf7a53=_0x9233[_0x3944b3];return _0xbf7a53;};'use strict';var EventEmitter=require(_0x3923('0x0'));var User=require('../../mysqldb')['db'][_0x3923('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x3923('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x3923('0x3')};function emitEvent(_0x255edd){return function(_0x50db44,_0x1dbd47,_0x263ff6){UserEvents['emit'](_0x255edd+':'+_0x50db44['id'],_0x50db44);UserEvents[_0x3923('0x4')](_0x255edd,_0x50db44);_0x263ff6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0x3923('0x5')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
+var _0xca7b=['update','remove','emit','hasOwnProperty','hook','events'];(function(_0x38a5af,_0x4c9ce4){var _0x460fa4=function(_0x57d83c){while(--_0x57d83c){_0x38a5af['push'](_0x38a5af['shift']());}};_0x460fa4(++_0x4c9ce4);}(_0xca7b,0x143));var _0xbca7=function(_0xd1bce6,_0x542824){_0xd1bce6=_0xd1bce6-0x0;var _0x1788cb=_0xca7b[_0xd1bce6];return _0x1788cb;};'use strict';var EventEmitter=require(_0xbca7('0x0'));var User=require('../../mysqldb')['db']['User'];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xbca7('0x1'),'afterDestroy':_0xbca7('0x2')};function emitEvent(_0x14c83b){return function(_0x2be7bb,_0x488b9a,_0x3fc7cc){UserEvents[_0xbca7('0x3')](_0x14c83b+':'+_0x2be7bb['id'],_0x2be7bb);UserEvents[_0xbca7('0x3')](_0x14c83b,_0x2be7bb);_0x3fc7cc(null);};}for(var e in events){if(events[_0xbca7('0x4')](e)){var event=events[e];User[_0xbca7('0x5')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
index 0183428..36c34d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99c0=['_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','findAll','then','concat','define','User','utf8','find','userProfileId','updateMd5Password','updatePassword','privacyEnabled','changed','catch','internal','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','salt','base64','pbkdf2Sync','sha1','pbkdf2','indexOf','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','util','md5','length','from-sip','system','format','%s%s','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','Authenticate','password','ChanSpy','name','StopMixMonitor','wav','WAV','context','CDR(type)=internal','extensionMonitor','includes'];(function(_0x2297af,_0x5f4bd5){var _0x581df6=function(_0x1fa835){while(--_0x1fa835){_0x2297af['push'](_0x2297af['shift']());}};_0x581df6(++_0x5f4bd5);}(_0x99c0,0x1ba));var _0x099c=function(_0x1cfca7,_0x5b73b4){_0x1cfca7=_0x1cfca7-0x0;var _0x3bf2fb=_0x99c0[_0x1cfca7];return _0x3bf2fb;};'use strict';var BPromise=require(_0x099c('0x0'));var crypto=require('crypto');var util=require(_0x099c('0x1'));var md5=require(_0x099c('0x2'));var _=require('lodash');var attributes=require('./user.attributes');var authTypes=['google'];var validatePresenceOf=function(_0x520465){return _0x520465&&_0x520465[_0x099c('0x3')];};var getChanSpyApplications=function(_0x286851,_0x4ab93d,_0x38bf9f){var _0x59ef06={'context':_0x286851['context']||_0x099c('0x4'),'type':_0x099c('0x5'),'isApp':![],'UserId':_0x286851['id']};var _0x39120d=[];for(var _0x5c903e=0x0,_0x2a5355=0x1;_0x5c903e<_0x38bf9f[_0x099c('0x3')];_0x5c903e++,_0x2a5355=0x1){var _0x1d9d18={'exten':util[_0x099c('0x6')](_0x099c('0x7'),_0x38bf9f[_0x5c903e]['prefix'],_0x4ab93d),'ChanSpyId':_0x38bf9f[_0x5c903e]['id']};_0x39120d[_0x099c('0x8')](_[_0x099c('0x9')]({'app':_0x099c('0xa'),'appdata':util['format'](_0x099c('0xb'),_0x099c('0xc')),'priority':_0x2a5355++},_0x59ef06,_0x1d9d18));if(_0x38bf9f[_0x5c903e][_0x099c('0xd')]){_0x39120d[_0x099c('0x8')](_['merge']({'app':_0x099c('0xe'),'appdata':util['format']('${UNIQUEID}.%s,a',_0x38bf9f[_0x5c903e][_0x099c('0xf')]),'priority':_0x2a5355++},_0x59ef06,_0x1d9d18));}if(_0x38bf9f[_0x5c903e]['auth']){_0x39120d['push'](_[_0x099c('0x9')]({'app':_0x099c('0x10'),'appdata':_0x38bf9f[_0x5c903e][_0x099c('0x11')],'priority':_0x2a5355++},_0x59ef06,_0x1d9d18));}_0x39120d[_0x099c('0x8')](_[_0x099c('0x9')]({'app':_0x099c('0x12'),'appdata':util[_0x099c('0x6')]('SIP/%s,%s',_0x286851[_0x099c('0x13')],_0x38bf9f[_0x5c903e]['options']?_0x38bf9f[_0x5c903e]['options']['join'](''):''),'priority':_0x2a5355++},_0x59ef06,_0x1d9d18));if(_0x38bf9f[_0x5c903e][_0x099c('0xd')]){_0x39120d[_0x099c('0x8')](_[_0x099c('0x9')]({'app':_0x099c('0x14'),'priority':_0x2a5355++},_0x59ef06,_0x1d9d18));}}return _0x39120d;};var getUserApplications=function(_0x4f5eb4,_0x4256b6){var _0x266447=[_0x099c('0x15'),_0x099c('0x16'),'gsm'];var _0x3f702c={'context':_0x4f5eb4[_0x099c('0x17')]||_0x099c('0x4'),'exten':_0x4256b6,'type':'system','isApp':![],'UserId':_0x4f5eb4['id']};var _0x45d93e=[{'app':_0x099c('0xa'),'appdata':_0x099c('0x18')}];if(_0x4f5eb4[_0x099c('0x19')]&&_[_0x099c('0x1a')](_0x266447,_0x4f5eb4[_0x099c('0x19')])){_0x45d93e[_0x099c('0x8')]({'app':'Set','appdata':_0x099c('0x1b')});_0x45d93e[_0x099c('0x8')]({'app':_0x099c('0xa'),'appdata':util[_0x099c('0x6')](_0x099c('0x1c'),_0x4f5eb4[_0x099c('0x19')])});_0x45d93e[_0x099c('0x8')]({'app':_0x099c('0x1d'),'appdata':util[_0x099c('0x6')](_0x099c('0x1e'),_0x4f5eb4[_0x099c('0x13')])});}else{_0x45d93e[_0x099c('0x8')]({'app':'Dial','appdata':util['format'](_0x099c('0x1f'),_0x4f5eb4[_0x099c('0x13')])});}_0x45d93e['push']({'app':_0x099c('0x20')});for(var _0x19b380=0x0;_0x19b380<_0x45d93e[_0x099c('0x3')];_0x19b380++){_0x45d93e[_0x19b380][_0x099c('0x21')]=_0x19b380+0x1;_0x45d93e[_0x19b380]=_[_0x099c('0x22')](_0x45d93e[_0x19b380],_0x3f702c);}return _0x45d93e;};var getChanSpyPromise=function(_0x595055,_0x48e600){return new BPromise(function(_0x3f9c44,_0x31f9c3){return _0x595055['VoiceChanSpy'][_0x099c('0x23')]()[_0x099c('0x24')](function(_0x342715){if(_0x342715){var _0x55d55=getChanSpyApplications(_0x48e600,_0x48e600['internal'],_0x342715);if(_0x48e600['internal']!=_0x48e600[_0x099c('0x13')]){_0x55d55=_0x55d55[_0x099c('0x25')](getChanSpyApplications(_0x48e600,_0x48e600[_0x099c('0x13')],_0x342715));}return _0x3f9c44(_0x55d55);}return _0x3f9c44([]);})['catch'](function(_0x2b5387){_0x31f9c3(_0x2b5387);});});};module['exports']=function(_0x23484d,_0x34bf1e){var _0xff9c6b=_0x23484d['models'];return _0x23484d[_0x099c('0x26')](_0x099c('0x27'),attributes,{'tableName':'users','charset':_0x099c('0x28'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x61ac5c,_0x4d1da9,_0x31b3e2){var _0x464f9a=typeof _0x61ac5c['userProfileId']==='undefined'?BPromise['resolve'](null):_0xff9c6b['UserProfile'][_0x099c('0x29')]({'where':{'id':_0x61ac5c[_0x099c('0x2a')]}});_0x464f9a[_0x099c('0x24')](function(_0x427d36){if(_0x427d36){_0x61ac5c['privacyEnabled']=_0x427d36['privacyEnabled'];}})['then'](function(){_0x61ac5c[_0x099c('0x2b')]();_0x61ac5c[_0x099c('0x2c')](_0x31b3e2);})['catch'](function(_0x9cf3c3){_0x31b3e2(_0x9cf3c3);});},'beforeUpdate':function(_0x45b4e4,_0x2ab606,_0x1135b8){Promise['resolve']()[_0x099c('0x24')](function(){if(_0x45b4e4['changed'](_0x099c('0x2a'))===![])return;return _0xff9c6b['UserProfile'][_0x099c('0x29')]({'where':{'id':_0x45b4e4[_0x099c('0x2a')]}})[_0x099c('0x24')](function(_0x3e9d53){if(_0x3e9d53)_0x45b4e4[_0x099c('0x2d')]=_0x3e9d53[_0x099c('0x2d')];return;});})[_0x099c('0x24')](function(){if(_0x45b4e4[_0x099c('0x2e')](_0x099c('0x11'))){_0x45b4e4[_0x099c('0x2b')]();return _0x45b4e4[_0x099c('0x2c')](_0x1135b8);}_0x1135b8();})[_0x099c('0x2f')](function(_0x1421da){_0x1135b8(_0x1421da);});},'afterCreate':function(_0x5abb68,_0xadf10b,_0x4593f2){var _0x923a0=getUserApplications(_0x5abb68,_0x5abb68[_0x099c('0x30')]);if(_0x5abb68[_0x099c('0x30')]!=_0x5abb68[_0x099c('0x13')]){_0x923a0=_0x923a0[_0x099c('0x25')](getUserApplications(_0x5abb68,_0x5abb68[_0x099c('0x13')]));}return _0xff9c6b[_0x099c('0x31')][_0x099c('0x32')](_0x923a0)['then'](function(){if(_0x5abb68[_0x099c('0xc')]){return getChanSpyPromise(_0xff9c6b,_0x5abb68);}})[_0x099c('0x24')](function(_0x1ef6e7){if(_0x1ef6e7&&_0x1ef6e7[_0x099c('0x3')]){return _0xff9c6b[_0x099c('0x31')][_0x099c('0x32')](_0x1ef6e7);}})[_0x099c('0x24')](function(){_0x4593f2();})[_0x099c('0x2f')](function(_0x30b100){_0x4593f2(_0x30b100);});},'afterUpdate':function(_0x547662,_0xd0ae7d,_0x2ccb62){return BPromise['resolve']()['then'](function(){if(_0x547662[_0x099c('0x2e')]('chanspy')||_0x547662[_0x099c('0x2e')](_0x099c('0x17'))){return _0xff9c6b[_0x099c('0x31')]['destroy']({'where':{'UserId':_0x547662['id'],'type':_0x099c('0x5'),'ChanSpyId':{'$ne':null}}})[_0x099c('0x24')](function(){if(_0x547662[_0x099c('0xc')]){return getChanSpyPromise(_0xff9c6b,_0x547662)[_0x099c('0x24')](function(_0x3902fd){if(_0x3902fd&&_0x3902fd[_0x099c('0x3')]){return _0xff9c6b[_0x099c('0x31')]['bulkCreate'](_0x3902fd);}});}});}})[_0x099c('0x24')](function(){if(_0x547662[_0x099c('0x2e')](_0x099c('0x19'))||_0x547662['changed'](_0x099c('0x17'))){return _0xff9c6b[_0x099c('0x31')]['destroy']({'where':{'UserId':_0x547662['id'],'type':_0x099c('0x5'),'ChanSpyId':null}})['then'](function(){var _0x4a9d62=getUserApplications(_0x547662,_0x547662[_0x099c('0x30')]);if(_0x547662[_0x099c('0x30')]!=_0x547662['name']){_0x4a9d62=_0x4a9d62['concat'](getUserApplications(_0x547662,_0x547662[_0x099c('0x13')]));}return _0xff9c6b[_0x099c('0x31')][_0x099c('0x32')](_0x4a9d62);});}})[_0x099c('0x24')](function(){_0x2ccb62();})[_0x099c('0x2f')](function(_0x1c6622){_0x2ccb62(_0x1c6622);});},'afterDestroy':function(_0x455d18,_0x3ec265){return _0xff9c6b[_0x099c('0x31')][_0x099c('0x33')]({'where':{'UserId':_0x455d18['id'],'type':_0x099c('0x5')}});}},'instanceMethods':{'authenticate':function(_0x57ee21,_0x9b5bd5){if(!_0x9b5bd5){return this[_0x099c('0x11')]===this[_0x099c('0x34')](_0x57ee21);}var _0x59fabc=this;this[_0x099c('0x34')](_0x57ee21,function(_0x223b49,_0x26df52){if(_0x223b49){_0x9b5bd5(_0x223b49);}if(_0x59fabc[_0x099c('0x11')]===_0x26df52){_0x9b5bd5(null,!![]);}else{_0x9b5bd5(null,![]);}});},'makeSalt':function(_0x289b51,_0x7c5d79){var _0x234e91=0x10;if(typeof arguments[0x0]==='function'){_0x7c5d79=arguments[0x0];_0x289b51=_0x234e91;}else if(typeof arguments[0x1]===_0x099c('0x35')){_0x7c5d79=arguments[0x1];}else{throw new Error(_0x099c('0x36'));}if(!_0x289b51){_0x289b51=_0x234e91;}return crypto[_0x099c('0x37')](_0x289b51,function(_0x223519,_0x4a46aa){if(_0x223519){_0x7c5d79(_0x223519);}return _0x7c5d79(null,_0x4a46aa[_0x099c('0x38')]('base64'));});},'encryptPassword':function(_0x5826d5,_0x4a9231){if(!_0x5826d5||!this[_0x099c('0x39')]){return _0x4a9231?_0x4a9231(null):null;}var _0x176e37=0x2710;var _0x792afc=0x40;var _0x4b0ada=new Buffer(this[_0x099c('0x39')],_0x099c('0x3a'));if(!_0x4a9231){return crypto[_0x099c('0x3b')](_0x5826d5,_0x4b0ada,_0x176e37,_0x792afc,_0x099c('0x3c'))['toString'](_0x099c('0x3a'));}return crypto[_0x099c('0x3d')](_0x5826d5,_0x4b0ada,_0x176e37,_0x792afc,'sha1',function(_0x27b50f,_0x4e0bba){if(_0x27b50f){_0x4a9231(_0x27b50f);}return _0x4a9231(null,_0x4e0bba[_0x099c('0x38')](_0x099c('0x3a')));});},'updatePassword':function(_0x80c24c){if(!this['password']){return _0x80c24c(null);}if(!validatePresenceOf(this[_0x099c('0x11')])&&authTypes[_0x099c('0x3e')](this['provider'])===-0x1){_0x80c24c(new Error(_0x099c('0x3f')));}var _0x3ae6dc=this;this[_0x099c('0x40')](function(_0x4913b3,_0x4f9c14){if(_0x4913b3){return _0x80c24c(_0x4913b3);}_0x3ae6dc[_0x099c('0x39')]=_0x4f9c14;_0x3ae6dc[_0x099c('0x34')](_0x3ae6dc[_0x099c('0x11')],function(_0x145ee4,_0x5d7027){if(_0x145ee4){_0x80c24c(_0x145ee4);}_0x3ae6dc[_0x099c('0x11')]=_0x5d7027;_0x80c24c(null);});});},'updateMd5Password':function(){this[_0x099c('0x41')]=md5(this[_0x099c('0x13')]+_0x099c('0x42')+this[_0x099c('0x11')]);return this['md5secret'];}}});};
\ No newline at end of file
+var _0x4040=['catch','User','users','userProfileId','find','then','privacyEnabled','updateMd5Password','updatePassword','resolve','changed','UserProfile','password','VoiceExtension','bulkCreate','destroy','encryptPassword','function','randomBytes','toString','pbkdf2Sync','pbkdf2','sha1','base64','indexOf','provider','Invalid\x20password','makeSalt','salt','md5secret',':asterisk:','bluebird','crypto','util','lodash','./user.attributes','google','context','from-sip','system','length','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','ChanSpy','format','SIP/%s,%s','name','options','StopMixMonitor','wav','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','findAll','internal','concat'];(function(_0x9bbc43,_0x43bd07){var _0x43440f=function(_0x3115dc){while(--_0x3115dc){_0x9bbc43['push'](_0x9bbc43['shift']());}};_0x43440f(++_0x43bd07);}(_0x4040,0x1db));var _0x0404=function(_0x9082d7,_0x5222b9){_0x9082d7=_0x9082d7-0x0;var _0x35c27e=_0x4040[_0x9082d7];return _0x35c27e;};'use strict';var BPromise=require(_0x0404('0x0'));var crypto=require(_0x0404('0x1'));var util=require(_0x0404('0x2'));var md5=require('md5');var _=require(_0x0404('0x3'));var attributes=require(_0x0404('0x4'));var authTypes=[_0x0404('0x5')];var validatePresenceOf=function(_0x5e23f4){return _0x5e23f4&&_0x5e23f4['length'];};var getChanSpyApplications=function(_0x27b691,_0x213fc1,_0x35894a){var _0x16cbfd={'context':_0x27b691[_0x0404('0x6')]||_0x0404('0x7'),'type':_0x0404('0x8'),'isApp':![],'UserId':_0x27b691['id']};var _0x25072d=[];for(var _0x459ee3=0x0,_0x5ac55f=0x1;_0x459ee3<_0x35894a[_0x0404('0x9')];_0x459ee3++,_0x5ac55f=0x1){var _0x39afbd={'exten':util['format'](_0x0404('0xa'),_0x35894a[_0x459ee3][_0x0404('0xb')],_0x213fc1),'ChanSpyId':_0x35894a[_0x459ee3]['id']};_0x25072d[_0x0404('0xc')](_[_0x0404('0xd')]({'app':_0x0404('0xe'),'appdata':util['format'](_0x0404('0xf'),_0x0404('0x10')),'priority':_0x5ac55f++},_0x16cbfd,_0x39afbd));if(_0x35894a[_0x459ee3][_0x0404('0x11')]){_0x25072d['push'](_[_0x0404('0xd')]({'app':_0x0404('0x12'),'appdata':util['format'](_0x0404('0x13'),_0x35894a[_0x459ee3][_0x0404('0x14')]),'priority':_0x5ac55f++},_0x16cbfd,_0x39afbd));}if(_0x35894a[_0x459ee3][_0x0404('0x15')]){_0x25072d[_0x0404('0xc')](_[_0x0404('0xd')]({'app':'Authenticate','appdata':_0x35894a[_0x459ee3]['password'],'priority':_0x5ac55f++},_0x16cbfd,_0x39afbd));}_0x25072d['push'](_[_0x0404('0xd')]({'app':_0x0404('0x16'),'appdata':util[_0x0404('0x17')](_0x0404('0x18'),_0x27b691[_0x0404('0x19')],_0x35894a[_0x459ee3][_0x0404('0x1a')]?_0x35894a[_0x459ee3][_0x0404('0x1a')]['join'](''):''),'priority':_0x5ac55f++},_0x16cbfd,_0x39afbd));if(_0x35894a[_0x459ee3][_0x0404('0x11')]){_0x25072d[_0x0404('0xc')](_[_0x0404('0xd')]({'app':_0x0404('0x1b'),'priority':_0x5ac55f++},_0x16cbfd,_0x39afbd));}}return _0x25072d;};var getUserApplications=function(_0x2a197f,_0x300b3c){var _0x143ee5=[_0x0404('0x1c'),'WAV','gsm'];var _0xd16a64={'context':_0x2a197f[_0x0404('0x6')]||_0x0404('0x7'),'exten':_0x300b3c,'type':_0x0404('0x8'),'isApp':![],'UserId':_0x2a197f['id']};var _0x2a604a=[{'app':_0x0404('0xe'),'appdata':_0x0404('0x1d')}];if(_0x2a197f[_0x0404('0x1e')]&&_[_0x0404('0x1f')](_0x143ee5,_0x2a197f[_0x0404('0x1e')])){_0x2a604a['push']({'app':_0x0404('0xe'),'appdata':_0x0404('0x20')});_0x2a604a['push']({'app':_0x0404('0xe'),'appdata':util['format'](_0x0404('0x21'),_0x2a197f[_0x0404('0x1e')])});_0x2a604a[_0x0404('0xc')]({'app':_0x0404('0x22'),'appdata':util[_0x0404('0x17')](_0x0404('0x23'),_0x2a197f[_0x0404('0x19')])});}else{_0x2a604a[_0x0404('0xc')]({'app':_0x0404('0x22'),'appdata':util[_0x0404('0x17')](_0x0404('0x24'),_0x2a197f[_0x0404('0x19')])});}_0x2a604a['push']({'app':_0x0404('0x25')});for(var _0x4819c6=0x0;_0x4819c6<_0x2a604a[_0x0404('0x9')];_0x4819c6++){_0x2a604a[_0x4819c6][_0x0404('0x26')]=_0x4819c6+0x1;_0x2a604a[_0x4819c6]=_['defaults'](_0x2a604a[_0x4819c6],_0xd16a64);}return _0x2a604a;};var getChanSpyPromise=function(_0x25cf8f,_0x3c9d00){return new BPromise(function(_0x39259d,_0x18aa04){return _0x25cf8f[_0x0404('0x27')][_0x0404('0x28')]()['then'](function(_0x17b9d1){if(_0x17b9d1){var _0x1847ba=getChanSpyApplications(_0x3c9d00,_0x3c9d00[_0x0404('0x29')],_0x17b9d1);if(_0x3c9d00[_0x0404('0x29')]!=_0x3c9d00[_0x0404('0x19')]){_0x1847ba=_0x1847ba[_0x0404('0x2a')](getChanSpyApplications(_0x3c9d00,_0x3c9d00[_0x0404('0x19')],_0x17b9d1));}return _0x39259d(_0x1847ba);}return _0x39259d([]);})[_0x0404('0x2b')](function(_0x3c68d0){_0x18aa04(_0x3c68d0);});});};module['exports']=function(_0x1ebf19,_0x13ebba){var _0x16accd=_0x1ebf19['models'];return _0x1ebf19['define'](_0x0404('0x2c'),attributes,{'tableName':_0x0404('0x2d'),'charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x55e031,_0x44379b,_0x4acba3){var _0x3e603d=typeof _0x55e031[_0x0404('0x2e')]==='undefined'?BPromise['resolve'](null):_0x16accd['UserProfile'][_0x0404('0x2f')]({'where':{'id':_0x55e031['userProfileId']}});_0x3e603d[_0x0404('0x30')](function(_0xbe1a36){if(_0xbe1a36){_0x55e031[_0x0404('0x31')]=_0xbe1a36['privacyEnabled'];}})[_0x0404('0x30')](function(){_0x55e031[_0x0404('0x32')]();_0x55e031[_0x0404('0x33')](_0x4acba3);})[_0x0404('0x2b')](function(_0x34120a){_0x4acba3(_0x34120a);});},'beforeUpdate':function(_0x159ff1,_0x30e15c,_0x1579d2){Promise[_0x0404('0x34')]()['then'](function(){if(_0x159ff1[_0x0404('0x35')]('userProfileId')===![])return;return _0x16accd[_0x0404('0x36')][_0x0404('0x2f')]({'where':{'id':_0x159ff1[_0x0404('0x2e')]}})['then'](function(_0x38d88f){if(_0x38d88f)_0x159ff1[_0x0404('0x31')]=_0x38d88f[_0x0404('0x31')];return;});})[_0x0404('0x30')](function(){if(_0x159ff1[_0x0404('0x35')](_0x0404('0x37'))){_0x159ff1[_0x0404('0x32')]();return _0x159ff1[_0x0404('0x33')](_0x1579d2);}_0x1579d2();})[_0x0404('0x2b')](function(_0x4cea7e){_0x1579d2(_0x4cea7e);});},'afterCreate':function(_0x366a0d,_0x179e98,_0x1dc187){var _0xf837f=getUserApplications(_0x366a0d,_0x366a0d[_0x0404('0x29')]);if(_0x366a0d[_0x0404('0x29')]!=_0x366a0d[_0x0404('0x19')]){_0xf837f=_0xf837f[_0x0404('0x2a')](getUserApplications(_0x366a0d,_0x366a0d['name']));}return _0x16accd[_0x0404('0x38')][_0x0404('0x39')](_0xf837f)[_0x0404('0x30')](function(){if(_0x366a0d['chanspy']){return getChanSpyPromise(_0x16accd,_0x366a0d);}})[_0x0404('0x30')](function(_0xcc0f11){if(_0xcc0f11&&_0xcc0f11[_0x0404('0x9')]){return _0x16accd[_0x0404('0x38')]['bulkCreate'](_0xcc0f11);}})[_0x0404('0x30')](function(){_0x1dc187();})[_0x0404('0x2b')](function(_0x324707){_0x1dc187(_0x324707);});},'afterUpdate':function(_0x552e40,_0x2cd517,_0x1bf146){return BPromise[_0x0404('0x34')]()[_0x0404('0x30')](function(){if(_0x552e40[_0x0404('0x35')](_0x0404('0x10'))||_0x552e40[_0x0404('0x35')](_0x0404('0x6'))){return _0x16accd[_0x0404('0x38')][_0x0404('0x3a')]({'where':{'UserId':_0x552e40['id'],'type':'system','ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x552e40[_0x0404('0x10')]){return getChanSpyPromise(_0x16accd,_0x552e40)[_0x0404('0x30')](function(_0x9facc){if(_0x9facc&&_0x9facc[_0x0404('0x9')]){return _0x16accd['VoiceExtension'][_0x0404('0x39')](_0x9facc);}});}});}})[_0x0404('0x30')](function(){if(_0x552e40[_0x0404('0x35')]('extensionMonitor')||_0x552e40[_0x0404('0x35')](_0x0404('0x6'))){return _0x16accd['VoiceExtension'][_0x0404('0x3a')]({'where':{'UserId':_0x552e40['id'],'type':_0x0404('0x8'),'ChanSpyId':null}})['then'](function(){var _0x4721f0=getUserApplications(_0x552e40,_0x552e40[_0x0404('0x29')]);if(_0x552e40['internal']!=_0x552e40['name']){_0x4721f0=_0x4721f0[_0x0404('0x2a')](getUserApplications(_0x552e40,_0x552e40[_0x0404('0x19')]));}return _0x16accd['VoiceExtension'][_0x0404('0x39')](_0x4721f0);});}})[_0x0404('0x30')](function(){_0x1bf146();})[_0x0404('0x2b')](function(_0x3f0b69){_0x1bf146(_0x3f0b69);});},'afterDestroy':function(_0x584ecc,_0x11f02e){return _0x16accd[_0x0404('0x38')][_0x0404('0x3a')]({'where':{'UserId':_0x584ecc['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x3e5c1f,_0x10ec18){if(!_0x10ec18){return this['password']===this[_0x0404('0x3b')](_0x3e5c1f);}var _0x31bb95=this;this[_0x0404('0x3b')](_0x3e5c1f,function(_0x1b1bb2,_0x5b01a0){if(_0x1b1bb2){_0x10ec18(_0x1b1bb2);}if(_0x31bb95[_0x0404('0x37')]===_0x5b01a0){_0x10ec18(null,!![]);}else{_0x10ec18(null,![]);}});},'makeSalt':function(_0x2d3002,_0x1f648e){var _0x4a285d=0x10;if(typeof arguments[0x0]==='function'){_0x1f648e=arguments[0x0];_0x2d3002=_0x4a285d;}else if(typeof arguments[0x1]===_0x0404('0x3c')){_0x1f648e=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x2d3002){_0x2d3002=_0x4a285d;}return crypto[_0x0404('0x3d')](_0x2d3002,function(_0x3d83dd,_0x102ba6){if(_0x3d83dd){_0x1f648e(_0x3d83dd);}return _0x1f648e(null,_0x102ba6[_0x0404('0x3e')]('base64'));});},'encryptPassword':function(_0x1ad597,_0x263d70){if(!_0x1ad597||!this['salt']){return _0x263d70?_0x263d70(null):null;}var _0x3872e7=0x2710;var _0x4df146=0x40;var _0x108e95=new Buffer(this['salt'],'base64');if(!_0x263d70){return crypto[_0x0404('0x3f')](_0x1ad597,_0x108e95,_0x3872e7,_0x4df146,'sha1')[_0x0404('0x3e')]('base64');}return crypto[_0x0404('0x40')](_0x1ad597,_0x108e95,_0x3872e7,_0x4df146,_0x0404('0x41'),function(_0x49ba60,_0x4f4f56){if(_0x49ba60){_0x263d70(_0x49ba60);}return _0x263d70(null,_0x4f4f56[_0x0404('0x3e')](_0x0404('0x42')));});},'updatePassword':function(_0x1e91b1){if(!this[_0x0404('0x37')]){return _0x1e91b1(null);}if(!validatePresenceOf(this[_0x0404('0x37')])&&authTypes[_0x0404('0x43')](this[_0x0404('0x44')])===-0x1){_0x1e91b1(new Error(_0x0404('0x45')));}var _0x5ad0fd=this;this[_0x0404('0x46')](function(_0x205270,_0x3b30e8){if(_0x205270){return _0x1e91b1(_0x205270);}_0x5ad0fd[_0x0404('0x47')]=_0x3b30e8;_0x5ad0fd['encryptPassword'](_0x5ad0fd['password'],function(_0x268ab5,_0x103221){if(_0x268ab5){_0x1e91b1(_0x268ab5);}_0x5ad0fd[_0x0404('0x37')]=_0x103221;_0x1e91b1(null);});});},'updateMd5Password':function(){this[_0x0404('0x48')]=md5(this[_0x0404('0x19')]+_0x0404('0x49')+this[_0x0404('0x37')]);return this[_0x0404('0x48')];}}});};
\ No newline at end of file
index c71dc78..6fd5924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cbf=['map','model','GetUser','ShowUser','find','PauseUser','where','name','role','internal','interface','UserVoiceQueueRt','update','findAll','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','format','SIP/%s','body','uniqueid','MemberReport','bulkCreate','type','findOne','channel','isValidChannel','voice','system','fax','openchannel','whatsapp','set','%s%s','Pause','push','all','LogoutUser','destroy','LoginUser','mobile','phone','loginInPause','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','./user.socket','register','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','User','options','raw','attributes','limit','include'];(function(_0x25efc8,_0x2d7c01){var _0x5d4ad7=function(_0x4aa37d){while(--_0x4aa37d){_0x25efc8['push'](_0x25efc8['shift']());}};_0x5d4ad7(++_0x2d7c01);}(_0x2cbf,0x156));var _0xf2cb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2cbf[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf2cb('0x0'));var util=require(_0xf2cb('0x1'));var moment=require(_0xf2cb('0x2'));var BPromise=require(_0xf2cb('0x3'));var rs=require(_0xf2cb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf2cb('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf2cb('0x6'))(_0xf2cb('0x7'));var config=require(_0xf2cb('0x8'));var jayson=require(_0xf2cb('0x9'));var client=jayson[_0xf2cb('0xa')][_0xf2cb('0xb')]({'port':0x232a});config['redis']=_[_0xf2cb('0xc')](config[_0xf2cb('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf2cb('0xd')]));require(_0xf2cb('0xe'))[_0xf2cb('0xf')](socket);function respondWithRpcPromise(_0x43fc6b,_0x1cb37d,_0xa0ffee){return new BPromise(function(_0x5d2334,_0x2a70fe){return client[_0xf2cb('0x10')](_0x43fc6b,_0xa0ffee)[_0xf2cb('0x11')](function(_0x5c258b){logger[_0xf2cb('0x12')](_0xf2cb('0x13'),_0x1cb37d,_0xf2cb('0x14'));logger[_0xf2cb('0x15')](_0xf2cb('0x16'),_0x1cb37d,_0xf2cb('0x14'),JSON[_0xf2cb('0x17')](_0x5c258b));if(_0x5c258b[_0xf2cb('0x18')]){if(_0x5c258b['error'][_0xf2cb('0x19')]===0x1f4){logger[_0xf2cb('0x18')](_0xf2cb('0x13'),_0x1cb37d,_0x5c258b[_0xf2cb('0x18')][_0xf2cb('0x1a')]);return _0x2a70fe(_0x5c258b['error'][_0xf2cb('0x1a')]);}logger[_0xf2cb('0x18')](_0xf2cb('0x13'),_0x1cb37d,_0x5c258b['error'][_0xf2cb('0x1a')]);return _0x5d2334(_0x5c258b[_0xf2cb('0x18')]['message']);}else{logger['info'](_0xf2cb('0x13'),_0x1cb37d,'request\x20sent');_0x5d2334(_0x5c258b['result'][_0xf2cb('0x1a')]);}})[_0xf2cb('0x1b')](function(_0x4783cf){logger[_0xf2cb('0x18')]('User,\x20%s,\x20%s',_0x1cb37d,_0x4783cf);_0x2a70fe(_0x4783cf);});});}exports['GetUser']=function(_0x22c46f){var _0x15e469=this;return new Promise(function(_0x281a49,_0x47028a){return db[_0xf2cb('0x1c')]['findAll']({'raw':_0x22c46f['options']?_0x22c46f[_0xf2cb('0x1d')][_0xf2cb('0x1e')]===undefined?!![]:![]:!![],'where':_0x22c46f[_0xf2cb('0x1d')]?_0x22c46f[_0xf2cb('0x1d')]['where']||null:null,'attributes':_0x22c46f['options']?_0x22c46f[_0xf2cb('0x1d')][_0xf2cb('0x1f')]||null:null,'limit':_0x22c46f[_0xf2cb('0x1d')]?_0x22c46f[_0xf2cb('0x1d')][_0xf2cb('0x20')]||null:null,'include':_0x22c46f[_0xf2cb('0x1d')]?_0x22c46f[_0xf2cb('0x1d')][_0xf2cb('0x21')]?_[_0xf2cb('0x22')](_0x22c46f['options'][_0xf2cb('0x21')],function(_0x3001a5){return{'model':db[_0x3001a5[_0xf2cb('0x23')]],'as':_0x3001a5['as'],'attributes':_0x3001a5['attributes'],'include':_0x3001a5[_0xf2cb('0x21')]?_[_0xf2cb('0x22')](_0x3001a5['include'],function(_0x3fb05a){return{'model':db[_0x3fb05a[_0xf2cb('0x23')]],'as':_0x3fb05a['as'],'attributes':_0x3fb05a[_0xf2cb('0x1f')],'include':_0x3fb05a[_0xf2cb('0x21')]?_[_0xf2cb('0x22')](_0x3fb05a[_0xf2cb('0x21')],function(_0x496533){return{'model':db[_0x496533[_0xf2cb('0x23')]],'as':_0x496533['as'],'attributes':_0x496533[_0xf2cb('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xf2cb('0x11')](function(_0x2de2d9){logger[_0xf2cb('0x12')](_0xf2cb('0x24'),_0x22c46f);logger[_0xf2cb('0x15')](_0xf2cb('0x24'),_0x22c46f,JSON[_0xf2cb('0x17')](_0x2de2d9));_0x281a49(_0x2de2d9);})[_0xf2cb('0x1b')](function(_0x477d48){logger[_0xf2cb('0x18')](_0xf2cb('0x24'),_0x477d48[_0xf2cb('0x1a')],_0x22c46f);_0x47028a(_0x15e469['error'](0x1f4,_0x477d48[_0xf2cb('0x1a')]));});});};exports[_0xf2cb('0x25')]=function(_0x4ee4f8){var _0x23aa74=this;return new Promise(function(_0x5275d7,_0x4ca409){return db[_0xf2cb('0x1c')][_0xf2cb('0x26')]({'raw':_0x4ee4f8['options']?_0x4ee4f8[_0xf2cb('0x1d')][_0xf2cb('0x1e')]===undefined?!![]:![]:!![],'where':_0x4ee4f8['options']?_0x4ee4f8[_0xf2cb('0x1d')]['where']||null:null,'attributes':_0x4ee4f8['options']?_0x4ee4f8[_0xf2cb('0x1d')][_0xf2cb('0x1f')]||null:null,'include':_0x4ee4f8[_0xf2cb('0x1d')]?_0x4ee4f8[_0xf2cb('0x1d')][_0xf2cb('0x21')]?_[_0xf2cb('0x22')](_0x4ee4f8[_0xf2cb('0x1d')][_0xf2cb('0x21')],function(_0x1ff0ff){return{'model':db[_0x1ff0ff['model']],'as':_0x1ff0ff['as'],'attributes':_0x1ff0ff[_0xf2cb('0x1f')],'include':_0x1ff0ff[_0xf2cb('0x21')]?_[_0xf2cb('0x22')](_0x1ff0ff[_0xf2cb('0x21')],function(_0x212f08){return{'model':db[_0x212f08[_0xf2cb('0x23')]],'as':_0x212f08['as'],'attributes':_0x212f08[_0xf2cb('0x1f')],'include':_0x212f08[_0xf2cb('0x21')]?_[_0xf2cb('0x22')](_0x212f08[_0xf2cb('0x21')],function(_0x5a03bb){return{'model':db[_0x5a03bb[_0xf2cb('0x23')]],'as':_0x5a03bb['as'],'attributes':_0x5a03bb[_0xf2cb('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x58c721){logger[_0xf2cb('0x12')](_0xf2cb('0x25'),_0x4ee4f8);logger[_0xf2cb('0x15')](_0xf2cb('0x25'),_0x4ee4f8,JSON[_0xf2cb('0x17')](_0x58c721));_0x5275d7(_0x58c721);})[_0xf2cb('0x1b')](function(_0x4de5c3){logger[_0xf2cb('0x18')](_0xf2cb('0x25'),_0x4de5c3['message'],_0x4ee4f8);_0x4ca409(_0x23aa74[_0xf2cb('0x18')](0x1f4,_0x4de5c3['message']));});});};exports[_0xf2cb('0x27')]=function(_0x443856){var _0x15ef20=this;return new Promise(function(_0x5387da,_0x3eab7c){var _0x479a30;return db[_0xf2cb('0x1c')][_0xf2cb('0x26')]({'where':_0x443856[_0xf2cb('0x1d')][_0xf2cb('0x28')]||{},'attributes':['id',_0xf2cb('0x29'),_0xf2cb('0x2a'),_0xf2cb('0x2b'),_0xf2cb('0x2c')]})[_0xf2cb('0x11')](function(_0x5bbfac){if(_0x5bbfac){_0x479a30=_0x5bbfac;return db[_0xf2cb('0x2d')][_0xf2cb('0x2e')]({'paused':0x1},{'where':{'UserId':_0x479a30['id']},'individualHooks':!![]});}})[_0xf2cb('0x11')](function(){if(_0x479a30){return db['MemberReport'][_0xf2cb('0x2f')]({'where':{'membername':_0x479a30['name'],'type':_0xf2cb('0x30'),'exitAt':null}});}})[_0xf2cb('0x11')](function(_0x1be831){if(_0x479a30){if(_0x1be831&&_0x1be831[_0xf2cb('0x31')]){var _0x3b182a=moment()['format'](_0xf2cb('0x32'));for(var _0x323ff5=0x0,_0x59ea11=_0x1be831[_0xf2cb('0x31')];_0x323ff5<_0x59ea11;_0x323ff5++){_0x1be831[_0x323ff5][_0xf2cb('0x33')]({'exitAt':_0x3b182a});}}}})[_0xf2cb('0x11')](function(){if(_0x479a30){var _0x2a5d3c=[];var _0x7d9825=utils[_0xf2cb('0x34')]();_0x7d9825[_0xf2cb('0x35')](function(_0x495287){_0x2a5d3c['push']({'channel':_0x495287,'membername':_0x479a30[_0xf2cb('0x29')],'interface':_['isNil'](_0x479a30[_0xf2cb('0x2c')])?util[_0xf2cb('0x36')](_0xf2cb('0x37'),_0x479a30[_0xf2cb('0x29')]):_0x479a30[_0xf2cb('0x2c')],'type':'PAUSE','enterAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32')),'data1':_0x443856['body']['type']||'DEFAULT\x20PAUSE','role':_0x479a30[_0xf2cb('0x2a')],'internal':_0x479a30[_0xf2cb('0x2b')],'uniqueid':_0x443856[_0xf2cb('0x38')][_0xf2cb('0x39')]||null});});return db[_0xf2cb('0x3a')][_0xf2cb('0x3b')](_0x2a5d3c,{'individualHooks':!![]});}})[_0xf2cb('0x11')](function(){if(_0x479a30){return _0x479a30['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x443856[_0xf2cb('0x38')][_0xf2cb('0x3c')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32'))});}})[_0xf2cb('0x11')](function(_0x1866b7){_0x5387da(_0x1866b7);})[_0xf2cb('0x1b')](function(_0x300af0){_0x3eab7c(_0x15ef20[_0xf2cb('0x18')](0x1f4,_0x300af0[_0xf2cb('0x1a')]));});});};exports['UnpauseUser']=function(_0x53aea9){var _0x32ed3b=this;return new Promise(function(_0x1d3cf7,_0x1a61a7){var _0x4769d6;return db['User'][_0xf2cb('0x3d')]({'where':_0x53aea9[_0xf2cb('0x1d')][_0xf2cb('0x28')]||{},'attributes':['id','name']})[_0xf2cb('0x11')](function(_0x4824bd){if(_0x4824bd){_0x4769d6=_0x4824bd;if(_0x53aea9['body'][_0xf2cb('0x3e')]&&!utils[_0xf2cb('0x3f')](_0x53aea9['body'][_0xf2cb('0x3e')])){throw new Error('Unknown\x20channel');}switch(_0x53aea9['body'][_0xf2cb('0x3e')]){case _0xf2cb('0x40'):return db[_0xf2cb('0x2d')]['update']({'paused':0x0},{'where':{'UserId':_0x4769d6['id']}})[_0xf2cb('0x11')](function(){return db[_0xf2cb('0x3a')][_0xf2cb('0x26')]({'where':{'channel':_0x53aea9['body']['channel'],'membername':_0x4769d6[_0xf2cb('0x29')],'type':_0xf2cb('0x30'),'exitAt':null}});})[_0xf2cb('0x11')](function(_0x26bbbc){if(_0x26bbbc){return _0x26bbbc['update']({'exitAt':moment()['format'](_0xf2cb('0x32')),'data2':_0xf2cb('0x41')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x4769d6[_0xf2cb('0x2e')]({'voicePause':![]});});case'mail':case'chat':case _0xf2cb('0x42'):case'sms':case _0xf2cb('0x43'):case _0xf2cb('0x44'):return db[_0xf2cb('0x3a')]['find']({'where':{'channel':_0x53aea9[_0xf2cb('0x38')]['channel'],'membername':_0x4769d6['name'],'type':_0xf2cb('0x30'),'exitAt':null}})[_0xf2cb('0x11')](function(_0x564012){return _0x564012[_0xf2cb('0x2e')]({'exitAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32')),'data2':_0xf2cb('0x41')},{'individualHooks':!![]});})['then'](function(){var _0x4b7e37={};_[_0xf2cb('0x45')](_0x4b7e37,util[_0xf2cb('0x36')](_0xf2cb('0x46'),_0x53aea9[_0xf2cb('0x38')][_0xf2cb('0x3e')],_0xf2cb('0x47')),![]);return _0x4769d6['update'](_0x4b7e37);});default:return db['UserVoiceQueueRt'][_0xf2cb('0x2e')]({'paused':0x0},{'where':{'UserId':_0x4769d6['id']}})[_0xf2cb('0x11')](function(){return db[_0xf2cb('0x3a')][_0xf2cb('0x2f')]({'where':{'membername':_0x4769d6['name'],'type':'PAUSE','exitAt':null}});})[_0xf2cb('0x11')](function(_0x14c945){var _0x1e1057=[];_0x14c945[_0xf2cb('0x35')](function(_0x5212de){_0x1e1057[_0xf2cb('0x48')](_0x5212de[_0xf2cb('0x2e')]({'exitAt':moment()['format'](_0xf2cb('0x32')),'data2':_0xf2cb('0x41')}));});return BPromise[_0xf2cb('0x49')](_0x1e1057);})[_0xf2cb('0x11')](function(){return _0x4769d6[_0xf2cb('0x2e')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xf2cb('0x11')](function(_0xaac477){_0x1d3cf7(_0xaac477);})[_0xf2cb('0x1b')](function(_0x323dc8){_0x1a61a7(_0x32ed3b[_0xf2cb('0x18')](0x1f4,_0x323dc8[_0xf2cb('0x1a')]));});});};exports[_0xf2cb('0x4a')]=function(_0x18bc38){var _0x4168e2=this;return new Promise(function(_0x71c4fb,_0x47392c){var _0xfc495a;return db[_0xf2cb('0x1c')]['findOne']({'where':_0x18bc38[_0xf2cb('0x1d')]['where']||{},'attributes':['id','name']})[_0xf2cb('0x11')](function(_0x202c4f){if(_0x202c4f){_0xfc495a=_0x202c4f;return db[_0xf2cb('0x2d')][_0xf2cb('0x4b')]({'where':{'membername':_0xfc495a['name']},'individualHooks':!![]});}})[_0xf2cb('0x11')](function(){if(_0xfc495a){return db[_0xf2cb('0x3a')][_0xf2cb('0x2f')]({'where':{'membername':_0xfc495a[_0xf2cb('0x29')],'exitAt':null}});}})[_0xf2cb('0x11')](function(_0x56ac4d){if(_0xfc495a){if(_0x56ac4d&&_0x56ac4d['length']){var _0x565086=[];_0x56ac4d[_0xf2cb('0x35')](function(_0x2aa79c){_0x565086['push'](_0x2aa79c[_0xf2cb('0x2e')]({'exitAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32'))}));});return BPromise[_0xf2cb('0x49')](_0x565086);}}})[_0xf2cb('0x11')](function(){if(_0xfc495a){return _0xfc495a[_0xf2cb('0x2e')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xf2cb('0x11')](function(_0x178002){_0x71c4fb(_0x178002);})[_0xf2cb('0x1b')](function(_0xf814dc){_0x47392c(_0x4168e2['error'](0x1f4,_0xf814dc[_0xf2cb('0x1a')]));});});};exports[_0xf2cb('0x4c')]=function(_0x56a4bf){var _0x2c72af=this;return new Promise(function(_0xa4e08,_0x165841){var _0x5ef7be;var _0x498574;var _0x33c462;var _0x4e829b;return db[_0xf2cb('0x1c')]['findOne']({'where':_0x56a4bf['options']['where']||{},'attributes':['id','name',_0xf2cb('0x2a'),_0xf2cb('0x4d'),_0xf2cb('0x4e'),_0xf2cb('0x2b'),_0xf2cb('0x4f'),_0xf2cb('0x2c')]})['then'](function(_0x46a3db){if(_0x46a3db){_0x5ef7be=_0x46a3db;_0x4e829b=_0x56a4bf['body'][_0xf2cb('0x2c')]?_0x56a4bf[_0xf2cb('0x38')][_0xf2cb('0x2c')]:util[_0xf2cb('0x36')](_0xf2cb('0x37'),_0x5ef7be[_0xf2cb('0x29')]);return db[_0xf2cb('0x1c')][_0xf2cb('0x50')]({'where':{'role':_0xf2cb('0x51'),'online':!![],'id':{'$ne':_0x5ef7be['id']}}});}})[_0xf2cb('0x11')](function(_0x173aaa){if(_0x173aaa){_0x33c462=_0x173aaa;return require(_0xf2cb('0x52'))[_0xf2cb('0x53')]();}})[_0xf2cb('0x11')](function(_0x54a2d2){if(_0x54a2d2&&_0x54a2d2['agents']&&_0x33c462>=_0x54a2d2[_0xf2cb('0x54')]){throw new Error(_0xf2cb('0x55'));}})[_0xf2cb('0x11')](function(){if(_0x5ef7be){return db[_0xf2cb('0x2d')]['destroy']({'where':{'membername':_0x5ef7be['name']},'individualHooks':!![]});}})[_0xf2cb('0x11')](function(){if(_0x5ef7be){return _0x5ef7be[_0xf2cb('0x56')]({'raw':!![]});}})[_0xf2cb('0x11')](function(_0x2673f7){if(_0x5ef7be){if(_0x2673f7){var _0x2303c2=[];_0x498574=_0x2673f7;if(_0x498574['length']){for(var _0x54d999=0x0;_0x54d999<_0x498574[_0xf2cb('0x31')];_0x54d999++){_0x2303c2[_0xf2cb('0x48')](db[_0xf2cb('0x2d')][_0xf2cb('0x57')]({'membername':_0x5ef7be[_0xf2cb('0x29')],'UserId':_0x5ef7be['id'],'queue_name':_0x498574[_0x54d999][_0xf2cb('0x29')],'VoiceQueueId':_0x498574[_0x54d999]['id'],'interface':_0x4e829b,'paused':_0x5ef7be['loginInPause']||![],'penalty':_0x498574[_0x54d999][_0xf2cb('0x58')]||0x0}));}return BPromise[_0xf2cb('0x49')](_0x2303c2);}}}})[_0xf2cb('0x11')](function(){if(_0x5ef7be){return db[_0xf2cb('0x3a')][_0xf2cb('0x2f')]({'where':{'membername':_0x5ef7be[_0xf2cb('0x29')],'exitAt':null}});}})[_0xf2cb('0x11')](function(_0x48f744){if(_0x5ef7be){if(_0x48f744&&_0x48f744['length']){var _0x519c4f=[];_0x48f744['forEach'](function(_0x185bdd){_0x519c4f[_0xf2cb('0x48')](_0x185bdd[_0xf2cb('0x2e')]({'exitAt':moment()['format'](_0xf2cb('0x32'))}));});return BPromise['all'](_0x519c4f);}}})[_0xf2cb('0x11')](function(_0xb4edfc){if(_0x5ef7be){var _0x1dcdf=[];var _0x457220=[];var _0x17c20c=utils[_0xf2cb('0x34')]();var _0x3f4cff={'membername':_0x5ef7be[_0xf2cb('0x29')],'interface':_0x4e829b,'enterAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32')),'role':_0x5ef7be[_0xf2cb('0x2a')],'internal':_0x5ef7be[_0xf2cb('0x2b')]};_0x17c20c[_0xf2cb('0x35')](function(_0x3e8d33){_0x1dcdf[_0xf2cb('0x48')](_[_0xf2cb('0x59')]({'channel':_0x3e8d33,'type':_0xf2cb('0x5a'),'data1':_0xf2cb('0x5b'),'data2':_0x4e829b},_0x3f4cff));if(_0x5ef7be[_0xf2cb('0x4f')]){_0x457220[_0xf2cb('0x48')](_[_0xf2cb('0x59')]({'channel':_0x3e8d33,'type':'PAUSE','data1':_0xf2cb('0x5c')},_0x3f4cff));}});return db[_0xf2cb('0x3a')][_0xf2cb('0x3b')](_0x1dcdf[_0xf2cb('0x5d')](_0x457220),{'individualHooks':!![]});}})[_0xf2cb('0x11')](function(){if(_0x5ef7be){return _0x5ef7be[_0xf2cb('0x2e')]({'online':!![],'lastLoginAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32')),'voicePause':_0x5ef7be[_0xf2cb('0x4f')]||![],'mailPause':_0x5ef7be[_0xf2cb('0x4f')]||![],'chatPause':_0x5ef7be[_0xf2cb('0x4f')]||![],'faxPause':_0x5ef7be[_0xf2cb('0x4f')]||![],'smsPause':_0x5ef7be[_0xf2cb('0x4f')]||![],'openchannelPause':_0x5ef7be['loginInPause']||![],'pauseType':_0x5ef7be[_0xf2cb('0x4f')]?_0xf2cb('0x5c'):null,'lastPauseAt':moment()[_0xf2cb('0x36')](_0xf2cb('0x32')),'interface':_0x4e829b});}})['then'](function(_0x5a30e9){_0xa4e08(_0x5a30e9);})[_0xf2cb('0x1b')](function(_0x510828){_0x165841(_0x2c72af[_0xf2cb('0x18')](0x1f4,_0x510828[_0xf2cb('0x1a')]));});});};
\ No newline at end of file
+var _0x5967=['../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetUser','User','findAll','options','attributes','include','map','model','ShowUser','find','raw','PauseUser','where','name','role','internal','interface','UserVoiceQueueRt','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','push','format','SIP/%s','body','uniqueid','MemberReport','bulkCreate','update','type','DEFAULT\x20PAUSE','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel','voice','system','mail','chat','fax','sms','whatsapp','set','%s%s','destroy','all','LoginUser','mobile','phone','count','agent','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','loginInPause','UserVoiceQueue.penalty','LOGIN','callysquare','merge','LOGININPAUSE','concat','util','moment','bluebird','ioredis','../../config/utils'];(function(_0x30c0ef,_0x409660){var _0x1bb2a0=function(_0x4cbc64){while(--_0x4cbc64){_0x30c0ef['push'](_0x30c0ef['shift']());}};_0x1bb2a0(++_0x409660);}(_0x5967,0xb3));var _0x7596=function(_0x23cef8,_0xbed92c){_0x23cef8=_0x23cef8-0x0;var _0x50df8e=_0x5967[_0x23cef8];return _0x50df8e;};'use strict';var _=require('lodash');var util=require(_0x7596('0x0'));var moment=require(_0x7596('0x1'));var BPromise=require(_0x7596('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7596('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7596('0x4'));var logger=require(_0x7596('0x5'))(_0x7596('0x6'));var config=require(_0x7596('0x7'));var jayson=require(_0x7596('0x8'));var client=jayson['client'][_0x7596('0x9')]({'port':0x232a});config[_0x7596('0xa')]=_[_0x7596('0xb')](config[_0x7596('0xa')],{'host':_0x7596('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7596('0xa')]));require('./user.socket')['register'](socket);function respondWithRpcPromise(_0x57c180,_0xe9a7de,_0x4d5573){return new BPromise(function(_0x32dc7f,_0x320a1e){return client[_0x7596('0xd')](_0x57c180,_0x4d5573)[_0x7596('0xe')](function(_0x2a8a3d){logger[_0x7596('0xf')](_0x7596('0x10'),_0xe9a7de,_0x7596('0x11'));logger[_0x7596('0x12')](_0x7596('0x13'),_0xe9a7de,_0x7596('0x11'),JSON[_0x7596('0x14')](_0x2a8a3d));if(_0x2a8a3d[_0x7596('0x15')]){if(_0x2a8a3d[_0x7596('0x15')][_0x7596('0x16')]===0x1f4){logger[_0x7596('0x15')](_0x7596('0x10'),_0xe9a7de,_0x2a8a3d[_0x7596('0x15')][_0x7596('0x17')]);return _0x320a1e(_0x2a8a3d[_0x7596('0x15')][_0x7596('0x17')]);}logger[_0x7596('0x15')](_0x7596('0x10'),_0xe9a7de,_0x2a8a3d[_0x7596('0x15')][_0x7596('0x17')]);return _0x32dc7f(_0x2a8a3d[_0x7596('0x15')][_0x7596('0x17')]);}else{logger['info']('User,\x20%s,\x20%s',_0xe9a7de,_0x7596('0x11'));_0x32dc7f(_0x2a8a3d['result']['message']);}})[_0x7596('0x18')](function(_0x4cdd47){logger[_0x7596('0x15')](_0x7596('0x10'),_0xe9a7de,_0x4cdd47);_0x320a1e(_0x4cdd47);});});}exports[_0x7596('0x19')]=function(_0x9cf654){var _0x4ae8f8=this;return new Promise(function(_0x40d3d5,_0xede43c){return db[_0x7596('0x1a')][_0x7596('0x1b')]({'raw':_0x9cf654[_0x7596('0x1c')]?_0x9cf654[_0x7596('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x9cf654[_0x7596('0x1c')]?_0x9cf654[_0x7596('0x1c')]['where']||null:null,'attributes':_0x9cf654[_0x7596('0x1c')]?_0x9cf654[_0x7596('0x1c')][_0x7596('0x1d')]||null:null,'limit':_0x9cf654[_0x7596('0x1c')]?_0x9cf654[_0x7596('0x1c')]['limit']||null:null,'include':_0x9cf654[_0x7596('0x1c')]?_0x9cf654[_0x7596('0x1c')][_0x7596('0x1e')]?_[_0x7596('0x1f')](_0x9cf654[_0x7596('0x1c')][_0x7596('0x1e')],function(_0x5c9f33){return{'model':db[_0x5c9f33[_0x7596('0x20')]],'as':_0x5c9f33['as'],'attributes':_0x5c9f33[_0x7596('0x1d')],'include':_0x5c9f33[_0x7596('0x1e')]?_[_0x7596('0x1f')](_0x5c9f33[_0x7596('0x1e')],function(_0x1f8c03){return{'model':db[_0x1f8c03[_0x7596('0x20')]],'as':_0x1f8c03['as'],'attributes':_0x1f8c03[_0x7596('0x1d')],'include':_0x1f8c03['include']?_[_0x7596('0x1f')](_0x1f8c03[_0x7596('0x1e')],function(_0x545361){return{'model':db[_0x545361['model']],'as':_0x545361['as'],'attributes':_0x545361[_0x7596('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x7596('0xe')](function(_0x3b81a9){logger[_0x7596('0xf')]('GetUser',_0x9cf654);logger[_0x7596('0x12')](_0x7596('0x19'),_0x9cf654,JSON['stringify'](_0x3b81a9));_0x40d3d5(_0x3b81a9);})[_0x7596('0x18')](function(_0x542933){logger[_0x7596('0x15')](_0x7596('0x19'),_0x542933[_0x7596('0x17')],_0x9cf654);_0xede43c(_0x4ae8f8[_0x7596('0x15')](0x1f4,_0x542933[_0x7596('0x17')]));});});};exports[_0x7596('0x21')]=function(_0x17f28d){var _0x44ac44=this;return new Promise(function(_0x4e233c,_0x221b99){return db[_0x7596('0x1a')][_0x7596('0x22')]({'raw':_0x17f28d[_0x7596('0x1c')]?_0x17f28d[_0x7596('0x1c')][_0x7596('0x23')]===undefined?!![]:![]:!![],'where':_0x17f28d[_0x7596('0x1c')]?_0x17f28d[_0x7596('0x1c')]['where']||null:null,'attributes':_0x17f28d[_0x7596('0x1c')]?_0x17f28d[_0x7596('0x1c')][_0x7596('0x1d')]||null:null,'include':_0x17f28d[_0x7596('0x1c')]?_0x17f28d[_0x7596('0x1c')][_0x7596('0x1e')]?_['map'](_0x17f28d[_0x7596('0x1c')][_0x7596('0x1e')],function(_0x31e2c1){return{'model':db[_0x31e2c1[_0x7596('0x20')]],'as':_0x31e2c1['as'],'attributes':_0x31e2c1[_0x7596('0x1d')],'include':_0x31e2c1['include']?_[_0x7596('0x1f')](_0x31e2c1[_0x7596('0x1e')],function(_0x5bfd61){return{'model':db[_0x5bfd61[_0x7596('0x20')]],'as':_0x5bfd61['as'],'attributes':_0x5bfd61['attributes'],'include':_0x5bfd61[_0x7596('0x1e')]?_[_0x7596('0x1f')](_0x5bfd61[_0x7596('0x1e')],function(_0x34bedd){return{'model':db[_0x34bedd[_0x7596('0x20')]],'as':_0x34bedd['as'],'attributes':_0x34bedd['attributes']};}):[]};}):[]};}):[]:[]})[_0x7596('0xe')](function(_0x14dd69){logger[_0x7596('0xf')](_0x7596('0x21'),_0x17f28d);logger[_0x7596('0x12')]('ShowUser',_0x17f28d,JSON[_0x7596('0x14')](_0x14dd69));_0x4e233c(_0x14dd69);})[_0x7596('0x18')](function(_0x9b058f){logger[_0x7596('0x15')](_0x7596('0x21'),_0x9b058f[_0x7596('0x17')],_0x17f28d);_0x221b99(_0x44ac44['error'](0x1f4,_0x9b058f[_0x7596('0x17')]));});});};exports[_0x7596('0x24')]=function(_0x4f784d){var _0xfde149=this;return new Promise(function(_0x253d87,_0x1c631e){var _0x51f9c9;return db['User'][_0x7596('0x22')]({'where':_0x4f784d[_0x7596('0x1c')][_0x7596('0x25')]||{},'attributes':['id',_0x7596('0x26'),_0x7596('0x27'),_0x7596('0x28'),_0x7596('0x29')]})[_0x7596('0xe')](function(_0x42471d){if(_0x42471d){_0x51f9c9=_0x42471d;return db[_0x7596('0x2a')]['update']({'paused':0x1},{'where':{'UserId':_0x51f9c9['id']},'individualHooks':!![]});}})[_0x7596('0xe')](function(){if(_0x51f9c9){return db['MemberReport']['findAll']({'where':{'membername':_0x51f9c9[_0x7596('0x26')],'type':_0x7596('0x2b'),'exitAt':null}});}})[_0x7596('0xe')](function(_0x4ba81d){if(_0x51f9c9){if(_0x4ba81d&&_0x4ba81d[_0x7596('0x2c')]){var _0x102201=moment()['format'](_0x7596('0x2d'));for(var _0x10d280=0x0,_0x201c0e=_0x4ba81d[_0x7596('0x2c')];_0x10d280<_0x201c0e;_0x10d280++){_0x4ba81d[_0x10d280][_0x7596('0x2e')]({'exitAt':_0x102201});}}}})[_0x7596('0xe')](function(){if(_0x51f9c9){var _0x2b6e52=[];var _0x2507f1=utils[_0x7596('0x2f')]();_0x2507f1[_0x7596('0x30')](function(_0x52cd09){_0x2b6e52[_0x7596('0x31')]({'channel':_0x52cd09,'membername':_0x51f9c9[_0x7596('0x26')],'interface':_['isNil'](_0x51f9c9[_0x7596('0x29')])?util[_0x7596('0x32')](_0x7596('0x33'),_0x51f9c9['name']):_0x51f9c9[_0x7596('0x29')],'type':_0x7596('0x2b'),'enterAt':moment()['format'](_0x7596('0x2d')),'data1':_0x4f784d[_0x7596('0x34')]['type']||'DEFAULT\x20PAUSE','role':_0x51f9c9[_0x7596('0x27')],'internal':_0x51f9c9['internal'],'uniqueid':_0x4f784d['body'][_0x7596('0x35')]||null});});return db[_0x7596('0x36')][_0x7596('0x37')](_0x2b6e52,{'individualHooks':!![]});}})['then'](function(){if(_0x51f9c9){return _0x51f9c9[_0x7596('0x38')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x4f784d[_0x7596('0x34')][_0x7596('0x39')]||_0x7596('0x3a'),'lastPauseAt':moment()[_0x7596('0x32')](_0x7596('0x2d'))});}})[_0x7596('0xe')](function(_0x529acf){_0x253d87(_0x529acf);})['catch'](function(_0x240598){_0x1c631e(_0xfde149[_0x7596('0x15')](0x1f4,_0x240598['message']));});});};exports[_0x7596('0x3b')]=function(_0x2113ad){var _0x46a697=this;return new Promise(function(_0x130d31,_0x2fddf1){var _0x44f6d5;return db[_0x7596('0x1a')][_0x7596('0x3c')]({'where':_0x2113ad[_0x7596('0x1c')]['where']||{},'attributes':['id',_0x7596('0x26')]})[_0x7596('0xe')](function(_0x4ac5b0){if(_0x4ac5b0){_0x44f6d5=_0x4ac5b0;if(_0x2113ad[_0x7596('0x34')][_0x7596('0x3d')]&&!utils[_0x7596('0x3e')](_0x2113ad[_0x7596('0x34')][_0x7596('0x3d')])){throw new Error(_0x7596('0x3f'));}switch(_0x2113ad[_0x7596('0x34')][_0x7596('0x3d')]){case _0x7596('0x40'):return db[_0x7596('0x2a')][_0x7596('0x38')]({'paused':0x0},{'where':{'UserId':_0x44f6d5['id']}})['then'](function(){return db['MemberReport']['find']({'where':{'channel':_0x2113ad['body'][_0x7596('0x3d')],'membername':_0x44f6d5[_0x7596('0x26')],'type':_0x7596('0x2b'),'exitAt':null}});})['then'](function(_0x52e31f){if(_0x52e31f){return _0x52e31f['update']({'exitAt':moment()[_0x7596('0x32')](_0x7596('0x2d')),'data2':_0x7596('0x41')},{'individualHooks':!![]});}return null;})[_0x7596('0xe')](function(){return _0x44f6d5['update']({'voicePause':![]});});case _0x7596('0x42'):case _0x7596('0x43'):case _0x7596('0x44'):case _0x7596('0x45'):case'openchannel':case _0x7596('0x46'):return db[_0x7596('0x36')][_0x7596('0x22')]({'where':{'channel':_0x2113ad['body'][_0x7596('0x3d')],'membername':_0x44f6d5[_0x7596('0x26')],'type':_0x7596('0x2b'),'exitAt':null}})[_0x7596('0xe')](function(_0x29a26c){return _0x29a26c[_0x7596('0x38')]({'exitAt':moment()['format'](_0x7596('0x2d')),'data2':_0x7596('0x41')},{'individualHooks':!![]});})[_0x7596('0xe')](function(){var _0x16784d={};_[_0x7596('0x47')](_0x16784d,util[_0x7596('0x32')](_0x7596('0x48'),_0x2113ad[_0x7596('0x34')][_0x7596('0x3d')],'Pause'),![]);return _0x44f6d5[_0x7596('0x38')](_0x16784d);});default:return db[_0x7596('0x2a')][_0x7596('0x38')]({'paused':0x0},{'where':{'UserId':_0x44f6d5['id']}})[_0x7596('0xe')](function(){return db[_0x7596('0x36')][_0x7596('0x1b')]({'where':{'membername':_0x44f6d5[_0x7596('0x26')],'type':_0x7596('0x2b'),'exitAt':null}});})[_0x7596('0xe')](function(_0x275aa2){var _0x706556=[];_0x275aa2[_0x7596('0x30')](function(_0x5be1fb){_0x706556[_0x7596('0x31')](_0x5be1fb[_0x7596('0x38')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':'system'}));});return BPromise['all'](_0x706556);})[_0x7596('0xe')](function(){return _0x44f6d5[_0x7596('0x38')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x7596('0xe')](function(_0x2d95ff){_0x130d31(_0x2d95ff);})[_0x7596('0x18')](function(_0x1fce96){_0x2fddf1(_0x46a697[_0x7596('0x15')](0x1f4,_0x1fce96[_0x7596('0x17')]));});});};exports['LogoutUser']=function(_0x27b64f){var _0x56a07b=this;return new Promise(function(_0x56d95e,_0x4cac1d){var _0x7f8b46;return db['User'][_0x7596('0x3c')]({'where':_0x27b64f[_0x7596('0x1c')][_0x7596('0x25')]||{},'attributes':['id',_0x7596('0x26')]})[_0x7596('0xe')](function(_0x561b37){if(_0x561b37){_0x7f8b46=_0x561b37;return db[_0x7596('0x2a')][_0x7596('0x49')]({'where':{'membername':_0x7f8b46['name']},'individualHooks':!![]});}})[_0x7596('0xe')](function(){if(_0x7f8b46){return db[_0x7596('0x36')][_0x7596('0x1b')]({'where':{'membername':_0x7f8b46[_0x7596('0x26')],'exitAt':null}});}})[_0x7596('0xe')](function(_0x537df0){if(_0x7f8b46){if(_0x537df0&&_0x537df0['length']){var _0xf267b3=[];_0x537df0['forEach'](function(_0x54062c){_0xf267b3['push'](_0x54062c[_0x7596('0x38')]({'exitAt':moment()[_0x7596('0x32')](_0x7596('0x2d'))}));});return BPromise[_0x7596('0x4a')](_0xf267b3);}}})[_0x7596('0xe')](function(){if(_0x7f8b46){return _0x7f8b46['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x7596('0xe')](function(_0x4b92c5){_0x56d95e(_0x4b92c5);})[_0x7596('0x18')](function(_0x566a11){_0x4cac1d(_0x56a07b[_0x7596('0x15')](0x1f4,_0x566a11[_0x7596('0x17')]));});});};exports[_0x7596('0x4b')]=function(_0xbd420e){var _0x3e6423=this;return new Promise(function(_0x12a5c3,_0x282304){var _0x2f3586;var _0x163752;var _0x550455;var _0x851cec;return db[_0x7596('0x1a')][_0x7596('0x3c')]({'where':_0xbd420e[_0x7596('0x1c')][_0x7596('0x25')]||{},'attributes':['id',_0x7596('0x26'),_0x7596('0x27'),_0x7596('0x4c'),_0x7596('0x4d'),_0x7596('0x28'),'loginInPause',_0x7596('0x29')]})[_0x7596('0xe')](function(_0x3c996e){if(_0x3c996e){_0x2f3586=_0x3c996e;_0x851cec=_0xbd420e['body'][_0x7596('0x29')]?_0xbd420e[_0x7596('0x34')][_0x7596('0x29')]:util[_0x7596('0x32')](_0x7596('0x33'),_0x2f3586[_0x7596('0x26')]);return db[_0x7596('0x1a')][_0x7596('0x4e')]({'where':{'role':_0x7596('0x4f'),'online':!![],'id':{'$ne':_0x2f3586['id']}}});}})[_0x7596('0xe')](function(_0x591eed){if(_0x591eed){_0x550455=_0x591eed;return require('../../config/license/util')[_0x7596('0x50')]();}})[_0x7596('0xe')](function(_0x5a9db5){if(_0x5a9db5&&_0x5a9db5[_0x7596('0x51')]&&_0x550455>=_0x5a9db5[_0x7596('0x51')]){throw new Error(_0x7596('0x52'));}})[_0x7596('0xe')](function(){if(_0x2f3586){return db['UserVoiceQueueRt'][_0x7596('0x49')]({'where':{'membername':_0x2f3586[_0x7596('0x26')]},'individualHooks':!![]});}})[_0x7596('0xe')](function(){if(_0x2f3586){return _0x2f3586[_0x7596('0x53')]({'raw':!![]});}})['then'](function(_0x1876f4){if(_0x2f3586){if(_0x1876f4){var _0x49508a=[];_0x163752=_0x1876f4;if(_0x163752[_0x7596('0x2c')]){for(var _0x25c2fb=0x0;_0x25c2fb<_0x163752[_0x7596('0x2c')];_0x25c2fb++){_0x49508a[_0x7596('0x31')](db[_0x7596('0x2a')][_0x7596('0x54')]({'membername':_0x2f3586[_0x7596('0x26')],'UserId':_0x2f3586['id'],'queue_name':_0x163752[_0x25c2fb][_0x7596('0x26')],'VoiceQueueId':_0x163752[_0x25c2fb]['id'],'interface':_0x851cec,'paused':_0x2f3586[_0x7596('0x55')]||![],'penalty':_0x163752[_0x25c2fb][_0x7596('0x56')]||0x0}));}return BPromise[_0x7596('0x4a')](_0x49508a);}}}})[_0x7596('0xe')](function(){if(_0x2f3586){return db[_0x7596('0x36')]['findAll']({'where':{'membername':_0x2f3586[_0x7596('0x26')],'exitAt':null}});}})['then'](function(_0x474a84){if(_0x2f3586){if(_0x474a84&&_0x474a84[_0x7596('0x2c')]){var _0x195a9e=[];_0x474a84[_0x7596('0x30')](function(_0x114c31){_0x195a9e[_0x7596('0x31')](_0x114c31[_0x7596('0x38')]({'exitAt':moment()[_0x7596('0x32')](_0x7596('0x2d'))}));});return BPromise[_0x7596('0x4a')](_0x195a9e);}}})[_0x7596('0xe')](function(_0x440f43){if(_0x2f3586){var _0x38fb92=[];var _0x2ff775=[];var _0x1698fa=utils[_0x7596('0x2f')]();var _0x27d211={'membername':_0x2f3586[_0x7596('0x26')],'interface':_0x851cec,'enterAt':moment()[_0x7596('0x32')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x2f3586[_0x7596('0x27')],'internal':_0x2f3586[_0x7596('0x28')]};_0x1698fa['forEach'](function(_0xc024f4){_0x38fb92[_0x7596('0x31')](_['merge']({'channel':_0xc024f4,'type':_0x7596('0x57'),'data1':_0x7596('0x58'),'data2':_0x851cec},_0x27d211));if(_0x2f3586[_0x7596('0x55')]){_0x2ff775[_0x7596('0x31')](_[_0x7596('0x59')]({'channel':_0xc024f4,'type':_0x7596('0x2b'),'data1':_0x7596('0x5a')},_0x27d211));}});return db[_0x7596('0x36')][_0x7596('0x37')](_0x38fb92[_0x7596('0x5b')](_0x2ff775),{'individualHooks':!![]});}})[_0x7596('0xe')](function(){if(_0x2f3586){return _0x2f3586[_0x7596('0x38')]({'online':!![],'lastLoginAt':moment()[_0x7596('0x32')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x2f3586[_0x7596('0x55')]||![],'mailPause':_0x2f3586[_0x7596('0x55')]||![],'chatPause':_0x2f3586[_0x7596('0x55')]||![],'faxPause':_0x2f3586[_0x7596('0x55')]||![],'smsPause':_0x2f3586[_0x7596('0x55')]||![],'openchannelPause':_0x2f3586[_0x7596('0x55')]||![],'pauseType':_0x2f3586[_0x7596('0x55')]?_0x7596('0x5a'):null,'lastPauseAt':moment()[_0x7596('0x32')](_0x7596('0x2d')),'interface':_0x851cec});}})['then'](function(_0x434325){_0x12a5c3(_0x434325);})[_0x7596('0x18')](function(_0x56c082){_0x282304(_0x3e6423[_0x7596('0x15')](0x1f4,_0x56c082[_0x7596('0x17')]));});});};
\ No newline at end of file
index 5336e2a..82b527d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8cb=['save','update','emit','removeListener','user:','./user.events'];(function(_0x292b9d,_0x123322){var _0x33621e=function(_0x49cd9e){while(--_0x49cd9e){_0x292b9d['push'](_0x292b9d['shift']());}};_0x33621e(++_0x123322);}(_0xf8cb,0x161));var _0xbf8c=function(_0x17ddb3,_0x179b02){_0x17ddb3=_0x17ddb3-0x0;var _0x2eb84d=_0xf8cb[_0x17ddb3];return _0x2eb84d;};'use strict';var UserEvents=require(_0xbf8c('0x0'));var events=[_0xbf8c('0x1'),'remove',_0xbf8c('0x2')];function createListener(_0x458d0c,_0x52eff0){return function(_0x3b2484){_0x52eff0[_0xbf8c('0x3')](_0x458d0c,_0x3b2484);};}function removeListener(_0x4dff94,_0x59e4b2){return function(){UserEvents[_0xbf8c('0x4')](_0x4dff94,_0x59e4b2);};}exports['register']=function(_0x71411b){for(var _0x966aeb=0x0,_0x40c785=events['length'];_0x966aeb<_0x40c785;_0x966aeb++){var _0x1c6f62=events[_0x966aeb];var _0x297ab8=createListener(_0xbf8c('0x5')+_0x1c6f62,_0x71411b);UserEvents['on'](_0x1c6f62,_0x297ab8);}};
\ No newline at end of file
+var _0xbc1e=['update','removeListener','register','length','./user.events','remove'];(function(_0xfe2cce,_0x1fb136){var _0x352722=function(_0x41e9a9){while(--_0x41e9a9){_0xfe2cce['push'](_0xfe2cce['shift']());}};_0x352722(++_0x1fb136);}(_0xbc1e,0x13c));var _0xebc1=function(_0xb57b0,_0x539a45){_0xb57b0=_0xb57b0-0x0;var _0x35a810=_0xbc1e[_0xb57b0];return _0x35a810;};'use strict';var UserEvents=require(_0xebc1('0x0'));var events=['save',_0xebc1('0x1'),_0xebc1('0x2')];function createListener(_0xafda11,_0x4a341e){return function(_0x5bcef7){_0x4a341e['emit'](_0xafda11,_0x5bcef7);};}function removeListener(_0x105ee8,_0x5b47aa){return function(){UserEvents[_0xebc1('0x3')](_0x105ee8,_0x5b47aa);};}exports[_0xebc1('0x4')]=function(_0x48fc92){for(var _0x3b52d1=0x0,_0x4bd885=events[_0xebc1('0x5')];_0x3b52d1<_0x4bd885;_0x3b52d1++){var _0xbbc6d0=events[_0x3b52d1];var _0x2b7648=createListener('user:'+_0xbbc6d0,_0x48fc92);UserEvents['on'](_0xbbc6d0,_0x2b7648);}};
\ No newline at end of file
index 736142f..5892577 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(_0x172704,_0x921888){var _0x4813c8=function(_0x4d585b){while(--_0x4d585b){_0x172704['push'](_0x172704['shift']());}};_0x4813c8(++_0x921888);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0xcb91[_0x5a3cf0];return _0x5a64ee;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x3f0581,_0x1c904d){var _0x30aed6=function(_0x36ac91){while(--_0x36ac91){_0x3f0581['push'](_0x3f0581['shift']());}};_0x30aed6(++_0x1c904d);}(_0xedd9,0xfc));var _0x9edd=function(_0x2247ee,_0x5b4b18){_0x2247ee=_0x2247ee-0x0;var _0x5915ed=_0xedd9[_0x2247ee];return _0x5915ed;};'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 6aa5491..712c74b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb275=['INTEGER','exports'];(function(_0x406e46,_0x5799cb){var _0x4a3742=function(_0x1fa435){while(--_0x1fa435){_0x406e46['push'](_0x406e46['shift']());}};_0x4a3742(++_0x5799cb);}(_0xb275,0xbf));var _0x5b27=function(_0x3696b4,_0x4f7371){_0x3696b4=_0x3696b4-0x0;var _0x52f40c=_0xb275[_0x3696b4];return _0x52f40c;};'use strict';var Sequelize=require('sequelize');module[_0x5b27('0x0')]={'penalty':{'type':Sequelize[_0x5b27('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb111=['exports','sequelize'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0xb111,0x189));var _0x1b11=function(_0x10d0bf,_0x5f3acb){_0x10d0bf=_0x10d0bf-0x0;var _0x2dabd4=_0xb111[_0x10d0bf];return _0x2dabd4;};'use strict';var Sequelize=require(_0x1b11('0x0'));module[_0x1b11('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 885e5cd..5a85c30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x546c=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','util'];(function(_0x1709e7,_0x2ced21){var _0x402819=function(_0x3637a0){while(--_0x3637a0){_0x1709e7['push'](_0x1709e7['shift']());}};_0x402819(++_0x2ced21);}(_0x546c,0x132));var _0xc546=function(_0x152972,_0x44ccc2){_0x152972=_0x152972-0x0;var _0xdb0fdd=_0x546c[_0x152972];return _0xdb0fdd;};'use strict';var _=require(_0xc546('0x0'));var util=require(_0xc546('0x1'));var logger=require(_0xc546('0x2'))(_0xc546('0x3'));var moment=require(_0xc546('0x4'));var BPromise=require('bluebird');var rp=require(_0xc546('0x5'));var fs=require('fs');var path=require(_0xc546('0x6'));var rimraf=require(_0xc546('0x7'));var config=require(_0xc546('0x8'));var attributes=require(_0xc546('0x9'));module[_0xc546('0xa')]=function(_0x50772c,_0x3f1dcd){return _0x50772c[_0xc546('0xb')](_0xc546('0xc'),attributes,{'tableName':_0xc546('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8169=['util','../../config/logger','moment','request-promise','../../config/environment','./userChatQueue.attributes','exports','UserChatQueue','user_has_chat_queues','lodash'];(function(_0x3da826,_0x2eb0f2){var _0xc4299d=function(_0xae6acb){while(--_0xae6acb){_0x3da826['push'](_0x3da826['shift']());}};_0xc4299d(++_0x2eb0f2);}(_0x8169,0x149));var _0x9816=function(_0x253707,_0x3384e0){_0x253707=_0x253707-0x0;var _0x517923=_0x8169[_0x253707];return _0x517923;};'use strict';var _=require(_0x9816('0x0'));var util=require(_0x9816('0x1'));var logger=require(_0x9816('0x2'))('api');var moment=require(_0x9816('0x3'));var BPromise=require('bluebird');var rp=require(_0x9816('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x9816('0x5'));var attributes=require(_0x9816('0x6'));module[_0x9816('0x7')]=function(_0x42d8e2,_0x246482){return _0x42d8e2['define'](_0x9816('0x8'),attributes,{'tableName':_0x9816('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f97c5a5..3fb727d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25cc=['client','http','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x5d1817,_0x4b303a){var _0x5700e7=function(_0x54a874){while(--_0x54a874){_0x5d1817['push'](_0x5d1817['shift']());}};_0x5700e7(++_0x4b303a);}(_0x25cc,0x121));var _0xc25c=function(_0x2e30c6,_0x40a809){_0x2e30c6=_0x2e30c6-0x0;var _0x470e59=_0x25cc[_0x2e30c6];return _0x470e59;};'use strict';var _=require(_0xc25c('0x0'));var util=require(_0xc25c('0x1'));var moment=require(_0xc25c('0x2'));var BPromise=require(_0xc25c('0x3'));var rs=require(_0xc25c('0x4'));var fs=require('fs');var Redis=require(_0xc25c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc25c('0x6'));var logger=require(_0xc25c('0x7'))(_0xc25c('0x8'));var config=require('../../config/environment');var jayson=require(_0xc25c('0x9'));var client=jayson[_0xc25c('0xa')][_0xc25c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2a2b06,_0x319927,_0x4cc07c){return new BPromise(function(_0x5a893c,_0x9ff85a){return client['request'](_0x2a2b06,_0x4cc07c)[_0xc25c('0xc')](function(_0x3cd7df){logger[_0xc25c('0xd')](_0xc25c('0xe'),_0x319927,_0xc25c('0xf'));logger[_0xc25c('0x10')]('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x319927,_0xc25c('0xf'),JSON[_0xc25c('0x11')](_0x3cd7df));if(_0x3cd7df[_0xc25c('0x12')]){if(_0x3cd7df[_0xc25c('0x12')][_0xc25c('0x13')]===0x1f4){logger[_0xc25c('0x12')](_0xc25c('0xe'),_0x319927,_0x3cd7df[_0xc25c('0x12')][_0xc25c('0x14')]);return _0x9ff85a(_0x3cd7df[_0xc25c('0x12')][_0xc25c('0x14')]);}logger[_0xc25c('0x12')](_0xc25c('0xe'),_0x319927,_0x3cd7df[_0xc25c('0x12')]['message']);return _0x5a893c(_0x3cd7df['error']['message']);}else{logger[_0xc25c('0xd')](_0xc25c('0xe'),_0x319927,_0xc25c('0xf'));_0x5a893c(_0x3cd7df[_0xc25c('0x15')][_0xc25c('0x14')]);}})[_0xc25c('0x16')](function(_0x24ccee){logger['error']('UserChatQueue,\x20%s,\x20%s',_0x319927,_0x24ccee);_0x9ff85a(_0x24ccee);});});}
\ No newline at end of file
+var _0x2bcf=['jayson/promise','request','info','UserChatQueue,\x20%s,\x20%s','UserChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x2d6305,_0x2b6a01){var _0x352f1a=function(_0x14a3b9){while(--_0x14a3b9){_0x2d6305['push'](_0x2d6305['shift']());}};_0x352f1a(++_0x2b6a01);}(_0x2bcf,0x10f));var _0xf2bc=function(_0x5e4a61,_0x403c59){_0x5e4a61=_0x5e4a61-0x0;var _0x1374aa=_0x2bcf[_0x5e4a61];return _0x1374aa;};'use strict';var _=require(_0xf2bc('0x0'));var util=require(_0xf2bc('0x1'));var moment=require(_0xf2bc('0x2'));var BPromise=require(_0xf2bc('0x3'));var rs=require(_0xf2bc('0x4'));var fs=require('fs');var Redis=require(_0xf2bc('0x5'));var db=require(_0xf2bc('0x6'))['db'];var utils=require(_0xf2bc('0x7'));var logger=require('../../config/logger')(_0xf2bc('0x8'));var config=require('../../config/environment');var jayson=require(_0xf2bc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xd49706,_0x39dcc1,_0xc56f63){return new BPromise(function(_0x284f7f,_0x5af013){return client[_0xf2bc('0xa')](_0xd49706,_0xc56f63)['then'](function(_0x52eab1){logger[_0xf2bc('0xb')](_0xf2bc('0xc'),_0x39dcc1,'request\x20sent');logger['debug'](_0xf2bc('0xd'),_0x39dcc1,_0xf2bc('0xe'),JSON[_0xf2bc('0xf')](_0x52eab1));if(_0x52eab1[_0xf2bc('0x10')]){if(_0x52eab1[_0xf2bc('0x10')][_0xf2bc('0x11')]===0x1f4){logger[_0xf2bc('0x10')](_0xf2bc('0xc'),_0x39dcc1,_0x52eab1['error'][_0xf2bc('0x12')]);return _0x5af013(_0x52eab1[_0xf2bc('0x10')][_0xf2bc('0x12')]);}logger[_0xf2bc('0x10')](_0xf2bc('0xc'),_0x39dcc1,_0x52eab1[_0xf2bc('0x10')][_0xf2bc('0x12')]);return _0x284f7f(_0x52eab1[_0xf2bc('0x10')][_0xf2bc('0x12')]);}else{logger[_0xf2bc('0xb')](_0xf2bc('0xc'),_0x39dcc1,_0xf2bc('0xe'));_0x284f7f(_0x52eab1[_0xf2bc('0x13')][_0xf2bc('0x12')]);}})['catch'](function(_0x44d3a4){logger[_0xf2bc('0x10')](_0xf2bc('0xc'),_0x39dcc1,_0x44d3a4);_0x5af013(_0x44d3a4);});});}
\ No newline at end of file
index aebe2a0..69c1f4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x2e4798,_0x5c2816){var _0x13b207=function(_0x3e5681){while(--_0x3e5681){_0x2e4798['push'](_0x2e4798['shift']());}};_0x13b207(++_0x5c2816);}(_0xedd9,0xfc));var _0x9edd=function(_0x57caec,_0x280eec){_0x57caec=_0x57caec-0x0;var _0x3c5c65=_0xedd9[_0x57caec];return _0x3c5c65;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x10291b,_0x518773){var _0x1d5fbe=function(_0x24df58){while(--_0x24df58){_0x10291b['push'](_0x10291b['shift']());}};_0x1d5fbe(++_0x518773);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 2f8ff43..410be0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd668=['exports','INTEGER','STRING'];(function(_0x59582f,_0x25ef7c){var _0x523455=function(_0x5ce6cb){while(--_0x5ce6cb){_0x59582f['push'](_0x59582f['shift']());}};_0x523455(++_0x25ef7c);}(_0xd668,0xe1));var _0x8d66=function(_0x570f4f,_0x335a91){_0x570f4f=_0x570f4f-0x0;var _0x2ae0a4=_0xd668[_0x570f4f];return _0x2ae0a4;};'use strict';var Sequelize=require('sequelize');module[_0x8d66('0x0')]={'penalty':{'type':Sequelize[_0x8d66('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x8d66('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x8d66('0x2')]}};
\ No newline at end of file
+var _0x9185=['INTEGER','STRING','sequelize','exports'];(function(_0x599de3,_0x3771a8){var _0x2e8159=function(_0x327516){while(--_0x327516){_0x599de3['push'](_0x599de3['shift']());}};_0x2e8159(++_0x3771a8);}(_0x9185,0x82));var _0x5918=function(_0x337d97,_0x19c381){_0x337d97=_0x337d97-0x0;var _0x53aa89=_0x9185[_0x337d97];return _0x53aa89;};'use strict';var Sequelize=require(_0x5918('0x0'));module[_0x5918('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x5918('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x5918('0x3')]}};
\ No newline at end of file
index bc5fbbb..cfc6ae6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccae=['UserFaxQueue','user_has_fax_queues','lodash','../../config/logger','bluebird','path','rimraf','../../config/environment','define'];(function(_0x508711,_0x22ba06){var _0x29c09a=function(_0x52ff10){while(--_0x52ff10){_0x508711['push'](_0x508711['shift']());}};_0x29c09a(++_0x22ba06);}(_0xccae,0x185));var _0xecca=function(_0x1589dd,_0x2b9d22){_0x1589dd=_0x1589dd-0x0;var _0x1bddd1=_0xccae[_0x1589dd];return _0x1bddd1;};'use strict';var _=require(_0xecca('0x0'));var util=require('util');var logger=require(_0xecca('0x1'))('api');var moment=require('moment');var BPromise=require(_0xecca('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xecca('0x3'));var rimraf=require(_0xecca('0x4'));var config=require(_0xecca('0x5'));var attributes=require('./userFaxQueue.attributes');module['exports']=function(_0x351569,_0x5dd607){return _0x351569[_0xecca('0x6')](_0xecca('0x7'),attributes,{'tableName':_0xecca('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9162=['rimraf','../../config/environment','./userFaxQueue.attributes','define','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x32a9ff,_0xf252f6){var _0x485f47=function(_0x2cd5cc){while(--_0x2cd5cc){_0x32a9ff['push'](_0x32a9ff['shift']());}};_0x485f47(++_0xf252f6);}(_0x9162,0x72));var _0x2916=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0x9162[_0x376b45];return _0x2341b3;};'use strict';var _=require(_0x2916('0x0'));var util=require(_0x2916('0x1'));var logger=require('../../config/logger')(_0x2916('0x2'));var moment=require(_0x2916('0x3'));var BPromise=require(_0x2916('0x4'));var rp=require(_0x2916('0x5'));var fs=require('fs');var path=require(_0x2916('0x6'));var rimraf=require(_0x2916('0x7'));var config=require(_0x2916('0x8'));var attributes=require(_0x2916('0x9'));module['exports']=function(_0x1aa523,_0x3873c1){return _0x1aa523[_0x2916('0xa')]('UserFaxQueue',attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 39413f4..1ffb06b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1d4=['request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','http'];(function(_0x3fac28,_0x4436f8){var _0x65fa06=function(_0x4df963){while(--_0x4df963){_0x3fac28['push'](_0x3fac28['shift']());}};_0x65fa06(++_0x4436f8);}(_0xd1d4,0xae));var _0x4d1d=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0xd1d4[_0x16d10f];return _0x50c823;};'use strict';var _=require(_0x4d1d('0x0'));var util=require(_0x4d1d('0x1'));var moment=require(_0x4d1d('0x2'));var BPromise=require(_0x4d1d('0x3'));var rs=require(_0x4d1d('0x4'));var fs=require('fs');var Redis=require(_0x4d1d('0x5'));var db=require(_0x4d1d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4d1d('0x7'))(_0x4d1d('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x4d1d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1d1c12,_0x21a916,_0x5cfe52){return new BPromise(function(_0x521a61,_0x13b341){return client[_0x4d1d('0xa')](_0x1d1c12,_0x5cfe52)[_0x4d1d('0xb')](function(_0x451e11){logger[_0x4d1d('0xc')](_0x4d1d('0xd'),_0x21a916,_0x4d1d('0xe'));logger[_0x4d1d('0xf')](_0x4d1d('0x10'),_0x21a916,'request\x20sent',JSON[_0x4d1d('0x11')](_0x451e11));if(_0x451e11[_0x4d1d('0x12')]){if(_0x451e11['error'][_0x4d1d('0x13')]===0x1f4){logger['error'](_0x4d1d('0xd'),_0x21a916,_0x451e11[_0x4d1d('0x12')][_0x4d1d('0x14')]);return _0x13b341(_0x451e11['error'][_0x4d1d('0x14')]);}logger[_0x4d1d('0x12')]('UserFaxQueue,\x20%s,\x20%s',_0x21a916,_0x451e11[_0x4d1d('0x12')][_0x4d1d('0x14')]);return _0x521a61(_0x451e11[_0x4d1d('0x12')]['message']);}else{logger['info']('UserFaxQueue,\x20%s,\x20%s',_0x21a916,'request\x20sent');_0x521a61(_0x451e11[_0x4d1d('0x15')][_0x4d1d('0x14')]);}})[_0x4d1d('0x16')](function(_0x20d399){logger[_0x4d1d('0x12')](_0x4d1d('0xd'),_0x21a916,_0x20d399);_0x13b341(_0x20d399);});});}
\ No newline at end of file
+var _0x14ff=['info','result','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','UserFaxQueue,\x20%s,\x20%s','request\x20sent','UserFaxQueue,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x3fbc28,_0x10a519){var _0x43539a=function(_0x270d48){while(--_0x270d48){_0x3fbc28['push'](_0x3fbc28['shift']());}};_0x43539a(++_0x10a519);}(_0x14ff,0xcb));var _0xf14f=function(_0x591456,_0x33db8a){_0x591456=_0x591456-0x0;var _0x52620b=_0x14ff[_0x591456];return _0x52620b;};'use strict';var _=require(_0xf14f('0x0'));var util=require('util');var moment=require(_0xf14f('0x1'));var BPromise=require('bluebird');var rs=require(_0xf14f('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf14f('0x3'))['db'];var utils=require(_0xf14f('0x4'));var logger=require('../../config/logger')(_0xf14f('0x5'));var config=require(_0xf14f('0x6'));var jayson=require(_0xf14f('0x7'));var client=jayson[_0xf14f('0x8')][_0xf14f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1e971e,_0x3bc241,_0x508062){return new BPromise(function(_0x3bab86,_0x3ba9e8){return client['request'](_0x1e971e,_0x508062)[_0xf14f('0xa')](function(_0x3e5248){logger['info'](_0xf14f('0xb'),_0x3bc241,_0xf14f('0xc'));logger['debug'](_0xf14f('0xd'),_0x3bc241,'request\x20sent',JSON['stringify'](_0x3e5248));if(_0x3e5248[_0xf14f('0xe')]){if(_0x3e5248[_0xf14f('0xe')][_0xf14f('0xf')]===0x1f4){logger['error'](_0xf14f('0xb'),_0x3bc241,_0x3e5248['error'][_0xf14f('0x10')]);return _0x3ba9e8(_0x3e5248[_0xf14f('0xe')][_0xf14f('0x10')]);}logger['error'](_0xf14f('0xb'),_0x3bc241,_0x3e5248[_0xf14f('0xe')]['message']);return _0x3bab86(_0x3e5248[_0xf14f('0xe')][_0xf14f('0x10')]);}else{logger[_0xf14f('0x11')](_0xf14f('0xb'),_0x3bc241,'request\x20sent');_0x3bab86(_0x3e5248[_0xf14f('0x12')][_0xf14f('0x10')]);}})[_0xf14f('0x13')](function(_0x2bd9e2){logger[_0xf14f('0xe')](_0xf14f('0xb'),_0x3bc241,_0x2bd9e2);_0x3ba9e8(_0x2bd9e2);});});}
\ No newline at end of file
index 29bc9d7..0ddccaa 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(_0x3d0632,_0x213d47){var _0x2637dd=function(_0x344469){while(--_0x344469){_0x3d0632['push'](_0x3d0632['shift']());}};_0x2637dd(++_0x213d47);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x512192,_0x39190f){var _0x5533ae=function(_0x78990){while(--_0x78990){_0x512192['push'](_0x512192['shift']());}};_0x5533ae(++_0x39190f);}(_0xe706,0xa3));var _0x6e70=function(_0x3c66e5,_0xab5ea3){_0x3c66e5=_0x3c66e5-0x0;var _0x678a=_0xe706[_0x3c66e5];return _0x678a;};'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 2300696..ab73267 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb009=['sequelize','INTEGER'];(function(_0x499cd3,_0x244380){var _0xa0c04f=function(_0x48a133){while(--_0x48a133){_0x499cd3['push'](_0x499cd3['shift']());}};_0xa0c04f(++_0x244380);}(_0xb009,0xe0));var _0x9b00=function(_0x287c21,_0x1b7be5){_0x287c21=_0x287c21-0x0;var _0x145e31=_0xb009[_0x287c21];return _0x145e31;};'use strict';var Sequelize=require(_0x9b00('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x9b00('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1ab4=['sequelize','INTEGER'];(function(_0x1ef790,_0x2828f5){var _0x2f0466=function(_0x291506){while(--_0x291506){_0x1ef790['push'](_0x1ef790['shift']());}};_0x2f0466(++_0x2828f5);}(_0x1ab4,0x1ae));var _0x41ab=function(_0x2837ee,_0xc4521e){_0x2837ee=_0x2837ee-0x0;var _0x301be4=_0x1ab4[_0x2837ee];return _0x301be4;};'use strict';var Sequelize=require(_0x41ab('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x41ab('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 18132f8..36917a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd73a=['define','UserMailQueue','user_has_mail_queues','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./userMailQueue.attributes'];(function(_0x524cb3,_0x3f3e47){var _0x2d4464=function(_0xb14b59){while(--_0xb14b59){_0x524cb3['push'](_0x524cb3['shift']());}};_0x2d4464(++_0x3f3e47);}(_0xd73a,0xff));var _0xad73=function(_0x41333d,_0x423c8d){_0x41333d=_0x41333d-0x0;var _0x261369=_0xd73a[_0x41333d];return _0x261369;};'use strict';var _=require(_0xad73('0x0'));var util=require(_0xad73('0x1'));var logger=require(_0xad73('0x2'))(_0xad73('0x3'));var moment=require(_0xad73('0x4'));var BPromise=require(_0xad73('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xad73('0x6'));var config=require(_0xad73('0x7'));var attributes=require(_0xad73('0x8'));module['exports']=function(_0x3a0c7c,_0x3de78a){return _0x3a0c7c[_0xad73('0x9')](_0xad73('0xa'),attributes,{'tableName':_0xad73('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1199=['request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes','UserMailQueue','user_has_mail_queues','lodash','moment','bluebird'];(function(_0x3f40c4,_0x1e98c9){var _0x5c41de=function(_0x4a0fdf){while(--_0x4a0fdf){_0x3f40c4['push'](_0x3f40c4['shift']());}};_0x5c41de(++_0x1e98c9);}(_0x1199,0x133));var _0x9119=function(_0x479f59,_0x12b753){_0x479f59=_0x479f59-0x0;var _0x1d327a=_0x1199[_0x479f59];return _0x1d327a;};'use strict';var _=require(_0x9119('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x9119('0x1'));var BPromise=require(_0x9119('0x2'));var rp=require(_0x9119('0x3'));var fs=require('fs');var path=require(_0x9119('0x4'));var rimraf=require(_0x9119('0x5'));var config=require(_0x9119('0x6'));var attributes=require(_0x9119('0x7'));module['exports']=function(_0x2b232f,_0x55871f){return _0x2b232f['define'](_0x9119('0x8'),attributes,{'tableName':_0x9119('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index af237c4..63c0c06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['../../config/environment','jayson/promise','client','http','then','info','UserMailQueue,\x20%s,\x20%s','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils'];(function(_0x5c1eb4,_0x8fb242){var _0x472a05=function(_0x46b50c){while(--_0x46b50c){_0x5c1eb4['push'](_0x5c1eb4['shift']());}};_0x472a05(++_0x8fb242);}(_0xe14b,0x93));var _0xbe14=function(_0x557197,_0x533eb0){_0x557197=_0x557197-0x0;var _0x3debf7=_0xe14b[_0x557197];return _0x3debf7;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbe14('0x2'));var fs=require('fs');var Redis=require(_0xbe14('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe14('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbe14('0x5'));var jayson=require(_0xbe14('0x6'));var client=jayson[_0xbe14('0x7')][_0xbe14('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){return client['request'](_0x1d9ade,_0x196fca)[_0xbe14('0x9')](function(_0x6fceff){logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,'request\x20sent');logger['debug'](_0xbe14('0xc'),_0x39387e,_0xbe14('0xd'),JSON['stringify'](_0x6fceff));if(_0x6fceff[_0xbe14('0xe')]){if(_0x6fceff[_0xbe14('0xe')][_0xbe14('0xf')]===0x1f4){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x50f909(_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);}logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x566ae7(_0x6fceff['error']['message']);}else{logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,_0xbe14('0xd'));_0x566ae7(_0x6fceff[_0xbe14('0x11')]['message']);}})[_0xbe14('0x12')](function(_0xe9c3ec){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0xe9c3ec);_0x50f909(_0xe9c3ec);});});}
\ No newline at end of file
+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(_0x4c4f48,_0x35110e){var _0x488c58=function(_0x89f768){while(--_0x89f768){_0x4c4f48['push'](_0x4c4f48['shift']());}};_0x488c58(++_0x35110e);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'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 f8b3341..ef54ca6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bbd=['post','isAuthenticated','sendUserNotification','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller'];(function(_0x274509,_0x1353f7){var _0x47298c=function(_0x514eaf){while(--_0x514eaf){_0x274509['push'](_0x274509['shift']());}};_0x47298c(++_0x1353f7);}(_0x5bbd,0x7c));var _0xd5bb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5bbd[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xd5bb('0x0'));var util=require(_0xd5bb('0x1'));var path=require(_0xd5bb('0x2'));var timeout=require(_0xd5bb('0x3'));var express=require(_0xd5bb('0x4'));var router=express[_0xd5bb('0x5')]();var fs_extra=require(_0xd5bb('0x6'));var auth=require(_0xd5bb('0x7'));var interaction=require(_0xd5bb('0x8'));var config=require(_0xd5bb('0x9'));var controller=require(_0xd5bb('0xa'));router[_0xd5bb('0xb')]('/',auth[_0xd5bb('0xc')](),controller[_0xd5bb('0xd')]);module[_0xd5bb('0xe')]=router;
\ No newline at end of file
+var _0x4c67=['fs-extra','../../components/interaction/service','../../config/environment','./userNotification.controller','post','sendUserNotification','util','path'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0x4c67,0x10e));var _0x74c6=function(_0x4ce692,_0x3c3d3c){_0x4ce692=_0x4ce692-0x0;var _0x3c9be8=_0x4c67[_0x4ce692];return _0x3c9be8;};'use strict';var multer=require('multer');var util=require(_0x74c6('0x0'));var path=require(_0x74c6('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x74c6('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x74c6('0x3'));var config=require(_0x74c6('0x4'));var controller=require(_0x74c6('0x5'));router[_0x74c6('0x6')]('/',auth['isAuthenticated'](),controller[_0x74c6('0x7')]);module['exports']=router;
\ No newline at end of file
index 6b1249c..ecdcf56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91ef=['TEXT','BOOLEAN','exports','STRING'];(function(_0x5ca5bc,_0x5b8a9d){var _0x26ca86=function(_0x1ad9a6){while(--_0x1ad9a6){_0x5ca5bc['push'](_0x5ca5bc['shift']());}};_0x26ca86(++_0x5b8a9d);}(_0x91ef,0x1e2));var _0xf91e=function(_0x82129b,_0x484ae9){_0x82129b=_0x82129b-0x0;var _0x2ae5dc=_0x91ef[_0x82129b];return _0x2ae5dc;};'use strict';var Sequelize=require('sequelize');module[_0xf91e('0x0')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0xf91e('0x1')]},'recipientsId':{'type':Sequelize[_0xf91e('0x2')]},'recipientsDescription':{'type':Sequelize[_0xf91e('0x1')]},'beep':{'type':Sequelize[_0xf91e('0x3')]}};
\ No newline at end of file
+var _0x3263=['exports','TEXT','STRING','BOOLEAN','sequelize'];(function(_0x17c10c,_0x1e109d){var _0x3ba139=function(_0x5dafb8){while(--_0x5dafb8){_0x17c10c['push'](_0x17c10c['shift']());}};_0x3ba139(++_0x1e109d);}(_0x3263,0x117));var _0x3326=function(_0x264eeb,_0xc05998){_0x264eeb=_0x264eeb-0x0;var _0xa45c83=_0x3263[_0x264eeb];return _0xa45c83;};'use strict';var Sequelize=require(_0x3326('0x0'));module[_0x3326('0x1')]={'body':{'type':Sequelize[_0x3326('0x2')]},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0x3326('0x2')]},'recipientsDescription':{'type':Sequelize[_0x3326('0x3')]},'beep':{'type':Sequelize[_0x3326('0x4')]}};
\ No newline at end of file
index b777b2b..3d5cee2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6ca=['status','json','offset','undefined','limit','count','apply','reject','save','update','then','end','sendStatus','error','stack','name','send','body','text','hasOwnProperty','Sequelize','ValidationError','TemplateId','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','openchannelqueue','voicequeue','whatsappqueue','some','includes','toLowerCase','senderName','user','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','UserNotification','create','forEach','recipient','emit','userNotification:send','catch','Template','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','User','ids','queue','Queue','push','all','union','findOne','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userNotification.socket'];(function(_0x35007a,_0x58a0d4){var _0x574f68=function(_0xd1c129){while(--_0xd1c129){_0x35007a['push'](_0x35007a['shift']());}};_0x574f68(++_0x58a0d4);}(_0xe6ca,0xa5));var _0xae6c=function(_0x4a0f8e,_0xcee8fe){_0x4a0f8e=_0x4a0f8e-0x0;var _0x215ee0=_0xe6ca[_0x4a0f8e];return _0x215ee0;};'use strict';var emlformat=require(_0xae6c('0x0'));var rimraf=require(_0xae6c('0x1'));var zipdir=require(_0xae6c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xae6c('0x3'));var moment=require(_0xae6c('0x4'));var BPromise=require(_0xae6c('0x5'));var Mustache=require(_0xae6c('0x6'));var util=require(_0xae6c('0x7'));var path=require('path');var sox=require(_0xae6c('0x8'));var csv=require(_0xae6c('0x9'));var ejs=require(_0xae6c('0xa'));var fs=require('fs');var fs_extra=require(_0xae6c('0xb'));var _=require(_0xae6c('0xc'));var squel=require(_0xae6c('0xd'));var crypto=require('crypto');var jsforce=require(_0xae6c('0xe'));var deskjs=require(_0xae6c('0xf'));var toCsv=require(_0xae6c('0x9'));var querystring=require(_0xae6c('0x10'));var Papa=require(_0xae6c('0x11'));var Redis=require(_0xae6c('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xae6c('0x13'));var as=require(_0xae6c('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xae6c('0x15'))('api');var utils=require(_0xae6c('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xae6c('0x17'));var db=require(_0xae6c('0x18'))['db'];config[_0xae6c('0x19')]=_['defaults'](config[_0xae6c('0x19')],{'host':_0xae6c('0x1a'),'port':0x18eb});var socket=require(_0xae6c('0x1b'))(new Redis(config[_0xae6c('0x19')]));require(_0xae6c('0x1c'))['register'](socket);function respondWithStatusCode(_0x230199,_0x27eaea){_0x27eaea=_0x27eaea||0xcc;return function(_0x38a656){if(_0x38a656){return _0x230199['sendStatus'](_0x27eaea);}return _0x230199['status'](_0x27eaea)['end']();};}function respondWithResult(_0x2d5c5c,_0x2518a4){_0x2518a4=_0x2518a4||0xc8;return function(_0x186836){if(_0x186836){return _0x2d5c5c[_0xae6c('0x1d')](_0x2518a4)[_0xae6c('0x1e')](_0x186836);}};}function respondWithFilteredResult(_0x307600,_0x2cd2b2){return function(_0x494e75){if(_0x494e75){var _0x460e25=typeof _0x2cd2b2[_0xae6c('0x1f')]===_0xae6c('0x20')&&typeof _0x2cd2b2[_0xae6c('0x21')]==='undefined';var _0x5d6d92=_0x494e75['count'];var _0x3b15d4=_0x460e25?0x0:_0x2cd2b2[_0xae6c('0x1f')];var _0x46bd6c=_0x460e25?_0x494e75[_0xae6c('0x22')]:_0x2cd2b2['offset']+_0x2cd2b2[_0xae6c('0x21')];var _0x5edf71;if(_0x46bd6c>=_0x5d6d92){_0x46bd6c=_0x5d6d92;_0x5edf71=0xc8;}else{_0x5edf71=0xce;}_0x307600[_0xae6c('0x1d')](_0x5edf71);return _0x307600['set']('Content-Range',_0x3b15d4+'-'+_0x46bd6c+'/'+_0x5d6d92)['json'](_0x494e75);}return null;};}function patchUpdates(_0x5e39f4){return function(_0xa1aaa3){try{jsonpatch[_0xae6c('0x23')](_0xa1aaa3,_0x5e39f4,!![]);}catch(_0x59277f){return BPromise[_0xae6c('0x24')](_0x59277f);}return _0xa1aaa3[_0xae6c('0x25')]();};}function saveUpdates(_0x397a5c,_0x3814c9){return function(_0x48eedc){if(_0x48eedc){return _0x48eedc[_0xae6c('0x26')](_0x397a5c)[_0xae6c('0x27')](function(_0xe4495c){return _0xe4495c;});}return null;};}function removeEntity(_0x2b70fc,_0x4213a8){return function(_0x9b42ed){if(_0x9b42ed){return _0x9b42ed['destroy']()[_0xae6c('0x27')](function(){_0x2b70fc[_0xae6c('0x1d')](0xcc)[_0xae6c('0x28')]();});}};}function handleEntityNotFound(_0x3ec390,_0x2b0e95){return function(_0x445b72){if(!_0x445b72){_0x3ec390[_0xae6c('0x29')](0x194);}return _0x445b72;};}function handleError(_0x5c4b22,_0x3204ac){_0x3204ac=_0x3204ac||0x1f4;return function(_0x3a5668){logger[_0xae6c('0x2a')](_0x3a5668[_0xae6c('0x2b')]);if(_0x3a5668[_0xae6c('0x2c')]){delete _0x3a5668['name'];}_0x5c4b22[_0xae6c('0x1d')](_0x3204ac)[_0xae6c('0x2d')](_0x3a5668);};}exports['sendUserNotification']=function(_0x47bd94,_0x1456b8,_0x2f7d21){if(!_0x47bd94[_0xae6c('0x2e')]['hasOwnProperty'](_0xae6c('0x2f'))&&!_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x30')]('TemplateId')){throw new db[(_0xae6c('0x31'))][(_0xae6c('0x32'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x47bd94[_0xae6c('0x2e')]['hasOwnProperty'](_0xae6c('0x33'))&&!_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x30')](_0xae6c('0x34'))){throw new db[(_0xae6c('0x31'))][(_0xae6c('0x32'))](_0xae6c('0x35'));}if(!_0x47bd94['body'][_0xae6c('0x30')](_0xae6c('0x36'))){throw new db[(_0xae6c('0x31'))][(_0xae6c('0x32'))](_0xae6c('0x37'));}else{try{var _0x2f450c=JSON[_0xae6c('0x38')](_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x36')]);}catch(_0x199e26){logger['error'](_0x199e26);throw new db[(_0xae6c('0x31'))]['ValidationError'](_0xae6c('0x39'));}var _0x48a769=[_0xae6c('0x3a'),_0xae6c('0x3b'),'mailqueue',_0xae6c('0x3c'),'smsqueue',_0xae6c('0x3d'),_0xae6c('0x3e'),'team','user'];if(_[_0xae6c('0x3f')](_0x2f450c,function(_0x6601b9){return!_[_0xae6c('0x40')](_0x48a769,_0x6601b9['model'][_0xae6c('0x41')]());})){throw new db[(_0xae6c('0x31'))][(_0xae6c('0x32'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x204a97={};_0x204a97[_0xae6c('0x42')]=_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x30')]('senderName')?_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x42')]:_0x47bd94[_0xae6c('0x43')]['fullname'];_0x204a97[_0xae6c('0x44')]=_[_0xae6c('0x45')](_0x47bd94['body'][_0xae6c('0x44')])?null:_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x44')];_0x204a97['beep']=_0x47bd94[_0xae6c('0x2e')][_0xae6c('0x46')]||![];_0x204a97[_0xae6c('0x47')]=_0x47bd94['user']['id'];return getContent(_0x47bd94[_0xae6c('0x2e')])[_0xae6c('0x27')](function(_0x556345){_0x204a97[_0xae6c('0x2e')]=_0x556345;return getRecipients(_0x2f450c);})[_0xae6c('0x27')](function(_0x597585){_0x204a97[_0xae6c('0x48')]=_[_0xae6c('0x49')](_0x597585)[_0xae6c('0x4a')](',');return db[_0xae6c('0x4b')][_0xae6c('0x4c')](function(_0x37c845){return db[_0xae6c('0x4d')][_0xae6c('0x4e')](_0x204a97,{'raw':!![],'transaction':_0x37c845})[_0xae6c('0x27')](function(_0x420ffe){var _0x45b114={'sender':_0x204a97[_0xae6c('0x42')],'description':_0x204a97[_0xae6c('0x44')],'content':_0x204a97[_0xae6c('0x2e')],'beep':_0x204a97['beep']};_0x597585[_0xae6c('0x4f')](function(_0x54694a){_0x45b114[_0xae6c('0x50')]=_0x54694a;socket[_0xae6c('0x51')](_0xae6c('0x52'),_0x45b114);});return _0x420ffe;});});})[_0xae6c('0x27')](respondWithResult(_0x1456b8,0xc9))[_0xae6c('0x53')](handleError(_0x1456b8,null));};function getContent(_0x11ff2c){return new BPromise(function(_0x38f99d,_0x339b85){if(_0x11ff2c[_0xae6c('0x2f')]){_0x38f99d(_0x11ff2c['text']);return;}return db[_0xae6c('0x54')]['findOne']({'attributes':[_0xae6c('0x55')],'where':{'id':_0x11ff2c[_0xae6c('0x33')]},'raw':!![]})[_0xae6c('0x27')](function(_0x1765f1){if(!_0x1765f1)throw new db['Sequelize'][(_0xae6c('0x32'))](_0xae6c('0x56'));var _0x3b622c=Mustache[_0xae6c('0x57')](_0x1765f1['html'],_0x11ff2c[_0xae6c('0x34')]);_0x38f99d(_0x3b622c);})[_0xae6c('0x53')](function(_0x370ff0){_0x339b85(_0x370ff0);});});}function getRecipients(_0xf58cb0){return new BPromise(function(_0x241dab,_0x281054){var _0x39a256=[];var _0x55cb54=[];_0xf58cb0[_0xae6c('0x4f')](function(_0x3f4bc3){var _0x43aca0=_['startCase'](_0x3f4bc3['model'][_0xae6c('0x41')]());if(_0x43aca0===_0xae6c('0x58')){_0x39a256=_['union'](_0x39a256,_0x3f4bc3[_0xae6c('0x59')]);}else{if(_[_0xae6c('0x40')](_0x43aca0,'queue'))_0x43aca0=_0x43aca0['replace'](_0xae6c('0x5a'),_0xae6c('0x5b'));_0x3f4bc3[_0xae6c('0x59')][_0xae6c('0x4f')](function(_0x52e548){_0x55cb54[_0xae6c('0x5c')](getAgents(_0x43aca0,_0x52e548));});}});return BPromise[_0xae6c('0x5d')](_0x55cb54)[_0xae6c('0x27')](function(_0x3a1734){_0x39a256=_[_0xae6c('0x5e')](_0x39a256,_['flatten'](_0x3a1734));_0x241dab(_0x39a256);})['catch'](function(_0x36f934){_0x281054(_0x36f934);});});}function getAgents(_0x1ffb8a,_0x54629b){return new BPromise(function(_0x239b92,_0x4543d3){return db[_0x1ffb8a][_0xae6c('0x5f')]({'where':{'id':_0x54629b}})[_0xae6c('0x27')](function(_0x439447){return _0x439447[_0xae6c('0x60')]({'attributes':['id'],'raw':!![]})[_0xae6c('0x27')](function(_0x3bc11f){var _0x4e9dc1=_['map'](_0x3bc11f,'id');_0x239b92(_0x4e9dc1);});})[_0xae6c('0x53')](function(_0x1d50eb){_0x4543d3(_0x1d50eb);});});}
\ No newline at end of file
+var _0xf95a=['squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./userNotification.socket','register','sendStatus','status','end','json','offset','undefined','count','set','reject','destroy','then','error','stack','name','send','sendUserNotification','body','hasOwnProperty','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','openchannelqueue','voicequeue','whatsappqueue','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','join','transaction','UserNotification','create','forEach','recipient','emit','userNotification:send','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','catch','startCase','User','union','ids','queue','Queue','push','all','getAgents','rimraf','zip-dir','moment','mustache','util','path','ejs','fs-extra','lodash'];(function(_0x3eab76,_0x639902){var _0x194179=function(_0x727432){while(--_0x727432){_0x3eab76['push'](_0x3eab76['shift']());}};_0x194179(++_0x639902);}(_0xf95a,0xb5));var _0xaf95=function(_0x387afd,_0x94689a){_0x387afd=_0x387afd-0x0;var _0x1e2415=_0xf95a[_0x387afd];return _0x1e2415;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaf95('0x0'));var zipdir=require(_0xaf95('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xaf95('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xaf95('0x3'));var util=require(_0xaf95('0x4'));var path=require(_0xaf95('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xaf95('0x6'));var fs=require('fs');var fs_extra=require(_0xaf95('0x7'));var _=require(_0xaf95('0x8'));var squel=require(_0xaf95('0x9'));var crypto=require(_0xaf95('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xaf95('0xb'));var toCsv=require(_0xaf95('0xc'));var querystring=require(_0xaf95('0xd'));var Papa=require(_0xaf95('0xe'));var Redis=require('ioredis');var authService=require(_0xaf95('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xaf95('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xaf95('0x11'))('api');var utils=require(_0xaf95('0x12'));var config=require(_0xaf95('0x13'));var licenseUtil=require(_0xaf95('0x14'));var db=require(_0xaf95('0x15'))['db'];config[_0xaf95('0x16')]=_[_0xaf95('0x17')](config[_0xaf95('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xaf95('0x18'))(new Redis(config[_0xaf95('0x16')]));require(_0xaf95('0x19'))[_0xaf95('0x1a')](socket);function respondWithStatusCode(_0x5010d0,_0x494f14){_0x494f14=_0x494f14||0xcc;return function(_0x3ec4f0){if(_0x3ec4f0){return _0x5010d0[_0xaf95('0x1b')](_0x494f14);}return _0x5010d0[_0xaf95('0x1c')](_0x494f14)[_0xaf95('0x1d')]();};}function respondWithResult(_0x1d6b52,_0x4b719d){_0x4b719d=_0x4b719d||0xc8;return function(_0x43fdb9){if(_0x43fdb9){return _0x1d6b52['status'](_0x4b719d)[_0xaf95('0x1e')](_0x43fdb9);}};}function respondWithFilteredResult(_0x2929c5,_0x331932){return function(_0x55a8ef){if(_0x55a8ef){var _0x9b9d0e=typeof _0x331932[_0xaf95('0x1f')]===_0xaf95('0x20')&&typeof _0x331932['limit']===_0xaf95('0x20');var _0x2a1cfa=_0x55a8ef['count'];var _0x496dc8=_0x9b9d0e?0x0:_0x331932[_0xaf95('0x1f')];var _0x51a391=_0x9b9d0e?_0x55a8ef[_0xaf95('0x21')]:_0x331932[_0xaf95('0x1f')]+_0x331932['limit'];var _0x48bf89;if(_0x51a391>=_0x2a1cfa){_0x51a391=_0x2a1cfa;_0x48bf89=0xc8;}else{_0x48bf89=0xce;}_0x2929c5[_0xaf95('0x1c')](_0x48bf89);return _0x2929c5[_0xaf95('0x22')]('Content-Range',_0x496dc8+'-'+_0x51a391+'/'+_0x2a1cfa)[_0xaf95('0x1e')](_0x55a8ef);}return null;};}function patchUpdates(_0x226c07){return function(_0x1fa9d8){try{jsonpatch['apply'](_0x1fa9d8,_0x226c07,!![]);}catch(_0x46bcb8){return BPromise[_0xaf95('0x23')](_0x46bcb8);}return _0x1fa9d8['save']();};}function saveUpdates(_0x3e457c,_0x417cab){return function(_0x153d5f){if(_0x153d5f){return _0x153d5f['update'](_0x3e457c)['then'](function(_0x1b2eb5){return _0x1b2eb5;});}return null;};}function removeEntity(_0x2c6bc4,_0xed3a39){return function(_0x5e6840){if(_0x5e6840){return _0x5e6840[_0xaf95('0x24')]()[_0xaf95('0x25')](function(){_0x2c6bc4['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3387dd,_0x3eb6dd){return function(_0x49e065){if(!_0x49e065){_0x3387dd['sendStatus'](0x194);}return _0x49e065;};}function handleError(_0x4b0e7f,_0x184c89){_0x184c89=_0x184c89||0x1f4;return function(_0x288029){logger[_0xaf95('0x26')](_0x288029[_0xaf95('0x27')]);if(_0x288029[_0xaf95('0x28')]){delete _0x288029[_0xaf95('0x28')];}_0x4b0e7f['status'](_0x184c89)[_0xaf95('0x29')](_0x288029);};}exports[_0xaf95('0x2a')]=function(_0x3a732b,_0x197759,_0x4736c9){if(!_0x3a732b[_0xaf95('0x2b')][_0xaf95('0x2c')]('text')&&!_0x3a732b[_0xaf95('0x2b')][_0xaf95('0x2c')](_0xaf95('0x2d'))){throw new db[(_0xaf95('0x2e'))][(_0xaf95('0x2f'))](_0xaf95('0x30'));}else{if(_0x3a732b[_0xaf95('0x2b')][_0xaf95('0x2c')](_0xaf95('0x2d'))&&!_0x3a732b[_0xaf95('0x2b')][_0xaf95('0x2c')](_0xaf95('0x31'))){throw new db['Sequelize'][(_0xaf95('0x2f'))](_0xaf95('0x32'));}if(!_0x3a732b['body']['hasOwnProperty'](_0xaf95('0x33'))){throw new db['Sequelize'][(_0xaf95('0x2f'))](_0xaf95('0x34'));}else{try{var _0x4b00dd=JSON[_0xaf95('0x35')](_0x3a732b[_0xaf95('0x2b')][_0xaf95('0x33')]);}catch(_0x41f65b){logger[_0xaf95('0x26')](_0x41f65b);throw new db[(_0xaf95('0x2e'))][(_0xaf95('0x2f'))](_0xaf95('0x36'));}var _0x18c695=[_0xaf95('0x37'),_0xaf95('0x38'),'mailqueue',_0xaf95('0x39'),'smsqueue',_0xaf95('0x3a'),_0xaf95('0x3b'),'team','user'];if(_[_0xaf95('0x3c')](_0x4b00dd,function(_0x397374){return!_[_0xaf95('0x3d')](_0x18c695,_0x397374[_0xaf95('0x3e')][_0xaf95('0x3f')]());})){throw new db['Sequelize'][(_0xaf95('0x2f'))](_0xaf95('0x40'));}}}var _0xb0e0a3={};_0xb0e0a3[_0xaf95('0x41')]=_0x3a732b[_0xaf95('0x2b')][_0xaf95('0x2c')](_0xaf95('0x41'))?_0x3a732b[_0xaf95('0x2b')][_0xaf95('0x41')]:_0x3a732b['user'][_0xaf95('0x42')];_0xb0e0a3[_0xaf95('0x43')]=_[_0xaf95('0x44')](_0x3a732b[_0xaf95('0x2b')][_0xaf95('0x43')])?null:_0x3a732b['body'][_0xaf95('0x43')];_0xb0e0a3['beep']=_0x3a732b[_0xaf95('0x2b')][_0xaf95('0x45')]||![];_0xb0e0a3[_0xaf95('0x46')]=_0x3a732b['user']['id'];return getContent(_0x3a732b['body'])[_0xaf95('0x25')](function(_0x1ed04c){_0xb0e0a3[_0xaf95('0x2b')]=_0x1ed04c;return getRecipients(_0x4b00dd);})[_0xaf95('0x25')](function(_0x3d733a){_0xb0e0a3[_0xaf95('0x47')]=_['sortBy'](_0x3d733a)[_0xaf95('0x48')](',');return db['sequelize'][_0xaf95('0x49')](function(_0x233e30){return db[_0xaf95('0x4a')][_0xaf95('0x4b')](_0xb0e0a3,{'raw':!![],'transaction':_0x233e30})[_0xaf95('0x25')](function(_0x41c58d){var _0x52b14b={'sender':_0xb0e0a3[_0xaf95('0x41')],'description':_0xb0e0a3[_0xaf95('0x43')],'content':_0xb0e0a3[_0xaf95('0x2b')],'beep':_0xb0e0a3[_0xaf95('0x45')]};_0x3d733a[_0xaf95('0x4c')](function(_0x595ea1){_0x52b14b[_0xaf95('0x4d')]=_0x595ea1;socket[_0xaf95('0x4e')](_0xaf95('0x4f'),_0x52b14b);});return _0x41c58d;});});})[_0xaf95('0x25')](respondWithResult(_0x197759,0xc9))['catch'](handleError(_0x197759,null));};function getContent(_0x5ef4a9){return new BPromise(function(_0x5c4d6a,_0x1ffffb){if(_0x5ef4a9['text']){_0x5c4d6a(_0x5ef4a9['text']);return;}return db[_0xaf95('0x50')][_0xaf95('0x51')]({'attributes':[_0xaf95('0x52')],'where':{'id':_0x5ef4a9[_0xaf95('0x2d')]},'raw':!![]})[_0xaf95('0x25')](function(_0xe5d381){if(!_0xe5d381)throw new db['Sequelize'][(_0xaf95('0x2f'))](_0xaf95('0x53'));var _0x35d2e0=Mustache[_0xaf95('0x54')](_0xe5d381[_0xaf95('0x52')],_0x5ef4a9[_0xaf95('0x31')]);_0x5c4d6a(_0x35d2e0);})[_0xaf95('0x55')](function(_0x27a45e){_0x1ffffb(_0x27a45e);});});}function getRecipients(_0x28467a){return new BPromise(function(_0x4c8276,_0x328ad0){var _0x2cf8e3=[];var _0x9e5879=[];_0x28467a[_0xaf95('0x4c')](function(_0x1a8f77){var _0xa7de33=_[_0xaf95('0x56')](_0x1a8f77['model'][_0xaf95('0x3f')]());if(_0xa7de33===_0xaf95('0x57')){_0x2cf8e3=_[_0xaf95('0x58')](_0x2cf8e3,_0x1a8f77[_0xaf95('0x59')]);}else{if(_[_0xaf95('0x3d')](_0xa7de33,_0xaf95('0x5a')))_0xa7de33=_0xa7de33['replace'](_0xaf95('0x5a'),_0xaf95('0x5b'));_0x1a8f77[_0xaf95('0x59')][_0xaf95('0x4c')](function(_0x171d52){_0x9e5879[_0xaf95('0x5c')](getAgents(_0xa7de33,_0x171d52));});}});return BPromise[_0xaf95('0x5d')](_0x9e5879)['then'](function(_0x597aac){_0x2cf8e3=_['union'](_0x2cf8e3,_['flatten'](_0x597aac));_0x4c8276(_0x2cf8e3);})[_0xaf95('0x55')](function(_0xfec2d6){_0x328ad0(_0xfec2d6);});});}function getAgents(_0x31ee02,_0x2501dc){return new BPromise(function(_0x5f34de,_0x1eb236){return db[_0x31ee02][_0xaf95('0x51')]({'where':{'id':_0x2501dc}})[_0xaf95('0x25')](function(_0x256f13){return _0x256f13[_0xaf95('0x5e')]({'attributes':['id'],'raw':!![]})[_0xaf95('0x25')](function(_0x479024){var _0x1dd8d4=_['map'](_0x479024,'id');_0x5f34de(_0x1dd8d4);});})['catch'](function(_0x49c67f){_0x1eb236(_0x49c67f);});});}
\ No newline at end of file
index 642ba26..b70c528 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb14=['hook','exports','events','../../mysqldb','UserNotification','save','update','remove','emit','hasOwnProperty'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xdb14,0x106));var _0x4db1=function(_0x486f0b,_0x19a9b7){_0x486f0b=_0x486f0b-0x0;var _0x12ccaf=_0xdb14[_0x486f0b];return _0x12ccaf;};'use strict';var EventEmitter=require(_0x4db1('0x0'));var UserNotification=require(_0x4db1('0x1'))['db'][_0x4db1('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4db1('0x3'),'afterUpdate':_0x4db1('0x4'),'afterDestroy':_0x4db1('0x5')};function emitEvent(_0xfa65f7){return function(_0xa1b2b,_0x279cf3,_0x559e91){UserNotificationEvents[_0x4db1('0x6')](_0xfa65f7+':'+_0xa1b2b['id'],_0xa1b2b);UserNotificationEvents['emit'](_0xfa65f7,_0xa1b2b);_0x559e91(null);};}for(var e in events){if(events[_0x4db1('0x7')](e)){var event=events[e];UserNotification[_0x4db1('0x8')](e,emitEvent(event));}}module[_0x4db1('0x9')]=UserNotificationEvents;
\ No newline at end of file
+var _0x9295=['hook','events','../../mysqldb','UserNotification','setMaxListeners','update','remove','hasOwnProperty'];(function(_0x56abe6,_0x1dfa2b){var _0x39a04d=function(_0x549f37){while(--_0x549f37){_0x56abe6['push'](_0x56abe6['shift']());}};_0x39a04d(++_0x1dfa2b);}(_0x9295,0x99));var _0x5929=function(_0x54cdd0,_0x1d0231){_0x54cdd0=_0x54cdd0-0x0;var _0x5f5524=_0x9295[_0x54cdd0];return _0x5f5524;};'use strict';var EventEmitter=require(_0x5929('0x0'));var UserNotification=require(_0x5929('0x1'))['db'][_0x5929('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x5929('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x5929('0x4'),'afterDestroy':_0x5929('0x5')};function emitEvent(_0x2a7f4e){return function(_0x4280d0,_0x1480f5,_0x13aa78){UserNotificationEvents['emit'](_0x2a7f4e+':'+_0x4280d0['id'],_0x4280d0);UserNotificationEvents['emit'](_0x2a7f4e,_0x4280d0);_0x13aa78(null);};}for(var e in events){if(events[_0x5929('0x6')](e)){var event=events[e];UserNotification[_0x5929('0x7')](e,emitEvent(event));}}module['exports']=UserNotificationEvents;
\ No newline at end of file
index 1e37324..ea21265 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dc8=['define','userNotifications','utf8mb4','api','moment','bluebird','request-promise','path','../../config/environment','./userNotification.attributes','exports'];(function(_0x188d31,_0x576e87){var _0x30ed33=function(_0x15f9a5){while(--_0x15f9a5){_0x188d31['push'](_0x188d31['shift']());}};_0x30ed33(++_0x576e87);}(_0x7dc8,0x1b0));var _0x87dc=function(_0x4ee842,_0x160c3f){_0x4ee842=_0x4ee842-0x0;var _0x27826f=_0x7dc8[_0x4ee842];return _0x27826f;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x87dc('0x0'));var moment=require(_0x87dc('0x1'));var BPromise=require(_0x87dc('0x2'));var rp=require(_0x87dc('0x3'));var fs=require('fs');var path=require(_0x87dc('0x4'));var rimraf=require('rimraf');var config=require(_0x87dc('0x5'));var attributes=require(_0x87dc('0x6'));module[_0x87dc('0x7')]=function(_0x1773d2,_0x57af01){return _0x1773d2[_0x87dc('0x8')]('UserNotification',attributes,{'tableName':_0x87dc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x87dc('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xc30e=['path','rimraf','exports','define','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','util','api','moment','bluebird','request-promise'];(function(_0x5131b6,_0x6dbfd2){var _0x108b15=function(_0x6e33a9){while(--_0x6e33a9){_0x5131b6['push'](_0x5131b6['shift']());}};_0x108b15(++_0x6dbfd2);}(_0xc30e,0x15a));var _0xec30=function(_0x12b352,_0x42a26e){_0x12b352=_0x12b352-0x0;var _0x977d03=_0xc30e[_0x12b352];return _0x977d03;};'use strict';var _=require('lodash');var util=require(_0xec30('0x0'));var logger=require('../../config/logger')(_0xec30('0x1'));var moment=require(_0xec30('0x2'));var BPromise=require(_0xec30('0x3'));var rp=require(_0xec30('0x4'));var fs=require('fs');var path=require(_0xec30('0x5'));var rimraf=require(_0xec30('0x6'));var config=require('../../config/environment');var attributes=require('./userNotification.attributes');module[_0xec30('0x7')]=function(_0x1a2c15,_0xf4286d){return _0x1a2c15[_0xec30('0x8')](_0xec30('0x9'),attributes,{'tableName':_0xec30('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xec30('0xb'),'collate':_0xec30('0xc')});};
\ No newline at end of file
index b682cc8..08bef2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b9b=['result','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','./userNotification.socket','request','then','info','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','UserNotification,\x20%s,\x20%s','message'];(function(_0x17052f,_0x15d288){var _0x30c0fe=function(_0x1f9ee0){while(--_0x1f9ee0){_0x17052f['push'](_0x17052f['shift']());}};_0x30c0fe(++_0x15d288);}(_0x6b9b,0x161));var _0xb6b9=function(_0x4ce9d8,_0x5aca2c){_0x4ce9d8=_0x4ce9d8-0x0;var _0x260e5a=_0x6b9b[_0x4ce9d8];return _0x260e5a;};'use strict';var _=require(_0xb6b9('0x0'));var util=require('util');var moment=require(_0xb6b9('0x1'));var BPromise=require('bluebird');var rs=require(_0xb6b9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb6b9('0x3'))['db'];var utils=require(_0xb6b9('0x4'));var logger=require(_0xb6b9('0x5'))(_0xb6b9('0x6'));var config=require('../../config/environment');var jayson=require(_0xb6b9('0x7'));var client=jayson[_0xb6b9('0x8')][_0xb6b9('0x9')]({'port':0x232a});config['redis']=_[_0xb6b9('0xa')](config['redis'],{'host':_0xb6b9('0xb'),'port':0x18eb});var socket=require(_0xb6b9('0xc'))(new Redis(config[_0xb6b9('0xd')]));require(_0xb6b9('0xe'))['register'](socket);function respondWithRpcPromise(_0x3b85df,_0x3db187,_0x4b1cca){return new BPromise(function(_0x457c9e,_0x4a6cc5){return client[_0xb6b9('0xf')](_0x3b85df,_0x4b1cca)[_0xb6b9('0x10')](function(_0x487f51){logger[_0xb6b9('0x11')]('UserNotification,\x20%s,\x20%s',_0x3db187,_0xb6b9('0x12'));logger[_0xb6b9('0x13')](_0xb6b9('0x14'),_0x3db187,_0xb6b9('0x12'),JSON[_0xb6b9('0x15')](_0x487f51));if(_0x487f51[_0xb6b9('0x16')]){if(_0x487f51['error']['code']===0x1f4){logger[_0xb6b9('0x16')](_0xb6b9('0x17'),_0x3db187,_0x487f51['error']['message']);return _0x4a6cc5(_0x487f51[_0xb6b9('0x16')][_0xb6b9('0x18')]);}logger[_0xb6b9('0x16')](_0xb6b9('0x17'),_0x3db187,_0x487f51[_0xb6b9('0x16')][_0xb6b9('0x18')]);return _0x457c9e(_0x487f51[_0xb6b9('0x16')]['message']);}else{logger[_0xb6b9('0x11')](_0xb6b9('0x17'),_0x3db187,_0xb6b9('0x12'));_0x457c9e(_0x487f51[_0xb6b9('0x19')][_0xb6b9('0x18')]);}})[_0xb6b9('0x1a')](function(_0x311717){logger[_0xb6b9('0x16')](_0xb6b9('0x17'),_0x3db187,_0x311717);_0x4a6cc5(_0x311717);});});}
\ No newline at end of file
+var _0xa213=['../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','request','info','UserNotification,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc'];(function(_0x3474ac,_0x22d0f7){var _0x5345ec=function(_0x45056e){while(--_0x45056e){_0x3474ac['push'](_0x3474ac['shift']());}};_0x5345ec(++_0x22d0f7);}(_0xa213,0x10b));var _0x3a21=function(_0x6ddf3b,_0x15e2b3){_0x6ddf3b=_0x6ddf3b-0x0;var _0x4a5ad2=_0xa213[_0x6ddf3b];return _0x4a5ad2;};'use strict';var _=require(_0x3a21('0x0'));var util=require(_0x3a21('0x1'));var moment=require(_0x3a21('0x2'));var BPromise=require(_0x3a21('0x3'));var rs=require(_0x3a21('0x4'));var fs=require('fs');var Redis=require(_0x3a21('0x5'));var db=require(_0x3a21('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3a21('0x7'));var config=require(_0x3a21('0x8'));var jayson=require(_0x3a21('0x9'));var client=jayson[_0x3a21('0xa')][_0x3a21('0xb')]({'port':0x232a});config[_0x3a21('0xc')]=_[_0x3a21('0xd')](config[_0x3a21('0xc')],{'host':_0x3a21('0xe'),'port':0x18eb});var socket=require(_0x3a21('0xf'))(new Redis(config[_0x3a21('0xc')]));require('./userNotification.socket')['register'](socket);function respondWithRpcPromise(_0x4f17be,_0x1ff2a2,_0x2d67fd){return new BPromise(function(_0x32a791,_0x3c0dc1){return client[_0x3a21('0x10')](_0x4f17be,_0x2d67fd)['then'](function(_0x3354de){logger[_0x3a21('0x11')](_0x3a21('0x12'),_0x1ff2a2,_0x3a21('0x13'));logger['debug']('UserNotification,\x20%s,\x20%s,\x20%s',_0x1ff2a2,_0x3a21('0x13'),JSON[_0x3a21('0x14')](_0x3354de));if(_0x3354de[_0x3a21('0x15')]){if(_0x3354de[_0x3a21('0x15')]['code']===0x1f4){logger[_0x3a21('0x15')](_0x3a21('0x12'),_0x1ff2a2,_0x3354de['error'][_0x3a21('0x16')]);return _0x3c0dc1(_0x3354de[_0x3a21('0x15')][_0x3a21('0x16')]);}logger[_0x3a21('0x15')]('UserNotification,\x20%s,\x20%s',_0x1ff2a2,_0x3354de[_0x3a21('0x15')]['message']);return _0x32a791(_0x3354de[_0x3a21('0x15')][_0x3a21('0x16')]);}else{logger[_0x3a21('0x11')](_0x3a21('0x12'),_0x1ff2a2,_0x3a21('0x13'));_0x32a791(_0x3354de[_0x3a21('0x17')][_0x3a21('0x16')]);}})[_0x3a21('0x18')](function(_0x25be8c){logger[_0x3a21('0x15')](_0x3a21('0x12'),_0x1ff2a2,_0x25be8c);_0x3c0dc1(_0x25be8c);});});}
\ No newline at end of file
index 1c7a86a..5897c64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73e7=['emit','length','userNotification:','./userNotification.events','save','remove','update'];(function(_0x4803ed,_0x2fd324){var _0x4f5677=function(_0x47f123){while(--_0x47f123){_0x4803ed['push'](_0x4803ed['shift']());}};_0x4f5677(++_0x2fd324);}(_0x73e7,0x1a7));var _0x773e=function(_0x1d8a2b,_0x364f7b){_0x1d8a2b=_0x1d8a2b-0x0;var _0x579810=_0x73e7[_0x1d8a2b];return _0x579810;};'use strict';var UserNotificationEvents=require(_0x773e('0x0'));var events=[_0x773e('0x1'),_0x773e('0x2'),_0x773e('0x3')];function createListener(_0x30080d,_0x3b2d72){return function(_0x5c8c46){_0x3b2d72[_0x773e('0x4')](_0x30080d,_0x5c8c46);};}function removeListener(_0x2f726a,_0x2c6960){return function(){UserNotificationEvents['removeListener'](_0x2f726a,_0x2c6960);};}exports['register']=function(_0x5bd362){for(var _0x4bb955=0x0,_0x52b287=events[_0x773e('0x5')];_0x4bb955<_0x52b287;_0x4bb955++){var _0x57425d=events[_0x4bb955];var _0x55c258=createListener(_0x773e('0x6')+_0x57425d,_0x5bd362);UserNotificationEvents['on'](_0x57425d,_0x55c258);}};
\ No newline at end of file
+var _0x479f=['userNotification:','./userNotification.events','save','remove','update','emit','removeListener','register','length'];(function(_0x307a35,_0x5e1a48){var _0xd66cbb=function(_0x3af116){while(--_0x3af116){_0x307a35['push'](_0x307a35['shift']());}};_0xd66cbb(++_0x5e1a48);}(_0x479f,0x118));var _0xf479=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x479f[_0x3dd15e];return _0x231fd0;};'use strict';var UserNotificationEvents=require(_0xf479('0x0'));var events=[_0xf479('0x1'),_0xf479('0x2'),_0xf479('0x3')];function createListener(_0x2edd0b,_0x1b66ed){return function(_0x2e6694){_0x1b66ed[_0xf479('0x4')](_0x2edd0b,_0x2e6694);};}function removeListener(_0xd71ccf,_0x956db9){return function(){UserNotificationEvents[_0xf479('0x5')](_0xd71ccf,_0x956db9);};}exports[_0xf479('0x6')]=function(_0x14473c){for(var _0x2152e5=0x0,_0x22788c=events[_0xf479('0x7')];_0x2152e5<_0x22788c;_0x2152e5++){var _0x395100=events[_0x2152e5];var _0x59255c=createListener(_0xf479('0x8')+_0x395100,_0x14473c);UserNotificationEvents['on'](_0x395100,_0x59255c);}};
\ No newline at end of file
index 6cf2ee5..294fd04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x5908a8,_0x1d5503){var _0x584046=function(_0x172b02){while(--_0x172b02){_0x5908a8['push'](_0x5908a8['shift']());}};_0x584046(++_0x1d5503);}(_0xedd9,0xfc));var _0x9edd=function(_0x7d3263,_0x402cf6){_0x7d3263=_0x7d3263-0x0;var _0x91a7cf=_0xedd9[_0x7d3263];return _0x91a7cf;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x3b1c80,_0x339eae){var _0x5027de=function(_0x37cf1c){while(--_0x37cf1c){_0x3b1c80['push'](_0x3b1c80['shift']());}};_0x5027de(++_0x339eae);}(_0xedd9,0xfc));var _0x9edd=function(_0x1494e8,_0x3c8327){_0x1494e8=_0x1494e8-0x0;var _0x28e3c3=_0xedd9[_0x1494e8];return _0x28e3c3;};'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 fbb8bf5..55e9d22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2562=['sequelize','exports'];(function(_0x1e6a2e,_0x4e521a){var _0x4ec462=function(_0x47a934){while(--_0x47a934){_0x1e6a2e['push'](_0x1e6a2e['shift']());}};_0x4ec462(++_0x4e521a);}(_0x2562,0x70));var _0x2256=function(_0x32fb3c,_0x3840b3){_0x32fb3c=_0x32fb3c-0x0;var _0xf5656=_0x2562[_0x32fb3c];return _0xf5656;};'use strict';var Sequelize=require(_0x2256('0x0'));module[_0x2256('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2f2e=['exports','INTEGER'];(function(_0x579bb6,_0x1c4416){var _0x3e8e9f=function(_0x3d72c8){while(--_0x3d72c8){_0x579bb6['push'](_0x579bb6['shift']());}};_0x3e8e9f(++_0x1c4416);}(_0x2f2e,0x146));var _0xe2f2=function(_0x408e38,_0x23cda8){_0x408e38=_0x408e38-0x0;var _0x426b0e=_0x2f2e[_0x408e38];return _0x426b0e;};'use strict';var Sequelize=require('sequelize');module[_0xe2f2('0x0')]={'penalty':{'type':Sequelize[_0xe2f2('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 7198bbb..3c825e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ec3=['request-promise','path','../../config/environment','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','moment','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0ec3,0x1dc));var _0x30ec=function(_0xc32e17,_0x513fcc){_0xc32e17=_0xc32e17-0x0;var _0x413870=_0x0ec3[_0xc32e17];return _0x413870;};'use strict';var _=require(_0x30ec('0x0'));var util=require(_0x30ec('0x1'));var logger=require(_0x30ec('0x2'))('api');var moment=require(_0x30ec('0x3'));var BPromise=require(_0x30ec('0x4'));var rp=require(_0x30ec('0x5'));var fs=require('fs');var path=require(_0x30ec('0x6'));var rimraf=require('rimraf');var config=require(_0x30ec('0x7'));var attributes=require(_0x30ec('0x8'));module[_0x30ec('0x9')]=function(_0x1220fd,_0x5b9721){return _0x1220fd[_0x30ec('0xa')](_0x30ec('0xb'),attributes,{'tableName':_0x30ec('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x61a1=['request-promise','../../config/environment','./userOpenchannelQueue.attributes','exports','UserOpenchannelQueue','user_has_openchannel_queues','../../config/logger','api','moment','bluebird'];(function(_0x2ffd7c,_0x4ba601){var _0x202ad9=function(_0x41da5b){while(--_0x41da5b){_0x2ffd7c['push'](_0x2ffd7c['shift']());}};_0x202ad9(++_0x4ba601);}(_0x61a1,0xd8));var _0x161a=function(_0x3f4dd9,_0xe0b819){_0x3f4dd9=_0x3f4dd9-0x0;var _0x31c54a=_0x61a1[_0x3f4dd9];return _0x31c54a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x161a('0x0'))(_0x161a('0x1'));var moment=require(_0x161a('0x2'));var BPromise=require(_0x161a('0x3'));var rp=require(_0x161a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x161a('0x5'));var attributes=require(_0x161a('0x6'));module[_0x161a('0x7')]=function(_0x2601e6,_0x225bc9){return _0x2601e6['define'](_0x161a('0x8'),attributes,{'tableName':_0x161a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fddce13..f95c1be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4071=['http','then','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2f73a0,_0xe3bcba){var _0x33e612=function(_0x3473e9){while(--_0x3473e9){_0x2f73a0['push'](_0x2f73a0['shift']());}};_0x33e612(++_0xe3bcba);}(_0x4071,0x6f));var _0x1407=function(_0x26fe87,_0x3ba11f){_0x26fe87=_0x26fe87-0x0;var _0xa72c65=_0x4071[_0x26fe87];return _0xa72c65;};'use strict';var _=require(_0x1407('0x0'));var util=require(_0x1407('0x1'));var moment=require(_0x1407('0x2'));var BPromise=require(_0x1407('0x3'));var rs=require(_0x1407('0x4'));var fs=require('fs');var Redis=require(_0x1407('0x5'));var db=require(_0x1407('0x6'))['db'];var utils=require(_0x1407('0x7'));var logger=require(_0x1407('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x1407('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x32fc1e,_0x13916f,_0x15a6f2){return new BPromise(function(_0x577b5c,_0x21f83a){return client['request'](_0x32fc1e,_0x15a6f2)[_0x1407('0xa')](function(_0xd0f605){logger[_0x1407('0xb')](_0x1407('0xc'),_0x13916f,_0x1407('0xd'));logger[_0x1407('0xe')](_0x1407('0xf'),_0x13916f,_0x1407('0xd'),JSON[_0x1407('0x10')](_0xd0f605));if(_0xd0f605[_0x1407('0x11')]){if(_0xd0f605['error'][_0x1407('0x12')]===0x1f4){logger['error']('UserOpenchannelQueue,\x20%s,\x20%s',_0x13916f,_0xd0f605[_0x1407('0x11')][_0x1407('0x13')]);return _0x21f83a(_0xd0f605['error']['message']);}logger['error'](_0x1407('0xc'),_0x13916f,_0xd0f605['error']['message']);return _0x577b5c(_0xd0f605[_0x1407('0x11')]['message']);}else{logger[_0x1407('0xb')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x13916f,_0x1407('0xd'));_0x577b5c(_0xd0f605['result']['message']);}})['catch'](function(_0x453b4f){logger['error'](_0x1407('0xc'),_0x13916f,_0x453b4f);_0x21f83a(_0x453b4f);});});}
\ No newline at end of file
+var _0x2759=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x365be9,_0x3c88b9){var _0x185c12=function(_0xbadbbf){while(--_0xbadbbf){_0x365be9['push'](_0x365be9['shift']());}};_0x185c12(++_0x3c88b9);}(_0x2759,0x80));var _0x9275=function(_0x117a06,_0x3860e4){_0x117a06=_0x117a06-0x0;var _0x53bfc2=_0x2759[_0x117a06];return _0x53bfc2;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x9275('0x0'));var rs=require(_0x9275('0x1'));var fs=require('fs');var Redis=require(_0x9275('0x2'));var db=require(_0x9275('0x3'))['db'];var utils=require(_0x9275('0x4'));var logger=require(_0x9275('0x5'))(_0x9275('0x6'));var config=require(_0x9275('0x7'));var jayson=require(_0x9275('0x8'));var client=jayson[_0x9275('0x9')][_0x9275('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5a30b2,_0x354941,_0x23a4ea){return new BPromise(function(_0x3414ed,_0x36bf71){return client['request'](_0x5a30b2,_0x23a4ea)[_0x9275('0xb')](function(_0x36320a){logger['info'](_0x9275('0xc'),_0x354941,_0x9275('0xd'));logger[_0x9275('0xe')](_0x9275('0xf'),_0x354941,_0x9275('0xd'),JSON[_0x9275('0x10')](_0x36320a));if(_0x36320a[_0x9275('0x11')]){if(_0x36320a['error'][_0x9275('0x12')]===0x1f4){logger['error'](_0x9275('0xc'),_0x354941,_0x36320a[_0x9275('0x11')][_0x9275('0x13')]);return _0x36bf71(_0x36320a[_0x9275('0x11')][_0x9275('0x13')]);}logger[_0x9275('0x11')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x354941,_0x36320a['error'][_0x9275('0x13')]);return _0x3414ed(_0x36320a[_0x9275('0x11')]['message']);}else{logger[_0x9275('0x14')](_0x9275('0xc'),_0x354941,_0x9275('0xd'));_0x3414ed(_0x36320a[_0x9275('0x15')][_0x9275('0x13')]);}})['catch'](function(_0x42a951){logger[_0x9275('0x11')](_0x9275('0xc'),_0x354941,_0x42a951);_0x36bf71(_0x42a951);});});}
\ No newline at end of file
index 87029ac..a9218e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01b5=['get','isAuthenticated','index','/describe','describe','/:id','/:id/sections','getSections','/:id/resources','getResources','post','create','clone','addSections','addResources','update','delete','destroy','removeSections','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','./userProfile.controller'];(function(_0x98023f,_0x158398){var _0x2e33b3=function(_0x28e99b){while(--_0x28e99b){_0x98023f['push'](_0x98023f['shift']());}};_0x2e33b3(++_0x158398);}(_0x01b5,0xa0));var _0x501b=function(_0x2ad228,_0x3a77c8){_0x2ad228=_0x2ad228-0x0;var _0x13010c=_0x01b5[_0x2ad228];return _0x13010c;};'use strict';var multer=require(_0x501b('0x0'));var util=require(_0x501b('0x1'));var path=require(_0x501b('0x2'));var timeout=require(_0x501b('0x3'));var express=require(_0x501b('0x4'));var router=express[_0x501b('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x501b('0x6'));var config=require('../../config/environment');var controller=require(_0x501b('0x7'));router[_0x501b('0x8')]('/',auth[_0x501b('0x9')](),controller[_0x501b('0xa')]);router['get'](_0x501b('0xb'),auth[_0x501b('0x9')](),controller[_0x501b('0xc')]);router[_0x501b('0x8')](_0x501b('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x501b('0x8')](_0x501b('0xe'),auth[_0x501b('0x9')](),controller[_0x501b('0xf')]);router['get'](_0x501b('0x10'),auth[_0x501b('0x9')](),controller[_0x501b('0x11')]);router[_0x501b('0x12')]('/',auth['isAuthenticated'](),controller[_0x501b('0x13')]);router[_0x501b('0x12')]('/:id/clone',auth[_0x501b('0x9')](),controller[_0x501b('0x14')]);router[_0x501b('0x12')](_0x501b('0xe'),auth['isAuthenticated'](),controller[_0x501b('0x15')]);router[_0x501b('0x12')]('/:id/resources',auth[_0x501b('0x9')](),controller[_0x501b('0x16')]);router['put'](_0x501b('0xd'),auth[_0x501b('0x9')](),controller[_0x501b('0x17')]);router[_0x501b('0x18')](_0x501b('0xd'),auth[_0x501b('0x9')](),controller[_0x501b('0x19')]);router[_0x501b('0x18')](_0x501b('0xe'),auth[_0x501b('0x9')](),controller[_0x501b('0x1a')]);router[_0x501b('0x18')](_0x501b('0x10'),auth['isAuthenticated'](),controller['removeResources']);module[_0x501b('0x1b')]=router;
\ No newline at end of file
+var _0x5ee7=['put','update','delete','destroy','removeSections','removeResources','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','index','describe','/:id','show','/:id/resources','post','create','/:id/clone','clone','/:id/sections'];(function(_0x5d56fa,_0x57fbee){var _0x3458ac=function(_0x2c6208){while(--_0x2c6208){_0x5d56fa['push'](_0x5d56fa['shift']());}};_0x3458ac(++_0x57fbee);}(_0x5ee7,0x19e));var _0x75ee=function(_0x517c87,_0x293118){_0x517c87=_0x517c87-0x0;var _0x36100a=_0x5ee7[_0x517c87];return _0x36100a;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x75ee('0x0'));var router=express[_0x75ee('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x75ee('0x2'));var interaction=require(_0x75ee('0x3'));var config=require(_0x75ee('0x4'));var controller=require(_0x75ee('0x5'));router[_0x75ee('0x6')]('/',auth[_0x75ee('0x7')](),controller[_0x75ee('0x8')]);router[_0x75ee('0x6')]('/describe',auth['isAuthenticated'](),controller[_0x75ee('0x9')]);router[_0x75ee('0x6')](_0x75ee('0xa'),auth[_0x75ee('0x7')](),controller[_0x75ee('0xb')]);router[_0x75ee('0x6')]('/:id/sections',auth['isAuthenticated'](),controller['getSections']);router[_0x75ee('0x6')](_0x75ee('0xc'),auth['isAuthenticated'](),controller['getResources']);router[_0x75ee('0xd')]('/',auth[_0x75ee('0x7')](),controller[_0x75ee('0xe')]);router[_0x75ee('0xd')](_0x75ee('0xf'),auth[_0x75ee('0x7')](),controller[_0x75ee('0x10')]);router[_0x75ee('0xd')](_0x75ee('0x11'),auth[_0x75ee('0x7')](),controller['addSections']);router[_0x75ee('0xd')](_0x75ee('0xc'),auth['isAuthenticated'](),controller['addResources']);router[_0x75ee('0x12')]('/:id',auth[_0x75ee('0x7')](),controller[_0x75ee('0x13')]);router[_0x75ee('0x14')](_0x75ee('0xa'),auth['isAuthenticated'](),controller[_0x75ee('0x15')]);router['delete']('/:id/sections',auth[_0x75ee('0x7')](),controller[_0x75ee('0x16')]);router[_0x75ee('0x14')](_0x75ee('0xc'),auth[_0x75ee('0x7')](),controller[_0x75ee('0x17')]);module['exports']=router;
\ No newline at end of file
index fd0e495..e5c18ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd664=['join','getDataValue','split','BOOLEAN','sequelize','exports','STRING','name','crudPermissions'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0xd664,0xc1));var _0x4d66=function(_0x4d9f2d,_0x48c71e){_0x4d9f2d=_0x4d9f2d-0x0;var _0x32ceb0=_0xd664[_0x4d9f2d];return _0x32ceb0;};'use strict';var Sequelize=require(_0x4d66('0x0'));module[_0x4d66('0x1')]={'name':{'type':Sequelize[_0x4d66('0x2')],'allowNull':![],'unique':_0x4d66('0x3')},'crudPermissions':{'type':Sequelize[_0x4d66('0x2')],'set':function(_0x142113){this['setDataValue'](_0x4d66('0x4'),_0x142113?_0x142113[_0x4d66('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0x4d66('0x4'))?this[_0x4d66('0x6')](_0x4d66('0x4'))[_0x4d66('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x4d66('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x4d66('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x4d66('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x4d66('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x9d52=['split','BOOLEAN','sequelize','exports','STRING','name','setDataValue','crudPermissions','getDataValue'];(function(_0x1c47b0,_0x19e61c){var _0x5ae2e3=function(_0x2243ae){while(--_0x2243ae){_0x1c47b0['push'](_0x1c47b0['shift']());}};_0x5ae2e3(++_0x19e61c);}(_0x9d52,0xa4));var _0x29d5=function(_0x203b5c,_0x2384f1){_0x203b5c=_0x203b5c-0x0;var _0x20a057=_0x9d52[_0x203b5c];return _0x20a057;};'use strict';var Sequelize=require(_0x29d5('0x0'));module[_0x29d5('0x1')]={'name':{'type':Sequelize[_0x29d5('0x2')],'allowNull':![],'unique':_0x29d5('0x3')},'crudPermissions':{'type':Sequelize[_0x29d5('0x2')],'set':function(_0xaad14){this[_0x29d5('0x4')](_0x29d5('0x5'),_0xaad14?_0xaad14['join'](''):[]);},'get':function(){return this[_0x29d5('0x6')](_0x29d5('0x5'))?this[_0x29d5('0x6')]('crudPermissions')[_0x29d5('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x29d5('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x29d5('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x29d5('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x29d5('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x29d5('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x29d5('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x29d5('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x29d5('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x29d5('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 00dbd08..74c4a54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5df=['ids','getSections','includes','isEmpty','subsections','enabled','findOne','Dashboard','forEach','resourceId','addResources','bulkCreate','removeResources','section','Missing\x20section\x20parameter','getResources','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./userProfile.socket','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','stack','name','send','index','UserProfile','rawAttributes','type','key','map','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','options','includeAll','include','catch','show','params','merge','find','create','body','clone','length','get','omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','findAll','each','autoAssociation','UserProfileResource','userProfileId','Resources','describe','addSections','destroy','sectionId','push','removeSections'];(function(_0x3b6f86,_0x3ff406){var _0x1587b2=function(_0x4da36b){while(--_0x4da36b){_0x3b6f86['push'](_0x3b6f86['shift']());}};_0x1587b2(++_0x3ff406);}(_0xc5df,0x80));var _0xfc5d=function(_0x355f09,_0x7e1784){_0x355f09=_0x355f09-0x0;var _0x31e32b=_0xc5df[_0x355f09];return _0x31e32b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfc5d('0x0'));var jsonpatch=require(_0xfc5d('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfc5d('0x2'));var Mustache=require(_0xfc5d('0x3'));var util=require(_0xfc5d('0x4'));var path=require(_0xfc5d('0x5'));var sox=require(_0xfc5d('0x6'));var csv=require('to-csv');var ejs=require(_0xfc5d('0x7'));var fs=require('fs');var fs_extra=require(_0xfc5d('0x8'));var _=require(_0xfc5d('0x9'));var squel=require(_0xfc5d('0xa'));var crypto=require(_0xfc5d('0xb'));var jsforce=require(_0xfc5d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xfc5d('0xd'));var querystring=require(_0xfc5d('0xe'));var Papa=require('papaparse');var Redis=require(_0xfc5d('0xf'));var authService=require(_0xfc5d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xfc5d('0x11'));var hardwareService=require(_0xfc5d('0x12'));var logger=require(_0xfc5d('0x13'))(_0xfc5d('0x14'));var utils=require('../../config/utils');var config=require(_0xfc5d('0x15'));var licenseUtil=require(_0xfc5d('0x16'));var db=require(_0xfc5d('0x17'))['db'];config['redis']=_[_0xfc5d('0x18')](config[_0xfc5d('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xfc5d('0x1a'))(new Redis(config['redis']));require(_0xfc5d('0x1b'))['register'](socket);function respondWithStatusCode(_0x248498,_0x206207){_0x206207=_0x206207||0xcc;return function(_0x1606ee){if(_0x1606ee){return _0x248498[_0xfc5d('0x1c')](_0x206207);}return _0x248498[_0xfc5d('0x1d')](_0x206207)['end']();};}function respondWithResult(_0x44d245,_0x1d496e){_0x1d496e=_0x1d496e||0xc8;return function(_0x4db0cd){if(_0x4db0cd){return _0x44d245[_0xfc5d('0x1d')](_0x1d496e)['json'](_0x4db0cd);}};}function respondWithFilteredResult(_0x438729,_0x581c1c){return function(_0x4783d5){if(_0x4783d5){var _0x3ae06e=typeof _0x581c1c[_0xfc5d('0x1e')]===_0xfc5d('0x1f')&&typeof _0x581c1c[_0xfc5d('0x20')]==='undefined';var _0x5e5023=_0x4783d5[_0xfc5d('0x21')];var _0x4f9d5d=_0x3ae06e?0x0:_0x581c1c['offset'];var _0x54ca7b=_0x3ae06e?_0x4783d5[_0xfc5d('0x21')]:_0x581c1c['offset']+_0x581c1c[_0xfc5d('0x20')];var _0x4fa971;if(_0x54ca7b>=_0x5e5023){_0x54ca7b=_0x5e5023;_0x4fa971=0xc8;}else{_0x4fa971=0xce;}_0x438729[_0xfc5d('0x1d')](_0x4fa971);return _0x438729[_0xfc5d('0x22')](_0xfc5d('0x23'),_0x4f9d5d+'-'+_0x54ca7b+'/'+_0x5e5023)[_0xfc5d('0x24')](_0x4783d5);}return null;};}function patchUpdates(_0x47e6c2){return function(_0x4cf28c){try{jsonpatch['apply'](_0x4cf28c,_0x47e6c2,!![]);}catch(_0x469e4){return BPromise[_0xfc5d('0x25')](_0x469e4);}return _0x4cf28c[_0xfc5d('0x26')]();};}function saveUpdates(_0x4ce3dd,_0x30b782){return function(_0x22eb5a){if(_0x22eb5a){return _0x22eb5a[_0xfc5d('0x27')](_0x4ce3dd)[_0xfc5d('0x28')](function(_0x2036b3){return _0x2036b3;});}return null;};}function removeEntity(_0xee4bb6,_0x64cf33){return function(_0x5c2392){if(_0x5c2392){return _0x5c2392['destroy']()[_0xfc5d('0x28')](function(){_0xee4bb6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ecb16,_0x5d4470){return function(_0x1c9fd7){if(!_0x1c9fd7){_0x1ecb16[_0xfc5d('0x1c')](0x194);}return _0x1c9fd7;};}function handleError(_0x4e5b48,_0xf9156d){_0xf9156d=_0xf9156d||0x1f4;return function(_0x5bc69c){logger['error'](_0x5bc69c[_0xfc5d('0x29')]);if(_0x5bc69c[_0xfc5d('0x2a')]){delete _0x5bc69c[_0xfc5d('0x2a')];}_0x4e5b48[_0xfc5d('0x1d')](_0xf9156d)[_0xfc5d('0x2b')](_0x5bc69c);};}exports[_0xfc5d('0x2c')]=function(_0x366313,_0x560198){var _0x82f10a={},_0x5eb75f={},_0x3eb6e3={'count':0x0,'rows':[]};var _0xf44fdc=_['map'](db[_0xfc5d('0x2d')][_0xfc5d('0x2e')],function(_0x116272){return{'name':_0x116272['fieldName'],'type':_0x116272[_0xfc5d('0x2f')][_0xfc5d('0x30')]};});_0x5eb75f['model']=_[_0xfc5d('0x31')](_0xf44fdc,'name');_0x5eb75f[_0xfc5d('0x32')]=_[_0xfc5d('0x33')](_0x366313[_0xfc5d('0x32')]);_0x5eb75f[_0xfc5d('0x34')]=_[_0xfc5d('0x35')](_0x5eb75f[_0xfc5d('0x36')],_0x5eb75f[_0xfc5d('0x32')]);_0x82f10a['attributes']=_['intersection'](_0x5eb75f['model'],qs['fields'](_0x366313[_0xfc5d('0x32')][_0xfc5d('0x37')]));_0x82f10a[_0xfc5d('0x38')]=_0x82f10a[_0xfc5d('0x38')]['length']?_0x82f10a['attributes']:_0x5eb75f[_0xfc5d('0x36')];if(!_0x366313[_0xfc5d('0x32')][_0xfc5d('0x39')](_0xfc5d('0x3a'))){_0x82f10a['limit']=qs['limit'](_0x366313[_0xfc5d('0x32')][_0xfc5d('0x20')]);_0x82f10a[_0xfc5d('0x1e')]=qs[_0xfc5d('0x1e')](_0x366313[_0xfc5d('0x32')][_0xfc5d('0x1e')]);}_0x82f10a[_0xfc5d('0x3b')]=qs[_0xfc5d('0x3c')](_0x366313[_0xfc5d('0x32')]['sort']);_0x82f10a[_0xfc5d('0x3d')]=qs[_0xfc5d('0x34')](_['pick'](_0x366313[_0xfc5d('0x32')],_0x5eb75f[_0xfc5d('0x34')]),_0xf44fdc);if(_0x366313['query']['filter']){_0x82f10a['where']=_['merge'](_0x82f10a['where'],{'$or':_[_0xfc5d('0x31')](_0xf44fdc,function(_0x4ca856){if(_0x4ca856[_0xfc5d('0x2f')]!==_0xfc5d('0x3e')){var _0x4dac1b={};_0x4dac1b[_0x4ca856[_0xfc5d('0x2a')]]={'$like':'%'+_0x366313['query'][_0xfc5d('0x3f')]+'%'};return _0x4dac1b;}})});}_0x82f10a=_['merge']({},_0x82f10a,_0x366313[_0xfc5d('0x40')]);var _0x2893dd={'where':_0x82f10a[_0xfc5d('0x3d')]};return db[_0xfc5d('0x2d')]['count'](_0x2893dd)[_0xfc5d('0x28')](function(_0x1f35fe){_0x3eb6e3[_0xfc5d('0x21')]=_0x1f35fe;if(_0x366313[_0xfc5d('0x32')][_0xfc5d('0x41')]){_0x82f10a[_0xfc5d('0x42')]=[{'all':!![]}];}return db['UserProfile']['findAll'](_0x82f10a);})[_0xfc5d('0x28')](function(_0x463386){_0x3eb6e3['rows']=_0x463386;return _0x3eb6e3;})[_0xfc5d('0x28')](respondWithFilteredResult(_0x560198,_0x82f10a))[_0xfc5d('0x43')](handleError(_0x560198,null));};exports[_0xfc5d('0x44')]=function(_0x522fd5,_0x116e72){var _0x1c1cae={'raw':![],'where':{'id':_0x522fd5[_0xfc5d('0x45')]['id']}},_0xd9d449={};_0xd9d449[_0xfc5d('0x36')]=_[_0xfc5d('0x33')](db[_0xfc5d('0x2d')][_0xfc5d('0x2e')]);_0xd9d449[_0xfc5d('0x32')]=_['keys'](_0x522fd5[_0xfc5d('0x32')]);_0xd9d449['filters']=_['intersection'](_0xd9d449[_0xfc5d('0x36')],_0xd9d449[_0xfc5d('0x32')]);_0x1c1cae[_0xfc5d('0x38')]=_[_0xfc5d('0x35')](_0xd9d449[_0xfc5d('0x36')],qs[_0xfc5d('0x37')](_0x522fd5['query'][_0xfc5d('0x37')]));_0x1c1cae[_0xfc5d('0x38')]=_0x1c1cae[_0xfc5d('0x38')]['length']?_0x1c1cae['attributes']:_0xd9d449[_0xfc5d('0x36')];if(_0x522fd5[_0xfc5d('0x32')][_0xfc5d('0x41')]){_0x1c1cae[_0xfc5d('0x42')]=[{'all':!![]}];}_0x1c1cae=_[_0xfc5d('0x46')]({},_0x1c1cae,_0x522fd5[_0xfc5d('0x40')]);return db['UserProfile'][_0xfc5d('0x47')](_0x1c1cae)[_0xfc5d('0x28')](handleEntityNotFound(_0x116e72,null))[_0xfc5d('0x28')](respondWithResult(_0x116e72,null))[_0xfc5d('0x43')](handleError(_0x116e72,null));};exports[_0xfc5d('0x48')]=function(_0x4e8313,_0x235e68){return db[_0xfc5d('0x2d')][_0xfc5d('0x48')](_0x4e8313[_0xfc5d('0x49')],{})['then'](respondWithResult(_0x235e68,0xc9))['catch'](handleError(_0x235e68,null));};exports[_0xfc5d('0x4a')]=function(_0x2afdfe,_0x512a30){var _0x490175={'where':{'id':_0x2afdfe[_0xfc5d('0x45')]['id']}},_0x614b81={};_0x614b81['model']=_[_0xfc5d('0x33')](db['UserProfile']['rawAttributes']);_0x490175[_0xfc5d('0x38')]=_[_0xfc5d('0x35')](_0x614b81[_0xfc5d('0x36')],qs['fields'](_0x2afdfe[_0xfc5d('0x32')][_0xfc5d('0x37')]));_0x490175[_0xfc5d('0x38')]=_0x490175[_0xfc5d('0x38')][_0xfc5d('0x4b')]?_0x490175[_0xfc5d('0x38')]:_0x614b81[_0xfc5d('0x36')];if(_0x2afdfe['query']['includeAll']){_0x490175[_0xfc5d('0x42')]=[{'all':!![]}];}_0x490175=_[_0xfc5d('0x46')]({},_0x490175,_0x2afdfe['options']);return db[_0xfc5d('0x2d')]['find'](_0x490175)[_0xfc5d('0x28')](handleEntityNotFound(_0x512a30,null))[_0xfc5d('0x28')](function(_0x2c7a8f){if(_0x2c7a8f){var _0x1d93bd=_0x2c7a8f[_0xfc5d('0x4c')]({'plain':!![]});_0x1d93bd=qs[_0xfc5d('0x4d')](_0x1d93bd,['id',_0xfc5d('0x4e'),_0xfc5d('0x4f'),_0xfc5d('0x50')]);_0x2afdfe[_0xfc5d('0x49')]=_[_0xfc5d('0x4d')](_0x2afdfe[_0xfc5d('0x49')],['id','createdAt',_0xfc5d('0x4f')]);return db[_0xfc5d('0x51')][_0xfc5d('0x52')](function(_0x60f319){return db[_0xfc5d('0x2d')]['create'](_[_0xfc5d('0x46')](_0x1d93bd,_0x2afdfe[_0xfc5d('0x49')]),{'include':_0x2afdfe[_0xfc5d('0x32')][_0xfc5d('0x41')]?[{'all':!![]}]:undefined,'transaction':_0x60f319})[_0xfc5d('0x28')](function(_0x459800){var _0x4f21ef=_0x459800[_0xfc5d('0x4c')]({'plain':!![]});return db[_0xfc5d('0x53')][_0xfc5d('0x54')]({'where':{'userProfileId':_0x2afdfe[_0xfc5d('0x45')]['id']},'raw':!![]})[_0xfc5d('0x28')](function(_0x20d9d8){if(_0x20d9d8){return BPromise[_0xfc5d('0x55')](_0x20d9d8,function(_0x59586e){return new BPromise(function(_0x1fa073,_0x4bd03b){if(_0x59586e[_0xfc5d('0x56')]===null||_0x59586e[_0xfc5d('0x56')]===0x1)_0x1fa073(null);return db[_0xfc5d('0x57')][_0xfc5d('0x54')]({'where':{'sectionId':_0x59586e['id']},'raw':!![]})[_0xfc5d('0x28')](function(_0x34b7b9){var _0x19af34=_['map'](_0x34b7b9,function(_0x290a09){return qs[_0xfc5d('0x4d')](_0x290a09,['id',_0xfc5d('0x4e'),_0xfc5d('0x4f'),'sectionId']);});_0x1fa073(_0x19af34);})[_0xfc5d('0x43')](function(_0xf02aa4){_0x4bd03b(_0xf02aa4);});})[_0xfc5d('0x28')](function(_0x25187e){var _0xeb4d50=qs[_0xfc5d('0x4d')](_0x59586e,['id',_0xfc5d('0x4e'),_0xfc5d('0x4f')]);_0xeb4d50[_0xfc5d('0x58')]=_0x4f21ef['id'];if(_0x25187e)_0xeb4d50[_0xfc5d('0x59')]=_0x25187e;return _0xeb4d50;})[_0xfc5d('0x28')](function(_0x5a434e){return db['UserProfileSection'][_0xfc5d('0x48')](_0x5a434e,{'include':[{'model':db['UserProfileResource'],'as':'Resources'}],'raw':!![],'transaction':_0x60f319});});})[_0xfc5d('0x28')](function(){return _0x4f21ef;});}});});});}})[_0xfc5d('0x28')](respondWithResult(_0x512a30,0xc9))[_0xfc5d('0x43')](handleError(_0x512a30,null));};exports['update']=function(_0x5ce5c0,_0x3bb091){if(_0x5ce5c0[_0xfc5d('0x49')]['id']){delete _0x5ce5c0[_0xfc5d('0x49')]['id'];}return db[_0xfc5d('0x2d')]['find']({'where':{'id':_0x5ce5c0[_0xfc5d('0x45')]['id']}})[_0xfc5d('0x28')](handleEntityNotFound(_0x3bb091,null))[_0xfc5d('0x28')](saveUpdates(_0x5ce5c0['body'],null))['then'](respondWithResult(_0x3bb091,null))[_0xfc5d('0x43')](handleError(_0x3bb091,null));};exports['destroy']=function(_0x497344,_0x71b171){return db[_0xfc5d('0x2d')][_0xfc5d('0x47')]({'where':{'id':_0x497344[_0xfc5d('0x45')]['id']}})[_0xfc5d('0x28')](handleEntityNotFound(_0x71b171,null))[_0xfc5d('0x28')](removeEntity(_0x71b171,null))[_0xfc5d('0x43')](handleError(_0x71b171,null));};exports['describe']=function(_0x5be7c5,_0x4c0b0f){return db[_0xfc5d('0x2d')][_0xfc5d('0x5a')]()['then'](respondWithResult(_0x4c0b0f,null))[_0xfc5d('0x43')](handleError(_0x4c0b0f,null));};exports[_0xfc5d('0x5b')]=function(_0x4795ed,_0x50cf3c){var _0x2e2d7f=_0x4795ed[_0xfc5d('0x49')];return db[_0xfc5d('0x2d')][_0xfc5d('0x47')]({'where':{'id':_0x4795ed[_0xfc5d('0x45')]['id']}})['then'](handleEntityNotFound(_0x50cf3c,null))[_0xfc5d('0x28')](function(_0x534b94){if(_0x534b94){return db[_0xfc5d('0x51')]['transaction'](function(_0x49875f){return db[_0xfc5d('0x53')][_0xfc5d('0x5c')]({'where':{'userProfileId':_0x4795ed[_0xfc5d('0x45')]['id'],'sectionId':_[_0xfc5d('0x31')](_0x2e2d7f,function(_0x5736f5){return _0x5736f5[_0xfc5d('0x5d')];})},'transaction':_0x49875f})[_0xfc5d('0x28')](function(){var _0x23296a=_[_0xfc5d('0x31')](_0x2e2d7f,function(_0x4cfe54){_0x4cfe54[_0xfc5d('0x58')]=_0x4795ed[_0xfc5d('0x45')]['id'];return _0x4cfe54;});var _0x3079ae=[];return BPromise[_0xfc5d('0x55')](_0x23296a,function(_0x2e4557){return db[_0xfc5d('0x53')]['create'](_0x2e4557,{'include':[{'model':db['UserProfileResource'],'as':_0xfc5d('0x59')}],'raw':!![],'transaction':_0x49875f})['then'](function(_0x224df1){_0x3079ae[_0xfc5d('0x5e')](_0x224df1[_0xfc5d('0x4c')]({'plain':!![]}));});})[_0xfc5d('0x28')](function(){return _0x3079ae;});});});}})[_0xfc5d('0x28')](function(_0x1b81d5){return _0x1b81d5;})[_0xfc5d('0x28')](respondWithResult(_0x50cf3c,null))['catch'](handleError(_0x50cf3c,null));};exports[_0xfc5d('0x5f')]=function(_0x3c14b4,_0x3074bb){var _0x5c6a00;return db[_0xfc5d('0x2d')][_0xfc5d('0x47')]({'where':{'id':_0x3c14b4[_0xfc5d('0x45')]['id']},'attributes':['id','name']})[_0xfc5d('0x28')](handleEntityNotFound(_0x3074bb,null))[_0xfc5d('0x28')](function(_0x1a3414){if(_0x1a3414){_0x5c6a00=_0x1a3414;return db['UserProfileSection'][_0xfc5d('0x5c')]({'where':{'userProfileId':_0x3c14b4[_0xfc5d('0x45')]['id'],'sectionId':_0x3c14b4['query'][_0xfc5d('0x60')]}});}})[_0xfc5d('0x28')](function(){return _0x5c6a00;})[_0xfc5d('0x28')](respondWithStatusCode(_0x3074bb,null))[_0xfc5d('0x43')](handleError(_0x3074bb,null));};exports[_0xfc5d('0x61')]=function(_0x29cf2e,_0x97e4e2){var _0x413773=[];var _0x8608b7=[];return db['UserProfileSection'][_0xfc5d('0x54')]({'where':{'userProfileId':_0x29cf2e['params']['id']},'raw':!![]})[_0xfc5d('0x28')](function(_0x164dfa){_0x413773=_[_0xfc5d('0x3f')](_0x164dfa,function(_0x527c25){return _0x527c25['enabled']===0x1||_[_0xfc5d('0x62')]([0x3eb,0x709],_0x527c25[_0xfc5d('0x5d')]);});if(!_[_0xfc5d('0x63')](_0x413773)){return _[_0xfc5d('0x31')](_0x413773,function(_0x3f46bd){return _0x3f46bd[_0xfc5d('0x5d')];});}else{return;}})[_0xfc5d('0x28')](function(_0x251d05){if(_0x251d05)_0x8608b7=_0x251d05;if(_['includes'](_0x8608b7,0x64)){var _0x181175=_[_0xfc5d('0x47')](_0x413773,{'sectionId':0x64});return hasDefaultDashboard(_0x181175)[_0xfc5d('0x28')](function(_0x42b4af){return _[_0xfc5d('0x31')](_0x413773,function(_0x3c029f){if(_0x3c029f[_0xfc5d('0x5d')]===0x64){_0x3c029f[_0xfc5d('0x64')]=_0x42b4af;}return _0x3c029f;});});}else{return;}})[_0xfc5d('0x28')](function(_0x470f03){if(_0x470f03)_0x413773=_0x470f03;if(_[_0xfc5d('0x62')](_0x8608b7,0x3eb)){var _0x2c65dc=_[_0xfc5d('0x47')](_0x413773,{'sectionId':0x3eb});return getCustomDashboards(_0x2c65dc)[_0xfc5d('0x28')](function(_0x4738fc){return _[_0xfc5d('0x31')](_0x413773,function(_0x5633b8){if(_0x2c65dc[_0xfc5d('0x65')]){if(_0x5633b8['sectionId']===0x3eb){_0x5633b8['subsections']=_0x4738fc;}}else{if(_0x5633b8[_0xfc5d('0x5d')]===0x64){_0x5633b8[_0xfc5d('0x64')]=_0x4738fc;}}return _0x5633b8;});});}else{return;}})[_0xfc5d('0x28')](function(_0x55406a){if(_0x55406a)_0x413773=_0x55406a;if(_['includes'](_0x8608b7,0x709)){var _0x29bd76=_[_0xfc5d('0x47')](_0x413773,{'sectionId':0x709});return getPlugins(_0x29bd76)[_0xfc5d('0x28')](function(_0xe14c70){if(_0x29bd76[_0xfc5d('0x65')]){return _['map'](_0x413773,function(_0x410f06){if(_0x410f06[_0xfc5d('0x5d')]===0x709){_0x410f06[_0xfc5d('0x64')]=_0xe14c70;}return _0x410f06;});}else{var _0x59520e={'sectionId':0x76c,'enabled':0x1,'subsections':_0xe14c70};var _0x387e2a=_[_0xfc5d('0x31')](_0x413773);_0x387e2a['push'](_0x59520e);return _0x387e2a;}});}else{return;}})[_0xfc5d('0x28')](function(_0xd6553e){if(_0xd6553e)_0x413773=_0xd6553e;return _[_0xfc5d('0x3f')](_0x413773,[_0xfc5d('0x65'),0x1]);})[_0xfc5d('0x28')](respondWithResult(_0x97e4e2,null))[_0xfc5d('0x43')](handleError(_0x97e4e2,null));};function hasDefaultDashboard(_0x1fd25d){var _0x6bd2bb=[0x65];return new BPromise(function(_0x1ae36c,_0x231636){try{if(_0x1fd25d['autoAssociation']){_0x1ae36c(_0x6bd2bb);}else{return db[_0xfc5d('0x57')][_0xfc5d('0x66')]({'where':{'sectionId':_0x1fd25d['id']},'raw':!![]})[_0xfc5d('0x28')](function(_0x3edcad){_0x3edcad?_0x1ae36c(_0x6bd2bb):_0x1ae36c();});}}catch(_0x31b39e){_0x231636(_0x31b39e);}});}function getCustomDashboards(_0x39c268){var _0x551ad7=[];return new BPromise(function(_0x4940dc,_0x1f9740){try{if(_0x39c268[_0xfc5d('0x56')]){return db[_0xfc5d('0x67')][_0xfc5d('0x54')]({'raw':!![]})[_0xfc5d('0x28')](function(_0x4037e7){_0x4037e7[_0xfc5d('0x68')](function(_0xa49fee){_0x551ad7[_0xfc5d('0x5e')](_0xa49fee['id']+0x1869f);});_0x4940dc(_0x551ad7);});}else{return db['UserProfileResource'][_0xfc5d('0x54')]({'where':{'sectionId':_0x39c268['id']},'raw':!![]})[_0xfc5d('0x28')](function(_0x23c748){_0x23c748[_0xfc5d('0x68')](function(_0x5b17c6){_0x551ad7[_0xfc5d('0x5e')](_0x5b17c6[_0xfc5d('0x69')]+0x1869f);});_0x4940dc(_0x551ad7);});}}catch(_0x5f39f3){_0x1f9740(_0x5f39f3);}});}function getPlugins(_0x12b539){var _0x897e16=[];return new BPromise(function(_0x168fdf,_0x5de09d){try{if(_0x12b539[_0xfc5d('0x56')]){return db['Plugin'][_0xfc5d('0x54')]({'raw':!![]})[_0xfc5d('0x28')](function(_0x2aeb33){_0x2aeb33[_0xfc5d('0x68')](function(_0x26f702){_0x897e16[_0xfc5d('0x5e')](_0x26f702['id']+0x15b38);});_0x168fdf(_0x897e16);});}else{return db[_0xfc5d('0x57')][_0xfc5d('0x54')]({'where':{'sectionId':_0x12b539['id']},'raw':!![]})['then'](function(_0x1e98fa){_0x1e98fa[_0xfc5d('0x68')](function(_0x549325){_0x897e16[_0xfc5d('0x5e')](_0x549325[_0xfc5d('0x69')]+0x15b38);});_0x168fdf(_0x897e16);});}}catch(_0x56cc35){_0x5de09d(_0x56cc35);}});}exports[_0xfc5d('0x6a')]=function(_0x20949d,_0x45e0dc){return db[_0xfc5d('0x2d')]['find']({'where':{'id':_0x20949d[_0xfc5d('0x45')]['id']}})[_0xfc5d('0x28')](handleEntityNotFound(_0x45e0dc,null))[_0xfc5d('0x28')](function(_0x38cfac){if(_0x38cfac){return db[_0xfc5d('0x51')][_0xfc5d('0x52')](function(_0x344e50){return db[_0xfc5d('0x53')][_0xfc5d('0x54')]({'where':{'userProfileId':_0x20949d['params']['id']},'attributes':['id'],'raw':!![]})[_0xfc5d('0x28')](function(_0x34fcc0){if(_0x34fcc0){return db[_0xfc5d('0x53')]['destroy']({'where':{'userProfileId':_0x20949d[_0xfc5d('0x45')]['id'],'id':_[_0xfc5d('0x31')](_0x34fcc0,function(_0x30a0a1){return _0x30a0a1['id'];})},'transaction':_0x344e50});}})['then'](function(_0x33c13b){var _0x53a354=_[_0xfc5d('0x31')](_0x20949d['body'],function(_0x44ad00){_0x44ad00[_0xfc5d('0x58')]=_0x20949d[_0xfc5d('0x45')]['id'];return _0x44ad00;});return db[_0xfc5d('0x53')][_0xfc5d('0x6b')](_0x53a354,{'raw':!![],'transaction':_0x344e50});})[_0xfc5d('0x28')](function(_0x4ebb7b){var _0x2304b7=_['filter'](_['map'](_0x4ebb7b,function(_0x135a8c){return _0x135a8c['get']({'plain':!![]});}),{'includeAll':![]});if(_0x2304b7){return db[_0xfc5d('0x53')][_0xfc5d('0x54')]({'where':{'userProfileId':_0x20949d['params']['id'],'sectionId':_[_0xfc5d('0x31')](_0x2304b7,function(_0x12c539){return _0x12c539[_0xfc5d('0x5d')];})},'attributes':['id',_0xfc5d('0x5d')],'raw':!![]})[_0xfc5d('0x28')](function(_0x388de7){var _0x3aa824=_['map'](_0x20949d[_0xfc5d('0x49')],function(_0x5d26d3){_0x5d26d3['userProfileId']=_0x20949d[_0xfc5d('0x45')]['id'];return _0x5d26d3;});return db[_0xfc5d('0x57')][_0xfc5d('0x6b')](_0x3aa824,{'raw':!![],'transaction':_0x344e50});});}})[_0xfc5d('0x43')](handleError(_0x45e0dc,null));});}})[_0xfc5d('0x28')](function(_0x2a10db){var _0x1b0e7b=_[_0xfc5d('0x31')](_0x2a10db,function(_0x30565f){return _0x30565f[_0xfc5d('0x4c')]({'plain':!![]});});})[_0xfc5d('0x28')](respondWithResult(_0x45e0dc,null))['catch'](handleError(_0x45e0dc,null));};exports[_0xfc5d('0x6c')]=function(_0x1ec524,_0x107341,_0x2387c8){return db[_0xfc5d('0x2d')]['find']({'where':{'id':_0x1ec524[_0xfc5d('0x45')]['id']}})['then'](handleEntityNotFound(_0x107341,null))[_0xfc5d('0x28')](function(_0xb387db){if(_0xb387db){return _0xb387db[_0xfc5d('0x6c')](_0x1ec524[_0xfc5d('0x32')][_0xfc5d('0x60')]);}})[_0xfc5d('0x28')](respondWithStatusCode(_0x107341,null))[_0xfc5d('0x43')](handleError(_0x107341,null));};exports['getResources']=function(_0x17969c,_0x5069c8){var _0x28a370={};if(!_0x17969c[_0xfc5d('0x32')][_0xfc5d('0x6d')])throw new Error(_0xfc5d('0x6e'));if(!_0x17969c[_0xfc5d('0x32')][_0xfc5d('0x39')](_0xfc5d('0x3a'))){_0x28a370[_0xfc5d('0x20')]=qs[_0xfc5d('0x20')](_0x17969c[_0xfc5d('0x32')][_0xfc5d('0x20')]);_0x28a370['offset']=qs[_0xfc5d('0x1e')](_0x17969c[_0xfc5d('0x32')][_0xfc5d('0x1e')]);}return db[_0xfc5d('0x2d')][_0xfc5d('0x47')]({'where':{'id':_0x17969c[_0xfc5d('0x45')]['id']}})[_0xfc5d('0x28')](function(_0x4afa91){if(!_0x4afa91)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x17969c[_0xfc5d('0x45')]['id']);return db[_0xfc5d('0x2d')][_0xfc5d('0x6f')](_0x17969c);})['then'](respondWithFilteredResult(_0x5069c8,_0x28a370))['catch'](handleError(_0x5069c8,null));};
\ No newline at end of file
+var _0x4329=['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','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userProfile.socket','sendStatus','status','offset','limit','count','set','apply','reject','update','then','destroy','error','stack','name','index','map','UserProfile','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','rawAttributes','create','body','catch','clone','params','get','omit','updatedAt','sequelize','transaction','UserProfileSection','autoAssociation','UserProfileResource','createdAt','sectionId','Resources','find','describe','userProfileId','push','ids','getSections','enabled','includes','isEmpty','subsections','findOne','forEach','resourceId','addResources','bulkCreate','removeResources','getResources','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util'];(function(_0x4d2c9e,_0x30c9a8){var _0x157954=function(_0x5869be){while(--_0x5869be){_0x4d2c9e['push'](_0x4d2c9e['shift']());}};_0x157954(++_0x30c9a8);}(_0x4329,0x13b));var _0x9432=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0x4329[_0x2a6809];return _0x11c371;};'use strict';var emlformat=require(_0x9432('0x0'));var rimraf=require(_0x9432('0x1'));var zipdir=require(_0x9432('0x2'));var jsonpatch=require(_0x9432('0x3'));var rp=require(_0x9432('0x4'));var moment=require(_0x9432('0x5'));var BPromise=require(_0x9432('0x6'));var Mustache=require(_0x9432('0x7'));var util=require(_0x9432('0x8'));var path=require(_0x9432('0x9'));var sox=require(_0x9432('0xa'));var csv=require(_0x9432('0xb'));var ejs=require(_0x9432('0xc'));var fs=require('fs');var fs_extra=require(_0x9432('0xd'));var _=require('lodash');var squel=require(_0x9432('0xe'));var crypto=require('crypto');var jsforce=require(_0x9432('0xf'));var deskjs=require(_0x9432('0x10'));var toCsv=require('to-csv');var querystring=require(_0x9432('0x11'));var Papa=require(_0x9432('0x12'));var Redis=require(_0x9432('0x13'));var authService=require(_0x9432('0x14'));var qs=require(_0x9432('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9432('0x16'));var logger=require(_0x9432('0x17'))('api');var utils=require('../../config/utils');var config=require(_0x9432('0x18'));var licenseUtil=require(_0x9432('0x19'));var db=require(_0x9432('0x1a'))['db'];config[_0x9432('0x1b')]=_['defaults'](config[_0x9432('0x1b')],{'host':_0x9432('0x1c'),'port':0x18eb});var socket=require(_0x9432('0x1d'))(new Redis(config[_0x9432('0x1b')]));require(_0x9432('0x1e'))['register'](socket);function respondWithStatusCode(_0x3c2eea,_0x27781c){_0x27781c=_0x27781c||0xcc;return function(_0x59f896){if(_0x59f896){return _0x3c2eea[_0x9432('0x1f')](_0x27781c);}return _0x3c2eea[_0x9432('0x20')](_0x27781c)['end']();};}function respondWithResult(_0x2b8d4b,_0x23ca2d){_0x23ca2d=_0x23ca2d||0xc8;return function(_0x5334fe){if(_0x5334fe){return _0x2b8d4b['status'](_0x23ca2d)['json'](_0x5334fe);}};}function respondWithFilteredResult(_0x5e2163,_0x5c6610){return function(_0x2eabe3){if(_0x2eabe3){var _0x18f944=typeof _0x5c6610[_0x9432('0x21')]==='undefined'&&typeof _0x5c6610[_0x9432('0x22')]==='undefined';var _0x18fd9d=_0x2eabe3[_0x9432('0x23')];var _0x325465=_0x18f944?0x0:_0x5c6610['offset'];var _0x12d294=_0x18f944?_0x2eabe3[_0x9432('0x23')]:_0x5c6610[_0x9432('0x21')]+_0x5c6610[_0x9432('0x22')];var _0xf62a59;if(_0x12d294>=_0x18fd9d){_0x12d294=_0x18fd9d;_0xf62a59=0xc8;}else{_0xf62a59=0xce;}_0x5e2163[_0x9432('0x20')](_0xf62a59);return _0x5e2163[_0x9432('0x24')]('Content-Range',_0x325465+'-'+_0x12d294+'/'+_0x18fd9d)['json'](_0x2eabe3);}return null;};}function patchUpdates(_0x4e247c){return function(_0x2ac08b){try{jsonpatch[_0x9432('0x25')](_0x2ac08b,_0x4e247c,!![]);}catch(_0xf1b400){return BPromise[_0x9432('0x26')](_0xf1b400);}return _0x2ac08b['save']();};}function saveUpdates(_0x243225,_0x499f4b){return function(_0x3a7df5){if(_0x3a7df5){return _0x3a7df5[_0x9432('0x27')](_0x243225)[_0x9432('0x28')](function(_0x1dfee6){return _0x1dfee6;});}return null;};}function removeEntity(_0x274610,_0x21aab4){return function(_0x121cb9){if(_0x121cb9){return _0x121cb9[_0x9432('0x29')]()[_0x9432('0x28')](function(){_0x274610[_0x9432('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ae1aa,_0x3bd58b){return function(_0x4ba316){if(!_0x4ba316){_0x5ae1aa['sendStatus'](0x194);}return _0x4ba316;};}function handleError(_0x110cc3,_0x584840){_0x584840=_0x584840||0x1f4;return function(_0x4bf4ae){logger[_0x9432('0x2a')](_0x4bf4ae[_0x9432('0x2b')]);if(_0x4bf4ae[_0x9432('0x2c')]){delete _0x4bf4ae[_0x9432('0x2c')];}_0x110cc3['status'](_0x584840)['send'](_0x4bf4ae);};}exports[_0x9432('0x2d')]=function(_0x3d7504,_0x45f6ca){var _0x32e991={},_0x120c04={},_0x35d955={'count':0x0,'rows':[]};var _0x2241d9=_[_0x9432('0x2e')](db[_0x9432('0x2f')]['rawAttributes'],function(_0x53b5a5){return{'name':_0x53b5a5['fieldName'],'type':_0x53b5a5[_0x9432('0x30')][_0x9432('0x31')]};});_0x120c04['model']=_['map'](_0x2241d9,_0x9432('0x2c'));_0x120c04[_0x9432('0x32')]=_[_0x9432('0x33')](_0x3d7504['query']);_0x120c04[_0x9432('0x34')]=_[_0x9432('0x35')](_0x120c04[_0x9432('0x36')],_0x120c04['query']);_0x32e991[_0x9432('0x37')]=_['intersection'](_0x120c04[_0x9432('0x36')],qs[_0x9432('0x38')](_0x3d7504['query'][_0x9432('0x38')]));_0x32e991[_0x9432('0x37')]=_0x32e991[_0x9432('0x37')][_0x9432('0x39')]?_0x32e991[_0x9432('0x37')]:_0x120c04[_0x9432('0x36')];if(!_0x3d7504[_0x9432('0x32')][_0x9432('0x3a')](_0x9432('0x3b'))){_0x32e991[_0x9432('0x22')]=qs['limit'](_0x3d7504['query'][_0x9432('0x22')]);_0x32e991[_0x9432('0x21')]=qs[_0x9432('0x21')](_0x3d7504[_0x9432('0x32')][_0x9432('0x21')]);}_0x32e991[_0x9432('0x3c')]=qs[_0x9432('0x3d')](_0x3d7504[_0x9432('0x32')]['sort']);_0x32e991[_0x9432('0x3e')]=qs[_0x9432('0x34')](_[_0x9432('0x3f')](_0x3d7504['query'],_0x120c04[_0x9432('0x34')]),_0x2241d9);if(_0x3d7504['query'][_0x9432('0x40')]){_0x32e991['where']=_[_0x9432('0x41')](_0x32e991['where'],{'$or':_[_0x9432('0x2e')](_0x2241d9,function(_0x26ee77){if(_0x26ee77[_0x9432('0x30')]!=='VIRTUAL'){var _0x32f10c={};_0x32f10c[_0x26ee77[_0x9432('0x2c')]]={'$like':'%'+_0x3d7504['query']['filter']+'%'};return _0x32f10c;}})});}_0x32e991=_[_0x9432('0x41')]({},_0x32e991,_0x3d7504[_0x9432('0x42')]);var _0x3f6809={'where':_0x32e991[_0x9432('0x3e')]};return db[_0x9432('0x2f')]['count'](_0x3f6809)[_0x9432('0x28')](function(_0x16b539){_0x35d955['count']=_0x16b539;if(_0x3d7504[_0x9432('0x32')][_0x9432('0x43')]){_0x32e991[_0x9432('0x44')]=[{'all':!![]}];}return db[_0x9432('0x2f')][_0x9432('0x45')](_0x32e991);})[_0x9432('0x28')](function(_0xc59ab){_0x35d955[_0x9432('0x46')]=_0xc59ab;return _0x35d955;})[_0x9432('0x28')](respondWithFilteredResult(_0x45f6ca,_0x32e991))['catch'](handleError(_0x45f6ca,null));};exports[_0x9432('0x47')]=function(_0x1f3cdf,_0x15d561){var _0x260eb3={'raw':![],'where':{'id':_0x1f3cdf['params']['id']}},_0x55231f={};_0x55231f[_0x9432('0x36')]=_[_0x9432('0x33')](db[_0x9432('0x2f')][_0x9432('0x48')]);_0x55231f['query']=_[_0x9432('0x33')](_0x1f3cdf[_0x9432('0x32')]);_0x55231f[_0x9432('0x34')]=_[_0x9432('0x35')](_0x55231f[_0x9432('0x36')],_0x55231f[_0x9432('0x32')]);_0x260eb3[_0x9432('0x37')]=_['intersection'](_0x55231f[_0x9432('0x36')],qs[_0x9432('0x38')](_0x1f3cdf['query']['fields']));_0x260eb3[_0x9432('0x37')]=_0x260eb3[_0x9432('0x37')]['length']?_0x260eb3[_0x9432('0x37')]:_0x55231f['model'];if(_0x1f3cdf[_0x9432('0x32')][_0x9432('0x43')]){_0x260eb3[_0x9432('0x44')]=[{'all':!![]}];}_0x260eb3=_['merge']({},_0x260eb3,_0x1f3cdf['options']);return db[_0x9432('0x2f')]['find'](_0x260eb3)[_0x9432('0x28')](handleEntityNotFound(_0x15d561,null))['then'](respondWithResult(_0x15d561,null))['catch'](handleError(_0x15d561,null));};exports['create']=function(_0x36e887,_0x246257){return db['UserProfile'][_0x9432('0x49')](_0x36e887[_0x9432('0x4a')],{})[_0x9432('0x28')](respondWithResult(_0x246257,0xc9))[_0x9432('0x4b')](handleError(_0x246257,null));};exports[_0x9432('0x4c')]=function(_0x5047f0,_0x2fcf4f){var _0x52bc37={'where':{'id':_0x5047f0[_0x9432('0x4d')]['id']}},_0x22cebd={};_0x22cebd[_0x9432('0x36')]=_[_0x9432('0x33')](db[_0x9432('0x2f')][_0x9432('0x48')]);_0x52bc37['attributes']=_[_0x9432('0x35')](_0x22cebd[_0x9432('0x36')],qs[_0x9432('0x38')](_0x5047f0[_0x9432('0x32')][_0x9432('0x38')]));_0x52bc37[_0x9432('0x37')]=_0x52bc37['attributes'][_0x9432('0x39')]?_0x52bc37[_0x9432('0x37')]:_0x22cebd[_0x9432('0x36')];if(_0x5047f0[_0x9432('0x32')]['includeAll']){_0x52bc37['include']=[{'all':!![]}];}_0x52bc37=_[_0x9432('0x41')]({},_0x52bc37,_0x5047f0['options']);return db[_0x9432('0x2f')]['find'](_0x52bc37)['then'](handleEntityNotFound(_0x2fcf4f,null))[_0x9432('0x28')](function(_0xe2171f){if(_0xe2171f){var _0x1c3f54=_0xe2171f[_0x9432('0x4e')]({'plain':!![]});_0x1c3f54=qs[_0x9432('0x4f')](_0x1c3f54,['id','createdAt',_0x9432('0x50'),'crudPermissions']);_0x5047f0[_0x9432('0x4a')]=_['omit'](_0x5047f0[_0x9432('0x4a')],['id','createdAt',_0x9432('0x50')]);return db[_0x9432('0x51')][_0x9432('0x52')](function(_0x46634d){return db['UserProfile'][_0x9432('0x49')](_['merge'](_0x1c3f54,_0x5047f0[_0x9432('0x4a')]),{'include':_0x5047f0[_0x9432('0x32')][_0x9432('0x43')]?[{'all':!![]}]:undefined,'transaction':_0x46634d})['then'](function(_0x211fb7){var _0x3f00d5=_0x211fb7[_0x9432('0x4e')]({'plain':!![]});return db[_0x9432('0x53')]['findAll']({'where':{'userProfileId':_0x5047f0[_0x9432('0x4d')]['id']},'raw':!![]})[_0x9432('0x28')](function(_0x43c7ad){if(_0x43c7ad){return BPromise['each'](_0x43c7ad,function(_0x54062c){return new BPromise(function(_0x51e174,_0x56b00c){if(_0x54062c[_0x9432('0x54')]===null||_0x54062c[_0x9432('0x54')]===0x1)_0x51e174(null);return db[_0x9432('0x55')][_0x9432('0x45')]({'where':{'sectionId':_0x54062c['id']},'raw':!![]})['then'](function(_0x434f79){var _0xaef7a7=_['map'](_0x434f79,function(_0x577771){return qs[_0x9432('0x4f')](_0x577771,['id',_0x9432('0x56'),_0x9432('0x50'),_0x9432('0x57')]);});_0x51e174(_0xaef7a7);})[_0x9432('0x4b')](function(_0x283cdf){_0x56b00c(_0x283cdf);});})[_0x9432('0x28')](function(_0x4fe999){var _0x2d37c8=qs[_0x9432('0x4f')](_0x54062c,['id',_0x9432('0x56'),'updatedAt']);_0x2d37c8['userProfileId']=_0x3f00d5['id'];if(_0x4fe999)_0x2d37c8[_0x9432('0x58')]=_0x4fe999;return _0x2d37c8;})[_0x9432('0x28')](function(_0x4a7f3a){return db[_0x9432('0x53')][_0x9432('0x49')](_0x4a7f3a,{'include':[{'model':db[_0x9432('0x55')],'as':_0x9432('0x58')}],'raw':!![],'transaction':_0x46634d});});})[_0x9432('0x28')](function(){return _0x3f00d5;});}});});});}})[_0x9432('0x28')](respondWithResult(_0x2fcf4f,0xc9))[_0x9432('0x4b')](handleError(_0x2fcf4f,null));};exports[_0x9432('0x27')]=function(_0x142d6b,_0x5b5b32){if(_0x142d6b['body']['id']){delete _0x142d6b[_0x9432('0x4a')]['id'];}return db[_0x9432('0x2f')][_0x9432('0x59')]({'where':{'id':_0x142d6b[_0x9432('0x4d')]['id']}})[_0x9432('0x28')](handleEntityNotFound(_0x5b5b32,null))[_0x9432('0x28')](saveUpdates(_0x142d6b[_0x9432('0x4a')],null))['then'](respondWithResult(_0x5b5b32,null))[_0x9432('0x4b')](handleError(_0x5b5b32,null));};exports[_0x9432('0x29')]=function(_0x4c42e8,_0x4ade28){return db[_0x9432('0x2f')][_0x9432('0x59')]({'where':{'id':_0x4c42e8[_0x9432('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4ade28,null))['then'](removeEntity(_0x4ade28,null))[_0x9432('0x4b')](handleError(_0x4ade28,null));};exports[_0x9432('0x5a')]=function(_0x5d1bd9,_0x381806){return db[_0x9432('0x2f')][_0x9432('0x5a')]()[_0x9432('0x28')](respondWithResult(_0x381806,null))[_0x9432('0x4b')](handleError(_0x381806,null));};exports['addSections']=function(_0x33fb0c,_0x300264){var _0x565324=_0x33fb0c[_0x9432('0x4a')];return db[_0x9432('0x2f')]['find']({'where':{'id':_0x33fb0c[_0x9432('0x4d')]['id']}})['then'](handleEntityNotFound(_0x300264,null))[_0x9432('0x28')](function(_0x2bfca4){if(_0x2bfca4){return db['sequelize'][_0x9432('0x52')](function(_0x589d22){return db[_0x9432('0x53')][_0x9432('0x29')]({'where':{'userProfileId':_0x33fb0c[_0x9432('0x4d')]['id'],'sectionId':_['map'](_0x565324,function(_0x1db20d){return _0x1db20d[_0x9432('0x57')];})},'transaction':_0x589d22})[_0x9432('0x28')](function(){var _0x5a72fd=_[_0x9432('0x2e')](_0x565324,function(_0x4dc983){_0x4dc983[_0x9432('0x5b')]=_0x33fb0c[_0x9432('0x4d')]['id'];return _0x4dc983;});var _0x315f31=[];return BPromise['each'](_0x5a72fd,function(_0x4fa049){return db[_0x9432('0x53')]['create'](_0x4fa049,{'include':[{'model':db[_0x9432('0x55')],'as':'Resources'}],'raw':!![],'transaction':_0x589d22})['then'](function(_0x773477){_0x315f31[_0x9432('0x5c')](_0x773477[_0x9432('0x4e')]({'plain':!![]}));});})[_0x9432('0x28')](function(){return _0x315f31;});});});}})[_0x9432('0x28')](function(_0x2c51f7){return _0x2c51f7;})[_0x9432('0x28')](respondWithResult(_0x300264,null))[_0x9432('0x4b')](handleError(_0x300264,null));};exports['removeSections']=function(_0x5598bd,_0x1de7e6){var _0x58e630;return db[_0x9432('0x2f')][_0x9432('0x59')]({'where':{'id':_0x5598bd['params']['id']},'attributes':['id',_0x9432('0x2c')]})['then'](handleEntityNotFound(_0x1de7e6,null))[_0x9432('0x28')](function(_0x58760b){if(_0x58760b){_0x58e630=_0x58760b;return db[_0x9432('0x53')][_0x9432('0x29')]({'where':{'userProfileId':_0x5598bd[_0x9432('0x4d')]['id'],'sectionId':_0x5598bd[_0x9432('0x32')][_0x9432('0x5d')]}});}})[_0x9432('0x28')](function(){return _0x58e630;})[_0x9432('0x28')](respondWithStatusCode(_0x1de7e6,null))['catch'](handleError(_0x1de7e6,null));};exports[_0x9432('0x5e')]=function(_0x26e024,_0x68047a){var _0x2f84fb=[];var _0x24de57=[];return db[_0x9432('0x53')][_0x9432('0x45')]({'where':{'userProfileId':_0x26e024[_0x9432('0x4d')]['id']},'raw':!![]})[_0x9432('0x28')](function(_0x5de8b6){_0x2f84fb=_[_0x9432('0x40')](_0x5de8b6,function(_0x2958b9){return _0x2958b9[_0x9432('0x5f')]===0x1||_[_0x9432('0x60')]([0x3eb,0x709],_0x2958b9['sectionId']);});if(!_[_0x9432('0x61')](_0x2f84fb)){return _[_0x9432('0x2e')](_0x2f84fb,function(_0x3bef8b){return _0x3bef8b['sectionId'];});}else{return;}})[_0x9432('0x28')](function(_0x5156c9){if(_0x5156c9)_0x24de57=_0x5156c9;if(_[_0x9432('0x60')](_0x24de57,0x64)){var _0x1b4d3e=_[_0x9432('0x59')](_0x2f84fb,{'sectionId':0x64});return hasDefaultDashboard(_0x1b4d3e)['then'](function(_0x31b6a6){return _[_0x9432('0x2e')](_0x2f84fb,function(_0x1ad11a){if(_0x1ad11a[_0x9432('0x57')]===0x64){_0x1ad11a[_0x9432('0x62')]=_0x31b6a6;}return _0x1ad11a;});});}else{return;}})[_0x9432('0x28')](function(_0x1b6d9b){if(_0x1b6d9b)_0x2f84fb=_0x1b6d9b;if(_[_0x9432('0x60')](_0x24de57,0x3eb)){var _0x446235=_[_0x9432('0x59')](_0x2f84fb,{'sectionId':0x3eb});return getCustomDashboards(_0x446235)[_0x9432('0x28')](function(_0x37daa6){return _[_0x9432('0x2e')](_0x2f84fb,function(_0x1e7f3b){if(_0x446235[_0x9432('0x5f')]){if(_0x1e7f3b['sectionId']===0x3eb){_0x1e7f3b[_0x9432('0x62')]=_0x37daa6;}}else{if(_0x1e7f3b['sectionId']===0x64){_0x1e7f3b[_0x9432('0x62')]=_0x37daa6;}}return _0x1e7f3b;});});}else{return;}})[_0x9432('0x28')](function(_0x3a3272){if(_0x3a3272)_0x2f84fb=_0x3a3272;if(_[_0x9432('0x60')](_0x24de57,0x709)){var _0x59e305=_[_0x9432('0x59')](_0x2f84fb,{'sectionId':0x709});return getPlugins(_0x59e305)[_0x9432('0x28')](function(_0x25a755){if(_0x59e305[_0x9432('0x5f')]){return _[_0x9432('0x2e')](_0x2f84fb,function(_0x1c05c1){if(_0x1c05c1['sectionId']===0x709){_0x1c05c1[_0x9432('0x62')]=_0x25a755;}return _0x1c05c1;});}else{var _0x5e83aa={'sectionId':0x76c,'enabled':0x1,'subsections':_0x25a755};var _0x43b04a=_[_0x9432('0x2e')](_0x2f84fb);_0x43b04a[_0x9432('0x5c')](_0x5e83aa);return _0x43b04a;}});}else{return;}})[_0x9432('0x28')](function(_0x89056c){if(_0x89056c)_0x2f84fb=_0x89056c;return _[_0x9432('0x40')](_0x2f84fb,[_0x9432('0x5f'),0x1]);})[_0x9432('0x28')](respondWithResult(_0x68047a,null))[_0x9432('0x4b')](handleError(_0x68047a,null));};function hasDefaultDashboard(_0x4fb65d){var _0x1b0fe8=[0x65];return new BPromise(function(_0x34797b,_0x433514){try{if(_0x4fb65d['autoAssociation']){_0x34797b(_0x1b0fe8);}else{return db['UserProfileResource'][_0x9432('0x63')]({'where':{'sectionId':_0x4fb65d['id']},'raw':!![]})[_0x9432('0x28')](function(_0x128135){_0x128135?_0x34797b(_0x1b0fe8):_0x34797b();});}}catch(_0x1b66ae){_0x433514(_0x1b66ae);}});}function getCustomDashboards(_0x4e6da2){var _0x16605f=[];return new BPromise(function(_0x25d10d,_0x4cb47b){try{if(_0x4e6da2[_0x9432('0x54')]){return db['Dashboard'][_0x9432('0x45')]({'raw':!![]})[_0x9432('0x28')](function(_0x5727ef){_0x5727ef[_0x9432('0x64')](function(_0x5ee21b){_0x16605f[_0x9432('0x5c')](_0x5ee21b['id']+0x1869f);});_0x25d10d(_0x16605f);});}else{return db[_0x9432('0x55')]['findAll']({'where':{'sectionId':_0x4e6da2['id']},'raw':!![]})[_0x9432('0x28')](function(_0x1d0010){_0x1d0010[_0x9432('0x64')](function(_0x388fab){_0x16605f[_0x9432('0x5c')](_0x388fab[_0x9432('0x65')]+0x1869f);});_0x25d10d(_0x16605f);});}}catch(_0x382a0e){_0x4cb47b(_0x382a0e);}});}function getPlugins(_0x37c0c6){var _0x15b669=[];return new BPromise(function(_0x20064e,_0x552400){try{if(_0x37c0c6[_0x9432('0x54')]){return db['Plugin']['findAll']({'raw':!![]})['then'](function(_0x4c77ce){_0x4c77ce[_0x9432('0x64')](function(_0x261a3b){_0x15b669[_0x9432('0x5c')](_0x261a3b['id']+0x15b38);});_0x20064e(_0x15b669);});}else{return db[_0x9432('0x55')]['findAll']({'where':{'sectionId':_0x37c0c6['id']},'raw':!![]})[_0x9432('0x28')](function(_0x5bd25d){_0x5bd25d[_0x9432('0x64')](function(_0x16ce56){_0x15b669['push'](_0x16ce56['resourceId']+0x15b38);});_0x20064e(_0x15b669);});}}catch(_0x77925c){_0x552400(_0x77925c);}});}exports[_0x9432('0x66')]=function(_0x4547c8,_0x440513){return db['UserProfile'][_0x9432('0x59')]({'where':{'id':_0x4547c8['params']['id']}})[_0x9432('0x28')](handleEntityNotFound(_0x440513,null))[_0x9432('0x28')](function(_0x1196c3){if(_0x1196c3){return db[_0x9432('0x51')][_0x9432('0x52')](function(_0x497560){return db[_0x9432('0x53')]['findAll']({'where':{'userProfileId':_0x4547c8[_0x9432('0x4d')]['id']},'attributes':['id'],'raw':!![]})[_0x9432('0x28')](function(_0x502001){if(_0x502001){return db[_0x9432('0x53')][_0x9432('0x29')]({'where':{'userProfileId':_0x4547c8[_0x9432('0x4d')]['id'],'id':_[_0x9432('0x2e')](_0x502001,function(_0x28d43c){return _0x28d43c['id'];})},'transaction':_0x497560});}})[_0x9432('0x28')](function(_0x4d9a8d){var _0x44374a=_[_0x9432('0x2e')](_0x4547c8[_0x9432('0x4a')],function(_0x2bfa80){_0x2bfa80[_0x9432('0x5b')]=_0x4547c8['params']['id'];return _0x2bfa80;});return db[_0x9432('0x53')][_0x9432('0x67')](_0x44374a,{'raw':!![],'transaction':_0x497560});})['then'](function(_0x4fcab6){var _0x39305e=_[_0x9432('0x40')](_[_0x9432('0x2e')](_0x4fcab6,function(_0x5e255d){return _0x5e255d[_0x9432('0x4e')]({'plain':!![]});}),{'includeAll':![]});if(_0x39305e){return db[_0x9432('0x53')][_0x9432('0x45')]({'where':{'userProfileId':_0x4547c8[_0x9432('0x4d')]['id'],'sectionId':_[_0x9432('0x2e')](_0x39305e,function(_0x2c9748){return _0x2c9748['sectionId'];})},'attributes':['id',_0x9432('0x57')],'raw':!![]})[_0x9432('0x28')](function(_0x2dfcc8){var _0xb585ab=_[_0x9432('0x2e')](_0x4547c8[_0x9432('0x4a')],function(_0x390c0c){_0x390c0c[_0x9432('0x5b')]=_0x4547c8[_0x9432('0x4d')]['id'];return _0x390c0c;});return db[_0x9432('0x55')][_0x9432('0x67')](_0xb585ab,{'raw':!![],'transaction':_0x497560});});}})[_0x9432('0x4b')](handleError(_0x440513,null));});}})[_0x9432('0x28')](function(_0x40cc0d){var _0x17699d=_[_0x9432('0x2e')](_0x40cc0d,function(_0x3094cc){return _0x3094cc['get']({'plain':!![]});});})['then'](respondWithResult(_0x440513,null))[_0x9432('0x4b')](handleError(_0x440513,null));};exports[_0x9432('0x68')]=function(_0x3aba0b,_0x3c85f8,_0x5325a0){return db[_0x9432('0x2f')][_0x9432('0x59')]({'where':{'id':_0x3aba0b['params']['id']}})[_0x9432('0x28')](handleEntityNotFound(_0x3c85f8,null))['then'](function(_0x4adfb5){if(_0x4adfb5){return _0x4adfb5[_0x9432('0x68')](_0x3aba0b[_0x9432('0x32')][_0x9432('0x5d')]);}})[_0x9432('0x28')](respondWithStatusCode(_0x3c85f8,null))[_0x9432('0x4b')](handleError(_0x3c85f8,null));};exports[_0x9432('0x69')]=function(_0x1abdca,_0x43e961){var _0x1b8acd={};if(!_0x1abdca[_0x9432('0x32')]['section'])throw new Error(_0x9432('0x6a'));if(!_0x1abdca[_0x9432('0x32')][_0x9432('0x3a')]('nolimit')){_0x1b8acd[_0x9432('0x22')]=qs[_0x9432('0x22')](_0x1abdca['query'][_0x9432('0x22')]);_0x1b8acd[_0x9432('0x21')]=qs[_0x9432('0x21')](_0x1abdca[_0x9432('0x32')][_0x9432('0x21')]);}return db['UserProfile'][_0x9432('0x59')]({'where':{'id':_0x1abdca[_0x9432('0x4d')]['id']}})[_0x9432('0x28')](function(_0xc378f8){if(!_0xc378f8)throw new Error(_0x9432('0x6b')+_0x1abdca[_0x9432('0x4d')]['id']);return db[_0x9432('0x2f')][_0x9432('0x69')](_0x1abdca);})['then'](respondWithFilteredResult(_0x43e961,_0x1b8acd))[_0x9432('0x4b')](handleError(_0x43e961,null));};
\ No newline at end of file
index 0b75b60..a7aa34f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1623=['emit','hasOwnProperty','exports','events','setMaxListeners','save','update','remove'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x1623,0xab));var _0x3162=function(_0xe2364a,_0x32436a){_0xe2364a=_0xe2364a-0x0;var _0x263b58=_0x1623[_0xe2364a];return _0x263b58;};'use strict';var EventEmitter=require(_0x3162('0x0'));var UserProfile=require('../../mysqldb')['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x3162('0x1')](0x0);var events={'afterCreate':_0x3162('0x2'),'afterUpdate':_0x3162('0x3'),'afterDestroy':_0x3162('0x4')};function emitEvent(_0x428dd7){return function(_0x4ce2bd,_0x5d49d0,_0x7a4559){UserProfileEvents['emit'](_0x428dd7+':'+_0x4ce2bd['id'],_0x4ce2bd);UserProfileEvents[_0x3162('0x5')](_0x428dd7,_0x4ce2bd);_0x7a4559(null);};}for(var e in events){if(events[_0x3162('0x6')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0x3162('0x7')]=UserProfileEvents;
\ No newline at end of file
+var _0xf0f4=['hasOwnProperty','exports','../../mysqldb','save','update','emit'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0xf0f4,0x182));var _0x4f0f=function(_0x338464,_0x2e68e9){_0x338464=_0x338464-0x0;var _0x18b9b2=_0xf0f4[_0x338464];return _0x18b9b2;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0x4f0f('0x0'))['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4f0f('0x1'),'afterUpdate':_0x4f0f('0x2'),'afterDestroy':'remove'};function emitEvent(_0x2cefe){return function(_0x420159,_0x1f6cdb,_0x130ab2){UserProfileEvents[_0x4f0f('0x3')](_0x2cefe+':'+_0x420159['id'],_0x420159);UserProfileEvents[_0x4f0f('0x3')](_0x2cefe,_0x420159);_0x130ab2(null);};}for(var e in events){if(events[_0x4f0f('0x4')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0x4f0f('0x5')]=UserProfileEvents;
\ No newline at end of file
index e4c0b01..2d93532 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a07=['chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','MailQueue','MailAccount','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsaccounts','whatsappqueues','WhatsappQueue','whatsappaccounts','teams','Team','VoiceQueues','users','agents','telephones','admin','user','Agents','zendeskaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','dispositions','Disposition','customdashboards','intervals','Pause','scheduler','Schedule','sounds','Sound','Template','triggers','Trigger','Variable','extractedreports','Reports','reportId','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','ui.createdAt','from','user_has_','where','sequelize','query','OpenTabs','define','user_profiles','section','Invalid\x20section\x20\x27','isEmpty','length','UserProfileSection','params','find','ignore','push','autoAssociation','all','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','offset','order','sort','pick','merge','key','VIRTUAL','foreignKey','forEach','options','AnalyticExtractedReport','includeAll','include','default','DefaultReports','custom','CustomReports','count','Tag','color','tag','rows','openTabs','true','chat','dataValues','sms','fax','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','value','findAll','then','map','catch','model','associatedResources','name','resolve','UserProfileResource','type','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','contacts','CmContact','Lists','ListId','CmList','companies','CmCompany','globalcustomfields','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','faxaccounts','FaxAccount','internalroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','User','role','agent','Telephones','membername','telephone','queue','VoiceQueue','inbound','QueueCampaigns','outbound'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0x2a07,0x74));var _0x72a0=function(_0x3ebcab,_0x482df2){_0x3ebcab=_0x3ebcab-0x0;var _0x4074d3=_0x2a07[_0x3ebcab];return _0x4074d3;};'use strict';var _=require(_0x72a0('0x0'));var attributes=require(_0x72a0('0x1'));var qs=require(_0x72a0('0x2'));var squel=require(_0x72a0('0x3'));module[_0x72a0('0x4')]=function(_0x548164){var _0x335b7c=_0x548164[_0x72a0('0x5')];function _0x135982(_0x45b155,_0x431f65){return new Promise(function(_0xce74c,_0x3ccf6d){if(!_0x431f65)return _0xce74c(null);var _0x20dab9=_0x431f65[_0x72a0('0x6')]?{[_0x431f65[_0x72a0('0x6')][_0x72a0('0x7')]]:_0x431f65[_0x72a0('0x6')][_0x72a0('0x8')]}:undefined;return _0x335b7c[_0x45b155][_0x72a0('0x9')]({'where':_0x20dab9,'raw':!![]})[_0x72a0('0xa')](function(_0x2bc45b){_0x431f65['associatedResources']=_[_0x72a0('0xb')](_0x2bc45b,'id');_0xce74c(_0x431f65);})[_0x72a0('0xc')](function(_0x54abf6){_0x3ccf6d(_0x54abf6);});});}function _0x46fb8a(_0x194488,_0x1b85b1){return new Promise(function(_0x44d7cf,_0x975c27){var _0x516c08=_0x194488[_0x72a0('0x6')]?{[_0x194488[_0x72a0('0x6')][_0x72a0('0x7')]]:_0x194488[_0x72a0('0x6')][_0x72a0('0x8')]}:undefined;return _0x335b7c[_0x194488[_0x72a0('0xd')]][_0x72a0('0x9')]({'where':_0x516c08,'raw':!![]})['then'](function(_0x4930c5){_0x1b85b1[_0x72a0('0xe')]=_[_0x72a0('0xb')](_0x4930c5,function(_0x19eaf9){return _0x19eaf9[_0x72a0('0xf')];});_0x44d7cf(_0x1b85b1);})[_0x72a0('0xc')](function(_0x3f3d62){_0x975c27(_0x3f3d62);});});}function _0x4ab55e(_0x30248e,_0x2e7552,_0x16ac70){if(!_0x2e7552)return Promise[_0x72a0('0x10')](null);return new Promise(function(_0x2d1e95,_0x54495e){return _0x335b7c[_0x72a0('0x11')][_0x72a0('0x9')]({'where':{'sectionId':_0x2e7552['id']},'raw':!![]})[_0x72a0('0xa')](function(_0x5b63c8){if(_0x30248e[_0x72a0('0x7')]&&_0x30248e[_0x72a0('0x7')]!=='id'){_0x2e7552[_0x72a0('0xe')]=_[_0x72a0('0xb')](_0x5b63c8,function(_0x5437df){return _0x5437df[_0x30248e[_0x72a0('0x7')]];});}else{if(_0x16ac70==='AnalyticExtractedReport'){_0x2e7552[_0x72a0('0xe')]=_[_0x72a0('0xb')](_0x5b63c8,function(_0xde058c){return{'id':_0xde058c['resourceId'],'type':_0xde058c[_0x72a0('0x12')]};});}else{_0x2e7552[_0x72a0('0xe')]=_[_0x72a0('0xb')](_0x5b63c8,function(_0x3d1965){return _0x3d1965['resourceId'];});}}_0x2d1e95(_0x2e7552);})[_0x72a0('0xc')](function(_0x390464){_0x54495e(_0x390464);});});}function _0x1ddd54(_0x23b918,_0x3022b0){var _0x174b1b={'parentSections':[]};switch(_0x23b918['toLowerCase']()){case'squareprojects':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x14');break;case _0x72a0('0x15'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x16');break;case _0x72a0('0x17'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x18');_0x174b1b[_0x72a0('0x19')]=[{'name':_0x72a0('0x1a'),'field':'name','foreignKey':_0x72a0('0x1b')}];break;case _0x72a0('0x1c'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x1d');break;case _0x72a0('0x1e'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x1f');_0x174b1b[_0x72a0('0x19')]=[{'name':_0x72a0('0x20'),'field':'id','foreignKey':_0x72a0('0x21')}];break;case'lists':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x22');break;case _0x72a0('0x23'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x24');break;case _0x72a0('0x25'):_0x174b1b[_0x72a0('0x13')]='CmCustomField';break;case _0x72a0('0x26'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x27');break;case _0x72a0('0x28'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x29');break;case _0x72a0('0x2a'):_0x174b1b[_0x72a0('0x13')]='FaxQueue';break;case _0x72a0('0x2b'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x2c');break;case'inboundroutes':case _0x72a0('0x2d'):case'outboundroutes':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x2e');break;case _0x72a0('0x2f'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x30');break;case _0x72a0('0x31'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x32');break;case _0x72a0('0x33'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x34');_0x174b1b[_0x72a0('0x19')]=[{'name':'Agents','field':_0x72a0('0xf'),'foreignKey':'membername','model':_0x72a0('0x35'),'filter':{'field':_0x72a0('0x36'),'value':[_0x72a0('0x37')]}},{'name':_0x72a0('0x38'),'field':_0x72a0('0xf'),'foreignKey':_0x72a0('0x39'),'model':_0x72a0('0x35'),'filter':{'field':_0x72a0('0x36'),'value':[_0x72a0('0x3a')]}},{'name':'VoiceQueues','field':'name','foreignKey':_0x72a0('0x3b'),'model':_0x72a0('0x3c'),'filter':{'field':_0x72a0('0x12'),'value':[_0x72a0('0x3d')]}},{'name':_0x72a0('0x3e'),'field':'name','foreignKey':_0x72a0('0x3b'),'model':_0x72a0('0x3c'),'filter':{'field':'type','value':[_0x72a0('0x3f')]}}];break;case'musiconholds':_0x174b1b['childModel']='VoiceMusicOnHold';break;case _0x72a0('0x40'):_0x174b1b['childModel']=_0x72a0('0x41');break;case _0x72a0('0x42'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x43');break;case'ivrcampaigns':_0x174b1b['childModel']='Campaign';break;case'mailqueues':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x44');break;case'mailaccounts':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x45');break;case'mailsubstatuses':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x46');break;case _0x72a0('0x47'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x48');break;case _0x72a0('0x49'):_0x174b1b['childModel']=_0x72a0('0x4a');break;case'smsqueues':_0x174b1b[_0x72a0('0x13')]='SmsQueue';break;case _0x72a0('0x4b'):_0x174b1b[_0x72a0('0x13')]='SmsAccount';break;case _0x72a0('0x4c'):_0x174b1b['childModel']=_0x72a0('0x4d');break;case _0x72a0('0x4e'):_0x174b1b[_0x72a0('0x13')]='WhatsappAccount';break;case _0x72a0('0x4f'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x50');break;case'voicequeues':case'queuecampaigns':_0x174b1b[_0x72a0('0x13')]='VoiceQueue';if(_0x3022b0){_0x174b1b[_0x72a0('0x19')]=[{'name':_0x72a0('0x51')},{'name':_0x72a0('0x3e')}];}break;case _0x72a0('0x52'):case _0x72a0('0x53'):case _0x72a0('0x54'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x35');if(_0x3022b0){_0x174b1b[_0x72a0('0x19')]=[{'name':'Users','filter':{'field':_0x72a0('0x36'),'value':[_0x72a0('0x55'),_0x72a0('0x56')]},'ignore':!![]},{'name':_0x72a0('0x57')},{'name':_0x72a0('0x38')}];}break;case _0x72a0('0x58'):_0x174b1b[_0x72a0('0x13')]='ZendeskAccount';break;case'salesforceaccounts':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x59');break;case _0x72a0('0x5a'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x5b');break;case _0x72a0('0x5c'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x5d');break;case _0x72a0('0x5e'):_0x174b1b[_0x72a0('0x13')]='DeskAccount';break;case _0x72a0('0x5f'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x60');break;case _0x72a0('0x61'):_0x174b1b[_0x72a0('0x13')]='User';break;case _0x72a0('0x62'):_0x174b1b['childModel']='CannedAnswer';break;case _0x72a0('0x63'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x64');break;case _0x72a0('0x65'):_0x174b1b[_0x72a0('0x13')]='Dashboard';break;case _0x72a0('0x66'):_0x174b1b[_0x72a0('0x13')]='Interval';break;case'pauses':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x67');break;case _0x72a0('0x68'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x69');break;case _0x72a0('0x6a'):_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x6b');break;case'tags':_0x174b1b[_0x72a0('0x13')]='Tag';break;case'templates':_0x174b1b['childModel']=_0x72a0('0x6c');break;case _0x72a0('0x6d'):_0x174b1b['childModel']=_0x72a0('0x6e');break;case'trunks':_0x174b1b[_0x72a0('0x13')]='Trunk';break;case'variables':_0x174b1b[_0x72a0('0x13')]=_0x72a0('0x6f');break;case'plugins':_0x174b1b[_0x72a0('0x13')]='Plugin';break;case _0x72a0('0x70'):_0x174b1b['childModel']='AnalyticExtractedReport';_0x174b1b[_0x72a0('0x19')]=[{'name':_0x72a0('0x71'),'field':'id','foreignKey':_0x72a0('0x72')}];break;case'metrics':_0x174b1b['childModel']=_0x72a0('0x73');break;}return _0x174b1b;}function _0x48f178(_0x44b171,_0x36d604){var _0x1cea02=_0x44b171[_0x72a0('0x74')](0x0)[_0x72a0('0x75')]()+_0x44b171[_0x72a0('0x76')](0x1);var _0x41f7f6={'type':_0x335b7c[_0x72a0('0x77')][_0x72a0('0x78')][_0x72a0('0x79')],'raw':!![]};return new Promise(function(_0x32a0bb,_0x43ec4b){var _0x4d0774=squel[_0x72a0('0x7a')]()['field']('ui.'+_0x1cea02+'InteractionId','id')['field'](_0x72a0('0x7b'))[_0x72a0('0x7c')](_0x72a0('0x7d')+_0x44b171+'_interactions','ui')[_0x72a0('0x7e')]('ui.UserId\x20=\x20?',_0x36d604['id']);return _0x335b7c[_0x72a0('0x7f')][_0x72a0('0x80')](_0x4d0774['toString'](),_0x41f7f6)[_0x72a0('0xa')](function(_0x24e211){_0x36d604[_0x1cea02+_0x72a0('0x81')]=_0x24e211;_0x32a0bb(_0x24e211);})[_0x72a0('0xc')](function(_0x5e47c4){_0x43ec4b(_0x5e47c4);});});}return _0x548164[_0x72a0('0x82')]('UserProfile',attributes,{'tableName':_0x72a0('0x83'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x2cb292){var _0x1df6fc={'raw':![],'where':{}};var _0x47fe64={};var _0x432656={'count':0x0,'rows':[]};var _0x3eb3b5=_0x2cb292[_0x72a0('0x80')][_0x72a0('0x84')];var _0x100277=_0x2cb292['query']['mergeResources']||![];var _0xa65d14=_0x1ddd54(_0x3eb3b5,_0x100277);if(!_0xa65d14['childModel'])throw new Error(_0x72a0('0x85')+_0x3eb3b5+'\x27');var _0x523bd0=[{'name':_0x3eb3b5}];if(!_[_0x72a0('0x86')](_0xa65d14[_0x72a0('0x19')]))_0x523bd0=_0xa65d14['parentSections'];var _0x1cfd1d=[];for(var _0x1b960e=0x0;_0x1b960e<_0x523bd0[_0x72a0('0x87')];_0x1b960e++){_0x1cfd1d['push'](_0x335b7c[_0x72a0('0x88')]['find']({'where':{'userProfileId':_0x2cb292[_0x72a0('0x89')]['id'],'name':_0x523bd0[_0x1b960e][_0x72a0('0xf')]},'raw':!![]}));}return Promise['all'](_0x1cfd1d)[_0x72a0('0xa')](function(_0x4b6e60){var _0x4c32db=_['filter'](_0x4b6e60,function(_0x28969a){return _0x28969a?_0x28969a:undefined;});var _0x4a0373=_[_0x72a0('0x6')](_0x523bd0,['ignore',!![]]);var _0x29fff7=_[_0x72a0('0x86')](_0x4c32db)&&_[_0x72a0('0x86')](_0x4a0373)?null:_['union'](_0x4a0373,_0x4c32db);if(!_0x29fff7)return null;var _0x1f8e98=[];for(var _0x420d8d=0x0;_0x420d8d<_0x29fff7[_0x72a0('0x87')];_0x420d8d++){var _0x28551a=_[_0x72a0('0x8a')](_0x523bd0,function(_0x58ef97){return _0x29fff7[_0x420d8d]?_0x58ef97[_0x72a0('0xf')]===_0x29fff7[_0x420d8d][_0x72a0('0xf')]:null;});if(_0x28551a){if(_0x29fff7[_0x420d8d][_0x72a0('0x8b')]){_0x1f8e98[_0x72a0('0x8c')](_0x135982(_0xa65d14['childModel'],_0x29fff7[_0x420d8d]));}else{if(!_0x29fff7[_0x420d8d][_0x72a0('0x8d')]){_0x1f8e98[_0x72a0('0x8c')](_0x4ab55e(_0x28551a,_0x29fff7[_0x420d8d],_0xa65d14['childModel']));}else{if(_0x28551a[_0x72a0('0xd')]){_0x1f8e98['push'](_0x46fb8a(_0x28551a,_0x29fff7[_0x420d8d]));}}}}}return Promise[_0x72a0('0x8e')](_0x1f8e98);})[_0x72a0('0xa')](function(_0xb17e09){var _0x1238a3=_0xb17e09;var _0x14f61a=null;if(_0x1238a3){_0x14f61a=_0x1238a3[_0x72a0('0x87')]===0x1?_0x1238a3[0x0]:null;}if(!_0x14f61a&&!_0x1238a3)return _0x432656;var _0x7450c7=_0x335b7c[_0xa65d14['childModel']]['rawAttributes'];_0x47fe64['model']=_[_0x72a0('0x8f')](_0x7450c7);_0x47fe64[_0x72a0('0x80')]=_[_0x72a0('0x8f')](_0x2cb292[_0x72a0('0x80')]);_0x47fe64[_0x72a0('0x90')]=_[_0x72a0('0x91')](_0x47fe64['model'],_0x47fe64[_0x72a0('0x80')]);_0x1df6fc[_0x72a0('0x92')]=_[_0x72a0('0x91')](_0x47fe64[_0x72a0('0xd')],qs[_0x72a0('0x93')](_0x2cb292[_0x72a0('0x80')][_0x72a0('0x93')]));_0x1df6fc['attributes']=_0x1df6fc[_0x72a0('0x92')][_0x72a0('0x87')]?_0x1df6fc[_0x72a0('0x92')]:_0x47fe64[_0x72a0('0xd')];if(!_0x2cb292[_0x72a0('0x80')][_0x72a0('0x94')]('nolimit')){_0x1df6fc[_0x72a0('0x95')]=qs['limit'](_0x2cb292[_0x72a0('0x80')][_0x72a0('0x95')]);_0x1df6fc[_0x72a0('0x96')]=qs[_0x72a0('0x96')](_0x2cb292[_0x72a0('0x80')]['offset']);}_0x1df6fc[_0x72a0('0x97')]=qs[_0x72a0('0x98')](_0x2cb292['query'][_0x72a0('0x98')]);_0x1df6fc[_0x72a0('0x7e')]=qs[_0x72a0('0x90')](_[_0x72a0('0x99')](_0x2cb292['query'],_0x47fe64[_0x72a0('0x90')]));if(_0x2cb292[_0x72a0('0x80')][_0x72a0('0x6')]){_0x1df6fc[_0x72a0('0x7e')]=_[_0x72a0('0x9a')](_0x1df6fc[_0x72a0('0x7e')],{'$or':_[_0x72a0('0xb')](_0x7450c7,function(_0x1d2dfb){if(_0x1d2dfb[_0x72a0('0x12')][_0x72a0('0x9b')]!==_0x72a0('0x9c')){var _0x109e9e={};_0x109e9e[_0x1d2dfb['field']]={'$like':'%'+_0x2cb292[_0x72a0('0x80')][_0x72a0('0x6')]+'%'};return _0x109e9e;}})});}var _0xe0411e=[];var _0x3cbbcd=null;var _0xada6ad={};if(_0x14f61a){_0x3cbbcd=_[_0x72a0('0x8a')](_0x523bd0,[_0x72a0('0xf'),_0x14f61a[_0x72a0('0xf')]]);if(_0x3cbbcd['field']){_0xada6ad={};if(_0xa65d14[_0x72a0('0x13')]==='AnalyticExtractedReport'){_0xada6ad[_0x3cbbcd['foreignKey']]=_[_0x72a0('0xb')](_0x14f61a['associatedResources'],'id');}else{_0xada6ad[_0x3cbbcd['foreignKey']]=_0x14f61a[_0x72a0('0xe')];}_0xe0411e['push'](_0xada6ad);}else{_0x1df6fc[_0x72a0('0x7e')]['id']=_0x14f61a[_0x72a0('0xe')];}}else{for(var _0xb4cdec=0x0;_0xb4cdec<_0x1238a3['length'];_0xb4cdec++){_0x3cbbcd=_[_0x72a0('0x8a')](_0x523bd0,[_0x72a0('0xf'),_0x1238a3[_0xb4cdec][_0x72a0('0xf')]]);if(_0x3cbbcd[_0x72a0('0x7')]){_0xada6ad={};_0xada6ad[_0x3cbbcd[_0x72a0('0x9d')]]=_0x1238a3[_0xb4cdec]['associatedResources'];_0xe0411e[_0x72a0('0x8c')](_0xada6ad);}else{if(!_0x1df6fc[_0x72a0('0x7e')]['id'])_0x1df6fc[_0x72a0('0x7e')]['id']=[];_0x1238a3[_0xb4cdec]['associatedResources'][_0x72a0('0x9e')](function(_0x2e3eb0){_0x1df6fc[_0x72a0('0x7e')]['id']['push'](_0x2e3eb0);});}}}if(!_[_0x72a0('0x86')](_0xe0411e)){_0x1df6fc[_0x72a0('0x7e')]=_[_0x72a0('0x9a')](_0x1df6fc[_0x72a0('0x7e')],{'$and':{'$or':_0xe0411e}});}_0x1df6fc=_[_0x72a0('0x9a')]({},_0x1df6fc,_0x2cb292[_0x72a0('0x9f')]);if(_0x14f61a&&!_0x14f61a[_0x72a0('0x8d')]&&_0xa65d14[_0x72a0('0x13')]===_0x72a0('0xa0')){if(_0x2cb292['query'][_0x72a0('0xa1')]){_0x1df6fc[_0x72a0('0xa2')]=[{'all':!![]}];}return _0x335b7c[_0xa65d14[_0x72a0('0x13')]][_0x72a0('0x9')](_0x1df6fc)[_0x72a0('0xa')](function(_0x5b72b7){var _0x311dcd=[];_0x5b72b7[_0x72a0('0x9e')](function(_0x1c95fc){var _0x4124e7;switch(_0x1c95fc['reportType']){case _0x72a0('0xa3'):_0x4124e7=_[_0x72a0('0x8a')](_0x14f61a[_0x72a0('0xe')],function(_0x59d3a7){return _0x59d3a7['id']===_0x1c95fc['reportId']&&_0x59d3a7[_0x72a0('0x12')]===_0x72a0('0xa4');});break;case _0x72a0('0xa5'):_0x4124e7=_[_0x72a0('0x8a')](_0x14f61a[_0x72a0('0xe')],function(_0x56e9c0){return _0x56e9c0['id']===_0x1c95fc['reportId']&&_0x56e9c0['type']===_0x72a0('0xa6');});break;}if(_0x4124e7)_0x311dcd['push'](_0x1c95fc);});_0x432656[_0x72a0('0xa7')]=_0x311dcd['length'];_0x432656['rows']=_0x311dcd;return _0x432656;});}else{return _0x335b7c[_0xa65d14['childModel']]['count']({'where':_0x1df6fc[_0x72a0('0x7e')]})[_0x72a0('0xa')](function(_0x153802){_0x432656[_0x72a0('0xa7')]=_0x153802;if(_0x2cb292['query'][_0x72a0('0xa1')]){if(_0xa65d14[_0x72a0('0x13')]==='CmContact'){_0x1df6fc[_0x72a0('0xa2')]=[{'model':_0x335b7c[_0x72a0('0xa8')],'as':'Tags','attributes':['id',_0x72a0('0xf'),_0x72a0('0xa9')],'required':_0x2cb292[_0x72a0('0x80')][_0x72a0('0xaa')]?!![]:![]},{'model':_0x335b7c['Tag'],'as':'ThroughTags','attributes':['id',_0x72a0('0xf'),_0x72a0('0xa9')],'through':_0x2cb292[_0x72a0('0x80')][_0x72a0('0xaa')]?{'attributes':[],'where':{'TagId':_0x2cb292[_0x72a0('0x80')][_0x72a0('0xaa')]||undefined}}:{},'required':_0x2cb292['query']['tag']?!![]:![]}];}else{_0x1df6fc[_0x72a0('0xa2')]=[{'all':!![]}];}}return _0x335b7c[_0xa65d14[_0x72a0('0x13')]]['findAll'](_0x1df6fc);})[_0x72a0('0xa')](function(_0x3a8fee){_0x432656[_0x72a0('0xab')]=_0x3a8fee;if(_0x3eb3b5===_0x72a0('0x57')&&_0x2cb292[_0x72a0('0x80')][_0x72a0('0xac')]===_0x72a0('0xad')){var _0x56bdf5=[];for(var _0x42e186=0x0;_0x42e186<_0x432656[_0x72a0('0xab')][_0x72a0('0x87')];_0x42e186++){_0x56bdf5['push'](_0x48f178(_0x72a0('0xae'),_0x432656[_0x72a0('0xab')][_0x42e186][_0x72a0('0xaf')]));_0x56bdf5[_0x72a0('0x8c')](_0x48f178(_0x72a0('0xb0'),_0x432656['rows'][_0x42e186][_0x72a0('0xaf')]));_0x56bdf5[_0x72a0('0x8c')](_0x48f178(_0x72a0('0xb1'),_0x432656[_0x72a0('0xab')][_0x42e186][_0x72a0('0xaf')]));_0x56bdf5[_0x72a0('0x8c')](_0x48f178('mail',_0x432656[_0x72a0('0xab')][_0x42e186][_0x72a0('0xaf')]));_0x56bdf5[_0x72a0('0x8c')](_0x48f178(_0x72a0('0xb2'),_0x432656[_0x72a0('0xab')][_0x42e186][_0x72a0('0xaf')]));_0x56bdf5[_0x72a0('0x8c')](_0x48f178(_0x72a0('0xb3'),_0x432656[_0x72a0('0xab')][_0x42e186]['dataValues']));}return Promise[_0x72a0('0x8e')](_0x56bdf5)['then'](function(){return _0x432656;});}return _0x432656;});}});}}});};
\ No newline at end of file
+var _0xacf4=['user_profiles','section','mergeResources','Invalid\x20section\x20\x27','UserProfileSection','find','params','all','isEmpty','union','ignore','push','autoAssociation','length','rawAttributes','keys','filters','intersection','attributes','hasOwnProperty','offset','order','sort','pick','foreignKey','forEach','merge','options','includeAll','reportType','default','CustomReports','count','include','Tags','color','tag','rows','openTabs','true','chat','dataValues','sms','fax','whatsapp','../../components/parsers/qs','squel','exports','models','filter','field','then','associatedResources','map','catch','value','model','findAll','UserProfileResource','AnalyticExtractedReport','resourceId','type','toLowerCase','childModel','SquareProject','SquareOdbc','squarerecordings','SquareProjects','name','projectName','projects','JscriptyProject','contacts','CmContact','parentSections','ListId','lists','CmList','companies','CmCompany','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','VoiceContext','membername','User','agent','Telephones','role','telephone','VoiceQueues','queue','inbound','QueueCampaigns','VoiceQueue','outbound','VoiceMusicOnHold','chanspies','VoiceChanSpy','VoicePrefix','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','whatsappaccounts','WhatsappAccount','teams','Team','queuecampaigns','users','agents','telephones','Users','admin','user','Agents','zendeskaccounts','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','intervals','pauses','Pause','Schedule','sounds','Tag','templates','triggers','trunks','Trunk','variables','Variable','plugins','Plugin','reportId','metrics','AnalyticMetric','charAt','slice','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','user_has_','_interactions','where','sequelize','query','toString','OpenTabs','define','UserProfile'];(function(_0x445198,_0x4aa352){var _0x2efde8=function(_0x9e9f29){while(--_0x9e9f29){_0x445198['push'](_0x445198['shift']());}};_0x2efde8(++_0x4aa352);}(_0xacf4,0xe7));var _0x4acf=function(_0x5657c1,_0x11a1fd){_0x5657c1=_0x5657c1-0x0;var _0x890744=_0xacf4[_0x5657c1];return _0x890744;};'use strict';var _=require('lodash');var attributes=require('./userProfile.attributes');var qs=require(_0x4acf('0x0'));var squel=require(_0x4acf('0x1'));module[_0x4acf('0x2')]=function(_0x21fb75){var _0x25709c=_0x21fb75[_0x4acf('0x3')];function _0x145264(_0x5cf22d,_0x380435){return new Promise(function(_0x2124c8,_0x4e0c43){if(!_0x380435)return _0x2124c8(null);var _0x24bf24=_0x380435[_0x4acf('0x4')]?{[_0x380435[_0x4acf('0x4')][_0x4acf('0x5')]]:_0x380435[_0x4acf('0x4')]['value']}:undefined;return _0x25709c[_0x5cf22d]['findAll']({'where':_0x24bf24,'raw':!![]})[_0x4acf('0x6')](function(_0x59f559){_0x380435[_0x4acf('0x7')]=_[_0x4acf('0x8')](_0x59f559,'id');_0x2124c8(_0x380435);})[_0x4acf('0x9')](function(_0x4ff233){_0x4e0c43(_0x4ff233);});});}function _0x290ca7(_0x57f6cb,_0x5b0b12){return new Promise(function(_0x5f22d9,_0x1fe474){var _0x540c8f=_0x57f6cb['filter']?{[_0x57f6cb[_0x4acf('0x4')][_0x4acf('0x5')]]:_0x57f6cb[_0x4acf('0x4')][_0x4acf('0xa')]}:undefined;return _0x25709c[_0x57f6cb[_0x4acf('0xb')]][_0x4acf('0xc')]({'where':_0x540c8f,'raw':!![]})[_0x4acf('0x6')](function(_0x15386a){_0x5b0b12[_0x4acf('0x7')]=_[_0x4acf('0x8')](_0x15386a,function(_0x2741d3){return _0x2741d3['name'];});_0x5f22d9(_0x5b0b12);})[_0x4acf('0x9')](function(_0x57d8e0){_0x1fe474(_0x57d8e0);});});}function _0x34cec1(_0x4041c8,_0xccf970,_0x5d934a){if(!_0xccf970)return Promise['resolve'](null);return new Promise(function(_0x13d10e,_0x40cb8d){return _0x25709c[_0x4acf('0xd')]['findAll']({'where':{'sectionId':_0xccf970['id']},'raw':!![]})[_0x4acf('0x6')](function(_0x137302){if(_0x4041c8[_0x4acf('0x5')]&&_0x4041c8[_0x4acf('0x5')]!=='id'){_0xccf970[_0x4acf('0x7')]=_[_0x4acf('0x8')](_0x137302,function(_0x2049ba){return _0x2049ba[_0x4041c8[_0x4acf('0x5')]];});}else{if(_0x5d934a===_0x4acf('0xe')){_0xccf970[_0x4acf('0x7')]=_[_0x4acf('0x8')](_0x137302,function(_0x5f0284){return{'id':_0x5f0284[_0x4acf('0xf')],'type':_0x5f0284[_0x4acf('0x10')]};});}else{_0xccf970['associatedResources']=_[_0x4acf('0x8')](_0x137302,function(_0x17775f){return _0x17775f['resourceId'];});}}_0x13d10e(_0xccf970);})[_0x4acf('0x9')](function(_0x34d154){_0x40cb8d(_0x34d154);});});}function _0x433b7a(_0x454555,_0x53885f){var _0x1a2286={'parentSections':[]};switch(_0x454555[_0x4acf('0x11')]()){case'squareprojects':_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x13');break;case'odbc':_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x14');break;case _0x4acf('0x15'):_0x1a2286[_0x4acf('0x12')]='SquareRecording';_0x1a2286['parentSections']=[{'name':_0x4acf('0x16'),'field':_0x4acf('0x17'),'foreignKey':_0x4acf('0x18')}];break;case _0x4acf('0x19'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x1a');break;case _0x4acf('0x1b'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x1c');_0x1a2286[_0x4acf('0x1d')]=[{'name':'Lists','field':'id','foreignKey':_0x4acf('0x1e')}];break;case _0x4acf('0x1f'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x20');break;case _0x4acf('0x21'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x22');break;case'globalcustomfields':_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x23');break;case _0x4acf('0x24'):_0x1a2286['childModel']=_0x4acf('0x25');break;case _0x4acf('0x26'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x27');break;case'faxqueues':_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x28');break;case _0x4acf('0x29'):_0x1a2286['childModel']=_0x4acf('0x2a');break;case _0x4acf('0x2b'):case _0x4acf('0x2c'):case _0x4acf('0x2d'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x2e');break;case'contexts':_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x2f');break;case'voicemails':_0x1a2286[_0x4acf('0x12')]='VoiceMail';break;case'voicerecordings':_0x1a2286['childModel']='VoiceRecording';_0x1a2286['parentSections']=[{'name':'Agents','field':'name','foreignKey':_0x4acf('0x30'),'model':_0x4acf('0x31'),'filter':{'field':'role','value':[_0x4acf('0x32')]}},{'name':_0x4acf('0x33'),'field':_0x4acf('0x17'),'foreignKey':_0x4acf('0x30'),'model':_0x4acf('0x31'),'filter':{'field':_0x4acf('0x34'),'value':[_0x4acf('0x35')]}},{'name':_0x4acf('0x36'),'field':_0x4acf('0x17'),'foreignKey':_0x4acf('0x37'),'model':'VoiceQueue','filter':{'field':'type','value':[_0x4acf('0x38')]}},{'name':_0x4acf('0x39'),'field':'name','foreignKey':_0x4acf('0x37'),'model':_0x4acf('0x3a'),'filter':{'field':_0x4acf('0x10'),'value':[_0x4acf('0x3b')]}}];break;case'musiconholds':_0x1a2286['childModel']=_0x4acf('0x3c');break;case _0x4acf('0x3d'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x3e');break;case'voiceprefixes':_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x3f');break;case'ivrcampaigns':_0x1a2286['childModel']='Campaign';break;case'mailqueues':_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x40');break;case _0x4acf('0x41'):_0x1a2286['childModel']=_0x4acf('0x42');break;case _0x4acf('0x43'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x44');break;case _0x4acf('0x45'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x46');break;case _0x4acf('0x47'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x48');break;case _0x4acf('0x49'):_0x1a2286['childModel']=_0x4acf('0x4a');break;case _0x4acf('0x4b'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x4c');break;case _0x4acf('0x4d'):_0x1a2286['childModel']='WhatsappQueue';break;case _0x4acf('0x4e'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x4f');break;case _0x4acf('0x50'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x51');break;case'voicequeues':case _0x4acf('0x52'):_0x1a2286['childModel']=_0x4acf('0x3a');if(_0x53885f){_0x1a2286[_0x4acf('0x1d')]=[{'name':'VoiceQueues'},{'name':'QueueCampaigns'}];}break;case _0x4acf('0x53'):case _0x4acf('0x54'):case _0x4acf('0x55'):_0x1a2286[_0x4acf('0x12')]='User';if(_0x53885f){_0x1a2286[_0x4acf('0x1d')]=[{'name':_0x4acf('0x56'),'filter':{'field':_0x4acf('0x34'),'value':[_0x4acf('0x57'),_0x4acf('0x58')]},'ignore':!![]},{'name':_0x4acf('0x59')},{'name':_0x4acf('0x33')}];}break;case _0x4acf('0x5a'):_0x1a2286['childModel']='ZendeskAccount';break;case _0x4acf('0x5b'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x5c');break;case _0x4acf('0x5d'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x5e');break;case _0x4acf('0x5f'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x60');break;case _0x4acf('0x61'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x62');break;case'zohoaccounts':_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x63');break;case _0x4acf('0x64'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x31');break;case _0x4acf('0x65'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x66');break;case _0x4acf('0x67'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x68');break;case _0x4acf('0x69'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x6a');break;case _0x4acf('0x6b'):_0x1a2286[_0x4acf('0x12')]='Interval';break;case _0x4acf('0x6c'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x6d');break;case'scheduler':_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x6e');break;case _0x4acf('0x6f'):_0x1a2286[_0x4acf('0x12')]='Sound';break;case'tags':_0x1a2286['childModel']=_0x4acf('0x70');break;case _0x4acf('0x71'):_0x1a2286[_0x4acf('0x12')]='Template';break;case _0x4acf('0x72'):_0x1a2286[_0x4acf('0x12')]='Trigger';break;case _0x4acf('0x73'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x74');break;case _0x4acf('0x75'):_0x1a2286['childModel']=_0x4acf('0x76');break;case _0x4acf('0x77'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x78');break;case'extractedreports':_0x1a2286[_0x4acf('0x12')]='AnalyticExtractedReport';_0x1a2286[_0x4acf('0x1d')]=[{'name':'Reports','field':'id','foreignKey':_0x4acf('0x79')}];break;case _0x4acf('0x7a'):_0x1a2286[_0x4acf('0x12')]=_0x4acf('0x7b');break;}return _0x1a2286;}function _0x547128(_0x4df6a2,_0x4cb554){var _0x14b634=_0x4df6a2[_0x4acf('0x7c')](0x0)['toUpperCase']()+_0x4df6a2[_0x4acf('0x7d')](0x1);var _0xcc2b78={'type':_0x25709c['Sequelize'][_0x4acf('0x7e')][_0x4acf('0x7f')],'raw':!![]};return new Promise(function(_0x4bebb2,_0x2707a9){var _0x2dc78c=squel[_0x4acf('0x80')]()['field'](_0x4acf('0x81')+_0x14b634+_0x4acf('0x82'),'id')[_0x4acf('0x5')](_0x4acf('0x83'))['from'](_0x4acf('0x84')+_0x4df6a2+_0x4acf('0x85'),'ui')[_0x4acf('0x86')]('ui.UserId\x20=\x20?',_0x4cb554['id']);return _0x25709c[_0x4acf('0x87')][_0x4acf('0x88')](_0x2dc78c[_0x4acf('0x89')](),_0xcc2b78)[_0x4acf('0x6')](function(_0x26d4c7){_0x4cb554[_0x14b634+_0x4acf('0x8a')]=_0x26d4c7;_0x4bebb2(_0x26d4c7);})[_0x4acf('0x9')](function(_0x377365){_0x2707a9(_0x377365);});});}return _0x21fb75[_0x4acf('0x8b')](_0x4acf('0x8c'),attributes,{'tableName':_0x4acf('0x8d'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x660b3c){var _0x237c8b={'raw':![],'where':{}};var _0x2f76fb={};var _0x103a99={'count':0x0,'rows':[]};var _0x47e311=_0x660b3c[_0x4acf('0x88')][_0x4acf('0x8e')];var _0x276dc5=_0x660b3c[_0x4acf('0x88')][_0x4acf('0x8f')]||![];var _0x220214=_0x433b7a(_0x47e311,_0x276dc5);if(!_0x220214[_0x4acf('0x12')])throw new Error(_0x4acf('0x90')+_0x47e311+'\x27');var _0x4d0d2b=[{'name':_0x47e311}];if(!_['isEmpty'](_0x220214[_0x4acf('0x1d')]))_0x4d0d2b=_0x220214['parentSections'];var _0x379fb3=[];for(var _0x4bfd3c=0x0;_0x4bfd3c<_0x4d0d2b['length'];_0x4bfd3c++){_0x379fb3['push'](_0x25709c[_0x4acf('0x91')][_0x4acf('0x92')]({'where':{'userProfileId':_0x660b3c[_0x4acf('0x93')]['id'],'name':_0x4d0d2b[_0x4bfd3c][_0x4acf('0x17')]},'raw':!![]}));}return Promise[_0x4acf('0x94')](_0x379fb3)[_0x4acf('0x6')](function(_0x5215f2){var _0x5a042a=_['filter'](_0x5215f2,function(_0xd4d4c6){return _0xd4d4c6?_0xd4d4c6:undefined;});var _0x2d6e60=_[_0x4acf('0x4')](_0x4d0d2b,['ignore',!![]]);var _0x1fe198=_[_0x4acf('0x95')](_0x5a042a)&&_[_0x4acf('0x95')](_0x2d6e60)?null:_[_0x4acf('0x96')](_0x2d6e60,_0x5a042a);if(!_0x1fe198)return null;var _0x36731b=[];for(var _0x219679=0x0;_0x219679<_0x1fe198['length'];_0x219679++){var _0x278b96=_['find'](_0x4d0d2b,function(_0x166d31){return _0x1fe198[_0x219679]?_0x166d31[_0x4acf('0x17')]===_0x1fe198[_0x219679][_0x4acf('0x17')]:null;});if(_0x278b96){if(_0x1fe198[_0x219679][_0x4acf('0x97')]){_0x36731b[_0x4acf('0x98')](_0x145264(_0x220214[_0x4acf('0x12')],_0x1fe198[_0x219679]));}else{if(!_0x1fe198[_0x219679][_0x4acf('0x99')]){_0x36731b[_0x4acf('0x98')](_0x34cec1(_0x278b96,_0x1fe198[_0x219679],_0x220214[_0x4acf('0x12')]));}else{if(_0x278b96[_0x4acf('0xb')]){_0x36731b[_0x4acf('0x98')](_0x290ca7(_0x278b96,_0x1fe198[_0x219679]));}}}}}return Promise[_0x4acf('0x94')](_0x36731b);})['then'](function(_0x11f356){var _0xacca91=_0x11f356;var _0x40790e=null;if(_0xacca91){_0x40790e=_0xacca91[_0x4acf('0x9a')]===0x1?_0xacca91[0x0]:null;}if(!_0x40790e&&!_0xacca91)return _0x103a99;var _0x1ce47a=_0x25709c[_0x220214[_0x4acf('0x12')]][_0x4acf('0x9b')];_0x2f76fb[_0x4acf('0xb')]=_[_0x4acf('0x9c')](_0x1ce47a);_0x2f76fb[_0x4acf('0x88')]=_['keys'](_0x660b3c[_0x4acf('0x88')]);_0x2f76fb[_0x4acf('0x9d')]=_['intersection'](_0x2f76fb[_0x4acf('0xb')],_0x2f76fb[_0x4acf('0x88')]);_0x237c8b['attributes']=_[_0x4acf('0x9e')](_0x2f76fb['model'],qs['fields'](_0x660b3c[_0x4acf('0x88')]['fields']));_0x237c8b[_0x4acf('0x9f')]=_0x237c8b[_0x4acf('0x9f')][_0x4acf('0x9a')]?_0x237c8b[_0x4acf('0x9f')]:_0x2f76fb['model'];if(!_0x660b3c[_0x4acf('0x88')][_0x4acf('0xa0')]('nolimit')){_0x237c8b['limit']=qs['limit'](_0x660b3c[_0x4acf('0x88')]['limit']);_0x237c8b[_0x4acf('0xa1')]=qs[_0x4acf('0xa1')](_0x660b3c[_0x4acf('0x88')]['offset']);}_0x237c8b[_0x4acf('0xa2')]=qs[_0x4acf('0xa3')](_0x660b3c['query'][_0x4acf('0xa3')]);_0x237c8b[_0x4acf('0x86')]=qs['filters'](_[_0x4acf('0xa4')](_0x660b3c[_0x4acf('0x88')],_0x2f76fb[_0x4acf('0x9d')]));if(_0x660b3c[_0x4acf('0x88')][_0x4acf('0x4')]){_0x237c8b[_0x4acf('0x86')]=_['merge'](_0x237c8b[_0x4acf('0x86')],{'$or':_['map'](_0x1ce47a,function(_0x8c3c67){if(_0x8c3c67[_0x4acf('0x10')]['key']!=='VIRTUAL'){var _0x47b50a={};_0x47b50a[_0x8c3c67[_0x4acf('0x5')]]={'$like':'%'+_0x660b3c['query']['filter']+'%'};return _0x47b50a;}})});}var _0x51ddb0=[];var _0x25b078=null;var _0x5e17aa={};if(_0x40790e){_0x25b078=_[_0x4acf('0x92')](_0x4d0d2b,[_0x4acf('0x17'),_0x40790e[_0x4acf('0x17')]]);if(_0x25b078[_0x4acf('0x5')]){_0x5e17aa={};if(_0x220214[_0x4acf('0x12')]==='AnalyticExtractedReport'){_0x5e17aa[_0x25b078['foreignKey']]=_[_0x4acf('0x8')](_0x40790e[_0x4acf('0x7')],'id');}else{_0x5e17aa[_0x25b078[_0x4acf('0xa5')]]=_0x40790e[_0x4acf('0x7')];}_0x51ddb0[_0x4acf('0x98')](_0x5e17aa);}else{_0x237c8b['where']['id']=_0x40790e[_0x4acf('0x7')];}}else{for(var _0x455887=0x0;_0x455887<_0xacca91[_0x4acf('0x9a')];_0x455887++){_0x25b078=_[_0x4acf('0x92')](_0x4d0d2b,[_0x4acf('0x17'),_0xacca91[_0x455887][_0x4acf('0x17')]]);if(_0x25b078[_0x4acf('0x5')]){_0x5e17aa={};_0x5e17aa[_0x25b078['foreignKey']]=_0xacca91[_0x455887][_0x4acf('0x7')];_0x51ddb0['push'](_0x5e17aa);}else{if(!_0x237c8b[_0x4acf('0x86')]['id'])_0x237c8b[_0x4acf('0x86')]['id']=[];_0xacca91[_0x455887][_0x4acf('0x7')][_0x4acf('0xa6')](function(_0x416108){_0x237c8b['where']['id'][_0x4acf('0x98')](_0x416108);});}}}if(!_['isEmpty'](_0x51ddb0)){_0x237c8b[_0x4acf('0x86')]=_[_0x4acf('0xa7')](_0x237c8b['where'],{'$and':{'$or':_0x51ddb0}});}_0x237c8b=_[_0x4acf('0xa7')]({},_0x237c8b,_0x660b3c[_0x4acf('0xa8')]);if(_0x40790e&&!_0x40790e[_0x4acf('0x99')]&&_0x220214[_0x4acf('0x12')]===_0x4acf('0xe')){if(_0x660b3c['query'][_0x4acf('0xa9')]){_0x237c8b['include']=[{'all':!![]}];}return _0x25709c[_0x220214['childModel']][_0x4acf('0xc')](_0x237c8b)[_0x4acf('0x6')](function(_0x14918d){var _0x1f0efb=[];_0x14918d['forEach'](function(_0x4cbb0f){var _0xf8c35b;switch(_0x4cbb0f[_0x4acf('0xaa')]){case _0x4acf('0xab'):_0xf8c35b=_[_0x4acf('0x92')](_0x40790e[_0x4acf('0x7')],function(_0x3815ec){return _0x3815ec['id']===_0x4cbb0f[_0x4acf('0x79')]&&_0x3815ec[_0x4acf('0x10')]==='DefaultReports';});break;case'custom':_0xf8c35b=_[_0x4acf('0x92')](_0x40790e[_0x4acf('0x7')],function(_0x3b44e8){return _0x3b44e8['id']===_0x4cbb0f[_0x4acf('0x79')]&&_0x3b44e8[_0x4acf('0x10')]===_0x4acf('0xac');});break;}if(_0xf8c35b)_0x1f0efb[_0x4acf('0x98')](_0x4cbb0f);});_0x103a99[_0x4acf('0xad')]=_0x1f0efb[_0x4acf('0x9a')];_0x103a99['rows']=_0x1f0efb;return _0x103a99;});}else{return _0x25709c[_0x220214[_0x4acf('0x12')]][_0x4acf('0xad')]({'where':_0x237c8b[_0x4acf('0x86')]})[_0x4acf('0x6')](function(_0x37ecd2){_0x103a99[_0x4acf('0xad')]=_0x37ecd2;if(_0x660b3c[_0x4acf('0x88')][_0x4acf('0xa9')]){if(_0x220214[_0x4acf('0x12')]===_0x4acf('0x1c')){_0x237c8b[_0x4acf('0xae')]=[{'model':_0x25709c[_0x4acf('0x70')],'as':_0x4acf('0xaf'),'attributes':['id','name',_0x4acf('0xb0')],'required':_0x660b3c['query'][_0x4acf('0xb1')]?!![]:![]},{'model':_0x25709c[_0x4acf('0x70')],'as':'ThroughTags','attributes':['id',_0x4acf('0x17'),_0x4acf('0xb0')],'through':_0x660b3c['query']['tag']?{'attributes':[],'where':{'TagId':_0x660b3c[_0x4acf('0x88')][_0x4acf('0xb1')]||undefined}}:{},'required':_0x660b3c['query']['tag']?!![]:![]}];}else{_0x237c8b[_0x4acf('0xae')]=[{'all':!![]}];}}return _0x25709c[_0x220214[_0x4acf('0x12')]][_0x4acf('0xc')](_0x237c8b);})[_0x4acf('0x6')](function(_0x4ae333){_0x103a99[_0x4acf('0xb2')]=_0x4ae333;if(_0x47e311===_0x4acf('0x59')&&_0x660b3c[_0x4acf('0x88')][_0x4acf('0xb3')]===_0x4acf('0xb4')){var _0x367ad4=[];for(var _0x1091cb=0x0;_0x1091cb<_0x103a99['rows'][_0x4acf('0x9a')];_0x1091cb++){_0x367ad4[_0x4acf('0x98')](_0x547128(_0x4acf('0xb5'),_0x103a99['rows'][_0x1091cb][_0x4acf('0xb6')]));_0x367ad4[_0x4acf('0x98')](_0x547128(_0x4acf('0xb7'),_0x103a99[_0x4acf('0xb2')][_0x1091cb][_0x4acf('0xb6')]));_0x367ad4[_0x4acf('0x98')](_0x547128(_0x4acf('0xb8'),_0x103a99[_0x4acf('0xb2')][_0x1091cb]['dataValues']));_0x367ad4['push'](_0x547128('mail',_0x103a99['rows'][_0x1091cb]['dataValues']));_0x367ad4[_0x4acf('0x98')](_0x547128('openchannel',_0x103a99[_0x4acf('0xb2')][_0x1091cb][_0x4acf('0xb6')]));_0x367ad4['push'](_0x547128(_0x4acf('0xb9'),_0x103a99[_0x4acf('0xb2')][_0x1091cb][_0x4acf('0xb6')]));}return Promise[_0x4acf('0x94')](_0x367ad4)[_0x4acf('0x6')](function(){return _0x103a99;});}return _0x103a99;});}});}}});};
\ No newline at end of file
index d974884..8aea4d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd49=['code','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','socket.io-emitter','./userProfile.socket','register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','error'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0xfd49,0x121));var _0x9fd4=function(_0x510dbc,_0x80f9ed){_0x510dbc=_0x510dbc-0x0;var _0xc9094e=_0xfd49[_0x510dbc];return _0xc9094e;};'use strict';var _=require(_0x9fd4('0x0'));var util=require(_0x9fd4('0x1'));var moment=require(_0x9fd4('0x2'));var BPromise=require(_0x9fd4('0x3'));var rs=require(_0x9fd4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9fd4('0x5'))['db'];var utils=require(_0x9fd4('0x6'));var logger=require(_0x9fd4('0x7'))(_0x9fd4('0x8'));var config=require(_0x9fd4('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9fd4('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x9fd4('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x9fd4('0xc'))(new Redis(config['redis']));require(_0x9fd4('0xd'))[_0x9fd4('0xe')](socket);function respondWithRpcPromise(_0x4c2f58,_0x191bc2,_0x13e5fb){return new BPromise(function(_0x18c0ec,_0x4a7aa6){return client[_0x9fd4('0xf')](_0x4c2f58,_0x13e5fb)[_0x9fd4('0x10')](function(_0x38f946){logger[_0x9fd4('0x11')](_0x9fd4('0x12'),_0x191bc2,_0x9fd4('0x13'));logger[_0x9fd4('0x14')](_0x9fd4('0x15'),_0x191bc2,_0x9fd4('0x13'),JSON['stringify'](_0x38f946));if(_0x38f946[_0x9fd4('0x16')]){if(_0x38f946[_0x9fd4('0x16')][_0x9fd4('0x17')]===0x1f4){logger['error'](_0x9fd4('0x12'),_0x191bc2,_0x38f946[_0x9fd4('0x16')][_0x9fd4('0x18')]);return _0x4a7aa6(_0x38f946[_0x9fd4('0x16')][_0x9fd4('0x18')]);}logger['error']('UserProfile,\x20%s,\x20%s',_0x191bc2,_0x38f946['error'][_0x9fd4('0x18')]);return _0x18c0ec(_0x38f946[_0x9fd4('0x16')][_0x9fd4('0x18')]);}else{logger[_0x9fd4('0x11')](_0x9fd4('0x12'),_0x191bc2,_0x9fd4('0x13'));_0x18c0ec(_0x38f946[_0x9fd4('0x19')][_0x9fd4('0x18')]);}})['catch'](function(_0x31a657){logger[_0x9fd4('0x16')](_0x9fd4('0x12'),_0x191bc2,_0x31a657);_0x4a7aa6(_0x31a657);});});}
\ No newline at end of file
+var _0xcde7=['stringify','error','code','message','result','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./userProfile.socket','register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','UserProfile,\x20%s,\x20%s,\x20%s'];(function(_0x41a65e,_0x577a58){var _0x262d9e=function(_0x151b1d){while(--_0x151b1d){_0x41a65e['push'](_0x41a65e['shift']());}};_0x262d9e(++_0x577a58);}(_0xcde7,0x65));var _0x7cde=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xcde7[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7cde('0x0'));var BPromise=require(_0x7cde('0x1'));var rs=require(_0x7cde('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7cde('0x3'));var logger=require('../../config/logger')(_0x7cde('0x4'));var config=require(_0x7cde('0x5'));var jayson=require(_0x7cde('0x6'));var client=jayson[_0x7cde('0x7')][_0x7cde('0x8')]({'port':0x232a});config[_0x7cde('0x9')]=_['defaults'](config[_0x7cde('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x7cde('0xa'))(new Redis(config[_0x7cde('0x9')]));require(_0x7cde('0xb'))[_0x7cde('0xc')](socket);function respondWithRpcPromise(_0x4e7b87,_0x1cc16f,_0x5e590a){return new BPromise(function(_0x15ed09,_0x13d4f6){return client[_0x7cde('0xd')](_0x4e7b87,_0x5e590a)[_0x7cde('0xe')](function(_0x174446){logger[_0x7cde('0xf')](_0x7cde('0x10'),_0x1cc16f,_0x7cde('0x11'));logger['debug'](_0x7cde('0x12'),_0x1cc16f,_0x7cde('0x11'),JSON[_0x7cde('0x13')](_0x174446));if(_0x174446[_0x7cde('0x14')]){if(_0x174446[_0x7cde('0x14')][_0x7cde('0x15')]===0x1f4){logger[_0x7cde('0x14')](_0x7cde('0x10'),_0x1cc16f,_0x174446[_0x7cde('0x14')]['message']);return _0x13d4f6(_0x174446[_0x7cde('0x14')][_0x7cde('0x16')]);}logger[_0x7cde('0x14')](_0x7cde('0x10'),_0x1cc16f,_0x174446[_0x7cde('0x14')][_0x7cde('0x16')]);return _0x15ed09(_0x174446[_0x7cde('0x14')][_0x7cde('0x16')]);}else{logger[_0x7cde('0xf')](_0x7cde('0x10'),_0x1cc16f,_0x7cde('0x11'));_0x15ed09(_0x174446[_0x7cde('0x17')][_0x7cde('0x16')]);}})['catch'](function(_0x1199f5){logger[_0x7cde('0x14')](_0x7cde('0x10'),_0x1cc16f,_0x1199f5);_0x13d4f6(_0x1199f5);});});}
\ No newline at end of file
index cac27ae..bc5616b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca43=['removeListener','length','userProfile:','./userProfile.events','save','update','emit'];(function(_0x4ff482,_0x554bc7){var _0x5d873d=function(_0x5a4b41){while(--_0x5a4b41){_0x4ff482['push'](_0x4ff482['shift']());}};_0x5d873d(++_0x554bc7);}(_0xca43,0x15a));var _0x3ca4=function(_0x212626,_0xf13a11){_0x212626=_0x212626-0x0;var _0x1fb4a0=_0xca43[_0x212626];return _0x1fb4a0;};'use strict';var UserProfileEvents=require(_0x3ca4('0x0'));var events=[_0x3ca4('0x1'),'remove',_0x3ca4('0x2')];function createListener(_0x47bc48,_0x37c0f2){return function(_0x2dcd78){_0x37c0f2[_0x3ca4('0x3')](_0x47bc48,_0x2dcd78);};}function removeListener(_0x1c7cdf,_0x109e1a){return function(){UserProfileEvents[_0x3ca4('0x4')](_0x1c7cdf,_0x109e1a);};}exports['register']=function(_0x4564b2){for(var _0x218755=0x0,_0x1a6479=events[_0x3ca4('0x5')];_0x218755<_0x1a6479;_0x218755++){var _0x2ec1d5=events[_0x218755];var _0xf2c1c6=createListener(_0x3ca4('0x6')+_0x2ec1d5,_0x4564b2);UserProfileEvents['on'](_0x2ec1d5,_0xf2c1c6);}};
\ No newline at end of file
+var _0x0b81=['length','userProfile:','./userProfile.events','save','remove','update','emit'];(function(_0x3da31c,_0x15a2cb){var _0xba8d3e=function(_0x4659e5){while(--_0x4659e5){_0x3da31c['push'](_0x3da31c['shift']());}};_0xba8d3e(++_0x15a2cb);}(_0x0b81,0xe9));var _0x10b8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0b81[_0x3dd15e];return _0x231fd0;};'use strict';var UserProfileEvents=require(_0x10b8('0x0'));var events=[_0x10b8('0x1'),_0x10b8('0x2'),_0x10b8('0x3')];function createListener(_0x3b4e5f,_0x283c4a){return function(_0x53291c){_0x283c4a[_0x10b8('0x4')](_0x3b4e5f,_0x53291c);};}function removeListener(_0x2fb4ce,_0x5e312d){return function(){UserProfileEvents['removeListener'](_0x2fb4ce,_0x5e312d);};}exports['register']=function(_0x117322){for(var _0x17f5f3=0x0,_0x21bba4=events[_0x10b8('0x5')];_0x17f5f3<_0x21bba4;_0x17f5f3++){var _0x313e6e=events[_0x17f5f3];var _0x2a056b=createListener(_0x10b8('0x6')+_0x313e6e,_0x117322);UserProfileEvents['on'](_0x313e6e,_0x2a056b);}};
\ No newline at end of file
index ef2836b..7d8e8fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6e4=['../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','/describe','/:id','show','create','put','delete','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x372b25,_0x28586f){var _0x144245=function(_0x2b8095){while(--_0x2b8095){_0x372b25['push'](_0x372b25['shift']());}};_0x144245(++_0x28586f);}(_0xf6e4,0xcb));var _0x4f6e=function(_0x49e285,_0x4963e0){_0x49e285=_0x49e285-0x0;var _0x29d01a=_0xf6e4[_0x49e285];return _0x29d01a;};'use strict';var multer=require(_0x4f6e('0x0'));var util=require('util');var path=require(_0x4f6e('0x1'));var timeout=require(_0x4f6e('0x2'));var express=require(_0x4f6e('0x3'));var router=express[_0x4f6e('0x4')]();var fs_extra=require(_0x4f6e('0x5'));var auth=require(_0x4f6e('0x6'));var interaction=require(_0x4f6e('0x7'));var config=require(_0x4f6e('0x8'));var controller=require(_0x4f6e('0x9'));router[_0x4f6e('0xa')]('/',auth[_0x4f6e('0xb')](),controller['index']);router[_0x4f6e('0xa')](_0x4f6e('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x4f6e('0xa')](_0x4f6e('0xd'),auth['isAuthenticated'](),controller[_0x4f6e('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x4f6e('0xf')]);router[_0x4f6e('0x10')]('/:id',auth[_0x4f6e('0xb')](),controller['update']);router[_0x4f6e('0x11')](_0x4f6e('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x4f6e('0x12')]=router;
\ No newline at end of file
+var _0x3d1f=['get','isAuthenticated','index','/describe','describe','/:id','put','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller'];(function(_0x3ca675,_0x467e81){var _0x150ea3=function(_0xdb8371){while(--_0xdb8371){_0x3ca675['push'](_0x3ca675['shift']());}};_0x150ea3(++_0x467e81);}(_0x3d1f,0x13b));var _0xf3d1=function(_0x54692e,_0x482e99){_0x54692e=_0x54692e-0x0;var _0x3bda7d=_0x3d1f[_0x54692e];return _0x3bda7d;};'use strict';var multer=require(_0xf3d1('0x0'));var util=require(_0xf3d1('0x1'));var path=require(_0xf3d1('0x2'));var timeout=require(_0xf3d1('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf3d1('0x4'));var auth=require(_0xf3d1('0x5'));var interaction=require(_0xf3d1('0x6'));var config=require(_0xf3d1('0x7'));var controller=require(_0xf3d1('0x8'));router[_0xf3d1('0x9')]('/',auth[_0xf3d1('0xa')](),controller[_0xf3d1('0xb')]);router[_0xf3d1('0x9')](_0xf3d1('0xc'),auth[_0xf3d1('0xa')](),controller[_0xf3d1('0xd')]);router[_0xf3d1('0x9')](_0xf3d1('0xe'),auth[_0xf3d1('0xa')](),controller['show']);router['post']('/',auth[_0xf3d1('0xa')](),controller['create']);router[_0xf3d1('0xf')](_0xf3d1('0xe'),auth[_0xf3d1('0xa')](),controller['update']);router['delete']('/:id',auth[_0xf3d1('0xa')](),controller[_0xf3d1('0x10')]);module[_0xf3d1('0x11')]=router;
\ No newline at end of file
index 1f1c1da..5564f0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbffe=['exports','STRING','sequelize'];(function(_0x3ca829,_0xc55f17){var _0x3b416b=function(_0x592aae){while(--_0x592aae){_0x3ca829['push'](_0x3ca829['shift']());}};_0x3b416b(++_0xc55f17);}(_0xbffe,0x77));var _0xebff=function(_0x15e31b,_0x48b51a){_0x15e31b=_0x15e31b-0x0;var _0x3c7afe=_0xbffe[_0x15e31b];return _0x3c7afe;};'use strict';var Sequelize=require(_0xebff('0x0'));module[_0xebff('0x1')]={'name':{'type':Sequelize[_0xebff('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize['INTEGER'],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x4b0c=['STRING','sequelize','exports','INTEGER'];(function(_0x80d69e,_0x42590e){var _0x24de00=function(_0x25dadb){while(--_0x25dadb){_0x80d69e['push'](_0x80d69e['shift']());}};_0x24de00(++_0x42590e);}(_0x4b0c,0x139));var _0xc4b0=function(_0x47ea43,_0x2a757c){_0x47ea43=_0x47ea43-0x0;var _0x408518=_0x4b0c[_0x47ea43];return _0x408518;};'use strict';var Sequelize=require(_0xc4b0('0x0'));module[_0xc4b0('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0xc4b0('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xc4b0('0x3')],'allowNull':![]}};
\ No newline at end of file
index 4507c74..9072643 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4991=['hasOwnProperty','nolimit','order','sort','where','merge','type','filter','options','UserProfileResource','includeAll','include','findAll','rows','show','params','keys','find','create','body','catch','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length'];(function(_0x37854a,_0x59b0ac){var _0x11f882=function(_0x1950f2){while(--_0x1950f2){_0x37854a['push'](_0x37854a['shift']());}};_0x11f882(++_0x59b0ac);}(_0x4991,0xf7));var _0x1499=function(_0x4ff258,_0x458547){_0x4ff258=_0x4ff258-0x0;var _0x207367=_0x4991[_0x4ff258];return _0x207367;};'use strict';var emlformat=require(_0x1499('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1499('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1499('0x2'));var moment=require(_0x1499('0x3'));var BPromise=require(_0x1499('0x4'));var Mustache=require(_0x1499('0x5'));var util=require(_0x1499('0x6'));var path=require(_0x1499('0x7'));var sox=require(_0x1499('0x8'));var csv=require(_0x1499('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1499('0xa'));var _=require(_0x1499('0xb'));var squel=require(_0x1499('0xc'));var crypto=require(_0x1499('0xd'));var jsforce=require(_0x1499('0xe'));var deskjs=require(_0x1499('0xf'));var toCsv=require(_0x1499('0x9'));var querystring=require(_0x1499('0x10'));var Papa=require('papaparse');var Redis=require(_0x1499('0x11'));var authService=require(_0x1499('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1499('0x13'));var hardwareService=require(_0x1499('0x14'));var logger=require('../../config/logger')(_0x1499('0x15'));var utils=require(_0x1499('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3039ce,_0x274bc1){_0x274bc1=_0x274bc1||0xcc;return function(_0x34a928){if(_0x34a928){return _0x3039ce[_0x1499('0x17')](_0x274bc1);}return _0x3039ce[_0x1499('0x18')](_0x274bc1)['end']();};}function respondWithResult(_0x5f34f2,_0x308177){_0x308177=_0x308177||0xc8;return function(_0x4e5195){if(_0x4e5195){return _0x5f34f2[_0x1499('0x18')](_0x308177)[_0x1499('0x19')](_0x4e5195);}};}function respondWithFilteredResult(_0x308318,_0x3ab605){return function(_0x48f654){if(_0x48f654){var _0x1ed43b=typeof _0x3ab605[_0x1499('0x1a')]==='undefined'&&typeof _0x3ab605[_0x1499('0x1b')]===_0x1499('0x1c');var _0x46b364=_0x48f654[_0x1499('0x1d')];var _0x1e45a9=_0x1ed43b?0x0:_0x3ab605[_0x1499('0x1a')];var _0x5b9859=_0x1ed43b?_0x48f654['count']:_0x3ab605['offset']+_0x3ab605[_0x1499('0x1b')];var _0xad534b;if(_0x5b9859>=_0x46b364){_0x5b9859=_0x46b364;_0xad534b=0xc8;}else{_0xad534b=0xce;}_0x308318['status'](_0xad534b);return _0x308318[_0x1499('0x1e')](_0x1499('0x1f'),_0x1e45a9+'-'+_0x5b9859+'/'+_0x46b364)[_0x1499('0x19')](_0x48f654);}return null;};}function patchUpdates(_0x18e4a6){return function(_0x21e887){try{jsonpatch[_0x1499('0x20')](_0x21e887,_0x18e4a6,!![]);}catch(_0x2b0458){return BPromise[_0x1499('0x21')](_0x2b0458);}return _0x21e887[_0x1499('0x22')]();};}function saveUpdates(_0x15bcd4,_0x2bb71f){return function(_0x836081){if(_0x836081){return _0x836081[_0x1499('0x23')](_0x15bcd4)[_0x1499('0x24')](function(_0x4ec57a){return _0x4ec57a;});}return null;};}function removeEntity(_0x1e2c51,_0x2c7f57){return function(_0x5615b4){if(_0x5615b4){return _0x5615b4[_0x1499('0x25')]()[_0x1499('0x24')](function(){_0x1e2c51[_0x1499('0x18')](0xcc)[_0x1499('0x26')]();});}};}function handleEntityNotFound(_0x3968e0,_0x16d036){return function(_0x54f3c2){if(!_0x54f3c2){_0x3968e0['sendStatus'](0x194);}return _0x54f3c2;};}function handleError(_0x12739b,_0x3c9aca){_0x3c9aca=_0x3c9aca||0x1f4;return function(_0x3b9259){logger[_0x1499('0x27')](_0x3b9259[_0x1499('0x28')]);if(_0x3b9259['name']){delete _0x3b9259[_0x1499('0x29')];}_0x12739b['status'](_0x3c9aca)['send'](_0x3b9259);};}exports['index']=function(_0x21d204,_0x103efa){var _0x40932a={},_0x1b460b={},_0x3dad86={'count':0x0,'rows':[]};var _0x388513=_[_0x1499('0x2a')](db['UserProfileResource'][_0x1499('0x2b')],function(_0x1a2c99){return{'name':_0x1a2c99[_0x1499('0x2c')],'type':_0x1a2c99['type'][_0x1499('0x2d')]};});_0x1b460b[_0x1499('0x2e')]=_['map'](_0x388513,_0x1499('0x29'));_0x1b460b[_0x1499('0x2f')]=_['keys'](_0x21d204[_0x1499('0x2f')]);_0x1b460b[_0x1499('0x30')]=_[_0x1499('0x31')](_0x1b460b[_0x1499('0x2e')],_0x1b460b[_0x1499('0x2f')]);_0x40932a[_0x1499('0x32')]=_[_0x1499('0x31')](_0x1b460b[_0x1499('0x2e')],qs[_0x1499('0x33')](_0x21d204[_0x1499('0x2f')][_0x1499('0x33')]));_0x40932a[_0x1499('0x32')]=_0x40932a[_0x1499('0x32')][_0x1499('0x34')]?_0x40932a[_0x1499('0x32')]:_0x1b460b[_0x1499('0x2e')];if(!_0x21d204[_0x1499('0x2f')][_0x1499('0x35')](_0x1499('0x36'))){_0x40932a[_0x1499('0x1b')]=qs['limit'](_0x21d204[_0x1499('0x2f')][_0x1499('0x1b')]);_0x40932a[_0x1499('0x1a')]=qs[_0x1499('0x1a')](_0x21d204[_0x1499('0x2f')][_0x1499('0x1a')]);}_0x40932a[_0x1499('0x37')]=qs[_0x1499('0x38')](_0x21d204[_0x1499('0x2f')][_0x1499('0x38')]);_0x40932a[_0x1499('0x39')]=qs['filters'](_['pick'](_0x21d204[_0x1499('0x2f')],_0x1b460b['filters']),_0x388513);if(_0x21d204[_0x1499('0x2f')]['filter']){_0x40932a[_0x1499('0x39')]=_[_0x1499('0x3a')](_0x40932a[_0x1499('0x39')],{'$or':_[_0x1499('0x2a')](_0x388513,function(_0x531933){if(_0x531933[_0x1499('0x3b')]!=='VIRTUAL'){var _0x2f9c59={};_0x2f9c59[_0x531933[_0x1499('0x29')]]={'$like':'%'+_0x21d204[_0x1499('0x2f')][_0x1499('0x3c')]+'%'};return _0x2f9c59;}})});}_0x40932a=_['merge']({},_0x40932a,_0x21d204[_0x1499('0x3d')]);var _0x815a99={'where':_0x40932a[_0x1499('0x39')]};return db[_0x1499('0x3e')]['count'](_0x815a99)[_0x1499('0x24')](function(_0x4cc411){_0x3dad86[_0x1499('0x1d')]=_0x4cc411;if(_0x21d204[_0x1499('0x2f')][_0x1499('0x3f')]){_0x40932a[_0x1499('0x40')]=[{'all':!![]}];}return db[_0x1499('0x3e')][_0x1499('0x41')](_0x40932a);})[_0x1499('0x24')](function(_0xcb85eb){_0x3dad86[_0x1499('0x42')]=_0xcb85eb;return _0x3dad86;})[_0x1499('0x24')](respondWithFilteredResult(_0x103efa,_0x40932a))['catch'](handleError(_0x103efa,null));};exports[_0x1499('0x43')]=function(_0x5dd36c,_0x2cfdaf){var _0x1af1a1={'raw':![],'where':{'id':_0x5dd36c[_0x1499('0x44')]['id']}},_0x5646cf={};_0x5646cf[_0x1499('0x2e')]=_[_0x1499('0x45')](db[_0x1499('0x3e')][_0x1499('0x2b')]);_0x5646cf['query']=_['keys'](_0x5dd36c[_0x1499('0x2f')]);_0x5646cf[_0x1499('0x30')]=_['intersection'](_0x5646cf[_0x1499('0x2e')],_0x5646cf[_0x1499('0x2f')]);_0x1af1a1['attributes']=_['intersection'](_0x5646cf[_0x1499('0x2e')],qs[_0x1499('0x33')](_0x5dd36c[_0x1499('0x2f')]['fields']));_0x1af1a1[_0x1499('0x32')]=_0x1af1a1[_0x1499('0x32')][_0x1499('0x34')]?_0x1af1a1[_0x1499('0x32')]:_0x5646cf['model'];if(_0x5dd36c[_0x1499('0x2f')][_0x1499('0x3f')]){_0x1af1a1[_0x1499('0x40')]=[{'all':!![]}];}_0x1af1a1=_[_0x1499('0x3a')]({},_0x1af1a1,_0x5dd36c['options']);return db[_0x1499('0x3e')][_0x1499('0x46')](_0x1af1a1)[_0x1499('0x24')](handleEntityNotFound(_0x2cfdaf,null))['then'](respondWithResult(_0x2cfdaf,null))['catch'](handleError(_0x2cfdaf,null));};exports[_0x1499('0x47')]=function(_0x491777,_0x7fa101){return db[_0x1499('0x3e')][_0x1499('0x47')](_0x491777[_0x1499('0x48')],{})[_0x1499('0x24')](respondWithResult(_0x7fa101,0xc9))[_0x1499('0x49')](handleError(_0x7fa101,null));};exports[_0x1499('0x23')]=function(_0x591aa8,_0x420d16){if(_0x591aa8['body']['id']){delete _0x591aa8[_0x1499('0x48')]['id'];}return db[_0x1499('0x3e')]['find']({'where':{'id':_0x591aa8[_0x1499('0x44')]['id']}})[_0x1499('0x24')](handleEntityNotFound(_0x420d16,null))[_0x1499('0x24')](saveUpdates(_0x591aa8['body'],null))[_0x1499('0x24')](respondWithResult(_0x420d16,null))[_0x1499('0x49')](handleError(_0x420d16,null));};exports[_0x1499('0x25')]=function(_0x29ac0f,_0x305599){return db[_0x1499('0x3e')][_0x1499('0x46')]({'where':{'id':_0x29ac0f[_0x1499('0x44')]['id']}})[_0x1499('0x24')](handleEntityNotFound(_0x305599,null))[_0x1499('0x24')](removeEntity(_0x305599,null))['catch'](handleError(_0x305599,null));};exports[_0x1499('0x4a')]=function(_0x9f0520,_0x278178){return db['UserProfileResource'][_0x1499('0x4a')]()[_0x1499('0x24')](respondWithResult(_0x278178,null))['catch'](handleError(_0x278178,null));};
\ No newline at end of file
+var _0xc4aa=['sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','UserProfileResource','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','keys','rawAttributes','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x32e264,_0x41cee8){var _0x1d7175=function(_0x5913d9){while(--_0x5913d9){_0x32e264['push'](_0x32e264['shift']());}};_0x1d7175(++_0x41cee8);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0xc4aa[_0x273c39];return _0x46d6b5;};'use strict';var emlformat=require(_0xac4a('0x0'));var rimraf=require(_0xac4a('0x1'));var zipdir=require(_0xac4a('0x2'));var jsonpatch=require(_0xac4a('0x3'));var rp=require(_0xac4a('0x4'));var moment=require(_0xac4a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xac4a('0x6'));var sox=require(_0xac4a('0x7'));var csv=require(_0xac4a('0x8'));var ejs=require(_0xac4a('0x9'));var fs=require('fs');var fs_extra=require(_0xac4a('0xa'));var _=require(_0xac4a('0xb'));var squel=require(_0xac4a('0xc'));var crypto=require(_0xac4a('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xac4a('0x8'));var querystring=require(_0xac4a('0xe'));var Papa=require(_0xac4a('0xf'));var Redis=require('ioredis');var authService=require(_0xac4a('0x10'));var qs=require(_0xac4a('0x11'));var as=require(_0xac4a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xac4a('0x13'))('api');var utils=require(_0xac4a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xac4a('0x15'));var db=require(_0xac4a('0x16'))['db'];function respondWithStatusCode(_0x24291d,_0x5e16aa){_0x5e16aa=_0x5e16aa||0xcc;return function(_0x21a79){if(_0x21a79){return _0x24291d[_0xac4a('0x17')](_0x5e16aa);}return _0x24291d[_0xac4a('0x18')](_0x5e16aa)[_0xac4a('0x19')]();};}function respondWithResult(_0x1b4313,_0x3b71c0){_0x3b71c0=_0x3b71c0||0xc8;return function(_0x34bc01){if(_0x34bc01){return _0x1b4313[_0xac4a('0x18')](_0x3b71c0)[_0xac4a('0x1a')](_0x34bc01);}};}function respondWithFilteredResult(_0x42c7fc,_0x11e101){return function(_0x26dbb8){if(_0x26dbb8){var _0x4a2119=typeof _0x11e101[_0xac4a('0x1b')]===_0xac4a('0x1c')&&typeof _0x11e101[_0xac4a('0x1d')]===_0xac4a('0x1c');var _0x3e88e3=_0x26dbb8[_0xac4a('0x1e')];var _0x28e304=_0x4a2119?0x0:_0x11e101[_0xac4a('0x1b')];var _0x546c5d=_0x4a2119?_0x26dbb8['count']:_0x11e101[_0xac4a('0x1b')]+_0x11e101[_0xac4a('0x1d')];var _0x39b691;if(_0x546c5d>=_0x3e88e3){_0x546c5d=_0x3e88e3;_0x39b691=0xc8;}else{_0x39b691=0xce;}_0x42c7fc['status'](_0x39b691);return _0x42c7fc[_0xac4a('0x1f')](_0xac4a('0x20'),_0x28e304+'-'+_0x546c5d+'/'+_0x3e88e3)[_0xac4a('0x1a')](_0x26dbb8);}return null;};}function patchUpdates(_0x3a3cdb){return function(_0x123694){try{jsonpatch[_0xac4a('0x21')](_0x123694,_0x3a3cdb,!![]);}catch(_0xe38996){return BPromise[_0xac4a('0x22')](_0xe38996);}return _0x123694['save']();};}function saveUpdates(_0x3d8f0a,_0x3204ad){return function(_0x599787){if(_0x599787){return _0x599787[_0xac4a('0x23')](_0x3d8f0a)[_0xac4a('0x24')](function(_0x3eacd3){return _0x3eacd3;});}return null;};}function removeEntity(_0x947d8e,_0x4d2d6c){return function(_0x1b7998){if(_0x1b7998){return _0x1b7998[_0xac4a('0x25')]()[_0xac4a('0x24')](function(){_0x947d8e[_0xac4a('0x18')](0xcc)[_0xac4a('0x19')]();});}};}function handleEntityNotFound(_0x2b0dc2,_0x222507){return function(_0x36054a){if(!_0x36054a){_0x2b0dc2[_0xac4a('0x17')](0x194);}return _0x36054a;};}function handleError(_0x3bc318,_0x1d0539){_0x1d0539=_0x1d0539||0x1f4;return function(_0x215a31){logger[_0xac4a('0x26')](_0x215a31[_0xac4a('0x27')]);if(_0x215a31[_0xac4a('0x28')]){delete _0x215a31[_0xac4a('0x28')];}_0x3bc318['status'](_0x1d0539)[_0xac4a('0x29')](_0x215a31);};}exports[_0xac4a('0x2a')]=function(_0x42a33c,_0x2772fe){var _0x116700={},_0x4a5a9e={},_0x47f49c={'count':0x0,'rows':[]};var _0xdb7e=_[_0xac4a('0x2b')](db[_0xac4a('0x2c')]['rawAttributes'],function(_0x4bda1f){return{'name':_0x4bda1f[_0xac4a('0x2d')],'type':_0x4bda1f[_0xac4a('0x2e')][_0xac4a('0x2f')]};});_0x4a5a9e[_0xac4a('0x30')]=_[_0xac4a('0x2b')](_0xdb7e,'name');_0x4a5a9e[_0xac4a('0x31')]=_['keys'](_0x42a33c[_0xac4a('0x31')]);_0x4a5a9e['filters']=_[_0xac4a('0x32')](_0x4a5a9e[_0xac4a('0x30')],_0x4a5a9e[_0xac4a('0x31')]);_0x116700[_0xac4a('0x33')]=_[_0xac4a('0x32')](_0x4a5a9e[_0xac4a('0x30')],qs[_0xac4a('0x34')](_0x42a33c[_0xac4a('0x31')][_0xac4a('0x34')]));_0x116700[_0xac4a('0x33')]=_0x116700[_0xac4a('0x33')][_0xac4a('0x35')]?_0x116700[_0xac4a('0x33')]:_0x4a5a9e[_0xac4a('0x30')];if(!_0x42a33c['query'][_0xac4a('0x36')](_0xac4a('0x37'))){_0x116700['limit']=qs[_0xac4a('0x1d')](_0x42a33c[_0xac4a('0x31')]['limit']);_0x116700['offset']=qs[_0xac4a('0x1b')](_0x42a33c[_0xac4a('0x31')][_0xac4a('0x1b')]);}_0x116700[_0xac4a('0x38')]=qs['sort'](_0x42a33c[_0xac4a('0x31')][_0xac4a('0x39')]);_0x116700['where']=qs[_0xac4a('0x3a')](_[_0xac4a('0x3b')](_0x42a33c[_0xac4a('0x31')],_0x4a5a9e['filters']),_0xdb7e);if(_0x42a33c[_0xac4a('0x31')][_0xac4a('0x3c')]){_0x116700[_0xac4a('0x3d')]=_['merge'](_0x116700[_0xac4a('0x3d')],{'$or':_[_0xac4a('0x2b')](_0xdb7e,function(_0x4b9faf){if(_0x4b9faf['type']!==_0xac4a('0x3e')){var _0x5e0926={};_0x5e0926[_0x4b9faf['name']]={'$like':'%'+_0x42a33c['query']['filter']+'%'};return _0x5e0926;}})});}_0x116700=_[_0xac4a('0x3f')]({},_0x116700,_0x42a33c[_0xac4a('0x40')]);var _0x37834b={'where':_0x116700[_0xac4a('0x3d')]};return db[_0xac4a('0x2c')][_0xac4a('0x1e')](_0x37834b)[_0xac4a('0x24')](function(_0x2b16f0){_0x47f49c[_0xac4a('0x1e')]=_0x2b16f0;if(_0x42a33c[_0xac4a('0x31')][_0xac4a('0x41')]){_0x116700[_0xac4a('0x42')]=[{'all':!![]}];}return db['UserProfileResource']['findAll'](_0x116700);})['then'](function(_0x1e1cc5){_0x47f49c[_0xac4a('0x43')]=_0x1e1cc5;return _0x47f49c;})[_0xac4a('0x24')](respondWithFilteredResult(_0x2772fe,_0x116700))[_0xac4a('0x44')](handleError(_0x2772fe,null));};exports[_0xac4a('0x45')]=function(_0x411543,_0x8febf0){var _0x3441f2={'raw':![],'where':{'id':_0x411543[_0xac4a('0x46')]['id']}},_0x3e9973={};_0x3e9973['model']=_[_0xac4a('0x47')](db[_0xac4a('0x2c')][_0xac4a('0x48')]);_0x3e9973[_0xac4a('0x31')]=_[_0xac4a('0x47')](_0x411543['query']);_0x3e9973[_0xac4a('0x3a')]=_[_0xac4a('0x32')](_0x3e9973['model'],_0x3e9973[_0xac4a('0x31')]);_0x3441f2['attributes']=_[_0xac4a('0x32')](_0x3e9973[_0xac4a('0x30')],qs[_0xac4a('0x34')](_0x411543[_0xac4a('0x31')][_0xac4a('0x34')]));_0x3441f2[_0xac4a('0x33')]=_0x3441f2[_0xac4a('0x33')][_0xac4a('0x35')]?_0x3441f2[_0xac4a('0x33')]:_0x3e9973[_0xac4a('0x30')];if(_0x411543[_0xac4a('0x31')][_0xac4a('0x41')]){_0x3441f2['include']=[{'all':!![]}];}_0x3441f2=_[_0xac4a('0x3f')]({},_0x3441f2,_0x411543[_0xac4a('0x40')]);return db[_0xac4a('0x2c')]['find'](_0x3441f2)[_0xac4a('0x24')](handleEntityNotFound(_0x8febf0,null))[_0xac4a('0x24')](respondWithResult(_0x8febf0,null))['catch'](handleError(_0x8febf0,null));};exports[_0xac4a('0x49')]=function(_0x5a7f6e,_0x244950){return db[_0xac4a('0x2c')][_0xac4a('0x49')](_0x5a7f6e['body'],{})['then'](respondWithResult(_0x244950,0xc9))[_0xac4a('0x44')](handleError(_0x244950,null));};exports['update']=function(_0x18ae96,_0x566258){if(_0x18ae96[_0xac4a('0x4a')]['id']){delete _0x18ae96['body']['id'];}return db[_0xac4a('0x2c')][_0xac4a('0x4b')]({'where':{'id':_0x18ae96[_0xac4a('0x46')]['id']}})[_0xac4a('0x24')](handleEntityNotFound(_0x566258,null))['then'](saveUpdates(_0x18ae96[_0xac4a('0x4a')],null))[_0xac4a('0x24')](respondWithResult(_0x566258,null))[_0xac4a('0x44')](handleError(_0x566258,null));};exports[_0xac4a('0x25')]=function(_0x2f30e2,_0x138876){return db[_0xac4a('0x2c')]['find']({'where':{'id':_0x2f30e2[_0xac4a('0x46')]['id']}})[_0xac4a('0x24')](handleEntityNotFound(_0x138876,null))['then'](removeEntity(_0x138876,null))[_0xac4a('0x44')](handleError(_0x138876,null));};exports[_0xac4a('0x4c')]=function(_0x26e716,_0x3ac36e){return db['UserProfileResource'][_0xac4a('0x4c')]()[_0xac4a('0x24')](respondWithResult(_0x3ac36e,null))[_0xac4a('0x44')](handleError(_0x3ac36e,null));};
\ No newline at end of file
index 14e2741..0dcf97a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22c7=['api','moment','bluebird','request-promise','path','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','compositeIndex','resourceId','lodash','util','../../config/logger'];(function(_0x599e60,_0x5b6519){var _0x468e19=function(_0xcdfd97){while(--_0xcdfd97){_0x599e60['push'](_0x599e60['shift']());}};_0x468e19(++_0x5b6519);}(_0x22c7,0xde));var _0x722c=function(_0x515679,_0x31ae43){_0x515679=_0x515679-0x0;var _0x3dbcc2=_0x22c7[_0x515679];return _0x3dbcc2;};'use strict';var _=require(_0x722c('0x0'));var util=require(_0x722c('0x1'));var logger=require(_0x722c('0x2'))(_0x722c('0x3'));var moment=require(_0x722c('0x4'));var BPromise=require(_0x722c('0x5'));var rp=require(_0x722c('0x6'));var fs=require('fs');var path=require(_0x722c('0x7'));var rimraf=require('rimraf');var config=require(_0x722c('0x8'));var attributes=require(_0x722c('0x9'));module[_0x722c('0xa')]=function(_0x1ffad8,_0x58c046){return _0x1ffad8[_0x722c('0xb')](_0x722c('0xc'),attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0x722c('0xd'),'fields':[_0x722c('0xe'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8c35=['path','../../config/environment','exports','define','user_profile_has_resources','resourceId','../../config/logger','api','moment','request-promise'];(function(_0x4aabbe,_0x47a9de){var _0x51eaf=function(_0x3c5040){while(--_0x3c5040){_0x4aabbe['push'](_0x4aabbe['shift']());}};_0x51eaf(++_0x47a9de);}(_0x8c35,0x1dc));var _0x58c3=function(_0x5e1a00,_0x5b2fcc){_0x5e1a00=_0x5e1a00-0x0;var _0xc35cb9=_0x8c35[_0x5e1a00];return _0xc35cb9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x58c3('0x0'))(_0x58c3('0x1'));var moment=require(_0x58c3('0x2'));var BPromise=require('bluebird');var rp=require(_0x58c3('0x3'));var fs=require('fs');var path=require(_0x58c3('0x4'));var rimraf=require('rimraf');var config=require(_0x58c3('0x5'));var attributes=require('./userProfileResource.attributes');module[_0x58c3('0x6')]=function(_0x1b9c6e,_0x4cccab){return _0x1b9c6e[_0x58c3('0x7')]('UserProfileResource',attributes,{'tableName':_0x58c3('0x8'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x58c3('0x9'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
index 4308463..dbccb34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaa3=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird'];(function(_0x330b6d,_0x423489){var _0x17f54b=function(_0x33ddd4){while(--_0x33ddd4){_0x330b6d['push'](_0x330b6d['shift']());}};_0x17f54b(++_0x423489);}(_0xaaa3,0xef));var _0x3aaa=function(_0x556e0a,_0x180c53){_0x556e0a=_0x556e0a-0x0;var _0x2903ed=_0xaaa3[_0x556e0a];return _0x2903ed;};'use strict';var _=require('lodash');var util=require(_0x3aaa('0x0'));var moment=require(_0x3aaa('0x1'));var BPromise=require(_0x3aaa('0x2'));var rs=require(_0x3aaa('0x3'));var fs=require('fs');var Redis=require(_0x3aaa('0x4'));var db=require(_0x3aaa('0x5'))['db'];var utils=require(_0x3aaa('0x6'));var logger=require(_0x3aaa('0x7'))(_0x3aaa('0x8'));var config=require(_0x3aaa('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3aaa('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a0f00,_0x1dbd72,_0x25b749){return new BPromise(function(_0x446233,_0xb99ea7){return client[_0x3aaa('0xb')](_0x2a0f00,_0x25b749)[_0x3aaa('0xc')](function(_0x37fb95){logger[_0x3aaa('0xd')](_0x3aaa('0xe'),_0x1dbd72,_0x3aaa('0xf'));logger['debug'](_0x3aaa('0x10'),_0x1dbd72,'request\x20sent',JSON[_0x3aaa('0x11')](_0x37fb95));if(_0x37fb95['error']){if(_0x37fb95[_0x3aaa('0x12')]['code']===0x1f4){logger[_0x3aaa('0x12')](_0x3aaa('0xe'),_0x1dbd72,_0x37fb95[_0x3aaa('0x12')][_0x3aaa('0x13')]);return _0xb99ea7(_0x37fb95[_0x3aaa('0x12')]['message']);}logger[_0x3aaa('0x12')](_0x3aaa('0xe'),_0x1dbd72,_0x37fb95[_0x3aaa('0x12')][_0x3aaa('0x13')]);return _0x446233(_0x37fb95[_0x3aaa('0x12')][_0x3aaa('0x13')]);}else{logger['info'](_0x3aaa('0xe'),_0x1dbd72,'request\x20sent');_0x446233(_0x37fb95[_0x3aaa('0x14')]['message']);}})[_0x3aaa('0x15')](function(_0x1a1004){logger[_0x3aaa('0x12')](_0x3aaa('0xe'),_0x1dbd72,_0x1a1004);_0xb99ea7(_0x1a1004);});});}
\ No newline at end of file
+var _0xe40c=['result','catch','lodash','util','moment','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','error','code','message'];(function(_0xb8d26c,_0x37f6d3){var _0x3516f6=function(_0x5c37d4){while(--_0x5c37d4){_0xb8d26c['push'](_0xb8d26c['shift']());}};_0x3516f6(++_0x37f6d3);}(_0xe40c,0x80));var _0xce40=function(_0xe5e3fb,_0x2fa636){_0xe5e3fb=_0xe5e3fb-0x0;var _0xdc5834=_0xe40c[_0xe5e3fb];return _0xdc5834;};'use strict';var _=require(_0xce40('0x0'));var util=require(_0xce40('0x1'));var moment=require(_0xce40('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xce40('0x3'))['db'];var utils=require(_0xce40('0x4'));var logger=require('../../config/logger')(_0xce40('0x5'));var config=require('../../config/environment');var jayson=require(_0xce40('0x6'));var client=jayson['client'][_0xce40('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x315b8a,_0x2359d6,_0x863a14){return new BPromise(function(_0x347e91,_0x2fca6c){return client[_0xce40('0x8')](_0x315b8a,_0x863a14)['then'](function(_0x83d6a0){logger[_0xce40('0x9')](_0xce40('0xa'),_0x2359d6,_0xce40('0xb'));logger[_0xce40('0xc')]('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x2359d6,_0xce40('0xb'),JSON['stringify'](_0x83d6a0));if(_0x83d6a0[_0xce40('0xd')]){if(_0x83d6a0[_0xce40('0xd')][_0xce40('0xe')]===0x1f4){logger[_0xce40('0xd')]('UserProfileResource,\x20%s,\x20%s',_0x2359d6,_0x83d6a0[_0xce40('0xd')]['message']);return _0x2fca6c(_0x83d6a0[_0xce40('0xd')][_0xce40('0xf')]);}logger[_0xce40('0xd')]('UserProfileResource,\x20%s,\x20%s',_0x2359d6,_0x83d6a0[_0xce40('0xd')][_0xce40('0xf')]);return _0x347e91(_0x83d6a0[_0xce40('0xd')][_0xce40('0xf')]);}else{logger[_0xce40('0x9')]('UserProfileResource,\x20%s,\x20%s',_0x2359d6,_0xce40('0xb'));_0x347e91(_0x83d6a0[_0xce40('0x10')][_0xce40('0xf')]);}})[_0xce40('0x11')](function(_0x372d0f){logger[_0xce40('0xd')](_0xce40('0xa'),_0x2359d6,_0x372d0f);_0x2fca6c(_0x372d0f);});});}
\ No newline at end of file
index e1d9abe..e4240f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68f1=['./userProfileSection.controller','get','isAuthenticated','index','/describe','describe','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment'];(function(_0x26224c,_0x1a354c){var _0x4c2bc5=function(_0x179343){while(--_0x179343){_0x26224c['push'](_0x26224c['shift']());}};_0x4c2bc5(++_0x1a354c);}(_0x68f1,0x19a));var _0x168f=function(_0x59a0d2,_0x4e0f17){_0x59a0d2=_0x59a0d2-0x0;var _0x55bed2=_0x68f1[_0x59a0d2];return _0x55bed2;};'use strict';var multer=require(_0x168f('0x0'));var util=require(_0x168f('0x1'));var path=require(_0x168f('0x2'));var timeout=require(_0x168f('0x3'));var express=require(_0x168f('0x4'));var router=express[_0x168f('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x168f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x168f('0x7'));var controller=require(_0x168f('0x8'));router[_0x168f('0x9')]('/',auth[_0x168f('0xa')](),controller[_0x168f('0xb')]);router[_0x168f('0x9')](_0x168f('0xc'),auth['isAuthenticated'](),controller[_0x168f('0xd')]);router[_0x168f('0x9')]('/:id',auth[_0x168f('0xa')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x168f('0xe')]);router[_0x168f('0xf')]('/:id',auth[_0x168f('0xa')](),controller[_0x168f('0x10')]);router[_0x168f('0x11')]('/:id',auth[_0x168f('0xa')](),controller[_0x168f('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xa227=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','index','/describe','isAuthenticated','describe','/:id','show','create','put','update','destroy','multer'];(function(_0x5a6eb3,_0x1ad5fa){var _0x3480e8=function(_0x12212b){while(--_0x12212b){_0x5a6eb3['push'](_0x5a6eb3['shift']());}};_0x3480e8(++_0x1ad5fa);}(_0xa227,0x99));var _0x7a22=function(_0x2cdbd2,_0xc0a65){_0x2cdbd2=_0x2cdbd2-0x0;var _0x54f720=_0xa227[_0x2cdbd2];return _0x54f720;};'use strict';var multer=require(_0x7a22('0x0'));var util=require(_0x7a22('0x1'));var path=require(_0x7a22('0x2'));var timeout=require(_0x7a22('0x3'));var express=require(_0x7a22('0x4'));var router=express[_0x7a22('0x5')]();var fs_extra=require(_0x7a22('0x6'));var auth=require(_0x7a22('0x7'));var interaction=require(_0x7a22('0x8'));var config=require(_0x7a22('0x9'));var controller=require(_0x7a22('0xa'));router[_0x7a22('0xb')]('/',auth['isAuthenticated'](),controller[_0x7a22('0xc')]);router[_0x7a22('0xb')](_0x7a22('0xd'),auth[_0x7a22('0xe')](),controller[_0x7a22('0xf')]);router['get'](_0x7a22('0x10'),auth[_0x7a22('0xe')](),controller[_0x7a22('0x11')]);router['post']('/',auth[_0x7a22('0xe')](),controller[_0x7a22('0x12')]);router[_0x7a22('0x13')](_0x7a22('0x10'),auth[_0x7a22('0xe')](),controller[_0x7a22('0x14')]);router['delete'](_0x7a22('0x10'),auth[_0x7a22('0xe')](),controller[_0x7a22('0x15')]);module['exports']=router;
\ No newline at end of file
index 983a980..60d9abd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x087b=['getDataValue','split','sequelize','exports','INTEGER','BOOLEAN','STRING','setDataValue','crudPermissions','join'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x087b,0x11a));var _0xb087=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0x087b[_0x29d915];return _0x160f86;};'use strict';var Sequelize=require(_0xb087('0x0'));module[_0xb087('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0xb087('0x2')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xb087('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xb087('0x4')],'set':function(_0x1d3299){this[_0xb087('0x5')](_0xb087('0x6'),_0x1d3299?_0x1d3299[_0xb087('0x7')](''):[]);},'get':function(){return this[_0xb087('0x8')](_0xb087('0x6'))?this[_0xb087('0x8')](_0xb087('0x6'))[_0xb087('0x9')](''):[];}}};
\ No newline at end of file
+var _0xb574=['BOOLEAN','setDataValue','crudPermissions','sequelize','exports','STRING','INTEGER'];(function(_0x468146,_0x4d22ba){var _0x24e592=function(_0x348bdc){while(--_0x348bdc){_0x468146['push'](_0x468146['shift']());}};_0x24e592(++_0x4d22ba);}(_0xb574,0x106));var _0x4b57=function(_0x36d0c4,_0x2a1a4a){_0x36d0c4=_0x36d0c4-0x0;var _0x32ccd2=_0xb574[_0x36d0c4];return _0x32ccd2;};'use strict';var Sequelize=require(_0x4b57('0x0'));module[_0x4b57('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x4b57('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x4b57('0x3')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x4b57('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x4b57('0x2')],'set':function(_0x168524){this[_0x4b57('0x5')](_0x4b57('0x6'),_0x168524?_0x168524['join'](''):[]);},'get':function(){return this['getDataValue'](_0x4b57('0x6'))?this['getDataValue']('crudPermissions')['split'](''):[];}}};
\ No newline at end of file
index ce8beda..3d3eb89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0db6=['VIRTUAL','options','count','include','findAll','rows','catch','show','params','rawAttributes','keys','includeAll','create','body','destroy','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','UserProfileSection','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x54fe4e,_0x480c77){var _0x4dab9c=function(_0x133088){while(--_0x133088){_0x54fe4e['push'](_0x54fe4e['shift']());}};_0x4dab9c(++_0x480c77);}(_0x0db6,0x1ab));var _0x60db=function(_0x538967,_0x464c86){_0x538967=_0x538967-0x0;var _0x30bc9b=_0x0db6[_0x538967];return _0x30bc9b;};'use strict';var emlformat=require(_0x60db('0x0'));var rimraf=require(_0x60db('0x1'));var zipdir=require(_0x60db('0x2'));var jsonpatch=require(_0x60db('0x3'));var rp=require(_0x60db('0x4'));var moment=require(_0x60db('0x5'));var BPromise=require(_0x60db('0x6'));var Mustache=require(_0x60db('0x7'));var util=require(_0x60db('0x8'));var path=require(_0x60db('0x9'));var sox=require(_0x60db('0xa'));var csv=require(_0x60db('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x60db('0xc'));var squel=require(_0x60db('0xd'));var crypto=require(_0x60db('0xe'));var jsforce=require(_0x60db('0xf'));var deskjs=require(_0x60db('0x10'));var toCsv=require(_0x60db('0xb'));var querystring=require(_0x60db('0x11'));var Papa=require(_0x60db('0x12'));var Redis=require(_0x60db('0x13'));var authService=require(_0x60db('0x14'));var qs=require(_0x60db('0x15'));var as=require(_0x60db('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x60db('0x17'))(_0x60db('0x18'));var utils=require(_0x60db('0x19'));var config=require(_0x60db('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x60db('0x1b'))['db'];function respondWithStatusCode(_0x8a09e9,_0x46f29f){_0x46f29f=_0x46f29f||0xcc;return function(_0x171d7f){if(_0x171d7f){return _0x8a09e9['sendStatus'](_0x46f29f);}return _0x8a09e9[_0x60db('0x1c')](_0x46f29f)[_0x60db('0x1d')]();};}function respondWithResult(_0x205790,_0x15564b){_0x15564b=_0x15564b||0xc8;return function(_0x14a98f){if(_0x14a98f){return _0x205790[_0x60db('0x1c')](_0x15564b)[_0x60db('0x1e')](_0x14a98f);}};}function respondWithFilteredResult(_0x2cfccf,_0x351617){return function(_0x4a15fc){if(_0x4a15fc){var _0x3ab0aa=typeof _0x351617[_0x60db('0x1f')]===_0x60db('0x20')&&typeof _0x351617[_0x60db('0x21')]===_0x60db('0x20');var _0x340823=_0x4a15fc['count'];var _0x1d1cab=_0x3ab0aa?0x0:_0x351617[_0x60db('0x1f')];var _0x3e7736=_0x3ab0aa?_0x4a15fc['count']:_0x351617[_0x60db('0x1f')]+_0x351617[_0x60db('0x21')];var _0x3e8019;if(_0x3e7736>=_0x340823){_0x3e7736=_0x340823;_0x3e8019=0xc8;}else{_0x3e8019=0xce;}_0x2cfccf[_0x60db('0x1c')](_0x3e8019);return _0x2cfccf[_0x60db('0x22')](_0x60db('0x23'),_0x1d1cab+'-'+_0x3e7736+'/'+_0x340823)[_0x60db('0x1e')](_0x4a15fc);}return null;};}function patchUpdates(_0x27a92f){return function(_0x1261c5){try{jsonpatch[_0x60db('0x24')](_0x1261c5,_0x27a92f,!![]);}catch(_0x1f2853){return BPromise[_0x60db('0x25')](_0x1f2853);}return _0x1261c5[_0x60db('0x26')]();};}function saveUpdates(_0x18e75d,_0x45e72c){return function(_0x967292){if(_0x967292){return _0x967292[_0x60db('0x27')](_0x18e75d)[_0x60db('0x28')](function(_0x153978){return _0x153978;});}return null;};}function removeEntity(_0x17eb3a,_0x3af089){return function(_0x3de27e){if(_0x3de27e){return _0x3de27e['destroy']()['then'](function(){_0x17eb3a['status'](0xcc)[_0x60db('0x1d')]();});}};}function handleEntityNotFound(_0x7d7441,_0x579e4f){return function(_0x2d8d66){if(!_0x2d8d66){_0x7d7441['sendStatus'](0x194);}return _0x2d8d66;};}function handleError(_0x4af901,_0x1b4fe7){_0x1b4fe7=_0x1b4fe7||0x1f4;return function(_0x22c0fb){logger[_0x60db('0x29')](_0x22c0fb[_0x60db('0x2a')]);if(_0x22c0fb[_0x60db('0x2b')]){delete _0x22c0fb[_0x60db('0x2b')];}_0x4af901[_0x60db('0x1c')](_0x1b4fe7)[_0x60db('0x2c')](_0x22c0fb);};}exports[_0x60db('0x2d')]=function(_0x1ff870,_0x333f7e){var _0x3c9558={},_0x32c47c={},_0xd36c6={'count':0x0,'rows':[]};var _0x1bf888=_[_0x60db('0x2e')](db[_0x60db('0x2f')]['rawAttributes'],function(_0x195b26){return{'name':_0x195b26['fieldName'],'type':_0x195b26[_0x60db('0x30')][_0x60db('0x31')]};});_0x32c47c[_0x60db('0x32')]=_[_0x60db('0x2e')](_0x1bf888,'name');_0x32c47c['query']=_['keys'](_0x1ff870[_0x60db('0x33')]);_0x32c47c[_0x60db('0x34')]=_[_0x60db('0x35')](_0x32c47c[_0x60db('0x32')],_0x32c47c['query']);_0x3c9558[_0x60db('0x36')]=_['intersection'](_0x32c47c[_0x60db('0x32')],qs[_0x60db('0x37')](_0x1ff870['query'][_0x60db('0x37')]));_0x3c9558[_0x60db('0x36')]=_0x3c9558['attributes'][_0x60db('0x38')]?_0x3c9558[_0x60db('0x36')]:_0x32c47c[_0x60db('0x32')];if(!_0x1ff870[_0x60db('0x33')][_0x60db('0x39')](_0x60db('0x3a'))){_0x3c9558[_0x60db('0x21')]=qs['limit'](_0x1ff870['query']['limit']);_0x3c9558[_0x60db('0x1f')]=qs[_0x60db('0x1f')](_0x1ff870[_0x60db('0x33')][_0x60db('0x1f')]);}_0x3c9558[_0x60db('0x3b')]=qs[_0x60db('0x3c')](_0x1ff870[_0x60db('0x33')]['sort']);_0x3c9558[_0x60db('0x3d')]=qs[_0x60db('0x34')](_[_0x60db('0x3e')](_0x1ff870[_0x60db('0x33')],_0x32c47c[_0x60db('0x34')]),_0x1bf888);if(_0x1ff870[_0x60db('0x33')][_0x60db('0x3f')]){_0x3c9558['where']=_[_0x60db('0x40')](_0x3c9558[_0x60db('0x3d')],{'$or':_[_0x60db('0x2e')](_0x1bf888,function(_0x499ab8){if(_0x499ab8[_0x60db('0x30')]!==_0x60db('0x41')){var _0x3190a6={};_0x3190a6[_0x499ab8['name']]={'$like':'%'+_0x1ff870['query'][_0x60db('0x3f')]+'%'};return _0x3190a6;}})});}_0x3c9558=_['merge']({},_0x3c9558,_0x1ff870[_0x60db('0x42')]);var _0x38f531={'where':_0x3c9558[_0x60db('0x3d')]};return db['UserProfileSection']['count'](_0x38f531)[_0x60db('0x28')](function(_0x18649b){_0xd36c6[_0x60db('0x43')]=_0x18649b;if(_0x1ff870['query']['includeAll']){_0x3c9558[_0x60db('0x44')]=[{'all':!![]}];}return db[_0x60db('0x2f')][_0x60db('0x45')](_0x3c9558);})[_0x60db('0x28')](function(_0x3f2641){_0xd36c6[_0x60db('0x46')]=_0x3f2641;return _0xd36c6;})['then'](respondWithFilteredResult(_0x333f7e,_0x3c9558))[_0x60db('0x47')](handleError(_0x333f7e,null));};exports[_0x60db('0x48')]=function(_0x5b280a,_0x544c93){var _0x2e0187={'raw':![],'where':{'id':_0x5b280a[_0x60db('0x49')]['id']}},_0x451efe={};_0x451efe['model']=_['keys'](db['UserProfileSection'][_0x60db('0x4a')]);_0x451efe[_0x60db('0x33')]=_[_0x60db('0x4b')](_0x5b280a[_0x60db('0x33')]);_0x451efe[_0x60db('0x34')]=_[_0x60db('0x35')](_0x451efe['model'],_0x451efe[_0x60db('0x33')]);_0x2e0187['attributes']=_['intersection'](_0x451efe[_0x60db('0x32')],qs['fields'](_0x5b280a['query'][_0x60db('0x37')]));_0x2e0187[_0x60db('0x36')]=_0x2e0187[_0x60db('0x36')][_0x60db('0x38')]?_0x2e0187[_0x60db('0x36')]:_0x451efe[_0x60db('0x32')];if(_0x5b280a[_0x60db('0x33')][_0x60db('0x4c')]){_0x2e0187[_0x60db('0x44')]=[{'all':!![]}];}_0x2e0187=_[_0x60db('0x40')]({},_0x2e0187,_0x5b280a[_0x60db('0x42')]);return db['UserProfileSection']['find'](_0x2e0187)[_0x60db('0x28')](handleEntityNotFound(_0x544c93,null))[_0x60db('0x28')](respondWithResult(_0x544c93,null))['catch'](handleError(_0x544c93,null));};exports[_0x60db('0x4d')]=function(_0x1c92cc,_0x28d5a4){return db[_0x60db('0x2f')][_0x60db('0x4d')](_0x1c92cc[_0x60db('0x4e')],{})[_0x60db('0x28')](respondWithResult(_0x28d5a4,0xc9))[_0x60db('0x47')](handleError(_0x28d5a4,null));};exports[_0x60db('0x27')]=function(_0x2fbd3d,_0x12f1c6){if(_0x2fbd3d[_0x60db('0x4e')]['id']){delete _0x2fbd3d[_0x60db('0x4e')]['id'];}return db['UserProfileSection']['find']({'where':{'id':_0x2fbd3d[_0x60db('0x49')]['id']}})['then'](handleEntityNotFound(_0x12f1c6,null))['then'](saveUpdates(_0x2fbd3d[_0x60db('0x4e')],null))[_0x60db('0x28')](respondWithResult(_0x12f1c6,null))['catch'](handleError(_0x12f1c6,null));};exports[_0x60db('0x4f')]=function(_0x509d16,_0x457761){return db['UserProfileSection'][_0x60db('0x50')]({'where':{'id':_0x509d16[_0x60db('0x49')]['id']}})['then'](handleEntityNotFound(_0x457761,null))['then'](removeEntity(_0x457761,null))[_0x60db('0x47')](handleError(_0x457761,null));};exports['describe']=function(_0x4b6f1a,_0x3338d0){return db[_0x60db('0x2f')][_0x60db('0x51')]()['then'](respondWithResult(_0x3338d0,null))['catch'](handleError(_0x3338d0,null));};
\ No newline at end of file
+var _0x5787=['name','send','index','UserProfileSection','fieldName','type','key','model','map','keys','query','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','include','rows','catch','show','params','intersection','length','create','body','update','find','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','destroy','then','stack'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5787,0x101));var _0x7578=function(_0x4aae91,_0x42f68d){_0x4aae91=_0x4aae91-0x0;var _0xbd2252=_0x5787[_0x4aae91];return _0xbd2252;};'use strict';var emlformat=require(_0x7578('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7578('0x1'));var jsonpatch=require(_0x7578('0x2'));var rp=require('request-promise');var moment=require(_0x7578('0x3'));var BPromise=require(_0x7578('0x4'));var Mustache=require(_0x7578('0x5'));var util=require('util');var path=require(_0x7578('0x6'));var sox=require(_0x7578('0x7'));var csv=require(_0x7578('0x8'));var ejs=require(_0x7578('0x9'));var fs=require('fs');var fs_extra=require(_0x7578('0xa'));var _=require(_0x7578('0xb'));var squel=require(_0x7578('0xc'));var crypto=require(_0x7578('0xd'));var jsforce=require(_0x7578('0xe'));var deskjs=require(_0x7578('0xf'));var toCsv=require(_0x7578('0x8'));var querystring=require(_0x7578('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7578('0x11'));var qs=require(_0x7578('0x12'));var as=require(_0x7578('0x13'));var hardwareService=require(_0x7578('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x7578('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x7578('0x16'));var db=require(_0x7578('0x17'))['db'];function respondWithStatusCode(_0xcdd353,_0x5b4186){_0x5b4186=_0x5b4186||0xcc;return function(_0x3be9a4){if(_0x3be9a4){return _0xcdd353[_0x7578('0x18')](_0x5b4186);}return _0xcdd353['status'](_0x5b4186)[_0x7578('0x19')]();};}function respondWithResult(_0x3e20e0,_0xbd4b68){_0xbd4b68=_0xbd4b68||0xc8;return function(_0x216d21){if(_0x216d21){return _0x3e20e0[_0x7578('0x1a')](_0xbd4b68)[_0x7578('0x1b')](_0x216d21);}};}function respondWithFilteredResult(_0x3fd4ce,_0x2abf4d){return function(_0x3de105){if(_0x3de105){var _0x12503b=typeof _0x2abf4d[_0x7578('0x1c')]===_0x7578('0x1d')&&typeof _0x2abf4d[_0x7578('0x1e')]===_0x7578('0x1d');var _0x544c8c=_0x3de105[_0x7578('0x1f')];var _0x47510d=_0x12503b?0x0:_0x2abf4d['offset'];var _0x504770=_0x12503b?_0x3de105[_0x7578('0x1f')]:_0x2abf4d[_0x7578('0x1c')]+_0x2abf4d[_0x7578('0x1e')];var _0xd364d4;if(_0x504770>=_0x544c8c){_0x504770=_0x544c8c;_0xd364d4=0xc8;}else{_0xd364d4=0xce;}_0x3fd4ce[_0x7578('0x1a')](_0xd364d4);return _0x3fd4ce[_0x7578('0x20')](_0x7578('0x21'),_0x47510d+'-'+_0x504770+'/'+_0x544c8c)[_0x7578('0x1b')](_0x3de105);}return null;};}function patchUpdates(_0x54f5de){return function(_0x5930fd){try{jsonpatch[_0x7578('0x22')](_0x5930fd,_0x54f5de,!![]);}catch(_0x469e5f){return BPromise['reject'](_0x469e5f);}return _0x5930fd[_0x7578('0x23')]();};}function saveUpdates(_0xc3e884,_0x477a9a){return function(_0x261132){if(_0x261132){return _0x261132['update'](_0xc3e884)['then'](function(_0x4e71a0){return _0x4e71a0;});}return null;};}function removeEntity(_0x2748dd,_0x47fd5c){return function(_0x204ec3){if(_0x204ec3){return _0x204ec3[_0x7578('0x24')]()[_0x7578('0x25')](function(){_0x2748dd[_0x7578('0x1a')](0xcc)[_0x7578('0x19')]();});}};}function handleEntityNotFound(_0x2eb1a9,_0x57eb7e){return function(_0x31f393){if(!_0x31f393){_0x2eb1a9[_0x7578('0x18')](0x194);}return _0x31f393;};}function handleError(_0x15f1fe,_0x30275b){_0x30275b=_0x30275b||0x1f4;return function(_0xdb7abc){logger['error'](_0xdb7abc[_0x7578('0x26')]);if(_0xdb7abc[_0x7578('0x27')]){delete _0xdb7abc[_0x7578('0x27')];}_0x15f1fe[_0x7578('0x1a')](_0x30275b)[_0x7578('0x28')](_0xdb7abc);};}exports[_0x7578('0x29')]=function(_0x4e189b,_0xdf7669){var _0x316b38={},_0xab2ada={},_0x3b3c5e={'count':0x0,'rows':[]};var _0x168ac3=_['map'](db[_0x7578('0x2a')]['rawAttributes'],function(_0x2764fc){return{'name':_0x2764fc[_0x7578('0x2b')],'type':_0x2764fc[_0x7578('0x2c')][_0x7578('0x2d')]};});_0xab2ada[_0x7578('0x2e')]=_[_0x7578('0x2f')](_0x168ac3,_0x7578('0x27'));_0xab2ada['query']=_[_0x7578('0x30')](_0x4e189b[_0x7578('0x31')]);_0xab2ada[_0x7578('0x32')]=_['intersection'](_0xab2ada[_0x7578('0x2e')],_0xab2ada[_0x7578('0x31')]);_0x316b38[_0x7578('0x33')]=_['intersection'](_0xab2ada[_0x7578('0x2e')],qs[_0x7578('0x34')](_0x4e189b[_0x7578('0x31')]['fields']));_0x316b38[_0x7578('0x33')]=_0x316b38['attributes']['length']?_0x316b38['attributes']:_0xab2ada[_0x7578('0x2e')];if(!_0x4e189b[_0x7578('0x31')][_0x7578('0x35')](_0x7578('0x36'))){_0x316b38['limit']=qs[_0x7578('0x1e')](_0x4e189b['query']['limit']);_0x316b38[_0x7578('0x1c')]=qs[_0x7578('0x1c')](_0x4e189b[_0x7578('0x31')][_0x7578('0x1c')]);}_0x316b38[_0x7578('0x37')]=qs['sort'](_0x4e189b[_0x7578('0x31')][_0x7578('0x38')]);_0x316b38['where']=qs['filters'](_['pick'](_0x4e189b[_0x7578('0x31')],_0xab2ada[_0x7578('0x32')]),_0x168ac3);if(_0x4e189b[_0x7578('0x31')]['filter']){_0x316b38[_0x7578('0x39')]=_[_0x7578('0x3a')](_0x316b38[_0x7578('0x39')],{'$or':_[_0x7578('0x2f')](_0x168ac3,function(_0x230b54){if(_0x230b54[_0x7578('0x2c')]!==_0x7578('0x3b')){var _0x503139={};_0x503139[_0x230b54[_0x7578('0x27')]]={'$like':'%'+_0x4e189b[_0x7578('0x31')][_0x7578('0x3c')]+'%'};return _0x503139;}})});}_0x316b38=_[_0x7578('0x3a')]({},_0x316b38,_0x4e189b[_0x7578('0x3d')]);var _0xa9dfe7={'where':_0x316b38[_0x7578('0x39')]};return db['UserProfileSection']['count'](_0xa9dfe7)[_0x7578('0x25')](function(_0x445794){_0x3b3c5e[_0x7578('0x1f')]=_0x445794;if(_0x4e189b[_0x7578('0x31')]['includeAll']){_0x316b38[_0x7578('0x3e')]=[{'all':!![]}];}return db[_0x7578('0x2a')]['findAll'](_0x316b38);})['then'](function(_0x1ca2df){_0x3b3c5e[_0x7578('0x3f')]=_0x1ca2df;return _0x3b3c5e;})[_0x7578('0x25')](respondWithFilteredResult(_0xdf7669,_0x316b38))[_0x7578('0x40')](handleError(_0xdf7669,null));};exports[_0x7578('0x41')]=function(_0x58d064,_0x193110){var _0x3d2050={'raw':![],'where':{'id':_0x58d064[_0x7578('0x42')]['id']}},_0x680330={};_0x680330[_0x7578('0x2e')]=_[_0x7578('0x30')](db[_0x7578('0x2a')]['rawAttributes']);_0x680330['query']=_[_0x7578('0x30')](_0x58d064[_0x7578('0x31')]);_0x680330[_0x7578('0x32')]=_[_0x7578('0x43')](_0x680330[_0x7578('0x2e')],_0x680330['query']);_0x3d2050[_0x7578('0x33')]=_[_0x7578('0x43')](_0x680330[_0x7578('0x2e')],qs[_0x7578('0x34')](_0x58d064[_0x7578('0x31')][_0x7578('0x34')]));_0x3d2050[_0x7578('0x33')]=_0x3d2050[_0x7578('0x33')][_0x7578('0x44')]?_0x3d2050[_0x7578('0x33')]:_0x680330[_0x7578('0x2e')];if(_0x58d064['query']['includeAll']){_0x3d2050['include']=[{'all':!![]}];}_0x3d2050=_[_0x7578('0x3a')]({},_0x3d2050,_0x58d064[_0x7578('0x3d')]);return db['UserProfileSection']['find'](_0x3d2050)['then'](handleEntityNotFound(_0x193110,null))[_0x7578('0x25')](respondWithResult(_0x193110,null))['catch'](handleError(_0x193110,null));};exports['create']=function(_0x1cf9c9,_0x366567){return db['UserProfileSection'][_0x7578('0x45')](_0x1cf9c9[_0x7578('0x46')],{})[_0x7578('0x25')](respondWithResult(_0x366567,0xc9))[_0x7578('0x40')](handleError(_0x366567,null));};exports[_0x7578('0x47')]=function(_0x61b2ed,_0x5c90b5){if(_0x61b2ed[_0x7578('0x46')]['id']){delete _0x61b2ed[_0x7578('0x46')]['id'];}return db[_0x7578('0x2a')][_0x7578('0x48')]({'where':{'id':_0x61b2ed['params']['id']}})[_0x7578('0x25')](handleEntityNotFound(_0x5c90b5,null))[_0x7578('0x25')](saveUpdates(_0x61b2ed[_0x7578('0x46')],null))['then'](respondWithResult(_0x5c90b5,null))['catch'](handleError(_0x5c90b5,null));};exports[_0x7578('0x24')]=function(_0x55a93b,_0x9d90a5){return db['UserProfileSection'][_0x7578('0x48')]({'where':{'id':_0x55a93b[_0x7578('0x42')]['id']}})['then'](handleEntityNotFound(_0x9d90a5,null))[_0x7578('0x25')](removeEntity(_0x9d90a5,null))[_0x7578('0x40')](handleError(_0x9d90a5,null));};exports[_0x7578('0x49')]=function(_0x1df03e,_0x2f74b9){return db[_0x7578('0x2a')][_0x7578('0x49')]()[_0x7578('0x25')](respondWithResult(_0x2f74b9,null))[_0x7578('0x40')](handleError(_0x2f74b9,null));};
\ No newline at end of file
index c753ba5..edae214 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48e7=['../../config/environment','./userProfileSection.attributes','exports','define','UserProfileSection','compositeIndex','userProfileId','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x23687f,_0x39ba06){var _0x1e8fc1=function(_0x17e18f){while(--_0x17e18f){_0x23687f['push'](_0x23687f['shift']());}};_0x1e8fc1(++_0x39ba06);}(_0x48e7,0x1db));var _0x748e=function(_0x24e5b6,_0x5e07d0){_0x24e5b6=_0x24e5b6-0x0;var _0x422ad9=_0x48e7[_0x24e5b6];return _0x422ad9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x748e('0x0'))(_0x748e('0x1'));var moment=require(_0x748e('0x2'));var BPromise=require(_0x748e('0x3'));var rp=require(_0x748e('0x4'));var fs=require('fs');var path=require(_0x748e('0x5'));var rimraf=require('rimraf');var config=require(_0x748e('0x6'));var attributes=require(_0x748e('0x7'));module[_0x748e('0x8')]=function(_0x5d51aa,_0x3f21e7){return _0x5d51aa[_0x748e('0x9')](_0x748e('0xa'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0x748e('0xb'),'fields':['sectionId',_0x748e('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd82d=['./userProfileSection.attributes','define','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','lodash','util','../../config/logger','moment','request-promise','../../config/environment'];(function(_0x2e6e55,_0x1d5c47){var _0x2084dc=function(_0x5e9cde){while(--_0x5e9cde){_0x2e6e55['push'](_0x2e6e55['shift']());}};_0x2084dc(++_0x1d5c47);}(_0xd82d,0x1c2));var _0xdd82=function(_0x2d0d2a,_0x10053a){_0x2d0d2a=_0x2d0d2a-0x0;var _0x583800=_0xd82d[_0x2d0d2a];return _0x583800;};'use strict';var _=require(_0xdd82('0x0'));var util=require(_0xdd82('0x1'));var logger=require(_0xdd82('0x2'))('api');var moment=require(_0xdd82('0x3'));var BPromise=require('bluebird');var rp=require(_0xdd82('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdd82('0x5'));var attributes=require(_0xdd82('0x6'));module['exports']=function(_0x29b03e,_0x49fd40){return _0x29b03e[_0xdd82('0x7')](_0xdd82('0x8'),attributes,{'tableName':_0xdd82('0x9'),'paranoid':![],'indexes':[{'name':_0xdd82('0xa'),'fields':[_0xdd82('0xb'),'userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
index d916706..c5c4d4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bff=['http','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','jayson/promise','client'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8bff,0x1d2));var _0xf8bf=function(_0x34f2f0,_0x1fe946){_0x34f2f0=_0x34f2f0-0x0;var _0x4dd55d=_0x8bff[_0x34f2f0];return _0x4dd55d;};'use strict';var _=require(_0xf8bf('0x0'));var util=require(_0xf8bf('0x1'));var moment=require(_0xf8bf('0x2'));var BPromise=require(_0xf8bf('0x3'));var rs=require(_0xf8bf('0x4'));var fs=require('fs');var Redis=require(_0xf8bf('0x5'));var db=require(_0xf8bf('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xf8bf('0x7'));var client=jayson[_0xf8bf('0x8')][_0xf8bf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4733be,_0x57d27b,_0x34c507){return new BPromise(function(_0x500875,_0x1885b8){return client['request'](_0x4733be,_0x34c507)['then'](function(_0xc03a13){logger[_0xf8bf('0xa')](_0xf8bf('0xb'),_0x57d27b,_0xf8bf('0xc'));logger[_0xf8bf('0xd')](_0xf8bf('0xe'),_0x57d27b,_0xf8bf('0xc'),JSON['stringify'](_0xc03a13));if(_0xc03a13[_0xf8bf('0xf')]){if(_0xc03a13['error'][_0xf8bf('0x10')]===0x1f4){logger[_0xf8bf('0xf')](_0xf8bf('0xb'),_0x57d27b,_0xc03a13[_0xf8bf('0xf')]['message']);return _0x1885b8(_0xc03a13['error'][_0xf8bf('0x11')]);}logger[_0xf8bf('0xf')](_0xf8bf('0xb'),_0x57d27b,_0xc03a13[_0xf8bf('0xf')][_0xf8bf('0x11')]);return _0x500875(_0xc03a13['error'][_0xf8bf('0x11')]);}else{logger[_0xf8bf('0xa')](_0xf8bf('0xb'),_0x57d27b,_0xf8bf('0xc'));_0x500875(_0xc03a13[_0xf8bf('0x12')]['message']);}})['catch'](function(_0x2f6b2e){logger[_0xf8bf('0xf')]('UserProfileSection,\x20%s,\x20%s',_0x57d27b,_0x2f6b2e);_0x1885b8(_0x2f6b2e);});});}
\ No newline at end of file
+var _0xc5d3=['../../config/logger','http','request','info','UserProfileSection,\x20%s,\x20%s','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x2ecb82,_0x1f1fd8){var _0x566b6d=function(_0x15dead){while(--_0x15dead){_0x2ecb82['push'](_0x2ecb82['shift']());}};_0x566b6d(++_0x1f1fd8);}(_0xc5d3,0x175));var _0x3c5d=function(_0xbb9dbf,_0x5dafa4){_0xbb9dbf=_0xbb9dbf-0x0;var _0x30223c=_0xc5d3[_0xbb9dbf];return _0x30223c;};'use strict';var _=require(_0x3c5d('0x0'));var util=require(_0x3c5d('0x1'));var moment=require(_0x3c5d('0x2'));var BPromise=require(_0x3c5d('0x3'));var rs=require(_0x3c5d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3c5d('0x5'))['db'];var utils=require(_0x3c5d('0x6'));var logger=require(_0x3c5d('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x3c5d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4e96bf,_0xc5bb8a,_0x4adb7b){return new BPromise(function(_0x4b759a,_0x466f82){return client[_0x3c5d('0x9')](_0x4e96bf,_0x4adb7b)['then'](function(_0x220061){logger[_0x3c5d('0xa')](_0x3c5d('0xb'),_0xc5bb8a,'request\x20sent');logger[_0x3c5d('0xc')](_0x3c5d('0xd'),_0xc5bb8a,_0x3c5d('0xe'),JSON[_0x3c5d('0xf')](_0x220061));if(_0x220061[_0x3c5d('0x10')]){if(_0x220061['error'][_0x3c5d('0x11')]===0x1f4){logger[_0x3c5d('0x10')](_0x3c5d('0xb'),_0xc5bb8a,_0x220061[_0x3c5d('0x10')]['message']);return _0x466f82(_0x220061[_0x3c5d('0x10')][_0x3c5d('0x12')]);}logger['error'](_0x3c5d('0xb'),_0xc5bb8a,_0x220061[_0x3c5d('0x10')][_0x3c5d('0x12')]);return _0x4b759a(_0x220061[_0x3c5d('0x10')][_0x3c5d('0x12')]);}else{logger['info']('UserProfileSection,\x20%s,\x20%s',_0xc5bb8a,_0x3c5d('0xe'));_0x4b759a(_0x220061['result'][_0x3c5d('0x12')]);}})[_0x3c5d('0x13')](function(_0x3969a6){logger[_0x3c5d('0x10')](_0x3c5d('0xb'),_0xc5bb8a,_0x3969a6);_0x466f82(_0x3969a6);});});}
\ No newline at end of file
index 4d1c826..c7525fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x40167d,_0x39ed26){var _0x299086=function(_0x149b07){while(--_0x149b07){_0x40167d['push'](_0x40167d['shift']());}};_0x299086(++_0x39ed26);}(_0xedd9,0xfc));var _0x9edd=function(_0xf8c29d,_0x1924b9){_0xf8c29d=_0xf8c29d-0x0;var _0x1aa975=_0xedd9[_0xf8c29d];return _0x1aa975;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x2c580e,_0x160d2d){var _0x416a96=function(_0x3b981b){while(--_0x3b981b){_0x2c580e['push'](_0x2c580e['shift']());}};_0x416a96(++_0x160d2d);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 6f903ce..d9c75f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf07=['sequelize','exports','INTEGER'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0xaf07,0x117));var _0x7af0=function(_0x21526d,_0x3fc4b7){_0x21526d=_0x21526d-0x0;var _0x4b7fc3=_0xaf07[_0x21526d];return _0x4b7fc3;};'use strict';var Sequelize=require(_0x7af0('0x0'));module[_0x7af0('0x1')]={'penalty':{'type':Sequelize[_0x7af0('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0a51=['INTEGER'];(function(_0x39c31b,_0x1cb91b){var _0x4aeb15=function(_0x54f758){while(--_0x54f758){_0x39c31b['push'](_0x39c31b['shift']());}};_0x4aeb15(++_0x1cb91b);}(_0x0a51,0x158));var _0x10a5=function(_0x2764fc,_0x4125ec){_0x2764fc=_0x2764fc-0x0;var _0x315066=_0x0a51[_0x2764fc];return _0x315066;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0x10a5('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index cbc1850..0392ea5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x964b=['util','api','moment','bluebird','rimraf','./userSmsQueue.attributes','exports','define','UserSmsQueue','user_has_sms_queues','lodash'];(function(_0x14f89e,_0x139fce){var _0x26092d=function(_0x2bdc20){while(--_0x2bdc20){_0x14f89e['push'](_0x14f89e['shift']());}};_0x26092d(++_0x139fce);}(_0x964b,0x112));var _0xb964=function(_0x40e1b7,_0x49c7dd){_0x40e1b7=_0x40e1b7-0x0;var _0x57395d=_0x964b[_0x40e1b7];return _0x57395d;};'use strict';var _=require(_0xb964('0x0'));var util=require(_0xb964('0x1'));var logger=require('../../config/logger')(_0xb964('0x2'));var moment=require(_0xb964('0x3'));var BPromise=require(_0xb964('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb964('0x5'));var config=require('../../config/environment');var attributes=require(_0xb964('0x6'));module[_0xb964('0x7')]=function(_0xba9f19,_0x11a0c1){return _0xba9f19[_0xb964('0x8')](_0xb964('0x9'),attributes,{'tableName':_0xb964('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4888=['define','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./userSmsQueue.attributes','exports'];(function(_0x365593,_0x58d1f8){var _0x38920e=function(_0x254b5d){while(--_0x254b5d){_0x365593['push'](_0x365593['shift']());}};_0x38920e(++_0x58d1f8);}(_0x4888,0x198));var _0x8488=function(_0x37ad1c,_0x247bd6){_0x37ad1c=_0x37ad1c-0x0;var _0xedeefb=_0x4888[_0x37ad1c];return _0xedeefb;};'use strict';var _=require('lodash');var util=require(_0x8488('0x0'));var logger=require(_0x8488('0x1'))(_0x8488('0x2'));var moment=require(_0x8488('0x3'));var BPromise=require(_0x8488('0x4'));var rp=require(_0x8488('0x5'));var fs=require('fs');var path=require(_0x8488('0x6'));var rimraf=require('rimraf');var config=require(_0x8488('0x7'));var attributes=require(_0x8488('0x8'));module[_0x8488('0x9')]=function(_0x421292,_0x326887){return _0x421292[_0x8488('0xa')]('UserSmsQueue',attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b86cc2a..076a0d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca71=['info','UserSmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','UserSmsQueue,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','client','http','request'];(function(_0x37d86b,_0x4a4334){var _0x14847d=function(_0x591420){while(--_0x591420){_0x37d86b['push'](_0x37d86b['shift']());}};_0x14847d(++_0x4a4334);}(_0xca71,0xf1));var _0x1ca7=function(_0xa7fb1f,_0x1c49bc){_0xa7fb1f=_0xa7fb1f-0x0;var _0x32e057=_0xca71[_0xa7fb1f];return _0x32e057;};'use strict';var _=require(_0x1ca7('0x0'));var util=require(_0x1ca7('0x1'));var moment=require(_0x1ca7('0x2'));var BPromise=require(_0x1ca7('0x3'));var rs=require(_0x1ca7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1ca7('0x5'));var logger=require('../../config/logger')(_0x1ca7('0x6'));var config=require(_0x1ca7('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x1ca7('0x8')][_0x1ca7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3689b4,_0x532ae0,_0x526320){return new BPromise(function(_0x429f60,_0x18c534){return client[_0x1ca7('0xa')](_0x3689b4,_0x526320)['then'](function(_0x58ea23){logger[_0x1ca7('0xb')]('UserSmsQueue,\x20%s,\x20%s',_0x532ae0,'request\x20sent');logger['debug'](_0x1ca7('0xc'),_0x532ae0,_0x1ca7('0xd'),JSON[_0x1ca7('0xe')](_0x58ea23));if(_0x58ea23[_0x1ca7('0xf')]){if(_0x58ea23[_0x1ca7('0xf')][_0x1ca7('0x10')]===0x1f4){logger[_0x1ca7('0xf')](_0x1ca7('0x11'),_0x532ae0,_0x58ea23[_0x1ca7('0xf')][_0x1ca7('0x12')]);return _0x18c534(_0x58ea23[_0x1ca7('0xf')][_0x1ca7('0x12')]);}logger[_0x1ca7('0xf')](_0x1ca7('0x11'),_0x532ae0,_0x58ea23['error']['message']);return _0x429f60(_0x58ea23[_0x1ca7('0xf')][_0x1ca7('0x12')]);}else{logger[_0x1ca7('0xb')](_0x1ca7('0x11'),_0x532ae0,'request\x20sent');_0x429f60(_0x58ea23[_0x1ca7('0x13')][_0x1ca7('0x12')]);}})[_0x1ca7('0x14')](function(_0x4a9203){logger[_0x1ca7('0xf')](_0x1ca7('0x11'),_0x532ae0,_0x4a9203);_0x18c534(_0x4a9203);});});}
\ No newline at end of file
+var _0x3b85=['message','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserSmsQueue,\x20%s,\x20%s','request\x20sent','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3d8ec0,_0x276f3c){var _0x17013b=function(_0x4380fb){while(--_0x4380fb){_0x3d8ec0['push'](_0x3d8ec0['shift']());}};_0x17013b(++_0x276f3c);}(_0x3b85,0xb2));var _0x53b8=function(_0x4d34e3,_0x3c15b8){_0x4d34e3=_0x4d34e3-0x0;var _0x2c853e=_0x3b85[_0x4d34e3];return _0x2c853e;};'use strict';var _=require(_0x53b8('0x0'));var util=require('util');var moment=require(_0x53b8('0x1'));var BPromise=require(_0x53b8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x53b8('0x3'));var db=require(_0x53b8('0x4'))['db'];var utils=require(_0x53b8('0x5'));var logger=require(_0x53b8('0x6'))(_0x53b8('0x7'));var config=require(_0x53b8('0x8'));var jayson=require(_0x53b8('0x9'));var client=jayson[_0x53b8('0xa')][_0x53b8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x219120,_0x102fef,_0x4c5e46){return new BPromise(function(_0x90fdd,_0x4567ba){return client[_0x53b8('0xc')](_0x219120,_0x4c5e46)[_0x53b8('0xd')](function(_0x33388f){logger['info'](_0x53b8('0xe'),_0x102fef,_0x53b8('0xf'));logger['debug'](_0x53b8('0x10'),_0x102fef,_0x53b8('0xf'),JSON[_0x53b8('0x11')](_0x33388f));if(_0x33388f[_0x53b8('0x12')]){if(_0x33388f[_0x53b8('0x12')][_0x53b8('0x13')]===0x1f4){logger[_0x53b8('0x12')](_0x53b8('0xe'),_0x102fef,_0x33388f[_0x53b8('0x12')][_0x53b8('0x14')]);return _0x4567ba(_0x33388f[_0x53b8('0x12')][_0x53b8('0x14')]);}logger[_0x53b8('0x12')](_0x53b8('0xe'),_0x102fef,_0x33388f['error']['message']);return _0x90fdd(_0x33388f[_0x53b8('0x12')][_0x53b8('0x14')]);}else{logger['info'](_0x53b8('0xe'),_0x102fef,_0x53b8('0xf'));_0x90fdd(_0x33388f['result'][_0x53b8('0x14')]);}})[_0x53b8('0x15')](function(_0x271bc6){logger[_0x53b8('0x12')](_0x53b8('0xe'),_0x102fef,_0x271bc6);_0x4567ba(_0x271bc6);});});}
\ No newline at end of file
diff --git a/server/api/userVoicePrefix/userVoicePrefix.attributes.js b/server/api/userVoicePrefix/userVoicePrefix.attributes.js
new file mode 100644 (file)
index 0000000..189b86c
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0x6985=['sequelize','exports','INTEGER'];(function(_0x1a6a4c,_0x1488f2){var _0x1b9e0f=function(_0x3b133a){while(--_0x3b133a){_0x1a6a4c['push'](_0x1a6a4c['shift']());}};_0x1b9e0f(++_0x1488f2);}(_0x6985,0x18c));var _0x5698=function(_0x39b651,_0xcca8fc){_0x39b651=_0x39b651-0x0;var _0x3e0971=_0x6985[_0x39b651];return _0x3e0971;};'use strict';var Sequelize=require(_0x5698('0x0'));module[_0x5698('0x1')]={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x5698('0x2')]}};
\ No newline at end of file
diff --git a/server/api/userVoicePrefix/userVoicePrefix.model.js b/server/api/userVoicePrefix/userVoicePrefix.model.js
new file mode 100644 (file)
index 0000000..ee84d69
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x1115cb,_0x59d189){var _0x9e4fac=function(_0x2c6973){while(--_0x2c6973){_0x1115cb['push'](_0x1115cb['shift']());}};_0x9e4fac(++_0x59d189);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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 d18be04..4bbdc22 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(_0x32ee50,_0x564493){var _0x12a1b3=function(_0x3d6bc8){while(--_0x3d6bc8){_0x32ee50['push'](_0x32ee50['shift']());}};_0x12a1b3(++_0x564493);}(_0x9c44,0x178));var _0x49c4=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x9c44[_0x2dea24];return _0x309d58;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x5ade89,_0x2a90b0){var _0x272f1f=function(_0x571f9a){while(--_0x571f9a){_0x5ade89['push'](_0x5ade89['shift']());}};_0x272f1f(++_0x2a90b0);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 756cf24..e8f1bfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc05=['exports','sequelize'];(function(_0x3f25bb,_0x59eddd){var _0x5ae3a0=function(_0x413f56){while(--_0x413f56){_0x3f25bb['push'](_0x3f25bb['shift']());}};_0x5ae3a0(++_0x59eddd);}(_0xcc05,0x95));var _0x5cc0=function(_0x5e9e6a,_0x216a42){_0x5e9e6a=_0x5e9e6a-0x0;var _0x1d942d=_0xcc05[_0x5e9e6a];return _0x1d942d;};'use strict';var Sequelize=require(_0x5cc0('0x0'));module[_0x5cc0('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x090b=['sequelize','INTEGER'];(function(_0xbea9e0,_0x33feb3){var _0x3f7e6f=function(_0x21f31b){while(--_0x21f31b){_0xbea9e0['push'](_0xbea9e0['shift']());}};_0x3f7e6f(++_0x33feb3);}(_0x090b,0x13e));var _0xb090=function(_0x52833d,_0x3534d0){_0x52833d=_0x52833d-0x0;var _0x1629cf=_0x090b[_0x52833d];return _0x1629cf;};'use strict';var Sequelize=require(_0xb090('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xb090('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 26760cc..6349067 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4544=['user_has_voice_queues','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','UserVoiceQueue'];(function(_0xfb6763,_0x1791d2){var _0x526660=function(_0x3d1654){while(--_0x3d1654){_0xfb6763['push'](_0xfb6763['shift']());}};_0x526660(++_0x1791d2);}(_0x4544,0x9d));var _0x4454=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x4544[_0x57b54c];return _0x59cc19;};'use strict';var _=require('lodash');var util=require(_0x4454('0x0'));var logger=require(_0x4454('0x1'))(_0x4454('0x2'));var moment=require(_0x4454('0x3'));var BPromise=require(_0x4454('0x4'));var rp=require(_0x4454('0x5'));var fs=require('fs');var path=require(_0x4454('0x6'));var rimraf=require('rimraf');var config=require(_0x4454('0x7'));var attributes=require('./userVoiceQueue.attributes');module[_0x4454('0x8')]=function(_0x16a16e,_0x3fda26){return _0x16a16e[_0x4454('0x9')](_0x4454('0xa'),attributes,{'tableName':_0x4454('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x719d=['rimraf','exports','UserVoiceQueue','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x719d,0x1a7));var _0xd719=function(_0x3b2bf2,_0x1f7207){_0x3b2bf2=_0x3b2bf2-0x0;var _0x2e6923=_0x719d[_0x3b2bf2];return _0x2e6923;};'use strict';var _=require(_0xd719('0x0'));var util=require('util');var logger=require(_0xd719('0x1'))(_0xd719('0x2'));var moment=require(_0xd719('0x3'));var BPromise=require(_0xd719('0x4'));var rp=require(_0xd719('0x5'));var fs=require('fs');var path=require(_0xd719('0x6'));var rimraf=require(_0xd719('0x7'));var config=require('../../config/environment');var attributes=require('./userVoiceQueue.attributes');module[_0xd719('0x8')]=function(_0x2e61d3,_0x37d10a){return _0x2e61d3['define'](_0xd719('0x9'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7d74223..510eede 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8647=['stringify','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8647,0x176));var _0x7864=function(_0x11e24e,_0x2b8bb1){_0x11e24e=_0x11e24e-0x0;var _0x2caedc=_0x8647[_0x11e24e];return _0x2caedc;};'use strict';var _=require(_0x7864('0x0'));var util=require('util');var moment=require(_0x7864('0x1'));var BPromise=require('bluebird');var rs=require(_0x7864('0x2'));var fs=require('fs');var Redis=require(_0x7864('0x3'));var db=require(_0x7864('0x4'))['db'];var utils=require(_0x7864('0x5'));var logger=require(_0x7864('0x6'))(_0x7864('0x7'));var config=require(_0x7864('0x8'));var jayson=require(_0x7864('0x9'));var client=jayson[_0x7864('0xa')][_0x7864('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1cdcad,_0x93e1bf,_0x4b787c){return new BPromise(function(_0x398b7b,_0x48f3e9){return client[_0x7864('0xc')](_0x1cdcad,_0x4b787c)['then'](function(_0x10e605){logger['info'](_0x7864('0xd'),_0x93e1bf,_0x7864('0xe'));logger[_0x7864('0xf')](_0x7864('0x10'),_0x93e1bf,_0x7864('0xe'),JSON[_0x7864('0x11')](_0x10e605));if(_0x10e605[_0x7864('0x12')]){if(_0x10e605['error'][_0x7864('0x13')]===0x1f4){logger[_0x7864('0x12')](_0x7864('0xd'),_0x93e1bf,_0x10e605['error'][_0x7864('0x14')]);return _0x48f3e9(_0x10e605[_0x7864('0x12')]['message']);}logger[_0x7864('0x12')](_0x7864('0xd'),_0x93e1bf,_0x10e605[_0x7864('0x12')][_0x7864('0x14')]);return _0x398b7b(_0x10e605[_0x7864('0x12')][_0x7864('0x14')]);}else{logger['info']('UserVoiceQueue,\x20%s,\x20%s',_0x93e1bf,_0x7864('0xe'));_0x398b7b(_0x10e605[_0x7864('0x15')][_0x7864('0x14')]);}})[_0x7864('0x16')](function(_0x5290bd){logger['error'](_0x7864('0xd'),_0x93e1bf,_0x5290bd);_0x48f3e9(_0x5290bd);});});}
\ No newline at end of file
+var _0x013f=['../../config/environment','jayson/promise','client','request','then','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x44e1f2,_0x465ffa){var _0x11adcf=function(_0x88ffa4){while(--_0x88ffa4){_0x44e1f2['push'](_0x44e1f2['shift']());}};_0x11adcf(++_0x465ffa);}(_0x013f,0x8d));var _0xf013=function(_0x1c4f19,_0x41ff67){_0x1c4f19=_0x1c4f19-0x0;var _0x4f6b31=_0x013f[_0x1c4f19];return _0x4f6b31;};'use strict';var _=require(_0xf013('0x0'));var util=require(_0xf013('0x1'));var moment=require('moment');var BPromise=require(_0xf013('0x2'));var rs=require(_0xf013('0x3'));var fs=require('fs');var Redis=require(_0xf013('0x4'));var db=require(_0xf013('0x5'))['db'];var utils=require(_0xf013('0x6'));var logger=require(_0xf013('0x7'))(_0xf013('0x8'));var config=require(_0xf013('0x9'));var jayson=require(_0xf013('0xa'));var client=jayson[_0xf013('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x22748b,_0x2de9b3,_0x2399f9){return new BPromise(function(_0x15518d,_0x656f95){return client[_0xf013('0xc')](_0x22748b,_0x2399f9)[_0xf013('0xd')](function(_0x49411b){logger['info'](_0xf013('0xe'),_0x2de9b3,_0xf013('0xf'));logger[_0xf013('0x10')](_0xf013('0x11'),_0x2de9b3,_0xf013('0xf'),JSON[_0xf013('0x12')](_0x49411b));if(_0x49411b[_0xf013('0x13')]){if(_0x49411b[_0xf013('0x13')][_0xf013('0x14')]===0x1f4){logger[_0xf013('0x13')](_0xf013('0xe'),_0x2de9b3,_0x49411b[_0xf013('0x13')][_0xf013('0x15')]);return _0x656f95(_0x49411b['error'][_0xf013('0x15')]);}logger[_0xf013('0x13')]('UserVoiceQueue,\x20%s,\x20%s',_0x2de9b3,_0x49411b[_0xf013('0x13')][_0xf013('0x15')]);return _0x15518d(_0x49411b['error'][_0xf013('0x15')]);}else{logger[_0xf013('0x16')]('UserVoiceQueue,\x20%s,\x20%s',_0x2de9b3,_0xf013('0xf'));_0x15518d(_0x49411b[_0xf013('0x17')][_0xf013('0x15')]);}})[_0xf013('0x18')](function(_0x4e1b59){logger[_0xf013('0x13')](_0xf013('0xe'),_0x2de9b3,_0x4e1b59);_0x656f95(_0x4e1b59);});});}
\ No newline at end of file
index 0255783..e736d28 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(_0x3f3ad8,_0x4bc014){var _0x3a2667=function(_0x4fe7e0){while(--_0x4fe7e0){_0x3f3ad8['push'](_0x3f3ad8['shift']());}};_0x3a2667(++_0x4bc014);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x2d8c90,_0xebac28){var _0x118c87=function(_0x4be43c){while(--_0x4be43c){_0x2d8c90['push'](_0x2d8c90['shift']());}};_0x118c87(++_0xebac28);}(_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
index 4585ef0..a107a6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74d8=['INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0x19a2ed,_0x5cea0c){var _0x3fb209=function(_0x32dcec){while(--_0x32dcec){_0x19a2ed['push'](_0x19a2ed['shift']());}};_0x3fb209(++_0x5cea0c);}(_0x74d8,0xd8));var _0x874d=function(_0x3d8417,_0x595482){_0x3d8417=_0x3d8417-0x0;var _0x3d0ccb=_0x74d8[_0x3d8417];return _0x3d0ccb;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x874d('0x0')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x874d('0x1')},'membername':{'type':Sequelize[_0x874d('0x2')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0x874d('0x0')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x874d('0x2')],'allowNull':![],'unique':'queue_interface','comment':_0x874d('0x1')},'VoiceQueueId':{'type':Sequelize[_0x874d('0x0')],'allowNull':![]},'interface':{'type':Sequelize[_0x874d('0x2')],'allowNull':![],'unique':_0x874d('0x3'),'comment':_0x874d('0x1')},'penalty':{'type':Sequelize[_0x874d('0x0')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize[_0x874d('0x0')](0xb),'defaultValue':0x0,'comment':_0x874d('0x1')}};
\ No newline at end of file
+var _0x179d=['STRING','queue_interface','sequelize','exports','INTEGER','Required\x20by\x20Asterisk'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x179d,0xce));var _0xd179=function(_0x3ed742,_0x338450){_0x3ed742=_0x3ed742-0x0;var _0x2bae6e=_0x179d[_0x3ed742];return _0x2bae6e;};'use strict';var Sequelize=require(_0xd179('0x0'));module[_0xd179('0x1')]={'uniqueid':{'type':Sequelize[_0xd179('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xd179('0x3')},'membername':{'type':Sequelize[_0xd179('0x4')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0xd179('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xd179('0x4')],'allowNull':![],'unique':_0xd179('0x5'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0xd179('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xd179('0x4')],'allowNull':![],'unique':_0xd179('0x5'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0xd179('0x2')](0xb),'defaultValue':0x0,'comment':_0xd179('0x3')},'paused':{'type':Sequelize[_0xd179('0x2')](0xb),'defaultValue':0x0,'comment':_0xd179('0x3')}};
\ No newline at end of file
index 417bd07..f772bfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81ca=['events','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x4aa78a,_0x15c09c){var _0x444b3b=function(_0x7c30bb){while(--_0x7c30bb){_0x4aa78a['push'](_0x4aa78a['shift']());}};_0x444b3b(++_0x15c09c);}(_0x81ca,0x1e8));var _0xa81c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x81ca[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xa81c('0x0'));var UserVoiceQueueRt=require('../../mysqldb')['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa81c('0x1'),'afterUpdate':_0xa81c('0x2'),'afterDestroy':_0xa81c('0x3')};function emitEvent(_0x15d5d9){return function(_0x5671d2,_0x1d6a30,_0x533ca6){UserVoiceQueueRtEvents[_0xa81c('0x4')](_0x15d5d9+':'+_0x5671d2['id'],_0x5671d2);UserVoiceQueueRtEvents[_0xa81c('0x4')](_0x15d5d9,_0x5671d2);_0x533ca6(null);};}for(var e in events){if(events[_0xa81c('0x5')](e)){var event=events[e];UserVoiceQueueRt[_0xa81c('0x6')](e,emitEvent(event));}}module[_0xa81c('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0xebe8=['../../mysqldb','UserVoiceQueueRt','save','remove','hook','exports','events'];(function(_0x5567e4,_0x353d74){var _0x18a480=function(_0x32e132){while(--_0x32e132){_0x5567e4['push'](_0x5567e4['shift']());}};_0x18a480(++_0x353d74);}(_0xebe8,0xb5));var _0x8ebe=function(_0x275bc1,_0x3fe3a9){_0x275bc1=_0x275bc1-0x0;var _0x150ece=_0xebe8[_0x275bc1];return _0x150ece;};'use strict';var EventEmitter=require(_0x8ebe('0x0'));var UserVoiceQueueRt=require(_0x8ebe('0x1'))['db'][_0x8ebe('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8ebe('0x3'),'afterUpdate':'update','afterDestroy':_0x8ebe('0x4')};function emitEvent(_0x19bbe2){return function(_0x29b31b,_0x7bd6d4,_0x5516c8){UserVoiceQueueRtEvents['emit'](_0x19bbe2+':'+_0x29b31b['id'],_0x29b31b);UserVoiceQueueRtEvents['emit'](_0x19bbe2,_0x29b31b);_0x5516c8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt[_0x8ebe('0x5')](e,emitEvent(event));}}module[_0x8ebe('0x6')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index e44fe91..990a468 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a18=['api','bluebird','path','rimraf','./userVoiceQueueRt.attributes','exports','user_has_voice_queues_rt','lodash','util','../../config/logger'];(function(_0x1231c5,_0x21ed00){var _0x5b1a23=function(_0x2392cc){while(--_0x2392cc){_0x1231c5['push'](_0x1231c5['shift']());}};_0x5b1a23(++_0x21ed00);}(_0x3a18,0x93));var _0x83a1=function(_0x4f7463,_0x4f514b){_0x4f7463=_0x4f7463-0x0;var _0x1b1c86=_0x3a18[_0x4f7463];return _0x1b1c86;};'use strict';var _=require(_0x83a1('0x0'));var util=require(_0x83a1('0x1'));var logger=require(_0x83a1('0x2'))(_0x83a1('0x3'));var moment=require('moment');var BPromise=require(_0x83a1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x83a1('0x5'));var rimraf=require(_0x83a1('0x6'));var config=require('../../config/environment');var attributes=require(_0x83a1('0x7'));module[_0x83a1('0x8')]=function(_0x3297a4,_0x414224){return _0x3297a4['define']('UserVoiceQueueRt',attributes,{'tableName':_0x83a1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb74b=['rimraf','../../config/environment','./userVoiceQueueRt.attributes','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger'];(function(_0x17e2e7,_0xe9e1d0){var _0x2ed751=function(_0x4292a4){while(--_0x4292a4){_0x17e2e7['push'](_0x17e2e7['shift']());}};_0x2ed751(++_0xe9e1d0);}(_0xb74b,0x165));var _0xbb74=function(_0x106db6,_0xd6decc){_0x106db6=_0x106db6-0x0;var _0x4dc175=_0xb74b[_0x106db6];return _0x4dc175;};'use strict';var _=require(_0xbb74('0x0'));var util=require(_0xbb74('0x1'));var logger=require(_0xbb74('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xbb74('0x3'));var config=require(_0xbb74('0x4'));var attributes=require(_0xbb74('0x5'));module['exports']=function(_0x417626,_0x1a1c98){return _0x417626['define'](_0xbb74('0x6'),attributes,{'tableName':_0xbb74('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3db2b59..7d93f37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8639=['result','catch','GetVoiceQueueRtPauses','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3696d6,_0x498ffe){var _0x4a1c19=function(_0x1c30db){while(--_0x1c30db){_0x3696d6['push'](_0x3696d6['shift']());}};_0x4a1c19(++_0x498ffe);}(_0x8639,0x77));var _0x9863=function(_0x120136,_0x163d00){_0x120136=_0x120136-0x0;var _0x172f0e=_0x8639[_0x120136];return _0x172f0e;};'use strict';var _=require(_0x9863('0x0'));var util=require('util');var moment=require(_0x9863('0x1'));var BPromise=require(_0x9863('0x2'));var rs=require(_0x9863('0x3'));var fs=require('fs');var Redis=require(_0x9863('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9863('0x5'));var logger=require(_0x9863('0x6'))(_0x9863('0x7'));var config=require('../../config/environment');var jayson=require(_0x9863('0x8'));var client=jayson[_0x9863('0x9')][_0x9863('0xa')]({'port':0x232a});config[_0x9863('0xb')]=_[_0x9863('0xc')](config[_0x9863('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9863('0xb')]));require('./userVoiceQueueRt.socket')[_0x9863('0xd')](socket);function respondWithRpcPromise(_0x19c849,_0x27de3c,_0x9eae89){return new BPromise(function(_0x54b68f,_0x18c367){return client[_0x9863('0xe')](_0x19c849,_0x9eae89)[_0x9863('0xf')](function(_0x1228bd){logger[_0x9863('0x10')](_0x9863('0x11'),_0x27de3c,_0x9863('0x12'));logger[_0x9863('0x13')](_0x9863('0x14'),_0x27de3c,'request\x20sent',JSON[_0x9863('0x15')](_0x1228bd));if(_0x1228bd[_0x9863('0x16')]){if(_0x1228bd[_0x9863('0x16')][_0x9863('0x17')]===0x1f4){logger[_0x9863('0x16')](_0x9863('0x11'),_0x27de3c,_0x1228bd[_0x9863('0x16')][_0x9863('0x18')]);return _0x18c367(_0x1228bd[_0x9863('0x16')][_0x9863('0x18')]);}logger[_0x9863('0x16')](_0x9863('0x11'),_0x27de3c,_0x1228bd[_0x9863('0x16')][_0x9863('0x18')]);return _0x54b68f(_0x1228bd[_0x9863('0x16')]['message']);}else{logger['info'](_0x9863('0x11'),_0x27de3c,_0x9863('0x12'));_0x54b68f(_0x1228bd[_0x9863('0x19')][_0x9863('0x18')]);}})[_0x9863('0x1a')](function(_0xe82c70){logger[_0x9863('0x16')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x27de3c,_0xe82c70);_0x18c367(_0xe82c70);});});}exports[_0x9863('0x1b')]=function(_0x4555a6){var _0x5b846c=this;return new Promise(function(_0x5c73e7,_0x30b14f){return db['UserVoiceQueueRt'][_0x9863('0x1c')]({'raw':_0x4555a6['options']?_0x4555a6[_0x9863('0x1d')][_0x9863('0x1e')]===undefined?!![]:![]:!![],'where':_0x4555a6[_0x9863('0x1d')]?_0x4555a6['options'][_0x9863('0x1f')]||null:null,'attributes':[[db[_0x9863('0x20')]['fn'](_0x9863('0x21'),db[_0x9863('0x20')]['fn']('IF',db['sequelize'][_0x9863('0x22')](_0x9863('0x23')))),'outboundQueuePauses']]})[_0x9863('0xf')](function(_0x312729){logger[_0x9863('0x10')](_0x9863('0x1b'),_0x4555a6);logger['debug']('GetVoiceQueueRtPauses',_0x4555a6,JSON['stringify'](_0x312729));_0x5c73e7(_0x312729);})[_0x9863('0x1a')](function(_0x22e65a){logger[_0x9863('0x16')](_0x9863('0x1b'),_0x22e65a[_0x9863('0x18')],_0x4555a6);_0x30b14f(_0x5b846c[_0x9863('0x16')](0x1f4,_0x22e65a[_0x9863('0x18')]));});});};
\ No newline at end of file
+var _0x98cb=['catch','UserVoiceQueueRt','findAll','options','raw','where','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','GetVoiceQueueRtPauses','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','then','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result'];(function(_0x3cc8b4,_0x33bc7d){var _0x20ff15=function(_0x5c30c2){while(--_0x5c30c2){_0x3cc8b4['push'](_0x3cc8b4['shift']());}};_0x20ff15(++_0x33bc7d);}(_0x98cb,0x196));var _0xb98c=function(_0x5375e0,_0x3e0115){_0x5375e0=_0x5375e0-0x0;var _0xa37fca=_0x98cb[_0x5375e0];return _0xa37fca;};'use strict';var _=require(_0xb98c('0x0'));var util=require(_0xb98c('0x1'));var moment=require('moment');var BPromise=require(_0xb98c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb98c('0x3'));var db=require(_0xb98c('0x4'))['db'];var utils=require(_0xb98c('0x5'));var logger=require(_0xb98c('0x6'))(_0xb98c('0x7'));var config=require('../../config/environment');var jayson=require(_0xb98c('0x8'));var client=jayson['client'][_0xb98c('0x9')]({'port':0x232a});config[_0xb98c('0xa')]=_[_0xb98c('0xb')](config[_0xb98c('0xa')],{'host':_0xb98c('0xc'),'port':0x18eb});var socket=require(_0xb98c('0xd'))(new Redis(config[_0xb98c('0xa')]));require(_0xb98c('0xe'))[_0xb98c('0xf')](socket);function respondWithRpcPromise(_0x3feaa0,_0x1db1db,_0x13973d){return new BPromise(function(_0x3f1b25,_0x527da9){return client['request'](_0x3feaa0,_0x13973d)[_0xb98c('0x10')](function(_0x672e68){logger['info'](_0xb98c('0x11'),_0x1db1db,_0xb98c('0x12'));logger[_0xb98c('0x13')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x1db1db,_0xb98c('0x12'),JSON[_0xb98c('0x14')](_0x672e68));if(_0x672e68[_0xb98c('0x15')]){if(_0x672e68[_0xb98c('0x15')][_0xb98c('0x16')]===0x1f4){logger['error'](_0xb98c('0x11'),_0x1db1db,_0x672e68[_0xb98c('0x15')][_0xb98c('0x17')]);return _0x527da9(_0x672e68[_0xb98c('0x15')][_0xb98c('0x17')]);}logger['error'](_0xb98c('0x11'),_0x1db1db,_0x672e68['error'][_0xb98c('0x17')]);return _0x3f1b25(_0x672e68[_0xb98c('0x15')][_0xb98c('0x17')]);}else{logger[_0xb98c('0x18')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x1db1db,_0xb98c('0x12'));_0x3f1b25(_0x672e68[_0xb98c('0x19')][_0xb98c('0x17')]);}})[_0xb98c('0x1a')](function(_0x3f73a3){logger[_0xb98c('0x15')](_0xb98c('0x11'),_0x1db1db,_0x3f73a3);_0x527da9(_0x3f73a3);});});}exports['GetVoiceQueueRtPauses']=function(_0x4e3bd7){var _0x45c7ad=this;return new Promise(function(_0x2ceaf6,_0x3b636e){return db[_0xb98c('0x1b')][_0xb98c('0x1c')]({'raw':_0x4e3bd7[_0xb98c('0x1d')]?_0x4e3bd7[_0xb98c('0x1d')][_0xb98c('0x1e')]===undefined?!![]:![]:!![],'where':_0x4e3bd7[_0xb98c('0x1d')]?_0x4e3bd7[_0xb98c('0x1d')][_0xb98c('0x1f')]||null:null,'attributes':[[db[_0xb98c('0x20')]['fn']('COUNT',db[_0xb98c('0x20')]['fn']('IF',db[_0xb98c('0x20')][_0xb98c('0x21')](_0xb98c('0x22')))),'outboundQueuePauses']]})[_0xb98c('0x10')](function(_0x2dd0b6){logger[_0xb98c('0x18')](_0xb98c('0x23'),_0x4e3bd7);logger['debug'](_0xb98c('0x23'),_0x4e3bd7,JSON[_0xb98c('0x14')](_0x2dd0b6));_0x2ceaf6(_0x2dd0b6);})[_0xb98c('0x1a')](function(_0x4feeef){logger[_0xb98c('0x15')](_0xb98c('0x23'),_0x4feeef[_0xb98c('0x17')],_0x4e3bd7);_0x3b636e(_0x45c7ad[_0xb98c('0x15')](0x1f4,_0x4feeef[_0xb98c('0x17')]));});});};
\ No newline at end of file
index 0428ce7..f2233eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ad=['update','emit','removeListener','register','userVoiceQueueRt:','save'];(function(_0x559e88,_0x1d0234){var _0x262956=function(_0x4675c7){while(--_0x4675c7){_0x559e88['push'](_0x559e88['shift']());}};_0x262956(++_0x1d0234);}(_0xb2ad,0x16d));var _0xdb2a=function(_0x2ba8fd,_0x3e564b){_0x2ba8fd=_0x2ba8fd-0x0;var _0x3861f6=_0xb2ad[_0x2ba8fd];return _0x3861f6;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0xdb2a('0x0'),'remove',_0xdb2a('0x1')];function createListener(_0x21e519,_0x15dbf8){return function(_0x3300cf){_0x15dbf8[_0xdb2a('0x2')](_0x21e519,_0x3300cf);};}function removeListener(_0x505753,_0x244b13){return function(){UserVoiceQueueRtEvents[_0xdb2a('0x3')](_0x505753,_0x244b13);};}exports[_0xdb2a('0x4')]=function(_0x1f9551){for(var _0x5c69b1=0x0,_0x4e6649=events['length'];_0x5c69b1<_0x4e6649;_0x5c69b1++){var _0x2ed71e=events[_0x5c69b1];var _0xc23925=createListener(_0xdb2a('0x5')+_0x2ed71e,_0x1f9551);UserVoiceQueueRtEvents['on'](_0x2ed71e,_0xc23925);}};
\ No newline at end of file
+var _0x80c3=['register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','update','emit'];(function(_0x20991c,_0x421c76){var _0x22f2d8=function(_0x3e5987){while(--_0x3e5987){_0x20991c['push'](_0x20991c['shift']());}};_0x22f2d8(++_0x421c76);}(_0x80c3,0x18f));var _0x380c=function(_0x2ef44b,_0x553359){_0x2ef44b=_0x2ef44b-0x0;var _0x2405b9=_0x80c3[_0x2ef44b];return _0x2405b9;};'use strict';var UserVoiceQueueRtEvents=require(_0x380c('0x0'));var events=['save','remove',_0x380c('0x1')];function createListener(_0x53f207,_0x3c1362){return function(_0x4202d4){_0x3c1362[_0x380c('0x2')](_0x53f207,_0x4202d4);};}function removeListener(_0x52fd7e,_0x565a08){return function(){UserVoiceQueueRtEvents['removeListener'](_0x52fd7e,_0x565a08);};}exports[_0x380c('0x3')]=function(_0x595b66){for(var _0x581c96=0x0,_0x332ed3=events[_0x380c('0x4')];_0x581c96<_0x332ed3;_0x581c96++){var _0x1cdbad=events[_0x581c96];var _0x59445f=createListener(_0x380c('0x5')+_0x1cdbad,_0x595b66);UserVoiceQueueRtEvents['on'](_0x1cdbad,_0x59445f);}};
\ No newline at end of file
index 98ce754..7cabc07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x43b014,_0x2e01c1){var _0x2083a2=function(_0x58fbcf){while(--_0x58fbcf){_0x43b014['push'](_0x43b014['shift']());}};_0x2083a2(++_0x2e01c1);}(_0xedd9,0xfc));var _0x9edd=function(_0x5b9570,_0x3b4f85){_0x5b9570=_0x5b9570-0x0;var _0x212e45=_0xedd9[_0x5b9570];return _0x212e45;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x120dca,_0x292835){var _0x123b1e=function(_0x338128){while(--_0x338128){_0x120dca['push'](_0x120dca['shift']());}};_0x123b1e(++_0x292835);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 47f6f9b..da5f680 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e34=['INTEGER','sequelize'];(function(_0x35431c,_0x35bad2){var _0x57722f=function(_0x3b14b8){while(--_0x3b14b8){_0x35431c['push'](_0x35431c['shift']());}};_0x57722f(++_0x35bad2);}(_0x0e34,0x13d));var _0x40e3=function(_0x207bad,_0x581c69){_0x207bad=_0x207bad-0x0;var _0x2d1883=_0x0e34[_0x207bad];return _0x2d1883;};'use strict';var Sequelize=require(_0x40e3('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x40e3('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8818=['INTEGER','sequelize','exports'];(function(_0x501b81,_0x23e8a4){var _0x4281a0=function(_0x1bdc9b){while(--_0x1bdc9b){_0x501b81['push'](_0x501b81['shift']());}};_0x4281a0(++_0x23e8a4);}(_0x8818,0x64));var _0x8881=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x8818[_0x24061a];return _0x82054e;};'use strict';var Sequelize=require(_0x8881('0x0'));module[_0x8881('0x1')]={'penalty':{'type':Sequelize[_0x8881('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index d40bc2a..6b857cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac3f=['user_has_whatsapp_queues','util','../../config/logger','api','bluebird','../../config/environment','exports','define','UserWhatsappQueue'];(function(_0x18e150,_0x447ee3){var _0x9d3d6f=function(_0x6b1cb0){while(--_0x6b1cb0){_0x18e150['push'](_0x18e150['shift']());}};_0x9d3d6f(++_0x447ee3);}(_0xac3f,0x196));var _0xfac3=function(_0x2bcddb,_0x3eaf37){_0x2bcddb=_0x2bcddb-0x0;var _0x12a9e8=_0xac3f[_0x2bcddb];return _0x12a9e8;};'use strict';var _=require('lodash');var util=require(_0xfac3('0x0'));var logger=require(_0xfac3('0x1'))(_0xfac3('0x2'));var moment=require('moment');var BPromise=require(_0xfac3('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xfac3('0x4'));var attributes=require('./userWhatsappQueue.attributes');module[_0xfac3('0x5')]=function(_0x319a01,_0x311a23){return _0x319a01[_0xfac3('0x6')](_0xfac3('0x7'),attributes,{'tableName':_0xfac3('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0bdc=['bluebird','path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','UserWhatsappQueue','user_has_whatsapp_queues','../../config/logger','api','moment'];(function(_0x4a2759,_0x3ffa7f){var _0x4981bf=function(_0x5d8df8){while(--_0x5d8df8){_0x4a2759['push'](_0x4a2759['shift']());}};_0x4981bf(++_0x3ffa7f);}(_0x0bdc,0xb8));var _0xc0bd=function(_0x4456d7,_0x5572c6){_0x4456d7=_0x4456d7-0x0;var _0x1f8a50=_0x0bdc[_0x4456d7];return _0x1f8a50;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xc0bd('0x0'))(_0xc0bd('0x1'));var moment=require(_0xc0bd('0x2'));var BPromise=require(_0xc0bd('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc0bd('0x4'));var rimraf=require(_0xc0bd('0x5'));var config=require(_0xc0bd('0x6'));var attributes=require(_0xc0bd('0x7'));module[_0xc0bd('0x8')]=function(_0x276098,_0xaaed87){return _0x276098['define'](_0xc0bd('0x9'),attributes,{'tableName':_0xc0bd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 43fa5de..2f02c65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b6=['../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','randomstring','ioredis'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xf7b6,0x1b1));var _0x6f7b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf7b6[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x6f7b('0x0'));var moment=require(_0x6f7b('0x1'));var BPromise=require('bluebird');var rs=require(_0x6f7b('0x2'));var fs=require('fs');var Redis=require(_0x6f7b('0x3'));var db=require(_0x6f7b('0x4'))['db'];var utils=require(_0x6f7b('0x5'));var logger=require('../../config/logger')(_0x6f7b('0x6'));var config=require(_0x6f7b('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6f7b('0x8')][_0x6f7b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5866e7,_0x192086,_0x452d95){return new BPromise(function(_0x4d3d67,_0x33405c){return client[_0x6f7b('0xa')](_0x5866e7,_0x452d95)[_0x6f7b('0xb')](function(_0x5e3e1e){logger['info'](_0x6f7b('0xc'),_0x192086,_0x6f7b('0xd'));logger[_0x6f7b('0xe')](_0x6f7b('0xf'),_0x192086,_0x6f7b('0xd'),JSON[_0x6f7b('0x10')](_0x5e3e1e));if(_0x5e3e1e[_0x6f7b('0x11')]){if(_0x5e3e1e[_0x6f7b('0x11')][_0x6f7b('0x12')]===0x1f4){logger[_0x6f7b('0x11')](_0x6f7b('0xc'),_0x192086,_0x5e3e1e[_0x6f7b('0x11')][_0x6f7b('0x13')]);return _0x33405c(_0x5e3e1e[_0x6f7b('0x11')][_0x6f7b('0x13')]);}logger[_0x6f7b('0x11')](_0x6f7b('0xc'),_0x192086,_0x5e3e1e['error'][_0x6f7b('0x13')]);return _0x4d3d67(_0x5e3e1e['error']['message']);}else{logger[_0x6f7b('0x14')](_0x6f7b('0xc'),_0x192086,_0x6f7b('0xd'));_0x4d3d67(_0x5e3e1e[_0x6f7b('0x15')][_0x6f7b('0x13')]);}})[_0x6f7b('0x16')](function(_0x152b55){logger[_0x6f7b('0x11')](_0x6f7b('0xc'),_0x192086,_0x152b55);_0x33405c(_0x152b55);});});}
\ No newline at end of file
+var _0x0d85=['UserWhatsappQueue,\x20%s,\x20%s','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x51dd58,_0x5472ed){var _0x58e022=function(_0x20d831){while(--_0x20d831){_0x51dd58['push'](_0x51dd58['shift']());}};_0x58e022(++_0x5472ed);}(_0x0d85,0x128));var _0x50d8=function(_0x551b2e,_0x106a13){_0x551b2e=_0x551b2e-0x0;var _0x40c659=_0x0d85[_0x551b2e];return _0x40c659;};'use strict';var _=require(_0x50d8('0x0'));var util=require(_0x50d8('0x1'));var moment=require(_0x50d8('0x2'));var BPromise=require('bluebird');var rs=require(_0x50d8('0x3'));var fs=require('fs');var Redis=require(_0x50d8('0x4'));var db=require(_0x50d8('0x5'))['db'];var utils=require(_0x50d8('0x6'));var logger=require(_0x50d8('0x7'))(_0x50d8('0x8'));var config=require(_0x50d8('0x9'));var jayson=require(_0x50d8('0xa'));var client=jayson[_0x50d8('0xb')][_0x50d8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xf429bd,_0x170bfe,_0x41e2e3){return new BPromise(function(_0x422836,_0xc12375){return client[_0x50d8('0xd')](_0xf429bd,_0x41e2e3)[_0x50d8('0xe')](function(_0x5e23b7){logger[_0x50d8('0xf')](_0x50d8('0x10'),_0x170bfe,'request\x20sent');logger[_0x50d8('0x11')](_0x50d8('0x12'),_0x170bfe,_0x50d8('0x13'),JSON[_0x50d8('0x14')](_0x5e23b7));if(_0x5e23b7['error']){if(_0x5e23b7['error'][_0x50d8('0x15')]===0x1f4){logger[_0x50d8('0x16')]('UserWhatsappQueue,\x20%s,\x20%s',_0x170bfe,_0x5e23b7['error']['message']);return _0xc12375(_0x5e23b7[_0x50d8('0x16')][_0x50d8('0x17')]);}logger[_0x50d8('0x16')](_0x50d8('0x10'),_0x170bfe,_0x5e23b7[_0x50d8('0x16')][_0x50d8('0x17')]);return _0x422836(_0x5e23b7[_0x50d8('0x16')]['message']);}else{logger[_0x50d8('0xf')](_0x50d8('0x10'),_0x170bfe,_0x50d8('0x13'));_0x422836(_0x5e23b7[_0x50d8('0x18')][_0x50d8('0x17')]);}})[_0x50d8('0x19')](function(_0x1050cf){logger['error'](_0x50d8('0x10'),_0x170bfe,_0x1050cf);_0xc12375(_0x1050cf);});});}
\ No newline at end of file
index cd47ac0..df360c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d17=['destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','index','isAuthenticated','show','post','create','put','/:id','update','delete'];(function(_0x5447c1,_0x47191a){var _0x289e22=function(_0x237d6d){while(--_0x237d6d){_0x5447c1['push'](_0x5447c1['shift']());}};_0x289e22(++_0x47191a);}(_0x2d17,0x17e));var _0x72d1=function(_0x2ba39a,_0x5a0b85){_0x2ba39a=_0x2ba39a-0x0;var _0x5bd533=_0x2d17[_0x2ba39a];return _0x5bd533;};'use strict';var multer=require(_0x72d1('0x0'));var util=require(_0x72d1('0x1'));var path=require('path');var timeout=require(_0x72d1('0x2'));var express=require(_0x72d1('0x3'));var router=express['Router']();var fs_extra=require(_0x72d1('0x4'));var auth=require(_0x72d1('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x72d1('0x6'));var controller=require('./variable.controller');router[_0x72d1('0x7')]('/',auth['isAuthenticated'](),controller[_0x72d1('0x8')]);router[_0x72d1('0x7')]('/:id',auth[_0x72d1('0x9')](),controller[_0x72d1('0xa')]);router[_0x72d1('0xb')]('/',auth['isAuthenticated'](),controller[_0x72d1('0xc')]);router[_0x72d1('0xd')](_0x72d1('0xe'),auth['isAuthenticated'](),controller[_0x72d1('0xf')]);router[_0x72d1('0x10')](_0x72d1('0xe'),auth[_0x72d1('0x9')](),controller[_0x72d1('0x11')]);module[_0x72d1('0x12')]=router;
\ No newline at end of file
+var _0x6726=['delete','destroy','exports','util','path','express','Router','../../components/auth/service','../../config/environment','./variable.controller','get','isAuthenticated','/:id','show','post','create','put','update'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0x6726,0xdb));var _0x6672=function(_0x41cfd4,_0x1ed2cc){_0x41cfd4=_0x41cfd4-0x0;var _0x190f48=_0x6726[_0x41cfd4];return _0x190f48;};'use strict';var multer=require('multer');var util=require(_0x6672('0x0'));var path=require(_0x6672('0x1'));var timeout=require('connect-timeout');var express=require(_0x6672('0x2'));var router=express[_0x6672('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6672('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6672('0x5'));var controller=require(_0x6672('0x6'));router[_0x6672('0x7')]('/',auth[_0x6672('0x8')](),controller['index']);router[_0x6672('0x7')](_0x6672('0x9'),auth[_0x6672('0x8')](),controller[_0x6672('0xa')]);router[_0x6672('0xb')]('/',auth[_0x6672('0x8')](),controller[_0x6672('0xc')]);router[_0x6672('0xd')](_0x6672('0x9'),auth['isAuthenticated'](),controller[_0x6672('0xe')]);router[_0x6672('0xf')]('/:id',auth[_0x6672('0x8')](),controller[_0x6672('0x10')]);module[_0x6672('0x11')]=router;
\ No newline at end of file
index 0e79609..8b08cd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe984=['name','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe984,0xe2));var _0x4e98=function(_0x2d91c6,_0x10ae0e){_0x2d91c6=_0x2d91c6-0x0;var _0x3a8d19=_0xe984[_0x2d91c6];return _0x3a8d19;};'use strict';var Sequelize=require('sequelize');module[_0x4e98('0x0')]={'name':{'type':Sequelize[_0x4e98('0x1')],'unique':_0x4e98('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4e98('0x1')]}};
\ No newline at end of file
+var _0xb262=['name','STRING'];(function(_0x5b2fd3,_0x28ab53){var _0x2ed141=function(_0x28beb9){while(--_0x28beb9){_0x5b2fd3['push'](_0x5b2fd3['shift']());}};_0x2ed141(++_0x28ab53);}(_0xb262,0xfe));var _0x2b26=function(_0x43fd39,_0x87ecf1){_0x43fd39=_0x43fd39-0x0;var _0x42beb7=_0xb262[_0x43fd39];return _0x42beb7;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x2b26('0x0'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x2b26('0x1')]}};
\ No newline at end of file
index cbd6a11..38aae68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc972=['map','rawAttributes','fieldName','type','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','include','findAll','rows','catch','Variable','keys','options','find','create','body','user','role','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','save','then','destroy','Variables','UserProfileResource','end','error','stack','name','send'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0xc972,0x15f));var _0x2c97=function(_0x301d86,_0x59dcc6){_0x301d86=_0x301d86-0x0;var _0x53f68a=_0xc972[_0x301d86];return _0x53f68a;};'use strict';var emlformat=require(_0x2c97('0x0'));var rimraf=require(_0x2c97('0x1'));var zipdir=require(_0x2c97('0x2'));var jsonpatch=require(_0x2c97('0x3'));var rp=require(_0x2c97('0x4'));var moment=require(_0x2c97('0x5'));var BPromise=require(_0x2c97('0x6'));var Mustache=require(_0x2c97('0x7'));var util=require('util');var path=require(_0x2c97('0x8'));var sox=require(_0x2c97('0x9'));var csv=require('to-csv');var ejs=require(_0x2c97('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2c97('0xb'));var squel=require(_0x2c97('0xc'));var crypto=require('crypto');var jsforce=require(_0x2c97('0xd'));var deskjs=require(_0x2c97('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2c97('0xf'));var Papa=require('papaparse');var Redis=require(_0x2c97('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2c97('0x11'));var as=require(_0x2c97('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2c97('0x13'));var utils=require(_0x2c97('0x14'));var config=require(_0x2c97('0x15'));var licenseUtil=require(_0x2c97('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x475cbf,_0x7355b3){_0x7355b3=_0x7355b3||0xcc;return function(_0xd11885){if(_0xd11885){return _0x475cbf[_0x2c97('0x17')](_0x7355b3);}return _0x475cbf[_0x2c97('0x18')](_0x7355b3)['end']();};}function respondWithResult(_0x2a3232,_0x238d17){_0x238d17=_0x238d17||0xc8;return function(_0x196124){if(_0x196124){return _0x2a3232[_0x2c97('0x18')](_0x238d17)[_0x2c97('0x19')](_0x196124);}};}function respondWithFilteredResult(_0x3b177a,_0x5a02da){return function(_0xea566b){if(_0xea566b){var _0x4bb82f=typeof _0x5a02da[_0x2c97('0x1a')]===_0x2c97('0x1b')&&typeof _0x5a02da[_0x2c97('0x1c')]===_0x2c97('0x1b');var _0x41394d=_0xea566b['count'];var _0x5af658=_0x4bb82f?0x0:_0x5a02da[_0x2c97('0x1a')];var _0x5ce69c=_0x4bb82f?_0xea566b['count']:_0x5a02da[_0x2c97('0x1a')]+_0x5a02da[_0x2c97('0x1c')];var _0x5821e8;if(_0x5ce69c>=_0x41394d){_0x5ce69c=_0x41394d;_0x5821e8=0xc8;}else{_0x5821e8=0xce;}_0x3b177a[_0x2c97('0x18')](_0x5821e8);return _0x3b177a['set']('Content-Range',_0x5af658+'-'+_0x5ce69c+'/'+_0x41394d)[_0x2c97('0x19')](_0xea566b);}return null;};}function patchUpdates(_0x56fe28){return function(_0x5c21c9){try{jsonpatch['apply'](_0x5c21c9,_0x56fe28,!![]);}catch(_0x35f90c){return BPromise['reject'](_0x35f90c);}return _0x5c21c9[_0x2c97('0x1d')]();};}function saveUpdates(_0x508525,_0x25b360){return function(_0x42e142){if(_0x42e142){return _0x42e142['update'](_0x508525)[_0x2c97('0x1e')](function(_0x196197){return _0x196197;});}return null;};}function removeEntity(_0x311222,_0x2d7d75){return function(_0x232029){if(_0x232029){return _0x232029[_0x2c97('0x1f')]()['then'](function(){var _0x23ec5d=_0x232029['get']({'plain':!![]});var _0x106ae6=_0x2c97('0x20');return db[_0x2c97('0x21')]['destroy']({'where':{'type':_0x106ae6,'resourceId':_0x23ec5d['id']}})[_0x2c97('0x1e')](function(){return _0x232029;});})[_0x2c97('0x1e')](function(){_0x311222['status'](0xcc)[_0x2c97('0x22')]();});}};}function handleEntityNotFound(_0x4ac5ce,_0x4cb4d3){return function(_0x31edbb){if(!_0x31edbb){_0x4ac5ce[_0x2c97('0x17')](0x194);}return _0x31edbb;};}function handleError(_0x675709,_0x2b31aa){_0x2b31aa=_0x2b31aa||0x1f4;return function(_0x4a54e0){logger[_0x2c97('0x23')](_0x4a54e0[_0x2c97('0x24')]);if(_0x4a54e0[_0x2c97('0x25')]){delete _0x4a54e0[_0x2c97('0x25')];}_0x675709[_0x2c97('0x18')](_0x2b31aa)[_0x2c97('0x26')](_0x4a54e0);};}exports['index']=function(_0x1327a2,_0x51d7fe){var _0xdc7871={},_0x41beb3={},_0x4a48f6={'count':0x0,'rows':[]};var _0x3e8f2a=_[_0x2c97('0x27')](db['Variable'][_0x2c97('0x28')],function(_0x3056ff){return{'name':_0x3056ff[_0x2c97('0x29')],'type':_0x3056ff[_0x2c97('0x2a')]['key']};});_0x41beb3['model']=_[_0x2c97('0x27')](_0x3e8f2a,_0x2c97('0x25'));_0x41beb3[_0x2c97('0x2b')]=_['keys'](_0x1327a2[_0x2c97('0x2b')]);_0x41beb3[_0x2c97('0x2c')]=_[_0x2c97('0x2d')](_0x41beb3[_0x2c97('0x2e')],_0x41beb3[_0x2c97('0x2b')]);_0xdc7871[_0x2c97('0x2f')]=_['intersection'](_0x41beb3[_0x2c97('0x2e')],qs[_0x2c97('0x30')](_0x1327a2[_0x2c97('0x2b')][_0x2c97('0x30')]));_0xdc7871[_0x2c97('0x2f')]=_0xdc7871[_0x2c97('0x2f')][_0x2c97('0x31')]?_0xdc7871[_0x2c97('0x2f')]:_0x41beb3[_0x2c97('0x2e')];if(!_0x1327a2[_0x2c97('0x2b')][_0x2c97('0x32')](_0x2c97('0x33'))){_0xdc7871['limit']=qs[_0x2c97('0x1c')](_0x1327a2[_0x2c97('0x2b')][_0x2c97('0x1c')]);_0xdc7871[_0x2c97('0x1a')]=qs[_0x2c97('0x1a')](_0x1327a2['query'][_0x2c97('0x1a')]);}_0xdc7871['order']=qs[_0x2c97('0x34')](_0x1327a2[_0x2c97('0x2b')][_0x2c97('0x34')]);_0xdc7871[_0x2c97('0x35')]=qs[_0x2c97('0x2c')](_[_0x2c97('0x36')](_0x1327a2['query'],_0x41beb3[_0x2c97('0x2c')]),_0x3e8f2a);if(_0x1327a2['query'][_0x2c97('0x37')]){_0xdc7871[_0x2c97('0x35')]=_[_0x2c97('0x38')](_0xdc7871[_0x2c97('0x35')],{'$or':_[_0x2c97('0x27')](_0x3e8f2a,function(_0x61ff40){if(_0x61ff40[_0x2c97('0x2a')]!==_0x2c97('0x39')){var _0x143896={};_0x143896[_0x61ff40[_0x2c97('0x25')]]={'$like':'%'+_0x1327a2[_0x2c97('0x2b')]['filter']+'%'};return _0x143896;}})});}_0xdc7871=_[_0x2c97('0x38')]({},_0xdc7871,_0x1327a2['options']);var _0x59f1fc={'where':_0xdc7871[_0x2c97('0x35')]};return db['Variable'][_0x2c97('0x3a')](_0x59f1fc)[_0x2c97('0x1e')](function(_0x557610){_0x4a48f6[_0x2c97('0x3a')]=_0x557610;if(_0x1327a2[_0x2c97('0x2b')][_0x2c97('0x3b')]){_0xdc7871[_0x2c97('0x3c')]=[{'all':!![]}];}return db['Variable'][_0x2c97('0x3d')](_0xdc7871);})[_0x2c97('0x1e')](function(_0x544c3b){_0x4a48f6[_0x2c97('0x3e')]=_0x544c3b;return _0x4a48f6;})[_0x2c97('0x1e')](respondWithFilteredResult(_0x51d7fe,_0xdc7871))[_0x2c97('0x3f')](handleError(_0x51d7fe,null));};exports['show']=function(_0x192d48,_0x439c20){var _0x26eb06={'raw':!![],'where':{'id':_0x192d48['params']['id']}},_0x36556c={};_0x36556c['model']=_['keys'](db[_0x2c97('0x40')][_0x2c97('0x28')]);_0x36556c[_0x2c97('0x2b')]=_[_0x2c97('0x41')](_0x192d48[_0x2c97('0x2b')]);_0x36556c[_0x2c97('0x2c')]=_[_0x2c97('0x2d')](_0x36556c['model'],_0x36556c[_0x2c97('0x2b')]);_0x26eb06[_0x2c97('0x2f')]=_['intersection'](_0x36556c['model'],qs[_0x2c97('0x30')](_0x192d48['query'][_0x2c97('0x30')]));_0x26eb06[_0x2c97('0x2f')]=_0x26eb06[_0x2c97('0x2f')][_0x2c97('0x31')]?_0x26eb06[_0x2c97('0x2f')]:_0x36556c['model'];if(_0x192d48[_0x2c97('0x2b')]['includeAll']){_0x26eb06[_0x2c97('0x3c')]=[{'all':!![]}];}_0x26eb06=_[_0x2c97('0x38')]({},_0x26eb06,_0x192d48[_0x2c97('0x42')]);return db['Variable'][_0x2c97('0x43')](_0x26eb06)[_0x2c97('0x1e')](handleEntityNotFound(_0x439c20,null))[_0x2c97('0x1e')](respondWithResult(_0x439c20,null))[_0x2c97('0x3f')](handleError(_0x439c20,null));};exports[_0x2c97('0x44')]=function(_0xe90875,_0x3b3f9c){return db[_0x2c97('0x40')][_0x2c97('0x44')](_0xe90875[_0x2c97('0x45')],{})[_0x2c97('0x1e')](function(_0x506e05){var _0x4ce20a=_0xe90875[_0x2c97('0x46')]['get']({'plain':!![]});if(!_0x4ce20a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ce20a[_0x2c97('0x47')]===_0x2c97('0x46')){var _0x3c7de5=_0x506e05[_0x2c97('0x48')]({'plain':!![]});var _0x42c5ea=_0x2c97('0x20');return db['UserProfileSection']['find']({'where':{'name':_0x42c5ea,'userProfileId':_0x4ce20a[_0x2c97('0x49')]},'raw':!![]})[_0x2c97('0x1e')](function(_0xca89bb){if(_0xca89bb&&_0xca89bb[_0x2c97('0x4a')]===0x0){return db[_0x2c97('0x21')][_0x2c97('0x44')]({'name':_0x3c7de5[_0x2c97('0x25')],'resourceId':_0x3c7de5['id'],'type':_0xca89bb[_0x2c97('0x25')],'sectionId':_0xca89bb['id']},{})[_0x2c97('0x1e')](function(){return _0x506e05;});}else{return _0x506e05;}})[_0x2c97('0x3f')](function(_0x3a700d){logger[_0x2c97('0x23')](_0x2c97('0x4b'),_0x3a700d);throw _0x3a700d;});}return _0x506e05;})[_0x2c97('0x1e')](respondWithResult(_0x3b3f9c,0xc9))[_0x2c97('0x3f')](handleError(_0x3b3f9c,null));};exports[_0x2c97('0x4c')]=function(_0x28cea5,_0x1356a1){if(_0x28cea5['body']['id']){delete _0x28cea5[_0x2c97('0x45')]['id'];}return db['Variable'][_0x2c97('0x43')]({'where':{'id':_0x28cea5[_0x2c97('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1356a1,null))[_0x2c97('0x1e')](saveUpdates(_0x28cea5[_0x2c97('0x45')],null))[_0x2c97('0x1e')](respondWithResult(_0x1356a1,null))['catch'](handleError(_0x1356a1,null));};exports[_0x2c97('0x1f')]=function(_0x1ab6d2,_0x1329c5){return db[_0x2c97('0x40')]['find']({'where':{'id':_0x1ab6d2[_0x2c97('0x4d')]['id']}})[_0x2c97('0x1e')](handleEntityNotFound(_0x1329c5,null))['then'](removeEntity(_0x1329c5,null))[_0x2c97('0x3f')](handleError(_0x1329c5,null));};
\ No newline at end of file
+var _0x00f0=['key','model','name','keys','query','filters','intersection','attributes','fields','nolimit','order','where','pick','filter','merge','options','Variable','include','rows','length','find','create','body','user','UserProfileSection','userProfileId','autoAssociation','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','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','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','reject','save','destroy','then','get','Variables','UserProfileResource','end','stack','index','map','rawAttributes','type'];(function(_0x3d3283,_0x1a9820){var _0x12bc20=function(_0x347a39){while(--_0x347a39){_0x3d3283['push'](_0x3d3283['shift']());}};_0x12bc20(++_0x1a9820);}(_0x00f0,0xc2));var _0x000f=function(_0x19c8fd,_0x16d6c5){_0x19c8fd=_0x19c8fd-0x0;var _0x4e2981=_0x00f0[_0x19c8fd];return _0x4e2981;};'use strict';var emlformat=require(_0x000f('0x0'));var rimraf=require(_0x000f('0x1'));var zipdir=require(_0x000f('0x2'));var jsonpatch=require(_0x000f('0x3'));var rp=require('request-promise');var moment=require(_0x000f('0x4'));var BPromise=require(_0x000f('0x5'));var Mustache=require(_0x000f('0x6'));var util=require(_0x000f('0x7'));var path=require(_0x000f('0x8'));var sox=require(_0x000f('0x9'));var csv=require('to-csv');var ejs=require(_0x000f('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x000f('0xb'));var squel=require(_0x000f('0xc'));var crypto=require(_0x000f('0xd'));var jsforce=require(_0x000f('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x000f('0xf'));var querystring=require(_0x000f('0x10'));var Papa=require(_0x000f('0x11'));var Redis=require(_0x000f('0x12'));var authService=require(_0x000f('0x13'));var qs=require(_0x000f('0x14'));var as=require(_0x000f('0x15'));var hardwareService=require(_0x000f('0x16'));var logger=require(_0x000f('0x17'))('api');var utils=require(_0x000f('0x18'));var config=require(_0x000f('0x19'));var licenseUtil=require(_0x000f('0x1a'));var db=require(_0x000f('0x1b'))['db'];function respondWithStatusCode(_0x33ffb3,_0x3ed0eb){_0x3ed0eb=_0x3ed0eb||0xcc;return function(_0x2e431a){if(_0x2e431a){return _0x33ffb3[_0x000f('0x1c')](_0x3ed0eb);}return _0x33ffb3['status'](_0x3ed0eb)['end']();};}function respondWithResult(_0x4e30d5,_0x21bd4e){_0x21bd4e=_0x21bd4e||0xc8;return function(_0x47f402){if(_0x47f402){return _0x4e30d5[_0x000f('0x1d')](_0x21bd4e)[_0x000f('0x1e')](_0x47f402);}};}function respondWithFilteredResult(_0x2238c3,_0x59b39d){return function(_0x1cacbd){if(_0x1cacbd){var _0x32f316=typeof _0x59b39d[_0x000f('0x1f')]===_0x000f('0x20')&&typeof _0x59b39d['limit']===_0x000f('0x20');var _0x1a9278=_0x1cacbd[_0x000f('0x21')];var _0x583761=_0x32f316?0x0:_0x59b39d[_0x000f('0x1f')];var _0x1fa9c=_0x32f316?_0x1cacbd[_0x000f('0x21')]:_0x59b39d[_0x000f('0x1f')]+_0x59b39d[_0x000f('0x22')];var _0x406447;if(_0x1fa9c>=_0x1a9278){_0x1fa9c=_0x1a9278;_0x406447=0xc8;}else{_0x406447=0xce;}_0x2238c3[_0x000f('0x1d')](_0x406447);return _0x2238c3[_0x000f('0x23')]('Content-Range',_0x583761+'-'+_0x1fa9c+'/'+_0x1a9278)[_0x000f('0x1e')](_0x1cacbd);}return null;};}function patchUpdates(_0x1ea62b){return function(_0x1eab3d){try{jsonpatch['apply'](_0x1eab3d,_0x1ea62b,!![]);}catch(_0x5b838c){return BPromise[_0x000f('0x24')](_0x5b838c);}return _0x1eab3d[_0x000f('0x25')]();};}function saveUpdates(_0x310155,_0x1cf838){return function(_0x359fbe){if(_0x359fbe){return _0x359fbe['update'](_0x310155)['then'](function(_0x50449c){return _0x50449c;});}return null;};}function removeEntity(_0x31433d,_0x45c6d9){return function(_0x2636be){if(_0x2636be){return _0x2636be[_0x000f('0x26')]()[_0x000f('0x27')](function(){var _0x3b5fb2=_0x2636be[_0x000f('0x28')]({'plain':!![]});var _0x1d2644=_0x000f('0x29');return db[_0x000f('0x2a')]['destroy']({'where':{'type':_0x1d2644,'resourceId':_0x3b5fb2['id']}})[_0x000f('0x27')](function(){return _0x2636be;});})['then'](function(){_0x31433d[_0x000f('0x1d')](0xcc)[_0x000f('0x2b')]();});}};}function handleEntityNotFound(_0x19c236,_0x38cfcb){return function(_0x12b29c){if(!_0x12b29c){_0x19c236[_0x000f('0x1c')](0x194);}return _0x12b29c;};}function handleError(_0x52bec8,_0x82c82e){_0x82c82e=_0x82c82e||0x1f4;return function(_0x7f7902){logger['error'](_0x7f7902[_0x000f('0x2c')]);if(_0x7f7902['name']){delete _0x7f7902['name'];}_0x52bec8['status'](_0x82c82e)['send'](_0x7f7902);};}exports[_0x000f('0x2d')]=function(_0x5126e9,_0x356474){var _0x17315f={},_0x57cf79={},_0x4486c8={'count':0x0,'rows':[]};var _0x502f0d=_[_0x000f('0x2e')](db['Variable'][_0x000f('0x2f')],function(_0x3efe75){return{'name':_0x3efe75['fieldName'],'type':_0x3efe75[_0x000f('0x30')][_0x000f('0x31')]};});_0x57cf79[_0x000f('0x32')]=_['map'](_0x502f0d,_0x000f('0x33'));_0x57cf79['query']=_[_0x000f('0x34')](_0x5126e9[_0x000f('0x35')]);_0x57cf79[_0x000f('0x36')]=_[_0x000f('0x37')](_0x57cf79[_0x000f('0x32')],_0x57cf79['query']);_0x17315f[_0x000f('0x38')]=_[_0x000f('0x37')](_0x57cf79[_0x000f('0x32')],qs[_0x000f('0x39')](_0x5126e9[_0x000f('0x35')][_0x000f('0x39')]));_0x17315f[_0x000f('0x38')]=_0x17315f['attributes']['length']?_0x17315f[_0x000f('0x38')]:_0x57cf79['model'];if(!_0x5126e9['query']['hasOwnProperty'](_0x000f('0x3a'))){_0x17315f[_0x000f('0x22')]=qs[_0x000f('0x22')](_0x5126e9[_0x000f('0x35')]['limit']);_0x17315f[_0x000f('0x1f')]=qs['offset'](_0x5126e9[_0x000f('0x35')][_0x000f('0x1f')]);}_0x17315f[_0x000f('0x3b')]=qs['sort'](_0x5126e9[_0x000f('0x35')]['sort']);_0x17315f[_0x000f('0x3c')]=qs[_0x000f('0x36')](_[_0x000f('0x3d')](_0x5126e9['query'],_0x57cf79[_0x000f('0x36')]),_0x502f0d);if(_0x5126e9[_0x000f('0x35')]['filter']){_0x17315f[_0x000f('0x3c')]=_['merge'](_0x17315f['where'],{'$or':_[_0x000f('0x2e')](_0x502f0d,function(_0x5b46ad){if(_0x5b46ad[_0x000f('0x30')]!=='VIRTUAL'){var _0x397cad={};_0x397cad[_0x5b46ad['name']]={'$like':'%'+_0x5126e9[_0x000f('0x35')][_0x000f('0x3e')]+'%'};return _0x397cad;}})});}_0x17315f=_[_0x000f('0x3f')]({},_0x17315f,_0x5126e9[_0x000f('0x40')]);var _0x2681cf={'where':_0x17315f[_0x000f('0x3c')]};return db[_0x000f('0x41')]['count'](_0x2681cf)[_0x000f('0x27')](function(_0x1745cd){_0x4486c8[_0x000f('0x21')]=_0x1745cd;if(_0x5126e9['query']['includeAll']){_0x17315f[_0x000f('0x42')]=[{'all':!![]}];}return db['Variable']['findAll'](_0x17315f);})[_0x000f('0x27')](function(_0x5785eb){_0x4486c8[_0x000f('0x43')]=_0x5785eb;return _0x4486c8;})[_0x000f('0x27')](respondWithFilteredResult(_0x356474,_0x17315f))['catch'](handleError(_0x356474,null));};exports['show']=function(_0x6fd204,_0x2bdc59){var _0x2952f8={'raw':!![],'where':{'id':_0x6fd204['params']['id']}},_0x475ad7={};_0x475ad7[_0x000f('0x32')]=_['keys'](db['Variable']['rawAttributes']);_0x475ad7[_0x000f('0x35')]=_[_0x000f('0x34')](_0x6fd204[_0x000f('0x35')]);_0x475ad7[_0x000f('0x36')]=_[_0x000f('0x37')](_0x475ad7['model'],_0x475ad7[_0x000f('0x35')]);_0x2952f8[_0x000f('0x38')]=_[_0x000f('0x37')](_0x475ad7[_0x000f('0x32')],qs[_0x000f('0x39')](_0x6fd204[_0x000f('0x35')][_0x000f('0x39')]));_0x2952f8[_0x000f('0x38')]=_0x2952f8[_0x000f('0x38')][_0x000f('0x44')]?_0x2952f8['attributes']:_0x475ad7[_0x000f('0x32')];if(_0x6fd204[_0x000f('0x35')]['includeAll']){_0x2952f8[_0x000f('0x42')]=[{'all':!![]}];}_0x2952f8=_[_0x000f('0x3f')]({},_0x2952f8,_0x6fd204[_0x000f('0x40')]);return db[_0x000f('0x41')][_0x000f('0x45')](_0x2952f8)[_0x000f('0x27')](handleEntityNotFound(_0x2bdc59,null))[_0x000f('0x27')](respondWithResult(_0x2bdc59,null))['catch'](handleError(_0x2bdc59,null));};exports[_0x000f('0x46')]=function(_0x1d03b5,_0x227dfe){return db['Variable'][_0x000f('0x46')](_0x1d03b5[_0x000f('0x47')],{})[_0x000f('0x27')](function(_0x504de4){var _0xe6eda=_0x1d03b5['user'][_0x000f('0x28')]({'plain':!![]});if(!_0xe6eda)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xe6eda['role']===_0x000f('0x48')){var _0x282121=_0x504de4[_0x000f('0x28')]({'plain':!![]});var _0x1a5cfc='Variables';return db[_0x000f('0x49')]['find']({'where':{'name':_0x1a5cfc,'userProfileId':_0xe6eda[_0x000f('0x4a')]},'raw':!![]})[_0x000f('0x27')](function(_0x603750){if(_0x603750&&_0x603750[_0x000f('0x4b')]===0x0){return db['UserProfileResource'][_0x000f('0x46')]({'name':_0x282121[_0x000f('0x33')],'resourceId':_0x282121['id'],'type':_0x603750['name'],'sectionId':_0x603750['id']},{})[_0x000f('0x27')](function(){return _0x504de4;});}else{return _0x504de4;}})[_0x000f('0x4c')](function(_0x12ec97){logger[_0x000f('0x4d')](_0x000f('0x4e'),_0x12ec97);throw _0x12ec97;});}return _0x504de4;})[_0x000f('0x27')](respondWithResult(_0x227dfe,0xc9))['catch'](handleError(_0x227dfe,null));};exports[_0x000f('0x4f')]=function(_0x1e6033,_0x9d6570){if(_0x1e6033[_0x000f('0x47')]['id']){delete _0x1e6033['body']['id'];}return db[_0x000f('0x41')][_0x000f('0x45')]({'where':{'id':_0x1e6033[_0x000f('0x50')]['id']}})[_0x000f('0x27')](handleEntityNotFound(_0x9d6570,null))[_0x000f('0x27')](saveUpdates(_0x1e6033[_0x000f('0x47')],null))['then'](respondWithResult(_0x9d6570,null))[_0x000f('0x4c')](handleError(_0x9d6570,null));};exports[_0x000f('0x26')]=function(_0x5817ae,_0x3a36b1){return db[_0x000f('0x41')][_0x000f('0x45')]({'where':{'id':_0x5817ae[_0x000f('0x50')]['id']}})[_0x000f('0x27')](handleEntityNotFound(_0x3a36b1,null))['then'](removeEntity(_0x3a36b1,null))[_0x000f('0x4c')](handleError(_0x3a36b1,null));};
\ No newline at end of file
index b58ed2a..5c3cc27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c9c=['define','Variable','tools_variables','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./variable.attributes'];(function(_0xd67f35,_0x3b5fd5){var _0x3d04a6=function(_0x44c24f){while(--_0x44c24f){_0xd67f35['push'](_0xd67f35['shift']());}};_0x3d04a6(++_0x3b5fd5);}(_0x1c9c,0x1a7));var _0xc1c9=function(_0x8e74c4,_0x4c3b72){_0x8e74c4=_0x8e74c4-0x0;var _0x50e53f=_0x1c9c[_0x8e74c4];return _0x50e53f;};'use strict';var _=require(_0xc1c9('0x0'));var util=require(_0xc1c9('0x1'));var logger=require('../../config/logger')(_0xc1c9('0x2'));var moment=require(_0xc1c9('0x3'));var BPromise=require('bluebird');var rp=require(_0xc1c9('0x4'));var fs=require('fs');var path=require(_0xc1c9('0x5'));var rimraf=require(_0xc1c9('0x6'));var config=require(_0xc1c9('0x7'));var attributes=require(_0xc1c9('0x8'));module['exports']=function(_0x208532,_0x24ea17){return _0x208532[_0xc1c9('0x9')](_0xc1c9('0xa'),attributes,{'tableName':_0xc1c9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd655=['request-promise','path','rimraf','../../config/environment','./variable.attributes','exports','define','Variable','tools_variables','util','api','moment'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0xd655,0x105));var _0x5d65=function(_0x3de873,_0x174b5f){_0x3de873=_0x3de873-0x0;var _0x380b8c=_0xd655[_0x3de873];return _0x380b8c;};'use strict';var _=require('lodash');var util=require(_0x5d65('0x0'));var logger=require('../../config/logger')(_0x5d65('0x1'));var moment=require(_0x5d65('0x2'));var BPromise=require('bluebird');var rp=require(_0x5d65('0x3'));var fs=require('fs');var path=require(_0x5d65('0x4'));var rimraf=require(_0x5d65('0x5'));var config=require(_0x5d65('0x6'));var attributes=require(_0x5d65('0x7'));module[_0x5d65('0x8')]=function(_0x26d44b,_0x265dc5){return _0x26d44b[_0x5d65('0x9')](_0x5d65('0xa'),attributes,{'tableName':_0x5d65('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2af0422..e496d34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['debug','Variable,\x20%s,\x20%s,\x20%s','error','message','result','catch','ShowVariable','options','raw','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Variable,\x20%s,\x20%s','request\x20sent'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0xa41a,0x6b));var _0xaa41=function(_0x1751cf,_0x183768){_0x1751cf=_0x1751cf-0x0;var _0xbdebdd=_0xa41a[_0x1751cf];return _0xbdebdd;};'use strict';var _=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var moment=require('moment');var BPromise=require(_0xaa41('0x2'));var rs=require(_0xaa41('0x3'));var fs=require('fs');var Redis=require(_0xaa41('0x4'));var db=require(_0xaa41('0x5'))['db'];var utils=require(_0xaa41('0x6'));var logger=require(_0xaa41('0x7'))(_0xaa41('0x8'));var config=require(_0xaa41('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xaa41('0xa')][_0xaa41('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x54bc5a,_0x5b1fff,_0x179545){return new BPromise(function(_0x202cce,_0x588ab4){return client[_0xaa41('0xc')](_0x54bc5a,_0x179545)[_0xaa41('0xd')](function(_0x409dab){logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));logger[_0xaa41('0x11')](_0xaa41('0x12'),_0x5b1fff,_0xaa41('0x10'),JSON['stringify'](_0x409dab));if(_0x409dab[_0xaa41('0x13')]){if(_0x409dab[_0xaa41('0x13')]['code']===0x1f4){logger['error'](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x588ab4(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x202cce(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}else{logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));_0x202cce(_0x409dab[_0xaa41('0x15')]['message']);}})[_0xaa41('0x16')](function(_0x16b930){logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x16b930);_0x588ab4(_0x16b930);});});}exports[_0xaa41('0x17')]=function(_0xd20ddf){var _0x29efe5=this;return new Promise(function(_0x46e6d3,_0x150ddf){return db['Variable']['find']({'raw':_0xd20ddf[_0xaa41('0x18')]?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x19')]===undefined?!![]:![]:!![],'where':_0xd20ddf['options']?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1a')]||null:null,'attributes':_0xd20ddf['options']?_0xd20ddf['options'][_0xaa41('0x1b')]||null:null,'include':_0xd20ddf['options']?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1c')]?_[_0xaa41('0x1d')](_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1c')],function(_0x4eb01f){return{'model':db[_0x4eb01f[_0xaa41('0x1e')]],'as':_0x4eb01f['as'],'attributes':_0x4eb01f[_0xaa41('0x1b')],'include':_0x4eb01f[_0xaa41('0x1c')]?_[_0xaa41('0x1d')](_0x4eb01f[_0xaa41('0x1c')],function(_0xa1f024){return{'model':db[_0xa1f024['model']],'as':_0xa1f024['as'],'attributes':_0xa1f024['attributes'],'include':_0xa1f024[_0xaa41('0x1c')]?_['map'](_0xa1f024['include'],function(_0x12e362){return{'model':db[_0x12e362['model']],'as':_0x12e362['as'],'attributes':_0x12e362['attributes']};}):[]};}):[]};}):[]:[]})[_0xaa41('0xd')](function(_0x9c8c21){logger[_0xaa41('0xe')](_0xaa41('0x17'),_0xd20ddf);logger[_0xaa41('0x11')](_0xaa41('0x17'),_0xd20ddf,JSON['stringify'](_0x9c8c21));_0x46e6d3(_0x9c8c21);})[_0xaa41('0x16')](function(_0x1f0275){logger[_0xaa41('0x13')](_0xaa41('0x17'),_0x1f0275[_0xaa41('0x14')],_0xd20ddf);_0x150ddf(_0x29efe5[_0xaa41('0x13')](0x1f4,_0x1f0275[_0xaa41('0x14')]));});});};
\ No newline at end of file
+var _0x6aa7=['include','model','attributes','map','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowVariable','find','options','raw','where'];(function(_0x12ac7,_0xb10bdd){var _0x275bec=function(_0x449a65){while(--_0x449a65){_0x12ac7['push'](_0x12ac7['shift']());}};_0x275bec(++_0xb10bdd);}(_0x6aa7,0x178));var _0x76aa=function(_0x19259f,_0x3f4f2e){_0x19259f=_0x19259f-0x0;var _0x3858fb=_0x6aa7[_0x19259f];return _0x3858fb;};'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);});});}exports[_0x76aa('0x16')]=function(_0x21c16d){var _0xa1bc7=this;return new Promise(function(_0x3ead3f,_0x496902){return db['Variable'][_0x76aa('0x17')]({'raw':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x19')]===undefined?!![]:![]:!![],'where':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1a')]||null:null,'attributes':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')]['attributes']||null:null,'include':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1b')]?_['map'](_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1b')],function(_0x31252f){return{'model':db[_0x31252f[_0x76aa('0x1c')]],'as':_0x31252f['as'],'attributes':_0x31252f[_0x76aa('0x1d')],'include':_0x31252f[_0x76aa('0x1b')]?_[_0x76aa('0x1e')](_0x31252f[_0x76aa('0x1b')],function(_0x32bf9f){return{'model':db[_0x32bf9f[_0x76aa('0x1c')]],'as':_0x32bf9f['as'],'attributes':_0x32bf9f[_0x76aa('0x1d')],'include':_0x32bf9f[_0x76aa('0x1b')]?_[_0x76aa('0x1e')](_0x32bf9f['include'],function(_0xb5e8a9){return{'model':db[_0xb5e8a9[_0x76aa('0x1c')]],'as':_0xb5e8a9['as'],'attributes':_0xb5e8a9[_0x76aa('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x76aa('0xa')](function(_0xa1e6){logger[_0x76aa('0xb')](_0x76aa('0x16'),_0x21c16d);logger[_0x76aa('0xe')](_0x76aa('0x16'),_0x21c16d,JSON[_0x76aa('0x10')](_0xa1e6));_0x3ead3f(_0xa1e6);})['catch'](function(_0x3fcb7f){logger['error'](_0x76aa('0x16'),_0x3fcb7f[_0x76aa('0x13')],_0x21c16d);_0x496902(_0xa1bc7[_0x76aa('0x11')](0x1f4,_0x3fcb7f[_0x76aa('0x13')]));});});};
\ No newline at end of file
index 54e8772..6135298 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x382e=['isAuthenticated','canUpdate','fetch','/reset','reset','pull','restart','/migrations','migrations','exports','Router','./version.controller','get','index'];(function(_0x342de5,_0x2da837){var _0x547862=function(_0x3f012d){while(--_0x3f012d){_0x342de5['push'](_0x342de5['shift']());}};_0x547862(++_0x2da837);}(_0x382e,0x184));var _0xe382=function(_0x36b304,_0x9c1dc0){_0x36b304=_0x36b304-0x0;var _0x22c1f2=_0x382e[_0x36b304];return _0x22c1f2;};'use strict';var express=require('express');var router=express[_0xe382('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0xe382('0x1'));router[_0xe382('0x2')]('/',controller[_0xe382('0x3')]);router[_0xe382('0x2')]('/fetch',auth[_0xe382('0x4')](),auth[_0xe382('0x5')](),controller[_0xe382('0x6')]);router[_0xe382('0x2')](_0xe382('0x7'),auth[_0xe382('0x4')](),auth[_0xe382('0x5')](),controller[_0xe382('0x8')]);router[_0xe382('0x2')]('/pull',auth[_0xe382('0x4')](),auth[_0xe382('0x5')](),controller[_0xe382('0x9')]);router[_0xe382('0x2')]('/restart',auth[_0xe382('0x4')](),controller[_0xe382('0xa')]);router['get'](_0xe382('0xb'),controller[_0xe382('0xc')]);module[_0xe382('0xd')]=router;
\ No newline at end of file
+var _0xb0b5=['isAuthenticated','canUpdate','fetch','get','/reset','/pull','pull','restart','/migrations','exports','express','Router','../../components/auth/service','./version.controller','index','/fetch'];(function(_0x2d164a,_0x141ef6){var _0x529493=function(_0x593171){while(--_0x593171){_0x2d164a['push'](_0x2d164a['shift']());}};_0x529493(++_0x141ef6);}(_0xb0b5,0xca));var _0x5b0b=function(_0x25a233,_0x1402dd){_0x25a233=_0x25a233-0x0;var _0x48ed17=_0xb0b5[_0x25a233];return _0x48ed17;};'use strict';var express=require(_0x5b0b('0x0'));var router=express[_0x5b0b('0x1')]();var auth=require(_0x5b0b('0x2'));var controller=require(_0x5b0b('0x3'));router['get']('/',controller[_0x5b0b('0x4')]);router['get'](_0x5b0b('0x5'),auth[_0x5b0b('0x6')](),auth[_0x5b0b('0x7')](),controller[_0x5b0b('0x8')]);router[_0x5b0b('0x9')](_0x5b0b('0xa'),auth[_0x5b0b('0x6')](),auth[_0x5b0b('0x7')](),controller['reset']);router['get'](_0x5b0b('0xb'),auth[_0x5b0b('0x6')](),auth[_0x5b0b('0x7')](),controller[_0x5b0b('0xc')]);router[_0x5b0b('0x9')]('/restart',auth['isAuthenticated'](),controller[_0x5b0b('0xd')]);router[_0x5b0b('0x9')](_0x5b0b('0xe'),controller['migrations']);module[_0x5b0b('0xf')]=router;
\ No newline at end of file
index 8ccd11c..bef6b6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc14c=['root','index','exports','query','latest','tags','2.0.0','status','json','fetch','origin','master','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','git\x20reset\x20--hard','restart','motion2','then','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','server','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','join','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','exec','../../config/environment','../../config/pm2','update','simple-git'];(function(_0x28ea3b,_0x13d7a1){var _0x5ac766=function(_0x1ea77b){while(--_0x1ea77b){_0x28ea3b['push'](_0x28ea3b['shift']());}};_0x5ac766(++_0x13d7a1);}(_0xc14c,0x85));var _0xcc14=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xc14c[_0x40a045];return _0x1a687c;};'use strict';var Umzug=require(_0xcc14('0x0'));var path=require(_0xcc14('0x1'));var fs=require('fs');var _=require(_0xcc14('0x2'));var pkginfo=require(_0xcc14('0x3'))(module,_0xcc14('0x4'));var compareVersions=require(_0xcc14('0x5'));var exec=require('child_process')[_0xcc14('0x6')];var db=require('../../mysqldb')['db'];var config=require(_0xcc14('0x7'));var pm2=require(_0xcc14('0x8'));var logger=require('../../config/logger')(_0xcc14('0x9'));var git=require(_0xcc14('0xa'))(config[_0xcc14('0xb')]);exports[_0xcc14('0xc')]=function(_0x46321c,_0x3371ab){var _0x3629cc={'current':module[_0xcc14('0xd')][_0xcc14('0x4')],'phonebar':0x2};if(_0x46321c[_0xcc14('0xe')]&&_0x46321c[_0xcc14('0xe')][_0xcc14('0xf')]){return git['fetch']()[_0xcc14('0x10')](function(_0x2b394f,_0x38b43c){_0x3629cc[_0xcc14('0xf')]=(_0x2b394f?module[_0xcc14('0xd')][_0xcc14('0x4')]:_0x38b43c[_0xcc14('0xf')])||_0xcc14('0x11');return _0x3371ab[_0xcc14('0x12')](0xc8)['json'](_0x3629cc);});}else{return _0x3371ab[_0xcc14('0x12')](0xc8)[_0xcc14('0x13')](_0x3629cc);}};exports[_0xcc14('0x14')]=function(_0xcca209,_0xf20ff5){return git[_0xcc14('0x14')]([_0xcc14('0x15'),_0xcc14('0x16')],function(_0x43a9c2){if(_0x43a9c2){logger[_0xcc14('0x17')](_0x43a9c2);return _0xf20ff5[_0xcc14('0x12')](0x1f4)[_0xcc14('0x13')](_0x43a9c2);}logger[_0xcc14('0x18')](_0xcc14('0x19'));return _0xf20ff5[_0xcc14('0x12')](0xc8)[_0xcc14('0x13')]({'output':_0xcc14('0x1a')});});};exports[_0xcc14('0x1b')]=function(_0x2f4ce2,_0x1d33df){return git[_0xcc14('0x1b')](['--hard','FETCH_HEAD'],function(_0x402f39){if(_0x402f39){logger[_0xcc14('0x17')](_0x402f39);return _0x1d33df[_0xcc14('0x12')](0x1f4)['json'](_0x402f39);}logger[_0xcc14('0x18')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x1d33df[_0xcc14('0x12')](0xc8)[_0xcc14('0x13')]({'output':_0xcc14('0x1c')});});};exports['pull']=function(_0x5b242c,_0x143ab2){exec('npm\x20install\x20--production',function(_0x12fb19,_0x51462f,_0xec16b9){logger['info'](_0x51462f);logger[_0xcc14('0x18')](_0xec16b9);if(_0x12fb19){logger[_0xcc14('0x17')](_0x12fb19);return _0x143ab2['status'](0x1f4)[_0xcc14('0x13')](_0x12fb19);}return _0x143ab2['status'](0xc8)[_0xcc14('0x13')]({'output':_0x51462f});});};exports[_0xcc14('0x1d')]=function(_0x9afcfc,_0xdb37d3){return pm2['restart'](_0xcc14('0x1e'))[_0xcc14('0x1f')](function(_0x4a353c){logger[_0xcc14('0x18')]('pm2\x20restart\x20motion\x20%s',_0x4a353c);return _0xdb37d3[_0xcc14('0x12')](0xc8)[_0xcc14('0x13')]({'output':_0xcc14('0x20')});})[_0xcc14('0x21')](function(_0xc66942){logger['error'](_0xc66942);return _0xdb37d3[_0xcc14('0x12')](0x1f4)[_0xcc14('0x13')](_0xc66942);});};exports[_0xcc14('0x22')]=function(_0x3556c7,_0x491bf8){var _0x36b83d=fs['readdirSync'](path['join'](config[_0xcc14('0xb')],_0xcc14('0x23'),_0xcc14('0x22')));var _0x3a383b=[];for(var _0x2a5cdf=0x0;_0x2a5cdf<_0x36b83d[_0xcc14('0x24')];_0x2a5cdf++){var _0x5abaca=_0x36b83d[_0x2a5cdf][_0xcc14('0x25')](_0xcc14('0x26'),'');if(compareVersions(module[_0xcc14('0xd')][_0xcc14('0x4')],_0x5abaca)===-0x1){_0x3a383b[_0xcc14('0x27')](_0x5abaca);}}if(_0x3a383b[_0xcc14('0x24')]){var _0x2610b8=_0x3a383b[_0xcc14('0x28')](compareVersions);var _0x2fdca3=new Umzug({'storage':_0xcc14('0x29'),'storageOptions':{'model':db[_0xcc14('0x2a')],'modelName':_0xcc14('0x2a'),'columnName':'version'},'migrations':{'params':[db[_0xcc14('0x29')][_0xcc14('0x2b')](),db[_0xcc14('0x29')]['constructor'],function(){throw new Error('Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.');}],'path':path[_0xcc14('0x2c')](config['root'],_0xcc14('0x23'),'migrations'),'pattern':/\.js$/}});_0x2fdca3['up']({'migrations':_['map'](_0x2610b8,function(_0xaf25f3){return _0xaf25f3+_0xcc14('0x26');})})['then'](function(){return _0x491bf8[_0xcc14('0x12')](0xc8)[_0xcc14('0x13')]({'output':_0xcc14('0x2d')+module['exports']['version']+_0xcc14('0x2e')+_['last'](_0x2610b8),'migrations':_[_0xcc14('0x2c')](_0x2610b8)});})['catch'](function(_0x4e3860){if(_0x4e3860 instanceof db[_0xcc14('0x29')]['UniqueConstraintError']){return _0x491bf8[_0xcc14('0x12')](0xc8)['json']({'output':_0xcc14('0x2f')});}else{return _0x491bf8[_0xcc14('0x12')](0x1f4)[_0xcc14('0x13')](_0x4e3860);}});}else{return _0x491bf8['status'](0xc8)['json']({'output':_0xcc14('0x2f')});}};
\ No newline at end of file
+var _0x89e2=['catch','UniqueConstraintError','umzug','path','pkginfo','version','compare-versions','child_process','exec','../../mysqldb','../../config/logger','update','simple-git','root','exports','latest','tags','2.0.0','status','json','fetch','origin','master','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','error','pull','npm\x20install\x20--production','restart','motion2','then','readdirSync','join','server','migrations','length','replace','sequelize','Migration','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','.js','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last'];(function(_0x43077b,_0x2e8274){var _0x429348=function(_0x4e8d01){while(--_0x4e8d01){_0x43077b['push'](_0x43077b['shift']());}};_0x429348(++_0x2e8274);}(_0x89e2,0x12e));var _0x289e=function(_0x3cd440,_0x11496c){_0x3cd440=_0x3cd440-0x0;var _0x39bd11=_0x89e2[_0x3cd440];return _0x39bd11;};'use strict';var Umzug=require(_0x289e('0x0'));var path=require(_0x289e('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x289e('0x2'))(module,_0x289e('0x3'));var compareVersions=require(_0x289e('0x4'));var exec=require(_0x289e('0x5'))[_0x289e('0x6')];var db=require(_0x289e('0x7'))['db'];var config=require('../../config/environment');var pm2=require('../../config/pm2');var logger=require(_0x289e('0x8'))(_0x289e('0x9'));var git=require(_0x289e('0xa'))(config[_0x289e('0xb')]);exports['index']=function(_0x2d01c7,_0x398a24){var _0x3722b7={'current':module[_0x289e('0xc')][_0x289e('0x3')],'phonebar':0x2};if(_0x2d01c7['query']&&_0x2d01c7['query'][_0x289e('0xd')]){return git['fetch']()[_0x289e('0xe')](function(_0x2dadfd,_0x4603b1){_0x3722b7[_0x289e('0xd')]=(_0x2dadfd?module[_0x289e('0xc')][_0x289e('0x3')]:_0x4603b1[_0x289e('0xd')])||_0x289e('0xf');return _0x398a24[_0x289e('0x10')](0xc8)[_0x289e('0x11')](_0x3722b7);});}else{return _0x398a24[_0x289e('0x10')](0xc8)[_0x289e('0x11')](_0x3722b7);}};exports[_0x289e('0x12')]=function(_0x564040,_0x1f9574){return git[_0x289e('0x12')]([_0x289e('0x13'),_0x289e('0x14')],function(_0x54da43){if(_0x54da43){logger['error'](_0x54da43);return _0x1f9574[_0x289e('0x10')](0x1f4)['json'](_0x54da43);}logger[_0x289e('0x15')](_0x289e('0x16'));return _0x1f9574[_0x289e('0x10')](0xc8)[_0x289e('0x11')]({'output':_0x289e('0x17')});});};exports[_0x289e('0x18')]=function(_0x14cdd5,_0x35632e){return git[_0x289e('0x18')]([_0x289e('0x19'),_0x289e('0x1a')],function(_0x5b9e82){if(_0x5b9e82){logger[_0x289e('0x1b')](_0x5b9e82);return _0x35632e[_0x289e('0x10')](0x1f4)[_0x289e('0x11')](_0x5b9e82);}logger[_0x289e('0x15')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x35632e[_0x289e('0x10')](0xc8)[_0x289e('0x11')]({'output':'git\x20reset\x20--hard'});});};exports[_0x289e('0x1c')]=function(_0x1aa0c3,_0x58b677){exec(_0x289e('0x1d'),function(_0x1b1e12,_0x55146f,_0x533349){logger[_0x289e('0x15')](_0x55146f);logger[_0x289e('0x15')](_0x533349);if(_0x1b1e12){logger['error'](_0x1b1e12);return _0x58b677[_0x289e('0x10')](0x1f4)['json'](_0x1b1e12);}return _0x58b677[_0x289e('0x10')](0xc8)[_0x289e('0x11')]({'output':_0x55146f});});};exports[_0x289e('0x1e')]=function(_0x544cc5,_0x4f8193){return pm2[_0x289e('0x1e')](_0x289e('0x1f'))[_0x289e('0x20')](function(_0x326f72){logger[_0x289e('0x15')]('pm2\x20restart\x20motion\x20%s',_0x326f72);return _0x4f8193[_0x289e('0x10')](0xc8)[_0x289e('0x11')]({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})['catch'](function(_0x404945){logger[_0x289e('0x1b')](_0x404945);return _0x4f8193[_0x289e('0x10')](0x1f4)[_0x289e('0x11')](_0x404945);});};exports['migrations']=function(_0x31e31f,_0x566576){var _0x39f368=fs[_0x289e('0x21')](path[_0x289e('0x22')](config[_0x289e('0xb')],_0x289e('0x23'),_0x289e('0x24')));var _0x1619d9=[];for(var _0x5aa434=0x0;_0x5aa434<_0x39f368[_0x289e('0x25')];_0x5aa434++){var _0x3063f3=_0x39f368[_0x5aa434][_0x289e('0x26')]('.js','');if(compareVersions(module['exports'][_0x289e('0x3')],_0x3063f3)===-0x1){_0x1619d9['push'](_0x3063f3);}}if(_0x1619d9[_0x289e('0x25')]){var _0x4f80cc=_0x1619d9['sort'](compareVersions);var _0x477f62=new Umzug({'storage':_0x289e('0x27'),'storageOptions':{'model':db[_0x289e('0x28')],'modelName':_0x289e('0x28'),'columnName':_0x289e('0x3')},'migrations':{'params':[db[_0x289e('0x27')]['getQueryInterface'](),db[_0x289e('0x27')][_0x289e('0x29')],function(){throw new Error(_0x289e('0x2a'));}],'path':path['join'](config[_0x289e('0xb')],_0x289e('0x23'),'migrations'),'pattern':/\.js$/}});_0x477f62['up']({'migrations':_[_0x289e('0x2b')](_0x4f80cc,function(_0x64ec8d){return _0x64ec8d+_0x289e('0x2c');})})[_0x289e('0x20')](function(){return _0x566576[_0x289e('0x10')](0xc8)['json']({'output':_0x289e('0x2d')+module[_0x289e('0xc')]['version']+_0x289e('0x2e')+_[_0x289e('0x2f')](_0x4f80cc),'migrations':_[_0x289e('0x22')](_0x4f80cc)});})[_0x289e('0x30')](function(_0x58f778){if(_0x58f778 instanceof db[_0x289e('0x27')][_0x289e('0x31')]){return _0x566576[_0x289e('0x10')](0xc8)[_0x289e('0x11')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x566576[_0x289e('0x10')](0x1f4)[_0x289e('0x11')](_0x58f778);}});}else{return _0x566576['status'](0xc8)[_0x289e('0x11')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
index 35d946f..6c7d66a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9b9=['./voiceAgentReport.controller','get','isAuthenticated','show','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x288f5e,_0x205edd){var _0x476cc9=function(_0x796f53){while(--_0x796f53){_0x288f5e['push'](_0x288f5e['shift']());}};_0x476cc9(++_0x205edd);}(_0xf9b9,0x1c4));var _0x9f9b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf9b9[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x9f9b('0x0'));var util=require(_0x9f9b('0x1'));var path=require('path');var timeout=require(_0x9f9b('0x2'));var express=require(_0x9f9b('0x3'));var router=express['Router']();var fs_extra=require(_0x9f9b('0x4'));var auth=require(_0x9f9b('0x5'));var interaction=require(_0x9f9b('0x6'));var config=require('../../config/environment');var controller=require(_0x9f9b('0x7'));router[_0x9f9b('0x8')]('/',auth[_0x9f9b('0x9')](),controller['index']);router[_0x9f9b('0x8')]('/describe',auth[_0x9f9b('0x9')](),controller['describe']);router[_0x9f9b('0x8')]('/:id',auth[_0x9f9b('0x9')](),controller[_0x9f9b('0xa')]);router['post']('/',auth[_0x9f9b('0x9')](),controller['create']);router[_0x9f9b('0xb')](_0x9f9b('0xc'),auth[_0x9f9b('0x9')](),controller[_0x9f9b('0xd')]);router[_0x9f9b('0xe')](_0x9f9b('0xc'),auth['isAuthenticated'](),controller[_0x9f9b('0xf')]);module[_0x9f9b('0x10')]=router;
\ No newline at end of file
+var _0xf49a=['describe','/:id','post','create','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./voiceAgentReport.controller','isAuthenticated','index','get','/describe'];(function(_0x481559,_0x195bdc){var _0x573eae=function(_0x31337e){while(--_0x31337e){_0x481559['push'](_0x481559['shift']());}};_0x573eae(++_0x195bdc);}(_0xf49a,0x8d));var _0xaf49=function(_0x545312,_0x563053){_0x545312=_0x545312-0x0;var _0x52bc56=_0xf49a[_0x545312];return _0x52bc56;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xaf49('0x0'));var timeout=require(_0xaf49('0x1'));var express=require(_0xaf49('0x2'));var router=express[_0xaf49('0x3')]();var fs_extra=require(_0xaf49('0x4'));var auth=require(_0xaf49('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xaf49('0x6'));router['get']('/',auth[_0xaf49('0x7')](),controller[_0xaf49('0x8')]);router[_0xaf49('0x9')](_0xaf49('0xa'),auth[_0xaf49('0x7')](),controller[_0xaf49('0xb')]);router[_0xaf49('0x9')](_0xaf49('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xaf49('0xd')]('/',auth[_0xaf49('0x7')](),controller[_0xaf49('0xe')]);router['put'](_0xaf49('0xc'),auth[_0xaf49('0x7')](),controller[_0xaf49('0xf')]);router[_0xaf49('0x10')]('/:id',auth[_0xaf49('0x7')](),controller[_0xaf49('0x11')]);module[_0xaf49('0x12')]=router;
\ No newline at end of file
index a519d08..4d48ec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81cb=['BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x4e1419,_0xe65f19){var _0x5bbbac=function(_0x3a2d3f){while(--_0x3a2d3f){_0x4e1419['push'](_0x4e1419['shift']());}};_0x5bbbac(++_0xe65f19);}(_0x81cb,0xaa));var _0xb81c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x81cb[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xb81c('0x0'));module[_0xb81c('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xb81c('0x2')]},'calleridnum':{'type':Sequelize[_0xb81c('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xb81c('0x2')]},'interface':{'type':Sequelize[_0xb81c('0x2')]},'membername':{'type':Sequelize[_0xb81c('0x2')]},'agentcalledAt':{'type':Sequelize[_0xb81c('0x3')]},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0xb81c('0x3')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xb81c('0x4')]},'agentcomplete':{'type':Sequelize[_0xb81c('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xb81c('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xb81c('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xb81c('0x4')]},'agentacw':{'type':Sequelize[_0xb81c('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xb81c('0x4')]},'reason':{'type':Sequelize[_0xb81c('0x2')]},'lastevent':{'type':Sequelize[_0xb81c('0x2')]},'channel':{'type':Sequelize[_0xb81c('0x2')]},'channelstate':{'type':Sequelize[_0xb81c('0x4')]},'channelstatedesc':{'type':Sequelize[_0xb81c('0x2')]},'connectedlinenum':{'type':Sequelize[_0xb81c('0x2')]},'connectedlinename':{'type':Sequelize[_0xb81c('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xb81c('0x2')]},'context':{'type':Sequelize[_0xb81c('0x2')]},'exten':{'type':Sequelize[_0xb81c('0x2')]},'priority':{'type':Sequelize[_0xb81c('0x2')]},'destchannel':{'type':Sequelize[_0xb81c('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xb81c('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xb81c('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xb81c('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0xb81c('0x2')]},'destaccountcode':{'type':Sequelize[_0xb81c('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xb81c('0x2')]},'destpriority':{'type':Sequelize[_0xb81c('0x2')]},'destuniqueid':{'type':Sequelize[_0xb81c('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize['STRING']},'answeredelsewheremembername':{'type':Sequelize[_0xb81c('0x2')]},'transfer':{'type':Sequelize[_0xb81c('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0xb81c('0x6')},'transferexten':{'type':Sequelize[_0xb81c('0x2')]},'transferuniqueid':{'type':Sequelize[_0xb81c('0x2')]},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8383=['BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING','DATE','INTEGER'];(function(_0x237f07,_0x2142a9){var _0x22c133=function(_0x3e1280){while(--_0x3e1280){_0x237f07['push'](_0x237f07['shift']());}};_0x22c133(++_0x2142a9);}(_0x8383,0x98));var _0x3838=function(_0x4f8435,_0x364724){_0x4f8435=_0x4f8435-0x0;var _0x30808e=_0x8383[_0x4f8435];return _0x30808e;};'use strict';var Sequelize=require(_0x3838('0x0'));module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x3838('0x1')]},'calleridnum':{'type':Sequelize[_0x3838('0x1')]},'calleridname':{'type':Sequelize[_0x3838('0x1')]},'queue':{'type':Sequelize[_0x3838('0x1')]},'interface':{'type':Sequelize[_0x3838('0x1')]},'membername':{'type':Sequelize[_0x3838('0x1')]},'agentcalledAt':{'type':Sequelize[_0x3838('0x2')]},'agentconnectAt':{'type':Sequelize[_0x3838('0x2')]},'agentcompleteAt':{'type':Sequelize[_0x3838('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0x3838('0x2')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x3838('0x3')]},'agentcomplete':{'type':Sequelize[_0x3838('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x3838('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0x3838('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x3838('0x3')]},'reason':{'type':Sequelize[_0x3838('0x1')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x3838('0x1')]},'channelstate':{'type':Sequelize[_0x3838('0x3')]},'channelstatedesc':{'type':Sequelize[_0x3838('0x1')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x3838('0x1')]},'language':{'type':Sequelize[_0x3838('0x1')]},'accountcode':{'type':Sequelize[_0x3838('0x1')]},'context':{'type':Sequelize[_0x3838('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x3838('0x1')]},'destchannel':{'type':Sequelize[_0x3838('0x1')]},'destchannelstate':{'type':Sequelize[_0x3838('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x3838('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x3838('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x3838('0x1')]},'destlanguage':{'type':Sequelize[_0x3838('0x1')]},'destaccountcode':{'type':Sequelize[_0x3838('0x1')]},'destcontext':{'type':Sequelize[_0x3838('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x3838('0x1')]},'destuniqueid':{'type':Sequelize[_0x3838('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x3838('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0x3838('0x1')]},'transfer':{'type':Sequelize[_0x3838('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x3838('0x5')},'transferexten':{'type':Sequelize[_0x3838('0x1')]},'transferuniqueid':{'type':Sequelize[_0x3838('0x1')]},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 4acac5d..3a2bb2b 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(_0xb24a3e,_0x4a3594){var _0x4038d7=function(_0x1ea3c3){while(--_0x1ea3c3){_0xb24a3e['push'](_0xb24a3e['shift']());}};_0x4038d7(++_0x4a3594);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
+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(_0x2642cb,_0x4b917f){var _0xe6e41=function(_0x281676){while(--_0x281676){_0x2642cb['push'](_0x2642cb['shift']());}};_0xe6e41(++_0x4b917f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'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 2f220b4..8340cf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7923=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','exports','define','VoiceAgentReport','destuniqueid','lodash'];(function(_0x52a857,_0xc99fa1){var _0x4e2aae=function(_0x5410d9){while(--_0x5410d9){_0x52a857['push'](_0x52a857['shift']());}};_0x4e2aae(++_0xc99fa1);}(_0x7923,0x8f));var _0x3792=function(_0x1c5ec4,_0x27d08e){_0x1c5ec4=_0x1c5ec4-0x0;var _0x54e39d=_0x7923[_0x1c5ec4];return _0x54e39d;};'use strict';var _=require(_0x3792('0x0'));var util=require(_0x3792('0x1'));var logger=require(_0x3792('0x2'))(_0x3792('0x3'));var moment=require(_0x3792('0x4'));var BPromise=require(_0x3792('0x5'));var rp=require(_0x3792('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3792('0x7'));var config=require('../../config/environment');var attributes=require('./voiceAgentReport.attributes');module[_0x3792('0x8')]=function(_0x4f98c6,_0x326cc2){return _0x4f98c6[_0x3792('0x9')](_0x3792('0xa'),attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':['uniqueid',_0x3792('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6c7b=['report_agent','uniqueid','destuniqueid','lodash','moment','request-promise','path','rimraf','./voiceAgentReport.attributes','exports','define'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x6c7b,0x10b));var _0xb6c7=function(_0x4728e7,_0x11e36f){_0x4728e7=_0x4728e7-0x0;var _0x518850=_0x6c7b[_0x4728e7];return _0x518850;};'use strict';var _=require(_0xb6c7('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb6c7('0x1'));var BPromise=require('bluebird');var rp=require(_0xb6c7('0x2'));var fs=require('fs');var path=require(_0xb6c7('0x3'));var rimraf=require(_0xb6c7('0x4'));var config=require('../../config/environment');var attributes=require(_0xb6c7('0x5'));module[_0xb6c7('0x6')]=function(_0xfe3eb9,_0x219abc){return _0xfe3eb9[_0xb6c7('0x7')]('VoiceAgentReport',attributes,{'tableName':_0xb6c7('0x8'),'paranoid':![],'indexes':[{'fields':[_0xb6c7('0x9'),_0xb6c7('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index c781076..3f37d27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0dd=['attributes','UpdateVoiceAgentReport','stringify','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','error','VoiceAgentReport,\x20%s,\x20%s','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw','update','where'];(function(_0x124577,_0x2ad2de){var _0x184b77=function(_0x138388){while(--_0x138388){_0x124577['push'](_0x124577['shift']());}};_0x184b77(++_0x2ad2de);}(_0xe0dd,0xfb));var _0xde0d=function(_0x5c4585,_0x3d0eab){_0x5c4585=_0x5c4585-0x0;var _0x21dede=_0xe0dd[_0x5c4585];return _0x21dede;};'use strict';var _=require('lodash');var util=require(_0xde0d('0x0'));var moment=require('moment');var BPromise=require(_0xde0d('0x1'));var rs=require(_0xde0d('0x2'));var fs=require('fs');var Redis=require(_0xde0d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xde0d('0x4'));var logger=require(_0xde0d('0x5'))(_0xde0d('0x6'));var config=require(_0xde0d('0x7'));var jayson=require(_0xde0d('0x8'));var client=jayson[_0xde0d('0x9')][_0xde0d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc60f34,_0x343baa,_0x21a2c2){return new BPromise(function(_0x792e33,_0x1edf49){return client['request'](_0xc60f34,_0x21a2c2)[_0xde0d('0xb')](function(_0x5fb8f8){logger[_0xde0d('0xc')]('VoiceAgentReport,\x20%s,\x20%s',_0x343baa,_0xde0d('0xd'));logger[_0xde0d('0xe')]('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x343baa,_0xde0d('0xd'),JSON['stringify'](_0x5fb8f8));if(_0x5fb8f8[_0xde0d('0xf')]){if(_0x5fb8f8[_0xde0d('0xf')]['code']===0x1f4){logger['error'](_0xde0d('0x10'),_0x343baa,_0x5fb8f8[_0xde0d('0xf')][_0xde0d('0x11')]);return _0x1edf49(_0x5fb8f8['error'][_0xde0d('0x11')]);}logger['error'](_0xde0d('0x10'),_0x343baa,_0x5fb8f8[_0xde0d('0xf')][_0xde0d('0x11')]);return _0x792e33(_0x5fb8f8['error'][_0xde0d('0x11')]);}else{logger[_0xde0d('0xc')](_0xde0d('0x10'),_0x343baa,_0xde0d('0xd'));_0x792e33(_0x5fb8f8[_0xde0d('0x12')]['message']);}})[_0xde0d('0x13')](function(_0x349451){logger['error'](_0xde0d('0x10'),_0x343baa,_0x349451);_0x1edf49(_0x349451);});});}exports[_0xde0d('0x14')]=function(_0x8c7459){var _0x50d980=this;return new Promise(function(_0x4c0a2c,_0x2fd587){return db[_0xde0d('0x15')][_0xde0d('0x16')](_0x8c7459[_0xde0d('0x17')],{'raw':_0x8c7459[_0xde0d('0x18')]?_0x8c7459[_0xde0d('0x18')][_0xde0d('0x19')]===undefined?!![]:![]:!![]})[_0xde0d('0xb')](function(_0x359c19){logger[_0xde0d('0xc')]('CreateVoiceAgentReport',_0x8c7459);logger[_0xde0d('0xe')]('CreateVoiceAgentReport',_0x8c7459,JSON['stringify'](_0x359c19));_0x4c0a2c(_0x359c19);})[_0xde0d('0x13')](function(_0x1f69b0){logger[_0xde0d('0xf')]('CreateVoiceAgentReport',_0x1f69b0['message'],_0x8c7459);_0x2fd587(_0x50d980[_0xde0d('0xf')](0x1f4,_0x1f69b0[_0xde0d('0x11')]));});});};exports['UpdateVoiceAgentReport']=function(_0x5905e8){var _0x32730b=this;return new Promise(function(_0x3fdb8e,_0xc48b20){return db[_0xde0d('0x15')][_0xde0d('0x1a')](_0x5905e8[_0xde0d('0x17')],{'raw':_0x5905e8['options']?_0x5905e8[_0xde0d('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5905e8[_0xde0d('0x18')]?_0x5905e8['options'][_0xde0d('0x1b')]||null:null,'attributes':_0x5905e8[_0xde0d('0x18')]?_0x5905e8[_0xde0d('0x18')][_0xde0d('0x1c')]||null:null,'limit':_0x5905e8[_0xde0d('0x18')]?_0x5905e8['options']['limit']||null:null})[_0xde0d('0xb')](function(_0x57fc1f){logger['info']('UpdateVoiceAgentReport',_0x5905e8);logger['debug'](_0xde0d('0x1d'),_0x5905e8,JSON[_0xde0d('0x1e')](_0x57fc1f));_0x3fdb8e(_0x57fc1f);})[_0xde0d('0x13')](function(_0x2d60d4){logger[_0xde0d('0xf')](_0xde0d('0x1d'),_0x2d60d4[_0xde0d('0x11')],_0x5905e8);_0xc48b20(_0x32730b[_0xde0d('0xf')](0x1f4,_0x2d60d4['message']));});});};
\ No newline at end of file
+var _0x83f0=['info','catch','UpdateVoiceAgentReport','update','where','attributes','limit','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','client','http','request','then','VoiceAgentReport,\x20%s,\x20%s','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw'];(function(_0x3547fc,_0xc8d1a9){var _0x485eca=function(_0x5dbba8){while(--_0x5dbba8){_0x3547fc['push'](_0x3547fc['shift']());}};_0x485eca(++_0xc8d1a9);}(_0x83f0,0x151));var _0x083f=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x83f0[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0x083f('0x0'));var util=require(_0x083f('0x1'));var moment=require(_0x083f('0x2'));var BPromise=require(_0x083f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x083f('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x083f('0x5'))(_0x083f('0x6'));var config=require(_0x083f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x083f('0x8')][_0x083f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x13f633,_0x40c427,_0x23a3e5){return new BPromise(function(_0x3018ed,_0x26c8c5){return client[_0x083f('0xa')](_0x13f633,_0x23a3e5)[_0x083f('0xb')](function(_0x2b1996){logger['info'](_0x083f('0xc'),_0x40c427,'request\x20sent');logger[_0x083f('0xd')](_0x083f('0xe'),_0x40c427,'request\x20sent',JSON[_0x083f('0xf')](_0x2b1996));if(_0x2b1996[_0x083f('0x10')]){if(_0x2b1996['error'][_0x083f('0x11')]===0x1f4){logger[_0x083f('0x10')]('VoiceAgentReport,\x20%s,\x20%s',_0x40c427,_0x2b1996['error'][_0x083f('0x12')]);return _0x26c8c5(_0x2b1996['error'][_0x083f('0x12')]);}logger[_0x083f('0x10')](_0x083f('0xc'),_0x40c427,_0x2b1996[_0x083f('0x10')]['message']);return _0x3018ed(_0x2b1996[_0x083f('0x10')][_0x083f('0x12')]);}else{logger['info'](_0x083f('0xc'),_0x40c427,'request\x20sent');_0x3018ed(_0x2b1996[_0x083f('0x13')][_0x083f('0x12')]);}})['catch'](function(_0x45839a){logger[_0x083f('0x10')](_0x083f('0xc'),_0x40c427,_0x45839a);_0x26c8c5(_0x45839a);});});}exports[_0x083f('0x14')]=function(_0x376b19){var _0x1f43d6=this;return new Promise(function(_0x44db45,_0x485ec9){return db[_0x083f('0x15')][_0x083f('0x16')](_0x376b19[_0x083f('0x17')],{'raw':_0x376b19['options']?_0x376b19[_0x083f('0x18')][_0x083f('0x19')]===undefined?!![]:![]:!![]})[_0x083f('0xb')](function(_0x322734){logger[_0x083f('0x1a')](_0x083f('0x14'),_0x376b19);logger[_0x083f('0xd')]('CreateVoiceAgentReport',_0x376b19,JSON[_0x083f('0xf')](_0x322734));_0x44db45(_0x322734);})[_0x083f('0x1b')](function(_0x4a7852){logger[_0x083f('0x10')](_0x083f('0x14'),_0x4a7852[_0x083f('0x12')],_0x376b19);_0x485ec9(_0x1f43d6['error'](0x1f4,_0x4a7852[_0x083f('0x12')]));});});};exports[_0x083f('0x1c')]=function(_0x346e04){var _0x3bde98=this;return new Promise(function(_0x1640b1,_0x399a72){return db[_0x083f('0x15')][_0x083f('0x1d')](_0x346e04[_0x083f('0x17')],{'raw':_0x346e04[_0x083f('0x18')]?_0x346e04[_0x083f('0x18')][_0x083f('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x346e04[_0x083f('0x18')]?_0x346e04[_0x083f('0x18')][_0x083f('0x1e')]||null:null,'attributes':_0x346e04[_0x083f('0x18')]?_0x346e04[_0x083f('0x18')][_0x083f('0x1f')]||null:null,'limit':_0x346e04[_0x083f('0x18')]?_0x346e04[_0x083f('0x18')][_0x083f('0x20')]||null:null})[_0x083f('0xb')](function(_0x35310b){logger['info']('UpdateVoiceAgentReport',_0x346e04);logger[_0x083f('0xd')]('UpdateVoiceAgentReport',_0x346e04,JSON[_0x083f('0xf')](_0x35310b));_0x1640b1(_0x35310b);})[_0x083f('0x1b')](function(_0xba59d8){logger[_0x083f('0x10')]('UpdateVoiceAgentReport',_0xba59d8[_0x083f('0x12')],_0x346e04);_0x399a72(_0x3bde98[_0x083f('0x10')](0x1f4,_0xba59d8[_0x083f('0x12')]));});});};
\ No newline at end of file
index a7d769d..753f4f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ad3=['isAuthenticated','index','describe','create','/:id','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get'];(function(_0x1daaf1,_0x4c488c){var _0x1a6973=function(_0x327cff){while(--_0x327cff){_0x1daaf1['push'](_0x1daaf1['shift']());}};_0x1a6973(++_0x4c488c);}(_0x5ad3,0x1e2));var _0x35ad=function(_0xd299c3,_0x4ba0f1){_0xd299c3=_0xd299c3-0x0;var _0x376574=_0x5ad3[_0xd299c3];return _0x376574;};'use strict';var multer=require(_0x35ad('0x0'));var util=require(_0x35ad('0x1'));var path=require(_0x35ad('0x2'));var timeout=require(_0x35ad('0x3'));var express=require('express');var router=express[_0x35ad('0x4')]();var fs_extra=require(_0x35ad('0x5'));var auth=require(_0x35ad('0x6'));var interaction=require(_0x35ad('0x7'));var config=require(_0x35ad('0x8'));var controller=require(_0x35ad('0x9'));router[_0x35ad('0xa')]('/',auth[_0x35ad('0xb')](),controller[_0x35ad('0xc')]);router[_0x35ad('0xa')]('/describe',auth[_0x35ad('0xb')](),controller[_0x35ad('0xd')]);router[_0x35ad('0xa')]('/:id',auth[_0x35ad('0xb')](),controller['show']);router['post']('/',auth[_0x35ad('0xb')](),controller[_0x35ad('0xe')]);router['put'](_0x35ad('0xf'),auth[_0x35ad('0xb')](),controller['update']);router['delete'](_0x35ad('0xf'),auth[_0x35ad('0xb')](),controller['destroy']);module[_0x35ad('0x10')]=router;
\ No newline at end of file
+var _0x9c5a=['fs-extra','../../components/interaction/service','../../config/environment','get','index','describe','isAuthenticated','show','create','update','delete','/:id','destroy','exports','multer','util','connect-timeout','express','Router'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0xaaf087,_0x5630d3){_0xaaf087=_0xaaf087-0x0;var _0x3bf399=_0x9c5a[_0xaaf087];return _0x3bf399;};'use strict';var multer=require(_0xa9c5('0x0'));var util=require(_0xa9c5('0x1'));var path=require('path');var timeout=require(_0xa9c5('0x2'));var express=require(_0xa9c5('0x3'));var router=express[_0xa9c5('0x4')]();var fs_extra=require(_0xa9c5('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa9c5('0x6'));var config=require(_0xa9c5('0x7'));var controller=require('./voiceCallReport.controller');router[_0xa9c5('0x8')]('/',auth['isAuthenticated'](),controller[_0xa9c5('0x9')]);router[_0xa9c5('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xa9c5('0xa')]);router[_0xa9c5('0x8')]('/:id',auth[_0xa9c5('0xb')](),controller[_0xa9c5('0xc')]);router['post']('/',auth[_0xa9c5('0xb')](),controller[_0xa9c5('0xd')]);router['put']('/:id',auth[_0xa9c5('0xb')](),controller[_0xa9c5('0xe')]);router[_0xa9c5('0xf')](_0xa9c5('0x10'),auth[_0xa9c5('0xb')](),controller[_0xa9c5('0x11')]);module[_0xa9c5('0x12')]=router;
\ No newline at end of file
index 1d17dc7..950d047 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac80=['dialer','DATE','INTEGER','sequelize','exports','STRING','ENUM','inbound','internal','outbound','outbound-fax'];(function(_0x38d0f0,_0x29dc18){var _0x329ee0=function(_0x5ad5b3){while(--_0x5ad5b3){_0x38d0f0['push'](_0x38d0f0['shift']());}};_0x329ee0(++_0x29dc18);}(_0xac80,0x163));var _0x0ac8=function(_0x2ae24e,_0x26305b){_0x2ae24e=_0x2ae24e-0x0;var _0x1295b0=_0xac80[_0x2ae24e];return _0x1295b0;};'use strict';var Sequelize=require(_0x0ac8('0x0'));module[_0x0ac8('0x1')]={'uniqueid':{'type':Sequelize[_0x0ac8('0x2')]},'type':{'type':Sequelize[_0x0ac8('0x3')](_0x0ac8('0x4'),_0x0ac8('0x5'),_0x0ac8('0x6'),'inbound-fax',_0x0ac8('0x7'),_0x0ac8('0x8'))},'tag':{'type':Sequelize[_0x0ac8('0x2')]},'accountcode':{'type':Sequelize[_0x0ac8('0x2')]},'source':{'type':Sequelize[_0x0ac8('0x2')]},'destination':{'type':Sequelize[_0x0ac8('0x2')]},'destinationcontext':{'type':Sequelize[_0x0ac8('0x2')]},'callerid':{'type':Sequelize[_0x0ac8('0x2')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0x0ac8('0x2')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize[_0x0ac8('0x9')]},'answertime':{'type':Sequelize[_0x0ac8('0x9')]},'endtime':{'type':Sequelize[_0x0ac8('0x9')]},'duration':{'type':Sequelize[_0x0ac8('0xa')]},'billableseconds':{'type':Sequelize[_0x0ac8('0xa')]},'mohtime':{'type':Sequelize[_0x0ac8('0xa')],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x0ac8('0x2')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0x0ac8('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x0ac8('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x0ac8('0x2')]},'note':{'type':Sequelize[_0x0ac8('0x2')]},'prefix':{'type':Sequelize[_0x0ac8('0x2')]},'routeid':{'type':Sequelize[_0x0ac8('0xa')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x5386=['INTEGER','sequelize','exports','STRING','ENUM','internal','outbound','inbound-fax','outbound-fax','dialer','TEXT','DATE'];(function(_0x1f0464,_0x74c830){var _0x3b8414=function(_0x2c4ff3){while(--_0x2c4ff3){_0x1f0464['push'](_0x1f0464['shift']());}};_0x3b8414(++_0x74c830);}(_0x5386,0x1e1));var _0x6538=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x5386[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0x6538('0x0'));module[_0x6538('0x1')]={'uniqueid':{'type':Sequelize[_0x6538('0x2')]},'type':{'type':Sequelize[_0x6538('0x3')]('inbound',_0x6538('0x4'),_0x6538('0x5'),_0x6538('0x6'),_0x6538('0x7'),_0x6538('0x8'))},'tag':{'type':Sequelize[_0x6538('0x2')]},'accountcode':{'type':Sequelize[_0x6538('0x2')]},'source':{'type':Sequelize[_0x6538('0x2')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0x6538('0x2')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x6538('0x2')]},'destinationchannel':{'type':Sequelize[_0x6538('0x2')]},'lastapplication':{'type':Sequelize[_0x6538('0x2')]},'lastdata':{'type':Sequelize[_0x6538('0x9')]},'starttime':{'type':Sequelize[_0x6538('0xa')]},'systemanswertime':{'type':Sequelize[_0x6538('0xa')]},'answertime':{'type':Sequelize[_0x6538('0xa')]},'endtime':{'type':Sequelize[_0x6538('0xa')]},'duration':{'type':Sequelize[_0x6538('0xb')]},'billableseconds':{'type':Sequelize[_0x6538('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x6538('0x2')]},'amaflags':{'type':Sequelize[_0x6538('0x2')]},'userfield':{'type':Sequelize[_0x6538('0x2')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x6538('0x2')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x6538('0x2')]},'prefix':{'type':Sequelize[_0x6538('0x2')]},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize[_0x6538('0x2')]}};
\ No newline at end of file
index 491057f..9e9a4e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['filter','VIRTUAL','merge','options','includeAll','include','fullname','User','findAll','rows','show','rawAttributes','length','find','catch','body','params','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0xadb5,0xad));var _0x5adb=function(_0x1de25c,_0x7459f5){_0x1de25c=_0x1de25c-0x0;var _0x4b0dee=_0xadb5[_0x1de25c];return _0x4b0dee;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['VoiceCallReport']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'attributes':['id',_0x5adb('0x26'),_0x5adb('0x40'),'alias'],'model':db['User'],'as':_0x5adb('0x41')}];}return db['VoiceCallReport'][_0x5adb('0x42')](_0x5d457e);})[_0x5adb('0x22')](function(_0x299746){_0x1eac55[_0x5adb('0x43')]=_0x299746;return _0x1eac55;})[_0x5adb('0x22')](respondWithFilteredResult(_0x49992e,_0x5d457e))['catch'](handleError(_0x49992e,null));};exports[_0x5adb('0x44')]=function(_0x565b03,_0x508690){var _0x4160ad={'raw':!![],'where':{'id':_0x565b03['params']['id']}},_0x1a256c={};_0x1a256c[_0x5adb('0x2e')]=_[_0x5adb('0x30')](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x1a256c[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x565b03[_0x5adb('0x2f')]);_0x1a256c['filters']=_['intersection'](_0x1a256c[_0x5adb('0x2e')],_0x1a256c[_0x5adb('0x2f')]);_0x4160ad[_0x5adb('0x32')]=_[_0x5adb('0x31')](_0x1a256c['model'],qs['fields'](_0x565b03[_0x5adb('0x2f')][_0x5adb('0x33')]));_0x4160ad[_0x5adb('0x32')]=_0x4160ad[_0x5adb('0x32')][_0x5adb('0x46')]?_0x4160ad['attributes']:_0x1a256c[_0x5adb('0x2e')];if(_0x565b03[_0x5adb('0x2f')]['includeAll']){_0x4160ad[_0x5adb('0x3f')]=[{'all':!![]}];}_0x4160ad=_[_0x5adb('0x3c')]({},_0x4160ad,_0x565b03[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')][_0x5adb('0x47')](_0x4160ad)[_0x5adb('0x22')](handleEntityNotFound(_0x508690,null))[_0x5adb('0x22')](respondWithResult(_0x508690,null))[_0x5adb('0x48')](handleError(_0x508690,null));};exports['create']=function(_0x3a925b,_0x57dc8b){return db['VoiceCallReport']['create'](_0x3a925b[_0x5adb('0x49')],{})[_0x5adb('0x22')](respondWithResult(_0x57dc8b,0xc9))[_0x5adb('0x48')](handleError(_0x57dc8b,null));};exports['destroy']=function(_0x2ad69d,_0x5cbab5){return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'id':_0x2ad69d[_0x5adb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5cbab5,null))[_0x5adb('0x22')](removeEntity(_0x5cbab5,null))['catch'](handleError(_0x5cbab5,null));};exports[_0x5adb('0x4b')]=function(_0x6dc067,_0x55c535){return db[_0x5adb('0x2a')][_0x5adb('0x4b')]()[_0x5adb('0x22')](respondWithResult(_0x55c535,null))[_0x5adb('0x48')](handleError(_0x55c535,null));};exports[_0x5adb('0x21')]=function(_0x4cb36c,_0x36b847){if(_0x4cb36c[_0x5adb('0x49')][_0x5adb('0x4c')]){delete _0x4cb36c[_0x5adb('0x49')]['uniqueid'];}return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'uniqueid':_0x4cb36c[_0x5adb('0x4a')]['id'],'UserId':{'$or':[null,_0x4cb36c['user']['id']]}}})[_0x5adb('0x22')](handleEntityNotFound(_0x36b847,null))[_0x5adb('0x22')](saveUpdates(_0x4cb36c[_0x5adb('0x49')],null))[_0x5adb('0x22')](respondWithResult(_0x36b847,null))['catch'](handleError(_0x36b847,null));};
\ No newline at end of file
+var _0x2032=['../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filters','filter','merge','where','options','alias','User','rows','catch','show','params','keys','rawAttributes','includeAll','include','create','body','find','describe','uniqueid','user','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2032,0xd9));var _0x2203=function(_0x4189a3,_0x3395ba){_0x4189a3=_0x4189a3-0x0;var _0xbe660b=_0x2032[_0x4189a3];return _0xbe660b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2203('0x0'));var zipdir=require(_0x2203('0x1'));var jsonpatch=require(_0x2203('0x2'));var rp=require('request-promise');var moment=require(_0x2203('0x3'));var BPromise=require(_0x2203('0x4'));var Mustache=require('mustache');var util=require(_0x2203('0x5'));var path=require(_0x2203('0x6'));var sox=require(_0x2203('0x7'));var csv=require(_0x2203('0x8'));var ejs=require(_0x2203('0x9'));var fs=require('fs');var fs_extra=require(_0x2203('0xa'));var _=require(_0x2203('0xb'));var squel=require(_0x2203('0xc'));var crypto=require(_0x2203('0xd'));var jsforce=require(_0x2203('0xe'));var deskjs=require(_0x2203('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2203('0x10'));var Redis=require('ioredis');var authService=require(_0x2203('0x11'));var qs=require(_0x2203('0x12'));var as=require(_0x2203('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2203('0x14'))('api');var utils=require(_0x2203('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2203('0x16'));var db=require(_0x2203('0x17'))['db'];function respondWithStatusCode(_0x4b9376,_0x583bc7){_0x583bc7=_0x583bc7||0xcc;return function(_0x585c76){if(_0x585c76){return _0x4b9376['sendStatus'](_0x583bc7);}return _0x4b9376['status'](_0x583bc7)[_0x2203('0x18')]();};}function respondWithResult(_0x538b30,_0x592e47){_0x592e47=_0x592e47||0xc8;return function(_0x21a3af){if(_0x21a3af){return _0x538b30[_0x2203('0x19')](_0x592e47)[_0x2203('0x1a')](_0x21a3af);}};}function respondWithFilteredResult(_0x41af85,_0x226209){return function(_0x3fe0a8){if(_0x3fe0a8){var _0x2c36e6=typeof _0x226209[_0x2203('0x1b')]===_0x2203('0x1c')&&typeof _0x226209[_0x2203('0x1d')]==='undefined';var _0x280eda=_0x3fe0a8[_0x2203('0x1e')];var _0x4893ff=_0x2c36e6?0x0:_0x226209[_0x2203('0x1b')];var _0x8906e1=_0x2c36e6?_0x3fe0a8['count']:_0x226209[_0x2203('0x1b')]+_0x226209['limit'];var _0x2904ba;if(_0x8906e1>=_0x280eda){_0x8906e1=_0x280eda;_0x2904ba=0xc8;}else{_0x2904ba=0xce;}_0x41af85[_0x2203('0x19')](_0x2904ba);return _0x41af85[_0x2203('0x1f')](_0x2203('0x20'),_0x4893ff+'-'+_0x8906e1+'/'+_0x280eda)[_0x2203('0x1a')](_0x3fe0a8);}return null;};}function patchUpdates(_0x449039){return function(_0x538c23){try{jsonpatch[_0x2203('0x21')](_0x538c23,_0x449039,!![]);}catch(_0x50822b){return BPromise['reject'](_0x50822b);}return _0x538c23[_0x2203('0x22')]();};}function saveUpdates(_0x496d82,_0x3b8ef9){return function(_0x5bfe61){if(_0x5bfe61){return _0x5bfe61['update'](_0x496d82)[_0x2203('0x23')](function(_0x5e29cd){return _0x5e29cd;});}return null;};}function removeEntity(_0x5c8da9,_0x226374){return function(_0x2718f5){if(_0x2718f5){return _0x2718f5[_0x2203('0x24')]()[_0x2203('0x23')](function(){_0x5c8da9[_0x2203('0x19')](0xcc)[_0x2203('0x18')]();});}};}function handleEntityNotFound(_0x49c12,_0x250349){return function(_0x576378){if(!_0x576378){_0x49c12[_0x2203('0x25')](0x194);}return _0x576378;};}function handleError(_0x36b958,_0x39a11a){_0x39a11a=_0x39a11a||0x1f4;return function(_0x5f11bf){logger[_0x2203('0x26')](_0x5f11bf[_0x2203('0x27')]);if(_0x5f11bf['name']){delete _0x5f11bf[_0x2203('0x28')];}_0x36b958[_0x2203('0x19')](_0x39a11a)[_0x2203('0x29')](_0x5f11bf);};}exports[_0x2203('0x2a')]=function(_0x28ae02,_0x1df508){var _0x9c53f={},_0x5a95c1={},_0x34b8ba={'count':0x0,'rows':[]};var _0x616ed8=_[_0x2203('0x2b')](db[_0x2203('0x2c')]['rawAttributes'],function(_0x3a8e23){return{'name':_0x3a8e23[_0x2203('0x2d')],'type':_0x3a8e23[_0x2203('0x2e')][_0x2203('0x2f')]};});_0x5a95c1['model']=_[_0x2203('0x2b')](_0x616ed8,_0x2203('0x28'));_0x5a95c1['query']=_['keys'](_0x28ae02[_0x2203('0x30')]);_0x5a95c1['filters']=_['intersection'](_0x5a95c1[_0x2203('0x31')],_0x5a95c1[_0x2203('0x30')]);_0x9c53f[_0x2203('0x32')]=_[_0x2203('0x33')](_0x5a95c1[_0x2203('0x31')],qs['fields'](_0x28ae02[_0x2203('0x30')][_0x2203('0x34')]));_0x9c53f['attributes']=_0x9c53f[_0x2203('0x32')][_0x2203('0x35')]?_0x9c53f[_0x2203('0x32')]:_0x5a95c1[_0x2203('0x31')];if(!_0x28ae02[_0x2203('0x30')][_0x2203('0x36')](_0x2203('0x37'))){_0x9c53f[_0x2203('0x1d')]=qs[_0x2203('0x1d')](_0x28ae02['query'][_0x2203('0x1d')]);_0x9c53f[_0x2203('0x1b')]=qs['offset'](_0x28ae02['query'][_0x2203('0x1b')]);}_0x9c53f['order']=qs[_0x2203('0x38')](_0x28ae02[_0x2203('0x30')][_0x2203('0x38')]);_0x9c53f['where']=qs['filters'](_[_0x2203('0x39')](_0x28ae02['query'],_0x5a95c1[_0x2203('0x3a')]),_0x616ed8);if(_0x28ae02['query'][_0x2203('0x3b')]){_0x9c53f['where']=_[_0x2203('0x3c')](_0x9c53f[_0x2203('0x3d')],{'$or':_[_0x2203('0x2b')](_0x616ed8,function(_0x40a793){if(_0x40a793[_0x2203('0x2e')]!=='VIRTUAL'){var _0x5f1561={};_0x5f1561[_0x40a793['name']]={'$like':'%'+_0x28ae02[_0x2203('0x30')][_0x2203('0x3b')]+'%'};return _0x5f1561;}})});}_0x9c53f=_[_0x2203('0x3c')]({},_0x9c53f,_0x28ae02[_0x2203('0x3e')]);var _0x3283fb={'where':_0x9c53f[_0x2203('0x3d')]};return db[_0x2203('0x2c')]['count'](_0x3283fb)[_0x2203('0x23')](function(_0x1b12c3){_0x34b8ba[_0x2203('0x1e')]=_0x1b12c3;if(_0x28ae02[_0x2203('0x30')]['includeAll']){_0x9c53f['include']=[{'attributes':['id',_0x2203('0x28'),'fullname',_0x2203('0x3f')],'model':db[_0x2203('0x40')],'as':_0x2203('0x40')}];}return db['VoiceCallReport']['findAll'](_0x9c53f);})[_0x2203('0x23')](function(_0x3739f6){_0x34b8ba[_0x2203('0x41')]=_0x3739f6;return _0x34b8ba;})[_0x2203('0x23')](respondWithFilteredResult(_0x1df508,_0x9c53f))[_0x2203('0x42')](handleError(_0x1df508,null));};exports[_0x2203('0x43')]=function(_0x5cd573,_0x15d3b6){var _0x165a3f={'raw':!![],'where':{'id':_0x5cd573[_0x2203('0x44')]['id']}},_0x3a866c={};_0x3a866c[_0x2203('0x31')]=_[_0x2203('0x45')](db[_0x2203('0x2c')][_0x2203('0x46')]);_0x3a866c[_0x2203('0x30')]=_[_0x2203('0x45')](_0x5cd573['query']);_0x3a866c[_0x2203('0x3a')]=_[_0x2203('0x33')](_0x3a866c[_0x2203('0x31')],_0x3a866c[_0x2203('0x30')]);_0x165a3f['attributes']=_['intersection'](_0x3a866c[_0x2203('0x31')],qs['fields'](_0x5cd573[_0x2203('0x30')][_0x2203('0x34')]));_0x165a3f[_0x2203('0x32')]=_0x165a3f[_0x2203('0x32')]['length']?_0x165a3f[_0x2203('0x32')]:_0x3a866c[_0x2203('0x31')];if(_0x5cd573['query'][_0x2203('0x47')]){_0x165a3f[_0x2203('0x48')]=[{'all':!![]}];}_0x165a3f=_[_0x2203('0x3c')]({},_0x165a3f,_0x5cd573[_0x2203('0x3e')]);return db['VoiceCallReport']['find'](_0x165a3f)[_0x2203('0x23')](handleEntityNotFound(_0x15d3b6,null))['then'](respondWithResult(_0x15d3b6,null))['catch'](handleError(_0x15d3b6,null));};exports[_0x2203('0x49')]=function(_0x33b7b5,_0x1a2665){return db['VoiceCallReport']['create'](_0x33b7b5[_0x2203('0x4a')],{})[_0x2203('0x23')](respondWithResult(_0x1a2665,0xc9))[_0x2203('0x42')](handleError(_0x1a2665,null));};exports[_0x2203('0x24')]=function(_0x225b0e,_0x21fd78){return db['VoiceCallReport'][_0x2203('0x4b')]({'where':{'id':_0x225b0e['params']['id']}})[_0x2203('0x23')](handleEntityNotFound(_0x21fd78,null))[_0x2203('0x23')](removeEntity(_0x21fd78,null))[_0x2203('0x42')](handleError(_0x21fd78,null));};exports[_0x2203('0x4c')]=function(_0x58b9bb,_0x506795){return db[_0x2203('0x2c')][_0x2203('0x4c')]()[_0x2203('0x23')](respondWithResult(_0x506795,null))[_0x2203('0x42')](handleError(_0x506795,null));};exports['update']=function(_0x4de47a,_0x49999a){if(_0x4de47a[_0x2203('0x4a')][_0x2203('0x4d')]){delete _0x4de47a['body'][_0x2203('0x4d')];}return db[_0x2203('0x2c')]['find']({'where':{'uniqueid':_0x4de47a[_0x2203('0x44')]['id'],'UserId':{'$or':[null,_0x4de47a[_0x2203('0x4e')]['id']]}}})[_0x2203('0x23')](handleEntityNotFound(_0x49999a,null))[_0x2203('0x23')](saveUpdates(_0x4de47a['body'],null))[_0x2203('0x23')](respondWithResult(_0x49999a,null))['catch'](handleError(_0x49999a,null));};
\ No newline at end of file
index 5f4e145..489ffa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe35e=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','VoiceCallReport','report_call','uniqueid','util'];(function(_0x3540c8,_0x4a4696){var _0x38c53=function(_0x5c9859){while(--_0x5c9859){_0x3540c8['push'](_0x3540c8['shift']());}};_0x38c53(++_0x4a4696);}(_0xe35e,0x9b));var _0xee35=function(_0x356e8d,_0x24c719){_0x356e8d=_0x356e8d-0x0;var _0x39e65a=_0xe35e[_0x356e8d];return _0x39e65a;};'use strict';var _=require('lodash');var util=require(_0xee35('0x0'));var logger=require(_0xee35('0x1'))(_0xee35('0x2'));var moment=require('moment');var BPromise=require(_0xee35('0x3'));var rp=require(_0xee35('0x4'));var fs=require('fs');var path=require(_0xee35('0x5'));var rimraf=require(_0xee35('0x6'));var config=require(_0xee35('0x7'));var attributes=require('./voiceCallReport.attributes');module[_0xee35('0x8')]=function(_0x2b335d,_0x29bf0f){return _0x2b335d[_0xee35('0x9')](_0xee35('0xa'),attributes,{'tableName':_0xee35('0xb'),'paranoid':![],'indexes':[{'fields':[_0xee35('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a08=['uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','VoiceCallReport','report_call'];(function(_0x153a00,_0x1b0d0a){var _0x154195=function(_0x59f7d2){while(--_0x59f7d2){_0x153a00['push'](_0x153a00['shift']());}};_0x154195(++_0x1b0d0a);}(_0x5a08,0x189));var _0x85a0=function(_0x44d3ac,_0x547929){_0x44d3ac=_0x44d3ac-0x0;var _0x242494=_0x5a08[_0x44d3ac];return _0x242494;};'use strict';var _=require(_0x85a0('0x0'));var util=require(_0x85a0('0x1'));var logger=require(_0x85a0('0x2'))(_0x85a0('0x3'));var moment=require(_0x85a0('0x4'));var BPromise=require(_0x85a0('0x5'));var rp=require(_0x85a0('0x6'));var fs=require('fs');var path=require(_0x85a0('0x7'));var rimraf=require(_0x85a0('0x8'));var config=require(_0x85a0('0x9'));var attributes=require('./voiceCallReport.attributes');module['exports']=function(_0xcdc57d,_0x299bb7){return _0xcdc57d[_0x85a0('0xa')](_0x85a0('0xb'),attributes,{'tableName':_0x85a0('0xc'),'paranoid':![],'indexes':[{'fields':[_0x85a0('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 13271ba..0122d7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d10=['UpdateVoiceCallReport','update','util','moment','ioredis','../../config/logger','rpc','jayson/promise','client','http','request','then','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetVoiceCallReport','options','raw','where','attributes','limit','include','map','model','CreateVoiceCallReport','VoiceCallReport','create','body','info'];(function(_0x4af72f,_0xd67b2e){var _0x5a25e4=function(_0x3f7724){while(--_0x3f7724){_0x4af72f['push'](_0x4af72f['shift']());}};_0x5a25e4(++_0xd67b2e);}(_0x9d10,0xf7));var _0x09d1=function(_0x2071d8,_0xb92a7b){_0x2071d8=_0x2071d8-0x0;var _0x1e43da=_0x9d10[_0x2071d8];return _0x1e43da;};'use strict';var _=require('lodash');var util=require(_0x09d1('0x0'));var moment=require(_0x09d1('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x09d1('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x09d1('0x3'))(_0x09d1('0x4'));var config=require('../../config/environment');var jayson=require(_0x09d1('0x5'));var client=jayson[_0x09d1('0x6')][_0x09d1('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xa48bea,_0x3ae265,_0x498a00){return new BPromise(function(_0x12ca88,_0x1a18f3){return client[_0x09d1('0x8')](_0xa48bea,_0x498a00)[_0x09d1('0x9')](function(_0xee5f1f){logger['info'](_0x09d1('0xa'),_0x3ae265,_0x09d1('0xb'));logger[_0x09d1('0xc')](_0x09d1('0xd'),_0x3ae265,_0x09d1('0xb'),JSON[_0x09d1('0xe')](_0xee5f1f));if(_0xee5f1f[_0x09d1('0xf')]){if(_0xee5f1f['error'][_0x09d1('0x10')]===0x1f4){logger[_0x09d1('0xf')](_0x09d1('0xa'),_0x3ae265,_0xee5f1f['error'][_0x09d1('0x11')]);return _0x1a18f3(_0xee5f1f[_0x09d1('0xf')]['message']);}logger[_0x09d1('0xf')](_0x09d1('0xa'),_0x3ae265,_0xee5f1f[_0x09d1('0xf')][_0x09d1('0x11')]);return _0x12ca88(_0xee5f1f[_0x09d1('0xf')][_0x09d1('0x11')]);}else{logger['info'](_0x09d1('0xa'),_0x3ae265,_0x09d1('0xb'));_0x12ca88(_0xee5f1f['result'][_0x09d1('0x11')]);}})[_0x09d1('0x12')](function(_0x38274a){logger[_0x09d1('0xf')](_0x09d1('0xa'),_0x3ae265,_0x38274a);_0x1a18f3(_0x38274a);});});}exports[_0x09d1('0x13')]=function(_0x172686){var _0x574930=this;return new Promise(function(_0x42b92c,_0x2f8414){return db['VoiceCallReport']['findAll']({'raw':_0x172686[_0x09d1('0x14')]?_0x172686[_0x09d1('0x14')][_0x09d1('0x15')]===undefined?!![]:![]:!![],'where':_0x172686[_0x09d1('0x14')]?_0x172686[_0x09d1('0x14')][_0x09d1('0x16')]||null:null,'attributes':_0x172686[_0x09d1('0x14')]?_0x172686[_0x09d1('0x14')][_0x09d1('0x17')]||null:null,'limit':_0x172686[_0x09d1('0x14')]?_0x172686[_0x09d1('0x14')][_0x09d1('0x18')]||null:null,'include':_0x172686[_0x09d1('0x14')]?_0x172686['options'][_0x09d1('0x19')]?_[_0x09d1('0x1a')](_0x172686['options'][_0x09d1('0x19')],function(_0x43537b){return{'model':db[_0x43537b['model']],'as':_0x43537b['as'],'attributes':_0x43537b[_0x09d1('0x17')],'include':_0x43537b[_0x09d1('0x19')]?_[_0x09d1('0x1a')](_0x43537b['include'],function(_0x34ae69){return{'model':db[_0x34ae69[_0x09d1('0x1b')]],'as':_0x34ae69['as'],'attributes':_0x34ae69[_0x09d1('0x17')],'include':_0x34ae69[_0x09d1('0x19')]?_[_0x09d1('0x1a')](_0x34ae69[_0x09d1('0x19')],function(_0x45d81f){return{'model':db[_0x45d81f[_0x09d1('0x1b')]],'as':_0x45d81f['as'],'attributes':_0x45d81f['attributes']};}):[]};}):[]};}):[]:[]})[_0x09d1('0x9')](function(_0x1f7bc0){logger['info'](_0x09d1('0x13'),_0x172686);logger[_0x09d1('0xc')](_0x09d1('0x13'),_0x172686,JSON['stringify'](_0x1f7bc0));_0x42b92c(_0x1f7bc0);})[_0x09d1('0x12')](function(_0x224fb2){logger[_0x09d1('0xf')](_0x09d1('0x13'),_0x224fb2[_0x09d1('0x11')],_0x172686);_0x2f8414(_0x574930['error'](0x1f4,_0x224fb2['message']));});});};exports[_0x09d1('0x1c')]=function(_0x1c48de){var _0x29aebd=this;return new Promise(function(_0x2669b9,_0x4cbcc0){return db[_0x09d1('0x1d')][_0x09d1('0x1e')](_0x1c48de[_0x09d1('0x1f')],{'raw':_0x1c48de['options']?_0x1c48de[_0x09d1('0x14')][_0x09d1('0x15')]===undefined?!![]:![]:!![]})[_0x09d1('0x9')](function(_0x595677){logger[_0x09d1('0x20')]('CreateVoiceCallReport',_0x1c48de);logger[_0x09d1('0xc')](_0x09d1('0x1c'),_0x1c48de,JSON[_0x09d1('0xe')](_0x595677));_0x2669b9(_0x595677);})[_0x09d1('0x12')](function(_0x23a466){logger['error'](_0x09d1('0x1c'),_0x23a466[_0x09d1('0x11')],_0x1c48de);_0x4cbcc0(_0x29aebd[_0x09d1('0xf')](0x1f4,_0x23a466[_0x09d1('0x11')]));});});};exports[_0x09d1('0x21')]=function(_0x452099){var _0x1b0c9b=this;return new Promise(function(_0x5b3959,_0x333cc2){return db[_0x09d1('0x1d')][_0x09d1('0x22')](_0x452099[_0x09d1('0x1f')],{'raw':_0x452099['options']?_0x452099[_0x09d1('0x14')][_0x09d1('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x452099[_0x09d1('0x14')]?_0x452099[_0x09d1('0x14')][_0x09d1('0x16')]||null:null,'attributes':_0x452099[_0x09d1('0x14')]?_0x452099[_0x09d1('0x14')][_0x09d1('0x17')]||null:null,'limit':_0x452099[_0x09d1('0x14')]?_0x452099[_0x09d1('0x14')]['limit']||null:null})['then'](function(_0x3af2e1){logger[_0x09d1('0x20')]('UpdateVoiceCallReport',_0x452099);logger[_0x09d1('0xc')](_0x09d1('0x21'),_0x452099,JSON[_0x09d1('0xe')](_0x3af2e1));_0x5b3959(_0x3af2e1);})['catch'](function(_0x5e763f){logger['error'](_0x09d1('0x21'),_0x5e763f[_0x09d1('0x11')],_0x452099);_0x333cc2(_0x1b0c9b['error'](0x1f4,_0x5e763f[_0x09d1('0x11')]));});});};
\ No newline at end of file
+var _0x4e43=['message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','limit','include','model','map','attributes','then','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','update','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','info','VoiceCallReport,\x20%s,\x20%s','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x5f3528,_0x593a8f){var _0x4a08e3=function(_0xad8403){while(--_0xad8403){_0x5f3528['push'](_0x5f3528['shift']());}};_0x4a08e3(++_0x593a8f);}(_0x4e43,0x1c4));var _0x34e4=function(_0x49aab7,_0x1d6397){_0x49aab7=_0x49aab7-0x0;var _0x587b6f=_0x4e43[_0x49aab7];return _0x587b6f;};'use strict';var _=require('lodash');var util=require(_0x34e4('0x0'));var moment=require('moment');var BPromise=require(_0x34e4('0x1'));var rs=require(_0x34e4('0x2'));var fs=require('fs');var Redis=require(_0x34e4('0x3'));var db=require(_0x34e4('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x34e4('0x5'));var config=require(_0x34e4('0x6'));var jayson=require(_0x34e4('0x7'));var client=jayson['client'][_0x34e4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2fbb87,_0xef868f,_0x1ca896){return new BPromise(function(_0x1aefa2,_0x34c6a2){return client[_0x34e4('0x9')](_0x2fbb87,_0x1ca896)['then'](function(_0x36745d){logger[_0x34e4('0xa')](_0x34e4('0xb'),_0xef868f,'request\x20sent');logger[_0x34e4('0xc')](_0x34e4('0xd'),_0xef868f,'request\x20sent',JSON[_0x34e4('0xe')](_0x36745d));if(_0x36745d[_0x34e4('0xf')]){if(_0x36745d['error']['code']===0x1f4){logger[_0x34e4('0xf')](_0x34e4('0xb'),_0xef868f,_0x36745d[_0x34e4('0xf')][_0x34e4('0x10')]);return _0x34c6a2(_0x36745d[_0x34e4('0xf')][_0x34e4('0x10')]);}logger[_0x34e4('0xf')](_0x34e4('0xb'),_0xef868f,_0x36745d[_0x34e4('0xf')][_0x34e4('0x10')]);return _0x1aefa2(_0x36745d['error']['message']);}else{logger[_0x34e4('0xa')](_0x34e4('0xb'),_0xef868f,'request\x20sent');_0x1aefa2(_0x36745d[_0x34e4('0x11')][_0x34e4('0x10')]);}})[_0x34e4('0x12')](function(_0x1f26ad){logger[_0x34e4('0xf')](_0x34e4('0xb'),_0xef868f,_0x1f26ad);_0x34c6a2(_0x1f26ad);});});}exports[_0x34e4('0x13')]=function(_0x3300d6){var _0x4a1f63=this;return new Promise(function(_0x1c4c54,_0x4d34fb){return db[_0x34e4('0x14')][_0x34e4('0x15')]({'raw':_0x3300d6[_0x34e4('0x16')]?_0x3300d6[_0x34e4('0x16')][_0x34e4('0x17')]===undefined?!![]:![]:!![],'where':_0x3300d6[_0x34e4('0x16')]?_0x3300d6[_0x34e4('0x16')][_0x34e4('0x18')]||null:null,'attributes':_0x3300d6[_0x34e4('0x16')]?_0x3300d6[_0x34e4('0x16')]['attributes']||null:null,'limit':_0x3300d6[_0x34e4('0x16')]?_0x3300d6[_0x34e4('0x16')][_0x34e4('0x19')]||null:null,'include':_0x3300d6[_0x34e4('0x16')]?_0x3300d6[_0x34e4('0x16')][_0x34e4('0x1a')]?_['map'](_0x3300d6[_0x34e4('0x16')]['include'],function(_0x2beea5){return{'model':db[_0x2beea5[_0x34e4('0x1b')]],'as':_0x2beea5['as'],'attributes':_0x2beea5['attributes'],'include':_0x2beea5[_0x34e4('0x1a')]?_[_0x34e4('0x1c')](_0x2beea5[_0x34e4('0x1a')],function(_0x107f64){return{'model':db[_0x107f64[_0x34e4('0x1b')]],'as':_0x107f64['as'],'attributes':_0x107f64[_0x34e4('0x1d')],'include':_0x107f64[_0x34e4('0x1a')]?_[_0x34e4('0x1c')](_0x107f64[_0x34e4('0x1a')],function(_0x5e1d9a){return{'model':db[_0x5e1d9a[_0x34e4('0x1b')]],'as':_0x5e1d9a['as'],'attributes':_0x5e1d9a[_0x34e4('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x34e4('0x1e')](function(_0x23e8c5){logger[_0x34e4('0xa')]('GetVoiceCallReport',_0x3300d6);logger[_0x34e4('0xc')](_0x34e4('0x13'),_0x3300d6,JSON[_0x34e4('0xe')](_0x23e8c5));_0x1c4c54(_0x23e8c5);})[_0x34e4('0x12')](function(_0x66da5b){logger[_0x34e4('0xf')](_0x34e4('0x13'),_0x66da5b[_0x34e4('0x10')],_0x3300d6);_0x4d34fb(_0x4a1f63[_0x34e4('0xf')](0x1f4,_0x66da5b[_0x34e4('0x10')]));});});};exports[_0x34e4('0x1f')]=function(_0x5019a4){var _0x3fa5db=this;return new Promise(function(_0x2d0da2,_0x34b212){return db['VoiceCallReport'][_0x34e4('0x20')](_0x5019a4[_0x34e4('0x21')],{'raw':_0x5019a4['options']?_0x5019a4[_0x34e4('0x16')]['raw']===undefined?!![]:![]:!![]})[_0x34e4('0x1e')](function(_0x5a20cd){logger['info'](_0x34e4('0x1f'),_0x5019a4);logger[_0x34e4('0xc')](_0x34e4('0x1f'),_0x5019a4,JSON[_0x34e4('0xe')](_0x5a20cd));_0x2d0da2(_0x5a20cd);})[_0x34e4('0x12')](function(_0x34bb01){logger[_0x34e4('0xf')]('CreateVoiceCallReport',_0x34bb01[_0x34e4('0x10')],_0x5019a4);_0x34b212(_0x3fa5db['error'](0x1f4,_0x34bb01[_0x34e4('0x10')]));});});};exports[_0x34e4('0x22')]=function(_0x12ac8d){var _0x4598e3=this;return new Promise(function(_0x18c08e,_0x235e8b){return db[_0x34e4('0x14')][_0x34e4('0x23')](_0x12ac8d[_0x34e4('0x21')],{'raw':_0x12ac8d['options']?_0x12ac8d['options'][_0x34e4('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x12ac8d[_0x34e4('0x16')]?_0x12ac8d[_0x34e4('0x16')]['where']||null:null,'attributes':_0x12ac8d['options']?_0x12ac8d[_0x34e4('0x16')]['attributes']||null:null,'limit':_0x12ac8d[_0x34e4('0x16')]?_0x12ac8d[_0x34e4('0x16')][_0x34e4('0x19')]||null:null})[_0x34e4('0x1e')](function(_0x26d297){logger['info'](_0x34e4('0x22'),_0x12ac8d);logger[_0x34e4('0xc')]('UpdateVoiceCallReport',_0x12ac8d,JSON[_0x34e4('0xe')](_0x26d297));_0x18c08e(_0x26d297);})[_0x34e4('0x12')](function(_0x428393){logger[_0x34e4('0xf')](_0x34e4('0x22'),_0x428393['message'],_0x12ac8d);_0x235e8b(_0x4598e3['error'](0x1f4,_0x428393[_0x34e4('0x10')]));});});};
\ No newline at end of file
index 144f67b..68567fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe319=['connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','multer'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe319,0x76));var _0x9e31=function(_0x2faa2c,_0x42bd50){_0x2faa2c=_0x2faa2c-0x0;var _0xb2286b=_0xe319[_0x2faa2c];return _0xb2286b;};'use strict';var multer=require(_0x9e31('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9e31('0x1'));var express=require('express');var router=express[_0x9e31('0x2')]();var fs_extra=require(_0x9e31('0x3'));var auth=require(_0x9e31('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x9e31('0x5'));var controller=require('./voiceChanSpy.controller');router[_0x9e31('0x6')]('/',auth[_0x9e31('0x7')](),controller[_0x9e31('0x8')]);router[_0x9e31('0x6')](_0x9e31('0x9'),auth[_0x9e31('0x7')](),controller['show']);router[_0x9e31('0xa')]('/',auth[_0x9e31('0x7')](),controller[_0x9e31('0xb')]);router[_0x9e31('0xc')](_0x9e31('0x9'),auth[_0x9e31('0x7')](),controller[_0x9e31('0xd')]);router[_0x9e31('0xe')](_0x9e31('0x9'),auth[_0x9e31('0x7')](),controller[_0x9e31('0xf')]);module[_0x9e31('0x10')]=router;
\ No newline at end of file
+var _0xa0f9=['/:id','show','post','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index'];(function(_0x169443,_0x4bba73){var _0x2d1a83=function(_0x4f2ff9){while(--_0x4f2ff9){_0x169443['push'](_0x169443['shift']());}};_0x2d1a83(++_0x4bba73);}(_0xa0f9,0x1b6));var _0x9a0f=function(_0xfa847c,_0x444a8c){_0xfa847c=_0xfa847c-0x0;var _0x3b22bf=_0xa0f9[_0xfa847c];return _0x3b22bf;};'use strict';var multer=require(_0x9a0f('0x0'));var util=require(_0x9a0f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9a0f('0x2'));var router=express[_0x9a0f('0x3')]();var fs_extra=require(_0x9a0f('0x4'));var auth=require(_0x9a0f('0x5'));var interaction=require(_0x9a0f('0x6'));var config=require(_0x9a0f('0x7'));var controller=require(_0x9a0f('0x8'));router[_0x9a0f('0x9')]('/',auth[_0x9a0f('0xa')](),controller[_0x9a0f('0xb')]);router[_0x9a0f('0x9')](_0x9a0f('0xc'),auth[_0x9a0f('0xa')](),controller[_0x9a0f('0xd')]);router[_0x9a0f('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x9a0f('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x9a0f('0xf')]('/:id',auth[_0x9a0f('0xa')](),controller[_0x9a0f('0x10')]);module[_0x9a0f('0x11')]=router;
\ No newline at end of file
index 02c77aa..c50bceb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37d7=['BOOLEAN','sequelize','STRING','name','setDataValue','join','getDataValue','options','split'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x37d7,0x1cc));var _0x737d=function(_0x1b4af6,_0xd59625){_0x1b4af6=_0x1b4af6-0x0;var _0x105d96=_0x37d7[_0x1b4af6];return _0x105d96;};'use strict';var Sequelize=require(_0x737d('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x737d('0x1')],'unique':_0x737d('0x2'),'allowNull':![]},'options':{'type':Sequelize[_0x737d('0x1')],'set':function(_0x142072){this[_0x737d('0x3')]('options',_0x142072?_0x142072[_0x737d('0x4')](''):[]);},'get':function(){return this[_0x737d('0x5')]('options')?this[_0x737d('0x5')](_0x737d('0x6'))[_0x737d('0x7')](''):[];}},'auth':{'type':Sequelize[_0x737d('0x8')],'defaultValue':![]},'password':{'type':Sequelize[_0x737d('0x1')]},'record':{'type':Sequelize[_0x737d('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x737d('0x1')]},'description':{'type':Sequelize[_0x737d('0x1')]}};
\ No newline at end of file
+var _0x33e2=['join','getDataValue','options','split','sequelize','STRING','name','setDataValue'];(function(_0x2db4b2,_0x5a978b){var _0x1e993b=function(_0xd57833){while(--_0xd57833){_0x2db4b2['push'](_0x2db4b2['shift']());}};_0x1e993b(++_0x5a978b);}(_0x33e2,0xb4));var _0x233e=function(_0x4d674b,_0x176474){_0x4d674b=_0x4d674b-0x0;var _0x535a1f=_0x33e2[_0x4d674b];return _0x535a1f;};'use strict';var Sequelize=require(_0x233e('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x233e('0x1')],'unique':_0x233e('0x2'),'allowNull':![]},'options':{'type':Sequelize[_0x233e('0x1')],'set':function(_0x5698bb){this[_0x233e('0x3')]('options',_0x5698bb?_0x5698bb[_0x233e('0x4')](''):[]);},'get':function(){return this[_0x233e('0x5')](_0x233e('0x6'))?this[_0x233e('0x5')](_0x233e('0x6'))[_0x233e('0x7')](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize[_0x233e('0x1')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x233e('0x1')]},'description':{'type':Sequelize[_0x233e('0x1')]}};
\ No newline at end of file
index 4de1dcb..9884a07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb575=['crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','ChanSpies','UserProfileResource','error','stack','name','index','map','VoiceChanSpy','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','includeAll','include','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','eml-format','rimraf','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x53ce95,_0x32ed31){var _0x111663=function(_0x4d5d89){while(--_0x4d5d89){_0x53ce95['push'](_0x53ce95['shift']());}};_0x111663(++_0x32ed31);}(_0xb575,0xda));var _0x5b57=function(_0x47f9e8,_0x295f47){_0x47f9e8=_0x47f9e8-0x0;var _0x5837e1=_0xb575[_0x47f9e8];return _0x5837e1;};'use strict';var emlformat=require(_0x5b57('0x0'));var rimraf=require(_0x5b57('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5b57('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x5b57('0x3'));var util=require(_0x5b57('0x4'));var path=require('path');var sox=require(_0x5b57('0x5'));var csv=require(_0x5b57('0x6'));var ejs=require(_0x5b57('0x7'));var fs=require('fs');var fs_extra=require(_0x5b57('0x8'));var _=require(_0x5b57('0x9'));var squel=require('squel');var crypto=require(_0x5b57('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x5b57('0xb'));var toCsv=require(_0x5b57('0x6'));var querystring=require(_0x5b57('0xc'));var Papa=require('papaparse');var Redis=require(_0x5b57('0xd'));var authService=require(_0x5b57('0xe'));var qs=require(_0x5b57('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5b57('0x10'));var logger=require(_0x5b57('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x5b57('0x12'));var licenseUtil=require(_0x5b57('0x13'));var db=require(_0x5b57('0x14'))['db'];function respondWithStatusCode(_0xd897ba,_0x355dab){_0x355dab=_0x355dab||0xcc;return function(_0x45cb5c){if(_0x45cb5c){return _0xd897ba[_0x5b57('0x15')](_0x355dab);}return _0xd897ba[_0x5b57('0x16')](_0x355dab)[_0x5b57('0x17')]();};}function respondWithResult(_0x42ba90,_0x53df3e){_0x53df3e=_0x53df3e||0xc8;return function(_0x16ffe0){if(_0x16ffe0){return _0x42ba90[_0x5b57('0x16')](_0x53df3e)[_0x5b57('0x18')](_0x16ffe0);}};}function respondWithFilteredResult(_0x4ba858,_0x2a0a1b){return function(_0x3b4631){if(_0x3b4631){var _0x132430=typeof _0x2a0a1b[_0x5b57('0x19')]===_0x5b57('0x1a')&&typeof _0x2a0a1b[_0x5b57('0x1b')]===_0x5b57('0x1a');var _0x32f18d=_0x3b4631['count'];var _0x336db6=_0x132430?0x0:_0x2a0a1b[_0x5b57('0x19')];var _0x2cb809=_0x132430?_0x3b4631[_0x5b57('0x1c')]:_0x2a0a1b[_0x5b57('0x19')]+_0x2a0a1b[_0x5b57('0x1b')];var _0x5f0dc6;if(_0x2cb809>=_0x32f18d){_0x2cb809=_0x32f18d;_0x5f0dc6=0xc8;}else{_0x5f0dc6=0xce;}_0x4ba858[_0x5b57('0x16')](_0x5f0dc6);return _0x4ba858[_0x5b57('0x1d')](_0x5b57('0x1e'),_0x336db6+'-'+_0x2cb809+'/'+_0x32f18d)[_0x5b57('0x18')](_0x3b4631);}return null;};}function patchUpdates(_0x53378c){return function(_0x3c7f4f){try{jsonpatch[_0x5b57('0x1f')](_0x3c7f4f,_0x53378c,!![]);}catch(_0x3cb5c0){return BPromise['reject'](_0x3cb5c0);}return _0x3c7f4f[_0x5b57('0x20')]();};}function saveUpdates(_0xd8567a,_0x3a4488){return function(_0x28721f){if(_0x28721f){return _0x28721f[_0x5b57('0x21')](_0xd8567a)[_0x5b57('0x22')](function(_0x4a4ed8){return _0x4a4ed8;});}return null;};}function removeEntity(_0x139214,_0x50ea5f){return function(_0x11c149){if(_0x11c149){return _0x11c149[_0x5b57('0x23')]()['then'](function(){var _0x52e4b0=_0x11c149[_0x5b57('0x24')]({'plain':!![]});var _0x5eab3d=_0x5b57('0x25');return db[_0x5b57('0x26')][_0x5b57('0x23')]({'where':{'type':_0x5eab3d,'resourceId':_0x52e4b0['id']}})[_0x5b57('0x22')](function(){return _0x11c149;});})[_0x5b57('0x22')](function(){_0x139214[_0x5b57('0x16')](0xcc)[_0x5b57('0x17')]();});}};}function handleEntityNotFound(_0x10ee0f,_0xf0375b){return function(_0x31c4a5){if(!_0x31c4a5){_0x10ee0f[_0x5b57('0x15')](0x194);}return _0x31c4a5;};}function handleError(_0x2d6398,_0x511a00){_0x511a00=_0x511a00||0x1f4;return function(_0x53c81b){logger[_0x5b57('0x27')](_0x53c81b[_0x5b57('0x28')]);if(_0x53c81b[_0x5b57('0x29')]){delete _0x53c81b['name'];}_0x2d6398[_0x5b57('0x16')](_0x511a00)['send'](_0x53c81b);};}exports[_0x5b57('0x2a')]=function(_0x2743ce,_0x33b262){var _0x42d96c={},_0x4454b2={},_0x41434b={'count':0x0,'rows':[]};var _0x51bd43=_[_0x5b57('0x2b')](db[_0x5b57('0x2c')][_0x5b57('0x2d')],function(_0x3336da){return{'name':_0x3336da[_0x5b57('0x2e')],'type':_0x3336da['type'][_0x5b57('0x2f')]};});_0x4454b2['model']=_[_0x5b57('0x2b')](_0x51bd43,'name');_0x4454b2[_0x5b57('0x30')]=_[_0x5b57('0x31')](_0x2743ce[_0x5b57('0x30')]);_0x4454b2[_0x5b57('0x32')]=_[_0x5b57('0x33')](_0x4454b2[_0x5b57('0x34')],_0x4454b2[_0x5b57('0x30')]);_0x42d96c[_0x5b57('0x35')]=_[_0x5b57('0x33')](_0x4454b2[_0x5b57('0x34')],qs['fields'](_0x2743ce[_0x5b57('0x30')][_0x5b57('0x36')]));_0x42d96c[_0x5b57('0x35')]=_0x42d96c[_0x5b57('0x35')][_0x5b57('0x37')]?_0x42d96c[_0x5b57('0x35')]:_0x4454b2[_0x5b57('0x34')];if(!_0x2743ce[_0x5b57('0x30')][_0x5b57('0x38')](_0x5b57('0x39'))){_0x42d96c[_0x5b57('0x1b')]=qs[_0x5b57('0x1b')](_0x2743ce[_0x5b57('0x30')][_0x5b57('0x1b')]);_0x42d96c['offset']=qs[_0x5b57('0x19')](_0x2743ce['query'][_0x5b57('0x19')]);}_0x42d96c[_0x5b57('0x3a')]=qs[_0x5b57('0x3b')](_0x2743ce[_0x5b57('0x30')][_0x5b57('0x3b')]);_0x42d96c[_0x5b57('0x3c')]=qs[_0x5b57('0x32')](_['pick'](_0x2743ce[_0x5b57('0x30')],_0x4454b2[_0x5b57('0x32')]),_0x51bd43);if(_0x2743ce[_0x5b57('0x30')]['filter']){_0x42d96c[_0x5b57('0x3c')]=_[_0x5b57('0x3d')](_0x42d96c['where'],{'$or':_[_0x5b57('0x2b')](_0x51bd43,function(_0x11db96){if(_0x11db96[_0x5b57('0x3e')]!=='VIRTUAL'){var _0x5631f1={};_0x5631f1[_0x11db96[_0x5b57('0x29')]]={'$like':'%'+_0x2743ce[_0x5b57('0x30')]['filter']+'%'};return _0x5631f1;}})});}_0x42d96c=_[_0x5b57('0x3d')]({},_0x42d96c,_0x2743ce['options']);var _0xd6bda6={'where':_0x42d96c[_0x5b57('0x3c')]};return db['VoiceChanSpy'][_0x5b57('0x1c')](_0xd6bda6)[_0x5b57('0x22')](function(_0x16a177){_0x41434b[_0x5b57('0x1c')]=_0x16a177;if(_0x2743ce[_0x5b57('0x30')][_0x5b57('0x3f')]){_0x42d96c[_0x5b57('0x40')]=[{'all':!![]}];}return db['VoiceChanSpy']['findAll'](_0x42d96c);})[_0x5b57('0x22')](function(_0x48fb91){_0x41434b[_0x5b57('0x41')]=_0x48fb91;return _0x41434b;})['then'](respondWithFilteredResult(_0x33b262,_0x42d96c))[_0x5b57('0x42')](handleError(_0x33b262,null));};exports[_0x5b57('0x43')]=function(_0x30a53a,_0x254207){var _0x41b03e={'raw':![],'where':{'id':_0x30a53a[_0x5b57('0x44')]['id']}},_0x16a453={};_0x16a453[_0x5b57('0x34')]=_[_0x5b57('0x31')](db[_0x5b57('0x2c')][_0x5b57('0x2d')]);_0x16a453[_0x5b57('0x30')]=_[_0x5b57('0x31')](_0x30a53a[_0x5b57('0x30')]);_0x16a453[_0x5b57('0x32')]=_[_0x5b57('0x33')](_0x16a453[_0x5b57('0x34')],_0x16a453[_0x5b57('0x30')]);_0x41b03e[_0x5b57('0x35')]=_['intersection'](_0x16a453[_0x5b57('0x34')],qs[_0x5b57('0x36')](_0x30a53a[_0x5b57('0x30')]['fields']));_0x41b03e[_0x5b57('0x35')]=_0x41b03e[_0x5b57('0x35')][_0x5b57('0x37')]?_0x41b03e[_0x5b57('0x35')]:_0x16a453['model'];if(_0x30a53a['query']['includeAll']){_0x41b03e[_0x5b57('0x40')]=[{'all':!![]}];}_0x41b03e=_[_0x5b57('0x3d')]({},_0x41b03e,_0x30a53a['options']);return db[_0x5b57('0x2c')][_0x5b57('0x45')](_0x41b03e)[_0x5b57('0x22')](handleEntityNotFound(_0x254207,null))[_0x5b57('0x22')](respondWithResult(_0x254207,null))[_0x5b57('0x42')](handleError(_0x254207,null));};exports[_0x5b57('0x46')]=function(_0x22ea65,_0x2027b4){return db[_0x5b57('0x2c')][_0x5b57('0x46')](_0x22ea65[_0x5b57('0x47')],{})[_0x5b57('0x22')](function(_0x267cc7){var _0xe2a031=_0x22ea65[_0x5b57('0x48')][_0x5b57('0x24')]({'plain':!![]});if(!_0xe2a031)throw new Error(_0x5b57('0x49'));if(_0xe2a031[_0x5b57('0x4a')]===_0x5b57('0x48')){var _0x115dda=_0x267cc7[_0x5b57('0x24')]({'plain':!![]});var _0x3f2a3d='ChanSpies';return db['UserProfileSection'][_0x5b57('0x45')]({'where':{'name':_0x3f2a3d,'userProfileId':_0xe2a031['userProfileId']},'raw':!![]})[_0x5b57('0x22')](function(_0x4e54f9){if(_0x4e54f9&&_0x4e54f9[_0x5b57('0x4b')]===0x0){return db[_0x5b57('0x26')][_0x5b57('0x46')]({'name':_0x115dda['name'],'resourceId':_0x115dda['id'],'type':_0x4e54f9['name'],'sectionId':_0x4e54f9['id']},{})['then'](function(){return _0x267cc7;});}else{return _0x267cc7;}})['catch'](function(_0x367dea){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x367dea);throw _0x367dea;});}return _0x267cc7;})['then'](respondWithResult(_0x2027b4,0xc9))[_0x5b57('0x42')](handleError(_0x2027b4,null));};exports[_0x5b57('0x21')]=function(_0x2590a7,_0x3e0c0c){if(_0x2590a7[_0x5b57('0x47')]['id']){delete _0x2590a7[_0x5b57('0x47')]['id'];}return db['VoiceChanSpy'][_0x5b57('0x45')]({'where':{'id':_0x2590a7[_0x5b57('0x44')]['id']}})['then'](handleEntityNotFound(_0x3e0c0c,null))[_0x5b57('0x22')](saveUpdates(_0x2590a7[_0x5b57('0x47')],null))[_0x5b57('0x22')](respondWithResult(_0x3e0c0c,null))[_0x5b57('0x42')](handleError(_0x3e0c0c,null));};exports['destroy']=function(_0x4c90a3,_0x3da514){return db[_0x5b57('0x2c')][_0x5b57('0x45')]({'where':{'id':_0x4c90a3[_0x5b57('0x44')]['id']}})[_0x5b57('0x22')](handleEntityNotFound(_0x3da514,null))['then'](removeEntity(_0x3da514,null))['catch'](handleError(_0x3da514,null));};
\ No newline at end of file
+var _0x48ea=['mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','destroy','then','get','ChanSpies','UserProfileResource','error','name','send','index','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','create','body','user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise'];(function(_0x490e6f,_0xbc4d04){var _0x1c0cff=function(_0x421606){while(--_0x421606){_0x490e6f['push'](_0x490e6f['shift']());}};_0x1c0cff(++_0xbc4d04);}(_0x48ea,0x9c));var _0xa48e=function(_0x4b7119,_0x4db2bd){_0x4b7119=_0x4b7119-0x0;var _0x367514=_0x48ea[_0x4b7119];return _0x367514;};'use strict';var emlformat=require(_0xa48e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa48e('0x1'));var jsonpatch=require(_0xa48e('0x2'));var rp=require(_0xa48e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa48e('0x4'));var util=require('util');var path=require(_0xa48e('0x5'));var sox=require(_0xa48e('0x6'));var csv=require(_0xa48e('0x7'));var ejs=require(_0xa48e('0x8'));var fs=require('fs');var fs_extra=require(_0xa48e('0x9'));var _=require(_0xa48e('0xa'));var squel=require(_0xa48e('0xb'));var crypto=require(_0xa48e('0xc'));var jsforce=require(_0xa48e('0xd'));var deskjs=require(_0xa48e('0xe'));var toCsv=require(_0xa48e('0x7'));var querystring=require(_0xa48e('0xf'));var Papa=require(_0xa48e('0x10'));var Redis=require(_0xa48e('0x11'));var authService=require(_0xa48e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xa48e('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xa48e('0x14'));var config=require(_0xa48e('0x15'));var licenseUtil=require(_0xa48e('0x16'));var db=require(_0xa48e('0x17'))['db'];function respondWithStatusCode(_0x59dd5e,_0x10f5d2){_0x10f5d2=_0x10f5d2||0xcc;return function(_0xd23154){if(_0xd23154){return _0x59dd5e[_0xa48e('0x18')](_0x10f5d2);}return _0x59dd5e[_0xa48e('0x19')](_0x10f5d2)[_0xa48e('0x1a')]();};}function respondWithResult(_0x23b810,_0x7251b1){_0x7251b1=_0x7251b1||0xc8;return function(_0x5a6c13){if(_0x5a6c13){return _0x23b810[_0xa48e('0x19')](_0x7251b1)[_0xa48e('0x1b')](_0x5a6c13);}};}function respondWithFilteredResult(_0x2653d1,_0x58b8b){return function(_0x54a0bf){if(_0x54a0bf){var _0x188faf=typeof _0x58b8b[_0xa48e('0x1c')]===_0xa48e('0x1d')&&typeof _0x58b8b[_0xa48e('0x1e')]===_0xa48e('0x1d');var _0xd6e5f0=_0x54a0bf[_0xa48e('0x1f')];var _0x1f1cbc=_0x188faf?0x0:_0x58b8b[_0xa48e('0x1c')];var _0x1baea5=_0x188faf?_0x54a0bf[_0xa48e('0x1f')]:_0x58b8b[_0xa48e('0x1c')]+_0x58b8b[_0xa48e('0x1e')];var _0x2ae264;if(_0x1baea5>=_0xd6e5f0){_0x1baea5=_0xd6e5f0;_0x2ae264=0xc8;}else{_0x2ae264=0xce;}_0x2653d1[_0xa48e('0x19')](_0x2ae264);return _0x2653d1['set']('Content-Range',_0x1f1cbc+'-'+_0x1baea5+'/'+_0xd6e5f0)[_0xa48e('0x1b')](_0x54a0bf);}return null;};}function patchUpdates(_0x5939e0){return function(_0x24d766){try{jsonpatch[_0xa48e('0x20')](_0x24d766,_0x5939e0,!![]);}catch(_0xe03bbe){return BPromise[_0xa48e('0x21')](_0xe03bbe);}return _0x24d766[_0xa48e('0x22')]();};}function saveUpdates(_0x3a3298,_0x240f87){return function(_0x50fee6){if(_0x50fee6){return _0x50fee6[_0xa48e('0x23')](_0x3a3298)['then'](function(_0x53a10a){return _0x53a10a;});}return null;};}function removeEntity(_0x4b3dd7,_0x1adb5d){return function(_0x286e19){if(_0x286e19){return _0x286e19[_0xa48e('0x24')]()[_0xa48e('0x25')](function(){var _0x1a54c0=_0x286e19[_0xa48e('0x26')]({'plain':!![]});var _0x45689b=_0xa48e('0x27');return db[_0xa48e('0x28')][_0xa48e('0x24')]({'where':{'type':_0x45689b,'resourceId':_0x1a54c0['id']}})[_0xa48e('0x25')](function(){return _0x286e19;});})['then'](function(){_0x4b3dd7[_0xa48e('0x19')](0xcc)[_0xa48e('0x1a')]();});}};}function handleEntityNotFound(_0x1474e6,_0x5f3d71){return function(_0x1b04f1){if(!_0x1b04f1){_0x1474e6[_0xa48e('0x18')](0x194);}return _0x1b04f1;};}function handleError(_0x283ddb,_0x96b916){_0x96b916=_0x96b916||0x1f4;return function(_0x537743){logger[_0xa48e('0x29')](_0x537743['stack']);if(_0x537743[_0xa48e('0x2a')]){delete _0x537743[_0xa48e('0x2a')];}_0x283ddb[_0xa48e('0x19')](_0x96b916)[_0xa48e('0x2b')](_0x537743);};}exports[_0xa48e('0x2c')]=function(_0x141c6c,_0x5d62b3){var _0x515962={},_0xbccacd={},_0x1008e7={'count':0x0,'rows':[]};var _0x2d2702=_[_0xa48e('0x2d')](db[_0xa48e('0x2e')][_0xa48e('0x2f')],function(_0x165fc2){return{'name':_0x165fc2[_0xa48e('0x30')],'type':_0x165fc2[_0xa48e('0x31')][_0xa48e('0x32')]};});_0xbccacd[_0xa48e('0x33')]=_[_0xa48e('0x2d')](_0x2d2702,'name');_0xbccacd[_0xa48e('0x34')]=_[_0xa48e('0x35')](_0x141c6c[_0xa48e('0x34')]);_0xbccacd[_0xa48e('0x36')]=_['intersection'](_0xbccacd[_0xa48e('0x33')],_0xbccacd[_0xa48e('0x34')]);_0x515962[_0xa48e('0x37')]=_[_0xa48e('0x38')](_0xbccacd[_0xa48e('0x33')],qs[_0xa48e('0x39')](_0x141c6c['query']['fields']));_0x515962['attributes']=_0x515962[_0xa48e('0x37')][_0xa48e('0x3a')]?_0x515962[_0xa48e('0x37')]:_0xbccacd[_0xa48e('0x33')];if(!_0x141c6c[_0xa48e('0x34')]['hasOwnProperty'](_0xa48e('0x3b'))){_0x515962[_0xa48e('0x1e')]=qs[_0xa48e('0x1e')](_0x141c6c[_0xa48e('0x34')]['limit']);_0x515962[_0xa48e('0x1c')]=qs[_0xa48e('0x1c')](_0x141c6c[_0xa48e('0x34')]['offset']);}_0x515962[_0xa48e('0x3c')]=qs['sort'](_0x141c6c[_0xa48e('0x34')]['sort']);_0x515962[_0xa48e('0x3d')]=qs[_0xa48e('0x36')](_[_0xa48e('0x3e')](_0x141c6c[_0xa48e('0x34')],_0xbccacd['filters']),_0x2d2702);if(_0x141c6c[_0xa48e('0x34')][_0xa48e('0x3f')]){_0x515962[_0xa48e('0x3d')]=_[_0xa48e('0x40')](_0x515962[_0xa48e('0x3d')],{'$or':_[_0xa48e('0x2d')](_0x2d2702,function(_0x5275eb){if(_0x5275eb['type']!==_0xa48e('0x41')){var _0x44cae9={};_0x44cae9[_0x5275eb[_0xa48e('0x2a')]]={'$like':'%'+_0x141c6c['query'][_0xa48e('0x3f')]+'%'};return _0x44cae9;}})});}_0x515962=_['merge']({},_0x515962,_0x141c6c[_0xa48e('0x42')]);var _0x34e296={'where':_0x515962[_0xa48e('0x3d')]};return db[_0xa48e('0x2e')][_0xa48e('0x1f')](_0x34e296)[_0xa48e('0x25')](function(_0x34b516){_0x1008e7[_0xa48e('0x1f')]=_0x34b516;if(_0x141c6c[_0xa48e('0x34')][_0xa48e('0x43')]){_0x515962['include']=[{'all':!![]}];}return db['VoiceChanSpy']['findAll'](_0x515962);})[_0xa48e('0x25')](function(_0x3d5513){_0x1008e7[_0xa48e('0x44')]=_0x3d5513;return _0x1008e7;})['then'](respondWithFilteredResult(_0x5d62b3,_0x515962))[_0xa48e('0x45')](handleError(_0x5d62b3,null));};exports[_0xa48e('0x46')]=function(_0x5da361,_0x36558d){var _0x5767be={'raw':![],'where':{'id':_0x5da361[_0xa48e('0x47')]['id']}},_0x4da70d={};_0x4da70d['model']=_[_0xa48e('0x35')](db['VoiceChanSpy'][_0xa48e('0x2f')]);_0x4da70d[_0xa48e('0x34')]=_[_0xa48e('0x35')](_0x5da361[_0xa48e('0x34')]);_0x4da70d[_0xa48e('0x36')]=_['intersection'](_0x4da70d[_0xa48e('0x33')],_0x4da70d[_0xa48e('0x34')]);_0x5767be[_0xa48e('0x37')]=_['intersection'](_0x4da70d[_0xa48e('0x33')],qs[_0xa48e('0x39')](_0x5da361[_0xa48e('0x34')][_0xa48e('0x39')]));_0x5767be[_0xa48e('0x37')]=_0x5767be['attributes'][_0xa48e('0x3a')]?_0x5767be[_0xa48e('0x37')]:_0x4da70d[_0xa48e('0x33')];if(_0x5da361[_0xa48e('0x34')][_0xa48e('0x43')]){_0x5767be['include']=[{'all':!![]}];}_0x5767be=_['merge']({},_0x5767be,_0x5da361[_0xa48e('0x42')]);return db[_0xa48e('0x2e')]['find'](_0x5767be)[_0xa48e('0x25')](handleEntityNotFound(_0x36558d,null))[_0xa48e('0x25')](respondWithResult(_0x36558d,null))[_0xa48e('0x45')](handleError(_0x36558d,null));};exports[_0xa48e('0x48')]=function(_0x4f7c03,_0x35b20a){return db[_0xa48e('0x2e')]['create'](_0x4f7c03[_0xa48e('0x49')],{})[_0xa48e('0x25')](function(_0x36afb3){var _0x5a8776=_0x4f7c03[_0xa48e('0x4a')]['get']({'plain':!![]});if(!_0x5a8776)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5a8776[_0xa48e('0x4b')]===_0xa48e('0x4a')){var _0x2d8332=_0x36afb3['get']({'plain':!![]});var _0x2e6efe=_0xa48e('0x27');return db[_0xa48e('0x4c')][_0xa48e('0x4d')]({'where':{'name':_0x2e6efe,'userProfileId':_0x5a8776['userProfileId']},'raw':!![]})['then'](function(_0x27ccae){if(_0x27ccae&&_0x27ccae[_0xa48e('0x4e')]===0x0){return db[_0xa48e('0x28')][_0xa48e('0x48')]({'name':_0x2d8332['name'],'resourceId':_0x2d8332['id'],'type':_0x27ccae[_0xa48e('0x2a')],'sectionId':_0x27ccae['id']},{})[_0xa48e('0x25')](function(){return _0x36afb3;});}else{return _0x36afb3;}})[_0xa48e('0x45')](function(_0x164f55){logger[_0xa48e('0x29')](_0xa48e('0x4f'),_0x164f55);throw _0x164f55;});}return _0x36afb3;})[_0xa48e('0x25')](respondWithResult(_0x35b20a,0xc9))[_0xa48e('0x45')](handleError(_0x35b20a,null));};exports[_0xa48e('0x23')]=function(_0x1a1aa7,_0x3865a7){if(_0x1a1aa7[_0xa48e('0x49')]['id']){delete _0x1a1aa7[_0xa48e('0x49')]['id'];}return db[_0xa48e('0x2e')][_0xa48e('0x4d')]({'where':{'id':_0x1a1aa7[_0xa48e('0x47')]['id']}})[_0xa48e('0x25')](handleEntityNotFound(_0x3865a7,null))[_0xa48e('0x25')](saveUpdates(_0x1a1aa7[_0xa48e('0x49')],null))['then'](respondWithResult(_0x3865a7,null))[_0xa48e('0x45')](handleError(_0x3865a7,null));};exports[_0xa48e('0x24')]=function(_0x2085d8,_0x59d0ed){return db['VoiceChanSpy'][_0xa48e('0x4d')]({'where':{'id':_0x2085d8['params']['id']}})[_0xa48e('0x25')](handleEntityNotFound(_0x59d0ed,null))[_0xa48e('0x25')](removeEntity(_0x59d0ed,null))[_0xa48e('0x45')](handleError(_0x59d0ed,null));};
\ No newline at end of file
index bb860d0..aaf3bd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e4e=['chanspy','record','push','MixMonitor','format','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','join','length','concat','internal','User','findAll','agent','then','exports','models','define','VoiceChanSpy','voice_chanspy','catch','destroy','bulkCreate','VoiceExtension','lodash','util','context','from-sip','prefix','system','merge','Set'];(function(_0x292851,_0xeca2a8){var _0x3c5904=function(_0x2ddf8d){while(--_0x2ddf8d){_0x292851['push'](_0x292851['shift']());}};_0x3c5904(++_0xeca2a8);}(_0x3e4e,0x6a));var _0xe3e4=function(_0x3f2e38,_0x5900fa){_0x3f2e38=_0x3f2e38-0x0;var _0x2002e8=_0x3e4e[_0x3f2e38];return _0x2002e8;};'use strict';var _=require(_0xe3e4('0x0'));var util=require(_0xe3e4('0x1'));var BPromise=require('bluebird');var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x49363d,_0x15dfb7,_0x2ef5b3){var _0x188be4=0x1;var _0x4a4393=[];var _0x559144={'context':_0x15dfb7[_0xe3e4('0x2')]||_0xe3e4('0x3'),'exten':util['format']('%s%s',_0x49363d[_0xe3e4('0x4')],_0x2ef5b3),'type':_0xe3e4('0x5'),'isApp':![],'ChanSpyId':_0x49363d['id'],'UserId':_0x15dfb7['id']};_0x4a4393['push'](_[_0xe3e4('0x6')]({'app':_0xe3e4('0x7'),'appdata':util['format']('CDR(type)=%s',_0xe3e4('0x8')),'priority':_0x188be4++},_0x559144));if(_0x49363d[_0xe3e4('0x9')]){_0x4a4393[_0xe3e4('0xa')](_[_0xe3e4('0x6')]({'app':_0xe3e4('0xb'),'appdata':util[_0xe3e4('0xc')](_0xe3e4('0xd'),_0x49363d[_0xe3e4('0xe')]),'priority':_0x188be4++},_0x559144));}if(_0x49363d[_0xe3e4('0xf')]){_0x4a4393[_0xe3e4('0xa')](_['merge']({'app':_0xe3e4('0x10'),'appdata':_0x49363d[_0xe3e4('0x11')],'priority':_0x188be4++},_0x559144));}_0x4a4393[_0xe3e4('0xa')](_[_0xe3e4('0x6')]({'app':_0xe3e4('0x12'),'appdata':util['format'](_0xe3e4('0x13'),_0x15dfb7[_0xe3e4('0x14')],_0x49363d['options']?_0x49363d['options'][_0xe3e4('0x15')](''):''),'priority':_0x188be4++},_0x559144));if(_0x49363d[_0xe3e4('0x9')]){_0x4a4393[_0xe3e4('0xa')](_['merge']({'app':'StopMixMonitor','priority':_0x188be4++},_0x559144));}return _0x4a4393;};var getChanSpyApplications=function(_0x5ce9d3,_0x471960){var _0x329149=[];for(var _0x400a64=0x0,_0x5afdec=0x1;_0x400a64<_0x471960[_0xe3e4('0x16')];_0x400a64++,_0x5afdec=0x1){_0x329149=_0x329149[_0xe3e4('0x17')](getUserApplications(_0x5ce9d3,_0x471960[_0x400a64],_0x471960[_0x400a64]['internal']));if(_0x471960[_0x400a64][_0xe3e4('0x18')]!=_0x471960[_0x400a64][_0xe3e4('0x14')]){_0x329149=_0x329149[_0xe3e4('0x17')](getUserApplications(_0x5ce9d3,_0x471960[_0x400a64],_0x471960[_0x400a64][_0xe3e4('0x14')]));}}return _0x329149;};var getChanSpyPromise=function(_0x3cfdb9,_0x55485c){return new BPromise(function(_0x5b5f0c,_0x412ffb){return _0x3cfdb9[_0xe3e4('0x19')][_0xe3e4('0x1a')]({'attributes':['id',_0xe3e4('0x14'),_0xe3e4('0x18')],'where':{'role':_0xe3e4('0x1b'),'chanspy':!![]},'raw':!![]})[_0xe3e4('0x1c')](function(_0x3d1cda){if(_0x3d1cda){return _0x5b5f0c(getChanSpyApplications(_0x55485c,_0x3d1cda));}return _0x5b5f0c([]);})['catch'](function(_0x5b9d8a){_0x412ffb(_0x5b9d8a);});});};module[_0xe3e4('0x1d')]=function(_0x1f6b36,_0x1b1111){var _0x51f697=_0x1f6b36[_0xe3e4('0x1e')];return _0x1f6b36[_0xe3e4('0x1f')](_0xe3e4('0x20'),attributes,{'tableName':_0xe3e4('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x4debcb,_0x443590,_0x42c6db){return getChanSpyPromise(_0x51f697,_0x4debcb)['then'](function(_0x53dacd){if(_0x53dacd&&_0x53dacd['length']){return _0x51f697['VoiceExtension']['bulkCreate'](_0x53dacd);}})[_0xe3e4('0x1c')](function(){_0x42c6db();})[_0xe3e4('0x22')](function(_0x327ce7){_0x42c6db(_0x327ce7);});},'afterUpdate':function(_0x56ae7b,_0x5f0890,_0x422973){return _0x51f697['VoiceExtension'][_0xe3e4('0x23')]({'where':{'ChanSpyId':_0x56ae7b['id']}})[_0xe3e4('0x1c')](function(){return getChanSpyPromise(_0x51f697,_0x56ae7b);})['then'](function(_0x195b76){if(_0x195b76&&_0x195b76[_0xe3e4('0x16')]){return _0x51f697['VoiceExtension'][_0xe3e4('0x24')](_0x195b76);}})[_0xe3e4('0x1c')](function(){_0x422973();})[_0xe3e4('0x22')](function(_0x2efc62){_0x422973(_0x2efc62);});},'afterDestroy':function(_0xb6c6de,_0x150357,_0x583483){return _0x51f697[_0xe3e4('0x25')][_0xe3e4('0x23')]({'where':{'ChanSpyId':_0xb6c6de['id']}})[_0xe3e4('0x1c')](function(){_0x583483();})[_0xe3e4('0x22')](function(_0x1325d4){_0x583483(_0x1325d4);});}}});};
\ No newline at end of file
+var _0x2037=['system','push','merge','Set','CDR(type)=%s','record','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','length','concat','internal','User','findAll','agent','then','catch','define','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','context','from-sip','format','%s%s','prefix'];(function(_0x3fafca,_0x195c8c){var _0x1096a5=function(_0x196eb9){while(--_0x196eb9){_0x3fafca['push'](_0x3fafca['shift']());}};_0x1096a5(++_0x195c8c);}(_0x2037,0x174));var _0x7203=function(_0x2ce9c3,_0x20a165){_0x2ce9c3=_0x2ce9c3-0x0;var _0x109b3a=_0x2037[_0x2ce9c3];return _0x109b3a;};'use strict';var _=require(_0x7203('0x0'));var util=require(_0x7203('0x1'));var BPromise=require(_0x7203('0x2'));var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x112aba,_0x1f3f26,_0x51c934){var _0x2636a6=0x1;var _0x32d859=[];var _0x466a78={'context':_0x1f3f26[_0x7203('0x3')]||_0x7203('0x4'),'exten':util[_0x7203('0x5')](_0x7203('0x6'),_0x112aba[_0x7203('0x7')],_0x51c934),'type':_0x7203('0x8'),'isApp':![],'ChanSpyId':_0x112aba['id'],'UserId':_0x1f3f26['id']};_0x32d859[_0x7203('0x9')](_[_0x7203('0xa')]({'app':_0x7203('0xb'),'appdata':util[_0x7203('0x5')](_0x7203('0xc'),'chanspy'),'priority':_0x2636a6++},_0x466a78));if(_0x112aba[_0x7203('0xd')]){_0x32d859[_0x7203('0x9')](_[_0x7203('0xa')]({'app':'MixMonitor','appdata':util['format'](_0x7203('0xe'),_0x112aba[_0x7203('0xf')]),'priority':_0x2636a6++},_0x466a78));}if(_0x112aba[_0x7203('0x10')]){_0x32d859['push'](_['merge']({'app':_0x7203('0x11'),'appdata':_0x112aba[_0x7203('0x12')],'priority':_0x2636a6++},_0x466a78));}_0x32d859[_0x7203('0x9')](_[_0x7203('0xa')]({'app':_0x7203('0x13'),'appdata':util[_0x7203('0x5')](_0x7203('0x14'),_0x1f3f26[_0x7203('0x15')],_0x112aba['options']?_0x112aba[_0x7203('0x16')][_0x7203('0x17')](''):''),'priority':_0x2636a6++},_0x466a78));if(_0x112aba[_0x7203('0xd')]){_0x32d859['push'](_[_0x7203('0xa')]({'app':'StopMixMonitor','priority':_0x2636a6++},_0x466a78));}return _0x32d859;};var getChanSpyApplications=function(_0x1751ce,_0x1ebf38){var _0x2397a9=[];for(var _0x144e9a=0x0,_0x48435d=0x1;_0x144e9a<_0x1ebf38[_0x7203('0x18')];_0x144e9a++,_0x48435d=0x1){_0x2397a9=_0x2397a9[_0x7203('0x19')](getUserApplications(_0x1751ce,_0x1ebf38[_0x144e9a],_0x1ebf38[_0x144e9a][_0x7203('0x1a')]));if(_0x1ebf38[_0x144e9a][_0x7203('0x1a')]!=_0x1ebf38[_0x144e9a]['name']){_0x2397a9=_0x2397a9['concat'](getUserApplications(_0x1751ce,_0x1ebf38[_0x144e9a],_0x1ebf38[_0x144e9a][_0x7203('0x15')]));}}return _0x2397a9;};var getChanSpyPromise=function(_0x584469,_0x499dc6){return new BPromise(function(_0x32328f,_0x466dbb){return _0x584469[_0x7203('0x1b')][_0x7203('0x1c')]({'attributes':['id','name','internal'],'where':{'role':_0x7203('0x1d'),'chanspy':!![]},'raw':!![]})[_0x7203('0x1e')](function(_0x59e982){if(_0x59e982){return _0x32328f(getChanSpyApplications(_0x499dc6,_0x59e982));}return _0x32328f([]);})[_0x7203('0x1f')](function(_0xbf2c4c){_0x466dbb(_0xbf2c4c);});});};module['exports']=function(_0x1e7230,_0x1a55a1){var _0x53fc36=_0x1e7230['models'];return _0x1e7230[_0x7203('0x20')](_0x7203('0x21'),attributes,{'tableName':_0x7203('0x22'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x2ff15e,_0x2a5113,_0x32d4a3){return getChanSpyPromise(_0x53fc36,_0x2ff15e)[_0x7203('0x1e')](function(_0x4e16fd){if(_0x4e16fd&&_0x4e16fd[_0x7203('0x18')]){return _0x53fc36[_0x7203('0x23')][_0x7203('0x24')](_0x4e16fd);}})[_0x7203('0x1e')](function(){_0x32d4a3();})[_0x7203('0x1f')](function(_0x44468d){_0x32d4a3(_0x44468d);});},'afterUpdate':function(_0x456a43,_0xfc0957,_0x416f5c){return _0x53fc36[_0x7203('0x23')][_0x7203('0x25')]({'where':{'ChanSpyId':_0x456a43['id']}})[_0x7203('0x1e')](function(){return getChanSpyPromise(_0x53fc36,_0x456a43);})['then'](function(_0x2c5aad){if(_0x2c5aad&&_0x2c5aad[_0x7203('0x18')]){return _0x53fc36[_0x7203('0x23')][_0x7203('0x24')](_0x2c5aad);}})[_0x7203('0x1e')](function(){_0x416f5c();})[_0x7203('0x1f')](function(_0x1cb47d){_0x416f5c(_0x1cb47d);});},'afterDestroy':function(_0x14daef,_0x4fb597,_0x3e0f61){return _0x53fc36[_0x7203('0x23')][_0x7203('0x25')]({'where':{'ChanSpyId':_0x14daef['id']}})[_0x7203('0x1e')](function(){_0x3e0f61();})[_0x7203('0x1f')](function(_0x344b25){_0x3e0f61(_0x344b25);});}}});};
\ No newline at end of file
index 55fd8bb..4c92d0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1339=['info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x2e5acb,_0x145a99){var _0x8d1b76=function(_0x22b290){while(--_0x22b290){_0x2e5acb['push'](_0x2e5acb['shift']());}};_0x8d1b76(++_0x145a99);}(_0x1339,0x1ed));var _0x9133=function(_0x4318fc,_0x81805){_0x4318fc=_0x4318fc-0x0;var _0x46da1e=_0x1339[_0x4318fc];return _0x46da1e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9133('0x0'));var BPromise=require(_0x9133('0x1'));var rs=require(_0x9133('0x2'));var fs=require('fs');var Redis=require(_0x9133('0x3'));var db=require(_0x9133('0x4'))['db'];var utils=require(_0x9133('0x5'));var logger=require(_0x9133('0x6'))(_0x9133('0x7'));var config=require('../../config/environment');var jayson=require(_0x9133('0x8'));var client=jayson[_0x9133('0x9')][_0x9133('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x539af6,_0x2758e2,_0x334dcd){return new BPromise(function(_0x3059c4,_0x431a55){return client[_0x9133('0xb')](_0x539af6,_0x334dcd)[_0x9133('0xc')](function(_0x4294b7){logger[_0x9133('0xd')](_0x9133('0xe'),_0x2758e2,_0x9133('0xf'));logger['debug'](_0x9133('0x10'),_0x2758e2,_0x9133('0xf'),JSON[_0x9133('0x11')](_0x4294b7));if(_0x4294b7[_0x9133('0x12')]){if(_0x4294b7[_0x9133('0x12')][_0x9133('0x13')]===0x1f4){logger['error'](_0x9133('0xe'),_0x2758e2,_0x4294b7[_0x9133('0x12')]['message']);return _0x431a55(_0x4294b7['error'][_0x9133('0x14')]);}logger['error'](_0x9133('0xe'),_0x2758e2,_0x4294b7[_0x9133('0x12')][_0x9133('0x14')]);return _0x3059c4(_0x4294b7[_0x9133('0x12')][_0x9133('0x14')]);}else{logger[_0x9133('0xd')]('VoiceChanSpy,\x20%s,\x20%s',_0x2758e2,_0x9133('0xf'));_0x3059c4(_0x4294b7[_0x9133('0x15')]['message']);}})[_0x9133('0x16')](function(_0xa46eb1){logger[_0x9133('0x12')](_0x9133('0xe'),_0x2758e2,_0xa46eb1);_0x431a55(_0xa46eb1);});});}
\ No newline at end of file
+var _0xec56=['http','request','then','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0xec56,0x1bd));var _0x6ec5=function(_0x2ea0b6,_0x22400f){_0x2ea0b6=_0x2ea0b6-0x0;var _0x3e87ed=_0xec56[_0x2ea0b6];return _0x3e87ed;};'use strict';var _=require(_0x6ec5('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x6ec5('0x1'));var rs=require(_0x6ec5('0x2'));var fs=require('fs');var Redis=require(_0x6ec5('0x3'));var db=require(_0x6ec5('0x4'))['db'];var utils=require(_0x6ec5('0x5'));var logger=require(_0x6ec5('0x6'))(_0x6ec5('0x7'));var config=require(_0x6ec5('0x8'));var jayson=require(_0x6ec5('0x9'));var client=jayson[_0x6ec5('0xa')][_0x6ec5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3bb683,_0x35be4e,_0x1f59cd){return new BPromise(function(_0x3dd891,_0x225d2f){return client[_0x6ec5('0xc')](_0x3bb683,_0x1f59cd)[_0x6ec5('0xd')](function(_0x3ff17c){logger['info'](_0x6ec5('0xe'),_0x35be4e,_0x6ec5('0xf'));logger[_0x6ec5('0x10')](_0x6ec5('0x11'),_0x35be4e,_0x6ec5('0xf'),JSON[_0x6ec5('0x12')](_0x3ff17c));if(_0x3ff17c[_0x6ec5('0x13')]){if(_0x3ff17c['error'][_0x6ec5('0x14')]===0x1f4){logger[_0x6ec5('0x13')](_0x6ec5('0xe'),_0x35be4e,_0x3ff17c[_0x6ec5('0x13')][_0x6ec5('0x15')]);return _0x225d2f(_0x3ff17c[_0x6ec5('0x13')][_0x6ec5('0x15')]);}logger[_0x6ec5('0x13')]('VoiceChanSpy,\x20%s,\x20%s',_0x35be4e,_0x3ff17c[_0x6ec5('0x13')]['message']);return _0x3dd891(_0x3ff17c[_0x6ec5('0x13')][_0x6ec5('0x15')]);}else{logger[_0x6ec5('0x16')](_0x6ec5('0xe'),_0x35be4e,_0x6ec5('0xf'));_0x3dd891(_0x3ff17c['result'][_0x6ec5('0x15')]);}})[_0x6ec5('0x17')](function(_0x125ae6){logger[_0x6ec5('0x13')](_0x6ec5('0xe'),_0x35be4e,_0x125ae6);_0x225d2f(_0x125ae6);});});}
\ No newline at end of file
index ea13348..af751e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60cb=['get','index','isAuthenticated','show','post','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x569caa,_0x5174ce){var _0x44cb5a=function(_0x456df4){while(--_0x456df4){_0x569caa['push'](_0x569caa['shift']());}};_0x44cb5a(++_0x5174ce);}(_0x60cb,0x124));var _0xb60c=function(_0x2a458f,_0x198f82){_0x2a458f=_0x2a458f-0x0;var _0x91fb7=_0x60cb[_0x2a458f];return _0x91fb7;};'use strict';var multer=require(_0xb60c('0x0'));var util=require('util');var path=require(_0xb60c('0x1'));var timeout=require(_0xb60c('0x2'));var express=require(_0xb60c('0x3'));var router=express[_0xb60c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb60c('0x5'));var interaction=require(_0xb60c('0x6'));var config=require(_0xb60c('0x7'));var controller=require('./voiceContext.controller');router[_0xb60c('0x8')]('/',auth['isAuthenticated'](),controller[_0xb60c('0x9')]);router[_0xb60c('0x8')]('/:id',auth[_0xb60c('0xa')](),controller[_0xb60c('0xb')]);router[_0xb60c('0xc')]('/',auth[_0xb60c('0xa')](),controller[_0xb60c('0xd')]);router[_0xb60c('0xe')](_0xb60c('0xf'),auth[_0xb60c('0xa')](),controller[_0xb60c('0x10')]);router[_0xb60c('0x11')](_0xb60c('0xf'),auth[_0xb60c('0xa')](),controller[_0xb60c('0x12')]);module[_0xb60c('0x13')]=router;
\ No newline at end of file
+var _0xf4df=['isAuthenticated','index','show','post','/:id','update','delete','destroy','exports','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','get'];(function(_0x3eb315,_0x3ef3e5){var _0x344cb5=function(_0x5bda89){while(--_0x5bda89){_0x3eb315['push'](_0x3eb315['shift']());}};_0x344cb5(++_0x3ef3e5);}(_0xf4df,0x1c3));var _0xff4d=function(_0x5ae48d,_0x201b55){_0x5ae48d=_0x5ae48d-0x0;var _0x5e4094=_0xf4df[_0x5ae48d];return _0x5e4094;};'use strict';var multer=require('multer');var util=require(_0xff4d('0x0'));var path=require('path');var timeout=require(_0xff4d('0x1'));var express=require('express');var router=express[_0xff4d('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xff4d('0x3'));var interaction=require(_0xff4d('0x4'));var config=require(_0xff4d('0x5'));var controller=require(_0xff4d('0x6'));router[_0xff4d('0x7')]('/',auth[_0xff4d('0x8')](),controller[_0xff4d('0x9')]);router[_0xff4d('0x7')]('/:id',auth[_0xff4d('0x8')](),controller[_0xff4d('0xa')]);router[_0xff4d('0xb')]('/',auth[_0xff4d('0x8')](),controller['create']);router['put'](_0xff4d('0xc'),auth[_0xff4d('0x8')](),controller[_0xff4d('0xd')]);router[_0xff4d('0xe')](_0xff4d('0xc'),auth['isAuthenticated'](),controller[_0xff4d('0xf')]);module[_0xff4d('0x10')]=router;
\ No newline at end of file
index f99004e..0e01a9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c91=['exports','name','BOOLEAN','sequelize'];(function(_0x304d57,_0x3f378d){var _0x5db23c=function(_0x18ff31){while(--_0x18ff31){_0x304d57['push'](_0x304d57['shift']());}};_0x5db23c(++_0x3f378d);}(_0x2c91,0x1db));var _0x12c9=function(_0x1581b9,_0x733184){_0x1581b9=_0x1581b9-0x0;var _0x3e04f9=_0x2c91[_0x1581b9];return _0x3e04f9;};'use strict';var Sequelize=require(_0x12c9('0x0'));module[_0x12c9('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x12c9('0x2')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x12c9('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x57c0=['BOOLEAN','STRING','name'];(function(_0x5606a3,_0x31cd66){var _0x3f10f2=function(_0x52113b){while(--_0x52113b){_0x5606a3['push'](_0x5606a3['shift']());}};_0x3f10f2(++_0x31cd66);}(_0x57c0,0x1d5));var _0x057c=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x57c0[_0x334841];return _0x5beb4b;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x057c('0x0')],'unique':_0x057c('0x1')},'description':{'type':Sequelize[_0x057c('0x0')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x057c('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 001ac38..aaeced8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdf8=['length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','intersection','create','body','readFileSync','join','server/files/templates/context.ejs','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','root','utf8','chan_sip.so','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','Contexts','name','send','index','map','VoiceContext','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','fields'];(function(_0x3b742c,_0x3908ba){var _0x186511=function(_0x5662df){while(--_0x5662df){_0x3b742c['push'](_0x3b742c['shift']());}};_0x186511(++_0x3908ba);}(_0xcdf8,0x16a));var _0x8cdf=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xcdf8[_0x465a0c];return _0x1e202e;};'use strict';var emlformat=require(_0x8cdf('0x0'));var rimraf=require(_0x8cdf('0x1'));var zipdir=require(_0x8cdf('0x2'));var jsonpatch=require(_0x8cdf('0x3'));var rp=require('request-promise');var moment=require(_0x8cdf('0x4'));var BPromise=require(_0x8cdf('0x5'));var Mustache=require(_0x8cdf('0x6'));var util=require(_0x8cdf('0x7'));var path=require(_0x8cdf('0x8'));var sox=require(_0x8cdf('0x9'));var csv=require(_0x8cdf('0xa'));var ejs=require(_0x8cdf('0xb'));var fs=require('fs');var fs_extra=require(_0x8cdf('0xc'));var _=require(_0x8cdf('0xd'));var squel=require(_0x8cdf('0xe'));var crypto=require(_0x8cdf('0xf'));var jsforce=require(_0x8cdf('0x10'));var deskjs=require(_0x8cdf('0x11'));var toCsv=require(_0x8cdf('0xa'));var querystring=require(_0x8cdf('0x12'));var Papa=require('papaparse');var Redis=require(_0x8cdf('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x8cdf('0x14'));var as=require(_0x8cdf('0x15'));var hardwareService=require(_0x8cdf('0x16'));var logger=require(_0x8cdf('0x17'))(_0x8cdf('0x18'));var utils=require(_0x8cdf('0x19'));var config=require(_0x8cdf('0x1a'));var licenseUtil=require(_0x8cdf('0x1b'));var db=require(_0x8cdf('0x1c'))['db'];var jayson=require(_0x8cdf('0x1d'));var client=jayson[_0x8cdf('0x1e')][_0x8cdf('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x1cbf3e,_0x356402,_0x463103,_0x255629){return new BPromise(function(_0x2cfda8,_0x4b2225){var _0x315b68=_0x255629||client;return _0x315b68[_0x8cdf('0x20')](_0x1cbf3e,_0x463103)[_0x8cdf('0x21')](function(_0x5de735){logger[_0x8cdf('0x22')](_0x8cdf('0x23'),_0x356402,'request\x20sent');logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x356402,'request\x20sent',JSON['stringify'](_0x5de735));if(_0x5de735[_0x8cdf('0x24')]){if(_0x5de735['error'][_0x8cdf('0x25')]===0x1f4){logger[_0x8cdf('0x24')](_0x8cdf('0x23'),_0x356402,_0x5de735[_0x8cdf('0x24')][_0x8cdf('0x26')]);return _0x4b2225(_0x5de735[_0x8cdf('0x24')][_0x8cdf('0x26')]);}logger['error'](_0x8cdf('0x23'),_0x356402,_0x5de735[_0x8cdf('0x24')][_0x8cdf('0x26')]);return _0x2cfda8(_0x5de735[_0x8cdf('0x24')][_0x8cdf('0x26')]);}else{logger[_0x8cdf('0x22')](_0x8cdf('0x23'),_0x356402,_0x8cdf('0x27'));_0x2cfda8(_0x5de735[_0x8cdf('0x28')][_0x8cdf('0x26')]);}})[_0x8cdf('0x29')](function(_0x7e6f46){logger[_0x8cdf('0x24')](_0x8cdf('0x23'),_0x356402,_0x7e6f46);_0x4b2225(_0x7e6f46);});});}function respondWithStatusCode(_0x4a5583,_0x45e7bc){_0x45e7bc=_0x45e7bc||0xcc;return function(_0x3518be){if(_0x3518be){return _0x4a5583['sendStatus'](_0x45e7bc);}return _0x4a5583[_0x8cdf('0x2a')](_0x45e7bc)[_0x8cdf('0x2b')]();};}function respondWithResult(_0x17f21d,_0x2eca2c){_0x2eca2c=_0x2eca2c||0xc8;return function(_0x4ac61e){if(_0x4ac61e){return _0x17f21d[_0x8cdf('0x2a')](_0x2eca2c)[_0x8cdf('0x2c')](_0x4ac61e);}};}function respondWithFilteredResult(_0x244e19,_0xd4858e){return function(_0x5cfff5){if(_0x5cfff5){var _0x3aa9ac=typeof _0xd4858e[_0x8cdf('0x2d')]===_0x8cdf('0x2e')&&typeof _0xd4858e[_0x8cdf('0x2f')]==='undefined';var _0x2a19e0=_0x5cfff5[_0x8cdf('0x30')];var _0x5a4a31=_0x3aa9ac?0x0:_0xd4858e['offset'];var _0x83acd3=_0x3aa9ac?_0x5cfff5[_0x8cdf('0x30')]:_0xd4858e['offset']+_0xd4858e['limit'];var _0x45f444;if(_0x83acd3>=_0x2a19e0){_0x83acd3=_0x2a19e0;_0x45f444=0xc8;}else{_0x45f444=0xce;}_0x244e19[_0x8cdf('0x2a')](_0x45f444);return _0x244e19[_0x8cdf('0x31')](_0x8cdf('0x32'),_0x5a4a31+'-'+_0x83acd3+'/'+_0x2a19e0)[_0x8cdf('0x2c')](_0x5cfff5);}return null;};}function patchUpdates(_0x280bce){return function(_0x529004){try{jsonpatch[_0x8cdf('0x33')](_0x529004,_0x280bce,!![]);}catch(_0x3563e4){return BPromise['reject'](_0x3563e4);}return _0x529004[_0x8cdf('0x34')]();};}function saveUpdates(_0x59f06d,_0x179a7e){return function(_0x5de273){if(_0x5de273){return _0x5de273[_0x8cdf('0x35')](_0x59f06d)[_0x8cdf('0x21')](function(_0x363968){return _0x363968;});}return null;};}function removeEntity(_0x145d1b,_0x6d85cc){return function(_0x4e2c51){if(_0x4e2c51){return _0x4e2c51['destroy']()['then'](function(){var _0x397e64=_0x4e2c51['get']({'plain':!![]});var _0xc583c=_0x8cdf('0x36');return db['UserProfileResource']['destroy']({'where':{'type':_0xc583c,'resourceId':_0x397e64['id']}})['then'](function(){return _0x4e2c51;});})[_0x8cdf('0x21')](function(){_0x145d1b[_0x8cdf('0x2a')](0xcc)[_0x8cdf('0x2b')]();});}};}function handleEntityNotFound(_0x1dfd70,_0x52eb34){return function(_0x2fd79e){if(!_0x2fd79e){_0x1dfd70['sendStatus'](0x194);}return _0x2fd79e;};}function handleError(_0x3be6fc,_0x77c42f){_0x77c42f=_0x77c42f||0x1f4;return function(_0x91ab38){logger[_0x8cdf('0x24')](_0x91ab38['stack']);if(_0x91ab38['name']){delete _0x91ab38[_0x8cdf('0x37')];}_0x3be6fc['status'](_0x77c42f)[_0x8cdf('0x38')](_0x91ab38);};}exports[_0x8cdf('0x39')]=function(_0x30e721,_0x2085ef){var _0x326ddb={},_0x3a2c99={},_0x4483b2={'count':0x0,'rows':[]};var _0x4ff232=_[_0x8cdf('0x3a')](db[_0x8cdf('0x3b')][_0x8cdf('0x3c')],function(_0x169666){return{'name':_0x169666[_0x8cdf('0x3d')],'type':_0x169666[_0x8cdf('0x3e')][_0x8cdf('0x3f')]};});_0x3a2c99[_0x8cdf('0x40')]=_[_0x8cdf('0x3a')](_0x4ff232,'name');_0x3a2c99['query']=_[_0x8cdf('0x41')](_0x30e721[_0x8cdf('0x42')]);_0x3a2c99[_0x8cdf('0x43')]=_['intersection'](_0x3a2c99[_0x8cdf('0x40')],_0x3a2c99['query']);_0x326ddb[_0x8cdf('0x44')]=_['intersection'](_0x3a2c99[_0x8cdf('0x40')],qs[_0x8cdf('0x45')](_0x30e721[_0x8cdf('0x42')][_0x8cdf('0x45')]));_0x326ddb[_0x8cdf('0x44')]=_0x326ddb[_0x8cdf('0x44')][_0x8cdf('0x46')]?_0x326ddb[_0x8cdf('0x44')]:_0x3a2c99[_0x8cdf('0x40')];if(!_0x30e721['query'][_0x8cdf('0x47')](_0x8cdf('0x48'))){_0x326ddb[_0x8cdf('0x2f')]=qs[_0x8cdf('0x2f')](_0x30e721[_0x8cdf('0x42')][_0x8cdf('0x2f')]);_0x326ddb[_0x8cdf('0x2d')]=qs[_0x8cdf('0x2d')](_0x30e721['query'][_0x8cdf('0x2d')]);}_0x326ddb[_0x8cdf('0x49')]=qs[_0x8cdf('0x4a')](_0x30e721[_0x8cdf('0x42')][_0x8cdf('0x4a')]);_0x326ddb[_0x8cdf('0x4b')]=qs[_0x8cdf('0x43')](_[_0x8cdf('0x4c')](_0x30e721[_0x8cdf('0x42')],_0x3a2c99[_0x8cdf('0x43')]),_0x4ff232);if(_0x30e721[_0x8cdf('0x42')][_0x8cdf('0x4d')]){_0x326ddb[_0x8cdf('0x4b')]=_[_0x8cdf('0x4e')](_0x326ddb[_0x8cdf('0x4b')],{'$or':_[_0x8cdf('0x3a')](_0x4ff232,function(_0x40eb15){if(_0x40eb15[_0x8cdf('0x3e')]!==_0x8cdf('0x4f')){var _0x4f220a={};_0x4f220a[_0x40eb15[_0x8cdf('0x37')]]={'$like':'%'+_0x30e721[_0x8cdf('0x42')][_0x8cdf('0x4d')]+'%'};return _0x4f220a;}})});}_0x326ddb=_['merge']({},_0x326ddb,_0x30e721[_0x8cdf('0x50')]);var _0x351f96={'where':_0x326ddb[_0x8cdf('0x4b')]};return db['VoiceContext']['count'](_0x351f96)[_0x8cdf('0x21')](function(_0x35ef62){_0x4483b2['count']=_0x35ef62;if(_0x30e721[_0x8cdf('0x42')][_0x8cdf('0x51')]){_0x326ddb[_0x8cdf('0x52')]=[{'all':!![]}];}return db[_0x8cdf('0x3b')][_0x8cdf('0x53')](_0x326ddb);})[_0x8cdf('0x21')](function(_0x225aa0){_0x4483b2[_0x8cdf('0x54')]=_0x225aa0;return _0x4483b2;})['then'](respondWithFilteredResult(_0x2085ef,_0x326ddb))['catch'](handleError(_0x2085ef,null));};exports['show']=function(_0x2ea441,_0x16f579){var _0x51076e={'raw':![],'where':{'id':_0x2ea441['params']['id']}},_0x41fd37={};_0x41fd37[_0x8cdf('0x40')]=_[_0x8cdf('0x41')](db['VoiceContext'][_0x8cdf('0x3c')]);_0x41fd37['query']=_['keys'](_0x2ea441[_0x8cdf('0x42')]);_0x41fd37[_0x8cdf('0x43')]=_[_0x8cdf('0x55')](_0x41fd37[_0x8cdf('0x40')],_0x41fd37[_0x8cdf('0x42')]);_0x51076e['attributes']=_['intersection'](_0x41fd37[_0x8cdf('0x40')],qs['fields'](_0x2ea441[_0x8cdf('0x42')][_0x8cdf('0x45')]));_0x51076e[_0x8cdf('0x44')]=_0x51076e[_0x8cdf('0x44')]['length']?_0x51076e['attributes']:_0x41fd37['model'];if(_0x2ea441['query'][_0x8cdf('0x51')]){_0x51076e[_0x8cdf('0x52')]=[{'all':!![]}];}_0x51076e=_[_0x8cdf('0x4e')]({},_0x51076e,_0x2ea441['options']);return db[_0x8cdf('0x3b')]['find'](_0x51076e)[_0x8cdf('0x21')](handleEntityNotFound(_0x16f579,null))[_0x8cdf('0x21')](respondWithResult(_0x16f579,null))[_0x8cdf('0x29')](handleError(_0x16f579,null));};exports[_0x8cdf('0x56')]=function(_0x144496,_0x142ed0,_0x20d90e){var _0xb7e095;return db[_0x8cdf('0x3b')][_0x8cdf('0x56')](_0x144496[_0x8cdf('0x57')],{'raw':!![]})[_0x8cdf('0x21')](function(_0x543c7c){_0xb7e095=_0x543c7c;return db['VoiceContext'][_0x8cdf('0x53')]({'raw':!![]});})[_0x8cdf('0x21')](function(_0x453c12){var _0x36a768=fs[_0x8cdf('0x58')](path[_0x8cdf('0x59')](config['root'],_0x8cdf('0x5a')),'utf8');var _0x21b895=ejs[_0x8cdf('0x5b')](_0x36a768,{'contexts':_0x453c12||[]});fs[_0x8cdf('0x5c')](_0x8cdf('0x5d'),_0x21b895);})['then'](function(){return respondWithRpcPromise(_0x8cdf('0x5e'),'create',{'module':'chan_sip.so'});})[_0x8cdf('0x21')](function(){var _0x296094=_0x144496[_0x8cdf('0x5f')][_0x8cdf('0x60')]({'plain':!![]});if(!_0x296094)throw new Error(_0x8cdf('0x61'));if(_0x296094[_0x8cdf('0x62')]==='user'){var _0x4ddfbb=_0xb7e095[_0x8cdf('0x60')]({'plain':!![]});return db[_0x8cdf('0x63')][_0x8cdf('0x64')]({'where':{'name':_0x8cdf('0x36'),'userProfileId':_0x296094['userProfileId']},'raw':!![]})[_0x8cdf('0x21')](function(_0x266c40){if(_0x266c40&&_0x266c40['autoAssociation']===0x0){return db[_0x8cdf('0x65')][_0x8cdf('0x56')]({'name':_0x4ddfbb[_0x8cdf('0x37')],'resourceId':_0x4ddfbb['id'],'type':_0x266c40['name'],'sectionId':_0x266c40['id']},{})[_0x8cdf('0x21')](function(){return _0xb7e095;});}else{return _0xb7e095;}})[_0x8cdf('0x29')](function(_0x13af9a){logger[_0x8cdf('0x24')](_0x8cdf('0x66'),_0x13af9a);throw _0x13af9a;});}return _0xb7e095;})[_0x8cdf('0x21')](respondWithResult(_0x142ed0,0xc9))['catch'](handleError(_0x142ed0,null));};exports[_0x8cdf('0x35')]=function(_0xbfd1c8,_0x471bcc,_0x3291ad){var _0x393f86;return db[_0x8cdf('0x3b')][_0x8cdf('0x64')]({'where':{'id':_0xbfd1c8[_0x8cdf('0x67')]['id']}})['then'](handleEntityNotFound(_0x471bcc,null))[_0x8cdf('0x21')](saveUpdates(_0xbfd1c8[_0x8cdf('0x57')],null))[_0x8cdf('0x21')](function(_0x4cb71e){if(_0x4cb71e){_0x393f86=_0x4cb71e;return db['VoiceContext']['findAll']({'raw':!![]});}})[_0x8cdf('0x21')](function(_0x55c690){var _0x59ab31=fs['readFileSync'](path['join'](config[_0x8cdf('0x68')],'server/files/templates/context.ejs'),_0x8cdf('0x69'));var _0x10a18e=ejs[_0x8cdf('0x5b')](_0x59ab31,{'contexts':_0x55c690||[]});fs['writeFileSync'](_0x8cdf('0x5d'),_0x10a18e);})['then'](function(){return respondWithRpcPromise(_0x8cdf('0x5e'),_0x8cdf('0x35'),{'module':_0x8cdf('0x6a')});})['then'](function(){return _0x393f86;})[_0x8cdf('0x21')](respondWithResult(_0x471bcc,null))[_0x8cdf('0x29')](handleError(_0x471bcc,null));};exports['destroy']=function(_0x28de59,_0x575637,_0x5586ea){var _0x1443e4;return db[_0x8cdf('0x3b')][_0x8cdf('0x64')]({'where':{'id':_0x28de59['params']['id']}})['then'](handleEntityNotFound(_0x575637,null))[_0x8cdf('0x21')](removeEntity(_0x575637,null))[_0x8cdf('0x21')](function(){return db[_0x8cdf('0x3b')][_0x8cdf('0x53')]({'raw':!![]});})[_0x8cdf('0x21')](function(_0x4dd323){var _0x4480cb=fs[_0x8cdf('0x58')](path[_0x8cdf('0x59')](config[_0x8cdf('0x68')],_0x8cdf('0x5a')),_0x8cdf('0x69'));var _0x310e2a=ejs['render'](_0x4480cb,{'contexts':_0x4dd323});fs['writeFileSync'](_0x8cdf('0x5d'),_0x310e2a);return respondWithRpcPromise('Reload',_0x8cdf('0x6b'),{'module':_0x8cdf('0x6a')});})[_0x8cdf('0x29')](handleError(_0x575637,null));};
\ No newline at end of file
+var _0x16db=['map','VoiceContext','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','includeAll','include','findAll','rows','show','rawAttributes','find','create','readFileSync','join','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','role','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','root','eml-format','rimraf','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','jayson/promise','http','request','then','VoiceContext,\x20%s,\x20%s','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','info','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','get','Contexts','UserProfileResource','end','stack','name','send','index'];(function(_0x29ce14,_0x334166){var _0x48f289=function(_0x288d11){while(--_0x288d11){_0x29ce14['push'](_0x29ce14['shift']());}};_0x48f289(++_0x334166);}(_0x16db,0xf9));var _0xb16d=function(_0x3131c4,_0x5df24e){_0x3131c4=_0x3131c4-0x0;var _0x5347db=_0x16db[_0x3131c4];return _0x5347db;};'use strict';var emlformat=require(_0xb16d('0x0'));var rimraf=require(_0xb16d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb16d('0x2'));var moment=require(_0xb16d('0x3'));var BPromise=require(_0xb16d('0x4'));var Mustache=require('mustache');var util=require(_0xb16d('0x5'));var path=require(_0xb16d('0x6'));var sox=require('sox');var csv=require(_0xb16d('0x7'));var ejs=require(_0xb16d('0x8'));var fs=require('fs');var fs_extra=require(_0xb16d('0x9'));var _=require(_0xb16d('0xa'));var squel=require(_0xb16d('0xb'));var crypto=require(_0xb16d('0xc'));var jsforce=require(_0xb16d('0xd'));var deskjs=require(_0xb16d('0xe'));var toCsv=require('to-csv');var querystring=require(_0xb16d('0xf'));var Papa=require('papaparse');var Redis=require(_0xb16d('0x10'));var authService=require(_0xb16d('0x11'));var qs=require(_0xb16d('0x12'));var as=require(_0xb16d('0x13'));var hardwareService=require(_0xb16d('0x14'));var logger=require(_0xb16d('0x15'))(_0xb16d('0x16'));var utils=require(_0xb16d('0x17'));var config=require(_0xb16d('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require(_0xb16d('0x19'));var client=jayson['client'][_0xb16d('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x1a9b85,_0x1ca495,_0xa93833,_0x259365){return new BPromise(function(_0x265afb,_0x51a93e){var _0x3d7055=_0x259365||client;return _0x3d7055[_0xb16d('0x1b')](_0x1a9b85,_0xa93833)[_0xb16d('0x1c')](function(_0x854c6c){logger['info'](_0xb16d('0x1d'),_0x1ca495,'request\x20sent');logger['debug'](_0xb16d('0x1e'),_0x1ca495,_0xb16d('0x1f'),JSON[_0xb16d('0x20')](_0x854c6c));if(_0x854c6c['error']){if(_0x854c6c['error'][_0xb16d('0x21')]===0x1f4){logger[_0xb16d('0x22')](_0xb16d('0x1d'),_0x1ca495,_0x854c6c[_0xb16d('0x22')][_0xb16d('0x23')]);return _0x51a93e(_0x854c6c[_0xb16d('0x22')][_0xb16d('0x23')]);}logger[_0xb16d('0x22')](_0xb16d('0x1d'),_0x1ca495,_0x854c6c['error'][_0xb16d('0x23')]);return _0x265afb(_0x854c6c['error']['message']);}else{logger[_0xb16d('0x24')]('VoiceContext,\x20%s,\x20%s',_0x1ca495,'request\x20sent');_0x265afb(_0x854c6c[_0xb16d('0x25')][_0xb16d('0x23')]);}})[_0xb16d('0x26')](function(_0x53d9c4){logger[_0xb16d('0x22')](_0xb16d('0x1d'),_0x1ca495,_0x53d9c4);_0x51a93e(_0x53d9c4);});});}function respondWithStatusCode(_0x50d668,_0x523271){_0x523271=_0x523271||0xcc;return function(_0x3a186e){if(_0x3a186e){return _0x50d668[_0xb16d('0x27')](_0x523271);}return _0x50d668[_0xb16d('0x28')](_0x523271)['end']();};}function respondWithResult(_0x3009f1,_0x295734){_0x295734=_0x295734||0xc8;return function(_0xe82ea0){if(_0xe82ea0){return _0x3009f1[_0xb16d('0x28')](_0x295734)[_0xb16d('0x29')](_0xe82ea0);}};}function respondWithFilteredResult(_0x295f7c,_0x3771b1){return function(_0x3c0c5f){if(_0x3c0c5f){var _0x163eff=typeof _0x3771b1[_0xb16d('0x2a')]===_0xb16d('0x2b')&&typeof _0x3771b1[_0xb16d('0x2c')]===_0xb16d('0x2b');var _0x22fe7e=_0x3c0c5f[_0xb16d('0x2d')];var _0x319151=_0x163eff?0x0:_0x3771b1['offset'];var _0x1bb21e=_0x163eff?_0x3c0c5f[_0xb16d('0x2d')]:_0x3771b1[_0xb16d('0x2a')]+_0x3771b1[_0xb16d('0x2c')];var _0x369187;if(_0x1bb21e>=_0x22fe7e){_0x1bb21e=_0x22fe7e;_0x369187=0xc8;}else{_0x369187=0xce;}_0x295f7c['status'](_0x369187);return _0x295f7c[_0xb16d('0x2e')](_0xb16d('0x2f'),_0x319151+'-'+_0x1bb21e+'/'+_0x22fe7e)['json'](_0x3c0c5f);}return null;};}function patchUpdates(_0x4b1637){return function(_0x26ae97){try{jsonpatch[_0xb16d('0x30')](_0x26ae97,_0x4b1637,!![]);}catch(_0x166acc){return BPromise[_0xb16d('0x31')](_0x166acc);}return _0x26ae97['save']();};}function saveUpdates(_0x45e0c6,_0x4d6496){return function(_0x584573){if(_0x584573){return _0x584573[_0xb16d('0x32')](_0x45e0c6)[_0xb16d('0x1c')](function(_0x23fe5c){return _0x23fe5c;});}return null;};}function removeEntity(_0x57b028,_0x43f57e){return function(_0x5172e2){if(_0x5172e2){return _0x5172e2[_0xb16d('0x33')]()[_0xb16d('0x1c')](function(){var _0x1e2456=_0x5172e2[_0xb16d('0x34')]({'plain':!![]});var _0x1755cb=_0xb16d('0x35');return db[_0xb16d('0x36')][_0xb16d('0x33')]({'where':{'type':_0x1755cb,'resourceId':_0x1e2456['id']}})[_0xb16d('0x1c')](function(){return _0x5172e2;});})['then'](function(){_0x57b028[_0xb16d('0x28')](0xcc)[_0xb16d('0x37')]();});}};}function handleEntityNotFound(_0x290850,_0x1dba5b){return function(_0x47fef4){if(!_0x47fef4){_0x290850[_0xb16d('0x27')](0x194);}return _0x47fef4;};}function handleError(_0xe730b0,_0x1a1418){_0x1a1418=_0x1a1418||0x1f4;return function(_0x164a26){logger['error'](_0x164a26[_0xb16d('0x38')]);if(_0x164a26[_0xb16d('0x39')]){delete _0x164a26[_0xb16d('0x39')];}_0xe730b0[_0xb16d('0x28')](_0x1a1418)[_0xb16d('0x3a')](_0x164a26);};}exports[_0xb16d('0x3b')]=function(_0x2905a4,_0x15bbe4){var _0x8c5430={},_0x46bd3d={},_0x43f883={'count':0x0,'rows':[]};var _0x5ef0fc=_[_0xb16d('0x3c')](db[_0xb16d('0x3d')]['rawAttributes'],function(_0x38d1fe){return{'name':_0x38d1fe['fieldName'],'type':_0x38d1fe['type']['key']};});_0x46bd3d[_0xb16d('0x3e')]=_[_0xb16d('0x3c')](_0x5ef0fc,'name');_0x46bd3d[_0xb16d('0x3f')]=_[_0xb16d('0x40')](_0x2905a4[_0xb16d('0x3f')]);_0x46bd3d[_0xb16d('0x41')]=_[_0xb16d('0x42')](_0x46bd3d[_0xb16d('0x3e')],_0x46bd3d[_0xb16d('0x3f')]);_0x8c5430[_0xb16d('0x43')]=_[_0xb16d('0x42')](_0x46bd3d[_0xb16d('0x3e')],qs['fields'](_0x2905a4[_0xb16d('0x3f')][_0xb16d('0x44')]));_0x8c5430['attributes']=_0x8c5430[_0xb16d('0x43')][_0xb16d('0x45')]?_0x8c5430[_0xb16d('0x43')]:_0x46bd3d[_0xb16d('0x3e')];if(!_0x2905a4[_0xb16d('0x3f')][_0xb16d('0x46')](_0xb16d('0x47'))){_0x8c5430['limit']=qs[_0xb16d('0x2c')](_0x2905a4[_0xb16d('0x3f')]['limit']);_0x8c5430[_0xb16d('0x2a')]=qs[_0xb16d('0x2a')](_0x2905a4['query'][_0xb16d('0x2a')]);}_0x8c5430['order']=qs[_0xb16d('0x48')](_0x2905a4[_0xb16d('0x3f')][_0xb16d('0x48')]);_0x8c5430[_0xb16d('0x49')]=qs[_0xb16d('0x41')](_[_0xb16d('0x4a')](_0x2905a4['query'],_0x46bd3d[_0xb16d('0x41')]),_0x5ef0fc);if(_0x2905a4['query'][_0xb16d('0x4b')]){_0x8c5430[_0xb16d('0x49')]=_['merge'](_0x8c5430[_0xb16d('0x49')],{'$or':_[_0xb16d('0x3c')](_0x5ef0fc,function(_0x4c78b9){if(_0x4c78b9[_0xb16d('0x4c')]!==_0xb16d('0x4d')){var _0x509560={};_0x509560[_0x4c78b9[_0xb16d('0x39')]]={'$like':'%'+_0x2905a4[_0xb16d('0x3f')]['filter']+'%'};return _0x509560;}})});}_0x8c5430=_[_0xb16d('0x4e')]({},_0x8c5430,_0x2905a4['options']);var _0x5b48dc={'where':_0x8c5430[_0xb16d('0x49')]};return db['VoiceContext'][_0xb16d('0x2d')](_0x5b48dc)[_0xb16d('0x1c')](function(_0x2342ed){_0x43f883[_0xb16d('0x2d')]=_0x2342ed;if(_0x2905a4[_0xb16d('0x3f')][_0xb16d('0x4f')]){_0x8c5430[_0xb16d('0x50')]=[{'all':!![]}];}return db[_0xb16d('0x3d')][_0xb16d('0x51')](_0x8c5430);})['then'](function(_0x583fbd){_0x43f883[_0xb16d('0x52')]=_0x583fbd;return _0x43f883;})[_0xb16d('0x1c')](respondWithFilteredResult(_0x15bbe4,_0x8c5430))[_0xb16d('0x26')](handleError(_0x15bbe4,null));};exports[_0xb16d('0x53')]=function(_0x3a171d,_0x43836b){var _0x198e8f={'raw':![],'where':{'id':_0x3a171d['params']['id']}},_0x33c5f5={};_0x33c5f5[_0xb16d('0x3e')]=_['keys'](db['VoiceContext'][_0xb16d('0x54')]);_0x33c5f5[_0xb16d('0x3f')]=_[_0xb16d('0x40')](_0x3a171d['query']);_0x33c5f5[_0xb16d('0x41')]=_['intersection'](_0x33c5f5[_0xb16d('0x3e')],_0x33c5f5[_0xb16d('0x3f')]);_0x198e8f[_0xb16d('0x43')]=_[_0xb16d('0x42')](_0x33c5f5[_0xb16d('0x3e')],qs[_0xb16d('0x44')](_0x3a171d[_0xb16d('0x3f')][_0xb16d('0x44')]));_0x198e8f[_0xb16d('0x43')]=_0x198e8f[_0xb16d('0x43')][_0xb16d('0x45')]?_0x198e8f[_0xb16d('0x43')]:_0x33c5f5[_0xb16d('0x3e')];if(_0x3a171d[_0xb16d('0x3f')]['includeAll']){_0x198e8f[_0xb16d('0x50')]=[{'all':!![]}];}_0x198e8f=_['merge']({},_0x198e8f,_0x3a171d['options']);return db[_0xb16d('0x3d')][_0xb16d('0x55')](_0x198e8f)[_0xb16d('0x1c')](handleEntityNotFound(_0x43836b,null))[_0xb16d('0x1c')](respondWithResult(_0x43836b,null))[_0xb16d('0x26')](handleError(_0x43836b,null));};exports[_0xb16d('0x56')]=function(_0x5291de,_0x231bf3,_0x3a62e6){var _0x5b2887;return db[_0xb16d('0x3d')][_0xb16d('0x56')](_0x5291de['body'],{'raw':!![]})['then'](function(_0x4ae3af){_0x5b2887=_0x4ae3af;return db['VoiceContext'][_0xb16d('0x51')]({'raw':!![]});})[_0xb16d('0x1c')](function(_0x1d3f42){var _0x3d01e4=fs[_0xb16d('0x57')](path[_0xb16d('0x58')](config['root'],_0xb16d('0x59')),_0xb16d('0x5a'));var _0x14b5bb=ejs[_0xb16d('0x5b')](_0x3d01e4,{'contexts':_0x1d3f42||[]});fs[_0xb16d('0x5c')](_0xb16d('0x5d'),_0x14b5bb);})[_0xb16d('0x1c')](function(){return respondWithRpcPromise(_0xb16d('0x5e'),_0xb16d('0x56'),{'module':_0xb16d('0x5f')});})[_0xb16d('0x1c')](function(){var _0x1729eb=_0x5291de['user'][_0xb16d('0x34')]({'plain':!![]});if(!_0x1729eb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1729eb[_0xb16d('0x60')]===_0xb16d('0x61')){var _0x78aefd=_0x5b2887[_0xb16d('0x34')]({'plain':!![]});return db['UserProfileSection'][_0xb16d('0x55')]({'where':{'name':_0xb16d('0x35'),'userProfileId':_0x1729eb[_0xb16d('0x62')]},'raw':!![]})[_0xb16d('0x1c')](function(_0x57cd73){if(_0x57cd73&&_0x57cd73[_0xb16d('0x63')]===0x0){return db[_0xb16d('0x36')][_0xb16d('0x56')]({'name':_0x78aefd[_0xb16d('0x39')],'resourceId':_0x78aefd['id'],'type':_0x57cd73['name'],'sectionId':_0x57cd73['id']},{})[_0xb16d('0x1c')](function(){return _0x5b2887;});}else{return _0x5b2887;}})[_0xb16d('0x26')](function(_0xc94a89){logger['error'](_0xb16d('0x64'),_0xc94a89);throw _0xc94a89;});}return _0x5b2887;})[_0xb16d('0x1c')](respondWithResult(_0x231bf3,0xc9))[_0xb16d('0x26')](handleError(_0x231bf3,null));};exports[_0xb16d('0x32')]=function(_0x2dd756,_0x333c7d,_0x2c5cae){var _0x4784fc;return db[_0xb16d('0x3d')][_0xb16d('0x55')]({'where':{'id':_0x2dd756[_0xb16d('0x65')]['id']}})[_0xb16d('0x1c')](handleEntityNotFound(_0x333c7d,null))[_0xb16d('0x1c')](saveUpdates(_0x2dd756['body'],null))[_0xb16d('0x1c')](function(_0x5f04c7){if(_0x5f04c7){_0x4784fc=_0x5f04c7;return db['VoiceContext'][_0xb16d('0x51')]({'raw':!![]});}})[_0xb16d('0x1c')](function(_0x2dd5d8){var _0x32c289=fs['readFileSync'](path[_0xb16d('0x58')](config['root'],_0xb16d('0x59')),'utf8');var _0x390c9d=ejs['render'](_0x32c289,{'contexts':_0x2dd5d8||[]});fs[_0xb16d('0x5c')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x390c9d);})['then'](function(){return respondWithRpcPromise('Reload',_0xb16d('0x32'),{'module':'chan_sip.so'});})[_0xb16d('0x1c')](function(){return _0x4784fc;})[_0xb16d('0x1c')](respondWithResult(_0x333c7d,null))['catch'](handleError(_0x333c7d,null));};exports[_0xb16d('0x33')]=function(_0x2fb7f9,_0x29e6a4,_0x5ecfbf){var _0x4c72b5;return db['VoiceContext'][_0xb16d('0x55')]({'where':{'id':_0x2fb7f9[_0xb16d('0x65')]['id']}})[_0xb16d('0x1c')](handleEntityNotFound(_0x29e6a4,null))[_0xb16d('0x1c')](removeEntity(_0x29e6a4,null))[_0xb16d('0x1c')](function(){return db[_0xb16d('0x3d')]['findAll']({'raw':!![]});})[_0xb16d('0x1c')](function(_0x1f77c4){var _0x3a52d0=fs[_0xb16d('0x57')](path[_0xb16d('0x58')](config[_0xb16d('0x66')],'server/files/templates/context.ejs'),_0xb16d('0x5a'));var _0x20e6ee=ejs[_0xb16d('0x5b')](_0x3a52d0,{'contexts':_0x1f77c4});fs[_0xb16d('0x5c')](_0xb16d('0x5d'),_0x20e6ee);return respondWithRpcPromise(_0xb16d('0x5e'),'destroy',{'module':'chan_sip.so'});})['catch'](handleError(_0x29e6a4,null));};
\ No newline at end of file
index e05f4a8..bf4c42d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5001=['./voiceContext.attributes','exports','define','voice_contexts','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x3a61f9,_0x34f6d8){var _0x4e9c1b=function(_0x56c6fb){while(--_0x56c6fb){_0x3a61f9['push'](_0x3a61f9['shift']());}};_0x4e9c1b(++_0x34f6d8);}(_0x5001,0xd0));var _0x1500=function(_0x1117f6,_0x4786c8){_0x1117f6=_0x1117f6-0x0;var _0x5d74c7=_0x5001[_0x1117f6];return _0x5d74c7;};'use strict';var _=require('lodash');var util=require(_0x1500('0x0'));var logger=require(_0x1500('0x1'))(_0x1500('0x2'));var moment=require(_0x1500('0x3'));var BPromise=require(_0x1500('0x4'));var rp=require(_0x1500('0x5'));var fs=require('fs');var path=require(_0x1500('0x6'));var rimraf=require(_0x1500('0x7'));var config=require('../../config/environment');var attributes=require(_0x1500('0x8'));module[_0x1500('0x9')]=function(_0x209467,_0x4dd00f){return _0x209467[_0x1500('0xa')]('VoiceContext',attributes,{'tableName':_0x1500('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3fc4=['path','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext','voice_contexts','lodash','../../config/logger','moment','bluebird'];(function(_0x34c063,_0x11d3d7){var _0x2c63a3=function(_0x5983d0){while(--_0x5983d0){_0x34c063['push'](_0x34c063['shift']());}};_0x2c63a3(++_0x11d3d7);}(_0x3fc4,0x6a));var _0x43fc=function(_0x126246,_0x318547){_0x126246=_0x126246-0x0;var _0x470a53=_0x3fc4[_0x126246];return _0x470a53;};'use strict';var _=require(_0x43fc('0x0'));var util=require('util');var logger=require(_0x43fc('0x1'))('api');var moment=require(_0x43fc('0x2'));var BPromise=require(_0x43fc('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x43fc('0x4'));var rimraf=require('rimraf');var config=require(_0x43fc('0x5'));var attributes=require(_0x43fc('0x6'));module[_0x43fc('0x7')]=function(_0x1cae77,_0x1a7ced){return _0x1cae77[_0x43fc('0x8')](_0x43fc('0x9'),attributes,{'tableName':_0x43fc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 24463dd..990696d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a16=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch'];(function(_0x2e137e,_0x3ec457){var _0x2d92ac=function(_0x59afcf){while(--_0x59afcf){_0x2e137e['push'](_0x2e137e['shift']());}};_0x2d92ac(++_0x3ec457);}(_0x0a16,0x160));var _0x60a1=function(_0x3a2fe5,_0x4f3adf){_0x3a2fe5=_0x3a2fe5-0x0;var _0x5aacd1=_0x0a16[_0x3a2fe5];return _0x5aacd1;};'use strict';var _=require(_0x60a1('0x0'));var util=require(_0x60a1('0x1'));var moment=require(_0x60a1('0x2'));var BPromise=require(_0x60a1('0x3'));var rs=require(_0x60a1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x60a1('0x5'))['db'];var utils=require(_0x60a1('0x6'));var logger=require(_0x60a1('0x7'))('rpc');var config=require(_0x60a1('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x60a1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4cbccb,_0x4ad729,_0x558006){return new BPromise(function(_0x461b5e,_0x300eb7){return client[_0x60a1('0xa')](_0x4cbccb,_0x558006)[_0x60a1('0xb')](function(_0x5b5d94){logger[_0x60a1('0xc')](_0x60a1('0xd'),_0x4ad729,_0x60a1('0xe'));logger[_0x60a1('0xf')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x4ad729,_0x60a1('0xe'),JSON[_0x60a1('0x10')](_0x5b5d94));if(_0x5b5d94[_0x60a1('0x11')]){if(_0x5b5d94[_0x60a1('0x11')][_0x60a1('0x12')]===0x1f4){logger[_0x60a1('0x11')](_0x60a1('0xd'),_0x4ad729,_0x5b5d94[_0x60a1('0x11')][_0x60a1('0x13')]);return _0x300eb7(_0x5b5d94[_0x60a1('0x11')][_0x60a1('0x13')]);}logger['error'](_0x60a1('0xd'),_0x4ad729,_0x5b5d94[_0x60a1('0x11')][_0x60a1('0x13')]);return _0x461b5e(_0x5b5d94['error'][_0x60a1('0x13')]);}else{logger['info'](_0x60a1('0xd'),_0x4ad729,_0x60a1('0xe'));_0x461b5e(_0x5b5d94[_0x60a1('0x14')][_0x60a1('0x13')]);}})[_0x60a1('0x15')](function(_0x2179f8){logger[_0x60a1('0x11')](_0x60a1('0xd'),_0x4ad729,_0x2179f8);_0x300eb7(_0x2179f8);});});}
\ No newline at end of file
+var _0x0d98=['request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','VoiceContext,\x20%s,\x20%s'];(function(_0x5d5c5c,_0x1d1d9b){var _0x65b7fd=function(_0x1296ce){while(--_0x1296ce){_0x5d5c5c['push'](_0x5d5c5c['shift']());}};_0x65b7fd(++_0x1d1d9b);}(_0x0d98,0x149));var _0x80d9=function(_0x255a1d,_0x3e631e){_0x255a1d=_0x255a1d-0x0;var _0x11a8ba=_0x0d98[_0x255a1d];return _0x11a8ba;};'use strict';var _=require(_0x80d9('0x0'));var util=require(_0x80d9('0x1'));var moment=require(_0x80d9('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x80d9('0x3'))['db'];var utils=require(_0x80d9('0x4'));var logger=require(_0x80d9('0x5'))(_0x80d9('0x6'));var config=require('../../config/environment');var jayson=require(_0x80d9('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5e5f6b,_0x45f2f1,_0xb8d05){return new BPromise(function(_0x5cc7b7,_0x4f3fe9){return client[_0x80d9('0x8')](_0x5e5f6b,_0xb8d05)[_0x80d9('0x9')](function(_0x4e874d){logger['info'](_0x80d9('0xa'),_0x45f2f1,_0x80d9('0xb'));logger['debug'](_0x80d9('0xc'),_0x45f2f1,_0x80d9('0xb'),JSON[_0x80d9('0xd')](_0x4e874d));if(_0x4e874d[_0x80d9('0xe')]){if(_0x4e874d[_0x80d9('0xe')][_0x80d9('0xf')]===0x1f4){logger['error'](_0x80d9('0xa'),_0x45f2f1,_0x4e874d[_0x80d9('0xe')]['message']);return _0x4f3fe9(_0x4e874d[_0x80d9('0xe')][_0x80d9('0x10')]);}logger[_0x80d9('0xe')]('VoiceContext,\x20%s,\x20%s',_0x45f2f1,_0x4e874d[_0x80d9('0xe')]['message']);return _0x5cc7b7(_0x4e874d[_0x80d9('0xe')][_0x80d9('0x10')]);}else{logger[_0x80d9('0x11')](_0x80d9('0xa'),_0x45f2f1,'request\x20sent');_0x5cc7b7(_0x4e874d[_0x80d9('0x12')][_0x80d9('0x10')]);}})[_0x80d9('0x13')](function(_0xa8c7e9){logger[_0x80d9('0xe')](_0x80d9('0xa'),_0x45f2f1,_0xa8c7e9);_0x4f3fe9(_0xa8c7e9);});});}
\ No newline at end of file
index 7f8a6c1..dcaca1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc524=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe','show','create','put','/:id','update','delete','exports','path','connect-timeout','express'];(function(_0x513c5e,_0x5dc757){var _0x30f7ec=function(_0xcc93bf){while(--_0xcc93bf){_0x513c5e['push'](_0x513c5e['shift']());}};_0x30f7ec(++_0x5dc757);}(_0xc524,0x1bf));var _0x4c52=function(_0x240263,_0x2afac9){_0x240263=_0x240263-0x0;var _0x2b3ece=_0xc524[_0x240263];return _0x2b3ece;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4c52('0x0'));var timeout=require(_0x4c52('0x1'));var express=require(_0x4c52('0x2'));var router=express[_0x4c52('0x3')]();var fs_extra=require(_0x4c52('0x4'));var auth=require(_0x4c52('0x5'));var interaction=require(_0x4c52('0x6'));var config=require('../../config/environment');var controller=require('./voiceDialReport.controller');router[_0x4c52('0x7')]('/',auth[_0x4c52('0x8')](),controller[_0x4c52('0x9')]);router[_0x4c52('0x7')]('/describe',auth['isAuthenticated'](),controller[_0x4c52('0xa')]);router[_0x4c52('0x7')]('/:id',auth[_0x4c52('0x8')](),controller[_0x4c52('0xb')]);router['post']('/',auth[_0x4c52('0x8')](),controller[_0x4c52('0xc')]);router[_0x4c52('0xd')](_0x4c52('0xe'),auth[_0x4c52('0x8')](),controller[_0x4c52('0xf')]);router[_0x4c52('0x10')](_0x4c52('0xe'),auth[_0x4c52('0x8')](),controller['destroy']);module[_0x4c52('0x11')]=router;
\ No newline at end of file
+var _0xf149=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','index','get','/describe','isAuthenticated','describe','post','create','/:id','update','delete','exports','multer','util','path','express','Router','fs-extra'];(function(_0xf09616,_0x2d880f){var _0x169dd4=function(_0x54ef82){while(--_0x54ef82){_0xf09616['push'](_0xf09616['shift']());}};_0x169dd4(++_0x2d880f);}(_0xf149,0xe1));var _0x9f14=function(_0x2635ac,_0x5c6108){_0x2635ac=_0x2635ac-0x0;var _0x693d1e=_0xf149[_0x2635ac];return _0x693d1e;};'use strict';var multer=require(_0x9f14('0x0'));var util=require(_0x9f14('0x1'));var path=require(_0x9f14('0x2'));var timeout=require('connect-timeout');var express=require(_0x9f14('0x3'));var router=express[_0x9f14('0x4')]();var fs_extra=require(_0x9f14('0x5'));var auth=require(_0x9f14('0x6'));var interaction=require(_0x9f14('0x7'));var config=require(_0x9f14('0x8'));var controller=require(_0x9f14('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x9f14('0xa')]);router[_0x9f14('0xb')](_0x9f14('0xc'),auth[_0x9f14('0xd')](),controller[_0x9f14('0xe')]);router[_0x9f14('0xb')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x9f14('0xf')]('/',auth[_0x9f14('0xd')](),controller[_0x9f14('0x10')]);router['put'](_0x9f14('0x11'),auth[_0x9f14('0xd')](),controller[_0x9f14('0x12')]);router[_0x9f14('0x13')](_0x9f14('0x11'),auth[_0x9f14('0xd')](),controller['destroy']);module[_0x9f14('0x14')]=router;
\ No newline at end of file
index 859e198..b16f217 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['DATE','called,connect,complete','exports','STRING','INTEGER'];(function(_0x185025,_0x38cee9){var _0x11ba75=function(_0x5bd6a5){while(--_0x5bd6a5){_0x185025['push'](_0x185025['shift']());}};_0x11ba75(++_0x38cee9);}(_0xedd9,0xfc));var _0x9edd=function(_0x5f5cfa,_0x50a7d5){_0x5f5cfa=_0x5f5cfa-0x0;var _0x5a4a04=_0xedd9[_0x5f5cfa];return _0x5a4a04;};'use strict';var Sequelize=require('sequelize');module[_0x9edd('0x0')]={'privilege':{'type':Sequelize[_0x9edd('0x1')]},'channel':{'type':Sequelize[_0x9edd('0x1')]},'channelstate':{'type':Sequelize[_0x9edd('0x2')]},'channelstatedesc':{'type':Sequelize[_0x9edd('0x1')]},'calleridnum':{'type':Sequelize[_0x9edd('0x1')]},'calleridname':{'type':Sequelize[_0x9edd('0x1')]},'connectedlinenum':{'type':Sequelize[_0x9edd('0x1')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x9edd('0x1')]},'accountcode':{'type':Sequelize[_0x9edd('0x1')]},'context':{'type':Sequelize[_0x9edd('0x1')]},'exten':{'type':Sequelize[_0x9edd('0x1')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x9edd('0x1')]},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x9edd('0x1')]},'destchannelstate':{'type':Sequelize[_0x9edd('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x9edd('0x1')]},'destcalleridnum':{'type':Sequelize[_0x9edd('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x9edd('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x9edd('0x1')]},'destaccountcode':{'type':Sequelize[_0x9edd('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x9edd('0x1')]},'destpriority':{'type':Sequelize[_0x9edd('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize[_0x9edd('0x1')]},'dialstring':{'type':Sequelize[_0x9edd('0x1')]},'dialstatus':{'type':Sequelize[_0x9edd('0x1')]},'starttime':{'type':Sequelize[_0x9edd('0x3')]},'answertime':{'type':Sequelize[_0x9edd('0x3')]},'endtime':{'type':Sequelize[_0x9edd('0x3')]},'lastevent':{'type':Sequelize[_0x9edd('0x1')],'comment':_0x9edd('0x4')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize[_0x9edd('0x2')]},'holdtime':{'type':Sequelize[_0x9edd('0x2')]},'billableseconds':{'type':Sequelize[_0x9edd('0x2')]}};
\ No newline at end of file
+var _0x00bb=['STRING','INTEGER','DATE','called,connect,complete','sequelize','exports'];(function(_0x3d679f,_0x2b01d1){var _0xcbac15=function(_0x48bedf){while(--_0x48bedf){_0x3d679f['push'](_0x3d679f['shift']());}};_0xcbac15(++_0x2b01d1);}(_0x00bb,0x1d8));var _0xb00b=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x00bb[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0xb00b('0x0'));module[_0xb00b('0x1')]={'privilege':{'type':Sequelize[_0xb00b('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xb00b('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xb00b('0x2')]},'calleridname':{'type':Sequelize[_0xb00b('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xb00b('0x2')]},'language':{'type':Sequelize[_0xb00b('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xb00b('0x3')]},'uniqueid':{'type':Sequelize[_0xb00b('0x2')]},'linkedid':{'type':Sequelize[_0xb00b('0x2')]},'destchannel':{'type':Sequelize[_0xb00b('0x2')]},'destchannelstate':{'type':Sequelize[_0xb00b('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xb00b('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xb00b('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xb00b('0x2')]},'destlanguage':{'type':Sequelize[_0xb00b('0x2')]},'destaccountcode':{'type':Sequelize[_0xb00b('0x2')]},'destcontext':{'type':Sequelize[_0xb00b('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xb00b('0x3')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0xb00b('0x2')]},'starttime':{'type':Sequelize[_0xb00b('0x4')]},'answertime':{'type':Sequelize[_0xb00b('0x4')]},'endtime':{'type':Sequelize[_0xb00b('0x4')]},'lastevent':{'type':Sequelize[_0xb00b('0x2')],'comment':_0xb00b('0x5')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize[_0xb00b('0x3')]},'holdtime':{'type':Sequelize[_0xb00b('0x3')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index f51970e..9f9a4ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2874=['key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rawAttributes','include','find','catch','create','body','params','describe','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','save','update','then','destroy','error','stack','name','send','index','map','VoiceDialReport','fieldName'];(function(_0x5abc6e,_0x195a42){var _0x1a7992=function(_0xf0c6ae){while(--_0xf0c6ae){_0x5abc6e['push'](_0x5abc6e['shift']());}};_0x1a7992(++_0x195a42);}(_0x2874,0x142));var _0x4287=function(_0x233d57,_0x284678){_0x233d57=_0x233d57-0x0;var _0x3eec8c=_0x2874[_0x233d57];return _0x3eec8c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4287('0x0'));var zipdir=require(_0x4287('0x1'));var jsonpatch=require(_0x4287('0x2'));var rp=require('request-promise');var moment=require(_0x4287('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4287('0x4'));var util=require(_0x4287('0x5'));var path=require(_0x4287('0x6'));var sox=require(_0x4287('0x7'));var csv=require('to-csv');var ejs=require(_0x4287('0x8'));var fs=require('fs');var fs_extra=require(_0x4287('0x9'));var _=require(_0x4287('0xa'));var squel=require(_0x4287('0xb'));var crypto=require(_0x4287('0xc'));var jsforce=require(_0x4287('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4287('0xe'));var Papa=require(_0x4287('0xf'));var Redis=require(_0x4287('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4287('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4287('0x12'))(_0x4287('0x13'));var utils=require(_0x4287('0x14'));var config=require(_0x4287('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x4287('0x16'))['db'];function respondWithStatusCode(_0x2094c0,_0x440687){_0x440687=_0x440687||0xcc;return function(_0x5d5b7c){if(_0x5d5b7c){return _0x2094c0[_0x4287('0x17')](_0x440687);}return _0x2094c0[_0x4287('0x18')](_0x440687)[_0x4287('0x19')]();};}function respondWithResult(_0x5f5b56,_0x2a6024){_0x2a6024=_0x2a6024||0xc8;return function(_0x5ea149){if(_0x5ea149){return _0x5f5b56[_0x4287('0x18')](_0x2a6024)['json'](_0x5ea149);}};}function respondWithFilteredResult(_0x144d81,_0x3ed8c8){return function(_0xbe2337){if(_0xbe2337){var _0x16d2cd=typeof _0x3ed8c8[_0x4287('0x1a')]===_0x4287('0x1b')&&typeof _0x3ed8c8[_0x4287('0x1c')]===_0x4287('0x1b');var _0x33e556=_0xbe2337[_0x4287('0x1d')];var _0x1e51bf=_0x16d2cd?0x0:_0x3ed8c8[_0x4287('0x1a')];var _0x3dd500=_0x16d2cd?_0xbe2337['count']:_0x3ed8c8['offset']+_0x3ed8c8[_0x4287('0x1c')];var _0x400d52;if(_0x3dd500>=_0x33e556){_0x3dd500=_0x33e556;_0x400d52=0xc8;}else{_0x400d52=0xce;}_0x144d81[_0x4287('0x18')](_0x400d52);return _0x144d81[_0x4287('0x1e')]('Content-Range',_0x1e51bf+'-'+_0x3dd500+'/'+_0x33e556)['json'](_0xbe2337);}return null;};}function patchUpdates(_0x3f99fa){return function(_0x465e47){try{jsonpatch['apply'](_0x465e47,_0x3f99fa,!![]);}catch(_0x57a16e){return BPromise['reject'](_0x57a16e);}return _0x465e47[_0x4287('0x1f')]();};}function saveUpdates(_0x11f585,_0x224655){return function(_0x1d7934){if(_0x1d7934){return _0x1d7934[_0x4287('0x20')](_0x11f585)[_0x4287('0x21')](function(_0x49f9f7){return _0x49f9f7;});}return null;};}function removeEntity(_0xa50c2f,_0x3d2272){return function(_0x2999c2){if(_0x2999c2){return _0x2999c2[_0x4287('0x22')]()[_0x4287('0x21')](function(){_0xa50c2f[_0x4287('0x18')](0xcc)[_0x4287('0x19')]();});}};}function handleEntityNotFound(_0x28e6d6,_0xd09b2b){return function(_0x1c76fd){if(!_0x1c76fd){_0x28e6d6[_0x4287('0x17')](0x194);}return _0x1c76fd;};}function handleError(_0x4c60b7,_0x3342bb){_0x3342bb=_0x3342bb||0x1f4;return function(_0x2f6402){logger[_0x4287('0x23')](_0x2f6402[_0x4287('0x24')]);if(_0x2f6402['name']){delete _0x2f6402[_0x4287('0x25')];}_0x4c60b7[_0x4287('0x18')](_0x3342bb)[_0x4287('0x26')](_0x2f6402);};}exports[_0x4287('0x27')]=function(_0x442837,_0x49d43c){var _0x4b30ee={},_0x551c95={},_0x5df49e={'count':0x0,'rows':[]};var _0x5b58a1=_[_0x4287('0x28')](db[_0x4287('0x29')]['rawAttributes'],function(_0x171d3e){return{'name':_0x171d3e[_0x4287('0x2a')],'type':_0x171d3e['type'][_0x4287('0x2b')]};});_0x551c95['model']=_[_0x4287('0x28')](_0x5b58a1,_0x4287('0x25'));_0x551c95['query']=_[_0x4287('0x2c')](_0x442837[_0x4287('0x2d')]);_0x551c95[_0x4287('0x2e')]=_[_0x4287('0x2f')](_0x551c95[_0x4287('0x30')],_0x551c95['query']);_0x4b30ee[_0x4287('0x31')]=_[_0x4287('0x2f')](_0x551c95[_0x4287('0x30')],qs[_0x4287('0x32')](_0x442837[_0x4287('0x2d')]['fields']));_0x4b30ee[_0x4287('0x31')]=_0x4b30ee[_0x4287('0x31')][_0x4287('0x33')]?_0x4b30ee[_0x4287('0x31')]:_0x551c95['model'];if(!_0x442837['query'][_0x4287('0x34')](_0x4287('0x35'))){_0x4b30ee[_0x4287('0x1c')]=qs['limit'](_0x442837[_0x4287('0x2d')][_0x4287('0x1c')]);_0x4b30ee[_0x4287('0x1a')]=qs['offset'](_0x442837[_0x4287('0x2d')][_0x4287('0x1a')]);}_0x4b30ee[_0x4287('0x36')]=qs['sort'](_0x442837[_0x4287('0x2d')][_0x4287('0x37')]);_0x4b30ee[_0x4287('0x38')]=qs[_0x4287('0x2e')](_[_0x4287('0x39')](_0x442837[_0x4287('0x2d')],_0x551c95['filters']),_0x5b58a1);if(_0x442837[_0x4287('0x2d')][_0x4287('0x3a')]){_0x4b30ee[_0x4287('0x38')]=_[_0x4287('0x3b')](_0x4b30ee['where'],{'$or':_[_0x4287('0x28')](_0x5b58a1,function(_0x551703){if(_0x551703[_0x4287('0x3c')]!==_0x4287('0x3d')){var _0xd89476={};_0xd89476[_0x551703[_0x4287('0x25')]]={'$like':'%'+_0x442837['query'][_0x4287('0x3a')]+'%'};return _0xd89476;}})});}_0x4b30ee=_[_0x4287('0x3b')]({},_0x4b30ee,_0x442837[_0x4287('0x3e')]);var _0x214c38={'where':_0x4b30ee['where']};return db[_0x4287('0x29')][_0x4287('0x1d')](_0x214c38)[_0x4287('0x21')](function(_0x130e1e){_0x5df49e['count']=_0x130e1e;if(_0x442837[_0x4287('0x2d')][_0x4287('0x3f')]){_0x4b30ee['include']=[{'all':!![]}];}return db[_0x4287('0x29')][_0x4287('0x40')](_0x4b30ee);})['then'](function(_0x2e5a0e){_0x5df49e['rows']=_0x2e5a0e;return _0x5df49e;})[_0x4287('0x21')](respondWithFilteredResult(_0x49d43c,_0x4b30ee))['catch'](handleError(_0x49d43c,null));};exports['show']=function(_0x4f4ba7,_0x2d25c8){var _0x1044ea={'raw':!![],'where':{'id':_0x4f4ba7['params']['id']}},_0x4db7b2={};_0x4db7b2[_0x4287('0x30')]=_['keys'](db['VoiceDialReport'][_0x4287('0x41')]);_0x4db7b2[_0x4287('0x2d')]=_[_0x4287('0x2c')](_0x4f4ba7[_0x4287('0x2d')]);_0x4db7b2[_0x4287('0x2e')]=_[_0x4287('0x2f')](_0x4db7b2[_0x4287('0x30')],_0x4db7b2['query']);_0x1044ea[_0x4287('0x31')]=_[_0x4287('0x2f')](_0x4db7b2[_0x4287('0x30')],qs['fields'](_0x4f4ba7['query']['fields']));_0x1044ea[_0x4287('0x31')]=_0x1044ea[_0x4287('0x31')][_0x4287('0x33')]?_0x1044ea[_0x4287('0x31')]:_0x4db7b2[_0x4287('0x30')];if(_0x4f4ba7[_0x4287('0x2d')]['includeAll']){_0x1044ea[_0x4287('0x42')]=[{'all':!![]}];}_0x1044ea=_[_0x4287('0x3b')]({},_0x1044ea,_0x4f4ba7['options']);return db['VoiceDialReport'][_0x4287('0x43')](_0x1044ea)[_0x4287('0x21')](handleEntityNotFound(_0x2d25c8,null))[_0x4287('0x21')](respondWithResult(_0x2d25c8,null))[_0x4287('0x44')](handleError(_0x2d25c8,null));};exports[_0x4287('0x45')]=function(_0x329884,_0x1ca07a){return db[_0x4287('0x29')][_0x4287('0x45')](_0x329884[_0x4287('0x46')],{})[_0x4287('0x21')](respondWithResult(_0x1ca07a,0xc9))[_0x4287('0x44')](handleError(_0x1ca07a,null));};exports[_0x4287('0x20')]=function(_0x4af9a7,_0x20aa7d){if(_0x4af9a7['body']['id']){delete _0x4af9a7[_0x4287('0x46')]['id'];}return db[_0x4287('0x29')][_0x4287('0x43')]({'where':{'id':_0x4af9a7[_0x4287('0x47')]['id']}})['then'](handleEntityNotFound(_0x20aa7d,null))[_0x4287('0x21')](saveUpdates(_0x4af9a7[_0x4287('0x46')],null))[_0x4287('0x21')](respondWithResult(_0x20aa7d,null))['catch'](handleError(_0x20aa7d,null));};exports[_0x4287('0x22')]=function(_0x49bfe7,_0x5e25bd){return db[_0x4287('0x29')][_0x4287('0x43')]({'where':{'id':_0x49bfe7['params']['id']}})[_0x4287('0x21')](handleEntityNotFound(_0x5e25bd,null))[_0x4287('0x21')](removeEntity(_0x5e25bd,null))[_0x4287('0x44')](handleError(_0x5e25bd,null));};exports[_0x4287('0x48')]=function(_0x359f21,_0x4535f8){return db[_0x4287('0x29')][_0x4287('0x48')]()['then'](respondWithResult(_0x4535f8,null))[_0x4287('0x44')](handleError(_0x4535f8,null));};
\ No newline at end of file
+var _0x6297=['VoiceDialReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','order','sort','where','pick','filter','VIRTUAL','merge','options','findAll','rows','catch','show','params','fields','include','create','body','update','find','describe','rimraf','zip-dir','fast-json-patch','moment','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','reject','save','then','destroy','error','stack','name','send','index'];(function(_0xafa225,_0xd29c03){var _0x4f546a=function(_0x565b3f){while(--_0x565b3f){_0xafa225['push'](_0xafa225['shift']());}};_0x4f546a(++_0xd29c03);}(_0x6297,0xaa));var _0x7629=function(_0x42b282,_0x12255e){_0x42b282=_0x42b282-0x0;var _0x533e70=_0x6297[_0x42b282];return _0x533e70;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7629('0x0'));var zipdir=require(_0x7629('0x1'));var jsonpatch=require(_0x7629('0x2'));var rp=require('request-promise');var moment=require(_0x7629('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x7629('0x4'));var sox=require(_0x7629('0x5'));var csv=require(_0x7629('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7629('0x7'));var _=require(_0x7629('0x8'));var squel=require(_0x7629('0x9'));var crypto=require('crypto');var jsforce=require(_0x7629('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x7629('0x6'));var querystring=require(_0x7629('0xb'));var Papa=require(_0x7629('0xc'));var Redis=require(_0x7629('0xd'));var authService=require(_0x7629('0xe'));var qs=require(_0x7629('0xf'));var as=require(_0x7629('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7629('0x11'))('api');var utils=require(_0x7629('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7629('0x13'))['db'];function respondWithStatusCode(_0x3cdb94,_0x38a9de){_0x38a9de=_0x38a9de||0xcc;return function(_0xcedbba){if(_0xcedbba){return _0x3cdb94[_0x7629('0x14')](_0x38a9de);}return _0x3cdb94['status'](_0x38a9de)[_0x7629('0x15')]();};}function respondWithResult(_0x3a5bcf,_0x18e943){_0x18e943=_0x18e943||0xc8;return function(_0x592a08){if(_0x592a08){return _0x3a5bcf[_0x7629('0x16')](_0x18e943)[_0x7629('0x17')](_0x592a08);}};}function respondWithFilteredResult(_0x3d998c,_0x51d974){return function(_0x3512b6){if(_0x3512b6){var _0x1b7846=typeof _0x51d974[_0x7629('0x18')]==='undefined'&&typeof _0x51d974[_0x7629('0x19')]===_0x7629('0x1a');var _0x41989b=_0x3512b6[_0x7629('0x1b')];var _0x5621e9=_0x1b7846?0x0:_0x51d974[_0x7629('0x18')];var _0x19c146=_0x1b7846?_0x3512b6[_0x7629('0x1b')]:_0x51d974['offset']+_0x51d974[_0x7629('0x19')];var _0x35a1c3;if(_0x19c146>=_0x41989b){_0x19c146=_0x41989b;_0x35a1c3=0xc8;}else{_0x35a1c3=0xce;}_0x3d998c[_0x7629('0x16')](_0x35a1c3);return _0x3d998c['set']('Content-Range',_0x5621e9+'-'+_0x19c146+'/'+_0x41989b)['json'](_0x3512b6);}return null;};}function patchUpdates(_0x361eb0){return function(_0x34aef3){try{jsonpatch['apply'](_0x34aef3,_0x361eb0,!![]);}catch(_0x4b78b5){return BPromise[_0x7629('0x1c')](_0x4b78b5);}return _0x34aef3[_0x7629('0x1d')]();};}function saveUpdates(_0x403615,_0x59a549){return function(_0x35b90a){if(_0x35b90a){return _0x35b90a['update'](_0x403615)[_0x7629('0x1e')](function(_0x25b737){return _0x25b737;});}return null;};}function removeEntity(_0x4bd296,_0x1983be){return function(_0x326f50){if(_0x326f50){return _0x326f50[_0x7629('0x1f')]()[_0x7629('0x1e')](function(){_0x4bd296[_0x7629('0x16')](0xcc)[_0x7629('0x15')]();});}};}function handleEntityNotFound(_0x397139,_0x318e9b){return function(_0x374d1c){if(!_0x374d1c){_0x397139[_0x7629('0x14')](0x194);}return _0x374d1c;};}function handleError(_0x3f78ba,_0x23c4d0){_0x23c4d0=_0x23c4d0||0x1f4;return function(_0x50db09){logger[_0x7629('0x20')](_0x50db09[_0x7629('0x21')]);if(_0x50db09[_0x7629('0x22')]){delete _0x50db09[_0x7629('0x22')];}_0x3f78ba[_0x7629('0x16')](_0x23c4d0)[_0x7629('0x23')](_0x50db09);};}exports[_0x7629('0x24')]=function(_0x2d903f,_0x43612d){var _0x243a66={},_0x3311c7={},_0x15da36={'count':0x0,'rows':[]};var _0x26eb3c=_['map'](db[_0x7629('0x25')][_0x7629('0x26')],function(_0x388b03){return{'name':_0x388b03[_0x7629('0x27')],'type':_0x388b03[_0x7629('0x28')][_0x7629('0x29')]};});_0x3311c7[_0x7629('0x2a')]=_['map'](_0x26eb3c,_0x7629('0x22'));_0x3311c7[_0x7629('0x2b')]=_[_0x7629('0x2c')](_0x2d903f[_0x7629('0x2b')]);_0x3311c7[_0x7629('0x2d')]=_[_0x7629('0x2e')](_0x3311c7[_0x7629('0x2a')],_0x3311c7[_0x7629('0x2b')]);_0x243a66[_0x7629('0x2f')]=_[_0x7629('0x2e')](_0x3311c7[_0x7629('0x2a')],qs['fields'](_0x2d903f['query']['fields']));_0x243a66['attributes']=_0x243a66[_0x7629('0x2f')][_0x7629('0x30')]?_0x243a66['attributes']:_0x3311c7[_0x7629('0x2a')];if(!_0x2d903f['query']['hasOwnProperty']('nolimit')){_0x243a66[_0x7629('0x19')]=qs['limit'](_0x2d903f[_0x7629('0x2b')][_0x7629('0x19')]);_0x243a66[_0x7629('0x18')]=qs['offset'](_0x2d903f[_0x7629('0x2b')][_0x7629('0x18')]);}_0x243a66[_0x7629('0x31')]=qs[_0x7629('0x32')](_0x2d903f[_0x7629('0x2b')][_0x7629('0x32')]);_0x243a66[_0x7629('0x33')]=qs[_0x7629('0x2d')](_[_0x7629('0x34')](_0x2d903f['query'],_0x3311c7[_0x7629('0x2d')]),_0x26eb3c);if(_0x2d903f[_0x7629('0x2b')][_0x7629('0x35')]){_0x243a66[_0x7629('0x33')]=_['merge'](_0x243a66[_0x7629('0x33')],{'$or':_['map'](_0x26eb3c,function(_0x1c57c9){if(_0x1c57c9[_0x7629('0x28')]!==_0x7629('0x36')){var _0x87d64e={};_0x87d64e[_0x1c57c9[_0x7629('0x22')]]={'$like':'%'+_0x2d903f[_0x7629('0x2b')][_0x7629('0x35')]+'%'};return _0x87d64e;}})});}_0x243a66=_[_0x7629('0x37')]({},_0x243a66,_0x2d903f[_0x7629('0x38')]);var _0x275023={'where':_0x243a66[_0x7629('0x33')]};return db[_0x7629('0x25')][_0x7629('0x1b')](_0x275023)['then'](function(_0x21621f){_0x15da36['count']=_0x21621f;if(_0x2d903f['query']['includeAll']){_0x243a66['include']=[{'all':!![]}];}return db[_0x7629('0x25')][_0x7629('0x39')](_0x243a66);})[_0x7629('0x1e')](function(_0x2a448f){_0x15da36[_0x7629('0x3a')]=_0x2a448f;return _0x15da36;})[_0x7629('0x1e')](respondWithFilteredResult(_0x43612d,_0x243a66))[_0x7629('0x3b')](handleError(_0x43612d,null));};exports[_0x7629('0x3c')]=function(_0x1019ed,_0x11d1f9){var _0x477766={'raw':!![],'where':{'id':_0x1019ed[_0x7629('0x3d')]['id']}},_0x1be707={};_0x1be707[_0x7629('0x2a')]=_[_0x7629('0x2c')](db[_0x7629('0x25')][_0x7629('0x26')]);_0x1be707[_0x7629('0x2b')]=_[_0x7629('0x2c')](_0x1019ed[_0x7629('0x2b')]);_0x1be707['filters']=_[_0x7629('0x2e')](_0x1be707[_0x7629('0x2a')],_0x1be707[_0x7629('0x2b')]);_0x477766[_0x7629('0x2f')]=_[_0x7629('0x2e')](_0x1be707['model'],qs['fields'](_0x1019ed['query'][_0x7629('0x3e')]));_0x477766[_0x7629('0x2f')]=_0x477766[_0x7629('0x2f')][_0x7629('0x30')]?_0x477766[_0x7629('0x2f')]:_0x1be707['model'];if(_0x1019ed[_0x7629('0x2b')]['includeAll']){_0x477766[_0x7629('0x3f')]=[{'all':!![]}];}_0x477766=_[_0x7629('0x37')]({},_0x477766,_0x1019ed['options']);return db['VoiceDialReport']['find'](_0x477766)[_0x7629('0x1e')](handleEntityNotFound(_0x11d1f9,null))[_0x7629('0x1e')](respondWithResult(_0x11d1f9,null))['catch'](handleError(_0x11d1f9,null));};exports['create']=function(_0x434e66,_0x54aae7){return db[_0x7629('0x25')][_0x7629('0x40')](_0x434e66[_0x7629('0x41')],{})['then'](respondWithResult(_0x54aae7,0xc9))[_0x7629('0x3b')](handleError(_0x54aae7,null));};exports[_0x7629('0x42')]=function(_0x143651,_0x217088){if(_0x143651[_0x7629('0x41')]['id']){delete _0x143651['body']['id'];}return db[_0x7629('0x25')][_0x7629('0x43')]({'where':{'id':_0x143651[_0x7629('0x3d')]['id']}})['then'](handleEntityNotFound(_0x217088,null))[_0x7629('0x1e')](saveUpdates(_0x143651['body'],null))[_0x7629('0x1e')](respondWithResult(_0x217088,null))[_0x7629('0x3b')](handleError(_0x217088,null));};exports[_0x7629('0x1f')]=function(_0x239661,_0x567fd8){return db['VoiceDialReport'][_0x7629('0x43')]({'where':{'id':_0x239661[_0x7629('0x3d')]['id']}})[_0x7629('0x1e')](handleEntityNotFound(_0x567fd8,null))[_0x7629('0x1e')](removeEntity(_0x567fd8,null))[_0x7629('0x3b')](handleError(_0x567fd8,null));};exports[_0x7629('0x44')]=function(_0x31fd08,_0x46ffbf){return db[_0x7629('0x25')][_0x7629('0x44')]()[_0x7629('0x1e')](respondWithResult(_0x46ffbf,null))[_0x7629('0x3b')](handleError(_0x46ffbf,null));};
\ No newline at end of file
index f710fee..6c26f56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3728=['path','rimraf','../../config/environment','./voiceDialReport.attributes','exports','define','report_dial','uniqueid','lodash','moment','bluebird','request-promise'];(function(_0x1ebc48,_0x4e3abd){var _0xb53b51=function(_0x4eb7e3){while(--_0x4eb7e3){_0x1ebc48['push'](_0x1ebc48['shift']());}};_0xb53b51(++_0x4e3abd);}(_0x3728,0x17c));var _0x8372=function(_0x541246,_0x2e0aa3){_0x541246=_0x541246-0x0;var _0x3acfcf=_0x3728[_0x541246];return _0x3acfcf;};'use strict';var _=require(_0x8372('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x8372('0x1'));var BPromise=require(_0x8372('0x2'));var rp=require(_0x8372('0x3'));var fs=require('fs');var path=require(_0x8372('0x4'));var rimraf=require(_0x8372('0x5'));var config=require(_0x8372('0x6'));var attributes=require(_0x8372('0x7'));module[_0x8372('0x8')]=function(_0xb20a83,_0xfdbf48){return _0xb20a83[_0x8372('0x9')]('VoiceDialReport',attributes,{'tableName':_0x8372('0xa'),'paranoid':![],'indexes':[{'fields':[_0x8372('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcbcc=['moment','request-promise','path','rimraf','../../config/environment','define','VoiceDialReport','report_dial','lodash','api'];(function(_0x51c819,_0xd812db){var _0x15c5d2=function(_0x2977f0){while(--_0x2977f0){_0x51c819['push'](_0x51c819['shift']());}};_0x15c5d2(++_0xd812db);}(_0xcbcc,0x198));var _0xccbc=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0xcbcc[_0x40220a];return _0x3903cc;};'use strict';var _=require(_0xccbc('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xccbc('0x1'));var moment=require(_0xccbc('0x2'));var BPromise=require('bluebird');var rp=require(_0xccbc('0x3'));var fs=require('fs');var path=require(_0xccbc('0x4'));var rimraf=require(_0xccbc('0x5'));var config=require(_0xccbc('0x6'));var attributes=require('./voiceDialReport.attributes');module['exports']=function(_0x49a063,_0x3fad97){return _0x49a063[_0xccbc('0x7')](_0xccbc('0x8'),attributes,{'tableName':_0xccbc('0x9'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index ef1c948..1317b53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8abb=['then','info','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','VoiceDialReport,\x20%s,\x20%s','message','request\x20sent','result','catch','CreateVoiceDialReport','VoiceDialReport','raw','update','options','where','attributes','limit','UpdateVoiceDialReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x8abb,0xb4));var _0xb8ab=function(_0x4aaf8a,_0x21d9ab){_0x4aaf8a=_0x4aaf8a-0x0;var _0x25410f=_0x8abb[_0x4aaf8a];return _0x25410f;};'use strict';var _=require(_0xb8ab('0x0'));var util=require(_0xb8ab('0x1'));var moment=require(_0xb8ab('0x2'));var BPromise=require(_0xb8ab('0x3'));var rs=require(_0xb8ab('0x4'));var fs=require('fs');var Redis=require(_0xb8ab('0x5'));var db=require(_0xb8ab('0x6'))['db'];var utils=require(_0xb8ab('0x7'));var logger=require(_0xb8ab('0x8'))(_0xb8ab('0x9'));var config=require('../../config/environment');var jayson=require(_0xb8ab('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x36b1b3,_0x30e94a,_0x25f0e2){return new BPromise(function(_0x3fa847,_0x58b130){return client[_0xb8ab('0xb')](_0x36b1b3,_0x25f0e2)[_0xb8ab('0xc')](function(_0x4d895f){logger[_0xb8ab('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x30e94a,'request\x20sent');logger[_0xb8ab('0xe')](_0xb8ab('0xf'),_0x30e94a,'request\x20sent',JSON[_0xb8ab('0x10')](_0x4d895f));if(_0x4d895f['error']){if(_0x4d895f[_0xb8ab('0x11')]['code']===0x1f4){logger['error'](_0xb8ab('0x12'),_0x30e94a,_0x4d895f[_0xb8ab('0x11')][_0xb8ab('0x13')]);return _0x58b130(_0x4d895f[_0xb8ab('0x11')][_0xb8ab('0x13')]);}logger[_0xb8ab('0x11')](_0xb8ab('0x12'),_0x30e94a,_0x4d895f['error'][_0xb8ab('0x13')]);return _0x3fa847(_0x4d895f['error'][_0xb8ab('0x13')]);}else{logger[_0xb8ab('0xd')](_0xb8ab('0x12'),_0x30e94a,_0xb8ab('0x14'));_0x3fa847(_0x4d895f[_0xb8ab('0x15')]['message']);}})[_0xb8ab('0x16')](function(_0x587e46){logger['error'](_0xb8ab('0x12'),_0x30e94a,_0x587e46);_0x58b130(_0x587e46);});});}exports[_0xb8ab('0x17')]=function(_0x528efb){var _0x2e46e9=this;return new Promise(function(_0x2c747,_0x4d47e0){return db[_0xb8ab('0x18')]['create'](_0x528efb['body'],{'raw':_0x528efb['options']?_0x528efb['options'][_0xb8ab('0x19')]===undefined?!![]:![]:!![]})[_0xb8ab('0xc')](function(_0x1af616){logger[_0xb8ab('0xd')](_0xb8ab('0x17'),_0x528efb);logger['debug'](_0xb8ab('0x17'),_0x528efb,JSON[_0xb8ab('0x10')](_0x1af616));_0x2c747(_0x1af616);})[_0xb8ab('0x16')](function(_0x4bd482){logger[_0xb8ab('0x11')](_0xb8ab('0x17'),_0x4bd482[_0xb8ab('0x13')],_0x528efb);_0x4d47e0(_0x2e46e9[_0xb8ab('0x11')](0x1f4,_0x4bd482[_0xb8ab('0x13')]));});});};exports['UpdateVoiceDialReport']=function(_0x30dedf){var _0x894683=this;return new Promise(function(_0x2b92b7,_0x1403fa){return db['VoiceDialReport'][_0xb8ab('0x1a')](_0x30dedf['body'],{'raw':_0x30dedf[_0xb8ab('0x1b')]?_0x30dedf[_0xb8ab('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x30dedf[_0xb8ab('0x1b')]?_0x30dedf[_0xb8ab('0x1b')][_0xb8ab('0x1c')]||null:null,'attributes':_0x30dedf['options']?_0x30dedf[_0xb8ab('0x1b')][_0xb8ab('0x1d')]||null:null,'limit':_0x30dedf[_0xb8ab('0x1b')]?_0x30dedf[_0xb8ab('0x1b')][_0xb8ab('0x1e')]||null:null})[_0xb8ab('0xc')](function(_0x231791){logger[_0xb8ab('0xd')]('UpdateVoiceDialReport',_0x30dedf);logger[_0xb8ab('0xe')](_0xb8ab('0x1f'),_0x30dedf,JSON[_0xb8ab('0x10')](_0x231791));_0x2b92b7(_0x231791);})[_0xb8ab('0x16')](function(_0x35ea04){logger[_0xb8ab('0x11')](_0xb8ab('0x1f'),_0x35ea04[_0xb8ab('0x13')],_0x30dedf);_0x1403fa(_0x894683['error'](0x1f4,_0x35ea04[_0xb8ab('0x13')]));});});};
\ No newline at end of file
+var _0x5c44=['rpc','client','http','request','then','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result','CreateVoiceDialReport','create','body','options','stringify','catch','UpdateVoiceDialReport','VoiceDialReport','update','raw','where','attributes','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x385f81,_0x394333){var _0x390b9e=function(_0x5541b7){while(--_0x5541b7){_0x385f81['push'](_0x385f81['shift']());}};_0x390b9e(++_0x394333);}(_0x5c44,0xcd));var _0x45c4=function(_0x5cad14,_0x587545){_0x5cad14=_0x5cad14-0x0;var _0x4a942f=_0x5c44[_0x5cad14];return _0x4a942f;};'use strict';var _=require('lodash');var util=require(_0x45c4('0x0'));var moment=require(_0x45c4('0x1'));var BPromise=require(_0x45c4('0x2'));var rs=require(_0x45c4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x45c4('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x45c4('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x45c4('0x6')][_0x45c4('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5e6190,_0x222bc5,_0x259715){return new BPromise(function(_0x4ee886,_0x819f30){return client[_0x45c4('0x8')](_0x5e6190,_0x259715)[_0x45c4('0x9')](function(_0x10c592){logger['info'](_0x45c4('0xa'),_0x222bc5,_0x45c4('0xb'));logger[_0x45c4('0xc')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x222bc5,_0x45c4('0xb'),JSON['stringify'](_0x10c592));if(_0x10c592[_0x45c4('0xd')]){if(_0x10c592[_0x45c4('0xd')][_0x45c4('0xe')]===0x1f4){logger[_0x45c4('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x222bc5,_0x10c592['error'][_0x45c4('0xf')]);return _0x819f30(_0x10c592[_0x45c4('0xd')][_0x45c4('0xf')]);}logger[_0x45c4('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x222bc5,_0x10c592[_0x45c4('0xd')]['message']);return _0x4ee886(_0x10c592[_0x45c4('0xd')][_0x45c4('0xf')]);}else{logger[_0x45c4('0x10')](_0x45c4('0xa'),_0x222bc5,'request\x20sent');_0x4ee886(_0x10c592[_0x45c4('0x11')]['message']);}})['catch'](function(_0x34c3a8){logger[_0x45c4('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x222bc5,_0x34c3a8);_0x819f30(_0x34c3a8);});});}exports[_0x45c4('0x12')]=function(_0x3aedb7){var _0x4fa814=this;return new Promise(function(_0x506d1c,_0x2cae57){return db['VoiceDialReport'][_0x45c4('0x13')](_0x3aedb7[_0x45c4('0x14')],{'raw':_0x3aedb7[_0x45c4('0x15')]?_0x3aedb7[_0x45c4('0x15')]['raw']===undefined?!![]:![]:!![]})[_0x45c4('0x9')](function(_0x1c26d9){logger[_0x45c4('0x10')](_0x45c4('0x12'),_0x3aedb7);logger[_0x45c4('0xc')](_0x45c4('0x12'),_0x3aedb7,JSON[_0x45c4('0x16')](_0x1c26d9));_0x506d1c(_0x1c26d9);})[_0x45c4('0x17')](function(_0x1f67e6){logger[_0x45c4('0xd')](_0x45c4('0x12'),_0x1f67e6[_0x45c4('0xf')],_0x3aedb7);_0x2cae57(_0x4fa814[_0x45c4('0xd')](0x1f4,_0x1f67e6[_0x45c4('0xf')]));});});};exports[_0x45c4('0x18')]=function(_0x2390c7){var _0x26c904=this;return new Promise(function(_0x155140,_0x49077f){return db[_0x45c4('0x19')][_0x45c4('0x1a')](_0x2390c7[_0x45c4('0x14')],{'raw':_0x2390c7[_0x45c4('0x15')]?_0x2390c7[_0x45c4('0x15')][_0x45c4('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2390c7[_0x45c4('0x15')]?_0x2390c7[_0x45c4('0x15')][_0x45c4('0x1c')]||null:null,'attributes':_0x2390c7['options']?_0x2390c7[_0x45c4('0x15')][_0x45c4('0x1d')]||null:null,'limit':_0x2390c7[_0x45c4('0x15')]?_0x2390c7[_0x45c4('0x15')]['limit']||null:null})['then'](function(_0x21f43c){logger[_0x45c4('0x10')](_0x45c4('0x18'),_0x2390c7);logger[_0x45c4('0xc')]('UpdateVoiceDialReport',_0x2390c7,JSON[_0x45c4('0x16')](_0x21f43c));_0x155140(_0x21f43c);})['catch'](function(_0x2f183d){logger[_0x45c4('0xd')]('UpdateVoiceDialReport',_0x2f183d['message'],_0x2390c7);_0x49077f(_0x26c904['error'](0x1f4,_0x2f183d[_0x45c4('0xf')]));});});};
\ No newline at end of file
index b786e6b..fe38128 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd8d=['../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','index','isAuthenticated','create','post','addApplications','put','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x39658a,_0xf361cc){var _0x3acb43=function(_0x16ae3f){while(--_0x16ae3f){_0x39658a['push'](_0x39658a['shift']());}};_0x3acb43(++_0xf361cc);}(_0xdd8d,0x10a));var _0xddd8=function(_0x3cc4c8,_0x114636){_0x3cc4c8=_0x3cc4c8-0x0;var _0xdc0123=_0xdd8d[_0x3cc4c8];return _0xdc0123;};'use strict';var multer=require(_0xddd8('0x0'));var util=require(_0xddd8('0x1'));var path=require(_0xddd8('0x2'));var timeout=require(_0xddd8('0x3'));var express=require(_0xddd8('0x4'));var router=express[_0xddd8('0x5')]();var fs_extra=require(_0xddd8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xddd8('0x7'));var config=require(_0xddd8('0x8'));var controller=require(_0xddd8('0x9'));router[_0xddd8('0xa')]('/',auth['isAuthenticated'](),controller[_0xddd8('0xb')]);router[_0xddd8('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xddd8('0xc')](),controller[_0xddd8('0xd')]);router[_0xddd8('0xe')]('/:id/applications',auth['isAuthenticated'](),controller[_0xddd8('0xf')]);router[_0xddd8('0x10')](_0xddd8('0x11'),auth['isAuthenticated'](),controller[_0xddd8('0x12')]);router[_0xddd8('0x13')](_0xddd8('0x11'),auth['isAuthenticated'](),controller[_0xddd8('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x6324=['./voiceExtension.controller','get','index','/:id','isAuthenticated','show','post','/:id/applications','addApplications','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x544131,_0x2024ae){var _0x40b3f9=function(_0x541fe5){while(--_0x541fe5){_0x544131['push'](_0x544131['shift']());}};_0x40b3f9(++_0x2024ae);}(_0x6324,0x140));var _0x4632=function(_0x17d45b,_0x41abad){_0x17d45b=_0x17d45b-0x0;var _0x2755ca=_0x6324[_0x17d45b];return _0x2755ca;};'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(_0x4632('0x4'));var router=express[_0x4632('0x5')]();var fs_extra=require(_0x4632('0x6'));var auth=require(_0x4632('0x7'));var interaction=require(_0x4632('0x8'));var config=require(_0x4632('0x9'));var controller=require(_0x4632('0xa'));router[_0x4632('0xb')]('/',auth['isAuthenticated'](),controller[_0x4632('0xc')]);router['get'](_0x4632('0xd'),auth[_0x4632('0xe')](),controller[_0x4632('0xf')]);router[_0x4632('0x10')]('/',auth[_0x4632('0xe')](),controller['create']);router['post'](_0x4632('0x11'),auth[_0x4632('0xe')](),controller[_0x4632('0x12')]);router[_0x4632('0x13')](_0x4632('0xd'),auth[_0x4632('0xe')](),controller[_0x4632('0x14')]);router[_0x4632('0x15')](_0x4632('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 4b39c63..984136b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1078=['BOOLEAN','wav','VIRTUAL','getDataValue','exten','sequelize','exports','STRING','compositeIndex','inbound','outbound','internal','inbound-fax','outbound-fax','system','INTEGER'];(function(_0x429e4c,_0x551b1f){var _0x317c3d=function(_0x531c04){while(--_0x531c04){_0x429e4c['push'](_0x429e4c['shift']());}};_0x317c3d(++_0x551b1f);}(_0x1078,0x135));var _0x8107=function(_0x380837,_0x3de934){_0x380837=_0x380837-0x0;var _0x37ddbe=_0x1078[_0x380837];return _0x37ddbe;};'use strict';var Sequelize=require(_0x8107('0x0'));module[_0x8107('0x1')]={'context':{'type':Sequelize[_0x8107('0x2')],'allowNull':![],'unique':_0x8107('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x8107('0x2')],'allowNull':![],'unique':_0x8107('0x3')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x8107('0x3')},'tag':{'type':Sequelize[_0x8107('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x8107('0x2')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM'](_0x8107('0x4'),_0x8107('0x5'),_0x8107('0x6'),_0x8107('0x7'),_0x8107('0x8'),_0x8107('0x9'),'any'),'allowNull':![]},'description':{'type':Sequelize[_0x8107('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize[_0x8107('0xa')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x8107('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0x8107('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0x8107('0xb')],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0x8107('0xc')},'answer':{'type':Sequelize[_0x8107('0xb')],'defaultValue':!![]},'name':{'type':Sequelize[_0x8107('0xd')],'get':function(_0x41cb05){return this[_0x8107('0xe')](_0x8107('0xf'));}},'alias':{'type':Sequelize[_0x8107('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x316c=['VIRTUAL','exten','sequelize','exports','STRING','compositeIndex','NoOp','ENUM','inbound','outbound','internal','system','any','*,*,*,*','INTEGER','BOOLEAN'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x316c,0x1c2));var _0xc316=function(_0x371162,_0x52b481){_0x371162=_0x371162-0x0;var _0xcee158=_0x316c[_0x371162];return _0xcee158;};'use strict';var Sequelize=require(_0xc316('0x0'));module[_0xc316('0x1')]={'context':{'type':Sequelize[_0xc316('0x2')],'allowNull':![],'unique':_0xc316('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xc316('0x2')],'allowNull':![],'unique':_0xc316('0x3')},'priority':{'type':Sequelize[_0xc316('0x2')],'allowNull':![],'defaultValue':'1','unique':_0xc316('0x3')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xc316('0x2')],'allowNull':![],'defaultValue':_0xc316('0x4')},'appdata':{'type':Sequelize[_0xc316('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xc316('0x5')](_0xc316('0x6'),_0xc316('0x7'),_0xc316('0x8'),'inbound-fax','outbound-fax',_0xc316('0x9'),_0xc316('0xa')),'allowNull':![]},'description':{'type':Sequelize[_0xc316('0x2')]},'interval':{'type':Sequelize[_0xc316('0x2')],'allowNull':![],'defaultValue':_0xc316('0xb')},'IntervalId':{'type':Sequelize[_0xc316('0xc')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xc316('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0xc316('0x2')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xc316('0xc')]},'recordingFormat':{'type':Sequelize[_0xc316('0x2')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0xc316('0xd')],'defaultValue':!![]},'name':{'type':Sequelize[_0xc316('0xe')],'get':function(_0x5193e0){return this['getDataValue'](_0xc316('0xf'));}},'alias':{'type':Sequelize[_0xc316('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 882c2a9..7252cac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd22=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','internal','ignore','value','includes','type','name','destroy','stack','send','map','rawAttributes','fieldName','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','VoiceExtension','findAll','rows','catch','show','includeAll','find','body','concat','exten','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','InternalRoutes','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','context','recordingFormat','mandatoryDisposition','alias','addApplications','findOne','sequelize','transaction','isApp','rewriteDial','toLowerCase','true','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service'];(function(_0x16848d,_0x57e6dc){var _0x20471a=function(_0x2d7470){while(--_0x2d7470){_0x16848d['push'](_0x16848d['shift']());}};_0x20471a(++_0x57e6dc);}(_0xfd22,0x64));var _0x2fd2=function(_0x503724,_0xed68a3){_0x503724=_0x503724-0x0;var _0x1e3fd7=_0xfd22[_0x503724];return _0x1e3fd7;};'use strict';var emlformat=require(_0x2fd2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2fd2('0x1'));var jsonpatch=require(_0x2fd2('0x2'));var rp=require(_0x2fd2('0x3'));var moment=require(_0x2fd2('0x4'));var BPromise=require(_0x2fd2('0x5'));var Mustache=require(_0x2fd2('0x6'));var util=require('util');var path=require(_0x2fd2('0x7'));var sox=require(_0x2fd2('0x8'));var csv=require(_0x2fd2('0x9'));var ejs=require(_0x2fd2('0xa'));var fs=require('fs');var fs_extra=require(_0x2fd2('0xb'));var _=require(_0x2fd2('0xc'));var squel=require(_0x2fd2('0xd'));var crypto=require(_0x2fd2('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2fd2('0x9'));var querystring=require(_0x2fd2('0xf'));var Papa=require('papaparse');var Redis=require(_0x2fd2('0x10'));var authService=require(_0x2fd2('0x11'));var qs=require(_0x2fd2('0x12'));var as=require(_0x2fd2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2fd2('0x14'))('api');var utils=require(_0x2fd2('0x15'));var config=require(_0x2fd2('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2fd2('0x17'))['db'];config[_0x2fd2('0x18')]=_[_0x2fd2('0x19')](config[_0x2fd2('0x18')],{'host':_0x2fd2('0x1a'),'port':0x18eb});var socket=require(_0x2fd2('0x1b'))(new Redis(config[_0x2fd2('0x18')]));require(_0x2fd2('0x1c'))[_0x2fd2('0x1d')](socket);function respondWithStatusCode(_0x4451b3,_0xd96503){_0xd96503=_0xd96503||0xcc;return function(_0x3d5617){if(_0x3d5617){return _0x4451b3[_0x2fd2('0x1e')](_0xd96503);}return _0x4451b3['status'](_0xd96503)[_0x2fd2('0x1f')]();};}function respondWithResult(_0x40096d,_0x529d1f){_0x529d1f=_0x529d1f||0xc8;return function(_0x36650f){if(_0x36650f){return _0x40096d[_0x2fd2('0x20')](_0x529d1f)[_0x2fd2('0x21')](_0x36650f);}};}function respondWithFilteredResult(_0x13814f,_0x904728){return function(_0x43019c){if(_0x43019c){var _0x16f594=typeof _0x904728[_0x2fd2('0x22')]===_0x2fd2('0x23')&&typeof _0x904728[_0x2fd2('0x24')]==='undefined';var _0x532fd8=_0x43019c['count'];var _0x2acb3f=_0x16f594?0x0:_0x904728[_0x2fd2('0x22')];var _0x55b1b4=_0x16f594?_0x43019c[_0x2fd2('0x25')]:_0x904728['offset']+_0x904728[_0x2fd2('0x24')];var _0x4a28bf;if(_0x55b1b4>=_0x532fd8){_0x55b1b4=_0x532fd8;_0x4a28bf=0xc8;}else{_0x4a28bf=0xce;}_0x13814f[_0x2fd2('0x20')](_0x4a28bf);return _0x13814f[_0x2fd2('0x26')]('Content-Range',_0x2acb3f+'-'+_0x55b1b4+'/'+_0x532fd8)[_0x2fd2('0x21')](_0x43019c);}return null;};}function patchUpdates(_0x45fb72){return function(_0x572a3e){try{jsonpatch[_0x2fd2('0x27')](_0x572a3e,_0x45fb72,!![]);}catch(_0x24c69f){return BPromise[_0x2fd2('0x28')](_0x24c69f);}return _0x572a3e[_0x2fd2('0x29')]();};}function saveUpdates(_0x592722,_0x1d90bb){return function(_0x3a314d){if(_0x3a314d){return _0x3a314d['update'](_0x592722)[_0x2fd2('0x2a')](function(_0x3b06ff){return _0x3b06ff;});}return null;};}function removeEntity(_0x5b79ab,_0x24ee20){return function(_0x58051f){if(_0x58051f){return _0x58051f['destroy']()[_0x2fd2('0x2a')](function(){var _0x18c48d=_0x58051f[_0x2fd2('0x2b')]({'plain':!![]});var _0x1b8f7b=[{'name':_0x2fd2('0x2c'),'value':_0x2fd2('0x2d'),'ignore':![]},{'name':_0x2fd2('0x2e'),'value':_0x2fd2('0x2f'),'ignore':![]},{'name':'InternalRoutes','value':_0x2fd2('0x30'),'ignore':![]}];var _0x2e1ce9=_(_0x1b8f7b)['filter'](_0x2fd2('0x31'))['map'](_0x2fd2('0x32'))[_0x2fd2('0x32')]();if(_[_0x2fd2('0x33')](_0x2e1ce9,_0x18c48d[_0x2fd2('0x34')])){return;}var _0x1fc891=_['find'](_0x1b8f7b,[_0x2fd2('0x32'),_0x18c48d[_0x2fd2('0x34')]])[_0x2fd2('0x35')];return db['UserProfileResource'][_0x2fd2('0x36')]({'where':{'type':_0x1fc891,'resourceId':_0x18c48d['id']}})[_0x2fd2('0x2a')](function(){return _0x58051f;});})['then'](function(){_0x5b79ab[_0x2fd2('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x276490,_0x1ceb61){return function(_0x1b280e){if(!_0x1b280e){_0x276490['sendStatus'](0x194);}return _0x1b280e;};}function handleError(_0x5b4ba4,_0x51ae13){_0x51ae13=_0x51ae13||0x1f4;return function(_0x51e29f){logger['error'](_0x51e29f[_0x2fd2('0x37')]);if(_0x51e29f[_0x2fd2('0x35')]){delete _0x51e29f[_0x2fd2('0x35')];}_0x5b4ba4[_0x2fd2('0x20')](_0x51ae13)[_0x2fd2('0x38')](_0x51e29f);};}exports['index']=function(_0x1561dc,_0x2e0427){var _0x339985={},_0x357444={},_0x162904={'count':0x0,'rows':[]};var _0x3b40fa=_[_0x2fd2('0x39')](db['VoiceExtension'][_0x2fd2('0x3a')],function(_0x1c330b){return{'name':_0x1c330b[_0x2fd2('0x3b')],'type':_0x1c330b['type']['key']};});_0x357444[_0x2fd2('0x3c')]=_[_0x2fd2('0x39')](_0x3b40fa,_0x2fd2('0x35'));_0x357444[_0x2fd2('0x3d')]=_[_0x2fd2('0x3e')](_0x1561dc[_0x2fd2('0x3d')]);_0x357444[_0x2fd2('0x3f')]=_['intersection'](_0x357444[_0x2fd2('0x3c')],_0x357444[_0x2fd2('0x3d')]);_0x339985[_0x2fd2('0x40')]=_[_0x2fd2('0x41')](_0x357444[_0x2fd2('0x3c')],qs[_0x2fd2('0x42')](_0x1561dc[_0x2fd2('0x3d')][_0x2fd2('0x42')]));_0x339985['attributes']=_0x339985['attributes'][_0x2fd2('0x43')]?_0x339985[_0x2fd2('0x40')]:_0x357444['model'];if(!_0x1561dc['query'][_0x2fd2('0x44')](_0x2fd2('0x45'))){_0x339985[_0x2fd2('0x24')]=qs['limit'](_0x1561dc[_0x2fd2('0x3d')][_0x2fd2('0x24')]);_0x339985[_0x2fd2('0x22')]=qs['offset'](_0x1561dc[_0x2fd2('0x3d')][_0x2fd2('0x22')]);}_0x339985[_0x2fd2('0x46')]=qs['sort'](_0x1561dc[_0x2fd2('0x3d')][_0x2fd2('0x47')]);_0x339985[_0x2fd2('0x48')]=qs[_0x2fd2('0x3f')](_[_0x2fd2('0x49')](_0x1561dc['query'],_0x357444['filters']),_0x3b40fa);if(_0x1561dc[_0x2fd2('0x3d')][_0x2fd2('0x4a')]){_0x339985['where']=_[_0x2fd2('0x4b')](_0x339985[_0x2fd2('0x48')],{'$or':_[_0x2fd2('0x39')](_0x3b40fa,function(_0xd63e3b){if(_0xd63e3b['type']!==_0x2fd2('0x4c')){var _0x2e13f7={};_0x2e13f7[_0xd63e3b[_0x2fd2('0x35')]]={'$like':'%'+_0x1561dc[_0x2fd2('0x3d')][_0x2fd2('0x4a')]+'%'};return _0x2e13f7;}})});}_0x339985=_[_0x2fd2('0x4b')]({},_0x339985,_0x1561dc[_0x2fd2('0x4d')]);var _0x521580={'where':_0x339985['where']};return db['VoiceExtension'][_0x2fd2('0x25')](_0x521580)[_0x2fd2('0x2a')](function(_0x1bcfb6){_0x162904[_0x2fd2('0x25')]=_0x1bcfb6;if(_0x1561dc['query']['includeAll']){_0x339985[_0x2fd2('0x4e')]=[{'all':!![]}];}return db[_0x2fd2('0x4f')][_0x2fd2('0x50')](_0x339985);})[_0x2fd2('0x2a')](function(_0x285eec){_0x162904[_0x2fd2('0x51')]=_0x285eec;return _0x162904;})[_0x2fd2('0x2a')](respondWithFilteredResult(_0x2e0427,_0x339985))[_0x2fd2('0x52')](handleError(_0x2e0427,null));};exports[_0x2fd2('0x53')]=function(_0x412cf6,_0x1dacdf){var _0xc56426={'raw':![],'where':{'id':_0x412cf6['params']['id']}},_0x348bab={};_0x348bab[_0x2fd2('0x3c')]=_[_0x2fd2('0x3e')](db[_0x2fd2('0x4f')]['rawAttributes']);_0x348bab[_0x2fd2('0x3d')]=_[_0x2fd2('0x3e')](_0x412cf6[_0x2fd2('0x3d')]);_0x348bab[_0x2fd2('0x3f')]=_['intersection'](_0x348bab[_0x2fd2('0x3c')],_0x348bab[_0x2fd2('0x3d')]);_0xc56426['attributes']=_[_0x2fd2('0x41')](_0x348bab[_0x2fd2('0x3c')],qs[_0x2fd2('0x42')](_0x412cf6['query'][_0x2fd2('0x42')]));_0xc56426['attributes']=_0xc56426['attributes'][_0x2fd2('0x43')]?_0xc56426[_0x2fd2('0x40')]:_0x348bab[_0x2fd2('0x3c')];if(_0x412cf6['query'][_0x2fd2('0x54')]){_0xc56426[_0x2fd2('0x4e')]=[{'all':!![]}];}_0xc56426=_[_0x2fd2('0x4b')]({},_0xc56426,_0x412cf6[_0x2fd2('0x4d')]);return db['VoiceExtension'][_0x2fd2('0x55')](_0xc56426)[_0x2fd2('0x2a')](handleEntityNotFound(_0x1dacdf,null))[_0x2fd2('0x2a')](respondWithResult(_0x1dacdf,null))['catch'](handleError(_0x1dacdf,null));};exports[_0x2fd2('0x36')]=function(_0x57e937,_0x302ebb){return db[_0x2fd2('0x4f')][_0x2fd2('0x55')]({'where':{'id':_0x57e937['params']['id']}})[_0x2fd2('0x2a')](handleEntityNotFound(_0x302ebb,null))[_0x2fd2('0x2a')](removeEntity(_0x302ebb,null))[_0x2fd2('0x52')](handleError(_0x302ebb,null));};exports['create']=function(_0x10818e,_0x4d2ab1){if(_0x10818e[_0x2fd2('0x56')]['type']===_0x2fd2('0x2f')&&!_['startsWith'](_0x10818e[_0x2fd2('0x56')]['exten'],'_')){_0x10818e['body']['exten']='_'[_0x2fd2('0x57')](_0x10818e[_0x2fd2('0x56')][_0x2fd2('0x58')]);}return db[_0x2fd2('0x4f')][_0x2fd2('0x59')](_0x10818e[_0x2fd2('0x56')],{'raw':![]})['then'](function(_0x22051b){var _0xad2376=_0x10818e[_0x2fd2('0x5a')][_0x2fd2('0x2b')]({'plain':!![]});if(!_0xad2376)throw new Error(_0x2fd2('0x5b'));if(_0xad2376[_0x2fd2('0x5c')]===_0x2fd2('0x5a')){var _0x69547e=_0x22051b[_0x2fd2('0x2b')]({'plain':!![]});var _0x1771e9=[{'name':_0x2fd2('0x2c'),'value':_0x2fd2('0x2d')},{'name':_0x2fd2('0x2e'),'value':_0x2fd2('0x2f')},{'name':_0x2fd2('0x5d'),'value':_0x2fd2('0x30')}];var _0x46b4a6=_[_0x2fd2('0x55')](_0x1771e9,[_0x2fd2('0x32'),_0x69547e['type']])[_0x2fd2('0x35')];return db[_0x2fd2('0x5e')][_0x2fd2('0x55')]({'where':{'name':_0x46b4a6,'userProfileId':_0xad2376[_0x2fd2('0x5f')]},'raw':!![]})[_0x2fd2('0x2a')](function(_0x2a9046){if(_0x2a9046&&_0x2a9046[_0x2fd2('0x60')]===0x0){return db[_0x2fd2('0x61')]['create']({'name':_0x69547e[_0x2fd2('0x35')],'resourceId':_0x69547e['id'],'type':_0x2a9046['name'],'sectionId':_0x2a9046['id']},{})[_0x2fd2('0x2a')](function(){return _0x22051b;});}else{return _0x22051b;}})[_0x2fd2('0x52')](function(_0x819a64){logger[_0x2fd2('0x62')](_0x2fd2('0x63'),_0x819a64);throw _0x819a64;});}return _0x22051b;})[_0x2fd2('0x2a')](respondWithResult(_0x4d2ab1,0xc9))[_0x2fd2('0x52')](handleError(_0x4d2ab1,null));};exports[_0x2fd2('0x64')]=function(_0x10599a,_0x7ec722){if(_0x10599a['body']['id']){delete _0x10599a[_0x2fd2('0x56')]['id'];}return db[_0x2fd2('0x4f')][_0x2fd2('0x55')]({'where':{'id':_0x10599a[_0x2fd2('0x65')]['id']}})[_0x2fd2('0x2a')](handleEntityNotFound(_0x7ec722,null))['then'](function(_0x5c1987){if(_0x5c1987){return db[_0x2fd2('0x4f')][_0x2fd2('0x64')](_['pick'](_0x10599a[_0x2fd2('0x56')],[_0x2fd2('0x58'),_0x2fd2('0x66'),'description',_0x2fd2('0x67'),'cutdigits',_0x2fd2('0x68'),_0x2fd2('0x69')]),{'where':{'context':_0x5c1987['context'],'exten':_0x5c1987[_0x2fd2('0x58')]},'individualHooks':!![]})[_0x2fd2('0x2a')](function(_0xb8ffb9){return _0xb8ffb9;});}return null;})[_0x2fd2('0x2a')](respondWithStatusCode(_0x7ec722,null))[_0x2fd2('0x52')](handleError(_0x7ec722,null));};exports[_0x2fd2('0x6a')]=function(_0x1cb3d7,_0x36bfd3){return db[_0x2fd2('0x4f')][_0x2fd2('0x6b')]({'where':{'id':_0x1cb3d7[_0x2fd2('0x65')]['id']}})[_0x2fd2('0x2a')](function(_0x119dc5){if(_0x119dc5){return db[_0x2fd2('0x6c')][_0x2fd2('0x6d')](function(_0x59e64f){return db[_0x2fd2('0x4f')][_0x2fd2('0x36')]({'where':{'VoiceExtensionId':_0x1cb3d7[_0x2fd2('0x65')]['id']},'transaction':_0x59e64f})[_0x2fd2('0x2a')](function(){var _0x4528b7=_[_0x2fd2('0x39')](_0x1cb3d7['body'],function(_0xef02f8){_0xef02f8['VoiceExtensionId']=_0x1cb3d7[_0x2fd2('0x65')]['id'];_0xef02f8[_0x2fd2('0x6e')]=!![];return _0xef02f8;});var _0x7508ef=_0x1cb3d7[_0x2fd2('0x3d')]['rewriteDial']&&_0x1cb3d7[_0x2fd2('0x3d')][_0x2fd2('0x6f')][_0x2fd2('0x70')]()===_0x2fd2('0x71')?!![]:![];return _0x119dc5[_0x2fd2('0x72')](_0x4528b7,_0x7508ef);})[_0x2fd2('0x2a')](function(_0x206527){return db[_0x2fd2('0x4f')][_0x2fd2('0x73')](_0x206527,{'transaction':_0x59e64f});});})['then'](function(){return db[_0x2fd2('0x4f')][_0x2fd2('0x74')]({'where':{'isApp':!![],'VoiceExtensionId':_0x1cb3d7[_0x2fd2('0x65')]['id']},'order':_0x2fd2('0x75')});});}})['then'](respondWithResult(_0x36bfd3,null))[_0x2fd2('0x52')](handleError(_0x36bfd3,null));};
\ No newline at end of file
+var _0xe5aa=['../../config/environment','../../mysqldb','redis','defaults','localhost','./voiceExtension.socket','register','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','map','value','type','find','name','UserProfileResource','then','error','stack','send','index','VoiceExtension','rawAttributes','model','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','merge','options','includeAll','include','findAll','catch','show','params','intersection','length','destroy','create','body','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','pick','context','description','recordingFormat','cutdigits','mandatoryDisposition','findOne','sequelize','transaction','VoiceExtensionId','isApp','createRouting','log','LOG\x20~\x20.then\x20~\x20routing','bulkCreate','lodash','ioredis','../../components/parsers/qs','api'];(function(_0x224990,_0x59e356){var _0x1fbdb1=function(_0x2413c6){while(--_0x2413c6){_0x224990['push'](_0x224990['shift']());}};_0x1fbdb1(++_0x59e356);}(_0xe5aa,0x1b9));var _0xae5a=function(_0x3a2226,_0x1a1bec){_0x3a2226=_0x3a2226-0x0;var _0x4b2255=_0xe5aa[_0x3a2226];return _0x4b2255;};'use strict';var _=require(_0xae5a('0x0'));var Redis=require(_0xae5a('0x1'));var qs=require(_0xae5a('0x2'));var logger=require('../../config/logger')(_0xae5a('0x3'));var config=require(_0xae5a('0x4'));var db=require(_0xae5a('0x5'))['db'];config[_0xae5a('0x6')]=_[_0xae5a('0x7')](config[_0xae5a('0x6')],{'host':_0xae5a('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xae5a('0x9'))[_0xae5a('0xa')](socket);function respondWithStatusCode(_0x1e940f,_0x34e0df){_0x34e0df=_0x34e0df||0xcc;return function(_0x476efa){if(_0x476efa){return _0x1e940f[_0xae5a('0xb')](_0x34e0df);}return _0x1e940f[_0xae5a('0xc')](_0x34e0df)[_0xae5a('0xd')]();};}function respondWithResult(_0x42b920,_0x439397){_0x439397=_0x439397||0xc8;return function(_0x1de98e){if(_0x1de98e){return _0x42b920['status'](_0x439397)[_0xae5a('0xe')](_0x1de98e);}};}function respondWithFilteredResult(_0x4a5c91,_0x23df5a){return function(_0x3e2581){if(_0x3e2581){var _0x1e014f=typeof _0x23df5a['offset']===_0xae5a('0xf')&&typeof _0x23df5a['limit']==='undefined';var _0x5be41d=_0x3e2581[_0xae5a('0x10')];var _0x28ba76=_0x1e014f?0x0:_0x23df5a[_0xae5a('0x11')];var _0x252028=_0x1e014f?_0x3e2581['count']:_0x23df5a[_0xae5a('0x11')]+_0x23df5a['limit'];var _0x150c19;if(_0x252028>=_0x5be41d){_0x252028=_0x5be41d;_0x150c19=0xc8;}else{_0x150c19=0xce;}_0x4a5c91[_0xae5a('0xc')](_0x150c19);return _0x4a5c91[_0xae5a('0x12')](_0xae5a('0x13'),_0x28ba76+'-'+_0x252028+'/'+_0x5be41d)['json'](_0x3e2581);}return null;};}function removeEntity(_0x58ba35){return function(_0x344c37){if(_0x344c37){return _0x344c37['destroy']()['then'](function(){var _0x4f8f45=_0x344c37[_0xae5a('0x14')]({'plain':!![]});var _0x41e7ae=[{'name':_0xae5a('0x15'),'value':_0xae5a('0x16'),'ignore':![]},{'name':_0xae5a('0x17'),'value':_0xae5a('0x18'),'ignore':![]},{'name':_0xae5a('0x19'),'value':_0xae5a('0x1a'),'ignore':![]}];var _0x43f471=_(_0x41e7ae)[_0xae5a('0x1b')]('ignore')[_0xae5a('0x1c')]('value')[_0xae5a('0x1d')]();if(_['includes'](_0x43f471,_0x4f8f45[_0xae5a('0x1e')])){return;}var _0x41fe53=_[_0xae5a('0x1f')](_0x41e7ae,[_0xae5a('0x1d'),_0x4f8f45[_0xae5a('0x1e')]])[_0xae5a('0x20')];return db[_0xae5a('0x21')]['destroy']({'where':{'type':_0x41fe53,'resourceId':_0x4f8f45['id']}})[_0xae5a('0x22')](function(){return _0x344c37;});})[_0xae5a('0x22')](function(){_0x58ba35[_0xae5a('0xc')](0xcc)[_0xae5a('0xd')]();});}};}function handleEntityNotFound(_0xc158f7){return function(_0x2d2cd6){if(!_0x2d2cd6){_0xc158f7[_0xae5a('0xb')](0x194);}return _0x2d2cd6;};}function handleError(_0x601593,_0x1eda82){_0x1eda82=_0x1eda82||0x1f4;return function(_0x2eb401){logger[_0xae5a('0x23')](_0x2eb401[_0xae5a('0x24')]);if(_0x2eb401[_0xae5a('0x20')]){delete _0x2eb401[_0xae5a('0x20')];}_0x601593[_0xae5a('0xc')](_0x1eda82)[_0xae5a('0x25')](_0x2eb401);};}exports[_0xae5a('0x26')]=function(_0x5d7c84,_0x4fa24d){var _0x286a99={},_0x41b1ca={},_0x507daf={'count':0x0,'rows':[]};var _0x2a7d72=_['map'](db[_0xae5a('0x27')][_0xae5a('0x28')],function(_0x3c15e1){return{'name':_0x3c15e1['fieldName'],'type':_0x3c15e1[_0xae5a('0x1e')]['key']};});_0x41b1ca[_0xae5a('0x29')]=_[_0xae5a('0x1c')](_0x2a7d72,_0xae5a('0x20'));_0x41b1ca[_0xae5a('0x2a')]=_[_0xae5a('0x2b')](_0x5d7c84[_0xae5a('0x2a')]);_0x41b1ca[_0xae5a('0x2c')]=_['intersection'](_0x41b1ca[_0xae5a('0x29')],_0x41b1ca[_0xae5a('0x2a')]);_0x286a99[_0xae5a('0x2d')]=_['intersection'](_0x41b1ca[_0xae5a('0x29')],qs[_0xae5a('0x2e')](_0x5d7c84[_0xae5a('0x2a')][_0xae5a('0x2e')]));_0x286a99[_0xae5a('0x2d')]=_0x286a99['attributes']['length']?_0x286a99[_0xae5a('0x2d')]:_0x41b1ca[_0xae5a('0x29')];if(!_0x5d7c84[_0xae5a('0x2a')][_0xae5a('0x2f')](_0xae5a('0x30'))){_0x286a99[_0xae5a('0x31')]=qs[_0xae5a('0x31')](_0x5d7c84[_0xae5a('0x2a')][_0xae5a('0x31')]);_0x286a99[_0xae5a('0x11')]=qs[_0xae5a('0x11')](_0x5d7c84[_0xae5a('0x2a')][_0xae5a('0x11')]);}_0x286a99[_0xae5a('0x32')]=qs[_0xae5a('0x33')](_0x5d7c84[_0xae5a('0x2a')][_0xae5a('0x33')]);_0x286a99[_0xae5a('0x34')]=qs[_0xae5a('0x2c')](_['pick'](_0x5d7c84[_0xae5a('0x2a')],_0x41b1ca[_0xae5a('0x2c')]),_0x2a7d72);if(_0x5d7c84['query'][_0xae5a('0x1b')]){_0x286a99[_0xae5a('0x34')]=_[_0xae5a('0x35')](_0x286a99[_0xae5a('0x34')],{'$or':_[_0xae5a('0x1c')](_0x2a7d72,function(_0x13cdc0){if(_0x13cdc0[_0xae5a('0x1e')]!=='VIRTUAL'){var _0x3b8a0f={};_0x3b8a0f[_0x13cdc0[_0xae5a('0x20')]]={'$like':'%'+_0x5d7c84[_0xae5a('0x2a')]['filter']+'%'};return _0x3b8a0f;}})});}_0x286a99=_[_0xae5a('0x35')]({},_0x286a99,_0x5d7c84[_0xae5a('0x36')]);var _0x1e2ebd={'where':_0x286a99[_0xae5a('0x34')]};return db[_0xae5a('0x27')][_0xae5a('0x10')](_0x1e2ebd)[_0xae5a('0x22')](function(_0x38a98c){_0x507daf[_0xae5a('0x10')]=_0x38a98c;if(_0x5d7c84[_0xae5a('0x2a')][_0xae5a('0x37')]){_0x286a99[_0xae5a('0x38')]=[{'all':!![]}];}return db[_0xae5a('0x27')][_0xae5a('0x39')](_0x286a99);})[_0xae5a('0x22')](function(_0x1dd4a3){_0x507daf['rows']=_0x1dd4a3;return _0x507daf;})[_0xae5a('0x22')](respondWithFilteredResult(_0x4fa24d,_0x286a99))[_0xae5a('0x3a')](handleError(_0x4fa24d,null));};exports[_0xae5a('0x3b')]=function(_0x5222f5,_0xd1d071){var _0x3fac29={'raw':![],'where':{'id':_0x5222f5[_0xae5a('0x3c')]['id']}},_0x490da8={};_0x490da8[_0xae5a('0x29')]=_[_0xae5a('0x2b')](db[_0xae5a('0x27')][_0xae5a('0x28')]);_0x490da8[_0xae5a('0x2a')]=_[_0xae5a('0x2b')](_0x5222f5[_0xae5a('0x2a')]);_0x490da8[_0xae5a('0x2c')]=_[_0xae5a('0x3d')](_0x490da8[_0xae5a('0x29')],_0x490da8[_0xae5a('0x2a')]);_0x3fac29['attributes']=_[_0xae5a('0x3d')](_0x490da8['model'],qs[_0xae5a('0x2e')](_0x5222f5[_0xae5a('0x2a')]['fields']));_0x3fac29['attributes']=_0x3fac29[_0xae5a('0x2d')][_0xae5a('0x3e')]?_0x3fac29[_0xae5a('0x2d')]:_0x490da8[_0xae5a('0x29')];if(_0x5222f5[_0xae5a('0x2a')][_0xae5a('0x37')]){_0x3fac29[_0xae5a('0x38')]=[{'all':!![]}];}_0x3fac29=_['merge']({},_0x3fac29,_0x5222f5['options']);return db['VoiceExtension'][_0xae5a('0x1f')](_0x3fac29)['then'](handleEntityNotFound(_0xd1d071,null))[_0xae5a('0x22')](respondWithResult(_0xd1d071,null))[_0xae5a('0x3a')](handleError(_0xd1d071,null));};exports[_0xae5a('0x3f')]=function(_0x399f49,_0x1a7555){return db['VoiceExtension'][_0xae5a('0x1f')]({'where':{'id':_0x399f49[_0xae5a('0x3c')]['id']}})[_0xae5a('0x22')](handleEntityNotFound(_0x1a7555,null))[_0xae5a('0x22')](removeEntity(_0x1a7555,null))[_0xae5a('0x3a')](handleError(_0x1a7555,null));};exports[_0xae5a('0x40')]=function(_0x324d26,_0x50ff64){if(_0x324d26[_0xae5a('0x41')][_0xae5a('0x1e')]==='outbound'&&!_[_0xae5a('0x42')](_0x324d26[_0xae5a('0x41')][_0xae5a('0x43')],'_')){_0x324d26[_0xae5a('0x41')]['exten']='_'[_0xae5a('0x44')](_0x324d26['body'][_0xae5a('0x43')]);}return db[_0xae5a('0x27')][_0xae5a('0x40')](_0x324d26[_0xae5a('0x41')],{'raw':![]})[_0xae5a('0x22')](function(_0x54e05b){var _0x56d9f9=_0x324d26[_0xae5a('0x45')][_0xae5a('0x14')]({'plain':!![]});if(!_0x56d9f9)throw new Error(_0xae5a('0x46'));if(_0x56d9f9['role']===_0xae5a('0x45')){var _0x4f3b63=_0x54e05b['get']({'plain':!![]});var _0x1d36de=[{'name':'InboundRoutes','value':'inbound'},{'name':'OutboundRoutes','value':_0xae5a('0x18')},{'name':'InternalRoutes','value':_0xae5a('0x1a')}];var _0x245e4a=_[_0xae5a('0x1f')](_0x1d36de,[_0xae5a('0x1d'),_0x4f3b63[_0xae5a('0x1e')]])[_0xae5a('0x20')];return db[_0xae5a('0x47')][_0xae5a('0x1f')]({'where':{'name':_0x245e4a,'userProfileId':_0x56d9f9[_0xae5a('0x48')]},'raw':!![]})[_0xae5a('0x22')](function(_0x42eb72){if(_0x42eb72&&_0x42eb72[_0xae5a('0x49')]===0x0){return db[_0xae5a('0x21')][_0xae5a('0x40')]({'name':_0x4f3b63[_0xae5a('0x20')],'resourceId':_0x4f3b63['id'],'type':_0x42eb72[_0xae5a('0x20')],'sectionId':_0x42eb72['id']},{})['then'](function(){return _0x54e05b;});}else{return _0x54e05b;}})[_0xae5a('0x3a')](function(_0x113211){logger[_0xae5a('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x113211);throw _0x113211;});}return _0x54e05b;})[_0xae5a('0x22')](respondWithResult(_0x50ff64,0xc9))[_0xae5a('0x3a')](handleError(_0x50ff64,null));};exports['update']=function(_0xfe0e09,_0x4c8122){if(_0xfe0e09[_0xae5a('0x41')]['id']){delete _0xfe0e09[_0xae5a('0x41')]['id'];}return db['VoiceExtension'][_0xae5a('0x1f')]({'where':{'id':_0xfe0e09['params']['id']}})['then'](handleEntityNotFound(_0x4c8122,null))[_0xae5a('0x22')](function(_0x3c468f){if(_0x3c468f){return db['VoiceExtension']['update'](_[_0xae5a('0x4a')](_0xfe0e09[_0xae5a('0x41')],[_0xae5a('0x43'),_0xae5a('0x4b'),_0xae5a('0x4c'),_0xae5a('0x4d'),_0xae5a('0x4e'),_0xae5a('0x4f'),'alias']),{'where':{'context':_0x3c468f[_0xae5a('0x4b')],'exten':_0x3c468f['exten']},'individualHooks':!![]})[_0xae5a('0x22')](function(_0x333923){return _0x333923;});}return null;})[_0xae5a('0x22')](respondWithStatusCode(_0x4c8122,null))[_0xae5a('0x3a')](handleError(_0x4c8122,null));};exports['addApplications']=function(_0x327e3d,_0x44686e){return db['VoiceExtension'][_0xae5a('0x50')]({'where':{'id':_0x327e3d[_0xae5a('0x3c')]['id']}})[_0xae5a('0x22')](function(_0x22d0a3){if(_0x22d0a3){return db[_0xae5a('0x51')][_0xae5a('0x52')](function(_0x29d6ec){return db[_0xae5a('0x27')]['destroy']({'where':{'VoiceExtensionId':_0x327e3d[_0xae5a('0x3c')]['id']},'transaction':_0x29d6ec})[_0xae5a('0x22')](function(){var _0x2bdf27=_[_0xae5a('0x1c')](_0x327e3d['body'],function(_0x1f8433){_0x1f8433[_0xae5a('0x53')]=_0x327e3d[_0xae5a('0x3c')]['id'];_0x1f8433[_0xae5a('0x54')]=!![];return _0x1f8433;});return _0x22d0a3[_0xae5a('0x55')](_0x2bdf27);})[_0xae5a('0x22')](function(_0x51df3d){console[_0xae5a('0x56')](_0xae5a('0x57'),_0x51df3d);return db['VoiceExtension'][_0xae5a('0x58')](_0x51df3d,{'transaction':_0x29d6ec});});})['then'](function(){return db[_0xae5a('0x27')]['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0x327e3d['params']['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})['then'](respondWithResult(_0x44686e,null))['catch'](handleError(_0x44686e,null));};
\ No newline at end of file
index bdb9d1c..b7100cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d48=['events','../../mysqldb','update','emit','hook'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3d48,0x177));var _0x83d4=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x3d48[_0x2c91e9];return _0x13f0ff;};'use strict';var EventEmitter=require(_0x83d4('0x0'));var VoiceExtension=require(_0x83d4('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x83d4('0x2'),'afterDestroy':'remove'};function emitEvent(_0xaad37){return function(_0x4281d4,_0x5e122b,_0x457c94){VoiceExtensionEvents['emit'](_0xaad37+':'+_0x4281d4['id'],_0x4281d4);VoiceExtensionEvents[_0x83d4('0x3')](_0xaad37,_0x4281d4);_0x457c94(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x83d4('0x4')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
+var _0xe27f=['events','../../mysqldb','VoiceExtension','setMaxListeners','update','remove','hasOwnProperty','hook','exports'];(function(_0x43b616,_0xb842c){var _0xc188db=function(_0x2faaf5){while(--_0x2faaf5){_0x43b616['push'](_0x43b616['shift']());}};_0xc188db(++_0xb842c);}(_0xe27f,0xc6));var _0xfe27=function(_0x204418,_0x17c4ae){_0x204418=_0x204418-0x0;var _0xf5fae3=_0xe27f[_0x204418];return _0xf5fae3;};'use strict';var EventEmitter=require(_0xfe27('0x0'));var VoiceExtension=require(_0xfe27('0x1'))['db'][_0xfe27('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xfe27('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xfe27('0x4'),'afterDestroy':_0xfe27('0x5')};function emitEvent(_0x12bbeb){return function(_0x1f6e34,_0x5194c7,_0x5ae3d8){VoiceExtensionEvents['emit'](_0x12bbeb+':'+_0x1f6e34['id'],_0x1f6e34);VoiceExtensionEvents['emit'](_0x12bbeb,_0x1f6e34);_0x5ae3d8(null);};}for(var e in events){if(events[_0xfe27('0x6')](e)){var event=events[e];VoiceExtension[_0xfe27('0x7')](e,emitEvent(event));}}module[_0xfe27('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
index ed2796f..f295a8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8d8=['length','name','trunk','param','phone','prefix','${EXTEN}','SIP','join','U(xcally-mixmonitor-context)','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','ExecIf','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','voice_extensions','Hangup','util','lodash','exports','models','Set','CDR(type)=','type','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','exten','inbound','CDR(routeid)=','context','push','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','timeout','options','url','split'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe8d8,0x171));var _0x8e8d=function(_0xc7fc34,_0xd8ad6c){_0xc7fc34=_0xc7fc34-0x0;var _0x41d17d=_0xe8d8[_0xc7fc34];return _0x41d17d;};'use strict';var util=require(_0x8e8d('0x0'));var _=require(_0x8e8d('0x1'));var attributes=require('./voiceExtension.attributes');module[_0x8e8d('0x2')]=function(_0x18c30c){var _0x4bc3b3=_0x18c30c[_0x8e8d('0x3')];function _0x5db796(_0x131b64){var _0x58ee9f=0x2;var _0x20bcb2=[{'type':_0x131b64['type'],'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x5')+_0x131b64['type'],'context':_0x131b64['context'],'exten':_0x131b64['exten'],'priority':_0x58ee9f++,'VoiceExtensionId':_0x131b64['id']},{'type':_0x131b64[_0x8e8d('0x6')],'app':_0x131b64[_0x8e8d('0x7')]?'Set':_0x8e8d('0x8'),'appdata':_0x131b64[_0x8e8d('0x7')]?_0x8e8d('0x9')+_0x131b64[_0x8e8d('0x7')]:_0x8e8d('0xa'),'context':_0x131b64['context'],'exten':_0x131b64[_0x8e8d('0xb')],'priority':_0x58ee9f++,'VoiceExtensionId':_0x131b64['id']}];if(_0x131b64[_0x8e8d('0x6')]===_0x8e8d('0xc')){_0x20bcb2['push']({'type':'inbound','app':'Set','appdata':_0x8e8d('0xd')+_0x131b64['id'],'context':_0x131b64[_0x8e8d('0xe')],'exten':_0x131b64[_0x8e8d('0xb')],'priority':_0x58ee9f++,'VoiceExtensionId':_0x131b64['id']});}_0x20bcb2[_0x8e8d('0xf')]({'type':_0x131b64[_0x8e8d('0x6')],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x131b64[_0x8e8d('0xe')],'exten':_0x131b64['exten'],'priority':_0x58ee9f++,'VoiceExtensionId':_0x131b64['id']},{'type':_0x131b64[_0x8e8d('0x6')],'app':'Set','appdata':_0x8e8d('0x10'),'context':_0x131b64[_0x8e8d('0xe')],'exten':_0x131b64['exten'],'priority':_0x58ee9f++,'VoiceExtensionId':_0x131b64['id']},{'type':_0x131b64[_0x8e8d('0x6')],'app':'Set','appdata':_0x8e8d('0x11'),'context':_0x131b64['context'],'exten':_0x131b64[_0x8e8d('0xb')],'priority':_0x58ee9f++,'VoiceExtensionId':_0x131b64['id']});return _0x20bcb2;}function _0x51e8e0(_0x3035b9){var _0xea275e=0x2;var _0x2c7bd7=[{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x13'),'context':_0x3035b9['context'],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x3035b9['alias']?_0x8e8d('0x4'):_0x8e8d('0x8'),'appdata':_0x3035b9[_0x8e8d('0x7')]?_0x8e8d('0x9')+_0x3035b9[_0x8e8d('0x7')]:_0x8e8d('0xa'),'context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x14')+(_0x3035b9[_0x8e8d('0x15')]?_0x8e8d('0x16')+_0x3035b9[_0x8e8d('0x15')]+'}':'${EXTEN}'),'context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9['exten'],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0xd')+_0x3035b9['id'],'context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':'ExecIf','appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0xea275e+0x2)+_0x8e8d('0x17')+(_0xea275e+0x1)+')','context':_0x3035b9['context'],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':_0x3035b9[_0x8e8d('0x15')]?_0x8e8d('0x18')+_0x3035b9[_0x8e8d('0x15')]+'}':_0x8e8d('0x19'),'context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9['exten'],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x11'),'context':_0x3035b9['context'],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':'Set','appdata':_0x8e8d('0x1a')+_0x3035b9['id'],'context':_0x3035b9['context'],'exten':_0x3035b9['exten'],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']}];if(_0x3035b9[_0x8e8d('0x1b')](_0x8e8d('0x1c'))&&_0x3035b9[_0x8e8d('0x1c')]!==_0x8e8d('0x1d')){_0x2c7bd7['push']({'type':_0x8e8d('0x12'),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x1e'),'context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']},{'type':_0x8e8d('0x12'),'app':'Set','appdata':_0x8e8d('0x1f')+_0x3035b9['recordingFormat']||'wav','context':_0x3035b9[_0x8e8d('0xe')],'exten':_0x3035b9[_0x8e8d('0xb')],'priority':_0xea275e++,'VoiceExtensionId':_0x3035b9['id']});}return _0x2c7bd7;}function _0x38e888(_0x538324){var _0x185c43=[{'name':'trunk','param':0x0},{'name':_0x8e8d('0x20'),'param':0x1},{'name':_0x8e8d('0x21'),'param':0x2},{'name':_0x8e8d('0x22'),'param':0x3}];var _0x26619f={};var _0x2aaeaf=_0x538324[_0x8e8d('0x23')](',');var _0x45b3c8=[];for(var _0x1e12d3=0x0;_0x1e12d3<_0x185c43[_0x8e8d('0x24')];_0x1e12d3++){switch(_0x185c43[_0x1e12d3][_0x8e8d('0x25')]){case _0x8e8d('0x26'):_0x26619f['trunk']=_0x2aaeaf[_0x185c43[_0x1e12d3][_0x8e8d('0x27')]][_0x8e8d('0x23')]('/')[0x1];_0x26619f[_0x8e8d('0x28')]=_0x2aaeaf[_0x185c43[_0x1e12d3][_0x8e8d('0x27')]][_0x8e8d('0x23')]('/')[0x2];_0x26619f['prefix']=_0x26619f['phone']?_0x26619f['phone'][_0x8e8d('0x23')]('$')[0x0]:undefined;_0x26619f[_0x8e8d('0x28')]=route['cutdigits']?(_0x26619f['prefix']||'')+_0x8e8d('0x16')+route[_0x8e8d('0x15')]+'}':(_0x26619f[_0x8e8d('0x29')]||'')+_0x8e8d('0x2a');_0x45b3c8[_0x185c43[_0x1e12d3][_0x8e8d('0x27')]]=[_0x8e8d('0x2b'),_0x26619f[_0x8e8d('0x26')],_0x26619f['phone']][_0x8e8d('0x2c')]('/');break;case _0x8e8d('0x21'):_0x26619f[_0x8e8d('0x21')]=_0x2aaeaf[_0x185c43[_0x1e12d3]['param']];if(route['recordingFormat']!==_0x8e8d('0x1d')){if(_0x26619f['options']['indexOf'](_0x8e8d('0x2d'))<0x0){_0x26619f[_0x8e8d('0x21')]+=_0x8e8d('0x2d');}}else{_0x26619f['options']=_0x26619f['options']['replace'](_0x8e8d('0x2d'),'');}_0x45b3c8[_0x185c43[_0x1e12d3][_0x8e8d('0x27')]]=_0x26619f[_0x8e8d('0x21')];break;default:_0x45b3c8[_0x185c43[_0x1e12d3][_0x8e8d('0x27')]]=_0x2aaeaf[_0x185c43[_0x1e12d3][_0x8e8d('0x27')]];}}return _0x45b3c8[_0x8e8d('0x2c')](',');}function _0x1b7756(_0x11f2fe,_0x397e9a,_0x3825b9,_0x215482){return new Promise(function(_0x1d5a8f,_0x5725ce){var _0x1eed05=[];if(_['isEmpty'](_0x397e9a))return _0x1d5a8f(_0x1eed05);_0x4bc3b3[_0x8e8d('0x2e')][_0x8e8d('0x2f')]({'attributes':['id',_0x8e8d('0x30'),_0x8e8d('0x31')],'raw':!![]})[_0x8e8d('0x32')](function(_0x2eda7b){for(var _0x3173ad=0x0,_0x502071=0x0;_0x3173ad<_0x397e9a[_0x8e8d('0x24')];_0x3173ad++,_0x502071=0x0){var _0x104ea5=_0x397e9a[_0x3173ad];var _0x5c9637=[];var _0x11304e=[];if(_0x104ea5[_0x8e8d('0x30')]!==_0x8e8d('0x33')){_0x104ea5[_0x8e8d('0x34')]=[_0x104ea5['interval']];}else{_0x104ea5[_0x8e8d('0x34')]=_0x104ea5['IntervalId']?_[_0x8e8d('0x35')](_[_0x8e8d('0x36')](_0x2eda7b,{'IntervalId':_0x104ea5['IntervalId']}),_0x8e8d('0x30')):[];}_0x104ea5[_0x8e8d('0xe')]=_0x11f2fe[_0x8e8d('0xe')];_0x104ea5[_0x8e8d('0xb')]=_0x11f2fe[_0x8e8d('0xb')];if(_0x104ea5['type'])_0x104ea5[_0x8e8d('0x6')]=_0x104ea5[_0x8e8d('0x6')]['toLowerCase']();if(_0x11f2fe['type']===_0x8e8d('0x12')){if(_0x104ea5[_0x8e8d('0x1b')](_0x8e8d('0x37'))&&_0x104ea5[_0x8e8d('0x37')]&&_0x104ea5[_0x8e8d('0x37')]!=='--'){_0x5c9637['push']({'type':_0x104ea5['type'][_0x8e8d('0x38')](),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x39')+_0x104ea5[_0x8e8d('0x37')],'context':_0x11f2fe[_0x8e8d('0xe')],'exten':_0x11f2fe['exten'],'priority':_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]+_0x3825b9+_0x502071++,'VoiceExtensionId':_0x11f2fe['id']});}_0x5c9637[_0x8e8d('0xf')]({'type':_0x104ea5[_0x8e8d('0x6')][_0x8e8d('0x38')](),'app':'ExecIf','appdata':_0x8e8d('0x3a')+(_0x104ea5[_0x8e8d('0x3b')]?_0x8e8d('0x3c')+_0x104ea5[_0x8e8d('0x3b')]+')':_0x8e8d('0x3d')),'context':_0x11f2fe[_0x8e8d('0xe')],'exten':_0x11f2fe[_0x8e8d('0xb')],'priority':_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]+_0x3825b9+_0x502071++,'VoiceExtensionId':_0x11f2fe['id']});}else{if(_0x104ea5[_0x8e8d('0x1b')](_0x8e8d('0x3e'))){if([_0x8e8d('0x3f'),'playback'][_0x8e8d('0x40')](_0x104ea5[_0x8e8d('0x41')][_0x8e8d('0x38')]())&&_0x104ea5[_0x8e8d('0x42')]!==_0x8e8d('0x43')){if(_0x104ea5[_0x8e8d('0x3e')]){_0x5c9637[_0x8e8d('0xf')]({'type':_0x104ea5[_0x8e8d('0x6')][_0x8e8d('0x38')](),'app':'ExecIf','appdata':_0x8e8d('0x44'),'context':_0x11f2fe[_0x8e8d('0xe')],'exten':_0x11f2fe[_0x8e8d('0xb')],'priority':_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]+_0x3825b9+_0x502071++,'VoiceExtensionId':_0x11f2fe['id']});_0x5c9637[_0x8e8d('0xf')]({'type':_0x104ea5['type'][_0x8e8d('0x38')](),'app':_0x8e8d('0x4'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x11f2fe[_0x8e8d('0xe')],'exten':_0x11f2fe[_0x8e8d('0xb')],'priority':_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]+_0x3825b9+_0x502071++,'VoiceExtensionId':_0x11f2fe['id']});}else{_0x5c9637[_0x8e8d('0xf')]({'type':_0x104ea5[_0x8e8d('0x6')]['toLowerCase'](),'app':_0x8e8d('0x45'),'appdata':_0x8e8d('0x46'),'context':_0x11f2fe[_0x8e8d('0xe')],'exten':_0x11f2fe[_0x8e8d('0xb')],'priority':_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]+_0x3825b9+_0x502071++,'VoiceExtensionId':_0x11f2fe['id']});_0x5c9637[_0x8e8d('0xf')]({'type':_0x104ea5[_0x8e8d('0x6')]['toLowerCase'](),'app':_0x8e8d('0x4'),'appdata':_0x8e8d('0x47'),'context':_0x11f2fe[_0x8e8d('0xe')],'exten':_0x11f2fe[_0x8e8d('0xb')],'priority':_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]+_0x3825b9+_0x502071++,'VoiceExtensionId':_0x11f2fe['id']});}}}}for(var _0x2b962f=0x0;_0x2b962f<_0x104ea5[_0x8e8d('0x34')]['length'];_0x2b962f++){var _0x2bd119=_0x3825b9+_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')];var _0xcfb9e=_0x2b962f===_0x104ea5[_0x8e8d('0x34')][_0x8e8d('0x24')]-0x1?_0x3825b9+_0x5c9637['length']+_0x11304e[_0x8e8d('0x24')]+0x2:_0x3825b9+_0x2b962f+0x1;_0x5c9637['splice'](_0x2b962f,0x0,{'type':_0x11f2fe[_0x8e8d('0x6')],'app':'GotoIfTime','appdata':_0x104ea5[_0x8e8d('0x34')][_0x2b962f]+'?'+_0x11f2fe['context']+_0x8e8d('0x48')+_0x2bd119+':'+_0x11f2fe['context']+',${EXTEN},'+_0xcfb9e,'exten':_0x11f2fe[_0x8e8d('0xb')],'context':_0x11f2fe[_0x8e8d('0xe')],'priority':_0x3825b9+_0x2b962f,'VoiceExtensionId':_0x11f2fe['id']});}if(_0x215482&&_0x104ea5['appType']===_0x8e8d('0x49'))_0x104ea5[_0x8e8d('0x4a')]=_0x38e888(_0x104ea5[_0x8e8d('0x4a')]);_0x104ea5[_0x8e8d('0x4b')]=_0x5c9637[_0x8e8d('0x24')]?_[_0x8e8d('0x4c')](_0x5c9637)[_0x8e8d('0x4b')]+0x1:_0x3825b9;_0x1eed05=_[_0x8e8d('0x4d')](_0x1eed05,_0x5c9637,[_0x104ea5],_0x11304e);_0x3825b9=_['last'](_0x1eed05)[_0x8e8d('0x4b')]+0x1;}return _0x1d5a8f(_0x1eed05);})[_0x8e8d('0x4e')](function(_0x18dbee){_0x5725ce(_0x18dbee);});});}return _0x18c30c['define']('VoiceExtension',attributes,{'tableName':_0x8e8d('0x4f'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x57f78e,_0x48d0cd){var _0x3278c8=this;var _0x2b6e32=_0x3278c8[_0x8e8d('0x6')]==='outbound'?_0x51e8e0(_0x3278c8):_0x5db796(_0x3278c8);return _0x1b7756(_0x3278c8,_0x57f78e,_['last'](_0x2b6e32)[_0x8e8d('0x4b')]+0x1,_0x48d0cd)[_0x8e8d('0x32')](function(_0x23fe7c){var _0x234204=_[_0x8e8d('0x4d')](_0x2b6e32,_0x23fe7c);_0x234204['push']({'type':_0x3278c8[_0x8e8d('0x6')],'app':_0x8e8d('0x50'),'exten':_0x3278c8[_0x8e8d('0xb')],'context':_0x3278c8[_0x8e8d('0xe')],'priority':_[_0x8e8d('0x4c')](_0x234204)[_0x8e8d('0x4b')]+0x1,'VoiceExtensionId':_0x3278c8['id']});return _0x234204;});}}});};
\ No newline at end of file
+var _0x65ac=['XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','appdata','priority','last','concat','catch','define','VoiceExtension','voice_extensions','Hangup','./voiceExtension.attributes','exports','models','type','Set','CDR(type)=','context','exten','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','outbound','CDR(type)=outbound','CDR(destination)=','${EXTEN:','${EXTEN}','ExecIf','):Goto(','cutdigits','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','split','length','param','prefix','phone','SIP','join','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','interval','IntervalId','then','intervals','map','filter','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','playback','includes','appType','$[${XCALLY-MOTION-PROGRESS}=0]?Progress'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x65ac,0x100));var _0xc65a=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x65ac[_0x24061a];return _0x82054e;};'use strict';var _=require('lodash');var attributes=require(_0xc65a('0x0'));module[_0xc65a('0x1')]=function(_0x23bc6a){var _0x513bbe=_0x23bc6a[_0xc65a('0x2')];function _0x4ac309(_0x21b561){var _0x5d98ec=0x2;var _0x3d84d6=[{'type':_0x21b561[_0xc65a('0x3')],'app':_0xc65a('0x4'),'appdata':_0xc65a('0x5')+_0x21b561[_0xc65a('0x3')],'context':_0x21b561[_0xc65a('0x6')],'exten':_0x21b561[_0xc65a('0x7')],'priority':_0x5d98ec++,'VoiceExtensionId':_0x21b561['id']},{'type':_0x21b561[_0xc65a('0x3')],'app':_0x21b561[_0xc65a('0x8')]?_0xc65a('0x4'):_0xc65a('0x9'),'appdata':_0x21b561[_0xc65a('0x8')]?_0xc65a('0xa')+_0x21b561[_0xc65a('0x8')]:_0xc65a('0xb'),'context':_0x21b561[_0xc65a('0x6')],'exten':_0x21b561[_0xc65a('0x7')],'priority':_0x5d98ec++,'VoiceExtensionId':_0x21b561['id']}];if(_0x21b561[_0xc65a('0x3')]===_0xc65a('0xc')){_0x3d84d6[_0xc65a('0xd')]({'type':_0xc65a('0xc'),'app':_0xc65a('0x4'),'appdata':_0xc65a('0xe')+_0x21b561['id'],'context':_0x21b561[_0xc65a('0x6')],'exten':_0x21b561[_0xc65a('0x7')],'priority':_0x5d98ec++,'VoiceExtensionId':_0x21b561['id']});}_0x3d84d6['push']({'type':_0x21b561[_0xc65a('0x3')],'app':_0xc65a('0x4'),'appdata':_0xc65a('0xf'),'context':_0x21b561['context'],'exten':_0x21b561['exten'],'priority':_0x5d98ec++,'VoiceExtensionId':_0x21b561['id']},{'type':_0x21b561[_0xc65a('0x3')],'app':_0xc65a('0x4'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x21b561[_0xc65a('0x6')],'exten':_0x21b561['exten'],'priority':_0x5d98ec++,'VoiceExtensionId':_0x21b561['id']},{'type':_0x21b561[_0xc65a('0x3')],'app':_0xc65a('0x4'),'appdata':'MONITOR_OPTIONS=ab','context':_0x21b561[_0xc65a('0x6')],'exten':_0x21b561['exten'],'priority':_0x5d98ec++,'VoiceExtensionId':_0x21b561['id']});return _0x3d84d6;}function _0x1b6821(_0x54f76e){var _0x40e039=0x2;var _0x4aae84=[{'type':_0xc65a('0x10'),'app':_0xc65a('0x4'),'appdata':_0xc65a('0x11'),'context':_0x54f76e[_0xc65a('0x6')],'exten':_0x54f76e[_0xc65a('0x7')],'priority':_0x40e039++,'VoiceExtensionId':_0x54f76e['id']},{'type':_0xc65a('0x10'),'app':_0x54f76e[_0xc65a('0x8')]?_0xc65a('0x4'):_0xc65a('0x9'),'appdata':_0x54f76e[_0xc65a('0x8')]?_0xc65a('0xa')+_0x54f76e[_0xc65a('0x8')]:'No\x20alias\x20set','context':_0x54f76e[_0xc65a('0x6')],'exten':_0x54f76e[_0xc65a('0x7')],'priority':_0x40e039++,'VoiceExtensionId':_0x54f76e['id']},{'type':_0xc65a('0x10'),'app':_0xc65a('0x4'),'appdata':_0xc65a('0x12')+(_0x54f76e['cutdigits']?_0xc65a('0x13')+_0x54f76e['cutdigits']+'}':_0xc65a('0x14')),'context':_0x54f76e[_0xc65a('0x6')],'exten':_0x54f76e[_0xc65a('0x7')],'priority':_0x40e039++,'VoiceExtensionId':_0x54f76e['id']},{'type':_0xc65a('0x10'),'app':_0xc65a('0x4'),'appdata':_0xc65a('0xe')+_0x54f76e['id'],'context':_0x54f76e[_0xc65a('0x6')],'exten':_0x54f76e[_0xc65a('0x7')],'priority':_0x40e039++,'VoiceExtensionId':_0x54f76e['id']},{'type':_0xc65a('0x10'),'app':_0xc65a('0x15'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x40e039+0x2)+_0xc65a('0x16')+(_0x40e039+0x1)+')','context':_0x54f76e[_0xc65a('0x6')],'exten':_0x54f76e['exten'],'priority':_0x40e039++,'VoiceExtensionId':_0x54f76e['id']},{'type':_0xc65a('0x10'),'app':_0xc65a('0x4'),'appdata':_0x54f76e[_0xc65a('0x17')]?_0xc65a('0x18')+_0x54f76e['cutdigits']+'}':_0xc65a('0x19'),'context':_0x54f76e[_0xc65a('0x6')],'exten':_0x54f76e['exten'],'priority':_0x40e039++,'VoiceExtensionId':_0x54f76e['id']},{'type':_0xc65a('0x10'),'app':_0xc65a('0x4'),'appdata':_0xc65a('0xf'),'context':_0x54f76e[_0xc65a('0x6')],'exten':_0x54f76e[_0xc65a('0x7')],'priority':_0x40e039++,'VoiceExtensionId':_0x54f76e['id']},{'type':'outbound','app':_0xc65a('0x4'),'appdata':_0xc65a('0x1a'),'context':_0x54f76e[_0xc65a('0x6')],'exten':_0x54f76e[_0xc65a('0x7')],'priority':_0x40e039++,'VoiceExtensionId':_0x54f76e['id']},{'type':_0xc65a('0x10'),'app':_0xc65a('0x4'),'appdata':_0xc65a('0x1b'),'context':_0x54f76e['context'],'exten':_0x54f76e[_0xc65a('0x7')],'priority':_0x40e039++,'VoiceExtensionId':_0x54f76e['id']},{'type':_0xc65a('0x10'),'app':_0xc65a('0x4'),'appdata':_0xc65a('0x1c')+_0x54f76e['id'],'context':_0x54f76e[_0xc65a('0x6')],'exten':_0x54f76e[_0xc65a('0x7')],'priority':_0x40e039++,'VoiceExtensionId':_0x54f76e['id']}];if(_0x54f76e[_0xc65a('0x1d')](_0xc65a('0x1e'))&&_0x54f76e['recordingFormat']!==_0xc65a('0x1f')){_0x4aae84[_0xc65a('0xd')]({'type':_0xc65a('0x10'),'app':_0xc65a('0x4'),'appdata':_0xc65a('0x20'),'context':_0x54f76e[_0xc65a('0x6')],'exten':_0x54f76e[_0xc65a('0x7')],'priority':_0x40e039++,'VoiceExtensionId':_0x54f76e['id']},{'type':_0xc65a('0x10'),'app':_0xc65a('0x4'),'appdata':_0xc65a('0x21')+_0x54f76e[_0xc65a('0x1e')]||_0xc65a('0x22'),'context':_0x54f76e[_0xc65a('0x6')],'exten':_0x54f76e[_0xc65a('0x7')],'priority':_0x40e039++,'VoiceExtensionId':_0x54f76e['id']});}return _0x4aae84;}function _0x1340db(_0x2c95af,_0x770f35){var _0x5ab435=[{'name':_0xc65a('0x23'),'param':0x0},{'name':_0xc65a('0x24'),'param':0x1},{'name':_0xc65a('0x25'),'param':0x2},{'name':_0xc65a('0x26'),'param':0x3}];var _0x141466={};var _0x2dbca4=_0x770f35[_0xc65a('0x27')](',');var _0x396ef5=[];for(var _0xa1e762=0x0;_0xa1e762<_0x5ab435[_0xc65a('0x28')];_0xa1e762++){switch(_0x5ab435[_0xa1e762]['name']){case _0xc65a('0x23'):_0x141466[_0xc65a('0x23')]=_0x2dbca4[_0x5ab435[_0xa1e762][_0xc65a('0x29')]][_0xc65a('0x27')]('/')[0x1];_0x141466['phone']=_0x2dbca4[_0x5ab435[_0xa1e762][_0xc65a('0x29')]][_0xc65a('0x27')]('/')[0x2];_0x141466[_0xc65a('0x2a')]=_0x141466[_0xc65a('0x2b')]?_0x141466[_0xc65a('0x2b')][_0xc65a('0x27')]('$')[0x0]:undefined;_0x141466[_0xc65a('0x2b')]=_0x2c95af['cutdigits']?(_0x141466[_0xc65a('0x2a')]||'')+_0xc65a('0x13')+_0x2c95af[_0xc65a('0x17')]+'}':(_0x141466[_0xc65a('0x2a')]||'')+_0xc65a('0x14');_0x396ef5[_0x5ab435[_0xa1e762]['param']]=[_0xc65a('0x2c'),_0x141466[_0xc65a('0x23')],_0x141466[_0xc65a('0x2b')]][_0xc65a('0x2d')]('/');break;case _0xc65a('0x25'):_0x141466[_0xc65a('0x25')]=_0x2dbca4[_0x5ab435[_0xa1e762][_0xc65a('0x29')]];if(_0x2c95af[_0xc65a('0x1e')]!==_0xc65a('0x1f')){if(_0x141466['options'][_0xc65a('0x2e')](_0xc65a('0x2f'))<0x0){_0x141466[_0xc65a('0x25')]+=_0xc65a('0x2f');}}else{_0x141466['options']=_0x141466[_0xc65a('0x25')][_0xc65a('0x30')](_0xc65a('0x2f'),'');}_0x396ef5[_0x5ab435[_0xa1e762][_0xc65a('0x29')]]=_0x141466[_0xc65a('0x25')];break;default:_0x396ef5[_0x5ab435[_0xa1e762][_0xc65a('0x29')]]=_0x2dbca4[_0x5ab435[_0xa1e762]['param']];}}return _0x396ef5['join'](',');}function _0x378973(_0x4ce800,_0x12a100,_0x5eef5e){return new Promise(function(_0x13adb2,_0x2df8a5){var _0x4db4ac=[];if(_[_0xc65a('0x31')](_0x12a100))return _0x13adb2(_0x4db4ac);_0x513bbe['Interval']['findAll']({'attributes':['id',_0xc65a('0x32'),_0xc65a('0x33')],'raw':!![]})[_0xc65a('0x34')](function(_0x40116d){for(var _0x950c56=0x0,_0x193af7=0x0;_0x950c56<_0x12a100[_0xc65a('0x28')];_0x950c56++,_0x193af7=0x0){var _0x24baeb=_0x12a100[_0x950c56];var _0x25992d=[];var _0x41696b=[];delete _0x24baeb['id'];if(_0x24baeb[_0xc65a('0x32')]!=='*,*,*,*'){_0x24baeb[_0xc65a('0x35')]=[_0x24baeb[_0xc65a('0x32')]];}else{_0x24baeb['intervals']=_0x24baeb[_0xc65a('0x33')]?_[_0xc65a('0x36')](_[_0xc65a('0x37')](_0x40116d,{'IntervalId':_0x24baeb[_0xc65a('0x33')]}),_0xc65a('0x32')):[];}_0x24baeb[_0xc65a('0x6')]=_0x4ce800[_0xc65a('0x6')];_0x24baeb[_0xc65a('0x7')]=_0x4ce800[_0xc65a('0x7')];if(_0x24baeb[_0xc65a('0x3')])_0x24baeb['type']=_0x24baeb[_0xc65a('0x3')][_0xc65a('0x38')]();if(_0x4ce800[_0xc65a('0x3')]==='outbound'){if(_0x24baeb[_0xc65a('0x1d')]('tag')&&_0x24baeb[_0xc65a('0x39')]&&_0x24baeb[_0xc65a('0x39')]!=='--'){_0x25992d['push']({'type':_0x24baeb[_0xc65a('0x3')][_0xc65a('0x38')](),'app':'Set','appdata':_0xc65a('0x3a')+_0x24baeb[_0xc65a('0x39')],'context':_0x4ce800['context'],'exten':_0x4ce800[_0xc65a('0x7')],'priority':_0x24baeb[_0xc65a('0x35')][_0xc65a('0x28')]+_0x5eef5e+_0x193af7++,'VoiceExtensionId':_0x4ce800['id']});}_0x25992d['push']({'type':_0x24baeb['type'][_0xc65a('0x38')](),'app':_0xc65a('0x15'),'appdata':_0xc65a('0x3b')+(_0x24baeb[_0xc65a('0x3c')]?_0xc65a('0x3d')+_0x24baeb[_0xc65a('0x3c')]+')':_0xc65a('0x3e')),'context':_0x4ce800['context'],'exten':_0x4ce800[_0xc65a('0x7')],'priority':_0x24baeb[_0xc65a('0x35')][_0xc65a('0x28')]+_0x5eef5e+_0x193af7++,'VoiceExtensionId':_0x4ce800['id']});}else{if(_0x24baeb[_0xc65a('0x1d')](_0xc65a('0x3f'))){if(['queue',_0xc65a('0x40')][_0xc65a('0x41')](_0x24baeb['app'][_0xc65a('0x38')]())&&_0x24baeb[_0xc65a('0x42')]!=='custom'){if(_0x24baeb[_0xc65a('0x3f')]){_0x25992d['push']({'type':_0x24baeb[_0xc65a('0x3')][_0xc65a('0x38')](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x4ce800[_0xc65a('0x6')],'exten':_0x4ce800[_0xc65a('0x7')],'priority':_0x24baeb[_0xc65a('0x35')]['length']+_0x5eef5e+_0x193af7++,'VoiceExtensionId':_0x4ce800['id']});_0x25992d['push']({'type':_0x24baeb['type'][_0xc65a('0x38')](),'app':_0xc65a('0x4'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x4ce800[_0xc65a('0x6')],'exten':_0x4ce800[_0xc65a('0x7')],'priority':_0x24baeb[_0xc65a('0x35')]['length']+_0x5eef5e+_0x193af7++,'VoiceExtensionId':_0x4ce800['id']});}else{_0x25992d[_0xc65a('0xd')]({'type':_0x24baeb[_0xc65a('0x3')][_0xc65a('0x38')](),'app':_0xc65a('0x15'),'appdata':_0xc65a('0x43'),'context':_0x4ce800[_0xc65a('0x6')],'exten':_0x4ce800['exten'],'priority':_0x24baeb['intervals'][_0xc65a('0x28')]+_0x5eef5e+_0x193af7++,'VoiceExtensionId':_0x4ce800['id']});_0x25992d[_0xc65a('0xd')]({'type':_0x24baeb['type'][_0xc65a('0x38')](),'app':_0xc65a('0x4'),'appdata':_0xc65a('0x44'),'context':_0x4ce800['context'],'exten':_0x4ce800[_0xc65a('0x7')],'priority':_0x24baeb[_0xc65a('0x35')][_0xc65a('0x28')]+_0x5eef5e+_0x193af7++,'VoiceExtensionId':_0x4ce800['id']});}}}}for(var _0x287c91=0x0;_0x287c91<_0x24baeb[_0xc65a('0x35')][_0xc65a('0x28')];_0x287c91++){var _0x56a19e=_0x5eef5e+_0x24baeb[_0xc65a('0x35')][_0xc65a('0x28')];var _0x5db8c5=_0x287c91===_0x24baeb[_0xc65a('0x35')][_0xc65a('0x28')]-0x1?_0x5eef5e+_0x25992d[_0xc65a('0x28')]+_0x41696b[_0xc65a('0x28')]+0x2:_0x5eef5e+_0x287c91+0x1;_0x25992d[_0xc65a('0x45')](_0x287c91,0x0,{'type':_0x4ce800['type'],'app':_0xc65a('0x46'),'appdata':_0x24baeb['intervals'][_0x287c91]+'?'+_0x4ce800[_0xc65a('0x6')]+',${EXTEN},'+_0x56a19e+':'+_0x4ce800[_0xc65a('0x6')]+_0xc65a('0x47')+_0x5db8c5,'exten':_0x4ce800[_0xc65a('0x7')],'context':_0x4ce800['context'],'priority':_0x5eef5e+_0x287c91,'VoiceExtensionId':_0x4ce800['id']});}if(_0x24baeb[_0xc65a('0x42')]==='outboundDial')_0x24baeb[_0xc65a('0x48')]=_0x1340db(_0x4ce800,_0x24baeb[_0xc65a('0x48')]);_0x24baeb[_0xc65a('0x49')]=_0x25992d[_0xc65a('0x28')]?_[_0xc65a('0x4a')](_0x25992d)[_0xc65a('0x49')]+0x1:_0x5eef5e;_0x4db4ac=_[_0xc65a('0x4b')](_0x4db4ac,_0x25992d,[_0x24baeb],_0x41696b);_0x5eef5e=_['last'](_0x4db4ac)[_0xc65a('0x49')]+0x1;}return _0x13adb2(_0x4db4ac);})[_0xc65a('0x4c')](function(_0x23b73d){_0x2df8a5(_0x23b73d);});});}return _0x23bc6a[_0xc65a('0x4d')](_0xc65a('0x4e'),attributes,{'tableName':_0xc65a('0x4f'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x12d4df){var _0xd29bef=this['get']({'plain':!![]});var _0x4f377f=_0xd29bef['type']===_0xc65a('0x10')?_0x1b6821(_0xd29bef):_0x4ac309(_0xd29bef);return _0x378973(_0xd29bef,_0x12d4df,_['last'](_0x4f377f)['priority']+0x1)[_0xc65a('0x34')](function(_0x45c1b7){var _0x45356b=_[_0xc65a('0x4b')](_0x4f377f,_0x45c1b7);_0x45356b['push']({'type':_0xd29bef[_0xc65a('0x3')],'app':_0xc65a('0x50'),'exten':_0xd29bef['exten'],'context':_0xd29bef[_0xc65a('0x6')],'priority':_[_0xc65a('0x4a')](_0x45356b)[_0xc65a('0x49')]+0x1,'VoiceExtensionId':_0xd29bef['id']});return _0x45356b;});}}});};
\ No newline at end of file
index 92091c6..16bf52c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c94=['../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','request','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','limit','include','map','attributes','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x28f5cf,_0x299353){var _0x471342=function(_0x7bc180){while(--_0x7bc180){_0x28f5cf['push'](_0x28f5cf['shift']());}};_0x471342(++_0x299353);}(_0x3c94,0xcd));var _0x43c9=function(_0x4da6ba,_0x554ea7){_0x4da6ba=_0x4da6ba-0x0;var _0x4b8317=_0x3c94[_0x4da6ba];return _0x4b8317;};'use strict';var _=require(_0x43c9('0x0'));var util=require(_0x43c9('0x1'));var moment=require(_0x43c9('0x2'));var BPromise=require(_0x43c9('0x3'));var rs=require(_0x43c9('0x4'));var fs=require('fs');var Redis=require(_0x43c9('0x5'));var db=require(_0x43c9('0x6'))['db'];var utils=require(_0x43c9('0x7'));var logger=require(_0x43c9('0x8'))(_0x43c9('0x9'));var config=require(_0x43c9('0xa'));var jayson=require(_0x43c9('0xb'));var client=jayson['client'][_0x43c9('0xc')]({'port':0x232a});config[_0x43c9('0xd')]=_[_0x43c9('0xe')](config[_0x43c9('0xd')],{'host':_0x43c9('0xf'),'port':0x18eb});var socket=require(_0x43c9('0x10'))(new Redis(config[_0x43c9('0xd')]));require(_0x43c9('0x11'))[_0x43c9('0x12')](socket);function respondWithRpcPromise(_0x4b113f,_0x31d997,_0x18a5c9){return new BPromise(function(_0x34bb65,_0x3b21f5){return client[_0x43c9('0x13')](_0x4b113f,_0x18a5c9)[_0x43c9('0x14')](function(_0x690bde){logger[_0x43c9('0x15')](_0x43c9('0x16'),_0x31d997,_0x43c9('0x17'));logger[_0x43c9('0x18')](_0x43c9('0x19'),_0x31d997,_0x43c9('0x17'),JSON[_0x43c9('0x1a')](_0x690bde));if(_0x690bde[_0x43c9('0x1b')]){if(_0x690bde[_0x43c9('0x1b')][_0x43c9('0x1c')]===0x1f4){logger['error'](_0x43c9('0x16'),_0x31d997,_0x690bde[_0x43c9('0x1b')][_0x43c9('0x1d')]);return _0x3b21f5(_0x690bde[_0x43c9('0x1b')][_0x43c9('0x1d')]);}logger['error']('VoiceExtension,\x20%s,\x20%s',_0x31d997,_0x690bde[_0x43c9('0x1b')][_0x43c9('0x1d')]);return _0x34bb65(_0x690bde[_0x43c9('0x1b')][_0x43c9('0x1d')]);}else{logger['info'](_0x43c9('0x16'),_0x31d997,_0x43c9('0x17'));_0x34bb65(_0x690bde[_0x43c9('0x1e')][_0x43c9('0x1d')]);}})[_0x43c9('0x1f')](function(_0x2ab239){logger[_0x43c9('0x1b')](_0x43c9('0x16'),_0x31d997,_0x2ab239);_0x3b21f5(_0x2ab239);});});}exports[_0x43c9('0x20')]=function(_0x2a7b78){var _0x3f841a=this;return new Promise(function(_0x4847b2,_0x39c6f1){return db[_0x43c9('0x21')][_0x43c9('0x22')]({'raw':_0x2a7b78['options']?_0x2a7b78[_0x43c9('0x23')][_0x43c9('0x24')]===undefined?!![]:![]:!![],'where':_0x2a7b78[_0x43c9('0x23')]?_0x2a7b78['options'][_0x43c9('0x25')]||null:null,'attributes':_0x2a7b78[_0x43c9('0x23')]?_0x2a7b78[_0x43c9('0x23')]['attributes']||null:null,'limit':_0x2a7b78['options']?_0x2a7b78[_0x43c9('0x23')][_0x43c9('0x26')]||null:null,'include':_0x2a7b78[_0x43c9('0x23')]?_0x2a7b78['options'][_0x43c9('0x27')]?_[_0x43c9('0x28')](_0x2a7b78[_0x43c9('0x23')][_0x43c9('0x27')],function(_0x2c69af){return{'model':db[_0x2c69af['model']],'as':_0x2c69af['as'],'attributes':_0x2c69af[_0x43c9('0x29')],'include':_0x2c69af[_0x43c9('0x27')]?_[_0x43c9('0x28')](_0x2c69af[_0x43c9('0x27')],function(_0x4633cc){return{'model':db[_0x4633cc[_0x43c9('0x2a')]],'as':_0x4633cc['as'],'attributes':_0x4633cc[_0x43c9('0x29')],'include':_0x4633cc[_0x43c9('0x27')]?_[_0x43c9('0x28')](_0x4633cc[_0x43c9('0x27')],function(_0x4eb970){return{'model':db[_0x4eb970[_0x43c9('0x2a')]],'as':_0x4eb970['as'],'attributes':_0x4eb970[_0x43c9('0x29')]};}):[]};}):[]};}):[]:[]})[_0x43c9('0x14')](function(_0x519e2c){logger[_0x43c9('0x15')](_0x43c9('0x20'),_0x2a7b78);logger['debug'](_0x43c9('0x20'),_0x2a7b78,JSON['stringify'](_0x519e2c));_0x4847b2(_0x519e2c);})[_0x43c9('0x1f')](function(_0x33ee11){logger[_0x43c9('0x1b')](_0x43c9('0x20'),_0x33ee11['message'],_0x2a7b78);_0x39c6f1(_0x3f841a[_0x43c9('0x1b')](0x1f4,_0x33ee11[_0x43c9('0x1d')]));});});};
\ No newline at end of file
+var _0xab36=['socket.io-emitter','./voiceExtension.socket','request','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','attributes','limit','include','map','model','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x34a4d5,_0xc73d0c){var _0x3cc148=function(_0x497a9c){while(--_0x497a9c){_0x34a4d5['push'](_0x34a4d5['shift']());}};_0x3cc148(++_0xc73d0c);}(_0xab36,0x1df));var _0x6ab3=function(_0x586b93,_0x31e45e){_0x586b93=_0x586b93-0x0;var _0x32d888=_0xab36[_0x586b93];return _0x32d888;};'use strict';var _=require(_0x6ab3('0x0'));var util=require(_0x6ab3('0x1'));var moment=require(_0x6ab3('0x2'));var BPromise=require(_0x6ab3('0x3'));var rs=require(_0x6ab3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6ab3('0x5'))['db'];var utils=require(_0x6ab3('0x6'));var logger=require(_0x6ab3('0x7'))('rpc');var config=require(_0x6ab3('0x8'));var jayson=require(_0x6ab3('0x9'));var client=jayson[_0x6ab3('0xa')][_0x6ab3('0xb')]({'port':0x232a});config[_0x6ab3('0xc')]=_[_0x6ab3('0xd')](config['redis'],{'host':_0x6ab3('0xe'),'port':0x18eb});var socket=require(_0x6ab3('0xf'))(new Redis(config['redis']));require(_0x6ab3('0x10'))['register'](socket);function respondWithRpcPromise(_0x3429f2,_0xecf064,_0x50c276){return new BPromise(function(_0x386ac9,_0x16f357){return client[_0x6ab3('0x11')](_0x3429f2,_0x50c276)['then'](function(_0x1dca3a){logger['info'](_0x6ab3('0x12'),_0xecf064,_0x6ab3('0x13'));logger[_0x6ab3('0x14')](_0x6ab3('0x15'),_0xecf064,_0x6ab3('0x13'),JSON['stringify'](_0x1dca3a));if(_0x1dca3a[_0x6ab3('0x16')]){if(_0x1dca3a[_0x6ab3('0x16')][_0x6ab3('0x17')]===0x1f4){logger[_0x6ab3('0x16')](_0x6ab3('0x12'),_0xecf064,_0x1dca3a['error'][_0x6ab3('0x18')]);return _0x16f357(_0x1dca3a['error'][_0x6ab3('0x18')]);}logger[_0x6ab3('0x16')](_0x6ab3('0x12'),_0xecf064,_0x1dca3a[_0x6ab3('0x16')][_0x6ab3('0x18')]);return _0x386ac9(_0x1dca3a[_0x6ab3('0x16')][_0x6ab3('0x18')]);}else{logger[_0x6ab3('0x19')](_0x6ab3('0x12'),_0xecf064,'request\x20sent');_0x386ac9(_0x1dca3a[_0x6ab3('0x1a')]['message']);}})[_0x6ab3('0x1b')](function(_0x11ec87){logger[_0x6ab3('0x16')](_0x6ab3('0x12'),_0xecf064,_0x11ec87);_0x16f357(_0x11ec87);});});}exports[_0x6ab3('0x1c')]=function(_0xa6850e){var _0x46ace6=this;return new Promise(function(_0x4ae822,_0x253bb2){return db[_0x6ab3('0x1d')][_0x6ab3('0x1e')]({'raw':_0xa6850e['options']?_0xa6850e[_0x6ab3('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0xa6850e['options']?_0xa6850e[_0x6ab3('0x1f')]['where']||null:null,'attributes':_0xa6850e[_0x6ab3('0x1f')]?_0xa6850e[_0x6ab3('0x1f')][_0x6ab3('0x20')]||null:null,'limit':_0xa6850e[_0x6ab3('0x1f')]?_0xa6850e[_0x6ab3('0x1f')][_0x6ab3('0x21')]||null:null,'include':_0xa6850e[_0x6ab3('0x1f')]?_0xa6850e[_0x6ab3('0x1f')][_0x6ab3('0x22')]?_[_0x6ab3('0x23')](_0xa6850e[_0x6ab3('0x1f')][_0x6ab3('0x22')],function(_0x10d362){return{'model':db[_0x10d362[_0x6ab3('0x24')]],'as':_0x10d362['as'],'attributes':_0x10d362['attributes'],'include':_0x10d362[_0x6ab3('0x22')]?_['map'](_0x10d362[_0x6ab3('0x22')],function(_0x443065){return{'model':db[_0x443065[_0x6ab3('0x24')]],'as':_0x443065['as'],'attributes':_0x443065[_0x6ab3('0x20')],'include':_0x443065[_0x6ab3('0x22')]?_[_0x6ab3('0x23')](_0x443065['include'],function(_0x5b5647){return{'model':db[_0x5b5647[_0x6ab3('0x24')]],'as':_0x5b5647['as'],'attributes':_0x5b5647['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x401589){logger[_0x6ab3('0x19')](_0x6ab3('0x1c'),_0xa6850e);logger[_0x6ab3('0x14')](_0x6ab3('0x1c'),_0xa6850e,JSON[_0x6ab3('0x25')](_0x401589));_0x4ae822(_0x401589);})[_0x6ab3('0x1b')](function(_0x376e4f){logger['error'](_0x6ab3('0x1c'),_0x376e4f[_0x6ab3('0x18')],_0xa6850e);_0x253bb2(_0x46ace6[_0x6ab3('0x16')](0x1f4,_0x376e4f[_0x6ab3('0x18')]));});});};
\ No newline at end of file
index dce2caf..9df8a58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['save','remove','update','emit','removeListener','voiceExtension:'];(function(_0x18f669,_0x4fc0d3){var _0x592fe9=function(_0x15e19a){while(--_0x15e19a){_0x18f669['push'](_0x18f669['shift']());}};_0x592fe9(++_0x4fc0d3);}(_0x1261,0x144));var _0x1126=function(_0x19f183,_0x540981){_0x19f183=_0x19f183-0x0;var _0x317275=_0x1261[_0x19f183];return _0x317275;};'use strict';var VoiceExtensionEvents=require('./voiceExtension.events');var events=[_0x1126('0x0'),_0x1126('0x1'),_0x1126('0x2')];function createListener(_0x331a2c,_0x39b786){return function(_0x350f3a){_0x39b786[_0x1126('0x3')](_0x331a2c,_0x350f3a);};}function removeListener(_0x4245ca,_0x21a480){return function(){VoiceExtensionEvents[_0x1126('0x4')](_0x4245ca,_0x21a480);};}exports['register']=function(_0x5c68c8){for(var _0x40ba58=0x0,_0x907180=events['length'];_0x40ba58<_0x907180;_0x40ba58++){var _0x17e5f0=events[_0x40ba58];var _0x28772d=createListener(_0x1126('0x5')+_0x17e5f0,_0x5c68c8);VoiceExtensionEvents['on'](_0x17e5f0,_0x28772d);}};
\ No newline at end of file
+var _0x7a54=['remove','emit','removeListener','register','length','voiceExtension:','./voiceExtension.events','save'];(function(_0x535392,_0xda6869){var _0x15d65f=function(_0x43d515){while(--_0x43d515){_0x535392['push'](_0x535392['shift']());}};_0x15d65f(++_0xda6869);}(_0x7a54,0x106));var _0x47a5=function(_0x2e4eca,_0x296c6d){_0x2e4eca=_0x2e4eca-0x0;var _0x5dd597=_0x7a54[_0x2e4eca];return _0x5dd597;};'use strict';var VoiceExtensionEvents=require(_0x47a5('0x0'));var events=[_0x47a5('0x1'),_0x47a5('0x2'),'update'];function createListener(_0x1d33e,_0x4086cd){return function(_0x4880bf){_0x4086cd[_0x47a5('0x3')](_0x1d33e,_0x4880bf);};}function removeListener(_0x11bf85,_0x2a1a7e){return function(){VoiceExtensionEvents[_0x47a5('0x4')](_0x11bf85,_0x2a1a7e);};}exports[_0x47a5('0x5')]=function(_0x545a97){for(var _0x3d5629=0x0,_0x59199c=events[_0x47a5('0x6')];_0x3d5629<_0x59199c;_0x3d5629++){var _0x30e405=events[_0x3d5629];var _0x506eda=createListener(_0x47a5('0x7')+_0x30e405,_0x545a97);VoiceExtensionEvents['on'](_0x30e405,_0x506eda);}};
\ No newline at end of file
index a4a6e86..7cf10d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda8=['show','/:id/messages','create','put','/:id','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','index'];(function(_0x5350f8,_0x55c29b){var _0x5a4a65=function(_0x5acb92){while(--_0x5acb92){_0x5350f8['push'](_0x5350f8['shift']());}};_0x5a4a65(++_0x55c29b);}(_0xeda8,0x104));var _0x8eda=function(_0x4612d5,_0x86a8a8){_0x4612d5=_0x4612d5-0x0;var _0x841ca0=_0xeda8[_0x4612d5];return _0x841ca0;};'use strict';var multer=require(_0x8eda('0x0'));var util=require(_0x8eda('0x1'));var path=require('path');var timeout=require(_0x8eda('0x2'));var express=require(_0x8eda('0x3'));var router=express[_0x8eda('0x4')]();var fs_extra=require(_0x8eda('0x5'));var auth=require(_0x8eda('0x6'));var interaction=require(_0x8eda('0x7'));var config=require(_0x8eda('0x8'));var controller=require(_0x8eda('0x9'));router[_0x8eda('0xa')]('/',auth[_0x8eda('0xb')](),controller[_0x8eda('0xc')]);router[_0x8eda('0xa')]('/:id',auth[_0x8eda('0xb')](),controller[_0x8eda('0xd')]);router[_0x8eda('0xa')](_0x8eda('0xe'),auth['isAuthenticated'](),controller['getMessages']);router['post']('/',auth['isAuthenticated'](),controller[_0x8eda('0xf')]);router[_0x8eda('0x10')](_0x8eda('0x11'),auth['isAuthenticated'](),controller[_0x8eda('0x12')]);router['delete'](_0x8eda('0x11'),auth[_0x8eda('0xb')](),controller[_0x8eda('0x13')]);module[_0x8eda('0x14')]=router;
\ No newline at end of file
+var _0x4819=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','isAuthenticated','/:id','show','get','/:id/messages','getMessages','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router'];(function(_0x4173fc,_0x1ed88b){var _0x5d9796=function(_0x285c5e){while(--_0x285c5e){_0x4173fc['push'](_0x4173fc['shift']());}};_0x5d9796(++_0x1ed88b);}(_0x4819,0xcd));var _0x9481=function(_0x30e675,_0x4eebc7){_0x30e675=_0x30e675-0x0;var _0x258b27=_0x4819[_0x30e675];return _0x258b27;};'use strict';var multer=require('multer');var util=require(_0x9481('0x0'));var path=require(_0x9481('0x1'));var timeout=require(_0x9481('0x2'));var express=require(_0x9481('0x3'));var router=express[_0x9481('0x4')]();var fs_extra=require(_0x9481('0x5'));var auth=require(_0x9481('0x6'));var interaction=require(_0x9481('0x7'));var config=require(_0x9481('0x8'));var controller=require(_0x9481('0x9'));router['get']('/',auth[_0x9481('0xa')](),controller['index']);router['get'](_0x9481('0xb'),auth[_0x9481('0xa')](),controller[_0x9481('0xc')]);router[_0x9481('0xd')](_0x9481('0xe'),auth['isAuthenticated'](),controller[_0x9481('0xf')]);router['post']('/',auth[_0x9481('0xa')](),controller['create']);router[_0x9481('0x10')](_0x9481('0xb'),auth[_0x9481('0xa')](),controller[_0x9481('0x11')]);router[_0x9481('0x12')](_0x9481('0xb'),auth[_0x9481('0xa')](),controller[_0x9481('0x13')]);module[_0x9481('0x14')]=router;
\ No newline at end of file
index afae7e9..441261d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d1c=['trim','yes','ENUM','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','\x20-\x20','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','string'];(function(_0x313927,_0x2b3a6d){var _0x545b28=function(_0x1be96e){while(--_0x1be96e){_0x313927['push'](_0x313927['shift']());}};_0x545b28(++_0x2b3a6d);}(_0x2d1c,0x188));var _0xc2d1=function(_0x4bda6e,_0x247877){_0x4bda6e=_0x4bda6e-0x0;var _0xb08cc9=_0x2d1c[_0x4bda6e];return _0xb08cc9;};'use strict';var Sequelize=require(_0xc2d1('0x0'));module[_0xc2d1('0x1')]={'customer_id':{'type':Sequelize[_0xc2d1('0x2')]},'context':{'type':Sequelize['STRING'],'defaultValue':_0xc2d1('0x3'),'unique':_0xc2d1('0x4')},'mailbox':{'type':Sequelize[_0xc2d1('0x2')],'defaultValue':'','allowNull':![],'unique':_0xc2d1('0x4')},'password':{'type':Sequelize[_0xc2d1('0x2')]},'fullname':{'type':Sequelize[_0xc2d1('0x2')]},'email':{'type':Sequelize[_0xc2d1('0x2')],'validate':{'isEmail':!![]},'set':function(_0x8e2b38){this[_0xc2d1('0x5')](_0xc2d1('0x6'),typeof _0x8e2b38===_0xc2d1('0x7')&&_0x8e2b38['trim']()?_0x8e2b38[_0xc2d1('0x8')]():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize[_0xc2d1('0x2')],'defaultValue':'central'},'attach':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0xc2d1('0x9'),'allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0xc2d1('0x9'),'no'),'defaultValue':_0xc2d1('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0xc2d1('0x2')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize[_0xc2d1('0xa')](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xc2d1('0xa')](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM'](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM'](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xc2d1('0xa')](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM'](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xc2d1('0xa')](_0xc2d1('0x9'),'no'),'defaultValue':_0xc2d1('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0xc2d1('0xa')](_0xc2d1('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xc2d1('0xa')](_0xc2d1('0x9'),'no'),'defaultValue':_0xc2d1('0x9'),'allowNull':![]},'stamp':{'type':_0xc2d1('0xb')},'emailsubject':{'type':Sequelize[_0xc2d1('0x2')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0xc2d1('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xc2d1('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xc2d1('0xd')],'get':function(){return this[_0xc2d1('0xe')]('fullname')+_0xc2d1('0xf')+this['getDataValue']('mailbox');}}};
\ No newline at end of file
+var _0x48a3=['yes','ENUM','TIMESTAMP','INTEGER','getDataValue','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','trim','central'];(function(_0x28e9cc,_0xd95822){var _0x5c385b=function(_0x1f865b){while(--_0x1f865b){_0x28e9cc['push'](_0x28e9cc['shift']());}};_0x5c385b(++_0xd95822);}(_0x48a3,0x7e));var _0x348a=function(_0x1a4f35,_0x59f078){_0x1a4f35=_0x1a4f35-0x0;var _0x210f86=_0x48a3[_0x1a4f35];return _0x210f86;};'use strict';var Sequelize=require(_0x348a('0x0'));module[_0x348a('0x1')]={'customer_id':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x348a('0x2')],'defaultValue':_0x348a('0x3'),'unique':_0x348a('0x4')},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0x348a('0x2')]},'fullname':{'type':Sequelize[_0x348a('0x2')]},'email':{'type':Sequelize[_0x348a('0x2')],'validate':{'isEmail':!![]},'set':function(_0x47cfab){this[_0x348a('0x5')](_0x348a('0x6'),typeof _0x47cfab==='string'&&_0x47cfab['trim']()?_0x47cfab[_0x348a('0x7')]():null);}},'pager':{'type':Sequelize[_0x348a('0x2')]},'tz':{'type':Sequelize['STRING'],'defaultValue':_0x348a('0x8')},'attach':{'type':Sequelize['ENUM'](_0x348a('0x9'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x348a('0xa')](_0x348a('0x9'),'no'),'defaultValue':_0x348a('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0x348a('0x2')]},'callback':{'type':Sequelize[_0x348a('0x2')]},'review':{'type':Sequelize[_0x348a('0xa')](_0x348a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x348a('0xa')](_0x348a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x348a('0xa')](_0x348a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x348a('0xa')](_0x348a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x348a('0xa')](_0x348a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x348a('0xa')](_0x348a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x348a('0xa')](_0x348a('0x9'),'no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0x348a('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x348a('0xa')](_0x348a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x348a('0x9'),'allowNull':![]},'stamp':{'type':_0x348a('0xb')},'emailsubject':{'type':Sequelize[_0x348a('0x2')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x348a('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue']('fullname')+'\x20-\x20'+this[_0x348a('0xd')](_0x348a('0xe'));}}};
\ No newline at end of file
index 2717978..7f74d3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','save','update','then','get','Voicemails','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','includeAll','VoiceMail','findAll','catch','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy','getMessages','findOne','VoiceMailMessage','mailbox','findAndCountAll','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x1f3c55,_0x26adcb){var _0x75368a=function(_0x1054e9){while(--_0x1054e9){_0x1f3c55['push'](_0x1f3c55['shift']());}};_0x75368a(++_0x26adcb);}(_0xe706,0xa3));var _0x6e70=function(_0x133fc0,_0x1edda8){_0x133fc0=_0x133fc0-0x0;var _0x4ce619=_0xe706[_0x133fc0];return _0x4ce619;};'use strict';var emlformat=require(_0x6e70('0x0'));var rimraf=require(_0x6e70('0x1'));var zipdir=require(_0x6e70('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e70('0x3'));var moment=require(_0x6e70('0x4'));var BPromise=require(_0x6e70('0x5'));var Mustache=require(_0x6e70('0x6'));var util=require(_0x6e70('0x7'));var path=require(_0x6e70('0x8'));var sox=require(_0x6e70('0x9'));var csv=require(_0x6e70('0xa'));var ejs=require(_0x6e70('0xb'));var fs=require('fs');var fs_extra=require(_0x6e70('0xc'));var _=require(_0x6e70('0xd'));var squel=require(_0x6e70('0xe'));var crypto=require(_0x6e70('0xf'));var jsforce=require(_0x6e70('0x10'));var deskjs=require(_0x6e70('0x11'));var toCsv=require(_0x6e70('0xa'));var querystring=require(_0x6e70('0x12'));var Papa=require(_0x6e70('0x13'));var Redis=require(_0x6e70('0x14'));var authService=require(_0x6e70('0x15'));var qs=require(_0x6e70('0x16'));var as=require(_0x6e70('0x17'));var hardwareService=require(_0x6e70('0x18'));var logger=require(_0x6e70('0x19'))('api');var utils=require('../../config/utils');var config=require(_0x6e70('0x1a'));var licenseUtil=require(_0x6e70('0x1b'));var db=require(_0x6e70('0x1c'))['db'];function respondWithStatusCode(_0x27dd9b,_0x3b38f3){_0x3b38f3=_0x3b38f3||0xcc;return function(_0x310eb7){if(_0x310eb7){return _0x27dd9b[_0x6e70('0x1d')](_0x3b38f3);}return _0x27dd9b[_0x6e70('0x1e')](_0x3b38f3)['end']();};}function respondWithResult(_0x52737e,_0x48bc72){_0x48bc72=_0x48bc72||0xc8;return function(_0x257e81){if(_0x257e81){return _0x52737e['status'](_0x48bc72)['json'](_0x257e81);}};}function respondWithFilteredResult(_0x304716,_0x22c50c){return function(_0x5d9263){if(_0x5d9263){var _0x24f3ac=typeof _0x22c50c['offset']===_0x6e70('0x1f')&&typeof _0x22c50c[_0x6e70('0x20')]==='undefined';var _0x49029f=_0x5d9263[_0x6e70('0x21')];var _0x5ea7a5=_0x24f3ac?0x0:_0x22c50c[_0x6e70('0x22')];var _0x173afe=_0x24f3ac?_0x5d9263['count']:_0x22c50c['offset']+_0x22c50c[_0x6e70('0x20')];var _0x208e21;if(_0x173afe>=_0x49029f){_0x173afe=_0x49029f;_0x208e21=0xc8;}else{_0x208e21=0xce;}_0x304716[_0x6e70('0x1e')](_0x208e21);return _0x304716[_0x6e70('0x23')](_0x6e70('0x24'),_0x5ea7a5+'-'+_0x173afe+'/'+_0x49029f)[_0x6e70('0x25')](_0x5d9263);}return null;};}function patchUpdates(_0x1b2453){return function(_0x44a49f){try{jsonpatch[_0x6e70('0x26')](_0x44a49f,_0x1b2453,!![]);}catch(_0xb29a2a){return BPromise['reject'](_0xb29a2a);}return _0x44a49f[_0x6e70('0x27')]();};}function saveUpdates(_0x344b65,_0x27b294){return function(_0x502b2d){if(_0x502b2d){return _0x502b2d[_0x6e70('0x28')](_0x344b65)[_0x6e70('0x29')](function(_0x3337a6){return _0x3337a6;});}return null;};}function removeEntity(_0x50da2c,_0x10fc91){return function(_0x538b9c){if(_0x538b9c){return _0x538b9c['destroy']()['then'](function(){var _0x41e352=_0x538b9c[_0x6e70('0x2a')]({'plain':!![]});var _0x51d292=_0x6e70('0x2b');return db[_0x6e70('0x2c')]['destroy']({'where':{'type':_0x51d292,'resourceId':_0x41e352['id']}})[_0x6e70('0x29')](function(){return _0x538b9c;});})[_0x6e70('0x29')](function(){_0x50da2c[_0x6e70('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x54a5fe,_0x2c4d37){return function(_0x3af17f){if(!_0x3af17f){_0x54a5fe[_0x6e70('0x1d')](0x194);}return _0x3af17f;};}function handleError(_0x114344,_0x43fee0){_0x43fee0=_0x43fee0||0x1f4;return function(_0x5d772a){logger[_0x6e70('0x2d')](_0x5d772a[_0x6e70('0x2e')]);if(_0x5d772a[_0x6e70('0x2f')]){delete _0x5d772a[_0x6e70('0x2f')];}_0x114344[_0x6e70('0x1e')](_0x43fee0)[_0x6e70('0x30')](_0x5d772a);};}exports[_0x6e70('0x31')]=function(_0x24114a,_0x3a0821){var _0x3a5d30={},_0x4b1229={},_0x1b27d8={'count':0x0,'rows':[]};var _0x50d60b=_[_0x6e70('0x32')](db['VoiceMail'][_0x6e70('0x33')],function(_0x2722e8){return{'name':_0x2722e8[_0x6e70('0x34')],'type':_0x2722e8['type'][_0x6e70('0x35')]};});_0x4b1229[_0x6e70('0x36')]=_['map'](_0x50d60b,_0x6e70('0x2f'));_0x4b1229[_0x6e70('0x37')]=_['keys'](_0x24114a[_0x6e70('0x37')]);_0x4b1229[_0x6e70('0x38')]=_[_0x6e70('0x39')](_0x4b1229[_0x6e70('0x36')],_0x4b1229[_0x6e70('0x37')]);_0x3a5d30[_0x6e70('0x3a')]=_[_0x6e70('0x39')](_0x4b1229[_0x6e70('0x36')],qs[_0x6e70('0x3b')](_0x24114a[_0x6e70('0x37')]['fields']));_0x3a5d30[_0x6e70('0x3a')]=_0x3a5d30['attributes'][_0x6e70('0x3c')]?_0x3a5d30[_0x6e70('0x3a')]:_0x4b1229[_0x6e70('0x36')];if(!_0x24114a[_0x6e70('0x37')][_0x6e70('0x3d')](_0x6e70('0x3e'))){_0x3a5d30[_0x6e70('0x20')]=qs[_0x6e70('0x20')](_0x24114a[_0x6e70('0x37')][_0x6e70('0x20')]);_0x3a5d30[_0x6e70('0x22')]=qs[_0x6e70('0x22')](_0x24114a[_0x6e70('0x37')]['offset']);}_0x3a5d30['order']=qs['sort'](_0x24114a[_0x6e70('0x37')][_0x6e70('0x3f')]);_0x3a5d30[_0x6e70('0x40')]=qs[_0x6e70('0x38')](_[_0x6e70('0x41')](_0x24114a[_0x6e70('0x37')],_0x4b1229['filters']),_0x50d60b);if(_0x24114a[_0x6e70('0x37')][_0x6e70('0x42')]){_0x3a5d30[_0x6e70('0x40')]=_[_0x6e70('0x43')](_0x3a5d30[_0x6e70('0x40')],{'$or':_[_0x6e70('0x32')](_0x50d60b,function(_0x246e61){if(_0x246e61[_0x6e70('0x44')]!=='VIRTUAL'){var _0x2c0bd1={};_0x2c0bd1[_0x246e61[_0x6e70('0x2f')]]={'$like':'%'+_0x24114a[_0x6e70('0x37')][_0x6e70('0x42')]+'%'};return _0x2c0bd1;}})});}_0x3a5d30=_[_0x6e70('0x43')]({},_0x3a5d30,_0x24114a[_0x6e70('0x45')]);var _0x21b0e7={'where':_0x3a5d30['where']};return db['VoiceMail']['count'](_0x21b0e7)[_0x6e70('0x29')](function(_0x2b63cc){_0x1b27d8[_0x6e70('0x21')]=_0x2b63cc;if(_0x24114a[_0x6e70('0x37')][_0x6e70('0x46')]){_0x3a5d30['include']=[{'all':!![]}];}return db[_0x6e70('0x47')][_0x6e70('0x48')](_0x3a5d30);})[_0x6e70('0x29')](function(_0x52b197){_0x1b27d8['rows']=_0x52b197;return _0x1b27d8;})['then'](respondWithFilteredResult(_0x3a0821,_0x3a5d30))[_0x6e70('0x49')](handleError(_0x3a0821,null));};exports['show']=function(_0x42f49a,_0x39913a){var _0x3fed21={'raw':!![],'where':{'id':_0x42f49a['params']['id']}},_0x75a90d={};_0x75a90d[_0x6e70('0x36')]=_['keys'](db[_0x6e70('0x47')][_0x6e70('0x33')]);_0x75a90d[_0x6e70('0x37')]=_[_0x6e70('0x4a')](_0x42f49a['query']);_0x75a90d[_0x6e70('0x38')]=_[_0x6e70('0x39')](_0x75a90d[_0x6e70('0x36')],_0x75a90d[_0x6e70('0x37')]);_0x3fed21[_0x6e70('0x3a')]=_[_0x6e70('0x39')](_0x75a90d[_0x6e70('0x36')],qs['fields'](_0x42f49a[_0x6e70('0x37')][_0x6e70('0x3b')]));_0x3fed21[_0x6e70('0x3a')]=_0x3fed21[_0x6e70('0x3a')][_0x6e70('0x3c')]?_0x3fed21[_0x6e70('0x3a')]:_0x75a90d[_0x6e70('0x36')];if(_0x42f49a['query'][_0x6e70('0x46')]){_0x3fed21['include']=[{'all':!![]}];}_0x3fed21=_[_0x6e70('0x43')]({},_0x3fed21,_0x42f49a[_0x6e70('0x45')]);return db['VoiceMail']['find'](_0x3fed21)[_0x6e70('0x29')](handleEntityNotFound(_0x39913a,null))[_0x6e70('0x29')](respondWithResult(_0x39913a,null))[_0x6e70('0x49')](handleError(_0x39913a,null));};exports['create']=function(_0x4af9b1,_0x238ebb){return db[_0x6e70('0x47')][_0x6e70('0x4b')](_0x4af9b1[_0x6e70('0x4c')],{})[_0x6e70('0x29')](function(_0x340674){var _0x4ad5a9=_0x4af9b1[_0x6e70('0x4d')][_0x6e70('0x2a')]({'plain':!![]});if(!_0x4ad5a9)throw new Error(_0x6e70('0x4e'));if(_0x4ad5a9[_0x6e70('0x4f')]===_0x6e70('0x4d')){var _0x4b354e=_0x340674['get']({'plain':!![]});var _0x2c5538=_0x6e70('0x2b');return db[_0x6e70('0x50')][_0x6e70('0x51')]({'where':{'name':_0x2c5538,'userProfileId':_0x4ad5a9[_0x6e70('0x52')]},'raw':!![]})['then'](function(_0x41bd0b){if(_0x41bd0b&&_0x41bd0b[_0x6e70('0x53')]===0x0){return db[_0x6e70('0x2c')][_0x6e70('0x4b')]({'name':_0x4b354e[_0x6e70('0x2f')],'resourceId':_0x4b354e['id'],'type':_0x41bd0b['name'],'sectionId':_0x41bd0b['id']},{})[_0x6e70('0x29')](function(){return _0x340674;});}else{return _0x340674;}})[_0x6e70('0x49')](function(_0x2c20d3){logger[_0x6e70('0x2d')](_0x6e70('0x54'),_0x2c20d3);throw _0x2c20d3;});}return _0x340674;})[_0x6e70('0x29')](respondWithResult(_0x238ebb,0xc9))['catch'](handleError(_0x238ebb,null));};exports[_0x6e70('0x28')]=function(_0x8d425d,_0x5c2396){if(_0x8d425d[_0x6e70('0x4c')]['id']){delete _0x8d425d[_0x6e70('0x4c')]['id'];}return db['VoiceMail'][_0x6e70('0x51')]({'where':{'id':_0x8d425d[_0x6e70('0x55')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x5c2396,null))[_0x6e70('0x29')](saveUpdates(_0x8d425d[_0x6e70('0x4c')],null))['then'](respondWithResult(_0x5c2396,null))[_0x6e70('0x49')](handleError(_0x5c2396,null));};exports[_0x6e70('0x56')]=function(_0x10d655,_0x13be81){return db[_0x6e70('0x47')][_0x6e70('0x51')]({'where':{'id':_0x10d655[_0x6e70('0x55')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x13be81,null))[_0x6e70('0x29')](removeEntity(_0x13be81,null))[_0x6e70('0x49')](handleError(_0x13be81,null));};exports[_0x6e70('0x57')]=function(_0x1b12a1,_0xb8f78,_0x1fd9a6){return db[_0x6e70('0x47')][_0x6e70('0x58')]({'where':{'id':_0x1b12a1[_0x6e70('0x55')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0xb8f78,null))[_0x6e70('0x29')](function(_0x1c7dca){var _0x4c6aab;var _0x28898a={},_0x4434dd={};_0x4434dd[_0x6e70('0x36')]=_[_0x6e70('0x4a')](db[_0x6e70('0x59')][_0x6e70('0x33')]);_0x4434dd['query']=_[_0x6e70('0x4a')](_0x1b12a1[_0x6e70('0x37')]);_0x4434dd['filters']=_[_0x6e70('0x39')](_0x4434dd[_0x6e70('0x36')],_0x4434dd[_0x6e70('0x37')]);_0x28898a['attributes']=_['intersection'](_0x4434dd[_0x6e70('0x36')],qs[_0x6e70('0x3b')](_0x1b12a1[_0x6e70('0x37')][_0x6e70('0x3b')]));_0x28898a[_0x6e70('0x3a')]=_0x28898a[_0x6e70('0x3a')][_0x6e70('0x3c')]?_0x28898a['attributes']:_0x4434dd['model'];if(!_0x1b12a1[_0x6e70('0x37')][_0x6e70('0x3d')](_0x6e70('0x3e'))){_0x28898a[_0x6e70('0x20')]=qs['limit'](_0x1b12a1['query'][_0x6e70('0x20')]);_0x28898a[_0x6e70('0x22')]=qs['offset'](_0x1b12a1['query'][_0x6e70('0x22')]);}_0x28898a['order']=qs[_0x6e70('0x3f')](_0x1b12a1[_0x6e70('0x37')][_0x6e70('0x3f')]);_0x28898a[_0x6e70('0x40')]=qs[_0x6e70('0x38')](_[_0x6e70('0x41')](_0x1b12a1[_0x6e70('0x37')],_0x4434dd[_0x6e70('0x38')]));if(_0x1b12a1['query'][_0x6e70('0x42')]){_0x28898a[_0x6e70('0x40')]=_[_0x6e70('0x43')](_0x28898a[_0x6e70('0x40')],{'$or':_[_0x6e70('0x32')](_0x28898a['attributes'],function(_0x5f5b02){var _0x5979bf={};_0x5979bf[_0x5f5b02]={'$like':'%'+_0x1b12a1[_0x6e70('0x37')][_0x6e70('0x42')]+'%'};return _0x5979bf;})});}_0x28898a[_0x6e70('0x40')]=_['merge'](_0x28898a['where'],{'mailboxuser':_0x1c7dca[_0x6e70('0x5a')]});_0x28898a=_[_0x6e70('0x43')]({},_0x28898a,_0x1b12a1[_0x6e70('0x45')]);return db[_0x6e70('0x59')][_0x6e70('0x5b')](_0x28898a)[_0x6e70('0x29')](respondWithFilteredResult(_0xb8f78,_0x28898a));})['catch'](handleError(_0xb8f78,null));};
\ No newline at end of file
+var _0xf290=['UserProfileResource','error','stack','name','send','map','key','keys','query','filters','intersection','model','attributes','fields','length','sort','where','filter','merge','type','VIRTUAL','options','VoiceMail','includeAll','include','findAll','rows','show','params','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','getMessages','VoiceMailMessage','hasOwnProperty','nolimit','order','pick','mailbox','findAndCountAll','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','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','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','then','get','Voicemails'];(function(_0x47716c,_0x5abe90){var _0x1d2525=function(_0x206686){while(--_0x206686){_0x47716c['push'](_0x47716c['shift']());}};_0x1d2525(++_0x5abe90);}(_0xf290,0xde));var _0x0f29=function(_0xb301d4,_0x27ed18){_0xb301d4=_0xb301d4-0x0;var _0x3b5bde=_0xf290[_0xb301d4];return _0x3b5bde;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0f29('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0f29('0x1'));var rp=require('request-promise');var moment=require(_0x0f29('0x2'));var BPromise=require(_0x0f29('0x3'));var Mustache=require(_0x0f29('0x4'));var util=require(_0x0f29('0x5'));var path=require(_0x0f29('0x6'));var sox=require('sox');var csv=require(_0x0f29('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0f29('0x8'));var _=require(_0x0f29('0x9'));var squel=require(_0x0f29('0xa'));var crypto=require(_0x0f29('0xb'));var jsforce=require(_0x0f29('0xc'));var deskjs=require(_0x0f29('0xd'));var toCsv=require(_0x0f29('0x7'));var querystring=require(_0x0f29('0xe'));var Papa=require(_0x0f29('0xf'));var Redis=require(_0x0f29('0x10'));var authService=require(_0x0f29('0x11'));var qs=require(_0x0f29('0x12'));var as=require(_0x0f29('0x13'));var hardwareService=require(_0x0f29('0x14'));var logger=require(_0x0f29('0x15'))('api');var utils=require(_0x0f29('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0f29('0x17'));var db=require(_0x0f29('0x18'))['db'];function respondWithStatusCode(_0x26bbec,_0x222c42){_0x222c42=_0x222c42||0xcc;return function(_0x195424){if(_0x195424){return _0x26bbec[_0x0f29('0x19')](_0x222c42);}return _0x26bbec['status'](_0x222c42)[_0x0f29('0x1a')]();};}function respondWithResult(_0x39961f,_0x2bb7b8){_0x2bb7b8=_0x2bb7b8||0xc8;return function(_0x368984){if(_0x368984){return _0x39961f[_0x0f29('0x1b')](_0x2bb7b8)[_0x0f29('0x1c')](_0x368984);}};}function respondWithFilteredResult(_0x1c518,_0x69df36){return function(_0x547404){if(_0x547404){var _0x4ac37d=typeof _0x69df36[_0x0f29('0x1d')]===_0x0f29('0x1e')&&typeof _0x69df36[_0x0f29('0x1f')]===_0x0f29('0x1e');var _0x4b3f0b=_0x547404[_0x0f29('0x20')];var _0x5d72a5=_0x4ac37d?0x0:_0x69df36[_0x0f29('0x1d')];var _0x4ca5e8=_0x4ac37d?_0x547404['count']:_0x69df36['offset']+_0x69df36[_0x0f29('0x1f')];var _0x8fc03f;if(_0x4ca5e8>=_0x4b3f0b){_0x4ca5e8=_0x4b3f0b;_0x8fc03f=0xc8;}else{_0x8fc03f=0xce;}_0x1c518[_0x0f29('0x1b')](_0x8fc03f);return _0x1c518[_0x0f29('0x21')](_0x0f29('0x22'),_0x5d72a5+'-'+_0x4ca5e8+'/'+_0x4b3f0b)[_0x0f29('0x1c')](_0x547404);}return null;};}function patchUpdates(_0x150271){return function(_0x4888b6){try{jsonpatch[_0x0f29('0x23')](_0x4888b6,_0x150271,!![]);}catch(_0x5a5a03){return BPromise['reject'](_0x5a5a03);}return _0x4888b6['save']();};}function saveUpdates(_0x5d94b9,_0x38a1ce){return function(_0x4a9dd8){if(_0x4a9dd8){return _0x4a9dd8['update'](_0x5d94b9)[_0x0f29('0x24')](function(_0x1840e0){return _0x1840e0;});}return null;};}function removeEntity(_0x346db8,_0x3402dc){return function(_0x29ca73){if(_0x29ca73){return _0x29ca73['destroy']()[_0x0f29('0x24')](function(){var _0x5a440f=_0x29ca73[_0x0f29('0x25')]({'plain':!![]});var _0x26f46f=_0x0f29('0x26');return db[_0x0f29('0x27')]['destroy']({'where':{'type':_0x26f46f,'resourceId':_0x5a440f['id']}})[_0x0f29('0x24')](function(){return _0x29ca73;});})['then'](function(){_0x346db8['status'](0xcc)[_0x0f29('0x1a')]();});}};}function handleEntityNotFound(_0x5c0202,_0x5bfcac){return function(_0x57dcc7){if(!_0x57dcc7){_0x5c0202['sendStatus'](0x194);}return _0x57dcc7;};}function handleError(_0x3c6ce9,_0x1f4ad2){_0x1f4ad2=_0x1f4ad2||0x1f4;return function(_0x4cc5a0){logger[_0x0f29('0x28')](_0x4cc5a0[_0x0f29('0x29')]);if(_0x4cc5a0[_0x0f29('0x2a')]){delete _0x4cc5a0['name'];}_0x3c6ce9['status'](_0x1f4ad2)[_0x0f29('0x2b')](_0x4cc5a0);};}exports['index']=function(_0x36b65c,_0x561c31){var _0x526364={},_0x7b10f={},_0x409b19={'count':0x0,'rows':[]};var _0xf59431=_[_0x0f29('0x2c')](db['VoiceMail']['rawAttributes'],function(_0x3bb3c8){return{'name':_0x3bb3c8['fieldName'],'type':_0x3bb3c8['type'][_0x0f29('0x2d')]};});_0x7b10f['model']=_[_0x0f29('0x2c')](_0xf59431,'name');_0x7b10f['query']=_[_0x0f29('0x2e')](_0x36b65c[_0x0f29('0x2f')]);_0x7b10f[_0x0f29('0x30')]=_[_0x0f29('0x31')](_0x7b10f[_0x0f29('0x32')],_0x7b10f['query']);_0x526364[_0x0f29('0x33')]=_['intersection'](_0x7b10f[_0x0f29('0x32')],qs[_0x0f29('0x34')](_0x36b65c[_0x0f29('0x2f')][_0x0f29('0x34')]));_0x526364['attributes']=_0x526364[_0x0f29('0x33')][_0x0f29('0x35')]?_0x526364['attributes']:_0x7b10f[_0x0f29('0x32')];if(!_0x36b65c[_0x0f29('0x2f')]['hasOwnProperty']('nolimit')){_0x526364[_0x0f29('0x1f')]=qs[_0x0f29('0x1f')](_0x36b65c[_0x0f29('0x2f')][_0x0f29('0x1f')]);_0x526364[_0x0f29('0x1d')]=qs[_0x0f29('0x1d')](_0x36b65c['query'][_0x0f29('0x1d')]);}_0x526364['order']=qs[_0x0f29('0x36')](_0x36b65c['query'][_0x0f29('0x36')]);_0x526364[_0x0f29('0x37')]=qs[_0x0f29('0x30')](_['pick'](_0x36b65c['query'],_0x7b10f[_0x0f29('0x30')]),_0xf59431);if(_0x36b65c['query'][_0x0f29('0x38')]){_0x526364[_0x0f29('0x37')]=_[_0x0f29('0x39')](_0x526364[_0x0f29('0x37')],{'$or':_[_0x0f29('0x2c')](_0xf59431,function(_0x5afbb8){if(_0x5afbb8[_0x0f29('0x3a')]!==_0x0f29('0x3b')){var _0x42872b={};_0x42872b[_0x5afbb8[_0x0f29('0x2a')]]={'$like':'%'+_0x36b65c[_0x0f29('0x2f')][_0x0f29('0x38')]+'%'};return _0x42872b;}})});}_0x526364=_[_0x0f29('0x39')]({},_0x526364,_0x36b65c[_0x0f29('0x3c')]);var _0x250b20={'where':_0x526364['where']};return db[_0x0f29('0x3d')][_0x0f29('0x20')](_0x250b20)[_0x0f29('0x24')](function(_0x11b1dc){_0x409b19['count']=_0x11b1dc;if(_0x36b65c[_0x0f29('0x2f')][_0x0f29('0x3e')]){_0x526364[_0x0f29('0x3f')]=[{'all':!![]}];}return db[_0x0f29('0x3d')][_0x0f29('0x40')](_0x526364);})['then'](function(_0x410c59){_0x409b19[_0x0f29('0x41')]=_0x410c59;return _0x409b19;})[_0x0f29('0x24')](respondWithFilteredResult(_0x561c31,_0x526364))['catch'](handleError(_0x561c31,null));};exports[_0x0f29('0x42')]=function(_0x284279,_0x3a6479){var _0x338412={'raw':!![],'where':{'id':_0x284279[_0x0f29('0x43')]['id']}},_0x35f753={};_0x35f753[_0x0f29('0x32')]=_[_0x0f29('0x2e')](db['VoiceMail']['rawAttributes']);_0x35f753['query']=_[_0x0f29('0x2e')](_0x284279[_0x0f29('0x2f')]);_0x35f753[_0x0f29('0x30')]=_[_0x0f29('0x31')](_0x35f753[_0x0f29('0x32')],_0x35f753[_0x0f29('0x2f')]);_0x338412['attributes']=_[_0x0f29('0x31')](_0x35f753['model'],qs[_0x0f29('0x34')](_0x284279['query'][_0x0f29('0x34')]));_0x338412[_0x0f29('0x33')]=_0x338412[_0x0f29('0x33')][_0x0f29('0x35')]?_0x338412[_0x0f29('0x33')]:_0x35f753['model'];if(_0x284279[_0x0f29('0x2f')][_0x0f29('0x3e')]){_0x338412[_0x0f29('0x3f')]=[{'all':!![]}];}_0x338412=_['merge']({},_0x338412,_0x284279[_0x0f29('0x3c')]);return db['VoiceMail']['find'](_0x338412)[_0x0f29('0x24')](handleEntityNotFound(_0x3a6479,null))[_0x0f29('0x24')](respondWithResult(_0x3a6479,null))[_0x0f29('0x44')](handleError(_0x3a6479,null));};exports[_0x0f29('0x45')]=function(_0x20aa53,_0x335435){return db['VoiceMail'][_0x0f29('0x45')](_0x20aa53[_0x0f29('0x46')],{})[_0x0f29('0x24')](function(_0x857564){var _0x2455d2=_0x20aa53[_0x0f29('0x47')][_0x0f29('0x25')]({'plain':!![]});if(!_0x2455d2)throw new Error(_0x0f29('0x48'));if(_0x2455d2[_0x0f29('0x49')]===_0x0f29('0x47')){var _0x5cd4a9=_0x857564['get']({'plain':!![]});var _0xa6231e=_0x0f29('0x26');return db[_0x0f29('0x4a')][_0x0f29('0x4b')]({'where':{'name':_0xa6231e,'userProfileId':_0x2455d2['userProfileId']},'raw':!![]})[_0x0f29('0x24')](function(_0xd624ad){if(_0xd624ad&&_0xd624ad[_0x0f29('0x4c')]===0x0){return db[_0x0f29('0x27')][_0x0f29('0x45')]({'name':_0x5cd4a9[_0x0f29('0x2a')],'resourceId':_0x5cd4a9['id'],'type':_0xd624ad[_0x0f29('0x2a')],'sectionId':_0xd624ad['id']},{})['then'](function(){return _0x857564;});}else{return _0x857564;}})[_0x0f29('0x44')](function(_0x6c1800){logger[_0x0f29('0x28')](_0x0f29('0x4d'),_0x6c1800);throw _0x6c1800;});}return _0x857564;})[_0x0f29('0x24')](respondWithResult(_0x335435,0xc9))[_0x0f29('0x44')](handleError(_0x335435,null));};exports['update']=function(_0x8c9780,_0x45d87c){if(_0x8c9780[_0x0f29('0x46')]['id']){delete _0x8c9780['body']['id'];}return db[_0x0f29('0x3d')]['find']({'where':{'id':_0x8c9780[_0x0f29('0x43')]['id']}})['then'](handleEntityNotFound(_0x45d87c,null))[_0x0f29('0x24')](saveUpdates(_0x8c9780[_0x0f29('0x46')],null))['then'](respondWithResult(_0x45d87c,null))[_0x0f29('0x44')](handleError(_0x45d87c,null));};exports[_0x0f29('0x4e')]=function(_0x4ae30,_0x4a2c08){return db[_0x0f29('0x3d')]['find']({'where':{'id':_0x4ae30[_0x0f29('0x43')]['id']}})[_0x0f29('0x24')](handleEntityNotFound(_0x4a2c08,null))['then'](removeEntity(_0x4a2c08,null))[_0x0f29('0x44')](handleError(_0x4a2c08,null));};exports[_0x0f29('0x4f')]=function(_0x4f2da6,_0xbe013b,_0x4fa132){return db[_0x0f29('0x3d')]['findOne']({'where':{'id':_0x4f2da6[_0x0f29('0x43')]['id']}})[_0x0f29('0x24')](handleEntityNotFound(_0xbe013b,null))[_0x0f29('0x24')](function(_0x4ba5c3){var _0x36e714;var _0x3824f4={},_0x3dc97f={};_0x3dc97f[_0x0f29('0x32')]=_['keys'](db[_0x0f29('0x50')]['rawAttributes']);_0x3dc97f[_0x0f29('0x2f')]=_['keys'](_0x4f2da6[_0x0f29('0x2f')]);_0x3dc97f[_0x0f29('0x30')]=_[_0x0f29('0x31')](_0x3dc97f[_0x0f29('0x32')],_0x3dc97f[_0x0f29('0x2f')]);_0x3824f4[_0x0f29('0x33')]=_[_0x0f29('0x31')](_0x3dc97f['model'],qs[_0x0f29('0x34')](_0x4f2da6['query'][_0x0f29('0x34')]));_0x3824f4[_0x0f29('0x33')]=_0x3824f4[_0x0f29('0x33')]['length']?_0x3824f4[_0x0f29('0x33')]:_0x3dc97f[_0x0f29('0x32')];if(!_0x4f2da6[_0x0f29('0x2f')][_0x0f29('0x51')](_0x0f29('0x52'))){_0x3824f4['limit']=qs['limit'](_0x4f2da6[_0x0f29('0x2f')][_0x0f29('0x1f')]);_0x3824f4[_0x0f29('0x1d')]=qs['offset'](_0x4f2da6['query'][_0x0f29('0x1d')]);}_0x3824f4[_0x0f29('0x53')]=qs[_0x0f29('0x36')](_0x4f2da6['query']['sort']);_0x3824f4['where']=qs[_0x0f29('0x30')](_[_0x0f29('0x54')](_0x4f2da6['query'],_0x3dc97f[_0x0f29('0x30')]));if(_0x4f2da6[_0x0f29('0x2f')]['filter']){_0x3824f4[_0x0f29('0x37')]=_['merge'](_0x3824f4[_0x0f29('0x37')],{'$or':_[_0x0f29('0x2c')](_0x3824f4['attributes'],function(_0x2e423a){var _0x83015c={};_0x83015c[_0x2e423a]={'$like':'%'+_0x4f2da6[_0x0f29('0x2f')][_0x0f29('0x38')]+'%'};return _0x83015c;})});}_0x3824f4[_0x0f29('0x37')]=_[_0x0f29('0x39')](_0x3824f4['where'],{'mailboxuser':_0x4ba5c3[_0x0f29('0x55')]});_0x3824f4=_[_0x0f29('0x39')]({},_0x3824f4,_0x4f2da6[_0x0f29('0x3c')]);return db['VoiceMailMessage'][_0x0f29('0x56')](_0x3824f4)[_0x0f29('0x24')](respondWithFilteredResult(_0xbe013b,_0x3824f4));})['catch'](handleError(_0xbe013b,null));};
\ No newline at end of file
index d87da08..7592d1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f7a=['../../config/environment','./voiceMail.attributes','exports','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','context','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x27e73b,_0x403028){var _0x543cbb=function(_0x6b5647){while(--_0x6b5647){_0x27e73b['push'](_0x27e73b['shift']());}};_0x543cbb(++_0x403028);}(_0x7f7a,0x15d));var _0xa7f7=function(_0x453b51,_0x1a1af6){_0x453b51=_0x453b51-0x0;var _0x48b0eb=_0x7f7a[_0x453b51];return _0x48b0eb;};'use strict';var _=require(_0xa7f7('0x0'));var util=require(_0xa7f7('0x1'));var logger=require(_0xa7f7('0x2'))(_0xa7f7('0x3'));var moment=require(_0xa7f7('0x4'));var BPromise=require(_0xa7f7('0x5'));var rp=require(_0xa7f7('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa7f7('0x7'));var config=require(_0xa7f7('0x8'));var attributes=require(_0xa7f7('0x9'));module[_0xa7f7('0xa')]=function(_0x3cd1e4,_0x361e90){return _0x3cd1e4[_0xa7f7('0xb')](_0xa7f7('0xc'),attributes,{'tableName':_0xa7f7('0xd'),'paranoid':![],'indexes':[{'name':_0xa7f7('0xe'),'fields':[_0xa7f7('0xf'),_0xa7f7('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9151=['mailbox_context','mailbox','context','lodash','api','moment','bluebird','../../config/environment','./voiceMail.attributes','exports','VoiceMail','voice_voicemail'];(function(_0xb3de3c,_0x3e1022){var _0x122e08=function(_0x3028f8){while(--_0x3028f8){_0xb3de3c['push'](_0xb3de3c['shift']());}};_0x122e08(++_0x3e1022);}(_0x9151,0x87));var _0x1915=function(_0xaab2f5,_0x58463f){_0xaab2f5=_0xaab2f5-0x0;var _0x3b28ea=_0x9151[_0xaab2f5];return _0x3b28ea;};'use strict';var _=require(_0x1915('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x1915('0x1'));var moment=require(_0x1915('0x2'));var BPromise=require(_0x1915('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1915('0x4'));var attributes=require(_0x1915('0x5'));module[_0x1915('0x6')]=function(_0x2b5d8d,_0x6053e7){return _0x2b5d8d['define'](_0x1915('0x7'),attributes,{'tableName':_0x1915('0x8'),'paranoid':![],'indexes':[{'name':_0x1915('0x9'),'fields':[_0x1915('0xa'),_0x1915('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 206b911..1419ea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa09b=['message','request\x20sent','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','VoiceMail,\x20%s,\x20%s','stringify','error','code'];(function(_0x1781d9,_0x479026){var _0x50c607=function(_0x1302e1){while(--_0x1302e1){_0x1781d9['push'](_0x1781d9['shift']());}};_0x50c607(++_0x479026);}(_0xa09b,0x193));var _0xba09=function(_0x125106,_0x1a5f5d){_0x125106=_0x125106-0x0;var _0xc1ffd5=_0xa09b[_0x125106];return _0xc1ffd5;};'use strict';var _=require('lodash');var util=require(_0xba09('0x0'));var moment=require(_0xba09('0x1'));var BPromise=require(_0xba09('0x2'));var rs=require(_0xba09('0x3'));var fs=require('fs');var Redis=require(_0xba09('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xba09('0x5'));var logger=require(_0xba09('0x6'))(_0xba09('0x7'));var config=require(_0xba09('0x8'));var jayson=require(_0xba09('0x9'));var client=jayson['client'][_0xba09('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xda7454,_0x119c46,_0x597b4e){return new BPromise(function(_0x2529aa,_0x198f32){return client[_0xba09('0xb')](_0xda7454,_0x597b4e)['then'](function(_0x1177cc){logger[_0xba09('0xc')](_0xba09('0xd'),_0x119c46,'request\x20sent');logger['debug']('VoiceMail,\x20%s,\x20%s,\x20%s',_0x119c46,'request\x20sent',JSON[_0xba09('0xe')](_0x1177cc));if(_0x1177cc[_0xba09('0xf')]){if(_0x1177cc[_0xba09('0xf')][_0xba09('0x10')]===0x1f4){logger['error'](_0xba09('0xd'),_0x119c46,_0x1177cc[_0xba09('0xf')][_0xba09('0x11')]);return _0x198f32(_0x1177cc[_0xba09('0xf')][_0xba09('0x11')]);}logger['error'](_0xba09('0xd'),_0x119c46,_0x1177cc[_0xba09('0xf')][_0xba09('0x11')]);return _0x2529aa(_0x1177cc['error']['message']);}else{logger[_0xba09('0xc')](_0xba09('0xd'),_0x119c46,_0xba09('0x12'));_0x2529aa(_0x1177cc[_0xba09('0x13')][_0xba09('0x11')]);}})[_0xba09('0x14')](function(_0x2a7f86){logger['error']('VoiceMail,\x20%s,\x20%s',_0x119c46,_0x2a7f86);_0x198f32(_0x2a7f86);});});}
\ No newline at end of file
+var _0xd13f=['http','request','then','info','VoiceMail,\x20%s,\x20%s','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x1a801e,_0x243310){var _0x14f9fa=function(_0x511e71){while(--_0x511e71){_0x1a801e['push'](_0x1a801e['shift']());}};_0x14f9fa(++_0x243310);}(_0xd13f,0x173));var _0xfd13=function(_0x515b9a,_0x2f7026){_0x515b9a=_0x515b9a-0x0;var _0x5df044=_0xd13f[_0x515b9a];return _0x5df044;};'use strict';var _=require(_0xfd13('0x0'));var util=require(_0xfd13('0x1'));var moment=require('moment');var BPromise=require(_0xfd13('0x2'));var rs=require(_0xfd13('0x3'));var fs=require('fs');var Redis=require(_0xfd13('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfd13('0x5'));var logger=require('../../config/logger')(_0xfd13('0x6'));var config=require(_0xfd13('0x7'));var jayson=require(_0xfd13('0x8'));var client=jayson['client'][_0xfd13('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x402041,_0x307713,_0x21ce38){return new BPromise(function(_0x3ffb74,_0x5b3bbd){return client[_0xfd13('0xa')](_0x402041,_0x21ce38)[_0xfd13('0xb')](function(_0x34e36a){logger[_0xfd13('0xc')](_0xfd13('0xd'),_0x307713,'request\x20sent');logger[_0xfd13('0xe')](_0xfd13('0xf'),_0x307713,'request\x20sent',JSON[_0xfd13('0x10')](_0x34e36a));if(_0x34e36a[_0xfd13('0x11')]){if(_0x34e36a[_0xfd13('0x11')]['code']===0x1f4){logger[_0xfd13('0x11')]('VoiceMail,\x20%s,\x20%s',_0x307713,_0x34e36a[_0xfd13('0x11')][_0xfd13('0x12')]);return _0x5b3bbd(_0x34e36a[_0xfd13('0x11')][_0xfd13('0x12')]);}logger[_0xfd13('0x11')]('VoiceMail,\x20%s,\x20%s',_0x307713,_0x34e36a[_0xfd13('0x11')]['message']);return _0x3ffb74(_0x34e36a[_0xfd13('0x11')][_0xfd13('0x12')]);}else{logger[_0xfd13('0xc')]('VoiceMail,\x20%s,\x20%s',_0x307713,'request\x20sent');_0x3ffb74(_0x34e36a['result'][_0xfd13('0x12')]);}})[_0xfd13('0x13')](function(_0x1dab12){logger[_0xfd13('0x11')](_0xfd13('0xd'),_0x307713,_0x1dab12);_0x5b3bbd(_0x1dab12);});});}
\ No newline at end of file
index 8ba2675..dbea781 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x968a=['put','update','destroy','exports','multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','/:id','show','/:id/download','create'];(function(_0x1c0197,_0x582693){var _0x14ae83=function(_0x5c83ff){while(--_0x5c83ff){_0x1c0197['push'](_0x1c0197['shift']());}};_0x14ae83(++_0x582693);}(_0x968a,0x190));var _0xa968=function(_0x5354c1,_0x154c3a){_0x5354c1=_0x5354c1-0x0;var _0x28552f=_0x968a[_0x5354c1];return _0x28552f;};'use strict';var multer=require(_0xa968('0x0'));var util=require(_0xa968('0x1'));var path=require(_0xa968('0x2'));var timeout=require('connect-timeout');var express=require(_0xa968('0x3'));var router=express['Router']();var fs_extra=require(_0xa968('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xa968('0x5'));var config=require(_0xa968('0x6'));var controller=require(_0xa968('0x7'));router[_0xa968('0x8')]('/',auth[_0xa968('0x9')](),controller['index']);router[_0xa968('0x8')](_0xa968('0xa'),auth[_0xa968('0x9')](),controller[_0xa968('0xb')]);router[_0xa968('0x8')](_0xa968('0xc'),auth[_0xa968('0x9')](),controller['download']);router['post']('/',auth[_0xa968('0x9')](),controller[_0xa968('0xd')]);router[_0xa968('0xe')](_0xa968('0xa'),auth[_0xa968('0x9')](),controller[_0xa968('0xf')]);router['delete'](_0xa968('0xa'),auth['isAuthenticated'](),controller[_0xa968('0x10')]);module[_0xa968('0x11')]=router;
\ No newline at end of file
+var _0xa4a0=['index','/:id','show','download','post','create','put','update','delete','destroy','exports','multer','util','express','fs-extra','../../components/auth/service','./voiceMailMessage.controller','get','isAuthenticated'];(function(_0x2d5df3,_0x114958){var _0xdc373=function(_0x40629e){while(--_0x40629e){_0x2d5df3['push'](_0x2d5df3['shift']());}};_0xdc373(++_0x114958);}(_0xa4a0,0x174));var _0x0a4a=function(_0x2e82c7,_0x38f340){_0x2e82c7=_0x2e82c7-0x0;var _0x1ee8af=_0xa4a0[_0x2e82c7];return _0x1ee8af;};'use strict';var multer=require(_0x0a4a('0x0'));var util=require(_0x0a4a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0a4a('0x2'));var router=express['Router']();var fs_extra=require(_0x0a4a('0x3'));var auth=require(_0x0a4a('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0a4a('0x5'));router[_0x0a4a('0x6')]('/',auth[_0x0a4a('0x7')](),controller[_0x0a4a('0x8')]);router['get'](_0x0a4a('0x9'),auth[_0x0a4a('0x7')](),controller[_0x0a4a('0xa')]);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0x0a4a('0xb')]);router[_0x0a4a('0xc')]('/',auth[_0x0a4a('0x7')](),controller[_0x0a4a('0xd')]);router[_0x0a4a('0xe')]('/:id',auth[_0x0a4a('0x7')](),controller[_0x0a4a('0xf')]);router[_0x0a4a('0x10')](_0x0a4a('0x9'),auth['isAuthenticated'](),controller[_0x0a4a('0x11')]);module[_0x0a4a('0x12')]=router;
\ No newline at end of file
index b139d64..6c93a2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f1b=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','getDataValue','STRING','TIMESTAMP','literal'];(function(_0x10e89f,_0x208260){var _0x143acb=function(_0x32faa1){while(--_0x32faa1){_0x10e89f['push'](_0x10e89f['shift']());}};_0x143acb(++_0x208260);}(_0x3f1b,0x14a));var _0xb3f1=function(_0x3ca263,_0x5d0ba3){_0x3ca263=_0x3ca263-0x0;var _0x1570d1=_0x3f1b[_0x3ca263];return _0x1570d1;};'use strict';var Sequelize=require(_0xb3f1('0x0'));module[_0xb3f1('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0xf32d1d){return this[_0xb3f1('0x2')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'context':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'callerid':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'origtime':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'duration':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xb3f1('0x3')],'defaultValue':''},'recording':{'type':Sequelize['BLOB']('long'),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0xb3f1('0x4'),'defaultValue':Sequelize[_0xb3f1('0x5')](_0xb3f1('0x6'))}};
\ No newline at end of file
+var _0xf2e6=['literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','getDataValue','INTEGER','STRING','BLOB','long','TIMESTAMP'];(function(_0x37b713,_0x248677){var _0xae950c=function(_0x272cb9){while(--_0x272cb9){_0x37b713['push'](_0x37b713['shift']());}};_0xae950c(++_0x248677);}(_0xf2e6,0x16d));var _0x6f2e=function(_0x47fd36,_0x41535d){_0x47fd36=_0x47fd36-0x0;var _0x21a0fc=_0xf2e6[_0x47fd36];return _0x21a0fc;};'use strict';var Sequelize=require(_0x6f2e('0x0'));module[_0x6f2e('0x1')]={'name':{'type':Sequelize[_0x6f2e('0x2')],'get':function(_0x350eb6){return this[_0x6f2e('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x6f2e('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x6f2e('0x5')],'defaultValue':''},'context':{'type':Sequelize[_0x6f2e('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x6f2e('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0x6f2e('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0x6f2e('0x5')],'defaultValue':''},'duration':{'type':Sequelize[_0x6f2e('0x5')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize['STRING'],'defaultValue':''},'recording':{'type':Sequelize[_0x6f2e('0x6')](_0x6f2e('0x7')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0x6f2e('0x5')],'defaultValue':''},'stamp':{'type':_0x6f2e('0x8'),'defaultValue':Sequelize[_0x6f2e('0x9')](_0x6f2e('0xa'))}};
\ No newline at end of file
index 08e25ec..035f851 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8c8=['papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','VoiceMailMessage','rawAttributes','fieldName','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','options','count','includeAll','include','catch','show','params','find','create','body','recording','msg_id','ValidationError','VoiceMailMessage\x20not\x20found','attachment','Content-Disposition','.wav\x22','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0x8ee3de,_0x467dd0){var _0x2e7346=function(_0xbbdbaf){while(--_0xbbdbaf){_0x8ee3de['push'](_0x8ee3de['shift']());}};_0x2e7346(++_0x467dd0);}(_0xc8c8,0xe4));var _0x8c8c=function(_0x30585b,_0x1a583d){_0x30585b=_0x30585b-0x0;var _0x3b3d4b=_0xc8c8[_0x30585b];return _0x3b3d4b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8c8c('0x0'));var zipdir=require(_0x8c8c('0x1'));var jsonpatch=require(_0x8c8c('0x2'));var rp=require(_0x8c8c('0x3'));var moment=require(_0x8c8c('0x4'));var BPromise=require(_0x8c8c('0x5'));var Mustache=require(_0x8c8c('0x6'));var util=require(_0x8c8c('0x7'));var path=require(_0x8c8c('0x8'));var sox=require(_0x8c8c('0x9'));var csv=require(_0x8c8c('0xa'));var ejs=require(_0x8c8c('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8c8c('0xc'));var squel=require(_0x8c8c('0xd'));var crypto=require(_0x8c8c('0xe'));var jsforce=require(_0x8c8c('0xf'));var deskjs=require(_0x8c8c('0x10'));var toCsv=require(_0x8c8c('0xa'));var querystring=require(_0x8c8c('0x11'));var Papa=require(_0x8c8c('0x12'));var Redis=require('ioredis');var authService=require(_0x8c8c('0x13'));var qs=require(_0x8c8c('0x14'));var as=require(_0x8c8c('0x15'));var hardwareService=require(_0x8c8c('0x16'));var logger=require('../../config/logger')(_0x8c8c('0x17'));var utils=require(_0x8c8c('0x18'));var config=require(_0x8c8c('0x19'));var licenseUtil=require(_0x8c8c('0x1a'));var db=require(_0x8c8c('0x1b'))['db'];function respondWithStatusCode(_0x37b924,_0x30cb89){_0x30cb89=_0x30cb89||0xcc;return function(_0x55810e){if(_0x55810e){return _0x37b924[_0x8c8c('0x1c')](_0x30cb89);}return _0x37b924[_0x8c8c('0x1d')](_0x30cb89)[_0x8c8c('0x1e')]();};}function respondWithResult(_0x5c6ad8,_0x53f599){_0x53f599=_0x53f599||0xc8;return function(_0x34c982){if(_0x34c982){return _0x5c6ad8[_0x8c8c('0x1d')](_0x53f599)['json'](_0x34c982);}};}function respondWithFilteredResult(_0x9727d4,_0x51f84d){return function(_0x15d234){if(_0x15d234){var _0x455faa=typeof _0x51f84d[_0x8c8c('0x1f')]===_0x8c8c('0x20')&&typeof _0x51f84d[_0x8c8c('0x21')]==='undefined';var _0x2e0e68=_0x15d234['count'];var _0x3ef8f7=_0x455faa?0x0:_0x51f84d[_0x8c8c('0x1f')];var _0x54e526=_0x455faa?_0x15d234['count']:_0x51f84d['offset']+_0x51f84d[_0x8c8c('0x21')];var _0x36c9bf;if(_0x54e526>=_0x2e0e68){_0x54e526=_0x2e0e68;_0x36c9bf=0xc8;}else{_0x36c9bf=0xce;}_0x9727d4[_0x8c8c('0x1d')](_0x36c9bf);return _0x9727d4[_0x8c8c('0x22')](_0x8c8c('0x23'),_0x3ef8f7+'-'+_0x54e526+'/'+_0x2e0e68)['json'](_0x15d234);}return null;};}function patchUpdates(_0x42141e){return function(_0xaa090f){try{jsonpatch[_0x8c8c('0x24')](_0xaa090f,_0x42141e,!![]);}catch(_0xf7df00){return BPromise[_0x8c8c('0x25')](_0xf7df00);}return _0xaa090f['save']();};}function saveUpdates(_0x51797b,_0x20df5c){return function(_0x59565d){if(_0x59565d){return _0x59565d[_0x8c8c('0x26')](_0x51797b)[_0x8c8c('0x27')](function(_0x523bd5){return _0x523bd5;});}return null;};}function removeEntity(_0x13d5fc,_0x41cb52){return function(_0x25902d){if(_0x25902d){return _0x25902d[_0x8c8c('0x28')]()[_0x8c8c('0x27')](function(){_0x13d5fc[_0x8c8c('0x1d')](0xcc)[_0x8c8c('0x1e')]();});}};}function handleEntityNotFound(_0x29940d,_0x34ec36){return function(_0x434eb0){if(!_0x434eb0){_0x29940d[_0x8c8c('0x1c')](0x194);}return _0x434eb0;};}function handleError(_0x58a1c1,_0x1cf84d){_0x1cf84d=_0x1cf84d||0x1f4;return function(_0x437108){logger['error'](_0x437108[_0x8c8c('0x29')]);if(_0x437108[_0x8c8c('0x2a')]){delete _0x437108[_0x8c8c('0x2a')];}_0x58a1c1[_0x8c8c('0x1d')](_0x1cf84d)[_0x8c8c('0x2b')](_0x437108);};}exports[_0x8c8c('0x2c')]=function(_0x2e8c5d,_0x3788e3){var _0x221516={},_0x1bda52={},_0x2d4c35={'count':0x0,'rows':[]};var _0x41fa72=_[_0x8c8c('0x2d')](db[_0x8c8c('0x2e')][_0x8c8c('0x2f')],function(_0x22ab32){return{'name':_0x22ab32[_0x8c8c('0x30')],'type':_0x22ab32['type']['key']};});_0x1bda52['model']=_['differenceBy'](_[_0x8c8c('0x2d')](_0x41fa72,'name'),[_0x8c8c('0x2a')]);_0x1bda52[_0x8c8c('0x31')]=_[_0x8c8c('0x32')](_0x2e8c5d['query']);_0x1bda52[_0x8c8c('0x33')]=_['intersection'](_0x1bda52[_0x8c8c('0x34')],_0x1bda52[_0x8c8c('0x31')]);_0x221516[_0x8c8c('0x35')]=_[_0x8c8c('0x36')](_0x1bda52[_0x8c8c('0x34')],qs[_0x8c8c('0x37')](_0x2e8c5d[_0x8c8c('0x31')][_0x8c8c('0x37')]));_0x221516[_0x8c8c('0x35')]=_0x221516[_0x8c8c('0x35')][_0x8c8c('0x38')]?_0x221516['attributes']:_0x1bda52[_0x8c8c('0x34')];if(!_0x2e8c5d[_0x8c8c('0x31')][_0x8c8c('0x39')](_0x8c8c('0x3a'))){_0x221516['limit']=qs[_0x8c8c('0x21')](_0x2e8c5d[_0x8c8c('0x31')][_0x8c8c('0x21')]);_0x221516[_0x8c8c('0x1f')]=qs['offset'](_0x2e8c5d[_0x8c8c('0x31')][_0x8c8c('0x1f')]);}_0x221516[_0x8c8c('0x3b')]=qs[_0x8c8c('0x3c')](_0x2e8c5d['query'][_0x8c8c('0x3c')]);_0x221516[_0x8c8c('0x3d')]=qs[_0x8c8c('0x33')](_['pick'](_0x2e8c5d[_0x8c8c('0x31')],_0x1bda52['filters']),_0x41fa72);if(_0x2e8c5d[_0x8c8c('0x31')][_0x8c8c('0x3e')]){_0x221516[_0x8c8c('0x3d')]=_[_0x8c8c('0x3f')](_0x221516[_0x8c8c('0x3d')],{'$or':_['map'](_0x41fa72,function(_0x589af2){if(_0x589af2[_0x8c8c('0x40')]!=='VIRTUAL'){var _0x36b730={};_0x36b730[_0x589af2['name']]={'$like':'%'+_0x2e8c5d[_0x8c8c('0x31')]['filter']+'%'};return _0x36b730;}})});}_0x221516=_[_0x8c8c('0x3f')]({},_0x221516,_0x2e8c5d[_0x8c8c('0x41')]);var _0x361997={'where':_0x221516['where']};return db[_0x8c8c('0x2e')][_0x8c8c('0x42')](_0x361997)['then'](function(_0x707fe5){_0x2d4c35['count']=_0x707fe5;if(_0x2e8c5d[_0x8c8c('0x31')][_0x8c8c('0x43')]){_0x221516[_0x8c8c('0x44')]=[{'all':!![]}];}return db[_0x8c8c('0x2e')]['findAll'](_0x221516);})['then'](function(_0x496852){_0x2d4c35['rows']=_0x496852;return _0x2d4c35;})[_0x8c8c('0x27')](respondWithFilteredResult(_0x3788e3,_0x221516))[_0x8c8c('0x45')](handleError(_0x3788e3,null));};exports[_0x8c8c('0x46')]=function(_0x55092f,_0x403886){var _0x1346a1={'raw':!![],'where':{'id':_0x55092f[_0x8c8c('0x47')]['id']}},_0x51e29d={};_0x51e29d[_0x8c8c('0x34')]=_[_0x8c8c('0x32')](db['VoiceMailMessage'][_0x8c8c('0x2f')]);_0x51e29d[_0x8c8c('0x31')]=_[_0x8c8c('0x32')](_0x55092f[_0x8c8c('0x31')]);_0x51e29d['filters']=_[_0x8c8c('0x36')](_0x51e29d[_0x8c8c('0x34')],_0x51e29d[_0x8c8c('0x31')]);_0x1346a1[_0x8c8c('0x35')]=_[_0x8c8c('0x36')](_0x51e29d[_0x8c8c('0x34')],qs[_0x8c8c('0x37')](_0x55092f['query'][_0x8c8c('0x37')]));_0x1346a1[_0x8c8c('0x35')]=_0x1346a1[_0x8c8c('0x35')][_0x8c8c('0x38')]?_0x1346a1[_0x8c8c('0x35')]:_0x51e29d[_0x8c8c('0x34')];if(_0x55092f[_0x8c8c('0x31')]['includeAll']){_0x1346a1['include']=[{'all':!![]}];}_0x1346a1=_[_0x8c8c('0x3f')]({},_0x1346a1,_0x55092f[_0x8c8c('0x41')]);return db['VoiceMailMessage'][_0x8c8c('0x48')](_0x1346a1)[_0x8c8c('0x27')](handleEntityNotFound(_0x403886,null))[_0x8c8c('0x27')](respondWithResult(_0x403886,null))[_0x8c8c('0x45')](handleError(_0x403886,null));};exports[_0x8c8c('0x49')]=function(_0x4bc334,_0xd857dd){return db[_0x8c8c('0x2e')]['create'](_0x4bc334['body'],{})['then'](respondWithResult(_0xd857dd,0xc9))[_0x8c8c('0x45')](handleError(_0xd857dd,null));};exports[_0x8c8c('0x26')]=function(_0x55edfc,_0x33d5c9){if(_0x55edfc[_0x8c8c('0x4a')]['id']){delete _0x55edfc[_0x8c8c('0x4a')]['id'];}return db[_0x8c8c('0x2e')][_0x8c8c('0x48')]({'where':{'id':_0x55edfc[_0x8c8c('0x47')]['id']}})[_0x8c8c('0x27')](handleEntityNotFound(_0x33d5c9,null))['then'](saveUpdates(_0x55edfc[_0x8c8c('0x4a')],null))['then'](respondWithResult(_0x33d5c9,null))['catch'](handleError(_0x33d5c9,null));};exports[_0x8c8c('0x28')]=function(_0x10bbde,_0x427ba7){return db['VoiceMailMessage'][_0x8c8c('0x48')]({'where':{'id':_0x10bbde[_0x8c8c('0x47')]['id']}})[_0x8c8c('0x27')](handleEntityNotFound(_0x427ba7,null))['then'](removeEntity(_0x427ba7,null))[_0x8c8c('0x45')](handleError(_0x427ba7,null));};exports['download']=function(_0x4c2a7e,_0x51dd77,_0x359c57){return db[_0x8c8c('0x2e')][_0x8c8c('0x48')]({'where':{'id':_0x4c2a7e[_0x8c8c('0x47')]['id']},'attributes':['id',_0x8c8c('0x4b'),_0x8c8c('0x4c')]})[_0x8c8c('0x27')](handleEntityNotFound(_0x51dd77,null))[_0x8c8c('0x27')](function(_0x2889a4){if(_0x2889a4){if(!_0x2889a4['recording']){throw new db['Sequelize'][(_0x8c8c('0x4d'))](_0x8c8c('0x4e'));}var _0x7ee092={'Content-Type':'audio/wav','Content-Disposition':_0x8c8c('0x4f')};if(_0x2889a4[_0x8c8c('0x4c')]){_0x7ee092[_0x8c8c('0x50')]='attachment;\x20filename=\x22'+_0x2889a4['msg_id']+_0x8c8c('0x51');}_0x51dd77['set'](_0x7ee092);return _0x51dd77[_0x8c8c('0x2b')](new Buffer(_0x2889a4[_0x8c8c('0x4b')]));}})[_0x8c8c('0x45')](handleError(_0x51dd77,null));};
\ No newline at end of file
+var _0xedee=['include','rows','params','find','catch','create','body','download','recording','msg_id','VoiceMailMessage\x20not\x20found','audio/wav','attachment','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','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','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','map','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','filter','merge','VIRTUAL','options','VoiceMailMessage','includeAll'];(function(_0x52486d,_0xe3eede){var _0x37de4f=function(_0x166427){while(--_0x166427){_0x52486d['push'](_0x52486d['shift']());}};_0x37de4f(++_0xe3eede);}(_0xedee,0x1a9));var _0xeede=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xedee[_0x46e363];return _0x3fb059;};'use strict';var emlformat=require(_0xeede('0x0'));var rimraf=require(_0xeede('0x1'));var zipdir=require(_0xeede('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xeede('0x3'));var moment=require(_0xeede('0x4'));var BPromise=require(_0xeede('0x5'));var Mustache=require(_0xeede('0x6'));var util=require(_0xeede('0x7'));var path=require(_0xeede('0x8'));var sox=require(_0xeede('0x9'));var csv=require(_0xeede('0xa'));var ejs=require(_0xeede('0xb'));var fs=require('fs');var fs_extra=require(_0xeede('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xeede('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xeede('0xe'));var toCsv=require(_0xeede('0xa'));var querystring=require(_0xeede('0xf'));var Papa=require(_0xeede('0x10'));var Redis=require(_0xeede('0x11'));var authService=require(_0xeede('0x12'));var qs=require(_0xeede('0x13'));var as=require(_0xeede('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xeede('0x15'))(_0xeede('0x16'));var utils=require(_0xeede('0x17'));var config=require(_0xeede('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x25e8af,_0x57debe){_0x57debe=_0x57debe||0xcc;return function(_0x4b8ebf){if(_0x4b8ebf){return _0x25e8af[_0xeede('0x19')](_0x57debe);}return _0x25e8af[_0xeede('0x1a')](_0x57debe)[_0xeede('0x1b')]();};}function respondWithResult(_0x2475e0,_0x47072a){_0x47072a=_0x47072a||0xc8;return function(_0x4e1059){if(_0x4e1059){return _0x2475e0[_0xeede('0x1a')](_0x47072a)[_0xeede('0x1c')](_0x4e1059);}};}function respondWithFilteredResult(_0x3f6ad0,_0x3c7907){return function(_0x5d9278){if(_0x5d9278){var _0x1160ec=typeof _0x3c7907[_0xeede('0x1d')]===_0xeede('0x1e')&&typeof _0x3c7907[_0xeede('0x1f')]==='undefined';var _0x3a0b74=_0x5d9278['count'];var _0x5933a9=_0x1160ec?0x0:_0x3c7907[_0xeede('0x1d')];var _0x4b03c5=_0x1160ec?_0x5d9278[_0xeede('0x20')]:_0x3c7907[_0xeede('0x1d')]+_0x3c7907[_0xeede('0x1f')];var _0x23ef98;if(_0x4b03c5>=_0x3a0b74){_0x4b03c5=_0x3a0b74;_0x23ef98=0xc8;}else{_0x23ef98=0xce;}_0x3f6ad0[_0xeede('0x1a')](_0x23ef98);return _0x3f6ad0[_0xeede('0x21')](_0xeede('0x22'),_0x5933a9+'-'+_0x4b03c5+'/'+_0x3a0b74)['json'](_0x5d9278);}return null;};}function patchUpdates(_0x4332c3){return function(_0x168e47){try{jsonpatch[_0xeede('0x23')](_0x168e47,_0x4332c3,!![]);}catch(_0x170b46){return BPromise[_0xeede('0x24')](_0x170b46);}return _0x168e47[_0xeede('0x25')]();};}function saveUpdates(_0x3e7db6,_0x54db55){return function(_0x26cabf){if(_0x26cabf){return _0x26cabf[_0xeede('0x26')](_0x3e7db6)[_0xeede('0x27')](function(_0x28ca1f){return _0x28ca1f;});}return null;};}function removeEntity(_0x5f0bfd,_0x49dc78){return function(_0x3b5c09){if(_0x3b5c09){return _0x3b5c09[_0xeede('0x28')]()[_0xeede('0x27')](function(){_0x5f0bfd[_0xeede('0x1a')](0xcc)[_0xeede('0x1b')]();});}};}function handleEntityNotFound(_0x1adb7a,_0x55a836){return function(_0x13243a){if(!_0x13243a){_0x1adb7a[_0xeede('0x19')](0x194);}return _0x13243a;};}function handleError(_0x4cb08a,_0x2d0d75){_0x2d0d75=_0x2d0d75||0x1f4;return function(_0x57e9e6){logger[_0xeede('0x29')](_0x57e9e6['stack']);if(_0x57e9e6[_0xeede('0x2a')]){delete _0x57e9e6[_0xeede('0x2a')];}_0x4cb08a[_0xeede('0x1a')](_0x2d0d75)[_0xeede('0x2b')](_0x57e9e6);};}exports['index']=function(_0x4db83d,_0x445a23){var _0x5b9aaa={},_0x2093b1={},_0x5d3a97={'count':0x0,'rows':[]};var _0x2070b6=_[_0xeede('0x2c')](db['VoiceMailMessage'][_0xeede('0x2d')],function(_0xca2e88){return{'name':_0xca2e88[_0xeede('0x2e')],'type':_0xca2e88[_0xeede('0x2f')][_0xeede('0x30')]};});_0x2093b1[_0xeede('0x31')]=_[_0xeede('0x32')](_[_0xeede('0x2c')](_0x2070b6,'name'),[_0xeede('0x2a')]);_0x2093b1[_0xeede('0x33')]=_[_0xeede('0x34')](_0x4db83d[_0xeede('0x33')]);_0x2093b1['filters']=_[_0xeede('0x35')](_0x2093b1['model'],_0x2093b1[_0xeede('0x33')]);_0x5b9aaa[_0xeede('0x36')]=_[_0xeede('0x35')](_0x2093b1[_0xeede('0x31')],qs['fields'](_0x4db83d[_0xeede('0x33')][_0xeede('0x37')]));_0x5b9aaa[_0xeede('0x36')]=_0x5b9aaa[_0xeede('0x36')][_0xeede('0x38')]?_0x5b9aaa[_0xeede('0x36')]:_0x2093b1[_0xeede('0x31')];if(!_0x4db83d[_0xeede('0x33')][_0xeede('0x39')]('nolimit')){_0x5b9aaa['limit']=qs['limit'](_0x4db83d[_0xeede('0x33')][_0xeede('0x1f')]);_0x5b9aaa[_0xeede('0x1d')]=qs['offset'](_0x4db83d['query'][_0xeede('0x1d')]);}_0x5b9aaa['order']=qs[_0xeede('0x3a')](_0x4db83d['query'][_0xeede('0x3a')]);_0x5b9aaa[_0xeede('0x3b')]=qs[_0xeede('0x3c')](_['pick'](_0x4db83d[_0xeede('0x33')],_0x2093b1[_0xeede('0x3c')]),_0x2070b6);if(_0x4db83d[_0xeede('0x33')][_0xeede('0x3d')]){_0x5b9aaa[_0xeede('0x3b')]=_[_0xeede('0x3e')](_0x5b9aaa[_0xeede('0x3b')],{'$or':_[_0xeede('0x2c')](_0x2070b6,function(_0xee1cb0){if(_0xee1cb0[_0xeede('0x2f')]!==_0xeede('0x3f')){var _0x38e3c5={};_0x38e3c5[_0xee1cb0['name']]={'$like':'%'+_0x4db83d['query'][_0xeede('0x3d')]+'%'};return _0x38e3c5;}})});}_0x5b9aaa=_[_0xeede('0x3e')]({},_0x5b9aaa,_0x4db83d[_0xeede('0x40')]);var _0x1ceb77={'where':_0x5b9aaa[_0xeede('0x3b')]};return db[_0xeede('0x41')][_0xeede('0x20')](_0x1ceb77)[_0xeede('0x27')](function(_0x2fdc64){_0x5d3a97[_0xeede('0x20')]=_0x2fdc64;if(_0x4db83d['query'][_0xeede('0x42')]){_0x5b9aaa[_0xeede('0x43')]=[{'all':!![]}];}return db[_0xeede('0x41')]['findAll'](_0x5b9aaa);})[_0xeede('0x27')](function(_0x44f181){_0x5d3a97[_0xeede('0x44')]=_0x44f181;return _0x5d3a97;})[_0xeede('0x27')](respondWithFilteredResult(_0x445a23,_0x5b9aaa))['catch'](handleError(_0x445a23,null));};exports['show']=function(_0x2e0fd6,_0x4d4da8){var _0x38be87={'raw':!![],'where':{'id':_0x2e0fd6[_0xeede('0x45')]['id']}},_0x2cf507={};_0x2cf507[_0xeede('0x31')]=_['keys'](db[_0xeede('0x41')]['rawAttributes']);_0x2cf507[_0xeede('0x33')]=_['keys'](_0x2e0fd6[_0xeede('0x33')]);_0x2cf507['filters']=_['intersection'](_0x2cf507['model'],_0x2cf507[_0xeede('0x33')]);_0x38be87[_0xeede('0x36')]=_[_0xeede('0x35')](_0x2cf507['model'],qs[_0xeede('0x37')](_0x2e0fd6['query']['fields']));_0x38be87['attributes']=_0x38be87[_0xeede('0x36')][_0xeede('0x38')]?_0x38be87['attributes']:_0x2cf507[_0xeede('0x31')];if(_0x2e0fd6[_0xeede('0x33')][_0xeede('0x42')]){_0x38be87['include']=[{'all':!![]}];}_0x38be87=_[_0xeede('0x3e')]({},_0x38be87,_0x2e0fd6[_0xeede('0x40')]);return db[_0xeede('0x41')][_0xeede('0x46')](_0x38be87)[_0xeede('0x27')](handleEntityNotFound(_0x4d4da8,null))['then'](respondWithResult(_0x4d4da8,null))[_0xeede('0x47')](handleError(_0x4d4da8,null));};exports[_0xeede('0x48')]=function(_0x3f14e5,_0x4d7274){return db[_0xeede('0x41')][_0xeede('0x48')](_0x3f14e5['body'],{})[_0xeede('0x27')](respondWithResult(_0x4d7274,0xc9))[_0xeede('0x47')](handleError(_0x4d7274,null));};exports[_0xeede('0x26')]=function(_0x3d2c38,_0x46eda9){if(_0x3d2c38[_0xeede('0x49')]['id']){delete _0x3d2c38['body']['id'];}return db['VoiceMailMessage'][_0xeede('0x46')]({'where':{'id':_0x3d2c38[_0xeede('0x45')]['id']}})[_0xeede('0x27')](handleEntityNotFound(_0x46eda9,null))[_0xeede('0x27')](saveUpdates(_0x3d2c38[_0xeede('0x49')],null))[_0xeede('0x27')](respondWithResult(_0x46eda9,null))[_0xeede('0x47')](handleError(_0x46eda9,null));};exports[_0xeede('0x28')]=function(_0x4b26f5,_0x3e8002){return db[_0xeede('0x41')][_0xeede('0x46')]({'where':{'id':_0x4b26f5[_0xeede('0x45')]['id']}})['then'](handleEntityNotFound(_0x3e8002,null))[_0xeede('0x27')](removeEntity(_0x3e8002,null))[_0xeede('0x47')](handleError(_0x3e8002,null));};exports[_0xeede('0x4a')]=function(_0x4a88f2,_0x1feda5,_0x33518c){return db[_0xeede('0x41')]['find']({'where':{'id':_0x4a88f2['params']['id']},'attributes':['id',_0xeede('0x4b'),_0xeede('0x4c')]})[_0xeede('0x27')](handleEntityNotFound(_0x1feda5,null))['then'](function(_0xc9f70c){if(_0xc9f70c){if(!_0xc9f70c[_0xeede('0x4b')]){throw new db['Sequelize']['ValidationError'](_0xeede('0x4d'));}var _0x33e8ec={'Content-Type':_0xeede('0x4e'),'Content-Disposition':_0xeede('0x4f')};if(_0xc9f70c[_0xeede('0x4c')]){_0x33e8ec['Content-Disposition']=_0xeede('0x50')+_0xc9f70c[_0xeede('0x4c')]+_0xeede('0x51');}_0x1feda5[_0xeede('0x21')](_0x33e8ec);return _0x1feda5[_0xeede('0x2b')](new Buffer(_0xc9f70c[_0xeede('0x4b')]));}})[_0xeede('0x47')](handleError(_0x1feda5,null));};
\ No newline at end of file
index cc43d55..1996943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b3=['voice_voicemail_messages','dir','util','api','moment','request-promise','path','rimraf','./voiceMailMessage.attributes','exports','define','VoiceMailMessage'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xd8b3,0x16a));var _0x3d8b=function(_0x3ccac1,_0x5cc7ea){_0x3ccac1=_0x3ccac1-0x0;var _0x10b20b=_0xd8b3[_0x3ccac1];return _0x10b20b;};'use strict';var _=require('lodash');var util=require(_0x3d8b('0x0'));var logger=require('../../config/logger')(_0x3d8b('0x1'));var moment=require(_0x3d8b('0x2'));var BPromise=require('bluebird');var rp=require(_0x3d8b('0x3'));var fs=require('fs');var path=require(_0x3d8b('0x4'));var rimraf=require(_0x3d8b('0x5'));var config=require('../../config/environment');var attributes=require(_0x3d8b('0x6'));module[_0x3d8b('0x7')]=function(_0x24931b,_0x3402f0){return _0x24931b[_0x3d8b('0x8')](_0x3d8b('0x9'),attributes,{'tableName':_0x3d8b('0xa'),'paranoid':![],'indexes':[{'name':_0x3d8b('0xb'),'fields':[_0x3d8b('0xb')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x631f=['api','bluebird','path','rimraf','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util'];(function(_0x3a28e2,_0x58325a){var _0xfd325a=function(_0xf77ee7){while(--_0xf77ee7){_0x3a28e2['push'](_0x3a28e2['shift']());}};_0xfd325a(++_0x58325a);}(_0x631f,0x172));var _0xf631=function(_0x58fbb0,_0xe497b5){_0x58fbb0=_0x58fbb0-0x0;var _0x1783d2=_0x631f[_0x58fbb0];return _0x1783d2;};'use strict';var _=require(_0xf631('0x0'));var util=require(_0xf631('0x1'));var logger=require('../../config/logger')(_0xf631('0x2'));var moment=require('moment');var BPromise=require(_0xf631('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf631('0x4'));var rimraf=require(_0xf631('0x5'));var config=require('../../config/environment');var attributes=require(_0xf631('0x6'));module[_0xf631('0x7')]=function(_0x5d0e09,_0x411768){return _0x5d0e09[_0xf631('0x8')](_0xf631('0x9'),attributes,{'tableName':_0xf631('0xa'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0xf631('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index 61a2e54..f10cf00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd36c=['../../config/environment','jayson/promise','http','request','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x58e931,_0x22c547){var _0x425696=function(_0x5a4819){while(--_0x5a4819){_0x58e931['push'](_0x58e931['shift']());}};_0x425696(++_0x22c547);}(_0xd36c,0x115));var _0xcd36=function(_0x32b993,_0x1c5989){_0x32b993=_0x32b993-0x0;var _0x482780=_0xd36c[_0x32b993];return _0x482780;};'use strict';var _=require(_0xcd36('0x0'));var util=require(_0xcd36('0x1'));var moment=require(_0xcd36('0x2'));var BPromise=require(_0xcd36('0x3'));var rs=require(_0xcd36('0x4'));var fs=require('fs');var Redis=require(_0xcd36('0x5'));var db=require(_0xcd36('0x6'))['db'];var utils=require(_0xcd36('0x7'));var logger=require('../../config/logger')(_0xcd36('0x8'));var config=require(_0xcd36('0x9'));var jayson=require(_0xcd36('0xa'));var client=jayson['client'][_0xcd36('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x407851,_0x211284,_0x17eeb6){return new BPromise(function(_0x2517c4,_0x5e1ad5){return client[_0xcd36('0xc')](_0x407851,_0x17eeb6)['then'](function(_0x26e42c){logger[_0xcd36('0xd')](_0xcd36('0xe'),_0x211284,_0xcd36('0xf'));logger['debug'](_0xcd36('0x10'),_0x211284,_0xcd36('0xf'),JSON[_0xcd36('0x11')](_0x26e42c));if(_0x26e42c[_0xcd36('0x12')]){if(_0x26e42c[_0xcd36('0x12')][_0xcd36('0x13')]===0x1f4){logger['error'](_0xcd36('0xe'),_0x211284,_0x26e42c[_0xcd36('0x12')][_0xcd36('0x14')]);return _0x5e1ad5(_0x26e42c[_0xcd36('0x12')][_0xcd36('0x14')]);}logger[_0xcd36('0x12')](_0xcd36('0xe'),_0x211284,_0x26e42c[_0xcd36('0x12')][_0xcd36('0x14')]);return _0x2517c4(_0x26e42c[_0xcd36('0x12')][_0xcd36('0x14')]);}else{logger['info'](_0xcd36('0xe'),_0x211284,_0xcd36('0xf'));_0x2517c4(_0x26e42c[_0xcd36('0x15')]['message']);}})['catch'](function(_0x253bed){logger[_0xcd36('0x12')](_0xcd36('0xe'),_0x211284,_0x253bed);_0x5e1ad5(_0x253bed);});});}
\ No newline at end of file
+var _0xa156=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','request','then','VoiceMailMessage,\x20%s,\x20%s','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','lodash'];(function(_0x4c7fb5,_0x2548ef){var _0x2e10ac=function(_0xf7e27c){while(--_0xf7e27c){_0x4c7fb5['push'](_0x4c7fb5['shift']());}};_0x2e10ac(++_0x2548ef);}(_0xa156,0xa7));var _0x6a15=function(_0x1c7964,_0x7176e3){_0x1c7964=_0x1c7964-0x0;var _0x5a13e8=_0xa156[_0x1c7964];return _0x5a13e8;};'use strict';var _=require(_0x6a15('0x0'));var util=require(_0x6a15('0x1'));var moment=require('moment');var BPromise=require(_0x6a15('0x2'));var rs=require(_0x6a15('0x3'));var fs=require('fs');var Redis=require(_0x6a15('0x4'));var db=require(_0x6a15('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6a15('0x6'))(_0x6a15('0x7'));var config=require(_0x6a15('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x58da31,_0x3b4a34,_0x648545){return new BPromise(function(_0x36577e,_0x4d3157){return client[_0x6a15('0x9')](_0x58da31,_0x648545)[_0x6a15('0xa')](function(_0x16b571){logger['info'](_0x6a15('0xb'),_0x3b4a34,'request\x20sent');logger[_0x6a15('0xc')](_0x6a15('0xd'),_0x3b4a34,_0x6a15('0xe'),JSON[_0x6a15('0xf')](_0x16b571));if(_0x16b571[_0x6a15('0x10')]){if(_0x16b571['error']['code']===0x1f4){logger[_0x6a15('0x10')](_0x6a15('0xb'),_0x3b4a34,_0x16b571[_0x6a15('0x10')][_0x6a15('0x11')]);return _0x4d3157(_0x16b571[_0x6a15('0x10')][_0x6a15('0x11')]);}logger['error'](_0x6a15('0xb'),_0x3b4a34,_0x16b571[_0x6a15('0x10')][_0x6a15('0x11')]);return _0x36577e(_0x16b571[_0x6a15('0x10')][_0x6a15('0x11')]);}else{logger[_0x6a15('0x12')]('VoiceMailMessage,\x20%s,\x20%s',_0x3b4a34,_0x6a15('0xe'));_0x36577e(_0x16b571[_0x6a15('0x13')]['message']);}})[_0x6a15('0x14')](function(_0x1f6596){logger['error'](_0x6a15('0xb'),_0x3b4a34,_0x1f6596);_0x4d3157(_0x1f6596);});});}
\ No newline at end of file
index f16e18c..57c4f2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d7e=['delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','/:id','show','/:id/sounds','getSounds','create','post','put','update'];(function(_0x461f6d,_0x45549b){var _0x4ab620=function(_0x1af48e){while(--_0x1af48e){_0x461f6d['push'](_0x461f6d['shift']());}};_0x4ab620(++_0x45549b);}(_0x2d7e,0x13e));var _0xe2d7=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x2d7e[_0x4565bf];return _0x5610ba;};'use strict';var multer=require(_0xe2d7('0x0'));var util=require(_0xe2d7('0x1'));var path=require(_0xe2d7('0x2'));var timeout=require(_0xe2d7('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xe2d7('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe2d7('0x5'));var config=require(_0xe2d7('0x6'));var controller=require(_0xe2d7('0x7'));router[_0xe2d7('0x8')]('/',auth[_0xe2d7('0x9')](),controller['index']);router[_0xe2d7('0x8')](_0xe2d7('0xa'),auth[_0xe2d7('0x9')](),controller[_0xe2d7('0xb')]);router[_0xe2d7('0x8')](_0xe2d7('0xc'),auth[_0xe2d7('0x9')](),controller[_0xe2d7('0xd')]);router['post']('/',auth[_0xe2d7('0x9')](),controller[_0xe2d7('0xe')]);router[_0xe2d7('0xf')](_0xe2d7('0xc'),auth[_0xe2d7('0x9')](),controller['addSound']);router[_0xe2d7('0x10')]('/:id',auth[_0xe2d7('0x9')](),controller[_0xe2d7('0x11')]);router[_0xe2d7('0x12')](_0xe2d7('0xa'),auth[_0xe2d7('0x9')](),controller[_0xe2d7('0x13')]);router[_0xe2d7('0x12')]('/:id/sounds/:id2',auth[_0xe2d7('0x9')](),controller['removeSound']);module[_0xe2d7('0x14')]=router;
\ No newline at end of file
+var _0xb5d8=['../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','/:id/sounds','getSounds','post','addSound','put','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x51afc1,_0x467f6a){var _0x4f91cd=function(_0x881c7f){while(--_0x881c7f){_0x51afc1['push'](_0x51afc1['shift']());}};_0x4f91cd(++_0x467f6a);}(_0xb5d8,0x188));var _0x8b5d=function(_0x46f206,_0x11cfa1){_0x46f206=_0x46f206-0x0;var _0x54ebb3=_0xb5d8[_0x46f206];return _0x54ebb3;};'use strict';var multer=require(_0x8b5d('0x0'));var util=require(_0x8b5d('0x1'));var path=require(_0x8b5d('0x2'));var timeout=require(_0x8b5d('0x3'));var express=require('express');var router=express[_0x8b5d('0x4')]();var fs_extra=require(_0x8b5d('0x5'));var auth=require(_0x8b5d('0x6'));var interaction=require(_0x8b5d('0x7'));var config=require(_0x8b5d('0x8'));var controller=require(_0x8b5d('0x9'));router[_0x8b5d('0xa')]('/',auth[_0x8b5d('0xb')](),controller[_0x8b5d('0xc')]);router[_0x8b5d('0xa')](_0x8b5d('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x8b5d('0xa')](_0x8b5d('0xe'),auth[_0x8b5d('0xb')](),controller[_0x8b5d('0xf')]);router[_0x8b5d('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x8b5d('0x10')](_0x8b5d('0xe'),auth['isAuthenticated'](),controller[_0x8b5d('0x11')]);router[_0x8b5d('0x12')](_0x8b5d('0xd'),auth[_0x8b5d('0xb')](),controller['update']);router[_0x8b5d('0x13')]('/:id',auth[_0x8b5d('0xb')](),controller['destroy']);router[_0x8b5d('0x13')]('/:id/sounds/:id2',auth[_0x8b5d('0xb')](),controller['removeSound']);module[_0x8b5d('0x14')]=router;
\ No newline at end of file
index e131dd2..5b7b80e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd537=['TIMESTAMP','STRING','ENUM','custom','files','quietmp3nb','mp3','alpha'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0xd537,0x159));var _0x7d53=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xd537[_0x5d6456];return _0x4d66c1;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x7d53('0x0')],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0x7d53('0x1')](_0x7d53('0x2'),_0x7d53('0x3'),'mp3nb',_0x7d53('0x4'),'quietmp3',_0x7d53('0x5')),'allowNull':!![],'defaultValue':'files'},'directory':{'type':Sequelize[_0x7d53('0x0')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x7d53('0x0')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x7d53('0x6')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0x7d53('0x7')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xac5d=['sequelize','exports','name','ENUM','custom','files','quietmp3nb','quietmp3','mp3','STRING','alpha','TIMESTAMP'];(function(_0x2a8dbb,_0x93a558){var _0x54d847=function(_0x4146ab){while(--_0x4146ab){_0x2a8dbb['push'](_0x2a8dbb['shift']());}};_0x54d847(++_0x93a558);}(_0xac5d,0x144));var _0xdac5=function(_0x5b73ff,_0x1cba4d){_0x5b73ff=_0x5b73ff-0x0;var _0x1c4ba4=_0xac5d[_0x5b73ff];return _0x1c4ba4;};'use strict';var Sequelize=require(_0xdac5('0x0'));module[_0xdac5('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xdac5('0x2')},'mode':{'type':Sequelize[_0xdac5('0x3')](_0xdac5('0x4'),_0xdac5('0x5'),'mp3nb',_0xdac5('0x6'),_0xdac5('0x7'),_0xdac5('0x8')),'allowNull':!![],'defaultValue':_0xdac5('0x5')},'directory':{'type':Sequelize[_0xdac5('0x9')],'allowNull':!![]},'application':{'type':Sequelize[_0xdac5('0x9')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize[_0xdac5('0x9')],'allowNull':!![],'defaultValue':_0xdac5('0xa')},'format':{'type':Sequelize[_0xdac5('0x9')],'allowNull':!![]},'stamp':{'type':_0xdac5('0xb')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index 050d6c0..fbbdfb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x146c=['findOne','id2','getSounds','length','order','filter','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','then','destroy','get','UserProfileResource','sendStatus','stack','name','send','index','map','VoiceMusicOnHold','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','merge','where','VIRTUAL','include','findAll','rows','catch','show','rawAttributes','includeAll','options','find','update','body','params','sequelize','transaction','mode','files','directory','join','root','server/files/moh','create','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','unlinkSync','rmdirSync','ValidationError','message','addSound','Sound','converted_format','server/files/sounds/converted','format','save_name','%s.%s','Sequelize','removeSound'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x146c,0x1c6));var _0xc146=function(_0x3bbc7e,_0x4c27c7){_0x3bbc7e=_0x3bbc7e-0x0;var _0x250a02=_0x146c[_0x3bbc7e];return _0x250a02;};'use strict';var emlformat=require(_0xc146('0x0'));var rimraf=require(_0xc146('0x1'));var zipdir=require(_0xc146('0x2'));var jsonpatch=require(_0xc146('0x3'));var rp=require(_0xc146('0x4'));var moment=require(_0xc146('0x5'));var BPromise=require(_0xc146('0x6'));var Mustache=require('mustache');var util=require(_0xc146('0x7'));var path=require(_0xc146('0x8'));var sox=require(_0xc146('0x9'));var csv=require('to-csv');var ejs=require(_0xc146('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc146('0xb'));var squel=require(_0xc146('0xc'));var crypto=require(_0xc146('0xd'));var jsforce=require(_0xc146('0xe'));var deskjs=require(_0xc146('0xf'));var toCsv=require(_0xc146('0x10'));var querystring=require(_0xc146('0x11'));var Papa=require(_0xc146('0x12'));var Redis=require(_0xc146('0x13'));var authService=require(_0xc146('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xc146('0x15'));var hardwareService=require(_0xc146('0x16'));var logger=require(_0xc146('0x17'))(_0xc146('0x18'));var utils=require(_0xc146('0x19'));var config=require(_0xc146('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xc146('0x1b'))['db'];function respondWithStatusCode(_0x4abb83,_0x2f92a8){_0x2f92a8=_0x2f92a8||0xcc;return function(_0x1cfc9a){if(_0x1cfc9a){return _0x4abb83['sendStatus'](_0x2f92a8);}return _0x4abb83['status'](_0x2f92a8)[_0xc146('0x1c')]();};}function respondWithResult(_0x2a4ab5,_0x15d570){_0x15d570=_0x15d570||0xc8;return function(_0x4c2d2d){if(_0x4c2d2d){return _0x2a4ab5[_0xc146('0x1d')](_0x15d570)[_0xc146('0x1e')](_0x4c2d2d);}};}function respondWithFilteredResult(_0x2c38f2,_0x104926){return function(_0x40ae2c){if(_0x40ae2c){var _0x5bd016=typeof _0x104926['offset']==='undefined'&&typeof _0x104926[_0xc146('0x1f')]===_0xc146('0x20');var _0x11904d=_0x40ae2c[_0xc146('0x21')];var _0x3a55e1=_0x5bd016?0x0:_0x104926[_0xc146('0x22')];var _0x3ced8b=_0x5bd016?_0x40ae2c[_0xc146('0x21')]:_0x104926[_0xc146('0x22')]+_0x104926['limit'];var _0x1792a8;if(_0x3ced8b>=_0x11904d){_0x3ced8b=_0x11904d;_0x1792a8=0xc8;}else{_0x1792a8=0xce;}_0x2c38f2[_0xc146('0x1d')](_0x1792a8);return _0x2c38f2[_0xc146('0x23')](_0xc146('0x24'),_0x3a55e1+'-'+_0x3ced8b+'/'+_0x11904d)[_0xc146('0x1e')](_0x40ae2c);}return null;};}function patchUpdates(_0x17ab95){return function(_0x284343){try{jsonpatch[_0xc146('0x25')](_0x284343,_0x17ab95,!![]);}catch(_0x6f454d){return BPromise['reject'](_0x6f454d);}return _0x284343['save']();};}function saveUpdates(_0x3a2fd4,_0x40ff5d){return function(_0x573bac){if(_0x573bac){return _0x573bac['update'](_0x3a2fd4)[_0xc146('0x26')](function(_0x47edad){return _0x47edad;});}return null;};}function removeEntity(_0x4cad60,_0x4bbfad){return function(_0x2d8417){if(_0x2d8417){return _0x2d8417[_0xc146('0x27')]()[_0xc146('0x26')](function(){var _0x2af924=_0x2d8417[_0xc146('0x28')]({'plain':!![]});var _0xaa8296='MusicOnHolds';return db[_0xc146('0x29')][_0xc146('0x27')]({'where':{'type':_0xaa8296,'resourceId':_0x2af924['id']}})[_0xc146('0x26')](function(){return _0x2d8417;});})['then'](function(){_0x4cad60[_0xc146('0x1d')](0xcc)[_0xc146('0x1c')]();});}};}function handleEntityNotFound(_0x8286d6,_0x55a75c){return function(_0x255270){if(!_0x255270){_0x8286d6[_0xc146('0x2a')](0x194);}return _0x255270;};}function handleError(_0x25e61b,_0x56916e){_0x56916e=_0x56916e||0x1f4;return function(_0x4ea659){logger['error'](_0x4ea659[_0xc146('0x2b')]);if(_0x4ea659[_0xc146('0x2c')]){delete _0x4ea659[_0xc146('0x2c')];}_0x25e61b[_0xc146('0x1d')](_0x56916e)[_0xc146('0x2d')](_0x4ea659);};}exports[_0xc146('0x2e')]=function(_0x530ebf,_0x337151){var _0x144523={},_0x515486={},_0x4d254b={'count':0x0,'rows':[]};var _0x2e17d3=_[_0xc146('0x2f')](db[_0xc146('0x30')]['rawAttributes'],function(_0x338541){return{'name':_0x338541['fieldName'],'type':_0x338541[_0xc146('0x31')][_0xc146('0x32')]};});_0x515486[_0xc146('0x33')]=_[_0xc146('0x2f')](_0x2e17d3,'name');_0x515486[_0xc146('0x34')]=_[_0xc146('0x35')](_0x530ebf[_0xc146('0x34')]);_0x515486[_0xc146('0x36')]=_[_0xc146('0x37')](_0x515486[_0xc146('0x33')],_0x515486['query']);_0x144523[_0xc146('0x38')]=_[_0xc146('0x37')](_0x515486['model'],qs[_0xc146('0x39')](_0x530ebf[_0xc146('0x34')][_0xc146('0x39')]));_0x144523[_0xc146('0x38')]=_0x144523[_0xc146('0x38')]['length']?_0x144523[_0xc146('0x38')]:_0x515486['model'];if(!_0x530ebf[_0xc146('0x34')][_0xc146('0x3a')](_0xc146('0x3b'))){_0x144523[_0xc146('0x1f')]=qs[_0xc146('0x1f')](_0x530ebf[_0xc146('0x34')][_0xc146('0x1f')]);_0x144523[_0xc146('0x22')]=qs[_0xc146('0x22')](_0x530ebf[_0xc146('0x34')][_0xc146('0x22')]);}_0x144523['order']=qs[_0xc146('0x3c')](_0x530ebf[_0xc146('0x34')][_0xc146('0x3c')]);delete _0x530ebf[_0xc146('0x34')]['sort'];_0x144523['where']=qs[_0xc146('0x36')](_[_0xc146('0x3d')](_0x530ebf[_0xc146('0x34')],_0x515486['filters']),_0x2e17d3);if(_0x530ebf[_0xc146('0x34')]['filter']){_0x144523['where']=_[_0xc146('0x3e')](_0x144523[_0xc146('0x3f')],{'$or':_[_0xc146('0x2f')](_0x2e17d3,function(_0x370d4d){if(_0x370d4d[_0xc146('0x31')]!==_0xc146('0x40')){var _0x477ce7={};_0x477ce7[_0x370d4d[_0xc146('0x2c')]]={'$like':'%'+_0x530ebf[_0xc146('0x34')]['filter']+'%'};return _0x477ce7;}})});}_0x144523=_[_0xc146('0x3e')]({},_0x144523,_0x530ebf['options']);var _0x1b44c4={'where':_0x144523[_0xc146('0x3f')]};return db['VoiceMusicOnHold'][_0xc146('0x21')](_0x1b44c4)['then'](function(_0x2c581e){_0x4d254b['count']=_0x2c581e;if(_0x530ebf[_0xc146('0x34')]['includeAll']){_0x144523[_0xc146('0x41')]=[{'all':!![]}];}return db[_0xc146('0x30')][_0xc146('0x42')](_0x144523);})[_0xc146('0x26')](function(_0xfbb761){_0x4d254b[_0xc146('0x43')]=_0xfbb761;return _0x4d254b;})[_0xc146('0x26')](respondWithFilteredResult(_0x337151,_0x144523))[_0xc146('0x44')](handleError(_0x337151,null));};exports[_0xc146('0x45')]=function(_0x2dec57,_0xcc1d88){var _0x24ed2c={'raw':![],'where':{'id':_0x2dec57['params']['id']}},_0xe618f2={};_0xe618f2[_0xc146('0x33')]=_[_0xc146('0x35')](db['VoiceMusicOnHold'][_0xc146('0x46')]);_0xe618f2['query']=_['keys'](_0x2dec57[_0xc146('0x34')]);_0xe618f2['filters']=_[_0xc146('0x37')](_0xe618f2[_0xc146('0x33')],_0xe618f2[_0xc146('0x34')]);_0x24ed2c['attributes']=_[_0xc146('0x37')](_0xe618f2[_0xc146('0x33')],qs['fields'](_0x2dec57['query'][_0xc146('0x39')]));_0x24ed2c[_0xc146('0x38')]=_0x24ed2c[_0xc146('0x38')]['length']?_0x24ed2c[_0xc146('0x38')]:_0xe618f2[_0xc146('0x33')];if(_0x2dec57[_0xc146('0x34')][_0xc146('0x47')]){_0x24ed2c[_0xc146('0x41')]=[{'all':!![]}];}_0x24ed2c=_[_0xc146('0x3e')]({},_0x24ed2c,_0x2dec57[_0xc146('0x48')]);return db[_0xc146('0x30')][_0xc146('0x49')](_0x24ed2c)[_0xc146('0x26')](handleEntityNotFound(_0xcc1d88,null))[_0xc146('0x26')](respondWithResult(_0xcc1d88,null))['catch'](handleError(_0xcc1d88,null));};exports[_0xc146('0x4a')]=function(_0x1f82ea,_0x4518b0){if(_0x1f82ea[_0xc146('0x4b')]['id']){delete _0x1f82ea[_0xc146('0x4b')]['id'];}return db[_0xc146('0x30')]['find']({'where':{'id':_0x1f82ea[_0xc146('0x4c')]['id']}})[_0xc146('0x26')](handleEntityNotFound(_0x4518b0,null))[_0xc146('0x26')](saveUpdates(_0x1f82ea[_0xc146('0x4b')],null))['then'](respondWithResult(_0x4518b0,null))['catch'](handleError(_0x4518b0,null));};exports['create']=function(_0x326bad,_0x5e4b05,_0x3974f3){return db[_0xc146('0x4d')][_0xc146('0x4e')](function(_0x38cc0f){if(_0x326bad[_0xc146('0x4b')][_0xc146('0x4f')]===_0xc146('0x50')){_0x326bad['body'][_0xc146('0x51')]=path[_0xc146('0x52')](config[_0xc146('0x53')],_0xc146('0x54'),_0x326bad[_0xc146('0x4b')]['name']);}return db['VoiceMusicOnHold'][_0xc146('0x55')](_0x326bad['body'],{'transaction':_0x38cc0f})[_0xc146('0x26')](function(_0x414ec6){if(_0x326bad[_0xc146('0x4b')][_0xc146('0x4f')]===_0xc146('0x50')){fs['mkdirSync'](_0x414ec6[_0xc146('0x51')],parseInt(_0xc146('0x56'),0x8));}var _0x25267d=_0x326bad[_0xc146('0x57')]['get']({'plain':!![]});if(!_0x25267d)throw new Error(_0xc146('0x58'));if(_0x25267d[_0xc146('0x59')]==='user'){var _0x145f53=_0x414ec6['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':'MusicOnHolds','userProfileId':_0x25267d['userProfileId']},'raw':!![]})['then'](function(_0x27bfcf){if(_0x27bfcf&&_0x27bfcf['autoAssociation']===0x0){return db['UserProfileResource'][_0xc146('0x55')]({'name':_0x145f53[_0xc146('0x2c')],'resourceId':_0x145f53['id'],'type':_0x27bfcf['name'],'sectionId':_0x27bfcf['id']},{})[_0xc146('0x26')](function(){return _0x414ec6;});}else{return _0x414ec6;}})['catch'](function(_0x417cec){logger[_0xc146('0x5a')](_0xc146('0x5b'),_0x417cec);});}return _0x414ec6;});})[_0xc146('0x26')](respondWithResult(_0x5e4b05,0xc9))[_0xc146('0x44')](handleError(_0x5e4b05,null));};exports['destroy']=function(_0x2a56d9,_0x186e91,_0x6fd067){var _0x43ecab;return db[_0xc146('0x30')][_0xc146('0x49')]({'where':{'id':_0x2a56d9['params']['id']}})['then'](function(_0x4733a3){if(_0x4733a3){return db[_0xc146('0x4d')][_0xc146('0x4e')](function(_0x54733c){return _0x4733a3[_0xc146('0x27')]({'transaction':_0x54733c,'raw':!![]})[_0xc146('0x26')](function(_0x245710){if(_0x245710[_0xc146('0x51')]){fs[_0xc146('0x5c')](_0x245710['directory'])['forEach'](function(_0x57abd5){fs[_0xc146('0x5d')](path[_0xc146('0x52')](_0x245710[_0xc146('0x51')],_0x57abd5));});fs[_0xc146('0x5e')](_0x245710[_0xc146('0x51')]);}return _0x245710;});})['catch'](function(_0x554854){throw new db['Sequelize'][(_0xc146('0x5f'))](_0x554854[_0xc146('0x60')]);});}})[_0xc146('0x26')](handleEntityNotFound(_0x186e91,null))[_0xc146('0x26')](removeEntity(_0x186e91,null))[_0xc146('0x44')](handleError(_0x186e91,null));};exports[_0xc146('0x61')]=function(_0x365c47,_0x2924c6,_0x694580){return db[_0xc146('0x4d')]['transaction'](function(_0x622e99){var _0x264619;return db['VoiceMusicOnHold']['find']({'where':{'id':_0x365c47['params']['id']}})['then'](function(_0xb85905){if(_0xb85905){_0x264619=_0xb85905;return _0xb85905['addSound'](_0x365c47[_0xc146('0x4b')]['id'],{'transaction':_0x622e99});}})['then'](function(_0x3ee149){if(_0x3ee149){return db[_0xc146('0x62')]['findOne']({'where':{'id':_0x365c47[_0xc146('0x4b')]['id']},'attributes':['id','name','save_name',_0xc146('0x63'),'createdAt'],'raw':!![]});}})['then'](function(_0x26250e){if(_0x26250e){var _0x16274e=path[_0xc146('0x52')](config[_0xc146('0x53')],_0xc146('0x64'),util[_0xc146('0x65')]('%s.%s',path['basename'](_0x26250e[_0xc146('0x66')],path['extname'](_0x26250e[_0xc146('0x66')])),_0x26250e[_0xc146('0x63')]));var _0x4fc15f=path[_0xc146('0x52')](config['root'],'server/files/moh',_0x264619['name'],util[_0xc146('0x65')](_0xc146('0x67'),_0x26250e['name'],_0x26250e[_0xc146('0x63')]));fs['symlinkSync'](_0x16274e,_0x4fc15f);return _0x26250e;}})['catch'](function(_0x133b80){throw new db[(_0xc146('0x68'))][(_0xc146('0x5f'))](_0x133b80['message']);});})[_0xc146('0x26')](handleEntityNotFound(_0x2924c6,null))[_0xc146('0x26')](respondWithResult(_0x2924c6,0xc9))['catch'](handleError(_0x2924c6,null));};exports[_0xc146('0x69')]=function(_0x3beb77,_0xfa54b1,_0x2cdee4){return db[_0xc146('0x4d')][_0xc146('0x4e')](function(_0x158f65){var _0xfee9b5;return db['VoiceMusicOnHold'][_0xc146('0x6a')]({'where':{'id':_0x3beb77[_0xc146('0x4c')]['id']}})[_0xc146('0x26')](handleEntityNotFound(_0xfa54b1,null))[_0xc146('0x26')](function(_0x3932f7){if(_0x3932f7){_0xfee9b5=_0x3932f7;return _0x3932f7['removeSound'](_0x3beb77[_0xc146('0x4c')][_0xc146('0x6b')]);}})['then'](function(_0x2f4a94){if(_0x2f4a94){return db['Sound'][_0xc146('0x6a')]({'where':{'id':_0x3beb77[_0xc146('0x4c')]['id2']},'attributes':['id',_0xc146('0x2c'),_0xc146('0x66'),_0xc146('0x63'),'createdAt'],'raw':!![]});}})[_0xc146('0x26')](function(_0x4e4b3d){if(_0x4e4b3d){fs[_0xc146('0x5d')](path[_0xc146('0x52')](_0xfee9b5[_0xc146('0x51')],util[_0xc146('0x65')](_0xc146('0x67'),_0x4e4b3d[_0xc146('0x2c')],_0x4e4b3d[_0xc146('0x63')])));return _0x4e4b3d;}})[_0xc146('0x44')](function(_0x1c2421){throw new db['Sequelize']['ValidationError'](_0x1c2421['message']);});})[_0xc146('0x26')](handleEntityNotFound(_0xfa54b1,null))['then'](respondWithStatusCode(_0xfa54b1,0xcc))[_0xc146('0x44')](handleError(_0xfa54b1,null));};exports[_0xc146('0x6c')]=function(_0x1b4727,_0x3c6d6e,_0x25b1ae){var _0x4dfe2f={};var _0x3a5e47={};var _0x1ff5f0;var _0x44b0ef;return db[_0xc146('0x30')][_0xc146('0x6a')]({'where':{'id':_0x1b4727[_0xc146('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3c6d6e,null))['then'](function(_0xa31bc8){if(_0xa31bc8){_0x1ff5f0=_0xa31bc8;_0x3a5e47['model']=_[_0xc146('0x35')](db[_0xc146('0x62')]['rawAttributes']);_0x3a5e47[_0xc146('0x34')]=_[_0xc146('0x35')](_0x1b4727[_0xc146('0x34')]);_0x3a5e47[_0xc146('0x36')]=_[_0xc146('0x37')](_0x3a5e47[_0xc146('0x33')],_0x3a5e47['query']);_0x4dfe2f[_0xc146('0x38')]=_[_0xc146('0x37')](_0x3a5e47[_0xc146('0x33')],qs[_0xc146('0x39')](_0x1b4727[_0xc146('0x34')][_0xc146('0x39')]));_0x4dfe2f['attributes']=_0x4dfe2f[_0xc146('0x38')][_0xc146('0x6d')]?_0x4dfe2f[_0xc146('0x38')]:_0x3a5e47[_0xc146('0x33')];_0x4dfe2f[_0xc146('0x6e')]=qs['sort'](_0x1b4727['query'][_0xc146('0x3c')]);_0x4dfe2f[_0xc146('0x3f')]=qs[_0xc146('0x36')](_['pick'](_0x1b4727[_0xc146('0x34')],_0x3a5e47[_0xc146('0x36')]));if(_0x1b4727[_0xc146('0x34')][_0xc146('0x6f')]){_0x4dfe2f[_0xc146('0x3f')]=_['merge'](_0x4dfe2f[_0xc146('0x3f')],{'$or':_[_0xc146('0x2f')](_0x4dfe2f[_0xc146('0x38')],function(_0x6f8ae3){var _0x3d9d52={};_0x3d9d52[_0x6f8ae3]={'$like':'%'+_0x1b4727[_0xc146('0x34')][_0xc146('0x6f')]+'%'};return _0x3d9d52;})});}_0x4dfe2f=_[_0xc146('0x3e')]({},_0x4dfe2f,_0x1b4727[_0xc146('0x48')]);return _0x1ff5f0['getSounds'](_0x4dfe2f);}})['then'](function(_0x303314){if(_0x303314){_0x44b0ef=_0x303314[_0xc146('0x6d')];if(!_0x1b4727[_0xc146('0x34')]['hasOwnProperty'](_0xc146('0x3b'))){_0x4dfe2f[_0xc146('0x1f')]=qs[_0xc146('0x1f')](_0x1b4727[_0xc146('0x34')][_0xc146('0x1f')]);_0x4dfe2f[_0xc146('0x22')]=qs[_0xc146('0x22')](_0x1b4727[_0xc146('0x34')][_0xc146('0x22')]);}return _0x1ff5f0['getSounds'](_0x4dfe2f);}})[_0xc146('0x26')](function(_0xc7aad1){if(_0xc7aad1){return _0xc7aad1?{'count':_0x44b0ef,'rows':_0xc7aad1}:null;}})[_0xc146('0x26')](respondWithResult(_0x3c6d6e,null))[_0xc146('0x44')](handleError(_0x3c6d6e,null));};
\ No newline at end of file
+var _0xe731=['findAll','rows','catch','show','params','includeAll','find','body','create','sequelize','transaction','mode','files','directory','join','root','server/files/moh','mkdirSync','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','readdirSync','forEach','rmdirSync','Sequelize','message','addSound','findOne','save_name','converted_format','server/files/sounds/converted','format','%s.%s','basename','extname','symlinkSync','ValidationError','removeSound','id2','createdAt','unlinkSync','getSounds','Sound','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','get','MusicOnHolds','UserProfileResource','sendStatus','error','stack','name','send','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','include'];(function(_0x1cf1a7,_0x49d1f7){var _0xd454d1=function(_0x345c8f){while(--_0x345c8f){_0x1cf1a7['push'](_0x1cf1a7['shift']());}};_0xd454d1(++_0x49d1f7);}(_0xe731,0x180));var _0x1e73=function(_0x5298e7,_0x20f266){_0x5298e7=_0x5298e7-0x0;var _0x103e14=_0xe731[_0x5298e7];return _0x103e14;};'use strict';var emlformat=require(_0x1e73('0x0'));var rimraf=require(_0x1e73('0x1'));var zipdir=require(_0x1e73('0x2'));var jsonpatch=require(_0x1e73('0x3'));var rp=require('request-promise');var moment=require(_0x1e73('0x4'));var BPromise=require(_0x1e73('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x1e73('0x6'));var sox=require(_0x1e73('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1e73('0x8'));var _=require('lodash');var squel=require(_0x1e73('0x9'));var crypto=require(_0x1e73('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x1e73('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1e73('0xc'));var authService=require(_0x1e73('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x1e73('0xe'));var hardwareService=require(_0x1e73('0xf'));var logger=require(_0x1e73('0x10'))(_0x1e73('0x11'));var utils=require(_0x1e73('0x12'));var config=require(_0x1e73('0x13'));var licenseUtil=require(_0x1e73('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4b6c0d,_0x3c8df6){_0x3c8df6=_0x3c8df6||0xcc;return function(_0x89721e){if(_0x89721e){return _0x4b6c0d['sendStatus'](_0x3c8df6);}return _0x4b6c0d[_0x1e73('0x15')](_0x3c8df6)[_0x1e73('0x16')]();};}function respondWithResult(_0x59f58f,_0x42b753){_0x42b753=_0x42b753||0xc8;return function(_0x36d9a5){if(_0x36d9a5){return _0x59f58f[_0x1e73('0x15')](_0x42b753)[_0x1e73('0x17')](_0x36d9a5);}};}function respondWithFilteredResult(_0x5c17f9,_0x108ae1){return function(_0x5d2f52){if(_0x5d2f52){var _0xcee55b=typeof _0x108ae1[_0x1e73('0x18')]===_0x1e73('0x19')&&typeof _0x108ae1[_0x1e73('0x1a')]===_0x1e73('0x19');var _0x1a1ae6=_0x5d2f52[_0x1e73('0x1b')];var _0x4a4824=_0xcee55b?0x0:_0x108ae1[_0x1e73('0x18')];var _0x456999=_0xcee55b?_0x5d2f52['count']:_0x108ae1[_0x1e73('0x18')]+_0x108ae1[_0x1e73('0x1a')];var _0x1e1923;if(_0x456999>=_0x1a1ae6){_0x456999=_0x1a1ae6;_0x1e1923=0xc8;}else{_0x1e1923=0xce;}_0x5c17f9[_0x1e73('0x15')](_0x1e1923);return _0x5c17f9[_0x1e73('0x1c')](_0x1e73('0x1d'),_0x4a4824+'-'+_0x456999+'/'+_0x1a1ae6)[_0x1e73('0x17')](_0x5d2f52);}return null;};}function patchUpdates(_0x3a587f){return function(_0x48a432){try{jsonpatch[_0x1e73('0x1e')](_0x48a432,_0x3a587f,!![]);}catch(_0x50ef30){return BPromise[_0x1e73('0x1f')](_0x50ef30);}return _0x48a432[_0x1e73('0x20')]();};}function saveUpdates(_0x169a8b,_0xaa2310){return function(_0x481ddb){if(_0x481ddb){return _0x481ddb[_0x1e73('0x21')](_0x169a8b)['then'](function(_0x5c88e5){return _0x5c88e5;});}return null;};}function removeEntity(_0x3fc861,_0x21b3a6){return function(_0x38dc84){if(_0x38dc84){return _0x38dc84[_0x1e73('0x22')]()[_0x1e73('0x23')](function(){var _0xc38877=_0x38dc84[_0x1e73('0x24')]({'plain':!![]});var _0x15ebc2=_0x1e73('0x25');return db[_0x1e73('0x26')][_0x1e73('0x22')]({'where':{'type':_0x15ebc2,'resourceId':_0xc38877['id']}})[_0x1e73('0x23')](function(){return _0x38dc84;});})[_0x1e73('0x23')](function(){_0x3fc861['status'](0xcc)[_0x1e73('0x16')]();});}};}function handleEntityNotFound(_0x2de3d2,_0x42f17d){return function(_0x10b862){if(!_0x10b862){_0x2de3d2[_0x1e73('0x27')](0x194);}return _0x10b862;};}function handleError(_0x390e26,_0x5d173f){_0x5d173f=_0x5d173f||0x1f4;return function(_0xcaa77f){logger[_0x1e73('0x28')](_0xcaa77f[_0x1e73('0x29')]);if(_0xcaa77f[_0x1e73('0x2a')]){delete _0xcaa77f[_0x1e73('0x2a')];}_0x390e26[_0x1e73('0x15')](_0x5d173f)[_0x1e73('0x2b')](_0xcaa77f);};}exports['index']=function(_0x4482f8,_0x37063b){var _0x5142b3={},_0x314d25={},_0x2dd58f={'count':0x0,'rows':[]};var _0x52e457=_[_0x1e73('0x2c')](db[_0x1e73('0x2d')][_0x1e73('0x2e')],function(_0x25829d){return{'name':_0x25829d[_0x1e73('0x2f')],'type':_0x25829d[_0x1e73('0x30')][_0x1e73('0x31')]};});_0x314d25[_0x1e73('0x32')]=_[_0x1e73('0x2c')](_0x52e457,_0x1e73('0x2a'));_0x314d25[_0x1e73('0x33')]=_[_0x1e73('0x34')](_0x4482f8[_0x1e73('0x33')]);_0x314d25[_0x1e73('0x35')]=_[_0x1e73('0x36')](_0x314d25[_0x1e73('0x32')],_0x314d25['query']);_0x5142b3[_0x1e73('0x37')]=_[_0x1e73('0x36')](_0x314d25['model'],qs[_0x1e73('0x38')](_0x4482f8[_0x1e73('0x33')]['fields']));_0x5142b3[_0x1e73('0x37')]=_0x5142b3['attributes'][_0x1e73('0x39')]?_0x5142b3['attributes']:_0x314d25[_0x1e73('0x32')];if(!_0x4482f8[_0x1e73('0x33')][_0x1e73('0x3a')](_0x1e73('0x3b'))){_0x5142b3[_0x1e73('0x1a')]=qs[_0x1e73('0x1a')](_0x4482f8['query'][_0x1e73('0x1a')]);_0x5142b3[_0x1e73('0x18')]=qs['offset'](_0x4482f8[_0x1e73('0x33')][_0x1e73('0x18')]);}_0x5142b3[_0x1e73('0x3c')]=qs[_0x1e73('0x3d')](_0x4482f8[_0x1e73('0x33')][_0x1e73('0x3d')]);delete _0x4482f8[_0x1e73('0x33')][_0x1e73('0x3d')];_0x5142b3['where']=qs[_0x1e73('0x35')](_[_0x1e73('0x3e')](_0x4482f8[_0x1e73('0x33')],_0x314d25['filters']),_0x52e457);if(_0x4482f8['query'][_0x1e73('0x3f')]){_0x5142b3[_0x1e73('0x40')]=_[_0x1e73('0x41')](_0x5142b3[_0x1e73('0x40')],{'$or':_['map'](_0x52e457,function(_0x77ef1c){if(_0x77ef1c[_0x1e73('0x30')]!=='VIRTUAL'){var _0x25e39e={};_0x25e39e[_0x77ef1c[_0x1e73('0x2a')]]={'$like':'%'+_0x4482f8[_0x1e73('0x33')][_0x1e73('0x3f')]+'%'};return _0x25e39e;}})});}_0x5142b3=_[_0x1e73('0x41')]({},_0x5142b3,_0x4482f8[_0x1e73('0x42')]);var _0x31af4b={'where':_0x5142b3[_0x1e73('0x40')]};return db[_0x1e73('0x2d')][_0x1e73('0x1b')](_0x31af4b)['then'](function(_0x25a4e6){_0x2dd58f[_0x1e73('0x1b')]=_0x25a4e6;if(_0x4482f8[_0x1e73('0x33')]['includeAll']){_0x5142b3[_0x1e73('0x43')]=[{'all':!![]}];}return db[_0x1e73('0x2d')][_0x1e73('0x44')](_0x5142b3);})[_0x1e73('0x23')](function(_0x417b55){_0x2dd58f[_0x1e73('0x45')]=_0x417b55;return _0x2dd58f;})[_0x1e73('0x23')](respondWithFilteredResult(_0x37063b,_0x5142b3))[_0x1e73('0x46')](handleError(_0x37063b,null));};exports[_0x1e73('0x47')]=function(_0x2909dc,_0x1371c6){var _0xf23433={'raw':![],'where':{'id':_0x2909dc[_0x1e73('0x48')]['id']}},_0x18b017={};_0x18b017[_0x1e73('0x32')]=_[_0x1e73('0x34')](db[_0x1e73('0x2d')][_0x1e73('0x2e')]);_0x18b017[_0x1e73('0x33')]=_[_0x1e73('0x34')](_0x2909dc[_0x1e73('0x33')]);_0x18b017['filters']=_[_0x1e73('0x36')](_0x18b017[_0x1e73('0x32')],_0x18b017[_0x1e73('0x33')]);_0xf23433[_0x1e73('0x37')]=_[_0x1e73('0x36')](_0x18b017['model'],qs[_0x1e73('0x38')](_0x2909dc['query'][_0x1e73('0x38')]));_0xf23433[_0x1e73('0x37')]=_0xf23433[_0x1e73('0x37')][_0x1e73('0x39')]?_0xf23433[_0x1e73('0x37')]:_0x18b017[_0x1e73('0x32')];if(_0x2909dc['query'][_0x1e73('0x49')]){_0xf23433[_0x1e73('0x43')]=[{'all':!![]}];}_0xf23433=_['merge']({},_0xf23433,_0x2909dc[_0x1e73('0x42')]);return db[_0x1e73('0x2d')][_0x1e73('0x4a')](_0xf23433)['then'](handleEntityNotFound(_0x1371c6,null))[_0x1e73('0x23')](respondWithResult(_0x1371c6,null))[_0x1e73('0x46')](handleError(_0x1371c6,null));};exports[_0x1e73('0x21')]=function(_0x22387d,_0x3fd677){if(_0x22387d[_0x1e73('0x4b')]['id']){delete _0x22387d[_0x1e73('0x4b')]['id'];}return db[_0x1e73('0x2d')]['find']({'where':{'id':_0x22387d[_0x1e73('0x48')]['id']}})['then'](handleEntityNotFound(_0x3fd677,null))['then'](saveUpdates(_0x22387d[_0x1e73('0x4b')],null))[_0x1e73('0x23')](respondWithResult(_0x3fd677,null))[_0x1e73('0x46')](handleError(_0x3fd677,null));};exports[_0x1e73('0x4c')]=function(_0x2d5527,_0xbed4d,_0x45f5ef){return db[_0x1e73('0x4d')][_0x1e73('0x4e')](function(_0x3082fb){if(_0x2d5527[_0x1e73('0x4b')][_0x1e73('0x4f')]===_0x1e73('0x50')){_0x2d5527[_0x1e73('0x4b')][_0x1e73('0x51')]=path[_0x1e73('0x52')](config[_0x1e73('0x53')],_0x1e73('0x54'),_0x2d5527[_0x1e73('0x4b')][_0x1e73('0x2a')]);}return db[_0x1e73('0x2d')][_0x1e73('0x4c')](_0x2d5527[_0x1e73('0x4b')],{'transaction':_0x3082fb})[_0x1e73('0x23')](function(_0x43474b){if(_0x2d5527[_0x1e73('0x4b')][_0x1e73('0x4f')]===_0x1e73('0x50')){fs[_0x1e73('0x55')](_0x43474b[_0x1e73('0x51')],parseInt('0777',0x8));}var _0x33cf61=_0x2d5527[_0x1e73('0x56')][_0x1e73('0x24')]({'plain':!![]});if(!_0x33cf61)throw new Error(_0x1e73('0x57'));if(_0x33cf61['role']===_0x1e73('0x56')){var _0xb105ca=_0x43474b['get']({'plain':!![]});return db[_0x1e73('0x58')]['find']({'where':{'name':'MusicOnHolds','userProfileId':_0x33cf61[_0x1e73('0x59')]},'raw':!![]})[_0x1e73('0x23')](function(_0x142c9b){if(_0x142c9b&&_0x142c9b[_0x1e73('0x5a')]===0x0){return db[_0x1e73('0x26')][_0x1e73('0x4c')]({'name':_0xb105ca[_0x1e73('0x2a')],'resourceId':_0xb105ca['id'],'type':_0x142c9b[_0x1e73('0x2a')],'sectionId':_0x142c9b['id']},{})['then'](function(){return _0x43474b;});}else{return _0x43474b;}})[_0x1e73('0x46')](function(_0x568107){logger[_0x1e73('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x568107);});}return _0x43474b;});})[_0x1e73('0x23')](respondWithResult(_0xbed4d,0xc9))[_0x1e73('0x46')](handleError(_0xbed4d,null));};exports[_0x1e73('0x22')]=function(_0x18fa79,_0x484e57,_0x13965a){var _0x37afbd;return db[_0x1e73('0x2d')][_0x1e73('0x4a')]({'where':{'id':_0x18fa79[_0x1e73('0x48')]['id']}})[_0x1e73('0x23')](function(_0x2db774){if(_0x2db774){return db[_0x1e73('0x4d')][_0x1e73('0x4e')](function(_0x751f77){return _0x2db774[_0x1e73('0x22')]({'transaction':_0x751f77,'raw':!![]})[_0x1e73('0x23')](function(_0x593c31){if(_0x593c31[_0x1e73('0x51')]){fs[_0x1e73('0x5b')](_0x593c31[_0x1e73('0x51')])[_0x1e73('0x5c')](function(_0x3cf6e5){fs['unlinkSync'](path[_0x1e73('0x52')](_0x593c31['directory'],_0x3cf6e5));});fs[_0x1e73('0x5d')](_0x593c31[_0x1e73('0x51')]);}return _0x593c31;});})[_0x1e73('0x46')](function(_0x465219){throw new db[(_0x1e73('0x5e'))]['ValidationError'](_0x465219[_0x1e73('0x5f')]);});}})[_0x1e73('0x23')](handleEntityNotFound(_0x484e57,null))['then'](removeEntity(_0x484e57,null))['catch'](handleError(_0x484e57,null));};exports[_0x1e73('0x60')]=function(_0x53f9fb,_0x54cd6d,_0x3bc195){return db[_0x1e73('0x4d')][_0x1e73('0x4e')](function(_0x210823){var _0x4883f3;return db['VoiceMusicOnHold'][_0x1e73('0x4a')]({'where':{'id':_0x53f9fb[_0x1e73('0x48')]['id']}})[_0x1e73('0x23')](function(_0xde4a95){if(_0xde4a95){_0x4883f3=_0xde4a95;return _0xde4a95[_0x1e73('0x60')](_0x53f9fb['body']['id'],{'transaction':_0x210823});}})['then'](function(_0x36db87){if(_0x36db87){return db['Sound'][_0x1e73('0x61')]({'where':{'id':_0x53f9fb[_0x1e73('0x4b')]['id']},'attributes':['id','name',_0x1e73('0x62'),_0x1e73('0x63'),'createdAt'],'raw':!![]});}})[_0x1e73('0x23')](function(_0x8b34d1){if(_0x8b34d1){var _0x57d162=path['join'](config[_0x1e73('0x53')],_0x1e73('0x64'),util[_0x1e73('0x65')](_0x1e73('0x66'),path[_0x1e73('0x67')](_0x8b34d1[_0x1e73('0x62')],path[_0x1e73('0x68')](_0x8b34d1[_0x1e73('0x62')])),_0x8b34d1[_0x1e73('0x63')]));var _0x5cffa0=path[_0x1e73('0x52')](config['root'],_0x1e73('0x54'),_0x4883f3['name'],util[_0x1e73('0x65')](_0x1e73('0x66'),_0x8b34d1['name'],_0x8b34d1[_0x1e73('0x63')]));fs[_0x1e73('0x69')](_0x57d162,_0x5cffa0);return _0x8b34d1;}})[_0x1e73('0x46')](function(_0x109c61){throw new db['Sequelize'][(_0x1e73('0x6a'))](_0x109c61['message']);});})[_0x1e73('0x23')](handleEntityNotFound(_0x54cd6d,null))[_0x1e73('0x23')](respondWithResult(_0x54cd6d,0xc9))['catch'](handleError(_0x54cd6d,null));};exports[_0x1e73('0x6b')]=function(_0x44f8ff,_0x894625,_0x2c19fa){return db['sequelize'][_0x1e73('0x4e')](function(_0x2e8e21){var _0x359af8;return db[_0x1e73('0x2d')][_0x1e73('0x61')]({'where':{'id':_0x44f8ff[_0x1e73('0x48')]['id']}})['then'](handleEntityNotFound(_0x894625,null))[_0x1e73('0x23')](function(_0x1935b8){if(_0x1935b8){_0x359af8=_0x1935b8;return _0x1935b8[_0x1e73('0x6b')](_0x44f8ff['params'][_0x1e73('0x6c')]);}})[_0x1e73('0x23')](function(_0x411f63){if(_0x411f63){return db['Sound']['findOne']({'where':{'id':_0x44f8ff[_0x1e73('0x48')][_0x1e73('0x6c')]},'attributes':['id',_0x1e73('0x2a'),_0x1e73('0x62'),_0x1e73('0x63'),_0x1e73('0x6d')],'raw':!![]});}})[_0x1e73('0x23')](function(_0x9d70f1){if(_0x9d70f1){fs[_0x1e73('0x6e')](path[_0x1e73('0x52')](_0x359af8[_0x1e73('0x51')],util['format'](_0x1e73('0x66'),_0x9d70f1[_0x1e73('0x2a')],_0x9d70f1[_0x1e73('0x63')])));return _0x9d70f1;}})[_0x1e73('0x46')](function(_0x18780e){throw new db['Sequelize'][(_0x1e73('0x6a'))](_0x18780e[_0x1e73('0x5f')]);});})[_0x1e73('0x23')](handleEntityNotFound(_0x894625,null))['then'](respondWithStatusCode(_0x894625,0xcc))[_0x1e73('0x46')](handleError(_0x894625,null));};exports[_0x1e73('0x6f')]=function(_0x48332d,_0x17a8ed,_0x2f6c70){var _0x3b0611={};var _0x25e54a={};var _0x4e362d;var _0x5f4460;return db[_0x1e73('0x2d')][_0x1e73('0x61')]({'where':{'id':_0x48332d['params']['id']}})['then'](handleEntityNotFound(_0x17a8ed,null))['then'](function(_0x39c7d9){if(_0x39c7d9){_0x4e362d=_0x39c7d9;_0x25e54a[_0x1e73('0x32')]=_[_0x1e73('0x34')](db[_0x1e73('0x70')][_0x1e73('0x2e')]);_0x25e54a[_0x1e73('0x33')]=_[_0x1e73('0x34')](_0x48332d[_0x1e73('0x33')]);_0x25e54a['filters']=_[_0x1e73('0x36')](_0x25e54a[_0x1e73('0x32')],_0x25e54a[_0x1e73('0x33')]);_0x3b0611[_0x1e73('0x37')]=_[_0x1e73('0x36')](_0x25e54a[_0x1e73('0x32')],qs[_0x1e73('0x38')](_0x48332d['query'][_0x1e73('0x38')]));_0x3b0611[_0x1e73('0x37')]=_0x3b0611[_0x1e73('0x37')][_0x1e73('0x39')]?_0x3b0611[_0x1e73('0x37')]:_0x25e54a['model'];_0x3b0611[_0x1e73('0x3c')]=qs[_0x1e73('0x3d')](_0x48332d['query']['sort']);_0x3b0611[_0x1e73('0x40')]=qs['filters'](_['pick'](_0x48332d[_0x1e73('0x33')],_0x25e54a[_0x1e73('0x35')]));if(_0x48332d['query'][_0x1e73('0x3f')]){_0x3b0611[_0x1e73('0x40')]=_[_0x1e73('0x41')](_0x3b0611[_0x1e73('0x40')],{'$or':_['map'](_0x3b0611['attributes'],function(_0x3fd4e0){var _0xce523a={};_0xce523a[_0x3fd4e0]={'$like':'%'+_0x48332d[_0x1e73('0x33')][_0x1e73('0x3f')]+'%'};return _0xce523a;})});}_0x3b0611=_[_0x1e73('0x41')]({},_0x3b0611,_0x48332d['options']);return _0x4e362d['getSounds'](_0x3b0611);}})[_0x1e73('0x23')](function(_0x923041){if(_0x923041){_0x5f4460=_0x923041[_0x1e73('0x39')];if(!_0x48332d['query'][_0x1e73('0x3a')](_0x1e73('0x3b'))){_0x3b0611[_0x1e73('0x1a')]=qs['limit'](_0x48332d[_0x1e73('0x33')][_0x1e73('0x1a')]);_0x3b0611[_0x1e73('0x18')]=qs['offset'](_0x48332d[_0x1e73('0x33')][_0x1e73('0x18')]);}return _0x4e362d['getSounds'](_0x3b0611);}})[_0x1e73('0x23')](function(_0x398d73){if(_0x398d73){return _0x398d73?{'count':_0x5f4460,'rows':_0x398d73}:null;}})['then'](respondWithResult(_0x17a8ed,null))[_0x1e73('0x46')](handleError(_0x17a8ed,null));};
\ No newline at end of file
index a0b6e23..2764933 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60f2=['../../config/environment','./voiceMusicOnHold.attributes','define','voice_musiconhold','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x1cd71f,_0x2a9d19){var _0x33d362=function(_0x2ecb41){while(--_0x2ecb41){_0x1cd71f['push'](_0x1cd71f['shift']());}};_0x33d362(++_0x2a9d19);}(_0x60f2,0x178));var _0x260f=function(_0x496744,_0xfa7ca1){_0x496744=_0x496744-0x0;var _0x15b018=_0x60f2[_0x496744];return _0x15b018;};'use strict';var _=require(_0x260f('0x0'));var util=require(_0x260f('0x1'));var logger=require('../../config/logger')(_0x260f('0x2'));var moment=require(_0x260f('0x3'));var BPromise=require(_0x260f('0x4'));var rp=require(_0x260f('0x5'));var fs=require('fs');var path=require(_0x260f('0x6'));var rimraf=require(_0x260f('0x7'));var config=require(_0x260f('0x8'));var attributes=require(_0x260f('0x9'));module['exports']=function(_0x36c136,_0x11add7){return _0x36c136[_0x260f('0xa')]('VoiceMusicOnHold',attributes,{'tableName':_0x260f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6e87=['voice_musiconhold','util','../../config/logger','api','moment','request-promise','rimraf','./voiceMusicOnHold.attributes','exports','VoiceMusicOnHold'];(function(_0x106485,_0x1ee595){var _0x5cd62d=function(_0x500c89){while(--_0x500c89){_0x106485['push'](_0x106485['shift']());}};_0x5cd62d(++_0x1ee595);}(_0x6e87,0xfb));var _0x76e8=function(_0x3bb525,_0x484391){_0x3bb525=_0x3bb525-0x0;var _0x4f6813=_0x6e87[_0x3bb525];return _0x4f6813;};'use strict';var _=require('lodash');var util=require(_0x76e8('0x0'));var logger=require(_0x76e8('0x1'))(_0x76e8('0x2'));var moment=require(_0x76e8('0x3'));var BPromise=require('bluebird');var rp=require(_0x76e8('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x76e8('0x5'));var config=require('../../config/environment');var attributes=require(_0x76e8('0x6'));module[_0x76e8('0x7')]=function(_0x2be81a,_0x4f0f5e){return _0x2be81a['define'](_0x76e8('0x8'),attributes,{'tableName':_0x76e8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ffe2b87..da1e412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['code','VoiceMusicOnHold,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2e76f4,_0x1ecb81){var _0x56a27d=function(_0x500b73){while(--_0x500b73){_0x2e76f4['push'](_0x2e76f4['shift']());}};_0x56a27d(++_0x1ecb81);}(_0x70e0,0x17b));var _0x070e=function(_0x4f44f3,_0x12f5c2){_0x4f44f3=_0x4f44f3-0x0;var _0x5d14d0=_0x70e0[_0x4f44f3];return _0x5d14d0;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
+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(_0x34e474,_0x1dd1a8){var _0x3b72a7=function(_0x47bb28){while(--_0x47bb28){_0x34e474['push'](_0x34e474['shift']());}};_0x3b72a7(++_0x1dd1a8);}(_0x9c44,0x178));var _0x49c4=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0x9c44[_0x3d42d8];return _0x27fc41;};'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
index e614d4c..2a8a1ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x076a=['exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','describe','/:id','show','/:id/users','getAgents','post','update','destroy','removeAgents'];(function(_0x26cc8f,_0x4daf52){var _0x33a42c=function(_0x488eb3){while(--_0x488eb3){_0x26cc8f['push'](_0x26cc8f['shift']());}};_0x33a42c(++_0x4daf52);}(_0x076a,0x11f));var _0xa076=function(_0x12dfa1,_0x36ff32){_0x12dfa1=_0x12dfa1-0x0;var _0x5db581=_0x076a[_0x12dfa1];return _0x5db581;};'use strict';var multer=require(_0xa076('0x0'));var util=require(_0xa076('0x1'));var path=require('path');var timeout=require(_0xa076('0x2'));var express=require(_0xa076('0x3'));var router=express[_0xa076('0x4')]();var fs_extra=require(_0xa076('0x5'));var auth=require(_0xa076('0x6'));var interaction=require(_0xa076('0x7'));var config=require(_0xa076('0x8'));var controller=require('./voicePrefix.controller');router['get']('/',auth[_0xa076('0x9')](),controller['index']);router[_0xa076('0xa')](_0xa076('0xb'),auth['isAuthenticated'](),controller[_0xa076('0xc')]);router['get'](_0xa076('0xd'),auth[_0xa076('0x9')](),controller[_0xa076('0xe')]);router[_0xa076('0xa')](_0xa076('0xf'),auth[_0xa076('0x9')](),controller[_0xa076('0x10')]);router[_0xa076('0x11')]('/',auth[_0xa076('0x9')](),controller['create']);router[_0xa076('0x11')](_0xa076('0xf'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0xa076('0xd'),auth[_0xa076('0x9')](),controller[_0xa076('0x12')]);router['delete']('/:id',auth[_0xa076('0x9')](),controller[_0xa076('0x13')]);router['delete'](_0xa076('0xf'),auth['isAuthenticated'](),controller[_0xa076('0x14')]);module[_0xa076('0x15')]=router;
\ No newline at end of file
+var _0xe638=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/users','getAgents','/:id/teams','getTeams','post','create','addAgents','addTeams','put','/:id','update','destroy','removeAgents','delete','removeTeams'];(function(_0x4ddf16,_0x5a4f26){var _0x8c7740=function(_0x22faee){while(--_0x22faee){_0x4ddf16['push'](_0x4ddf16['shift']());}};_0x8c7740(++_0x5a4f26);}(_0xe638,0x92));var _0x8e63=function(_0x5336af,_0x3d1cb2){_0x5336af=_0x5336af-0x0;var _0x59b64f=_0xe638[_0x5336af];return _0x59b64f;};'use strict';var multer=require(_0x8e63('0x0'));var util=require(_0x8e63('0x1'));var path=require(_0x8e63('0x2'));var timeout=require(_0x8e63('0x3'));var express=require('express');var router=express[_0x8e63('0x4')]();var fs_extra=require(_0x8e63('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8e63('0x6'));var controller=require('./voicePrefix.controller');router[_0x8e63('0x7')]('/',auth[_0x8e63('0x8')](),controller[_0x8e63('0x9')]);router['get'](_0x8e63('0xa'),auth[_0x8e63('0x8')](),controller[_0x8e63('0xb')]);router[_0x8e63('0x7')]('/:id',auth[_0x8e63('0x8')](),controller[_0x8e63('0xc')]);router[_0x8e63('0x7')](_0x8e63('0xd'),auth[_0x8e63('0x8')](),controller[_0x8e63('0xe')]);router[_0x8e63('0x7')](_0x8e63('0xf'),auth['isAuthenticated'](),controller[_0x8e63('0x10')]);router[_0x8e63('0x11')]('/',auth[_0x8e63('0x8')](),controller[_0x8e63('0x12')]);router[_0x8e63('0x11')](_0x8e63('0xd'),auth['isAuthenticated'](),controller[_0x8e63('0x13')]);router[_0x8e63('0x11')]('/:id/teams',auth['isAuthenticated'](),controller[_0x8e63('0x14')]);router[_0x8e63('0x15')](_0x8e63('0x16'),auth['isAuthenticated'](),controller[_0x8e63('0x17')]);router['delete'](_0x8e63('0x16'),auth[_0x8e63('0x8')](),controller[_0x8e63('0x18')]);router['delete'](_0x8e63('0xd'),auth[_0x8e63('0x8')](),controller[_0x8e63('0x19')]);router[_0x8e63('0x1a')](_0x8e63('0xf'),auth[_0x8e63('0x8')](),controller[_0x8e63('0x1b')]);module[_0x8e63('0x1c')]=router;
\ No newline at end of file
index 1177969..9d1dc2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac30=['getDataValue','STRING','INTEGER','VIRTUAL'];(function(_0x187757,_0x5d6d38){var _0x134e53=function(_0x597573){while(--_0x597573){_0x187757['push'](_0x187757['shift']());}};_0x134e53(++_0x5d6d38);}(_0xac30,0x1cb));var _0x0ac3=function(_0x45d1fd,_0x463212){_0x45d1fd=_0x45d1fd-0x0;var _0xd0e542=_0xac30[_0x45d1fd];return _0xd0e542;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize[_0x0ac3('0x0')],'get':function(_0xff0fdc){return'system-'+this[_0x0ac3('0x1')]('name')+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x0ac3('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x0ac3('0x3')]}};
\ No newline at end of file
+var _0x8d72=['exports','STRING','name','VIRTUAL','INTEGER','sequelize'];(function(_0x525bfc,_0x3fee52){var _0x2e9bd7=function(_0x362a2c){while(--_0x362a2c){_0x525bfc['push'](_0x525bfc['shift']());}};_0x2e9bd7(++_0x3fee52);}(_0x8d72,0xe3));var _0x28d7=function(_0x7aa532,_0x57d60d){_0x7aa532=_0x7aa532-0x0;var _0x45cbc1=_0x8d72[_0x7aa532];return _0x45cbc1;};'use strict';var Sequelize=require(_0x28d7('0x0'));module[_0x28d7('0x1')]={'name':{'type':Sequelize[_0x28d7('0x2')],'allowNull':![],'unique':_0x28d7('0x3')},'prefix':{'type':Sequelize[_0x28d7('0x4')],'get':function(_0x44aab9){return'system-'+this['getDataValue'](_0x28d7('0x3'))+'-';}},'description':{'type':Sequelize[_0x28d7('0x2')]},'callerIdAll':{'type':Sequelize[_0x28d7('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x28d7('0x5')]}};
\ No newline at end of file
index e3d05fe..2a49245 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b6f=['mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','./voicePrefix.socket','register','sendStatus','json','undefined','count','offset','limit','status','set','Content-Range','apply','reject','save','update','then','destroy','get','VoicePrefixes','end','stack','name','send','index','map','VoicePrefix','fieldName','type','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','rawAttributes','length','find','params','describe','create','sequelize','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','from-sip','app','description','appdata','NoOp','Voice\x20Prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','context','${EXTEN:','charAt','body','prefix','transaction','VoiceExtension','findById','addAgents','ids','spread','removeAgents','isArray','emit','userVoicePrefix:remove','getAgents','findOne','User','pick','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird'];(function(_0x494f21,_0x26f879){var _0x4b1e81=function(_0x1e0414){while(--_0x1e0414){_0x494f21['push'](_0x494f21['shift']());}};_0x4b1e81(++_0x26f879);}(_0x8b6f,0x177));var _0xf8b6=function(_0x1f61b1,_0x354916){_0x1f61b1=_0x1f61b1-0x0;var _0x10e5a8=_0x8b6f[_0x1f61b1];return _0x10e5a8;};'use strict';var emlformat=require(_0xf8b6('0x0'));var rimraf=require(_0xf8b6('0x1'));var zipdir=require(_0xf8b6('0x2'));var jsonpatch=require(_0xf8b6('0x3'));var rp=require('request-promise');var moment=require(_0xf8b6('0x4'));var BPromise=require(_0xf8b6('0x5'));var Mustache=require(_0xf8b6('0x6'));var util=require('util');var path=require('path');var sox=require(_0xf8b6('0x7'));var csv=require(_0xf8b6('0x8'));var ejs=require(_0xf8b6('0x9'));var fs=require('fs');var fs_extra=require(_0xf8b6('0xa'));var _=require(_0xf8b6('0xb'));var squel=require(_0xf8b6('0xc'));var crypto=require(_0xf8b6('0xd'));var jsforce=require(_0xf8b6('0xe'));var deskjs=require(_0xf8b6('0xf'));var toCsv=require(_0xf8b6('0x8'));var querystring=require(_0xf8b6('0x10'));var Papa=require(_0xf8b6('0x11'));var Redis=require(_0xf8b6('0x12'));var authService=require(_0xf8b6('0x13'));var qs=require(_0xf8b6('0x14'));var as=require(_0xf8b6('0x15'));var hardwareService=require(_0xf8b6('0x16'));var logger=require(_0xf8b6('0x17'))(_0xf8b6('0x18'));var utils=require(_0xf8b6('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xf8b6('0x1a'));var db=require(_0xf8b6('0x1b'))['db'];config['redis']=_[_0xf8b6('0x1c')](config[_0xf8b6('0x1d')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf8b6('0x1d')]));require(_0xf8b6('0x1e'))[_0xf8b6('0x1f')](socket);function respondWithStatusCode(_0x30af1d,_0x11752b){_0x11752b=_0x11752b||0xcc;return function(_0x49ad1e){if(_0x49ad1e){return _0x30af1d[_0xf8b6('0x20')](_0x11752b);}return _0x30af1d['status'](_0x11752b)['end']();};}function respondWithResult(_0x1629a7,_0x50ebd0){_0x50ebd0=_0x50ebd0||0xc8;return function(_0x23bd49){if(_0x23bd49){return _0x1629a7['status'](_0x50ebd0)[_0xf8b6('0x21')](_0x23bd49);}};}function respondWithFilteredResult(_0x40350d,_0x375ed4){return function(_0x198c61){if(_0x198c61){var _0x5bc4b2=typeof _0x375ed4['offset']===_0xf8b6('0x22')&&typeof _0x375ed4['limit']===_0xf8b6('0x22');var _0x57a897=_0x198c61[_0xf8b6('0x23')];var _0x1cc304=_0x5bc4b2?0x0:_0x375ed4[_0xf8b6('0x24')];var _0x152c95=_0x5bc4b2?_0x198c61[_0xf8b6('0x23')]:_0x375ed4[_0xf8b6('0x24')]+_0x375ed4[_0xf8b6('0x25')];var _0x3e214d;if(_0x152c95>=_0x57a897){_0x152c95=_0x57a897;_0x3e214d=0xc8;}else{_0x3e214d=0xce;}_0x40350d[_0xf8b6('0x26')](_0x3e214d);return _0x40350d[_0xf8b6('0x27')](_0xf8b6('0x28'),_0x1cc304+'-'+_0x152c95+'/'+_0x57a897)['json'](_0x198c61);}return null;};}function patchUpdates(_0x303d99){return function(_0x332d07){try{jsonpatch[_0xf8b6('0x29')](_0x332d07,_0x303d99,!![]);}catch(_0x4d2d29){return BPromise[_0xf8b6('0x2a')](_0x4d2d29);}return _0x332d07[_0xf8b6('0x2b')]();};}function saveUpdates(_0x5a3bef,_0x453f12){return function(_0x2cd054){if(_0x2cd054){return _0x2cd054[_0xf8b6('0x2c')](_0x5a3bef)[_0xf8b6('0x2d')](function(_0x3a16c8){return _0x3a16c8;});}return null;};}function removeEntity(_0x4892ab,_0x410c9a){return function(_0x64dadf){if(_0x64dadf){return _0x64dadf[_0xf8b6('0x2e')]()[_0xf8b6('0x2d')](function(){var _0x20bc99=_0x64dadf[_0xf8b6('0x2f')]({'plain':!![]});var _0x364652=_0xf8b6('0x30');return db['UserProfileResource'][_0xf8b6('0x2e')]({'where':{'type':_0x364652,'resourceId':_0x20bc99['id']}})['then'](function(){return _0x64dadf;});})[_0xf8b6('0x2d')](function(){_0x4892ab['status'](0xcc)[_0xf8b6('0x31')]();});}};}function handleEntityNotFound(_0x1acf71,_0x5d357f){return function(_0x770534){if(!_0x770534){_0x1acf71['sendStatus'](0x194);}return _0x770534;};}function handleError(_0x1189d5,_0x38bb06){_0x38bb06=_0x38bb06||0x1f4;return function(_0x1fb807){logger['error'](_0x1fb807[_0xf8b6('0x32')]);if(_0x1fb807[_0xf8b6('0x33')]){delete _0x1fb807[_0xf8b6('0x33')];}_0x1189d5[_0xf8b6('0x26')](_0x38bb06)[_0xf8b6('0x34')](_0x1fb807);};}exports[_0xf8b6('0x35')]=function(_0x136f7b,_0x5ead1e){var _0x4cc242={},_0x171580={},_0xb6363c={'count':0x0,'rows':[]};var _0x11764e=_[_0xf8b6('0x36')](db[_0xf8b6('0x37')]['rawAttributes'],function(_0x24945e){return{'name':_0x24945e[_0xf8b6('0x38')],'type':_0x24945e[_0xf8b6('0x39')]['key']};});_0x171580['model']=_['map'](_0x11764e,'name');_0x171580[_0xf8b6('0x3a')]=_[_0xf8b6('0x3b')](_0x136f7b[_0xf8b6('0x3a')]);_0x171580[_0xf8b6('0x3c')]=_[_0xf8b6('0x3d')](_0x171580[_0xf8b6('0x3e')],_0x171580['query']);_0x4cc242['attributes']=_[_0xf8b6('0x3d')](_0x171580['model'],qs[_0xf8b6('0x3f')](_0x136f7b[_0xf8b6('0x3a')][_0xf8b6('0x3f')]));_0x4cc242[_0xf8b6('0x40')]=_0x4cc242[_0xf8b6('0x40')]['length']?_0x4cc242[_0xf8b6('0x40')]:_0x171580[_0xf8b6('0x3e')];if(!_0x136f7b[_0xf8b6('0x3a')][_0xf8b6('0x41')](_0xf8b6('0x42'))){_0x4cc242[_0xf8b6('0x25')]=qs[_0xf8b6('0x25')](_0x136f7b[_0xf8b6('0x3a')][_0xf8b6('0x25')]);_0x4cc242['offset']=qs['offset'](_0x136f7b[_0xf8b6('0x3a')]['offset']);}_0x4cc242[_0xf8b6('0x43')]=qs[_0xf8b6('0x44')](_0x136f7b['query'][_0xf8b6('0x44')]);_0x4cc242[_0xf8b6('0x45')]=qs['filters'](_['pick'](_0x136f7b['query'],_0x171580[_0xf8b6('0x3c')]),_0x11764e);if(_0x136f7b['query'][_0xf8b6('0x46')]){_0x4cc242[_0xf8b6('0x45')]=_[_0xf8b6('0x47')](_0x4cc242[_0xf8b6('0x45')],{'$or':_[_0xf8b6('0x36')](_0x11764e,function(_0x503ca9){if(_0x503ca9[_0xf8b6('0x39')]!=='VIRTUAL'){var _0x3081e0={};_0x3081e0[_0x503ca9[_0xf8b6('0x33')]]={'$like':'%'+_0x136f7b[_0xf8b6('0x3a')]['filter']+'%'};return _0x3081e0;}})});}_0x4cc242=_[_0xf8b6('0x47')]({},_0x4cc242,_0x136f7b[_0xf8b6('0x48')]);var _0xaa4b69={'where':_0x4cc242[_0xf8b6('0x45')]};return db['VoicePrefix']['count'](_0xaa4b69)[_0xf8b6('0x2d')](function(_0x19891d){_0xb6363c['count']=_0x19891d;if(_0x136f7b['query'][_0xf8b6('0x49')]){_0x4cc242[_0xf8b6('0x4a')]=[{'all':!![]}];}return db[_0xf8b6('0x37')][_0xf8b6('0x4b')](_0x4cc242);})[_0xf8b6('0x2d')](function(_0x2d8c1e){_0xb6363c[_0xf8b6('0x4c')]=_0x2d8c1e;return _0xb6363c;})[_0xf8b6('0x2d')](respondWithFilteredResult(_0x5ead1e,_0x4cc242))[_0xf8b6('0x4d')](handleError(_0x5ead1e,null));};exports['show']=function(_0x7e79f2,_0x27ab3e){var _0x56cf3e={'raw':![],'where':{'id':_0x7e79f2['params']['id']}},_0x135d95={};_0x135d95['model']=_[_0xf8b6('0x3b')](db['VoicePrefix'][_0xf8b6('0x4e')]);_0x135d95[_0xf8b6('0x3a')]=_[_0xf8b6('0x3b')](_0x7e79f2[_0xf8b6('0x3a')]);_0x135d95[_0xf8b6('0x3c')]=_[_0xf8b6('0x3d')](_0x135d95[_0xf8b6('0x3e')],_0x135d95[_0xf8b6('0x3a')]);_0x56cf3e[_0xf8b6('0x40')]=_[_0xf8b6('0x3d')](_0x135d95['model'],qs[_0xf8b6('0x3f')](_0x7e79f2[_0xf8b6('0x3a')][_0xf8b6('0x3f')]));_0x56cf3e[_0xf8b6('0x40')]=_0x56cf3e[_0xf8b6('0x40')][_0xf8b6('0x4f')]?_0x56cf3e[_0xf8b6('0x40')]:_0x135d95['model'];if(_0x7e79f2['query'][_0xf8b6('0x49')]){_0x56cf3e['include']=[{'all':!![]}];}_0x56cf3e=_[_0xf8b6('0x47')]({},_0x56cf3e,_0x7e79f2[_0xf8b6('0x48')]);return db['VoicePrefix'][_0xf8b6('0x50')](_0x56cf3e)[_0xf8b6('0x2d')](handleEntityNotFound(_0x27ab3e,null))[_0xf8b6('0x2d')](respondWithResult(_0x27ab3e,null))[_0xf8b6('0x4d')](handleError(_0x27ab3e,null));};exports[_0xf8b6('0x2e')]=function(_0x58a1b6,_0x378dd9){return db[_0xf8b6('0x37')][_0xf8b6('0x50')]({'where':{'id':_0x58a1b6[_0xf8b6('0x51')]['id']}})['then'](handleEntityNotFound(_0x378dd9,null))[_0xf8b6('0x2d')](removeEntity(_0x378dd9,null))[_0xf8b6('0x4d')](handleError(_0x378dd9,null));};exports[_0xf8b6('0x52')]=function(_0x20f73d,_0x40acc1){return db[_0xf8b6('0x37')][_0xf8b6('0x52')]()[_0xf8b6('0x2d')](respondWithResult(_0x40acc1,null))[_0xf8b6('0x4d')](handleError(_0x40acc1,null));};exports[_0xf8b6('0x53')]=function(_0x2f0fc9,_0x5e136b){var _0x7916e1;return db[_0xf8b6('0x54')]['transaction'](function(_0x3498e3){return db[_0xf8b6('0x37')][_0xf8b6('0x53')](_0x2f0fc9['body'],{'transaction':_0x3498e3})[_0xf8b6('0x2d')](function(_0x64b6ce){_0x7916e1=_0x64b6ce['get']({'plain':!![]});return db['VoiceExtension'][_0xf8b6('0x50')]({'where':{'id':_0x7916e1['VoiceExtensionId']},'raw':!![]})[_0xf8b6('0x2d')](function(_0x310d33){return createVoicePrefixExtensions(_0x7916e1,_0x310d33,_0x3498e3);});});})['then'](function(){var _0x3bf4bd=_0x2f0fc9[_0xf8b6('0x55')][_0xf8b6('0x2f')]({'plain':!![]});if(!_0x3bf4bd)throw new Error(_0xf8b6('0x56'));if(_0x3bf4bd[_0xf8b6('0x57')]==='user'){var _0x48d7ae=_0x7916e1;return db[_0xf8b6('0x58')][_0xf8b6('0x50')]({'where':{'name':_0xf8b6('0x30'),'userProfileId':_0x3bf4bd[_0xf8b6('0x59')]},'raw':!![]})[_0xf8b6('0x2d')](function(_0x3f6132){if(_0x3f6132&&_0x3f6132[_0xf8b6('0x5a')]===0x0){return db[_0xf8b6('0x5b')]['create']({'name':_0x48d7ae[_0xf8b6('0x33')],'resourceId':_0x48d7ae['id'],'type':_0x3f6132[_0xf8b6('0x33')],'sectionId':_0x3f6132['id']},{})[_0xf8b6('0x2d')](function(){return _0x7916e1;});}else{return _0x7916e1;}})[_0xf8b6('0x4d')](function(_0x3e0aa3){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3e0aa3);throw _0x3e0aa3;});}return _0x7916e1;})[_0xf8b6('0x2d')](respondWithResult(_0x5e136b,null))[_0xf8b6('0x4d')](handleError(_0x5e136b,null));};function Extension(_0x2ef303,_0x5afd15,_0x3346f1,_0xb3694a){this['context']=_0xf8b6('0x5c');this['exten']=_0x2ef303;this[_0xf8b6('0x5d')]=_0x3346f1;this[_0xf8b6('0x39')]='system';this[_0xf8b6('0x5e')]='Voice\x20Prefix\x20Extension';this['priority']=_0x5afd15;this[_0xf8b6('0x5f')]=_0xb3694a;}function createVoicePrefixExtensions(_0x21204c,_0x214429,_0x108d5a){return new BPromise(function(_0x2fe82a,_0x5e63fa){var _0x455238=new Extension(formatPrefixName(_0x21204c['prefix']),0x1,_0xf8b6('0x60'),_0xf8b6('0x61'));_0x455238[_0xf8b6('0x62')]=_0x21204c['id'];return db['VoiceExtension'][_0xf8b6('0x53')](_0x455238,{'transaction':_0x108d5a})[_0xf8b6('0x2d')](function(_0xd3ebb){var _0x393ca6=_0xd3ebb['get']({'plain':!![]});var _0x34d88a=_[_0xf8b6('0x36')](addVoicePrefixExtensions(_0x21204c,_0x214429),function(_0x14c367){_0x14c367['VoiceExtensionId']=_0x393ca6['id'];_0x14c367['VoicePrefixId']=_0x21204c['id'];return _0x14c367;});return db['VoiceExtension'][_0xf8b6('0x63')](_0x34d88a,{'transaction':_0x108d5a})[_0xf8b6('0x2d')](function(_0x25c1b6){if(!_0x25c1b6){return _0x5e63fa(_0xf8b6('0x64'));}else{return _0x2fe82a(_0x25c1b6);}})['catch'](function(_0x201826){return _0x5e63fa(_0x201826);});});;});};function addVoicePrefixExtensions(_0x2e1474,_0x4453d2){var _0x233d04=[];var _0x389c52=formatPrefixName(_0x2e1474['prefix']);_0x233d04[_0xf8b6('0x65')](new Extension(_0x389c52,0x2,_0xf8b6('0x66'),_0xf8b6('0x67')+_0x2e1474['name']));if(_0x2e1474[_0xf8b6('0x68')]){_0x233d04['push'](new Extension(_0x389c52,0x3,_0xf8b6('0x66'),_0xf8b6('0x69')+_0x2e1474['callerIdAll']));}else{_0x233d04[_0xf8b6('0x65')](new Extension(_0x389c52,0x3,'NoOp',_0xf8b6('0x6a')));}_0x233d04[_0xf8b6('0x65')](new Extension(_0x389c52,0x4,_0xf8b6('0x6b'),_0x4453d2[_0xf8b6('0x6c')]+','+_0xf8b6('0x6d')+(0x8+_0x2e1474[_0xf8b6('0x33')][_0xf8b6('0x4f')])+'}'+','+0x1));return _0x233d04;}function formatPrefixName(_0x2496d3){var _0x3b86f1='_';for(var _0x4080ec=0x0;_0x4080ec<_0x2496d3[_0xf8b6('0x4f')];_0x4080ec++){if(_0x2496d3['charAt'](_0x4080ec)=='-'){_0x3b86f1+=_0x2496d3[_0xf8b6('0x6e')](_0x4080ec);}else{_0x3b86f1+='['+_0x2496d3['charAt'](_0x4080ec)+']';}}_0x3b86f1+='.';return _0x3b86f1;}exports[_0xf8b6('0x2c')]=function(_0x3314c3,_0x46e7a7,_0x448fd2){var _0x2ca04e=_0x3314c3[_0xf8b6('0x6f')];_0x2ca04e[_0xf8b6('0x70')]='system-'+_0x2ca04e[_0xf8b6('0x33')]+'-';return db[_0xf8b6('0x54')][_0xf8b6('0x71')](function(_0x598559){return db[_0xf8b6('0x37')][_0xf8b6('0x2c')](_0x2ca04e,{'where':{'id':_0x2ca04e['id']},'transaction':_0x598559})['then'](function(){return db[_0xf8b6('0x72')][_0xf8b6('0x2e')]({'where':{'VoicePrefixId':_0x2ca04e['id']},'transaction':_0x598559})['then'](function(){return db['VoiceExtension'][_0xf8b6('0x50')]({'where':{'id':_0x2ca04e['VoiceExtensionId']},'raw':!![]})[_0xf8b6('0x2d')](function(_0x50e99c){return createVoicePrefixExtensions(_0x2ca04e,_0x50e99c,_0x598559);});});});})[_0xf8b6('0x2d')](function(){return db['VoicePrefix'][_0xf8b6('0x73')](_0x2ca04e['id']);})[_0xf8b6('0x2d')](respondWithResult(_0x46e7a7,null))[_0xf8b6('0x4d')](handleError(_0x46e7a7,null));};exports[_0xf8b6('0x74')]=function(_0xcd3688,_0x50d4fd,_0x248ae2){return db[_0xf8b6('0x37')][_0xf8b6('0x50')]({'where':{'id':_0xcd3688[_0xf8b6('0x51')]['id']}})['then'](handleEntityNotFound(_0x50d4fd,null))[_0xf8b6('0x2d')](function(_0x352d4c){if(_0x352d4c){return _0x352d4c[_0xf8b6('0x74')](_0xcd3688[_0xf8b6('0x6f')][_0xf8b6('0x75')],_['omit'](_0xcd3688[_0xf8b6('0x6f')],['ids','id'])||{})[_0xf8b6('0x76')](function(_0x410ab9){for(var _0xa9a626=0x0;_0xa9a626<_0xcd3688['body'][_0xf8b6('0x75')][_0xf8b6('0x4f')];_0xa9a626+=0x1){socket['emit']('userVoicePrefix:save',{'UserId':Number(_0xcd3688[_0xf8b6('0x6f')][_0xf8b6('0x75')][_0xa9a626]),'VoicePrefixId':Number(_0xcd3688['params']['id'])});}return _0x410ab9;});}})['then'](respondWithResult(_0x50d4fd,null))['catch'](handleError(_0x50d4fd,null));};exports[_0xf8b6('0x77')]=function(_0x2b30b4,_0x5ce729,_0x50af1e){return db['VoicePrefix']['find']({'where':{'id':_0x2b30b4[_0xf8b6('0x51')]['id']}})[_0xf8b6('0x2d')](handleEntityNotFound(_0x5ce729,null))['then'](function(_0x11250f){if(_0x11250f){return _0x11250f[_0xf8b6('0x77')](_0x2b30b4[_0xf8b6('0x3a')]['ids'])[_0xf8b6('0x2d')](function(){if(_[_0xf8b6('0x78')](_0x2b30b4[_0xf8b6('0x3a')][_0xf8b6('0x75')])){for(var _0x234121=0x0;_0x234121<_0x2b30b4[_0xf8b6('0x3a')][_0xf8b6('0x75')][_0xf8b6('0x4f')];_0x234121+=0x1){socket[_0xf8b6('0x79')](_0xf8b6('0x7a'),{'UserId':Number(_0x2b30b4['query']['ids'][_0x234121]),'VoicePrefixId':Number(_0x2b30b4[_0xf8b6('0x51')]['id'])});}}else{socket[_0xf8b6('0x79')](_0xf8b6('0x7a'),{'UserId':Number(_0x2b30b4[_0xf8b6('0x3a')][_0xf8b6('0x75')]),'VoicePrefixId':Number(_0x2b30b4[_0xf8b6('0x51')]['id'])});}});}})['then'](respondWithStatusCode(_0x5ce729,null))[_0xf8b6('0x4d')](handleError(_0x5ce729,null));};exports[_0xf8b6('0x7b')]=function(_0x41a979,_0x5e2287,_0x4b9124){var _0x23db14={};var _0xbb9bab={};var _0x109cba;var _0x22f0ba;return db[_0xf8b6('0x37')][_0xf8b6('0x7c')]({'where':{'id':_0x41a979[_0xf8b6('0x51')]['id']}})[_0xf8b6('0x2d')](handleEntityNotFound(_0x5e2287,null))[_0xf8b6('0x2d')](function(_0x5e17aa){if(_0x5e17aa){_0x109cba=_0x5e17aa;_0xbb9bab['model']=_[_0xf8b6('0x3b')](db[_0xf8b6('0x7d')]['rawAttributes']);_0xbb9bab[_0xf8b6('0x3a')]=_[_0xf8b6('0x3b')](_0x41a979[_0xf8b6('0x3a')]);_0xbb9bab['filters']=_[_0xf8b6('0x3d')](_0xbb9bab['model'],_0xbb9bab[_0xf8b6('0x3a')]);_0x23db14[_0xf8b6('0x40')]=_[_0xf8b6('0x3d')](_0xbb9bab[_0xf8b6('0x3e')],qs['fields'](_0x41a979[_0xf8b6('0x3a')]['fields']));_0x23db14[_0xf8b6('0x40')]=_0x23db14[_0xf8b6('0x40')][_0xf8b6('0x4f')]?_0x23db14['attributes']:_0xbb9bab[_0xf8b6('0x3e')];_0x23db14[_0xf8b6('0x43')]=qs[_0xf8b6('0x44')](_0x41a979['query'][_0xf8b6('0x44')]);_0x23db14['where']=qs[_0xf8b6('0x3c')](_[_0xf8b6('0x7e')](_0x41a979[_0xf8b6('0x3a')],_0xbb9bab['filters']));if(_0x41a979[_0xf8b6('0x3a')]['filter']){_0x23db14[_0xf8b6('0x45')]=_[_0xf8b6('0x47')](_0x23db14['where'],{'$or':_[_0xf8b6('0x36')](_0x23db14[_0xf8b6('0x40')],function(_0x1591c7){var _0x47fa82={};_0x47fa82[_0x1591c7]={'$like':'%'+_0x41a979['query'][_0xf8b6('0x46')]+'%'};return _0x47fa82;})});}_0x23db14=_[_0xf8b6('0x47')]({},_0x23db14,_0x41a979['options']);return _0x109cba['getAgents'](_0x23db14);}})[_0xf8b6('0x2d')](function(_0x205af2){if(_0x205af2){_0x22f0ba=_0x205af2['length'];if(!_0x41a979[_0xf8b6('0x3a')][_0xf8b6('0x41')](_0xf8b6('0x42'))){_0x23db14['limit']=qs[_0xf8b6('0x25')](_0x41a979['query'][_0xf8b6('0x25')]);_0x23db14[_0xf8b6('0x24')]=qs[_0xf8b6('0x24')](_0x41a979[_0xf8b6('0x3a')][_0xf8b6('0x24')]);}return _0x109cba[_0xf8b6('0x7b')](_0x23db14);}})[_0xf8b6('0x2d')](function(_0x389902){if(_0x389902){return _0x389902?{'count':_0x22f0ba,'rows':_0x389902}:null;}})[_0xf8b6('0x2d')](respondWithResult(_0x5e2287,null))['catch'](handleError(_0x5e2287,null));};
\ No newline at end of file
+var _0x2272=['Voice\x20Prefix\x20Extension','priority','NoOp','VoicePrefixId','prefix','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','goto','context','${EXTEN:','charAt','update','system-','findById','addAgents','ids','spread','emit','removeAgents','userVoicePrefix:remove','getAgents','User','order','pick','getTeams','findOne','addTeams','Team','Agents','online','voicePause','interface','flatMap','each','upsert','UserVoicePrefix','findOrCreate','forEach','userVoicePrefix:save','select','field','tq.TeamId','from','team_has_voice_prefixes','join','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','toString','SELECT','every','TeamId','includes','all','union','removeTeams','isEmpty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./voicePrefix.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','get','UserProfileResource','destroy','stack','name','send','map','VoicePrefix','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','type','VIRTUAL','options','includeAll','findAll','catch','show','params','include','find','describe','create','sequelize','transaction','body','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','VoicePrefixes','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','from-sip','app','system','description'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x2272,0xd8));var _0x2227=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2272[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x2227('0x0'));var rimraf=require(_0x2227('0x1'));var zipdir=require(_0x2227('0x2'));var jsonpatch=require(_0x2227('0x3'));var rp=require(_0x2227('0x4'));var moment=require('moment');var BPromise=require(_0x2227('0x5'));var Mustache=require(_0x2227('0x6'));var util=require(_0x2227('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x2227('0x8'));var ejs=require(_0x2227('0x9'));var fs=require('fs');var fs_extra=require(_0x2227('0xa'));var _=require(_0x2227('0xb'));var squel=require(_0x2227('0xc'));var crypto=require(_0x2227('0xd'));var jsforce=require(_0x2227('0xe'));var deskjs=require(_0x2227('0xf'));var toCsv=require(_0x2227('0x8'));var querystring=require(_0x2227('0x10'));var Papa=require('papaparse');var Redis=require(_0x2227('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x2227('0x12'));var as=require(_0x2227('0x13'));var hardwareService=require(_0x2227('0x14'));var logger=require(_0x2227('0x15'))(_0x2227('0x16'));var utils=require('../../config/utils');var config=require(_0x2227('0x17'));var licenseUtil=require(_0x2227('0x18'));var db=require(_0x2227('0x19'))['db'];config[_0x2227('0x1a')]=_[_0x2227('0x1b')](config[_0x2227('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x2227('0x1c'))['register'](socket);function respondWithStatusCode(_0x42f60b,_0xb631b0){_0xb631b0=_0xb631b0||0xcc;return function(_0x510b09){if(_0x510b09){return _0x42f60b[_0x2227('0x1d')](_0xb631b0);}return _0x42f60b[_0x2227('0x1e')](_0xb631b0)[_0x2227('0x1f')]();};}function respondWithResult(_0x43e174,_0x42a93c){_0x42a93c=_0x42a93c||0xc8;return function(_0x1e78a8){if(_0x1e78a8){return _0x43e174['status'](_0x42a93c)[_0x2227('0x20')](_0x1e78a8);}};}function respondWithFilteredResult(_0x1cf016,_0x162723){return function(_0x531f75){if(_0x531f75){var _0x11bf80=typeof _0x162723[_0x2227('0x21')]===_0x2227('0x22')&&typeof _0x162723[_0x2227('0x23')]===_0x2227('0x22');var _0x28e642=_0x531f75[_0x2227('0x24')];var _0x4e0bba=_0x11bf80?0x0:_0x162723[_0x2227('0x21')];var _0x59f988=_0x11bf80?_0x531f75[_0x2227('0x24')]:_0x162723[_0x2227('0x21')]+_0x162723[_0x2227('0x23')];var _0x1f28ef;if(_0x59f988>=_0x28e642){_0x59f988=_0x28e642;_0x1f28ef=0xc8;}else{_0x1f28ef=0xce;}_0x1cf016[_0x2227('0x1e')](_0x1f28ef);return _0x1cf016[_0x2227('0x25')](_0x2227('0x26'),_0x4e0bba+'-'+_0x59f988+'/'+_0x28e642)[_0x2227('0x20')](_0x531f75);}return null;};}function patchUpdates(_0x3299fd){return function(_0x34c090){try{jsonpatch[_0x2227('0x27')](_0x34c090,_0x3299fd,!![]);}catch(_0x5a454f){return BPromise[_0x2227('0x28')](_0x5a454f);}return _0x34c090[_0x2227('0x29')]();};}function saveUpdates(_0x5b3a09,_0x2cef4b){return function(_0xbfdce1){if(_0xbfdce1){return _0xbfdce1['update'](_0x5b3a09)['then'](function(_0x17c7a4){return _0x17c7a4;});}return null;};}function removeEntity(_0xa4d18b,_0x35333f){return function(_0x1f30c3){if(_0x1f30c3){return _0x1f30c3['destroy']()[_0x2227('0x2a')](function(){var _0x301304=_0x1f30c3[_0x2227('0x2b')]({'plain':!![]});var _0x1957ee='VoicePrefixes';return db[_0x2227('0x2c')][_0x2227('0x2d')]({'where':{'type':_0x1957ee,'resourceId':_0x301304['id']}})[_0x2227('0x2a')](function(){return _0x1f30c3;});})[_0x2227('0x2a')](function(){_0xa4d18b[_0x2227('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55015e,_0x5d1d56){return function(_0x2dc38d){if(!_0x2dc38d){_0x55015e['sendStatus'](0x194);}return _0x2dc38d;};}function handleError(_0x2ba581,_0x1979d8){_0x1979d8=_0x1979d8||0x1f4;return function(_0x58609e){logger['error'](_0x58609e[_0x2227('0x2e')]);if(_0x58609e[_0x2227('0x2f')]){delete _0x58609e[_0x2227('0x2f')];}_0x2ba581['status'](_0x1979d8)[_0x2227('0x30')](_0x58609e);};}exports['index']=function(_0xaa2bbb,_0x3f108b){var _0x28ad1c={},_0xfa2140={},_0x155095={'count':0x0,'rows':[]};var _0x256b7b=_[_0x2227('0x31')](db[_0x2227('0x32')][_0x2227('0x33')],function(_0x781f79){return{'name':_0x781f79[_0x2227('0x34')],'type':_0x781f79['type'][_0x2227('0x35')]};});_0xfa2140[_0x2227('0x36')]=_[_0x2227('0x31')](_0x256b7b,_0x2227('0x2f'));_0xfa2140['query']=_[_0x2227('0x37')](_0xaa2bbb[_0x2227('0x38')]);_0xfa2140[_0x2227('0x39')]=_[_0x2227('0x3a')](_0xfa2140['model'],_0xfa2140[_0x2227('0x38')]);_0x28ad1c[_0x2227('0x3b')]=_[_0x2227('0x3a')](_0xfa2140['model'],qs['fields'](_0xaa2bbb[_0x2227('0x38')][_0x2227('0x3c')]));_0x28ad1c['attributes']=_0x28ad1c[_0x2227('0x3b')][_0x2227('0x3d')]?_0x28ad1c['attributes']:_0xfa2140[_0x2227('0x36')];if(!_0xaa2bbb['query'][_0x2227('0x3e')](_0x2227('0x3f'))){_0x28ad1c[_0x2227('0x23')]=qs[_0x2227('0x23')](_0xaa2bbb['query'][_0x2227('0x23')]);_0x28ad1c['offset']=qs[_0x2227('0x21')](_0xaa2bbb[_0x2227('0x38')][_0x2227('0x21')]);}_0x28ad1c['order']=qs[_0x2227('0x40')](_0xaa2bbb[_0x2227('0x38')][_0x2227('0x40')]);_0x28ad1c[_0x2227('0x41')]=qs[_0x2227('0x39')](_['pick'](_0xaa2bbb['query'],_0xfa2140[_0x2227('0x39')]),_0x256b7b);if(_0xaa2bbb['query'][_0x2227('0x42')]){_0x28ad1c[_0x2227('0x41')]=_[_0x2227('0x43')](_0x28ad1c[_0x2227('0x41')],{'$or':_[_0x2227('0x31')](_0x256b7b,function(_0xd08cd8){if(_0xd08cd8[_0x2227('0x44')]!==_0x2227('0x45')){var _0x5688b5={};_0x5688b5[_0xd08cd8[_0x2227('0x2f')]]={'$like':'%'+_0xaa2bbb['query'][_0x2227('0x42')]+'%'};return _0x5688b5;}})});}_0x28ad1c=_['merge']({},_0x28ad1c,_0xaa2bbb[_0x2227('0x46')]);var _0x59afc0={'where':_0x28ad1c[_0x2227('0x41')]};return db['VoicePrefix'][_0x2227('0x24')](_0x59afc0)[_0x2227('0x2a')](function(_0x46eb0f){_0x155095[_0x2227('0x24')]=_0x46eb0f;if(_0xaa2bbb[_0x2227('0x38')][_0x2227('0x47')]){_0x28ad1c['include']=[{'all':!![]}];}return db['VoicePrefix'][_0x2227('0x48')](_0x28ad1c);})['then'](function(_0x3552db){_0x155095['rows']=_0x3552db;return _0x155095;})[_0x2227('0x2a')](respondWithFilteredResult(_0x3f108b,_0x28ad1c))[_0x2227('0x49')](handleError(_0x3f108b,null));};exports[_0x2227('0x4a')]=function(_0xa3ae06,_0x3f9787){var _0x2871a6={'raw':![],'where':{'id':_0xa3ae06[_0x2227('0x4b')]['id']}},_0x5f5880={};_0x5f5880[_0x2227('0x36')]=_[_0x2227('0x37')](db[_0x2227('0x32')][_0x2227('0x33')]);_0x5f5880[_0x2227('0x38')]=_[_0x2227('0x37')](_0xa3ae06[_0x2227('0x38')]);_0x5f5880['filters']=_[_0x2227('0x3a')](_0x5f5880[_0x2227('0x36')],_0x5f5880[_0x2227('0x38')]);_0x2871a6[_0x2227('0x3b')]=_['intersection'](_0x5f5880[_0x2227('0x36')],qs[_0x2227('0x3c')](_0xa3ae06['query'][_0x2227('0x3c')]));_0x2871a6[_0x2227('0x3b')]=_0x2871a6[_0x2227('0x3b')][_0x2227('0x3d')]?_0x2871a6[_0x2227('0x3b')]:_0x5f5880[_0x2227('0x36')];if(_0xa3ae06[_0x2227('0x38')]['includeAll']){_0x2871a6[_0x2227('0x4c')]=[{'all':!![]}];}_0x2871a6=_[_0x2227('0x43')]({},_0x2871a6,_0xa3ae06['options']);return db[_0x2227('0x32')]['find'](_0x2871a6)[_0x2227('0x2a')](handleEntityNotFound(_0x3f9787,null))[_0x2227('0x2a')](respondWithResult(_0x3f9787,null))[_0x2227('0x49')](handleError(_0x3f9787,null));};exports[_0x2227('0x2d')]=function(_0x5387fc,_0x4e12c7){return db['VoicePrefix'][_0x2227('0x4d')]({'where':{'id':_0x5387fc[_0x2227('0x4b')]['id']}})['then'](handleEntityNotFound(_0x4e12c7,null))[_0x2227('0x2a')](removeEntity(_0x4e12c7,null))[_0x2227('0x49')](handleError(_0x4e12c7,null));};exports[_0x2227('0x4e')]=function(_0x39166b,_0x4ee23c){return db['VoicePrefix'][_0x2227('0x4e')]()[_0x2227('0x2a')](respondWithResult(_0x4ee23c,null))[_0x2227('0x49')](handleError(_0x4ee23c,null));};exports[_0x2227('0x4f')]=function(_0x597f00,_0x26581d){var _0x443933;return db[_0x2227('0x50')][_0x2227('0x51')](function(_0x125fa8){return db[_0x2227('0x32')][_0x2227('0x4f')](_0x597f00[_0x2227('0x52')],{'transaction':_0x125fa8})[_0x2227('0x2a')](function(_0x418ec4){_0x443933=_0x418ec4[_0x2227('0x2b')]({'plain':!![]});return db[_0x2227('0x53')][_0x2227('0x4d')]({'where':{'id':_0x443933[_0x2227('0x54')]},'raw':!![]})[_0x2227('0x2a')](function(_0x10c21a){return createVoicePrefixExtensions(_0x443933,_0x10c21a,_0x125fa8);});});})['then'](function(){var _0xc176c9=_0x597f00[_0x2227('0x55')]['get']({'plain':!![]});if(!_0xc176c9)throw new Error(_0x2227('0x56'));if(_0xc176c9[_0x2227('0x57')]===_0x2227('0x55')){var _0x4e8622=_0x443933;return db['UserProfileSection']['find']({'where':{'name':_0x2227('0x58'),'userProfileId':_0xc176c9[_0x2227('0x59')]},'raw':!![]})['then'](function(_0x2171b1){if(_0x2171b1&&_0x2171b1[_0x2227('0x5a')]===0x0){return db[_0x2227('0x2c')]['create']({'name':_0x4e8622[_0x2227('0x2f')],'resourceId':_0x4e8622['id'],'type':_0x2171b1[_0x2227('0x2f')],'sectionId':_0x2171b1['id']},{})['then'](function(){return _0x443933;});}else{return _0x443933;}})[_0x2227('0x49')](function(_0x1f02be){logger['error'](_0x2227('0x5b'),_0x1f02be);throw _0x1f02be;});}return _0x443933;})[_0x2227('0x2a')](respondWithResult(_0x26581d,null))[_0x2227('0x49')](handleError(_0x26581d,null));};function Extension(_0x1ab7e0,_0x300741,_0x118225,_0x52861f){this['context']=_0x2227('0x5c');this['exten']=_0x1ab7e0;this[_0x2227('0x5d')]=_0x118225;this['type']=_0x2227('0x5e');this[_0x2227('0x5f')]=_0x2227('0x60');this[_0x2227('0x61')]=_0x300741;this['appdata']=_0x52861f;}function createVoicePrefixExtensions(_0x44a025,_0x41359a,_0x10df84){return new BPromise(function(_0x1ec0db,_0x30fbd8){var _0x4fdb8d=new Extension(formatPrefixName(_0x44a025['prefix']),0x1,_0x2227('0x62'),'Voice\x20Prefix');_0x4fdb8d[_0x2227('0x63')]=_0x44a025['id'];return db[_0x2227('0x53')]['create'](_0x4fdb8d,{'transaction':_0x10df84})['then'](function(_0x1aa091){var _0x335798=_0x1aa091[_0x2227('0x2b')]({'plain':!![]});var _0x2f6d49=_[_0x2227('0x31')](addVoicePrefixExtensions(_0x44a025,_0x41359a),function(_0x119d39){_0x119d39[_0x2227('0x54')]=_0x335798['id'];_0x119d39[_0x2227('0x63')]=_0x44a025['id'];return _0x119d39;});return db[_0x2227('0x53')]['bulkCreate'](_0x2f6d49,{'transaction':_0x10df84})[_0x2227('0x2a')](function(_0x1d0e87){if(!_0x1d0e87){return _0x30fbd8('Extensions\x20creation\x20failed');}else{return _0x1ec0db(_0x1d0e87);}})[_0x2227('0x49')](function(_0x108605){return _0x30fbd8(_0x108605);});});;});};function addVoicePrefixExtensions(_0x1b2634,_0x5a41d9){var _0x215fb2=[];var _0xfa23f1=formatPrefixName(_0x1b2634[_0x2227('0x64')]);_0x215fb2[_0x2227('0x65')](new Extension(_0xfa23f1,0x2,_0x2227('0x66'),_0x2227('0x67')+_0x1b2634[_0x2227('0x2f')]));if(_0x1b2634[_0x2227('0x68')]){_0x215fb2[_0x2227('0x65')](new Extension(_0xfa23f1,0x3,_0x2227('0x66'),_0x2227('0x69')+_0x1b2634[_0x2227('0x68')]));}else{_0x215fb2[_0x2227('0x65')](new Extension(_0xfa23f1,0x3,_0x2227('0x62'),'No\x20callerid\x20available'));}_0x215fb2[_0x2227('0x65')](new Extension(_0xfa23f1,0x4,_0x2227('0x6a'),_0x5a41d9[_0x2227('0x6b')]+','+_0x2227('0x6c')+(0x8+_0x1b2634[_0x2227('0x2f')][_0x2227('0x3d')])+'}'+','+0x1));return _0x215fb2;}function formatPrefixName(_0x1e7779){var _0x4633d8='_';for(var _0x4e0ca2=0x0;_0x4e0ca2<_0x1e7779[_0x2227('0x3d')];_0x4e0ca2++){if(_0x1e7779[_0x2227('0x6d')](_0x4e0ca2)=='-'){_0x4633d8+=_0x1e7779[_0x2227('0x6d')](_0x4e0ca2);}else{_0x4633d8+='['+_0x1e7779['charAt'](_0x4e0ca2)+']';}}_0x4633d8+='.';return _0x4633d8;}exports[_0x2227('0x6e')]=function(_0x4258a3,_0x24b5b0,_0x5bd233){var _0x398d76=_0x4258a3['body'];_0x398d76[_0x2227('0x64')]=_0x2227('0x6f')+_0x398d76[_0x2227('0x2f')]+'-';return db[_0x2227('0x50')]['transaction'](function(_0x3a34d8){return db[_0x2227('0x32')]['update'](_0x398d76,{'where':{'id':_0x398d76['id']},'transaction':_0x3a34d8})['then'](function(){return db[_0x2227('0x53')][_0x2227('0x2d')]({'where':{'VoicePrefixId':_0x398d76['id']},'transaction':_0x3a34d8})[_0x2227('0x2a')](function(){return db[_0x2227('0x53')][_0x2227('0x4d')]({'where':{'id':_0x398d76[_0x2227('0x54')]},'raw':!![]})[_0x2227('0x2a')](function(_0x36a85a){return createVoicePrefixExtensions(_0x398d76,_0x36a85a,_0x3a34d8);});});});})['then'](function(){return db[_0x2227('0x32')][_0x2227('0x70')](_0x398d76['id']);})[_0x2227('0x2a')](respondWithResult(_0x24b5b0,null))['catch'](handleError(_0x24b5b0,null));};exports['addAgents']=function(_0x5147fe,_0xf3038b,_0x57b27a){return db[_0x2227('0x32')][_0x2227('0x4d')]({'where':{'id':_0x5147fe[_0x2227('0x4b')]['id']}})[_0x2227('0x2a')](handleEntityNotFound(_0xf3038b,null))[_0x2227('0x2a')](function(_0x2435d0){if(_0x2435d0){return _0x2435d0[_0x2227('0x71')](_0x5147fe[_0x2227('0x52')][_0x2227('0x72')],_['omit'](_0x5147fe[_0x2227('0x52')],[_0x2227('0x72'),'id'])||{})[_0x2227('0x73')](function(_0x58e3ee){for(var _0x22a30f=0x0;_0x22a30f<_0x5147fe[_0x2227('0x52')]['ids']['length'];_0x22a30f+=0x1){socket[_0x2227('0x74')]('userVoicePrefix:save',{'UserId':Number(_0x5147fe[_0x2227('0x52')][_0x2227('0x72')][_0x22a30f]),'VoicePrefixId':Number(_0x5147fe[_0x2227('0x4b')]['id'])});}return _0x58e3ee;});}})[_0x2227('0x2a')](respondWithResult(_0xf3038b,null))[_0x2227('0x49')](handleError(_0xf3038b,null));};exports['removeAgents']=function(_0x9b431a,_0x128e74,_0x770f98){return db[_0x2227('0x32')]['find']({'where':{'id':_0x9b431a[_0x2227('0x4b')]['id']}})[_0x2227('0x2a')](handleEntityNotFound(_0x128e74,null))['then'](function(_0x5af36d){if(_0x5af36d){return _0x5af36d[_0x2227('0x75')](_0x9b431a[_0x2227('0x38')][_0x2227('0x72')])['then'](function(){if(_['isArray'](_0x9b431a[_0x2227('0x38')][_0x2227('0x72')])){for(var _0x13cd17=0x0;_0x13cd17<_0x9b431a[_0x2227('0x38')]['ids']['length'];_0x13cd17+=0x1){socket[_0x2227('0x74')]('userVoicePrefix:remove',{'UserId':Number(_0x9b431a[_0x2227('0x38')][_0x2227('0x72')][_0x13cd17]),'VoicePrefixId':Number(_0x9b431a[_0x2227('0x4b')]['id'])});}}else{socket['emit'](_0x2227('0x76'),{'UserId':Number(_0x9b431a['query'][_0x2227('0x72')]),'VoicePrefixId':Number(_0x9b431a[_0x2227('0x4b')]['id'])});}});}})[_0x2227('0x2a')](respondWithStatusCode(_0x128e74,null))[_0x2227('0x49')](handleError(_0x128e74,null));};exports[_0x2227('0x77')]=function(_0x190760,_0x2eea42,_0x9364ec){var _0x50c689={};var _0x266f3b={};var _0x3e2219;var _0x1f0fc8;return db['VoicePrefix']['findOne']({'where':{'id':_0x190760[_0x2227('0x4b')]['id']}})[_0x2227('0x2a')](handleEntityNotFound(_0x2eea42,null))[_0x2227('0x2a')](function(_0x5daa8b){if(_0x5daa8b){_0x3e2219=_0x5daa8b;_0x266f3b[_0x2227('0x36')]=_['keys'](db[_0x2227('0x78')]['rawAttributes']);_0x266f3b[_0x2227('0x38')]=_[_0x2227('0x37')](_0x190760['query']);_0x266f3b[_0x2227('0x39')]=_[_0x2227('0x3a')](_0x266f3b[_0x2227('0x36')],_0x266f3b[_0x2227('0x38')]);_0x50c689[_0x2227('0x3b')]=_[_0x2227('0x3a')](_0x266f3b['model'],qs['fields'](_0x190760[_0x2227('0x38')][_0x2227('0x3c')]));_0x50c689[_0x2227('0x3b')]=_0x50c689[_0x2227('0x3b')]['length']?_0x50c689['attributes']:_0x266f3b[_0x2227('0x36')];_0x50c689[_0x2227('0x79')]=qs[_0x2227('0x40')](_0x190760['query']['sort']);_0x50c689[_0x2227('0x41')]=qs[_0x2227('0x39')](_[_0x2227('0x7a')](_0x190760[_0x2227('0x38')],_0x266f3b[_0x2227('0x39')]));if(_0x190760[_0x2227('0x38')][_0x2227('0x42')]){_0x50c689[_0x2227('0x41')]=_[_0x2227('0x43')](_0x50c689['where'],{'$or':_['map'](_0x50c689[_0x2227('0x3b')],function(_0x5732e5){var _0x5f1ade={};_0x5f1ade[_0x5732e5]={'$like':'%'+_0x190760[_0x2227('0x38')]['filter']+'%'};return _0x5f1ade;})});}_0x50c689=_[_0x2227('0x43')]({},_0x50c689,_0x190760[_0x2227('0x46')]);return _0x3e2219['getAgents'](_0x50c689);}})[_0x2227('0x2a')](function(_0x3174ef){if(_0x3174ef){_0x1f0fc8=_0x3174ef[_0x2227('0x3d')];if(!_0x190760['query'][_0x2227('0x3e')]('nolimit')){_0x50c689['limit']=qs[_0x2227('0x23')](_0x190760['query'][_0x2227('0x23')]);_0x50c689[_0x2227('0x21')]=qs[_0x2227('0x21')](_0x190760['query'][_0x2227('0x21')]);}return _0x3e2219[_0x2227('0x77')](_0x50c689);}})[_0x2227('0x2a')](function(_0x467380){if(_0x467380){return _0x467380?{'count':_0x1f0fc8,'rows':_0x467380}:null;}})['then'](respondWithResult(_0x2eea42,null))['catch'](handleError(_0x2eea42,null));};exports[_0x2227('0x7b')]=function(_0x3b653f,_0x35c9ea,_0x2e4a1b){var _0x4cd27e={};var _0x1a2852={};var _0x4599ab;var _0x3d592a;return db[_0x2227('0x32')][_0x2227('0x7c')]({'where':{'id':_0x3b653f[_0x2227('0x4b')]['id']}})[_0x2227('0x2a')](handleEntityNotFound(_0x35c9ea,null))['then'](function(_0x524e6a){if(_0x524e6a){_0x4599ab=_0x524e6a;_0x1a2852[_0x2227('0x36')]=_[_0x2227('0x37')](db['Team'][_0x2227('0x33')]);_0x1a2852[_0x2227('0x38')]=_[_0x2227('0x37')](_0x3b653f[_0x2227('0x38')]);_0x1a2852['filters']=_[_0x2227('0x3a')](_0x1a2852['model'],_0x1a2852['query']);_0x4cd27e[_0x2227('0x3b')]=_[_0x2227('0x3a')](_0x1a2852[_0x2227('0x36')],qs[_0x2227('0x3c')](_0x3b653f[_0x2227('0x38')][_0x2227('0x3c')]));_0x4cd27e[_0x2227('0x3b')]=_0x4cd27e[_0x2227('0x3b')][_0x2227('0x3d')]?_0x4cd27e['attributes']:_0x1a2852[_0x2227('0x36')];_0x4cd27e[_0x2227('0x79')]=qs[_0x2227('0x40')](_0x3b653f[_0x2227('0x38')][_0x2227('0x40')]);_0x4cd27e['where']=qs[_0x2227('0x39')](_['pick'](_0x3b653f[_0x2227('0x38')],_0x1a2852[_0x2227('0x39')]));if(_0x3b653f[_0x2227('0x38')][_0x2227('0x42')]){_0x4cd27e[_0x2227('0x41')]=_[_0x2227('0x43')](_0x4cd27e[_0x2227('0x41')],{'$or':_[_0x2227('0x31')](_0x4cd27e['attributes'],function(_0x1686d7){var _0x30101f={};_0x30101f[_0x1686d7]={'$like':'%'+_0x3b653f[_0x2227('0x38')]['filter']+'%'};return _0x30101f;})});}_0x4cd27e=_[_0x2227('0x43')]({},_0x4cd27e,_0x3b653f[_0x2227('0x46')]);return _0x4599ab['getTeams'](_0x4cd27e);}})[_0x2227('0x2a')](function(_0x386b5d){if(_0x386b5d){_0x3d592a=_0x386b5d['length'];if(!_0x3b653f[_0x2227('0x38')][_0x2227('0x3e')](_0x2227('0x3f'))){_0x4cd27e[_0x2227('0x23')]=qs[_0x2227('0x23')](_0x3b653f[_0x2227('0x38')][_0x2227('0x23')]);_0x4cd27e[_0x2227('0x21')]=qs['offset'](_0x3b653f[_0x2227('0x38')][_0x2227('0x21')]);}return _0x4599ab[_0x2227('0x7b')](_0x4cd27e);}})[_0x2227('0x2a')](function(_0x172b34){if(_0x172b34){return _0x172b34?{'count':_0x3d592a,'rows':_0x172b34}:null;}})[_0x2227('0x2a')](respondWithResult(_0x35c9ea,null))['catch'](handleError(_0x35c9ea,null));};exports[_0x2227('0x7d')]=function(_0x2ffe4f,_0x28d3ca,_0x20def8){var _0x42787b=_0x2ffe4f[_0x2227('0x52')][_0x2227('0x72')];var _0x2cf763;return db[_0x2227('0x7e')][_0x2227('0x48')]({'where':{'id':_0x42787b},'attributes':['id'],'include':[{'model':db[_0x2227('0x78')],'as':_0x2227('0x7f'),'attributes':['id','name',_0x2227('0x80'),_0x2227('0x81'),_0x2227('0x82')],'raw':!![]}]})[_0x2227('0x2a')](function(_0x43af43){if(_0x43af43){_0x2cf763=_0x43af43;var _0x1766e5=_[_0x2227('0x83')](_0x43af43,function(_0x2fdf17){var _0x38e805=_0x2fdf17[_0x2227('0x2b')]({'plain':!![]});return _0x38e805['Agents'];});return db[_0x2227('0x32')][_0x2227('0x4d')]({'where':{'id':_0x2ffe4f[_0x2227('0x4b')]['id']}})[_0x2227('0x2a')](function(_0x2fdc19){return db[_0x2227('0x50')][_0x2227('0x51')](function(_0x3f7d5d){return _0x2fdc19['addTeams'](_0x42787b,{'transaction':_0x3f7d5d})[_0x2227('0x2a')](function(){return BPromise[_0x2227('0x84')](_0x2cf763,function(_0x36492d){return db['TeamVoicePrefix'][_0x2227('0x85')]({'TeamId':_0x36492d['id'],'VoicePrefixId':_0x2ffe4f[_0x2227('0x4b')]['id']},{'transaction':_0x3f7d5d});});})['then'](function(){return BPromise[_0x2227('0x84')](_0x1766e5,function(_0x2fb89b){return db[_0x2227('0x86')][_0x2227('0x87')]({'where':{'UserId':_0x2fb89b['id'],'VoicePrefixId':_0x2ffe4f[_0x2227('0x4b')]['id']},'transaction':_0x3f7d5d});});})['then'](function(){_0x1766e5[_0x2227('0x88')](function(_0x12fabe){socket[_0x2227('0x74')](_0x2227('0x89'),{'UserId':_0x12fabe['id'],'VoicePrefixId':_0x2fdc19['id']});});});});});}})[_0x2227('0x2a')](respondWithStatusCode(_0x28d3ca,null))['catch'](handleError(_0x28d3ca,null));};exports['removeTeams']=function(_0x2e153f,_0x312033,_0x1c557d){return db['Team']['findAll']({'where':{'id':_0x2e153f['query'][_0x2227('0x72')]},'attributes':['id'],'include':[{'model':db[_0x2227('0x78')],'as':_0x2227('0x7f'),'attributes':['id'],'raw':!![]}]})[_0x2227('0x2a')](handleEntityNotFound(_0x312033,null))[_0x2227('0x2a')](function(_0x3e5597){var _0x3f58d2=_['map'](_0x3e5597,'id');var _0x2930e9=[];var _0x4505ab=[];var _0x2824b1=squel[_0x2227('0x8a')]();_0x2824b1[_0x2227('0x8b')](_0x2227('0x8c'))[_0x2227('0x8d')](_0x2227('0x8e'),'tq')[_0x2227('0x8f')]('user_has_teams','ut',_0x2227('0x90'))[_0x2227('0x41')](_0x2227('0x91'),_0x2e153f[_0x2227('0x4b')]['id']);for(var _0x3b5b07=0x0;_0x3b5b07<_0x3e5597[_0x2227('0x3d')];_0x3b5b07+=0x1){let _0x19608d=_0x3e5597[_0x3b5b07];for(var _0x5008cc=0x0;_0x5008cc<_0x19608d[_0x2227('0x7f')][_0x2227('0x3d')];_0x5008cc+=0x1){let _0x15b3c4=_0x19608d[_0x2227('0x7f')][_0x5008cc];var _0x1a0805=_0x2824b1[_0x2227('0x92')]();_0x1a0805[_0x2227('0x41')]('ut.UserId\x20=\x20?',_0x15b3c4['id']);_0x4505ab[_0x2227('0x65')](db[_0x2227('0x50')][_0x2227('0x38')](_0x1a0805[_0x2227('0x93')](),{'type':db[_0x2227('0x50')]['QueryTypes'][_0x2227('0x94')]})[_0x2227('0x2a')](function(_0x4f822c){if(_0x4f822c['length']===0x1){return _0x15b3c4['id'];}else{var _0x1bab79=_[_0x2227('0x95')](_[_0x2227('0x31')](_0x4f822c,_0x2227('0x96')),function(_0x26c479){return _[_0x2227('0x97')](_0x3f58d2,_0x26c479);});if(_0x1bab79){return _0x15b3c4['id'];}}}));}}return BPromise[_0x2227('0x98')](_0x4505ab)['then'](function(_0x54db70){_0x2930e9=_(_0x2930e9)[_0x2227('0x99')](_0x54db70)['compact']()['value']();return db[_0x2227('0x32')][_0x2227('0x4d')]({'where':{'id':_0x2e153f[_0x2227('0x4b')]['id']}})[_0x2227('0x2a')](function(_0x152b89){return db[_0x2227('0x50')]['transaction'](function(_0x360f72){return _0x152b89[_0x2227('0x9a')](_0x2e153f['query'][_0x2227('0x72')],{'transaction':_0x360f72})[_0x2227('0x2a')](function(){if(!_[_0x2227('0x9b')](_0x2930e9)){return _0x152b89[_0x2227('0x75')](_0x2930e9,{'transaction':_0x360f72});}})[_0x2227('0x2a')](function(){_0x2930e9[_0x2227('0x88')](function(_0x66aa39){socket[_0x2227('0x74')](_0x2227('0x76'),{'UserId':_0x66aa39,'VoicePrefixId':_0x152b89['id']});});});});});});})[_0x2227('0x2a')](respondWithStatusCode(_0x312033,null))['catch'](handleError(_0x312033,null));};
\ No newline at end of file
index 5f1e952..280b77c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x929f=['remove','emit','hasOwnProperty','hook','exports','setMaxListeners','save','update'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x929f,0x145));var _0xf929=function(_0x6cf7b4,_0x5976a6){_0x6cf7b4=_0x6cf7b4-0x0;var _0x5df872=_0x929f[_0x6cf7b4];return _0x5df872;};'use strict';var EventEmitter=require('events');var VoicePrefix=require('../../mysqldb')['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xf929('0x0')](0x0);var events={'afterCreate':_0xf929('0x1'),'afterUpdate':_0xf929('0x2'),'afterDestroy':_0xf929('0x3')};function emitEvent(_0xf62c05){return function(_0x193b80,_0xd75d59,_0xc0520f){VoicePrefixEvents[_0xf929('0x4')](_0xf62c05+':'+_0x193b80['id'],_0x193b80);VoicePrefixEvents['emit'](_0xf62c05,_0x193b80);_0xc0520f(null);};}for(var e in events){if(events[_0xf929('0x5')](e)){var event=events[e];VoicePrefix[_0xf929('0x6')](e,emitEvent(event));}}module[_0xf929('0x7')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x97b1=['setMaxListeners','save','update','emit','hook','exports','events','../../mysqldb'];(function(_0x378b4,_0x5ca7fa){var _0x11d07b=function(_0x35d420){while(--_0x35d420){_0x378b4['push'](_0x378b4['shift']());}};_0x11d07b(++_0x5ca7fa);}(_0x97b1,0x10e));var _0x197b=function(_0x36c6eb,_0x4fb127){_0x36c6eb=_0x36c6eb-0x0;var _0x30675b=_0x97b1[_0x36c6eb];return _0x30675b;};'use strict';var EventEmitter=require(_0x197b('0x0'));var VoicePrefix=require(_0x197b('0x1'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x197b('0x2')](0x0);var events={'afterCreate':_0x197b('0x3'),'afterUpdate':_0x197b('0x4'),'afterDestroy':'remove'};function emitEvent(_0x290dad){return function(_0x3a6d28,_0x31a61f,_0x1a38dd){VoicePrefixEvents['emit'](_0x290dad+':'+_0x3a6d28['id'],_0x3a6d28);VoicePrefixEvents[_0x197b('0x5')](_0x290dad,_0x3a6d28);_0x1a38dd(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0x197b('0x6')](e,emitEvent(event));}}module[_0x197b('0x7')]=VoicePrefixEvents;
\ No newline at end of file
index 03a3035..5062b71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1df9=['path','rimraf','./voicePrefix.attributes','define','lodash','util','api','moment','bluebird','request-promise'];(function(_0x443b63,_0x52c3f0){var _0x33bba6=function(_0xac7cdb){while(--_0xac7cdb){_0x443b63['push'](_0x443b63['shift']());}};_0x33bba6(++_0x52c3f0);}(_0x1df9,0x1a8));var _0x91df=function(_0x506e91,_0x35a53d){_0x506e91=_0x506e91-0x0;var _0x1bcc59=_0x1df9[_0x506e91];return _0x1bcc59;};'use strict';var _=require(_0x91df('0x0'));var util=require(_0x91df('0x1'));var logger=require('../../config/logger')(_0x91df('0x2'));var moment=require(_0x91df('0x3'));var BPromise=require(_0x91df('0x4'));var rp=require(_0x91df('0x5'));var fs=require('fs');var path=require(_0x91df('0x6'));var rimraf=require(_0x91df('0x7'));var config=require('../../config/environment');var attributes=require(_0x91df('0x8'));module['exports']=function(_0xa2ee10,_0x1bece6){return _0xa2ee10[_0x91df('0x9')]('VoicePrefix',attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5004=['exports','define','VoicePrefix','voice_prefixes','lodash','../../config/logger','request-promise','rimraf','../../config/environment','./voicePrefix.attributes'];(function(_0x1c3119,_0x2c1c73){var _0x5020a6=function(_0x4b1594){while(--_0x4b1594){_0x1c3119['push'](_0x1c3119['shift']());}};_0x5020a6(++_0x2c1c73);}(_0x5004,0x1bc));var _0x4500=function(_0x4d4ec6,_0x57a624){_0x4d4ec6=_0x4d4ec6-0x0;var _0x32eb00=_0x5004[_0x4d4ec6];return _0x32eb00;};'use strict';var _=require(_0x4500('0x0'));var util=require('util');var logger=require(_0x4500('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4500('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4500('0x3'));var config=require(_0x4500('0x4'));var attributes=require(_0x4500('0x5'));module[_0x4500('0x6')]=function(_0x33c7de,_0x1880a2){return _0x33c7de[_0x4500('0x7')](_0x4500('0x8'),attributes,{'tableName':_0x4500('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index de14152..81607c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7ae=['../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voicePrefix.socket','register','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','error','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0xc49bc6,_0xaaf844){var _0x1d7079=function(_0x4d2e4e){while(--_0x4d2e4e){_0xc49bc6['push'](_0xc49bc6['shift']());}};_0x1d7079(++_0xaaf844);}(_0xb7ae,0xf3));var _0xeb7a=function(_0x3a9e41,_0x1554e0){_0x3a9e41=_0x3a9e41-0x0;var _0x855ff0=_0xb7ae[_0x3a9e41];return _0x855ff0;};'use strict';var _=require(_0xeb7a('0x0'));var util=require(_0xeb7a('0x1'));var moment=require(_0xeb7a('0x2'));var BPromise=require(_0xeb7a('0x3'));var rs=require(_0xeb7a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xeb7a('0x5'))['db'];var utils=require(_0xeb7a('0x6'));var logger=require(_0xeb7a('0x7'))('rpc');var config=require(_0xeb7a('0x8'));var jayson=require(_0xeb7a('0x9'));var client=jayson[_0xeb7a('0xa')][_0xeb7a('0xb')]({'port':0x232a});config[_0xeb7a('0xc')]=_['defaults'](config[_0xeb7a('0xc')],{'host':_0xeb7a('0xd'),'port':0x18eb});var socket=require(_0xeb7a('0xe'))(new Redis(config['redis']));require(_0xeb7a('0xf'))[_0xeb7a('0x10')](socket);function respondWithRpcPromise(_0xb440a6,_0x15581b,_0x1a997e){return new BPromise(function(_0x275d58,_0x1e56db){return client['request'](_0xb440a6,_0x1a997e)['then'](function(_0x31222f){logger[_0xeb7a('0x11')](_0xeb7a('0x12'),_0x15581b,_0xeb7a('0x13'));logger[_0xeb7a('0x14')](_0xeb7a('0x15'),_0x15581b,_0xeb7a('0x13'),JSON['stringify'](_0x31222f));if(_0x31222f[_0xeb7a('0x16')]){if(_0x31222f[_0xeb7a('0x16')]['code']===0x1f4){logger[_0xeb7a('0x16')](_0xeb7a('0x12'),_0x15581b,_0x31222f['error'][_0xeb7a('0x17')]);return _0x1e56db(_0x31222f['error']['message']);}logger[_0xeb7a('0x16')]('VoicePrefix,\x20%s,\x20%s',_0x15581b,_0x31222f['error'][_0xeb7a('0x17')]);return _0x275d58(_0x31222f[_0xeb7a('0x16')][_0xeb7a('0x17')]);}else{logger[_0xeb7a('0x11')]('VoicePrefix,\x20%s,\x20%s',_0x15581b,'request\x20sent');_0x275d58(_0x31222f[_0xeb7a('0x18')][_0xeb7a('0x17')]);}})['catch'](function(_0x538311){logger[_0xeb7a('0x16')](_0xeb7a('0x12'),_0x15581b,_0x538311);_0x1e56db(_0x538311);});});}
\ No newline at end of file
+var _0xab54=['localhost','socket.io-emitter','request','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird','randomstring','ioredis','../../config/utils','jayson/promise','client','redis'];(function(_0x401018,_0x563607){var _0x32c3f3=function(_0x189a9b){while(--_0x189a9b){_0x401018['push'](_0x401018['shift']());}};_0x32c3f3(++_0x563607);}(_0xab54,0x115));var _0x4ab5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xab54[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x4ab5('0x0'));var moment=require(_0x4ab5('0x1'));var BPromise=require(_0x4ab5('0x2'));var rs=require(_0x4ab5('0x3'));var fs=require('fs');var Redis=require(_0x4ab5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4ab5('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x4ab5('0x6'));var client=jayson[_0x4ab5('0x7')]['http']({'port':0x232a});config[_0x4ab5('0x8')]=_['defaults'](config[_0x4ab5('0x8')],{'host':_0x4ab5('0x9'),'port':0x18eb});var socket=require(_0x4ab5('0xa'))(new Redis(config[_0x4ab5('0x8')]));require('./voicePrefix.socket')['register'](socket);function respondWithRpcPromise(_0x5f5209,_0x30ef3d,_0x168817){return new BPromise(function(_0x5326a6,_0x32a206){return client[_0x4ab5('0xb')](_0x5f5209,_0x168817)['then'](function(_0x139648){logger[_0x4ab5('0xc')](_0x4ab5('0xd'),_0x30ef3d,_0x4ab5('0xe'));logger[_0x4ab5('0xf')](_0x4ab5('0x10'),_0x30ef3d,_0x4ab5('0xe'),JSON[_0x4ab5('0x11')](_0x139648));if(_0x139648[_0x4ab5('0x12')]){if(_0x139648[_0x4ab5('0x12')][_0x4ab5('0x13')]===0x1f4){logger[_0x4ab5('0x12')](_0x4ab5('0xd'),_0x30ef3d,_0x139648[_0x4ab5('0x12')]['message']);return _0x32a206(_0x139648[_0x4ab5('0x12')]['message']);}logger[_0x4ab5('0x12')]('VoicePrefix,\x20%s,\x20%s',_0x30ef3d,_0x139648['error'][_0x4ab5('0x14')]);return _0x5326a6(_0x139648[_0x4ab5('0x12')][_0x4ab5('0x14')]);}else{logger[_0x4ab5('0xc')]('VoicePrefix,\x20%s,\x20%s',_0x30ef3d,_0x4ab5('0xe'));_0x5326a6(_0x139648[_0x4ab5('0x15')]['message']);}})['catch'](function(_0x5d0afa){logger[_0x4ab5('0x12')]('VoicePrefix,\x20%s,\x20%s',_0x30ef3d,_0x5d0afa);_0x32a206(_0x5d0afa);});});}
\ No newline at end of file
index e7250cb..8b228a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cf3=['emit','removeListener','register','length','voicePrefix:','./voicePrefix.events','save','remove','update'];(function(_0x23a9cb,_0x2cf119){var _0x2e1181=function(_0xc69873){while(--_0xc69873){_0x23a9cb['push'](_0x23a9cb['shift']());}};_0x2e1181(++_0x2cf119);}(_0x1cf3,0x1be));var _0x31cf=function(_0x3d5c7e,_0x4a311e){_0x3d5c7e=_0x3d5c7e-0x0;var _0x2cbe3a=_0x1cf3[_0x3d5c7e];return _0x2cbe3a;};'use strict';var VoicePrefixEvents=require(_0x31cf('0x0'));var events=[_0x31cf('0x1'),_0x31cf('0x2'),_0x31cf('0x3')];function createListener(_0x54dff7,_0x20aa57){return function(_0x5a2ae7){_0x20aa57[_0x31cf('0x4')](_0x54dff7,_0x5a2ae7);};}function removeListener(_0x442009,_0x44d64d){return function(){VoicePrefixEvents[_0x31cf('0x5')](_0x442009,_0x44d64d);};}exports[_0x31cf('0x6')]=function(_0x44dd04){for(var _0x2b7cd4=0x0,_0x1830b4=events[_0x31cf('0x7')];_0x2b7cd4<_0x1830b4;_0x2b7cd4++){var _0x6be80=events[_0x2b7cd4];var _0x3f7b2e=createListener(_0x31cf('0x8')+_0x6be80,_0x44dd04);VoicePrefixEvents['on'](_0x6be80,_0x3f7b2e);}};
\ No newline at end of file
+var _0x43b1=['emit','removeListener','register','length','voicePrefix:','./voicePrefix.events','save','remove'];(function(_0xa8dc6d,_0x3bdfc2){var _0x141e04=function(_0x1136e4){while(--_0x1136e4){_0xa8dc6d['push'](_0xa8dc6d['shift']());}};_0x141e04(++_0x3bdfc2);}(_0x43b1,0x7d));var _0x143b=function(_0x22d31f,_0x4421f9){_0x22d31f=_0x22d31f-0x0;var _0x5de2a7=_0x43b1[_0x22d31f];return _0x5de2a7;};'use strict';var VoicePrefixEvents=require(_0x143b('0x0'));var events=[_0x143b('0x1'),_0x143b('0x2'),'update'];function createListener(_0xb377ea,_0x4976d0){return function(_0x1e1282){_0x4976d0[_0x143b('0x3')](_0xb377ea,_0x1e1282);};}function removeListener(_0x223e86,_0x1552bc){return function(){VoicePrefixEvents[_0x143b('0x4')](_0x223e86,_0x1552bc);};}exports[_0x143b('0x5')]=function(_0x4be3bc){for(var _0x263d20=0x0,_0x2236ae=events[_0x143b('0x6')];_0x263d20<_0x2236ae;_0x263d20++){var _0x519333=events[_0x263d20];var _0x453a09=createListener(_0x143b('0x7')+_0x519333,_0x4be3bc);VoicePrefixEvents['on'](_0x519333,_0x453a09);}};
\ No newline at end of file
index 62853c8..ab71941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd766=['getHopperFinals','/:id/hopper_black','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','/:id/teams','addTeams','addAgents','addLists','addBlackLists','put','destroy','removeTeams','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','/:id/hopper_histories','/:id/hopper_finals'];(function(_0x47ce8f,_0x313a66){var _0x12b547=function(_0x1034a3){while(--_0x1034a3){_0x47ce8f['push'](_0x47ce8f['shift']());}};_0x12b547(++_0x313a66);}(_0xd766,0x188));var _0x6d76=function(_0xeaba4b,_0x1eab4b){_0xeaba4b=_0xeaba4b-0x0;var _0x32f4fd=_0xd766[_0xeaba4b];return _0x32f4fd;};'use strict';var multer=require(_0x6d76('0x0'));var util=require(_0x6d76('0x1'));var path=require(_0x6d76('0x2'));var timeout=require(_0x6d76('0x3'));var express=require(_0x6d76('0x4'));var router=express[_0x6d76('0x5')]();var fs_extra=require(_0x6d76('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x6d76('0x7'));var config=require(_0x6d76('0x8'));var controller=require(_0x6d76('0x9'));router[_0x6d76('0xa')]('/',auth[_0x6d76('0xb')](),controller[_0x6d76('0xc')]);router[_0x6d76('0xa')](_0x6d76('0xd'),auth[_0x6d76('0xb')](),controller[_0x6d76('0xe')]);router['get'](_0x6d76('0xf'),auth['isAuthenticated'](),controller['getHoppers']);router['get'](_0x6d76('0x10'),auth[_0x6d76('0xb')](),controller['getHopperHistories']);router['get'](_0x6d76('0x11'),auth[_0x6d76('0xb')](),controller[_0x6d76('0x12')]);router[_0x6d76('0xa')](_0x6d76('0x13'),auth[_0x6d76('0xb')](),controller['getHopperBlacks']);router[_0x6d76('0xa')]('/:id/teams',auth[_0x6d76('0xb')](),controller['getTeams']);router[_0x6d76('0xa')](_0x6d76('0x14'),auth[_0x6d76('0xb')](),controller[_0x6d76('0x15')]);router[_0x6d76('0xa')](_0x6d76('0x16'),auth[_0x6d76('0xb')](),controller[_0x6d76('0x17')]);router[_0x6d76('0xa')](_0x6d76('0x18'),auth[_0x6d76('0xb')](),controller[_0x6d76('0x19')]);router['get'](_0x6d76('0x1a'),auth['isAuthenticated'](),controller[_0x6d76('0x1b')]);router[_0x6d76('0x1c')]('/',auth['isAuthenticated'](),controller[_0x6d76('0x1d')]);router[_0x6d76('0x1c')](_0x6d76('0x1e'),auth['isAuthenticated'](),controller[_0x6d76('0x1f')]);router[_0x6d76('0x1c')](_0x6d76('0x20'),auth[_0x6d76('0xb')](),controller[_0x6d76('0x21')]);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0x6d76('0x22')]);router[_0x6d76('0x1c')](_0x6d76('0x18'),auth[_0x6d76('0xb')](),controller[_0x6d76('0x23')]);router[_0x6d76('0x1c')]('/:id/blacklists',auth['isAuthenticated'](),controller[_0x6d76('0x24')]);router[_0x6d76('0x25')](_0x6d76('0xd'),auth[_0x6d76('0xb')](),controller['update']);router['delete'](_0x6d76('0xd'),auth['isAuthenticated'](),controller[_0x6d76('0x26')]);router['delete'](_0x6d76('0x20'),auth['isAuthenticated'](),controller[_0x6d76('0x27')]);router['delete']('/:id/users',auth[_0x6d76('0xb')](),controller['removeAgents']);router[_0x6d76('0x28')](_0x6d76('0x18'),auth[_0x6d76('0xb')](),controller['removeLists']);router[_0x6d76('0x28')]('/:id/blacklists',auth[_0x6d76('0xb')](),controller['removeBlackLists']);module['exports']=router;
\ No newline at end of file
+var _0xfd87=['/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','/:id/members','getMembers','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','clone','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','express','Router','../../components/auth/service','./voiceQueue.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers'];(function(_0x1965e0,_0x2c0354){var _0x406cfa=function(_0xe09c9e){while(--_0xe09c9e){_0x1965e0['push'](_0x1965e0['shift']());}};_0x406cfa(++_0x2c0354);}(_0xfd87,0x1b5));var _0x7fd8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd87[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x7fd8('0x0'));var util=require(_0x7fd8('0x1'));var path=require(_0x7fd8('0x2'));var timeout=require('connect-timeout');var express=require(_0x7fd8('0x3'));var router=express[_0x7fd8('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7fd8('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7fd8('0x6'));router[_0x7fd8('0x7')]('/',auth[_0x7fd8('0x8')](),controller[_0x7fd8('0x9')]);router['get'](_0x7fd8('0xa'),auth[_0x7fd8('0x8')](),controller[_0x7fd8('0xb')]);router[_0x7fd8('0x7')](_0x7fd8('0xc'),auth['isAuthenticated'](),controller[_0x7fd8('0xd')]);router['get'](_0x7fd8('0xe'),auth['isAuthenticated'](),controller[_0x7fd8('0xf')]);router[_0x7fd8('0x7')](_0x7fd8('0x10'),auth[_0x7fd8('0x8')](),controller[_0x7fd8('0x11')]);router[_0x7fd8('0x7')](_0x7fd8('0x12'),auth[_0x7fd8('0x8')](),controller[_0x7fd8('0x13')]);router[_0x7fd8('0x7')](_0x7fd8('0x14'),auth['isAuthenticated'](),controller['getTeams']);router['get'](_0x7fd8('0x15'),auth['isAuthenticated'](),controller['getAgents']);router[_0x7fd8('0x7')](_0x7fd8('0x16'),auth[_0x7fd8('0x8')](),controller[_0x7fd8('0x17')]);router[_0x7fd8('0x7')](_0x7fd8('0x18'),auth[_0x7fd8('0x8')](),controller[_0x7fd8('0x19')]);router[_0x7fd8('0x7')](_0x7fd8('0x1a'),auth[_0x7fd8('0x8')](),controller[_0x7fd8('0x1b')]);router['post']('/',auth[_0x7fd8('0x8')](),controller['create']);router[_0x7fd8('0x1c')]('/:id/clone',auth[_0x7fd8('0x8')](),controller[_0x7fd8('0x1d')]);router[_0x7fd8('0x1c')](_0x7fd8('0x14'),auth[_0x7fd8('0x8')](),controller[_0x7fd8('0x1e')]);router[_0x7fd8('0x1c')](_0x7fd8('0x15'),auth['isAuthenticated'](),controller[_0x7fd8('0x1f')]);router['post'](_0x7fd8('0x18'),auth[_0x7fd8('0x8')](),controller['addLists']);router[_0x7fd8('0x1c')]('/:id/blacklists',auth[_0x7fd8('0x8')](),controller['addBlackLists']);router[_0x7fd8('0x20')]('/:id',auth[_0x7fd8('0x8')](),controller[_0x7fd8('0x21')]);router[_0x7fd8('0x22')](_0x7fd8('0xa'),auth['isAuthenticated'](),controller[_0x7fd8('0x23')]);router[_0x7fd8('0x22')]('/:id/teams',auth[_0x7fd8('0x8')](),controller[_0x7fd8('0x24')]);router[_0x7fd8('0x22')](_0x7fd8('0x15'),auth[_0x7fd8('0x8')](),controller[_0x7fd8('0x25')]);router[_0x7fd8('0x22')](_0x7fd8('0x18'),auth['isAuthenticated'](),controller[_0x7fd8('0x26')]);router[_0x7fd8('0x22')](_0x7fd8('0x1a'),auth[_0x7fd8('0x8')](),controller[_0x7fd8('0x27')]);module[_0x7fd8('0x28')]=router;
\ No newline at end of file
index 2236367..747119d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b2d=['ASC','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDisposition','STRING','ENUM','inbound','ringall','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','rrordered','strategy','getDataValue','type','booked','roundrobin','predictive','INTEGER','yes','all','setDataValue','periodic_announce','join','split','joinempty','leavewhenempty','acw','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','preview','progressive','power','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','agentBusyFactor','dropRate','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','DESC'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8b2d,0xe5));var _0xd8b2=function(_0x3a23c1,_0x495d49){_0x3a23c1=_0x3a23c1-0x0;var _0x286863=_0x8b2d[_0x3a23c1];return _0x286863;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xd8b2('0x0')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x2'),'outbound'),'allowNull':![],'defaultValue':_0xd8b2('0x2')},'musiconhold':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':'default'},'announce':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':''},'strategy':{'type':Sequelize[_0xd8b2('0x1')]('rr',_0xd8b2('0x3'),_0xd8b2('0x4'),_0xd8b2('0x5'),_0xd8b2('0x6'),_0xd8b2('0x7'),_0xd8b2('0x8'),_0xd8b2('0x9'),_0xd8b2('0xa')),'allowNull':![],'defaultValue':'ringall','set':function(_0x2ac547){this['setDataValue'](_0xd8b2('0xb'),_0x2ac547?_0x2ac547:_0xd8b2('0x7'));},'get':function(){var _0xba39d5=this[_0xd8b2('0xc')](_0xd8b2('0xd'));var _0x4e7f9f=this['getDataValue']('dialMethod');var _0x726301=this[_0xd8b2('0xc')](_0xd8b2('0xb'));if(_0xba39d5==='inbound'){return _0x726301;}if(_0x4e7f9f===_0xd8b2('0xe')&&_0x726301===_0xd8b2('0x7')||_0x4e7f9f===_0xd8b2('0xe')&&_0x726301===_0xd8b2('0xf')){return _0x726301;}if(_0x4e7f9f==='progressive'||_0x4e7f9f===_0xd8b2('0x10')||_0x4e7f9f==='power'){return _0x726301;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xd8b2('0x11')](0xb)},'timeout':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xd8b2('0x0')]},'weight':{'type':Sequelize[_0xd8b2('0x11')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0xd8b2('0x12')},'autopause':{'type':Sequelize['ENUM'](_0xd8b2('0x12'),'no',_0xd8b2('0x13')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xd8b2('0x11')](0xb)},'autopausebusy':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x12'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM'](_0xd8b2('0x12'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x12'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0xd8b2('0x12'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xd8b2('0x1')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xd8b2('0x0')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x12'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0xd8b2('0x12'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x12'),'no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xd8b2('0x1')]('yes','no')},'announce_position_limit':{'type':Sequelize[_0xd8b2('0x11')](0xb)},'announce_round_seconds':{'type':Sequelize[_0xd8b2('0x1')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xd8b2('0x0')]},'queue_youarenext':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xd8b2('0x0')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xd8b2('0x0')]},'queue_quantity1':{'type':Sequelize[_0xd8b2('0x0')]},'queue_quantity2':{'type':Sequelize[_0xd8b2('0x0')]},'queue_periodic_announce':{'type':Sequelize[_0xd8b2('0x0')]},'queue_less_than':{'type':Sequelize[_0xd8b2('0x0')]},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x22b687){this[_0xd8b2('0x14')](_0xd8b2('0x15'),_0x22b687?_0x22b687[_0xd8b2('0x16')](','):[]);},'get':function(){return this[_0xd8b2('0xc')](_0xd8b2('0x15'))?this[_0xd8b2('0xc')](_0xd8b2('0x15'))[_0xd8b2('0x17')](','):[];}},'joinempty':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':_0xd8b2('0x12'),'set':function(_0x51f9bc){this[_0xd8b2('0x14')]('joinempty',_0x51f9bc?_0x51f9bc[_0xd8b2('0x16')](','):undefined);},'get':function(){return this[_0xd8b2('0xc')](_0xd8b2('0x18'))?this[_0xd8b2('0xc')](_0xd8b2('0x18'))[_0xd8b2('0x17')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':'no','set':function(_0x30b8a5){this['setDataValue'](_0xd8b2('0x19'),_0x30b8a5?_0x30b8a5[_0xd8b2('0x16')](','):undefined);},'get':function(){return this[_0xd8b2('0xc')](_0xd8b2('0x19'))?this[_0xd8b2('0xc')](_0xd8b2('0x19'))[_0xd8b2('0x17')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x12'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xd8b2('0x1')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xd8b2('0x1')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd8b2('0x0')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x31491f){this['setDataValue'](_0xd8b2('0x1a'),_0x31491f);if(_0x31491f){if(this[_0xd8b2('0xc')](_0xd8b2('0x1b'))<0x2){this[_0xd8b2('0x14')](_0xd8b2('0x1b'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xd8b2('0x11')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xd8b2('0x1c')],'defaultValue':0x0,'comment':_0xd8b2('0x1d')},'dialMethod':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x1e'),_0xd8b2('0x1f'),_0xd8b2('0x20'),_0xd8b2('0x10'),_0xd8b2('0xe')),'defaultValue':_0xd8b2('0x1f'),'comment':_0xd8b2('0x21')},'dialLimitChannel':{'type':Sequelize[_0xd8b2('0x11')](0x4)[_0xd8b2('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xd8b2('0x23')},'dialLimitQueue':{'type':Sequelize[_0xd8b2('0x11')](0x4)[_0xd8b2('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xd8b2('0x24')},'dialPowerLevel':{'type':Sequelize['FLOAT'](0x2)[_0xd8b2('0x22')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x25'),_0xd8b2('0x26')),'defaultValue':'dropRate','comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xd8b2('0x27')},'dialPredictiveInterval':{'type':Sequelize[_0xd8b2('0x11')](0x3)[_0xd8b2('0x22')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':'Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)'},'dialOriginateCallerIdName':{'type':Sequelize[_0xd8b2('0x0')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xd8b2('0x0')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xd8b2('0x22')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0xd8b2('0x28'),'comment':_0xd8b2('0x29')},'dialQueueTimeout':{'type':Sequelize[_0xd8b2('0x11')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0xd8b2('0x0')],'comment':_0xd8b2('0x2a')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd8b2('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8b2('0x2b')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8b2('0x2c')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd8b2('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8b2('0x2d')},'dialBusyRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8b2('0x2e')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd8b2('0x22')],'defaultValue':0x3,'comment':_0xd8b2('0x2f')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8b2('0x30')},'dialGlobalMaxRetry':{'type':Sequelize[_0xd8b2('0x11')](0x3)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xd8b2('0x31')},'dialTimezone':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0xd8b2('0x0')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xd8b2('0x32'),_0xd8b2('0x33'),_0xd8b2('0x34')),'defaultValue':_0xd8b2('0x32')},'dialAMDActive':{'type':Sequelize[_0xd8b2('0x1c')],'defaultValue':0x0,'comment':_0xd8b2('0x35')},'dialAMDInitialSilence':{'type':Sequelize[_0xd8b2('0x11')](0x9)[_0xd8b2('0x22')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xd8b2('0x36')},'dialAMDGreeting':{'type':Sequelize[_0xd8b2('0x11')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xd8b2('0x11')](0x9)[_0xd8b2('0x22')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xd8b2('0x11')](0x9)[_0xd8b2('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xd8b2('0x37')},'dialAMDMinWordLength':{'type':Sequelize[_0xd8b2('0x11')](0x9)[_0xd8b2('0x22')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xd8b2('0x38')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xd8b2('0x11')](0x9)[_0xd8b2('0x22')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xd8b2('0x39')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xd8b2('0x3a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xd8b2('0x3b')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xd8b2('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xd8b2('0x3c')},'dialRecallMeTimeout':{'type':Sequelize[_0xd8b2('0x11')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xd8b2('0x3d')},'dialRecallInQueue':{'type':Sequelize[_0xd8b2('0x1c')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0xd8b2('0x1')](_0xd8b2('0x3e'),_0xd8b2('0x3f')),'defaultValue':_0xd8b2('0x3e')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialAgiAfterHangupClient':{'type':Sequelize[_0xd8b2('0x1c')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xd8b2('0x1c')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xd8b2('0x11')](0x3)[_0xd8b2('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xd8b2('0x11')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xd8b2('0x40')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xd8b2('0x11')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8b2('0x41')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0xd8b2('0x11')](0x3)[_0xd8b2('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8b2('0x42')},'dialDropRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0xd8b2('0x11')](0x3)[_0xd8b2('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xd8b2('0x11')](0x3)[_0xd8b2('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8b2('0x43')},'dialMachineRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8b2('0x44')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xd8b2('0x11')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd8b2('0x45')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xd8b2('0x11')](0x5)[_0xd8b2('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd8b2('0x46')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd8b2('0x11')],'allowNull':!![],'comment':_0xd8b2('0x47')},'mandatoryDisposition':{'type':Sequelize[_0xd8b2('0x1c')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x18c769){if(!_0x18c769)this[_0xd8b2('0x14')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0xd8b2('0x48'),_0x18c769);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xd8b2('0x11')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xd8b2('0x22')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0x04f1=['rrmemory','wrandom','rrordered','ringall','getDataValue','type','dialMethod','strategy','booked','roundrobin','progressive','predictive','power','INTEGER','ENUM','yes','all','once','TEXT','setDataValue','periodic_announce','join','split','joinempty','leavewhenempty','wrapuptime','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','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,*,*,*','always','never','onlyIfOpen','BOOLEAN','Active/Disactive\x20AMD','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','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)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','sequelize','exports','STRING','inbound','outbound','leastrecent','fewestcalls','random'];(function(_0xa4f636,_0xaca1b6){var _0x37e02a=function(_0x49bd47){while(--_0x49bd47){_0xa4f636['push'](_0xa4f636['shift']());}};_0x37e02a(++_0xaca1b6);}(_0x04f1,0x92));var _0x104f=function(_0x198350,_0x1d4d4b){_0x198350=_0x198350-0x0;var _0x37ea05=_0x04f1[_0x198350];return _0x37ea05;};'use strict';var Sequelize=require(_0x104f('0x0'));module[_0x104f('0x1')]={'name':{'type':Sequelize[_0x104f('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x104f('0x3'),_0x104f('0x4')),'allowNull':![],'defaultValue':_0x104f('0x3')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':'default'},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr','ringall',_0x104f('0x5'),_0x104f('0x6'),_0x104f('0x7'),_0x104f('0x8'),'linear',_0x104f('0x9'),_0x104f('0xa')),'allowNull':![],'defaultValue':_0x104f('0xb'),'set':function(_0x37891c){this['setDataValue']('strategy',_0x37891c?_0x37891c:_0x104f('0x8'));},'get':function(){var _0x2635d6=this[_0x104f('0xc')](_0x104f('0xd'));var _0x4406c9=this[_0x104f('0xc')](_0x104f('0xe'));var _0x175506=this[_0x104f('0xc')](_0x104f('0xf'));if(_0x2635d6==='inbound'){return _0x175506;}if(_0x4406c9===_0x104f('0x10')&&_0x175506===_0x104f('0x8')||_0x4406c9===_0x104f('0x10')&&_0x175506===_0x104f('0x11')){return _0x175506;}if(_0x4406c9===_0x104f('0x12')||_0x4406c9===_0x104f('0x13')||_0x4406c9===_0x104f('0x14')){return _0x175506;}return null;}},'servicelevel':{'type':Sequelize[_0x104f('0x15')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x104f('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x104f('0x15')](0xb)},'timeout':{'type':Sequelize[_0x104f('0x15')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x104f('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x104f('0x2')]},'weight':{'type':Sequelize[_0x104f('0x15')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x104f('0x16')](_0x104f('0x17'),'no'),'defaultValue':_0x104f('0x17')},'autopause':{'type':Sequelize[_0x104f('0x16')]('yes','no',_0x104f('0x18')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x104f('0x15')](0xb)},'autopausebusy':{'type':Sequelize['ENUM'](_0x104f('0x17'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x104f('0x16')]('yes','no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x104f('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x104f('0x16')](_0x104f('0x17'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x104f('0x16')](_0x104f('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x104f('0x16')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x104f('0x16')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x104f('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x104f('0x15')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x104f('0x15')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0x104f('0x17'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0x104f('0x17'),'no'),'defaultValue':_0x104f('0x17')},'announce_holdtime':{'type':Sequelize[_0x104f('0x16')]('yes','no',_0x104f('0x19')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x104f('0x16')](_0x104f('0x17'),'no')},'announce_position_limit':{'type':Sequelize[_0x104f('0x15')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x104f('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x104f('0x2')]},'queue_youarenext':{'type':Sequelize[_0x104f('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x104f('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize['STRING'],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x104f('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x104f('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x104f('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x104f('0x2')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0x104f('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x104f('0x2')]},'queue_less_than':{'type':Sequelize[_0x104f('0x2')]},'periodic_announce':{'type':Sequelize[_0x104f('0x1a')],'set':function(_0x3b0d26){this[_0x104f('0x1b')](_0x104f('0x1c'),_0x3b0d26?_0x3b0d26[_0x104f('0x1d')](','):[]);},'get':function(){return this[_0x104f('0xc')](_0x104f('0x1c'))?this['getDataValue']('periodic_announce')[_0x104f('0x1e')](','):[];}},'joinempty':{'type':Sequelize[_0x104f('0x2')],'defaultValue':_0x104f('0x17'),'set':function(_0x245853){this[_0x104f('0x1b')](_0x104f('0x1f'),_0x245853?_0x245853['join'](','):undefined);},'get':function(){return this['getDataValue'](_0x104f('0x1f'))?this[_0x104f('0xc')](_0x104f('0x1f'))[_0x104f('0x1e')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x104f('0x2')],'defaultValue':'no','set':function(_0x1e3c73){this['setDataValue']('leavewhenempty',_0x1e3c73?_0x1e3c73['join'](','):undefined);},'get':function(){return this[_0x104f('0xc')](_0x104f('0x20'))?this['getDataValue'](_0x104f('0x20'))['split'](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0x104f('0x17'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x104f('0x16')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x104f('0x2')]},'description':{'type':Sequelize[_0x104f('0x2')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x5e8c73){this[_0x104f('0x1b')]('acw',_0x5e8c73);if(_0x5e8c73){if(this[_0x104f('0xc')](_0x104f('0x21'))<0x2){this['setDataValue'](_0x104f('0x21'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x104f('0x16')](_0x104f('0x22'),'progressive','power',_0x104f('0x13'),_0x104f('0x10')),'defaultValue':_0x104f('0x12'),'comment':_0x104f('0x23')},'dialLimitChannel':{'type':Sequelize[_0x104f('0x15')](0x4)[_0x104f('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0x104f('0x15')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x104f('0x25')},'dialPowerLevel':{'type':Sequelize['FLOAT'](0x2)[_0x104f('0x24')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0x104f('0x26'),_0x104f('0x27')),'defaultValue':_0x104f('0x27'),'comment':_0x104f('0x28')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0x104f('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x104f('0x29')},'dialPredictiveInterval':{'type':Sequelize[_0x104f('0x15')](0x3)[_0x104f('0x24')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x104f('0x2a')},'dialOriginateCallerIdName':{'type':Sequelize[_0x104f('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x104f('0x24')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x104f('0x2b')},'dialQueueOptions':{'type':Sequelize[_0x104f('0x2')],'defaultValue':_0x104f('0x2c'),'comment':_0x104f('0x2d')},'dialQueueTimeout':{'type':Sequelize[_0x104f('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x104f('0x2e')},'dialQueueProject':{'type':Sequelize['STRING'],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x104f('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x104f('0x15')](0x5)[_0x104f('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x104f('0x2f')},'dialBusyMaxRetry':{'type':Sequelize[_0x104f('0x15')](0x3)[_0x104f('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x104f('0x30')},'dialBusyRetryFrequency':{'type':Sequelize[_0x104f('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x104f('0x31')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x104f('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x104f('0x32')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x104f('0x15')](0x5)[_0x104f('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0x104f('0x15')](0x3)[_0x104f('0x24')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x104f('0x33')},'dialTimezone':{'type':Sequelize[_0x104f('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x104f('0x34')},'dialPrefix':{'type':Sequelize[_0x104f('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x104f('0x16')](_0x104f('0x35'),_0x104f('0x36'),_0x104f('0x37')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x104f('0x38')],'defaultValue':0x0,'comment':_0x104f('0x39')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x104f('0x24')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x104f('0x15')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x104f('0x15')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0x104f('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x104f('0x3a')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x104f('0x24')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x104f('0x3b')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x104f('0x15')](0x9)[_0x104f('0x24')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x104f('0x15')](0x9)[_0x104f('0x24')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x104f('0x3c')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x104f('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x104f('0x15')](0x9)[_0x104f('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x104f('0x3d')},'dialRecallMeTimeout':{'type':Sequelize['INTEGER'](0x5)[_0x104f('0x24')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x104f('0x3e')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x104f('0x3f')},'dialOrderByScheduledAt':{'type':Sequelize[_0x104f('0x16')](_0x104f('0x40'),_0x104f('0x41')),'defaultValue':_0x104f('0x40')},'dialQueueProject2':{'type':Sequelize[_0x104f('0x2')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x104f('0x15')](0x3)[_0x104f('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x104f('0x42')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x104f('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x104f('0x43')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x104f('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x104f('0x44')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x104f('0x15')](0x5)[_0x104f('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x104f('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x104f('0x45')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x104f('0x46')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x104f('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x104f('0x47')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x104f('0x15')](0x5)[_0x104f('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x104f('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x104f('0x15')](0x5)[_0x104f('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x104f('0x48')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x104f('0x15')](0x3)[_0x104f('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x104f('0x49')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x104f('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize[_0x104f('0x15')],'allowNull':!![],'comment':_0x104f('0x4a')},'mandatoryDisposition':{'type':Sequelize[_0x104f('0x38')],'defaultValue':![],'comment':_0x104f('0x4b'),'set':function(_0x28c623){if(!_0x28c623)this[_0x104f('0x1b')]('mandatoryDispositionPauseId',null);this[_0x104f('0x1b')](_0x104f('0x4c'),_0x28c623);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x104f('0x15')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x104f('0x15')](0x3)[_0x104f('0x24')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index 43cc055..87a6949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x299d=['VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','removeAgents','userVoiceQueue:remove','addAgents','spread','isEmpty','format','isArray','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','NOW()','CmListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','into','phone\x20IS\x20NOT\x20NULL','removeLists','getBlackLists','addBlackLists','removeBlackLists','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','get','inbound','QueueCampaigns','filter','map','value','includes','type','find','name','UserProfileResource','error','stack','send','index','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','where','pick','merge','options','VoiceQueue','includeAll','include','findAll','rows','catch','show','params','length','create','user','role','VoiceQueues','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','outbound','UserProfileSection','findOne','CmHopper','order','sort','VoiceQueueId','CmHopperHistory','nolimit','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','addTeams','teams','Team','User','online','voicePause','interface','flatMap','Agents','forEach','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','SIP/%s','emit','userVoiceQueue:save','removeTeams','ids','select','field','tq.TeamId','from','join','user_has_teams'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x299d,0x1a6));var _0xd299=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x299d[_0x47a7d0];return _0xb9bd08;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd299('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd299('0x1'));var rp=require(_0xd299('0x2'));var moment=require('moment');var BPromise=require(_0xd299('0x3'));var Mustache=require(_0xd299('0x4'));var util=require(_0xd299('0x5'));var path=require(_0xd299('0x6'));var sox=require(_0xd299('0x7'));var csv=require('to-csv');var ejs=require(_0xd299('0x8'));var fs=require('fs');var fs_extra=require(_0xd299('0x9'));var _=require(_0xd299('0xa'));var squel=require('squel');var crypto=require(_0xd299('0xb'));var jsforce=require(_0xd299('0xc'));var deskjs=require(_0xd299('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd299('0xe'));var Papa=require(_0xd299('0xf'));var Redis=require(_0xd299('0x10'));var authService=require(_0xd299('0x11'));var qs=require(_0xd299('0x12'));var as=require(_0xd299('0x13'));var hardwareService=require(_0xd299('0x14'));var logger=require(_0xd299('0x15'))(_0xd299('0x16'));var utils=require(_0xd299('0x17'));var config=require(_0xd299('0x18'));var licenseUtil=require(_0xd299('0x19'));var db=require(_0xd299('0x1a'))['db'];config['redis']=_[_0xd299('0x1b')](config[_0xd299('0x1c')],{'host':_0xd299('0x1d'),'port':0x18eb});var socket=require(_0xd299('0x1e'))(new Redis(config[_0xd299('0x1c')]));require('./voiceQueue.socket')[_0xd299('0x1f')](socket);function respondWithStatusCode(_0xa17b6c,_0x1b2cae){_0x1b2cae=_0x1b2cae||0xcc;return function(_0x44c342){if(_0x44c342){return _0xa17b6c[_0xd299('0x20')](_0x1b2cae);}return _0xa17b6c[_0xd299('0x21')](_0x1b2cae)[_0xd299('0x22')]();};}function respondWithResult(_0x362dfd,_0x3d43cc){_0x3d43cc=_0x3d43cc||0xc8;return function(_0x4cee7c){if(_0x4cee7c){return _0x362dfd[_0xd299('0x21')](_0x3d43cc)['json'](_0x4cee7c);}};}function respondWithFilteredResult(_0xef63da,_0x25df6e){return function(_0x2d36b6){if(_0x2d36b6){var _0x327b4a=typeof _0x25df6e[_0xd299('0x23')]===_0xd299('0x24')&&typeof _0x25df6e[_0xd299('0x25')]==='undefined';var _0x59d2af=_0x2d36b6[_0xd299('0x26')];var _0x53d31d=_0x327b4a?0x0:_0x25df6e[_0xd299('0x23')];var _0x32a9c0=_0x327b4a?_0x2d36b6[_0xd299('0x26')]:_0x25df6e[_0xd299('0x23')]+_0x25df6e['limit'];var _0x3aebb2;if(_0x32a9c0>=_0x59d2af){_0x32a9c0=_0x59d2af;_0x3aebb2=0xc8;}else{_0x3aebb2=0xce;}_0xef63da[_0xd299('0x21')](_0x3aebb2);return _0xef63da[_0xd299('0x27')](_0xd299('0x28'),_0x53d31d+'-'+_0x32a9c0+'/'+_0x59d2af)[_0xd299('0x29')](_0x2d36b6);}return null;};}function patchUpdates(_0x5ed21a){return function(_0x453b4c){try{jsonpatch[_0xd299('0x2a')](_0x453b4c,_0x5ed21a,!![]);}catch(_0x51839d){return BPromise['reject'](_0x51839d);}return _0x453b4c[_0xd299('0x2b')]();};}function saveUpdates(_0x414d6,_0x273d40){return function(_0x43b2f9){if(_0x43b2f9){return _0x43b2f9[_0xd299('0x2c')](_0x414d6)[_0xd299('0x2d')](function(_0x149019){return _0x149019;});}return null;};}function removeEntity(_0x3f6d94,_0x5ef913){return function(_0x216062){if(_0x216062){return _0x216062[_0xd299('0x2e')]()[_0xd299('0x2d')](function(){var _0x2b0d2c=_0x216062[_0xd299('0x2f')]({'plain':!![]});var _0x115e09=[{'name':'VoiceQueues','value':_0xd299('0x30'),'ignore':![]},{'name':_0xd299('0x31'),'value':'outbound','ignore':![]}];var _0x24cad9=_(_0x115e09)[_0xd299('0x32')]('ignore')[_0xd299('0x33')](_0xd299('0x34'))[_0xd299('0x34')]();if(_[_0xd299('0x35')](_0x24cad9,_0x2b0d2c[_0xd299('0x36')])){return;}var _0x2f28b7=_[_0xd299('0x37')](_0x115e09,[_0xd299('0x34'),_0x2b0d2c[_0xd299('0x36')]])[_0xd299('0x38')];return db[_0xd299('0x39')]['destroy']({'where':{'type':_0x2f28b7,'resourceId':_0x2b0d2c['id']}})[_0xd299('0x2d')](function(){return _0x216062;});})[_0xd299('0x2d')](function(){_0x3f6d94[_0xd299('0x21')](0xcc)[_0xd299('0x22')]();});}};}function handleEntityNotFound(_0x157bfa,_0x49a6a1){return function(_0x17f9a8){if(!_0x17f9a8){_0x157bfa[_0xd299('0x20')](0x194);}return _0x17f9a8;};}function handleError(_0x1acc23,_0x230f9d){_0x230f9d=_0x230f9d||0x1f4;return function(_0x3e12e9){logger[_0xd299('0x3a')](_0x3e12e9[_0xd299('0x3b')]);if(_0x3e12e9[_0xd299('0x38')]){delete _0x3e12e9[_0xd299('0x38')];}_0x1acc23['status'](_0x230f9d)[_0xd299('0x3c')](_0x3e12e9);};}exports[_0xd299('0x3d')]=function(_0x2c6746,_0x3711e1){var _0x1f959b={},_0x5b38d7={},_0x7f8400={'count':0x0,'rows':[]};var _0x1252bb=_[_0xd299('0x33')](db['VoiceQueue'][_0xd299('0x3e')],function(_0x10452f){return{'name':_0x10452f['fieldName'],'type':_0x10452f[_0xd299('0x36')][_0xd299('0x3f')]};});_0x5b38d7[_0xd299('0x40')]=_[_0xd299('0x33')](_0x1252bb,_0xd299('0x38'));_0x5b38d7[_0xd299('0x41')]=_[_0xd299('0x42')](_0x2c6746['query']);_0x5b38d7[_0xd299('0x43')]=_['intersection'](_0x5b38d7[_0xd299('0x40')],_0x5b38d7[_0xd299('0x41')]);_0x1f959b['attributes']=_[_0xd299('0x44')](_0x5b38d7[_0xd299('0x40')],qs[_0xd299('0x45')](_0x2c6746[_0xd299('0x41')]['fields']));_0x1f959b[_0xd299('0x46')]=_0x1f959b[_0xd299('0x46')]['length']?_0x1f959b[_0xd299('0x46')]:_0x5b38d7['model'];if(!_0x2c6746[_0xd299('0x41')][_0xd299('0x47')]('nolimit')){_0x1f959b[_0xd299('0x25')]=qs['limit'](_0x2c6746[_0xd299('0x41')][_0xd299('0x25')]);_0x1f959b['offset']=qs[_0xd299('0x23')](_0x2c6746[_0xd299('0x41')][_0xd299('0x23')]);}_0x1f959b['order']=qs['sort'](_0x2c6746['query']['sort']);_0x1f959b[_0xd299('0x48')]=qs['filters'](_[_0xd299('0x49')](_0x2c6746[_0xd299('0x41')],_0x5b38d7['filters']),_0x1252bb);if(_0x2c6746[_0xd299('0x41')][_0xd299('0x32')]){_0x1f959b[_0xd299('0x48')]=_[_0xd299('0x4a')](_0x1f959b[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0x1252bb,function(_0x43b372){if(_0x43b372[_0xd299('0x36')]!=='VIRTUAL'){var _0x755fbc={};_0x755fbc[_0x43b372[_0xd299('0x38')]]={'$like':'%'+_0x2c6746['query'][_0xd299('0x32')]+'%'};return _0x755fbc;}})});}_0x1f959b=_[_0xd299('0x4a')]({},_0x1f959b,_0x2c6746[_0xd299('0x4b')]);var _0x27aebd={'where':_0x1f959b['where']};return db[_0xd299('0x4c')][_0xd299('0x26')](_0x27aebd)[_0xd299('0x2d')](function(_0x246a20){_0x7f8400[_0xd299('0x26')]=_0x246a20;if(_0x2c6746[_0xd299('0x41')][_0xd299('0x4d')]){_0x1f959b[_0xd299('0x4e')]=[{'all':!![]}];}return db['VoiceQueue'][_0xd299('0x4f')](_0x1f959b);})[_0xd299('0x2d')](function(_0x2c6578){_0x7f8400[_0xd299('0x50')]=_0x2c6578;return _0x7f8400;})[_0xd299('0x2d')](respondWithFilteredResult(_0x3711e1,_0x1f959b))[_0xd299('0x51')](handleError(_0x3711e1,null));};exports[_0xd299('0x52')]=function(_0x1c96c8,_0x51542){var _0x7c0635={'raw':![],'where':{'id':_0x1c96c8[_0xd299('0x53')]['id']}},_0x1a65d1={};_0x1a65d1[_0xd299('0x40')]=_['keys'](db[_0xd299('0x4c')][_0xd299('0x3e')]);_0x1a65d1['query']=_['keys'](_0x1c96c8[_0xd299('0x41')]);_0x1a65d1[_0xd299('0x43')]=_[_0xd299('0x44')](_0x1a65d1[_0xd299('0x40')],_0x1a65d1[_0xd299('0x41')]);_0x7c0635[_0xd299('0x46')]=_[_0xd299('0x44')](_0x1a65d1['model'],qs['fields'](_0x1c96c8[_0xd299('0x41')]['fields']));_0x7c0635[_0xd299('0x46')]=_0x7c0635[_0xd299('0x46')][_0xd299('0x54')]?_0x7c0635['attributes']:_0x1a65d1[_0xd299('0x40')];if(_0x1c96c8['query'][_0xd299('0x4d')]){_0x7c0635[_0xd299('0x4e')]=[{'all':!![]}];}_0x7c0635=_[_0xd299('0x4a')]({},_0x7c0635,_0x1c96c8[_0xd299('0x4b')]);return db[_0xd299('0x4c')][_0xd299('0x37')](_0x7c0635)['then'](handleEntityNotFound(_0x51542,null))['then'](respondWithResult(_0x51542,null))[_0xd299('0x51')](handleError(_0x51542,null));};exports[_0xd299('0x55')]=function(_0xe787f2,_0xce1450){return db['VoiceQueue']['create'](_0xe787f2['body'],{})['then'](function(_0x17c9c1){var _0x434233=_0xe787f2[_0xd299('0x56')][_0xd299('0x2f')]({'plain':!![]});if(!_0x434233)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x434233[_0xd299('0x57')]===_0xd299('0x56')){var _0x259cea=_0x17c9c1[_0xd299('0x2f')]({'plain':!![]});var _0x429630=[{'name':_0xd299('0x58'),'value':_0xd299('0x30')},{'name':_0xd299('0x31'),'value':'outbound'}];var _0x3f97c8=_['find'](_0x429630,['value',_0x259cea[_0xd299('0x36')]])[_0xd299('0x38')];return db['UserProfileSection'][_0xd299('0x37')]({'where':{'name':_0x3f97c8,'userProfileId':_0x434233[_0xd299('0x59')]},'raw':!![]})[_0xd299('0x2d')](function(_0x14951a){if(_0x14951a&&_0x14951a[_0xd299('0x5a')]===0x0){return db[_0xd299('0x39')]['create']({'name':_0x259cea[_0xd299('0x38')],'resourceId':_0x259cea['id'],'type':_0x14951a[_0xd299('0x38')],'sectionId':_0x14951a['id']},{})[_0xd299('0x2d')](function(){return _0x17c9c1;});}else{return _0x17c9c1;}})[_0xd299('0x51')](function(_0xc083b9){logger[_0xd299('0x3a')](_0xd299('0x5b'),_0xc083b9);throw _0xc083b9;});}return _0x17c9c1;})[_0xd299('0x2d')](respondWithResult(_0xce1450,0xc9))[_0xd299('0x51')](handleError(_0xce1450,null));};exports[_0xd299('0x5c')]=function(_0x540ded,_0x4e8e6c){var _0x42c4e0={'where':{'id':_0x540ded['params']['id']}},_0x405822={};_0x405822[_0xd299('0x40')]=_[_0xd299('0x42')](db[_0xd299('0x4c')][_0xd299('0x3e')]);_0x42c4e0[_0xd299('0x46')]=_['intersection'](_0x405822['model'],qs[_0xd299('0x45')](_0x540ded['query'][_0xd299('0x45')]));_0x42c4e0[_0xd299('0x46')]=_0x42c4e0[_0xd299('0x46')][_0xd299('0x54')]?_0x42c4e0[_0xd299('0x46')]:_0x405822[_0xd299('0x40')];if(_0x540ded[_0xd299('0x41')][_0xd299('0x4d')]){_0x42c4e0[_0xd299('0x4e')]=[{'all':!![]}];}_0x42c4e0=_['merge']({},_0x42c4e0,_0x540ded[_0xd299('0x4b')]);return db[_0xd299('0x4c')]['find'](_0x42c4e0)['then'](handleEntityNotFound(_0x4e8e6c,null))['then'](function(_0x37fbef){if(_0x37fbef){var _0x270398=_0x37fbef[_0xd299('0x2f')]({'plain':!![]});_0x270398=qs[_0xd299('0x5d')](_0x270398,['id',_0xd299('0x5e'),_0xd299('0x5f')]);_0x540ded['body']=_['omit'](_0x540ded['body'],['id',_0xd299('0x5e'),_0xd299('0x5f')]);return db[_0xd299('0x4c')][_0xd299('0x55')](_[_0xd299('0x4a')](_0x270398,_0x540ded[_0xd299('0x60')]),{'include':_0x540ded[_0xd299('0x41')][_0xd299('0x4d')]?[{'all':!![]}]:undefined})[_0xd299('0x2d')](function(_0x233c71){var _0x5112d9=_0x540ded[_0xd299('0x56')][_0xd299('0x2f')]({'plain':!![]});if(!_0x5112d9)throw new Error(_0xd299('0x61'));if(_0x5112d9[_0xd299('0x57')]==='user'){var _0x564368=_0x233c71[_0xd299('0x2f')]({'plain':!![]});var _0x30a322=[{'name':'VoiceQueues','value':_0xd299('0x30')},{'name':_0xd299('0x31'),'value':_0xd299('0x62')}];var _0x1b4baf=_['find'](_0x30a322,['value',_0x564368[_0xd299('0x36')]])[_0xd299('0x38')];return db[_0xd299('0x63')][_0xd299('0x37')]({'where':{'name':_0x1b4baf,'userProfileId':_0x5112d9['userProfileId']},'raw':!![]})[_0xd299('0x2d')](function(_0x135d32){if(_0x135d32&&_0x135d32[_0xd299('0x5a')]===0x0){return db[_0xd299('0x39')]['create']({'name':_0x564368[_0xd299('0x38')],'resourceId':_0x564368['id'],'type':_0x135d32[_0xd299('0x38')],'sectionId':_0x135d32['id']},{})[_0xd299('0x2d')](function(){return _0x233c71;});}else{return _0x233c71;}})[_0xd299('0x51')](function(_0x5d46eb){logger[_0xd299('0x3a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d46eb);throw _0x5d46eb;});}return _0x233c71;});}})[_0xd299('0x2d')](respondWithResult(_0x4e8e6c,0xc9))[_0xd299('0x51')](handleError(_0x4e8e6c,null));};exports[_0xd299('0x2c')]=function(_0x3d616e,_0x29a8fd){if(_0x3d616e[_0xd299('0x60')]['id']){delete _0x3d616e['body']['id'];}return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x3d616e['params']['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x29a8fd,null))['then'](saveUpdates(_0x3d616e[_0xd299('0x60')],null))[_0xd299('0x2d')](respondWithResult(_0x29a8fd,null))[_0xd299('0x51')](handleError(_0x29a8fd,null));};exports[_0xd299('0x2e')]=function(_0x29fa0f,_0x2b37be){return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x29fa0f[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x2b37be,null))[_0xd299('0x2d')](removeEntity(_0x2b37be,null))[_0xd299('0x51')](handleError(_0x2b37be,null));};exports['getHoppers']=function(_0x313ba3,_0x2dcc07,_0x53ec3a){var _0x3cc71f={'raw':![],'where':{}};var _0x30d1ab={};var _0x56a255={'count':0x0,'rows':[]};return db[_0xd299('0x4c')][_0xd299('0x64')]({'where':{'id':_0x313ba3['params']['id']}})['then'](handleEntityNotFound(_0x2dcc07,null))[_0xd299('0x2d')](function(_0x2de4ce){if(_0x2de4ce){_0x30d1ab[_0xd299('0x40')]=_['keys'](db[_0xd299('0x65')][_0xd299('0x3e')]);_0x30d1ab[_0xd299('0x41')]=_['keys'](_0x313ba3[_0xd299('0x41')]);_0x30d1ab['filters']=_[_0xd299('0x44')](_0x30d1ab[_0xd299('0x40')],_0x30d1ab[_0xd299('0x41')]);_0x3cc71f[_0xd299('0x46')]=_[_0xd299('0x44')](_0x30d1ab[_0xd299('0x40')],qs[_0xd299('0x45')](_0x313ba3[_0xd299('0x41')][_0xd299('0x45')]));_0x3cc71f[_0xd299('0x46')]=_0x3cc71f[_0xd299('0x46')][_0xd299('0x54')]?_0x3cc71f[_0xd299('0x46')]:_0x30d1ab[_0xd299('0x40')];if(!_0x313ba3['query'][_0xd299('0x47')]('nolimit')){_0x3cc71f['limit']=qs[_0xd299('0x25')](_0x313ba3[_0xd299('0x41')][_0xd299('0x25')]);_0x3cc71f[_0xd299('0x23')]=qs['offset'](_0x313ba3[_0xd299('0x41')][_0xd299('0x23')]);}_0x3cc71f[_0xd299('0x66')]=qs['sort'](_0x313ba3[_0xd299('0x41')][_0xd299('0x67')]);_0x3cc71f[_0xd299('0x48')]=qs[_0xd299('0x43')](_[_0xd299('0x49')](_0x313ba3[_0xd299('0x41')],_0x30d1ab['filters']));_0x3cc71f['where'][_0xd299('0x68')]=_0x2de4ce['id'];if(_0x313ba3[_0xd299('0x41')][_0xd299('0x32')]){_0x3cc71f[_0xd299('0x48')]=_['merge'](_0x3cc71f[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0x3cc71f[_0xd299('0x46')],function(_0x107767){var _0x2927f7={};_0x2927f7[_0x107767]={'$like':'%'+_0x313ba3[_0xd299('0x41')][_0xd299('0x32')]+'%'};return _0x2927f7;})});}_0x3cc71f=_[_0xd299('0x4a')]({},_0x3cc71f,_0x313ba3[_0xd299('0x4b')]);return db[_0xd299('0x65')]['count']({'where':_0x3cc71f[_0xd299('0x48')]})[_0xd299('0x2d')](function(_0x234a45){_0x56a255['count']=_0x234a45;if(_0x313ba3[_0xd299('0x41')][_0xd299('0x4d')]){_0x3cc71f[_0xd299('0x4e')]=[{'all':!![]}];}return db['CmHopper'][_0xd299('0x4f')](_0x3cc71f);})[_0xd299('0x2d')](function(_0x42ac8b){_0x56a255[_0xd299('0x50')]=_0x42ac8b;return _0x56a255;});}})['then'](respondWithFilteredResult(_0x2dcc07,_0x3cc71f))['catch'](handleError(_0x2dcc07,null));};exports['getHopperHistories']=function(_0x23057d,_0x3e1d22,_0x201851){var _0xb51cb2={'raw':!![],'where':{}};var _0x116a02={};var _0x26ec95={'count':0x0,'rows':[]};return db[_0xd299('0x4c')]['findOne']({'where':{'id':_0x23057d['params']['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x3e1d22,null))['then'](function(_0x4183cb){if(_0x4183cb){_0x116a02[_0xd299('0x40')]=_[_0xd299('0x42')](db[_0xd299('0x69')][_0xd299('0x3e')]);_0x116a02[_0xd299('0x41')]=_[_0xd299('0x42')](_0x23057d['query']);_0x116a02[_0xd299('0x43')]=_[_0xd299('0x44')](_0x116a02['model'],_0x116a02[_0xd299('0x41')]);_0xb51cb2['attributes']=_[_0xd299('0x44')](_0x116a02[_0xd299('0x40')],qs[_0xd299('0x45')](_0x23057d[_0xd299('0x41')][_0xd299('0x45')]));_0xb51cb2[_0xd299('0x46')]=_0xb51cb2[_0xd299('0x46')][_0xd299('0x54')]?_0xb51cb2[_0xd299('0x46')]:_0x116a02[_0xd299('0x40')];if(!_0x23057d[_0xd299('0x41')][_0xd299('0x47')](_0xd299('0x6a'))){_0xb51cb2[_0xd299('0x25')]=qs[_0xd299('0x25')](_0x23057d[_0xd299('0x41')][_0xd299('0x25')]);_0xb51cb2['offset']=qs[_0xd299('0x23')](_0x23057d['query'][_0xd299('0x23')]);}_0xb51cb2['order']=qs['sort'](_0x23057d[_0xd299('0x41')][_0xd299('0x67')]);_0xb51cb2[_0xd299('0x48')]=qs[_0xd299('0x43')](_[_0xd299('0x49')](_0x23057d[_0xd299('0x41')],_0x116a02[_0xd299('0x43')]));_0xb51cb2[_0xd299('0x48')][_0xd299('0x68')]=_0x4183cb['id'];if(_0x23057d[_0xd299('0x41')][_0xd299('0x32')]){_0xb51cb2['where']=_['merge'](_0xb51cb2[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0xb51cb2[_0xd299('0x46')],function(_0xddfed5){var _0x4db8ac={};_0x4db8ac[_0xddfed5]={'$like':'%'+_0x23057d[_0xd299('0x41')][_0xd299('0x32')]+'%'};return _0x4db8ac;})});}_0xb51cb2=_['merge']({},_0xb51cb2,_0x23057d[_0xd299('0x4b')]);return db['CmHopperHistory'][_0xd299('0x26')]({'where':_0xb51cb2['where']})[_0xd299('0x2d')](function(_0x1b34cc){_0x26ec95[_0xd299('0x26')]=_0x1b34cc;if(_0x23057d['query'][_0xd299('0x4d')]){_0xb51cb2['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0xd299('0x4f')](_0xb51cb2);})[_0xd299('0x2d')](function(_0x580fce){_0x26ec95[_0xd299('0x50')]=_0x580fce;return _0x26ec95;});}})['then'](respondWithFilteredResult(_0x3e1d22,_0xb51cb2))[_0xd299('0x51')](handleError(_0x3e1d22,null));};exports['getHopperFinals']=function(_0x31d128,_0x49a6ab,_0x5aed56){var _0x2f1087={'raw':!![],'where':{}};var _0x1b9c9d={};var _0x3fc99e={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xd299('0x64')]({'where':{'id':_0x31d128['params']['id']}})['then'](handleEntityNotFound(_0x49a6ab,null))['then'](function(_0xfd5640){if(_0xfd5640){_0x1b9c9d['model']=_['keys'](db[_0xd299('0x6b')][_0xd299('0x3e')]);_0x1b9c9d[_0xd299('0x41')]=_[_0xd299('0x42')](_0x31d128['query']);_0x1b9c9d['filters']=_[_0xd299('0x44')](_0x1b9c9d[_0xd299('0x40')],_0x1b9c9d['query']);_0x2f1087[_0xd299('0x46')]=_[_0xd299('0x44')](_0x1b9c9d[_0xd299('0x40')],qs[_0xd299('0x45')](_0x31d128['query'][_0xd299('0x45')]));_0x2f1087['attributes']=_0x2f1087[_0xd299('0x46')]['length']?_0x2f1087['attributes']:_0x1b9c9d[_0xd299('0x40')];if(!_0x31d128[_0xd299('0x41')]['hasOwnProperty'](_0xd299('0x6a'))){_0x2f1087['limit']=qs['limit'](_0x31d128[_0xd299('0x41')][_0xd299('0x25')]);_0x2f1087['offset']=qs[_0xd299('0x23')](_0x31d128['query']['offset']);}_0x2f1087[_0xd299('0x66')]=qs[_0xd299('0x67')](_0x31d128['query'][_0xd299('0x67')]);_0x2f1087[_0xd299('0x48')]=qs['filters'](_[_0xd299('0x49')](_0x31d128['query'],_0x1b9c9d[_0xd299('0x43')]));_0x2f1087['where'][_0xd299('0x68')]=_0xfd5640['id'];if(_0x31d128['query']['filter']){_0x2f1087[_0xd299('0x48')]=_[_0xd299('0x4a')](_0x2f1087[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0x2f1087[_0xd299('0x46')],function(_0x4130c9){var _0x57a16c={};_0x57a16c[_0x4130c9]={'$like':'%'+_0x31d128['query'][_0xd299('0x32')]+'%'};return _0x57a16c;})});}_0x2f1087=_[_0xd299('0x4a')]({},_0x2f1087,_0x31d128['options']);return db['CmHopperFinal'][_0xd299('0x26')]({'where':_0x2f1087['where']})['then'](function(_0x6041c){_0x3fc99e[_0xd299('0x26')]=_0x6041c;if(_0x31d128[_0xd299('0x41')][_0xd299('0x4d')]){_0x2f1087[_0xd299('0x4e')]=[{'all':!![]}];}return db[_0xd299('0x6b')][_0xd299('0x4f')](_0x2f1087);})[_0xd299('0x2d')](function(_0x54a089){_0x3fc99e[_0xd299('0x50')]=_0x54a089;return _0x3fc99e;});}})[_0xd299('0x2d')](respondWithFilteredResult(_0x49a6ab,_0x2f1087))[_0xd299('0x51')](handleError(_0x49a6ab,null));};exports[_0xd299('0x6c')]=function(_0x6d01dd,_0x331536,_0x14783b){var _0xdf9a98={'raw':!![],'where':{}};var _0x9a4279={};var _0x3854d4={'count':0x0,'rows':[]};return db[_0xd299('0x4c')][_0xd299('0x64')]({'where':{'id':_0x6d01dd[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x331536,null))[_0xd299('0x2d')](function(_0x4f48d3){if(_0x4f48d3){_0x9a4279[_0xd299('0x40')]=_[_0xd299('0x42')](db['CmHopperBlack'][_0xd299('0x3e')]);_0x9a4279[_0xd299('0x41')]=_['keys'](_0x6d01dd['query']);_0x9a4279[_0xd299('0x43')]=_[_0xd299('0x44')](_0x9a4279[_0xd299('0x40')],_0x9a4279[_0xd299('0x41')]);_0xdf9a98[_0xd299('0x46')]=_[_0xd299('0x44')](_0x9a4279[_0xd299('0x40')],qs[_0xd299('0x45')](_0x6d01dd[_0xd299('0x41')][_0xd299('0x45')]));_0xdf9a98[_0xd299('0x46')]=_0xdf9a98[_0xd299('0x46')][_0xd299('0x54')]?_0xdf9a98['attributes']:_0x9a4279['model'];if(!_0x6d01dd['query'][_0xd299('0x47')]('nolimit')){_0xdf9a98[_0xd299('0x25')]=qs['limit'](_0x6d01dd[_0xd299('0x41')][_0xd299('0x25')]);_0xdf9a98[_0xd299('0x23')]=qs['offset'](_0x6d01dd[_0xd299('0x41')][_0xd299('0x23')]);}_0xdf9a98[_0xd299('0x66')]=qs[_0xd299('0x67')](_0x6d01dd[_0xd299('0x41')][_0xd299('0x67')]);_0xdf9a98[_0xd299('0x48')]=qs[_0xd299('0x43')](_['pick'](_0x6d01dd[_0xd299('0x41')],_0x9a4279[_0xd299('0x43')]));_0xdf9a98[_0xd299('0x48')][_0xd299('0x68')]=_0x4f48d3['id'];if(_0x6d01dd[_0xd299('0x41')][_0xd299('0x32')]){_0xdf9a98['where']=_[_0xd299('0x4a')](_0xdf9a98[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0xdf9a98[_0xd299('0x46')],function(_0x37cfde){var _0x5ae871={};_0x5ae871[_0x37cfde]={'$like':'%'+_0x6d01dd[_0xd299('0x41')]['filter']+'%'};return _0x5ae871;})});}_0xdf9a98=_[_0xd299('0x4a')]({},_0xdf9a98,_0x6d01dd[_0xd299('0x4b')]);return db[_0xd299('0x6d')][_0xd299('0x26')]({'where':_0xdf9a98[_0xd299('0x48')]})[_0xd299('0x2d')](function(_0x51ea6c){_0x3854d4[_0xd299('0x26')]=_0x51ea6c;if(_0x6d01dd['query']['includeAll']){_0xdf9a98['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0xd299('0x4f')](_0xdf9a98);})[_0xd299('0x2d')](function(_0x38c555){_0x3854d4['rows']=_0x38c555;return _0x3854d4;});}})['then'](respondWithFilteredResult(_0x331536,_0xdf9a98))[_0xd299('0x51')](handleError(_0x331536,null));};exports[_0xd299('0x6e')]=function(_0x90575f,_0x160798,_0x370dfc){var _0x358646={};var _0x1ec118={};var _0x1e9cca;var _0x21bc18;return db[_0xd299('0x4c')][_0xd299('0x64')]({'where':{'id':_0x90575f[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x160798,null))[_0xd299('0x2d')](function(_0x381fa5){if(_0x381fa5){_0x1e9cca=_0x381fa5;_0x1ec118[_0xd299('0x40')]=_[_0xd299('0x42')](db['Team'][_0xd299('0x3e')]);_0x1ec118[_0xd299('0x41')]=_['keys'](_0x90575f[_0xd299('0x41')]);_0x1ec118[_0xd299('0x43')]=_[_0xd299('0x44')](_0x1ec118[_0xd299('0x40')],_0x1ec118[_0xd299('0x41')]);_0x358646[_0xd299('0x46')]=_['intersection'](_0x1ec118['model'],qs[_0xd299('0x45')](_0x90575f['query']['fields']));_0x358646['attributes']=_0x358646[_0xd299('0x46')]['length']?_0x358646[_0xd299('0x46')]:_0x1ec118[_0xd299('0x40')];_0x358646[_0xd299('0x66')]=qs[_0xd299('0x67')](_0x90575f['query'][_0xd299('0x67')]);_0x358646['where']=qs['filters'](_[_0xd299('0x49')](_0x90575f[_0xd299('0x41')],_0x1ec118['filters']));if(_0x90575f[_0xd299('0x41')]['filter']){_0x358646[_0xd299('0x48')]=_[_0xd299('0x4a')](_0x358646[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0x358646['attributes'],function(_0x25740d){var _0x5cb6cb={};_0x5cb6cb[_0x25740d]={'$like':'%'+_0x90575f[_0xd299('0x41')][_0xd299('0x32')]+'%'};return _0x5cb6cb;})});}_0x358646=_[_0xd299('0x4a')]({},_0x358646,_0x90575f[_0xd299('0x4b')]);return _0x1e9cca[_0xd299('0x6e')](_0x358646);}})[_0xd299('0x2d')](function(_0x5d4cae){if(_0x5d4cae){_0x21bc18=_0x5d4cae['length'];if(!_0x90575f[_0xd299('0x41')][_0xd299('0x47')](_0xd299('0x6a'))){_0x358646[_0xd299('0x25')]=qs['limit'](_0x90575f[_0xd299('0x41')][_0xd299('0x25')]);_0x358646[_0xd299('0x23')]=qs[_0xd299('0x23')](_0x90575f[_0xd299('0x41')][_0xd299('0x23')]);}return _0x1e9cca['getTeams'](_0x358646);}})[_0xd299('0x2d')](function(_0x25ac87){if(_0x25ac87){return _0x25ac87?{'count':_0x21bc18,'rows':_0x25ac87}:null;}})['then'](respondWithResult(_0x160798,null))[_0xd299('0x51')](handleError(_0x160798,null));};exports[_0xd299('0x6f')]=function(_0x9b3d34,_0x563ff8,_0x1e4079){var _0x14a2b6=_0x9b3d34[_0xd299('0x60')][_0xd299('0x70')];var _0x5ca2ba=_[_0xd299('0x33')](_0x14a2b6,'id');return db[_0xd299('0x71')][_0xd299('0x4f')]({'where':{'id':_0x5ca2ba},'attributes':['id'],'include':[{'model':db[_0xd299('0x72')],'as':'Agents','attributes':['id',_0xd299('0x38'),_0xd299('0x73'),_0xd299('0x74'),_0xd299('0x75')],'raw':!![]}]})[_0xd299('0x2d')](function(_0x3af705){if(_0x3af705){var _0x7e799d=_[_0xd299('0x76')](_0x3af705,function(_0x2736c9){var _0x1adef0=_0x2736c9[_0xd299('0x2f')]({'plain':!![]});_0x1adef0[_0xd299('0x77')][_0xd299('0x78')](function(_0x23b2d5){_0x23b2d5[_0xd299('0x79')]=_[_0xd299('0x37')](_0x14a2b6,{'id':_0x1adef0['id']})[_0xd299('0x79')];});return _0x1adef0[_0xd299('0x77')];});return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x9b3d34['params']['id']}})['then'](function(_0x4bc220){return db[_0xd299('0x7a')][_0xd299('0x7b')](function(_0xb8b2ba){return _0x4bc220[_0xd299('0x6f')](_0x5ca2ba,{'transaction':_0xb8b2ba})['then'](function(){return BPromise[_0xd299('0x7c')](_0x14a2b6,function(_0x58a4be){return db[_0xd299('0x7d')][_0xd299('0x7e')]({'TeamId':_0x58a4be['id'],'VoiceQueueId':_0x9b3d34[_0xd299('0x53')]['id'],'penalty':_0x58a4be[_0xd299('0x79')]},{'transaction':_0xb8b2ba});});})[_0xd299('0x2d')](function(){return BPromise['each'](_0x7e799d,function(_0x51a929){return db[_0xd299('0x7f')][_0xd299('0x80')]({'where':{'UserId':_0x51a929['id'],'VoiceQueueId':_0x9b3d34[_0xd299('0x53')]['id']},'defaults':{'penalty':_0x51a929['penalty']},'transaction':_0xb8b2ba});});})['then'](function(){return BPromise[_0xd299('0x7c')](_[_0xd299('0x32')](_0x7e799d,{'online':!![]}),function(_0x40e342){return db[_0xd299('0x81')][_0xd299('0x7e')]({'membername':_0x40e342['name'],'UserId':_0x40e342['id'],'queue_name':_0x4bc220[_0xd299('0x38')],'VoiceQueueId':_0x4bc220['id'],'interface':_[_0xd299('0x82')](_0x40e342[_0xd299('0x75')])?util['format'](_0xd299('0x83'),_0x40e342[_0xd299('0x38')]):_0x40e342[_0xd299('0x75')],'paused':_0x40e342[_0xd299('0x74')]||![],'penalty':_0x40e342['penalty']},{'transaction':_0xb8b2ba});});})[_0xd299('0x2d')](function(){_0x7e799d[_0xd299('0x78')](function(_0x194fc0){socket[_0xd299('0x84')](_0xd299('0x85'),{'UserId':_0x194fc0['id'],'VoiceQueueId':_0x4bc220['id']});});});});});}})['then'](respondWithStatusCode(_0x563ff8,null))[_0xd299('0x51')](handleError(_0x563ff8,null));};exports[_0xd299('0x86')]=function(_0x58c33e,_0x38bc19,_0x205397){return db[_0xd299('0x71')][_0xd299('0x4f')]({'where':{'id':_0x58c33e[_0xd299('0x41')][_0xd299('0x87')]},'attributes':['id'],'include':[{'model':db[_0xd299('0x72')],'as':_0xd299('0x77'),'attributes':['id'],'raw':!![]}]})[_0xd299('0x2d')](handleEntityNotFound(_0x38bc19,null))[_0xd299('0x2d')](function(_0xfd52f0){var _0x38813=_['map'](_0xfd52f0,'id');var _0xbedf87=[];var _0xb63d09=[];var _0x205631=squel[_0xd299('0x88')]();_0x205631[_0xd299('0x89')](_0xd299('0x8a'))[_0xd299('0x8b')]('team_has_voice_queues','tq')[_0xd299('0x8c')](_0xd299('0x8d'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xd299('0x48')](_0xd299('0x8e'),_0x58c33e[_0xd299('0x53')]['id']);for(var _0x50ca9b=0x0;_0x50ca9b<_0xfd52f0[_0xd299('0x54')];_0x50ca9b+=0x1){let _0x58c052=_0xfd52f0[_0x50ca9b];for(var _0x436e75=0x0;_0x436e75<_0x58c052[_0xd299('0x77')][_0xd299('0x54')];_0x436e75+=0x1){let _0x18c9b4=_0x58c052['Agents'][_0x436e75];var _0x6622a=_0x205631[_0xd299('0x5c')]();_0x6622a['where'](_0xd299('0x8f'),_0x18c9b4['id']);_0xb63d09[_0xd299('0x90')](db['sequelize'][_0xd299('0x41')](_0x6622a[_0xd299('0x91')](),{'type':db[_0xd299('0x7a')][_0xd299('0x92')][_0xd299('0x93')]})['then'](function(_0xb917f1){if(_0xb917f1[_0xd299('0x54')]===0x1){return _0x18c9b4['id'];}else{var _0x440964=_[_0xd299('0x94')](_[_0xd299('0x33')](_0xb917f1,_0xd299('0x95')),function(_0x4b6c66){return _[_0xd299('0x35')](_0x38813,_0x4b6c66);});if(_0x440964){return _0x18c9b4['id'];}}}));}}return BPromise[_0xd299('0x96')](_0xb63d09)['then'](function(_0x2fd756){_0xbedf87=_(_0xbedf87)[_0xd299('0x97')](_0x2fd756)[_0xd299('0x98')]()[_0xd299('0x34')]();return db['VoiceQueue']['find']({'where':{'id':_0x58c33e['params']['id']}})[_0xd299('0x2d')](function(_0x387718){return db[_0xd299('0x7a')]['transaction'](function(_0x57217f){return _0x387718[_0xd299('0x86')](_0x58c33e[_0xd299('0x41')][_0xd299('0x87')],{'transaction':_0x57217f})[_0xd299('0x2d')](function(){if(!_['isEmpty'](_0xbedf87)){return _0x387718[_0xd299('0x99')](_0xbedf87,{'transaction':_0x57217f})['then'](function(){return db[_0xd299('0x81')][_0xd299('0x2e')]({'where':{'VoiceQueueId':_0x58c33e[_0xd299('0x53')]['id'],'UserId':_0xbedf87},'transaction':_0x57217f});});}})[_0xd299('0x2d')](function(){_0xbedf87[_0xd299('0x78')](function(_0x339dde){socket[_0xd299('0x84')](_0xd299('0x9a'),{'UserId':_0x339dde,'VoiceQueueId':_0x387718['id']});});});});});});})[_0xd299('0x2d')](respondWithStatusCode(_0x38bc19,null))['catch'](handleError(_0x38bc19,null));};exports[_0xd299('0x9b')]=function(_0x5339bc,_0x454d1d,_0x1bc77e){var _0x560643,_0x5719c3;return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x5339bc[_0xd299('0x53')]['id']}})['then'](handleEntityNotFound(_0x454d1d,null))[_0xd299('0x2d')](function(_0x508b45){if(_0x508b45){_0x5719c3=_0x508b45;return _0x508b45[_0xd299('0x9b')](_0x5339bc[_0xd299('0x60')]['ids'],_[_0xd299('0x5d')](_0x5339bc['body'],[_0xd299('0x87'),'id'])||{})[_0xd299('0x9c')](function(_0x11113e){for(var _0x5b3ede=0x0;_0x5b3ede<_0x5339bc['body']['ids'][_0xd299('0x54')];_0x5b3ede+=0x1){socket[_0xd299('0x84')](_0xd299('0x85'),{'UserId':Number(_0x5339bc[_0xd299('0x60')][_0xd299('0x87')][_0x5b3ede]),'VoiceQueueId':Number(_0x5339bc[_0xd299('0x53')]['id'])});}return _0x11113e;});}})[_0xd299('0x2d')](function(_0x2e735f){_0x560643=_0x2e735f||[];if(_0x5719c3){return db[_0xd299('0x72')][_0xd299('0x4f')]({'where':{'id':_0x5339bc['body'][_0xd299('0x87')]},'attributes':['id','name',_0xd299('0x73'),'voicePause',_0xd299('0x75')],'raw':!![]});}})[_0xd299('0x2d')](function(_0x36470f){if(!_[_0xd299('0x9d')](_0x36470f)){var _0x3ba6e0=[];for(var _0x23fde5=0x0;_0x23fde5<_0x36470f[_0xd299('0x54')];_0x23fde5++){if(_0x36470f[_0x23fde5]['online']){_0x3ba6e0[_0xd299('0x90')](db[_0xd299('0x81')][_0xd299('0x7e')]({'membername':_0x36470f[_0x23fde5][_0xd299('0x38')],'UserId':_0x36470f[_0x23fde5]['id'],'queue_name':_0x5719c3[_0xd299('0x38')],'VoiceQueueId':_0x5719c3['id'],'interface':_[_0xd299('0x82')](_0x36470f[_0x23fde5][_0xd299('0x75')])?util[_0xd299('0x9e')](_0xd299('0x83'),_0x36470f[_0x23fde5][_0xd299('0x38')]):_0x36470f[_0x23fde5][_0xd299('0x75')],'paused':_0x36470f[_0x23fde5][_0xd299('0x74')]||![],'penalty':_0x5339bc[_0xd299('0x60')][_0xd299('0x79')]||0x0}));}}return BPromise[_0xd299('0x96')](_0x3ba6e0);}})[_0xd299('0x2d')](function(){return _0x560643;})[_0xd299('0x2d')](respondWithResult(_0x454d1d,null))[_0xd299('0x51')](handleError(_0x454d1d,null));};exports[_0xd299('0x99')]=function(_0x2f7d69,_0x59f7cd,_0x1f59b0){return db['VoiceQueue'][_0xd299('0x37')]({'where':{'id':_0x2f7d69[_0xd299('0x53')]['id']}})['then'](handleEntityNotFound(_0x59f7cd,null))[_0xd299('0x2d')](function(_0x802ad){if(_0x802ad){return _0x802ad[_0xd299('0x99')](_0x2f7d69[_0xd299('0x41')]['ids'])[_0xd299('0x2d')](function(){if(_[_0xd299('0x9f')](_0x2f7d69[_0xd299('0x41')][_0xd299('0x87')])){for(var _0x3c290a=0x0;_0x3c290a<_0x2f7d69[_0xd299('0x41')][_0xd299('0x87')]['length'];_0x3c290a+=0x1){socket[_0xd299('0x84')](_0xd299('0x9a'),{'UserId':Number(_0x2f7d69[_0xd299('0x41')][_0xd299('0x87')][_0x3c290a]),'VoiceQueueId':Number(_0x2f7d69['params']['id'])});}}else{socket[_0xd299('0x84')](_0xd299('0x9a'),{'UserId':Number(_0x2f7d69['query'][_0xd299('0x87')]),'VoiceQueueId':Number(_0x2f7d69[_0xd299('0x53')]['id'])});}});}})[_0xd299('0x2d')](function(_0x2820a6){return db['UserVoiceQueueRt'][_0xd299('0x2e')]({'where':{'VoiceQueueId':_0x2f7d69['params']['id'],'UserId':_0x2f7d69['query'][_0xd299('0x87')]}})[_0xd299('0x2d')](function(){return _0x2820a6;});})[_0xd299('0x2d')](respondWithStatusCode(_0x59f7cd,null))['catch'](handleError(_0x59f7cd,null));};exports[_0xd299('0xa0')]=function(_0x5910c7,_0xf659a2,_0x39d4b6){var _0x2a33dd={};var _0x45a86a={};var _0x2a79db;var _0x138cff;return db[_0xd299('0x4c')]['findOne']({'where':{'id':_0x5910c7['params']['id']}})['then'](handleEntityNotFound(_0xf659a2,null))[_0xd299('0x2d')](function(_0x5826dd){if(_0x5826dd){_0x2a79db=_0x5826dd;_0x45a86a[_0xd299('0x40')]=_[_0xd299('0x42')](db[_0xd299('0x72')][_0xd299('0x3e')]);_0x45a86a['query']=_['keys'](_0x5910c7['query']);_0x45a86a[_0xd299('0x43')]=_['intersection'](_0x45a86a['model'],_0x45a86a[_0xd299('0x41')]);_0x2a33dd[_0xd299('0x46')]=_[_0xd299('0x44')](_0x45a86a[_0xd299('0x40')],qs['fields'](_0x5910c7['query'][_0xd299('0x45')]));_0x2a33dd[_0xd299('0x46')]=_0x2a33dd['attributes'][_0xd299('0x54')]?_0x2a33dd['attributes']:_0x45a86a[_0xd299('0x40')];_0x2a33dd[_0xd299('0x66')]=qs[_0xd299('0x67')](_0x5910c7['query'][_0xd299('0x67')]);_0x2a33dd[_0xd299('0x48')]=qs[_0xd299('0x43')](_[_0xd299('0x49')](_0x5910c7[_0xd299('0x41')],_0x45a86a[_0xd299('0x43')]));if(_0x5910c7[_0xd299('0x41')]['filter']){_0x2a33dd[_0xd299('0x48')]=_[_0xd299('0x4a')](_0x2a33dd['where'],{'$or':_[_0xd299('0x33')](_0x2a33dd['attributes'],function(_0x1c2629){var _0x24dcd9={};_0x24dcd9[_0x1c2629]={'$like':'%'+_0x5910c7[_0xd299('0x41')][_0xd299('0x32')]+'%'};return _0x24dcd9;})});}_0x2a33dd=_[_0xd299('0x4a')]({},_0x2a33dd,_0x5910c7[_0xd299('0x4b')]);return _0x2a79db[_0xd299('0xa0')](_0x2a33dd);}})[_0xd299('0x2d')](function(_0x13b8cd){if(_0x13b8cd){_0x138cff=_0x13b8cd['length'];if(!_0x5910c7['query'][_0xd299('0x47')](_0xd299('0x6a'))){_0x2a33dd[_0xd299('0x25')]=qs[_0xd299('0x25')](_0x5910c7[_0xd299('0x41')][_0xd299('0x25')]);_0x2a33dd[_0xd299('0x23')]=qs['offset'](_0x5910c7[_0xd299('0x41')][_0xd299('0x23')]);}return _0x2a79db[_0xd299('0xa0')](_0x2a33dd);}})[_0xd299('0x2d')](function(_0x3c3c6e){if(_0x3c3c6e){return _0x3c3c6e?{'count':_0x138cff,'rows':_0x3c3c6e}:null;}})[_0xd299('0x2d')](respondWithResult(_0xf659a2,null))[_0xd299('0x51')](handleError(_0xf659a2,null));};exports['getMembers']=function(_0x877415,_0x8d9411,_0x4aed1e){var _0x180254={};var _0x4ba51c={};var _0x3f4afc;var _0x1a59bf;return db[_0xd299('0x4c')][_0xd299('0x64')]({'where':{'id':_0x877415['params']['id']}})['then'](handleEntityNotFound(_0x8d9411,null))[_0xd299('0x2d')](function(_0x1745ba){if(_0x1745ba){_0x3f4afc=_0x1745ba;_0x4ba51c[_0xd299('0x40')]=_['keys'](db[_0xd299('0x81')][_0xd299('0x3e')]);_0x4ba51c[_0xd299('0x41')]=_[_0xd299('0x42')](_0x877415[_0xd299('0x41')]);_0x4ba51c['filters']=_[_0xd299('0x44')](_0x4ba51c[_0xd299('0x40')],_0x4ba51c[_0xd299('0x41')]);_0x180254[_0xd299('0x46')]=_['intersection'](_0x4ba51c[_0xd299('0x40')],qs['fields'](_0x877415[_0xd299('0x41')]['fields']));_0x180254[_0xd299('0x46')]=_0x180254[_0xd299('0x46')][_0xd299('0x54')]?_0x180254[_0xd299('0x46')]:_0x4ba51c['model'];_0x180254[_0xd299('0x66')]=qs['sort'](_0x877415[_0xd299('0x41')][_0xd299('0x67')]);_0x180254['where']=qs['filters'](_[_0xd299('0x49')](_0x877415[_0xd299('0x41')],_0x4ba51c[_0xd299('0x43')]));if(_0x877415[_0xd299('0x41')][_0xd299('0x32')]){_0x180254['where']=_[_0xd299('0x4a')](_0x180254['where'],{'$or':_[_0xd299('0x33')](_0x180254[_0xd299('0x46')],function(_0x2bf10a){var _0x2c8995={};_0x2c8995[_0x2bf10a]={'$like':'%'+_0x877415[_0xd299('0x41')][_0xd299('0x32')]+'%'};return _0x2c8995;})});}_0x180254=_[_0xd299('0x4a')]({},_0x180254,_0x877415[_0xd299('0x4b')]);return _0x3f4afc[_0xd299('0xa1')](_0x180254);}})[_0xd299('0x2d')](function(_0x1af95e){if(_0x1af95e){_0x1a59bf=_0x1af95e[_0xd299('0x54')];if(!_0x877415[_0xd299('0x41')][_0xd299('0x47')](_0xd299('0x6a'))){_0x180254['limit']=qs[_0xd299('0x25')](_0x877415[_0xd299('0x41')]['limit']);_0x180254[_0xd299('0x23')]=qs[_0xd299('0x23')](_0x877415[_0xd299('0x41')][_0xd299('0x23')]);}return _0x3f4afc[_0xd299('0xa1')](_0x180254);}})[_0xd299('0x2d')](function(_0x4fb123){return _0x4fb123?{'count':_0x1a59bf,'rows':_0x4fb123}:null;})['then'](respondWithResult(_0x8d9411,null))[_0xd299('0x51')](handleError(_0x8d9411,null));};exports[_0xd299('0xa2')]=function(_0x4fb244,_0x5951d9,_0x131265){var _0x1b6bef={};var _0x11073f={};var _0x46577e;var _0x50f313;return db['VoiceQueue'][_0xd299('0x64')]({'where':{'id':_0x4fb244[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x5951d9,null))[_0xd299('0x2d')](function(_0x44afc8){if(_0x44afc8){_0x46577e=_0x44afc8;_0x11073f[_0xd299('0x40')]=_[_0xd299('0x42')](db[_0xd299('0xa3')][_0xd299('0x3e')]);_0x11073f[_0xd299('0x41')]=_[_0xd299('0x42')](_0x4fb244[_0xd299('0x41')]);_0x11073f[_0xd299('0x43')]=_[_0xd299('0x44')](_0x11073f[_0xd299('0x40')],_0x11073f['query']);_0x1b6bef[_0xd299('0x46')]=_[_0xd299('0x44')](_0x11073f[_0xd299('0x40')],qs[_0xd299('0x45')](_0x4fb244['query'][_0xd299('0x45')]));_0x1b6bef[_0xd299('0x46')]=_0x1b6bef[_0xd299('0x46')][_0xd299('0x54')]?_0x1b6bef['attributes']:_0x11073f[_0xd299('0x40')];_0x1b6bef[_0xd299('0x66')]=qs[_0xd299('0x67')](_0x4fb244[_0xd299('0x41')][_0xd299('0x67')]);_0x1b6bef[_0xd299('0x48')]=qs[_0xd299('0x43')](_['pick'](_0x4fb244[_0xd299('0x41')],_0x11073f[_0xd299('0x43')]));if(_0x4fb244[_0xd299('0x41')][_0xd299('0x32')]){_0x1b6bef[_0xd299('0x48')]=_['merge'](_0x1b6bef[_0xd299('0x48')],{'$or':_['map'](_0x1b6bef[_0xd299('0x46')],function(_0x31bb8a){var _0x20a322={};_0x20a322[_0x31bb8a]={'$like':'%'+_0x4fb244['query']['filter']+'%'};return _0x20a322;})});}_0x1b6bef=_['merge']({},_0x1b6bef,_0x4fb244[_0xd299('0x4b')]);return _0x46577e[_0xd299('0xa2')](_0x1b6bef);}})['then'](function(_0x53f7e9){if(_0x53f7e9){_0x50f313=_0x53f7e9[_0xd299('0x54')];if(!_0x4fb244[_0xd299('0x41')][_0xd299('0x47')]('nolimit')){_0x1b6bef[_0xd299('0x25')]=qs['limit'](_0x4fb244[_0xd299('0x41')][_0xd299('0x25')]);_0x1b6bef[_0xd299('0x23')]=qs[_0xd299('0x23')](_0x4fb244[_0xd299('0x41')][_0xd299('0x23')]);}return _0x46577e[_0xd299('0xa2')](_0x1b6bef);}})[_0xd299('0x2d')](function(_0x164178){if(_0x164178){return _0x164178?{'count':_0x50f313,'rows':_0x164178}:null;}})[_0xd299('0x2d')](respondWithResult(_0x5951d9,null))[_0xd299('0x51')](handleError(_0x5951d9,null));};exports['addLists']=function(_0x27a4df,_0x3e2891,_0x4f9163){var _0x542a4d,_0x1a5e96;return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x27a4df[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x3e2891,null))[_0xd299('0x2d')](function(_0x3561b4){if(_0x3561b4){_0x1a5e96=_0x3561b4;return _0x3561b4[_0xd299('0xa4')](_0x27a4df['body'][_0xd299('0x87')],_['omit'](_0x27a4df[_0xd299('0x60')],['ids','id'])||{});}return null;})['spread'](function(_0x59a954){var _0x4e21fb;_0x542a4d=_0x59a954||[];var _0x6c5d15=[];if(_0x59a954){for(var _0x4c7072=0x0;_0x4c7072<_0x59a954[_0xd299('0x54')];_0x4c7072+=0x1){var _0x478c45=_0x59a954[_0x4c7072][_0xd299('0x2f')]({'plain':!![]});_0x1a5e96['dialCheckDuplicateType']=_0x27a4df[_0xd299('0x60')][_0xd299('0xa5')]?_0x27a4df[_0xd299('0x60')][_0xd299('0xa5')]:_0x1a5e96[_0xd299('0xa5')];switch(_0x1a5e96[_0xd299('0xa5')]){case'always':_0x4e21fb=squel[_0xd299('0xa6')]()['into'](_0xd299('0xa7'))[_0xd299('0xa8')]([_0xd299('0xa9'),_0xd299('0xaa'),_0xd299('0xab'),_0xd299('0xac'),'VoiceQueueId',_0xd299('0x5e'),'updatedAt'],squel['select']()[_0xd299('0x89')](_0xd299('0xa9'),'phone')['field'](_0xd299('0xad'),'scheduledAt')[_0xd299('0x89')]('id',_0xd299('0xab'))[_0xd299('0x89')](_0x478c45[_0xd299('0xae')][_0xd299('0x91')](),_0xd299('0xac'))[_0xd299('0x89')](_0x27a4df[_0xd299('0x53')]['id']['toString'](),_0xd299('0x68'))[_0xd299('0x89')](_0xd299('0xad'),_0xd299('0x5e'))[_0xd299('0x89')](_0xd299('0xad'),_0xd299('0x5f'))[_0xd299('0x8b')](_0xd299('0xaf'))[_0xd299('0x48')](_0xd299('0xb0'))[_0xd299('0x48')](_0xd299('0xb1'),_0x478c45[_0xd299('0xae')][_0xd299('0x91')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0xd299('0x48')](_0xd299('0xb2'),squel[_0xd299('0x88')]()[_0xd299('0x89')](_0xd299('0xb3'))[_0xd299('0x8b')](_0xd299('0xb4'))[_0xd299('0x48')]('VoiceQueueId\x20=\x20?',_0x27a4df[_0xd299('0x53')]['id'][_0xd299('0x91')]()))[_0xd299('0x48')](_0xd299('0xb2'),squel[_0xd299('0x88')]()[_0xd299('0x89')](_0xd299('0xb5'))['from'](_0xd299('0xa7'))[_0xd299('0x48')](_0xd299('0x8e'),_0x27a4df['params']['id'][_0xd299('0x91')]())))['toString']();break;case'onlyIfOpen':_0x4e21fb=squel[_0xd299('0xa6')]()[_0xd299('0xb6')](_0xd299('0xa7'))[_0xd299('0xa8')]([_0xd299('0xa9'),_0xd299('0xaa'),_0xd299('0xab'),'ListId',_0xd299('0x68'),_0xd299('0x5e'),_0xd299('0x5f')],squel[_0xd299('0x88')]()['field'](_0xd299('0xa9'),_0xd299('0xa9'))[_0xd299('0x89')]('NOW()',_0xd299('0xaa'))[_0xd299('0x89')]('id',_0xd299('0xab'))[_0xd299('0x89')](_0x478c45[_0xd299('0xae')]['toString'](),_0xd299('0xac'))[_0xd299('0x89')](_0x27a4df[_0xd299('0x53')]['id'][_0xd299('0x91')](),_0xd299('0x68'))['field'](_0xd299('0xad'),_0xd299('0x5e'))['field'](_0xd299('0xad'),'updatedAt')[_0xd299('0x8b')](_0xd299('0xaf'))[_0xd299('0x48')](_0xd299('0xb0'))['where'](_0xd299('0xb1'),_0x478c45['CmListId']['toString']())['where']('phone\x20IS\x20NOT\x20NULL')[_0xd299('0x48')]('phone\x20NOT\x20IN\x20(?)',squel[_0xd299('0x88')]()[_0xd299('0x89')](_0xd299('0xb5'))[_0xd299('0x8b')](_0xd299('0xa7'))[_0xd299('0x48')](_0xd299('0x8e'),_0x27a4df['params']['id'][_0xd299('0x91')]())))[_0xd299('0x91')]();break;default:_0x4e21fb=squel[_0xd299('0xa6')]()[_0xd299('0xb6')](_0xd299('0xa7'))['fromQuery']([_0xd299('0xa9'),_0xd299('0xaa'),'ContactId',_0xd299('0xac'),'VoiceQueueId',_0xd299('0x5e'),_0xd299('0x5f')],squel[_0xd299('0x88')]()[_0xd299('0x89')]('phone',_0xd299('0xa9'))[_0xd299('0x89')](_0xd299('0xad'),_0xd299('0xaa'))[_0xd299('0x89')]('id','ContactId')[_0xd299('0x89')](_0x478c45[_0xd299('0xae')][_0xd299('0x91')](),_0xd299('0xac'))['field'](_0x27a4df['params']['id'][_0xd299('0x91')](),'VoiceQueueId')['field'](_0xd299('0xad'),_0xd299('0x5e'))[_0xd299('0x89')]('NOW()',_0xd299('0x5f'))[_0xd299('0x8b')](_0xd299('0xaf'))[_0xd299('0x48')](_0xd299('0xb0'))['where'](_0xd299('0xb1'),_0x478c45[_0xd299('0xae')][_0xd299('0x91')]())[_0xd299('0x48')](_0xd299('0xb7')))['toString']();}_0x6c5d15[_0xd299('0x90')](db[_0xd299('0x7a')][_0xd299('0x41')](_0x4e21fb));}return BPromise['all'](_0x6c5d15);}})[_0xd299('0x2d')](function(){return _0x542a4d;})[_0xd299('0x2d')](respondWithResult(_0x3e2891,null))[_0xd299('0x51')](handleError(_0x3e2891,null));};exports['removeLists']=function(_0x1e0648,_0x37f0be,_0x13443d){return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x1e0648[_0xd299('0x53')]['id']}})['then'](handleEntityNotFound(_0x37f0be,null))[_0xd299('0x2d')](function(_0x23e236){if(_0x23e236){return _0x23e236[_0xd299('0xb8')](_0x1e0648[_0xd299('0x41')][_0xd299('0x87')]);}})[_0xd299('0x2d')](function(_0x59699c){if(_0x59699c){return db[_0xd299('0x65')][_0xd299('0x2e')]({'where':{'ListId':_0x1e0648['query'][_0xd299('0x87')],'VoiceQueueId':_0x1e0648[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](function(){return _0x59699c;});}})[_0xd299('0x2d')](respondWithStatusCode(_0x37f0be,null))[_0xd299('0x51')](handleError(_0x37f0be,null));};exports[_0xd299('0xb9')]=function(_0x13597f,_0x3f343e,_0x1ab38b){var _0x4fd665={};var _0x1153a0={};var _0x3549cf;var _0x24eed9;return db[_0xd299('0x4c')][_0xd299('0x64')]({'where':{'id':_0x13597f['params']['id']}})['then'](handleEntityNotFound(_0x3f343e,null))[_0xd299('0x2d')](function(_0x12aa05){if(_0x12aa05){_0x3549cf=_0x12aa05;_0x1153a0['model']=_[_0xd299('0x42')](db[_0xd299('0xa3')][_0xd299('0x3e')]);_0x1153a0['query']=_['keys'](_0x13597f[_0xd299('0x41')]);_0x1153a0[_0xd299('0x43')]=_[_0xd299('0x44')](_0x1153a0[_0xd299('0x40')],_0x1153a0[_0xd299('0x41')]);_0x4fd665['attributes']=_[_0xd299('0x44')](_0x1153a0[_0xd299('0x40')],qs[_0xd299('0x45')](_0x13597f[_0xd299('0x41')][_0xd299('0x45')]));_0x4fd665[_0xd299('0x46')]=_0x4fd665[_0xd299('0x46')]['length']?_0x4fd665['attributes']:_0x1153a0['model'];_0x4fd665[_0xd299('0x66')]=qs[_0xd299('0x67')](_0x13597f[_0xd299('0x41')][_0xd299('0x67')]);_0x4fd665[_0xd299('0x48')]=qs['filters'](_[_0xd299('0x49')](_0x13597f['query'],_0x1153a0[_0xd299('0x43')]));if(_0x13597f['query'][_0xd299('0x32')]){_0x4fd665[_0xd299('0x48')]=_[_0xd299('0x4a')](_0x4fd665[_0xd299('0x48')],{'$or':_[_0xd299('0x33')](_0x4fd665[_0xd299('0x46')],function(_0x2fdea0){var _0x116f4c={};_0x116f4c[_0x2fdea0]={'$like':'%'+_0x13597f['query']['filter']+'%'};return _0x116f4c;})});}_0x4fd665=_[_0xd299('0x4a')]({},_0x4fd665,_0x13597f[_0xd299('0x4b')]);return _0x3549cf[_0xd299('0xb9')](_0x4fd665);}})[_0xd299('0x2d')](function(_0x51d643){if(_0x51d643){_0x24eed9=_0x51d643[_0xd299('0x54')];if(!_0x13597f[_0xd299('0x41')]['hasOwnProperty'](_0xd299('0x6a'))){_0x4fd665['limit']=qs[_0xd299('0x25')](_0x13597f[_0xd299('0x41')][_0xd299('0x25')]);_0x4fd665['offset']=qs[_0xd299('0x23')](_0x13597f[_0xd299('0x41')][_0xd299('0x23')]);}return _0x3549cf[_0xd299('0xb9')](_0x4fd665);}})['then'](function(_0x4cb2e4){if(_0x4cb2e4){return _0x4cb2e4?{'count':_0x24eed9,'rows':_0x4cb2e4}:null;}})[_0xd299('0x2d')](respondWithResult(_0x3f343e,null))[_0xd299('0x51')](handleError(_0x3f343e,null));};exports[_0xd299('0xba')]=function(_0x4e4dee,_0x5664e9,_0x1389d4){var _0x3d95c9,_0x135c61;return db[_0xd299('0x4c')]['find']({'where':{'id':_0x4e4dee['params']['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x5664e9,null))[_0xd299('0x2d')](function(_0x3b1652){if(_0x3b1652){_0x135c61=_0x3b1652;return _0x3b1652[_0xd299('0xba')](_0x4e4dee[_0xd299('0x60')][_0xd299('0x87')],_[_0xd299('0x5d')](_0x4e4dee[_0xd299('0x60')],[_0xd299('0x87'),'id'])||{});}return null;})['spread'](function(_0x38b9e7){var _0x190c36;_0x3d95c9=_0x38b9e7||[];var _0x2c21f1=[];if(_0x38b9e7){for(var _0x6793b8=0x0;_0x6793b8<_0x38b9e7[_0xd299('0x54')];_0x6793b8+=0x1){var _0x426f0e=_0x38b9e7[_0x6793b8]['get']({'plain':!![]});_0x190c36=squel[_0xd299('0xa6')]()['into']('cm_hopper_black')[_0xd299('0xa8')](['phone',_0xd299('0xab'),_0xd299('0xac'),_0xd299('0x68'),_0xd299('0x5e'),_0xd299('0x5f')],squel[_0xd299('0x88')]()['field'](_0xd299('0xa9'),_0xd299('0xa9'))[_0xd299('0x89')]('id',_0xd299('0xab'))[_0xd299('0x89')](_0x426f0e[_0xd299('0xae')]['toString'](),'ListId')[_0xd299('0x89')](_0x4e4dee['params']['id'][_0xd299('0x91')](),_0xd299('0x68'))[_0xd299('0x89')]('NOW()','createdAt')['field'](_0xd299('0xad'),_0xd299('0x5f'))['from'](_0xd299('0xaf'))[_0xd299('0x48')](_0xd299('0xb0'))['where'](_0xd299('0xb1'),_0x426f0e['CmListId'][_0xd299('0x91')]())['where'](_0xd299('0xb7')))['toString']();_0x2c21f1['push'](db['sequelize'][_0xd299('0x41')](_0x190c36));}return BPromise[_0xd299('0x96')](_0x2c21f1);}})[_0xd299('0x2d')](function(){return _0x3d95c9;})[_0xd299('0x2d')](respondWithResult(_0x5664e9,null))[_0xd299('0x51')](handleError(_0x5664e9,null));};exports['removeBlackLists']=function(_0x49a6e2,_0x1615f4,_0x2aad51){return db[_0xd299('0x4c')][_0xd299('0x37')]({'where':{'id':_0x49a6e2[_0xd299('0x53')]['id']}})[_0xd299('0x2d')](handleEntityNotFound(_0x1615f4,null))[_0xd299('0x2d')](function(_0x3e9d53){if(_0x3e9d53){return _0x3e9d53[_0xd299('0xbb')](_0x49a6e2['query'][_0xd299('0x87')]);}})['then'](function(_0x5ae8a9){if(_0x5ae8a9){return db[_0xd299('0x6d')]['destroy']({'where':{'ListId':_0x49a6e2['query']['ids'],'VoiceQueueId':_0x49a6e2[_0xd299('0x53')]['id']}})['then'](function(){return _0x5ae8a9;});}})[_0xd299('0x2d')](respondWithStatusCode(_0x1615f4,null))[_0xd299('0x51')](handleError(_0x1615f4,null));};
\ No newline at end of file
+var _0x0d58=['TeamVoiceQueue','upsert','UserVoiceQueue','SIP/%s','voicePause','emit','userVoiceQueue:save','ids','select','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','all','union','compact','transaction','removeAgents','UserVoiceQueueRt','addAgents','isEmpty','isNil','userVoiceQueue:remove','getAgents','getMembers','CmList','getLists','addLists','spread','dialCheckDuplicateType','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','phone','NOW()','CmListId','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','onlyIfOpen','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','COALESCE(phone,\x27\x27)','removeLists','getBlackLists','cm_hopper_black','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','./voiceQueue.socket','register','sendStatus','status','end','offset','undefined','count','Content-Range','json','apply','reject','update','then','get','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','map','value','includes','find','type','name','UserProfileResource','destroy','error','stack','send','index','rawAttributes','fieldName','key','model','query','keys','filters','fields','attributes','length','hasOwnProperty','limit','order','sort','where','VIRTUAL','merge','include','findAll','rows','catch','show','params','VoiceQueue','intersection','options','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','clone','includeAll','omit','updatedAt','createdAt','UserProfileSection','getHoppers','findOne','CmHopper','nolimit','pick','VoiceQueueId','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','getTeams','addTeams','teams','User','Agents','online','interface','forEach','penalty','sequelize','each'];(function(_0xb75b54,_0x53db99){var _0x37854a=function(_0x343696){while(--_0x343696){_0xb75b54['push'](_0xb75b54['shift']());}};_0x37854a(++_0x53db99);}(_0x0d58,0x1a7));var _0x80d5=function(_0x41bfa8,_0x2222f0){_0x41bfa8=_0x41bfa8-0x0;var _0x5a689e=_0x0d58[_0x41bfa8];return _0x5a689e;};'use strict';var emlformat=require(_0x80d5('0x0'));var rimraf=require(_0x80d5('0x1'));var zipdir=require(_0x80d5('0x2'));var jsonpatch=require(_0x80d5('0x3'));var rp=require(_0x80d5('0x4'));var moment=require('moment');var BPromise=require(_0x80d5('0x5'));var Mustache=require('mustache');var util=require(_0x80d5('0x6'));var path=require(_0x80d5('0x7'));var sox=require('sox');var csv=require(_0x80d5('0x8'));var ejs=require(_0x80d5('0x9'));var fs=require('fs');var fs_extra=require(_0x80d5('0xa'));var _=require(_0x80d5('0xb'));var squel=require('squel');var crypto=require(_0x80d5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x80d5('0xd'));var toCsv=require(_0x80d5('0x8'));var querystring=require('querystring');var Papa=require(_0x80d5('0xe'));var Redis=require('ioredis');var authService=require(_0x80d5('0xf'));var qs=require(_0x80d5('0x10'));var as=require(_0x80d5('0x11'));var hardwareService=require(_0x80d5('0x12'));var logger=require(_0x80d5('0x13'))('api');var utils=require(_0x80d5('0x14'));var config=require(_0x80d5('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x80d5('0x16'))['db'];config[_0x80d5('0x17')]=_[_0x80d5('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x80d5('0x17')]));require(_0x80d5('0x19'))[_0x80d5('0x1a')](socket);function respondWithStatusCode(_0x162ace,_0x568556){_0x568556=_0x568556||0xcc;return function(_0xc3d2fd){if(_0xc3d2fd){return _0x162ace[_0x80d5('0x1b')](_0x568556);}return _0x162ace[_0x80d5('0x1c')](_0x568556)[_0x80d5('0x1d')]();};}function respondWithResult(_0xba08aa,_0x5a940b){_0x5a940b=_0x5a940b||0xc8;return function(_0x2d608a){if(_0x2d608a){return _0xba08aa[_0x80d5('0x1c')](_0x5a940b)['json'](_0x2d608a);}};}function respondWithFilteredResult(_0x5778f5,_0x2336bf){return function(_0xdf197c){if(_0xdf197c){var _0x325d65=typeof _0x2336bf[_0x80d5('0x1e')]===_0x80d5('0x1f')&&typeof _0x2336bf['limit']===_0x80d5('0x1f');var _0x1e81a0=_0xdf197c['count'];var _0x2a5a68=_0x325d65?0x0:_0x2336bf[_0x80d5('0x1e')];var _0x3fb1c1=_0x325d65?_0xdf197c[_0x80d5('0x20')]:_0x2336bf['offset']+_0x2336bf['limit'];var _0x1eda66;if(_0x3fb1c1>=_0x1e81a0){_0x3fb1c1=_0x1e81a0;_0x1eda66=0xc8;}else{_0x1eda66=0xce;}_0x5778f5[_0x80d5('0x1c')](_0x1eda66);return _0x5778f5['set'](_0x80d5('0x21'),_0x2a5a68+'-'+_0x3fb1c1+'/'+_0x1e81a0)[_0x80d5('0x22')](_0xdf197c);}return null;};}function patchUpdates(_0x36807d){return function(_0x7841f2){try{jsonpatch[_0x80d5('0x23')](_0x7841f2,_0x36807d,!![]);}catch(_0x1a4720){return BPromise[_0x80d5('0x24')](_0x1a4720);}return _0x7841f2['save']();};}function saveUpdates(_0x39607c,_0x1277cb){return function(_0x206876){if(_0x206876){return _0x206876[_0x80d5('0x25')](_0x39607c)[_0x80d5('0x26')](function(_0x36970f){return _0x36970f;});}return null;};}function removeEntity(_0x44e302,_0x2f854b){return function(_0x1b40e1){if(_0x1b40e1){return _0x1b40e1['destroy']()[_0x80d5('0x26')](function(){var _0x2dfe56=_0x1b40e1[_0x80d5('0x27')]({'plain':!![]});var _0x5ca602=[{'name':_0x80d5('0x28'),'value':_0x80d5('0x29'),'ignore':![]},{'name':_0x80d5('0x2a'),'value':_0x80d5('0x2b'),'ignore':![]}];var _0x3f727b=_(_0x5ca602)[_0x80d5('0x2c')](_0x80d5('0x2d'))[_0x80d5('0x2e')](_0x80d5('0x2f'))['value']();if(_[_0x80d5('0x30')](_0x3f727b,_0x2dfe56['type'])){return;}var _0x20bc08=_[_0x80d5('0x31')](_0x5ca602,[_0x80d5('0x2f'),_0x2dfe56[_0x80d5('0x32')]])[_0x80d5('0x33')];return db[_0x80d5('0x34')][_0x80d5('0x35')]({'where':{'type':_0x20bc08,'resourceId':_0x2dfe56['id']}})[_0x80d5('0x26')](function(){return _0x1b40e1;});})[_0x80d5('0x26')](function(){_0x44e302[_0x80d5('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x307e43,_0x71d31b){return function(_0x10132a){if(!_0x10132a){_0x307e43['sendStatus'](0x194);}return _0x10132a;};}function handleError(_0x218f51,_0x459776){_0x459776=_0x459776||0x1f4;return function(_0x2e6c9d){logger[_0x80d5('0x36')](_0x2e6c9d[_0x80d5('0x37')]);if(_0x2e6c9d['name']){delete _0x2e6c9d['name'];}_0x218f51[_0x80d5('0x1c')](_0x459776)[_0x80d5('0x38')](_0x2e6c9d);};}exports[_0x80d5('0x39')]=function(_0x4332bc,_0x412752){var _0x58506c={},_0x113d16={},_0x5c83f0={'count':0x0,'rows':[]};var _0xfc02a1=_[_0x80d5('0x2e')](db['VoiceQueue'][_0x80d5('0x3a')],function(_0x47da89){return{'name':_0x47da89[_0x80d5('0x3b')],'type':_0x47da89[_0x80d5('0x32')][_0x80d5('0x3c')]};});_0x113d16[_0x80d5('0x3d')]=_[_0x80d5('0x2e')](_0xfc02a1,_0x80d5('0x33'));_0x113d16[_0x80d5('0x3e')]=_[_0x80d5('0x3f')](_0x4332bc[_0x80d5('0x3e')]);_0x113d16[_0x80d5('0x40')]=_['intersection'](_0x113d16[_0x80d5('0x3d')],_0x113d16[_0x80d5('0x3e')]);_0x58506c['attributes']=_['intersection'](_0x113d16['model'],qs[_0x80d5('0x41')](_0x4332bc['query'][_0x80d5('0x41')]));_0x58506c[_0x80d5('0x42')]=_0x58506c['attributes'][_0x80d5('0x43')]?_0x58506c[_0x80d5('0x42')]:_0x113d16['model'];if(!_0x4332bc[_0x80d5('0x3e')][_0x80d5('0x44')]('nolimit')){_0x58506c[_0x80d5('0x45')]=qs['limit'](_0x4332bc['query'][_0x80d5('0x45')]);_0x58506c['offset']=qs[_0x80d5('0x1e')](_0x4332bc['query'][_0x80d5('0x1e')]);}_0x58506c[_0x80d5('0x46')]=qs[_0x80d5('0x47')](_0x4332bc[_0x80d5('0x3e')][_0x80d5('0x47')]);_0x58506c[_0x80d5('0x48')]=qs[_0x80d5('0x40')](_['pick'](_0x4332bc[_0x80d5('0x3e')],_0x113d16[_0x80d5('0x40')]),_0xfc02a1);if(_0x4332bc[_0x80d5('0x3e')][_0x80d5('0x2c')]){_0x58506c[_0x80d5('0x48')]=_['merge'](_0x58506c[_0x80d5('0x48')],{'$or':_[_0x80d5('0x2e')](_0xfc02a1,function(_0x54ac0f){if(_0x54ac0f[_0x80d5('0x32')]!==_0x80d5('0x49')){var _0x1c33be={};_0x1c33be[_0x54ac0f[_0x80d5('0x33')]]={'$like':'%'+_0x4332bc[_0x80d5('0x3e')]['filter']+'%'};return _0x1c33be;}})});}_0x58506c=_[_0x80d5('0x4a')]({},_0x58506c,_0x4332bc['options']);var _0x10c09f={'where':_0x58506c[_0x80d5('0x48')]};return db['VoiceQueue'][_0x80d5('0x20')](_0x10c09f)['then'](function(_0x12707a){_0x5c83f0['count']=_0x12707a;if(_0x4332bc['query']['includeAll']){_0x58506c[_0x80d5('0x4b')]=[{'all':!![]}];}return db['VoiceQueue'][_0x80d5('0x4c')](_0x58506c);})[_0x80d5('0x26')](function(_0x1d9ef6){_0x5c83f0[_0x80d5('0x4d')]=_0x1d9ef6;return _0x5c83f0;})[_0x80d5('0x26')](respondWithFilteredResult(_0x412752,_0x58506c))[_0x80d5('0x4e')](handleError(_0x412752,null));};exports[_0x80d5('0x4f')]=function(_0x80a1d2,_0x222926){var _0x1531ba={'raw':![],'where':{'id':_0x80a1d2[_0x80d5('0x50')]['id']}},_0x3ac6df={};_0x3ac6df['model']=_['keys'](db[_0x80d5('0x51')][_0x80d5('0x3a')]);_0x3ac6df[_0x80d5('0x3e')]=_[_0x80d5('0x3f')](_0x80a1d2['query']);_0x3ac6df[_0x80d5('0x40')]=_[_0x80d5('0x52')](_0x3ac6df['model'],_0x3ac6df[_0x80d5('0x3e')]);_0x1531ba[_0x80d5('0x42')]=_[_0x80d5('0x52')](_0x3ac6df[_0x80d5('0x3d')],qs[_0x80d5('0x41')](_0x80a1d2[_0x80d5('0x3e')][_0x80d5('0x41')]));_0x1531ba[_0x80d5('0x42')]=_0x1531ba['attributes'][_0x80d5('0x43')]?_0x1531ba['attributes']:_0x3ac6df[_0x80d5('0x3d')];if(_0x80a1d2[_0x80d5('0x3e')]['includeAll']){_0x1531ba['include']=[{'all':!![]}];}_0x1531ba=_['merge']({},_0x1531ba,_0x80a1d2[_0x80d5('0x53')]);return db['VoiceQueue'][_0x80d5('0x31')](_0x1531ba)['then'](handleEntityNotFound(_0x222926,null))[_0x80d5('0x26')](respondWithResult(_0x222926,null))[_0x80d5('0x4e')](handleError(_0x222926,null));};exports['create']=function(_0x3ffead,_0x386d90){return db[_0x80d5('0x51')][_0x80d5('0x54')](_0x3ffead[_0x80d5('0x55')],{})[_0x80d5('0x26')](function(_0x467ee5){var _0x17122e=_0x3ffead['user'][_0x80d5('0x27')]({'plain':!![]});if(!_0x17122e)throw new Error(_0x80d5('0x56'));if(_0x17122e[_0x80d5('0x57')]===_0x80d5('0x58')){var _0x3a5fab=_0x467ee5[_0x80d5('0x27')]({'plain':!![]});var _0x3b5b98=[{'name':_0x80d5('0x28'),'value':'inbound'},{'name':'QueueCampaigns','value':_0x80d5('0x2b')}];var _0x529553=_['find'](_0x3b5b98,[_0x80d5('0x2f'),_0x3a5fab['type']])['name'];return db['UserProfileSection'][_0x80d5('0x31')]({'where':{'name':_0x529553,'userProfileId':_0x17122e[_0x80d5('0x59')]},'raw':!![]})[_0x80d5('0x26')](function(_0xf94dfd){if(_0xf94dfd&&_0xf94dfd[_0x80d5('0x5a')]===0x0){return db[_0x80d5('0x34')][_0x80d5('0x54')]({'name':_0x3a5fab[_0x80d5('0x33')],'resourceId':_0x3a5fab['id'],'type':_0xf94dfd[_0x80d5('0x33')],'sectionId':_0xf94dfd['id']},{})[_0x80d5('0x26')](function(){return _0x467ee5;});}else{return _0x467ee5;}})[_0x80d5('0x4e')](function(_0x2b399a){logger[_0x80d5('0x36')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2b399a);throw _0x2b399a;});}return _0x467ee5;})['then'](respondWithResult(_0x386d90,0xc9))['catch'](handleError(_0x386d90,null));};exports[_0x80d5('0x5b')]=function(_0x33a012,_0xdf1625){var _0x1e7335={'where':{'id':_0x33a012[_0x80d5('0x50')]['id']}},_0x318a51={};_0x318a51[_0x80d5('0x3d')]=_[_0x80d5('0x3f')](db[_0x80d5('0x51')]['rawAttributes']);_0x1e7335['attributes']=_[_0x80d5('0x52')](_0x318a51[_0x80d5('0x3d')],qs['fields'](_0x33a012[_0x80d5('0x3e')][_0x80d5('0x41')]));_0x1e7335[_0x80d5('0x42')]=_0x1e7335[_0x80d5('0x42')][_0x80d5('0x43')]?_0x1e7335[_0x80d5('0x42')]:_0x318a51[_0x80d5('0x3d')];if(_0x33a012[_0x80d5('0x3e')][_0x80d5('0x5c')]){_0x1e7335[_0x80d5('0x4b')]=[{'all':!![]}];}_0x1e7335=_[_0x80d5('0x4a')]({},_0x1e7335,_0x33a012[_0x80d5('0x53')]);return db[_0x80d5('0x51')]['find'](_0x1e7335)['then'](handleEntityNotFound(_0xdf1625,null))[_0x80d5('0x26')](function(_0x11cc57){if(_0x11cc57){var _0x90db85=_0x11cc57['get']({'plain':!![]});_0x90db85=qs[_0x80d5('0x5d')](_0x90db85,['id','createdAt',_0x80d5('0x5e')]);_0x33a012[_0x80d5('0x55')]=_[_0x80d5('0x5d')](_0x33a012[_0x80d5('0x55')],['id',_0x80d5('0x5f'),_0x80d5('0x5e')]);return db['VoiceQueue'][_0x80d5('0x54')](_[_0x80d5('0x4a')](_0x90db85,_0x33a012[_0x80d5('0x55')]),{'include':_0x33a012[_0x80d5('0x3e')][_0x80d5('0x5c')]?[{'all':!![]}]:undefined})['then'](function(_0x5b5b80){var _0x31cee8=_0x33a012[_0x80d5('0x58')]['get']({'plain':!![]});if(!_0x31cee8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x31cee8['role']==='user'){var _0x434c4c=_0x5b5b80[_0x80d5('0x27')]({'plain':!![]});var _0x371f90=[{'name':_0x80d5('0x28'),'value':_0x80d5('0x29')},{'name':_0x80d5('0x2a'),'value':_0x80d5('0x2b')}];var _0x114024=_[_0x80d5('0x31')](_0x371f90,['value',_0x434c4c[_0x80d5('0x32')]])['name'];return db[_0x80d5('0x60')][_0x80d5('0x31')]({'where':{'name':_0x114024,'userProfileId':_0x31cee8[_0x80d5('0x59')]},'raw':!![]})[_0x80d5('0x26')](function(_0x54b255){if(_0x54b255&&_0x54b255[_0x80d5('0x5a')]===0x0){return db[_0x80d5('0x34')][_0x80d5('0x54')]({'name':_0x434c4c[_0x80d5('0x33')],'resourceId':_0x434c4c['id'],'type':_0x54b255[_0x80d5('0x33')],'sectionId':_0x54b255['id']},{})[_0x80d5('0x26')](function(){return _0x5b5b80;});}else{return _0x5b5b80;}})[_0x80d5('0x4e')](function(_0x5b0411){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5b0411);throw _0x5b0411;});}return _0x5b5b80;});}})['then'](respondWithResult(_0xdf1625,0xc9))['catch'](handleError(_0xdf1625,null));};exports['update']=function(_0x31f881,_0x1de7c5){if(_0x31f881['body']['id']){delete _0x31f881[_0x80d5('0x55')]['id'];}return db[_0x80d5('0x51')]['find']({'where':{'id':_0x31f881[_0x80d5('0x50')]['id']}})[_0x80d5('0x26')](handleEntityNotFound(_0x1de7c5,null))[_0x80d5('0x26')](saveUpdates(_0x31f881['body'],null))[_0x80d5('0x26')](respondWithResult(_0x1de7c5,null))[_0x80d5('0x4e')](handleError(_0x1de7c5,null));};exports[_0x80d5('0x35')]=function(_0x57db62,_0xad8f6f){return db[_0x80d5('0x51')]['find']({'where':{'id':_0x57db62[_0x80d5('0x50')]['id']}})['then'](handleEntityNotFound(_0xad8f6f,null))['then'](removeEntity(_0xad8f6f,null))['catch'](handleError(_0xad8f6f,null));};exports[_0x80d5('0x61')]=function(_0x4b62aa,_0xc9b9e3,_0x3406cd){var _0x18136e={'raw':![],'where':{}};var _0x5437f9={};var _0xe0f08d={'count':0x0,'rows':[]};return db[_0x80d5('0x51')][_0x80d5('0x62')]({'where':{'id':_0x4b62aa[_0x80d5('0x50')]['id']}})[_0x80d5('0x26')](handleEntityNotFound(_0xc9b9e3,null))[_0x80d5('0x26')](function(_0x227b46){if(_0x227b46){_0x5437f9[_0x80d5('0x3d')]=_[_0x80d5('0x3f')](db[_0x80d5('0x63')][_0x80d5('0x3a')]);_0x5437f9[_0x80d5('0x3e')]=_[_0x80d5('0x3f')](_0x4b62aa[_0x80d5('0x3e')]);_0x5437f9[_0x80d5('0x40')]=_[_0x80d5('0x52')](_0x5437f9[_0x80d5('0x3d')],_0x5437f9[_0x80d5('0x3e')]);_0x18136e[_0x80d5('0x42')]=_[_0x80d5('0x52')](_0x5437f9[_0x80d5('0x3d')],qs[_0x80d5('0x41')](_0x4b62aa[_0x80d5('0x3e')]['fields']));_0x18136e[_0x80d5('0x42')]=_0x18136e[_0x80d5('0x42')]['length']?_0x18136e['attributes']:_0x5437f9['model'];if(!_0x4b62aa[_0x80d5('0x3e')][_0x80d5('0x44')](_0x80d5('0x64'))){_0x18136e[_0x80d5('0x45')]=qs['limit'](_0x4b62aa[_0x80d5('0x3e')][_0x80d5('0x45')]);_0x18136e[_0x80d5('0x1e')]=qs[_0x80d5('0x1e')](_0x4b62aa['query'][_0x80d5('0x1e')]);}_0x18136e[_0x80d5('0x46')]=qs[_0x80d5('0x47')](_0x4b62aa['query'][_0x80d5('0x47')]);_0x18136e[_0x80d5('0x48')]=qs[_0x80d5('0x40')](_[_0x80d5('0x65')](_0x4b62aa['query'],_0x5437f9[_0x80d5('0x40')]));_0x18136e[_0x80d5('0x48')][_0x80d5('0x66')]=_0x227b46['id'];if(_0x4b62aa['query']['filter']){_0x18136e[_0x80d5('0x48')]=_[_0x80d5('0x4a')](_0x18136e[_0x80d5('0x48')],{'$or':_[_0x80d5('0x2e')](_0x18136e['attributes'],function(_0x608d72){var _0x1f325b={};_0x1f325b[_0x608d72]={'$like':'%'+_0x4b62aa[_0x80d5('0x3e')]['filter']+'%'};return _0x1f325b;})});}_0x18136e=_[_0x80d5('0x4a')]({},_0x18136e,_0x4b62aa[_0x80d5('0x53')]);return db[_0x80d5('0x63')][_0x80d5('0x20')]({'where':_0x18136e[_0x80d5('0x48')]})[_0x80d5('0x26')](function(_0x15a522){_0xe0f08d[_0x80d5('0x20')]=_0x15a522;if(_0x4b62aa[_0x80d5('0x3e')][_0x80d5('0x5c')]){_0x18136e['include']=[{'all':!![]}];}return db['CmHopper'][_0x80d5('0x4c')](_0x18136e);})[_0x80d5('0x26')](function(_0x2b10be){_0xe0f08d[_0x80d5('0x4d')]=_0x2b10be;return _0xe0f08d;});}})[_0x80d5('0x26')](respondWithFilteredResult(_0xc9b9e3,_0x18136e))['catch'](handleError(_0xc9b9e3,null));};exports['getHopperHistories']=function(_0x5ea365,_0x3a9d9b,_0x4d79b1){var _0x1b098d={'raw':!![],'where':{}};var _0x3ea690={};var _0x3f1ee9={'count':0x0,'rows':[]};return db[_0x80d5('0x51')][_0x80d5('0x62')]({'where':{'id':_0x5ea365['params']['id']}})[_0x80d5('0x26')](handleEntityNotFound(_0x3a9d9b,null))['then'](function(_0x322f8b){if(_0x322f8b){_0x3ea690[_0x80d5('0x3d')]=_['keys'](db[_0x80d5('0x67')]['rawAttributes']);_0x3ea690['query']=_[_0x80d5('0x3f')](_0x5ea365['query']);_0x3ea690[_0x80d5('0x40')]=_[_0x80d5('0x52')](_0x3ea690[_0x80d5('0x3d')],_0x3ea690[_0x80d5('0x3e')]);_0x1b098d[_0x80d5('0x42')]=_['intersection'](_0x3ea690['model'],qs[_0x80d5('0x41')](_0x5ea365[_0x80d5('0x3e')][_0x80d5('0x41')]));_0x1b098d['attributes']=_0x1b098d['attributes'][_0x80d5('0x43')]?_0x1b098d['attributes']:_0x3ea690[_0x80d5('0x3d')];if(!_0x5ea365['query'][_0x80d5('0x44')](_0x80d5('0x64'))){_0x1b098d[_0x80d5('0x45')]=qs[_0x80d5('0x45')](_0x5ea365['query']['limit']);_0x1b098d[_0x80d5('0x1e')]=qs['offset'](_0x5ea365[_0x80d5('0x3e')][_0x80d5('0x1e')]);}_0x1b098d[_0x80d5('0x46')]=qs['sort'](_0x5ea365[_0x80d5('0x3e')][_0x80d5('0x47')]);_0x1b098d['where']=qs[_0x80d5('0x40')](_['pick'](_0x5ea365[_0x80d5('0x3e')],_0x3ea690['filters']));_0x1b098d[_0x80d5('0x48')][_0x80d5('0x66')]=_0x322f8b['id'];if(_0x5ea365[_0x80d5('0x3e')][_0x80d5('0x2c')]){_0x1b098d[_0x80d5('0x48')]=_[_0x80d5('0x4a')](_0x1b098d[_0x80d5('0x48')],{'$or':_['map'](_0x1b098d['attributes'],function(_0x78e2db){var _0x4b4664={};_0x4b4664[_0x78e2db]={'$like':'%'+_0x5ea365[_0x80d5('0x3e')]['filter']+'%'};return _0x4b4664;})});}_0x1b098d=_[_0x80d5('0x4a')]({},_0x1b098d,_0x5ea365['options']);return db[_0x80d5('0x67')][_0x80d5('0x20')]({'where':_0x1b098d[_0x80d5('0x48')]})['then'](function(_0x247f57){_0x3f1ee9[_0x80d5('0x20')]=_0x247f57;if(_0x5ea365[_0x80d5('0x3e')][_0x80d5('0x5c')]){_0x1b098d[_0x80d5('0x4b')]=[{'all':!![]}];}return db[_0x80d5('0x67')][_0x80d5('0x4c')](_0x1b098d);})[_0x80d5('0x26')](function(_0x47edf3){_0x3f1ee9[_0x80d5('0x4d')]=_0x47edf3;return _0x3f1ee9;});}})[_0x80d5('0x26')](respondWithFilteredResult(_0x3a9d9b,_0x1b098d))[_0x80d5('0x4e')](handleError(_0x3a9d9b,null));};exports[_0x80d5('0x68')]=function(_0x1be5a5,_0x118acd,_0x1aab97){var _0x397ed7={'raw':!![],'where':{}};var _0x20ab15={};var _0x31def1={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x1be5a5['params']['id']}})[_0x80d5('0x26')](handleEntityNotFound(_0x118acd,null))[_0x80d5('0x26')](function(_0x245a06){if(_0x245a06){_0x20ab15[_0x80d5('0x3d')]=_[_0x80d5('0x3f')](db['CmHopperFinal'][_0x80d5('0x3a')]);_0x20ab15['query']=_[_0x80d5('0x3f')](_0x1be5a5[_0x80d5('0x3e')]);_0x20ab15[_0x80d5('0x40')]=_[_0x80d5('0x52')](_0x20ab15['model'],_0x20ab15[_0x80d5('0x3e')]);_0x397ed7[_0x80d5('0x42')]=_[_0x80d5('0x52')](_0x20ab15['model'],qs['fields'](_0x1be5a5[_0x80d5('0x3e')]['fields']));_0x397ed7[_0x80d5('0x42')]=_0x397ed7[_0x80d5('0x42')]['length']?_0x397ed7[_0x80d5('0x42')]:_0x20ab15['model'];if(!_0x1be5a5[_0x80d5('0x3e')]['hasOwnProperty'](_0x80d5('0x64'))){_0x397ed7[_0x80d5('0x45')]=qs[_0x80d5('0x45')](_0x1be5a5[_0x80d5('0x3e')][_0x80d5('0x45')]);_0x397ed7[_0x80d5('0x1e')]=qs[_0x80d5('0x1e')](_0x1be5a5[_0x80d5('0x3e')][_0x80d5('0x1e')]);}_0x397ed7[_0x80d5('0x46')]=qs[_0x80d5('0x47')](_0x1be5a5[_0x80d5('0x3e')][_0x80d5('0x47')]);_0x397ed7['where']=qs['filters'](_['pick'](_0x1be5a5[_0x80d5('0x3e')],_0x20ab15[_0x80d5('0x40')]));_0x397ed7[_0x80d5('0x48')][_0x80d5('0x66')]=_0x245a06['id'];if(_0x1be5a5[_0x80d5('0x3e')][_0x80d5('0x2c')]){_0x397ed7[_0x80d5('0x48')]=_[_0x80d5('0x4a')](_0x397ed7[_0x80d5('0x48')],{'$or':_['map'](_0x397ed7[_0x80d5('0x42')],function(_0x5893b7){var _0x288ba6={};_0x288ba6[_0x5893b7]={'$like':'%'+_0x1be5a5[_0x80d5('0x3e')][_0x80d5('0x2c')]+'%'};return _0x288ba6;})});}_0x397ed7=_['merge']({},_0x397ed7,_0x1be5a5[_0x80d5('0x53')]);return db[_0x80d5('0x69')][_0x80d5('0x20')]({'where':_0x397ed7[_0x80d5('0x48')]})[_0x80d5('0x26')](function(_0x2f7352){_0x31def1[_0x80d5('0x20')]=_0x2f7352;if(_0x1be5a5[_0x80d5('0x3e')][_0x80d5('0x5c')]){_0x397ed7[_0x80d5('0x4b')]=[{'all':!![]}];}return db[_0x80d5('0x69')][_0x80d5('0x4c')](_0x397ed7);})[_0x80d5('0x26')](function(_0x27a22d){_0x31def1[_0x80d5('0x4d')]=_0x27a22d;return _0x31def1;});}})[_0x80d5('0x26')](respondWithFilteredResult(_0x118acd,_0x397ed7))[_0x80d5('0x4e')](handleError(_0x118acd,null));};exports[_0x80d5('0x6a')]=function(_0x3c87e9,_0xb66e5d,_0x9ccda7){var _0x566261={'raw':!![],'where':{}};var _0x3d0c9a={};var _0x4d7344={'count':0x0,'rows':[]};return db[_0x80d5('0x51')][_0x80d5('0x62')]({'where':{'id':_0x3c87e9[_0x80d5('0x50')]['id']}})[_0x80d5('0x26')](handleEntityNotFound(_0xb66e5d,null))['then'](function(_0x3e8bf6){if(_0x3e8bf6){_0x3d0c9a[_0x80d5('0x3d')]=_['keys'](db['CmHopperBlack'][_0x80d5('0x3a')]);_0x3d0c9a[_0x80d5('0x3e')]=_[_0x80d5('0x3f')](_0x3c87e9[_0x80d5('0x3e')]);_0x3d0c9a[_0x80d5('0x40')]=_[_0x80d5('0x52')](_0x3d0c9a[_0x80d5('0x3d')],_0x3d0c9a['query']);_0x566261[_0x80d5('0x42')]=_['intersection'](_0x3d0c9a[_0x80d5('0x3d')],qs[_0x80d5('0x41')](_0x3c87e9[_0x80d5('0x3e')][_0x80d5('0x41')]));_0x566261[_0x80d5('0x42')]=_0x566261[_0x80d5('0x42')]['length']?_0x566261[_0x80d5('0x42')]:_0x3d0c9a[_0x80d5('0x3d')];if(!_0x3c87e9[_0x80d5('0x3e')][_0x80d5('0x44')](_0x80d5('0x64'))){_0x566261[_0x80d5('0x45')]=qs[_0x80d5('0x45')](_0x3c87e9['query']['limit']);_0x566261[_0x80d5('0x1e')]=qs[_0x80d5('0x1e')](_0x3c87e9['query'][_0x80d5('0x1e')]);}_0x566261['order']=qs[_0x80d5('0x47')](_0x3c87e9[_0x80d5('0x3e')][_0x80d5('0x47')]);_0x566261[_0x80d5('0x48')]=qs['filters'](_['pick'](_0x3c87e9['query'],_0x3d0c9a[_0x80d5('0x40')]));_0x566261[_0x80d5('0x48')][_0x80d5('0x66')]=_0x3e8bf6['id'];if(_0x3c87e9['query']['filter']){_0x566261[_0x80d5('0x48')]=_[_0x80d5('0x4a')](_0x566261[_0x80d5('0x48')],{'$or':_['map'](_0x566261[_0x80d5('0x42')],function(_0x4b0baf){var _0x2b58f4={};_0x2b58f4[_0x4b0baf]={'$like':'%'+_0x3c87e9[_0x80d5('0x3e')][_0x80d5('0x2c')]+'%'};return _0x2b58f4;})});}_0x566261=_[_0x80d5('0x4a')]({},_0x566261,_0x3c87e9[_0x80d5('0x53')]);return db[_0x80d5('0x6b')][_0x80d5('0x20')]({'where':_0x566261['where']})['then'](function(_0xc94623){_0x4d7344[_0x80d5('0x20')]=_0xc94623;if(_0x3c87e9[_0x80d5('0x3e')][_0x80d5('0x5c')]){_0x566261[_0x80d5('0x4b')]=[{'all':!![]}];}return db[_0x80d5('0x6b')][_0x80d5('0x4c')](_0x566261);})[_0x80d5('0x26')](function(_0x4f7dab){_0x4d7344[_0x80d5('0x4d')]=_0x4f7dab;return _0x4d7344;});}})[_0x80d5('0x26')](respondWithFilteredResult(_0xb66e5d,_0x566261))[_0x80d5('0x4e')](handleError(_0xb66e5d,null));};exports['getTeams']=function(_0x161f13,_0x24e21a,_0x2a5e5b){var _0x43a9ac={};var _0x5dae34={};var _0x3b0e50;var _0x17e0fb;return db['VoiceQueue'][_0x80d5('0x62')]({'where':{'id':_0x161f13[_0x80d5('0x50')]['id']}})['then'](handleEntityNotFound(_0x24e21a,null))['then'](function(_0x26e32c){if(_0x26e32c){_0x3b0e50=_0x26e32c;_0x5dae34['model']=_[_0x80d5('0x3f')](db[_0x80d5('0x6c')][_0x80d5('0x3a')]);_0x5dae34[_0x80d5('0x3e')]=_[_0x80d5('0x3f')](_0x161f13[_0x80d5('0x3e')]);_0x5dae34[_0x80d5('0x40')]=_[_0x80d5('0x52')](_0x5dae34[_0x80d5('0x3d')],_0x5dae34[_0x80d5('0x3e')]);_0x43a9ac[_0x80d5('0x42')]=_[_0x80d5('0x52')](_0x5dae34[_0x80d5('0x3d')],qs[_0x80d5('0x41')](_0x161f13[_0x80d5('0x3e')][_0x80d5('0x41')]));_0x43a9ac['attributes']=_0x43a9ac['attributes'][_0x80d5('0x43')]?_0x43a9ac[_0x80d5('0x42')]:_0x5dae34[_0x80d5('0x3d')];_0x43a9ac[_0x80d5('0x46')]=qs[_0x80d5('0x47')](_0x161f13[_0x80d5('0x3e')]['sort']);_0x43a9ac[_0x80d5('0x48')]=qs['filters'](_[_0x80d5('0x65')](_0x161f13['query'],_0x5dae34[_0x80d5('0x40')]));if(_0x161f13[_0x80d5('0x3e')][_0x80d5('0x2c')]){_0x43a9ac[_0x80d5('0x48')]=_[_0x80d5('0x4a')](_0x43a9ac['where'],{'$or':_['map'](_0x43a9ac[_0x80d5('0x42')],function(_0x221e34){var _0x3f01c9={};_0x3f01c9[_0x221e34]={'$like':'%'+_0x161f13[_0x80d5('0x3e')][_0x80d5('0x2c')]+'%'};return _0x3f01c9;})});}_0x43a9ac=_['merge']({},_0x43a9ac,_0x161f13[_0x80d5('0x53')]);return _0x3b0e50[_0x80d5('0x6d')](_0x43a9ac);}})[_0x80d5('0x26')](function(_0x47d64f){if(_0x47d64f){_0x17e0fb=_0x47d64f['length'];if(!_0x161f13[_0x80d5('0x3e')][_0x80d5('0x44')](_0x80d5('0x64'))){_0x43a9ac[_0x80d5('0x45')]=qs[_0x80d5('0x45')](_0x161f13[_0x80d5('0x3e')]['limit']);_0x43a9ac['offset']=qs['offset'](_0x161f13[_0x80d5('0x3e')][_0x80d5('0x1e')]);}return _0x3b0e50[_0x80d5('0x6d')](_0x43a9ac);}})[_0x80d5('0x26')](function(_0x5c7d44){if(_0x5c7d44){return _0x5c7d44?{'count':_0x17e0fb,'rows':_0x5c7d44}:null;}})['then'](respondWithResult(_0x24e21a,null))[_0x80d5('0x4e')](handleError(_0x24e21a,null));};exports[_0x80d5('0x6e')]=function(_0xf8625a,_0x3df178,_0x535804){var _0x578f50=_0xf8625a[_0x80d5('0x55')][_0x80d5('0x6f')];var _0x39ef09=_[_0x80d5('0x2e')](_0x578f50,'id');return db[_0x80d5('0x6c')][_0x80d5('0x4c')]({'where':{'id':_0x39ef09},'attributes':['id'],'include':[{'model':db[_0x80d5('0x70')],'as':_0x80d5('0x71'),'attributes':['id','name',_0x80d5('0x72'),'voicePause',_0x80d5('0x73')],'raw':!![]}]})[_0x80d5('0x26')](function(_0x4f302f){if(_0x4f302f){var _0x18f54a=_['flatMap'](_0x4f302f,function(_0x59c67f){var _0x456a=_0x59c67f[_0x80d5('0x27')]({'plain':!![]});_0x456a['Agents'][_0x80d5('0x74')](function(_0x3807bc){_0x3807bc[_0x80d5('0x75')]=_[_0x80d5('0x31')](_0x578f50,{'id':_0x456a['id']})[_0x80d5('0x75')];});return _0x456a['Agents'];});return db['VoiceQueue'][_0x80d5('0x31')]({'where':{'id':_0xf8625a['params']['id']}})[_0x80d5('0x26')](function(_0x3ff0f8){return db[_0x80d5('0x76')]['transaction'](function(_0x59c1ff){return _0x3ff0f8[_0x80d5('0x6e')](_0x39ef09,{'transaction':_0x59c1ff})['then'](function(){return BPromise[_0x80d5('0x77')](_0x578f50,function(_0x449cab){return db[_0x80d5('0x78')][_0x80d5('0x79')]({'TeamId':_0x449cab['id'],'VoiceQueueId':_0xf8625a[_0x80d5('0x50')]['id'],'penalty':_0x449cab[_0x80d5('0x75')]},{'transaction':_0x59c1ff});});})['then'](function(){return BPromise[_0x80d5('0x77')](_0x18f54a,function(_0x512600){return db[_0x80d5('0x7a')]['findOrCreate']({'where':{'UserId':_0x512600['id'],'VoiceQueueId':_0xf8625a[_0x80d5('0x50')]['id']},'defaults':{'penalty':_0x512600[_0x80d5('0x75')]},'transaction':_0x59c1ff});});})[_0x80d5('0x26')](function(){return BPromise[_0x80d5('0x77')](_[_0x80d5('0x2c')](_0x18f54a,{'online':!![]}),function(_0x404f88){return db['UserVoiceQueueRt'][_0x80d5('0x79')]({'membername':_0x404f88[_0x80d5('0x33')],'UserId':_0x404f88['id'],'queue_name':_0x3ff0f8[_0x80d5('0x33')],'VoiceQueueId':_0x3ff0f8['id'],'interface':_['isNil'](_0x404f88['interface'])?util['format'](_0x80d5('0x7b'),_0x404f88['name']):_0x404f88[_0x80d5('0x73')],'paused':_0x404f88[_0x80d5('0x7c')]||![],'penalty':_0x404f88[_0x80d5('0x75')]},{'transaction':_0x59c1ff});});})[_0x80d5('0x26')](function(){_0x18f54a['forEach'](function(_0x379fc1){socket[_0x80d5('0x7d')](_0x80d5('0x7e'),{'UserId':_0x379fc1['id'],'VoiceQueueId':_0x3ff0f8['id']});});});});});}})['then'](respondWithStatusCode(_0x3df178,null))[_0x80d5('0x4e')](handleError(_0x3df178,null));};exports['removeTeams']=function(_0x21ee62,_0x39c412,_0x100f2e){return db[_0x80d5('0x6c')]['findAll']({'where':{'id':_0x21ee62[_0x80d5('0x3e')][_0x80d5('0x7f')]},'attributes':['id'],'include':[{'model':db[_0x80d5('0x70')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x39c412,null))[_0x80d5('0x26')](function(_0x344fbb){var _0x15155e=_['map'](_0x344fbb,'id');var _0x2ad487=[];var _0x108fdc=[];var _0x19b6ea=squel[_0x80d5('0x80')]();_0x19b6ea[_0x80d5('0x81')](_0x80d5('0x82'))[_0x80d5('0x83')](_0x80d5('0x84'),'tq')[_0x80d5('0x85')](_0x80d5('0x86'),'ut',_0x80d5('0x87'))[_0x80d5('0x48')](_0x80d5('0x88'),_0x21ee62[_0x80d5('0x50')]['id']);for(var _0x53a228=0x0;_0x53a228<_0x344fbb['length'];_0x53a228+=0x1){let _0x1dd454=_0x344fbb[_0x53a228];for(var _0x2ea315=0x0;_0x2ea315<_0x1dd454['Agents'][_0x80d5('0x43')];_0x2ea315+=0x1){let _0xc0b34a=_0x1dd454[_0x80d5('0x71')][_0x2ea315];var _0x417a94=_0x19b6ea['clone']();_0x417a94[_0x80d5('0x48')](_0x80d5('0x89'),_0xc0b34a['id']);_0x108fdc[_0x80d5('0x8a')](db['sequelize'][_0x80d5('0x3e')](_0x417a94[_0x80d5('0x8b')](),{'type':db[_0x80d5('0x76')][_0x80d5('0x8c')]['SELECT']})[_0x80d5('0x26')](function(_0x5ee5fe){if(_0x5ee5fe[_0x80d5('0x43')]===0x1){return _0xc0b34a['id'];}else{var _0x4efedf=_[_0x80d5('0x8d')](_[_0x80d5('0x2e')](_0x5ee5fe,'TeamId'),function(_0x2617d3){return _[_0x80d5('0x30')](_0x15155e,_0x2617d3);});if(_0x4efedf){return _0xc0b34a['id'];}}}));}}return BPromise[_0x80d5('0x8e')](_0x108fdc)['then'](function(_0x183366){_0x2ad487=_(_0x2ad487)[_0x80d5('0x8f')](_0x183366)[_0x80d5('0x90')]()['value']();return db[_0x80d5('0x51')][_0x80d5('0x31')]({'where':{'id':_0x21ee62[_0x80d5('0x50')]['id']}})[_0x80d5('0x26')](function(_0x7b22a2){return db[_0x80d5('0x76')][_0x80d5('0x91')](function(_0x38c5e0){return _0x7b22a2['removeTeams'](_0x21ee62[_0x80d5('0x3e')][_0x80d5('0x7f')],{'transaction':_0x38c5e0})[_0x80d5('0x26')](function(){if(!_['isEmpty'](_0x2ad487)){return _0x7b22a2[_0x80d5('0x92')](_0x2ad487,{'transaction':_0x38c5e0})[_0x80d5('0x26')](function(){return db[_0x80d5('0x93')][_0x80d5('0x35')]({'where':{'VoiceQueueId':_0x21ee62[_0x80d5('0x50')]['id'],'UserId':_0x2ad487},'transaction':_0x38c5e0});});}})[_0x80d5('0x26')](function(){_0x2ad487[_0x80d5('0x74')](function(_0x40a877){socket[_0x80d5('0x7d')]('userVoiceQueue:remove',{'UserId':_0x40a877,'VoiceQueueId':_0x7b22a2['id']});});});});});});})['then'](respondWithStatusCode(_0x39c412,null))[_0x80d5('0x4e')](handleError(_0x39c412,null));};exports[_0x80d5('0x94')]=function(_0x3c9095,_0x48ff2a,_0x3c7666){var _0x294c0e,_0x5401d7;return db[_0x80d5('0x51')][_0x80d5('0x31')]({'where':{'id':_0x3c9095['params']['id']}})[_0x80d5('0x26')](handleEntityNotFound(_0x48ff2a,null))['then'](function(_0x26b8d9){if(_0x26b8d9){_0x5401d7=_0x26b8d9;return _0x26b8d9[_0x80d5('0x94')](_0x3c9095['body']['ids'],_[_0x80d5('0x5d')](_0x3c9095[_0x80d5('0x55')],['ids','id'])||{})['spread'](function(_0x137e5b){for(var _0x392b7b=0x0;_0x392b7b<_0x3c9095[_0x80d5('0x55')][_0x80d5('0x7f')][_0x80d5('0x43')];_0x392b7b+=0x1){socket['emit'](_0x80d5('0x7e'),{'UserId':Number(_0x3c9095[_0x80d5('0x55')][_0x80d5('0x7f')][_0x392b7b]),'VoiceQueueId':Number(_0x3c9095['params']['id'])});}return _0x137e5b;});}})[_0x80d5('0x26')](function(_0x25b3eb){_0x294c0e=_0x25b3eb||[];if(_0x5401d7){return db[_0x80d5('0x70')]['findAll']({'where':{'id':_0x3c9095['body'][_0x80d5('0x7f')]},'attributes':['id',_0x80d5('0x33'),_0x80d5('0x72'),_0x80d5('0x7c'),_0x80d5('0x73')],'raw':!![]});}})[_0x80d5('0x26')](function(_0x5b2c4e){if(!_[_0x80d5('0x95')](_0x5b2c4e)){var _0xf0fe84=[];for(var _0x3648dc=0x0;_0x3648dc<_0x5b2c4e[_0x80d5('0x43')];_0x3648dc++){if(_0x5b2c4e[_0x3648dc][_0x80d5('0x72')]){_0xf0fe84[_0x80d5('0x8a')](db[_0x80d5('0x93')]['upsert']({'membername':_0x5b2c4e[_0x3648dc][_0x80d5('0x33')],'UserId':_0x5b2c4e[_0x3648dc]['id'],'queue_name':_0x5401d7['name'],'VoiceQueueId':_0x5401d7['id'],'interface':_[_0x80d5('0x96')](_0x5b2c4e[_0x3648dc][_0x80d5('0x73')])?util['format'](_0x80d5('0x7b'),_0x5b2c4e[_0x3648dc]['name']):_0x5b2c4e[_0x3648dc][_0x80d5('0x73')],'paused':_0x5b2c4e[_0x3648dc][_0x80d5('0x7c')]||![],'penalty':_0x3c9095[_0x80d5('0x55')]['penalty']||0x0}));}}return BPromise['all'](_0xf0fe84);}})[_0x80d5('0x26')](function(){return _0x294c0e;})[_0x80d5('0x26')](respondWithResult(_0x48ff2a,null))['catch'](handleError(_0x48ff2a,null));};exports[_0x80d5('0x92')]=function(_0x373ad2,_0xa031ac,_0x595dd0){return db[_0x80d5('0x51')][_0x80d5('0x31')]({'where':{'id':_0x373ad2[_0x80d5('0x50')]['id']}})['then'](handleEntityNotFound(_0xa031ac,null))['then'](function(_0x2847d9){if(_0x2847d9){return _0x2847d9[_0x80d5('0x92')](_0x373ad2['query'][_0x80d5('0x7f')])[_0x80d5('0x26')](function(){if(_['isArray'](_0x373ad2['query']['ids'])){for(var _0x2dcab7=0x0;_0x2dcab7<_0x373ad2[_0x80d5('0x3e')][_0x80d5('0x7f')][_0x80d5('0x43')];_0x2dcab7+=0x1){socket[_0x80d5('0x7d')](_0x80d5('0x97'),{'UserId':Number(_0x373ad2[_0x80d5('0x3e')][_0x80d5('0x7f')][_0x2dcab7]),'VoiceQueueId':Number(_0x373ad2[_0x80d5('0x50')]['id'])});}}else{socket[_0x80d5('0x7d')](_0x80d5('0x97'),{'UserId':Number(_0x373ad2[_0x80d5('0x3e')][_0x80d5('0x7f')]),'VoiceQueueId':Number(_0x373ad2[_0x80d5('0x50')]['id'])});}});}})[_0x80d5('0x26')](function(_0x107964){return db[_0x80d5('0x93')][_0x80d5('0x35')]({'where':{'VoiceQueueId':_0x373ad2[_0x80d5('0x50')]['id'],'UserId':_0x373ad2[_0x80d5('0x3e')][_0x80d5('0x7f')]}})[_0x80d5('0x26')](function(){return _0x107964;});})['then'](respondWithStatusCode(_0xa031ac,null))[_0x80d5('0x4e')](handleError(_0xa031ac,null));};exports[_0x80d5('0x98')]=function(_0xaf690,_0x241a4e,_0x20785d){var _0x3c9aa1={};var _0x1a0ce3={};var _0x2b9a40;var _0x5cd680;return db[_0x80d5('0x51')][_0x80d5('0x62')]({'where':{'id':_0xaf690[_0x80d5('0x50')]['id']}})[_0x80d5('0x26')](handleEntityNotFound(_0x241a4e,null))[_0x80d5('0x26')](function(_0x55a7e1){if(_0x55a7e1){_0x2b9a40=_0x55a7e1;_0x1a0ce3[_0x80d5('0x3d')]=_[_0x80d5('0x3f')](db['User']['rawAttributes']);_0x1a0ce3['query']=_[_0x80d5('0x3f')](_0xaf690['query']);_0x1a0ce3[_0x80d5('0x40')]=_[_0x80d5('0x52')](_0x1a0ce3[_0x80d5('0x3d')],_0x1a0ce3[_0x80d5('0x3e')]);_0x3c9aa1[_0x80d5('0x42')]=_[_0x80d5('0x52')](_0x1a0ce3['model'],qs[_0x80d5('0x41')](_0xaf690[_0x80d5('0x3e')][_0x80d5('0x41')]));_0x3c9aa1[_0x80d5('0x42')]=_0x3c9aa1[_0x80d5('0x42')][_0x80d5('0x43')]?_0x3c9aa1[_0x80d5('0x42')]:_0x1a0ce3['model'];_0x3c9aa1[_0x80d5('0x46')]=qs['sort'](_0xaf690[_0x80d5('0x3e')][_0x80d5('0x47')]);_0x3c9aa1[_0x80d5('0x48')]=qs[_0x80d5('0x40')](_['pick'](_0xaf690[_0x80d5('0x3e')],_0x1a0ce3[_0x80d5('0x40')]));if(_0xaf690[_0x80d5('0x3e')]['filter']){_0x3c9aa1[_0x80d5('0x48')]=_[_0x80d5('0x4a')](_0x3c9aa1[_0x80d5('0x48')],{'$or':_[_0x80d5('0x2e')](_0x3c9aa1['attributes'],function(_0x46b9bd){var _0x5d194d={};_0x5d194d[_0x46b9bd]={'$like':'%'+_0xaf690[_0x80d5('0x3e')][_0x80d5('0x2c')]+'%'};return _0x5d194d;})});}_0x3c9aa1=_[_0x80d5('0x4a')]({},_0x3c9aa1,_0xaf690[_0x80d5('0x53')]);return _0x2b9a40[_0x80d5('0x98')](_0x3c9aa1);}})[_0x80d5('0x26')](function(_0x19bb8b){if(_0x19bb8b){_0x5cd680=_0x19bb8b['length'];if(!_0xaf690[_0x80d5('0x3e')][_0x80d5('0x44')](_0x80d5('0x64'))){_0x3c9aa1[_0x80d5('0x45')]=qs[_0x80d5('0x45')](_0xaf690[_0x80d5('0x3e')][_0x80d5('0x45')]);_0x3c9aa1[_0x80d5('0x1e')]=qs[_0x80d5('0x1e')](_0xaf690['query'][_0x80d5('0x1e')]);}return _0x2b9a40[_0x80d5('0x98')](_0x3c9aa1);}})[_0x80d5('0x26')](function(_0x5a788f){if(_0x5a788f){return _0x5a788f?{'count':_0x5cd680,'rows':_0x5a788f}:null;}})[_0x80d5('0x26')](respondWithResult(_0x241a4e,null))['catch'](handleError(_0x241a4e,null));};exports[_0x80d5('0x99')]=function(_0x41c83d,_0x54f122,_0x2ccb72){var _0x7ba5d4={};var _0x3202e7={};var _0x4d0ec0;var _0x263a4b;return db[_0x80d5('0x51')]['findOne']({'where':{'id':_0x41c83d[_0x80d5('0x50')]['id']}})[_0x80d5('0x26')](handleEntityNotFound(_0x54f122,null))['then'](function(_0x470896){if(_0x470896){_0x4d0ec0=_0x470896;_0x3202e7['model']=_[_0x80d5('0x3f')](db[_0x80d5('0x93')][_0x80d5('0x3a')]);_0x3202e7[_0x80d5('0x3e')]=_[_0x80d5('0x3f')](_0x41c83d['query']);_0x3202e7[_0x80d5('0x40')]=_[_0x80d5('0x52')](_0x3202e7[_0x80d5('0x3d')],_0x3202e7[_0x80d5('0x3e')]);_0x7ba5d4['attributes']=_['intersection'](_0x3202e7[_0x80d5('0x3d')],qs[_0x80d5('0x41')](_0x41c83d[_0x80d5('0x3e')][_0x80d5('0x41')]));_0x7ba5d4['attributes']=_0x7ba5d4['attributes'][_0x80d5('0x43')]?_0x7ba5d4['attributes']:_0x3202e7['model'];_0x7ba5d4[_0x80d5('0x46')]=qs[_0x80d5('0x47')](_0x41c83d['query'][_0x80d5('0x47')]);_0x7ba5d4[_0x80d5('0x48')]=qs[_0x80d5('0x40')](_['pick'](_0x41c83d[_0x80d5('0x3e')],_0x3202e7['filters']));if(_0x41c83d[_0x80d5('0x3e')]['filter']){_0x7ba5d4[_0x80d5('0x48')]=_['merge'](_0x7ba5d4[_0x80d5('0x48')],{'$or':_[_0x80d5('0x2e')](_0x7ba5d4['attributes'],function(_0x3f7831){var _0x21538c={};_0x21538c[_0x3f7831]={'$like':'%'+_0x41c83d[_0x80d5('0x3e')][_0x80d5('0x2c')]+'%'};return _0x21538c;})});}_0x7ba5d4=_[_0x80d5('0x4a')]({},_0x7ba5d4,_0x41c83d['options']);return _0x4d0ec0['getMembers'](_0x7ba5d4);}})[_0x80d5('0x26')](function(_0x2e9879){if(_0x2e9879){_0x263a4b=_0x2e9879[_0x80d5('0x43')];if(!_0x41c83d[_0x80d5('0x3e')][_0x80d5('0x44')](_0x80d5('0x64'))){_0x7ba5d4['limit']=qs[_0x80d5('0x45')](_0x41c83d['query']['limit']);_0x7ba5d4[_0x80d5('0x1e')]=qs[_0x80d5('0x1e')](_0x41c83d[_0x80d5('0x3e')][_0x80d5('0x1e')]);}return _0x4d0ec0[_0x80d5('0x99')](_0x7ba5d4);}})[_0x80d5('0x26')](function(_0x3c2c78){return _0x3c2c78?{'count':_0x263a4b,'rows':_0x3c2c78}:null;})[_0x80d5('0x26')](respondWithResult(_0x54f122,null))[_0x80d5('0x4e')](handleError(_0x54f122,null));};exports['getLists']=function(_0x614175,_0x330df0,_0x474706){var _0x1406c6={};var _0x139e15={};var _0xd7c2bb;var _0xf8299e;return db[_0x80d5('0x51')][_0x80d5('0x62')]({'where':{'id':_0x614175[_0x80d5('0x50')]['id']}})['then'](handleEntityNotFound(_0x330df0,null))[_0x80d5('0x26')](function(_0x129062){if(_0x129062){_0xd7c2bb=_0x129062;_0x139e15[_0x80d5('0x3d')]=_[_0x80d5('0x3f')](db[_0x80d5('0x9a')][_0x80d5('0x3a')]);_0x139e15[_0x80d5('0x3e')]=_[_0x80d5('0x3f')](_0x614175[_0x80d5('0x3e')]);_0x139e15[_0x80d5('0x40')]=_[_0x80d5('0x52')](_0x139e15[_0x80d5('0x3d')],_0x139e15[_0x80d5('0x3e')]);_0x1406c6[_0x80d5('0x42')]=_[_0x80d5('0x52')](_0x139e15[_0x80d5('0x3d')],qs[_0x80d5('0x41')](_0x614175[_0x80d5('0x3e')][_0x80d5('0x41')]));_0x1406c6[_0x80d5('0x42')]=_0x1406c6['attributes'][_0x80d5('0x43')]?_0x1406c6['attributes']:_0x139e15[_0x80d5('0x3d')];_0x1406c6[_0x80d5('0x46')]=qs[_0x80d5('0x47')](_0x614175[_0x80d5('0x3e')]['sort']);_0x1406c6[_0x80d5('0x48')]=qs[_0x80d5('0x40')](_['pick'](_0x614175[_0x80d5('0x3e')],_0x139e15[_0x80d5('0x40')]));if(_0x614175[_0x80d5('0x3e')][_0x80d5('0x2c')]){_0x1406c6[_0x80d5('0x48')]=_[_0x80d5('0x4a')](_0x1406c6[_0x80d5('0x48')],{'$or':_[_0x80d5('0x2e')](_0x1406c6[_0x80d5('0x42')],function(_0x466c67){var _0x152d04={};_0x152d04[_0x466c67]={'$like':'%'+_0x614175[_0x80d5('0x3e')]['filter']+'%'};return _0x152d04;})});}_0x1406c6=_[_0x80d5('0x4a')]({},_0x1406c6,_0x614175['options']);return _0xd7c2bb['getLists'](_0x1406c6);}})['then'](function(_0x600ff2){if(_0x600ff2){_0xf8299e=_0x600ff2[_0x80d5('0x43')];if(!_0x614175[_0x80d5('0x3e')]['hasOwnProperty']('nolimit')){_0x1406c6['limit']=qs['limit'](_0x614175[_0x80d5('0x3e')][_0x80d5('0x45')]);_0x1406c6[_0x80d5('0x1e')]=qs[_0x80d5('0x1e')](_0x614175[_0x80d5('0x3e')][_0x80d5('0x1e')]);}return _0xd7c2bb[_0x80d5('0x9b')](_0x1406c6);}})[_0x80d5('0x26')](function(_0x3c446c){if(_0x3c446c){return _0x3c446c?{'count':_0xf8299e,'rows':_0x3c446c}:null;}})['then'](respondWithResult(_0x330df0,null))['catch'](handleError(_0x330df0,null));};exports[_0x80d5('0x9c')]=function(_0x2d5861,_0x6a03a0,_0x307e0b){var _0x4e6483,_0xba8913;return db[_0x80d5('0x51')][_0x80d5('0x31')]({'where':{'id':_0x2d5861[_0x80d5('0x50')]['id']}})[_0x80d5('0x26')](handleEntityNotFound(_0x6a03a0,null))['then'](function(_0x2866ec){if(_0x2866ec){_0xba8913=_0x2866ec;return _0x2866ec['addLists'](_0x2d5861[_0x80d5('0x55')][_0x80d5('0x7f')],_[_0x80d5('0x5d')](_0x2d5861['body'],[_0x80d5('0x7f'),'id'])||{});}return null;})[_0x80d5('0x9d')](function(_0x156db9){var _0x482a40;_0x4e6483=_0x156db9||[];var _0x2b25c8=[];if(_0x156db9){for(var _0x129995=0x0;_0x129995<_0x156db9[_0x80d5('0x43')];_0x129995+=0x1){var _0x40d1b7=_0x156db9[_0x129995][_0x80d5('0x27')]({'plain':!![]});_0xba8913[_0x80d5('0x9e')]=_0x2d5861[_0x80d5('0x55')][_0x80d5('0x9e')]?_0x2d5861[_0x80d5('0x55')][_0x80d5('0x9e')]:_0xba8913[_0x80d5('0x9e')];switch(_0xba8913[_0x80d5('0x9e')]){case'always':_0x482a40=squel[_0x80d5('0x9f')]()[_0x80d5('0xa0')](_0x80d5('0xa1'))[_0x80d5('0xa2')](['phone',_0x80d5('0xa3'),_0x80d5('0xa4'),_0x80d5('0xa5'),_0x80d5('0x66'),_0x80d5('0x5f'),_0x80d5('0x5e')],squel['select']()[_0x80d5('0x81')](_0x80d5('0xa6'),_0x80d5('0xa6'))[_0x80d5('0x81')](_0x80d5('0xa7'),_0x80d5('0xa3'))[_0x80d5('0x81')]('id',_0x80d5('0xa4'))[_0x80d5('0x81')](_0x40d1b7[_0x80d5('0xa8')][_0x80d5('0x8b')](),'ListId')[_0x80d5('0x81')](_0x2d5861[_0x80d5('0x50')]['id'][_0x80d5('0x8b')](),'VoiceQueueId')[_0x80d5('0x81')](_0x80d5('0xa7'),_0x80d5('0x5f'))[_0x80d5('0x81')]('NOW()',_0x80d5('0x5e'))['from'](_0x80d5('0xa9'))[_0x80d5('0x48')](_0x80d5('0xaa'))[_0x80d5('0x48')]('ListId\x20=\x20?',_0x40d1b7[_0x80d5('0xa8')][_0x80d5('0x8b')]())[_0x80d5('0x48')]('phone\x20IS\x20NOT\x20NULL')['where'](_0x80d5('0xab'),squel['select']()[_0x80d5('0x81')](_0x80d5('0xac'))[_0x80d5('0x83')](_0x80d5('0xad'))[_0x80d5('0x48')](_0x80d5('0x88'),_0x2d5861['params']['id'][_0x80d5('0x8b')]()))[_0x80d5('0x48')](_0x80d5('0xab'),squel['select']()['field']('COALESCE(phone,\x27\x27)')[_0x80d5('0x83')](_0x80d5('0xa1'))[_0x80d5('0x48')](_0x80d5('0x88'),_0x2d5861['params']['id'][_0x80d5('0x8b')]())))[_0x80d5('0x8b')]();break;case _0x80d5('0xae'):_0x482a40=squel[_0x80d5('0x9f')]()['into'](_0x80d5('0xa1'))[_0x80d5('0xa2')]([_0x80d5('0xa6'),_0x80d5('0xa3'),_0x80d5('0xa4'),_0x80d5('0xa5'),'VoiceQueueId','createdAt',_0x80d5('0x5e')],squel['select']()[_0x80d5('0x81')](_0x80d5('0xa6'),'phone')['field']('NOW()',_0x80d5('0xa3'))[_0x80d5('0x81')]('id',_0x80d5('0xa4'))[_0x80d5('0x81')](_0x40d1b7[_0x80d5('0xa8')][_0x80d5('0x8b')](),_0x80d5('0xa5'))['field'](_0x2d5861[_0x80d5('0x50')]['id'][_0x80d5('0x8b')](),_0x80d5('0x66'))['field'](_0x80d5('0xa7'),_0x80d5('0x5f'))[_0x80d5('0x81')](_0x80d5('0xa7'),_0x80d5('0x5e'))[_0x80d5('0x83')](_0x80d5('0xa9'))[_0x80d5('0x48')](_0x80d5('0xaa'))['where'](_0x80d5('0xaf'),_0x40d1b7[_0x80d5('0xa8')][_0x80d5('0x8b')]())[_0x80d5('0x48')](_0x80d5('0xb0'))[_0x80d5('0x48')](_0x80d5('0xab'),squel['select']()[_0x80d5('0x81')](_0x80d5('0xb1'))['from'](_0x80d5('0xa1'))[_0x80d5('0x48')](_0x80d5('0x88'),_0x2d5861['params']['id'][_0x80d5('0x8b')]())))[_0x80d5('0x8b')]();break;default:_0x482a40=squel[_0x80d5('0x9f')]()[_0x80d5('0xa0')](_0x80d5('0xa1'))['fromQuery']([_0x80d5('0xa6'),_0x80d5('0xa3'),_0x80d5('0xa4'),_0x80d5('0xa5'),_0x80d5('0x66'),'createdAt','updatedAt'],squel['select']()[_0x80d5('0x81')](_0x80d5('0xa6'),_0x80d5('0xa6'))[_0x80d5('0x81')](_0x80d5('0xa7'),'scheduledAt')[_0x80d5('0x81')]('id','ContactId')[_0x80d5('0x81')](_0x40d1b7[_0x80d5('0xa8')][_0x80d5('0x8b')](),_0x80d5('0xa5'))[_0x80d5('0x81')](_0x2d5861[_0x80d5('0x50')]['id'][_0x80d5('0x8b')](),_0x80d5('0x66'))[_0x80d5('0x81')](_0x80d5('0xa7'),_0x80d5('0x5f'))[_0x80d5('0x81')](_0x80d5('0xa7'),_0x80d5('0x5e'))[_0x80d5('0x83')](_0x80d5('0xa9'))['where'](_0x80d5('0xaa'))['where'](_0x80d5('0xaf'),_0x40d1b7[_0x80d5('0xa8')][_0x80d5('0x8b')]())[_0x80d5('0x48')](_0x80d5('0xb0')))[_0x80d5('0x8b')]();}_0x2b25c8[_0x80d5('0x8a')](db[_0x80d5('0x76')]['query'](_0x482a40));}return BPromise['all'](_0x2b25c8);}})[_0x80d5('0x26')](function(){return _0x4e6483;})[_0x80d5('0x26')](respondWithResult(_0x6a03a0,null))['catch'](handleError(_0x6a03a0,null));};exports['removeLists']=function(_0x38e188,_0x20ec44,_0x101717){return db[_0x80d5('0x51')][_0x80d5('0x31')]({'where':{'id':_0x38e188[_0x80d5('0x50')]['id']}})[_0x80d5('0x26')](handleEntityNotFound(_0x20ec44,null))['then'](function(_0x11443a){if(_0x11443a){return _0x11443a[_0x80d5('0xb2')](_0x38e188[_0x80d5('0x3e')][_0x80d5('0x7f')]);}})[_0x80d5('0x26')](function(_0x4f93d7){if(_0x4f93d7){return db['CmHopper'][_0x80d5('0x35')]({'where':{'ListId':_0x38e188[_0x80d5('0x3e')][_0x80d5('0x7f')],'VoiceQueueId':_0x38e188[_0x80d5('0x50')]['id']}})[_0x80d5('0x26')](function(){return _0x4f93d7;});}})['then'](respondWithStatusCode(_0x20ec44,null))[_0x80d5('0x4e')](handleError(_0x20ec44,null));};exports[_0x80d5('0xb3')]=function(_0x3a5435,_0x481827,_0xd12a60){var _0x220d8b={};var _0x1e00c4={};var _0xde7804;var _0x459d3c;return db[_0x80d5('0x51')]['findOne']({'where':{'id':_0x3a5435[_0x80d5('0x50')]['id']}})[_0x80d5('0x26')](handleEntityNotFound(_0x481827,null))[_0x80d5('0x26')](function(_0x2c9fff){if(_0x2c9fff){_0xde7804=_0x2c9fff;_0x1e00c4['model']=_[_0x80d5('0x3f')](db['CmList']['rawAttributes']);_0x1e00c4[_0x80d5('0x3e')]=_[_0x80d5('0x3f')](_0x3a5435[_0x80d5('0x3e')]);_0x1e00c4[_0x80d5('0x40')]=_[_0x80d5('0x52')](_0x1e00c4['model'],_0x1e00c4['query']);_0x220d8b[_0x80d5('0x42')]=_['intersection'](_0x1e00c4[_0x80d5('0x3d')],qs['fields'](_0x3a5435['query'][_0x80d5('0x41')]));_0x220d8b[_0x80d5('0x42')]=_0x220d8b[_0x80d5('0x42')][_0x80d5('0x43')]?_0x220d8b['attributes']:_0x1e00c4['model'];_0x220d8b['order']=qs[_0x80d5('0x47')](_0x3a5435[_0x80d5('0x3e')][_0x80d5('0x47')]);_0x220d8b[_0x80d5('0x48')]=qs[_0x80d5('0x40')](_[_0x80d5('0x65')](_0x3a5435[_0x80d5('0x3e')],_0x1e00c4[_0x80d5('0x40')]));if(_0x3a5435['query'][_0x80d5('0x2c')]){_0x220d8b[_0x80d5('0x48')]=_[_0x80d5('0x4a')](_0x220d8b[_0x80d5('0x48')],{'$or':_[_0x80d5('0x2e')](_0x220d8b[_0x80d5('0x42')],function(_0x4b604a){var _0x2ec49b={};_0x2ec49b[_0x4b604a]={'$like':'%'+_0x3a5435['query'][_0x80d5('0x2c')]+'%'};return _0x2ec49b;})});}_0x220d8b=_[_0x80d5('0x4a')]({},_0x220d8b,_0x3a5435[_0x80d5('0x53')]);return _0xde7804[_0x80d5('0xb3')](_0x220d8b);}})[_0x80d5('0x26')](function(_0x58b62b){if(_0x58b62b){_0x459d3c=_0x58b62b[_0x80d5('0x43')];if(!_0x3a5435['query'][_0x80d5('0x44')]('nolimit')){_0x220d8b[_0x80d5('0x45')]=qs['limit'](_0x3a5435[_0x80d5('0x3e')]['limit']);_0x220d8b[_0x80d5('0x1e')]=qs[_0x80d5('0x1e')](_0x3a5435[_0x80d5('0x3e')][_0x80d5('0x1e')]);}return _0xde7804[_0x80d5('0xb3')](_0x220d8b);}})[_0x80d5('0x26')](function(_0x55a4cf){if(_0x55a4cf){return _0x55a4cf?{'count':_0x459d3c,'rows':_0x55a4cf}:null;}})[_0x80d5('0x26')](respondWithResult(_0x481827,null))[_0x80d5('0x4e')](handleError(_0x481827,null));};exports['addBlackLists']=function(_0x1e75af,_0x2fed2e,_0x221bc8){var _0x30616d,_0x2bdbfb;return db[_0x80d5('0x51')][_0x80d5('0x31')]({'where':{'id':_0x1e75af[_0x80d5('0x50')]['id']}})[_0x80d5('0x26')](handleEntityNotFound(_0x2fed2e,null))[_0x80d5('0x26')](function(_0x23b5a3){if(_0x23b5a3){_0x2bdbfb=_0x23b5a3;return _0x23b5a3['addBlackLists'](_0x1e75af[_0x80d5('0x55')][_0x80d5('0x7f')],_[_0x80d5('0x5d')](_0x1e75af['body'],[_0x80d5('0x7f'),'id'])||{});}return null;})['spread'](function(_0x44ed12){var _0xc665df;_0x30616d=_0x44ed12||[];var _0x5e4a63=[];if(_0x44ed12){for(var _0x39e67b=0x0;_0x39e67b<_0x44ed12['length'];_0x39e67b+=0x1){var _0x48d6b9=_0x44ed12[_0x39e67b]['get']({'plain':!![]});_0xc665df=squel[_0x80d5('0x9f')]()[_0x80d5('0xa0')](_0x80d5('0xb4'))[_0x80d5('0xa2')]([_0x80d5('0xa6'),_0x80d5('0xa4'),'ListId','VoiceQueueId',_0x80d5('0x5f'),_0x80d5('0x5e')],squel[_0x80d5('0x80')]()[_0x80d5('0x81')]('phone',_0x80d5('0xa6'))[_0x80d5('0x81')]('id',_0x80d5('0xa4'))[_0x80d5('0x81')](_0x48d6b9[_0x80d5('0xa8')]['toString'](),_0x80d5('0xa5'))[_0x80d5('0x81')](_0x1e75af['params']['id'][_0x80d5('0x8b')](),_0x80d5('0x66'))[_0x80d5('0x81')](_0x80d5('0xa7'),_0x80d5('0x5f'))['field'](_0x80d5('0xa7'),_0x80d5('0x5e'))[_0x80d5('0x83')](_0x80d5('0xa9'))[_0x80d5('0x48')](_0x80d5('0xaa'))[_0x80d5('0x48')](_0x80d5('0xaf'),_0x48d6b9[_0x80d5('0xa8')][_0x80d5('0x8b')]())[_0x80d5('0x48')](_0x80d5('0xb0')))['toString']();_0x5e4a63[_0x80d5('0x8a')](db['sequelize'][_0x80d5('0x3e')](_0xc665df));}return BPromise['all'](_0x5e4a63);}})[_0x80d5('0x26')](function(){return _0x30616d;})[_0x80d5('0x26')](respondWithResult(_0x2fed2e,null))[_0x80d5('0x4e')](handleError(_0x2fed2e,null));};exports['removeBlackLists']=function(_0x9fbd6c,_0x1e3aa2,_0x887c0a){return db[_0x80d5('0x51')][_0x80d5('0x31')]({'where':{'id':_0x9fbd6c['params']['id']}})['then'](handleEntityNotFound(_0x1e3aa2,null))['then'](function(_0x13bca0){if(_0x13bca0){return _0x13bca0['removeBlackLists'](_0x9fbd6c[_0x80d5('0x3e')][_0x80d5('0x7f')]);}})[_0x80d5('0x26')](function(_0x2ef1a9){if(_0x2ef1a9){return db[_0x80d5('0x6b')]['destroy']({'where':{'ListId':_0x9fbd6c[_0x80d5('0x3e')][_0x80d5('0x7f')],'VoiceQueueId':_0x9fbd6c[_0x80d5('0x50')]['id']}})[_0x80d5('0x26')](function(){return _0x2ef1a9;});}})[_0x80d5('0x26')](respondWithStatusCode(_0x1e3aa2,null))[_0x80d5('0x4e')](handleError(_0x1e3aa2,null));};
\ No newline at end of file
index ce2461e..354acc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd12c=['events','setMaxListeners','save','update','emit'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xd12c,0x190));var _0xcd12=function(_0x487e48,_0x232219){_0x487e48=_0x487e48-0x0;var _0x934dbb=_0xd12c[_0x487e48];return _0x934dbb;};'use strict';var EventEmitter=require(_0xcd12('0x0'));var VoiceQueue=require('../../mysqldb')['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xcd12('0x1')](0x0);var events={'afterCreate':_0xcd12('0x2'),'afterUpdate':_0xcd12('0x3'),'afterDestroy':'remove'};function emitEvent(_0x19e5ec){return function(_0x18ad9a,_0x304588,_0x2c5ab3){VoiceQueueEvents[_0xcd12('0x4')](_0x19e5ec+':'+_0x18ad9a['id'],_0x18ad9a);VoiceQueueEvents['emit'](_0x19e5ec,_0x18ad9a);_0x2c5ab3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
+var _0x5e49=['hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x544097,_0x3968df){var _0x5ede34=function(_0x15e0a6){while(--_0x15e0a6){_0x544097['push'](_0x544097['shift']());}};_0x5ede34(++_0x3968df);}(_0x5e49,0x16e));var _0x95e4=function(_0x570664,_0x2f077b){_0x570664=_0x570664-0x0;var _0x86a2bf=_0x5e49[_0x570664];return _0x86a2bf;};'use strict';var EventEmitter=require(_0x95e4('0x0'));var VoiceQueue=require(_0x95e4('0x1'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x95e4('0x2')](0x0);var events={'afterCreate':_0x95e4('0x3'),'afterUpdate':_0x95e4('0x4'),'afterDestroy':'remove'};function emitEvent(_0xd5372c){return function(_0x2eeb98,_0x184aba,_0x3f61fb){VoiceQueueEvents['emit'](_0xd5372c+':'+_0x2eeb98['id'],_0x2eeb98);VoiceQueueEvents['emit'](_0xd5372c,_0x2eeb98);_0x3f61fb(null);};}for(var e in events){if(events[_0x95e4('0x5')](e)){var event=events[e];VoiceQueue[_0x95e4('0x6')](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
index f699e3a..f1b01d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0x5538d5,_0x190032){var _0x323b1a=function(_0x179caa){while(--_0x179caa){_0x5538d5['push'](_0x5538d5['shift']());}};_0x323b1a(++_0x190032);}(_0x008c,0x188));var _0xc008=function(_0x2b0397,_0x524af8){_0x2b0397=_0x2b0397-0x0;var _0x1a0ac9=_0x008c[_0x2b0397];return _0x1a0ac9;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('VoiceQueue',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0x417baa,_0x3923d0){var _0x42724f=function(_0x276146){while(--_0x276146){_0x417baa['push'](_0x417baa['shift']());}};_0x42724f(++_0x3923d0);}(_0x008c,0x188));var _0xc008=function(_0x3490c2,_0x548c5e){_0x3490c2=_0x3490c2-0x0;var _0x891d41=_0x008c[_0x3490c2];return _0x891d41;};'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 06286d9..e8e5b8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ff9=['client','defaults','redis','localhost','socket.io-emitter','./voiceQueue.socket','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','VoiceQueue','options','raw','where','attributes','limit','map','include','model','GetVoiceQueue','debug','ShowVoiceQueue','find','lodash','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise'];(function(_0x44156a,_0x50f988){var _0x1ca080=function(_0x223241){while(--_0x223241){_0x44156a['push'](_0x44156a['shift']());}};_0x1ca080(++_0x50f988);}(_0x0ff9,0x16b));var _0x90ff=function(_0x487341,_0x32de05){_0x487341=_0x487341-0x0;var _0x28f233=_0x0ff9[_0x487341];return _0x28f233;};'use strict';var _=require(_0x90ff('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x90ff('0x1'));var fs=require('fs');var Redis=require(_0x90ff('0x2'));var db=require(_0x90ff('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x90ff('0x4'))('rpc');var config=require(_0x90ff('0x5'));var jayson=require(_0x90ff('0x6'));var client=jayson[_0x90ff('0x7')]['http']({'port':0x232a});config['redis']=_[_0x90ff('0x8')](config[_0x90ff('0x9')],{'host':_0x90ff('0xa'),'port':0x18eb});var socket=require(_0x90ff('0xb'))(new Redis(config[_0x90ff('0x9')]));require(_0x90ff('0xc'))['register'](socket);function respondWithRpcPromise(_0x2d36b1,_0xbf20f2,_0x580486){return new BPromise(function(_0x2a3551,_0x2028fb){return client[_0x90ff('0xd')](_0x2d36b1,_0x580486)[_0x90ff('0xe')](function(_0x3541b7){logger[_0x90ff('0xf')](_0x90ff('0x10'),_0xbf20f2,_0x90ff('0x11'));logger['debug'](_0x90ff('0x12'),_0xbf20f2,_0x90ff('0x11'),JSON[_0x90ff('0x13')](_0x3541b7));if(_0x3541b7[_0x90ff('0x14')]){if(_0x3541b7[_0x90ff('0x14')][_0x90ff('0x15')]===0x1f4){logger['error'](_0x90ff('0x10'),_0xbf20f2,_0x3541b7[_0x90ff('0x14')]['message']);return _0x2028fb(_0x3541b7[_0x90ff('0x14')][_0x90ff('0x16')]);}logger[_0x90ff('0x14')](_0x90ff('0x10'),_0xbf20f2,_0x3541b7[_0x90ff('0x14')][_0x90ff('0x16')]);return _0x2a3551(_0x3541b7[_0x90ff('0x14')][_0x90ff('0x16')]);}else{logger[_0x90ff('0xf')]('VoiceQueue,\x20%s,\x20%s',_0xbf20f2,_0x90ff('0x11'));_0x2a3551(_0x3541b7['result']['message']);}})[_0x90ff('0x17')](function(_0x37de6f){logger[_0x90ff('0x14')](_0x90ff('0x10'),_0xbf20f2,_0x37de6f);_0x2028fb(_0x37de6f);});});}exports['GetVoiceQueue']=function(_0x8e3e8){var _0x1013df=this;return new Promise(function(_0xe95375,_0x1d5555){return db[_0x90ff('0x18')]['findAll']({'raw':_0x8e3e8[_0x90ff('0x19')]?_0x8e3e8['options'][_0x90ff('0x1a')]===undefined?!![]:![]:!![],'where':_0x8e3e8[_0x90ff('0x19')]?_0x8e3e8[_0x90ff('0x19')][_0x90ff('0x1b')]||null:null,'attributes':_0x8e3e8['options']?_0x8e3e8[_0x90ff('0x19')][_0x90ff('0x1c')]||null:null,'limit':_0x8e3e8[_0x90ff('0x19')]?_0x8e3e8[_0x90ff('0x19')][_0x90ff('0x1d')]||null:null,'include':_0x8e3e8[_0x90ff('0x19')]?_0x8e3e8[_0x90ff('0x19')]['include']?_[_0x90ff('0x1e')](_0x8e3e8['options'][_0x90ff('0x1f')],function(_0x1e35ae){return{'model':db[_0x1e35ae['model']],'as':_0x1e35ae['as'],'attributes':_0x1e35ae[_0x90ff('0x1c')],'include':_0x1e35ae[_0x90ff('0x1f')]?_[_0x90ff('0x1e')](_0x1e35ae['include'],function(_0x15b253){return{'model':db[_0x15b253[_0x90ff('0x20')]],'as':_0x15b253['as'],'attributes':_0x15b253[_0x90ff('0x1c')],'include':_0x15b253['include']?_[_0x90ff('0x1e')](_0x15b253['include'],function(_0x6bc28a){return{'model':db[_0x6bc28a[_0x90ff('0x20')]],'as':_0x6bc28a['as'],'attributes':_0x6bc28a[_0x90ff('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x90ff('0xe')](function(_0x4ad227){logger['info'](_0x90ff('0x21'),_0x8e3e8);logger[_0x90ff('0x22')](_0x90ff('0x21'),_0x8e3e8,JSON[_0x90ff('0x13')](_0x4ad227));_0xe95375(_0x4ad227);})[_0x90ff('0x17')](function(_0x2f12b0){logger[_0x90ff('0x14')](_0x90ff('0x21'),_0x2f12b0[_0x90ff('0x16')],_0x8e3e8);_0x1d5555(_0x1013df['error'](0x1f4,_0x2f12b0[_0x90ff('0x16')]));});});};exports[_0x90ff('0x23')]=function(_0x27480f){var _0x4aa44a=this;return new Promise(function(_0x47c3d9,_0x1e4654){return db[_0x90ff('0x18')][_0x90ff('0x24')]({'raw':_0x27480f[_0x90ff('0x19')]?_0x27480f[_0x90ff('0x19')][_0x90ff('0x1a')]===undefined?!![]:![]:!![],'where':_0x27480f['options']?_0x27480f[_0x90ff('0x19')][_0x90ff('0x1b')]||null:null,'attributes':_0x27480f[_0x90ff('0x19')]?_0x27480f[_0x90ff('0x19')][_0x90ff('0x1c')]||null:null,'include':_0x27480f[_0x90ff('0x19')]?_0x27480f[_0x90ff('0x19')][_0x90ff('0x1f')]?_[_0x90ff('0x1e')](_0x27480f[_0x90ff('0x19')][_0x90ff('0x1f')],function(_0x37d817){return{'model':db[_0x37d817[_0x90ff('0x20')]],'as':_0x37d817['as'],'attributes':_0x37d817[_0x90ff('0x1c')],'include':_0x37d817['include']?_['map'](_0x37d817['include'],function(_0x5deb33){return{'model':db[_0x5deb33[_0x90ff('0x20')]],'as':_0x5deb33['as'],'attributes':_0x5deb33[_0x90ff('0x1c')],'include':_0x5deb33['include']?_[_0x90ff('0x1e')](_0x5deb33['include'],function(_0x13c7a0){return{'model':db[_0x13c7a0[_0x90ff('0x20')]],'as':_0x13c7a0['as'],'attributes':_0x13c7a0[_0x90ff('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x90ff('0xe')](function(_0x49cb75){logger['info']('ShowVoiceQueue',_0x27480f);logger[_0x90ff('0x22')](_0x90ff('0x23'),_0x27480f,JSON[_0x90ff('0x13')](_0x49cb75));_0x47c3d9(_0x49cb75);})[_0x90ff('0x17')](function(_0x3ca903){logger['error']('ShowVoiceQueue',_0x3ca903['message'],_0x27480f);_0x1e4654(_0x4aa44a[_0x90ff('0x14')](0x1f4,_0x3ca903[_0x90ff('0x16')]));});});};
\ No newline at end of file
+var _0x0e7d=['debug','ShowVoiceQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','./voiceQueue.socket','request','then','info','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueue,\x20%s,\x20%s','message','result','catch','VoiceQueue','options','raw','where','limit','include','map','model','attributes','GetVoiceQueue'];(function(_0x351255,_0x48d3be){var _0x47af1f=function(_0x1d5ff0){while(--_0x1d5ff0){_0x351255['push'](_0x351255['shift']());}};_0x47af1f(++_0x48d3be);}(_0x0e7d,0x19c));var _0xd0e7=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x0e7d[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0xd0e7('0x0'));var util=require(_0xd0e7('0x1'));var moment=require(_0xd0e7('0x2'));var BPromise=require(_0xd0e7('0x3'));var rs=require(_0xd0e7('0x4'));var fs=require('fs');var Redis=require(_0xd0e7('0x5'));var db=require(_0xd0e7('0x6'))['db'];var utils=require(_0xd0e7('0x7'));var logger=require(_0xd0e7('0x8'))(_0xd0e7('0x9'));var config=require(_0xd0e7('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xd0e7('0xb')][_0xd0e7('0xc')]({'port':0x232a});config[_0xd0e7('0xd')]=_[_0xd0e7('0xe')](config[_0xd0e7('0xd')],{'host':_0xd0e7('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd0e7('0xd')]));require(_0xd0e7('0x10'))['register'](socket);function respondWithRpcPromise(_0x356e32,_0x314209,_0x288d1e){return new BPromise(function(_0x2025a4,_0x320b47){return client[_0xd0e7('0x11')](_0x356e32,_0x288d1e)[_0xd0e7('0x12')](function(_0x209f86){logger[_0xd0e7('0x13')]('VoiceQueue,\x20%s,\x20%s',_0x314209,_0xd0e7('0x14'));logger['debug'](_0xd0e7('0x15'),_0x314209,_0xd0e7('0x14'),JSON[_0xd0e7('0x16')](_0x209f86));if(_0x209f86[_0xd0e7('0x17')]){if(_0x209f86[_0xd0e7('0x17')][_0xd0e7('0x18')]===0x1f4){logger['error'](_0xd0e7('0x19'),_0x314209,_0x209f86[_0xd0e7('0x17')][_0xd0e7('0x1a')]);return _0x320b47(_0x209f86[_0xd0e7('0x17')][_0xd0e7('0x1a')]);}logger[_0xd0e7('0x17')]('VoiceQueue,\x20%s,\x20%s',_0x314209,_0x209f86['error'][_0xd0e7('0x1a')]);return _0x2025a4(_0x209f86[_0xd0e7('0x17')][_0xd0e7('0x1a')]);}else{logger[_0xd0e7('0x13')](_0xd0e7('0x19'),_0x314209,_0xd0e7('0x14'));_0x2025a4(_0x209f86[_0xd0e7('0x1b')][_0xd0e7('0x1a')]);}})[_0xd0e7('0x1c')](function(_0xd90060){logger[_0xd0e7('0x17')](_0xd0e7('0x19'),_0x314209,_0xd90060);_0x320b47(_0xd90060);});});}exports['GetVoiceQueue']=function(_0x58cc04){var _0x29f69f=this;return new Promise(function(_0x45ce96,_0xced7bd){return db[_0xd0e7('0x1d')]['findAll']({'raw':_0x58cc04[_0xd0e7('0x1e')]?_0x58cc04[_0xd0e7('0x1e')][_0xd0e7('0x1f')]===undefined?!![]:![]:!![],'where':_0x58cc04[_0xd0e7('0x1e')]?_0x58cc04['options'][_0xd0e7('0x20')]||null:null,'attributes':_0x58cc04[_0xd0e7('0x1e')]?_0x58cc04['options']['attributes']||null:null,'limit':_0x58cc04[_0xd0e7('0x1e')]?_0x58cc04[_0xd0e7('0x1e')][_0xd0e7('0x21')]||null:null,'include':_0x58cc04[_0xd0e7('0x1e')]?_0x58cc04['options'][_0xd0e7('0x22')]?_[_0xd0e7('0x23')](_0x58cc04[_0xd0e7('0x1e')][_0xd0e7('0x22')],function(_0x61bc1a){return{'model':db[_0x61bc1a[_0xd0e7('0x24')]],'as':_0x61bc1a['as'],'attributes':_0x61bc1a[_0xd0e7('0x25')],'include':_0x61bc1a[_0xd0e7('0x22')]?_[_0xd0e7('0x23')](_0x61bc1a[_0xd0e7('0x22')],function(_0x48d724){return{'model':db[_0x48d724[_0xd0e7('0x24')]],'as':_0x48d724['as'],'attributes':_0x48d724[_0xd0e7('0x25')],'include':_0x48d724[_0xd0e7('0x22')]?_[_0xd0e7('0x23')](_0x48d724[_0xd0e7('0x22')],function(_0x4d7f59){return{'model':db[_0x4d7f59['model']],'as':_0x4d7f59['as'],'attributes':_0x4d7f59[_0xd0e7('0x25')]};}):[]};}):[]};}):[]:[]})[_0xd0e7('0x12')](function(_0x1eec5a){logger[_0xd0e7('0x13')](_0xd0e7('0x26'),_0x58cc04);logger[_0xd0e7('0x27')](_0xd0e7('0x26'),_0x58cc04,JSON['stringify'](_0x1eec5a));_0x45ce96(_0x1eec5a);})[_0xd0e7('0x1c')](function(_0x1817e9){logger['error'](_0xd0e7('0x26'),_0x1817e9[_0xd0e7('0x1a')],_0x58cc04);_0xced7bd(_0x29f69f[_0xd0e7('0x17')](0x1f4,_0x1817e9[_0xd0e7('0x1a')]));});});};exports[_0xd0e7('0x28')]=function(_0x514323){var _0x4aff1e=this;return new Promise(function(_0x9d5c4a,_0x173bbf){return db['VoiceQueue']['find']({'raw':_0x514323[_0xd0e7('0x1e')]?_0x514323['options'][_0xd0e7('0x1f')]===undefined?!![]:![]:!![],'where':_0x514323[_0xd0e7('0x1e')]?_0x514323[_0xd0e7('0x1e')]['where']||null:null,'attributes':_0x514323['options']?_0x514323['options']['attributes']||null:null,'include':_0x514323['options']?_0x514323['options']['include']?_[_0xd0e7('0x23')](_0x514323[_0xd0e7('0x1e')][_0xd0e7('0x22')],function(_0x16bacb){return{'model':db[_0x16bacb[_0xd0e7('0x24')]],'as':_0x16bacb['as'],'attributes':_0x16bacb['attributes'],'include':_0x16bacb[_0xd0e7('0x22')]?_[_0xd0e7('0x23')](_0x16bacb[_0xd0e7('0x22')],function(_0xd2fc66){return{'model':db[_0xd2fc66[_0xd0e7('0x24')]],'as':_0xd2fc66['as'],'attributes':_0xd2fc66['attributes'],'include':_0xd2fc66[_0xd0e7('0x22')]?_[_0xd0e7('0x23')](_0xd2fc66[_0xd0e7('0x22')],function(_0x106f3e){return{'model':db[_0x106f3e[_0xd0e7('0x24')]],'as':_0x106f3e['as'],'attributes':_0x106f3e[_0xd0e7('0x25')]};}):[]};}):[]};}):[]:[]})[_0xd0e7('0x12')](function(_0x238686){logger[_0xd0e7('0x13')](_0xd0e7('0x28'),_0x514323);logger[_0xd0e7('0x27')](_0xd0e7('0x28'),_0x514323,JSON[_0xd0e7('0x16')](_0x238686));_0x9d5c4a(_0x238686);})[_0xd0e7('0x1c')](function(_0x419362){logger[_0xd0e7('0x17')]('ShowVoiceQueue',_0x419362['message'],_0x514323);_0x173bbf(_0x4aff1e[_0xd0e7('0x17')](0x1f4,_0x419362[_0xd0e7('0x1a')]));});});};
\ No newline at end of file
index 82b0264..50532c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a0a=['length','voiceQueue:','./voiceQueue.events','remove','emit','removeListener','register'];(function(_0x294c73,_0x3c2c24){var _0x214314=function(_0x37f452){while(--_0x37f452){_0x294c73['push'](_0x294c73['shift']());}};_0x214314(++_0x3c2c24);}(_0x3a0a,0x6b));var _0xa3a0=function(_0xae297a,_0x4fda67){_0xae297a=_0xae297a-0x0;var _0x1e5b1b=_0x3a0a[_0xae297a];return _0x1e5b1b;};'use strict';var VoiceQueueEvents=require(_0xa3a0('0x0'));var events=['save',_0xa3a0('0x1'),'update'];function createListener(_0x4affe1,_0x3ad03){return function(_0x1f6972){_0x3ad03[_0xa3a0('0x2')](_0x4affe1,_0x1f6972);};}function removeListener(_0x1f7ac1,_0x3014d0){return function(){VoiceQueueEvents[_0xa3a0('0x3')](_0x1f7ac1,_0x3014d0);};}exports[_0xa3a0('0x4')]=function(_0x2316d2){for(var _0xab660f=0x0,_0x2bfdb6=events[_0xa3a0('0x5')];_0xab660f<_0x2bfdb6;_0xab660f++){var _0x3585d2=events[_0xab660f];var _0x659486=createListener(_0xa3a0('0x6')+_0x3585d2,_0x2316d2);VoiceQueueEvents['on'](_0x3585d2,_0x659486);}};
\ No newline at end of file
+var _0xc998=['update','emit','register','length','voiceQueue:','save','remove'];(function(_0x4ef77b,_0x6a3df){var _0x58d1a6=function(_0x3b7e29){while(--_0x3b7e29){_0x4ef77b['push'](_0x4ef77b['shift']());}};_0x58d1a6(++_0x6a3df);}(_0xc998,0x8a));var _0x8c99=function(_0x167b81,_0x436b7e){_0x167b81=_0x167b81-0x0;var _0x937e19=_0xc998[_0x167b81];return _0x937e19;};'use strict';var VoiceQueueEvents=require('./voiceQueue.events');var events=[_0x8c99('0x0'),_0x8c99('0x1'),_0x8c99('0x2')];function createListener(_0x366778,_0x3a43be){return function(_0x1c2b41){_0x3a43be[_0x8c99('0x3')](_0x366778,_0x1c2b41);};}function removeListener(_0x54f046,_0x5b623c){return function(){VoiceQueueEvents['removeListener'](_0x54f046,_0x5b623c);};}exports[_0x8c99('0x4')]=function(_0x1847de){for(var _0x3c68b2=0x0,_0x5539e1=events[_0x8c99('0x5')];_0x3c68b2<_0x5539e1;_0x3c68b2++){var _0x16a36e=events[_0x3c68b2];var _0x4ca3fb=createListener(_0x8c99('0x6')+_0x16a36e,_0x1847de);VoiceQueueEvents['on'](_0x16a36e,_0x4ca3fb);}};
\ No newline at end of file
index fec4676..0890c25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2f4=['show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueueReport.controller','isAuthenticated','index','get','/describe','getVoiceQueuesReport','/:id'];(function(_0x2f3869,_0x1da40b){var _0x5a8831=function(_0x2aa2ba){while(--_0x2aa2ba){_0x2f3869['push'](_0x2f3869['shift']());}};_0x5a8831(++_0x1da40b);}(_0xb2f4,0xb7));var _0x4b2f=function(_0x1f98c0,_0x4ddddf){_0x1f98c0=_0x1f98c0-0x0;var _0x1cc656=_0xb2f4[_0x1f98c0];return _0x1cc656;};'use strict';var multer=require(_0x4b2f('0x0'));var util=require(_0x4b2f('0x1'));var path=require(_0x4b2f('0x2'));var timeout=require(_0x4b2f('0x3'));var express=require('express');var router=express[_0x4b2f('0x4')]();var fs_extra=require(_0x4b2f('0x5'));var auth=require(_0x4b2f('0x6'));var interaction=require(_0x4b2f('0x7'));var config=require('../../config/environment');var controller=require(_0x4b2f('0x8'));router['get']('/',auth[_0x4b2f('0x9')](),controller[_0x4b2f('0xa')]);router[_0x4b2f('0xb')](_0x4b2f('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x4b2f('0xb')]('/index',auth['isAuthenticated'](),controller[_0x4b2f('0xd')]);router[_0x4b2f('0xb')](_0x4b2f('0xe'),auth[_0x4b2f('0x9')](),controller[_0x4b2f('0xf')]);router[_0x4b2f('0x10')]('/',auth[_0x4b2f('0x9')](),controller[_0x4b2f('0x11')]);router['put'](_0x4b2f('0xe'),auth[_0x4b2f('0x9')](),controller[_0x4b2f('0x12')]);router[_0x4b2f('0x13')](_0x4b2f('0xe'),auth[_0x4b2f('0x9')](),controller[_0x4b2f('0x14')]);module[_0x4b2f('0x15')]=router;
\ No newline at end of file
+var _0xca5f=['post','create','put','update','delete','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x16c8db,_0x5701b3){var _0x4d963a=function(_0xd46629){while(--_0xd46629){_0x16c8db['push'](_0x16c8db['shift']());}};_0x4d963a(++_0x5701b3);}(_0xca5f,0x16b));var _0xfca5=function(_0x4952a2,_0x446d8a){_0x4952a2=_0x4952a2-0x0;var _0x132caf=_0xca5f[_0x4952a2];return _0x132caf;};'use strict';var multer=require('multer');var util=require(_0xfca5('0x0'));var path=require(_0xfca5('0x1'));var timeout=require('connect-timeout');var express=require(_0xfca5('0x2'));var router=express[_0xfca5('0x3')]();var fs_extra=require(_0xfca5('0x4'));var auth=require(_0xfca5('0x5'));var interaction=require(_0xfca5('0x6'));var config=require(_0xfca5('0x7'));var controller=require(_0xfca5('0x8'));router[_0xfca5('0x9')]('/',auth[_0xfca5('0xa')](),controller[_0xfca5('0xb')]);router[_0xfca5('0x9')](_0xfca5('0xc'),auth[_0xfca5('0xa')](),controller[_0xfca5('0xd')]);router[_0xfca5('0x9')]('/index',auth[_0xfca5('0xa')](),controller['getVoiceQueuesReport']);router[_0xfca5('0x9')](_0xfca5('0xe'),auth[_0xfca5('0xa')](),controller['show']);router[_0xfca5('0xf')]('/',auth[_0xfca5('0xa')](),controller[_0xfca5('0x10')]);router[_0xfca5('0x11')](_0xfca5('0xe'),auth['isAuthenticated'](),controller[_0xfca5('0x12')]);router[_0xfca5('0x13')]('/:id',auth[_0xfca5('0xa')](),controller['destroy']);module[_0xfca5('0x14')]=router;
\ No newline at end of file
index f397f62..faa8009 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70cb=['INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','holdtime'];(function(_0x2ce0d5,_0x73bad6){var _0x416d49=function(_0x30f885){while(--_0x30f885){_0x2ce0d5['push'](_0x2ce0d5['shift']());}};_0x416d49(++_0x73bad6);}(_0x70cb,0x1e4));var _0xb70c=function(_0x4040fa,_0x9c4170){_0x4040fa=_0x4040fa-0x0;var _0x3032fe=_0x70cb[_0x4040fa];return _0x3032fe;};'use strict';var Sequelize=require(_0xb70c('0x0'));var moment=require(_0xb70c('0x1'));module[_0xb70c('0x2')]={'type':{'type':Sequelize[_0xb70c('0x3')]},'uniqueid':{'type':Sequelize[_0xb70c('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xb70c('0x3')]},'queue':{'type':Sequelize[_0xb70c('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0xb70c('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0xb70c('0x4')],'set':function(_0x3e1fb3){var _0x65d95d=moment(_0x3e1fb3);var _0x18d579=moment(this[_0xb70c('0x5')]('queuecallerjoinAt'))[_0xb70c('0x6')](_0xb70c('0x7'));var _0x11f840=_0x65d95d[_0xb70c('0x8')](_0x18d579,_0xb70c('0x9'));this[_0xb70c('0xa')]('queuecallerleaveAt',_0x3e1fb3);this['setDataValue'](_0xb70c('0xb'),_0x11f840||null);}},'position':{'type':Sequelize[_0xb70c('0xc')]},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0xb70c('0xd')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0xb70c('0xd')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xb70c('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0xb70c('0x3')],'comment':_0xb70c('0xe')},'originalposition':{'type':Sequelize[_0xb70c('0xc')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xb70c('0x3')]},'connectedlinename':{'type':Sequelize[_0xb70c('0x3')]},'accountcode':{'type':Sequelize[_0xb70c('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xb70c('0x3')]},'priority':{'type':Sequelize['STRING']},'holdtime':{'type':Sequelize[_0xb70c('0xc')]},'mohtime':{'type':Sequelize[_0xb70c('0xc')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xb70c('0xd')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xb70c('0x3')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xb70c('0x3')],'comment':_0xb70c('0xf')},'transferexten':{'type':Sequelize[_0xb70c('0x3')]},'transferuniqueid':{'type':Sequelize[_0xb70c('0x3')]},'disposition':{'type':Sequelize[_0xb70c('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xb70c('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0xb70c('0xc')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9fb8=['holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','STRING','DATE','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','seconds','setDataValue','queuecallerleaveAt'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0x9fb8,0x15e));var _0x89fb=function(_0x289fd4,_0xd34ba6){_0x289fd4=_0x289fd4-0x0;var _0x3d4a88=_0x9fb8[_0x289fd4];return _0x3d4a88;};'use strict';var Sequelize=require(_0x89fb('0x0'));var moment=require(_0x89fb('0x1'));module['exports']={'type':{'type':Sequelize[_0x89fb('0x2')]},'uniqueid':{'type':Sequelize[_0x89fb('0x2')]},'calleridnum':{'type':Sequelize[_0x89fb('0x2')]},'calleridname':{'type':Sequelize[_0x89fb('0x2')]},'queue':{'type':Sequelize[_0x89fb('0x2')]},'queuecallerjoinAt':{'type':Sequelize[_0x89fb('0x3')]},'queuecallerleaveAt':{'type':Sequelize['DATE'],'set':function(_0x3d4642){var _0x223259=moment(_0x3d4642);var _0x3cc42d=moment(this['getDataValue'](_0x89fb('0x4')))[_0x89fb('0x5')](_0x89fb('0x6'));var _0x4e6afa=_0x223259['diff'](_0x3cc42d,_0x89fb('0x7'));this[_0x89fb('0x8')](_0x89fb('0x9'),_0x3d4642);this[_0x89fb('0x8')](_0x89fb('0xa'),_0x4e6afa||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0x89fb('0xb')]},'queuecallerabandon':{'type':Sequelize[_0x89fb('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x89fb('0x3')]},'queuecallercomplete':{'type':Sequelize[_0x89fb('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x89fb('0x3')]},'queuecallerexit':{'type':Sequelize[_0x89fb('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x89fb('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0x89fb('0x2')],'comment':_0x89fb('0xd')},'originalposition':{'type':Sequelize[_0x89fb('0xb')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x89fb('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x89fb('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x89fb('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x89fb('0xb')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x89fb('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x89fb('0x2')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x89fb('0x2')],'comment':_0x89fb('0xe')},'transferexten':{'type':Sequelize[_0x89fb('0x2')]},'transferuniqueid':{'type':Sequelize[_0x89fb('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x89fb('0x2')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize[_0x89fb('0xb')],'defaultValue':0x0}};
\ No newline at end of file
index f04c0ac..1a66ff9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d3a=['find','create','body','destroy','describe','getVoiceQueuesReport','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','register','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','update','then','error','stack','name','send','index','map','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','VoiceQueueReport','includeAll','include','findAll','rows','catch','show','params'];(function(_0x4aa08d,_0x17312b){var _0x52e889=function(_0x5a558d){while(--_0x5a558d){_0x4aa08d['push'](_0x4aa08d['shift']());}};_0x52e889(++_0x17312b);}(_0x2d3a,0xa0));var _0xa2d3=function(_0x4dcc2d,_0x422839){_0x4dcc2d=_0x4dcc2d-0x0;var _0x1bbd79=_0x2d3a[_0x4dcc2d];return _0x1bbd79;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa2d3('0x0'));var zipdir=require(_0xa2d3('0x1'));var jsonpatch=require(_0xa2d3('0x2'));var rp=require('request-promise');var moment=require(_0xa2d3('0x3'));var BPromise=require(_0xa2d3('0x4'));var Mustache=require(_0xa2d3('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xa2d3('0x6'));var ejs=require(_0xa2d3('0x7'));var fs=require('fs');var fs_extra=require(_0xa2d3('0x8'));var _=require(_0xa2d3('0x9'));var squel=require(_0xa2d3('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa2d3('0xb'));var toCsv=require(_0xa2d3('0x6'));var querystring=require(_0xa2d3('0xc'));var Papa=require('papaparse');var Redis=require(_0xa2d3('0xd'));var authService=require(_0xa2d3('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa2d3('0xf'));var logger=require('../../config/logger')(_0xa2d3('0x10'));var utils=require(_0xa2d3('0x11'));var config=require(_0xa2d3('0x12'));var licenseUtil=require(_0xa2d3('0x13'));var db=require('../../mysqldb')['db'];config[_0xa2d3('0x14')]=_['defaults'](config[_0xa2d3('0x14')],{'host':_0xa2d3('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa2d3('0x14')]));require('./voiceQueueReport.socket')[_0xa2d3('0x16')](socket);function respondWithStatusCode(_0x2e57a4,_0x378973){_0x378973=_0x378973||0xcc;return function(_0x212421){if(_0x212421){return _0x2e57a4[_0xa2d3('0x17')](_0x378973);}return _0x2e57a4[_0xa2d3('0x18')](_0x378973)[_0xa2d3('0x19')]();};}function respondWithResult(_0x5455ea,_0x53d2b5){_0x53d2b5=_0x53d2b5||0xc8;return function(_0x4fd47d){if(_0x4fd47d){return _0x5455ea[_0xa2d3('0x18')](_0x53d2b5)['json'](_0x4fd47d);}};}function respondWithFilteredResult(_0x3c07b7,_0x215796){return function(_0x50b3e0){if(_0x50b3e0){var _0xc6192e=typeof _0x215796[_0xa2d3('0x1a')]===_0xa2d3('0x1b')&&typeof _0x215796[_0xa2d3('0x1c')]===_0xa2d3('0x1b');var _0x2b7117=_0x50b3e0[_0xa2d3('0x1d')];var _0x5dd793=_0xc6192e?0x0:_0x215796[_0xa2d3('0x1a')];var _0x2f32be=_0xc6192e?_0x50b3e0[_0xa2d3('0x1d')]:_0x215796[_0xa2d3('0x1a')]+_0x215796[_0xa2d3('0x1c')];var _0xdaeac;if(_0x2f32be>=_0x2b7117){_0x2f32be=_0x2b7117;_0xdaeac=0xc8;}else{_0xdaeac=0xce;}_0x3c07b7[_0xa2d3('0x18')](_0xdaeac);return _0x3c07b7[_0xa2d3('0x1e')]('Content-Range',_0x5dd793+'-'+_0x2f32be+'/'+_0x2b7117)[_0xa2d3('0x1f')](_0x50b3e0);}return null;};}function patchUpdates(_0x29bf7a){return function(_0x194d8a){try{jsonpatch[_0xa2d3('0x20')](_0x194d8a,_0x29bf7a,!![]);}catch(_0x4632fc){return BPromise[_0xa2d3('0x21')](_0x4632fc);}return _0x194d8a['save']();};}function saveUpdates(_0x32ca6f,_0x1b12e2){return function(_0x5a5389){if(_0x5a5389){return _0x5a5389[_0xa2d3('0x22')](_0x32ca6f)[_0xa2d3('0x23')](function(_0x1b73de){return _0x1b73de;});}return null;};}function removeEntity(_0x3ef27e,_0x3d0058){return function(_0x313aed){if(_0x313aed){return _0x313aed['destroy']()[_0xa2d3('0x23')](function(){_0x3ef27e[_0xa2d3('0x18')](0xcc)[_0xa2d3('0x19')]();});}};}function handleEntityNotFound(_0x30e83d,_0x501107){return function(_0x2e05c3){if(!_0x2e05c3){_0x30e83d['sendStatus'](0x194);}return _0x2e05c3;};}function handleError(_0x39ae60,_0x12c478){_0x12c478=_0x12c478||0x1f4;return function(_0x30542d){logger[_0xa2d3('0x24')](_0x30542d[_0xa2d3('0x25')]);if(_0x30542d[_0xa2d3('0x26')]){delete _0x30542d[_0xa2d3('0x26')];}_0x39ae60['status'](_0x12c478)[_0xa2d3('0x27')](_0x30542d);};}exports[_0xa2d3('0x28')]=function(_0x14e2a9,_0x6963bf){var _0x10fee3={},_0x50fab5={},_0x5d8cb1={'count':0x0,'rows':[]};var _0x39f308=_[_0xa2d3('0x29')](db['VoiceQueueReport'][_0xa2d3('0x2a')],function(_0x15e7c5){return{'name':_0x15e7c5['fieldName'],'type':_0x15e7c5[_0xa2d3('0x2b')][_0xa2d3('0x2c')]};});_0x50fab5['model']=_[_0xa2d3('0x29')](_0x39f308,'name');_0x50fab5[_0xa2d3('0x2d')]=_[_0xa2d3('0x2e')](_0x14e2a9[_0xa2d3('0x2d')]);_0x50fab5[_0xa2d3('0x2f')]=_[_0xa2d3('0x30')](_0x50fab5[_0xa2d3('0x31')],_0x50fab5[_0xa2d3('0x2d')]);_0x10fee3[_0xa2d3('0x32')]=_[_0xa2d3('0x30')](_0x50fab5[_0xa2d3('0x31')],qs[_0xa2d3('0x33')](_0x14e2a9[_0xa2d3('0x2d')][_0xa2d3('0x33')]));_0x10fee3['attributes']=_0x10fee3['attributes'][_0xa2d3('0x34')]?_0x10fee3[_0xa2d3('0x32')]:_0x50fab5[_0xa2d3('0x31')];if(!_0x14e2a9[_0xa2d3('0x2d')][_0xa2d3('0x35')](_0xa2d3('0x36'))){_0x10fee3['limit']=qs[_0xa2d3('0x1c')](_0x14e2a9[_0xa2d3('0x2d')][_0xa2d3('0x1c')]);_0x10fee3[_0xa2d3('0x1a')]=qs[_0xa2d3('0x1a')](_0x14e2a9[_0xa2d3('0x2d')][_0xa2d3('0x1a')]);}_0x10fee3[_0xa2d3('0x37')]=qs[_0xa2d3('0x38')](_0x14e2a9[_0xa2d3('0x2d')]['sort']);_0x10fee3[_0xa2d3('0x39')]=qs['filters'](_[_0xa2d3('0x3a')](_0x14e2a9['query'],_0x50fab5[_0xa2d3('0x2f')]),_0x39f308);if(_0x14e2a9[_0xa2d3('0x2d')][_0xa2d3('0x3b')]){_0x10fee3[_0xa2d3('0x39')]=_[_0xa2d3('0x3c')](_0x10fee3['where'],{'$or':_[_0xa2d3('0x29')](_0x39f308,function(_0x438793){if(_0x438793[_0xa2d3('0x2b')]!==_0xa2d3('0x3d')){var _0x45ffaa={};_0x45ffaa[_0x438793['name']]={'$like':'%'+_0x14e2a9[_0xa2d3('0x2d')][_0xa2d3('0x3b')]+'%'};return _0x45ffaa;}})});}_0x10fee3=_['merge']({},_0x10fee3,_0x14e2a9[_0xa2d3('0x3e')]);var _0x16a0d3={'where':_0x10fee3[_0xa2d3('0x39')]};return db[_0xa2d3('0x3f')][_0xa2d3('0x1d')](_0x16a0d3)[_0xa2d3('0x23')](function(_0xe22a79){_0x5d8cb1[_0xa2d3('0x1d')]=_0xe22a79;if(_0x14e2a9['query'][_0xa2d3('0x40')]){_0x10fee3[_0xa2d3('0x41')]=[{'all':!![]}];}return db[_0xa2d3('0x3f')][_0xa2d3('0x42')](_0x10fee3);})[_0xa2d3('0x23')](function(_0x1d9d51){_0x5d8cb1[_0xa2d3('0x43')]=_0x1d9d51;return _0x5d8cb1;})[_0xa2d3('0x23')](respondWithFilteredResult(_0x6963bf,_0x10fee3))[_0xa2d3('0x44')](handleError(_0x6963bf,null));};exports[_0xa2d3('0x45')]=function(_0x2716d5,_0x2ae0ad){var _0x2bc9c6={'raw':![],'where':{'id':_0x2716d5[_0xa2d3('0x46')]['id']}},_0x574c92={};_0x574c92[_0xa2d3('0x31')]=_[_0xa2d3('0x2e')](db['VoiceQueueReport'][_0xa2d3('0x2a')]);_0x574c92[_0xa2d3('0x2d')]=_['keys'](_0x2716d5[_0xa2d3('0x2d')]);_0x574c92[_0xa2d3('0x2f')]=_['intersection'](_0x574c92[_0xa2d3('0x31')],_0x574c92[_0xa2d3('0x2d')]);_0x2bc9c6[_0xa2d3('0x32')]=_[_0xa2d3('0x30')](_0x574c92[_0xa2d3('0x31')],qs['fields'](_0x2716d5[_0xa2d3('0x2d')][_0xa2d3('0x33')]));_0x2bc9c6['attributes']=_0x2bc9c6[_0xa2d3('0x32')][_0xa2d3('0x34')]?_0x2bc9c6[_0xa2d3('0x32')]:_0x574c92[_0xa2d3('0x31')];if(_0x2716d5['query'][_0xa2d3('0x40')]){_0x2bc9c6[_0xa2d3('0x41')]=[{'all':!![]}];}_0x2bc9c6=_[_0xa2d3('0x3c')]({},_0x2bc9c6,_0x2716d5['options']);return db[_0xa2d3('0x3f')][_0xa2d3('0x47')](_0x2bc9c6)[_0xa2d3('0x23')](handleEntityNotFound(_0x2ae0ad,null))['then'](respondWithResult(_0x2ae0ad,null))[_0xa2d3('0x44')](handleError(_0x2ae0ad,null));};exports['create']=function(_0xa34862,_0x5739ca){return db[_0xa2d3('0x3f')][_0xa2d3('0x48')](_0xa34862[_0xa2d3('0x49')],{})['then'](respondWithResult(_0x5739ca,0xc9))[_0xa2d3('0x44')](handleError(_0x5739ca,null));};exports[_0xa2d3('0x22')]=function(_0x3b4597,_0xd34519){if(_0x3b4597[_0xa2d3('0x49')]['id']){delete _0x3b4597[_0xa2d3('0x49')]['id'];}return db['VoiceQueueReport'][_0xa2d3('0x47')]({'where':{'id':_0x3b4597['params']['id']}})[_0xa2d3('0x23')](handleEntityNotFound(_0xd34519,null))[_0xa2d3('0x23')](saveUpdates(_0x3b4597[_0xa2d3('0x49')],null))[_0xa2d3('0x23')](respondWithResult(_0xd34519,null))[_0xa2d3('0x44')](handleError(_0xd34519,null));};exports[_0xa2d3('0x4a')]=function(_0x14f05c,_0x54bc4d){return db['VoiceQueueReport']['find']({'where':{'id':_0x14f05c[_0xa2d3('0x46')]['id']}})[_0xa2d3('0x23')](handleEntityNotFound(_0x54bc4d,null))[_0xa2d3('0x23')](removeEntity(_0x54bc4d,null))[_0xa2d3('0x44')](handleError(_0x54bc4d,null));};exports[_0xa2d3('0x4b')]=function(_0xe3318e,_0x15687f){return db[_0xa2d3('0x3f')][_0xa2d3('0x4b')]()['then'](respondWithResult(_0x15687f,null))[_0xa2d3('0x44')](handleError(_0x15687f,null));};exports[_0xa2d3('0x4c')]=function(_0x199221,_0x2028c3){var _0x3f41cd={},_0x498266={},_0x1d86d2={'count':0x0,'rows':[]};_0x498266[_0xa2d3('0x31')]=_[_0xa2d3('0x2e')](db[_0xa2d3('0x3f')][_0xa2d3('0x2a')]);_0x498266[_0xa2d3('0x2d')]=_['keys'](_0x199221[_0xa2d3('0x2d')]);_0x498266['filters']=_['intersection'](_0x498266[_0xa2d3('0x31')],_0x498266['query']);_0x3f41cd[_0xa2d3('0x32')]=_[_0xa2d3('0x30')](_0x498266[_0xa2d3('0x31')],qs[_0xa2d3('0x33')](_0x199221[_0xa2d3('0x2d')][_0xa2d3('0x33')]));_0x3f41cd[_0xa2d3('0x32')]=_0x3f41cd['attributes'][_0xa2d3('0x34')]?_0x3f41cd[_0xa2d3('0x32')]:_0x498266[_0xa2d3('0x31')];if(!_0x199221[_0xa2d3('0x2d')][_0xa2d3('0x35')](_0xa2d3('0x36'))){_0x3f41cd[_0xa2d3('0x1c')]=qs[_0xa2d3('0x1c')](_0x199221[_0xa2d3('0x2d')][_0xa2d3('0x1c')]);_0x3f41cd[_0xa2d3('0x1a')]=qs[_0xa2d3('0x1a')](_0x199221[_0xa2d3('0x2d')][_0xa2d3('0x1a')]);}_0x3f41cd['order']=qs[_0xa2d3('0x38')](_0x199221[_0xa2d3('0x2d')]['sort']);_0x3f41cd[_0xa2d3('0x39')]=qs['filters'](_[_0xa2d3('0x3a')](_0x199221[_0xa2d3('0x2d')],_0x498266[_0xa2d3('0x2f')]));if(_0x199221[_0xa2d3('0x2d')][_0xa2d3('0x3b')]){_0x3f41cd[_0xa2d3('0x39')]=_[_0xa2d3('0x3c')](_0x3f41cd[_0xa2d3('0x39')],{'$or':_['map'](_0x3f41cd[_0xa2d3('0x32')],function(_0x3446e5){var _0x12437c={};_0x12437c[_0x3446e5]={'$like':'%'+_0x199221[_0xa2d3('0x2d')][_0xa2d3('0x3b')]+'%'};return _0x12437c;})});}_0x3f41cd=_[_0xa2d3('0x3c')]({},_0x3f41cd,_0x199221[_0xa2d3('0x3e')]);var _0x54ea54={'where':_0x3f41cd[_0xa2d3('0x39')]};return db[_0xa2d3('0x3f')][_0xa2d3('0x1d')](_0x54ea54)['then'](function(_0x545e74){_0x1d86d2[_0xa2d3('0x1d')]=_0x545e74;if(_0x199221['query'][_0xa2d3('0x40')]){_0x3f41cd[_0xa2d3('0x41')]=[{'all':!![]}];}return db[_0xa2d3('0x3f')]['findAll'](_0x3f41cd);})[_0xa2d3('0x23')](function(_0x5e3fe6){_0x1d86d2[_0xa2d3('0x43')]=_0x5e3fe6;return _0x1d86d2;})[_0xa2d3('0x23')](respondWithFilteredResult(_0x2028c3,_0x3f41cd,_0xa2d3('0x4c')))[_0xa2d3('0x44')](handleError(_0x2028c3,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0x9f74=['localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','include','findAll','rows','params','options','catch','VoiceQueueReport','body','find','describe','getVoiceQueuesReport','hasOwnProperty','includeAll','rimraf','zip-dir','fast-json-patch','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','redis','defaults'];(function(_0x2eda24,_0x14757b){var _0x1ef80c=function(_0x111466){while(--_0x111466){_0x2eda24['push'](_0x2eda24['shift']());}};_0x1ef80c(++_0x14757b);}(_0x9f74,0xdd));var _0x49f7=function(_0x3b5dbd,_0x235037){_0x3b5dbd=_0x3b5dbd-0x0;var _0x1eee19=_0x9f74[_0x3b5dbd];return _0x1eee19;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x49f7('0x0'));var zipdir=require(_0x49f7('0x1'));var jsonpatch=require(_0x49f7('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x49f7('0x3'));var util=require('util');var path=require(_0x49f7('0x4'));var sox=require(_0x49f7('0x5'));var csv=require(_0x49f7('0x6'));var ejs=require(_0x49f7('0x7'));var fs=require('fs');var fs_extra=require(_0x49f7('0x8'));var _=require(_0x49f7('0x9'));var squel=require(_0x49f7('0xa'));var crypto=require(_0x49f7('0xb'));var jsforce=require(_0x49f7('0xc'));var deskjs=require(_0x49f7('0xd'));var toCsv=require(_0x49f7('0x6'));var querystring=require(_0x49f7('0xe'));var Papa=require(_0x49f7('0xf'));var Redis=require(_0x49f7('0x10'));var authService=require(_0x49f7('0x11'));var qs=require(_0x49f7('0x12'));var as=require(_0x49f7('0x13'));var hardwareService=require(_0x49f7('0x14'));var logger=require(_0x49f7('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x49f7('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x49f7('0x17')]=_[_0x49f7('0x18')](config[_0x49f7('0x17')],{'host':_0x49f7('0x19'),'port':0x18eb});var socket=require(_0x49f7('0x1a'))(new Redis(config[_0x49f7('0x17')]));require(_0x49f7('0x1b'))[_0x49f7('0x1c')](socket);function respondWithStatusCode(_0x57f004,_0x205898){_0x205898=_0x205898||0xcc;return function(_0x117c24){if(_0x117c24){return _0x57f004[_0x49f7('0x1d')](_0x205898);}return _0x57f004[_0x49f7('0x1e')](_0x205898)[_0x49f7('0x1f')]();};}function respondWithResult(_0x35e274,_0x3e737e){_0x3e737e=_0x3e737e||0xc8;return function(_0x2e5f58){if(_0x2e5f58){return _0x35e274[_0x49f7('0x1e')](_0x3e737e)[_0x49f7('0x20')](_0x2e5f58);}};}function respondWithFilteredResult(_0x3dcd12,_0x41949f){return function(_0x5829fa){if(_0x5829fa){var _0x1787ad=typeof _0x41949f[_0x49f7('0x21')]===_0x49f7('0x22')&&typeof _0x41949f[_0x49f7('0x23')]==='undefined';var _0x5778bb=_0x5829fa['count'];var _0x836500=_0x1787ad?0x0:_0x41949f[_0x49f7('0x21')];var _0x175421=_0x1787ad?_0x5829fa[_0x49f7('0x24')]:_0x41949f[_0x49f7('0x21')]+_0x41949f[_0x49f7('0x23')];var _0x4be92d;if(_0x175421>=_0x5778bb){_0x175421=_0x5778bb;_0x4be92d=0xc8;}else{_0x4be92d=0xce;}_0x3dcd12[_0x49f7('0x1e')](_0x4be92d);return _0x3dcd12[_0x49f7('0x25')](_0x49f7('0x26'),_0x836500+'-'+_0x175421+'/'+_0x5778bb)[_0x49f7('0x20')](_0x5829fa);}return null;};}function patchUpdates(_0x166285){return function(_0x223e98){try{jsonpatch[_0x49f7('0x27')](_0x223e98,_0x166285,!![]);}catch(_0x5e3277){return BPromise[_0x49f7('0x28')](_0x5e3277);}return _0x223e98[_0x49f7('0x29')]();};}function saveUpdates(_0x5d417d,_0x185dfe){return function(_0x5c5763){if(_0x5c5763){return _0x5c5763[_0x49f7('0x2a')](_0x5d417d)['then'](function(_0x3d40a9){return _0x3d40a9;});}return null;};}function removeEntity(_0x320684,_0x46a3c7){return function(_0x3ff444){if(_0x3ff444){return _0x3ff444[_0x49f7('0x2b')]()[_0x49f7('0x2c')](function(){_0x320684[_0x49f7('0x1e')](0xcc)[_0x49f7('0x1f')]();});}};}function handleEntityNotFound(_0xc49b95,_0x4988a9){return function(_0x3e111b){if(!_0x3e111b){_0xc49b95['sendStatus'](0x194);}return _0x3e111b;};}function handleError(_0x1561dc,_0x4696ca){_0x4696ca=_0x4696ca||0x1f4;return function(_0x227dad){logger[_0x49f7('0x2d')](_0x227dad[_0x49f7('0x2e')]);if(_0x227dad[_0x49f7('0x2f')]){delete _0x227dad[_0x49f7('0x2f')];}_0x1561dc['status'](_0x4696ca)[_0x49f7('0x30')](_0x227dad);};}exports['index']=function(_0x30721c,_0x1d2d62){var _0xb8168a={},_0x10cb03={},_0x51b016={'count':0x0,'rows':[]};var _0x10b538=_['map'](db['VoiceQueueReport'][_0x49f7('0x31')],function(_0x13685a){return{'name':_0x13685a[_0x49f7('0x32')],'type':_0x13685a['type'][_0x49f7('0x33')]};});_0x10cb03[_0x49f7('0x34')]=_[_0x49f7('0x35')](_0x10b538,_0x49f7('0x2f'));_0x10cb03[_0x49f7('0x36')]=_[_0x49f7('0x37')](_0x30721c[_0x49f7('0x36')]);_0x10cb03[_0x49f7('0x38')]=_[_0x49f7('0x39')](_0x10cb03[_0x49f7('0x34')],_0x10cb03[_0x49f7('0x36')]);_0xb8168a[_0x49f7('0x3a')]=_[_0x49f7('0x39')](_0x10cb03[_0x49f7('0x34')],qs['fields'](_0x30721c['query'][_0x49f7('0x3b')]));_0xb8168a[_0x49f7('0x3a')]=_0xb8168a[_0x49f7('0x3a')][_0x49f7('0x3c')]?_0xb8168a[_0x49f7('0x3a')]:_0x10cb03['model'];if(!_0x30721c['query']['hasOwnProperty'](_0x49f7('0x3d'))){_0xb8168a[_0x49f7('0x23')]=qs[_0x49f7('0x23')](_0x30721c[_0x49f7('0x36')][_0x49f7('0x23')]);_0xb8168a[_0x49f7('0x21')]=qs[_0x49f7('0x21')](_0x30721c[_0x49f7('0x36')][_0x49f7('0x21')]);}_0xb8168a[_0x49f7('0x3e')]=qs[_0x49f7('0x3f')](_0x30721c[_0x49f7('0x36')]['sort']);_0xb8168a[_0x49f7('0x40')]=qs['filters'](_[_0x49f7('0x41')](_0x30721c[_0x49f7('0x36')],_0x10cb03['filters']),_0x10b538);if(_0x30721c[_0x49f7('0x36')][_0x49f7('0x42')]){_0xb8168a['where']=_[_0x49f7('0x43')](_0xb8168a['where'],{'$or':_[_0x49f7('0x35')](_0x10b538,function(_0x697c2c){if(_0x697c2c[_0x49f7('0x44')]!=='VIRTUAL'){var _0x495526={};_0x495526[_0x697c2c['name']]={'$like':'%'+_0x30721c[_0x49f7('0x36')]['filter']+'%'};return _0x495526;}})});}_0xb8168a=_[_0x49f7('0x43')]({},_0xb8168a,_0x30721c['options']);var _0xf47265={'where':_0xb8168a['where']};return db['VoiceQueueReport'][_0x49f7('0x24')](_0xf47265)[_0x49f7('0x2c')](function(_0x523549){_0x51b016[_0x49f7('0x24')]=_0x523549;if(_0x30721c[_0x49f7('0x36')]['includeAll']){_0xb8168a[_0x49f7('0x45')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0x49f7('0x46')](_0xb8168a);})[_0x49f7('0x2c')](function(_0x4328b6){_0x51b016[_0x49f7('0x47')]=_0x4328b6;return _0x51b016;})[_0x49f7('0x2c')](respondWithFilteredResult(_0x1d2d62,_0xb8168a))['catch'](handleError(_0x1d2d62,null));};exports['show']=function(_0x490a44,_0x2cd928){var _0x4451ad={'raw':![],'where':{'id':_0x490a44[_0x49f7('0x48')]['id']}},_0x5efcb4={};_0x5efcb4[_0x49f7('0x34')]=_['keys'](db['VoiceQueueReport']['rawAttributes']);_0x5efcb4[_0x49f7('0x36')]=_[_0x49f7('0x37')](_0x490a44[_0x49f7('0x36')]);_0x5efcb4[_0x49f7('0x38')]=_[_0x49f7('0x39')](_0x5efcb4['model'],_0x5efcb4[_0x49f7('0x36')]);_0x4451ad[_0x49f7('0x3a')]=_[_0x49f7('0x39')](_0x5efcb4[_0x49f7('0x34')],qs[_0x49f7('0x3b')](_0x490a44[_0x49f7('0x36')][_0x49f7('0x3b')]));_0x4451ad[_0x49f7('0x3a')]=_0x4451ad[_0x49f7('0x3a')]['length']?_0x4451ad[_0x49f7('0x3a')]:_0x5efcb4['model'];if(_0x490a44[_0x49f7('0x36')]['includeAll']){_0x4451ad[_0x49f7('0x45')]=[{'all':!![]}];}_0x4451ad=_[_0x49f7('0x43')]({},_0x4451ad,_0x490a44[_0x49f7('0x49')]);return db['VoiceQueueReport']['find'](_0x4451ad)[_0x49f7('0x2c')](handleEntityNotFound(_0x2cd928,null))[_0x49f7('0x2c')](respondWithResult(_0x2cd928,null))[_0x49f7('0x4a')](handleError(_0x2cd928,null));};exports['create']=function(_0x66852,_0x26f626){return db[_0x49f7('0x4b')]['create'](_0x66852[_0x49f7('0x4c')],{})[_0x49f7('0x2c')](respondWithResult(_0x26f626,0xc9))[_0x49f7('0x4a')](handleError(_0x26f626,null));};exports[_0x49f7('0x2a')]=function(_0x3ca957,_0xf8d1c8){if(_0x3ca957[_0x49f7('0x4c')]['id']){delete _0x3ca957[_0x49f7('0x4c')]['id'];}return db[_0x49f7('0x4b')][_0x49f7('0x4d')]({'where':{'id':_0x3ca957[_0x49f7('0x48')]['id']}})[_0x49f7('0x2c')](handleEntityNotFound(_0xf8d1c8,null))[_0x49f7('0x2c')](saveUpdates(_0x3ca957['body'],null))['then'](respondWithResult(_0xf8d1c8,null))[_0x49f7('0x4a')](handleError(_0xf8d1c8,null));};exports['destroy']=function(_0x810bfa,_0x4c502c){return db['VoiceQueueReport'][_0x49f7('0x4d')]({'where':{'id':_0x810bfa[_0x49f7('0x48')]['id']}})['then'](handleEntityNotFound(_0x4c502c,null))[_0x49f7('0x2c')](removeEntity(_0x4c502c,null))[_0x49f7('0x4a')](handleError(_0x4c502c,null));};exports[_0x49f7('0x4e')]=function(_0x24d647,_0x37cae1){return db[_0x49f7('0x4b')][_0x49f7('0x4e')]()['then'](respondWithResult(_0x37cae1,null))['catch'](handleError(_0x37cae1,null));};exports[_0x49f7('0x4f')]=function(_0x363f4a,_0x110a29){var _0x57ac24={},_0x2b6fff={},_0x1d4525={'count':0x0,'rows':[]};_0x2b6fff[_0x49f7('0x34')]=_[_0x49f7('0x37')](db[_0x49f7('0x4b')][_0x49f7('0x31')]);_0x2b6fff[_0x49f7('0x36')]=_[_0x49f7('0x37')](_0x363f4a[_0x49f7('0x36')]);_0x2b6fff[_0x49f7('0x38')]=_['intersection'](_0x2b6fff[_0x49f7('0x34')],_0x2b6fff[_0x49f7('0x36')]);_0x57ac24[_0x49f7('0x3a')]=_[_0x49f7('0x39')](_0x2b6fff[_0x49f7('0x34')],qs[_0x49f7('0x3b')](_0x363f4a[_0x49f7('0x36')][_0x49f7('0x3b')]));_0x57ac24[_0x49f7('0x3a')]=_0x57ac24[_0x49f7('0x3a')][_0x49f7('0x3c')]?_0x57ac24[_0x49f7('0x3a')]:_0x2b6fff[_0x49f7('0x34')];if(!_0x363f4a[_0x49f7('0x36')][_0x49f7('0x50')]('nolimit')){_0x57ac24[_0x49f7('0x23')]=qs[_0x49f7('0x23')](_0x363f4a[_0x49f7('0x36')][_0x49f7('0x23')]);_0x57ac24[_0x49f7('0x21')]=qs[_0x49f7('0x21')](_0x363f4a[_0x49f7('0x36')][_0x49f7('0x21')]);}_0x57ac24['order']=qs['sort'](_0x363f4a[_0x49f7('0x36')]['sort']);_0x57ac24[_0x49f7('0x40')]=qs['filters'](_[_0x49f7('0x41')](_0x363f4a[_0x49f7('0x36')],_0x2b6fff[_0x49f7('0x38')]));if(_0x363f4a[_0x49f7('0x36')][_0x49f7('0x42')]){_0x57ac24[_0x49f7('0x40')]=_[_0x49f7('0x43')](_0x57ac24['where'],{'$or':_['map'](_0x57ac24[_0x49f7('0x3a')],function(_0x412e66){var _0x339570={};_0x339570[_0x412e66]={'$like':'%'+_0x363f4a[_0x49f7('0x36')][_0x49f7('0x42')]+'%'};return _0x339570;})});}_0x57ac24=_['merge']({},_0x57ac24,_0x363f4a[_0x49f7('0x49')]);var _0x4cb1d0={'where':_0x57ac24[_0x49f7('0x40')]};return db[_0x49f7('0x4b')]['count'](_0x4cb1d0)[_0x49f7('0x2c')](function(_0x304753){_0x1d4525['count']=_0x304753;if(_0x363f4a[_0x49f7('0x36')][_0x49f7('0x51')]){_0x57ac24['include']=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x57ac24);})[_0x49f7('0x2c')](function(_0x73fcc5){_0x1d4525[_0x49f7('0x47')]=_0x73fcc5;return _0x1d4525;})[_0x49f7('0x2c')](respondWithFilteredResult(_0x110a29,_0x57ac24,_0x49f7('0x4f')))['catch'](handleError(_0x110a29,null,'getVoiceQueuesReport'));};
\ No newline at end of file
index 45b56eb..c33f6cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xead8=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','VoiceQueueReport','setMaxListeners','save'];(function(_0x45894,_0xe817e1){var _0x101b17=function(_0x4ced73){while(--_0x4ced73){_0x45894['push'](_0x45894['shift']());}};_0x101b17(++_0xe817e1);}(_0xead8,0x1bd));var _0x8ead=function(_0x500dd2,_0x23bd28){_0x500dd2=_0x500dd2-0x0;var _0xa7c859=_0xead8[_0x500dd2];return _0xa7c859;};'use strict';var EventEmitter=require(_0x8ead('0x0'));var VoiceQueueReport=require(_0x8ead('0x1'))['db'][_0x8ead('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x8ead('0x3')](0x0);var events={'afterCreate':_0x8ead('0x4'),'afterUpdate':'update','afterDestroy':_0x8ead('0x5')};function emitEvent(_0x58ae97){return function(_0x13d61f,_0x3ab127,_0x44290f){VoiceQueueReportEvents[_0x8ead('0x6')](_0x58ae97+':'+_0x13d61f['id'],_0x13d61f);VoiceQueueReportEvents[_0x8ead('0x6')](_0x58ae97,_0x13d61f);_0x44290f(null);};}for(var e in events){if(events[_0x8ead('0x7')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x8ead('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xec6c=['save','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','VoiceQueueReport','setMaxListeners'];(function(_0x13b781,_0x5b5b95){var _0x44a383=function(_0x5f0adb){while(--_0x5f0adb){_0x13b781['push'](_0x13b781['shift']());}};_0x44a383(++_0x5b5b95);}(_0xec6c,0xcf));var _0xcec6=function(_0x22b0d5,_0x34f821){_0x22b0d5=_0x22b0d5-0x0;var _0xe1887c=_0xec6c[_0x22b0d5];return _0xe1887c;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0xcec6('0x0'))['db'][_0xcec6('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xcec6('0x2')](0x0);var events={'afterCreate':_0xcec6('0x3'),'afterUpdate':_0xcec6('0x4'),'afterDestroy':_0xcec6('0x5')};function emitEvent(_0x2a46ca){return function(_0x58d68c,_0x40f03d,_0x97db09){VoiceQueueReportEvents[_0xcec6('0x6')](_0x2a46ca+':'+_0x58d68c['id'],_0x58d68c);VoiceQueueReportEvents['emit'](_0x2a46ca,_0x58d68c);_0x97db09(null);};}for(var e in events){if(events[_0xcec6('0x7')](e)){var event=events[e];VoiceQueueReport[_0xcec6('0x8')](e,emitEvent(event));}}module[_0xcec6('0x9')]=VoiceQueueReportEvents;
\ No newline at end of file
index 5abf94c..a813efc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29b4=['request-promise','path','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','report_queue','calleridnum','lodash','util','../../config/logger','moment','bluebird'];(function(_0x4f22f8,_0xe8585c){var _0x43cfb8=function(_0x103ed1){while(--_0x103ed1){_0x4f22f8['push'](_0x4f22f8['shift']());}};_0x43cfb8(++_0xe8585c);}(_0x29b4,0xa4));var _0x429b=function(_0x1a4d53,_0x2ba861){_0x1a4d53=_0x1a4d53-0x0;var _0x1610ec=_0x29b4[_0x1a4d53];return _0x1610ec;};'use strict';var _=require(_0x429b('0x0'));var util=require(_0x429b('0x1'));var logger=require(_0x429b('0x2'))('api');var moment=require(_0x429b('0x3'));var BPromise=require(_0x429b('0x4'));var rp=require(_0x429b('0x5'));var fs=require('fs');var path=require(_0x429b('0x6'));var rimraf=require(_0x429b('0x7'));var config=require(_0x429b('0x8'));var attributes=require(_0x429b('0x9'));module[_0x429b('0xa')]=function(_0x21c5c5,_0x377cdc){return _0x21c5c5['define']('VoiceQueueReport',attributes,{'tableName':_0x429b('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0x429b('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb455=['./voiceQueueReport.attributes','exports','define','VoiceQueueReport','calleridnum','lodash','util','../../config/logger','api','bluebird','rimraf','../../config/environment'];(function(_0x435fa1,_0x58550a){var _0x845f9f=function(_0x89867e){while(--_0x89867e){_0x435fa1['push'](_0x435fa1['shift']());}};_0x845f9f(++_0x58550a);}(_0xb455,0x10d));var _0x5b45=function(_0x32b766,_0x1539d4){_0x32b766=_0x32b766-0x0;var _0x4c98be=_0xb455[_0x32b766];return _0x4c98be;};'use strict';var _=require(_0x5b45('0x0'));var util=require(_0x5b45('0x1'));var logger=require(_0x5b45('0x2'))(_0x5b45('0x3'));var moment=require('moment');var BPromise=require(_0x5b45('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x5b45('0x5'));var config=require(_0x5b45('0x6'));var attributes=require(_0x5b45('0x7'));module[_0x5b45('0x8')]=function(_0x42ea91,_0x1876d0){return _0x42ea91[_0x5b45('0x9')](_0x5b45('0xa'),attributes,{'tableName':'report_queue','paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0x5b45('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index f686a41..c42057a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed6a=['../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','limit','include','map','model','attributes','catch','CreateVoiceQueueReport','create','body','stringify','UpdateVoiceQueueReport','update','where','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x54feb0,_0x3c173){var _0x55d60c=function(_0x6b1956){while(--_0x6b1956){_0x54feb0['push'](_0x54feb0['shift']());}};_0x55d60c(++_0x3c173);}(_0xed6a,0xfc));var _0xaed6=function(_0xb22ea8,_0x1d5230){_0xb22ea8=_0xb22ea8-0x0;var _0x76cbbd=_0xed6a[_0xb22ea8];return _0x76cbbd;};'use strict';var _=require(_0xaed6('0x0'));var util=require('util');var moment=require(_0xaed6('0x1'));var BPromise=require('bluebird');var rs=require(_0xaed6('0x2'));var fs=require('fs');var Redis=require(_0xaed6('0x3'));var db=require(_0xaed6('0x4'))['db'];var utils=require(_0xaed6('0x5'));var logger=require(_0xaed6('0x6'))(_0xaed6('0x7'));var config=require(_0xaed6('0x8'));var jayson=require(_0xaed6('0x9'));var client=jayson[_0xaed6('0xa')]['http']({'port':0x232a});config[_0xaed6('0xb')]=_['defaults'](config['redis'],{'host':_0xaed6('0xc'),'port':0x18eb});var socket=require(_0xaed6('0xd'))(new Redis(config[_0xaed6('0xb')]));require('./voiceQueueReport.socket')[_0xaed6('0xe')](socket);function respondWithRpcPromise(_0x310608,_0x169598,_0x27c188){return new BPromise(function(_0x255a37,_0x5c8f83){return client[_0xaed6('0xf')](_0x310608,_0x27c188)[_0xaed6('0x10')](function(_0x3835e3){logger[_0xaed6('0x11')](_0xaed6('0x12'),_0x169598,'request\x20sent');logger[_0xaed6('0x13')](_0xaed6('0x14'),_0x169598,_0xaed6('0x15'),JSON['stringify'](_0x3835e3));if(_0x3835e3['error']){if(_0x3835e3[_0xaed6('0x16')][_0xaed6('0x17')]===0x1f4){logger[_0xaed6('0x16')](_0xaed6('0x12'),_0x169598,_0x3835e3['error'][_0xaed6('0x18')]);return _0x5c8f83(_0x3835e3[_0xaed6('0x16')]['message']);}logger['error'](_0xaed6('0x12'),_0x169598,_0x3835e3[_0xaed6('0x16')]['message']);return _0x255a37(_0x3835e3[_0xaed6('0x16')]['message']);}else{logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x169598,'request\x20sent');_0x255a37(_0x3835e3['result'][_0xaed6('0x18')]);}})['catch'](function(_0xe4842c){logger[_0xaed6('0x16')](_0xaed6('0x12'),_0x169598,_0xe4842c);_0x5c8f83(_0xe4842c);});});}exports[_0xaed6('0x19')]=function(_0x106147){var _0x48853d=this;return new Promise(function(_0xf52d61,_0xcbdfbe){return db[_0xaed6('0x1a')][_0xaed6('0x1b')]({'raw':_0x106147[_0xaed6('0x1c')]?_0x106147['options'][_0xaed6('0x1d')]===undefined?!![]:![]:!![],'where':_0x106147['options']?_0x106147['options']['where']||null:null,'attributes':_0x106147['options']?_0x106147[_0xaed6('0x1c')]['attributes']||null:null,'limit':_0x106147[_0xaed6('0x1c')]?_0x106147['options'][_0xaed6('0x1e')]||null:null,'include':_0x106147[_0xaed6('0x1c')]?_0x106147['options'][_0xaed6('0x1f')]?_[_0xaed6('0x20')](_0x106147[_0xaed6('0x1c')][_0xaed6('0x1f')],function(_0x25c78a){return{'model':db[_0x25c78a[_0xaed6('0x21')]],'as':_0x25c78a['as'],'attributes':_0x25c78a[_0xaed6('0x22')],'include':_0x25c78a[_0xaed6('0x1f')]?_['map'](_0x25c78a[_0xaed6('0x1f')],function(_0x173534){return{'model':db[_0x173534['model']],'as':_0x173534['as'],'attributes':_0x173534[_0xaed6('0x22')],'include':_0x173534[_0xaed6('0x1f')]?_[_0xaed6('0x20')](_0x173534[_0xaed6('0x1f')],function(_0x57f5ed){return{'model':db[_0x57f5ed[_0xaed6('0x21')]],'as':_0x57f5ed['as'],'attributes':_0x57f5ed[_0xaed6('0x22')]};}):[]};}):[]};}):[]:[]})[_0xaed6('0x10')](function(_0x4dbb0e){logger[_0xaed6('0x11')]('GetVoiceQueueReport',_0x106147);logger[_0xaed6('0x13')](_0xaed6('0x19'),_0x106147,JSON['stringify'](_0x4dbb0e));_0xf52d61(_0x4dbb0e);})[_0xaed6('0x23')](function(_0x5cf65d){logger['error'](_0xaed6('0x19'),_0x5cf65d['message'],_0x106147);_0xcbdfbe(_0x48853d[_0xaed6('0x16')](0x1f4,_0x5cf65d['message']));});});};exports[_0xaed6('0x24')]=function(_0x2acabc){var _0x5f3361=this;return new Promise(function(_0x32788f,_0x1e0882){return db[_0xaed6('0x1a')][_0xaed6('0x25')](_0x2acabc[_0xaed6('0x26')],{'raw':_0x2acabc[_0xaed6('0x1c')]?_0x2acabc[_0xaed6('0x1c')][_0xaed6('0x1d')]===undefined?!![]:![]:!![]})[_0xaed6('0x10')](function(_0x3073ca){logger[_0xaed6('0x11')](_0xaed6('0x24'),_0x2acabc);logger[_0xaed6('0x13')]('CreateVoiceQueueReport',_0x2acabc,JSON[_0xaed6('0x27')](_0x3073ca));_0x32788f(_0x3073ca);})[_0xaed6('0x23')](function(_0x40b357){logger[_0xaed6('0x16')](_0xaed6('0x24'),_0x40b357['message'],_0x2acabc);_0x1e0882(_0x5f3361[_0xaed6('0x16')](0x1f4,_0x40b357[_0xaed6('0x18')]));});});};exports[_0xaed6('0x28')]=function(_0x3f22c8){var _0x8035b4=this;return new Promise(function(_0x3a3c34,_0x10192b){return db[_0xaed6('0x1a')][_0xaed6('0x29')](_0x3f22c8['body'],{'raw':_0x3f22c8[_0xaed6('0x1c')]?_0x3f22c8[_0xaed6('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3f22c8[_0xaed6('0x1c')]?_0x3f22c8[_0xaed6('0x1c')][_0xaed6('0x2a')]||null:null,'attributes':_0x3f22c8[_0xaed6('0x1c')]?_0x3f22c8[_0xaed6('0x1c')]['attributes']||null:null,'limit':_0x3f22c8['options']?_0x3f22c8[_0xaed6('0x1c')][_0xaed6('0x1e')]||null:null})[_0xaed6('0x10')](function(_0x4d65e0){logger[_0xaed6('0x11')]('UpdateVoiceQueueReport',_0x3f22c8);logger[_0xaed6('0x13')]('UpdateVoiceQueueReport',_0x3f22c8,JSON[_0xaed6('0x27')](_0x4d65e0));_0x3a3c34(_0x4d65e0);})['catch'](function(_0x53aa51){logger[_0xaed6('0x16')](_0xaed6('0x28'),_0x53aa51[_0xaed6('0x18')],_0x3f22c8);_0x10192b(_0x8035b4[_0xaed6('0x16')](0x1f4,_0x53aa51[_0xaed6('0x18')]));});});};
\ No newline at end of file
+var _0x15b2=['request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetVoiceQueueReport','VoiceQueueReport','options','raw','where','attributes','limit','include','model','map','create','body','CreateVoiceQueueReport','UpdateVoiceQueueReport','update','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','./voiceQueueReport.socket','request','then','VoiceQueueReport,\x20%s,\x20%s'];(function(_0x55e026,_0x3b61d1){var _0x3f495a=function(_0x28868b){while(--_0x28868b){_0x55e026['push'](_0x55e026['shift']());}};_0x3f495a(++_0x3b61d1);}(_0x15b2,0xc5));var _0x215b=function(_0x3c1891,_0x154204){_0x3c1891=_0x3c1891-0x0;var _0x26d46f=_0x15b2[_0x3c1891];return _0x26d46f;};'use strict';var _=require('lodash');var util=require(_0x215b('0x0'));var moment=require(_0x215b('0x1'));var BPromise=require(_0x215b('0x2'));var rs=require(_0x215b('0x3'));var fs=require('fs');var Redis=require(_0x215b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x215b('0x5'));var logger=require(_0x215b('0x6'))(_0x215b('0x7'));var config=require(_0x215b('0x8'));var jayson=require(_0x215b('0x9'));var client=jayson[_0x215b('0xa')][_0x215b('0xb')]({'port':0x232a});config['redis']=_[_0x215b('0xc')](config[_0x215b('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x215b('0xe'))['register'](socket);function respondWithRpcPromise(_0x36086d,_0xab3b9,_0x3891a4){return new BPromise(function(_0x3c5a1b,_0x1f7460){return client[_0x215b('0xf')](_0x36086d,_0x3891a4)[_0x215b('0x10')](function(_0x3b2f4a){logger['info'](_0x215b('0x11'),_0xab3b9,_0x215b('0x12'));logger[_0x215b('0x13')](_0x215b('0x14'),_0xab3b9,_0x215b('0x12'),JSON[_0x215b('0x15')](_0x3b2f4a));if(_0x3b2f4a[_0x215b('0x16')]){if(_0x3b2f4a[_0x215b('0x16')][_0x215b('0x17')]===0x1f4){logger[_0x215b('0x16')](_0x215b('0x11'),_0xab3b9,_0x3b2f4a[_0x215b('0x16')][_0x215b('0x18')]);return _0x1f7460(_0x3b2f4a[_0x215b('0x16')][_0x215b('0x18')]);}logger[_0x215b('0x16')](_0x215b('0x11'),_0xab3b9,_0x3b2f4a[_0x215b('0x16')][_0x215b('0x18')]);return _0x3c5a1b(_0x3b2f4a['error']['message']);}else{logger[_0x215b('0x19')](_0x215b('0x11'),_0xab3b9,_0x215b('0x12'));_0x3c5a1b(_0x3b2f4a[_0x215b('0x1a')][_0x215b('0x18')]);}})[_0x215b('0x1b')](function(_0x2e0454){logger['error'](_0x215b('0x11'),_0xab3b9,_0x2e0454);_0x1f7460(_0x2e0454);});});}exports[_0x215b('0x1c')]=function(_0x6901e2){var _0x40d438=this;return new Promise(function(_0x320e34,_0x4abde5){return db[_0x215b('0x1d')]['findAll']({'raw':_0x6901e2[_0x215b('0x1e')]?_0x6901e2[_0x215b('0x1e')][_0x215b('0x1f')]===undefined?!![]:![]:!![],'where':_0x6901e2['options']?_0x6901e2[_0x215b('0x1e')][_0x215b('0x20')]||null:null,'attributes':_0x6901e2[_0x215b('0x1e')]?_0x6901e2[_0x215b('0x1e')][_0x215b('0x21')]||null:null,'limit':_0x6901e2[_0x215b('0x1e')]?_0x6901e2['options'][_0x215b('0x22')]||null:null,'include':_0x6901e2[_0x215b('0x1e')]?_0x6901e2[_0x215b('0x1e')][_0x215b('0x23')]?_['map'](_0x6901e2[_0x215b('0x1e')][_0x215b('0x23')],function(_0x3c52e1){return{'model':db[_0x3c52e1[_0x215b('0x24')]],'as':_0x3c52e1['as'],'attributes':_0x3c52e1['attributes'],'include':_0x3c52e1[_0x215b('0x23')]?_[_0x215b('0x25')](_0x3c52e1[_0x215b('0x23')],function(_0x3d84bf){return{'model':db[_0x3d84bf[_0x215b('0x24')]],'as':_0x3d84bf['as'],'attributes':_0x3d84bf[_0x215b('0x21')],'include':_0x3d84bf['include']?_[_0x215b('0x25')](_0x3d84bf[_0x215b('0x23')],function(_0x4a1695){return{'model':db[_0x4a1695['model']],'as':_0x4a1695['as'],'attributes':_0x4a1695[_0x215b('0x21')]};}):[]};}):[]};}):[]:[]})[_0x215b('0x10')](function(_0x59545e){logger['info'](_0x215b('0x1c'),_0x6901e2);logger[_0x215b('0x13')](_0x215b('0x1c'),_0x6901e2,JSON[_0x215b('0x15')](_0x59545e));_0x320e34(_0x59545e);})[_0x215b('0x1b')](function(_0x5183d1){logger[_0x215b('0x16')](_0x215b('0x1c'),_0x5183d1['message'],_0x6901e2);_0x4abde5(_0x40d438[_0x215b('0x16')](0x1f4,_0x5183d1[_0x215b('0x18')]));});});};exports['CreateVoiceQueueReport']=function(_0x3b693c){var _0x4af223=this;return new Promise(function(_0x46ad33,_0x3a0331){return db['VoiceQueueReport'][_0x215b('0x26')](_0x3b693c[_0x215b('0x27')],{'raw':_0x3b693c[_0x215b('0x1e')]?_0x3b693c[_0x215b('0x1e')][_0x215b('0x1f')]===undefined?!![]:![]:!![]})[_0x215b('0x10')](function(_0x2fd992){logger[_0x215b('0x19')](_0x215b('0x28'),_0x3b693c);logger[_0x215b('0x13')](_0x215b('0x28'),_0x3b693c,JSON['stringify'](_0x2fd992));_0x46ad33(_0x2fd992);})[_0x215b('0x1b')](function(_0x2a2289){logger[_0x215b('0x16')](_0x215b('0x28'),_0x2a2289[_0x215b('0x18')],_0x3b693c);_0x3a0331(_0x4af223[_0x215b('0x16')](0x1f4,_0x2a2289[_0x215b('0x18')]));});});};exports[_0x215b('0x29')]=function(_0x3a6d87){var _0x1a8ac2=this;return new Promise(function(_0x404d05,_0x1d80b6){return db[_0x215b('0x1d')][_0x215b('0x2a')](_0x3a6d87['body'],{'raw':_0x3a6d87[_0x215b('0x1e')]?_0x3a6d87[_0x215b('0x1e')][_0x215b('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a6d87[_0x215b('0x1e')]?_0x3a6d87[_0x215b('0x1e')][_0x215b('0x20')]||null:null,'attributes':_0x3a6d87['options']?_0x3a6d87[_0x215b('0x1e')]['attributes']||null:null,'limit':_0x3a6d87['options']?_0x3a6d87[_0x215b('0x1e')][_0x215b('0x22')]||null:null})['then'](function(_0x334c18){logger['info'](_0x215b('0x29'),_0x3a6d87);logger['debug']('UpdateVoiceQueueReport',_0x3a6d87,JSON[_0x215b('0x15')](_0x334c18));_0x404d05(_0x334c18);})['catch'](function(_0x143a11){logger[_0x215b('0x16')](_0x215b('0x29'),_0x143a11['message'],_0x3a6d87);_0x1d80b6(_0x1a8ac2[_0x215b('0x16')](0x1f4,_0x143a11['message']));});});};
\ No newline at end of file
index 97da3ce..6f75caf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28a2=['save','remove','update','removeListener','register','voiceQueueReport:','./voiceQueueReport.events'];(function(_0x138d06,_0x33edf2){var _0x1a01eb=function(_0x387acb){while(--_0x387acb){_0x138d06['push'](_0x138d06['shift']());}};_0x1a01eb(++_0x33edf2);}(_0x28a2,0x141));var _0x228a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x28a2[_0x3dd15e];return _0x231fd0;};'use strict';var VoiceQueueReportEvents=require(_0x228a('0x0'));var events=[_0x228a('0x1'),_0x228a('0x2'),_0x228a('0x3')];function createListener(_0x466ef9,_0x41d4aa){return function(_0xfc342a){_0x41d4aa['emit'](_0x466ef9,_0xfc342a);};}function removeListener(_0x6efce7,_0x51e9e9){return function(){VoiceQueueReportEvents[_0x228a('0x4')](_0x6efce7,_0x51e9e9);};}exports[_0x228a('0x5')]=function(_0x17727b){for(var _0xf86d1d=0x0,_0x100a6a=events['length'];_0xf86d1d<_0x100a6a;_0xf86d1d++){var _0x270d15=events[_0xf86d1d];var _0x7767ab=createListener(_0x228a('0x6')+_0x270d15,_0x17727b);VoiceQueueReportEvents['on'](_0x270d15,_0x7767ab);}};
\ No newline at end of file
+var _0x6e6f=['emit','removeListener','length','voiceQueueReport:','save','remove'];(function(_0x1bbc08,_0x444008){var _0x5d825b=function(_0x522920){while(--_0x522920){_0x1bbc08['push'](_0x1bbc08['shift']());}};_0x5d825b(++_0x444008);}(_0x6e6f,0x76));var _0xf6e6=function(_0x55ff21,_0x1540f0){_0x55ff21=_0x55ff21-0x0;var _0x4baf37=_0x6e6f[_0x55ff21];return _0x4baf37;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0xf6e6('0x0'),_0xf6e6('0x1'),'update'];function createListener(_0x4497c3,_0x1f7b00){return function(_0x32f236){_0x1f7b00[_0xf6e6('0x2')](_0x4497c3,_0x32f236);};}function removeListener(_0x445201,_0x3deccf){return function(){VoiceQueueReportEvents[_0xf6e6('0x3')](_0x445201,_0x3deccf);};}exports['register']=function(_0x3c9820){for(var _0x3ca8a7=0x0,_0x3af742=events[_0xf6e6('0x4')];_0x3ca8a7<_0x3af742;_0x3ca8a7++){var _0x1a3561=events[_0x3ca8a7];var _0x172fd4=createListener(_0xf6e6('0x5')+_0x1a3561,_0x3c9820);VoiceQueueReportEvents['on'](_0x1a3561,_0x172fd4);}};
\ No newline at end of file
index c54349a..9c4d9e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3178=['connect-timeout','Router','fs-extra','../../components/interaction/service','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x3178,0x176));var _0x8317=function(_0x4b7492,_0x5b804d){_0x4b7492=_0x4b7492-0x0;var _0x1a4bcb=_0x3178[_0x4b7492];return _0x1a4bcb;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x8317('0x0'));var express=require('express');var router=express[_0x8317('0x1')]();var fs_extra=require(_0x8317('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x8317('0x3'));var config=require('../../config/environment');var controller=require(_0x8317('0x4'));router[_0x8317('0x5')]('/',auth[_0x8317('0x6')](),controller[_0x8317('0x7')]);router[_0x8317('0x5')](_0x8317('0x8'),auth[_0x8317('0x6')](),controller[_0x8317('0x9')]);router[_0x8317('0xa')]('/',auth[_0x8317('0x6')](),controller[_0x8317('0xb')]);router[_0x8317('0xc')](_0x8317('0x8'),auth['isAuthenticated'](),controller[_0x8317('0xd')]);router[_0x8317('0xe')](_0x8317('0x8'),auth['isAuthenticated'](),controller[_0x8317('0xf')]);module[_0x8317('0x10')]=router;
\ No newline at end of file
+var _0x8962=['post','isAuthenticated','put','delete','/:id','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','index','show'];(function(_0x3c264c,_0x53ef54){var _0x24dc3e=function(_0x1267f5){while(--_0x1267f5){_0x3c264c['push'](_0x3c264c['shift']());}};_0x24dc3e(++_0x53ef54);}(_0x8962,0x1e2));var _0x2896=function(_0x460f85,_0x75d7f6){_0x460f85=_0x460f85-0x0;var _0x111ab4=_0x8962[_0x460f85];return _0x111ab4;};'use strict';var multer=require('multer');var util=require(_0x2896('0x0'));var path=require(_0x2896('0x1'));var timeout=require(_0x2896('0x2'));var express=require(_0x2896('0x3'));var router=express['Router']();var fs_extra=require(_0x2896('0x4'));var auth=require(_0x2896('0x5'));var interaction=require(_0x2896('0x6'));var config=require(_0x2896('0x7'));var controller=require(_0x2896('0x8'));router[_0x2896('0x9')]('/',auth['isAuthenticated'](),controller[_0x2896('0xa')]);router[_0x2896('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x2896('0xb')]);router[_0x2896('0xc')]('/',auth[_0x2896('0xd')](),controller['create']);router[_0x2896('0xe')]('/:id',auth[_0x2896('0xd')](),controller['update']);router[_0x2896('0xf')](_0x2896('0x10'),auth[_0x2896('0xd')](),controller[_0x2896('0x11')]);module[_0x2896('0x12')]=router;
\ No newline at end of file
index ed71b5b..fadf7f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58d5=['format','YYYY-MM-DD\x20HH:mm:ss','moment','STRING'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x58d5,0xd2));var _0x558d=function(_0x40be9b,_0x3d2a75){_0x40be9b=_0x40be9b-0x0;var _0x4ab64b=_0x58d5[_0x40be9b];return _0x4ab64b;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x558d('0x0'));module['exports']={'time':{'type':Sequelize[_0x558d('0x1')]},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x558d('0x1')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x558d('0x1')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x558d('0x1')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x558d('0x1')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x558d('0x1')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':moment()[_0x558d('0x2')](_0x558d('0x3'))}};
\ No newline at end of file
+var _0x4828=['sequelize','moment','exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0xed6cea,_0x4d1e59){var _0x181f52=function(_0xdf532e){while(--_0xdf532e){_0xed6cea['push'](_0xed6cea['shift']());}};_0x181f52(++_0x4d1e59);}(_0x4828,0x93));var _0x8482=function(_0x11a422,_0x5907a5){_0x11a422=_0x11a422-0x0;var _0x547177=_0x4828[_0x11a422];return _0x547177;};'use strict';var Sequelize=require(_0x8482('0x0'));var moment=require(_0x8482('0x1'));module[_0x8482('0x2')]={'time':{'type':Sequelize[_0x8482('0x3')]},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x8482('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x8482('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x8482('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x8482('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x8482('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x8482('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x8482('0x4')],'allowNull':![],'defaultValue':moment()[_0x8482('0x5')](_0x8482('0x6'))}};
\ No newline at end of file
index 6d331c3..10a3234 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd89d=['keys','rawAttributes','length','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','set','Content-Range','json','save','destroy','then','sendStatus','error','stack','name','send','index','fieldName','key','model','query','filters','attributes','intersection','fields','nolimit','order','sort','where','pick','merge','map','type','VIRTUAL','filter','options','VoiceQueuesLog','includeAll','include','findAll','catch','show'];(function(_0x23ca2f,_0x271c2b){var _0x4f4b51=function(_0x1cb6c0){while(--_0x1cb6c0){_0x23ca2f['push'](_0x23ca2f['shift']());}};_0x4f4b51(++_0x271c2b);}(_0xd89d,0x19c));var _0xdd89=function(_0x56e248,_0xd7da23){_0x56e248=_0x56e248-0x0;var _0x344ed2=_0xd89d[_0x56e248];return _0x344ed2;};'use strict';var emlformat=require(_0xdd89('0x0'));var rimraf=require(_0xdd89('0x1'));var zipdir=require(_0xdd89('0x2'));var jsonpatch=require(_0xdd89('0x3'));var rp=require(_0xdd89('0x4'));var moment=require(_0xdd89('0x5'));var BPromise=require(_0xdd89('0x6'));var Mustache=require(_0xdd89('0x7'));var util=require(_0xdd89('0x8'));var path=require(_0xdd89('0x9'));var sox=require(_0xdd89('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdd89('0xb'));var _=require(_0xdd89('0xc'));var squel=require(_0xdd89('0xd'));var crypto=require(_0xdd89('0xe'));var jsforce=require(_0xdd89('0xf'));var deskjs=require(_0xdd89('0x10'));var toCsv=require(_0xdd89('0x11'));var querystring=require(_0xdd89('0x12'));var Papa=require(_0xdd89('0x13'));var Redis=require(_0xdd89('0x14'));var authService=require(_0xdd89('0x15'));var qs=require(_0xdd89('0x16'));var as=require(_0xdd89('0x17'));var hardwareService=require(_0xdd89('0x18'));var logger=require(_0xdd89('0x19'))(_0xdd89('0x1a'));var utils=require(_0xdd89('0x1b'));var config=require(_0xdd89('0x1c'));var licenseUtil=require(_0xdd89('0x1d'));var db=require(_0xdd89('0x1e'))['db'];function respondWithStatusCode(_0x14fa43,_0x4d1161){_0x4d1161=_0x4d1161||0xcc;return function(_0x30b25f){if(_0x30b25f){return _0x14fa43['sendStatus'](_0x4d1161);}return _0x14fa43[_0xdd89('0x1f')](_0x4d1161)[_0xdd89('0x20')]();};}function respondWithResult(_0x1f2c3a,_0x1923bf){_0x1923bf=_0x1923bf||0xc8;return function(_0x22b93f){if(_0x22b93f){return _0x1f2c3a[_0xdd89('0x1f')](_0x1923bf)['json'](_0x22b93f);}};}function respondWithFilteredResult(_0x2ea5c9,_0x1eb47b){return function(_0x12a7fc){if(_0x12a7fc){var _0x40bd64=typeof _0x1eb47b[_0xdd89('0x21')]==='undefined'&&typeof _0x1eb47b['limit']===_0xdd89('0x22');var _0x58315a=_0x12a7fc[_0xdd89('0x23')];var _0x44d84d=_0x40bd64?0x0:_0x1eb47b[_0xdd89('0x21')];var _0xce30b3=_0x40bd64?_0x12a7fc[_0xdd89('0x23')]:_0x1eb47b[_0xdd89('0x21')]+_0x1eb47b[_0xdd89('0x24')];var _0x709a28;if(_0xce30b3>=_0x58315a){_0xce30b3=_0x58315a;_0x709a28=0xc8;}else{_0x709a28=0xce;}_0x2ea5c9['status'](_0x709a28);return _0x2ea5c9[_0xdd89('0x25')](_0xdd89('0x26'),_0x44d84d+'-'+_0xce30b3+'/'+_0x58315a)[_0xdd89('0x27')](_0x12a7fc);}return null;};}function patchUpdates(_0x45fe55){return function(_0x2d0476){try{jsonpatch['apply'](_0x2d0476,_0x45fe55,!![]);}catch(_0x31817a){return BPromise['reject'](_0x31817a);}return _0x2d0476[_0xdd89('0x28')]();};}function saveUpdates(_0x16ea16,_0x5bfeb1){return function(_0x3d9112){if(_0x3d9112){return _0x3d9112['update'](_0x16ea16)['then'](function(_0x3c502a){return _0x3c502a;});}return null;};}function removeEntity(_0x141805,_0x3d6316){return function(_0x146068){if(_0x146068){return _0x146068[_0xdd89('0x29')]()[_0xdd89('0x2a')](function(){_0x141805['status'](0xcc)[_0xdd89('0x20')]();});}};}function handleEntityNotFound(_0x125d19,_0xe071d0){return function(_0x59e48b){if(!_0x59e48b){_0x125d19[_0xdd89('0x2b')](0x194);}return _0x59e48b;};}function handleError(_0x462988,_0x5b28f9){_0x5b28f9=_0x5b28f9||0x1f4;return function(_0x50b901){logger[_0xdd89('0x2c')](_0x50b901[_0xdd89('0x2d')]);if(_0x50b901[_0xdd89('0x2e')]){delete _0x50b901[_0xdd89('0x2e')];}_0x462988[_0xdd89('0x1f')](_0x5b28f9)[_0xdd89('0x2f')](_0x50b901);};}exports[_0xdd89('0x30')]=function(_0x1fa5b2,_0x37c1f0){var _0x11386f={},_0x2ae336={},_0x3bef36={'count':0x0,'rows':[]};var _0x1c5af7=_['map'](db['VoiceQueuesLog']['rawAttributes'],function(_0x25aa41){return{'name':_0x25aa41[_0xdd89('0x31')],'type':_0x25aa41['type'][_0xdd89('0x32')]};});_0x2ae336[_0xdd89('0x33')]=_['map'](_0x1c5af7,_0xdd89('0x2e'));_0x2ae336['query']=_['keys'](_0x1fa5b2[_0xdd89('0x34')]);_0x2ae336[_0xdd89('0x35')]=_['intersection'](_0x2ae336[_0xdd89('0x33')],_0x2ae336[_0xdd89('0x34')]);_0x11386f[_0xdd89('0x36')]=_[_0xdd89('0x37')](_0x2ae336[_0xdd89('0x33')],qs[_0xdd89('0x38')](_0x1fa5b2[_0xdd89('0x34')][_0xdd89('0x38')]));_0x11386f['attributes']=_0x11386f[_0xdd89('0x36')]['length']?_0x11386f[_0xdd89('0x36')]:_0x2ae336[_0xdd89('0x33')];if(!_0x1fa5b2[_0xdd89('0x34')]['hasOwnProperty'](_0xdd89('0x39'))){_0x11386f[_0xdd89('0x24')]=qs['limit'](_0x1fa5b2[_0xdd89('0x34')]['limit']);_0x11386f[_0xdd89('0x21')]=qs[_0xdd89('0x21')](_0x1fa5b2[_0xdd89('0x34')][_0xdd89('0x21')]);}_0x11386f[_0xdd89('0x3a')]=qs[_0xdd89('0x3b')](_0x1fa5b2[_0xdd89('0x34')][_0xdd89('0x3b')]);_0x11386f[_0xdd89('0x3c')]=qs['filters'](_[_0xdd89('0x3d')](_0x1fa5b2[_0xdd89('0x34')],_0x2ae336[_0xdd89('0x35')]),_0x1c5af7);if(_0x1fa5b2[_0xdd89('0x34')]['filter']){_0x11386f['where']=_[_0xdd89('0x3e')](_0x11386f[_0xdd89('0x3c')],{'$or':_[_0xdd89('0x3f')](_0x1c5af7,function(_0x570793){if(_0x570793[_0xdd89('0x40')]!==_0xdd89('0x41')){var _0x590055={};_0x590055[_0x570793[_0xdd89('0x2e')]]={'$like':'%'+_0x1fa5b2[_0xdd89('0x34')][_0xdd89('0x42')]+'%'};return _0x590055;}})});}_0x11386f=_[_0xdd89('0x3e')]({},_0x11386f,_0x1fa5b2[_0xdd89('0x43')]);var _0x3e0617={'where':_0x11386f['where']};return db[_0xdd89('0x44')][_0xdd89('0x23')](_0x3e0617)['then'](function(_0x466566){_0x3bef36[_0xdd89('0x23')]=_0x466566;if(_0x1fa5b2[_0xdd89('0x34')][_0xdd89('0x45')]){_0x11386f[_0xdd89('0x46')]=[{'all':!![]}];}return db[_0xdd89('0x44')][_0xdd89('0x47')](_0x11386f);})[_0xdd89('0x2a')](function(_0x42d967){_0x3bef36['rows']=_0x42d967;return _0x3bef36;})[_0xdd89('0x2a')](respondWithFilteredResult(_0x37c1f0,_0x11386f))[_0xdd89('0x48')](handleError(_0x37c1f0,null));};exports[_0xdd89('0x49')]=function(_0x19bda5,_0x456696){var _0x298f28={'raw':!![],'where':{'id':_0x19bda5['params']['id']}},_0x4613d7={};_0x4613d7[_0xdd89('0x33')]=_[_0xdd89('0x4a')](db[_0xdd89('0x44')][_0xdd89('0x4b')]);_0x4613d7['query']=_[_0xdd89('0x4a')](_0x19bda5['query']);_0x4613d7[_0xdd89('0x35')]=_[_0xdd89('0x37')](_0x4613d7[_0xdd89('0x33')],_0x4613d7[_0xdd89('0x34')]);_0x298f28[_0xdd89('0x36')]=_[_0xdd89('0x37')](_0x4613d7['model'],qs[_0xdd89('0x38')](_0x19bda5[_0xdd89('0x34')]['fields']));_0x298f28[_0xdd89('0x36')]=_0x298f28['attributes'][_0xdd89('0x4c')]?_0x298f28[_0xdd89('0x36')]:_0x4613d7[_0xdd89('0x33')];if(_0x19bda5[_0xdd89('0x34')][_0xdd89('0x45')]){_0x298f28[_0xdd89('0x46')]=[{'all':!![]}];}_0x298f28=_[_0xdd89('0x3e')]({},_0x298f28,_0x19bda5[_0xdd89('0x43')]);return db[_0xdd89('0x44')][_0xdd89('0x4d')](_0x298f28)['then'](handleEntityNotFound(_0x456696,null))[_0xdd89('0x2a')](respondWithResult(_0x456696,null))[_0xdd89('0x48')](handleError(_0x456696,null));};exports[_0xdd89('0x4e')]=function(_0x128995,_0x51cccf){return db[_0xdd89('0x44')]['create'](_0x128995['body'],{})[_0xdd89('0x2a')](respondWithResult(_0x51cccf,0xc9))[_0xdd89('0x48')](handleError(_0x51cccf,null));};exports['update']=function(_0x20d35a,_0x1e8457){if(_0x20d35a[_0xdd89('0x4f')]['id']){delete _0x20d35a[_0xdd89('0x4f')]['id'];}return db['VoiceQueuesLog'][_0xdd89('0x4d')]({'where':{'id':_0x20d35a['params']['id']}})['then'](handleEntityNotFound(_0x1e8457,null))['then'](saveUpdates(_0x20d35a['body'],null))[_0xdd89('0x2a')](respondWithResult(_0x1e8457,null))[_0xdd89('0x48')](handleError(_0x1e8457,null));};exports['destroy']=function(_0x3cbd26,_0x343273){return db[_0xdd89('0x44')][_0xdd89('0x4d')]({'where':{'id':_0x3cbd26[_0xdd89('0x50')]['id']}})['then'](handleEntityNotFound(_0x343273,null))[_0xdd89('0x2a')](removeEntity(_0x343273,null))[_0xdd89('0x48')](handleError(_0x343273,null));};
\ No newline at end of file
+var _0x004f=['util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','VoiceQueuesLog','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','length','find','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','mustache'];(function(_0x1b17e8,_0x2e9f8c){var _0x1b8693=function(_0x646874){while(--_0x646874){_0x1b17e8['push'](_0x1b17e8['shift']());}};_0x1b8693(++_0x2e9f8c);}(_0x004f,0xd0));var _0xf004=function(_0x47552e,_0x1c6fa6){_0x47552e=_0x47552e-0x0;var _0x534640=_0x004f[_0x47552e];return _0x534640;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf004('0x0'));var zipdir=require(_0xf004('0x1'));var jsonpatch=require(_0xf004('0x2'));var rp=require(_0xf004('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf004('0x4'));var util=require(_0xf004('0x5'));var path=require(_0xf004('0x6'));var sox=require('sox');var csv=require(_0xf004('0x7'));var ejs=require(_0xf004('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xf004('0x9'));var crypto=require(_0xf004('0xa'));var jsforce=require(_0xf004('0xb'));var deskjs=require(_0xf004('0xc'));var toCsv=require(_0xf004('0x7'));var querystring=require('querystring');var Papa=require(_0xf004('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf004('0xe'));var as=require(_0xf004('0xf'));var hardwareService=require(_0xf004('0x10'));var logger=require('../../config/logger')(_0xf004('0x11'));var utils=require(_0xf004('0x12'));var config=require(_0xf004('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xf004('0x14'))['db'];function respondWithStatusCode(_0x363a76,_0x1092d1){_0x1092d1=_0x1092d1||0xcc;return function(_0x3a1b78){if(_0x3a1b78){return _0x363a76['sendStatus'](_0x1092d1);}return _0x363a76[_0xf004('0x15')](_0x1092d1)[_0xf004('0x16')]();};}function respondWithResult(_0x57b419,_0x1bc731){_0x1bc731=_0x1bc731||0xc8;return function(_0x2ded38){if(_0x2ded38){return _0x57b419['status'](_0x1bc731)[_0xf004('0x17')](_0x2ded38);}};}function respondWithFilteredResult(_0x1b01e0,_0x1ba6e1){return function(_0x4d19b3){if(_0x4d19b3){var _0x33cef7=typeof _0x1ba6e1[_0xf004('0x18')]==='undefined'&&typeof _0x1ba6e1[_0xf004('0x19')]===_0xf004('0x1a');var _0x53727d=_0x4d19b3[_0xf004('0x1b')];var _0x4dc56f=_0x33cef7?0x0:_0x1ba6e1[_0xf004('0x18')];var _0x54bc55=_0x33cef7?_0x4d19b3[_0xf004('0x1b')]:_0x1ba6e1[_0xf004('0x18')]+_0x1ba6e1[_0xf004('0x19')];var _0x26c70f;if(_0x54bc55>=_0x53727d){_0x54bc55=_0x53727d;_0x26c70f=0xc8;}else{_0x26c70f=0xce;}_0x1b01e0[_0xf004('0x15')](_0x26c70f);return _0x1b01e0['set'](_0xf004('0x1c'),_0x4dc56f+'-'+_0x54bc55+'/'+_0x53727d)[_0xf004('0x17')](_0x4d19b3);}return null;};}function patchUpdates(_0x1f9136){return function(_0x39ac0d){try{jsonpatch[_0xf004('0x1d')](_0x39ac0d,_0x1f9136,!![]);}catch(_0x24fc69){return BPromise[_0xf004('0x1e')](_0x24fc69);}return _0x39ac0d[_0xf004('0x1f')]();};}function saveUpdates(_0x2cbecf,_0x31f358){return function(_0x5d32a4){if(_0x5d32a4){return _0x5d32a4[_0xf004('0x20')](_0x2cbecf)[_0xf004('0x21')](function(_0x5b502f){return _0x5b502f;});}return null;};}function removeEntity(_0x1927de,_0x4adb70){return function(_0x565acb){if(_0x565acb){return _0x565acb[_0xf004('0x22')]()[_0xf004('0x21')](function(){_0x1927de[_0xf004('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44da6b,_0x58f00c){return function(_0x557f8f){if(!_0x557f8f){_0x44da6b[_0xf004('0x23')](0x194);}return _0x557f8f;};}function handleError(_0x48e6fe,_0x3aad94){_0x3aad94=_0x3aad94||0x1f4;return function(_0x40c4c4){logger[_0xf004('0x24')](_0x40c4c4[_0xf004('0x25')]);if(_0x40c4c4[_0xf004('0x26')]){delete _0x40c4c4[_0xf004('0x26')];}_0x48e6fe[_0xf004('0x15')](_0x3aad94)[_0xf004('0x27')](_0x40c4c4);};}exports['index']=function(_0x2810c3,_0x47f6ff){var _0x70be44={},_0x343ba6={},_0x48c693={'count':0x0,'rows':[]};var _0xcf0533=_[_0xf004('0x28')](db[_0xf004('0x29')]['rawAttributes'],function(_0x229c4b){return{'name':_0x229c4b[_0xf004('0x2a')],'type':_0x229c4b[_0xf004('0x2b')][_0xf004('0x2c')]};});_0x343ba6[_0xf004('0x2d')]=_[_0xf004('0x28')](_0xcf0533,_0xf004('0x26'));_0x343ba6[_0xf004('0x2e')]=_[_0xf004('0x2f')](_0x2810c3[_0xf004('0x2e')]);_0x343ba6[_0xf004('0x30')]=_[_0xf004('0x31')](_0x343ba6[_0xf004('0x2d')],_0x343ba6[_0xf004('0x2e')]);_0x70be44[_0xf004('0x32')]=_[_0xf004('0x31')](_0x343ba6[_0xf004('0x2d')],qs[_0xf004('0x33')](_0x2810c3['query'][_0xf004('0x33')]));_0x70be44[_0xf004('0x32')]=_0x70be44[_0xf004('0x32')]['length']?_0x70be44[_0xf004('0x32')]:_0x343ba6['model'];if(!_0x2810c3['query'][_0xf004('0x34')]('nolimit')){_0x70be44[_0xf004('0x19')]=qs[_0xf004('0x19')](_0x2810c3[_0xf004('0x2e')][_0xf004('0x19')]);_0x70be44[_0xf004('0x18')]=qs[_0xf004('0x18')](_0x2810c3[_0xf004('0x2e')][_0xf004('0x18')]);}_0x70be44[_0xf004('0x35')]=qs[_0xf004('0x36')](_0x2810c3[_0xf004('0x2e')][_0xf004('0x36')]);_0x70be44[_0xf004('0x37')]=qs[_0xf004('0x30')](_[_0xf004('0x38')](_0x2810c3[_0xf004('0x2e')],_0x343ba6[_0xf004('0x30')]),_0xcf0533);if(_0x2810c3['query'][_0xf004('0x39')]){_0x70be44[_0xf004('0x37')]=_['merge'](_0x70be44[_0xf004('0x37')],{'$or':_[_0xf004('0x28')](_0xcf0533,function(_0x2d9994){if(_0x2d9994['type']!==_0xf004('0x3a')){var _0x1a09ee={};_0x1a09ee[_0x2d9994[_0xf004('0x26')]]={'$like':'%'+_0x2810c3['query']['filter']+'%'};return _0x1a09ee;}})});}_0x70be44=_[_0xf004('0x3b')]({},_0x70be44,_0x2810c3[_0xf004('0x3c')]);var _0x2ea9c3={'where':_0x70be44[_0xf004('0x37')]};return db[_0xf004('0x29')]['count'](_0x2ea9c3)[_0xf004('0x21')](function(_0x425686){_0x48c693['count']=_0x425686;if(_0x2810c3[_0xf004('0x2e')][_0xf004('0x3d')]){_0x70be44[_0xf004('0x3e')]=[{'all':!![]}];}return db[_0xf004('0x29')]['findAll'](_0x70be44);})['then'](function(_0x310c1a){_0x48c693[_0xf004('0x3f')]=_0x310c1a;return _0x48c693;})[_0xf004('0x21')](respondWithFilteredResult(_0x47f6ff,_0x70be44))[_0xf004('0x40')](handleError(_0x47f6ff,null));};exports[_0xf004('0x41')]=function(_0x15bf46,_0x178db2){var _0x131e94={'raw':!![],'where':{'id':_0x15bf46['params']['id']}},_0x20d4c6={};_0x20d4c6[_0xf004('0x2d')]=_['keys'](db[_0xf004('0x29')]['rawAttributes']);_0x20d4c6['query']=_[_0xf004('0x2f')](_0x15bf46[_0xf004('0x2e')]);_0x20d4c6[_0xf004('0x30')]=_['intersection'](_0x20d4c6[_0xf004('0x2d')],_0x20d4c6[_0xf004('0x2e')]);_0x131e94[_0xf004('0x32')]=_[_0xf004('0x31')](_0x20d4c6[_0xf004('0x2d')],qs['fields'](_0x15bf46[_0xf004('0x2e')][_0xf004('0x33')]));_0x131e94[_0xf004('0x32')]=_0x131e94[_0xf004('0x32')][_0xf004('0x42')]?_0x131e94[_0xf004('0x32')]:_0x20d4c6['model'];if(_0x15bf46[_0xf004('0x2e')][_0xf004('0x3d')]){_0x131e94[_0xf004('0x3e')]=[{'all':!![]}];}_0x131e94=_[_0xf004('0x3b')]({},_0x131e94,_0x15bf46['options']);return db[_0xf004('0x29')][_0xf004('0x43')](_0x131e94)[_0xf004('0x21')](handleEntityNotFound(_0x178db2,null))[_0xf004('0x21')](respondWithResult(_0x178db2,null))['catch'](handleError(_0x178db2,null));};exports[_0xf004('0x44')]=function(_0x255b2e,_0x377910){return db['VoiceQueuesLog'][_0xf004('0x44')](_0x255b2e[_0xf004('0x45')],{})['then'](respondWithResult(_0x377910,0xc9))[_0xf004('0x40')](handleError(_0x377910,null));};exports['update']=function(_0x15b4fd,_0x5198f5){if(_0x15b4fd[_0xf004('0x45')]['id']){delete _0x15b4fd['body']['id'];}return db['VoiceQueuesLog'][_0xf004('0x43')]({'where':{'id':_0x15b4fd['params']['id']}})['then'](handleEntityNotFound(_0x5198f5,null))[_0xf004('0x21')](saveUpdates(_0x15b4fd[_0xf004('0x45')],null))[_0xf004('0x21')](respondWithResult(_0x5198f5,null))[_0xf004('0x40')](handleError(_0x5198f5,null));};exports['destroy']=function(_0x38f771,_0x4a450e){return db[_0xf004('0x29')][_0xf004('0x43')]({'where':{'id':_0x38f771[_0xf004('0x46')]['id']}})['then'](handleEntityNotFound(_0x4a450e,null))[_0xf004('0x21')](removeEntity(_0x4a450e,null))['catch'](handleError(_0x4a450e,null));};
\ No newline at end of file
index e888d51..1d1e290 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5081=['VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports'];(function(_0x3a93ac,_0x198ca8){var _0x35c088=function(_0xdb1a1e){while(--_0xdb1a1e){_0x3a93ac['push'](_0x3a93ac['shift']());}};_0x35c088(++_0x198ca8);}(_0x5081,0x148));var _0x1508=function(_0x102d69,_0x43a63a){_0x102d69=_0x102d69-0x0;var _0x4925b0=_0x5081[_0x102d69];return _0x4925b0;};'use strict';var _=require(_0x1508('0x0'));var util=require(_0x1508('0x1'));var logger=require(_0x1508('0x2'))(_0x1508('0x3'));var moment=require(_0x1508('0x4'));var BPromise=require(_0x1508('0x5'));var rp=require(_0x1508('0x6'));var fs=require('fs');var path=require(_0x1508('0x7'));var rimraf=require(_0x1508('0x8'));var config=require(_0x1508('0x9'));var attributes=require(_0x1508('0xa'));module[_0x1508('0xb')]=function(_0x4a339c,_0x44f4c3){return _0x4a339c['define'](_0x1508('0xc'),attributes,{'tableName':_0x1508('0xd'),'paranoid':![],'indexes':[{'name':_0x1508('0xe'),'fields':[_0x1508('0xf'),_0x1508('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xed8a=['event_dtm','event','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','define','VoiceQueuesLog','voice_queues_log'];(function(_0x48788c,_0x22c6cf){var _0x111b0f=function(_0x4087db){while(--_0x4087db){_0x48788c['push'](_0x48788c['shift']());}};_0x111b0f(++_0x22c6cf);}(_0xed8a,0xc5));var _0xaed8=function(_0x29658d,_0x594d6d){_0x29658d=_0x29658d-0x0;var _0x1d6757=_0xed8a[_0x29658d];return _0x1d6757;};'use strict';var _=require(_0xaed8('0x0'));var util=require(_0xaed8('0x1'));var logger=require(_0xaed8('0x2'))(_0xaed8('0x3'));var moment=require('moment');var BPromise=require(_0xaed8('0x4'));var rp=require(_0xaed8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaed8('0x6'));var config=require(_0xaed8('0x7'));var attributes=require('./voiceQueuesLog.attributes');module['exports']=function(_0x347ca1,_0x7e6c5e){return _0x347ca1[_0xaed8('0x8')](_0xaed8('0x9'),attributes,{'tableName':_0xaed8('0xa'),'paranoid':![],'indexes':[{'name':_0xaed8('0xb'),'fields':[_0xaed8('0xc'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
index ee75f63..e41be8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51ba=['code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','jayson/promise','client','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2a58d1,_0x4b8dae){var _0x3b3291=function(_0x280ce6){while(--_0x280ce6){_0x2a58d1['push'](_0x2a58d1['shift']());}};_0x3b3291(++_0x4b8dae);}(_0x51ba,0x169));var _0xa51b=function(_0x3377ed,_0x357c3c){_0x3377ed=_0x3377ed-0x0;var _0x587077=_0x51ba[_0x3377ed];return _0x587077;};'use strict';var _=require('lodash');var util=require(_0xa51b('0x0'));var moment=require(_0xa51b('0x1'));var BPromise=require(_0xa51b('0x2'));var rs=require(_0xa51b('0x3'));var fs=require('fs');var Redis=require(_0xa51b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa51b('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xa51b('0x6'));var client=jayson[_0xa51b('0x7')][_0xa51b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xb8cc99,_0x53af50,_0x15ab36){return new BPromise(function(_0x5cff86,_0x5c532d){return client[_0xa51b('0x9')](_0xb8cc99,_0x15ab36)[_0xa51b('0xa')](function(_0x4013f3){logger[_0xa51b('0xb')](_0xa51b('0xc'),_0x53af50,'request\x20sent');logger[_0xa51b('0xd')](_0xa51b('0xe'),_0x53af50,'request\x20sent',JSON[_0xa51b('0xf')](_0x4013f3));if(_0x4013f3[_0xa51b('0x10')]){if(_0x4013f3[_0xa51b('0x10')][_0xa51b('0x11')]===0x1f4){logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x53af50,_0x4013f3[_0xa51b('0x10')][_0xa51b('0x12')]);return _0x5c532d(_0x4013f3['error'][_0xa51b('0x12')]);}logger[_0xa51b('0x10')](_0xa51b('0xc'),_0x53af50,_0x4013f3['error'][_0xa51b('0x12')]);return _0x5cff86(_0x4013f3['error'][_0xa51b('0x12')]);}else{logger[_0xa51b('0xb')](_0xa51b('0xc'),_0x53af50,'request\x20sent');_0x5cff86(_0x4013f3[_0xa51b('0x13')][_0xa51b('0x12')]);}})[_0xa51b('0x14')](function(_0x3a1ed7){logger[_0xa51b('0x10')](_0xa51b('0xc'),_0x53af50,_0x3a1ed7);_0x5c532d(_0x3a1ed7);});});}
\ No newline at end of file
+var _0xaef2=['VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info'];(function(_0x3545db,_0x215a5c){var _0x479a35=function(_0x2a7daf){while(--_0x2a7daf){_0x3545db['push'](_0x3545db['shift']());}};_0x479a35(++_0x215a5c);}(_0xaef2,0x138));var _0x2aef=function(_0xc6a44c,_0x3123e4){_0xc6a44c=_0xc6a44c-0x0;var _0x16324d=_0xaef2[_0xc6a44c];return _0x16324d;};'use strict';var _=require(_0x2aef('0x0'));var util=require(_0x2aef('0x1'));var moment=require(_0x2aef('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2aef('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x2aef('0x4'));var logger=require(_0x2aef('0x5'))(_0x2aef('0x6'));var config=require(_0x2aef('0x7'));var jayson=require(_0x2aef('0x8'));var client=jayson[_0x2aef('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f43d5,_0x1d90f0,_0x11c9cf){return new BPromise(function(_0xd5e3ff,_0x1e5c53){return client[_0x2aef('0xa')](_0x1f43d5,_0x11c9cf)['then'](function(_0x13e942){logger[_0x2aef('0xb')](_0x2aef('0xc'),_0x1d90f0,_0x2aef('0xd'));logger['debug']('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x1d90f0,_0x2aef('0xd'),JSON[_0x2aef('0xe')](_0x13e942));if(_0x13e942[_0x2aef('0xf')]){if(_0x13e942[_0x2aef('0xf')]['code']===0x1f4){logger[_0x2aef('0xf')]('VoiceQueuesLog,\x20%s,\x20%s',_0x1d90f0,_0x13e942[_0x2aef('0xf')]['message']);return _0x1e5c53(_0x13e942[_0x2aef('0xf')][_0x2aef('0x10')]);}logger['error'](_0x2aef('0xc'),_0x1d90f0,_0x13e942[_0x2aef('0xf')]['message']);return _0xd5e3ff(_0x13e942[_0x2aef('0xf')][_0x2aef('0x10')]);}else{logger[_0x2aef('0xb')](_0x2aef('0xc'),_0x1d90f0,_0x2aef('0xd'));_0xd5e3ff(_0x13e942['result']['message']);}})[_0x2aef('0x11')](function(_0x526316){logger[_0x2aef('0xf')](_0x2aef('0xc'),_0x1d90f0,_0x526316);_0x1e5c53(_0x526316);});});}
\ No newline at end of file
index 48a754c..c9029c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x010c=['download','/:id/transcribe','create','post','put','delete','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','./voiceRecording.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0x010c,0x85));var _0xc010=function(_0x315c0b,_0x150529){_0x315c0b=_0x315c0b-0x0;var _0x4d55cc=_0x010c[_0x315c0b];return _0x4d55cc;};'use strict';var multer=require(_0xc010('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc010('0x1'));var express=require(_0xc010('0x2'));var router=express[_0xc010('0x3')]();var fs_extra=require(_0xc010('0x4'));var auth=require(_0xc010('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc010('0x6'));router[_0xc010('0x7')]('/',auth[_0xc010('0x8')](),controller[_0xc010('0x9')]);router[_0xc010('0x7')](_0xc010('0xa'),auth[_0xc010('0x8')](),controller[_0xc010('0xb')]);router['get'](_0xc010('0xc'),auth[_0xc010('0x8')](),controller[_0xc010('0xd')]);router['get']('/:id/download',auth[_0xc010('0x8')](),controller[_0xc010('0xe')]);router[_0xc010('0x7')]('/:id/downloads',controller['downloads']);router[_0xc010('0x7')](_0xc010('0xf'),auth[_0xc010('0x8')](),controller['downloadTranscribe']);router['post']('/',auth[_0xc010('0x8')](),controller[_0xc010('0x10')]);router[_0xc010('0x11')](_0xc010('0xf'),auth[_0xc010('0x8')](),controller['runTranscribe']);router[_0xc010('0x12')](_0xc010('0xc'),auth[_0xc010('0x8')](),controller['update']);router[_0xc010('0x13')](_0xc010('0xc'),auth['isAuthenticated'](),controller[_0xc010('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x5f8b=['/describe','isAuthenticated','describe','/:id','show','download','downloads','downloadTranscribe','create','post','update','delete','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','index','get'];(function(_0x41f408,_0x58f56d){var _0x45e216=function(_0x44ddf6){while(--_0x44ddf6){_0x41f408['push'](_0x41f408['shift']());}};_0x45e216(++_0x58f56d);}(_0x5f8b,0x1af));var _0xb5f8=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x5f8b[_0x42cae2];return _0x5f256f;};'use strict';var multer=require(_0xb5f8('0x0'));var util=require(_0xb5f8('0x1'));var path=require(_0xb5f8('0x2'));var timeout=require(_0xb5f8('0x3'));var express=require('express');var router=express[_0xb5f8('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb5f8('0x5'));var config=require(_0xb5f8('0x6'));var controller=require('./voiceRecording.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xb5f8('0x7')]);router[_0xb5f8('0x8')](_0xb5f8('0x9'),auth[_0xb5f8('0xa')](),controller[_0xb5f8('0xb')]);router['get'](_0xb5f8('0xc'),auth[_0xb5f8('0xa')](),controller[_0xb5f8('0xd')]);router[_0xb5f8('0x8')]('/:id/download',auth[_0xb5f8('0xa')](),controller[_0xb5f8('0xe')]);router['get']('/:id/downloads',controller[_0xb5f8('0xf')]);router[_0xb5f8('0x8')]('/:id/transcribe',auth[_0xb5f8('0xa')](),controller[_0xb5f8('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb5f8('0x11')]);router[_0xb5f8('0x12')]('/:id/transcribe',auth[_0xb5f8('0xa')](),controller['runTranscribe']);router['put'](_0xb5f8('0xc'),auth[_0xb5f8('0xa')](),controller[_0xb5f8('0x13')]);router[_0xb5f8('0x14')](_0xb5f8('0xc'),auth[_0xb5f8('0xa')](),controller['destroy']);module[_0xb5f8('0x15')]=router;
\ No newline at end of file
index 47330f6..bb1ee2f 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(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
+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(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'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 19df112..32a4bf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb124=['catch','create','body','update','describe','download','uniqueid','find','value','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','extname','unlink','message','send','Not\x20found','downloads','../../components/encryptor','sequelize','col','$and','push','secrets','filename','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','Location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeRegion','language','Transcribe\x20not\x20configured','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','transcribeAccountId','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','tempSentiment','updateAttributes','writeFile','fileText','/server/files/transcribes/transcribe_','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','uuid/v4','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','Content-Range','reject','save','then','destroy','error','stack','name','VoiceRecording','fieldName','type','key','differenceBy','map','format','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','where','pick','filter','merge','VIRTUAL','options','count','include','rows','params','rawAttributes'];(function(_0x2641f5,_0x2e5f77){var _0xdf1aa9=function(_0x1a479e){while(--_0x1a479e){_0x2641f5['push'](_0x2641f5['shift']());}};_0xdf1aa9(++_0x2e5f77);}(_0xb124,0xe2));var _0x4b12=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xb124[_0x618414];return _0x21c19a;};'use strict';var emlformat=require(_0x4b12('0x0'));var rimraf=require(_0x4b12('0x1'));var zipdir=require(_0x4b12('0x2'));var jsonpatch=require(_0x4b12('0x3'));var rp=require(_0x4b12('0x4'));var moment=require(_0x4b12('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4b12('0x6'));var util=require(_0x4b12('0x7'));var path=require('path');var sox=require(_0x4b12('0x8'));var csv=require(_0x4b12('0x9'));var ejs=require(_0x4b12('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4b12('0xb'));var squel=require(_0x4b12('0xc'));var crypto=require('crypto');var jsforce=require(_0x4b12('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4b12('0xe'));var Papa=require(_0x4b12('0xf'));var AWS=require('aws-sdk');var uuidv4=require(_0x4b12('0x10'));var Redis=require('ioredis');var authService=require(_0x4b12('0x11'));var qs=require(_0x4b12('0x12'));var as=require(_0x4b12('0x13'));var hardwareService=require(_0x4b12('0x14'));var logger=require(_0x4b12('0x15'))('api');var utils=require(_0x4b12('0x16'));var config=require(_0x4b12('0x17'));var licenseUtil=require(_0x4b12('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5b3bb4,_0x5af153){_0x5af153=_0x5af153||0xcc;return function(_0x52148c){if(_0x52148c){return _0x5b3bb4[_0x4b12('0x19')](_0x5af153);}return _0x5b3bb4['status'](_0x5af153)[_0x4b12('0x1a')]();};}function respondWithResult(_0x3b5930,_0x4846c0){_0x4846c0=_0x4846c0||0xc8;return function(_0xdd9ac4){if(_0xdd9ac4){return _0x3b5930[_0x4b12('0x1b')](_0x4846c0)[_0x4b12('0x1c')](_0xdd9ac4);}};}function respondWithFilteredResult(_0x3a961e,_0x5e9fb6){return function(_0x1794e5){if(_0x1794e5){var _0x21e3a2=typeof _0x5e9fb6[_0x4b12('0x1d')]===_0x4b12('0x1e')&&typeof _0x5e9fb6['limit']==='undefined';var _0x1700c8=_0x1794e5['count'];var _0x244bfe=_0x21e3a2?0x0:_0x5e9fb6[_0x4b12('0x1d')];var _0x40e2f9=_0x21e3a2?_0x1794e5['count']:_0x5e9fb6[_0x4b12('0x1d')]+_0x5e9fb6[_0x4b12('0x1f')];var _0x31ccea;if(_0x40e2f9>=_0x1700c8){_0x40e2f9=_0x1700c8;_0x31ccea=0xc8;}else{_0x31ccea=0xce;}_0x3a961e[_0x4b12('0x1b')](_0x31ccea);return _0x3a961e['set'](_0x4b12('0x20'),_0x244bfe+'-'+_0x40e2f9+'/'+_0x1700c8)[_0x4b12('0x1c')](_0x1794e5);}return null;};}function patchUpdates(_0x24f452){return function(_0x5271a3){try{jsonpatch['apply'](_0x5271a3,_0x24f452,!![]);}catch(_0x4030b2){return BPromise[_0x4b12('0x21')](_0x4030b2);}return _0x5271a3[_0x4b12('0x22')]();};}function saveUpdates(_0x10eddb,_0x7d6875){return function(_0x59251e){if(_0x59251e){return _0x59251e['update'](_0x10eddb)[_0x4b12('0x23')](function(_0x18c1e0){return _0x18c1e0;});}return null;};}function removeEntity(_0x240cda,_0xb65bfb){return function(_0x21c08a){if(_0x21c08a){return _0x21c08a[_0x4b12('0x24')]()['then'](function(){_0x240cda[_0x4b12('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d8e22,_0x51641a){return function(_0x45d68c){if(!_0x45d68c){_0x1d8e22['sendStatus'](0x194);}return _0x45d68c;};}function handleError(_0x4725ef,_0x1c5221){_0x1c5221=_0x1c5221||0x1f4;return function(_0x1dfa24){logger[_0x4b12('0x25')](_0x1dfa24[_0x4b12('0x26')]);if(_0x1dfa24['name']){delete _0x1dfa24[_0x4b12('0x27')];}_0x4725ef[_0x4b12('0x1b')](_0x1c5221)['send'](_0x1dfa24);};}exports['index']=function(_0x486ec4,_0x1c7b94){var _0x460990={},_0x4042b4={},_0x5f3639={'count':0x0,'rows':[]};var _0x188052=_['map'](db[_0x4b12('0x28')]['rawAttributes'],function(_0x1f120b){return{'name':_0x1f120b[_0x4b12('0x29')],'type':_0x1f120b[_0x4b12('0x2a')][_0x4b12('0x2b')]};});_0x4042b4['model']=_[_0x4b12('0x2c')](_[_0x4b12('0x2d')](_0x188052,'name'),[_0x4b12('0x2e')]);_0x4042b4[_0x4b12('0x2f')]=_[_0x4b12('0x30')](_0x486ec4[_0x4b12('0x2f')]);_0x4042b4[_0x4b12('0x31')]=_['intersection'](_0x4042b4[_0x4b12('0x32')],_0x4042b4[_0x4b12('0x2f')]);_0x460990[_0x4b12('0x33')]=_[_0x4b12('0x34')](_0x4042b4[_0x4b12('0x32')],qs[_0x4b12('0x35')](_0x486ec4['query'][_0x4b12('0x35')]));_0x460990['attributes']=_0x460990[_0x4b12('0x33')][_0x4b12('0x36')]?_0x460990[_0x4b12('0x33')]:_0x4042b4['model'];if(!_0x486ec4[_0x4b12('0x2f')][_0x4b12('0x37')]('nolimit')){_0x460990['limit']=qs[_0x4b12('0x1f')](_0x486ec4[_0x4b12('0x2f')]['limit']);_0x460990[_0x4b12('0x1d')]=qs[_0x4b12('0x1d')](_0x486ec4[_0x4b12('0x2f')]['offset']);}_0x460990[_0x4b12('0x38')]=qs['sort'](_0x486ec4[_0x4b12('0x2f')]['sort']);_0x460990[_0x4b12('0x39')]=qs['filters'](_[_0x4b12('0x3a')](_0x486ec4[_0x4b12('0x2f')],_0x4042b4[_0x4b12('0x31')]),_0x188052);if(_0x486ec4['query'][_0x4b12('0x3b')]){_0x460990['where']=_[_0x4b12('0x3c')](_0x460990[_0x4b12('0x39')],{'$or':_[_0x4b12('0x2d')](_0x188052,function(_0x2ef00b){if(_0x2ef00b[_0x4b12('0x2a')]!==_0x4b12('0x3d')){var _0x508713={};_0x508713[_0x2ef00b[_0x4b12('0x27')]]={'$like':'%'+_0x486ec4[_0x4b12('0x2f')]['filter']+'%'};return _0x508713;}})});}_0x460990=_[_0x4b12('0x3c')]({},_0x460990,_0x486ec4[_0x4b12('0x3e')]);var _0x29f0a3={'where':_0x460990['where']};return db[_0x4b12('0x28')][_0x4b12('0x3f')](_0x29f0a3)[_0x4b12('0x23')](function(_0x3d6f2b){_0x5f3639[_0x4b12('0x3f')]=_0x3d6f2b;if(_0x486ec4['query']['includeAll']){_0x460990[_0x4b12('0x40')]=[{'all':!![]}];}return db[_0x4b12('0x28')]['findAll'](_0x460990);})[_0x4b12('0x23')](function(_0x2baa57){_0x5f3639[_0x4b12('0x41')]=_0x2baa57;return _0x5f3639;})[_0x4b12('0x23')](respondWithFilteredResult(_0x1c7b94,_0x460990))['catch'](handleError(_0x1c7b94,null));};exports['show']=function(_0x4ec54f,_0x3ebcbc){var _0x3413c7={'raw':![],'where':{'id':_0x4ec54f[_0x4b12('0x42')]['id']}},_0xedf680={};_0xedf680[_0x4b12('0x32')]=_[_0x4b12('0x30')](db['VoiceRecording'][_0x4b12('0x43')]);_0xedf680['query']=_['keys'](_0x4ec54f[_0x4b12('0x2f')]);_0xedf680['filters']=_['intersection'](_0xedf680[_0x4b12('0x32')],_0xedf680[_0x4b12('0x2f')]);_0x3413c7['attributes']=_[_0x4b12('0x34')](_0xedf680[_0x4b12('0x32')],qs[_0x4b12('0x35')](_0x4ec54f[_0x4b12('0x2f')][_0x4b12('0x35')]));_0x3413c7['attributes']=_0x3413c7[_0x4b12('0x33')]['length']?_0x3413c7['attributes']:_0xedf680[_0x4b12('0x32')];if(_0x4ec54f[_0x4b12('0x2f')]['includeAll']){_0x3413c7[_0x4b12('0x40')]=[{'all':!![]}];}_0x3413c7=_[_0x4b12('0x3c')]({},_0x3413c7,_0x4ec54f[_0x4b12('0x3e')]);return db['VoiceRecording']['find'](_0x3413c7)[_0x4b12('0x23')](handleEntityNotFound(_0x3ebcbc,null))[_0x4b12('0x23')](respondWithResult(_0x3ebcbc,null))[_0x4b12('0x44')](handleError(_0x3ebcbc,null));};exports[_0x4b12('0x45')]=function(_0x38d299,_0x2b8aa9){return db[_0x4b12('0x28')][_0x4b12('0x45')](_0x38d299[_0x4b12('0x46')],{})[_0x4b12('0x23')](respondWithResult(_0x2b8aa9,0xc9))['catch'](handleError(_0x2b8aa9,null));};exports[_0x4b12('0x47')]=function(_0x1a7129,_0x46ab01){if(_0x1a7129[_0x4b12('0x46')]['id']){delete _0x1a7129[_0x4b12('0x46')]['id'];}return db[_0x4b12('0x28')]['find']({'where':{'id':_0x1a7129[_0x4b12('0x42')]['id']}})[_0x4b12('0x23')](handleEntityNotFound(_0x46ab01,null))[_0x4b12('0x23')](saveUpdates(_0x1a7129[_0x4b12('0x46')],null))['then'](respondWithResult(_0x46ab01,null))[_0x4b12('0x44')](handleError(_0x46ab01,null));};exports[_0x4b12('0x48')]=function(_0x39b944,_0x47dbf8){return db[_0x4b12('0x28')]['describe']()['then'](respondWithResult(_0x47dbf8,null))[_0x4b12('0x44')](handleError(_0x47dbf8,null));};exports[_0x4b12('0x49')]=function(_0x1858ba,_0x38efe9,_0x5d1201){var _0x49f7c9=require('../../components/encryptor');var _0x10b09f=![];var _0x3e70d5={};if(_0x1858ba[_0x4b12('0x2f')]['type']&&_0x1858ba[_0x4b12('0x2f')][_0x4b12('0x2a')]==='uniqueid'){_0x3e70d5[_0x4b12('0x4a')]=_0x1858ba['params']['id'];}else{_0x3e70d5['id']=_0x1858ba[_0x4b12('0x42')]['id'];}return db['VoiceRecording'][_0x4b12('0x4b')]({'where':_0x3e70d5,'attributes':['id','value'],'raw':!![]})[_0x4b12('0x23')](handleEntityNotFound(_0x38efe9,null))['then'](function(_0x5cc9bb){if(_0x5cc9bb){var _0x21e998=_0x5cc9bb[_0x4b12('0x4c')];var _0x1fa1d0=util[_0x4b12('0x2e')](_0x4b12('0x4d'),_0x21e998);if(fs[_0x4b12('0x4e')](_0x1fa1d0)){_0x10b09f=!![];return _0x49f7c9[_0x4b12('0x4f')](_0x1fa1d0,_0x21e998,config['secrets'][_0x4b12('0x50')])[_0x4b12('0x23')](function(){return _0x5cc9bb;});}return _0x5cc9bb;}})[_0x4b12('0x23')](function(_0x248ec9){if(_0x248ec9){var _0x3eb9b6=_0x248ec9[_0x4b12('0x4c')];if(!fs['existsSync'](_0x3eb9b6)){throw new db[(_0x4b12('0x51'))][(_0x4b12('0x52'))](_0x4b12('0x53'));}if(_0x248ec9['filename']){return _0x38efe9[_0x4b12('0x49')](_0x3eb9b6,_0x248ec9['filename']+path[_0x4b12('0x54')](_0x3eb9b6),function(){if(_0x10b09f){fs[_0x4b12('0x55')](_0x3eb9b6);}});}else{return _0x38efe9[_0x4b12('0x49')](_0x3eb9b6,function(_0x5a27fe){if(_0x10b09f){fs['unlink'](_0x3eb9b6);}});}}})['catch'](function(_0xda7463){if(_0xda7463[_0x4b12('0x56')]===_0x4b12('0x53')){_0x38efe9[_0x4b12('0x1b')](0x194)[_0x4b12('0x57')](_0x4b12('0x58'));}else{return handleError(_0x38efe9,null);}});};exports[_0x4b12('0x59')]=function(_0x3ba3d6,_0xe9ffd5,_0x14a862){var _0x4d0c58=require(_0x4b12('0x5a'));var _0x5b9a67=![];var _0x5803dd={'$and':[db[_0x4b12('0x5b')][_0x4b12('0x39')](db[_0x4b12('0x5b')]['fn']('MD5',db[_0x4b12('0x5b')][_0x4b12('0x5c')](_0x4b12('0x4a'))),_0x3ba3d6[_0x4b12('0x2f')]['token'])]};if(_0x3ba3d6['query'][_0x4b12('0x2a')]&&_0x3ba3d6[_0x4b12('0x2f')][_0x4b12('0x2a')]===_0x4b12('0x4a')){_0x5803dd[_0x4b12('0x5d')][_0x4b12('0x5e')]({'uniqueid':_0x3ba3d6[_0x4b12('0x42')]['id']});}else{_0x5803dd[_0x4b12('0x5d')][_0x4b12('0x5e')]({'id':_0x3ba3d6[_0x4b12('0x42')]['id']});}return db[_0x4b12('0x28')][_0x4b12('0x4b')]({'where':_0x5803dd,'attributes':['id',_0x4b12('0x4c')],'raw':!![]})['then'](handleEntityNotFound(_0xe9ffd5,null))[_0x4b12('0x23')](function(_0x4f7fc4){if(_0x4f7fc4){var _0x5ef32d=util[_0x4b12('0x2e')](_0x4b12('0x4d'),_0x4f7fc4['value']);if(fs[_0x4b12('0x4e')](_0x5ef32d)){_0x5b9a67=!![];return _0x4d0c58[_0x4b12('0x4f')](_0x5ef32d,_0x4f7fc4['value'],config[_0x4b12('0x5f')][_0x4b12('0x50')])[_0x4b12('0x23')](function(){return _0x4f7fc4;});}return _0x4f7fc4;}})['then'](function(_0x517223){if(_0x517223){if(!fs[_0x4b12('0x4e')](_0x517223[_0x4b12('0x4c')])){throw new db[(_0x4b12('0x51'))][(_0x4b12('0x52'))](_0x4b12('0x53'));}if(_0x517223[_0x4b12('0x60')]){return _0xe9ffd5[_0x4b12('0x49')](_0x517223[_0x4b12('0x4c')],_0x517223['filename']+path['extname'](_0x517223[_0x4b12('0x4c')]),function(){if(_0x5b9a67){fs[_0x4b12('0x55')](_0x517223[_0x4b12('0x4c')]);}});}else{return _0xe9ffd5['download'](_0x517223[_0x4b12('0x4c')],function(_0xccc9f9){if(_0x5b9a67){fs['unlink'](_0x517223[_0x4b12('0x4c')]);}});}}})['catch'](handleError(_0xe9ffd5,null));};exports[_0x4b12('0x24')]=function(_0x5b99c3,_0x54bb7c){return db['VoiceRecording'][_0x4b12('0x4b')]({'where':{'id':_0x5b99c3[_0x4b12('0x42')]['id']}})[_0x4b12('0x23')](function(_0x2a73be){if(_['isNil'](_0x2a73be)){throw new ReferenceError('Entity\x20not\x20found');}return _0x2a73be;})[_0x4b12('0x23')](function(_0xba6a50){var _0x5e8a49=_0xba6a50[_0x4b12('0x4c')];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x5e8a49);if(!_[_0x4b12('0x61')](_0xba6a50[_0x4b12('0x4c')])&&fs[_0x4b12('0x4e')](_0x5e8a49)){logger[_0x4b12('0x62')](_0x4b12('0x63')+_0x5e8a49+_0x4b12('0x64'));fs[_0x4b12('0x65')](_0x5e8a49);}_0x5e8a49=_0x5e8a49+_0x4b12('0x66');if(!_['isNil'](_0xba6a50[_0x4b12('0x4c')])&&fs[_0x4b12('0x4e')](_0x5e8a49)){logger[_0x4b12('0x62')](_0x4b12('0x63')+_0x5e8a49+_0x4b12('0x64'));fs[_0x4b12('0x65')](_0x5e8a49);}return _0xba6a50;})[_0x4b12('0x23')](function(_0x25b4a7){if(!_0x25b4a7)throw new InternalError();return _0x25b4a7[_0x4b12('0x24')]();})[_0x4b12('0x23')](function(){_0x54bb7c['status'](0xcc)['end']();})['catch'](handleError(_0x54bb7c,null));};function getBucketslist(_0x493435,_0x3568ea,_0x76377c){return new Promise(function(_0x3756b0,_0x4c411d){var _0x1519b6=new AWS['S3']({'accessKeyId':_0x3568ea,'secretAccessKey':_0x493435,'region':_0x76377c});_0x1519b6['listBuckets']({},function(_0x315889,_0x581185){if(_0x315889){return _0x4c411d(_0x315889);}else{return _0x3756b0(_0x581185);}});});}function createBucket(_0x52d94c,_0x5dbe61,_0x97524a,_0x53a5d8){return new Promise(function(_0x205cd2,_0x3d34e3){var _0x475bfc=new AWS['S3']({'accessKeyId':_0x5dbe61,'secretAccessKey':_0x52d94c,'region':_0x97524a});_0x475bfc[_0x4b12('0x67')]({'Bucket':_0x53a5d8},function(_0x387059,_0x339ea9){if(_0x387059){return _0x3d34e3(_0x387059);}else{return _0x205cd2(_0x339ea9);}});});}function uploadFile(_0x2d0d2a,_0x15c35e,_0x25b654,_0x3719a4,_0x1de809,_0x1d030f){return new Promise(function(_0x1d4982,_0x13a3a5){var _0x46d4b1=new AWS['S3']({'accessKeyId':_0x15c35e,'secretAccessKey':_0x2d0d2a,'region':_0x25b654});_0x46d4b1[_0x4b12('0x68')]({'Bucket':_0x3719a4,'Key':_0x1de809,'Body':_0x1d030f},function(_0x71912d,_0x12e109){if(_0x71912d){return _0x13a3a5(_0x71912d);}else{return _0x1d4982(_0x12e109);}});});}function startTranscribe(_0xcbf772,_0x18b102,_0x188fee,_0x2c5b68,_0x16edf5,_0x59016e){return new Promise(function(_0xcf409c,_0x9f0bd4){var _0x5118a6=new AWS[(_0x4b12('0x69'))]({'accessKeyId':_0x18b102,'secretAccessKey':_0xcbf772,'region':_0x188fee});_0x5118a6[_0x4b12('0x6a')]({'TranscriptionJobName':_0x2c5b68,'LanguageCode':_0x16edf5,'Media':{'MediaFileUri':_0x59016e}},function(_0x108163,_0x1687fb){if(_0x108163){return _0x9f0bd4(_0x108163);}else{return _0xcf409c(_0x1687fb);}});});}function transcribe(_0x5cace6,_0x5eb261,_0x2006b7,_0x5e4ce6,_0x5bd4ab,_0x3bb640,_0x178392){return new Promise(function(_0xfa30ca,_0x50f8fe){var _0x1d8128={};logger[_0x4b12('0x62')](util[_0x4b12('0x2e')](_0x4b12('0x6b'),_0x5cace6,_0x5bd4ab));return uploadFile(_0x5eb261,_0x2006b7,_0x5e4ce6,_0x5bd4ab,path[_0x4b12('0x6c')](_0x3bb640),fs[_0x4b12('0x6d')](_0x3bb640))[_0x4b12('0x23')](function(_0x153fd1){logger[_0x4b12('0x62')](util[_0x4b12('0x2e')](_0x4b12('0x6e'),_0x5cace6,_0x5bd4ab,_0x153fd1['Location']));_0x1d8128[_0x4b12('0x6f')]=_0x153fd1['Bucket'];_0x1d8128['location']=_0x153fd1[_0x4b12('0x70')];logger[_0x4b12('0x62')](util[_0x4b12('0x2e')](_0x4b12('0x71'),_0x5cace6));return startTranscribe(_0x5eb261,_0x2006b7,_0x5e4ce6,uuidv4(),_0x178392,_0x153fd1[_0x4b12('0x70')]);})[_0x4b12('0x23')](function(_0x505be8){logger[_0x4b12('0x62')](util[_0x4b12('0x2e')](_0x4b12('0x72'),_0x5cace6,_0x505be8[_0x4b12('0x73')]['TranscriptionJobName']));_0x1d8128[_0x4b12('0x74')]=_0x505be8[_0x4b12('0x73')]['TranscriptionJobName'];_0x1d8128[_0x4b12('0x75')]=_0x505be8['TranscriptionJob'][_0x4b12('0x76')];return _0xfa30ca(_0x1d8128);})[_0x4b12('0x44')](function(_0x1be077){return _0x50f8fe(_0x1be077);});});}exports[_0x4b12('0x77')]=function(_0x3ed8df,_0x1fc6c9,_0x29ae90){var _0x50175c;var _0x367680;var _0x188da6;var _0x100333=require(_0x4b12('0x5a'));return db[_0x4b12('0x28')][_0x4b12('0x78')]({'where':{'id':_0x3ed8df[_0x4b12('0x42')]['id']}})['then'](function(_0x1c4f52){if(_0x1c4f52){var _0xb97d4f=util[_0x4b12('0x2e')](_0x4b12('0x4d'),_0x1c4f52['value']);if(fs[_0x4b12('0x4e')](_0xb97d4f)){cypher=!![];return _0x100333[_0x4b12('0x4f')](_0xb97d4f,_0x1c4f52[_0x4b12('0x4c')],config[_0x4b12('0x5f')][_0x4b12('0x50')])[_0x4b12('0x23')](function(){return _0x1c4f52;});}return _0x1c4f52;}})['then'](function(_0x9c4c06){if(!_0x9c4c06){throw new db[(_0x4b12('0x51'))]['ValidationError'](_0x4b12('0x79'));}_0x367680=_0x9c4c06;return db[_0x4b12('0x7a')]['findOne']({'where':{'id':0x1}});})[_0x4b12('0x23')](handleEntityNotFound(_0x1fc6c9,null))['then'](function(_0x287f7e){if(_0x287f7e){_0x50175c=_0x287f7e;if(!_0x50175c[_0x4b12('0x7b')]||!_0x50175c['transcribeAccountId']||!_0x50175c[_0x4b12('0x7c')]||!_0x50175c[_0x4b12('0x7d')]||!_0x50175c['bucket']){throw new db[(_0x4b12('0x51'))][(_0x4b12('0x52'))](_0x4b12('0x7e'));}if(_0x3ed8df[_0x4b12('0x46')]['runSentiment']&&(!_0x50175c[_0x4b12('0x7f')]||!_0x50175c[_0x4b12('0x80')]||!_0x50175c[_0x4b12('0x81')]||!_0x50175c[_0x4b12('0x7d')]||!_0x50175c[_0x4b12('0x6f')])){throw new db[(_0x4b12('0x51'))][(_0x4b12('0x52'))](_0x4b12('0x82'));}return db[_0x4b12('0x83')][_0x4b12('0x78')]({'where':{'id':_0x50175c[_0x4b12('0x84')]}});}})[_0x4b12('0x23')](function(_0x5a4d08){if(!_0x5a4d08){throw new db[(_0x4b12('0x51'))][(_0x4b12('0x52'))](_0x4b12('0x85'));}if(!_0x5a4d08[_0x4b12('0x86')]||!_0x5a4d08[_0x4b12('0x87')]){throw new db[(_0x4b12('0x51'))][(_0x4b12('0x52'))](_0x4b12('0x88'));}_0x188da6=_0x5a4d08;return getBucketslist(_0x188da6[_0x4b12('0x86')],_0x188da6[_0x4b12('0x87')],_0x50175c[_0x4b12('0x7c')]);})[_0x4b12('0x23')](function(_0x2d5515){if(_0x2d5515&&_0x2d5515[_0x4b12('0x89')]){var _0x304a60=_[_0x4b12('0x4b')](_0x2d5515['Buckets'],function(_0x32c0ad){return _0x32c0ad[_0x4b12('0x8a')]===_0x50175c['bucket'];});if(!_0x304a60){logger['info'](util[_0x4b12('0x2e')](_0x4b12('0x8b'),_0x3ed8df[_0x4b12('0x42')]['id'],_0x50175c['bucket']));return createBucket(_0x188da6[_0x4b12('0x86')],_0x188da6[_0x4b12('0x87')],_0x50175c['transcribeRegion'],_0x50175c[_0x4b12('0x6f')]);}logger[_0x4b12('0x62')](util[_0x4b12('0x2e')](_0x4b12('0x8c'),_0x3ed8df[_0x4b12('0x42')]['id'],_0x50175c[_0x4b12('0x6f')]));return;}})[_0x4b12('0x23')](function(_0xb5b40){if(_0x367680['transcribeStatus']===_0x4b12('0x8d')){return transcribe(_0x3ed8df['params']['id'],_0x188da6['data1'],_0x188da6['data2'],_0x50175c[_0x4b12('0x7c')],_0x50175c[_0x4b12('0x6f')],_0x367680[_0x4b12('0x4c')],_0x50175c['language']);}else{logger[_0x4b12('0x62')](util[_0x4b12('0x2e')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x3ed8df[_0x4b12('0x42')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0x4b12('0x23')](function(_0x2d7828){if(_0x2d7828){_0x2d7828[_0x4b12('0x8e')]=_0x3ed8df[_0x4b12('0x46')]['runSentiment'];return _0x367680[_0x4b12('0x8f')](_0x2d7828);}})[_0x4b12('0x23')](respondWithResult(_0x1fc6c9,null))[_0x4b12('0x44')](handleError(_0x1fc6c9,null));};function writeFile(_0x18db64,_0xc3fe91){return new Promise(function(_0x5233fb,_0x1aadfd){fs[_0x4b12('0x90')](_0xc3fe91,_0x18db64,function(_0x482e19,_0x1b9a17){if(_0x482e19){return _0x1aadfd(_0x482e19);}else{return _0x5233fb(_0x1b9a17);}});});}exports['downloadTranscribe']=function(_0x21ce7e,_0x25b9aa,_0x106774){return db[_0x4b12('0x28')]['findOne']({'where':{'id':_0x21ce7e['params']['id']}})[_0x4b12('0x23')](handleEntityNotFound(_0x25b9aa))['then'](function(_0x14c0c6){if(_0x14c0c6&&_0x14c0c6[_0x4b12('0x91')]){var _0x54c7e6=_0x14c0c6[_0x4b12('0x91')];var _0x22fc11=config['root']+_0x4b12('0x92')+_0x14c0c6['id']+'.txt';if(fs[_0x4b12('0x4e')](_0x22fc11)){return _0x22fc11;}return writeFile(_0x54c7e6,_0x22fc11)['then'](function(){return _0x22fc11;});}else{throw new db['Sequelize']['ValidationError']('Transcript\x20not\x20available');}})['then'](function(_0x396674){return _0x25b9aa[_0x4b12('0x49')](_0x396674);})[_0x4b12('0x44')](handleError(_0x25b9aa));};
\ No newline at end of file
+var _0x6705=['../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','differenceBy','query','attributes','intersection','fields','length','nolimit','sort','where','filters','pick','merge','VIRTUAL','filter','options','VoiceRecording','includeAll','include','show','params','keys','catch','create','body','find','describe','download','../../components/encryptor','uniqueid','value','format','%s.cypher','decryptFile','secrets','recording','existsSync','Sequelize','VoiceRecording\x20not\x20found','filename','extname','unlink','message','downloads','sequelize','MD5','col','token','push','$and','ValidationError','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','info','File:\x20\x22','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','Bucket','location','Location','TranscriptionJob','TranscriptionJobName','transcribeStatus','findOne','Setting','transcribe','transcribeAccountId','transcribeRegion','runSentiment','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','tempSentiment','updateAttributes','writeFile','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','aws-sdk','uuid/v4','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x292c68,_0x2523ba){var _0x3e0eb8=function(_0x174d96){while(--_0x174d96){_0x292c68['push'](_0x292c68['shift']());}};_0x3e0eb8(++_0x2523ba);}(_0x6705,0x1b2));var _0x5670=function(_0x879b14,_0x329349){_0x879b14=_0x879b14-0x0;var _0x14268a=_0x6705[_0x879b14];return _0x14268a;};'use strict';var emlformat=require(_0x5670('0x0'));var rimraf=require(_0x5670('0x1'));var zipdir=require(_0x5670('0x2'));var jsonpatch=require(_0x5670('0x3'));var rp=require('request-promise');var moment=require(_0x5670('0x4'));var BPromise=require(_0x5670('0x5'));var Mustache=require(_0x5670('0x6'));var util=require(_0x5670('0x7'));var path=require(_0x5670('0x8'));var sox=require(_0x5670('0x9'));var csv=require('to-csv');var ejs=require(_0x5670('0xa'));var fs=require('fs');var fs_extra=require(_0x5670('0xb'));var _=require('lodash');var squel=require(_0x5670('0xc'));var crypto=require(_0x5670('0xd'));var jsforce=require(_0x5670('0xe'));var deskjs=require(_0x5670('0xf'));var toCsv=require('to-csv');var querystring=require(_0x5670('0x10'));var Papa=require('papaparse');var AWS=require(_0x5670('0x11'));var uuidv4=require(_0x5670('0x12'));var Redis=require('ioredis');var authService=require(_0x5670('0x13'));var qs=require(_0x5670('0x14'));var as=require(_0x5670('0x15'));var hardwareService=require(_0x5670('0x16'));var logger=require(_0x5670('0x17'))(_0x5670('0x18'));var utils=require('../../config/utils');var config=require(_0x5670('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x5670('0x1a'))['db'];function respondWithStatusCode(_0x5608fe,_0xd431b){_0xd431b=_0xd431b||0xcc;return function(_0x399e23){if(_0x399e23){return _0x5608fe[_0x5670('0x1b')](_0xd431b);}return _0x5608fe[_0x5670('0x1c')](_0xd431b)[_0x5670('0x1d')]();};}function respondWithResult(_0xa46952,_0x4f4004){_0x4f4004=_0x4f4004||0xc8;return function(_0x48c3f8){if(_0x48c3f8){return _0xa46952[_0x5670('0x1c')](_0x4f4004)[_0x5670('0x1e')](_0x48c3f8);}};}function respondWithFilteredResult(_0xbdd253,_0x17ff1c){return function(_0x289738){if(_0x289738){var _0x5ffa80=typeof _0x17ff1c[_0x5670('0x1f')]===_0x5670('0x20')&&typeof _0x17ff1c[_0x5670('0x21')]===_0x5670('0x20');var _0x4dd203=_0x289738[_0x5670('0x22')];var _0x16e831=_0x5ffa80?0x0:_0x17ff1c[_0x5670('0x1f')];var _0xcf5441=_0x5ffa80?_0x289738['count']:_0x17ff1c['offset']+_0x17ff1c[_0x5670('0x21')];var _0x25ffca;if(_0xcf5441>=_0x4dd203){_0xcf5441=_0x4dd203;_0x25ffca=0xc8;}else{_0x25ffca=0xce;}_0xbdd253[_0x5670('0x1c')](_0x25ffca);return _0xbdd253[_0x5670('0x23')](_0x5670('0x24'),_0x16e831+'-'+_0xcf5441+'/'+_0x4dd203)[_0x5670('0x1e')](_0x289738);}return null;};}function patchUpdates(_0x3f4ab2){return function(_0x5341a7){try{jsonpatch['apply'](_0x5341a7,_0x3f4ab2,!![]);}catch(_0x42d4cf){return BPromise[_0x5670('0x25')](_0x42d4cf);}return _0x5341a7[_0x5670('0x26')]();};}function saveUpdates(_0x29bac4,_0xba109a){return function(_0x372272){if(_0x372272){return _0x372272[_0x5670('0x27')](_0x29bac4)['then'](function(_0x53b0bd){return _0x53b0bd;});}return null;};}function removeEntity(_0x219740,_0x32eedb){return function(_0xe712eb){if(_0xe712eb){return _0xe712eb[_0x5670('0x28')]()[_0x5670('0x29')](function(){_0x219740['status'](0xcc)[_0x5670('0x1d')]();});}};}function handleEntityNotFound(_0x27145f,_0x4d7dfe){return function(_0x59bb14){if(!_0x59bb14){_0x27145f[_0x5670('0x1b')](0x194);}return _0x59bb14;};}function handleError(_0x1bae73,_0x23876c){_0x23876c=_0x23876c||0x1f4;return function(_0x30603e){logger[_0x5670('0x2a')](_0x30603e[_0x5670('0x2b')]);if(_0x30603e['name']){delete _0x30603e[_0x5670('0x2c')];}_0x1bae73['status'](_0x23876c)[_0x5670('0x2d')](_0x30603e);};}exports['index']=function(_0x182365,_0x499159){var _0x490b45={},_0x3e67d0={},_0x575bf0={'count':0x0,'rows':[]};var _0x4e8255=_[_0x5670('0x2e')](db['VoiceRecording'][_0x5670('0x2f')],function(_0x4551af){return{'name':_0x4551af[_0x5670('0x30')],'type':_0x4551af[_0x5670('0x31')][_0x5670('0x32')]};});_0x3e67d0[_0x5670('0x33')]=_[_0x5670('0x34')](_['map'](_0x4e8255,_0x5670('0x2c')),['format']);_0x3e67d0[_0x5670('0x35')]=_['keys'](_0x182365[_0x5670('0x35')]);_0x3e67d0['filters']=_['intersection'](_0x3e67d0[_0x5670('0x33')],_0x3e67d0['query']);_0x490b45[_0x5670('0x36')]=_[_0x5670('0x37')](_0x3e67d0[_0x5670('0x33')],qs[_0x5670('0x38')](_0x182365[_0x5670('0x35')][_0x5670('0x38')]));_0x490b45['attributes']=_0x490b45['attributes'][_0x5670('0x39')]?_0x490b45[_0x5670('0x36')]:_0x3e67d0[_0x5670('0x33')];if(!_0x182365[_0x5670('0x35')]['hasOwnProperty'](_0x5670('0x3a'))){_0x490b45[_0x5670('0x21')]=qs['limit'](_0x182365[_0x5670('0x35')][_0x5670('0x21')]);_0x490b45[_0x5670('0x1f')]=qs[_0x5670('0x1f')](_0x182365[_0x5670('0x35')]['offset']);}_0x490b45['order']=qs[_0x5670('0x3b')](_0x182365[_0x5670('0x35')][_0x5670('0x3b')]);_0x490b45[_0x5670('0x3c')]=qs[_0x5670('0x3d')](_[_0x5670('0x3e')](_0x182365[_0x5670('0x35')],_0x3e67d0['filters']),_0x4e8255);if(_0x182365[_0x5670('0x35')]['filter']){_0x490b45[_0x5670('0x3c')]=_[_0x5670('0x3f')](_0x490b45[_0x5670('0x3c')],{'$or':_[_0x5670('0x2e')](_0x4e8255,function(_0x559ee3){if(_0x559ee3['type']!==_0x5670('0x40')){var _0x23521f={};_0x23521f[_0x559ee3['name']]={'$like':'%'+_0x182365['query'][_0x5670('0x41')]+'%'};return _0x23521f;}})});}_0x490b45=_['merge']({},_0x490b45,_0x182365[_0x5670('0x42')]);var _0x57b959={'where':_0x490b45[_0x5670('0x3c')]};return db[_0x5670('0x43')][_0x5670('0x22')](_0x57b959)[_0x5670('0x29')](function(_0x244b42){_0x575bf0[_0x5670('0x22')]=_0x244b42;if(_0x182365[_0x5670('0x35')][_0x5670('0x44')]){_0x490b45[_0x5670('0x45')]=[{'all':!![]}];}return db[_0x5670('0x43')]['findAll'](_0x490b45);})[_0x5670('0x29')](function(_0x38f11b){_0x575bf0['rows']=_0x38f11b;return _0x575bf0;})['then'](respondWithFilteredResult(_0x499159,_0x490b45))['catch'](handleError(_0x499159,null));};exports[_0x5670('0x46')]=function(_0x36f2e6,_0x46a2a9){var _0x33da11={'raw':![],'where':{'id':_0x36f2e6[_0x5670('0x47')]['id']}},_0x2409cb={};_0x2409cb['model']=_[_0x5670('0x48')](db[_0x5670('0x43')]['rawAttributes']);_0x2409cb[_0x5670('0x35')]=_[_0x5670('0x48')](_0x36f2e6[_0x5670('0x35')]);_0x2409cb[_0x5670('0x3d')]=_[_0x5670('0x37')](_0x2409cb[_0x5670('0x33')],_0x2409cb[_0x5670('0x35')]);_0x33da11[_0x5670('0x36')]=_[_0x5670('0x37')](_0x2409cb[_0x5670('0x33')],qs['fields'](_0x36f2e6[_0x5670('0x35')][_0x5670('0x38')]));_0x33da11[_0x5670('0x36')]=_0x33da11[_0x5670('0x36')][_0x5670('0x39')]?_0x33da11[_0x5670('0x36')]:_0x2409cb['model'];if(_0x36f2e6[_0x5670('0x35')][_0x5670('0x44')]){_0x33da11[_0x5670('0x45')]=[{'all':!![]}];}_0x33da11=_[_0x5670('0x3f')]({},_0x33da11,_0x36f2e6[_0x5670('0x42')]);return db[_0x5670('0x43')]['find'](_0x33da11)[_0x5670('0x29')](handleEntityNotFound(_0x46a2a9,null))[_0x5670('0x29')](respondWithResult(_0x46a2a9,null))[_0x5670('0x49')](handleError(_0x46a2a9,null));};exports['create']=function(_0x5bb458,_0xd214df){return db[_0x5670('0x43')][_0x5670('0x4a')](_0x5bb458['body'],{})['then'](respondWithResult(_0xd214df,0xc9))[_0x5670('0x49')](handleError(_0xd214df,null));};exports[_0x5670('0x27')]=function(_0x4a38f0,_0x41e49f){if(_0x4a38f0['body']['id']){delete _0x4a38f0[_0x5670('0x4b')]['id'];}return db[_0x5670('0x43')][_0x5670('0x4c')]({'where':{'id':_0x4a38f0[_0x5670('0x47')]['id']}})[_0x5670('0x29')](handleEntityNotFound(_0x41e49f,null))[_0x5670('0x29')](saveUpdates(_0x4a38f0[_0x5670('0x4b')],null))[_0x5670('0x29')](respondWithResult(_0x41e49f,null))[_0x5670('0x49')](handleError(_0x41e49f,null));};exports[_0x5670('0x4d')]=function(_0x403c58,_0x4c9044){return db[_0x5670('0x43')][_0x5670('0x4d')]()[_0x5670('0x29')](respondWithResult(_0x4c9044,null))[_0x5670('0x49')](handleError(_0x4c9044,null));};exports[_0x5670('0x4e')]=function(_0x28d122,_0x11d939,_0x4411e8){var _0x3283fa=require(_0x5670('0x4f'));var _0x5d950c=![];var _0x2c4b8a={};if(_0x28d122[_0x5670('0x35')]['type']&&_0x28d122[_0x5670('0x35')][_0x5670('0x31')]===_0x5670('0x50')){_0x2c4b8a[_0x5670('0x50')]=_0x28d122[_0x5670('0x47')]['id'];}else{_0x2c4b8a['id']=_0x28d122[_0x5670('0x47')]['id'];}return db['VoiceRecording'][_0x5670('0x4c')]({'where':_0x2c4b8a,'attributes':['id',_0x5670('0x51')],'raw':!![]})[_0x5670('0x29')](handleEntityNotFound(_0x11d939,null))[_0x5670('0x29')](function(_0x55d60a){if(_0x55d60a){var _0x3abd53=_0x55d60a['value'];var _0x3ea385=util[_0x5670('0x52')](_0x5670('0x53'),_0x3abd53);if(fs['existsSync'](_0x3ea385)){_0x5d950c=!![];return _0x3283fa[_0x5670('0x54')](_0x3ea385,_0x3abd53,config[_0x5670('0x55')][_0x5670('0x56')])['then'](function(){return _0x55d60a;});}return _0x55d60a;}})['then'](function(_0x1a5e5d){if(_0x1a5e5d){var _0x3573a6=_0x1a5e5d[_0x5670('0x51')];if(!fs[_0x5670('0x57')](_0x3573a6)){throw new db[(_0x5670('0x58'))]['ValidationError'](_0x5670('0x59'));}if(_0x1a5e5d['filename']){return _0x11d939[_0x5670('0x4e')](_0x3573a6,_0x1a5e5d[_0x5670('0x5a')]+path[_0x5670('0x5b')](_0x3573a6),function(){if(_0x5d950c){fs['unlink'](_0x3573a6);}});}else{return _0x11d939[_0x5670('0x4e')](_0x3573a6,function(_0x3be0a1){if(_0x5d950c){fs[_0x5670('0x5c')](_0x3573a6);}});}}})[_0x5670('0x49')](function(_0x36d54c){if(_0x36d54c[_0x5670('0x5d')]===_0x5670('0x59')){_0x11d939[_0x5670('0x1c')](0x194)[_0x5670('0x2d')]('Not\x20found');}else{return handleError(_0x11d939,null);}});};exports[_0x5670('0x5e')]=function(_0x4c4598,_0x2cf403,_0x459e07){var _0xf2aa0e=require(_0x5670('0x4f'));var _0x1c9a17=![];var _0xd158bf={'$and':[db[_0x5670('0x5f')]['where'](db[_0x5670('0x5f')]['fn'](_0x5670('0x60'),db[_0x5670('0x5f')][_0x5670('0x61')](_0x5670('0x50'))),_0x4c4598[_0x5670('0x35')][_0x5670('0x62')])]};if(_0x4c4598[_0x5670('0x35')][_0x5670('0x31')]&&_0x4c4598[_0x5670('0x35')][_0x5670('0x31')]==='uniqueid'){_0xd158bf['$and'][_0x5670('0x63')]({'uniqueid':_0x4c4598[_0x5670('0x47')]['id']});}else{_0xd158bf[_0x5670('0x64')]['push']({'id':_0x4c4598[_0x5670('0x47')]['id']});}return db['VoiceRecording'][_0x5670('0x4c')]({'where':_0xd158bf,'attributes':['id',_0x5670('0x51')],'raw':!![]})[_0x5670('0x29')](handleEntityNotFound(_0x2cf403,null))[_0x5670('0x29')](function(_0x12dfaf){if(_0x12dfaf){var _0x2f2a5=util[_0x5670('0x52')](_0x5670('0x53'),_0x12dfaf[_0x5670('0x51')]);if(fs[_0x5670('0x57')](_0x2f2a5)){_0x1c9a17=!![];return _0xf2aa0e[_0x5670('0x54')](_0x2f2a5,_0x12dfaf[_0x5670('0x51')],config[_0x5670('0x55')][_0x5670('0x56')])[_0x5670('0x29')](function(){return _0x12dfaf;});}return _0x12dfaf;}})['then'](function(_0x57f60a){if(_0x57f60a){if(!fs['existsSync'](_0x57f60a[_0x5670('0x51')])){throw new db[(_0x5670('0x58'))][(_0x5670('0x65'))](_0x5670('0x59'));}if(_0x57f60a[_0x5670('0x5a')]){return _0x2cf403['download'](_0x57f60a[_0x5670('0x51')],_0x57f60a['filename']+path[_0x5670('0x5b')](_0x57f60a[_0x5670('0x51')]),function(){if(_0x1c9a17){fs[_0x5670('0x5c')](_0x57f60a[_0x5670('0x51')]);}});}else{return _0x2cf403[_0x5670('0x4e')](_0x57f60a[_0x5670('0x51')],function(_0x4cc3ea){if(_0x1c9a17){fs[_0x5670('0x5c')](_0x57f60a['value']);}});}}})[_0x5670('0x49')](handleError(_0x2cf403,null));};exports[_0x5670('0x28')]=function(_0x4d4d55,_0x1721ef){return db[_0x5670('0x43')]['find']({'where':{'id':_0x4d4d55['params']['id']}})[_0x5670('0x29')](function(_0xcadab4){if(_[_0x5670('0x66')](_0xcadab4)){throw new ReferenceError(_0x5670('0x67'));}return _0xcadab4;})['then'](function(_0x53d340){var _0x19a8b3=_0x53d340[_0x5670('0x51')];logger['info'](_0x5670('0x68'),_0x19a8b3);if(!_[_0x5670('0x66')](_0x53d340[_0x5670('0x51')])&&fs[_0x5670('0x57')](_0x19a8b3)){logger['info']('File:\x20\x22'+_0x19a8b3+_0x5670('0x69'));fs[_0x5670('0x6a')](_0x19a8b3);}_0x19a8b3=_0x19a8b3+_0x5670('0x6b');if(!_[_0x5670('0x66')](_0x53d340[_0x5670('0x51')])&&fs[_0x5670('0x57')](_0x19a8b3)){logger[_0x5670('0x6c')](_0x5670('0x6d')+_0x19a8b3+_0x5670('0x69'));fs[_0x5670('0x6a')](_0x19a8b3);}return _0x53d340;})['then'](function(_0x374dcf){if(!_0x374dcf)throw new InternalError();return _0x374dcf['destroy']();})[_0x5670('0x29')](function(){_0x1721ef[_0x5670('0x1c')](0xcc)['end']();})[_0x5670('0x49')](handleError(_0x1721ef,null));};function getBucketslist(_0x14be98,_0x45a91b,_0x5e2a2a){return new Promise(function(_0x3a57a4,_0x3bb92f){var _0x3ec4f9=new AWS['S3']({'accessKeyId':_0x45a91b,'secretAccessKey':_0x14be98,'region':_0x5e2a2a});_0x3ec4f9[_0x5670('0x6e')]({},function(_0x847d33,_0x3a1893){if(_0x847d33){return _0x3bb92f(_0x847d33);}else{return _0x3a57a4(_0x3a1893);}});});}function createBucket(_0x225f64,_0x3c6b1f,_0x20f7ef,_0x3dce4b){return new Promise(function(_0x138a27,_0x29bc9f){var _0x2bc1f8=new AWS['S3']({'accessKeyId':_0x3c6b1f,'secretAccessKey':_0x225f64,'region':_0x20f7ef});_0x2bc1f8[_0x5670('0x6f')]({'Bucket':_0x3dce4b},function(_0x5be513,_0x5211d8){if(_0x5be513){return _0x29bc9f(_0x5be513);}else{return _0x138a27(_0x5211d8);}});});}function uploadFile(_0x21df89,_0xcfb60f,_0x48815d,_0x16dd15,_0x5c7267,_0x5da806){return new Promise(function(_0x808e3d,_0x3dc806){var _0x1a0a60=new AWS['S3']({'accessKeyId':_0xcfb60f,'secretAccessKey':_0x21df89,'region':_0x48815d});_0x1a0a60[_0x5670('0x70')]({'Bucket':_0x16dd15,'Key':_0x5c7267,'Body':_0x5da806},function(_0x6c2f8,_0x3b799f){if(_0x6c2f8){return _0x3dc806(_0x6c2f8);}else{return _0x808e3d(_0x3b799f);}});});}function startTranscribe(_0x55188e,_0x7e6800,_0x54dc59,_0x5b3ea5,_0x2f9f1b,_0x743388){return new Promise(function(_0x5ac4c3,_0x201e18){var _0x45f75c=new AWS[(_0x5670('0x71'))]({'accessKeyId':_0x7e6800,'secretAccessKey':_0x55188e,'region':_0x54dc59});_0x45f75c[_0x5670('0x72')]({'TranscriptionJobName':_0x5b3ea5,'LanguageCode':_0x2f9f1b,'Media':{'MediaFileUri':_0x743388}},function(_0x92f4e7,_0x268a11){if(_0x92f4e7){return _0x201e18(_0x92f4e7);}else{return _0x5ac4c3(_0x268a11);}});});}function transcribe(_0x4aa00b,_0x3b5fb8,_0x3ca7b7,_0x1a198e,_0x567ced,_0x2816eb,_0x1bc60d){return new Promise(function(_0xea6f41,_0x261b41){var _0xd0972d={};logger[_0x5670('0x6c')](util['format'](_0x5670('0x73'),_0x4aa00b,_0x567ced));return uploadFile(_0x3b5fb8,_0x3ca7b7,_0x1a198e,_0x567ced,path['basename'](_0x2816eb),fs['readFileSync'](_0x2816eb))[_0x5670('0x29')](function(_0x4bf26f){logger[_0x5670('0x6c')](util[_0x5670('0x52')](_0x5670('0x74'),_0x4aa00b,_0x567ced,_0x4bf26f['Location']));_0xd0972d[_0x5670('0x75')]=_0x4bf26f[_0x5670('0x76')];_0xd0972d[_0x5670('0x77')]=_0x4bf26f[_0x5670('0x78')];logger[_0x5670('0x6c')](util[_0x5670('0x52')]('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x4aa00b));return startTranscribe(_0x3b5fb8,_0x3ca7b7,_0x1a198e,uuidv4(),_0x1bc60d,_0x4bf26f[_0x5670('0x78')]);})[_0x5670('0x29')](function(_0x38b875){logger[_0x5670('0x6c')](util['format']('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x4aa00b,_0x38b875['TranscriptionJob']['TranscriptionJobName']));_0xd0972d['transcribeName']=_0x38b875[_0x5670('0x79')][_0x5670('0x7a')];_0xd0972d[_0x5670('0x7b')]=_0x38b875['TranscriptionJob']['TranscriptionJobStatus'];return _0xea6f41(_0xd0972d);})[_0x5670('0x49')](function(_0x18ffb6){return _0x261b41(_0x18ffb6);});});}exports['runTranscribe']=function(_0x5376e5,_0x3f0eac,_0x418cd6){var _0x2abf0b;var _0x37e1b0;var _0x185ba0;var _0x5ad8d6=require(_0x5670('0x4f'));return db[_0x5670('0x43')][_0x5670('0x7c')]({'where':{'id':_0x5376e5[_0x5670('0x47')]['id']}})[_0x5670('0x29')](function(_0x3c6758){if(_0x3c6758){var _0x2cb0cc=util[_0x5670('0x52')](_0x5670('0x53'),_0x3c6758['value']);if(fs[_0x5670('0x57')](_0x2cb0cc)){cypher=!![];return _0x5ad8d6[_0x5670('0x54')](_0x2cb0cc,_0x3c6758[_0x5670('0x51')],config[_0x5670('0x55')][_0x5670('0x56')])[_0x5670('0x29')](function(){return _0x3c6758;});}return _0x3c6758;}})[_0x5670('0x29')](function(_0x568b06){if(!_0x568b06){throw new db[(_0x5670('0x58'))][(_0x5670('0x65'))]('Voice\x20Recording\x20not\x20found');}_0x37e1b0=_0x568b06;return db[_0x5670('0x7d')][_0x5670('0x7c')]({'where':{'id':0x1}});})[_0x5670('0x29')](handleEntityNotFound(_0x3f0eac,null))[_0x5670('0x29')](function(_0x5b756a){if(_0x5b756a){_0x2abf0b=_0x5b756a;if(!_0x2abf0b[_0x5670('0x7e')]||!_0x2abf0b[_0x5670('0x7f')]||!_0x2abf0b[_0x5670('0x80')]||!_0x2abf0b['language']||!_0x2abf0b[_0x5670('0x75')]){throw new db[(_0x5670('0x58'))]['ValidationError']('Transcribe\x20not\x20configured');}if(_0x5376e5[_0x5670('0x4b')][_0x5670('0x81')]&&(!_0x2abf0b['sentiment']||!_0x2abf0b[_0x5670('0x82')]||!_0x2abf0b[_0x5670('0x83')]||!_0x2abf0b[_0x5670('0x84')]||!_0x2abf0b[_0x5670('0x75')])){throw new db['Sequelize']['ValidationError'](_0x5670('0x85'));}return db[_0x5670('0x86')][_0x5670('0x7c')]({'where':{'id':_0x2abf0b['transcribeAccountId']}});}})[_0x5670('0x29')](function(_0x521690){if(!_0x521690){throw new db[(_0x5670('0x58'))]['ValidationError'](_0x5670('0x87'));}if(!_0x521690[_0x5670('0x88')]||!_0x521690[_0x5670('0x89')]){throw new db[(_0x5670('0x58'))][(_0x5670('0x65'))](_0x5670('0x8a'));}_0x185ba0=_0x521690;return getBucketslist(_0x185ba0[_0x5670('0x88')],_0x185ba0[_0x5670('0x89')],_0x2abf0b['transcribeRegion']);})[_0x5670('0x29')](function(_0x10db79){if(_0x10db79&&_0x10db79[_0x5670('0x8b')]){var _0x10dbf1=_[_0x5670('0x4c')](_0x10db79[_0x5670('0x8b')],function(_0x25701e){return _0x25701e[_0x5670('0x8c')]===_0x2abf0b[_0x5670('0x75')];});if(!_0x10dbf1){logger[_0x5670('0x6c')](util[_0x5670('0x52')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x5376e5[_0x5670('0x47')]['id'],_0x2abf0b[_0x5670('0x75')]));return createBucket(_0x185ba0[_0x5670('0x88')],_0x185ba0['data2'],_0x2abf0b['transcribeRegion'],_0x2abf0b[_0x5670('0x75')]);}logger[_0x5670('0x6c')](util[_0x5670('0x52')](_0x5670('0x8d'),_0x5376e5['params']['id'],_0x2abf0b[_0x5670('0x75')]));return;}})['then'](function(_0x5015b2){if(_0x37e1b0[_0x5670('0x7b')]===_0x5670('0x8e')){return transcribe(_0x5376e5[_0x5670('0x47')]['id'],_0x185ba0[_0x5670('0x88')],_0x185ba0[_0x5670('0x89')],_0x2abf0b[_0x5670('0x80')],_0x2abf0b[_0x5670('0x75')],_0x37e1b0[_0x5670('0x51')],_0x2abf0b[_0x5670('0x84')]);}else{logger[_0x5670('0x6c')](util['format'](_0x5670('0x8f'),_0x5376e5[_0x5670('0x47')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0x5670('0x29')](function(_0x1ad86c){if(_0x1ad86c){_0x1ad86c[_0x5670('0x90')]=_0x5376e5[_0x5670('0x4b')]['runSentiment'];return _0x37e1b0[_0x5670('0x91')](_0x1ad86c);}})[_0x5670('0x29')](respondWithResult(_0x3f0eac,null))[_0x5670('0x49')](handleError(_0x3f0eac,null));};function writeFile(_0x1862f8,_0x52a6b4){return new Promise(function(_0x1a90a8,_0x29045f){fs[_0x5670('0x92')](_0x52a6b4,_0x1862f8,function(_0xae29a,_0x4d842e){if(_0xae29a){return _0x29045f(_0xae29a);}else{return _0x1a90a8(_0x4d842e);}});});}exports['downloadTranscribe']=function(_0x4b6b3c,_0x2541af,_0x3e2957){return db[_0x5670('0x43')][_0x5670('0x7c')]({'where':{'id':_0x4b6b3c[_0x5670('0x47')]['id']}})[_0x5670('0x29')](handleEntityNotFound(_0x2541af))[_0x5670('0x29')](function(_0x42106d){if(_0x42106d&&_0x42106d['fileText']){var _0x32688d=_0x42106d[_0x5670('0x93')];var _0x3ded4d=config[_0x5670('0x94')]+_0x5670('0x95')+_0x42106d['id']+_0x5670('0x96');if(fs[_0x5670('0x57')](_0x3ded4d)){return _0x3ded4d;}return writeFile(_0x32688d,_0x3ded4d)['then'](function(){return _0x3ded4d;});}else{throw new db[(_0x5670('0x58'))][(_0x5670('0x65'))](_0x5670('0x97'));}})[_0x5670('0x29')](function(_0x39b1bc){return _0x2541af['download'](_0x39b1bc);})[_0x5670('0x49')](handleError(_0x2541af));};
\ No newline at end of file
index e74b023..9c8b21e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8da0=['util','../../config/logger','moment','path','exports','define','VoiceRecording','voice_recordings','uniqueid','lodash'];(function(_0x672fed,_0x5223d9){var _0x505ac8=function(_0x328173){while(--_0x328173){_0x672fed['push'](_0x672fed['shift']());}};_0x505ac8(++_0x5223d9);}(_0x8da0,0x135));var _0x08da=function(_0x435500,_0x21aebb){_0x435500=_0x435500-0x0;var _0x1e29e7=_0x8da0[_0x435500];return _0x1e29e7;};'use strict';var _=require(_0x08da('0x0'));var util=require(_0x08da('0x1'));var logger=require(_0x08da('0x2'))('api');var moment=require(_0x08da('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x08da('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceRecording.attributes');module[_0x08da('0x5')]=function(_0x8fd120,_0x7fecda){return _0x8fd120[_0x08da('0x6')](_0x08da('0x7'),attributes,{'tableName':_0x08da('0x8'),'paranoid':![],'indexes':[{'name':_0x08da('0x9'),'fields':[_0x08da('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x02bd=['lodash','util','api','bluebird','request-promise','rimraf','../../config/environment','./voiceRecording.attributes','define','VoiceRecording','voice_recordings','uniqueid'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x02bd,0x6c));var _0xd02b=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x02bd[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0xd02b('0x0'));var util=require(_0xd02b('0x1'));var logger=require('../../config/logger')(_0xd02b('0x2'));var moment=require('moment');var BPromise=require(_0xd02b('0x3'));var rp=require(_0xd02b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd02b('0x5'));var config=require(_0xd02b('0x6'));var attributes=require(_0xd02b('0x7'));module['exports']=function(_0xd433d6,_0x3ef68e){return _0xd433d6[_0xd02b('0x8')](_0xd02b('0x9'),attributes,{'tableName':_0xd02b('0xa'),'paranoid':![],'indexes':[{'name':_0xd02b('0xb'),'fields':[_0xd02b('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 5cc12d9..d8f70a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0424=['stringify','error','message','info','result','catch','UpdateVoiceRecording','VoiceRecording','body','options','raw','where','limit','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','value','%s.cypher','encryptFile','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s'];(function(_0x572438,_0x1b94fe){var _0xc6e9a7=function(_0x5b25a7){while(--_0x5b25a7){_0x572438['push'](_0x572438['shift']());}};_0xc6e9a7(++_0x1b94fe);}(_0x0424,0x159));var _0x4042=function(_0xf5c7bf,_0x3a157d){_0xf5c7bf=_0xf5c7bf-0x0;var _0x1425e6=_0x0424[_0xf5c7bf];return _0x1425e6;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4042('0x0'));var BPromise=require(_0x4042('0x1'));var rs=require(_0x4042('0x2'));var fs=require('fs');var Redis=require(_0x4042('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4042('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x4042('0x5'));var jayson=require(_0x4042('0x6'));var client=jayson[_0x4042('0x7')][_0x4042('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3abaf1,_0xa5310f,_0x10ec07){return new BPromise(function(_0x5d11bf,_0x509772){return client[_0x4042('0x9')](_0x3abaf1,_0x10ec07)[_0x4042('0xa')](function(_0x103e4a){logger['info'](_0x4042('0xb'),_0xa5310f,_0x4042('0xc'));logger[_0x4042('0xd')](_0x4042('0xe'),_0xa5310f,_0x4042('0xc'),JSON[_0x4042('0xf')](_0x103e4a));if(_0x103e4a[_0x4042('0x10')]){if(_0x103e4a[_0x4042('0x10')]['code']===0x1f4){logger[_0x4042('0x10')](_0x4042('0xb'),_0xa5310f,_0x103e4a['error'][_0x4042('0x11')]);return _0x509772(_0x103e4a[_0x4042('0x10')][_0x4042('0x11')]);}logger[_0x4042('0x10')](_0x4042('0xb'),_0xa5310f,_0x103e4a[_0x4042('0x10')][_0x4042('0x11')]);return _0x5d11bf(_0x103e4a['error'][_0x4042('0x11')]);}else{logger[_0x4042('0x12')]('VoiceRecording,\x20%s,\x20%s',_0xa5310f,_0x4042('0xc'));_0x5d11bf(_0x103e4a[_0x4042('0x13')][_0x4042('0x11')]);}})[_0x4042('0x14')](function(_0x31e765){logger[_0x4042('0x10')](_0x4042('0xb'),_0xa5310f,_0x31e765);_0x509772(_0x31e765);});});}exports[_0x4042('0x15')]=function(_0x466077){var _0x4b02d4=this;return new Promise(function(_0xe5c1ec,_0x4fe024){return db[_0x4042('0x16')]['update'](_0x466077[_0x4042('0x17')],{'raw':_0x466077[_0x4042('0x18')]?_0x466077[_0x4042('0x18')][_0x4042('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x466077['options']?_0x466077[_0x4042('0x18')][_0x4042('0x1a')]||null:null,'attributes':_0x466077[_0x4042('0x18')]?_0x466077[_0x4042('0x18')]['attributes']||null:null,'limit':_0x466077[_0x4042('0x18')]?_0x466077[_0x4042('0x18')][_0x4042('0x1b')]||null:null})[_0x4042('0xa')](function(_0x352631){logger['info'](_0x4042('0x15'),_0x466077);logger[_0x4042('0xd')]('UpdateVoiceRecording',_0x466077,JSON[_0x4042('0xf')](_0x352631));_0xe5c1ec(_0x352631);})['catch'](function(_0x271b82){logger[_0x4042('0x10')](_0x4042('0x15'),_0x271b82['message'],_0x466077);_0x4fe024(_0x4b02d4[_0x4042('0x10')](0x1f4,_0x271b82[_0x4042('0x11')]));});});};exports[_0x4042('0x1c')]=function(_0xbdadc8){var _0x1c4d9f=this;return new Promise(function(_0x52e575,_0x58c409){var _0x1d8d48=require(_0x4042('0x1d'));var _0x26542c;return db[_0x4042('0x1e')][_0x4042('0x1f')]({'attributes':['id',_0x4042('0x20')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x33733b){_0x26542c=_0x33733b;return db[_0x4042('0x16')]['create'](_0xbdadc8[_0x4042('0x17')]);})[_0x4042('0xa')](function(_0xe924fe){if(_0x26542c['callRecordingEncryption']&&fs['existsSync'](_0xe924fe[_0x4042('0x21')])){var _0x43bd1c=util['format'](_0x4042('0x22'),_0xe924fe[_0x4042('0x21')]);return _0x1d8d48[_0x4042('0x23')](_0xe924fe[_0x4042('0x21')],_0x43bd1c,config[_0x4042('0x24')][_0x4042('0x25')])[_0x4042('0xa')](function(){fs[_0x4042('0x26')](_0xe924fe[_0x4042('0x21')]);logger['info'](_0x4042('0x27'));return _0xe924fe;});}return _0xe924fe;})[_0x4042('0xa')](function(_0x5320f8){logger[_0x4042('0x12')](_0x4042('0x1c'),_0xbdadc8);logger['debug'](_0x4042('0x1c'),_0xbdadc8,JSON[_0x4042('0xf')](_0x5320f8));_0x52e575(_0x5320f8);})[_0x4042('0x14')](function(_0xaa7c99){logger[_0x4042('0x10')](_0x4042('0x1c'),_0xaa7c99[_0x4042('0x11')],_0xbdadc8);_0x58c409(_0x1c4d9f[_0x4042('0x10')](0x1f4,_0xaa7c99[_0x4042('0x11')]));});});};
\ No newline at end of file
+var _0x1623=['../../config/utils','../../config/environment','client','http','request','then','info','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VoiceRecording,\x20%s,\x20%s','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','where','limit','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','existsSync','format','%s.cypher','value','encryptFile','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x1eb688,_0x24f131){var _0x3226bc=function(_0x5e2eec){while(--_0x5e2eec){_0x1eb688['push'](_0x1eb688['shift']());}};_0x3226bc(++_0x24f131);}(_0x1623,0xab));var _0x3162=function(_0x292687,_0x17dfca){_0x292687=_0x292687-0x0;var _0x10d3f6=_0x1623[_0x292687];return _0x10d3f6;};'use strict';var _=require(_0x3162('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3162('0x1'));var rs=require(_0x3162('0x2'));var fs=require('fs');var Redis=require(_0x3162('0x3'));var db=require(_0x3162('0x4'))['db'];var utils=require(_0x3162('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x3162('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x3162('0x7')][_0x3162('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x53260d,_0xffe9b6,_0x2dc07e){return new BPromise(function(_0x26ee32,_0x36609e){return client[_0x3162('0x9')](_0x53260d,_0x2dc07e)[_0x3162('0xa')](function(_0xe43099){logger[_0x3162('0xb')]('VoiceRecording,\x20%s,\x20%s',_0xffe9b6,'request\x20sent');logger[_0x3162('0xc')](_0x3162('0xd'),_0xffe9b6,_0x3162('0xe'),JSON[_0x3162('0xf')](_0xe43099));if(_0xe43099[_0x3162('0x10')]){if(_0xe43099[_0x3162('0x10')][_0x3162('0x11')]===0x1f4){logger[_0x3162('0x10')](_0x3162('0x12'),_0xffe9b6,_0xe43099['error'][_0x3162('0x13')]);return _0x36609e(_0xe43099['error'][_0x3162('0x13')]);}logger[_0x3162('0x10')]('VoiceRecording,\x20%s,\x20%s',_0xffe9b6,_0xe43099['error'][_0x3162('0x13')]);return _0x26ee32(_0xe43099[_0x3162('0x10')][_0x3162('0x13')]);}else{logger['info'](_0x3162('0x12'),_0xffe9b6,_0x3162('0xe'));_0x26ee32(_0xe43099[_0x3162('0x14')]['message']);}})[_0x3162('0x15')](function(_0x42cf7d){logger[_0x3162('0x10')](_0x3162('0x12'),_0xffe9b6,_0x42cf7d);_0x36609e(_0x42cf7d);});});}exports[_0x3162('0x16')]=function(_0x1eed46){var _0x391d97=this;return new Promise(function(_0x4b2bf3,_0x42f283){return db[_0x3162('0x17')][_0x3162('0x18')](_0x1eed46[_0x3162('0x19')],{'raw':_0x1eed46['options']?_0x1eed46[_0x3162('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1eed46['options']?_0x1eed46[_0x3162('0x1a')][_0x3162('0x1b')]||null:null,'attributes':_0x1eed46[_0x3162('0x1a')]?_0x1eed46['options']['attributes']||null:null,'limit':_0x1eed46[_0x3162('0x1a')]?_0x1eed46[_0x3162('0x1a')][_0x3162('0x1c')]||null:null})[_0x3162('0xa')](function(_0x31b27b){logger[_0x3162('0xb')](_0x3162('0x16'),_0x1eed46);logger[_0x3162('0xc')]('UpdateVoiceRecording',_0x1eed46,JSON[_0x3162('0xf')](_0x31b27b));_0x4b2bf3(_0x31b27b);})[_0x3162('0x15')](function(_0x3919e7){logger[_0x3162('0x10')](_0x3162('0x16'),_0x3919e7[_0x3162('0x13')],_0x1eed46);_0x42f283(_0x391d97[_0x3162('0x10')](0x1f4,_0x3919e7[_0x3162('0x13')]));});});};exports[_0x3162('0x1d')]=function(_0x356c5d){var _0x8fa09f=this;return new Promise(function(_0x2f62d7,_0x1c03a4){var _0x48de45=require(_0x3162('0x1e'));var _0x552469;return db[_0x3162('0x1f')][_0x3162('0x20')]({'attributes':['id',_0x3162('0x21')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x4903e7){_0x552469=_0x4903e7;return db[_0x3162('0x17')][_0x3162('0x22')](_0x356c5d[_0x3162('0x19')]);})[_0x3162('0xa')](function(_0x2f88ec){if(_0x552469['callRecordingEncryption']&&fs[_0x3162('0x23')](_0x2f88ec['value'])){var _0xf11765=util[_0x3162('0x24')](_0x3162('0x25'),_0x2f88ec[_0x3162('0x26')]);return _0x48de45[_0x3162('0x27')](_0x2f88ec[_0x3162('0x26')],_0xf11765,config[_0x3162('0x28')][_0x3162('0x29')])['then'](function(){fs[_0x3162('0x2a')](_0x2f88ec[_0x3162('0x26')]);logger['info'](_0x3162('0x2b'));return _0x2f88ec;});}return _0x2f88ec;})[_0x3162('0xa')](function(_0x528340){logger['info'](_0x3162('0x1d'),_0x356c5d);logger['debug'](_0x3162('0x1d'),_0x356c5d,JSON[_0x3162('0xf')](_0x528340));_0x2f62d7(_0x528340);})[_0x3162('0x15')](function(_0x551442){logger['error'](_0x3162('0x1d'),_0x551442[_0x3162('0x13')],_0x356c5d);_0x1c03a4(_0x8fa09f['error'](0x1f4,_0x551442[_0x3162('0x13')]));});});};
\ No newline at end of file
index a0f1da4..839cf66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4222=['/describe','describe','/:id','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0x4222,0x134));var _0x2422=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0x4222[_0x3070dc];return _0x431489;};'use strict';var multer=require(_0x2422('0x0'));var util=require('util');var path=require(_0x2422('0x1'));var timeout=require(_0x2422('0x2'));var express=require(_0x2422('0x3'));var router=express[_0x2422('0x4')]();var fs_extra=require(_0x2422('0x5'));var auth=require(_0x2422('0x6'));var interaction=require(_0x2422('0x7'));var config=require(_0x2422('0x8'));var controller=require('./voiceTransferReport.controller');router[_0x2422('0x9')]('/',auth[_0x2422('0xa')](),controller[_0x2422('0xb')]);router[_0x2422('0x9')](_0x2422('0xc'),auth[_0x2422('0xa')](),controller[_0x2422('0xd')]);router[_0x2422('0x9')](_0x2422('0xe'),auth[_0x2422('0xa')](),controller['show']);router['post']('/',auth[_0x2422('0xa')](),controller['create']);router[_0x2422('0xf')](_0x2422('0xe'),auth[_0x2422('0xa')](),controller[_0x2422('0x10')]);router[_0x2422('0x11')]('/:id',auth[_0x2422('0xa')](),controller[_0x2422('0x12')]);module[_0x2422('0x13')]=router;
\ No newline at end of file
+var _0x5dda=['multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','update','delete','exports'];(function(_0x4dd64b,_0x3b6289){var _0x1af70d=function(_0x25d945){while(--_0x25d945){_0x4dd64b['push'](_0x4dd64b['shift']());}};_0x1af70d(++_0x3b6289);}(_0x5dda,0x118));var _0xa5dd=function(_0x424aaa,_0x599a6b){_0x424aaa=_0x424aaa-0x0;var _0x3b63d8=_0x5dda[_0x424aaa];return _0x3b63d8;};'use strict';var multer=require(_0xa5dd('0x0'));var util=require(_0xa5dd('0x1'));var path=require(_0xa5dd('0x2'));var timeout=require('connect-timeout');var express=require(_0xa5dd('0x3'));var router=express[_0xa5dd('0x4')]();var fs_extra=require(_0xa5dd('0x5'));var auth=require(_0xa5dd('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa5dd('0x7'));var controller=require(_0xa5dd('0x8'));router[_0xa5dd('0x9')]('/',auth[_0xa5dd('0xa')](),controller[_0xa5dd('0xb')]);router[_0xa5dd('0x9')](_0xa5dd('0xc'),auth['isAuthenticated'](),controller[_0xa5dd('0xd')]);router[_0xa5dd('0x9')](_0xa5dd('0xe'),auth[_0xa5dd('0xa')](),controller['show']);router[_0xa5dd('0xf')]('/',auth[_0xa5dd('0xa')](),controller[_0xa5dd('0x10')]);router['put'](_0xa5dd('0xe'),auth['isAuthenticated'](),controller[_0xa5dd('0x11')]);router[_0xa5dd('0x12')](_0xa5dd('0xe'),auth['isAuthenticated'](),controller['destroy']);module[_0xa5dd('0x13')]=router;
\ No newline at end of file
index 3de088e..b193da3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c1b=['exports','ENUM','blind','attended','STRING'];(function(_0x32c260,_0x3fd61){var _0x27d39d=function(_0x2ae9d1){while(--_0x2ae9d1){_0x32c260['push'](_0x32c260['shift']());}};_0x27d39d(++_0x3fd61);}(_0x3c1b,0x127));var _0xb3c1=function(_0x198534,_0x37605b){_0x198534=_0x198534-0x0;var _0x53f523=_0x3c1b[_0x198534];return _0x53f523;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0xb3c1('0x0')]={'type':{'type':Sequelize[_0xb3c1('0x1')](_0xb3c1('0x2'),_0xb3c1('0x3'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0xb3c1('0x4')]},'transferercalleridnum':{'type':Sequelize[_0xb3c1('0x4')]},'transferercalleridname':{'type':Sequelize[_0xb3c1('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0xb3c1('0x4')]},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize[_0xb3c1('0x4')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0xb3c1('0x4')]},'transfereeconnectedlinename':{'type':Sequelize[_0xb3c1('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0xb3c1('0x4')]},'transfereecontext':{'type':Sequelize[_0xb3c1('0x4')]},'transfereeexten':{'type':Sequelize[_0xb3c1('0x4')]},'transfereelinkedid':{'type':Sequelize[_0xb3c1('0x4')]},'isexternal':{'type':Sequelize[_0xb3c1('0x1')]('Yes','No')},'context':{'type':Sequelize[_0xb3c1('0x4')]},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x11c5=['Yes','moment','exports','ENUM','attended','STRING'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x11c5,0x9d));var _0x511c=function(_0x1645a8,_0x4c0c9e){_0x1645a8=_0x1645a8-0x0;var _0x3e512a=_0x11c5[_0x1645a8];return _0x3e512a;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x511c('0x0'));module[_0x511c('0x1')]={'type':{'type':Sequelize[_0x511c('0x2')]('blind',_0x511c('0x3'))},'result':{'type':Sequelize[_0x511c('0x4')]},'transfererchannel':{'type':Sequelize[_0x511c('0x4')]},'transferercalleridnum':{'type':Sequelize[_0x511c('0x4')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0x511c('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0x511c('0x4')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0x511c('0x4')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x511c('0x4')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x511c('0x4')]},'transfereecalleridname':{'type':Sequelize[_0x511c('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize['STRING']},'transfereecontext':{'type':Sequelize[_0x511c('0x4')]},'transfereeexten':{'type':Sequelize[_0x511c('0x4')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0x511c('0x2')](_0x511c('0x5'),'No')},'context':{'type':Sequelize[_0x511c('0x4')]},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 59f599f..89cc530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe55a=['nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','name','send','index','map','VoiceTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x5c23a7,_0x405c78){var _0x1002e1=function(_0x4af0bc){while(--_0x4af0bc){_0x5c23a7['push'](_0x5c23a7['shift']());}};_0x1002e1(++_0x405c78);}(_0xe55a,0x148));var _0xae55=function(_0x431480,_0x40c7a7){_0x431480=_0x431480-0x0;var _0x139af7=_0xe55a[_0x431480];return _0x139af7;};'use strict';var emlformat=require(_0xae55('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xae55('0x1'));var jsonpatch=require(_0xae55('0x2'));var rp=require(_0xae55('0x3'));var moment=require('moment');var BPromise=require(_0xae55('0x4'));var Mustache=require(_0xae55('0x5'));var util=require(_0xae55('0x6'));var path=require(_0xae55('0x7'));var sox=require('sox');var csv=require(_0xae55('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xae55('0x9'));var _=require(_0xae55('0xa'));var squel=require('squel');var crypto=require(_0xae55('0xb'));var jsforce=require(_0xae55('0xc'));var deskjs=require(_0xae55('0xd'));var toCsv=require('to-csv');var querystring=require(_0xae55('0xe'));var Papa=require(_0xae55('0xf'));var Redis=require(_0xae55('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xae55('0x11'));var as=require(_0xae55('0x12'));var hardwareService=require(_0xae55('0x13'));var logger=require(_0xae55('0x14'))(_0xae55('0x15'));var utils=require(_0xae55('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xae55('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49333b,_0x1f28ac){_0x1f28ac=_0x1f28ac||0xcc;return function(_0x2e4fb4){if(_0x2e4fb4){return _0x49333b[_0xae55('0x18')](_0x1f28ac);}return _0x49333b[_0xae55('0x19')](_0x1f28ac)[_0xae55('0x1a')]();};}function respondWithResult(_0x3bb9c1,_0x4be4f4){_0x4be4f4=_0x4be4f4||0xc8;return function(_0x34faf4){if(_0x34faf4){return _0x3bb9c1[_0xae55('0x19')](_0x4be4f4)[_0xae55('0x1b')](_0x34faf4);}};}function respondWithFilteredResult(_0x3b73b2,_0x59d934){return function(_0x3b3f9e){if(_0x3b3f9e){var _0x63be89=typeof _0x59d934['offset']===_0xae55('0x1c')&&typeof _0x59d934['limit']===_0xae55('0x1c');var _0x5760fe=_0x3b3f9e[_0xae55('0x1d')];var _0x5cffa5=_0x63be89?0x0:_0x59d934[_0xae55('0x1e')];var _0x3e55bc=_0x63be89?_0x3b3f9e['count']:_0x59d934[_0xae55('0x1e')]+_0x59d934[_0xae55('0x1f')];var _0x162cc3;if(_0x3e55bc>=_0x5760fe){_0x3e55bc=_0x5760fe;_0x162cc3=0xc8;}else{_0x162cc3=0xce;}_0x3b73b2['status'](_0x162cc3);return _0x3b73b2[_0xae55('0x20')]('Content-Range',_0x5cffa5+'-'+_0x3e55bc+'/'+_0x5760fe)[_0xae55('0x1b')](_0x3b3f9e);}return null;};}function patchUpdates(_0x61d7b3){return function(_0x16888c){try{jsonpatch[_0xae55('0x21')](_0x16888c,_0x61d7b3,!![]);}catch(_0x5021c8){return BPromise[_0xae55('0x22')](_0x5021c8);}return _0x16888c[_0xae55('0x23')]();};}function saveUpdates(_0x5c3638,_0xb81e21){return function(_0x1300b3){if(_0x1300b3){return _0x1300b3[_0xae55('0x24')](_0x5c3638)[_0xae55('0x25')](function(_0x5647bf){return _0x5647bf;});}return null;};}function removeEntity(_0x190431,_0x386bf0){return function(_0x2fb191){if(_0x2fb191){return _0x2fb191[_0xae55('0x26')]()['then'](function(){_0x190431[_0xae55('0x19')](0xcc)[_0xae55('0x1a')]();});}};}function handleEntityNotFound(_0x221694,_0x3f1aa5){return function(_0x30b4d2){if(!_0x30b4d2){_0x221694[_0xae55('0x18')](0x194);}return _0x30b4d2;};}function handleError(_0x1ff441,_0x71e945){_0x71e945=_0x71e945||0x1f4;return function(_0x420b30){logger['error'](_0x420b30['stack']);if(_0x420b30['name']){delete _0x420b30[_0xae55('0x27')];}_0x1ff441[_0xae55('0x19')](_0x71e945)[_0xae55('0x28')](_0x420b30);};}exports[_0xae55('0x29')]=function(_0x196f75,_0x449992){var _0x66c46e={},_0x593cd0={},_0x4090ff={'count':0x0,'rows':[]};var _0x3cf20f=_[_0xae55('0x2a')](db[_0xae55('0x2b')][_0xae55('0x2c')],function(_0x5895eb){return{'name':_0x5895eb[_0xae55('0x2d')],'type':_0x5895eb[_0xae55('0x2e')][_0xae55('0x2f')]};});_0x593cd0[_0xae55('0x30')]=_[_0xae55('0x2a')](_0x3cf20f,_0xae55('0x27'));_0x593cd0[_0xae55('0x31')]=_[_0xae55('0x32')](_0x196f75['query']);_0x593cd0[_0xae55('0x33')]=_['intersection'](_0x593cd0[_0xae55('0x30')],_0x593cd0[_0xae55('0x31')]);_0x66c46e['attributes']=_[_0xae55('0x34')](_0x593cd0[_0xae55('0x30')],qs[_0xae55('0x35')](_0x196f75[_0xae55('0x31')][_0xae55('0x35')]));_0x66c46e['attributes']=_0x66c46e[_0xae55('0x36')][_0xae55('0x37')]?_0x66c46e[_0xae55('0x36')]:_0x593cd0['model'];if(!_0x196f75[_0xae55('0x31')][_0xae55('0x38')](_0xae55('0x39'))){_0x66c46e['limit']=qs[_0xae55('0x1f')](_0x196f75[_0xae55('0x31')][_0xae55('0x1f')]);_0x66c46e['offset']=qs['offset'](_0x196f75[_0xae55('0x31')][_0xae55('0x1e')]);}_0x66c46e[_0xae55('0x3a')]=qs[_0xae55('0x3b')](_0x196f75[_0xae55('0x31')]['sort']);_0x66c46e[_0xae55('0x3c')]=qs[_0xae55('0x33')](_[_0xae55('0x3d')](_0x196f75[_0xae55('0x31')],_0x593cd0['filters']),_0x3cf20f);if(_0x196f75[_0xae55('0x31')][_0xae55('0x3e')]){_0x66c46e[_0xae55('0x3c')]=_[_0xae55('0x3f')](_0x66c46e[_0xae55('0x3c')],{'$or':_[_0xae55('0x2a')](_0x3cf20f,function(_0x143965){if(_0x143965[_0xae55('0x2e')]!==_0xae55('0x40')){var _0x31a02c={};_0x31a02c[_0x143965[_0xae55('0x27')]]={'$like':'%'+_0x196f75[_0xae55('0x31')]['filter']+'%'};return _0x31a02c;}})});}_0x66c46e=_[_0xae55('0x3f')]({},_0x66c46e,_0x196f75[_0xae55('0x41')]);var _0x356feb={'where':_0x66c46e['where']};return db[_0xae55('0x2b')]['count'](_0x356feb)['then'](function(_0x4d9727){_0x4090ff[_0xae55('0x1d')]=_0x4d9727;if(_0x196f75['query']['includeAll']){_0x66c46e[_0xae55('0x42')]=[{'all':!![]}];}return db[_0xae55('0x2b')][_0xae55('0x43')](_0x66c46e);})[_0xae55('0x25')](function(_0x550d31){_0x4090ff[_0xae55('0x44')]=_0x550d31;return _0x4090ff;})['then'](respondWithFilteredResult(_0x449992,_0x66c46e))[_0xae55('0x45')](handleError(_0x449992,null));};exports[_0xae55('0x46')]=function(_0x2ae693,_0x5492e7){var _0x5564a4={'raw':!![],'where':{'id':_0x2ae693[_0xae55('0x47')]['id']}},_0x400a16={};_0x400a16[_0xae55('0x30')]=_[_0xae55('0x32')](db[_0xae55('0x2b')][_0xae55('0x2c')]);_0x400a16[_0xae55('0x31')]=_[_0xae55('0x32')](_0x2ae693[_0xae55('0x31')]);_0x400a16[_0xae55('0x33')]=_[_0xae55('0x34')](_0x400a16['model'],_0x400a16[_0xae55('0x31')]);_0x5564a4[_0xae55('0x36')]=_[_0xae55('0x34')](_0x400a16['model'],qs[_0xae55('0x35')](_0x2ae693[_0xae55('0x31')][_0xae55('0x35')]));_0x5564a4[_0xae55('0x36')]=_0x5564a4['attributes'][_0xae55('0x37')]?_0x5564a4[_0xae55('0x36')]:_0x400a16['model'];if(_0x2ae693[_0xae55('0x31')][_0xae55('0x48')]){_0x5564a4['include']=[{'all':!![]}];}_0x5564a4=_[_0xae55('0x3f')]({},_0x5564a4,_0x2ae693[_0xae55('0x41')]);return db[_0xae55('0x2b')]['find'](_0x5564a4)[_0xae55('0x25')](handleEntityNotFound(_0x5492e7,null))[_0xae55('0x25')](respondWithResult(_0x5492e7,null))['catch'](handleError(_0x5492e7,null));};exports[_0xae55('0x49')]=function(_0x456e7f,_0x31e6da){return db[_0xae55('0x2b')]['create'](_0x456e7f['body'],{})[_0xae55('0x25')](respondWithResult(_0x31e6da,0xc9))[_0xae55('0x45')](handleError(_0x31e6da,null));};exports['update']=function(_0x4e5722,_0x15a563){if(_0x4e5722['body']['id']){delete _0x4e5722[_0xae55('0x4a')]['id'];}return db[_0xae55('0x2b')]['find']({'where':{'id':_0x4e5722[_0xae55('0x47')]['id']}})[_0xae55('0x25')](handleEntityNotFound(_0x15a563,null))['then'](saveUpdates(_0x4e5722['body'],null))[_0xae55('0x25')](respondWithResult(_0x15a563,null))[_0xae55('0x45')](handleError(_0x15a563,null));};exports[_0xae55('0x26')]=function(_0x275343,_0x24062e){return db[_0xae55('0x2b')][_0xae55('0x4b')]({'where':{'id':_0x275343['params']['id']}})['then'](handleEntityNotFound(_0x24062e,null))[_0xae55('0x25')](removeEntity(_0x24062e,null))[_0xae55('0x45')](handleError(_0x24062e,null));};exports[_0xae55('0x4c')]=function(_0x1a58ac,_0x126d9c){return db[_0xae55('0x2b')][_0xae55('0x4c')]()[_0xae55('0x25')](respondWithResult(_0x126d9c,null))[_0xae55('0x45')](handleError(_0x126d9c,null));};
\ No newline at end of file
+var _0x8b50=['Content-Range','apply','reject','save','update','then','destroy','stack','name','send','map','VoiceTransferReport','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','rows','catch','show','params','include','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set'];(function(_0x45f5c1,_0x2f5ee6){var _0x4042e7=function(_0x462c72){while(--_0x462c72){_0x45f5c1['push'](_0x45f5c1['shift']());}};_0x4042e7(++_0x2f5ee6);}(_0x8b50,0x157));var _0x08b5=function(_0x462cc2,_0x3eab48){_0x462cc2=_0x462cc2-0x0;var _0x312870=_0x8b50[_0x462cc2];return _0x312870;};'use strict';var emlformat=require(_0x08b5('0x0'));var rimraf=require(_0x08b5('0x1'));var zipdir=require(_0x08b5('0x2'));var jsonpatch=require(_0x08b5('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x08b5('0x4'));var Mustache=require(_0x08b5('0x5'));var util=require(_0x08b5('0x6'));var path=require(_0x08b5('0x7'));var sox=require('sox');var csv=require(_0x08b5('0x8'));var ejs=require(_0x08b5('0x9'));var fs=require('fs');var fs_extra=require(_0x08b5('0xa'));var _=require(_0x08b5('0xb'));var squel=require(_0x08b5('0xc'));var crypto=require(_0x08b5('0xd'));var jsforce=require(_0x08b5('0xe'));var deskjs=require(_0x08b5('0xf'));var toCsv=require(_0x08b5('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x08b5('0x10'));var as=require(_0x08b5('0x11'));var hardwareService=require(_0x08b5('0x12'));var logger=require(_0x08b5('0x13'))(_0x08b5('0x14'));var utils=require('../../config/utils');var config=require(_0x08b5('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x08b5('0x16'))['db'];function respondWithStatusCode(_0x4f68b3,_0x32d4f9){_0x32d4f9=_0x32d4f9||0xcc;return function(_0xaadeec){if(_0xaadeec){return _0x4f68b3[_0x08b5('0x17')](_0x32d4f9);}return _0x4f68b3[_0x08b5('0x18')](_0x32d4f9)[_0x08b5('0x19')]();};}function respondWithResult(_0x8e5968,_0x512e8b){_0x512e8b=_0x512e8b||0xc8;return function(_0x2da375){if(_0x2da375){return _0x8e5968[_0x08b5('0x18')](_0x512e8b)[_0x08b5('0x1a')](_0x2da375);}};}function respondWithFilteredResult(_0x1246d7,_0x30b159){return function(_0x9be61c){if(_0x9be61c){var _0xad8f7c=typeof _0x30b159['offset']===_0x08b5('0x1b')&&typeof _0x30b159[_0x08b5('0x1c')]===_0x08b5('0x1b');var _0x2b2e8a=_0x9be61c[_0x08b5('0x1d')];var _0x1eb366=_0xad8f7c?0x0:_0x30b159[_0x08b5('0x1e')];var _0x34c7ff=_0xad8f7c?_0x9be61c['count']:_0x30b159[_0x08b5('0x1e')]+_0x30b159[_0x08b5('0x1c')];var _0x172ee6;if(_0x34c7ff>=_0x2b2e8a){_0x34c7ff=_0x2b2e8a;_0x172ee6=0xc8;}else{_0x172ee6=0xce;}_0x1246d7['status'](_0x172ee6);return _0x1246d7[_0x08b5('0x1f')](_0x08b5('0x20'),_0x1eb366+'-'+_0x34c7ff+'/'+_0x2b2e8a)['json'](_0x9be61c);}return null;};}function patchUpdates(_0xd7ab05){return function(_0x1220f7){try{jsonpatch[_0x08b5('0x21')](_0x1220f7,_0xd7ab05,!![]);}catch(_0x39709a){return BPromise[_0x08b5('0x22')](_0x39709a);}return _0x1220f7[_0x08b5('0x23')]();};}function saveUpdates(_0x374991,_0x5ef3f2){return function(_0x48f858){if(_0x48f858){return _0x48f858[_0x08b5('0x24')](_0x374991)[_0x08b5('0x25')](function(_0x43f2ab){return _0x43f2ab;});}return null;};}function removeEntity(_0x5dd8a1,_0x36c43e){return function(_0x10c038){if(_0x10c038){return _0x10c038[_0x08b5('0x26')]()[_0x08b5('0x25')](function(){_0x5dd8a1['status'](0xcc)[_0x08b5('0x19')]();});}};}function handleEntityNotFound(_0x1101ce,_0x195946){return function(_0x4bba79){if(!_0x4bba79){_0x1101ce[_0x08b5('0x17')](0x194);}return _0x4bba79;};}function handleError(_0x315725,_0x3f77b1){_0x3f77b1=_0x3f77b1||0x1f4;return function(_0x46a55f){logger['error'](_0x46a55f[_0x08b5('0x27')]);if(_0x46a55f[_0x08b5('0x28')]){delete _0x46a55f[_0x08b5('0x28')];}_0x315725[_0x08b5('0x18')](_0x3f77b1)[_0x08b5('0x29')](_0x46a55f);};}exports['index']=function(_0x5b238a,_0x25cfb1){var _0x458cb4={},_0x567d11={},_0x5d75c7={'count':0x0,'rows':[]};var _0x4264df=_[_0x08b5('0x2a')](db[_0x08b5('0x2b')]['rawAttributes'],function(_0x30050c){return{'name':_0x30050c[_0x08b5('0x2c')],'type':_0x30050c['type'][_0x08b5('0x2d')]};});_0x567d11[_0x08b5('0x2e')]=_[_0x08b5('0x2a')](_0x4264df,_0x08b5('0x28'));_0x567d11['query']=_[_0x08b5('0x2f')](_0x5b238a[_0x08b5('0x30')]);_0x567d11[_0x08b5('0x31')]=_[_0x08b5('0x32')](_0x567d11[_0x08b5('0x2e')],_0x567d11[_0x08b5('0x30')]);_0x458cb4[_0x08b5('0x33')]=_[_0x08b5('0x32')](_0x567d11['model'],qs[_0x08b5('0x34')](_0x5b238a[_0x08b5('0x30')][_0x08b5('0x34')]));_0x458cb4['attributes']=_0x458cb4['attributes'][_0x08b5('0x35')]?_0x458cb4[_0x08b5('0x33')]:_0x567d11[_0x08b5('0x2e')];if(!_0x5b238a[_0x08b5('0x30')][_0x08b5('0x36')](_0x08b5('0x37'))){_0x458cb4[_0x08b5('0x1c')]=qs['limit'](_0x5b238a[_0x08b5('0x30')][_0x08b5('0x1c')]);_0x458cb4[_0x08b5('0x1e')]=qs[_0x08b5('0x1e')](_0x5b238a[_0x08b5('0x30')]['offset']);}_0x458cb4[_0x08b5('0x38')]=qs[_0x08b5('0x39')](_0x5b238a[_0x08b5('0x30')][_0x08b5('0x39')]);_0x458cb4[_0x08b5('0x3a')]=qs['filters'](_[_0x08b5('0x3b')](_0x5b238a[_0x08b5('0x30')],_0x567d11[_0x08b5('0x31')]),_0x4264df);if(_0x5b238a['query'][_0x08b5('0x3c')]){_0x458cb4[_0x08b5('0x3a')]=_[_0x08b5('0x3d')](_0x458cb4[_0x08b5('0x3a')],{'$or':_[_0x08b5('0x2a')](_0x4264df,function(_0x2d94d0){if(_0x2d94d0[_0x08b5('0x3e')]!==_0x08b5('0x3f')){var _0x642cc={};_0x642cc[_0x2d94d0['name']]={'$like':'%'+_0x5b238a[_0x08b5('0x30')][_0x08b5('0x3c')]+'%'};return _0x642cc;}})});}_0x458cb4=_[_0x08b5('0x3d')]({},_0x458cb4,_0x5b238a[_0x08b5('0x40')]);var _0x277391={'where':_0x458cb4['where']};return db[_0x08b5('0x2b')][_0x08b5('0x1d')](_0x277391)[_0x08b5('0x25')](function(_0xca2ed0){_0x5d75c7[_0x08b5('0x1d')]=_0xca2ed0;if(_0x5b238a[_0x08b5('0x30')][_0x08b5('0x41')]){_0x458cb4['include']=[{'all':!![]}];}return db['VoiceTransferReport']['findAll'](_0x458cb4);})[_0x08b5('0x25')](function(_0x54254e){_0x5d75c7[_0x08b5('0x42')]=_0x54254e;return _0x5d75c7;})['then'](respondWithFilteredResult(_0x25cfb1,_0x458cb4))[_0x08b5('0x43')](handleError(_0x25cfb1,null));};exports[_0x08b5('0x44')]=function(_0x350a88,_0x3418e6){var _0x796143={'raw':!![],'where':{'id':_0x350a88[_0x08b5('0x45')]['id']}},_0x5af618={};_0x5af618[_0x08b5('0x2e')]=_[_0x08b5('0x2f')](db['VoiceTransferReport']['rawAttributes']);_0x5af618[_0x08b5('0x30')]=_[_0x08b5('0x2f')](_0x350a88[_0x08b5('0x30')]);_0x5af618[_0x08b5('0x31')]=_[_0x08b5('0x32')](_0x5af618[_0x08b5('0x2e')],_0x5af618['query']);_0x796143[_0x08b5('0x33')]=_[_0x08b5('0x32')](_0x5af618[_0x08b5('0x2e')],qs[_0x08b5('0x34')](_0x350a88[_0x08b5('0x30')]['fields']));_0x796143['attributes']=_0x796143[_0x08b5('0x33')]['length']?_0x796143[_0x08b5('0x33')]:_0x5af618[_0x08b5('0x2e')];if(_0x350a88[_0x08b5('0x30')]['includeAll']){_0x796143[_0x08b5('0x46')]=[{'all':!![]}];}_0x796143=_[_0x08b5('0x3d')]({},_0x796143,_0x350a88[_0x08b5('0x40')]);return db['VoiceTransferReport']['find'](_0x796143)['then'](handleEntityNotFound(_0x3418e6,null))[_0x08b5('0x25')](respondWithResult(_0x3418e6,null))[_0x08b5('0x43')](handleError(_0x3418e6,null));};exports[_0x08b5('0x47')]=function(_0x4b75c7,_0x15c73b){return db[_0x08b5('0x2b')][_0x08b5('0x47')](_0x4b75c7[_0x08b5('0x48')],{})[_0x08b5('0x25')](respondWithResult(_0x15c73b,0xc9))[_0x08b5('0x43')](handleError(_0x15c73b,null));};exports['update']=function(_0x41e8f9,_0x53019a){if(_0x41e8f9['body']['id']){delete _0x41e8f9['body']['id'];}return db[_0x08b5('0x2b')][_0x08b5('0x49')]({'where':{'id':_0x41e8f9[_0x08b5('0x45')]['id']}})[_0x08b5('0x25')](handleEntityNotFound(_0x53019a,null))[_0x08b5('0x25')](saveUpdates(_0x41e8f9['body'],null))[_0x08b5('0x25')](respondWithResult(_0x53019a,null))[_0x08b5('0x43')](handleError(_0x53019a,null));};exports[_0x08b5('0x26')]=function(_0x275095,_0x34551f){return db[_0x08b5('0x2b')]['find']({'where':{'id':_0x275095[_0x08b5('0x45')]['id']}})[_0x08b5('0x25')](handleEntityNotFound(_0x34551f,null))['then'](removeEntity(_0x34551f,null))[_0x08b5('0x43')](handleError(_0x34551f,null));};exports[_0x08b5('0x4a')]=function(_0x5d2072,_0x2b0875){return db['VoiceTransferReport'][_0x08b5('0x4a')]()[_0x08b5('0x25')](respondWithResult(_0x2b0875,null))['catch'](handleError(_0x2b0875,null));};
\ No newline at end of file
index de45cfe..d0dff5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03bd=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','api'];(function(_0x5ead93,_0xdf04c1){var _0x117556=function(_0x58ca4b){while(--_0x58ca4b){_0x5ead93['push'](_0x5ead93['shift']());}};_0x117556(++_0xdf04c1);}(_0x03bd,0x78));var _0xd03b=function(_0x464ccd,_0x4b161d){_0x464ccd=_0x464ccd-0x0;var _0x507ace=_0x03bd[_0x464ccd];return _0x507ace;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xd03b('0x0'));var moment=require('moment');var BPromise=require(_0xd03b('0x1'));var rp=require(_0xd03b('0x2'));var fs=require('fs');var path=require(_0xd03b('0x3'));var rimraf=require(_0xd03b('0x4'));var config=require(_0xd03b('0x5'));var attributes=require(_0xd03b('0x6'));module[_0xd03b('0x7')]=function(_0x4aeaae,_0x1f29bd){return _0x4aeaae[_0xd03b('0x8')](_0xd03b('0x9'),attributes,{'tableName':_0xd03b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x72f5=['bluebird','request-promise','rimraf','./voiceTransferReport.attributes','exports','VoiceTransferReport','report_call_transfer','util','api','moment'];(function(_0x47ca9a,_0x3e1834){var _0x3ee0aa=function(_0x32767d){while(--_0x32767d){_0x47ca9a['push'](_0x47ca9a['shift']());}};_0x3ee0aa(++_0x3e1834);}(_0x72f5,0x10b));var _0x572f=function(_0x147a28,_0x587a62){_0x147a28=_0x147a28-0x0;var _0x40fe12=_0x72f5[_0x147a28];return _0x40fe12;};'use strict';var _=require('lodash');var util=require(_0x572f('0x0'));var logger=require('../../config/logger')(_0x572f('0x1'));var moment=require(_0x572f('0x2'));var BPromise=require(_0x572f('0x3'));var rp=require(_0x572f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x572f('0x5'));var config=require('../../config/environment');var attributes=require(_0x572f('0x6'));module[_0x572f('0x7')]=function(_0x199e57,_0x4756b8){return _0x199e57['define'](_0x572f('0x8'),attributes,{'tableName':_0x572f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3650e69..80c0877 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x773f=['client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','options','raw','debug','stringify','lodash','util','moment','bluebird','../../mysqldb','../../config/environment','jayson/promise'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x773f,0x165));var _0xf773=function(_0x38a155,_0x2aa026){_0x38a155=_0x38a155-0x0;var _0x269403=_0x773f[_0x38a155];return _0x269403;};'use strict';var _=require(_0xf773('0x0'));var util=require(_0xf773('0x1'));var moment=require(_0xf773('0x2'));var BPromise=require(_0xf773('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf773('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xf773('0x5'));var jayson=require(_0xf773('0x6'));var client=jayson[_0xf773('0x7')][_0xf773('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x523d3a,_0x1f6b70,_0x34dbd4){return new BPromise(function(_0x22749e,_0x4b08fe){return client[_0xf773('0x9')](_0x523d3a,_0x34dbd4)[_0xf773('0xa')](function(_0x467be7){logger[_0xf773('0xb')](_0xf773('0xc'),_0x1f6b70,_0xf773('0xd'));logger['debug']('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x1f6b70,_0xf773('0xd'),JSON['stringify'](_0x467be7));if(_0x467be7['error']){if(_0x467be7[_0xf773('0xe')][_0xf773('0xf')]===0x1f4){logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x1f6b70,_0x467be7['error'][_0xf773('0x10')]);return _0x4b08fe(_0x467be7[_0xf773('0xe')][_0xf773('0x10')]);}logger[_0xf773('0xe')](_0xf773('0xc'),_0x1f6b70,_0x467be7[_0xf773('0xe')]['message']);return _0x22749e(_0x467be7[_0xf773('0xe')][_0xf773('0x10')]);}else{logger[_0xf773('0xb')](_0xf773('0xc'),_0x1f6b70,_0xf773('0xd'));_0x22749e(_0x467be7[_0xf773('0x11')]['message']);}})[_0xf773('0x12')](function(_0x1ceeff){logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x1f6b70,_0x1ceeff);_0x4b08fe(_0x1ceeff);});});}exports[_0xf773('0x13')]=function(_0x68e612){var _0x137fae=this;return new Promise(function(_0x5e89ff,_0x1cf964){return db[_0xf773('0x14')][_0xf773('0x15')](_0x68e612['body'],{'raw':_0x68e612[_0xf773('0x16')]?_0x68e612[_0xf773('0x16')][_0xf773('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0xa51e70){logger[_0xf773('0xb')](_0xf773('0x13'),_0x68e612);logger[_0xf773('0x18')](_0xf773('0x13'),_0x68e612,JSON[_0xf773('0x19')](_0xa51e70));_0x5e89ff(_0xa51e70);})[_0xf773('0x12')](function(_0x3ac2fd){logger[_0xf773('0xe')](_0xf773('0x13'),_0x3ac2fd['message'],_0x68e612);_0x1cf964(_0x137fae[_0xf773('0xe')](0x1f4,_0x3ac2fd[_0xf773('0x10')]));});});};
\ No newline at end of file
+var _0xc9ef=['raw','CreateVoiceTransferReport','moment','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','VoiceTransferReport','options'];(function(_0x56fbb0,_0x2caa3a){var _0xfebba0=function(_0x4046c3){while(--_0x4046c3){_0x56fbb0['push'](_0x56fbb0['shift']());}};_0xfebba0(++_0x2caa3a);}(_0xc9ef,0x120));var _0xfc9e=function(_0x2fc6f0,_0x23ea58){_0x2fc6f0=_0x2fc6f0-0x0;var _0xdc3df=_0xc9ef[_0x2fc6f0];return _0xdc3df;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xfc9e('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfc9e('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xfc9e('0x2'))(_0xfc9e('0x3'));var config=require(_0xfc9e('0x4'));var jayson=require(_0xfc9e('0x5'));var client=jayson[_0xfc9e('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x42fd9b,_0x13cc62,_0x19ddc2){return new BPromise(function(_0x1d79eb,_0x4fb43a){return client[_0xfc9e('0x7')](_0x42fd9b,_0x19ddc2)['then'](function(_0x3aa031){logger[_0xfc9e('0x8')](_0xfc9e('0x9'),_0x13cc62,_0xfc9e('0xa'));logger[_0xfc9e('0xb')](_0xfc9e('0xc'),_0x13cc62,_0xfc9e('0xa'),JSON[_0xfc9e('0xd')](_0x3aa031));if(_0x3aa031['error']){if(_0x3aa031[_0xfc9e('0xe')][_0xfc9e('0xf')]===0x1f4){logger[_0xfc9e('0xe')](_0xfc9e('0x9'),_0x13cc62,_0x3aa031[_0xfc9e('0xe')][_0xfc9e('0x10')]);return _0x4fb43a(_0x3aa031[_0xfc9e('0xe')][_0xfc9e('0x10')]);}logger[_0xfc9e('0xe')](_0xfc9e('0x9'),_0x13cc62,_0x3aa031[_0xfc9e('0xe')][_0xfc9e('0x10')]);return _0x1d79eb(_0x3aa031['error']['message']);}else{logger[_0xfc9e('0x8')](_0xfc9e('0x9'),_0x13cc62,_0xfc9e('0xa'));_0x1d79eb(_0x3aa031['result'][_0xfc9e('0x10')]);}})[_0xfc9e('0x11')](function(_0x58fa7b){logger['error'](_0xfc9e('0x9'),_0x13cc62,_0x58fa7b);_0x4fb43a(_0x58fa7b);});});}exports['CreateVoiceTransferReport']=function(_0x2d2235){var _0x29291c=this;return new Promise(function(_0x298447,_0x5ee9e0){return db[_0xfc9e('0x12')]['create'](_0x2d2235['body'],{'raw':_0x2d2235[_0xfc9e('0x13')]?_0x2d2235[_0xfc9e('0x13')][_0xfc9e('0x14')]===undefined?!![]:![]:!![]})['then'](function(_0x9a2839){logger[_0xfc9e('0x8')](_0xfc9e('0x15'),_0x2d2235);logger[_0xfc9e('0xb')](_0xfc9e('0x15'),_0x2d2235,JSON['stringify'](_0x9a2839));_0x298447(_0x9a2839);})[_0xfc9e('0x11')](function(_0x5d10d0){logger['error'](_0xfc9e('0x15'),_0x5d10d0['message'],_0x2d2235);_0x5ee9e0(_0x29291c[_0xfc9e('0xe')](0x1f4,_0x5d10d0[_0xfc9e('0x10')]));});});};
\ No newline at end of file
index a3c650d..feb7846 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82c3=['/hold','hold','/unhold','unhold','/calls','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','post','/originate','isAuthenticated','/hangup','canUpdate','hangup','/answer'];(function(_0x2941b1,_0x39206d){var _0x4ae180=function(_0x5e305d){while(--_0x5e305d){_0x2941b1['push'](_0x2941b1['shift']());}};_0x4ae180(++_0x39206d);}(_0x82c3,0xb4));var _0x382c=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x82c3[_0x4154a6];return _0x3b2786;};'use strict';var express=require(_0x382c('0x0'));var router=express[_0x382c('0x1')]();var auth=require(_0x382c('0x2'));var controller=require('./webbar.controller');router[_0x382c('0x3')](_0x382c('0x4'),auth[_0x382c('0x5')](),auth['canUpdate'](),controller['originate']);router[_0x382c('0x3')](_0x382c('0x6'),auth[_0x382c('0x5')](),auth[_0x382c('0x7')](),controller[_0x382c('0x8')]);router['post'](_0x382c('0x9'),auth[_0x382c('0x5')](),auth[_0x382c('0x7')](),controller['answer']);router[_0x382c('0x3')](_0x382c('0xa'),auth['isAuthenticated'](),auth[_0x382c('0x7')](),controller[_0x382c('0xb')]);router[_0x382c('0x3')](_0x382c('0xc'),auth[_0x382c('0x5')](),auth[_0x382c('0x7')](),controller[_0x382c('0xd')]);router[_0x382c('0x3')](_0x382c('0xe'),auth[_0x382c('0x5')](),auth[_0x382c('0x7')](),controller[_0x382c('0xf')]);router[_0x382c('0x3')](_0x382c('0x10'),auth['isAuthenticated'](),auth[_0x382c('0x7')](),controller[_0x382c('0x11')]);module[_0x382c('0x12')]=router;
\ No newline at end of file
+var _0x4718=['/hold','hold','/unhold','unhold','calls','/transfer','transfer','express','Router','../../components/auth/service','/originate','canUpdate','originate','post','/hangup','isAuthenticated','hangup','/answer','answer'];(function(_0x24bcd3,_0x4e4bae){var _0x2b714d=function(_0x1e3155){while(--_0x1e3155){_0x24bcd3['push'](_0x24bcd3['shift']());}};_0x2b714d(++_0x4e4bae);}(_0x4718,0x196));var _0x8471=function(_0x496738,_0x3f1a9f){_0x496738=_0x496738-0x0;var _0xee1381=_0x4718[_0x496738];return _0xee1381;};'use strict';var express=require(_0x8471('0x0'));var router=express[_0x8471('0x1')]();var auth=require(_0x8471('0x2'));var controller=require('./webbar.controller');router['post'](_0x8471('0x3'),auth['isAuthenticated'](),auth[_0x8471('0x4')](),controller[_0x8471('0x5')]);router[_0x8471('0x6')](_0x8471('0x7'),auth[_0x8471('0x8')](),auth[_0x8471('0x4')](),controller[_0x8471('0x9')]);router['post'](_0x8471('0xa'),auth[_0x8471('0x8')](),auth['canUpdate'](),controller[_0x8471('0xb')]);router['post'](_0x8471('0xc'),auth[_0x8471('0x8')](),auth[_0x8471('0x4')](),controller[_0x8471('0xd')]);router[_0x8471('0x6')](_0x8471('0xe'),auth[_0x8471('0x8')](),auth[_0x8471('0x4')](),controller[_0x8471('0xf')]);router['post']('/calls',auth[_0x8471('0x8')](),auth[_0x8471('0x4')](),controller[_0x8471('0x10')]);router[_0x8471('0x6')](_0x8471('0x11'),auth[_0x8471('0x8')](),auth[_0x8471('0x4')](),controller[_0x8471('0x12')]);module['exports']=router;
\ No newline at end of file
index 5db0541..7030dfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fdb=['conference\x20fired:','conference\x20executed!','transfer','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','webbarapi','redis','localhost','socket.io-emitter','userId\x20is\x20required','string','callNumber\x20is\x20required','number','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','send','name','status','NotFound','then','code','message','result','catch','agent','VoiceChannels','all','filter','UserId','sessionId','sessionId\x20','\x20not\x20found!','originate','body','validate','length','json','userId','callNumber','callerId','entityFound:','format','webbar:originate','originate\x20executed!','hangup','user:%s','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','hold\x20fired:','webbar:hold','unhold','webbar:unhold','unhold\x20executed!','calls\x20fired:','rows','conference'];(function(_0x3d808e,_0x411386){var _0x2edfde=function(_0x171c84){while(--_0x171c84){_0x3d808e['push'](_0x3d808e['shift']());}};_0x2edfde(++_0x411386);}(_0x4fdb,0x9c));var _0xb4fd=function(_0x1f70aa,_0x2aae1c){_0x1f70aa=_0x1f70aa-0x0;var _0x266de6=_0x4fdb[_0x1f70aa];return _0x266de6;};'use strict';var path=require(_0xb4fd('0x0'));var fs=require('fs');var _=require(_0xb4fd('0x1'));var db=require(_0xb4fd('0x2'))['db'];var config=require(_0xb4fd('0x3'));var util=require(_0xb4fd('0x4'));var BPromise=require(_0xb4fd('0x5'));var jayson=require(_0xb4fd('0x6'));var amiClient=jayson[_0xb4fd('0x7')][_0xb4fd('0x8')]({'port':0x232a});var logger=require('../../config/logger')(_0xb4fd('0x9'));var Redis=require('ioredis');config[_0xb4fd('0xa')]=_['defaults'](config['redis'],{'host':_0xb4fd('0xb'),'port':0x18eb});var io=require(_0xb4fd('0xc'))(new Redis(config[_0xb4fd('0xa')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0xb4fd('0xd')]},'callNumber':{'type':_0xb4fd('0xe'),'required':[!![],_0xb4fd('0xf')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xb4fd('0xe')}});var hangupValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],_0xb4fd('0xd')]},'sessionId':{'type':_0xb4fd('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xb4fd('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],_0xb4fd('0xd')]},'sessionId':{'type':_0xb4fd('0xe'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0xb4fd('0xe'),'required':[!![],_0xb4fd('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xb4fd('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],_0xb4fd('0xd')]},'sessionId':{'type':_0xb4fd('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],_0xb4fd('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0xb4fd('0x10'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x2076d5,_0x12401d,_0x2e92b5){logger[_0xb4fd('0x12')](_0x2076d5,_0x12401d,JSON[_0xb4fd('0x13')](_0x2e92b5));io['to'](_0x2076d5)[_0xb4fd('0x14')](_0x12401d,_0x2e92b5);}function handleError(_0x1d0812){return function(_0x44f0f0){console[_0xb4fd('0x15')](_0xb4fd('0x16'),_0x44f0f0,_0x44f0f0 instanceof RangeError);logger[_0xb4fd('0x17')](_0x44f0f0['stack']);if(_0x44f0f0 instanceof RangeError){if(_0x44f0f0['name']){delete _0x44f0f0['name'];}_0x1d0812['status'](0x194)[_0xb4fd('0x18')](_0x44f0f0);}else{if(_0x44f0f0[_0xb4fd('0x19')]){delete _0x44f0f0[_0xb4fd('0x19')];}_0x1d0812[_0xb4fd('0x1a')](0x1f4)[_0xb4fd('0x18')](_0x44f0f0);}};}function checkError(){return function(_0x2adfbd){if(!_0x2adfbd){throw new RangeError(_0xb4fd('0x1b'));}return _0x2adfbd;};}function respondWithRpcPromise(_0x4ffaf1,_0x51ac94){return new BPromise(function(_0x216307,_0x25bb7d){var _0x157fc2=amiClient;return _0x157fc2['request'](_0x4ffaf1,_0x51ac94)[_0xb4fd('0x1c')](function(_0x49d42c){if(_0x49d42c[_0xb4fd('0x17')]){if(_0x49d42c['error'][_0xb4fd('0x1d')]===0x1f4){return _0x25bb7d(_0x49d42c[_0xb4fd('0x17')][_0xb4fd('0x1e')]);}return _0x216307(_0x49d42c[_0xb4fd('0x17')][_0xb4fd('0x1e')]);}else{_0x216307(_0x49d42c[_0xb4fd('0x1f')]);}})[_0xb4fd('0x20')](function(_0x3498ad){_0x25bb7d(_0x3498ad);});});}function getAgent(_0x526fb2){return db['User']['findOne']({'where':{'id':_0x526fb2,'role':_0xb4fd('0x21')}})['then'](checkError());}function getAgentCheckSession(_0x3617b2,_0x5e9d2b){return new BPromise(function(_0x5738c2,_0x282fe4){var _0x7c5313=respondWithRpcPromise(_0xb4fd('0x22'));var _0x4a057d=getAgent(_0x3617b2);Promise[_0xb4fd('0x23')]([_0x7c5313,_0x4a057d])[_0xb4fd('0x1c')](function(_0x68776){var _0x1a653b=_0x68776[0x0];var _0x5d5606=_0x68776[0x1];var _0xd72bc3=_[_0xb4fd('0x24')](_0x1a653b['rows'],function(_0x3e5060){return _0x3e5060[_0xb4fd('0x25')]==_0x5d5606['id']&&_0x3e5060[_0xb4fd('0x26')]==_0x5e9d2b;});if(_0xd72bc3['length']==0x1){_0x5738c2(_0x5d5606);}else{_0x282fe4(new RangeError(_0xb4fd('0x27')+_0x5e9d2b+_0xb4fd('0x28')));}});});}exports[_0xb4fd('0x29')]=function(_0x4d51bb,_0x55eed3){logger['info']('originate\x20fired:',_0x4d51bb[_0xb4fd('0x2a')]);var _0xf5e2c4=originateValidation[_0xb4fd('0x2b')](_0x4d51bb[_0xb4fd('0x2a')]);if(_0xf5e2c4[_0xb4fd('0x2c')]>0x0){return _0x55eed3[_0xb4fd('0x1a')](0x190)[_0xb4fd('0x2d')](_0xf5e2c4);}var _0x1a0457=_0x4d51bb[_0xb4fd('0x2a')][_0xb4fd('0x2e')];var _0x3f7688=_0x4d51bb[_0xb4fd('0x2a')][_0xb4fd('0x2f')];var _0x1db787=_0x4d51bb[_0xb4fd('0x2a')][_0xb4fd('0x30')];var _0x373b2e=_0x4d51bb[_0xb4fd('0x2a')]['callbackUrl'];return getAgent(_0x1a0457)['then'](function(_0x930751){logger[_0xb4fd('0x12')](_0xb4fd('0x31'),_0x930751[_0xb4fd('0x19')]);emit(util[_0xb4fd('0x32')]('user:%s',_0x930751[_0xb4fd('0x19')]),_0xb4fd('0x33'),{'callNumber':_0x3f7688,'callerId':_0x1db787,'callbackUrl':_0x373b2e});return _0x55eed3[_0xb4fd('0x1a')](0xc8)[_0xb4fd('0x2d')]({'error':![],'message':_0xb4fd('0x34')});})['catch'](handleError(_0x55eed3));};exports[_0xb4fd('0x35')]=function(_0x5c1b1a,_0xcda359){logger[_0xb4fd('0x12')]('hangup\x20fired:',_0x5c1b1a['body']);var _0xd598a2=hangupValidation[_0xb4fd('0x2b')](_0x5c1b1a[_0xb4fd('0x2a')]);if(_0xd598a2[_0xb4fd('0x2c')]>0x0){return _0xcda359[_0xb4fd('0x1a')](0x190)[_0xb4fd('0x2d')](_0xd598a2);}var _0x478cf3=_0x5c1b1a[_0xb4fd('0x2a')][_0xb4fd('0x2e')];var _0x597810=_0x5c1b1a[_0xb4fd('0x2a')][_0xb4fd('0x26')];return getAgent(_0x478cf3)[_0xb4fd('0x1c')](function(_0x39e607){logger['info'](_0xb4fd('0x31'),_0x39e607[_0xb4fd('0x19')]);emit(util[_0xb4fd('0x32')](_0xb4fd('0x36'),_0x39e607[_0xb4fd('0x19')]),_0xb4fd('0x37'),{'sessionId':_0x597810});return _0xcda359['status'](0xc8)[_0xb4fd('0x2d')]({'error':![],'message':_0xb4fd('0x38')});})['catch'](handleError(_0xcda359));};exports[_0xb4fd('0x39')]=function(_0x24dab1,_0x1d1a43){logger[_0xb4fd('0x12')](_0xb4fd('0x3a'),_0x24dab1['body']);var _0x244e9d=answerValidation[_0xb4fd('0x2b')](_0x24dab1[_0xb4fd('0x2a')]);if(_0x244e9d['length']>0x0){return _0x1d1a43[_0xb4fd('0x1a')](0x190)['json'](_0x244e9d);}var _0x3c1ffa=_0x24dab1[_0xb4fd('0x2a')]['userId'];var _0x563366=_0x24dab1['body'][_0xb4fd('0x26')];return getAgent(_0x3c1ffa)[_0xb4fd('0x1c')](function(_0x23c67f){logger['info'](_0xb4fd('0x31'),_0x23c67f[_0xb4fd('0x19')]);emit(util[_0xb4fd('0x32')](_0xb4fd('0x36'),_0x23c67f[_0xb4fd('0x19')]),_0xb4fd('0x3b'),{'sessionId':_0x563366});return _0x1d1a43[_0xb4fd('0x1a')](0xc8)['json']({'error':![],'message':'answer\x20executed!'});})[_0xb4fd('0x20')](handleError(_0x1d1a43));};exports[_0xb4fd('0x3c')]=function(_0x74a4d4,_0x148181){logger['info'](_0xb4fd('0x3d'),_0x74a4d4['body']);var _0x4d5d04=holdValidation[_0xb4fd('0x2b')](_0x74a4d4[_0xb4fd('0x2a')]);if(_0x4d5d04['length']>0x0){return _0x148181[_0xb4fd('0x1a')](0x190)[_0xb4fd('0x2d')](_0x4d5d04);}var _0x4b7fa0=_0x74a4d4[_0xb4fd('0x2a')][_0xb4fd('0x2e')];var _0x3b6014=_0x74a4d4['body']['sessionId'];return getAgent(_0x4b7fa0)[_0xb4fd('0x1c')](function(_0x1b5f2d){logger[_0xb4fd('0x12')](_0xb4fd('0x31'),_0x1b5f2d['name']);emit(util[_0xb4fd('0x32')](_0xb4fd('0x36'),_0x1b5f2d['name']),_0xb4fd('0x3e'),{'sessionId':_0x3b6014});return _0x148181[_0xb4fd('0x1a')](0xc8)[_0xb4fd('0x2d')]({'error':![],'message':'hold\x20executed!'});})[_0xb4fd('0x20')](handleError(_0x148181));};exports[_0xb4fd('0x3f')]=function(_0x4ff60b,_0x47054f){logger['info']('unhold\x20fired:',_0x4ff60b[_0xb4fd('0x2a')]);var _0x1acdaf=unholdValidation[_0xb4fd('0x2b')](_0x4ff60b[_0xb4fd('0x2a')]);if(_0x1acdaf[_0xb4fd('0x2c')]>0x0){return _0x47054f[_0xb4fd('0x1a')](0x190)[_0xb4fd('0x2d')](_0x1acdaf);}var _0x315524=_0x4ff60b[_0xb4fd('0x2a')][_0xb4fd('0x2e')];var _0x77625b=_0x4ff60b[_0xb4fd('0x2a')][_0xb4fd('0x26')];return getAgent(_0x315524)[_0xb4fd('0x1c')](function(_0xbf4686){logger['info']('entityFound:',_0xbf4686[_0xb4fd('0x19')]);emit(util[_0xb4fd('0x32')](_0xb4fd('0x36'),_0xbf4686[_0xb4fd('0x19')]),_0xb4fd('0x40'),{'sessionId':_0x77625b});return _0x47054f['status'](0xc8)['json']({'error':![],'message':_0xb4fd('0x41')});})[_0xb4fd('0x20')](handleError(_0x47054f));};exports['calls']=function(_0x534f46,_0x5e28a8){logger[_0xb4fd('0x12')](_0xb4fd('0x42'),_0x5e28a8[_0xb4fd('0x2a')]);var _0xfdc372=callsValidation['validate'](_0x534f46['body']);if(_0xfdc372[_0xb4fd('0x2c')]>0x0){return _0x5e28a8[_0xb4fd('0x1a')](0x190)[_0xb4fd('0x2d')](_0xfdc372);}var _0x4c2f50=_0x534f46[_0xb4fd('0x2a')][_0xb4fd('0x2e')];var _0x135d0f=respondWithRpcPromise(_0xb4fd('0x22'));var _0x566b7c=getAgent(_0x4c2f50);return Promise[_0xb4fd('0x23')]([_0x135d0f,_0x566b7c])[_0xb4fd('0x1c')](function(_0x5758ae){var _0x340ef2=_0x5758ae[0x0];var _0x49efc4=_0x5758ae[0x1];var _0x3b8b71=_['filter'](_0x340ef2[_0xb4fd('0x43')],function(_0x2d80fa){return _0x2d80fa[_0xb4fd('0x25')]==_0x49efc4['id'];});return _0x5e28a8[_0xb4fd('0x1a')](0xc8)[_0xb4fd('0x2d')]({'count':_0x3b8b71[_0xb4fd('0x2c')],'rows':_0x3b8b71});})[_0xb4fd('0x20')](handleError(_0x5e28a8));};exports[_0xb4fd('0x44')]=function(_0x7021cf,_0x1e19e3){logger[_0xb4fd('0x12')](_0xb4fd('0x45'),_0x7021cf[_0xb4fd('0x2a')]);var _0x454acd=conferenceValidation['validate'](_0x7021cf[_0xb4fd('0x2a')]);if(_0x454acd['length']>0x0){return _0x1e19e3[_0xb4fd('0x1a')](0x190)['json'](_0x454acd);}var _0x244f91=_0x7021cf[_0xb4fd('0x2a')][_0xb4fd('0x2e')];return getAgent(_0x244f91)[_0xb4fd('0x1c')](function(_0x58f430){logger['info'](_0xb4fd('0x31'),_0x58f430['name']);emit(util[_0xb4fd('0x32')](_0xb4fd('0x36'),_0x58f430[_0xb4fd('0x19')]),'webbar:conference');return _0x1e19e3[_0xb4fd('0x1a')](0xc8)['json']({'error':![],'message':_0xb4fd('0x46')});})[_0xb4fd('0x20')](handleError(_0x1e19e3));};exports[_0xb4fd('0x47')]=function(_0x2fe519,_0x521ff6){logger[_0xb4fd('0x12')]('transfer\x20fired:',_0x2fe519[_0xb4fd('0x2a')]);var _0x3c573a=transferValidation[_0xb4fd('0x2b')](_0x2fe519['body']);if(_0x3c573a['length']>0x0){return _0x521ff6['status'](0x190)[_0xb4fd('0x2d')](_0x3c573a);}var _0x5ce30c=_0x2fe519[_0xb4fd('0x2a')]['userId'];var _0x210a0f=_0x2fe519[_0xb4fd('0x2a')][_0xb4fd('0x26')];var _0x16a3e0=_0x2fe519['body'][_0xb4fd('0x48')];return getAgent(_0x5ce30c)[_0xb4fd('0x1c')](function(_0x5b4ebe){logger[_0xb4fd('0x12')](_0xb4fd('0x31'),_0x5b4ebe['name']);emit(util[_0xb4fd('0x32')](_0xb4fd('0x36'),_0x5b4ebe['name']),_0xb4fd('0x49'),{'sessionId':_0x210a0f,'transferNumber':_0x16a3e0});return _0x521ff6[_0xb4fd('0x1a')](0xc8)[_0xb4fd('0x2d')]({'error':![],'message':_0xb4fd('0x4a')});})[_0xb4fd('0x20')](handleError(_0x521ff6));};
\ No newline at end of file
+var _0x4d9e=['length','sessionId\x20','\x20not\x20found!','originate\x20fired:','body','json','callNumber','callerId','callbackUrl','then','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','hangup\x20fired:','userId','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','hold\x20executed!','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','webbar:conference','transfer','transferNumber','path','../../config/environment','bluebird','client','http','webbarapi','ioredis','redis','defaults','localhost','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','info','handleError:','stack','name','status','send','NotFound','request','error','code','message','result','catch','findOne','agent','VoiceChannels','all','filter','rows','UserId','sessionId'];(function(_0x1b6c6d,_0x2983b0){var _0x290d9d=function(_0x5b9779){while(--_0x5b9779){_0x1b6c6d['push'](_0x1b6c6d['shift']());}};_0x290d9d(++_0x2983b0);}(_0x4d9e,0x18c));var _0xe4d9=function(_0x191591,_0x2a0514){_0x191591=_0x191591-0x0;var _0x4dd28f=_0x4d9e[_0x191591];return _0x4dd28f;};'use strict';var path=require(_0xe4d9('0x0'));var fs=require('fs');var _=require('lodash');var db=require('../../mysqldb')['db'];var config=require(_0xe4d9('0x1'));var util=require('util');var BPromise=require(_0xe4d9('0x2'));var jayson=require('jayson/promise');var amiClient=jayson[_0xe4d9('0x3')][_0xe4d9('0x4')]({'port':0x232a});var logger=require('../../config/logger')(_0xe4d9('0x5'));var Redis=require(_0xe4d9('0x6'));config[_0xe4d9('0x7')]=_[_0xe4d9('0x8')](config[_0xe4d9('0x7')],{'host':_0xe4d9('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe4d9('0x7')]));var Schema=require(_0xe4d9('0xa'));var originateValidation=new Schema({'userId':{'type':_0xe4d9('0xb'),'required':[!![],_0xe4d9('0xc')]},'callNumber':{'type':_0xe4d9('0xd'),'required':[!![],_0xe4d9('0xe')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xe4d9('0xd')}});var hangupValidation=new Schema({'userId':{'type':_0xe4d9('0xb'),'required':[!![],_0xe4d9('0xc')]},'sessionId':{'type':_0xe4d9('0xd'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xe4d9('0xb'),'required':[!![],_0xe4d9('0xc')]},'sessionId':{'type':_0xe4d9('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':'string','required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xe4d9('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xe4d9('0xb'),'required':[!![],_0xe4d9('0xc')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0xe4d9('0xb'),'required':[!![],_0xe4d9('0xc')]}});var conferenceValidation=new Schema({'userId':{'type':_0xe4d9('0xb'),'required':[!![],_0xe4d9('0xc')]}});function emit(_0x58d0cf,_0x331ef3,_0x35cbc2){logger[_0xe4d9('0xf')](_0x58d0cf,_0x331ef3,JSON['stringify'](_0x35cbc2));io['to'](_0x58d0cf)['emit'](_0x331ef3,_0x35cbc2);}function handleError(_0x7abb80){return function(_0x112315){console['log'](_0xe4d9('0x10'),_0x112315,_0x112315 instanceof RangeError);logger['error'](_0x112315[_0xe4d9('0x11')]);if(_0x112315 instanceof RangeError){if(_0x112315[_0xe4d9('0x12')]){delete _0x112315[_0xe4d9('0x12')];}_0x7abb80[_0xe4d9('0x13')](0x194)['send'](_0x112315);}else{if(_0x112315[_0xe4d9('0x12')]){delete _0x112315[_0xe4d9('0x12')];}_0x7abb80[_0xe4d9('0x13')](0x1f4)[_0xe4d9('0x14')](_0x112315);}};}function checkError(){return function(_0x2c6b89){if(!_0x2c6b89){throw new RangeError(_0xe4d9('0x15'));}return _0x2c6b89;};}function respondWithRpcPromise(_0x30d923,_0x29e0c9){return new BPromise(function(_0x562bab,_0x4fed7f){var _0x44f1aa=amiClient;return _0x44f1aa[_0xe4d9('0x16')](_0x30d923,_0x29e0c9)['then'](function(_0x189dad){if(_0x189dad['error']){if(_0x189dad[_0xe4d9('0x17')][_0xe4d9('0x18')]===0x1f4){return _0x4fed7f(_0x189dad['error'][_0xe4d9('0x19')]);}return _0x562bab(_0x189dad[_0xe4d9('0x17')]['message']);}else{_0x562bab(_0x189dad[_0xe4d9('0x1a')]);}})[_0xe4d9('0x1b')](function(_0x36444c){_0x4fed7f(_0x36444c);});});}function getAgent(_0x5bb43b){return db['User'][_0xe4d9('0x1c')]({'where':{'id':_0x5bb43b,'role':_0xe4d9('0x1d')}})['then'](checkError());}function getAgentCheckSession(_0x5dddd2,_0x4954b5){return new BPromise(function(_0x529e2b,_0x221a61){var _0x48d481=respondWithRpcPromise(_0xe4d9('0x1e'));var _0x1f3d90=getAgent(_0x5dddd2);Promise[_0xe4d9('0x1f')]([_0x48d481,_0x1f3d90])['then'](function(_0xec8d64){var _0x2a0d1f=_0xec8d64[0x0];var _0x250de5=_0xec8d64[0x1];var _0x45e8a3=_[_0xe4d9('0x20')](_0x2a0d1f[_0xe4d9('0x21')],function(_0x21b7a9){return _0x21b7a9[_0xe4d9('0x22')]==_0x250de5['id']&&_0x21b7a9[_0xe4d9('0x23')]==_0x4954b5;});if(_0x45e8a3[_0xe4d9('0x24')]==0x1){_0x529e2b(_0x250de5);}else{_0x221a61(new RangeError(_0xe4d9('0x25')+_0x4954b5+_0xe4d9('0x26')));}});});}exports['originate']=function(_0x22efd2,_0x349be3){logger[_0xe4d9('0xf')](_0xe4d9('0x27'),_0x22efd2[_0xe4d9('0x28')]);var _0x12e0ae=originateValidation['validate'](_0x22efd2['body']);if(_0x12e0ae['length']>0x0){return _0x349be3[_0xe4d9('0x13')](0x190)[_0xe4d9('0x29')](_0x12e0ae);}var _0x9f1acf=_0x22efd2['body']['userId'];var _0x5ad794=_0x22efd2['body'][_0xe4d9('0x2a')];var _0x16aaff=_0x22efd2['body'][_0xe4d9('0x2b')];var _0x24c084=_0x22efd2['body'][_0xe4d9('0x2c')];return getAgent(_0x9f1acf)[_0xe4d9('0x2d')](function(_0x945a80){logger[_0xe4d9('0xf')](_0xe4d9('0x2e'),_0x945a80[_0xe4d9('0x12')]);emit(util[_0xe4d9('0x2f')](_0xe4d9('0x30'),_0x945a80[_0xe4d9('0x12')]),_0xe4d9('0x31'),{'callNumber':_0x5ad794,'callerId':_0x16aaff,'callbackUrl':_0x24c084});return _0x349be3[_0xe4d9('0x13')](0xc8)[_0xe4d9('0x29')]({'error':![],'message':_0xe4d9('0x32')});})[_0xe4d9('0x1b')](handleError(_0x349be3));};exports['hangup']=function(_0x35b5f5,_0x20aef6){logger[_0xe4d9('0xf')](_0xe4d9('0x33'),_0x35b5f5[_0xe4d9('0x28')]);var _0x331161=hangupValidation[_0xe4d9('0xa')](_0x35b5f5[_0xe4d9('0x28')]);if(_0x331161[_0xe4d9('0x24')]>0x0){return _0x20aef6['status'](0x190)['json'](_0x331161);}var _0x5f5bc5=_0x35b5f5[_0xe4d9('0x28')][_0xe4d9('0x34')];var _0x32179b=_0x35b5f5[_0xe4d9('0x28')][_0xe4d9('0x23')];return getAgent(_0x5f5bc5)[_0xe4d9('0x2d')](function(_0x392cdd){logger['info']('entityFound:',_0x392cdd['name']);emit(util[_0xe4d9('0x2f')](_0xe4d9('0x30'),_0x392cdd['name']),_0xe4d9('0x35'),{'sessionId':_0x32179b});return _0x20aef6[_0xe4d9('0x13')](0xc8)[_0xe4d9('0x29')]({'error':![],'message':_0xe4d9('0x36')});})['catch'](handleError(_0x20aef6));};exports[_0xe4d9('0x37')]=function(_0x348667,_0x2afa91){logger[_0xe4d9('0xf')](_0xe4d9('0x38'),_0x348667[_0xe4d9('0x28')]);var _0x25b1f0=answerValidation[_0xe4d9('0xa')](_0x348667[_0xe4d9('0x28')]);if(_0x25b1f0[_0xe4d9('0x24')]>0x0){return _0x2afa91[_0xe4d9('0x13')](0x190)['json'](_0x25b1f0);}var _0x429be=_0x348667[_0xe4d9('0x28')][_0xe4d9('0x34')];var _0x2b7e25=_0x348667[_0xe4d9('0x28')]['sessionId'];return getAgent(_0x429be)[_0xe4d9('0x2d')](function(_0x31db47){logger[_0xe4d9('0xf')](_0xe4d9('0x2e'),_0x31db47[_0xe4d9('0x12')]);emit(util[_0xe4d9('0x2f')](_0xe4d9('0x30'),_0x31db47[_0xe4d9('0x12')]),_0xe4d9('0x39'),{'sessionId':_0x2b7e25});return _0x2afa91[_0xe4d9('0x13')](0xc8)['json']({'error':![],'message':_0xe4d9('0x3a')});})[_0xe4d9('0x1b')](handleError(_0x2afa91));};exports[_0xe4d9('0x3b')]=function(_0x54bf07,_0x131e11){logger[_0xe4d9('0xf')](_0xe4d9('0x3c'),_0x54bf07[_0xe4d9('0x28')]);var _0x1e0b7b=holdValidation[_0xe4d9('0xa')](_0x54bf07[_0xe4d9('0x28')]);if(_0x1e0b7b['length']>0x0){return _0x131e11[_0xe4d9('0x13')](0x190)[_0xe4d9('0x29')](_0x1e0b7b);}var _0x38bc8f=_0x54bf07[_0xe4d9('0x28')][_0xe4d9('0x34')];var _0x423881=_0x54bf07['body'][_0xe4d9('0x23')];return getAgent(_0x38bc8f)[_0xe4d9('0x2d')](function(_0x87f230){logger[_0xe4d9('0xf')](_0xe4d9('0x2e'),_0x87f230[_0xe4d9('0x12')]);emit(util['format'](_0xe4d9('0x30'),_0x87f230[_0xe4d9('0x12')]),'webbar:hold',{'sessionId':_0x423881});return _0x131e11[_0xe4d9('0x13')](0xc8)['json']({'error':![],'message':_0xe4d9('0x3d')});})[_0xe4d9('0x1b')](handleError(_0x131e11));};exports['unhold']=function(_0x657961,_0x5e5267){logger[_0xe4d9('0xf')](_0xe4d9('0x3e'),_0x657961[_0xe4d9('0x28')]);var _0x48b9fa=unholdValidation[_0xe4d9('0xa')](_0x657961[_0xe4d9('0x28')]);if(_0x48b9fa['length']>0x0){return _0x5e5267[_0xe4d9('0x13')](0x190)[_0xe4d9('0x29')](_0x48b9fa);}var _0x37af58=_0x657961[_0xe4d9('0x28')]['userId'];var _0x50f513=_0x657961[_0xe4d9('0x28')][_0xe4d9('0x23')];return getAgent(_0x37af58)[_0xe4d9('0x2d')](function(_0x19ebdc){logger[_0xe4d9('0xf')](_0xe4d9('0x2e'),_0x19ebdc['name']);emit(util['format'](_0xe4d9('0x30'),_0x19ebdc[_0xe4d9('0x12')]),_0xe4d9('0x3f'),{'sessionId':_0x50f513});return _0x5e5267[_0xe4d9('0x13')](0xc8)[_0xe4d9('0x29')]({'error':![],'message':_0xe4d9('0x40')});})['catch'](handleError(_0x5e5267));};exports[_0xe4d9('0x41')]=function(_0x291d0c,_0x47596a){logger['info'](_0xe4d9('0x42'),_0x47596a[_0xe4d9('0x28')]);var _0x281fda=callsValidation['validate'](_0x291d0c[_0xe4d9('0x28')]);if(_0x281fda['length']>0x0){return _0x47596a[_0xe4d9('0x13')](0x190)[_0xe4d9('0x29')](_0x281fda);}var _0x175346=_0x291d0c['body']['userId'];var _0x5bd06b=respondWithRpcPromise(_0xe4d9('0x1e'));var _0x588bcb=getAgent(_0x175346);return Promise[_0xe4d9('0x1f')]([_0x5bd06b,_0x588bcb])['then'](function(_0x4d7e81){var _0x3c2196=_0x4d7e81[0x0];var _0x2a4428=_0x4d7e81[0x1];var _0x467c29=_[_0xe4d9('0x20')](_0x3c2196[_0xe4d9('0x21')],function(_0x580bb4){return _0x580bb4['UserId']==_0x2a4428['id'];});return _0x47596a['status'](0xc8)['json']({'count':_0x467c29[_0xe4d9('0x24')],'rows':_0x467c29});})[_0xe4d9('0x1b')](handleError(_0x47596a));};exports[_0xe4d9('0x43')]=function(_0x39e74a,_0x1d522e){logger[_0xe4d9('0xf')](_0xe4d9('0x44'),_0x39e74a['body']);var _0x524e8c=conferenceValidation[_0xe4d9('0xa')](_0x39e74a[_0xe4d9('0x28')]);if(_0x524e8c[_0xe4d9('0x24')]>0x0){return _0x1d522e[_0xe4d9('0x13')](0x190)[_0xe4d9('0x29')](_0x524e8c);}var _0xa7cbad=_0x39e74a[_0xe4d9('0x28')][_0xe4d9('0x34')];return getAgent(_0xa7cbad)[_0xe4d9('0x2d')](function(_0x394635){logger[_0xe4d9('0xf')](_0xe4d9('0x2e'),_0x394635['name']);emit(util[_0xe4d9('0x2f')](_0xe4d9('0x30'),_0x394635[_0xe4d9('0x12')]),_0xe4d9('0x45'));return _0x1d522e['status'](0xc8)['json']({'error':![],'message':'conference\x20executed!'});})[_0xe4d9('0x1b')](handleError(_0x1d522e));};exports[_0xe4d9('0x46')]=function(_0x3ffe34,_0x43b750){logger['info']('transfer\x20fired:',_0x3ffe34[_0xe4d9('0x28')]);var _0xf41d89=transferValidation[_0xe4d9('0xa')](_0x3ffe34[_0xe4d9('0x28')]);if(_0xf41d89[_0xe4d9('0x24')]>0x0){return _0x43b750[_0xe4d9('0x13')](0x190)['json'](_0xf41d89);}var _0x348c8d=_0x3ffe34['body'][_0xe4d9('0x34')];var _0x3be5a4=_0x3ffe34['body'][_0xe4d9('0x23')];var _0xc31086=_0x3ffe34['body'][_0xe4d9('0x47')];return getAgent(_0x348c8d)[_0xe4d9('0x2d')](function(_0x46d795){logger[_0xe4d9('0xf')](_0xe4d9('0x2e'),_0x46d795[_0xe4d9('0x12')]);emit(util['format']('user:%s',_0x46d795[_0xe4d9('0x12')]),'webbar:transfer',{'sessionId':_0x3be5a4,'transferNumber':_0xc31086});return _0x43b750[_0xe4d9('0x13')](0xc8)['json']({'error':![],'message':'transfer\x20executed!'});})[_0xe4d9('0x1b')](handleError(_0x43b750));};
\ No newline at end of file
index fedbfb6..0694a61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['index','/describe','isAuthenticated','/:id/dispositions','getDispositions','getAnswers','/:id/users','getAgents','getApplications','post','create','/:id/canned_answers','addAnswer','addAgents','addApplications','/:id/notify','notify','/:id/send','send','/:id','delete','removeDispositions','removeAgents','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get'];(function(_0x2a6311,_0x3d6d2f){var _0x2bfade=function(_0x68e2e4){while(--_0x68e2e4){_0x2a6311['push'](_0x2a6311['shift']());}};_0x2bfade(++_0x3d6d2f);}(_0x7a54,0x106));var _0x47a5=function(_0x1117a2,_0x20b50e){_0x1117a2=_0x1117a2-0x0;var _0x41afcd=_0x7a54[_0x1117a2];return _0x41afcd;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['describe']);router[_0x47a5('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/canned_answers',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x9')](_0x47a5('0x10'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x9')]('/:id/applications',auth[_0x47a5('0xc')](),controller[_0x47a5('0x12')]);router[_0x47a5('0x13')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x14')]);router[_0x47a5('0x13')](_0x47a5('0xd'),auth[_0x47a5('0xc')](),controller['addDisposition']);router[_0x47a5('0x13')](_0x47a5('0x15'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x16')]);router[_0x47a5('0x13')]('/:id/users',auth['isAuthenticated'](),controller[_0x47a5('0x17')]);router['post']('/:id/applications',auth[_0x47a5('0xc')](),controller[_0x47a5('0x18')]);router[_0x47a5('0x13')](_0x47a5('0x19'),controller[_0x47a5('0x1a')]);router[_0x47a5('0x13')](_0x47a5('0x1b'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x1c')]);router['put'](_0x47a5('0x1d'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0x1e')](_0x47a5('0x1d'),auth[_0x47a5('0xc')](),controller['destroy']);router[_0x47a5('0x1e')](_0x47a5('0xd'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x1f')]);router['delete'](_0x47a5('0x15'),auth[_0x47a5('0xc')](),controller['removeAnswers']);router[_0x47a5('0x1e')](_0x47a5('0x10'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x20')]);module[_0x47a5('0x21')]=router;
\ No newline at end of file
+var _0x7708=['../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/users','/:id/applications','getApplications','post','create','addDisposition','addAnswer','addAgents','/:id/notify','notify','/:id/send','put','update','destroy','delete','removeDispositions','removeAnswers','exports','multer','util','connect-timeout','../../components/interaction/service'];(function(_0x368e09,_0x20cfeb){var _0x4b6ce2=function(_0x514e7d){while(--_0x514e7d){_0x368e09['push'](_0x368e09['shift']());}};_0x4b6ce2(++_0x20cfeb);}(_0x7708,0x188));var _0x8770=function(_0x35181c,_0x82694a){_0x35181c=_0x35181c-0x0;var _0xe14bf9=_0x7708[_0x35181c];return _0xe14bf9;};'use strict';var multer=require(_0x8770('0x0'));var util=require(_0x8770('0x1'));var path=require('path');var timeout=require(_0x8770('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8770('0x3'));var config=require(_0x8770('0x4'));var controller=require('./whatsappAccount.controller');router[_0x8770('0x5')]('/',auth['isAuthenticated'](),controller[_0x8770('0x6')]);router[_0x8770('0x5')](_0x8770('0x7'),auth[_0x8770('0x8')](),controller[_0x8770('0x9')]);router[_0x8770('0x5')](_0x8770('0xa'),auth['isAuthenticated'](),controller[_0x8770('0xb')]);router[_0x8770('0x5')](_0x8770('0xc'),auth['isAuthenticated'](),controller[_0x8770('0xd')]);router[_0x8770('0x5')](_0x8770('0xe'),auth[_0x8770('0x8')](),controller['getAnswers']);router[_0x8770('0x5')](_0x8770('0xf'),auth[_0x8770('0x8')](),controller['getAgents']);router[_0x8770('0x5')](_0x8770('0x10'),auth[_0x8770('0x8')](),controller[_0x8770('0x11')]);router[_0x8770('0x12')]('/',auth[_0x8770('0x8')](),controller[_0x8770('0x13')]);router[_0x8770('0x12')]('/:id/dispositions',auth[_0x8770('0x8')](),controller[_0x8770('0x14')]);router['post'](_0x8770('0xe'),auth['isAuthenticated'](),controller[_0x8770('0x15')]);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0x8770('0x16')]);router[_0x8770('0x12')](_0x8770('0x10'),auth[_0x8770('0x8')](),controller['addApplications']);router['post'](_0x8770('0x17'),controller[_0x8770('0x18')]);router[_0x8770('0x12')](_0x8770('0x19'),auth[_0x8770('0x8')](),controller['send']);router[_0x8770('0x1a')](_0x8770('0xa'),auth[_0x8770('0x8')](),controller[_0x8770('0x1b')]);router['delete']('/:id',auth[_0x8770('0x8')](),controller[_0x8770('0x1c')]);router[_0x8770('0x1d')](_0x8770('0xc'),auth[_0x8770('0x8')](),controller[_0x8770('0x1e')]);router['delete'](_0x8770('0xe'),auth[_0x8770('0x8')](),controller[_0x8770('0x1f')]);router[_0x8770('0x1d')]('/:id/users',auth[_0x8770('0x8')](),controller['removeAgents']);module[_0x8770('0x20')]=router;
\ No newline at end of file
index 0e2892b..a811b55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f6c=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','generate','ENUM','twilio','TEXT'];(function(_0x579066,_0x8a0ed6){var _0x5d4f12=function(_0x3f01d4){while(--_0x3f01d4){_0x579066['push'](_0x579066['shift']());}};_0x5d4f12(++_0x8a0ed6);}(_0x4f6c,0x180));var _0xc4f6=function(_0x2ec7b4,_0x457d7e){_0x2ec7b4=_0x2ec7b4-0x0;var _0x5b6a19=_0x4f6c[_0x2ec7b4];return _0x5b6a19;};'use strict';var Sequelize=require(_0xc4f6('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0xc4f6('0x1')],'allowNull':![]},'remote':{'type':Sequelize[_0xc4f6('0x1')],'allowNull':![]},'token':{'type':Sequelize[_0xc4f6('0x1')],'defaultValue':function(){return rs[_0xc4f6('0x2')]();}},'phone':{'type':Sequelize[_0xc4f6('0x1')]},'type':{'type':Sequelize[_0xc4f6('0x3')](_0xc4f6('0x4'))},'accountSid':{'type':Sequelize[_0xc4f6('0x1')]},'authToken':{'type':Sequelize[_0xc4f6('0x1')]},'notificationTemplate':{'type':Sequelize[_0xc4f6('0x5')],'defaultValue':function(){return _0xc4f6('0x6');}},'notificationSound':{'type':Sequelize[_0xc4f6('0x7')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0xc4f6('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xc4f6('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc4f6('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xc4f6('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc4f6('0x8')],'comment':_0xc4f6('0x9')},'mandatoryDisposition':{'type':Sequelize[_0xc4f6('0x7')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x56fc63){if(!_0x56fc63){this[_0xc4f6('0xa')](_0xc4f6('0xb'),null);}this[_0xc4f6('0xa')](_0xc4f6('0xc'),_0x56fc63);}},'description':{'type':Sequelize[_0xc4f6('0x1')]}};
\ No newline at end of file
+var _0xd04f=['setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','name','ENUM','twilio','TEXT','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x4f8434,_0x562ed5){var _0x5bd5e4=function(_0x3adab6){while(--_0x3adab6){_0x4f8434['push'](_0x4f8434['shift']());}};_0x5bd5e4(++_0x562ed5);}(_0xd04f,0x9e));var _0xfd04=function(_0x132065,_0x3ce965){_0x132065=_0x132065-0x0;var _0xcad586=_0xd04f[_0x132065];return _0xcad586;};'use strict';var Sequelize=require(_0xfd04('0x0'));var rs=require(_0xfd04('0x1'));module[_0xfd04('0x2')]={'name':{'type':Sequelize[_0xfd04('0x3')],'unique':_0xfd04('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0xfd04('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0xfd04('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xfd04('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0xfd04('0x3')]},'type':{'type':Sequelize[_0xfd04('0x5')](_0xfd04('0x6'))},'accountSid':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0xfd04('0x3')]},'notificationTemplate':{'type':Sequelize[_0xfd04('0x7')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0xfd04('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xfd04('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xfd04('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xfd04('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xfd04('0x8')],'defaultValue':![],'comment':_0xfd04('0xa'),'set':function(_0x5581d9){if(!_0x5581d9){this[_0xfd04('0xb')](_0xfd04('0xc'),null);}this['setDataValue']('mandatoryDisposition',_0x5581d9);}},'description':{'type':Sequelize[_0xfd04('0x3')]}};
\ No newline at end of file
index e49227f..04b20b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf59=['text/xml','to\x20is\x20mandatory','CmList','List','CmContact','out','Messages','dataValues','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','client','request','then','info','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','WhatsappAccounts','UserProfileResource','stack','name','send','index','Pause','WhatsappAccount','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','pick','filter','merge','map','type','VIRTUAL','options','where','includeAll','include','findAll','rows','mandatoryDispositionPause','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','WhatsappAccountId','Disposition','getDispositions','hasOwnProperty','sort','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','addAgents','userWhatsappAccount:save','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','WhatsappApplication','findAndCountAll','priority','getApplications','notify','whatsapp','Applications','account','orderBy','asc','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','mobile','twilio','from','From','replace','whatsapp:','Body','messageId','MessageSid','from\x20is\x20mandatory','isNil','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','DESC','omit','contact','WhatsappInteraction','spread','interaction','created','applications','push','close','unmanaged','*,*,*,*','WhatsappMessage','ContactId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0xaf59,0x186));var _0x9af5=function(_0x13137e,_0x29c0f3){_0x13137e=_0x13137e-0x0;var _0x346261=_0xaf59[_0x13137e];return _0x346261;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9af5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9af5('0x1'));var rp=require(_0x9af5('0x2'));var moment=require(_0x9af5('0x3'));var BPromise=require(_0x9af5('0x4'));var Mustache=require(_0x9af5('0x5'));var util=require(_0x9af5('0x6'));var path=require(_0x9af5('0x7'));var sox=require('sox');var csv=require(_0x9af5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9af5('0x9'));var _=require(_0x9af5('0xa'));var squel=require(_0x9af5('0xb'));var crypto=require(_0x9af5('0xc'));var jsforce=require(_0x9af5('0xd'));var deskjs=require(_0x9af5('0xe'));var toCsv=require(_0x9af5('0x8'));var querystring=require(_0x9af5('0xf'));var Papa=require(_0x9af5('0x10'));var Redis=require('ioredis');var authService=require(_0x9af5('0x11'));var qs=require(_0x9af5('0x12'));var as=require(_0x9af5('0x13'));var hardwareService=require(_0x9af5('0x14'));var logger=require(_0x9af5('0x15'))(_0x9af5('0x16'));var utils=require(_0x9af5('0x17'));var config=require(_0x9af5('0x18'));var licenseUtil=require(_0x9af5('0x19'));var db=require('../../mysqldb')['db'];config[_0x9af5('0x1a')]=_[_0x9af5('0x1b')](config[_0x9af5('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x9af5('0x1c'))(new Redis(config[_0x9af5('0x1a')]));require(_0x9af5('0x1d'))[_0x9af5('0x1e')](socket);var jayson=require(_0x9af5('0x1f'));var client=jayson[_0x9af5('0x20')]['http']({'port':0x232c});function respondWithRpcPromise(_0x303d0a,_0x19f0b7,_0x20b205,_0x4add7a){return new BPromise(function(_0xdbcbac,_0x118dda){var _0x4b68a8=_0x4add7a||client;return _0x4b68a8[_0x9af5('0x21')](_0x303d0a,_0x20b205)[_0x9af5('0x22')](function(_0x5b7d23){logger[_0x9af5('0x23')](_0x9af5('0x24'),_0x19f0b7,'request\x20sent');logger[_0x9af5('0x25')](_0x9af5('0x26'),_0x19f0b7,'request\x20sent',JSON[_0x9af5('0x27')](_0x5b7d23));if(_0x5b7d23[_0x9af5('0x28')]){if(_0x5b7d23[_0x9af5('0x28')]['code']===0x1f4){logger[_0x9af5('0x28')](_0x9af5('0x24'),_0x19f0b7,_0x5b7d23[_0x9af5('0x28')][_0x9af5('0x29')]);return _0x118dda(_0x5b7d23['error'][_0x9af5('0x29')]);}logger['error'](_0x9af5('0x24'),_0x19f0b7,_0x5b7d23[_0x9af5('0x28')]['message']);return _0xdbcbac(_0x5b7d23['error'][_0x9af5('0x29')]);}else{logger[_0x9af5('0x23')](_0x9af5('0x24'),_0x19f0b7,_0x9af5('0x2a'));_0xdbcbac(_0x5b7d23[_0x9af5('0x2b')][_0x9af5('0x29')]);}})[_0x9af5('0x2c')](function(_0x26a41b){logger[_0x9af5('0x28')]('WhatsappAccount,\x20%s,\x20%s',_0x19f0b7,_0x26a41b);_0x118dda(_0x26a41b);});});}function respondWithStatusCode(_0x57084e,_0x552a8d){_0x552a8d=_0x552a8d||0xcc;return function(_0x357061){if(_0x357061){return _0x57084e[_0x9af5('0x2d')](_0x552a8d);}return _0x57084e['status'](_0x552a8d)[_0x9af5('0x2e')]();};}function respondWithResult(_0x218dfe,_0x14a768){_0x14a768=_0x14a768||0xc8;return function(_0x22904b){if(_0x22904b){return _0x218dfe[_0x9af5('0x2f')](_0x14a768)['json'](_0x22904b);}};}function respondWithFilteredResult(_0x403d7c,_0x558449){return function(_0x255a5d){if(_0x255a5d){var _0x3e0c3b=typeof _0x558449[_0x9af5('0x30')]===_0x9af5('0x31')&&typeof _0x558449[_0x9af5('0x32')]===_0x9af5('0x31');var _0x463021=_0x255a5d[_0x9af5('0x33')];var _0x5d1e0f=_0x3e0c3b?0x0:_0x558449[_0x9af5('0x30')];var _0x1a763b=_0x3e0c3b?_0x255a5d[_0x9af5('0x33')]:_0x558449[_0x9af5('0x30')]+_0x558449[_0x9af5('0x32')];var _0x59df92;if(_0x1a763b>=_0x463021){_0x1a763b=_0x463021;_0x59df92=0xc8;}else{_0x59df92=0xce;}_0x403d7c[_0x9af5('0x2f')](_0x59df92);return _0x403d7c[_0x9af5('0x34')](_0x9af5('0x35'),_0x5d1e0f+'-'+_0x1a763b+'/'+_0x463021)[_0x9af5('0x36')](_0x255a5d);}return null;};}function patchUpdates(_0x69aaf4){return function(_0x55a3c6){try{jsonpatch[_0x9af5('0x37')](_0x55a3c6,_0x69aaf4,!![]);}catch(_0xedfe6e){return BPromise['reject'](_0xedfe6e);}return _0x55a3c6[_0x9af5('0x38')]();};}function saveUpdates(_0x3e516b,_0x21d369){return function(_0x3ba28e){if(_0x3ba28e){return _0x3ba28e[_0x9af5('0x39')](_0x3e516b)[_0x9af5('0x22')](function(_0x55b662){return _0x55b662;});}return null;};}function removeEntity(_0x213c04,_0x739e5c){return function(_0x1187e9){if(_0x1187e9){return _0x1187e9[_0x9af5('0x3a')]()['then'](function(){var _0x585819=_0x1187e9['get']({'plain':!![]});var _0x305595=_0x9af5('0x3b');return db[_0x9af5('0x3c')][_0x9af5('0x3a')]({'where':{'type':_0x305595,'resourceId':_0x585819['id']}})['then'](function(){return _0x1187e9;});})[_0x9af5('0x22')](function(){_0x213c04[_0x9af5('0x2f')](0xcc)[_0x9af5('0x2e')]();});}};}function handleEntityNotFound(_0x4aec5e,_0x158ada){return function(_0x172e59){if(!_0x172e59){_0x4aec5e[_0x9af5('0x2d')](0x194);}return _0x172e59;};}function handleError(_0x131cd7,_0x218c34){_0x218c34=_0x218c34||0x1f4;return function(_0xf96593){logger[_0x9af5('0x28')](_0xf96593[_0x9af5('0x3d')]);if(_0xf96593[_0x9af5('0x3e')]){delete _0xf96593[_0x9af5('0x3e')];}_0x131cd7[_0x9af5('0x2f')](_0x218c34)[_0x9af5('0x3f')](_0xf96593);};}exports[_0x9af5('0x40')]=function(_0x2cb8ac,_0x2061ee){var _0x274458={'include':[{'model':db[_0x9af5('0x41')],'as':'mandatoryDispositionPause'}]},_0x1a7f66={},_0x44edca={'count':0x0,'rows':[]};var _0x1a2387=_['map'](db[_0x9af5('0x42')][_0x9af5('0x43')],function(_0x318eed){return{'name':_0x318eed[_0x9af5('0x44')],'type':_0x318eed['type'][_0x9af5('0x45')]};});_0x1a7f66[_0x9af5('0x46')]=_['map'](_0x1a2387,_0x9af5('0x3e'));_0x1a7f66['query']=_[_0x9af5('0x47')](_0x2cb8ac[_0x9af5('0x48')]);_0x1a7f66[_0x9af5('0x49')]=_[_0x9af5('0x4a')](_0x1a7f66[_0x9af5('0x46')],_0x1a7f66[_0x9af5('0x48')]);_0x274458[_0x9af5('0x4b')]=_[_0x9af5('0x4a')](_0x1a7f66[_0x9af5('0x46')],qs[_0x9af5('0x4c')](_0x2cb8ac[_0x9af5('0x48')][_0x9af5('0x4c')]));_0x274458[_0x9af5('0x4b')]=_0x274458['attributes'][_0x9af5('0x4d')]?_0x274458[_0x9af5('0x4b')]:_0x1a7f66['model'];if(!_0x2cb8ac['query']['hasOwnProperty'](_0x9af5('0x4e'))){_0x274458[_0x9af5('0x32')]=qs[_0x9af5('0x32')](_0x2cb8ac['query'][_0x9af5('0x32')]);_0x274458['offset']=qs['offset'](_0x2cb8ac['query'][_0x9af5('0x30')]);}_0x274458[_0x9af5('0x4f')]=qs['sort'](_0x2cb8ac[_0x9af5('0x48')]['sort']);_0x274458['where']=qs[_0x9af5('0x49')](_[_0x9af5('0x50')](_0x2cb8ac[_0x9af5('0x48')],_0x1a7f66[_0x9af5('0x49')]),_0x1a2387);if(_0x2cb8ac['query'][_0x9af5('0x51')]){_0x274458['where']=_[_0x9af5('0x52')](_0x274458['where'],{'$or':_[_0x9af5('0x53')](_0x1a2387,function(_0x3f0438){if(_0x3f0438[_0x9af5('0x54')]!==_0x9af5('0x55')){var _0x202f6c={};_0x202f6c[_0x3f0438[_0x9af5('0x3e')]]={'$like':'%'+_0x2cb8ac[_0x9af5('0x48')][_0x9af5('0x51')]+'%'};return _0x202f6c;}})});}_0x274458=_['merge']({},_0x274458,_0x2cb8ac[_0x9af5('0x56')]);var _0x1a012d={'where':_0x274458[_0x9af5('0x57')]};return db[_0x9af5('0x42')][_0x9af5('0x33')](_0x1a012d)[_0x9af5('0x22')](function(_0x352934){_0x44edca[_0x9af5('0x33')]=_0x352934;if(_0x2cb8ac[_0x9af5('0x48')][_0x9af5('0x58')]){_0x274458[_0x9af5('0x59')]=[{'all':!![]}];}return db[_0x9af5('0x42')][_0x9af5('0x5a')](_0x274458);})[_0x9af5('0x22')](function(_0x4334ed){_0x44edca[_0x9af5('0x5b')]=_0x4334ed;return _0x44edca;})[_0x9af5('0x22')](respondWithFilteredResult(_0x2061ee,_0x274458))[_0x9af5('0x2c')](handleError(_0x2061ee,null));};exports['show']=function(_0x5edbe7,_0x19ed7f){var _0x2b7f9b={'raw':![],'where':{'id':_0x5edbe7['params']['id']},'include':[{'model':db[_0x9af5('0x41')],'as':_0x9af5('0x5c')}]},_0x500611={};_0x500611[_0x9af5('0x46')]=_['keys'](db[_0x9af5('0x42')][_0x9af5('0x43')]);_0x500611['query']=_['keys'](_0x5edbe7[_0x9af5('0x48')]);_0x500611[_0x9af5('0x49')]=_[_0x9af5('0x4a')](_0x500611[_0x9af5('0x46')],_0x500611[_0x9af5('0x48')]);_0x2b7f9b[_0x9af5('0x4b')]=_['intersection'](_0x500611[_0x9af5('0x46')],qs['fields'](_0x5edbe7[_0x9af5('0x48')]['fields']));_0x2b7f9b[_0x9af5('0x4b')]=_0x2b7f9b[_0x9af5('0x4b')]['length']?_0x2b7f9b[_0x9af5('0x4b')]:_0x500611['model'];if(_0x5edbe7[_0x9af5('0x48')]['includeAll']){_0x2b7f9b[_0x9af5('0x59')]=[{'all':!![]}];}_0x2b7f9b=_[_0x9af5('0x52')]({},_0x2b7f9b,_0x5edbe7['options']);return db[_0x9af5('0x42')]['find'](_0x2b7f9b)[_0x9af5('0x22')](handleEntityNotFound(_0x19ed7f,null))[_0x9af5('0x22')](respondWithResult(_0x19ed7f,null))[_0x9af5('0x2c')](handleError(_0x19ed7f,null));};exports['create']=function(_0x56ef0d,_0x42bb8f){return db['WhatsappAccount'][_0x9af5('0x5d')](_0x56ef0d[_0x9af5('0x5e')],{})['then'](function(_0xf1ba35){var _0x159a4c=_0x56ef0d[_0x9af5('0x5f')][_0x9af5('0x60')]({'plain':!![]});if(!_0x159a4c)throw new Error(_0x9af5('0x61'));if(_0x159a4c[_0x9af5('0x62')]===_0x9af5('0x5f')){var _0x58b91e=_0xf1ba35['get']({'plain':!![]});var _0x20da2a=_0x9af5('0x3b');return db['UserProfileSection']['find']({'where':{'name':_0x20da2a,'userProfileId':_0x159a4c[_0x9af5('0x63')]},'raw':!![]})['then'](function(_0xfce9aa){if(_0xfce9aa&&_0xfce9aa['autoAssociation']===0x0){return db[_0x9af5('0x3c')][_0x9af5('0x5d')]({'name':_0x58b91e['name'],'resourceId':_0x58b91e['id'],'type':_0xfce9aa[_0x9af5('0x3e')],'sectionId':_0xfce9aa['id']},{})[_0x9af5('0x22')](function(){return _0xf1ba35;});}else{return _0xf1ba35;}})[_0x9af5('0x2c')](function(_0x48d50f){logger[_0x9af5('0x28')](_0x9af5('0x64'),_0x48d50f);throw _0x48d50f;});}return _0xf1ba35;})[_0x9af5('0x22')](respondWithResult(_0x42bb8f,0xc9))[_0x9af5('0x2c')](handleError(_0x42bb8f,null));};exports[_0x9af5('0x39')]=function(_0x470fed,_0x10bb39){if(_0x470fed['body']['id']){delete _0x470fed[_0x9af5('0x5e')]['id'];}return db[_0x9af5('0x42')][_0x9af5('0x65')]({'where':{'id':_0x470fed[_0x9af5('0x66')]['id']},'include':[{'model':db[_0x9af5('0x41')],'as':_0x9af5('0x5c')}]})['then'](handleEntityNotFound(_0x10bb39,null))[_0x9af5('0x22')](saveUpdates(_0x470fed[_0x9af5('0x5e')],null))[_0x9af5('0x22')](respondWithResult(_0x10bb39,null))['catch'](handleError(_0x10bb39,null));};exports[_0x9af5('0x3a')]=function(_0x3fca29,_0x35a1ec){return db[_0x9af5('0x42')]['find']({'where':{'id':_0x3fca29[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x35a1ec,null))[_0x9af5('0x22')](removeEntity(_0x35a1ec,null))[_0x9af5('0x2c')](handleError(_0x35a1ec,null));};exports['describe']=function(_0x1870d9,_0x2a2690){return db[_0x9af5('0x42')]['describe']()[_0x9af5('0x22')](respondWithResult(_0x2a2690,null))[_0x9af5('0x2c')](handleError(_0x2a2690,null));};exports['addDisposition']=function(_0x26f3a6,_0x1f2477,_0x553ffc){if(_0x26f3a6[_0x9af5('0x5e')]['id']){delete _0x26f3a6['body']['id'];}return db[_0x9af5('0x42')]['find']({'where':{'id':_0x26f3a6[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x1f2477,null))[_0x9af5('0x22')](function(_0x48e376){if(_0x48e376){_0x26f3a6['body'][_0x9af5('0x67')]=_0x48e376['id'];return db[_0x9af5('0x68')][_0x9af5('0x5d')](_0x26f3a6[_0x9af5('0x5e')]);}})['then'](respondWithResult(_0x1f2477,null))[_0x9af5('0x2c')](handleError(_0x1f2477,null));};exports[_0x9af5('0x69')]=function(_0x320639,_0x62cc08,_0x35ec83){var _0x3fca8d={'raw':![],'where':{}};var _0x3afd89={};var _0x346473={'count':0x0,'rows':[]};return db['WhatsappAccount']['findOne']({'where':{'id':_0x320639[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x62cc08,null))[_0x9af5('0x22')](function(_0x34d79e){if(_0x34d79e){_0x3afd89[_0x9af5('0x46')]=_[_0x9af5('0x47')](db[_0x9af5('0x68')][_0x9af5('0x43')]);_0x3afd89[_0x9af5('0x48')]=_[_0x9af5('0x47')](_0x320639[_0x9af5('0x48')]);_0x3afd89[_0x9af5('0x49')]=_[_0x9af5('0x4a')](_0x3afd89[_0x9af5('0x46')],_0x3afd89[_0x9af5('0x48')]);_0x3fca8d[_0x9af5('0x4b')]=_[_0x9af5('0x4a')](_0x3afd89[_0x9af5('0x46')],qs[_0x9af5('0x4c')](_0x320639[_0x9af5('0x48')][_0x9af5('0x4c')]));_0x3fca8d[_0x9af5('0x4b')]=_0x3fca8d[_0x9af5('0x4b')]['length']?_0x3fca8d[_0x9af5('0x4b')]:_0x3afd89[_0x9af5('0x46')];if(!_0x320639[_0x9af5('0x48')][_0x9af5('0x6a')]('nolimit')){_0x3fca8d[_0x9af5('0x32')]=qs[_0x9af5('0x32')](_0x320639[_0x9af5('0x48')][_0x9af5('0x32')]);_0x3fca8d[_0x9af5('0x30')]=qs['offset'](_0x320639[_0x9af5('0x48')][_0x9af5('0x30')]);}_0x3fca8d[_0x9af5('0x4f')]=qs[_0x9af5('0x6b')](_0x320639['query'][_0x9af5('0x6b')]);_0x3fca8d[_0x9af5('0x57')]=qs[_0x9af5('0x49')](_[_0x9af5('0x50')](_0x320639['query'],_0x3afd89['filters']));_0x3fca8d[_0x9af5('0x57')]['WhatsappAccountId']=_0x34d79e['id'];if(_0x320639[_0x9af5('0x48')][_0x9af5('0x51')]){_0x3fca8d['where']=_[_0x9af5('0x52')](_0x3fca8d[_0x9af5('0x57')],{'$or':_[_0x9af5('0x53')](_0x3fca8d[_0x9af5('0x4b')],function(_0x22d29b){var _0x5b3ee7={};_0x5b3ee7[_0x22d29b]={'$like':'%'+_0x320639['query'][_0x9af5('0x51')]+'%'};return _0x5b3ee7;})});}_0x3fca8d=_[_0x9af5('0x52')]({},_0x3fca8d,_0x320639['options']);return db['Disposition'][_0x9af5('0x33')]({'where':_0x3fca8d['where']})[_0x9af5('0x22')](function(_0x58e1ce){_0x346473[_0x9af5('0x33')]=_0x58e1ce;if(_0x320639[_0x9af5('0x48')][_0x9af5('0x58')]){_0x3fca8d[_0x9af5('0x59')]=[{'all':!![]}];}return db[_0x9af5('0x68')][_0x9af5('0x5a')](_0x3fca8d);})[_0x9af5('0x22')](function(_0x5e015d){_0x346473[_0x9af5('0x5b')]=_0x5e015d;return _0x346473;});}})[_0x9af5('0x22')](respondWithFilteredResult(_0x62cc08,_0x3fca8d))[_0x9af5('0x2c')](handleError(_0x62cc08,null));};exports[_0x9af5('0x6c')]=function(_0x129157,_0x4644ab,_0x13d899){return db[_0x9af5('0x42')][_0x9af5('0x65')]({'where':{'id':_0x129157[_0x9af5('0x66')]['id']}})['then'](handleEntityNotFound(_0x4644ab,null))[_0x9af5('0x22')](function(_0x51b91d){if(_0x51b91d){return _0x51b91d[_0x9af5('0x6c')](_0x129157[_0x9af5('0x48')][_0x9af5('0x6d')]);}})['then'](respondWithStatusCode(_0x4644ab,null))[_0x9af5('0x2c')](handleError(_0x4644ab,null));};exports[_0x9af5('0x6e')]=function(_0x30b6a8,_0x243174,_0x5f5412){if(_0x30b6a8[_0x9af5('0x5e')]['id']){delete _0x30b6a8[_0x9af5('0x5e')]['id'];}return db[_0x9af5('0x42')]['find']({'where':{'id':_0x30b6a8['params']['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x243174,null))[_0x9af5('0x22')](function(_0x1a2b07){if(_0x1a2b07){_0x30b6a8[_0x9af5('0x5e')][_0x9af5('0x67')]=_0x1a2b07['id'];return db[_0x9af5('0x6f')][_0x9af5('0x5d')](_0x30b6a8[_0x9af5('0x5e')]);}})[_0x9af5('0x22')](respondWithResult(_0x243174,null))[_0x9af5('0x2c')](handleError(_0x243174,null));};exports[_0x9af5('0x70')]=function(_0x48586a,_0x3cd003,_0x510ab4){var _0x405886={'raw':![],'where':{}};var _0x2a4704={};var _0x43e299={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x9af5('0x71')]({'where':{'id':_0x48586a['params']['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x3cd003,null))[_0x9af5('0x22')](function(_0x209232){if(_0x209232){_0x2a4704[_0x9af5('0x46')]=_[_0x9af5('0x47')](db[_0x9af5('0x6f')][_0x9af5('0x43')]);_0x2a4704[_0x9af5('0x48')]=_[_0x9af5('0x47')](_0x48586a[_0x9af5('0x48')]);_0x2a4704[_0x9af5('0x49')]=_[_0x9af5('0x4a')](_0x2a4704[_0x9af5('0x46')],_0x2a4704[_0x9af5('0x48')]);_0x405886[_0x9af5('0x4b')]=_[_0x9af5('0x4a')](_0x2a4704[_0x9af5('0x46')],qs[_0x9af5('0x4c')](_0x48586a[_0x9af5('0x48')][_0x9af5('0x4c')]));_0x405886[_0x9af5('0x4b')]=_0x405886[_0x9af5('0x4b')]['length']?_0x405886[_0x9af5('0x4b')]:_0x2a4704[_0x9af5('0x46')];if(!_0x48586a[_0x9af5('0x48')]['hasOwnProperty'](_0x9af5('0x4e'))){_0x405886[_0x9af5('0x32')]=qs[_0x9af5('0x32')](_0x48586a['query']['limit']);_0x405886[_0x9af5('0x30')]=qs[_0x9af5('0x30')](_0x48586a[_0x9af5('0x48')]['offset']);}_0x405886[_0x9af5('0x4f')]=qs[_0x9af5('0x6b')](_0x48586a['query'][_0x9af5('0x6b')]);_0x405886[_0x9af5('0x57')]=qs['filters'](_['pick'](_0x48586a['query'],_0x2a4704[_0x9af5('0x49')]));_0x405886[_0x9af5('0x57')]['WhatsappAccountId']=_0x209232['id'];if(_0x48586a[_0x9af5('0x48')][_0x9af5('0x51')]){_0x405886['where']=_[_0x9af5('0x52')](_0x405886['where'],{'$or':_[_0x9af5('0x53')](_0x405886[_0x9af5('0x4b')],function(_0x5c5a59){var _0x47b29e={};_0x47b29e[_0x5c5a59]={'$like':'%'+_0x48586a[_0x9af5('0x48')][_0x9af5('0x51')]+'%'};return _0x47b29e;})});}_0x405886=_[_0x9af5('0x52')]({},_0x405886,_0x48586a[_0x9af5('0x56')]);return db[_0x9af5('0x6f')][_0x9af5('0x33')]({'where':_0x405886[_0x9af5('0x57')]})['then'](function(_0x967950){_0x43e299[_0x9af5('0x33')]=_0x967950;if(_0x48586a['query']['includeAll']){_0x405886[_0x9af5('0x59')]=[{'all':!![]}];}return db['CannedAnswer'][_0x9af5('0x5a')](_0x405886);})[_0x9af5('0x22')](function(_0x46be19){_0x43e299[_0x9af5('0x5b')]=_0x46be19;return _0x43e299;});}})[_0x9af5('0x22')](respondWithFilteredResult(_0x3cd003,_0x405886))['catch'](handleError(_0x3cd003,null));};exports[_0x9af5('0x72')]=function(_0x453a2b,_0x1defac,_0x563786){return db[_0x9af5('0x42')][_0x9af5('0x65')]({'where':{'id':_0x453a2b['params']['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x1defac,null))['then'](function(_0xdca1e3){if(_0xdca1e3){return _0xdca1e3[_0x9af5('0x72')](_0x453a2b[_0x9af5('0x48')][_0x9af5('0x6d')]);}})[_0x9af5('0x22')](respondWithStatusCode(_0x1defac,null))[_0x9af5('0x2c')](handleError(_0x1defac,null));};exports[_0x9af5('0x73')]=function(_0x12f57e,_0x7403d2,_0x38214d){return db[_0x9af5('0x42')][_0x9af5('0x65')]({'where':{'id':_0x12f57e[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x7403d2,null))[_0x9af5('0x22')](function(_0xfc0ede){if(_0xfc0ede){return _0xfc0ede[_0x9af5('0x73')](_0x12f57e[_0x9af5('0x5e')][_0x9af5('0x6d')],_['omit'](_0x12f57e['body'],['ids','id'])||{})['spread'](function(_0x4a0d7c){for(var _0x3bc5c4=0x0;_0x3bc5c4<_0x12f57e[_0x9af5('0x5e')][_0x9af5('0x6d')]['length'];_0x3bc5c4+=0x1){socket['emit'](_0x9af5('0x74'),{'UserId':Number(_0x12f57e['body']['ids'][_0x3bc5c4]),'WhatsappAccountId':Number(_0x12f57e[_0x9af5('0x66')]['id'])});}return _0x4a0d7c;});}})[_0x9af5('0x22')](respondWithResult(_0x7403d2,null))[_0x9af5('0x2c')](handleError(_0x7403d2,null));};exports['removeAgents']=function(_0x359361,_0x5e6884,_0x11b490){return db[_0x9af5('0x42')]['find']({'where':{'id':_0x359361[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x5e6884,null))[_0x9af5('0x22')](function(_0x34843a){if(_0x34843a){return _0x34843a[_0x9af5('0x75')](_0x359361[_0x9af5('0x48')]['ids'])['then'](function(){if(_[_0x9af5('0x76')](_0x359361[_0x9af5('0x48')]['ids'])){for(var _0x3deb0b=0x0;_0x3deb0b<_0x359361[_0x9af5('0x48')][_0x9af5('0x6d')]['length'];_0x3deb0b+=0x1){socket[_0x9af5('0x77')](_0x9af5('0x78'),{'UserId':Number(_0x359361[_0x9af5('0x48')][_0x9af5('0x6d')][_0x3deb0b]),'WhatsappAccountId':Number(_0x359361[_0x9af5('0x66')]['id'])});}}else{socket[_0x9af5('0x77')]('userWhatsappAccount:remove',{'UserId':Number(_0x359361['query'][_0x9af5('0x6d')]),'WhatsappAccountId':Number(_0x359361['params']['id'])});}});}})[_0x9af5('0x22')](respondWithStatusCode(_0x5e6884,null))[_0x9af5('0x2c')](handleError(_0x5e6884,null));};exports[_0x9af5('0x79')]=function(_0x2ad4d3,_0x5ecf6d,_0xc48432){var _0x3f6b74={};var _0x193097={};var _0x3395c8;var _0x56411e;return db[_0x9af5('0x42')][_0x9af5('0x71')]({'where':{'id':_0x2ad4d3['params']['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x5ecf6d,null))[_0x9af5('0x22')](function(_0x562015){if(_0x562015){_0x3395c8=_0x562015;_0x193097['model']=_['keys'](db[_0x9af5('0x7a')][_0x9af5('0x43')]);_0x193097[_0x9af5('0x48')]=_[_0x9af5('0x47')](_0x2ad4d3['query']);_0x193097[_0x9af5('0x49')]=_[_0x9af5('0x4a')](_0x193097[_0x9af5('0x46')],_0x193097[_0x9af5('0x48')]);_0x3f6b74[_0x9af5('0x4b')]=_[_0x9af5('0x4a')](_0x193097[_0x9af5('0x46')],qs[_0x9af5('0x4c')](_0x2ad4d3[_0x9af5('0x48')][_0x9af5('0x4c')]));_0x3f6b74[_0x9af5('0x4b')]=_0x3f6b74[_0x9af5('0x4b')][_0x9af5('0x4d')]?_0x3f6b74['attributes']:_0x193097['model'];_0x3f6b74[_0x9af5('0x4f')]=qs['sort'](_0x2ad4d3[_0x9af5('0x48')]['sort']);_0x3f6b74[_0x9af5('0x57')]=qs['filters'](_[_0x9af5('0x50')](_0x2ad4d3[_0x9af5('0x48')],_0x193097[_0x9af5('0x49')]));if(_0x2ad4d3[_0x9af5('0x48')][_0x9af5('0x51')]){_0x3f6b74[_0x9af5('0x57')]=_[_0x9af5('0x52')](_0x3f6b74['where'],{'$or':_[_0x9af5('0x53')](_0x3f6b74[_0x9af5('0x4b')],function(_0x2c334e){var _0x1d2aa9={};_0x1d2aa9[_0x2c334e]={'$like':'%'+_0x2ad4d3[_0x9af5('0x48')]['filter']+'%'};return _0x1d2aa9;})});}_0x3f6b74=_[_0x9af5('0x52')]({},_0x3f6b74,_0x2ad4d3[_0x9af5('0x56')]);return _0x3395c8[_0x9af5('0x79')](_0x3f6b74);}})[_0x9af5('0x22')](function(_0x221377){if(_0x221377){_0x56411e=_0x221377[_0x9af5('0x4d')];if(!_0x2ad4d3['query'][_0x9af5('0x6a')](_0x9af5('0x4e'))){_0x3f6b74[_0x9af5('0x32')]=qs[_0x9af5('0x32')](_0x2ad4d3[_0x9af5('0x48')][_0x9af5('0x32')]);_0x3f6b74['offset']=qs['offset'](_0x2ad4d3['query']['offset']);}return _0x3395c8[_0x9af5('0x79')](_0x3f6b74);}})['then'](function(_0x4ab417){if(_0x4ab417){return _0x4ab417?{'count':_0x56411e,'rows':_0x4ab417}:null;}})[_0x9af5('0x22')](respondWithResult(_0x5ecf6d,null))[_0x9af5('0x2c')](handleError(_0x5ecf6d,null));};exports[_0x9af5('0x7b')]=function(_0x461cdf,_0x4d5b87,_0x32d8a6){return db[_0x9af5('0x42')][_0x9af5('0x71')]({'where':{'id':_0x461cdf[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x4d5b87,null))[_0x9af5('0x22')](function(_0x1812fc){if(_0x1812fc){return db[_0x9af5('0x7c')][_0x9af5('0x7d')](function(_0x49d8f8){return db[_0x9af5('0x7e')][_0x9af5('0x3a')]({'where':{'WhatsappAccountId':_0x461cdf[_0x9af5('0x66')]['id']},'transaction':_0x49d8f8})[_0x9af5('0x22')](function(_0x1e6b7f){var _0xc2d1b=_[_0x9af5('0x53')](_0x461cdf[_0x9af5('0x5e')],function(_0x952c02){_0x952c02['WhatsappAccountId']=_0x461cdf['params']['id'];return _0x952c02;});return db[_0x9af5('0x7e')]['bulkCreate'](_0xc2d1b,{'transaction':_0x49d8f8});});})[_0x9af5('0x22')](function(){return db['WhatsappApplication'][_0x9af5('0x7f')]({'where':{'WhatsappAccountId':_0x461cdf['params']['id']},'order':_0x9af5('0x80')});});}})[_0x9af5('0x22')](respondWithResult(_0x4d5b87,null))[_0x9af5('0x2c')](handleError(_0x4d5b87,null));};exports[_0x9af5('0x81')]=function(_0x1a5623,_0x53d6a2,_0x34f263){var _0x24e8ca={};var _0x3bbac3={};var _0x2d427a;var _0x252f6f;return db['WhatsappAccount'][_0x9af5('0x71')]({'where':{'id':_0x1a5623[_0x9af5('0x66')]['id']}})[_0x9af5('0x22')](handleEntityNotFound(_0x53d6a2,null))[_0x9af5('0x22')](function(_0x3035db){if(_0x3035db){_0x2d427a=_0x3035db;_0x3bbac3[_0x9af5('0x46')]=_[_0x9af5('0x47')](db[_0x9af5('0x7e')][_0x9af5('0x43')]);_0x3bbac3['query']=_[_0x9af5('0x47')](_0x1a5623['query']);_0x3bbac3[_0x9af5('0x49')]=_['intersection'](_0x3bbac3[_0x9af5('0x46')],_0x3bbac3['query']);_0x24e8ca[_0x9af5('0x4b')]=_[_0x9af5('0x4a')](_0x3bbac3[_0x9af5('0x46')],qs[_0x9af5('0x4c')](_0x1a5623[_0x9af5('0x48')]['fields']));_0x24e8ca[_0x9af5('0x4b')]=_0x24e8ca[_0x9af5('0x4b')][_0x9af5('0x4d')]?_0x24e8ca[_0x9af5('0x4b')]:_0x3bbac3[_0x9af5('0x46')];_0x24e8ca[_0x9af5('0x4f')]=qs['sort'](_0x1a5623['query'][_0x9af5('0x6b')]);_0x24e8ca['where']=qs['filters'](_['pick'](_0x1a5623[_0x9af5('0x48')],_0x3bbac3['filters']));if(_0x1a5623[_0x9af5('0x48')][_0x9af5('0x51')]){_0x24e8ca[_0x9af5('0x57')]=_[_0x9af5('0x52')](_0x24e8ca[_0x9af5('0x57')],{'$or':_[_0x9af5('0x53')](_0x24e8ca[_0x9af5('0x4b')],function(_0x3d2898){var _0x660e77={};_0x660e77[_0x3d2898]={'$like':'%'+_0x1a5623['query']['filter']+'%'};return _0x660e77;})});}_0x24e8ca=_[_0x9af5('0x52')]({},_0x24e8ca,_0x1a5623[_0x9af5('0x56')]);return _0x2d427a[_0x9af5('0x81')](_0x24e8ca);}})[_0x9af5('0x22')](function(_0x2f7781){if(_0x2f7781){_0x252f6f=_0x2f7781['length'];if(!_0x1a5623['query'][_0x9af5('0x6a')](_0x9af5('0x4e'))){_0x24e8ca[_0x9af5('0x32')]=qs[_0x9af5('0x32')](_0x1a5623[_0x9af5('0x48')][_0x9af5('0x32')]);_0x24e8ca[_0x9af5('0x30')]=qs['offset'](_0x1a5623[_0x9af5('0x48')][_0x9af5('0x30')]);}return _0x2d427a[_0x9af5('0x81')](_0x24e8ca);}})[_0x9af5('0x22')](function(_0x4e7d60){if(_0x4e7d60){return _0x4e7d60?{'count':_0x252f6f,'rows':_0x4e7d60}:null;}})[_0x9af5('0x22')](respondWithResult(_0x53d6a2,null))[_0x9af5('0x2c')](handleError(_0x53d6a2,null));};exports[_0x9af5('0x82')]=function(_0x16d051,_0x32f323,_0x3fa5ba){var _0x4bce3e={'channel':_0x9af5('0x83')};var _0x1dcd20=[];var _0x5b7789=[];var _0x5df018={};return db[_0x9af5('0x42')][_0x9af5('0x65')]({'where':{'id':_0x16d051[_0x9af5('0x66')]['id']},'include':[{'model':db['WhatsappApplication'],'as':_0x9af5('0x84')}]})[_0x9af5('0x22')](handleEntityNotFound(_0x32f323,null))[_0x9af5('0x22')](function(_0x26835e){_0x4bce3e[_0x9af5('0x85')]=_0x26835e;_0x4bce3e['applications']=_[_0x9af5('0x86')](_0x26835e['Applications'],['priority'],[_0x9af5('0x87')]);if(_0x4bce3e[_0x9af5('0x85')][_0x9af5('0x84')]){delete _0x4bce3e[_0x9af5('0x85')]['Applications'];}return db['CmContact'][_0x9af5('0x88')]();})['then'](function(_0x208e7b){if(!_0x208e7b){throw new db[(_0x9af5('0x89'))][(_0x9af5('0x8a'))](_0x9af5('0x8b'));}_0x1dcd20=_[_0x9af5('0x8c')](_[_0x9af5('0x47')](_0x208e7b),[_0x9af5('0x8d'),_0x9af5('0x8e')]);_0x5b7789=_[_0x9af5('0x8c')](_[_0x9af5('0x47')](_0x208e7b),[_0x9af5('0x8d'),_0x9af5('0x8e'),'CompanyId',_0x9af5('0x8f')]);_0x4bce3e['body']={'mapKey':_0x9af5('0x90')};if(_0x4bce3e[_0x9af5('0x85')][_0x9af5('0x54')]&&_0x4bce3e['account'][_0x9af5('0x54')]===_0x9af5('0x91')){_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x92')]=_0x16d051[_0x9af5('0x5e')][_0x9af5('0x93')][_0x9af5('0x94')](_0x9af5('0x95'),'');_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x5e')]=_0x16d051['body'][_0x9af5('0x96')];_0x4bce3e['body'][_0x9af5('0x97')]=_0x16d051['body'][_0x9af5('0x98')];}if(_0x4bce3e[_0x9af5('0x5e')]['id']){delete _0x4bce3e['body']['id'];}if(_['isNil'](_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x92')])){throw new db[(_0x9af5('0x89'))][(_0x9af5('0x8a'))](_0x9af5('0x99'));}if(_[_0x9af5('0x9a')](_0x4bce3e['body'][_0x9af5('0x5e')])||_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x5e')]===''){throw new db['Sequelize'][(_0x9af5('0x8a'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x9b')])){throw new db['Sequelize']['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5b7789);}if(!_[_0x9af5('0x9c')](_0x5b7789,_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x9b')])){throw new db[(_0x9af5('0x89'))][(_0x9af5('0x8a'))](_0x9af5('0x9d')+_0x5b7789);}_0x5df018[_0x4bce3e[_0x9af5('0x5e')]['mapKey']]=_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x92')];return db['CmList']['find']({'where':{'id':_0x4bce3e[_0x9af5('0x85')]['ListId']},'include':[{'model':db['CmContact'],'as':_0x9af5('0x9e'),'where':_0x5df018,'limit':0x1,'order':[[_0x9af5('0x8e'),_0x9af5('0x9f')]]}]});})[_0x9af5('0x22')](handleEntityNotFound(_0x32f323,null))['then'](function(_0x5293ff){if(_0x5293ff){_0x4bce3e['list']=_[_0x9af5('0xa0')](_0x5293ff,[_0x9af5('0x9e')]);if(_0x5293ff['Contacts']['length']){return _0x5293ff[_0x9af5('0x9e')][0x0];}var _0x3ed850=_[_0x9af5('0x1b')](_0x4bce3e[_0x9af5('0x5e')],{'firstName':_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x92')],'ListId':_0x5293ff['id']});_0x3ed850[_0x4bce3e['body']['mapKey']]=_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x92')];return db['CmContact'][_0x9af5('0x5d')](_0x3ed850,{'fields':_0x1dcd20,'raw':!![]});}})[_0x9af5('0x22')](handleEntityNotFound(_0x32f323,null))['then'](function(_0xe8707d){if(_0xe8707d){_0x4bce3e[_0x9af5('0xa1')]=_0xe8707d;var _0x3e79af={'ContactId':_0xe8707d['id'],'phone':_0x4bce3e['body']['from'],'WhatsappAccountId':_0x16d051['params']['id']};var _0x112e40={'ContactId':_0xe8707d['id'],'WhatsappAccountId':_0x16d051[_0x9af5('0x66')]['id'],'closed':![]};return db['WhatsappInteraction']['find']({'where':_0x112e40})[_0x9af5('0x22')](function(_0x50e0c9){if(_0x50e0c9){return[_0x50e0c9,![]];}return db[_0x9af5('0xa2')][_0x9af5('0x5d')](_0x3e79af)['then'](function(_0x28344d){return[_0x28344d,!![]];});});}})[_0x9af5('0xa3')](function(_0x3650ab,_0x4cd789){_0x4bce3e[_0x9af5('0xa4')]=_0x3650ab[_0x9af5('0x60')]({'plain':!![]});_0x4bce3e[_0x9af5('0xa4')][_0x9af5('0xa5')]=![];if(_0x4cd789){if(_0x4bce3e[_0x9af5('0x85')]['autoclose']){_0x4bce3e[_0x9af5('0xa6')][_0x9af5('0xa7')]({'id':0x0,'priority':_0x4bce3e[_0x9af5('0xa6')][_0x9af5('0x4d')]+0x1,'app':_0x9af5('0xa8'),'appdata':_0x9af5('0xa9'),'interval':_0x9af5('0xaa')});}_0x4bce3e['interaction'][_0x9af5('0xa5')]=!![];}return db[_0x9af5('0xab')][_0x9af5('0x5d')]({'phone':_0x4bce3e['body'][_0x9af5('0x92')],'messageId':_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x97')],'body':_0x4bce3e[_0x9af5('0x5e')][_0x9af5('0x5e')],'WhatsappAccountId':_0x16d051[_0x9af5('0x66')]['id'],'WhatsappInteractionId':_0x3650ab['id'],'direction':'in','ContactId':_0x3650ab[_0x9af5('0xac')],'AttachmentId':_0x4bce3e['body']['AttachmentId']});})['then'](function(_0x33584a){_0x4bce3e[_0x9af5('0x29')]=_0x33584a;if(_0x4bce3e[_0x9af5('0xa4')][_0x9af5('0xad')]){return db[_0x9af5('0x7a')][_0x9af5('0x65')]({'attributes':['id',_0x9af5('0x3e')],'where':{'id':_0x4bce3e['interaction'][_0x9af5('0xad')]}})['then'](function(_0x2869fb){if(_0x2869fb){_0x4bce3e[_0x9af5('0xa6')][_0x9af5('0xae')]({'id':0x0,'priority':0x0,'app':_0x9af5('0xaf'),'appdata':_0x2869fb[_0x9af5('0x3e')]+','+(_0x4bce3e[_0x9af5('0x85')][_0x9af5('0xb0')]||0xa),'interval':_0x9af5('0xaa')});}return respondWithRpcPromise(_0x9af5('0xb1'),_0x9af5('0xb2'),_0x4bce3e);});}return respondWithRpcPromise('Start',_0x9af5('0xb2'),_0x4bce3e);})[_0x9af5('0x22')](function(_0x4db01c){if(_0x4db01c){var _0x59deb4=0xc8;var _0x339004=_0x9af5('0xb3');logger['info']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x339004,_0x59deb4,_0x9af5('0xb4'));logger[_0x9af5('0x25')](_0x9af5('0xb5'),_0x339004,_0x59deb4,_0x9af5('0xb4'),JSON[_0x9af5('0x27')](_0x4db01c));if(_0x4bce3e['account'][_0x9af5('0x54')]===_0x9af5('0x91')){return _0x32f323['status'](_0x59deb4)[_0x9af5('0x34')](_0x9af5('0xb6'),_0x9af5('0xb7'))[_0x9af5('0x3f')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x32f323['status'](_0x59deb4)['json'](_0x4db01c);}}})[_0x9af5('0x2c')](handleError(_0x32f323,null));};exports[_0x9af5('0x3f')]=function(_0x2387f3,_0x2c6d05,_0x1021a4){var _0x523801,_0xa868ce,_0x392f30;if(_[_0x9af5('0x9a')](_0x2387f3['body'][_0x9af5('0x5e')])||_0x2387f3[_0x9af5('0x5e')][_0x9af5('0x5e')]===''){throw new db['Sequelize'][(_0x9af5('0x8a'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x9af5('0x9a')](_0x2387f3[_0x9af5('0x5e')]['to'])){throw new db[(_0x9af5('0x89'))][(_0x9af5('0x8a'))](_0x9af5('0xb8'));}_0x523801=_0x2387f3['body']['to'];return db[_0x9af5('0x42')][_0x9af5('0x65')]({'where':{'id':_0x2387f3[_0x9af5('0x66')]['id']},'include':[{'model':db[_0x9af5('0xb9')],'as':_0x9af5('0xba'),'include':[{'model':db[_0x9af5('0xbb')],'as':'Contacts','where':{'mobile':_0x523801},'limit':0x1,'order':[[_0x9af5('0x8e'),_0x9af5('0x9f')]]}]}]})[_0x9af5('0x22')](handleEntityNotFound(_0x2c6d05,null))['then'](function(_0x169ada){if(_0x169ada&&_0x169ada['List']){_0xa868ce=_0x169ada[_0x9af5('0x60')]({'plain':!![]});if(_0xa868ce['List']&&_0xa868ce[_0x9af5('0xba')][_0x9af5('0x9e')]['length']){return _0xa868ce[_0x9af5('0xba')]['Contacts'][0x0];}return db[_0x9af5('0xbb')][_0x9af5('0x5d')](_['defaults'](_0x2387f3[_0x9af5('0x5e')],{'firstName':_0x523801,'mobile':_0x523801,'phone':_0x523801,'ListId':_0xa868ce[_0x9af5('0x8f')]}));}})['then'](handleEntityNotFound(_0x2c6d05,null))[_0x9af5('0x22')](function(_0x5ca320){if(_0x5ca320){_0x392f30=_0x5ca320;return db['WhatsappInteraction']['find']({'where':{'ContactId':_0x392f30['id'],'closed':![],'WhatsappAccountId':_0xa868ce['id']}})['then'](function(_0x356c8c){if(_0x356c8c){return[_0x356c8c,![]];}return db['WhatsappInteraction']['create']({'UserId':_0x2387f3[_0x9af5('0x5f')]['id'],'ContactId':_0x392f30['id'],'WhatsappAccountId':_0xa868ce['id'],'phone':_0x523801,'firstMsgDirection':_0x9af5('0xbc'),'Messages':[_['merge'](_0x2387f3[_0x9af5('0x5e')],{'read':![],'body':_0x2387f3['body']['body'],'phone':_0x523801,'WhatsappAccountId':_0xa868ce['id'],'UserId':_0x2387f3[_0x9af5('0x5f')]['id'],'ContactId':_0x392f30['id']})]},{'include':[{'model':db[_0x9af5('0xab')],'as':_0x9af5('0xbd')}]})[_0x9af5('0x22')](function(_0x2fd54f){return[_0x2fd54f,!![]];});});}})[_0x9af5('0xa3')](function(_0x3f65a2,_0x122425){if(_0x122425){return _0x3f65a2;}return db[_0x9af5('0xab')][_0x9af5('0x5d')](_['merge'](_0x2387f3[_0x9af5('0x5e')],{'read':![],'body':_0x2387f3['body'][_0x9af5('0x5e')],'phone':_0x523801,'WhatsappAccountId':_0xa868ce['id'],'WhatsappInteractionId':_0x3f65a2['id'],'UserId':_0x2387f3[_0x9af5('0x5f')]['id'],'ContactId':_0x392f30['id']}))[_0x9af5('0x22')](function(_0x31d806){_0x3f65a2['dataValues']['Messages']=[];_0x3f65a2[_0x9af5('0xbe')]['Messages']['push'](_0x31d806[_0x9af5('0xbe')]);return _0x3f65a2;});})[_0x9af5('0x22')](respondWithResult(_0x2c6d05,null))[_0x9af5('0x2c')](handleError(_0x2c6d05,null));};
\ No newline at end of file
+var _0x2ecd=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','Disposition','getDispositions','findOne','hasOwnProperty','order','WhatsappAccountId','options','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','pick','removeAnswers','addAgents','spread','emit','removeAgents','getAgents','User','addApplications','transaction','WhatsappApplication','getApplications','whatsapp','account','orderBy','Applications','priority','CmContact','Sequelize','difference','updatedAt','createdAt','CompanyId','ListId','mobile','twilio','from','From','whatsapp:','Body','messageId','ValidationError','from\x20is\x20mandatory','isNil','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','DESC','list','omit','Contacts','contact','WhatsappInteraction','interaction','created','applications','close','unmanaged','*,*,*,*','WhatsappMessage','ContactId','AttachmentId','UserId','agent','Start','startRouting','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','json','to\x20is\x20mandatory','List','Messages','dataValues','push','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','http','request','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','WhatsappAccounts','UserProfileResource','name','send','index','map','WhatsappAccount','rawAttributes','type','query','keys','filters','intersection','attributes','model','fields','nolimit','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','Pause','mandatoryDispositionPause','length','find','create','body','role','user','UserProfileSection','userProfileId','autoAssociation'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x2ecd,0x1b5));var _0xd2ec=function(_0x11668e,_0x5de223){_0x11668e=_0x11668e-0x0;var _0x4d3648=_0x2ecd[_0x11668e];return _0x4d3648;};'use strict';var emlformat=require(_0xd2ec('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd2ec('0x1'));var jsonpatch=require(_0xd2ec('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd2ec('0x3'));var Mustache=require(_0xd2ec('0x4'));var util=require(_0xd2ec('0x5'));var path=require(_0xd2ec('0x6'));var sox=require('sox');var csv=require(_0xd2ec('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd2ec('0x8'));var squel=require('squel');var crypto=require(_0xd2ec('0x9'));var jsforce=require(_0xd2ec('0xa'));var deskjs=require(_0xd2ec('0xb'));var toCsv=require('to-csv');var querystring=require(_0xd2ec('0xc'));var Papa=require('papaparse');var Redis=require(_0xd2ec('0xd'));var authService=require(_0xd2ec('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xd2ec('0xf'));var hardwareService=require(_0xd2ec('0x10'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xd2ec('0x11'));var licenseUtil=require(_0xd2ec('0x12'));var db=require(_0xd2ec('0x13'))['db'];config['redis']=_[_0xd2ec('0x14')](config[_0xd2ec('0x15')],{'host':_0xd2ec('0x16'),'port':0x18eb});var socket=require(_0xd2ec('0x17'))(new Redis(config[_0xd2ec('0x15')]));require('./whatsappAccount.socket')[_0xd2ec('0x18')](socket);var jayson=require(_0xd2ec('0x19'));var client=jayson['client'][_0xd2ec('0x1a')]({'port':0x232c});function respondWithRpcPromise(_0xebdf52,_0x5d360a,_0x24727e,_0x3e22cb){return new BPromise(function(_0x3c1c5f,_0x2f7c17){var _0x4bcf15=_0x3e22cb||client;return _0x4bcf15[_0xd2ec('0x1b')](_0xebdf52,_0x24727e)['then'](function(_0x4be2f1){logger[_0xd2ec('0x1c')](_0xd2ec('0x1d'),_0x5d360a,_0xd2ec('0x1e'));logger[_0xd2ec('0x1f')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x5d360a,_0xd2ec('0x1e'),JSON[_0xd2ec('0x20')](_0x4be2f1));if(_0x4be2f1[_0xd2ec('0x21')]){if(_0x4be2f1['error'][_0xd2ec('0x22')]===0x1f4){logger[_0xd2ec('0x21')](_0xd2ec('0x1d'),_0x5d360a,_0x4be2f1[_0xd2ec('0x21')][_0xd2ec('0x23')]);return _0x2f7c17(_0x4be2f1[_0xd2ec('0x21')][_0xd2ec('0x23')]);}logger[_0xd2ec('0x21')]('WhatsappAccount,\x20%s,\x20%s',_0x5d360a,_0x4be2f1[_0xd2ec('0x21')]['message']);return _0x3c1c5f(_0x4be2f1[_0xd2ec('0x21')][_0xd2ec('0x23')]);}else{logger[_0xd2ec('0x1c')]('WhatsappAccount,\x20%s,\x20%s',_0x5d360a,_0xd2ec('0x1e'));_0x3c1c5f(_0x4be2f1[_0xd2ec('0x24')][_0xd2ec('0x23')]);}})['catch'](function(_0x4717ae){logger[_0xd2ec('0x21')]('WhatsappAccount,\x20%s,\x20%s',_0x5d360a,_0x4717ae);_0x2f7c17(_0x4717ae);});});}function respondWithStatusCode(_0x399631,_0x3a3416){_0x3a3416=_0x3a3416||0xcc;return function(_0x3b93cb){if(_0x3b93cb){return _0x399631[_0xd2ec('0x25')](_0x3a3416);}return _0x399631['status'](_0x3a3416)[_0xd2ec('0x26')]();};}function respondWithResult(_0x212fc0,_0x55d0c0){_0x55d0c0=_0x55d0c0||0xc8;return function(_0x2e2e3a){if(_0x2e2e3a){return _0x212fc0[_0xd2ec('0x27')](_0x55d0c0)['json'](_0x2e2e3a);}};}function respondWithFilteredResult(_0x4c93d9,_0x39454c){return function(_0x4f3be0){if(_0x4f3be0){var _0x139f16=typeof _0x39454c[_0xd2ec('0x28')]===_0xd2ec('0x29')&&typeof _0x39454c[_0xd2ec('0x2a')]===_0xd2ec('0x29');var _0x13863a=_0x4f3be0[_0xd2ec('0x2b')];var _0x5da56c=_0x139f16?0x0:_0x39454c['offset'];var _0x1c353b=_0x139f16?_0x4f3be0[_0xd2ec('0x2b')]:_0x39454c[_0xd2ec('0x28')]+_0x39454c[_0xd2ec('0x2a')];var _0x264547;if(_0x1c353b>=_0x13863a){_0x1c353b=_0x13863a;_0x264547=0xc8;}else{_0x264547=0xce;}_0x4c93d9['status'](_0x264547);return _0x4c93d9[_0xd2ec('0x2c')](_0xd2ec('0x2d'),_0x5da56c+'-'+_0x1c353b+'/'+_0x13863a)['json'](_0x4f3be0);}return null;};}function patchUpdates(_0x3de339){return function(_0x1aaeaf){try{jsonpatch[_0xd2ec('0x2e')](_0x1aaeaf,_0x3de339,!![]);}catch(_0x135778){return BPromise[_0xd2ec('0x2f')](_0x135778);}return _0x1aaeaf['save']();};}function saveUpdates(_0x465620,_0xd3b37f){return function(_0x27f1ac){if(_0x27f1ac){return _0x27f1ac[_0xd2ec('0x30')](_0x465620)[_0xd2ec('0x31')](function(_0x44be0d){return _0x44be0d;});}return null;};}function removeEntity(_0x4bfc1d,_0xa77a20){return function(_0x4ebab0){if(_0x4ebab0){return _0x4ebab0[_0xd2ec('0x32')]()['then'](function(){var _0x4e8b66=_0x4ebab0[_0xd2ec('0x33')]({'plain':!![]});var _0x255006=_0xd2ec('0x34');return db[_0xd2ec('0x35')][_0xd2ec('0x32')]({'where':{'type':_0x255006,'resourceId':_0x4e8b66['id']}})[_0xd2ec('0x31')](function(){return _0x4ebab0;});})['then'](function(){_0x4bfc1d[_0xd2ec('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2704f4,_0x381df5){return function(_0x42d1b0){if(!_0x42d1b0){_0x2704f4['sendStatus'](0x194);}return _0x42d1b0;};}function handleError(_0x25cfab,_0x31748a){_0x31748a=_0x31748a||0x1f4;return function(_0x4541b5){logger[_0xd2ec('0x21')](_0x4541b5['stack']);if(_0x4541b5['name']){delete _0x4541b5[_0xd2ec('0x36')];}_0x25cfab[_0xd2ec('0x27')](_0x31748a)[_0xd2ec('0x37')](_0x4541b5);};}exports[_0xd2ec('0x38')]=function(_0x2259a9,_0x19434a){var _0x271ecc={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x8b676d={},_0x42b36b={'count':0x0,'rows':[]};var _0x539124=_[_0xd2ec('0x39')](db[_0xd2ec('0x3a')][_0xd2ec('0x3b')],function(_0x18750a){return{'name':_0x18750a['fieldName'],'type':_0x18750a[_0xd2ec('0x3c')]['key']};});_0x8b676d['model']=_['map'](_0x539124,_0xd2ec('0x36'));_0x8b676d[_0xd2ec('0x3d')]=_[_0xd2ec('0x3e')](_0x2259a9[_0xd2ec('0x3d')]);_0x8b676d[_0xd2ec('0x3f')]=_[_0xd2ec('0x40')](_0x8b676d['model'],_0x8b676d[_0xd2ec('0x3d')]);_0x271ecc[_0xd2ec('0x41')]=_[_0xd2ec('0x40')](_0x8b676d[_0xd2ec('0x42')],qs[_0xd2ec('0x43')](_0x2259a9[_0xd2ec('0x3d')][_0xd2ec('0x43')]));_0x271ecc[_0xd2ec('0x41')]=_0x271ecc['attributes']['length']?_0x271ecc[_0xd2ec('0x41')]:_0x8b676d[_0xd2ec('0x42')];if(!_0x2259a9[_0xd2ec('0x3d')]['hasOwnProperty'](_0xd2ec('0x44'))){_0x271ecc['limit']=qs[_0xd2ec('0x2a')](_0x2259a9[_0xd2ec('0x3d')][_0xd2ec('0x2a')]);_0x271ecc[_0xd2ec('0x28')]=qs[_0xd2ec('0x28')](_0x2259a9[_0xd2ec('0x3d')]['offset']);}_0x271ecc['order']=qs[_0xd2ec('0x45')](_0x2259a9[_0xd2ec('0x3d')][_0xd2ec('0x45')]);_0x271ecc[_0xd2ec('0x46')]=qs[_0xd2ec('0x3f')](_['pick'](_0x2259a9[_0xd2ec('0x3d')],_0x8b676d[_0xd2ec('0x3f')]),_0x539124);if(_0x2259a9[_0xd2ec('0x3d')][_0xd2ec('0x47')]){_0x271ecc['where']=_[_0xd2ec('0x48')](_0x271ecc[_0xd2ec('0x46')],{'$or':_['map'](_0x539124,function(_0x42db1a){if(_0x42db1a[_0xd2ec('0x3c')]!==_0xd2ec('0x49')){var _0x34bd71={};_0x34bd71[_0x42db1a[_0xd2ec('0x36')]]={'$like':'%'+_0x2259a9[_0xd2ec('0x3d')]['filter']+'%'};return _0x34bd71;}})});}_0x271ecc=_['merge']({},_0x271ecc,_0x2259a9['options']);var _0x13a3df={'where':_0x271ecc[_0xd2ec('0x46')]};return db['WhatsappAccount']['count'](_0x13a3df)[_0xd2ec('0x31')](function(_0x5cde56){_0x42b36b['count']=_0x5cde56;if(_0x2259a9['query'][_0xd2ec('0x4a')]){_0x271ecc[_0xd2ec('0x4b')]=[{'all':!![]}];}return db['WhatsappAccount'][_0xd2ec('0x4c')](_0x271ecc);})[_0xd2ec('0x31')](function(_0x34217b){_0x42b36b[_0xd2ec('0x4d')]=_0x34217b;return _0x42b36b;})['then'](respondWithFilteredResult(_0x19434a,_0x271ecc))[_0xd2ec('0x4e')](handleError(_0x19434a,null));};exports[_0xd2ec('0x4f')]=function(_0x4da8c4,_0x54e078){var _0x29cd12={'raw':![],'where':{'id':_0x4da8c4['params']['id']},'include':[{'model':db[_0xd2ec('0x50')],'as':_0xd2ec('0x51')}]},_0x42dff7={};_0x42dff7[_0xd2ec('0x42')]=_[_0xd2ec('0x3e')](db[_0xd2ec('0x3a')][_0xd2ec('0x3b')]);_0x42dff7[_0xd2ec('0x3d')]=_[_0xd2ec('0x3e')](_0x4da8c4[_0xd2ec('0x3d')]);_0x42dff7['filters']=_['intersection'](_0x42dff7['model'],_0x42dff7[_0xd2ec('0x3d')]);_0x29cd12[_0xd2ec('0x41')]=_[_0xd2ec('0x40')](_0x42dff7[_0xd2ec('0x42')],qs[_0xd2ec('0x43')](_0x4da8c4[_0xd2ec('0x3d')][_0xd2ec('0x43')]));_0x29cd12[_0xd2ec('0x41')]=_0x29cd12[_0xd2ec('0x41')][_0xd2ec('0x52')]?_0x29cd12['attributes']:_0x42dff7[_0xd2ec('0x42')];if(_0x4da8c4[_0xd2ec('0x3d')][_0xd2ec('0x4a')]){_0x29cd12['include']=[{'all':!![]}];}_0x29cd12=_['merge']({},_0x29cd12,_0x4da8c4['options']);return db[_0xd2ec('0x3a')][_0xd2ec('0x53')](_0x29cd12)['then'](handleEntityNotFound(_0x54e078,null))['then'](respondWithResult(_0x54e078,null))[_0xd2ec('0x4e')](handleError(_0x54e078,null));};exports[_0xd2ec('0x54')]=function(_0x10ad08,_0x2c5396){return db[_0xd2ec('0x3a')]['create'](_0x10ad08[_0xd2ec('0x55')],{})[_0xd2ec('0x31')](function(_0x547b07){var _0x24eef9=_0x10ad08['user']['get']({'plain':!![]});if(!_0x24eef9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x24eef9[_0xd2ec('0x56')]===_0xd2ec('0x57')){var _0x4b07cb=_0x547b07[_0xd2ec('0x33')]({'plain':!![]});var _0x2b649c=_0xd2ec('0x34');return db[_0xd2ec('0x58')]['find']({'where':{'name':_0x2b649c,'userProfileId':_0x24eef9[_0xd2ec('0x59')]},'raw':!![]})['then'](function(_0x3a307c){if(_0x3a307c&&_0x3a307c[_0xd2ec('0x5a')]===0x0){return db[_0xd2ec('0x35')][_0xd2ec('0x54')]({'name':_0x4b07cb['name'],'resourceId':_0x4b07cb['id'],'type':_0x3a307c['name'],'sectionId':_0x3a307c['id']},{})[_0xd2ec('0x31')](function(){return _0x547b07;});}else{return _0x547b07;}})['catch'](function(_0x258cad){logger[_0xd2ec('0x21')](_0xd2ec('0x5b'),_0x258cad);throw _0x258cad;});}return _0x547b07;})[_0xd2ec('0x31')](respondWithResult(_0x2c5396,0xc9))['catch'](handleError(_0x2c5396,null));};exports['update']=function(_0x547593,_0x2022f1){if(_0x547593['body']['id']){delete _0x547593['body']['id'];}return db[_0xd2ec('0x3a')][_0xd2ec('0x53')]({'where':{'id':_0x547593[_0xd2ec('0x5c')]['id']},'include':[{'model':db[_0xd2ec('0x50')],'as':_0xd2ec('0x51')}]})[_0xd2ec('0x31')](handleEntityNotFound(_0x2022f1,null))[_0xd2ec('0x31')](saveUpdates(_0x547593['body'],null))['then'](respondWithResult(_0x2022f1,null))[_0xd2ec('0x4e')](handleError(_0x2022f1,null));};exports[_0xd2ec('0x32')]=function(_0x5292cb,_0x208457){return db[_0xd2ec('0x3a')][_0xd2ec('0x53')]({'where':{'id':_0x5292cb['params']['id']}})[_0xd2ec('0x31')](handleEntityNotFound(_0x208457,null))[_0xd2ec('0x31')](removeEntity(_0x208457,null))[_0xd2ec('0x4e')](handleError(_0x208457,null));};exports[_0xd2ec('0x5d')]=function(_0x57f410,_0x5c9e2b){return db[_0xd2ec('0x3a')]['describe']()[_0xd2ec('0x31')](respondWithResult(_0x5c9e2b,null))['catch'](handleError(_0x5c9e2b,null));};exports[_0xd2ec('0x5e')]=function(_0x78cf7e,_0x28a81e,_0x3486dd){if(_0x78cf7e['body']['id']){delete _0x78cf7e[_0xd2ec('0x55')]['id'];}return db[_0xd2ec('0x3a')][_0xd2ec('0x53')]({'where':{'id':_0x78cf7e['params']['id']}})[_0xd2ec('0x31')](handleEntityNotFound(_0x28a81e,null))['then'](function(_0x4e9346){if(_0x4e9346){_0x78cf7e[_0xd2ec('0x55')]['WhatsappAccountId']=_0x4e9346['id'];return db[_0xd2ec('0x5f')]['create'](_0x78cf7e[_0xd2ec('0x55')]);}})[_0xd2ec('0x31')](respondWithResult(_0x28a81e,null))[_0xd2ec('0x4e')](handleError(_0x28a81e,null));};exports[_0xd2ec('0x60')]=function(_0x4cc8b3,_0x5a1fa5,_0x257ec3){var _0x426557={'raw':![],'where':{}};var _0x4041bc={};var _0x364a94={'count':0x0,'rows':[]};return db[_0xd2ec('0x3a')][_0xd2ec('0x61')]({'where':{'id':_0x4cc8b3[_0xd2ec('0x5c')]['id']}})[_0xd2ec('0x31')](handleEntityNotFound(_0x5a1fa5,null))[_0xd2ec('0x31')](function(_0x319ce4){if(_0x319ce4){_0x4041bc[_0xd2ec('0x42')]=_[_0xd2ec('0x3e')](db[_0xd2ec('0x5f')][_0xd2ec('0x3b')]);_0x4041bc['query']=_[_0xd2ec('0x3e')](_0x4cc8b3[_0xd2ec('0x3d')]);_0x4041bc['filters']=_['intersection'](_0x4041bc[_0xd2ec('0x42')],_0x4041bc[_0xd2ec('0x3d')]);_0x426557[_0xd2ec('0x41')]=_[_0xd2ec('0x40')](_0x4041bc[_0xd2ec('0x42')],qs[_0xd2ec('0x43')](_0x4cc8b3[_0xd2ec('0x3d')][_0xd2ec('0x43')]));_0x426557[_0xd2ec('0x41')]=_0x426557['attributes'][_0xd2ec('0x52')]?_0x426557['attributes']:_0x4041bc[_0xd2ec('0x42')];if(!_0x4cc8b3[_0xd2ec('0x3d')][_0xd2ec('0x62')](_0xd2ec('0x44'))){_0x426557[_0xd2ec('0x2a')]=qs[_0xd2ec('0x2a')](_0x4cc8b3[_0xd2ec('0x3d')][_0xd2ec('0x2a')]);_0x426557[_0xd2ec('0x28')]=qs[_0xd2ec('0x28')](_0x4cc8b3[_0xd2ec('0x3d')][_0xd2ec('0x28')]);}_0x426557[_0xd2ec('0x63')]=qs[_0xd2ec('0x45')](_0x4cc8b3[_0xd2ec('0x3d')]['sort']);_0x426557[_0xd2ec('0x46')]=qs[_0xd2ec('0x3f')](_['pick'](_0x4cc8b3[_0xd2ec('0x3d')],_0x4041bc[_0xd2ec('0x3f')]));_0x426557[_0xd2ec('0x46')][_0xd2ec('0x64')]=_0x319ce4['id'];if(_0x4cc8b3[_0xd2ec('0x3d')][_0xd2ec('0x47')]){_0x426557[_0xd2ec('0x46')]=_['merge'](_0x426557[_0xd2ec('0x46')],{'$or':_[_0xd2ec('0x39')](_0x426557[_0xd2ec('0x41')],function(_0x2640f2){var _0x40b8b0={};_0x40b8b0[_0x2640f2]={'$like':'%'+_0x4cc8b3[_0xd2ec('0x3d')][_0xd2ec('0x47')]+'%'};return _0x40b8b0;})});}_0x426557=_[_0xd2ec('0x48')]({},_0x426557,_0x4cc8b3[_0xd2ec('0x65')]);return db[_0xd2ec('0x5f')][_0xd2ec('0x2b')]({'where':_0x426557[_0xd2ec('0x46')]})[_0xd2ec('0x31')](function(_0x3dd3c5){_0x364a94[_0xd2ec('0x2b')]=_0x3dd3c5;if(_0x4cc8b3[_0xd2ec('0x3d')][_0xd2ec('0x4a')]){_0x426557[_0xd2ec('0x4b')]=[{'all':!![]}];}return db[_0xd2ec('0x5f')][_0xd2ec('0x4c')](_0x426557);})['then'](function(_0x4098a2){_0x364a94[_0xd2ec('0x4d')]=_0x4098a2;return _0x364a94;});}})[_0xd2ec('0x31')](respondWithFilteredResult(_0x5a1fa5,_0x426557))[_0xd2ec('0x4e')](handleError(_0x5a1fa5,null));};exports[_0xd2ec('0x66')]=function(_0x41f1a5,_0x43529d,_0x238674){return db[_0xd2ec('0x3a')][_0xd2ec('0x53')]({'where':{'id':_0x41f1a5[_0xd2ec('0x5c')]['id']}})[_0xd2ec('0x31')](handleEntityNotFound(_0x43529d,null))[_0xd2ec('0x31')](function(_0x2a617d){if(_0x2a617d){return _0x2a617d['removeDispositions'](_0x41f1a5[_0xd2ec('0x3d')][_0xd2ec('0x67')]);}})[_0xd2ec('0x31')](respondWithStatusCode(_0x43529d,null))[_0xd2ec('0x4e')](handleError(_0x43529d,null));};exports[_0xd2ec('0x68')]=function(_0x4e0a6e,_0x2f032f,_0x111d19){if(_0x4e0a6e[_0xd2ec('0x55')]['id']){delete _0x4e0a6e[_0xd2ec('0x55')]['id'];}return db[_0xd2ec('0x3a')]['find']({'where':{'id':_0x4e0a6e[_0xd2ec('0x5c')]['id']}})[_0xd2ec('0x31')](handleEntityNotFound(_0x2f032f,null))['then'](function(_0xa44725){if(_0xa44725){_0x4e0a6e[_0xd2ec('0x55')][_0xd2ec('0x64')]=_0xa44725['id'];return db[_0xd2ec('0x69')][_0xd2ec('0x54')](_0x4e0a6e[_0xd2ec('0x55')]);}})[_0xd2ec('0x31')](respondWithResult(_0x2f032f,null))[_0xd2ec('0x4e')](handleError(_0x2f032f,null));};exports[_0xd2ec('0x6a')]=function(_0x5d68d9,_0x180c31,_0x5ca772){var _0x1d9de7={'raw':![],'where':{}};var _0x358629={};var _0x5df4a4={'count':0x0,'rows':[]};return db[_0xd2ec('0x3a')]['findOne']({'where':{'id':_0x5d68d9[_0xd2ec('0x5c')]['id']}})[_0xd2ec('0x31')](handleEntityNotFound(_0x180c31,null))[_0xd2ec('0x31')](function(_0x4bdf59){if(_0x4bdf59){_0x358629[_0xd2ec('0x42')]=_[_0xd2ec('0x3e')](db[_0xd2ec('0x69')][_0xd2ec('0x3b')]);_0x358629[_0xd2ec('0x3d')]=_[_0xd2ec('0x3e')](_0x5d68d9['query']);_0x358629[_0xd2ec('0x3f')]=_[_0xd2ec('0x40')](_0x358629[_0xd2ec('0x42')],_0x358629[_0xd2ec('0x3d')]);_0x1d9de7[_0xd2ec('0x41')]=_['intersection'](_0x358629[_0xd2ec('0x42')],qs['fields'](_0x5d68d9[_0xd2ec('0x3d')][_0xd2ec('0x43')]));_0x1d9de7[_0xd2ec('0x41')]=_0x1d9de7[_0xd2ec('0x41')]['length']?_0x1d9de7[_0xd2ec('0x41')]:_0x358629[_0xd2ec('0x42')];if(!_0x5d68d9[_0xd2ec('0x3d')][_0xd2ec('0x62')]('nolimit')){_0x1d9de7[_0xd2ec('0x2a')]=qs[_0xd2ec('0x2a')](_0x5d68d9[_0xd2ec('0x3d')][_0xd2ec('0x2a')]);_0x1d9de7['offset']=qs['offset'](_0x5d68d9['query'][_0xd2ec('0x28')]);}_0x1d9de7[_0xd2ec('0x63')]=qs[_0xd2ec('0x45')](_0x5d68d9['query'][_0xd2ec('0x45')]);_0x1d9de7[_0xd2ec('0x46')]=qs['filters'](_[_0xd2ec('0x6b')](_0x5d68d9['query'],_0x358629['filters']));_0x1d9de7[_0xd2ec('0x46')][_0xd2ec('0x64')]=_0x4bdf59['id'];if(_0x5d68d9[_0xd2ec('0x3d')][_0xd2ec('0x47')]){_0x1d9de7['where']=_[_0xd2ec('0x48')](_0x1d9de7[_0xd2ec('0x46')],{'$or':_['map'](_0x1d9de7[_0xd2ec('0x41')],function(_0x32baa8){var _0x33ef84={};_0x33ef84[_0x32baa8]={'$like':'%'+_0x5d68d9[_0xd2ec('0x3d')][_0xd2ec('0x47')]+'%'};return _0x33ef84;})});}_0x1d9de7=_[_0xd2ec('0x48')]({},_0x1d9de7,_0x5d68d9[_0xd2ec('0x65')]);return db['CannedAnswer'][_0xd2ec('0x2b')]({'where':_0x1d9de7[_0xd2ec('0x46')]})[_0xd2ec('0x31')](function(_0x1687d3){_0x5df4a4[_0xd2ec('0x2b')]=_0x1687d3;if(_0x5d68d9['query'][_0xd2ec('0x4a')]){_0x1d9de7[_0xd2ec('0x4b')]=[{'all':!![]}];}return db[_0xd2ec('0x69')][_0xd2ec('0x4c')](_0x1d9de7);})['then'](function(_0x171ede){_0x5df4a4['rows']=_0x171ede;return _0x5df4a4;});}})[_0xd2ec('0x31')](respondWithFilteredResult(_0x180c31,_0x1d9de7))[_0xd2ec('0x4e')](handleError(_0x180c31,null));};exports[_0xd2ec('0x6c')]=function(_0x470fca,_0x1c6b5b,_0x25ee58){return db[_0xd2ec('0x3a')][_0xd2ec('0x53')]({'where':{'id':_0x470fca[_0xd2ec('0x5c')]['id']}})[_0xd2ec('0x31')](handleEntityNotFound(_0x1c6b5b,null))['then'](function(_0x52e147){if(_0x52e147){return _0x52e147[_0xd2ec('0x6c')](_0x470fca['query']['ids']);}})[_0xd2ec('0x31')](respondWithStatusCode(_0x1c6b5b,null))[_0xd2ec('0x4e')](handleError(_0x1c6b5b,null));};exports[_0xd2ec('0x6d')]=function(_0x350d15,_0x28eb40,_0x53b673){return db[_0xd2ec('0x3a')][_0xd2ec('0x53')]({'where':{'id':_0x350d15[_0xd2ec('0x5c')]['id']}})[_0xd2ec('0x31')](handleEntityNotFound(_0x28eb40,null))[_0xd2ec('0x31')](function(_0x2daf38){if(_0x2daf38){return _0x2daf38[_0xd2ec('0x6d')](_0x350d15[_0xd2ec('0x55')]['ids'],_['omit'](_0x350d15[_0xd2ec('0x55')],['ids','id'])||{})[_0xd2ec('0x6e')](function(_0x2d6d12){for(var _0x20ce7e=0x0;_0x20ce7e<_0x350d15['body'][_0xd2ec('0x67')][_0xd2ec('0x52')];_0x20ce7e+=0x1){socket[_0xd2ec('0x6f')]('userWhatsappAccount:save',{'UserId':Number(_0x350d15[_0xd2ec('0x55')][_0xd2ec('0x67')][_0x20ce7e]),'WhatsappAccountId':Number(_0x350d15[_0xd2ec('0x5c')]['id'])});}return _0x2d6d12;});}})[_0xd2ec('0x31')](respondWithResult(_0x28eb40,null))[_0xd2ec('0x4e')](handleError(_0x28eb40,null));};exports[_0xd2ec('0x70')]=function(_0x17cbf0,_0x23f327,_0x2ae1b1){return db[_0xd2ec('0x3a')][_0xd2ec('0x53')]({'where':{'id':_0x17cbf0[_0xd2ec('0x5c')]['id']}})[_0xd2ec('0x31')](handleEntityNotFound(_0x23f327,null))[_0xd2ec('0x31')](function(_0x286772){if(_0x286772){return _0x286772[_0xd2ec('0x70')](_0x17cbf0[_0xd2ec('0x3d')]['ids'])[_0xd2ec('0x31')](function(){if(_['isArray'](_0x17cbf0[_0xd2ec('0x3d')][_0xd2ec('0x67')])){for(var _0x2ce5c4=0x0;_0x2ce5c4<_0x17cbf0[_0xd2ec('0x3d')][_0xd2ec('0x67')][_0xd2ec('0x52')];_0x2ce5c4+=0x1){socket[_0xd2ec('0x6f')]('userWhatsappAccount:remove',{'UserId':Number(_0x17cbf0[_0xd2ec('0x3d')][_0xd2ec('0x67')][_0x2ce5c4]),'WhatsappAccountId':Number(_0x17cbf0['params']['id'])});}}else{socket[_0xd2ec('0x6f')]('userWhatsappAccount:remove',{'UserId':Number(_0x17cbf0[_0xd2ec('0x3d')][_0xd2ec('0x67')]),'WhatsappAccountId':Number(_0x17cbf0[_0xd2ec('0x5c')]['id'])});}});}})['then'](respondWithStatusCode(_0x23f327,null))[_0xd2ec('0x4e')](handleError(_0x23f327,null));};exports[_0xd2ec('0x71')]=function(_0x4acde7,_0x51c1f8,_0x4a0bfc){var _0x27ac4e={};var _0xd7c5bc={};var _0xbbd3d0;var _0x258bd7;return db[_0xd2ec('0x3a')][_0xd2ec('0x61')]({'where':{'id':_0x4acde7['params']['id']}})[_0xd2ec('0x31')](handleEntityNotFound(_0x51c1f8,null))[_0xd2ec('0x31')](function(_0x3c93e9){if(_0x3c93e9){_0xbbd3d0=_0x3c93e9;_0xd7c5bc[_0xd2ec('0x42')]=_[_0xd2ec('0x3e')](db[_0xd2ec('0x72')][_0xd2ec('0x3b')]);_0xd7c5bc['query']=_['keys'](_0x4acde7[_0xd2ec('0x3d')]);_0xd7c5bc[_0xd2ec('0x3f')]=_[_0xd2ec('0x40')](_0xd7c5bc['model'],_0xd7c5bc[_0xd2ec('0x3d')]);_0x27ac4e[_0xd2ec('0x41')]=_['intersection'](_0xd7c5bc[_0xd2ec('0x42')],qs['fields'](_0x4acde7[_0xd2ec('0x3d')][_0xd2ec('0x43')]));_0x27ac4e['attributes']=_0x27ac4e['attributes']['length']?_0x27ac4e[_0xd2ec('0x41')]:_0xd7c5bc[_0xd2ec('0x42')];_0x27ac4e['order']=qs[_0xd2ec('0x45')](_0x4acde7[_0xd2ec('0x3d')][_0xd2ec('0x45')]);_0x27ac4e[_0xd2ec('0x46')]=qs[_0xd2ec('0x3f')](_[_0xd2ec('0x6b')](_0x4acde7['query'],_0xd7c5bc['filters']));if(_0x4acde7[_0xd2ec('0x3d')][_0xd2ec('0x47')]){_0x27ac4e[_0xd2ec('0x46')]=_[_0xd2ec('0x48')](_0x27ac4e[_0xd2ec('0x46')],{'$or':_[_0xd2ec('0x39')](_0x27ac4e[_0xd2ec('0x41')],function(_0x4f0799){var _0x47b22b={};_0x47b22b[_0x4f0799]={'$like':'%'+_0x4acde7[_0xd2ec('0x3d')][_0xd2ec('0x47')]+'%'};return _0x47b22b;})});}_0x27ac4e=_[_0xd2ec('0x48')]({},_0x27ac4e,_0x4acde7[_0xd2ec('0x65')]);return _0xbbd3d0[_0xd2ec('0x71')](_0x27ac4e);}})[_0xd2ec('0x31')](function(_0x46f8a9){if(_0x46f8a9){_0x258bd7=_0x46f8a9[_0xd2ec('0x52')];if(!_0x4acde7['query']['hasOwnProperty'](_0xd2ec('0x44'))){_0x27ac4e['limit']=qs[_0xd2ec('0x2a')](_0x4acde7[_0xd2ec('0x3d')][_0xd2ec('0x2a')]);_0x27ac4e['offset']=qs[_0xd2ec('0x28')](_0x4acde7[_0xd2ec('0x3d')]['offset']);}return _0xbbd3d0['getAgents'](_0x27ac4e);}})[_0xd2ec('0x31')](function(_0x573292){if(_0x573292){return _0x573292?{'count':_0x258bd7,'rows':_0x573292}:null;}})[_0xd2ec('0x31')](respondWithResult(_0x51c1f8,null))[_0xd2ec('0x4e')](handleError(_0x51c1f8,null));};exports[_0xd2ec('0x73')]=function(_0x1b2af1,_0x47d4de,_0x21c7e1){return db['WhatsappAccount'][_0xd2ec('0x61')]({'where':{'id':_0x1b2af1[_0xd2ec('0x5c')]['id']}})[_0xd2ec('0x31')](handleEntityNotFound(_0x47d4de,null))['then'](function(_0x232c84){if(_0x232c84){return db['sequelize'][_0xd2ec('0x74')](function(_0x324005){return db[_0xd2ec('0x75')][_0xd2ec('0x32')]({'where':{'WhatsappAccountId':_0x1b2af1['params']['id']},'transaction':_0x324005})[_0xd2ec('0x31')](function(_0x235c79){var _0x476dab=_[_0xd2ec('0x39')](_0x1b2af1[_0xd2ec('0x55')],function(_0x2684e1){_0x2684e1[_0xd2ec('0x64')]=_0x1b2af1['params']['id'];return _0x2684e1;});return db[_0xd2ec('0x75')]['bulkCreate'](_0x476dab,{'transaction':_0x324005});});})[_0xd2ec('0x31')](function(){return db[_0xd2ec('0x75')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x1b2af1[_0xd2ec('0x5c')]['id']},'order':'priority'});});}})['then'](respondWithResult(_0x47d4de,null))[_0xd2ec('0x4e')](handleError(_0x47d4de,null));};exports['getApplications']=function(_0x1ecff0,_0x4ef3b8,_0x10f14d){var _0x27590c={};var _0x1c1bbb={};var _0x3eb29a;var _0x37d262;return db[_0xd2ec('0x3a')][_0xd2ec('0x61')]({'where':{'id':_0x1ecff0['params']['id']}})[_0xd2ec('0x31')](handleEntityNotFound(_0x4ef3b8,null))[_0xd2ec('0x31')](function(_0x44647f){if(_0x44647f){_0x3eb29a=_0x44647f;_0x1c1bbb[_0xd2ec('0x42')]=_[_0xd2ec('0x3e')](db[_0xd2ec('0x75')]['rawAttributes']);_0x1c1bbb[_0xd2ec('0x3d')]=_[_0xd2ec('0x3e')](_0x1ecff0[_0xd2ec('0x3d')]);_0x1c1bbb[_0xd2ec('0x3f')]=_[_0xd2ec('0x40')](_0x1c1bbb[_0xd2ec('0x42')],_0x1c1bbb[_0xd2ec('0x3d')]);_0x27590c[_0xd2ec('0x41')]=_['intersection'](_0x1c1bbb['model'],qs[_0xd2ec('0x43')](_0x1ecff0[_0xd2ec('0x3d')][_0xd2ec('0x43')]));_0x27590c['attributes']=_0x27590c[_0xd2ec('0x41')][_0xd2ec('0x52')]?_0x27590c[_0xd2ec('0x41')]:_0x1c1bbb[_0xd2ec('0x42')];_0x27590c[_0xd2ec('0x63')]=qs[_0xd2ec('0x45')](_0x1ecff0[_0xd2ec('0x3d')][_0xd2ec('0x45')]);_0x27590c[_0xd2ec('0x46')]=qs[_0xd2ec('0x3f')](_['pick'](_0x1ecff0[_0xd2ec('0x3d')],_0x1c1bbb[_0xd2ec('0x3f')]));if(_0x1ecff0[_0xd2ec('0x3d')][_0xd2ec('0x47')]){_0x27590c[_0xd2ec('0x46')]=_[_0xd2ec('0x48')](_0x27590c[_0xd2ec('0x46')],{'$or':_[_0xd2ec('0x39')](_0x27590c['attributes'],function(_0x44814b){var _0x3e447e={};_0x3e447e[_0x44814b]={'$like':'%'+_0x1ecff0[_0xd2ec('0x3d')][_0xd2ec('0x47')]+'%'};return _0x3e447e;})});}_0x27590c=_[_0xd2ec('0x48')]({},_0x27590c,_0x1ecff0[_0xd2ec('0x65')]);return _0x3eb29a[_0xd2ec('0x76')](_0x27590c);}})['then'](function(_0x4eb708){if(_0x4eb708){_0x37d262=_0x4eb708[_0xd2ec('0x52')];if(!_0x1ecff0[_0xd2ec('0x3d')][_0xd2ec('0x62')](_0xd2ec('0x44'))){_0x27590c[_0xd2ec('0x2a')]=qs[_0xd2ec('0x2a')](_0x1ecff0[_0xd2ec('0x3d')][_0xd2ec('0x2a')]);_0x27590c[_0xd2ec('0x28')]=qs['offset'](_0x1ecff0[_0xd2ec('0x3d')]['offset']);}return _0x3eb29a['getApplications'](_0x27590c);}})['then'](function(_0x13bc06){if(_0x13bc06){return _0x13bc06?{'count':_0x37d262,'rows':_0x13bc06}:null;}})[_0xd2ec('0x31')](respondWithResult(_0x4ef3b8,null))['catch'](handleError(_0x4ef3b8,null));};exports['notify']=function(_0x520ea6,_0x3ff033,_0x11a903){var _0x3b1872={'channel':_0xd2ec('0x77')};var _0x47b878=[];var _0x437042=[];var _0x4326ff={};return db['WhatsappAccount'][_0xd2ec('0x53')]({'where':{'id':_0x520ea6['params']['id']},'include':[{'model':db[_0xd2ec('0x75')],'as':'Applications'}]})[_0xd2ec('0x31')](handleEntityNotFound(_0x3ff033,null))[_0xd2ec('0x31')](function(_0xa08440){_0x3b1872[_0xd2ec('0x78')]=_0xa08440;_0x3b1872['applications']=_[_0xd2ec('0x79')](_0xa08440[_0xd2ec('0x7a')],[_0xd2ec('0x7b')],['asc']);if(_0x3b1872['account']['Applications']){delete _0x3b1872['account'][_0xd2ec('0x7a')];}return db[_0xd2ec('0x7c')][_0xd2ec('0x5d')]();})[_0xd2ec('0x31')](function(_0x1719af){if(!_0x1719af){throw new db[(_0xd2ec('0x7d'))]['ValidationError']('no\x20available\x20attributes');}_0x47b878=_[_0xd2ec('0x7e')](_[_0xd2ec('0x3e')](_0x1719af),['createdAt',_0xd2ec('0x7f')]);_0x437042=_[_0xd2ec('0x7e')](_[_0xd2ec('0x3e')](_0x1719af),[_0xd2ec('0x80'),_0xd2ec('0x7f'),_0xd2ec('0x81'),_0xd2ec('0x82')]);_0x3b1872['body']={'mapKey':_0xd2ec('0x83')};if(_0x3b1872['account'][_0xd2ec('0x3c')]&&_0x3b1872[_0xd2ec('0x78')][_0xd2ec('0x3c')]===_0xd2ec('0x84')){_0x3b1872['body'][_0xd2ec('0x85')]=_0x520ea6['body'][_0xd2ec('0x86')]['replace'](_0xd2ec('0x87'),'');_0x3b1872[_0xd2ec('0x55')][_0xd2ec('0x55')]=_0x520ea6['body'][_0xd2ec('0x88')];_0x3b1872[_0xd2ec('0x55')][_0xd2ec('0x89')]=_0x520ea6[_0xd2ec('0x55')]['MessageSid'];}if(_0x3b1872['body']['id']){delete _0x3b1872['body']['id'];}if(_['isNil'](_0x3b1872[_0xd2ec('0x55')][_0xd2ec('0x85')])){throw new db[(_0xd2ec('0x7d'))][(_0xd2ec('0x8a'))](_0xd2ec('0x8b'));}if(_[_0xd2ec('0x8c')](_0x3b1872[_0xd2ec('0x55')][_0xd2ec('0x55')])||_0x3b1872[_0xd2ec('0x55')][_0xd2ec('0x55')]===''){throw new db[(_0xd2ec('0x7d'))][(_0xd2ec('0x8a'))](_0xd2ec('0x8d'));}if(_[_0xd2ec('0x8c')](_0x3b1872[_0xd2ec('0x55')][_0xd2ec('0x8e')])){throw new db[(_0xd2ec('0x7d'))][(_0xd2ec('0x8a'))](_0xd2ec('0x8f')+_0x437042);}if(!_[_0xd2ec('0x90')](_0x437042,_0x3b1872['body']['mapKey'])){throw new db['Sequelize']['ValidationError'](_0xd2ec('0x91')+_0x437042);}_0x4326ff[_0x3b1872[_0xd2ec('0x55')][_0xd2ec('0x8e')]]=_0x3b1872[_0xd2ec('0x55')][_0xd2ec('0x85')];return db[_0xd2ec('0x92')][_0xd2ec('0x53')]({'where':{'id':_0x3b1872[_0xd2ec('0x78')]['ListId']},'include':[{'model':db[_0xd2ec('0x7c')],'as':'Contacts','where':_0x4326ff,'limit':0x1,'order':[[_0xd2ec('0x7f'),_0xd2ec('0x93')]]}]});})[_0xd2ec('0x31')](handleEntityNotFound(_0x3ff033,null))['then'](function(_0x3aea09){if(_0x3aea09){_0x3b1872[_0xd2ec('0x94')]=_[_0xd2ec('0x95')](_0x3aea09,[_0xd2ec('0x96')]);if(_0x3aea09[_0xd2ec('0x96')][_0xd2ec('0x52')]){return _0x3aea09[_0xd2ec('0x96')][0x0];}var _0x4a818b=_[_0xd2ec('0x14')](_0x3b1872['body'],{'firstName':_0x3b1872[_0xd2ec('0x55')][_0xd2ec('0x85')],'ListId':_0x3aea09['id']});_0x4a818b[_0x3b1872[_0xd2ec('0x55')]['mapKey']]=_0x3b1872[_0xd2ec('0x55')]['from'];return db[_0xd2ec('0x7c')][_0xd2ec('0x54')](_0x4a818b,{'fields':_0x47b878,'raw':!![]});}})[_0xd2ec('0x31')](handleEntityNotFound(_0x3ff033,null))[_0xd2ec('0x31')](function(_0x484b52){if(_0x484b52){_0x3b1872[_0xd2ec('0x97')]=_0x484b52;var _0x539796={'ContactId':_0x484b52['id'],'phone':_0x3b1872['body'][_0xd2ec('0x85')],'WhatsappAccountId':_0x520ea6[_0xd2ec('0x5c')]['id']};var _0x3894f5={'ContactId':_0x484b52['id'],'WhatsappAccountId':_0x520ea6['params']['id'],'closed':![]};return db['WhatsappInteraction']['find']({'where':_0x3894f5})[_0xd2ec('0x31')](function(_0x4ddfb1){if(_0x4ddfb1){return[_0x4ddfb1,![]];}return db[_0xd2ec('0x98')][_0xd2ec('0x54')](_0x539796)[_0xd2ec('0x31')](function(_0x8b31f6){return[_0x8b31f6,!![]];});});}})[_0xd2ec('0x6e')](function(_0x2f3c55,_0x2776be){_0x3b1872['interaction']=_0x2f3c55['get']({'plain':!![]});_0x3b1872[_0xd2ec('0x99')][_0xd2ec('0x9a')]=![];if(_0x2776be){if(_0x3b1872['account']['autoclose']){_0x3b1872[_0xd2ec('0x9b')]['push']({'id':0x0,'priority':_0x3b1872[_0xd2ec('0x9b')][_0xd2ec('0x52')]+0x1,'app':_0xd2ec('0x9c'),'appdata':_0xd2ec('0x9d'),'interval':_0xd2ec('0x9e')});}_0x3b1872[_0xd2ec('0x99')][_0xd2ec('0x9a')]=!![];}return db[_0xd2ec('0x9f')][_0xd2ec('0x54')]({'phone':_0x3b1872['body']['from'],'messageId':_0x3b1872[_0xd2ec('0x55')][_0xd2ec('0x89')],'body':_0x3b1872[_0xd2ec('0x55')][_0xd2ec('0x55')],'WhatsappAccountId':_0x520ea6['params']['id'],'WhatsappInteractionId':_0x2f3c55['id'],'direction':'in','ContactId':_0x2f3c55[_0xd2ec('0xa0')],'AttachmentId':_0x3b1872[_0xd2ec('0x55')][_0xd2ec('0xa1')]});})[_0xd2ec('0x31')](function(_0x919f08){_0x3b1872[_0xd2ec('0x23')]=_0x919f08;if(_0x3b1872['interaction']['UserId']){return db[_0xd2ec('0x72')][_0xd2ec('0x53')]({'attributes':['id',_0xd2ec('0x36')],'where':{'id':_0x3b1872[_0xd2ec('0x99')][_0xd2ec('0xa2')]}})[_0xd2ec('0x31')](function(_0xea0131){if(_0xea0131){_0x3b1872[_0xd2ec('0x9b')]['unshift']({'id':0x0,'priority':0x0,'app':_0xd2ec('0xa3'),'appdata':_0xea0131[_0xd2ec('0x36')]+','+(_0x3b1872[_0xd2ec('0x78')]['waitForTheAssignedAgent']||0xa),'interval':_0xd2ec('0x9e')});}return respondWithRpcPromise(_0xd2ec('0xa4'),'startRouting',_0x3b1872);});}return respondWithRpcPromise(_0xd2ec('0xa4'),_0xd2ec('0xa5'),_0x3b1872);})[_0xd2ec('0x31')](function(_0x1ec807){if(_0x1ec807){var _0x4f4737=0xc8;var _0xe82016='receiveMessage';logger[_0xd2ec('0x1c')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0xe82016,_0x4f4737,'entity\x20found');logger[_0xd2ec('0x1f')](_0xd2ec('0xa6'),_0xe82016,_0x4f4737,_0xd2ec('0xa7'),JSON[_0xd2ec('0x20')](_0x1ec807));if(_0x3b1872[_0xd2ec('0x78')][_0xd2ec('0x3c')]==='twilio'){return _0x3ff033['status'](_0x4f4737)[_0xd2ec('0x2c')]('Content-Type',_0xd2ec('0xa8'))[_0xd2ec('0x37')](_0xd2ec('0xa9'));}else{return _0x3ff033[_0xd2ec('0x27')](_0x4f4737)[_0xd2ec('0xaa')](_0x1ec807);}}})[_0xd2ec('0x4e')](handleError(_0x3ff033,null));};exports[_0xd2ec('0x37')]=function(_0x3178b6,_0x41c7e3,_0x4df48c){var _0x52db89,_0x1b6983,_0x2fd123;if(_[_0xd2ec('0x8c')](_0x3178b6[_0xd2ec('0x55')][_0xd2ec('0x55')])||_0x3178b6['body']['body']===''){throw new db[(_0xd2ec('0x7d'))]['ValidationError'](_0xd2ec('0x8d'));}if(_['isNil'](_0x3178b6['body']['to'])){throw new db[(_0xd2ec('0x7d'))]['ValidationError'](_0xd2ec('0xab'));}_0x52db89=_0x3178b6[_0xd2ec('0x55')]['to'];return db['WhatsappAccount']['find']({'where':{'id':_0x3178b6['params']['id']},'include':[{'model':db[_0xd2ec('0x92')],'as':_0xd2ec('0xac'),'include':[{'model':db[_0xd2ec('0x7c')],'as':_0xd2ec('0x96'),'where':{'mobile':_0x52db89},'limit':0x1,'order':[[_0xd2ec('0x7f'),'DESC']]}]}]})[_0xd2ec('0x31')](handleEntityNotFound(_0x41c7e3,null))[_0xd2ec('0x31')](function(_0x51f52d){if(_0x51f52d&&_0x51f52d[_0xd2ec('0xac')]){_0x1b6983=_0x51f52d['get']({'plain':!![]});if(_0x1b6983[_0xd2ec('0xac')]&&_0x1b6983[_0xd2ec('0xac')]['Contacts'][_0xd2ec('0x52')]){return _0x1b6983[_0xd2ec('0xac')]['Contacts'][0x0];}return db[_0xd2ec('0x7c')][_0xd2ec('0x54')](_[_0xd2ec('0x14')](_0x3178b6[_0xd2ec('0x55')],{'firstName':_0x52db89,'mobile':_0x52db89,'phone':_0x52db89,'ListId':_0x1b6983[_0xd2ec('0x82')]}));}})['then'](handleEntityNotFound(_0x41c7e3,null))[_0xd2ec('0x31')](function(_0x161baf){if(_0x161baf){_0x2fd123=_0x161baf;return db[_0xd2ec('0x98')]['find']({'where':{'ContactId':_0x2fd123['id'],'closed':![],'WhatsappAccountId':_0x1b6983['id']}})[_0xd2ec('0x31')](function(_0x534885){if(_0x534885){return[_0x534885,![]];}return db[_0xd2ec('0x98')][_0xd2ec('0x54')]({'UserId':_0x3178b6[_0xd2ec('0x57')]['id'],'ContactId':_0x2fd123['id'],'WhatsappAccountId':_0x1b6983['id'],'phone':_0x52db89,'firstMsgDirection':'out','Messages':[_['merge'](_0x3178b6[_0xd2ec('0x55')],{'read':![],'body':_0x3178b6[_0xd2ec('0x55')][_0xd2ec('0x55')],'phone':_0x52db89,'WhatsappAccountId':_0x1b6983['id'],'UserId':_0x3178b6[_0xd2ec('0x57')]['id'],'ContactId':_0x2fd123['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0xd2ec('0xad')}]})[_0xd2ec('0x31')](function(_0x47b23d){return[_0x47b23d,!![]];});});}})[_0xd2ec('0x6e')](function(_0x389c31,_0x2704f5){if(_0x2704f5){return _0x389c31;}return db[_0xd2ec('0x9f')][_0xd2ec('0x54')](_[_0xd2ec('0x48')](_0x3178b6[_0xd2ec('0x55')],{'read':![],'body':_0x3178b6[_0xd2ec('0x55')][_0xd2ec('0x55')],'phone':_0x52db89,'WhatsappAccountId':_0x1b6983['id'],'WhatsappInteractionId':_0x389c31['id'],'UserId':_0x3178b6[_0xd2ec('0x57')]['id'],'ContactId':_0x2fd123['id']}))[_0xd2ec('0x31')](function(_0x183dfd){_0x389c31[_0xd2ec('0xae')][_0xd2ec('0xad')]=[];_0x389c31[_0xd2ec('0xae')][_0xd2ec('0xad')][_0xd2ec('0xaf')](_0x183dfd['dataValues']);return _0x389c31;});})[_0xd2ec('0x31')](respondWithResult(_0x41c7e3,null))[_0xd2ec('0x4e')](handleError(_0x41c7e3,null));};
\ No newline at end of file
index 867cbff..18bea4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a45=['exports','events','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','remove'];(function(_0x5283ed,_0x4271a9){var _0x3c68c7=function(_0xe02c50){while(--_0xe02c50){_0x5283ed['push'](_0x5283ed['shift']());}};_0x3c68c7(++_0x4271a9);}(_0x8a45,0xc9));var _0x58a4=function(_0x1360c0,_0x50da6d){_0x1360c0=_0x1360c0-0x0;var _0x2777af=_0x8a45[_0x1360c0];return _0x2777af;};'use strict';var EventEmitter=require(_0x58a4('0x0'));var WhatsappAccount=require(_0x58a4('0x1'))['db'][_0x58a4('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x58a4('0x3')](0x0);var events={'afterCreate':_0x58a4('0x4'),'afterUpdate':_0x58a4('0x5'),'afterDestroy':_0x58a4('0x6')};function emitEvent(_0x11d908){return function(_0x13f29c,_0x5d9fff,_0x5b7b03){WhatsappAccountEvents['emit'](_0x11d908+':'+_0x13f29c['id'],_0x13f29c);WhatsappAccountEvents['emit'](_0x11d908,_0x13f29c);_0x5b7b03(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module[_0x58a4('0x7')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0x4508=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events','WhatsappAccount'];(function(_0x21be90,_0x56bc13){var _0x25d538=function(_0x4304cf){while(--_0x4304cf){_0x21be90['push'](_0x21be90['shift']());}};_0x25d538(++_0x56bc13);}(_0x4508,0xa9));var _0x8450=function(_0x4d4812,_0x425f56){_0x4d4812=_0x4d4812-0x0;var _0x511500=_0x4508[_0x4d4812];return _0x511500;};'use strict';var EventEmitter=require(_0x8450('0x0'));var WhatsappAccount=require('../../mysqldb')['db'][_0x8450('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x8450('0x2')](0x0);var events={'afterCreate':_0x8450('0x3'),'afterUpdate':_0x8450('0x4'),'afterDestroy':_0x8450('0x5')};function emitEvent(_0x5ad5e8){return function(_0x364516,_0x1764c1,_0x44a4e1){WhatsappAccountEvents[_0x8450('0x6')](_0x5ad5e8+':'+_0x364516['id'],_0x364516);WhatsappAccountEvents['emit'](_0x5ad5e8,_0x364516);_0x44a4e1(null);};}for(var e in events){if(events[_0x8450('0x7')](e)){var event=events[e];WhatsappAccount[_0x8450('0x8')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index 5ab4f0c..4c97444 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb990=['bluebird','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','whatsapp_accounts','lodash','../../config/logger'];(function(_0xb3b452,_0x582e8e){var _0x238983=function(_0x3bc866){while(--_0x3bc866){_0xb3b452['push'](_0xb3b452['shift']());}};_0x238983(++_0x582e8e);}(_0xb990,0x174));var _0x0b99=function(_0x542e8a,_0x47ccf7){_0x542e8a=_0x542e8a-0x0;var _0xc40770=_0xb990[_0x542e8a];return _0xc40770;};'use strict';var _=require(_0x0b99('0x0'));var util=require('util');var logger=require(_0x0b99('0x1'))('api');var moment=require('moment');var BPromise=require(_0x0b99('0x2'));var rp=require(_0x0b99('0x3'));var fs=require('fs');var path=require(_0x0b99('0x4'));var rimraf=require(_0x0b99('0x5'));var config=require(_0x0b99('0x6'));var attributes=require(_0x0b99('0x7'));module[_0x0b99('0x8')]=function(_0x4d788d,_0x444c5c){return _0x4d788d[_0x0b99('0x9')]('WhatsappAccount',attributes,{'tableName':_0x0b99('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x355c=['moment','bluebird','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','WhatsappAccount','whatsapp_accounts','lodash','../../config/logger','api'];(function(_0x58415f,_0x2b7f59){var _0x27c5dd=function(_0x300f5f){while(--_0x300f5f){_0x58415f['push'](_0x58415f['shift']());}};_0x27c5dd(++_0x2b7f59);}(_0x355c,0x75));var _0xc355=function(_0x2da357,_0x1f9b2f){_0x2da357=_0x2da357-0x0;var _0x138fdd=_0x355c[_0x2da357];return _0x138fdd;};'use strict';var _=require(_0xc355('0x0'));var util=require('util');var logger=require(_0xc355('0x1'))(_0xc355('0x2'));var moment=require(_0xc355('0x3'));var BPromise=require(_0xc355('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc355('0x5'));var rimraf=require(_0xc355('0x6'));var config=require(_0xc355('0x7'));var attributes=require(_0xc355('0x8'));module[_0xc355('0x9')]=function(_0x31155f,_0x38f8ce){return _0x31155f['define'](_0xc355('0xa'),attributes,{'tableName':_0xc355('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8b15a53..3783071 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2be1=['defaults','localhost','socket.io-emitter','register','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','where','attributes','map','include','model','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x2be1,0xd3));var _0x12be=function(_0x27d8bc,_0x19e010){_0x27d8bc=_0x27d8bc-0x0;var _0x4b04cb=_0x2be1[_0x27d8bc];return _0x4b04cb;};'use strict';var _=require(_0x12be('0x0'));var util=require(_0x12be('0x1'));var moment=require(_0x12be('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x12be('0x3'));var db=require(_0x12be('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x12be('0x5'))(_0x12be('0x6'));var config=require(_0x12be('0x7'));var jayson=require(_0x12be('0x8'));var client=jayson[_0x12be('0x9')]['http']({'port':0x232a});config[_0x12be('0xa')]=_[_0x12be('0xb')](config[_0x12be('0xa')],{'host':_0x12be('0xc'),'port':0x18eb});var socket=require(_0x12be('0xd'))(new Redis(config[_0x12be('0xa')]));require('./whatsappAccount.socket')[_0x12be('0xe')](socket);function respondWithRpcPromise(_0x38e289,_0x3f1193,_0x3749c5){return new BPromise(function(_0x4e4efe,_0x55ae08){return client[_0x12be('0xf')](_0x38e289,_0x3749c5)[_0x12be('0x10')](function(_0x5a88f7){logger[_0x12be('0x11')](_0x12be('0x12'),_0x3f1193,_0x12be('0x13'));logger[_0x12be('0x14')](_0x12be('0x15'),_0x3f1193,_0x12be('0x13'),JSON[_0x12be('0x16')](_0x5a88f7));if(_0x5a88f7[_0x12be('0x17')]){if(_0x5a88f7[_0x12be('0x17')][_0x12be('0x18')]===0x1f4){logger[_0x12be('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x3f1193,_0x5a88f7[_0x12be('0x17')][_0x12be('0x19')]);return _0x55ae08(_0x5a88f7['error'][_0x12be('0x19')]);}logger[_0x12be('0x17')](_0x12be('0x12'),_0x3f1193,_0x5a88f7['error'][_0x12be('0x19')]);return _0x4e4efe(_0x5a88f7[_0x12be('0x17')]['message']);}else{logger[_0x12be('0x11')](_0x12be('0x12'),_0x3f1193,_0x12be('0x13'));_0x4e4efe(_0x5a88f7[_0x12be('0x1a')][_0x12be('0x19')]);}})[_0x12be('0x1b')](function(_0x2f4646){logger[_0x12be('0x17')](_0x12be('0x12'),_0x3f1193,_0x2f4646);_0x55ae08(_0x2f4646);});});}exports[_0x12be('0x1c')]=function(_0x37ede2){var _0x4f5002=this;return new Promise(function(_0xf0e5ba,_0x18d6ea){return db[_0x12be('0x1d')][_0x12be('0x1e')]({'raw':_0x37ede2[_0x12be('0x1f')]?_0x37ede2['options']['raw']===undefined?!![]:![]:!![],'where':_0x37ede2[_0x12be('0x1f')]?_0x37ede2[_0x12be('0x1f')][_0x12be('0x20')]||null:null,'attributes':_0x37ede2[_0x12be('0x1f')]?_0x37ede2[_0x12be('0x1f')][_0x12be('0x21')]||null:null,'include':_0x37ede2[_0x12be('0x1f')]?_0x37ede2[_0x12be('0x1f')]['include']?_[_0x12be('0x22')](_0x37ede2[_0x12be('0x1f')][_0x12be('0x23')],function(_0x34f7da){return{'model':db[_0x34f7da[_0x12be('0x24')]],'as':_0x34f7da['as'],'attributes':_0x34f7da[_0x12be('0x21')],'include':_0x34f7da[_0x12be('0x23')]?_[_0x12be('0x22')](_0x34f7da[_0x12be('0x23')],function(_0x444540){return{'model':db[_0x444540[_0x12be('0x24')]],'as':_0x444540['as'],'attributes':_0x444540[_0x12be('0x21')],'include':_0x444540[_0x12be('0x23')]?_[_0x12be('0x22')](_0x444540[_0x12be('0x23')],function(_0x4eda2a){return{'model':db[_0x4eda2a['model']],'as':_0x4eda2a['as'],'attributes':_0x4eda2a[_0x12be('0x21')]};}):[]};}):[]};}):[]:[]})[_0x12be('0x10')](function(_0x585b0a){logger[_0x12be('0x11')]('ShowWhatsappAccount',_0x37ede2);logger[_0x12be('0x14')](_0x12be('0x1c'),_0x37ede2,JSON[_0x12be('0x16')](_0x585b0a));_0xf0e5ba(_0x585b0a);})['catch'](function(_0x524328){logger[_0x12be('0x17')]('ShowWhatsappAccount',_0x524328['message'],_0x37ede2);_0x18d6ea(_0x4f5002['error'](0x1f4,_0x524328[_0x12be('0x19')]));});});};
\ No newline at end of file
+var _0xd345=['code','message','info','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','where','attributes','include','map','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','redis','defaults','socket.io-emitter','./whatsappAccount.socket','request','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2e41e2,_0x4e7250){var _0x2844d6=function(_0x28ce24){while(--_0x28ce24){_0x2e41e2['push'](_0x2e41e2['shift']());}};_0x2844d6(++_0x4e7250);}(_0xd345,0xe6));var _0x5d34=function(_0x372a22,_0x554f8d){_0x372a22=_0x372a22-0x0;var _0x1af313=_0xd345[_0x372a22];return _0x1af313;};'use strict';var _=require(_0x5d34('0x0'));var util=require(_0x5d34('0x1'));var moment=require(_0x5d34('0x2'));var BPromise=require(_0x5d34('0x3'));var rs=require(_0x5d34('0x4'));var fs=require('fs');var Redis=require(_0x5d34('0x5'));var db=require(_0x5d34('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5d34('0x7'))('rpc');var config=require(_0x5d34('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5d34('0x9')][_0x5d34('0xa')]({'port':0x232a});config[_0x5d34('0xb')]=_[_0x5d34('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5d34('0xd'))(new Redis(config[_0x5d34('0xb')]));require(_0x5d34('0xe'))['register'](socket);function respondWithRpcPromise(_0x3a8b25,_0x32cf3c,_0x3b8938){return new BPromise(function(_0x3763e5,_0x37971d){return client[_0x5d34('0xf')](_0x3a8b25,_0x3b8938)['then'](function(_0x19c799){logger['info'](_0x5d34('0x10'),_0x32cf3c,_0x5d34('0x11'));logger[_0x5d34('0x12')](_0x5d34('0x13'),_0x32cf3c,_0x5d34('0x11'),JSON[_0x5d34('0x14')](_0x19c799));if(_0x19c799[_0x5d34('0x15')]){if(_0x19c799[_0x5d34('0x15')][_0x5d34('0x16')]===0x1f4){logger[_0x5d34('0x15')](_0x5d34('0x10'),_0x32cf3c,_0x19c799[_0x5d34('0x15')][_0x5d34('0x17')]);return _0x37971d(_0x19c799['error'][_0x5d34('0x17')]);}logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x32cf3c,_0x19c799[_0x5d34('0x15')][_0x5d34('0x17')]);return _0x3763e5(_0x19c799[_0x5d34('0x15')]['message']);}else{logger[_0x5d34('0x18')](_0x5d34('0x10'),_0x32cf3c,'request\x20sent');_0x3763e5(_0x19c799[_0x5d34('0x19')][_0x5d34('0x17')]);}})[_0x5d34('0x1a')](function(_0x2c0da0){logger[_0x5d34('0x15')](_0x5d34('0x10'),_0x32cf3c,_0x2c0da0);_0x37971d(_0x2c0da0);});});}exports[_0x5d34('0x1b')]=function(_0x3bd793){var _0x26410b=this;return new Promise(function(_0x355fc2,_0x5e407e){return db[_0x5d34('0x1c')][_0x5d34('0x1d')]({'raw':_0x3bd793[_0x5d34('0x1e')]?_0x3bd793['options']['raw']===undefined?!![]:![]:!![],'where':_0x3bd793['options']?_0x3bd793[_0x5d34('0x1e')][_0x5d34('0x1f')]||null:null,'attributes':_0x3bd793[_0x5d34('0x1e')]?_0x3bd793[_0x5d34('0x1e')][_0x5d34('0x20')]||null:null,'include':_0x3bd793[_0x5d34('0x1e')]?_0x3bd793[_0x5d34('0x1e')][_0x5d34('0x21')]?_[_0x5d34('0x22')](_0x3bd793[_0x5d34('0x1e')][_0x5d34('0x21')],function(_0x22aac5){return{'model':db[_0x22aac5[_0x5d34('0x23')]],'as':_0x22aac5['as'],'attributes':_0x22aac5[_0x5d34('0x20')],'include':_0x22aac5[_0x5d34('0x21')]?_['map'](_0x22aac5['include'],function(_0x19ea22){return{'model':db[_0x19ea22[_0x5d34('0x23')]],'as':_0x19ea22['as'],'attributes':_0x19ea22[_0x5d34('0x20')],'include':_0x19ea22[_0x5d34('0x21')]?_['map'](_0x19ea22['include'],function(_0x1af85e){return{'model':db[_0x1af85e['model']],'as':_0x1af85e['as'],'attributes':_0x1af85e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x447dcf){logger['info'](_0x5d34('0x1b'),_0x3bd793);logger['debug'](_0x5d34('0x1b'),_0x3bd793,JSON['stringify'](_0x447dcf));_0x355fc2(_0x447dcf);})[_0x5d34('0x1a')](function(_0x4780ff){logger['error']('ShowWhatsappAccount',_0x4780ff[_0x5d34('0x17')],_0x3bd793);_0x5e407e(_0x26410b[_0x5d34('0x15')](0x1f4,_0x4780ff[_0x5d34('0x17')]));});});};
\ No newline at end of file
index 63a4140..ac77001 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf38f=['register','length','whatsappAccount:','./whatsappAccount.events','save','update'];(function(_0x503eae,_0x616c31){var _0x48f80a=function(_0x1f278e){while(--_0x1f278e){_0x503eae['push'](_0x503eae['shift']());}};_0x48f80a(++_0x616c31);}(_0xf38f,0x75));var _0xff38=function(_0x4dc35f,_0x377c51){_0x4dc35f=_0x4dc35f-0x0;var _0x1f8820=_0xf38f[_0x4dc35f];return _0x1f8820;};'use strict';var WhatsappAccountEvents=require(_0xff38('0x0'));var events=[_0xff38('0x1'),'remove',_0xff38('0x2')];function createListener(_0x366658,_0x7fba38){return function(_0x44d412){_0x7fba38['emit'](_0x366658,_0x44d412);};}function removeListener(_0x5cfe25,_0x388775){return function(){WhatsappAccountEvents['removeListener'](_0x5cfe25,_0x388775);};}exports[_0xff38('0x3')]=function(_0xbb6e6d){for(var _0x37bf70=0x0,_0x343215=events[_0xff38('0x4')];_0x37bf70<_0x343215;_0x37bf70++){var _0x4e2733=events[_0x37bf70];var _0x344e83=createListener(_0xff38('0x5')+_0x4e2733,_0xbb6e6d);WhatsappAccountEvents['on'](_0x4e2733,_0x344e83);}};
\ No newline at end of file
+var _0x83ad=['save','remove','update','emit','removeListener','length','whatsappAccount:','./whatsappAccount.events'];(function(_0x48af38,_0x4b59c0){var _0x3d2de7=function(_0x377c21){while(--_0x377c21){_0x48af38['push'](_0x48af38['shift']());}};_0x3d2de7(++_0x4b59c0);}(_0x83ad,0x1a7));var _0xd83a=function(_0x5ab653,_0x2b8dba){_0x5ab653=_0x5ab653-0x0;var _0x37b593=_0x83ad[_0x5ab653];return _0x37b593;};'use strict';var WhatsappAccountEvents=require(_0xd83a('0x0'));var events=[_0xd83a('0x1'),_0xd83a('0x2'),_0xd83a('0x3')];function createListener(_0xfefe41,_0x3f8308){return function(_0x6a0a64){_0x3f8308[_0xd83a('0x4')](_0xfefe41,_0x6a0a64);};}function removeListener(_0x2f75f1,_0x484910){return function(){WhatsappAccountEvents[_0xd83a('0x5')](_0x2f75f1,_0x484910);};}exports['register']=function(_0x22e165){for(var _0x4a9a80=0x0,_0x2fc3ee=events[_0xd83a('0x6')];_0x4a9a80<_0x2fc3ee;_0x4a9a80++){var _0x1d3e2b=events[_0x4a9a80];var _0x2ba84c=createListener(_0xd83a('0x7')+_0x1d3e2b,_0x22e165);WhatsappAccountEvents['on'](_0x1d3e2b,_0x2ba84c);}};
\ No newline at end of file
index 518cd13..5b4052c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dd7=['multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','put','update','exports'];(function(_0x2af2f9,_0x5bd215){var _0x527f4a=function(_0x2253f1){while(--_0x2253f1){_0x2af2f9['push'](_0x2af2f9['shift']());}};_0x527f4a(++_0x5bd215);}(_0x5dd7,0x13b));var _0x75dd=function(_0x4141df,_0x5df83f){_0x4141df=_0x4141df-0x0;var _0xe16a8b=_0x5dd7[_0x4141df];return _0xe16a8b;};'use strict';var multer=require(_0x75dd('0x0'));var util=require(_0x75dd('0x1'));var path=require('path');var timeout=require(_0x75dd('0x2'));var express=require(_0x75dd('0x3'));var router=express[_0x75dd('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x75dd('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x75dd('0x6'));var controller=require('./whatsappApplication.controller');router[_0x75dd('0x7')]('/',auth[_0x75dd('0x8')](),controller[_0x75dd('0x9')]);router['get'](_0x75dd('0xa'),auth['isAuthenticated'](),controller[_0x75dd('0xb')]);router['post']('/',auth[_0x75dd('0x8')](),controller['create']);router[_0x75dd('0xc')](_0x75dd('0xa'),auth[_0x75dd('0x8')](),controller[_0x75dd('0xd')]);router['delete'](_0x75dd('0xa'),auth[_0x75dd('0x8')](),controller['destroy']);module[_0x75dd('0xe')]=router;
\ No newline at end of file
+var _0xe59c=['delete','multer','express','Router','../../components/auth/service','../../components/interaction/service','./whatsappApplication.controller','get','index','/:id','show','post','isAuthenticated','create','put','update'];(function(_0x5e12cf,_0x21edd6){var _0x206d43=function(_0xf280bf){while(--_0xf280bf){_0x5e12cf['push'](_0x5e12cf['shift']());}};_0x206d43(++_0x21edd6);}(_0xe59c,0xf1));var _0xce59=function(_0x202131,_0x69b134){_0x202131=_0x202131-0x0;var _0x909a2f=_0xe59c[_0x202131];return _0x909a2f;};'use strict';var multer=require(_0xce59('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xce59('0x1'));var router=express[_0xce59('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xce59('0x3'));var interaction=require(_0xce59('0x4'));var config=require('../../config/environment');var controller=require(_0xce59('0x5'));router[_0xce59('0x6')]('/',auth['isAuthenticated'](),controller[_0xce59('0x7')]);router['get'](_0xce59('0x8'),auth['isAuthenticated'](),controller[_0xce59('0x9')]);router[_0xce59('0xa')]('/',auth[_0xce59('0xb')](),controller[_0xce59('0xc')]);router[_0xce59('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xce59('0xe')]);router[_0xce59('0xf')]('/:id',auth[_0xce59('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 1f6265e..065a3f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1692=['noop','TEXT','*,*,*,*','sequelize','INTEGER','STRING'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x1692,0xf3));var _0x2169=function(_0xce6e21,_0x161dc8){_0xce6e21=_0xce6e21-0x0;var _0x549a80=_0x1692[_0xce6e21];return _0x549a80;};'use strict';var Sequelize=require(_0x2169('0x0'));module['exports']={'priority':{'type':Sequelize[_0x2169('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x2169('0x2')],'allowNull':![],'defaultValue':_0x2169('0x3')},'appdata':{'type':Sequelize[_0x2169('0x4')]()},'description':{'type':Sequelize[_0x2169('0x2')]},'interval':{'type':Sequelize[_0x2169('0x2')],'defaultValue':_0x2169('0x5')}};
\ No newline at end of file
+var _0xe19d=['noop','TEXT','sequelize','STRING'];(function(_0x4b0dfd,_0x2694e4){var _0x27ca1b=function(_0x5552cf){while(--_0x5552cf){_0x4b0dfd['push'](_0x4b0dfd['shift']());}};_0x27ca1b(++_0x2694e4);}(_0xe19d,0xee));var _0xde19=function(_0x44a0e9,_0x959f63){_0x44a0e9=_0x44a0e9-0x0;var _0x3b8e8c=_0xe19d[_0x44a0e9];return _0x3b8e8c;};'use strict';var Sequelize=require(_0xde19('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xde19('0x1')],'allowNull':![],'defaultValue':_0xde19('0x2')},'appdata':{'type':Sequelize[_0xde19('0x3')]()},'description':{'type':Sequelize[_0xde19('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 9794ced..d5e82fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa486=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','error','stack','name','send','index','map','WhatsappApplication','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','then','show','params','find','catch','create','body','update','destroy','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0xa486,0x17d));var _0x6a48=function(_0x107bb6,_0x3e0072){_0x107bb6=_0x107bb6-0x0;var _0x45e430=_0xa486[_0x107bb6];return _0x45e430;};'use strict';var emlformat=require(_0x6a48('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6a48('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6a48('0x2'));var moment=require('moment');var BPromise=require(_0x6a48('0x3'));var Mustache=require(_0x6a48('0x4'));var util=require(_0x6a48('0x5'));var path=require(_0x6a48('0x6'));var sox=require(_0x6a48('0x7'));var csv=require(_0x6a48('0x8'));var ejs=require(_0x6a48('0x9'));var fs=require('fs');var fs_extra=require(_0x6a48('0xa'));var _=require(_0x6a48('0xb'));var squel=require(_0x6a48('0xc'));var crypto=require(_0x6a48('0xd'));var jsforce=require(_0x6a48('0xe'));var deskjs=require(_0x6a48('0xf'));var toCsv=require(_0x6a48('0x8'));var querystring=require(_0x6a48('0x10'));var Papa=require(_0x6a48('0x11'));var Redis=require('ioredis');var authService=require(_0x6a48('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x6a48('0x13'));var hardwareService=require(_0x6a48('0x14'));var logger=require(_0x6a48('0x15'))(_0x6a48('0x16'));var utils=require(_0x6a48('0x17'));var config=require(_0x6a48('0x18'));var licenseUtil=require(_0x6a48('0x19'));var db=require(_0x6a48('0x1a'))['db'];function respondWithStatusCode(_0x3f099a,_0x3c5ef9){_0x3c5ef9=_0x3c5ef9||0xcc;return function(_0x1ef5c7){if(_0x1ef5c7){return _0x3f099a[_0x6a48('0x1b')](_0x3c5ef9);}return _0x3f099a[_0x6a48('0x1c')](_0x3c5ef9)[_0x6a48('0x1d')]();};}function respondWithResult(_0x4636e5,_0x9909af){_0x9909af=_0x9909af||0xc8;return function(_0xcbcb4b){if(_0xcbcb4b){return _0x4636e5[_0x6a48('0x1c')](_0x9909af)[_0x6a48('0x1e')](_0xcbcb4b);}};}function respondWithFilteredResult(_0x43f5fa,_0x3315c1){return function(_0x10867e){if(_0x10867e){var _0x231930=typeof _0x3315c1[_0x6a48('0x1f')]===_0x6a48('0x20')&&typeof _0x3315c1[_0x6a48('0x21')]===_0x6a48('0x20');var _0x20cab5=_0x10867e['count'];var _0xab0913=_0x231930?0x0:_0x3315c1[_0x6a48('0x1f')];var _0x152280=_0x231930?_0x10867e[_0x6a48('0x22')]:_0x3315c1['offset']+_0x3315c1[_0x6a48('0x21')];var _0x43a80d;if(_0x152280>=_0x20cab5){_0x152280=_0x20cab5;_0x43a80d=0xc8;}else{_0x43a80d=0xce;}_0x43f5fa[_0x6a48('0x1c')](_0x43a80d);return _0x43f5fa['set'](_0x6a48('0x23'),_0xab0913+'-'+_0x152280+'/'+_0x20cab5)[_0x6a48('0x1e')](_0x10867e);}return null;};}function patchUpdates(_0x426272){return function(_0x56fc96){try{jsonpatch[_0x6a48('0x24')](_0x56fc96,_0x426272,!![]);}catch(_0x24c549){return BPromise[_0x6a48('0x25')](_0x24c549);}return _0x56fc96[_0x6a48('0x26')]();};}function saveUpdates(_0x4ee111,_0x1afaf3){return function(_0x230220){if(_0x230220){return _0x230220['update'](_0x4ee111)['then'](function(_0x11b488){return _0x11b488;});}return null;};}function removeEntity(_0x31ed88,_0x4cb5d0){return function(_0x2eae9f){if(_0x2eae9f){return _0x2eae9f['destroy']()['then'](function(){_0x31ed88['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a14d5,_0x5eeef8){return function(_0x19594c){if(!_0x19594c){_0x2a14d5['sendStatus'](0x194);}return _0x19594c;};}function handleError(_0x5b1331,_0x483278){_0x483278=_0x483278||0x1f4;return function(_0x5d62a6){logger[_0x6a48('0x27')](_0x5d62a6[_0x6a48('0x28')]);if(_0x5d62a6[_0x6a48('0x29')]){delete _0x5d62a6[_0x6a48('0x29')];}_0x5b1331['status'](_0x483278)[_0x6a48('0x2a')](_0x5d62a6);};}exports[_0x6a48('0x2b')]=function(_0xf450b,_0x13fe57){var _0x5188e8={},_0x57522a={},_0x39f2ee={'count':0x0,'rows':[]};var _0xa75f3d=_[_0x6a48('0x2c')](db[_0x6a48('0x2d')][_0x6a48('0x2e')],function(_0x5b01a4){return{'name':_0x5b01a4[_0x6a48('0x2f')],'type':_0x5b01a4['type']['key']};});_0x57522a[_0x6a48('0x30')]=_[_0x6a48('0x2c')](_0xa75f3d,_0x6a48('0x29'));_0x57522a[_0x6a48('0x31')]=_[_0x6a48('0x32')](_0xf450b[_0x6a48('0x31')]);_0x57522a[_0x6a48('0x33')]=_[_0x6a48('0x34')](_0x57522a[_0x6a48('0x30')],_0x57522a[_0x6a48('0x31')]);_0x5188e8[_0x6a48('0x35')]=_[_0x6a48('0x34')](_0x57522a['model'],qs[_0x6a48('0x36')](_0xf450b[_0x6a48('0x31')][_0x6a48('0x36')]));_0x5188e8['attributes']=_0x5188e8[_0x6a48('0x35')]['length']?_0x5188e8[_0x6a48('0x35')]:_0x57522a['model'];if(!_0xf450b[_0x6a48('0x31')][_0x6a48('0x37')](_0x6a48('0x38'))){_0x5188e8['limit']=qs[_0x6a48('0x21')](_0xf450b[_0x6a48('0x31')]['limit']);_0x5188e8['offset']=qs[_0x6a48('0x1f')](_0xf450b[_0x6a48('0x31')][_0x6a48('0x1f')]);}_0x5188e8[_0x6a48('0x39')]=qs[_0x6a48('0x3a')](_0xf450b[_0x6a48('0x31')][_0x6a48('0x3a')]);_0x5188e8[_0x6a48('0x3b')]=qs['filters'](_[_0x6a48('0x3c')](_0xf450b[_0x6a48('0x31')],_0x57522a[_0x6a48('0x33')]),_0xa75f3d);if(_0xf450b[_0x6a48('0x31')][_0x6a48('0x3d')]){_0x5188e8[_0x6a48('0x3b')]=_[_0x6a48('0x3e')](_0x5188e8[_0x6a48('0x3b')],{'$or':_[_0x6a48('0x2c')](_0xa75f3d,function(_0x424a5b){if(_0x424a5b[_0x6a48('0x3f')]!==_0x6a48('0x40')){var _0x19244f={};_0x19244f[_0x424a5b[_0x6a48('0x29')]]={'$like':'%'+_0xf450b['query'][_0x6a48('0x3d')]+'%'};return _0x19244f;}})});}_0x5188e8=_[_0x6a48('0x3e')]({},_0x5188e8,_0xf450b['options']);var _0x3ac1d7={'where':_0x5188e8[_0x6a48('0x3b')]};return db[_0x6a48('0x2d')][_0x6a48('0x22')](_0x3ac1d7)['then'](function(_0x2ab146){_0x39f2ee[_0x6a48('0x22')]=_0x2ab146;if(_0xf450b[_0x6a48('0x31')][_0x6a48('0x41')]){_0x5188e8[_0x6a48('0x42')]=[{'all':!![]}];}return db[_0x6a48('0x2d')][_0x6a48('0x43')](_0x5188e8);})['then'](function(_0x5cbb47){_0x39f2ee[_0x6a48('0x44')]=_0x5cbb47;return _0x39f2ee;})[_0x6a48('0x45')](respondWithFilteredResult(_0x13fe57,_0x5188e8))['catch'](handleError(_0x13fe57,null));};exports[_0x6a48('0x46')]=function(_0x4399c0,_0x48d8ee){var _0x305878={'raw':!![],'where':{'id':_0x4399c0[_0x6a48('0x47')]['id']}},_0x2abea4={};_0x2abea4[_0x6a48('0x30')]=_[_0x6a48('0x32')](db['WhatsappApplication'][_0x6a48('0x2e')]);_0x2abea4['query']=_['keys'](_0x4399c0[_0x6a48('0x31')]);_0x2abea4['filters']=_[_0x6a48('0x34')](_0x2abea4['model'],_0x2abea4[_0x6a48('0x31')]);_0x305878[_0x6a48('0x35')]=_[_0x6a48('0x34')](_0x2abea4['model'],qs[_0x6a48('0x36')](_0x4399c0['query']['fields']));_0x305878['attributes']=_0x305878[_0x6a48('0x35')]['length']?_0x305878[_0x6a48('0x35')]:_0x2abea4[_0x6a48('0x30')];if(_0x4399c0[_0x6a48('0x31')][_0x6a48('0x41')]){_0x305878['include']=[{'all':!![]}];}_0x305878=_[_0x6a48('0x3e')]({},_0x305878,_0x4399c0['options']);return db[_0x6a48('0x2d')][_0x6a48('0x48')](_0x305878)['then'](handleEntityNotFound(_0x48d8ee,null))['then'](respondWithResult(_0x48d8ee,null))[_0x6a48('0x49')](handleError(_0x48d8ee,null));};exports[_0x6a48('0x4a')]=function(_0x5c91cf,_0x130ca0){return db[_0x6a48('0x2d')][_0x6a48('0x4a')](_0x5c91cf[_0x6a48('0x4b')],{})[_0x6a48('0x45')](respondWithResult(_0x130ca0,0xc9))[_0x6a48('0x49')](handleError(_0x130ca0,null));};exports[_0x6a48('0x4c')]=function(_0x4b3cc1,_0x3227db){if(_0x4b3cc1[_0x6a48('0x4b')]['id']){delete _0x4b3cc1['body']['id'];}return db[_0x6a48('0x2d')][_0x6a48('0x48')]({'where':{'id':_0x4b3cc1[_0x6a48('0x47')]['id']}})[_0x6a48('0x45')](handleEntityNotFound(_0x3227db,null))[_0x6a48('0x45')](saveUpdates(_0x4b3cc1['body'],null))[_0x6a48('0x45')](respondWithResult(_0x3227db,null))[_0x6a48('0x49')](handleError(_0x3227db,null));};exports[_0x6a48('0x4d')]=function(_0xc66694,_0x1243bc){return db['WhatsappApplication']['find']({'where':{'id':_0xc66694[_0x6a48('0x47')]['id']}})[_0x6a48('0x45')](handleEntityNotFound(_0x1243bc,null))[_0x6a48('0x45')](removeEntity(_0x1243bc,null))['catch'](handleError(_0x1243bc,null));};
\ No newline at end of file
+var _0x1681=['fields','find','create','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','WhatsappApplication','findAll','rows','catch','show','params','keys'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1681,0x12c));var _0x1168=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1681[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1168('0x0'));var jsonpatch=require(_0x1168('0x1'));var rp=require(_0x1168('0x2'));var moment=require(_0x1168('0x3'));var BPromise=require(_0x1168('0x4'));var Mustache=require(_0x1168('0x5'));var util=require('util');var path=require('path');var sox=require(_0x1168('0x6'));var csv=require(_0x1168('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1168('0x8'));var _=require(_0x1168('0x9'));var squel=require('squel');var crypto=require(_0x1168('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x1168('0xb'));var toCsv=require(_0x1168('0x7'));var querystring=require('querystring');var Papa=require(_0x1168('0xc'));var Redis=require(_0x1168('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x1168('0xe'));var as=require(_0x1168('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1168('0x10'));var utils=require(_0x1168('0x11'));var config=require(_0x1168('0x12'));var licenseUtil=require(_0x1168('0x13'));var db=require(_0x1168('0x14'))['db'];function respondWithStatusCode(_0x50638d,_0x4123a5){_0x4123a5=_0x4123a5||0xcc;return function(_0xbe4880){if(_0xbe4880){return _0x50638d[_0x1168('0x15')](_0x4123a5);}return _0x50638d[_0x1168('0x16')](_0x4123a5)[_0x1168('0x17')]();};}function respondWithResult(_0x4fdd1c,_0x459dcc){_0x459dcc=_0x459dcc||0xc8;return function(_0x52b1f7){if(_0x52b1f7){return _0x4fdd1c[_0x1168('0x16')](_0x459dcc)[_0x1168('0x18')](_0x52b1f7);}};}function respondWithFilteredResult(_0x52c8a0,_0x3f1840){return function(_0x41205b){if(_0x41205b){var _0x5a1b64=typeof _0x3f1840[_0x1168('0x19')]==='undefined'&&typeof _0x3f1840[_0x1168('0x1a')]===_0x1168('0x1b');var _0x5e6483=_0x41205b[_0x1168('0x1c')];var _0x36130f=_0x5a1b64?0x0:_0x3f1840[_0x1168('0x19')];var _0x5d8498=_0x5a1b64?_0x41205b['count']:_0x3f1840[_0x1168('0x19')]+_0x3f1840['limit'];var _0x2bea0e;if(_0x5d8498>=_0x5e6483){_0x5d8498=_0x5e6483;_0x2bea0e=0xc8;}else{_0x2bea0e=0xce;}_0x52c8a0[_0x1168('0x16')](_0x2bea0e);return _0x52c8a0[_0x1168('0x1d')](_0x1168('0x1e'),_0x36130f+'-'+_0x5d8498+'/'+_0x5e6483)[_0x1168('0x18')](_0x41205b);}return null;};}function patchUpdates(_0x416c29){return function(_0x527acd){try{jsonpatch[_0x1168('0x1f')](_0x527acd,_0x416c29,!![]);}catch(_0x58606f){return BPromise[_0x1168('0x20')](_0x58606f);}return _0x527acd[_0x1168('0x21')]();};}function saveUpdates(_0x5f4afb,_0x4a3e55){return function(_0x1252c2){if(_0x1252c2){return _0x1252c2[_0x1168('0x22')](_0x5f4afb)[_0x1168('0x23')](function(_0x46bda4){return _0x46bda4;});}return null;};}function removeEntity(_0xc9e17f,_0x305d39){return function(_0x149967){if(_0x149967){return _0x149967[_0x1168('0x24')]()[_0x1168('0x23')](function(){_0xc9e17f[_0x1168('0x16')](0xcc)[_0x1168('0x17')]();});}};}function handleEntityNotFound(_0x4177ec,_0x24f599){return function(_0x4f29cd){if(!_0x4f29cd){_0x4177ec[_0x1168('0x15')](0x194);}return _0x4f29cd;};}function handleError(_0x2c920e,_0x4adb82){_0x4adb82=_0x4adb82||0x1f4;return function(_0x3cb49c){logger[_0x1168('0x25')](_0x3cb49c[_0x1168('0x26')]);if(_0x3cb49c['name']){delete _0x3cb49c[_0x1168('0x27')];}_0x2c920e[_0x1168('0x16')](_0x4adb82)[_0x1168('0x28')](_0x3cb49c);};}exports[_0x1168('0x29')]=function(_0x53ea92,_0x335865){var _0x50644e={},_0xc7ba15={},_0x25fd9b={'count':0x0,'rows':[]};var _0x27fab9=_[_0x1168('0x2a')](db['WhatsappApplication'][_0x1168('0x2b')],function(_0x5032ed){return{'name':_0x5032ed['fieldName'],'type':_0x5032ed[_0x1168('0x2c')][_0x1168('0x2d')]};});_0xc7ba15[_0x1168('0x2e')]=_['map'](_0x27fab9,_0x1168('0x27'));_0xc7ba15[_0x1168('0x2f')]=_['keys'](_0x53ea92[_0x1168('0x2f')]);_0xc7ba15[_0x1168('0x30')]=_[_0x1168('0x31')](_0xc7ba15[_0x1168('0x2e')],_0xc7ba15[_0x1168('0x2f')]);_0x50644e[_0x1168('0x32')]=_[_0x1168('0x31')](_0xc7ba15[_0x1168('0x2e')],qs['fields'](_0x53ea92[_0x1168('0x2f')]['fields']));_0x50644e[_0x1168('0x32')]=_0x50644e['attributes'][_0x1168('0x33')]?_0x50644e[_0x1168('0x32')]:_0xc7ba15[_0x1168('0x2e')];if(!_0x53ea92['query'][_0x1168('0x34')](_0x1168('0x35'))){_0x50644e[_0x1168('0x1a')]=qs[_0x1168('0x1a')](_0x53ea92[_0x1168('0x2f')]['limit']);_0x50644e[_0x1168('0x19')]=qs[_0x1168('0x19')](_0x53ea92[_0x1168('0x2f')]['offset']);}_0x50644e[_0x1168('0x36')]=qs['sort'](_0x53ea92['query'][_0x1168('0x37')]);_0x50644e[_0x1168('0x38')]=qs['filters'](_[_0x1168('0x39')](_0x53ea92[_0x1168('0x2f')],_0xc7ba15[_0x1168('0x30')]),_0x27fab9);if(_0x53ea92[_0x1168('0x2f')][_0x1168('0x3a')]){_0x50644e[_0x1168('0x38')]=_[_0x1168('0x3b')](_0x50644e['where'],{'$or':_[_0x1168('0x2a')](_0x27fab9,function(_0x5afc47){if(_0x5afc47[_0x1168('0x2c')]!==_0x1168('0x3c')){var _0x51477c={};_0x51477c[_0x5afc47[_0x1168('0x27')]]={'$like':'%'+_0x53ea92[_0x1168('0x2f')][_0x1168('0x3a')]+'%'};return _0x51477c;}})});}_0x50644e=_['merge']({},_0x50644e,_0x53ea92[_0x1168('0x3d')]);var _0x2f1d4e={'where':_0x50644e[_0x1168('0x38')]};return db['WhatsappApplication'][_0x1168('0x1c')](_0x2f1d4e)[_0x1168('0x23')](function(_0x2e16da){_0x25fd9b['count']=_0x2e16da;if(_0x53ea92[_0x1168('0x2f')]['includeAll']){_0x50644e[_0x1168('0x3e')]=[{'all':!![]}];}return db[_0x1168('0x3f')][_0x1168('0x40')](_0x50644e);})[_0x1168('0x23')](function(_0x1779a6){_0x25fd9b[_0x1168('0x41')]=_0x1779a6;return _0x25fd9b;})[_0x1168('0x23')](respondWithFilteredResult(_0x335865,_0x50644e))[_0x1168('0x42')](handleError(_0x335865,null));};exports[_0x1168('0x43')]=function(_0x5aa3d4,_0x393a11){var _0x47346d={'raw':!![],'where':{'id':_0x5aa3d4[_0x1168('0x44')]['id']}},_0x491294={};_0x491294[_0x1168('0x2e')]=_['keys'](db[_0x1168('0x3f')][_0x1168('0x2b')]);_0x491294[_0x1168('0x2f')]=_[_0x1168('0x45')](_0x5aa3d4['query']);_0x491294['filters']=_['intersection'](_0x491294[_0x1168('0x2e')],_0x491294[_0x1168('0x2f')]);_0x47346d[_0x1168('0x32')]=_[_0x1168('0x31')](_0x491294[_0x1168('0x2e')],qs[_0x1168('0x46')](_0x5aa3d4[_0x1168('0x2f')][_0x1168('0x46')]));_0x47346d[_0x1168('0x32')]=_0x47346d[_0x1168('0x32')][_0x1168('0x33')]?_0x47346d[_0x1168('0x32')]:_0x491294[_0x1168('0x2e')];if(_0x5aa3d4['query']['includeAll']){_0x47346d['include']=[{'all':!![]}];}_0x47346d=_[_0x1168('0x3b')]({},_0x47346d,_0x5aa3d4[_0x1168('0x3d')]);return db[_0x1168('0x3f')][_0x1168('0x47')](_0x47346d)[_0x1168('0x23')](handleEntityNotFound(_0x393a11,null))[_0x1168('0x23')](respondWithResult(_0x393a11,null))[_0x1168('0x42')](handleError(_0x393a11,null));};exports[_0x1168('0x48')]=function(_0x37c2dc,_0x2a3de4){return db['WhatsappApplication']['create'](_0x37c2dc['body'],{})[_0x1168('0x23')](respondWithResult(_0x2a3de4,0xc9))[_0x1168('0x42')](handleError(_0x2a3de4,null));};exports[_0x1168('0x22')]=function(_0x51b141,_0x106c2a){if(_0x51b141[_0x1168('0x49')]['id']){delete _0x51b141[_0x1168('0x49')]['id'];}return db[_0x1168('0x3f')][_0x1168('0x47')]({'where':{'id':_0x51b141[_0x1168('0x44')]['id']}})[_0x1168('0x23')](handleEntityNotFound(_0x106c2a,null))[_0x1168('0x23')](saveUpdates(_0x51b141[_0x1168('0x49')],null))['then'](respondWithResult(_0x106c2a,null))[_0x1168('0x42')](handleError(_0x106c2a,null));};exports[_0x1168('0x24')]=function(_0x1135f1,_0x3598bc){return db[_0x1168('0x3f')]['find']({'where':{'id':_0x1135f1[_0x1168('0x44')]['id']}})[_0x1168('0x23')](handleEntityNotFound(_0x3598bc,null))[_0x1168('0x23')](removeEntity(_0x3598bc,null))[_0x1168('0x42')](handleError(_0x3598bc,null));};
\ No newline at end of file
index 68b8916..88b008b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9b1=['path','exports','define','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x3ec501,_0xd2c312){var _0x5d8bc1=function(_0xf344d5){while(--_0xf344d5){_0x3ec501['push'](_0x3ec501['shift']());}};_0x5d8bc1(++_0xd2c312);}(_0xa9b1,0x133));var _0x1a9b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa9b1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1a9b('0x0'))(_0x1a9b('0x1'));var moment=require(_0x1a9b('0x2'));var BPromise=require(_0x1a9b('0x3'));var rp=require(_0x1a9b('0x4'));var fs=require('fs');var path=require(_0x1a9b('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./whatsappApplication.attributes');module[_0x1a9b('0x6')]=function(_0x15861d,_0x1a78b6){return _0x15861d[_0x1a9b('0x7')](_0x1a9b('0x8'),attributes,{'tableName':_0x1a9b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1a9b('0xa'),'collate':_0x1a9b('0xb')});};
\ No newline at end of file
+var _0xe5d5=['exports','define','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','../../config/logger','moment','request-promise','rimraf','../../config/environment','./whatsappApplication.attributes'];(function(_0x4eb6ec,_0x7f2520){var _0x58881b=function(_0x4f375f){while(--_0x4f375f){_0x4eb6ec['push'](_0x4eb6ec['shift']());}};_0x58881b(++_0x7f2520);}(_0xe5d5,0x156));var _0x5e5d=function(_0x3d5fa6,_0x906f09){_0x3d5fa6=_0x3d5fa6-0x0;var _0x3573a0=_0xe5d5[_0x3d5fa6];return _0x3573a0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5e5d('0x0'))('api');var moment=require(_0x5e5d('0x1'));var BPromise=require('bluebird');var rp=require(_0x5e5d('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5e5d('0x3'));var config=require(_0x5e5d('0x4'));var attributes=require(_0x5e5d('0x5'));module[_0x5e5d('0x6')]=function(_0x13bcb7,_0x39077f){return _0x13bcb7[_0x5e5d('0x7')](_0x5e5d('0x8'),attributes,{'tableName':_0x5e5d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5e5d('0xa'),'collate':_0x5e5d('0xb')});};
\ No newline at end of file
index 35ec914..a6d3e74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c12=['../../config/environment','client','http','request','then','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','error','message','info','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x4c98b9,_0x1ad11b){var _0x3a257a=function(_0x147857){while(--_0x147857){_0x4c98b9['push'](_0x4c98b9['shift']());}};_0x3a257a(++_0x1ad11b);}(_0x5c12,0x188));var _0x25c1=function(_0x3238ea,_0x91809d){_0x3238ea=_0x3238ea-0x0;var _0x4aaac2=_0x5c12[_0x3238ea];return _0x4aaac2;};'use strict';var _=require('lodash');var util=require(_0x25c1('0x0'));var moment=require(_0x25c1('0x1'));var BPromise=require('bluebird');var rs=require(_0x25c1('0x2'));var fs=require('fs');var Redis=require(_0x25c1('0x3'));var db=require(_0x25c1('0x4'))['db'];var utils=require(_0x25c1('0x5'));var logger=require(_0x25c1('0x6'))(_0x25c1('0x7'));var config=require(_0x25c1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x25c1('0x9')][_0x25c1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x382922,_0x4ab674,_0x5c69b1){return new BPromise(function(_0x24981c,_0x3b69ba){return client[_0x25c1('0xb')](_0x382922,_0x5c69b1)[_0x25c1('0xc')](function(_0xf8363f){logger['info'](_0x25c1('0xd'),_0x4ab674,_0x25c1('0xe'));logger[_0x25c1('0xf')](_0x25c1('0x10'),_0x4ab674,_0x25c1('0xe'),JSON['stringify'](_0xf8363f));if(_0xf8363f[_0x25c1('0x11')]){if(_0xf8363f[_0x25c1('0x11')]['code']===0x1f4){logger[_0x25c1('0x11')](_0x25c1('0xd'),_0x4ab674,_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);return _0x3b69ba(_0xf8363f['error']['message']);}logger['error']('WhatsappApplication,\x20%s,\x20%s',_0x4ab674,_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);return _0x24981c(_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);}else{logger[_0x25c1('0x13')]('WhatsappApplication,\x20%s,\x20%s',_0x4ab674,_0x25c1('0xe'));_0x24981c(_0xf8363f['result']['message']);}})['catch'](function(_0x284712){logger[_0x25c1('0x11')]('WhatsappApplication,\x20%s,\x20%s',_0x4ab674,_0x284712);_0x3b69ba(_0x284712);});});}
\ No newline at end of file
+var _0x5c12=['../../config/environment','client','http','request','then','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','error','message','info','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x5b78e8,_0x55096b){var _0xf2c321=function(_0x4e0cff){while(--_0x4e0cff){_0x5b78e8['push'](_0x5b78e8['shift']());}};_0xf2c321(++_0x55096b);}(_0x5c12,0x188));var _0x25c1=function(_0x57928b,_0x29a111){_0x57928b=_0x57928b-0x0;var _0x49aad6=_0x5c12[_0x57928b];return _0x49aad6;};'use strict';var _=require('lodash');var util=require(_0x25c1('0x0'));var moment=require(_0x25c1('0x1'));var BPromise=require('bluebird');var rs=require(_0x25c1('0x2'));var fs=require('fs');var Redis=require(_0x25c1('0x3'));var db=require(_0x25c1('0x4'))['db'];var utils=require(_0x25c1('0x5'));var logger=require(_0x25c1('0x6'))(_0x25c1('0x7'));var config=require(_0x25c1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x25c1('0x9')][_0x25c1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x382922,_0x4ab674,_0x5c69b1){return new BPromise(function(_0x24981c,_0x3b69ba){return client[_0x25c1('0xb')](_0x382922,_0x5c69b1)[_0x25c1('0xc')](function(_0xf8363f){logger['info'](_0x25c1('0xd'),_0x4ab674,_0x25c1('0xe'));logger[_0x25c1('0xf')](_0x25c1('0x10'),_0x4ab674,_0x25c1('0xe'),JSON['stringify'](_0xf8363f));if(_0xf8363f[_0x25c1('0x11')]){if(_0xf8363f[_0x25c1('0x11')]['code']===0x1f4){logger[_0x25c1('0x11')](_0x25c1('0xd'),_0x4ab674,_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);return _0x3b69ba(_0xf8363f['error']['message']);}logger['error']('WhatsappApplication,\x20%s,\x20%s',_0x4ab674,_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);return _0x24981c(_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);}else{logger[_0x25c1('0x13')]('WhatsappApplication,\x20%s,\x20%s',_0x4ab674,_0x25c1('0xe'));_0x24981c(_0xf8363f['result']['message']);}})['catch'](function(_0x284712){logger[_0x25c1('0x11')]('WhatsappApplication,\x20%s,\x20%s',_0x4ab674,_0x284712);_0x3b69ba(_0x284712);});});}
\ No newline at end of file
index b62d1b0..700d115 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e0e=['whatsappinteraction:addtags','addTags','put','tracked','whatsappinteraction:update','delete','whatsappinteraction:destroy','removeTags','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','whatsapp'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x5e0e,0x89));var _0xe5e0=function(_0x36734a,_0xdd12e1){_0x36734a=_0x36734a-0x0;var _0x565da1=_0x5e0e[_0x36734a];return _0x565da1;};'use strict';var multer=require(_0xe5e0('0x0'));var util=require(_0xe5e0('0x1'));var path=require('path');var timeout=require(_0xe5e0('0x2'));var express=require(_0xe5e0('0x3'));var router=express[_0xe5e0('0x4')]();var fs_extra=require(_0xe5e0('0x5'));var auth=require(_0xe5e0('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xe5e0('0x7'));var controller=require('./whatsappInteraction.controller');router[_0xe5e0('0x8')]('/',auth[_0xe5e0('0x9')](),controller[_0xe5e0('0xa')]);router[_0xe5e0('0x8')](_0xe5e0('0xb'),auth[_0xe5e0('0x9')](),controller['describe']);router[_0xe5e0('0x8')](_0xe5e0('0xc'),auth['isAuthenticated'](),controller[_0xe5e0('0xd')]);router[_0xe5e0('0x8')](_0xe5e0('0xe'),auth[_0xe5e0('0x9')](),controller[_0xe5e0('0xf')]);router[_0xe5e0('0x8')](_0xe5e0('0x10'),auth[_0xe5e0('0x9')](),controller[_0xe5e0('0x11')]);router[_0xe5e0('0x12')]('/',auth[_0xe5e0('0x9')](),controller[_0xe5e0('0x13')]);router[_0xe5e0('0x12')]('/:id/messages',auth['isAuthenticated'](),controller[_0xe5e0('0x14')]);router[_0xe5e0('0x12')](_0xe5e0('0x15'),auth[_0xe5e0('0x9')](),interaction['tracked'](_0xe5e0('0x16'),_0xe5e0('0x17')),controller[_0xe5e0('0x18')]);router[_0xe5e0('0x19')](_0xe5e0('0xc'),auth[_0xe5e0('0x9')](),interaction[_0xe5e0('0x1a')](_0xe5e0('0x16'),_0xe5e0('0x1b')),controller['update']);router[_0xe5e0('0x1c')]('/:id',auth[_0xe5e0('0x9')](),interaction['tracked'](_0xe5e0('0x16'),_0xe5e0('0x1d')),controller['destroy']);router[_0xe5e0('0x1c')]('/:id/tags',auth[_0xe5e0('0x9')](),controller[_0xe5e0('0x1e')]);module[_0xe5e0('0x1f')]=router;
\ No newline at end of file
+var _0xdbb1=['/:id','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','tracked','whatsapp','whatsappinteraction:addtags','addTags','whatsappinteraction:update','update','whatsappinteraction:destroy','destroy','delete','/:id/tags','multer','express','../../components/auth/service','../../config/environment','./whatsappInteraction.controller','index','get','/describe','isAuthenticated'];(function(_0x5dc45a,_0x2faf28){var _0xc77424=function(_0x3d36d7){while(--_0x3d36d7){_0x5dc45a['push'](_0x5dc45a['shift']());}};_0xc77424(++_0x2faf28);}(_0xdbb1,0x105));var _0x1dbb=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xdbb1[_0x1caf6a];return _0x1bf493;};'use strict';var multer=require(_0x1dbb('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x1dbb('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x1dbb('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0x1dbb('0x3'));var controller=require(_0x1dbb('0x4'));router['get']('/',auth['isAuthenticated'](),controller[_0x1dbb('0x5')]);router[_0x1dbb('0x6')](_0x1dbb('0x7'),auth[_0x1dbb('0x8')](),controller['describe']);router[_0x1dbb('0x6')](_0x1dbb('0x9'),auth['isAuthenticated'](),controller[_0x1dbb('0xa')]);router[_0x1dbb('0x6')](_0x1dbb('0xb'),auth[_0x1dbb('0x8')](),controller[_0x1dbb('0xc')]);router[_0x1dbb('0x6')](_0x1dbb('0xd'),auth[_0x1dbb('0x8')](),controller[_0x1dbb('0xe')]);router[_0x1dbb('0xf')]('/',auth[_0x1dbb('0x8')](),controller['create']);router[_0x1dbb('0xf')](_0x1dbb('0xb'),auth[_0x1dbb('0x8')](),controller[_0x1dbb('0x10')]);router['post']('/:id/tags',auth[_0x1dbb('0x8')](),interaction[_0x1dbb('0x11')](_0x1dbb('0x12'),_0x1dbb('0x13')),controller[_0x1dbb('0x14')]);router['put'](_0x1dbb('0x9'),auth[_0x1dbb('0x8')](),interaction[_0x1dbb('0x11')]('whatsapp',_0x1dbb('0x15')),controller[_0x1dbb('0x16')]);router['delete'](_0x1dbb('0x9'),auth[_0x1dbb('0x8')](),interaction[_0x1dbb('0x11')](_0x1dbb('0x12'),_0x1dbb('0x17')),controller[_0x1dbb('0x18')]);router[_0x1dbb('0x19')](_0x1dbb('0x1a'),auth['isAuthenticated'](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index 9b33d08..a07b813 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5398=['ENUM','out','moment','exports','BOOLEAN','DATE','STRING'];(function(_0x2642cb,_0x4b917f){var _0xe6e41=function(_0x281676){while(--_0x281676){_0x2642cb['push'](_0x2642cb['shift']());}};_0xe6e41(++_0x4b917f);}(_0x5398,0xe2));var _0x8539=function(_0x9ab1e,_0x56edbc){_0x9ab1e=_0x9ab1e-0x0;var _0x45a421=_0x5398[_0x9ab1e];return _0x45a421;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x8539('0x0'));module[_0x8539('0x1')]={'closed':{'type':Sequelize[_0x8539('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8539('0x3')]},'disposition':{'type':Sequelize[_0x8539('0x4')]},'secondDisposition':{'type':Sequelize[_0x8539('0x4')]},'thirdDisposition':{'type':Sequelize[_0x8539('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x8539('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x8539('0x5')]('in',_0x8539('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8539('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x8539('0x5')]('in',_0x8539('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xa63f=['exports','BOOLEAN','DATE','STRING','out','ENUM','sequelize','moment'];(function(_0x5454e3,_0x352bfa){var _0x1675b4=function(_0x517e47){while(--_0x517e47){_0x5454e3['push'](_0x5454e3['shift']());}};_0x1675b4(++_0x352bfa);}(_0xa63f,0x1b6));var _0xfa63=function(_0x545bed,_0x221e96){_0x545bed=_0x545bed-0x0;var _0x16c79c=_0xa63f[_0x545bed];return _0x16c79c;};'use strict';var Sequelize=require(_0xfa63('0x0'));var moment=require(_0xfa63('0x1'));module[_0xfa63('0x2')]={'closed':{'type':Sequelize[_0xfa63('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xfa63('0x4')]},'disposition':{'type':Sequelize[_0xfa63('0x5')]},'secondDisposition':{'type':Sequelize[_0xfa63('0x5')]},'thirdDisposition':{'type':Sequelize[_0xfa63('0x5')]},'note':{'type':Sequelize[_0xfa63('0x5')]},'phone':{'type':Sequelize[_0xfa63('0x5')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xfa63('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xfa63('0x4')]},'lastMsgDirection':{'type':Sequelize[_0xfa63('0x7')]('in',_0xfa63('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 1fd3361..53554ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf712=['WhatsappInteraction','rawAttributes','key','model','name','keys','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','select','field','color','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','from','user_has_whatsapp_interactions','left_join','users','whatsapp_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','value','having','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','some','compact','isEmpty','concat','createdAt','$gte','parse','$lte','null','`unreadMessages`\x20=\x200','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','resolve','WhatsappAccountId','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.WhatsappAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','all','rows','show','params','include','options','create','body','describe','addMessage','omit','ids','getMessages','findOne','WhatsappMessage','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','addTags','spread','Tag','emit','whatsappInteractionTags:save','removeTags','download','join','server','tmp','root','files','attachments','User','lastName','Attachment','Messages','read','get','mkdirSync','Whatsapp','Account','Owner','N.A.','closed','closedAt','disposition','basename','existsSync','createReadStream','pipe','direction','out','System','secret','renderFile','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','defaults','localhost','socket.io-emitter','redis','./whatsappInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','error','stack','send','map','fullname','TagIds','Tags','split','forEach','push','catch','index'];(function(_0xce0a6c,_0x56139a){var _0x1186f6=function(_0x867bd6){while(--_0x867bd6){_0xce0a6c['push'](_0xce0a6c['shift']());}};_0x1186f6(++_0x56139a);}(_0xf712,0x19c));var _0x2f71=function(_0x433b0f,_0x16b3b1){_0x433b0f=_0x433b0f-0x0;var _0xa584a9=_0xf712[_0x433b0f];return _0xa584a9;};'use strict';var emlformat=require(_0x2f71('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2f71('0x1'));var jsonpatch=require(_0x2f71('0x2'));var rp=require(_0x2f71('0x3'));var moment=require(_0x2f71('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2f71('0x5'));var util=require(_0x2f71('0x6'));var path=require(_0x2f71('0x7'));var sox=require(_0x2f71('0x8'));var csv=require(_0x2f71('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2f71('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2f71('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x2f71('0xc'));var toCsv=require(_0x2f71('0x9'));var querystring=require(_0x2f71('0xd'));var Papa=require(_0x2f71('0xe'));var Redis=require(_0x2f71('0xf'));var authService=require(_0x2f71('0x10'));var qs=require(_0x2f71('0x11'));var as=require(_0x2f71('0x12'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0x2f71('0x13'));var logger=require(_0x2f71('0x14'))('api');var utils=require(_0x2f71('0x15'));var config=require(_0x2f71('0x16'));var licenseUtil=require(_0x2f71('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x2f71('0x18')](config['redis'],{'host':_0x2f71('0x19'),'port':0x18eb});var socket=require(_0x2f71('0x1a'))(new Redis(config[_0x2f71('0x1b')]));require(_0x2f71('0x1c'))[_0x2f71('0x1d')](socket);function respondWithStatusCode(_0x36aef6,_0x73d438){_0x73d438=_0x73d438||0xcc;return function(_0x3cae73){if(_0x3cae73){return _0x36aef6[_0x2f71('0x1e')](_0x73d438);}return _0x36aef6[_0x2f71('0x1f')](_0x73d438)[_0x2f71('0x20')]();};}function respondWithResult(_0x108b77,_0x573503){_0x573503=_0x573503||0xc8;return function(_0x44e5dc){if(_0x44e5dc){return _0x108b77[_0x2f71('0x1f')](_0x573503)[_0x2f71('0x21')](_0x44e5dc);}};}function respondWithFilteredResult(_0x460313,_0x1df66f){return function(_0x2f671e){if(_0x2f671e){var _0x57c8be=typeof _0x1df66f[_0x2f71('0x22')]===_0x2f71('0x23')&&typeof _0x1df66f[_0x2f71('0x24')]===_0x2f71('0x23');var _0x2584ce=_0x2f671e[_0x2f71('0x25')];var _0x9327e4=_0x57c8be?0x0:_0x1df66f[_0x2f71('0x22')];var _0x1f938b=_0x57c8be?_0x2f671e[_0x2f71('0x25')]:_0x1df66f[_0x2f71('0x22')]+_0x1df66f['limit'];var _0x2d30ba;if(_0x1f938b>=_0x2584ce){_0x1f938b=_0x2584ce;_0x2d30ba=0xc8;}else{_0x2d30ba=0xce;}_0x460313[_0x2f71('0x1f')](_0x2d30ba);return _0x460313[_0x2f71('0x26')]('Content-Range',_0x9327e4+'-'+_0x1f938b+'/'+_0x2584ce)['json'](_0x2f671e);}return null;};}function patchUpdates(_0x1652b0){return function(_0x4761c1){try{jsonpatch[_0x2f71('0x27')](_0x4761c1,_0x1652b0,!![]);}catch(_0x405d2f){return BPromise['reject'](_0x405d2f);}return _0x4761c1[_0x2f71('0x28')]();};}function saveUpdates(_0x1a2259,_0x5a4bdf){return function(_0x3bad7f){if(_0x3bad7f){return _0x3bad7f[_0x2f71('0x29')](_0x1a2259)[_0x2f71('0x2a')](function(_0x3b64a7){return _0x3b64a7;});}return null;};}function removeEntity(_0x234ecb,_0x17e2df){return function(_0x544f66){if(_0x544f66){return _0x544f66[_0x2f71('0x2b')]()[_0x2f71('0x2a')](function(){_0x234ecb[_0x2f71('0x1f')](0xcc)[_0x2f71('0x20')]();});}};}function handleEntityNotFound(_0x4da041,_0x2a0caf){return function(_0x29c719){if(!_0x29c719){_0x4da041[_0x2f71('0x1e')](0x194);}return _0x29c719;};}function handleError(_0x3f7118,_0x156488){_0x156488=_0x156488||0x1f4;return function(_0x205a51){logger[_0x2f71('0x2c')](_0x205a51[_0x2f71('0x2d')]);if(_0x205a51['name']){delete _0x205a51['name'];}_0x3f7118[_0x2f71('0x1f')](_0x156488)[_0x2f71('0x2e')](_0x205a51);};}function getInteractionUsers(_0x497587,_0x180057){return new BPromise(function(_0x2790fd,_0x4a67d5){try{if(_0x180057[_0x497587['id']]){_0x497587['Users']=_[_0x2f71('0x2f')](_0x180057[_0x497587['id']],function(_0x44aab8){return{'id':_0x44aab8['id'],'fullname':_0x44aab8[_0x2f71('0x30')]};});}}catch(_0x40e54a){_0x4a67d5(_0x40e54a);}_0x2790fd(_0x497587);});}function getInteractionTags(_0x5899dc,_0xab3924){return new BPromise(function(_0xc2af1e,_0x44d219){try{if(_0x5899dc[_0x2f71('0x31')]){_0x5899dc[_0x2f71('0x32')]=[];_0x5899dc[_0x2f71('0x31')][_0x2f71('0x33')](',')[_0x2f71('0x34')](function(_0x46dc91){_0x5899dc[_0x2f71('0x32')][_0x2f71('0x35')](_0xab3924[_0x46dc91]);});}delete _0x5899dc[_0x2f71('0x31')];}catch(_0x259615){_0x44d219(_0x259615);}_0xc2af1e(_0x5899dc);});}function updateWhatsappInteraction(_0xdc8940,_0x3e815f,_0xbb7c97){return new BPromise(function(_0x6b6975,_0x74e888){return getInteractionUsers(_0xdc8940,_0xbb7c97)[_0x2f71('0x2a')](function(_0x46ad88){return getInteractionTags(_0x46ad88,_0x3e815f);})[_0x2f71('0x2a')](function(_0x540e40){_0x6b6975(_0x540e40);})[_0x2f71('0x36')](function(_0x1c7ecd){_0x74e888(_0x1c7ecd);});});}exports[_0x2f71('0x37')]=function(_0x420b16,_0x1eddff){var _0x1fadd2={},_0x448a04={},_0x3f2bf9={'count':0x0,'rows':[]};var _0x3127cc=_[_0x2f71('0x2f')](db[_0x2f71('0x38')][_0x2f71('0x39')],function(_0x5e8021){return{'name':_0x5e8021['fieldName'],'type':_0x5e8021['type'][_0x2f71('0x3a')]};});_0x448a04[_0x2f71('0x3b')]=_[_0x2f71('0x2f')](_0x3127cc,_0x2f71('0x3c'));_0x448a04['query']=_[_0x2f71('0x3d')](_0x420b16['query']);_0x448a04['filters']=_[_0x2f71('0x3e')](_0x448a04['model'],_0x448a04[_0x2f71('0x3f')]);_0x1fadd2[_0x2f71('0x40')]=_[_0x2f71('0x3e')](_0x448a04['model'],qs[_0x2f71('0x41')](_0x420b16[_0x2f71('0x3f')][_0x2f71('0x41')]));_0x1fadd2[_0x2f71('0x40')]=_0x1fadd2['attributes'][_0x2f71('0x42')]?_0x1fadd2['attributes']:_0x448a04['model'];if(!_0x420b16[_0x2f71('0x3f')][_0x2f71('0x43')]('nolimit')){_0x1fadd2[_0x2f71('0x24')]=qs[_0x2f71('0x24')](_0x420b16[_0x2f71('0x3f')][_0x2f71('0x24')]);_0x1fadd2[_0x2f71('0x22')]=qs['offset'](_0x420b16['query'][_0x2f71('0x22')]);}_0x1fadd2[_0x2f71('0x44')]=qs[_0x2f71('0x45')](_0x420b16[_0x2f71('0x3f')][_0x2f71('0x45')]);_0x1fadd2[_0x2f71('0x46')]=qs[_0x2f71('0x47')](_[_0x2f71('0x48')](_0x420b16['query'],_0x448a04[_0x2f71('0x47')]),_0x3127cc);var _0x2709b1=[];var _0x31d17d=squel[_0x2f71('0x49')]()[_0x2f71('0x4a')]('id')[_0x2f71('0x4a')](_0x2f71('0x3c'))[_0x2f71('0x4a')](_0x2f71('0x4b'))['from'](_0x2f71('0x4c'));var _0x8b7e44=squel[_0x2f71('0x49')]()[_0x2f71('0x4a')](_0x2f71('0x4d'))[_0x2f71('0x4a')](_0x2f71('0x4e'))[_0x2f71('0x4a')](_0x2f71('0x4f'))[_0x2f71('0x50')](_0x2f71('0x51'),'ui')[_0x2f71('0x52')](_0x2f71('0x53'),'u','u.id\x20=\x20ui.UserId');var _0x408f57=squel[_0x2f71('0x49')]()['from'](_0x2f71('0x54'),'i')[_0x2f71('0x52')](_0x2f71('0x55'),'c',_0x2f71('0x56'))[_0x2f71('0x52')](_0x2f71('0x53'),'o',_0x2f71('0x57'))[_0x2f71('0x52')](_0x2f71('0x58'),'a',_0x2f71('0x59'))[_0x2f71('0x52')]('whatsapp_messages','me','me.WhatsappInteractionId\x20=\x20i.id')[_0x2f71('0x52')](_0x2f71('0x5a'),'it','it.WhatsappInteractionId\x20=\x20i.id')[_0x2f71('0x52')](_0x2f71('0x4c'),'t',_0x2f71('0x5b'));var _0x2b602b=squel[_0x2f71('0x5c')]();var _0x30397a=[];var _0x376474=squel[_0x2f71('0x5c')]();var _0x158ccf;if(_0x420b16[_0x2f71('0x3f')][_0x2f71('0x5d')]){_0x158ccf=as['parseSearch'](_0x420b16[_0x2f71('0x3f')][_0x2f71('0x5d')]);var _0x354978=_0x158ccf[_0x2f71('0x5e')];for(var _0x17e25e=0x0;_0x17e25e<_0x158ccf[_0x2f71('0x5f')][_0x2f71('0x42')];_0x17e25e++){var _0x568b30=_0x158ccf[_0x2f71('0x5f')][_0x17e25e];var _0x39a968='i';var _0x34551c=_[_0x2f71('0x60')](_0x3127cc,['name',_0x568b30['field']]);if(!_0x34551c){switch(_0x568b30[_0x2f71('0x4a')]){case'unreadMessages':if(_0x568b30[_0x2f71('0x61')]==0x1){_0x408f57[_0x2f71('0x62')]('`'+_0x568b30[_0x2f71('0x4a')]+'`\x20=\x200');}else{_0x408f57[_0x2f71('0x62')]('`'+_0x568b30[_0x2f71('0x4a')]+_0x2f71('0x63'));}break;case _0x2f71('0x64'):if(_0x568b30[_0x2f71('0x65')]===_0x2f71('0x66')){if(_0x568b30[_0x2f71('0x61')][_0x2f71('0x33')]('\x20')[_0x2f71('0x42')]>0x1){_0x2b602b[_0x354978](_0x2f71('0x67'),qs['getFullTextValue'](_0x568b30['value']),null);}else{var _0x5b366f='%'+_0x568b30[_0x2f71('0x61')]+'%';_0x2b602b[_0x354978](_0x2f71('0x68'),_0x5b366f,_0x5b366f,_0x5b366f);}}else{_0x34551c=_['find'](_0x3127cc,[_0x2f71('0x3c'),_0x2f71('0x69')]);_0x568b30[_0x2f71('0x4a')]=_0x2f71('0x69');_0x572d4f=as[_0x2f71('0x6a')](_0x39a968,_0x34551c[_0x2f71('0x6b')],_0x568b30);_0x2b602b[_0x354978](_0x572d4f[_0x2f71('0x6c')],_0x572d4f[_0x2f71('0x61')]['start'],_0x572d4f['value'][_0x2f71('0x20')]);}break;case'Tag':var _0x28d619=_0x568b30[_0x2f71('0x61')]['split'](',')[_0x2f71('0x2f')](function(_0x4174bc){return Number(_0x4174bc);});_0x28d619[_0x2f71('0x34')](function(_0x4d367a){_0x376474['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4d367a+',%');});_0x30397a=_[_0x2f71('0x6d')](_0x30397a,_0x28d619);break;case'User':if(_0x568b30[_0x2f71('0x65')]===_0x2f71('0x66')){_0x2b602b[_0x354978](_0x2f71('0x6e'),'%'+_0x568b30[_0x2f71('0x61')]+'%',null);}else{_0x34551c=_[_0x2f71('0x60')](_0x3127cc,[_0x2f71('0x3c'),_0x2f71('0x6f')]);_0x568b30['field']='UserId';_0x572d4f=as[_0x2f71('0x6a')](_0x39a968,_0x34551c[_0x2f71('0x6b')],_0x568b30);_0x2b602b[_0x354978](_0x572d4f[_0x2f71('0x6c')],_0x572d4f[_0x2f71('0x61')][_0x2f71('0x70')],_0x572d4f['value']['end']);}break;case'body':_0x572d4f=as[_0x2f71('0x6a')]('me',null,_0x568b30);_0x2b602b[_0x354978](_0x572d4f[_0x2f71('0x6c')],_0x572d4f[_0x2f71('0x61')]['start'],_0x572d4f[_0x2f71('0x61')][_0x2f71('0x20')]);break;}}else{var _0x572d4f=as[_0x2f71('0x6a')](_0x39a968,_0x34551c[_0x2f71('0x6b')],_0x568b30);_0x2b602b[_0x354978](_0x572d4f[_0x2f71('0x6c')],_0x572d4f['value'][_0x2f71('0x70')],_0x572d4f[_0x2f71('0x61')]['end']);}}}else{var _0x47e5d4=_(_0x420b16['query'])[_0x2f71('0x3d')]()[_0x2f71('0x2f')](function(_0x486db9){return _[_0x2f71('0x71')](_0x3127cc,[_0x2f71('0x3c'),_0x486db9])?_0x486db9:undefined;})[_0x2f71('0x72')]()['value']();if(!_[_0x2f71('0x73')](_0x47e5d4)){_0x47e5d4[_0x2f71('0x34')](function(_0x3e3880){if(_0x3e3880==='WhatsappAccountId'){_0x408f57[_0x2f71('0x46')]('i.WhatsappAccountId\x20IN\x20?',[][_0x2f71('0x74')](_0x420b16['query'][_0x3e3880]));}else if(_0x3e3880===_0x2f71('0x75')){var _0xe131a1=JSON['parse'](_0x420b16[_0x2f71('0x3f')][_0x3e3880])[_0x2f71('0x76')];var _0x2dd81b=JSON[_0x2f71('0x77')](_0x420b16[_0x2f71('0x3f')][_0x3e3880])[_0x2f71('0x78')];_0x408f57[_0x2f71('0x46')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0xe131a1,_0x2dd81b);}else{if(_0x420b16['query'][_0x3e3880]===_0x2f71('0x79')){_0x408f57[_0x2f71('0x46')]('i.'+_0x3e3880+'\x20IS\x20NULL');}else{_0x408f57['where']('i.'+_0x3e3880+'\x20=\x20?',_0x420b16['query'][_0x3e3880]);}}});}if(_0x420b16['query']['read']){if(_0x420b16[_0x2f71('0x3f')]['read']==0x1){_0x408f57[_0x2f71('0x62')](_0x2f71('0x7a'));}else{_0x408f57['having']('`unreadMessages`\x20>\x200');}}if(_0x420b16['query'][_0x2f71('0x7b')]){_0x30397a=_['isArray'](_0x420b16[_0x2f71('0x3f')][_0x2f71('0x7b')])?_0x420b16[_0x2f71('0x3f')]['tag']:new Array(_0x420b16[_0x2f71('0x3f')]['tag']);_0x30397a[_0x2f71('0x34')](function(_0x58fda8){_0x376474['or'](_0x2f71('0x7c'),'%,'+_0x58fda8+',%');});}if(_0x420b16['query'][_0x2f71('0x7d')]){var _0x2397cd=_0x420b16['query'][_0x2f71('0x7d')][_0x2f71('0x7e')]('\x5c','\x5c\x5c')[_0x2f71('0x7e')](/'/g,'\x27\x27');if(qs[_0x2f71('0x7f')](_0x2397cd)){_0x2b602b['or'](_0x2f71('0x80'),_0x2397cd+'%')['or']('i.phone\x20LIKE\x20?',_0x2397cd+'%');}else{_0x2b602b['or'](_0x2f71('0x81'),qs[_0x2f71('0x82')](_0x2397cd))['or'](_0x2f71('0x83'),_0x2397cd+'%');}}}_0x408f57[_0x2f71('0x46')](_0x2b602b);_0x408f57[_0x2f71('0x84')](_0x2f71('0x85'));var _0xa5b59e={'type':db[_0x2f71('0x86')][_0x2f71('0x87')][_0x2f71('0x88')],'raw':!![]};var _0x279eca=_0x408f57[_0x2f71('0x89')]();_0x279eca['field'](_0x2f71('0x85'));_0x279eca[_0x2f71('0x4a')](_0x2f71('0x8a'),_0x2f71('0x8b'));if(_0x1fadd2[_0x2f71('0x44')]){_0x1fadd2[_0x2f71('0x44')][_0x2f71('0x34')](function(_0x4b9a5d){var _0x1ef41d=_0x4b9a5d[0x0]===_0x2f71('0x8c')?_0x4b9a5d[0x0]:'i.'+_0x4b9a5d[0x0];_0x408f57[_0x2f71('0x44')](_0x1ef41d,_0x4b9a5d[0x1]===_0x2f71('0x8d')?![]:!![]);});}if(!_['isEmpty'](_0x30397a)){_0x408f57[_0x2f71('0x62')](_0x376474);_0x279eca['where']('t.id\x20IN\x20?',_0x30397a);}BPromise[_0x2f71('0x8e')]()[_0x2f71('0x2a')](function(){if(!_0x158ccf){if(_0x420b16['query'][_0x2f71('0x8f')])return;_0x279eca[_0x2f71('0x46')](_0x2f71('0x90'));_0x408f57[_0x2f71('0x46')](_0x2f71('0x90'));return;}if(_0x420b16[_0x2f71('0x91')][_0x2f71('0x92')]!==_0x2f71('0x93'))return;return _0x420b16[_0x2f71('0x91')]['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})['then'](function(_0x7d59fd){if(_[_0x2f71('0x73')](_0x7d59fd)){_0x279eca['where'](_0x2f71('0x94'));_0x408f57[_0x2f71('0x46')](_0x2f71('0x94'));}else{_0x279eca[_0x2f71('0x46')]('i.WhatsappAccountId\x20IN\x20?',_['map'](_0x7d59fd,'id'));_0x408f57['where']('i.WhatsappAccountId\x20IN\x20?',_[_0x2f71('0x2f')](_0x7d59fd,'id'));}});})[_0x2f71('0x2a')](function(){if(_0x420b16[_0x2f71('0x91')]['role']===_0x2f71('0x93')&&!_0x158ccf&&!_0x420b16[_0x2f71('0x3f')][_0x2f71('0x8f')])return[];return db[_0x2f71('0x95')][_0x2f71('0x3f')](_0x279eca[_0x2f71('0x96')](),_0xa5b59e);})[_0x2f71('0x2a')](function(_0x3d2f7e){_0x3f2bf9[_0x2f71('0x25')]=_0x3d2f7e['length'];if(_0x3f2bf9['count']===0x0)return[];return db[_0x2f71('0x95')][_0x2f71('0x3f')](_0x31d17d[_0x2f71('0x96')](),_0xa5b59e)[_0x2f71('0x2a')](function(_0x509c38){_0x2709b1=_[_0x2f71('0x97')](_0x509c38,'id');_0xa5b59e=_[_0x2f71('0x98')](_0xa5b59e,{'model':db[_0x2f71('0x38')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x420b16['query']['fields']){_0x1fadd2['attributes']['forEach'](function(_0x3b2c32){_0x408f57[_0x2f71('0x4a')]('i.'+_0x3b2c32);});}else{_0x408f57[_0x2f71('0x4a')](_0x2f71('0x8a'),'unreadMessages');_0x408f57[_0x2f71('0x4a')](_0x2f71('0x99'),_0x2f71('0x9a'));_0x408f57[_0x2f71('0x4a')]('a.mandatoryDisposition',_0x2f71('0x9b'));_0x408f57['field'](_0x2f71('0x9c'),_0x2f71('0x8c'));_0x408f57[_0x2f71('0x4a')](_0x2f71('0x9d'));_0x408f57[_0x2f71('0x4a')](_0x2f71('0x9e'),'Contact.firstName');_0x408f57[_0x2f71('0x4a')](_0x2f71('0x9f'),_0x2f71('0xa0'));_0x408f57['field'](_0x2f71('0xa1'),_0x2f71('0xa2'));_0x408f57[_0x2f71('0x4a')](_0x2f71('0xa3'),_0x2f71('0xa4'));_0x408f57['field']('c.mobile',_0x2f71('0xa5'));_0x408f57[_0x2f71('0x4a')]('c.fax',_0x2f71('0xa6'));_0x408f57[_0x2f71('0x4a')](_0x2f71('0xa7'),_0x2f71('0xa8'));_0x408f57[_0x2f71('0x4a')]('o.internal',_0x2f71('0xa9'));_0x408f57['field'](_0x2f71('0xaa'),_0x2f71('0x31'));}if(_0x1fadd2[_0x2f71('0x24')])_0x408f57['limit'](_0x1fadd2['limit']);if(_0x1fadd2[_0x2f71('0x22')])_0x408f57[_0x2f71('0x22')](_0x1fadd2[_0x2f71('0x22')]);return db[_0x2f71('0x95')][_0x2f71('0x3f')](_0x408f57[_0x2f71('0x96')](),_0xa5b59e);})[_0x2f71('0x2a')](function(_0x58e435){if(_0x58e435[_0x2f71('0x42')]>0x0)_0x8b7e44[_0x2f71('0x46')](_0x2f71('0xab'),_[_0x2f71('0x2f')](_0x58e435,'id'));return db[_0x2f71('0x95')][_0x2f71('0x3f')](_0x8b7e44['toString'](),_0xa5b59e)[_0x2f71('0x2a')](function(_0x2f6441){var _0x4fb4f0=_[_0x2f71('0xac')](_0x2f6441,'WhatsappInteractionId');var _0x59db07=[];_0x58e435[_0x2f71('0x34')](function(_0xb9c19a){_0x59db07[_0x2f71('0x35')](updateWhatsappInteraction(_0xb9c19a,_0x2709b1,_0x4fb4f0));});return BPromise[_0x2f71('0xad')](_0x59db07);});});})[_0x2f71('0x2a')](function(_0x3e3a1e){_0x3f2bf9[_0x2f71('0xae')]=_0x3e3a1e;return _0x3f2bf9;})[_0x2f71('0x2a')](respondWithFilteredResult(_0x1eddff,_0x1fadd2))[_0x2f71('0x36')](handleError(_0x1eddff,null));};exports[_0x2f71('0xaf')]=function(_0x2b25d9,_0x22c355){var _0x3fa3ef={'raw':![],'where':{'id':_0x2b25d9[_0x2f71('0xb0')]['id']}},_0xd08d07={};_0xd08d07[_0x2f71('0x3b')]=_[_0x2f71('0x3d')](db[_0x2f71('0x38')][_0x2f71('0x39')]);_0xd08d07[_0x2f71('0x3f')]=_[_0x2f71('0x3d')](_0x2b25d9[_0x2f71('0x3f')]);_0xd08d07['filters']=_['intersection'](_0xd08d07[_0x2f71('0x3b')],_0xd08d07[_0x2f71('0x3f')]);_0x3fa3ef[_0x2f71('0x40')]=_[_0x2f71('0x3e')](_0xd08d07[_0x2f71('0x3b')],qs[_0x2f71('0x41')](_0x2b25d9[_0x2f71('0x3f')][_0x2f71('0x41')]));_0x3fa3ef[_0x2f71('0x40')]=_0x3fa3ef['attributes']['length']?_0x3fa3ef[_0x2f71('0x40')]:_0xd08d07[_0x2f71('0x3b')];if(_0x2b25d9[_0x2f71('0x3f')]['includeAll']){_0x3fa3ef[_0x2f71('0xb1')]=[{'all':!![]}];}_0x3fa3ef=_[_0x2f71('0x98')]({},_0x3fa3ef,_0x2b25d9[_0x2f71('0xb2')]);return db['WhatsappInteraction'][_0x2f71('0x60')](_0x3fa3ef)[_0x2f71('0x2a')](handleEntityNotFound(_0x22c355,null))[_0x2f71('0x2a')](respondWithResult(_0x22c355,null))[_0x2f71('0x36')](handleError(_0x22c355,null));};exports[_0x2f71('0xb3')]=function(_0x346b73,_0x57c49c){return db['WhatsappInteraction']['create'](_0x346b73[_0x2f71('0xb4')],{})[_0x2f71('0x2a')](respondWithResult(_0x57c49c,0xc9))[_0x2f71('0x36')](handleError(_0x57c49c,null));};exports[_0x2f71('0x29')]=function(_0x41ce9a,_0x39e78d){if(_0x41ce9a[_0x2f71('0xb4')]['id']){delete _0x41ce9a[_0x2f71('0xb4')]['id'];}return db[_0x2f71('0x38')][_0x2f71('0x60')]({'where':{'id':_0x41ce9a['params']['id']}})[_0x2f71('0x2a')](handleEntityNotFound(_0x39e78d,null))[_0x2f71('0x2a')](saveUpdates(_0x41ce9a[_0x2f71('0xb4')],null))['then'](respondWithResult(_0x39e78d,null))[_0x2f71('0x36')](handleError(_0x39e78d,null));};exports[_0x2f71('0x2b')]=function(_0x86542a,_0x5f2228){return db[_0x2f71('0x38')][_0x2f71('0x60')]({'where':{'id':_0x86542a[_0x2f71('0xb0')]['id']}})[_0x2f71('0x2a')](handleEntityNotFound(_0x5f2228,null))[_0x2f71('0x2a')](removeEntity(_0x5f2228,null))['catch'](handleError(_0x5f2228,null));};exports[_0x2f71('0xb5')]=function(_0x2de066,_0x47d7ca){return db[_0x2f71('0x38')]['describe']()[_0x2f71('0x2a')](respondWithResult(_0x47d7ca,null))[_0x2f71('0x36')](handleError(_0x47d7ca,null));};exports[_0x2f71('0xb6')]=function(_0x1fb3b7,_0x1eb6c4,_0x1cfad8){return db['WhatsappMessage'][_0x2f71('0x60')]({'where':{'id':_0x1fb3b7[_0x2f71('0xb0')]['id']}})[_0x2f71('0x2a')](handleEntityNotFound(_0x1eb6c4,null))[_0x2f71('0x2a')](function(_0x116ee0){if(_0x116ee0){return _0x116ee0['addMessage'](_0x1fb3b7[_0x2f71('0xb4')]['ids'],_[_0x2f71('0xb7')](_0x1fb3b7[_0x2f71('0xb4')],[_0x2f71('0xb8'),'id'])||{});}})[_0x2f71('0x2a')](respondWithResult(_0x1eb6c4,null))[_0x2f71('0x36')](handleError(_0x1eb6c4,null));};exports[_0x2f71('0xb9')]=function(_0x3b0032,_0x5e6cda,_0x4578be){var _0x5948a0={'raw':![],'where':{}};var _0x2693e6={};var _0x27e6ca={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0x2f71('0xba')]({'where':{'id':_0x3b0032[_0x2f71('0xb0')]['id']}})[_0x2f71('0x2a')](handleEntityNotFound(_0x5e6cda,null))[_0x2f71('0x2a')](function(_0x1caee5){if(_0x1caee5){_0x2693e6['model']=_[_0x2f71('0x3d')](db[_0x2f71('0xbb')][_0x2f71('0x39')]);_0x2693e6['query']=_[_0x2f71('0x3d')](_0x3b0032[_0x2f71('0x3f')]);_0x2693e6[_0x2f71('0x47')]=_[_0x2f71('0x3e')](_0x2693e6[_0x2f71('0x3b')],_0x2693e6[_0x2f71('0x3f')]);_0x5948a0[_0x2f71('0x40')]=_[_0x2f71('0x3e')](_0x2693e6['model'],qs[_0x2f71('0x41')](_0x3b0032[_0x2f71('0x3f')][_0x2f71('0x41')]));_0x5948a0['attributes']=_0x5948a0[_0x2f71('0x40')][_0x2f71('0x42')]?_0x5948a0['attributes']:_0x2693e6[_0x2f71('0x3b')];if(!_0x3b0032[_0x2f71('0x3f')][_0x2f71('0x43')]('nolimit')){_0x5948a0[_0x2f71('0x24')]=qs[_0x2f71('0x24')](_0x3b0032[_0x2f71('0x3f')]['limit']);_0x5948a0[_0x2f71('0x22')]=qs['offset'](_0x3b0032[_0x2f71('0x3f')][_0x2f71('0x22')]);}_0x5948a0[_0x2f71('0x44')]=qs[_0x2f71('0x45')](_0x3b0032[_0x2f71('0x3f')][_0x2f71('0x45')]);_0x5948a0['where']=qs[_0x2f71('0x47')](_[_0x2f71('0x48')](_0x3b0032[_0x2f71('0x3f')],_0x2693e6[_0x2f71('0x47')]));_0x5948a0['where']['WhatsappInteractionId']=_0x1caee5['id'];if(_0x3b0032['query']['filter']){_0x5948a0[_0x2f71('0x46')]=_['merge'](_0x5948a0[_0x2f71('0x46')],{'$or':_[_0x2f71('0x2f')](_0x5948a0[_0x2f71('0x40')],function(_0x46ed28){var _0x132475={};_0x132475[_0x46ed28]={'$like':'%'+_0x3b0032[_0x2f71('0x3f')][_0x2f71('0x7d')]+'%'};return _0x132475;})});}if(_0x3b0032[_0x2f71('0x3f')][_0x2f71('0x76')]){var _0x5a8a77=_0x3b0032[_0x2f71('0x3f')]['$gte']['split'](',');var _0x30e529={};_0x30e529[_0x5a8a77[0x0]]={'$gte':moment(_0x5a8a77[0x1])[_0x2f71('0xbc')](_0x2f71('0xbd'))};_0x5948a0[_0x2f71('0x46')]=_[_0x2f71('0x98')](_0x5948a0[_0x2f71('0x46')],_0x30e529);}_0x5948a0=_[_0x2f71('0x98')]({},_0x5948a0,_0x3b0032[_0x2f71('0xb2')]);return db[_0x2f71('0xbb')][_0x2f71('0x25')]({'where':_0x5948a0[_0x2f71('0x46')]})[_0x2f71('0x2a')](function(_0x4f6b3e){_0x27e6ca[_0x2f71('0x25')]=_0x4f6b3e;if(_0x3b0032['query'][_0x2f71('0xbe')]){_0x5948a0[_0x2f71('0xb1')]=[{'all':!![]}];}return db[_0x2f71('0xbb')]['findAll'](_0x5948a0);})['then'](function(_0x14a3c4){_0x27e6ca[_0x2f71('0xae')]=_0x14a3c4;return _0x27e6ca;});}})[_0x2f71('0x2a')](respondWithFilteredResult(_0x5e6cda,_0x5948a0))[_0x2f71('0x36')](handleError(_0x5e6cda,null));};exports[_0x2f71('0xbf')]=function(_0x2e0113,_0x3db01d,_0x3b5b7b){return db['WhatsappInteraction']['find']({'where':{'id':_0x2e0113[_0x2f71('0xb0')]['id']}})[_0x2f71('0x2a')](handleEntityNotFound(_0x3db01d,null))[_0x2f71('0x2a')](function(_0x1b0215){if(_0x1b0215){return _0x1b0215['setTags'](_0x2e0113[_0x2f71('0xb4')][_0x2f71('0xb8')],_[_0x2f71('0xb7')](_0x2e0113[_0x2f71('0xb4')],[_0x2f71('0xb8'),'id'])||{})[_0x2f71('0xc0')](function(){return db[_0x2f71('0xc1')]['findAll']({'attributes':['id',_0x2f71('0x3c'),_0x2f71('0x4b')],'where':{'id':_0x2e0113[_0x2f71('0xb4')]['ids']}});})['then'](function(_0x164738){socket[_0x2f71('0xc2')](_0x2f71('0xc3'),{'id':Number(_0x2e0113[_0x2f71('0xb0')]['id']),'tags':_0x164738||[]});return{'id':Number(_0x2e0113[_0x2f71('0xb0')]['id']),'tags':_0x164738||[]};});}})[_0x2f71('0x2a')](respondWithResult(_0x3db01d,null))['catch'](handleError(_0x3db01d,null));};exports[_0x2f71('0xc4')]=function(_0x5bf7e0,_0x53286f,_0x2daccb){return db[_0x2f71('0x38')][_0x2f71('0x60')]({'where':{'id':_0x5bf7e0[_0x2f71('0xb0')]['id']}})[_0x2f71('0x2a')](handleEntityNotFound(_0x53286f,null))[_0x2f71('0x2a')](function(_0x2e4107){if(_0x2e4107){return _0x2e4107[_0x2f71('0xc4')](_0x5bf7e0['query'][_0x2f71('0xb8')]);}})[_0x2f71('0x2a')](respondWithStatusCode(_0x53286f,null))[_0x2f71('0x36')](handleError(_0x53286f,null));};exports[_0x2f71('0xc5')]=function(_0x45a0bb,_0x1e83d4){var _0x56fa5f=moment()['unix']()[_0x2f71('0x96')]();var _0x4d2aac=path[_0x2f71('0xc6')](config['root'],_0x2f71('0xc7'),'files',_0x2f71('0xc8'));var _0xf2936f=path[_0x2f71('0xc6')](config[_0x2f71('0xc9')],_0x2f71('0xc7'),_0x2f71('0xca'),_0x2f71('0xcb'));var _0x46fbb=path[_0x2f71('0xc6')](_0x4d2aac,_0x56fa5f);var _0x374f63=util[_0x2f71('0xbc')]('transcript-%d-%s.zip',_0x45a0bb['params']['id'],_0x56fa5f);var _0x5c3fb4=path[_0x2f71('0xc6')](_0x4d2aac,_0x374f63);var _0x599484=[];_0x599484[_0x2f71('0x35')]({'model':db[_0x2f71('0xcc')],'as':_0x2f71('0xcc'),'attributes':['id',_0x2f71('0x30')],'raw':!![]});_0x599484[_0x2f71('0x35')]({'model':db['CmContact'],'as':_0x2f71('0x64'),'attributes':['id','firstName',_0x2f71('0xcd')],'raw':!![]});if(_0x45a0bb[_0x2f71('0x3f')]['attachments']){_0x599484[_0x2f71('0x35')]({'model':db['Attachment'],'as':_0x2f71('0xce'),'raw':!![]});}var _0x40d2b9=[{'model':db[_0x2f71('0xbb')],'as':_0x2f71('0xcf'),'attributes':['id',_0x2f71('0xb4'),'createdAt','direction','secret',_0x2f71('0xd0')],'include':_0x599484}];_0x40d2b9[_0x2f71('0x35')]({'model':db['WhatsappAccount'],'as':'Account','attributes':['id',_0x2f71('0x3c')]});_0x40d2b9[_0x2f71('0x35')]({'model':db[_0x2f71('0xcc')],'as':'Owner','attributes':['id',_0x2f71('0x30')]});return db['WhatsappInteraction'][_0x2f71('0x60')]({'where':{'id':_0x45a0bb[_0x2f71('0xb0')]['id']},'include':_0x40d2b9})[_0x2f71('0x2a')](handleEntityNotFound(_0x1e83d4,null))['then'](function(_0x5a6907){if(_0x5a6907){var _0x262ff2=_0x5a6907[_0x2f71('0xd1')]({'plain':!![]});fs[_0x2f71('0xd2')](_0x46fbb);var _0xeaeb3={'channel':_0x2f71('0xd3'),'account':_0x262ff2[_0x2f71('0xd4')]['name'],'agent':_0x262ff2[_0x2f71('0xd5')]?_0x262ff2[_0x2f71('0xd5')][_0x2f71('0x30')]:_0x2f71('0xd6'),'createdAt':moment(_0x262ff2[_0x2f71('0x75')])['format'](_0x2f71('0xbd'))[_0x2f71('0x96')](),'closedAt':_0x262ff2[_0x2f71('0xd7')]?moment(_0x262ff2[_0x2f71('0xd8')])[_0x2f71('0xbc')](_0x2f71('0xbd'))[_0x2f71('0x96')]():'','disposition':_0x262ff2[_0x2f71('0xd9')],'messages':_(_0x262ff2[_0x2f71('0xcf')])[_0x2f71('0x7d')]({'secret':![]})[_0x2f71('0x2f')](function(_0x781aa3){if(_0x781aa3[_0x2f71('0xce')]){var _0x188556=path[_0x2f71('0xc6')](_0xf2936f,_0x781aa3[_0x2f71('0xce')][_0x2f71('0xda')]);if(fs[_0x2f71('0xdb')](_0x188556)){fs[_0x2f71('0xdc')](_0x188556)[_0x2f71('0xdd')](fs['createWriteStream'](path[_0x2f71('0xc6')](_0x46fbb,_0x781aa3[_0x2f71('0xce')]['basename'])));}}return{'date':moment(_0x781aa3[_0x2f71('0x75')])[_0x2f71('0xbc')](_0x2f71('0xbd'))['toString'](),'sender':_0x781aa3[_0x2f71('0xde')]===_0x2f71('0xdf')?_0x781aa3[_0x2f71('0xcc')]?_0x781aa3['User'][_0x2f71('0x30')]:_0x2f71('0xe0'):_0x781aa3['Contact']['firstName']+(_0x781aa3[_0x2f71('0x64')][_0x2f71('0xcd')]?'\x20'+_0x781aa3[_0x2f71('0x64')]['lastName']:''),'body':_0x781aa3[_0x2f71('0xce')]?_0x781aa3[_0x2f71('0xce')]['basename']:_0x781aa3['body'],'direction':_0x781aa3['direction']===_0x2f71('0xdf')?'A':'C','secret':_0x781aa3[_0x2f71('0xe1')],'read':_0x781aa3['read'],'attachment':_0x781aa3[_0x2f71('0xce')]};})[_0x2f71('0x61')]()};return ejs[_0x2f71('0xe2')](path['join'](config['root'],_0x2f71('0xc7'),'views',_0x2f71('0xe3')),{'interaction':_0xeaeb3})['then'](function(_0x3447c4){var _0x9bcaf9=path[_0x2f71('0xc6')](_0x46fbb,_0x2f71('0xe4')+_0x262ff2['id']+'-'+_0x56fa5f+_0x2f71('0xe5'));var _0x374a31={'path':_0x9bcaf9,'channel':_0x2f71('0xd3'),'interactionId':_0x262ff2['id']};return pdf[_0x2f71('0xe6')](_0x3447c4,_0x374a31);})['then'](function(){return new BPromise(function(_0x8a238c,_0x2dd4e8){zipdir(_0x46fbb,{'saveTo':_0x5c3fb4},function(_0x212df0,_0x34a30c){if(_0x212df0)return _0x2dd4e8(_0x212df0);return _0x8a238c(_0x34a30c);});})['then'](function(){return new BPromise(function(_0x2cd83a,_0x114a2c){rimraf(_0x46fbb,function(_0x104df2){if(_0x104df2)_0x114a2c(_0x104df2);return _0x2cd83a();});});})[_0x2f71('0x2a')](function(){return _0x1e83d4['download'](_0x5c3fb4,_0x374f63,function(_0x111883){if(_0x111883){console[_0x2f71('0xe7')](_0x2f71('0xe8'),_0x111883);}else{fs[_0x2f71('0xe9')](_0x5c3fb4);}});});});}else{return _0x1e83d4['sendStatus'](0xc8);}})[_0x2f71('0x36')](handleError(_0x1e83d4,null));};
\ No newline at end of file
+var _0x2243=['Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.phone','c.fax','Contact.fax','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','WhatsappInteractionId','push','all','rows','show','includeAll','include','options','catch','create','destroy','params','describe','addMessage','WhatsappMessage','ids','pick','format','YYYY-MM-DD\x20HH:mm:ss','addTags','omit','spread','findAll','emit','whatsappInteractionTags:save','removeTags','download','unix','server','files','tmp','join','root','attachments','transcript-%d-%s.zip','CmContact','firstName','lastName','Attachment','direction','Account','Owner','get','mkdirSync','Whatsapp','closedAt','disposition','basename','createReadStream','pipe','createWriteStream','out','System','secret','renderFile','views','transcript-','.pdf','createPdfFromHTML','log','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','end','json','undefined','limit','count','set','apply','update','then','stack','name','map','fullname','TagIds','Tags','split','forEach','waiting','talking','answered','unmanaged','total','closed','UserId','index','WhatsappInteraction','rawAttributes','fieldName','key','model','keys','query','filters','attributes','intersection','fields','length','nolimit','offset','order','sort','where','select','field','color','tools_tags','u.id','ui.WhatsappInteractionId','from','user_has_whatsapp_interactions','left_join','users','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','expr','parseSearch','sqlOperator','conditions','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','Tag','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','body','compact','isEmpty','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.WhatsappAccountId\x20IS\x20NULL','toString','sequelize','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName'];(function(_0x3f81e6,_0xccedbe){var _0x5798ab=function(_0x2430e6){while(--_0x2430e6){_0x3f81e6['push'](_0x3f81e6['shift']());}};_0x5798ab(++_0xccedbe);}(_0x2243,0x13b));var _0x3224=function(_0x440ac2,_0x360931){_0x440ac2=_0x440ac2-0x0;var _0x30ee89=_0x2243[_0x440ac2];return _0x30ee89;};'use strict';var emlformat=require(_0x3224('0x0'));var rimraf=require(_0x3224('0x1'));var zipdir=require(_0x3224('0x2'));var jsonpatch=require(_0x3224('0x3'));var rp=require(_0x3224('0x4'));var moment=require(_0x3224('0x5'));var BPromise=require(_0x3224('0x6'));var Mustache=require(_0x3224('0x7'));var util=require(_0x3224('0x8'));var path=require(_0x3224('0x9'));var sox=require(_0x3224('0xa'));var csv=require(_0x3224('0xb'));var ejs=require(_0x3224('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3224('0xd'));var squel=require(_0x3224('0xe'));var crypto=require(_0x3224('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x3224('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3224('0x11'));var Redis=require(_0x3224('0x12'));var authService=require(_0x3224('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x3224('0x14'));var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3224('0x15'))(_0x3224('0x16'));var utils=require('../../config/utils');var config=require(_0x3224('0x17'));var licenseUtil=require(_0x3224('0x18'));var db=require(_0x3224('0x19'))['db'];config[_0x3224('0x1a')]=_[_0x3224('0x1b')](config[_0x3224('0x1a')],{'host':_0x3224('0x1c'),'port':0x18eb});var socket=require(_0x3224('0x1d'))(new Redis(config[_0x3224('0x1a')]));require(_0x3224('0x1e'))[_0x3224('0x1f')](socket);function respondWithStatusCode(_0x5088db,_0xd330ea){_0xd330ea=_0xd330ea||0xcc;return function(_0x5b325c){if(_0x5b325c){return _0x5088db[_0x3224('0x20')](_0xd330ea);}return _0x5088db[_0x3224('0x21')](_0xd330ea)[_0x3224('0x22')]();};}function respondWithResult(_0x54ae06,_0x2cb0c9){_0x2cb0c9=_0x2cb0c9||0xc8;return function(_0x3426d7){if(_0x3426d7){return _0x54ae06[_0x3224('0x21')](_0x2cb0c9)[_0x3224('0x23')](_0x3426d7);}};}function respondWithFilteredResult(_0x2387fa,_0x2778e2){return function(_0x296d57){if(_0x296d57){var _0x3f3c3c=typeof _0x2778e2['offset']===_0x3224('0x24')&&typeof _0x2778e2[_0x3224('0x25')]===_0x3224('0x24');var _0x39a0a7=_0x296d57[_0x3224('0x26')];var _0x112789=_0x3f3c3c?0x0:_0x2778e2['offset'];var _0x43838b=_0x3f3c3c?_0x296d57['count']:_0x2778e2['offset']+_0x2778e2[_0x3224('0x25')];var _0x189c77;if(_0x43838b>=_0x39a0a7){_0x43838b=_0x39a0a7;_0x189c77=0xc8;}else{_0x189c77=0xce;}_0x2387fa[_0x3224('0x21')](_0x189c77);return _0x2387fa[_0x3224('0x27')]('Content-Range',_0x112789+'-'+_0x43838b+'/'+_0x39a0a7)[_0x3224('0x23')](_0x296d57);}return null;};}function patchUpdates(_0x5c5da0){return function(_0x1eeee0){try{jsonpatch[_0x3224('0x28')](_0x1eeee0,_0x5c5da0,!![]);}catch(_0x93b9fd){return BPromise['reject'](_0x93b9fd);}return _0x1eeee0['save']();};}function saveUpdates(_0x3dba30,_0x1c200f){return function(_0x1a90c0){if(_0x1a90c0){return _0x1a90c0[_0x3224('0x29')](_0x3dba30)[_0x3224('0x2a')](function(_0x304bb4){return _0x304bb4;});}return null;};}function removeEntity(_0x59856f,_0x3497c0){return function(_0x233b89){if(_0x233b89){return _0x233b89['destroy']()[_0x3224('0x2a')](function(){_0x59856f[_0x3224('0x21')](0xcc)[_0x3224('0x22')]();});}};}function handleEntityNotFound(_0x41b242,_0xdb6f78){return function(_0x366914){if(!_0x366914){_0x41b242[_0x3224('0x20')](0x194);}return _0x366914;};}function handleError(_0x55a9a5,_0x2c7388){_0x2c7388=_0x2c7388||0x1f4;return function(_0x175d33){logger['error'](_0x175d33[_0x3224('0x2b')]);if(_0x175d33[_0x3224('0x2c')]){delete _0x175d33[_0x3224('0x2c')];}_0x55a9a5[_0x3224('0x21')](_0x2c7388)['send'](_0x175d33);};}function getInteractionUsers(_0x40194d,_0xffc18b){return new BPromise(function(_0x302dbb,_0x283c9f){try{if(_0xffc18b[_0x40194d['id']]){_0x40194d['Users']=_[_0x3224('0x2d')](_0xffc18b[_0x40194d['id']],function(_0x4610e1){return{'id':_0x4610e1['id'],'fullname':_0x4610e1[_0x3224('0x2e')]};});}}catch(_0x4ca64d){_0x283c9f(_0x4ca64d);}_0x302dbb(_0x40194d);});}function getInteractionTags(_0x5548b7,_0x272c36){return new BPromise(function(_0x9b3693,_0x1a1862){try{if(_0x5548b7[_0x3224('0x2f')]){_0x5548b7[_0x3224('0x30')]=[];_0x5548b7[_0x3224('0x2f')][_0x3224('0x31')](',')[_0x3224('0x32')](function(_0x3c0868){_0x5548b7[_0x3224('0x30')]['push'](_0x272c36[_0x3c0868]);});}delete _0x5548b7[_0x3224('0x2f')];}catch(_0x62a8d0){_0x1a1862(_0x62a8d0);}_0x9b3693(_0x5548b7);});}function updateWhatsappInteraction(_0x471142,_0x49d6c3,_0x2d7d9c){return new BPromise(function(_0x2cc18b,_0x3e07a4){return getInteractionUsers(_0x471142,_0x2d7d9c)['then'](function(_0x404012){return getInteractionTags(_0x404012,_0x49d6c3);})[_0x3224('0x2a')](function(_0x282a1e){return getStateInteraction(_0x282a1e);})['then'](function(_0x5dd479){_0x2cc18b(_0x5dd479);})['catch'](function(_0x37094c){_0x3e07a4(_0x37094c);});});}function getStateInteraction(_0x31f739){return new BPromise(function(_0x1544ed,_0x2ebc3f){_0x31f739[_0x3224('0x33')]=0x0;_0x31f739[_0x3224('0x34')]=0x0;_0x31f739[_0x3224('0x35')]=0x0;_0x31f739[_0x3224('0x36')]=0x0;_0x31f739[_0x3224('0x37')]=0x0;if(!_0x31f739[_0x3224('0x38')]&&!_0x31f739[_0x3224('0x39')])_0x31f739[_0x3224('0x33')]+=0x1;if(!_0x31f739[_0x3224('0x38')]&&_0x31f739[_0x3224('0x39')])_0x31f739[_0x3224('0x34')]+=0x1;if(_0x31f739['closed']&&_0x31f739[_0x3224('0x39')])_0x31f739['answered']+=0x1;if(_0x31f739[_0x3224('0x38')]&&!_0x31f739[_0x3224('0x39')])_0x31f739[_0x3224('0x36')]+=0x1;_0x31f739['total']+=0x1;_0x1544ed(_0x31f739);});}exports[_0x3224('0x3a')]=function(_0x5e6c9b,_0x111587){var _0x2ca78b={},_0x4e6d94={},_0x364439={'count':0x0,'rows':[]};var _0x52d7c5=_[_0x3224('0x2d')](db[_0x3224('0x3b')][_0x3224('0x3c')],function(_0xb1fa4c){return{'name':_0xb1fa4c[_0x3224('0x3d')],'type':_0xb1fa4c['type'][_0x3224('0x3e')]};});_0x4e6d94[_0x3224('0x3f')]=_['map'](_0x52d7c5,'name');_0x4e6d94['query']=_[_0x3224('0x40')](_0x5e6c9b[_0x3224('0x41')]);_0x4e6d94[_0x3224('0x42')]=_['intersection'](_0x4e6d94[_0x3224('0x3f')],_0x4e6d94[_0x3224('0x41')]);_0x2ca78b[_0x3224('0x43')]=_[_0x3224('0x44')](_0x4e6d94[_0x3224('0x3f')],qs[_0x3224('0x45')](_0x5e6c9b[_0x3224('0x41')][_0x3224('0x45')]));_0x2ca78b[_0x3224('0x43')]=_0x2ca78b['attributes'][_0x3224('0x46')]?_0x2ca78b[_0x3224('0x43')]:_0x4e6d94['model'];if(!_0x5e6c9b[_0x3224('0x41')]['hasOwnProperty'](_0x3224('0x47'))){_0x2ca78b['limit']=qs[_0x3224('0x25')](_0x5e6c9b['query'][_0x3224('0x25')]);_0x2ca78b[_0x3224('0x48')]=qs[_0x3224('0x48')](_0x5e6c9b[_0x3224('0x41')][_0x3224('0x48')]);}_0x2ca78b[_0x3224('0x49')]=qs[_0x3224('0x4a')](_0x5e6c9b['query'][_0x3224('0x4a')]);_0x2ca78b[_0x3224('0x4b')]=qs[_0x3224('0x42')](_['pick'](_0x5e6c9b['query'],_0x4e6d94[_0x3224('0x42')]),_0x52d7c5);var _0x170449=[];var _0x13bd9d=squel[_0x3224('0x4c')]()[_0x3224('0x4d')]('id')[_0x3224('0x4d')]('name')['field'](_0x3224('0x4e'))['from'](_0x3224('0x4f'));var _0x2878dc=squel['select']()[_0x3224('0x4d')](_0x3224('0x50'))[_0x3224('0x4d')]('u.fullname')['field'](_0x3224('0x51'))[_0x3224('0x52')](_0x3224('0x53'),'ui')[_0x3224('0x54')](_0x3224('0x55'),'u','u.id\x20=\x20ui.UserId');var _0x12fd2d=squel[_0x3224('0x4c')]()[_0x3224('0x52')]('whatsapp_interactions','i')[_0x3224('0x54')]('cm_contacts','c',_0x3224('0x56'))[_0x3224('0x54')](_0x3224('0x55'),'o','o.id\x20=\x20i.UserId')[_0x3224('0x54')](_0x3224('0x57'),'a',_0x3224('0x58'))[_0x3224('0x54')]('whatsapp_messages','me',_0x3224('0x59'))[_0x3224('0x54')](_0x3224('0x5a'),'it',_0x3224('0x5b'))[_0x3224('0x54')]('tools_tags','t','t.id\x20=\x20it.TagId');var _0x570f7c=squel[_0x3224('0x5c')]();var _0x4affd5=[];var _0x5cae71=squel[_0x3224('0x5c')]();var _0x232d17;if(_0x5e6c9b[_0x3224('0x41')]['search']){_0x232d17=as[_0x3224('0x5d')](_0x5e6c9b[_0x3224('0x41')]['search']);var _0x21f70f=_0x232d17[_0x3224('0x5e')];for(var _0x4caa3b=0x0;_0x4caa3b<_0x232d17['conditions'][_0x3224('0x46')];_0x4caa3b++){var _0x34ec38=_0x232d17[_0x3224('0x5f')][_0x4caa3b];var _0x1e57dc='i';var _0x4442c1=_['find'](_0x52d7c5,[_0x3224('0x2c'),_0x34ec38[_0x3224('0x4d')]]);if(!_0x4442c1){switch(_0x34ec38[_0x3224('0x4d')]){case _0x3224('0x60'):if(_0x34ec38[_0x3224('0x61')]==0x1){_0x12fd2d[_0x3224('0x62')]('`'+_0x34ec38[_0x3224('0x4d')]+_0x3224('0x63'));}else{_0x12fd2d[_0x3224('0x62')]('`'+_0x34ec38[_0x3224('0x4d')]+_0x3224('0x64'));}break;case _0x3224('0x65'):if(_0x34ec38['operator']===_0x3224('0x66')){if(_0x34ec38[_0x3224('0x61')][_0x3224('0x31')]('\x20')[_0x3224('0x46')]>0x1){_0x570f7c[_0x21f70f](_0x3224('0x67'),qs[_0x3224('0x68')](_0x34ec38[_0x3224('0x61')]),null);}else{var _0x84bce0='%'+_0x34ec38[_0x3224('0x61')]+'%';_0x570f7c[_0x21f70f](_0x3224('0x69'),_0x84bce0,_0x84bce0,_0x84bce0);}}else{_0x4442c1=_['find'](_0x52d7c5,[_0x3224('0x2c'),_0x3224('0x6a')]);_0x34ec38[_0x3224('0x4d')]=_0x3224('0x6a');_0x35b179=as[_0x3224('0x6b')](_0x1e57dc,_0x4442c1[_0x3224('0x6c')],_0x34ec38);_0x570f7c[_0x21f70f](_0x35b179[_0x3224('0x6d')],_0x35b179[_0x3224('0x61')][_0x3224('0x6e')],_0x35b179[_0x3224('0x61')][_0x3224('0x22')]);}break;case _0x3224('0x6f'):var _0x142544=_0x34ec38['value'][_0x3224('0x31')](',')['map'](function(_0x52ea6a){return Number(_0x52ea6a);});_0x142544['forEach'](function(_0x5265d6){_0x5cae71['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x5265d6+',%');});_0x4affd5=_[_0x3224('0x70')](_0x4affd5,_0x142544);break;case _0x3224('0x71'):if(_0x34ec38[_0x3224('0x72')]===_0x3224('0x66')){_0x570f7c[_0x21f70f](_0x3224('0x73'),'%'+_0x34ec38[_0x3224('0x61')]+'%',null);}else{_0x4442c1=_[_0x3224('0x74')](_0x52d7c5,['name',_0x3224('0x39')]);_0x34ec38['field']='UserId';_0x35b179=as[_0x3224('0x6b')](_0x1e57dc,_0x4442c1[_0x3224('0x6c')],_0x34ec38);_0x570f7c[_0x21f70f](_0x35b179[_0x3224('0x6d')],_0x35b179[_0x3224('0x61')][_0x3224('0x6e')],_0x35b179[_0x3224('0x61')][_0x3224('0x22')]);}break;case _0x3224('0x75'):_0x35b179=as['buildExpression']('me',null,_0x34ec38);_0x570f7c[_0x21f70f](_0x35b179['text'],_0x35b179[_0x3224('0x61')]['start'],_0x35b179['value']['end']);break;}}else{var _0x35b179=as[_0x3224('0x6b')](_0x1e57dc,_0x4442c1[_0x3224('0x6c')],_0x34ec38);_0x570f7c[_0x21f70f](_0x35b179[_0x3224('0x6d')],_0x35b179[_0x3224('0x61')][_0x3224('0x6e')],_0x35b179['value'][_0x3224('0x22')]);}}}else{var _0x69322c=_(_0x5e6c9b['query'])[_0x3224('0x40')]()['map'](function(_0x214e04){return _['some'](_0x52d7c5,['name',_0x214e04])?_0x214e04:undefined;})[_0x3224('0x76')]()[_0x3224('0x61')]();if(!_[_0x3224('0x77')](_0x69322c)){_0x69322c[_0x3224('0x32')](function(_0x481e5d){if(_0x481e5d===_0x3224('0x78')){_0x12fd2d[_0x3224('0x4b')](_0x3224('0x79'),[][_0x3224('0x7a')](_0x5e6c9b['query'][_0x481e5d]));}else if(_0x481e5d===_0x3224('0x7b')){var _0x39e698=JSON[_0x3224('0x7c')](_0x5e6c9b['query'][_0x481e5d])[_0x3224('0x7d')];var _0x5d4a70=JSON[_0x3224('0x7c')](_0x5e6c9b[_0x3224('0x41')][_0x481e5d])[_0x3224('0x7e')];_0x12fd2d[_0x3224('0x4b')](_0x3224('0x7f'),_0x39e698,_0x5d4a70);}else{if(_0x5e6c9b['query'][_0x481e5d]===_0x3224('0x80')){_0x12fd2d['where']('i.'+_0x481e5d+_0x3224('0x81'));}else{_0x12fd2d['where']('i.'+_0x481e5d+'\x20=\x20?',_0x5e6c9b['query'][_0x481e5d]);}}});}if(_0x5e6c9b[_0x3224('0x41')][_0x3224('0x82')]){if(_0x5e6c9b[_0x3224('0x41')]['read']==0x1){_0x12fd2d['having'](_0x3224('0x83'));}else{_0x12fd2d['having']('`unreadMessages`\x20>\x200');}}if(_0x5e6c9b[_0x3224('0x41')][_0x3224('0x84')]){_0x4affd5=_[_0x3224('0x85')](_0x5e6c9b['query'][_0x3224('0x84')])?_0x5e6c9b[_0x3224('0x41')][_0x3224('0x84')]:new Array(_0x5e6c9b[_0x3224('0x41')][_0x3224('0x84')]);_0x4affd5[_0x3224('0x32')](function(_0x155179){_0x5cae71['or'](_0x3224('0x86'),'%,'+_0x155179+',%');});}if(_0x5e6c9b[_0x3224('0x41')][_0x3224('0x87')]){var _0x2aa59c=_0x5e6c9b['query']['filter'][_0x3224('0x88')]('\x5c','\x5c\x5c')[_0x3224('0x88')](/'/g,'\x27\x27');if(qs[_0x3224('0x89')](_0x2aa59c)){_0x570f7c['or'](_0x3224('0x8a'),_0x2aa59c+'%')['or'](_0x3224('0x8b'),_0x2aa59c+'%');}else{_0x570f7c['or'](_0x3224('0x8c'),qs['getFullTextValue'](_0x2aa59c))['or'](_0x3224('0x8d'),_0x2aa59c+'%');}}}_0x12fd2d[_0x3224('0x4b')](_0x570f7c);_0x12fd2d['group'](_0x3224('0x8e'));var _0x4e1fe3={'type':db[_0x3224('0x8f')][_0x3224('0x90')][_0x3224('0x91')],'raw':!![]};var _0x11147b=_0x12fd2d['clone']();_0x11147b[_0x3224('0x4d')]('i.id');_0x11147b[_0x3224('0x4d')](_0x3224('0x92'),'unreadMessages');if(_0x2ca78b[_0x3224('0x49')]){_0x2ca78b[_0x3224('0x49')]['forEach'](function(_0xdeeae2){var _0x561c7f=_0xdeeae2[0x0]===_0x3224('0x93')?_0xdeeae2[0x0]:'i.'+_0xdeeae2[0x0];_0x12fd2d['order'](_0x561c7f,_0xdeeae2[0x1]===_0x3224('0x94')?![]:!![]);});}if(!_[_0x3224('0x77')](_0x4affd5)){_0x12fd2d['having'](_0x5cae71);_0x11147b[_0x3224('0x4b')](_0x3224('0x95'),_0x4affd5);}BPromise[_0x3224('0x96')]()['then'](function(){if(!_0x232d17){if(_0x5e6c9b['query'][_0x3224('0x78')])return;_0x11147b[_0x3224('0x4b')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');_0x12fd2d[_0x3224('0x4b')](_0x3224('0x97'));return;}if(_0x5e6c9b[_0x3224('0x98')][_0x3224('0x99')]!==_0x3224('0x9a'))return;return _0x5e6c9b[_0x3224('0x98')]['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})[_0x3224('0x2a')](function(_0x2041e7){if(_[_0x3224('0x77')](_0x2041e7)){_0x11147b[_0x3224('0x4b')](_0x3224('0x9b'));_0x12fd2d[_0x3224('0x4b')]('i.WhatsappAccountId\x20IS\x20NULL');}else{_0x11147b[_0x3224('0x4b')]('i.WhatsappAccountId\x20IN\x20?',_['map'](_0x2041e7,'id'));_0x12fd2d['where']('i.WhatsappAccountId\x20IN\x20?',_[_0x3224('0x2d')](_0x2041e7,'id'));}});})[_0x3224('0x2a')](function(){if(_0x5e6c9b[_0x3224('0x98')][_0x3224('0x99')]===_0x3224('0x9a')&&!_0x232d17&&!_0x5e6c9b[_0x3224('0x41')][_0x3224('0x78')])return[];return db['sequelize']['query'](_0x11147b[_0x3224('0x9c')](),_0x4e1fe3);})['then'](function(_0x4516b5){_0x364439[_0x3224('0x26')]=_0x4516b5['length'];if(_0x364439[_0x3224('0x26')]===0x0)return[];return db[_0x3224('0x9d')]['query'](_0x13bd9d['toString'](),_0x4e1fe3)['then'](function(_0x2a9c17){_0x170449=_[_0x3224('0x9e')](_0x2a9c17,'id');_0x4e1fe3=_[_0x3224('0x9f')](_0x4e1fe3,{'model':db[_0x3224('0x3b')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5e6c9b[_0x3224('0x41')][_0x3224('0x45')]){_0x2ca78b[_0x3224('0x43')]['forEach'](function(_0x41822b){_0x12fd2d[_0x3224('0x4d')]('i.'+_0x41822b);});}else{_0x12fd2d[_0x3224('0x4d')](_0x3224('0x92'),_0x3224('0x60'));_0x12fd2d['field'](_0x3224('0xa0'),_0x3224('0xa1'));_0x12fd2d[_0x3224('0x4d')](_0x3224('0xa2'),_0x3224('0xa3'));_0x12fd2d[_0x3224('0x4d')](_0x3224('0xa4'),_0x3224('0x93'));_0x12fd2d['field'](_0x3224('0xa5'));_0x12fd2d[_0x3224('0x4d')](_0x3224('0xa6'),_0x3224('0xa7'));_0x12fd2d['field'](_0x3224('0xa8'),'Contact.lastName');_0x12fd2d[_0x3224('0x4d')](_0x3224('0xa9'),_0x3224('0xaa'));_0x12fd2d['field'](_0x3224('0xab'),_0x3224('0xac'));_0x12fd2d['field']('c.mobile','Contact.mobile');_0x12fd2d[_0x3224('0x4d')](_0x3224('0xad'),_0x3224('0xae'));_0x12fd2d['field']('o.fullname',_0x3224('0xaf'));_0x12fd2d['field'](_0x3224('0xb0'),_0x3224('0xb1'));_0x12fd2d[_0x3224('0x4d')](_0x3224('0xb2'),_0x3224('0x2f'));}if(_0x2ca78b['limit'])_0x12fd2d[_0x3224('0x25')](_0x2ca78b[_0x3224('0x25')]);if(_0x2ca78b[_0x3224('0x48')])_0x12fd2d['offset'](_0x2ca78b[_0x3224('0x48')]);return db[_0x3224('0x9d')]['query'](_0x12fd2d[_0x3224('0x9c')](),_0x4e1fe3);})['then'](function(_0x2d5223){if(_0x2d5223[_0x3224('0x46')]>0x0)_0x2878dc['where']('ui.WhatsappInteractionId\x20IN\x20?',_[_0x3224('0x2d')](_0x2d5223,'id'));return db[_0x3224('0x9d')][_0x3224('0x41')](_0x2878dc[_0x3224('0x9c')](),_0x4e1fe3)['then'](function(_0x41ad21){var _0x4f2269=_[_0x3224('0xb3')](_0x41ad21,_0x3224('0xb4'));var _0x3ef268=[];_0x2d5223[_0x3224('0x32')](function(_0x59b7ca){_0x3ef268[_0x3224('0xb5')](updateWhatsappInteraction(_0x59b7ca,_0x170449,_0x4f2269));});return BPromise[_0x3224('0xb6')](_0x3ef268);});});})[_0x3224('0x2a')](function(_0x5bcbc2){_0x364439[_0x3224('0xb7')]=_0x5bcbc2;return _0x364439;})[_0x3224('0x2a')](respondWithFilteredResult(_0x111587,_0x2ca78b))['catch'](handleError(_0x111587,null));};exports[_0x3224('0xb8')]=function(_0x5d0a00,_0x2487f8){var _0x13d4d9={'raw':![],'where':{'id':_0x5d0a00['params']['id']}},_0x3bf351={};_0x3bf351[_0x3224('0x3f')]=_[_0x3224('0x40')](db[_0x3224('0x3b')][_0x3224('0x3c')]);_0x3bf351[_0x3224('0x41')]=_[_0x3224('0x40')](_0x5d0a00[_0x3224('0x41')]);_0x3bf351['filters']=_[_0x3224('0x44')](_0x3bf351[_0x3224('0x3f')],_0x3bf351[_0x3224('0x41')]);_0x13d4d9[_0x3224('0x43')]=_[_0x3224('0x44')](_0x3bf351[_0x3224('0x3f')],qs[_0x3224('0x45')](_0x5d0a00[_0x3224('0x41')][_0x3224('0x45')]));_0x13d4d9[_0x3224('0x43')]=_0x13d4d9[_0x3224('0x43')]['length']?_0x13d4d9[_0x3224('0x43')]:_0x3bf351['model'];if(_0x5d0a00[_0x3224('0x41')][_0x3224('0xb9')]){_0x13d4d9[_0x3224('0xba')]=[{'all':!![]}];}_0x13d4d9=_['merge']({},_0x13d4d9,_0x5d0a00[_0x3224('0xbb')]);return db[_0x3224('0x3b')][_0x3224('0x74')](_0x13d4d9)['then'](handleEntityNotFound(_0x2487f8,null))[_0x3224('0x2a')](respondWithResult(_0x2487f8,null))[_0x3224('0xbc')](handleError(_0x2487f8,null));};exports[_0x3224('0xbd')]=function(_0x244d5c,_0x461335){return db[_0x3224('0x3b')][_0x3224('0xbd')](_0x244d5c[_0x3224('0x75')],{})[_0x3224('0x2a')](respondWithResult(_0x461335,0xc9))[_0x3224('0xbc')](handleError(_0x461335,null));};exports['update']=function(_0x40146c,_0x3512ce){if(_0x40146c[_0x3224('0x75')]['id']){delete _0x40146c['body']['id'];}return db[_0x3224('0x3b')][_0x3224('0x74')]({'where':{'id':_0x40146c['params']['id']}})[_0x3224('0x2a')](handleEntityNotFound(_0x3512ce,null))[_0x3224('0x2a')](saveUpdates(_0x40146c['body'],null))[_0x3224('0x2a')](respondWithResult(_0x3512ce,null))[_0x3224('0xbc')](handleError(_0x3512ce,null));};exports[_0x3224('0xbe')]=function(_0x379b58,_0x162b6f){return db[_0x3224('0x3b')][_0x3224('0x74')]({'where':{'id':_0x379b58[_0x3224('0xbf')]['id']}})[_0x3224('0x2a')](handleEntityNotFound(_0x162b6f,null))[_0x3224('0x2a')](removeEntity(_0x162b6f,null))['catch'](handleError(_0x162b6f,null));};exports['describe']=function(_0x3d4185,_0x36b91f){return db[_0x3224('0x3b')][_0x3224('0xc0')]()[_0x3224('0x2a')](respondWithResult(_0x36b91f,null))[_0x3224('0xbc')](handleError(_0x36b91f,null));};exports[_0x3224('0xc1')]=function(_0xe7dd74,_0x5ac4e0,_0x58e29f){return db[_0x3224('0xc2')][_0x3224('0x74')]({'where':{'id':_0xe7dd74['params']['id']}})['then'](handleEntityNotFound(_0x5ac4e0,null))['then'](function(_0x3573ba){if(_0x3573ba){return _0x3573ba[_0x3224('0xc1')](_0xe7dd74[_0x3224('0x75')][_0x3224('0xc3')],_['omit'](_0xe7dd74[_0x3224('0x75')],[_0x3224('0xc3'),'id'])||{});}})[_0x3224('0x2a')](respondWithResult(_0x5ac4e0,null))[_0x3224('0xbc')](handleError(_0x5ac4e0,null));};exports['getMessages']=function(_0x1ec35e,_0xa05ca2,_0x1b0317){var _0x1edaf2={'raw':![],'where':{}};var _0x2f29ef={};var _0x1c131f={'count':0x0,'rows':[]};return db[_0x3224('0x3b')]['findOne']({'where':{'id':_0x1ec35e[_0x3224('0xbf')]['id']}})['then'](handleEntityNotFound(_0xa05ca2,null))[_0x3224('0x2a')](function(_0xe418f9){if(_0xe418f9){_0x2f29ef[_0x3224('0x3f')]=_[_0x3224('0x40')](db[_0x3224('0xc2')][_0x3224('0x3c')]);_0x2f29ef[_0x3224('0x41')]=_[_0x3224('0x40')](_0x1ec35e[_0x3224('0x41')]);_0x2f29ef[_0x3224('0x42')]=_['intersection'](_0x2f29ef[_0x3224('0x3f')],_0x2f29ef[_0x3224('0x41')]);_0x1edaf2[_0x3224('0x43')]=_[_0x3224('0x44')](_0x2f29ef['model'],qs[_0x3224('0x45')](_0x1ec35e['query'][_0x3224('0x45')]));_0x1edaf2[_0x3224('0x43')]=_0x1edaf2[_0x3224('0x43')][_0x3224('0x46')]?_0x1edaf2[_0x3224('0x43')]:_0x2f29ef[_0x3224('0x3f')];if(!_0x1ec35e[_0x3224('0x41')]['hasOwnProperty'](_0x3224('0x47'))){_0x1edaf2['limit']=qs[_0x3224('0x25')](_0x1ec35e[_0x3224('0x41')][_0x3224('0x25')]);_0x1edaf2['offset']=qs[_0x3224('0x48')](_0x1ec35e[_0x3224('0x41')][_0x3224('0x48')]);}_0x1edaf2['order']=qs['sort'](_0x1ec35e['query'][_0x3224('0x4a')]);_0x1edaf2['where']=qs[_0x3224('0x42')](_[_0x3224('0xc4')](_0x1ec35e['query'],_0x2f29ef[_0x3224('0x42')]));_0x1edaf2['where'][_0x3224('0xb4')]=_0xe418f9['id'];if(_0x1ec35e['query'][_0x3224('0x87')]){_0x1edaf2['where']=_[_0x3224('0x9f')](_0x1edaf2[_0x3224('0x4b')],{'$or':_[_0x3224('0x2d')](_0x1edaf2[_0x3224('0x43')],function(_0x37eadd){var _0x14eea1={};_0x14eea1[_0x37eadd]={'$like':'%'+_0x1ec35e['query'][_0x3224('0x87')]+'%'};return _0x14eea1;})});}if(_0x1ec35e[_0x3224('0x41')][_0x3224('0x7d')]){var _0x442be2=_0x1ec35e[_0x3224('0x41')][_0x3224('0x7d')][_0x3224('0x31')](',');var _0x6701ab={};_0x6701ab[_0x442be2[0x0]]={'$gte':moment(_0x442be2[0x1])[_0x3224('0xc5')](_0x3224('0xc6'))};_0x1edaf2['where']=_[_0x3224('0x9f')](_0x1edaf2[_0x3224('0x4b')],_0x6701ab);}_0x1edaf2=_['merge']({},_0x1edaf2,_0x1ec35e[_0x3224('0xbb')]);return db[_0x3224('0xc2')]['count']({'where':_0x1edaf2[_0x3224('0x4b')]})[_0x3224('0x2a')](function(_0x245b09){_0x1c131f[_0x3224('0x26')]=_0x245b09;if(_0x1ec35e[_0x3224('0x41')][_0x3224('0xb9')]){_0x1edaf2[_0x3224('0xba')]=[{'all':!![]}];}return db[_0x3224('0xc2')]['findAll'](_0x1edaf2);})[_0x3224('0x2a')](function(_0x76ec66){_0x1c131f[_0x3224('0xb7')]=_0x76ec66;return _0x1c131f;});}})[_0x3224('0x2a')](respondWithFilteredResult(_0xa05ca2,_0x1edaf2))[_0x3224('0xbc')](handleError(_0xa05ca2,null));};exports[_0x3224('0xc7')]=function(_0x2f6586,_0x43f26d,_0x32e375){return db[_0x3224('0x3b')][_0x3224('0x74')]({'where':{'id':_0x2f6586[_0x3224('0xbf')]['id']}})[_0x3224('0x2a')](handleEntityNotFound(_0x43f26d,null))[_0x3224('0x2a')](function(_0x2190f3){if(_0x2190f3){return _0x2190f3['setTags'](_0x2f6586[_0x3224('0x75')][_0x3224('0xc3')],_[_0x3224('0xc8')](_0x2f6586[_0x3224('0x75')],[_0x3224('0xc3'),'id'])||{})[_0x3224('0xc9')](function(){return db[_0x3224('0x6f')][_0x3224('0xca')]({'attributes':['id',_0x3224('0x2c'),_0x3224('0x4e')],'where':{'id':_0x2f6586[_0x3224('0x75')]['ids']}});})[_0x3224('0x2a')](function(_0x3a7c15){socket[_0x3224('0xcb')](_0x3224('0xcc'),{'id':Number(_0x2f6586[_0x3224('0xbf')]['id']),'tags':_0x3a7c15||[]});return{'id':Number(_0x2f6586[_0x3224('0xbf')]['id']),'tags':_0x3a7c15||[]};});}})[_0x3224('0x2a')](respondWithResult(_0x43f26d,null))['catch'](handleError(_0x43f26d,null));};exports['removeTags']=function(_0x2d0783,_0x2e0152,_0x5e13a3){return db[_0x3224('0x3b')][_0x3224('0x74')]({'where':{'id':_0x2d0783[_0x3224('0xbf')]['id']}})[_0x3224('0x2a')](handleEntityNotFound(_0x2e0152,null))[_0x3224('0x2a')](function(_0x28f961){if(_0x28f961){return _0x28f961[_0x3224('0xcd')](_0x2d0783[_0x3224('0x41')]['ids']);}})[_0x3224('0x2a')](respondWithStatusCode(_0x2e0152,null))[_0x3224('0xbc')](handleError(_0x2e0152,null));};exports[_0x3224('0xce')]=function(_0x5c0b16,_0x93989d){var _0x1bed5a=moment()[_0x3224('0xcf')]()[_0x3224('0x9c')]();var _0x323453=path['join'](config['root'],_0x3224('0xd0'),_0x3224('0xd1'),_0x3224('0xd2'));var _0x587920=path[_0x3224('0xd3')](config[_0x3224('0xd4')],'server',_0x3224('0xd1'),_0x3224('0xd5'));var _0x35be40=path[_0x3224('0xd3')](_0x323453,_0x1bed5a);var _0x4aecf4=util['format'](_0x3224('0xd6'),_0x5c0b16['params']['id'],_0x1bed5a);var _0x44ebb6=path[_0x3224('0xd3')](_0x323453,_0x4aecf4);var _0x36147b=[];_0x36147b[_0x3224('0xb5')]({'model':db[_0x3224('0x71')],'as':_0x3224('0x71'),'attributes':['id',_0x3224('0x2e')],'raw':!![]});_0x36147b[_0x3224('0xb5')]({'model':db[_0x3224('0xd7')],'as':_0x3224('0x65'),'attributes':['id',_0x3224('0xd8'),_0x3224('0xd9')],'raw':!![]});if(_0x5c0b16['query'][_0x3224('0xd5')]){_0x36147b[_0x3224('0xb5')]({'model':db[_0x3224('0xda')],'as':_0x3224('0xda'),'raw':!![]});}var _0x38ba6b=[{'model':db[_0x3224('0xc2')],'as':'Messages','attributes':['id',_0x3224('0x75'),'createdAt',_0x3224('0xdb'),'secret','read'],'include':_0x36147b}];_0x38ba6b['push']({'model':db['WhatsappAccount'],'as':_0x3224('0xdc'),'attributes':['id',_0x3224('0x2c')]});_0x38ba6b['push']({'model':db[_0x3224('0x71')],'as':_0x3224('0xdd'),'attributes':['id',_0x3224('0x2e')]});return db[_0x3224('0x3b')][_0x3224('0x74')]({'where':{'id':_0x5c0b16['params']['id']},'include':_0x38ba6b})[_0x3224('0x2a')](handleEntityNotFound(_0x93989d,null))[_0x3224('0x2a')](function(_0x2b68b3){if(_0x2b68b3){var _0x2d177e=_0x2b68b3[_0x3224('0xde')]({'plain':!![]});fs[_0x3224('0xdf')](_0x35be40);var _0x3f8f52={'channel':_0x3224('0xe0'),'account':_0x2d177e['Account'][_0x3224('0x2c')],'agent':_0x2d177e[_0x3224('0xdd')]?_0x2d177e[_0x3224('0xdd')][_0x3224('0x2e')]:'N.A.','createdAt':moment(_0x2d177e[_0x3224('0x7b')])[_0x3224('0xc5')](_0x3224('0xc6'))[_0x3224('0x9c')](),'closedAt':_0x2d177e[_0x3224('0x38')]?moment(_0x2d177e[_0x3224('0xe1')])[_0x3224('0xc5')]('YYYY-MM-DD\x20HH:mm:ss')[_0x3224('0x9c')]():'','disposition':_0x2d177e[_0x3224('0xe2')],'messages':_(_0x2d177e['Messages'])[_0x3224('0x87')]({'secret':![]})['map'](function(_0x1c607d){if(_0x1c607d['Attachment']){var _0x597530=path[_0x3224('0xd3')](_0x587920,_0x1c607d['Attachment'][_0x3224('0xe3')]);if(fs['existsSync'](_0x597530)){fs[_0x3224('0xe4')](_0x597530)[_0x3224('0xe5')](fs[_0x3224('0xe6')](path[_0x3224('0xd3')](_0x35be40,_0x1c607d[_0x3224('0xda')][_0x3224('0xe3')])));}}return{'date':moment(_0x1c607d[_0x3224('0x7b')])[_0x3224('0xc5')](_0x3224('0xc6'))[_0x3224('0x9c')](),'sender':_0x1c607d['direction']===_0x3224('0xe7')?_0x1c607d[_0x3224('0x71')]?_0x1c607d['User'][_0x3224('0x2e')]:_0x3224('0xe8'):_0x1c607d['Contact'][_0x3224('0xd8')]+(_0x1c607d[_0x3224('0x65')][_0x3224('0xd9')]?'\x20'+_0x1c607d[_0x3224('0x65')][_0x3224('0xd9')]:''),'body':_0x1c607d[_0x3224('0xda')]?_0x1c607d[_0x3224('0xda')][_0x3224('0xe3')]:_0x1c607d[_0x3224('0x75')],'direction':_0x1c607d[_0x3224('0xdb')]==='out'?'A':'C','secret':_0x1c607d[_0x3224('0xe9')],'read':_0x1c607d[_0x3224('0x82')],'attachment':_0x1c607d[_0x3224('0xda')]};})[_0x3224('0x61')]()};return ejs[_0x3224('0xea')](path[_0x3224('0xd3')](config[_0x3224('0xd4')],'server',_0x3224('0xeb'),'downloadInteraction.ejs'),{'interaction':_0x3f8f52})['then'](function(_0x2ec980){var _0x178740=path['join'](_0x35be40,_0x3224('0xec')+_0x2d177e['id']+'-'+_0x1bed5a+_0x3224('0xed'));var _0x425199={'path':_0x178740,'channel':'Whatsapp','interactionId':_0x2d177e['id']};return pdf[_0x3224('0xee')](_0x2ec980,_0x425199);})['then'](function(){return new BPromise(function(_0x4a7fc3,_0x2a5038){zipdir(_0x35be40,{'saveTo':_0x44ebb6},function(_0x575b87,_0x50e2d7){if(_0x575b87)return _0x2a5038(_0x575b87);return _0x4a7fc3(_0x50e2d7);});})[_0x3224('0x2a')](function(){return new BPromise(function(_0x335aae,_0x3abe10){rimraf(_0x35be40,function(_0x44c670){if(_0x44c670)_0x3abe10(_0x44c670);return _0x335aae();});});})[_0x3224('0x2a')](function(){return _0x93989d[_0x3224('0xce')](_0x44ebb6,_0x4aecf4,function(_0x8ba89f){if(_0x8ba89f){console[_0x3224('0xef')](_0x3224('0xf0'),_0x8ba89f);}else{fs['unlinkSync'](_0x44ebb6);}});});});}else{return _0x93989d[_0x3224('0x20')](0xc8);}})[_0x3224('0xbc')](handleError(_0x93989d,null));};
\ No newline at end of file
index 509409c..3b93e8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x402f=['then','map','findAll','setDataValue','unreadMessages','length','emit','events','WhatsappInteraction','setMaxListeners','save','update','getUsers'];(function(_0x7238b9,_0x165a54){var _0x4c0011=function(_0x2a9339){while(--_0x2a9339){_0x7238b9['push'](_0x7238b9['shift']());}};_0x4c0011(++_0x165a54);}(_0x402f,0x6f));var _0xf402=function(_0x1017a8,_0x3f5853){_0x1017a8=_0x1017a8-0x0;var _0x5a3009=_0x402f[_0x1017a8];return _0x5a3009;};'use strict';var EventEmitter=require(_0xf402('0x0'));var WhatsappInteraction=require('../../mysqldb')['db'][_0xf402('0x1')];var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xf402('0x2')](0x0);var events={'afterCreate':_0xf402('0x3'),'afterUpdate':_0xf402('0x4'),'afterDestroy':'remove'};function emitEvent(_0x246c5f){return function(_0x48771a,_0x20c2cc,_0x270766){_0x48771a[_0xf402('0x5')]({'attributes':['id'],'raw':!![]})[_0xf402('0x6')](function(_0xa1b27d){_0x48771a['setDataValue']('Users',_0xa1b27d[_0xf402('0x7')](function(_0x154bd3){return{'id':_0x154bd3['id']};}));return WhatsappMessage[_0xf402('0x8')]({'where':{'WhatsappInteractionId':_0x48771a['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf402('0x6')](function(_0x18c918){_0x48771a[_0xf402('0x9')](_0xf402('0xa'),_0x18c918[_0xf402('0xb')]);WhatsappInteractionEvents['emit'](_0x246c5f+':'+_0x48771a['id'],_0x48771a);WhatsappInteractionEvents[_0xf402('0xc')](_0x246c5f,_0x48771a);_0x270766(null);})['catch'](_0x270766(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module['exports']=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x4d46=['../../mysqldb','WhatsappInteraction','WhatsappMessage','setMaxListeners','update','remove','then','Users','map','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events'];(function(_0x137ed9,_0x16ffff){var _0x9d0aee=function(_0x118d44){while(--_0x118d44){_0x137ed9['push'](_0x137ed9['shift']());}};_0x9d0aee(++_0x16ffff);}(_0x4d46,0x197));var _0x64d4=function(_0x2a872f,_0x43794c){_0x2a872f=_0x2a872f-0x0;var _0x23cb26=_0x4d46[_0x2a872f];return _0x23cb26;};'use strict';var EventEmitter=require(_0x64d4('0x0'));var WhatsappInteraction=require(_0x64d4('0x1'))['db'][_0x64d4('0x2')];var WhatsappMessage=require(_0x64d4('0x1'))['db'][_0x64d4('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x64d4('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0x64d4('0x5'),'afterDestroy':_0x64d4('0x6')};function emitEvent(_0x200491){return function(_0x1ab08e,_0x1f7d33,_0x3b8932){_0x1ab08e['getUsers']({'attributes':['id'],'raw':!![]})[_0x64d4('0x7')](function(_0x33b72d){_0x1ab08e['setDataValue'](_0x64d4('0x8'),_0x33b72d[_0x64d4('0x9')](function(_0x54f161){return{'id':_0x54f161['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0x1ab08e['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x4ce2cf){_0x1ab08e['setDataValue'](_0x64d4('0xa'),_0x4ce2cf[_0x64d4('0xb')]);WhatsappInteractionEvents[_0x64d4('0xc')](_0x200491+':'+_0x1ab08e['id'],_0x1ab08e);WhatsappInteractionEvents[_0x64d4('0xc')](_0x200491,_0x1ab08e);_0x3b8932(null);})[_0x64d4('0xd')](_0x3b8932(null));};}for(var e in events){if(events[_0x64d4('0xe')](e)){var event=events[e];WhatsappInteraction[_0x64d4('0xf')](e,emitEvent(event));}}module[_0x64d4('0x10')]=WhatsappInteractionEvents;
\ No newline at end of file
index 5d5ece6..759b6c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8669=['rimraf','../../config/environment','define','whatsapp_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','request-promise'];(function(_0x27f1ab,_0x53a02d){var _0x219132=function(_0x3c6018){while(--_0x3c6018){_0x27f1ab['push'](_0x27f1ab['shift']());}};_0x219132(++_0x53a02d);}(_0x8669,0x79));var _0x9866=function(_0x3f8412,_0x2c5b28){_0x3f8412=_0x3f8412-0x0;var _0x5296f5=_0x8669[_0x3f8412];return _0x5296f5;};'use strict';var _=require(_0x9866('0x0'));var util=require(_0x9866('0x1'));var logger=require(_0x9866('0x2'))(_0x9866('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9866('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9866('0x5'));var config=require(_0x9866('0x6'));var attributes=require('./whatsappInteraction.attributes');module['exports']=function(_0x5b8e41,_0x35e66d){return _0x5b8e41[_0x9866('0x7')]('WhatsappInteraction',attributes,{'tableName':_0x9866('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4cc7e7,_0x5442e7,_0x420a7e){if(_0x4cc7e7[_0x9866('0x9')](_0x9866('0xa'))){_0x4cc7e7[_0x9866('0xb')]=moment()[_0x9866('0xc')](_0x9866('0xd'));}_0x420a7e(null,_0x4cc7e7);}}});};
\ No newline at end of file
+var _0x219f=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','lodash'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x219f,0x141));var _0xf219=function(_0x23f536,_0x38519e){_0x23f536=_0x23f536-0x0;var _0x2354d7=_0x219f[_0x23f536];return _0x2354d7;};'use strict';var _=require(_0xf219('0x0'));var util=require(_0xf219('0x1'));var logger=require(_0xf219('0x2'))('api');var moment=require(_0xf219('0x3'));var BPromise=require(_0xf219('0x4'));var rp=require(_0xf219('0x5'));var fs=require('fs');var path=require(_0xf219('0x6'));var rimraf=require(_0xf219('0x7'));var config=require(_0xf219('0x8'));var attributes=require(_0xf219('0x9'));module['exports']=function(_0x25efdc,_0x161eb6){return _0x25efdc['define']('WhatsappInteraction',attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x85a3e4,_0xd926c0,_0x259daf){if(_0x85a3e4[_0xf219('0xa')](_0xf219('0xb'))){_0x85a3e4['closedAt']=moment()[_0xf219('0xc')](_0xf219('0xd'));}_0x259daf(null,_0x85a3e4);}}});};
\ No newline at end of file
index 55be6f7..f3a3330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5385=['stringify','error','code','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','body','options','raw','where','attributes','limit','debug','AddTagsToWhatsappInteraction','find','ids','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./whatsappInteraction.socket','register','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','WhatsappInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x26a757,_0x3c452e){var _0x29eec1=function(_0x13dad0){while(--_0x13dad0){_0x26a757['push'](_0x26a757['shift']());}};_0x29eec1(++_0x3c452e);}(_0x5385,0x1d6));var _0x5538=function(_0x5508a9,_0x42f8b3){_0x5508a9=_0x5508a9-0x0;var _0x168cc7=_0x5385[_0x5508a9];return _0x168cc7;};'use strict';var _=require(_0x5538('0x0'));var util=require(_0x5538('0x1'));var moment=require(_0x5538('0x2'));var BPromise=require('bluebird');var rs=require(_0x5538('0x3'));var fs=require('fs');var Redis=require(_0x5538('0x4'));var db=require(_0x5538('0x5'))['db'];var utils=require(_0x5538('0x6'));var logger=require(_0x5538('0x7'))(_0x5538('0x8'));var config=require(_0x5538('0x9'));var jayson=require(_0x5538('0xa'));var client=jayson['client'][_0x5538('0xb')]({'port':0x232a});config[_0x5538('0xc')]=_[_0x5538('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5538('0xe'))(new Redis(config[_0x5538('0xc')]));require(_0x5538('0xf'))[_0x5538('0x10')](socket);function respondWithRpcPromise(_0x41cee1,_0x24252b,_0x311fb1){return new BPromise(function(_0x405cce,_0x582458){return client['request'](_0x41cee1,_0x311fb1)[_0x5538('0x11')](function(_0x29c0af){logger[_0x5538('0x12')](_0x5538('0x13'),_0x24252b,_0x5538('0x14'));logger['debug'](_0x5538('0x15'),_0x24252b,_0x5538('0x14'),JSON[_0x5538('0x16')](_0x29c0af));if(_0x29c0af[_0x5538('0x17')]){if(_0x29c0af['error'][_0x5538('0x18')]===0x1f4){logger[_0x5538('0x17')](_0x5538('0x13'),_0x24252b,_0x29c0af[_0x5538('0x17')][_0x5538('0x19')]);return _0x582458(_0x29c0af[_0x5538('0x17')]['message']);}logger[_0x5538('0x17')](_0x5538('0x13'),_0x24252b,_0x29c0af['error'][_0x5538('0x19')]);return _0x405cce(_0x29c0af[_0x5538('0x17')]['message']);}else{logger[_0x5538('0x12')](_0x5538('0x13'),_0x24252b,'request\x20sent');_0x405cce(_0x29c0af[_0x5538('0x1a')][_0x5538('0x19')]);}})[_0x5538('0x1b')](function(_0x1bbbda){logger[_0x5538('0x17')](_0x5538('0x13'),_0x24252b,_0x1bbbda);_0x582458(_0x1bbbda);});});}exports[_0x5538('0x1c')]=function(_0x1cd6bc){var _0xa45bdc=this;return new Promise(function(_0x37385d,_0x5e5b1f){return db[_0x5538('0x1d')]['update'](_0x1cd6bc[_0x5538('0x1e')],{'raw':_0x1cd6bc[_0x5538('0x1f')]?_0x1cd6bc[_0x5538('0x1f')][_0x5538('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1cd6bc[_0x5538('0x1f')]?_0x1cd6bc[_0x5538('0x1f')][_0x5538('0x21')]||null:null,'attributes':_0x1cd6bc[_0x5538('0x1f')]?_0x1cd6bc[_0x5538('0x1f')][_0x5538('0x22')]||null:null,'limit':_0x1cd6bc['options']?_0x1cd6bc[_0x5538('0x1f')][_0x5538('0x23')]||null:null})[_0x5538('0x11')](function(_0x5a4392){logger['info'](_0x5538('0x1c'),_0x1cd6bc);logger[_0x5538('0x24')](_0x5538('0x1c'),_0x1cd6bc,JSON[_0x5538('0x16')](_0x5a4392));_0x37385d(_0x5a4392);})['catch'](function(_0x416419){logger[_0x5538('0x17')](_0x5538('0x1c'),_0x416419[_0x5538('0x19')],_0x1cd6bc);_0x5e5b1f(_0xa45bdc[_0x5538('0x17')](0x1f4,_0x416419[_0x5538('0x19')]));});});};exports[_0x5538('0x25')]=function(_0x5006ce){return new Promise(function(_0x4f13b1,_0x7b0bf9){return db[_0x5538('0x1d')][_0x5538('0x26')]({'where':_0x5006ce['options']?_0x5006ce[_0x5538('0x1f')][_0x5538('0x21')]||null:null})[_0x5538('0x11')](function(_0x3697cf){if(_0x3697cf){return _0x3697cf['addTags'](_0x5006ce[_0x5538('0x1e')][_0x5538('0x27')],_['omit'](_0x5006ce[_0x5538('0x1e')],[_0x5538('0x27'),'id'])||{});}})['spread'](function(_0x3992b6){logger['info'](_0x5538('0x28'),_0x5006ce);logger[_0x5538('0x24')](_0x5538('0x28'),_0x5006ce,JSON[_0x5538('0x16')](_0x3992b6));_0x4f13b1(_0x3992b6);})[_0x5538('0x1b')](function(_0x177eac){logger['error'](_0x5538('0x28'),_0x177eac[_0x5538('0x19')],_0x5006ce);_0x7b0bf9(_this[_0x5538('0x17')](0x1f4,_0x177eac['message']));});});};
\ No newline at end of file
+var _0xe058=['where','attributes','AddTagsToWhatsappInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','raw','options'];(function(_0x5ce1c2,_0x42f483){var _0x1994fd=function(_0x5c3997){while(--_0x5c3997){_0x5ce1c2['push'](_0x5ce1c2['shift']());}};_0x1994fd(++_0x42f483);}(_0xe058,0x18c));var _0x8e05=function(_0x51a5c8,_0x3adba9){_0x51a5c8=_0x51a5c8-0x0;var _0x1b9410=_0xe058[_0x51a5c8];return _0x1b9410;};'use strict';var _=require(_0x8e05('0x0'));var util=require(_0x8e05('0x1'));var moment=require(_0x8e05('0x2'));var BPromise=require(_0x8e05('0x3'));var rs=require(_0x8e05('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8e05('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8e05('0x6'))(_0x8e05('0x7'));var config=require(_0x8e05('0x8'));var jayson=require(_0x8e05('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x8e05('0xa')]=_[_0x8e05('0xb')](config[_0x8e05('0xa')],{'host':_0x8e05('0xc'),'port':0x18eb});var socket=require(_0x8e05('0xd'))(new Redis(config[_0x8e05('0xa')]));require(_0x8e05('0xe'))[_0x8e05('0xf')](socket);function respondWithRpcPromise(_0x5e4ca4,_0x242be8,_0x5835ac){return new BPromise(function(_0x951f65,_0x27ebed){return client[_0x8e05('0x10')](_0x5e4ca4,_0x5835ac)[_0x8e05('0x11')](function(_0x30d705){logger[_0x8e05('0x12')](_0x8e05('0x13'),_0x242be8,_0x8e05('0x14'));logger[_0x8e05('0x15')]('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x242be8,_0x8e05('0x14'),JSON[_0x8e05('0x16')](_0x30d705));if(_0x30d705['error']){if(_0x30d705[_0x8e05('0x17')][_0x8e05('0x18')]===0x1f4){logger[_0x8e05('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x242be8,_0x30d705[_0x8e05('0x17')][_0x8e05('0x19')]);return _0x27ebed(_0x30d705[_0x8e05('0x17')][_0x8e05('0x19')]);}logger[_0x8e05('0x17')](_0x8e05('0x13'),_0x242be8,_0x30d705[_0x8e05('0x17')][_0x8e05('0x19')]);return _0x951f65(_0x30d705[_0x8e05('0x17')][_0x8e05('0x19')]);}else{logger['info'](_0x8e05('0x13'),_0x242be8,_0x8e05('0x14'));_0x951f65(_0x30d705[_0x8e05('0x1a')]['message']);}})[_0x8e05('0x1b')](function(_0x4b5092){logger['error'](_0x8e05('0x13'),_0x242be8,_0x4b5092);_0x27ebed(_0x4b5092);});});}exports[_0x8e05('0x1c')]=function(_0x36cebd){var _0x362b34=this;return new Promise(function(_0x1ac91e,_0x2bb568){return db[_0x8e05('0x1d')][_0x8e05('0x1e')](_0x36cebd[_0x8e05('0x1f')],{'raw':_0x36cebd['options']?_0x36cebd['options'][_0x8e05('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x36cebd[_0x8e05('0x21')]?_0x36cebd[_0x8e05('0x21')][_0x8e05('0x22')]||null:null,'attributes':_0x36cebd[_0x8e05('0x21')]?_0x36cebd[_0x8e05('0x21')][_0x8e05('0x23')]||null:null,'limit':_0x36cebd[_0x8e05('0x21')]?_0x36cebd[_0x8e05('0x21')]['limit']||null:null})[_0x8e05('0x11')](function(_0x48a05c){logger['info'](_0x8e05('0x1c'),_0x36cebd);logger['debug'](_0x8e05('0x1c'),_0x36cebd,JSON[_0x8e05('0x16')](_0x48a05c));_0x1ac91e(_0x48a05c);})[_0x8e05('0x1b')](function(_0x34fa77){logger[_0x8e05('0x17')]('UpdateWhatsappInteraction',_0x34fa77[_0x8e05('0x19')],_0x36cebd);_0x2bb568(_0x362b34[_0x8e05('0x17')](0x1f4,_0x34fa77['message']));});});};exports[_0x8e05('0x24')]=function(_0x2b240e){return new Promise(function(_0x190252,_0x274c64){return db[_0x8e05('0x1d')][_0x8e05('0x25')]({'where':_0x2b240e[_0x8e05('0x21')]?_0x2b240e['options']['where']||null:null})[_0x8e05('0x11')](function(_0x56bf6b){if(_0x56bf6b){return _0x56bf6b[_0x8e05('0x26')](_0x2b240e[_0x8e05('0x1f')][_0x8e05('0x27')],_[_0x8e05('0x28')](_0x2b240e['body'],['ids','id'])||{});}})[_0x8e05('0x29')](function(_0x1f254d){logger[_0x8e05('0x12')]('AddTags',_0x2b240e);logger['debug'](_0x8e05('0x2a'),_0x2b240e,JSON[_0x8e05('0x16')](_0x1f254d));_0x190252(_0x1f254d);})[_0x8e05('0x1b')](function(_0x1efd92){logger[_0x8e05('0x17')](_0x8e05('0x2a'),_0x1efd92[_0x8e05('0x19')],_0x2b240e);_0x274c64(_this[_0x8e05('0x17')](0x1f4,_0x1efd92['message']));});});};
\ No newline at end of file
index 5c3a3ba..9e409b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4a6=['whatsappInteraction:','./whatsappInteraction.events','save','update','register','length'];(function(_0xe0fd39,_0x4f982c){var _0x40d4a4=function(_0x4f8a41){while(--_0x4f8a41){_0xe0fd39['push'](_0xe0fd39['shift']());}};_0x40d4a4(++_0x4f982c);}(_0xb4a6,0xeb));var _0x6b4a=function(_0x29e2ba,_0x1b171f){_0x29e2ba=_0x29e2ba-0x0;var _0x5c5920=_0xb4a6[_0x29e2ba];return _0x5c5920;};'use strict';var WhatsappInteractionEvents=require(_0x6b4a('0x0'));var events=[_0x6b4a('0x1'),'remove',_0x6b4a('0x2')];function createListener(_0x399854,_0x424205){return function(_0xc95811){_0x424205['emit'](_0x399854,_0xc95811);};}function removeListener(_0x1e8d22,_0x130eab){return function(){WhatsappInteractionEvents['removeListener'](_0x1e8d22,_0x130eab);};}exports[_0x6b4a('0x3')]=function(_0x3bd6b8){for(var _0xb0624=0x0,_0xa12560=events[_0x6b4a('0x4')];_0xb0624<_0xa12560;_0xb0624++){var _0x22a157=events[_0xb0624];var _0x59bf46=createListener(_0x6b4a('0x5')+_0x22a157,_0x3bd6b8);WhatsappInteractionEvents['on'](_0x22a157,_0x59bf46);}};
\ No newline at end of file
+var _0x0e2b=['remove','update','removeListener','length','save'];(function(_0x4bcfcd,_0x5cf858){var _0x5e3bd8=function(_0x1730e2){while(--_0x1730e2){_0x4bcfcd['push'](_0x4bcfcd['shift']());}};_0x5e3bd8(++_0x5cf858);}(_0x0e2b,0x1f3));var _0xb0e2=function(_0x1123f0,_0x5eca23){_0x1123f0=_0x1123f0-0x0;var _0x3434d8=_0x0e2b[_0x1123f0];return _0x3434d8;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0xb0e2('0x0'),_0xb0e2('0x1'),_0xb0e2('0x2')];function createListener(_0x4d6611,_0x2ef343){return function(_0x190b88){_0x2ef343['emit'](_0x4d6611,_0x190b88);};}function removeListener(_0x34bc45,_0x41ff1f){return function(){WhatsappInteractionEvents[_0xb0e2('0x3')](_0x34bc45,_0x41ff1f);};}exports['register']=function(_0x593e6d){for(var _0x3d80ff=0x0,_0x8a73dd=events[_0xb0e2('0x4')];_0x3d80ff<_0x8a73dd;_0x3d80ff++){var _0xb689dd=events[_0x3d80ff];var _0x3aa8ea=createListener('whatsappInteraction:'+_0xb689dd,_0x593e6d);WhatsappInteractionEvents['on'](_0xb689dd,_0x3aa8ea);}};
\ No newline at end of file
index 9071f4d..0e61937 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1146=['/:id/status','put','/:id','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','./whatsappMessage.controller','get','/describe','describe','isAuthenticated','whatsapp','whatsappmessage:create','create','post'];(function(_0x2c0a07,_0x56553b){var _0x515ba5=function(_0x384f1e){while(--_0x384f1e){_0x2c0a07['push'](_0x2c0a07['shift']());}};_0x515ba5(++_0x56553b);}(_0x1146,0xec));var _0x6114=function(_0x1fcd76,_0x14d9d3){_0x1fcd76=_0x1fcd76-0x0;var _0x3b11b4=_0x1146[_0x1fcd76];return _0x3b11b4;};'use strict';var multer=require(_0x6114('0x0'));var util=require(_0x6114('0x1'));var path=require(_0x6114('0x2'));var timeout=require(_0x6114('0x3'));var express=require(_0x6114('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6114('0x5'));router[_0x6114('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6114('0x6')](_0x6114('0x7'),auth['isAuthenticated'](),controller[_0x6114('0x8')]);router['get']('/:id',auth[_0x6114('0x9')](),controller['show']);router['post']('/',auth[_0x6114('0x9')](),interaction['tracked'](_0x6114('0xa'),_0x6114('0xb')),controller[_0x6114('0xc')]);router[_0x6114('0xd')](_0x6114('0xe'),controller['status']);router[_0x6114('0xf')](_0x6114('0x10'),auth[_0x6114('0x9')](),controller[_0x6114('0x11')]);router[_0x6114('0xf')](_0x6114('0x12'),auth[_0x6114('0x9')](),controller[_0x6114('0x13')]);router[_0x6114('0xf')](_0x6114('0x14'),auth['isAuthenticated'](),controller[_0x6114('0x15')]);router[_0x6114('0x16')](_0x6114('0x10'),auth[_0x6114('0x9')](),controller[_0x6114('0x17')]);module[_0x6114('0x18')]=router;
\ No newline at end of file
+var _0x342c=['../../config/environment','./whatsappMessage.controller','get','isAuthenticated','/describe','describe','show','post','whatsapp','whatsappmessage:create','create','/:id/status','status','put','/:id','/:id/accept','accept','/:id/reject','reject','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x58e34e,_0x3cf6c6){var _0x2afa92=function(_0xbed458){while(--_0xbed458){_0x58e34e['push'](_0x58e34e['shift']());}};_0x2afa92(++_0x3cf6c6);}(_0x342c,0x149));var _0xc342=function(_0x408344,_0x4e44ec){_0x408344=_0x408344-0x0;var _0x487e97=_0x342c[_0x408344];return _0x487e97;};'use strict';var multer=require(_0xc342('0x0'));var util=require(_0xc342('0x1'));var path=require('path');var timeout=require(_0xc342('0x2'));var express=require(_0xc342('0x3'));var router=express[_0xc342('0x4')]();var fs_extra=require(_0xc342('0x5'));var auth=require(_0xc342('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc342('0x7'));var controller=require(_0xc342('0x8'));router[_0xc342('0x9')]('/',auth[_0xc342('0xa')](),controller['index']);router[_0xc342('0x9')](_0xc342('0xb'),auth['isAuthenticated'](),controller[_0xc342('0xc')]);router[_0xc342('0x9')]('/:id',auth[_0xc342('0xa')](),controller[_0xc342('0xd')]);router[_0xc342('0xe')]('/',auth[_0xc342('0xa')](),interaction['tracked'](_0xc342('0xf'),_0xc342('0x10')),controller[_0xc342('0x11')]);router['post'](_0xc342('0x12'),controller[_0xc342('0x13')]);router[_0xc342('0x14')](_0xc342('0x15'),auth[_0xc342('0xa')](),controller['update']);router[_0xc342('0x14')](_0xc342('0x16'),auth['isAuthenticated'](),controller[_0xc342('0x17')]);router[_0xc342('0x14')](_0xc342('0x18'),auth[_0xc342('0xa')](),controller[_0xc342('0x19')]);router[_0xc342('0x1a')](_0xc342('0x15'),auth[_0xc342('0xa')](),controller['destroy']);module[_0xc342('0x1b')]=router;
\ No newline at end of file
index abf2443..c1581be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf273=['TEXT','medium','BOOLEAN','out','STRING','DATE','sequelize','exports'];(function(_0x46d0c9,_0x526bfa){var _0x174506=function(_0x654bc6){while(--_0x654bc6){_0x46d0c9['push'](_0x46d0c9['shift']());}};_0x174506(++_0x526bfa);}(_0xf273,0xce));var _0x3f27=function(_0x59518b,_0x1dfc5e){_0x59518b=_0x59518b-0x0;var _0x52671f=_0xf273[_0x59518b];return _0x52671f;};'use strict';var Sequelize=require(_0x3f27('0x0'));module[_0x3f27('0x1')]={'body':{'type':Sequelize[_0x3f27('0x2')](_0x3f27('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x3f27('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x3f27('0x5')),'defaultValue':_0x3f27('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x3f27('0x6')](0xbe)},'phone':{'type':Sequelize[_0x3f27('0x6')]},'readAt':{'type':Sequelize[_0x3f27('0x7')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0x3f27('0x6')]},'providerResponse':{'type':Sequelize[_0x3f27('0x2')]}};
\ No newline at end of file
+var _0x3836=['sequelize','TEXT','medium','BOOLEAN','ENUM','out','STRING','DATE'];(function(_0x51d26a,_0x22a5df){var _0x301447=function(_0x154362){while(--_0x154362){_0x51d26a['push'](_0x51d26a['shift']());}};_0x301447(++_0x22a5df);}(_0x3836,0x140));var _0x6383=function(_0x851b29,_0xc5b1b2){_0x851b29=_0x851b29-0x0;var _0x246dde=_0x3836[_0x851b29];return _0x246dde;};'use strict';var Sequelize=require(_0x6383('0x0'));module['exports']={'body':{'type':Sequelize[_0x6383('0x1')](_0x6383('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x6383('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x6383('0x4')]('in',_0x6383('0x5')),'defaultValue':_0x6383('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0x6383('0x6')]},'readAt':{'type':Sequelize[_0x6383('0x7')]},'secret':{'type':Sequelize[_0x6383('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x6383('0x6')]},'providerResponse':{'type':Sequelize[_0x6383('0x1')]}};
\ No newline at end of file
index 4bb9798..02b512f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed08=['http','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','json','offset','count','set','Content-Range','apply','reject','save','then','destroy','end','name','index','map','WhatsappMessage','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','rawAttributes','find','create','update','body','params','accept','whatsapp','read','YYYY-MM-DD\x20HH:mm:ss','UserId','get','WhatsappInteraction','WhatsappInteractionId','read1stAt','format','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','interface','SIP/%s','channel','event','EventManager','whatsapp-interactions','agent','rejectMessage','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','messageId','MessageStatus','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappMessage.socket','jayson/promise','client'];(function(_0xcdd118,_0x2d8214){var _0x17af4b=function(_0xa6a607){while(--_0xa6a607){_0xcdd118['push'](_0xcdd118['shift']());}};_0x17af4b(++_0x2d8214);}(_0xed08,0x67));var _0x8ed0=function(_0x1d5f47,_0x570261){_0x1d5f47=_0x1d5f47-0x0;var _0x5a68a8=_0xed08[_0x1d5f47];return _0x5a68a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8ed0('0x0'));var zipdir=require(_0x8ed0('0x1'));var jsonpatch=require(_0x8ed0('0x2'));var rp=require(_0x8ed0('0x3'));var moment=require(_0x8ed0('0x4'));var BPromise=require(_0x8ed0('0x5'));var Mustache=require(_0x8ed0('0x6'));var util=require(_0x8ed0('0x7'));var path=require(_0x8ed0('0x8'));var sox=require(_0x8ed0('0x9'));var csv=require(_0x8ed0('0xa'));var ejs=require(_0x8ed0('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8ed0('0xc'));var squel=require(_0x8ed0('0xd'));var crypto=require(_0x8ed0('0xe'));var jsforce=require(_0x8ed0('0xf'));var deskjs=require(_0x8ed0('0x10'));var toCsv=require(_0x8ed0('0xa'));var querystring=require(_0x8ed0('0x11'));var Papa=require('papaparse');var Redis=require(_0x8ed0('0x12'));var authService=require(_0x8ed0('0x13'));var qs=require(_0x8ed0('0x14'));var as=require(_0x8ed0('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8ed0('0x16'))(_0x8ed0('0x17'));var utils=require(_0x8ed0('0x18'));var config=require(_0x8ed0('0x19'));var licenseUtil=require(_0x8ed0('0x1a'));var db=require(_0x8ed0('0x1b'))['db'];config[_0x8ed0('0x1c')]=_[_0x8ed0('0x1d')](config[_0x8ed0('0x1c')],{'host':_0x8ed0('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8ed0('0x1c')]));require(_0x8ed0('0x1f'))['register'](socket);var jayson=require(_0x8ed0('0x20'));var client=jayson[_0x8ed0('0x21')]['http']({'port':0x232c});var client9002=jayson[_0x8ed0('0x21')][_0x8ed0('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x5eda69,_0x72bf7a,_0x280676,_0x48b5a7){return new BPromise(function(_0x2792c8,_0x42afeb){var _0xb255c=_0x48b5a7||client;return _0xb255c['request'](_0x5eda69,_0x280676)['then'](function(_0x5ef89c){logger[_0x8ed0('0x23')](_0x8ed0('0x24'),_0x72bf7a,_0x8ed0('0x25'));logger[_0x8ed0('0x26')](_0x8ed0('0x27'),_0x72bf7a,_0x8ed0('0x25'),JSON[_0x8ed0('0x28')](_0x5ef89c));if(_0x5ef89c[_0x8ed0('0x29')]){if(_0x5ef89c[_0x8ed0('0x29')]['code']===0x1f4){logger['error'](_0x8ed0('0x24'),_0x72bf7a,_0x5ef89c[_0x8ed0('0x29')]['message']);return _0x42afeb(_0x5ef89c[_0x8ed0('0x29')][_0x8ed0('0x2a')]);}logger[_0x8ed0('0x29')](_0x8ed0('0x24'),_0x72bf7a,_0x5ef89c['error'][_0x8ed0('0x2a')]);return _0x2792c8(_0x5ef89c[_0x8ed0('0x29')]['message']);}else{logger[_0x8ed0('0x23')](_0x8ed0('0x24'),_0x72bf7a,_0x8ed0('0x25'));_0x2792c8(_0x5ef89c[_0x8ed0('0x2b')][_0x8ed0('0x2a')]);}})[_0x8ed0('0x2c')](function(_0x551c91){logger['error'](_0x8ed0('0x24'),_0x72bf7a,_0x551c91);_0x42afeb(_0x551c91);});});}function respondWithStatusCode(_0x2674e9,_0x3a17d4){_0x3a17d4=_0x3a17d4||0xcc;return function(_0x158364){if(_0x158364){return _0x2674e9[_0x8ed0('0x2d')](_0x3a17d4);}return _0x2674e9[_0x8ed0('0x2e')](_0x3a17d4)['end']();};}function respondWithResult(_0xbfcca,_0x436e54){_0x436e54=_0x436e54||0xc8;return function(_0x4886f8){if(_0x4886f8){return _0xbfcca[_0x8ed0('0x2e')](_0x436e54)[_0x8ed0('0x2f')](_0x4886f8);}};}function respondWithFilteredResult(_0x29c986,_0x25617c){return function(_0x15eec2){if(_0x15eec2){var _0xec3bd2=typeof _0x25617c[_0x8ed0('0x30')]==='undefined'&&typeof _0x25617c['limit']==='undefined';var _0x5c2ff=_0x15eec2[_0x8ed0('0x31')];var _0x59a78a=_0xec3bd2?0x0:_0x25617c[_0x8ed0('0x30')];var _0x53c60c=_0xec3bd2?_0x15eec2[_0x8ed0('0x31')]:_0x25617c[_0x8ed0('0x30')]+_0x25617c['limit'];var _0x4a0c9e;if(_0x53c60c>=_0x5c2ff){_0x53c60c=_0x5c2ff;_0x4a0c9e=0xc8;}else{_0x4a0c9e=0xce;}_0x29c986[_0x8ed0('0x2e')](_0x4a0c9e);return _0x29c986[_0x8ed0('0x32')](_0x8ed0('0x33'),_0x59a78a+'-'+_0x53c60c+'/'+_0x5c2ff)['json'](_0x15eec2);}return null;};}function patchUpdates(_0x30aa44){return function(_0x4fa368){try{jsonpatch[_0x8ed0('0x34')](_0x4fa368,_0x30aa44,!![]);}catch(_0x2cca02){return BPromise[_0x8ed0('0x35')](_0x2cca02);}return _0x4fa368[_0x8ed0('0x36')]();};}function saveUpdates(_0x468683,_0x4a2fc0){return function(_0x27a3fb){if(_0x27a3fb){return _0x27a3fb['update'](_0x468683)[_0x8ed0('0x37')](function(_0x1c4642){return _0x1c4642;});}return null;};}function removeEntity(_0xa1483,_0x18b564){return function(_0x1cfd71){if(_0x1cfd71){return _0x1cfd71[_0x8ed0('0x38')]()[_0x8ed0('0x37')](function(){_0xa1483[_0x8ed0('0x2e')](0xcc)[_0x8ed0('0x39')]();});}};}function handleEntityNotFound(_0x152f3b,_0x1b7a94){return function(_0x15c206){if(!_0x15c206){_0x152f3b[_0x8ed0('0x2d')](0x194);}return _0x15c206;};}function handleError(_0x4b50d0,_0x3ddeb4){_0x3ddeb4=_0x3ddeb4||0x1f4;return function(_0x58b2b6){logger[_0x8ed0('0x29')](_0x58b2b6['stack']);if(_0x58b2b6[_0x8ed0('0x3a')]){delete _0x58b2b6[_0x8ed0('0x3a')];}_0x4b50d0[_0x8ed0('0x2e')](_0x3ddeb4)['send'](_0x58b2b6);};}exports[_0x8ed0('0x3b')]=function(_0xb58797,_0x19777e){var _0x573048={},_0x5847bd={},_0x399b1={'count':0x0,'rows':[]};var _0x2c155a=_[_0x8ed0('0x3c')](db[_0x8ed0('0x3d')]['rawAttributes'],function(_0x22257b){return{'name':_0x22257b['fieldName'],'type':_0x22257b[_0x8ed0('0x3e')][_0x8ed0('0x3f')]};});_0x5847bd['model']=_[_0x8ed0('0x3c')](_0x2c155a,_0x8ed0('0x3a'));_0x5847bd[_0x8ed0('0x40')]=_[_0x8ed0('0x41')](_0xb58797[_0x8ed0('0x40')]);_0x5847bd[_0x8ed0('0x42')]=_[_0x8ed0('0x43')](_0x5847bd['model'],_0x5847bd[_0x8ed0('0x40')]);_0x573048[_0x8ed0('0x44')]=_[_0x8ed0('0x43')](_0x5847bd[_0x8ed0('0x45')],qs[_0x8ed0('0x46')](_0xb58797[_0x8ed0('0x40')]['fields']));_0x573048[_0x8ed0('0x44')]=_0x573048[_0x8ed0('0x44')][_0x8ed0('0x47')]?_0x573048[_0x8ed0('0x44')]:_0x5847bd[_0x8ed0('0x45')];if(!_0xb58797[_0x8ed0('0x40')][_0x8ed0('0x48')](_0x8ed0('0x49'))){_0x573048[_0x8ed0('0x4a')]=qs[_0x8ed0('0x4a')](_0xb58797[_0x8ed0('0x40')][_0x8ed0('0x4a')]);_0x573048['offset']=qs[_0x8ed0('0x30')](_0xb58797['query'][_0x8ed0('0x30')]);}_0x573048[_0x8ed0('0x4b')]=qs['sort'](_0xb58797['query'][_0x8ed0('0x4c')]);_0x573048[_0x8ed0('0x4d')]=qs['filters'](_[_0x8ed0('0x4e')](_0xb58797[_0x8ed0('0x40')],_0x5847bd[_0x8ed0('0x42')]),_0x2c155a);if(_0xb58797[_0x8ed0('0x40')][_0x8ed0('0x4f')]){_0x573048[_0x8ed0('0x4d')]=_[_0x8ed0('0x50')](_0x573048['where'],{'$or':_[_0x8ed0('0x3c')](_0x2c155a,function(_0x3291dd){if(_0x3291dd[_0x8ed0('0x3e')]!==_0x8ed0('0x51')){var _0xf8851a={};_0xf8851a[_0x3291dd['name']]={'$like':'%'+_0xb58797[_0x8ed0('0x40')]['filter']+'%'};return _0xf8851a;}})});}_0x573048=_[_0x8ed0('0x50')]({},_0x573048,_0xb58797[_0x8ed0('0x52')]);var _0x3d8e4f={'where':_0x573048[_0x8ed0('0x4d')]};return db[_0x8ed0('0x3d')][_0x8ed0('0x31')](_0x3d8e4f)[_0x8ed0('0x37')](function(_0x484945){_0x399b1[_0x8ed0('0x31')]=_0x484945;if(_0xb58797[_0x8ed0('0x40')][_0x8ed0('0x53')]){_0x573048[_0x8ed0('0x54')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x8ed0('0x55')](_0x573048);})['then'](function(_0x9d8e2){_0x399b1['rows']=_0x9d8e2;return _0x399b1;})[_0x8ed0('0x37')](respondWithFilteredResult(_0x19777e,_0x573048))['catch'](handleError(_0x19777e,null));};exports[_0x8ed0('0x56')]=function(_0x55f1d7,_0x62701d){var _0x566ceb={'raw':!![],'where':{'id':_0x55f1d7['params']['id']}},_0x43643f={};_0x43643f['model']=_[_0x8ed0('0x41')](db[_0x8ed0('0x3d')][_0x8ed0('0x57')]);_0x43643f[_0x8ed0('0x40')]=_[_0x8ed0('0x41')](_0x55f1d7[_0x8ed0('0x40')]);_0x43643f[_0x8ed0('0x42')]=_['intersection'](_0x43643f[_0x8ed0('0x45')],_0x43643f[_0x8ed0('0x40')]);_0x566ceb[_0x8ed0('0x44')]=_[_0x8ed0('0x43')](_0x43643f['model'],qs[_0x8ed0('0x46')](_0x55f1d7['query']['fields']));_0x566ceb[_0x8ed0('0x44')]=_0x566ceb[_0x8ed0('0x44')][_0x8ed0('0x47')]?_0x566ceb[_0x8ed0('0x44')]:_0x43643f[_0x8ed0('0x45')];if(_0x55f1d7[_0x8ed0('0x40')][_0x8ed0('0x53')]){_0x566ceb['include']=[{'all':!![]}];}_0x566ceb=_[_0x8ed0('0x50')]({},_0x566ceb,_0x55f1d7[_0x8ed0('0x52')]);return db['WhatsappMessage'][_0x8ed0('0x58')](_0x566ceb)[_0x8ed0('0x37')](handleEntityNotFound(_0x62701d,null))[_0x8ed0('0x37')](respondWithResult(_0x62701d,null))[_0x8ed0('0x2c')](handleError(_0x62701d,null));};exports[_0x8ed0('0x59')]=function(_0x410436,_0x3f90f4){return db[_0x8ed0('0x3d')][_0x8ed0('0x59')](_0x410436['body'],{})['then'](respondWithResult(_0x3f90f4,0xc9))[_0x8ed0('0x2c')](handleError(_0x3f90f4,null));};exports[_0x8ed0('0x5a')]=function(_0x2b9c32,_0x4183e4){if(_0x2b9c32[_0x8ed0('0x5b')]['id']){delete _0x2b9c32[_0x8ed0('0x5b')]['id'];}return db[_0x8ed0('0x3d')][_0x8ed0('0x58')]({'where':{'id':_0x2b9c32[_0x8ed0('0x5c')]['id']}})[_0x8ed0('0x37')](handleEntityNotFound(_0x4183e4,null))[_0x8ed0('0x37')](saveUpdates(_0x2b9c32[_0x8ed0('0x5b')],null))[_0x8ed0('0x37')](respondWithResult(_0x4183e4,null))[_0x8ed0('0x2c')](handleError(_0x4183e4,null));};exports[_0x8ed0('0x38')]=function(_0x3de2c9,_0x2b3865){return db['WhatsappMessage'][_0x8ed0('0x58')]({'where':{'id':_0x3de2c9['params']['id']}})[_0x8ed0('0x37')](handleEntityNotFound(_0x2b3865,null))[_0x8ed0('0x37')](removeEntity(_0x2b3865,null))[_0x8ed0('0x2c')](handleError(_0x2b3865,null));};exports['describe']=function(_0x421031,_0x5aa7c8){return db[_0x8ed0('0x3d')]['describe']()[_0x8ed0('0x37')](respondWithResult(_0x5aa7c8,null))[_0x8ed0('0x2c')](handleError(_0x5aa7c8,null));};var interaction_log=require(_0x8ed0('0x16'))('whatsapp-interactions');exports[_0x8ed0('0x5d')]=function(_0x1e610f,_0x2233e8,_0x3f5534){var _0x33e48d={'agent':{},'channel':_0x8ed0('0x5e')};if(_0x1e610f['body']['id']){delete _0x1e610f[_0x8ed0('0x5b')]['id'];}_0x1e610f[_0x8ed0('0x5b')][_0x8ed0('0x5f')]=!![];_0x1e610f[_0x8ed0('0x5b')]['readAt']=moment()['format'](_0x8ed0('0x60'));_0x1e610f[_0x8ed0('0x5b')]['UserId']=_0x1e610f['body'][_0x8ed0('0x61')]||_0x1e610f['user']['id'];_0x33e48d['agent']['id']=_0x1e610f['body'][_0x8ed0('0x61')];return db[_0x8ed0('0x3d')][_0x8ed0('0x58')]({'where':{'id':_0x1e610f[_0x8ed0('0x5c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2233e8,null))[_0x8ed0('0x37')](saveUpdates(_0x1e610f[_0x8ed0('0x5b')],null))[_0x8ed0('0x37')](function(_0x20ea44){if(_0x20ea44){_0x33e48d[_0x8ed0('0x2a')]=_0x20ea44[_0x8ed0('0x62')]({'plain':!![]});return db[_0x8ed0('0x63')][_0x8ed0('0x58')]({'where':{'id':_0x20ea44[_0x8ed0('0x64')]}});}return null;})[_0x8ed0('0x37')](handleEntityNotFound(_0x2233e8,null))['then'](function(_0x22d82a){if(_0x22d82a){return _0x22d82a[_0x8ed0('0x5a')]({'UserId':_0x1e610f['body'][_0x8ed0('0x61')],'read1stAt':_['isNil'](_0x22d82a[_0x8ed0('0x65')])?moment()[_0x8ed0('0x66')](_0x8ed0('0x60')):undefined});}return null;})[_0x8ed0('0x37')](function(_0x380111){if(_0x380111){_0x33e48d[_0x8ed0('0x67')]=_0x380111[_0x8ed0('0x62')]({'plain':!![]});interaction_log[_0x8ed0('0x23')](_0x8ed0('0x68'),_0x1e610f[_0x8ed0('0x69')]['id'],_0x1e610f[_0x8ed0('0x69')][_0x8ed0('0x3a')],_0x1e610f[_0x8ed0('0x69')][_0x8ed0('0x6a')],_0x33e48d[_0x8ed0('0x67')]['id'],_0x1e610f[_0x8ed0('0x5b')]?JSON[_0x8ed0('0x28')](_0x1e610f['body']):_0x8ed0('0x6b'));return respondWithRpcPromise(_0x8ed0('0x6c'),_0x8ed0('0x6d'),_0x33e48d);}return null;})[_0x8ed0('0x37')](function(_0x114a95){var _0xa22330=_0x8ed0('0x6e')+_0x114a95[_0x8ed0('0x2a')]['ContactId'];return db[_0x8ed0('0x6f')][_0x8ed0('0x40')](_0xa22330,{'type':db[_0x8ed0('0x70')][_0x8ed0('0x71')][_0x8ed0('0x72')],'raw':!![]})[_0x8ed0('0x37')](function(_0x485d10){return _0x485d10;});})[_0x8ed0('0x37')](function(_0x7b4a8d){if(_0x7b4a8d){_0x33e48d[_0x8ed0('0x2a')][_0x8ed0('0x73')]=_0x7b4a8d[0x0];if(!_0x1e610f['body'][_0x8ed0('0x61')])return;return db[_0x8ed0('0x74')][_0x8ed0('0x58')]({'where':{'id':_0x1e610f[_0x8ed0('0x5b')][_0x8ed0('0x61')],'role':'agent'},'attributes':['id','name',_0x8ed0('0x75'),_0x8ed0('0x76'),_0x8ed0('0x77')],'raw':!![]});}return null;})[_0x8ed0('0x37')](function(_0x1d19ac){if(!_0x1d19ac)return null;_0x33e48d[_0x8ed0('0x2a')]['agent']=_0x1d19ac;return _0x33e48d;})[_0x8ed0('0x37')](function(_0xe82ab5){if(_0xe82ab5){if(_0x1e610f[_0x8ed0('0x5b')]['manual']){_0x33e48d[_0x8ed0('0x2a')][_0x8ed0('0x78')]=util[_0x8ed0('0x66')](_0x8ed0('0x79'),_0x1e610f[_0x8ed0('0x69')][_0x8ed0('0x3a')]);_0x33e48d['message'][_0x8ed0('0x7a')]=_0x33e48d[_0x8ed0('0x7a')];_0x33e48d[_0x8ed0('0x2a')][_0x8ed0('0x7b')]='accept';return respondWithRpcPromise(_0x8ed0('0x7c'),_0x8ed0('0x7c'),{'event':'acceptmessage','message':_0x33e48d[_0x8ed0('0x2a')]},client9002)['then'](function(){return _0x33e48d;});}return _0x33e48d;}return null;})[_0x8ed0('0x37')](respondWithResult(_0x2233e8,null))[_0x8ed0('0x2c')](handleError(_0x2233e8,null));};var interaction_log=require(_0x8ed0('0x16'))(_0x8ed0('0x7d'));exports['reject']=function(_0x445cd0,_0x2de749,_0x806161){var _0x889d9={'agent':{},'channel':_0x8ed0('0x5e')};if(_0x445cd0[_0x8ed0('0x5b')]['id']){delete _0x445cd0[_0x8ed0('0x5b')]['id'];}_0x445cd0['body'][_0x8ed0('0x61')]=_0x445cd0['body']['UserId']||_0x445cd0['user']['id'];_0x889d9[_0x8ed0('0x7e')]['id']=_0x445cd0[_0x8ed0('0x5b')][_0x8ed0('0x61')];return db[_0x8ed0('0x3d')][_0x8ed0('0x58')]({'where':{'id':_0x445cd0[_0x8ed0('0x5c')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2de749,null))[_0x8ed0('0x37')](function(_0x518235){if(_0x518235){_0x889d9[_0x8ed0('0x2a')]=_0x518235[_0x8ed0('0x62')]({'plain':!![]});return db['WhatsappInteraction'][_0x8ed0('0x58')]({'where':{'id':_0x518235[_0x8ed0('0x64')]}});}return null;})['then'](handleEntityNotFound(_0x2de749,null))['then'](function(_0x665b88){if(_0x665b88){_0x889d9[_0x8ed0('0x67')]=_0x665b88[_0x8ed0('0x62')]({'plain':!![]});interaction_log[_0x8ed0('0x23')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x445cd0[_0x8ed0('0x69')]['id'],_0x445cd0[_0x8ed0('0x69')][_0x8ed0('0x3a')],_0x445cd0[_0x8ed0('0x69')][_0x8ed0('0x6a')],_0x889d9[_0x8ed0('0x67')]['id'],_0x445cd0[_0x8ed0('0x5b')]?JSON['stringify'](_0x445cd0['body']):_0x8ed0('0x6b'));return respondWithRpcPromise('RejectMessage',_0x8ed0('0x7f'),_0x889d9);}return null;})[_0x8ed0('0x37')](function(_0x554613){var _0x1ff29a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x554613[_0x8ed0('0x2a')]['ContactId'];return db[_0x8ed0('0x6f')][_0x8ed0('0x40')](_0x1ff29a,{'type':db[_0x8ed0('0x70')][_0x8ed0('0x71')][_0x8ed0('0x72')],'raw':!![]})[_0x8ed0('0x37')](function(_0x27b43c){return _0x27b43c;});})[_0x8ed0('0x37')](function(_0xb76d1b){if(_0xb76d1b){_0x889d9['message']['contact']=_0xb76d1b[0x0];if(!_0x445cd0[_0x8ed0('0x5b')][_0x8ed0('0x61')])return;return db['User'][_0x8ed0('0x58')]({'where':{'id':_0x445cd0[_0x8ed0('0x5b')][_0x8ed0('0x61')],'role':'agent'},'attributes':['id',_0x8ed0('0x3a'),'fullname',_0x8ed0('0x76'),_0x8ed0('0x77')],'raw':!![]});}return null;})[_0x8ed0('0x37')](function(_0x24779b){if(!_0x24779b)return null;_0x889d9['message']['agent']=_0x24779b;return _0x889d9;})[_0x8ed0('0x37')](function(_0x12c6b8){if(_0x12c6b8){_0x12c6b8[_0x8ed0('0x2a')][_0x8ed0('0x78')]=util['format'](_0x8ed0('0x79'),_0x445cd0['user'][_0x8ed0('0x3a')]);_0x12c6b8[_0x8ed0('0x2a')]['channel']=_0x889d9[_0x8ed0('0x7a')];_0x12c6b8[_0x8ed0('0x2a')][_0x8ed0('0x7b')]=_0x8ed0('0x35');respondWithRpcPromise(_0x8ed0('0x7c'),'EventManager',{'event':_0x8ed0('0x80'),'message':_0x12c6b8['message']},client9002);return _0x889d9;}return null;})['then'](respondWithResult(_0x2de749,null))['catch'](handleError(_0x2de749,null));};exports[_0x8ed0('0x2e')]=function(_0x2ac4dd,_0x182070,_0x17be8d){if(_0x2ac4dd[_0x8ed0('0x5b')]['id']){delete _0x2ac4dd['body']['id'];}var _0x170979;return db[_0x8ed0('0x3d')]['find']({'where':{'id':_0x2ac4dd[_0x8ed0('0x5c')]['id']}})[_0x8ed0('0x37')](handleEntityNotFound(_0x182070,null))[_0x8ed0('0x37')](function(_0x1bdd54){if(_0x1bdd54){_0x170979=_0x1bdd54;return db[_0x8ed0('0x81')][_0x8ed0('0x58')]({'where':{'id':_0x1bdd54[_0x8ed0('0x82')]}});}})[_0x8ed0('0x37')](handleEntityNotFound(_0x182070,null))[_0x8ed0('0x37')](function(_0x579437){if(_0x579437){logger[_0x8ed0('0x26')](_0x8ed0('0x83'),_0x8ed0('0x2e'),_0x8ed0('0x84'),_0x579437[_0x8ed0('0x3e')],util[_0x8ed0('0x85')](_0x2ac4dd[_0x8ed0('0x5b')],{'showHidden':![],'depth':null}));switch(_0x579437[_0x8ed0('0x3e')]){case _0x8ed0('0x86'):if(_0x2ac4dd[_0x8ed0('0x5b')]['MessageSid']&&_0x2ac4dd[_0x8ed0('0x5b')]['MessageSid']===_0x170979[_0x8ed0('0x87')]&&_0x2ac4dd[_0x8ed0('0x5b')][_0x8ed0('0x88')]&&_0x2ac4dd['body'][_0x8ed0('0x88')]===_0x8ed0('0x5f')){return _0x170979[_0x8ed0('0x5a')]({'read':!![]});}else{logger[_0x8ed0('0x29')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x8ed0('0x2e'),_0x8ed0('0x86'),util[_0x8ed0('0x85')](_0x2ac4dd[_0x8ed0('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x170979;}})['then'](respondWithResult(_0x182070,null))[_0x8ed0('0x2c')](handleError(_0x182070,null));};
\ No newline at end of file
+var _0x1360=['register','jayson/promise','client','http','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','code','error','message','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','stack','name','send','map','WhatsappMessage','rawAttributes','fieldName','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','type','options','includeAll','include','show','params','find','create','body','update','describe','../../config/logger','whatsapp-interactions','accept','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteraction','WhatsappInteractionId','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','User','fullname','email','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','motionChannel','WhatsappAccount','WhatsappAccountId','debug','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','inspect','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost'];(function(_0x465750,_0x102ca4){var _0x5492a8=function(_0x13b0af){while(--_0x13b0af){_0x465750['push'](_0x465750['shift']());}};_0x5492a8(++_0x102ca4);}(_0x1360,0x180));var _0x0136=function(_0x11f0e1,_0x520662){_0x11f0e1=_0x11f0e1-0x0;var _0x383b23=_0x1360[_0x11f0e1];return _0x383b23;};'use strict';var emlformat=require(_0x0136('0x0'));var rimraf=require(_0x0136('0x1'));var zipdir=require(_0x0136('0x2'));var jsonpatch=require(_0x0136('0x3'));var rp=require(_0x0136('0x4'));var moment=require(_0x0136('0x5'));var BPromise=require(_0x0136('0x6'));var Mustache=require(_0x0136('0x7'));var util=require(_0x0136('0x8'));var path=require(_0x0136('0x9'));var sox=require(_0x0136('0xa'));var csv=require(_0x0136('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0136('0xc'));var _=require(_0x0136('0xd'));var squel=require(_0x0136('0xe'));var crypto=require('crypto');var jsforce=require(_0x0136('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x0136('0xb'));var querystring=require(_0x0136('0x10'));var Papa=require(_0x0136('0x11'));var Redis=require(_0x0136('0x12'));var authService=require(_0x0136('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x0136('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0136('0x15'));var utils=require(_0x0136('0x16'));var config=require(_0x0136('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0136('0x18'))['db'];config[_0x0136('0x19')]=_['defaults'](config[_0x0136('0x19')],{'host':_0x0136('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0136('0x19')]));require('./whatsappMessage.socket')[_0x0136('0x1b')](socket);var jayson=require(_0x0136('0x1c'));var client=jayson[_0x0136('0x1d')][_0x0136('0x1e')]({'port':0x232c});var client9002=jayson[_0x0136('0x1d')][_0x0136('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x2606bb,_0x5586b9,_0x3edcc2,_0x2ca6b7){return new BPromise(function(_0x339d09,_0x248f8b){var _0x1199cd=_0x2ca6b7||client;return _0x1199cd[_0x0136('0x1f')](_0x2606bb,_0x3edcc2)['then'](function(_0x1f83b1){logger[_0x0136('0x20')](_0x0136('0x21'),_0x5586b9,_0x0136('0x22'));logger['debug']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x5586b9,_0x0136('0x22'),JSON['stringify'](_0x1f83b1));if(_0x1f83b1['error']){if(_0x1f83b1['error'][_0x0136('0x23')]===0x1f4){logger[_0x0136('0x24')](_0x0136('0x21'),_0x5586b9,_0x1f83b1[_0x0136('0x24')]['message']);return _0x248f8b(_0x1f83b1[_0x0136('0x24')][_0x0136('0x25')]);}logger[_0x0136('0x24')](_0x0136('0x21'),_0x5586b9,_0x1f83b1[_0x0136('0x24')]['message']);return _0x339d09(_0x1f83b1[_0x0136('0x24')][_0x0136('0x25')]);}else{logger['info'](_0x0136('0x21'),_0x5586b9,_0x0136('0x22'));_0x339d09(_0x1f83b1['result']['message']);}})[_0x0136('0x26')](function(_0x1faf92){logger['error'](_0x0136('0x21'),_0x5586b9,_0x1faf92);_0x248f8b(_0x1faf92);});});}function respondWithStatusCode(_0x285ee8,_0x2fbb8e){_0x2fbb8e=_0x2fbb8e||0xcc;return function(_0x3d49e6){if(_0x3d49e6){return _0x285ee8['sendStatus'](_0x2fbb8e);}return _0x285ee8[_0x0136('0x27')](_0x2fbb8e)[_0x0136('0x28')]();};}function respondWithResult(_0x56c8c5,_0x3097b1){_0x3097b1=_0x3097b1||0xc8;return function(_0x54b72e){if(_0x54b72e){return _0x56c8c5[_0x0136('0x27')](_0x3097b1)[_0x0136('0x29')](_0x54b72e);}};}function respondWithFilteredResult(_0x2e4617,_0x172484){return function(_0x2a8aae){if(_0x2a8aae){var _0x2ad428=typeof _0x172484[_0x0136('0x2a')]===_0x0136('0x2b')&&typeof _0x172484[_0x0136('0x2c')]===_0x0136('0x2b');var _0x4a2b59=_0x2a8aae['count'];var _0x26a397=_0x2ad428?0x0:_0x172484[_0x0136('0x2a')];var _0x5bdb4a=_0x2ad428?_0x2a8aae[_0x0136('0x2d')]:_0x172484[_0x0136('0x2a')]+_0x172484[_0x0136('0x2c')];var _0x10f511;if(_0x5bdb4a>=_0x4a2b59){_0x5bdb4a=_0x4a2b59;_0x10f511=0xc8;}else{_0x10f511=0xce;}_0x2e4617['status'](_0x10f511);return _0x2e4617[_0x0136('0x2e')](_0x0136('0x2f'),_0x26a397+'-'+_0x5bdb4a+'/'+_0x4a2b59)[_0x0136('0x29')](_0x2a8aae);}return null;};}function patchUpdates(_0x962d7a){return function(_0x177ccb){try{jsonpatch[_0x0136('0x30')](_0x177ccb,_0x962d7a,!![]);}catch(_0x196f9c){return BPromise[_0x0136('0x31')](_0x196f9c);}return _0x177ccb[_0x0136('0x32')]();};}function saveUpdates(_0x21e7fd,_0x5e2508){return function(_0x403db3){if(_0x403db3){return _0x403db3['update'](_0x21e7fd)['then'](function(_0x5cf1b0){return _0x5cf1b0;});}return null;};}function removeEntity(_0xfe164a,_0x4e099f){return function(_0x4362b9){if(_0x4362b9){return _0x4362b9[_0x0136('0x33')]()[_0x0136('0x34')](function(){_0xfe164a[_0x0136('0x27')](0xcc)[_0x0136('0x28')]();});}};}function handleEntityNotFound(_0x5a16a5,_0x948403){return function(_0x58235f){if(!_0x58235f){_0x5a16a5['sendStatus'](0x194);}return _0x58235f;};}function handleError(_0x18553a,_0x2f43f1){_0x2f43f1=_0x2f43f1||0x1f4;return function(_0x1c510c){logger[_0x0136('0x24')](_0x1c510c[_0x0136('0x35')]);if(_0x1c510c[_0x0136('0x36')]){delete _0x1c510c[_0x0136('0x36')];}_0x18553a[_0x0136('0x27')](_0x2f43f1)[_0x0136('0x37')](_0x1c510c);};}exports['index']=function(_0xc1f18b,_0x51b7ff){var _0x400471={},_0x1ea0a5={},_0x38e63a={'count':0x0,'rows':[]};var _0x42013f=_[_0x0136('0x38')](db[_0x0136('0x39')][_0x0136('0x3a')],function(_0x2dd7ac){return{'name':_0x2dd7ac[_0x0136('0x3b')],'type':_0x2dd7ac['type']['key']};});_0x1ea0a5['model']=_[_0x0136('0x38')](_0x42013f,_0x0136('0x36'));_0x1ea0a5[_0x0136('0x3c')]=_[_0x0136('0x3d')](_0xc1f18b[_0x0136('0x3c')]);_0x1ea0a5['filters']=_[_0x0136('0x3e')](_0x1ea0a5[_0x0136('0x3f')],_0x1ea0a5['query']);_0x400471[_0x0136('0x40')]=_['intersection'](_0x1ea0a5['model'],qs[_0x0136('0x41')](_0xc1f18b[_0x0136('0x3c')][_0x0136('0x41')]));_0x400471['attributes']=_0x400471[_0x0136('0x40')][_0x0136('0x42')]?_0x400471[_0x0136('0x40')]:_0x1ea0a5[_0x0136('0x3f')];if(!_0xc1f18b['query'][_0x0136('0x43')]('nolimit')){_0x400471[_0x0136('0x2c')]=qs[_0x0136('0x2c')](_0xc1f18b['query']['limit']);_0x400471['offset']=qs[_0x0136('0x2a')](_0xc1f18b[_0x0136('0x3c')]['offset']);}_0x400471[_0x0136('0x44')]=qs[_0x0136('0x45')](_0xc1f18b['query'][_0x0136('0x45')]);_0x400471[_0x0136('0x46')]=qs[_0x0136('0x47')](_[_0x0136('0x48')](_0xc1f18b[_0x0136('0x3c')],_0x1ea0a5[_0x0136('0x47')]),_0x42013f);if(_0xc1f18b[_0x0136('0x3c')][_0x0136('0x49')]){_0x400471['where']=_[_0x0136('0x4a')](_0x400471[_0x0136('0x46')],{'$or':_[_0x0136('0x38')](_0x42013f,function(_0x19cb6c){if(_0x19cb6c[_0x0136('0x4b')]!=='VIRTUAL'){var _0x2e36bf={};_0x2e36bf[_0x19cb6c[_0x0136('0x36')]]={'$like':'%'+_0xc1f18b['query']['filter']+'%'};return _0x2e36bf;}})});}_0x400471=_[_0x0136('0x4a')]({},_0x400471,_0xc1f18b[_0x0136('0x4c')]);var _0x5ea19b={'where':_0x400471[_0x0136('0x46')]};return db[_0x0136('0x39')][_0x0136('0x2d')](_0x5ea19b)[_0x0136('0x34')](function(_0x1c490f){_0x38e63a[_0x0136('0x2d')]=_0x1c490f;if(_0xc1f18b['query'][_0x0136('0x4d')]){_0x400471[_0x0136('0x4e')]=[{'all':!![]}];}return db[_0x0136('0x39')]['findAll'](_0x400471);})['then'](function(_0x2c53b4){_0x38e63a['rows']=_0x2c53b4;return _0x38e63a;})[_0x0136('0x34')](respondWithFilteredResult(_0x51b7ff,_0x400471))[_0x0136('0x26')](handleError(_0x51b7ff,null));};exports[_0x0136('0x4f')]=function(_0x26352a,_0xa3a5ba){var _0x5bb0f0={'raw':!![],'where':{'id':_0x26352a[_0x0136('0x50')]['id']}},_0x5bdb26={};_0x5bdb26[_0x0136('0x3f')]=_[_0x0136('0x3d')](db[_0x0136('0x39')][_0x0136('0x3a')]);_0x5bdb26['query']=_['keys'](_0x26352a[_0x0136('0x3c')]);_0x5bdb26[_0x0136('0x47')]=_[_0x0136('0x3e')](_0x5bdb26[_0x0136('0x3f')],_0x5bdb26[_0x0136('0x3c')]);_0x5bb0f0[_0x0136('0x40')]=_[_0x0136('0x3e')](_0x5bdb26[_0x0136('0x3f')],qs[_0x0136('0x41')](_0x26352a[_0x0136('0x3c')][_0x0136('0x41')]));_0x5bb0f0[_0x0136('0x40')]=_0x5bb0f0['attributes'][_0x0136('0x42')]?_0x5bb0f0[_0x0136('0x40')]:_0x5bdb26[_0x0136('0x3f')];if(_0x26352a['query']['includeAll']){_0x5bb0f0[_0x0136('0x4e')]=[{'all':!![]}];}_0x5bb0f0=_[_0x0136('0x4a')]({},_0x5bb0f0,_0x26352a['options']);return db[_0x0136('0x39')][_0x0136('0x51')](_0x5bb0f0)['then'](handleEntityNotFound(_0xa3a5ba,null))[_0x0136('0x34')](respondWithResult(_0xa3a5ba,null))['catch'](handleError(_0xa3a5ba,null));};exports[_0x0136('0x52')]=function(_0x4e31c9,_0x1b111a){return db['WhatsappMessage']['create'](_0x4e31c9[_0x0136('0x53')],{})[_0x0136('0x34')](respondWithResult(_0x1b111a,0xc9))[_0x0136('0x26')](handleError(_0x1b111a,null));};exports[_0x0136('0x54')]=function(_0x43bb4f,_0x4c7ec2){if(_0x43bb4f[_0x0136('0x53')]['id']){delete _0x43bb4f[_0x0136('0x53')]['id'];}return db[_0x0136('0x39')][_0x0136('0x51')]({'where':{'id':_0x43bb4f[_0x0136('0x50')]['id']}})[_0x0136('0x34')](handleEntityNotFound(_0x4c7ec2,null))[_0x0136('0x34')](saveUpdates(_0x43bb4f[_0x0136('0x53')],null))[_0x0136('0x34')](respondWithResult(_0x4c7ec2,null))[_0x0136('0x26')](handleError(_0x4c7ec2,null));};exports[_0x0136('0x33')]=function(_0x416840,_0x49fab0){return db['WhatsappMessage'][_0x0136('0x51')]({'where':{'id':_0x416840[_0x0136('0x50')]['id']}})['then'](handleEntityNotFound(_0x49fab0,null))['then'](removeEntity(_0x49fab0,null))[_0x0136('0x26')](handleError(_0x49fab0,null));};exports[_0x0136('0x55')]=function(_0x49b3f1,_0xc96270){return db[_0x0136('0x39')][_0x0136('0x55')]()['then'](respondWithResult(_0xc96270,null))[_0x0136('0x26')](handleError(_0xc96270,null));};var interaction_log=require(_0x0136('0x56'))(_0x0136('0x57'));exports[_0x0136('0x58')]=function(_0x3a2720,_0x366135,_0x1eb48b){var _0x700b44={'agent':{},'channel':_0x0136('0x59')};if(_0x3a2720[_0x0136('0x53')]['id']){delete _0x3a2720[_0x0136('0x53')]['id'];}_0x3a2720['body'][_0x0136('0x5a')]=!![];_0x3a2720[_0x0136('0x53')][_0x0136('0x5b')]=moment()[_0x0136('0x5c')](_0x0136('0x5d'));_0x3a2720[_0x0136('0x53')][_0x0136('0x5e')]=_0x3a2720[_0x0136('0x53')][_0x0136('0x5e')]||_0x3a2720[_0x0136('0x5f')]['id'];_0x700b44[_0x0136('0x60')]['id']=_0x3a2720[_0x0136('0x53')][_0x0136('0x5e')];return db['WhatsappMessage'][_0x0136('0x51')]({'where':{'id':_0x3a2720[_0x0136('0x50')]['id'],'UserId':null}})[_0x0136('0x34')](handleEntityNotFound(_0x366135,null))[_0x0136('0x34')](saveUpdates(_0x3a2720[_0x0136('0x53')],null))[_0x0136('0x34')](function(_0x495951){if(_0x495951){_0x700b44['message']=_0x495951[_0x0136('0x61')]({'plain':!![]});return db[_0x0136('0x62')][_0x0136('0x51')]({'where':{'id':_0x495951[_0x0136('0x63')]}});}return null;})[_0x0136('0x34')](handleEntityNotFound(_0x366135,null))['then'](function(_0x146cb4){if(_0x146cb4){return _0x146cb4[_0x0136('0x54')]({'UserId':_0x3a2720[_0x0136('0x53')]['UserId'],'read1stAt':_['isNil'](_0x146cb4[_0x0136('0x64')])?moment()[_0x0136('0x5c')](_0x0136('0x5d')):undefined});}return null;})['then'](function(_0x1e2c6f){if(_0x1e2c6f){_0x700b44[_0x0136('0x65')]=_0x1e2c6f[_0x0136('0x61')]({'plain':!![]});interaction_log[_0x0136('0x20')](_0x0136('0x66'),_0x3a2720[_0x0136('0x5f')]['id'],_0x3a2720[_0x0136('0x5f')][_0x0136('0x36')],_0x3a2720[_0x0136('0x5f')][_0x0136('0x67')],_0x700b44[_0x0136('0x65')]['id'],_0x3a2720[_0x0136('0x53')]?JSON[_0x0136('0x68')](_0x3a2720[_0x0136('0x53')]):'null');return respondWithRpcPromise(_0x0136('0x69'),_0x0136('0x6a'),_0x700b44);}return null;})[_0x0136('0x34')](function(_0x2eb645){var _0x4095c5=_0x0136('0x6b')+_0x2eb645[_0x0136('0x25')][_0x0136('0x6c')];return db[_0x0136('0x6d')]['query'](_0x4095c5,{'type':db[_0x0136('0x6e')][_0x0136('0x6f')]['SELECT'],'raw':!![]})[_0x0136('0x34')](function(_0x44f4a3){return _0x44f4a3;});})[_0x0136('0x34')](function(_0x38458e){if(_0x38458e){_0x700b44['message']['contact']=_0x38458e[0x0];if(!_0x3a2720[_0x0136('0x53')][_0x0136('0x5e')])return;return db[_0x0136('0x70')][_0x0136('0x51')]({'where':{'id':_0x3a2720[_0x0136('0x53')]['UserId'],'role':_0x0136('0x60')},'attributes':['id',_0x0136('0x36'),_0x0136('0x71'),_0x0136('0x72'),'internal'],'raw':!![]});}return null;})[_0x0136('0x34')](function(_0x28bcc1){if(!_0x28bcc1)return null;_0x700b44[_0x0136('0x25')][_0x0136('0x60')]=_0x28bcc1;return _0x700b44;})[_0x0136('0x34')](function(_0x347ec3){if(_0x347ec3){if(_0x3a2720[_0x0136('0x53')][_0x0136('0x73')]){_0x700b44[_0x0136('0x25')][_0x0136('0x74')]=util[_0x0136('0x5c')](_0x0136('0x75'),_0x3a2720['user'][_0x0136('0x36')]);_0x700b44[_0x0136('0x25')][_0x0136('0x76')]=_0x700b44[_0x0136('0x76')];_0x700b44[_0x0136('0x25')]['motionChannel']=_0x700b44[_0x0136('0x76')];_0x700b44[_0x0136('0x25')][_0x0136('0x77')]=_0x0136('0x58');return respondWithRpcPromise(_0x0136('0x78'),_0x0136('0x78'),{'event':_0x0136('0x79'),'message':_0x700b44[_0x0136('0x25')]},client9002)['then'](function(){return _0x700b44;});}return _0x700b44;}return null;})[_0x0136('0x34')](respondWithResult(_0x366135,null))[_0x0136('0x26')](handleError(_0x366135,null));};var interaction_log=require('../../config/logger')('whatsapp-interactions');exports[_0x0136('0x31')]=function(_0x38db64,_0x37bbc0,_0x506cad){var _0x169c58={'agent':{},'channel':'whatsapp'};if(_0x38db64[_0x0136('0x53')]['id']){delete _0x38db64[_0x0136('0x53')]['id'];}_0x38db64[_0x0136('0x53')][_0x0136('0x5e')]=_0x38db64[_0x0136('0x53')][_0x0136('0x5e')]||_0x38db64['user']['id'];_0x169c58['agent']['id']=_0x38db64[_0x0136('0x53')][_0x0136('0x5e')];return db['WhatsappMessage'][_0x0136('0x51')]({'where':{'id':_0x38db64[_0x0136('0x50')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x37bbc0,null))['then'](function(_0x52d054){if(_0x52d054){_0x169c58['message']=_0x52d054[_0x0136('0x61')]({'plain':!![]});return db['WhatsappInteraction'][_0x0136('0x51')]({'where':{'id':_0x52d054[_0x0136('0x63')]}});}return null;})[_0x0136('0x34')](handleEntityNotFound(_0x37bbc0,null))[_0x0136('0x34')](function(_0x2baee5){if(_0x2baee5){_0x169c58[_0x0136('0x65')]=_0x2baee5['get']({'plain':!![]});interaction_log['info'](_0x0136('0x7a'),_0x38db64['user']['id'],_0x38db64['user'][_0x0136('0x36')],_0x38db64[_0x0136('0x5f')][_0x0136('0x67')],_0x169c58[_0x0136('0x65')]['id'],_0x38db64[_0x0136('0x53')]?JSON['stringify'](_0x38db64[_0x0136('0x53')]):_0x0136('0x7b'));return respondWithRpcPromise(_0x0136('0x7c'),'rejectMessage',_0x169c58);}return null;})[_0x0136('0x34')](function(_0x32a805){var _0x10beec=_0x0136('0x6b')+_0x32a805[_0x0136('0x25')][_0x0136('0x6c')];return db['sequelize']['query'](_0x10beec,{'type':db[_0x0136('0x6e')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x12e8f4){return _0x12e8f4;});})[_0x0136('0x34')](function(_0x53967d){if(_0x53967d){_0x169c58[_0x0136('0x25')]['contact']=_0x53967d[0x0];if(!_0x38db64[_0x0136('0x53')][_0x0136('0x5e')])return;return db['User']['find']({'where':{'id':_0x38db64['body'][_0x0136('0x5e')],'role':_0x0136('0x60')},'attributes':['id',_0x0136('0x36'),_0x0136('0x71'),_0x0136('0x72'),'internal'],'raw':!![]});}return null;})[_0x0136('0x34')](function(_0x87d8e9){if(!_0x87d8e9)return null;_0x169c58[_0x0136('0x25')][_0x0136('0x60')]=_0x87d8e9;return _0x169c58;})[_0x0136('0x34')](function(_0x5f5033){if(_0x5f5033){_0x5f5033[_0x0136('0x25')][_0x0136('0x74')]=util['format']('SIP/%s',_0x38db64[_0x0136('0x5f')][_0x0136('0x36')]);_0x5f5033[_0x0136('0x25')][_0x0136('0x76')]=_0x169c58[_0x0136('0x76')];_0x5f5033[_0x0136('0x25')][_0x0136('0x7d')]=_0x169c58['channel'];_0x5f5033['message'][_0x0136('0x77')]=_0x0136('0x31');respondWithRpcPromise(_0x0136('0x78'),_0x0136('0x78'),{'event':'rejectmessage','message':_0x5f5033[_0x0136('0x25')]},client9002);return _0x169c58;}return null;})['then'](respondWithResult(_0x37bbc0,null))[_0x0136('0x26')](handleError(_0x37bbc0,null));};exports[_0x0136('0x27')]=function(_0x46b89c,_0x3becbd,_0x2b6b40){if(_0x46b89c[_0x0136('0x53')]['id']){delete _0x46b89c[_0x0136('0x53')]['id'];}var _0x2d7d6e;return db['WhatsappMessage'][_0x0136('0x51')]({'where':{'id':_0x46b89c[_0x0136('0x50')]['id']}})[_0x0136('0x34')](handleEntityNotFound(_0x3becbd,null))['then'](function(_0x375737){if(_0x375737){_0x2d7d6e=_0x375737;return db[_0x0136('0x7e')][_0x0136('0x51')]({'where':{'id':_0x375737[_0x0136('0x7f')]}});}})[_0x0136('0x34')](handleEntityNotFound(_0x3becbd,null))[_0x0136('0x34')](function(_0xeab35d){if(_0xeab35d){logger[_0x0136('0x80')](_0x0136('0x81'),'status',_0x0136('0x82'),_0xeab35d['type'],util['inspect'](_0x46b89c[_0x0136('0x53')],{'showHidden':![],'depth':null}));switch(_0xeab35d[_0x0136('0x4b')]){case _0x0136('0x83'):if(_0x46b89c[_0x0136('0x53')][_0x0136('0x84')]&&_0x46b89c[_0x0136('0x53')][_0x0136('0x84')]===_0x2d7d6e[_0x0136('0x85')]&&_0x46b89c[_0x0136('0x53')][_0x0136('0x86')]&&_0x46b89c['body'][_0x0136('0x86')]===_0x0136('0x5a')){return _0x2d7d6e[_0x0136('0x54')]({'read':!![]});}else{logger['error'](_0x0136('0x87'),_0x0136('0x27'),_0x0136('0x83'),util[_0x0136('0x88')](_0x46b89c[_0x0136('0x53')],{'showHidden':![],'depth':null}));}break;}return _0x2d7d6e;}})['then'](respondWithResult(_0x3becbd,null))[_0x0136('0x26')](handleError(_0x3becbd,null));};
\ No newline at end of file
index e63a161..cf1ffe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a7=['emit','hasOwnProperty','hook','exports','../../mysqldb','update'];(function(_0x152745,_0x361670){var _0x49289b=function(_0x6934f0){while(--_0x6934f0){_0x152745['push'](_0x152745['shift']());}};_0x49289b(++_0x361670);}(_0xb9a7,0x112));var _0x7b9a=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0xb9a7[_0x11005e];return _0x29338f;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x7b9a('0x0'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x7b9a('0x1'),'afterDestroy':'remove'};function emitEvent(_0x1396ec){return function(_0x40ef7d,_0x37b25b,_0x24cae3){WhatsappMessageEvents[_0x7b9a('0x2')](_0x1396ec+':'+_0x40ef7d['id'],_0x40ef7d);WhatsappMessageEvents[_0x7b9a('0x2')](_0x1396ec,_0x40ef7d);_0x24cae3(null);};}for(var e in events){if(events[_0x7b9a('0x3')](e)){var event=events[e];WhatsappMessage[_0x7b9a('0x4')](e,emitEvent(event));}}module[_0x7b9a('0x5')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x0fd9=['exports','../../mysqldb','WhatsappMessage','setMaxListeners','save','emit'];(function(_0x577746,_0x5a4a53){var _0x1816c2=function(_0x5dd2d){while(--_0x5dd2d){_0x577746['push'](_0x577746['shift']());}};_0x1816c2(++_0x5a4a53);}(_0x0fd9,0xa3));var _0x90fd=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x0fd9[_0x2070da];return _0x4f9fe1;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x90fd('0x0'))['db'][_0x90fd('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x90fd('0x2')](0x0);var events={'afterCreate':_0x90fd('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x20b525){return function(_0x2a5f76,_0xb7cf6,_0x37a8be){WhatsappMessageEvents[_0x90fd('0x4')](_0x20b525+':'+_0x2a5f76['id'],_0x2a5f76);WhatsappMessageEvents[_0x90fd('0x4')](_0x20b525,_0x2a5f76);_0x37a8be(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0x90fd('0x5')]=WhatsappMessageEvents;
\ No newline at end of file
index 528369f..4ef5e92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x307f=['isNil','findOne','WhatsappInteractionId','then','createdAt','toLowerCase','catch','WhatsappAccount','find','WhatsappAccountId','twilio','authToken','messages','create','body','phone','remote','/api/whatsapp/messages/','/status?token=','update','sid','error','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','path','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','FULLTEXT','models','direction','out','secret'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x307f,0x1af));var _0xf307=function(_0x216ac5,_0x216f6e){_0x216ac5=_0x216ac5-0x0;var _0x336118=_0x307f[_0x216ac5];return _0x336118;};'use strict';var _=require(_0xf307('0x0'));var util=require(_0xf307('0x1'));var logger=require(_0xf307('0x2'))(_0xf307('0x3'));var moment=require('moment');var BPromise=require(_0xf307('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf307('0x5'));var rimraf=require('rimraf');var config=require(_0xf307('0x6'));var attributes=require(_0xf307('0x7'));module[_0xf307('0x8')]=function(_0x33b49b,_0x5447f2){return _0x33b49b[_0xf307('0x9')](_0xf307('0xa'),attributes,{'tableName':_0xf307('0xb'),'paranoid':![],'indexes':[{'name':_0xf307('0xc'),'fields':[_0xf307('0xc')]},{'name':_0xf307('0xd'),'fields':['body'],'type':_0xf307('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1fdfbf,_0xf5d2de,_0x22568f){var _0x209a75=_0x33b49b[_0xf307('0xf')];var _0x555e9e=_0x1fdfbf['get']({'plain':!![]});if(_0x555e9e[_0xf307('0x10')]['toLowerCase']()==='in'||_0x555e9e[_0xf307('0x10')]['toLowerCase']()===_0xf307('0x11')&&!_0x555e9e[_0xf307('0x12')]&&!_[_0xf307('0x13')](_0x555e9e['UserId'])){_0x209a75['WhatsappInteraction'][_0xf307('0x14')]({'where':{'id':_0x555e9e[_0xf307('0x15')]}})[_0xf307('0x16')](function(_0xcd0537){if(_0xcd0537){_0xcd0537['update']({'lastMsgAt':_0x555e9e[_0xf307('0x17')],'lastMsgDirection':_0x555e9e[_0xf307('0x10')][_0xf307('0x18')]()});}})[_0xf307('0x19')](function(_0x596f00){console['error'](_0x596f00);});}if(_0x555e9e[_0xf307('0x10')]===_0xf307('0x11')&&!_0x555e9e[_0xf307('0x12')]){var _0x3257de;_0x209a75[_0xf307('0x1a')][_0xf307('0x1b')]({'where':{'id':_0x555e9e[_0xf307('0x1c')]},'raw':!![]})['then'](function(_0x4ca2de){_0x3257de=_0x4ca2de;if(_0x3257de&&_0x3257de['type']){switch(_0x3257de['type']){case _0xf307('0x1d'):var _0x24ede5=require('twilio');if(_0x3257de['accountSid']&&_0x3257de[_0xf307('0x1e')]&&_0x3257de['phone']){var _0x443bc9=new _0x24ede5(_0x3257de['accountSid'],_0x3257de[_0xf307('0x1e')]);_0x443bc9[_0xf307('0x1f')][_0xf307('0x20')]({'body':_0x555e9e[_0xf307('0x21')],'to':'whatsapp:'+_0x555e9e[_0xf307('0x22')],'from':'whatsapp:'+_0x3257de[_0xf307('0x22')],'statusCallback':_0x3257de[_0xf307('0x23')]+_0xf307('0x24')+_0x555e9e['id']+_0xf307('0x25')+_0x3257de['token']})[_0xf307('0x16')](function(_0x1ce3b0){if(_0x1ce3b0['sid']){return _0x1fdfbf[_0xf307('0x26')]({'messageId':_0x1ce3b0[_0xf307('0x27')]});}})['catch'](function(_0x46fa3f){logger[_0xf307('0x28')](_0xf307('0x29'),'afterCreate','twilio',util['inspect'](_0x46fa3f,{'showHidden':![],'depth':null}));});}else{logger[_0xf307('0x28')](_0xf307('0x29'),_0xf307('0x2a'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})['finally'](function(){_0x22568f();});}else{_0x22568f();}}},'charset':_0xf307('0x2b'),'collate':_0xf307('0x2c')});};
\ No newline at end of file
+var _0x7ece=['createdAt','catch','error','WhatsappAccount','find','WhatsappAccountId','type','accountSid','authToken','phone','create','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally','utf8mb4','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','messageId','fti_whatsapp_messages','body','FULLTEXT','get','direction','toLowerCase','out','secret','isNil','WhatsappInteraction','findOne','WhatsappInteractionId','then','update'];(function(_0x4f8674,_0x3bf858){var _0x6d6118=function(_0x4fcba6){while(--_0x4fcba6){_0x4f8674['push'](_0x4f8674['shift']());}};_0x6d6118(++_0x3bf858);}(_0x7ece,0x1e3));var _0xe7ec=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x7ece[_0x2e4aa2];return _0x5e6092;};'use strict';var _=require(_0xe7ec('0x0'));var util=require(_0xe7ec('0x1'));var logger=require(_0xe7ec('0x2'))(_0xe7ec('0x3'));var moment=require('moment');var BPromise=require(_0xe7ec('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe7ec('0x5'));var rimraf=require(_0xe7ec('0x6'));var config=require(_0xe7ec('0x7'));var attributes=require(_0xe7ec('0x8'));module[_0xe7ec('0x9')]=function(_0x303c43,_0x4f72be){return _0x303c43[_0xe7ec('0xa')](_0xe7ec('0xb'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0xe7ec('0xc'),'fields':['messageId']},{'name':_0xe7ec('0xd'),'fields':[_0xe7ec('0xe')],'type':_0xe7ec('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xb6466a,_0x35535d,_0x266545){var _0x508d15=_0x303c43['models'];var _0x592dd6=_0xb6466a[_0xe7ec('0x10')]({'plain':!![]});if(_0x592dd6[_0xe7ec('0x11')][_0xe7ec('0x12')]()==='in'||_0x592dd6[_0xe7ec('0x11')][_0xe7ec('0x12')]()===_0xe7ec('0x13')&&!_0x592dd6[_0xe7ec('0x14')]&&!_[_0xe7ec('0x15')](_0x592dd6['UserId'])){_0x508d15[_0xe7ec('0x16')][_0xe7ec('0x17')]({'where':{'id':_0x592dd6[_0xe7ec('0x18')]}})[_0xe7ec('0x19')](function(_0x1e2e61){if(_0x1e2e61){_0x1e2e61[_0xe7ec('0x1a')]({'lastMsgAt':_0x592dd6[_0xe7ec('0x1b')],'lastMsgDirection':_0x592dd6['direction'][_0xe7ec('0x12')]()});}})[_0xe7ec('0x1c')](function(_0x12bd5e){console[_0xe7ec('0x1d')](_0x12bd5e);});}if(_0x592dd6['direction']===_0xe7ec('0x13')&&!_0x592dd6[_0xe7ec('0x14')]){var _0x932225;_0x508d15[_0xe7ec('0x1e')][_0xe7ec('0x1f')]({'where':{'id':_0x592dd6[_0xe7ec('0x20')]},'raw':!![]})[_0xe7ec('0x19')](function(_0x4f7924){_0x932225=_0x4f7924;if(_0x932225&&_0x932225['type']){switch(_0x932225[_0xe7ec('0x21')]){case'twilio':var _0xb61f2d=require('twilio');if(_0x932225[_0xe7ec('0x22')]&&_0x932225[_0xe7ec('0x23')]&&_0x932225[_0xe7ec('0x24')]){var _0x2a6908=new _0xb61f2d(_0x932225[_0xe7ec('0x22')],_0x932225['authToken']);_0x2a6908['messages'][_0xe7ec('0x25')]({'body':_0x592dd6['body'],'to':_0xe7ec('0x26')+_0x592dd6[_0xe7ec('0x24')],'from':_0xe7ec('0x26')+_0x932225['phone'],'statusCallback':_0x932225[_0xe7ec('0x27')]+_0xe7ec('0x28')+_0x592dd6['id']+_0xe7ec('0x29')+_0x932225[_0xe7ec('0x2a')]})[_0xe7ec('0x19')](function(_0x169f07){if(_0x169f07['sid']){return _0xb6466a[_0xe7ec('0x1a')]({'messageId':_0x169f07[_0xe7ec('0x2b')]});}})[_0xe7ec('0x1c')](function(_0x5b97d1){logger['error'](_0xe7ec('0x2c'),_0xe7ec('0x2d'),'twilio',util[_0xe7ec('0x2e')](_0x5b97d1,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xe7ec('0x2c'),_0xe7ec('0x2d'),_0xe7ec('0x2f'),_0xe7ec('0x30'));}break;}}})[_0xe7ec('0x31')](function(){_0x266545();});}else{_0x266545();}}},'charset':_0xe7ec('0x32'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index acf5276..b326f4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f22=['code','message','result','catch','WhatsappMessage','create','body','options','raw','CreateWhatsappMessage','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x14d12d,_0x487352){var _0x53dd42=function(_0x2bca6d){while(--_0x2bca6d){_0x14d12d['push'](_0x14d12d['shift']());}};_0x53dd42(++_0x487352);}(_0x4f22,0x1f4));var _0x24f2=function(_0x5ab3c1,_0x2ac4a2){_0x5ab3c1=_0x5ab3c1-0x0;var _0x4ea129=_0x4f22[_0x5ab3c1];return _0x4ea129;};'use strict';var _=require(_0x24f2('0x0'));var util=require(_0x24f2('0x1'));var moment=require('moment');var BPromise=require(_0x24f2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x24f2('0x3'));var db=require(_0x24f2('0x4'))['db'];var utils=require(_0x24f2('0x5'));var logger=require(_0x24f2('0x6'))(_0x24f2('0x7'));var config=require('../../config/environment');var jayson=require(_0x24f2('0x8'));var client=jayson[_0x24f2('0x9')][_0x24f2('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x24f2('0xb')],{'host':_0x24f2('0xc'),'port':0x18eb});var socket=require(_0x24f2('0xd'))(new Redis(config['redis']));require(_0x24f2('0xe'))[_0x24f2('0xf')](socket);function respondWithRpcPromise(_0x5e2ae0,_0x194eac,_0x445791){return new BPromise(function(_0x5aac73,_0x3d7434){return client[_0x24f2('0x10')](_0x5e2ae0,_0x445791)[_0x24f2('0x11')](function(_0x4c6f4c){logger[_0x24f2('0x12')](_0x24f2('0x13'),_0x194eac,'request\x20sent');logger[_0x24f2('0x14')](_0x24f2('0x15'),_0x194eac,_0x24f2('0x16'),JSON[_0x24f2('0x17')](_0x4c6f4c));if(_0x4c6f4c[_0x24f2('0x18')]){if(_0x4c6f4c[_0x24f2('0x18')][_0x24f2('0x19')]===0x1f4){logger['error'](_0x24f2('0x13'),_0x194eac,_0x4c6f4c['error']['message']);return _0x3d7434(_0x4c6f4c['error'][_0x24f2('0x1a')]);}logger[_0x24f2('0x18')](_0x24f2('0x13'),_0x194eac,_0x4c6f4c[_0x24f2('0x18')][_0x24f2('0x1a')]);return _0x5aac73(_0x4c6f4c[_0x24f2('0x18')]['message']);}else{logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x194eac,_0x24f2('0x16'));_0x5aac73(_0x4c6f4c[_0x24f2('0x1b')][_0x24f2('0x1a')]);}})[_0x24f2('0x1c')](function(_0x7dcca6){logger[_0x24f2('0x18')](_0x24f2('0x13'),_0x194eac,_0x7dcca6);_0x3d7434(_0x7dcca6);});});}exports['CreateWhatsappMessage']=function(_0x3e6773){var _0x2ee487=this;return new Promise(function(_0x36c8a9,_0x5e5c3f){return db[_0x24f2('0x1d')][_0x24f2('0x1e')](_0x3e6773[_0x24f2('0x1f')],{'raw':_0x3e6773[_0x24f2('0x20')]?_0x3e6773[_0x24f2('0x20')][_0x24f2('0x21')]===undefined?!![]:![]:!![]})[_0x24f2('0x11')](function(_0x51f6c4){logger[_0x24f2('0x12')]('CreateWhatsappMessage',_0x3e6773);logger[_0x24f2('0x14')](_0x24f2('0x22'),_0x3e6773,JSON[_0x24f2('0x17')](_0x51f6c4));_0x36c8a9(_0x51f6c4);})[_0x24f2('0x1c')](function(_0x16fc1a){logger['error'](_0x24f2('0x22'),_0x16fc1a[_0x24f2('0x1a')],_0x3e6773);_0x5e5c3f(_0x2ee487['error'](0x1f4,_0x16fc1a['message']));});});};
\ No newline at end of file
+var _0x9c3e=['catch','WhatsappMessage','create','body','options','then','CreateWhatsappMessage','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','localhost','./whatsappMessage.socket','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x5b9e41,_0x1e43c5){var _0x3fd1b3=function(_0x1ff2f0){while(--_0x1ff2f0){_0x5b9e41['push'](_0x5b9e41['shift']());}};_0x3fd1b3(++_0x1e43c5);}(_0x9c3e,0xd9));var _0xe9c3=function(_0x4d1658,_0xdb6e43){_0x4d1658=_0x4d1658-0x0;var _0x42f396=_0x9c3e[_0x4d1658];return _0x42f396;};'use strict';var _=require('lodash');var util=require(_0xe9c3('0x0'));var moment=require('moment');var BPromise=require(_0xe9c3('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe9c3('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xe9c3('0x3'));var logger=require(_0xe9c3('0x4'))(_0xe9c3('0x5'));var config=require(_0xe9c3('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xe9c3('0x7')][_0xe9c3('0x8')]({'port':0x232a});config['redis']=_[_0xe9c3('0x9')](config[_0xe9c3('0xa')],{'host':_0xe9c3('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe9c3('0xa')]));require(_0xe9c3('0xc'))['register'](socket);function respondWithRpcPromise(_0xfc8411,_0x4cc0f6,_0x238478){return new BPromise(function(_0x113a4b,_0x23079){return client[_0xe9c3('0xd')](_0xfc8411,_0x238478)['then'](function(_0x47a4d9){logger[_0xe9c3('0xe')](_0xe9c3('0xf'),_0x4cc0f6,_0xe9c3('0x10'));logger[_0xe9c3('0x11')](_0xe9c3('0x12'),_0x4cc0f6,'request\x20sent',JSON[_0xe9c3('0x13')](_0x47a4d9));if(_0x47a4d9[_0xe9c3('0x14')]){if(_0x47a4d9[_0xe9c3('0x14')]['code']===0x1f4){logger[_0xe9c3('0x14')](_0xe9c3('0xf'),_0x4cc0f6,_0x47a4d9['error'][_0xe9c3('0x15')]);return _0x23079(_0x47a4d9[_0xe9c3('0x14')][_0xe9c3('0x15')]);}logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x4cc0f6,_0x47a4d9[_0xe9c3('0x14')][_0xe9c3('0x15')]);return _0x113a4b(_0x47a4d9['error'][_0xe9c3('0x15')]);}else{logger[_0xe9c3('0xe')](_0xe9c3('0xf'),_0x4cc0f6,'request\x20sent');_0x113a4b(_0x47a4d9[_0xe9c3('0x16')][_0xe9c3('0x15')]);}})[_0xe9c3('0x17')](function(_0x39fed6){logger[_0xe9c3('0x14')](_0xe9c3('0xf'),_0x4cc0f6,_0x39fed6);_0x23079(_0x39fed6);});});}exports['CreateWhatsappMessage']=function(_0x185ad2){var _0x1e3430=this;return new Promise(function(_0x1e1812,_0xc72425){return db[_0xe9c3('0x18')][_0xe9c3('0x19')](_0x185ad2[_0xe9c3('0x1a')],{'raw':_0x185ad2[_0xe9c3('0x1b')]?_0x185ad2['options']['raw']===undefined?!![]:![]:!![]})[_0xe9c3('0x1c')](function(_0x39ba5e){logger['info'](_0xe9c3('0x1d'),_0x185ad2);logger['debug']('CreateWhatsappMessage',_0x185ad2,JSON[_0xe9c3('0x13')](_0x39ba5e));_0x1e1812(_0x39ba5e);})[_0xe9c3('0x17')](function(_0x2d159d){logger[_0xe9c3('0x14')](_0xe9c3('0x1d'),_0x2d159d[_0xe9c3('0x15')],_0x185ad2);_0xc72425(_0x1e3430[_0xe9c3('0x14')](0x1f4,_0x2d159d[_0xe9c3('0x15')]));});});};
\ No newline at end of file
index b6346bb..32fbee6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c21=['register','whatsappMessage:','./whatsappMessage.events','save','remove','emit'];(function(_0x4df1f5,_0x39c6d2){var _0x56585b=function(_0x287b6e){while(--_0x287b6e){_0x4df1f5['push'](_0x4df1f5['shift']());}};_0x56585b(++_0x39c6d2);}(_0x9c21,0x1b8));var _0x19c2=function(_0x260593,_0x2bdb5f){_0x260593=_0x260593-0x0;var _0x63c998=_0x9c21[_0x260593];return _0x63c998;};'use strict';var WhatsappMessageEvents=require(_0x19c2('0x0'));var events=[_0x19c2('0x1'),_0x19c2('0x2'),'update'];function createListener(_0x31b612,_0x61c0fc){return function(_0x4f6d67){_0x61c0fc[_0x19c2('0x3')](_0x31b612,_0x4f6d67);};}function removeListener(_0x3b2719,_0x31151d){return function(){WhatsappMessageEvents['removeListener'](_0x3b2719,_0x31151d);};}exports[_0x19c2('0x4')]=function(_0x26ba20){for(var _0x17b400=0x0,_0x1435e8=events['length'];_0x17b400<_0x1435e8;_0x17b400++){var _0x19c9aa=events[_0x17b400];var _0x42ca14=createListener(_0x19c2('0x5')+_0x19c9aa,_0x26ba20);WhatsappMessageEvents['on'](_0x19c9aa,_0x42ca14);}};
\ No newline at end of file
+var _0x89e8=['length','whatsappMessage:','./whatsappMessage.events','save','remove','update','emit','removeListener','register'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x89e8,0x1cd));var _0x889e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x89e8[_0x1ac595];return _0x455fff;};'use strict';var WhatsappMessageEvents=require(_0x889e('0x0'));var events=[_0x889e('0x1'),_0x889e('0x2'),_0x889e('0x3')];function createListener(_0x592ff6,_0x1d4493){return function(_0x3eaf2c){_0x1d4493[_0x889e('0x4')](_0x592ff6,_0x3eaf2c);};}function removeListener(_0x25016b,_0x29648c){return function(){WhatsappMessageEvents[_0x889e('0x5')](_0x25016b,_0x29648c);};}exports[_0x889e('0x6')]=function(_0x321e60){for(var _0x5bd52d=0x0,_0x4f43c0=events[_0x889e('0x7')];_0x5bd52d<_0x4f43c0;_0x5bd52d++){var _0x22582c=events[_0x5bd52d];var _0x2a2345=createListener(_0x889e('0x8')+_0x22582c,_0x321e60);WhatsappMessageEvents['on'](_0x22582c,_0x2a2345);}};
\ No newline at end of file
index a9bf903..1a50a4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c35=['removeAgents','exports','multer','path','connect-timeout','express','../../components/interaction/service','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/members','/:id/teams','getTeams','getAgents','post','create','/:id/users','addAgents','put','update','delete','destroy'];(function(_0x1069f5,_0x51cc78){var _0x5c211d=function(_0x1d527f){while(--_0x1d527f){_0x1069f5['push'](_0x1069f5['shift']());}};_0x5c211d(++_0x51cc78);}(_0x7c35,0x13a));var _0x57c3=function(_0x3b50d1,_0x198f0a){_0x3b50d1=_0x3b50d1-0x0;var _0x5a8dcb=_0x7c35[_0x3b50d1];return _0x5a8dcb;};'use strict';var multer=require(_0x57c3('0x0'));var util=require('util');var path=require(_0x57c3('0x1'));var timeout=require(_0x57c3('0x2'));var express=require(_0x57c3('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x57c3('0x4'));var config=require('../../config/environment');var controller=require('./whatsappQueue.controller');router['get']('/',auth[_0x57c3('0x5')](),controller[_0x57c3('0x6')]);router[_0x57c3('0x7')](_0x57c3('0x8'),auth[_0x57c3('0x5')](),controller[_0x57c3('0x9')]);router[_0x57c3('0x7')](_0x57c3('0xa'),auth['isAuthenticated'](),controller[_0x57c3('0xb')]);router['get'](_0x57c3('0xc'),auth[_0x57c3('0x5')](),controller['getMembers']);router[_0x57c3('0x7')](_0x57c3('0xd'),auth['isAuthenticated'](),controller[_0x57c3('0xe')]);router['get']('/:id/users',auth[_0x57c3('0x5')](),controller[_0x57c3('0xf')]);router[_0x57c3('0x10')]('/',auth['isAuthenticated'](),controller[_0x57c3('0x11')]);router[_0x57c3('0x10')](_0x57c3('0xd'),auth[_0x57c3('0x5')](),controller['addTeams']);router[_0x57c3('0x10')](_0x57c3('0x12'),auth[_0x57c3('0x5')](),controller[_0x57c3('0x13')]);router[_0x57c3('0x14')](_0x57c3('0xa'),auth['isAuthenticated'](),controller[_0x57c3('0x15')]);router[_0x57c3('0x16')](_0x57c3('0xa'),auth[_0x57c3('0x5')](),controller[_0x57c3('0x17')]);router[_0x57c3('0x16')]('/:id/teams',auth[_0x57c3('0x5')](),controller['removeTeams']);router[_0x57c3('0x16')](_0x57c3('0x12'),auth[_0x57c3('0x5')](),controller[_0x57c3('0x18')]);module[_0x57c3('0x19')]=router;
\ No newline at end of file
+var _0x72a8=['/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','put','update','destroy','delete','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index','describe','/:id'];(function(_0x3a280e,_0x1f3393){var _0x409167=function(_0x4ff481){while(--_0x4ff481){_0x3a280e['push'](_0x3a280e['shift']());}};_0x409167(++_0x1f3393);}(_0x72a8,0x94));var _0x872a=function(_0x52c490,_0x4360a8){_0x52c490=_0x52c490-0x0;var _0x3e6cec=_0x72a8[_0x52c490];return _0x3e6cec;};'use strict';var multer=require(_0x872a('0x0'));var util=require(_0x872a('0x1'));var path=require(_0x872a('0x2'));var timeout=require(_0x872a('0x3'));var express=require(_0x872a('0x4'));var router=express[_0x872a('0x5')]();var fs_extra=require(_0x872a('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x872a('0x7'));var controller=require(_0x872a('0x8'));router[_0x872a('0x9')]('/',auth[_0x872a('0xa')](),controller[_0x872a('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x872a('0xc')]);router[_0x872a('0x9')](_0x872a('0xd'),auth[_0x872a('0xa')](),controller['show']);router['get'](_0x872a('0xe'),auth['isAuthenticated'](),controller[_0x872a('0xf')]);router[_0x872a('0x9')](_0x872a('0x10'),auth[_0x872a('0xa')](),controller[_0x872a('0x11')]);router[_0x872a('0x9')](_0x872a('0x12'),auth[_0x872a('0xa')](),controller['getAgents']);router[_0x872a('0x13')]('/',auth[_0x872a('0xa')](),controller['create']);router[_0x872a('0x13')](_0x872a('0x10'),auth['isAuthenticated'](),controller['addTeams']);router['post'](_0x872a('0x12'),auth[_0x872a('0xa')](),controller['addAgents']);router[_0x872a('0x14')]('/:id',auth[_0x872a('0xa')](),controller[_0x872a('0x15')]);router['delete']('/:id',auth[_0x872a('0xa')](),controller[_0x872a('0x16')]);router[_0x872a('0x17')]('/:id/teams',auth[_0x872a('0xa')](),controller[_0x872a('0x18')]);router[_0x872a('0x17')](_0x872a('0x12'),auth[_0x872a('0xa')](),controller[_0x872a('0x19')]);module[_0x872a('0x1a')]=router;
\ No newline at end of file
index fc22ffe..3c1300b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2137=['beepall','roundrobin','sequelize','exports','STRING','ENUM'];(function(_0x460358,_0x354877){var _0xdfdfa8=function(_0x4cc317){while(--_0x4cc317){_0x460358['push'](_0x460358['shift']());}};_0xdfdfa8(++_0x354877);}(_0x2137,0x134));var _0x7213=function(_0x29e2af,_0x15e2b1){_0x29e2af=_0x29e2af-0x0;var _0x1ea06a=_0x2137[_0x29e2af];return _0x1ea06a;};'use strict';var Sequelize=require(_0x7213('0x0'));module[_0x7213('0x1')]={'name':{'type':Sequelize[_0x7213('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7213('0x3')]('rrmemory',_0x7213('0x4'),_0x7213('0x5'))},'description':{'type':Sequelize[_0x7213('0x2')]}};
\ No newline at end of file
+var _0xa1b9=['roundrobin','sequelize','STRING','name','INTEGER','ENUM','rrmemory','beepall'];(function(_0x17a831,_0x12ffd3){var _0x587750=function(_0x4c5fdc){while(--_0x4c5fdc){_0x17a831['push'](_0x17a831['shift']());}};_0x587750(++_0x12ffd3);}(_0xa1b9,0x71));var _0x9a1b=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa1b9[_0x3b5250];return _0xc844a1;};'use strict';var Sequelize=require(_0x9a1b('0x0'));module['exports']={'name':{'type':Sequelize[_0x9a1b('0x1')],'unique':_0x9a1b('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x9a1b('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9a1b('0x4')](_0x9a1b('0x5'),_0x9a1b('0x6'),_0x9a1b('0x7'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f690878..5fd754e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4065=['findAll','User','voicePause','interface','flatMap','transaction','findOrCreate','forEach','emit','removeTeams','Agents','select','tq.TeamId','from','team_has_whatsapp_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','push','sequelize','toString','QueryTypes','TeamId','includes','all','union','compact','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','userWhatsappQueue:save','isArray','getAgents','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./whatsappQueue.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','WhatsappQueues','UserProfileResource','destroy','error','stack','send','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','name','merge','WhatsappQueue','catch','params','keys','rawAttributes','includeAll','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','nolimit','WhatsappQueueId','UserWhatsappQueue','findAndCountAll','UserId','agent','whatsappPause','updatedAt','rows','format','SIP','createdAt','getTeams','Team','addTeams','ids'];(function(_0x3902c1,_0x1c9eb2){var _0x1266cc=function(_0x50c2c5){while(--_0x50c2c5){_0x3902c1['push'](_0x3902c1['shift']());}};_0x1266cc(++_0x1c9eb2);}(_0x4065,0x139));var _0x5406=function(_0x5b56d1,_0x1ea7d2){_0x5b56d1=_0x5b56d1-0x0;var _0x1c8ea2=_0x4065[_0x5b56d1];return _0x1c8ea2;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x5406('0x0'));var jsonpatch=require(_0x5406('0x1'));var rp=require(_0x5406('0x2'));var moment=require(_0x5406('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5406('0x4'));var util=require(_0x5406('0x5'));var path=require('path');var sox=require(_0x5406('0x6'));var csv=require(_0x5406('0x7'));var ejs=require(_0x5406('0x8'));var fs=require('fs');var fs_extra=require(_0x5406('0x9'));var _=require(_0x5406('0xa'));var squel=require(_0x5406('0xb'));var crypto=require(_0x5406('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5406('0xd'));var toCsv=require(_0x5406('0x7'));var querystring=require(_0x5406('0xe'));var Papa=require(_0x5406('0xf'));var Redis=require(_0x5406('0x10'));var authService=require(_0x5406('0x11'));var qs=require(_0x5406('0x12'));var as=require(_0x5406('0x13'));var hardwareService=require(_0x5406('0x14'));var logger=require(_0x5406('0x15'))(_0x5406('0x16'));var utils=require(_0x5406('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5406('0x18'))['db'];config['redis']=_[_0x5406('0x19')](config['redis'],{'host':_0x5406('0x1a'),'port':0x18eb});var socket=require(_0x5406('0x1b'))(new Redis(config[_0x5406('0x1c')]));require(_0x5406('0x1d'))[_0x5406('0x1e')](socket);function respondWithStatusCode(_0x4fc6e7,_0x173cbe){_0x173cbe=_0x173cbe||0xcc;return function(_0x339f1b){if(_0x339f1b){return _0x4fc6e7[_0x5406('0x1f')](_0x173cbe);}return _0x4fc6e7[_0x5406('0x20')](_0x173cbe)[_0x5406('0x21')]();};}function respondWithResult(_0x25dae0,_0x3d8625){_0x3d8625=_0x3d8625||0xc8;return function(_0x22bb07){if(_0x22bb07){return _0x25dae0[_0x5406('0x20')](_0x3d8625)['json'](_0x22bb07);}};}function respondWithFilteredResult(_0x1c754b,_0x3392eb){return function(_0x27f99d){if(_0x27f99d){var _0x20871e=typeof _0x3392eb[_0x5406('0x22')]===_0x5406('0x23')&&typeof _0x3392eb[_0x5406('0x24')]===_0x5406('0x23');var _0x1a5229=_0x27f99d[_0x5406('0x25')];var _0x298d14=_0x20871e?0x0:_0x3392eb[_0x5406('0x22')];var _0x475bb8=_0x20871e?_0x27f99d['count']:_0x3392eb[_0x5406('0x22')]+_0x3392eb[_0x5406('0x24')];var _0x156146;if(_0x475bb8>=_0x1a5229){_0x475bb8=_0x1a5229;_0x156146=0xc8;}else{_0x156146=0xce;}_0x1c754b['status'](_0x156146);return _0x1c754b[_0x5406('0x26')]('Content-Range',_0x298d14+'-'+_0x475bb8+'/'+_0x1a5229)[_0x5406('0x27')](_0x27f99d);}return null;};}function patchUpdates(_0xf94bf3){return function(_0x4a2fb5){try{jsonpatch[_0x5406('0x28')](_0x4a2fb5,_0xf94bf3,!![]);}catch(_0xed2d6f){return BPromise[_0x5406('0x29')](_0xed2d6f);}return _0x4a2fb5[_0x5406('0x2a')]();};}function saveUpdates(_0x5069ca,_0x75e2a9){return function(_0x12f39e){if(_0x12f39e){return _0x12f39e[_0x5406('0x2b')](_0x5069ca)['then'](function(_0x467416){return _0x467416;});}return null;};}function removeEntity(_0x58bdc9,_0x4729b1){return function(_0x166c91){if(_0x166c91){return _0x166c91['destroy']()[_0x5406('0x2c')](function(){var _0x5f5041=_0x166c91['get']({'plain':!![]});var _0x4c3d4d=_0x5406('0x2d');return db[_0x5406('0x2e')][_0x5406('0x2f')]({'where':{'type':_0x4c3d4d,'resourceId':_0x5f5041['id']}})[_0x5406('0x2c')](function(){return _0x166c91;});})['then'](function(){_0x58bdc9['status'](0xcc)[_0x5406('0x21')]();});}};}function handleEntityNotFound(_0x460edf,_0x277696){return function(_0x1f9765){if(!_0x1f9765){_0x460edf['sendStatus'](0x194);}return _0x1f9765;};}function handleError(_0x38f43b,_0x27323f){_0x27323f=_0x27323f||0x1f4;return function(_0x46fbcc){logger[_0x5406('0x30')](_0x46fbcc[_0x5406('0x31')]);if(_0x46fbcc['name']){delete _0x46fbcc['name'];}_0x38f43b[_0x5406('0x20')](_0x27323f)[_0x5406('0x32')](_0x46fbcc);};}exports['index']=function(_0x42abed,_0x39ae54){var _0x142c09={},_0x17ed82={},_0x304bcb={'count':0x0,'rows':[]};var _0x4c3088=_['map'](db['WhatsappQueue']['rawAttributes'],function(_0x4ac1a4){return{'name':_0x4ac1a4[_0x5406('0x33')],'type':_0x4ac1a4[_0x5406('0x34')][_0x5406('0x35')]};});_0x17ed82[_0x5406('0x36')]=_[_0x5406('0x37')](_0x4c3088,'name');_0x17ed82[_0x5406('0x38')]=_['keys'](_0x42abed[_0x5406('0x38')]);_0x17ed82[_0x5406('0x39')]=_[_0x5406('0x3a')](_0x17ed82[_0x5406('0x36')],_0x17ed82[_0x5406('0x38')]);_0x142c09[_0x5406('0x3b')]=_[_0x5406('0x3a')](_0x17ed82[_0x5406('0x36')],qs[_0x5406('0x3c')](_0x42abed[_0x5406('0x38')][_0x5406('0x3c')]));_0x142c09[_0x5406('0x3b')]=_0x142c09[_0x5406('0x3b')][_0x5406('0x3d')]?_0x142c09[_0x5406('0x3b')]:_0x17ed82[_0x5406('0x36')];if(!_0x42abed[_0x5406('0x38')][_0x5406('0x3e')]('nolimit')){_0x142c09[_0x5406('0x24')]=qs[_0x5406('0x24')](_0x42abed['query'][_0x5406('0x24')]);_0x142c09[_0x5406('0x22')]=qs[_0x5406('0x22')](_0x42abed[_0x5406('0x38')]['offset']);}_0x142c09[_0x5406('0x3f')]=qs[_0x5406('0x40')](_0x42abed[_0x5406('0x38')][_0x5406('0x40')]);_0x142c09[_0x5406('0x41')]=qs['filters'](_[_0x5406('0x42')](_0x42abed['query'],_0x17ed82[_0x5406('0x39')]),_0x4c3088);if(_0x42abed['query'][_0x5406('0x43')]){_0x142c09[_0x5406('0x41')]=_['merge'](_0x142c09[_0x5406('0x41')],{'$or':_[_0x5406('0x37')](_0x4c3088,function(_0x57500c){if(_0x57500c[_0x5406('0x34')]!=='VIRTUAL'){var _0xb6d32d={};_0xb6d32d[_0x57500c[_0x5406('0x44')]]={'$like':'%'+_0x42abed[_0x5406('0x38')][_0x5406('0x43')]+'%'};return _0xb6d32d;}})});}_0x142c09=_[_0x5406('0x45')]({},_0x142c09,_0x42abed['options']);var _0x16aa71={'where':_0x142c09[_0x5406('0x41')]};return db[_0x5406('0x46')][_0x5406('0x25')](_0x16aa71)[_0x5406('0x2c')](function(_0x4ff11b){_0x304bcb['count']=_0x4ff11b;if(_0x42abed[_0x5406('0x38')]['includeAll']){_0x142c09['include']=[{'all':!![]}];}return db[_0x5406('0x46')]['findAll'](_0x142c09);})['then'](function(_0x587dc6){_0x304bcb['rows']=_0x587dc6;return _0x304bcb;})[_0x5406('0x2c')](respondWithFilteredResult(_0x39ae54,_0x142c09))[_0x5406('0x47')](handleError(_0x39ae54,null));};exports['show']=function(_0x321b1c,_0x4e796e){var _0x1866dd={'raw':!![],'where':{'id':_0x321b1c[_0x5406('0x48')]['id']}},_0x1a62ef={};_0x1a62ef[_0x5406('0x36')]=_[_0x5406('0x49')](db[_0x5406('0x46')][_0x5406('0x4a')]);_0x1a62ef[_0x5406('0x38')]=_[_0x5406('0x49')](_0x321b1c['query']);_0x1a62ef[_0x5406('0x39')]=_[_0x5406('0x3a')](_0x1a62ef[_0x5406('0x36')],_0x1a62ef[_0x5406('0x38')]);_0x1866dd[_0x5406('0x3b')]=_[_0x5406('0x3a')](_0x1a62ef[_0x5406('0x36')],qs[_0x5406('0x3c')](_0x321b1c[_0x5406('0x38')][_0x5406('0x3c')]));_0x1866dd['attributes']=_0x1866dd[_0x5406('0x3b')][_0x5406('0x3d')]?_0x1866dd[_0x5406('0x3b')]:_0x1a62ef[_0x5406('0x36')];if(_0x321b1c[_0x5406('0x38')][_0x5406('0x4b')]){_0x1866dd['include']=[{'all':!![]}];}_0x1866dd=_[_0x5406('0x45')]({},_0x1866dd,_0x321b1c[_0x5406('0x4c')]);return db['WhatsappQueue'][_0x5406('0x4d')](_0x1866dd)[_0x5406('0x2c')](handleEntityNotFound(_0x4e796e,null))[_0x5406('0x2c')](respondWithResult(_0x4e796e,null))[_0x5406('0x47')](handleError(_0x4e796e,null));};exports[_0x5406('0x4e')]=function(_0x4a0878,_0x472bff){return db[_0x5406('0x46')][_0x5406('0x4e')](_0x4a0878[_0x5406('0x4f')],{})[_0x5406('0x2c')](function(_0x37847c){var _0x53892e=_0x4a0878[_0x5406('0x50')][_0x5406('0x51')]({'plain':!![]});if(!_0x53892e)throw new Error(_0x5406('0x52'));if(_0x53892e['role']===_0x5406('0x50')){var _0x395a88=_0x37847c[_0x5406('0x51')]({'plain':!![]});var _0x9aa6fe='WhatsappQueues';return db[_0x5406('0x53')][_0x5406('0x4d')]({'where':{'name':_0x9aa6fe,'userProfileId':_0x53892e[_0x5406('0x54')]},'raw':!![]})[_0x5406('0x2c')](function(_0x340065){if(_0x340065&&_0x340065['autoAssociation']===0x0){return db[_0x5406('0x2e')][_0x5406('0x4e')]({'name':_0x395a88[_0x5406('0x44')],'resourceId':_0x395a88['id'],'type':_0x340065[_0x5406('0x44')],'sectionId':_0x340065['id']},{})['then'](function(){return _0x37847c;});}else{return _0x37847c;}})['catch'](function(_0xb40b49){logger[_0x5406('0x30')](_0x5406('0x55'),_0xb40b49);throw _0xb40b49;});}return _0x37847c;})[_0x5406('0x2c')](respondWithResult(_0x472bff,0xc9))['catch'](handleError(_0x472bff,null));};exports[_0x5406('0x2b')]=function(_0x277d01,_0x604d95){if(_0x277d01[_0x5406('0x4f')]['id']){delete _0x277d01[_0x5406('0x4f')]['id'];}return db[_0x5406('0x46')][_0x5406('0x4d')]({'where':{'id':_0x277d01['params']['id']}})[_0x5406('0x2c')](handleEntityNotFound(_0x604d95,null))[_0x5406('0x2c')](saveUpdates(_0x277d01['body'],null))['then'](respondWithResult(_0x604d95,null))['catch'](handleError(_0x604d95,null));};exports[_0x5406('0x2f')]=function(_0x30e02e,_0x59c5ee){return db[_0x5406('0x46')][_0x5406('0x4d')]({'where':{'id':_0x30e02e[_0x5406('0x48')]['id']}})[_0x5406('0x2c')](handleEntityNotFound(_0x59c5ee,null))[_0x5406('0x2c')](removeEntity(_0x59c5ee,null))['catch'](handleError(_0x59c5ee,null));};exports[_0x5406('0x56')]=function(_0x28a84f,_0x695018){return db[_0x5406('0x46')][_0x5406('0x56')]()[_0x5406('0x2c')](respondWithResult(_0x695018,null))[_0x5406('0x47')](handleError(_0x695018,null));};exports['getMembers']=function(_0x429bc2,_0x1cdf38,_0x3740f1){var _0x3d7ac2={'raw':!![],'where':{}},_0x54dc36={},_0x163b3d;return db[_0x5406('0x46')][_0x5406('0x57')]({'where':{'id':_0x429bc2[_0x5406('0x48')]['id']}})['then'](handleEntityNotFound(_0x1cdf38,null))[_0x5406('0x2c')](function(_0x71f13a){if(_0x71f13a){_0x163b3d=_0x71f13a[_0x5406('0x51')]({'plain':!![]});_0x54dc36[_0x5406('0x36')]=_['keys'](db['UserWhatsappQueue'][_0x5406('0x4a')]);_0x54dc36[_0x5406('0x38')]=_[_0x5406('0x49')](_0x429bc2[_0x5406('0x38')]);_0x54dc36[_0x5406('0x39')]=_[_0x5406('0x3a')](_0x54dc36['model'],_0x54dc36[_0x5406('0x38')]);_0x3d7ac2['attributes']=_[_0x5406('0x3a')](_0x54dc36[_0x5406('0x36')],qs[_0x5406('0x3c')](_0x429bc2[_0x5406('0x38')][_0x5406('0x3c')]));_0x3d7ac2[_0x5406('0x3b')]=_0x3d7ac2[_0x5406('0x3b')]['length']?_0x3d7ac2[_0x5406('0x3b')]:_0x54dc36[_0x5406('0x36')];if(!_0x429bc2[_0x5406('0x38')][_0x5406('0x3e')](_0x5406('0x58'))){_0x3d7ac2['limit']=qs['limit'](_0x429bc2['query'][_0x5406('0x24')]);_0x3d7ac2['offset']=qs['offset'](_0x429bc2[_0x5406('0x38')][_0x5406('0x22')]);}_0x3d7ac2['order']=qs[_0x5406('0x40')](_0x429bc2['query']['sort']);_0x3d7ac2['where']=qs[_0x5406('0x39')](_[_0x5406('0x42')](_0x429bc2[_0x5406('0x38')],_0x54dc36[_0x5406('0x39')]));_0x3d7ac2[_0x5406('0x41')][_0x5406('0x59')]=_0x71f13a['id'];if(_0x429bc2[_0x5406('0x38')][_0x5406('0x43')]){_0x3d7ac2['where']=_[_0x5406('0x45')](_0x3d7ac2[_0x5406('0x41')],{'$or':_[_0x5406('0x37')](_0x3d7ac2[_0x5406('0x3b')],function(_0x5da0fa){var _0x4d5a85={};_0x4d5a85[_0x5da0fa]={'$like':'%'+_0x429bc2[_0x5406('0x38')][_0x5406('0x43')]+'%'};return _0x4d5a85;})});}_0x3d7ac2=_[_0x5406('0x45')]({},_0x3d7ac2,_0x429bc2[_0x5406('0x4c')]);return db[_0x5406('0x5a')]['findAll'](_0x3d7ac2);}})['then'](function(_0x14b4fe){if(_0x14b4fe){return db['User'][_0x5406('0x5b')]({'where':{'id':_[_0x5406('0x37')](_0x14b4fe,_0x5406('0x5c')),'role':_0x5406('0x5d')},'attributes':['id',_0x5406('0x44'),_0x5406('0x5e'),_0x5406('0x5f'),'createdAt']});}})[_0x5406('0x2c')](function(_0x5a2f9){if(_0x5a2f9){return{'count':_0x5a2f9['count'],'rows':_[_0x5406('0x37')](_0x5a2f9[_0x5406('0x60')],function(_0x55f64f){return{'membername':_0x55f64f[_0x5406('0x44')],'UserId':_0x55f64f['id'],'queue_name':_0x163b3d['name'],'WhatsappQueueId':_0x163b3d['id'],'interface':util[_0x5406('0x61')]('%s/%s',_0x5406('0x62'),_0x55f64f[_0x5406('0x44')]),'penalty':0x0,'paused':_0x55f64f[_0x5406('0x5e')],'createdAt':_0x55f64f[_0x5406('0x63')],'updatedAt':_0x55f64f['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x5406('0x2c')](respondWithFilteredResult(_0x1cdf38,_0x3d7ac2))['catch'](handleError(_0x1cdf38,null));};exports[_0x5406('0x64')]=function(_0x59355a,_0x175aa0,_0x1f9b4b){var _0x347d43={};var _0x3d1020={};var _0x424658;var _0x26f216;return db['WhatsappQueue'][_0x5406('0x57')]({'where':{'id':_0x59355a[_0x5406('0x48')]['id']}})['then'](handleEntityNotFound(_0x175aa0,null))[_0x5406('0x2c')](function(_0x28d8ef){if(_0x28d8ef){_0x424658=_0x28d8ef;_0x3d1020[_0x5406('0x36')]=_[_0x5406('0x49')](db[_0x5406('0x65')][_0x5406('0x4a')]);_0x3d1020[_0x5406('0x38')]=_[_0x5406('0x49')](_0x59355a[_0x5406('0x38')]);_0x3d1020[_0x5406('0x39')]=_[_0x5406('0x3a')](_0x3d1020[_0x5406('0x36')],_0x3d1020['query']);_0x347d43[_0x5406('0x3b')]=_[_0x5406('0x3a')](_0x3d1020['model'],qs[_0x5406('0x3c')](_0x59355a[_0x5406('0x38')][_0x5406('0x3c')]));_0x347d43[_0x5406('0x3b')]=_0x347d43['attributes'][_0x5406('0x3d')]?_0x347d43[_0x5406('0x3b')]:_0x3d1020[_0x5406('0x36')];_0x347d43[_0x5406('0x3f')]=qs[_0x5406('0x40')](_0x59355a[_0x5406('0x38')][_0x5406('0x40')]);_0x347d43[_0x5406('0x41')]=qs[_0x5406('0x39')](_['pick'](_0x59355a['query'],_0x3d1020[_0x5406('0x39')]));if(_0x59355a[_0x5406('0x38')][_0x5406('0x43')]){_0x347d43[_0x5406('0x41')]=_[_0x5406('0x45')](_0x347d43[_0x5406('0x41')],{'$or':_[_0x5406('0x37')](_0x347d43[_0x5406('0x3b')],function(_0x28c548){var _0x32cca1={};_0x32cca1[_0x28c548]={'$like':'%'+_0x59355a['query'][_0x5406('0x43')]+'%'};return _0x32cca1;})});}_0x347d43=_[_0x5406('0x45')]({},_0x347d43,_0x59355a[_0x5406('0x4c')]);return _0x424658[_0x5406('0x64')](_0x347d43);}})['then'](function(_0x59b802){if(_0x59b802){_0x26f216=_0x59b802[_0x5406('0x3d')];if(!_0x59355a[_0x5406('0x38')]['hasOwnProperty'](_0x5406('0x58'))){_0x347d43[_0x5406('0x24')]=qs['limit'](_0x59355a['query'][_0x5406('0x24')]);_0x347d43[_0x5406('0x22')]=qs[_0x5406('0x22')](_0x59355a[_0x5406('0x38')][_0x5406('0x22')]);}return _0x424658['getTeams'](_0x347d43);}})[_0x5406('0x2c')](function(_0x21c465){if(_0x21c465){return _0x21c465?{'count':_0x26f216,'rows':_0x21c465}:null;}})[_0x5406('0x2c')](respondWithResult(_0x175aa0,null))['catch'](handleError(_0x175aa0,null));};exports[_0x5406('0x66')]=function(_0x470923,_0x2446ee,_0x44fddb){var _0x266ced=_0x470923['body'][_0x5406('0x67')];return db[_0x5406('0x65')][_0x5406('0x68')]({'where':{'id':_0x266ced},'attributes':['id'],'include':[{'model':db[_0x5406('0x69')],'as':'Agents','attributes':['id',_0x5406('0x44'),'online',_0x5406('0x6a'),_0x5406('0x6b')],'raw':!![]}]})['then'](function(_0x460a8c){if(_0x460a8c){var _0x364d56=_[_0x5406('0x6c')](_0x460a8c,function(_0xe26257){var _0x34ca56=_0xe26257['get']({'plain':!![]});return _0x34ca56['Agents'];});return db['WhatsappQueue'][_0x5406('0x4d')]({'where':{'id':_0x470923[_0x5406('0x48')]['id']}})[_0x5406('0x2c')](function(_0xc4eea0){return db['sequelize'][_0x5406('0x6d')](function(_0x3c6a34){return _0xc4eea0['addTeams'](_0x266ced,{'transaction':_0x3c6a34})[_0x5406('0x2c')](function(){return BPromise['each'](_0x364d56,function(_0x306dd4){return db['UserWhatsappQueue'][_0x5406('0x6e')]({'where':{'UserId':_0x306dd4['id'],'WhatsappQueueId':_0x470923[_0x5406('0x48')]['id']},'transaction':_0x3c6a34});});})['then'](function(){_0x364d56[_0x5406('0x6f')](function(_0x43df46){socket[_0x5406('0x70')]('userWhatsappQueue:save',{'UserId':_0x43df46['id'],'WhatsappQueueId':_0xc4eea0['id']});});});});});}})[_0x5406('0x2c')](respondWithStatusCode(_0x2446ee,null))['catch'](handleError(_0x2446ee,null));};exports[_0x5406('0x71')]=function(_0x42be45,_0x49a09c,_0x1ea7ec){return db[_0x5406('0x65')][_0x5406('0x68')]({'where':{'id':_0x42be45[_0x5406('0x38')][_0x5406('0x67')]},'attributes':['id'],'include':[{'model':db[_0x5406('0x69')],'as':_0x5406('0x72'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x49a09c,null))[_0x5406('0x2c')](function(_0xe847cd){var _0xc66cc5=_[_0x5406('0x37')](_0xe847cd,'id');var _0x52dd9c=[];var _0x292900=[];var _0x568f14=squel[_0x5406('0x73')]();_0x568f14['field'](_0x5406('0x74'))[_0x5406('0x75')](_0x5406('0x76'),'tq')['join'](_0x5406('0x77'),'ut',_0x5406('0x78'))[_0x5406('0x41')]('WhatsappQueueId\x20=\x20?',_0x42be45['params']['id']);for(var _0x474c0d=0x0;_0x474c0d<_0xe847cd[_0x5406('0x3d')];_0x474c0d+=0x1){let _0xdab5b1=_0xe847cd[_0x474c0d];for(var _0x3b46f7=0x0;_0x3b46f7<_0xdab5b1[_0x5406('0x72')][_0x5406('0x3d')];_0x3b46f7+=0x1){let _0x4e2c97=_0xdab5b1['Agents'][_0x3b46f7];var _0x28e2e2=_0x568f14[_0x5406('0x79')]();_0x28e2e2[_0x5406('0x41')]('ut.UserId\x20=\x20?',_0x4e2c97['id']);_0x292900[_0x5406('0x7a')](db[_0x5406('0x7b')][_0x5406('0x38')](_0x28e2e2[_0x5406('0x7c')](),{'type':db['sequelize'][_0x5406('0x7d')]['SELECT']})[_0x5406('0x2c')](function(_0x57afac){if(_0x57afac[_0x5406('0x3d')]===0x1){return _0x4e2c97['id'];}else{var _0x9bfd82=_['every'](_[_0x5406('0x37')](_0x57afac,_0x5406('0x7e')),function(_0x4cc1e5){return _[_0x5406('0x7f')](_0xc66cc5,_0x4cc1e5);});if(_0x9bfd82){return _0x4e2c97['id'];}}}));}}return BPromise[_0x5406('0x80')](_0x292900)['then'](function(_0x3f09c4){_0x52dd9c=_(_0x52dd9c)[_0x5406('0x81')](_0x3f09c4)[_0x5406('0x82')]()['value']();return db['WhatsappQueue']['find']({'where':{'id':_0x42be45['params']['id']}})[_0x5406('0x2c')](function(_0x5f361c){return db[_0x5406('0x7b')]['transaction'](function(_0x4ed23f){return _0x5f361c[_0x5406('0x71')](_0x42be45[_0x5406('0x38')][_0x5406('0x67')],{'transaction':_0x4ed23f})[_0x5406('0x2c')](function(){if(!_['isEmpty'](_0x52dd9c)){return _0x5f361c[_0x5406('0x83')](_0x52dd9c,{'transaction':_0x4ed23f});}})[_0x5406('0x2c')](function(){_0x52dd9c[_0x5406('0x6f')](function(_0x249185){socket[_0x5406('0x70')](_0x5406('0x84'),{'UserId':_0x249185,'WhatsappQueueId':_0x5f361c['id']});});});});});});})[_0x5406('0x2c')](respondWithStatusCode(_0x49a09c,null))['catch'](handleError(_0x49a09c,null));};exports[_0x5406('0x85')]=function(_0x5001f1,_0x271290,_0xa61219){return db['WhatsappQueue']['find']({'where':{'id':_0x5001f1['params']['id']}})[_0x5406('0x2c')](handleEntityNotFound(_0x271290,null))[_0x5406('0x2c')](function(_0x5332ed){if(_0x5332ed){return _0x5332ed[_0x5406('0x85')](_0x5001f1['body'][_0x5406('0x67')],_[_0x5406('0x86')](_0x5001f1['body'],[_0x5406('0x67'),'id'])||{})[_0x5406('0x87')](function(_0x18a93f){for(var _0x100391=0x0;_0x100391<_0x5001f1[_0x5406('0x4f')][_0x5406('0x67')]['length'];_0x100391+=0x1){socket[_0x5406('0x70')](_0x5406('0x88'),{'UserId':Number(_0x5001f1[_0x5406('0x4f')][_0x5406('0x67')][_0x100391]),'WhatsappQueueId':Number(_0x5001f1[_0x5406('0x48')]['id'])});}return _0x18a93f;});}})[_0x5406('0x2c')](respondWithResult(_0x271290,null))[_0x5406('0x47')](handleError(_0x271290,null));};exports[_0x5406('0x83')]=function(_0x4ef493,_0x1934c0,_0x3eb660){return db['WhatsappQueue'][_0x5406('0x4d')]({'where':{'id':_0x4ef493[_0x5406('0x48')]['id']}})['then'](handleEntityNotFound(_0x1934c0,null))['then'](function(_0x45718b){if(_0x45718b){return _0x45718b[_0x5406('0x83')](_0x4ef493[_0x5406('0x38')][_0x5406('0x67')])[_0x5406('0x2c')](function(){if(_[_0x5406('0x89')](_0x4ef493[_0x5406('0x38')][_0x5406('0x67')])){for(var _0x268ff8=0x0;_0x268ff8<_0x4ef493['query']['ids'][_0x5406('0x3d')];_0x268ff8+=0x1){socket[_0x5406('0x70')](_0x5406('0x84'),{'UserId':Number(_0x4ef493[_0x5406('0x38')][_0x5406('0x67')][_0x268ff8]),'WhatsappQueueId':Number(_0x4ef493['params']['id'])});}}else{socket[_0x5406('0x70')]('userWhatsappQueue:remove',{'UserId':Number(_0x4ef493[_0x5406('0x38')]['ids']),'WhatsappQueueId':Number(_0x4ef493[_0x5406('0x48')]['id'])});}});}})[_0x5406('0x2c')](respondWithStatusCode(_0x1934c0,null))[_0x5406('0x47')](handleError(_0x1934c0,null));};exports[_0x5406('0x8a')]=function(_0x4d5620,_0x4b74eb,_0x4e31fa){var _0x27b48c={};var _0x3bb740={};var _0x1b68de;var _0xa7fb47;return db[_0x5406('0x46')][_0x5406('0x57')]({'where':{'id':_0x4d5620[_0x5406('0x48')]['id']}})[_0x5406('0x2c')](handleEntityNotFound(_0x4b74eb,null))[_0x5406('0x2c')](function(_0x4c32d1){if(_0x4c32d1){_0x1b68de=_0x4c32d1;_0x3bb740['model']=_[_0x5406('0x49')](db[_0x5406('0x69')][_0x5406('0x4a')]);_0x3bb740['query']=_[_0x5406('0x49')](_0x4d5620[_0x5406('0x38')]);_0x3bb740[_0x5406('0x39')]=_[_0x5406('0x3a')](_0x3bb740['model'],_0x3bb740[_0x5406('0x38')]);_0x27b48c['attributes']=_['intersection'](_0x3bb740[_0x5406('0x36')],qs['fields'](_0x4d5620[_0x5406('0x38')][_0x5406('0x3c')]));_0x27b48c['attributes']=_0x27b48c[_0x5406('0x3b')]['length']?_0x27b48c[_0x5406('0x3b')]:_0x3bb740[_0x5406('0x36')];_0x27b48c[_0x5406('0x3f')]=qs[_0x5406('0x40')](_0x4d5620[_0x5406('0x38')][_0x5406('0x40')]);_0x27b48c[_0x5406('0x41')]=qs[_0x5406('0x39')](_[_0x5406('0x42')](_0x4d5620['query'],_0x3bb740[_0x5406('0x39')]));if(_0x4d5620[_0x5406('0x38')][_0x5406('0x43')]){_0x27b48c[_0x5406('0x41')]=_[_0x5406('0x45')](_0x27b48c['where'],{'$or':_[_0x5406('0x37')](_0x27b48c['attributes'],function(_0x4f99a1){var _0x26c2c7={};_0x26c2c7[_0x4f99a1]={'$like':'%'+_0x4d5620[_0x5406('0x38')][_0x5406('0x43')]+'%'};return _0x26c2c7;})});}_0x27b48c=_[_0x5406('0x45')]({},_0x27b48c,_0x4d5620[_0x5406('0x4c')]);return _0x1b68de[_0x5406('0x8a')](_0x27b48c);}})[_0x5406('0x2c')](function(_0x3ade4e){if(_0x3ade4e){_0xa7fb47=_0x3ade4e['length'];if(!_0x4d5620[_0x5406('0x38')][_0x5406('0x3e')](_0x5406('0x58'))){_0x27b48c['limit']=qs[_0x5406('0x24')](_0x4d5620[_0x5406('0x38')]['limit']);_0x27b48c[_0x5406('0x22')]=qs[_0x5406('0x22')](_0x4d5620[_0x5406('0x38')][_0x5406('0x22')]);}return _0x1b68de['getAgents'](_0x27b48c);}})[_0x5406('0x2c')](function(_0x57c657){if(_0x57c657){return _0x57c657?{'count':_0xa7fb47,'rows':_0x57c657}:null;}})[_0x5406('0x2c')](respondWithResult(_0x4b74eb,null))['catch'](handleError(_0x4b74eb,null));};
\ No newline at end of file
+var _0xfe04=['set','Content-Range','apply','reject','update','destroy','then','get','WhatsappQueues','end','name','send','index','map','WhatsappQueue','fieldName','key','model','query','keys','intersection','attributes','fields','length','nolimit','sort','filters','filter','where','type','options','includeAll','include','findAll','catch','rawAttributes','merge','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','error','params','describe','getMembers','findOne','hasOwnProperty','pick','WhatsappQueueId','UserWhatsappQueue','User','findAndCountAll','UserId','agent','whatsappPause','updatedAt','createdAt','SIP','getTeams','Team','order','addTeams','ids','voicePause','flatMap','Agents','sequelize','transaction','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString','QueryTypes','TeamId','includes','union','value','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','to-csv','ejs','fs-extra','squel','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','redis','defaults','localhost','./whatsappQueue.socket','status','json','limit','undefined','count','offset'];(function(_0x5d9151,_0x2f456d){var _0x146901=function(_0x4842ae){while(--_0x4842ae){_0x5d9151['push'](_0x5d9151['shift']());}};_0x146901(++_0x2f456d);}(_0xfe04,0x66));var _0x4fe0=function(_0x39c43f,_0x759142){_0x39c43f=_0x39c43f-0x0;var _0x30eb88=_0xfe04[_0x39c43f];return _0x30eb88;};'use strict';var emlformat=require(_0x4fe0('0x0'));var rimraf=require(_0x4fe0('0x1'));var zipdir=require(_0x4fe0('0x2'));var jsonpatch=require(_0x4fe0('0x3'));var rp=require(_0x4fe0('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4fe0('0x5'));var util=require('util');var path=require(_0x4fe0('0x6'));var sox=require('sox');var csv=require(_0x4fe0('0x7'));var ejs=require(_0x4fe0('0x8'));var fs=require('fs');var fs_extra=require(_0x4fe0('0x9'));var _=require('lodash');var squel=require(_0x4fe0('0xa'));var crypto=require(_0x4fe0('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x4fe0('0xc'));var toCsv=require(_0x4fe0('0x7'));var querystring=require(_0x4fe0('0xd'));var Papa=require(_0x4fe0('0xe'));var Redis=require(_0x4fe0('0xf'));var authService=require(_0x4fe0('0x10'));var qs=require(_0x4fe0('0x11'));var as=require(_0x4fe0('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4fe0('0x13'))(_0x4fe0('0x14'));var utils=require(_0x4fe0('0x15'));var config=require(_0x4fe0('0x16'));var licenseUtil=require(_0x4fe0('0x17'));var db=require('../../mysqldb')['db'];config[_0x4fe0('0x18')]=_[_0x4fe0('0x19')](config[_0x4fe0('0x18')],{'host':_0x4fe0('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4fe0('0x18')]));require(_0x4fe0('0x1b'))['register'](socket);function respondWithStatusCode(_0x42352d,_0x529ae2){_0x529ae2=_0x529ae2||0xcc;return function(_0x5f3367){if(_0x5f3367){return _0x42352d['sendStatus'](_0x529ae2);}return _0x42352d[_0x4fe0('0x1c')](_0x529ae2)['end']();};}function respondWithResult(_0x4e6d00,_0xef27d5){_0xef27d5=_0xef27d5||0xc8;return function(_0x2f24d0){if(_0x2f24d0){return _0x4e6d00['status'](_0xef27d5)[_0x4fe0('0x1d')](_0x2f24d0);}};}function respondWithFilteredResult(_0x18a739,_0x3ef088){return function(_0x585073){if(_0x585073){var _0x260e29=typeof _0x3ef088['offset']==='undefined'&&typeof _0x3ef088[_0x4fe0('0x1e')]===_0x4fe0('0x1f');var _0x55ccc5=_0x585073[_0x4fe0('0x20')];var _0x503c28=_0x260e29?0x0:_0x3ef088[_0x4fe0('0x21')];var _0x5c1e25=_0x260e29?_0x585073[_0x4fe0('0x20')]:_0x3ef088[_0x4fe0('0x21')]+_0x3ef088[_0x4fe0('0x1e')];var _0x5f5b23;if(_0x5c1e25>=_0x55ccc5){_0x5c1e25=_0x55ccc5;_0x5f5b23=0xc8;}else{_0x5f5b23=0xce;}_0x18a739['status'](_0x5f5b23);return _0x18a739[_0x4fe0('0x22')](_0x4fe0('0x23'),_0x503c28+'-'+_0x5c1e25+'/'+_0x55ccc5)[_0x4fe0('0x1d')](_0x585073);}return null;};}function patchUpdates(_0xa01597){return function(_0x2f2367){try{jsonpatch[_0x4fe0('0x24')](_0x2f2367,_0xa01597,!![]);}catch(_0xdee5d4){return BPromise[_0x4fe0('0x25')](_0xdee5d4);}return _0x2f2367['save']();};}function saveUpdates(_0x1c826c,_0x25d087){return function(_0x1c24ce){if(_0x1c24ce){return _0x1c24ce[_0x4fe0('0x26')](_0x1c826c)['then'](function(_0xff5401){return _0xff5401;});}return null;};}function removeEntity(_0x289a33,_0x36c0cc){return function(_0x522b09){if(_0x522b09){return _0x522b09[_0x4fe0('0x27')]()[_0x4fe0('0x28')](function(){var _0x34686d=_0x522b09[_0x4fe0('0x29')]({'plain':!![]});var _0x2cb825=_0x4fe0('0x2a');return db['UserProfileResource'][_0x4fe0('0x27')]({'where':{'type':_0x2cb825,'resourceId':_0x34686d['id']}})[_0x4fe0('0x28')](function(){return _0x522b09;});})[_0x4fe0('0x28')](function(){_0x289a33[_0x4fe0('0x1c')](0xcc)[_0x4fe0('0x2b')]();});}};}function handleEntityNotFound(_0x26e217,_0x2fb270){return function(_0x9e1046){if(!_0x9e1046){_0x26e217['sendStatus'](0x194);}return _0x9e1046;};}function handleError(_0x175009,_0x73d82a){_0x73d82a=_0x73d82a||0x1f4;return function(_0x553e8b){logger['error'](_0x553e8b['stack']);if(_0x553e8b[_0x4fe0('0x2c')]){delete _0x553e8b['name'];}_0x175009['status'](_0x73d82a)[_0x4fe0('0x2d')](_0x553e8b);};}exports[_0x4fe0('0x2e')]=function(_0x23a07b,_0x52f422){var _0x30da99={},_0x2b0ff4={},_0x3cfa93={'count':0x0,'rows':[]};var _0x148ea2=_[_0x4fe0('0x2f')](db[_0x4fe0('0x30')]['rawAttributes'],function(_0x2ba907){return{'name':_0x2ba907[_0x4fe0('0x31')],'type':_0x2ba907['type'][_0x4fe0('0x32')]};});_0x2b0ff4[_0x4fe0('0x33')]=_[_0x4fe0('0x2f')](_0x148ea2,'name');_0x2b0ff4[_0x4fe0('0x34')]=_[_0x4fe0('0x35')](_0x23a07b[_0x4fe0('0x34')]);_0x2b0ff4['filters']=_[_0x4fe0('0x36')](_0x2b0ff4['model'],_0x2b0ff4[_0x4fe0('0x34')]);_0x30da99[_0x4fe0('0x37')]=_[_0x4fe0('0x36')](_0x2b0ff4['model'],qs[_0x4fe0('0x38')](_0x23a07b[_0x4fe0('0x34')][_0x4fe0('0x38')]));_0x30da99[_0x4fe0('0x37')]=_0x30da99['attributes'][_0x4fe0('0x39')]?_0x30da99[_0x4fe0('0x37')]:_0x2b0ff4[_0x4fe0('0x33')];if(!_0x23a07b[_0x4fe0('0x34')]['hasOwnProperty'](_0x4fe0('0x3a'))){_0x30da99[_0x4fe0('0x1e')]=qs['limit'](_0x23a07b[_0x4fe0('0x34')]['limit']);_0x30da99['offset']=qs[_0x4fe0('0x21')](_0x23a07b[_0x4fe0('0x34')][_0x4fe0('0x21')]);}_0x30da99['order']=qs[_0x4fe0('0x3b')](_0x23a07b[_0x4fe0('0x34')][_0x4fe0('0x3b')]);_0x30da99['where']=qs[_0x4fe0('0x3c')](_['pick'](_0x23a07b['query'],_0x2b0ff4[_0x4fe0('0x3c')]),_0x148ea2);if(_0x23a07b[_0x4fe0('0x34')][_0x4fe0('0x3d')]){_0x30da99['where']=_['merge'](_0x30da99[_0x4fe0('0x3e')],{'$or':_[_0x4fe0('0x2f')](_0x148ea2,function(_0x9df1e8){if(_0x9df1e8[_0x4fe0('0x3f')]!=='VIRTUAL'){var _0x429d7b={};_0x429d7b[_0x9df1e8[_0x4fe0('0x2c')]]={'$like':'%'+_0x23a07b['query'][_0x4fe0('0x3d')]+'%'};return _0x429d7b;}})});}_0x30da99=_['merge']({},_0x30da99,_0x23a07b[_0x4fe0('0x40')]);var _0x6abc17={'where':_0x30da99[_0x4fe0('0x3e')]};return db[_0x4fe0('0x30')][_0x4fe0('0x20')](_0x6abc17)['then'](function(_0x47ead0){_0x3cfa93[_0x4fe0('0x20')]=_0x47ead0;if(_0x23a07b['query'][_0x4fe0('0x41')]){_0x30da99[_0x4fe0('0x42')]=[{'all':!![]}];}return db[_0x4fe0('0x30')][_0x4fe0('0x43')](_0x30da99);})[_0x4fe0('0x28')](function(_0x1d5fae){_0x3cfa93['rows']=_0x1d5fae;return _0x3cfa93;})[_0x4fe0('0x28')](respondWithFilteredResult(_0x52f422,_0x30da99))[_0x4fe0('0x44')](handleError(_0x52f422,null));};exports['show']=function(_0x39f458,_0x430f1){var _0x7da90c={'raw':!![],'where':{'id':_0x39f458['params']['id']}},_0xe3f473={};_0xe3f473[_0x4fe0('0x33')]=_['keys'](db[_0x4fe0('0x30')][_0x4fe0('0x45')]);_0xe3f473[_0x4fe0('0x34')]=_['keys'](_0x39f458[_0x4fe0('0x34')]);_0xe3f473['filters']=_['intersection'](_0xe3f473[_0x4fe0('0x33')],_0xe3f473[_0x4fe0('0x34')]);_0x7da90c[_0x4fe0('0x37')]=_[_0x4fe0('0x36')](_0xe3f473['model'],qs[_0x4fe0('0x38')](_0x39f458[_0x4fe0('0x34')][_0x4fe0('0x38')]));_0x7da90c['attributes']=_0x7da90c['attributes'][_0x4fe0('0x39')]?_0x7da90c[_0x4fe0('0x37')]:_0xe3f473[_0x4fe0('0x33')];if(_0x39f458[_0x4fe0('0x34')][_0x4fe0('0x41')]){_0x7da90c[_0x4fe0('0x42')]=[{'all':!![]}];}_0x7da90c=_[_0x4fe0('0x46')]({},_0x7da90c,_0x39f458[_0x4fe0('0x40')]);return db['WhatsappQueue'][_0x4fe0('0x47')](_0x7da90c)[_0x4fe0('0x28')](handleEntityNotFound(_0x430f1,null))[_0x4fe0('0x28')](respondWithResult(_0x430f1,null))[_0x4fe0('0x44')](handleError(_0x430f1,null));};exports['create']=function(_0x36b944,_0x3f2527){return db[_0x4fe0('0x30')][_0x4fe0('0x48')](_0x36b944[_0x4fe0('0x49')],{})[_0x4fe0('0x28')](function(_0x199fc4){var _0x5f5c61=_0x36b944[_0x4fe0('0x4a')]['get']({'plain':!![]});if(!_0x5f5c61)throw new Error(_0x4fe0('0x4b'));if(_0x5f5c61[_0x4fe0('0x4c')]===_0x4fe0('0x4a')){var _0x43b0a4=_0x199fc4[_0x4fe0('0x29')]({'plain':!![]});var _0x2a646c='WhatsappQueues';return db['UserProfileSection']['find']({'where':{'name':_0x2a646c,'userProfileId':_0x5f5c61[_0x4fe0('0x4d')]},'raw':!![]})['then'](function(_0x5176c5){if(_0x5176c5&&_0x5176c5[_0x4fe0('0x4e')]===0x0){return db[_0x4fe0('0x4f')]['create']({'name':_0x43b0a4[_0x4fe0('0x2c')],'resourceId':_0x43b0a4['id'],'type':_0x5176c5[_0x4fe0('0x2c')],'sectionId':_0x5176c5['id']},{})[_0x4fe0('0x28')](function(){return _0x199fc4;});}else{return _0x199fc4;}})['catch'](function(_0x5d88d1){logger[_0x4fe0('0x50')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d88d1);throw _0x5d88d1;});}return _0x199fc4;})['then'](respondWithResult(_0x3f2527,0xc9))[_0x4fe0('0x44')](handleError(_0x3f2527,null));};exports['update']=function(_0x59b3fb,_0x1c51f2){if(_0x59b3fb['body']['id']){delete _0x59b3fb[_0x4fe0('0x49')]['id'];}return db[_0x4fe0('0x30')][_0x4fe0('0x47')]({'where':{'id':_0x59b3fb['params']['id']}})[_0x4fe0('0x28')](handleEntityNotFound(_0x1c51f2,null))[_0x4fe0('0x28')](saveUpdates(_0x59b3fb[_0x4fe0('0x49')],null))[_0x4fe0('0x28')](respondWithResult(_0x1c51f2,null))[_0x4fe0('0x44')](handleError(_0x1c51f2,null));};exports['destroy']=function(_0x558c82,_0x3a7a7d){return db[_0x4fe0('0x30')]['find']({'where':{'id':_0x558c82[_0x4fe0('0x51')]['id']}})['then'](handleEntityNotFound(_0x3a7a7d,null))[_0x4fe0('0x28')](removeEntity(_0x3a7a7d,null))[_0x4fe0('0x44')](handleError(_0x3a7a7d,null));};exports[_0x4fe0('0x52')]=function(_0x37f5b3,_0xd9d69f){return db[_0x4fe0('0x30')][_0x4fe0('0x52')]()[_0x4fe0('0x28')](respondWithResult(_0xd9d69f,null))[_0x4fe0('0x44')](handleError(_0xd9d69f,null));};exports[_0x4fe0('0x53')]=function(_0x45c1f2,_0x178eb7,_0x3780d1){var _0x3d339c={'raw':!![],'where':{}},_0x5bbe35={},_0x3acca0;return db[_0x4fe0('0x30')][_0x4fe0('0x54')]({'where':{'id':_0x45c1f2[_0x4fe0('0x51')]['id']}})['then'](handleEntityNotFound(_0x178eb7,null))[_0x4fe0('0x28')](function(_0x230fe7){if(_0x230fe7){_0x3acca0=_0x230fe7[_0x4fe0('0x29')]({'plain':!![]});_0x5bbe35[_0x4fe0('0x33')]=_[_0x4fe0('0x35')](db['UserWhatsappQueue'][_0x4fe0('0x45')]);_0x5bbe35['query']=_[_0x4fe0('0x35')](_0x45c1f2[_0x4fe0('0x34')]);_0x5bbe35[_0x4fe0('0x3c')]=_[_0x4fe0('0x36')](_0x5bbe35[_0x4fe0('0x33')],_0x5bbe35['query']);_0x3d339c[_0x4fe0('0x37')]=_[_0x4fe0('0x36')](_0x5bbe35['model'],qs[_0x4fe0('0x38')](_0x45c1f2[_0x4fe0('0x34')][_0x4fe0('0x38')]));_0x3d339c[_0x4fe0('0x37')]=_0x3d339c[_0x4fe0('0x37')][_0x4fe0('0x39')]?_0x3d339c[_0x4fe0('0x37')]:_0x5bbe35[_0x4fe0('0x33')];if(!_0x45c1f2[_0x4fe0('0x34')][_0x4fe0('0x55')]('nolimit')){_0x3d339c[_0x4fe0('0x1e')]=qs[_0x4fe0('0x1e')](_0x45c1f2[_0x4fe0('0x34')][_0x4fe0('0x1e')]);_0x3d339c[_0x4fe0('0x21')]=qs[_0x4fe0('0x21')](_0x45c1f2[_0x4fe0('0x34')][_0x4fe0('0x21')]);}_0x3d339c['order']=qs['sort'](_0x45c1f2[_0x4fe0('0x34')]['sort']);_0x3d339c[_0x4fe0('0x3e')]=qs[_0x4fe0('0x3c')](_[_0x4fe0('0x56')](_0x45c1f2['query'],_0x5bbe35[_0x4fe0('0x3c')]));_0x3d339c[_0x4fe0('0x3e')][_0x4fe0('0x57')]=_0x230fe7['id'];if(_0x45c1f2[_0x4fe0('0x34')][_0x4fe0('0x3d')]){_0x3d339c[_0x4fe0('0x3e')]=_[_0x4fe0('0x46')](_0x3d339c[_0x4fe0('0x3e')],{'$or':_[_0x4fe0('0x2f')](_0x3d339c['attributes'],function(_0x583029){var _0x292b4a={};_0x292b4a[_0x583029]={'$like':'%'+_0x45c1f2['query'][_0x4fe0('0x3d')]+'%'};return _0x292b4a;})});}_0x3d339c=_[_0x4fe0('0x46')]({},_0x3d339c,_0x45c1f2['options']);return db[_0x4fe0('0x58')]['findAll'](_0x3d339c);}})[_0x4fe0('0x28')](function(_0x499297){if(_0x499297){return db[_0x4fe0('0x59')][_0x4fe0('0x5a')]({'where':{'id':_[_0x4fe0('0x2f')](_0x499297,_0x4fe0('0x5b')),'role':_0x4fe0('0x5c')},'attributes':['id',_0x4fe0('0x2c'),_0x4fe0('0x5d'),_0x4fe0('0x5e'),_0x4fe0('0x5f')]});}})['then'](function(_0x1b7438){if(_0x1b7438){return{'count':_0x1b7438[_0x4fe0('0x20')],'rows':_[_0x4fe0('0x2f')](_0x1b7438['rows'],function(_0x1f3045){return{'membername':_0x1f3045[_0x4fe0('0x2c')],'UserId':_0x1f3045['id'],'queue_name':_0x3acca0[_0x4fe0('0x2c')],'WhatsappQueueId':_0x3acca0['id'],'interface':util['format']('%s/%s',_0x4fe0('0x60'),_0x1f3045[_0x4fe0('0x2c')]),'penalty':0x0,'paused':_0x1f3045[_0x4fe0('0x5d')],'createdAt':_0x1f3045[_0x4fe0('0x5f')],'updatedAt':_0x1f3045['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x178eb7,_0x3d339c))[_0x4fe0('0x44')](handleError(_0x178eb7,null));};exports[_0x4fe0('0x61')]=function(_0x23abb4,_0x41e946,_0x25d99a){var _0x36865f={};var _0x411cff={};var _0x18b278;var _0x22d068;return db[_0x4fe0('0x30')][_0x4fe0('0x54')]({'where':{'id':_0x23abb4[_0x4fe0('0x51')]['id']}})[_0x4fe0('0x28')](handleEntityNotFound(_0x41e946,null))[_0x4fe0('0x28')](function(_0x458039){if(_0x458039){_0x18b278=_0x458039;_0x411cff[_0x4fe0('0x33')]=_[_0x4fe0('0x35')](db[_0x4fe0('0x62')][_0x4fe0('0x45')]);_0x411cff['query']=_[_0x4fe0('0x35')](_0x23abb4[_0x4fe0('0x34')]);_0x411cff['filters']=_[_0x4fe0('0x36')](_0x411cff['model'],_0x411cff['query']);_0x36865f[_0x4fe0('0x37')]=_[_0x4fe0('0x36')](_0x411cff[_0x4fe0('0x33')],qs[_0x4fe0('0x38')](_0x23abb4['query'][_0x4fe0('0x38')]));_0x36865f[_0x4fe0('0x37')]=_0x36865f[_0x4fe0('0x37')][_0x4fe0('0x39')]?_0x36865f[_0x4fe0('0x37')]:_0x411cff[_0x4fe0('0x33')];_0x36865f[_0x4fe0('0x63')]=qs[_0x4fe0('0x3b')](_0x23abb4[_0x4fe0('0x34')]['sort']);_0x36865f[_0x4fe0('0x3e')]=qs['filters'](_[_0x4fe0('0x56')](_0x23abb4[_0x4fe0('0x34')],_0x411cff[_0x4fe0('0x3c')]));if(_0x23abb4[_0x4fe0('0x34')]['filter']){_0x36865f['where']=_[_0x4fe0('0x46')](_0x36865f[_0x4fe0('0x3e')],{'$or':_[_0x4fe0('0x2f')](_0x36865f[_0x4fe0('0x37')],function(_0x4a3f6f){var _0x498b1f={};_0x498b1f[_0x4a3f6f]={'$like':'%'+_0x23abb4['query'][_0x4fe0('0x3d')]+'%'};return _0x498b1f;})});}_0x36865f=_['merge']({},_0x36865f,_0x23abb4[_0x4fe0('0x40')]);return _0x18b278[_0x4fe0('0x61')](_0x36865f);}})[_0x4fe0('0x28')](function(_0x2c3250){if(_0x2c3250){_0x22d068=_0x2c3250[_0x4fe0('0x39')];if(!_0x23abb4[_0x4fe0('0x34')][_0x4fe0('0x55')](_0x4fe0('0x3a'))){_0x36865f[_0x4fe0('0x1e')]=qs[_0x4fe0('0x1e')](_0x23abb4['query'][_0x4fe0('0x1e')]);_0x36865f[_0x4fe0('0x21')]=qs[_0x4fe0('0x21')](_0x23abb4[_0x4fe0('0x34')]['offset']);}return _0x18b278[_0x4fe0('0x61')](_0x36865f);}})[_0x4fe0('0x28')](function(_0x565b5a){if(_0x565b5a){return _0x565b5a?{'count':_0x22d068,'rows':_0x565b5a}:null;}})['then'](respondWithResult(_0x41e946,null))[_0x4fe0('0x44')](handleError(_0x41e946,null));};exports[_0x4fe0('0x64')]=function(_0x1d8111,_0x39f200,_0x5b7306){var _0x3410c3=_0x1d8111[_0x4fe0('0x49')][_0x4fe0('0x65')];return db['Team']['findAll']({'where':{'id':_0x3410c3},'attributes':['id'],'include':[{'model':db[_0x4fe0('0x59')],'as':'Agents','attributes':['id',_0x4fe0('0x2c'),'online',_0x4fe0('0x66'),'interface'],'raw':!![]}]})['then'](function(_0x2f70f5){if(_0x2f70f5){var _0x5eaaf6=_[_0x4fe0('0x67')](_0x2f70f5,function(_0x31430c){var _0x5cfc24=_0x31430c[_0x4fe0('0x29')]({'plain':!![]});return _0x5cfc24[_0x4fe0('0x68')];});return db[_0x4fe0('0x30')]['find']({'where':{'id':_0x1d8111[_0x4fe0('0x51')]['id']}})[_0x4fe0('0x28')](function(_0x1d39c5){return db[_0x4fe0('0x69')][_0x4fe0('0x6a')](function(_0x48c37d){return _0x1d39c5['addTeams'](_0x3410c3,{'transaction':_0x48c37d})[_0x4fe0('0x28')](function(){return BPromise['each'](_0x5eaaf6,function(_0xb0d840){return db[_0x4fe0('0x58')][_0x4fe0('0x6b')]({'where':{'UserId':_0xb0d840['id'],'WhatsappQueueId':_0x1d8111[_0x4fe0('0x51')]['id']},'transaction':_0x48c37d});});})[_0x4fe0('0x28')](function(){_0x5eaaf6[_0x4fe0('0x6c')](function(_0x406d19){socket[_0x4fe0('0x6d')](_0x4fe0('0x6e'),{'UserId':_0x406d19['id'],'WhatsappQueueId':_0x1d39c5['id']});});});});});}})['then'](respondWithStatusCode(_0x39f200,null))[_0x4fe0('0x44')](handleError(_0x39f200,null));};exports[_0x4fe0('0x6f')]=function(_0x1a4f8f,_0x5e94f1,_0x5724e4){return db[_0x4fe0('0x62')][_0x4fe0('0x43')]({'where':{'id':_0x1a4f8f[_0x4fe0('0x34')][_0x4fe0('0x65')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x4fe0('0x68'),'attributes':['id'],'raw':!![]}]})[_0x4fe0('0x28')](handleEntityNotFound(_0x5e94f1,null))[_0x4fe0('0x28')](function(_0x3651c5){var _0x282ff0=_[_0x4fe0('0x2f')](_0x3651c5,'id');var _0x1be93d=[];var _0x49e670=[];var _0x438abd=squel[_0x4fe0('0x70')]();_0x438abd[_0x4fe0('0x71')](_0x4fe0('0x72'))[_0x4fe0('0x73')](_0x4fe0('0x74'),'tq')[_0x4fe0('0x75')](_0x4fe0('0x76'),'ut',_0x4fe0('0x77'))[_0x4fe0('0x3e')]('WhatsappQueueId\x20=\x20?',_0x1a4f8f[_0x4fe0('0x51')]['id']);for(var _0x1e3c40=0x0;_0x1e3c40<_0x3651c5['length'];_0x1e3c40+=0x1){let _0x183b7e=_0x3651c5[_0x1e3c40];for(var _0x1e0aa7=0x0;_0x1e0aa7<_0x183b7e[_0x4fe0('0x68')]['length'];_0x1e0aa7+=0x1){let _0x153b86=_0x183b7e[_0x4fe0('0x68')][_0x1e0aa7];var _0xf08cb4=_0x438abd[_0x4fe0('0x78')]();_0xf08cb4[_0x4fe0('0x3e')](_0x4fe0('0x79'),_0x153b86['id']);_0x49e670['push'](db['sequelize'][_0x4fe0('0x34')](_0xf08cb4[_0x4fe0('0x7a')](),{'type':db[_0x4fe0('0x69')][_0x4fe0('0x7b')]['SELECT']})[_0x4fe0('0x28')](function(_0x4ce05d){if(_0x4ce05d[_0x4fe0('0x39')]===0x1){return _0x153b86['id'];}else{var _0x5421b8=_['every'](_[_0x4fe0('0x2f')](_0x4ce05d,_0x4fe0('0x7c')),function(_0x2b885a){return _[_0x4fe0('0x7d')](_0x282ff0,_0x2b885a);});if(_0x5421b8){return _0x153b86['id'];}}}));}}return BPromise['all'](_0x49e670)['then'](function(_0x24f089){_0x1be93d=_(_0x1be93d)[_0x4fe0('0x7e')](_0x24f089)['compact']()[_0x4fe0('0x7f')]();return db[_0x4fe0('0x30')][_0x4fe0('0x47')]({'where':{'id':_0x1a4f8f[_0x4fe0('0x51')]['id']}})[_0x4fe0('0x28')](function(_0x55a344){return db['sequelize']['transaction'](function(_0x32d8e4){return _0x55a344[_0x4fe0('0x6f')](_0x1a4f8f[_0x4fe0('0x34')]['ids'],{'transaction':_0x32d8e4})[_0x4fe0('0x28')](function(){if(!_[_0x4fe0('0x80')](_0x1be93d)){return _0x55a344[_0x4fe0('0x81')](_0x1be93d,{'transaction':_0x32d8e4});}})['then'](function(){_0x1be93d['forEach'](function(_0x187ee3){socket[_0x4fe0('0x6d')](_0x4fe0('0x82'),{'UserId':_0x187ee3,'WhatsappQueueId':_0x55a344['id']});});});});});});})[_0x4fe0('0x28')](respondWithStatusCode(_0x5e94f1,null))[_0x4fe0('0x44')](handleError(_0x5e94f1,null));};exports[_0x4fe0('0x83')]=function(_0x5af2f2,_0x16db93,_0x2894c0){return db[_0x4fe0('0x30')][_0x4fe0('0x47')]({'where':{'id':_0x5af2f2['params']['id']}})[_0x4fe0('0x28')](handleEntityNotFound(_0x16db93,null))['then'](function(_0x319dcb){if(_0x319dcb){return _0x319dcb[_0x4fe0('0x83')](_0x5af2f2[_0x4fe0('0x49')]['ids'],_[_0x4fe0('0x84')](_0x5af2f2['body'],[_0x4fe0('0x65'),'id'])||{})[_0x4fe0('0x85')](function(_0x3db9c6){for(var _0x255e86=0x0;_0x255e86<_0x5af2f2[_0x4fe0('0x49')][_0x4fe0('0x65')][_0x4fe0('0x39')];_0x255e86+=0x1){socket[_0x4fe0('0x6d')]('userWhatsappQueue:save',{'UserId':Number(_0x5af2f2[_0x4fe0('0x49')][_0x4fe0('0x65')][_0x255e86]),'WhatsappQueueId':Number(_0x5af2f2[_0x4fe0('0x51')]['id'])});}return _0x3db9c6;});}})[_0x4fe0('0x28')](respondWithResult(_0x16db93,null))[_0x4fe0('0x44')](handleError(_0x16db93,null));};exports[_0x4fe0('0x81')]=function(_0x3e4092,_0x2fa16c,_0x1e868a){return db[_0x4fe0('0x30')][_0x4fe0('0x47')]({'where':{'id':_0x3e4092['params']['id']}})['then'](handleEntityNotFound(_0x2fa16c,null))['then'](function(_0x4f671d){if(_0x4f671d){return _0x4f671d[_0x4fe0('0x81')](_0x3e4092[_0x4fe0('0x34')]['ids'])['then'](function(){if(_[_0x4fe0('0x86')](_0x3e4092[_0x4fe0('0x34')]['ids'])){for(var _0x1a16b0=0x0;_0x1a16b0<_0x3e4092[_0x4fe0('0x34')][_0x4fe0('0x65')][_0x4fe0('0x39')];_0x1a16b0+=0x1){socket[_0x4fe0('0x6d')](_0x4fe0('0x82'),{'UserId':Number(_0x3e4092[_0x4fe0('0x34')]['ids'][_0x1a16b0]),'WhatsappQueueId':Number(_0x3e4092['params']['id'])});}}else{socket[_0x4fe0('0x6d')](_0x4fe0('0x82'),{'UserId':Number(_0x3e4092[_0x4fe0('0x34')][_0x4fe0('0x65')]),'WhatsappQueueId':Number(_0x3e4092['params']['id'])});}});}})[_0x4fe0('0x28')](respondWithStatusCode(_0x2fa16c,null))['catch'](handleError(_0x2fa16c,null));};exports[_0x4fe0('0x87')]=function(_0x101f3d,_0xd46cf3,_0x55a579){var _0x35977d={};var _0x1292eb={};var _0x5cd479;var _0x17547a;return db[_0x4fe0('0x30')]['findOne']({'where':{'id':_0x101f3d['params']['id']}})[_0x4fe0('0x28')](handleEntityNotFound(_0xd46cf3,null))[_0x4fe0('0x28')](function(_0x5268e5){if(_0x5268e5){_0x5cd479=_0x5268e5;_0x1292eb[_0x4fe0('0x33')]=_[_0x4fe0('0x35')](db[_0x4fe0('0x59')][_0x4fe0('0x45')]);_0x1292eb['query']=_[_0x4fe0('0x35')](_0x101f3d[_0x4fe0('0x34')]);_0x1292eb[_0x4fe0('0x3c')]=_[_0x4fe0('0x36')](_0x1292eb['model'],_0x1292eb[_0x4fe0('0x34')]);_0x35977d['attributes']=_[_0x4fe0('0x36')](_0x1292eb[_0x4fe0('0x33')],qs[_0x4fe0('0x38')](_0x101f3d[_0x4fe0('0x34')][_0x4fe0('0x38')]));_0x35977d[_0x4fe0('0x37')]=_0x35977d['attributes']['length']?_0x35977d[_0x4fe0('0x37')]:_0x1292eb['model'];_0x35977d[_0x4fe0('0x63')]=qs[_0x4fe0('0x3b')](_0x101f3d['query']['sort']);_0x35977d['where']=qs['filters'](_[_0x4fe0('0x56')](_0x101f3d[_0x4fe0('0x34')],_0x1292eb[_0x4fe0('0x3c')]));if(_0x101f3d['query'][_0x4fe0('0x3d')]){_0x35977d[_0x4fe0('0x3e')]=_[_0x4fe0('0x46')](_0x35977d['where'],{'$or':_[_0x4fe0('0x2f')](_0x35977d['attributes'],function(_0x16789b){var _0x18f059={};_0x18f059[_0x16789b]={'$like':'%'+_0x101f3d[_0x4fe0('0x34')][_0x4fe0('0x3d')]+'%'};return _0x18f059;})});}_0x35977d=_[_0x4fe0('0x46')]({},_0x35977d,_0x101f3d[_0x4fe0('0x40')]);return _0x5cd479[_0x4fe0('0x87')](_0x35977d);}})[_0x4fe0('0x28')](function(_0x33b01d){if(_0x33b01d){_0x17547a=_0x33b01d[_0x4fe0('0x39')];if(!_0x101f3d[_0x4fe0('0x34')][_0x4fe0('0x55')](_0x4fe0('0x3a'))){_0x35977d[_0x4fe0('0x1e')]=qs[_0x4fe0('0x1e')](_0x101f3d[_0x4fe0('0x34')][_0x4fe0('0x1e')]);_0x35977d[_0x4fe0('0x21')]=qs[_0x4fe0('0x21')](_0x101f3d[_0x4fe0('0x34')]['offset']);}return _0x5cd479['getAgents'](_0x35977d);}})[_0x4fe0('0x28')](function(_0x2e0857){if(_0x2e0857){return _0x2e0857?{'count':_0x17547a,'rows':_0x2e0857}:null;}})[_0x4fe0('0x28')](respondWithResult(_0xd46cf3,null))[_0x4fe0('0x44')](handleError(_0xd46cf3,null));};
\ No newline at end of file
index ba8cce3..bdd71e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6337=['../../mysqldb','WhatsappQueue','save','remove','emit','hasOwnProperty','hook','events'];(function(_0x1f5fff,_0x3e99b4){var _0x167f6f=function(_0xba28fa){while(--_0xba28fa){_0x1f5fff['push'](_0x1f5fff['shift']());}};_0x167f6f(++_0x3e99b4);}(_0x6337,0xd7));var _0x7633=function(_0x2e1b3d,_0x43ea12){_0x2e1b3d=_0x2e1b3d-0x0;var _0x29f672=_0x6337[_0x2e1b3d];return _0x29f672;};'use strict';var EventEmitter=require(_0x7633('0x0'));var WhatsappQueue=require(_0x7633('0x1'))['db'][_0x7633('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7633('0x3'),'afterUpdate':'update','afterDestroy':_0x7633('0x4')};function emitEvent(_0x2d7104){return function(_0x2fcadb,_0x4ca32e,_0x4267ef){WhatsappQueueEvents[_0x7633('0x5')](_0x2d7104+':'+_0x2fcadb['id'],_0x2fcadb);WhatsappQueueEvents[_0x7633('0x5')](_0x2d7104,_0x2fcadb);_0x4267ef(null);};}for(var e in events){if(events[_0x7633('0x6')](e)){var event=events[e];WhatsappQueue[_0x7633('0x7')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
+var _0xd77c=['emit','hasOwnProperty','exports','events','../../mysqldb','WhatsappQueue','setMaxListeners','remove'];(function(_0x5bd27b,_0x45769a){var _0x97b5ec=function(_0x10cc30){while(--_0x10cc30){_0x5bd27b['push'](_0x5bd27b['shift']());}};_0x97b5ec(++_0x45769a);}(_0xd77c,0x103));var _0xcd77=function(_0x41e9e4,_0x924810){_0x41e9e4=_0x41e9e4-0x0;var _0x14114b=_0xd77c[_0x41e9e4];return _0x14114b;};'use strict';var EventEmitter=require(_0xcd77('0x0'));var WhatsappQueue=require(_0xcd77('0x1'))['db'][_0xcd77('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xcd77('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xcd77('0x4')};function emitEvent(_0x2e8661){return function(_0x16ddb0,_0x18ced4,_0x168c0b){WhatsappQueueEvents[_0xcd77('0x5')](_0x2e8661+':'+_0x16ddb0['id'],_0x16ddb0);WhatsappQueueEvents[_0xcd77('0x5')](_0x2e8661,_0x16ddb0);_0x168c0b(null);};}for(var e in events){if(events[_0xcd77('0x6')](e)){var event=events[e];WhatsappQueue['hook'](e,emitEvent(event));}}module[_0xcd77('0x7')]=WhatsappQueueEvents;
\ No newline at end of file
index d37b035..56a73b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cd5=['./whatsappQueue.attributes','exports','define','WhatsappQueue','whatsapp_queues','lodash','../../config/logger','moment','bluebird','path'];(function(_0xee179f,_0x1e1c49){var _0x53b5f1=function(_0x2a4d29){while(--_0x2a4d29){_0xee179f['push'](_0xee179f['shift']());}};_0x53b5f1(++_0x1e1c49);}(_0x0cd5,0xc3));var _0x50cd=function(_0x3388d8,_0x256024){_0x3388d8=_0x3388d8-0x0;var _0x2bbe73=_0x0cd5[_0x3388d8];return _0x2bbe73;};'use strict';var _=require(_0x50cd('0x0'));var util=require('util');var logger=require(_0x50cd('0x1'))('api');var moment=require(_0x50cd('0x2'));var BPromise=require(_0x50cd('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x50cd('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x50cd('0x5'));module[_0x50cd('0x6')]=function(_0x1ac237,_0x228021){return _0x1ac237[_0x50cd('0x7')](_0x50cd('0x8'),attributes,{'tableName':_0x50cd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe7a3=['./whatsappQueue.attributes','exports','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0x5e6cb8,_0x16cf56){var _0x3faeb3=function(_0x1a7355){while(--_0x1a7355){_0x5e6cb8['push'](_0x5e6cb8['shift']());}};_0x3faeb3(++_0x16cf56);}(_0xe7a3,0x14c));var _0x3e7a=function(_0x51a050,_0x4d23db){_0x51a050=_0x51a050-0x0;var _0x5ed7d=_0xe7a3[_0x51a050];return _0x5ed7d;};'use strict';var _=require(_0x3e7a('0x0'));var util=require(_0x3e7a('0x1'));var logger=require(_0x3e7a('0x2'))(_0x3e7a('0x3'));var moment=require(_0x3e7a('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3e7a('0x5'));var rimraf=require(_0x3e7a('0x6'));var config=require(_0x3e7a('0x7'));var attributes=require(_0x3e7a('0x8'));module[_0x3e7a('0x9')]=function(_0x4239f3,_0x385b69){return _0x4239f3['define']('WhatsappQueue',attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3c32cad..6505567 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa14b=['where','attributes','limit','include','map','model','then','debug','find','ShowWhatsappQueue','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register','request','WhatsappQueue,\x20%s,\x20%s','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','raw'];(function(_0x2d7842,_0x5e1932){var _0x35485d=function(_0x56843a){while(--_0x56843a){_0x2d7842['push'](_0x2d7842['shift']());}};_0x35485d(++_0x5e1932);}(_0xa14b,0xd7));var _0xba14=function(_0x396795,_0xaa9d18){_0x396795=_0x396795-0x0;var _0x2f8e87=_0xa14b[_0x396795];return _0x2f8e87;};'use strict';var _=require('lodash');var util=require(_0xba14('0x0'));var moment=require(_0xba14('0x1'));var BPromise=require(_0xba14('0x2'));var rs=require(_0xba14('0x3'));var fs=require('fs');var Redis=require(_0xba14('0x4'));var db=require(_0xba14('0x5'))['db'];var utils=require(_0xba14('0x6'));var logger=require(_0xba14('0x7'))('rpc');var config=require(_0xba14('0x8'));var jayson=require(_0xba14('0x9'));var client=jayson[_0xba14('0xa')][_0xba14('0xb')]({'port':0x232a});config[_0xba14('0xc')]=_['defaults'](config[_0xba14('0xc')],{'host':_0xba14('0xd'),'port':0x18eb});var socket=require(_0xba14('0xe'))(new Redis(config[_0xba14('0xc')]));require(_0xba14('0xf'))[_0xba14('0x10')](socket);function respondWithRpcPromise(_0x39280e,_0x6aaa43,_0x25f10e){return new BPromise(function(_0x3bdc8e,_0x15530c){return client[_0xba14('0x11')](_0x39280e,_0x25f10e)['then'](function(_0x201687){logger['info'](_0xba14('0x12'),_0x6aaa43,_0xba14('0x13'));logger['debug'](_0xba14('0x14'),_0x6aaa43,_0xba14('0x13'),JSON[_0xba14('0x15')](_0x201687));if(_0x201687[_0xba14('0x16')]){if(_0x201687[_0xba14('0x16')]['code']===0x1f4){logger['error'](_0xba14('0x12'),_0x6aaa43,_0x201687[_0xba14('0x16')][_0xba14('0x17')]);return _0x15530c(_0x201687[_0xba14('0x16')][_0xba14('0x17')]);}logger[_0xba14('0x16')](_0xba14('0x12'),_0x6aaa43,_0x201687['error'][_0xba14('0x17')]);return _0x3bdc8e(_0x201687[_0xba14('0x16')][_0xba14('0x17')]);}else{logger[_0xba14('0x18')]('WhatsappQueue,\x20%s,\x20%s',_0x6aaa43,_0xba14('0x13'));_0x3bdc8e(_0x201687['result']['message']);}})[_0xba14('0x19')](function(_0x246b2b){logger['error'](_0xba14('0x12'),_0x6aaa43,_0x246b2b);_0x15530c(_0x246b2b);});});}exports[_0xba14('0x1a')]=function(_0x53e200){var _0x543cab=this;return new Promise(function(_0x576591,_0x50e6eb){return db[_0xba14('0x1b')][_0xba14('0x1c')]({'raw':_0x53e200['options']?_0x53e200[_0xba14('0x1d')][_0xba14('0x1e')]===undefined?!![]:![]:!![],'where':_0x53e200['options']?_0x53e200[_0xba14('0x1d')][_0xba14('0x1f')]||null:null,'attributes':_0x53e200['options']?_0x53e200[_0xba14('0x1d')][_0xba14('0x20')]||null:null,'limit':_0x53e200['options']?_0x53e200[_0xba14('0x1d')][_0xba14('0x21')]||null:null,'include':_0x53e200[_0xba14('0x1d')]?_0x53e200['options'][_0xba14('0x22')]?_[_0xba14('0x23')](_0x53e200[_0xba14('0x1d')][_0xba14('0x22')],function(_0x25d414){return{'model':db[_0x25d414[_0xba14('0x24')]],'as':_0x25d414['as'],'attributes':_0x25d414['attributes'],'include':_0x25d414[_0xba14('0x22')]?_[_0xba14('0x23')](_0x25d414[_0xba14('0x22')],function(_0x5edd87){return{'model':db[_0x5edd87['model']],'as':_0x5edd87['as'],'attributes':_0x5edd87[_0xba14('0x20')],'include':_0x5edd87[_0xba14('0x22')]?_['map'](_0x5edd87[_0xba14('0x22')],function(_0x3d031a){return{'model':db[_0x3d031a['model']],'as':_0x3d031a['as'],'attributes':_0x3d031a[_0xba14('0x20')]};}):[]};}):[]};}):[]:[]})[_0xba14('0x25')](function(_0x17633c){logger['info'](_0xba14('0x1a'),_0x53e200);logger[_0xba14('0x26')](_0xba14('0x1a'),_0x53e200,JSON[_0xba14('0x15')](_0x17633c));_0x576591(_0x17633c);})['catch'](function(_0x24efd6){logger[_0xba14('0x16')](_0xba14('0x1a'),_0x24efd6['message'],_0x53e200);_0x50e6eb(_0x543cab[_0xba14('0x16')](0x1f4,_0x24efd6[_0xba14('0x17')]));});});};exports['ShowWhatsappQueue']=function(_0x3c974b){var _0x36212b=this;return new Promise(function(_0x2cd31c,_0x2f04d3){return db[_0xba14('0x1b')][_0xba14('0x27')]({'raw':_0x3c974b[_0xba14('0x1d')]?_0x3c974b[_0xba14('0x1d')][_0xba14('0x1e')]===undefined?!![]:![]:!![],'where':_0x3c974b[_0xba14('0x1d')]?_0x3c974b[_0xba14('0x1d')]['where']||null:null,'attributes':_0x3c974b[_0xba14('0x1d')]?_0x3c974b['options']['attributes']||null:null,'include':_0x3c974b['options']?_0x3c974b['options'][_0xba14('0x22')]?_[_0xba14('0x23')](_0x3c974b[_0xba14('0x1d')][_0xba14('0x22')],function(_0x12bb82){return{'model':db[_0x12bb82[_0xba14('0x24')]],'as':_0x12bb82['as'],'attributes':_0x12bb82[_0xba14('0x20')],'include':_0x12bb82[_0xba14('0x22')]?_[_0xba14('0x23')](_0x12bb82[_0xba14('0x22')],function(_0x2579c){return{'model':db[_0x2579c[_0xba14('0x24')]],'as':_0x2579c['as'],'attributes':_0x2579c[_0xba14('0x20')],'include':_0x2579c['include']?_[_0xba14('0x23')](_0x2579c[_0xba14('0x22')],function(_0x2b4075){return{'model':db[_0x2b4075['model']],'as':_0x2b4075['as'],'attributes':_0x2b4075[_0xba14('0x20')]};}):[]};}):[]};}):[]:[]})[_0xba14('0x25')](function(_0x445dd2){logger['info'](_0xba14('0x28'),_0x3c974b);logger[_0xba14('0x26')]('ShowWhatsappQueue',_0x3c974b,JSON['stringify'](_0x445dd2));_0x2cd31c(_0x445dd2);})[_0xba14('0x19')](function(_0x1ccfd0){logger['error'](_0xba14('0x28'),_0x1ccfd0[_0xba14('0x17')],_0x3c974b);_0x2f04d3(_0x36212b['error'](0x1f4,_0x1ccfd0[_0xba14('0x17')]));});});};
\ No newline at end of file
+var _0xb595=['GetWhatsappQueue','WhatsappQueue','findAll','options','raw','where','include','map','model','attributes','ShowWhatsappQueue','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./whatsappQueue.socket','register','request','then','info','debug','request\x20sent','stringify','error','code','WhatsappQueue,\x20%s,\x20%s','message','catch'];(function(_0x5cc8,_0x1faa02){var _0x450661=function(_0x237b05){while(--_0x237b05){_0x5cc8['push'](_0x5cc8['shift']());}};_0x450661(++_0x1faa02);}(_0xb595,0x146));var _0x5b59=function(_0x12bd17,_0x5f2109){_0x12bd17=_0x12bd17-0x0;var _0x4581f6=_0xb595[_0x12bd17];return _0x4581f6;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x5b59('0x0'));var BPromise=require(_0x5b59('0x1'));var rs=require(_0x5b59('0x2'));var fs=require('fs');var Redis=require(_0x5b59('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5b59('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x5b59('0x5'));var jayson=require(_0x5b59('0x6'));var client=jayson[_0x5b59('0x7')]['http']({'port':0x232a});config[_0x5b59('0x8')]=_[_0x5b59('0x9')](config[_0x5b59('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x5b59('0xa'))(new Redis(config['redis']));require(_0x5b59('0xb'))[_0x5b59('0xc')](socket);function respondWithRpcPromise(_0x75ac14,_0x5efd31,_0x2d26d5){return new BPromise(function(_0x199ab5,_0x3f1456){return client[_0x5b59('0xd')](_0x75ac14,_0x2d26d5)[_0x5b59('0xe')](function(_0x25b538){logger[_0x5b59('0xf')]('WhatsappQueue,\x20%s,\x20%s',_0x5efd31,'request\x20sent');logger[_0x5b59('0x10')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x5efd31,_0x5b59('0x11'),JSON[_0x5b59('0x12')](_0x25b538));if(_0x25b538[_0x5b59('0x13')]){if(_0x25b538[_0x5b59('0x13')][_0x5b59('0x14')]===0x1f4){logger[_0x5b59('0x13')](_0x5b59('0x15'),_0x5efd31,_0x25b538[_0x5b59('0x13')][_0x5b59('0x16')]);return _0x3f1456(_0x25b538[_0x5b59('0x13')][_0x5b59('0x16')]);}logger[_0x5b59('0x13')](_0x5b59('0x15'),_0x5efd31,_0x25b538[_0x5b59('0x13')][_0x5b59('0x16')]);return _0x199ab5(_0x25b538[_0x5b59('0x13')][_0x5b59('0x16')]);}else{logger['info'](_0x5b59('0x15'),_0x5efd31,_0x5b59('0x11'));_0x199ab5(_0x25b538['result'][_0x5b59('0x16')]);}})[_0x5b59('0x17')](function(_0x399e02){logger[_0x5b59('0x13')](_0x5b59('0x15'),_0x5efd31,_0x399e02);_0x3f1456(_0x399e02);});});}exports[_0x5b59('0x18')]=function(_0x423e93){var _0x99e233=this;return new Promise(function(_0x59233f,_0x587669){return db[_0x5b59('0x19')][_0x5b59('0x1a')]({'raw':_0x423e93['options']?_0x423e93[_0x5b59('0x1b')][_0x5b59('0x1c')]===undefined?!![]:![]:!![],'where':_0x423e93[_0x5b59('0x1b')]?_0x423e93[_0x5b59('0x1b')][_0x5b59('0x1d')]||null:null,'attributes':_0x423e93[_0x5b59('0x1b')]?_0x423e93['options']['attributes']||null:null,'limit':_0x423e93[_0x5b59('0x1b')]?_0x423e93['options']['limit']||null:null,'include':_0x423e93['options']?_0x423e93[_0x5b59('0x1b')][_0x5b59('0x1e')]?_[_0x5b59('0x1f')](_0x423e93[_0x5b59('0x1b')][_0x5b59('0x1e')],function(_0x389f83){return{'model':db[_0x389f83[_0x5b59('0x20')]],'as':_0x389f83['as'],'attributes':_0x389f83['attributes'],'include':_0x389f83['include']?_[_0x5b59('0x1f')](_0x389f83['include'],function(_0x14d2f3){return{'model':db[_0x14d2f3['model']],'as':_0x14d2f3['as'],'attributes':_0x14d2f3[_0x5b59('0x21')],'include':_0x14d2f3[_0x5b59('0x1e')]?_[_0x5b59('0x1f')](_0x14d2f3[_0x5b59('0x1e')],function(_0x525ff7){return{'model':db[_0x525ff7[_0x5b59('0x20')]],'as':_0x525ff7['as'],'attributes':_0x525ff7['attributes']};}):[]};}):[]};}):[]:[]})[_0x5b59('0xe')](function(_0x529f2a){logger[_0x5b59('0xf')](_0x5b59('0x18'),_0x423e93);logger[_0x5b59('0x10')](_0x5b59('0x18'),_0x423e93,JSON[_0x5b59('0x12')](_0x529f2a));_0x59233f(_0x529f2a);})[_0x5b59('0x17')](function(_0xe1659c){logger[_0x5b59('0x13')](_0x5b59('0x18'),_0xe1659c['message'],_0x423e93);_0x587669(_0x99e233['error'](0x1f4,_0xe1659c['message']));});});};exports[_0x5b59('0x22')]=function(_0x24577c){var _0x2d6667=this;return new Promise(function(_0x34c29b,_0x5e7521){return db[_0x5b59('0x19')]['find']({'raw':_0x24577c[_0x5b59('0x1b')]?_0x24577c[_0x5b59('0x1b')][_0x5b59('0x1c')]===undefined?!![]:![]:!![],'where':_0x24577c[_0x5b59('0x1b')]?_0x24577c[_0x5b59('0x1b')][_0x5b59('0x1d')]||null:null,'attributes':_0x24577c['options']?_0x24577c[_0x5b59('0x1b')][_0x5b59('0x21')]||null:null,'include':_0x24577c[_0x5b59('0x1b')]?_0x24577c[_0x5b59('0x1b')][_0x5b59('0x1e')]?_[_0x5b59('0x1f')](_0x24577c[_0x5b59('0x1b')][_0x5b59('0x1e')],function(_0x4679dc){return{'model':db[_0x4679dc[_0x5b59('0x20')]],'as':_0x4679dc['as'],'attributes':_0x4679dc[_0x5b59('0x21')],'include':_0x4679dc['include']?_['map'](_0x4679dc[_0x5b59('0x1e')],function(_0x1a87f5){return{'model':db[_0x1a87f5[_0x5b59('0x20')]],'as':_0x1a87f5['as'],'attributes':_0x1a87f5[_0x5b59('0x21')],'include':_0x1a87f5['include']?_[_0x5b59('0x1f')](_0x1a87f5['include'],function(_0x2a1e41){return{'model':db[_0x2a1e41[_0x5b59('0x20')]],'as':_0x2a1e41['as'],'attributes':_0x2a1e41[_0x5b59('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4d10a3){logger[_0x5b59('0xf')](_0x5b59('0x22'),_0x24577c);logger['debug']('ShowWhatsappQueue',_0x24577c,JSON['stringify'](_0x4d10a3));_0x34c29b(_0x4d10a3);})[_0x5b59('0x17')](function(_0x1c4b0e){logger['error'](_0x5b59('0x22'),_0x1c4b0e[_0x5b59('0x16')],_0x24577c);_0x5e7521(_0x2d6667[_0x5b59('0x13')](0x1f4,_0x1c4b0e['message']));});});};
\ No newline at end of file
index 2e21687..0c4a272 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41ca=['length','./whatsappQueue.events','update','emit','removeListener','register'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x41ca,0x12d));var _0xa41c=function(_0xb7110b,_0x31b4fa){_0xb7110b=_0xb7110b-0x0;var _0x43bc78=_0x41ca[_0xb7110b];return _0x43bc78;};'use strict';var WhatsappQueueEvents=require(_0xa41c('0x0'));var events=['save','remove',_0xa41c('0x1')];function createListener(_0x5e6e5c,_0x23ad02){return function(_0x40a399){_0x23ad02[_0xa41c('0x2')](_0x5e6e5c,_0x40a399);};}function removeListener(_0x45cef5,_0x16e5bd){return function(){WhatsappQueueEvents[_0xa41c('0x3')](_0x45cef5,_0x16e5bd);};}exports[_0xa41c('0x4')]=function(_0x2380d8){for(var _0x478010=0x0,_0x4a4afc=events[_0xa41c('0x5')];_0x478010<_0x4a4afc;_0x478010++){var _0x28f785=events[_0x478010];var _0x3b9387=createListener('whatsappQueue:'+_0x28f785,_0x2380d8);WhatsappQueueEvents['on'](_0x28f785,_0x3b9387);}};
\ No newline at end of file
+var _0x3ad3=['whatsappQueue:','./whatsappQueue.events','save','remove','emit','removeListener','register'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0x3ad3,0x1b3));var _0x33ad=function(_0x3a5a4c,_0x3a0507){_0x3a5a4c=_0x3a5a4c-0x0;var _0x508774=_0x3ad3[_0x3a5a4c];return _0x508774;};'use strict';var WhatsappQueueEvents=require(_0x33ad('0x0'));var events=[_0x33ad('0x1'),_0x33ad('0x2'),'update'];function createListener(_0x3a3248,_0x55a2a5){return function(_0x344c16){_0x55a2a5[_0x33ad('0x3')](_0x3a3248,_0x344c16);};}function removeListener(_0x42d13f,_0x4fb374){return function(){WhatsappQueueEvents[_0x33ad('0x4')](_0x42d13f,_0x4fb374);};}exports[_0x33ad('0x5')]=function(_0x149781){for(var _0x76b943=0x0,_0x8ab3b8=events['length'];_0x76b943<_0x8ab3b8;_0x76b943++){var _0xd0206e=events[_0x76b943];var _0x31b0f3=createListener(_0x33ad('0x6')+_0xd0206e,_0x149781);WhatsappQueueEvents['on'](_0xd0206e,_0x31b0f3);}};
\ No newline at end of file
index 9f8939d..9bc4ff4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x637c=['connect-timeout','../../config/environment','get','isAuthenticated','index','describe','post','create','/:id','delete','destroy','exports','multer','path'];(function(_0x23bc99,_0x46e768){var _0x3031af=function(_0x2bdcbb){while(--_0x2bdcbb){_0x23bc99['push'](_0x23bc99['shift']());}};_0x3031af(++_0x46e768);}(_0x637c,0xa6));var _0xc637=function(_0xe3fc61,_0xa41db3){_0xe3fc61=_0xe3fc61-0x0;var _0x1a702a=_0x637c[_0xe3fc61];return _0x1a702a;};'use strict';var multer=require(_0xc637('0x0'));var util=require('util');var path=require(_0xc637('0x1'));var timeout=require(_0xc637('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc637('0x3'));var controller=require('./whatsappQueueReport.controller');router[_0xc637('0x4')]('/',auth[_0xc637('0x5')](),controller[_0xc637('0x6')]);router[_0xc637('0x4')]('/describe',auth[_0xc637('0x5')](),controller[_0xc637('0x7')]);router[_0xc637('0x4')]('/:id',auth[_0xc637('0x5')](),controller['show']);router[_0xc637('0x8')]('/',auth['isAuthenticated'](),controller[_0xc637('0x9')]);router['put'](_0xc637('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xc637('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xc637('0xc')]);module[_0xc637('0xd')]=router;
\ No newline at end of file
+var _0xf5a9=['multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','isAuthenticated','index','get','/describe','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x4f99bb,_0x5319f7){var _0x53587a=function(_0x20adc1){while(--_0x20adc1){_0x4f99bb['push'](_0x4f99bb['shift']());}};_0x53587a(++_0x5319f7);}(_0xf5a9,0xdc));var _0x9f5a=function(_0x467f4c,_0x1214ec){_0x467f4c=_0x467f4c-0x0;var _0x2482ab=_0xf5a9[_0x467f4c];return _0x2482ab;};'use strict';var multer=require(_0x9f5a('0x0'));var util=require(_0x9f5a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9f5a('0x2'));var router=express[_0x9f5a('0x3')]();var fs_extra=require(_0x9f5a('0x4'));var auth=require(_0x9f5a('0x5'));var interaction=require(_0x9f5a('0x6'));var config=require(_0x9f5a('0x7'));var controller=require(_0x9f5a('0x8'));router['get']('/',auth[_0x9f5a('0x9')](),controller[_0x9f5a('0xa')]);router[_0x9f5a('0xb')](_0x9f5a('0xc'),auth[_0x9f5a('0x9')](),controller['describe']);router['get'](_0x9f5a('0xd'),auth['isAuthenticated'](),controller[_0x9f5a('0xe')]);router[_0x9f5a('0xf')]('/',auth[_0x9f5a('0x9')](),controller[_0x9f5a('0x10')]);router[_0x9f5a('0x11')](_0x9f5a('0xd'),auth[_0x9f5a('0x9')](),controller[_0x9f5a('0x12')]);router[_0x9f5a('0x13')](_0x9f5a('0xd'),auth[_0x9f5a('0x9')](),controller[_0x9f5a('0x14')]);module[_0x9f5a('0x15')]=router;
\ No newline at end of file
index df1b6b0..84b04bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x26313a,_0x5c97cb){var _0x550337=function(_0x16bfb1){while(--_0x16bfb1){_0x26313a['push'](_0x26313a['shift']());}};_0x550337(++_0x5c97cb);}(_0x7a54,0x106));var _0x47a5=function(_0x34929c,_0x4db117){_0x34929c=_0x34929c-0x0;var _0x3d139a=_0x7a54[_0x34929c];return _0x3d139a;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x41c53d,_0x39ae9a){var _0x5c9c5d=function(_0xe3a88b){while(--_0xe3a88b){_0x41c53d['push'](_0x41c53d['shift']());}};_0x5c9c5d(++_0x39ae9a);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
index 3b03185..61be974 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['fields','nolimit','sort','filter','where','merge','type','VIRTUAL','options','WhatsappQueueReport','includeAll','include','findAll','rows','catch','params','rawAttributes','length','find','create','body','destroy','describe','rimraf','zip-dir','bluebird','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','end','stack','name','send','map','key','model','query','keys','filters','intersection','attributes'];(function(_0x11bcdb,_0x4d9a3d){var _0x22521e=function(_0x52970f){while(--_0x52970f){_0x11bcdb['push'](_0x11bcdb['shift']());}};_0x22521e(++_0x4d9a3d);}(_0xda3f,0xec));var _0xfda3=function(_0x4d6488,_0x2ac6ad){_0x4d6488=_0x4d6488-0x0;var _0x3323dd=_0xda3f[_0x4d6488];return _0x3323dd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfda3('0x0'));var zipdir=require(_0xfda3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfda3('0x2'));var Mustache=require('mustache');var util=require(_0xfda3('0x3'));var path=require(_0xfda3('0x4'));var sox=require('sox');var csv=require(_0xfda3('0x5'));var ejs=require(_0xfda3('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfda3('0x7'));var crypto=require(_0xfda3('0x8'));var jsforce=require(_0xfda3('0x9'));var deskjs=require(_0xfda3('0xa'));var toCsv=require(_0xfda3('0x5'));var querystring=require(_0xfda3('0xb'));var Papa=require(_0xfda3('0xc'));var Redis=require(_0xfda3('0xd'));var authService=require(_0xfda3('0xe'));var qs=require(_0xfda3('0xf'));var as=require(_0xfda3('0x10'));var hardwareService=require(_0xfda3('0x11'));var logger=require('../../config/logger')(_0xfda3('0x12'));var utils=require(_0xfda3('0x13'));var config=require(_0xfda3('0x14'));var licenseUtil=require(_0xfda3('0x15'));var db=require(_0xfda3('0x16'))['db'];function respondWithStatusCode(_0x4b77ea,_0x583125){_0x583125=_0x583125||0xcc;return function(_0x5d7d5b){if(_0x5d7d5b){return _0x4b77ea[_0xfda3('0x17')](_0x583125);}return _0x4b77ea[_0xfda3('0x18')](_0x583125)['end']();};}function respondWithResult(_0x501588,_0x587e9b){_0x587e9b=_0x587e9b||0xc8;return function(_0x227d72){if(_0x227d72){return _0x501588[_0xfda3('0x18')](_0x587e9b)['json'](_0x227d72);}};}function respondWithFilteredResult(_0x57a229,_0x533365){return function(_0x80ea80){if(_0x80ea80){var _0x474707=typeof _0x533365[_0xfda3('0x19')]===_0xfda3('0x1a')&&typeof _0x533365[_0xfda3('0x1b')]===_0xfda3('0x1a');var _0x2aadcb=_0x80ea80[_0xfda3('0x1c')];var _0x4680bf=_0x474707?0x0:_0x533365[_0xfda3('0x19')];var _0x54a7c6=_0x474707?_0x80ea80[_0xfda3('0x1c')]:_0x533365[_0xfda3('0x19')]+_0x533365[_0xfda3('0x1b')];var _0x32855a;if(_0x54a7c6>=_0x2aadcb){_0x54a7c6=_0x2aadcb;_0x32855a=0xc8;}else{_0x32855a=0xce;}_0x57a229['status'](_0x32855a);return _0x57a229[_0xfda3('0x1d')](_0xfda3('0x1e'),_0x4680bf+'-'+_0x54a7c6+'/'+_0x2aadcb)[_0xfda3('0x1f')](_0x80ea80);}return null;};}function patchUpdates(_0x51e731){return function(_0x5ad52a){try{jsonpatch[_0xfda3('0x20')](_0x5ad52a,_0x51e731,!![]);}catch(_0x38d428){return BPromise[_0xfda3('0x21')](_0x38d428);}return _0x5ad52a['save']();};}function saveUpdates(_0x3cf5a9,_0xef2535){return function(_0x1e15a8){if(_0x1e15a8){return _0x1e15a8[_0xfda3('0x22')](_0x3cf5a9)[_0xfda3('0x23')](function(_0x2b84b7){return _0x2b84b7;});}return null;};}function removeEntity(_0x2677f6,_0xc6fb9a){return function(_0x16eaa6){if(_0x16eaa6){return _0x16eaa6['destroy']()[_0xfda3('0x23')](function(){_0x2677f6[_0xfda3('0x18')](0xcc)[_0xfda3('0x24')]();});}};}function handleEntityNotFound(_0x4ae9b9,_0x45a977){return function(_0x39e246){if(!_0x39e246){_0x4ae9b9[_0xfda3('0x17')](0x194);}return _0x39e246;};}function handleError(_0x38946d,_0x1cb831){_0x1cb831=_0x1cb831||0x1f4;return function(_0xad9f7b){logger['error'](_0xad9f7b[_0xfda3('0x25')]);if(_0xad9f7b[_0xfda3('0x26')]){delete _0xad9f7b[_0xfda3('0x26')];}_0x38946d[_0xfda3('0x18')](_0x1cb831)[_0xfda3('0x27')](_0xad9f7b);};}exports['index']=function(_0x3c1549,_0x4101b1){var _0x301509={},_0x474992={},_0xe21ec6={'count':0x0,'rows':[]};var _0x3cfeb2=_[_0xfda3('0x28')](db['WhatsappQueueReport']['rawAttributes'],function(_0x3aef3c){return{'name':_0x3aef3c['fieldName'],'type':_0x3aef3c['type'][_0xfda3('0x29')]};});_0x474992[_0xfda3('0x2a')]=_[_0xfda3('0x28')](_0x3cfeb2,_0xfda3('0x26'));_0x474992[_0xfda3('0x2b')]=_[_0xfda3('0x2c')](_0x3c1549[_0xfda3('0x2b')]);_0x474992[_0xfda3('0x2d')]=_[_0xfda3('0x2e')](_0x474992['model'],_0x474992[_0xfda3('0x2b')]);_0x301509[_0xfda3('0x2f')]=_[_0xfda3('0x2e')](_0x474992[_0xfda3('0x2a')],qs[_0xfda3('0x30')](_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x30')]));_0x301509[_0xfda3('0x2f')]=_0x301509[_0xfda3('0x2f')]['length']?_0x301509['attributes']:_0x474992[_0xfda3('0x2a')];if(!_0x3c1549[_0xfda3('0x2b')]['hasOwnProperty'](_0xfda3('0x31'))){_0x301509[_0xfda3('0x1b')]=qs[_0xfda3('0x1b')](_0x3c1549['query'][_0xfda3('0x1b')]);_0x301509[_0xfda3('0x19')]=qs[_0xfda3('0x19')](_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x19')]);}_0x301509['order']=qs[_0xfda3('0x32')](_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x32')]);_0x301509['where']=qs[_0xfda3('0x2d')](_['pick'](_0x3c1549[_0xfda3('0x2b')],_0x474992[_0xfda3('0x2d')]),_0x3cfeb2);if(_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x33')]){_0x301509[_0xfda3('0x34')]=_[_0xfda3('0x35')](_0x301509[_0xfda3('0x34')],{'$or':_[_0xfda3('0x28')](_0x3cfeb2,function(_0x577be8){if(_0x577be8[_0xfda3('0x36')]!==_0xfda3('0x37')){var _0xd2dde0={};_0xd2dde0[_0x577be8[_0xfda3('0x26')]]={'$like':'%'+_0x3c1549['query'][_0xfda3('0x33')]+'%'};return _0xd2dde0;}})});}_0x301509=_[_0xfda3('0x35')]({},_0x301509,_0x3c1549[_0xfda3('0x38')]);var _0x5bad90={'where':_0x301509['where']};return db[_0xfda3('0x39')][_0xfda3('0x1c')](_0x5bad90)[_0xfda3('0x23')](function(_0x1aaa6c){_0xe21ec6[_0xfda3('0x1c')]=_0x1aaa6c;if(_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x3a')]){_0x301509[_0xfda3('0x3b')]=[{'all':!![]}];}return db[_0xfda3('0x39')][_0xfda3('0x3c')](_0x301509);})['then'](function(_0x27200f){_0xe21ec6[_0xfda3('0x3d')]=_0x27200f;return _0xe21ec6;})['then'](respondWithFilteredResult(_0x4101b1,_0x301509))[_0xfda3('0x3e')](handleError(_0x4101b1,null));};exports['show']=function(_0x51a314,_0x4e6886){var _0x2208bc={'raw':!![],'where':{'id':_0x51a314[_0xfda3('0x3f')]['id']}},_0x107fb1={};_0x107fb1[_0xfda3('0x2a')]=_['keys'](db[_0xfda3('0x39')][_0xfda3('0x40')]);_0x107fb1[_0xfda3('0x2b')]=_[_0xfda3('0x2c')](_0x51a314['query']);_0x107fb1[_0xfda3('0x2d')]=_[_0xfda3('0x2e')](_0x107fb1[_0xfda3('0x2a')],_0x107fb1['query']);_0x2208bc['attributes']=_[_0xfda3('0x2e')](_0x107fb1[_0xfda3('0x2a')],qs[_0xfda3('0x30')](_0x51a314[_0xfda3('0x2b')][_0xfda3('0x30')]));_0x2208bc[_0xfda3('0x2f')]=_0x2208bc[_0xfda3('0x2f')][_0xfda3('0x41')]?_0x2208bc[_0xfda3('0x2f')]:_0x107fb1[_0xfda3('0x2a')];if(_0x51a314[_0xfda3('0x2b')][_0xfda3('0x3a')]){_0x2208bc[_0xfda3('0x3b')]=[{'all':!![]}];}_0x2208bc=_[_0xfda3('0x35')]({},_0x2208bc,_0x51a314['options']);return db['WhatsappQueueReport'][_0xfda3('0x42')](_0x2208bc)[_0xfda3('0x23')](handleEntityNotFound(_0x4e6886,null))[_0xfda3('0x23')](respondWithResult(_0x4e6886,null))[_0xfda3('0x3e')](handleError(_0x4e6886,null));};exports[_0xfda3('0x43')]=function(_0x60a89d,_0x192133){return db[_0xfda3('0x39')][_0xfda3('0x43')](_0x60a89d[_0xfda3('0x44')],{})['then'](respondWithResult(_0x192133,0xc9))[_0xfda3('0x3e')](handleError(_0x192133,null));};exports[_0xfda3('0x22')]=function(_0x481356,_0x36aa3a){if(_0x481356[_0xfda3('0x44')]['id']){delete _0x481356['body']['id'];}return db[_0xfda3('0x39')][_0xfda3('0x42')]({'where':{'id':_0x481356[_0xfda3('0x3f')]['id']}})['then'](handleEntityNotFound(_0x36aa3a,null))[_0xfda3('0x23')](saveUpdates(_0x481356[_0xfda3('0x44')],null))[_0xfda3('0x23')](respondWithResult(_0x36aa3a,null))['catch'](handleError(_0x36aa3a,null));};exports[_0xfda3('0x45')]=function(_0x33565d,_0x2f54eb){return db[_0xfda3('0x39')][_0xfda3('0x42')]({'where':{'id':_0x33565d['params']['id']}})[_0xfda3('0x23')](handleEntityNotFound(_0x2f54eb,null))['then'](removeEntity(_0x2f54eb,null))[_0xfda3('0x3e')](handleError(_0x2f54eb,null));};exports['describe']=function(_0x1b5e89,_0x6447){return db[_0xfda3('0x39')][_0xfda3('0x46')]()['then'](respondWithResult(_0x6447,null))[_0xfda3('0x3e')](handleError(_0x6447,null));};
\ No newline at end of file
+var _0x757a=['include','findAll','rows','show','params','WhatsappQueueReport','find','create','body','catch','destroy','describe','rimraf','zip-dir','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','status','json','offset','undefined','count','limit','Content-Range','apply','update','then','end','sendStatus','error','stack','name','map','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll'];(function(_0x306d4,_0x4edab7){var _0x28d188=function(_0x2df06e){while(--_0x2df06e){_0x306d4['push'](_0x306d4['shift']());}};_0x28d188(++_0x4edab7);}(_0x757a,0xde));var _0xa757=function(_0x4b8efb,_0x3ba1dc){_0x4b8efb=_0x4b8efb-0x0;var _0x59dc08=_0x757a[_0x4b8efb];return _0x59dc08;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa757('0x0'));var zipdir=require(_0xa757('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa757('0x2'));var Mustache=require(_0xa757('0x3'));var util=require(_0xa757('0x4'));var path=require(_0xa757('0x5'));var sox=require(_0xa757('0x6'));var csv=require(_0xa757('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa757('0x8'));var _=require(_0xa757('0x9'));var squel=require('squel');var crypto=require(_0xa757('0xa'));var jsforce=require(_0xa757('0xb'));var deskjs=require(_0xa757('0xc'));var toCsv=require(_0xa757('0x7'));var querystring=require(_0xa757('0xd'));var Papa=require('papaparse');var Redis=require(_0xa757('0xe'));var authService=require(_0xa757('0xf'));var qs=require(_0xa757('0x10'));var as=require(_0xa757('0x11'));var hardwareService=require(_0xa757('0x12'));var logger=require(_0xa757('0x13'))(_0xa757('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4db68e,_0x421040){_0x421040=_0x421040||0xcc;return function(_0x544b45){if(_0x544b45){return _0x4db68e['sendStatus'](_0x421040);}return _0x4db68e[_0xa757('0x15')](_0x421040)['end']();};}function respondWithResult(_0x481508,_0x32112b){_0x32112b=_0x32112b||0xc8;return function(_0x1b670e){if(_0x1b670e){return _0x481508[_0xa757('0x15')](_0x32112b)[_0xa757('0x16')](_0x1b670e);}};}function respondWithFilteredResult(_0x86abd,_0x31cfd2){return function(_0xf12b68){if(_0xf12b68){var _0x2f7947=typeof _0x31cfd2[_0xa757('0x17')]===_0xa757('0x18')&&typeof _0x31cfd2['limit']===_0xa757('0x18');var _0x44eab8=_0xf12b68[_0xa757('0x19')];var _0x4d9f58=_0x2f7947?0x0:_0x31cfd2['offset'];var _0x151c04=_0x2f7947?_0xf12b68[_0xa757('0x19')]:_0x31cfd2[_0xa757('0x17')]+_0x31cfd2[_0xa757('0x1a')];var _0x27f4ba;if(_0x151c04>=_0x44eab8){_0x151c04=_0x44eab8;_0x27f4ba=0xc8;}else{_0x27f4ba=0xce;}_0x86abd[_0xa757('0x15')](_0x27f4ba);return _0x86abd['set'](_0xa757('0x1b'),_0x4d9f58+'-'+_0x151c04+'/'+_0x44eab8)['json'](_0xf12b68);}return null;};}function patchUpdates(_0x32c2a1){return function(_0x167640){try{jsonpatch[_0xa757('0x1c')](_0x167640,_0x32c2a1,!![]);}catch(_0x2c9ec6){return BPromise['reject'](_0x2c9ec6);}return _0x167640['save']();};}function saveUpdates(_0x40ec48,_0x2159cf){return function(_0x2ba923){if(_0x2ba923){return _0x2ba923[_0xa757('0x1d')](_0x40ec48)[_0xa757('0x1e')](function(_0x40562f){return _0x40562f;});}return null;};}function removeEntity(_0x2ca10d,_0x21f1af){return function(_0x2bf276){if(_0x2bf276){return _0x2bf276['destroy']()[_0xa757('0x1e')](function(){_0x2ca10d['status'](0xcc)[_0xa757('0x1f')]();});}};}function handleEntityNotFound(_0x47903b,_0x40551d){return function(_0x3859ce){if(!_0x3859ce){_0x47903b[_0xa757('0x20')](0x194);}return _0x3859ce;};}function handleError(_0x4d58a4,_0x2b19d5){_0x2b19d5=_0x2b19d5||0x1f4;return function(_0xcd98bd){logger[_0xa757('0x21')](_0xcd98bd[_0xa757('0x22')]);if(_0xcd98bd['name']){delete _0xcd98bd[_0xa757('0x23')];}_0x4d58a4['status'](_0x2b19d5)['send'](_0xcd98bd);};}exports['index']=function(_0x4f8de2,_0xfdf69d){var _0x596ae2={},_0x2208f9={},_0x3bc24c={'count':0x0,'rows':[]};var _0x55c5f8=_[_0xa757('0x24')](db['WhatsappQueueReport'][_0xa757('0x25')],function(_0xa6d0f6){return{'name':_0xa6d0f6['fieldName'],'type':_0xa6d0f6[_0xa757('0x26')]['key']};});_0x2208f9[_0xa757('0x27')]=_[_0xa757('0x24')](_0x55c5f8,_0xa757('0x23'));_0x2208f9[_0xa757('0x28')]=_[_0xa757('0x29')](_0x4f8de2[_0xa757('0x28')]);_0x2208f9[_0xa757('0x2a')]=_[_0xa757('0x2b')](_0x2208f9[_0xa757('0x27')],_0x2208f9[_0xa757('0x28')]);_0x596ae2[_0xa757('0x2c')]=_[_0xa757('0x2b')](_0x2208f9[_0xa757('0x27')],qs[_0xa757('0x2d')](_0x4f8de2[_0xa757('0x28')][_0xa757('0x2d')]));_0x596ae2[_0xa757('0x2c')]=_0x596ae2[_0xa757('0x2c')][_0xa757('0x2e')]?_0x596ae2[_0xa757('0x2c')]:_0x2208f9[_0xa757('0x27')];if(!_0x4f8de2[_0xa757('0x28')][_0xa757('0x2f')](_0xa757('0x30'))){_0x596ae2['limit']=qs[_0xa757('0x1a')](_0x4f8de2[_0xa757('0x28')][_0xa757('0x1a')]);_0x596ae2[_0xa757('0x17')]=qs[_0xa757('0x17')](_0x4f8de2['query'][_0xa757('0x17')]);}_0x596ae2[_0xa757('0x31')]=qs[_0xa757('0x32')](_0x4f8de2[_0xa757('0x28')][_0xa757('0x32')]);_0x596ae2[_0xa757('0x33')]=qs['filters'](_[_0xa757('0x34')](_0x4f8de2[_0xa757('0x28')],_0x2208f9[_0xa757('0x2a')]),_0x55c5f8);if(_0x4f8de2[_0xa757('0x28')][_0xa757('0x35')]){_0x596ae2[_0xa757('0x33')]=_[_0xa757('0x36')](_0x596ae2[_0xa757('0x33')],{'$or':_[_0xa757('0x24')](_0x55c5f8,function(_0x4f9d98){if(_0x4f9d98[_0xa757('0x26')]!==_0xa757('0x37')){var _0x9f73c6={};_0x9f73c6[_0x4f9d98[_0xa757('0x23')]]={'$like':'%'+_0x4f8de2[_0xa757('0x28')][_0xa757('0x35')]+'%'};return _0x9f73c6;}})});}_0x596ae2=_['merge']({},_0x596ae2,_0x4f8de2[_0xa757('0x38')]);var _0x6d77ed={'where':_0x596ae2['where']};return db['WhatsappQueueReport'][_0xa757('0x19')](_0x6d77ed)[_0xa757('0x1e')](function(_0x5b11fe){_0x3bc24c['count']=_0x5b11fe;if(_0x4f8de2[_0xa757('0x28')][_0xa757('0x39')]){_0x596ae2[_0xa757('0x3a')]=[{'all':!![]}];}return db['WhatsappQueueReport'][_0xa757('0x3b')](_0x596ae2);})[_0xa757('0x1e')](function(_0x26802c){_0x3bc24c[_0xa757('0x3c')]=_0x26802c;return _0x3bc24c;})[_0xa757('0x1e')](respondWithFilteredResult(_0xfdf69d,_0x596ae2))['catch'](handleError(_0xfdf69d,null));};exports[_0xa757('0x3d')]=function(_0x52c728,_0x564d40){var _0x43329c={'raw':!![],'where':{'id':_0x52c728[_0xa757('0x3e')]['id']}},_0x57298b={};_0x57298b[_0xa757('0x27')]=_[_0xa757('0x29')](db['WhatsappQueueReport']['rawAttributes']);_0x57298b[_0xa757('0x28')]=_[_0xa757('0x29')](_0x52c728[_0xa757('0x28')]);_0x57298b[_0xa757('0x2a')]=_[_0xa757('0x2b')](_0x57298b[_0xa757('0x27')],_0x57298b['query']);_0x43329c[_0xa757('0x2c')]=_[_0xa757('0x2b')](_0x57298b['model'],qs[_0xa757('0x2d')](_0x52c728['query'][_0xa757('0x2d')]));_0x43329c[_0xa757('0x2c')]=_0x43329c['attributes'][_0xa757('0x2e')]?_0x43329c[_0xa757('0x2c')]:_0x57298b['model'];if(_0x52c728[_0xa757('0x28')][_0xa757('0x39')]){_0x43329c[_0xa757('0x3a')]=[{'all':!![]}];}_0x43329c=_[_0xa757('0x36')]({},_0x43329c,_0x52c728['options']);return db[_0xa757('0x3f')][_0xa757('0x40')](_0x43329c)[_0xa757('0x1e')](handleEntityNotFound(_0x564d40,null))[_0xa757('0x1e')](respondWithResult(_0x564d40,null))['catch'](handleError(_0x564d40,null));};exports[_0xa757('0x41')]=function(_0x5b6017,_0x50c131){return db[_0xa757('0x3f')][_0xa757('0x41')](_0x5b6017[_0xa757('0x42')],{})['then'](respondWithResult(_0x50c131,0xc9))[_0xa757('0x43')](handleError(_0x50c131,null));};exports['update']=function(_0x2ed63f,_0x151cc3){if(_0x2ed63f[_0xa757('0x42')]['id']){delete _0x2ed63f[_0xa757('0x42')]['id'];}return db[_0xa757('0x3f')][_0xa757('0x40')]({'where':{'id':_0x2ed63f[_0xa757('0x3e')]['id']}})[_0xa757('0x1e')](handleEntityNotFound(_0x151cc3,null))['then'](saveUpdates(_0x2ed63f[_0xa757('0x42')],null))[_0xa757('0x1e')](respondWithResult(_0x151cc3,null))[_0xa757('0x43')](handleError(_0x151cc3,null));};exports[_0xa757('0x44')]=function(_0x319988,_0x1f10cf){return db[_0xa757('0x3f')][_0xa757('0x40')]({'where':{'id':_0x319988[_0xa757('0x3e')]['id']}})[_0xa757('0x1e')](handleEntityNotFound(_0x1f10cf,null))[_0xa757('0x1e')](removeEntity(_0x1f10cf,null))[_0xa757('0x43')](handleError(_0x1f10cf,null));};exports[_0xa757('0x45')]=function(_0x354ad5,_0x388573){return db[_0xa757('0x3f')]['describe']()[_0xa757('0x1e')](respondWithResult(_0x388573,null))['catch'](handleError(_0x388573,null));};
\ No newline at end of file
index 601835c..dc17e10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ccf=['../../config/environment','./whatsappQueueReport.attributes','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x26a169,_0x54f908){var _0x1f07a1=function(_0x344027){while(--_0x344027){_0x26a169['push'](_0x26a169['shift']());}};_0x1f07a1(++_0x54f908);}(_0x8ccf,0x6e));var _0xf8cc=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8ccf[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xf8cc('0x0'));var util=require('util');var logger=require(_0xf8cc('0x1'))(_0xf8cc('0x2'));var moment=require(_0xf8cc('0x3'));var BPromise=require('bluebird');var rp=require(_0xf8cc('0x4'));var fs=require('fs');var path=require(_0xf8cc('0x5'));var rimraf=require(_0xf8cc('0x6'));var config=require(_0xf8cc('0x7'));var attributes=require(_0xf8cc('0x8'));module['exports']=function(_0x2edcf4,_0x4daf31){return _0x2edcf4[_0xf8cc('0x9')](_0xf8cc('0xa'),attributes,{'tableName':_0xf8cc('0xb'),'paranoid':![],'indexes':[{'name':_0xf8cc('0xc'),'fields':[_0xf8cc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5f32=['exports','WhatsappQueueReport','report_whatsapp_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment'];(function(_0xbf8ebe,_0x3b69a5){var _0x1e25e8=function(_0x40c390){while(--_0x40c390){_0xbf8ebe['push'](_0xbf8ebe['shift']());}};_0x1e25e8(++_0x3b69a5);}(_0x5f32,0x10c));var _0x25f3=function(_0x2db315,_0x58d720){_0x2db315=_0x2db315-0x0;var _0x12f9a2=_0x5f32[_0x2db315];return _0x12f9a2;};'use strict';var _=require('lodash');var util=require(_0x25f3('0x0'));var logger=require(_0x25f3('0x1'))(_0x25f3('0x2'));var moment=require(_0x25f3('0x3'));var BPromise=require(_0x25f3('0x4'));var rp=require(_0x25f3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x25f3('0x6'));var attributes=require('./whatsappQueueReport.attributes');module[_0x25f3('0x7')]=function(_0x38ebfb,_0xbb7b72){return _0x38ebfb['define'](_0x25f3('0x8'),attributes,{'tableName':_0x25f3('0x9'),'paranoid':![],'indexes':[{'name':_0x25f3('0xa'),'fields':[_0x25f3('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index dd36ebd..273e912 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc94b=['request\x20sent','stringify','error','code','WhatsappQueueReport,\x20%s,\x20%s','message','result','CreateWhatsappQueueReport','WhatsappQueueReport','create','options','raw','then','UpdateWhatsappQueueReport','update','body','where','limit','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0x2dda81,_0x5991dc){var _0x1ada21=function(_0x5ac7ff){while(--_0x5ac7ff){_0x2dda81['push'](_0x2dda81['shift']());}};_0x1ada21(++_0x5991dc);}(_0xc94b,0x7f));var _0xbc94=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0xc94b[_0x487b0c];return _0x1adbdc;};'use strict';var _=require(_0xbc94('0x0'));var util=require(_0xbc94('0x1'));var moment=require('moment');var BPromise=require(_0xbc94('0x2'));var rs=require(_0xbc94('0x3'));var fs=require('fs');var Redis=require(_0xbc94('0x4'));var db=require(_0xbc94('0x5'))['db'];var utils=require(_0xbc94('0x6'));var logger=require(_0xbc94('0x7'))(_0xbc94('0x8'));var config=require(_0xbc94('0x9'));var jayson=require(_0xbc94('0xa'));var client=jayson[_0xbc94('0xb')][_0xbc94('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x308d3c,_0x3bc497,_0x2eb8e5){return new BPromise(function(_0x1bcb33,_0x28f192){return client[_0xbc94('0xd')](_0x308d3c,_0x2eb8e5)['then'](function(_0x47b1c0){logger[_0xbc94('0xe')]('WhatsappQueueReport,\x20%s,\x20%s',_0x3bc497,'request\x20sent');logger[_0xbc94('0xf')](_0xbc94('0x10'),_0x3bc497,_0xbc94('0x11'),JSON[_0xbc94('0x12')](_0x47b1c0));if(_0x47b1c0[_0xbc94('0x13')]){if(_0x47b1c0[_0xbc94('0x13')][_0xbc94('0x14')]===0x1f4){logger[_0xbc94('0x13')](_0xbc94('0x15'),_0x3bc497,_0x47b1c0[_0xbc94('0x13')][_0xbc94('0x16')]);return _0x28f192(_0x47b1c0[_0xbc94('0x13')][_0xbc94('0x16')]);}logger[_0xbc94('0x13')]('WhatsappQueueReport,\x20%s,\x20%s',_0x3bc497,_0x47b1c0[_0xbc94('0x13')][_0xbc94('0x16')]);return _0x1bcb33(_0x47b1c0['error']['message']);}else{logger[_0xbc94('0xe')](_0xbc94('0x15'),_0x3bc497,'request\x20sent');_0x1bcb33(_0x47b1c0[_0xbc94('0x17')][_0xbc94('0x16')]);}})['catch'](function(_0x24b35d){logger[_0xbc94('0x13')](_0xbc94('0x15'),_0x3bc497,_0x24b35d);_0x28f192(_0x24b35d);});});}exports[_0xbc94('0x18')]=function(_0x4b2dad){var _0x16d10c=this;return new Promise(function(_0x1b9b12,_0x230134){return db[_0xbc94('0x19')][_0xbc94('0x1a')](_0x4b2dad['body'],{'raw':_0x4b2dad[_0xbc94('0x1b')]?_0x4b2dad[_0xbc94('0x1b')][_0xbc94('0x1c')]===undefined?!![]:![]:!![]})[_0xbc94('0x1d')](function(_0x1a0e68){logger[_0xbc94('0xe')](_0xbc94('0x18'),_0x4b2dad);logger[_0xbc94('0xf')](_0xbc94('0x18'),_0x4b2dad,JSON[_0xbc94('0x12')](_0x1a0e68));_0x1b9b12(_0x1a0e68);})['catch'](function(_0x2a88bb){logger[_0xbc94('0x13')](_0xbc94('0x18'),_0x2a88bb[_0xbc94('0x16')],_0x4b2dad);_0x230134(_0x16d10c[_0xbc94('0x13')](0x1f4,_0x2a88bb[_0xbc94('0x16')]));});});};exports[_0xbc94('0x1e')]=function(_0x4b317e){var _0x6bbc3=this;return new Promise(function(_0x364508,_0x498b38){return db['WhatsappQueueReport'][_0xbc94('0x1f')](_0x4b317e[_0xbc94('0x20')],{'raw':_0x4b317e['options']?_0x4b317e[_0xbc94('0x1b')][_0xbc94('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b317e['options']?_0x4b317e[_0xbc94('0x1b')][_0xbc94('0x21')]||null:null,'attributes':_0x4b317e[_0xbc94('0x1b')]?_0x4b317e[_0xbc94('0x1b')]['attributes']||null:null,'limit':_0x4b317e[_0xbc94('0x1b')]?_0x4b317e['options'][_0xbc94('0x22')]||null:null})['then'](function(_0x5e128e){logger[_0xbc94('0xe')](_0xbc94('0x1e'),_0x4b317e);logger['debug'](_0xbc94('0x1e'),_0x4b317e,JSON[_0xbc94('0x12')](_0x5e128e));_0x364508(_0x5e128e);})[_0xbc94('0x23')](function(_0x22363e){logger[_0xbc94('0x13')](_0xbc94('0x1e'),_0x22363e[_0xbc94('0x16')],_0x4b317e);_0x498b38(_0x6bbc3[_0xbc94('0x13')](0x1f4,_0x22363e[_0xbc94('0x16')]));});});};
\ No newline at end of file
+var _0x58d6=['attributes','limit','UpdateWhatsappQueueReport','util','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappQueueReport,\x20%s,\x20%s','message','result','CreateWhatsappQueueReport','WhatsappQueueReport','options','raw','update','where'];(function(_0x4a5e85,_0x52ea02){var _0x43f794=function(_0x5b8a10){while(--_0x5b8a10){_0x4a5e85['push'](_0x4a5e85['shift']());}};_0x43f794(++_0x52ea02);}(_0x58d6,0x1d3));var _0x658d=function(_0x576266,_0x4002b0){_0x576266=_0x576266-0x0;var _0x18234f=_0x58d6[_0x576266];return _0x18234f;};'use strict';var _=require('lodash');var util=require(_0x658d('0x0'));var moment=require(_0x658d('0x1'));var BPromise=require('bluebird');var rs=require(_0x658d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x658d('0x3'));var logger=require(_0x658d('0x4'))(_0x658d('0x5'));var config=require(_0x658d('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x658d('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x265995,_0x3360c6,_0x227b64){return new BPromise(function(_0x496abc,_0x3d750d){return client[_0x658d('0x8')](_0x265995,_0x227b64)[_0x658d('0x9')](function(_0x4e3351){logger[_0x658d('0xa')]('WhatsappQueueReport,\x20%s,\x20%s',_0x3360c6,_0x658d('0xb'));logger[_0x658d('0xc')](_0x658d('0xd'),_0x3360c6,'request\x20sent',JSON[_0x658d('0xe')](_0x4e3351));if(_0x4e3351[_0x658d('0xf')]){if(_0x4e3351[_0x658d('0xf')][_0x658d('0x10')]===0x1f4){logger[_0x658d('0xf')](_0x658d('0x11'),_0x3360c6,_0x4e3351[_0x658d('0xf')]['message']);return _0x3d750d(_0x4e3351[_0x658d('0xf')][_0x658d('0x12')]);}logger[_0x658d('0xf')](_0x658d('0x11'),_0x3360c6,_0x4e3351[_0x658d('0xf')][_0x658d('0x12')]);return _0x496abc(_0x4e3351[_0x658d('0xf')][_0x658d('0x12')]);}else{logger[_0x658d('0xa')](_0x658d('0x11'),_0x3360c6,_0x658d('0xb'));_0x496abc(_0x4e3351[_0x658d('0x13')][_0x658d('0x12')]);}})['catch'](function(_0x306254){logger[_0x658d('0xf')](_0x658d('0x11'),_0x3360c6,_0x306254);_0x3d750d(_0x306254);});});}exports[_0x658d('0x14')]=function(_0x8bcf62){var _0x25769e=this;return new Promise(function(_0x13aa47,_0x3cdc74){return db[_0x658d('0x15')]['create'](_0x8bcf62['body'],{'raw':_0x8bcf62[_0x658d('0x16')]?_0x8bcf62[_0x658d('0x16')][_0x658d('0x17')]===undefined?!![]:![]:!![]})[_0x658d('0x9')](function(_0x2f1335){logger[_0x658d('0xa')](_0x658d('0x14'),_0x8bcf62);logger[_0x658d('0xc')](_0x658d('0x14'),_0x8bcf62,JSON['stringify'](_0x2f1335));_0x13aa47(_0x2f1335);})['catch'](function(_0x408996){logger[_0x658d('0xf')]('CreateWhatsappQueueReport',_0x408996[_0x658d('0x12')],_0x8bcf62);_0x3cdc74(_0x25769e[_0x658d('0xf')](0x1f4,_0x408996[_0x658d('0x12')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x4f9418){var _0x246acd=this;return new Promise(function(_0x2d13f6,_0x556ce9){return db[_0x658d('0x15')][_0x658d('0x18')](_0x4f9418['body'],{'raw':_0x4f9418[_0x658d('0x16')]?_0x4f9418[_0x658d('0x16')][_0x658d('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f9418['options']?_0x4f9418[_0x658d('0x16')][_0x658d('0x19')]||null:null,'attributes':_0x4f9418[_0x658d('0x16')]?_0x4f9418[_0x658d('0x16')][_0x658d('0x1a')]||null:null,'limit':_0x4f9418[_0x658d('0x16')]?_0x4f9418[_0x658d('0x16')][_0x658d('0x1b')]||null:null})[_0x658d('0x9')](function(_0x27cccb){logger[_0x658d('0xa')](_0x658d('0x1c'),_0x4f9418);logger['debug'](_0x658d('0x1c'),_0x4f9418,JSON[_0x658d('0xe')](_0x27cccb));_0x2d13f6(_0x27cccb);})['catch'](function(_0x11c191){logger[_0x658d('0xf')](_0x658d('0x1c'),_0x11c191[_0x658d('0x12')],_0x4f9418);_0x556ce9(_0x246acd[_0x658d('0xf')](0x1f4,_0x11c191[_0x658d('0x12')]));});});};
\ No newline at end of file
index aac699b..1d31b76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca95=['put','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/interaction/service','./whatsappTransferReport.controller','isAuthenticated','index','get','describe','/:id','post','create'];(function(_0xc67594,_0x25a6f3){var _0x2f9020=function(_0x24ff53){while(--_0x24ff53){_0xc67594['push'](_0xc67594['shift']());}};_0x2f9020(++_0x25a6f3);}(_0xca95,0x8c));var _0x5ca9=function(_0x5a0787,_0x584d2f){_0x5a0787=_0x5a0787-0x0;var _0x58d3c1=_0xca95[_0x5a0787];return _0x58d3c1;};'use strict';var multer=require(_0x5ca9('0x0'));var util=require('util');var path=require(_0x5ca9('0x1'));var timeout=require(_0x5ca9('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5ca9('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x5ca9('0x4'));var config=require('../../config/environment');var controller=require(_0x5ca9('0x5'));router['get']('/',auth[_0x5ca9('0x6')](),controller[_0x5ca9('0x7')]);router[_0x5ca9('0x8')]('/describe',auth[_0x5ca9('0x6')](),controller[_0x5ca9('0x9')]);router[_0x5ca9('0x8')](_0x5ca9('0xa'),auth[_0x5ca9('0x6')](),controller['show']);router[_0x5ca9('0xb')]('/',auth[_0x5ca9('0x6')](),controller[_0x5ca9('0xc')]);router[_0x5ca9('0xd')]('/:id',auth[_0x5ca9('0x6')](),controller['update']);router[_0x5ca9('0xe')]('/:id',auth[_0x5ca9('0x6')](),controller[_0x5ca9('0xf')]);module[_0x5ca9('0x10')]=router;
\ No newline at end of file
+var _0x63ab=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','update','delete','destroy','exports','multer'];(function(_0x2b5bc9,_0x6a09de){var _0x416745=function(_0x3e61ba){while(--_0x3e61ba){_0x2b5bc9['push'](_0x2b5bc9['shift']());}};_0x416745(++_0x6a09de);}(_0x63ab,0x1b7));var _0xb63a=function(_0xf9cd27,_0x12110b){_0xf9cd27=_0xf9cd27-0x0;var _0x150dd7=_0x63ab[_0xf9cd27];return _0x150dd7;};'use strict';var multer=require(_0xb63a('0x0'));var util=require(_0xb63a('0x1'));var path=require(_0xb63a('0x2'));var timeout=require(_0xb63a('0x3'));var express=require(_0xb63a('0x4'));var router=express[_0xb63a('0x5')]();var fs_extra=require(_0xb63a('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xb63a('0x7'));var config=require(_0xb63a('0x8'));var controller=require(_0xb63a('0x9'));router['get']('/',auth[_0xb63a('0xa')](),controller[_0xb63a('0xb')]);router[_0xb63a('0xc')](_0xb63a('0xd'),auth[_0xb63a('0xa')](),controller[_0xb63a('0xe')]);router[_0xb63a('0xc')](_0xb63a('0xf'),auth[_0xb63a('0xa')](),controller[_0xb63a('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb63a('0x11')]);router['put'](_0xb63a('0xf'),auth[_0xb63a('0xa')](),controller[_0xb63a('0x12')]);router[_0xb63a('0x13')](_0xb63a('0xf'),auth[_0xb63a('0xa')](),controller[_0xb63a('0x14')]);module[_0xb63a('0x15')]=router;
\ No newline at end of file
index 354bb09..c23ffe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ffa=['queue','DATE','STRING','account','agent'];(function(_0x74892f,_0x1e981b){var _0x10ee61=function(_0x3c480a){while(--_0x3c480a){_0x74892f['push'](_0x74892f['shift']());}};_0x10ee61(++_0x1e981b);}(_0x4ffa,0x124));var _0xa4ff=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x4ffa[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xa4ff('0x0')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xa4ff('0x1'),_0xa4ff('0x2'),_0xa4ff('0x3')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xa4ff('0x4')]}};
\ No newline at end of file
+var _0x04d5=['account','agent','DATE','sequelize','exports','ENUM'];(function(_0x1e2e8a,_0x1981c8){var _0x4ca0d1=function(_0x2c9164){while(--_0x2c9164){_0x1e2e8a['push'](_0x1e2e8a['shift']());}};_0x4ca0d1(++_0x1981c8);}(_0x04d5,0xe1));var _0x504d=function(_0x1617df,_0x3ca536){_0x1617df=_0x1617df-0x0;var _0x417f04=_0x04d5[_0x1617df];return _0x417f04;};'use strict';var Sequelize=require(_0x504d('0x0'));module[_0x504d('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x504d('0x2')](_0x504d('0x3'),_0x504d('0x4'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x504d('0x5')]}};
\ No newline at end of file
index 168b54a..badb3b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e8b=['name','send','index','WhatsappTransferReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','map','options','include','findAll','rows','catch','params','includeAll','body','find','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','Content-Range','json','apply','save','update','then','destroy','end','error','stack'];(function(_0x744438,_0x3af742){var _0x28aaa4=function(_0x4dd5ae){while(--_0x4dd5ae){_0x744438['push'](_0x744438['shift']());}};_0x28aaa4(++_0x3af742);}(_0x6e8b,0x156));var _0xb6e8=function(_0x24c963,_0x5f32a4){_0x24c963=_0x24c963-0x0;var _0x32a0eb=_0x6e8b[_0x24c963];return _0x32a0eb;};'use strict';var emlformat=require(_0xb6e8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb6e8('0x1'));var jsonpatch=require(_0xb6e8('0x2'));var rp=require('request-promise');var moment=require(_0xb6e8('0x3'));var BPromise=require(_0xb6e8('0x4'));var Mustache=require(_0xb6e8('0x5'));var util=require(_0xb6e8('0x6'));var path=require(_0xb6e8('0x7'));var sox=require(_0xb6e8('0x8'));var csv=require(_0xb6e8('0x9'));var ejs=require(_0xb6e8('0xa'));var fs=require('fs');var fs_extra=require(_0xb6e8('0xb'));var _=require(_0xb6e8('0xc'));var squel=require(_0xb6e8('0xd'));var crypto=require(_0xb6e8('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xb6e8('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb6e8('0x10'));var Papa=require(_0xb6e8('0x11'));var Redis=require(_0xb6e8('0x12'));var authService=require(_0xb6e8('0x13'));var qs=require(_0xb6e8('0x14'));var as=require(_0xb6e8('0x15'));var hardwareService=require(_0xb6e8('0x16'));var logger=require(_0xb6e8('0x17'))(_0xb6e8('0x18'));var utils=require('../../config/utils');var config=require(_0xb6e8('0x19'));var licenseUtil=require(_0xb6e8('0x1a'));var db=require(_0xb6e8('0x1b'))['db'];function respondWithStatusCode(_0x4d694d,_0x437da8){_0x437da8=_0x437da8||0xcc;return function(_0xcd21be){if(_0xcd21be){return _0x4d694d[_0xb6e8('0x1c')](_0x437da8);}return _0x4d694d[_0xb6e8('0x1d')](_0x437da8)['end']();};}function respondWithResult(_0x4a7c90,_0x29b68d){_0x29b68d=_0x29b68d||0xc8;return function(_0x104f31){if(_0x104f31){return _0x4a7c90[_0xb6e8('0x1d')](_0x29b68d)['json'](_0x104f31);}};}function respondWithFilteredResult(_0x1da1df,_0x187a01){return function(_0x767b3){if(_0x767b3){var _0x5da63c=typeof _0x187a01[_0xb6e8('0x1e')]===_0xb6e8('0x1f')&&typeof _0x187a01['limit']===_0xb6e8('0x1f');var _0x3be6d7=_0x767b3['count'];var _0x2840e5=_0x5da63c?0x0:_0x187a01['offset'];var _0x2a9178=_0x5da63c?_0x767b3['count']:_0x187a01['offset']+_0x187a01[_0xb6e8('0x20')];var _0x281fe2;if(_0x2a9178>=_0x3be6d7){_0x2a9178=_0x3be6d7;_0x281fe2=0xc8;}else{_0x281fe2=0xce;}_0x1da1df[_0xb6e8('0x1d')](_0x281fe2);return _0x1da1df['set'](_0xb6e8('0x21'),_0x2840e5+'-'+_0x2a9178+'/'+_0x3be6d7)[_0xb6e8('0x22')](_0x767b3);}return null;};}function patchUpdates(_0x234345){return function(_0x403daf){try{jsonpatch[_0xb6e8('0x23')](_0x403daf,_0x234345,!![]);}catch(_0x3562ee){return BPromise['reject'](_0x3562ee);}return _0x403daf[_0xb6e8('0x24')]();};}function saveUpdates(_0xd41b65,_0x21e56c){return function(_0x436cb2){if(_0x436cb2){return _0x436cb2[_0xb6e8('0x25')](_0xd41b65)[_0xb6e8('0x26')](function(_0x4679da){return _0x4679da;});}return null;};}function removeEntity(_0x352550,_0x2bf98e){return function(_0x4cc93c){if(_0x4cc93c){return _0x4cc93c[_0xb6e8('0x27')]()[_0xb6e8('0x26')](function(){_0x352550[_0xb6e8('0x1d')](0xcc)[_0xb6e8('0x28')]();});}};}function handleEntityNotFound(_0x1ef13e,_0x2ab339){return function(_0x2d660f){if(!_0x2d660f){_0x1ef13e[_0xb6e8('0x1c')](0x194);}return _0x2d660f;};}function handleError(_0x521e0d,_0x2595d1){_0x2595d1=_0x2595d1||0x1f4;return function(_0x5c7faf){logger[_0xb6e8('0x29')](_0x5c7faf[_0xb6e8('0x2a')]);if(_0x5c7faf[_0xb6e8('0x2b')]){delete _0x5c7faf['name'];}_0x521e0d[_0xb6e8('0x1d')](_0x2595d1)[_0xb6e8('0x2c')](_0x5c7faf);};}exports[_0xb6e8('0x2d')]=function(_0x4f6962,_0x4c5a8d){var _0x2034eb={},_0x28637e={},_0x2b6ba1={'count':0x0,'rows':[]};var _0x2f9bfe=_['map'](db[_0xb6e8('0x2e')][_0xb6e8('0x2f')],function(_0x312e18){return{'name':_0x312e18[_0xb6e8('0x30')],'type':_0x312e18[_0xb6e8('0x31')][_0xb6e8('0x32')]};});_0x28637e[_0xb6e8('0x33')]=_['map'](_0x2f9bfe,_0xb6e8('0x2b'));_0x28637e[_0xb6e8('0x34')]=_[_0xb6e8('0x35')](_0x4f6962['query']);_0x28637e['filters']=_[_0xb6e8('0x36')](_0x28637e[_0xb6e8('0x33')],_0x28637e['query']);_0x2034eb[_0xb6e8('0x37')]=_['intersection'](_0x28637e[_0xb6e8('0x33')],qs[_0xb6e8('0x38')](_0x4f6962['query'][_0xb6e8('0x38')]));_0x2034eb[_0xb6e8('0x37')]=_0x2034eb['attributes'][_0xb6e8('0x39')]?_0x2034eb[_0xb6e8('0x37')]:_0x28637e[_0xb6e8('0x33')];if(!_0x4f6962[_0xb6e8('0x34')]['hasOwnProperty'](_0xb6e8('0x3a'))){_0x2034eb[_0xb6e8('0x20')]=qs['limit'](_0x4f6962['query'][_0xb6e8('0x20')]);_0x2034eb['offset']=qs[_0xb6e8('0x1e')](_0x4f6962[_0xb6e8('0x34')][_0xb6e8('0x1e')]);}_0x2034eb[_0xb6e8('0x3b')]=qs[_0xb6e8('0x3c')](_0x4f6962[_0xb6e8('0x34')][_0xb6e8('0x3c')]);_0x2034eb[_0xb6e8('0x3d')]=qs[_0xb6e8('0x3e')](_[_0xb6e8('0x3f')](_0x4f6962[_0xb6e8('0x34')],_0x28637e[_0xb6e8('0x3e')]),_0x2f9bfe);if(_0x4f6962['query'][_0xb6e8('0x40')]){_0x2034eb[_0xb6e8('0x3d')]=_[_0xb6e8('0x41')](_0x2034eb[_0xb6e8('0x3d')],{'$or':_[_0xb6e8('0x42')](_0x2f9bfe,function(_0xb8dfce){if(_0xb8dfce[_0xb6e8('0x31')]!=='VIRTUAL'){var _0x2e280c={};_0x2e280c[_0xb8dfce[_0xb6e8('0x2b')]]={'$like':'%'+_0x4f6962[_0xb6e8('0x34')][_0xb6e8('0x40')]+'%'};return _0x2e280c;}})});}_0x2034eb=_[_0xb6e8('0x41')]({},_0x2034eb,_0x4f6962[_0xb6e8('0x43')]);var _0x155a96={'where':_0x2034eb[_0xb6e8('0x3d')]};return db[_0xb6e8('0x2e')]['count'](_0x155a96)[_0xb6e8('0x26')](function(_0x20bda4){_0x2b6ba1['count']=_0x20bda4;if(_0x4f6962[_0xb6e8('0x34')]['includeAll']){_0x2034eb[_0xb6e8('0x44')]=[{'all':!![]}];}return db[_0xb6e8('0x2e')][_0xb6e8('0x45')](_0x2034eb);})[_0xb6e8('0x26')](function(_0x1b2ba6){_0x2b6ba1[_0xb6e8('0x46')]=_0x1b2ba6;return _0x2b6ba1;})[_0xb6e8('0x26')](respondWithFilteredResult(_0x4c5a8d,_0x2034eb))[_0xb6e8('0x47')](handleError(_0x4c5a8d,null));};exports['show']=function(_0x3fa6d1,_0x5eed4d){var _0x27e5fc={'raw':!![],'where':{'id':_0x3fa6d1[_0xb6e8('0x48')]['id']}},_0x2e54e0={};_0x2e54e0[_0xb6e8('0x33')]=_[_0xb6e8('0x35')](db[_0xb6e8('0x2e')][_0xb6e8('0x2f')]);_0x2e54e0[_0xb6e8('0x34')]=_[_0xb6e8('0x35')](_0x3fa6d1[_0xb6e8('0x34')]);_0x2e54e0[_0xb6e8('0x3e')]=_[_0xb6e8('0x36')](_0x2e54e0[_0xb6e8('0x33')],_0x2e54e0[_0xb6e8('0x34')]);_0x27e5fc[_0xb6e8('0x37')]=_[_0xb6e8('0x36')](_0x2e54e0[_0xb6e8('0x33')],qs[_0xb6e8('0x38')](_0x3fa6d1[_0xb6e8('0x34')][_0xb6e8('0x38')]));_0x27e5fc[_0xb6e8('0x37')]=_0x27e5fc[_0xb6e8('0x37')][_0xb6e8('0x39')]?_0x27e5fc[_0xb6e8('0x37')]:_0x2e54e0[_0xb6e8('0x33')];if(_0x3fa6d1[_0xb6e8('0x34')][_0xb6e8('0x49')]){_0x27e5fc[_0xb6e8('0x44')]=[{'all':!![]}];}_0x27e5fc=_[_0xb6e8('0x41')]({},_0x27e5fc,_0x3fa6d1[_0xb6e8('0x43')]);return db[_0xb6e8('0x2e')]['find'](_0x27e5fc)[_0xb6e8('0x26')](handleEntityNotFound(_0x5eed4d,null))[_0xb6e8('0x26')](respondWithResult(_0x5eed4d,null))['catch'](handleError(_0x5eed4d,null));};exports['create']=function(_0x17fb00,_0x32b086){return db[_0xb6e8('0x2e')]['create'](_0x17fb00[_0xb6e8('0x4a')],{})[_0xb6e8('0x26')](respondWithResult(_0x32b086,0xc9))[_0xb6e8('0x47')](handleError(_0x32b086,null));};exports[_0xb6e8('0x25')]=function(_0x4dc51f,_0x56a489){if(_0x4dc51f[_0xb6e8('0x4a')]['id']){delete _0x4dc51f[_0xb6e8('0x4a')]['id'];}return db[_0xb6e8('0x2e')][_0xb6e8('0x4b')]({'where':{'id':_0x4dc51f[_0xb6e8('0x48')]['id']}})[_0xb6e8('0x26')](handleEntityNotFound(_0x56a489,null))[_0xb6e8('0x26')](saveUpdates(_0x4dc51f['body'],null))[_0xb6e8('0x26')](respondWithResult(_0x56a489,null))[_0xb6e8('0x47')](handleError(_0x56a489,null));};exports[_0xb6e8('0x27')]=function(_0x5923ae,_0x571b95){return db[_0xb6e8('0x2e')][_0xb6e8('0x4b')]({'where':{'id':_0x5923ae[_0xb6e8('0x48')]['id']}})[_0xb6e8('0x26')](handleEntityNotFound(_0x571b95,null))[_0xb6e8('0x26')](removeEntity(_0x571b95,null))[_0xb6e8('0x47')](handleError(_0x571b95,null));};exports[_0xb6e8('0x4c')]=function(_0x3d9c19,_0x2278b2){return db['WhatsappTransferReport'][_0xb6e8('0x4c')]()[_0xb6e8('0x26')](respondWithResult(_0x2278b2,null))[_0xb6e8('0x47')](handleError(_0x2278b2,null));};
\ No newline at end of file
+var _0xa467=['filter','merge','VIRTUAL','options','includeAll','include','show','params','rawAttributes','find','create','body','catch','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','save','then','destroy','error','stack','name','send','index','WhatsappTransferReport','fieldName','type','key','model','map','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x484c58,_0x59814b){var _0x715b13=function(_0x5be3ec){while(--_0x5be3ec){_0x484c58['push'](_0x484c58['shift']());}};_0x715b13(++_0x59814b);}(_0xa467,0x143));var _0x7a46=function(_0x197692,_0x394a6a){_0x197692=_0x197692-0x0;var _0x35c35b=_0xa467[_0x197692];return _0x35c35b;};'use strict';var emlformat=require(_0x7a46('0x0'));var rimraf=require(_0x7a46('0x1'));var zipdir=require(_0x7a46('0x2'));var jsonpatch=require(_0x7a46('0x3'));var rp=require(_0x7a46('0x4'));var moment=require(_0x7a46('0x5'));var BPromise=require(_0x7a46('0x6'));var Mustache=require(_0x7a46('0x7'));var util=require(_0x7a46('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x7a46('0x9'));var ejs=require(_0x7a46('0xa'));var fs=require('fs');var fs_extra=require(_0x7a46('0xb'));var _=require(_0x7a46('0xc'));var squel=require(_0x7a46('0xd'));var crypto=require('crypto');var jsforce=require(_0x7a46('0xe'));var deskjs=require(_0x7a46('0xf'));var toCsv=require(_0x7a46('0x9'));var querystring=require(_0x7a46('0x10'));var Papa=require(_0x7a46('0x11'));var Redis=require(_0x7a46('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x7a46('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7a46('0x14'));var logger=require('../../config/logger')(_0x7a46('0x15'));var utils=require(_0x7a46('0x16'));var config=require(_0x7a46('0x17'));var licenseUtil=require(_0x7a46('0x18'));var db=require(_0x7a46('0x19'))['db'];function respondWithStatusCode(_0x5da2d3,_0x3ab309){_0x3ab309=_0x3ab309||0xcc;return function(_0x5fa58a){if(_0x5fa58a){return _0x5da2d3[_0x7a46('0x1a')](_0x3ab309);}return _0x5da2d3[_0x7a46('0x1b')](_0x3ab309)[_0x7a46('0x1c')]();};}function respondWithResult(_0x571a46,_0x78220){_0x78220=_0x78220||0xc8;return function(_0x53fd6a){if(_0x53fd6a){return _0x571a46['status'](_0x78220)[_0x7a46('0x1d')](_0x53fd6a);}};}function respondWithFilteredResult(_0x30acd7,_0x5e4f9d){return function(_0x32d58d){if(_0x32d58d){var _0x50704f=typeof _0x5e4f9d[_0x7a46('0x1e')]===_0x7a46('0x1f')&&typeof _0x5e4f9d['limit']===_0x7a46('0x1f');var _0x548cab=_0x32d58d[_0x7a46('0x20')];var _0x3aa0ad=_0x50704f?0x0:_0x5e4f9d[_0x7a46('0x1e')];var _0x279fc8=_0x50704f?_0x32d58d['count']:_0x5e4f9d[_0x7a46('0x1e')]+_0x5e4f9d[_0x7a46('0x21')];var _0x4b96d2;if(_0x279fc8>=_0x548cab){_0x279fc8=_0x548cab;_0x4b96d2=0xc8;}else{_0x4b96d2=0xce;}_0x30acd7[_0x7a46('0x1b')](_0x4b96d2);return _0x30acd7[_0x7a46('0x22')]('Content-Range',_0x3aa0ad+'-'+_0x279fc8+'/'+_0x548cab)['json'](_0x32d58d);}return null;};}function patchUpdates(_0x2cb5b3){return function(_0x1d5766){try{jsonpatch[_0x7a46('0x23')](_0x1d5766,_0x2cb5b3,!![]);}catch(_0x23d54e){return BPromise['reject'](_0x23d54e);}return _0x1d5766[_0x7a46('0x24')]();};}function saveUpdates(_0x2dc8cc,_0x5e9cb5){return function(_0x536e54){if(_0x536e54){return _0x536e54['update'](_0x2dc8cc)[_0x7a46('0x25')](function(_0x99c7ab){return _0x99c7ab;});}return null;};}function removeEntity(_0x57b669,_0x46512d){return function(_0x4b104b){if(_0x4b104b){return _0x4b104b[_0x7a46('0x26')]()[_0x7a46('0x25')](function(){_0x57b669['status'](0xcc)[_0x7a46('0x1c')]();});}};}function handleEntityNotFound(_0x1222ae,_0x107fff){return function(_0x3d9ae4){if(!_0x3d9ae4){_0x1222ae[_0x7a46('0x1a')](0x194);}return _0x3d9ae4;};}function handleError(_0x42f852,_0x27f001){_0x27f001=_0x27f001||0x1f4;return function(_0x595c66){logger[_0x7a46('0x27')](_0x595c66[_0x7a46('0x28')]);if(_0x595c66[_0x7a46('0x29')]){delete _0x595c66[_0x7a46('0x29')];}_0x42f852[_0x7a46('0x1b')](_0x27f001)[_0x7a46('0x2a')](_0x595c66);};}exports[_0x7a46('0x2b')]=function(_0x4d2b68,_0x1c276b){var _0x27b243={},_0x3b35dd={},_0xca2b9b={'count':0x0,'rows':[]};var _0x2b9500=_['map'](db[_0x7a46('0x2c')]['rawAttributes'],function(_0x5b423f){return{'name':_0x5b423f[_0x7a46('0x2d')],'type':_0x5b423f[_0x7a46('0x2e')][_0x7a46('0x2f')]};});_0x3b35dd[_0x7a46('0x30')]=_[_0x7a46('0x31')](_0x2b9500,'name');_0x3b35dd['query']=_[_0x7a46('0x32')](_0x4d2b68[_0x7a46('0x33')]);_0x3b35dd[_0x7a46('0x34')]=_['intersection'](_0x3b35dd[_0x7a46('0x30')],_0x3b35dd[_0x7a46('0x33')]);_0x27b243[_0x7a46('0x35')]=_[_0x7a46('0x36')](_0x3b35dd[_0x7a46('0x30')],qs[_0x7a46('0x37')](_0x4d2b68[_0x7a46('0x33')][_0x7a46('0x37')]));_0x27b243[_0x7a46('0x35')]=_0x27b243[_0x7a46('0x35')][_0x7a46('0x38')]?_0x27b243[_0x7a46('0x35')]:_0x3b35dd[_0x7a46('0x30')];if(!_0x4d2b68[_0x7a46('0x33')][_0x7a46('0x39')](_0x7a46('0x3a'))){_0x27b243['limit']=qs['limit'](_0x4d2b68[_0x7a46('0x33')][_0x7a46('0x21')]);_0x27b243[_0x7a46('0x1e')]=qs[_0x7a46('0x1e')](_0x4d2b68['query'][_0x7a46('0x1e')]);}_0x27b243[_0x7a46('0x3b')]=qs['sort'](_0x4d2b68[_0x7a46('0x33')][_0x7a46('0x3c')]);_0x27b243[_0x7a46('0x3d')]=qs['filters'](_['pick'](_0x4d2b68[_0x7a46('0x33')],_0x3b35dd[_0x7a46('0x34')]),_0x2b9500);if(_0x4d2b68[_0x7a46('0x33')][_0x7a46('0x3e')]){_0x27b243[_0x7a46('0x3d')]=_[_0x7a46('0x3f')](_0x27b243[_0x7a46('0x3d')],{'$or':_['map'](_0x2b9500,function(_0x517054){if(_0x517054[_0x7a46('0x2e')]!==_0x7a46('0x40')){var _0x50233e={};_0x50233e[_0x517054[_0x7a46('0x29')]]={'$like':'%'+_0x4d2b68[_0x7a46('0x33')][_0x7a46('0x3e')]+'%'};return _0x50233e;}})});}_0x27b243=_[_0x7a46('0x3f')]({},_0x27b243,_0x4d2b68[_0x7a46('0x41')]);var _0x3630a2={'where':_0x27b243[_0x7a46('0x3d')]};return db[_0x7a46('0x2c')][_0x7a46('0x20')](_0x3630a2)['then'](function(_0x332ba0){_0xca2b9b[_0x7a46('0x20')]=_0x332ba0;if(_0x4d2b68[_0x7a46('0x33')][_0x7a46('0x42')]){_0x27b243[_0x7a46('0x43')]=[{'all':!![]}];}return db[_0x7a46('0x2c')]['findAll'](_0x27b243);})[_0x7a46('0x25')](function(_0x328d25){_0xca2b9b['rows']=_0x328d25;return _0xca2b9b;})[_0x7a46('0x25')](respondWithFilteredResult(_0x1c276b,_0x27b243))['catch'](handleError(_0x1c276b,null));};exports[_0x7a46('0x44')]=function(_0x3776a3,_0xf75969){var _0x3df66b={'raw':!![],'where':{'id':_0x3776a3[_0x7a46('0x45')]['id']}},_0x221c29={};_0x221c29[_0x7a46('0x30')]=_['keys'](db[_0x7a46('0x2c')][_0x7a46('0x46')]);_0x221c29[_0x7a46('0x33')]=_['keys'](_0x3776a3[_0x7a46('0x33')]);_0x221c29[_0x7a46('0x34')]=_[_0x7a46('0x36')](_0x221c29['model'],_0x221c29[_0x7a46('0x33')]);_0x3df66b[_0x7a46('0x35')]=_[_0x7a46('0x36')](_0x221c29[_0x7a46('0x30')],qs['fields'](_0x3776a3['query'][_0x7a46('0x37')]));_0x3df66b[_0x7a46('0x35')]=_0x3df66b[_0x7a46('0x35')][_0x7a46('0x38')]?_0x3df66b['attributes']:_0x221c29[_0x7a46('0x30')];if(_0x3776a3[_0x7a46('0x33')][_0x7a46('0x42')]){_0x3df66b[_0x7a46('0x43')]=[{'all':!![]}];}_0x3df66b=_[_0x7a46('0x3f')]({},_0x3df66b,_0x3776a3['options']);return db[_0x7a46('0x2c')][_0x7a46('0x47')](_0x3df66b)['then'](handleEntityNotFound(_0xf75969,null))[_0x7a46('0x25')](respondWithResult(_0xf75969,null))['catch'](handleError(_0xf75969,null));};exports['create']=function(_0xb60717,_0x54f129){return db['WhatsappTransferReport'][_0x7a46('0x48')](_0xb60717[_0x7a46('0x49')],{})[_0x7a46('0x25')](respondWithResult(_0x54f129,0xc9))[_0x7a46('0x4a')](handleError(_0x54f129,null));};exports[_0x7a46('0x4b')]=function(_0x1bb3cb,_0xafef25){if(_0x1bb3cb[_0x7a46('0x49')]['id']){delete _0x1bb3cb[_0x7a46('0x49')]['id'];}return db[_0x7a46('0x2c')][_0x7a46('0x47')]({'where':{'id':_0x1bb3cb[_0x7a46('0x45')]['id']}})[_0x7a46('0x25')](handleEntityNotFound(_0xafef25,null))[_0x7a46('0x25')](saveUpdates(_0x1bb3cb[_0x7a46('0x49')],null))['then'](respondWithResult(_0xafef25,null))[_0x7a46('0x4a')](handleError(_0xafef25,null));};exports[_0x7a46('0x26')]=function(_0x4f7e87,_0x498275){return db[_0x7a46('0x2c')][_0x7a46('0x47')]({'where':{'id':_0x4f7e87['params']['id']}})[_0x7a46('0x25')](handleEntityNotFound(_0x498275,null))[_0x7a46('0x25')](removeEntity(_0x498275,null))[_0x7a46('0x4a')](handleError(_0x498275,null));};exports[_0x7a46('0x4c')]=function(_0x22ef3c,_0x2e0809){return db[_0x7a46('0x2c')][_0x7a46('0x4c')]()[_0x7a46('0x25')](respondWithResult(_0x2e0809,null))[_0x7a46('0x4a')](handleError(_0x2e0809,null));};
\ No newline at end of file
index 03449dc..38ae77f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4df5=['path','../../config/environment','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x182fff,_0x568aee){var _0x1b4171=function(_0x212d46){while(--_0x212d46){_0x182fff['push'](_0x182fff['shift']());}};_0x1b4171(++_0x568aee);}(_0x4df5,0xad));var _0x54df=function(_0x2ad83c,_0x5495e){_0x2ad83c=_0x2ad83c-0x0;var _0x3062dd=_0x4df5[_0x2ad83c];return _0x3062dd;};'use strict';var _=require(_0x54df('0x0'));var util=require(_0x54df('0x1'));var logger=require(_0x54df('0x2'))(_0x54df('0x3'));var moment=require(_0x54df('0x4'));var BPromise=require(_0x54df('0x5'));var rp=require(_0x54df('0x6'));var fs=require('fs');var path=require(_0x54df('0x7'));var rimraf=require('rimraf');var config=require(_0x54df('0x8'));var attributes=require(_0x54df('0x9'));module[_0x54df('0xa')]=function(_0x40b71e,_0x362e42){return _0x40b71e[_0x54df('0xb')](_0x54df('0xc'),attributes,{'tableName':_0x54df('0xd'),'paranoid':![],'indexes':[{'name':_0x54df('0xe'),'fields':[_0x54df('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x21e8=['WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./whatsappTransferReport.attributes','exports','define'];(function(_0x45ee82,_0x3cb58b){var _0x48c06d=function(_0x1ebd47){while(--_0x1ebd47){_0x45ee82['push'](_0x45ee82['shift']());}};_0x48c06d(++_0x3cb58b);}(_0x21e8,0x129));var _0x821e=function(_0x259661,_0x282946){_0x259661=_0x259661-0x0;var _0xc3da4=_0x21e8[_0x259661];return _0xc3da4;};'use strict';var _=require(_0x821e('0x0'));var util=require('util');var logger=require(_0x821e('0x1'))(_0x821e('0x2'));var moment=require(_0x821e('0x3'));var BPromise=require(_0x821e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x821e('0x5'));var rimraf=require(_0x821e('0x6'));var config=require(_0x821e('0x7'));var attributes=require(_0x821e('0x8'));module[_0x821e('0x9')]=function(_0x3fbfc8,_0x479dbd){return _0x3fbfc8[_0x821e('0xa')](_0x821e('0xb'),attributes,{'tableName':_0x821e('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x821e('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 4f5726a..8894600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef6d=['info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then'];(function(_0x1a4a06,_0x36a5c2){var _0x49ec08=function(_0x497f24){while(--_0x497f24){_0x1a4a06['push'](_0x1a4a06['shift']());}};_0x49ec08(++_0x36a5c2);}(_0xef6d,0xa4));var _0xdef6=function(_0x9562cd,_0x1f422f){_0x9562cd=_0x9562cd-0x0;var _0x10cef0=_0xef6d[_0x9562cd];return _0x10cef0;};'use strict';var _=require('lodash');var util=require(_0xdef6('0x0'));var moment=require(_0xdef6('0x1'));var BPromise=require(_0xdef6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdef6('0x3'));var db=require(_0xdef6('0x4'))['db'];var utils=require(_0xdef6('0x5'));var logger=require(_0xdef6('0x6'))(_0xdef6('0x7'));var config=require('../../config/environment');var jayson=require(_0xdef6('0x8'));var client=jayson[_0xdef6('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xd1295a,_0x51d962,_0x2d58e5){return new BPromise(function(_0x56eec3,_0x2de7ee){return client[_0xdef6('0xa')](_0xd1295a,_0x2d58e5)[_0xdef6('0xb')](function(_0x112626){logger[_0xdef6('0xc')](_0xdef6('0xd'),_0x51d962,_0xdef6('0xe'));logger['debug'](_0xdef6('0xf'),_0x51d962,_0xdef6('0xe'),JSON[_0xdef6('0x10')](_0x112626));if(_0x112626[_0xdef6('0x11')]){if(_0x112626[_0xdef6('0x11')][_0xdef6('0x12')]===0x1f4){logger[_0xdef6('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x51d962,_0x112626[_0xdef6('0x11')]['message']);return _0x2de7ee(_0x112626[_0xdef6('0x11')]['message']);}logger[_0xdef6('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x51d962,_0x112626['error'][_0xdef6('0x13')]);return _0x56eec3(_0x112626[_0xdef6('0x11')][_0xdef6('0x13')]);}else{logger['info'](_0xdef6('0xd'),_0x51d962,_0xdef6('0xe'));_0x56eec3(_0x112626[_0xdef6('0x14')][_0xdef6('0x13')]);}})[_0xdef6('0x15')](function(_0x234505){logger[_0xdef6('0x11')](_0xdef6('0xd'),_0x51d962,_0x234505);_0x2de7ee(_0x234505);});});}
\ No newline at end of file
+var _0x98f7=['code','error','WhatsappTransferReport,\x20%s,\x20%s','message','result','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x584eee,_0x4ea2de){var _0x4e9b6c=function(_0x13f980){while(--_0x13f980){_0x584eee['push'](_0x584eee['shift']());}};_0x4e9b6c(++_0x4ea2de);}(_0x98f7,0xcb));var _0x798f=function(_0x330cfe,_0x293034){_0x330cfe=_0x330cfe-0x0;var _0x3a80f5=_0x98f7[_0x330cfe];return _0x3a80f5;};'use strict';var _=require(_0x798f('0x0'));var util=require('util');var moment=require(_0x798f('0x1'));var BPromise=require('bluebird');var rs=require(_0x798f('0x2'));var fs=require('fs');var Redis=require(_0x798f('0x3'));var db=require(_0x798f('0x4'))['db'];var utils=require(_0x798f('0x5'));var logger=require(_0x798f('0x6'))(_0x798f('0x7'));var config=require(_0x798f('0x8'));var jayson=require(_0x798f('0x9'));var client=jayson['client'][_0x798f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5a8d44,_0x18b623,_0xa15783){return new BPromise(function(_0x4d9cb0,_0x1700cf){return client[_0x798f('0xb')](_0x5a8d44,_0xa15783)[_0x798f('0xc')](function(_0x34bd63){logger[_0x798f('0xd')]('WhatsappTransferReport,\x20%s,\x20%s',_0x18b623,'request\x20sent');logger[_0x798f('0xe')](_0x798f('0xf'),_0x18b623,_0x798f('0x10'),JSON['stringify'](_0x34bd63));if(_0x34bd63['error']){if(_0x34bd63['error'][_0x798f('0x11')]===0x1f4){logger[_0x798f('0x12')](_0x798f('0x13'),_0x18b623,_0x34bd63['error'][_0x798f('0x14')]);return _0x1700cf(_0x34bd63[_0x798f('0x12')][_0x798f('0x14')]);}logger[_0x798f('0x12')](_0x798f('0x13'),_0x18b623,_0x34bd63[_0x798f('0x12')]['message']);return _0x4d9cb0(_0x34bd63[_0x798f('0x12')]['message']);}else{logger['info'](_0x798f('0x13'),_0x18b623,_0x798f('0x10'));_0x4d9cb0(_0x34bd63[_0x798f('0x15')]['message']);}})['catch'](function(_0x427015){logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x18b623,_0x427015);_0x1700cf(_0x427015);});});}
\ No newline at end of file
index 50a15f2..277afce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7737=['catch','error','exit','lodash','./mysqldb','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','sync','listen','info','start','then','map','filter','name','join','Offline\x20apps:','None','seedDB','./config/seedDB','default'];(function(_0x3116ce,_0x4741d6){var _0x2934cf=function(_0x3ad0d2){while(--_0x3ad0d2){_0x3116ce['push'](_0x3116ce['shift']());}};_0x2934cf(++_0x4741d6);}(_0x7737,0x1d3));var _0x7773=function(_0x1866ea,_0x547489){_0x1866ea=_0x1866ea-0x0;var _0x34f90a=_0x7737[_0x1866ea];return _0x34f90a;};'use strict';var _=require(_0x7773('0x0'));var mysqldb=require(_0x7773('0x1'));var rpc=require('./rpc');var config=require(_0x7773('0x2'));var logger=require(_0x7773('0x3'))(_0x7773('0x4'));var pm2=require(_0x7773('0x5'));var pm2Config=require(_0x7773('0x6'));var schedule=require(_0x7773('0x7'));var chat=require(_0x7773('0x8'));var whatsapp=require(_0x7773('0x9'));var transcribe=require(_0x7773('0xa'));function main(){return mysqldb['db'][_0x7773('0xb')][_0x7773('0xc')]()['then'](function(){return rpc[_0x7773('0xd')]();})['then'](function(_0x5b93c3){logger[_0x7773('0xe')](_0x5b93c3);return chat[_0x7773('0xf')]();})[_0x7773('0x10')](function(){return whatsapp[_0x7773('0xf')]();})[_0x7773('0x10')](function(){return schedule[_0x7773('0xf')]();})[_0x7773('0x10')](function(){return transcribe[_0x7773('0xf')]();})['then'](function(_0x358bfe){logger[_0x7773('0xe')](_0x358bfe);return pm2[_0x7773('0xf')](pm2Config);})[_0x7773('0x10')](function(_0x3d372c){logger['info']('Online\x20apps:',_[_0x7773('0x11')](_[_0x7773('0x12')](_0x3d372c,{'status':'online'}),_0x7773('0x13'))[_0x7773('0x14')]());logger['info'](_0x7773('0x15'),_['map'](_[_0x7773('0x12')](_0x3d372c,function(_0x17c52b){return _0x17c52b['status']!=='online';}),_0x7773('0x13'))['join']()||_0x7773('0x16'));config[_0x7773('0x17')]&&require(_0x7773('0x18'))[_0x7773('0x19')]();require('./config/license')[_0x7773('0x19')]();})[_0x7773('0x1a')](function(_0x34dcb7){logger[_0x7773('0x1b')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x34dcb7);process[_0x7773('0x1c')](0x1);});}main();
\ No newline at end of file
+var _0xec82=['error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','sequelize','sync','then','info','start','Online\x20apps:','map','filter','name','Offline\x20apps:','status','join','./config/seedDB','default','./config/license'];(function(_0x1b2bc7,_0x37e78b){var _0x2bcf5b=function(_0x1e804b){while(--_0x1e804b){_0x1b2bc7['push'](_0x1b2bc7['shift']());}};_0x2bcf5b(++_0x37e78b);}(_0xec82,0xab));var _0x2ec8=function(_0x425b0a,_0x1a892e){_0x425b0a=_0x425b0a-0x0;var _0x39314c=_0xec82[_0x425b0a];return _0x39314c;};'use strict';var _=require(_0x2ec8('0x0'));var mysqldb=require('./mysqldb');var rpc=require(_0x2ec8('0x1'));var config=require(_0x2ec8('0x2'));var logger=require(_0x2ec8('0x3'))(_0x2ec8('0x4'));var pm2=require(_0x2ec8('0x5'));var pm2Config=require(_0x2ec8('0x6'));var schedule=require(_0x2ec8('0x7'));var chat=require(_0x2ec8('0x8'));var whatsapp=require(_0x2ec8('0x9'));var transcribe=require('./config/schedule/transcribe');function main(){return mysqldb['db'][_0x2ec8('0xa')][_0x2ec8('0xb')]()['then'](function(){return rpc['listen']();})[_0x2ec8('0xc')](function(_0x301a07){logger[_0x2ec8('0xd')](_0x301a07);return chat[_0x2ec8('0xe')]();})['then'](function(){return whatsapp[_0x2ec8('0xe')]();})[_0x2ec8('0xc')](function(){return schedule[_0x2ec8('0xe')]();})[_0x2ec8('0xc')](function(){return transcribe[_0x2ec8('0xe')]();})['then'](function(_0xbd8d44){logger[_0x2ec8('0xd')](_0xbd8d44);return pm2[_0x2ec8('0xe')](pm2Config);})[_0x2ec8('0xc')](function(_0x2fddae){logger[_0x2ec8('0xd')](_0x2ec8('0xf'),_[_0x2ec8('0x10')](_[_0x2ec8('0x11')](_0x2fddae,{'status':'online'}),_0x2ec8('0x12'))['join']());logger['info'](_0x2ec8('0x13'),_[_0x2ec8('0x10')](_[_0x2ec8('0x11')](_0x2fddae,function(_0x1933a3){return _0x1933a3[_0x2ec8('0x14')]!=='online';}),_0x2ec8('0x12'))[_0x2ec8('0x15')]()||'None');config['seedDB']&&require(_0x2ec8('0x16'))[_0x2ec8('0x17')]();require(_0x2ec8('0x18'))[_0x2ec8('0x17')]();})['catch'](function(_0x5d0121){logger[_0x2ec8('0x19')](_0x2ec8('0x1a'),_0x5d0121);process[_0x2ec8('0x1b')](0x1);});}main();
\ No newline at end of file
index 9159ee1..ee386b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8375=['generateApiKey','apiKeyIat','regenerateApiKey','validatePasswordPattern','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','splice','unshift','encryptString','join','sign','secret','payload','options','promisify','verify','randomBytes','toString','floor','now','HS512','../../mysqldb','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','moment','secrets','session','role','fullname','name','internal','email','userpic','permissions','voicePause','chatPause','mailPause','smsPause','openchannelPause','pauseType','showWebBar','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isChatInteractionAuthorized','use','user','ChatInteraction','findOne','params','closed','status','disposition','unmanaged','json','Unmanaged.','catch','isAuthenticated','headers','authorization','startsWith','User','authenticate','pass','Wrong\x20credentials.','Unknown\x20authorization\x20format','query','apikey','getUuid','find','sub','then','Setting','allowedLoginAttempts','blockDuration','isEqual','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','isMiddleware','signToken','setTokenCookie','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyNonce'];(function(_0x58e02c,_0x4f0eb0){var _0x46164e=function(_0x55225f){while(--_0x55225f){_0x58e02c['push'](_0x58e02c['shift']());}};_0x46164e(++_0x4f0eb0);}(_0x8375,0x123));var _0x5837=function(_0x4ecd18,_0x408619){_0x4ecd18=_0x4ecd18-0x0;var _0x20b919=_0x8375[_0x4ecd18];return _0x20b919;};'use strict';var db=require(_0x5837('0x0'))['db'];var config=require('../../config/environment');var hardwareConf=require(_0x5837('0x1'));var licenseUtil=require(_0x5837('0x2'));var encryptor=require(_0x5837('0x3'));var _=require(_0x5837('0x4'));var jwt=require(_0x5837('0x5'));var expressJwt=require(_0x5837('0x6'));var compose=require(_0x5837('0x7'));var basicAuth=require(_0x5837('0x8'));var crypto=require('crypto');var BPromise=require('bluebird');var util=require('util');var moment=require(_0x5837('0x9'));var validateJwt=expressJwt({'secret':config[_0x5837('0xa')][_0x5837('0xb')]});var userAttributes=['id',_0x5837('0xc'),_0x5837('0xd'),_0x5837('0xe'),_0x5837('0xf'),_0x5837('0x10'),_0x5837('0x11'),_0x5837('0x12'),'md5secret',_0x5837('0x13'),_0x5837('0x14'),_0x5837('0x15'),'faxPause',_0x5837('0x16'),_0x5837('0x17'),_0x5837('0x18'),_0x5837('0x19'),'lastLoginAt','lastPauseAt','crudPermissions',_0x5837('0x1a'),_0x5837('0x1b'),_0x5837('0x1c'),_0x5837('0x1d'),_0x5837('0x1e'),_0x5837('0x1f'),_0x5837('0x20'),_0x5837('0x21'),_0x5837('0x22'),'phoneBarExpires',_0x5837('0x23'),_0x5837('0x24'),_0x5837('0x25'),_0x5837('0x26'),_0x5837('0x27'),_0x5837('0x28'),_0x5837('0x29'),_0x5837('0x2a'),_0x5837('0x2b'),_0x5837('0x2c'),_0x5837('0x2d'),_0x5837('0x2e')];exports[_0x5837('0x2f')]=function(){return this['isAuthenticated'](!![])[_0x5837('0x30')](function(_0x3f1a29,_0xb6683d,_0x5811bd){if(_0x3f1a29[_0x5837('0x31')]){_0x5811bd();}else{return db[_0x5837('0x32')][_0x5837('0x33')]({'where':{'id':_0x3f1a29[_0x5837('0x34')]['id']},'attributes':['id',_0x5837('0x35'),'disposition'],'raw':!![]})['then'](function(_0x4d42d1){if(_0x4d42d1&&_0x4d42d1[_0x5837('0x35')]){return _0xb6683d[_0x5837('0x36')](_0x4d42d1[_0x5837('0x37')]===_0x5837('0x38')?0x195:0x193)[_0x5837('0x39')]({'message':_0x4d42d1[_0x5837('0x37')]===_0x5837('0x38')?_0x5837('0x3a'):'Forbidden.'});}else{_0x5811bd();}})[_0x5837('0x3b')](function(_0x527059){_0x5811bd(_0x527059);});}});};exports[_0x5837('0x3c')]=function isAuthenticated(_0x1ae4d6){return compose()[_0x5837('0x30')](function(_0x4b762c,_0x3df7bd,_0x32ad66){var _0x47a369;if(_0x4b762c[_0x5837('0x3d')][_0x5837('0x3e')]){if(_[_0x5837('0x3f')](_0x4b762c[_0x5837('0x3d')][_0x5837('0x3e')],'Basic')){var _0x57211e=basicAuth(_0x4b762c);db[_0x5837('0x40')]['find']({'where':{'name':_0x57211e[_0x5837('0xe')]}})['then'](function(_0x3cd0a6){if(!_0x3cd0a6||!_0x3cd0a6[_0x5837('0x41')](_0x57211e[_0x5837('0x42')])){return _0x3df7bd[_0x5837('0x36')](0x191)['json']({'message':_0x5837('0x43')});}_0x4b762c[_0x5837('0x31')]={'id':_0x3cd0a6['id']};_0x32ad66();})[_0x5837('0x3b')](function(_0x33f87e){_0x32ad66(_0x33f87e);});}else if(_[_0x5837('0x3f')](_0x4b762c[_0x5837('0x3d')][_0x5837('0x3e')],'Bearer')){validateJwt(_0x4b762c,_0x3df7bd,_0x32ad66);}else{if(_0x1ae4d6){_0x32ad66();}else{return _0x3df7bd['status'](0x193)[_0x5837('0x39')]({'message':_0x5837('0x44')});}}}else if(_0x4b762c[_0x5837('0x45')][_0x5837('0x46')]){try{var _0x249807={'audience':hardwareConf[_0x5837('0x47')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x4b762c[_0x5837('0x45')][_0x5837('0x46')],_0x249807)['then'](function(_0x3a65b2){return db[_0x5837('0x40')][_0x5837('0x48')]({'where':{'id':_0x3a65b2[_0x5837('0x49')]}})[_0x5837('0x4a')](function(_0x5250ce){_0x47a369=_0x5250ce;return db[_0x5837('0x4b')][_0x5837('0x33')]({'where':{'id':0x1},'attributes':[_0x5837('0x4c'),_0x5837('0x4d')],'raw':!![]});})[_0x5837('0x4a')](function(_0x40e757){if(!_0x47a369||!_[_0x5837('0x4e')](_0x47a369['apiKeyNonce'],_0x3a65b2[_0x5837('0x4f')])){return _0x3df7bd['status'](0x191)[_0x5837('0x39')]({'message':_0x5837('0x50')});}if(_0x47a369[_0x5837('0x51')]){return _0x3df7bd[_0x5837('0x36')](0x191)['json']({'message':_0x5837('0x52')});}if(_0x47a369[_0x5837('0x53')]){if(_0x40e757[_0x5837('0x4d')]>0x0){if(moment(_0x47a369[_0x5837('0x54')])[_0x5837('0x55')](_0x40e757['blockDuration'],_0x5837('0x56'))>moment()){return _0x3df7bd['status'](0x191)[_0x5837('0x39')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x3df7bd[_0x5837('0x36')](0x191)['json']({'message':'Invalid\x20API\x20access\x20key'});}}_0x4b762c[_0x5837('0x31')]={'id':_0x47a369['id']};_0x32ad66();});})['catch'](function(){return _0x3df7bd[_0x5837('0x36')](0x191)[_0x5837('0x39')]({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0x101a36){_0x32ad66(_0x101a36);}}else if(_0x1ae4d6){_0x32ad66();}else{return _0x3df7bd['status'](0x193)[_0x5837('0x39')]({'message':_0x5837('0x44')});}})[_0x5837('0x30')](function(_0x18d230,_0x3a0683,_0x54b006){if(_0x18d230[_0x5837('0x31')]){db[_0x5837('0x40')]['find']({'where':{'id':_0x18d230[_0x5837('0x31')]['id']},'attributes':userAttributes})[_0x5837('0x4a')](function(_0x472637){if(!_0x472637){return _0x3a0683[_0x5837('0x36')](0x194)[_0x5837('0x39')]({'message':_0x5837('0x57')});}_0x18d230[_0x5837('0x31')]=_0x472637;_0x54b006();})[_0x5837('0x3b')](function(_0x4a8ccd){_0x54b006(_0x4a8ccd);});}else if(_0x1ae4d6){_0x54b006();}else{return _0x3a0683['status'](0x194)['json']({'message':_0x5837('0x58')});}});};exports[_0x5837('0x59')]=function canUpdate(){return compose()[_0x5837('0x30')](function(_0x403bf4,_0x10575e,_0x53207d){return licenseUtil[_0x5837('0x5a')]()[_0x5837('0x4a')](function(_0x4237e7){if(_0x4237e7['update']){_0x53207d();}else{return _0x10575e[_0x5837('0x36')](0x193)['json']({'message':'Forbidden'});}})[_0x5837('0x3b')](function(_0x40deee){_0x53207d(_0x40deee);});});};exports[_0x5837('0x5b')]=function(_0x345a29,_0x458848,_0x580680){_0x345a29[_0x5837('0x5b')]=!![];return _0x580680();};exports[_0x5837('0x5c')]=function signToken(_0x47409f){return signJwt(_0x47409f);};exports[_0x5837('0x5d')]=function(_0x1645b8,_0x4b0779){if(!_0x1645b8[_0x5837('0x31')]){return _0x4b0779[_0x5837('0x36')](0x194)[_0x5837('0x39')]({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x43bc44={'payload':{'id':_0x1645b8[_0x5837('0x31')]['id'],'role':_0x1645b8[_0x5837('0x31')][_0x5837('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x43bc44)[_0x5837('0x4a')](function(_0xc6a92c){_0x4b0779[_0x5837('0x5e')](_0x5837('0x5f'),_0xc6a92c);_0x4b0779[_0x5837('0x60')](_0x5837('0x61'));})[_0x5837('0x3b')](function(_0x37cc9f){return _0x4b0779[_0x5837('0x36')](0x1f4)[_0x5837('0x62')](_0x37cc9f);});};exports[_0x5837('0x63')]=function(_0x406779){if(_[_0x5837('0x64')](_0x406779[_0x5837('0x65')])||_[_0x5837('0x64')](_0x406779['apiKeyIat'])){return null;}else{return createJwt(_0x406779);}};exports[_0x5837('0x66')]=function(_0x5ee78d){_0x5ee78d['apiKeyNonce']=generateNonce();_0x5ee78d[_0x5837('0x67')]=generateIssuedAt();return createJwt(_0x5ee78d);};exports[_0x5837('0x68')]=function(_0x552eec,_0x1558d9){var _0x1ad7fc=_0x552eec[_0x5837('0x45')]['apikey'];if(_0x1ad7fc){var _0x499ede={'nonce':_0x1558d9['apiKeyNonce'],'iat':_0x1558d9[_0x5837('0x67')],'audience':hardwareConf[_0x5837('0x47')](),'issuer':hardwareConf[_0x5837('0x47')]()};return verifyJwt(_0x1ad7fc,_0x499ede)[_0x5837('0x4a')](function(){return generateApiKey(_0x1558d9);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0x5837('0x69')]=function(_0x4de0a8){var _0x57525b=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x57525b['test'](_0x4de0a8))throw new db[(_0x5837('0x6a'))][(_0x5837('0x6b'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');return;};exports[_0x5837('0x6c')]=function(_0x42bec0,_0x357218,_0x6542a1){var _0xed7441=encryptor[_0x5837('0x6d')](_0x357218)[_0x5837('0x6e')](',');for(var _0x52323a=0x0;_0x52323a<_0x6542a1;_0x52323a++){if(!_0xed7441[_0x52323a])break;if(_0x42bec0[_0x5837('0x6f')]()===_0xed7441[_0x52323a][_0x5837('0x6f')]()){var _0x4e4cae=util[_0x5837('0x70')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x6542a1);if(_0x6542a1===0x1){_0x4e4cae=_0x5837('0x71');}throw new db[(_0x5837('0x6a'))][(_0x5837('0x6b'))](_0x4e4cae);}}return;};exports[_0x5837('0x72')]=function(_0x4b0033,_0x399e37){var _0x40a9f4=_0x399e37?encryptor[_0x5837('0x6d')](_0x399e37)[_0x5837('0x6e')](','):[];if(_0x40a9f4[_0x5837('0x73')]===0x5){_0x40a9f4[_0x5837('0x74')](-0x1,0x1);}_0x40a9f4[_0x5837('0x75')](_0x4b0033);return encryptor[_0x5837('0x76')](_0x40a9f4[_0x5837('0x77')](','));};function signJwt(_0x28f5ef){var _0x3ff843=BPromise['promisify'](jwt[_0x5837('0x78')],{'context':jwt});var _0x1a4092=_0x28f5ef[_0x5837('0x79')]||config[_0x5837('0xa')][_0x5837('0xb')];return new BPromise(function(_0x401175,_0x37524c){_0x3ff843(_0x28f5ef[_0x5837('0x7a')],_0x1a4092,_0x28f5ef[_0x5837('0x7b')])['then'](function(_0x30243c){_0x401175(_0x30243c);})['catch'](function(_0x17292d){_0x37524c(_0x17292d);});});}function verifyJwt(_0xee55ac,_0x3e8872,_0x244a9a){var _0x2b8159=BPromise[_0x5837('0x7c')](jwt[_0x5837('0x7d')],{'context':jwt});var _0x493808=_0x244a9a||config['secrets']['session'];return new BPromise(function(_0x4c7b03,_0x35099f){_0x2b8159(_0xee55ac,_0x493808,_0x3e8872)['then'](function(_0xec465d){_0x4c7b03(_0xec465d);})[_0x5837('0x3b')](function(_0x11490d){_0x35099f(_0x11490d);});});}function generateNonce(){return crypto[_0x5837('0x7e')](0x10)[_0x5837('0x7f')]('hex');}function generateIssuedAt(){return Math[_0x5837('0x80')](Date[_0x5837('0x81')]()/0x3e8)['toString']();}function createJwt(_0x5a22e0){var _0x4d05f0={'payload':{'iat':_0x5a22e0[_0x5837('0x67')],'nonce':_0x5a22e0[_0x5837('0x65')]},'options':{'algorithm':_0x5837('0x82'),'subject':_0x5a22e0['id'][_0x5837('0x7f')](),'issuer':hardwareConf[_0x5837('0x47')](),'audience':hardwareConf[_0x5837('0x47')]()}};return signJwt(_0x4d05f0)['then'](function(_0x5d7b46){return{'iat':_0x5a22e0['apiKeyIat'],'nonce':_0x5a22e0[_0x5837('0x65')],'token':_0x5d7b46};});}
\ No newline at end of file
+var _0xb32e=['closed','disposition','then','status','unmanaged','json','catch','isAuthenticated','headers','authorization','startsWith','Basic','User','find','name','authenticate','pass','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','apikey','getUuid','query','Setting','allowedLoginAttempts','blockDuration','isEqual','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','Invalid\x20API\x20access\x20key','blockedAt','minutes','canUpdate','update','Forbidden','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','role','motion.token','redirect','/dashboards/general','retrieveApiKey','isNil','apiKeyNonce','apiKeyIat','generateApiKey','regenerateApiKey','validatePasswordPattern','test','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','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.','Sequelize','splice','encryptString','promisify','secret','secrets','options','verify','randomBytes','toString','floor','../../mysqldb','../../config/environment','../../config/license/util','jsonwebtoken','express-jwt','composable-middleware','basic-auth','bluebird','util','moment','session','fullname','internal','email','chatPause','mailPause','faxPause','openchannelPause','pauseType','lastLoginAt','lastPauseAt','crudPermissions','passwordResetAt','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarPrefixRequired','phoneBarRemoteControl','hotdesk','interface','userProfileId','privacyEnabled','wssPort','downloadOmnichannelInteractions','isChatInteractionAuthorized','use','user','ChatInteraction','findOne'];(function(_0xefc4fe,_0x5a5075){var _0x23ff7f=function(_0x400c0c){while(--_0x400c0c){_0xefc4fe['push'](_0xefc4fe['shift']());}};_0x23ff7f(++_0x5a5075);}(_0xb32e,0x18c));var _0xeb32=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb32e[_0x20a584];return _0x4b41a8;};'use strict';var db=require(_0xeb32('0x0'))['db'];var config=require(_0xeb32('0x1'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0xeb32('0x2'));var encryptor=require('../encryptor');var _=require('lodash');var jwt=require(_0xeb32('0x3'));var expressJwt=require(_0xeb32('0x4'));var compose=require(_0xeb32('0x5'));var basicAuth=require(_0xeb32('0x6'));var crypto=require('crypto');var BPromise=require(_0xeb32('0x7'));var util=require(_0xeb32('0x8'));var moment=require(_0xeb32('0x9'));var validateJwt=expressJwt({'secret':config['secrets'][_0xeb32('0xa')]});var userAttributes=['id','role',_0xeb32('0xb'),'name',_0xeb32('0xc'),_0xeb32('0xd'),'userpic','permissions','md5secret','voicePause',_0xeb32('0xe'),_0xeb32('0xf'),_0xeb32('0x10'),'smsPause',_0xeb32('0x11'),_0xeb32('0x12'),'showWebBar',_0xeb32('0x13'),_0xeb32('0x14'),_0xeb32('0x15'),'allowmessenger',_0xeb32('0x16'),'alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay',_0xeb32('0x17'),_0xeb32('0x18'),_0xeb32('0x19'),_0xeb32('0x1a'),'phoneBarExpires',_0xeb32('0x1b'),_0xeb32('0x1c'),'phoneBarRemoteControlPort',_0xeb32('0x1d'),_0xeb32('0x1e'),_0xeb32('0x1f'),_0xeb32('0x20'),'settingsEnabled',_0xeb32('0x21'),'downloadVoiceRecordings',_0xeb32('0x22'),'downloadAttachments'];exports[_0xeb32('0x23')]=function(){return this['isAuthenticated'](!![])[_0xeb32('0x24')](function(_0x138ff5,_0x44a575,_0x5270fe){if(_0x138ff5[_0xeb32('0x25')]){_0x5270fe();}else{return db[_0xeb32('0x26')][_0xeb32('0x27')]({'where':{'id':_0x138ff5['params']['id']},'attributes':['id',_0xeb32('0x28'),_0xeb32('0x29')],'raw':!![]})[_0xeb32('0x2a')](function(_0x27154){if(_0x27154&&_0x27154[_0xeb32('0x28')]){return _0x44a575[_0xeb32('0x2b')](_0x27154[_0xeb32('0x29')]===_0xeb32('0x2c')?0x195:0x193)[_0xeb32('0x2d')]({'message':_0x27154[_0xeb32('0x29')]==='unmanaged'?'Unmanaged.':'Forbidden.'});}else{_0x5270fe();}})[_0xeb32('0x2e')](function(_0x321d67){_0x5270fe(_0x321d67);});}});};exports[_0xeb32('0x2f')]=function isAuthenticated(_0x42b9fe){return compose()[_0xeb32('0x24')](function(_0x47fb7c,_0x479cb0,_0x46399d){var _0x5a1ec4;if(_0x47fb7c[_0xeb32('0x30')][_0xeb32('0x31')]){if(_[_0xeb32('0x32')](_0x47fb7c['headers'][_0xeb32('0x31')],_0xeb32('0x33'))){var _0x3ae53d=basicAuth(_0x47fb7c);db[_0xeb32('0x34')][_0xeb32('0x35')]({'where':{'name':_0x3ae53d[_0xeb32('0x36')]}})['then'](function(_0x2bc018){if(!_0x2bc018||!_0x2bc018[_0xeb32('0x37')](_0x3ae53d[_0xeb32('0x38')])){return _0x479cb0[_0xeb32('0x2b')](0x191)['json']({'message':_0xeb32('0x39')});}_0x47fb7c[_0xeb32('0x25')]={'id':_0x2bc018['id']};_0x46399d();})[_0xeb32('0x2e')](function(_0x3dce0f){_0x46399d(_0x3dce0f);});}else if(_[_0xeb32('0x32')](_0x47fb7c['headers'][_0xeb32('0x31')],_0xeb32('0x3a'))){validateJwt(_0x47fb7c,_0x479cb0,_0x46399d);}else{if(_0x42b9fe){_0x46399d();}else{return _0x479cb0[_0xeb32('0x2b')](0x193)[_0xeb32('0x2d')]({'message':_0xeb32('0x3b')});}}}else if(_0x47fb7c['query'][_0xeb32('0x3c')]){try{var _0x36ef1d={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xeb32('0x3d')]()};verifyJwt(_0x47fb7c[_0xeb32('0x3e')][_0xeb32('0x3c')],_0x36ef1d)[_0xeb32('0x2a')](function(_0x42614c){return db[_0xeb32('0x34')]['find']({'where':{'id':_0x42614c['sub']}})[_0xeb32('0x2a')](function(_0x51e01a){_0x5a1ec4=_0x51e01a;return db[_0xeb32('0x3f')]['findOne']({'where':{'id':0x1},'attributes':[_0xeb32('0x40'),_0xeb32('0x41')],'raw':!![]});})[_0xeb32('0x2a')](function(_0x5e02dc){if(!_0x5a1ec4||!_[_0xeb32('0x42')](_0x5a1ec4['apiKeyNonce'],_0x42614c['nonce'])){return _0x479cb0[_0xeb32('0x2b')](0x191)['json']({'message':_0xeb32('0x43')});}if(_0x5a1ec4['disabled']){return _0x479cb0[_0xeb32('0x2b')](0x191)[_0xeb32('0x2d')]({'message':_0xeb32('0x44')});}if(_0x5a1ec4['blocked']){if(_0x5e02dc['blockDuration']>0x0){if(moment(_0x5a1ec4[_0xeb32('0x45')])['add'](_0x5e02dc[_0xeb32('0x41')],_0xeb32('0x46'))>moment()){return _0x479cb0[_0xeb32('0x2b')](0x191)['json']({'message':_0xeb32('0x44')});}}else{return _0x479cb0['status'](0x191)['json']({'message':_0xeb32('0x44')});}}_0x47fb7c[_0xeb32('0x25')]={'id':_0x5a1ec4['id']};_0x46399d();});})[_0xeb32('0x2e')](function(){return _0x479cb0[_0xeb32('0x2b')](0x191)[_0xeb32('0x2d')]({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0x11969f){_0x46399d(_0x11969f);}}else if(_0x42b9fe){_0x46399d();}else{return _0x479cb0['status'](0x193)[_0xeb32('0x2d')]({'message':'Unknown\x20authorization\x20format'});}})[_0xeb32('0x24')](function(_0x496bf6,_0xcda1f9,_0x526322){if(_0x496bf6[_0xeb32('0x25')]){db[_0xeb32('0x34')][_0xeb32('0x35')]({'where':{'id':_0x496bf6[_0xeb32('0x25')]['id']},'attributes':userAttributes})[_0xeb32('0x2a')](function(_0x25b404){if(!_0x25b404){return _0xcda1f9[_0xeb32('0x2b')](0x194)[_0xeb32('0x2d')]({'message':'User\x20not\x20found.'});}_0x496bf6['user']=_0x25b404;_0x526322();})['catch'](function(_0x47b29c){_0x526322(_0x47b29c);});}else if(_0x42b9fe){_0x526322();}else{return _0xcda1f9[_0xeb32('0x2b')](0x194)['json']({'message':'User\x20object\x20not\x20found.'});}});};exports[_0xeb32('0x47')]=function canUpdate(){return compose()[_0xeb32('0x24')](function(_0x1dbacd,_0x4866f3,_0x3c719f){return licenseUtil['getLicense']()[_0xeb32('0x2a')](function(_0x3a4ad5){if(_0x3a4ad5[_0xeb32('0x48')]){_0x3c719f();}else{return _0x4866f3['status'](0x193)['json']({'message':_0xeb32('0x49')});}})[_0xeb32('0x2e')](function(_0x205c8b){_0x3c719f(_0x205c8b);});});};exports['isMiddleware']=function(_0x13a476,_0x260752,_0x37a195){_0x13a476[_0xeb32('0x4a')]=!![];return _0x37a195();};exports[_0xeb32('0x4b')]=function signToken(_0x38fd32){return signJwt(_0x38fd32);};exports[_0xeb32('0x4c')]=function(_0x3f3670,_0x6f079e){if(!_0x3f3670['user']){return _0x6f079e[_0xeb32('0x2b')](0x194)[_0xeb32('0x2d')]({'message':_0xeb32('0x4d')});}var _0x61015={'payload':{'id':_0x3f3670[_0xeb32('0x25')]['id'],'role':_0x3f3670[_0xeb32('0x25')][_0xeb32('0x4e')]},'options':{'expiresIn':0x15180}};return signJwt(_0x61015)[_0xeb32('0x2a')](function(_0x1215ba){_0x6f079e['cookie'](_0xeb32('0x4f'),_0x1215ba);_0x6f079e[_0xeb32('0x50')](_0xeb32('0x51'));})[_0xeb32('0x2e')](function(_0x5361fc){return _0x6f079e[_0xeb32('0x2b')](0x1f4)['send'](_0x5361fc);});};exports[_0xeb32('0x52')]=function(_0x11e236){if(_[_0xeb32('0x53')](_0x11e236[_0xeb32('0x54')])||_['isNil'](_0x11e236[_0xeb32('0x55')])){return null;}else{return createJwt(_0x11e236);}};exports[_0xeb32('0x56')]=function(_0x4472c6){_0x4472c6[_0xeb32('0x54')]=generateNonce();_0x4472c6[_0xeb32('0x55')]=generateIssuedAt();return createJwt(_0x4472c6);};exports[_0xeb32('0x57')]=function(_0x40f1e9,_0x1f87cd){var _0x3de741=_0x40f1e9['query'][_0xeb32('0x3c')];if(_0x3de741){var _0x5bdf76={'nonce':_0x1f87cd[_0xeb32('0x54')],'iat':_0x1f87cd[_0xeb32('0x55')],'audience':hardwareConf[_0xeb32('0x3d')](),'issuer':hardwareConf[_0xeb32('0x3d')]()};return verifyJwt(_0x3de741,_0x5bdf76)[_0xeb32('0x2a')](function(){return generateApiKey(_0x1f87cd);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0xeb32('0x58')]=function(_0x135814){var _0x129c12=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x129c12[_0xeb32('0x59')](_0x135814))throw new db['Sequelize'][(_0xeb32('0x5a'))](_0xeb32('0x5b'));return;};exports[_0xeb32('0x5c')]=function(_0x27a0d9,_0x2c02e9,_0x565f7e){var _0xd6fd48=encryptor[_0xeb32('0x5d')](_0x2c02e9)[_0xeb32('0x5e')](',');for(var _0x291f1e=0x0;_0x291f1e<_0x565f7e;_0x291f1e++){if(!_0xd6fd48[_0x291f1e])break;if(_0x27a0d9['toLowerCase']()===_0xd6fd48[_0x291f1e][_0xeb32('0x5f')]()){var _0x1c75af=util['format'](_0xeb32('0x60'),_0x565f7e);if(_0x565f7e===0x1){_0x1c75af=_0xeb32('0x61');}throw new db[(_0xeb32('0x62'))][(_0xeb32('0x5a'))](_0x1c75af);}}return;};exports['updatePasswordsHistory']=function(_0x4da013,_0x3a774d){var _0x214d1b=_0x3a774d?encryptor['decryptString'](_0x3a774d)[_0xeb32('0x5e')](','):[];if(_0x214d1b['length']===0x5){_0x214d1b[_0xeb32('0x63')](-0x1,0x1);}_0x214d1b['unshift'](_0x4da013);return encryptor[_0xeb32('0x64')](_0x214d1b['join'](','));};function signJwt(_0x15fad4){var _0x44e0ed=BPromise[_0xeb32('0x65')](jwt['sign'],{'context':jwt});var _0x149451=_0x15fad4[_0xeb32('0x66')]||config[_0xeb32('0x67')][_0xeb32('0xa')];return new BPromise(function(_0x185c9e,_0x3d32fc){_0x44e0ed(_0x15fad4['payload'],_0x149451,_0x15fad4[_0xeb32('0x68')])[_0xeb32('0x2a')](function(_0xf3c27){_0x185c9e(_0xf3c27);})['catch'](function(_0x4b1310){_0x3d32fc(_0x4b1310);});});}function verifyJwt(_0x340bce,_0x2ba582,_0x490742){var _0x222543=BPromise[_0xeb32('0x65')](jwt[_0xeb32('0x69')],{'context':jwt});var _0x291ecf=_0x490742||config['secrets'][_0xeb32('0xa')];return new BPromise(function(_0x254cd2,_0x53390e){_0x222543(_0x340bce,_0x291ecf,_0x2ba582)[_0xeb32('0x2a')](function(_0xf7f0d9){_0x254cd2(_0xf7f0d9);})[_0xeb32('0x2e')](function(_0x5acffe){_0x53390e(_0x5acffe);});});}function generateNonce(){return crypto[_0xeb32('0x6a')](0x10)[_0xeb32('0x6b')]('hex');}function generateIssuedAt(){return Math[_0xeb32('0x6c')](Date['now']()/0x3e8)[_0xeb32('0x6b')]();}function createJwt(_0x5f0fc3){var _0x3ffe95={'payload':{'iat':_0x5f0fc3[_0xeb32('0x55')],'nonce':_0x5f0fc3['apiKeyNonce']},'options':{'algorithm':'HS512','subject':_0x5f0fc3['id'][_0xeb32('0x6b')](),'issuer':hardwareConf[_0xeb32('0x3d')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x3ffe95)[_0xeb32('0x2a')](function(_0x5eadc4){return{'iat':_0x5f0fc3[_0xeb32('0x55')],'nonce':_0x5f0fc3['apiKeyNonce'],'token':_0x5eadc4};});}
\ No newline at end of file
index 9544aee..628252a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c2b=['utf8','base64','createDecipher','crypto','bluebird','lodash','../../config/environment','app','session','aes-256-ctr','aes192','encrypt','algorithm','join','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createWriteStream','data','update','write','end','final','binary','close','decryptFile','unlink','secret','createCipher'];(function(_0x2fe647,_0x4478c5){var _0x3a59f8=function(_0x147073){while(--_0x147073){_0x2fe647['push'](_0x2fe647['shift']());}};_0x3a59f8(++_0x4478c5);}(_0x8c2b,0x12c));var _0xb8c2=function(_0x2e2c76,_0x377881){_0x2e2c76=_0x2e2c76-0x0;var _0x33481c=_0x8c2b[_0x2e2c76];return _0x33481c;};'use strict';var crypto=require(_0xb8c2('0x0'));var fs=require('fs');var BPromise=require(_0xb8c2('0x1'));var _=require(_0xb8c2('0x2'));var config=require(_0xb8c2('0x3'));var logger=require('../../config/logger')(_0xb8c2('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0xb8c2('0x5')],'algorithm':_0xb8c2('0x6')};const fileOptions={'algorithm':_0xb8c2('0x7')};if(config[_0xb8c2('0x8')]&&config[_0xb8c2('0x8')][_0xb8c2('0x9')]){var isSupported=isAlgorithmSupported(config[_0xb8c2('0x8')][_0xb8c2('0x9')]);if(isSupported){fileOptions[_0xb8c2('0x9')]=config[_0xb8c2('0x8')][_0xb8c2('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xb8c2('0xa')](',\x20');logger['error'](config[_0xb8c2('0x8')][_0xb8c2('0x9')],'is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:',supportedAlgorithms);}}function isASupportedCipher(_0x335e79){return AES_SUPPORTED_RX[_0xb8c2('0xb')](_0x335e79);}function getSupportedCiphers(){return crypto[_0xb8c2('0xc')]()[_0xb8c2('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0xce188){return getSupportedCiphers()[_0xb8c2('0xe')](_0xce188)>-0x1;}function combineOptions(_0x39fd3d){var _0x4101f3={};for(var _0x378432 in fileOptions){if(fileOptions[_0xb8c2('0xf')](_0x378432)){_0x4101f3[_0x378432]=fileOptions[_0x378432];}}if(_0x39fd3d){for(var _0x24bde2 in _0x39fd3d){if(_0x39fd3d['hasOwnProperty'](_0x24bde2)){_0x4101f3[_0x24bde2]=_0x39fd3d[_0x24bde2];}}}return _0x4101f3;}exports[_0xb8c2('0x10')]=function(_0x2ccfd,_0x4ca989,_0x15efda,_0x12e193){return new BPromise(function(_0x36962d,_0x5a5b0b){_0x12e193=combineOptions(_0x12e193);var _0x46b9c1=new Buffer(_0x15efda);var _0x4e46d0=fs[_0xb8c2('0x11')](_0x2ccfd);var _0x53f571=fs[_0xb8c2('0x12')](_0x4ca989);var _0x32c317=crypto['createCipher'](_0x12e193[_0xb8c2('0x9')],_0x46b9c1);_0x4e46d0['on'](_0xb8c2('0x13'),function(_0x4d94de){var _0x10e660=new Buffer(_0x32c317[_0xb8c2('0x14')](_0x4d94de),'binary');_0x53f571[_0xb8c2('0x15')](_0x10e660);});_0x4e46d0['on'](_0xb8c2('0x16'),function(){try{var _0x5a07ec=new Buffer(_0x32c317[_0xb8c2('0x17')](_0xb8c2('0x18')),_0xb8c2('0x18'));_0x53f571[_0xb8c2('0x15')](_0x5a07ec);_0x53f571[_0xb8c2('0x16')]();_0x53f571['on'](_0xb8c2('0x19'),function(){return _0x36962d(_0x4ca989);});}catch(_0x1fa254){fs['unlink'](_0x4ca989);return _0x5a5b0b(_0x1fa254);}});});};exports[_0xb8c2('0x1a')]=function(_0x580034,_0x4e56d9,_0x3f5e91,_0xde68e2){return new BPromise(function(_0x3d6f7d,_0x53ec0c){_0xde68e2=combineOptions(_0xde68e2);var _0x1489cb=new Buffer(_0x3f5e91);var _0x1080c6=fs[_0xb8c2('0x11')](_0x580034);var _0x258b24=fs[_0xb8c2('0x12')](_0x4e56d9);var _0x3933ed=crypto['createDecipher'](_0xde68e2['algorithm'],_0x1489cb);_0x1080c6['on'](_0xb8c2('0x13'),function(_0x461d19){var _0x5e678e=new Buffer(_0x3933ed[_0xb8c2('0x14')](_0x461d19),_0xb8c2('0x18'));_0x258b24['write'](_0x5e678e);});_0x1080c6['on'](_0xb8c2('0x16'),function(){try{var _0x53c63=new Buffer(_0x3933ed[_0xb8c2('0x17')](_0xb8c2('0x18')),_0xb8c2('0x18'));_0x258b24[_0xb8c2('0x15')](_0x53c63);_0x258b24[_0xb8c2('0x16')]();_0x258b24['on'](_0xb8c2('0x19'),function(){return _0x3d6f7d(_0x4e56d9);});}catch(_0x27311c){fs[_0xb8c2('0x1b')](_0x4e56d9);return _0x53ec0c(_0x27311c);}});});};exports['encryptString']=function(_0x53523d,_0xd91b7b,_0x218ef0){var _0x43fae4=_0x218ef0||stringOptions['algorithm'];var _0x18368a=_0xd91b7b||stringOptions[_0xb8c2('0x1c')];var _0x2f735b=crypto[_0xb8c2('0x1d')](_0x43fae4,_0x18368a);var _0x4e9b69=_0x2f735b[_0xb8c2('0x14')](_0x53523d,_0xb8c2('0x1e'),_0xb8c2('0x1f'));_0x4e9b69+=_0x2f735b[_0xb8c2('0x17')](_0xb8c2('0x1f'));return _0x4e9b69;};exports['decryptString']=function(_0x49ad85,_0x411ade,_0x1721d9){var _0x130b52=_0x1721d9||stringOptions[_0xb8c2('0x9')];var _0x565da9=_0x411ade||stringOptions[_0xb8c2('0x1c')];var _0x2e5d62=crypto[_0xb8c2('0x20')](_0x130b52,_0x565da9);var _0x51c933=_0x2e5d62['update'](_0x49ad85,_0xb8c2('0x1f'),_0xb8c2('0x1e'));_0x51c933+=_0x2e5d62[_0xb8c2('0x17')](_0xb8c2('0x1e'));return _0x51c933;};
\ No newline at end of file
+var _0xeffa=['close','createReadStream','createWriteStream','createDecipher','update','final','utf8','decryptString','secret','base64','crypto','bluebird','lodash','../../config/environment','../../config/logger','app','secrets','aes-256-ctr','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createCipher','data','binary','write','end'];(function(_0x1094f3,_0x45d327){var _0x514995=function(_0x3179ea){while(--_0x3179ea){_0x1094f3['push'](_0x1094f3['shift']());}};_0x514995(++_0x45d327);}(_0xeffa,0x96));var _0xaeff=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0xeffa[_0x1e4360];return _0x31e6b4;};'use strict';var crypto=require(_0xaeff('0x0'));var fs=require('fs');var BPromise=require(_0xaeff('0x1'));var _=require(_0xaeff('0x2'));var config=require(_0xaeff('0x3'));var logger=require(_0xaeff('0x4'))(_0xaeff('0x5'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xaeff('0x6')]['session'],'algorithm':_0xaeff('0x7')};const fileOptions={'algorithm':_0xaeff('0x8')};if(config['encrypt']&&config['encrypt']['algorithm']){var isSupported=isAlgorithmSupported(config[_0xaeff('0x9')][_0xaeff('0xa')]);if(isSupported){fileOptions[_0xaeff('0xa')]=config['encrypt'][_0xaeff('0xa')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xaeff('0xb')](',\x20');logger[_0xaeff('0xc')](config[_0xaeff('0x9')]['algorithm'],_0xaeff('0xd'),supportedAlgorithms);}}function isASupportedCipher(_0x28abf7){return AES_SUPPORTED_RX[_0xaeff('0xe')](_0x28abf7);}function getSupportedCiphers(){return crypto[_0xaeff('0xf')]()[_0xaeff('0x10')](isASupportedCipher);}function isAlgorithmSupported(_0x2bd1cd){return getSupportedCiphers()[_0xaeff('0x11')](_0x2bd1cd)>-0x1;}function combineOptions(_0x8653ae){var _0x252af5={};for(var _0x3c23da in fileOptions){if(fileOptions[_0xaeff('0x12')](_0x3c23da)){_0x252af5[_0x3c23da]=fileOptions[_0x3c23da];}}if(_0x8653ae){for(var _0x32ba47 in _0x8653ae){if(_0x8653ae[_0xaeff('0x12')](_0x32ba47)){_0x252af5[_0x32ba47]=_0x8653ae[_0x32ba47];}}}return _0x252af5;}exports[_0xaeff('0x13')]=function(_0x41d5b9,_0x3938ce,_0x4a26e3,_0x2cb422){return new BPromise(function(_0x4d8ef3,_0x1a4dd0){_0x2cb422=combineOptions(_0x2cb422);var _0x3ba3b2=new Buffer(_0x4a26e3);var _0x30f03e=fs['createReadStream'](_0x41d5b9);var _0x2bd09c=fs['createWriteStream'](_0x3938ce);var _0x5903c9=crypto[_0xaeff('0x14')](_0x2cb422[_0xaeff('0xa')],_0x3ba3b2);_0x30f03e['on'](_0xaeff('0x15'),function(_0x44de39){var _0x334368=new Buffer(_0x5903c9['update'](_0x44de39),_0xaeff('0x16'));_0x2bd09c[_0xaeff('0x17')](_0x334368);});_0x30f03e['on'](_0xaeff('0x18'),function(){try{var _0x2390b1=new Buffer(_0x5903c9['final'](_0xaeff('0x16')),_0xaeff('0x16'));_0x2bd09c[_0xaeff('0x17')](_0x2390b1);_0x2bd09c[_0xaeff('0x18')]();_0x2bd09c['on'](_0xaeff('0x19'),function(){return _0x4d8ef3(_0x3938ce);});}catch(_0x514ec1){fs['unlink'](_0x3938ce);return _0x1a4dd0(_0x514ec1);}});});};exports['decryptFile']=function(_0x4a310a,_0x171a8b,_0x10b037,_0x18d8de){return new BPromise(function(_0x433141,_0x2c1913){_0x18d8de=combineOptions(_0x18d8de);var _0x4bb035=new Buffer(_0x10b037);var _0x556b4f=fs[_0xaeff('0x1a')](_0x4a310a);var _0x52b056=fs[_0xaeff('0x1b')](_0x171a8b);var _0x4497cc=crypto[_0xaeff('0x1c')](_0x18d8de[_0xaeff('0xa')],_0x4bb035);_0x556b4f['on'](_0xaeff('0x15'),function(_0x2eb879){var _0x1af486=new Buffer(_0x4497cc[_0xaeff('0x1d')](_0x2eb879),_0xaeff('0x16'));_0x52b056[_0xaeff('0x17')](_0x1af486);});_0x556b4f['on'](_0xaeff('0x18'),function(){try{var _0x53704d=new Buffer(_0x4497cc[_0xaeff('0x1e')]('binary'),'binary');_0x52b056[_0xaeff('0x17')](_0x53704d);_0x52b056['end']();_0x52b056['on'](_0xaeff('0x19'),function(){return _0x433141(_0x171a8b);});}catch(_0x2ce07b){fs['unlink'](_0x171a8b);return _0x2c1913(_0x2ce07b);}});});};exports['encryptString']=function(_0xfa11e6,_0x4a7185,_0x47953f){var _0x5f0cf6=_0x47953f||stringOptions[_0xaeff('0xa')];var _0x138766=_0x4a7185||stringOptions['secret'];var _0x35a510=crypto[_0xaeff('0x14')](_0x5f0cf6,_0x138766);var _0x1eea2a=_0x35a510[_0xaeff('0x1d')](_0xfa11e6,_0xaeff('0x1f'),'base64');_0x1eea2a+=_0x35a510[_0xaeff('0x1e')]('base64');return _0x1eea2a;};exports[_0xaeff('0x20')]=function(_0x440183,_0x5b82c4,_0x4d56fc){var _0x4f6625=_0x4d56fc||stringOptions[_0xaeff('0xa')];var _0x5828eb=_0x5b82c4||stringOptions[_0xaeff('0x21')];var _0x393e57=crypto[_0xaeff('0x1c')](_0x4f6625,_0x5828eb);var _0x1c3618=_0x393e57[_0xaeff('0x1d')](_0x440183,_0xaeff('0x22'),'utf8');_0x1c3618+=_0x393e57[_0xaeff('0x1e')]('utf8');return _0x1c3618;};
\ No newline at end of file
index cd323bd..e629b8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97c1=['CSV','Setting','find','split','then','splitSizeCsv','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','num','Empty','length','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','.csv','existsSync','join','mkdirSync','each','%s%d.%s','csv','%s.%s','writeFileSync','Completed','zip','catch','inspect','Failed','finally','exit','util','path','to-csv','rimraf','../../mysqldb','dbH','../../config/logger','argv','savename','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format'];(function(_0x4b6804,_0x301b24){var _0x11b4f1=function(_0x31e66c){while(--_0x31e66c){_0x4b6804['push'](_0x4b6804['shift']());}};_0x11b4f1(++_0x301b24);}(_0x97c1,0xdf));var _0x197c=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x97c1[_0x57b54c];return _0x59cc19;};'use strict';var util=require(_0x197c('0x0'));var path=require(_0x197c('0x1'));var _=require('lodash');var csv=require(_0x197c('0x2'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require(_0x197c('0x3'));var db=require(_0x197c('0x4'))['db'];var dbH=require(_0x197c('0x4'))[_0x197c('0x5')];var logger=require(_0x197c('0x6'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x197c('0x7')][0x3];var PATH=process[_0x197c('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x60fab2,_0xfcee35){var _0x5cf5cb={'status':_0x60fab2};var _0x5d42c5={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xfcee35){_0x5cf5cb[_0x197c('0x8')]=_0xfcee35;}return db['AnalyticExtractedReport'][_0x197c('0x9')](_0x5cf5cb,_0x5d42c5);}function main(){var _0x3e83e6=0x1388;var _0x853d68;logger[_0x197c('0xa')](util['format'](_0x197c('0xb'),EXTRACTED_REPORT_ID,_0x197c('0xc')));return db[_0x197c('0xd')][_0x197c('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x197c('0xf'),'splitSizeCsv']})[_0x197c('0x10')](function(_0x668f8){if(_0x668f8){_0x853d68=_0x668f8;_0x3e83e6=_0x853d68[_0x197c('0x11')]||0x1388;}})[_0x197c('0x10')](function(){return dbH['sequelize'][_0x197c('0x12')](util[_0x197c('0x13')](_0x197c('0x14'),QUERY),{'type':dbH[_0x197c('0x15')][_0x197c('0x16')][_0x197c('0x17')]});})['then'](function(_0x5194c3){if(!_0x5194c3[0x0][_0x197c('0x18')]){return analyticExtractedReport(_0x197c('0x19'));}var _0x2083d4=[];var _0x24901f=0x0;var _0x33f8d3=!![];if(_0x5194c3&&_0x5194c3[_0x197c('0x1a')]){var _0x437050=_0x5194c3[0x0][_0x197c('0x18')]%(_0x24901f+_0x3e83e6);if(_0x853d68['split']){for(;_0x33f8d3;_0x24901f+=_0x3e83e6,_0x437050=_0x5194c3[0x0][_0x197c('0x18')]%(_0x24901f+_0x3e83e6)){if(_0x437050==0x0||_0x437050==_0x5194c3[0x0]['num']){_0x33f8d3=![];}_0x2083d4['push'](dbH[_0x197c('0x15')][_0x197c('0x12')](util[_0x197c('0x13')](_0x197c('0x1b'),QUERY,_0x3e83e6,_0x24901f),{'type':dbH['sequelize'][_0x197c('0x16')][_0x197c('0x17')]}));}}else{_0x2083d4[_0x197c('0x1c')](dbH['sequelize'][_0x197c('0x12')](QUERY,{'type':dbH[_0x197c('0x15')][_0x197c('0x16')][_0x197c('0x17')]}));}}var _0x46801c=path[_0x197c('0x1d')](PATH);var _0x362bbf=path[_0x197c('0x1e')](PATH,_0x197c('0x1f'));var _0x3dfb7b=_0x853d68[_0x197c('0xf')]&&_0x2083d4[_0x197c('0x1a')]>0x1;var _0x174942=[];if(!fs[_0x197c('0x20')](path[_0x197c('0x21')](_0x46801c,_0x362bbf))&&_0x3dfb7b){fs[_0x197c('0x22')](path['join'](_0x46801c,_0x362bbf));}return BPromise[_0x197c('0x23')](_0x2083d4,function(_0x2911dd){_0x174942[_0x197c('0x1c')](_0x2911dd);})['then'](function(){for(var _0x2c2952=0x0;_0x2c2952<_0x174942[_0x197c('0x1a')];_0x2c2952+=0x1){var _0x4c3337;var _0x5e7bc9=_0x174942[_0x2c2952];if(_0x3dfb7b){_0x4c3337=path[_0x197c('0x21')](_0x46801c,_0x362bbf,util['format'](_0x197c('0x24'),_0x362bbf,_0x2c2952,_0x197c('0x25')));}else{_0x4c3337=path[_0x197c('0x21')](_0x46801c,util[_0x197c('0x13')](_0x197c('0x26'),_0x362bbf,_0x197c('0x25')));}fs[_0x197c('0x27')](_0x4c3337,csv(_0x5e7bc9));}})[_0x197c('0x10')](function(){if(_0x3dfb7b){zipdir(path[_0x197c('0x21')](_0x46801c,_0x362bbf),{'saveTo':path['join'](_0x46801c,util['format']('%s.%s',_0x362bbf,'zip'))},function(_0x5f7425,_0x4c9256){});rimraf(path[_0x197c('0x21')](_0x46801c,_0x362bbf),function(){});}})[_0x197c('0x10')](function(){logger['info'](util[_0x197c('0x13')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x197c('0xc')));return analyticExtractedReport(_0x197c('0x28'),_0x3dfb7b?util[_0x197c('0x13')](_0x197c('0x26'),_0x362bbf,_0x3dfb7b?_0x197c('0x29'):_0x197c('0x25')):null);});})[_0x197c('0x2a')](function(_0x41d792){logger[_0x197c('0xa')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x197c('0xc')),util[_0x197c('0x2b')](_0x41d792,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x197c('0x2c'));})[_0x197c('0x2d')](function(){process[_0x197c('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x80be=['Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Setting','find','splitSizeCsv','then','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','num','Empty','length','isInteger','push','basename','.csv','existsSync','join','%s%d.%s','csv','%s.%s','writeFileSync','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','path','lodash','to-csv','bluebird','zip-dir','../../mysqldb','../../config/logger','analytics','argv','AnalyticExtractedReport','info','format'];(function(_0x2c561f,_0x31a4c4){var _0x9cbd91=function(_0x3c2509){while(--_0x3c2509){_0x2c561f['push'](_0x2c561f['shift']());}};_0x9cbd91(++_0x31a4c4);}(_0x80be,0x1ac));var _0xe80b=function(_0xff58a9,_0xcdfb28){_0xff58a9=_0xff58a9-0x0;var _0x1e9b6c=_0x80be[_0xff58a9];return _0x1e9b6c;};'use strict';var util=require('util');var path=require(_0xe80b('0x0'));var _=require(_0xe80b('0x1'));var csv=require(_0xe80b('0x2'));var fs=require('fs');var BPromise=require(_0xe80b('0x3'));var zipdir=require(_0xe80b('0x4'));var rimraf=require('rimraf');var db=require(_0xe80b('0x5'))['db'];var dbH=require(_0xe80b('0x5'))['dbH'];var logger=require(_0xe80b('0x6'))(_0xe80b('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0xe80b('0x8')][0x2]);var QUERY=process[_0xe80b('0x8')][0x3];var PATH=process[_0xe80b('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x20385c,_0x536385){var _0x23f025={'status':_0x20385c};var _0x1c3033={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x536385){_0x23f025['savename']=_0x536385;}return db[_0xe80b('0x9')]['update'](_0x23f025,_0x1c3033);}function main(){var _0x40a656=0x1388;var _0x21d627;logger[_0xe80b('0xa')](util[_0xe80b('0xb')](_0xe80b('0xc'),EXTRACTED_REPORT_ID,'CSV'));return db[_0xe80b('0xd')][_0xe80b('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xe80b('0xf')]})['then'](function(_0x4d4792){if(_0x4d4792){_0x21d627=_0x4d4792;_0x40a656=_0x21d627[_0xe80b('0xf')]||0x1388;}})[_0xe80b('0x10')](function(){return dbH['sequelize'][_0xe80b('0x11')](util[_0xe80b('0xb')](_0xe80b('0x12'),QUERY),{'type':dbH[_0xe80b('0x13')][_0xe80b('0x14')][_0xe80b('0x15')]});})[_0xe80b('0x10')](function(_0x111f77){if(!_0x111f77[0x0][_0xe80b('0x16')]){return analyticExtractedReport(_0xe80b('0x17'));}var _0x51034c=[];var _0x511575=0x0;if(_0x21d627['split']){if(_0x111f77&&_0x111f77[_0xe80b('0x18')]){var _0x48cb58=_['range'](_0x111f77[0x0][_0xe80b('0x16')]/_0x40a656);var _0x226c00=Number[_0xe80b('0x19')](_0x111f77[0x0]['num']/_0x40a656)?_0x111f77[0x0][_0xe80b('0x16')]%_0x40a656:0x0;_0x48cb58['forEach'](function(_0x3df5f9){if(_0x3df5f9>0x0){_0x511575+=_0x40a656;}_0x51034c[_0xe80b('0x1a')](dbH[_0xe80b('0x13')][_0xe80b('0x11')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x40a656,_0x511575),{'type':dbH[_0xe80b('0x13')][_0xe80b('0x14')]['SELECT']}));});if(_0x226c00>0x0){_0x511575+=_0x40a656;_0x51034c[_0xe80b('0x1a')](dbH[_0xe80b('0x13')][_0xe80b('0x11')](util[_0xe80b('0xb')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x226c00,_0x511575),{'type':dbH[_0xe80b('0x13')]['QueryTypes'][_0xe80b('0x15')]}));}}}else{_0x51034c['push'](dbH[_0xe80b('0x13')][_0xe80b('0x11')](QUERY,{'type':dbH['sequelize'][_0xe80b('0x14')]['SELECT']}));}var _0x294c80=path['dirname'](PATH);var _0x12c965=path[_0xe80b('0x1b')](PATH,_0xe80b('0x1c'));var _0x473143=_0x21d627['split']&&_0x51034c[_0xe80b('0x18')]>0x1;var _0x553cb8=[];if(!fs[_0xe80b('0x1d')](path[_0xe80b('0x1e')](_0x294c80,_0x12c965))&&_0x473143){fs['mkdirSync'](path[_0xe80b('0x1e')](_0x294c80,_0x12c965));}return BPromise['each'](_0x51034c,function(_0x3f4367){_0x553cb8[_0xe80b('0x1a')](_0x3f4367);})[_0xe80b('0x10')](function(){for(var _0x548570=0x0;_0x548570<_0x553cb8[_0xe80b('0x18')];_0x548570+=0x1){var _0x202665;var _0x5b18ad=_0x553cb8[_0x548570];if(_0x473143){_0x202665=path[_0xe80b('0x1e')](_0x294c80,_0x12c965,util[_0xe80b('0xb')](_0xe80b('0x1f'),_0x12c965,_0x548570,_0xe80b('0x20')));}else{_0x202665=path[_0xe80b('0x1e')](_0x294c80,util[_0xe80b('0xb')](_0xe80b('0x21'),_0x12c965,_0xe80b('0x20')));}fs[_0xe80b('0x22')](_0x202665,csv(_0x5b18ad));}})[_0xe80b('0x10')](function(){if(_0x473143){return new Promise(function(_0x420b86){zipdir(path[_0xe80b('0x1e')](_0x294c80,_0x12c965),{'saveTo':path[_0xe80b('0x1e')](_0x294c80,util[_0xe80b('0xb')](_0xe80b('0x21'),_0x12c965,_0xe80b('0x23')))},function(_0x4c11c2,_0x379648){rimraf(path['join'](_0x294c80,_0x12c965),function(){});_0x420b86('zip\x20finished');});});}})[_0xe80b('0x10')](function(){logger[_0xe80b('0xa')](util[_0xe80b('0xb')](_0xe80b('0x24'),EXTRACTED_REPORT_ID,_0xe80b('0x25')));return analyticExtractedReport(_0xe80b('0x26'),_0x473143?util[_0xe80b('0xb')](_0xe80b('0x21'),_0x12c965,_0x473143?_0xe80b('0x23'):_0xe80b('0x20')):null);});})[_0xe80b('0x27')](function(_0x308021){logger[_0xe80b('0xa')](util[_0xe80b('0xb')](_0xe80b('0x28'),EXTRACTED_REPORT_ID,_0xe80b('0x25')),util[_0xe80b('0x29')](_0x308021,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xe80b('0x2a'));})[_0xe80b('0x2b')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
index 7b0745c..b8b369c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc427=['all','flatten','createPdfKitDocument','%s%d.%s','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','AnalyticExtractedReport','findOne','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','%s\x20#%d','YYYY-MM-DD','toString','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','path','moment','pdfmake/src/printer','zip-dir','jsdom','JSDOM','window','../../mysqldb','dbH','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','map','tableHeader','pick','fill','length','auto','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','header','pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','black','num','dirname','basename','.pdf','join','%s.%s','pdf','Setting','find','split','splitSizePdf','then','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','QueryTypes','existsSync'];(function(_0x2fe7ff,_0xfb8494){var _0x10a92a=function(_0xed1049){while(--_0xed1049){_0x2fe7ff['push'](_0x2fe7ff['shift']());}};_0x10a92a(++_0xfb8494);}(_0xc427,0x179));var _0x7c42=function(_0x3c6113,_0x57d3fa){_0x3c6113=_0x3c6113-0x0;var _0x361b22=_0xc427[_0x3c6113];return _0x361b22;};'use strict';var _=require(_0x7c42('0x0'));var fs=require('fs');var util=require('util');var path=require(_0x7c42('0x1'));var moment=require(_0x7c42('0x2'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x7c42('0x3'));var zipdir=require(_0x7c42('0x4'));var rimraf=require('rimraf');var JSDOM=require(_0x7c42('0x5'))[_0x7c42('0x6')];var window=new JSDOM('')[_0x7c42('0x7')];var db=require(_0x7c42('0x8'))['db'];var dbH=require(_0x7c42('0x8'))[_0x7c42('0x9')];var logger=require('../../config/logger')(_0x7c42('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x7c42('0xb')][0x2]);var QUERY=process[_0x7c42('0xb')][0x3];var PATH=process[_0x7c42('0xb')][0x4];var NAME=process[_0x7c42('0xb')][0x5];var FORMAT=_0x7c42('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x358708,_0xcfcf23){var _0x323e16={'status':_0x358708};var _0x28a7b8={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xcfcf23){_0x323e16[_0x7c42('0xd')]=_0xcfcf23;}return db['AnalyticExtractedReport']['update'](_0x323e16,_0x28a7b8);}function getHeaders(_0x4786a8){return _[_0x7c42('0xe')](_0x4786a8,function(_0x39e005){return{'text':_0x39e005,'style':_0x7c42('0xf')};});}function getRows(_0x5bf200,_0x8d181b){return _[_0x7c42('0xe')](_0x8d181b,function(_0x4f90d1){return _(_0x4f90d1)[_0x7c42('0x10')](_0x5bf200)[_0x7c42('0xe')](function(_0x39570e){return _0x39570e?_['toString'](_0x39570e):'';})['value']();});}function createTable(_0x2588e2,_0x1e65b3){var _0x18f8b6={'widths':_[_0x7c42('0x11')](Array(_0x2588e2[_0x7c42('0x12')]),0x91),'heights':function(_0x3d9cc3){return _0x3d9cc3===0x0?_0x7c42('0x13'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x4f53b9=getHeaders(_0x2588e2);_0x18f8b6[_0x7c42('0x14')][_0x7c42('0x15')](_0x4f53b9);var _0x4a3746=getRows(_0x2588e2,_0x1e65b3);_0x18f8b6[_0x7c42('0x14')]=_0x18f8b6['body'][_0x7c42('0x16')](_0x4a3746);return _0x18f8b6;}function createTables(_0x548c6f){var _0x384dac=[];var _0x38b304=_[_0x7c42('0x17')](Object[_0x7c42('0x18')](_0x548c6f[0x0]),0x5);_0x38b304[_0x7c42('0x19')](function(_0x32d3ac){_0x384dac[_0x7c42('0x15')](createTable(_0x32d3ac,_0x548c6f));});return _0x384dac;}function getPDFDocDefinition(_0x334589){var _0x2b9b2a=util[_0x7c42('0x1a')](_0x7c42('0x1b'),NAME,EXTRACTED_REPORT[_0x7c42('0x1c')],moment(EXTRACTED_REPORT[_0x7c42('0x1d')])[_0x7c42('0x1a')](FORMAT),moment(EXTRACTED_REPORT[_0x7c42('0x1e')])['format'](FORMAT));var _0x342525=[];for(var _0x11b462=0x0;_0x11b462<_0x334589[_0x7c42('0x12')];_0x11b462++){var _0x17a637=[];if(_0x11b462===0x0){_0x17a637[_0x7c42('0x15')]({'text':_0x2b9b2a,'style':_0x7c42('0x1f')});}var _0xda0b01={'table':_0x334589[_0x11b462]};if(_0x11b462>0x0){_0xda0b01[_0x7c42('0x20')]=_0x7c42('0x21');_0xda0b01[_0x7c42('0x22')]=[0x0,0x46,0x0,0x0];}_0x17a637[_0x7c42('0x15')](_0xda0b01);_0x342525[_0x7c42('0x15')](_0x17a637);}return{'pageSize':'A4','pageOrientation':_0x7c42('0x23'),'content':_0x342525,'footer':function(_0x35dc51,_0x592cad){return{'text':_0x35dc51['toString']()+_0x7c42('0x24')+_0x592cad,'style':_0x7c42('0x25')};},'defaultStyle':{'font':_0x7c42('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x7c42('0x27')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x454e04){var _0x227383=0x1388;var _0x558cd0;if(!_0x454e04[0x0][_0x7c42('0x28')]){return analyticExtractedReport('Empty');}var _0x1535a8=[];var _0x262ecc=0x0;var _0x2fa877=!![];var _0x54b25b=path[_0x7c42('0x29')](PATH);var _0x5bcf83=path[_0x7c42('0x2a')](PATH,_0x7c42('0x2b'));var _0x59f2e3=path[_0x7c42('0x2c')](_0x54b25b,util['format'](_0x7c42('0x2d'),_0x5bcf83,_0x7c42('0x2e')));var _0x3d2874=![];return db[_0x7c42('0x2f')][_0x7c42('0x30')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x7c42('0x31'),_0x7c42('0x32')]})[_0x7c42('0x33')](function(_0x355e48){if(_0x355e48){_0x558cd0=_0x355e48;_0x227383=_0x558cd0[_0x7c42('0x32')]||0x3e8;}})[_0x7c42('0x33')](function(){if(_0x454e04&&_0x454e04[_0x7c42('0x12')]){var _0x38cc40=_0x454e04[0x0]['num']%(_0x262ecc+_0x227383);if(_0x558cd0['split']){for(;_0x2fa877;_0x262ecc+=_0x227383,_0x38cc40=_0x454e04[0x0][_0x7c42('0x28')]%(_0x262ecc+_0x227383)){if(_0x38cc40==0x0||_0x38cc40==_0x454e04[0x0][_0x7c42('0x28')]){_0x2fa877=![];}_0x1535a8[_0x7c42('0x15')](dbH[_0x7c42('0x34')][_0x7c42('0x35')](util['format'](_0x7c42('0x36'),QUERY,_0x227383,_0x262ecc),{'type':dbH['sequelize']['QueryTypes'][_0x7c42('0x37')]}));}}else{_0x1535a8[_0x7c42('0x15')](dbH[_0x7c42('0x34')][_0x7c42('0x35')](QUERY,{'type':dbH[_0x7c42('0x34')][_0x7c42('0x38')]['SELECT']}));}}_0x3d2874=_0x558cd0['split']&&_0x1535a8['length']>0x1;if(!fs[_0x7c42('0x39')](path['join'](_0x54b25b,_0x5bcf83))&&_0x3d2874){fs['mkdirSync'](path[_0x7c42('0x2c')](_0x54b25b,_0x5bcf83));}return Promise[_0x7c42('0x3a')](_0x1535a8);})[_0x7c42('0x33')](function(_0x1c2d4e){return createTables(_[_0x7c42('0x3b')](_0x1c2d4e));})[_0x7c42('0x33')](function(_0x3765e0){var _0x294a9a=getPDFDocDefinition(_0x3765e0);var _0x125ce2=getPDFPrinter();var _0x67ac21=_0x125ce2[_0x7c42('0x3c')](_0x294a9a);if(_0x3d2874)_0x59f2e3=path['join'](_0x54b25b,_0x5bcf83,util[_0x7c42('0x1a')](_0x7c42('0x3d'),_0x5bcf83,index,_0x7c42('0x2e')));return writePDFDocument(_0x67ac21,_0x59f2e3);})[_0x7c42('0x33')](function(){if(!_0x3d2874)return;zipdir(path[_0x7c42('0x2c')](_0x54b25b,_0x5bcf83),{'saveTo':path[_0x7c42('0x2c')](_0x54b25b,util[_0x7c42('0x1a')](_0x7c42('0x2d'),_0x5bcf83,_0x7c42('0x3e')))},function(_0x412a1c){if(_0x412a1c)throw _0x412a1c;return;});})['then'](function(){if(!_0x3d2874)return;rimraf(path[_0x7c42('0x2c')](_0x54b25b,_0x5bcf83),function(){});})[_0x7c42('0x33')](function(){logger['info'](util['format'](_0x7c42('0x3f'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x7c42('0x40'),_0x3d2874?util['format'](_0x7c42('0x2d'),_0x5bcf83,_0x3d2874?_0x7c42('0x3e'):_0x7c42('0x2e')):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x7c42('0x1a')](_0x7c42('0x41'),EXTRACTED_REPORT_ID,_0x7c42('0x42')));return db[_0x7c42('0x43')][_0x7c42('0x44')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x7c42('0x33')](function(_0x24ac48){EXTRACTED_REPORT=_0x24ac48;return dbH[_0x7c42('0x34')][_0x7c42('0x35')](util[_0x7c42('0x1a')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x7c42('0x38')][_0x7c42('0x37')]});})[_0x7c42('0x33')](extractReport)[_0x7c42('0x45')](function(_0x23080d){logger['info'](util[_0x7c42('0x1a')](_0x7c42('0x46'),EXTRACTED_REPORT_ID,'PDF'),util['inspect'](_0x23080d,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x7c42('0x47')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x5f0c3e=new PdfPrinter({'Arial':{'normal':__dirname+_0x7c42('0x48'),'bold':__dirname+_0x7c42('0x49'),'italics':__dirname+_0x7c42('0x4a'),'bolditalics':__dirname+'/fonts/arial-bold-italic.ttf'}});return _0x5f0c3e;}function getPDFDocDefinitionFromHTML(_0x2a5cb7,_0x4d2f8e){var _0x12a5b8=util[_0x7c42('0x1a')](_0x7c42('0x4b'),_0x4d2f8e['channel'],_0x4d2f8e['interactionId']);var _0x56825f=moment()['format'](_0x7c42('0x4c'))[_0x7c42('0x4d')]();var _0x3fbdd8=htmlToPdfmake(_0x2a5cb7,{'window':window,'tableAutoSize':!![]});return{'content':[_0x3fbdd8],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x7c42('0x4e'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x7c42('0x4e'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x7c42('0x4f'),'style':_0x7c42('0x1f')}];},'footer':function(_0x3f3acd,_0x3f8606){return[{'text':util[_0x7c42('0x1a')](_0x7c42('0x50'),_0x12a5b8,_0x3f3acd,_0x3f8606,_0x56825f),'style':'footer'}];}};}function writePDFDocument(_0x144bbf,_0x1e7b4f){return new Promise(function(_0x325645,_0x5d9afe){var _0x7bd278=_0x144bbf[_0x7c42('0x51')](fs[_0x7c42('0x52')](_0x1e7b4f));_0x7bd278['on'](_0x7c42('0x53'),function(){_0x325645(_0x7c42('0x53'));});_0x7bd278['on'](_0x7c42('0x54'),function(_0x29c2cc){_0x5d9afe(_0x29c2cc);});_0x144bbf[_0x7c42('0x55')]();});}exports[_0x7c42('0x56')]=function(_0x15b77d,_0x8ca5aa){var _0x54f49b=getPDFPrinter();var _0xa62954=getPDFDocDefinitionFromHTML(_0x15b77d,_0x8ca5aa);var _0x48e838=_0x54f49b['createPdfKitDocument'](_0xa62954);return writePDFDocument(_0x48e838,_0x8ca5aa[_0x7c42('0x1')])[_0x7c42('0x45')](function(_0x16c15c){throw _0x16c15c;});};
\ No newline at end of file
+var _0x50bc=['endDate','header','pageBreak','before','margin','landscape','footer','Arial','black','num','Empty','Setting','split','then','range','isInteger','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','query','dirname','basename','.pdf','existsSync','join','mkdirSync','each','flatten','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','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','map','tableHeader','toString','value','fill','length','body','push','concat','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate'];(function(_0x9aada2,_0xd2d349){var _0x196dff=function(_0x5ad061){while(--_0x5ad061){_0x9aada2['push'](_0x9aada2['shift']());}};_0x196dff(++_0xd2d349);}(_0x50bc,0x160));var _0xc50b=function(_0x14f478,_0x83647e){_0x14f478=_0x14f478-0x0;var _0x54a23b=_0x50bc[_0x14f478];return _0x54a23b;};'use strict';var _=require(_0xc50b('0x0'));var fs=require('fs');var util=require('util');var path=require(_0xc50b('0x1'));var moment=require(_0xc50b('0x2'));var htmlToPdfmake=require(_0xc50b('0x3'));var PdfPrinter=require(_0xc50b('0x4'));var zipdir=require(_0xc50b('0x5'));var rimraf=require(_0xc50b('0x6'));var JSDOM=require(_0xc50b('0x7'))[_0xc50b('0x8')];var window=new JSDOM('')[_0xc50b('0x9')];var BPromise=require('bluebird');var db=require(_0xc50b('0xa'))['db'];var dbH=require(_0xc50b('0xa'))[_0xc50b('0xb')];var logger=require(_0xc50b('0xc'))(_0xc50b('0xd'));var EXTRACTED_REPORT_ID=Number(process[_0xc50b('0xe')][0x2]);var QUERY=process[_0xc50b('0xe')][0x3];var PATH=process[_0xc50b('0xe')][0x4];var NAME=process[_0xc50b('0xe')][0x5];var FORMAT=_0xc50b('0xf');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x28f3ac,_0x303a30){var _0x17d067={'status':_0x28f3ac};var _0x418c36={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x303a30){_0x17d067[_0xc50b('0x10')]=_0x303a30;}return db[_0xc50b('0x11')]['update'](_0x17d067,_0x418c36);}function getHeaders(_0x1d8ed4){return _[_0xc50b('0x12')](_0x1d8ed4,function(_0x568e70){return{'text':_0x568e70,'style':_0xc50b('0x13')};});}function getRows(_0x5649b0,_0x3ce936){return _[_0xc50b('0x12')](_0x3ce936,function(_0x4aec96){return _(_0x4aec96)['pick'](_0x5649b0)['map'](function(_0x251e1a){return _0x251e1a?_[_0xc50b('0x14')](_0x251e1a):'';})[_0xc50b('0x15')]();});}function createTable(_0xb77fbf,_0x1709bf){var _0xa739a5={'widths':_[_0xc50b('0x16')](Array(_0xb77fbf[_0xc50b('0x17')]),0x91),'heights':function(_0x3bf119){return _0x3bf119===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x446265=getHeaders(_0xb77fbf);_0xa739a5[_0xc50b('0x18')][_0xc50b('0x19')](_0x446265);var _0x127f2a=getRows(_0xb77fbf,_0x1709bf);_0xa739a5[_0xc50b('0x18')]=_0xa739a5[_0xc50b('0x18')][_0xc50b('0x1a')](_0x127f2a);return _0xa739a5;}function createTables(_0x175e1c){var _0x632cd0=[];var _0x2cc90c=_['chunk'](Object['keys'](_0x175e1c[0x0]),0x5);_0x2cc90c[_0xc50b('0x1b')](function(_0x4f809d){_0x632cd0[_0xc50b('0x19')](createTable(_0x4f809d,_0x175e1c));});return _0x632cd0;}function getPDFDocDefinition(_0x2ec313){var _0x332252=util[_0xc50b('0x1c')](_0xc50b('0x1d'),NAME,EXTRACTED_REPORT[_0xc50b('0x1e')],moment(EXTRACTED_REPORT[_0xc50b('0x1f')])[_0xc50b('0x1c')](FORMAT),moment(EXTRACTED_REPORT[_0xc50b('0x20')])['format'](FORMAT));var _0x9562bf=[];for(var _0x2d58db=0x0;_0x2d58db<_0x2ec313[_0xc50b('0x17')];_0x2d58db++){var _0x2db5f5=[];if(_0x2d58db===0x0){_0x2db5f5[_0xc50b('0x19')]({'text':_0x332252,'style':_0xc50b('0x21')});}var _0x1ff9f4={'table':_0x2ec313[_0x2d58db]};if(_0x2d58db>0x0){_0x1ff9f4[_0xc50b('0x22')]=_0xc50b('0x23');_0x1ff9f4[_0xc50b('0x24')]=[0x0,0x46,0x0,0x0];}_0x2db5f5[_0xc50b('0x19')](_0x1ff9f4);_0x9562bf[_0xc50b('0x19')](_0x2db5f5);}return{'pageSize':'A4','pageOrientation':_0xc50b('0x25'),'content':_0x9562bf,'footer':function(_0x5e241f,_0x1cae85){return{'text':_0x5e241f[_0xc50b('0x14')]()+'\x20/\x20'+_0x1cae85,'style':_0xc50b('0x26')};},'defaultStyle':{'font':_0xc50b('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xc50b('0x28')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x113d2c){var _0x2ce532=0x1388;var _0xdbab3;if(!_0x113d2c[0x0][_0xc50b('0x29')]){return analyticExtractedReport(_0xc50b('0x2a'));}return db[_0xc50b('0x2b')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xc50b('0x2c'),'splitSizePdf']})['then'](function(_0x43076b){if(_0x43076b){_0xdbab3=_0x43076b;_0x2ce532=_0xdbab3['splitSizePdf']||0x3e8;}})[_0xc50b('0x2d')](function(){var _0xd92d4a=[];var _0x350df6=0x0;if(_0xdbab3['split']){if(_0x113d2c&&_0x113d2c['length']){var _0x10b153=_[_0xc50b('0x2e')](_0x113d2c[0x0]['num']/_0x2ce532);var _0x157451=Number[_0xc50b('0x2f')](_0x113d2c[0x0]['num']/_0x2ce532)?_0x113d2c[0x0][_0xc50b('0x29')]%_0x2ce532:0x0;_0x10b153['forEach'](function(_0x49bee2){if(_0x49bee2>0x0){_0x350df6+=_0x2ce532;}_0xd92d4a[_0xc50b('0x19')](dbH[_0xc50b('0x30')]['query'](util[_0xc50b('0x1c')](_0xc50b('0x31'),QUERY,_0x2ce532,_0x350df6),{'type':dbH['sequelize'][_0xc50b('0x32')][_0xc50b('0x33')]}));});if(_0x157451>0x0){_0x350df6+=_0x2ce532;_0xd92d4a[_0xc50b('0x19')](dbH[_0xc50b('0x30')][_0xc50b('0x34')](util['format'](_0xc50b('0x31'),QUERY,_0x157451,_0x350df6),{'type':dbH[_0xc50b('0x30')]['QueryTypes']['SELECT']}));}}}else{_0xd92d4a['push'](dbH[_0xc50b('0x30')][_0xc50b('0x34')](QUERY,{'type':dbH['sequelize'][_0xc50b('0x32')][_0xc50b('0x33')]}));}var _0x13fab3=path[_0xc50b('0x35')](PATH);var _0x33ae8c=path[_0xc50b('0x36')](PATH,_0xc50b('0x37'));var _0x585c9c=_0xdbab3[_0xc50b('0x2c')]&&_0xd92d4a[_0xc50b('0x17')]>0x1;var _0xe86773=[];if(!fs[_0xc50b('0x38')](path[_0xc50b('0x39')](_0x13fab3,_0x33ae8c))&&_0x585c9c){fs[_0xc50b('0x3a')](path[_0xc50b('0x39')](_0x13fab3,_0x33ae8c));}return BPromise[_0xc50b('0x3b')](_0xd92d4a,function(_0x281371){_0xe86773['push'](_0x281371);})[_0xc50b('0x2d')](function(){var _0x438831=[];for(var _0x5abb5e=0x0;_0x5abb5e<_0xe86773[_0xc50b('0x17')];_0x5abb5e+=0x1){var _0x38f7df=_0xe86773[_0x5abb5e];var _0xbd1bd3=createTables(_[_0xc50b('0x3c')](_0x38f7df));var _0x1a1e34;var _0x255542=getPDFDocDefinition(_0xbd1bd3);var _0x5a83ab=getPDFPrinter();var _0xab3175=_0x5a83ab[_0xc50b('0x3d')](_0x255542);if(_0x585c9c){_0x1a1e34=path[_0xc50b('0x39')](_0x13fab3,_0x33ae8c,util[_0xc50b('0x1c')](_0xc50b('0x3e'),_0x33ae8c,_0x5abb5e,_0xc50b('0x3f')));}else{_0x1a1e34=path['join'](_0x13fab3,util[_0xc50b('0x1c')](_0xc50b('0x40'),_0x33ae8c,_0xc50b('0x3f')));}_0x438831[_0xc50b('0x19')](writePDFDocument(_0xab3175,_0x1a1e34));}return Promise[_0xc50b('0x41')](_0x438831);})[_0xc50b('0x2d')](function(){if(_0x585c9c){return new Promise(function(_0x2e9cac){zipdir(path['join'](_0x13fab3,_0x33ae8c),{'saveTo':path[_0xc50b('0x39')](_0x13fab3,util[_0xc50b('0x1c')](_0xc50b('0x40'),_0x33ae8c,_0xc50b('0x42')))},function(){rimraf(path[_0xc50b('0x39')](_0x13fab3,_0x33ae8c),function(){});_0x2e9cac(_0xc50b('0x43'));});});}})[_0xc50b('0x2d')](function(){if(!_0x585c9c)return;rimraf(path[_0xc50b('0x39')](_0x13fab3,_0x33ae8c),function(){});})[_0xc50b('0x2d')](function(){logger[_0xc50b('0x44')](util[_0xc50b('0x1c')](_0xc50b('0x45'),EXTRACTED_REPORT_ID,_0xc50b('0x46')));return analyticExtractedReport(_0xc50b('0x47'),_0x585c9c?util[_0xc50b('0x1c')](_0xc50b('0x40'),_0x33ae8c,_0x585c9c?_0xc50b('0x42'):_0xc50b('0x3f')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xc50b('0x44')](util['format'](_0xc50b('0x48'),EXTRACTED_REPORT_ID,_0xc50b('0x46')));return db[_0xc50b('0x11')][_0xc50b('0x49')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xc50b('0x2d')](function(_0x5f4ac2){EXTRACTED_REPORT=_0x5f4ac2;return dbH[_0xc50b('0x30')][_0xc50b('0x34')](util[_0xc50b('0x1c')](_0xc50b('0x4a'),QUERY),{'type':dbH[_0xc50b('0x30')][_0xc50b('0x32')][_0xc50b('0x33')]});})['then'](extractReport)[_0xc50b('0x4b')](function(_0x5b9751){logger[_0xc50b('0x44')](util[_0xc50b('0x1c')](_0xc50b('0x4c'),EXTRACTED_REPORT_ID,_0xc50b('0x46')),util[_0xc50b('0x4d')](_0x5b9751,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xc50b('0x4e'));})[_0xc50b('0x4f')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x145f62=new PdfPrinter({'Arial':{'normal':__dirname+_0xc50b('0x50'),'bold':__dirname+_0xc50b('0x51'),'italics':__dirname+_0xc50b('0x52'),'bolditalics':__dirname+_0xc50b('0x53')}});return _0x145f62;}function getPDFDocDefinitionFromHTML(_0x389d44,_0x516511){var _0x112e1c=util['format'](_0xc50b('0x54'),_0x516511[_0xc50b('0x55')],_0x516511[_0xc50b('0x56')]);var _0x15544e=moment()[_0xc50b('0x1c')](_0xc50b('0x57'))['toString']();var _0x3e3ff4=htmlToPdfmake(_0x389d44,{'window':window,'tableAutoSize':!![]});return{'content':[_0x3e3ff4],'defaultStyle':{'font':_0xc50b('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xc50b('0x58'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':'center','margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xc50b('0x58')}},'header':function(){return[{'text':_0xc50b('0x59'),'style':_0xc50b('0x21')}];},'footer':function(_0x9ab411,_0x1aae08){return[{'text':util[_0xc50b('0x1c')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x112e1c,_0x9ab411,_0x1aae08,_0x15544e),'style':_0xc50b('0x26')}];}};}function writePDFDocument(_0x5a024b,_0x1093d0){return new Promise(function(_0x121352,_0x176d4d){var _0x5618b3=_0x5a024b[_0xc50b('0x5a')](fs[_0xc50b('0x5b')](_0x1093d0));_0x5618b3['on'](_0xc50b('0x5c'),function(){_0x121352(_0xc50b('0x5c'));});_0x5618b3['on'](_0xc50b('0x5d'),function(_0x2039b2){_0x176d4d(_0x2039b2);});_0x5a024b[_0xc50b('0x5e')]();});}exports[_0xc50b('0x5f')]=function(_0x4e4066,_0x51bb3c){var _0x5b895a=getPDFPrinter();var _0x30168f=getPDFDocDefinitionFromHTML(_0x4e4066,_0x51bb3c);var _0x35d6ae=_0x5b895a[_0xc50b('0x3d')](_0x30168f);return writePDFDocument(_0x35d6ae,_0x51bb3c[_0xc50b('0x1')])['catch'](function(_0x34c0de){throw _0x34c0de;});};
\ No newline at end of file
index dfffe02..f13a5bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25ca=['existsSync','mkdirSync','each','join','%s%d.%s','xlsx','writeFileSync','%s.%s','Completed','zip','catch','Failed','finally','exit','util','path','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','update','info','format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','push','query','%s\x20limit\x20%d\x20OFFSET\x20%d','basename'];(function(_0x197043,_0x3ebf47){var _0x233e33=function(_0x17bd0f){while(--_0x17bd0f){_0x197043['push'](_0x197043['shift']());}};_0x233e33(++_0x3ebf47);}(_0x25ca,0x68));var _0xa25c=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x25ca[_0x17d9e3];return _0x14192d;};'use strict';var util=require(_0xa25c('0x0'));var path=require(_0xa25c('0x1'));var _=require('lodash');var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0xa25c('0x2'));var zipdir=require(_0xa25c('0x3'));var rimraf=require(_0xa25c('0x4'));var db=require(_0xa25c('0x5'))['db'];var dbH=require('../../mysqldb')[_0xa25c('0x6')];var logger=require(_0xa25c('0x7'))(_0xa25c('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xa25c('0x9')][0x2]);var QUERY=process[_0xa25c('0x9')][0x3];var PATH=process[_0xa25c('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5a1ac2,_0x4261d2){var _0x20b873={'status':_0x5a1ac2};var _0x4255bf={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4261d2){_0x20b873[_0xa25c('0xa')]=_0x4261d2;}return db['AnalyticExtractedReport'][_0xa25c('0xb')](_0x20b873,_0x4255bf);}function main(){var _0x59dc06=0x1388;var _0x451c0c;logger[_0xa25c('0xc')](util[_0xa25c('0xd')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xa25c('0xe')));return db[_0xa25c('0xf')][_0xa25c('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xa25c('0x11'),'splitSizeXlsx']})['then'](function(_0x56d617){if(_0x56d617){_0x451c0c=_0x56d617;_0x59dc06=_0x451c0c[_0xa25c('0x12')]||0x1388;}})[_0xa25c('0x13')](function(){return dbH[_0xa25c('0x14')]['query'](util[_0xa25c('0xd')](_0xa25c('0x15'),QUERY),{'type':dbH[_0xa25c('0x14')][_0xa25c('0x16')][_0xa25c('0x17')]});})[_0xa25c('0x13')](function(_0x310e7d){if(!_0x310e7d[0x0][_0xa25c('0x18')]){return analyticExtractedReport(_0xa25c('0x19'));}var _0x185f2f=[];var _0x4e5623=0x0;var _0x4fef07=!![];if(_0x451c0c[_0xa25c('0x11')]){if(_0x310e7d&&_0x310e7d[_0xa25c('0x1a')]){var _0x341877=_0x310e7d[0x0]['num']%(_0x4e5623+_0x59dc06);for(;_0x4fef07;_0x4e5623+=_0x59dc06,_0x341877=_0x310e7d[0x0]['num']%(_0x4e5623+_0x59dc06)){if(_0x341877==0x0||_0x341877==_0x310e7d[0x0][_0xa25c('0x18')]){_0x4fef07=![];}_0x185f2f[_0xa25c('0x1b')](dbH[_0xa25c('0x14')][_0xa25c('0x1c')](util[_0xa25c('0xd')](_0xa25c('0x1d'),QUERY,_0x59dc06,_0x4e5623),{'type':dbH[_0xa25c('0x14')]['QueryTypes']['SELECT']}));}}}else{_0x185f2f[_0xa25c('0x1b')](dbH[_0xa25c('0x14')]['query'](QUERY,{'type':dbH[_0xa25c('0x14')][_0xa25c('0x16')][_0xa25c('0x17')]}));}var _0x4b917d=path['dirname'](PATH);var _0xc7892f=path[_0xa25c('0x1e')](PATH,'.xlsx');var _0x33ac51=_0x451c0c[_0xa25c('0x11')]&&_0x185f2f[_0xa25c('0x1a')]>0x1;var _0xc47b7e=[];if(!fs[_0xa25c('0x1f')](path['join'](_0x4b917d,_0xc7892f))&&_0x33ac51){fs[_0xa25c('0x20')](path['join'](_0x4b917d,_0xc7892f));}return BPromise[_0xa25c('0x21')](_0x185f2f,function(_0x2d94fc){_0xc47b7e[_0xa25c('0x1b')](_0x2d94fc);})[_0xa25c('0x13')](function(){for(var _0x2470e7=0x0;_0x2470e7<_0xc47b7e[_0xa25c('0x1a')];_0x2470e7+=0x1){var _0x49601c;var _0x17fa4c=_0xc47b7e[_0x2470e7];if(_0x33ac51){_0x49601c=path[_0xa25c('0x22')](_0x4b917d,_0xc7892f,util[_0xa25c('0xd')](_0xa25c('0x23'),_0xc7892f,_0x2470e7,_0xa25c('0x24')));}else{_0x49601c=path[_0xa25c('0x22')](_0x4b917d,util['format']('%s.%s',_0xc7892f,_0xa25c('0x24')));}fs[_0xa25c('0x25')](_0x49601c,json2xls(_0x17fa4c),'binary');}})[_0xa25c('0x13')](function(){if(_0x33ac51){zipdir(path[_0xa25c('0x22')](_0x4b917d,_0xc7892f),{'saveTo':path[_0xa25c('0x22')](_0x4b917d,util['format'](_0xa25c('0x26'),_0xc7892f,'zip'))},function(_0x4cd41a,_0x37d778){});rimraf(path['join'](_0x4b917d,_0xc7892f),function(){});}})['then'](function(){logger[_0xa25c('0xc')](util['format']('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xa25c('0xe')));return analyticExtractedReport(_0xa25c('0x27'),_0x33ac51?util[_0xa25c('0xd')]('%s.%s',_0xc7892f,_0x33ac51?_0xa25c('0x28'):'xlsx'):null);});})[_0xa25c('0x29')](function(_0x13480e){logger['info'](util[_0xa25c('0xd')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xa25c('0xe')),util['inspect'](_0x13480e,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xa25c('0x2a'));})[_0xa25c('0x2b')](function(){process[_0xa25c('0x2c')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x7b8f=['argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','find','splitSizeXlsx','then','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','num','Empty','split','push','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','.xlsx','join','mkdirSync','length','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','finally','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics'];(function(_0x36e578,_0x4a19da){var _0x36f15a=function(_0x5548ab){while(--_0x5548ab){_0x36e578['push'](_0x36e578['shift']());}};_0x36f15a(++_0x4a19da);}(_0x7b8f,0x1cb));var _0xf7b8=function(_0x1880da,_0x546e36){_0x1880da=_0x1880da-0x0;var _0x2b6cd5=_0x7b8f[_0x1880da];return _0x2b6cd5;};'use strict';var util=require(_0xf7b8('0x0'));var path=require(_0xf7b8('0x1'));var _=require(_0xf7b8('0x2'));var fs=require('fs');var json2xls=require(_0xf7b8('0x3'));var BPromise=require(_0xf7b8('0x4'));var zipdir=require(_0xf7b8('0x5'));var rimraf=require(_0xf7b8('0x6'));var db=require(_0xf7b8('0x7'))['db'];var dbH=require(_0xf7b8('0x7'))[_0xf7b8('0x8')];var logger=require(_0xf7b8('0x9'))(_0xf7b8('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0xf7b8('0xb')][0x2]);var QUERY=process[_0xf7b8('0xb')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x19fc5b,_0x372377){var _0x3e6e5a={'status':_0x19fc5b};var _0x1c61ba={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x372377){_0x3e6e5a[_0xf7b8('0xc')]=_0x372377;}return db[_0xf7b8('0xd')][_0xf7b8('0xe')](_0x3e6e5a,_0x1c61ba);}function main(){var _0x849bc5=0x1388;var _0x286c37;logger[_0xf7b8('0xf')](util[_0xf7b8('0x10')](_0xf7b8('0x11'),EXTRACTED_REPORT_ID,_0xf7b8('0x12')));return db['Setting'][_0xf7b8('0x13')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xf7b8('0x14')]})[_0xf7b8('0x15')](function(_0x269096){if(_0x269096){_0x286c37=_0x269096;_0x849bc5=_0x286c37['splitSizeXlsx']||0x1388;}})['then'](function(){return dbH['sequelize']['query'](util['format'](_0xf7b8('0x16'),QUERY),{'type':dbH['sequelize'][_0xf7b8('0x17')]['SELECT']});})[_0xf7b8('0x15')](function(_0x58f72b){if(!_0x58f72b[0x0][_0xf7b8('0x18')]){return analyticExtractedReport(_0xf7b8('0x19'));}var _0x3cf6df=[];var _0x231d3d=0x0;if(_0x286c37[_0xf7b8('0x1a')]){if(_0x58f72b&&_0x58f72b['length']){var _0x267323=_['range'](_0x58f72b[0x0][_0xf7b8('0x18')]/_0x849bc5);var _0x363cc8=Number['isInteger'](_0x58f72b[0x0][_0xf7b8('0x18')]/_0x849bc5)?_0x58f72b[0x0]['num']%_0x849bc5:0x0;_0x267323['forEach'](function(_0x5c1e21){if(_0x5c1e21>0x0){_0x231d3d+=_0x849bc5;}_0x3cf6df[_0xf7b8('0x1b')](dbH[_0xf7b8('0x1c')][_0xf7b8('0x1d')](util['format'](_0xf7b8('0x1e'),QUERY,_0x849bc5,_0x231d3d),{'type':dbH[_0xf7b8('0x1c')]['QueryTypes']['SELECT']}));});if(_0x363cc8>0x0){_0x231d3d+=_0x849bc5;_0x3cf6df[_0xf7b8('0x1b')](dbH['sequelize']['query'](util[_0xf7b8('0x10')](_0xf7b8('0x1e'),QUERY,_0x363cc8,_0x231d3d),{'type':dbH[_0xf7b8('0x1c')][_0xf7b8('0x17')][_0xf7b8('0x1f')]}));}}}else{_0x3cf6df[_0xf7b8('0x1b')](dbH[_0xf7b8('0x1c')][_0xf7b8('0x1d')](QUERY,{'type':dbH[_0xf7b8('0x1c')][_0xf7b8('0x17')][_0xf7b8('0x1f')]}));}var _0x1c3dde=path[_0xf7b8('0x20')](PATH);var _0x28866c=path['basename'](PATH,_0xf7b8('0x21'));var _0x726ae=_0x286c37[_0xf7b8('0x1a')]&&_0x3cf6df['length']>0x1;var _0x79c300=[];if(!fs['existsSync'](path[_0xf7b8('0x22')](_0x1c3dde,_0x28866c))&&_0x726ae){fs[_0xf7b8('0x23')](path['join'](_0x1c3dde,_0x28866c));}return BPromise['each'](_0x3cf6df,function(_0x12359e){_0x79c300['push'](_0x12359e);})[_0xf7b8('0x15')](function(){for(var _0x4e5071=0x0;_0x4e5071<_0x79c300[_0xf7b8('0x24')];_0x4e5071+=0x1){var _0x49d72b;var _0x1ff365=_0x79c300[_0x4e5071];if(_0x726ae){_0x49d72b=path[_0xf7b8('0x22')](_0x1c3dde,_0x28866c,util[_0xf7b8('0x10')](_0xf7b8('0x25'),_0x28866c,_0x4e5071,_0xf7b8('0x26')));}else{_0x49d72b=path['join'](_0x1c3dde,util[_0xf7b8('0x10')](_0xf7b8('0x27'),_0x28866c,_0xf7b8('0x26')));}fs[_0xf7b8('0x28')](_0x49d72b,json2xls(_0x1ff365),_0xf7b8('0x29'));}})[_0xf7b8('0x15')](function(){if(_0x726ae){return new Promise(function(_0x27d00a){zipdir(path[_0xf7b8('0x22')](_0x1c3dde,_0x28866c),{'saveTo':path['join'](_0x1c3dde,util[_0xf7b8('0x10')](_0xf7b8('0x27'),_0x28866c,_0xf7b8('0x2a')))},function(_0x320a7f,_0x4efcc6){rimraf(path['join'](_0x1c3dde,_0x28866c),function(){});_0x27d00a(_0xf7b8('0x2b'));});});}})[_0xf7b8('0x15')](function(){logger[_0xf7b8('0xf')](util[_0xf7b8('0x10')](_0xf7b8('0x2c'),EXTRACTED_REPORT_ID,_0xf7b8('0x12')));return analyticExtractedReport('Completed',_0x726ae?util[_0xf7b8('0x10')]('%s.%s',_0x28866c,_0x726ae?_0xf7b8('0x2a'):_0xf7b8('0x26')):null);});})[_0xf7b8('0x2d')](function(_0x191c66){logger[_0xf7b8('0xf')](util[_0xf7b8('0x10')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xf7b8('0x12')),util['inspect'](_0x191c66,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0xf7b8('0x2e')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
index dc0585d..a24f1b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef4=['appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','last','Hangup','concat','destroy','bulkCreate','sortBy','catch','error','util','models','findAll','then','intervals','VoiceExtension','IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','playback','hasOwnProperty','priority','extension','find','push','Set','format','CDR(type)=%s','VoiceExtensionId','type','inbound','extensions','CDR(routeid)=','context','outbound','CDR(destination)=','cutdigits','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','createdAt','*,*,*,*','interval','CDR(tag)=','tag','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','app'];(function(_0xbb2e58,_0x1fe145){var _0x2f0d91=function(_0x331b3c){while(--_0x331b3c){_0xbb2e58['push'](_0xbb2e58['shift']());}};_0x2f0d91(++_0x1fe145);}(_0x2ef4,0xe5));var _0x42ef=function(_0x9afcc2,_0x5aa399){_0x9afcc2=_0x9afcc2-0x0;var _0x2b6f2f=_0x2ef4[_0x9afcc2];return _0x2b6f2f;};'use strict';var _=require('lodash');var util=require(_0x42ef('0x0'));function rewrite(_0x490a6d,_0x4bc54c){var _0x21065a=this;return _0x490a6d[_0x42ef('0x1')]['Interval'][_0x42ef('0x2')]({'raw':!![]})[_0x42ef('0x3')](function(_0x46db36){_0x21065a[_0x42ef('0x4')]=_0x46db36;return _0x490a6d[_0x42ef('0x1')][_0x42ef('0x5')][_0x42ef('0x2')]({'where':{'IntervalId':_0x4bc54c[_0x42ef('0x6')]},'raw':!![]});})[_0x42ef('0x3')](function(_0x368daa){return _0x490a6d[_0x42ef('0x1')][_0x42ef('0x5')][_0x42ef('0x2')]({'where':{'exten':{'$in':_[_0x42ef('0x7')](_[_0x42ef('0x8')](_0x368daa,_0x42ef('0x9')))}},'order':[{'raw':_0x42ef('0xa')}],'raw':!![]});})['then'](function(_0x237bf1){var _0x1b7391=_[_0x42ef('0xb')](_0x237bf1,{'priority':'1'});var _0x4e3fd9=_[_0x42ef('0xb')](_0x237bf1,{'isApp':0x1});var _0xfd29d4=_[_0x42ef('0xc')](_0x4e3fd9,_0x42ef('0x9'));var _0x364f62=['queue',_0x42ef('0xd')];var _0x33d00d=[];var _0x1140ec=[];for(var _0x510820 in _0xfd29d4){if(_0xfd29d4[_0x42ef('0xe')](_0x510820)){_0x21065a[_0x42ef('0xf')]=0x2;_0x21065a['extensions']=[];_0x21065a[_0x42ef('0x10')]=_[_0x42ef('0x11')](_0x1b7391,{'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')]});_0x21065a['extensions'][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0]['type'],'app':_0x42ef('0x13'),'appdata':util[_0x42ef('0x14')](_0x42ef('0x15'),_0xfd29d4[_0x510820][0x0]['type']),'context':_0xfd29d4[_0x510820][0x0]['context'],'exten':_0xfd29d4[_0x510820][0x0]['exten'],'priority':_0x21065a['priority']++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});if(_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')]===_0x42ef('0x18')){_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x1a')+_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')],'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a['priority']++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});}else if(_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')]===_0x42ef('0x1c')){if(_0x21065a[_0x42ef('0x10')]){_0x21065a['extensions'][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x1d')+(_0x21065a[_0x42ef('0x10')]['cutdigits']?'${EXTEN:'+_0x21065a[_0x42ef('0x10')][_0x42ef('0x1e')]+'}':'${EXTEN}'),'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});}_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':'CDR(routeid)='+_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')],'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0]['exten'],'priority':_0x21065a['priority']++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});var _0x20afbc=_0x21065a[_0x42ef('0xf')]++;_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x1f'),'appdata':_0x42ef('0x20')+(_0x20afbc+0x2)+'):Goto('+(_0x20afbc+0x1)+')','context':_0xfd29d4[_0x510820][0x0]['context'],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x20afbc,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});if(_0x21065a[_0x42ef('0x10')]){_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x21065a['extension'][_0x42ef('0x1e')]?_0x42ef('0x21')+_0x21065a[_0x42ef('0x10')]['cutdigits']+'}':_0x42ef('0x22'),'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a['priority']++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});}_0x21065a[_0x42ef('0x19')]['push']({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':'Set','appdata':_0x42ef('0x23')+_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')],'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});if(_0x21065a[_0x42ef('0x10')]&&_0x21065a[_0x42ef('0x10')][_0x42ef('0xe')](_0x42ef('0x24'))&&_0x21065a['extension'][_0x42ef('0x24')]!==_0x42ef('0x25')){_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x26'),'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0]['exten'],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0]['VoiceExtensionId']});_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x27')+_0x21065a[_0x42ef('0x10')]['recordingFormat']||_0x42ef('0x28'),'context':_0xfd29d4[_0x510820][0x0]['context'],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});}}_0x21065a['extensions'][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x29'),'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0]['exten'],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0]['VoiceExtensionId']});_0x21065a[_0x42ef('0x19')][_0x42ef('0x12')]({'type':_0xfd29d4[_0x510820][0x0]['type'],'app':'Set','appdata':_0x42ef('0x2a'),'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});_0x21065a['extensions']['push']({'type':_0xfd29d4[_0x510820][0x0][_0x42ef('0x17')],'app':'Set','appdata':_0x42ef('0x2b'),'context':_0xfd29d4[_0x510820][0x0]['context'],'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'priority':_0x21065a[_0x42ef('0xf')]++,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});for(var _0x2c1065=0x0,_0x57ac38=0x0;_0x2c1065<_0xfd29d4[_0x510820][_0x42ef('0x2c')];_0x2c1065+=0x1,_0x57ac38=0x0){var _0x154392=_0xfd29d4[_0x510820][_0x2c1065];if(_0x154392[_0x42ef('0x17')]){_0x154392[_0x42ef('0x17')]=_0x154392[_0x42ef('0x17')]['toLowerCase']();}var _0x3140b2=[];var _0x3d9330=[];delete _0x154392['id'];delete _0x154392[_0x42ef('0x2d')];delete _0x154392['updatedAt'];var _0x116f5e=_0x154392['interval']!==_0x42ef('0x2e')?[_0x154392[_0x42ef('0x2f')]]:_0x154392[_0x42ef('0x6')]?_[_0x42ef('0x8')](_[_0x42ef('0xb')](_0x21065a[_0x42ef('0x4')],{'IntervalId':_0x154392[_0x42ef('0x6')]}),'interval'):[];if(_0x154392[_0x42ef('0xe')]('tag')){if(_0x154392['tag']&&_0x154392['tag']!=='--'){_0x3140b2[_0x42ef('0x12')]({'type':_0x154392[_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x30')+_0x154392[_0x42ef('0x31')],'context':_0x154392[_0x42ef('0x1b')],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e[_0x42ef('0x2c')]+_0x21065a[_0x42ef('0xf')]+_0x57ac38++,'VoiceExtensionId':_0x154392[_0x42ef('0x16')]});}}if(_0x154392['type']===_0x42ef('0x1c')&&_0x154392[_0x42ef('0xe')](_0x42ef('0x32'))){if(_0x154392[_0x42ef('0x32')]){_0x3140b2[_0x42ef('0x12')]({'type':_0x154392['type'],'app':_0x42ef('0x1f'),'appdata':_0x42ef('0x33')+_0x154392['callerID']+')','context':_0x154392[_0x42ef('0x1b')],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e[_0x42ef('0x2c')]+_0x21065a[_0x42ef('0xf')]+_0x57ac38++,'VoiceExtensionId':_0x154392['VoiceExtensionId']});}else{_0x3140b2[_0x42ef('0x12')]({'type':_0x154392[_0x42ef('0x17')],'app':_0x42ef('0x1f'),'appdata':_0x42ef('0x34'),'context':_0x154392[_0x42ef('0x1b')],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e['length']+_0x21065a[_0x42ef('0xf')]+_0x57ac38++,'VoiceExtensionId':_0x154392['VoiceExtensionId']});}}if(_0x154392[_0x42ef('0xe')](_0x42ef('0x35'))){if(_0x364f62['indexOf'](_0x154392[_0x42ef('0x36')]['toLowerCase']())>=0x0&&_0x154392[_0x42ef('0x37')]!==_0x42ef('0x38')){if(_0x154392[_0x42ef('0x35')]){_0x3140b2['push']({'type':_0x154392[_0x42ef('0x17')],'app':_0x42ef('0x1f'),'appdata':_0x42ef('0x39'),'context':_0x154392['context'],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e[_0x42ef('0x2c')]+_0x21065a[_0x42ef('0xf')]+_0x57ac38++,'VoiceExtensionId':_0x154392[_0x42ef('0x16')]});_0x3140b2[_0x42ef('0x12')]({'type':_0x154392[_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':_0x42ef('0x3a'),'context':_0x154392[_0x42ef('0x1b')],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e[_0x42ef('0x2c')]+_0x21065a['priority']+_0x57ac38++,'VoiceExtensionId':_0x154392['VoiceExtensionId']});}else{_0x3140b2['push']({'type':_0x154392[_0x42ef('0x17')],'app':'ExecIf','appdata':_0x42ef('0x3b'),'context':_0x154392['context'],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e[_0x42ef('0x2c')]+_0x21065a[_0x42ef('0xf')]+_0x57ac38++,'VoiceExtensionId':_0x154392['VoiceExtensionId']});_0x3140b2['push']({'type':_0x154392[_0x42ef('0x17')],'app':_0x42ef('0x13'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x154392['context'],'exten':_0x154392[_0x42ef('0x9')],'priority':_0x116f5e[_0x42ef('0x2c')]+_0x21065a['priority']+_0x57ac38++,'VoiceExtensionId':_0x154392[_0x42ef('0x16')]});}}}for(var _0x5bf2b7=0x0;_0x5bf2b7<_0x116f5e['length'];_0x5bf2b7+=0x1){var _0x4f8e55=_0x21065a[_0x42ef('0xf')]+_0x116f5e[_0x42ef('0x2c')];var _0x2e777b=_0x5bf2b7===_0x116f5e[_0x42ef('0x2c')]-0x1?_0x21065a[_0x42ef('0xf')]+_0x3140b2[_0x42ef('0x2c')]+_0x3d9330['length']+0x2:_0x21065a[_0x42ef('0xf')]+_0x5bf2b7+0x1;_0x3140b2[_0x42ef('0x3c')](_0x5bf2b7,0x0,{'type':_0x154392[_0x42ef('0x17')],'app':_0x42ef('0x3d'),'appdata':_0x116f5e[_0x5bf2b7]+'?'+_0x154392[_0x42ef('0x1b')]+_0x42ef('0x3e')+_0x4f8e55+':'+_0x154392['context']+',${EXTEN},'+_0x2e777b,'exten':_0x154392['exten'],'context':_0x154392[_0x42ef('0x1b')],'priority':_0x21065a['priority']+_0x5bf2b7,'VoiceExtensionId':_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]});}_0x154392['priority']=_0x3140b2[_0x42ef('0x2c')]?_['last'](_0x3140b2)[_0x42ef('0xf')]+0x1:_0x21065a[_0x42ef('0xf')];_0x21065a['priority']=(_0x3d9330[_0x42ef('0x2c')]?_[_0x42ef('0x3f')](_0x3d9330)['priority']:_0x154392[_0x42ef('0xf')])+0x1;_0x21065a[_0x42ef('0x19')]=_['concat'](_0x21065a[_0x42ef('0x19')],_0x3140b2,[_0x154392],_0x3d9330);}_0x21065a[_0x42ef('0x19')]['push']({'type':_0xfd29d4[_0x510820][0x0]['type'],'app':_0x42ef('0x40'),'exten':_0xfd29d4[_0x510820][0x0][_0x42ef('0x9')],'context':_0xfd29d4[_0x510820][0x0][_0x42ef('0x1b')],'priority':_0x21065a[_0x42ef('0xf')],'VoiceExtensionId':_0xfd29d4[_0x510820][0x0]['VoiceExtensionId']});_0x33d00d[_0x42ef('0x12')](_0xfd29d4[_0x510820][0x0][_0x42ef('0x16')]);_0x1140ec=_[_0x42ef('0x41')](_0x1140ec,_0x21065a[_0x42ef('0x19')]);}}return _0x490a6d['transaction'](function(_0x346d93){return _0x490a6d[_0x42ef('0x1')][_0x42ef('0x5')][_0x42ef('0x42')]({'where':{'VoiceExtensionId':{'$in':_0x33d00d}},'transaction':_0x346d93})[_0x42ef('0x3')](function(_0xb0ee4a){return _0x490a6d['models'][_0x42ef('0x5')][_0x42ef('0x43')](_[_0x42ef('0x44')](_0x1140ec,_0x42ef('0xf')),{'transaction':_0x346d93});});});})[_0x42ef('0x45')](function(_0x57a36d){console[_0x42ef('0x46')](_0x57a36d);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0xa66b=['ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','appType','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','destroy','sortBy','error','lodash','models','then','intervals','findAll','IntervalId','VoiceExtension','map','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','hasOwnProperty','priority','extensions','exten','push','format','type','inbound','Set','CDR(routeid)=','VoiceExtensionId','context','outbound','extension','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}'];(function(_0x12506d,_0x35e76f){var _0x5cd1d7=function(_0x51b289){while(--_0x51b289){_0x12506d['push'](_0x12506d['shift']());}};_0x5cd1d7(++_0x35e76f);}(_0xa66b,0xa7));var _0xba66=function(_0x5ecc5d,_0x38d142){_0x5ecc5d=_0x5ecc5d-0x0;var _0x5b98a3=_0xa66b[_0x5ecc5d];return _0x5b98a3;};'use strict';var _=require(_0xba66('0x0'));var util=require('util');function rewrite(_0x198fb9,_0x353a5f){var _0x64c33f=this;return _0x198fb9[_0xba66('0x1')]['Interval']['findAll']({'raw':!![]})[_0xba66('0x2')](function(_0x5495e7){_0x64c33f[_0xba66('0x3')]=_0x5495e7;return _0x198fb9[_0xba66('0x1')]['VoiceExtension'][_0xba66('0x4')]({'where':{'IntervalId':_0x353a5f[_0xba66('0x5')]},'raw':!![]});})['then'](function(_0x33ccde){return _0x198fb9[_0xba66('0x1')][_0xba66('0x6')][_0xba66('0x4')]({'where':{'exten':{'$in':_['uniq'](_[_0xba66('0x7')](_0x33ccde,'exten'))}},'order':[{'raw':_0xba66('0x8')}],'raw':!![]});})['then'](function(_0x162ffd){var _0x3126f0=_[_0xba66('0x9')](_0x162ffd,{'priority':'1'});var _0x1bd1a2=_['filter'](_0x162ffd,{'isApp':0x1});var _0x59ecd3=_[_0xba66('0xa')](_0x1bd1a2,'exten');var _0xeccae0=[_0xba66('0xb'),_0xba66('0xc')];var _0x19bdc1=[];var _0x4bd449=[];for(var _0x18f577 in _0x59ecd3){if(_0x59ecd3[_0xba66('0xd')](_0x18f577)){_0x64c33f[_0xba66('0xe')]=0x2;_0x64c33f[_0xba66('0xf')]=[];_0x64c33f['extension']=_['find'](_0x3126f0,{'exten':_0x59ecd3[_0x18f577][0x0][_0xba66('0x10')]});_0x64c33f[_0xba66('0xf')][_0xba66('0x11')]({'type':_0x59ecd3[_0x18f577][0x0]['type'],'app':'Set','appdata':util[_0xba66('0x12')]('CDR(type)=%s',_0x59ecd3[_0x18f577][0x0][_0xba66('0x13')]),'context':_0x59ecd3[_0x18f577][0x0]['context'],'exten':_0x59ecd3[_0x18f577][0x0][_0xba66('0x10')],'priority':_0x64c33f[_0xba66('0xe')]++,'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0]['VoiceExtensionId']});if(_0x59ecd3[_0x18f577][0x0][_0xba66('0x13')]===_0xba66('0x14')){_0x64c33f['extensions'][_0xba66('0x11')]({'type':_0x59ecd3[_0x18f577][0x0]['type'],'app':_0xba66('0x15'),'appdata':_0xba66('0x16')+_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')],'context':_0x59ecd3[_0x18f577][0x0][_0xba66('0x18')],'exten':_0x59ecd3[_0x18f577][0x0][_0xba66('0x10')],'priority':_0x64c33f[_0xba66('0xe')]++,'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')]});}else if(_0x59ecd3[_0x18f577][0x0][_0xba66('0x13')]===_0xba66('0x19')){if(_0x64c33f[_0xba66('0x1a')]){_0x64c33f['extensions'][_0xba66('0x11')]({'type':_0x59ecd3[_0x18f577][0x0][_0xba66('0x13')],'app':'Set','appdata':_0xba66('0x1b')+(_0x64c33f[_0xba66('0x1a')][_0xba66('0x1c')]?_0xba66('0x1d')+_0x64c33f[_0xba66('0x1a')]['cutdigits']+'}':_0xba66('0x1e')),'context':_0x59ecd3[_0x18f577][0x0][_0xba66('0x18')],'exten':_0x59ecd3[_0x18f577][0x0]['exten'],'priority':_0x64c33f[_0xba66('0xe')]++,'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')]});}_0x64c33f[_0xba66('0xf')][_0xba66('0x11')]({'type':_0x59ecd3[_0x18f577][0x0][_0xba66('0x13')],'app':_0xba66('0x15'),'appdata':_0xba66('0x16')+_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')],'context':_0x59ecd3[_0x18f577][0x0][_0xba66('0x18')],'exten':_0x59ecd3[_0x18f577][0x0][_0xba66('0x10')],'priority':_0x64c33f['priority']++,'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')]});var _0x1dad27=_0x64c33f[_0xba66('0xe')]++;_0x64c33f['extensions'][_0xba66('0x11')]({'type':_0x59ecd3[_0x18f577][0x0][_0xba66('0x13')],'app':_0xba66('0x1f'),'appdata':_0xba66('0x20')+(_0x1dad27+0x2)+'):Goto('+(_0x1dad27+0x1)+')','context':_0x59ecd3[_0x18f577][0x0][_0xba66('0x18')],'exten':_0x59ecd3[_0x18f577][0x0]['exten'],'priority':_0x1dad27,'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0]['VoiceExtensionId']});if(_0x64c33f[_0xba66('0x1a')]){_0x64c33f[_0xba66('0xf')]['push']({'type':_0x59ecd3[_0x18f577][0x0][_0xba66('0x13')],'app':_0xba66('0x15'),'appdata':_0x64c33f['extension'][_0xba66('0x1c')]?_0xba66('0x21')+_0x64c33f['extension'][_0xba66('0x1c')]+'}':_0xba66('0x22'),'context':_0x59ecd3[_0x18f577][0x0][_0xba66('0x18')],'exten':_0x59ecd3[_0x18f577][0x0][_0xba66('0x10')],'priority':_0x64c33f[_0xba66('0xe')]++,'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0]['VoiceExtensionId']});}_0x64c33f[_0xba66('0xf')][_0xba66('0x11')]({'type':_0x59ecd3[_0x18f577][0x0][_0xba66('0x13')],'app':_0xba66('0x15'),'appdata':'outboundrouteid='+_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')],'context':_0x59ecd3[_0x18f577][0x0]['context'],'exten':_0x59ecd3[_0x18f577][0x0][_0xba66('0x10')],'priority':_0x64c33f[_0xba66('0xe')]++,'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')]});if(_0x64c33f[_0xba66('0x1a')]&&_0x64c33f['extension'][_0xba66('0xd')](_0xba66('0x23'))&&_0x64c33f[_0xba66('0x1a')][_0xba66('0x23')]!==_0xba66('0x24')){_0x64c33f[_0xba66('0xf')][_0xba66('0x11')]({'type':_0x59ecd3[_0x18f577][0x0][_0xba66('0x13')],'app':_0xba66('0x15'),'appdata':_0xba66('0x25'),'context':_0x59ecd3[_0x18f577][0x0][_0xba66('0x18')],'exten':_0x59ecd3[_0x18f577][0x0]['exten'],'priority':_0x64c33f[_0xba66('0xe')]++,'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')]});_0x64c33f[_0xba66('0xf')][_0xba66('0x11')]({'type':_0x59ecd3[_0x18f577][0x0]['type'],'app':_0xba66('0x15'),'appdata':_0xba66('0x26')+_0x64c33f[_0xba66('0x1a')]['recordingFormat']||_0xba66('0x27'),'context':_0x59ecd3[_0x18f577][0x0][_0xba66('0x18')],'exten':_0x59ecd3[_0x18f577][0x0][_0xba66('0x10')],'priority':_0x64c33f[_0xba66('0xe')]++,'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')]});}}_0x64c33f[_0xba66('0xf')]['push']({'type':_0x59ecd3[_0x18f577][0x0][_0xba66('0x13')],'app':'Set','appdata':_0xba66('0x28'),'context':_0x59ecd3[_0x18f577][0x0][_0xba66('0x18')],'exten':_0x59ecd3[_0x18f577][0x0][_0xba66('0x10')],'priority':_0x64c33f[_0xba66('0xe')]++,'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')]});_0x64c33f['extensions']['push']({'type':_0x59ecd3[_0x18f577][0x0]['type'],'app':_0xba66('0x15'),'appdata':_0xba66('0x29'),'context':_0x59ecd3[_0x18f577][0x0][_0xba66('0x18')],'exten':_0x59ecd3[_0x18f577][0x0][_0xba66('0x10')],'priority':_0x64c33f[_0xba66('0xe')]++,'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')]});_0x64c33f[_0xba66('0xf')][_0xba66('0x11')]({'type':_0x59ecd3[_0x18f577][0x0]['type'],'app':'Set','appdata':_0xba66('0x2a'),'context':_0x59ecd3[_0x18f577][0x0][_0xba66('0x18')],'exten':_0x59ecd3[_0x18f577][0x0][_0xba66('0x10')],'priority':_0x64c33f[_0xba66('0xe')]++,'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0]['VoiceExtensionId']});for(var _0x2382ff=0x0,_0x23ebd2=0x0;_0x2382ff<_0x59ecd3[_0x18f577][_0xba66('0x2b')];_0x2382ff+=0x1,_0x23ebd2=0x0){var _0xdfabc5=_0x59ecd3[_0x18f577][_0x2382ff];if(_0xdfabc5['type']){_0xdfabc5[_0xba66('0x13')]=_0xdfabc5[_0xba66('0x13')][_0xba66('0x2c')]();}var _0x15350c=[];var _0x391331=[];delete _0xdfabc5['id'];delete _0xdfabc5['createdAt'];delete _0xdfabc5[_0xba66('0x2d')];var _0x10a909=_0xdfabc5[_0xba66('0x2e')]!==_0xba66('0x2f')?[_0xdfabc5[_0xba66('0x2e')]]:_0xdfabc5[_0xba66('0x5')]?_[_0xba66('0x7')](_['filter'](_0x64c33f[_0xba66('0x3')],{'IntervalId':_0xdfabc5[_0xba66('0x5')]}),'interval'):[];if(_0xdfabc5[_0xba66('0xd')](_0xba66('0x30'))){if(_0xdfabc5[_0xba66('0x30')]&&_0xdfabc5[_0xba66('0x30')]!=='--'){_0x15350c[_0xba66('0x11')]({'type':_0xdfabc5[_0xba66('0x13')],'app':_0xba66('0x15'),'appdata':_0xba66('0x31')+_0xdfabc5[_0xba66('0x30')],'context':_0xdfabc5[_0xba66('0x18')],'exten':_0xdfabc5[_0xba66('0x10')],'priority':_0x10a909[_0xba66('0x2b')]+_0x64c33f[_0xba66('0xe')]+_0x23ebd2++,'VoiceExtensionId':_0xdfabc5[_0xba66('0x17')]});}}if(_0xdfabc5[_0xba66('0x13')]===_0xba66('0x19')&&_0xdfabc5['hasOwnProperty'](_0xba66('0x32'))){if(_0xdfabc5['callerID']){_0x15350c[_0xba66('0x11')]({'type':_0xdfabc5[_0xba66('0x13')],'app':_0xba66('0x1f'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0xdfabc5[_0xba66('0x32')]+')','context':_0xdfabc5[_0xba66('0x18')],'exten':_0xdfabc5[_0xba66('0x10')],'priority':_0x10a909[_0xba66('0x2b')]+_0x64c33f[_0xba66('0xe')]+_0x23ebd2++,'VoiceExtensionId':_0xdfabc5['VoiceExtensionId']});}else{_0x15350c[_0xba66('0x11')]({'type':_0xdfabc5[_0xba66('0x13')],'app':_0xba66('0x1f'),'appdata':_0xba66('0x33'),'context':_0xdfabc5[_0xba66('0x18')],'exten':_0xdfabc5['exten'],'priority':_0x10a909[_0xba66('0x2b')]+_0x64c33f['priority']+_0x23ebd2++,'VoiceExtensionId':_0xdfabc5[_0xba66('0x17')]});}}if(_0xdfabc5['hasOwnProperty'](_0xba66('0x34'))){if(_0xeccae0[_0xba66('0x35')](_0xdfabc5['app'][_0xba66('0x2c')]())>=0x0&&_0xdfabc5[_0xba66('0x36')]!=='custom'){if(_0xdfabc5[_0xba66('0x34')]){_0x15350c[_0xba66('0x11')]({'type':_0xdfabc5[_0xba66('0x13')],'app':_0xba66('0x1f'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0xdfabc5['context'],'exten':_0xdfabc5[_0xba66('0x10')],'priority':_0x10a909[_0xba66('0x2b')]+_0x64c33f[_0xba66('0xe')]+_0x23ebd2++,'VoiceExtensionId':_0xdfabc5['VoiceExtensionId']});_0x15350c[_0xba66('0x11')]({'type':_0xdfabc5[_0xba66('0x13')],'app':_0xba66('0x15'),'appdata':_0xba66('0x37'),'context':_0xdfabc5[_0xba66('0x18')],'exten':_0xdfabc5['exten'],'priority':_0x10a909[_0xba66('0x2b')]+_0x64c33f[_0xba66('0xe')]+_0x23ebd2++,'VoiceExtensionId':_0xdfabc5[_0xba66('0x17')]});}else{_0x15350c[_0xba66('0x11')]({'type':_0xdfabc5[_0xba66('0x13')],'app':'ExecIf','appdata':_0xba66('0x38'),'context':_0xdfabc5[_0xba66('0x18')],'exten':_0xdfabc5['exten'],'priority':_0x10a909[_0xba66('0x2b')]+_0x64c33f[_0xba66('0xe')]+_0x23ebd2++,'VoiceExtensionId':_0xdfabc5[_0xba66('0x17')]});_0x15350c[_0xba66('0x11')]({'type':_0xdfabc5[_0xba66('0x13')],'app':_0xba66('0x15'),'appdata':_0xba66('0x39'),'context':_0xdfabc5[_0xba66('0x18')],'exten':_0xdfabc5[_0xba66('0x10')],'priority':_0x10a909[_0xba66('0x2b')]+_0x64c33f[_0xba66('0xe')]+_0x23ebd2++,'VoiceExtensionId':_0xdfabc5['VoiceExtensionId']});}}}for(var _0x3b2ad3=0x0;_0x3b2ad3<_0x10a909[_0xba66('0x2b')];_0x3b2ad3+=0x1){var _0x12c2ea=_0x64c33f[_0xba66('0xe')]+_0x10a909['length'];var _0x43cd41=_0x3b2ad3===_0x10a909[_0xba66('0x2b')]-0x1?_0x64c33f[_0xba66('0xe')]+_0x15350c[_0xba66('0x2b')]+_0x391331['length']+0x2:_0x64c33f['priority']+_0x3b2ad3+0x1;_0x15350c[_0xba66('0x3a')](_0x3b2ad3,0x0,{'type':_0xdfabc5[_0xba66('0x13')],'app':_0xba66('0x3b'),'appdata':_0x10a909[_0x3b2ad3]+'?'+_0xdfabc5[_0xba66('0x18')]+',${EXTEN},'+_0x12c2ea+':'+_0xdfabc5[_0xba66('0x18')]+_0xba66('0x3c')+_0x43cd41,'exten':_0xdfabc5[_0xba66('0x10')],'context':_0xdfabc5[_0xba66('0x18')],'priority':_0x64c33f[_0xba66('0xe')]+_0x3b2ad3,'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')]});}_0xdfabc5[_0xba66('0xe')]=_0x15350c[_0xba66('0x2b')]?_[_0xba66('0x3d')](_0x15350c)[_0xba66('0xe')]+0x1:_0x64c33f[_0xba66('0xe')];_0x64c33f[_0xba66('0xe')]=(_0x391331[_0xba66('0x2b')]?_[_0xba66('0x3d')](_0x391331)[_0xba66('0xe')]:_0xdfabc5['priority'])+0x1;_0x64c33f[_0xba66('0xf')]=_['concat'](_0x64c33f[_0xba66('0xf')],_0x15350c,[_0xdfabc5],_0x391331);}_0x64c33f[_0xba66('0xf')][_0xba66('0x11')]({'type':_0x59ecd3[_0x18f577][0x0][_0xba66('0x13')],'app':'Hangup','exten':_0x59ecd3[_0x18f577][0x0][_0xba66('0x10')],'context':_0x59ecd3[_0x18f577][0x0][_0xba66('0x18')],'priority':_0x64c33f[_0xba66('0xe')],'VoiceExtensionId':_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')]});_0x19bdc1['push'](_0x59ecd3[_0x18f577][0x0][_0xba66('0x17')]);_0x4bd449=_[_0xba66('0x3e')](_0x4bd449,_0x64c33f[_0xba66('0xf')]);}}return _0x198fb9['transaction'](function(_0x1888a1){return _0x198fb9[_0xba66('0x1')][_0xba66('0x6')][_0xba66('0x3f')]({'where':{'VoiceExtensionId':{'$in':_0x19bdc1}},'transaction':_0x1888a1})['then'](function(_0x5e3fb8){return _0x198fb9['models'][_0xba66('0x6')]['bulkCreate'](_[_0xba66('0x40')](_0x4bd449,_0xba66('0xe')),{'transaction':_0x1888a1});});});})['catch'](function(_0x6b3c98){console[_0xba66('0x41')](_0x6b3c98);});}exports['rewrite']=rewrite;
\ No newline at end of file
index ed06e61..e5d74a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0150=['always','sequelize','query','VoiceQueueId','catch','VoiceQueue','BlackLists','all','Campaign','CampaignId','onlyIfOpen','Error\x20processing\x20rows\x20block:','emit','contact:csv_','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','defaults','localhost','redis','register','argv','undefined','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','contact','index','test','isNil','error','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','join','data','firstName','phone','phone\x20not\x20specified!','birthDate','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','find','Duplicate\x20Contact','CmContact','keys','then','push','pick','Error\x20while\x20creating\x20contact:\x20','message','stringify','cmContact','checkHopper','insert','fromQuery','ContactId','createdAt','select','field','scheduledAt','toString','NOW()','updatedAt','from','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','cm_hopper','\x20=\x20?','id\x20IN\x20?','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','into','deletedAt\x20IS\x20NULL','str','findAll','outbound','dialCheckDuplicateType','CmList','get'];(function(_0xb87d55,_0x578ce1){var _0x1c31c8=function(_0x2c0c64){while(--_0x2c0c64){_0xb87d55['push'](_0xb87d55['shift']());}};_0x1c31c8(++_0x578ce1);}(_0x0150,0xf1));var _0x0015=function(_0x594488,_0x1ec47c){_0x594488=_0x594488-0x0;var _0x11e60b=_0x0150[_0x594488];return _0x11e60b;};'use strict';var BPromise=require(_0x0015('0x0'));var util=require(_0x0015('0x1'));var _=require(_0x0015('0x2'));var fs=require('fs');var squel=require('squel');var Papa=require(_0x0015('0x3'));var Redis=require(_0x0015('0x4'));var db=require(_0x0015('0x5'))['db'];var config=require(_0x0015('0x6'));var logger=require(_0x0015('0x7'))(_0x0015('0x8'));config['redis']=_[_0x0015('0x9')](config['redis'],{'host':_0x0015('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0015('0xb')]));require('../../../api/cmContact/cmContact.socket')[_0x0015('0xc')](socket);try{if(!process[_0x0015('0xd')][0x2]||process[_0x0015('0xd')][0x2]===_0x0015('0xe')||process[_0x0015('0xd')][0x2]===_0x0015('0xf')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0x0015('0xd')][0x2];if(!process[_0x0015('0xd')][0x3]||process['argv'][0x3]===_0x0015('0xe')||process[_0x0015('0xd')][0x3]===_0x0015('0xf')||!process[_0x0015('0xd')][0x4]||process[_0x0015('0xd')][0x4]===_0x0015('0xe')||process[_0x0015('0xd')][0x4]===_0x0015('0xf')){throw new Error(_0x0015('0x10'));}var FIELDS=_[_0x0015('0x11')](process[_0x0015('0xd')][0x3][_0x0015('0x12')](','),process[_0x0015('0xd')][0x4][_0x0015('0x12')](','));if(!process[_0x0015('0xd')][0x5]||process['argv'][0x5]===_0x0015('0xe')||process[_0x0015('0xd')][0x5]==='null'){throw new Error(_0x0015('0x13'));}var LISTID=process[_0x0015('0xd')][0x5];var COMPANYID=process[_0x0015('0xd')][0x6]&&process[_0x0015('0xd')][0x6]!==_0x0015('0xe')&&process[_0x0015('0xd')][0x6]!==_0x0015('0xf')?process[_0x0015('0xd')][0x6]:null;var DUPLICATES=process[_0x0015('0xd')][0x7]&&process['argv'][0x7]!==_0x0015('0xe')&&process['argv'][0x7]!=='null'?process['argv'][0x7]:null;if(!process[_0x0015('0xd')][0x8]||process[_0x0015('0xd')][0x8]===_0x0015('0xe')||process[_0x0015('0xd')][0x8]===_0x0015('0xf')){throw new Error(_0x0015('0x14'));}var SOCKET_TIMESTAMP=process[_0x0015('0xd')][0x8];}catch(_0x298cd9){logger['error'](_0x298cd9);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x25f96c,_0x2f63e4,_0x563b5c,_0x57b74a){var _0x55f42b={'message':_0x2f63e4};_0x55f42b[_0x25f96c]=!![];if(_0x563b5c){_0x55f42b[_0x0015('0x15')]=_0x563b5c;}if(_0x57b74a){_0x55f42b[_0x0015('0x16')]=_0x57b74a;}return _0x55f42b;}function isEmail(_0x296074){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x0015('0x17')](_0x296074);}function checkRow(_0x3eedab,_0x48792a,_0x47547c){return new BPromise(function(_0x553833,_0x539d60){if(_[_0x0015('0x18')](_0x3eedab)){return _0x539d60(handleCheckRowError(_0x0015('0x19'),_0x0015('0x1a'),null,_0x47547c));}if(_0x3eedab[_0x0015('0x1b')]&&_0x3eedab['errors'][_0x0015('0x1c')]){var _0x3fc7e8=_['map'](_0x3eedab[_0x0015('0x1b')],'message')[_0x0015('0x1d')](';');return _0x539d60(handleCheckRowError(_0x0015('0x19'),_0x3fc7e8,null,_0x47547c));}var _0x2c9912={};for(var _0x28ffa7 in FIELDS){if(FIELDS['hasOwnProperty'](_0x28ffa7)&&FIELDS[_0x28ffa7]){_0x2c9912[_0x28ffa7]=_0x3eedab[_0x0015('0x1e')][0x0][FIELDS[_0x28ffa7]]||_0x3eedab[_0x0015('0x1e')][0x0]['\ufeff'+FIELDS[_0x28ffa7]];}}if(!_0x2c9912[_0x0015('0x1f')]){return _0x539d60(handleCheckRowError(_0x0015('0x19'),'firstName\x20not\x20specified!',null,_0x47547c));}if(!_0x2c9912[_0x0015('0x20')]){return _0x539d60(handleCheckRowError(_0x0015('0x19'),_0x0015('0x21'),null,_0x47547c));}if(_0x2c9912[_0x0015('0x22')]){var _0x5bf116=moment(_0x2c9912['birthDate'],'YYYY-MM-DD');if(!_0x5bf116[_0x0015('0x23')]()){return _0x539d60(handleCheckRowError(_0x0015('0x19'),_0x0015('0x24'),null,_0x47547c));}}if(_0x2c9912[_0x0015('0x25')]){if(!isEmail(_0x2c9912[_0x0015('0x25')])){return _0x539d60(handleCheckRowError('error',_0x0015('0x26'),null,_0x47547c));}}_0x2c9912[_0x0015('0x27')]=LISTID;_0x2c9912['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x0015('0x1c')]&&_0x48792a){var _0x3835e9={};for(var _0x4bd132=0x0,_0x33cb14=DUPLICATES[_0x0015('0x1c')];_0x4bd132<_0x33cb14;_0x4bd132+=0x1){_0x3835e9[DUPLICATES[_0x4bd132]]=_0x2c9912[DUPLICATES[_0x4bd132]];}var _0x1e9037=_[_0x0015('0x28')](_0x48792a,_0x3835e9);if(_0x1e9037){return _0x539d60(handleCheckRowError('duplicate',_0x0015('0x29'),_0x1e9037,_0x47547c));}}return db[_0x0015('0x2a')]['create'](_0x2c9912,{'raw':!![],'hooks':![],'fields':_[_0x0015('0x2b')](_0x2c9912)})[_0x0015('0x2c')](function(_0x2b1af6){if(DUPLICATES&&DUPLICATES['length']&&_0x48792a){_0x48792a[_0x0015('0x2d')](_[_0x0015('0x2e')](_0x2c9912,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2b1af6['id'];return _0x553833();})['catch'](function(_0x1303e7){return _0x539d60(handleCheckRowError(_0x0015('0x19'),_0x0015('0x2f')+(_0x1303e7[_0x0015('0x30')]||JSON[_0x0015('0x31')](_0x1303e7)),null,_0x47547c));});});}function checkHopper(){function _0x49183b(){return function(_0x30d103){logger[_0x0015('0x19')](_0x0015('0x32'),_0x0015('0x33'),util['inspect'](_0x30d103,{'showHidden':![],'depth':null}));};}var _0x134e05=function(_0x264f20,_0x362d5b){var _0x3e1989=squel[_0x0015('0x34')]()['into']('cm_hopper')[_0x0015('0x35')]([_0x0015('0x20'),'scheduledAt',_0x0015('0x36'),_0x0015('0x27'),_0x362d5b,_0x0015('0x37'),'updatedAt'],squel[_0x0015('0x38')]()[_0x0015('0x39')]('phone',_0x0015('0x20'))[_0x0015('0x39')]('NOW()',_0x0015('0x3a'))['field']('id',_0x0015('0x36'))['field'](LISTID['toString'](),'ListId')[_0x0015('0x39')](_0x264f20['id'][_0x0015('0x3b')](),_0x362d5b)[_0x0015('0x39')](_0x0015('0x3c'),_0x0015('0x37'))[_0x0015('0x39')]('NOW()',_0x0015('0x3d'))[_0x0015('0x3e')](_0x0015('0x3f'))[_0x0015('0x40')]('deletedAt\x20IS\x20NULL')['where'](_0x0015('0x41'),LISTID[_0x0015('0x3b')]())[_0x0015('0x40')](_0x0015('0x42'))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x0015('0x38')]()[_0x0015('0x39')](_0x0015('0x20'))[_0x0015('0x3e')](_0x0015('0x43'))[_0x0015('0x40')](_0x362d5b+_0x0015('0x44'),_0x264f20['id']['toString']())))['toString']();return _0x3e1989;};var _0x155403=function(_0x4789d7,_0x15abd1){var _0x3a75c7=squel['insert']()['into'](_0x0015('0x43'))[_0x0015('0x35')]([_0x0015('0x20'),'scheduledAt',_0x0015('0x36'),_0x0015('0x27'),_0x15abd1,'createdAt',_0x0015('0x3d')],squel[_0x0015('0x38')]()[_0x0015('0x39')](_0x0015('0x20'),_0x0015('0x20'))[_0x0015('0x39')](_0x0015('0x3c'),_0x0015('0x3a'))['field']('id',_0x0015('0x36'))[_0x0015('0x39')](LISTID[_0x0015('0x3b')](),'ListId')['field'](_0x4789d7['id'][_0x0015('0x3b')](),_0x15abd1)['field'](_0x0015('0x3c'),_0x0015('0x37'))[_0x0015('0x39')]('NOW()',_0x0015('0x3d'))['from'](_0x0015('0x3f'))[_0x0015('0x40')]('deletedAt\x20IS\x20NULL')[_0x0015('0x40')]('ListId\x20=\x20?',LISTID[_0x0015('0x3b')]())[_0x0015('0x40')](_0x0015('0x45'),squel['str'](hopperContacts))[_0x0015('0x40')](_0x0015('0x42'))[_0x0015('0x40')]('phone\x20NOT\x20IN\x20(?)',squel[_0x0015('0x38')]()[_0x0015('0x39')]('calleridnum')['from'](_0x0015('0x46'))[_0x0015('0x40')](_0x15abd1+_0x0015('0x44'),_0x4789d7['id']['toString']()))[_0x0015('0x40')](_0x0015('0x47'),squel[_0x0015('0x38')]()[_0x0015('0x39')](_0x0015('0x20'))[_0x0015('0x3e')](_0x0015('0x43'))[_0x0015('0x40')](_0x15abd1+_0x0015('0x44'),_0x4789d7['id']['toString']())))[_0x0015('0x3b')]();return _0x3a75c7;};function _0x4e3425(_0x9c04d2,_0x170e0b){var _0x1ff2cd=squel['insert']()[_0x0015('0x48')](_0x0015('0x43'))[_0x0015('0x35')]([_0x0015('0x20'),_0x0015('0x3a'),_0x0015('0x36'),'ListId',_0x170e0b,_0x0015('0x37'),_0x0015('0x3d')],squel['select']()['field'](_0x0015('0x20'),'phone')[_0x0015('0x39')]('NOW()',_0x0015('0x3a'))[_0x0015('0x39')]('id',_0x0015('0x36'))[_0x0015('0x39')](LISTID[_0x0015('0x3b')](),_0x0015('0x27'))[_0x0015('0x39')](_0x9c04d2['id'][_0x0015('0x3b')](),_0x170e0b)['field'](_0x0015('0x3c'),_0x0015('0x37'))[_0x0015('0x39')](_0x0015('0x3c'),_0x0015('0x3d'))[_0x0015('0x3e')](_0x0015('0x3f'))['where'](_0x0015('0x49'))[_0x0015('0x40')](_0x0015('0x41'),LISTID['toString']())['where'](_0x0015('0x45'),squel[_0x0015('0x4a')](hopperContacts))['where'](_0x0015('0x42')))['toString']();return _0x1ff2cd;}function _0x2c1f2d(_0x3b7e40,_0x1e54c7){var _0x4a8461=squel[_0x0015('0x34')]()[_0x0015('0x48')]('cm_hopper_black')['fromQuery'](['phone',_0x0015('0x36'),_0x0015('0x27'),_0x1e54c7,_0x0015('0x37'),'updatedAt'],squel[_0x0015('0x38')]()[_0x0015('0x39')](_0x0015('0x20'),_0x0015('0x20'))[_0x0015('0x39')]('id',_0x0015('0x36'))[_0x0015('0x39')](LISTID[_0x0015('0x3b')](),_0x0015('0x27'))[_0x0015('0x39')](_0x3b7e40['id'][_0x0015('0x3b')](),_0x1e54c7)[_0x0015('0x39')](_0x0015('0x3c'),_0x0015('0x37'))[_0x0015('0x39')]('NOW()',_0x0015('0x3d'))[_0x0015('0x3e')](_0x0015('0x3f'))[_0x0015('0x40')](_0x0015('0x49'))['where']('ListId\x20=\x20?',LISTID['toString']())['where'](_0x0015('0x45'),squel[_0x0015('0x4a')](hopperContacts))['where'](_0x0015('0x42')))[_0x0015('0x3b')]();return _0x4a8461;}return db['VoiceQueue'][_0x0015('0x4b')]({'where':{'type':_0x0015('0x4c')},'attributes':['id',_0x0015('0x4d')],'include':[{'model':db[_0x0015('0x4e')],'as':'Lists','where':{'id':LISTID}}]})[_0x0015('0x2c')](function(_0x64f439){var _0x5b47a8=[];if(_0x64f439){var _0x351941;for(var _0x45636c=0x0,_0x654991;_0x45636c<_0x64f439[_0x0015('0x1c')];_0x45636c+=0x1){_0x654991=_0x64f439[_0x45636c][_0x0015('0x4f')]({'plain':!![]});switch(_0x654991['dialCheckDuplicateType']){case _0x0015('0x50'):_0x5b47a8[_0x0015('0x2d')](db[_0x0015('0x51')][_0x0015('0x52')](_0x155403(_0x654991,_0x0015('0x53')))['then'](function(){})[_0x0015('0x54')](_0x49183b()));break;case'onlyIfOpen':_0x5b47a8[_0x0015('0x2d')](db[_0x0015('0x51')]['query'](_0x134e05(_0x654991,_0x0015('0x53')))['then'](function(){})[_0x0015('0x54')](_0x49183b()));break;default:_0x5b47a8[_0x0015('0x2d')](db['sequelize'][_0x0015('0x52')](_0x4e3425(_0x654991,_0x0015('0x53')))['then'](function(){})[_0x0015('0x54')](_0x49183b()));}}}return _0x5b47a8;})['all']()['then'](function(){return db[_0x0015('0x55')][_0x0015('0x4b')]({'where':{'type':_0x0015('0x4c')},'attributes':['id'],'include':[{'model':db[_0x0015('0x4e')],'as':_0x0015('0x56'),'where':{'id':LISTID}}]})[_0x0015('0x2c')](function(_0x530698){var _0x34a0de=[];if(_0x530698){var _0x10db70;for(var _0x2c272f=0x0,_0x391c0d;_0x2c272f<_0x530698[_0x0015('0x1c')];_0x2c272f+=0x1){_0x391c0d=_0x530698[_0x2c272f]['get']({'plain':!![]});_0x34a0de[_0x0015('0x2d')](db[_0x0015('0x51')]['query'](_0x2c1f2d(_0x391c0d,_0x0015('0x53')))[_0x0015('0x2c')](function(){})[_0x0015('0x54')](_0x49183b()));}}return _0x34a0de;})[_0x0015('0x57')]();})[_0x0015('0x2c')](function(){return db[_0x0015('0x58')][_0x0015('0x4b')]({'attributes':['id',_0x0015('0x4d')],'include':[{'model':db[_0x0015('0x4e')],'as':'Lists','where':{'id':LISTID}}]})[_0x0015('0x2c')](function(_0x56b066){var _0x1b563f=[];if(_0x56b066){for(var _0x257926=0x0,_0x153bbe;_0x257926<_0x56b066[_0x0015('0x1c')];_0x257926+=0x1){_0x153bbe=_0x56b066[_0x257926][_0x0015('0x4f')]({'plain':!![]});switch(_0x153bbe['dialCheckDuplicateType']){case _0x0015('0x50'):_0x1b563f['push'](db[_0x0015('0x51')][_0x0015('0x52')](_0x155403(_0x153bbe,_0x0015('0x59')))['then'](function(){})[_0x0015('0x54')](_0x49183b()));break;case _0x0015('0x5a'):_0x1b563f[_0x0015('0x2d')](db['sequelize'][_0x0015('0x52')](_0x134e05(_0x153bbe,'CampaignId'))[_0x0015('0x2c')](function(){})[_0x0015('0x54')](_0x49183b()));break;default:_0x1b563f[_0x0015('0x2d')](db[_0x0015('0x51')][_0x0015('0x52')](_0x4e3425(_0x153bbe,'CampaignId'))[_0x0015('0x2c')](function(){})[_0x0015('0x54')](_0x49183b()));}}}return _0x1b563f;})[_0x0015('0x57')]();})[_0x0015('0x2c')](function(){return db[_0x0015('0x58')]['findAll']({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x0015('0x56'),'where':{'id':LISTID}}]})[_0x0015('0x2c')](function(_0x2e23e4){var _0x225c14=[];if(_0x2e23e4){for(var _0x456710=0x0,_0xa13d3a;_0x456710<_0x2e23e4[_0x0015('0x1c')];_0x456710+=0x1){_0xa13d3a=_0x2e23e4[_0x456710]['get']({'plain':!![]});_0x225c14[_0x0015('0x2d')](db[_0x0015('0x51')][_0x0015('0x52')](_0x2c1f2d(_0xa13d3a,'CampaignId'))[_0x0015('0x2c')](function(){})[_0x0015('0x54')](_0x49183b()));}}return _0x225c14;})['all']();})[_0x0015('0x54')](function(_0x5677bb){logger[_0x0015('0x19')]('cmContact,\x20%s,\x20%s','generalCheckHopper',_0x5677bb[_0x0015('0x30')]);});}var processPromises=function(_0x9fd755){return BPromise[_0x0015('0x57')](promises)[_0x0015('0x2c')](function(_0x148cf2){})[_0x0015('0x54')](function(_0x23be25){logger['error'](_0x0015('0x5b'),JSON[_0x0015('0x31')](_0x23be25));})['finally'](function(){socket[_0x0015('0x5c')](_0x0015('0x5d')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x9fd755){return _0x9fd755['resume']();}});};var endCsv=function(){return BPromise[_0x0015('0x5e')]()['then'](function(){if(hopperContacts){return checkHopper();}})[_0x0015('0x2c')](function(){socket['emit'](_0x0015('0x5d')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x0015('0x5f')](FILEPATH);}catch(_0x2e9e91){logger[_0x0015('0x19')](_0x0015('0x60'),JSON['stringify'](_0x2e9e91));}finally{process[_0x0015('0x61')](0x0);}});};process['on']('SIGINT',function(){logger[_0x0015('0x62')](_0x0015('0x63'));endCsv();});function main(){return BPromise[_0x0015('0x5e')]()[_0x0015('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x0015('0x12')](',');return db[_0x0015('0x2a')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x0015('0x2c')](function(_0x52680f){var _0x49b9d8=fs[_0x0015('0x64')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x0015('0x65')](_0x49b9d8,{'header':!![],'skipEmptyLines':!![],'step':function(_0x36330a,_0x12158c){total+=0x1;var _0x41f011=total;promises[_0x0015('0x2d')](checkRow(_0x36330a,_0x52680f,_0x41f011)['then'](function(){success+=0x1;})[_0x0015('0x54')](function(_0xb9c9cc){if(_0xb9c9cc[_0x0015('0x19')]){errors+=0x1;delete _0xb9c9cc['error'];}else if(_0xb9c9cc['duplicate']){duplicates+=0x1;delete _0xb9c9cc[_0x0015('0x66')];}rows['push'](_0xb9c9cc);}));if(total%0xc8===0x0){_0x12158c[_0x0015('0x67')]();return processPromises(_0x12158c);}},'complete':function(){return processPromises()[_0x0015('0x2c')](function(){logger[_0x0015('0x62')](_0x0015('0x68'));endCsv();});},'error':function(_0x3015de,_0x5ca64c){logger[_0x0015('0x62')](_0x0015('0x69'),JSON[_0x0015('0x31')](_0x3015de));endCsv();}});})[_0x0015('0x54')](function(_0x1c91ee){logger[_0x0015('0x19')](_0x0015('0x6a'),JSON[_0x0015('0x31')](_0x1c91ee));});}main();
\ No newline at end of file
+var _0x4260=['then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','createdAt','select','field','NOW()','toString','updatedAt','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','id\x20IN\x20?','str','cm_hopper_final','cm_hopper_black','outbound','dialCheckDuplicateType','CmList','Lists','get','always','sequelize','query','VoiceQueueId','onlyIfOpen','all','VoiceQueue','findAll','BlackLists','CampaignId','Campaign','generalCheckHopper','stringify','finally','emit','contact:csv_','resolve','unlinkSync','exit','SIGINT','info','createReadStream','parse','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','squel','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','map','message','join','hasOwnProperty','data','firstName','phone\x20not\x20specified!','birthDate','isValid','email','email\x20format\x20is\x20not\x20valid!','CompanyId','length','find','duplicate','Duplicate\x20Contact','CmContact','create','keys'];(function(_0x25fc0f,_0x295e11){var _0x21ac53=function(_0x50f022){while(--_0x50f022){_0x25fc0f['push'](_0x25fc0f['shift']());}};_0x21ac53(++_0x295e11);}(_0x4260,0x1e6));var _0x0426=function(_0x11c681,_0x43a8d5){_0x11c681=_0x11c681-0x0;var _0x3690a6=_0x4260[_0x11c681];return _0x3690a6;};'use strict';var BPromise=require(_0x0426('0x0'));var util=require('util');var _=require('lodash');var fs=require('fs');var squel=require(_0x0426('0x1'));var Papa=require('papaparse');var Redis=require('ioredis');var db=require(_0x0426('0x2'))['db'];var config=require(_0x0426('0x3'));var logger=require(_0x0426('0x4'))(_0x0426('0x5'));config[_0x0426('0x6')]=_[_0x0426('0x7')](config[_0x0426('0x6')],{'host':_0x0426('0x8'),'port':0x18eb});var socket=require(_0x0426('0x9'))(new Redis(config['redis']));require(_0x0426('0xa'))[_0x0426('0xb')](socket);try{if(!process[_0x0426('0xc')][0x2]||process[_0x0426('0xc')][0x2]===_0x0426('0xd')||process[_0x0426('0xc')][0x2]===_0x0426('0xe')){throw new Error(_0x0426('0xf'));}var FILEPATH=process[_0x0426('0xc')][0x2];if(!process[_0x0426('0xc')][0x3]||process['argv'][0x3]===_0x0426('0xd')||process['argv'][0x3]==='null'||!process[_0x0426('0xc')][0x4]||process[_0x0426('0xc')][0x4]===_0x0426('0xd')||process[_0x0426('0xc')][0x4]===_0x0426('0xe')){throw new Error(_0x0426('0x10'));}var FIELDS=_['zipObject'](process[_0x0426('0xc')][0x3][_0x0426('0x11')](','),process[_0x0426('0xc')][0x4][_0x0426('0x11')](','));if(!process[_0x0426('0xc')][0x5]||process[_0x0426('0xc')][0x5]===_0x0426('0xd')||process[_0x0426('0xc')][0x5]===_0x0426('0xe')){throw new Error(_0x0426('0x12'));}var LISTID=process[_0x0426('0xc')][0x5];var COMPANYID=process[_0x0426('0xc')][0x6]&&process['argv'][0x6]!==_0x0426('0xd')&&process[_0x0426('0xc')][0x6]!==_0x0426('0xe')?process[_0x0426('0xc')][0x6]:null;var DUPLICATES=process[_0x0426('0xc')][0x7]&&process['argv'][0x7]!==_0x0426('0xd')&&process[_0x0426('0xc')][0x7]!=='null'?process[_0x0426('0xc')][0x7]:null;if(!process[_0x0426('0xc')][0x8]||process[_0x0426('0xc')][0x8]==='undefined'||process[_0x0426('0xc')][0x8]==='null'){throw new Error(_0x0426('0x13'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x4a929b){logger[_0x0426('0x14')](_0x4a929b);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(_0x1163b1,_0x423e3f,_0x36fb29,_0x3541a9){var _0x253dec={'message':_0x423e3f};_0x253dec[_0x1163b1]=!![];if(_0x36fb29){_0x253dec['contact']=_0x36fb29;}if(_0x3541a9){_0x253dec['index']=_0x3541a9;}return _0x253dec;}function isEmail(_0x32cfdc){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))*$/[_0x0426('0x15')](_0x32cfdc);}function checkRow(_0x4004ec,_0x367a94,_0xbf8faf){return new BPromise(function(_0x28eb51,_0x4c7067){if(_[_0x0426('0x16')](_0x4004ec)){return _0x4c7067(handleCheckRowError(_0x0426('0x14'),_0x0426('0x17'),null,_0xbf8faf));}if(_0x4004ec[_0x0426('0x18')]&&_0x4004ec['errors']['length']){var _0x2efdc4=_[_0x0426('0x19')](_0x4004ec[_0x0426('0x18')],_0x0426('0x1a'))[_0x0426('0x1b')](';');return _0x4c7067(handleCheckRowError(_0x0426('0x14'),_0x2efdc4,null,_0xbf8faf));}var _0x554199={};for(var _0x482a50 in FIELDS){if(FIELDS[_0x0426('0x1c')](_0x482a50)&&FIELDS[_0x482a50]){_0x554199[_0x482a50]=_0x4004ec[_0x0426('0x1d')][0x0][FIELDS[_0x482a50]]||_0x4004ec['data'][0x0]['\ufeff'+FIELDS[_0x482a50]];}}if(!_0x554199[_0x0426('0x1e')]){return _0x4c7067(handleCheckRowError(_0x0426('0x14'),'firstName\x20not\x20specified!',null,_0xbf8faf));}if(!_0x554199['phone']){return _0x4c7067(handleCheckRowError(_0x0426('0x14'),_0x0426('0x1f'),null,_0xbf8faf));}if(_0x554199[_0x0426('0x20')]){var _0x3626b1=moment(_0x554199[_0x0426('0x20')],'YYYY-MM-DD');if(!_0x3626b1[_0x0426('0x21')]()){return _0x4c7067(handleCheckRowError('error','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0xbf8faf));}}if(_0x554199[_0x0426('0x22')]){if(!isEmail(_0x554199[_0x0426('0x22')])){return _0x4c7067(handleCheckRowError('error',_0x0426('0x23'),null,_0xbf8faf));}}_0x554199['ListId']=LISTID;_0x554199[_0x0426('0x24')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x0426('0x25')]&&_0x367a94){var _0x225c50={};for(var _0x4a7090=0x0,_0x1a501b=DUPLICATES[_0x0426('0x25')];_0x4a7090<_0x1a501b;_0x4a7090+=0x1){_0x225c50[DUPLICATES[_0x4a7090]]=_0x554199[DUPLICATES[_0x4a7090]];}var _0x1b7e8b=_[_0x0426('0x26')](_0x367a94,_0x225c50);if(_0x1b7e8b){return _0x4c7067(handleCheckRowError(_0x0426('0x27'),_0x0426('0x28'),_0x1b7e8b,_0xbf8faf));}}return db[_0x0426('0x29')][_0x0426('0x2a')](_0x554199,{'raw':!![],'hooks':![],'fields':_[_0x0426('0x2b')](_0x554199)})[_0x0426('0x2c')](function(_0x28f8c2){if(DUPLICATES&&DUPLICATES['length']&&_0x367a94){_0x367a94[_0x0426('0x2d')](_[_0x0426('0x2e')](_0x554199,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x28f8c2['id'];return _0x28eb51();})[_0x0426('0x2f')](function(_0x193106){return _0x4c7067(handleCheckRowError(_0x0426('0x14'),_0x0426('0x30')+(_0x193106[_0x0426('0x1a')]||JSON['stringify'](_0x193106)),null,_0xbf8faf));});});}function checkHopper(){function _0x5c0e0c(){return function(_0xc208a3){logger[_0x0426('0x14')]('cmContact','checkHopper',util['inspect'](_0xc208a3,{'showHidden':![],'depth':null}));};}var _0x763733=function(_0x1ebb90,_0x32c8b9){var _0x20cc91=squel[_0x0426('0x31')]()[_0x0426('0x32')](_0x0426('0x33'))[_0x0426('0x34')]([_0x0426('0x35'),_0x0426('0x36'),_0x0426('0x37'),_0x0426('0x38'),_0x32c8b9,_0x0426('0x39'),'updatedAt'],squel[_0x0426('0x3a')]()[_0x0426('0x3b')](_0x0426('0x35'),_0x0426('0x35'))[_0x0426('0x3b')](_0x0426('0x3c'),'scheduledAt')[_0x0426('0x3b')]('id',_0x0426('0x37'))[_0x0426('0x3b')](LISTID[_0x0426('0x3d')](),_0x0426('0x38'))[_0x0426('0x3b')](_0x1ebb90['id'][_0x0426('0x3d')](),_0x32c8b9)[_0x0426('0x3b')](_0x0426('0x3c'),_0x0426('0x39'))[_0x0426('0x3b')]('NOW()',_0x0426('0x3e'))[_0x0426('0x3f')](_0x0426('0x40'))[_0x0426('0x41')](_0x0426('0x42'))[_0x0426('0x41')](_0x0426('0x43'),LISTID['toString']())[_0x0426('0x41')](_0x0426('0x44'))[_0x0426('0x41')](_0x0426('0x45'),squel[_0x0426('0x3a')]()['field'](_0x0426('0x35'))[_0x0426('0x3f')](_0x0426('0x33'))[_0x0426('0x41')](_0x32c8b9+_0x0426('0x46'),_0x1ebb90['id'][_0x0426('0x3d')]())))[_0x0426('0x3d')]();return _0x20cc91;};var _0x5cc3e5=function(_0x737d8e,_0x53d48a){var _0x2008e7=squel[_0x0426('0x31')]()['into'](_0x0426('0x33'))[_0x0426('0x34')](['phone',_0x0426('0x36'),_0x0426('0x37'),'ListId',_0x53d48a,_0x0426('0x39'),'updatedAt'],squel[_0x0426('0x3a')]()[_0x0426('0x3b')](_0x0426('0x35'),'phone')[_0x0426('0x3b')](_0x0426('0x3c'),_0x0426('0x36'))['field']('id',_0x0426('0x37'))[_0x0426('0x3b')](LISTID['toString'](),_0x0426('0x38'))[_0x0426('0x3b')](_0x737d8e['id'][_0x0426('0x3d')](),_0x53d48a)[_0x0426('0x3b')](_0x0426('0x3c'),_0x0426('0x39'))[_0x0426('0x3b')](_0x0426('0x3c'),'updatedAt')[_0x0426('0x3f')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0x0426('0x41')](_0x0426('0x43'),LISTID['toString']())[_0x0426('0x41')](_0x0426('0x47'),squel[_0x0426('0x48')](hopperContacts))[_0x0426('0x41')](_0x0426('0x44'))[_0x0426('0x41')](_0x0426('0x45'),squel[_0x0426('0x3a')]()['field']('calleridnum')[_0x0426('0x3f')](_0x0426('0x49'))[_0x0426('0x41')](_0x53d48a+_0x0426('0x46'),_0x737d8e['id'][_0x0426('0x3d')]()))['where'](_0x0426('0x45'),squel[_0x0426('0x3a')]()[_0x0426('0x3b')](_0x0426('0x35'))[_0x0426('0x3f')](_0x0426('0x33'))[_0x0426('0x41')](_0x53d48a+'\x20=\x20?',_0x737d8e['id'][_0x0426('0x3d')]())))[_0x0426('0x3d')]();return _0x2008e7;};function _0x15325d(_0x1e11cb,_0x4992e4){var _0x5e377b=squel[_0x0426('0x31')]()[_0x0426('0x32')](_0x0426('0x33'))[_0x0426('0x34')]([_0x0426('0x35'),'scheduledAt',_0x0426('0x37'),_0x0426('0x38'),_0x4992e4,_0x0426('0x39'),_0x0426('0x3e')],squel[_0x0426('0x3a')]()[_0x0426('0x3b')](_0x0426('0x35'),_0x0426('0x35'))[_0x0426('0x3b')]('NOW()','scheduledAt')['field']('id','ContactId')[_0x0426('0x3b')](LISTID[_0x0426('0x3d')](),_0x0426('0x38'))['field'](_0x1e11cb['id'][_0x0426('0x3d')](),_0x4992e4)[_0x0426('0x3b')](_0x0426('0x3c'),_0x0426('0x39'))[_0x0426('0x3b')](_0x0426('0x3c'),_0x0426('0x3e'))['from']('cm_contacts')[_0x0426('0x41')](_0x0426('0x42'))[_0x0426('0x41')](_0x0426('0x43'),LISTID['toString']())[_0x0426('0x41')]('id\x20IN\x20?',squel['str'](hopperContacts))[_0x0426('0x41')](_0x0426('0x44')))['toString']();return _0x5e377b;}function _0x10598d(_0x17665f,_0x546e91){var _0x43f89e=squel[_0x0426('0x31')]()[_0x0426('0x32')](_0x0426('0x4a'))['fromQuery']([_0x0426('0x35'),'ContactId',_0x0426('0x38'),_0x546e91,'createdAt',_0x0426('0x3e')],squel[_0x0426('0x3a')]()['field'](_0x0426('0x35'),_0x0426('0x35'))['field']('id','ContactId')[_0x0426('0x3b')](LISTID[_0x0426('0x3d')](),_0x0426('0x38'))[_0x0426('0x3b')](_0x17665f['id'][_0x0426('0x3d')](),_0x546e91)['field'](_0x0426('0x3c'),_0x0426('0x39'))['field']('NOW()',_0x0426('0x3e'))[_0x0426('0x3f')]('cm_contacts')[_0x0426('0x41')]('deletedAt\x20IS\x20NULL')[_0x0426('0x41')]('ListId\x20=\x20?',LISTID[_0x0426('0x3d')]())[_0x0426('0x41')](_0x0426('0x47'),squel['str'](hopperContacts))[_0x0426('0x41')](_0x0426('0x44')))[_0x0426('0x3d')]();return _0x43f89e;}return db['VoiceQueue']['findAll']({'where':{'type':_0x0426('0x4b')},'attributes':['id',_0x0426('0x4c')],'include':[{'model':db[_0x0426('0x4d')],'as':_0x0426('0x4e'),'where':{'id':LISTID}}]})['then'](function(_0x21617c){var _0x15d169=[];if(_0x21617c){var _0x561f49;for(var _0x58af49=0x0,_0x394e41;_0x58af49<_0x21617c['length'];_0x58af49+=0x1){_0x394e41=_0x21617c[_0x58af49][_0x0426('0x4f')]({'plain':!![]});switch(_0x394e41['dialCheckDuplicateType']){case _0x0426('0x50'):_0x15d169[_0x0426('0x2d')](db[_0x0426('0x51')][_0x0426('0x52')](_0x5cc3e5(_0x394e41,_0x0426('0x53')))[_0x0426('0x2c')](function(){})['catch'](_0x5c0e0c()));break;case _0x0426('0x54'):_0x15d169['push'](db[_0x0426('0x51')][_0x0426('0x52')](_0x763733(_0x394e41,'VoiceQueueId'))[_0x0426('0x2c')](function(){})[_0x0426('0x2f')](_0x5c0e0c()));break;default:_0x15d169[_0x0426('0x2d')](db[_0x0426('0x51')][_0x0426('0x52')](_0x15325d(_0x394e41,'VoiceQueueId'))[_0x0426('0x2c')](function(){})[_0x0426('0x2f')](_0x5c0e0c()));}}}return _0x15d169;})[_0x0426('0x55')]()[_0x0426('0x2c')](function(){return db[_0x0426('0x56')][_0x0426('0x57')]({'where':{'type':_0x0426('0x4b')},'attributes':['id'],'include':[{'model':db[_0x0426('0x4d')],'as':_0x0426('0x58'),'where':{'id':LISTID}}]})[_0x0426('0x2c')](function(_0x4addc9){var _0x4ab3b3=[];if(_0x4addc9){var _0x320aa6;for(var _0x4c3d65=0x0,_0x5d0472;_0x4c3d65<_0x4addc9[_0x0426('0x25')];_0x4c3d65+=0x1){_0x5d0472=_0x4addc9[_0x4c3d65][_0x0426('0x4f')]({'plain':!![]});_0x4ab3b3[_0x0426('0x2d')](db[_0x0426('0x51')][_0x0426('0x52')](_0x10598d(_0x5d0472,'VoiceQueueId'))[_0x0426('0x2c')](function(){})['catch'](_0x5c0e0c()));}}return _0x4ab3b3;})[_0x0426('0x55')]();})[_0x0426('0x2c')](function(){return db['Campaign'][_0x0426('0x57')]({'attributes':['id',_0x0426('0x4c')],'include':[{'model':db['CmList'],'as':_0x0426('0x4e'),'where':{'id':LISTID}}]})[_0x0426('0x2c')](function(_0x492f6e){var _0x35b039=[];if(_0x492f6e){for(var _0x17018b=0x0,_0x132874;_0x17018b<_0x492f6e[_0x0426('0x25')];_0x17018b+=0x1){_0x132874=_0x492f6e[_0x17018b][_0x0426('0x4f')]({'plain':!![]});switch(_0x132874[_0x0426('0x4c')]){case'always':_0x35b039['push'](db['sequelize'][_0x0426('0x52')](_0x5cc3e5(_0x132874,_0x0426('0x59')))['then'](function(){})[_0x0426('0x2f')](_0x5c0e0c()));break;case _0x0426('0x54'):_0x35b039[_0x0426('0x2d')](db[_0x0426('0x51')]['query'](_0x763733(_0x132874,_0x0426('0x59')))[_0x0426('0x2c')](function(){})[_0x0426('0x2f')](_0x5c0e0c()));break;default:_0x35b039[_0x0426('0x2d')](db[_0x0426('0x51')][_0x0426('0x52')](_0x15325d(_0x132874,_0x0426('0x59')))[_0x0426('0x2c')](function(){})[_0x0426('0x2f')](_0x5c0e0c()));}}}return _0x35b039;})['all']();})['then'](function(){return db[_0x0426('0x5a')]['findAll']({'attributes':['id'],'include':[{'model':db[_0x0426('0x4d')],'as':_0x0426('0x58'),'where':{'id':LISTID}}]})[_0x0426('0x2c')](function(_0x579b83){var _0x183767=[];if(_0x579b83){for(var _0x2cf632=0x0,_0xba8229;_0x2cf632<_0x579b83[_0x0426('0x25')];_0x2cf632+=0x1){_0xba8229=_0x579b83[_0x2cf632]['get']({'plain':!![]});_0x183767[_0x0426('0x2d')](db[_0x0426('0x51')][_0x0426('0x52')](_0x10598d(_0xba8229,_0x0426('0x59')))[_0x0426('0x2c')](function(){})[_0x0426('0x2f')](_0x5c0e0c()));}}return _0x183767;})[_0x0426('0x55')]();})[_0x0426('0x2f')](function(_0x29283c){logger[_0x0426('0x14')]('cmContact,\x20%s,\x20%s',_0x0426('0x5b'),_0x29283c['message']);});}var processPromises=function(_0x57f3c2){return BPromise[_0x0426('0x55')](promises)['then'](function(_0x2ec788){})['catch'](function(_0x5b7718){logger[_0x0426('0x14')]('Error\x20processing\x20rows\x20block:',JSON[_0x0426('0x5c')](_0x5b7718));})[_0x0426('0x5d')](function(){socket[_0x0426('0x5e')](_0x0426('0x5f')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x57f3c2){return _0x57f3c2['resume']();}});};var endCsv=function(){return BPromise[_0x0426('0x60')]()[_0x0426('0x2c')](function(){if(hopperContacts){return checkHopper();}})[_0x0426('0x2c')](function(){socket['emit'](_0x0426('0x5f')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x0426('0x61')](FILEPATH);}catch(_0x96a304){logger[_0x0426('0x14')]('Unable\x20to\x20delete\x20temp\x20file:',JSON[_0x0426('0x5c')](_0x96a304));}finally{process[_0x0426('0x62')](0x0);}});};process['on'](_0x0426('0x63'),function(){logger[_0x0426('0x64')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise['resolve']()[_0x0426('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x0426('0x11')](',');return db[_0x0426('0x29')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x0426('0x2c')](function(_0x5abee4){var _0x31ce79=fs[_0x0426('0x65')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x0426('0x66')](_0x31ce79,{'header':!![],'skipEmptyLines':!![],'step':function(_0x25306c,_0x3abf6e){total+=0x1;var _0x3da88a=total;promises['push'](checkRow(_0x25306c,_0x5abee4,_0x3da88a)[_0x0426('0x2c')](function(){success+=0x1;})[_0x0426('0x2f')](function(_0xfc14f6){if(_0xfc14f6['error']){errors+=0x1;delete _0xfc14f6[_0x0426('0x14')];}else if(_0xfc14f6[_0x0426('0x27')]){duplicates+=0x1;delete _0xfc14f6[_0x0426('0x27')];}rows['push'](_0xfc14f6);}));if(total%0xc8===0x0){_0x3abf6e['pause']();return processPromises(_0x3abf6e);}},'complete':function(){return processPromises()[_0x0426('0x2c')](function(){logger[_0x0426('0x64')](_0x0426('0x67'));endCsv();});},'error':function(_0x25ed69,_0x1c80f3){logger['info'](_0x0426('0x68'),JSON[_0x0426('0x5c')](_0x25ed69));endCsv();}});})['catch'](function(_0x1cb1ba){logger['error'](_0x0426('0x69'),JSON[_0x0426('0x5c')](_0x1cb1ba));});}main();
\ No newline at end of file
index 7d8bd97..2d70c52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c8f=['cm_contacts_','\x20LIKE\x20cm_contacts;','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','VoiceQueueId','voice_queues_has_cm_blacklists','voice_queues','campaigns_has_cm_lists','campaigns','CampaignId','each','finish','affectedRows','contact:import:','unlink','exit','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','body\x20id\x20mandatory','map','SIGINT','lodash','papaparse','util','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','import','defaults','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','toString','insert','cm_hopper_black','ListId','\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','ListId\x20=\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','info','error','errors','push','code','query','spread','catch','message','stringify','send','start','binding','socket_timestamp','root','server/files/tmp','header','writeFileSync','parse','createReadStream','length','rows','data','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','Abort\x20parser','abort','SystemError','step','duplicates'];(function(_0x4e6ae6,_0x49dba6){var _0x23c108=function(_0x1bc103){while(--_0x1bc103){_0x4e6ae6['push'](_0x4e6ae6['shift']());}};_0x23c108(++_0x49dba6);}(_0x6c8f,0xa1));var _0xf6c8=function(_0x109a1c,_0x873c2d){_0x109a1c=_0x109a1c-0x0;var _0x3bba3b=_0x6c8f[_0x109a1c];return _0x3bba3b;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0xf6c8('0x0'));var Papa=require(_0xf6c8('0x1'));var util=require(_0xf6c8('0x2'));var BPromise=require('bluebird');var moment=require(_0xf6c8('0x3'));var squel=require(_0xf6c8('0x4'));var Redis=require(_0xf6c8('0x5'));var db=require(_0xf6c8('0x6'))['db'];var config=require(_0xf6c8('0x7'));var logger=require(_0xf6c8('0x8'))(_0xf6c8('0x9'));config['redis']=_[_0xf6c8('0xa')](config[_0xf6c8('0xb')],{'host':_0xf6c8('0xc'),'port':0x18eb});var socket=require(_0xf6c8('0xd'))(new Redis(config[_0xf6c8('0xb')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xf6c8('0xe')](_0xf6c8('0xf'));function isEmail(_0x466051){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0xf6c8('0x10')](_0x466051);}function selectNotIn(_0x84f50b,_0x1bf4a0,_0xfa2abf,_0x4ec304,_0x33b712){return squel[_0xf6c8('0x11')]()[_0xf6c8('0x12')](_0xf6c8('0x13'))[_0xf6c8('0x14')](_0x4ec304)[_0xf6c8('0x15')](_0x1bf4a0,null,_0x1bf4a0+_0xf6c8('0x16')+_0x4ec304+'.'+_0xfa2abf)[_0xf6c8('0x17')](_0x4ec304+'.'+_0xfa2abf+_0xf6c8('0x18')+_0x84f50b+'.'+_0xfa2abf)[_0xf6c8('0x17')](_0x1bf4a0+'.dialCheckDuplicateType\x20IN\x20('+_0x33b712[_0xf6c8('0x15')]()+')');}function insertCmHopper(_0x43fc3c,_0x9d32a1,_0x175da3,_0x54fdcf,_0x2158ac){var _0x1d1a8a=[_0xf6c8('0x19'),_0xf6c8('0x1a'),_0xf6c8('0x1b'),_0xf6c8('0x1c'),_0x9d32a1+'.'+_0x54fdcf,_0xf6c8('0x1d'),_0xf6c8('0x1e'),_0xf6c8('0x1f'),_0xf6c8('0x20'),'\x22'+_0x2158ac+'\x22'];return squel['insert']()[_0xf6c8('0x21')](_0xf6c8('0x22'))[_0xf6c8('0x23')]([_0xf6c8('0x13'),'scheduledat','ContactId','ListId',_0x54fdcf,_0xf6c8('0x24'),_0xf6c8('0x25'),_0xf6c8('0x26'),_0xf6c8('0x27'),_0xf6c8('0x28')],squel[_0xf6c8('0x11')]()[_0xf6c8('0x29')](_0x1d1a8a)[_0xf6c8('0x14')](_0x9d32a1)[_0xf6c8('0x15')](_0xf6c8('0x2a'),null,_0xf6c8('0x2b')+_0x9d32a1+_0xf6c8('0x2c'))[_0xf6c8('0x15')](_0x175da3,null,_0x175da3+_0xf6c8('0x16')+_0x9d32a1+'.'+_0x54fdcf)['where'](_0x9d32a1+_0xf6c8('0x2d'),_0x43fc3c)[_0xf6c8('0x17')](_0xf6c8('0x2e'),NOW)['where'](_0xf6c8('0x2f'),selectNotIn(_0x9d32a1,_0x175da3,_0x54fdcf,_0xf6c8('0x22'),['\x22always\x22',_0xf6c8('0x30')]))[_0xf6c8('0x17')](_0xf6c8('0x2f'),selectNotIn(_0x9d32a1,_0x175da3,_0x54fdcf,_0xf6c8('0x22'),[_0xf6c8('0x31')])))[_0xf6c8('0x32')]();}function insertCmHopperBlack(_0xd3faad,_0x44da76,_0x405066,_0x5980dc){var _0x99d206=[_0xf6c8('0x19'),_0xf6c8('0x1b'),'cm_contacts.ListId',_0x44da76+'.'+_0x5980dc,_0xf6c8('0x1d'),'cm_contacts.updatedAt'];return squel[_0xf6c8('0x33')]()[_0xf6c8('0x21')](_0xf6c8('0x34'))['fromQuery'](['phone','ContactId',_0xf6c8('0x35'),_0x5980dc,'createdAt','updatedAt'],squel[_0xf6c8('0x11')]()[_0xf6c8('0x29')](_0x99d206)[_0xf6c8('0x14')](_0x44da76)[_0xf6c8('0x15')](_0xf6c8('0x2a'),null,_0xf6c8('0x2b')+_0x44da76+'.CmListId')['join'](_0x405066,null,_0x405066+_0xf6c8('0x16')+_0x44da76+'.'+_0x5980dc)[_0xf6c8('0x17')](_0x44da76+_0xf6c8('0x2d'),_0xd3faad)['where']('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0xf6c8('0x2f'),squel[_0xf6c8('0x11')]()[_0xf6c8('0x12')]('phone')[_0xf6c8('0x14')](_0xf6c8('0x34'))[_0xf6c8('0x17')]('ListId\x20=\x20?',_0xd3faad)[_0xf6c8('0x17')](_0x5980dc+_0xf6c8('0x36'),_0x44da76+'.'+_0x5980dc)))['toString']();}function insertCmContact(_0x46cd3d,_0x292046,_0x293366,_0x559a26){var _0x24e6b0=_[_0xf6c8('0x37')](_[_0xf6c8('0x38')](_0x559a26),['ListId',_0xf6c8('0x39'),_0xf6c8('0x24'),_0xf6c8('0x25')]);return squel[_0xf6c8('0x33')]()[_0xf6c8('0x21')]('cm_contacts')[_0xf6c8('0x23')](_0x24e6b0,squel[_0xf6c8('0x11')]()[_0xf6c8('0x29')](_0x24e6b0)[_0xf6c8('0x14')](_0x292046)[_0xf6c8('0x17')]('('+_0x293366['join'](',')+_0xf6c8('0x3a'),squel[_0xf6c8('0x11')]()['fields'](_0x293366)[_0xf6c8('0x14')](_0xf6c8('0x2a'))[_0xf6c8('0x17')](_0xf6c8('0x3b'),_0x46cd3d)[_0xf6c8('0x17')](_0xf6c8('0x3c')))[_0xf6c8('0x17')](_0xf6c8('0x3d'),squel[_0xf6c8('0x11')]()[_0xf6c8('0x12')](_0xf6c8('0x3e'),_0xf6c8('0x3f'))[_0xf6c8('0x14')](_0x292046)['group'](_0x293366['join'](','))))[_0xf6c8('0x32')]();}function handleStop(){logger[_0xf6c8('0x40')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x3cbd8c){logger[_0xf6c8('0x41')](_0x3cbd8c['message']);process['exit'](0x1);}function handleError(_0x1d25b9,_0x32ce87){stats[_0xf6c8('0x42')][_0xf6c8('0x43')]({'name':_0x32ce87[_0xf6c8('0x44')],'message':_0x32ce87['message'],'row':_0x1d25b9});}function handleQuery(_0x428a0b){logger[_0xf6c8('0x40')](_0x428a0b);return db['sequelize'][_0xf6c8('0x45')](_0x428a0b)[_0xf6c8('0x46')](function(_0x318b9a){results[_0xf6c8('0x43')](_0x318b9a);})[_0xf6c8('0x47')](function(_0x108087){logger['error'](_0x108087[_0xf6c8('0x48')]);});}function main(_0x26969d,_0x24e3a6,_0x1dbac6,_0x48d287){logger['info']('main',_0x26969d,JSON[_0xf6c8('0x49')](_0x24e3a6));process[_0xf6c8('0x4a')](_0xf6c8('0x4b'));var _0x4922de=_0x24e3a6[_0xf6c8('0x4c')];var _0xfcb413=_0x24e3a6[_0xf6c8('0x4d')];var _0x3660b4=path['join'](config[_0xf6c8('0x4e')],_0xf6c8('0x4f'),_0xfcb413+'.csv');var _0xfc2cb1=_[_0xf6c8('0x38')](_0x4922de)[_0xf6c8('0x15')]();logger[_0xf6c8('0x40')](_0xf6c8('0x50'),_0xfc2cb1);fs[_0xf6c8('0x51')](_0x3660b4,_0xfc2cb1+'\x0a');Papa[_0xf6c8('0x52')](fs[_0xf6c8('0x53')](_0x26969d),{'header':!![],'skipEmptyLines':!![],'step':function(_0x4579a9,_0x23076b){try{for(var _0x495083=0x0,_0xf30e8a=[];_0x495083<_0x4579a9['data'][_0xf6c8('0x54')];_0x495083++){stats[_0xf6c8('0x55')]+=0x1;if(_0x4579a9[_0xf6c8('0x42')][_0x495083]){handleError(_0x4579a9[_0xf6c8('0x56')][_0x495083],_0x4579a9[_0xf6c8('0x42')][_0x495083]);}else{var _0xf7750c=[];for(var _0x45afc4 in _0x4922de){if(_0x4922de['hasOwnProperty'](_0x45afc4)){if(_0x4579a9[_0xf6c8('0x56')][_0x495083][_0x4922de[_0x45afc4]]){var _0x5f3aae=_['trim'](_0x4579a9[_0xf6c8('0x56')][_0x495083][_0x4922de[_0x45afc4]]['replace'](/"/g,'\x27'));switch(_0x45afc4){case _0xf6c8('0x57'):var _0x19ad06=moment(_0x5f3aae,_0xf6c8('0xf'),!![]);if(_0x19ad06[_0xf6c8('0x58')]()){_0xf30e8a[_0xf6c8('0x43')]('\x22'+_0x5f3aae+'\x22');}else{_0xf7750c[_0xf6c8('0x43')](_0xf6c8('0x59'));}break;case _0xf6c8('0x26'):var _0x5bf246=parseInt(_0x5f3aae);_0x5f3aae=_[_0xf6c8('0x5a')](_0x5bf246)||_0x5bf246<0x0||_0x5bf246>0x4?_0x48d287?0x3:0x2:_0x5bf246;_0xf30e8a[_0xf6c8('0x43')]('\x22'+_0x5f3aae+'\x22');break;case _0xf6c8('0x27'):var _0x3e66bb=parseInt(_0x5f3aae);if(_[_0xf6c8('0x5b')](_0x3e66bb)&&_[_0xf6c8('0x5c')](_0x1dbac6,_0x3e66bb)){_0xf30e8a['push']('\x22'+_0x3e66bb+'\x22');}else{_0xf7750c['push'](_0xf6c8('0x5d'));}break;case _0xf6c8('0x5e'):if(isEmail(_0x5f3aae)){_0xf30e8a[_0xf6c8('0x43')]('\x22'+_0x5f3aae+'\x22');}else{_0xf7750c['push'](_0xf6c8('0x5f'));}break;case _0xf6c8('0x60'):var _0x4864c9=moment(_0x5f3aae,'YYYY-MM-DD',!![]);if(_0x4864c9[_0xf6c8('0x58')]()){_0xf30e8a[_0xf6c8('0x43')]('\x22'+_0x5f3aae+'\x22');}else{_0xf7750c['push'](_0xf6c8('0x61'));}break;default:_0xf30e8a[_0xf6c8('0x43')]('\x22'+_0x5f3aae+'\x22');}}else{switch(_0x45afc4){case _0xf6c8('0x62'):case _0xf6c8('0x13'):_0xf7750c['push'](_0x45afc4+_0xf6c8('0x63'));break;default:_0xf30e8a['push']('\x22\x22');}}}}if(_0xf7750c[_0xf6c8('0x54')]){handleError(_0x4579a9[_0xf6c8('0x56')][_0x495083],{'code':_0xf6c8('0x64'),'message':_0xf7750c['join']()});}else{fs[_0xf6c8('0x65')](_0x3660b4,_0xf30e8a[_0xf6c8('0x15')]()+'\x0a');}_0xf30e8a=[];}if(!(stats[_0xf6c8('0x55')]%0xc8)){socket['emit']('contact:import:'+_0xfcb413,stats);stats[_0xf6c8('0x42')]=[];}}if(stopped){logger['info'](_0xf6c8('0x66'));_0x23076b[_0xf6c8('0x67')]();}}catch(_0x1874d0){handleError(_0x4579a9[_0xf6c8('0x56')][_0x495083],{'code':_0xf6c8('0x68'),'message':_0x1874d0[_0xf6c8('0x48')]});logger[_0xf6c8('0x41')](_0xf6c8('0x69'),_0x1874d0[_0xf6c8('0x48')]);}},'complete':function(){try{var _0x1f9da8=[];var _0x284ac3=_0xf6c8('0x2a');if(_0x24e3a6[_0xf6c8('0x6a')]&&_0x24e3a6[_0xf6c8('0x6a')][_0xf6c8('0x54')]){_0x284ac3=_0xf6c8('0x6b')+_0xfcb413;_0x1f9da8['push']('CREATE\x20TABLE\x20'+_0x284ac3+_0xf6c8('0x6c'));}var _0x2a85bb=util[_0xf6c8('0xe')]('LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',_0x3660b4,_0x284ac3,_0xfc2cb1,_0x24e3a6[_0xf6c8('0x35')],_0x24e3a6[_0xf6c8('0x39')]||null,NOW,NOW);if(_[_0xf6c8('0x6d')](_0x4922de[_0xf6c8('0x57')])){_0x2a85bb+=_0xf6c8('0x6e');}_0x1f9da8[_0xf6c8('0x43')](_0x2a85bb);if(_0x24e3a6[_0xf6c8('0x6a')]&&_0x24e3a6[_0xf6c8('0x6a')][_0xf6c8('0x54')]){_0x1f9da8[_0xf6c8('0x43')](insertCmContact(_0x24e3a6[_0xf6c8('0x35')],_0x284ac3,_0x24e3a6[_0xf6c8('0x6a')],_0x4922de));_0x1f9da8[_0xf6c8('0x43')](_0xf6c8('0x6f')+_0x284ac3+';');}_0x1f9da8[_0xf6c8('0x43')](insertCmHopper(_0x24e3a6[_0xf6c8('0x35')],_0xf6c8('0x70'),'voice_queues',_0xf6c8('0x71'),_0x48d287));_0x1f9da8['push'](insertCmHopperBlack(_0x24e3a6[_0xf6c8('0x35')],_0xf6c8('0x72'),_0xf6c8('0x73'),'VoiceQueueId'));_0x1f9da8[_0xf6c8('0x43')](insertCmHopper(_0x24e3a6[_0xf6c8('0x35')],_0xf6c8('0x74'),_0xf6c8('0x75'),_0xf6c8('0x76'),_0x48d287));_0x1f9da8[_0xf6c8('0x43')](insertCmHopperBlack(_0x24e3a6[_0xf6c8('0x35')],'campaigns_has_cm_blacklists',_0xf6c8('0x75'),_0xf6c8('0x76')));BPromise[_0xf6c8('0x77')](_0x1f9da8,handleQuery)['then'](function(_0x172f18){stats[_0xf6c8('0x78')]=!![];stats[_0xf6c8('0x79')]=_0x24e3a6['duplicates']&&_0x24e3a6[_0xf6c8('0x6a')][_0xf6c8('0x54')]?results[0x2]['affectedRows']:results[0x0]['affectedRows'];socket['emit'](_0xf6c8('0x7a')+_0xfcb413,stats);fs[_0xf6c8('0x7b')](_0x26969d);fs[_0xf6c8('0x7b')](_0x3660b4);process['exit'](0x0);})[_0xf6c8('0x47')](function(_0x4e6cae){logger[_0xf6c8('0x41')](_0x4e6cae['message']);process[_0xf6c8('0x7c')](0x1);});}catch(_0x8d9545){logger[_0xf6c8('0x41')]('complete',_0x8d9545[_0xf6c8('0x48')]);process[_0xf6c8('0x7c')](0x1);}},'error':function(_0x1fa2ad,_0x9d60b2,_0x5db156,_0x1e786){throw new Error(_0x1e786);}});}function validate(){if(process[_0xf6c8('0x7d')]&&process['argv'][_0xf6c8('0x54')]<0x4){throw new Error(_0xf6c8('0x7e'));}var _0x321ff3=path[_0xf6c8('0x15')](config['root'],'server/files/tmp',process[_0xf6c8('0x7d')][0x2]);if(!fs[_0xf6c8('0x7f')](_0x321ff3)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x33b96b={};try{_0x33b96b=JSON['parse'](process[_0xf6c8('0x7d')][0x3]);if(!_0x33b96b['binding']){throw new Error(_0xf6c8('0x80'));}if(!_0x33b96b[_0xf6c8('0x4c')][_0xf6c8('0x13')]){throw new Error(_0xf6c8('0x81'));}if(!_0x33b96b['binding'][_0xf6c8('0x62')]){throw new Error(_0xf6c8('0x82'));}var _0x1921ee=0x0;if(_0x33b96b[_0xf6c8('0x4c')][_0xf6c8('0x27')]){_0x1921ee=0x1;}if(!_0x33b96b[_0xf6c8('0x35')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x1e0919){throw new Error(_0xf6c8('0x83'));}var _0x4eb592=[];try{_0x4eb592=_[_0xf6c8('0x84')](JSON[_0xf6c8('0x52')](process[_0xf6c8('0x7d')][0x4]),'id');}catch(_0x103499){logger[_0xf6c8('0x40')]('No\x20agent\x20available');}main(_0x321ff3,_0x33b96b,_0x4eb592,_0x1921ee);}validate();process['on'](_0xf6c8('0x85'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
+var _0x0fc2=['cm_contacts_','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','voice_queues_has_cm_blacklists','campaigns','CampaignId','each','then','finish','emit','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','map','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/logger','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','phone','from','.id\x20=\x20','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','join','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','scheduledat','ContactId','ListId','updatedAt','priority','UserId','recallme','select','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_hopper_black','createdAt','where','cm_contacts.createdAt\x20=\x20?','field','ListId\x20=\x20?','\x20=\x20?','concat','CompanyId','fromQuery','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','info','Received\x20SIGINT','error','message','exit','push','code','sequelize','spread','catch','main','start','binding','socket_timestamp','root','server/files/tmp','.csv','header','parse','data','length','errors','hasOwnProperty','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','appendFileSync','rows','contact:import:','SystemError','step','duplicates'];(function(_0x9e8b57,_0x3f99d8){var _0x5d41b8=function(_0x5aa970){while(--_0x5aa970){_0x9e8b57['push'](_0x9e8b57['shift']());}};_0x5d41b8(++_0x3f99d8);}(_0x0fc2,0x126));var _0x20fc=function(_0x5b89ab,_0x3194be){_0x5b89ab=_0x5b89ab-0x0;var _0x4f243e=_0x0fc2[_0x5b89ab];return _0x4f243e;};'use strict';var fs=require('fs');var path=require(_0x20fc('0x0'));var _=require(_0x20fc('0x1'));var Papa=require(_0x20fc('0x2'));var util=require(_0x20fc('0x3'));var BPromise=require(_0x20fc('0x4'));var moment=require(_0x20fc('0x5'));var squel=require(_0x20fc('0x6'));var Redis=require(_0x20fc('0x7'));var db=require(_0x20fc('0x8'))['db'];var config=require('../../../config/environment');var logger=require(_0x20fc('0x9'))('import');config[_0x20fc('0xa')]=_['defaults'](config[_0x20fc('0xa')],{'host':_0x20fc('0xb'),'port':0x18eb});var socket=require(_0x20fc('0xc'))(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x20fc('0xd')](_0x20fc('0xe'));function isEmail(_0x42763e){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))*$/[_0x20fc('0xf')](_0x42763e);}function selectNotIn(_0x2e531c,_0x46646a,_0x5d8317,_0x4ff14c,_0x2604e6){return squel['select']()['field'](_0x20fc('0x10'))[_0x20fc('0x11')](_0x4ff14c)['join'](_0x46646a,null,_0x46646a+_0x20fc('0x12')+_0x4ff14c+'.'+_0x5d8317)['where'](_0x4ff14c+'.'+_0x5d8317+_0x20fc('0x13')+_0x2e531c+'.'+_0x5d8317)['where'](_0x46646a+_0x20fc('0x14')+_0x2604e6[_0x20fc('0x15')]()+')');}function insertCmHopper(_0xb581a,_0x19a838,_0x1f2f2d,_0x59746a,_0x285704){var _0x1b7a09=[_0x20fc('0x16'),_0x20fc('0x17'),_0x20fc('0x18'),'cm_contacts.ListId',_0x19a838+'.'+_0x59746a,_0x20fc('0x19'),_0x20fc('0x1a'),_0x20fc('0x1b'),_0x20fc('0x1c'),'\x22'+_0x285704+'\x22'];return squel[_0x20fc('0x1d')]()[_0x20fc('0x1e')](_0x20fc('0x1f'))['fromQuery']([_0x20fc('0x10'),_0x20fc('0x20'),_0x20fc('0x21'),_0x20fc('0x22'),_0x59746a,'createdAt',_0x20fc('0x23'),_0x20fc('0x24'),_0x20fc('0x25'),_0x20fc('0x26')],squel[_0x20fc('0x27')]()[_0x20fc('0x28')](_0x1b7a09)['from'](_0x19a838)[_0x20fc('0x15')](_0x20fc('0x29'),null,_0x20fc('0x2a')+_0x19a838+_0x20fc('0x2b'))[_0x20fc('0x15')](_0x1f2f2d,null,_0x1f2f2d+_0x20fc('0x12')+_0x19a838+'.'+_0x59746a)['where'](_0x19a838+_0x20fc('0x2c'),_0xb581a)['where']('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x20fc('0x2d'),selectNotIn(_0x19a838,_0x1f2f2d,_0x59746a,'cm_hopper',[_0x20fc('0x2e'),_0x20fc('0x2f')]))['where'](_0x20fc('0x2d'),selectNotIn(_0x19a838,_0x1f2f2d,_0x59746a,_0x20fc('0x1f'),[_0x20fc('0x2e')])))[_0x20fc('0x30')]();}function insertCmHopperBlack(_0x195837,_0x4da8b4,_0x4df5dd,_0x5ac56d){var _0x4b2258=[_0x20fc('0x16'),_0x20fc('0x18'),'cm_contacts.ListId',_0x4da8b4+'.'+_0x5ac56d,_0x20fc('0x19'),'cm_contacts.updatedAt'];return squel[_0x20fc('0x1d')]()[_0x20fc('0x1e')](_0x20fc('0x31'))['fromQuery'](['phone',_0x20fc('0x21'),'ListId',_0x5ac56d,_0x20fc('0x32'),_0x20fc('0x23')],squel[_0x20fc('0x27')]()[_0x20fc('0x28')](_0x4b2258)[_0x20fc('0x11')](_0x4da8b4)[_0x20fc('0x15')](_0x20fc('0x29'),null,_0x20fc('0x2a')+_0x4da8b4+'.CmListId')['join'](_0x4df5dd,null,_0x4df5dd+_0x20fc('0x12')+_0x4da8b4+'.'+_0x5ac56d)[_0x20fc('0x33')](_0x4da8b4+_0x20fc('0x2c'),_0x195837)[_0x20fc('0x33')](_0x20fc('0x34'),NOW)[_0x20fc('0x33')](_0x20fc('0x2d'),squel[_0x20fc('0x27')]()[_0x20fc('0x35')](_0x20fc('0x10'))[_0x20fc('0x11')](_0x20fc('0x31'))['where'](_0x20fc('0x36'),_0x195837)['where'](_0x5ac56d+_0x20fc('0x37'),_0x4da8b4+'.'+_0x5ac56d)))[_0x20fc('0x30')]();}function insertCmContact(_0x3da09a,_0x5140ad,_0x27466e,_0x59c2b){var _0x1600e5=_[_0x20fc('0x38')](_['keys'](_0x59c2b),[_0x20fc('0x22'),_0x20fc('0x39'),_0x20fc('0x32'),_0x20fc('0x23')]);return squel[_0x20fc('0x1d')]()[_0x20fc('0x1e')](_0x20fc('0x29'))[_0x20fc('0x3a')](_0x1600e5,squel[_0x20fc('0x27')]()['fields'](_0x1600e5)[_0x20fc('0x11')](_0x5140ad)['where']('('+_0x27466e[_0x20fc('0x15')](',')+')\x20NOT\x20IN\x20?',squel['select']()[_0x20fc('0x28')](_0x27466e)[_0x20fc('0x11')](_0x20fc('0x29'))['where'](_0x20fc('0x36'),_0x3da09a)[_0x20fc('0x33')](_0x20fc('0x3b')))[_0x20fc('0x33')](_0x20fc('0x3c'),squel['select']()[_0x20fc('0x35')](_0x20fc('0x3d'),_0x20fc('0x3e'))[_0x20fc('0x11')](_0x5140ad)['group'](_0x27466e['join'](','))))[_0x20fc('0x30')]();}function handleStop(){logger[_0x20fc('0x3f')](_0x20fc('0x40'));stopped=!![];}function handleUncaughtException(_0x185edb){logger[_0x20fc('0x41')](_0x185edb[_0x20fc('0x42')]);process[_0x20fc('0x43')](0x1);}function handleError(_0x3fe7b4,_0x360d48){stats['errors'][_0x20fc('0x44')]({'name':_0x360d48[_0x20fc('0x45')],'message':_0x360d48[_0x20fc('0x42')],'row':_0x3fe7b4});}function handleQuery(_0xbb6df9){logger[_0x20fc('0x3f')](_0xbb6df9);return db[_0x20fc('0x46')]['query'](_0xbb6df9)[_0x20fc('0x47')](function(_0x43f03d){results['push'](_0x43f03d);})[_0x20fc('0x48')](function(_0x3e0ad0){logger[_0x20fc('0x41')](_0x3e0ad0[_0x20fc('0x42')]);});}function main(_0x41471b,_0x49b87e,_0x1cac8c,_0x16c812){logger['info'](_0x20fc('0x49'),_0x41471b,JSON['stringify'](_0x49b87e));process['send'](_0x20fc('0x4a'));var _0x1a3a28=_0x49b87e[_0x20fc('0x4b')];var _0x5035b4=_0x49b87e[_0x20fc('0x4c')];var _0x40a492=path['join'](config[_0x20fc('0x4d')],_0x20fc('0x4e'),_0x5035b4+_0x20fc('0x4f'));var _0x31cf20=_['keys'](_0x1a3a28)[_0x20fc('0x15')]();logger[_0x20fc('0x3f')](_0x20fc('0x50'),_0x31cf20);fs['writeFileSync'](_0x40a492,_0x31cf20+'\x0a');Papa[_0x20fc('0x51')](fs['createReadStream'](_0x41471b),{'header':!![],'skipEmptyLines':!![],'step':function(_0x277237,_0x4f9f1c){try{for(var _0x2f42ad=0x0,_0x11bbc7=[];_0x2f42ad<_0x277237[_0x20fc('0x52')][_0x20fc('0x53')];_0x2f42ad++){stats['rows']+=0x1;if(_0x277237['errors'][_0x2f42ad]){handleError(_0x277237[_0x20fc('0x52')][_0x2f42ad],_0x277237[_0x20fc('0x54')][_0x2f42ad]);}else{var _0x2db02d=[];for(var _0x3cd985 in _0x1a3a28){if(_0x1a3a28[_0x20fc('0x55')](_0x3cd985)){if(_0x277237['data'][_0x2f42ad][_0x1a3a28[_0x3cd985]]){var _0x44e4e=_[_0x20fc('0x56')](_0x277237[_0x20fc('0x52')][_0x2f42ad][_0x1a3a28[_0x3cd985]][_0x20fc('0x57')](/"/g,'\x27'));switch(_0x3cd985){case _0x20fc('0x20'):var _0x2739ef=moment(_0x44e4e,_0x20fc('0xe'),!![]);if(_0x2739ef[_0x20fc('0x58')]()){_0x11bbc7[_0x20fc('0x44')]('\x22'+_0x44e4e+'\x22');}else{_0x2db02d[_0x20fc('0x44')](_0x20fc('0x59'));}break;case'priority':var _0x9de19d=parseInt(_0x44e4e);_0x44e4e=_[_0x20fc('0x5a')](_0x9de19d)||_0x9de19d<0x0||_0x9de19d>0x4?_0x16c812?0x3:0x2:_0x9de19d;_0x11bbc7['push']('\x22'+_0x44e4e+'\x22');break;case _0x20fc('0x25'):var _0xa77de8=parseInt(_0x44e4e);if(_['isNumber'](_0xa77de8)&&_[_0x20fc('0x5b')](_0x1cac8c,_0xa77de8)){_0x11bbc7['push']('\x22'+_0xa77de8+'\x22');}else{_0x2db02d[_0x20fc('0x44')](_0x20fc('0x5c'));}break;case _0x20fc('0x5d'):if(isEmail(_0x44e4e)){_0x11bbc7[_0x20fc('0x44')]('\x22'+_0x44e4e+'\x22');}else{_0x2db02d[_0x20fc('0x44')](_0x20fc('0x5e'));}break;case _0x20fc('0x5f'):var _0x21ca75=moment(_0x44e4e,_0x20fc('0x60'),!![]);if(_0x21ca75[_0x20fc('0x58')]()){_0x11bbc7['push']('\x22'+_0x44e4e+'\x22');}else{_0x2db02d['push'](_0x20fc('0x61'));}break;default:_0x11bbc7[_0x20fc('0x44')]('\x22'+_0x44e4e+'\x22');}}else{switch(_0x3cd985){case'firstName':case _0x20fc('0x10'):_0x2db02d['push'](_0x3cd985+_0x20fc('0x62'));break;default:_0x11bbc7['push']('\x22\x22');}}}}if(_0x2db02d['length']){handleError(_0x277237['data'][_0x2f42ad],{'code':'SystemRow','message':_0x2db02d[_0x20fc('0x15')]()});}else{fs[_0x20fc('0x63')](_0x40a492,_0x11bbc7['join']()+'\x0a');}_0x11bbc7=[];}if(!(stats[_0x20fc('0x64')]%0xc8)){socket['emit'](_0x20fc('0x65')+_0x5035b4,stats);stats[_0x20fc('0x54')]=[];}}if(stopped){logger[_0x20fc('0x3f')]('Abort\x20parser');_0x4f9f1c['abort']();}}catch(_0x371416){handleError(_0x277237['data'][_0x2f42ad],{'code':_0x20fc('0x66'),'message':_0x371416[_0x20fc('0x42')]});logger[_0x20fc('0x41')](_0x20fc('0x67'),_0x371416[_0x20fc('0x42')]);}},'complete':function(){try{var _0x31c0c6=[];var _0x463510=_0x20fc('0x29');if(_0x49b87e[_0x20fc('0x68')]&&_0x49b87e[_0x20fc('0x68')][_0x20fc('0x53')]){_0x463510=_0x20fc('0x69')+_0x5035b4;_0x31c0c6[_0x20fc('0x44')](_0x20fc('0x6a')+_0x463510+_0x20fc('0x6b'));}var _0x49762e=util['format'](_0x20fc('0x6c'),_0x40a492,_0x463510,_0x31cf20,_0x49b87e[_0x20fc('0x22')],_0x49b87e[_0x20fc('0x39')]||null,NOW,NOW);if(_['isNil'](_0x1a3a28[_0x20fc('0x20')])){_0x49762e+=_0x20fc('0x6d');}_0x31c0c6[_0x20fc('0x44')](_0x49762e);if(_0x49b87e[_0x20fc('0x68')]&&_0x49b87e[_0x20fc('0x68')]['length']){_0x31c0c6[_0x20fc('0x44')](insertCmContact(_0x49b87e['ListId'],_0x463510,_0x49b87e[_0x20fc('0x68')],_0x1a3a28));_0x31c0c6[_0x20fc('0x44')](_0x20fc('0x6e')+_0x463510+';');}_0x31c0c6[_0x20fc('0x44')](insertCmHopper(_0x49b87e[_0x20fc('0x22')],_0x20fc('0x6f'),_0x20fc('0x70'),_0x20fc('0x71'),_0x16c812));_0x31c0c6[_0x20fc('0x44')](insertCmHopperBlack(_0x49b87e[_0x20fc('0x22')],_0x20fc('0x72'),_0x20fc('0x70'),_0x20fc('0x71')));_0x31c0c6['push'](insertCmHopper(_0x49b87e[_0x20fc('0x22')],'campaigns_has_cm_lists',_0x20fc('0x73'),_0x20fc('0x74'),_0x16c812));_0x31c0c6['push'](insertCmHopperBlack(_0x49b87e['ListId'],'campaigns_has_cm_blacklists',_0x20fc('0x73'),_0x20fc('0x74')));BPromise[_0x20fc('0x75')](_0x31c0c6,handleQuery)[_0x20fc('0x76')](function(_0x5aefc2){stats[_0x20fc('0x77')]=!![];stats['affectedRows']=_0x49b87e[_0x20fc('0x68')]&&_0x49b87e[_0x20fc('0x68')][_0x20fc('0x53')]?results[0x2]['affectedRows']:results[0x0]['affectedRows'];socket[_0x20fc('0x78')](_0x20fc('0x65')+_0x5035b4,stats);fs[_0x20fc('0x79')](_0x41471b);fs[_0x20fc('0x79')](_0x40a492);process[_0x20fc('0x43')](0x0);})[_0x20fc('0x48')](function(_0x1fa6bf){logger[_0x20fc('0x41')](_0x1fa6bf['message']);process[_0x20fc('0x43')](0x1);});}catch(_0x31993c){logger[_0x20fc('0x41')](_0x20fc('0x7a'),_0x31993c['message']);process[_0x20fc('0x43')](0x1);}},'error':function(_0x3523b1,_0x132da9,_0x19765e,_0x18c009){throw new Error(_0x18c009);}});}function validate(){if(process[_0x20fc('0x7b')]&&process[_0x20fc('0x7b')][_0x20fc('0x53')]<0x4){throw new Error(_0x20fc('0x7c'));}var _0x5e59b2=path[_0x20fc('0x15')](config[_0x20fc('0x4d')],_0x20fc('0x4e'),process[_0x20fc('0x7b')][0x2]);if(!fs['existsSync'](_0x5e59b2)){throw new Error('file\x20doesn\x27t\x20exists');}var _0xeba258={};try{_0xeba258=JSON[_0x20fc('0x51')](process[_0x20fc('0x7b')][0x3]);if(!_0xeba258[_0x20fc('0x4b')]){throw new Error(_0x20fc('0x7d'));}if(!_0xeba258[_0x20fc('0x4b')][_0x20fc('0x10')]){throw new Error(_0x20fc('0x7e'));}if(!_0xeba258[_0x20fc('0x4b')][_0x20fc('0x7f')]){throw new Error(_0x20fc('0x80'));}var _0x528493=0x0;if(_0xeba258[_0x20fc('0x4b')][_0x20fc('0x25')]){_0x528493=0x1;}if(!_0xeba258['ListId']){throw new Error(_0x20fc('0x81'));}}catch(_0x22710a){throw new Error('body\x20id\x20mandatory');}var _0x14664d=[];try{_0x14664d=_[_0x20fc('0x82')](JSON[_0x20fc('0x51')](process[_0x20fc('0x7b')][0x4]),'id');}catch(_0xe94f57){logger[_0x20fc('0x3f')]('No\x20agent\x20available');}main(_0x5e59b2,_0xeba258,_0x14664d,_0x528493);}validate();process['on'](_0x20fc('0x83'),handleStop);process['on'](_0x20fc('0x84'),handleUncaughtException);
\ No newline at end of file
index 491ed08..22b0188 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb523=['agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','Agent\x20Number','Agent\x20Ring','agentconnectAt','agentcompleteAt','Hold\x20Time','holdtime','Member\x20Name','membername','starttime','Complete\x20Time','Duration','duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','push','variable','calleridnum','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','inbound','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','Call\x20To','destexten','queue','UniqueId','uniqueid','Date'];(function(_0x581cc4,_0x1fe5c9){var _0x7d30bf=function(_0x6dc4dc){while(--_0x6dc4dc){_0x581cc4['push'](_0x581cc4['shift']());}};_0x7d30bf(++_0x1fe5c9);}(_0xb523,0x89));var _0x3b52=function(_0x26d7cd,_0x32f791){_0x26d7cd=_0x26d7cd-0x0;var _0x55e65f=_0xb523[_0x26d7cd];return _0x55e65f;};'use strict';exports[_0x3b52('0x0')]=function(_0x2b6411,_0x8b7a7a){var _0x572b53=[{'type':_0x3b52('0x1'),'content':_0x3b52('0x2'),'variableName':null}];switch(_0x2b6411[_0x3b52('0x3')]()){case _0x3b52('0x4'):switch(_0x8b7a7a[_0x3b52('0x3')]()){case'inbound':_0x572b53[_0x3b52('0x5')]({'type':_0x3b52('0x6'),'content':'','variableName':'queue'});_0x572b53[_0x3b52('0x5')]({'type':_0x3b52('0x6'),'content':'','variableName':_0x3b52('0x7')});break;case _0x3b52('0x8'):_0x572b53[_0x3b52('0x5')]({'type':'string','content':_0x3b52('0x9'),'variableName':null});_0x572b53['push']({'type':_0x3b52('0x6'),'content':'','variableName':_0x3b52('0xa')});break;}}return _0x572b53;};exports[_0x3b52('0xb')]=function(_0x5a0d24,_0x239b37){var _0x1c90f4=[];switch(_0x5a0d24[_0x3b52('0x3')]()){case _0x3b52('0x4'):switch(_0x239b37[_0x3b52('0x3')]()){case _0x3b52('0xc'):_0x1c90f4=[{'type':_0x3b52('0x1'),'content':_0x3b52('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0xf'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x7')},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x10'),'keyType':_0x3b52('0x6'),'variableName':'calleridname'},{'type':'keyValue','content':'','key':_0x3b52('0x11'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x12')},{'type':_0x3b52('0xe'),'content':'','key':'Queue','keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x13')},{'type':'keyValue','content':'','key':_0x3b52('0x14'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x15')},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x16'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x17')},{'type':_0x3b52('0x1'),'content':_0x3b52('0x18'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x3b52('0x19'),'keyType':_0x3b52('0x6'),'variableName':'destcalleridname'},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x1a'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0xa')},{'type':_0x3b52('0x1'),'content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x1b'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x17')},{'type':_0x3b52('0xe'),'content':'','key':'Agent\x20Connect','keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x1c')},{'type':'keyValue','content':'','key':'Agent\x20Complete','keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x1d')},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x1e'),'keyType':_0x3b52('0x6'),'variableName':_0x3b52('0x1f')},{'type':'keyValue','content':'','key':'Talk\x20Time','keyType':_0x3b52('0x6'),'variableName':'talktime'}];break;case _0x3b52('0x8'):_0x1c90f4=[{'type':_0x3b52('0x1'),'content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x3b52('0xe'),'content':'','key':'Called\x20Number','keyType':_0x3b52('0x6'),'keyContent':'','variableName':_0x3b52('0xa')},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x20'),'keyType':'variable','keyContent':'','variableName':_0x3b52('0x21')},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x14'),'keyType':'variable','keyContent':'','variableName':_0x3b52('0x15')},{'type':_0x3b52('0xe'),'content':'','key':'Date','keyType':_0x3b52('0x6'),'keyContent':'','variableName':_0x3b52('0x22')},{'type':_0x3b52('0x1'),'content':'***\x20Time\x20Info\x20***'},{'type':_0x3b52('0xe'),'content':'','key':'Answer\x20Time','keyType':_0x3b52('0x6'),'keyContent':'','variableName':'answertime'},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x23'),'keyType':_0x3b52('0x6'),'keyContent':'','variableName':'endtime'},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x24'),'keyType':'variable','keyContent':'','variableName':_0x3b52('0x25')},{'type':_0x3b52('0xe'),'content':'','key':_0x3b52('0x26'),'keyType':_0x3b52('0x6'),'keyContent':'','variableName':_0x3b52('0x27')}];break;}}return _0x1c90f4;};
\ No newline at end of file
+var _0x6a87=['variable','string','Outbound\x20Call','push','destcalleridnum','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','calleridnum','Caller\x20Name','Call\x20To','destexten','Queue','queue','UniqueId','uniqueid','Date','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','agentcalledAt','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','talktime','outbound','Called\x20Number','Member\x20Name','membername','starttime','answertime','Duration','duration','Billable\x20Time','[xCALLY\x20Ticket]','toLowerCase','voice','inbound'];(function(_0x631a3c,_0x1b61b6){var _0x2bdfa3=function(_0x21711b){while(--_0x21711b){_0x631a3c['push'](_0x631a3c['shift']());}};_0x2bdfa3(++_0x1b61b6);}(_0x6a87,0xa8));var _0x76a8=function(_0x2251c6,_0x171bba){_0x2251c6=_0x2251c6-0x0;var _0x2d8062=_0x6a87[_0x2251c6];return _0x2d8062;};'use strict';exports['getSubjects']=function(_0x18815c,_0x3383f3){var _0x5611d0=[{'type':'string','content':_0x76a8('0x0'),'variableName':null}];switch(_0x18815c[_0x76a8('0x1')]()){case _0x76a8('0x2'):switch(_0x3383f3[_0x76a8('0x1')]()){case _0x76a8('0x3'):_0x5611d0['push']({'type':'variable','content':'','variableName':'queue'});_0x5611d0['push']({'type':_0x76a8('0x4'),'content':'','variableName':'calleridnum'});break;case'outbound':_0x5611d0['push']({'type':_0x76a8('0x5'),'content':_0x76a8('0x6'),'variableName':null});_0x5611d0[_0x76a8('0x7')]({'type':'variable','content':'','variableName':_0x76a8('0x8')});break;}}return _0x5611d0;};exports['getDescriptions']=function(_0x37f18e,_0x47e3ab){var _0x4aab1e=[];switch(_0x37f18e['toLowerCase']()){case _0x76a8('0x2'):switch(_0x47e3ab[_0x76a8('0x1')]()){case _0x76a8('0x3'):_0x4aab1e=[{'type':_0x76a8('0x5'),'content':_0x76a8('0x9'),'key':null,'keyType':null,'variableName':null},{'type':_0x76a8('0xa'),'content':'','key':_0x76a8('0xb'),'keyType':_0x76a8('0x4'),'variableName':_0x76a8('0xc')},{'type':'keyValue','content':'','key':_0x76a8('0xd'),'keyType':'variable','variableName':'calleridname'},{'type':_0x76a8('0xa'),'content':'','key':_0x76a8('0xe'),'keyType':'variable','variableName':_0x76a8('0xf')},{'type':'keyValue','content':'','key':_0x76a8('0x10'),'keyType':'variable','variableName':_0x76a8('0x11')},{'type':_0x76a8('0xa'),'content':'','key':_0x76a8('0x12'),'keyType':'variable','variableName':_0x76a8('0x13')},{'type':_0x76a8('0xa'),'content':'','key':_0x76a8('0x14'),'keyType':'variable','variableName':'agentcalledAt'},{'type':_0x76a8('0x5'),'content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x76a8('0xa'),'content':'','key':_0x76a8('0x15'),'keyType':'variable','variableName':_0x76a8('0x16')},{'type':_0x76a8('0xa'),'content':'','key':_0x76a8('0x17'),'keyType':_0x76a8('0x4'),'variableName':_0x76a8('0x8')},{'type':_0x76a8('0x5'),'content':_0x76a8('0x18'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Agent\x20Ring','keyType':_0x76a8('0x4'),'variableName':_0x76a8('0x19')},{'type':_0x76a8('0xa'),'content':'','key':_0x76a8('0x1a'),'keyType':_0x76a8('0x4'),'variableName':_0x76a8('0x1b')},{'type':_0x76a8('0xa'),'content':'','key':_0x76a8('0x1c'),'keyType':_0x76a8('0x4'),'variableName':_0x76a8('0x1d')},{'type':'keyValue','content':'','key':_0x76a8('0x1e'),'keyType':_0x76a8('0x4'),'variableName':_0x76a8('0x1f')},{'type':_0x76a8('0xa'),'content':'','key':_0x76a8('0x20'),'keyType':'variable','variableName':_0x76a8('0x21')}];break;case _0x76a8('0x22'):_0x4aab1e=[{'type':'string','content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x76a8('0xa'),'content':'','key':_0x76a8('0x23'),'keyType':_0x76a8('0x4'),'keyContent':'','variableName':_0x76a8('0x8')},{'type':'keyValue','content':'','key':_0x76a8('0x24'),'keyType':_0x76a8('0x4'),'keyContent':'','variableName':_0x76a8('0x25')},{'type':_0x76a8('0xa'),'content':'','key':_0x76a8('0x12'),'keyType':_0x76a8('0x4'),'keyContent':'','variableName':'uniqueid'},{'type':'keyValue','content':'','key':_0x76a8('0x14'),'keyType':_0x76a8('0x4'),'keyContent':'','variableName':_0x76a8('0x26')},{'type':_0x76a8('0x5'),'content':_0x76a8('0x18')},{'type':_0x76a8('0xa'),'content':'','key':'Answer\x20Time','keyType':_0x76a8('0x4'),'keyContent':'','variableName':_0x76a8('0x27')},{'type':_0x76a8('0xa'),'content':'','key':'Complete\x20Time','keyType':_0x76a8('0x4'),'keyContent':'','variableName':'endtime'},{'type':_0x76a8('0xa'),'content':'','key':_0x76a8('0x28'),'keyType':_0x76a8('0x4'),'keyContent':'','variableName':_0x76a8('0x29')},{'type':_0x76a8('0xa'),'content':'','key':_0x76a8('0x2a'),'keyType':_0x76a8('0x4'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x4aab1e;};
\ No newline at end of file
index c2397ea..72bebb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f3a=['upperFirst','InteractionId','unknown','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','null','Interaction','findOne','update','then','info','catch','user','clone','omit','body','html','phone','mobile','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','sms-interactions','chat-interactions','whatsapp-interactions'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4f3a,0xe0));var _0xa4f3=function(_0x2e04ef,_0x31a596){_0x2e04ef=_0x2e04ef-0x0;var _0x5722b0=_0x4f3a[_0x2e04ef];return _0x5722b0;};'use strict';var _=require(_0xa4f3('0x0'));var db=require(_0xa4f3('0x1'))['db'];var loggers={'openchannel':require(_0xa4f3('0x2'))(_0xa4f3('0x3')),'mail':require(_0xa4f3('0x2'))(_0xa4f3('0x4')),'fax':require(_0xa4f3('0x2'))('fax-interactions'),'sms':require('../../config/logger')(_0xa4f3('0x5')),'chat':require(_0xa4f3('0x2'))(_0xa4f3('0x6')),'whatsapp':require(_0xa4f3('0x2'))(_0xa4f3('0x7'))};function getInteractionId(_0x56d300,_0x28d02d,_0xa6ce6e){if(_0x56d300&&_0x56d300[_['upperFirst'](_0xa6ce6e)+'InteractionId']){return _0x56d300[_[_0xa4f3('0x8')](_0xa6ce6e)+_0xa4f3('0x9')];}else if(_0x56d300&&_0x56d300['id']){return _0x56d300['id'];}else if(_0x28d02d&&_0x28d02d['id']){return _0x28d02d['id'];}else{return _0xa4f3('0xa');}}function log(_0x4aa35d,_0x43c60e,_0x24fe76,_0x4b8167,_0x39bbee,_0x1c8d5f){loggers[_0x39bbee['toLowerCase']()][_0x4aa35d](_0xa4f3('0xb'),_0x1c8d5f[_0xa4f3('0xc')](),_0x43c60e?_0x43c60e['id']:null,_0x43c60e?_0x43c60e[_0xa4f3('0xd')]:null,_0x43c60e?_0x43c60e[_0xa4f3('0xe')]:null,getInteractionId(_0x24fe76,_0x4b8167,_0x39bbee),_0x24fe76?JSON['stringify'](_0x24fe76):_0xa4f3('0xf'));}function updateUser(_0x55b0c1,_0x40bb76,_0x5305bb,_0x2ba61a,_0x1b38cd){db[_[_0xa4f3('0x8')](_0x2ba61a)+_0xa4f3('0x10')][_0xa4f3('0x11')]({'where':{'id':getInteractionId(_0x40bb76,_0x5305bb,_0x2ba61a)}})['then'](function(_0x4296a0){if(_0x4296a0){return _0x4296a0[_0xa4f3('0x12')]({'UserId':_0x55b0c1?_0x55b0c1['id']:null});}})[_0xa4f3('0x13')](function(_0x58c28d){if(_0x58c28d){log(_0xa4f3('0x14'),_0x55b0c1,_0x40bb76,_0x5305bb,_0x2ba61a,_0x1b38cd);}})[_0xa4f3('0x15')](function(){log('error',_0x55b0c1,_0x40bb76,_0x5305bb,_0x2ba61a,_0x1b38cd);});}exports['tracked']=function(_0x42f61d,_0x222aef){return function(_0x37ccd3,_0x26bc9a,_0x23f266){var _0x32b107=_0x37ccd3[_0xa4f3('0x16')];var _0xafd7b0={};var _0x1d8648=_0x37ccd3['query'];if(_0xafd7b0){_0xafd7b0=_[_0xa4f3('0x17')](_0x37ccd3['body']);_0xafd7b0=_[_0xa4f3('0x18')](_0xafd7b0,[_0xa4f3('0x19'),_0xa4f3('0x1a'),_0xa4f3('0x1b'),'fax',_0xa4f3('0x1c')]);}updateUser(_0x32b107,_0xafd7b0,_0x1d8648,_0x42f61d,_0x222aef);_0x23f266(null);};};
\ No newline at end of file
+var _0x5708=['omit','html','mobile','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','sms-interactions','whatsapp-interactions','upperFirst','InteractionId','unknown','toLowerCase','toUpperCase','name','role','stringify','null','findOne','then','update','info','error','user','query','body'];(function(_0x5c3e7d,_0x4507d7){var _0x5358b6=function(_0x387caf){while(--_0x387caf){_0x5c3e7d['push'](_0x5c3e7d['shift']());}};_0x5358b6(++_0x4507d7);}(_0x5708,0xa5));var _0x8570=function(_0x1373bc,_0xe750c5){_0x1373bc=_0x1373bc-0x0;var _0x152aa7=_0x5708[_0x1373bc];return _0x152aa7;};'use strict';var _=require(_0x8570('0x0'));var db=require(_0x8570('0x1'))['db'];var loggers={'openchannel':require(_0x8570('0x2'))(_0x8570('0x3')),'mail':require(_0x8570('0x2'))(_0x8570('0x4')),'fax':require('../../config/logger')('fax-interactions'),'sms':require(_0x8570('0x2'))(_0x8570('0x5')),'chat':require(_0x8570('0x2'))('chat-interactions'),'whatsapp':require(_0x8570('0x2'))(_0x8570('0x6'))};function getInteractionId(_0x477fab,_0x12126b,_0x11feaa){if(_0x477fab&&_0x477fab[_[_0x8570('0x7')](_0x11feaa)+_0x8570('0x8')]){return _0x477fab[_[_0x8570('0x7')](_0x11feaa)+'InteractionId'];}else if(_0x477fab&&_0x477fab['id']){return _0x477fab['id'];}else if(_0x12126b&&_0x12126b['id']){return _0x12126b['id'];}else{return _0x8570('0x9');}}function log(_0x4aeafe,_0x1f804a,_0x460eab,_0x6657d,_0x1aa53a,_0x504856){loggers[_0x1aa53a[_0x8570('0xa')]()][_0x4aeafe]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x504856[_0x8570('0xb')](),_0x1f804a?_0x1f804a['id']:null,_0x1f804a?_0x1f804a[_0x8570('0xc')]:null,_0x1f804a?_0x1f804a[_0x8570('0xd')]:null,getInteractionId(_0x460eab,_0x6657d,_0x1aa53a),_0x460eab?JSON[_0x8570('0xe')](_0x460eab):_0x8570('0xf'));}function updateUser(_0x4b1b38,_0x35b74c,_0x12aad3,_0x5d3970,_0x85b4bb){db[_[_0x8570('0x7')](_0x5d3970)+'Interaction'][_0x8570('0x10')]({'where':{'id':getInteractionId(_0x35b74c,_0x12aad3,_0x5d3970)}})[_0x8570('0x11')](function(_0x19d1b7){if(_0x19d1b7){return _0x19d1b7[_0x8570('0x12')]({'UserId':_0x4b1b38?_0x4b1b38['id']:null});}})[_0x8570('0x11')](function(_0x31764c){if(_0x31764c){log(_0x8570('0x13'),_0x4b1b38,_0x35b74c,_0x12aad3,_0x5d3970,_0x85b4bb);}})['catch'](function(){log(_0x8570('0x14'),_0x4b1b38,_0x35b74c,_0x12aad3,_0x5d3970,_0x85b4bb);});}exports['tracked']=function(_0x52d8a6,_0x4c1827){return function(_0x376151,_0x2453d4,_0x1d09e3){var _0x40a296=_0x376151[_0x8570('0x15')];var _0x3b36f4={};var _0x40c8c4=_0x376151[_0x8570('0x16')];if(_0x3b36f4){_0x3b36f4=_['clone'](_0x376151[_0x8570('0x17')]);_0x3b36f4=_[_0x8570('0x18')](_0x3b36f4,[_0x8570('0x17'),_0x8570('0x19'),'phone','fax',_0x8570('0x1a')]);}updateUser(_0x40a296,_0x3b36f4,_0x40c8c4,_0x52d8a6,_0x4c1827);_0x1d09e3(null);};};
\ No newline at end of file
index 41bd206..8c61658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf66=['createDecipher','aes-256-ctr','%s:%s:%s','update','base64','utf8','parse','hasOwnProperty','use','License','findOne','then','status','format','catch','users','User','admin','isUserLimit','crypto','composable-middleware','../../mysqldb','../../config/environment','license','data1','split'];(function(_0x493491,_0x54a910){var _0x5ee1e6=function(_0x30f898){while(--_0x30f898){_0x493491['push'](_0x493491['shift']());}};_0x5ee1e6(++_0x54a910);}(_0xaf66,0x17f));var _0x6af6=function(_0x9d639c,_0x524dbe){_0x9d639c=_0x9d639c-0x0;var _0x1671de=_0xaf66[_0x9d639c];return _0x1671de;};'use strict';var crypto=require(_0x6af6('0x0'));var util=require('util');var compose=require(_0x6af6('0x1'));var db=require(_0x6af6('0x2'))['db'];var config=require(_0x6af6('0x3'));function getValueFromLicense(_0x27d846,_0x396f9d){if(_0x27d846&&_0x396f9d){if(_0x396f9d['data1']&&_0x396f9d[_0x6af6('0x4')]){var _0x545fcc=_0x396f9d[_0x6af6('0x5')];var _0xd9a2b5=_0x396f9d['license'];var _0x3a760c=_0x545fcc[_0x6af6('0x6')]('-')[0x4];var _0x59b0e5=_0x545fcc[_0x6af6('0x6')]('-')[0x0];var _0x4708d7=crypto[_0x6af6('0x7')](_0x6af6('0x8'),util['format'](_0x6af6('0x9'),_0x3a760c,_0x545fcc,_0x59b0e5));var _0x55d315=_0x4708d7[_0x6af6('0xa')](_0xd9a2b5,_0x6af6('0xb'),'utf8');_0x55d315+=_0x4708d7['final'](_0x6af6('0xc'));var _0x3ff671=JSON[_0x6af6('0xd')](_0x55d315);return _0x3ff671[_0x6af6('0xe')](_0x27d846)?_0x3ff671[_0x27d846]:null;}}return null;}function isLimit(_0x3cf2ec,_0x246751,_0x58e30a,_0x191c2e){var _0x53690c=_0x246751;return compose()[_0x6af6('0xf')](function(_0x23217a,_0x53987f,_0x279dfd){return db[_0x6af6('0x10')][_0x6af6('0x11')]({'where':{'id':0x1},'raw':!![]})[_0x6af6('0x12')](function(_0x2d2c0a){var _0x59be42=getValueFromLicense(_0x3cf2ec,_0x2d2c0a);return _0x59be42?_0x59be42:_0x53690c;})[_0x6af6('0x12')](function(_0x589452){_0x53690c=_0x589452;return _0x58e30a['count'](_0x191c2e);})[_0x6af6('0x12')](function(_0xbb02a7){if(_0xbb02a7>=_0x53690c){return _0x53987f[_0x6af6('0x13')](0x193)['json']({'message':util[_0x6af6('0x14')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x3cf2ec)});}_0x279dfd();})[_0x6af6('0x15')](function(_0xb3bd8f){_0x279dfd(_0xb3bd8f);});});}function isUserLimit(){return isLimit(_0x6af6('0x16'),0x1,db[_0x6af6('0x17')],{'where':{'$or':[{'role':_0x6af6('0x18')},{'role':'user'}]}});}exports[_0x6af6('0x19')]=isUserLimit;
\ No newline at end of file
+var _0xf27e=['base64','final','utf8','parse','use','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','users','User','admin','user','isUserLimit','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','aes-256-ctr','format','%s:%s:%s','update'];(function(_0x424660,_0x5e66d2){var _0x243c01=function(_0x4cc135){while(--_0x4cc135){_0x424660['push'](_0x424660['shift']());}};_0x243c01(++_0x5e66d2);}(_0xf27e,0x139));var _0xef27=function(_0x58f73c,_0x1fec70){_0x58f73c=_0x58f73c-0x0;var _0x4878ae=_0xf27e[_0x58f73c];return _0x4878ae;};'use strict';var crypto=require('crypto');var util=require(_0xef27('0x0'));var compose=require(_0xef27('0x1'));var db=require(_0xef27('0x2'))['db'];var config=require(_0xef27('0x3'));function getValueFromLicense(_0x56b57a,_0x24a886){if(_0x56b57a&&_0x24a886){if(_0x24a886[_0xef27('0x4')]&&_0x24a886[_0xef27('0x5')]){var _0x15db54=_0x24a886['data1'];var _0x33ca52=_0x24a886[_0xef27('0x5')];var _0x34eb88=_0x15db54[_0xef27('0x6')]('-')[0x4];var _0xe2186c=_0x15db54[_0xef27('0x6')]('-')[0x0];var _0x21fe8a=crypto['createDecipher'](_0xef27('0x7'),util[_0xef27('0x8')](_0xef27('0x9'),_0x34eb88,_0x15db54,_0xe2186c));var _0x24652a=_0x21fe8a[_0xef27('0xa')](_0x33ca52,_0xef27('0xb'),'utf8');_0x24652a+=_0x21fe8a[_0xef27('0xc')](_0xef27('0xd'));var _0x10ed54=JSON[_0xef27('0xe')](_0x24652a);return _0x10ed54['hasOwnProperty'](_0x56b57a)?_0x10ed54[_0x56b57a]:null;}}return null;}function isLimit(_0x46586f,_0x242677,_0x549daf,_0x59bd44){var _0x3ab997=_0x242677;return compose()[_0xef27('0xf')](function(_0x441b90,_0x3dbf8e,_0x1da176){return db['License'][_0xef27('0x10')]({'where':{'id':0x1},'raw':!![]})[_0xef27('0x11')](function(_0x3379c6){var _0x302ada=getValueFromLicense(_0x46586f,_0x3379c6);return _0x302ada?_0x302ada:_0x3ab997;})[_0xef27('0x11')](function(_0x384d7a){_0x3ab997=_0x384d7a;return _0x549daf[_0xef27('0x12')](_0x59bd44);})[_0xef27('0x11')](function(_0x1eeff1){if(_0x1eeff1>=_0x3ab997){return _0x3dbf8e[_0xef27('0x13')](0x193)[_0xef27('0x14')]({'message':util[_0xef27('0x8')](_0xef27('0x15'),_0x46586f)});}_0x1da176();})['catch'](function(_0x48472a){_0x1da176(_0x48472a);});});}function isUserLimit(){return isLimit(_0xef27('0x16'),0x1,db[_0xef27('0x17')],{'where':{'$or':[{'role':_0xef27('0x18')},{'role':_0xef27('0x19')}]}});}exports[_0xef27('0x1a')]=isUserLimit;
\ No newline at end of file
index ffa03a2..556496d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8111=['$startsWith','$lt','>\x20?','<=\x20?','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','$endsWith','DATE','utcOffset','hours','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','[$or]','replace','[$and]','length','split','slice','forEach','shift','match','filter','indexOf','map','conditions','push','buildExpression','operator','$eq','$between','value','includes','$gt','$lte','add','days','format','YYYY-MM-DD','castTo','text','field','\x20AS\x20','$ne','$notIn','\x20OR\x20','$in','NOT\x20IN\x20?','<>\x20?','$substring'];(function(_0x1bc69a,_0x14d370){var _0x435b42=function(_0x40944e){while(--_0x40944e){_0x1bc69a['push'](_0x1bc69a['shift']());}};_0x435b42(++_0x14d370);}(_0x8111,0x1f2));var _0x1811=function(_0x31fddf,_0x27fffb){_0x31fddf=_0x31fddf-0x0;var _0xe6b624=_0x8111[_0x31fddf];return _0xe6b624;};'use strict';var _=require(_0x1811('0x0'));var moment=require(_0x1811('0x1'));exports[_0x1811('0x2')]=function(_0x447341){var _0x422ef9={'conditions':[]};_0x422ef9[_0x1811('0x3')]=_[_0x1811('0x4')](_0x447341,_0x1811('0x5'))?'or':'and';var _0x492f31=_0x447341[_0x1811('0x6')](_0x1811('0x7'),'')[_0x1811('0x6')](_0x1811('0x5'),'')['split']('||');for(var _0x2726af=0x0;_0x2726af<_0x492f31[_0x1811('0x8')];_0x2726af++){var _0x4b3e55=_0x492f31[_0x2726af][_0x1811('0x9')](':=');var _0x575d43=_0x4b3e55[0x0];var _0x5a2ff6=_0x4b3e55[_0x1811('0xa')](0x1);_0x5a2ff6[_0x1811('0xb')](function(_0x4b51f4){var _0x435451=_0x4b51f4[_0x1811('0x9')]('[')[_0x1811('0xc')]();var _0x10543c=_0x4b51f4[_0x1811('0xd')](/\[(.*?)\]/g);_0x10543c['forEach'](function(_0x573464){var _0x12c1ee=_0x573464[_0x1811('0x9')]('[')[_0x1811('0xe')](function(_0x385705){return _0x385705[_0x1811('0xf')](']')>-0x1;})[_0x1811('0x10')](function(_0x30fc96){return _0x30fc96[_0x1811('0x9')](']')[0x0];})[0x0];_0x422ef9[_0x1811('0x11')][_0x1811('0x12')]({'field':_0x575d43,'operator':_0x435451,'value':_0x12c1ee});});});}return _0x422ef9;};exports[_0x1811('0x13')]=function(_0x541ee0,_0x5e5540,_0x54d9b7){var _0x107f4c={};if(_0x5e5540==='DATE'){if(_0x54d9b7[_0x1811('0x14')]===_0x1811('0x15')){_0x54d9b7[_0x1811('0x14')]=_0x1811('0x16');_0x54d9b7[_0x1811('0x17')]+=','+_0x54d9b7[_0x1811('0x17')];}else if(_[_0x1811('0x18')]([_0x1811('0x19'),_0x1811('0x1a')],_0x54d9b7['operator'])){_0x54d9b7[_0x1811('0x17')]=moment(_0x54d9b7[_0x1811('0x17')])[_0x1811('0x1b')](0x1,_0x1811('0x1c'))[_0x1811('0x1d')](_0x1811('0x1e'));}}if(_0x54d9b7['castTo']){_0x5e5540=_0x54d9b7[_0x1811('0x1f')];_0x107f4c[_0x1811('0x20')]='CAST('+_0x541ee0+'.'+_0x54d9b7[_0x1811('0x21')]+_0x1811('0x22')+_0x54d9b7[_0x1811('0x1f')]+')\x20'+parseOperator(_0x54d9b7[_0x1811('0x14')]);}else{_0x107f4c[_0x1811('0x20')]=_0x541ee0+'.'+_0x54d9b7[_0x1811('0x21')]+'\x20'+parseOperator(_0x54d9b7['operator']);}if(_['includes']([_0x1811('0x23'),_0x1811('0x24')],_0x54d9b7['operator']))_0x107f4c['text']='('+_0x107f4c['text']+_0x1811('0x25')+_0x541ee0+'.'+_0x54d9b7[_0x1811('0x21')]+'\x20IS\x20NULL)';_0x107f4c[_0x1811('0x17')]=parseValue(_0x5e5540,_0x54d9b7[_0x1811('0x14')],_0x54d9b7[_0x1811('0x17')]);return _0x107f4c;};function parseOperator(_0x577662){var _0x169a8c;switch(_0x577662){case _0x1811('0x26'):_0x169a8c='IN\x20?';break;case _0x1811('0x24'):_0x169a8c=_0x1811('0x27');break;case _0x1811('0x15'):_0x169a8c='=\x20?';break;case _0x1811('0x23'):_0x169a8c=_0x1811('0x28');break;case _0x1811('0x29'):case _0x1811('0x2a'):case'$endsWith':_0x169a8c='LIKE\x20?';break;case _0x1811('0x2b'):_0x169a8c='<\x20?';break;case'$gt':_0x169a8c=_0x1811('0x2c');break;case _0x1811('0x1a'):_0x169a8c=_0x1811('0x2d');break;case'$gte':_0x169a8c=_0x1811('0x2e');break;case _0x1811('0x16'):_0x169a8c=_0x1811('0x2f');break;}return _0x169a8c;}function parseValue(_0xea6cbe,_0x131ddb,_0x42d4a5){var _0x35b761={'start':undefined,'end':undefined};switch(_0x131ddb){case _0x1811('0x26'):case _0x1811('0x24'):_0x35b761[_0x1811('0x30')]=_0x42d4a5[_0x1811('0x9')](',');break;case _0x1811('0x29'):_0x35b761[_0x1811('0x30')]='%'+_0x42d4a5+'%';break;case _0x1811('0x2a'):_0x35b761['start']=_0x42d4a5+'%';break;case _0x1811('0x31'):_0x35b761['start']='%'+_0x42d4a5;break;case _0x1811('0x16'):var _0x4977d6=_0x42d4a5[_0x1811('0x9')](',');var _0x42d4a5=_0x4977d6['shift']();var _0x238f8c=_0x4977d6['pop']();if(_0xea6cbe===_0x1811('0x32')){_0x42d4a5=moment(_0x42d4a5)[_0x1811('0x33')](0x0,!![])[_0x1811('0x1d')]();_0x238f8c=moment(_0x238f8c)[_0x1811('0x33')](0x0,!![])['add'](0x17,_0x1811('0x34'))[_0x1811('0x1b')](0x3b,'minutes')[_0x1811('0x1b')](0x3b,_0x1811('0x35'))[_0x1811('0x1d')]();}_0x35b761={'start':_0x42d4a5,'end':_0x238f8c};break;default:_0x35b761['start']=_0x42d4a5;break;}return _0x35b761;}
\ No newline at end of file
+var _0xff1f=['filter','indexOf','map','conditions','push','buildExpression','DATE','operator','$eq','value','$gt','$lte','add','days','YYYY-MM-DD','castTo','text','CAST(','field','includes','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','=\x20?','$ne','<>\x20?','$startsWith','$endsWith','$lt','<\x20?','<=\x20?','$gte','>=\x20?','start','$substring','shift','pop','format','utcOffset','minutes','seconds','lodash','moment','sqlOperator','startsWith','and','replace','[$and]','split','length','slice','forEach','match'];(function(_0x15eeb0,_0x2c0d1a){var _0x5695f6=function(_0x32ded0){while(--_0x32ded0){_0x15eeb0['push'](_0x15eeb0['shift']());}};_0x5695f6(++_0x2c0d1a);}(_0xff1f,0x1e3));var _0xfff1=function(_0x1034bb,_0x4e20b3){_0x1034bb=_0x1034bb-0x0;var _0x453fdb=_0xff1f[_0x1034bb];return _0x453fdb;};'use strict';var _=require(_0xfff1('0x0'));var moment=require(_0xfff1('0x1'));exports['parseSearch']=function(_0x42f7d0){var _0x425865={'conditions':[]};_0x425865[_0xfff1('0x2')]=_[_0xfff1('0x3')](_0x42f7d0,'[$or]')?'or':_0xfff1('0x4');var _0x14afd4=_0x42f7d0[_0xfff1('0x5')](_0xfff1('0x6'),'')[_0xfff1('0x5')]('[$or]','')[_0xfff1('0x7')]('||');for(var _0x1bf6d6=0x0;_0x1bf6d6<_0x14afd4[_0xfff1('0x8')];_0x1bf6d6++){var _0x307fb1=_0x14afd4[_0x1bf6d6][_0xfff1('0x7')](':=');var _0x3dcbe3=_0x307fb1[0x0];var _0x44cbf3=_0x307fb1[_0xfff1('0x9')](0x1);_0x44cbf3[_0xfff1('0xa')](function(_0x152dbb){var _0x149bc2=_0x152dbb['split']('[')['shift']();var _0x2aa40b=_0x152dbb[_0xfff1('0xb')](/\[(.*?)\]/g);_0x2aa40b[_0xfff1('0xa')](function(_0x55988c){var _0x537d44=_0x55988c[_0xfff1('0x7')]('[')[_0xfff1('0xc')](function(_0x29839e){return _0x29839e[_0xfff1('0xd')](']')>-0x1;})[_0xfff1('0xe')](function(_0x4bd037){return _0x4bd037[_0xfff1('0x7')](']')[0x0];})[0x0];_0x425865[_0xfff1('0xf')][_0xfff1('0x10')]({'field':_0x3dcbe3,'operator':_0x149bc2,'value':_0x537d44});});});}return _0x425865;};exports[_0xfff1('0x11')]=function(_0x338dfa,_0x3d19e4,_0xca5416){var _0x4e8461={};if(_0x3d19e4===_0xfff1('0x12')){if(_0xca5416[_0xfff1('0x13')]===_0xfff1('0x14')){_0xca5416[_0xfff1('0x13')]='$between';_0xca5416[_0xfff1('0x15')]+=','+_0xca5416['value'];}else if(_['includes']([_0xfff1('0x16'),_0xfff1('0x17')],_0xca5416[_0xfff1('0x13')])){_0xca5416[_0xfff1('0x15')]=moment(_0xca5416[_0xfff1('0x15')])[_0xfff1('0x18')](0x1,_0xfff1('0x19'))['format'](_0xfff1('0x1a'));}}if(_0xca5416[_0xfff1('0x1b')]){_0x3d19e4=_0xca5416[_0xfff1('0x1b')];_0x4e8461[_0xfff1('0x1c')]=_0xfff1('0x1d')+_0x338dfa+'.'+_0xca5416[_0xfff1('0x1e')]+'\x20AS\x20'+_0xca5416['castTo']+')\x20'+parseOperator(_0xca5416['operator']);}else{_0x4e8461[_0xfff1('0x1c')]=_0x338dfa+'.'+_0xca5416[_0xfff1('0x1e')]+'\x20'+parseOperator(_0xca5416[_0xfff1('0x13')]);}if(_[_0xfff1('0x1f')](['$ne',_0xfff1('0x20')],_0xca5416[_0xfff1('0x13')]))_0x4e8461['text']='('+_0x4e8461[_0xfff1('0x1c')]+_0xfff1('0x21')+_0x338dfa+'.'+_0xca5416[_0xfff1('0x1e')]+_0xfff1('0x22');_0x4e8461['value']=parseValue(_0x3d19e4,_0xca5416['operator'],_0xca5416[_0xfff1('0x15')]);return _0x4e8461;};function parseOperator(_0x535ff5){var _0xa0b0e3;switch(_0x535ff5){case _0xfff1('0x23'):_0xa0b0e3=_0xfff1('0x24');break;case _0xfff1('0x20'):_0xa0b0e3='NOT\x20IN\x20?';break;case _0xfff1('0x14'):_0xa0b0e3=_0xfff1('0x25');break;case _0xfff1('0x26'):_0xa0b0e3=_0xfff1('0x27');break;case'$substring':case _0xfff1('0x28'):case _0xfff1('0x29'):_0xa0b0e3='LIKE\x20?';break;case _0xfff1('0x2a'):_0xa0b0e3=_0xfff1('0x2b');break;case _0xfff1('0x16'):_0xa0b0e3='>\x20?';break;case'$lte':_0xa0b0e3=_0xfff1('0x2c');break;case _0xfff1('0x2d'):_0xa0b0e3=_0xfff1('0x2e');break;case'$between':_0xa0b0e3='BETWEEN\x20?\x20AND\x20?';break;}return _0xa0b0e3;}function parseValue(_0x5a8629,_0x10df0f,_0x559f60){var _0x219d29={'start':undefined,'end':undefined};switch(_0x10df0f){case'$in':case _0xfff1('0x20'):_0x219d29[_0xfff1('0x2f')]=_0x559f60['split'](',');break;case _0xfff1('0x30'):_0x219d29['start']='%'+_0x559f60+'%';break;case _0xfff1('0x28'):_0x219d29[_0xfff1('0x2f')]=_0x559f60+'%';break;case _0xfff1('0x29'):_0x219d29['start']='%'+_0x559f60;break;case'$between':var _0x46d8e1=_0x559f60[_0xfff1('0x7')](',');var _0x559f60=_0x46d8e1[_0xfff1('0x31')]();var _0x36b43b=_0x46d8e1[_0xfff1('0x32')]();if(_0x5a8629===_0xfff1('0x12')){_0x559f60=moment(_0x559f60)['utcOffset'](0x0,!![])[_0xfff1('0x33')]();_0x36b43b=moment(_0x36b43b)[_0xfff1('0x34')](0x0,!![])[_0xfff1('0x18')](0x17,'hours')[_0xfff1('0x18')](0x3b,_0xfff1('0x35'))[_0xfff1('0x18')](0x3b,_0xfff1('0x36'))[_0xfff1('0x33')]();}_0x219d29={'start':_0x559f60,'end':_0x36b43b};break;default:_0x219d29['start']=_0x559f60;break;}return _0x219d29;}
\ No newline at end of file
index bfe0e08..659b3a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2ad=['isObject','isString','unset','hasOwnProperty','match','forEach','replace','join','getOptions','query','$id','model','map','keys','intersection','attributes','nolimit','limit','order','where','pick','filter','merge','lower','lodash','includes','fields','filters','isEmpty','forOwn','find','type','isPlainObject','parse','format','YYYY-MM-DD','utc','$lte','subtract','name','isArray','split','offset','sort','indexOf','priority','cast','col','unsigned','substr','DESC','ASC','omit','length'];(function(_0x8c7a26,_0x3dc4a6){var _0xddbbd6=function(_0x2f4433){while(--_0x2f4433){_0x8c7a26['push'](_0x8c7a26['shift']());}};_0xddbbd6(++_0x3dc4a6);}(_0xe2ad,0xba));var _0xde2a=function(_0x30e618,_0x8b2127){_0x30e618=_0x30e618-0x0;var _0x2d5393=_0xe2ad[_0x30e618];return _0x2d5393;};'use strict';var _=require(_0xde2a('0x0'));var sequelize=require('sequelize');var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x38a0cd){var _0x251cb2=['ne'];try{var _0x33ab3b=JSON['parse'](_0x38a0cd);var _0x33a453=Object['keys'](_0x33ab3b)[0x0];return _0x251cb2[_0xde2a('0x1')](_0x33a453);}catch(_0x11921c){return![];}}function getOperatorValue(_0x3718d9){var _0x228b2a=JSON['parse'](_0x3718d9);var _0x575748=Object['keys'](_0x228b2a)[0x0];var _0x445878=_0x228b2a[_0x575748];return{['$'+_0x575748]:_0x445878};}exports[_0xde2a('0x2')]=function(_0x52a490){var _0x2bb314=null;if(_0x52a490){_0x2bb314=_0x52a490['split'](',');}return _0x2bb314;};exports[_0xde2a('0x3')]=function(_0x3093c4,_0x7e0493){var _0x22de93={};if(!_[_0xde2a('0x4')](_0x3093c4)){_[_0xde2a('0x5')](_0x3093c4,function(_0x159c6d,_0xacf219){try{if(_0x7e0493){var _0x198029=_[_0xde2a('0x6')](_0x7e0493,{'name':_0xacf219})||{};if(hasSequelizeOperator(_0x159c6d)){_0x22de93[_0xacf219]=getOperatorValue(_0x159c6d);}else if(_0x198029[_0xde2a('0x7')]==='DATE'&&_[_0xde2a('0x8')](_0x159c6d)){var _0x5e83c9=JSON[_0xde2a('0x9')](_0x159c6d);var _0x24d154={'$gte':moment(moment(_0x5e83c9['$gte'])[_0xde2a('0xa')](_0xde2a('0xb')))[_0xde2a('0xc')]()['format'](),'$lte':moment(moment(_0x5e83c9[_0xde2a('0xd')])[_0xde2a('0xa')](_0xde2a('0xb')))[_0xde2a('0xc')]()[_0xde2a('0xe')](0x1,'s')[_0xde2a('0xa')]()};_0x22de93[_0xacf219]=_0x24d154;}else if(_0x198029[_0xde2a('0xf')]==='uniqueid'){_0x22de93[_0xacf219]=_0x159c6d;}else{_0x22de93[_0xacf219]=_['isArray'](_0x159c6d)?_0x159c6d:JSON[_0xde2a('0x9')](_0x159c6d);}}else{_0x22de93[_0xacf219]=_[_0xde2a('0x10')](_0x159c6d)?_0x159c6d:JSON[_0xde2a('0x9')](_0x159c6d);}}catch(_0x21ebbf){_0x22de93[_0xacf219]=_0x159c6d[_0xde2a('0x11')](',');}});}return _0x22de93;};exports['limit']=function(_0x26f5a8){_0x26f5a8=parseInt(_0x26f5a8,0xa);if(!_0x26f5a8||_0x26f5a8<0x0){_0x26f5a8=LIMIT_VALUE;}return _0x26f5a8;};exports[_0xde2a('0x12')]=function(_0x11d3be){_0x11d3be=parseInt(_0x11d3be,0xa);if(!_0x11d3be||_0x11d3be<0x0){_0x11d3be=0x0;}return _0x11d3be;};exports[_0xde2a('0x13')]=function(_0x1c3a07){var _0x2879f7,_0x5be6e9=null;if(_0x1c3a07){_0x2879f7=_0x1c3a07[_0xde2a('0x11')](',');_0x5be6e9=_['map'](_0x2879f7,function(_0x43114f){if(_0x43114f[_0xde2a('0x14')]('-')===0x0){return[_0x43114f===_0xde2a('0x15')?sequelize[_0xde2a('0x16')](sequelize[_0xde2a('0x17')](_0xde2a('0x15')),_0xde2a('0x18')):_0x43114f[_0xde2a('0x19')](0x1),_0xde2a('0x1a')];}else{return[_0x43114f===_0xde2a('0x15')?sequelize[_0xde2a('0x16')](sequelize[_0xde2a('0x17')]('priority'),'unsigned'):_0x43114f,_0xde2a('0x1b')];}});}return _0x5be6e9;};exports[_0xde2a('0x1c')]=function(_0x3df752,_0x40f142){if(_[_0xde2a('0x4')](_0x3df752)){return _0x3df752;}if(_['isArray'](_0x3df752)){for(var _0x58cd0f=0x0;_0x58cd0f<_0x3df752[_0xde2a('0x1d')];_0x58cd0f+=0x1){_0x3df752[_0x58cd0f]=this[_0xde2a('0x1c')](_0x3df752[_0x58cd0f],_0x40f142);}return _0x3df752;}if(!_[_0xde2a('0x1e')](_0x3df752)){return _0x3df752;}if(_[_0xde2a('0x1f')](_0x40f142)){_0x40f142=[_0x40f142];}if(!_[_0xde2a('0x10')](_0x40f142)){return _0x3df752;}for(var _0x37d49f=0x0;_0x37d49f<_0x40f142[_0xde2a('0x1d')];_0x37d49f+=0x1){_[_0xde2a('0x20')](_0x3df752,_0x40f142[_0x37d49f]);}for(var _0x578f0f in _0x3df752){if(_0x3df752[_0xde2a('0x21')](_0x578f0f)){_0x3df752[_0x578f0f]=this[_0xde2a('0x1c')](_0x3df752[_0x578f0f],_0x40f142);}}return _0x3df752;};exports['isNumeric']=function(_0x54bd33){return _0x54bd33['match'](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports['isEmail']=function(_0x2d2801){return _0x2d2801[_0xde2a('0x22')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x4318b7){var _0x271b0e=[];_0x4318b7[_0xde2a('0x11')](/[ ,]+/)[_0xde2a('0x23')](function(_0x3b87cb){_0x3b87cb=_0x3b87cb[_0xde2a('0x24')](/([^:]")"+/g,'$1');_0x3b87cb='+'+_0x3b87cb+'*';if(_0x3b87cb['includes']('@'))_0x3b87cb='\x22'+_0x3b87cb+'\x22';_0x271b0e['push'](_0x3b87cb);});return _0x271b0e[_0xde2a('0x25')]('\x20');};exports[_0xde2a('0x26')]=function(_0x3e0d91,_0x14fadc,_0x11f519){var _0x2ca022={},_0x408cbf={};if(_0x14fadc[_0xde2a('0x27')][_0xde2a('0x28')]){_0x14fadc[_0xde2a('0x27')]['id']=_0x14fadc[_0xde2a('0x27')][_0xde2a('0x28')];delete _0x14fadc['query']['$id'];}_0x2ca022[_0xde2a('0x29')]=_[_0xde2a('0x2a')](_0x3e0d91,_0xde2a('0xf'));_0x2ca022['query']=_[_0xde2a('0x2b')](_0x14fadc['query']);_0x2ca022[_0xde2a('0x3')]=_[_0xde2a('0x2c')](_0x2ca022[_0xde2a('0x29')],_0x2ca022[_0xde2a('0x27')]);_0x408cbf[_0xde2a('0x2d')]=_[_0xde2a('0x2c')](_0x2ca022[_0xde2a('0x29')],this[_0xde2a('0x2')](_0x14fadc['query'][_0xde2a('0x2')]));_0x408cbf[_0xde2a('0x2d')]=_0x408cbf[_0xde2a('0x2d')][_0xde2a('0x1d')]?_0x408cbf[_0xde2a('0x2d')]:_0x2ca022['model'];if(!_0x14fadc[_0xde2a('0x27')]['hasOwnProperty'](_0xde2a('0x2e'))){_0x408cbf[_0xde2a('0x2f')]=this[_0xde2a('0x2f')](_0x14fadc[_0xde2a('0x27')][_0xde2a('0x2f')]);_0x408cbf[_0xde2a('0x12')]=this[_0xde2a('0x12')](_0x14fadc[_0xde2a('0x27')][_0xde2a('0x12')]);}_0x408cbf[_0xde2a('0x30')]=this[_0xde2a('0x13')](_0x14fadc[_0xde2a('0x27')][_0xde2a('0x13')]);_0x408cbf[_0xde2a('0x31')]=this[_0xde2a('0x3')](_[_0xde2a('0x32')](_0x14fadc[_0xde2a('0x27')],_0x2ca022[_0xde2a('0x3')]),_0x3e0d91);if(_0x14fadc[_0xde2a('0x27')][_0xde2a('0x33')]){_0x408cbf[_0xde2a('0x31')]=_[_0xde2a('0x34')](_0x408cbf['where'],{'$or':_['map'](_0x3e0d91,function(_0x350150){if(_0x350150['type']!=='VIRTUAL'){if(_0x11f519){return sequelize[_0xde2a('0x31')](sequelize['fn'](_0xde2a('0x35'),sequelize[_0xde2a('0x17')](_0x350150[_0xde2a('0xf')])),{'$like':sequelize['fn']('lower','%'+_0x14fadc[_0xde2a('0x27')]['filter']+'%')});}else{var _0x477425={};_0x477425[_0x350150[_0xde2a('0xf')]]={'$like':'%'+_0x14fadc[_0xde2a('0x27')][_0xde2a('0x33')]+'%'};return _0x477425;}}})});}_0x408cbf=_[_0xde2a('0x34')]({},_0x408cbf,_0x14fadc['options']);return _0x408cbf;};
\ No newline at end of file
+var _0x43a9=['subtract','uniqueid','isArray','limit','sort','map','indexOf','priority','cast','col','unsigned','substr','DESC','ASC','omit','isEmpty','length','isObject','isString','unset','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','includes','push','join','$id','query','model','name','intersection','attributes','nolimit','offset','order','where','pick','filter','VIRTUAL','lower','merge','parse','keys','fields','split','filters','forOwn','find','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte'];(function(_0x592d48,_0x23f1ba){var _0x5d789e=function(_0x156900){while(--_0x156900){_0x592d48['push'](_0x592d48['shift']());}};_0x5d789e(++_0x23f1ba);}(_0x43a9,0x15f));var _0x943a=function(_0x5dc138,_0x56389d){_0x5dc138=_0x5dc138-0x0;var _0x17333d=_0x43a9[_0x5dc138];return _0x17333d;};'use strict';var _=require('lodash');var sequelize=require('sequelize');var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x28baba){var _0x17ab37=['ne'];try{var _0x411949=JSON[_0x943a('0x0')](_0x28baba);var _0x4a4938=Object[_0x943a('0x1')](_0x411949)[0x0];return _0x17ab37['includes'](_0x4a4938);}catch(_0x1599f0){return![];}}function getOperatorValue(_0x3d1fc4){var _0x300bee=JSON[_0x943a('0x0')](_0x3d1fc4);var _0x22f93b=Object[_0x943a('0x1')](_0x300bee)[0x0];var _0x6a142d=_0x300bee[_0x22f93b];return{['$'+_0x22f93b]:_0x6a142d};}exports[_0x943a('0x2')]=function(_0x2de935){var _0x438a8a=null;if(_0x2de935){_0x438a8a=_0x2de935[_0x943a('0x3')](',');}return _0x438a8a;};exports[_0x943a('0x4')]=function(_0x136f1f,_0x13f67a){var _0x332331={};if(!_['isEmpty'](_0x136f1f)){_[_0x943a('0x5')](_0x136f1f,function(_0x4e2da7,_0x1a8ce7){try{if(_0x13f67a){var _0x539bc9=_[_0x943a('0x6')](_0x13f67a,{'name':_0x1a8ce7})||{};if(hasSequelizeOperator(_0x4e2da7)){_0x332331[_0x1a8ce7]=getOperatorValue(_0x4e2da7);}else if(_0x539bc9[_0x943a('0x7')]===_0x943a('0x8')&&_[_0x943a('0x9')](_0x4e2da7)){var _0x45befa=JSON[_0x943a('0x0')](_0x4e2da7);var _0x526a11={'$gte':moment(moment(_0x45befa[_0x943a('0xa')])[_0x943a('0xb')](_0x943a('0xc')))[_0x943a('0xd')]()['format'](),'$lte':moment(moment(_0x45befa[_0x943a('0xe')])[_0x943a('0xb')]('YYYY-MM-DD'))[_0x943a('0xd')]()[_0x943a('0xf')](0x1,'s')['format']()};_0x332331[_0x1a8ce7]=_0x526a11;}else if(_0x539bc9['name']===_0x943a('0x10')){_0x332331[_0x1a8ce7]=_0x4e2da7;}else{_0x332331[_0x1a8ce7]=_['isArray'](_0x4e2da7)?_0x4e2da7:JSON['parse'](_0x4e2da7);}}else{_0x332331[_0x1a8ce7]=_[_0x943a('0x11')](_0x4e2da7)?_0x4e2da7:JSON[_0x943a('0x0')](_0x4e2da7);}}catch(_0x22ee95){_0x332331[_0x1a8ce7]=_0x4e2da7['split'](',');}});}return _0x332331;};exports[_0x943a('0x12')]=function(_0x2d7743){_0x2d7743=parseInt(_0x2d7743,0xa);if(!_0x2d7743||_0x2d7743<0x0){_0x2d7743=LIMIT_VALUE;}return _0x2d7743;};exports['offset']=function(_0x2322fe){_0x2322fe=parseInt(_0x2322fe,0xa);if(!_0x2322fe||_0x2322fe<0x0){_0x2322fe=0x0;}return _0x2322fe;};exports[_0x943a('0x13')]=function(_0x588c0a){var _0x43b386,_0x4bf435=null;if(_0x588c0a){_0x43b386=_0x588c0a[_0x943a('0x3')](',');_0x4bf435=_[_0x943a('0x14')](_0x43b386,function(_0xa47a79){if(_0xa47a79[_0x943a('0x15')]('-')===0x0){return[_0xa47a79===_0x943a('0x16')?sequelize[_0x943a('0x17')](sequelize[_0x943a('0x18')](_0x943a('0x16')),_0x943a('0x19')):_0xa47a79[_0x943a('0x1a')](0x1),_0x943a('0x1b')];}else{return[_0xa47a79==='priority'?sequelize[_0x943a('0x17')](sequelize[_0x943a('0x18')]('priority'),_0x943a('0x19')):_0xa47a79,_0x943a('0x1c')];}});}return _0x4bf435;};exports[_0x943a('0x1d')]=function(_0x3bb48c,_0x4d3a08){if(_[_0x943a('0x1e')](_0x3bb48c)){return _0x3bb48c;}if(_[_0x943a('0x11')](_0x3bb48c)){for(var _0x24d6bf=0x0;_0x24d6bf<_0x3bb48c[_0x943a('0x1f')];_0x24d6bf+=0x1){_0x3bb48c[_0x24d6bf]=this[_0x943a('0x1d')](_0x3bb48c[_0x24d6bf],_0x4d3a08);}return _0x3bb48c;}if(!_[_0x943a('0x20')](_0x3bb48c)){return _0x3bb48c;}if(_[_0x943a('0x21')](_0x4d3a08)){_0x4d3a08=[_0x4d3a08];}if(!_[_0x943a('0x11')](_0x4d3a08)){return _0x3bb48c;}for(var _0xb2413f=0x0;_0xb2413f<_0x4d3a08[_0x943a('0x1f')];_0xb2413f+=0x1){_[_0x943a('0x22')](_0x3bb48c,_0x4d3a08[_0xb2413f]);}for(var _0x14d01e in _0x3bb48c){if(_0x3bb48c[_0x943a('0x23')](_0x14d01e)){_0x3bb48c[_0x14d01e]=this['omit'](_0x3bb48c[_0x14d01e],_0x4d3a08);}}return _0x3bb48c;};exports[_0x943a('0x24')]=function(_0x5040a7){return _0x5040a7[_0x943a('0x25')](RegExp(_0x943a('0x26')))?!![]:![];};exports[_0x943a('0x27')]=function(_0xf862d8){return _0xf862d8['match'](/^\S+@\S+$/)?!![]:![];};exports[_0x943a('0x28')]=function(_0x2e45dd){var _0x520903=[];_0x2e45dd[_0x943a('0x3')](/[ ,]+/)[_0x943a('0x29')](function(_0x382f4e){_0x382f4e=_0x382f4e[_0x943a('0x2a')](/([^:]")"+/g,'$1');_0x382f4e='+'+_0x382f4e+'*';if(_0x382f4e[_0x943a('0x2b')]('@'))_0x382f4e='\x22'+_0x382f4e+'\x22';_0x520903[_0x943a('0x2c')](_0x382f4e);});return _0x520903[_0x943a('0x2d')]('\x20');};exports['getOptions']=function(_0x16e7eb,_0x3d8140,_0x2a22bd){var _0x25a4b7={},_0x39368f={};if(_0x3d8140['query'][_0x943a('0x2e')]){_0x3d8140[_0x943a('0x2f')]['id']=_0x3d8140[_0x943a('0x2f')][_0x943a('0x2e')];delete _0x3d8140[_0x943a('0x2f')]['$id'];}_0x25a4b7[_0x943a('0x30')]=_[_0x943a('0x14')](_0x16e7eb,_0x943a('0x31'));_0x25a4b7[_0x943a('0x2f')]=_[_0x943a('0x1')](_0x3d8140['query']);_0x25a4b7[_0x943a('0x4')]=_[_0x943a('0x32')](_0x25a4b7[_0x943a('0x30')],_0x25a4b7[_0x943a('0x2f')]);_0x39368f['attributes']=_['intersection'](_0x25a4b7['model'],this[_0x943a('0x2')](_0x3d8140[_0x943a('0x2f')][_0x943a('0x2')]));_0x39368f[_0x943a('0x33')]=_0x39368f[_0x943a('0x33')][_0x943a('0x1f')]?_0x39368f[_0x943a('0x33')]:_0x25a4b7[_0x943a('0x30')];if(!_0x3d8140[_0x943a('0x2f')][_0x943a('0x23')](_0x943a('0x34'))){_0x39368f['limit']=this[_0x943a('0x12')](_0x3d8140[_0x943a('0x2f')][_0x943a('0x12')]);_0x39368f[_0x943a('0x35')]=this[_0x943a('0x35')](_0x3d8140[_0x943a('0x2f')][_0x943a('0x35')]);}_0x39368f[_0x943a('0x36')]=this[_0x943a('0x13')](_0x3d8140[_0x943a('0x2f')][_0x943a('0x13')]);_0x39368f[_0x943a('0x37')]=this[_0x943a('0x4')](_[_0x943a('0x38')](_0x3d8140[_0x943a('0x2f')],_0x25a4b7[_0x943a('0x4')]),_0x16e7eb);if(_0x3d8140['query'][_0x943a('0x39')]){_0x39368f[_0x943a('0x37')]=_['merge'](_0x39368f[_0x943a('0x37')],{'$or':_[_0x943a('0x14')](_0x16e7eb,function(_0x11a62a){if(_0x11a62a[_0x943a('0x7')]!==_0x943a('0x3a')){if(_0x2a22bd){return sequelize[_0x943a('0x37')](sequelize['fn']('lower',sequelize[_0x943a('0x18')](_0x11a62a['name'])),{'$like':sequelize['fn'](_0x943a('0x3b'),'%'+_0x3d8140[_0x943a('0x2f')]['filter']+'%')});}else{var _0x4c8bf8={};_0x4c8bf8[_0x11a62a[_0x943a('0x31')]]={'$like':'%'+_0x3d8140[_0x943a('0x2f')][_0x943a('0x39')]+'%'};return _0x4c8bf8;}}})});}_0x39368f=_[_0x943a('0x3c')]({},_0x39368f,_0x3d8140['options']);return _0x39368f;};
\ No newline at end of file
index a0b2d7a..6a0be01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec44=['default','get','production','set','join','public','development','test','appPath','json\x20replacer','split','use','static','root','engine','html','ejs','view\x20engine','urlencoded','50mb','initialize','express','serve-favicon','body-parser','cookie-parser','errorhandler','path','passport','cors','moment','./environment','../mysqldb'];(function(_0x53a34c,_0x25cffd){var _0x3dda74=function(_0x559ccd){while(--_0x559ccd){_0x53a34c['push'](_0x53a34c['shift']());}};_0x3dda74(++_0x25cffd);}(_0xec44,0x135));var _0x4ec4=function(_0x5d30b4,_0x199248){_0x5d30b4=_0x5d30b4-0x0;var _0x1acfb8=_0xec44[_0x5d30b4];return _0x1acfb8;};'use strict';var express=require(_0x4ec4('0x0'));var favicon=require(_0x4ec4('0x1'));var bodyParser=require(_0x4ec4('0x2'));var methodOverride=require('method-override');var cookieParser=require(_0x4ec4('0x3'));var errorHandler=require(_0x4ec4('0x4'));var path=require(_0x4ec4('0x5'));var passport=require(_0x4ec4('0x6'));var cors=require(_0x4ec4('0x7'));var moment=require(_0x4ec4('0x8'));var config=require(_0x4ec4('0x9'));var db=require(_0x4ec4('0xa'))['db'];exports[_0x4ec4('0xb')]=function(_0x44fd52){var _0x30412f=_0x44fd52[_0x4ec4('0xc')]('env');if(_0x30412f===_0x4ec4('0xd')){_0x44fd52[_0x4ec4('0xe')]('appPath',path[_0x4ec4('0xf')](config['root'],_0x4ec4('0x10')));}if(_0x30412f===_0x4ec4('0x11')||_0x30412f===_0x4ec4('0x12')){_0x44fd52[_0x4ec4('0xe')](_0x4ec4('0x13'),path[_0x4ec4('0xf')](config['root'],'client'));_0x44fd52['use'](errorHandler());}_0x44fd52[_0x4ec4('0xe')](_0x4ec4('0x14'),function(_0x3be9ed,_0x1dcdab){if(this[_0x3be9ed]instanceof Date){_0x1dcdab=this[_0x3be9ed]['toISOString']()[_0x4ec4('0x15')]('.')[0x0]+'Z';}return _0x1dcdab;});_0x44fd52[_0x4ec4('0x16')](express[_0x4ec4('0x17')](_0x44fd52[_0x4ec4('0xc')](_0x4ec4('0x13'))));_0x44fd52[_0x4ec4('0xe')]('views',config[_0x4ec4('0x18')]+'/server/views');_0x44fd52[_0x4ec4('0x19')](_0x4ec4('0x1a'),require(_0x4ec4('0x1b'))['renderFile']);_0x44fd52[_0x4ec4('0xe')](_0x4ec4('0x1c'),_0x4ec4('0x1a'));_0x44fd52[_0x4ec4('0x16')](bodyParser[_0x4ec4('0x1d')]({'limit':'50mb','extended':!![]}));_0x44fd52[_0x4ec4('0x16')](bodyParser['json']({'limit':_0x4ec4('0x1e')}));_0x44fd52[_0x4ec4('0x16')](cors());_0x44fd52[_0x4ec4('0x16')](methodOverride());_0x44fd52[_0x4ec4('0x16')](cookieParser());_0x44fd52[_0x4ec4('0x16')](passport[_0x4ec4('0x1f')]());};
\ No newline at end of file
+var _0xfd0e=['50mb','initialize','serve-favicon','body-parser','method-override','cookie-parser','path','cors','moment','./environment','../mysqldb','default','get','env','production','set','appPath','join','root','public','test','use','json\x20replacer','toISOString','split','static','views','engine','html','renderFile','urlencoded'];(function(_0x367a3d,_0x452717){var _0x460539=function(_0x1e8beb){while(--_0x1e8beb){_0x367a3d['push'](_0x367a3d['shift']());}};_0x460539(++_0x452717);}(_0xfd0e,0x1d3));var _0xefd0=function(_0x412342,_0x180734){_0x412342=_0x412342-0x0;var _0x3e62cb=_0xfd0e[_0x412342];return _0x3e62cb;};'use strict';var express=require('express');var favicon=require(_0xefd0('0x0'));var bodyParser=require(_0xefd0('0x1'));var methodOverride=require(_0xefd0('0x2'));var cookieParser=require(_0xefd0('0x3'));var errorHandler=require('errorhandler');var path=require(_0xefd0('0x4'));var passport=require('passport');var cors=require(_0xefd0('0x5'));var moment=require(_0xefd0('0x6'));var config=require(_0xefd0('0x7'));var db=require(_0xefd0('0x8'))['db'];exports[_0xefd0('0x9')]=function(_0x35879a){var _0x5d6472=_0x35879a[_0xefd0('0xa')](_0xefd0('0xb'));if(_0x5d6472===_0xefd0('0xc')){_0x35879a[_0xefd0('0xd')](_0xefd0('0xe'),path[_0xefd0('0xf')](config[_0xefd0('0x10')],_0xefd0('0x11')));}if(_0x5d6472==='development'||_0x5d6472===_0xefd0('0x12')){_0x35879a['set'](_0xefd0('0xe'),path[_0xefd0('0xf')](config[_0xefd0('0x10')],'client'));_0x35879a[_0xefd0('0x13')](errorHandler());}_0x35879a['set'](_0xefd0('0x14'),function(_0x34cc29,_0x14255d){if(this[_0x34cc29]instanceof Date){_0x14255d=this[_0x34cc29][_0xefd0('0x15')]()[_0xefd0('0x16')]('.')[0x0]+'Z';}return _0x14255d;});_0x35879a['use'](express[_0xefd0('0x17')](_0x35879a[_0xefd0('0xa')]('appPath')));_0x35879a[_0xefd0('0xd')](_0xefd0('0x18'),config['root']+'/server/views');_0x35879a[_0xefd0('0x19')](_0xefd0('0x1a'),require('ejs')[_0xefd0('0x1b')]);_0x35879a['set']('view\x20engine',_0xefd0('0x1a'));_0x35879a[_0xefd0('0x13')](bodyParser[_0xefd0('0x1c')]({'limit':_0xefd0('0x1d'),'extended':!![]}));_0x35879a[_0xefd0('0x13')](bodyParser['json']({'limit':'50mb'}));_0x35879a['use'](cors());_0x35879a[_0xefd0('0x13')](methodOverride());_0x35879a[_0xefd0('0x13')](cookieParser());_0x35879a[_0xefd0('0x13')](passport[_0xefd0('0x1e')]());};
\ No newline at end of file
index 1c8c359..6266fe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79bd=['substring','lodash','bimedia-machine-uuid','../environment','networkInterfaces','orderBy','filter','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','getFirstInterface','map','model','join','createHash','digest','getUuid','platform','licenseToken','win32','dmidecode\x20--string\x20system-uuid','replace','hostname','macAddress','ipAddress','md5','update','hex'];(function(_0x3a99f4,_0x2a81c1){var _0xea0b42=function(_0x41f533){while(--_0x41f533){_0x3a99f4['push'](_0x3a99f4['shift']());}};_0xea0b42(++_0x2a81c1);}(_0x79bd,0x161));var _0xd79b=function(_0xe22030,_0x1e4ce4){_0xe22030=_0xe22030-0x0;var _0x5ebe09=_0x79bd[_0xe22030];return _0x5ebe09;};'use strict';var _=require(_0xd79b('0x0'));var os=require('os');var crypto=require('crypto');var machine=require(_0xd79b('0x1'));var exec=require('child_process')['execSync'];var config=require(_0xd79b('0x2'));function getInterfaces(){var _0x15f5b0=[];var _0x5c6bb2=os[_0xd79b('0x3')]();var _0x4e3dbe=_[_0xd79b('0x4')](_['keys'](_0x5c6bb2));for(var _0x58bc72=0x0;_0x58bc72<_0x4e3dbe['length'];_0x58bc72++){var _0x12c143=_0x5c6bb2[_0x4e3dbe[_0x58bc72]][_0xd79b('0x5')](function(_0xde7d67){return _0xde7d67['family']===_0xd79b('0x6')&&_0xde7d67[_0xd79b('0x7')]===![];});_0x15f5b0=_0x15f5b0[_0xd79b('0x8')](_0x12c143);}return _0x15f5b0;}function getFirstInterface(){var _0x3c84b7=_[_0xd79b('0x9')](getInterfaces());return{'macAddress':_0x3c84b7&&_0x3c84b7[_0xd79b('0xa')]?_0x3c84b7[_0xd79b('0xa')]:_0xd79b('0xb'),'ipAddress':_0x3c84b7&&_0x3c84b7[_0xd79b('0xc')]?_0x3c84b7[_0xd79b('0xc')]:'127.0.0.1'};}exports[_0xd79b('0xd')]=getFirstInterface;function getCPUhash(){var _0x3582ad=_[_0xd79b('0x4')](os['cpus']()[_0xd79b('0xe')](function(_0x3c0586){return _0x3c0586[_0xd79b('0xf')];}))[_0xd79b('0x10')](':');return crypto[_0xd79b('0x11')]('md5')['update'](_0x3582ad)[_0xd79b('0x12')]('hex');}exports[_0xd79b('0x13')]=function(){var _0x5af689=os[_0xd79b('0x14')]();var _0x48e3e4=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x48e3e4['test'](config['licenseToken'])){return config[_0xd79b('0x15')];}else if(_0x5af689===_0xd79b('0x16')){return exec(_0xd79b('0x17'),{'encoding':'utf8'})[_0xd79b('0x18')]('\x0d\x0a','');}else{var _0x35c33c=getFirstInterface();var _0x5dbfad=getCPUhash();var _0xc5df7=_0x5dbfad+'|'+os[_0xd79b('0x19')]()+'|'+_0x35c33c[_0xd79b('0x1a')]+'|'+_0x35c33c[_0xd79b('0x1b')];var _0x5a1e07=crypto[_0xd79b('0x11')](_0xd79b('0x1c'))[_0xd79b('0x1d')](_0xc5df7)[_0xd79b('0x12')](_0xd79b('0x1e'));return _0x5a1e07['substring'](0x0,0x8)+'-'+_0x5a1e07[_0xd79b('0x1f')](0x8,0xc)+'-'+_0x5a1e07['substring'](0xc,0x10)+'-'+_0x5a1e07[_0xd79b('0x1f')](0x10,0x14)+'-'+_0x5a1e07['substring'](0x14);}};
\ No newline at end of file
+var _0xcbfc=['lodash','child_process','execSync','networkInterfaces','orderBy','keys','filter','family','IPv4','concat','head','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','join','createHash','md5','update','digest','hex','getUuid','platform','licenseToken','test','dmidecode\x20--string\x20system-uuid','utf8','replace','ipAddress','substring'];(function(_0xdde03f,_0x4e4595){var _0x9f3639=function(_0x21b76e){while(--_0x21b76e){_0xdde03f['push'](_0xdde03f['shift']());}};_0x9f3639(++_0x4e4595);}(_0xcbfc,0xf8));var _0xccbf=function(_0x7cdc0e,_0x465448){_0x7cdc0e=_0x7cdc0e-0x0;var _0x53afcf=_0xcbfc[_0x7cdc0e];return _0x53afcf;};'use strict';var _=require(_0xccbf('0x0'));var os=require('os');var crypto=require('crypto');var machine=require('bimedia-machine-uuid');var exec=require(_0xccbf('0x1'))[_0xccbf('0x2')];var config=require('../environment');function getInterfaces(){var _0x4a6b1a=[];var _0x1bb988=os[_0xccbf('0x3')]();var _0x36fc74=_[_0xccbf('0x4')](_[_0xccbf('0x5')](_0x1bb988));for(var _0x1d06a2=0x0;_0x1d06a2<_0x36fc74['length'];_0x1d06a2++){var _0x335fc1=_0x1bb988[_0x36fc74[_0x1d06a2]][_0xccbf('0x6')](function(_0x553541){return _0x553541[_0xccbf('0x7')]===_0xccbf('0x8')&&_0x553541['internal']===![];});_0x4a6b1a=_0x4a6b1a[_0xccbf('0x9')](_0x335fc1);}return _0x4a6b1a;}function getFirstInterface(){var _0x78a980=_[_0xccbf('0xa')](getInterfaces());return{'macAddress':_0x78a980&&_0x78a980['mac']?_0x78a980['mac']:_0xccbf('0xb'),'ipAddress':_0x78a980&&_0x78a980['address']?_0x78a980[_0xccbf('0xc')]:_0xccbf('0xd')};}exports[_0xccbf('0xe')]=getFirstInterface;function getCPUhash(){var _0x35cbbf=_[_0xccbf('0x4')](os[_0xccbf('0xf')]()['map'](function(_0x383bca){return _0x383bca['model'];}))[_0xccbf('0x10')](':');return crypto[_0xccbf('0x11')](_0xccbf('0x12'))[_0xccbf('0x13')](_0x35cbbf)[_0xccbf('0x14')](_0xccbf('0x15'));}exports[_0xccbf('0x16')]=function(){var _0x75aacc=os[_0xccbf('0x17')]();var _0x26ce3d=/[0-9a-f-]{36}/;if(config[_0xccbf('0x18')]&&_0x26ce3d[_0xccbf('0x19')](config[_0xccbf('0x18')])){return config['licenseToken'];}else if(_0x75aacc==='win32'){return exec(_0xccbf('0x1a'),{'encoding':_0xccbf('0x1b')})[_0xccbf('0x1c')]('\x0d\x0a','');}else{var _0x4f83d4=getFirstInterface();var _0xa39a8f=getCPUhash();var _0x153ee6=_0xa39a8f+'|'+os['hostname']()+'|'+_0x4f83d4['macAddress']+'|'+_0x4f83d4[_0xccbf('0x1d')];var _0x6b146c=crypto[_0xccbf('0x11')](_0xccbf('0x12'))[_0xccbf('0x13')](_0x153ee6)[_0xccbf('0x14')](_0xccbf('0x15'));return _0x6b146c['substring'](0x0,0x8)+'-'+_0x6b146c['substring'](0x8,0xc)+'-'+_0x6b146c[_0xccbf('0x1e')](0xc,0x10)+'-'+_0x6b146c['substring'](0x10,0x14)+'-'+_0x6b146c[_0xccbf('0x1e')](0x14);}};
\ No newline at end of file
index f272cb6..55c23e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6611=['bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','%s/api/servers/%s/check?version=%s','%s/api/servers/%s/check?version=%s&oldtoken=%s','exports','then','get','data1','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','format','YYYY-MM-DD\x20HH:mm','update','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','catch','error','message','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise'];(function(_0x26f518,_0x5a6c2d){var _0x3666d=function(_0x38ef7f){while(--_0x38ef7f){_0x26f518['push'](_0x26f518['shift']());}};_0x3666d(++_0x5a6c2d);}(_0x6611,0x1e9));var _0x1661=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x6611[_0x19e35c];return _0x3e1fe8;};'use strict';var util=require(_0x1661('0x0'));var moment=require(_0x1661('0x1'));var rp=require(_0x1661('0x2'));var BPromise=require(_0x1661('0x3'));var pkginfo=require(_0x1661('0x4'))(module,_0x1661('0x5'));var db=require(_0x1661('0x6'))['db'];var encryptor=require(_0x1661('0x7'));var hardware=require(_0x1661('0x8'));var logger=require(_0x1661('0x9'))(_0x1661('0xa'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x5edd02){return new BPromise(function(_0xd6a6c4,_0x396344){var _0xb9c66f=util['format'](_0x1661('0xb'),HOST,_0x5edd02,module['exports'][_0x1661('0x5')]);if(oldToken){_0xb9c66f=util['format'](_0x1661('0xc'),HOST,_0x5edd02,module[_0x1661('0xd')]['version'],oldToken);}var _0x363a9f={'uri':_0xb9c66f,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x363a9f)[_0x1661('0xe')](function(_0x1b308c){_0xd6a6c4(_0x1b308c);})['catch'](function(_0x1a4b61){_0x396344(_0x1a4b61);});});}function manageLicense(_0x42b280,_0x134ecb){var _0x267614=_0x134ecb[_0x1661('0xf')]({'plain':!![]});if(!isOldTokenSent&&_0x267614[_0x1661('0x10')]!==_0x42b280&&!_0x267614[_0x1661('0x11')]){oldToken=_0x267614[_0x1661('0x10')];}httpRequest(_0x42b280)['then'](function(_0x1223ba){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x1223ba['active']){isOldTokenSent=![];if(!_0x267614[_0x1661('0xa')]&&_0x267614[_0x1661('0xa')]!=_0x1223ba[_0x1661('0xa')]||_0x267614['license']&&_0x267614[_0x1661('0x11')]){logger[_0x1661('0x12')](_0x1661('0x13'));}if(_0x267614[_0x1661('0xa')]&&!_0x267614['data2']&&_0x267614[_0x1661('0xa')]!=_0x1223ba[_0x1661('0xa')]){logger[_0x1661('0x12')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x267614[_0x1661('0xa')]&&!_0x267614[_0x1661('0x11')]&&_0x267614['license']==_0x1223ba[_0x1661('0xa')]){return _0x134ecb;}return _0x134ecb['update']({'data1':_0x42b280,'data2':null,'license':_0x1223ba[_0x1661('0xa')]});}else{if(_0x1223ba['license']||_0x267614[_0x1661('0xa')]){if(!_0x267614['data2']){if(_0x267614[_0x1661('0x10')]==_0x42b280){GRAY_PERIOD_REASON='Disabled';logger['info'](_0x1661('0x14'));}else{GRAY_PERIOD_REASON=_0x1661('0x15');logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x267614[_0x1661('0x10')],_0x42b280);}logger[_0x1661('0x12')](_0x1661('0x16'),GRAY_PERIOD_REASON['toUpperCase'](),moment()[_0x1661('0x17')](_0x1661('0x18')));return _0x134ecb[_0x1661('0x19')]({'data2':encryptor[_0x1661('0x1a')](moment()['format'](_0x1661('0x18')))});}else{if(moment()[_0x1661('0x1b')](encryptor[_0x1661('0x1c')](_0x267614[_0x1661('0x11')]),_0x1661('0x1d'))>DAYS){logger['info'](_0x1661('0x1e'),moment()[_0x1661('0x17')](_0x1661('0x18')));isOldTokenSent=![];return _0x134ecb[_0x1661('0x19')]({'data1':_0x42b280,'data2':null,'license':null});}}}else{if(_0x267614[_0x1661('0x10')]!=_0x42b280){logger[_0x1661('0x12')](_0x1661('0x1f'),_0x267614['data1'],_0x42b280);return _0x134ecb[_0x1661('0x19')]({'data1':_0x42b280,'data2':null,'license':null});}}}return _0x134ecb;})[_0x1661('0xe')](function(_0x2be36b){_0x134ecb=_0x2be36b;})[_0x1661('0x20')](function(_0xd1f871){logger[_0x1661('0x21')](_0xd1f871[_0x1661('0x22')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x134ecb);},TIME);});}function defaultLicense(){var _0x38dc43=hardware[_0x1661('0x23')]();if(_0x38dc43){return db[_0x1661('0x24')][_0x1661('0x25')]({'where':{'id':0x1},'defaults':{'data1':_0x38dc43}})[_0x1661('0x26')](function(_0x340425,_0x1e6898){logger['info'](_0x1661('0x27'),_0x38dc43);manageLicense(_0x38dc43,_0x340425);})[_0x1661('0x20')](function(_0x483afe){logger[_0x1661('0x21')](_0x483afe[_0x1661('0x22')]);});}}exports[_0x1661('0x28')]=defaultLicense;
\ No newline at end of file
+var _0x6ee4=['default','util','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','../logger','https://www.xcallymotion.com','%s/api/servers/%s/check?version=%s','format','exports','GET','then','get','data1','data2','active','license','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','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','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','days','DEMO\x20START\x20AT\x20%s','catch','error','message','finally','spread','SERVICE\x20LICENSE\x20STARTED\x20%s'];(function(_0x5d2731,_0x41a5ea){var _0xa88282=function(_0x4af700){while(--_0x4af700){_0x5d2731['push'](_0x5d2731['shift']());}};_0xa88282(++_0x41a5ea);}(_0x6ee4,0x103));var _0x46ee=function(_0x424793,_0x142b2e){_0x424793=_0x424793-0x0;var _0x48ed9a=_0x6ee4[_0x424793];return _0x48ed9a;};'use strict';var util=require(_0x46ee('0x0'));var moment=require(_0x46ee('0x1'));var rp=require(_0x46ee('0x2'));var BPromise=require(_0x46ee('0x3'));var pkginfo=require(_0x46ee('0x4'))(module,_0x46ee('0x5'));var db=require(_0x46ee('0x6'))['db'];var encryptor=require(_0x46ee('0x7'));var hardware=require(_0x46ee('0x8'));var logger=require(_0x46ee('0x9'))('license');var HOST=_0x46ee('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x38dc86){return new BPromise(function(_0x16d2eb,_0x1431da){var _0x3ee1e9=util['format'](_0x46ee('0xb'),HOST,_0x38dc86,module['exports'][_0x46ee('0x5')]);if(oldToken){_0x3ee1e9=util[_0x46ee('0xc')]('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x38dc86,module[_0x46ee('0xd')][_0x46ee('0x5')],oldToken);}var _0x4c3813={'uri':_0x3ee1e9,'method':_0x46ee('0xe'),'timeout':0xea60,'json':!![]};return rp(_0x4c3813)[_0x46ee('0xf')](function(_0x23360c){_0x16d2eb(_0x23360c);})['catch'](function(_0x5b1167){_0x1431da(_0x5b1167);});});}function manageLicense(_0x1e2be1,_0x25c261){var _0x3f3aa9=_0x25c261[_0x46ee('0x10')]({'plain':!![]});if(!isOldTokenSent&&_0x3f3aa9[_0x46ee('0x11')]!==_0x1e2be1&&!_0x3f3aa9[_0x46ee('0x12')]){oldToken=_0x3f3aa9[_0x46ee('0x11')];}httpRequest(_0x1e2be1)[_0x46ee('0xf')](function(_0x1c5b73){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x1c5b73[_0x46ee('0x13')]){isOldTokenSent=![];if(!_0x3f3aa9[_0x46ee('0x14')]&&_0x3f3aa9[_0x46ee('0x14')]!=_0x1c5b73[_0x46ee('0x14')]||_0x3f3aa9[_0x46ee('0x14')]&&_0x3f3aa9[_0x46ee('0x12')]){logger['info'](_0x46ee('0x15'));}if(_0x3f3aa9[_0x46ee('0x14')]&&!_0x3f3aa9[_0x46ee('0x12')]&&_0x3f3aa9[_0x46ee('0x14')]!=_0x1c5b73['license']){logger[_0x46ee('0x16')](_0x46ee('0x17'));}if(_0x3f3aa9[_0x46ee('0x14')]&&!_0x3f3aa9[_0x46ee('0x12')]&&_0x3f3aa9['license']==_0x1c5b73['license']){return _0x25c261;}return _0x25c261[_0x46ee('0x18')]({'data1':_0x1e2be1,'data2':null,'license':_0x1c5b73[_0x46ee('0x14')]});}else{if(_0x1c5b73[_0x46ee('0x14')]||_0x3f3aa9[_0x46ee('0x14')]){if(!_0x3f3aa9[_0x46ee('0x12')]){if(_0x3f3aa9[_0x46ee('0x11')]==_0x1e2be1){GRAY_PERIOD_REASON=_0x46ee('0x19');logger['info'](_0x46ee('0x1a'));}else{GRAY_PERIOD_REASON=_0x46ee('0x1b');logger[_0x46ee('0x16')](_0x46ee('0x1c'),_0x3f3aa9['data1'],_0x1e2be1);}logger[_0x46ee('0x16')](_0x46ee('0x1d'),GRAY_PERIOD_REASON[_0x46ee('0x1e')](),moment()[_0x46ee('0xc')](_0x46ee('0x1f')));return _0x25c261[_0x46ee('0x18')]({'data2':encryptor[_0x46ee('0x20')](moment()[_0x46ee('0xc')](_0x46ee('0x1f')))});}else{if(moment()[_0x46ee('0x21')](encryptor['decryptString'](_0x3f3aa9[_0x46ee('0x12')]),_0x46ee('0x22'))>DAYS){logger[_0x46ee('0x16')](_0x46ee('0x23'),moment()[_0x46ee('0xc')](_0x46ee('0x1f')));isOldTokenSent=![];return _0x25c261['update']({'data1':_0x1e2be1,'data2':null,'license':null});}}}else{if(_0x3f3aa9[_0x46ee('0x11')]!=_0x1e2be1){logger[_0x46ee('0x16')](_0x46ee('0x1c'),_0x3f3aa9[_0x46ee('0x11')],_0x1e2be1);return _0x25c261[_0x46ee('0x18')]({'data1':_0x1e2be1,'data2':null,'license':null});}}}return _0x25c261;})[_0x46ee('0xf')](function(_0x1e986e){_0x25c261=_0x1e986e;})[_0x46ee('0x24')](function(_0x4d91d5){logger[_0x46ee('0x25')](_0x4d91d5[_0x46ee('0x26')]);})[_0x46ee('0x27')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x25c261);},TIME);});}function defaultLicense(){var _0x203960=hardware['getUuid']();if(_0x203960){return db['License']['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x203960}})[_0x46ee('0x28')](function(_0x460ad8,_0x1cdb7d){logger[_0x46ee('0x16')](_0x46ee('0x29'),_0x203960);manageLicense(_0x203960,_0x460ad8);})[_0x46ee('0x24')](function(_0x53c5ff){logger['error'](_0x53c5ff[_0x46ee('0x26')]);});}}exports[_0x46ee('0x2a')]=defaultLicense;
\ No newline at end of file
index e7c7b14..5189a81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80a3=['getUuid','Breaking\x20license','License','find','defaults','then','catch','data1','data2','split','decryptString','format','%s:%s:%s','parse','demo','uuid','gray','deadline','add','days','grayReason','disabled','message','User','findAll','role','sequelize','COUNT','user','telephone','users','telephones','forEach','admin','count','pick','countBy','License\x20limit\x20reached\x20for\x20telephones','exports','lodash','moment','bluebird','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x80a3,0x162));var _0x380a=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0x80a3[_0x2b5eae];return _0x5f3ac9;};'use strict';var util=require('util');var _=require(_0x380a('0x0'));var moment=require(_0x380a('0x1'));var BPromise=require(_0x380a('0x2'));var hardware=require('./hardware');var encryptor=require(_0x380a('0x3'));var db=require(_0x380a('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x380a('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware[_0x380a('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x380a('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x380a('0x7'),'machineUuid':hardware[_0x380a('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x1a0d90){return new BPromise(function(_0x57a4d2,_0x4f98de){return db[_0x380a('0x8')][_0x380a('0x9')](_[_0x380a('0xa')](_0x1a0d90,{'raw':!![],'where':{'id':0x1}}))[_0x380a('0xb')](function(_0x25258d){return checkLicense(_0x25258d,null);})[_0x380a('0xb')](function(_0x4a27da){_0x57a4d2(_0x4a27da);return;})[_0x380a('0xc')](function(_0xebd4ea){_0x4f98de(_0xebd4ea);});});}function checkLicense(_0x562ba2,_0x5bfbf1){if(!_0x562ba2){demoLicense['uuid']=_0x562ba2[_0x380a('0xd')];return demoLicense;}try{var _0x231b39=_0x5bfbf1||_0x562ba2['license'];if(_['isEmpty'](_0x231b39)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x39b880=_0x562ba2['data1'];var _0xd5d9ec=_0x562ba2[_0x380a('0xe')];var _0x1dbbf3=_0x39b880[_0x380a('0xf')]('-')[0x4];var _0x34f20c=_0x39b880[_0x380a('0xf')]('-')[0x0];var _0x10cf58=encryptor[_0x380a('0x10')](_0x231b39,util[_0x380a('0x11')](_0x380a('0x12'),_0x1dbbf3,_0x39b880,_0x34f20c));var _0x20a93a=JSON[_0x380a('0x13')](_0x10cf58);_0x20a93a[_0x380a('0x14')]=![];_0x20a93a[_0x380a('0x15')]=_0x39b880;_0x20a93a['machineUuid']=hardware['getUuid']();if(_0xd5d9ec){var _0x52a354=encryptor[_0x380a('0x10')](_0xd5d9ec);_0x20a93a[_0x380a('0x16')]=_0x52a354;_0x20a93a[_0x380a('0x17')]=moment(_0x52a354)[_0x380a('0x18')](0x7,_0x380a('0x19'))[_0x380a('0x11')]();_0x20a93a[_0x380a('0x1a')]=_0x20a93a['uuid']!=_0x20a93a['machineUuid']?'changed':_0x380a('0x1b');}return _0x20a93a;}catch(_0x25196a){breakingLicense[_0x380a('0x15')]=_0x562ba2[_0x380a('0xd')];breakingLicense[_0x380a('0x1c')]=_0x25196a[_0x380a('0x1c')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x5a2545,_0x133dfc){getLicense()['then'](function(_0x5e7192){return db[_0x380a('0x1d')][_0x380a('0x1e')]({'attributes':[_0x380a('0x1f'),[db[_0x380a('0x20')]['fn'](_0x380a('0x21'),db['sequelize']['col'](_0x380a('0x1f'))),'count']],'group':'role','where':{'role':{'$or':['admin',_0x380a('0x22'),_0x380a('0x23')]}},'raw':!![]})[_0x380a('0xb')](function(_0x38c068){var _0x251d05={'user':_0x5e7192[_0x380a('0x24')]||0x0,'telephone':_0x5e7192[_0x380a('0x25')]||0x0};_0x38c068[_0x380a('0x26')](function(_0x2f89dd){var _0x4a3df8=_0x2f89dd[_0x380a('0x1f')]===_0x380a('0x27')?_0x380a('0x22'):_0x2f89dd[_0x380a('0x1f')];_0x251d05[_0x4a3df8]-=_0x2f89dd[_0x380a('0x28')];if(_0x251d05[_0x4a3df8]<0x0)_0x251d05[_0x4a3df8]=0x0;});_0x5a2545(_0x251d05);return;});})[_0x380a('0xc')](function(_0x3776d6){_0x133dfc(_0x3776d6);});});}function checkUserLimits(_0x224d9b){return new BPromise(function(_0x202484,_0x23e8b7){getLimits()['then'](function(_0x2b0fac){var _0x56cb81=_[_0x380a('0x29')](_[_0x380a('0x2a')](_0x224d9b,'role'),[_0x380a('0x27'),_0x380a('0x22'),_0x380a('0x23')]);var _0x5d2919=(_0x56cb81[_0x380a('0x27')]||0x0)+(_0x56cb81[_0x380a('0x22')]||0x0);var _0x25e440=_0x56cb81['telephone']||0x0;if(_0x5d2919>_0x2b0fac[_0x380a('0x22')])return _0x23e8b7('License\x20limit\x20reached\x20for\x20users');if(_0x25e440>_0x2b0fac[_0x380a('0x23')])return _0x23e8b7(_0x380a('0x2b'));return _0x202484();})[_0x380a('0xc')](function(_0x47668d){_0x23e8b7(_0x47668d);});});}module[_0x380a('0x2c')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x4c3b=['moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','split','decryptString','format','%s:%s:%s','demo','uuid','gray','deadline','add','grayReason','machineUuid','changed','message','User','findAll','role','col','count','admin','user','telephone','telephones','forEach','catch','pick','countBy','License\x20limit\x20reached\x20for\x20users','exports','util','lodash'];(function(_0x14e2dc,_0x5f3535){var _0x1843c3=function(_0x56f5cc){while(--_0x56f5cc){_0x14e2dc['push'](_0x14e2dc['shift']());}};_0x1843c3(++_0x5f3535);}(_0x4c3b,0xe9));var _0xb4c3=function(_0x1ad6c9,_0x370bd6){_0x1ad6c9=_0x1ad6c9-0x0;var _0x25a34d=_0x4c3b[_0x1ad6c9];return _0x25a34d;};'use strict';var util=require(_0xb4c3('0x0'));var _=require(_0xb4c3('0x1'));var moment=require(_0xb4c3('0x2'));var BPromise=require(_0xb4c3('0x3'));var hardware=require(_0xb4c3('0x4'));var encryptor=require(_0xb4c3('0x5'));var db=require(_0xb4c3('0x6'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xb4c3('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xb4c3('0x8'),'machineUuid':hardware[_0xb4c3('0x9')](),'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':_0xb4c3('0xa'),'machineUuid':hardware[_0xb4c3('0x9')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x2a289b){return new BPromise(function(_0xdb2c72,_0x2a6d81){return db[_0xb4c3('0xb')][_0xb4c3('0xc')](_[_0xb4c3('0xd')](_0x2a289b,{'raw':!![],'where':{'id':0x1}}))[_0xb4c3('0xe')](function(_0x2bfa86){return checkLicense(_0x2bfa86,null);})['then'](function(_0x3814f0){_0xdb2c72(_0x3814f0);return;})['catch'](function(_0x22b55a){_0x2a6d81(_0x22b55a);});});}function checkLicense(_0x1764c6,_0x32c64e){if(!_0x1764c6){demoLicense['uuid']=_0x1764c6[_0xb4c3('0xf')];return demoLicense;}try{var _0x3e0275=_0x32c64e||_0x1764c6[_0xb4c3('0x10')];if(_[_0xb4c3('0x11')](_0x3e0275)){throw new Error(_0xb4c3('0x12'));}var _0x1c3d4b=_0x1764c6[_0xb4c3('0xf')];var _0x7d0e98=_0x1764c6['data2'];var _0x3cbf6a=_0x1c3d4b['split']('-')[0x4];var _0x53b34e=_0x1c3d4b[_0xb4c3('0x13')]('-')[0x0];var _0x9475fc=encryptor[_0xb4c3('0x14')](_0x3e0275,util[_0xb4c3('0x15')](_0xb4c3('0x16'),_0x3cbf6a,_0x1c3d4b,_0x53b34e));var _0x304e19=JSON['parse'](_0x9475fc);_0x304e19[_0xb4c3('0x17')]=![];_0x304e19[_0xb4c3('0x18')]=_0x1c3d4b;_0x304e19['machineUuid']=hardware[_0xb4c3('0x9')]();if(_0x7d0e98){var _0x5cec2c=encryptor[_0xb4c3('0x14')](_0x7d0e98);_0x304e19[_0xb4c3('0x19')]=_0x5cec2c;_0x304e19[_0xb4c3('0x1a')]=moment(_0x5cec2c)[_0xb4c3('0x1b')](0x7,'days')[_0xb4c3('0x15')]();_0x304e19[_0xb4c3('0x1c')]=_0x304e19[_0xb4c3('0x18')]!=_0x304e19[_0xb4c3('0x1d')]?_0xb4c3('0x1e'):'disabled';}return _0x304e19;}catch(_0x136f96){breakingLicense['uuid']=_0x1764c6[_0xb4c3('0xf')];breakingLicense[_0xb4c3('0x1f')]=_0x136f96[_0xb4c3('0x1f')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x29da73,_0x25ee66){getLicense()['then'](function(_0x37997d){return db[_0xb4c3('0x20')][_0xb4c3('0x21')]({'attributes':[_0xb4c3('0x22'),[db['sequelize']['fn']('COUNT',db['sequelize'][_0xb4c3('0x23')](_0xb4c3('0x22'))),_0xb4c3('0x24')]],'group':_0xb4c3('0x22'),'where':{'role':{'$or':[_0xb4c3('0x25'),_0xb4c3('0x26'),_0xb4c3('0x27')]}},'raw':!![]})['then'](function(_0x4d010b){var _0x491ac4={'user':_0x37997d['users']||0x0,'telephone':_0x37997d[_0xb4c3('0x28')]||0x0};_0x4d010b[_0xb4c3('0x29')](function(_0x4244f6){var _0x861c4f=_0x4244f6[_0xb4c3('0x22')]===_0xb4c3('0x25')?_0xb4c3('0x26'):_0x4244f6[_0xb4c3('0x22')];_0x491ac4[_0x861c4f]-=_0x4244f6[_0xb4c3('0x24')];if(_0x491ac4[_0x861c4f]<0x0)_0x491ac4[_0x861c4f]=0x0;});_0x29da73(_0x491ac4);return;});})[_0xb4c3('0x2a')](function(_0x5b3a58){_0x25ee66(_0x5b3a58);});});}function checkUserLimits(_0x226735){return new BPromise(function(_0x5ddb5a,_0x2107da){getLimits()[_0xb4c3('0xe')](function(_0x1e5dfa){var _0x415564=_[_0xb4c3('0x2b')](_[_0xb4c3('0x2c')](_0x226735,_0xb4c3('0x22')),[_0xb4c3('0x25'),'user','telephone']);var _0x3cced0=(_0x415564[_0xb4c3('0x25')]||0x0)+(_0x415564[_0xb4c3('0x26')]||0x0);var _0x5ba62b=_0x415564[_0xb4c3('0x27')]||0x0;if(_0x3cced0>_0x1e5dfa[_0xb4c3('0x26')])return _0x2107da(_0xb4c3('0x2d'));if(_0x5ba62b>_0x1e5dfa[_0xb4c3('0x27')])return _0x2107da('License\x20limit\x20reached\x20for\x20telephones');return _0x5ddb5a();})[_0xb4c3('0x2a')](function(_0x194d7e){_0x2107da(_0x194d7e);});});}module[_0xb4c3('0x2e')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 487efa3..f0c5518 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['http://localhost:9000','myappanuglar-secret','secret'];(function(_0x3edb26,_0x9613b4){var _0x4ad9f5=function(_0x5cb828){while(--_0x5cb828){_0x3edb26['push'](_0x3edb26['shift']());}};_0x4ad9f5(++_0x9613b4);}(_0x57ca,0x108));var _0xa57c=function(_0x48e96d,_0x3d5176){_0x48e96d=_0x48e96d-0x0;var _0x29e974=_0x57ca[_0x48e96d];return _0x29e974;};'use strict';module['exports']={'DOMAIN':_0xa57c('0x0'),'SESSION_SECRET':_0xa57c('0x1'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0xa57c('0x2'),'DEBUG':''};
\ No newline at end of file
+var _0xef0f=['exports','myappanuglar-secret','app-id','secret'];(function(_0x1f9a53,_0x3c83cb){var _0x41ac71=function(_0x201497){while(--_0x201497){_0x1f9a53['push'](_0x1f9a53['shift']());}};_0x41ac71(++_0x3c83cb);}(_0xef0f,0x168));var _0xfef0=function(_0x346a94,_0x140661){_0x346a94=_0x346a94-0x0;var _0x2c0083=_0xef0f[_0x346a94];return _0x2c0083;};'use strict';module[_0xfef0('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0xfef0('0x1'),'GOOGLE_ID':_0xfef0('0x2'),'GOOGLE_SECRET':_0xfef0('0x3'),'DEBUG':''};
\ No newline at end of file
index 924ffd7..aa251f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3b4=['%s-%s','error','info','env','debugLevel','moment','path','INFO','/var','xcally','format','%s-%s.log','message','replace','{{{','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','exports','Logger','transports','File'];(function(_0x3c1ea7,_0x2f557b){var _0x4bf890=function(_0x23f800){while(--_0x23f800){_0x3c1ea7['push'](_0x3c1ea7['shift']());}};_0x4bf890(++_0x2f557b);}(_0xd3b4,0x1e9));var _0x4d3b=function(_0x4b870f,_0x1850e5){_0x4b870f=_0x4b870f-0x0;var _0x5579b5=_0xd3b4[_0x4b870f];return _0x5579b5;};'use strict';var moment=require(_0x4d3b('0x0'));var winston=require('winston');var util=require('util');var path=require(_0x4d3b('0x1'));var debugLevel=_0x4d3b('0x2');function filename(_0x2179fc,_0x17b005){return path['join'](_0x4d3b('0x3'),'log',_0x4d3b('0x4'),util[_0x4d3b('0x5')](_0x4d3b('0x6'),_0x2179fc,_0x17b005));}function formatter(_0x338d10,_0xe4511c){_0xe4511c[_0x4d3b('0x7')]=_0xe4511c[_0x4d3b('0x7')][_0x4d3b('0x8')](/@@{/g,_0x4d3b('0x9'))[_0x4d3b('0x8')](/}@@/g,'}}}')[_0x4d3b('0x8')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0x4d3b('0x5')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()[_0x4d3b('0x5')](_0x4d3b('0xa')),_0xe4511c[_0x4d3b('0xb')][_0x4d3b('0xc')](),_0x338d10,_0xe4511c[_0x4d3b('0x7')]);}module[_0x4d3b('0xd')]=function(_0x3c6824){return new winston[(_0x4d3b('0xe'))]({'transports':[new winston[(_0x4d3b('0xf'))][(_0x4d3b('0x10'))]({'name':util[_0x4d3b('0x5')](_0x4d3b('0x11'),_0x3c6824,'error'),'filename':filename(_0x3c6824,_0x4d3b('0x12')),'level':_0x4d3b('0x12'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x2f5fa0){return formatter(_0x3c6824,_0x2f5fa0);}}),new winston[(_0x4d3b('0xf'))][(_0x4d3b('0x10'))]({'name':util[_0x4d3b('0x5')](_0x4d3b('0x11'),_0x3c6824,_0x4d3b('0x13')),'filename':filename(_0x3c6824,_0x4d3b('0x13')),'level':_0x4d3b('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x531d57){return formatter(_0x3c6824,_0x531d57);}}),new winston[(_0x4d3b('0xf'))]['Console']({'level':process[_0x4d3b('0x14')][_0x4d3b('0x15')]||debugLevel,'json':![],'formatter':function(_0x15cc17){return formatter(_0x3c6824,_0x15cc17);}})]});};
\ No newline at end of file
+var _0xcd65=['debugLevel','moment','util','path','INFO','join','/var','log','xcally','message','replace','{{{','}}}','format','[%s]\x20[%s]\x20%s\x20-\x20%s','level','toUpperCase','exports','Logger','transports','%s-%s','error','info','env'];(function(_0xbc2c78,_0x27181d){var _0x3e528a=function(_0x5e2158){while(--_0x5e2158){_0xbc2c78['push'](_0xbc2c78['shift']());}};_0x3e528a(++_0x27181d);}(_0xcd65,0x139));var _0x5cd6=function(_0x5a18c3,_0x5c6928){_0x5a18c3=_0x5a18c3-0x0;var _0x3e22e7=_0xcd65[_0x5a18c3];return _0x3e22e7;};'use strict';var moment=require(_0x5cd6('0x0'));var winston=require('winston');var util=require(_0x5cd6('0x1'));var path=require(_0x5cd6('0x2'));var debugLevel=_0x5cd6('0x3');function filename(_0x25c039,_0x222732){return path[_0x5cd6('0x4')](_0x5cd6('0x5'),_0x5cd6('0x6'),_0x5cd6('0x7'),util['format']('%s-%s.log',_0x25c039,_0x222732));}function formatter(_0x27740c,_0x4c96bb){_0x4c96bb[_0x5cd6('0x8')]=_0x4c96bb[_0x5cd6('0x8')][_0x5cd6('0x9')](/@@{/g,_0x5cd6('0xa'))[_0x5cd6('0x9')](/}@@/g,_0x5cd6('0xb'))[_0x5cd6('0x9')](/@{/g,'{{')[_0x5cd6('0x9')](/}@/g,'}}');return util[_0x5cd6('0xc')](_0x5cd6('0xd'),moment()[_0x5cd6('0xc')]('YYYY-MM-DD\x20HH:mm:ss'),_0x4c96bb[_0x5cd6('0xe')][_0x5cd6('0xf')](),_0x27740c,_0x4c96bb[_0x5cd6('0x8')]);}module[_0x5cd6('0x10')]=function(_0x579f90){return new winston[(_0x5cd6('0x11'))]({'transports':[new winston[(_0x5cd6('0x12'))]['File']({'name':util['format'](_0x5cd6('0x13'),_0x579f90,'error'),'filename':filename(_0x579f90,_0x5cd6('0x14')),'level':'error','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x54e344){return formatter(_0x579f90,_0x54e344);}}),new winston[(_0x5cd6('0x12'))]['File']({'name':util[_0x5cd6('0xc')](_0x5cd6('0x13'),_0x579f90,_0x5cd6('0x15')),'filename':filename(_0x579f90,_0x5cd6('0x15')),'level':_0x5cd6('0x15'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x12e68a){return formatter(_0x579f90,_0x12e68a);}}),new winston[(_0x5cd6('0x12'))]['Console']({'level':process[_0x5cd6('0x16')][_0x5cd6('0x17')]||debugLevel,'json':![],'formatter':function(_0x36e834){return formatter(_0x579f90,_0x36e834);}})]});};
\ No newline at end of file
index 7bd9b43..fc3cf6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0f7=['path','express','join','../../services/express/index.js','agi','../../services/agi/index.js','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports'];(function(_0xcd6e31,_0x1d781a){var _0x4944a2=function(_0x5a2e22){while(--_0x5a2e22){_0xcd6e31['push'](_0xcd6e31['shift']());}};_0x4944a2(++_0x1d781a);}(_0xf0f7,0xd8));var _0x7f0f=function(_0x178d50,_0x459f67){_0x178d50=_0x178d50-0x0;var _0x221f9c=_0xf0f7[_0x178d50];return _0x221f9c;};'use strict';var path=require(_0x7f0f('0x0'));var os=require('os');var config={'apps':[{'name':_0x7f0f('0x1'),'script':path[_0x7f0f('0x2')](__dirname,_0x7f0f('0x3'))},{'name':'ami','script':path[_0x7f0f('0x2')](__dirname,'../../services/ami/index.js')},{'name':_0x7f0f('0x4'),'script':path[_0x7f0f('0x2')](__dirname,_0x7f0f('0x5'))},{'name':'email','script':path['join'](__dirname,_0x7f0f('0x6'))},{'name':_0x7f0f('0x7'),'script':path[_0x7f0f('0x2')](__dirname,_0x7f0f('0x8'))},{'name':_0x7f0f('0x9'),'script':path[_0x7f0f('0x2')](__dirname,_0x7f0f('0xa'))}]};module[_0x7f0f('0xb')]=config;
\ No newline at end of file
+var _0x4cf4=['../../services/routing/index.js','../../services/xdr/index.js','exports','path','express','../../services/express/index.js','join','../../services/agi/index.js','email','../../services/email/index.js','routing'];(function(_0x35acdf,_0x5dc66b){var _0x3ca48b=function(_0x4f3bc2){while(--_0x4f3bc2){_0x35acdf['push'](_0x35acdf['shift']());}};_0x3ca48b(++_0x5dc66b);}(_0x4cf4,0x71));var _0x44cf=function(_0x1140c2,_0x5b60e9){_0x1140c2=_0x1140c2-0x0;var _0x222db9=_0x4cf4[_0x1140c2];return _0x222db9;};'use strict';var path=require(_0x44cf('0x0'));var os=require('os');var config={'apps':[{'name':_0x44cf('0x1'),'script':path['join'](__dirname,_0x44cf('0x2'))},{'name':'ami','script':path['join'](__dirname,'../../services/ami/index.js')},{'name':'agi','script':path[_0x44cf('0x3')](__dirname,_0x44cf('0x4'))},{'name':_0x44cf('0x5'),'script':path[_0x44cf('0x3')](__dirname,_0x44cf('0x6'))},{'name':_0x44cf('0x7'),'script':path[_0x44cf('0x3')](__dirname,_0x44cf('0x8'))},{'name':'xdr','script':path['join'](__dirname,_0x44cf('0x9'))}]};module[_0x44cf('0xa')]=config;
\ No newline at end of file
index 4df1bb9..96976dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7de=['pm2','./config','connected','start','then','stop','restart','list','disconnect','describe','delete','dump','saved'];(function(_0x4ae309,_0x41b608){var _0x15a908=function(_0x26b8fb){while(--_0x26b8fb){_0x4ae309['push'](_0x4ae309['shift']());}};_0x15a908(++_0x41b608);}(_0xe7de,0x1d4));var _0xee7d=function(_0x539cbb,_0x482835){_0x539cbb=_0x539cbb-0x0;var _0xf15aa2=_0xe7de[_0x539cbb];return _0xf15aa2;};'use strict';var pm2=require(_0xee7d('0x0'));var BPromise=require('bluebird');var config=require(_0xee7d('0x1'));function connect(){return new BPromise(function(_0x3c5b58,_0x71abcd){return pm2['connect'](function(_0x33e310){if(_0x33e310){return _0x71abcd(_0x33e310);}return _0x3c5b58(_0xee7d('0x2'));});});};exports[_0xee7d('0x3')]=function(_0x4bdcfc){return connect()[_0xee7d('0x4')](function(){return new BPromise(function(_0x3424e2,_0x31bb43){return pm2[_0xee7d('0x3')](_0x4bdcfc,function(_0x304677,_0x4c1034){if(_0x304677){return _0x31bb43(_0x304677);}pm2['disconnect']();return _0x3424e2(_0x4c1034);});});});};exports[_0xee7d('0x5')]=function(_0x2b1793){return connect()['then'](function(){return new BPromise(function(_0x1695b6,_0x477cfa){return pm2[_0xee7d('0x5')](_0x2b1793,function(_0x203fa0,_0x53da3f){if(_0x203fa0){return _0x477cfa(_0x203fa0);}pm2['disconnect']();return _0x1695b6(_0x53da3f);});});});};exports['restart']=function(_0x2e97e1){return connect()[_0xee7d('0x4')](function(){return new BPromise(function(_0x216b66,_0x5895e2){return pm2[_0xee7d('0x6')](_0x2e97e1,function(_0x596fa8,_0x26cbca){if(_0x596fa8){return _0x5895e2(_0x596fa8);}pm2['disconnect']();return _0x216b66(_0x26cbca);});});});};exports[_0xee7d('0x7')]=function(){return connect()[_0xee7d('0x4')](function(){return new BPromise(function(_0xeaf12a,_0x2966d0){return pm2[_0xee7d('0x7')](function(_0x21e3ce,_0xab9cf9){if(_0x21e3ce){return _0x2966d0(_0x21e3ce);}pm2[_0xee7d('0x8')]();return _0xeaf12a(_0xab9cf9);});});});};exports[_0xee7d('0x9')]=function(_0x271c08){return connect()[_0xee7d('0x4')](function(){return new BPromise(function(_0x534dc4,_0xbdf6b){return pm2[_0xee7d('0x9')](_0x271c08,function(_0x1286d5,_0x185992){if(_0x1286d5){return _0xbdf6b(_0x1286d5);}pm2[_0xee7d('0x8')]();return _0x534dc4(_0x185992);});});});};exports['delete']=function(_0x1f2055){return connect()[_0xee7d('0x4')](function(){return new BPromise(function(_0x2209ec,_0x1d92b7){return pm2[_0xee7d('0xa')](_0x1f2055,function(_0x261bff,_0xd14d8b){if(_0x261bff){return _0x1d92b7(_0x261bff);}pm2[_0xee7d('0x8')]();return _0x2209ec(_0xd14d8b);});});});};exports[_0xee7d('0xb')]=function(){return connect()[_0xee7d('0x4')](function(){return new BPromise(function(_0x20f051,_0x1bd4f2){return pm2[_0xee7d('0xb')](function(_0x503fbf){if(_0x503fbf){return _0x1bd4f2(_0x503fbf);}return _0x20f051(_0xee7d('0xc'));});});});};
\ No newline at end of file
+var _0x6c8b=['then','disconnect','stop','restart','list','describe','delete','dump','saved','pm2','bluebird','./config','connect'];(function(_0x58721e,_0x159be9){var _0x517060=function(_0x68a41a){while(--_0x68a41a){_0x58721e['push'](_0x58721e['shift']());}};_0x517060(++_0x159be9);}(_0x6c8b,0x98));var _0xb6c8=function(_0x17022a,_0x473250){_0x17022a=_0x17022a-0x0;var _0x2a1cf2=_0x6c8b[_0x17022a];return _0x2a1cf2;};'use strict';var pm2=require(_0xb6c8('0x0'));var BPromise=require(_0xb6c8('0x1'));var config=require(_0xb6c8('0x2'));function connect(){return new BPromise(function(_0x441d35,_0x207277){return pm2[_0xb6c8('0x3')](function(_0x447d52){if(_0x447d52){return _0x207277(_0x447d52);}return _0x441d35('connected');});});};exports['start']=function(_0x90d191){return connect()[_0xb6c8('0x4')](function(){return new BPromise(function(_0x46679b,_0xa62461){return pm2['start'](_0x90d191,function(_0x2ee1de,_0x322bc7){if(_0x2ee1de){return _0xa62461(_0x2ee1de);}pm2[_0xb6c8('0x5')]();return _0x46679b(_0x322bc7);});});});};exports[_0xb6c8('0x6')]=function(_0xc6a6ed){return connect()[_0xb6c8('0x4')](function(){return new BPromise(function(_0x6b5c17,_0x5b7e43){return pm2[_0xb6c8('0x6')](_0xc6a6ed,function(_0x40ecc3,_0x4da13e){if(_0x40ecc3){return _0x5b7e43(_0x40ecc3);}pm2[_0xb6c8('0x5')]();return _0x6b5c17(_0x4da13e);});});});};exports[_0xb6c8('0x7')]=function(_0x426951){return connect()[_0xb6c8('0x4')](function(){return new BPromise(function(_0x47bdf5,_0x289722){return pm2[_0xb6c8('0x7')](_0x426951,function(_0x4739b1,_0x323484){if(_0x4739b1){return _0x289722(_0x4739b1);}pm2[_0xb6c8('0x5')]();return _0x47bdf5(_0x323484);});});});};exports['list']=function(){return connect()[_0xb6c8('0x4')](function(){return new BPromise(function(_0x13f289,_0x321a2d){return pm2[_0xb6c8('0x8')](function(_0x4669bf,_0x1aae43){if(_0x4669bf){return _0x321a2d(_0x4669bf);}pm2[_0xb6c8('0x5')]();return _0x13f289(_0x1aae43);});});});};exports[_0xb6c8('0x9')]=function(_0x22b604){return connect()['then'](function(){return new BPromise(function(_0x5d90ad,_0x468c92){return pm2[_0xb6c8('0x9')](_0x22b604,function(_0x2857bc,_0x49722f){if(_0x2857bc){return _0x468c92(_0x2857bc);}pm2['disconnect']();return _0x5d90ad(_0x49722f);});});});};exports[_0xb6c8('0xa')]=function(_0x15a555){return connect()['then'](function(){return new BPromise(function(_0x51df22,_0x206ea7){return pm2[_0xb6c8('0xa')](_0x15a555,function(_0xbf19db,_0x19e961){if(_0xbf19db){return _0x206ea7(_0xbf19db);}pm2[_0xb6c8('0x5')]();return _0x51df22(_0x19e961);});});});};exports[_0xb6c8('0xb')]=function(){return connect()['then'](function(){return new BPromise(function(_0x266f25,_0x98d638){return pm2[_0xb6c8('0xb')](function(_0x3840db){if(_0x3840db){return _0x98d638(_0x3840db);}return _0x266f25(_0xb6c8('0xc'));});});});};
\ No newline at end of file
index 8a4f034..22fb429 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aa1=['Setting','ChatInteraction','findAll','subtract','minutes','then','length','map','info','join','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','moment','ioredis','util','../logger','schedule','redis','defaults','localhost','socket.io-emitter'];(function(_0x1dd9db,_0x59646b){var _0xc0bb61=function(_0x58fae5){while(--_0x58fae5){_0x1dd9db['push'](_0x1dd9db['shift']());}};_0xc0bb61(++_0x59646b);}(_0x9aa1,0x141));var _0x19aa=function(_0x5dd511,_0x375d07){_0x5dd511=_0x5dd511-0x0;var _0x128597=_0x9aa1[_0x5dd511];return _0x128597;};'use strict';var _=require('lodash');var moment=require(_0x19aa('0x0'));var Redis=require(_0x19aa('0x1'));var util=require(_0x19aa('0x2'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var logger=require(_0x19aa('0x3'))(_0x19aa('0x4'));config[_0x19aa('0x5')]=_[_0x19aa('0x6')](config[_0x19aa('0x5')],{'host':_0x19aa('0x7'),'port':0x18eb});var io=require(_0x19aa('0x8'))(new Redis(config[_0x19aa('0x5')]));function closeInteractions(){var _0x174581=0x0;var _0xc2e7ff=[];return db[_0x19aa('0x9')]['find']({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})['then'](function(_0x1ba6d8){_0x174581=_0x1ba6d8['chatTimeout'];if(_0x174581){return db[_0x19aa('0xa')][_0x19aa('0xb')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x19aa('0xc')](_0x1ba6d8['chatTimeout'],_0x19aa('0xd'))}}});}else{return[];}})[_0x19aa('0xe')](function(_0xf6c3f2){if(_0xf6c3f2&&_0xf6c3f2[_0x19aa('0xf')]){_0xc2e7ff=_[_0x19aa('0x10')](_0xf6c3f2||[],'id');logger[_0x19aa('0x11')]('[CHAT]\x20Interactions\x20to\x20close:',_0xc2e7ff[_0x19aa('0x12')]());return db[_0x19aa('0xa')][_0x19aa('0x13')]({'closeReason':'system','disposition':_0x19aa('0x14'),'closed':!![],'closedAt':moment()[_0x19aa('0x15')](_0x19aa('0x16'))},{'where':{'id':_0xc2e7ff}});}})[_0x19aa('0xe')](function(){if(_0xc2e7ff&&_0xc2e7ff[_0x19aa('0xf')]){logger[_0x19aa('0x11')](_0x19aa('0x17'),_0xc2e7ff['join']());for(var _0x4fb491=0x0;_0x4fb491<_0xc2e7ff[_0x19aa('0xf')];_0x4fb491++){io[_0x19aa('0x18')](_0x19aa('0x19'),{'id':_0xc2e7ff[_0x4fb491],'closed':!![]});}}})['catch'](function(_0x2626f8){logger[_0x19aa('0x1a')](_0x19aa('0x1b'),_0x2626f8?util[_0x19aa('0x1c')](_0x2626f8,{'showHidden':![],'depth':null}):'');});}exports[_0x19aa('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x6f97=['format','YYYY-MM-DD\x20HH:mm:ss','then','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash','util','redis','defaults','localhost','Setting','find','chatTimeout','ChatInteraction','findAll','subtract','minutes','length','info','[CHAT]\x20Interactions\x20to\x20close:','join','system'];(function(_0x5cad8e,_0x1759cc){var _0x11eec1=function(_0xcb1fd6){while(--_0xcb1fd6){_0x5cad8e['push'](_0x5cad8e['shift']());}};_0x11eec1(++_0x1759cc);}(_0x6f97,0x19f));var _0x76f9=function(_0x25a787,_0x6926e7){_0x25a787=_0x25a787-0x0;var _0x37712a=_0x6f97[_0x25a787];return _0x37712a;};'use strict';var _=require(_0x76f9('0x0'));var moment=require('moment');var Redis=require('ioredis');var util=require(_0x76f9('0x1'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var logger=require('../logger')('schedule');config[_0x76f9('0x2')]=_[_0x76f9('0x3')](config[_0x76f9('0x2')],{'host':_0x76f9('0x4'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x2ce142=0x0;var _0x402eca=[];return db[_0x76f9('0x5')][_0x76f9('0x6')]({'raw':!![],'attributes':['id',_0x76f9('0x7')],'where':{'id':0x1}})['then'](function(_0x3f063a){_0x2ce142=_0x3f063a[_0x76f9('0x7')];if(_0x2ce142){return db[_0x76f9('0x8')][_0x76f9('0x9')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x76f9('0xa')](_0x3f063a[_0x76f9('0x7')],_0x76f9('0xb'))}}});}else{return[];}})['then'](function(_0x2e66af){if(_0x2e66af&&_0x2e66af[_0x76f9('0xc')]){_0x402eca=_['map'](_0x2e66af||[],'id');logger[_0x76f9('0xd')](_0x76f9('0xe'),_0x402eca[_0x76f9('0xf')]());return db[_0x76f9('0x8')]['update']({'closeReason':_0x76f9('0x10'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0x76f9('0x11')](_0x76f9('0x12'))},{'where':{'id':_0x402eca}});}})[_0x76f9('0x13')](function(){if(_0x402eca&&_0x402eca[_0x76f9('0xc')]){logger[_0x76f9('0xd')](_0x76f9('0x14'),_0x402eca[_0x76f9('0xf')]());for(var _0x10ce1e=0x0;_0x10ce1e<_0x402eca['length'];_0x10ce1e++){io['emit'](_0x76f9('0x15'),{'id':_0x402eca[_0x10ce1e],'closed':!![]});}}})[_0x76f9('0x16')](function(_0x5002b9){logger[_0x76f9('0x17')](_0x76f9('0x18'),_0x5002b9?util[_0x76f9('0x19')](_0x5002b9,{'showHidden':![],'depth':null}):'');});}exports[_0x76f9('0x1a')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index c894f01..16bb619 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3e2=['../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','Smtp','service','host','port','secure','MailAccount','authentication','auth','pass','\x22%s\x22\x20<%s>','name','email','bcc','format','subtractUnit','join','../../files/reports','savename','%s.%s','basename','status','Sent','attachments','message','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','existsSync','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','stringify','subtractNumber','isNil','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','catch','CustomReportId','exec\x20custom\x20report\x20id:%s','runReport','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','toString','keyBy','difference','intersection','length','stop','deleteJob','toRun','index','my\x20id','resolve','cron','isBetween','startAt','endAt','add','start','add\x20cron','exists','stop\x20cron','update','update\x20cron','run','util','path','moment','cron-job-manager','jayson/promise','bluebird'];(function(_0x1bb146,_0x45f4c1){var _0x1f5d84=function(_0x1232ea){while(--_0x1232ea){_0x1bb146['push'](_0x1bb146['shift']());}};_0x1f5d84(++_0x45f4c1);}(_0xd3e2,0xb0));var _0x2d3e=function(_0x58af1b,_0x2ea123){_0x58af1b=_0x58af1b-0x0;var _0x383999=_0xd3e2[_0x58af1b];return _0x383999;};'use strict';var fs=require('fs');var util=require(_0x2d3e('0x0'));var path=require(_0x2d3e('0x1'));var _=require('lodash');var moment=require(_0x2d3e('0x2'));var CronJobManager=require(_0x2d3e('0x3'));var jayson=require(_0x2d3e('0x4'));var BPromise=require(_0x2d3e('0x5'));var logger=require(_0x2d3e('0x6'))(_0x2d3e('0x7'));var db=require(_0x2d3e('0x8'))['db'];var analyticCustomReportController=require(_0x2d3e('0x9'));var analyticDefaultReportController=require(_0x2d3e('0xa'));var client=jayson['client'][_0x2d3e('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x20ed1a,_0x45b453){return function(){logger[_0x2d3e('0xc')](_0x2d3e('0xd'),_0x20ed1a['email']);var _0x387bae=!![];var _0x152678={'tls':{'rejectUnauthorized':![]}};if(_0x20ed1a['MailAccount'][_0x2d3e('0xe')][_0x2d3e('0xf')]){_0x152678['service']=_0x20ed1a['MailAccount'][_0x2d3e('0xe')][_0x2d3e('0xf')];}else{_0x152678['host']=_0x20ed1a['MailAccount']['Smtp'][_0x2d3e('0x10')];_0x152678[_0x2d3e('0x11')]=_0x20ed1a['MailAccount']['Smtp'][_0x2d3e('0x11')];_0x152678[_0x2d3e('0x12')]=_0x20ed1a[_0x2d3e('0x13')][_0x2d3e('0xe')][_0x2d3e('0x12')];}if(_0x20ed1a[_0x2d3e('0x13')][_0x2d3e('0xe')][_0x2d3e('0x14')]){_0x152678[_0x2d3e('0x15')]={'user':_0x20ed1a[_0x2d3e('0x13')][_0x2d3e('0xe')]['user'],'pass':_0x20ed1a[_0x2d3e('0x13')][_0x2d3e('0xe')][_0x2d3e('0x16')]};}var _0x3a93e5={'account':_0x152678,'message':{'from':util['format'](_0x2d3e('0x17'),_0x20ed1a['MailAccount'][_0x2d3e('0x18')],_0x20ed1a['MailAccount'][_0x2d3e('0x19')]||_0x20ed1a[_0x2d3e('0x13')]['Smtp']['user']),'to':_0x20ed1a[_0x2d3e('0x19')],'cc':_0x20ed1a['cc'],'bcc':_0x20ed1a[_0x2d3e('0x1a')],'subject':util[_0x2d3e('0x1b')]('Report\x20%s\x20last\x20%s\x20%s',_0x45b453[_0x2d3e('0x18')],_0x20ed1a['subtractNumber'],_0x20ed1a[_0x2d3e('0x1c')])}};var _0x12b5ad=path[_0x2d3e('0x1d')](__dirname,_0x2d3e('0x1e'));var _0x1d28eb=_0x45b453[_0x2d3e('0x1f')];var _0x11bc4c=util[_0x2d3e('0x1b')](_0x2d3e('0x20'),path[_0x2d3e('0x21')](_0x45b453[_0x2d3e('0x1f')],path['extname'](_0x45b453[_0x2d3e('0x1f')])),'zip');var _0x19f424=path['join'](_0x12b5ad,_0x1d28eb);var _0x46b191=path[_0x2d3e('0x1d')](_0x12b5ad,_0x11bc4c);if(fs['existsSync'](_0x19f424)){_0x45b453[_0x2d3e('0x22')]=_0x2d3e('0x23');_0x3a93e5['message'][_0x2d3e('0x24')]=[{'filename':_0x1d28eb,'path':_0x19f424}];_0x3a93e5[_0x2d3e('0x25')][_0x2d3e('0x26')]=util['format'](_0x2d3e('0x27'),JSON['stringify'](_0x45b453,null,0x2));}else if(fs[_0x2d3e('0x28')](_0x46b191)){_0x45b453[_0x2d3e('0x22')]=_0x2d3e('0x23');_0x3a93e5['message'][_0x2d3e('0x24')]=[{'filename':_0x11bc4c,'path':_0x46b191}];}else{_0x3a93e5[_0x2d3e('0x25')][_0x2d3e('0x26')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x20ed1a[_0x2d3e('0x29')]){_0x387bae=![];logger[_0x2d3e('0xc')](_0x2d3e('0x2a'));}}if(_0x387bae){return client[_0x2d3e('0x2b')](_0x2d3e('0x2c'),_0x3a93e5)[_0x2d3e('0x2d')](function(_0x515c55){if(_0x515c55[_0x2d3e('0x2e')]){return logger[_0x2d3e('0x2e')](_0x2d3e('0x2f'),JSON['stringify'](_0x515c55));}return logger[_0x2d3e('0xc')](_0x2d3e('0x30'));})['catch'](function(_0x12c45b){return logger[_0x2d3e('0x2e')](_0x2d3e('0x2f'),JSON[_0x2d3e('0x31')](_0x12c45b));});}};}function handleError(){return function(_0x1ba3b0){return logger[_0x2d3e('0x2e')](JSON[_0x2d3e('0x31')](_0x1ba3b0));};}function handleResult(_0x1b2010){return function(_0x1a498d){logger[_0x2d3e('0xc')]('data',JSON['stringify'](_0x1a498d));if(_0x1b2010[_0x2d3e('0x13')]&&_0x1b2010[_0x2d3e('0x13')]['Smtp']&&!_['isNil'](_0x1b2010[_0x2d3e('0x19')])){setTimeout(handleSendEmail(_0x1b2010,_0x1a498d),0x3c*0x3e8);}};}function handleJob(_0xcac9){return function(){try{if(_['isNil'](_0xcac9[_0x2d3e('0x32')])){return logger[_0x2d3e('0xc')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x2d3e('0x33')](_0xcac9[_0x2d3e('0x1c')])){return logger[_0x2d3e('0xc')]('subtractUnit\x20null\x20or\x20undefined');}var _0x35e51d={'startDate':moment()[_0x2d3e('0x34')](_0xcac9[_0x2d3e('0x32')],_0xcac9[_0x2d3e('0x1c')])[_0x2d3e('0x1b')](_0x2d3e('0x35')),'endDate':moment()[_0x2d3e('0x1b')](_0x2d3e('0x35')),'type':'scheduled','output':_0xcac9[_0x2d3e('0x36')],'name':_0xcac9[_0x2d3e('0x18')]};if(!_[_0x2d3e('0x33')](_0xcac9[_0x2d3e('0x37')])){logger[_0x2d3e('0xc')](_0x2d3e('0x38'),_0xcac9['DefaultReportId']);return analyticDefaultReportController['runReport']({'id':_0xcac9[_0x2d3e('0x37')]},_0x35e51d)[_0x2d3e('0x2d')](handleResult(_0xcac9))[_0x2d3e('0x39')](handleError());}if(!_[_0x2d3e('0x33')](_0xcac9[_0x2d3e('0x3a')])){logger['info'](_0x2d3e('0x3b'),_0xcac9['CustomReportId']);return analyticCustomReportController[_0x2d3e('0x3c')]({'id':_0xcac9[_0x2d3e('0x3a')]},_0x35e51d)[_0x2d3e('0x2d')](handleResult(_0xcac9))[_0x2d3e('0x39')](handleError());}}catch(_0x17dfcb){logger[_0x2d3e('0x2e')](JSON[_0x2d3e('0x31')](_0x17dfcb));}return logger[_0x2d3e('0xc')](_0x2d3e('0x3d'));};}function getJobs(_0x1197e1){var _0x385a85={};if(_0x1197e1){_0x385a85['id']=_0x1197e1;}return db[_0x2d3e('0x3e')][_0x2d3e('0x3f')]({'where':_0x385a85,'include':[{'model':db[_0x2d3e('0x13')],'attributes':['id','name',_0x2d3e('0x19')],'include':[{'model':db[_0x2d3e('0x40')],'as':_0x2d3e('0xe')}]}]})[_0x2d3e('0x2d')](function(_0xaa4413){var _0x4190b0=_[_0x2d3e('0x41')](manager[_0x2d3e('0x42')]);var _0x546f33=_[_0x2d3e('0x43')](_0xaa4413,function(_0x6dcad7){return _0x6dcad7['id'][_0x2d3e('0x44')]();});var _0x189ad3=_[_0x2d3e('0x45')](_0xaa4413,function(_0x457db3){return _0x457db3['id'][_0x2d3e('0x44')]();});var _0x534429=_0x1197e1?_0x546f33:_[_0x2d3e('0x46')](_0x546f33,_0x4190b0);var _0x396c7e=_[_0x2d3e('0x47')](_0x546f33,_0x4190b0);var _0x569bcc=_[_0x2d3e('0x46')](_0x4190b0,_0x546f33);var _0xffd17b;var _0x43634a;for(_0xffd17b=0x0;_0xffd17b<_0x569bcc[_0x2d3e('0x48')]&&!_0x1197e1;_0xffd17b+=0x1){_0x43634a=_0x569bcc[_0xffd17b]['toString']();if(manager['exists'](_0x43634a)){manager[_0x2d3e('0x49')](_0x43634a);manager[_0x2d3e('0x4a')](_0x43634a);logger[_0x2d3e('0xc')]('delete\x20cron',_0x43634a);}}logger['info'](_0x2d3e('0x4b'),JSON[_0x2d3e('0x31')](_0x534429));for(_0xffd17b=0x0;_0xffd17b<_0x534429[_0x2d3e('0x48')];_0xffd17b+=0x1){_0x43634a=_0x534429[_0xffd17b]['toString']();logger[_0x2d3e('0xc')](_0x2d3e('0x4c'),_0x43634a);if(_0x1197e1){logger['info'](_0x2d3e('0x4d'),_0x1197e1);logger[_0x2d3e('0xc')](JSON[_0x2d3e('0x31')](_0x189ad3[_0x43634a]));BPromise[_0x2d3e('0x4e')]()[_0x2d3e('0x2d')](handleJob(_0x189ad3[_0x43634a]));logger['info']('run\x20job',_0x189ad3[_0x43634a][_0x2d3e('0x18')],_0x189ad3[_0x43634a][_0x2d3e('0x4f')]);}else if(_0x189ad3[_0x43634a][_0x2d3e('0x4f')]&&_0x189ad3[_0x43634a]['active']&&moment()[_0x2d3e('0x50')](_0x189ad3[_0x43634a][_0x2d3e('0x51')],_0x189ad3[_0x43634a][_0x2d3e('0x52')])){manager[_0x2d3e('0x53')](_0x43634a,_0x189ad3[_0x43634a][_0x2d3e('0x4f')],handleJob(_0x189ad3[_0x43634a]));manager[_0x2d3e('0x54')](_0x43634a);logger[_0x2d3e('0xc')](_0x2d3e('0x55'),_0x189ad3[_0x43634a][_0x2d3e('0x18')],_0x189ad3[_0x43634a][_0x2d3e('0x4f')]);}else if(manager[_0x2d3e('0x56')](_0x43634a)){manager[_0x2d3e('0x49')](_0x43634a);manager[_0x2d3e('0x4a')](_0x43634a);logger[_0x2d3e('0xc')](_0x2d3e('0x57'),_0x189ad3[_0x43634a][_0x2d3e('0x18')],_0x189ad3[_0x43634a][_0x2d3e('0x4f')]);}}for(_0xffd17b=0x0,_0x43634a;_0xffd17b<_0x396c7e[_0x2d3e('0x48')]&&!_0x1197e1;_0xffd17b+=0x1){_0x43634a=_0x396c7e[_0xffd17b][_0x2d3e('0x44')]();if(manager[_0x2d3e('0x56')](_0x43634a)){if(_0x189ad3[_0x43634a]['cron']&&_0x189ad3[_0x43634a]['active']&&moment()[_0x2d3e('0x50')](_0x189ad3[_0x43634a][_0x2d3e('0x51')],_0x189ad3[_0x43634a][_0x2d3e('0x52')])){manager[_0x2d3e('0x58')](_0x43634a,_0x189ad3[_0x43634a]['cron'],handleJob(_0x189ad3[_0x43634a]));logger['info'](_0x2d3e('0x59'),_0x189ad3[_0x43634a][_0x2d3e('0x18')],_0x189ad3[_0x43634a][_0x2d3e('0x4f')]);}else{manager['stop'](_0x43634a);manager[_0x2d3e('0x4a')](_0x43634a);logger[_0x2d3e('0xc')](_0x2d3e('0x57'),_0x189ad3[_0x43634a][_0x2d3e('0x18')],_0x189ad3[_0x43634a][_0x2d3e('0x4f')]);}}}})['catch'](function(_0x5b9e36){logger[_0x2d3e('0x2e')](JSON[_0x2d3e('0x31')](_0x5b9e36));});}exports[_0x2d3e('0x5a')]=function(_0x3d046e){return getJobs(_0x3d046e);};exports[_0x2d3e('0x54')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x8ee3=['Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','authentication','auth','user','format','name','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','zip','existsSync','status','message','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','Sent','attachments','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','stringify','email\x20sent','isNil','subtractNumber','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','catch','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','toString','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','index','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','add','start','add\x20cron','stop\x20cron','update','update\x20cron','run','util','path','lodash','cron-job-manager','jayson/promise','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http'];(function(_0x1c25d8,_0x16d972){var _0x537518=function(_0x52982f){while(--_0x52982f){_0x1c25d8['push'](_0x1c25d8['shift']());}};_0x537518(++_0x16d972);}(_0x8ee3,0x1bb));var _0x38ee=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8ee3[_0x3dd15e];return _0x231fd0;};'use strict';var fs=require('fs');var util=require(_0x38ee('0x0'));var path=require(_0x38ee('0x1'));var _=require(_0x38ee('0x2'));var moment=require('moment');var CronJobManager=require(_0x38ee('0x3'));var jayson=require(_0x38ee('0x4'));var BPromise=require(_0x38ee('0x5'));var logger=require(_0x38ee('0x6'))('schedule');var db=require(_0x38ee('0x7'))['db'];var analyticCustomReportController=require(_0x38ee('0x8'));var analyticDefaultReportController=require(_0x38ee('0x9'));var client=jayson[_0x38ee('0xa')][_0x38ee('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x42ff96,_0x5a64ef){return function(){logger['info'](_0x38ee('0xc'),_0x42ff96[_0x38ee('0xd')]);var _0xff676c=!![];var _0x1ecc94={'tls':{'rejectUnauthorized':![]}};if(_0x42ff96[_0x38ee('0xe')][_0x38ee('0xf')][_0x38ee('0x10')]){_0x1ecc94[_0x38ee('0x10')]=_0x42ff96[_0x38ee('0xe')][_0x38ee('0xf')]['service'];}else{_0x1ecc94[_0x38ee('0x11')]=_0x42ff96[_0x38ee('0xe')]['Smtp'][_0x38ee('0x11')];_0x1ecc94[_0x38ee('0x12')]=_0x42ff96[_0x38ee('0xe')][_0x38ee('0xf')]['port'];_0x1ecc94['secure']=_0x42ff96[_0x38ee('0xe')][_0x38ee('0xf')]['secure'];}if(_0x42ff96[_0x38ee('0xe')][_0x38ee('0xf')][_0x38ee('0x13')]){_0x1ecc94[_0x38ee('0x14')]={'user':_0x42ff96[_0x38ee('0xe')][_0x38ee('0xf')][_0x38ee('0x15')],'pass':_0x42ff96['MailAccount'][_0x38ee('0xf')]['pass']};}var _0x83c778={'account':_0x1ecc94,'message':{'from':util[_0x38ee('0x16')]('\x22%s\x22\x20<%s>',_0x42ff96[_0x38ee('0xe')]['name'],_0x42ff96[_0x38ee('0xe')][_0x38ee('0xd')]||_0x42ff96[_0x38ee('0xe')][_0x38ee('0xf')][_0x38ee('0x15')]),'to':_0x42ff96['email'],'cc':_0x42ff96['cc'],'bcc':_0x42ff96['bcc'],'subject':util[_0x38ee('0x16')]('Report\x20%s\x20last\x20%s\x20%s',_0x5a64ef[_0x38ee('0x17')],_0x42ff96['subtractNumber'],_0x42ff96[_0x38ee('0x18')])}};var _0x244607=path[_0x38ee('0x19')](__dirname,_0x38ee('0x1a'));var _0x6e337c=_0x5a64ef[_0x38ee('0x1b')];var _0x4560de=util[_0x38ee('0x16')](_0x38ee('0x1c'),path[_0x38ee('0x1d')](_0x5a64ef['savename'],path[_0x38ee('0x1e')](_0x5a64ef[_0x38ee('0x1b')])),_0x38ee('0x1f'));var _0x4bbf3f=path[_0x38ee('0x19')](_0x244607,_0x6e337c);var _0x38c271=path['join'](_0x244607,_0x4560de);if(fs[_0x38ee('0x20')](_0x4bbf3f)){_0x5a64ef[_0x38ee('0x21')]='Sent';_0x83c778[_0x38ee('0x22')]['attachments']=[{'filename':_0x6e337c,'path':_0x4bbf3f}];_0x83c778[_0x38ee('0x22')][_0x38ee('0x23')]=util[_0x38ee('0x16')](_0x38ee('0x24'),JSON['stringify'](_0x5a64ef,null,0x2));}else if(fs[_0x38ee('0x20')](_0x38c271)){_0x5a64ef[_0x38ee('0x21')]=_0x38ee('0x25');_0x83c778[_0x38ee('0x22')][_0x38ee('0x26')]=[{'filename':_0x4560de,'path':_0x38c271}];}else{_0x83c778[_0x38ee('0x22')][_0x38ee('0x23')]=_0x38ee('0x27');if(!_0x42ff96['sendIfEmpty']){_0xff676c=![];logger[_0x38ee('0x28')](_0x38ee('0x29'));}}if(_0xff676c){return client[_0x38ee('0x2a')](_0x38ee('0x2b'),_0x83c778)[_0x38ee('0x2c')](function(_0x167459){if(_0x167459[_0x38ee('0x2d')]){return logger[_0x38ee('0x2d')](_0x38ee('0x2e'),JSON[_0x38ee('0x2f')](_0x167459));}return logger[_0x38ee('0x28')](_0x38ee('0x30'));})['catch'](function(_0x563c9e){return logger[_0x38ee('0x2d')](_0x38ee('0x2e'),JSON[_0x38ee('0x2f')](_0x563c9e));});}};}function handleError(){return function(_0x1b0111){return logger[_0x38ee('0x2d')](JSON[_0x38ee('0x2f')](_0x1b0111));};}function handleResult(_0x27b785){return function(_0x540b27){logger[_0x38ee('0x28')]('data',JSON[_0x38ee('0x2f')](_0x540b27));if(_0x27b785[_0x38ee('0xe')]&&_0x27b785['MailAccount'][_0x38ee('0xf')]&&!_[_0x38ee('0x31')](_0x27b785[_0x38ee('0xd')])){setTimeout(handleSendEmail(_0x27b785,_0x540b27),0x3c*0x3e8);}};}function handleJob(_0x4e9837){return function(){try{if(_['isNil'](_0x4e9837[_0x38ee('0x32')])){return logger[_0x38ee('0x28')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x38ee('0x31')](_0x4e9837['subtractUnit'])){return logger[_0x38ee('0x28')](_0x38ee('0x33'));}var _0xdda74={'startDate':moment()[_0x38ee('0x34')](_0x4e9837['subtractNumber'],_0x4e9837[_0x38ee('0x18')])[_0x38ee('0x16')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0x38ee('0x16')](_0x38ee('0x35')),'type':_0x38ee('0x36'),'output':_0x4e9837['output'],'name':_0x4e9837[_0x38ee('0x17')]};if(!_[_0x38ee('0x31')](_0x4e9837['DefaultReportId'])){logger[_0x38ee('0x28')](_0x38ee('0x37'),_0x4e9837[_0x38ee('0x38')]);return analyticDefaultReportController[_0x38ee('0x39')]({'id':_0x4e9837[_0x38ee('0x38')]},_0xdda74)['then'](handleResult(_0x4e9837))[_0x38ee('0x3a')](handleError());}if(!_[_0x38ee('0x31')](_0x4e9837['CustomReportId'])){logger[_0x38ee('0x28')](_0x38ee('0x3b'),_0x4e9837[_0x38ee('0x3c')]);return analyticCustomReportController[_0x38ee('0x39')]({'id':_0x4e9837[_0x38ee('0x3c')]},_0xdda74)[_0x38ee('0x2c')](handleResult(_0x4e9837))[_0x38ee('0x3a')](handleError());}}catch(_0x398f7c){logger[_0x38ee('0x2d')](JSON[_0x38ee('0x2f')](_0x398f7c));}return logger[_0x38ee('0x28')](_0x38ee('0x3d'));};}function getJobs(_0x24dc96){var _0x2bc51d={};if(_0x24dc96){_0x2bc51d['id']=_0x24dc96;}return db[_0x38ee('0x3e')][_0x38ee('0x3f')]({'where':_0x2bc51d,'include':[{'model':db[_0x38ee('0xe')],'attributes':['id','name',_0x38ee('0xd')],'include':[{'model':db[_0x38ee('0x40')],'as':'Smtp'}]}]})[_0x38ee('0x2c')](function(_0x1f6314){var _0x71039d=_[_0x38ee('0x41')](manager[_0x38ee('0x42')]);var _0x436062=_['map'](_0x1f6314,function(_0xcdf956){return _0xcdf956['id'][_0x38ee('0x43')]();});var _0x3d4f7c=_[_0x38ee('0x44')](_0x1f6314,function(_0x30a8c7){return _0x30a8c7['id'][_0x38ee('0x43')]();});var _0x2b3cf6=_0x24dc96?_0x436062:_[_0x38ee('0x45')](_0x436062,_0x71039d);var _0x5bb28d=_[_0x38ee('0x46')](_0x436062,_0x71039d);var _0x23242a=_[_0x38ee('0x45')](_0x71039d,_0x436062);var _0x41118d;var _0x36017d;for(_0x41118d=0x0;_0x41118d<_0x23242a[_0x38ee('0x47')]&&!_0x24dc96;_0x41118d+=0x1){_0x36017d=_0x23242a[_0x41118d]['toString']();if(manager[_0x38ee('0x48')](_0x36017d)){manager[_0x38ee('0x49')](_0x36017d);manager[_0x38ee('0x4a')](_0x36017d);logger[_0x38ee('0x28')](_0x38ee('0x4b'),_0x36017d);}}logger[_0x38ee('0x28')]('toRun',JSON['stringify'](_0x2b3cf6));for(_0x41118d=0x0;_0x41118d<_0x2b3cf6['length'];_0x41118d+=0x1){_0x36017d=_0x2b3cf6[_0x41118d][_0x38ee('0x43')]();logger[_0x38ee('0x28')](_0x38ee('0x4c'),_0x36017d);if(_0x24dc96){logger['info'](_0x38ee('0x4d'),_0x24dc96);logger[_0x38ee('0x28')](JSON['stringify'](_0x3d4f7c[_0x36017d]));BPromise[_0x38ee('0x4e')]()[_0x38ee('0x2c')](handleJob(_0x3d4f7c[_0x36017d]));logger[_0x38ee('0x28')](_0x38ee('0x4f'),_0x3d4f7c[_0x36017d][_0x38ee('0x17')],_0x3d4f7c[_0x36017d][_0x38ee('0x50')]);}else if(_0x3d4f7c[_0x36017d]['cron']&&_0x3d4f7c[_0x36017d][_0x38ee('0x51')]&&moment()[_0x38ee('0x52')](_0x3d4f7c[_0x36017d]['startAt'],_0x3d4f7c[_0x36017d][_0x38ee('0x53')])){manager[_0x38ee('0x54')](_0x36017d,_0x3d4f7c[_0x36017d][_0x38ee('0x50')],handleJob(_0x3d4f7c[_0x36017d]));manager[_0x38ee('0x55')](_0x36017d);logger[_0x38ee('0x28')](_0x38ee('0x56'),_0x3d4f7c[_0x36017d][_0x38ee('0x17')],_0x3d4f7c[_0x36017d]['cron']);}else if(manager[_0x38ee('0x48')](_0x36017d)){manager[_0x38ee('0x49')](_0x36017d);manager[_0x38ee('0x4a')](_0x36017d);logger['info'](_0x38ee('0x57'),_0x3d4f7c[_0x36017d][_0x38ee('0x17')],_0x3d4f7c[_0x36017d][_0x38ee('0x50')]);}}for(_0x41118d=0x0,_0x36017d;_0x41118d<_0x5bb28d[_0x38ee('0x47')]&&!_0x24dc96;_0x41118d+=0x1){_0x36017d=_0x5bb28d[_0x41118d]['toString']();if(manager[_0x38ee('0x48')](_0x36017d)){if(_0x3d4f7c[_0x36017d]['cron']&&_0x3d4f7c[_0x36017d][_0x38ee('0x51')]&&moment()[_0x38ee('0x52')](_0x3d4f7c[_0x36017d]['startAt'],_0x3d4f7c[_0x36017d][_0x38ee('0x53')])){manager[_0x38ee('0x58')](_0x36017d,_0x3d4f7c[_0x36017d][_0x38ee('0x50')],handleJob(_0x3d4f7c[_0x36017d]));logger['info'](_0x38ee('0x59'),_0x3d4f7c[_0x36017d]['name'],_0x3d4f7c[_0x36017d][_0x38ee('0x50')]);}else{manager['stop'](_0x36017d);manager[_0x38ee('0x4a')](_0x36017d);logger['info']('stop\x20cron',_0x3d4f7c[_0x36017d][_0x38ee('0x17')],_0x3d4f7c[_0x36017d]['cron']);}}}})[_0x38ee('0x3a')](function(_0x3658fc){logger[_0x38ee('0x2d')](JSON['stringify'](_0x3658fc));});}exports[_0x38ee('0x5a')]=function(_0x12509b){return getJobs(_0x12509b);};exports[_0x38ee('0x55')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 520303d..4a740f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0647=['error','lodash','request-promise','util','bluebird','../../mysqldb','../../config/logger','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeRegion','transcribeName','then','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','transcript','update','ValidationError','sentiment','sentimentAccountId','language','bucket','Sequelize','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Mixed','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','Sentiment\x20Analysis\x20not\x20requested','data2','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','Setting','Settings\x20not\x20available','transcribe','Transcribe\x20not\x20configured','transcribeAccountId','push'];(function(_0x1a5b8f,_0x4efdc4){var _0x261922=function(_0x1de731){while(--_0x1de731){_0x1a5b8f['push'](_0x1a5b8f['shift']());}};_0x261922(++_0x4efdc4);}(_0x0647,0xd0));var _0x7064=function(_0x1ae5ab,_0xc5d441){_0x1ae5ab=_0x1ae5ab-0x0;var _0x1ce001=_0x0647[_0x1ae5ab];return _0x1ce001;};var _=require(_0x7064('0x0'));var AWS=require('aws-sdk');var rp=require(_0x7064('0x1'));var util=require(_0x7064('0x2'));var BPromise=require(_0x7064('0x3'));var db=require(_0x7064('0x4'))['db'];var logger=require(_0x7064('0x5'))('transcribe');function getTranscriptionJob(_0x58b306,_0x313dce,_0x34b4d5,_0x31f6a6){return new Promise(function(_0x44b1bb,_0x2b6f9b){var _0x1101e4=new AWS['TranscribeService']({'accessKeyId':_0x313dce,'secretAccessKey':_0x58b306,'region':_0x34b4d5});_0x1101e4['getTranscriptionJob']({'TranscriptionJobName':_0x31f6a6},function(_0x1c85b1,_0x39b7e3){if(_0x1c85b1){return _0x2b6f9b(_0x1c85b1);}else{return _0x44b1bb(_0x39b7e3);}});});}function sentiment(_0x79229e,_0x5c6f0d,_0x38c195,_0x3f3bdd,_0x5f4ba5){return new Promise(function(_0xd2aec9,_0x1465bd){var _0x3fc84f=new AWS['Comprehend']({'accessKeyId':_0x5c6f0d,'secretAccessKey':_0x79229e,'region':_0x38c195});_0x3fc84f[_0x7064('0x6')]({'Text':_0x3f3bdd,'LanguageCode':_0x5f4ba5[_0x7064('0x7')](0x0,0x2)},function(_0x7b702a,_0x6acdd9){if(_0x7b702a){return _0x1465bd(_0x7b702a);}else{return _0xd2aec9(_0x6acdd9);}});});}function checkTranscribeJob(_0x549684,_0x303dcd,_0x4151b6){var _0x268a94;return new BPromise(function(_0x44dcbe,_0x16c9c3){logger[_0x7064('0x8')](util[_0x7064('0x9')](_0x7064('0xa'),_0x549684['id'],_0x549684['transcribeName']));return getTranscriptionJob(_0x4151b6['data1'],_0x4151b6['data2'],_0x303dcd[_0x7064('0xb')],_0x549684[_0x7064('0xc')])[_0x7064('0xd')](function(_0x4b39db){logger[_0x7064('0x8')](util[_0x7064('0x9')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x549684['id'],_0x549684[_0x7064('0xc')],_0x4b39db[_0x7064('0xe')][_0x7064('0xf')]));if(!_0x549684[_0x7064('0x10')]){switch(_0x4b39db[_0x7064('0xe')][_0x7064('0xf')]){case _0x7064('0x11'):var _0x3e8d73={'transcribeStatus':_0x4b39db[_0x7064('0xe')][_0x7064('0xf')],'fileUri':_0x4b39db[_0x7064('0xe')][_0x7064('0x12')][_0x7064('0x13')]};logger['info'](util[_0x7064('0x9')](_0x7064('0x14'),_0x549684['id']));return rp({'uri':_0x4b39db[_0x7064('0xe')][_0x7064('0x12')]['TranscriptFileUri'],'json':!![]})[_0x7064('0xd')](function(_0x51ae69){logger[_0x7064('0x8')](util[_0x7064('0x9')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x549684['id']));if(_0x51ae69&&_0x51ae69[_0x7064('0x15')]&&_0x51ae69[_0x7064('0x15')][_0x7064('0x16')]&&_0x51ae69[_0x7064('0x15')][_0x7064('0x16')]['length']){_0x3e8d73['fileText']='';for(var _0x33f470=0x0;_0x33f470<_0x51ae69['results'][_0x7064('0x16')][_0x7064('0x17')];_0x33f470++){_0x3e8d73[_0x7064('0x10')]+=_0x51ae69['results'][_0x7064('0x16')][_0x33f470][_0x7064('0x18')]+'';}}return _0x549684[_0x7064('0x19')](_0x3e8d73);})[_0x7064('0xd')](function(){logger[_0x7064('0x8')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x549684['id']));if(!_0x549684['tempSentiment']){throw new db['Sequelize'][(_0x7064('0x1a'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x303dcd[_0x7064('0x1b')]||!_0x303dcd[_0x7064('0x1c')]||!_0x303dcd['sentimentRegion']||!_0x303dcd[_0x7064('0x1d')]||!_0x303dcd[_0x7064('0x1e')]){throw new db[(_0x7064('0x1f'))][(_0x7064('0x1a'))](_0x7064('0x20'));}if(!_0x3e8d73['fileText']){throw new Error(_0x7064('0x21'));}if(_0x303dcd[_0x7064('0x1c')]===_0x4151b6['id']){return _0x4151b6;}else{return db[_0x7064('0x22')][_0x7064('0x23')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x4deef5){if(!_0x4deef5){throw new db[(_0x7064('0x1f'))]['ValidationError'](_0x7064('0x24'));}if(!_0x4deef5[_0x7064('0x25')]||!_0x4deef5['data2']){throw new db[(_0x7064('0x1f'))][(_0x7064('0x1a'))](_0x7064('0x26'));}_0x268a94=_0x4deef5;logger[_0x7064('0x8')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x549684['id']));return sentiment(_0x268a94[_0x7064('0x25')],_0x268a94['data2'],_0x303dcd[_0x7064('0x27')],_0x3e8d73[_0x7064('0x10')],_0x303dcd[_0x7064('0x1d')]);})['then'](function(_0x181435){logger[_0x7064('0x8')](util[_0x7064('0x9')](_0x7064('0x28'),_0x549684['id']));return _0x549684['update']({'sentiment':_0x181435['Sentiment'],'sPositive':_0x181435[_0x7064('0x29')][_0x7064('0x2a')],'sNegative':_0x181435['SentimentScore'][_0x7064('0x2b')],'sMixed':_0x181435[_0x7064('0x29')][_0x7064('0x2c')],'sNeutral':_0x181435[_0x7064('0x29')][_0x7064('0x2d')]});})[_0x7064('0xd')](function(){logger[_0x7064('0x8')](util[_0x7064('0x9')](_0x7064('0x2e'),_0x549684['id']));_0x44dcbe();});case _0x7064('0x2f'):return _0x549684[_0x7064('0x19')]({'transcribeStatus':'FAILED','failureReason':_0x4b39db[_0x7064('0xe')][_0x7064('0x30')]})[_0x7064('0xd')](function(){logger[_0x7064('0x8')](util[_0x7064('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x549684['id']));_0x44dcbe();});default:logger[_0x7064('0x8')](util[_0x7064('0x9')](_0x7064('0x31'),_0x549684['id']));break;}}else{return BPromise[_0x7064('0x32')]()[_0x7064('0xd')](function(){if(!_0x549684[_0x7064('0x33')]){throw new db['Sequelize'][(_0x7064('0x1a'))](_0x7064('0x34'));}if(!_0x303dcd['sentiment']||!_0x303dcd[_0x7064('0x1c')]||!_0x303dcd[_0x7064('0x27')]||!_0x303dcd[_0x7064('0x1d')]||!_0x303dcd[_0x7064('0x1e')]){throw new db[(_0x7064('0x1f'))][(_0x7064('0x1a'))](_0x7064('0x20'));}if(!_0x549684[_0x7064('0x10')]){throw new Error(_0x7064('0x21'));}if(_0x303dcd[_0x7064('0x1c')]===_0x4151b6['id']){return _0x4151b6;}else{return db[_0x7064('0x22')][_0x7064('0x23')]({'where':{'id':_settings[_0x7064('0x1c')]}});}})['then'](function(_0x20e465){if(!_0x20e465){throw new db[(_0x7064('0x1f'))]['ValidationError'](_0x7064('0x24'));}if(!_0x20e465[_0x7064('0x25')]||!_0x20e465[_0x7064('0x35')]){throw new db[(_0x7064('0x1f'))][(_0x7064('0x1a'))](_0x7064('0x26'));}_0x268a94=_0x20e465;logger['info'](util['format'](_0x7064('0x36'),_0x549684['id']));return sentiment(_0x268a94[_0x7064('0x25')],_0x268a94['data2'],_0x303dcd[_0x7064('0x27')],_0x549684[_0x7064('0x10')],_0x303dcd['language']);})[_0x7064('0xd')](function(_0x48127d){logger['info'](util['format'](_0x7064('0x28'),_0x549684['id']));return _0x549684[_0x7064('0x19')]({'sentiment':_0x48127d['Sentiment'],'sPositive':_0x48127d[_0x7064('0x29')][_0x7064('0x2a')],'sNegative':_0x48127d['SentimentScore'][_0x7064('0x2b')],'sMixed':_0x48127d[_0x7064('0x29')]['Mixed'],'sNeutral':_0x48127d[_0x7064('0x29')][_0x7064('0x2d')],'transcribeStatus':_0x7064('0x11')});})['then'](function(){logger['info'](util[_0x7064('0x9')](_0x7064('0x2e'),_0x549684['id']));_0x44dcbe();});}})[_0x7064('0x37')](function(_0xf77b74){if(_0xf77b74){if(!_0xf77b74[_0x7064('0x38')]||_0xf77b74[_0x7064('0x38')]!==_0x7064('0x39')){logger['error'](util['format'](_0x7064('0x3a'),_0x549684['id']),util[_0x7064('0x3b')](_0xf77b74,{'showHidden':![],'depth':null}));}}_0x44dcbe();});});}function checkTranscribe(){var _0x37cad7;var _0x39d9ad;var _0x1db6f7;return db[_0x7064('0x3c')][_0x7064('0x3d')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0x5f2278){if(!_0x5f2278||!_0x5f2278['length']){throw new db['Sequelize']['ValidationError']('No\x20transcribe\x20job\x20to\x20check');}_0x37cad7=_0x5f2278;return db[_0x7064('0x3e')]['findOne']({'where':{'id':0x1}});})[_0x7064('0xd')](function(_0x249e43){if(!_0x249e43){throw new db[(_0x7064('0x1f'))][(_0x7064('0x1a'))](_0x7064('0x3f'));}_0x39d9ad=_0x249e43;if(!_0x39d9ad[_0x7064('0x40')]||!_0x39d9ad['transcribeAccountId']||!_0x39d9ad['transcribeRegion']||!_0x39d9ad['language']||!_0x39d9ad[_0x7064('0x1e')]){throw new db[(_0x7064('0x1f'))]['ValidationError'](_0x7064('0x41'));}return db[_0x7064('0x22')][_0x7064('0x23')]({'where':{'id':_0x39d9ad[_0x7064('0x42')]}});})[_0x7064('0xd')](function(_0x4f7e16){if(!_0x4f7e16){throw new db['Sequelize']['ValidationError'](_0x7064('0x24'));}if(!_0x4f7e16['data1']||!_0x4f7e16[_0x7064('0x35')]){throw new db[(_0x7064('0x1f'))][(_0x7064('0x1a'))](_0x7064('0x26'));}_0x1db6f7=_0x4f7e16;var _0x3c73a6=[];_0x37cad7['forEach'](function(_0x53f09f){_0x3c73a6[_0x7064('0x43')](checkTranscribeJob(_0x53f09f,_0x39d9ad,_0x1db6f7));});return BPromise['all'](_0x3c73a6);})[_0x7064('0x37')](function(_0x5a876f){if(_0x5a876f){if(!_0x5a876f[_0x7064('0x38')]||_0x5a876f[_0x7064('0x38')]!==_0x7064('0x39')){logger[_0x7064('0x44')](util['inspect'](_0x5a876f,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xa866=['findOne','Cloud\x20Provider\x20not\x20available','data2','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','Positive','SentimentScore','Negative','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','CloudProvider','Mixed','COMPLETED','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','bucket','Transcribe\x20not\x20configured','Cloud\x20Provider\x20not\x20configured','push','all','start','lodash','aws-sdk','request-promise','util','bluebird','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','detectSentiment','substring','info','format','transcribeName','data1','transcribeRegion','then','TranscriptionJob','TranscriptionJobStatus','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','sentimentAccountId','sentimentRegion','language','ValidationError','Sentiment\x20Analysis\x20not\x20configured'];(function(_0x42819e,_0x42464b){var _0xd49adf=function(_0x243966){while(--_0x243966){_0x42819e['push'](_0x42819e['shift']());}};_0xd49adf(++_0x42464b);}(_0xa866,0x6a));var _0x6a86=function(_0x44b188,_0x2c0cc6){_0x44b188=_0x44b188-0x0;var _0x2cb954=_0xa866[_0x44b188];return _0x2cb954;};var _=require(_0x6a86('0x0'));var AWS=require(_0x6a86('0x1'));var rp=require(_0x6a86('0x2'));var util=require(_0x6a86('0x3'));var BPromise=require(_0x6a86('0x4'));var db=require('../../mysqldb')['db'];var logger=require(_0x6a86('0x5'))(_0x6a86('0x6'));function getTranscriptionJob(_0x3d1631,_0x4a6d5a,_0x45b052,_0x31c80c){return new Promise(function(_0xac49a,_0x5e7673){var _0x183997=new AWS[(_0x6a86('0x7'))]({'accessKeyId':_0x4a6d5a,'secretAccessKey':_0x3d1631,'region':_0x45b052});_0x183997[_0x6a86('0x8')]({'TranscriptionJobName':_0x31c80c},function(_0x1330e1,_0x37e3ee){if(_0x1330e1){return _0x5e7673(_0x1330e1);}else{return _0xac49a(_0x37e3ee);}});});}function sentiment(_0x146a11,_0xdc33fa,_0x4a83c9,_0x21712d,_0x5355b7){return new Promise(function(_0x3435a8,_0x1a4548){var _0x100925=new AWS['Comprehend']({'accessKeyId':_0xdc33fa,'secretAccessKey':_0x146a11,'region':_0x4a83c9});_0x100925[_0x6a86('0x9')]({'Text':_0x21712d,'LanguageCode':_0x5355b7[_0x6a86('0xa')](0x0,0x2)},function(_0x49b4c6,_0x5b95e0){if(_0x49b4c6){return _0x1a4548(_0x49b4c6);}else{return _0x3435a8(_0x5b95e0);}});});}function checkTranscribeJob(_0x39e195,_0x3c4753,_0x32f657){var _0x3961f6;return new BPromise(function(_0x11e82f,_0x314891){logger[_0x6a86('0xb')](util[_0x6a86('0xc')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x39e195['id'],_0x39e195[_0x6a86('0xd')]));return getTranscriptionJob(_0x32f657[_0x6a86('0xe')],_0x32f657['data2'],_0x3c4753[_0x6a86('0xf')],_0x39e195[_0x6a86('0xd')])[_0x6a86('0x10')](function(_0x353004){logger[_0x6a86('0xb')](util[_0x6a86('0xc')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x39e195['id'],_0x39e195[_0x6a86('0xd')],_0x353004[_0x6a86('0x11')]['TranscriptionJobStatus']));if(!_0x39e195['fileText']){switch(_0x353004[_0x6a86('0x11')]['TranscriptionJobStatus']){case'COMPLETED':var _0x1fe0b5={'transcribeStatus':_0x353004[_0x6a86('0x11')][_0x6a86('0x12')],'fileUri':_0x353004['TranscriptionJob'][_0x6a86('0x13')][_0x6a86('0x14')]};logger[_0x6a86('0xb')](util[_0x6a86('0xc')](_0x6a86('0x15'),_0x39e195['id']));return rp({'uri':_0x353004[_0x6a86('0x11')]['Transcript']['TranscriptFileUri'],'json':!![]})['then'](function(_0x1ae50f){logger[_0x6a86('0xb')](util[_0x6a86('0xc')](_0x6a86('0x16'),_0x39e195['id']));if(_0x1ae50f&&_0x1ae50f['results']&&_0x1ae50f[_0x6a86('0x17')][_0x6a86('0x18')]&&_0x1ae50f[_0x6a86('0x17')][_0x6a86('0x18')][_0x6a86('0x19')]){_0x1fe0b5[_0x6a86('0x1a')]='';for(var _0x46f6c7=0x0;_0x46f6c7<_0x1ae50f[_0x6a86('0x17')][_0x6a86('0x18')]['length'];_0x46f6c7++){_0x1fe0b5['fileText']+=_0x1ae50f[_0x6a86('0x17')]['transcripts'][_0x46f6c7][_0x6a86('0x1b')]+'';}}return _0x39e195[_0x6a86('0x1c')](_0x1fe0b5);})['then'](function(){logger[_0x6a86('0xb')](util[_0x6a86('0xc')](_0x6a86('0x1d'),_0x39e195['id']));if(!_0x39e195['tempSentiment']){throw new db[(_0x6a86('0x1e'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x3c4753['sentiment']||!_0x3c4753[_0x6a86('0x1f')]||!_0x3c4753[_0x6a86('0x20')]||!_0x3c4753[_0x6a86('0x21')]||!_0x3c4753['bucket']){throw new db[(_0x6a86('0x1e'))][(_0x6a86('0x22'))](_0x6a86('0x23'));}if(!_0x1fe0b5[_0x6a86('0x1a')]){throw new Error('Transcript\x20not\x20available');}if(_0x3c4753[_0x6a86('0x1f')]===_0x32f657['id']){return _0x32f657;}else{return db['CloudProvider'][_0x6a86('0x24')]({'where':{'id':_settings[_0x6a86('0x1f')]}});}})[_0x6a86('0x10')](function(_0x2f6497){if(!_0x2f6497){throw new db[(_0x6a86('0x1e'))]['ValidationError'](_0x6a86('0x25'));}if(!_0x2f6497[_0x6a86('0xe')]||!_0x2f6497['data2']){throw new db[(_0x6a86('0x1e'))][(_0x6a86('0x22'))]('Cloud\x20Provider\x20not\x20configured');}_0x3961f6=_0x2f6497;logger[_0x6a86('0xb')](util[_0x6a86('0xc')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x39e195['id']));return sentiment(_0x3961f6['data1'],_0x3961f6[_0x6a86('0x26')],_0x3c4753[_0x6a86('0x20')],_0x1fe0b5['fileText'],_0x3c4753['language']);})[_0x6a86('0x10')](function(_0x5b9213){logger[_0x6a86('0xb')](util['format'](_0x6a86('0x27'),_0x39e195['id']));return _0x39e195['update']({'sentiment':_0x5b9213[_0x6a86('0x28')],'sPositive':_0x5b9213['SentimentScore'][_0x6a86('0x29')],'sNegative':_0x5b9213[_0x6a86('0x2a')][_0x6a86('0x2b')],'sMixed':_0x5b9213[_0x6a86('0x2a')]['Mixed'],'sNeutral':_0x5b9213[_0x6a86('0x2a')][_0x6a86('0x2c')]});})[_0x6a86('0x10')](function(){logger['info'](util[_0x6a86('0xc')](_0x6a86('0x1d'),_0x39e195['id']));_0x11e82f();});case'FAILED':return _0x39e195[_0x6a86('0x1c')]({'transcribeStatus':_0x6a86('0x2d'),'failureReason':_0x353004['TranscriptionJob'][_0x6a86('0x2e')]})['then'](function(){logger['info'](util[_0x6a86('0xc')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x39e195['id']));_0x11e82f();});default:logger['info'](util['format'](_0x6a86('0x2f'),_0x39e195['id']));break;}}else{return BPromise[_0x6a86('0x30')]()['then'](function(){if(!_0x39e195['tempSentiment']){throw new db[(_0x6a86('0x1e'))]['ValidationError'](_0x6a86('0x31'));}if(!_0x3c4753['sentiment']||!_0x3c4753[_0x6a86('0x1f')]||!_0x3c4753[_0x6a86('0x20')]||!_0x3c4753['language']||!_0x3c4753['bucket']){throw new db['Sequelize'][(_0x6a86('0x22'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x39e195[_0x6a86('0x1a')]){throw new Error('Transcript\x20not\x20available');}if(_0x3c4753[_0x6a86('0x1f')]===_0x32f657['id']){return _0x32f657;}else{return db[_0x6a86('0x32')][_0x6a86('0x24')]({'where':{'id':_settings[_0x6a86('0x1f')]}});}})['then'](function(_0x485832){if(!_0x485832){throw new db[(_0x6a86('0x1e'))]['ValidationError'](_0x6a86('0x25'));}if(!_0x485832[_0x6a86('0xe')]||!_0x485832[_0x6a86('0x26')]){throw new db[(_0x6a86('0x1e'))][(_0x6a86('0x22'))]('Cloud\x20Provider\x20not\x20configured');}_0x3961f6=_0x485832;logger['info'](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x39e195['id']));return sentiment(_0x3961f6[_0x6a86('0xe')],_0x3961f6['data2'],_0x3c4753[_0x6a86('0x20')],_0x39e195['fileText'],_0x3c4753[_0x6a86('0x21')]);})[_0x6a86('0x10')](function(_0x44f613){logger[_0x6a86('0xb')](util[_0x6a86('0xc')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x39e195['id']));return _0x39e195[_0x6a86('0x1c')]({'sentiment':_0x44f613[_0x6a86('0x28')],'sPositive':_0x44f613['SentimentScore']['Positive'],'sNegative':_0x44f613[_0x6a86('0x2a')][_0x6a86('0x2b')],'sMixed':_0x44f613[_0x6a86('0x2a')][_0x6a86('0x33')],'sNeutral':_0x44f613[_0x6a86('0x2a')][_0x6a86('0x2c')],'transcribeStatus':_0x6a86('0x34')});})[_0x6a86('0x10')](function(){logger['info'](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x39e195['id']));_0x11e82f();});}})[_0x6a86('0x35')](function(_0x70b27c){if(_0x70b27c){if(!_0x70b27c[_0x6a86('0x36')]||_0x70b27c[_0x6a86('0x36')]!==_0x6a86('0x37')){logger[_0x6a86('0x38')](util[_0x6a86('0xc')](_0x6a86('0x39'),_0x39e195['id']),util[_0x6a86('0x3a')](_0x70b27c,{'showHidden':![],'depth':null}));}}_0x11e82f();});});}function checkTranscribe(){var _0x204812;var _0x17a268;var _0x3eab11;return db['VoiceRecording'][_0x6a86('0x3b')]({'where':{'transcribeStatus':_0x6a86('0x3c')}})[_0x6a86('0x10')](function(_0x2fbeea){if(!_0x2fbeea||!_0x2fbeea[_0x6a86('0x19')]){throw new db[(_0x6a86('0x1e'))][(_0x6a86('0x22'))](_0x6a86('0x3d'));}_0x204812=_0x2fbeea;return db[_0x6a86('0x3e')][_0x6a86('0x24')]({'where':{'id':0x1}});})['then'](function(_0x2d12a9){if(!_0x2d12a9){throw new db['Sequelize'][(_0x6a86('0x22'))](_0x6a86('0x3f'));}_0x17a268=_0x2d12a9;if(!_0x17a268[_0x6a86('0x6')]||!_0x17a268[_0x6a86('0x40')]||!_0x17a268[_0x6a86('0xf')]||!_0x17a268[_0x6a86('0x21')]||!_0x17a268[_0x6a86('0x41')]){throw new db[(_0x6a86('0x1e'))][(_0x6a86('0x22'))](_0x6a86('0x42'));}return db[_0x6a86('0x32')][_0x6a86('0x24')]({'where':{'id':_0x17a268['transcribeAccountId']}});})[_0x6a86('0x10')](function(_0x4e01dd){if(!_0x4e01dd){throw new db['Sequelize'][(_0x6a86('0x22'))](_0x6a86('0x25'));}if(!_0x4e01dd[_0x6a86('0xe')]||!_0x4e01dd['data2']){throw new db[(_0x6a86('0x1e'))][(_0x6a86('0x22'))](_0x6a86('0x43'));}_0x3eab11=_0x4e01dd;var _0x19ef52=[];_0x204812['forEach'](function(_0xa38984){_0x19ef52[_0x6a86('0x44')](checkTranscribeJob(_0xa38984,_0x17a268,_0x3eab11));});return BPromise[_0x6a86('0x45')](_0x19ef52);})['catch'](function(_0x33c501){if(_0x33c501){if(!_0x33c501['name']||_0x33c501[_0x6a86('0x36')]!==_0x6a86('0x37')){logger['error'](util[_0x6a86('0x3a')](_0x33c501,{'showHidden':![],'depth':null}));}}});}exports[_0x6a86('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 64ed206..262a489 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ea4=['timeout','YYYY-MM-DD\x20HH:mm:ss','then','length','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','ioredis','util','../../config/environment','../logger','redis','localhost','WhatsappInteraction','lastMsgAt','subtract','map','info','join','update'];(function(_0x3c4cae,_0x4f2faf){var _0x2011e7=function(_0x40ffa8){while(--_0x40ffa8){_0x3c4cae['push'](_0x3c4cae['shift']());}};_0x2011e7(++_0x4f2faf);}(_0x7ea4,0x178));var _0x47ea=function(_0x258919,_0x1754e6){_0x258919=_0x258919-0x0;var _0xfbd68b=_0x7ea4[_0x258919];return _0xfbd68b;};'use strict';var _=require(_0x47ea('0x0'));var moment=require('moment');var Redis=require(_0x47ea('0x1'));var util=require(_0x47ea('0x2'));var config=require(_0x47ea('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x47ea('0x4'))('schedule');config[_0x47ea('0x5')]=_['defaults'](config['redis'],{'host':_0x47ea('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x47ea('0x5')]));function closeInteractions(){var _0x5a9d19=[];return db[_0x47ea('0x7')]['findAll']({'raw':!![],'attributes':['id',_0x47ea('0x8')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x47ea('0x9')](0x18,'hours')}}})['then'](function(_0x32f169){if(_0x32f169&&_0x32f169['length']){_0x5a9d19=_[_0x47ea('0xa')](_0x32f169||[],'id');logger[_0x47ea('0xb')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x5a9d19[_0x47ea('0xc')]());return db[_0x47ea('0x7')][_0x47ea('0xd')]({'closeReason':'system','disposition':_0x47ea('0xe'),'closed':!![],'closedAt':moment()['format'](_0x47ea('0xf'))},{'where':{'id':_0x5a9d19}});}})[_0x47ea('0x10')](function(){if(_0x5a9d19&&_0x5a9d19[_0x47ea('0x11')]){logger[_0x47ea('0xb')](_0x47ea('0x12'),_0x5a9d19[_0x47ea('0xc')]());for(var _0x43cfdc=0x0;_0x43cfdc<_0x5a9d19[_0x47ea('0x11')];_0x43cfdc++){io[_0x47ea('0x13')](_0x47ea('0x14'),{'id':_0x5a9d19[_0x43cfdc],'closed':!![]});}}})[_0x47ea('0x15')](function(_0x5da3da){logger[_0x47ea('0x16')](_0x47ea('0x17'),_0x5da3da?util[_0x47ea('0x18')](_0x5da3da,{'showHidden':![],'depth':null}):'');});}exports[_0x47ea('0x19')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x4214=['ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','localhost','socket.io-emitter','WhatsappInteraction','lastMsgAt','hours','length','map','info','join','update','system','timeout','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','inspect','start','lodash','moment'];(function(_0x1dbb1f,_0x2d5a5e){var _0x3443e5=function(_0x2bc286){while(--_0x2bc286){_0x1dbb1f['push'](_0x1dbb1f['shift']());}};_0x3443e5(++_0x2d5a5e);}(_0x4214,0x177));var _0x4421=function(_0x4c5034,_0x264da9){_0x4c5034=_0x4c5034-0x0;var _0x139f2f=_0x4214[_0x4c5034];return _0x139f2f;};'use strict';var _=require(_0x4421('0x0'));var moment=require(_0x4421('0x1'));var Redis=require(_0x4421('0x2'));var util=require(_0x4421('0x3'));var config=require(_0x4421('0x4'));var db=require(_0x4421('0x5'))['db'];var logger=require(_0x4421('0x6'))(_0x4421('0x7'));config[_0x4421('0x8')]=_['defaults'](config['redis'],{'host':_0x4421('0x9'),'port':0x18eb});var io=require(_0x4421('0xa'))(new Redis(config['redis']));function closeInteractions(){var _0x3ec5de=[];return db[_0x4421('0xb')]['findAll']({'raw':!![],'attributes':['id',_0x4421('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x4421('0xd'))}}})['then'](function(_0x6b5e97){if(_0x6b5e97&&_0x6b5e97[_0x4421('0xe')]){_0x3ec5de=_[_0x4421('0xf')](_0x6b5e97||[],'id');logger[_0x4421('0x10')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x3ec5de[_0x4421('0x11')]());return db[_0x4421('0xb')][_0x4421('0x12')]({'closeReason':_0x4421('0x13'),'disposition':_0x4421('0x14'),'closed':!![],'closedAt':moment()['format'](_0x4421('0x15'))},{'where':{'id':_0x3ec5de}});}})['then'](function(){if(_0x3ec5de&&_0x3ec5de[_0x4421('0xe')]){logger[_0x4421('0x10')](_0x4421('0x16'),_0x3ec5de[_0x4421('0x11')]());for(var _0x4295ee=0x0;_0x4295ee<_0x3ec5de[_0x4421('0xe')];_0x4295ee++){io[_0x4421('0x17')](_0x4421('0x18'),{'id':_0x3ec5de[_0x4295ee],'closed':!![]});}}})[_0x4421('0x19')](function(_0x323b36){logger[_0x4421('0x1a')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x323b36?util[_0x4421('0x1b')](_0x323b36,{'showHidden':![],'depth':null}):'');});}exports[_0x4421('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 696fda8..a397b7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cf8=['push','Innocenzo','Biondo','@xcally.com','now','innocenzo.biondo','CmContact','bulkCreate','then','log','finished\x20populating','contacts1','CmHopper','destroy','hopper1','contacts2','hopper2','catch','../mysqldb'];(function(_0x23b998,_0x2dae86){var _0x304dc2=function(_0x3807f0){while(--_0x3807f0){_0x23b998['push'](_0x23b998['shift']());}};_0x304dc2(++_0x2dae86);}(_0x7cf8,0x155));var _0x87cf=function(_0x2e40a2,_0x5d720f){_0x2e40a2=_0x2e40a2-0x0;var _0x38510a=_0x7cf8[_0x2e40a2];return _0x38510a;};'use strict';var util=require('util');var db=require(_0x87cf('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x87cf('0x1')]({'id':i,'firstName':_0x87cf('0x2')+i,'lastName':_0x87cf('0x3')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x87cf('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x87cf('0x1')]({'id':i,'active':![],'scheduledat':Date[_0x87cf('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x87cf('0x5')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x87cf('0x3')+i,'phone':0xf879fb460+i,'email':_0x87cf('0x6')+i+_0x87cf('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x87cf('0x5')](),'updatedAt':Date[_0x87cf('0x5')]()});}db[_0x87cf('0x7')]['destroy']({'where':{}})['then'](function(){return db[_0x87cf('0x7')][_0x87cf('0x8')](contacts);})[_0x87cf('0x9')](function(){console[_0x87cf('0xa')](_0x87cf('0xb'),_0x87cf('0xc'));return db[_0x87cf('0xd')][_0x87cf('0xe')]({'where':{}});})[_0x87cf('0x9')](function(){return db[_0x87cf('0xd')][_0x87cf('0x8')](hopper);})[_0x87cf('0x9')](function(){console['log'](_0x87cf('0xb'),_0x87cf('0xf'));return db[_0x87cf('0x7')][_0x87cf('0x8')](contacts2);})[_0x87cf('0x9')](function(){console[_0x87cf('0xa')](_0x87cf('0xb'),_0x87cf('0x10'));return db[_0x87cf('0xd')]['bulkCreate'](hopper2);})[_0x87cf('0x9')](function(){console['log'](_0x87cf('0xb'),_0x87cf('0x11'));})[_0x87cf('0x12')](function(_0x37cf4d){console[_0x87cf('0xa')](_0x37cf4d);});
\ No newline at end of file
+var _0xb67a=['@xcally.com','now','Innocenzo','CmContact','bulkCreate','then','log','finished\x20populating','contacts1','CmHopper','destroy','hopper1','contacts2','hopper2','util','push','Biondo','innocenzo.biondo'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb67a,0x10a));var _0xab67=function(_0x58b693,_0x14ee77){_0x58b693=_0x58b693-0x0;var _0x400350=_0xb67a[_0x58b693];return _0x400350;};'use strict';var util=require(_0xab67('0x0'));var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xab67('0x1')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xab67('0x2')+i,'phone':0xf879fb460+i,'email':_0xab67('0x3')+i+_0xab67('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xab67('0x1')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xab67('0x5')](),'updatedAt':Date[_0xab67('0x5')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xab67('0x1')]({'id':i,'firstName':_0xab67('0x6')+i,'lastName':_0xab67('0x2')+i,'phone':0xf879fb460+i,'email':_0xab67('0x3')+i+_0xab67('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2['push']({'id':i,'active':![],'scheduledat':Date[_0xab67('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xab67('0x5')](),'updatedAt':Date[_0xab67('0x5')]()});}db[_0xab67('0x7')]['destroy']({'where':{}})['then'](function(){return db[_0xab67('0x7')][_0xab67('0x8')](contacts);})[_0xab67('0x9')](function(){console[_0xab67('0xa')](_0xab67('0xb'),_0xab67('0xc'));return db[_0xab67('0xd')][_0xab67('0xe')]({'where':{}});})[_0xab67('0x9')](function(){return db['CmHopper']['bulkCreate'](hopper);})[_0xab67('0x9')](function(){console[_0xab67('0xa')]('finished\x20populating',_0xab67('0xf'));return db[_0xab67('0x7')][_0xab67('0x8')](contacts2);})[_0xab67('0x9')](function(){console[_0xab67('0xa')](_0xab67('0xb'),_0xab67('0x10'));return db['CmHopper'][_0xab67('0x8')](hopper2);})['then'](function(){console[_0xab67('0xa')](_0xab67('0xb'),_0xab67('0x11'));})['catch'](function(_0x363041){console[_0xab67('0xa')](_0x363041);});
\ No newline at end of file
index aa36db4..bff6f0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9a9=['password','udp','wss','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','add\x20user','catch','log','util','../mysqldb','push','format','%s%s','agent','%s%s@xcally.com'];(function(_0x9307ea,_0x38968a){var _0x295554=function(_0x342dcf){while(--_0x342dcf){_0x9307ea['push'](_0x9307ea['shift']());}};_0x295554(++_0x38968a);}(_0xd9a9,0x11f));var _0x9d9a=function(_0x54331b,_0x1524f3){_0x54331b=_0x54331b-0x0;var _0x57a6ae=_0xd9a9[_0x54331b];return _0x57a6ae;};'use strict';var util=require(_0x9d9a('0x0'));var db=require(_0x9d9a('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x9d9a('0x2')]({'name':util[_0x9d9a('0x3')](_0x9d9a('0x4'),_0x9d9a('0x5'),i),'fullname':util[_0x9d9a('0x3')](_0x9d9a('0x4'),_0x9d9a('0x5'),i),'email':util[_0x9d9a('0x3')](_0x9d9a('0x6'),'agent',i),'role':_0x9d9a('0x5'),'password':_0x9d9a('0x7'),'internal':0xfa0+i,'type':'friend','transport':[_0x9d9a('0x8'),'ws',_0x9d9a('0x9')],'disallow':['all'],'allow':['ulaw'],'defaultuser':util[_0x9d9a('0x3')](_0x9d9a('0x4'),_0x9d9a('0x5'),i),'encryption':_0x9d9a('0xa'),'avpf':'yes','force_avp':_0x9d9a('0xa'),'icesupport':_0x9d9a('0xa'),'dtlsenable':_0x9d9a('0xa'),'dtlsverify':'no','dtlscertfile':_0x9d9a('0xb'),'dtlsprivatekey':_0x9d9a('0xc'),'dtlssetup':_0x9d9a('0xd'),'callerid':util[_0x9d9a('0x3')](_0x9d9a('0xe'),util[_0x9d9a('0x3')](_0x9d9a('0x4'),_0x9d9a('0x5'),i),0xfa0+i)});}db[_0x9d9a('0xf')][_0x9d9a('0x10')](users)[_0x9d9a('0x11')](function(){console['log'](_0x9d9a('0x12'));})[_0x9d9a('0x13')](function(_0x252ac8){console[_0x9d9a('0x14')](_0x252ac8);});
\ No newline at end of file
+var _0x7d48=['%s%s@xcally.com','friend','udp','wss','all','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','User','bulkCreate','then','log','add\x20user','catch','../mysqldb','%s%s','agent','format'];(function(_0x4ac6b7,_0xb3b3d){var _0x321927=function(_0x4ef9bd){while(--_0x4ef9bd){_0x4ac6b7['push'](_0x4ac6b7['shift']());}};_0x321927(++_0xb3b3d);}(_0x7d48,0x164));var _0x87d4=function(_0xc4fdf8,_0x4da92d){_0xc4fdf8=_0xc4fdf8-0x0;var _0x4c568f=_0x7d48[_0xc4fdf8];return _0x4c568f;};'use strict';var util=require('util');var db=require(_0x87d4('0x0'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util['format'](_0x87d4('0x1'),_0x87d4('0x2'),i),'fullname':util[_0x87d4('0x3')](_0x87d4('0x1'),_0x87d4('0x2'),i),'email':util[_0x87d4('0x3')](_0x87d4('0x4'),_0x87d4('0x2'),i),'role':_0x87d4('0x2'),'password':'password','internal':0xfa0+i,'type':_0x87d4('0x5'),'transport':[_0x87d4('0x6'),'ws',_0x87d4('0x7')],'disallow':[_0x87d4('0x8')],'allow':[_0x87d4('0x9')],'defaultuser':util[_0x87d4('0x3')](_0x87d4('0x1'),'agent',i),'encryption':_0x87d4('0xa'),'avpf':_0x87d4('0xa'),'force_avp':_0x87d4('0xa'),'icesupport':'yes','dtlsenable':_0x87d4('0xa'),'dtlsverify':'no','dtlscertfile':_0x87d4('0xb'),'dtlsprivatekey':_0x87d4('0xc'),'dtlssetup':_0x87d4('0xd'),'callerid':util[_0x87d4('0x3')]('\x22%s\x22\x20<%s>',util[_0x87d4('0x3')](_0x87d4('0x1'),_0x87d4('0x2'),i),0xfa0+i)});}db[_0x87d4('0xe')][_0x87d4('0xf')](users)[_0x87d4('0x10')](function(){console[_0x87d4('0x11')](_0x87d4('0x12'));})[_0x87d4('0x13')](function(_0x434563){console[_0x87d4('0x11')](_0x434563);});
\ No newline at end of file
index efce2ee..6fbad09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5d7=['handshake','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','SmsQueue','OpenchannelQueue','WhatsappQueue','user','FaxQueue','MailQueue','Trunks','Trunk','IvrCampaigns','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','fax','sms','openchannel','telephone:%s','type','emit','user_has_chat_interactions:remove','leave','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','join','default','request','connection','remotePort','log','nsp','address','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','name','User','role','telephone','agent','ivr','UserProfileSection','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','UserProfileResource','resourceId','map','where','Campaign','format','%s:queue:%s','Agents','user:%s','query','find','userProfileId'];(function(_0x2bdcbe,_0x2f74d6){var _0x13dfff=function(_0x33cdf7){while(--_0x33cdf7){_0x2bdcbe['push'](_0x2bdcbe['shift']());}};_0x13dfff(++_0x2f74d6);}(_0xa5d7,0x1c3));var _0x7a5d=function(_0x4c6e90,_0x3bee60){_0x4c6e90=_0x4c6e90-0x0;var _0x567165=_0xa5d7[_0x4c6e90];return _0x567165;};'use strict';var _=require(_0x7a5d('0x0'));var util=require(_0x7a5d('0x1'));var BPromise=require(_0x7a5d('0x2'));var db=require(_0x7a5d('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0x7a5d('0x4')],'include':[{'as':'Agents','model':db[_0x7a5d('0x5')],'attributes':['id','name',_0x7a5d('0x6')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x7a5d('0x4')],'where':{'role':_0x7a5d('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x7a5d('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x7a5d('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x7a5d('0x4'),'type'],'where':{'type':_0x7a5d('0x9')}};function getAssociatedResources(_0x5d793f,_0x42b9ed,_0x1057e5){return db[_0x7a5d('0xa')]['findOne']({'where':{'name':_0x5d793f,'userProfileId':_0x42b9ed},'raw':!![]})[_0x7a5d('0xb')](function(_0x8f88a8){if(_0x8f88a8){if(_0x8f88a8[_0x7a5d('0xc')]){switch(_0x5d793f){case _0x7a5d('0xd'):case _0x7a5d('0xe'):case _0x7a5d('0xf'):case _0x7a5d('0x10'):case _0x7a5d('0x11'):case _0x7a5d('0x12'):case _0x7a5d('0x13'):return db[_0x1057e5][_0x7a5d('0x14')](queryQueues);case _0x7a5d('0x15'):return db[_0x1057e5]['findAll'](queryTelephones);case'Trunks':return db[_0x1057e5][_0x7a5d('0x14')](queryTrunks);case'IvrCampaigns':return db[_0x1057e5][_0x7a5d('0x14')](queryCampaigns);}}else{return db[_0x7a5d('0x16')][_0x7a5d('0x14')]({'attributes':[_0x7a5d('0x17')],'where':{'sectionId':_0x8f88a8['id']},'raw':!![]})[_0x7a5d('0xb')](function(_0x342f63){if(_0x342f63){var _0x50070a={'where':{'id':_[_0x7a5d('0x18')](_0x342f63,_0x7a5d('0x17'))},'raw':!![]};switch(_0x1057e5){case _0x7a5d('0x5'):_0x50070a[_0x7a5d('0x19')][_0x7a5d('0x6')]='telephone';break;case _0x7a5d('0x1a'):_0x50070a[_0x7a5d('0x19')]['type']='ivr';break;}return db[_0x1057e5][_0x7a5d('0x14')](_0x50070a);}else{return[];}});}}else{return[];}})[_0x7a5d('0xb')](function(_0x55fac7){return _0x55fac7;});}function joinOrLeaveQueues(_0x1dea47,_0x4a02f2,_0x1fd82e,_0x4a0d27){_0x1dea47[_0x4a02f2](util[_0x7a5d('0x1b')](_0x7a5d('0x1c'),_0x1fd82e,_0x4a0d27['name']));if(_0x4a0d27[_0x7a5d('0x1d')]){for(var _0x4faec5=0x0;_0x4faec5<_0x4a0d27[_0x7a5d('0x1d')]['length'];_0x4faec5+=0x1){_0x1dea47[_0x4a02f2](util['format'](_0x7a5d('0x1e'),_0x4a0d27[_0x7a5d('0x1d')][_0x4faec5][_0x7a5d('0x4')]));}}}function joinOrLeave(_0x48da22,_0x7b8ce1,_0x45377a){var _0x1bd069;if(_0x48da22['handshake'][_0x7a5d('0x1f')]['id']){db['User'][_0x7a5d('0x20')]({'attributes':['id',_0x7a5d('0x4'),_0x7a5d('0x6'),_0x7a5d('0x21')],'where':{'id':_0x48da22[_0x7a5d('0x22')][_0x7a5d('0x1f')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x7a5d('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x7a5d('0x24')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x7a5d('0x25')],'as':_0x7a5d('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x7a5d('0x27')],'as':_0x7a5d('0x28'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x7a5d('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x7a5d('0x2a')],'as':_0x7a5d('0x2b'),'attributes':['id'],'raw':!![]}]})[_0x7a5d('0xb')](function(_0x3975){if(_0x3975){_0x1bd069=_0x3975;_0x48da22[_0x7b8ce1](util[_0x7a5d('0x1b')](_0x7a5d('0x1e'),_0x3975[_0x7a5d('0x4')]));var _0x586e77=[];switch(_0x3975[_0x7a5d('0x6')]){case _0x7a5d('0x2c'):_0x48da22[_0x7b8ce1](_0x7a5d('0x2d'));_0x48da22[_0x7b8ce1](_0x7a5d('0x2e'));if(queryQueues[_0x7a5d('0x2f')](_0x7a5d('0x30'))){delete queryQueues[_0x7a5d('0x30')];}_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x32')][_0x7a5d('0x14')](queryQueues));_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x33')][_0x7a5d('0x14')](queryQueues));_0x586e77[_0x7a5d('0x31')](db['FaxQueue'][_0x7a5d('0x14')](queryQueues));_0x586e77['push'](db[_0x7a5d('0x34')][_0x7a5d('0x14')](queryQueues));_0x586e77[_0x7a5d('0x31')](db['MailQueue'][_0x7a5d('0x14')](queryQueues));_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x35')][_0x7a5d('0x14')](queryQueues));_0x586e77['push'](db[_0x7a5d('0x36')][_0x7a5d('0x14')](queryQueues));_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x5')][_0x7a5d('0x14')](queryTelephones));_0x586e77[_0x7a5d('0x31')](db['Trunk'][_0x7a5d('0x14')](queryTrunks));_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x1a')]['findAll'](queryCampaigns));_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x5')][_0x7a5d('0x14')](queryAgents));break;case _0x7a5d('0x37'):_0x48da22[_0x7b8ce1](_0x7a5d('0x2d'));_0x48da22[_0x7b8ce1](_0x7a5d('0x2e'));_0x586e77[_0x7a5d('0x31')](getAssociatedResources(_0x7a5d('0xd'),_0x3975[_0x7a5d('0x21')],_0x7a5d('0x32')));_0x586e77[_0x7a5d('0x31')](getAssociatedResources(_0x7a5d('0xe'),_0x3975[_0x7a5d('0x21')],_0x7a5d('0x33')));_0x586e77['push'](getAssociatedResources(_0x7a5d('0xf'),_0x3975[_0x7a5d('0x21')],_0x7a5d('0x38')));_0x586e77[_0x7a5d('0x31')](getAssociatedResources(_0x7a5d('0x10'),_0x3975[_0x7a5d('0x21')],_0x7a5d('0x34')));_0x586e77[_0x7a5d('0x31')](getAssociatedResources(_0x7a5d('0x11'),_0x3975['userProfileId'],_0x7a5d('0x39')));_0x586e77['push'](getAssociatedResources(_0x7a5d('0x12'),_0x3975['userProfileId'],_0x7a5d('0x35')));_0x586e77[_0x7a5d('0x31')](getAssociatedResources(_0x7a5d('0x13'),_0x3975['userProfileId'],_0x7a5d('0x36')));_0x586e77['push'](getAssociatedResources('Telephones',_0x3975[_0x7a5d('0x21')],_0x7a5d('0x5')));_0x586e77['push'](getAssociatedResources(_0x7a5d('0x3a'),_0x3975[_0x7a5d('0x21')],_0x7a5d('0x3b')));_0x586e77['push'](getAssociatedResources(_0x7a5d('0x3c'),_0x3975[_0x7a5d('0x21')],'Campaign'));_0x586e77[_0x7a5d('0x31')](db[_0x7a5d('0x5')][_0x7a5d('0x14')](queryAgents));break;case _0x7a5d('0x8'):_0x48da22[_0x7b8ce1](_0x7a5d('0x2d'));_0x48da22[_0x7b8ce1](_0x7a5d('0x2e'));_0x586e77[_0x7a5d('0x31')](_0x3975['getVoiceQueues']({'attributes':['id',_0x7a5d('0x4')]}));_0x586e77[_0x7a5d('0x31')](_0x3975[_0x7a5d('0x3d')]({'attributes':['id',_0x7a5d('0x4')]}));_0x586e77[_0x7a5d('0x31')](_0x3975[_0x7a5d('0x3e')]({'attributes':['id',_0x7a5d('0x4')]}));_0x586e77[_0x7a5d('0x31')](_0x3975[_0x7a5d('0x3f')]({'attributes':['id','name']}));_0x586e77[_0x7a5d('0x31')](_0x3975[_0x7a5d('0x40')]({'attributes':['id',_0x7a5d('0x4')]}));_0x586e77[_0x7a5d('0x31')](_0x3975[_0x7a5d('0x41')]({'attributes':['id',_0x7a5d('0x4')]}));_0x586e77['push'](_0x3975[_0x7a5d('0x42')]({'attributes':['id',_0x7a5d('0x4')]}));break;}return BPromise[_0x7a5d('0x43')](_0x586e77);}})['then'](function(_0x15ca33){if(_0x15ca33&&_0x15ca33[_0x7a5d('0x44')]){for(var _0x5095a8=0x0;_0x5095a8<_0x15ca33[_0x7a5d('0x44')];_0x5095a8+=0x1){for(var _0x3d0a2f=0x0;_0x3d0a2f<_0x15ca33[_0x5095a8]['length'];_0x3d0a2f+=0x1){switch(_0x5095a8){case 0x0:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,_0x7a5d('0x45'),_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x1:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,'chat',_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x2:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,_0x7a5d('0x46'),_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x3:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,_0x7a5d('0x47'),_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x4:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,'mail',_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x5:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,_0x7a5d('0x48'),_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x6:joinOrLeaveQueues(_0x48da22,_0x7b8ce1,'whatsapp',_0x15ca33[_0x5095a8][_0x3d0a2f]);break;case 0x7:if(_0x1bd069[_0x7a5d('0x6')]!==_0x7a5d('0x8'))_0x48da22[_0x7b8ce1](util[_0x7a5d('0x1b')](_0x7a5d('0x49'),_0x15ca33[_0x5095a8][_0x3d0a2f][_0x7a5d('0x4')]));break;case 0x8:if(_0x1bd069[_0x7a5d('0x6')]!==_0x7a5d('0x8'))_0x48da22[_0x7b8ce1](util[_0x7a5d('0x1b')]('trunk:%s',_0x15ca33[_0x5095a8][_0x3d0a2f][_0x7a5d('0x4')]));break;case 0x9:if(_0x1bd069[_0x7a5d('0x6')]!==_0x7a5d('0x8'))_0x48da22[_0x7b8ce1](util[_0x7a5d('0x1b')]('campaign:%s:%s',_0x15ca33[_0x5095a8][_0x3d0a2f][_0x7a5d('0x4a')],_0x15ca33[_0x5095a8][_0x3d0a2f][_0x7a5d('0x4')]));break;case 0xa:_0x48da22[_0x7b8ce1](util[_0x7a5d('0x1b')](_0x7a5d('0x1e'),_0x15ca33[_0x5095a8][_0x3d0a2f]['name']));break;}}}}})[_0x7a5d('0xb')](function(){if(_0x7b8ce1==='leave'){var _0x1bea47=_[_0x7a5d('0x18')](_0x1bd069['ChatInteractions'],'id');return _0x1bd069['removeChatInteractions'](_0x1bea47)[_0x7a5d('0xb')](function(){for(var _0x1ded06=0x0;_0x1ded06<_0x1bea47[_0x7a5d('0x44')];_0x1ded06+=0x1){_0x45377a[_0x7a5d('0x4b')](_0x7a5d('0x4c'),{'ChatInteractionId':Number(_0x1bea47[_0x1ded06]),'UserId':Number(_0x1bd069['id'])});}});}})['then'](function(){if(_0x7b8ce1===_0x7a5d('0x4d')){var _0x5d0262=_[_0x7a5d('0x18')](_0x1bd069[_0x7a5d('0x4e')],'id');return _0x1bd069[_0x7a5d('0x4f')](_0x5d0262)[_0x7a5d('0xb')](function(){for(var _0x13f598=0x0;_0x13f598<_0x5d0262[_0x7a5d('0x44')];_0x13f598+=0x1){_0x45377a[_0x7a5d('0x4b')](_0x7a5d('0x50'),{'MailInteractionId':Number(_0x5d0262[_0x13f598]),'UserId':Number(_0x1bd069['id'])});}});}})['then'](function(){if(_0x7b8ce1==='leave'){var _0x3863ef=_[_0x7a5d('0x18')](_0x1bd069['FaxInteractions'],'id');return _0x1bd069[_0x7a5d('0x51')](_0x3863ef)[_0x7a5d('0xb')](function(){for(var _0x410e26=0x0;_0x410e26<_0x3863ef[_0x7a5d('0x44')];_0x410e26+=0x1){_0x45377a[_0x7a5d('0x4b')](_0x7a5d('0x52'),{'FaxInteractionId':Number(_0x3863ef[_0x410e26]),'UserId':Number(_0x1bd069['id'])});}});}})['then'](function(){if(_0x7b8ce1===_0x7a5d('0x4d')){var _0xc05cda=_['map'](_0x1bd069[_0x7a5d('0x28')],'id');return _0x1bd069[_0x7a5d('0x53')](_0xc05cda)['then'](function(){for(var _0x290459=0x0;_0x290459<_0xc05cda['length'];_0x290459+=0x1){_0x45377a['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0xc05cda[_0x290459]),'UserId':Number(_0x1bd069['id'])});}});}})[_0x7a5d('0xb')](function(){if(_0x7b8ce1===_0x7a5d('0x4d')){var _0x413f68=_['map'](_0x1bd069[_0x7a5d('0x29')],'id');return _0x1bd069[_0x7a5d('0x54')](_0x413f68)[_0x7a5d('0xb')](function(){for(var _0x3a9cd6=0x0;_0x3a9cd6<_0x413f68['length'];_0x3a9cd6+=0x1){_0x45377a['emit'](_0x7a5d('0x55'),{'OpenchannelInteractionId':Number(_0x413f68[_0x3a9cd6]),'UserId':Number(_0x1bd069['id'])});}});}})[_0x7a5d('0xb')](function(){if(_0x7b8ce1===_0x7a5d('0x4d')){var _0x3eb989=_[_0x7a5d('0x18')](_0x1bd069[_0x7a5d('0x2b')],'id');return _0x1bd069['removeWhatsappInteractions'](_0x3eb989)[_0x7a5d('0xb')](function(){for(var _0x34d739=0x0;_0x34d739<_0x3eb989[_0x7a5d('0x44')];_0x34d739+=0x1){_0x45377a[_0x7a5d('0x4b')](_0x7a5d('0x56'),{'WhatsappInteractionId':Number(_0x3eb989[_0x34d739]),'UserId':Number(_0x1bd069['id'])});}});}})['catch'](function(_0x2e0d1e){_0x48da22['log'](_0x2e0d1e);});}}function onDisconnect(_0x2907e7,_0x50b91e){joinOrLeave(_0x2907e7,'leave',_0x50b91e);}function onConnect(_0x44f1ce){joinOrLeave(_0x44f1ce,_0x7a5d('0x57'));}exports[_0x7a5d('0x58')]=function(_0x6cb78f){_0x6cb78f['on']('connection',function(_0x29c236){_0x29c236['setMaxListeners'](0x0);_0x29c236['address']=_0x29c236[_0x7a5d('0x59')][_0x7a5d('0x5a')]['remoteAddress']+':'+_0x29c236[_0x7a5d('0x59')]['connection'][_0x7a5d('0x5b')];_0x29c236['connectedAt']=new Date();_0x29c236['log']=function(_0x59cdbb){console[_0x7a5d('0x5c')]('SocketIO\x20'+_0x29c236[_0x7a5d('0x5d')][_0x7a5d('0x4')]+'['+_0x29c236[_0x7a5d('0x5e')]+']',_0x59cdbb);};_0x29c236['on']('disconnect',function(){onDisconnect(_0x29c236,_0x6cb78f);_0x29c236[_0x7a5d('0x5c')](_0x7a5d('0x5f'));});onConnect(_0x29c236);_0x29c236[_0x7a5d('0x5c')](_0x7a5d('0x60'));});};
\ No newline at end of file
+var _0x4e2e=['disconnect','DISCONNECTED','CONNECTED','util','bluebird','../mysqldb','./environment','name','Agents','role','agent','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','map','resourceId','where','telephone','format','%s:queue:%s','length','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','User','Trunk','user','MailQueues','getFaxQueues','getSmsQueues','getWhatsappQueues','voice','chat','sms','mail','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','MailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','join','connection','setMaxListeners','request','remoteAddress','remotePort','connectedAt','log','address'];(function(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0x4e2e,0x1f2));var _0xe4e2=function(_0x4318c8,_0x28d237){_0x4318c8=_0x4318c8-0x0;var _0x3352b7=_0x4e2e[_0x4318c8];return _0x3352b7;};'use strict';var _=require('lodash');var util=require(_0xe4e2('0x0'));var BPromise=require(_0xe4e2('0x1'));var db=require(_0xe4e2('0x2'))['db'];var config=require(_0xe4e2('0x3'));var queryQueues={'attributes':['id',_0xe4e2('0x4')],'include':[{'as':_0xe4e2('0x5'),'model':db['User'],'attributes':['id',_0xe4e2('0x4'),_0xe4e2('0x6')],'raw':!![],'where':{'role':_0xe4e2('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xe4e2('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xe4e2('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0xe4e2('0x4')],'where':{'role':_0xe4e2('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xe4e2('0x4'),_0xe4e2('0x8')],'where':{'type':_0xe4e2('0x9')}};function getAssociatedResources(_0x1e9508,_0xbd6aae,_0x4912da){return db[_0xe4e2('0xa')][_0xe4e2('0xb')]({'where':{'name':_0x1e9508,'userProfileId':_0xbd6aae},'raw':!![]})[_0xe4e2('0xc')](function(_0x5b7889){if(_0x5b7889){if(_0x5b7889[_0xe4e2('0xd')]){switch(_0x1e9508){case _0xe4e2('0xe'):case _0xe4e2('0xf'):case _0xe4e2('0x10'):case _0xe4e2('0x11'):case'MailQueues':case _0xe4e2('0x12'):case _0xe4e2('0x13'):return db[_0x4912da][_0xe4e2('0x14')](queryQueues);case _0xe4e2('0x15'):return db[_0x4912da]['findAll'](queryTelephones);case _0xe4e2('0x16'):return db[_0x4912da][_0xe4e2('0x14')](queryTrunks);case _0xe4e2('0x17'):return db[_0x4912da][_0xe4e2('0x14')](queryCampaigns);}}else{return db[_0xe4e2('0x18')]['findAll']({'attributes':['resourceId'],'where':{'sectionId':_0x5b7889['id']},'raw':!![]})[_0xe4e2('0xc')](function(_0x2d2018){if(_0x2d2018){var _0x1f9b2d={'where':{'id':_[_0xe4e2('0x19')](_0x2d2018,_0xe4e2('0x1a'))},'raw':!![]};switch(_0x4912da){case'User':_0x1f9b2d[_0xe4e2('0x1b')][_0xe4e2('0x6')]=_0xe4e2('0x1c');break;case'Campaign':_0x1f9b2d[_0xe4e2('0x1b')]['type']=_0xe4e2('0x9');break;}return db[_0x4912da][_0xe4e2('0x14')](_0x1f9b2d);}else{return[];}});}}else{return[];}})[_0xe4e2('0xc')](function(_0x452c85){return _0x452c85;});}function joinOrLeaveQueues(_0x3dfbdf,_0x156243,_0x339d00,_0x3c4e90){_0x3dfbdf[_0x156243](util[_0xe4e2('0x1d')](_0xe4e2('0x1e'),_0x339d00,_0x3c4e90['name']));if(_0x3c4e90[_0xe4e2('0x5')]){for(var _0x2e7ecd=0x0;_0x2e7ecd<_0x3c4e90[_0xe4e2('0x5')][_0xe4e2('0x1f')];_0x2e7ecd+=0x1){_0x3dfbdf[_0x156243](util[_0xe4e2('0x1d')](_0xe4e2('0x20'),_0x3c4e90[_0xe4e2('0x5')][_0x2e7ecd]['name']));}}}function joinOrLeave(_0xcc0b12,_0x2ab435,_0x2088b9){var _0x5373c0;if(_0xcc0b12[_0xe4e2('0x21')][_0xe4e2('0x22')]['id']){db['User'][_0xe4e2('0x23')]({'attributes':['id',_0xe4e2('0x4'),_0xe4e2('0x6'),_0xe4e2('0x24')],'where':{'id':_0xcc0b12[_0xe4e2('0x21')]['query']['id']},'include':[{'model':db[_0xe4e2('0x25')],'as':_0xe4e2('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xe4e2('0x27')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe4e2('0x28')],'as':_0xe4e2('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0xe4e2('0x2a')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe4e2('0x2b')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe4e2('0x2c')],'as':_0xe4e2('0x2d'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x46926a){if(_0x46926a){_0x5373c0=_0x46926a;_0xcc0b12[_0x2ab435](util[_0xe4e2('0x1d')](_0xe4e2('0x20'),_0x46926a[_0xe4e2('0x4')]));var _0x1f7bcc=[];switch(_0x46926a['role']){case'admin':_0xcc0b12[_0x2ab435](_0xe4e2('0x2e'));_0xcc0b12[_0x2ab435](_0xe4e2('0x2f'));if(queryQueues[_0xe4e2('0x30')](_0xe4e2('0x31'))){delete queryQueues[_0xe4e2('0x31')];}_0x1f7bcc[_0xe4e2('0x32')](db[_0xe4e2('0x33')][_0xe4e2('0x14')](queryQueues));_0x1f7bcc[_0xe4e2('0x32')](db[_0xe4e2('0x34')][_0xe4e2('0x14')](queryQueues));_0x1f7bcc[_0xe4e2('0x32')](db['FaxQueue'][_0xe4e2('0x14')](queryQueues));_0x1f7bcc[_0xe4e2('0x32')](db[_0xe4e2('0x35')][_0xe4e2('0x14')](queryQueues));_0x1f7bcc[_0xe4e2('0x32')](db[_0xe4e2('0x36')]['findAll'](queryQueues));_0x1f7bcc[_0xe4e2('0x32')](db[_0xe4e2('0x37')][_0xe4e2('0x14')](queryQueues));_0x1f7bcc[_0xe4e2('0x32')](db[_0xe4e2('0x38')][_0xe4e2('0x14')](queryQueues));_0x1f7bcc[_0xe4e2('0x32')](db[_0xe4e2('0x39')][_0xe4e2('0x14')](queryTelephones));_0x1f7bcc[_0xe4e2('0x32')](db[_0xe4e2('0x3a')]['findAll'](queryTrunks));_0x1f7bcc[_0xe4e2('0x32')](db['Campaign'][_0xe4e2('0x14')](queryCampaigns));_0x1f7bcc[_0xe4e2('0x32')](db['User'][_0xe4e2('0x14')](queryAgents));break;case _0xe4e2('0x3b'):_0xcc0b12[_0x2ab435](_0xe4e2('0x2e'));_0xcc0b12[_0x2ab435](_0xe4e2('0x2f'));_0x1f7bcc['push'](getAssociatedResources(_0xe4e2('0xe'),_0x46926a['userProfileId'],_0xe4e2('0x33')));_0x1f7bcc['push'](getAssociatedResources(_0xe4e2('0xf'),_0x46926a[_0xe4e2('0x24')],_0xe4e2('0x34')));_0x1f7bcc['push'](getAssociatedResources(_0xe4e2('0x10'),_0x46926a[_0xe4e2('0x24')],'FaxQueue'));_0x1f7bcc[_0xe4e2('0x32')](getAssociatedResources(_0xe4e2('0x11'),_0x46926a[_0xe4e2('0x24')],_0xe4e2('0x35')));_0x1f7bcc[_0xe4e2('0x32')](getAssociatedResources(_0xe4e2('0x3c'),_0x46926a[_0xe4e2('0x24')],_0xe4e2('0x36')));_0x1f7bcc[_0xe4e2('0x32')](getAssociatedResources('OpenchannelQueues',_0x46926a['userProfileId'],_0xe4e2('0x37')));_0x1f7bcc[_0xe4e2('0x32')](getAssociatedResources(_0xe4e2('0x13'),_0x46926a[_0xe4e2('0x24')],'WhatsappQueue'));_0x1f7bcc['push'](getAssociatedResources(_0xe4e2('0x15'),_0x46926a[_0xe4e2('0x24')],_0xe4e2('0x39')));_0x1f7bcc[_0xe4e2('0x32')](getAssociatedResources('Trunks',_0x46926a[_0xe4e2('0x24')],_0xe4e2('0x3a')));_0x1f7bcc[_0xe4e2('0x32')](getAssociatedResources('IvrCampaigns',_0x46926a[_0xe4e2('0x24')],'Campaign'));_0x1f7bcc[_0xe4e2('0x32')](db[_0xe4e2('0x39')]['findAll'](queryAgents));break;case'agent':_0xcc0b12[_0x2ab435](_0xe4e2('0x2e'));_0xcc0b12[_0x2ab435](_0xe4e2('0x2f'));_0x1f7bcc[_0xe4e2('0x32')](_0x46926a['getVoiceQueues']({'attributes':['id',_0xe4e2('0x4')]}));_0x1f7bcc[_0xe4e2('0x32')](_0x46926a['getChatQueues']({'attributes':['id',_0xe4e2('0x4')]}));_0x1f7bcc[_0xe4e2('0x32')](_0x46926a[_0xe4e2('0x3d')]({'attributes':['id',_0xe4e2('0x4')]}));_0x1f7bcc[_0xe4e2('0x32')](_0x46926a[_0xe4e2('0x3e')]({'attributes':['id',_0xe4e2('0x4')]}));_0x1f7bcc[_0xe4e2('0x32')](_0x46926a['getMailQueues']({'attributes':['id',_0xe4e2('0x4')]}));_0x1f7bcc[_0xe4e2('0x32')](_0x46926a['getOpenchannelQueues']({'attributes':['id','name']}));_0x1f7bcc[_0xe4e2('0x32')](_0x46926a[_0xe4e2('0x3f')]({'attributes':['id',_0xe4e2('0x4')]}));break;}return BPromise['all'](_0x1f7bcc);}})[_0xe4e2('0xc')](function(_0xe5e682){if(_0xe5e682&&_0xe5e682[_0xe4e2('0x1f')]){for(var _0x30d958=0x0;_0x30d958<_0xe5e682['length'];_0x30d958+=0x1){for(var _0x1a271b=0x0;_0x1a271b<_0xe5e682[_0x30d958][_0xe4e2('0x1f')];_0x1a271b+=0x1){switch(_0x30d958){case 0x0:joinOrLeaveQueues(_0xcc0b12,_0x2ab435,_0xe4e2('0x40'),_0xe5e682[_0x30d958][_0x1a271b]);break;case 0x1:joinOrLeaveQueues(_0xcc0b12,_0x2ab435,_0xe4e2('0x41'),_0xe5e682[_0x30d958][_0x1a271b]);break;case 0x2:joinOrLeaveQueues(_0xcc0b12,_0x2ab435,'fax',_0xe5e682[_0x30d958][_0x1a271b]);break;case 0x3:joinOrLeaveQueues(_0xcc0b12,_0x2ab435,_0xe4e2('0x42'),_0xe5e682[_0x30d958][_0x1a271b]);break;case 0x4:joinOrLeaveQueues(_0xcc0b12,_0x2ab435,_0xe4e2('0x43'),_0xe5e682[_0x30d958][_0x1a271b]);break;case 0x5:joinOrLeaveQueues(_0xcc0b12,_0x2ab435,'openchannel',_0xe5e682[_0x30d958][_0x1a271b]);break;case 0x6:joinOrLeaveQueues(_0xcc0b12,_0x2ab435,_0xe4e2('0x44'),_0xe5e682[_0x30d958][_0x1a271b]);break;case 0x7:if(_0x5373c0[_0xe4e2('0x6')]!==_0xe4e2('0x7'))_0xcc0b12[_0x2ab435](util['format'](_0xe4e2('0x45'),_0xe5e682[_0x30d958][_0x1a271b][_0xe4e2('0x4')]));break;case 0x8:if(_0x5373c0[_0xe4e2('0x6')]!=='agent')_0xcc0b12[_0x2ab435](util['format'](_0xe4e2('0x46'),_0xe5e682[_0x30d958][_0x1a271b]['name']));break;case 0x9:if(_0x5373c0[_0xe4e2('0x6')]!=='agent')_0xcc0b12[_0x2ab435](util[_0xe4e2('0x1d')](_0xe4e2('0x47'),_0xe5e682[_0x30d958][_0x1a271b][_0xe4e2('0x8')],_0xe5e682[_0x30d958][_0x1a271b]['name']));break;case 0xa:_0xcc0b12[_0x2ab435](util[_0xe4e2('0x1d')]('user:%s',_0xe5e682[_0x30d958][_0x1a271b][_0xe4e2('0x4')]));break;}}}}})[_0xe4e2('0xc')](function(){if(_0x2ab435==='leave'){var _0x9d00fb=_['map'](_0x5373c0[_0xe4e2('0x26')],'id');return _0x5373c0[_0xe4e2('0x48')](_0x9d00fb)['then'](function(){for(var _0x297186=0x0;_0x297186<_0x9d00fb[_0xe4e2('0x1f')];_0x297186+=0x1){_0x2088b9[_0xe4e2('0x49')](_0xe4e2('0x4a'),{'ChatInteractionId':Number(_0x9d00fb[_0x297186]),'UserId':Number(_0x5373c0['id'])});}});}})[_0xe4e2('0xc')](function(){if(_0x2ab435===_0xe4e2('0x4b')){var _0x315255=_[_0xe4e2('0x19')](_0x5373c0[_0xe4e2('0x4c')],'id');return _0x5373c0['removeMailInteractions'](_0x315255)[_0xe4e2('0xc')](function(){for(var _0x172747=0x0;_0x172747<_0x315255[_0xe4e2('0x1f')];_0x172747+=0x1){_0x2088b9[_0xe4e2('0x49')](_0xe4e2('0x4d'),{'MailInteractionId':Number(_0x315255[_0x172747]),'UserId':Number(_0x5373c0['id'])});}});}})[_0xe4e2('0xc')](function(){if(_0x2ab435===_0xe4e2('0x4b')){var _0x135bcf=_[_0xe4e2('0x19')](_0x5373c0[_0xe4e2('0x29')],'id');return _0x5373c0[_0xe4e2('0x4e')](_0x135bcf)['then'](function(){for(var _0x17a350=0x0;_0x17a350<_0x135bcf[_0xe4e2('0x1f')];_0x17a350+=0x1){_0x2088b9[_0xe4e2('0x49')](_0xe4e2('0x4f'),{'FaxInteractionId':Number(_0x135bcf[_0x17a350]),'UserId':Number(_0x5373c0['id'])});}});}})['then'](function(){if(_0x2ab435===_0xe4e2('0x4b')){var _0x1250a2=_['map'](_0x5373c0[_0xe4e2('0x50')],'id');return _0x5373c0[_0xe4e2('0x51')](_0x1250a2)[_0xe4e2('0xc')](function(){for(var _0x317835=0x0;_0x317835<_0x1250a2['length'];_0x317835+=0x1){_0x2088b9[_0xe4e2('0x49')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x1250a2[_0x317835]),'UserId':Number(_0x5373c0['id'])});}});}})[_0xe4e2('0xc')](function(){if(_0x2ab435===_0xe4e2('0x4b')){var _0x1f22fb=_[_0xe4e2('0x19')](_0x5373c0[_0xe4e2('0x52')],'id');return _0x5373c0[_0xe4e2('0x53')](_0x1f22fb)[_0xe4e2('0xc')](function(){for(var _0x33c5f4=0x0;_0x33c5f4<_0x1f22fb[_0xe4e2('0x1f')];_0x33c5f4+=0x1){_0x2088b9[_0xe4e2('0x49')](_0xe4e2('0x54'),{'OpenchannelInteractionId':Number(_0x1f22fb[_0x33c5f4]),'UserId':Number(_0x5373c0['id'])});}});}})[_0xe4e2('0xc')](function(){if(_0x2ab435==='leave'){var _0x435dbc=_['map'](_0x5373c0['WhatsappInteractions'],'id');return _0x5373c0[_0xe4e2('0x55')](_0x435dbc)[_0xe4e2('0xc')](function(){for(var _0xa27bd1=0x0;_0xa27bd1<_0x435dbc['length'];_0xa27bd1+=0x1){_0x2088b9[_0xe4e2('0x49')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x435dbc[_0xa27bd1]),'UserId':Number(_0x5373c0['id'])});}});}})[_0xe4e2('0x56')](function(_0x9ba757){_0xcc0b12['log'](_0x9ba757);});}}function onDisconnect(_0x15eb35,_0x14f7da){joinOrLeave(_0x15eb35,'leave',_0x14f7da);}function onConnect(_0x3f2b39){joinOrLeave(_0x3f2b39,_0xe4e2('0x57'));}exports['default']=function(_0x476533){_0x476533['on'](_0xe4e2('0x58'),function(_0x9d8ef8){_0x9d8ef8[_0xe4e2('0x59')](0x0);_0x9d8ef8['address']=_0x9d8ef8[_0xe4e2('0x5a')][_0xe4e2('0x58')][_0xe4e2('0x5b')]+':'+_0x9d8ef8[_0xe4e2('0x5a')][_0xe4e2('0x58')][_0xe4e2('0x5c')];_0x9d8ef8[_0xe4e2('0x5d')]=new Date();_0x9d8ef8[_0xe4e2('0x5e')]=function(_0x380c31){console['log']('SocketIO\x20'+_0x9d8ef8['nsp'][_0xe4e2('0x4')]+'['+_0x9d8ef8[_0xe4e2('0x5f')]+']',_0x380c31);};_0x9d8ef8['on'](_0xe4e2('0x60'),function(){onDisconnect(_0x9d8ef8,_0x476533);_0x9d8ef8[_0xe4e2('0x5e')](_0xe4e2('0x61'));});onConnect(_0x9d8ef8);_0x9d8ef8[_0xe4e2('0x5e')](_0xe4e2('0x62'));});};
\ No newline at end of file
index 664f9d0..fa77547 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb77b=['ChatInteraction','afterUpdate','ChatMessage','newmessage','Sms','SmsInteraction','Whatsapp','WhatsappInteraction','closedinteraction','WhatsappMessage','Fax','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','Trigger,\x20%s','error','code','catch','get','channel','event','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','query','Sequelize','SELECT','UserId','find','name','fullname','internal','interface','format','agent','incomingmessage','outgoingmessage','opened','QueryTypes','contact','changed','closed','User','SIP/%s','default','length','hasOwnProperty','model','hook','toLowerCase','condition','jayson/promise','../logger','triggers','lodash','http','Chat','afterCreate','newinteraction'];(function(_0x451b5d,_0x2dd0e2){var _0x333e9=function(_0x15bf16){while(--_0x15bf16){_0x451b5d['push'](_0x451b5d['shift']());}};_0x333e9(++_0x2dd0e2);}(_0xb77b,0x184));var _0xbb77=function(_0x186ac3,_0x445715){_0x186ac3=_0x186ac3-0x0;var _0x23c7ad=_0xb77b[_0x186ac3];return _0x23c7ad;};'use strict';var util=require('util');var db=require('../../mysqldb')['db'];var jayson=require(_0xbb77('0x0'));var logger=require(_0xbb77('0x1'))(_0xbb77('0x2'));var _=require(_0xbb77('0x3'));var client=jayson['client'][_0xbb77('0x4')]({'port':0x232a});var triggers=[{'channel':_0xbb77('0x5'),'model':'ChatInteraction','event':_0xbb77('0x6'),'condition':_0xbb77('0x7'),'callback':afterCreate},{'channel':_0xbb77('0x5'),'model':_0xbb77('0x8'),'event':_0xbb77('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xbb77('0x5'),'model':_0xbb77('0xa'),'event':_0xbb77('0x6'),'condition':_0xbb77('0xb'),'callback':afterCreateMessage},{'channel':_0xbb77('0xc'),'model':_0xbb77('0xd'),'event':_0xbb77('0x6'),'condition':_0xbb77('0x7'),'callback':afterCreate},{'channel':_0xbb77('0xc'),'model':_0xbb77('0xd'),'event':_0xbb77('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Sms','model':'SmsMessage','event':_0xbb77('0x6'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xbb77('0xe'),'model':_0xbb77('0xf'),'event':_0xbb77('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xbb77('0xe'),'model':_0xbb77('0xf'),'event':_0xbb77('0x9'),'condition':_0xbb77('0x10'),'callback':afterUpdate},{'channel':_0xbb77('0xe'),'model':_0xbb77('0x11'),'event':_0xbb77('0x6'),'condition':_0xbb77('0xb'),'callback':afterCreateMessage},{'channel':'Fax','model':'FaxInteraction','event':_0xbb77('0x6'),'condition':_0xbb77('0x7'),'callback':afterCreate},{'channel':_0xbb77('0x12'),'model':'FaxInteraction','event':_0xbb77('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xbb77('0x12'),'model':'FaxMessage','event':_0xbb77('0x6'),'condition':_0xbb77('0xb'),'callback':afterCreateMessage},{'channel':'Mail','model':'MailInteraction','event':'afterCreate','condition':_0xbb77('0x7'),'callback':afterCreate},{'channel':_0xbb77('0x13'),'model':_0xbb77('0x14'),'event':_0xbb77('0x9'),'condition':_0xbb77('0x10'),'callback':afterUpdate},{'channel':_0xbb77('0x13'),'model':_0xbb77('0x15'),'event':_0xbb77('0x6'),'condition':_0xbb77('0xb'),'callback':afterCreateMessage},{'channel':_0xbb77('0x16'),'model':_0xbb77('0x17'),'event':_0xbb77('0x6'),'condition':_0xbb77('0x7'),'callback':afterCreate},{'channel':_0xbb77('0x16'),'model':_0xbb77('0x17'),'event':'afterUpdate','condition':_0xbb77('0x10'),'callback':afterUpdate},{'channel':_0xbb77('0x16'),'model':_0xbb77('0x18'),'event':_0xbb77('0x6'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x2b3704){return client[_0xbb77('0x19')](_0xbb77('0x1a'),_0x2b3704)[_0xbb77('0x1b')](function(_0x233303){logger['info'](_0xbb77('0x1c'),_0xbb77('0x1a'),_0x233303);if(_0x233303[_0xbb77('0x1d')]){if(_0x233303[_0xbb77('0x1d')][_0xbb77('0x1e')]===0x1f4){logger[_0xbb77('0x1d')](_0xbb77('0x1c'),_0xbb77('0x1a'),_0x233303[_0xbb77('0x1d')]);}}})[_0xbb77('0x1f')](function(_0x45b6ac){logger[_0xbb77('0x1d')](_0xbb77('0x1c'),_0xbb77('0x1a'),_0x45b6ac);});}function afterCreateMessage(_0x1f73cb,_0x6901bb){return function(_0x47bf63,_0x2e983f){_0x47bf63=_0x47bf63[_0xbb77('0x20')]({'plain':!![]});_0x47bf63[_0xbb77('0x21')]=_0x1f73cb;_0x47bf63[_0xbb77('0x22')]=_0x47bf63[_0xbb77('0x23')];var _0x2d383e=_0xbb77('0x24')+_0x47bf63[_0xbb77('0x25')];return db[_0xbb77('0x26')][_0xbb77('0x27')](_0x2d383e,{'type':db[_0xbb77('0x28')]['QueryTypes'][_0xbb77('0x29')],'raw':!![]})[_0xbb77('0x1b')](function(_0x52c6d5){return _0x52c6d5;})[_0xbb77('0x1b')](function(_0x958223){if(_0x958223){_0x47bf63['contact']=_0x958223[0x0];}if(_0x47bf63[_0xbb77('0x2a')]){return db['User'][_0xbb77('0x2b')]({'where':{'id':_0x47bf63['UserId']},'attributes':['id',_0xbb77('0x2c'),_0xbb77('0x2d'),'email',_0xbb77('0x2e')],'raw':!![]})[_0xbb77('0x1b')](function(_0x4e7b9f){_0x47bf63[_0xbb77('0x2f')]=util[_0xbb77('0x30')]('SIP/%s',_0x4e7b9f[_0xbb77('0x2c')]);_0x47bf63[_0xbb77('0x21')]=_0x1f73cb;_0x47bf63[_0xbb77('0x31')]=_0x4e7b9f;return request({'event':_0xbb77('0x32'),'message':_0x47bf63});})[_0xbb77('0x1f')](function(_0x36132a){console[_0xbb77('0x1d')](_0x36132a);});}else{return request({'event':_0xbb77('0x33'),'message':_0x47bf63});}});};}function afterCreate(_0x28c964,_0x2eedac){return function(_0x135763,_0x4abb14){_0x135763=_0x135763['get']({'plain':!![]});_0x135763[_0xbb77('0x21')]=_0x28c964;_0x135763[_0xbb77('0x22')]=_0xbb77('0x34');var _0x232381=_0xbb77('0x24')+_0x135763['ContactId'];return db['sequelize'][_0xbb77('0x27')](_0x232381,{'type':db[_0xbb77('0x28')][_0xbb77('0x35')][_0xbb77('0x29')],'raw':!![]})['then'](function(_0x12ab89){return _0x12ab89;})[_0xbb77('0x1b')](function(_0x48062b){if(_0x48062b){_0x135763[_0xbb77('0x36')]=_0x48062b[0x0];}return request({'event':_0x2eedac,'message':_0x135763});});};}function afterUpdate(_0x4a08dd,_0x520b4d){return function(_0x4a7c0a,_0xf6f979){if(_0x4a7c0a[_0xbb77('0x37')](_0xbb77('0x38'))&&_0x4a7c0a[_0xbb77('0x38')]){_0x4a7c0a=_0x4a7c0a[_0xbb77('0x20')]({'plain':!![]});_0x4a7c0a[_0xbb77('0x21')]=_0x4a08dd;_0x4a7c0a[_0xbb77('0x22')]=_0xbb77('0x38');var _0xe62c81='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4a7c0a['ContactId'];return db[_0xbb77('0x26')][_0xbb77('0x27')](_0xe62c81,{'type':db[_0xbb77('0x28')][_0xbb77('0x35')][_0xbb77('0x29')],'raw':!![]})[_0xbb77('0x1b')](function(_0x205861){return _0x205861;})['then'](function(_0x13ac7a){if(_0x13ac7a){_0x4a7c0a[_0xbb77('0x36')]=_0x13ac7a[0x0];}if(_0x4a7c0a['UserId']){return db[_0xbb77('0x39')][_0xbb77('0x2b')]({'where':{'id':_0x4a7c0a[_0xbb77('0x2a')]},'attributes':['id','name',_0xbb77('0x2d'),'email',_0xbb77('0x2e')],'raw':!![]})['then'](function(_0xf4bb0a){_0x4a7c0a[_0xbb77('0x2f')]=util[_0xbb77('0x30')](_0xbb77('0x3a'),_0xf4bb0a[_0xbb77('0x2c')]);_0x4a7c0a[_0xbb77('0x31')]=_0xf4bb0a;return request({'event':_0x520b4d,'message':_0x4a7c0a});})[_0xbb77('0x1f')](function(_0x3531c4){console[_0xbb77('0x1d')](_0x3531c4);});}else{return request({'event':_0x520b4d,'message':_0x4a7c0a});}});}};}exports[_0xbb77('0x3b')]=function(){for(var _0xb38fc1=0x0;_0xb38fc1<triggers[_0xbb77('0x3c')];_0xb38fc1+=0x1){if(db[_0xbb77('0x3d')](triggers[_0xb38fc1][_0xbb77('0x3e')])){db[triggers[_0xb38fc1][_0xbb77('0x3e')]][_0xbb77('0x3f')](triggers[_0xb38fc1][_0xbb77('0x22')],triggers[_0xb38fc1]['callback'](triggers[_0xb38fc1][_0xbb77('0x21')][_0xbb77('0x40')](),triggers[_0xb38fc1][_0xbb77('0x41')]));}}};
\ No newline at end of file
+var _0x09ff=['../logger','triggers','client','Chat','afterCreate','ChatInteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','SmsInteraction','Sms','SmsMessage','Whatsapp','WhatsappInteraction','newinteraction','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','request','EventManager','info','Trigger,\x20%s','error','code','catch','get','channel','motionChannel','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','query','QueryTypes','SELECT','then','contact','UserId','User','find','name','fullname','internal','interface','SIP/%s','agent','incomingmessage','outgoingmessage','opened','ContactId','Sequelize','changed','closed','substatus','sequelize','email','format','default','length','model','hook','event','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise'];(function(_0x535d2e,_0x5392e1){var _0x1bdca5=function(_0x920f8b){while(--_0x920f8b){_0x535d2e['push'](_0x535d2e['shift']());}};_0x1bdca5(++_0x5392e1);}(_0x09ff,0x165));var _0xf09f=function(_0x2425b2,_0x23a0fd){_0x2425b2=_0x2425b2-0x0;var _0x31aeb3=_0x09ff[_0x2425b2];return _0x31aeb3;};'use strict';var util=require(_0xf09f('0x0'));var db=require(_0xf09f('0x1'))['db'];var jayson=require(_0xf09f('0x2'));var logger=require(_0xf09f('0x3'))(_0xf09f('0x4'));var _=require('lodash');var client=jayson[_0xf09f('0x5')]['http']({'port':0x232a});var triggers=[{'channel':_0xf09f('0x6'),'model':'ChatInteraction','event':_0xf09f('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xf09f('0x6'),'model':_0xf09f('0x8'),'event':_0xf09f('0x9'),'condition':_0xf09f('0xa'),'callback':afterUpdate},{'channel':'Chat','model':_0xf09f('0xb'),'event':_0xf09f('0x7'),'condition':_0xf09f('0xc'),'callback':afterCreateMessage},{'channel':'Sms','model':_0xf09f('0xd'),'event':_0xf09f('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xf09f('0xe'),'model':_0xf09f('0xd'),'event':_0xf09f('0x9'),'condition':_0xf09f('0xa'),'callback':afterUpdate},{'channel':_0xf09f('0xe'),'model':_0xf09f('0xf'),'event':_0xf09f('0x7'),'condition':_0xf09f('0xc'),'callback':afterCreateMessage},{'channel':_0xf09f('0x10'),'model':_0xf09f('0x11'),'event':_0xf09f('0x7'),'condition':_0xf09f('0x12'),'callback':afterCreate},{'channel':'Whatsapp','model':_0xf09f('0x11'),'event':_0xf09f('0x9'),'condition':_0xf09f('0xa'),'callback':afterUpdate},{'channel':_0xf09f('0x10'),'model':'WhatsappMessage','event':_0xf09f('0x7'),'condition':_0xf09f('0xc'),'callback':afterCreateMessage},{'channel':_0xf09f('0x13'),'model':_0xf09f('0x14'),'event':'afterCreate','condition':_0xf09f('0x12'),'callback':afterCreate},{'channel':_0xf09f('0x13'),'model':_0xf09f('0x14'),'event':'afterUpdate','condition':_0xf09f('0xa'),'callback':afterUpdate},{'channel':_0xf09f('0x13'),'model':_0xf09f('0x15'),'event':_0xf09f('0x7'),'condition':_0xf09f('0xc'),'callback':afterCreateMessage},{'channel':_0xf09f('0x16'),'model':'MailInteraction','event':_0xf09f('0x7'),'condition':_0xf09f('0x12'),'callback':afterCreate},{'channel':_0xf09f('0x16'),'model':_0xf09f('0x17'),'event':_0xf09f('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Mail','model':_0xf09f('0x18'),'event':_0xf09f('0x7'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xf09f('0x19'),'model':_0xf09f('0x1a'),'event':_0xf09f('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xf09f('0x19'),'model':'OpenchannelInteraction','event':_0xf09f('0x9'),'condition':_0xf09f('0xa'),'callback':afterUpdate},{'channel':_0xf09f('0x19'),'model':'OpenchannelMessage','event':_0xf09f('0x7'),'condition':_0xf09f('0xc'),'callback':afterCreateMessage}];function request(_0x14f7f0){return client[_0xf09f('0x1b')](_0xf09f('0x1c'),_0x14f7f0)['then'](function(_0x3de752){logger[_0xf09f('0x1d')](_0xf09f('0x1e'),_0xf09f('0x1c'),_0x3de752);if(_0x3de752[_0xf09f('0x1f')]){if(_0x3de752[_0xf09f('0x1f')][_0xf09f('0x20')]===0x1f4){logger[_0xf09f('0x1f')](_0xf09f('0x1e'),_0xf09f('0x1c'),_0x3de752['error']);}}})[_0xf09f('0x21')](function(_0x4e9736){logger[_0xf09f('0x1f')](_0xf09f('0x1e'),_0xf09f('0x1c'),_0x4e9736);});}function afterCreateMessage(_0x2db04d,_0x39e6e7){return function(_0x51d967,_0x128c3a){_0x51d967=_0x51d967[_0xf09f('0x22')]({'plain':!![]});_0x51d967[_0xf09f('0x23')]=_0x2db04d;_0x51d967[_0xf09f('0x24')]=_0x2db04d;_0x51d967['event']=_0x51d967[_0xf09f('0x25')];var _0x42c1a0=_0xf09f('0x26')+_0x51d967['ContactId'];return db['sequelize'][_0xf09f('0x27')](_0x42c1a0,{'type':db['Sequelize'][_0xf09f('0x28')][_0xf09f('0x29')],'raw':!![]})[_0xf09f('0x2a')](function(_0x3a9e65){return _0x3a9e65;})[_0xf09f('0x2a')](function(_0x3baeb8){if(_0x3baeb8){_0x51d967[_0xf09f('0x2b')]=_0x3baeb8[0x0];}if(_0x51d967[_0xf09f('0x2c')]){return db[_0xf09f('0x2d')][_0xf09f('0x2e')]({'where':{'id':_0x51d967[_0xf09f('0x2c')]},'attributes':['id',_0xf09f('0x2f'),_0xf09f('0x30'),'email',_0xf09f('0x31')],'raw':!![]})[_0xf09f('0x2a')](function(_0x5c3335){_0x51d967[_0xf09f('0x32')]=util['format'](_0xf09f('0x33'),_0x5c3335['name']);_0x51d967[_0xf09f('0x23')]=_0x2db04d;_0x51d967[_0xf09f('0x34')]=_0x5c3335;return request({'event':_0xf09f('0x35'),'message':_0x51d967});})[_0xf09f('0x21')](function(_0x51c82e){console['error'](_0x51c82e);});}else{return request({'event':_0xf09f('0x36'),'message':_0x51d967});}});};}function afterCreate(_0x549de0,_0xb7a7a){return function(_0x30f4ce,_0x48e90b){_0x30f4ce=_0x30f4ce[_0xf09f('0x22')]({'plain':!![]});_0x30f4ce['channel']=_0x549de0;_0x30f4ce['motionChannel']=_0x549de0;_0x30f4ce['event']=_0xf09f('0x37');var _0x39443a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x30f4ce[_0xf09f('0x38')];return db['sequelize'][_0xf09f('0x27')](_0x39443a,{'type':db[_0xf09f('0x39')]['QueryTypes'][_0xf09f('0x29')],'raw':!![]})[_0xf09f('0x2a')](function(_0x50cd58){return _0x50cd58;})['then'](function(_0x580b01){if(_0x580b01){_0x30f4ce[_0xf09f('0x2b')]=_0x580b01[0x0];}return request({'event':_0xb7a7a,'message':_0x30f4ce});});};}function afterUpdate(_0x523d1f){return function(_0xcc7055){var _0x2d95c0=_0xcc7055[_0xf09f('0x3a')]('closed')&&_0xcc7055[_0xf09f('0x3b')];var _0x9a445e=_0xcc7055[_0xf09f('0x3a')](_0xf09f('0x3c'));if(_0x2d95c0||_0x9a445e){var _0xb5aa1e=_0x2d95c0?'closedinteraction':_0xf09f('0x3c');var _0x1a3c6a=_0xcc7055[_0xf09f('0x22')]({'plain':!![]});_0x1a3c6a[_0xf09f('0x23')]=_0x523d1f;_0x1a3c6a[_0xf09f('0x24')]=_0x523d1f;_0x1a3c6a['event']=_0x2d95c0?_0xf09f('0x3b'):_0xf09f('0x3c');var _0x471c53='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1a3c6a[_0xf09f('0x38')];return db[_0xf09f('0x3d')]['query'](_0x471c53,{'type':db[_0xf09f('0x39')][_0xf09f('0x28')][_0xf09f('0x29')],'raw':!![]})[_0xf09f('0x2a')](function(_0x132a05){if(_0x132a05){_0x1a3c6a[_0xf09f('0x2b')]=_0x132a05[0x0];}if(_0x1a3c6a[_0xf09f('0x2c')]){return db[_0xf09f('0x2d')][_0xf09f('0x2e')]({'where':{'id':_0x1a3c6a[_0xf09f('0x2c')]},'attributes':['id',_0xf09f('0x2f'),_0xf09f('0x30'),_0xf09f('0x3e'),'internal'],'raw':!![]})[_0xf09f('0x2a')](function(_0x36b13d){_0x1a3c6a['interface']=util[_0xf09f('0x3f')](_0xf09f('0x33'),_0x36b13d[_0xf09f('0x2f')]);_0x1a3c6a[_0xf09f('0x34')]=_0x36b13d;return request({'event':_0xb5aa1e,'message':_0x1a3c6a});})['catch'](function(_0x4f9d4d){console[_0xf09f('0x1f')](_0x4f9d4d);});}else{return request({'event':_0xb5aa1e,'message':_0x1a3c6a});}});}};}exports[_0xf09f('0x40')]=function(){for(var _0x3552d4=0x0;_0x3552d4<triggers[_0xf09f('0x41')];_0x3552d4+=0x1){if(db['hasOwnProperty'](triggers[_0x3552d4][_0xf09f('0x42')])){db[triggers[_0x3552d4][_0xf09f('0x42')]][_0xf09f('0x43')](triggers[_0x3552d4][_0xf09f('0x44')],triggers[_0x3552d4][_0xf09f('0x45')](triggers[_0x3552d4]['channel'][_0xf09f('0x46')](),triggers[_0x3552d4][_0xf09f('0x47')]));}}};
\ No newline at end of file
index 239255f..7098e99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf806=['count','agent','then','agents','Maximum\x20login\x20has\x20been\x20reached','lodash','bluebird','../mysqldb','./license/util','voice','fax','sms','whatsapp','openchannel','includes','blockedAt','updateAttributes','getLicense','role','User'];(function(_0x19a201,_0x4c3ac1){var _0x5487f1=function(_0x4ee933){while(--_0x4ee933){_0x19a201['push'](_0x19a201['shift']());}};_0x5487f1(++_0x4c3ac1);}(_0xf806,0x16d));var _0x6f80=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf806[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6f80('0x0'));var BPromise=require(_0x6f80('0x1'));var db=require(_0x6f80('0x2'))['db'];var util=require(_0x6f80('0x3'));var channels=[_0x6f80('0x4'),'mail','chat',_0x6f80('0x5'),_0x6f80('0x6'),_0x6f80('0x7'),_0x6f80('0x8')];exports['getChannels']=function(){return channels;};exports['isValidChannel']=function(_0x249a08){_0x249a08=_0x249a08['toLowerCase']();return _[_0x6f80('0x9')](channels,_0x249a08);};exports['clearBlockUser']=function(_0x553f63,_0x187834,_0x7744d9,_0x162534){var _0x26f1da={'loginAttempts':_0x187834,'blocked':_0x7744d9};if(!_['isUndefined'](_0x162534)){_0x26f1da[_0x6f80('0xa')]=_0x162534;}return _0x553f63[_0x6f80('0xb')](_0x26f1da);};exports[_0x6f80('0xc')]=function(_0x52d910){return new BPromise(function(_0x39d89e,_0xdbdcc6){var _0x503187=0x0;if(_0x52d910[_0x6f80('0xd')]!=='agent'){_0x39d89e(_0x52d910);}db[_0x6f80('0xe')][_0x6f80('0xf')]({'where':{'role':_0x6f80('0x10'),'online':!![],'id':{'$ne':_0x52d910['id']}}})[_0x6f80('0x11')](function(_0x5a9541){_0x503187=_0x5a9541;return util[_0x6f80('0xc')]();})['then'](function(_0x42b787){if(_0x42b787&&_0x42b787[_0x6f80('0x12')]&&_0x503187>=_0x42b787['agents']){throw Error(_0x6f80('0x13'));}_0x39d89e(_0x52d910);})['catch'](function(_0x401687){_0xdbdcc6(_0x401687);});});};
\ No newline at end of file
+var _0x750f=['getLicense','agent','then','agents','catch','lodash','bluebird','../mysqldb','voice','mail','fax','sms','whatsapp','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x750f,0x17f));var _0xf750=function(_0x459b6,_0x207e24){_0x459b6=_0x459b6-0x0;var _0x3b8de5=_0x750f[_0x459b6];return _0x3b8de5;};'use strict';var _=require(_0xf750('0x0'));var BPromise=require(_0xf750('0x1'));var db=require(_0xf750('0x2'))['db'];var util=require('./license/util');var channels=[_0xf750('0x3'),_0xf750('0x4'),'chat',_0xf750('0x5'),_0xf750('0x6'),_0xf750('0x7'),'openchannel'];exports[_0xf750('0x8')]=function(){return channels;};exports[_0xf750('0x9')]=function(_0x4279e5){_0x4279e5=_0x4279e5[_0xf750('0xa')]();return _[_0xf750('0xb')](channels,_0x4279e5);};exports[_0xf750('0xc')]=function(_0x10414d,_0x276347,_0x1abc63,_0x5460c9){var _0x307e26={'loginAttempts':_0x276347,'blocked':_0x1abc63};if(!_[_0xf750('0xd')](_0x5460c9)){_0x307e26[_0xf750('0xe')]=_0x5460c9;}return _0x10414d[_0xf750('0xf')](_0x307e26);};exports[_0xf750('0x10')]=function(_0x54e23c){return new BPromise(function(_0x37f65e,_0x435467){var _0x25da68=0x0;if(_0x54e23c['role']!==_0xf750('0x11')){_0x37f65e(_0x54e23c);}db['User']['count']({'where':{'role':_0xf750('0x11'),'online':!![],'id':{'$ne':_0x54e23c['id']}}})[_0xf750('0x12')](function(_0x5ab6d5){_0x25da68=_0x5ab6d5;return util['getLicense']();})[_0xf750('0x12')](function(_0x239eb0){if(_0x239eb0&&_0x239eb0[_0xf750('0x13')]&&_0x25da68>=_0x239eb0[_0xf750('0x13')]){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x37f65e(_0x54e23c);})[_0xf750('0x14')](function(_0x27b2b2){_0x435467(_0x27b2b2);});});};
\ No newline at end of file
index 2bcca8e..841b1de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fdc=['send','404','status','render','json'];(function(_0x560f07,_0x16b417){var _0x49a714=function(_0x2815ec){while(--_0x2815ec){_0x560f07['push'](_0x560f07['shift']());}};_0x49a714(++_0x16b417);}(_0x9fdc,0xce));var _0xc9fd=function(_0x5c3ae9,_0x450f9a){_0x5c3ae9=_0x5c3ae9-0x0;var _0x3f5950=_0x9fdc[_0x5c3ae9];return _0x3f5950;};'use strict';module['exports'][0x194]=function pageNotFound(_0x27b3ae,_0x559275){var _0x29e177=_0xc9fd('0x0');var _0x3c6a83=0x194;var _0x5a31b9={'status':_0x3c6a83};_0x559275[_0xc9fd('0x1')](_0x5a31b9[_0xc9fd('0x1')]);_0x559275[_0xc9fd('0x2')](_0x29e177,{},function(_0x493379,_0x31be0b){if(_0x493379){return _0x559275[_0xc9fd('0x1')](_0x5a31b9['status'])[_0xc9fd('0x3')](_0x5a31b9);}_0x559275[_0xc9fd('0x4')](_0x31be0b);});};
\ No newline at end of file
+var _0x2d13=['status','json','send','exports','404'];(function(_0x51fe5f,_0x1d8632){var _0x4abce9=function(_0x34afb7){while(--_0x34afb7){_0x51fe5f['push'](_0x51fe5f['shift']());}};_0x4abce9(++_0x1d8632);}(_0x2d13,0xcb));var _0x32d1=function(_0x5e5671,_0x457d56){_0x5e5671=_0x5e5671-0x0;var _0x3035f8=_0x2d13[_0x5e5671];return _0x3035f8;};'use strict';module[_0x32d1('0x0')][0x194]=function pageNotFound(_0x37c72b,_0x201ef0){var _0x2386fa=_0x32d1('0x1');var _0x96c6e7=0x194;var _0x4a39f9={'status':_0x96c6e7};_0x201ef0[_0x32d1('0x2')](_0x4a39f9[_0x32d1('0x2')]);_0x201ef0['render'](_0x2386fa,{},function(_0xa34d74,_0x3aa1ee){if(_0xa34d74){return _0x201ef0['status'](_0x4a39f9['status'])[_0x32d1('0x3')](_0x4a39f9);}_0x201ef0[_0x32d1('0x4')](_0x3aa1ee);});};
\ 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 a65a775..a8b6681 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb447=['user_has_openchannel_interactions','OpenchannelQueueId','team_has_openchannel_queues','ProactiveActions','ChatMessage','user_has_chat_websites','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','ChatGroupId','CompanyId','Hoppers','JscriptySessionReport','OpenchannelInteractions','Company','cm_contact_has_tags','Campaign','CampaignId','All','OneAll','AutomationAllId','Any','AutomationAnyId','Actions','AutomationId','ParentId','Intervals','MailApplications','SmsApplications','Mohs','sms_interaction_has_tags','AllConditions','AllCondition','TriggerAllId','AnyCondition','TriggerAnyId','TriggerId','Fields','CustomReportId','MetricId','AccountId','SubjectId','Descriptions','FieldId','Subject','Field','VariableId','Configurations','SugarcrmField','Subjects','DescriptionId','DeskField','Description','VtigerAccount','VtigerField','ServicenowAccount','ServicenowConfiguration','Dynamics365Configuration','FreshsalesConfiguration','FromId','ToId','SessionId','SmsQueueReport','ProjectId','team_has_fax_queues','FaxQueues','OpenchannelQueues','team_has_whatsapp_queues','WhatsappQueues','HopperBlacks','TrunkBackup','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromUserId','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','FromChatWebsiteId','FromAgent','ToUserId','ToChatQueueId','ToChatWebsiteId','ToAccount','FromFaxAccountId','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','Queues','VoicePrefix','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappAccount','WhatsappInteractionId','whatsapp_interaction_has_tags','user_has_whatsapp_interactions','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','exports','../config/environment','sequelize','jstz','determine','defaultsDeep','motion2','xcall','xC@LL1234','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','database','password','options','username','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','VoiceDialReport','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','MemberReport','../api/memberReport/memberReport.model','Trunk','VoiceTransferReport','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','../api/userSmsQueue/userSmsQueue.model','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/mailServerIn/mailServerIn.model','MailServerOut','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','../api/faxAccount/faxAccount.model','../api/faxApplication/faxApplication.model','FaxInteraction','FaxMessage','FaxQueue','../api/faxQueue/faxQueue.model','SmsAccount','../api/smsApplication/smsApplication.model','SmsInteraction','SmsMessage','../api/smsMessage/smsMessage.model','../api/smsQueue/smsQueue.model','OpenchannelAccount','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','ReportAgentPreview','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','VoiceQueuesLog','Schedule','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','AnalyticTreeReport','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','../api/intServicenowAccount/intServicenowAccount.model','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','../api/jscriptySessionReport/jscriptySessionReport.model','../api/smsQueueReport/smsQueueReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','../api/userProfileResource/userProfileResource.model','../api/userNotification/userNotification.model','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','hasOne','VoiceMail','UserId','hasMany','Recordings','UserVoiceQueueRt','Extensions','HopperFinals','HopperHistory','ChatInteractions','SmsInteractions','FaxInteractions','WhatsappInteraction','UserNotifications','SenderId','belongsTo','UserProfile','userProfileId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','CmList','Lists','cm_user_has_lists','user_has_teams','MailInteractions','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','WhatsappInteractions','VoiceQueue','UserVoiceQueue','MailQueues','ChatQueues','UserFaxQueue','SmsQueue','SmsQueues','UserSmsQueue','UserOpenchannelQueue','VoicePrefixes','user_has_voice_prefixes','ChatWebsites','FaxAccount','user_has_mail_accounts','OpenchannelAccounts','SmsAccounts','user_has_sms_accounts','user_has_whatsapp_accounts','user_has_square_projects','SpiedAgents','ChanSpyId','VoiceContext','cascade','Sounds','moh_has_sounds','Members','VoiceQueueId','HopperHistories','JscriptySessions','TrunkId','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Teams','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','mailboxuser','mailbox','uniqueid','AgentReports','Contact','ContactId','MailServerIn','MailAccountId','Imap','Dispositions','Messages','Interactions','ListId','MailInteractionId','Account','Owner','mail_interaction_has_tags','ThroughTags','Users','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessage','ChatOfflineMessageId','restrict','TagId','List','Dashboard','Items','FaxAccountId','Answers','FaxApplication','Applications','Exntensions','user_has_fax_accounts','FaxInteractionId','fax_interaction_has_tags','AttachmentId','FaxQueueReport','SmsAccountId','SmsApplication','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','user_has_openchannel_accounts','OpenchannelInteractionId','openchannel_interaction_has_tags','Tags'];(function(_0x381b5c,_0x1ac364){var _0x56d4c9=function(_0xb3a005){while(--_0xb3a005){_0x381b5c['push'](_0x381b5c['shift']());}};_0x56d4c9(++_0x1ac364);}(_0xb447,0x73));var _0x7b44=function(_0x2ea143,_0x321631){_0x2ea143=_0x2ea143-0x0;var _0x20c848=_0xb447[_0x2ea143];return _0x20c848;};'use strict';var config=require(_0x7b44('0x0'));var Sequelize=require(_0x7b44('0x1'));var _=require('lodash');var jstz=require(_0x7b44('0x2'));var timezone=jstz[_0x7b44('0x3')]();config[_0x7b44('0x1')]=_[_0x7b44('0x4')](config[_0x7b44('0x1')],{'database':_0x7b44('0x5'),'username':_0x7b44('0x6'),'password':_0x7b44('0x7'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x7b44('0x8'),'dialectOptions':{'charset':_0x7b44('0x9')},'logging':![],'timezone':timezone[_0x7b44('0xa')](),'define':{'charset':_0x7b44('0xb'),'collate':_0x7b44('0xc')}}});config['sequelizeHistory']=_[_0x7b44('0x4')](config[_0x7b44('0xd')],{'database':_0x7b44('0x5'),'username':_0x7b44('0x6'),'password':_0x7b44('0x7'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x7b44('0x8'),'dialectOptions':{'charset':_0x7b44('0x9')},'logging':![],'timezone':timezone[_0x7b44('0xa')](),'define':{'charset':_0x7b44('0xb'),'collate':_0x7b44('0xc')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x7b44('0x1')][_0x7b44('0xe')],config[_0x7b44('0x1')]['username'],config[_0x7b44('0x1')][_0x7b44('0xf')],config['sequelize'][_0x7b44('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x7b44('0xd')][_0x7b44('0xe')],config[_0x7b44('0xd')][_0x7b44('0x11')],config[_0x7b44('0xd')][_0x7b44('0xf')],config[_0x7b44('0xd')]['options'])};db[_0x7b44('0x12')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x14'));db[_0x7b44('0x15')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x16'));db['VoiceContext']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x17'));db[_0x7b44('0x18')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x19'));db[_0x7b44('0x1a')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x1b'));db['VoiceQueue']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x1c'));db[_0x7b44('0x1d')]=db[_0x7b44('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db['ScreenRecording']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x1e'));db['VoiceMail']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x1f'));db[_0x7b44('0x20')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x21'));db[_0x7b44('0x22')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/voiceCallReport/voiceCallReport.model');db[_0x7b44('0x23')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/voiceDialReport/voiceDialReport.model');db[_0x7b44('0x24')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x25'));db[_0x7b44('0x26')]=db['sequelize']['import']('../api/voiceQueueReport/voiceQueueReport.model');db[_0x7b44('0x27')]=db['sequelize']['import'](_0x7b44('0x28'));db[_0x7b44('0x29')]=db['sequelize'][_0x7b44('0x13')]('../api/trunk/trunk.model');db[_0x7b44('0x2a')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/voiceTransferReport/voiceTransferReport.model');db['UserVoiceQueueRt']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x2b'));db['UserVoiceQueue']=db[_0x7b44('0x1')]['import']('../api/userVoiceQueue/userVoiceQueue.model');db[_0x7b44('0x2c')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x2d'));db[_0x7b44('0x2e')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x2f'));db['UserFaxQueue']=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/userFaxQueue/userFaxQueue.model');db['UserSmsQueue']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x30'));db['UserOpenchannelQueue']=db[_0x7b44('0x1')]['import'](_0x7b44('0x31'));db[_0x7b44('0x32')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/userWhatsappQueue/userWhatsappQueue.model');db['MailServerIn']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x33'));db[_0x7b44('0x34')]=db[_0x7b44('0x1')]['import']('../api/mailServerOut/mailServerOut.model');db[_0x7b44('0x35')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x36'));db[_0x7b44('0x37')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/mailQueue/mailQueue.model');db[_0x7b44('0x38')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x39'));db[_0x7b44('0x3a')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x3b'));db[_0x7b44('0x3c')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x3d'));db[_0x7b44('0x3e')]=db['sequelize']['import'](_0x7b44('0x3f'));db[_0x7b44('0x40')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x41'));db['Dashboard']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x42'));db[_0x7b44('0x43')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x44'));db['FaxAccount']=db['sequelize']['import'](_0x7b44('0x45'));db['FaxApplication']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x46'));db[_0x7b44('0x47')]=db['sequelize'][_0x7b44('0x13')]('../api/faxInteraction/faxInteraction.model');db[_0x7b44('0x48')]=db[_0x7b44('0x1')]['import']('../api/faxMessage/faxMessage.model');db[_0x7b44('0x49')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x4a'));db['FaxQueueReport']=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/faxQueueReport/faxQueueReport.model');db[_0x7b44('0x4b')]=db[_0x7b44('0x1')]['import']('../api/smsAccount/smsAccount.model');db['SmsApplication']=db[_0x7b44('0x1')]['import'](_0x7b44('0x4c'));db[_0x7b44('0x4d')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/smsInteraction/smsInteraction.model');db[_0x7b44('0x4e')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x4f'));db['SmsQueue']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x50'));db[_0x7b44('0x51')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/openchannelAccount/openchannelAccount.model');db[_0x7b44('0x52')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x53'));db[_0x7b44('0x54')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x55'));db[_0x7b44('0x56')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x57'));db[_0x7b44('0x58')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x59'));db[_0x7b44('0x5a')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x5b'));db[_0x7b44('0x5c')]=db['sequelize']['import'](_0x7b44('0x5d'));db[_0x7b44('0x5e')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x5f'));db[_0x7b44('0x60')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x61'));db['ChatMessage']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x62'));db['ChatOfflineMessage']=db[_0x7b44('0x1')]['import'](_0x7b44('0x63'));db[_0x7b44('0x64')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/chatQueue/chatQueue.model');db[_0x7b44('0x65')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x66'));db[_0x7b44('0x67')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x68'));db[_0x7b44('0x69')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x6a'));db['CmContact']=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/cmContact/cmContact.model');db[_0x7b44('0x6b')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x6c'));db[_0x7b44('0x6d')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x6e'));db[_0x7b44('0x6f')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x70'));db[_0x7b44('0x71')]=db['sequelize'][_0x7b44('0x13')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x7b44('0x72')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/reportAgentPreview/reportAgentPreview.model');db[_0x7b44('0x73')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x74'));db[_0x7b44('0x75')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x76'));db[_0x7b44('0x77')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x78'));db[_0x7b44('0x79')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x7a'));db[_0x7b44('0x7b')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x7c'));db[_0x7b44('0x7d')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x7e'));db[_0x7b44('0x7f')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x80'));db[_0x7b44('0x81')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x82'));db[_0x7b44('0x83')]=db[_0x7b44('0x1')]['import']('../api/cdr/cdr.model');db[_0x7b44('0x84')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0x7b44('0x85')]=db['sequelize']['import']('../api/schedule/schedule.model');db[_0x7b44('0x86')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x87'));db[_0x7b44('0x88')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x89'));db[_0x7b44('0x8a')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x8b'));db[_0x7b44('0x8c')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x8d'));db[_0x7b44('0x8e')]=db[_0x7b44('0x1')]['import']('../api/variable/variable.model');db[_0x7b44('0x8f')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x90'));db[_0x7b44('0x91')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x92'));db[_0x7b44('0x93')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x94'));db[_0x7b44('0x95')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0x7b44('0x96')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x97'));db[_0x7b44('0x98')]=db['sequelize']['import']('../api/analyticMetric/analyticMetric.model');db[_0x7b44('0x99')]=db['sequelize'][_0x7b44('0x13')]('../api/analyticFieldReport/analyticFieldReport.model');db[_0x7b44('0x9a')]=db['sequelize'][_0x7b44('0x13')]('../api/analyticTreeReport/analyticTreeReport.model');db[_0x7b44('0x9b')]=db[_0x7b44('0x1')]['import'](_0x7b44('0x9c'));db[_0x7b44('0x9d')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0x9e'));db[_0x7b44('0x9f')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/intSalesforceField/intSalesforceField.model');db[_0x7b44('0xa0')]=db[_0x7b44('0x1')]['import'](_0x7b44('0xa1'));db[_0x7b44('0xa2')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xa3'));db['SugarcrmField']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xa4'));db[_0x7b44('0xa5')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xa6'));db[_0x7b44('0xa7')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xa8'));db['DeskField']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xa9'));db[_0x7b44('0xaa')]=db[_0x7b44('0x1')]['import'](_0x7b44('0xab'));db[_0x7b44('0xac')]=db['sequelize']['import'](_0x7b44('0xad'));db[_0x7b44('0xae')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xaf'));db[_0x7b44('0xb0')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xb1'));db[_0x7b44('0xb2')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db[_0x7b44('0xb3')]=db[_0x7b44('0x1')]['import'](_0x7b44('0xb4'));db[_0x7b44('0xb5')]=db[_0x7b44('0x1')]['import']('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0x7b44('0xb6')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xb7'));db[_0x7b44('0xb8')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/intFreshdeskField/intFreshdeskField.model');db['VtigerAccount']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xb9'));db[_0x7b44('0xba')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xbb'));db['VtigerField']=db['sequelize'][_0x7b44('0x13')]('../api/intVtigerField/intVtigerField.model');db['ServicenowAccount']=db['sequelize']['import'](_0x7b44('0xbc'));db['ServicenowConfiguration']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xbd'));db[_0x7b44('0xbe')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xbf'));db[_0x7b44('0xc0')]=db['sequelize'][_0x7b44('0x13')]('../api/intDynamics365Account/intDynamics365Account.model');db['Dynamics365Configuration']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xc1'));db[_0x7b44('0xc2')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xc3'));db[_0x7b44('0xc4')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xc5'));db['FreshsalesConfiguration']=db[_0x7b44('0x1')]['import'](_0x7b44('0xc6'));db[_0x7b44('0xc7')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xc8'));db['Integration']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x90'));db['Network']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xc9'));db[_0x7b44('0xca')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xcb'));db[_0x7b44('0xcc')]=db['sequelize']['import'](_0x7b44('0xcd'));db[_0x7b44('0xce')]=db['sequelize']['import'](_0x7b44('0xcf'));db[_0x7b44('0xd0')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xd1'));db['JscriptySessionReport']=db[_0x7b44('0x1')]['import'](_0x7b44('0xd2'));db['SmsQueueReport']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xd3'));db['SquareReport']=db[_0x7b44('0x1')]['import']('../api/squareReport/squareReport.model');db[_0x7b44('0xd4')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xd5'));db[_0x7b44('0xd6')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xd7'));db['Setting']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xd8'));db[_0x7b44('0xd9')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xda'));db[_0x7b44('0xdb')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xdc'));db[_0x7b44('0xdd')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xde'));db['SquareMessage']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xdf'));db[_0x7b44('0xe0')]=db[_0x7b44('0x1')]['import'](_0x7b44('0xe1'));db[_0x7b44('0xe2')]=db[_0x7b44('0x1')]['import'](_0x7b44('0xe3'));db['Campaign']=db['sequelize']['import'](_0x7b44('0xe4'));db[_0x7b44('0xe5')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xe6'));db[_0x7b44('0xe7')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xe8'));db[_0x7b44('0xe9')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xea'));db['MailTransferReport']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xeb'));db[_0x7b44('0xec')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xed'));db[_0x7b44('0xee')]=db[_0x7b44('0x1')]['import']('../api/faxTransferReport/faxTransferReport.model');db[_0x7b44('0xef')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xf0'));db[_0x7b44('0xf1')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xf2'));db['CmList']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xf3'));db['VoicePrefix']=db['sequelize'][_0x7b44('0x13')](_0x7b44('0xf4'));db['UserProfile']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xf5'));db[_0x7b44('0xf6')]=db[_0x7b44('0x1')]['import'](_0x7b44('0xf7'));db['UserProfileResource']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xf8'));db['UserNotification']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xf9'));db['WhatsappAccount']=db[_0x7b44('0x1')]['import'](_0x7b44('0xfa'));db[_0x7b44('0xfb')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/whatsappApplication/whatsappApplication.model');db['WhatsappInteraction']=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xfc'));db[_0x7b44('0xfd')]=db[_0x7b44('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0x7b44('0xfe')]=db[_0x7b44('0x1')][_0x7b44('0x13')](_0x7b44('0xff'));db[_0x7b44('0x100')]=db[_0x7b44('0x1')]['import']('../api/whatsappTransferReport/whatsappTransferReport.model');db[_0x7b44('0x101')]=db['sequelize'][_0x7b44('0x13')](_0x7b44('0x102'));db[_0x7b44('0x103')]=db['sequelize']['import'](_0x7b44('0x104'));db[_0x7b44('0x105')]=db[_0x7b44('0x1')][_0x7b44('0x13')]('../api/teamVoiceQueue/teamVoiceQueue.model');db['User'][_0x7b44('0x106')](db[_0x7b44('0x107')],{'as':_0x7b44('0x107'),'onDelete':'cascade','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x12')][_0x7b44('0x109')](db[_0x7b44('0x1d')],{'as':_0x7b44('0x10a'),'foreignKey':_0x7b44('0x108')});db[_0x7b44('0x12')][_0x7b44('0x109')](db[_0x7b44('0x10b')],{'as':'VoiceQueuesRt','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x12')][_0x7b44('0x109')](db[_0x7b44('0x18')],{'as':_0x7b44('0x10c'),'onDelete':'cascade','hooks':!![]});db['User']['hasMany'](db['CmHopperFinal'],{'as':_0x7b44('0x10d'),'foreignKey':'UserId'});db[_0x7b44('0x12')][_0x7b44('0x109')](db[_0x7b44('0x71')],{'as':_0x7b44('0x10e'),'foreignKey':'UserId'});db['User']['hasMany'](db[_0x7b44('0x72')],{'as':_0x7b44('0x72'),'foreignKey':_0x7b44('0x108')});db['User'][_0x7b44('0x109')](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','foreignKey':'UserId'});db['User'][_0x7b44('0x109')](db[_0x7b44('0x60')],{'as':_0x7b44('0x10f'),'foreignKey':_0x7b44('0x108')});db[_0x7b44('0x12')]['hasMany'](db['SmsInteraction'],{'as':_0x7b44('0x110'),'foreignKey':'UserId'});db['User'][_0x7b44('0x109')](db[_0x7b44('0x47')],{'as':_0x7b44('0x111'),'foreignKey':_0x7b44('0x108')});db[_0x7b44('0x12')][_0x7b44('0x109')](db[_0x7b44('0x3a')],{'as':'MailInteractions','foreignKey':_0x7b44('0x108')});db['User'][_0x7b44('0x109')](db[_0x7b44('0x112')],{'as':'WhatsappInteractions','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x12')][_0x7b44('0x109')](db['UserNotification'],{'as':_0x7b44('0x113'),'foreignKey':_0x7b44('0x114')});db['User'][_0x7b44('0x115')](db[_0x7b44('0x116')],{'as':_0x7b44('0x116'),'foreignKey':_0x7b44('0x117')});db['User'][_0x7b44('0x118')](db[_0x7b44('0x65')],{'as':_0x7b44('0x119'),'through':_0x7b44('0x11a')});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x11c'),'through':_0x7b44('0x11d')});db['User']['belongsToMany'](db[_0x7b44('0x11e')],{'as':_0x7b44('0x11f'),'through':_0x7b44('0x120')});db['User'][_0x7b44('0x118')](db[_0x7b44('0xe0')],{'through':_0x7b44('0x121')});db['User'][_0x7b44('0x118')](db[_0x7b44('0x3a')],{'as':_0x7b44('0x122'),'through':_0x7b44('0x123')});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x60')],{'as':_0x7b44('0x10f'),'through':_0x7b44('0x124')});db['User'][_0x7b44('0x118')](db[_0x7b44('0x47')],{'as':_0x7b44('0x111'),'through':_0x7b44('0x125')});db[_0x7b44('0x12')][_0x7b44('0x118')](db['SmsInteraction'],{'as':'SmsInteractions','through':_0x7b44('0x126')});db['User'][_0x7b44('0x118')](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','through':'user_has_openchannel_interactions'});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x112')],{'as':_0x7b44('0x127'),'through':'user_has_whatsapp_interactions'});db['User'][_0x7b44('0x118')](db[_0x7b44('0x128')],{'as':'VoiceQueues','through':_0x7b44('0x129'),'required':![]});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x37')],{'as':_0x7b44('0x12a'),'through':_0x7b44('0x2e'),'required':![]});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x64')],{'as':_0x7b44('0x12b'),'through':_0x7b44('0x2c'),'required':![],'hooks':!![]});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x49')],{'as':'FaxQueues','through':_0x7b44('0x12c'),'required':![]});db['User'][_0x7b44('0x118')](db[_0x7b44('0x12d')],{'as':_0x7b44('0x12e'),'through':_0x7b44('0x12f'),'required':![]});db['User'][_0x7b44('0x118')](db[_0x7b44('0x58')],{'as':'OpenchannelQueues','through':_0x7b44('0x130'),'required':![]});db[_0x7b44('0x12')][_0x7b44('0x118')](db[_0x7b44('0x101')],{'as':'WhatsappQueues','through':_0x7b44('0x32'),'required':![]});db[_0x7b44('0x12')]['belongsToMany'](db[_0x7b44('0x11e')],{'through':'cm_user_has_lists'});db[_0x7b44('0x12')][_0x7b44('0x118')](db['VoicePrefix'],{'as':_0x7b44('0x131'),'through':_0x7b44('0x132'),'required':![]});db[_0x7b44('0x12')][_0x7b44('0x118')](db['ChatWebsite'],{'as':_0x7b44('0x133'),'through':'user_has_chat_websites'});db[_0x7b44('0x12')]['belongsToMany'](db[_0x7b44('0x134')],{'as':'FaxAccounts','through':'user_has_fax_accounts'});db[_0x7b44('0x12')][_0x7b44('0x118')](db['MailAccount'],{'as':'MailAccounts','through':_0x7b44('0x135')});db['User'][_0x7b44('0x118')](db[_0x7b44('0x51')],{'as':_0x7b44('0x136'),'through':'user_has_openchannel_accounts'});db[_0x7b44('0x12')]['belongsToMany'](db['SmsAccount'],{'as':_0x7b44('0x137'),'through':_0x7b44('0x138')});db['User'][_0x7b44('0x118')](db['WhatsappAccount'],{'as':'WhatsappAccounts','through':_0x7b44('0x139')});db[_0x7b44('0x12')]['belongsToMany'](db[_0x7b44('0xdb')],{'as':'SquareProjects','through':_0x7b44('0x13a')});db['VoiceChanSpy']['hasMany'](db[_0x7b44('0x18')],{'as':_0x7b44('0x13b'),'onDelete':'cascade','foreignKey':_0x7b44('0x13c')});db[_0x7b44('0x13d')]['hasMany'](db[_0x7b44('0x18')],{'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x18')][_0x7b44('0x109')](db[_0x7b44('0x18')],{'as':'Applications','onDelete':_0x7b44('0x13e')});db['VoiceMusicOnHold'][_0x7b44('0x118')](db[_0x7b44('0x86')],{'as':_0x7b44('0x13f'),'through':_0x7b44('0x140')});db[_0x7b44('0x128')][_0x7b44('0x109')](db[_0x7b44('0x10b')],{'as':_0x7b44('0x141'),'foreignKey':_0x7b44('0x142')});db[_0x7b44('0x128')]['hasMany'](db[_0x7b44('0x6b')],{'as':'Hoppers','foreignKey':_0x7b44('0x142')});db['VoiceQueue'][_0x7b44('0x109')](db[_0x7b44('0x6f')],{'as':'HopperFinals','foreignKey':_0x7b44('0x142')});db['VoiceQueue'][_0x7b44('0x109')](db[_0x7b44('0x71')],{'as':_0x7b44('0x143'),'foreignKey':'VoiceQueueId'});db['VoiceQueue']['hasMany'](db[_0x7b44('0x72')],{'as':_0x7b44('0x72'),'foreignKey':_0x7b44('0x142')});db[_0x7b44('0x128')][_0x7b44('0x109')](db[_0x7b44('0x6d')],{'as':'HopperBlacks','foreignKey':_0x7b44('0x142')});db[_0x7b44('0x128')][_0x7b44('0x109')](db['JscriptySessionReport'],{'as':_0x7b44('0x144'),'foreignKey':'VoiceQueueId'});db[_0x7b44('0x128')][_0x7b44('0x115')](db[_0x7b44('0x29')],{'as':_0x7b44('0x29'),'foreignKey':_0x7b44('0x145')});db['VoiceQueue'][_0x7b44('0x115')](db['Trunk'],{'as':'TrunkBackup','foreignKey':_0x7b44('0x146')});db['VoiceQueue'][_0x7b44('0x115')](db[_0x7b44('0x7f')],{'as':_0x7b44('0x7f'),'foreignKey':_0x7b44('0x147')});db[_0x7b44('0x128')][_0x7b44('0x115')](db[_0x7b44('0x81')],{'as':_0x7b44('0x148'),'foreignKey':_0x7b44('0x149')});db[_0x7b44('0x128')][_0x7b44('0x118')](db[_0x7b44('0x11e')],{'as':'Lists','through':_0x7b44('0x14a')});db[_0x7b44('0x128')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':'UserVoiceQueue'});db[_0x7b44('0x128')][_0x7b44('0x118')](db['Team'],{'as':_0x7b44('0x14c'),'through':'TeamVoiceQueue'});db[_0x7b44('0x128')][_0x7b44('0x118')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x14d'),'through':_0x7b44('0x14e')});db['VoiceRecording'][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':'User','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x14f')]['belongsTo'](db['User'],{'as':'User','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x107')]['hasMany'](db['VoiceMailMessage'],{'as':'Messages','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x150'),'sourceKey':_0x7b44('0x151')});db[_0x7b44('0x20')][_0x7b44('0x115')](db['VoiceMail'],{'foreignKey':'mailboxuser','targetKey':_0x7b44('0x151')});db[_0x7b44('0x22')]['hasMany'](db['VoiceQueueReport'],{'as':'QueueCalls','foreignKey':_0x7b44('0x152'),'constraints':![]});db[_0x7b44('0x22')][_0x7b44('0x109')](db[_0x7b44('0x24')],{'as':_0x7b44('0x153'),'foreignKey':'uniqueid','constraints':![]});db[_0x7b44('0x22')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':_0x7b44('0x12'),'foreignKey':_0x7b44('0x108')});db['VoiceCallReport'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x156')][_0x7b44('0x115')](db[_0x7b44('0x35')],{'as':_0x7b44('0x35'),'foreignKey':'MailAccountId'});db[_0x7b44('0x34')][_0x7b44('0x115')](db[_0x7b44('0x35')],{'as':'MailAccount','foreignKey':_0x7b44('0x157')});db[_0x7b44('0x35')][_0x7b44('0x106')](db[_0x7b44('0x156')],{'as':_0x7b44('0x158'),'onDelete':'cascade'});db['MailAccount'][_0x7b44('0x106')](db[_0x7b44('0x34')],{'as':'Smtp','onDelete':_0x7b44('0x13e')});db['MailAccount'][_0x7b44('0x109')](db['Disposition'],{'as':_0x7b44('0x159'),'foreignKey':'MailAccountId','onDelete':_0x7b44('0x13e')});db[_0x7b44('0x35')][_0x7b44('0x109')](db[_0x7b44('0x79')],{'as':'Answers','foreignKey':_0x7b44('0x157')});db[_0x7b44('0x35')][_0x7b44('0x109')](db[_0x7b44('0x3c')],{'as':_0x7b44('0x15a'),'foreignKey':_0x7b44('0x157')});db[_0x7b44('0x35')][_0x7b44('0x109')](db[_0x7b44('0x3a')],{'as':_0x7b44('0x15b')});db[_0x7b44('0x35')][_0x7b44('0x109')](db[_0x7b44('0x3e')],{'as':'Applications'});db[_0x7b44('0x35')][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':'List','foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x35')][_0x7b44('0x115')](db[_0x7b44('0x8a')],{'as':_0x7b44('0x8a'),'foreignKey':'TemplateId'});db[_0x7b44('0x35')][_0x7b44('0x115')](db[_0x7b44('0x81')],{'as':_0x7b44('0x148'),'foreignKey':_0x7b44('0x149')});db[_0x7b44('0x35')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x135')});db['MailQueue']['belongsToMany'](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x2e')});db[_0x7b44('0x37')][_0x7b44('0x118')](db[_0x7b44('0xe0')],{'through':'team_has_mail_queues','as':_0x7b44('0x14c')});db[_0x7b44('0x3a')][_0x7b44('0x109')](db['MailMessage'],{'as':_0x7b44('0x15a'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x15d')});db[_0x7b44('0x3a')][_0x7b44('0x115')](db[_0x7b44('0x35')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x157')});db[_0x7b44('0x3a')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':'ContactId'});db[_0x7b44('0x3a')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':_0x7b44('0x15f'),'foreignKey':'UserId'});db[_0x7b44('0x3a')][_0x7b44('0x118')](db['Tag'],{'through':'mail_interaction_has_tags','as':'Tags'});db[_0x7b44('0x3a')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':_0x7b44('0x160'),'as':_0x7b44('0x161')});db[_0x7b44('0x3a')][_0x7b44('0x118')](db['User'],{'as':_0x7b44('0x162'),'through':'user_has_mail_interactions','foreignKey':_0x7b44('0x15d')});db[_0x7b44('0x3c')][_0x7b44('0x109')](db['Attachment'],{'as':_0x7b44('0x163'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x3c')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':'User'});db['MailMessage'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'onDelete':'cascade','as':'Contact'});db['MailMessage'][_0x7b44('0x115')](db[_0x7b44('0x3a')],{'as':_0x7b44('0x164'),'foreignKey':_0x7b44('0x15d')});db[_0x7b44('0x3c')][_0x7b44('0x115')](db['MailAccount'],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x157')});db[_0x7b44('0x3c')]['belongsTo'](db[_0x7b44('0x5a')],{'as':_0x7b44('0x5a'),'foreignKey':_0x7b44('0x165')});db[_0x7b44('0x3c')][_0x7b44('0x115')](db[_0x7b44('0x166')],{'as':_0x7b44('0x166'),'foreignKey':_0x7b44('0x167')});db[_0x7b44('0x3e')][_0x7b44('0x115')](db['User'],{'onDelete':_0x7b44('0x168')});db['MailApplication']['belongsTo'](db[_0x7b44('0x37')],{'onDelete':_0x7b44('0x168')});db[_0x7b44('0x3e')][_0x7b44('0x115')](db[_0x7b44('0x35')],{'onDelete':_0x7b44('0x168')});db['MailApplication'][_0x7b44('0x115')](db[_0x7b44('0x7f')],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x147')});db['MailApplication'][_0x7b44('0x115')](db[_0x7b44('0x88')],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x169')});db[_0x7b44('0x40')]['belongsTo'](db[_0x7b44('0x35')],{});db['MailQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db['MailQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db['MailQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x3a')],{});db[_0x7b44('0x40')][_0x7b44('0x115')](db[_0x7b44('0x3c')],{});db[_0x7b44('0x40')][_0x7b44('0x115')](db[_0x7b44('0x12')],{});db['MailQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x37')],{});db[_0x7b44('0x16b')]['hasMany'](db['DashboardItem'],{'as':_0x7b44('0x16c'),'onDelete':'cascade'});db[_0x7b44('0x134')][_0x7b44('0x109')](db[_0x7b44('0x7b')],{'as':'Dispositions','foreignKey':_0x7b44('0x16d'),'onDelete':'cascade'});db[_0x7b44('0x134')][_0x7b44('0x109')](db[_0x7b44('0x79')],{'as':_0x7b44('0x16e'),'foreignKey':_0x7b44('0x16d')});db[_0x7b44('0x134')][_0x7b44('0x109')](db['FaxInteraction'],{'as':_0x7b44('0x15b')});db[_0x7b44('0x134')][_0x7b44('0x109')](db[_0x7b44('0x16f')],{'as':_0x7b44('0x170')});db[_0x7b44('0x134')][_0x7b44('0x109')](db[_0x7b44('0x18')],{'as':_0x7b44('0x171'),'onDelete':_0x7b44('0x13e')});db['FaxAccount'][_0x7b44('0x109')](db['FaxMessage'],{'as':_0x7b44('0x15a')});db['FaxAccount'][_0x7b44('0x115')](db[_0x7b44('0x29')],{'as':_0x7b44('0x29')});db[_0x7b44('0x134')]['belongsTo'](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x134')][_0x7b44('0x115')](db['Pause'],{'as':_0x7b44('0x148'),'foreignKey':_0x7b44('0x149')});db[_0x7b44('0x134')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':'Agents','through':_0x7b44('0x172')});db[_0x7b44('0x16f')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'onDelete':_0x7b44('0x168')});db[_0x7b44('0x16f')][_0x7b44('0x115')](db['FaxQueue'],{'onDelete':_0x7b44('0x168')});db[_0x7b44('0x16f')][_0x7b44('0x115')](db[_0x7b44('0x134')],{'onDelete':_0x7b44('0x168')});db['FaxApplication'][_0x7b44('0x115')](db[_0x7b44('0x88')],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x169')});db['FaxInteraction']['hasMany'](db[_0x7b44('0x48')],{'as':_0x7b44('0x15a'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x173')});db[_0x7b44('0x47')]['belongsTo'](db[_0x7b44('0x134')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x16d')});db[_0x7b44('0x47')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':'ContactId'});db[_0x7b44('0x47')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':_0x7b44('0x15f'),'foreignKey':'UserId'});db[_0x7b44('0x47')][_0x7b44('0x118')](db['Tag'],{'through':_0x7b44('0x174'),'as':'Tags'});db[_0x7b44('0x47')]['belongsToMany'](db[_0x7b44('0x88')],{'through':_0x7b44('0x174'),'as':_0x7b44('0x161')});db['FaxInteraction'][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x162'),'through':_0x7b44('0x125'),'foreignKey':_0x7b44('0x173')});db[_0x7b44('0x48')]['belongsTo'](db[_0x7b44('0x12')],{'onDelete':_0x7b44('0x13e'),'as':'User'});db[_0x7b44('0x48')]['belongsTo'](db[_0x7b44('0x47')],{'as':'Interaction','foreignKey':_0x7b44('0x173')});db[_0x7b44('0x48')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'onDelete':_0x7b44('0x13e'),'as':_0x7b44('0x154')});db[_0x7b44('0x48')]['belongsTo'](db['Attachment'],{'as':'Attachment','foreignKey':_0x7b44('0x175')});db[_0x7b44('0x48')]['belongsTo'](db[_0x7b44('0x134')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x16d')});db[_0x7b44('0x49')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':'Agents','through':_0x7b44('0x12c')});db[_0x7b44('0x49')][_0x7b44('0x118')](db[_0x7b44('0xe0')],{'through':'team_has_fax_queues','as':_0x7b44('0x14c')});db[_0x7b44('0x176')][_0x7b44('0x115')](db[_0x7b44('0x134')],{});db[_0x7b44('0x176')][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db['FaxQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db['FaxQueueReport'][_0x7b44('0x115')](db['FaxInteraction'],{});db['FaxQueueReport'][_0x7b44('0x115')](db['FaxMessage'],{});db[_0x7b44('0x176')][_0x7b44('0x115')](db[_0x7b44('0x12')],{});db[_0x7b44('0x176')][_0x7b44('0x115')](db[_0x7b44('0x49')],{});db['SmsAccount'][_0x7b44('0x109')](db['Disposition'],{'as':'Dispositions','foreignKey':_0x7b44('0x177'),'onDelete':_0x7b44('0x13e')});db['SmsAccount'][_0x7b44('0x109')](db[_0x7b44('0x79')],{'as':_0x7b44('0x16e'),'foreignKey':_0x7b44('0x177')});db['SmsAccount']['hasMany'](db['SmsMessage'],{'as':_0x7b44('0x15a'),'foreignKey':'SmsAccountId'});db[_0x7b44('0x4b')][_0x7b44('0x109')](db['SmsInteraction'],{'as':_0x7b44('0x15b')});db[_0x7b44('0x4b')][_0x7b44('0x109')](db[_0x7b44('0x178')],{'as':_0x7b44('0x170')});db[_0x7b44('0x4b')][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x4b')][_0x7b44('0x115')](db[_0x7b44('0x81')],{'as':_0x7b44('0x148'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x7b44('0x4b')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x138')});db[_0x7b44('0x178')][_0x7b44('0x115')](db['User'],{'onDelete':_0x7b44('0x168')});db[_0x7b44('0x178')]['belongsTo'](db[_0x7b44('0x12d')],{'onDelete':_0x7b44('0x168')});db['SmsApplication'][_0x7b44('0x115')](db[_0x7b44('0x4b')],{'onDelete':_0x7b44('0x168')});db['SmsApplication'][_0x7b44('0x115')](db[_0x7b44('0x7f')],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x147')});db[_0x7b44('0x178')][_0x7b44('0x115')](db[_0x7b44('0x88')],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x169')});db[_0x7b44('0x4d')]['hasMany'](db[_0x7b44('0x4e')],{'as':_0x7b44('0x15a'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x179')});db['SmsInteraction']['belongsTo'](db[_0x7b44('0x4b')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x177')});db[_0x7b44('0x4d')][_0x7b44('0x115')](db['CmContact'],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x4d')]['belongsTo'](db[_0x7b44('0x12')],{'as':'Owner','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x4d')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':'sms_interaction_has_tags','as':'Tags'});db['SmsInteraction'][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':'sms_interaction_has_tags','as':_0x7b44('0x161')});db[_0x7b44('0x4d')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x162'),'through':_0x7b44('0x126'),'foreignKey':_0x7b44('0x179')});db[_0x7b44('0x4e')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':_0x7b44('0x12')});db['SmsMessage'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'onDelete':'cascade','as':'Contact'});db[_0x7b44('0x4e')][_0x7b44('0x115')](db[_0x7b44('0x4d')],{'onDelete':'cascade','as':_0x7b44('0x164'),'foreignKey':_0x7b44('0x179')});db[_0x7b44('0x4e')][_0x7b44('0x115')](db[_0x7b44('0x4b')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x177')});db[_0x7b44('0x12d')]['belongsToMany'](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x12f'),'foreignKey':_0x7b44('0x17a')});db[_0x7b44('0x12d')]['belongsToMany'](db[_0x7b44('0xe0')],{'through':_0x7b44('0x17b'),'as':_0x7b44('0x14c')});db[_0x7b44('0x51')][_0x7b44('0x109')](db[_0x7b44('0x7b')],{'as':_0x7b44('0x159'),'foreignKey':_0x7b44('0x17c'),'onDelete':'cascade'});db[_0x7b44('0x51')][_0x7b44('0x109')](db[_0x7b44('0x79')],{'as':_0x7b44('0x16e'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x7b44('0x109')](db[_0x7b44('0x54')],{'as':_0x7b44('0x15b'),'foreignKey':_0x7b44('0x17c')});db[_0x7b44('0x51')][_0x7b44('0x109')](db[_0x7b44('0x56')],{'as':_0x7b44('0x15a'),'foreignKey':_0x7b44('0x17c')});db['OpenchannelAccount'][_0x7b44('0x109')](db[_0x7b44('0x52')],{'as':'Applications','foreignKey':'OpenchannelAccountId'});db[_0x7b44('0x51')]['belongsTo'](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x51')][_0x7b44('0x115')](db['Pause'],{'as':_0x7b44('0x148'),'foreignKey':_0x7b44('0x149')});db[_0x7b44('0x51')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x17d')});db[_0x7b44('0x52')]['belongsTo'](db[_0x7b44('0x12')],{'onDelete':'restrict'});db['OpenchannelApplication'][_0x7b44('0x115')](db[_0x7b44('0x58')],{'onDelete':'restrict','foreignKey':'OpenchannelQueueId'});db[_0x7b44('0x52')][_0x7b44('0x115')](db['OpenchannelAccount'],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x17c')});db[_0x7b44('0x52')][_0x7b44('0x115')](db[_0x7b44('0x7f')],{'onDelete':'restrict','foreignKey':_0x7b44('0x147')});db[_0x7b44('0x52')]['belongsTo'](db['Tag'],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x169')});db['OpenchannelInteraction'][_0x7b44('0x109')](db[_0x7b44('0x56')],{'as':_0x7b44('0x15a'),'onDelete':'cascade','foreignKey':_0x7b44('0x17e')});db[_0x7b44('0x54')][_0x7b44('0x115')](db[_0x7b44('0x51')],{'as':'Account','foreignKey':_0x7b44('0x17c')});db[_0x7b44('0x54')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x54')]['belongsTo'](db['User'],{'as':_0x7b44('0x15f'),'foreignKey':'UserId'});db['OpenchannelInteraction'][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':_0x7b44('0x17f'),'as':_0x7b44('0x180')});db[_0x7b44('0x54')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':_0x7b44('0x17f'),'as':_0x7b44('0x161')});db[_0x7b44('0x54')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x162'),'through':_0x7b44('0x181'),'foreignKey':_0x7b44('0x17e')});db['OpenchannelMessage'][_0x7b44('0x115')](db['User'],{'onDelete':_0x7b44('0x13e'),'as':'User'});db['OpenchannelMessage'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'onDelete':'cascade','as':'Contact'});db[_0x7b44('0x56')][_0x7b44('0x115')](db[_0x7b44('0x54')],{'onDelete':_0x7b44('0x13e'),'as':_0x7b44('0x164'),'foreignKey':_0x7b44('0x17e')});db[_0x7b44('0x56')][_0x7b44('0x115')](db[_0x7b44('0xe7')],{'as':_0x7b44('0xe7'),'foreignKey':'AttachmentId'});db[_0x7b44('0x56')]['belongsTo'](db[_0x7b44('0x51')],{'as':'Account','foreignKey':'OpenchannelAccountId'});db[_0x7b44('0x58')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':'UserOpenchannelQueue','foreignKey':_0x7b44('0x182')});db[_0x7b44('0x58')][_0x7b44('0x118')](db[_0x7b44('0xe0')],{'through':_0x7b44('0x183'),'as':_0x7b44('0x14c')});db[_0x7b44('0x5a')][_0x7b44('0x109')](db[_0x7b44('0x7b')],{'as':'Dispositions','foreignKey':_0x7b44('0x165'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x5a')][_0x7b44('0x109')](db[_0x7b44('0x79')],{'as':_0x7b44('0x16e'),'foreignKey':_0x7b44('0x165')});db[_0x7b44('0x5a')][_0x7b44('0x109')](db[_0x7b44('0x67')],{'as':_0x7b44('0x184')});db['ChatWebsite'][_0x7b44('0x109')](db[_0x7b44('0x60')],{'as':_0x7b44('0x15b')});db['ChatWebsite'][_0x7b44('0x109')](db['ChatApplication'],{'as':_0x7b44('0x170')});db[_0x7b44('0x5a')]['hasMany'](db[_0x7b44('0x185')],{'as':_0x7b44('0x15a')});db['ChatWebsite'][_0x7b44('0x115')](db['CmList'],{'as':_0x7b44('0x16a'),'foreignKey':'ListId'});db[_0x7b44('0x5a')][_0x7b44('0x115')](db[_0x7b44('0x7f')],{'as':_0x7b44('0x7f'),'foreignKey':_0x7b44('0x147')});db[_0x7b44('0x5a')][_0x7b44('0x115')](db[_0x7b44('0x35')],{'as':_0x7b44('0x35'),'foreignKey':'MailAccountId'});db[_0x7b44('0x5a')][_0x7b44('0x115')](db[_0x7b44('0x81')],{'as':'mandatoryDispositionPause','foreignKey':_0x7b44('0x149')});db['ChatWebsite']['belongsToMany'](db[_0x7b44('0x12')],{'as':'Agents','through':_0x7b44('0x186')});db['OpenchannelQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x51')],{});db[_0x7b44('0x5c')][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x5c')]['belongsTo'](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':'ContactId'});db[_0x7b44('0x5c')][_0x7b44('0x115')](db[_0x7b44('0x54')],{});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelMessage'],{});db[_0x7b44('0x5c')]['belongsTo'](db[_0x7b44('0x12')],{});db[_0x7b44('0x5c')][_0x7b44('0x115')](db[_0x7b44('0x58')],{});db[_0x7b44('0x5e')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':_0x7b44('0x187'),'foreignKey':_0x7b44('0x108'),'onDelete':_0x7b44('0x168')});db[_0x7b44('0x5e')][_0x7b44('0x115')](db[_0x7b44('0x64')],{'as':_0x7b44('0x188'),'foreignKey':_0x7b44('0x189'),'onDelete':'restrict'});db[_0x7b44('0x5e')][_0x7b44('0x115')](db[_0x7b44('0x5a')],{'as':_0x7b44('0x18a'),'foreignKey':'ChatWebsiteId','onDelete':_0x7b44('0x168')});db[_0x7b44('0x5e')][_0x7b44('0x115')](db[_0x7b44('0x88')],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x169')});db[_0x7b44('0x60')][_0x7b44('0x109')](db[_0x7b44('0x185')],{'as':_0x7b44('0x15a'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x18b')});db['ChatInteraction'][_0x7b44('0x115')](db[_0x7b44('0x5a')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x165')});db[_0x7b44('0x60')][_0x7b44('0x115')](db['CmContact'],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db['ChatInteraction'][_0x7b44('0x115')](db['User'],{'as':_0x7b44('0x15f'),'foreignKey':_0x7b44('0x108')});db['ChatInteraction']['belongsToMany'](db['Tag'],{'through':_0x7b44('0x18c'),'as':_0x7b44('0x180')});db[_0x7b44('0x60')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':_0x7b44('0x18c'),'as':_0x7b44('0x161')});db['ChatInteraction']['belongsToMany'](db[_0x7b44('0x12')],{'as':_0x7b44('0x162'),'through':'user_has_chat_interactions','foreignKey':_0x7b44('0x18b')});db[_0x7b44('0x185')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'onDelete':_0x7b44('0x13e'),'as':_0x7b44('0x12')});db[_0x7b44('0x185')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'onDelete':_0x7b44('0x13e'),'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x185')][_0x7b44('0x115')](db[_0x7b44('0x60')],{'onDelete':_0x7b44('0x13e'),'as':_0x7b44('0x164'),'foreignKey':_0x7b44('0x18b')});db[_0x7b44('0x185')]['belongsTo'](db[_0x7b44('0xe7')],{'as':_0x7b44('0xe7'),'foreignKey':_0x7b44('0x175')});db['ChatMessage'][_0x7b44('0x115')](db['ChatWebsite'],{'as':'Account','foreignKey':'ChatWebsiteId'});db['ChatOfflineMessage'][_0x7b44('0x109')](db[_0x7b44('0xe7')],{'as':_0x7b44('0x163'),'foreignKey':_0x7b44('0x167'),'onDelete':_0x7b44('0x13e'),'hooks':!![]});db[_0x7b44('0x166')]['belongsTo'](db['CmContact'],{'onDelete':'cascade','as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x166')][_0x7b44('0x115')](db[_0x7b44('0x5a')],{'as':_0x7b44('0x15e'),'foreignKey':'ChatWebsiteId'});db['ChatQueue'][_0x7b44('0x118')](db['User'],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x2c'),'hooks':!![]});db[_0x7b44('0x64')]['belongsToMany'](db[_0x7b44('0xe0')],{'through':'team_has_chat_queues','as':'Teams'});db[_0x7b44('0x65')][_0x7b44('0x109')](db[_0x7b44('0xcc')],{'as':'Messages','foreignKey':_0x7b44('0x18d'),'onDelete':'cascade'});db[_0x7b44('0x65')]['belongsToMany'](db['User'],{'as':'Members','through':'chat_group_has_users'});db[_0x7b44('0x67')][_0x7b44('0x115')](db[_0x7b44('0x5a')],{'as':_0x7b44('0x18a'),'foreignKey':_0x7b44('0x165')});db[_0x7b44('0x69')][_0x7b44('0x109')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x11c'),'foreignKey':_0x7b44('0x18e')});db[_0x7b44('0x11b')]['hasMany'](db[_0x7b44('0x6b')],{'as':_0x7b44('0x18f'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x11b')][_0x7b44('0x109')](db[_0x7b44('0x6f')],{'as':'HopperFinals','foreignKey':_0x7b44('0x155')});db['CmContact'][_0x7b44('0x109')](db['CmHopperHistory'],{'as':_0x7b44('0x143'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x11b')][_0x7b44('0x109')](db[_0x7b44('0x72')],{'as':_0x7b44('0x72'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x11b')][_0x7b44('0x109')](db[_0x7b44('0x190')],{'as':'JscriptySessions','foreignKey':_0x7b44('0x155')});db[_0x7b44('0x11b')][_0x7b44('0x109')](db[_0x7b44('0x54')],{'as':_0x7b44('0x191'),'foreignKey':_0x7b44('0x155'),'onDelete':_0x7b44('0x168')});db['CmContact'][_0x7b44('0x109')](db[_0x7b44('0x60')],{'as':'ChatInteractions','foreignKey':_0x7b44('0x155'),'onDelete':_0x7b44('0x168')});db['CmContact'][_0x7b44('0x109')](db[_0x7b44('0x4d')],{'as':_0x7b44('0x110'),'foreignKey':'ContactId','onDelete':_0x7b44('0x168')});db[_0x7b44('0x11b')][_0x7b44('0x109')](db[_0x7b44('0x47')],{'as':_0x7b44('0x111'),'foreignKey':'ContactId','onDelete':_0x7b44('0x168')});db['CmContact'][_0x7b44('0x109')](db[_0x7b44('0x3a')],{'as':_0x7b44('0x122'),'foreignKey':'ContactId','onDelete':_0x7b44('0x168')});db[_0x7b44('0x11b')][_0x7b44('0x115')](db[_0x7b44('0x69')],{'as':_0x7b44('0x192'),'foreignKey':_0x7b44('0x18e')});db[_0x7b44('0x11b')][_0x7b44('0x115')](db['CmList'],{'as':'List','foreignKey':'ListId','onDelete':_0x7b44('0x13e')});db['CmContact'][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x162'),'through':_0x7b44('0x11d')});db['CmContact']['belongsToMany'](db[_0x7b44('0x88')],{'as':_0x7b44('0x180'),'through':_0x7b44('0x193')});db[_0x7b44('0x11b')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':_0x7b44('0x193'),'as':_0x7b44('0x161')});db[_0x7b44('0x6b')]['belongsTo'](db[_0x7b44('0x11b')],{'as':'Contact','foreignKey':_0x7b44('0x155'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x6b')][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c'),'onDelete':_0x7b44('0x13e')});db['CmHopper']['belongsTo'](db[_0x7b44('0x12')],{'as':'Agent','foreignKey':_0x7b44('0x108')});db[_0x7b44('0x6b')]['belongsTo'](db[_0x7b44('0x128')],{'as':_0x7b44('0x188'),'foreignKey':'VoiceQueueId','onDelete':_0x7b44('0x13e')});db[_0x7b44('0x6b')][_0x7b44('0x115')](db[_0x7b44('0x194')],{'as':'Campaign','foreignKey':'CampaignId','onDelete':_0x7b44('0x13e')});db[_0x7b44('0x6b')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'as':_0x7b44('0x15f'),'foreignKey':'OwnerId'});db[_0x7b44('0x6d')][_0x7b44('0x115')](db['CmContact'],{'as':_0x7b44('0x154'),'foreignKey':'ContactId','onDelete':_0x7b44('0x13e')});db[_0x7b44('0x6d')][_0x7b44('0x115')](db['CmList'],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c'),'onDelete':_0x7b44('0x13e')});db['CmHopperBlack']['belongsTo'](db['VoiceQueue'],{'as':_0x7b44('0x188'),'foreignKey':_0x7b44('0x142'),'onDelete':_0x7b44('0x13e')});db['CmHopperBlack'][_0x7b44('0x115')](db[_0x7b44('0x194')],{'as':_0x7b44('0x194'),'foreignKey':_0x7b44('0x195'),'onDelete':'cascade'});db[_0x7b44('0x77')]['hasMany'](db['Condition'],{'as':{'plural':_0x7b44('0x196'),'singular':_0x7b44('0x197')},'foreignKey':_0x7b44('0x198'),'onDelete':_0x7b44('0x13e'),'hooks':!![]});db[_0x7b44('0x77')][_0x7b44('0x109')](db[_0x7b44('0x7d')],{'as':{'plural':_0x7b44('0x199'),'singular':'OneAny'},'foreignKey':_0x7b44('0x19a'),'onDelete':_0x7b44('0x13e'),'hooks':!![]});db[_0x7b44('0x77')][_0x7b44('0x109')](db[_0x7b44('0x75')],{'as':_0x7b44('0x19b'),'foreignKey':_0x7b44('0x19c'),'onDelete':_0x7b44('0x13e'),'hooks':!![]});db[_0x7b44('0x7b')][_0x7b44('0x109')](db[_0x7b44('0x7b')],{'as':_0x7b44('0x159'),'foreignKey':_0x7b44('0x19d'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x7f')]['hasMany'](db[_0x7b44('0x7f')],{'as':_0x7b44('0x19e'),'foreignKey':'IntervalId','onDelete':'cascade','hooks':!![],'required':![]});db[_0x7b44('0x7f')][_0x7b44('0x109')](db[_0x7b44('0x18')],{'as':_0x7b44('0x10c'),'foreignKey':_0x7b44('0x147'),'onDelete':_0x7b44('0x168')});db[_0x7b44('0x7f')][_0x7b44('0x109')](db[_0x7b44('0x3e')],{'as':_0x7b44('0x19f'),'foreignKey':_0x7b44('0x147')});db[_0x7b44('0x7f')][_0x7b44('0x109')](db[_0x7b44('0x5e')],{'as':'ChatApplications','foreignKey':_0x7b44('0x147')});db[_0x7b44('0x7f')][_0x7b44('0x109')](db[_0x7b44('0x16f')],{'as':'FaxApplications','foreignKey':_0x7b44('0x147')});db['Interval'][_0x7b44('0x109')](db[_0x7b44('0x178')],{'as':_0x7b44('0x1a0'),'foreignKey':_0x7b44('0x147')});db[_0x7b44('0x85')][_0x7b44('0x115')](db['MailAccount'],{});db['Schedule']['belongsTo'](db[_0x7b44('0x95')],{'foreignKey':'DefaultReportId'});db['Schedule'][_0x7b44('0x115')](db[_0x7b44('0x93')],{'foreignKey':'CustomReportId'});db[_0x7b44('0x86')]['belongsToMany'](db[_0x7b44('0x1a')],{'as':_0x7b44('0x1a1'),'through':'moh_has_sounds','onDelete':'restrict'});db[_0x7b44('0x88')][_0x7b44('0x118')](db[_0x7b44('0x11b')],{'through':'cm_contact_has_tags'});db['Tag'][_0x7b44('0x118')](db[_0x7b44('0x60')],{'through':_0x7b44('0x18c')});db[_0x7b44('0x88')]['belongsToMany'](db[_0x7b44('0x3a')],{'through':_0x7b44('0x160')});db[_0x7b44('0x88')][_0x7b44('0x118')](db['SmsInteraction'],{'through':_0x7b44('0x1a2')});db['Tag'][_0x7b44('0x118')](db['FaxInteraction'],{'through':_0x7b44('0x174')});db['Tag'][_0x7b44('0x118')](db[_0x7b44('0x54')],{'through':_0x7b44('0x17f')});db[_0x7b44('0x88')]['belongsToMany'](db['WhatsappInteraction'],{'through':'whatsapp_interaction_has_tags'});db[_0x7b44('0x8c')][_0x7b44('0x109')](db[_0x7b44('0x7d')],{'as':{'plural':_0x7b44('0x1a3'),'singular':_0x7b44('0x1a4')},'foreignKey':_0x7b44('0x1a5'),'onDelete':_0x7b44('0x13e'),'hooks':!![]});db[_0x7b44('0x8c')][_0x7b44('0x109')](db[_0x7b44('0x7d')],{'as':{'plural':'AnyConditions','singular':_0x7b44('0x1a6')},'foreignKey':_0x7b44('0x1a7'),'onDelete':_0x7b44('0x13e'),'hooks':!![]});db[_0x7b44('0x8c')][_0x7b44('0x109')](db[_0x7b44('0x75')],{'as':_0x7b44('0x19b'),'foreignKey':_0x7b44('0x1a8'),'onDelete':'cascade','hooks':!![]});db['AnalyticCustomReport'][_0x7b44('0x109')](db[_0x7b44('0x99')],{'as':_0x7b44('0x1a9'),'onDelete':'cascade','foreignKey':_0x7b44('0x1aa'),'hooks':!![]});db[_0x7b44('0x95')][_0x7b44('0x109')](db[_0x7b44('0x99')],{'as':_0x7b44('0x1a9'),'onDelete':_0x7b44('0x13e'),'foreignKey':'DefaultReportId'});db[_0x7b44('0x98')][_0x7b44('0x109')](db[_0x7b44('0x99')],{'as':_0x7b44('0x1a9'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ab')});db[_0x7b44('0x99')][_0x7b44('0x115')](db[_0x7b44('0x98')],{'foreignKey':_0x7b44('0x1ab')});db[_0x7b44('0x9b')][_0x7b44('0x109')](db[_0x7b44('0x9d')],{'as':'Configurations','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0x9d')][_0x7b44('0x109')](db['SalesforceField'],{'as':'Subjects','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0x9d')][_0x7b44('0x109')](db[_0x7b44('0x9f')],{'as':_0x7b44('0x1ae'),'onDelete':_0x7b44('0x13e'),'foreignKey':'DescriptionId'});db[_0x7b44('0x9d')][_0x7b44('0x109')](db[_0x7b44('0x9f')],{'as':_0x7b44('0x1a9'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1af')});db['SalesforceConfiguration'][_0x7b44('0x115')](db['SalesforceAccount'],{'as':'Account','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0x9f')][_0x7b44('0x109')](db['SalesforceField'],{'as':_0x7b44('0x1b0'),'foreignKey':'SubjectId'});db[_0x7b44('0x9f')][_0x7b44('0x109')](db['SalesforceField'],{'as':'Description','foreignKey':'DescriptionId'});db[_0x7b44('0x9f')]['hasMany'](db[_0x7b44('0x9f')],{'as':_0x7b44('0x1b1'),'foreignKey':'FieldId'});db['SalesforceField']['belongsTo'](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xa0')][_0x7b44('0x109')](db[_0x7b44('0xa2')],{'as':_0x7b44('0x1b3'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xa2')][_0x7b44('0x109')](db[_0x7b44('0x1b4')],{'as':_0x7b44('0x1b5'),'onDelete':'cascade','foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0xa2')][_0x7b44('0x109')](db['SugarcrmField'],{'as':_0x7b44('0x1ae'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1b6')});db['SugarcrmConfiguration'][_0x7b44('0x109')](db[_0x7b44('0x1b4')],{'as':_0x7b44('0x1a9'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0xa2')]['belongsTo'](db[_0x7b44('0xa0')],{'as':'Account','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0x1b4')][_0x7b44('0x109')](db[_0x7b44('0x1b4')],{'as':_0x7b44('0x1b0'),'foreignKey':_0x7b44('0x1ad')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':'Description','foreignKey':'DescriptionId'});db['SugarcrmField'][_0x7b44('0x109')](db[_0x7b44('0x1b4')],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0x1b4')]['belongsTo'](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xa5')][_0x7b44('0x109')](db[_0x7b44('0xa7')],{'as':'Configurations','onDelete':_0x7b44('0x13e'),'foreignKey':'AccountId'});db[_0x7b44('0xa7')][_0x7b44('0x109')](db['DeskField'],{'as':_0x7b44('0x1b5'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0xa7')]['hasMany'](db[_0x7b44('0x1b7')],{'as':_0x7b44('0x1ae'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xa7')][_0x7b44('0x109')](db['DeskField'],{'as':'Fields','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0xa7')][_0x7b44('0x115')](db['DeskAccount'],{'as':_0x7b44('0x15e'),'foreignKey':'AccountId'});db[_0x7b44('0xa7')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':'int_desk_configuration_has_tags'});db[_0x7b44('0x1b7')][_0x7b44('0x109')](db[_0x7b44('0x1b7')],{'as':_0x7b44('0x1b0'),'foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0x1b7')][_0x7b44('0x109')](db[_0x7b44('0x1b7')],{'as':_0x7b44('0x1b8'),'foreignKey':_0x7b44('0x1b6')});db['DeskField']['hasMany'](db[_0x7b44('0x1b7')],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db['DeskField'][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xaa')][_0x7b44('0x109')](db[_0x7b44('0xac')],{'as':_0x7b44('0x1b3'),'onDelete':'cascade','foreignKey':_0x7b44('0x1ac')});db['ZohoConfiguration'][_0x7b44('0x109')](db[_0x7b44('0xae')],{'as':_0x7b44('0x1b5'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ad')});db['ZohoConfiguration']['hasMany'](db['ZohoField'],{'as':_0x7b44('0x1ae'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xac')][_0x7b44('0x109')](db[_0x7b44('0xae')],{'as':_0x7b44('0x1a9'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0x7b44('0xac')][_0x7b44('0x115')](db[_0x7b44('0xaa')],{'as':'Account','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xae')]['hasMany'](db[_0x7b44('0xae')],{'as':_0x7b44('0x1b0'),'foreignKey':_0x7b44('0x1ad')});db['ZohoField']['hasMany'](db[_0x7b44('0xae')],{'as':_0x7b44('0x1b8'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xae')][_0x7b44('0x109')](db[_0x7b44('0xae')],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0xae')][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xb0')][_0x7b44('0x109')](db[_0x7b44('0xb2')],{'as':'Configurations','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xb2')]['hasMany'](db['ZendeskField'],{'as':_0x7b44('0x1b5'),'foreignKey':_0x7b44('0x1ad')});db['ZendeskConfiguration'][_0x7b44('0x109')](db[_0x7b44('0xb3')],{'as':_0x7b44('0x1ae'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xb2')][_0x7b44('0x109')](db['ZendeskField'],{'as':'Fields','foreignKey':_0x7b44('0x1af')});db['ZendeskConfiguration'][_0x7b44('0x115')](db[_0x7b44('0xb0')],{'as':'Account','foreignKey':_0x7b44('0x1ac')});db['ZendeskConfiguration'][_0x7b44('0x118')](db['Tag'],{'through':'int_zendesk_configuration_has_tags'});db[_0x7b44('0xb3')][_0x7b44('0x109')](db[_0x7b44('0xb3')],{'as':'Subject','foreignKey':_0x7b44('0x1ad')});db['ZendeskField'][_0x7b44('0x109')](db['ZendeskField'],{'as':'Description','foreignKey':'DescriptionId'});db['ZendeskField'][_0x7b44('0x109')](db['ZendeskField'],{'as':_0x7b44('0x1b1'),'foreignKey':'FieldId'});db[_0x7b44('0xb3')][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':'Variable','foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xb5')][_0x7b44('0x109')](db['FreshdeskConfiguration'],{'as':_0x7b44('0x1b3'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xb6')][_0x7b44('0x109')](db['FreshdeskField'],{'as':_0x7b44('0x1b5'),'onDelete':'cascade','foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0xb6')][_0x7b44('0x109')](db[_0x7b44('0xb8')],{'as':'Descriptions','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xb6')][_0x7b44('0x109')](db['FreshdeskField'],{'as':_0x7b44('0x1a9'),'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1af')});db['FreshdeskConfiguration'][_0x7b44('0x115')](db[_0x7b44('0xb5')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xb6')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':'int_freshdesk_configuration_has_tags'});db[_0x7b44('0xb8')]['hasMany'](db[_0x7b44('0xb8')],{'as':_0x7b44('0x1b0'),'foreignKey':'SubjectId'});db[_0x7b44('0xb8')]['hasMany'](db[_0x7b44('0xb8')],{'as':_0x7b44('0x1b8'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xb8')]['hasMany'](db[_0x7b44('0xb8')],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0xb8')][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0x1b9')][_0x7b44('0x109')](db[_0x7b44('0xba')],{'as':_0x7b44('0x1b3'),'onDelete':'cascade','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xba')]['hasMany'](db[_0x7b44('0x1ba')],{'as':'Subjects','foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0xba')][_0x7b44('0x109')](db[_0x7b44('0x1ba')],{'as':'Descriptions','foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xba')][_0x7b44('0x109')](db[_0x7b44('0x1ba')],{'as':_0x7b44('0x1a9'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0xba')][_0x7b44('0x115')](db['VtigerAccount'],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0x1ba')][_0x7b44('0x109')](db[_0x7b44('0x1ba')],{'as':_0x7b44('0x1b0'),'foreignKey':_0x7b44('0x1ad')});db[_0x7b44('0x1ba')][_0x7b44('0x109')](db['VtigerField'],{'as':_0x7b44('0x1b8'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0x1ba')][_0x7b44('0x109')](db[_0x7b44('0x1ba')],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0x1ba')][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':'Variable','foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0x1bb')][_0x7b44('0x109')](db['ServicenowConfiguration'],{'as':'Configurations','onDelete':_0x7b44('0x13e'),'foreignKey':'AccountId'});db['ServicenowConfiguration'][_0x7b44('0x109')](db['ServicenowField'],{'as':'Subjects','foreignKey':_0x7b44('0x1ad')});db['ServicenowConfiguration'][_0x7b44('0x109')](db[_0x7b44('0xbe')],{'as':_0x7b44('0x1ae'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0x1bc')][_0x7b44('0x109')](db[_0x7b44('0xbe')],{'as':_0x7b44('0x1a9'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0x1bc')]['belongsTo'](db[_0x7b44('0x1bb')],{'as':'Account','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xbe')][_0x7b44('0x109')](db[_0x7b44('0xbe')],{'as':_0x7b44('0x1b0'),'foreignKey':'SubjectId'});db[_0x7b44('0xbe')]['hasMany'](db['ServicenowField'],{'as':'Description','foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xbe')][_0x7b44('0x109')](db['ServicenowField'],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0xbe')][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xc0')]['hasMany'](db['Dynamics365Configuration'],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0x1bd')][_0x7b44('0x109')](db[_0x7b44('0xc2')],{'as':_0x7b44('0x1b5'),'onDelete':'cascade','foreignKey':_0x7b44('0x1ad')});db['Dynamics365Configuration']['hasMany'](db[_0x7b44('0xc2')],{'as':_0x7b44('0x1ae'),'onDelete':'cascade','foreignKey':_0x7b44('0x1b6')});db['Dynamics365Configuration']['hasMany'](db[_0x7b44('0xc2')],{'as':'Fields','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0x1bd')]['belongsTo'](db['Dynamics365Account'],{'as':'Account','foreignKey':_0x7b44('0x1ac')});db[_0x7b44('0xc2')][_0x7b44('0x109')](db[_0x7b44('0xc2')],{'as':_0x7b44('0x1b0'),'foreignKey':_0x7b44('0x1ad')});db['Dynamics365Field'][_0x7b44('0x109')](db[_0x7b44('0xc2')],{'as':_0x7b44('0x1b8'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0xc2')]['hasMany'](db[_0x7b44('0xc2')],{'as':_0x7b44('0x1b1'),'foreignKey':'FieldId'});db[_0x7b44('0xc2')][_0x7b44('0x115')](db[_0x7b44('0x8e')],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xc4')][_0x7b44('0x109')](db[_0x7b44('0x1be')],{'as':'Configurations','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1ac')});db['FreshsalesConfiguration']['hasMany'](db[_0x7b44('0xc7')],{'as':'Subjects','foreignKey':_0x7b44('0x1ad')});db['FreshsalesConfiguration']['hasMany'](db[_0x7b44('0xc7')],{'as':_0x7b44('0x1ae'),'foreignKey':_0x7b44('0x1b6')});db[_0x7b44('0x1be')]['hasMany'](db[_0x7b44('0xc7')],{'as':_0x7b44('0x1a9'),'foreignKey':_0x7b44('0x1af')});db[_0x7b44('0x1be')][_0x7b44('0x115')](db[_0x7b44('0xc4')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x1ac')});db['FreshsalesField']['hasMany'](db[_0x7b44('0xc7')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x7b44('0xc7')][_0x7b44('0x109')](db[_0x7b44('0xc7')],{'as':_0x7b44('0x1b8'),'foreignKey':'DescriptionId'});db[_0x7b44('0xc7')][_0x7b44('0x109')](db[_0x7b44('0xc7')],{'as':_0x7b44('0x1b1'),'foreignKey':_0x7b44('0x1af')});db['FreshsalesField'][_0x7b44('0x115')](db['Variable'],{'as':_0x7b44('0x8e'),'foreignKey':_0x7b44('0x1b2')});db[_0x7b44('0xca')][_0x7b44('0x115')](db['ChatWebsite'],{});db[_0x7b44('0xca')]['belongsTo'](db['CmList'],{'as':_0x7b44('0x16a'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0xca')]['belongsTo'](db[_0x7b44('0x11b')],{'as':'Contact','foreignKey':_0x7b44('0x155')});db[_0x7b44('0xca')][_0x7b44('0x115')](db['ChatInteraction'],{});db[_0x7b44('0xca')][_0x7b44('0x115')](db[_0x7b44('0x185')],{});db[_0x7b44('0xca')][_0x7b44('0x115')](db[_0x7b44('0x12')],{});db[_0x7b44('0xca')][_0x7b44('0x115')](db['ChatQueue'],{});db[_0x7b44('0xcc')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'onDelete':'cascade','foreignKey':_0x7b44('0x1bf')});db[_0x7b44('0xcc')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x1c0')});db[_0x7b44('0x190')][_0x7b44('0x109')](db['JscriptyQuestionReport'],{'foreignKey':_0x7b44('0x1c1'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x190')][_0x7b44('0x109')](db[_0x7b44('0xce')],{'foreignKey':'SessionId','onDelete':_0x7b44('0x13e')});db[_0x7b44('0x1c2')][_0x7b44('0x115')](db[_0x7b44('0x4b')],{});db[_0x7b44('0x1c2')]['belongsTo'](db[_0x7b44('0x11e')],{'as':'List','foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x1c2')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':_0x7b44('0x154'),'foreignKey':_0x7b44('0x155')});db[_0x7b44('0x1c2')]['belongsTo'](db[_0x7b44('0x4d')],{});db[_0x7b44('0x1c2')]['belongsTo'](db[_0x7b44('0x4e')],{});db[_0x7b44('0x1c2')][_0x7b44('0x115')](db[_0x7b44('0x12')],{});db[_0x7b44('0x1c2')][_0x7b44('0x115')](db['SmsQueue'],{});db[_0x7b44('0xd6')]['hasMany'](db[_0x7b44('0x190')],{'foreignKey':_0x7b44('0x1c3')});db['JscriptyProject'][_0x7b44('0x109')](db[_0x7b44('0xd0')],{'foreignKey':_0x7b44('0x1c3')});db['JscriptyProject'][_0x7b44('0x109')](db['JscriptyAnswerReport'],{'foreignKey':_0x7b44('0x1c3')});db[_0x7b44('0xdb')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':'Users','through':_0x7b44('0x13a')});db[_0x7b44('0xe0')][_0x7b44('0x118')](db['User'],{'as':_0x7b44('0x14b'),'through':'user_has_teams'});db['Team']['belongsToMany'](db[_0x7b44('0x128')],{'through':_0x7b44('0x105'),'as':'VoiceQueues'});db[_0x7b44('0xe0')][_0x7b44('0x118')](db[_0x7b44('0x37')],{'through':'team_has_mail_queues','as':_0x7b44('0x12a')});db[_0x7b44('0xe0')][_0x7b44('0x118')](db[_0x7b44('0x64')],{'through':'team_has_chat_queues','as':_0x7b44('0x12b')});db[_0x7b44('0xe0')]['belongsToMany'](db['FaxQueue'],{'through':_0x7b44('0x1c4'),'as':_0x7b44('0x1c5')});db[_0x7b44('0xe0')][_0x7b44('0x118')](db[_0x7b44('0x12d')],{'through':_0x7b44('0x17b'),'as':_0x7b44('0x12e')});db[_0x7b44('0xe0')][_0x7b44('0x118')](db[_0x7b44('0x58')],{'through':_0x7b44('0x183'),'as':_0x7b44('0x1c6')});db[_0x7b44('0xe0')][_0x7b44('0x118')](db[_0x7b44('0x101')],{'through':_0x7b44('0x1c7'),'as':_0x7b44('0x1c8')});db['Campaign']['hasMany'](db['CmHopper'],{'as':_0x7b44('0x18f'),'foreignKey':_0x7b44('0x195')});db['Campaign'][_0x7b44('0x109')](db['CmHopperFinal'],{'as':_0x7b44('0x10d'),'foreignKey':'CampaignId'});db[_0x7b44('0x194')][_0x7b44('0x109')](db[_0x7b44('0x71')],{'as':_0x7b44('0x143'),'foreignKey':_0x7b44('0x195')});db[_0x7b44('0x194')]['hasMany'](db[_0x7b44('0x6d')],{'as':_0x7b44('0x1c9'),'foreignKey':_0x7b44('0x195')});db[_0x7b44('0x194')]['belongsTo'](db[_0x7b44('0x29')],{'as':_0x7b44('0x29'),'foreignKey':_0x7b44('0x145')});db[_0x7b44('0x194')]['belongsTo'](db[_0x7b44('0x29')],{'as':_0x7b44('0x1ca'),'foreignKey':_0x7b44('0x146')});db[_0x7b44('0x194')][_0x7b44('0x115')](db[_0x7b44('0x7f')],{'as':'Interval','foreignKey':'IntervalId'});db[_0x7b44('0x194')][_0x7b44('0x115')](db[_0x7b44('0xdb')],{'as':_0x7b44('0xdb'),'foreignKey':_0x7b44('0x1cb')});db[_0x7b44('0x194')][_0x7b44('0x118')](db[_0x7b44('0x11e')],{'as':'Lists','through':_0x7b44('0x1cc')});db[_0x7b44('0x194')][_0x7b44('0x118')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x14d'),'through':_0x7b44('0x1cd')});db[_0x7b44('0xe7')][_0x7b44('0x115')](db[_0x7b44('0x166')],{'as':_0x7b44('0x166'),'foreignKey':'ChatOfflineMessageId'});db[_0x7b44('0x1ce')][_0x7b44('0x115')](db[_0x7b44('0x3c')],{});db[_0x7b44('0x1ce')][_0x7b44('0x115')](db['MailInteraction'],{});db[_0x7b44('0x1ce')][_0x7b44('0x115')](db[_0x7b44('0x35')],{'foreignKey':_0x7b44('0x1cf'),'as':_0x7b44('0x1d0')});db[_0x7b44('0x1ce')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d1'),'as':'FromAgent'});db[_0x7b44('0x1ce')]['belongsTo'](db[_0x7b44('0x12')],{'foreignKey':'ToUserId','as':_0x7b44('0x1d2')});db[_0x7b44('0x1ce')][_0x7b44('0x115')](db[_0x7b44('0x37')],{'foreignKey':_0x7b44('0x1d3'),'as':_0x7b44('0x1d4')});db['MailTransferReport']['belongsTo'](db[_0x7b44('0x35')],{'foreignKey':_0x7b44('0x1d5'),'as':'ToAccount'});db[_0x7b44('0xec')][_0x7b44('0x115')](db[_0x7b44('0x185')],{});db[_0x7b44('0xec')]['belongsTo'](db['ChatInteraction'],{});db['ChatTransferReport'][_0x7b44('0x115')](db[_0x7b44('0x5a')],{'foreignKey':_0x7b44('0x1d6'),'as':_0x7b44('0x1d0')});db[_0x7b44('0xec')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d1'),'as':_0x7b44('0x1d7')});db['ChatTransferReport'][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d8'),'as':_0x7b44('0x1d2')});db[_0x7b44('0xec')]['belongsTo'](db[_0x7b44('0x64')],{'foreignKey':_0x7b44('0x1d9'),'as':_0x7b44('0x1d4')});db[_0x7b44('0xec')]['belongsTo'](db[_0x7b44('0x5a')],{'foreignKey':_0x7b44('0x1da'),'as':_0x7b44('0x1db')});db['FaxTransferReport'][_0x7b44('0x115')](db['FaxMessage'],{});db[_0x7b44('0xee')][_0x7b44('0x115')](db[_0x7b44('0x47')],{});db[_0x7b44('0xee')][_0x7b44('0x115')](db[_0x7b44('0x134')],{'foreignKey':_0x7b44('0x1dc'),'as':_0x7b44('0x1d0')});db[_0x7b44('0xee')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d1'),'as':_0x7b44('0x1d7')});db['FaxTransferReport']['belongsTo'](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d8'),'as':_0x7b44('0x1d2')});db[_0x7b44('0xee')][_0x7b44('0x115')](db[_0x7b44('0x49')],{'foreignKey':_0x7b44('0x1dd'),'as':_0x7b44('0x1d4')});db[_0x7b44('0xee')][_0x7b44('0x115')](db['FaxAccount'],{'foreignKey':_0x7b44('0x1de'),'as':_0x7b44('0x1db')});db[_0x7b44('0xef')]['belongsTo'](db[_0x7b44('0x56')],{});db['OpenchannelTransferReport'][_0x7b44('0x115')](db[_0x7b44('0x54')],{});db[_0x7b44('0xef')][_0x7b44('0x115')](db[_0x7b44('0x51')],{'foreignKey':_0x7b44('0x1df'),'as':'FromAccount'});db[_0x7b44('0xef')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':'FromUserId','as':_0x7b44('0x1d7')});db['OpenchannelTransferReport']['belongsTo'](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d8'),'as':_0x7b44('0x1d2')});db[_0x7b44('0xef')][_0x7b44('0x115')](db[_0x7b44('0x58')],{'foreignKey':_0x7b44('0x1e0'),'as':_0x7b44('0x1d4')});db[_0x7b44('0xef')][_0x7b44('0x115')](db[_0x7b44('0x51')],{'foreignKey':_0x7b44('0x1e1'),'as':_0x7b44('0x1db')});db[_0x7b44('0xf1')][_0x7b44('0x115')](db[_0x7b44('0x4e')],{});db[_0x7b44('0xf1')][_0x7b44('0x115')](db[_0x7b44('0x4d')],{});db[_0x7b44('0xf1')]['belongsTo'](db[_0x7b44('0x4b')],{'foreignKey':_0x7b44('0x1e2'),'as':_0x7b44('0x1d0')});db[_0x7b44('0xf1')][_0x7b44('0x115')](db['User'],{'foreignKey':_0x7b44('0x1d1'),'as':_0x7b44('0x1d7')});db[_0x7b44('0xf1')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d8'),'as':_0x7b44('0x1d2')});db[_0x7b44('0xf1')][_0x7b44('0x115')](db[_0x7b44('0x12d')],{'foreignKey':_0x7b44('0x1e3'),'as':'ToQueue'});db[_0x7b44('0xf1')][_0x7b44('0x115')](db[_0x7b44('0x4b')],{'foreignKey':_0x7b44('0x1e4'),'as':_0x7b44('0x1db')});db[_0x7b44('0x11e')][_0x7b44('0x109')](db[_0x7b44('0x7b')],{'as':'Dispositions','foreignKey':_0x7b44('0x15c'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x11e')][_0x7b44('0x109')](db[_0x7b44('0x73')],{'as':_0x7b44('0x1e5'),'foreignKey':'ListId'});db['CmList']['hasMany'](db['CmContact'],{'as':'Contacts','onDelete':_0x7b44('0x13e'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x11e')][_0x7b44('0x109')](db[_0x7b44('0x6f')],{'as':_0x7b44('0x10d'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x11e')][_0x7b44('0x109')](db[_0x7b44('0x71')],{'as':_0x7b44('0x10e'),'foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x11e')][_0x7b44('0x109')](db[_0x7b44('0x72')],{'as':_0x7b44('0x72'),'foreignKey':_0x7b44('0x15c')});db['CmList'][_0x7b44('0x118')](db[_0x7b44('0x128')],{'as':_0x7b44('0x1e6'),'through':_0x7b44('0x14a')});db['CmList'][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':'cm_user_has_lists'});db[_0x7b44('0x1e7')][_0x7b44('0x109')](db['VoiceExtension'],{'as':_0x7b44('0x10c'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x1e7')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x132')});db[_0x7b44('0x116')][_0x7b44('0x109')](db['User'],{'as':'Users','foreignKey':_0x7b44('0x117')});db[_0x7b44('0x116')][_0x7b44('0x109')](db[_0x7b44('0xf6')],{'as':_0x7b44('0x1e8'),'foreignKey':_0x7b44('0x117'),'onDelete':'cascade'});db['UserProfileSection'][_0x7b44('0x109')](db['UserProfileResource'],{'as':_0x7b44('0x1e9'),'foreignKey':_0x7b44('0x1ea'),'onDelete':_0x7b44('0x13e')});db['WhatsappAccount'][_0x7b44('0x109')](db[_0x7b44('0x7b')],{'as':'Dispositions','foreignKey':_0x7b44('0x1eb'),'onDelete':_0x7b44('0x13e')});db[_0x7b44('0x1ec')][_0x7b44('0x109')](db[_0x7b44('0x79')],{'as':_0x7b44('0x16e'),'foreignKey':_0x7b44('0x1eb')});db[_0x7b44('0x1ec')][_0x7b44('0x109')](db[_0x7b44('0xfd')],{'as':_0x7b44('0x15a'),'foreignKey':_0x7b44('0x1eb')});db[_0x7b44('0x1ec')]['hasMany'](db[_0x7b44('0x112')],{'as':_0x7b44('0x15b')});db[_0x7b44('0x1ec')][_0x7b44('0x109')](db[_0x7b44('0xfb')],{'as':_0x7b44('0x170')});db['WhatsappAccount']['belongsTo'](db[_0x7b44('0x11e')],{'as':'List','foreignKey':_0x7b44('0x15c')});db[_0x7b44('0x1ec')][_0x7b44('0x115')](db['Pause'],{'as':_0x7b44('0x148'),'foreignKey':_0x7b44('0x149')});db[_0x7b44('0x1ec')]['belongsToMany'](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x139')});db[_0x7b44('0xfb')][_0x7b44('0x115')](db[_0x7b44('0x12')],{'onDelete':_0x7b44('0x168')});db[_0x7b44('0xfb')]['belongsTo'](db['WhatsappQueue'],{'onDelete':_0x7b44('0x168')});db['WhatsappApplication'][_0x7b44('0x115')](db[_0x7b44('0x1ec')],{'onDelete':_0x7b44('0x168')});db[_0x7b44('0xfb')]['belongsTo'](db['Interval'],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x147')});db[_0x7b44('0xfb')][_0x7b44('0x115')](db['Tag'],{'onDelete':_0x7b44('0x168'),'foreignKey':_0x7b44('0x169')});db[_0x7b44('0x112')][_0x7b44('0x109')](db[_0x7b44('0xfd')],{'as':'Messages','onDelete':'cascade','foreignKey':_0x7b44('0x1ed')});db[_0x7b44('0x112')][_0x7b44('0x115')](db[_0x7b44('0x1ec')],{'as':_0x7b44('0x15e'),'foreignKey':_0x7b44('0x1eb')});db[_0x7b44('0x112')][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':'Contact','foreignKey':_0x7b44('0x155')});db[_0x7b44('0x112')][_0x7b44('0x115')](db['User'],{'as':_0x7b44('0x15f'),'foreignKey':_0x7b44('0x108')});db[_0x7b44('0x112')][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':_0x7b44('0x1ee'),'as':_0x7b44('0x180')});db['WhatsappInteraction'][_0x7b44('0x118')](db[_0x7b44('0x88')],{'through':'whatsapp_interaction_has_tags','as':_0x7b44('0x161')});db[_0x7b44('0x112')][_0x7b44('0x118')](db[_0x7b44('0x12')],{'as':_0x7b44('0x162'),'through':_0x7b44('0x1ef'),'foreignKey':'WhatsappInteractionId'});db['WhatsappMessage']['belongsTo'](db[_0x7b44('0x12')],{'as':_0x7b44('0x12')});db[_0x7b44('0xfd')]['belongsTo'](db['CmContact'],{'onDelete':'cascade','as':_0x7b44('0x154')});db[_0x7b44('0xfd')][_0x7b44('0x115')](db[_0x7b44('0x112')],{'onDelete':_0x7b44('0x13e'),'as':_0x7b44('0x164'),'foreignKey':'WhatsappInteractionId'});db[_0x7b44('0xfd')][_0x7b44('0x115')](db['WhatsappAccount'],{'as':'Account','foreignKey':_0x7b44('0x1eb')});db[_0x7b44('0xfe')][_0x7b44('0x115')](db[_0x7b44('0x1ec')],{});db[_0x7b44('0xfe')][_0x7b44('0x115')](db[_0x7b44('0x11e')],{'as':_0x7b44('0x16a'),'foreignKey':'ListId'});db['WhatsappQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x11b')],{'as':'Contact','foreignKey':_0x7b44('0x155')});db[_0x7b44('0xfe')][_0x7b44('0x115')](db[_0x7b44('0x112')],{});db[_0x7b44('0xfe')][_0x7b44('0x115')](db[_0x7b44('0x101')],{});db[_0x7b44('0xfe')]['belongsTo'](db[_0x7b44('0xfd')],{});db['WhatsappQueueReport'][_0x7b44('0x115')](db[_0x7b44('0x12')],{});db[_0x7b44('0x100')]['belongsTo'](db['WhatsappMessage'],{});db['WhatsappTransferReport'][_0x7b44('0x115')](db[_0x7b44('0x112')],{});db[_0x7b44('0x100')][_0x7b44('0x115')](db[_0x7b44('0x1ec')],{'foreignKey':_0x7b44('0x1f0'),'as':_0x7b44('0x1d0')});db[_0x7b44('0x100')][_0x7b44('0x115')](db[_0x7b44('0x1ec')],{'foreignKey':_0x7b44('0x1f1'),'as':_0x7b44('0x1db')});db[_0x7b44('0x100')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x7b44('0x1f2'),'as':_0x7b44('0x1d4')});db[_0x7b44('0x100')]['belongsTo'](db[_0x7b44('0x12')],{'foreignKey':_0x7b44('0x1d1'),'as':_0x7b44('0x1d7')});db['WhatsappTransferReport'][_0x7b44('0x115')](db[_0x7b44('0x12')],{'foreignKey':'ToUserId','as':_0x7b44('0x1d2')});db[_0x7b44('0x101')]['belongsToMany'](db[_0x7b44('0x12')],{'as':_0x7b44('0x14b'),'through':_0x7b44('0x32'),'foreignKey':'WhatsappQueueId'});db['WhatsappQueue'][_0x7b44('0x118')](db[_0x7b44('0xe0')],{'through':_0x7b44('0x1c7'),'as':'Teams'});module[_0x7b44('0x1f3')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x0bb5=['../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','../api/intFreshsalesField/intFreshsalesField.model','Integration','Network','../api/network/network.model','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','Setting','../api/setting/setting.model','SquareOdbc','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','../api/team/team.model','License','../api/license/license.model','Campaign','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../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','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','hasOne','cascade','UserId','hasMany','VoiceQueuesRt','Extensions','HopperHistory','OpenchannelInteraction','OpenchannelInteractions','ChatInteraction','ChatInteractions','WhatsappInteractions','UserNotifications','SenderId','UserProfile','userProfileId','Groups','chat_group_has_users','belongsToMany','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_teams','MailInteractions','user_has_mail_interactions','user_has_chat_interactions','FaxInteractions','SmsInteractions','user_has_openchannel_interactions','VoicePrefixes','MailQueues','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueue','OpenchannelQueues','WhatsappQueue','WhatsappQueues','UserWhatsappQueue','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','user_has_mail_accounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','HopperFinals','HopperHistories','CmHopperBlack','TrunkId','TrunkBackup','TrunkBackupId','belongsTo','Interval','IntervalId','voice_queues_has_cm_lists','Team','voice_queues_has_cm_blacklists','VoiceMailMessage','Messages','mailboxuser','mailbox','uniqueid','AgentReports','ContactId','MailAccountId','MailServerOut','MailAccount','Smtp','Dispositions','Interactions','List','ListId','Template','mandatoryDispositionPause','mandatoryDispositionPauseId','Agents','Teams','MailInteractionId','Account','Contact','Owner','mail_interaction_has_tags','Tags','ThroughTags','Users','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessageId','restrict','TagId','Dashboard','Items','FaxAccountId','Exntensions','FaxInteractionId','fax_interaction_has_tags','user_has_fax_interactions','SmsAccountId','Answers','SmsApplication','SmsInteractionId','user_has_sms_interactions','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelMessage','OpenchannelInteractionId','openchannel_interaction_has_tags','AttachmentId','OpenchannelQueueId','team_has_openchannel_queues','ProactiveActions','OpenchannelQueueReport','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','team_has_chat_queues','ChatGroup','ChatInternalMessage','CompanyId','Hoppers','JscriptySessions','CmCompany','Company','cm_contact_has_tags','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Action','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','Mohs','sms_interaction_has_tags','Trigger','AllConditions','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','Fields','MetricId','Configurations','AccountId','SalesforceField','Descriptions','DescriptionId','FieldId','SubjectId','Field','SugarcrmConfiguration','Subjects','Subject','VariableId','DeskAccount','int_desk_configuration_has_tags','Description','ZohoAccount','int_zendesk_configuration_has_tags','int_freshdesk_configuration_has_tags','ServicenowField','Dynamics365Field','FreshsalesField','ChatQueueReport','SessionId','ProjectId','VoiceQueues','team_has_fax_queues','CampaignId','HopperBlacks','SquareProjectId','campaigns_has_cm_lists','FromMailAccountId','FromAccount','FromUserId','FromAgent','ToUserId','ToAgent','ToQueue','ToAccount','ChatTransferReport','FromChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','CustomFields','UserProfileSection','UserProfileSections','sectionId','WhatsappAccount','WhatsappAccountId','WhatsappApplication','WhatsappInteractionId','user_has_whatsapp_interactions','WhatsappQueueReport','FromWhatsappAccountId','ToQueueId','team_has_whatsapp_queues','exports','../config/environment','sequelize','determine','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','name','utf8','utf8_general_ci','sequelizeHistory','utf8mb4','database','options','username','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','VoiceQueue','VoiceRecording','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','../api/mailServerOut/mailServerOut.model','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelInteraction/openchannelInteraction.model','../api/openchannelMessage/openchannelMessage.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','CmCustomField','../api/cmCustomField/cmCustomField.model','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/trigger/trigger.model','Variable','../api/variable/variable.model','../api/integration/integration.model','IntegrationReport','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','DeskField','../api/intDeskField/intDeskField.model','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration'];(function(_0x31f1c6,_0x39c1fe){var _0x237921=function(_0x1525fa){while(--_0x1525fa){_0x31f1c6['push'](_0x31f1c6['shift']());}};_0x237921(++_0x39c1fe);}(_0x0bb5,0x148));var _0x50bb=function(_0x4b9ef4,_0x412fed){_0x4b9ef4=_0x4b9ef4-0x0;var _0x40013e=_0x0bb5[_0x4b9ef4];return _0x40013e;};'use strict';var config=require(_0x50bb('0x0'));var Sequelize=require(_0x50bb('0x1'));var _=require('lodash');var jstz=require('jstz');var timezone=jstz[_0x50bb('0x2')]();config[_0x50bb('0x1')]=_[_0x50bb('0x3')](config[_0x50bb('0x1')],{'database':_0x50bb('0x4'),'username':_0x50bb('0x5'),'password':_0x50bb('0x6'),'options':{'host':_0x50bb('0x7'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0x50bb('0x8')](),'define':{'charset':_0x50bb('0x9'),'collate':_0x50bb('0xa')}}});config[_0x50bb('0xb')]=_['defaultsDeep'](config['sequelizeHistory'],{'database':_0x50bb('0x4'),'username':_0x50bb('0x5'),'password':_0x50bb('0x6'),'options':{'host':_0x50bb('0x7'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x50bb('0xc')},'logging':![],'timezone':timezone[_0x50bb('0x8')](),'define':{'charset':_0x50bb('0x9'),'collate':_0x50bb('0xa')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x50bb('0x1')][_0x50bb('0xd')],config[_0x50bb('0x1')]['username'],config[_0x50bb('0x1')]['password'],config[_0x50bb('0x1')][_0x50bb('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x50bb('0xb')]['database'],config[_0x50bb('0xb')][_0x50bb('0xf')],config[_0x50bb('0xb')]['password'],config[_0x50bb('0xb')]['options'])};db[_0x50bb('0x10')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x12'));db[_0x50bb('0x13')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0x14'));db['VoiceContext']=db[_0x50bb('0x1')]['import'](_0x50bb('0x15'));db[_0x50bb('0x16')]=db['sequelize']['import'](_0x50bb('0x17'));db[_0x50bb('0x18')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/voiceMusicOnHold/voiceMusicOnHold.model');db[_0x50bb('0x19')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/voiceQueue/voiceQueue.model');db[_0x50bb('0x1a')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/voiceRecording/voiceRecording.model');db[_0x50bb('0x1b')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0x1c'));db[_0x50bb('0x1d')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x1e'));db['VoiceMailMessage']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x1f'));db[_0x50bb('0x20')]=db['sequelize'][_0x50bb('0x11')]('../api/voiceCallReport/voiceCallReport.model');db['VoiceDialReport']=db[_0x50bb('0x1')]['import']('../api/voiceDialReport/voiceDialReport.model');db[_0x50bb('0x21')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x22'));db[_0x50bb('0x23')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x24'));db['MemberReport']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x25'));db[_0x50bb('0x26')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0x27'));db[_0x50bb('0x28')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x29'));db[_0x50bb('0x2a')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x2b'));db[_0x50bb('0x2c')]=db[_0x50bb('0x1')]['import'](_0x50bb('0x2d'));db[_0x50bb('0x2e')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x2f'));db[_0x50bb('0x30')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x31'));db[_0x50bb('0x32')]=db[_0x50bb('0x1')]['import'](_0x50bb('0x33'));db[_0x50bb('0x34')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x35'));db[_0x50bb('0x36')]=db['sequelize']['import'](_0x50bb('0x37'));db['UserWhatsappQueue']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x38'));db[_0x50bb('0x39')]=db[_0x50bb('0x1')]['import'](_0x50bb('0x3a'));db['MailServerOut']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x3b'));db['MailAccount']=db['sequelize'][_0x50bb('0x11')](_0x50bb('0x3c'));db[_0x50bb('0x3d')]=db[_0x50bb('0x1')]['import'](_0x50bb('0x3e'));db['MailSubstatus']=db['sequelize'][_0x50bb('0x11')]('../api/mailSubstatus/mailSubstatus.model');db[_0x50bb('0x3f')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x40'));db[_0x50bb('0x41')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x42'));db[_0x50bb('0x43')]=db[_0x50bb('0x1')]['import']('../api/mailApplication/mailApplication.model');db[_0x50bb('0x44')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x45'));db['Dashboard']=db[_0x50bb('0x1')]['import'](_0x50bb('0x46'));db[_0x50bb('0x47')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x48'));db[_0x50bb('0x49')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x4a'));db[_0x50bb('0x4b')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x4c'));db[_0x50bb('0x4d')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/faxInteraction/faxInteraction.model');db[_0x50bb('0x4e')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0x4f'));db[_0x50bb('0x50')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x51'));db[_0x50bb('0x52')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x53'));db[_0x50bb('0x54')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x55'));db['SmsApplication']=db[_0x50bb('0x1')]['import'](_0x50bb('0x56'));db[_0x50bb('0x57')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x58'));db[_0x50bb('0x59')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/smsMessage/smsMessage.model');db[_0x50bb('0x5a')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x5b'));db[_0x50bb('0x5c')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0x5d'));db[_0x50bb('0x5e')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/openchannelApplication/openchannelApplication.model');db['OpenchannelInteraction']=db[_0x50bb('0x1')]['import'](_0x50bb('0x5f'));db['OpenchannelMessage']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x60'));db['OpenchannelQueue']=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/openchannelQueue/openchannelQueue.model');db[_0x50bb('0x61')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x62'));db['OpenchannelQueueReport']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x63'));db[_0x50bb('0x64')]=db[_0x50bb('0x1')]['import'](_0x50bb('0x65'));db['ChatInteraction']=db[_0x50bb('0x1')]['import']('../api/chatInteraction/chatInteraction.model');db[_0x50bb('0x66')]=db['sequelize']['import'](_0x50bb('0x67'));db[_0x50bb('0x68')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x69'));db[_0x50bb('0x6a')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/chatQueue/chatQueue.model');db['ChatGroup']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x6b'));db[_0x50bb('0x6c')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x6d'));db['CmCompany']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x6e'));db[_0x50bb('0x6f')]=db[_0x50bb('0x1')]['import'](_0x50bb('0x70'));db[_0x50bb('0x71')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x72'));db['CmHopperBlack']=db[_0x50bb('0x1')]['import']('../api/cmHopperBlack/cmHopperBlack.model');db[_0x50bb('0x73')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x74'));db[_0x50bb('0x75')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x76'));db[_0x50bb('0x77')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/reportAgentPreview/reportAgentPreview.model');db[_0x50bb('0x78')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0x79'));db['Action']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x7a'));db[_0x50bb('0x7b')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x7c'));db[_0x50bb('0x7d')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0x7e'));db[_0x50bb('0x7f')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0x80'));db[_0x50bb('0x81')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x82'));db['Interval']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x83'));db[_0x50bb('0x84')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/pause/pause.model');db[_0x50bb('0x85')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x86'));db[_0x50bb('0x87')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x88'));db[_0x50bb('0x89')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0x8a'));db[_0x50bb('0x8b')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x8c'));db[_0x50bb('0x8d')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/tag/tag.model');db['Template']=db['sequelize'][_0x50bb('0x11')]('../api/template/template.model');db['Trigger']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x8e'));db[_0x50bb('0x8f')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0x90'));db['Integration']=db[_0x50bb('0x1')]['import'](_0x50bb('0x91'));db[_0x50bb('0x92')]=db['sequelize'][_0x50bb('0x11')]('../api/integrationReport/integrationReport.model');db[_0x50bb('0x93')]=db[_0x50bb('0x1')]['import'](_0x50bb('0x94'));db[_0x50bb('0x95')]=db[_0x50bb('0x1')]['import'](_0x50bb('0x96'));db[_0x50bb('0x97')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/analyticExtractedReport/analyticExtractedReport.model');db[_0x50bb('0x98')]=db[_0x50bb('0x1')]['import']('../api/analyticMetric/analyticMetric.model');db[_0x50bb('0x99')]=db[_0x50bb('0x1')]['import'](_0x50bb('0x9a'));db[_0x50bb('0x9b')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x9c'));db['SalesforceAccount']=db['sequelize'][_0x50bb('0x11')](_0x50bb('0x9d'));db[_0x50bb('0x9e')]=db[_0x50bb('0x1')]['import'](_0x50bb('0x9f'));db['SalesforceField']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xa0'));db[_0x50bb('0xa1')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xa2'));db['SugarcrmConfiguration']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xa3'));db[_0x50bb('0xa4')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xa5'));db['DeskAccount']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xa6'));db[_0x50bb('0xa7')]=db[_0x50bb('0x1')]['import']('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x50bb('0xa8')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0xa9'));db['ZohoAccount']=db['sequelize'][_0x50bb('0x11')](_0x50bb('0xaa'));db[_0x50bb('0xab')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0xac'));db[_0x50bb('0xad')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xae'));db[_0x50bb('0xaf')]=db['sequelize']['import'](_0x50bb('0xb0'));db[_0x50bb('0xb1')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xb2'));db[_0x50bb('0xb3')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xb4'));db[_0x50bb('0xb5')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0xb6'));db[_0x50bb('0xb7')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xb8'));db[_0x50bb('0xb9')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xba'));db[_0x50bb('0xbb')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xbc'));db[_0x50bb('0xbd')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0xbe'));db[_0x50bb('0xbf')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0xc0'));db[_0x50bb('0xc1')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xc2'));db[_0x50bb('0xc3')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xc4'));db['ServicenowField']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xc5'));db[_0x50bb('0xc6')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xc7'));db[_0x50bb('0xc8')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xc9'));db['Dynamics365Field']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xca'));db[_0x50bb('0xcb')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0x50bb('0xcc')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0xcd'));db['FreshsalesField']=db['sequelize']['import'](_0x50bb('0xce'));db[_0x50bb('0xcf')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x91'));db[_0x50bb('0xd0')]=db[_0x50bb('0x1')]['import'](_0x50bb('0xd1'));db['ChatQueueReport']=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/chatQueueReport/chatQueueReport.model');db['ChatInternalMessage']=db[_0x50bb('0x1')]['import'](_0x50bb('0xd2'));db[_0x50bb('0xd3')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xd4'));db[_0x50bb('0xd5')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0xd6'));db[_0x50bb('0xd7')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xd8'));db[_0x50bb('0xd9')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/smsQueueReport/smsQueueReport.model');db['SquareReport']=db['sequelize'][_0x50bb('0x11')](_0x50bb('0xda'));db[_0x50bb('0xdb')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0xdc'));db[_0x50bb('0xdd')]=db['sequelize'][_0x50bb('0x11')]('../api/jscriptyProject/jscriptyProject.model');db[_0x50bb('0xde')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xdf'));db[_0x50bb('0xe0')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/squareOdbc/squareOdbc.model');db[_0x50bb('0xe1')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0xe2'));db[_0x50bb('0xe3')]=db[_0x50bb('0x1')]['import'](_0x50bb('0xe4'));db[_0x50bb('0xe5')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xe6'));db['Team']=db['sequelize'][_0x50bb('0x11')](_0x50bb('0xe7'));db[_0x50bb('0xe8')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xe9'));db[_0x50bb('0xea')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/campaign/campaign.model');db[_0x50bb('0xeb')]=db[_0x50bb('0x1')]['import'](_0x50bb('0xec'));db[_0x50bb('0xed')]=db[_0x50bb('0x1')]['import'](_0x50bb('0xee'));db[_0x50bb('0xef')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0xf0'));db[_0x50bb('0xf1')]=db[_0x50bb('0x1')]['import']('../api/mailTransferReport/mailTransferReport.model');db['ChatTransferReport']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xf2'));db[_0x50bb('0xf3')]=db[_0x50bb('0x1')]['import'](_0x50bb('0xf4'));db[_0x50bb('0xf5')]=db['sequelize'][_0x50bb('0x11')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x50bb('0xf6')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xf7'));db[_0x50bb('0xf8')]=db[_0x50bb('0x1')]['import'](_0x50bb('0xf9'));db[_0x50bb('0xfa')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xfb'));db['UserProfile']=db[_0x50bb('0x1')]['import']('../api/userProfile/userProfile.model');db['UserProfileSection']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xfc'));db[_0x50bb('0xfd')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0xfe'));db[_0x50bb('0xff')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x100'));db['WhatsappAccount']=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/whatsappAccount/whatsappAccount.model');db['WhatsappApplication']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x101'));db[_0x50bb('0x102')]=db[_0x50bb('0x1')][_0x50bb('0x11')]('../api/whatsappInteraction/whatsappInteraction.model');db[_0x50bb('0x103')]=db['sequelize'][_0x50bb('0x11')](_0x50bb('0x104'));db['WhatsappQueueReport']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x105'));db[_0x50bb('0x106')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x107'));db['WhatsappQueue']=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x108'));db[_0x50bb('0x109')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x10a'));db[_0x50bb('0x10b')]=db['sequelize'][_0x50bb('0x11')]('../api/teamVoiceQueue/teamVoiceQueue.model');db[_0x50bb('0x10c')]=db[_0x50bb('0x1')][_0x50bb('0x11')](_0x50bb('0x10d'));db[_0x50bb('0x10e')]=db[_0x50bb('0x1')]['import']('../api/userVoicePrefix/userVoicePrefix.model');db[_0x50bb('0x10')][_0x50bb('0x10f')](db[_0x50bb('0x1d')],{'as':_0x50bb('0x1d'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x111')});db[_0x50bb('0x10')][_0x50bb('0x112')](db[_0x50bb('0x1a')],{'as':'Recordings','foreignKey':'UserId'});db[_0x50bb('0x10')][_0x50bb('0x112')](db[_0x50bb('0x2a')],{'as':_0x50bb('0x113'),'foreignKey':_0x50bb('0x111')});db[_0x50bb('0x10')]['hasMany'](db[_0x50bb('0x16')],{'as':_0x50bb('0x114'),'onDelete':_0x50bb('0x110'),'hooks':!![]});db[_0x50bb('0x10')][_0x50bb('0x112')](db[_0x50bb('0x73')],{'as':'HopperFinals','foreignKey':'UserId'});db[_0x50bb('0x10')][_0x50bb('0x112')](db[_0x50bb('0x75')],{'as':_0x50bb('0x115'),'foreignKey':'UserId'});db[_0x50bb('0x10')]['hasMany'](db[_0x50bb('0x77')],{'as':'ReportAgentPreview','foreignKey':_0x50bb('0x111')});db[_0x50bb('0x10')][_0x50bb('0x112')](db[_0x50bb('0x116')],{'as':_0x50bb('0x117'),'foreignKey':_0x50bb('0x111')});db['User'][_0x50bb('0x112')](db[_0x50bb('0x118')],{'as':_0x50bb('0x119'),'foreignKey':_0x50bb('0x111')});db[_0x50bb('0x10')][_0x50bb('0x112')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':'UserId'});db['User'][_0x50bb('0x112')](db[_0x50bb('0x4d')],{'as':'FaxInteractions','foreignKey':_0x50bb('0x111')});db[_0x50bb('0x10')][_0x50bb('0x112')](db[_0x50bb('0x3f')],{'as':'MailInteractions','foreignKey':_0x50bb('0x111')});db[_0x50bb('0x10')][_0x50bb('0x112')](db[_0x50bb('0x102')],{'as':_0x50bb('0x11a'),'foreignKey':_0x50bb('0x111')});db[_0x50bb('0x10')][_0x50bb('0x112')](db[_0x50bb('0xff')],{'as':_0x50bb('0x11b'),'foreignKey':_0x50bb('0x11c')});db[_0x50bb('0x10')]['belongsTo'](db[_0x50bb('0x11d')],{'as':_0x50bb('0x11d'),'foreignKey':_0x50bb('0x11e')});db[_0x50bb('0x10')]['belongsToMany'](db['ChatGroup'],{'as':_0x50bb('0x11f'),'through':_0x50bb('0x120')});db[_0x50bb('0x10')][_0x50bb('0x121')](db[_0x50bb('0x6f')],{'as':_0x50bb('0x122'),'through':_0x50bb('0x123')});db[_0x50bb('0x10')][_0x50bb('0x121')](db['CmList'],{'as':_0x50bb('0x124'),'through':_0x50bb('0x125')});db[_0x50bb('0x10')]['belongsToMany'](db['Team'],{'through':_0x50bb('0x126')});db['User'][_0x50bb('0x121')](db[_0x50bb('0x3f')],{'as':_0x50bb('0x127'),'through':_0x50bb('0x128')});db['User'][_0x50bb('0x121')](db['ChatInteraction'],{'as':_0x50bb('0x119'),'through':_0x50bb('0x129')});db[_0x50bb('0x10')][_0x50bb('0x121')](db[_0x50bb('0x4d')],{'as':_0x50bb('0x12a'),'through':'user_has_fax_interactions'});db['User'][_0x50bb('0x121')](db[_0x50bb('0x57')],{'as':_0x50bb('0x12b'),'through':'user_has_sms_interactions'});db[_0x50bb('0x10')][_0x50bb('0x121')](db[_0x50bb('0x116')],{'as':_0x50bb('0x117'),'through':_0x50bb('0x12c')});db['User'][_0x50bb('0x121')](db[_0x50bb('0x102')],{'as':'WhatsappInteractions','through':'user_has_whatsapp_interactions'});db[_0x50bb('0x10')][_0x50bb('0x121')](db['VoiceQueue'],{'as':'VoiceQueues','through':_0x50bb('0x2c'),'required':![]});db[_0x50bb('0x10')][_0x50bb('0x121')](db[_0x50bb('0xfa')],{'as':_0x50bb('0x12d'),'through':_0x50bb('0x10e'),'required':![]});db[_0x50bb('0x10')][_0x50bb('0x121')](db[_0x50bb('0x3d')],{'as':_0x50bb('0x12e'),'through':'UserMailQueue','required':![]});db[_0x50bb('0x10')][_0x50bb('0x121')](db[_0x50bb('0x6a')],{'as':_0x50bb('0x12f'),'through':_0x50bb('0x2e'),'required':![],'hooks':!![]});db[_0x50bb('0x10')]['belongsToMany'](db['FaxQueue'],{'as':_0x50bb('0x130'),'through':'UserFaxQueue','required':![]});db[_0x50bb('0x10')][_0x50bb('0x121')](db[_0x50bb('0x5a')],{'as':_0x50bb('0x131'),'through':_0x50bb('0x34'),'required':![]});db[_0x50bb('0x10')][_0x50bb('0x121')](db[_0x50bb('0x132')],{'as':_0x50bb('0x133'),'through':_0x50bb('0x36'),'required':![]});db[_0x50bb('0x10')][_0x50bb('0x121')](db[_0x50bb('0x134')],{'as':_0x50bb('0x135'),'through':_0x50bb('0x136'),'required':![]});db['User']['belongsToMany'](db[_0x50bb('0xf8')],{'through':_0x50bb('0x125')});db[_0x50bb('0x10')][_0x50bb('0x121')](db['ChatWebsite'],{'as':'ChatWebsites','through':_0x50bb('0x137')});db[_0x50bb('0x10')][_0x50bb('0x121')](db[_0x50bb('0x49')],{'as':_0x50bb('0x138'),'through':_0x50bb('0x139')});db[_0x50bb('0x10')]['belongsToMany'](db['MailAccount'],{'as':'MailAccounts','through':_0x50bb('0x13a')});db[_0x50bb('0x10')][_0x50bb('0x121')](db[_0x50bb('0x5c')],{'as':'OpenchannelAccounts','through':_0x50bb('0x13b')});db[_0x50bb('0x10')][_0x50bb('0x121')](db['SmsAccount'],{'as':_0x50bb('0x13c'),'through':_0x50bb('0x13d')});db[_0x50bb('0x10')][_0x50bb('0x121')](db['WhatsappAccount'],{'as':_0x50bb('0x13e'),'through':_0x50bb('0x13f')});db['User'][_0x50bb('0x121')](db['SquareProject'],{'as':_0x50bb('0x140'),'through':_0x50bb('0x141')});db[_0x50bb('0x13')][_0x50bb('0x112')](db[_0x50bb('0x16')],{'as':_0x50bb('0x142'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x143')});db[_0x50bb('0x144')][_0x50bb('0x112')](db[_0x50bb('0x16')],{'onDelete':'cascade'});db[_0x50bb('0x16')]['hasMany'](db[_0x50bb('0x16')],{'as':_0x50bb('0x145'),'onDelete':_0x50bb('0x110')});db['VoiceMusicOnHold'][_0x50bb('0x121')](db['Sound'],{'as':_0x50bb('0x146'),'through':_0x50bb('0x147')});db[_0x50bb('0x19')][_0x50bb('0x112')](db[_0x50bb('0x2a')],{'as':_0x50bb('0x148'),'foreignKey':_0x50bb('0x149')});db[_0x50bb('0x19')][_0x50bb('0x112')](db[_0x50bb('0x71')],{'as':'Hoppers','foreignKey':_0x50bb('0x149')});db[_0x50bb('0x19')][_0x50bb('0x112')](db[_0x50bb('0x73')],{'as':_0x50bb('0x14a'),'foreignKey':_0x50bb('0x149')});db[_0x50bb('0x19')][_0x50bb('0x112')](db[_0x50bb('0x75')],{'as':_0x50bb('0x14b'),'foreignKey':_0x50bb('0x149')});db[_0x50bb('0x19')]['hasMany'](db[_0x50bb('0x77')],{'as':_0x50bb('0x77'),'foreignKey':_0x50bb('0x149')});db['VoiceQueue'][_0x50bb('0x112')](db[_0x50bb('0x14c')],{'as':'HopperBlacks','foreignKey':_0x50bb('0x149')});db['VoiceQueue'][_0x50bb('0x112')](db['JscriptySessionReport'],{'as':'JscriptySessions','foreignKey':_0x50bb('0x149')});db[_0x50bb('0x19')]['belongsTo'](db[_0x50bb('0x26')],{'as':_0x50bb('0x26'),'foreignKey':_0x50bb('0x14d')});db[_0x50bb('0x19')]['belongsTo'](db[_0x50bb('0x26')],{'as':_0x50bb('0x14e'),'foreignKey':_0x50bb('0x14f')});db[_0x50bb('0x19')][_0x50bb('0x150')](db[_0x50bb('0x151')],{'as':_0x50bb('0x151'),'foreignKey':_0x50bb('0x152')});db['VoiceQueue']['belongsTo'](db[_0x50bb('0x84')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x50bb('0x19')][_0x50bb('0x121')](db[_0x50bb('0xf8')],{'as':_0x50bb('0x124'),'through':_0x50bb('0x153')});db[_0x50bb('0x19')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x50bb('0x2c')});db[_0x50bb('0x19')]['belongsToMany'](db[_0x50bb('0x154')],{'as':'Teams','through':_0x50bb('0x10b')});db[_0x50bb('0x19')]['belongsToMany'](db[_0x50bb('0xf8')],{'as':'BlackLists','through':_0x50bb('0x155')});db[_0x50bb('0x1a')]['belongsTo'](db[_0x50bb('0x10')],{'as':_0x50bb('0x10'),'foreignKey':_0x50bb('0x111')});db[_0x50bb('0x1b')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'as':'User','foreignKey':_0x50bb('0x111')});db['VoiceMail'][_0x50bb('0x112')](db[_0x50bb('0x156')],{'as':_0x50bb('0x157'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x158'),'sourceKey':_0x50bb('0x159')});db[_0x50bb('0x156')][_0x50bb('0x150')](db[_0x50bb('0x1d')],{'foreignKey':_0x50bb('0x158'),'targetKey':_0x50bb('0x159')});db['VoiceCallReport'][_0x50bb('0x112')](db[_0x50bb('0x23')],{'as':'QueueCalls','foreignKey':_0x50bb('0x15a'),'constraints':![]});db[_0x50bb('0x20')][_0x50bb('0x112')](db[_0x50bb('0x21')],{'as':_0x50bb('0x15b'),'foreignKey':'uniqueid','constraints':![]});db[_0x50bb('0x20')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'as':_0x50bb('0x10'),'foreignKey':_0x50bb('0x111')});db['VoiceCallReport'][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'as':'Contact','foreignKey':_0x50bb('0x15c')});db[_0x50bb('0x39')][_0x50bb('0x150')](db['MailAccount'],{'as':'MailAccount','foreignKey':_0x50bb('0x15d')});db[_0x50bb('0x15e')][_0x50bb('0x150')](db['MailAccount'],{'as':'MailAccount','foreignKey':_0x50bb('0x15d')});db[_0x50bb('0x15f')][_0x50bb('0x10f')](db[_0x50bb('0x39')],{'as':'Imap','onDelete':_0x50bb('0x110')});db[_0x50bb('0x15f')][_0x50bb('0x10f')](db[_0x50bb('0x15e')],{'as':_0x50bb('0x160'),'onDelete':_0x50bb('0x110')});db[_0x50bb('0x15f')]['hasMany'](db['Disposition'],{'as':_0x50bb('0x161'),'foreignKey':_0x50bb('0x15d'),'onDelete':_0x50bb('0x110')});db['MailAccount'][_0x50bb('0x112')](db[_0x50bb('0x7d')],{'as':'Answers','foreignKey':'MailAccountId'});db[_0x50bb('0x15f')][_0x50bb('0x112')](db[_0x50bb('0x41')],{'as':'Messages','foreignKey':_0x50bb('0x15d')});db['MailAccount'][_0x50bb('0x112')](db[_0x50bb('0x3f')],{'as':_0x50bb('0x162')});db[_0x50bb('0x15f')]['hasMany'](db[_0x50bb('0x43')],{'as':'Applications'});db[_0x50bb('0x15f')][_0x50bb('0x150')](db[_0x50bb('0xf8')],{'as':_0x50bb('0x163'),'foreignKey':_0x50bb('0x164')});db['MailAccount'][_0x50bb('0x150')](db[_0x50bb('0x165')],{'as':_0x50bb('0x165'),'foreignKey':'TemplateId'});db[_0x50bb('0x15f')][_0x50bb('0x150')](db[_0x50bb('0x84')],{'as':_0x50bb('0x166'),'foreignKey':_0x50bb('0x167')});db[_0x50bb('0x15f')][_0x50bb('0x121')](db[_0x50bb('0x10')],{'as':_0x50bb('0x168'),'through':_0x50bb('0x13a')});db[_0x50bb('0x3d')]['belongsToMany'](db[_0x50bb('0x10')],{'as':_0x50bb('0x168'),'through':_0x50bb('0x30')});db[_0x50bb('0x3d')][_0x50bb('0x121')](db[_0x50bb('0x154')],{'through':'team_has_mail_queues','as':_0x50bb('0x169')});db[_0x50bb('0x3f')][_0x50bb('0x112')](db['MailMessage'],{'as':_0x50bb('0x157'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x16a')});db['MailInteraction'][_0x50bb('0x150')](db[_0x50bb('0x15f')],{'as':_0x50bb('0x16b'),'foreignKey':_0x50bb('0x15d')});db[_0x50bb('0x3f')][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'as':_0x50bb('0x16c'),'foreignKey':'ContactId'});db[_0x50bb('0x3f')][_0x50bb('0x150')](db['User'],{'as':_0x50bb('0x16d'),'foreignKey':_0x50bb('0x111')});db[_0x50bb('0x3f')][_0x50bb('0x121')](db[_0x50bb('0x8d')],{'through':_0x50bb('0x16e'),'as':_0x50bb('0x16f')});db['MailInteraction'][_0x50bb('0x121')](db['Tag'],{'through':_0x50bb('0x16e'),'as':_0x50bb('0x170')});db[_0x50bb('0x3f')][_0x50bb('0x121')](db[_0x50bb('0x10')],{'as':_0x50bb('0x171'),'through':'user_has_mail_interactions','foreignKey':'MailInteractionId'});db[_0x50bb('0x41')][_0x50bb('0x112')](db[_0x50bb('0xed')],{'as':_0x50bb('0x172'),'onDelete':'cascade'});db[_0x50bb('0x41')][_0x50bb('0x150')](db['User'],{'as':_0x50bb('0x10')});db[_0x50bb('0x41')][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'onDelete':_0x50bb('0x110'),'as':_0x50bb('0x16c')});db[_0x50bb('0x41')]['belongsTo'](db[_0x50bb('0x3f')],{'as':_0x50bb('0x173'),'foreignKey':_0x50bb('0x16a')});db[_0x50bb('0x41')][_0x50bb('0x150')](db['MailAccount'],{'as':_0x50bb('0x16b'),'foreignKey':_0x50bb('0x15d')});db[_0x50bb('0x41')][_0x50bb('0x150')](db[_0x50bb('0x61')],{'as':_0x50bb('0x61'),'foreignKey':_0x50bb('0x174')});db[_0x50bb('0x41')][_0x50bb('0x150')](db[_0x50bb('0x68')],{'as':'ChatOfflineMessage','foreignKey':_0x50bb('0x175')});db[_0x50bb('0x43')]['belongsTo'](db['User'],{'onDelete':_0x50bb('0x176')});db['MailApplication'][_0x50bb('0x150')](db['MailQueue'],{'onDelete':_0x50bb('0x176')});db['MailApplication']['belongsTo'](db[_0x50bb('0x15f')],{'onDelete':_0x50bb('0x176')});db['MailApplication'][_0x50bb('0x150')](db[_0x50bb('0x151')],{'onDelete':_0x50bb('0x176'),'foreignKey':_0x50bb('0x152')});db[_0x50bb('0x43')]['belongsTo'](db[_0x50bb('0x8d')],{'onDelete':'restrict','foreignKey':_0x50bb('0x177')});db[_0x50bb('0x44')][_0x50bb('0x150')](db[_0x50bb('0x15f')],{});db[_0x50bb('0x44')][_0x50bb('0x150')](db[_0x50bb('0xf8')],{'as':_0x50bb('0x163'),'foreignKey':_0x50bb('0x164')});db[_0x50bb('0x44')]['belongsTo'](db[_0x50bb('0x6f')],{'as':_0x50bb('0x16c'),'foreignKey':_0x50bb('0x15c')});db['MailQueueReport'][_0x50bb('0x150')](db['MailInteraction'],{});db[_0x50bb('0x44')][_0x50bb('0x150')](db[_0x50bb('0x41')],{});db['MailQueueReport'][_0x50bb('0x150')](db[_0x50bb('0x10')],{});db['MailQueueReport'][_0x50bb('0x150')](db['MailQueue'],{});db[_0x50bb('0x178')][_0x50bb('0x112')](db[_0x50bb('0x47')],{'as':_0x50bb('0x179'),'onDelete':_0x50bb('0x110')});db['FaxAccount']['hasMany'](db['Disposition'],{'as':'Dispositions','foreignKey':_0x50bb('0x17a'),'onDelete':_0x50bb('0x110')});db[_0x50bb('0x49')]['hasMany'](db[_0x50bb('0x7d')],{'as':'Answers','foreignKey':'FaxAccountId'});db[_0x50bb('0x49')][_0x50bb('0x112')](db['FaxInteraction'],{'as':'Interactions'});db[_0x50bb('0x49')][_0x50bb('0x112')](db[_0x50bb('0x4b')],{'as':_0x50bb('0x145')});db[_0x50bb('0x49')][_0x50bb('0x112')](db[_0x50bb('0x16')],{'as':_0x50bb('0x17b'),'onDelete':_0x50bb('0x110')});db[_0x50bb('0x49')]['hasMany'](db[_0x50bb('0x4e')],{'as':_0x50bb('0x157')});db[_0x50bb('0x49')][_0x50bb('0x150')](db[_0x50bb('0x26')],{'as':_0x50bb('0x26')});db[_0x50bb('0x49')][_0x50bb('0x150')](db[_0x50bb('0xf8')],{'as':_0x50bb('0x163'),'foreignKey':_0x50bb('0x164')});db['FaxAccount']['belongsTo'](db[_0x50bb('0x84')],{'as':_0x50bb('0x166'),'foreignKey':_0x50bb('0x167')});db[_0x50bb('0x49')]['belongsToMany'](db[_0x50bb('0x10')],{'as':'Agents','through':_0x50bb('0x139')});db[_0x50bb('0x4b')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'onDelete':_0x50bb('0x176')});db[_0x50bb('0x4b')][_0x50bb('0x150')](db[_0x50bb('0x50')],{'onDelete':_0x50bb('0x176')});db[_0x50bb('0x4b')][_0x50bb('0x150')](db[_0x50bb('0x49')],{'onDelete':'restrict'});db[_0x50bb('0x4b')]['belongsTo'](db['Tag'],{'onDelete':_0x50bb('0x176'),'foreignKey':'TagId'});db['FaxInteraction'][_0x50bb('0x112')](db['FaxMessage'],{'as':'Messages','onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x17c')});db[_0x50bb('0x4d')][_0x50bb('0x150')](db['FaxAccount'],{'as':'Account','foreignKey':'FaxAccountId'});db[_0x50bb('0x4d')][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'as':_0x50bb('0x16c'),'foreignKey':_0x50bb('0x15c')});db[_0x50bb('0x4d')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'as':_0x50bb('0x16d'),'foreignKey':_0x50bb('0x111')});db[_0x50bb('0x4d')][_0x50bb('0x121')](db[_0x50bb('0x8d')],{'through':'fax_interaction_has_tags','as':'Tags'});db[_0x50bb('0x4d')][_0x50bb('0x121')](db[_0x50bb('0x8d')],{'through':_0x50bb('0x17d'),'as':_0x50bb('0x170')});db[_0x50bb('0x4d')]['belongsToMany'](db[_0x50bb('0x10')],{'as':'Users','through':_0x50bb('0x17e'),'foreignKey':_0x50bb('0x17c')});db[_0x50bb('0x4e')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'onDelete':_0x50bb('0x110'),'as':_0x50bb('0x10')});db[_0x50bb('0x4e')]['belongsTo'](db[_0x50bb('0x4d')],{'as':_0x50bb('0x173'),'foreignKey':_0x50bb('0x17c')});db[_0x50bb('0x4e')][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'onDelete':_0x50bb('0x110'),'as':_0x50bb('0x16c')});db[_0x50bb('0x4e')][_0x50bb('0x150')](db[_0x50bb('0xed')],{'as':_0x50bb('0xed'),'foreignKey':'AttachmentId'});db[_0x50bb('0x4e')][_0x50bb('0x150')](db[_0x50bb('0x49')],{'as':_0x50bb('0x16b'),'foreignKey':'FaxAccountId'});db[_0x50bb('0x50')][_0x50bb('0x121')](db['User'],{'as':_0x50bb('0x168'),'through':_0x50bb('0x32')});db['FaxQueue'][_0x50bb('0x121')](db[_0x50bb('0x154')],{'through':'team_has_fax_queues','as':'Teams'});db[_0x50bb('0x52')][_0x50bb('0x150')](db[_0x50bb('0x49')],{});db['FaxQueueReport'][_0x50bb('0x150')](db['CmList'],{'as':_0x50bb('0x163'),'foreignKey':_0x50bb('0x164')});db[_0x50bb('0x52')][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'as':_0x50bb('0x16c'),'foreignKey':'ContactId'});db['FaxQueueReport'][_0x50bb('0x150')](db['FaxInteraction'],{});db[_0x50bb('0x52')][_0x50bb('0x150')](db[_0x50bb('0x4e')],{});db['FaxQueueReport'][_0x50bb('0x150')](db[_0x50bb('0x10')],{});db[_0x50bb('0x52')][_0x50bb('0x150')](db[_0x50bb('0x50')],{});db[_0x50bb('0x54')][_0x50bb('0x112')](db[_0x50bb('0x7f')],{'as':_0x50bb('0x161'),'foreignKey':_0x50bb('0x17f'),'onDelete':_0x50bb('0x110')});db[_0x50bb('0x54')][_0x50bb('0x112')](db[_0x50bb('0x7d')],{'as':_0x50bb('0x180'),'foreignKey':_0x50bb('0x17f')});db['SmsAccount'][_0x50bb('0x112')](db[_0x50bb('0x59')],{'as':_0x50bb('0x157'),'foreignKey':_0x50bb('0x17f')});db['SmsAccount'][_0x50bb('0x112')](db[_0x50bb('0x57')],{'as':_0x50bb('0x162')});db[_0x50bb('0x54')][_0x50bb('0x112')](db[_0x50bb('0x181')],{'as':'Applications'});db[_0x50bb('0x54')]['belongsTo'](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x50bb('0x54')]['belongsTo'](db['Pause'],{'as':_0x50bb('0x166'),'foreignKey':_0x50bb('0x167')});db[_0x50bb('0x54')][_0x50bb('0x121')](db['User'],{'as':_0x50bb('0x168'),'through':'user_has_sms_accounts'});db[_0x50bb('0x181')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'onDelete':'restrict'});db[_0x50bb('0x181')][_0x50bb('0x150')](db['SmsQueue'],{'onDelete':_0x50bb('0x176')});db[_0x50bb('0x181')][_0x50bb('0x150')](db[_0x50bb('0x54')],{'onDelete':_0x50bb('0x176')});db[_0x50bb('0x181')][_0x50bb('0x150')](db[_0x50bb('0x151')],{'onDelete':_0x50bb('0x176'),'foreignKey':_0x50bb('0x152')});db['SmsApplication'][_0x50bb('0x150')](db[_0x50bb('0x8d')],{'onDelete':_0x50bb('0x176'),'foreignKey':'TagId'});db['SmsInteraction']['hasMany'](db[_0x50bb('0x59')],{'as':_0x50bb('0x157'),'onDelete':'cascade','foreignKey':_0x50bb('0x182')});db['SmsInteraction'][_0x50bb('0x150')](db[_0x50bb('0x54')],{'as':_0x50bb('0x16b'),'foreignKey':_0x50bb('0x17f')});db[_0x50bb('0x57')][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'as':_0x50bb('0x16c'),'foreignKey':_0x50bb('0x15c')});db['SmsInteraction'][_0x50bb('0x150')](db[_0x50bb('0x10')],{'as':_0x50bb('0x16d'),'foreignKey':_0x50bb('0x111')});db['SmsInteraction'][_0x50bb('0x121')](db[_0x50bb('0x8d')],{'through':'sms_interaction_has_tags','as':_0x50bb('0x16f')});db['SmsInteraction'][_0x50bb('0x121')](db['Tag'],{'through':'sms_interaction_has_tags','as':'ThroughTags'});db['SmsInteraction'][_0x50bb('0x121')](db['User'],{'as':_0x50bb('0x171'),'through':_0x50bb('0x183'),'foreignKey':_0x50bb('0x182')});db[_0x50bb('0x59')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'as':_0x50bb('0x10')});db[_0x50bb('0x59')][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'onDelete':_0x50bb('0x110'),'as':'Contact'});db['SmsMessage']['belongsTo'](db['SmsInteraction'],{'onDelete':_0x50bb('0x110'),'as':'Interaction','foreignKey':_0x50bb('0x182')});db[_0x50bb('0x59')][_0x50bb('0x150')](db[_0x50bb('0x54')],{'as':_0x50bb('0x16b'),'foreignKey':'SmsAccountId'});db[_0x50bb('0x5a')]['belongsToMany'](db[_0x50bb('0x10')],{'as':_0x50bb('0x168'),'through':_0x50bb('0x34'),'foreignKey':_0x50bb('0x184')});db[_0x50bb('0x5a')][_0x50bb('0x121')](db['Team'],{'through':_0x50bb('0x185'),'as':_0x50bb('0x169')});db[_0x50bb('0x5c')][_0x50bb('0x112')](db['Disposition'],{'as':_0x50bb('0x161'),'foreignKey':_0x50bb('0x186'),'onDelete':_0x50bb('0x110')});db[_0x50bb('0x5c')][_0x50bb('0x112')](db[_0x50bb('0x7d')],{'as':_0x50bb('0x180'),'foreignKey':_0x50bb('0x186')});db['OpenchannelAccount'][_0x50bb('0x112')](db['OpenchannelInteraction'],{'as':'Interactions','foreignKey':'OpenchannelAccountId'});db[_0x50bb('0x5c')]['hasMany'](db[_0x50bb('0x187')],{'as':_0x50bb('0x157'),'foreignKey':_0x50bb('0x186')});db[_0x50bb('0x5c')][_0x50bb('0x112')](db[_0x50bb('0x5e')],{'as':_0x50bb('0x145'),'foreignKey':_0x50bb('0x186')});db[_0x50bb('0x5c')][_0x50bb('0x150')](db[_0x50bb('0xf8')],{'as':_0x50bb('0x163'),'foreignKey':_0x50bb('0x164')});db[_0x50bb('0x5c')]['belongsTo'](db[_0x50bb('0x84')],{'as':'mandatoryDispositionPause','foreignKey':_0x50bb('0x167')});db[_0x50bb('0x5c')][_0x50bb('0x121')](db[_0x50bb('0x10')],{'as':_0x50bb('0x168'),'through':_0x50bb('0x13b')});db[_0x50bb('0x5e')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'onDelete':'restrict'});db['OpenchannelApplication'][_0x50bb('0x150')](db[_0x50bb('0x132')],{'onDelete':_0x50bb('0x176'),'foreignKey':'OpenchannelQueueId'});db[_0x50bb('0x5e')]['belongsTo'](db[_0x50bb('0x5c')],{'onDelete':_0x50bb('0x176'),'foreignKey':_0x50bb('0x186')});db[_0x50bb('0x5e')]['belongsTo'](db[_0x50bb('0x151')],{'onDelete':_0x50bb('0x176'),'foreignKey':_0x50bb('0x152')});db[_0x50bb('0x5e')]['belongsTo'](db[_0x50bb('0x8d')],{'onDelete':_0x50bb('0x176'),'foreignKey':'TagId'});db[_0x50bb('0x116')][_0x50bb('0x112')](db[_0x50bb('0x187')],{'as':_0x50bb('0x157'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x188')});db['OpenchannelInteraction'][_0x50bb('0x150')](db['OpenchannelAccount'],{'as':'Account','foreignKey':_0x50bb('0x186')});db[_0x50bb('0x116')]['belongsTo'](db[_0x50bb('0x6f')],{'as':_0x50bb('0x16c'),'foreignKey':'ContactId'});db[_0x50bb('0x116')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'as':_0x50bb('0x16d'),'foreignKey':_0x50bb('0x111')});db['OpenchannelInteraction'][_0x50bb('0x121')](db['Tag'],{'through':_0x50bb('0x189'),'as':'Tags'});db[_0x50bb('0x116')]['belongsToMany'](db['Tag'],{'through':_0x50bb('0x189'),'as':_0x50bb('0x170')});db[_0x50bb('0x116')][_0x50bb('0x121')](db[_0x50bb('0x10')],{'as':_0x50bb('0x171'),'through':_0x50bb('0x12c'),'foreignKey':_0x50bb('0x188')});db[_0x50bb('0x187')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'onDelete':_0x50bb('0x110'),'as':_0x50bb('0x10')});db['OpenchannelMessage']['belongsTo'](db[_0x50bb('0x6f')],{'onDelete':_0x50bb('0x110'),'as':_0x50bb('0x16c')});db[_0x50bb('0x187')]['belongsTo'](db['OpenchannelInteraction'],{'onDelete':_0x50bb('0x110'),'as':_0x50bb('0x173'),'foreignKey':'OpenchannelInteractionId'});db[_0x50bb('0x187')][_0x50bb('0x150')](db[_0x50bb('0xed')],{'as':_0x50bb('0xed'),'foreignKey':_0x50bb('0x18a')});db['OpenchannelMessage']['belongsTo'](db[_0x50bb('0x5c')],{'as':_0x50bb('0x16b'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelQueue'][_0x50bb('0x121')](db[_0x50bb('0x10')],{'as':'Agents','through':'UserOpenchannelQueue','foreignKey':_0x50bb('0x18b')});db['OpenchannelQueue'][_0x50bb('0x121')](db['Team'],{'through':_0x50bb('0x18c'),'as':'Teams'});db['ChatWebsite'][_0x50bb('0x112')](db['Disposition'],{'as':_0x50bb('0x161'),'foreignKey':_0x50bb('0x174'),'onDelete':_0x50bb('0x110')});db[_0x50bb('0x61')][_0x50bb('0x112')](db[_0x50bb('0x7d')],{'as':_0x50bb('0x180'),'foreignKey':'ChatWebsiteId'});db[_0x50bb('0x61')][_0x50bb('0x112')](db[_0x50bb('0x6c')],{'as':_0x50bb('0x18d')});db[_0x50bb('0x61')][_0x50bb('0x112')](db['ChatInteraction'],{'as':_0x50bb('0x162')});db[_0x50bb('0x61')]['hasMany'](db[_0x50bb('0x64')],{'as':'Applications'});db[_0x50bb('0x61')]['hasMany'](db[_0x50bb('0x66')],{'as':_0x50bb('0x157')});db[_0x50bb('0x61')][_0x50bb('0x150')](db[_0x50bb('0xf8')],{'as':_0x50bb('0x163'),'foreignKey':_0x50bb('0x164')});db[_0x50bb('0x61')][_0x50bb('0x150')](db[_0x50bb('0x151')],{'as':_0x50bb('0x151'),'foreignKey':'IntervalId'});db[_0x50bb('0x61')][_0x50bb('0x150')](db['MailAccount'],{'as':_0x50bb('0x15f'),'foreignKey':'MailAccountId'});db[_0x50bb('0x61')][_0x50bb('0x150')](db['Pause'],{'as':_0x50bb('0x166'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x50bb('0x61')][_0x50bb('0x121')](db[_0x50bb('0x10')],{'as':_0x50bb('0x168'),'through':_0x50bb('0x137')});db[_0x50bb('0x18e')][_0x50bb('0x150')](db[_0x50bb('0x5c')],{});db[_0x50bb('0x18e')][_0x50bb('0x150')](db[_0x50bb('0xf8')],{'as':'List','foreignKey':_0x50bb('0x164')});db[_0x50bb('0x18e')][_0x50bb('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x50bb('0x15c')});db[_0x50bb('0x18e')][_0x50bb('0x150')](db[_0x50bb('0x116')],{});db['OpenchannelQueueReport'][_0x50bb('0x150')](db[_0x50bb('0x187')],{});db[_0x50bb('0x18e')][_0x50bb('0x150')](db['User'],{});db[_0x50bb('0x18e')][_0x50bb('0x150')](db[_0x50bb('0x132')],{});db['ChatApplication'][_0x50bb('0x150')](db['User'],{'as':_0x50bb('0x18f'),'foreignKey':'UserId','onDelete':_0x50bb('0x176')});db[_0x50bb('0x64')][_0x50bb('0x150')](db['ChatQueue'],{'as':_0x50bb('0x190'),'foreignKey':_0x50bb('0x191'),'onDelete':'restrict'});db[_0x50bb('0x64')][_0x50bb('0x150')](db[_0x50bb('0x61')],{'as':_0x50bb('0x192'),'foreignKey':_0x50bb('0x174'),'onDelete':_0x50bb('0x176')});db['ChatApplication'][_0x50bb('0x150')](db['Tag'],{'onDelete':'restrict','foreignKey':_0x50bb('0x177')});db[_0x50bb('0x118')]['hasMany'](db[_0x50bb('0x66')],{'as':_0x50bb('0x157'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x193')});db[_0x50bb('0x118')][_0x50bb('0x150')](db[_0x50bb('0x61')],{'as':_0x50bb('0x16b'),'foreignKey':_0x50bb('0x174')});db[_0x50bb('0x118')]['belongsTo'](db[_0x50bb('0x6f')],{'as':_0x50bb('0x16c'),'foreignKey':_0x50bb('0x15c')});db[_0x50bb('0x118')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'as':_0x50bb('0x16d'),'foreignKey':'UserId'});db[_0x50bb('0x118')]['belongsToMany'](db[_0x50bb('0x8d')],{'through':_0x50bb('0x194'),'as':_0x50bb('0x16f')});db[_0x50bb('0x118')][_0x50bb('0x121')](db[_0x50bb('0x8d')],{'through':_0x50bb('0x194'),'as':_0x50bb('0x170')});db[_0x50bb('0x118')][_0x50bb('0x121')](db[_0x50bb('0x10')],{'as':_0x50bb('0x171'),'through':_0x50bb('0x129'),'foreignKey':'ChatInteractionId'});db[_0x50bb('0x66')][_0x50bb('0x150')](db['User'],{'onDelete':'cascade','as':_0x50bb('0x10')});db[_0x50bb('0x66')][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'onDelete':'cascade','as':_0x50bb('0x16c'),'foreignKey':'ContactId'});db[_0x50bb('0x66')][_0x50bb('0x150')](db[_0x50bb('0x118')],{'onDelete':_0x50bb('0x110'),'as':'Interaction','foreignKey':'ChatInteractionId'});db[_0x50bb('0x66')]['belongsTo'](db['Attachment'],{'as':_0x50bb('0xed'),'foreignKey':_0x50bb('0x18a')});db[_0x50bb('0x66')][_0x50bb('0x150')](db[_0x50bb('0x61')],{'as':_0x50bb('0x16b'),'foreignKey':_0x50bb('0x174')});db[_0x50bb('0x68')][_0x50bb('0x112')](db['Attachment'],{'as':_0x50bb('0x172'),'foreignKey':_0x50bb('0x175'),'onDelete':'cascade','hooks':!![]});db['ChatOfflineMessage'][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'onDelete':_0x50bb('0x110'),'as':_0x50bb('0x16c'),'foreignKey':_0x50bb('0x15c')});db[_0x50bb('0x68')]['belongsTo'](db['ChatWebsite'],{'as':_0x50bb('0x16b'),'foreignKey':'ChatWebsiteId'});db[_0x50bb('0x6a')][_0x50bb('0x121')](db[_0x50bb('0x10')],{'as':_0x50bb('0x168'),'through':_0x50bb('0x2e'),'hooks':!![]});db[_0x50bb('0x6a')][_0x50bb('0x121')](db['Team'],{'through':_0x50bb('0x195'),'as':_0x50bb('0x169')});db[_0x50bb('0x196')][_0x50bb('0x112')](db[_0x50bb('0x197')],{'as':_0x50bb('0x157'),'foreignKey':'ChatGroupId','onDelete':'cascade'});db['ChatGroup'][_0x50bb('0x121')](db[_0x50bb('0x10')],{'as':_0x50bb('0x148'),'through':_0x50bb('0x120')});db[_0x50bb('0x6c')]['belongsTo'](db[_0x50bb('0x61')],{'as':_0x50bb('0x192'),'foreignKey':_0x50bb('0x174')});db['CmCompany']['hasMany'](db['CmContact'],{'as':_0x50bb('0x122'),'foreignKey':_0x50bb('0x198')});db[_0x50bb('0x6f')][_0x50bb('0x112')](db['CmHopper'],{'as':_0x50bb('0x199'),'foreignKey':_0x50bb('0x15c')});db['CmContact']['hasMany'](db['CmHopperFinal'],{'as':_0x50bb('0x14a'),'foreignKey':_0x50bb('0x15c')});db[_0x50bb('0x6f')]['hasMany'](db[_0x50bb('0x75')],{'as':_0x50bb('0x14b'),'foreignKey':_0x50bb('0x15c')});db[_0x50bb('0x6f')][_0x50bb('0x112')](db[_0x50bb('0x77')],{'as':'ReportAgentPreview','foreignKey':_0x50bb('0x15c')});db[_0x50bb('0x6f')][_0x50bb('0x112')](db[_0x50bb('0xd7')],{'as':_0x50bb('0x19a'),'foreignKey':_0x50bb('0x15c')});db[_0x50bb('0x6f')][_0x50bb('0x112')](db[_0x50bb('0x116')],{'as':_0x50bb('0x117'),'foreignKey':'ContactId','onDelete':_0x50bb('0x176')});db[_0x50bb('0x6f')]['hasMany'](db[_0x50bb('0x118')],{'as':'ChatInteractions','foreignKey':_0x50bb('0x15c'),'onDelete':_0x50bb('0x176')});db[_0x50bb('0x6f')]['hasMany'](db[_0x50bb('0x57')],{'as':'SmsInteractions','foreignKey':_0x50bb('0x15c'),'onDelete':_0x50bb('0x176')});db[_0x50bb('0x6f')]['hasMany'](db[_0x50bb('0x4d')],{'as':_0x50bb('0x12a'),'foreignKey':_0x50bb('0x15c'),'onDelete':_0x50bb('0x176')});db[_0x50bb('0x6f')][_0x50bb('0x112')](db[_0x50bb('0x3f')],{'as':_0x50bb('0x127'),'foreignKey':_0x50bb('0x15c'),'onDelete':_0x50bb('0x176')});db['CmContact'][_0x50bb('0x150')](db[_0x50bb('0x19b')],{'as':_0x50bb('0x19c'),'foreignKey':_0x50bb('0x198')});db[_0x50bb('0x6f')][_0x50bb('0x150')](db[_0x50bb('0xf8')],{'as':_0x50bb('0x163'),'foreignKey':_0x50bb('0x164'),'onDelete':_0x50bb('0x110')});db['CmContact'][_0x50bb('0x121')](db[_0x50bb('0x10')],{'as':'Users','through':_0x50bb('0x123')});db[_0x50bb('0x6f')]['belongsToMany'](db['Tag'],{'as':'Tags','through':'cm_contact_has_tags'});db['CmContact'][_0x50bb('0x121')](db[_0x50bb('0x8d')],{'through':_0x50bb('0x19d'),'as':_0x50bb('0x170')});db[_0x50bb('0x71')]['belongsTo'](db[_0x50bb('0x6f')],{'as':_0x50bb('0x16c'),'foreignKey':_0x50bb('0x15c'),'onDelete':_0x50bb('0x110')});db[_0x50bb('0x71')][_0x50bb('0x150')](db[_0x50bb('0xf8')],{'as':'List','foreignKey':_0x50bb('0x164'),'onDelete':_0x50bb('0x110')});db[_0x50bb('0x71')][_0x50bb('0x150')](db['User'],{'as':_0x50bb('0x18f'),'foreignKey':_0x50bb('0x111')});db[_0x50bb('0x71')][_0x50bb('0x150')](db[_0x50bb('0x19')],{'as':_0x50bb('0x190'),'foreignKey':_0x50bb('0x149'),'onDelete':_0x50bb('0x110')});db[_0x50bb('0x71')][_0x50bb('0x150')](db['Campaign'],{'as':_0x50bb('0xea'),'foreignKey':'CampaignId','onDelete':_0x50bb('0x110')});db[_0x50bb('0x71')]['belongsTo'](db['User'],{'as':_0x50bb('0x16d'),'foreignKey':'OwnerId'});db[_0x50bb('0x14c')][_0x50bb('0x150')](db['CmContact'],{'as':_0x50bb('0x16c'),'foreignKey':_0x50bb('0x15c'),'onDelete':_0x50bb('0x110')});db['CmHopperBlack']['belongsTo'](db[_0x50bb('0xf8')],{'as':'List','foreignKey':_0x50bb('0x164'),'onDelete':'cascade'});db[_0x50bb('0x14c')][_0x50bb('0x150')](db[_0x50bb('0x19')],{'as':_0x50bb('0x190'),'foreignKey':'VoiceQueueId','onDelete':_0x50bb('0x110')});db[_0x50bb('0x14c')][_0x50bb('0x150')](db[_0x50bb('0xea')],{'as':_0x50bb('0xea'),'foreignKey':'CampaignId','onDelete':_0x50bb('0x110')});db[_0x50bb('0x7b')][_0x50bb('0x112')](db[_0x50bb('0x81')],{'as':{'plural':_0x50bb('0x19e'),'singular':_0x50bb('0x19f')},'foreignKey':_0x50bb('0x1a0'),'onDelete':_0x50bb('0x110'),'hooks':!![]});db[_0x50bb('0x7b')][_0x50bb('0x112')](db[_0x50bb('0x81')],{'as':{'plural':_0x50bb('0x1a1'),'singular':_0x50bb('0x1a2')},'foreignKey':_0x50bb('0x1a3'),'onDelete':'cascade','hooks':!![]});db['Automation'][_0x50bb('0x112')](db[_0x50bb('0x1a4')],{'as':_0x50bb('0x1a5'),'foreignKey':'AutomationId','onDelete':'cascade','hooks':!![]});db[_0x50bb('0x7f')][_0x50bb('0x112')](db[_0x50bb('0x7f')],{'as':'Dispositions','foreignKey':_0x50bb('0x1a6'),'onDelete':_0x50bb('0x110')});db['Interval'][_0x50bb('0x112')](db['Interval'],{'as':_0x50bb('0x1a7'),'foreignKey':_0x50bb('0x152'),'onDelete':_0x50bb('0x110'),'hooks':!![],'required':![]});db[_0x50bb('0x151')][_0x50bb('0x112')](db[_0x50bb('0x16')],{'as':_0x50bb('0x114'),'foreignKey':_0x50bb('0x152'),'onDelete':_0x50bb('0x176')});db[_0x50bb('0x151')][_0x50bb('0x112')](db[_0x50bb('0x43')],{'as':_0x50bb('0x1a8'),'foreignKey':_0x50bb('0x152')});db[_0x50bb('0x151')][_0x50bb('0x112')](db[_0x50bb('0x64')],{'as':_0x50bb('0x1a9'),'foreignKey':_0x50bb('0x152')});db['Interval'][_0x50bb('0x112')](db[_0x50bb('0x4b')],{'as':_0x50bb('0x1aa'),'foreignKey':'IntervalId'});db['Interval'][_0x50bb('0x112')](db[_0x50bb('0x181')],{'as':_0x50bb('0x1ab'),'foreignKey':_0x50bb('0x152')});db[_0x50bb('0x89')]['belongsTo'](db[_0x50bb('0x15f')],{});db['Schedule'][_0x50bb('0x150')](db[_0x50bb('0x95')],{'foreignKey':_0x50bb('0x1ac')});db['Schedule'][_0x50bb('0x150')](db[_0x50bb('0x93')],{'foreignKey':_0x50bb('0x1ad')});db[_0x50bb('0x8b')][_0x50bb('0x121')](db[_0x50bb('0x18')],{'as':_0x50bb('0x1ae'),'through':_0x50bb('0x147'),'onDelete':'restrict'});db['Tag'][_0x50bb('0x121')](db[_0x50bb('0x6f')],{'through':_0x50bb('0x19d')});db[_0x50bb('0x8d')][_0x50bb('0x121')](db[_0x50bb('0x118')],{'through':_0x50bb('0x194')});db['Tag'][_0x50bb('0x121')](db['MailInteraction'],{'through':_0x50bb('0x16e')});db[_0x50bb('0x8d')]['belongsToMany'](db[_0x50bb('0x57')],{'through':_0x50bb('0x1af')});db['Tag'][_0x50bb('0x121')](db[_0x50bb('0x4d')],{'through':_0x50bb('0x17d')});db[_0x50bb('0x8d')][_0x50bb('0x121')](db[_0x50bb('0x116')],{'through':_0x50bb('0x189')});db[_0x50bb('0x8d')][_0x50bb('0x121')](db['WhatsappInteraction'],{'through':'whatsapp_interaction_has_tags'});db[_0x50bb('0x1b0')]['hasMany'](db[_0x50bb('0x81')],{'as':{'plural':_0x50bb('0x1b1'),'singular':'AllCondition'},'foreignKey':_0x50bb('0x1b2'),'onDelete':'cascade','hooks':!![]});db[_0x50bb('0x1b0')][_0x50bb('0x112')](db['Condition'],{'as':{'plural':_0x50bb('0x1b3'),'singular':_0x50bb('0x1b4')},'foreignKey':_0x50bb('0x1b5'),'onDelete':_0x50bb('0x110'),'hooks':!![]});db[_0x50bb('0x1b0')]['hasMany'](db[_0x50bb('0x1a4')],{'as':_0x50bb('0x1a5'),'foreignKey':'TriggerId','onDelete':_0x50bb('0x110'),'hooks':!![]});db['AnalyticCustomReport']['hasMany'](db[_0x50bb('0x99')],{'as':_0x50bb('0x1b6'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1ad'),'hooks':!![]});db[_0x50bb('0x95')][_0x50bb('0x112')](db[_0x50bb('0x99')],{'as':_0x50bb('0x1b6'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1ac')});db[_0x50bb('0x98')]['hasMany'](db[_0x50bb('0x99')],{'as':'Fields','onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1b7')});db['AnalyticFieldReport'][_0x50bb('0x150')](db[_0x50bb('0x98')],{'foreignKey':'MetricId'});db['SalesforceAccount'][_0x50bb('0x112')](db['SalesforceConfiguration'],{'as':_0x50bb('0x1b8'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1b9')});db[_0x50bb('0x9e')][_0x50bb('0x112')](db[_0x50bb('0x1ba')],{'as':'Subjects','onDelete':'cascade','foreignKey':'SubjectId'});db[_0x50bb('0x9e')][_0x50bb('0x112')](db[_0x50bb('0x1ba')],{'as':_0x50bb('0x1bb'),'onDelete':'cascade','foreignKey':_0x50bb('0x1bc')});db[_0x50bb('0x9e')][_0x50bb('0x112')](db[_0x50bb('0x1ba')],{'as':'Fields','onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1bd')});db[_0x50bb('0x9e')][_0x50bb('0x150')](db['SalesforceAccount'],{'as':_0x50bb('0x16b'),'foreignKey':_0x50bb('0x1b9')});db['SalesforceField']['hasMany'](db[_0x50bb('0x1ba')],{'as':'Subject','foreignKey':_0x50bb('0x1be')});db[_0x50bb('0x1ba')][_0x50bb('0x112')](db[_0x50bb('0x1ba')],{'as':'Description','foreignKey':'DescriptionId'});db['SalesforceField']['hasMany'](db[_0x50bb('0x1ba')],{'as':_0x50bb('0x1bf'),'foreignKey':'FieldId'});db[_0x50bb('0x1ba')][_0x50bb('0x150')](db[_0x50bb('0x8f')],{'as':_0x50bb('0x8f'),'foreignKey':'VariableId'});db['SugarcrmAccount'][_0x50bb('0x112')](db[_0x50bb('0x1c0')],{'as':_0x50bb('0x1b8'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1b9')});db[_0x50bb('0x1c0')]['hasMany'](db[_0x50bb('0xa4')],{'as':_0x50bb('0x1c1'),'onDelete':_0x50bb('0x110'),'foreignKey':'SubjectId'});db['SugarcrmConfiguration'][_0x50bb('0x112')](db[_0x50bb('0xa4')],{'as':_0x50bb('0x1bb'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1bc')});db[_0x50bb('0x1c0')]['hasMany'](db['SugarcrmField'],{'as':_0x50bb('0x1b6'),'onDelete':'cascade','foreignKey':'FieldId'});db['SugarcrmConfiguration'][_0x50bb('0x150')](db['SugarcrmAccount'],{'as':_0x50bb('0x16b'),'foreignKey':_0x50bb('0x1b9')});db[_0x50bb('0xa4')]['hasMany'](db[_0x50bb('0xa4')],{'as':_0x50bb('0x1c2'),'foreignKey':_0x50bb('0x1be')});db[_0x50bb('0xa4')][_0x50bb('0x112')](db['SugarcrmField'],{'as':'Description','foreignKey':'DescriptionId'});db[_0x50bb('0xa4')][_0x50bb('0x112')](db[_0x50bb('0xa4')],{'as':_0x50bb('0x1bf'),'foreignKey':'FieldId'});db[_0x50bb('0xa4')][_0x50bb('0x150')](db[_0x50bb('0x8f')],{'as':_0x50bb('0x8f'),'foreignKey':_0x50bb('0x1c3')});db['DeskAccount']['hasMany'](db[_0x50bb('0xa7')],{'as':_0x50bb('0x1b8'),'onDelete':'cascade','foreignKey':'AccountId'});db['DeskConfiguration'][_0x50bb('0x112')](db[_0x50bb('0xa8')],{'as':_0x50bb('0x1c1'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1be')});db[_0x50bb('0xa7')]['hasMany'](db[_0x50bb('0xa8')],{'as':'Descriptions','onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1bc')});db[_0x50bb('0xa7')][_0x50bb('0x112')](db[_0x50bb('0xa8')],{'as':'Fields','onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1bd')});db[_0x50bb('0xa7')][_0x50bb('0x150')](db[_0x50bb('0x1c4')],{'as':_0x50bb('0x16b'),'foreignKey':_0x50bb('0x1b9')});db['DeskConfiguration'][_0x50bb('0x121')](db[_0x50bb('0x8d')],{'through':_0x50bb('0x1c5')});db[_0x50bb('0xa8')]['hasMany'](db[_0x50bb('0xa8')],{'as':_0x50bb('0x1c2'),'foreignKey':_0x50bb('0x1be')});db[_0x50bb('0xa8')][_0x50bb('0x112')](db['DeskField'],{'as':_0x50bb('0x1c6'),'foreignKey':_0x50bb('0x1bc')});db['DeskField'][_0x50bb('0x112')](db[_0x50bb('0xa8')],{'as':_0x50bb('0x1bf'),'foreignKey':'FieldId'});db[_0x50bb('0xa8')]['belongsTo'](db['Variable'],{'as':_0x50bb('0x8f'),'foreignKey':_0x50bb('0x1c3')});db['ZohoAccount'][_0x50bb('0x112')](db['ZohoConfiguration'],{'as':_0x50bb('0x1b8'),'onDelete':_0x50bb('0x110'),'foreignKey':'AccountId'});db[_0x50bb('0xab')][_0x50bb('0x112')](db['ZohoField'],{'as':_0x50bb('0x1c1'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1be')});db[_0x50bb('0xab')][_0x50bb('0x112')](db[_0x50bb('0xad')],{'as':'Descriptions','onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1bc')});db[_0x50bb('0xab')]['hasMany'](db[_0x50bb('0xad')],{'as':_0x50bb('0x1b6'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1bd')});db['ZohoConfiguration'][_0x50bb('0x150')](db[_0x50bb('0x1c7')],{'as':_0x50bb('0x16b'),'foreignKey':_0x50bb('0x1b9')});db[_0x50bb('0xad')][_0x50bb('0x112')](db['ZohoField'],{'as':_0x50bb('0x1c2'),'foreignKey':_0x50bb('0x1be')});db['ZohoField'][_0x50bb('0x112')](db[_0x50bb('0xad')],{'as':_0x50bb('0x1c6'),'foreignKey':_0x50bb('0x1bc')});db['ZohoField'][_0x50bb('0x112')](db[_0x50bb('0xad')],{'as':_0x50bb('0x1bf'),'foreignKey':'FieldId'});db[_0x50bb('0xad')][_0x50bb('0x150')](db[_0x50bb('0x8f')],{'as':_0x50bb('0x8f'),'foreignKey':'VariableId'});db['ZendeskAccount'][_0x50bb('0x112')](db[_0x50bb('0xb1')],{'as':_0x50bb('0x1b8'),'onDelete':_0x50bb('0x110'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x50bb('0x112')](db['ZendeskField'],{'as':_0x50bb('0x1c1'),'foreignKey':_0x50bb('0x1be')});db[_0x50bb('0xb1')][_0x50bb('0x112')](db[_0x50bb('0xb3')],{'as':_0x50bb('0x1bb'),'foreignKey':_0x50bb('0x1bc')});db[_0x50bb('0xb1')]['hasMany'](db[_0x50bb('0xb3')],{'as':'Fields','foreignKey':_0x50bb('0x1bd')});db['ZendeskConfiguration'][_0x50bb('0x150')](db[_0x50bb('0xaf')],{'as':'Account','foreignKey':'AccountId'});db[_0x50bb('0xb1')][_0x50bb('0x121')](db['Tag'],{'through':_0x50bb('0x1c8')});db[_0x50bb('0xb3')]['hasMany'](db['ZendeskField'],{'as':_0x50bb('0x1c2'),'foreignKey':'SubjectId'});db[_0x50bb('0xb3')][_0x50bb('0x112')](db[_0x50bb('0xb3')],{'as':_0x50bb('0x1c6'),'foreignKey':_0x50bb('0x1bc')});db[_0x50bb('0xb3')]['hasMany'](db[_0x50bb('0xb3')],{'as':_0x50bb('0x1bf'),'foreignKey':_0x50bb('0x1bd')});db[_0x50bb('0xb3')][_0x50bb('0x150')](db[_0x50bb('0x8f')],{'as':_0x50bb('0x8f'),'foreignKey':_0x50bb('0x1c3')});db[_0x50bb('0xb5')][_0x50bb('0x112')](db[_0x50bb('0xb7')],{'as':_0x50bb('0x1b8'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1b9')});db[_0x50bb('0xb7')][_0x50bb('0x112')](db[_0x50bb('0xb9')],{'as':_0x50bb('0x1c1'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1be')});db[_0x50bb('0xb7')][_0x50bb('0x112')](db[_0x50bb('0xb9')],{'as':_0x50bb('0x1bb'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1bc')});db['FreshdeskConfiguration'][_0x50bb('0x112')](db[_0x50bb('0xb9')],{'as':_0x50bb('0x1b6'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1bd')});db[_0x50bb('0xb7')]['belongsTo'](db[_0x50bb('0xb5')],{'as':_0x50bb('0x16b'),'foreignKey':'AccountId'});db[_0x50bb('0xb7')]['belongsToMany'](db[_0x50bb('0x8d')],{'through':_0x50bb('0x1c9')});db[_0x50bb('0xb9')][_0x50bb('0x112')](db[_0x50bb('0xb9')],{'as':_0x50bb('0x1c2'),'foreignKey':_0x50bb('0x1be')});db[_0x50bb('0xb9')][_0x50bb('0x112')](db[_0x50bb('0xb9')],{'as':_0x50bb('0x1c6'),'foreignKey':_0x50bb('0x1bc')});db[_0x50bb('0xb9')]['hasMany'](db[_0x50bb('0xb9')],{'as':'Field','foreignKey':_0x50bb('0x1bd')});db[_0x50bb('0xb9')][_0x50bb('0x150')](db[_0x50bb('0x8f')],{'as':_0x50bb('0x8f'),'foreignKey':'VariableId'});db[_0x50bb('0xbb')]['hasMany'](db[_0x50bb('0xbd')],{'as':_0x50bb('0x1b8'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1b9')});db[_0x50bb('0xbd')][_0x50bb('0x112')](db[_0x50bb('0xbf')],{'as':'Subjects','foreignKey':_0x50bb('0x1be')});db[_0x50bb('0xbd')][_0x50bb('0x112')](db[_0x50bb('0xbf')],{'as':_0x50bb('0x1bb'),'foreignKey':_0x50bb('0x1bc')});db[_0x50bb('0xbd')][_0x50bb('0x112')](db[_0x50bb('0xbf')],{'as':_0x50bb('0x1b6'),'foreignKey':'FieldId'});db[_0x50bb('0xbd')][_0x50bb('0x150')](db[_0x50bb('0xbb')],{'as':_0x50bb('0x16b'),'foreignKey':_0x50bb('0x1b9')});db[_0x50bb('0xbf')]['hasMany'](db[_0x50bb('0xbf')],{'as':'Subject','foreignKey':_0x50bb('0x1be')});db[_0x50bb('0xbf')][_0x50bb('0x112')](db[_0x50bb('0xbf')],{'as':_0x50bb('0x1c6'),'foreignKey':_0x50bb('0x1bc')});db['VtigerField'][_0x50bb('0x112')](db[_0x50bb('0xbf')],{'as':_0x50bb('0x1bf'),'foreignKey':_0x50bb('0x1bd')});db[_0x50bb('0xbf')][_0x50bb('0x150')](db[_0x50bb('0x8f')],{'as':_0x50bb('0x8f'),'foreignKey':'VariableId'});db[_0x50bb('0xc1')]['hasMany'](db[_0x50bb('0xc3')],{'as':_0x50bb('0x1b8'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1b9')});db['ServicenowConfiguration'][_0x50bb('0x112')](db[_0x50bb('0x1ca')],{'as':_0x50bb('0x1c1'),'foreignKey':_0x50bb('0x1be')});db[_0x50bb('0xc3')][_0x50bb('0x112')](db['ServicenowField'],{'as':'Descriptions','foreignKey':_0x50bb('0x1bc')});db[_0x50bb('0xc3')][_0x50bb('0x112')](db[_0x50bb('0x1ca')],{'as':_0x50bb('0x1b6'),'foreignKey':_0x50bb('0x1bd')});db[_0x50bb('0xc3')][_0x50bb('0x150')](db[_0x50bb('0xc1')],{'as':_0x50bb('0x16b'),'foreignKey':'AccountId'});db[_0x50bb('0x1ca')][_0x50bb('0x112')](db[_0x50bb('0x1ca')],{'as':_0x50bb('0x1c2'),'foreignKey':_0x50bb('0x1be')});db['ServicenowField'][_0x50bb('0x112')](db[_0x50bb('0x1ca')],{'as':_0x50bb('0x1c6'),'foreignKey':_0x50bb('0x1bc')});db[_0x50bb('0x1ca')]['hasMany'](db['ServicenowField'],{'as':_0x50bb('0x1bf'),'foreignKey':_0x50bb('0x1bd')});db[_0x50bb('0x1ca')][_0x50bb('0x150')](db[_0x50bb('0x8f')],{'as':_0x50bb('0x8f'),'foreignKey':_0x50bb('0x1c3')});db['Dynamics365Account'][_0x50bb('0x112')](db['Dynamics365Configuration'],{'as':_0x50bb('0x1b8'),'onDelete':_0x50bb('0x110'),'foreignKey':'AccountId'});db[_0x50bb('0xc8')][_0x50bb('0x112')](db[_0x50bb('0x1cb')],{'as':_0x50bb('0x1c1'),'onDelete':_0x50bb('0x110'),'foreignKey':'SubjectId'});db['Dynamics365Configuration'][_0x50bb('0x112')](db[_0x50bb('0x1cb')],{'as':_0x50bb('0x1bb'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1bc')});db['Dynamics365Configuration']['hasMany'](db[_0x50bb('0x1cb')],{'as':_0x50bb('0x1b6'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0x50bb('0xc8')]['belongsTo'](db[_0x50bb('0xc6')],{'as':_0x50bb('0x16b'),'foreignKey':'AccountId'});db[_0x50bb('0x1cb')][_0x50bb('0x112')](db[_0x50bb('0x1cb')],{'as':_0x50bb('0x1c2'),'foreignKey':_0x50bb('0x1be')});db[_0x50bb('0x1cb')][_0x50bb('0x112')](db['Dynamics365Field'],{'as':'Description','foreignKey':'DescriptionId'});db[_0x50bb('0x1cb')]['hasMany'](db[_0x50bb('0x1cb')],{'as':_0x50bb('0x1bf'),'foreignKey':_0x50bb('0x1bd')});db[_0x50bb('0x1cb')][_0x50bb('0x150')](db[_0x50bb('0x8f')],{'as':'Variable','foreignKey':_0x50bb('0x1c3')});db[_0x50bb('0xcb')][_0x50bb('0x112')](db[_0x50bb('0xcc')],{'as':_0x50bb('0x1b8'),'onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1b9')});db[_0x50bb('0xcc')]['hasMany'](db[_0x50bb('0x1cc')],{'as':_0x50bb('0x1c1'),'foreignKey':_0x50bb('0x1be')});db[_0x50bb('0xcc')][_0x50bb('0x112')](db[_0x50bb('0x1cc')],{'as':_0x50bb('0x1bb'),'foreignKey':_0x50bb('0x1bc')});db[_0x50bb('0xcc')][_0x50bb('0x112')](db[_0x50bb('0x1cc')],{'as':_0x50bb('0x1b6'),'foreignKey':_0x50bb('0x1bd')});db[_0x50bb('0xcc')][_0x50bb('0x150')](db[_0x50bb('0xcb')],{'as':_0x50bb('0x16b'),'foreignKey':_0x50bb('0x1b9')});db[_0x50bb('0x1cc')][_0x50bb('0x112')](db[_0x50bb('0x1cc')],{'as':'Subject','foreignKey':_0x50bb('0x1be')});db[_0x50bb('0x1cc')][_0x50bb('0x112')](db['FreshsalesField'],{'as':_0x50bb('0x1c6'),'foreignKey':'DescriptionId'});db[_0x50bb('0x1cc')]['hasMany'](db['FreshsalesField'],{'as':'Field','foreignKey':_0x50bb('0x1bd')});db['FreshsalesField'][_0x50bb('0x150')](db[_0x50bb('0x8f')],{'as':'Variable','foreignKey':'VariableId'});db['ChatQueueReport'][_0x50bb('0x150')](db['ChatWebsite'],{});db[_0x50bb('0x1cd')][_0x50bb('0x150')](db[_0x50bb('0xf8')],{'as':_0x50bb('0x163'),'foreignKey':_0x50bb('0x164')});db[_0x50bb('0x1cd')][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'as':'Contact','foreignKey':'ContactId'});db['ChatQueueReport'][_0x50bb('0x150')](db['ChatInteraction'],{});db['ChatQueueReport'][_0x50bb('0x150')](db['ChatMessage'],{});db[_0x50bb('0x1cd')]['belongsTo'](db[_0x50bb('0x10')],{});db[_0x50bb('0x1cd')]['belongsTo'](db['ChatQueue'],{});db[_0x50bb('0x197')]['belongsTo'](db[_0x50bb('0x10')],{'onDelete':_0x50bb('0x110'),'foreignKey':'FromId'});db[_0x50bb('0x197')][_0x50bb('0x150')](db['User'],{'onDelete':_0x50bb('0x110'),'foreignKey':'ToId'});db[_0x50bb('0xd7')]['hasMany'](db[_0x50bb('0xd5')],{'foreignKey':_0x50bb('0x1ce'),'onDelete':_0x50bb('0x110')});db[_0x50bb('0xd7')][_0x50bb('0x112')](db['JscriptyAnswerReport'],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x50bb('0xd9')][_0x50bb('0x150')](db[_0x50bb('0x54')],{});db[_0x50bb('0xd9')][_0x50bb('0x150')](db[_0x50bb('0xf8')],{'as':_0x50bb('0x163'),'foreignKey':_0x50bb('0x164')});db[_0x50bb('0xd9')][_0x50bb('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x50bb('0x15c')});db[_0x50bb('0xd9')][_0x50bb('0x150')](db['SmsInteraction'],{});db['SmsQueueReport'][_0x50bb('0x150')](db[_0x50bb('0x59')],{});db[_0x50bb('0xd9')]['belongsTo'](db['User'],{});db[_0x50bb('0xd9')][_0x50bb('0x150')](db[_0x50bb('0x5a')],{});db['JscriptyProject'][_0x50bb('0x112')](db['JscriptySessionReport'],{'foreignKey':'ProjectId'});db[_0x50bb('0xdd')][_0x50bb('0x112')](db[_0x50bb('0xd5')],{'foreignKey':_0x50bb('0x1cf')});db[_0x50bb('0xdd')][_0x50bb('0x112')](db[_0x50bb('0xd3')],{'foreignKey':_0x50bb('0x1cf')});db[_0x50bb('0xe1')][_0x50bb('0x121')](db[_0x50bb('0x10')],{'as':_0x50bb('0x171'),'through':_0x50bb('0x141')});db[_0x50bb('0x154')]['belongsToMany'](db[_0x50bb('0x10')],{'as':_0x50bb('0x168'),'through':'user_has_teams'});db[_0x50bb('0x154')][_0x50bb('0x121')](db[_0x50bb('0x19')],{'through':_0x50bb('0x10b'),'as':_0x50bb('0x1d0')});db['Team']['belongsToMany'](db[_0x50bb('0x3d')],{'through':'team_has_mail_queues','as':_0x50bb('0x12e')});db[_0x50bb('0x154')][_0x50bb('0x121')](db[_0x50bb('0x6a')],{'through':'team_has_chat_queues','as':'ChatQueues'});db[_0x50bb('0x154')][_0x50bb('0x121')](db[_0x50bb('0x50')],{'through':_0x50bb('0x1d1'),'as':_0x50bb('0x130')});db[_0x50bb('0x154')][_0x50bb('0x121')](db['SmsQueue'],{'through':_0x50bb('0x185'),'as':_0x50bb('0x131')});db[_0x50bb('0x154')][_0x50bb('0x121')](db[_0x50bb('0x132')],{'through':_0x50bb('0x18c'),'as':'OpenchannelQueues'});db[_0x50bb('0x154')][_0x50bb('0x121')](db[_0x50bb('0x134')],{'through':'team_has_whatsapp_queues','as':'WhatsappQueues'});db[_0x50bb('0x154')][_0x50bb('0x121')](db[_0x50bb('0xfa')],{'through':_0x50bb('0x10c'),'as':'VoicePrefixes'});db[_0x50bb('0xea')][_0x50bb('0x112')](db['CmHopper'],{'as':'Hoppers','foreignKey':_0x50bb('0x1d2')});db[_0x50bb('0xea')]['hasMany'](db[_0x50bb('0x73')],{'as':'HopperFinals','foreignKey':_0x50bb('0x1d2')});db['Campaign'][_0x50bb('0x112')](db[_0x50bb('0x75')],{'as':_0x50bb('0x14b'),'foreignKey':'CampaignId'});db[_0x50bb('0xea')]['hasMany'](db['CmHopperBlack'],{'as':_0x50bb('0x1d3'),'foreignKey':_0x50bb('0x1d2')});db[_0x50bb('0xea')][_0x50bb('0x150')](db['Trunk'],{'as':_0x50bb('0x26'),'foreignKey':'TrunkId'});db['Campaign'][_0x50bb('0x150')](db[_0x50bb('0x26')],{'as':_0x50bb('0x14e'),'foreignKey':_0x50bb('0x14f')});db[_0x50bb('0xea')][_0x50bb('0x150')](db['Interval'],{'as':_0x50bb('0x151'),'foreignKey':_0x50bb('0x152')});db[_0x50bb('0xea')][_0x50bb('0x150')](db[_0x50bb('0xe1')],{'as':_0x50bb('0xe1'),'foreignKey':_0x50bb('0x1d4')});db['Campaign'][_0x50bb('0x121')](db[_0x50bb('0xf8')],{'as':_0x50bb('0x124'),'through':_0x50bb('0x1d5')});db[_0x50bb('0xea')][_0x50bb('0x121')](db[_0x50bb('0xf8')],{'as':'BlackLists','through':'campaigns_has_cm_blacklists'});db['Attachment'][_0x50bb('0x150')](db[_0x50bb('0x68')],{'as':_0x50bb('0x68'),'foreignKey':'ChatOfflineMessageId'});db[_0x50bb('0xf1')][_0x50bb('0x150')](db[_0x50bb('0x41')],{});db['MailTransferReport'][_0x50bb('0x150')](db[_0x50bb('0x3f')],{});db[_0x50bb('0xf1')][_0x50bb('0x150')](db['MailAccount'],{'foreignKey':_0x50bb('0x1d6'),'as':_0x50bb('0x1d7')});db['MailTransferReport'][_0x50bb('0x150')](db[_0x50bb('0x10')],{'foreignKey':_0x50bb('0x1d8'),'as':_0x50bb('0x1d9')});db[_0x50bb('0xf1')][_0x50bb('0x150')](db['User'],{'foreignKey':_0x50bb('0x1da'),'as':_0x50bb('0x1db')});db[_0x50bb('0xf1')][_0x50bb('0x150')](db[_0x50bb('0x3d')],{'foreignKey':'ToMailQueueId','as':_0x50bb('0x1dc')});db[_0x50bb('0xf1')][_0x50bb('0x150')](db[_0x50bb('0x15f')],{'foreignKey':'ToMailAccountId','as':_0x50bb('0x1dd')});db[_0x50bb('0x1de')]['belongsTo'](db['ChatMessage'],{});db[_0x50bb('0x1de')][_0x50bb('0x150')](db[_0x50bb('0x118')],{});db[_0x50bb('0x1de')][_0x50bb('0x150')](db[_0x50bb('0x61')],{'foreignKey':_0x50bb('0x1df'),'as':_0x50bb('0x1d7')});db[_0x50bb('0x1de')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'foreignKey':_0x50bb('0x1d8'),'as':'FromAgent'});db[_0x50bb('0x1de')]['belongsTo'](db[_0x50bb('0x10')],{'foreignKey':_0x50bb('0x1da'),'as':_0x50bb('0x1db')});db['ChatTransferReport'][_0x50bb('0x150')](db[_0x50bb('0x6a')],{'foreignKey':'ToChatQueueId','as':'ToQueue'});db['ChatTransferReport'][_0x50bb('0x150')](db[_0x50bb('0x61')],{'foreignKey':'ToChatWebsiteId','as':_0x50bb('0x1dd')});db[_0x50bb('0xf3')][_0x50bb('0x150')](db[_0x50bb('0x4e')],{});db[_0x50bb('0xf3')][_0x50bb('0x150')](db[_0x50bb('0x4d')],{});db[_0x50bb('0xf3')][_0x50bb('0x150')](db[_0x50bb('0x49')],{'foreignKey':_0x50bb('0x1e0'),'as':_0x50bb('0x1d7')});db[_0x50bb('0xf3')][_0x50bb('0x150')](db['User'],{'foreignKey':_0x50bb('0x1d8'),'as':_0x50bb('0x1d9')});db[_0x50bb('0xf3')][_0x50bb('0x150')](db['User'],{'foreignKey':_0x50bb('0x1da'),'as':_0x50bb('0x1db')});db[_0x50bb('0xf3')][_0x50bb('0x150')](db[_0x50bb('0x50')],{'foreignKey':_0x50bb('0x1e1'),'as':'ToQueue'});db[_0x50bb('0xf3')]['belongsTo'](db['FaxAccount'],{'foreignKey':'ToFaxAccountId','as':'ToAccount'});db[_0x50bb('0xf5')][_0x50bb('0x150')](db[_0x50bb('0x187')],{});db[_0x50bb('0xf5')][_0x50bb('0x150')](db[_0x50bb('0x116')],{});db['OpenchannelTransferReport'][_0x50bb('0x150')](db[_0x50bb('0x5c')],{'foreignKey':'FromOpenchannelAccountId','as':'FromAccount'});db[_0x50bb('0xf5')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'foreignKey':_0x50bb('0x1d8'),'as':'FromAgent'});db[_0x50bb('0xf5')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'foreignKey':_0x50bb('0x1da'),'as':_0x50bb('0x1db')});db[_0x50bb('0xf5')]['belongsTo'](db[_0x50bb('0x132')],{'foreignKey':_0x50bb('0x1e2'),'as':_0x50bb('0x1dc')});db[_0x50bb('0xf5')][_0x50bb('0x150')](db[_0x50bb('0x5c')],{'foreignKey':_0x50bb('0x1e3'),'as':_0x50bb('0x1dd')});db[_0x50bb('0xf6')][_0x50bb('0x150')](db['SmsMessage'],{});db['SmsTransferReport'][_0x50bb('0x150')](db[_0x50bb('0x57')],{});db[_0x50bb('0xf6')][_0x50bb('0x150')](db[_0x50bb('0x54')],{'foreignKey':_0x50bb('0x1e4'),'as':_0x50bb('0x1d7')});db['SmsTransferReport'][_0x50bb('0x150')](db[_0x50bb('0x10')],{'foreignKey':_0x50bb('0x1d8'),'as':_0x50bb('0x1d9')});db['SmsTransferReport'][_0x50bb('0x150')](db['User'],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0x50bb('0xf6')][_0x50bb('0x150')](db[_0x50bb('0x5a')],{'foreignKey':_0x50bb('0x1e5'),'as':_0x50bb('0x1dc')});db[_0x50bb('0xf6')][_0x50bb('0x150')](db[_0x50bb('0x54')],{'foreignKey':'ToSmsAccountId','as':_0x50bb('0x1dd')});db[_0x50bb('0xf8')][_0x50bb('0x112')](db['Disposition'],{'as':_0x50bb('0x161'),'foreignKey':'ListId','onDelete':'cascade'});db[_0x50bb('0xf8')][_0x50bb('0x112')](db['CmCustomField'],{'as':_0x50bb('0x1e6'),'foreignKey':_0x50bb('0x164')});db[_0x50bb('0xf8')][_0x50bb('0x112')](db['CmContact'],{'as':'Contacts','onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x164')});db[_0x50bb('0xf8')][_0x50bb('0x112')](db[_0x50bb('0x73')],{'as':'HopperFinals','foreignKey':'ListId'});db[_0x50bb('0xf8')]['hasMany'](db[_0x50bb('0x75')],{'as':_0x50bb('0x115'),'foreignKey':'ListId'});db['CmList'][_0x50bb('0x112')](db['ReportAgentPreview'],{'as':_0x50bb('0x77'),'foreignKey':'ListId'});db[_0x50bb('0xf8')][_0x50bb('0x121')](db[_0x50bb('0x19')],{'as':'Queues','through':_0x50bb('0x153')});db[_0x50bb('0xf8')]['belongsToMany'](db[_0x50bb('0x10')],{'as':_0x50bb('0x168'),'through':_0x50bb('0x125')});db[_0x50bb('0xfa')]['hasMany'](db[_0x50bb('0x16')],{'as':_0x50bb('0x114'),'onDelete':_0x50bb('0x110')});db['VoicePrefix'][_0x50bb('0x121')](db[_0x50bb('0x10')],{'as':_0x50bb('0x168'),'through':_0x50bb('0x10e')});db['VoicePrefix'][_0x50bb('0x121')](db[_0x50bb('0x154')],{'through':'TeamVoicePrefix','as':'Teams'});db['UserProfile'][_0x50bb('0x112')](db[_0x50bb('0x10')],{'as':_0x50bb('0x171'),'foreignKey':_0x50bb('0x11e')});db[_0x50bb('0x11d')]['hasMany'](db[_0x50bb('0x1e7')],{'as':_0x50bb('0x1e8'),'foreignKey':_0x50bb('0x11e'),'onDelete':_0x50bb('0x110')});db['UserProfileSection']['hasMany'](db[_0x50bb('0xfd')],{'as':'Resources','foreignKey':_0x50bb('0x1e9'),'onDelete':'cascade'});db[_0x50bb('0x1ea')][_0x50bb('0x112')](db['Disposition'],{'as':_0x50bb('0x161'),'foreignKey':_0x50bb('0x1eb'),'onDelete':_0x50bb('0x110')});db['WhatsappAccount'][_0x50bb('0x112')](db[_0x50bb('0x7d')],{'as':'Answers','foreignKey':'WhatsappAccountId'});db[_0x50bb('0x1ea')][_0x50bb('0x112')](db[_0x50bb('0x103')],{'as':_0x50bb('0x157'),'foreignKey':_0x50bb('0x1eb')});db[_0x50bb('0x1ea')][_0x50bb('0x112')](db['WhatsappInteraction'],{'as':_0x50bb('0x162')});db['WhatsappAccount'][_0x50bb('0x112')](db['WhatsappApplication'],{'as':_0x50bb('0x145')});db[_0x50bb('0x1ea')][_0x50bb('0x150')](db[_0x50bb('0xf8')],{'as':'List','foreignKey':'ListId'});db[_0x50bb('0x1ea')]['belongsTo'](db['Pause'],{'as':_0x50bb('0x166'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x50bb('0x1ea')][_0x50bb('0x121')](db[_0x50bb('0x10')],{'as':_0x50bb('0x168'),'through':'user_has_whatsapp_accounts'});db[_0x50bb('0x1ec')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'onDelete':_0x50bb('0x176')});db[_0x50bb('0x1ec')][_0x50bb('0x150')](db[_0x50bb('0x134')],{'onDelete':_0x50bb('0x176')});db[_0x50bb('0x1ec')][_0x50bb('0x150')](db[_0x50bb('0x1ea')],{'onDelete':_0x50bb('0x176')});db[_0x50bb('0x1ec')][_0x50bb('0x150')](db[_0x50bb('0x151')],{'onDelete':'restrict','foreignKey':'IntervalId'});db['WhatsappApplication']['belongsTo'](db[_0x50bb('0x8d')],{'onDelete':_0x50bb('0x176'),'foreignKey':_0x50bb('0x177')});db['WhatsappInteraction']['hasMany'](db['WhatsappMessage'],{'as':'Messages','onDelete':_0x50bb('0x110'),'foreignKey':_0x50bb('0x1ed')});db[_0x50bb('0x102')]['belongsTo'](db[_0x50bb('0x1ea')],{'as':_0x50bb('0x16b'),'foreignKey':_0x50bb('0x1eb')});db[_0x50bb('0x102')][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'as':_0x50bb('0x16c'),'foreignKey':_0x50bb('0x15c')});db[_0x50bb('0x102')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'as':'Owner','foreignKey':'UserId'});db[_0x50bb('0x102')][_0x50bb('0x121')](db['Tag'],{'through':'whatsapp_interaction_has_tags','as':_0x50bb('0x16f')});db['WhatsappInteraction'][_0x50bb('0x121')](db['Tag'],{'through':'whatsapp_interaction_has_tags','as':_0x50bb('0x170')});db[_0x50bb('0x102')]['belongsToMany'](db[_0x50bb('0x10')],{'as':_0x50bb('0x171'),'through':_0x50bb('0x1ee'),'foreignKey':_0x50bb('0x1ed')});db[_0x50bb('0x103')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'as':_0x50bb('0x10')});db['WhatsappMessage'][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'onDelete':'cascade','as':'Contact'});db[_0x50bb('0x103')][_0x50bb('0x150')](db[_0x50bb('0x102')],{'onDelete':_0x50bb('0x110'),'as':_0x50bb('0x173'),'foreignKey':_0x50bb('0x1ed')});db[_0x50bb('0x103')][_0x50bb('0x150')](db['WhatsappAccount'],{'as':_0x50bb('0x16b'),'foreignKey':_0x50bb('0x1eb')});db[_0x50bb('0x1ef')][_0x50bb('0x150')](db['WhatsappAccount'],{});db[_0x50bb('0x1ef')][_0x50bb('0x150')](db[_0x50bb('0xf8')],{'as':_0x50bb('0x163'),'foreignKey':_0x50bb('0x164')});db[_0x50bb('0x1ef')][_0x50bb('0x150')](db[_0x50bb('0x6f')],{'as':_0x50bb('0x16c'),'foreignKey':_0x50bb('0x15c')});db['WhatsappQueueReport'][_0x50bb('0x150')](db[_0x50bb('0x102')],{});db[_0x50bb('0x1ef')][_0x50bb('0x150')](db[_0x50bb('0x134')],{});db[_0x50bb('0x1ef')][_0x50bb('0x150')](db[_0x50bb('0x103')],{});db['WhatsappQueueReport'][_0x50bb('0x150')](db['User'],{});db[_0x50bb('0x106')][_0x50bb('0x150')](db[_0x50bb('0x103')],{});db['WhatsappTransferReport'][_0x50bb('0x150')](db[_0x50bb('0x102')],{});db[_0x50bb('0x106')][_0x50bb('0x150')](db[_0x50bb('0x1ea')],{'foreignKey':_0x50bb('0x1f0'),'as':_0x50bb('0x1d7')});db['WhatsappTransferReport'][_0x50bb('0x150')](db[_0x50bb('0x1ea')],{'foreignKey':'ToWhatsappAccountId','as':_0x50bb('0x1dd')});db['WhatsappTransferReport']['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x50bb('0x1f1'),'as':_0x50bb('0x1dc')});db[_0x50bb('0x106')][_0x50bb('0x150')](db[_0x50bb('0x10')],{'foreignKey':_0x50bb('0x1d8'),'as':_0x50bb('0x1d9')});db[_0x50bb('0x106')][_0x50bb('0x150')](db['User'],{'foreignKey':'ToUserId','as':_0x50bb('0x1db')});db[_0x50bb('0x134')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x50bb('0x136'),'foreignKey':'WhatsappQueueId'});db[_0x50bb('0x134')]['belongsToMany'](db[_0x50bb('0x154')],{'through':_0x50bb('0x1f2'),'as':_0x50bb('0x169')});module[_0x50bb('0x1f3')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 17bfb29..05b3086 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2c5=['route','/:url(api|auth|components|app|bower_components|assets)/*','get','resolve','appPath','/index.html','username','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','fax','clientId','clientSecret','accessKey','tenantId','token','channelSecret','accessToken','authToken','consumerKey','membername','calleridname','vidaooApiKey','clientEmail','privateKey','accesskeyid','secretaccesskey','accountSid','dsn','secret','registry','oldPassword','isPlainObject','isArray','replace','}@@','includes','lodash','path','express','express-winston','./errors','./config/logger','api','auth','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','\x20body=%s','body','method','headers','x-forwarded-for','connection','url','statusCode','responseTime','user','role','inspect','device','agent_id','name','other','agent_name','/api/users','./api/user','/api/voice/contexts','./api/voiceContext','./api/voiceExtension','/api/voice/queues','/api/voice/recordings','./api/voiceRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','/api/mail/out_servers','./api/mailServerOut','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','/api/mail/messages','./api/mailMessage','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','/api/dashboards/items','./api/dashboardItem','/api/fax/applications','./api/faxApplication','/api/fax/messages','./api/faxMessage','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','./api/openchannelApplication','/api/openchannel/interactions','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','./api/chatApplication','/api/chat/messages','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','./api/cmCustomField','/api/automations','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','./api/interval','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','./api/sound','./api/tag','/api/templates','./api/template','/api/triggers','./api/trigger','/api/integrations','./api/integration','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intDeskAccount','./api/intDeskConfiguration','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','./api/intZohoConfiguration','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','./api/intZendeskField','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerField','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intFreshsalesAccount','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','/api/migrations','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','./api/smsTransferReport','/api/cm/lists','./api/cmList','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/jira','./api/jira','/api/rpc','./api/rpc','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','/apidoc','static','join','root','/demo','snippet','3.0.0','/plugins','/server/files/plugins'];(function(_0x16a1a2,_0x3e3497){var _0x4c6b52=function(_0x23cc6b){while(--_0x23cc6b){_0x16a1a2['push'](_0x16a1a2['shift']());}};_0x4c6b52(++_0x3e3497);}(_0xa2c5,0x16a));var _0x5a2c=function(_0x172747,_0x1732bd){_0x172747=_0x172747-0x0;var _0x509692=_0xa2c5[_0x172747];return _0x509692;};'use strict';var _=require(_0x5a2c('0x0'));var path=require(_0x5a2c('0x1'));var express=require(_0x5a2c('0x2'));var ewinston=require(_0x5a2c('0x3'));var util=require('util');var errors=require(_0x5a2c('0x4'));var config=require('./config/environment');var logger=require(_0x5a2c('0x5'))(_0x5a2c('0x6'));var authLogger=require(_0x5a2c('0x5'))(_0x5a2c('0x7'));exports['default']=function(_0x287906){_0x287906[_0x5a2c('0x8')](ewinston[_0x5a2c('0x9')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x7916a6,_0x981bcf){var _0x4507e2=_0x5a2c('0xa');if(!_[_0x5a2c('0xb')](_0x7916a6['body'])){_0x4507e2+=_0x5a2c('0xc');var _0x200e55=_0x7916a6[_0x5a2c('0xd')];maskSensitiveData(_0x200e55);}return util['format'](_0x4507e2,_0x7916a6[_0x5a2c('0xe')],_0x7916a6[_0x5a2c('0xf')]['x-forwarded-for']?_0x7916a6[_0x5a2c('0xf')][_0x5a2c('0x10')]:_0x7916a6[_0x5a2c('0x11')]['remoteAddress']||_0x7916a6['ip'],_0x7916a6[_0x5a2c('0x12')],_0x981bcf[_0x5a2c('0x13')],_0x981bcf[_0x5a2c('0x14')],_0x7916a6['user']?_0x7916a6[_0x5a2c('0x15')]['id']:null,_0x7916a6[_0x5a2c('0x15')]?_0x7916a6['user']['name']:null,_0x7916a6[_0x5a2c('0x15')]?_0x7916a6['user'][_0x5a2c('0x16')]:null,_0x200e55?util[_0x5a2c('0x17')](_0x200e55,![],null):'');}}));_0x287906[_0x5a2c('0x8')](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x4d1f29,_0x1c4932){var _0x188866='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x4d1f29['body']&&_0x4d1f29[_0x5a2c('0xd')][_0x5a2c('0x18')]&&_0x4d1f29[_0x5a2c('0xd')][_0x5a2c('0x19')]){_0x188866='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util['format'](_0x188866,_0x4d1f29[_0x5a2c('0xe')],_0x4d1f29[_0x5a2c('0xf')][_0x5a2c('0x10')]?_0x4d1f29[_0x5a2c('0xf')][_0x5a2c('0x10')]:_0x4d1f29[_0x5a2c('0x11')]['remoteAddress']||_0x4d1f29['ip'],_0x4d1f29[_0x5a2c('0x12')],_0x1c4932[_0x5a2c('0x13')],_0x1c4932[_0x5a2c('0x14')],_0x4d1f29[_0x5a2c('0x15')]?_0x4d1f29[_0x5a2c('0x15')]['id']:null,_0x4d1f29[_0x5a2c('0x15')]?_0x4d1f29[_0x5a2c('0x15')][_0x5a2c('0x1a')]:null,_0x4d1f29['user']?_0x4d1f29['user']['role']:null,_0x4d1f29[_0x5a2c('0xd')]&&_0x4d1f29[_0x5a2c('0xd')][_0x5a2c('0x18')]?_0x4d1f29['body']['device']:_0x5a2c('0x1b'),_0x4d1f29[_0x5a2c('0xd')]&&_0x4d1f29[_0x5a2c('0xd')][_0x5a2c('0x19')]?_0x4d1f29[_0x5a2c('0xd')][_0x5a2c('0x19')]:'',_0x4d1f29[_0x5a2c('0xd')]&&_0x4d1f29[_0x5a2c('0xd')]['agent_name']?_0x4d1f29[_0x5a2c('0xd')][_0x5a2c('0x1c')]:'');},'ignoreRoute':function(_0x2550fc){var _0x39d794=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x39d794['test'](_0x2550fc[_0x5a2c('0x12')]);}}));_0x287906['use'](_0x5a2c('0x1d'),require(_0x5a2c('0x1e')));_0x287906[_0x5a2c('0x8')]('/api/voice/chanspy',require('./api/voiceChanSpy'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x1f'),require(_0x5a2c('0x20')));_0x287906[_0x5a2c('0x8')]('/api/voice/extensions',require(_0x5a2c('0x21')));_0x287906[_0x5a2c('0x8')]('/api/voice/mohs',require('./api/voiceMusicOnHold'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x22'),require('./api/voiceQueue'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x23'),require(_0x5a2c('0x24')));_0x287906[_0x5a2c('0x8')]('/api/screen/recordings',require('./api/screenRecording'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x25'),require(_0x5a2c('0x26')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x27'),require(_0x5a2c('0x28')));_0x287906['use'](_0x5a2c('0x29'),require(_0x5a2c('0x2a')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x2b'),require(_0x5a2c('0x2c')));_0x287906[_0x5a2c('0x8')]('/api/voice/agents/reports',require('./api/voiceAgentReport'));_0x287906[_0x5a2c('0x8')]('/api/voice/queues/reports',require(_0x5a2c('0x2d')));_0x287906['use'](_0x5a2c('0x2e'),require(_0x5a2c('0x2f')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x30'),require(_0x5a2c('0x31')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x32'),require('./api/voiceTransferReport'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x33'),require(_0x5a2c('0x34')));_0x287906[_0x5a2c('0x8')]('/api/mail/accounts',require('./api/mailAccount'));_0x287906[_0x5a2c('0x8')]('/api/mail/queues',require(_0x5a2c('0x35')));_0x287906['use'](_0x5a2c('0x36'),require(_0x5a2c('0x37')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x38'),require('./api/mailInteraction'));_0x287906['use'](_0x5a2c('0x39'),require(_0x5a2c('0x3a')));_0x287906[_0x5a2c('0x8')]('/api/mail/applications',require(_0x5a2c('0x3b')));_0x287906['use'](_0x5a2c('0x3c'),require(_0x5a2c('0x3d')));_0x287906['use'](_0x5a2c('0x3e'),require('./api/dashboard'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x3f'),require(_0x5a2c('0x40')));_0x287906['use']('/api/fax/accounts',require('./api/faxAccount'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x41'),require(_0x5a2c('0x42')));_0x287906[_0x5a2c('0x8')]('/api/fax/interactions',require('./api/faxInteraction'));_0x287906['use'](_0x5a2c('0x43'),require(_0x5a2c('0x44')));_0x287906[_0x5a2c('0x8')]('/api/fax/queues',require(_0x5a2c('0x45')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x46'),require(_0x5a2c('0x47')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x48'),require('./api/smsAccount'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x49'),require(_0x5a2c('0x4a')));_0x287906['use'](_0x5a2c('0x4b'),require(_0x5a2c('0x4c')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x4d'),require(_0x5a2c('0x4e')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x4f'),require(_0x5a2c('0x50')));_0x287906['use'](_0x5a2c('0x51'),require(_0x5a2c('0x52')));_0x287906[_0x5a2c('0x8')]('/api/openchannel/applications',require(_0x5a2c('0x53')));_0x287906['use'](_0x5a2c('0x54'),require('./api/openchannelInteraction'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x55'),require(_0x5a2c('0x56')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x57'),require(_0x5a2c('0x58')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x59'),require(_0x5a2c('0x5a')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x5b'),require(_0x5a2c('0x5c')));_0x287906['use']('/api/chat/applications',require(_0x5a2c('0x5d')));_0x287906[_0x5a2c('0x8')]('/api/chat/interactions',require('./api/chatInteraction'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x5e'),require('./api/chatMessage'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x5f'),require(_0x5a2c('0x60')));_0x287906['use'](_0x5a2c('0x61'),require(_0x5a2c('0x62')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x63'),require(_0x5a2c('0x64')));_0x287906[_0x5a2c('0x8')]('/api/chat/proactive_actions',require(_0x5a2c('0x65')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x66'),require(_0x5a2c('0x67')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x68'),require(_0x5a2c('0x69')));_0x287906['use'](_0x5a2c('0x6a'),require(_0x5a2c('0x6b')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x6c'),require(_0x5a2c('0x6d')));_0x287906['use'](_0x5a2c('0x6e'),require(_0x5a2c('0x6f')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x70'),require(_0x5a2c('0x71')));_0x287906[_0x5a2c('0x8')]('/api/cm/custom_fields',require(_0x5a2c('0x72')));_0x287906[_0x5a2c('0x8')]('/api/actions',require('./api/action'));_0x287906['use'](_0x5a2c('0x73'),require('./api/automation'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x74'),require(_0x5a2c('0x75')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x76'),require(_0x5a2c('0x77')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x78'),require(_0x5a2c('0x79')));_0x287906[_0x5a2c('0x8')]('/api/intervals',require(_0x5a2c('0x7a')));_0x287906[_0x5a2c('0x8')]('/api/pauses',require(_0x5a2c('0x7b')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x7c'),require(_0x5a2c('0x7d')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x7e'),require(_0x5a2c('0x7f')));_0x287906[_0x5a2c('0x8')]('/api/schedules',require('./api/schedule'));_0x287906[_0x5a2c('0x8')]('/api/sounds',require(_0x5a2c('0x80')));_0x287906[_0x5a2c('0x8')]('/api/tags',require(_0x5a2c('0x81')));_0x287906['use'](_0x5a2c('0x82'),require(_0x5a2c('0x83')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x84'),require(_0x5a2c('0x85')));_0x287906[_0x5a2c('0x8')]('/api/variables',require('./api/variable'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x86'),require(_0x5a2c('0x87')));_0x287906[_0x5a2c('0x8')]('/api/integrations/reports',require(_0x5a2c('0x88')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x89'),require(_0x5a2c('0x8a')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x8b'),require(_0x5a2c('0x8c')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x8d'),require(_0x5a2c('0x8e')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x8f'),require(_0x5a2c('0x90')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x91'),require(_0x5a2c('0x92')));_0x287906['use'](_0x5a2c('0x93'),require(_0x5a2c('0x94')));_0x287906[_0x5a2c('0x8')]('/api/integrations/salesforce/accounts',require('./api/intSalesforceAccount'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x95'),require(_0x5a2c('0x96')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x97'),require('./api/intSalesforceField'));_0x287906['use'](_0x5a2c('0x98'),require(_0x5a2c('0x99')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x9a'),require(_0x5a2c('0x9b')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x9c'),require('./api/intSugarcrmField'));_0x287906['use']('/api/integrations/desk/accounts',require(_0x5a2c('0x9d')));_0x287906[_0x5a2c('0x8')]('/api/integrations/desk/configurations',require(_0x5a2c('0x9e')));_0x287906[_0x5a2c('0x8')]('/api/integrations/desk/fields',require(_0x5a2c('0x9f')));_0x287906['use'](_0x5a2c('0xa0'),require(_0x5a2c('0xa1')));_0x287906[_0x5a2c('0x8')]('/api/integrations/zoho/configurations',require(_0x5a2c('0xa2')));_0x287906[_0x5a2c('0x8')]('/api/integrations/zoho/fields',require(_0x5a2c('0xa3')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xa4'),require(_0x5a2c('0xa5')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xa6'),require(_0x5a2c('0xa7')));_0x287906[_0x5a2c('0x8')]('/api/integrations/zendesk/fields',require(_0x5a2c('0xa8')));_0x287906[_0x5a2c('0x8')]('/api/integrations/freshdesk/accounts',require(_0x5a2c('0xa9')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xaa'),require('./api/intFreshdeskConfiguration'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xab'),require(_0x5a2c('0xac')));_0x287906['use'](_0x5a2c('0xad'),require(_0x5a2c('0xae')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xaf'),require('./api/intVtigerConfiguration'));_0x287906[_0x5a2c('0x8')]('/api/integrations/vtiger/fields',require(_0x5a2c('0xb0')));_0x287906['use']('/api/integrations/servicenow/accounts',require(_0x5a2c('0xb1')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xb2'),require(_0x5a2c('0xb3')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xb4'),require(_0x5a2c('0xb5')));_0x287906[_0x5a2c('0x8')]('/api/integrations/dynamics365/accounts',require(_0x5a2c('0xb6')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xb7'),require(_0x5a2c('0xb8')));_0x287906['use'](_0x5a2c('0xb9'),require('./api/intDynamics365Field'));_0x287906[_0x5a2c('0x8')]('/api/integrations/freshsales/accounts',require(_0x5a2c('0xba')));_0x287906[_0x5a2c('0x8')]('/api/integrations/freshsales/configurations',require(_0x5a2c('0xbb')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xbc'),require(_0x5a2c('0xbd')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xbe'),require('./api/network'));_0x287906['use']('/api/chat/reports/queue',require('./api/chatQueueReport'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xbf'),require(_0x5a2c('0xc0')));_0x287906[_0x5a2c('0x8')]('/api/jscripty/answers/reports',require('./api/jscriptyAnswerReport'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xc1'),require(_0x5a2c('0xc2')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xc3'),require(_0x5a2c('0xc4')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xc5'),require(_0x5a2c('0xc6')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xc7'),require(_0x5a2c('0xc8')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xc9'),require(_0x5a2c('0xca')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xcb'),require(_0x5a2c('0xcc')));_0x287906['use'](_0x5a2c('0xcd'),require('./api/setting'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xce'),require(_0x5a2c('0xcf')));_0x287906['use'](_0x5a2c('0xd0'),require(_0x5a2c('0xd1')));_0x287906['use'](_0x5a2c('0xd2'),require(_0x5a2c('0xd3')));_0x287906['use'](_0x5a2c('0xd4'),require(_0x5a2c('0xd5')));_0x287906['use'](_0x5a2c('0xd6'),require(_0x5a2c('0xd7')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xd8'),require(_0x5a2c('0xd9')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xda'),require('./api/campaign'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xdb'),require('./api/migration'));_0x287906[_0x5a2c('0x8')]('/api/attachments',require(_0x5a2c('0xdc')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xdd'),require(_0x5a2c('0xde')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xdf'),require(_0x5a2c('0xe0')));_0x287906[_0x5a2c('0x8')]('/api/chat/reports/transfer',require(_0x5a2c('0xe1')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xe2'),require(_0x5a2c('0xe3')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xe4'),require(_0x5a2c('0xe5')));_0x287906['use']('/api/sms/reports/transfer',require(_0x5a2c('0xe6')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xe7'),require(_0x5a2c('0xe8')));_0x287906[_0x5a2c('0x8')]('/api/voice/prefixes',require(_0x5a2c('0xe9')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xea'),require(_0x5a2c('0xeb')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xec'),require('./api/userProfileSection'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xed'),require('./api/userProfileResource'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xee'),require(_0x5a2c('0xef')));_0x287906['use'](_0x5a2c('0xf0'),require(_0x5a2c('0xf1')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xf2'),require(_0x5a2c('0xf3')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xf4'),require('./api/whatsappInteraction'));_0x287906['use'](_0x5a2c('0xf5'),require(_0x5a2c('0xf6')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xf7'),require(_0x5a2c('0xf8')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xf9'),require(_0x5a2c('0xfa')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xfb'),require(_0x5a2c('0xfc')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xfd'),require(_0x5a2c('0xfe')));_0x287906[_0x5a2c('0x8')]('/api/realtime',require('./api/realtime'));_0x287906[_0x5a2c('0x8')](_0x5a2c('0xff'),require(_0x5a2c('0x100')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x101'),require(_0x5a2c('0x102')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x103'),require(_0x5a2c('0x104')));_0x287906['use'](_0x5a2c('0x105'),require(_0x5a2c('0x106')));_0x287906['use']('/api/version',require(_0x5a2c('0x107')));_0x287906['use'](_0x5a2c('0x108'),require(_0x5a2c('0x109')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x10a'),require(_0x5a2c('0x10b')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x10c'),require('./api/webbar'));_0x287906['use'](_0x5a2c('0x10d'),express[_0x5a2c('0x10e')](path[_0x5a2c('0x10f')](config['root'],_0x5a2c('0x10d'))));_0x287906[_0x5a2c('0x8')]('/www',express[_0x5a2c('0x10e')](path[_0x5a2c('0x10f')](config[_0x5a2c('0x110')],'/www')));_0x287906[_0x5a2c('0x8')](_0x5a2c('0x111'),express['static'](path['join'](config['root'],_0x5a2c('0x111'))));_0x287906['use']('/snippet',express[_0x5a2c('0x10e')](path[_0x5a2c('0x10f')](config['root'],_0x5a2c('0x112'),_0x5a2c('0x113'))));_0x287906['use'](_0x5a2c('0x114'),express[_0x5a2c('0x10e')](path[_0x5a2c('0x10f')](config[_0x5a2c('0x110')],_0x5a2c('0x115'))));_0x287906[_0x5a2c('0x116')](_0x5a2c('0x117'))['get'](errors[0x194]);_0x287906[_0x5a2c('0x116')]('/*')[_0x5a2c('0x118')](function(_0xe29a96,_0x175c42){_0x175c42['sendFile'](path[_0x5a2c('0x119')](_0x287906['get'](_0x5a2c('0x11a'))+_0x5a2c('0x11b')));});};var sensitiveFields=[_0x5a2c('0x11c'),_0x5a2c('0x11d'),_0x5a2c('0x11e'),_0x5a2c('0x11f'),_0x5a2c('0x120'),_0x5a2c('0x121'),_0x5a2c('0x122'),_0x5a2c('0x123'),_0x5a2c('0x124'),_0x5a2c('0x125'),'email',_0x5a2c('0x126'),_0x5a2c('0x127'),'securityToken','code',_0x5a2c('0x128'),_0x5a2c('0x129'),_0x5a2c('0x12a'),_0x5a2c('0x12b'),_0x5a2c('0x12c'),'accessTokenSecret',_0x5a2c('0x12d'),_0x5a2c('0x12e'),'consumerSecret',_0x5a2c('0x12f'),_0x5a2c('0x130'),'calleridnum','exten',_0x5a2c('0x131'),_0x5a2c('0x132'),_0x5a2c('0x133'),_0x5a2c('0x134'),_0x5a2c('0x135'),'key',_0x5a2c('0x15'),'pass',_0x5a2c('0x136'),'localstationid',_0x5a2c('0x137'),_0x5a2c('0x138'),_0x5a2c('0x139'),_0x5a2c('0x13a')];function maskSensitiveData(_0x37a93b){var _0x1f58fc=/(?!^)[\s\S](?!$)/g;if(!_[_0x5a2c('0x13b')](_0x37a93b))return;for(var _0x7adb51 in _0x37a93b){if(_[_0x5a2c('0x13c')](_0x37a93b[_0x7adb51])){for(var _0x347f41=0x0;_0x347f41<_0x37a93b[_0x7adb51]['length'];_0x347f41++){maskSensitiveData(_0x37a93b[_0x7adb51][_0x347f41]);}}else if(_[_0x5a2c('0x13b')](_0x37a93b[_0x7adb51])){maskSensitiveData(_0x37a93b[_0x7adb51]);}else if(_['isString'](_0x37a93b[_0x7adb51])){_0x37a93b[_0x7adb51]=_0x37a93b[_0x7adb51][_0x5a2c('0x13d')](/{{{/g,'@@{')[_0x5a2c('0x13d')](/}}}/g,_0x5a2c('0x13e'))[_0x5a2c('0x13d')](/{{/g,'@{')[_0x5a2c('0x13d')](/}}/g,'}@');if(_[_0x5a2c('0x13f')](sensitiveFields,_0x7adb51)){_0x37a93b[_0x7adb51]=_0x37a93b[_0x7adb51]['replace'](_0x1f58fc,'*');}}}}
\ No newline at end of file
+var _0xd9b0=['./api/user','./api/voiceChanSpy','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','./api/mailQueue','/api/mail/substatuses','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','/api/mail/applications','./api/mailApplication','./api/mailQueueReport','/api/dashboards','/api/dashboards/items','./api/faxAccount','/api/fax/applications','./api/faxApplication','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','./api/openchannelInteraction','/api/openchannel/messages','/api/openchannel/queues','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','/api/chat/proactive_actions','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','./api/pause','/api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','/api/sounds','/api/tags','./api/tag','/api/triggers','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/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/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','/api/integrations/zendesk/fields','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','./api/intFreshsalesAccount','./api/intFreshsalesConfiguration','./api/intFreshsalesField','/api/networks','/api/chat/reports/queue','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','./api/jscriptyQuestionReport','./api/jscriptySessionReport','./api/smsQueueReport','/api/square/reports','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','./api/squareMessage','/api/teams','./api/team','./api/campaign','./api/migration','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','/api/chat/reports/transfer','/api/fax/reports/transfer','/api/openchannel/reports/transfer','/api/sms/reports/transfer','./api/cmList','/api/voice/prefixes','/api/userProfile/sections','./api/userProfileSection','./api/userProfileResource','/api/userNotifications','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappInteraction','/api/whatsapp/messages','./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/auth/google','./api/authGoogle','/api/jira','./api/jira','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/apidoc','static','join','root','/www','/demo','/snippet','snippet','/plugins','/server/files/plugins','route','get','resolve','/index.html','username','password','lastName','phone','mobile','clientSecret','securityToken','code','accessKey','tenantId','token','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridname','exten','clientEmail','privateKey','accesskeyid','secretaccesskey','pass','localstationid','dsn','secret','isPlainObject','isArray','length','isString','replace','@@{','}@@','includes','lodash','path','express','express-winston','util','./errors','./config/environment','./config/logger','api','auth','default','use','logger','isEmpty','body','\x20body=%s','format','method','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','user','name','role','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','responseTime','other','agent_name','test','/api/users'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0xd9b0,0x122));var _0x0d9b=function(_0x4f1f71,_0x16217f){_0x4f1f71=_0x4f1f71-0x0;var _0x532440=_0xd9b0[_0x4f1f71];return _0x532440;};'use strict';var _=require(_0x0d9b('0x0'));var path=require(_0x0d9b('0x1'));var express=require(_0x0d9b('0x2'));var ewinston=require(_0x0d9b('0x3'));var util=require(_0x0d9b('0x4'));var errors=require(_0x0d9b('0x5'));var config=require(_0x0d9b('0x6'));var logger=require(_0x0d9b('0x7'))(_0x0d9b('0x8'));var authLogger=require(_0x0d9b('0x7'))(_0x0d9b('0x9'));exports[_0x0d9b('0xa')]=function(_0x3cf7de){_0x3cf7de[_0x0d9b('0xb')](ewinston[_0x0d9b('0xc')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x4ea0c7,_0x49ce27){var _0x19ce6b='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0x0d9b('0xd')](_0x4ea0c7[_0x0d9b('0xe')])){_0x19ce6b+=_0x0d9b('0xf');var _0xae7f96=_0x4ea0c7[_0x0d9b('0xe')];maskSensitiveData(_0xae7f96);}return util[_0x0d9b('0x10')](_0x19ce6b,_0x4ea0c7[_0x0d9b('0x11')],_0x4ea0c7[_0x0d9b('0x12')]['x-forwarded-for']?_0x4ea0c7['headers'][_0x0d9b('0x13')]:_0x4ea0c7[_0x0d9b('0x14')][_0x0d9b('0x15')]||_0x4ea0c7['ip'],_0x4ea0c7[_0x0d9b('0x16')],_0x49ce27[_0x0d9b('0x17')],_0x49ce27['responseTime'],_0x4ea0c7[_0x0d9b('0x18')]?_0x4ea0c7[_0x0d9b('0x18')]['id']:null,_0x4ea0c7[_0x0d9b('0x18')]?_0x4ea0c7[_0x0d9b('0x18')][_0x0d9b('0x19')]:null,_0x4ea0c7[_0x0d9b('0x18')]?_0x4ea0c7[_0x0d9b('0x18')][_0x0d9b('0x1a')]:null,_0xae7f96?util['inspect'](_0xae7f96,![],null):'');}}));_0x3cf7de[_0x0d9b('0xb')](ewinston[_0x0d9b('0xc')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x56c965,_0xfa08e8){var _0x53cae1=_0x0d9b('0x1b');if(_0x56c965['body']&&_0x56c965['body'][_0x0d9b('0x1c')]&&_0x56c965[_0x0d9b('0xe')][_0x0d9b('0x1d')]){_0x53cae1=_0x0d9b('0x1e');}return util[_0x0d9b('0x10')](_0x53cae1,_0x56c965[_0x0d9b('0x11')],_0x56c965[_0x0d9b('0x12')][_0x0d9b('0x13')]?_0x56c965[_0x0d9b('0x12')][_0x0d9b('0x13')]:_0x56c965[_0x0d9b('0x14')][_0x0d9b('0x15')]||_0x56c965['ip'],_0x56c965[_0x0d9b('0x16')],_0xfa08e8[_0x0d9b('0x17')],_0xfa08e8[_0x0d9b('0x1f')],_0x56c965[_0x0d9b('0x18')]?_0x56c965[_0x0d9b('0x18')]['id']:null,_0x56c965['user']?_0x56c965[_0x0d9b('0x18')][_0x0d9b('0x19')]:null,_0x56c965[_0x0d9b('0x18')]?_0x56c965[_0x0d9b('0x18')]['role']:null,_0x56c965[_0x0d9b('0xe')]&&_0x56c965[_0x0d9b('0xe')][_0x0d9b('0x1c')]?_0x56c965[_0x0d9b('0xe')][_0x0d9b('0x1c')]:_0x0d9b('0x20'),_0x56c965['body']&&_0x56c965[_0x0d9b('0xe')][_0x0d9b('0x1d')]?_0x56c965[_0x0d9b('0xe')][_0x0d9b('0x1d')]:'',_0x56c965[_0x0d9b('0xe')]&&_0x56c965['body'][_0x0d9b('0x21')]?_0x56c965['body'][_0x0d9b('0x21')]:'');},'ignoreRoute':function(_0x267f8c){var _0x5a7544=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x5a7544[_0x0d9b('0x22')](_0x267f8c[_0x0d9b('0x16')]);}}));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x23'),require(_0x0d9b('0x24')));_0x3cf7de[_0x0d9b('0xb')]('/api/voice/chanspy',require(_0x0d9b('0x25')));_0x3cf7de[_0x0d9b('0xb')]('/api/voice/contexts',require('./api/voiceContext'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x26'),require(_0x0d9b('0x27')));_0x3cf7de[_0x0d9b('0xb')]('/api/voice/mohs',require(_0x0d9b('0x28')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x29'),require(_0x0d9b('0x2a')));_0x3cf7de['use'](_0x0d9b('0x2b'),require(_0x0d9b('0x2c')));_0x3cf7de['use']('/api/screen/recordings',require(_0x0d9b('0x2d')));_0x3cf7de['use'](_0x0d9b('0x2e'),require(_0x0d9b('0x2f')));_0x3cf7de['use'](_0x0d9b('0x30'),require(_0x0d9b('0x31')));_0x3cf7de[_0x0d9b('0xb')]('/api/voice/calls/reports',require('./api/voiceCallReport'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x32'),require(_0x0d9b('0x33')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x34'),require(_0x0d9b('0x35')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x36'),require(_0x0d9b('0x37')));_0x3cf7de[_0x0d9b('0xb')]('/api/members/reports',require('./api/memberReport'));_0x3cf7de[_0x0d9b('0xb')]('/api/trunks',require(_0x0d9b('0x38')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x39'),require(_0x0d9b('0x3a')));_0x3cf7de['use'](_0x0d9b('0x3b'),require(_0x0d9b('0x3c')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x3d'),require(_0x0d9b('0x3e')));_0x3cf7de['use']('/api/mail/queues',require(_0x0d9b('0x3f')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x40'),require('./api/mailSubstatus'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x41'),require(_0x0d9b('0x42')));_0x3cf7de['use'](_0x0d9b('0x43'),require('./api/mailMessage'));_0x3cf7de['use'](_0x0d9b('0x44'),require(_0x0d9b('0x45')));_0x3cf7de[_0x0d9b('0xb')]('/api/mail/reports/queue',require(_0x0d9b('0x46')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x47'),require('./api/dashboard'));_0x3cf7de['use'](_0x0d9b('0x48'),require('./api/dashboardItem'));_0x3cf7de[_0x0d9b('0xb')]('/api/fax/accounts',require(_0x0d9b('0x49')));_0x3cf7de['use'](_0x0d9b('0x4a'),require(_0x0d9b('0x4b')));_0x3cf7de[_0x0d9b('0xb')]('/api/fax/interactions',require(_0x0d9b('0x4c')));_0x3cf7de['use'](_0x0d9b('0x4d'),require(_0x0d9b('0x4e')));_0x3cf7de['use'](_0x0d9b('0x4f'),require(_0x0d9b('0x50')));_0x3cf7de['use']('/api/fax/reports/queue',require(_0x0d9b('0x51')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x52'),require(_0x0d9b('0x53')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x54'),require(_0x0d9b('0x55')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x56'),require(_0x0d9b('0x57')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x58'),require(_0x0d9b('0x59')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x5a'),require('./api/smsQueue'));_0x3cf7de[_0x0d9b('0xb')]('/api/openchannel/accounts',require(_0x0d9b('0x5b')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x5c'),require(_0x0d9b('0x5d')));_0x3cf7de[_0x0d9b('0xb')]('/api/openchannel/interactions',require(_0x0d9b('0x5e')));_0x3cf7de['use'](_0x0d9b('0x5f'),require('./api/openchannelMessage'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x60'),require('./api/openchannelQueue'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x61'),require(_0x0d9b('0x62')));_0x3cf7de['use'](_0x0d9b('0x63'),require(_0x0d9b('0x64')));_0x3cf7de['use'](_0x0d9b('0x65'),require(_0x0d9b('0x66')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x67'),require(_0x0d9b('0x68')));_0x3cf7de['use'](_0x0d9b('0x69'),require(_0x0d9b('0x6a')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x6b'),require(_0x0d9b('0x6c')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x6d'),require(_0x0d9b('0x6e')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x6f'),require('./api/chatGroup'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x70'),require('./api/chatProactiveAction'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x71'),require(_0x0d9b('0x72')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x73'),require(_0x0d9b('0x74')));_0x3cf7de['use'](_0x0d9b('0x75'),require('./api/cmHopper'));_0x3cf7de[_0x0d9b('0xb')]('/api/cm/hopper_black',require(_0x0d9b('0x76')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x77'),require(_0x0d9b('0x78')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x79'),require('./api/cmHopperHistory'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x7a'),require(_0x0d9b('0x7b')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x7c'),require(_0x0d9b('0x7d')));_0x3cf7de['use'](_0x0d9b('0x7e'),require(_0x0d9b('0x7f')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x80'),require(_0x0d9b('0x81')));_0x3cf7de['use'](_0x0d9b('0x82'),require(_0x0d9b('0x83')));_0x3cf7de['use'](_0x0d9b('0x84'),require(_0x0d9b('0x85')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x86'),require(_0x0d9b('0x87')));_0x3cf7de[_0x0d9b('0xb')]('/api/pauses',require(_0x0d9b('0x88')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x89'),require('./api/cdr'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x8a'),require(_0x0d9b('0x8b')));_0x3cf7de['use'](_0x0d9b('0x8c'),require('./api/schedule'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x8d'),require('./api/sound'));_0x3cf7de['use'](_0x0d9b('0x8e'),require(_0x0d9b('0x8f')));_0x3cf7de['use']('/api/templates',require('./api/template'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x90'),require('./api/trigger'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x91'),require(_0x0d9b('0x92')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x93'),require(_0x0d9b('0x94')));_0x3cf7de['use'](_0x0d9b('0x95'),require(_0x0d9b('0x96')));_0x3cf7de[_0x0d9b('0xb')]('/api/analytics/custom_reports',require(_0x0d9b('0x97')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x98'),require(_0x0d9b('0x99')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x9a'),require(_0x0d9b('0x9b')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x9c'),require(_0x0d9b('0x9d')));_0x3cf7de['use']('/api/analytics/field_reports',require(_0x0d9b('0x9e')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x9f'),require(_0x0d9b('0xa0')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xa1'),require(_0x0d9b('0xa2')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xa3'),require(_0x0d9b('0xa4')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xa5'),require(_0x0d9b('0xa6')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xa7'),require(_0x0d9b('0xa8')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xa9'),require('./api/intSugarcrmConfiguration'));_0x3cf7de['use'](_0x0d9b('0xaa'),require(_0x0d9b('0xab')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xac'),require(_0x0d9b('0xad')));_0x3cf7de['use'](_0x0d9b('0xae'),require(_0x0d9b('0xaf')));_0x3cf7de['use'](_0x0d9b('0xb0'),require(_0x0d9b('0xb1')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xb2'),require(_0x0d9b('0xb3')));_0x3cf7de['use'](_0x0d9b('0xb4'),require(_0x0d9b('0xb5')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xb6'),require(_0x0d9b('0xb7')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xb8'),require('./api/intZendeskAccount'));_0x3cf7de[_0x0d9b('0xb')]('/api/integrations/zendesk/configurations',require('./api/intZendeskConfiguration'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xb9'),require('./api/intZendeskField'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xba'),require(_0x0d9b('0xbb')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xbc'),require(_0x0d9b('0xbd')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xbe'),require(_0x0d9b('0xbf')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xc0'),require(_0x0d9b('0xc1')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xc2'),require(_0x0d9b('0xc3')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xc4'),require(_0x0d9b('0xc5')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xc6'),require(_0x0d9b('0xc7')));_0x3cf7de[_0x0d9b('0xb')]('/api/integrations/servicenow/configurations',require(_0x0d9b('0xc8')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xc9'),require(_0x0d9b('0xca')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xcb'),require(_0x0d9b('0xcc')));_0x3cf7de[_0x0d9b('0xb')]('/api/integrations/dynamics365/configurations',require(_0x0d9b('0xcd')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xce'),require(_0x0d9b('0xcf')));_0x3cf7de[_0x0d9b('0xb')]('/api/integrations/freshsales/accounts',require(_0x0d9b('0xd0')));_0x3cf7de[_0x0d9b('0xb')]('/api/integrations/freshsales/configurations',require(_0x0d9b('0xd1')));_0x3cf7de[_0x0d9b('0xb')]('/api/integrations/freshsales/fields',require(_0x0d9b('0xd2')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xd3'),require('./api/network'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xd4'),require('./api/chatQueueReport'));_0x3cf7de['use']('/api/chat/internal/messages',require(_0x0d9b('0xd5')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xd6'),require(_0x0d9b('0xd7')));_0x3cf7de[_0x0d9b('0xb')]('/api/jscripty/questions/reports',require(_0x0d9b('0xd8')));_0x3cf7de['use']('/api/jscripty/sessions/reports',require(_0x0d9b('0xd9')));_0x3cf7de['use']('/api/sms/reports/queue',require(_0x0d9b('0xda')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xdb'),require('./api/squareReport'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xdc'),require(_0x0d9b('0xdd')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xde'),require(_0x0d9b('0xdf')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xe0'),require(_0x0d9b('0xe1')));_0x3cf7de[_0x0d9b('0xb')]('/api/square/odbc',require('./api/squareOdbc'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xe2'),require(_0x0d9b('0xe3')));_0x3cf7de['use'](_0x0d9b('0xe4'),require(_0x0d9b('0xe5')));_0x3cf7de[_0x0d9b('0xb')]('/api/square/messages',require(_0x0d9b('0xe6')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xe7'),require(_0x0d9b('0xe8')));_0x3cf7de[_0x0d9b('0xb')]('/api/license',require('./api/license'));_0x3cf7de['use']('/api/campaigns',require(_0x0d9b('0xe9')));_0x3cf7de[_0x0d9b('0xb')]('/api/migrations',require(_0x0d9b('0xea')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xeb'),require(_0x0d9b('0xec')));_0x3cf7de['use'](_0x0d9b('0xed'),require(_0x0d9b('0xee')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xef'),require('./api/mailTransferReport'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xf0'),require('./api/chatTransferReport'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xf1'),require('./api/faxTransferReport'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xf2'),require('./api/openchannelTransferReport'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xf3'),require('./api/smsTransferReport'));_0x3cf7de[_0x0d9b('0xb')]('/api/cm/lists',require(_0x0d9b('0xf4')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xf5'),require('./api/voicePrefix'));_0x3cf7de[_0x0d9b('0xb')]('/api/userProfiles',require('./api/userProfile'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xf6'),require(_0x0d9b('0xf7')));_0x3cf7de[_0x0d9b('0xb')]('/api/userProfile/resources',require(_0x0d9b('0xf8')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xf9'),require('./api/userNotification'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xfa'),require(_0x0d9b('0xfb')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0xfc'),require('./api/whatsappApplication'));_0x3cf7de[_0x0d9b('0xb')]('/api/whatsapp/interactions',require(_0x0d9b('0xfd')));_0x3cf7de['use'](_0x0d9b('0xfe'),require('./api/whatsappMessage'));_0x3cf7de[_0x0d9b('0xb')]('/api/whatsapp/reports/queue',require(_0x0d9b('0xff')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x100'),require(_0x0d9b('0x101')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x102'),require(_0x0d9b('0x103')));_0x3cf7de['use'](_0x0d9b('0x104'),require(_0x0d9b('0x105')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x106'),require(_0x0d9b('0x107')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x108'),require(_0x0d9b('0x109')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x10a'),require(_0x0d9b('0x10b')));_0x3cf7de['use'](_0x0d9b('0x10c'),require(_0x0d9b('0x10d')));_0x3cf7de['use']('/api/rpc',require('./api/rpc'));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x10e'),require(_0x0d9b('0x10f')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x110'),require(_0x0d9b('0x111')));_0x3cf7de['use'](_0x0d9b('0x112'),require(_0x0d9b('0x113')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x114'),require(_0x0d9b('0x115')));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x116'),express[_0x0d9b('0x117')](path[_0x0d9b('0x118')](config[_0x0d9b('0x119')],_0x0d9b('0x116'))));_0x3cf7de['use'](_0x0d9b('0x11a'),express[_0x0d9b('0x117')](path[_0x0d9b('0x118')](config[_0x0d9b('0x119')],_0x0d9b('0x11a'))));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x11b'),express[_0x0d9b('0x117')](path[_0x0d9b('0x118')](config[_0x0d9b('0x119')],_0x0d9b('0x11b'))));_0x3cf7de[_0x0d9b('0xb')](_0x0d9b('0x11c'),express[_0x0d9b('0x117')](path[_0x0d9b('0x118')](config[_0x0d9b('0x119')],_0x0d9b('0x11d'),'3.0.0')));_0x3cf7de['use'](_0x0d9b('0x11e'),express[_0x0d9b('0x117')](path[_0x0d9b('0x118')](config[_0x0d9b('0x119')],_0x0d9b('0x11f'))));_0x3cf7de[_0x0d9b('0x120')]('/:url(api|auth|components|app|bower_components|assets)/*')[_0x0d9b('0x121')](errors[0x194]);_0x3cf7de['route']('/*')['get'](function(_0x37d48f,_0x4390a5){_0x4390a5['sendFile'](path[_0x0d9b('0x122')](_0x3cf7de[_0x0d9b('0x121')]('appPath')+_0x0d9b('0x123')));});};var sensitiveFields=[_0x0d9b('0x124'),_0x0d9b('0x125'),'newPassword','apiKey','firstName',_0x0d9b('0x126'),'street',_0x0d9b('0x127'),_0x0d9b('0x128'),'fax','email','clientId',_0x0d9b('0x129'),_0x0d9b('0x12a'),_0x0d9b('0x12b'),_0x0d9b('0x12c'),_0x0d9b('0x12d'),_0x0d9b('0x12e'),'channelSecret','accessToken',_0x0d9b('0x12f'),_0x0d9b('0x130'),_0x0d9b('0x131'),_0x0d9b('0x132'),_0x0d9b('0x133'),_0x0d9b('0x134'),'calleridnum',_0x0d9b('0x135'),'vidaooApiKey',_0x0d9b('0x136'),_0x0d9b('0x137'),_0x0d9b('0x138'),_0x0d9b('0x139'),'key',_0x0d9b('0x18'),_0x0d9b('0x13a'),'accountSid',_0x0d9b('0x13b'),_0x0d9b('0x13c'),_0x0d9b('0x13d'),'registry','oldPassword'];function maskSensitiveData(_0x288966){var _0x978732=/(?!^)[\s\S](?!$)/g;if(!_[_0x0d9b('0x13e')](_0x288966))return;for(var _0x2d6924 in _0x288966){if(_[_0x0d9b('0x13f')](_0x288966[_0x2d6924])){for(var _0x3467c6=0x0;_0x3467c6<_0x288966[_0x2d6924][_0x0d9b('0x140')];_0x3467c6++){maskSensitiveData(_0x288966[_0x2d6924][_0x3467c6]);}}else if(_[_0x0d9b('0x13e')](_0x288966[_0x2d6924])){maskSensitiveData(_0x288966[_0x2d6924]);}else if(_[_0x0d9b('0x141')](_0x288966[_0x2d6924])){_0x288966[_0x2d6924]=_0x288966[_0x2d6924][_0x0d9b('0x142')](/{{{/g,_0x0d9b('0x143'))['replace'](/}}}/g,_0x0d9b('0x144'))[_0x0d9b('0x142')](/{{/g,'@{')[_0x0d9b('0x142')](/}}/g,'}@');if(_[_0x0d9b('0x145')](sensitiveFields,_0x2d6924)){_0x288966[_0x2d6924]=_0x288966[_0x2d6924][_0x0d9b('0x142')](_0x978732,'*');}}}}
\ No newline at end of file
index 3171294..f51b5ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf143=['../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','localhost','error','log','RPC\x20listening\x20on\x20','jayson/promise','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xf143,0x15d));var _0x3f14=function(_0x4ce3a4,_0x3d5950){_0x4ce3a4=_0x4ce3a4-0x0;var _0x199899=_0xf143[_0x4ce3a4];return _0x199899;};'use strict';var jayson=require(_0x3f14('0x0'));var BPromise=require('bluebird');var _=require(_0x3f14('0x1'));var config=require(_0x3f14('0x2'));exports[_0x3f14('0x3')]=function(){return new BPromise(function(_0x39b184,_0x4f3bb0){var _0x7c350d={};_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x5')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x6')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/voiceQueue/voiceQueue.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/voiceRecording/voiceRecording.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x7')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x8')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x9')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0xa')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0xb')));_0x7c350d=_['merge'](_0x7c350d,require('../api/trunk/trunk.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0xc')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0xd')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0xe')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/mailQueue/mailQueue.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0xf')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/mailMessage/mailMessage.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/mailApplication/mailApplication.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x10')));_0x7c350d=_['merge'](_0x7c350d,require('../api/faxAccount/faxAccount.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/faxApplication/faxApplication.rpc'));_0x7c350d=_['merge'](_0x7c350d,require('../api/faxInteraction/faxInteraction.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x11')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/faxQueue/faxQueue.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x12')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x13')));_0x7c350d=_['merge'](_0x7c350d,require('../api/smsInteraction/smsInteraction.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x14')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x15')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x16')));_0x7c350d=_['merge'](_0x7c350d,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x7c350d=_['merge'](_0x7c350d,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x17')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x18')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/chatInteraction/chatInteraction.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x19')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x1a')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x1b')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x1c')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x1d')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x1e')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x1f')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x20')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/pause/pause.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x21')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x22')));_0x7c350d=_['merge'](_0x7c350d,require('../api/trigger/trigger.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/variable/variable.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x23')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x24')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x25')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x26')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x27')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x28')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x29')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x2a')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x2b')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x2c')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x2d')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x2e')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x2f')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x30')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x31')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x32')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x33')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x34')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x35')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x36')));_0x7c350d=_['merge'](_0x7c350d,require(_0x3f14('0x37')));_0x7c350d=_[_0x3f14('0x4')](_0x7c350d,require(_0x3f14('0x38')));var _0x2dcb7f=jayson[_0x3f14('0x39')](_0x7c350d)[_0x3f14('0x3a')]();var _0x26df21=config[_0x3f14('0x3b')][_0x3f14('0x3c')]||config[_0x3f14('0x3c')]+0x1;var _0x22526a=config[_0x3f14('0x3b')]['ip']||_0x3f14('0x3d');_0x2dcb7f['on'](_0x3f14('0x3e'),function(_0x5129fc){return _0x4f3bb0(_0x5129fc);});_0x2dcb7f[_0x3f14('0x3')](_0x26df21,_0x22526a,function(){console[_0x3f14('0x3f')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x22526a,_0x26df21);require('../config/triggers')['default']();return _0x39b184(_0x3f14('0x40')+_0x22526a+':'+_0x26df21);});});};
\ No newline at end of file
+var _0x8e3e=['../api/cmHopperHistory/cmHopperHistory.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.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/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','port','rpc','error','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','bluebird','listen','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc'];(function(_0x5b2cff,_0x43db7a){var _0x1a1288=function(_0x5218c4){while(--_0x5218c4){_0x5b2cff['push'](_0x5b2cff['shift']());}};_0x1a1288(++_0x43db7a);}(_0x8e3e,0x1cd));var _0xe8e3=function(_0x4c585d,_0x5c0b6c){_0x4c585d=_0x4c585d-0x0;var _0x1b4962=_0x8e3e[_0x4c585d];return _0x1b4962;};'use strict';var jayson=require(_0xe8e3('0x0'));var BPromise=require(_0xe8e3('0x1'));var _=require('lodash');var config=require('../config/environment');exports[_0xe8e3('0x2')]=function(){return new BPromise(function(_0xaa6f4,_0x38018f){var _0x211e5c={};_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require('../api/user/user.rpc'));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x4')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x5')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x6')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x7')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x8')));_0x211e5c=_['merge'](_0x211e5c,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x9')));_0x211e5c=_['merge'](_0x211e5c,require(_0xe8e3('0xa')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0xb')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0xc')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0xd')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0xe')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0xf')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require('../api/mailInteraction/mailInteraction.rpc'));_0x211e5c=_['merge'](_0x211e5c,require('../api/mailMessage/mailMessage.rpc'));_0x211e5c=_['merge'](_0x211e5c,require(_0xe8e3('0x10')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x11')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require('../api/faxAccount/faxAccount.rpc'));_0x211e5c=_['merge'](_0x211e5c,require('../api/faxApplication/faxApplication.rpc'));_0x211e5c=_['merge'](_0x211e5c,require(_0xe8e3('0x12')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x13')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x14')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x15')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x16')));_0x211e5c=_['merge'](_0x211e5c,require('../api/smsInteraction/smsInteraction.rpc'));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require('../api/smsMessage/smsMessage.rpc'));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x17')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x18')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x19')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x1a')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x1b')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x1c')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x1d')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x1e')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x1f')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x20')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x21')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x22')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x23')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x24')));_0x211e5c=_['merge'](_0x211e5c,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x25')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x26')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x27')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x28')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require('../api/trigger/trigger.rpc'));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x29')));_0x211e5c=_['merge'](_0x211e5c,require(_0xe8e3('0x2a')));_0x211e5c=_['merge'](_0x211e5c,require(_0xe8e3('0x2b')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x2c')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x2d')));_0x211e5c=_['merge'](_0x211e5c,require(_0xe8e3('0x2e')));_0x211e5c=_['merge'](_0x211e5c,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x2f')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x30')));_0x211e5c=_['merge'](_0x211e5c,require(_0xe8e3('0x31')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x211e5c=_['merge'](_0x211e5c,require(_0xe8e3('0x32')));_0x211e5c=_['merge'](_0x211e5c,require('../api/squareReport/squareReport.rpc'));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x33')));_0x211e5c=_['merge'](_0x211e5c,require(_0xe8e3('0x34')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x35')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x36')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x37')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x38')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x39')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require('../api/attachment/attachment.rpc'));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require('../api/plugin/plugin.rpc'));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x3a')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x3b')));_0x211e5c=_[_0xe8e3('0x3')](_0x211e5c,require(_0xe8e3('0x3c')));_0x211e5c=_['merge'](_0x211e5c,require(_0xe8e3('0x3d')));var _0x1cd980=jayson[_0xe8e3('0x3e')](_0x211e5c)[_0xe8e3('0x3f')]();var _0x376801=config['rpc'][_0xe8e3('0x40')]||config[_0xe8e3('0x40')]+0x1;var _0x3afb07=config[_0xe8e3('0x41')]['ip']||'localhost';_0x1cd980['on'](_0xe8e3('0x42'),function(_0x44f9c7){return _0x38018f(_0x44f9c7);});_0x1cd980[_0xe8e3('0x2')](_0x376801,_0x3afb07,function(){console['log'](_0xe8e3('0x43'),_0x3afb07,_0x376801);require(_0xe8e3('0x44'))[_0xe8e3('0x45')]();return _0xaa6f4(_0xe8e3('0x46')+_0x3afb07+':'+_0x376801);});});};
\ No newline at end of file
index 11c9574..3fb09e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67da=['function','no\x20code','replace','result=','indexOf','substr','startsWith','split','length','match','error','code','close','emit','E_AGI_SOCKET_CLOSE','timeout','destroy','command','write','inherits','sendRequest','sync','prototype','answer','getData','noop','NO\x20MESSAGE','format','isArray','EXEC\x20%s\x20%s','join','setExtension','setPriority','SET\x20PRIORITY\x20%s','setVariable','isBoolean','toString','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','setContext','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','exec','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','EventEmitter','./reply','./error','call','setEncoding','utf8','setTimeout','headers','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper'];(function(_0x4138d7,_0xa5adf1){var _0x2ab7db=function(_0x431c28){while(--_0x431c28){_0x4138d7['push'](_0x4138d7['shift']());}};_0x2ab7db(++_0xa5adf1);}(_0x67da,0x15f));var _0xa67d=function(_0x416ef5,_0x194348){_0x416ef5=_0x416ef5-0x0;var _0x3620a6=_0x67da[_0x416ef5];return _0x3620a6;};'use strict';var util=require(_0xa67d('0x0'));var _=require('lodash');var EventEmitter=require('events')[_0xa67d('0x1')];var AGIReply=require(_0xa67d('0x2'));var AGIError=require(_0xa67d('0x3'));function AGIChannel(_0x1b0a52){var _0x17fe0c=this,_0x3ad677=new AGIReply(),_0x313d2e=![],_0x25ab6d={};EventEmitter[_0xa67d('0x4')](_0x17fe0c);_0x1b0a52[_0xa67d('0x5')](_0xa67d('0x6'));_0x1b0a52[_0xa67d('0x7')](0x8*0x3c*0x3c*0x3e8);_0x3ad677['setEncoding'](_0xa67d('0x6'));_0x3ad677['on'](_0xa67d('0x8'),function(_0x59255d){for(var _0x19c871 in _0x59255d){_0x17fe0c[_0x19c871]=_0x59255d[_0x19c871];}_0x17fe0c['emit']('ready');});_0x3ad677['on']('line',function(_0x23e48f){if(_0x23e48f['toLowerCase']()=='hangup'){_0x17fe0c['emit'](_0xa67d('0x9'));return;}if(_0x23e48f[_0xa67d('0xa')](0x0,0xb)==_0xa67d('0xb')){_0x313d2e=!![];}if(_0x313d2e){_0x25ab6d['rx']+=_0x23e48f+'\x0a';if(_0x23e48f[_0xa67d('0xc')](_0xa67d('0xd'))!=-0x1){_0x313d2e=![];}}else{_0x25ab6d['rx']=_0x23e48f;}if(_0x313d2e){return;}if(typeof _0x25ab6d['cb']==_0xa67d('0xe')){var _0x6f5cb6=_0x25ab6d['rx']['substring'](0x0,0x3),_0x353a27=null,_0x37a264=null;_0x6f5cb6=parseInt(_0x6f5cb6);if(isNaN(_0x6f5cb6)){_0x25ab6d['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xa67d('0xf')});return;}if(_0x6f5cb6!=0xc8){_0x25ab6d['cb'](null,{'code':_0x6f5cb6,'result':-0x1,'extra':'KO'});return;}_0x353a27=_0x25ab6d['rx'][_0xa67d('0xa')](0x4)[_0xa67d('0x10')](_0xa67d('0x11'),'');if(_0x353a27[_0xa67d('0x12')]('\x20')!=-0x1){_0x353a27=_0x353a27[_0xa67d('0x13')](0x0,_0x353a27[_0xa67d('0x12')]('\x20'));}if(_[_0xa67d('0x14')](_0x353a27,'-1')){_0x353a27=parseInt(_0x353a27);}_0x37a264=_0x25ab6d['rx'][_0xa67d('0x15')]('\x20');if(_0x37a264['length']==0x3){_0x37a264=_0x37a264[0x2]['substring'](0x1,_0x37a264[0x2][_0xa67d('0x16')]-0x1);}else if(_0x37a264[_0xa67d('0x16')]>0x3){var _0x491851=/\((.+)\)/;var _0x1ebf71=_0x25ab6d['rx'][_0xa67d('0x17')](_0x491851);if(_0x1ebf71){_0x37a264=_0x1ebf71[0x1];}else{_0x37a264=null;}}else{_0x37a264=null;}_0x25ab6d['cb'](null,{'code':_0x6f5cb6,'result':_0x353a27,'extra':_0x37a264});}});_0x1b0a52['on'](_0xa67d('0x18'),function(_0x4d3cc1){_0x17fe0c['emit'](_0xa67d('0x18'),new AGIError('E_AGI_SOCKET_ERROR',_0x4d3cc1[_0xa67d('0x19')]));});_0x1b0a52['on'](_0xa67d('0x1a'),function(){_0x17fe0c[_0xa67d('0x1b')](_0xa67d('0x1a'),new AGIError(_0xa67d('0x1c')));});_0x1b0a52['on'](_0xa67d('0x1d'),function(){_0x17fe0c['emit'](_0xa67d('0x1d'),new AGIError('E_AGI_SOCKET_TIMEOUT'));_0x1b0a52[_0xa67d('0x1e')]();});_0x1b0a52['pipe'](_0x3ad677);this[_0xa67d('0x1f')]=function(_0x3a8d41,_0x1e4d06){var _0x3a8d41=_0x3a8d41||'',_0x1e4d06=typeof _0x1e4d06==_0xa67d('0xe')?_0x1e4d06:new Function();_0x25ab6d={'tx':_0x3a8d41,'rx':'','cb':_0x1e4d06};_0x1b0a52[_0xa67d('0x20')](_0x3a8d41+'\x0a');},this['close']=function(){_0x1b0a52[_0xa67d('0x1e')]();};}util[_0xa67d('0x21')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0xa67d('0x22')]=function(_0x1bf8c1){return this[_0xa67d('0x1f')][_0xa67d('0x23')](this,_0x1bf8c1);};AGIChannel[_0xa67d('0x24')][_0xa67d('0x25')]=function(){return this[_0xa67d('0x22')]('ANSWER');};AGIChannel['prototype'][_0xa67d('0x26')]=function(_0x154474,_0x24e822,_0x47b082){_0x154474=_0x154474===undefined?'beep':_0x154474;_0x24e822=_0x24e822===undefined?'5':_0x24e822;_0x47b082=_0x47b082===undefined?'1':_0x47b082;return this[_0xa67d('0x22')](util['format']('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x154474,_0x24e822*0x3e8,_0x47b082));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x27')]=function(_0x51e5db){_0x51e5db=_0x51e5db||_0xa67d('0x28');return this[_0xa67d('0x22')](util[_0xa67d('0x29')]('VERBOSE\x20\x22%s\x22',_0x51e5db));};AGIChannel[_0xa67d('0x24')]['exec']=function(_0x30e3eb,_0x47586d){if(_[_0xa67d('0x2a')](_0x47586d)){return this['sendRequest'](util['format'](_0xa67d('0x2b'),_0x30e3eb,_0x47586d[_0xa67d('0x2c')](',')));}return this[_0xa67d('0x22')](util[_0xa67d('0x29')](_0xa67d('0x2b'),_0x30e3eb,_0x47586d));};AGIChannel[_0xa67d('0x24')]['setContext']=function(_0x1e7009){return this[_0xa67d('0x22')](util['format']('SET\x20CONTEXT\x20%s',_0x1e7009));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x2d')]=function(_0x48df0d){return this[_0xa67d('0x22')](util[_0xa67d('0x29')]('SET\x20EXTENSION\x20%s',_0x48df0d));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x2e')]=function(_0x47f454){return this[_0xa67d('0x22')](util[_0xa67d('0x29')](_0xa67d('0x2f'),_0x47f454));};AGIChannel['prototype'][_0xa67d('0x9')]=function(){return this[_0xa67d('0x22')]('HANGUP');};AGIChannel[_0xa67d('0x24')][_0xa67d('0x30')]=function(_0x13ba80,_0x356229){var _0x4d5e85=_[_0xa67d('0x31')](_0x356229)||_['isNumber'](_0x356229)?_0x356229['toString']():_0x356229;return this[_0xa67d('0x22')](util[_0xa67d('0x29')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x13ba80,_0x4d5e85?_0x4d5e85[_0xa67d('0x32')]()[_0xa67d('0x10')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xa67d('0x24')]['sayNumber']=function(_0x2e92a1,_0xc2e9ad){return this['sendRequest'](util[_0xa67d('0x29')](_0xa67d('0x33'),_0x2e92a1,_0xc2e9ad));};AGIChannel['prototype'][_0xa67d('0x34')]=function(_0x455476,_0xb6b85f){return this[_0xa67d('0x22')](util[_0xa67d('0x29')](_0xa67d('0x35'),_0x455476,_0xb6b85f));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x36')]=function(_0x21bbd2,_0x161936){return this['sendRequest'](util[_0xa67d('0x29')](_0xa67d('0x37'),_0x21bbd2,_0x161936));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x38')]=function(_0x7fc7be,_0x2a9b7d,_0x25b6a0){_0x2a9b7d=_0x2a9b7d||this[_0xa67d('0x39')];_0x25b6a0=_0x25b6a0||0x1;this[_0xa67d('0x3a')](_0x7fc7be);this[_0xa67d('0x2d')](_0x2a9b7d);this[_0xa67d('0x2e')](_0x25b6a0);return this[_0xa67d('0x27')](util['format']('GOTO\x20%s\x20%s\x20%s',_0x7fc7be,_0x2a9b7d,_0x25b6a0));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x3b')]=function(_0x369293){return this[_0xa67d('0x22')](util[_0xa67d('0x29')](_0xa67d('0x3c'),_0x369293));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x3d')]=function(_0xa1c44,_0x334816,_0x46317d,_0x3ac677,_0x41d54d,_0x67b63f){_0x334816=_0x334816||_0xa67d('0x3e');_0x46317d=_0x46317d||'';_0x3ac677=_0x3ac677===undefined?-0x1:_0x3ac677==='-1'?-0x1:_0x3ac677*0x3e8;_0x41d54d=_0x41d54d===undefined?'':'s='+_0x41d54d;_0x67b63f=_0x67b63f?_0xa67d('0x3f'):'';return this[_0xa67d('0x22')](util[_0xa67d('0x29')](_0xa67d('0x40'),_0xa1c44,_0x334816,_0x46317d,_0x3ac677,_0x67b63f,_0x41d54d));};AGIChannel[_0xa67d('0x24')]['streamFile']=function(_0x396a62,_0x4e4d20){_0x4e4d20=_0x4e4d20||'';return this[_0xa67d('0x22')](util[_0xa67d('0x29')](_0xa67d('0x41'),_0x396a62,_0x4e4d20));};AGIChannel[_0xa67d('0x24')][_0xa67d('0x42')]=function(_0x4d4e3d){return this['exec'](_0xa67d('0x43'),_0x4d4e3d);};AGIChannel[_0xa67d('0x24')]['wait']=function(_0x20b427){return this[_0xa67d('0x44')](_0xa67d('0x45'),_0x20b427);};AGIChannel['prototype']['error']=function(_0x212712,_0x1cabea){this[_0xa67d('0x27')](util[_0xa67d('0x29')](_0xa67d('0x46'),_0x212712['id'],_0x212712[_0xa67d('0x47')],_0x1cabea));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xa67d('0x48')]=AGIChannel;
\ No newline at end of file
+var _0x4991=['isNumber','toString','replace','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','GET\x20VARIABLE\x20\x22%s\x22','recordFile','BEEP','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','exec','AGI','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','events','./reply','./error','call','utf8','setTimeout','setEncoding','headers','emit','line','hangup','substring','520-Invalid','no\x20code','result=','substr','indexOf','startsWith','split','length','match','error','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','function','write','inherits','sendRequest','sync','prototype','answer','getData','noop','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','isArray','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean'];(function(_0x2de6d0,_0x3c6394){var _0x42ec7b=function(_0x4add3a){while(--_0x4add3a){_0x2de6d0['push'](_0x2de6d0['shift']());}};_0x42ec7b(++_0x3c6394);}(_0x4991,0xf7));var _0x1499=function(_0x271ce8,_0x4c3614){_0x271ce8=_0x271ce8-0x0;var _0x435b64=_0x4991[_0x271ce8];return _0x435b64;};'use strict';var util=require(_0x1499('0x0'));var _=require('lodash');var EventEmitter=require(_0x1499('0x1'))['EventEmitter'];var AGIReply=require(_0x1499('0x2'));var AGIError=require(_0x1499('0x3'));function AGIChannel(_0x16ac22){var _0x47272e=this,_0x1b291f=new AGIReply(),_0x158134=![],_0x19adff={};EventEmitter[_0x1499('0x4')](_0x47272e);_0x16ac22['setEncoding'](_0x1499('0x5'));_0x16ac22[_0x1499('0x6')](0x8*0x3c*0x3c*0x3e8);_0x1b291f[_0x1499('0x7')](_0x1499('0x5'));_0x1b291f['on'](_0x1499('0x8'),function(_0x380e48){for(var _0x3277b3 in _0x380e48){_0x47272e[_0x3277b3]=_0x380e48[_0x3277b3];}_0x47272e[_0x1499('0x9')]('ready');});_0x1b291f['on'](_0x1499('0xa'),function(_0x36a053){if(_0x36a053['toLowerCase']()==_0x1499('0xb')){_0x47272e[_0x1499('0x9')]('hangup');return;}if(_0x36a053[_0x1499('0xc')](0x0,0xb)==_0x1499('0xd')){_0x158134=!![];}if(_0x158134){_0x19adff['rx']+=_0x36a053+'\x0a';if(_0x36a053['search']('520\x20End\x20of\x20proper')!=-0x1){_0x158134=![];}}else{_0x19adff['rx']=_0x36a053;}if(_0x158134){return;}if(typeof _0x19adff['cb']=='function'){var _0x3039ce=_0x19adff['rx'][_0x1499('0xc')](0x0,0x3),_0x274bc1=null,_0x34a928=null;_0x3039ce=parseInt(_0x3039ce);if(isNaN(_0x3039ce)){_0x19adff['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x1499('0xe')});return;}if(_0x3039ce!=0xc8){_0x19adff['cb'](null,{'code':_0x3039ce,'result':-0x1,'extra':'KO'});return;}_0x274bc1=_0x19adff['rx']['substring'](0x4)['replace'](_0x1499('0xf'),'');if(_0x274bc1['indexOf']('\x20')!=-0x1){_0x274bc1=_0x274bc1[_0x1499('0x10')](0x0,_0x274bc1[_0x1499('0x11')]('\x20'));}if(_[_0x1499('0x12')](_0x274bc1,'-1')){_0x274bc1=parseInt(_0x274bc1);}_0x34a928=_0x19adff['rx'][_0x1499('0x13')]('\x20');if(_0x34a928['length']==0x3){_0x34a928=_0x34a928[0x2][_0x1499('0xc')](0x1,_0x34a928[0x2][_0x1499('0x14')]-0x1);}else if(_0x34a928['length']>0x3){var _0x25164c=/\((.+)\)/;var _0x2d405f=_0x19adff['rx'][_0x1499('0x15')](_0x25164c);if(_0x2d405f){_0x34a928=_0x2d405f[0x1];}else{_0x34a928=null;}}else{_0x34a928=null;}_0x19adff['cb'](null,{'code':_0x3039ce,'result':_0x274bc1,'extra':_0x34a928});}});_0x16ac22['on'](_0x1499('0x16'),function(_0x1e45a9){_0x47272e[_0x1499('0x9')]('error',new AGIError('E_AGI_SOCKET_ERROR',_0x1e45a9['code']));});_0x16ac22['on'](_0x1499('0x17'),function(){_0x47272e[_0x1499('0x9')]('close',new AGIError(_0x1499('0x18')));});_0x16ac22['on'](_0x1499('0x19'),function(){_0x47272e[_0x1499('0x9')](_0x1499('0x19'),new AGIError(_0x1499('0x1a')));_0x16ac22[_0x1499('0x1b')]();});_0x16ac22[_0x1499('0x1c')](_0x1b291f);this[_0x1499('0x1d')]=function(_0xf8003e,_0x15bcd4){var _0xf8003e=_0xf8003e||'',_0x15bcd4=typeof _0x15bcd4==_0x1499('0x1e')?_0x15bcd4:new Function();_0x19adff={'tx':_0xf8003e,'rx':'','cb':_0x15bcd4};_0x16ac22[_0x1499('0x1f')](_0xf8003e+'\x0a');},this[_0x1499('0x17')]=function(){_0x16ac22[_0x1499('0x1b')]();};}util[_0x1499('0x20')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0x1499('0x21')]=function(_0xc79f69){return this[_0x1499('0x1d')][_0x1499('0x22')](this,_0xc79f69);};AGIChannel[_0x1499('0x23')][_0x1499('0x24')]=function(){return this['sendRequest']('ANSWER');};AGIChannel[_0x1499('0x23')][_0x1499('0x25')]=function(_0x3b9259,_0x50f0cc,_0x32782a){_0x3b9259=_0x3b9259===undefined?'beep':_0x3b9259;_0x50f0cc=_0x50f0cc===undefined?'5':_0x50f0cc;_0x32782a=_0x32782a===undefined?'1':_0x32782a;return this[_0x1499('0x21')](util['format']('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x3b9259,_0x50f0cc*0x3e8,_0x32782a));};AGIChannel['prototype'][_0x1499('0x26')]=function(_0x103efa){_0x103efa=_0x103efa||_0x1499('0x27');return this[_0x1499('0x21')](util[_0x1499('0x28')](_0x1499('0x29'),_0x103efa));};AGIChannel[_0x1499('0x23')]['exec']=function(_0x180171,_0x1a2c99){if(_[_0x1499('0x2a')](_0x1a2c99)){return this['sendRequest'](util[_0x1499('0x28')](_0x1499('0x2b'),_0x180171,_0x1a2c99['join'](',')));}return this[_0x1499('0x21')](util[_0x1499('0x28')]('EXEC\x20%s\x20%s',_0x180171,_0x1a2c99));};AGIChannel[_0x1499('0x23')][_0x1499('0x2c')]=function(_0x15cc57){return this[_0x1499('0x21')](util[_0x1499('0x28')](_0x1499('0x2d'),_0x15cc57));};AGIChannel[_0x1499('0x23')][_0x1499('0x2e')]=function(_0x11767f){return this[_0x1499('0x21')](util[_0x1499('0x28')](_0x1499('0x2f'),_0x11767f));};AGIChannel[_0x1499('0x23')][_0x1499('0x30')]=function(_0x2764ba){return this[_0x1499('0x21')](util[_0x1499('0x28')](_0x1499('0x31'),_0x2764ba));};AGIChannel[_0x1499('0x23')][_0x1499('0xb')]=function(){return this['sendRequest'](_0x1499('0x32'));};AGIChannel[_0x1499('0x23')][_0x1499('0x33')]=function(_0x24b1c7,_0x31251c){var _0x136002=_[_0x1499('0x34')](_0x31251c)||_[_0x1499('0x35')](_0x31251c)?_0x31251c[_0x1499('0x36')]():_0x31251c;return this[_0x1499('0x21')](util[_0x1499('0x28')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x24b1c7,_0x136002?_0x136002['toString']()[_0x1499('0x37')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0x1499('0x38')]=function(_0x499f1f,_0x30dc0c){return this[_0x1499('0x21')](util[_0x1499('0x28')](_0x1499('0x39'),_0x499f1f,_0x30dc0c));};AGIChannel['prototype'][_0x1499('0x3a')]=function(_0x5e3ec2,_0x2f9c59){return this[_0x1499('0x21')](util[_0x1499('0x28')](_0x1499('0x3b'),_0x5e3ec2,_0x2f9c59));};AGIChannel['prototype'][_0x1499('0x3c')]=function(_0x815a99,_0x1a589a){return this[_0x1499('0x21')](util['format'](_0x1499('0x3d'),_0x815a99,_0x1a589a));};AGIChannel['prototype'][_0x1499('0x3e')]=function(_0x38f449,_0x2a2441,_0x370f15){_0x2a2441=_0x2a2441||this[_0x1499('0x3f')];_0x370f15=_0x370f15||0x1;this[_0x1499('0x2c')](_0x38f449);this[_0x1499('0x2e')](_0x2a2441);this[_0x1499('0x30')](_0x370f15);return this[_0x1499('0x26')](util[_0x1499('0x28')]('GOTO\x20%s\x20%s\x20%s',_0x38f449,_0x2a2441,_0x370f15));};AGIChannel[_0x1499('0x23')]['getVariable']=function(_0x2cfdaf){return this[_0x1499('0x21')](util['format'](_0x1499('0x40'),_0x2cfdaf));};AGIChannel[_0x1499('0x23')][_0x1499('0x41')]=function(_0x213b50,_0x43e76c,_0x4db5a1,_0x5d1e9f,_0x368fdb,_0x2e5dc6){_0x43e76c=_0x43e76c||'wav';_0x4db5a1=_0x4db5a1||'';_0x5d1e9f=_0x5d1e9f===undefined?-0x1:_0x5d1e9f==='-1'?-0x1:_0x5d1e9f*0x3e8;_0x368fdb=_0x368fdb===undefined?'':'s='+_0x368fdb;_0x2e5dc6=_0x2e5dc6?_0x1499('0x42'):'';return this[_0x1499('0x21')](util['format']('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x213b50,_0x43e76c,_0x4db5a1,_0x5d1e9f,_0x2e5dc6,_0x368fdb));};AGIChannel[_0x1499('0x23')][_0x1499('0x43')]=function(_0x215fc0,_0x491707){_0x491707=_0x491707||'';return this[_0x1499('0x21')](util[_0x1499('0x28')](_0x1499('0x44'),_0x215fc0,_0x491707));};AGIChannel[_0x1499('0x23')]['agi']=function(_0x292c23){return this[_0x1499('0x45')](_0x1499('0x46'),_0x292c23);};AGIChannel[_0x1499('0x23')]['wait']=function(_0x2e425c){return this[_0x1499('0x45')](_0x1499('0x47'),_0x2e425c);};AGIChannel['prototype']['error']=function(_0xe49a9f,_0x491777){this[_0x1499('0x26')](util[_0x1499('0x28')](_0x1499('0x48'),_0xe49a9f['id'],_0xe49a9f[_0x1499('0x49')],_0x491777));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x1499('0x4a')]=AGIChannel;
\ No newline at end of file
index 4247450..25f87c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f26=['apply','message','name','exports','util','Undefined\x20error.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0x7f26,0x144));var _0x67f2=function(_0x2e88d4,_0x1ff29f){_0x2e88d4=_0x2e88d4-0x0;var _0x5372c9=_0x7f26[_0x2e88d4];return _0x5372c9;};'use strict';var util=require(_0x67f2('0x0'));var error={'E_AGI_UNDEFINED':_0x67f2('0x1'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0x67f2('0x2'),'E_AGI_SERVER_CLOSE':_0x67f2('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0x67f2('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0x67f2('0x5'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0x67f2('0x6'),'E_AGI_COMMAND_EMPTY':_0x67f2('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0x67f2('0x8')};function AGIError(_0x226b4e){var _0x226b4e=_0x226b4e||null,_0x348bb4=_0x348bb4||[],_0x5870e6=0x1,_0x3c3151='';if(!error[_0x226b4e]){_0x226b4e=_0x67f2('0x9');}_0x348bb4[_0x67f2('0xa')](error[_0x226b4e]);while(arguments[_0x5870e6]){_0x348bb4[_0x67f2('0xa')](arguments[_0x5870e6]);_0x5870e6++;}_0x3c3151=util[_0x67f2('0xb')][_0x67f2('0xc')](util,_0x348bb4);this[_0x67f2('0xd')]=_0x3c3151;this[_0x67f2('0xe')]=_0x226b4e;}module[_0x67f2('0xf')]=AGIError;
\ No newline at end of file
+var _0xb533=['Server\x20error.\x20Code:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','apply','message','name','exports','util','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.'];(function(_0x2de8c1,_0x5d20b5){var _0x1420b8=function(_0x5e70b9){while(--_0x5e70b9){_0x2de8c1['push'](_0x2de8c1['shift']());}};_0x1420b8(++_0x5d20b5);}(_0xb533,0x80));var _0x3b53=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xb533[_0x53ccf2];return _0x5a2964;};'use strict';var util=require(_0x3b53('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0x3b53('0x1'),'E_AGI_SERVER_ERROR':_0x3b53('0x2'),'E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0x3b53('0x3'),'E_AGI_SOCKET_ERROR':_0x3b53('0x4'),'E_AGI_SOCKET_CLOSE':_0x3b53('0x5'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0x3b53('0x6')};function AGIError(_0x2bf504){var _0x2bf504=_0x2bf504||null,_0x523503=_0x523503||[],_0x1f093e=0x1,_0x415320='';if(!error[_0x2bf504]){_0x2bf504=_0x3b53('0x7');}_0x523503[_0x3b53('0x8')](error[_0x2bf504]);while(arguments[_0x1f093e]){_0x523503['push'](arguments[_0x1f093e]);_0x1f093e++;}_0x415320=util['format'][_0x3b53('0x9')](util,_0x523503);this[_0x3b53('0xa')]=_0x415320;this[_0x3b53('0xb')]=_0x2bf504;}module[_0x3b53('0xc')]=AGIError;
\ No newline at end of file
index f7ef63e..cb4aa23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53e6=['traverseBFS','no\x20vertex\x20found','info','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','agicommand','target','default','invalid','vswitch','default\x20on\x20switch\x20not\x20found','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','getdigits','getsecretdigits','vertices','edges','prototype','push','size','relations','numberOfEdges','getVertex'];(function(_0xe36c7d,_0x1962c8){var _0x3485e4=function(_0x298422){while(--_0x298422){_0xe36c7d['push'](_0xe36c7d['shift']());}};_0x3485e4(++_0x1962c8);}(_0x53e6,0xbf));var _0x653e=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x53e6[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x653e('0x0'));var logger=require(_0x653e('0x1'))('agi');var verticesWithRetry=['menu',_0x653e('0x2'),_0x653e('0x3')];var Graph=function(){this[_0x653e('0x4')]={};this[_0x653e('0x5')]={};this['numberOfEdges']=0x0;};Graph[_0x653e('0x6')]['addVertex']=function(_0x9e8c48){this[_0x653e('0x4')][_0x9e8c48['id']]=_0x9e8c48;this[_0x653e('0x5')][_0x9e8c48['id']]=[];};Graph[_0x653e('0x6')]['addEdge']=function(_0x2fb2b1,_0x50ca67,_0x3954fe){this[_0x653e('0x5')][_0x2fb2b1][_0x653e('0x7')]({'target':_0x50ca67,'condition':_0x3954fe});this['numberOfEdges']+=0x1;};Graph[_0x653e('0x6')]['size']=function(){return _[_0x653e('0x8')](this['vertices']);};Graph[_0x653e('0x6')][_0x653e('0x9')]=function(){return this[_0x653e('0xa')];};Graph['prototype'][_0x653e('0xb')]=function(_0x19a661){return this[_0x653e('0x4')][_0x19a661];};Graph[_0x653e('0x6')][_0x653e('0xc')]=function(_0x15e781,_0x1d7a5a){if(!this[_0x653e('0x4')][_0x15e781]){return logger['info'](_0x653e('0xd'));}var _0x281efa=_0x1d7a5a(this['vertices'][_0x15e781]);if(!_0x281efa){return logger[_0x653e('0xe')](_0x653e('0xf'));}if(this[_0x653e('0x5')][_0x15e781][_0x653e('0x10')]===0x0){return logger[_0x653e('0xe')](_0x653e('0x11'));}for(var _0x21c959=0x0,_0x4ac05d=[],_0x120d49=![];_0x21c959<this[_0x653e('0x5')][_0x15e781][_0x653e('0x10')];_0x21c959+=0x1){if(this[_0x653e('0x5')][_0x15e781][_0x21c959][_0x653e('0x12')]){_0x4ac05d=this[_0x653e('0x5')][_0x15e781][_0x21c959][_0x653e('0x12')][_0x653e('0x13')](',');for(var _0x53832b=0x0;_0x53832b<_0x4ac05d[_0x653e('0x10')];_0x53832b+=0x1){if(this[_0x653e('0x4')][_0x15e781][_0x653e('0x14')]==='vswitch'&&_0x4ac05d[_0x53832b]==='-'){_0x120d49=this[_0x653e('0x5')][_0x15e781][_0x21c959][_0x653e('0x15')];logger[_0x653e('0xe')](_0x653e('0x16'),_0x4ac05d[_0x53832b],this[_0x653e('0x5')][_0x15e781][_0x21c959][_0x653e('0x15')]);}else if(this[_0x653e('0x4')][_0x15e781][_0x653e('0x14')]==='menu'&&_0x4ac05d[_0x53832b]==='i'){_0x120d49=this['edges'][_0x15e781][_0x21c959][_0x653e('0x15')];logger[_0x653e('0xe')](_0x653e('0x17'),_0x4ac05d[_0x53832b],this[_0x653e('0x5')][_0x15e781][_0x21c959][_0x653e('0x15')]);}if(_0x4ac05d[_0x53832b]===_0x281efa){return this[_0x653e('0xc')](this['edges'][_0x15e781][_0x21c959][_0x653e('0x15')],_0x1d7a5a);}}}else{return this[_0x653e('0xc')](this[_0x653e('0x5')][_0x15e781][_0x21c959][_0x653e('0x15')],_0x1d7a5a);}}if(_0x4ac05d[_0x653e('0x10')]){if(this[_0x653e('0x4')][_0x15e781]['agicommand']===_0x653e('0x18')){if(_0x120d49){return this[_0x653e('0xc')](_0x120d49,_0x1d7a5a);}return logger[_0x653e('0xe')](_0x653e('0x19'));}else if(_['includes'](verticesWithRetry,this['vertices'][_0x15e781][_0x653e('0x14')])){if(_0x281efa==='-'){return logger[_0x653e('0xe')](_0x653e('0x1a'));}if(_0x120d49&&_0x281efa!=='t'){return this[_0x653e('0xc')](_0x120d49,_0x1d7a5a);}return this[_0x653e('0xc')](_0x15e781,_0x1d7a5a);}return logger[_0x653e('0xe')](_0x653e('0x1b'));}};module[_0x653e('0x1c')]=Graph;
\ No newline at end of file
+var _0xa039=['default\x20on\x20switch\x20not\x20found','max\x20retry\x20reach','condition\x20not\x20found','exports','../../../config/logger','menu','getdigits','getsecretdigits','edges','numberOfEdges','vertices','addEdge','push','prototype','size','relations','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','agicommand','vswitch','target','default'];(function(_0x9e3831,_0x37667c){var _0x39c84b=function(_0x287a67){while(--_0x287a67){_0x9e3831['push'](_0x9e3831['shift']());}};_0x39c84b(++_0x37667c);}(_0xa039,0x1c4));var _0x9a03=function(_0x234a70,_0x177fe3){_0x234a70=_0x234a70-0x0;var _0xc0dd93=_0xa039[_0x234a70];return _0xc0dd93;};'use strict';var _=require('lodash');var logger=require(_0x9a03('0x0'))('agi');var verticesWithRetry=[_0x9a03('0x1'),_0x9a03('0x2'),_0x9a03('0x3')];var Graph=function(){this['vertices']={};this[_0x9a03('0x4')]={};this[_0x9a03('0x5')]=0x0;};Graph['prototype']['addVertex']=function(_0x5f21e2){this[_0x9a03('0x6')][_0x5f21e2['id']]=_0x5f21e2;this[_0x9a03('0x4')][_0x5f21e2['id']]=[];};Graph['prototype'][_0x9a03('0x7')]=function(_0x12e010,_0x3f9aff,_0x471791){this[_0x9a03('0x4')][_0x12e010][_0x9a03('0x8')]({'target':_0x3f9aff,'condition':_0x471791});this[_0x9a03('0x5')]+=0x1;};Graph[_0x9a03('0x9')][_0x9a03('0xa')]=function(){return _['size'](this['vertices']);};Graph[_0x9a03('0x9')][_0x9a03('0xb')]=function(){return this[_0x9a03('0x5')];};Graph[_0x9a03('0x9')]['getVertex']=function(_0x35eb9a){return this['vertices'][_0x35eb9a];};Graph[_0x9a03('0x9')][_0x9a03('0xc')]=function(_0x333e91,_0x36d340){if(!this[_0x9a03('0x6')][_0x333e91]){return logger[_0x9a03('0xd')](_0x9a03('0xe'));}var _0x217ae4=_0x36d340(this[_0x9a03('0x6')][_0x333e91]);if(!_0x217ae4){return logger['info'](_0x9a03('0xf'));}if(this[_0x9a03('0x4')][_0x333e91][_0x9a03('0x10')]===0x0){return logger['info'](_0x9a03('0x11'));}for(var _0x35db5f=0x0,_0x17e5be=[],_0x3f42f7=![];_0x35db5f<this['edges'][_0x333e91][_0x9a03('0x10')];_0x35db5f+=0x1){if(this[_0x9a03('0x4')][_0x333e91][_0x35db5f][_0x9a03('0x12')]){_0x17e5be=this['edges'][_0x333e91][_0x35db5f]['condition'][_0x9a03('0x13')](',');for(var _0x29d4eb=0x0;_0x29d4eb<_0x17e5be[_0x9a03('0x10')];_0x29d4eb+=0x1){if(this[_0x9a03('0x6')][_0x333e91][_0x9a03('0x14')]===_0x9a03('0x15')&&_0x17e5be[_0x29d4eb]==='-'){_0x3f42f7=this['edges'][_0x333e91][_0x35db5f][_0x9a03('0x16')];logger['info'](_0x9a03('0x17'),_0x17e5be[_0x29d4eb],this[_0x9a03('0x4')][_0x333e91][_0x35db5f]['target']);}else if(this['vertices'][_0x333e91][_0x9a03('0x14')]===_0x9a03('0x1')&&_0x17e5be[_0x29d4eb]==='i'){_0x3f42f7=this['edges'][_0x333e91][_0x35db5f][_0x9a03('0x16')];logger[_0x9a03('0xd')]('invalid',_0x17e5be[_0x29d4eb],this['edges'][_0x333e91][_0x35db5f][_0x9a03('0x16')]);}if(_0x17e5be[_0x29d4eb]===_0x217ae4){return this[_0x9a03('0xc')](this['edges'][_0x333e91][_0x35db5f][_0x9a03('0x16')],_0x36d340);}}}else{return this[_0x9a03('0xc')](this[_0x9a03('0x4')][_0x333e91][_0x35db5f][_0x9a03('0x16')],_0x36d340);}}if(_0x17e5be[_0x9a03('0x10')]){if(this[_0x9a03('0x6')][_0x333e91][_0x9a03('0x14')]===_0x9a03('0x15')){if(_0x3f42f7){return this['traverseBFS'](_0x3f42f7,_0x36d340);}return logger[_0x9a03('0xd')](_0x9a03('0x18'));}else if(_['includes'](verticesWithRetry,this['vertices'][_0x333e91][_0x9a03('0x14')])){if(_0x217ae4==='-'){return logger[_0x9a03('0xd')](_0x9a03('0x19'));}if(_0x3f42f7&&_0x217ae4!=='t'){return this['traverseBFS'](_0x3f42f7,_0x36d340);}return this[_0x9a03('0xc')](_0x333e91,_0x36d340);}return logger[_0x9a03('0xd')](_0x9a03('0x1a'));}};module[_0x9a03('0x1b')]=Graph;
\ No newline at end of file
index 1433604..1819b9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ddb=['[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','gotoc','context','extension','priority','code','result','response','isUndefined','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20found','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','listening','connection','xml2json','syncho','util','../../config/logger','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','agi','defaults','127.0.0.1','nextTick','error','stack','log','port','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','format','[%s]\x20%s','[ERROR]\x20%s','info','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry','omit','mxCell','isArray','length','source','target','addEdge','value','getSquareProject','then','catch','createSquareReport','indexOf','substring','inspect','debug','variables','stringify'];(function(_0x58ad56,_0x495cc7){var _0xcd8ac9=function(_0x43266c){while(--_0x43266c){_0x58ad56['push'](_0x58ad56['shift']());}};_0xcd8ac9(++_0x495cc7);}(_0x5ddb,0x1ee));var _0xb5dd=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x5ddb[_0x465028];return _0xb783d4;};'use strict';var parser=require(_0xb5dd('0x0'));var _=require('lodash');var syncho=require(_0xb5dd('0x1'));var util=require(_0xb5dd('0x2'));var moment=require('moment');var config=require('../../config/environment');var logger=require(_0xb5dd('0x3'))('agi');var utilLicense=require(_0xb5dd('0x4'));var rpc=require(_0xb5dd('0x5'));var mailRpc=require(_0xb5dd('0x6'));var Graph=require(_0xb5dd('0x7'));var Vertices=require(_0xb5dd('0x8'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xb5dd('0x9')]=_[_0xb5dd('0xa')](config['agi'],{'ip':_0xb5dd('0xb'),'port':0x11dd});function connectionHandler(_0x313561){process[_0xb5dd('0xc')](function(){syncho(function(){try{setChannelVariables(_0x313561);agiHandler(_0x313561);}catch(_0x47b565){logger[_0xb5dd('0xd')](_0x47b565[_0xb5dd('0xe')]);}});});}function listeningHandler(){console[_0xb5dd('0xf')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi'][_0xb5dd('0x10')]);logger['info'](util['format'](_0xb5dd('0x11'),config[_0xb5dd('0x9')]['ip'],config[_0xb5dd('0x9')][_0xb5dd('0x10')]));}function errorHandler(_0x14cb4a){if(_0x14cb4a&&_0x14cb4a[_0xb5dd('0x12')]&&_0x14cb4a[_0xb5dd('0x13')]){logger[_0xb5dd('0xd')](util[_0xb5dd('0x14')](_0xb5dd('0x15'),_0x14cb4a[_0xb5dd('0x12')],_0x14cb4a['message']));}else{logger[_0xb5dd('0xd')](util[_0xb5dd('0x14')](_0xb5dd('0x16'),_0x14cb4a[_0xb5dd('0xe')]));}}function closeHandler(){logger[_0xb5dd('0x17')](util[_0xb5dd('0x14')](_0xb5dd('0x18'),this[_0xb5dd('0x19')],this[_0xb5dd('0x1a')],this[_0xb5dd('0x1b')],this[_0xb5dd('0x1c')],this[_0xb5dd('0x1d')]));try{createSquareReport(this);}catch(_0x273d5a){logger['error'](_0x273d5a[_0xb5dd('0xe')]);}}function timeoutHandler(){logger['info'](util[_0xb5dd('0x14')](_0xb5dd('0x1e'),this[_0xb5dd('0x19')],this[_0xb5dd('0x1a')],this[_0xb5dd('0x1b')],this[_0xb5dd('0x1c')],this[_0xb5dd('0x1d')]));}function hangupHandler(){logger[_0xb5dd('0x17')](util['format'](_0xb5dd('0x1f'),this['arg_1'],this[_0xb5dd('0x1a')],this['callerid'],this[_0xb5dd('0x1c')],this['uniqueid']));this[_0xb5dd('0x20')]=!![];}function getRoot(_0x42287c){return parser[_0xb5dd('0x21')](_0x42287c,{'object':!![]})[_0xb5dd('0x22')][_0xb5dd('0x23')];}function addVertex(_0x389fd6,_0x417c94,_0x4332f3){_0x417c94[_0xb5dd('0x24')]=_0x4332f3;if(_0x417c94[_0xb5dd('0x25')](_0xb5dd('0x26'))){_0x417c94[_0xb5dd('0x27')]=parseInt(_0x417c94['retry'],0xa);}_0x389fd6['addVertex'](_[_0xb5dd('0x28')](_0x417c94,_0xb5dd('0x29')));}function initGraph(_0xfaebcb,_0x17c900){var _0x40b099=new Graph();for(var _0x423718 in _0xfaebcb){if(_0xfaebcb[_0xb5dd('0x25')](_0x423718)){if(_[_0xb5dd('0x2a')](_0xfaebcb[_0x423718])){for(var _0x3ae1f8=0x0;_0x3ae1f8<_0xfaebcb[_0x423718][_0xb5dd('0x2b')];_0x3ae1f8+=0x1){addVertex(_0x40b099,_0xfaebcb[_0x423718][_0x3ae1f8],_0x423718);}}else{addVertex(_0x40b099,_0xfaebcb[_0x423718],_0x423718);}}}for(var _0xc4d670=0x0;_0xc4d670<_0x17c900['length'];_0xc4d670+=0x1){if(_0x17c900[_0xc4d670][_0xb5dd('0x2c')]&&_0x17c900[_0xc4d670][_0xb5dd('0x2d')]){_0x40b099[_0xb5dd('0x2e')](_0x17c900[_0xc4d670][_0xb5dd('0x2c')],_0x17c900[_0xc4d670][_0xb5dd('0x2d')],_0x17c900[_0xc4d670][_0xb5dd('0x2f')]);}}return _0x40b099;}function getSquareProject(_0x390218,_0x41033f){rpc[_0xb5dd('0x30')](_0x390218)[_0xb5dd('0x31')](function(_0x34a54f){_0x41033f(null,_0x34a54f);})[_0xb5dd('0x32')](function(_0x4e96f4){_0x41033f(null,_0x4e96f4);});}function createSquareReport(_0xae46b2,_0x5d8a70){rpc[_0xb5dd('0x33')](_0xae46b2)[_0xb5dd('0x31')](function(_0x1d2f28){if(_0x5d8a70){_0x5d8a70(null,_0x1d2f28);}})[_0xb5dd('0x32')](function(_0x186210){if(_0x5d8a70){_0x5d8a70(null,_0x186210);}});}function setChannelVariables(_0x47ddaa){for(var _0x56e2dd in _0x47ddaa){if(_0x47ddaa[_0xb5dd('0x25')](_0x56e2dd)){if(_0x56e2dd[_0xb5dd('0x34')]('agi_')===0x0){_0x47ddaa[_0x56e2dd[_0xb5dd('0x35')](0x4)]=_0x47ddaa[_0x56e2dd];delete _0x47ddaa[_0x56e2dd];}}}}function getLogFromObject(_0xfe830){return util[_0xb5dd('0x36')](_0xfe830,{'showHidden':![],'depth':null});}function agiHandler(_0x573f52){var _0x4b9231,_0x18b2b7,_0x104545,_0x283cb7,_0x1ebcb8;logger[_0xb5dd('0x37')](_0xb5dd('0x38'),JSON[_0xb5dd('0x39')](_0x573f52,null,0x2));logger[_0xb5dd('0x17')](util[_0xb5dd('0x14')](_0xb5dd('0x3a'),_0x573f52['arg_1'],_0x573f52['calleridname'],_0x573f52[_0xb5dd('0x1b')],_0x573f52[_0xb5dd('0x1c')],_0x573f52[_0xb5dd('0x1d')]));_0x573f52['on']('error',errorHandler);_0x573f52['on'](_0xb5dd('0x3b'),closeHandler);_0x573f52['on'](_0xb5dd('0x3c'),timeoutHandler);_0x573f52[_0xb5dd('0x20')]=![];_0x573f52['on'](_0xb5dd('0x3d'),hangupHandler);var _0x185a28=getSquareProject['sync'](null,_0x573f52[_0xb5dd('0x19')]);if(_0x185a28){if(_0x185a28['production']){_0x4b9231=getRoot(_0x185a28[_0xb5dd('0x3e')]);if(_0x4b9231&&_0x4b9231[_0xb5dd('0x3f')]){logger[_0xb5dd('0x37')](_0xb5dd('0x23'),JSON[_0xb5dd('0x39')](_0x4b9231,null,0x2));_0x573f52[_0xb5dd('0x40')]=moment()[_0xb5dd('0x14')](_0xb5dd('0x41'));_0x18b2b7=initGraph(_['omit'](_0x4b9231,'mxCell'),_0x4b9231[_0xb5dd('0x29')]);_0x104545=new Vertices(_0x573f52,rpc,mailRpc);logger[_0xb5dd('0x17')](util[_0xb5dd('0x14')](_0xb5dd('0x42'),_0x573f52['arg_1'],_0x573f52[_0xb5dd('0x1a')],_0x573f52['callerid'],_0x573f52[_0xb5dd('0x1c')],_0x573f52[_0xb5dd('0x1d')]));_0x18b2b7[_0xb5dd('0x43')](_0x4b9231['start']['id'],function(_0x413236){try{_0x413236=_0x104545[_0xb5dd('0x44')](_0x413236);logger['debug'](_0xb5dd('0x45'),JSON[_0xb5dd('0x39')](_0x413236,null,0x2));if(_0x413236[_0xb5dd('0x24')]===_0xb5dd('0x46')){logger[_0xb5dd('0x17')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x573f52[_0xb5dd('0x47')]=_0x413236[_0xb5dd('0x47')]||_0x573f52['context'];_0x573f52[_0xb5dd('0x48')]=_0x413236[_0xb5dd('0x48')];_0x573f52[_0xb5dd('0x49')]=_0x413236[_0xb5dd('0x49')]?_0x413236[_0xb5dd('0x49')]-0x1:0x1;return null;}else if(_0x413236&&_0x104545[_0x413236[_0xb5dd('0x24')]]){_0x1ebcb8=_0x104545[_0x413236[_0xb5dd('0x24')]](_0x413236);logger[_0xb5dd('0x17')]('response',JSON[_0xb5dd('0x39')](_0x1ebcb8,null,0x2));if(_0x1ebcb8&&_0x1ebcb8[_0xb5dd('0x4a')]===AGI_CODE_SUCCESS&&_0x1ebcb8[_0xb5dd('0x4b')]!==AGI_RESULT_ERROR&&!_0x573f52[_0xb5dd('0x20')]){logger['debug'](_0xb5dd('0x4c'),getLogFromObject(_0x1ebcb8));return _[_0xb5dd('0x4d')](_0x1ebcb8[_0xb5dd('0x4b')])?null:_0x1ebcb8[_0xb5dd('0x4b')][_0xb5dd('0x4e')]();}else{logger[_0xb5dd('0xd')](_0xb5dd('0x4c'),getLogFromObject(_0x1ebcb8));return null;}}else{logger[_0xb5dd('0xd')](_0xb5dd('0x4f'));return null;}}catch(_0xf55e8b){logger[_0xb5dd('0xd')](_0xf55e8b['stack']);return null;}});if(_0x4b9231[_0xb5dd('0x50')]){logger['info'](util[_0xb5dd('0x14')](_0xb5dd('0x51'),_0x573f52[_0xb5dd('0x19')],_0x573f52[_0xb5dd('0x1a')],_0x573f52[_0xb5dd('0x1b')],_0x573f52[_0xb5dd('0x1c')],_0x573f52[_0xb5dd('0x1d')]));_0x18b2b7[_0xb5dd('0x43')](_0x4b9231['finally']['id'],function(_0x299d66){try{_0x299d66=_0x104545['clear'](_0x299d66);logger[_0xb5dd('0x37')](_0xb5dd('0x45'),JSON[_0xb5dd('0x39')](_0x299d66,null,0x2));if(_0x299d66&&_0x104545[_0x299d66[_0xb5dd('0x24')]]){_0x1ebcb8=_0x104545[_0x299d66[_0xb5dd('0x24')]](_0x299d66);if(_0x1ebcb8){logger[_0xb5dd('0x37')](_0xb5dd('0x4c'),getLogFromObject(_0x1ebcb8));return _[_0xb5dd('0x4d')](_0x1ebcb8[_0xb5dd('0x4b')])?null:_0x1ebcb8[_0xb5dd('0x4b')]['toString']();}else{logger['error']('response',getLogFromObject(_0x1ebcb8));return null;}}else{logger['error'](_0xb5dd('0x4f'));return null;}}catch(_0x33670d){logger[_0xb5dd('0xd')](_0x33670d[_0xb5dd('0xe')]);return null;}});}logger[_0xb5dd('0x17')](util[_0xb5dd('0x14')](_0xb5dd('0x52'),_0x573f52[_0xb5dd('0x19')],_0x573f52[_0xb5dd('0x1a')],_0x573f52[_0xb5dd('0x1b')],_0x573f52[_0xb5dd('0x1c')],_0x573f52[_0xb5dd('0x1d')]));logger[_0xb5dd('0x17')](util[_0xb5dd('0x14')](_0xb5dd('0x53'),_0x573f52[_0xb5dd('0x47')],_0x573f52[_0xb5dd('0x48')],parseInt(_0x573f52[_0xb5dd('0x49')],0xa)+0x1));_0x573f52[_0xb5dd('0x54')](_0x573f52[_0xb5dd('0x47')],_0x573f52['extension'],parseInt(_0x573f52[_0xb5dd('0x49')],0xa)+0x1);_0x573f52[_0xb5dd('0x3b')]();}}else{logger[_0xb5dd('0xd')](util[_0xb5dd('0x14')]('Project\x20%s\x20not\x20published',_0x573f52['arg_1']));_0x573f52[_0xb5dd('0x54')](_0x573f52[_0xb5dd('0x47')],_0x573f52[_0xb5dd('0x48')],parseInt(_0x573f52[_0xb5dd('0x49')],0xa)+0x1);_0x573f52[_0xb5dd('0x3b')]();}}else{logger['error'](util['format'](_0xb5dd('0x55'),_0x573f52[_0xb5dd('0x19')]));_0x573f52[_0xb5dd('0x54')](_0x573f52[_0xb5dd('0x47')],_0x573f52['extension'],parseInt(_0x573f52[_0xb5dd('0x49')],0xa)+0x1);_0x573f52[_0xb5dd('0x3b')]();}}function main(){var _0xbf8b31;return utilLicense['getLicense']()[_0xb5dd('0x31')](function(_0xf9ec03){if(_0xf9ec03){if(_0xf9ec03['voice']){if(_0xf9ec03[_0xb5dd('0x56')]&&_0xf9ec03[_0xb5dd('0x56')]>0x0){logger[_0xb5dd('0x17')](util['format']('[LICENSE]\x20CHANNELS:\x20%s',_0xf9ec03[_0xb5dd('0x56')]));_0xbf8b31=_0xf9ec03[_0xb5dd('0x56')];}else{logger[_0xb5dd('0x17')](_0xb5dd('0x57'));}}else{logger['info'](_0xb5dd('0x58'));_0xbf8b31=-0x1;}}})[_0xb5dd('0x32')](function(_0x11c856){logger['error']('[LICENSE]',_0x11c856[_0xb5dd('0xe')]);})[_0xb5dd('0x50')](function(){var _0x230a94=require(_0xb5dd('0x59'))(config[_0xb5dd('0x9')][_0xb5dd('0x10')],config[_0xb5dd('0x9')]['ip'],_0xbf8b31);_0x230a94['on']('error',errorHandler);_0x230a94['on'](_0xb5dd('0x5a'),listeningHandler);_0x230a94['on'](_0xb5dd('0x5b'),connectionHandler);_0x230a94['on'](_0xb5dd('0x3b'),closeHandler);});}main();
\ No newline at end of file
+var _0xf812=['inspect','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','timeout','sync','production','start','joinAt','YYYY-MM-DD\x20HH:mm:ss','callerid','traverseBFS','clear','vertex','agicommand','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','debug','isUndefined','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toString','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','continueAt','close','Project\x20%s\x20not\x20published','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','xml2json','syncho','../../config/logger','agi','../../config/license/util','./rpc','./graph','defaults','127.0.0.1','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','message','format','[%s]\x20%s','error','stack','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','dnid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','isArray','length','source','target','value','getSquareProject','catch','createSquareReport','then','indexOf','agi_','substring'];(function(_0x34c4df,_0x421e5b){var _0x17a9cc=function(_0x269153){while(--_0x269153){_0x34c4df['push'](_0x34c4df['shift']());}};_0x17a9cc(++_0x421e5b);}(_0xf812,0x139));var _0x2f81=function(_0x363dbc,_0x3a4dcb){_0x363dbc=_0x363dbc-0x0;var _0x53c1c0=_0xf812[_0x363dbc];return _0x53c1c0;};'use strict';var parser=require(_0x2f81('0x0'));var _=require('lodash');var syncho=require(_0x2f81('0x1'));var util=require('util');var moment=require('moment');var config=require('../../config/environment');var logger=require(_0x2f81('0x2'))(_0x2f81('0x3'));var utilLicense=require(_0x2f81('0x4'));var rpc=require(_0x2f81('0x5'));var mailRpc=require('./mailRpc');var Graph=require(_0x2f81('0x6'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0x2f81('0x7')](config[_0x2f81('0x3')],{'ip':_0x2f81('0x8'),'port':0x11dd});function connectionHandler(_0x519ee5){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x519ee5);agiHandler(_0x519ee5);}catch(_0x3a8afa){logger['error'](_0x3a8afa['stack']);}});});}function listeningHandler(){console[_0x2f81('0x9')](_0x2f81('0xa'),config[_0x2f81('0x3')]['port']);logger[_0x2f81('0xb')](util['format'](_0x2f81('0xc'),config[_0x2f81('0x3')]['ip'],config[_0x2f81('0x3')][_0x2f81('0xd')]));}function errorHandler(_0x52fb35){if(_0x52fb35&&_0x52fb35['name']&&_0x52fb35[_0x2f81('0xe')]){logger['error'](util[_0x2f81('0xf')](_0x2f81('0x10'),_0x52fb35['name'],_0x52fb35['message']));}else{logger[_0x2f81('0x11')](util[_0x2f81('0xf')]('[ERROR]\x20%s',_0x52fb35[_0x2f81('0x12')]));}}function closeHandler(){logger[_0x2f81('0xb')](util[_0x2f81('0xf')](_0x2f81('0x13'),this[_0x2f81('0x14')],this[_0x2f81('0x15')],this['callerid'],this[_0x2f81('0x16')],this[_0x2f81('0x17')]));try{createSquareReport(this);}catch(_0x1f57ab){logger[_0x2f81('0x11')](_0x1f57ab['stack']);}}function timeoutHandler(){logger[_0x2f81('0xb')](util[_0x2f81('0xf')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x2f81('0x14')],this[_0x2f81('0x15')],this['callerid'],this[_0x2f81('0x16')],this[_0x2f81('0x17')]));}function hangupHandler(){logger['info'](util[_0x2f81('0xf')](_0x2f81('0x18'),this[_0x2f81('0x14')],this['calleridname'],this['callerid'],this[_0x2f81('0x16')],this['uniqueid']));this[_0x2f81('0x19')]=!![];}function getRoot(_0x47fa9f){return parser[_0x2f81('0x1a')](_0x47fa9f,{'object':!![]})[_0x2f81('0x1b')][_0x2f81('0x1c')];}function addVertex(_0xa7eb6b,_0x232825,_0x4144f0){_0x232825['agicommand']=_0x4144f0;if(_0x232825[_0x2f81('0x1d')](_0x2f81('0x1e'))){_0x232825[_0x2f81('0x1f')]=parseInt(_0x232825[_0x2f81('0x1e')],0xa);}_0xa7eb6b[_0x2f81('0x20')](_[_0x2f81('0x21')](_0x232825,_0x2f81('0x22')));}function initGraph(_0x29d654,_0x5ec644){var _0x2218e2=new Graph();for(var _0x547ba5 in _0x29d654){if(_0x29d654[_0x2f81('0x1d')](_0x547ba5)){if(_[_0x2f81('0x23')](_0x29d654[_0x547ba5])){for(var _0x226723=0x0;_0x226723<_0x29d654[_0x547ba5][_0x2f81('0x24')];_0x226723+=0x1){addVertex(_0x2218e2,_0x29d654[_0x547ba5][_0x226723],_0x547ba5);}}else{addVertex(_0x2218e2,_0x29d654[_0x547ba5],_0x547ba5);}}}for(var _0xb1487=0x0;_0xb1487<_0x5ec644[_0x2f81('0x24')];_0xb1487+=0x1){if(_0x5ec644[_0xb1487][_0x2f81('0x25')]&&_0x5ec644[_0xb1487][_0x2f81('0x26')]){_0x2218e2['addEdge'](_0x5ec644[_0xb1487][_0x2f81('0x25')],_0x5ec644[_0xb1487]['target'],_0x5ec644[_0xb1487][_0x2f81('0x27')]);}}return _0x2218e2;}function getSquareProject(_0xe028ba,_0x269938){rpc[_0x2f81('0x28')](_0xe028ba)['then'](function(_0x359a24){_0x269938(null,_0x359a24);})[_0x2f81('0x29')](function(_0x47f9d8){_0x269938(null,_0x47f9d8);});}function createSquareReport(_0x514e4c,_0x45f4f9){rpc[_0x2f81('0x2a')](_0x514e4c)[_0x2f81('0x2b')](function(_0x351b3a){if(_0x45f4f9){_0x45f4f9(null,_0x351b3a);}})['catch'](function(_0x62dcc0){if(_0x45f4f9){_0x45f4f9(null,_0x62dcc0);}});}function setChannelVariables(_0x5b356c){for(var _0xbbfd28 in _0x5b356c){if(_0x5b356c[_0x2f81('0x1d')](_0xbbfd28)){if(_0xbbfd28[_0x2f81('0x2c')](_0x2f81('0x2d'))===0x0){_0x5b356c[_0xbbfd28[_0x2f81('0x2e')](0x4)]=_0x5b356c[_0xbbfd28];delete _0x5b356c[_0xbbfd28];}}}}function getLogFromObject(_0x589a78){return util[_0x2f81('0x2f')](_0x589a78,{'showHidden':![],'depth':null});}function agiHandler(_0x42fdfe){var _0x59e161,_0x2eff0e,_0x1e8f41,_0x2a7965,_0x1dd905;logger['debug'](_0x2f81('0x30'),JSON[_0x2f81('0x31')](_0x42fdfe,null,0x2));logger[_0x2f81('0xb')](util[_0x2f81('0xf')](_0x2f81('0x32'),_0x42fdfe[_0x2f81('0x14')],_0x42fdfe[_0x2f81('0x15')],_0x42fdfe['callerid'],_0x42fdfe[_0x2f81('0x16')],_0x42fdfe['uniqueid']));_0x42fdfe['on']('error',errorHandler);_0x42fdfe['on']('close',closeHandler);_0x42fdfe['on'](_0x2f81('0x33'),timeoutHandler);_0x42fdfe[_0x2f81('0x19')]=![];_0x42fdfe['on']('hangup',hangupHandler);var _0x5bb7bc=getSquareProject[_0x2f81('0x34')](null,_0x42fdfe[_0x2f81('0x14')]);if(_0x5bb7bc){if(_0x5bb7bc[_0x2f81('0x35')]){_0x59e161=getRoot(_0x5bb7bc[_0x2f81('0x35')]);if(_0x59e161&&_0x59e161[_0x2f81('0x36')]){logger['debug'](_0x2f81('0x1c'),JSON[_0x2f81('0x31')](_0x59e161,null,0x2));_0x42fdfe[_0x2f81('0x37')]=moment()['format'](_0x2f81('0x38'));_0x2eff0e=initGraph(_['omit'](_0x59e161,_0x2f81('0x22')),_0x59e161[_0x2f81('0x22')]);_0x1e8f41=new Vertices(_0x42fdfe,rpc,mailRpc);logger['info'](util[_0x2f81('0xf')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x42fdfe[_0x2f81('0x14')],_0x42fdfe[_0x2f81('0x15')],_0x42fdfe[_0x2f81('0x39')],_0x42fdfe['dnid'],_0x42fdfe[_0x2f81('0x17')]));_0x2eff0e[_0x2f81('0x3a')](_0x59e161[_0x2f81('0x36')]['id'],function(_0x71ffc0){try{_0x71ffc0=_0x1e8f41[_0x2f81('0x3b')](_0x71ffc0);logger['debug'](_0x2f81('0x3c'),JSON[_0x2f81('0x31')](_0x71ffc0,null,0x2));if(_0x71ffc0[_0x2f81('0x3d')]===_0x2f81('0x3e')){logger[_0x2f81('0xb')](_0x2f81('0x3f'));_0x42fdfe[_0x2f81('0x40')]=_0x71ffc0[_0x2f81('0x40')]||_0x42fdfe[_0x2f81('0x40')];_0x42fdfe[_0x2f81('0x41')]=_0x71ffc0[_0x2f81('0x41')];_0x42fdfe[_0x2f81('0x42')]=_0x71ffc0[_0x2f81('0x42')]?_0x71ffc0['priority']-0x1:0x1;return null;}else if(_0x71ffc0&&_0x1e8f41[_0x71ffc0['agicommand']]){_0x1dd905=_0x1e8f41[_0x71ffc0[_0x2f81('0x3d')]](_0x71ffc0);logger[_0x2f81('0xb')](_0x2f81('0x43'),JSON[_0x2f81('0x31')](_0x1dd905,null,0x2));if(_0x1dd905&&_0x1dd905[_0x2f81('0x44')]===AGI_CODE_SUCCESS&&_0x1dd905[_0x2f81('0x45')]!==AGI_RESULT_ERROR&&!_0x42fdfe[_0x2f81('0x19')]){logger[_0x2f81('0x46')](_0x2f81('0x43'),getLogFromObject(_0x1dd905));return _[_0x2f81('0x47')](_0x1dd905[_0x2f81('0x45')])?null:_0x1dd905[_0x2f81('0x45')]['toString']();}else{logger[_0x2f81('0x11')](_0x2f81('0x43'),getLogFromObject(_0x1dd905));return null;}}else{logger[_0x2f81('0x11')](_0x2f81('0x48'));return null;}}catch(_0x2baa3f){logger[_0x2f81('0x11')](_0x2baa3f[_0x2f81('0x12')]);return null;}});if(_0x59e161[_0x2f81('0x49')]){logger[_0x2f81('0xb')](util[_0x2f81('0xf')](_0x2f81('0x4a'),_0x42fdfe[_0x2f81('0x14')],_0x42fdfe['calleridname'],_0x42fdfe[_0x2f81('0x39')],_0x42fdfe[_0x2f81('0x16')],_0x42fdfe[_0x2f81('0x17')]));_0x2eff0e[_0x2f81('0x3a')](_0x59e161[_0x2f81('0x49')]['id'],function(_0x122c62){try{_0x122c62=_0x1e8f41[_0x2f81('0x3b')](_0x122c62);logger[_0x2f81('0x46')]('vertex',JSON[_0x2f81('0x31')](_0x122c62,null,0x2));if(_0x122c62&&_0x1e8f41[_0x122c62['agicommand']]){_0x1dd905=_0x1e8f41[_0x122c62[_0x2f81('0x3d')]](_0x122c62);if(_0x1dd905){logger[_0x2f81('0x46')](_0x2f81('0x43'),getLogFromObject(_0x1dd905));return _[_0x2f81('0x47')](_0x1dd905[_0x2f81('0x45')])?null:_0x1dd905[_0x2f81('0x45')][_0x2f81('0x4b')]();}else{logger['error'](_0x2f81('0x43'),getLogFromObject(_0x1dd905));return null;}}else{logger['error'](_0x2f81('0x48'));return null;}}catch(_0x37eed2){logger[_0x2f81('0x11')](_0x37eed2[_0x2f81('0x12')]);return null;}});}logger[_0x2f81('0xb')](util[_0x2f81('0xf')](_0x2f81('0x4c'),_0x42fdfe[_0x2f81('0x14')],_0x42fdfe[_0x2f81('0x15')],_0x42fdfe[_0x2f81('0x39')],_0x42fdfe[_0x2f81('0x16')],_0x42fdfe['uniqueid']));logger[_0x2f81('0xb')](util[_0x2f81('0xf')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x42fdfe[_0x2f81('0x40')],_0x42fdfe[_0x2f81('0x41')],parseInt(_0x42fdfe['priority'],0xa)+0x1));_0x42fdfe[_0x2f81('0x4d')](_0x42fdfe[_0x2f81('0x40')],_0x42fdfe[_0x2f81('0x41')],parseInt(_0x42fdfe[_0x2f81('0x42')],0xa)+0x1);_0x42fdfe[_0x2f81('0x4e')]();}}else{logger[_0x2f81('0x11')](util[_0x2f81('0xf')](_0x2f81('0x4f'),_0x42fdfe[_0x2f81('0x14')]));_0x42fdfe[_0x2f81('0x4d')](_0x42fdfe[_0x2f81('0x40')],_0x42fdfe[_0x2f81('0x41')],parseInt(_0x42fdfe[_0x2f81('0x42')],0xa)+0x1);_0x42fdfe['close']();}}else{logger[_0x2f81('0x11')](util[_0x2f81('0xf')]('Project\x20%s\x20not\x20found',_0x42fdfe[_0x2f81('0x14')]));_0x42fdfe[_0x2f81('0x4d')](_0x42fdfe['context'],_0x42fdfe[_0x2f81('0x41')],parseInt(_0x42fdfe[_0x2f81('0x42')],0xa)+0x1);_0x42fdfe[_0x2f81('0x4e')]();}}function main(){var _0x2ae570;return utilLicense[_0x2f81('0x50')]()['then'](function(_0x2a4f7e){if(_0x2a4f7e){if(_0x2a4f7e[_0x2f81('0x51')]){if(_0x2a4f7e[_0x2f81('0x52')]&&_0x2a4f7e[_0x2f81('0x52')]>0x0){logger['info'](util[_0x2f81('0xf')](_0x2f81('0x53'),_0x2a4f7e['callysquare']));_0x2ae570=_0x2a4f7e['callysquare'];}else{logger['info'](_0x2f81('0x54'));}}else{logger[_0x2f81('0xb')](_0x2f81('0x55'));_0x2ae570=-0x1;}}})[_0x2f81('0x29')](function(_0x41bdd1){logger[_0x2f81('0x11')](_0x2f81('0x56'),_0x41bdd1[_0x2f81('0x12')]);})['finally'](function(){var _0x4c81c2=require(_0x2f81('0x57'))(config[_0x2f81('0x3')][_0x2f81('0xd')],config[_0x2f81('0x3')]['ip'],_0x2ae570);_0x4c81c2['on'](_0x2f81('0x11'),errorHandler);_0x4c81c2['on'](_0x2f81('0x58'),listeningHandler);_0x4c81c2['on'](_0x2f81('0x59'),connectionHandler);_0x4c81c2['on'](_0x2f81('0x4e'),closeHandler);});}main();
\ No newline at end of file
index 0fb82ce..15b1255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63a3=['result','catch','bluebird','jayson/promise','http','request','then','error','message'];(function(_0x4bc4ab,_0x2c1bad){var _0x368014=function(_0x179c12){while(--_0x179c12){_0x4bc4ab['push'](_0x4bc4ab['shift']());}};_0x368014(++_0x2c1bad);}(_0x63a3,0x1a0));var _0x363a=function(_0x454165,_0x1f3e74){_0x454165=_0x454165-0x0;var _0x56db53=_0x63a3[_0x454165];return _0x56db53;};'use strict';var BPromise=require(_0x363a('0x0'));var jayson=require(_0x363a('0x1'));var client=jayson['client'][_0x363a('0x2')]({'port':0x232b});function request(_0x2ae8a9,_0x164895){return new BPromise(function(_0x51b369,_0x2d898c){return client[_0x363a('0x3')](_0x2ae8a9,_0x164895)[_0x363a('0x4')](function(_0x3f068a){if(_0x3f068a[_0x363a('0x5')]){return _0x2d898c(_0x3f068a[_0x363a('0x5')][_0x363a('0x6')]);}else{return _0x51b369(_0x3f068a[_0x363a('0x7')]);}})[_0x363a('0x8')](function(_0x1c82c4){return _0x2d898c(_0x1c82c4);});});}exports['sendMailMessage']=function(_0x26067c,_0x295732){return request('SendMail',{'account':_0x26067c,'message':_0x295732});};
\ No newline at end of file
+var _0xdbfe=['message','result','catch','sendMailMessage','bluebird','jayson/promise','client','http','request','then','error'];(function(_0x84bf97,_0x45682c){var _0x9ebc06=function(_0x19bfde){while(--_0x19bfde){_0x84bf97['push'](_0x84bf97['shift']());}};_0x9ebc06(++_0x45682c);}(_0xdbfe,0x164));var _0xedbf=function(_0x20fff2,_0x2b2b57){_0x20fff2=_0x20fff2-0x0;var _0xfc1ce1=_0xdbfe[_0x20fff2];return _0xfc1ce1;};'use strict';var BPromise=require(_0xedbf('0x0'));var jayson=require(_0xedbf('0x1'));var client=jayson[_0xedbf('0x2')][_0xedbf('0x3')]({'port':0x232b});function request(_0x3169d6,_0x38aba4){return new BPromise(function(_0x58dbab,_0x3bc290){return client[_0xedbf('0x4')](_0x3169d6,_0x38aba4)[_0xedbf('0x5')](function(_0x2e4f03){if(_0x2e4f03[_0xedbf('0x6')]){return _0x3bc290(_0x2e4f03[_0xedbf('0x6')][_0xedbf('0x7')]);}else{return _0x58dbab(_0x2e4f03[_0xedbf('0x8')]);}})[_0xedbf('0x9')](function(_0x174918){return _0x3bc290(_0x174918);});});}exports[_0xedbf('0xa')]=function(_0x25d1fa,_0x1e0a18){return request('SendMail',{'account':_0x25d1fa,'message':_0x1e0a18});};
\ No newline at end of file
index f4c3884..249dd96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b40=['split','slice','trim','length','emit','headers','stream','call','_localBuffer','_inBody','_transform','\x0d\x0a\x0d\x0a','toString','indexOf','substring'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9b40,0xf6));var _0x09b4=function(_0x1d834f,_0x174bbf){_0x1d834f=_0x1d834f-0x0;var _0x594ae9=_0x9b40[_0x1d834f];return _0x594ae9;};'use strict';var util=require('util');var Transform=require(_0x09b4('0x0'))['Transform'];function AGIReply(_0x259436){Transform[_0x09b4('0x1')](this,_0x259436);this[_0x09b4('0x2')]='';this[_0x09b4('0x3')]=![];}util['inherits'](AGIReply,Transform);AGIReply['prototype'][_0x09b4('0x4')]=function(_0x555c6d,_0x4d76a8,_0x20e14b){var _0x535359='\x0a',_0x15422d=['\x0a\x0a',_0x09b4('0x5')],_0x4b3ae0=-0x1,_0x518411=-0x1,_0x1a78ef='',_0x288612=0x0,_0x257be2='',_0x2c4a33='';this[_0x09b4('0x2')]+=_0x555c6d[_0x09b4('0x6')]();_0x257be2=this[_0x09b4('0x2')];if(!this[_0x09b4('0x3')]){_0x288612=0x0;while(_0x15422d[_0x288612]){while((_0x518411=_0x257be2[_0x09b4('0x7')](_0x15422d[_0x288612]))!=-0x1){_0x1a78ef=_0x15422d[_0x288612];_0x2c4a33=_0x257be2[_0x09b4('0x8')](0x0,_0x518411);_0x257be2=_0x257be2['substring'](_0x518411+_0x1a78ef['length']);var _0x198cd5=_0x2c4a33[_0x09b4('0x9')](_0x535359),_0x34d42b=0x0,_0x2d4a32={},_0x4561f6='',_0x1ac28f='',_0x29961b=-0x1;while(_0x198cd5[_0x34d42b]){_0x29961b=_0x198cd5[_0x34d42b][_0x09b4('0x7')](':');if(_0x29961b!=-0x1){_0x4561f6=_0x198cd5[_0x34d42b][_0x09b4('0xa')](0x0,_0x29961b)[_0x09b4('0xb')]();_0x1ac28f=_0x198cd5[_0x34d42b][_0x09b4('0xa')](_0x29961b+0x1)[_0x09b4('0xb')]();if(_0x4561f6[_0x09b4('0xc')]>0x0){_0x2d4a32[_0x4561f6]=_0x1ac28f;}}else{}_0x34d42b++;}this[_0x09b4('0xd')](_0x09b4('0xe'),_0x2d4a32);this['_inBody']=!![];}_0x288612++;}this[_0x09b4('0x2')]=_0x257be2;}else{while((_0x4b3ae0=_0x257be2[_0x09b4('0x7')](_0x535359))!=-0x1){_0x2c4a33=_0x257be2[_0x09b4('0x8')](0x0,_0x4b3ae0);this[_0x09b4('0xd')]('line',_0x2c4a33);_0x257be2=_0x257be2['substring'](_0x4b3ae0+_0x535359['length']);}this[_0x09b4('0x2')]=_0x257be2;}_0x20e14b();};module['exports']=AGIReply;
\ No newline at end of file
+var _0x6127=['util','stream','Transform','call','_localBuffer','_inBody','_transform','\x0d\x0a\x0d\x0a','toString','indexOf','substring','length','slice','trim','emit','headers','line'];(function(_0x557439,_0x8057cf){var _0x3f38fd=function(_0xd3a6ed){while(--_0xd3a6ed){_0x557439['push'](_0x557439['shift']());}};_0x3f38fd(++_0x8057cf);}(_0x6127,0x165));var _0x7612=function(_0x58adb2,_0xb66883){_0x58adb2=_0x58adb2-0x0;var _0x49564c=_0x6127[_0x58adb2];return _0x49564c;};'use strict';var util=require(_0x7612('0x0'));var Transform=require(_0x7612('0x1'))[_0x7612('0x2')];function AGIReply(_0x127bb6){Transform[_0x7612('0x3')](this,_0x127bb6);this[_0x7612('0x4')]='';this[_0x7612('0x5')]=![];}util['inherits'](AGIReply,Transform);AGIReply['prototype'][_0x7612('0x6')]=function(_0x1b12fc,_0x33c4df,_0x25e573){var _0x3c8d5f='\x0a',_0x553b48=['\x0a\x0a',_0x7612('0x7')],_0x2dc201=-0x1,_0x195aaf=-0x1,_0x36e432='',_0x332592=0x0,_0x3a703e='',_0x3698d1='';this[_0x7612('0x4')]+=_0x1b12fc[_0x7612('0x8')]();_0x3a703e=this[_0x7612('0x4')];if(!this[_0x7612('0x5')]){_0x332592=0x0;while(_0x553b48[_0x332592]){while((_0x195aaf=_0x3a703e[_0x7612('0x9')](_0x553b48[_0x332592]))!=-0x1){_0x36e432=_0x553b48[_0x332592];_0x3698d1=_0x3a703e[_0x7612('0xa')](0x0,_0x195aaf);_0x3a703e=_0x3a703e[_0x7612('0xa')](_0x195aaf+_0x36e432[_0x7612('0xb')]);var _0x1b15bb=_0x3698d1['split'](_0x3c8d5f),_0x10dee7=0x0,_0x37a481={},_0x5d4d47='',_0x14baee='',_0x57bab6=-0x1;while(_0x1b15bb[_0x10dee7]){_0x57bab6=_0x1b15bb[_0x10dee7][_0x7612('0x9')](':');if(_0x57bab6!=-0x1){_0x5d4d47=_0x1b15bb[_0x10dee7][_0x7612('0xc')](0x0,_0x57bab6)[_0x7612('0xd')]();_0x14baee=_0x1b15bb[_0x10dee7][_0x7612('0xc')](_0x57bab6+0x1)[_0x7612('0xd')]();if(_0x5d4d47[_0x7612('0xb')]>0x0){_0x37a481[_0x5d4d47]=_0x14baee;}}else{}_0x10dee7++;}this[_0x7612('0xe')](_0x7612('0xf'),_0x37a481);this[_0x7612('0x5')]=!![];}_0x332592++;}this['_localBuffer']=_0x3a703e;}else{while((_0x2dc201=_0x3a703e[_0x7612('0x9')](_0x3c8d5f))!=-0x1){_0x3698d1=_0x3a703e[_0x7612('0xa')](0x0,_0x2dc201);this[_0x7612('0xe')](_0x7612('0x10'),_0x3698d1);_0x3a703e=_0x3a703e[_0x7612('0xa')](_0x2dc201+_0x3c8d5f['length']);}this[_0x7612('0x4')]=_0x3a703e;}_0x25e573();};module['exports']=AGIReply;
\ No newline at end of file
index fceb90b..6939e9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38e7=['client','http','request','then','error','message','result','catch','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','getVoiceQueueById','ShowVoiceQueue','name','getVariableById','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','getTrunkById','ShowTrunk','ShowSound','save_name','ShowInterval','Intervals','getSmsAccountById','ShowSmsAccount','CreateSmsMessage','createSquareDetailsReport','CreateSquareReport','merge','arg_2','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','getPauseById','agentLogin','LoginUser','agentUnpause','UnpauseUser','bluebird','moment','lodash','util','jayson/promise'];(function(_0x5f2caf,_0x23a3dd){var _0x29ed10=function(_0x2fe9c2){while(--_0x2fe9c2){_0x5f2caf['push'](_0x5f2caf['shift']());}};_0x29ed10(++_0x23a3dd);}(_0x38e7,0x97));var _0x738e=function(_0x7ad123,_0xeeeef3){_0x7ad123=_0x7ad123-0x0;var _0x37d073=_0x38e7[_0x7ad123];return _0x37d073;};'use strict';var BPromise=require(_0x738e('0x0'));var moment=require(_0x738e('0x1'));var _=require(_0x738e('0x2'));var util=require(_0x738e('0x3'));var jayson=require(_0x738e('0x4'));var client=jayson[_0x738e('0x5')][_0x738e('0x6')]({'port':0x2329});function request(_0x5b68a0,_0x20582c){return new BPromise(function(_0x1c5c9f,_0x5705c6){return client[_0x738e('0x7')](_0x5b68a0,_0x20582c)[_0x738e('0x8')](function(_0x44d4a3){if(_0x44d4a3[_0x738e('0x9')]){return _0x5705c6(_0x44d4a3[_0x738e('0x9')][_0x738e('0xa')]);}else{return _0x1c5c9f(_0x44d4a3[_0x738e('0xb')]);}})[_0x738e('0xc')](function(_0x5dae94){return _0x5705c6(_0x5dae94);});});}exports[_0x738e('0xd')]=function(_0x57d292){return request(_0x738e('0xe'),{'options':{'raw':![],'where':{'name':_0x57d292},'attributes':['production']}});};exports[_0x738e('0xf')]=function(_0x3dc739){return request(_0x738e('0x10'),{'options':{'raw':![],'where':{'id':_0x3dc739},'include':[{'model':_0x738e('0x11'),'as':_0x738e('0x12')}],'attributes':['id','name','email']}});};exports['getSquareProjectById']=function(_0xd47ce5){return request(_0x738e('0xe'),{'options':{'where':{'id':_0xd47ce5},'attributes':['name']}});};exports[_0x738e('0x13')]=function(_0x1afae0){return request(_0x738e('0x14'),{'options':{'where':{'id':_0x1afae0},'attributes':[_0x738e('0x15')]}});};exports[_0x738e('0x16')]=function(_0x5c932f){return request('ShowVariable',{'options':{'where':{'id':_0x5c932f},'attributes':[_0x738e('0x15')]}});};exports[_0x738e('0x17')]=function(_0x370b99){return request(_0x738e('0x18'),{'options':{'where':{'id':_0x370b99},'attributes':[_0x738e('0x19')]}});};exports[_0x738e('0x1a')]=function(_0x23895f){return request('ShowUser',{'options':{'where':{'id':_0x23895f},'attributes':[_0x738e('0x15')]}});};exports[_0x738e('0x1b')]=function(_0x5bbeb1){return request(_0x738e('0x1c'),{'options':{'where':{'id':_0x5bbeb1},'attributes':[_0x738e('0x15')]}});};exports['getSoundById']=function(_0x3d1495){return request(_0x738e('0x1d'),{'options':{'where':{'id':_0x3d1495},'attributes':[_0x738e('0x1e')]}});};exports['getIntervalById']=function(_0x136395){return request(_0x738e('0x1f'),{'options':{'raw':![],'where':{'id':_0x136395},'include':[{'model':'Interval','as':_0x738e('0x20')}]}});};exports[_0x738e('0x21')]=function(_0x44a761){return request(_0x738e('0x22'),{'options':{'where':{'id':_0x44a761},'attributes':['id',_0x738e('0x15')]}});};exports['createSmsMessage']=function(_0xf8f9f1){return request(_0x738e('0x23'),{'body':_0xf8f9f1});};exports[_0x738e('0x24')]=function(_0x4b981){return request('CreateSquareDetailsReport',{'body':_0x4b981});};exports['createSquareReport']=function(_0x24ed40){return request(_0x738e('0x25'),{'body':_[_0x738e('0x26')](_0x24ed40,{'project_name':_0x24ed40['arg_1'],'prev_project_name':_0x24ed40[_0x738e('0x27')]||'','is_subproject':_0x24ed40[_0x738e('0x27')]?!![]:![],'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x738e('0x28')]=function(_0x5e349e){return request(_0x738e('0x29'),{'body':_0x5e349e});};exports[_0x738e('0x2a')]=function(_0x4cedb2){return request(_0x738e('0x2b'),{'body':_0x4cedb2});};exports[_0x738e('0x2c')]=function(_0x4d783a){return request(_0x738e('0x2d'),{'options':{'raw':![],'where':{'phone':_0x4d783a[_0x738e('0x2e')],'ListId':_0x4d783a['ListId']}}})['then'](function(_0x3c6fac){if(_0x3c6fac){return _0x3c6fac;}return request('CreateCmContact',{'body':_0x4d783a});});};exports[_0x738e('0x2f')]=function(_0x3189ea){return request('ShowPause',{'options':{'where':{'id':_0x3189ea},'attributes':[_0x738e('0x15')]}});};exports[_0x738e('0x30')]=function(_0x2ba101,_0x316a6f){return request(_0x738e('0x31'),{'body':{'interface':_0x316a6f},'options':{'where':_0x2ba101}});};exports['agentPause']=function(_0x18b71b,_0x1e2854,_0x56afd5){return request('PauseUser',{'body':{'type':_0x1e2854,'uniqueid':_0x56afd5},'options':{'where':_0x18b71b}});};exports[_0x738e('0x32')]=function(_0x35e0c3){return request(_0x738e('0x33'),{'body':{},'options':{'where':_0x35e0c3}});};exports['agentLogout']=function(_0x5b2700){return request('LogoutUser',{'body':{},'options':{'where':_0x5b2700}});};
\ No newline at end of file
+var _0x5083=['phone','ListId','CreateCmContact','getPauseById','ShowPause','agentLogin','agentPause','PauseUser','agentUnpause','UnpauseUser','LogoutUser','bluebird','lodash','util','client','http','request','then','error','message','result','ShowSquareProject','production','ShowMailAccount','MailServerOut','Smtp','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','ShowSquareOdbc','dsn','getUserById','ShowUser','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','ShowInterval','Interval','Intervals','ShowSmsAccount','createSmsMessage','CreateSmsMessage','CreateSquareDetailsReport','arg_1','arg_2','format','createSquareRecording','createSquareMessage','CreateSquareMessage','ShowCmHopper'];(function(_0x3f3c07,_0x53c000){var _0x5326bd=function(_0x2f1a5c){while(--_0x2f1a5c){_0x3f3c07['push'](_0x3f3c07['shift']());}};_0x5326bd(++_0x53c000);}(_0x5083,0xb6));var _0x3508=function(_0x5cdb54,_0x22d189){_0x5cdb54=_0x5cdb54-0x0;var _0x533178=_0x5083[_0x5cdb54];return _0x533178;};'use strict';var BPromise=require(_0x3508('0x0'));var moment=require('moment');var _=require(_0x3508('0x1'));var util=require(_0x3508('0x2'));var jayson=require('jayson/promise');var client=jayson[_0x3508('0x3')][_0x3508('0x4')]({'port':0x2329});function request(_0x2b214d,_0x388e48){return new BPromise(function(_0x5389c2,_0x463a0d){return client[_0x3508('0x5')](_0x2b214d,_0x388e48)[_0x3508('0x6')](function(_0xabba14){if(_0xabba14[_0x3508('0x7')]){return _0x463a0d(_0xabba14[_0x3508('0x7')][_0x3508('0x8')]);}else{return _0x5389c2(_0xabba14[_0x3508('0x9')]);}})['catch'](function(_0x591939){return _0x463a0d(_0x591939);});});}exports['getSquareProject']=function(_0x551ce4){return request(_0x3508('0xa'),{'options':{'raw':![],'where':{'name':_0x551ce4},'attributes':[_0x3508('0xb')]}});};exports['getMailAccountById']=function(_0x30ed04){return request(_0x3508('0xc'),{'options':{'raw':![],'where':{'id':_0x30ed04},'include':[{'model':_0x3508('0xd'),'as':_0x3508('0xe')}],'attributes':['id',_0x3508('0xf'),_0x3508('0x10')]}});};exports[_0x3508('0x11')]=function(_0x71ae79){return request(_0x3508('0xa'),{'options':{'where':{'id':_0x71ae79},'attributes':['name']}});};exports[_0x3508('0x12')]=function(_0x85db2){return request(_0x3508('0x13'),{'options':{'where':{'id':_0x85db2},'attributes':[_0x3508('0xf')]}});};exports[_0x3508('0x14')]=function(_0x538811){return request(_0x3508('0x15'),{'options':{'where':{'id':_0x538811},'attributes':[_0x3508('0xf')]}});};exports['getSquareOdbcById']=function(_0x8f0d11){return request(_0x3508('0x16'),{'options':{'where':{'id':_0x8f0d11},'attributes':[_0x3508('0x17')]}});};exports[_0x3508('0x18')]=function(_0x6fd24c){return request(_0x3508('0x19'),{'options':{'where':{'id':_0x6fd24c},'attributes':[_0x3508('0xf')]}});};exports[_0x3508('0x1a')]=function(_0x5d4ec0){return request(_0x3508('0x1b'),{'options':{'where':{'id':_0x5d4ec0},'attributes':[_0x3508('0xf')]}});};exports[_0x3508('0x1c')]=function(_0x3a3154){return request(_0x3508('0x1d'),{'options':{'where':{'id':_0x3a3154},'attributes':[_0x3508('0x1e')]}});};exports[_0x3508('0x1f')]=function(_0x596a31){return request(_0x3508('0x20'),{'options':{'raw':![],'where':{'id':_0x596a31},'include':[{'model':_0x3508('0x21'),'as':_0x3508('0x22')}]}});};exports['getSmsAccountById']=function(_0x297f2b){return request(_0x3508('0x23'),{'options':{'where':{'id':_0x297f2b},'attributes':['id',_0x3508('0xf')]}});};exports[_0x3508('0x24')]=function(_0x105305){return request(_0x3508('0x25'),{'body':_0x105305});};exports['createSquareDetailsReport']=function(_0x3dea9a){return request(_0x3508('0x26'),{'body':_0x3dea9a});};exports['createSquareReport']=function(_0x24cf60){return request('CreateSquareReport',{'body':_['merge'](_0x24cf60,{'project_name':_0x24cf60[_0x3508('0x27')],'prev_project_name':_0x24cf60[_0x3508('0x28')]||'','is_subproject':_0x24cf60[_0x3508('0x28')]?!![]:![],'leaveAt':moment()[_0x3508('0x29')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x3508('0x2a')]=function(_0x39bff2){return request('CreateSquareRecording',{'body':_0x39bff2});};exports[_0x3508('0x2b')]=function(_0x392d48){return request(_0x3508('0x2c'),{'body':_0x392d48});};exports['createCmContact']=function(_0x47b8d9){return request(_0x3508('0x2d'),{'options':{'raw':![],'where':{'phone':_0x47b8d9[_0x3508('0x2e')],'ListId':_0x47b8d9[_0x3508('0x2f')]}}})[_0x3508('0x6')](function(_0x34bab3){if(_0x34bab3){return _0x34bab3;}return request(_0x3508('0x30'),{'body':_0x47b8d9});});};exports[_0x3508('0x31')]=function(_0x447c2c){return request(_0x3508('0x32'),{'options':{'where':{'id':_0x447c2c},'attributes':[_0x3508('0xf')]}});};exports[_0x3508('0x33')]=function(_0x3e7f46,_0x5920fc){return request('LoginUser',{'body':{'interface':_0x5920fc},'options':{'where':_0x3e7f46}});};exports[_0x3508('0x34')]=function(_0x1f992b,_0x2d0113,_0x52c318){return request(_0x3508('0x35'),{'body':{'type':_0x2d0113,'uniqueid':_0x52c318},'options':{'where':_0x1f992b}});};exports[_0x3508('0x36')]=function(_0x2fac0f){return request(_0x3508('0x37'),{'body':{},'options':{'where':_0x2fac0f}});};exports['agentLogout']=function(_0x1fcb60){return request(_0x3508('0x38'),{'body':{},'options':{'where':_0x1fcb60}});};
\ No newline at end of file
index bb8a234..81000c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecb2=['./polly'];(function(_0x58afd5,_0x534a48){var _0x3e503b=function(_0x27ba44){while(--_0x27ba44){_0x58afd5['push'](_0x58afd5['shift']());}};_0x3e503b(++_0x534a48);}(_0xecb2,0xf6));var _0x2ecb=function(_0x21b4c3,_0x514e81){_0x21b4c3=_0x21b4c3-0x0;var _0x297faf=_0xecb2[_0x21b4c3];return _0x297faf;};var polly=require(_0x2ecb('0x0'));var lex=require('./lex');module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xedf2=['./lex','exports'];(function(_0x39caaa,_0x1f37bc){var _0x9b9c7d=function(_0x2da02c){while(--_0x2da02c){_0x39caaa['push'](_0x39caaa['shift']());}};_0x9b9c7d(++_0x1f37bc);}(_0xedf2,0x1ac));var _0x2edf=function(_0x22b18c,_0x29c1ba){_0x22b18c=_0x22b18c-0x0;var _0x59201d=_0xedf2[_0x22b18c];return _0x59201d;};var polly=require('./polly');var lex=require(_0x2edf('0x0'));module[_0x2edf('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
index b7da79c..ba90589 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['./lib/api'];(function(_0x14a802,_0x1e804d){var _0x1b8000=function(_0x216586){while(--_0x216586){_0x14a802['push'](_0x14a802['shift']());}};_0x1b8000(++_0x1e804d);}(_0xb7e7,0x121));var _0x7b7e=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xb7e7[_0x13d07a];return _0x5ee0ee;};'use strict';var lex=require(_0x7b7e('0x0'));module['exports']=function(_0x40e269,_0x518dc6,_0x1b7cc7,_0x54a37f,_0x3f5804,_0x556d68){return lex(_0x40e269,_0x518dc6,_0x1b7cc7,_0x54a37f,_0x3f5804,_0x556d68);};
\ No newline at end of file
+var _0x2dae=['./lib/api'];(function(_0x348184,_0x1526ba){var _0x2dfd4f=function(_0x3999da){while(--_0x3999da){_0x348184['push'](_0x348184['shift']());}};_0x2dfd4f(++_0x1526ba);}(_0x2dae,0xc3));var _0xe2da=function(_0x2706da,_0x3856f5){_0x2706da=_0x2706da-0x0;var _0x3ba87e=_0x2dae[_0x2706da];return _0x3ba87e;};'use strict';var lex=require(_0xe2da('0x0'));module['exports']=function(_0x11ec30,_0x31359d,_0xcd0055,_0x167432,_0x99b46f,_0x481d97){return lex(_0x11ec30,_0x31359d,_0xcd0055,_0x167432,_0x99b46f,_0x481d97);};
\ No newline at end of file
index e2a24ba..e2d79bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x4251f5,_0x4252f0){var _0x210692=function(_0xa3bee0){while(--_0xa3bee0){_0x4251f5['push'](_0x4251f5['shift']());}};_0x210692(++_0x4252f0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa9e0[_0x484e36];return _0xafc85d;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
+var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x49ca08,_0x59a304){var _0x359c63=function(_0x30fc20){while(--_0x30fc20){_0x49ca08['push'](_0x49ca08['shift']());}};_0x359c63(++_0x59a304);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'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 ea121ed..77a94dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb212=['./lib/api','exports'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0xb212,0x1f4));var _0x2b21=function(_0x3bfebf,_0x90c13e){_0x3bfebf=_0x3bfebf-0x0;var _0x5c221e=_0xb212[_0x3bfebf];return _0x5c221e;};'use strict';var polly=require(_0x2b21('0x0'));module[_0x2b21('0x1')]=function(_0x1d7cea,_0x4455b7,_0x3c0f56,_0xe1808,_0x34e70f,_0x2f6ef1,_0x2ec931){return polly(_0x1d7cea,_0x4455b7,_0x3c0f56,_0xe1808,_0x34e70f,_0x2f6ef1,_0x2ec931);};
\ No newline at end of file
+var _0xe696=['./lib/api'];(function(_0x4991c9,_0xb94b1b){var _0x2032b7=function(_0x47d3ae){while(--_0x47d3ae){_0x4991c9['push'](_0x4991c9['shift']());}};_0x2032b7(++_0xb94b1b);}(_0xe696,0xd6));var _0x6e69=function(_0x30e0d2,_0x1db034){_0x30e0d2=_0x30e0d2-0x0;var _0x29de7d=_0xe696[_0x30e0d2];return _0x29de7d;};'use strict';var polly=require(_0x6e69('0x0'));module['exports']=function(_0x1f2b8c,_0x385431,_0x85987a,_0x53cfb4,_0xc34afc,_0x53b65a,_0x19ed0a){return polly(_0x1f2b8c,_0x385431,_0x85987a,_0x53cfb4,_0xc34afc,_0x53b65a,_0x19ed0a);};
\ No newline at end of file
index 7081f69..2d7175b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x785a=['synthesizeSpeech','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','mp3','path','bluebird','randomstring','aws-sdk'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0x785a,0x1ca));var _0xa785=function(_0x1f9ec0,_0x13598c){_0x1f9ec0=_0x1f9ec0-0x0;var _0x2a26aa=_0x785a[_0x1f9ec0];return _0x2a26aa;};'use strict';var fs=require('fs');var path=require(_0xa785('0x0'));var BPromise=require(_0xa785('0x1'));var rs=require(_0xa785('0x2'));var AWS=require(_0xa785('0x3'));function pollyResult(_0x4cddfb,_0x4991ad,_0x2447cb){return new BPromise(function(_0x348420,_0x317e0f){_0x4cddfb[_0xa785('0x4')](_0x4991ad,function(_0x3228f3,_0x42c674){if(_0x3228f3){_0x317e0f(_0x3228f3);}else if(_0x42c674){if(_0x42c674[_0xa785('0x5')]instanceof Buffer){fs['writeFile'](_0x2447cb,_0x42c674[_0xa785('0x5')],function(_0x5d0a03){if(_0x5d0a03){_0x317e0f(_0x5d0a03);}else{_0x348420();}});}else{_0x317e0f(new Error(_0xa785('0x6')));}}else{_0x317e0f(new Error(_0xa785('0x7')));}});});}module[_0xa785('0x8')]=function(_0x40acfd,_0x43725a,_0x9dff78,_0xdab4a0,_0x19d70a,_0x2b33fa,_0x14c334){var _0x76c7b2=new AWS[(_0xa785('0x9'))]({'accessKeyId':_0x40acfd,'secretAccessKey':_0x43725a,'region':_0x9dff78});var _0x1e5df6={'Text':_0x19d70a,'TextType':_0x2b33fa||'text','OutputFormat':_0xa785('0xa'),'VoiceId':_0xdab4a0};return pollyResult(_0x76c7b2,_0x1e5df6,_0x14c334);};
\ No newline at end of file
+var _0x88c5=['exports','Polly','text','path','bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!'];(function(_0xb8f400,_0x5e5b18){var _0x1b3bf3=function(_0x2743d2){while(--_0x2743d2){_0xb8f400['push'](_0xb8f400['shift']());}};_0x1b3bf3(++_0x5e5b18);}(_0x88c5,0x10b));var _0x588c=function(_0x211087,_0x354fdd){_0x211087=_0x211087-0x0;var _0x2a581f=_0x88c5[_0x211087];return _0x2a581f;};'use strict';var fs=require('fs');var path=require(_0x588c('0x0'));var BPromise=require(_0x588c('0x1'));var rs=require(_0x588c('0x2'));var AWS=require(_0x588c('0x3'));function pollyResult(_0x47deca,_0x4a98f4,_0x26b9f9){return new BPromise(function(_0x571868,_0x544730){_0x47deca[_0x588c('0x4')](_0x4a98f4,function(_0x2668d5,_0x35afa4){if(_0x2668d5){_0x544730(_0x2668d5);}else if(_0x35afa4){if(_0x35afa4[_0x588c('0x5')]instanceof Buffer){fs[_0x588c('0x6')](_0x26b9f9,_0x35afa4['AudioStream'],function(_0xac624){if(_0xac624){_0x544730(_0xac624);}else{_0x571868();}});}else{_0x544730(new Error(_0x588c('0x7')));}}else{_0x544730(new Error(_0x588c('0x8')));}});});}module[_0x588c('0x9')]=function(_0x27eacc,_0x11af80,_0x115b74,_0x4ba88e,_0x21fb20,_0x230945,_0x36ee6e){var _0x2dcd76=new AWS[(_0x588c('0xa'))]({'accessKeyId':_0x27eacc,'secretAccessKey':_0x11af80,'region':_0x115b74});var _0x150c38={'Text':_0x21fb20,'TextType':_0x230945||_0x588c('0xb'),'OutputFormat':'mp3','VoiceId':_0x4ba88e};return pollyResult(_0x2dcd76,_0x150c38,_0x36ee6e);};
\ No newline at end of file
index acef8fa..940300e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9ff=['exports'];(function(_0x327550,_0x4aa662){var _0x4e554c=function(_0x3d1387){while(--_0x3d1387){_0x327550['push'](_0x327550['shift']());}};_0x4e554c(++_0x4aa662);}(_0xf9ff,0x15a));var _0xff9f=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0xf9ff[_0x18ab2a];return _0x16dcee;};'use strict';var asr=require('./lib/api');module[_0xff9f('0x0')]=function(_0x18665e,_0xb327bc,_0x93d9d,_0x546ac5){return asr(_0x18665e,_0xb327bc,_0x93d9d);};
\ No newline at end of file
+var _0x034b=['./lib/api','exports'];(function(_0x1ae8af,_0x5e426f){var _0x338a66=function(_0x5a0cff){while(--_0x5a0cff){_0x1ae8af['push'](_0x1ae8af['shift']());}};_0x338a66(++_0x5e426f);}(_0x034b,0x19c));var _0xb034=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x034b[_0xa464c9];return _0x3d73c4;};'use strict';var asr=require(_0xb034('0x0'));module[_0xb034('0x1')]=function(_0x1d4fef,_0x30c02a,_0x45b022,_0x5b3a7e){return asr(_0x1d4fef,_0x30c02a,_0x45b022);};
\ No newline at end of file
index 7989fd8..dc444bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87ae=['toString','POST','/v1/speech:recognize?key=','LINEAR16','8000','https://speech.googleapis.com','string','length','key\x20should\x20be\x20a\x20string','readFileSync'];(function(_0xb74004,_0x461b4e){var _0x2f6741=function(_0xa54b8b){while(--_0xa54b8b){_0xb74004['push'](_0xb74004['shift']());}};_0x2f6741(++_0x461b4e);}(_0x87ae,0xf5));var _0xe87a=function(_0x1e1965,_0x55785c){_0x1e1965=_0x1e1965-0x0;var _0x1a2e96=_0x87ae[_0x1e1965];return _0x1a2e96;};'use strict';var url=require('url');var BPromise=require('bluebird');var fs=require('fs');var host=_0xe87a('0x0');module['exports']=function(_0x4ab66a,_0x2241d2,_0x44fc79){return new BPromise(function(_0x404a0a,_0x5a55b8){var _0x28899c;if(typeof _0x4ab66a!==_0xe87a('0x1')||_0x4ab66a[_0xe87a('0x2')]===0x0){return _0x5a55b8('filepath\x20should\x20be\x20a\x20string');}if(typeof _0x2241d2!=='string'||_0x2241d2[_0xe87a('0x2')]===0x0){return _0x5a55b8(_0xe87a('0x3'));}if(typeof _0x44fc79!=='undefined'&&(typeof _0x44fc79!==_0xe87a('0x1')||_0x44fc79[_0xe87a('0x2')]===0x0)){return _0x5a55b8('lang\x20should\x20be\x20a\x20string');}try{_0x28899c=fs[_0xe87a('0x4')](_0x4ab66a)[_0xe87a('0x5')]('base64');}catch(_0x18cf9d){return _0x5a55b8(_0x18cf9d);}return _0x404a0a({'method':_0xe87a('0x6'),'uri':host+_0xe87a('0x7')+_0x2241d2,'body':{'config':{'encoding':_0xe87a('0x8'),'sampleRateHertz':_0xe87a('0x9'),'languageCode':_0x44fc79},'audio':{'content':_0x28899c}},'json':!![]});});};
\ No newline at end of file
+var _0x1bb2=['LINEAR16','8000','bluebird','https://speech.googleapis.com','exports','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','toString','POST','/v1/speech:recognize?key='];(function(_0x3fe780,_0x26079d){var _0x59c64e=function(_0x3a13a5){while(--_0x3a13a5){_0x3fe780['push'](_0x3fe780['shift']());}};_0x59c64e(++_0x26079d);}(_0x1bb2,0x152));var _0x21bb=function(_0x2d0f83,_0x18a0e2){_0x2d0f83=_0x2d0f83-0x0;var _0x2e071c=_0x1bb2[_0x2d0f83];return _0x2e071c;};'use strict';var url=require('url');var BPromise=require(_0x21bb('0x0'));var fs=require('fs');var host=_0x21bb('0x1');module[_0x21bb('0x2')]=function(_0x480fcb,_0x4e514f,_0x170632){return new BPromise(function(_0x19c345,_0x1c21c6){var _0x469984;if(typeof _0x480fcb!==_0x21bb('0x3')||_0x480fcb[_0x21bb('0x4')]===0x0){return _0x1c21c6(_0x21bb('0x5'));}if(typeof _0x4e514f!==_0x21bb('0x3')||_0x4e514f[_0x21bb('0x4')]===0x0){return _0x1c21c6(_0x21bb('0x6'));}if(typeof _0x170632!==_0x21bb('0x7')&&(typeof _0x170632!==_0x21bb('0x3')||_0x170632['length']===0x0)){return _0x1c21c6(_0x21bb('0x8'));}try{_0x469984=fs['readFileSync'](_0x480fcb)[_0x21bb('0x9')]('base64');}catch(_0x4ab80c){return _0x1c21c6(_0x4ab80c);}return _0x19c345({'method':_0x21bb('0xa'),'uri':host+_0x21bb('0xb')+_0x4e514f,'body':{'config':{'encoding':_0x21bb('0xc'),'sampleRateHertz':_0x21bb('0xd'),'languageCode':_0x170632},'audio':{'content':_0x469984}},'json':!![]});});};
\ No newline at end of file
index 226eccf..93dd2fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8030=['./asr','exports'];(function(_0x535b4a,_0x567c6d){var _0x4cf604=function(_0x17706e){while(--_0x17706e){_0x535b4a['push'](_0x535b4a['shift']());}};_0x4cf604(++_0x567c6d);}(_0x8030,0xc4));var _0x0803=function(_0x356d25,_0x47f04e){_0x356d25=_0x356d25-0x0;var _0x68ba84=_0x8030[_0x356d25];return _0x68ba84;};var asr=require(_0x0803('0x0'));module[_0x0803('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x2754=['exports','./asr'];(function(_0x56d36e,_0x13eb7a){var _0x340859=function(_0x5218b8){while(--_0x5218b8){_0x56d36e['push'](_0x56d36e['shift']());}};_0x340859(++_0x13eb7a);}(_0x2754,0x121));var _0x4275=function(_0x909083,_0x4f84a8){_0x909083=_0x909083-0x0;var _0x5a4a19=_0x2754[_0x909083];return _0x5a4a19;};var asr=require(_0x4275('0x0'));module[_0x4275('0x1')]={'asr':asr};
\ No newline at end of file
index 02c3ad4..f8d6a11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01c0=['audiofile','apiai-promise','https','md5','querystring','request-promise','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','agi','https://api.ispeech.org/api/rest','host','path','get','statusCode','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','finish','info','finish\x20download\x20file','error','unlink','end','https:','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','split','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','text:synthesize','POST','.mp3','from','writeFile','777','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','f.req=','stringify','jQ1olc','generic','parse\x20response\x20failed:\x0a','data','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','goggleTTS\x20path','uri','results','alternatives','transcript','join','map','confidence','googleASR\x20transcription','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','score','status','metadata','endConversation','isFallbackIntent','replace','SessionsClient','sessionPath','queryResult','diagnosticInfo','fields','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','ispeechTTS','format','model=%s','freeform=3','sestekNDA','text','channelData','CustomAction','AudioFromTts','Data'];(function(_0x317725,_0x1bd734){var _0x1e08cb=function(_0x42d51c){while(--_0x42d51c){_0x317725['push'](_0x317725['shift']());}};_0x1e08cb(++_0x1bd734);}(_0x01c0,0x7b));var _0x001c=function(_0x28aea5,_0x3bb12e){_0x28aea5=_0x28aea5-0x0;var _0x6a55f9=_0x01c0[_0x28aea5];return _0x6a55f9;};'use strict';var apiai=require(_0x001c('0x0'));var BPromise=require('bluebird');var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require(_0x001c('0x1'));var md5=require(_0x001c('0x2'));var path=require('path');var querystring=require(_0x001c('0x3'));var rp=require(_0x001c('0x4'));var rs=require('randomstring');var sox=require('sox');var tts=require(_0x001c('0x5'));var urlParse=require(_0x001c('0x6'))[_0x001c('0x7')];var util=require(_0x001c('0x8'));var aws=require(_0x001c('0x9'));var google=require(_0x001c('0xa'));var sestek=require(_0x001c('0xb'));var tilde=require(_0x001c('0xc'));var logger=require('../../../config/logger')(_0x001c('0xd'));var ISPEECH_API=_0x001c('0xe');function downloadFile(_0x2b63fa,_0x2d98be){return new BPromise(function(_0x3e6bd9,_0x4d48ae){var _0x234a5e=urlParse(_0x2b63fa);var _0x6c4756=_0x234a5e['protocol']==='https:'?https:http;var _0x40a733={'host':_0x234a5e[_0x001c('0xf')],'path':_0x234a5e[_0x001c('0x10')],'headers':{'user-agent':'WHAT_EVER'}};_0x6c4756[_0x001c('0x11')](_0x40a733,function(_0x3b6b83){if(_0x3b6b83[_0x001c('0x12')]!==0xc8){logger['error']('request\x20to\x20'+_0x2b63fa+_0x001c('0x13')+_0x3b6b83[_0x001c('0x12')]+'\x20('+_0x3b6b83[_0x001c('0x14')]+')');_0x4d48ae(new Error(_0x001c('0x15')+_0x2b63fa+_0x001c('0x13')+_0x3b6b83[_0x001c('0x12')]+'\x20('+_0x3b6b83[_0x001c('0x14')]+')'));return;}var _0x542765=fs['createWriteStream'](_0x2d98be);_0x542765['on'](_0x001c('0x16'),function(){logger[_0x001c('0x17')](_0x001c('0x18'));_0x542765['close'](_0x3e6bd9);});_0x542765['on'](_0x001c('0x19'),function(_0x2c3692){fs[_0x001c('0x1a')](_0x2d98be);logger[_0x001c('0x19')]('download\x20error',_0x2c3692);_0x4d48ae(_0x2c3692);});_0x3b6b83['pipe'](_0x542765);})['on']('error',function(_0xb4e72c){logger[_0x001c('0x19')](_0xb4e72c);_0x4d48ae(_0xb4e72c);})[_0x001c('0x1b')]();});}function uploadFile(_0x56c9bf){return new BPromise(function(_0xd2bb5e,_0x25ee31){var _0x4d6f96=urlParse(_0x56c9bf);var _0x815bc4=_0x4d6f96['protocol']===_0x001c('0x1c')?https:http;var _0x4c17fd={'host':_0x4d6f96[_0x001c('0xf')],'path':_0x4d6f96[_0x001c('0x10')],'headers':{'user-agent':'WHAT_EVER'}};_0x815bc4['get'](_0x4c17fd,function(_0x1a2720){if(_0x1a2720['statusCode']!==0xc8){_0x25ee31(new Error(_0x001c('0x15')+_0x56c9bf+_0x001c('0x13')+_0x1a2720['statusCode']+'\x20('+_0x1a2720[_0x001c('0x14')]+')'));return;}var _0x1e6e81='';_0x1a2720['on']('data',function(_0x3d582d){_0x1e6e81+=_0x3d582d;});_0x1a2720['on'](_0x001c('0x1b'),function(){_0xd2bb5e(_0x1e6e81);});})['on']('error',function(_0x28557f){_0x25ee31(_0x28557f);})[_0x001c('0x1b')]();});}function convertFile(_0x2cb5c9,_0x1cde92){return new BPromise(function(_0x3ec405,_0xbdb315){var _0x4bbe43=sox['transcode'](_0x2cb5c9,_0x1cde92,{'sampleRate':0x1f40,'format':_0x001c('0x1d'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4bbe43['on']('error',function(_0x12eb5b){logger['error'](_0x001c('0x1e'),_0x12eb5b);_0xbdb315(_0x12eb5b);});_0x4bbe43['on'](_0x001c('0x1b'),function(){logger['info'](_0x001c('0x1f'));_0x3ec405();});_0x4bbe43[_0x001c('0x20')]();});}function base64Decode(_0x4cbb9f,_0x5d5e94){var _0x602a61=path[_0x001c('0x21')](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x24'));fs[_0x001c('0x25')](_0x602a61,_0x4cbb9f,_0x001c('0x26'));return convertFile(_0x602a61,_0x5d5e94)[_0x001c('0x27')](function(){try{fs['unlink'](_0x602a61);fs[_0x001c('0x28')](_0x5d5e94,'777');}catch(_0x3691dd){logger[_0x001c('0x19')](_0x3691dd);}return _0x5d5e94[_0x001c('0x29')]('.')[0x0];});}function base64Encode(_0x5796fb){var _0x16e007=fs[_0x001c('0x2a')](_0x5796fb);return new Buffer(_0x16e007)[_0x001c('0x2b')](_0x001c('0x26'));}exports['googleCloudTTS']=function(_0x26866b,_0x32a5f8,_0x2eac82,_0x4adbe0,_0x55aa6b,_0xf073bd){var _0x4d2837,_0x14c253;var _0x4a5360=_0x001c('0x2c');var _0x51e0f8=_0x001c('0x2d')+_0x26866b;var _0x38ab66={};if(_0x32a5f8===_0x001c('0x2e')){_0x38ab66[_0x001c('0x2f')]={'ssml':_0x2eac82};}else{_0x38ab66[_0x001c('0x2f')]={'text':_0x2eac82};};_0x38ab66[_0x001c('0x30')]={'languageCode':_0x4adbe0,'ssmlGender':_0x55aa6b};_0x38ab66[_0x001c('0x31')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x45620a={'url':_0x4a5360+_0x001c('0x32')+_0x51e0f8,'method':_0x001c('0x33'),'json':!![],'body':_0x38ab66};return rp(_0x45620a)[_0x001c('0x27')](function(_0x20580e){return new BPromise(function(_0x2b5803,_0x419863){_0x4d2837=path[_0x001c('0x21')](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x34'));var _0x5766d7=Buffer[_0x001c('0x35')](_0x20580e['audioContent'],_0x001c('0x26'));return fs[_0x001c('0x36')](_0x4d2837,_0x5766d7,function(_0x10faee){_0x419863(_0x10faee);},function(_0x3cdf15){fs['chmodSync'](_0x4d2837,_0x001c('0x37'));_0x2b5803(_0x3cdf15);});});})['then'](function(_0x146923){_0x14c253=path[_0x001c('0x21')](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x24'));return convertFile(_0x4d2837,_0x14c253);})['then'](function(){try{fs[_0x001c('0x1a')](_0x4d2837);fs[_0x001c('0x28')](_0x14c253,_0x001c('0x37'));}catch(_0x51a6ca){logger[_0x001c('0x19')](_0x51a6ca);}logger[_0x001c('0x17')](_0x001c('0x38'),_0x14c253[_0x001c('0x29')]('.')[0x0]);return _0x14c253[_0x001c('0x29')]('.')[0x0];});};exports[_0x001c('0x39')]=function(_0x2e9f59,_0x495945){var _0x3679b1=_0x001c('0x3a');var _0x394c7e,_0x4ce3df;var _0xda8acc;var _0x2b0d1a={'encoding':'utf8','method':_0x001c('0x33'),'timeout':0x2710,'url':_0x3679b1,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x001c('0x3b')+encodeURIComponent(JSON[_0x001c('0x3c')]([[[_0x001c('0x3d'),JSON[_0x001c('0x3c')]([_0x2e9f59,_0x495945||'en',![],'null']),null,_0x001c('0x3e')]]]))};return rp(_0x2b0d1a)[_0x001c('0x27')](function(_0x2e5ed4){try{_0xda8acc=eval(_0x2e5ed4['slice'](0x5))[0x0][0x2];}catch(_0x212a5c){throw new Error(_0x001c('0x3f')+_0x2e5ed4[_0x001c('0x40')]);}if(!_0xda8acc){if(_0x2e9f59[_0x001c('0x41')]>0xc8){throw new Error(_0x001c('0x42'));}else{throw new Error('lang\x20\x22'+_0x495945+_0x001c('0x43'));}}try{_0xda8acc=eval(_0xda8acc)[0x0];}catch(_0x12c92e){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x001c('0x40')]);}const _0x5f3e5b=_0xda8acc;_0x394c7e=path['resolve'](__dirname,_0x001c('0x22'),rs['generate'](0x4)+_0x001c('0x34'));fs[_0x001c('0x25')](_0x394c7e,_0xda8acc,{'encoding':_0x001c('0x26')});_0x4ce3df=path[_0x001c('0x21')](__dirname,'tmp',rs[_0x001c('0x23')](0x4)+_0x001c('0x24'));return convertFile(_0x394c7e,_0x4ce3df);})[_0x001c('0x27')](function(){try{fs['unlink'](_0x394c7e);fs['chmodSync'](_0x4ce3df,_0x001c('0x37'));}catch(_0x1aff47){logger['error'](_0x1aff47);}logger['info'](_0x001c('0x44'),_0x4ce3df[_0x001c('0x29')]('.')[0x0]);return _0x4ce3df['split']('.')[0x0];});};exports['googleASR']=function(_0x183b8b,_0x5c1c9e,_0x4b1dbf){return google['asr'](_0x183b8b,_0x5c1c9e,_0x4b1dbf)[_0x001c('0x27')](function(_0x54c25f){logger[_0x001c('0x17')](_0x54c25f[_0x001c('0x45')]);return rp(_0x54c25f);})['then'](function(_0x49b8f9){var _0x531fb2='';var _0x25f91f=0x0;try{fs[_0x001c('0x1a')](_0x183b8b);}catch(_0xdf195){logger[_0x001c('0x19')](_0xdf195);}if(_0x49b8f9&&_0x49b8f9[_0x001c('0x46')]){_0x531fb2=_0x49b8f9[_0x001c('0x46')]['map'](function(_0x153e3a){return _0x153e3a&&_0x153e3a[_0x001c('0x47')][0x0]&&_0x153e3a[_0x001c('0x47')][0x0]['transcript']?_0x153e3a['alternatives'][0x0][_0x001c('0x48')]:'';})[_0x001c('0x49')]('\x0a');_0x25f91f=_0x49b8f9[_0x001c('0x46')][_0x001c('0x4a')](function(_0x53b831){return _0x53b831&&_0x53b831['alternatives'][0x0]&&_0x53b831['alternatives'][0x0]['confidence']?_0x53b831['alternatives'][0x0][_0x001c('0x4b')]:0x0;})['join']('\x0a');}logger[_0x001c('0x17')](_0x001c('0x4c'),_0x531fb2);logger[_0x001c('0x17')]('googleASR\x20confidence',_0x25f91f);return{'transcript':_0x531fb2,'confidence':_0x25f91f};})[_0x001c('0x4d')](function(_0x333245){logger['error'](_0x001c('0x4e'),_0x333245['statusCode'],_0x333245[_0x001c('0x4f')],_0x333245[_0x001c('0x50')]);});};exports[_0x001c('0x51')]=function(_0x3b594f,_0x316233,_0x4a2e09,_0x350155){var _0x218c54=apiai(_0x316233,{'language':_0x350155||'en'});return _0x218c54[_0x001c('0x52')](_0x4a2e09,{'sessionId':md5(_0x3b594f)})[_0x001c('0x27')](function(_0x3186b4){logger['info'](JSON['stringify'](_0x3186b4));return{'source':_0x3186b4[_0x001c('0x53')][_0x001c('0x54')],'resolvedQuery':_0x3186b4['result'][_0x001c('0x55')],'action':_0x3186b4['result'][_0x001c('0x56')],'actionIncomplete':_0x3186b4[_0x001c('0x53')][_0x001c('0x57')],'speech':_0x3186b4[_0x001c('0x53')]['fulfillment']['speech'],'score':_0x3186b4[_0x001c('0x53')][_0x001c('0x58')],'statusCode':_0x3186b4[_0x001c('0x59')]['code'],'endConversation':_0x3186b4[_0x001c('0x53')][_0x001c('0x5a')][_0x001c('0x5b')]||![],'isFallbackIntent':_0x3186b4[_0x001c('0x53')]['metadata'][_0x001c('0x5c')]};});};exports['googleDialogflowV2']=function(_0x34efb7,_0x5d34b4,_0x535c88,_0x57f9a2,_0x3def99,_0x327def){var _0x38062a=_0x57f9a2[_0x001c('0x5d')](/\\n/g,'\x0a');var _0x18af64={'credentials':{'private_key':_0x38062a,'client_email':_0x535c88}};var _0x28fd2a=new dialogflow[(_0x001c('0x5e'))](_0x18af64);var _0xbdcbaf=_0x28fd2a[_0x001c('0x5f')](_0x5d34b4,md5(_0x34efb7));var _0x1161d8={'session':_0xbdcbaf,'queryInput':{'text':{'text':_0x3def99,'languageCode':_0x327def}}};return _0x28fd2a['detectIntent'](_0x1161d8)['then'](function(_0x1cab7d){if(_0x1cab7d&&_0x1cab7d['length']){logger['info']('Dialogflow\x20V2\x20response:',JSON[_0x001c('0x3c')](_0x1cab7d));var _0x504a28=_0x1cab7d[0x0];if(_0x504a28){var _0x5d3ee5={'action':_0x504a28[_0x001c('0x60')][_0x001c('0x56')],'allRequiredParamsPresent':_0x504a28[_0x001c('0x60')]['allRequiredParamsPresent'],'endConversation':_0x504a28[_0x001c('0x60')][_0x001c('0x61')]&&_0x504a28[_0x001c('0x60')]['diagnosticInfo'][_0x001c('0x62')]?_0x504a28[_0x001c('0x60')][_0x001c('0x61')][_0x001c('0x62')]['end_conversation'][_0x001c('0x63')]:![],'fulfillmentText':_0x504a28[_0x001c('0x60')][_0x001c('0x64')],'intentName':_0x504a28[_0x001c('0x60')][_0x001c('0x65')]['name'],'intentDisplayName':_0x504a28['queryResult']['intent'][_0x001c('0x66')],'isFallbackIntent':_0x504a28[_0x001c('0x60')][_0x001c('0x65')][_0x001c('0x67')],'languageCode':_0x504a28['queryResult'][_0x001c('0x68')],'queryText':_0x504a28[_0x001c('0x60')]['queryText'],'responseId':_0x504a28['responseId'],'score':_0x504a28[_0x001c('0x60')]['intentDetectionConfidence'],'speech':_0x504a28[_0x001c('0x60')][_0x001c('0x64')],'providerResponse':JSON[_0x001c('0x3c')](_0x1cab7d)};return _0x5d3ee5;}}});};exports[_0x001c('0x69')]=function(_0x40346f,_0x49f9e7,_0x5edbf8,_0x3f2ad4){return tilde['asr'](_0x40346f,_0x49f9e7,_0x5edbf8,_0x3f2ad4)[_0x001c('0x27')](function(_0x38da21){try{fs[_0x001c('0x1a')](_0x40346f);}catch(_0x2c5f49){logger[_0x001c('0x19')](_0x2c5f49);}logger['info'](_0x001c('0x6a'),_0x38da21[_0x001c('0x48')]);logger[_0x001c('0x17')](_0x001c('0x6b'),_0x38da21[_0x001c('0x4b')]);return _0x38da21;});};exports[_0x001c('0x6c')]=function(_0x179901,_0x78bc38,_0x56807d,_0x139325,_0x140c00,_0x13b6ff){var _0x7b4a71=path['resolve'](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x34'));var _0x370973;return aws[_0x001c('0x6d')](_0x179901,_0x78bc38,_0x56807d,_0x139325,_0x140c00,_0x13b6ff,_0x7b4a71)[_0x001c('0x27')](function(){_0x370973=path[_0x001c('0x21')](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x24'));return convertFile(_0x7b4a71,_0x370973);})[_0x001c('0x27')](function(){try{fs['unlink'](_0x7b4a71);fs[_0x001c('0x28')](_0x370973,_0x001c('0x37'));}catch(_0x381795){logger['error'](_0x381795);}return _0x370973['split']('.')[0x0];});};exports[_0x001c('0x6e')]=function(_0x396d68,_0xfc713d,_0x32794f,_0x416d53,_0x541bcb,_0x3a87e8){return aws['lex'](_0x396d68,_0xfc713d,_0x32794f,_0x416d53,_0x541bcb,_0x3a87e8)[_0x001c('0x27')](function(_0x3e658f){logger[_0x001c('0x17')](JSON[_0x001c('0x3c')](_0x3e658f));return _0x3e658f;});};exports[_0x001c('0x6f')]=function(_0x8b5e53,_0x5ad524,_0x40a1b7,_0x4bd6d9){var _0x356ed0=util[_0x001c('0x70')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x8b5e53,encodeURIComponent(_0x5ad524),_0x40a1b7,_0x4bd6d9);var _0x4c8136=path[_0x001c('0x21')](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x34'));var _0x18ceaa;return downloadFile(_0x356ed0,_0x4c8136)[_0x001c('0x27')](function(){_0x18ceaa=path['resolve'](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x24'));return convertFile(_0x4c8136,_0x18ceaa);})[_0x001c('0x27')](function(){try{fs[_0x001c('0x1a')](_0x4c8136);fs['chmodSync'](_0x18ceaa,_0x001c('0x37'));}catch(_0x2307bf){logger[_0x001c('0x19')](_0x2307bf);}return _0x18ceaa[_0x001c('0x29')]('.')[0x0];});};exports['ispeechASR']=function(_0x57019f,_0x5c220a,_0x34e8d6,_0x4f9050){var _0x4a3237=util[_0x001c('0x70')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x5c220a,_0x34e8d6,base64Encode(_0x57019f),_0x4f9050?util[_0x001c('0x70')](_0x001c('0x71'),encodeURIComponent(_0x4f9050)):_0x001c('0x72'));return uploadFile(_0x4a3237)[_0x001c('0x27')](function(_0x1a5bb5){return querystring[_0x001c('0x7')](_0x1a5bb5);});};exports[_0x001c('0x73')]=function(_0x4fd8df,_0x2f1fe5){return sestek['nda'](_0x4fd8df,_0x2f1fe5)[_0x001c('0x27')](function(_0x6489e2){logger[_0x001c('0x17')](JSON[_0x001c('0x3c')](_0x6489e2));var _0x34d255={'speech':_0x6489e2[_0x001c('0x74')],'action':_0x6489e2[_0x001c('0x75')]?_0x6489e2[_0x001c('0x75')][_0x001c('0x76')]:undefined,'actiondata':_0x6489e2[_0x001c('0x75')]?_0x6489e2[_0x001c('0x75')]['CustomActionData']:undefined};if(_0x6489e2[_0x001c('0x75')]&&_0x6489e2[_0x001c('0x75')][_0x001c('0x77')]){return base64Decode(_0x6489e2[_0x001c('0x75')][_0x001c('0x77')][_0x001c('0x78')],path[_0x001c('0x21')](__dirname,_0x001c('0x22'),rs[_0x001c('0x23')](0x4)+_0x001c('0x24')))[_0x001c('0x27')](function(_0x494797){_0x34d255[_0x001c('0x79')]=_0x494797;return _0x34d255;});}return _0x34d255;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
+var _0x2e7f=['from','audioContent','chmodSync','googleCloudTTS\x20path','split','googleTTS','utf8','application/x-www-form-urlencoded','f.req=','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','generate','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20confidence','catch','name','googleDialogflow','textRequest','result','resolvedQuery','actionIncomplete','speech','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','detectIntent','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','tildeASR','Tilde\x20ASR\x20transcription','polly','awsLex','%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','format','freeform=3','parse','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','dirName','bluebird','dialogflow','https','md5','path','querystring','request-promise','randomstring','google-tts-api','url','util','./aws','./sestek','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','statusCode','error','request\x20to\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','pipe','end','\x20failed,\x20status\x20code\x20=\x20','data','transcode','wav','error\x20convert','start','resolve','tmp','.wav','writeFileSync','base64','then','777','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','POST','.mp3'];(function(_0x58dc5d,_0x2d353a){var _0x2e6688=function(_0x1fb207){while(--_0x1fb207){_0x58dc5d['push'](_0x58dc5d['shift']());}};_0x2e6688(++_0x2d353a);}(_0x2e7f,0x1dd));var _0xf2e7=function(_0x85d034,_0x3038ef){_0x85d034=_0x85d034-0x0;var _0x93c225=_0x2e7f[_0x85d034];return _0x93c225;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0xf2e7('0x0'));var dialogflow=require(_0xf2e7('0x1'));var fs=require('fs');var http=require('http');var https=require(_0xf2e7('0x2'));var md5=require(_0xf2e7('0x3'));var path=require(_0xf2e7('0x4'));var querystring=require(_0xf2e7('0x5'));var rp=require(_0xf2e7('0x6'));var rs=require(_0xf2e7('0x7'));var sox=require('sox');var tts=require(_0xf2e7('0x8'));var urlParse=require(_0xf2e7('0x9'))['parse'];var util=require(_0xf2e7('0xa'));var aws=require(_0xf2e7('0xb'));var google=require('./google');var sestek=require(_0xf2e7('0xc'));var tilde=require(_0xf2e7('0xd'));var logger=require(_0xf2e7('0xe'))('agi');var ISPEECH_API=_0xf2e7('0xf');function downloadFile(_0x59fcec,_0x305873){return new BPromise(function(_0xbcad51,_0x251bfa){var _0x2f8a8b=urlParse(_0x59fcec);var _0xbacfb6=_0x2f8a8b[_0xf2e7('0x10')]===_0xf2e7('0x11')?https:http;var _0x490cea={'host':_0x2f8a8b[_0xf2e7('0x12')],'path':_0x2f8a8b[_0xf2e7('0x4')],'headers':{'user-agent':_0xf2e7('0x13')}};_0xbacfb6['get'](_0x490cea,function(_0x247239){if(_0x247239[_0xf2e7('0x14')]!==0xc8){logger[_0xf2e7('0x15')](_0xf2e7('0x16')+_0x59fcec+'\x20failed,\x20status\x20code\x20=\x20'+_0x247239['statusCode']+'\x20('+_0x247239['statusMessage']+')');_0x251bfa(new Error('request\x20to\x20'+_0x59fcec+'\x20failed,\x20status\x20code\x20=\x20'+_0x247239['statusCode']+'\x20('+_0x247239[_0xf2e7('0x17')]+')'));return;}var _0x4dd11d=fs[_0xf2e7('0x18')](_0x305873);_0x4dd11d['on'](_0xf2e7('0x19'),function(){logger[_0xf2e7('0x1a')](_0xf2e7('0x1b'));_0x4dd11d[_0xf2e7('0x1c')](_0xbcad51);});_0x4dd11d['on'](_0xf2e7('0x15'),function(_0x3faecc){fs[_0xf2e7('0x1d')](_0x305873);logger[_0xf2e7('0x15')]('download\x20error',_0x3faecc);_0x251bfa(_0x3faecc);});_0x247239[_0xf2e7('0x1e')](_0x4dd11d);})['on'](_0xf2e7('0x15'),function(_0x25430e){logger[_0xf2e7('0x15')](_0x25430e);_0x251bfa(_0x25430e);})[_0xf2e7('0x1f')]();});}function uploadFile(_0x522bc6){return new BPromise(function(_0xe23816,_0x347995){var _0x513b32=urlParse(_0x522bc6);var _0x21467c=_0x513b32[_0xf2e7('0x10')]==='https:'?https:http;var _0x4ac928={'host':_0x513b32[_0xf2e7('0x12')],'path':_0x513b32[_0xf2e7('0x4')],'headers':{'user-agent':_0xf2e7('0x13')}};_0x21467c['get'](_0x4ac928,function(_0x57b3be){if(_0x57b3be['statusCode']!==0xc8){_0x347995(new Error(_0xf2e7('0x16')+_0x522bc6+_0xf2e7('0x20')+_0x57b3be[_0xf2e7('0x14')]+'\x20('+_0x57b3be[_0xf2e7('0x17')]+')'));return;}var _0x28792c='';_0x57b3be['on'](_0xf2e7('0x21'),function(_0x3f298d){_0x28792c+=_0x3f298d;});_0x57b3be['on'](_0xf2e7('0x1f'),function(){_0xe23816(_0x28792c);});})['on']('error',function(_0x44ce81){_0x347995(_0x44ce81);})[_0xf2e7('0x1f')]();});}function convertFile(_0x40a013,_0x44c6eb){return new BPromise(function(_0x1fecb5,_0x48b18d){var _0x5b37b2=sox[_0xf2e7('0x22')](_0x40a013,_0x44c6eb,{'sampleRate':0x1f40,'format':_0xf2e7('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x5b37b2['on']('error',function(_0x4d854c){logger['error'](_0xf2e7('0x24'),_0x4d854c);_0x48b18d(_0x4d854c);});_0x5b37b2['on'](_0xf2e7('0x1f'),function(){logger['info']('finish\x20to\x20convert');_0x1fecb5();});_0x5b37b2[_0xf2e7('0x25')]();});}function base64Decode(_0x2b3e79,_0x5c9a66){var _0x9b67b7=path[_0xf2e7('0x26')](__dirname,_0xf2e7('0x27'),rs['generate'](0x4)+_0xf2e7('0x28'));fs[_0xf2e7('0x29')](_0x9b67b7,_0x2b3e79,_0xf2e7('0x2a'));return convertFile(_0x9b67b7,_0x5c9a66)[_0xf2e7('0x2b')](function(){try{fs[_0xf2e7('0x1d')](_0x9b67b7);fs['chmodSync'](_0x5c9a66,_0xf2e7('0x2c'));}catch(_0x54315e){logger[_0xf2e7('0x15')](_0x54315e);}return _0x5c9a66['split']('.')[0x0];});}function base64Encode(_0x149966){var _0x47dbbd=fs[_0xf2e7('0x2d')](_0x149966);return new Buffer(_0x47dbbd)[_0xf2e7('0x2e')](_0xf2e7('0x2a'));}exports[_0xf2e7('0x2f')]=function(_0x5dde41,_0x595a8a,_0x2c34f2,_0x3f57fa,_0xbe046e,_0x14ae67){var _0x23430d,_0xa83be4;var _0x19134b=_0xf2e7('0x30');var _0x2f9b8d=_0xf2e7('0x31')+_0x5dde41;var _0x3f87d1={};if(_0x595a8a===_0xf2e7('0x32')){_0x3f87d1[_0xf2e7('0x33')]={'ssml':_0x2c34f2};}else{_0x3f87d1[_0xf2e7('0x33')]={'text':_0x2c34f2};};_0x3f87d1[_0xf2e7('0x34')]={'languageCode':_0x3f57fa,'ssmlGender':_0xbe046e};_0x3f87d1['audioConfig']={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x45d4e7={'url':_0x19134b+'text:synthesize'+_0x2f9b8d,'method':_0xf2e7('0x35'),'json':!![],'body':_0x3f87d1};return rp(_0x45d4e7)[_0xf2e7('0x2b')](function(_0x2307e8){return new BPromise(function(_0x13d4aa,_0x4a5562){_0x23430d=path['resolve'](__dirname,_0xf2e7('0x27'),rs['generate'](0x4)+_0xf2e7('0x36'));var _0x79cb3e=Buffer[_0xf2e7('0x37')](_0x2307e8[_0xf2e7('0x38')],_0xf2e7('0x2a'));return fs['writeFile'](_0x23430d,_0x79cb3e,function(_0x55aaac){_0x4a5562(_0x55aaac);},function(_0x5b2e66){fs[_0xf2e7('0x39')](_0x23430d,_0xf2e7('0x2c'));_0x13d4aa(_0x5b2e66);});});})[_0xf2e7('0x2b')](function(_0x56840d){_0xa83be4=path[_0xf2e7('0x26')](__dirname,_0xf2e7('0x27'),rs['generate'](0x4)+'.wav');return convertFile(_0x23430d,_0xa83be4);})[_0xf2e7('0x2b')](function(){try{fs[_0xf2e7('0x1d')](_0x23430d);fs[_0xf2e7('0x39')](_0xa83be4,'777');}catch(_0x42aab2){logger[_0xf2e7('0x15')](_0x42aab2);}logger['info'](_0xf2e7('0x3a'),_0xa83be4[_0xf2e7('0x3b')]('.')[0x0]);return _0xa83be4[_0xf2e7('0x3b')]('.')[0x0];});};exports[_0xf2e7('0x3c')]=function(_0x407824,_0x5607d2){var _0x3b1da2='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x59a330,_0xcebee1;var _0x5bed2c;var _0x28beba={'encoding':_0xf2e7('0x3d'),'method':_0xf2e7('0x35'),'timeout':0x2710,'url':_0x3b1da2,'headers':{'Content-Type':_0xf2e7('0x3e')},'body':_0xf2e7('0x3f')+encodeURIComponent(JSON[_0xf2e7('0x40')]([[['jQ1olc',JSON[_0xf2e7('0x40')]([_0x407824,_0x5607d2||'en',![],_0xf2e7('0x41')]),null,_0xf2e7('0x42')]]]))};return rp(_0x28beba)['then'](function(_0x3aa818){try{_0x5bed2c=eval(_0x3aa818[_0xf2e7('0x43')](0x5))[0x0][0x2];}catch(_0x4cc62b){throw new Error(_0xf2e7('0x44')+_0x3aa818['data']);}if(!_0x5bed2c){if(_0x407824[_0xf2e7('0x45')]>0xc8){throw new Error(_0xf2e7('0x46'));}else{throw new Error(_0xf2e7('0x47')+_0x5607d2+_0xf2e7('0x48'));}}try{_0x5bed2c=eval(_0x5bed2c)[0x0];}catch(_0x5eba65){throw new Error(_0xf2e7('0x44')+res[_0xf2e7('0x21')]);}const _0x3b4a64=_0x5bed2c;_0x59a330=path[_0xf2e7('0x26')](__dirname,_0xf2e7('0x27'),rs['generate'](0x4)+_0xf2e7('0x36'));fs['writeFileSync'](_0x59a330,_0x5bed2c,{'encoding':_0xf2e7('0x2a')});_0xcebee1=path[_0xf2e7('0x26')](__dirname,_0xf2e7('0x27'),rs[_0xf2e7('0x49')](0x4)+_0xf2e7('0x28'));return convertFile(_0x59a330,_0xcebee1);})[_0xf2e7('0x2b')](function(){try{fs[_0xf2e7('0x1d')](_0x59a330);fs[_0xf2e7('0x39')](_0xcebee1,_0xf2e7('0x2c'));}catch(_0x5bc99f){logger['error'](_0x5bc99f);}logger[_0xf2e7('0x1a')]('goggleTTS\x20path',_0xcebee1['split']('.')[0x0]);return _0xcebee1['split']('.')[0x0];});};exports[_0xf2e7('0x4a')]=function(_0x1c3d8e,_0x584d7e,_0x930130){return google[_0xf2e7('0x4b')](_0x1c3d8e,_0x584d7e,_0x930130)[_0xf2e7('0x2b')](function(_0x421c64){logger[_0xf2e7('0x1a')](_0x421c64[_0xf2e7('0x4c')]);return rp(_0x421c64);})[_0xf2e7('0x2b')](function(_0x153eab){var _0x22eae8='';var _0x1d532f=0x0;try{fs[_0xf2e7('0x1d')](_0x1c3d8e);}catch(_0x583106){logger['error'](_0x583106);}if(_0x153eab&&_0x153eab[_0xf2e7('0x4d')]){_0x22eae8=_0x153eab[_0xf2e7('0x4d')][_0xf2e7('0x4e')](function(_0x2dc883){return _0x2dc883&&_0x2dc883[_0xf2e7('0x4f')][0x0]&&_0x2dc883[_0xf2e7('0x4f')][0x0][_0xf2e7('0x50')]?_0x2dc883[_0xf2e7('0x4f')][0x0][_0xf2e7('0x50')]:'';})[_0xf2e7('0x51')]('\x0a');_0x1d532f=_0x153eab[_0xf2e7('0x4d')]['map'](function(_0xa6e8df){return _0xa6e8df&&_0xa6e8df[_0xf2e7('0x4f')][0x0]&&_0xa6e8df[_0xf2e7('0x4f')][0x0][_0xf2e7('0x52')]?_0xa6e8df[_0xf2e7('0x4f')][0x0][_0xf2e7('0x52')]:0x0;})[_0xf2e7('0x51')]('\x0a');}logger[_0xf2e7('0x1a')]('googleASR\x20transcription',_0x22eae8);logger[_0xf2e7('0x1a')](_0xf2e7('0x53'),_0x1d532f);return{'transcript':_0x22eae8,'confidence':_0x1d532f};})[_0xf2e7('0x54')](function(_0x191e69){logger[_0xf2e7('0x15')]('[%s]\x20%s:%s',_0x191e69[_0xf2e7('0x14')],_0x191e69[_0xf2e7('0x55')],_0x191e69['message']);});};exports[_0xf2e7('0x56')]=function(_0x43faa9,_0x3cc2fc,_0x4855a1,_0x412bf){var _0x25a321=apiai(_0x3cc2fc,{'language':_0x412bf||'en'});return _0x25a321[_0xf2e7('0x57')](_0x4855a1,{'sessionId':md5(_0x43faa9)})[_0xf2e7('0x2b')](function(_0x4b4998){logger['info'](JSON[_0xf2e7('0x40')](_0x4b4998));return{'source':_0x4b4998[_0xf2e7('0x58')]['source'],'resolvedQuery':_0x4b4998[_0xf2e7('0x58')][_0xf2e7('0x59')],'action':_0x4b4998[_0xf2e7('0x58')]['action'],'actionIncomplete':_0x4b4998[_0xf2e7('0x58')][_0xf2e7('0x5a')],'speech':_0x4b4998[_0xf2e7('0x58')]['fulfillment'][_0xf2e7('0x5b')],'score':_0x4b4998['result'][_0xf2e7('0x5c')],'statusCode':_0x4b4998[_0xf2e7('0x5d')][_0xf2e7('0x5e')],'endConversation':_0x4b4998[_0xf2e7('0x58')][_0xf2e7('0x5f')][_0xf2e7('0x60')]||![],'isFallbackIntent':_0x4b4998[_0xf2e7('0x58')][_0xf2e7('0x5f')][_0xf2e7('0x61')]};});};exports[_0xf2e7('0x62')]=function(_0x19a05f,_0x1c8b96,_0x25df57,_0x27c505,_0x4830ce,_0x26b325){var _0x252710=_0x27c505[_0xf2e7('0x63')](/\\n/g,'\x0a');var _0x54e8fd={'credentials':{'private_key':_0x252710,'client_email':_0x25df57}};var _0x474449=new dialogflow[(_0xf2e7('0x64'))](_0x54e8fd);var _0x158070=_0x474449['sessionPath'](_0x1c8b96,md5(_0x19a05f));var _0x22bd8a={'session':_0x158070,'queryInput':{'text':{'text':_0x4830ce,'languageCode':_0x26b325}}};return _0x474449[_0xf2e7('0x65')](_0x22bd8a)[_0xf2e7('0x2b')](function(_0x256b63){if(_0x256b63&&_0x256b63[_0xf2e7('0x45')]){logger['info']('Dialogflow\x20V2\x20response:',JSON['stringify'](_0x256b63));var _0x5b8692=_0x256b63[0x0];if(_0x5b8692){var _0x246243={'action':_0x5b8692[_0xf2e7('0x66')][_0xf2e7('0x67')],'allRequiredParamsPresent':_0x5b8692['queryResult'][_0xf2e7('0x68')],'endConversation':_0x5b8692['queryResult'][_0xf2e7('0x69')]&&_0x5b8692['queryResult'][_0xf2e7('0x69')]['fields']?_0x5b8692[_0xf2e7('0x66')][_0xf2e7('0x69')][_0xf2e7('0x6a')][_0xf2e7('0x6b')][_0xf2e7('0x6c')]:![],'fulfillmentText':_0x5b8692[_0xf2e7('0x66')][_0xf2e7('0x6d')],'intentName':_0x5b8692[_0xf2e7('0x66')][_0xf2e7('0x6e')][_0xf2e7('0x55')],'intentDisplayName':_0x5b8692['queryResult'][_0xf2e7('0x6e')][_0xf2e7('0x6f')],'isFallbackIntent':_0x5b8692[_0xf2e7('0x66')][_0xf2e7('0x6e')][_0xf2e7('0x70')],'languageCode':_0x5b8692['queryResult'][_0xf2e7('0x71')],'queryText':_0x5b8692[_0xf2e7('0x66')]['queryText'],'responseId':_0x5b8692['responseId'],'score':_0x5b8692[_0xf2e7('0x66')]['intentDetectionConfidence'],'speech':_0x5b8692[_0xf2e7('0x66')][_0xf2e7('0x6d')],'providerResponse':JSON[_0xf2e7('0x40')](_0x256b63)};return _0x246243;}}});};exports[_0xf2e7('0x72')]=function(_0x576083,_0x107c54,_0x5e4efe,_0x2794d4){return tilde['asr'](_0x576083,_0x107c54,_0x5e4efe,_0x2794d4)['then'](function(_0x2e3901){try{fs[_0xf2e7('0x1d')](_0x576083);}catch(_0x1360f5){logger['error'](_0x1360f5);}logger[_0xf2e7('0x1a')](_0xf2e7('0x73'),_0x2e3901[_0xf2e7('0x50')]);logger[_0xf2e7('0x1a')]('Tilde\x20ASR\x20confidence',_0x2e3901[_0xf2e7('0x52')]);return _0x2e3901;});};exports['awsPolly']=function(_0x8654c3,_0x4df32f,_0x3c6ea2,_0x422714,_0x5f1cf8,_0x42c323){var _0x147ce8=path[_0xf2e7('0x26')](__dirname,_0xf2e7('0x27'),rs[_0xf2e7('0x49')](0x4)+_0xf2e7('0x36'));var _0x39cb47;return aws[_0xf2e7('0x74')](_0x8654c3,_0x4df32f,_0x3c6ea2,_0x422714,_0x5f1cf8,_0x42c323,_0x147ce8)[_0xf2e7('0x2b')](function(){_0x39cb47=path[_0xf2e7('0x26')](__dirname,_0xf2e7('0x27'),rs[_0xf2e7('0x49')](0x4)+'.wav');return convertFile(_0x147ce8,_0x39cb47);})['then'](function(){try{fs[_0xf2e7('0x1d')](_0x147ce8);fs['chmodSync'](_0x39cb47,_0xf2e7('0x2c'));}catch(_0x4738c3){logger[_0xf2e7('0x15')](_0x4738c3);}return _0x39cb47[_0xf2e7('0x3b')]('.')[0x0];});};exports[_0xf2e7('0x75')]=function(_0x348b33,_0xc02d47,_0x435d57,_0x3391c9,_0x42432e,_0x1dfe3c){return aws['lex'](_0x348b33,_0xc02d47,_0x435d57,_0x3391c9,_0x42432e,_0x1dfe3c)[_0xf2e7('0x2b')](function(_0x3b49d7){logger[_0xf2e7('0x1a')](JSON['stringify'](_0x3b49d7));return _0x3b49d7;});};exports['ispeechTTS']=function(_0x1e0d12,_0x92c4c,_0x181976,_0x513b63){var _0x23e12e=util['format'](_0xf2e7('0x76'),ISPEECH_API,_0x1e0d12,encodeURIComponent(_0x92c4c),_0x181976,_0x513b63);var _0x33e2c0=path[_0xf2e7('0x26')](__dirname,_0xf2e7('0x27'),rs[_0xf2e7('0x49')](0x4)+_0xf2e7('0x36'));var _0x2c1758;return downloadFile(_0x23e12e,_0x33e2c0)[_0xf2e7('0x2b')](function(){_0x2c1758=path[_0xf2e7('0x26')](__dirname,_0xf2e7('0x27'),rs[_0xf2e7('0x49')](0x4)+'.wav');return convertFile(_0x33e2c0,_0x2c1758);})[_0xf2e7('0x2b')](function(){try{fs[_0xf2e7('0x1d')](_0x33e2c0);fs[_0xf2e7('0x39')](_0x2c1758,_0xf2e7('0x2c'));}catch(_0x4f07d9){logger[_0xf2e7('0x15')](_0x4f07d9);}return _0x2c1758[_0xf2e7('0x3b')]('.')[0x0];});};exports[_0xf2e7('0x77')]=function(_0x26e23d,_0xcdf68d,_0x2c0e78,_0xdefa1c){var _0x23d51e=util['format'](_0xf2e7('0x78'),ISPEECH_API,_0xcdf68d,_0x2c0e78,base64Encode(_0x26e23d),_0xdefa1c?util[_0xf2e7('0x79')]('model=%s',encodeURIComponent(_0xdefa1c)):_0xf2e7('0x7a'));return uploadFile(_0x23d51e)[_0xf2e7('0x2b')](function(_0x4d99ca){return querystring[_0xf2e7('0x7b')](_0x4d99ca);});};exports[_0xf2e7('0x7c')]=function(_0x18cd25,_0x1604d2){return sestek[_0xf2e7('0x7d')](_0x18cd25,_0x1604d2)[_0xf2e7('0x2b')](function(_0x4669b4){logger[_0xf2e7('0x1a')](JSON['stringify'](_0x4669b4));var _0x1a64ae={'speech':_0x4669b4[_0xf2e7('0x7e')],'action':_0x4669b4[_0xf2e7('0x7f')]?_0x4669b4[_0xf2e7('0x7f')][_0xf2e7('0x80')]:undefined,'actiondata':_0x4669b4[_0xf2e7('0x7f')]?_0x4669b4['channelData'][_0xf2e7('0x81')]:undefined};if(_0x4669b4[_0xf2e7('0x7f')]&&_0x4669b4[_0xf2e7('0x7f')][_0xf2e7('0x82')]){return base64Decode(_0x4669b4[_0xf2e7('0x7f')][_0xf2e7('0x82')][_0xf2e7('0x83')],path[_0xf2e7('0x26')](__dirname,_0xf2e7('0x27'),rs[_0xf2e7('0x49')](0x4)+_0xf2e7('0x28')))[_0xf2e7('0x2b')](function(_0x339b1f){_0x1a64ae['audiofile']=_0x339b1f;return _0x1a64ae;});}return _0x1a64ae;});};exports[_0xf2e7('0x84')]=function(){return __dirname;};
\ No newline at end of file
index a92defa..8f34e03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5959=['exports'];(function(_0x31dde9,_0x12e816){var _0x1fbf2d=function(_0x1d1bf6){while(--_0x1d1bf6){_0x31dde9['push'](_0x31dde9['shift']());}};_0x1fbf2d(++_0x12e816);}(_0x5959,0x11b));var _0x9595=function(_0x41159b,_0x18ae88){_0x41159b=_0x41159b-0x0;var _0x5bea4e=_0x5959[_0x41159b];return _0x5bea4e;};var nda=require('./nda');module[_0x9595('0x0')]={'nda':nda};
\ No newline at end of file
+var nda=require('./nda');module['exports']={'nda':nda};
\ No newline at end of file
index 4b578c5..263f7dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7341=['body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','stringify','../../../../../config/logger','exports','POST','resolve','ndauth_url','/token','password','username','then','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','dnid','extension','text','Bearer\x20','project'];(function(_0x127dd9,_0x2da436){var _0x277545=function(_0x54a67b){while(--_0x54a67b){_0x127dd9['push'](_0x127dd9['shift']());}};_0x277545(++_0x2da436);}(_0x7341,0xe4));var _0x1734=function(_0x1b73f2,_0x355c9d){_0x1b73f2=_0x1b73f2-0x0;var _0xb37dbc=_0x7341[_0x1b73f2];return _0xb37dbc;};'use strict';var rp=require('request-promise');var url=require('url');var logger=require(_0x1734('0x0'))('agi');module[_0x1734('0x1')]=function(_0x36397c,_0x47c889){var _0x3bf99a={'method':_0x1734('0x2'),'uri':url[_0x1734('0x3')](_0x47c889[_0x1734('0x4')],_0x1734('0x5')),'form':{'grant_type':_0x1734('0x6'),'username':_0x47c889[_0x1734('0x7')],'password':_0x47c889['password']},'json':!![]};return rp(_0x3bf99a)[_0x1734('0x8')](function(_0x2c223d){var _0x45c529={'method':'POST','uri':url[_0x1734('0x3')](_0x47c889['ndassistant_url'],'/api/NaturalDialogAssistant/v1/Run'),'body':{'type':_0x47c889[_0x1734('0x9')]||_0x1734('0xa'),'channelId':_0x1734('0xb'),'conversation':{'id':_0x36397c[_0x1734('0xc')]},'from':{'id':_0x36397c[_0x1734('0xd')],'name':_0x36397c[_0x1734('0xe')]},'recipient':{'id':_0x36397c[_0x1734('0xf')],'name':_0x36397c[_0x1734('0x10')]},'text':_0x47c889[_0x1734('0x11')],'channelData':{}},'headers':{'Authorization':_0x1734('0x12')+_0x2c223d['access_token']},'json':!![]};if(_0x47c889[_0x1734('0x13')]){_0x45c529[_0x1734('0x14')][_0x1734('0x15')][_0x1734('0x16')]=_0x47c889[_0x1734('0x13')];}if(_0x47c889[_0x1734('0x17')]=='1'){_0x45c529[_0x1734('0x14')][_0x1734('0x15')][_0x1734('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x1734('0x19')};}if(_0x47c889[_0x1734('0x1a')]){_0x45c529[_0x1734('0x14')][_0x1734('0x15')][_0x1734('0x1b')]=_0x47c889[_0x1734('0x1a')];if(_0x47c889[_0x1734('0x1c')]){_0x45c529[_0x1734('0x14')][_0x1734('0x15')][_0x1734('0x1d')]=_0x47c889['custom_action_data'];}}logger['info'](JSON[_0x1734('0x1e')](_0x45c529));return rp(_0x45c529);});};
\ No newline at end of file
+var _0x92d7=['resolve','ndauth_url','/token','username','password','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','callerid','dnid','extension','access_token','project','body','ProjectName','ndagenerate_audio','channelData','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','info','stringify','request-promise','../../../../../config/logger','agi','exports','POST'];(function(_0xf7da6a,_0xb84062){var _0x5ce9a8=function(_0x2d74aa){while(--_0x2d74aa){_0xf7da6a['push'](_0xf7da6a['shift']());}};_0x5ce9a8(++_0xb84062);}(_0x92d7,0x17b));var _0x792d=function(_0x59d45b,_0x3c7ebe){_0x59d45b=_0x59d45b-0x0;var _0x8db214=_0x92d7[_0x59d45b];return _0x8db214;};'use strict';var rp=require(_0x792d('0x0'));var url=require('url');var logger=require(_0x792d('0x1'))(_0x792d('0x2'));module[_0x792d('0x3')]=function(_0xed6481,_0x46982d){var _0x1434c9={'method':_0x792d('0x4'),'uri':url[_0x792d('0x5')](_0x46982d[_0x792d('0x6')],_0x792d('0x7')),'form':{'grant_type':'password','username':_0x46982d[_0x792d('0x8')],'password':_0x46982d[_0x792d('0x9')]},'json':!![]};return rp(_0x1434c9)[_0x792d('0xa')](function(_0x11240a){var _0x56f730={'method':_0x792d('0x4'),'uri':url[_0x792d('0x5')](_0x46982d[_0x792d('0xb')],_0x792d('0xc')),'body':{'type':_0x46982d[_0x792d('0xd')]||_0x792d('0xe'),'channelId':_0x792d('0xf'),'conversation':{'id':_0xed6481['uniqueid']},'from':{'id':_0xed6481[_0x792d('0x10')],'name':_0xed6481['calleridname']},'recipient':{'id':_0xed6481[_0x792d('0x11')],'name':_0xed6481[_0x792d('0x12')]},'text':_0x46982d['text'],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x11240a[_0x792d('0x13')]},'json':!![]};if(_0x46982d[_0x792d('0x14')]){_0x56f730[_0x792d('0x15')]['channelData'][_0x792d('0x16')]=_0x46982d[_0x792d('0x14')];}if(_0x46982d[_0x792d('0x17')]=='1'){_0x56f730[_0x792d('0x15')][_0x792d('0x18')][_0x792d('0x19')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x792d('0x1a')};}if(_0x46982d[_0x792d('0x1b')]){_0x56f730[_0x792d('0x15')][_0x792d('0x18')][_0x792d('0x1c')]=_0x46982d[_0x792d('0x1b')];if(_0x46982d[_0x792d('0x1d')]){_0x56f730[_0x792d('0x15')][_0x792d('0x18')]['CustomActionData']=_0x46982d[_0x792d('0x1d')];}}logger[_0x792d('0x1e')](JSON[_0x792d('0x1f')](_0x56f730));return rp(_0x56f730);});};
\ No newline at end of file
index fb16c8a..bbf18fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10e0=['./lib/api','exports'];(function(_0x41c77d,_0x3199a1){var _0x4e10f1=function(_0x1fd748){while(--_0x1fd748){_0x41c77d['push'](_0x41c77d['shift']());}};_0x4e10f1(++_0x3199a1);}(_0x10e0,0x19e));var _0x010e=function(_0x45493c,_0x39478b){_0x45493c=_0x45493c-0x0;var _0xe89240=_0x10e0[_0x45493c];return _0xe89240;};'use strict';var asr=require(_0x010e('0x0'));module[_0x010e('0x1')]=function(_0x5bfc55,_0xb48e3d,_0x194f28,_0x34c62f){return asr(_0x5bfc55,_0xb48e3d,_0x194f28,_0x34c62f);};
\ No newline at end of file
+var _0x77b3=['./lib/api'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x77b3,0x6d));var _0x377b=function(_0x591863,_0x27ad00){_0x591863=_0x591863-0x0;var _0xd879c2=_0x77b3[_0x591863];return _0xd879c2;};'use strict';var asr=require(_0x377b('0x0'));module['exports']=function(_0x593943,_0x53f7a8,_0x6ce8a1,_0x2dfccb){return asr(_0x593943,_0x53f7a8,_0x6ce8a1,_0x2dfccb);};
\ No newline at end of file
index 94cee6d..e394f03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf70b=['info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','send','close','EOS','error','Tilde\x20ASR\x20send\x20error','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','terminate','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Close\x20Tilde\x20ASR\x20socket','isNil','isObject','message','bluebird','lodash','moment','crypto','agi','exports'];(function(_0xc633cd,_0x50d58d){var _0x29cd38=function(_0x3395bd){while(--_0x3395bd){_0xc633cd['push'](_0xc633cd['shift']());}};_0x29cd38(++_0x50d58d);}(_0xf70b,0x142));var _0xbf70=function(_0xf44a4f,_0x35f32c){_0xf44a4f=_0xf44a4f-0x0;var _0x255f0c=_0xf70b[_0xf44a4f];return _0x255f0c;};'use strict';var BPromise=require(_0xbf70('0x0'));var _=require(_0xbf70('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xbf70('0x2'));var crypto=require(_0xbf70('0x3'));var logger=require('../../../../../../config/logger')(_0xbf70('0x4'));module[_0xbf70('0x5')]=function(_0x1d01f3,_0x1f8693,_0x211719,_0x3ab25a){return new BPromise(function(_0x18b65a,_0x40980f){logger[_0xbf70('0x6')](_0xbf70('0x7'),_0x3ab25a||_0xbf70('0x8'));var _0x160fe9=new WebSocket(_0x3ab25a||_0xbf70('0x8'),{'perMessageDeflate':![]});var _0x2d99d3='';var _0x381819='0';var _0x1252f9='1';var _0x568d0=_0xbf70('0x9');function _0x2911c9(_0x3296d7){var _0x46db11=crypto[_0xbf70('0xa')](_0xbf70('0xb'));_0x46db11[_0xbf70('0xc')](_0x3296d7);return _0x46db11[_0xbf70('0xd')]('hex');}function _0xfd2e18(){try{logger[_0xbf70('0x6')](_0xbf70('0xe'));var _0x5d439c=moment()[_0xbf70('0xf')]();var _0x550235=_0x2911c9(_0x5d439c+_0x1f8693+_0x211719);_0x160fe9['send'](JSON[_0xbf70('0x10')]({'appID':_0x1f8693,'timestamp':_0x5d439c,'appKey':_0x550235}));var _0x240a4e=fs[_0xbf70('0x11')](_0x1d01f3);_0x240a4e['on']('data',function(_0x207e46){_0x160fe9[_0xbf70('0x12')](_0x207e46);});_0x240a4e['on'](_0xbf70('0x13'),function(){_0x160fe9[_0xbf70('0x12')](_0xbf70('0x14'));});}catch(_0x2afc35){logger[_0xbf70('0x15')](_0xbf70('0x16'),JSON['stringify'](_0x2afc35));_0x160fe9['terminate']();}}function _0x2a6e0e(_0x14d3cf){try{if(_0x14d3cf){var _0x517f62=JSON[_0xbf70('0x17')](_0x14d3cf);switch(_0x517f62[_0xbf70('0x18')]){case 0x0:if(_0x517f62[_0xbf70('0x19')]){if(_0x517f62['result'][_0xbf70('0x1a')]){logger[_0xbf70('0x6')](_0xbf70('0x1b'),JSON[_0xbf70('0x10')](_0x517f62['result'][_0xbf70('0x1c')]));_0x2d99d3=_0x517f62['result'][_0xbf70('0x1c')][0x0][_0xbf70('0x1d')];_0x381819=_0x517f62['result'][_0xbf70('0x1c')][0x0][_0xbf70('0x1e')];_0x1252f9='0';_0x568d0=_0xbf70('0x1f');_0x160fe9[_0xbf70('0x20')]();}}break;case 0x1:logger[_0xbf70('0x6')](_0xbf70('0x9'));_0x1252f9='1';_0x568d0='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0xbf70('0x6')](_0xbf70('0x21'));_0x1252f9='2';_0x568d0='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0xbf70('0x6')]('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x1252f9='9';_0x568d0=_0xbf70('0x22');break;case 0xa:logger[_0xbf70('0x6')]('Authentication\x20failed.');_0x1252f9='10';_0x568d0=_0xbf70('0x23');break;case 0xb:logger[_0xbf70('0x6')](_0xbf70('0x24'));_0x1252f9='11';_0x568d0=_0xbf70('0x24');}}}catch(_0x438a59){logger['error']('Tilde\x20ASR\x20parse\x20error',JSON['stringify'](_0x438a59));_0x160fe9['terminate']();}}function _0x5218b7(){logger[_0xbf70('0x6')](_0xbf70('0x25'));_0x18b65a({'transcript':_0x2d99d3,'confidence':_0x381819,'status':_0x1252f9,'status_message':_0x568d0});}function _0x3e4879(_0x55a4f1){logger[_0xbf70('0x15')]('Error\x20Tilde\x20ASR\x20socket');if(!_[_0xbf70('0x26')](_0x55a4f1)){logger['error'](_[_0xbf70('0x27')](_0x55a4f1)?JSON[_0xbf70('0x10')](_0x55a4f1):_0x55a4f1);}}_0x160fe9['on']('open',_0xfd2e18);_0x160fe9['on'](_0xbf70('0x28'),_0x2a6e0e);_0x160fe9['on'](_0xbf70('0x13'),_0x5218b7);_0x160fe9['on'](_0xbf70('0x15'),_0x3e4879);});};
\ No newline at end of file
+var _0xf566=['lodash','../../../../../../config/logger','agi','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','createHash','sha1','update','digest','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','close','EOS','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','error','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','bluebird'];(function(_0x3c0dcc,_0x18c419){var _0x1a224c=function(_0x238ae7){while(--_0x238ae7){_0x3c0dcc['push'](_0x3c0dcc['shift']());}};_0x1a224c(++_0x18c419);}(_0xf566,0x1eb));var _0x6f56=function(_0x4fa97c,_0x4aa6ab){_0x4fa97c=_0x4fa97c-0x0;var _0x518c7f=_0xf566[_0x4fa97c];return _0x518c7f;};'use strict';var BPromise=require(_0x6f56('0x0'));var _=require(_0x6f56('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require('crypto');var logger=require(_0x6f56('0x2'))(_0x6f56('0x3'));module[_0x6f56('0x4')]=function(_0x471767,_0x5eaf24,_0x3c0513,_0xca94a2){return new BPromise(function(_0x2bf730,_0x300267){logger[_0x6f56('0x5')](_0x6f56('0x6'),_0xca94a2||_0x6f56('0x7'));var _0x375ed9=new WebSocket(_0xca94a2||_0x6f56('0x7'),{'perMessageDeflate':![]});var _0x37138c='';var _0x5d4443='0';var _0x1b503e='1';var _0x3d8876='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x22394c(_0x19249f){var _0x543675=crypto[_0x6f56('0x8')](_0x6f56('0x9'));_0x543675[_0x6f56('0xa')](_0x19249f);return _0x543675[_0x6f56('0xb')]('hex');}function _0x56d9cd(){try{logger[_0x6f56('0x5')](_0x6f56('0xc'));var _0x11699a=moment()[_0x6f56('0xd')]();var _0x36b009=_0x22394c(_0x11699a+_0x5eaf24+_0x3c0513);_0x375ed9[_0x6f56('0xe')](JSON[_0x6f56('0xf')]({'appID':_0x5eaf24,'timestamp':_0x11699a,'appKey':_0x36b009}));var _0x2340f9=fs['createReadStream'](_0x471767);_0x2340f9['on']('data',function(_0x63b318){_0x375ed9[_0x6f56('0xe')](_0x63b318);});_0x2340f9['on'](_0x6f56('0x10'),function(){_0x375ed9['send'](_0x6f56('0x11'));});}catch(_0x4ba29e){logger['error']('Tilde\x20ASR\x20send\x20error',JSON[_0x6f56('0xf')](_0x4ba29e));_0x375ed9[_0x6f56('0x12')]();}}function _0x334925(_0x7d7518){try{if(_0x7d7518){var _0x21c842=JSON[_0x6f56('0x13')](_0x7d7518);switch(_0x21c842[_0x6f56('0x14')]){case 0x0:if(_0x21c842[_0x6f56('0x15')]){if(_0x21c842[_0x6f56('0x15')][_0x6f56('0x16')]){logger[_0x6f56('0x5')](_0x6f56('0x17'),JSON['stringify'](_0x21c842[_0x6f56('0x15')]['hypotheses']));_0x37138c=_0x21c842[_0x6f56('0x15')][_0x6f56('0x18')][0x0][_0x6f56('0x19')];_0x5d4443=_0x21c842[_0x6f56('0x15')][_0x6f56('0x18')][0x0][_0x6f56('0x1a')];_0x1b503e='0';_0x3d8876=_0x6f56('0x1b');_0x375ed9[_0x6f56('0x12')]();}}break;case 0x1:logger[_0x6f56('0x5')](_0x6f56('0x1c'));_0x1b503e='1';_0x3d8876='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0x6f56('0x5')](_0x6f56('0x1d'));_0x1b503e='2';_0x3d8876='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x6f56('0x5')](_0x6f56('0x1e'));_0x1b503e='9';_0x3d8876='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0x6f56('0x5')](_0x6f56('0x1f'));_0x1b503e='10';_0x3d8876='Authentication\x20failed.';break;case 0xb:logger[_0x6f56('0x5')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x1b503e='11';_0x3d8876=_0x6f56('0x20');}}}catch(_0x190e91){logger[_0x6f56('0x21')](_0x6f56('0x22'),JSON[_0x6f56('0xf')](_0x190e91));_0x375ed9[_0x6f56('0x12')]();}}function _0x4af863(){logger[_0x6f56('0x5')](_0x6f56('0x23'));_0x2bf730({'transcript':_0x37138c,'confidence':_0x5d4443,'status':_0x1b503e,'status_message':_0x3d8876});}function _0x3d74b9(_0x8427a9){logger[_0x6f56('0x21')](_0x6f56('0x24'));if(!_[_0x6f56('0x25')](_0x8427a9)){logger[_0x6f56('0x21')](_[_0x6f56('0x26')](_0x8427a9)?JSON[_0x6f56('0xf')](_0x8427a9):_0x8427a9);}}_0x375ed9['on'](_0x6f56('0x27'),_0x56d9cd);_0x375ed9['on'](_0x6f56('0x28'),_0x334925);_0x375ed9['on'](_0x6f56('0x10'),_0x4af863);_0x375ed9['on'](_0x6f56('0x21'),_0x3d74b9);});};
\ No newline at end of file
index 77f76fc..a891685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90ce=['exports'];(function(_0xf7ff4,_0x543a19){var _0x554e6a=function(_0x4b8192){while(--_0x4b8192){_0xf7ff4['push'](_0xf7ff4['shift']());}};_0x554e6a(++_0x543a19);}(_0x90ce,0x1ae));var _0xe90c=function(_0x564821,_0x4d037e){_0x564821=_0x564821-0x0;var _0x2b604d=_0x90ce[_0x564821];return _0x2b604d;};var asr=require('./asr');module[_0xe90c('0x0')]={'asr':asr};
\ No newline at end of file
+var _0x3645=['./asr'];(function(_0x52511e,_0x26b9d7){var _0xdb5a7b=function(_0xb6b5e4){while(--_0xb6b5e4){_0x52511e['push'](_0x52511e['shift']());}};_0xdb5a7b(++_0x26b9d7);}(_0x3645,0xa8));var _0x5364=function(_0x2601b4,_0x315e78){_0x2601b4=_0x2601b4-0x0;var _0x3e3661=_0x3645[_0x2601b4];return _0x3e3661;};var asr=require(_0x5364('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
index 4276392..d96a4c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa988=['E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','connection','code','close','nextTick','inherits','exports','util','net','EventEmitter','./error','./channel','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listen','listening'];(function(_0x475c65,_0x5c1a59){var _0x24e281=function(_0x9d980){while(--_0x9d980){_0x475c65['push'](_0x475c65['shift']());}};_0x24e281(++_0x5c1a59);}(_0xa988,0x11a));var _0x8a98=function(_0x1312a2,_0x21d2ea){_0x1312a2=_0x1312a2-0x0;var _0x43ea4f=_0xa988[_0x1312a2];return _0x43ea4f;};'use strict';var util=require(_0x8a98('0x0'));var net=require(_0x8a98('0x1'));var EventEmitter=require('events')[_0x8a98('0x2')];var AGIError=require(_0x8a98('0x3'));var AGIChannel=require(_0x8a98('0x4'));var AGIServer=function(_0x54c035,_0x2a5266,_0x228a0c){var _0x2d0bd0=this,_0x54c035=_0x54c035||0x11dd,_0x2a5266=_0x2a5266||'127.0.0.1',_0x1c1ce7=null,_0x1dda2f=0x0;EventEmitter[_0x8a98('0x5')](_0x2d0bd0);function _0x2dcd9e(){if(!_0x54c035){_0x2d0bd0[_0x8a98('0x6')](_0x8a98('0x7'),new AGIError(_0x8a98('0x8')));return![];}_0x1c1ce7=net[_0x8a98('0x9')]();_0x1c1ce7[_0x8a98('0xa')](_0x54c035,_0x2a5266);_0x1c1ce7['on']('listening',function(){_0x2d0bd0[_0x8a98('0x6')](_0x8a98('0xb'));});_0x1c1ce7['on']('connection',function(_0x536570){_0x1c1ce7['getConnections'](function(_0x1e6620,_0x356562){if(_0x1e6620){_0x2d0bd0['emit'](_0x8a98('0x7'),new AGIError(_0x8a98('0xc'),_0x1e6620));}else if(_0x228a0c&&_0x228a0c<0x0){_0x2d0bd0[_0x8a98('0x6')]('error',new AGIError(_0x8a98('0xd')));_0x536570[_0x8a98('0xe')]();}else if(_0x228a0c&&_0x228a0c>0x0&&_0x228a0c<_0x356562){_0x1dda2f+=0x1;_0x2d0bd0[_0x8a98('0x6')](_0x8a98('0x7'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x1dda2f));_0x536570[_0x8a98('0xe')]();}else{var _0x42b86f=new AGIChannel(_0x536570);_0x42b86f['on']('ready',function(){_0x2d0bd0[_0x8a98('0x6')](_0x8a98('0xf'),_0x42b86f);});}});});_0x1c1ce7['on'](_0x8a98('0x7'),function(_0x4f4927){_0x2d0bd0[_0x8a98('0x6')](_0x8a98('0x7'),new AGIError(_0x8a98('0xc'),_0x4f4927[_0x8a98('0x10')]));});_0x1c1ce7['on'](_0x8a98('0x11'),function(){_0x2d0bd0[_0x8a98('0x6')](_0x8a98('0x11'),new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x8a98('0x12')](function(){_0x2dcd9e();});};util[_0x8a98('0x13')](AGIServer,EventEmitter);module[_0x8a98('0x14')]=function(_0x3ec562,_0x43a4e7,_0x50a1eb){return new AGIServer(_0x3ec562,_0x43a4e7,_0x50a1eb);};
\ No newline at end of file
+var _0xc912=['connection','getConnections','E_AGI_SERVER_ERROR','destroy','E_AGI_SERVER_MAXCONNECTION','code','close','nextTick','inherits','util','net','./error','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listen','listening'];(function(_0x359551,_0x260321){var _0xefcb70=function(_0x2a25da){while(--_0x2a25da){_0x359551['push'](_0x359551['shift']());}};_0xefcb70(++_0x260321);}(_0xc912,0x185));var _0x2c91=function(_0x5eb73d,_0x406ede){_0x5eb73d=_0x5eb73d-0x0;var _0x464a1f=_0xc912[_0x5eb73d];return _0x464a1f;};'use strict';var util=require(_0x2c91('0x0'));var net=require(_0x2c91('0x1'));var EventEmitter=require('events')['EventEmitter'];var AGIError=require(_0x2c91('0x2'));var AGIChannel=require('./channel');var AGIServer=function(_0x4dcb84,_0x5ded93,_0x2ffbb5){var _0x43b90c=this,_0x4dcb84=_0x4dcb84||0x11dd,_0x5ded93=_0x5ded93||_0x2c91('0x3'),_0x54570a=null,_0x12296d=0x0;EventEmitter[_0x2c91('0x4')](_0x43b90c);function _0x217573(){if(!_0x4dcb84){_0x43b90c[_0x2c91('0x5')](_0x2c91('0x6'),new AGIError(_0x2c91('0x7')));return![];}_0x54570a=net[_0x2c91('0x8')]();_0x54570a[_0x2c91('0x9')](_0x4dcb84,_0x5ded93);_0x54570a['on'](_0x2c91('0xa'),function(){_0x43b90c[_0x2c91('0x5')](_0x2c91('0xa'));});_0x54570a['on'](_0x2c91('0xb'),function(_0x4d973f){_0x54570a[_0x2c91('0xc')](function(_0x251b91,_0x3a23ba){if(_0x251b91){_0x43b90c[_0x2c91('0x5')](_0x2c91('0x6'),new AGIError(_0x2c91('0xd'),_0x251b91));}else if(_0x2ffbb5&&_0x2ffbb5<0x0){_0x43b90c[_0x2c91('0x5')](_0x2c91('0x6'),new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x4d973f[_0x2c91('0xe')]();}else if(_0x2ffbb5&&_0x2ffbb5>0x0&&_0x2ffbb5<_0x3a23ba){_0x12296d+=0x1;_0x43b90c[_0x2c91('0x5')](_0x2c91('0x6'),new AGIError(_0x2c91('0xf'),_0x12296d));_0x4d973f[_0x2c91('0xe')]();}else{var _0x155bb7=new AGIChannel(_0x4d973f);_0x155bb7['on']('ready',function(){_0x43b90c[_0x2c91('0x5')](_0x2c91('0xb'),_0x155bb7);});}});});_0x54570a['on'](_0x2c91('0x6'),function(_0x42c7a5){_0x43b90c[_0x2c91('0x5')](_0x2c91('0x6'),new AGIError(_0x2c91('0xd'),_0x42c7a5[_0x2c91('0x10')]));});_0x54570a['on'](_0x2c91('0x11'),function(){_0x43b90c[_0x2c91('0x5')](_0x2c91('0x11'),new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x2c91('0x12')](function(){_0x217573();});};util[_0x2c91('0x13')](AGIServer,EventEmitter);module['exports']=function(_0x4e8d7d,_0x1d656b,_0x428d81){return new AGIServer(_0x4e8d7d,_0x1d656b,_0x428d81);};
\ No newline at end of file
index bcf5e72..39e74e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe033=['MALE','MP3','googleTTS','restAPI','url','method','timeout','number','includes','POST','PUT','toUpperCase','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','computedVariables','sync','render','body','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','googleDialogflowV2','dialogflowV2_project_id','client_email','sestekNDA','ispeechTTS','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_polly_region','Amy','awsLex','aws_secret_access_key','aws_lex_region','aws_bot_name','googleASR','tildeASR','appid','appsecret','uri','clear','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','isPlainObject','recursiveNodeIndex','length','saveRestApiResult','isArray','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','exec','noop','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','Wait\x20%s\x20seconds\x20before\x20answer','wait','answer','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','add','minutes','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','phone','custom_app','application','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','no\x20text\x20configured','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','MRCPSynth','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','Executed\x20command\x20MRCPRecog\x20%s','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','database','odbc_id','no\x20database\x20selected','getSquareOdbc','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','no\x20project_id\x20configured','no\x20client_email\x20configured','private_key','no\x20private_key\x20configured','dialogflowV2_language','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','trunk_id','no\x20trunk\x20selected','trunk_name','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','getdigits','file_id','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','substr','getsecretdigits','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','GOAL\x20%s','goalname','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','beep','NOBEEP','recordFile','intKey','GOOGLE_ASR_%s','tildeasr','no\x20appid\x20configured','no\x20appsecret\x20configured','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20intervals\x20found','IFTIME\x20%s\x20%s','true','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','%s/recordings/%s','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','findBy','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','no\x20find\x20by\x20configured','failure','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','no\x20file\x20audio\x20found','Enter\x20in\x20NOOP\x20(%s)\x20block','output','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','no\x20file\x20audio\x20selected','Executed\x20command\x20%s\x20%s','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','position','record','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','saynumber','sayNumber','sayphonetic','sendMail','no\x20mail\x20account\x20configured','account_id','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','bcc','service','host','port','secure','authentication','auth','pass','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20found','sendSMS\x20message','sms_account_id','Trying\x20SendSMS\x20with\x20account\x20%s','no\x20variable\x20selected','start','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','apiKey','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','exports','path','util','lodash','shelljs','randomstring','mustache','request-promise','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','channel','rpc','mailRpc','prototype','getVariable','getVariableById','name','catch','getVoiceQueue','getVoiceQueueById','then','getSquareProjectById','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','IntervalId','interval','format','%s/sounds/converted/%s','getQueryOdbc','open','error','info','ODBC\x20connection\x20successfully','query','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','priority','accountcode','dnid','file','createSquareMessage','uniqueid','createCmContact','isEmpty','callback_','random','lastName','isNil','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','getPause','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','trim','replace','googleCloudTTS','text','languageCode','en-US'];(function(_0x3c8402,_0x39fc11){var _0xdc50a5=function(_0x5ef939){while(--_0x5ef939){_0x3c8402['push'](_0x3c8402['shift']());}};_0xdc50a5(++_0x39fc11);}(_0xe033,0x161));var _0x3e03=function(_0x29518c,_0x575377){_0x29518c=_0x29518c-0x0;var _0x1cbb29=_0xe033[_0x29518c];return _0x1cbb29;};'use strict';var fs=require('fs');var path=require(_0x3e03('0x0'));var util=require(_0x3e03('0x1'));var _=require(_0x3e03('0x2'));var sh=require(_0x3e03('0x3'));var odbc=require('odbc')();var rs=require(_0x3e03('0x4'));var moment=require('moment');var Mustache=require(_0x3e03('0x5'));var rp=require(_0x3e03('0x6'));var logger=require('../../config/logger')(_0x3e03('0x7'));var config=require(_0x3e03('0x8'));var scripts=require(_0x3e03('0x9'));var FILES_PATH=_0x3e03('0xa');var recursiveMapAttributes=[_0x3e03('0xb'),_0x3e03('0xc')];var verticesWithRetry=[_0x3e03('0xd'),'getdigits','getsecretdigits'];var AGIVertices=function(_0x2d4c9f,_0x4542f7,_0x17eb1a){this[_0x3e03('0xe')]=_0x2d4c9f;this[_0x3e03('0xf')]=_0x4542f7;this[_0x3e03('0x10')]=_0x17eb1a;};AGIVertices[_0x3e03('0x11')][_0x3e03('0x12')]=function(_0x39a545,_0x524eb8){this[_0x3e03('0xf')][_0x3e03('0x13')](_0x39a545)['then'](function(_0x13e56c){_0x524eb8(null,_0x13e56c?_0x13e56c[_0x3e03('0x14')]:![]);})[_0x3e03('0x15')](function(_0x335cab){_0x524eb8(_0x335cab);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x16')]=function(_0x145dac,_0x1830f4){this[_0x3e03('0xf')][_0x3e03('0x17')](_0x145dac)[_0x3e03('0x18')](function(_0x5f499a){_0x1830f4(null,_0x5f499a?_0x5f499a[_0x3e03('0x14')]:![]);})[_0x3e03('0x15')](function(_0x3c8c24){_0x1830f4(_0x3c8c24);});};AGIVertices[_0x3e03('0x11')]['getSquareProject']=function(_0x5400ca,_0x22a22d){this[_0x3e03('0xf')][_0x3e03('0x19')](_0x5400ca)[_0x3e03('0x18')](function(_0x34f4c5){_0x22a22d(null,_0x34f4c5?_0x34f4c5[_0x3e03('0x14')]:![]);})[_0x3e03('0x15')](function(_0x487dcd){_0x22a22d(_0x487dcd);});};AGIVertices[_0x3e03('0x11')]['getSquareOdbc']=function(_0x5a0544,_0x213f66){this[_0x3e03('0xf')][_0x3e03('0x1a')](_0x5a0544)[_0x3e03('0x18')](function(_0x39733e){_0x213f66(null,_0x39733e?_0x39733e[_0x3e03('0x1b')]:![]);})['catch'](function(_0x32a312){_0x213f66(_0x32a312);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x1c')]=function(_0x42df10,_0x50e929){this['rpc'][_0x3e03('0x1d')](_0x42df10)[_0x3e03('0x18')](function(_0x148f4a){_0x50e929(null,_0x148f4a?_0x148f4a[_0x3e03('0x14')]:![]);})[_0x3e03('0x15')](function(_0x3df493){_0x50e929(_0x3df493);});};AGIVertices['prototype'][_0x3e03('0x1e')]=function(_0x3cae21,_0x2df34){this['rpc'][_0x3e03('0x1f')](_0x3cae21)[_0x3e03('0x18')](function(_0xbe5328){_0x2df34(null,_0xbe5328?_0xbe5328[_0x3e03('0x14')]:![]);})['catch'](function(_0x6af631){_0x2df34(_0x6af631);});};AGIVertices['prototype'][_0x3e03('0x20')]=function(_0x712650,_0xda8cd2){var _0x89a75b=this;this[_0x3e03('0xf')]['getSoundById'](_0x712650)[_0x3e03('0x18')](function(_0x4ca8f4){_0xda8cd2(null,_0x4ca8f4?_0x89a75b[_0x3e03('0x21')](_0x4ca8f4[_0x3e03('0x22')]):![]);})['catch'](function(_0x5acbda){_0xda8cd2(_0x5acbda);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x23')]=function(_0x35b018,_0x47f1bf){this['rpc'][_0x3e03('0x24')](_0x35b018)['then'](function(_0x466e81){_0x47f1bf(null,_0x466e81?_0x466e81:![]);})['catch'](function(_0x52e197){_0x47f1bf(_0x52e197);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x25')]=function(_0x25e116,_0x288f99,_0x113b8a){this['mailRpc']['sendMailMessage'](_0x25e116,_0x288f99)[_0x3e03('0x18')](function(){_0x113b8a(null);})[_0x3e03('0x15')](function(_0x3e37b1){_0x113b8a(_0x3e37b1);});};AGIVertices['prototype'][_0x3e03('0x26')]=function(_0x98f22f,_0x55d3a9){this[_0x3e03('0xf')]['getIntervalById'](_0x98f22f)[_0x3e03('0x18')](function(_0x29695d){if(_0x29695d){if(_0x29695d[_0x3e03('0x27')]){_0x55d3a9(null,[_0x29695d[_0x3e03('0x28')]]);}else{_0x55d3a9(null,_['map'](_0x29695d['Intervals'],_0x3e03('0x28')));}}else{_0x55d3a9(null,![]);}})[_0x3e03('0x15')](function(_0x2cf190){_0x55d3a9(_0x2cf190);});};AGIVertices['prototype'][_0x3e03('0x21')]=function(_0x4130a2){return util[_0x3e03('0x29')](_0x3e03('0x2a'),FILES_PATH,_0x4130a2);};AGIVertices[_0x3e03('0x11')][_0x3e03('0x2b')]=function(_0x344872,_0x393acd,_0x3dcfc8){odbc[_0x3e03('0x2c')](_0x344872,function(_0x391ea8){if(_0x391ea8){logger[_0x3e03('0x2d')]('Error\x20getting\x20ODBC\x20connection\x20%s',_0x391ea8);_0x3dcfc8(_0x391ea8);}else{logger[_0x3e03('0x2e')](_0x3e03('0x2f'));odbc[_0x3e03('0x30')](_0x393acd,function(_0x3afc9a,_0x43efed){if(_0x3afc9a){logger[_0x3e03('0x2e')]('Error\x20executing\x20query\x20%s',_0x393acd);_0x3dcfc8(_0x3afc9a);}else{logger[_0x3e03('0x2e')](_0x3e03('0x31'),_0x393acd);odbc[_0x3e03('0x32')](function(_0x2ce2c7){if(_0x2ce2c7){logger[_0x3e03('0x2d')](_0x3e03('0x33'),_0x2ce2c7);}_0x3dcfc8(null,_0x43efed);});}});}});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x34')]=function(_0x1f194e,_0x171f15){this[_0x3e03('0xf')][_0x3e03('0x35')](_0x1f194e)[_0x3e03('0x18')](function(_0x25c68b){_0x171f15(null,_0x25c68b?_0x25c68b:![]);})[_0x3e03('0x15')](function(_0x32e002){_0x171f15(_0x32e002);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x36')]=function(_0x548cde,_0x2b78b2){this['rpc'][_0x3e03('0x36')](_0x548cde)['then'](function(_0x1037c6){_0x2b78b2(null,_0x1037c6);})['catch'](function(_0x4e382b){_0x2b78b2(_0x4e382b);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x37')]=function(_0x4445d0,_0x5b38aa,_0x26c5df){this['rpc']['createSquareDetailsReport']({'uniqueid':this[_0x3e03('0xe')]['uniqueid'],'node':_0x4445d0[_0x3e03('0x38')],'application':_0x4445d0[_0x3e03('0x39')],'data':_0x5b38aa||null,'project_name':this[_0x3e03('0xe')][_0x3e03('0x3a')],'callerid':this[_0x3e03('0xe')][_0x3e03('0x3b')]})[_0x3e03('0x18')](function(_0x23b2c1){if(_0x26c5df){_0x26c5df(null,_0x23b2c1);}})[_0x3e03('0x15')](function(_0x4ac512){if(_0x26c5df){_0x26c5df(_0x4ac512);}});};AGIVertices['prototype'][_0x3e03('0x3c')]=function(_0x7c8de5,_0x19f534,_0x7e6cae,_0x428257){this[_0x3e03('0xf')]['createSquareRecording']({'uniqueid':this[_0x3e03('0xe')]['uniqueid'],'callerid':this[_0x3e03('0xe')][_0x3e03('0x3b')],'calleridname':this[_0x3e03('0xe')][_0x3e03('0x3d')],'context':this[_0x3e03('0xe')][_0x3e03('0x3e')],'extension':this[_0x3e03('0xe')]['extension'],'priority':this['channel'][_0x3e03('0x3f')],'accountcode':this[_0x3e03('0xe')][_0x3e03('0x40')],'dnid':this[_0x3e03('0xe')][_0x3e03('0x41')],'projectName':this[_0x3e03('0xe')][_0x3e03('0x3a')],'saveName':_0x19f534,'filename':_0x7c8de5[_0x3e03('0x42')]||_0x19f534,'savePath':_0x7e6cae})[_0x3e03('0x18')](function(_0x561a5b){_0x428257(null,_0x561a5b);})[_0x3e03('0x15')](function(_0x5b7d05){_0x428257(_0x5b7d05);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x43')]=function(_0x2583d4,_0x5b5e64,_0x1214c4,_0xafbb11,_0xfc2552){this['rpc'][_0x3e03('0x43')]({'uniqueid':this[_0x3e03('0xe')][_0x3e03('0x44')],'body':_0x2583d4,'direction':_0x5b5e64,'providerName':_0x1214c4,'providerResponse':_0xafbb11})[_0x3e03('0x18')](function(_0x318bb4){if(_0xfc2552){_0xfc2552(null,_0x318bb4);}})[_0x3e03('0x15')](function(_0x40a8ab){if(_0xfc2552){_0xfc2552(_0x40a8ab);}});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x45')]=function(_0x274b7f,_0x1ff7ea){this[_0x3e03('0xf')]['createCmContact']({'firstName':_[_0x3e03('0x46')](_0x274b7f[_0x3e03('0x14')])||_['isNil'](_0x274b7f[_0x3e03('0x14')])?_0x3e03('0x47')+Math[_0x3e03('0x48')]():_0x274b7f[_0x3e03('0x14')],'lastName':_['isEmpty'](_0x274b7f[_0x3e03('0x49')])||_[_0x3e03('0x4a')](_0x274b7f[_0x3e03('0x49')])?null:_0x274b7f['lastName'],'phone':_0x274b7f['phone'],'ListId':_0x274b7f[_0x3e03('0x4b')],'scheduledat':_0x274b7f[_0x3e03('0x4c')],'callbackUniqueid':this[_0x3e03('0xe')][_0x3e03('0x44')],'tags':_0x3e03('0x4d'),'description':_0x3e03('0x4e')+_0x274b7f[_0x3e03('0x4c')][_0x3e03('0x4f')](),'priority':_0x274b7f['callback_priority']})[_0x3e03('0x18')](function(_0x300daa){_0x1ff7ea(null,_0x300daa);})[_0x3e03('0x15')](function(_0x259ef0){_0x1ff7ea(_0x259ef0);});};AGIVertices['prototype'][_0x3e03('0x50')]=function(_0x297c84,_0x1e7b16){this[_0x3e03('0xf')]['getPauseById'](_0x297c84)[_0x3e03('0x18')](function(_0x35943c){_0x1e7b16(null,_0x35943c?_0x35943c[_0x3e03('0x14')]:![]);})['catch'](function(_0x2e8577){_0x1e7b16(_0x2e8577);});};AGIVertices['prototype'][_0x3e03('0x51')]=function(_0x22814d,_0x530bd5,_0x60cbf5){var _0x12850a={'role':_0x3e03('0x52')};_0x12850a[_0x22814d]=this[_0x3e03('0xe')][_0x3e03('0x3b')];this[_0x3e03('0xf')]['agentPause'](_0x12850a,_0x530bd5,this[_0x3e03('0xe')][_0x3e03('0x44')])[_0x3e03('0x18')](function(_0x4a4710){_0x60cbf5(null,_['isNil'](_0x4a4710)?![]:!![]);})[_0x3e03('0x15')](function(_0x36397e){logger[_0x3e03('0x2d')](_0x36397e);_0x60cbf5(null,![]);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x53')]=function(_0x46cb16,_0x3cc42f){var _0x16084d={'role':'agent'};_0x16084d[_0x46cb16]=this[_0x3e03('0xe')][_0x3e03('0x3b')];this[_0x3e03('0xf')][_0x3e03('0x53')](_0x16084d)[_0x3e03('0x18')](function(_0x35763b){_0x3cc42f(null,_['isNil'](_0x35763b)?![]:!![]);})[_0x3e03('0x15')](function(_0x3ffd13){logger[_0x3e03('0x2d')](_0x3ffd13);_0x3cc42f(null,![]);});};AGIVertices['prototype'][_0x3e03('0x54')]=function(_0x1b5a1e,_0x417fb6){var _0x4b390a={'role':'agent'};_0x4b390a[_0x1b5a1e]=this[_0x3e03('0xe')]['callerid'];this[_0x3e03('0xf')][_0x3e03('0x54')](_0x4b390a)[_0x3e03('0x18')](function(_0x5000af){_0x417fb6(null,_[_0x3e03('0x4a')](_0x5000af)?![]:!![]);})[_0x3e03('0x15')](function(_0x59f635){logger[_0x3e03('0x2d')](_0x59f635);_0x417fb6(null,![]);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x55')]=function(_0x1b9369,_0x134604){var _0x245084={'role':'agent'};_0x245084[_0x1b9369]=this[_0x3e03('0xe')]['callerid'];var _0x35b079=_0x1b9369!=_0x3e03('0x56')?util[_0x3e03('0x29')](_0x3e03('0x57'),_0x3e03('0x58'),this[_0x3e03('0xe')][_0x3e03('0x3b')]):undefined;this[_0x3e03('0xf')][_0x3e03('0x55')](_0x245084,_0x35b079)[_0x3e03('0x18')](function(_0x502e8a){_0x134604(null,_['isNil'](_0x502e8a)?![]:!![]);})[_0x3e03('0x15')](function(_0x9890f9){logger['error'](_0x9890f9);_0x134604(null,![]);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x59')]=function(_0x1a6584,_0x50e117){sh['exec'](_[_0x3e03('0x5a')](_0x1a6584),function(_0x671703,_0x3acce1){var _0x4de9c7=_0x3acce1[_0x3e03('0x5b')](/(\r\n|\n|\r)/gm,'');_0x50e117(null,_0x4de9c7);});};AGIVertices['prototype']['googleCloudTTS']=function(_0x4fa108,_0xe0cbf7){scripts[_0x3e03('0x5c')](_0x4fa108['apiKey'],_0x4fa108['google_cloud_tts_text_type']||'text',_0x4fa108[_0x3e03('0x5d')],_0x4fa108[_0x3e03('0x5e')]||_0x3e03('0x5f'),_0x4fa108['ssmlGender']||_0x3e03('0x60'),_0x4fa108['audioEncoding']||_0x3e03('0x61'))[_0x3e03('0x18')](function(_0x4f730f){_0xe0cbf7(null,_0x4f730f);})[_0x3e03('0x15')](function(_0x102212){_0xe0cbf7(_0x102212);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x62')]=function(_0x1d9e68,_0x5f1b35){scripts['googleTTS'](_0x1d9e68[_0x3e03('0x5d')],_0x1d9e68['google_tts_language']||'en',0x1)[_0x3e03('0x18')](function(_0xadc73e){_0x5f1b35(null,_0xadc73e);})[_0x3e03('0x15')](function(_0x227a21){_0x5f1b35(_0x227a21);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x63')]=function(_0x150808,_0x63177c){var _0x3f5012={'uri':_0x150808[_0x3e03('0x64')],'method':_0x150808[_0x3e03('0x65')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x150808[_0x3e03('0x66')])===_0x3e03('0x67')&&parseInt(_0x150808['timeout'])>=0x1?parseInt(_0x150808['timeout'])*0x3e8:0x5*0x3e8};if(_[_0x3e03('0x68')]([_0x3e03('0x69'),_0x3e03('0x6a')],_0x3f5012[_0x3e03('0x65')][_0x3e03('0x6b')]())){try{_0x3f5012['body']=_0x150808[_0x3e03('0xc')]?JSON[_0x3e03('0x6c')](_0x150808[_0x3e03('0xc')]):{};}catch(_0x1116da){logger['error'](_0x3e03('0x6d'),_0x1116da);}}try{_0x3f5012[_0x3e03('0x6e')]=_0x150808[_0x3e03('0xb')]?JSON[_0x3e03('0x6c')](_0x150808['rawHeaders']):{};}catch(_0xb11238){logger[_0x3e03('0x2d')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0xb11238);}if(_0x150808[_0x3e03('0x6f')]){try{var _0x5ed00c=require(_0x150808[_0x3e03('0x6f')])[_0x3e03('0x70')](this,_0x3f5012);_0x3f5012['uri']=Mustache[_0x3e03('0x71')](_0x150808['url'],_0x5ed00c,{},['$$','$$']);if(_0x3f5012[_0x3e03('0x6e')]){_0x3f5012[_0x3e03('0x6e')]=JSON[_0x3e03('0x6c')](Mustache[_0x3e03('0x71')](JSON['stringify'](_0x3f5012[_0x3e03('0x6e')]),_0x5ed00c,{},['$$','$$']));}if(_0x3f5012[_0x3e03('0x72')]){_0x3f5012[_0x3e03('0x72')]=JSON[_0x3e03('0x6c')](Mustache[_0x3e03('0x71')](JSON[_0x3e03('0x73')](_0x3f5012['body']),_0x5ed00c,{},['$$','$$']));}}catch(_0x2e3b58){logger[_0x3e03('0x2d')](_0x3e03('0x74'),_0x2e3b58);}}rp(_0x3f5012)[_0x3e03('0x18')](function(_0xf1ffef){var _0x5ccd45={'statusCode':_0xf1ffef[_0x3e03('0x75')]||0xc8,'statusMessage':_0xf1ffef[_0x3e03('0x76')]||'OK','headers':_0xf1ffef[_0x3e03('0x6e')]||{},'body':_0xf1ffef[_0x3e03('0x72')]||{}};_0x63177c(null,_0x5ccd45);})[_0x3e03('0x15')](function(_0xbe04b8){var _0x23f965={'statusCode':_0xbe04b8[_0x3e03('0x75')]||0x1f4,'statusMessage':_0xbe04b8[_0x3e03('0x77')]||_0x3e03('0x78'),'headers':_0xbe04b8[_0x3e03('0x79')]['headers']||{},'body':_0xbe04b8[_0x3e03('0x79')][_0x3e03('0x72')]||{}};_0x63177c(null,_0x23f965);});};AGIVertices['prototype'][_0x3e03('0x7a')]=function(_0x40197e,_0x34f4e7){scripts[_0x3e03('0x7a')](this[_0x3e03('0xe')][_0x3e03('0x44')],_0x40197e[_0x3e03('0x7b')],_0x40197e[_0x3e03('0x5d')],_0x40197e['dialogflow_language']||'en')['then'](function(_0x47d24d){_0x34f4e7(null,_0x47d24d);})[_0x3e03('0x15')](function(_0x5c26c8){_0x34f4e7(_0x5c26c8);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x7c')]=function(_0x2dc7b3,_0x170096){scripts[_0x3e03('0x7c')](this[_0x3e03('0xe')][_0x3e03('0x44')],_0x2dc7b3[_0x3e03('0x7d')],_0x2dc7b3[_0x3e03('0x7e')],_0x2dc7b3['private_key'],_0x2dc7b3[_0x3e03('0x5d')],_0x2dc7b3['dialogflowV2_language']||'en')['then'](function(_0x4b5d39){_0x170096(null,_0x4b5d39);})[_0x3e03('0x15')](function(_0x4aa752){_0x170096(_0x4aa752);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x7f')]=function(_0x239c0b,_0x40dcd1){scripts[_0x3e03('0x7f')](this[_0x3e03('0xe')],_0x239c0b)['then'](function(_0x1a33b3){_0x40dcd1(null,_0x1a33b3);})[_0x3e03('0x15')](function(_0x34bdf3){_0x40dcd1(_0x34bdf3);});};AGIVertices[_0x3e03('0x11')]['ispeechTTS']=function(_0xaaf026,_0x55bfaa){scripts[_0x3e03('0x80')](_0xaaf026[_0x3e03('0x7b')],_0xaaf026[_0x3e03('0x5d')],_0xaaf026['ispeech_tts_language']||'en-US',_0xaaf026['speed'])[_0x3e03('0x18')](function(_0x100ba9){_0x55bfaa(null,_0x100ba9);})['catch'](function(_0x499ac0){_0x55bfaa(_0x499ac0);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x81')]=function(_0x11fe90,_0x2d97db,_0x10b021){scripts[_0x3e03('0x81')](_0x2d97db,_0x11fe90['key'],_0x11fe90[_0x3e03('0x82')]||'en-US',this[_0x3e03('0x83')](_0x11fe90[_0x3e03('0x84')])?_0x11fe90[_0x3e03('0x84')]:undefined)['then'](function(_0x274f74){_0x10b021(null,_0x274f74);})['catch'](function(_0x271b5d){_0x10b021(_0x271b5d);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x85')]=function(_0x3f987d,_0x39f0a1){scripts[_0x3e03('0x85')](_0x3f987d[_0x3e03('0x86')],_0x3f987d['aws_secret_access_key'],_0x3f987d[_0x3e03('0x87')],_0x3f987d['aws_polly_voice']||_0x3e03('0x88'),_0x3f987d[_0x3e03('0x5d')],_0x3f987d['aws_text_type']||_0x3e03('0x5d'))[_0x3e03('0x18')](function(_0x42da12){_0x39f0a1(null,_0x42da12);})[_0x3e03('0x15')](function(_0x14b1cd){_0x39f0a1(_0x14b1cd);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x89')]=function(_0x36b119,_0x1293ae){scripts['awsLex'](this[_0x3e03('0xe')][_0x3e03('0x44')],_0x36b119[_0x3e03('0x86')],_0x36b119[_0x3e03('0x8a')],_0x36b119[_0x3e03('0x8b')],_0x36b119[_0x3e03('0x5d')],_0x36b119[_0x3e03('0x8c')])[_0x3e03('0x18')](function(_0x558241){_0x1293ae(null,_0x558241);})['catch'](function(_0x1c2c3f){_0x1293ae(_0x1c2c3f);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x8d')]=function(_0x2d7ed1,_0x4f03e5,_0x1be073){scripts[_0x3e03('0x8d')](_0x4f03e5,_0x2d7ed1[_0x3e03('0x7b')],_0x2d7ed1['google_asr_language']||_0x3e03('0x5f'))['then'](function(_0x2c8471){_0x1be073(null,_0x2c8471);})[_0x3e03('0x15')](function(_0x4ae61f){_0x1be073(_0x4ae61f);});};AGIVertices['prototype']['tildeASR']=function(_0x5f239f,_0x476dfb,_0x14467d){scripts[_0x3e03('0x8e')](_0x476dfb,_0x5f239f[_0x3e03('0x8f')],_0x5f239f[_0x3e03('0x90')],_0x5f239f[_0x3e03('0x91')])[_0x3e03('0x18')](function(_0xce35e1){_0x14467d(null,_0xce35e1);})[_0x3e03('0x15')](function(_0xd84d5b){_0x14467d(_0xd84d5b);});};AGIVertices[_0x3e03('0x11')][_0x3e03('0x92')]=function(_0x2a05ce){var _0x145528=_[_0x3e03('0x68')](verticesWithRetry,_0x2a05ce['agicommand'])?_0x2a05ce:_[_0x3e03('0x93')](_0x2a05ce);for(var _0x3c425d in _0x145528){if(_0x145528[_0x3e03('0x94')](_0x3c425d)){if(_0x145528[_0x3c425d]&&_[_0x3e03('0x95')](_0x145528[_0x3c425d])){if(_[_0x3e03('0x68')](recursiveMapAttributes,_0x3c425d)){_0x145528[_0x3c425d]=this[_0x3e03('0x96')](_0x145528[_0x3c425d]);}else{_0x145528[_0x3c425d]=this[_0x3e03('0x97')](_0x145528[_0x3c425d]);}}}}return _0x145528;};AGIVertices[_0x3e03('0x11')]['recursiveNodeIndex']=function(_0x5193d1){for(var _0x29fb3b in _0x5193d1){if(_0x5193d1[_0x3e03('0x94')](_0x29fb3b)){if(_[_0x3e03('0x98')](_0x5193d1[_0x29fb3b])){this[_0x3e03('0x99')](_0x5193d1[_0x29fb3b]);}else if(_['isArray'](_0x5193d1[_0x29fb3b])){for(var _0x569b3f=0x0;_0x569b3f<_0x5193d1[_0x29fb3b][_0x3e03('0x9a')];_0x569b3f++){this[_0x3e03('0x99')](_0x5193d1[_0x29fb3b][_0x569b3f]);}}else if(_[_0x3e03('0x95')](_0x5193d1[_0x29fb3b])){_0x5193d1[_0x29fb3b]=this[_0x3e03('0x97')](_0x5193d1[_0x29fb3b]);}}}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x9b')]=function(_0x50d3ce,_0x5b4144){for(var _0x5f362b in _0x50d3ce){if(_0x50d3ce[_0x3e03('0x94')](_0x5f362b)){if(_[_0x3e03('0x98')](_0x50d3ce[_0x5f362b])){if(!_['isEmpty'](_0x50d3ce[_0x5f362b])){this['saveRestApiResult'](_0x50d3ce[_0x5f362b],util[_0x3e03('0x29')]('%s.%s',_0x5b4144,_0x5f362b));}}else if(_[_0x3e03('0x9c')](_0x50d3ce[_0x5f362b])){for(var _0x260ca6=0x0;_0x260ca6<_0x50d3ce[_0x5f362b][_0x3e03('0x9a')];_0x260ca6++){this[_0x3e03('0x9b')](_0x50d3ce[_0x5f362b][_0x260ca6],util[_0x3e03('0x29')](_0x3e03('0x9d'),_0x5b4144,_0x5f362b+'['+_0x260ca6+']'));}}else{if(!_[_0x3e03('0x4a')](_0x50d3ce[_0x5f362b])){this['channel'][_0x3e03('0x9e')](util['format']('%s.%s',_0x5b4144,_0x5f362b),_0x50d3ce[_0x5f362b]);}}}}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x96')]=function(_0x1df022){try{var _0x1b27f5=JSON['parse'](_0x1df022);this['recursiveNodeIndex'](_0x1b27f5);return JSON[_0x3e03('0x73')](_0x1b27f5);}catch(_0xc9db26){return this['replaceAllVariables'](_0x1df022);}};AGIVertices['prototype'][_0x3e03('0x97')]=function(_0x2c9f86){var _0x121937=_0x2c9f86['split']('{');for(var _0x487acf=0x1;_0x487acf<_0x121937['length'];_0x487acf+=0x1){var _0x1a574f=_0x121937[_0x487acf][_0x3e03('0x9f')]('}');if(_0x1a574f['length']>0x1){_0x2c9f86=_0x2c9f86[_0x3e03('0xa0')]('{'+_0x1a574f[0x0]+'}',this['channel']['getVariable'](_0x1a574f[0x0])[_0x3e03('0xa1')]||_0x1a574f[0x0]);}}if(_0x121937[_0x3e03('0x9a')]===0x1){return _0x2c9f86[_0x3e03('0x4f')]();}return this[_0x3e03('0x97')](_0x2c9f86);};AGIVertices['prototype'][_0x3e03('0xa2')]=function(_0x25c4c0,_0x23c05e){var _0x4cbe4e=this['channel'][_0x3e03('0x12')](_0x25c4c0);if(_0x4cbe4e[_0x3e03('0xa3')]===-0x1){return _0x4cbe4e;}logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0xa4'),_0x23c05e,_0x4cbe4e[_0x3e03('0xa1')]));return this[_0x3e03('0xe')][_0x3e03('0x9e')](_0x23c05e,_0x4cbe4e['extra']);};AGIVertices['prototype'][_0x3e03('0x83')]=function(_0x547592){return _0x547592&&_0x547592!=='0'&&_0x547592!=='-1'&&_0x547592!=='';};AGIVertices['prototype'][_0x3e03('0xa5')]=function(_0x7ceea1){this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x7ceea1,'-');_0x7ceea1[_0x3e03('0xa6')]=_0x7ceea1[_0x3e03('0xa5')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x3e03('0x11')][_0x3e03('0xa7')]=function(_0x2dbf2b){logger['info'](util[_0x3e03('0x29')](_0x3e03('0xa8'),_0x2dbf2b[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x2dbf2b['text'])){return this[_0x3e03('0xe')]['noop']('no\x20text\x20configured');}var _0x316b67='\x22'+_0x2dbf2b[_0x3e03('0x5d')]+'\x22';if(this[_0x3e03('0x83')](_0x2dbf2b[_0x3e03('0x79')])){_0x316b67+=','+_0x2dbf2b[_0x3e03('0x79')];}var _0x253813=this[_0x3e03('0xe')][_0x3e03('0xa9')]('MRCPSynth',_0x316b67);if(_0x253813['result']===-0x1){return _0x253813;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xab'),_0x316b67));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xac')]=function(_0x45a296){logger[_0x3e03('0x2e')](util['format'](_0x3e03('0xad'),_0x45a296[_0x3e03('0x38')]));if(!this['isConfigured'](_0x45a296[_0x3e03('0xae')])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0xaf'));}var _0x53ae54=_0x45a296[_0x3e03('0xae')];if(this[_0x3e03('0x83')](_0x45a296[_0x3e03('0x79')])){_0x53ae54+=','+_0x45a296[_0x3e03('0x79')];}var _0x2cfb87=this[_0x3e03('0xe')]['exec'](_0x3e03('0xb0'),_0x53ae54);if(_0x2cfb87['result']===-0x1){return _0x2cfb87;}var _0x47b51c=this[_0x3e03('0xa2')](_0x3e03('0xb1'),_0x3e03('0xb2'));if(_0x47b51c[_0x3e03('0xa3')]===-0x1){return _0x47b51c;}var _0x398b1f=this[_0x3e03('0xa2')]('RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT');if(_0x398b1f['result']===-0x1){return _0x398b1f;}var _0x7dd20f=this[_0x3e03('0xa2')](_0x3e03('0xb3'),_0x3e03('0xb4'));if(_0x7dd20f[_0x3e03('0xa3')]===-0x1){return _0x7dd20f;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('Executed\x20command\x20MRCPRecog\x20%s',_0x53ae54));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x7')]=function(_0x37565f){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0xb5'),_0x37565f[_0x3e03('0x38')]));return this['channel'][_0x3e03('0x7')]([_0x37565f[_0x3e03('0xb6')],_0x37565f[_0x3e03('0xb7')]]);};AGIVertices[_0x3e03('0x11')]['answer']=function(_0x398865){logger['info'](util['format']('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x398865['label']));if(this[_0x3e03('0x83')](_0x398865[_0x3e03('0x66')])){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0xb8'),_0x398865[_0x3e03('0x66')]));var _0x32bfca=this[_0x3e03('0xe')][_0x3e03('0xb9')](_0x398865[_0x3e03('0x66')]);if(_0x32bfca[_0x3e03('0xa3')]===-0x1){return _0x32bfca;}}return this[_0x3e03('0xe')][_0x3e03('0xba')]();};AGIVertices[_0x3e03('0x11')]['callback']=function(_0x3f4162){logger['info'](util[_0x3e03('0x29')](_0x3e03('0xbb'),_0x3f4162[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x3f4162['list_id'])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x3f4162,_0x3e03('0xbc'));}_0x3f4162['scheduledAt']=moment();if(this[_0x3e03('0x83')](_0x3f4162['delay'])){_0x3f4162['scheduledAt']=moment()[_0x3e03('0xbd')](_0x3f4162['delay'],_0x3e03('0xbe'));}if(!this[_0x3e03('0x83')](_0x3f4162[_0x3e03('0xbf')])){_0x3f4162[_0x3e03('0xbf')]=0x2;}this[_0x3e03('0x45')][_0x3e03('0x70')](this,_0x3f4162);return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xc0'),_0x3f4162[_0x3e03('0xc1')],_0x3f4162[_0x3e03('0x4b')],_0x3f4162[_0x3e03('0x4c')]));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xc2')]=function(_0x17e9a8){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x17e9a8[_0x3e03('0x38')]));var _0x14137a=this[_0x3e03('0xe')][_0x3e03('0xa9')](_0x17e9a8[_0x3e03('0xc3')],_0x17e9a8[_0x3e03('0x79')]);if(_0x14137a[_0x3e03('0xa3')]===-0x1){return _0x14137a;}return this['channel']['noop'](util[_0x3e03('0x29')]('Executed\x20command\x20%s\x20%s',_0x17e9a8[_0x3e03('0xc3')],_0x17e9a8[_0x3e03('0x79')]));};AGIVertices[_0x3e03('0x11')]['lumenvoxtts']=function(_0x225ae2){logger['info'](util[_0x3e03('0x29')](_0x3e03('0xc4'),_0x225ae2[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x225ae2['text'])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xc5'));}var _0x4a65a9='\x22'+_0x225ae2[_0x3e03('0x5d')]+'\x22';if(this[_0x3e03('0x83')](_0x225ae2[_0x3e03('0x79')])){_0x4a65a9+=','+_0x225ae2[_0x3e03('0x79')];}var _0x5a67fa=this['channel'][_0x3e03('0xa9')]('MRCPSynth',_0x4a65a9);if(_0x5a67fa[_0x3e03('0xa3')]===-0x1){return _0x5a67fa;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('Executed\x20command\x20MRCPSynth\x20%s',_0x4a65a9));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xc6')]=function(_0xdc1e8d){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0xc7'),_0xdc1e8d[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0xdc1e8d[_0x3e03('0x5d')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xc5'));}var _0x5eb4ec='\x22'+_0xdc1e8d[_0x3e03('0x5d')]+'\x22';if(this[_0x3e03('0x83')](_0xdc1e8d[_0x3e03('0x79')])){_0x5eb4ec+=','+_0xdc1e8d[_0x3e03('0x79')];}var _0x4a14f7=this[_0x3e03('0xe')]['exec'](_0x3e03('0xc8'),_0x5eb4ec);if(_0x4a14f7[_0x3e03('0xa3')]===-0x1){return _0x4a14f7;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xab'),_0x5eb4ec));};AGIVertices['prototype']['lumenvoxasr']=function(_0x42b20d){logger['info'](util['format']('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x42b20d[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x42b20d[_0x3e03('0xae')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0xaf'));}var _0x23a9e7=_0x42b20d[_0x3e03('0xae')];if(this[_0x3e03('0x83')](_0x42b20d[_0x3e03('0x79')])){_0x23a9e7+=','+_0x42b20d['options'];}var _0x38a19c=this[_0x3e03('0xe')][_0x3e03('0xa9')](_0x3e03('0xb0'),_0x23a9e7);if(_0x38a19c['result']===-0x1){return _0x38a19c;}var _0x30764b=this['getAndSetVariable'](_0x3e03('0xb1'),_0x3e03('0xc9'));if(_0x30764b[_0x3e03('0xa3')]===-0x1){return _0x30764b;}var _0x566629=this['getAndSetVariable'](_0x3e03('0xca'),_0x3e03('0xcb'));if(_0x566629[_0x3e03('0xa3')]===-0x1){return _0x566629;}var _0xbae8be=this[_0x3e03('0xa2')](_0x3e03('0xb3'),'LUMENVOX_ASR_INSTANCE');if(_0xbae8be['result']===-0x1){return _0xbae8be;}return this[_0x3e03('0xe')]['noop'](util[_0x3e03('0x29')](_0x3e03('0xcc'),_0x23a9e7));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xcd')]=function(_0x5e34d7){logger['info'](util[_0x3e03('0x29')](_0x3e03('0xce'),_0x5e34d7[_0x3e03('0x38')]));if(!this['isConfigured'](_0x5e34d7[_0x3e03('0xae')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xaf'));}var _0x33c30e=_0x5e34d7['grammar'];if(this[_0x3e03('0x83')](_0x5e34d7[_0x3e03('0x79')])){_0x33c30e+=','+_0x5e34d7[_0x3e03('0x79')];}var _0x6b4083=this[_0x3e03('0xe')][_0x3e03('0xa9')]('MRCPRecog',_0x33c30e);if(_0x6b4083[_0x3e03('0xa3')]===-0x1){return _0x6b4083;}var _0x8126b3=this['getAndSetVariable'](_0x3e03('0xb1'),_0x3e03('0xcf'));if(_0x8126b3[_0x3e03('0xa3')]===-0x1){return _0x8126b3;}var _0x30a856=this[_0x3e03('0xa2')]('RECOG_INPUT()',_0x3e03('0xd0'));if(_0x30a856[_0x3e03('0xa3')]===-0x1){return _0x30a856;}var _0x1d23b2=this[_0x3e03('0xa2')](_0x3e03('0xb3'),'SESTEK_ASR_INSTANCE');if(_0x1d23b2[_0x3e03('0xa3')]===-0x1){return _0x1d23b2;}return this['channel'][_0x3e03('0xaa')](util['format'](_0x3e03('0xcc'),_0x33c30e));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xd1')]=function(_0x19e099){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x19e099[_0x3e03('0x38')]));if(!this['isConfigured'](_0x19e099[_0x3e03('0xd2')])){return this[_0x3e03('0xe')]['error'](_0x19e099,_0x3e03('0xd3'));}var _0x2c0658=this[_0x3e03('0xd4')][_0x3e03('0x70')](this,_0x19e099[_0x3e03('0xd2')]);if(!_0x2c0658){return this['channel'][_0x3e03('0x2d')](_0x19e099,_0x3e03('0xd5'));}if(!this['isConfigured'](_0x19e099[_0x3e03('0x30')])){return this['channel'][_0x3e03('0x2d')](_0x19e099,_0x3e03('0xd6'));}var _0x21fb62=_0x19e099[_0x3e03('0x30')][_0x3e03('0x5b')](/(\r\n|\n|\r)/gm,'\x20');this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xd7'),_0x21fb62));var _0x283beb=this[_0x3e03('0x2b')][_0x3e03('0x70')](this,_0x2c0658,_0x21fb62);this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x19e099,_0x21fb62);if(!this[_0x3e03('0x83')](_0x19e099[_0x3e03('0xd8')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0xd9'));}var _0x18a7b6=this[_0x3e03('0x12')]['sync'](this,_0x19e099[_0x3e03('0xd8')]);if(!_0x18a7b6){return this['channel'][_0x3e03('0x2d')](_0x19e099,_0x3e03('0xda'));}var _0x267e83=this;_0x283beb[_0x3e03('0xdb')](function(_0x190997,_0x58fee8){Object[_0x3e03('0xdc')](_0x190997)['forEach'](function(_0x336b57){_0x267e83['channel'][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0xdd'),_0x18a7b6,_0x58fee8,_0x336b57),_0x190997[_0x336b57]);});});this[_0x3e03('0xe')][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0xde'),_0x18a7b6),_0x283beb[_0x3e03('0x9a')]);return this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0xdf'),_0x18a7b6));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xe0')]=function(_0x5d786c){logger[_0x3e03('0xe1')](util[_0x3e03('0x29')](_0x3e03('0xe2'),_0x5d786c[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x5d786c[_0x3e03('0xe3')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x5d786c,'no\x20user\x20selected');}var _0x4415aa=this[_0x3e03('0x1c')][_0x3e03('0x70')](this,_0x5d786c[_0x3e03('0xe3')]);if(!_0x4415aa){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x5d786c,_0x3e03('0xe4'));}var _0x577102=this[_0x3e03('0xe')][_0x3e03('0xa9')](_0x3e03('0xe5'),[util['format'](_0x3e03('0xe6'),_0x4415aa),_0x5d786c[_0x3e03('0x66')],_0x5d786c[_0x3e03('0xe7')],_0x5d786c[_0x3e03('0x64')]]);if(_0x577102[_0x3e03('0xa3')]===-0x1){return _0x577102;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0xe8'),'DIAL'));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xe9')]=function(_0x3c78de){logger[_0x3e03('0x2e')](util['format'](_0x3e03('0xea'),_0x3c78de[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x3c78de[_0x3e03('0x7b')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xeb'));}if(!this[_0x3e03('0x83')](_0x3c78de[_0x3e03('0x5d')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')]('no\x20text\x20configured');}this['channel'][_0x3e03('0xec')]=!![];this[_0x3e03('0x37')](_0x3c78de);this[_0x3e03('0x43')](_0x3c78de[_0x3e03('0x5d')],'in','','');this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xed'),_0x3c78de[_0x3e03('0x5d')]));var _0x286b9d=this[_0x3e03('0x7a')][_0x3e03('0x70')](this,_0x3c78de);if(_0x286b9d){for(var _0x7d3291 in _0x286b9d){if(_0x286b9d['hasOwnProperty'](_0x7d3291)){this['channel'][_0x3e03('0x9e')](util['format'](_0x3e03('0xee'),_0x7d3291[_0x3e03('0x6b')]()),_0x286b9d[_0x7d3291]);}}this[_0x3e03('0x43')](_0x286b9d[_0x3e03('0xef')],_0x3e03('0xf0'),_0x3e03('0xe9'),'');return this['channel'][_0x3e03('0xaa')](util[_0x3e03('0x29')]('Dialogflow\x20Result\x20%s',_0x286b9d[_0x3e03('0xef')]));}return this[_0x3e03('0xe')]['error'](_0x3c78de,'Dialogflow\x20is\x20unreachable');};AGIVertices['prototype']['dialogflowV2']=function(_0x66e0e9){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x66e0e9[_0x3e03('0x38')]));if(!this['isConfigured'](_0x66e0e9['dialogflowV2_project_id'])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0xf1'));}if(!this[_0x3e03('0x83')](_0x66e0e9[_0x3e03('0x7e')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0xf2'));}if(!this[_0x3e03('0x83')](_0x66e0e9[_0x3e03('0xf3')])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0xf4'));}if(!this['isConfigured'](_0x66e0e9[_0x3e03('0xf5')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0xf6'));}if(!this[_0x3e03('0x83')](_0x66e0e9[_0x3e03('0x5d')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')]('no\x20text\x20configured');}this[_0x3e03('0xe')][_0x3e03('0xec')]=!![];this[_0x3e03('0x37')](_0x66e0e9);this[_0x3e03('0x43')](_0x66e0e9['text'],'in','','');this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0xf7'),_0x66e0e9[_0x3e03('0x5d')]));var _0x4f78c1=this[_0x3e03('0x7c')][_0x3e03('0x70')](this,_0x66e0e9);if(_0x4f78c1){for(var _0x143127 in _0x4f78c1){if(_0x4f78c1[_0x3e03('0x94')](_0x143127)){if(_0x143127!==_0x3e03('0xf8')){this[_0x3e03('0xe')][_0x3e03('0x9e')](util[_0x3e03('0x29')]('DIALOGFLOW_%s',_0x143127[_0x3e03('0x6b')]()),_0x4f78c1[_0x143127]);}}}this[_0x3e03('0x43')](_0x4f78c1[_0x3e03('0xef')],_0x3e03('0xf0'),'dialogflowV2',_0x4f78c1[_0x3e03('0xf8')]);return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xf9'),_0x4f78c1['speech']));}return this['channel'][_0x3e03('0x2d')](_0x66e0e9,_0x3e03('0xfa'));};AGIVertices[_0x3e03('0x11')][_0x3e03('0xfb')]=function(_0x2a7800){logger['info'](util[_0x3e03('0x29')](_0x3e03('0xfc'),_0x2a7800[_0x3e03('0x38')]));if(!this['isConfigured'](_0x2a7800[_0x3e03('0xfd')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xfe'));}if(!this['isConfigured'](_0x2a7800[_0x3e03('0xff')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0x100'));}if(!this[_0x3e03('0x83')](_0x2a7800[_0x3e03('0x101')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0x102'));}if(!this[_0x3e03('0x83')](_0x2a7800[_0x3e03('0x103')])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0xc5'));}this[_0x3e03('0xe')]['bot']=!![];this['createSquareDetailsReport'](_0x2a7800);this[_0x3e03('0x43')](_0x2a7800[_0x3e03('0x5d')],'in','','');this[_0x3e03('0xe')]['noop'](util['format'](_0x3e03('0x104'),_0x2a7800[_0x3e03('0x5d')]));var _0x531534=this[_0x3e03('0x7f')][_0x3e03('0x70')](this,_0x2a7800);if(_0x531534){for(var _0x34e9c in _0x531534){if(_0x531534[_0x3e03('0x94')](_0x34e9c)){this[_0x3e03('0xe')][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0x105'),_0x34e9c[_0x3e03('0x6b')]()),_0x531534[_0x34e9c]);}}this[_0x3e03('0x43')](_0x531534[_0x3e03('0xef')],'out',_0x3e03('0xfb'),'');if(_0x531534['audiofile']){this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x106'),_0x531534['audiofile']));var _0x52888b=this[_0x3e03('0xe')][_0x3e03('0x107')](_0x531534['audiofile']);try{fs[_0x3e03('0x108')](_0x531534['audiofile']+_0x3e03('0x109'));}catch(_0x50cb87){logger[_0x3e03('0x2d')](_0x50cb87);}return _0x52888b;}else{return this['channel']['noop'](util[_0x3e03('0x29')](_0x3e03('0x10a'),_0x531534['speech']));}}return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x2a7800,_0x3e03('0x10b'));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x10c')]=function(_0x4b5c4c){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20END\x20(%s)\x20block',_0x4b5c4c['label']));return this[_0x3e03('0xe')][_0x3e03('0xaa')]('end');};AGIVertices[_0x3e03('0x11')]['ext_dial']=function(_0x1584eb){logger['info'](util['format']('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x1584eb[_0x3e03('0x38')]));var _0x216db9='';if(_0x1584eb[_0x3e03('0x10d')]){if(!this[_0x3e03('0x83')](_0x1584eb['trunk_id'])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x1584eb,_0x3e03('0x10e'));}else{var _0x599363=parseInt(_0x1584eb[_0x3e03('0x10d')],0xa);if(isNaN(_0x599363)){_0x216db9=_0x1584eb[_0x3e03('0x10d')];}else{_0x216db9=this[_0x3e03('0x1e')][_0x3e03('0x70')](this,_0x1584eb['trunk_id']);if(!_0x216db9){return this['channel']['error'](_0x1584eb,'no\x20trunk\x20found');}}}}else if(_0x1584eb[_0x3e03('0x10f')]){_0x216db9=_0x1584eb[_0x3e03('0x10f')];}else{return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x1584eb,'no\x20trunk\x20selected');}var _0x45b1c8=this['channel'][_0x3e03('0xa9')](_0x3e03('0xe5'),[util[_0x3e03('0x29')]('SIP/%s/%s',_0x216db9,_0x1584eb[_0x3e03('0xc1')]),_0x1584eb[_0x3e03('0x66')],_0x1584eb[_0x3e03('0xe7')],_0x1584eb[_0x3e03('0x64')]]);if(_0x45b1c8['result']===-0x1){return _0x45b1c8;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0xe8'),_0x3e03('0xe5')));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x110')]=function(_0x41edec){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x111'),_0x41edec[_0x3e03('0x38')]));return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0x110'));};AGIVertices['prototype'][_0x3e03('0x112')]=function(_0x47ab32){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x47ab32[_0x3e03('0x38')]));if(_0x47ab32[_0x3e03('0xa6')]===0x0){return this[_0x3e03('0xa5')](_0x47ab32);}_0x47ab32['retry']-=0x1;if(!this[_0x3e03('0x83')](_0x47ab32[_0x3e03('0x113')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x47ab32,'no\x20file\x20audio\x20selected');}var _0x210998=this[_0x3e03('0x20')][_0x3e03('0x70')](this,_0x47ab32[_0x3e03('0x113')]);if(!_0x210998){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x47ab32,'no\x20file\x20audio\x20found');}if(!this['isConfigured'](_0x47ab32[_0x3e03('0xd8')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x4f3e93=this['channel'][_0x3e03('0x114')](_0x210998,_0x47ab32[_0x3e03('0x115')],_0x47ab32[_0x3e03('0x116')]);var _0x3ffdf9=_0x4f3e93[_0x3e03('0xa3')]?_0x4f3e93[_0x3e03('0xa3')][_0x3e03('0x4f')]():'';logger[_0x3e03('0x2e')](_0x3e03('0x117'),JSON[_0x3e03('0x73')](_0x4f3e93));if(_0x4f3e93[_0x3e03('0xa3')]===-0x1){this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x47ab32,_0x3ffdf9);return _0x4f3e93;}else if(_0x4f3e93['extra']==='timeout'){_0x4f3e93[_0x3e03('0xa3')]=_0x3ffdf9['length']>=parseInt(_0x47ab32['mindigit'])?'x':'i';}else{_0x4f3e93[_0x3e03('0xa3')]=_0x3ffdf9[_0x3e03('0x9a')]>=parseInt(_0x47ab32[_0x3e03('0x118')])&&_0x3ffdf9[_0x3e03('0x9a')]<=parseInt(_0x47ab32[_0x3e03('0x116')])?'x':'i';}var _0x4427d3=this[_0x3e03('0x12')][_0x3e03('0x70')](this,_0x47ab32[_0x3e03('0xd8')]);if(!_0x4427d3){return this[_0x3e03('0xe')]['error'](_0x47ab32,'no\x20variable\x20found');}this['channel'][_0x3e03('0x9e')](_0x4427d3,_0x3ffdf9);if(this['isConfigured'](_0x47ab32[_0x3e03('0x119')])){var _0x46de93=parseInt(_0x47ab32['hiddendigitsnum'],0xa);var _0x347bd1=rs[_0x3e03('0x11a')]({'charset':'*','length':_0x46de93});var _0x17d84e=_0x3ffdf9[_0x3e03('0x9a')];if(_0x17d84e>0x0){if(_0x17d84e>_0x46de93){this['createSquareDetailsReport']['sync'](this,_0x47ab32,_0x47ab32[_0x3e03('0x11b')]==='first'?_0x347bd1+_0x3ffdf9[_0x3e03('0x11c')](_0x46de93):_0x3ffdf9[_0x3e03('0x11c')](0x0,_0x17d84e-_0x46de93)+_0x347bd1);}else{this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x47ab32,rs['generate']({'charset':'*','length':_0x17d84e}));}}else{this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x47ab32,'');}}else{this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x47ab32,_0x3ffdf9);}return _0x4f3e93;};AGIVertices['prototype'][_0x3e03('0x11d')]=function(_0x1895bc){logger['info'](util['format']('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x1895bc[_0x3e03('0x38')]));return this[_0x3e03('0x112')](_0x1895bc);};AGIVertices[_0x3e03('0x11')][_0x3e03('0x11e')]=function(_0x4c8bf8){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x11f'),_0x4c8bf8[_0x3e03('0x38')]));this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x4c8bf8,_0x4c8bf8['goalname']);return this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0x120'),_0x4c8bf8[_0x3e03('0x121')]));};AGIVertices[_0x3e03('0x11')]['awspolly']=function(_0x1b2e8d){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x122'),_0x1b2e8d[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x1b2e8d[_0x3e03('0x86')])||!this[_0x3e03('0x83')](_0x1b2e8d[_0x3e03('0x8a')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0x123'));}if(!this['isConfigured'](_0x1b2e8d[_0x3e03('0x5d')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')]('no\x20text\x20configured');}this['channel'][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x124'),_0x1b2e8d[_0x3e03('0x5d')]));var _0x299919=this['awsPolly'][_0x3e03('0x70')](this,_0x1b2e8d);if(_0x299919){this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0x125'),_0x299919));var _0x2d20e2=this[_0x3e03('0xe')][_0x3e03('0x107')](_0x299919);try{fs[_0x3e03('0x108')](_0x299919+_0x3e03('0x109'));}catch(_0x19d006){logger[_0x3e03('0x2d')](_0x19d006);}return _0x2d20e2;}return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x1b2e8d,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x3e03('0x11')][_0x3e03('0x126')]=function(_0x472c6f){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x127'),_0x472c6f[_0x3e03('0x38')]));if(!this['isConfigured'](_0x472c6f[_0x3e03('0x86')])||!this[_0x3e03('0x83')](_0x472c6f['aws_secret_access_key'])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0x123'));}if(!this[_0x3e03('0x83')](_0x472c6f['aws_bot_name'])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0x128'));}if(!this['isConfigured'](_0x472c6f[_0x3e03('0x5d')])){return this['channel']['noop']('no\x20text\x20configured');}this['channel'][_0x3e03('0xec')]=!![];this[_0x3e03('0x37')](_0x472c6f);this[_0x3e03('0x43')](_0x472c6f[_0x3e03('0x5d')],'in','','');this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x129'),_0x472c6f[_0x3e03('0x5d')]));var _0x384a20=this[_0x3e03('0x89')]['sync'](this,_0x472c6f);if(_0x384a20){for(var _0x51ffb0 in _0x384a20){if(_0x384a20[_0x3e03('0x94')](_0x51ffb0)&&_[_0x3e03('0x95')](_0x384a20[_0x51ffb0])){this[_0x3e03('0xe')][_0x3e03('0x9e')](util['format']('AWS_LEX_%s',_0x51ffb0[_0x3e03('0x6b')]()),_0x384a20[_0x51ffb0]);}}if(_[_0x3e03('0x4a')](_0x384a20[_0x3e03('0x77')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')]('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this[_0x3e03('0x43')](_0x384a20[_0x3e03('0x77')],_0x3e03('0xf0'),_0x3e03('0x12a'),'');return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x12b'),_0x384a20[_0x3e03('0x77')]));}}return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x472c6f,_0x3e03('0x12c'));};AGIVertices['prototype'][_0x3e03('0x12d')]=function(_0x141254){logger['info'](util[_0x3e03('0x29')](_0x3e03('0x12e'),_0x141254[_0x3e03('0x38')],_0x141254[_0x3e03('0x66')]));if(!this[_0x3e03('0x83')](_0x141254[_0x3e03('0x7b')])){return this['channel'][_0x3e03('0xaa')]('no\x20key\x20configured');}var _0x420e53=_0x3e03('0x12f');var _0x1443cd=util['format']('%s/recordings/%s',FILES_PATH,rs[_0x3e03('0x11a')](0x4));var _0x5aa30e=util[_0x3e03('0x29')]('%s.%s',_0x1443cd,_0x420e53);var _0x3c0ae=!![];if(_0x141254[_0x3e03('0x130')]===_0x3e03('0x131')){_0x3c0ae=![];}var _0x5a77d3=this[_0x3e03('0xe')][_0x3e03('0x132')](_0x1443cd,_0x420e53,_0x141254[_0x3e03('0x133')],_0x141254[_0x3e03('0x66')],undefined,_0x3c0ae);if(_0x5a77d3[_0x3e03('0xa3')]!==-0x1){this['channel'][_0x3e03('0xaa')](util[_0x3e03('0x29')]('google\x20%s\x20file\x20created',_0x5aa30e));var _0x26a9c0=this[_0x3e03('0x8d')][_0x3e03('0x70')](this,_0x141254,_0x5aa30e);if(_0x26a9c0){for(var _0x22ec6b in _0x26a9c0){if(_0x26a9c0[_0x3e03('0x94')](_0x22ec6b)){this[_0x3e03('0xe')][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0x134'),_0x22ec6b[_0x3e03('0x6b')]()),_0x26a9c0[_0x22ec6b]);}}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('GoogleASR\x20Result\x20%s',JSON['stringify'](_0x26a9c0)));}}return _0x5a77d3;};AGIVertices['prototype'][_0x3e03('0x135')]=function(_0x4aca82){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20TILDEASR\x20(%s)\x20block',_0x4aca82[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x4aca82['appid'])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0x136'));}if(!this[_0x3e03('0x83')](_0x4aca82[_0x3e03('0x90')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0x137'));}var _0x201a36=_0x3e03('0x12f');var _0x322adf=util['format']('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x4857ca=util[_0x3e03('0x29')](_0x3e03('0x9d'),_0x322adf,_0x201a36);var _0x22c3fe=!![];if(_0x4aca82['beep']===_0x3e03('0x131')){_0x22c3fe=![];}var _0x5e4f04=this[_0x3e03('0xe')][_0x3e03('0x132')](_0x322adf,_0x201a36,_0x4aca82['intKey'],_0x4aca82[_0x3e03('0x66')],undefined,_0x22c3fe);if(_0x5e4f04[_0x3e03('0xa3')]!==-0x1){this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x138'),_0x4857ca));var _0x34667f=this[_0x3e03('0x8e')]['sync'](this,_0x4aca82,_0x4857ca);if(_0x34667f){for(var _0x194a2e in _0x34667f){if(_0x34667f[_0x3e03('0x94')](_0x194a2e)){this['channel'][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0x139'),_0x194a2e[_0x3e03('0x6b')]()),_0x34667f[_0x194a2e]);}}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x13a'),JSON[_0x3e03('0x73')](_0x34667f)));}}return _0x5e4f04;};AGIVertices[_0x3e03('0x11')]['gotoc']=function(_0x5c879b){logger['info'](util['format'](_0x3e03('0x13b'),_0x5c879b[_0x3e03('0x38')]));return this[_0x3e03('0xe')][_0x3e03('0x13c')](_0x5c879b['context'],_0x5c879b['extension'],_0x5c879b[_0x3e03('0x3f')]);};AGIVertices['prototype'][_0x3e03('0x13d')]=function(_0x3c8e7d){logger['info'](util[_0x3e03('0x29')](_0x3e03('0x13e'),_0x3c8e7d['label']));if(!this['isConfigured'](_0x3c8e7d[_0x3e03('0x13f')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x3c8e7d,_0x3e03('0x140'));}try{var _0x4e02eb=eval(_0x3c8e7d[_0x3e03('0x13f')])?'true':_0x3e03('0x141');this['channel']['noop'](util[_0x3e03('0x29')](_0x3e03('0x142'),_0x3c8e7d[_0x3e03('0x13f')],_0x4e02eb));return{'code':0xc8,'result':_0x4e02eb};}catch(_0x303c72){return{'code':0xc8,'result':'false'};}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x143')]=function(_0xd88c20){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x144'),_0xd88c20[_0x3e03('0x38')]));if(!this['isConfigured'](_0xd88c20['interval_id'])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0xd88c20,'no\x20interval\x20configured');}var _0x441fd6=this[_0x3e03('0x26')][_0x3e03('0x70')](this,_0xd88c20[_0x3e03('0x145')]);if(!_0x441fd6){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0xd88c20,_0x3e03('0x146'));}for(var _0x61a3e3=0x0;_0x61a3e3<_0x441fd6[_0x3e03('0x9a')];_0x61a3e3+=0x1){var _0x56b9e6=this['channel']['getVariable'](util[_0x3e03('0x29')]('IFTIME(%s?true:false)',_0x441fd6[_0x61a3e3]));if(_0x56b9e6[_0x3e03('0xa3')]===-0x1){return _0x56b9e6;}logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x147'),_0x441fd6[_0x61a3e3],_0x56b9e6[_0x3e03('0xa1')]));if(_0x56b9e6[_0x3e03('0xa1')]===_0x3e03('0x148')){logger['info'](util['format'](_0x3e03('0x147'),_0x441fd6[_0x61a3e3],_0x3e03('0x148')));this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x147'),_0x441fd6[_0x61a3e3],_0x3e03('0x148')));return{'code':0xc8,'result':_0x3e03('0x148')};}else{logger['info'](util[_0x3e03('0x29')]('IFTIME\x20%s\x20%s',_0x441fd6[_0x61a3e3],_0x3e03('0x141')));this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('IFTIME\x20%s\x20%s',_0x441fd6[_0x61a3e3],'false'));}}return{'code':0xc8,'result':_0x3e03('0x141')};};AGIVertices[_0x3e03('0x11')][_0x3e03('0x149')]=function(_0x383287){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x14a'),_0x383287[_0x3e03('0x38')]));return this[_0x3e03('0xe')]['hangup']();};AGIVertices[_0x3e03('0x11')]['ispeechasr']=function(_0x59314d){logger['info'](util['format'](_0x3e03('0x14b'),_0x59314d[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x59314d['key'])){return this['channel'][_0x3e03('0xaa')]('no\x20key\x20configured');}var _0x58d0b5=_0x3e03('0x12f');var _0x1f9876=util['format'](_0x3e03('0x14c'),FILES_PATH,rs['generate'](0x4));var _0x9cb7f8=util[_0x3e03('0x29')](_0x3e03('0x9d'),_0x1f9876,_0x58d0b5);var _0x1b5aa8=!![];if(_0x59314d[_0x3e03('0x130')]===_0x3e03('0x131')){_0x1b5aa8=![];}var _0x139603=this[_0x3e03('0xe')]['recordFile'](_0x1f9876,_0x58d0b5,_0x59314d[_0x3e03('0x133')],_0x59314d[_0x3e03('0x66')],undefined,_0x1b5aa8);if(_0x139603[_0x3e03('0xa3')]!==-0x1){this['channel']['noop'](util['format'](_0x3e03('0x14d'),_0x9cb7f8));var _0x58aa11=this[_0x3e03('0x81')][_0x3e03('0x70')](this,_0x59314d,_0x9cb7f8);if(_0x58aa11){for(var _0x5b2c2e in _0x58aa11){if(_0x58aa11['hasOwnProperty'](_0x5b2c2e)){this[_0x3e03('0xe')][_0x3e03('0x9e')](util['format']('ISPEECH_ASR_%s',_0x5b2c2e[_0x3e03('0x6b')]()),_0x58aa11[_0x5b2c2e]);}}return this[_0x3e03('0xe')]['noop'](util['format'](_0x3e03('0x14e'),JSON[_0x3e03('0x73')](_0x58aa11)));}}return _0x139603;};AGIVertices[_0x3e03('0x11')]['ispeechtts']=function(_0x3313be){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x14f'),_0x3313be[_0x3e03('0x38')]));if(!this['isConfigured'](_0x3313be[_0x3e03('0x7b')])){return this[_0x3e03('0xe')]['noop']('no\x20key\x20configured');}if(!this[_0x3e03('0x83')](_0x3313be[_0x3e03('0x5d')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xc5'));}this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x150'),_0x3313be['text']));var _0x166ced=this[_0x3e03('0x80')][_0x3e03('0x70')](this,_0x3313be);if(_0x166ced){this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x14d'),_0x166ced));var _0x285598=this['channel'][_0x3e03('0x107')](_0x166ced,_0x3313be['intKey']);try{fs[_0x3e03('0x108')](_0x166ced+_0x3e03('0x109'));}catch(_0x4a47ac){logger['error'](_0x4a47ac);}return _0x285598;}return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x3313be,_0x3e03('0x151'));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x152')]=function(_0x51e1ae){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x51e1ae['label']));if(!this[_0x3e03('0x83')](_0x51e1ae[_0x3e03('0x153')])){return this[_0x3e03('0xe')]['error'](_0x51e1ae,'no\x20find\x20by\x20configured');}logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x154'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x51e1ae['findBy']));var _0x3b77b1=this['agentLogin'][_0x3e03('0x70')](this,_0x51e1ae[_0x3e03('0x153')]);if(_0x3b77b1){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x51e1ae[_0x3e03('0x153')]));this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x51e1ae['findBy']));return{'code':0xc8,'result':_0x3e03('0x156')};}else{logger['info'](util[_0x3e03('0x29')](_0x3e03('0x157'),this['channel']['callerid'],_0x51e1ae[_0x3e03('0x153')]));this['channel'][_0x3e03('0xaa')](util[_0x3e03('0x29')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x51e1ae[_0x3e03('0x153')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x158')]=function(_0x3ec1dd){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x3ec1dd[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x3ec1dd['findBy'])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x3ec1dd,_0x3e03('0x159'));}logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x154'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ec1dd[_0x3e03('0x153')]));var _0x1b8938=this['agentLogout'][_0x3e03('0x70')](this,_0x3ec1dd['findBy']);if(_0x1b8938){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ec1dd[_0x3e03('0x153')]));this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ec1dd[_0x3e03('0x153')]));return{'code':0xc8,'result':_0x3e03('0x156')};}else{logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x157'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ec1dd[_0x3e03('0x153')]));this[_0x3e03('0xe')]['noop'](util[_0x3e03('0x29')](_0x3e03('0x157'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ec1dd[_0x3e03('0x153')]));return{'code':0xc8,'result':_0x3e03('0x15a')};}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x15b')]=function(_0x4e7f24){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x15c'),_0x4e7f24[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x4e7f24[_0x3e03('0x15d')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x4e7f24,'no\x20operation\x20configured');}this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x15e'),_0x4e7f24['operation']));var _0x5cb6ab=eval(_0x4e7f24[_0x3e03('0x15d')]);if(!this[_0x3e03('0x83')](_0x4e7f24[_0x3e03('0xd8')])){return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xd9'));}var _0x50141a=this[_0x3e03('0x12')][_0x3e03('0x70')](this,_0x4e7f24[_0x3e03('0xd8')]);if(!_0x50141a){return this[_0x3e03('0xe')]['error'](_0x4e7f24,_0x3e03('0xda'));}if(_['isArray'](_0x5cb6ab)){var _0x4506eb=this;_0x5cb6ab[_0x3e03('0xdb')](function(_0x4cb6dc,_0x18dfeb){_0x4506eb[_0x3e03('0xe')][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0x15f'),_0x50141a,_0x18dfeb),_0x4cb6dc);});return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x160'),_0x50141a));}else{return this[_0x3e03('0xe')][_0x3e03('0x9e')](_0x50141a,_0x5cb6ab);}};AGIVertices['prototype'][_0x3e03('0xd')]=function(_0x2e3596){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x2e3596[_0x3e03('0x38')]));if(_0x2e3596['retry']===0x0){return this[_0x3e03('0xa5')](_0x2e3596);}_0x2e3596[_0x3e03('0xa6')]-=0x1;if(!this['isConfigured'](_0x2e3596[_0x3e03('0x113')])){return this['channel']['error'](_0x2e3596,'no\x20file\x20audio\x20selected');}var _0x3470f9=this[_0x3e03('0x20')][_0x3e03('0x70')](this,_0x2e3596[_0x3e03('0x113')]);if(!_0x3470f9){return this['channel'][_0x3e03('0x2d')](_0x2e3596,_0x3e03('0x161'));}var _0x31e9e7=this[_0x3e03('0xe')]['getData'](_0x3470f9,_0x2e3596[_0x3e03('0x115')],_0x2e3596['digit']);var _0x16a8ec=_0x31e9e7[_0x3e03('0xa3')];if(_0x31e9e7[_0x3e03('0xa3')]===-0x1){this['createSquareDetailsReport']['sync'](this,_0x2e3596,'-1');return _0x31e9e7;}else if(_0x31e9e7[_0x3e03('0xa1')]===_0x3e03('0x66')){_0x31e9e7['result']=_0x31e9e7['result']['length']>0x0?_0x31e9e7[_0x3e03('0xa3')]:'t';}else if(_['isEmpty'](_0x31e9e7[_0x3e03('0xa3')])){_0x31e9e7[_0x3e03('0xa3')]='#';_0x16a8ec='#';}if(!this[_0x3e03('0x83')](_0x2e3596[_0x3e03('0xd8')])){this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0xd9'));}else{var _0x56cf5a=this[_0x3e03('0x12')]['sync'](this,_0x2e3596[_0x3e03('0xd8')]);if(!_0x56cf5a){return this[_0x3e03('0xe')]['error'](_0x2e3596,_0x3e03('0xda'));}this['channel'][_0x3e03('0x9e')](_0x56cf5a,_0x16a8ec);}this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x2e3596,_0x16a8ec);return _0x31e9e7;};AGIVertices['prototype']['noop']=function(_0x239e80){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x162'),_0x239e80[_0x3e03('0x38')]));return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x239e80[_0x3e03('0x163')]||_0x239e80[_0x3e03('0x38')]);};AGIVertices[_0x3e03('0x11')]['pause']=function(_0x11ea70){logger['info'](util['format'](_0x3e03('0x164'),_0x11ea70['label']));if(!this['isConfigured'](_0x11ea70[_0x3e03('0x153')])){return this[_0x3e03('0xe')]['error'](_0x11ea70,_0x3e03('0x159'));}logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x11ea70[_0x3e03('0x153')]));var _0x2bb4ba=this[_0x3e03('0x50')][_0x3e03('0x70')](this,_0x11ea70[_0x3e03('0x165')]);var _0x1ce7d5=this[_0x3e03('0x51')][_0x3e03('0x70')](this,_0x11ea70['findBy'],_0x2bb4ba);if(_0x1ce7d5){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x11ea70[_0x3e03('0x153')]));this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x155'),this['channel'][_0x3e03('0x3b')],_0x11ea70[_0x3e03('0x153')]));return{'code':0xc8,'result':_0x3e03('0x156')};}else{logger['info'](util[_0x3e03('0x29')](_0x3e03('0x157'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x11ea70[_0x3e03('0x153')]));this['channel'][_0x3e03('0xaa')](util['format'](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x11ea70[_0x3e03('0x153')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x166')]=function(_0x14023c){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x167'),_0x14023c[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x14023c[_0x3e03('0x113')])){return this[_0x3e03('0xe')]['error'](_0x14023c,_0x3e03('0x168'));}var _0x13aa4b=this[_0x3e03('0x20')]['sync'](this,_0x14023c[_0x3e03('0x113')]);if(!_0x13aa4b){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x14023c,_0x3e03('0x161'));}var _0x5c5c38=this[_0x3e03('0xe')]['exec']('PLAYBACK',[_0x13aa4b,_0x14023c[_0x3e03('0xe7')]]);if(_0x5c5c38[_0x3e03('0xa3')]===-0x1){return _0x5c5c38;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x169'),_0x3e03('0x16a'),_0x13aa4b));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x16b')]=function(_0xf5961){logger['info'](util['format'](_0x3e03('0x16c'),_0xf5961[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0xf5961[_0x3e03('0x16d')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0xf5961,_0x3e03('0x16e'));}var _0x1b7618='';var _0x1670ad=parseInt(_0xf5961[_0x3e03('0x16d')],0xa);if(isNaN(_0x1670ad)){_0x1b7618=_0xf5961[_0x3e03('0x16d')];}else{_0x1b7618=this[_0x3e03('0x16')]['sync'](this,_0xf5961['queue_id']);if(!_0x1b7618){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0xf5961,'no\x20queue\x20found');}}var _0x3256ca='';if(this[_0x3e03('0x83')](_0xf5961[_0x3e03('0x113')])){var _0x2bec98=this[_0x3e03('0x20')][_0x3e03('0x70')](this,_0xf5961[_0x3e03('0x113')]);if(_0x2bec98){_0x3256ca=_0x2bec98;}}this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0xf5961,_0x1b7618);if(_0xf5961[_0x3e03('0xe7')]['indexOf']('x')<0x0){_0xf5961['opts']+='x';}if(_0xf5961[_0x3e03('0xe7')][_0x3e03('0x16f')]('X')<0x0){_0xf5961['opts']+='X';}this['channel'][_0x3e03('0x9e')](_0x3e03('0x170'),_0x1b7618?_0x1b7618[_0x3e03('0x171')]():'');var _0x40d137=this[_0x3e03('0xe')][_0x3e03('0xa9')](_0x3e03('0x172'),[_0x1b7618,_0xf5961[_0x3e03('0xe7')],_0xf5961[_0x3e03('0x64')],_0x3256ca,_0xf5961[_0x3e03('0x66')],_0xf5961[_0x3e03('0x7')],_0xf5961[_0x3e03('0x173')],_0xf5961['gosub'],'',_0xf5961[_0x3e03('0x174')]]);if(_0x40d137[_0x3e03('0xa3')]===-0x1){return _0x40d137;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x169'),_0x3e03('0x172'),_0x1b7618));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x175')]=function(_0x356582){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x356582[_0x3e03('0x38')]));var _0x2b1a03=_0x356582['recordingFormat']||'wav';var _0x5dbfe3=util['format'](_0x3e03('0x176'),this[_0x3e03('0xe')]['uniqueid'],rs[_0x3e03('0x11a')](0x5));var _0xef04cb=util[_0x3e03('0x29')](_0x3e03('0x177'),FILES_PATH,_0x5dbfe3,_0x2b1a03);var _0x1e1e35=util[_0x3e03('0x29')]('%s/recordings/%s',FILES_PATH,_0x5dbfe3);this[_0x3e03('0x3c')][_0x3e03('0x70')](this,_0x356582,_0x5dbfe3,_0xef04cb);this['channel'][_0x3e03('0x9e')](_0x3e03('0x178'),_0x5dbfe3);logger[_0x3e03('0x2e')](_0x3e03('0x179'),_0x1e1e35,_0x2b1a03,_0x356582[_0x3e03('0x17a')],_0x356582['timeout']);return this[_0x3e03('0xe')][_0x3e03('0x132')](_0x1e1e35,_0x2b1a03,_0x356582[_0x3e03('0x17a')],_0x356582[_0x3e03('0x66')],undefined,!![]);};AGIVertices[_0x3e03('0x11')]['restapi']=function(_0x43e870){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x17b'),_0x43e870[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x43e870['url'])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0x17c'));}var _0x300523=this[_0x3e03('0x63')][_0x3e03('0x70')](this,_0x43e870);logger['info'](util[_0x3e03('0x29')]('Response:',util['inspect'](_0x300523,{'showHidden':![],'depth':null})));if(!this[_0x3e03('0x83')](_0x43e870[_0x3e03('0xd8')])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0x17d'));}var _0x1919bd=this['getVariable'][_0x3e03('0x70')](this,_0x43e870[_0x3e03('0xd8')]);if(!_0x1919bd){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x43e870,_0x3e03('0xda'));}this[_0x3e03('0xe')][_0x3e03('0x9e')](util[_0x3e03('0x29')](_0x3e03('0x17e'),_0x1919bd),_0x300523[_0x3e03('0x75')]?_0x300523[_0x3e03('0x75')]:_0x3e03('0x17f'));this[_0x3e03('0xe')]['setVariable'](util['format'](_0x3e03('0x180'),_0x1919bd),_0x300523[_0x3e03('0x76')]?_0x300523[_0x3e03('0x76')]:'OK');if(_0x300523[_0x3e03('0x72')]){try{this[_0x3e03('0x9b')](_0x300523['body'],_0x1919bd);}catch(_0x3658fc){logger[_0x3e03('0x2d')](util[_0x3e03('0x29')]('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x1919bd));}}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('variable\x20%s\x20set',_0x1919bd));};AGIVertices[_0x3e03('0x11')]['saydigits']=function(_0x2e61c9){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x181'),_0x2e61c9[_0x3e03('0x38')]));return this[_0x3e03('0xe')]['sayDigits'](_0x2e61c9['digits'][_0x3e03('0x5b')](/\s+/g,''),_0x2e61c9[_0x3e03('0x17a')]);};AGIVertices[_0x3e03('0x11')][_0x3e03('0x182')]=function(_0xbb4164){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0xbb4164[_0x3e03('0x38')]));return this[_0x3e03('0xe')][_0x3e03('0x183')](_0xbb4164[_0x3e03('0x67')]['replace'](/\s+/g,''),_0xbb4164[_0x3e03('0x17a')]);};AGIVertices[_0x3e03('0x11')][_0x3e03('0x184')]=function(_0x4765df){logger['info'](util[_0x3e03('0x29')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x4765df[_0x3e03('0x38')]));return this[_0x3e03('0xe')]['sayPhonetic'](_0x4765df[_0x3e03('0x5d')],_0x4765df[_0x3e03('0x17a')]);};AGIVertices[_0x3e03('0x11')][_0x3e03('0x185')]=function(_0x59eae3){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x59eae3['label']));if(!this[_0x3e03('0x83')](_0x59eae3['account_id'])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0x186'));}var _0x3a4006=this[_0x3e03('0x23')]['sync'](this,_0x59eae3[_0x3e03('0x187')]);if(!_0x3a4006||!_0x3a4006[_0x3e03('0x188')]){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x59eae3,_0x3e03('0x189'));}var _0x4d4bc2={'from':util[_0x3e03('0x29')](_0x3e03('0x18a'),_0x3a4006['name'],_0x3a4006[_0x3e03('0x18b')]||_0x3a4006[_0x3e03('0x188')]['user']),'to':_0x59eae3['to']||'','cc':_0x59eae3['cc']||'','bcc':_0x59eae3[_0x3e03('0x18c')]||'','subject':_0x59eae3['subject'],'html':_0x59eae3[_0x3e03('0x5d')],'text':_0x59eae3[_0x3e03('0x5d')]};var _0x20057a={'tls':{'rejectUnauthorized':![]}};if(_0x3a4006[_0x3e03('0x188')][_0x3e03('0x18d')]){_0x20057a[_0x3e03('0x18d')]=_0x3a4006['Smtp'][_0x3e03('0x18d')];}else{_0x20057a[_0x3e03('0x18e')]=_0x3a4006[_0x3e03('0x188')][_0x3e03('0x18e')];_0x20057a[_0x3e03('0x18f')]=_0x3a4006[_0x3e03('0x188')][_0x3e03('0x18f')];_0x20057a[_0x3e03('0x190')]=_0x3a4006[_0x3e03('0x188')][_0x3e03('0x190')];}if(_0x3a4006[_0x3e03('0x188')][_0x3e03('0x191')]){_0x20057a[_0x3e03('0x192')]={'user':_0x3a4006['Smtp']['user'],'pass':_0x3a4006[_0x3e03('0x188')][_0x3e03('0x193')]};}if(this['isConfigured'](_0x59eae3['template_id'])){}logger[_0x3e03('0xe1')](_0x3e03('0x194'),JSON[_0x3e03('0x73')](_0x4d4bc2));this[_0x3e03('0x37')]['sync'](this,_0x59eae3,_0x59eae3[_0x3e03('0x187')]);this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x195'),_0x3a4006[_0x3e03('0x14')]));this[_0x3e03('0x25')][_0x3e03('0x70')](this,_0x20057a,_0x4d4bc2);return this['channel'][_0x3e03('0xaa')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x3e03('0x11')][_0x3e03('0x196')]=function(_0x1eaeda){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x197'),_0x1eaeda['label']));return this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0x198'));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x199')]=function(_0x53949d){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x19a'),_0x53949d[_0x3e03('0x38')]));if(!this['isConfigured'](_0x53949d['sms_account_id'])){return this[_0x3e03('0xe')][_0x3e03('0xaa')]('no\x20sms\x20account\x20configured');}var _0x469ada=this[_0x3e03('0x34')][_0x3e03('0x70')](this,_0x53949d['sms_account_id']);if(!_0x469ada){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x53949d,_0x3e03('0x19b'));}var _0x52ce38={'body':_0x53949d['sms_text'],'phone':_0x53949d['to']||'','SmsAccountId':_0x469ada['id']};logger[_0x3e03('0xe1')](_0x3e03('0x19c'),JSON[_0x3e03('0x73')](_0x52ce38));this[_0x3e03('0x37')]['sync'](this,_0x53949d,_0x53949d[_0x3e03('0x19d')]);this[_0x3e03('0xe')]['noop'](util[_0x3e03('0x29')](_0x3e03('0x19e'),_0x469ada[_0x3e03('0x14')]));this[_0x3e03('0x36')][_0x3e03('0x70')](this,_0x52ce38);return this[_0x3e03('0xe')][_0x3e03('0xaa')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x3e03('0x11')]['set']=function(_0x1c6f72){logger[_0x3e03('0x2e')](util['format']('Enter\x20in\x20SET\x20(%s)\x20block',_0x1c6f72[_0x3e03('0x38')]));if(!this['isConfigured'](_0x1c6f72[_0x3e03('0xd8')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x1c6f72,_0x3e03('0x19f'));}var _0x15717b=this[_0x3e03('0x12')][_0x3e03('0x70')](this,_0x1c6f72[_0x3e03('0xd8')]);if(!_0x15717b){return this['channel'][_0x3e03('0x2d')](_0x1c6f72,'no\x20variable\x20found');}return this[_0x3e03('0xe')][_0x3e03('0x9e')](_0x15717b,_0x1c6f72['variable_value']);};AGIVertices[_0x3e03('0x11')][_0x3e03('0x1a0')]=function(_0x5598ec){logger[_0x3e03('0x2e')](util['format']('Enter\x20in\x20START\x20(%s)\x20block',_0x5598ec['label']));this[_0x3e03('0xe')]['noop'](_0x3e03('0x1a1'));if(_0x5598ec[_0x3e03('0xba')]===_0x3e03('0x1a2')){this[_0x3e03('0xe')][_0x3e03('0xaa')](_0x3e03('0x1a3'));return this[_0x3e03('0xe')][_0x3e03('0xba')]();}return this['channel']['noop'](_0x3e03('0x1a4'));};AGIVertices['prototype'][_0x3e03('0x1a5')]=function(_0x23c1b0){logger['info'](util[_0x3e03('0x29')](_0x3e03('0x1a6'),_0x23c1b0[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x23c1b0[_0x3e03('0x1a7')])){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x23c1b0,_0x3e03('0x1a8'));}var _0x9379bf=this['getSquareProject'][_0x3e03('0x70')](this,_0x23c1b0[_0x3e03('0x1a7')]);if(!this[_0x3e03('0x83')](_0x9379bf)){return this['channel'][_0x3e03('0x2d')](_0x23c1b0,util['format'](_0x3e03('0x1a9'),_0x23c1b0[_0x3e03('0x1a7')]));}if(_0x9379bf===this[_0x3e03('0xe')][_0x3e03('0x3a')]){return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x23c1b0,_0x3e03('0x1aa'));}this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x23c1b0,_0x9379bf);var _0x5ae182=this['channel'][_0x3e03('0xa9')](_0x3e03('0x1ab'),util[_0x3e03('0x29')](_0x3e03('0x1ac'),config['agi'][_0x3e03('0x18e')]||'127.0.0.1',_0x9379bf,this[_0x3e03('0xe')][_0x3e03('0x3a')]));if(_0x5ae182['result']===-0x1){return _0x5ae182;}return this[_0x3e03('0xe')]['noop'](util[_0x3e03('0x29')](_0x3e03('0x169'),_0x3e03('0x1ab'),_0x9379bf));};AGIVertices[_0x3e03('0x11')]['system']=function(_0x1768ce){logger[_0x3e03('0x2e')](util['format']('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x1768ce['label']));var _0x366c36=this['shellCommand'][_0x3e03('0x70')](this,_0x1768ce['command']);this[_0x3e03('0x37')][_0x3e03('0x70')](this,_0x1768ce,_0x1768ce[_0x3e03('0xb6')]);if(this[_0x3e03('0x83')](_0x1768ce[_0x3e03('0xd8')])){var _0x532849=this[_0x3e03('0x12')][_0x3e03('0x70')](this,_0x1768ce[_0x3e03('0xd8')]);if(_0x532849){this[_0x3e03('0xe')][_0x3e03('0x9e')](_0x532849,_0x366c36);return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x1768ce[_0x3e03('0xb6')],_0x532849));}}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x1768ce[_0x3e03('0xb6')]));};AGIVertices['prototype'][_0x3e03('0x1ad')]=function(_0x350c45){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x1ae'),_0x350c45['label']));_0x350c45[_0x3e03('0x5d')]=_0x350c45[_0x3e03('0x5d')][_0x3e03('0x5b')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x3e03('0x83')](_0x350c45[_0x3e03('0x1af')])){return this['channel'][_0x3e03('0xaa')](_0x3e03('0x1b0'));}if(!this['isConfigured'](_0x350c45[_0x3e03('0x5d')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0xc5'));}this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x1b1'),_0x350c45['text']));var _0x4d08c8=this[_0x3e03('0x5c')][_0x3e03('0x70')](this,_0x350c45);if(_0x4d08c8){this[_0x3e03('0xe')]['noop'](util['format'](_0x3e03('0x1b2'),_0x4d08c8));var _0x6e4a12=this[_0x3e03('0xe')][_0x3e03('0x107')](_0x4d08c8);try{fs[_0x3e03('0x108')](_0x4d08c8+_0x3e03('0x109'));}catch(_0x343daf){logger[_0x3e03('0x2d')](_0x343daf);}return _0x6e4a12;}return this[_0x3e03('0xe')][_0x3e03('0x2d')](_0x350c45,_0x3e03('0x1b3'));};AGIVertices['prototype'][_0x3e03('0x1b4')]=function(_0x126784){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x1b5'),_0x126784[_0x3e03('0x38')]));_0x126784[_0x3e03('0x5d')]=_0x126784[_0x3e03('0x5d')][_0x3e03('0x5b')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x3e03('0x83')](_0x126784[_0x3e03('0x5d')])){return this[_0x3e03('0xe')]['noop'](_0x3e03('0xc5'));}this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x1b6'),_0x126784[_0x3e03('0x5d')]));var _0x2fccab=this[_0x3e03('0x62')][_0x3e03('0x70')](this,_0x126784);if(_0x2fccab){this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0x1b7'),_0x2fccab));var _0x3f1bb4=this[_0x3e03('0xe')][_0x3e03('0x107')](_0x2fccab);try{fs[_0x3e03('0x108')](_0x2fccab+'.wav');}catch(_0x309fe2){logger[_0x3e03('0x2d')](_0x309fe2);}return _0x3f1bb4;}return this['channel'][_0x3e03('0x2d')](_0x126784,_0x3e03('0x1b8'));};AGIVertices[_0x3e03('0x11')][_0x3e03('0x1b9')]=function(_0x3ef2f9){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x1ba'),_0x3ef2f9[_0x3e03('0x38')]));if(!this[_0x3e03('0x83')](_0x3ef2f9[_0x3e03('0x153')])){return this['channel'][_0x3e03('0x2d')](_0x3ef2f9,'no\x20find\x20by\x20configured');}logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x154'),this['channel'][_0x3e03('0x3b')],_0x3ef2f9['findBy']));var _0x26f661=this['agentUnpause'][_0x3e03('0x70')](this,_0x3ef2f9[_0x3e03('0x153')]);if(_0x26f661){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ef2f9[_0x3e03('0x153')]));this[_0x3e03('0xe')][_0x3e03('0xaa')](util['format'](_0x3e03('0x155'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ef2f9[_0x3e03('0x153')]));return{'code':0xc8,'result':_0x3e03('0x156')};}else{logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x157'),this[_0x3e03('0xe')][_0x3e03('0x3b')],_0x3ef2f9[_0x3e03('0x153')]));this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x3e03('0x3b')],_0x3ef2f9[_0x3e03('0x153')]));return{'code':0xc8,'result':_0x3e03('0x15a')};}};AGIVertices[_0x3e03('0x11')][_0x3e03('0x1bb')]=function(_0x263f47){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x263f47[_0x3e03('0x38')]));var _0x4feb50=this[_0x3e03('0xe')][_0x3e03('0xa9')](_0x3e03('0x1bc'),[_0x263f47[_0x3e03('0x1bd')],_0x263f47['options']]);if(_0x4feb50['result']===-0x1){return _0x4feb50;}return this[_0x3e03('0xe')][_0x3e03('0xaa')](util[_0x3e03('0x29')](_0x3e03('0x169'),_0x3e03('0x1bc'),_0x263f47[_0x3e03('0x1bd')]));};AGIVertices['prototype'][_0x3e03('0x1be')]=function(_0x44a83e){logger[_0x3e03('0x2e')](util[_0x3e03('0x29')](_0x3e03('0x1bf'),_0x44a83e[_0x3e03('0x38')]));if(!this['isConfigured'](_0x44a83e[_0x3e03('0xd8')])){return this['channel'][_0x3e03('0x2d')](_0x44a83e,_0x3e03('0x19f'));}var _0x195c7f=this['getVariable']['sync'](this,_0x44a83e[_0x3e03('0xd8')]);if(!_0x195c7f){return this['channel'][_0x3e03('0x2d')](_0x44a83e,_0x3e03('0xda'));}var _0x288717=this[_0x3e03('0xe')][_0x3e03('0x12')](_0x195c7f);return{'code':0xc8,'result':_0x288717['extra']?_0x288717[_0x3e03('0xa1')]:'-'};};String[_0x3e03('0x11')][_0x3e03('0xa0')]=function(_0x39c090,_0x1aa99d){return this[_0x3e03('0x9f')](_0x39c090)['join'](_0x1aa99d);};module[_0x3e03('0x1c0')]=AGIVertices;
\ No newline at end of file
+var _0x58c8=['vswitch','replaceAll','join','exports','util','shelljs','randomstring','moment','mustache','request-promise','../../config/logger','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','getdigits','getsecretdigits','rpc','prototype','getVariable','getVariableById','name','catch','getVoiceQueue','getVoiceQueueById','then','getSquareProject','getSquareProjectById','getSquareOdbc','dsn','getUser','getUserById','getTrunkById','getSound','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','mailRpc','sendMailMessage','getIntervals','interval','Intervals','%s/sounds/converted/%s','getQueryOdbc','open','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccountById','createSmsMessage','createSquareDetailsReport','channel','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','context','extension','priority','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','error','agentUnpause','agentLogout','agent','agentLogin','internal','format','LOCAL','shellCommand','exec','trim','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','en-US','MALE','MP3','googleTTS','google_tts_language','url','method','timeout','number','includes','POST','toUpperCase','body','rawBody','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','parse','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','headers','stringify','statusCode','statusMessage','message','options','googleDialogflow','googleDialogflowV2','dialogflowV2_project_id','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','ispeechASR','key','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','googleASR','google_asr_language','tildeASR','clear','clone','hasOwnProperty','replaceObjectAllVariables','replaceAllVariables','isPlainObject','recursiveNodeIndex','isArray','length','isString','saveRestApiResult','%s.%s','setVariable','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','no\x20text\x20configured','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','noop','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','list_id','no\x20list\x20selected','delay','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','phone','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','odbc_id','no\x20query\x20configured','replace','variable_id','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','DIAL','SIP/%s','opts','Executed\x20command\x20%s','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','dialogflow','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','client_email','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','dialogflowV2','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','ndauth_url','no\x20ndauth\x20url\x20configured','password','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','sesteknda','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','ext_dial','trunk_id','no\x20trunk\x20selected','getTrunk','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','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','goalname','GOAL\x20%s','awspolly','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','awslex','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\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','no\x20key\x20configured','wav','%s/recordings/%s','beep','NOBEEP','recordFile','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','no\x20appid\x20configured','appsecret','intKey','TILDE_ASR_%s','gotoc','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','interval_id','no\x20interval\x20configured','no\x20intervals\x20found','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','ispeech\x20TTS\x20is\x20unreachable','login','FIND\x20AGENT\x20%s\x20BY\x20%s','findBy','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','Enter\x20in\x20LOGOUT\x20(%s)\x20block','no\x20find\x20by\x20configured','AGENT\x20%s\x20FOUND\x20BY','failure','Enter\x20in\x20MATH\x20(%s)\x20block','no\x20operation\x20configured','math\x20%s','operation','variable\x20%s[key]\x20set','menu','Enter\x20in\x20MENU\x20(%s)\x20block','digit','no\x20variable\x20selected\x20for\x20the\x20result','Enter\x20in\x20NOOP\x20(%s)\x20block','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','indexOf','toLowerCase','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','restAPI','Response:','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','Smtp','no\x20mail\x20account\x20found','email','user','bcc','subject','service','host','port','secure','authentication','pass','template_id','debug','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','getSmsAccount','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','answer','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','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','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20is\x20unreachable','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','VOICEMAIL','mailbox'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x58c8,0x1d9));var _0x858c=function(_0x4093b9,_0x5670b8){_0x4093b9=_0x4093b9-0x0;var _0x293ceb=_0x58c8[_0x4093b9];return _0x293ceb;};'use strict';var fs=require('fs');var path=require('path');var util=require(_0x858c('0x0'));var _=require('lodash');var sh=require(_0x858c('0x1'));var odbc=require('odbc')();var rs=require(_0x858c('0x2'));var moment=require(_0x858c('0x3'));var Mustache=require(_0x858c('0x4'));var rp=require(_0x858c('0x5'));var logger=require(_0x858c('0x6'))(_0x858c('0x7'));var config=require(_0x858c('0x8'));var scripts=require(_0x858c('0x9'));var FILES_PATH=_0x858c('0xa');var recursiveMapAttributes=[_0x858c('0xb'),'rawBody'];var verticesWithRetry=['menu',_0x858c('0xc'),_0x858c('0xd')];var AGIVertices=function(_0x4106d1,_0x2e7e74,_0x1a35ac){this['channel']=_0x4106d1;this[_0x858c('0xe')]=_0x2e7e74;this['mailRpc']=_0x1a35ac;};AGIVertices[_0x858c('0xf')][_0x858c('0x10')]=function(_0x5e76df,_0x35e24d){this[_0x858c('0xe')][_0x858c('0x11')](_0x5e76df)['then'](function(_0x50253a){_0x35e24d(null,_0x50253a?_0x50253a[_0x858c('0x12')]:![]);})[_0x858c('0x13')](function(_0x59a9bc){_0x35e24d(_0x59a9bc);});};AGIVertices[_0x858c('0xf')][_0x858c('0x14')]=function(_0xd63007,_0x464f13){this[_0x858c('0xe')][_0x858c('0x15')](_0xd63007)[_0x858c('0x16')](function(_0x41f1c1){_0x464f13(null,_0x41f1c1?_0x41f1c1[_0x858c('0x12')]:![]);})[_0x858c('0x13')](function(_0xc1e8d7){_0x464f13(_0xc1e8d7);});};AGIVertices['prototype'][_0x858c('0x17')]=function(_0x3e810b,_0x2ac60a){this[_0x858c('0xe')][_0x858c('0x18')](_0x3e810b)[_0x858c('0x16')](function(_0xff3b14){_0x2ac60a(null,_0xff3b14?_0xff3b14[_0x858c('0x12')]:![]);})['catch'](function(_0x1bc9fa){_0x2ac60a(_0x1bc9fa);});};AGIVertices[_0x858c('0xf')][_0x858c('0x19')]=function(_0x750e23,_0x39cdc1){this['rpc']['getSquareOdbcById'](_0x750e23)[_0x858c('0x16')](function(_0x22fa9b){_0x39cdc1(null,_0x22fa9b?_0x22fa9b[_0x858c('0x1a')]:![]);})[_0x858c('0x13')](function(_0x59cc79){_0x39cdc1(_0x59cc79);});};AGIVertices[_0x858c('0xf')][_0x858c('0x1b')]=function(_0x51e378,_0x1d5d75){this[_0x858c('0xe')][_0x858c('0x1c')](_0x51e378)[_0x858c('0x16')](function(_0x55fb3d){_0x1d5d75(null,_0x55fb3d?_0x55fb3d['name']:![]);})[_0x858c('0x13')](function(_0x365d54){_0x1d5d75(_0x365d54);});};AGIVertices['prototype']['getTrunk']=function(_0x5e04ec,_0x1db35d){this[_0x858c('0xe')][_0x858c('0x1d')](_0x5e04ec)[_0x858c('0x16')](function(_0x2f8c13){_0x1db35d(null,_0x2f8c13?_0x2f8c13[_0x858c('0x12')]:![]);})['catch'](function(_0x3d2fa3){_0x1db35d(_0x3d2fa3);});};AGIVertices[_0x858c('0xf')][_0x858c('0x1e')]=function(_0x38b64b,_0x213dbb){var _0x28e6e8=this;this[_0x858c('0xe')][_0x858c('0x1f')](_0x38b64b)[_0x858c('0x16')](function(_0x3b9d50){_0x213dbb(null,_0x3b9d50?_0x28e6e8[_0x858c('0x20')](_0x3b9d50[_0x858c('0x21')]):![]);})[_0x858c('0x13')](function(_0x184a5a){_0x213dbb(_0x184a5a);});};AGIVertices[_0x858c('0xf')][_0x858c('0x22')]=function(_0x2b3c9c,_0x19be00){this[_0x858c('0xe')][_0x858c('0x23')](_0x2b3c9c)['then'](function(_0x911bc3){_0x19be00(null,_0x911bc3?_0x911bc3:![]);})[_0x858c('0x13')](function(_0x239629){_0x19be00(_0x239629);});};AGIVertices[_0x858c('0xf')]['sendMailMessage']=function(_0x52b476,_0x3877de,_0x25f76f){this[_0x858c('0x24')][_0x858c('0x25')](_0x52b476,_0x3877de)[_0x858c('0x16')](function(){_0x25f76f(null);})[_0x858c('0x13')](function(_0x367bb8){_0x25f76f(_0x367bb8);});};AGIVertices['prototype'][_0x858c('0x26')]=function(_0x6ad9fb,_0xe6e36b){this[_0x858c('0xe')]['getIntervalById'](_0x6ad9fb)[_0x858c('0x16')](function(_0x55768e){if(_0x55768e){if(_0x55768e['IntervalId']){_0xe6e36b(null,[_0x55768e[_0x858c('0x27')]]);}else{_0xe6e36b(null,_['map'](_0x55768e[_0x858c('0x28')],_0x858c('0x27')));}}else{_0xe6e36b(null,![]);}})[_0x858c('0x13')](function(_0x1c7d4f){_0xe6e36b(_0x1c7d4f);});};AGIVertices[_0x858c('0xf')][_0x858c('0x20')]=function(_0x5145d9){return util['format'](_0x858c('0x29'),FILES_PATH,_0x5145d9);};AGIVertices[_0x858c('0xf')][_0x858c('0x2a')]=function(_0x19a650,_0x48cada,_0xe93680){odbc[_0x858c('0x2b')](_0x19a650,function(_0x476d8d){if(_0x476d8d){logger['error'](_0x858c('0x2c'),_0x476d8d);_0xe93680(_0x476d8d);}else{logger[_0x858c('0x2d')](_0x858c('0x2e'));odbc[_0x858c('0x2f')](_0x48cada,function(_0x2b7d5d,_0xe14422){if(_0x2b7d5d){logger[_0x858c('0x2d')](_0x858c('0x30'),_0x48cada);_0xe93680(_0x2b7d5d);}else{logger['info'](_0x858c('0x31'),_0x48cada);odbc[_0x858c('0x32')](function(_0x295dc7){if(_0x295dc7){logger['error'](_0x858c('0x33'),_0x295dc7);}_0xe93680(null,_0xe14422);});}});}});};AGIVertices['prototype']['getSmsAccount']=function(_0x1cfb30,_0x11ead9){this[_0x858c('0xe')][_0x858c('0x34')](_0x1cfb30)[_0x858c('0x16')](function(_0x415830){_0x11ead9(null,_0x415830?_0x415830:![]);})[_0x858c('0x13')](function(_0x5b978a){_0x11ead9(_0x5b978a);});};AGIVertices[_0x858c('0xf')][_0x858c('0x35')]=function(_0x1c3e7d,_0x47e9a3){this[_0x858c('0xe')][_0x858c('0x35')](_0x1c3e7d)[_0x858c('0x16')](function(_0xeb80e9){_0x47e9a3(null,_0xeb80e9);})[_0x858c('0x13')](function(_0x597991){_0x47e9a3(_0x597991);});};AGIVertices['prototype'][_0x858c('0x36')]=function(_0x197211,_0x2d5240,_0x480ea8){this[_0x858c('0xe')][_0x858c('0x36')]({'uniqueid':this[_0x858c('0x37')][_0x858c('0x38')],'node':_0x197211[_0x858c('0x39')],'application':_0x197211[_0x858c('0x3a')],'data':_0x2d5240||null,'project_name':this[_0x858c('0x37')][_0x858c('0x3b')],'callerid':this[_0x858c('0x37')][_0x858c('0x3c')]})[_0x858c('0x16')](function(_0x7cede2){if(_0x480ea8){_0x480ea8(null,_0x7cede2);}})[_0x858c('0x13')](function(_0x16f2ea){if(_0x480ea8){_0x480ea8(_0x16f2ea);}});};AGIVertices[_0x858c('0xf')]['createSquareRecording']=function(_0x2f133a,_0xbdec28,_0x15b77c,_0x1f3f1c){this[_0x858c('0xe')][_0x858c('0x3d')]({'uniqueid':this[_0x858c('0x37')]['uniqueid'],'callerid':this[_0x858c('0x37')][_0x858c('0x3c')],'calleridname':this[_0x858c('0x37')]['calleridname'],'context':this[_0x858c('0x37')][_0x858c('0x3e')],'extension':this[_0x858c('0x37')][_0x858c('0x3f')],'priority':this[_0x858c('0x37')][_0x858c('0x40')],'accountcode':this[_0x858c('0x37')][_0x858c('0x41')],'dnid':this[_0x858c('0x37')][_0x858c('0x42')],'projectName':this[_0x858c('0x37')]['arg_1'],'saveName':_0xbdec28,'filename':_0x2f133a[_0x858c('0x43')]||_0xbdec28,'savePath':_0x15b77c})['then'](function(_0x5c31c6){_0x1f3f1c(null,_0x5c31c6);})['catch'](function(_0x29d700){_0x1f3f1c(_0x29d700);});};AGIVertices[_0x858c('0xf')][_0x858c('0x44')]=function(_0x2ab3ef,_0x3f770e,_0x230ad0,_0x5bb6fa,_0x25369f){this['rpc']['createSquareMessage']({'uniqueid':this[_0x858c('0x37')][_0x858c('0x38')],'body':_0x2ab3ef,'direction':_0x3f770e,'providerName':_0x230ad0,'providerResponse':_0x5bb6fa})['then'](function(_0x1fb9cd){if(_0x25369f){_0x25369f(null,_0x1fb9cd);}})[_0x858c('0x13')](function(_0x36b93f){if(_0x25369f){_0x25369f(_0x36b93f);}});};AGIVertices[_0x858c('0xf')][_0x858c('0x45')]=function(_0x539f96,_0x385b2f){this['rpc'][_0x858c('0x45')]({'firstName':_[_0x858c('0x46')](_0x539f96[_0x858c('0x12')])||_[_0x858c('0x47')](_0x539f96[_0x858c('0x12')])?_0x858c('0x48')+Math[_0x858c('0x49')]():_0x539f96[_0x858c('0x12')],'lastName':_[_0x858c('0x46')](_0x539f96[_0x858c('0x4a')])||_[_0x858c('0x47')](_0x539f96[_0x858c('0x4a')])?null:_0x539f96[_0x858c('0x4a')],'phone':_0x539f96['phone'],'ListId':_0x539f96['list_id'],'scheduledat':_0x539f96[_0x858c('0x4b')],'callbackUniqueid':this[_0x858c('0x37')][_0x858c('0x38')],'tags':_0x858c('0x4c'),'description':_0x858c('0x4d')+_0x539f96[_0x858c('0x4b')][_0x858c('0x4e')](),'priority':_0x539f96[_0x858c('0x4f')]})[_0x858c('0x16')](function(_0x4e2752){_0x385b2f(null,_0x4e2752);})[_0x858c('0x13')](function(_0x17944a){_0x385b2f(_0x17944a);});};AGIVertices['prototype'][_0x858c('0x50')]=function(_0x3d4d33,_0x2f090f){this[_0x858c('0xe')][_0x858c('0x51')](_0x3d4d33)[_0x858c('0x16')](function(_0xaa3e7b){_0x2f090f(null,_0xaa3e7b?_0xaa3e7b[_0x858c('0x12')]:![]);})[_0x858c('0x13')](function(_0xb43908){_0x2f090f(_0xb43908);});};AGIVertices[_0x858c('0xf')]['agentPause']=function(_0x129879,_0x2cd7ed,_0xed1020){var _0x88ced2={'role':'agent'};_0x88ced2[_0x129879]=this[_0x858c('0x37')][_0x858c('0x3c')];this[_0x858c('0xe')][_0x858c('0x52')](_0x88ced2,_0x2cd7ed,this[_0x858c('0x37')][_0x858c('0x38')])[_0x858c('0x16')](function(_0x5db3e9){_0xed1020(null,_['isNil'](_0x5db3e9)?![]:!![]);})[_0x858c('0x13')](function(_0x561b5b){logger[_0x858c('0x53')](_0x561b5b);_0xed1020(null,![]);});};AGIVertices['prototype'][_0x858c('0x54')]=function(_0x2085bc,_0x219212){var _0x4f08a7={'role':'agent'};_0x4f08a7[_0x2085bc]=this[_0x858c('0x37')]['callerid'];this[_0x858c('0xe')][_0x858c('0x54')](_0x4f08a7)['then'](function(_0x181ca5){_0x219212(null,_['isNil'](_0x181ca5)?![]:!![]);})[_0x858c('0x13')](function(_0x8b1214){logger['error'](_0x8b1214);_0x219212(null,![]);});};AGIVertices[_0x858c('0xf')][_0x858c('0x55')]=function(_0x1f2f9c,_0x3e6eb0){var _0x42d057={'role':_0x858c('0x56')};_0x42d057[_0x1f2f9c]=this[_0x858c('0x37')]['callerid'];this[_0x858c('0xe')][_0x858c('0x55')](_0x42d057)[_0x858c('0x16')](function(_0x2ce78a){_0x3e6eb0(null,_[_0x858c('0x47')](_0x2ce78a)?![]:!![]);})['catch'](function(_0x244539){logger[_0x858c('0x53')](_0x244539);_0x3e6eb0(null,![]);});};AGIVertices[_0x858c('0xf')][_0x858c('0x57')]=function(_0x4d9215,_0x5399e7){var _0x2551c8={'role':_0x858c('0x56')};_0x2551c8[_0x4d9215]=this[_0x858c('0x37')]['callerid'];var _0x13314d=_0x4d9215!=_0x858c('0x58')?util[_0x858c('0x59')]('%s/%s@from-sip/n',_0x858c('0x5a'),this[_0x858c('0x37')][_0x858c('0x3c')]):undefined;this[_0x858c('0xe')][_0x858c('0x57')](_0x2551c8,_0x13314d)[_0x858c('0x16')](function(_0x37515b){_0x5399e7(null,_['isNil'](_0x37515b)?![]:!![]);})[_0x858c('0x13')](function(_0x38a5bb){logger[_0x858c('0x53')](_0x38a5bb);_0x5399e7(null,![]);});};AGIVertices['prototype'][_0x858c('0x5b')]=function(_0x1b0f82,_0x5f56f4){sh[_0x858c('0x5c')](_[_0x858c('0x5d')](_0x1b0f82),function(_0xb70ca2,_0x3958c6){var _0xec623=_0x3958c6['replace'](/(\r\n|\n|\r)/gm,'');_0x5f56f4(null,_0xec623);});};AGIVertices[_0x858c('0xf')][_0x858c('0x5e')]=function(_0x441445,_0x42cee2){scripts[_0x858c('0x5e')](_0x441445[_0x858c('0x5f')],_0x441445[_0x858c('0x60')]||_0x858c('0x61'),_0x441445[_0x858c('0x61')],_0x441445['languageCode']||_0x858c('0x62'),_0x441445['ssmlGender']||_0x858c('0x63'),_0x441445['audioEncoding']||_0x858c('0x64'))[_0x858c('0x16')](function(_0x587748){_0x42cee2(null,_0x587748);})[_0x858c('0x13')](function(_0x113caf){_0x42cee2(_0x113caf);});};AGIVertices[_0x858c('0xf')][_0x858c('0x65')]=function(_0xa7c5f8,_0x3c1a70){scripts['googleTTS'](_0xa7c5f8['text'],_0xa7c5f8[_0x858c('0x66')]||'en',0x1)[_0x858c('0x16')](function(_0x5d018c){_0x3c1a70(null,_0x5d018c);})['catch'](function(_0x46f83a){_0x3c1a70(_0x46f83a);});};AGIVertices[_0x858c('0xf')]['restAPI']=function(_0x35e8b3,_0xed3fc1){var _0xd30774={'uri':_0x35e8b3[_0x858c('0x67')],'method':_0x35e8b3[_0x858c('0x68')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x35e8b3[_0x858c('0x69')])===_0x858c('0x6a')&&parseInt(_0x35e8b3[_0x858c('0x69')])>=0x1?parseInt(_0x35e8b3[_0x858c('0x69')])*0x3e8:0x5*0x3e8};if(_[_0x858c('0x6b')]([_0x858c('0x6c'),'PUT'],_0xd30774[_0x858c('0x68')][_0x858c('0x6d')]())){try{_0xd30774[_0x858c('0x6e')]=_0x35e8b3[_0x858c('0x6f')]?JSON['parse'](_0x35e8b3['rawBody']):{};}catch(_0x21c516){logger['error'](_0x858c('0x70'),_0x21c516);}}try{_0xd30774['headers']=_0x35e8b3[_0x858c('0xb')]?JSON[_0x858c('0x71')](_0x35e8b3[_0x858c('0xb')]):{};}catch(_0x48bdd0){logger[_0x858c('0x53')](_0x858c('0x72'),_0x48bdd0);}if(_0x35e8b3[_0x858c('0x73')]){try{var _0x3210ef=require(_0x35e8b3[_0x858c('0x73')])[_0x858c('0x74')](this,_0xd30774);_0xd30774[_0x858c('0x75')]=Mustache[_0x858c('0x76')](_0x35e8b3[_0x858c('0x67')],_0x3210ef,{},['$$','$$']);if(_0xd30774[_0x858c('0x77')]){_0xd30774[_0x858c('0x77')]=JSON[_0x858c('0x71')](Mustache['render'](JSON['stringify'](_0xd30774[_0x858c('0x77')]),_0x3210ef,{},['$$','$$']));}if(_0xd30774[_0x858c('0x6e')]){_0xd30774[_0x858c('0x6e')]=JSON['parse'](Mustache[_0x858c('0x76')](JSON[_0x858c('0x78')](_0xd30774[_0x858c('0x6e')]),_0x3210ef,{},['$$','$$']));}}catch(_0x288a1c){logger[_0x858c('0x53')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x288a1c);}}rp(_0xd30774)[_0x858c('0x16')](function(_0x41c1f0){var _0x44eb41={'statusCode':_0x41c1f0[_0x858c('0x79')]||0xc8,'statusMessage':_0x41c1f0[_0x858c('0x7a')]||'OK','headers':_0x41c1f0[_0x858c('0x77')]||{},'body':_0x41c1f0[_0x858c('0x6e')]||{}};_0xed3fc1(null,_0x44eb41);})[_0x858c('0x13')](function(_0x538539){var _0x29cddc={'statusCode':_0x538539['statusCode']||0x1f4,'statusMessage':_0x538539[_0x858c('0x7b')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x538539[_0x858c('0x7c')][_0x858c('0x77')]||{},'body':_0x538539['options'][_0x858c('0x6e')]||{}};_0xed3fc1(null,_0x29cddc);});};AGIVertices['prototype'][_0x858c('0x7d')]=function(_0x24055b,_0x3fea5c){scripts[_0x858c('0x7d')](this[_0x858c('0x37')][_0x858c('0x38')],_0x24055b['key'],_0x24055b[_0x858c('0x61')],_0x24055b['dialogflow_language']||'en')['then'](function(_0x6632c){_0x3fea5c(null,_0x6632c);})[_0x858c('0x13')](function(_0x40660e){_0x3fea5c(_0x40660e);});};AGIVertices[_0x858c('0xf')][_0x858c('0x7e')]=function(_0x4f743e,_0x497fde){scripts[_0x858c('0x7e')](this['channel']['uniqueid'],_0x4f743e[_0x858c('0x7f')],_0x4f743e['client_email'],_0x4f743e[_0x858c('0x80')],_0x4f743e[_0x858c('0x61')],_0x4f743e[_0x858c('0x81')]||'en')[_0x858c('0x16')](function(_0x51b9ea){_0x497fde(null,_0x51b9ea);})[_0x858c('0x13')](function(_0xabda15){_0x497fde(_0xabda15);});};AGIVertices['prototype']['sestekNDA']=function(_0x2fe019,_0x1fdadc){scripts[_0x858c('0x82')](this[_0x858c('0x37')],_0x2fe019)[_0x858c('0x16')](function(_0x337aaa){_0x1fdadc(null,_0x337aaa);})['catch'](function(_0x1d8ffa){_0x1fdadc(_0x1d8ffa);});};AGIVertices[_0x858c('0xf')][_0x858c('0x83')]=function(_0x4aa5d7,_0x31f0cc){scripts[_0x858c('0x83')](_0x4aa5d7['key'],_0x4aa5d7['text'],_0x4aa5d7[_0x858c('0x84')]||_0x858c('0x62'),_0x4aa5d7['speed'])[_0x858c('0x16')](function(_0x51449d){_0x31f0cc(null,_0x51449d);})[_0x858c('0x13')](function(_0x305403){_0x31f0cc(_0x305403);});};AGIVertices[_0x858c('0xf')]['ispeechASR']=function(_0x5630c7,_0x88a07e,_0x1b3a2e){scripts[_0x858c('0x85')](_0x88a07e,_0x5630c7[_0x858c('0x86')],_0x5630c7[_0x858c('0x87')]||_0x858c('0x62'),this[_0x858c('0x88')](_0x5630c7[_0x858c('0x89')])?_0x5630c7[_0x858c('0x89')]:undefined)['then'](function(_0x40dc1f){_0x1b3a2e(null,_0x40dc1f);})[_0x858c('0x13')](function(_0x214aba){_0x1b3a2e(_0x214aba);});};AGIVertices['prototype'][_0x858c('0x8a')]=function(_0x504d94,_0x14e6e5){scripts[_0x858c('0x8a')](_0x504d94[_0x858c('0x8b')],_0x504d94[_0x858c('0x8c')],_0x504d94[_0x858c('0x8d')],_0x504d94[_0x858c('0x8e')]||_0x858c('0x8f'),_0x504d94[_0x858c('0x61')],_0x504d94[_0x858c('0x90')]||'text')['then'](function(_0xf0518a){_0x14e6e5(null,_0xf0518a);})[_0x858c('0x13')](function(_0x4c86b1){_0x14e6e5(_0x4c86b1);});};AGIVertices[_0x858c('0xf')][_0x858c('0x91')]=function(_0x45905e,_0x137b5d){scripts['awsLex'](this[_0x858c('0x37')][_0x858c('0x38')],_0x45905e['aws_access_key_id'],_0x45905e['aws_secret_access_key'],_0x45905e[_0x858c('0x92')],_0x45905e[_0x858c('0x61')],_0x45905e['aws_bot_name'])[_0x858c('0x16')](function(_0x4d9cc8){_0x137b5d(null,_0x4d9cc8);})[_0x858c('0x13')](function(_0x5e27f3){_0x137b5d(_0x5e27f3);});};AGIVertices[_0x858c('0xf')]['googleASR']=function(_0x592fa2,_0x54f7c0,_0x142322){scripts[_0x858c('0x93')](_0x54f7c0,_0x592fa2[_0x858c('0x86')],_0x592fa2[_0x858c('0x94')]||_0x858c('0x62'))['then'](function(_0x313372){_0x142322(null,_0x313372);})[_0x858c('0x13')](function(_0x4fffb4){_0x142322(_0x4fffb4);});};AGIVertices[_0x858c('0xf')]['tildeASR']=function(_0x4ef80c,_0x55e87a,_0x4e599f){scripts[_0x858c('0x95')](_0x55e87a,_0x4ef80c['appid'],_0x4ef80c['appsecret'],_0x4ef80c[_0x858c('0x75')])[_0x858c('0x16')](function(_0x40dfb6){_0x4e599f(null,_0x40dfb6);})[_0x858c('0x13')](function(_0x540956){_0x4e599f(_0x540956);});};AGIVertices[_0x858c('0xf')][_0x858c('0x96')]=function(_0xbcbd68){var _0x43d854=_[_0x858c('0x6b')](verticesWithRetry,_0xbcbd68['agicommand'])?_0xbcbd68:_[_0x858c('0x97')](_0xbcbd68);for(var _0x472d42 in _0x43d854){if(_0x43d854[_0x858c('0x98')](_0x472d42)){if(_0x43d854[_0x472d42]&&_['isString'](_0x43d854[_0x472d42])){if(_[_0x858c('0x6b')](recursiveMapAttributes,_0x472d42)){_0x43d854[_0x472d42]=this[_0x858c('0x99')](_0x43d854[_0x472d42]);}else{_0x43d854[_0x472d42]=this[_0x858c('0x9a')](_0x43d854[_0x472d42]);}}}}return _0x43d854;};AGIVertices[_0x858c('0xf')]['recursiveNodeIndex']=function(_0x242eac){for(var _0x975bf6 in _0x242eac){if(_0x242eac[_0x858c('0x98')](_0x975bf6)){if(_[_0x858c('0x9b')](_0x242eac[_0x975bf6])){this[_0x858c('0x9c')](_0x242eac[_0x975bf6]);}else if(_[_0x858c('0x9d')](_0x242eac[_0x975bf6])){for(var _0xd56fdd=0x0;_0xd56fdd<_0x242eac[_0x975bf6][_0x858c('0x9e')];_0xd56fdd++){this[_0x858c('0x9c')](_0x242eac[_0x975bf6][_0xd56fdd]);}}else if(_[_0x858c('0x9f')](_0x242eac[_0x975bf6])){_0x242eac[_0x975bf6]=this[_0x858c('0x9a')](_0x242eac[_0x975bf6]);}}}};AGIVertices['prototype']['saveRestApiResult']=function(_0xeab789,_0x397f7d){for(var _0x42194b in _0xeab789){if(_0xeab789[_0x858c('0x98')](_0x42194b)){if(_[_0x858c('0x9b')](_0xeab789[_0x42194b])){if(!_[_0x858c('0x46')](_0xeab789[_0x42194b])){this[_0x858c('0xa0')](_0xeab789[_0x42194b],util[_0x858c('0x59')]('%s.%s',_0x397f7d,_0x42194b));}}else if(_[_0x858c('0x9d')](_0xeab789[_0x42194b])){for(var _0x4dcd50=0x0;_0x4dcd50<_0xeab789[_0x42194b][_0x858c('0x9e')];_0x4dcd50++){this[_0x858c('0xa0')](_0xeab789[_0x42194b][_0x4dcd50],util[_0x858c('0x59')](_0x858c('0xa1'),_0x397f7d,_0x42194b+'['+_0x4dcd50+']'));}}else{if(!_[_0x858c('0x47')](_0xeab789[_0x42194b])){this[_0x858c('0x37')][_0x858c('0xa2')](util[_0x858c('0x59')](_0x858c('0xa1'),_0x397f7d,_0x42194b),_0xeab789[_0x42194b]);}}}}};AGIVertices[_0x858c('0xf')]['replaceObjectAllVariables']=function(_0x3281f4){try{var _0x78b078=JSON[_0x858c('0x71')](_0x3281f4);this[_0x858c('0x9c')](_0x78b078);return JSON[_0x858c('0x78')](_0x78b078);}catch(_0xcb3fe1){return this[_0x858c('0x9a')](_0x3281f4);}};AGIVertices[_0x858c('0xf')][_0x858c('0x9a')]=function(_0x221630){var _0x5b267c=_0x221630['split']('{');for(var _0x19c72e=0x1;_0x19c72e<_0x5b267c[_0x858c('0x9e')];_0x19c72e+=0x1){var _0x5cd33c=_0x5b267c[_0x19c72e]['split']('}');if(_0x5cd33c[_0x858c('0x9e')]>0x1){_0x221630=_0x221630['replaceAll']('{'+_0x5cd33c[0x0]+'}',this[_0x858c('0x37')]['getVariable'](_0x5cd33c[0x0])[_0x858c('0xa3')]||_0x5cd33c[0x0]);}}if(_0x5b267c[_0x858c('0x9e')]===0x1){return _0x221630[_0x858c('0x4e')]();}return this['replaceAllVariables'](_0x221630);};AGIVertices[_0x858c('0xf')][_0x858c('0xa4')]=function(_0x9cd568,_0x26d66e){var _0x1fce78=this[_0x858c('0x37')][_0x858c('0x10')](_0x9cd568);if(_0x1fce78[_0x858c('0xa5')]===-0x1){return _0x1fce78;}logger['info'](util['format'](_0x858c('0xa6'),_0x26d66e,_0x1fce78[_0x858c('0xa3')]));return this[_0x858c('0x37')][_0x858c('0xa2')](_0x26d66e,_0x1fce78[_0x858c('0xa3')]);};AGIVertices[_0x858c('0xf')][_0x858c('0x88')]=function(_0x1fafd9){return _0x1fafd9&&_0x1fafd9!=='0'&&_0x1fafd9!=='-1'&&_0x1fafd9!=='';};AGIVertices['prototype'][_0x858c('0xa7')]=function(_0x49a4e1){this[_0x858c('0x36')][_0x858c('0x74')](this,_0x49a4e1,'-');_0x49a4e1['retry']=_0x49a4e1[_0x858c('0xa7')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x858c('0xf')]['mrcpsynth']=function(_0x5ca128){logger[_0x858c('0x2d')](util[_0x858c('0x59')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x5ca128[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x5ca128[_0x858c('0x61')])){return this[_0x858c('0x37')]['noop'](_0x858c('0xa8'));}var _0x23a472='\x22'+_0x5ca128[_0x858c('0x61')]+'\x22';if(this[_0x858c('0x88')](_0x5ca128['options'])){_0x23a472+=','+_0x5ca128[_0x858c('0x7c')];}var _0x14481d=this[_0x858c('0x37')][_0x858c('0x5c')]('MRCPSynth',_0x23a472);if(_0x14481d[_0x858c('0xa5')]===-0x1){return _0x14481d;}return this[_0x858c('0x37')]['noop'](util[_0x858c('0x59')](_0x858c('0xa9'),_0x23a472));};AGIVertices[_0x858c('0xf')]['mrcprecog']=function(_0x16802d){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0xaa'),_0x16802d[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x16802d[_0x858c('0xab')])){return this[_0x858c('0x37')]['noop'](_0x858c('0xac'));}var _0x3ebaa2=_0x16802d[_0x858c('0xab')];if(this['isConfigured'](_0x16802d[_0x858c('0x7c')])){_0x3ebaa2+=','+_0x16802d[_0x858c('0x7c')];}var _0x212bf0=this[_0x858c('0x37')][_0x858c('0x5c')](_0x858c('0xad'),_0x3ebaa2);if(_0x212bf0['result']===-0x1){return _0x212bf0;}var _0x4c4609=this['getAndSetVariable'](_0x858c('0xae'),_0x858c('0xaf'));if(_0x4c4609[_0x858c('0xa5')]===-0x1){return _0x4c4609;}var _0x4ea039=this[_0x858c('0xa4')](_0x858c('0xb0'),_0x858c('0xb1'));if(_0x4ea039[_0x858c('0xa5')]===-0x1){return _0x4ea039;}var _0x5115a9=this['getAndSetVariable'](_0x858c('0xb2'),_0x858c('0xb3'));if(_0x5115a9[_0x858c('0xa5')]===-0x1){return _0x5115a9;}return this[_0x858c('0x37')][_0x858c('0xb4')](util['format'](_0x858c('0xb5'),_0x3ebaa2));};AGIVertices[_0x858c('0xf')][_0x858c('0x7')]=function(_0x3a45b4){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0xb6'),_0x3a45b4[_0x858c('0x39')]));return this[_0x858c('0x37')]['agi']([_0x3a45b4[_0x858c('0xb7')],_0x3a45b4[_0x858c('0xb8')]]);};AGIVertices[_0x858c('0xf')]['answer']=function(_0x48d76f){logger['info'](util['format']('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x48d76f[_0x858c('0x39')]));if(this[_0x858c('0x88')](_0x48d76f[_0x858c('0x69')])){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0xb9'),_0x48d76f['timeout']));var _0xab93a1=this[_0x858c('0x37')][_0x858c('0xba')](_0x48d76f[_0x858c('0x69')]);if(_0xab93a1[_0x858c('0xa5')]===-0x1){return _0xab93a1;}}return this['channel']['answer']();};AGIVertices['prototype'][_0x858c('0x4c')]=function(_0xbd910e){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0xbb'),_0xbd910e[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0xbd910e[_0x858c('0xbc')])){return this['channel'][_0x858c('0x53')](_0xbd910e,_0x858c('0xbd'));}_0xbd910e[_0x858c('0x4b')]=moment();if(this[_0x858c('0x88')](_0xbd910e[_0x858c('0xbe')])){_0xbd910e[_0x858c('0x4b')]=moment()['add'](_0xbd910e[_0x858c('0xbe')],'minutes');}if(!this[_0x858c('0x88')](_0xbd910e[_0x858c('0x4f')])){_0xbd910e[_0x858c('0x4f')]=0x2;}this['createCmContact']['sync'](this,_0xbd910e);return this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0xbf'),_0xbd910e[_0x858c('0xc0')],_0xbd910e[_0x858c('0xbc')],_0xbd910e[_0x858c('0x4b')]));};AGIVertices[_0x858c('0xf')][_0x858c('0xc1')]=function(_0x346871){logger['info'](util[_0x858c('0x59')](_0x858c('0xc2'),_0x346871[_0x858c('0x39')]));var _0x248eb2=this[_0x858c('0x37')][_0x858c('0x5c')](_0x346871[_0x858c('0xc3')],_0x346871['options']);if(_0x248eb2[_0x858c('0xa5')]===-0x1){return _0x248eb2;}return this[_0x858c('0x37')][_0x858c('0xb4')](util['format'](_0x858c('0xc4'),_0x346871['application'],_0x346871[_0x858c('0x7c')]));};AGIVertices[_0x858c('0xf')][_0x858c('0xc5')]=function(_0x4e5b6e){logger[_0x858c('0x2d')](util['format'](_0x858c('0xc6'),_0x4e5b6e[_0x858c('0x39')]));if(!this['isConfigured'](_0x4e5b6e['text'])){return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0xa8'));}var _0x5643d4='\x22'+_0x4e5b6e[_0x858c('0x61')]+'\x22';if(this[_0x858c('0x88')](_0x4e5b6e[_0x858c('0x7c')])){_0x5643d4+=','+_0x4e5b6e['options'];}var _0x1db8de=this[_0x858c('0x37')][_0x858c('0x5c')](_0x858c('0xc7'),_0x5643d4);if(_0x1db8de['result']===-0x1){return _0x1db8de;}return this[_0x858c('0x37')][_0x858c('0xb4')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x5643d4));};AGIVertices['prototype']['sestektts']=function(_0x9e3c8){logger['info'](util[_0x858c('0x59')](_0x858c('0xc8'),_0x9e3c8[_0x858c('0x39')]));if(!this['isConfigured'](_0x9e3c8['text'])){return this['channel'][_0x858c('0xb4')]('no\x20text\x20configured');}var _0x3123a6='\x22'+_0x9e3c8['text']+'\x22';if(this['isConfigured'](_0x9e3c8[_0x858c('0x7c')])){_0x3123a6+=','+_0x9e3c8[_0x858c('0x7c')];}var _0x17ea81=this['channel'][_0x858c('0x5c')]('MRCPSynth',_0x3123a6);if(_0x17ea81[_0x858c('0xa5')]===-0x1){return _0x17ea81;}return this['channel'][_0x858c('0xb4')](util[_0x858c('0x59')]('Executed\x20command\x20MRCPSynth\x20%s',_0x3123a6));};AGIVertices['prototype'][_0x858c('0xc9')]=function(_0x4290e5){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0xca'),_0x4290e5[_0x858c('0x39')]));if(!this['isConfigured'](_0x4290e5['grammar'])){return this[_0x858c('0x37')][_0x858c('0xb4')]('no\x20grammar\x20configured');}var _0x3f5840=_0x4290e5[_0x858c('0xab')];if(this[_0x858c('0x88')](_0x4290e5[_0x858c('0x7c')])){_0x3f5840+=','+_0x4290e5[_0x858c('0x7c')];}var _0x522c0e=this[_0x858c('0x37')][_0x858c('0x5c')]('MRCPRecog',_0x3f5840);if(_0x522c0e[_0x858c('0xa5')]===-0x1){return _0x522c0e;}var _0x4a7f70=this[_0x858c('0xa4')]('RECOG_CONFIDENCE()',_0x858c('0xcb'));if(_0x4a7f70['result']===-0x1){return _0x4a7f70;}var _0x5f4ffd=this[_0x858c('0xa4')](_0x858c('0xb0'),_0x858c('0xcc'));if(_0x5f4ffd[_0x858c('0xa5')]===-0x1){return _0x5f4ffd;}var _0x2eafb5=this['getAndSetVariable']('RECOG_INSTANCE()',_0x858c('0xcd'));if(_0x2eafb5[_0x858c('0xa5')]===-0x1){return _0x2eafb5;}return this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0xb5'),_0x3f5840));};AGIVertices[_0x858c('0xf')][_0x858c('0xce')]=function(_0x4dc586){logger['info'](util[_0x858c('0x59')](_0x858c('0xcf'),_0x4dc586['label']));if(!this[_0x858c('0x88')](_0x4dc586['grammar'])){return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0xac'));}var _0x5d258e=_0x4dc586[_0x858c('0xab')];if(this[_0x858c('0x88')](_0x4dc586['options'])){_0x5d258e+=','+_0x4dc586['options'];}var _0x5c2eb0=this[_0x858c('0x37')][_0x858c('0x5c')](_0x858c('0xad'),_0x5d258e);if(_0x5c2eb0[_0x858c('0xa5')]===-0x1){return _0x5c2eb0;}var _0x330ce8=this[_0x858c('0xa4')](_0x858c('0xae'),'SESTEK_ASR_CONFIDENCE');if(_0x330ce8[_0x858c('0xa5')]===-0x1){return _0x330ce8;}var _0x4a0967=this[_0x858c('0xa4')](_0x858c('0xb0'),'SESTEK_ASR_TRANSCRIPT');if(_0x4a0967['result']===-0x1){return _0x4a0967;}var _0x4d731b=this['getAndSetVariable']('RECOG_INSTANCE()',_0x858c('0xd0'));if(_0x4d731b[_0x858c('0xa5')]===-0x1){return _0x4d731b;}return this['channel']['noop'](util['format'](_0x858c('0xb5'),_0x5d258e));};AGIVertices[_0x858c('0xf')][_0x858c('0xd1')]=function(_0x552a4c){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0xd2'),_0x552a4c[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x552a4c['odbc_id'])){return this[_0x858c('0x37')][_0x858c('0x53')](_0x552a4c,_0x858c('0xd3'));}var _0x36d889=this[_0x858c('0x19')][_0x858c('0x74')](this,_0x552a4c[_0x858c('0xd4')]);if(!_0x36d889){return this[_0x858c('0x37')][_0x858c('0x53')](_0x552a4c,'no\x20odbc\x20database\x20found');}if(!this[_0x858c('0x88')](_0x552a4c[_0x858c('0x2f')])){return this[_0x858c('0x37')]['error'](_0x552a4c,_0x858c('0xd5'));}var _0x1f4657=_0x552a4c['query'][_0x858c('0xd6')](/(\r\n|\n|\r)/gm,'\x20');this[_0x858c('0x37')]['noop'](util['format']('query:\x20%s',_0x1f4657));var _0x47e567=this[_0x858c('0x2a')][_0x858c('0x74')](this,_0x36d889,_0x1f4657);this['createSquareDetailsReport'][_0x858c('0x74')](this,_0x552a4c,_0x1f4657);if(!this['isConfigured'](_0x552a4c['variable_id'])){return this['channel'][_0x858c('0xb4')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x508bc7=this[_0x858c('0x10')]['sync'](this,_0x552a4c[_0x858c('0xd7')]);if(!_0x508bc7){return this['channel'][_0x858c('0x53')](_0x552a4c,_0x858c('0xd8'));}var _0x6688ec=this;_0x47e567[_0x858c('0xd9')](function(_0x173a1c,_0x48adfa){Object[_0x858c('0xda')](_0x173a1c)[_0x858c('0xd9')](function(_0x47fd95){_0x6688ec[_0x858c('0x37')]['setVariable'](util['format'](_0x858c('0xdb'),_0x508bc7,_0x48adfa,_0x47fd95),_0x173a1c[_0x47fd95]);});});this[_0x858c('0x37')][_0x858c('0xa2')](util[_0x858c('0x59')](_0x858c('0xdc'),_0x508bc7),_0x47e567[_0x858c('0x9e')]);return this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0xdd'),_0x508bc7));};AGIVertices[_0x858c('0xf')][_0x858c('0xde')]=function(_0x4a9322){logger['debug'](util[_0x858c('0x59')](_0x858c('0xdf'),_0x4a9322['label']));if(!this['isConfigured'](_0x4a9322[_0x858c('0xe0')])){return this['channel']['error'](_0x4a9322,_0x858c('0xe1'));}var _0x568b4f=this['getUser'][_0x858c('0x74')](this,_0x4a9322['sip_id']);if(!_0x568b4f){return this[_0x858c('0x37')][_0x858c('0x53')](_0x4a9322,'no\x20user\x20found');}var _0x388dcd=this[_0x858c('0x37')]['exec'](_0x858c('0xe2'),[util[_0x858c('0x59')](_0x858c('0xe3'),_0x568b4f),_0x4a9322[_0x858c('0x69')],_0x4a9322[_0x858c('0xe4')],_0x4a9322['url']]);if(_0x388dcd[_0x858c('0xa5')]===-0x1){return _0x388dcd;}return this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0xe5'),_0x858c('0xe2')));};AGIVertices[_0x858c('0xf')]['dialogflow']=function(_0x282ca2){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0xe6'),_0x282ca2[_0x858c('0x39')]));if(!this['isConfigured'](_0x282ca2['key'])){return this[_0x858c('0x37')][_0x858c('0xb4')]('no\x20key\x20configured');}if(!this[_0x858c('0x88')](_0x282ca2[_0x858c('0x61')])){return this[_0x858c('0x37')]['noop'](_0x858c('0xa8'));}this[_0x858c('0x37')][_0x858c('0xe7')]=!![];this[_0x858c('0x36')](_0x282ca2);this[_0x858c('0x44')](_0x282ca2[_0x858c('0x61')],'in','','');this['channel'][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0xe8'),_0x282ca2['text']));var _0x5abe1c=this['googleDialogflow']['sync'](this,_0x282ca2);if(_0x5abe1c){for(var _0xb05573 in _0x5abe1c){if(_0x5abe1c[_0x858c('0x98')](_0xb05573)){this[_0x858c('0x37')]['setVariable'](util['format'](_0x858c('0xe9'),_0xb05573[_0x858c('0x6d')]()),_0x5abe1c[_0xb05573]);}}this[_0x858c('0x44')](_0x5abe1c[_0x858c('0xea')],_0x858c('0xeb'),_0x858c('0xec'),'');return this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0xed'),_0x5abe1c['speech']));}return this[_0x858c('0x37')][_0x858c('0x53')](_0x282ca2,_0x858c('0xee'));};AGIVertices[_0x858c('0xf')]['dialogflowV2']=function(_0x20a588){logger[_0x858c('0x2d')](util[_0x858c('0x59')]('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x20a588[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x20a588[_0x858c('0x7f')])){return this['channel'][_0x858c('0xb4')]('no\x20project_id\x20configured');}if(!this[_0x858c('0x88')](_0x20a588[_0x858c('0xef')])){return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0xf0'));}if(!this[_0x858c('0x88')](_0x20a588[_0x858c('0x80')])){return this[_0x858c('0x37')]['noop'](_0x858c('0xf1'));}if(!this[_0x858c('0x88')](_0x20a588[_0x858c('0x81')])){return this[_0x858c('0x37')]['noop'](_0x858c('0xf2'));}if(!this[_0x858c('0x88')](_0x20a588[_0x858c('0x61')])){return this[_0x858c('0x37')][_0x858c('0xb4')]('no\x20text\x20configured');}this[_0x858c('0x37')][_0x858c('0xe7')]=!![];this[_0x858c('0x36')](_0x20a588);this['createSquareMessage'](_0x20a588['text'],'in','','');this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0xf3'),_0x20a588[_0x858c('0x61')]));var _0x36d34c=this[_0x858c('0x7e')][_0x858c('0x74')](this,_0x20a588);if(_0x36d34c){for(var _0x5602ca in _0x36d34c){if(_0x36d34c[_0x858c('0x98')](_0x5602ca)){if(_0x5602ca!=='providerResponse'){this[_0x858c('0x37')][_0x858c('0xa2')](util[_0x858c('0x59')]('DIALOGFLOW_%s',_0x5602ca[_0x858c('0x6d')]()),_0x36d34c[_0x5602ca]);}}}this[_0x858c('0x44')](_0x36d34c[_0x858c('0xea')],_0x858c('0xeb'),_0x858c('0xf4'),_0x36d34c[_0x858c('0xf5')]);return this[_0x858c('0x37')]['noop'](util[_0x858c('0x59')](_0x858c('0xf6'),_0x36d34c[_0x858c('0xea')]));}return this[_0x858c('0x37')][_0x858c('0x53')](_0x20a588,_0x858c('0xf7'));};AGIVertices[_0x858c('0xf')]['sesteknda']=function(_0x26440){logger[_0x858c('0x2d')](util[_0x858c('0x59')]('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x26440[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x26440[_0x858c('0xf8')])){return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0xf9'));}if(!this[_0x858c('0x88')](_0x26440['username'])){return this[_0x858c('0x37')][_0x858c('0xb4')]('no\x20username\x20configured');}if(!this[_0x858c('0x88')](_0x26440[_0x858c('0xfa')])){return this[_0x858c('0x37')][_0x858c('0xb4')]('no\x20password\x20configured');}if(!this[_0x858c('0x88')](_0x26440[_0x858c('0xfb')])){return this['channel']['noop'](_0x858c('0xa8'));}this[_0x858c('0x37')][_0x858c('0xe7')]=!![];this[_0x858c('0x36')](_0x26440);this['createSquareMessage'](_0x26440[_0x858c('0x61')],'in','','');this[_0x858c('0x37')]['noop'](util[_0x858c('0x59')](_0x858c('0xfc'),_0x26440[_0x858c('0x61')]));var _0x6a53e0=this[_0x858c('0x82')][_0x858c('0x74')](this,_0x26440);if(_0x6a53e0){for(var _0x159cb4 in _0x6a53e0){if(_0x6a53e0[_0x858c('0x98')](_0x159cb4)){this['channel']['setVariable'](util[_0x858c('0x59')](_0x858c('0xfd'),_0x159cb4[_0x858c('0x6d')]()),_0x6a53e0[_0x159cb4]);}}this[_0x858c('0x44')](_0x6a53e0[_0x858c('0xea')],'out',_0x858c('0xfe'),'');if(_0x6a53e0[_0x858c('0xff')]){this['channel'][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x100'),_0x6a53e0['audiofile']));var _0xb868fd=this[_0x858c('0x37')][_0x858c('0x101')](_0x6a53e0[_0x858c('0xff')]);try{fs[_0x858c('0x102')](_0x6a53e0['audiofile']+_0x858c('0x103'));}catch(_0x217a08){logger[_0x858c('0x53')](_0x217a08);}return _0xb868fd;}else{return this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x104'),_0x6a53e0[_0x858c('0xea')]));}}return this[_0x858c('0x37')][_0x858c('0x53')](_0x26440,_0x858c('0x105'));};AGIVertices[_0x858c('0xf')][_0x858c('0x106')]=function(_0x4a3602){logger[_0x858c('0x2d')](util[_0x858c('0x59')]('Enter\x20in\x20END\x20(%s)\x20block',_0x4a3602[_0x858c('0x39')]));return this[_0x858c('0x37')]['noop']('end');};AGIVertices['prototype'][_0x858c('0x107')]=function(_0x597b40){logger[_0x858c('0x2d')](util[_0x858c('0x59')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x597b40['label']));var _0x5ce21b='';if(_0x597b40['trunk_id']){if(!this[_0x858c('0x88')](_0x597b40[_0x858c('0x108')])){return this[_0x858c('0x37')][_0x858c('0x53')](_0x597b40,_0x858c('0x109'));}else{var _0x369c17=parseInt(_0x597b40[_0x858c('0x108')],0xa);if(isNaN(_0x369c17)){_0x5ce21b=_0x597b40[_0x858c('0x108')];}else{_0x5ce21b=this[_0x858c('0x10a')][_0x858c('0x74')](this,_0x597b40[_0x858c('0x108')]);if(!_0x5ce21b){return this['channel'][_0x858c('0x53')](_0x597b40,_0x858c('0x10b'));}}}}else if(_0x597b40['trunk_name']){_0x5ce21b=_0x597b40[_0x858c('0x10c')];}else{return this[_0x858c('0x37')][_0x858c('0x53')](_0x597b40,_0x858c('0x109'));}var _0x8acb76=this['channel'][_0x858c('0x5c')](_0x858c('0xe2'),[util['format'](_0x858c('0x10d'),_0x5ce21b,_0x597b40['phone']),_0x597b40['timeout'],_0x597b40['opts'],_0x597b40[_0x858c('0x67')]]);if(_0x8acb76[_0x858c('0xa5')]===-0x1){return _0x8acb76;}return this['channel'][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0xe5'),_0x858c('0xe2')));};AGIVertices['prototype'][_0x858c('0x10e')]=function(_0x4235ba){logger['info'](util['format'](_0x858c('0x10f'),_0x4235ba['label']));return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0x10e'));};AGIVertices[_0x858c('0xf')][_0x858c('0xc')]=function(_0x2931cd){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x110'),_0x2931cd[_0x858c('0x39')]));if(_0x2931cd[_0x858c('0x111')]===0x0){return this[_0x858c('0xa7')](_0x2931cd);}_0x2931cd['retry']-=0x1;if(!this[_0x858c('0x88')](_0x2931cd[_0x858c('0x112')])){return this['channel'][_0x858c('0x53')](_0x2931cd,_0x858c('0x113'));}var _0x2d0b26=this['getSound']['sync'](this,_0x2931cd[_0x858c('0x112')]);if(!_0x2d0b26){return this[_0x858c('0x37')][_0x858c('0x53')](_0x2931cd,_0x858c('0x114'));}if(!this['isConfigured'](_0x2931cd[_0x858c('0xd7')])){return this[_0x858c('0x37')][_0x858c('0x53')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x52d70d=this[_0x858c('0x37')][_0x858c('0x115')](_0x2d0b26,_0x2931cd[_0x858c('0x116')],_0x2931cd[_0x858c('0x117')]);var _0x513bef=_0x52d70d[_0x858c('0xa5')]?_0x52d70d[_0x858c('0xa5')][_0x858c('0x4e')]():'';logger[_0x858c('0x2d')](_0x858c('0x118'),JSON[_0x858c('0x78')](_0x52d70d));if(_0x52d70d[_0x858c('0xa5')]===-0x1){this[_0x858c('0x36')]['sync'](this,_0x2931cd,_0x513bef);return _0x52d70d;}else if(_0x52d70d[_0x858c('0xa3')]===_0x858c('0x69')){_0x52d70d[_0x858c('0xa5')]=_0x513bef[_0x858c('0x9e')]>=parseInt(_0x2931cd[_0x858c('0x119')])?'x':'i';}else{_0x52d70d[_0x858c('0xa5')]=_0x513bef['length']>=parseInt(_0x2931cd[_0x858c('0x119')])&&_0x513bef[_0x858c('0x9e')]<=parseInt(_0x2931cd['maxdigit'])?'x':'i';}var _0x482015=this[_0x858c('0x10')][_0x858c('0x74')](this,_0x2931cd[_0x858c('0xd7')]);if(!_0x482015){return this[_0x858c('0x37')][_0x858c('0x53')](_0x2931cd,_0x858c('0xd8'));}this[_0x858c('0x37')][_0x858c('0xa2')](_0x482015,_0x513bef);if(this[_0x858c('0x88')](_0x2931cd['hiddendigitsnum'])){var _0x8fccc2=parseInt(_0x2931cd[_0x858c('0x11a')],0xa);var _0x5496d6=rs[_0x858c('0x11b')]({'charset':'*','length':_0x8fccc2});var _0x3ebca8=_0x513bef[_0x858c('0x9e')];if(_0x3ebca8>0x0){if(_0x3ebca8>_0x8fccc2){this[_0x858c('0x36')][_0x858c('0x74')](this,_0x2931cd,_0x2931cd[_0x858c('0x11c')]===_0x858c('0x11d')?_0x5496d6+_0x513bef[_0x858c('0x11e')](_0x8fccc2):_0x513bef[_0x858c('0x11e')](0x0,_0x3ebca8-_0x8fccc2)+_0x5496d6);}else{this[_0x858c('0x36')][_0x858c('0x74')](this,_0x2931cd,rs[_0x858c('0x11b')]({'charset':'*','length':_0x3ebca8}));}}else{this['createSquareDetailsReport'][_0x858c('0x74')](this,_0x2931cd,'');}}else{this[_0x858c('0x36')][_0x858c('0x74')](this,_0x2931cd,_0x513bef);}return _0x52d70d;};AGIVertices['prototype']['getsecretdigits']=function(_0x5d02cc){logger[_0x858c('0x2d')](util['format'](_0x858c('0x11f'),_0x5d02cc[_0x858c('0x39')]));return this['getdigits'](_0x5d02cc);};AGIVertices[_0x858c('0xf')][_0x858c('0x120')]=function(_0x2d751d){logger[_0x858c('0x2d')](util[_0x858c('0x59')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x2d751d[_0x858c('0x39')]));this[_0x858c('0x36')][_0x858c('0x74')](this,_0x2d751d,_0x2d751d[_0x858c('0x121')]);return this[_0x858c('0x37')][_0x858c('0xb4')](util['format'](_0x858c('0x122'),_0x2d751d[_0x858c('0x121')]));};AGIVertices[_0x858c('0xf')][_0x858c('0x123')]=function(_0x258289){logger['info'](util[_0x858c('0x59')]('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x258289['label']));if(!this[_0x858c('0x88')](_0x258289[_0x858c('0x8b')])||!this[_0x858c('0x88')](_0x258289[_0x858c('0x8c')])){return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0x124'));}if(!this[_0x858c('0x88')](_0x258289[_0x858c('0x61')])){return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0xa8'));}this[_0x858c('0x37')]['noop'](util[_0x858c('0x59')](_0x858c('0x125'),_0x258289[_0x858c('0x61')]));var _0x254385=this[_0x858c('0x8a')][_0x858c('0x74')](this,_0x258289);if(_0x254385){this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x126'),_0x254385));var _0x8a31ca=this[_0x858c('0x37')][_0x858c('0x101')](_0x254385);try{fs['unlink'](_0x254385+_0x858c('0x103'));}catch(_0x2fb76f){logger[_0x858c('0x53')](_0x2fb76f);}return _0x8a31ca;}return this[_0x858c('0x37')][_0x858c('0x53')](_0x258289,_0x858c('0x127'));};AGIVertices[_0x858c('0xf')][_0x858c('0x128')]=function(_0x2fb722){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x129'),_0x2fb722[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x2fb722[_0x858c('0x8b')])||!this[_0x858c('0x88')](_0x2fb722[_0x858c('0x8c')])){return this[_0x858c('0x37')]['noop'](_0x858c('0x124'));}if(!this[_0x858c('0x88')](_0x2fb722['aws_bot_name'])){return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0x12a'));}if(!this[_0x858c('0x88')](_0x2fb722[_0x858c('0x61')])){return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0xa8'));}this[_0x858c('0x37')]['bot']=!![];this[_0x858c('0x36')](_0x2fb722);this[_0x858c('0x44')](_0x2fb722[_0x858c('0x61')],'in','','');this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x12b'),_0x2fb722[_0x858c('0x61')]));var _0x299596=this[_0x858c('0x91')]['sync'](this,_0x2fb722);if(_0x299596){for(var _0x2b6d2b in _0x299596){if(_0x299596[_0x858c('0x98')](_0x2b6d2b)&&_[_0x858c('0x9f')](_0x299596[_0x2b6d2b])){this['channel']['setVariable'](util[_0x858c('0x59')](_0x858c('0x12c'),_0x2b6d2b[_0x858c('0x6d')]()),_0x299596[_0x2b6d2b]);}}if(_['isNil'](_0x299596[_0x858c('0x7b')])){return this['channel'][_0x858c('0xb4')](_0x858c('0x12d'));}else{this[_0x858c('0x44')](_0x299596[_0x858c('0x7b')],_0x858c('0xeb'),'amazonlex','');return this[_0x858c('0x37')]['noop'](util[_0x858c('0x59')]('Amazon\x20Lex\x20Result\x20%s',_0x299596[_0x858c('0x7b')]));}}return this[_0x858c('0x37')][_0x858c('0x53')](_0x2fb722,_0x858c('0x12e'));};AGIVertices[_0x858c('0xf')][_0x858c('0x12f')]=function(_0x5d49d1){logger['info'](util[_0x858c('0x59')](_0x858c('0x130'),_0x5d49d1[_0x858c('0x39')],_0x5d49d1[_0x858c('0x69')]));if(!this[_0x858c('0x88')](_0x5d49d1[_0x858c('0x86')])){return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0x131'));}var _0x51b221=_0x858c('0x132');var _0x7d9800=util[_0x858c('0x59')](_0x858c('0x133'),FILES_PATH,rs[_0x858c('0x11b')](0x4));var _0x2e68b3=util[_0x858c('0x59')](_0x858c('0xa1'),_0x7d9800,_0x51b221);var _0x57377d=!![];if(_0x5d49d1[_0x858c('0x134')]===_0x858c('0x135')){_0x57377d=![];}var _0x39e14d=this['channel'][_0x858c('0x136')](_0x7d9800,_0x51b221,_0x5d49d1['intKey'],_0x5d49d1['timeout'],undefined,_0x57377d);if(_0x39e14d[_0x858c('0xa5')]!==-0x1){this['channel'][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x137'),_0x2e68b3));var _0x5a9e5e=this[_0x858c('0x93')]['sync'](this,_0x5d49d1,_0x2e68b3);if(_0x5a9e5e){for(var _0x2350ce in _0x5a9e5e){if(_0x5a9e5e['hasOwnProperty'](_0x2350ce)){this[_0x858c('0x37')][_0x858c('0xa2')](util[_0x858c('0x59')](_0x858c('0x138'),_0x2350ce[_0x858c('0x6d')]()),_0x5a9e5e[_0x2350ce]);}}return this['channel'][_0x858c('0xb4')](util['format'](_0x858c('0x139'),JSON[_0x858c('0x78')](_0x5a9e5e)));}}return _0x39e14d;};AGIVertices[_0x858c('0xf')][_0x858c('0x13a')]=function(_0x3d7b3c){logger[_0x858c('0x2d')](util['format'](_0x858c('0x13b'),_0x3d7b3c['label']));if(!this['isConfigured'](_0x3d7b3c[_0x858c('0x13c')])){return this['channel'][_0x858c('0xb4')](_0x858c('0x13d'));}if(!this[_0x858c('0x88')](_0x3d7b3c[_0x858c('0x13e')])){return this[_0x858c('0x37')][_0x858c('0xb4')]('no\x20appsecret\x20configured');}var _0x55fbc4=_0x858c('0x132');var _0x3e835b=util[_0x858c('0x59')](_0x858c('0x133'),FILES_PATH,rs['generate'](0x4));var _0x52f870=util[_0x858c('0x59')](_0x858c('0xa1'),_0x3e835b,_0x55fbc4);var _0x3ef416=!![];if(_0x3d7b3c[_0x858c('0x134')]==='NOBEEP'){_0x3ef416=![];}var _0x42b16e=this[_0x858c('0x37')][_0x858c('0x136')](_0x3e835b,_0x55fbc4,_0x3d7b3c[_0x858c('0x13f')],_0x3d7b3c['timeout'],undefined,_0x3ef416);if(_0x42b16e[_0x858c('0xa5')]!==-0x1){this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')]('tilde\x20%s\x20file\x20created',_0x52f870));var _0x229b46=this[_0x858c('0x95')][_0x858c('0x74')](this,_0x3d7b3c,_0x52f870);if(_0x229b46){for(var _0xee707e in _0x229b46){if(_0x229b46[_0x858c('0x98')](_0xee707e)){this[_0x858c('0x37')][_0x858c('0xa2')](util[_0x858c('0x59')](_0x858c('0x140'),_0xee707e[_0x858c('0x6d')]()),_0x229b46[_0xee707e]);}}return this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')]('TildeASR\x20Result\x20%s',JSON['stringify'](_0x229b46)));}}return _0x42b16e;};AGIVertices[_0x858c('0xf')][_0x858c('0x141')]=function(_0x5cd5e4){logger['info'](util[_0x858c('0x59')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x5cd5e4[_0x858c('0x39')]));return this[_0x858c('0x37')][_0x858c('0x142')](_0x5cd5e4[_0x858c('0x3e')],_0x5cd5e4[_0x858c('0x3f')],_0x5cd5e4[_0x858c('0x40')]);};AGIVertices['prototype'][_0x858c('0x143')]=function(_0x3271aa){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x144'),_0x3271aa[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x3271aa[_0x858c('0x145')])){return this['channel']['error'](_0x3271aa,_0x858c('0x146'));}try{var _0x2d5c9a=eval(_0x3271aa[_0x858c('0x145')])?_0x858c('0x147'):'false';this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')]('EVAL\x20CONDITION\x20%s\x20%s',_0x3271aa['condition'],_0x2d5c9a));return{'code':0xc8,'result':_0x2d5c9a};}catch(_0x4fbc06){return{'code':0xc8,'result':_0x858c('0x148')};}};AGIVertices[_0x858c('0xf')]['gotoiftime']=function(_0x35eb96){logger['info'](util['format']('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x35eb96[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x35eb96[_0x858c('0x149')])){return this['channel'][_0x858c('0x53')](_0x35eb96,_0x858c('0x14a'));}var _0x2ea85d=this[_0x858c('0x26')][_0x858c('0x74')](this,_0x35eb96[_0x858c('0x149')]);if(!_0x2ea85d){return this[_0x858c('0x37')][_0x858c('0x53')](_0x35eb96,_0x858c('0x14b'));}for(var _0x627b50=0x0;_0x627b50<_0x2ea85d[_0x858c('0x9e')];_0x627b50+=0x1){var _0x49ca14=this[_0x858c('0x37')]['getVariable'](util[_0x858c('0x59')]('IFTIME(%s?true:false)',_0x2ea85d[_0x627b50]));if(_0x49ca14['result']===-0x1){return _0x49ca14;}logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x14c'),_0x2ea85d[_0x627b50],_0x49ca14[_0x858c('0xa3')]));if(_0x49ca14['extra']===_0x858c('0x147')){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x14c'),_0x2ea85d[_0x627b50],'true'));this['channel'][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x14c'),_0x2ea85d[_0x627b50],_0x858c('0x147')));return{'code':0xc8,'result':_0x858c('0x147')};}else{logger['info'](util[_0x858c('0x59')](_0x858c('0x14c'),_0x2ea85d[_0x627b50],_0x858c('0x148')));this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x14c'),_0x2ea85d[_0x627b50],_0x858c('0x148')));}}return{'code':0xc8,'result':_0x858c('0x148')};};AGIVertices[_0x858c('0xf')][_0x858c('0x14d')]=function(_0x257a7d){logger[_0x858c('0x2d')](util['format'](_0x858c('0x14e'),_0x257a7d[_0x858c('0x39')]));return this['channel'][_0x858c('0x14d')]();};AGIVertices[_0x858c('0xf')]['ispeechasr']=function(_0x2595e3){logger[_0x858c('0x2d')](util['format'](_0x858c('0x14f'),_0x2595e3[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x2595e3[_0x858c('0x86')])){return this[_0x858c('0x37')][_0x858c('0xb4')]('no\x20key\x20configured');}var _0x205d50=_0x858c('0x132');var _0x301fe7=util[_0x858c('0x59')]('%s/recordings/%s',FILES_PATH,rs[_0x858c('0x11b')](0x4));var _0x5bb0bf=util[_0x858c('0x59')]('%s.%s',_0x301fe7,_0x205d50);var _0x47f0f5=!![];if(_0x2595e3[_0x858c('0x134')]===_0x858c('0x135')){_0x47f0f5=![];}var _0x36b30e=this['channel']['recordFile'](_0x301fe7,_0x205d50,_0x2595e3[_0x858c('0x13f')],_0x2595e3[_0x858c('0x69')],undefined,_0x47f0f5);if(_0x36b30e[_0x858c('0xa5')]!==-0x1){this['channel']['noop'](util['format'](_0x858c('0x150'),_0x5bb0bf));var _0x281048=this[_0x858c('0x85')][_0x858c('0x74')](this,_0x2595e3,_0x5bb0bf);if(_0x281048){for(var _0x16b996 in _0x281048){if(_0x281048['hasOwnProperty'](_0x16b996)){this[_0x858c('0x37')][_0x858c('0xa2')](util[_0x858c('0x59')](_0x858c('0x151'),_0x16b996[_0x858c('0x6d')]()),_0x281048[_0x16b996]);}}return this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')]('IspeechASR\x20Result\x20%s',JSON[_0x858c('0x78')](_0x281048)));}}return _0x36b30e;};AGIVertices[_0x858c('0xf')][_0x858c('0x152')]=function(_0x3e0ef8){logger[_0x858c('0x2d')](util['format'](_0x858c('0x153'),_0x3e0ef8['label']));if(!this[_0x858c('0x88')](_0x3e0ef8[_0x858c('0x86')])){return this[_0x858c('0x37')]['noop']('no\x20key\x20configured');}if(!this[_0x858c('0x88')](_0x3e0ef8['text'])){return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0xa8'));}this['channel'][_0x858c('0xb4')](util[_0x858c('0x59')]('Trying\x20ispeech\x20TTS\x20%s',_0x3e0ef8[_0x858c('0x61')]));var _0x2b52a2=this[_0x858c('0x83')][_0x858c('0x74')](this,_0x3e0ef8);if(_0x2b52a2){this[_0x858c('0x37')]['noop'](util[_0x858c('0x59')](_0x858c('0x150'),_0x2b52a2));var _0x2c2db2=this[_0x858c('0x37')][_0x858c('0x101')](_0x2b52a2,_0x3e0ef8[_0x858c('0x13f')]);try{fs[_0x858c('0x102')](_0x2b52a2+_0x858c('0x103'));}catch(_0x25eca3){logger[_0x858c('0x53')](_0x25eca3);}return _0x2c2db2;}return this[_0x858c('0x37')][_0x858c('0x53')](_0x3e0ef8,_0x858c('0x154'));};AGIVertices[_0x858c('0xf')][_0x858c('0x155')]=function(_0x6d3a45){logger[_0x858c('0x2d')](util[_0x858c('0x59')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x6d3a45['label']));if(!this['isConfigured'](_0x6d3a45['findBy'])){return this[_0x858c('0x37')][_0x858c('0x53')](_0x6d3a45,'no\x20find\x20by\x20configured');}logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x156'),this[_0x858c('0x37')]['callerid'],_0x6d3a45[_0x858c('0x157')]));var _0x24cd61=this[_0x858c('0x57')]['sync'](this,_0x6d3a45[_0x858c('0x157')]);if(_0x24cd61){logger[_0x858c('0x2d')](util[_0x858c('0x59')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x858c('0x37')][_0x858c('0x3c')],_0x6d3a45[_0x858c('0x157')]));this[_0x858c('0x37')][_0x858c('0xb4')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x858c('0x37')][_0x858c('0x3c')],_0x6d3a45['findBy']));return{'code':0xc8,'result':_0x858c('0x158')};}else{logger[_0x858c('0x2d')](util['format'](_0x858c('0x159'),this[_0x858c('0x37')][_0x858c('0x3c')],_0x6d3a45['findBy']));this[_0x858c('0x37')][_0x858c('0xb4')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x858c('0x37')][_0x858c('0x3c')],_0x6d3a45[_0x858c('0x157')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype']['logout']=function(_0x1b288c){logger['info'](util[_0x858c('0x59')](_0x858c('0x15a'),_0x1b288c[_0x858c('0x39')]));if(!this['isConfigured'](_0x1b288c[_0x858c('0x157')])){return this[_0x858c('0x37')][_0x858c('0x53')](_0x1b288c,_0x858c('0x15b'));}logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x156'),this[_0x858c('0x37')]['callerid'],_0x1b288c['findBy']));var _0x215749=this[_0x858c('0x55')][_0x858c('0x74')](this,_0x1b288c[_0x858c('0x157')]);if(_0x215749){logger[_0x858c('0x2d')](util[_0x858c('0x59')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x858c('0x3c')],_0x1b288c['findBy']));this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x15c'),this[_0x858c('0x37')]['callerid'],_0x1b288c['findBy']));return{'code':0xc8,'result':_0x858c('0x158')};}else{logger[_0x858c('0x2d')](util[_0x858c('0x59')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x858c('0x37')][_0x858c('0x3c')],_0x1b288c[_0x858c('0x157')]));this['channel']['noop'](util[_0x858c('0x59')](_0x858c('0x159'),this[_0x858c('0x37')][_0x858c('0x3c')],_0x1b288c[_0x858c('0x157')]));return{'code':0xc8,'result':_0x858c('0x15d')};}};AGIVertices[_0x858c('0xf')]['math']=function(_0x35de57){logger['info'](util[_0x858c('0x59')](_0x858c('0x15e'),_0x35de57[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x35de57['operation'])){return this[_0x858c('0x37')][_0x858c('0x53')](_0x35de57,_0x858c('0x15f'));}this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x160'),_0x35de57[_0x858c('0x161')]));var _0x50d26f=eval(_0x35de57[_0x858c('0x161')]);if(!this[_0x858c('0x88')](_0x35de57[_0x858c('0xd7')])){return this[_0x858c('0x37')]['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x1fbedb=this[_0x858c('0x10')][_0x858c('0x74')](this,_0x35de57[_0x858c('0xd7')]);if(!_0x1fbedb){return this[_0x858c('0x37')][_0x858c('0x53')](_0x35de57,_0x858c('0xd8'));}if(_[_0x858c('0x9d')](_0x50d26f)){var _0x360281=this;_0x50d26f[_0x858c('0xd9')](function(_0xf54c32,_0x1f6dce){_0x360281[_0x858c('0x37')][_0x858c('0xa2')](util[_0x858c('0x59')]('%s[%s]',_0x1fbedb,_0x1f6dce),_0xf54c32);});return this[_0x858c('0x37')][_0x858c('0xb4')](util['format'](_0x858c('0x162'),_0x1fbedb));}else{return this['channel']['setVariable'](_0x1fbedb,_0x50d26f);}};AGIVertices[_0x858c('0xf')][_0x858c('0x163')]=function(_0x5458a6){logger['info'](util[_0x858c('0x59')](_0x858c('0x164'),_0x5458a6[_0x858c('0x39')]));if(_0x5458a6[_0x858c('0x111')]===0x0){return this[_0x858c('0xa7')](_0x5458a6);}_0x5458a6['retry']-=0x1;if(!this[_0x858c('0x88')](_0x5458a6['file_id'])){return this[_0x858c('0x37')][_0x858c('0x53')](_0x5458a6,_0x858c('0x113'));}var _0x464d6c=this['getSound'][_0x858c('0x74')](this,_0x5458a6['file_id']);if(!_0x464d6c){return this[_0x858c('0x37')][_0x858c('0x53')](_0x5458a6,_0x858c('0x114'));}var _0x276e50=this[_0x858c('0x37')]['getData'](_0x464d6c,_0x5458a6[_0x858c('0x116')],_0x5458a6[_0x858c('0x165')]);var _0x49aefa=_0x276e50[_0x858c('0xa5')];if(_0x276e50['result']===-0x1){this['createSquareDetailsReport'][_0x858c('0x74')](this,_0x5458a6,'-1');return _0x276e50;}else if(_0x276e50[_0x858c('0xa3')]===_0x858c('0x69')){_0x276e50[_0x858c('0xa5')]=_0x276e50[_0x858c('0xa5')][_0x858c('0x9e')]>0x0?_0x276e50[_0x858c('0xa5')]:'t';}else if(_[_0x858c('0x46')](_0x276e50[_0x858c('0xa5')])){_0x276e50[_0x858c('0xa5')]='#';_0x49aefa='#';}if(!this[_0x858c('0x88')](_0x5458a6[_0x858c('0xd7')])){this['channel'][_0x858c('0xb4')](_0x858c('0x166'));}else{var _0x1e881f=this[_0x858c('0x10')]['sync'](this,_0x5458a6[_0x858c('0xd7')]);if(!_0x1e881f){return this[_0x858c('0x37')]['error'](_0x5458a6,_0x858c('0xd8'));}this['channel'][_0x858c('0xa2')](_0x1e881f,_0x49aefa);}this['createSquareDetailsReport'][_0x858c('0x74')](this,_0x5458a6,_0x49aefa);return _0x276e50;};AGIVertices[_0x858c('0xf')][_0x858c('0xb4')]=function(_0x15678d){logger[_0x858c('0x2d')](util['format'](_0x858c('0x167'),_0x15678d['label']));return this[_0x858c('0x37')]['noop'](_0x15678d['output']||_0x15678d[_0x858c('0x39')]);};AGIVertices[_0x858c('0xf')][_0x858c('0x168')]=function(_0x5f3a9d){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x169'),_0x5f3a9d[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x5f3a9d['findBy'])){return this['channel']['error'](_0x5f3a9d,'no\x20find\x20by\x20configured');}logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x156'),this['channel'][_0x858c('0x3c')],_0x5f3a9d[_0x858c('0x157')]));var _0x5bf8f5=this['getPause'][_0x858c('0x74')](this,_0x5f3a9d[_0x858c('0x16a')]);var _0x13193c=this[_0x858c('0x52')][_0x858c('0x74')](this,_0x5f3a9d[_0x858c('0x157')],_0x5bf8f5);if(_0x13193c){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x15c'),this[_0x858c('0x37')][_0x858c('0x3c')],_0x5f3a9d[_0x858c('0x157')]));this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x15c'),this[_0x858c('0x37')][_0x858c('0x3c')],_0x5f3a9d[_0x858c('0x157')]));return{'code':0xc8,'result':_0x858c('0x158')};}else{logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x159'),this['channel'][_0x858c('0x3c')],_0x5f3a9d[_0x858c('0x157')]));this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x15c'),this[_0x858c('0x37')]['callerid'],_0x5f3a9d['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x858c('0xf')][_0x858c('0x16b')]=function(_0x42dcd4){logger[_0x858c('0x2d')](util['format'](_0x858c('0x16c'),_0x42dcd4[_0x858c('0x39')]));if(!this['isConfigured'](_0x42dcd4[_0x858c('0x112')])){return this['channel']['error'](_0x42dcd4,_0x858c('0x113'));}var _0x3e029c=this['getSound']['sync'](this,_0x42dcd4[_0x858c('0x112')]);if(!_0x3e029c){return this['channel'][_0x858c('0x53')](_0x42dcd4,_0x858c('0x114'));}var _0x38368f=this['channel'][_0x858c('0x5c')]('PLAYBACK',[_0x3e029c,_0x42dcd4['opts']]);if(_0x38368f[_0x858c('0xa5')]===-0x1){return _0x38368f;}return this['channel'][_0x858c('0xb4')](util[_0x858c('0x59')]('Executed\x20command\x20%s\x20%s','PLAYBACK',_0x3e029c));};AGIVertices['prototype'][_0x858c('0x16d')]=function(_0x35e858){logger['info'](util['format'](_0x858c('0x16e'),_0x35e858['label']));if(!this['isConfigured'](_0x35e858[_0x858c('0x16f')])){return this[_0x858c('0x37')][_0x858c('0x53')](_0x35e858,_0x858c('0x170'));}var _0x51485e='';var _0x13c7d2=parseInt(_0x35e858[_0x858c('0x16f')],0xa);if(isNaN(_0x13c7d2)){_0x51485e=_0x35e858[_0x858c('0x16f')];}else{_0x51485e=this['getVoiceQueue'][_0x858c('0x74')](this,_0x35e858[_0x858c('0x16f')]);if(!_0x51485e){return this['channel'][_0x858c('0x53')](_0x35e858,'no\x20queue\x20found');}}var _0x3f65c3='';if(this[_0x858c('0x88')](_0x35e858[_0x858c('0x112')])){var _0xe19cc7=this['getSound'][_0x858c('0x74')](this,_0x35e858[_0x858c('0x112')]);if(_0xe19cc7){_0x3f65c3=_0xe19cc7;}}this[_0x858c('0x36')][_0x858c('0x74')](this,_0x35e858,_0x51485e);if(_0x35e858[_0x858c('0xe4')][_0x858c('0x171')]('x')<0x0){_0x35e858[_0x858c('0xe4')]+='x';}if(_0x35e858[_0x858c('0xe4')][_0x858c('0x171')]('X')<0x0){_0x35e858['opts']+='X';}this[_0x858c('0x37')][_0x858c('0xa2')]('XMCS-QUEUE',_0x51485e?_0x51485e[_0x858c('0x172')]():'');var _0x52f4c9=this[_0x858c('0x37')][_0x858c('0x5c')](_0x858c('0x173'),[_0x51485e,_0x35e858[_0x858c('0xe4')],_0x35e858[_0x858c('0x67')],_0x3f65c3,_0x35e858['timeout'],_0x35e858['agi'],_0x35e858[_0x858c('0x174')],_0x35e858[_0x858c('0x175')],'',_0x35e858[_0x858c('0x176')]]);if(_0x52f4c9['result']===-0x1){return _0x52f4c9;}return this['channel'][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0xc4'),_0x858c('0x173'),_0x51485e));};AGIVertices['prototype'][_0x858c('0x177')]=function(_0x251a82){logger[_0x858c('0x2d')](util['format'](_0x858c('0x178'),_0x251a82['label']));var _0x434f4c=_0x251a82[_0x858c('0x179')]||_0x858c('0x132');var _0x4e8581=util['format'](_0x858c('0x17a'),this['channel']['uniqueid'],rs['generate'](0x5));var _0x224d8f=util['format'](_0x858c('0x17b'),FILES_PATH,_0x4e8581,_0x434f4c);var _0x2d5dca=util[_0x858c('0x59')](_0x858c('0x133'),FILES_PATH,_0x4e8581);this['createSquareRecording'][_0x858c('0x74')](this,_0x251a82,_0x4e8581,_0x224d8f);this[_0x858c('0x37')][_0x858c('0xa2')](_0x858c('0x17c'),_0x4e8581);logger[_0x858c('0x2d')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x2d5dca,_0x434f4c,_0x251a82[_0x858c('0x17d')],_0x251a82['timeout']);return this['channel'][_0x858c('0x136')](_0x2d5dca,_0x434f4c,_0x251a82['escape_digits'],_0x251a82[_0x858c('0x69')],undefined,!![]);};AGIVertices[_0x858c('0xf')][_0x858c('0x17e')]=function(_0x69c50d){logger['info'](util[_0x858c('0x59')](_0x858c('0x17f'),_0x69c50d[_0x858c('0x39')]));if(!this['isConfigured'](_0x69c50d['url'])){return this['channel']['noop'](_0x858c('0x180'));}var _0x11204a=this[_0x858c('0x181')][_0x858c('0x74')](this,_0x69c50d);logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x182'),util['inspect'](_0x11204a,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x69c50d['variable_id'])){return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0x183'));}var _0x15c2b4=this['getVariable']['sync'](this,_0x69c50d['variable_id']);if(!_0x15c2b4){return this['channel'][_0x858c('0x53')](_0x69c50d,'no\x20variable\x20found');}this['channel'][_0x858c('0xa2')](util[_0x858c('0x59')](_0x858c('0x184'),_0x15c2b4),_0x11204a[_0x858c('0x79')]?_0x11204a['statusCode']:_0x858c('0x185'));this['channel']['setVariable'](util['format'](_0x858c('0x186'),_0x15c2b4),_0x11204a['statusMessage']?_0x11204a['statusMessage']:'OK');if(_0x11204a[_0x858c('0x6e')]){try{this[_0x858c('0xa0')](_0x11204a[_0x858c('0x6e')],_0x15c2b4);}catch(_0x5c5718){logger['error'](util[_0x858c('0x59')](_0x858c('0x187'),_0x15c2b4));}}return this[_0x858c('0x37')][_0x858c('0xb4')](util['format'](_0x858c('0xdd'),_0x15c2b4));};AGIVertices[_0x858c('0xf')][_0x858c('0x188')]=function(_0x484f76){logger['info'](util[_0x858c('0x59')](_0x858c('0x189'),_0x484f76[_0x858c('0x39')]));return this[_0x858c('0x37')]['sayDigits'](_0x484f76[_0x858c('0x18a')][_0x858c('0xd6')](/\s+/g,''),_0x484f76[_0x858c('0x17d')]);};AGIVertices['prototype'][_0x858c('0x18b')]=function(_0x31f0ba){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x18c'),_0x31f0ba[_0x858c('0x39')]));return this[_0x858c('0x37')][_0x858c('0x18d')](_0x31f0ba[_0x858c('0x6a')]['replace'](/\s+/g,''),_0x31f0ba[_0x858c('0x17d')]);};AGIVertices[_0x858c('0xf')][_0x858c('0x18e')]=function(_0x370b4f){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x18f'),_0x370b4f[_0x858c('0x39')]));return this[_0x858c('0x37')][_0x858c('0x190')](_0x370b4f[_0x858c('0x61')],_0x370b4f[_0x858c('0x17d')]);};AGIVertices[_0x858c('0xf')][_0x858c('0x191')]=function(_0x50b3e1){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x192'),_0x50b3e1[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x50b3e1[_0x858c('0x193')])){return this['channel']['noop']('no\x20mail\x20account\x20configured');}var _0x5edb8c=this[_0x858c('0x22')]['sync'](this,_0x50b3e1[_0x858c('0x193')]);if(!_0x5edb8c||!_0x5edb8c[_0x858c('0x194')]){return this[_0x858c('0x37')][_0x858c('0x53')](_0x50b3e1,_0x858c('0x195'));}var _0x446f5a={'from':util[_0x858c('0x59')]('\x22%s\x22\x20<%s>',_0x5edb8c[_0x858c('0x12')],_0x5edb8c[_0x858c('0x196')]||_0x5edb8c[_0x858c('0x194')][_0x858c('0x197')]),'to':_0x50b3e1['to']||'','cc':_0x50b3e1['cc']||'','bcc':_0x50b3e1[_0x858c('0x198')]||'','subject':_0x50b3e1[_0x858c('0x199')],'html':_0x50b3e1[_0x858c('0x61')],'text':_0x50b3e1[_0x858c('0x61')]};var _0x572465={'tls':{'rejectUnauthorized':![]}};if(_0x5edb8c['Smtp'][_0x858c('0x19a')]){_0x572465[_0x858c('0x19a')]=_0x5edb8c[_0x858c('0x194')]['service'];}else{_0x572465['host']=_0x5edb8c[_0x858c('0x194')][_0x858c('0x19b')];_0x572465[_0x858c('0x19c')]=_0x5edb8c['Smtp'][_0x858c('0x19c')];_0x572465[_0x858c('0x19d')]=_0x5edb8c['Smtp'][_0x858c('0x19d')];}if(_0x5edb8c[_0x858c('0x194')][_0x858c('0x19e')]){_0x572465['auth']={'user':_0x5edb8c[_0x858c('0x194')][_0x858c('0x197')],'pass':_0x5edb8c['Smtp'][_0x858c('0x19f')]};}if(this[_0x858c('0x88')](_0x50b3e1[_0x858c('0x1a0')])){}logger[_0x858c('0x1a1')](_0x858c('0x1a2'),JSON[_0x858c('0x78')](_0x446f5a));this['createSquareDetailsReport']['sync'](this,_0x50b3e1,_0x50b3e1[_0x858c('0x193')]);this['channel'][_0x858c('0xb4')](util['format'](_0x858c('0x1a3'),_0x5edb8c[_0x858c('0x12')]));this['sendMailMessage'][_0x858c('0x74')](this,_0x572465,_0x446f5a);return this[_0x858c('0x37')]['noop'](_0x858c('0x1a4'));};AGIVertices[_0x858c('0xf')]['sendFax']=function(_0x3a9368){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x1a5'),_0x3a9368[_0x858c('0x39')]));return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0x1a6'));};AGIVertices['prototype'][_0x858c('0x1a7')]=function(_0x4e7dbc){logger[_0x858c('0x2d')](util['format'](_0x858c('0x1a8'),_0x4e7dbc['label']));if(!this['isConfigured'](_0x4e7dbc[_0x858c('0x1a9')])){return this[_0x858c('0x37')]['noop'](_0x858c('0x1aa'));}var _0x23b74d=this[_0x858c('0x1ab')][_0x858c('0x74')](this,_0x4e7dbc[_0x858c('0x1a9')]);if(!_0x23b74d){return this[_0x858c('0x37')][_0x858c('0x53')](_0x4e7dbc,'no\x20sms\x20account\x20found');}var _0x5d5550={'body':_0x4e7dbc[_0x858c('0x1ac')],'phone':_0x4e7dbc['to']||'','SmsAccountId':_0x23b74d['id']};logger[_0x858c('0x1a1')](_0x858c('0x1ad'),JSON[_0x858c('0x78')](_0x5d5550));this[_0x858c('0x36')][_0x858c('0x74')](this,_0x4e7dbc,_0x4e7dbc[_0x858c('0x1a9')]);this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x1ae'),_0x23b74d[_0x858c('0x12')]));this['createSmsMessage']['sync'](this,_0x5d5550);return this[_0x858c('0x37')][_0x858c('0xb4')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x858c('0xf')]['set']=function(_0x4533d4){logger['info'](util['format'](_0x858c('0x1af'),_0x4533d4[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x4533d4[_0x858c('0xd7')])){return this[_0x858c('0x37')][_0x858c('0x53')](_0x4533d4,_0x858c('0x1b0'));}var _0x3c99db=this[_0x858c('0x10')][_0x858c('0x74')](this,_0x4533d4[_0x858c('0xd7')]);if(!_0x3c99db){return this[_0x858c('0x37')]['error'](_0x4533d4,'no\x20variable\x20found');}return this[_0x858c('0x37')]['setVariable'](_0x3c99db,_0x4533d4[_0x858c('0x1b1')]);};AGIVertices[_0x858c('0xf')]['start']=function(_0xa5aebe){logger['info'](util['format'](_0x858c('0x1b2'),_0xa5aebe['label']));this['channel']['noop'](_0x858c('0x1b3'));if(_0xa5aebe[_0x858c('0x1b4')]===_0x858c('0x1b5')){this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0x1b6'));return this[_0x858c('0x37')]['answer']();}return this['channel'][_0x858c('0xb4')](_0x858c('0x1b7'));};AGIVertices[_0x858c('0xf')][_0x858c('0x1b8')]=function(_0x4c4013){logger['info'](util[_0x858c('0x59')](_0x858c('0x1b9'),_0x4c4013[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x4c4013[_0x858c('0x1ba')])){return this[_0x858c('0x37')][_0x858c('0x53')](_0x4c4013,_0x858c('0x1bb'));}var _0x27380f=this[_0x858c('0x17')][_0x858c('0x74')](this,_0x4c4013[_0x858c('0x1ba')]);if(!this['isConfigured'](_0x27380f)){return this[_0x858c('0x37')][_0x858c('0x53')](_0x4c4013,util['format'](_0x858c('0x1bc'),_0x4c4013[_0x858c('0x1ba')]));}if(_0x27380f===this[_0x858c('0x37')][_0x858c('0x3b')]){return this['channel'][_0x858c('0x53')](_0x4c4013,_0x858c('0x1bd'));}this[_0x858c('0x36')][_0x858c('0x74')](this,_0x4c4013,_0x27380f);var _0x1f950e=this[_0x858c('0x37')][_0x858c('0x5c')](_0x858c('0x1be'),util[_0x858c('0x59')](_0x858c('0x1bf'),config[_0x858c('0x7')][_0x858c('0x19b')]||_0x858c('0x1c0'),_0x27380f,this[_0x858c('0x37')]['arg_1']));if(_0x1f950e[_0x858c('0xa5')]===-0x1){return _0x1f950e;}return this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0xc4'),_0x858c('0x1be'),_0x27380f));};AGIVertices['prototype'][_0x858c('0x1c1')]=function(_0x2a1e79){logger['info'](util[_0x858c('0x59')](_0x858c('0x1c2'),_0x2a1e79[_0x858c('0x39')]));var _0x4d2c15=this[_0x858c('0x5b')]['sync'](this,_0x2a1e79[_0x858c('0xb7')]);this[_0x858c('0x36')][_0x858c('0x74')](this,_0x2a1e79,_0x2a1e79[_0x858c('0xb7')]);if(this[_0x858c('0x88')](_0x2a1e79[_0x858c('0xd7')])){var _0x307a6a=this[_0x858c('0x10')][_0x858c('0x74')](this,_0x2a1e79[_0x858c('0xd7')]);if(_0x307a6a){this[_0x858c('0x37')]['setVariable'](_0x307a6a,_0x4d2c15);return this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x1c3'),_0x2a1e79['command'],_0x307a6a));}}return this[_0x858c('0x37')][_0x858c('0xb4')](util['format'](_0x858c('0x1c4'),_0x2a1e79[_0x858c('0xb7')]));};AGIVertices[_0x858c('0xf')][_0x858c('0x1c5')]=function(_0x581d9c){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x1c6'),_0x581d9c[_0x858c('0x39')]));_0x581d9c[_0x858c('0x61')]=_0x581d9c['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x858c('0x88')](_0x581d9c[_0x858c('0x5f')])){return this[_0x858c('0x37')][_0x858c('0xb4')]('no\x20apiKey\x20configured');}if(!this['isConfigured'](_0x581d9c['text'])){return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0xa8'));}this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x1c7'),_0x581d9c[_0x858c('0x61')]));var _0x335d11=this['googleCloudTTS'][_0x858c('0x74')](this,_0x581d9c);if(_0x335d11){this['channel'][_0x858c('0xb4')](util[_0x858c('0x59')]('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x335d11));var _0x910716=this[_0x858c('0x37')][_0x858c('0x101')](_0x335d11);try{fs[_0x858c('0x102')](_0x335d11+_0x858c('0x103'));}catch(_0x5b987d){logger[_0x858c('0x53')](_0x5b987d);}return _0x910716;}return this[_0x858c('0x37')][_0x858c('0x53')](_0x581d9c,_0x858c('0x1c8'));};AGIVertices[_0x858c('0xf')][_0x858c('0x1c9')]=function(_0x4f8dd0){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x1ca'),_0x4f8dd0['label']));_0x4f8dd0['text']=_0x4f8dd0[_0x858c('0x61')][_0x858c('0xd6')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x858c('0x88')](_0x4f8dd0['text'])){return this[_0x858c('0x37')][_0x858c('0xb4')](_0x858c('0xa8'));}this['channel']['noop'](util[_0x858c('0x59')](_0x858c('0x1cb'),_0x4f8dd0[_0x858c('0x61')]));var _0x4c85aa=this['googleTTS']['sync'](this,_0x4f8dd0);if(_0x4c85aa){this['channel'][_0x858c('0xb4')](util['format']('Google\x20TTS\x20%s\x20file\x20created',_0x4c85aa));var _0x3a00af=this['channel'][_0x858c('0x101')](_0x4c85aa);try{fs[_0x858c('0x102')](_0x4c85aa+_0x858c('0x103'));}catch(_0xd0b639){logger[_0x858c('0x53')](_0xd0b639);}return _0x3a00af;}return this[_0x858c('0x37')][_0x858c('0x53')](_0x4f8dd0,_0x858c('0x1cc'));};AGIVertices['prototype']['unpause']=function(_0x3f1713){logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x1cd'),_0x3f1713[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x3f1713[_0x858c('0x157')])){return this['channel'][_0x858c('0x53')](_0x3f1713,_0x858c('0x15b'));}logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x156'),this['channel'][_0x858c('0x3c')],_0x3f1713['findBy']));var _0x4f9cec=this[_0x858c('0x54')][_0x858c('0x74')](this,_0x3f1713[_0x858c('0x157')]);if(_0x4f9cec){logger['info'](util[_0x858c('0x59')](_0x858c('0x15c'),this['channel'][_0x858c('0x3c')],_0x3f1713[_0x858c('0x157')]));this[_0x858c('0x37')][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x15c'),this[_0x858c('0x37')][_0x858c('0x3c')],_0x3f1713[_0x858c('0x157')]));return{'code':0xc8,'result':'success'};}else{logger[_0x858c('0x2d')](util[_0x858c('0x59')](_0x858c('0x159'),this['channel'][_0x858c('0x3c')],_0x3f1713[_0x858c('0x157')]));this['channel'][_0x858c('0xb4')](util[_0x858c('0x59')](_0x858c('0x159'),this[_0x858c('0x37')][_0x858c('0x3c')],_0x3f1713[_0x858c('0x157')]));return{'code':0xc8,'result':_0x858c('0x15d')};}};AGIVertices[_0x858c('0xf')][_0x858c('0x1ce')]=function(_0x36f04b){logger[_0x858c('0x2d')](util[_0x858c('0x59')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x36f04b['label']));var _0x3cfbf4=this[_0x858c('0x37')][_0x858c('0x5c')](_0x858c('0x1cf'),[_0x36f04b[_0x858c('0x1d0')],_0x36f04b[_0x858c('0x7c')]]);if(_0x3cfbf4[_0x858c('0xa5')]===-0x1){return _0x3cfbf4;}return this['channel']['noop'](util[_0x858c('0x59')]('Executed\x20command\x20%s\x20%s',_0x858c('0x1cf'),_0x36f04b[_0x858c('0x1d0')]));};AGIVertices[_0x858c('0xf')][_0x858c('0x1d1')]=function(_0x58fe7f){logger[_0x858c('0x2d')](util['format']('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x58fe7f[_0x858c('0x39')]));if(!this[_0x858c('0x88')](_0x58fe7f['variable_id'])){return this[_0x858c('0x37')]['error'](_0x58fe7f,_0x858c('0x1b0'));}var _0x2c188d=this[_0x858c('0x10')][_0x858c('0x74')](this,_0x58fe7f[_0x858c('0xd7')]);if(!_0x2c188d){return this['channel']['error'](_0x58fe7f,_0x858c('0xd8'));}var _0xf042d4=this[_0x858c('0x37')][_0x858c('0x10')](_0x2c188d);return{'code':0xc8,'result':_0xf042d4[_0x858c('0xa3')]?_0xf042d4['extra']:'-'};};String[_0x858c('0xf')][_0x858c('0x1d2')]=function(_0x3b0c50,_0x203b7f){return this['split'](_0x3b0c50)[_0x858c('0x1d3')](_0x203b7f);};module[_0x858c('0x1d4')]=AGIVertices;
\ No newline at end of file
index 9b988d5..e524ff5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc982=['getAgent','voicePause','info','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','acwTimeout','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','finally','[ACW][START]\x20%s','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','mandatoryDisposition','interface','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','exports','util','lodash','moment','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','hanguprequest','syncHangupRequest','bind','syncHangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','queue','ACW','mandatoryDispositionPause','name','Action','QueuePause','then'];(function(_0x4f1869,_0x3946d2){var _0x5a0d6d=function(_0x51dcd2){while(--_0x51dcd2){_0x4f1869['push'](_0x4f1869['shift']());}};_0x5a0d6d(++_0x3946d2);}(_0xc982,0x195));var _0x2c98=function(_0x32a554,_0x37ad7b){_0x32a554=_0x32a554-0x0;var _0x5ce71c=_0xc982[_0x32a554];return _0x5ce71c;};'use strict';var util=require(_0x2c98('0x0'));var _=require(_0x2c98('0x1'));var moment=require(_0x2c98('0x2'));var ami=require(_0x2c98('0x3'));var logger=require(_0x2c98('0x4'))(_0x2c98('0x5'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x2c98('0x6'));function Acw(_0x579cc0){this['voiceQueues']=_0x579cc0[_0x2c98('0x7')];this[_0x2c98('0x8')]=_0x579cc0['agents'];this['timers']=_0x579cc0[_0x2c98('0x9')];this[_0x2c98('0xa')]={};ami['on'](_0x2c98('0xb'),this[_0x2c98('0xc')]['bind'](this));ami['on'](_0x2c98('0xd'),this[_0x2c98('0xe')][_0x2c98('0xf')](this));ami['on']('hangup',this[_0x2c98('0x10')]['bind'](this));ami['on']('agentringnoanswer',this[_0x2c98('0x11')][_0x2c98('0xf')](this));ami['on'](_0x2c98('0x12'),this[_0x2c98('0x13')][_0x2c98('0xf')](this));ami['on'](_0x2c98('0x14'),this['syncBlindTransfer'][_0x2c98('0xf')](this));ami['on'](_0x2c98('0x15'),this[_0x2c98('0x16')][_0x2c98('0xf')](this));}function getDiff(_0x5e7f26){var _0xfb5bbe=moment()[_0x2c98('0x17')](0x0);var _0x5e7861=moment(_0x5e7f26)[_0x2c98('0x17')](0x0);return _0xfb5bbe[_0x2c98('0x18')](_0x5e7861,_0x2c98('0x19'));}Acw[_0x2c98('0x1a')][_0x2c98('0x1b')]=function(_0x5c2abf){try{var _0x2de299=this;var _0x49693b=this[_0x2c98('0xa')][_0x5c2abf]['interface'];var _0x13422c=this[_0x2c98('0xa')][_0x5c2abf][_0x2c98('0x1c')];var _0x15b40c=this[_0x2c98('0x7')][_0x13422c];var _0x2ec553=![];var _0x1d6876=_0x2c98('0x1d');if(_0x15b40c['mandatoryDisposition']){if(_0x15b40c[_0x2c98('0x1e')][_0x2c98('0x1f')]){_0x2ec553=!![];_0x1d6876=_0x15b40c[_0x2c98('0x1e')]['name'];}}ami[_0x2c98('0x20')]({'action':_0x2c98('0x21'),'interface':_0x49693b,'paused':!![],'reason':_0x1d6876})[_0x2c98('0x22')](function(_0x17a08f){if(_0x2de299['agents'][_0x49693b]){return RpcUser[_0x2c98('0x23')](_0x2de299[_0x2c98('0x8')][_0x49693b]['id'])[_0x2c98('0x22')](function(_0x472b5f){if(_0x472b5f&&!_0x472b5f[_0x2c98('0x24')]){logger[_0x2c98('0x25')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x5c2abf,_0x49693b,_0x13422c);var _0x3f8a8f=_0x2de299[_0x2c98('0xa')][_0x5c2abf][_0x2c98('0x26')]&&_0x2de299[_0x2c98('0xa')][_0x5c2abf][_0x2c98('0x27')]?_0x2de299[_0x2c98('0xa')][_0x5c2abf][_0x2c98('0x27')]:_0x5c2abf;return RpcUser[_0x2c98('0x28')](_0x2de299[_0x2c98('0x8')][_0x49693b],_0x1d6876,_0x3f8a8f)['then'](function(_0x479734){if(!_0x2ec553){_0x2de299[_0x2c98('0x9')][_0x49693b]={};logger[_0x2c98('0x25')](_0x2c98('0x29'),_0x5c2abf,_0x2de299[_0x2c98('0x7')][_0x13422c]['acwTimeout'],_0x49693b,_0x13422c);_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x2a')]=setTimeout(_0x2de299['stopAcw']['bind'](_0x2de299,_0x49693b),_0x2de299[_0x2c98('0x7')][_0x13422c][_0x2c98('0x2b')]*0x3e8);_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x2c')]=moment()['format'](_0x2c98('0x2d'));_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x2e')]=_0x5c2abf;_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x1c')]=_0x13422c;_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x2f')]=function(){var _0xabaa0f=getDiff(_0x2de299[_0x2c98('0x9')][_0x49693b]['lastPauseAt']);clearTimeout(_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x2a')]);_0x2de299[_0x2c98('0x9')][_0x49693b][_0x2c98('0x2a')]=![];RpcVoiceAgentReport[_0x2c98('0x30')]({'acwtime':_0xabaa0f},_0x2de299['timers'][_0x49693b]['uniqueid'],_0x49693b)[_0x2c98('0x22')](function(_0x1c3a14){logger['info'](_0x2c98('0x31'),_0x5c2abf,_0xabaa0f,_0x1c3a14);})[_0x2c98('0x32')](function(_0x4bb027){logger['error'](_0x2c98('0x33'),_0x5c2abf,_0x4bb027);});delete _0x2de299['timers'][_0x49693b];};}});}else{logger['info'](_0x2c98('0x34'),_0x5c2abf,_0x49693b,_0x13422c);}});}})[_0x2c98('0x32')](function(_0x1483b5){logger[_0x2c98('0x35')](_0x2c98('0x29'),_0x5c2abf,_0x2de299[_0x2c98('0x7')][_0x13422c][_0x2c98('0x2b')],_0x49693b,_0x13422c);})[_0x2c98('0x36')](function(){delete _0x2de299[_0x2c98('0xa')][_0x5c2abf];});}catch(_0x41843a){logger[_0x2c98('0x35')](_0x2c98('0x37'),_0x41843a['message']);}};Acw[_0x2c98('0x1a')]['stopAcw']=function(_0x1310f6){try{var _0x3a4558=this;if(_0x3a4558['timers'][_0x1310f6]){_0x3a4558[_0x2c98('0x9')][_0x1310f6]['timer']=![];var _0x45d82b=_0x3a4558['timers'][_0x1310f6][_0x2c98('0x2e')];var _0x3f8a52=_0x3a4558[_0x2c98('0x9')][_0x1310f6][_0x2c98('0x1c')];var _0x378158=_0x3a4558[_0x2c98('0x7')][_0x3f8a52][_0x2c98('0x2b')];logger[_0x2c98('0x25')]('[%s][TIMER][STOP][AGENT:%s]',_0x45d82b,_0x1310f6);RpcUser[_0x2c98('0x38')](this['agents'][_0x1310f6]);RpcVoiceAgentReport[_0x2c98('0x30')]({'acwtime':_0x378158,'agentacw':!![]},_0x45d82b,_0x1310f6)['then'](function(_0x23513c){logger[_0x2c98('0x25')](_0x2c98('0x31'),_0x45d82b,_0x378158,_0x23513c);})[_0x2c98('0x32')](function(_0x5b38e9){logger[_0x2c98('0x35')](_0x2c98('0x33'),_0x45d82b,_0x5b38e9);});}else{logger[_0x2c98('0x35')](_0x2c98('0x39'),_0x1310f6);if(_0x3a4558[_0x2c98('0x9')]){logger[_0x2c98('0x25')](_0x2c98('0x3a'),JSON[_0x2c98('0x3b')](_0x3a4558['timers']));}}}catch(_0x7ae511){logger[_0x2c98('0x35')](_0x2c98('0x3c'),_0x7ae511[_0x2c98('0x3d')]);}};Acw[_0x2c98('0x1a')][_0x2c98('0xc')]=function(_0x5a05d6){try{if(this[_0x2c98('0x7')][_0x5a05d6[_0x2c98('0x1c')]]&&(this[_0x2c98('0x7')][_0x5a05d6['queue']][_0x2c98('0x5')]||this[_0x2c98('0x7')][_0x5a05d6[_0x2c98('0x1c')]][_0x2c98('0x3e')])){if(this[_0x2c98('0x8')][_0x5a05d6[_0x2c98('0x3f')]]){this[_0x2c98('0xa')][_0x5a05d6['uniqueid']]={'queue':_0x5a05d6[_0x2c98('0x1c')],'interface':_0x5a05d6[_0x2c98('0x3f')],'destlinkedid':_0x5a05d6[_0x2c98('0x27')]};}}}catch(_0x5619b0){logger['error'](_0x2c98('0x40'),_0x5619b0['message']);}};Acw['prototype']['syncAgentConnectPreview']=function(_0x5c491c){try{if(this['voiceQueues'][_0x5c491c[_0x2c98('0x1c')]]&&(this[_0x2c98('0x7')][_0x5c491c['queue']][_0x2c98('0x5')]||this[_0x2c98('0x7')][_0x5c491c[_0x2c98('0x1c')]][_0x2c98('0x3e')])){if(this[_0x2c98('0x8')][_0x5c491c[_0x2c98('0x3f')]]){this[_0x2c98('0xa')][_0x5c491c[_0x2c98('0x2e')]]={'queue':_0x5c491c[_0x2c98('0x1c')],'interface':_0x5c491c[_0x2c98('0x3f')]};}}}catch(_0x133661){logger[_0x2c98('0x35')](_0x2c98('0x41'),_0x133661['message']);}};Acw['prototype'][_0x2c98('0xe')]=function(_0x4d9a26){try{if(this['channels'][_0x4d9a26[_0x2c98('0x2e')]]&&_[_0x2c98('0x42')](this['channels'][_0x4d9a26[_0x2c98('0x2e')]][_0x2c98('0x26')])){logger[_0x2c98('0x25')]('[%s][HANGUP:UNIQUEID]',_0x4d9a26[_0x2c98('0x2e')]);this['startAcw'](_0x4d9a26[_0x2c98('0x2e')]);}else if(this[_0x2c98('0xa')][_0x4d9a26[_0x2c98('0x43')]]&&_[_0x2c98('0x42')](this[_0x2c98('0xa')][_0x4d9a26[_0x2c98('0x43')]]['attended'])){logger['info'](_0x2c98('0x44'),_0x4d9a26[_0x2c98('0x43')]);this[_0x2c98('0x1b')](_0x4d9a26[_0x2c98('0x43')]);}}catch(_0x4fcf49){logger[_0x2c98('0x35')]('[ACW][syncHangupRequest]\x20%s',_0x4fcf49[_0x2c98('0x3d')]);}};Acw[_0x2c98('0x1a')][_0x2c98('0x10')]=function(_0x49b03a){try{if(this[_0x2c98('0xa')][_0x49b03a[_0x2c98('0x2e')]]&&this[_0x2c98('0xa')][_0x49b03a['uniqueid']][_0x2c98('0x26')]){logger['info'](_0x2c98('0x45'),_0x49b03a['uniqueid']);this[_0x2c98('0x1b')](_0x49b03a['uniqueid']);}else if(this[_0x2c98('0xa')][_0x49b03a[_0x2c98('0x43')]]&&this['channels'][_0x49b03a[_0x2c98('0x43')]][_0x2c98('0x26')]){logger[_0x2c98('0x25')](_0x2c98('0x46'),_0x49b03a[_0x2c98('0x43')]);this[_0x2c98('0x1b')](_0x49b03a[_0x2c98('0x43')]);}}catch(_0x3dc3e9){logger['error'](_0x2c98('0x47'),_0x3dc3e9['message']);}};Acw[_0x2c98('0x1a')][_0x2c98('0x13')]=function(_0x9aae98){try{if(!_[_0x2c98('0x48')](this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x49')]])){this[_0x2c98('0x1b')](_0x9aae98[_0x2c98('0x49')]);if(this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4a')]]){this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4a')]][_0x2c98('0x26')]=!![];this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4b')]]=this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4a')]];delete this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4a')]];}}else if(!_[_0x2c98('0x48')](this['channels'][_0x9aae98[_0x2c98('0x4b')]])){this[_0x2c98('0x1b')](_0x9aae98['transfertargetuniqueid']);if(this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4c')]]){this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4c')]]['attended']=!![];this[_0x2c98('0xa')][_0x9aae98['transfereeuniqueid']]=this['channels'][_0x9aae98['origtransfereruniqueid']];delete this[_0x2c98('0xa')][_0x9aae98[_0x2c98('0x4c')]];}}}catch(_0x5c9af8){logger[_0x2c98('0x35')](_0x2c98('0x4d'),_0x5c9af8[_0x2c98('0x3d')]);}};Acw[_0x2c98('0x1a')][_0x2c98('0x4e')]=function(_0x1ba0bc){try{if(this[_0x2c98('0xa')][_0x1ba0bc[_0x2c98('0x4f')]]){logger['info'](_0x2c98('0x50'),JSON[_0x2c98('0x3b')](_0x1ba0bc[_0x2c98('0x4f')]));this[_0x2c98('0x1b')](_0x1ba0bc[_0x2c98('0x4f')]);}else if(this[_0x2c98('0xa')][_0x1ba0bc[_0x2c98('0x51')]]){logger[_0x2c98('0x25')](_0x2c98('0x52'),JSON['stringify'](_0x1ba0bc[_0x2c98('0x51')]));this['startAcw'](_0x1ba0bc['transfererlinkedid']);}}catch(_0x3395f6){logger['error'](_0x2c98('0x53'),_0x3395f6[_0x2c98('0x3d')]);}};Acw[_0x2c98('0x1a')][_0x2c98('0x11')]=function(_0x193721){try{if(this[_0x2c98('0x7')][_0x193721[_0x2c98('0x1c')]]&&this[_0x2c98('0x7')][_0x193721[_0x2c98('0x1c')]]['autopause']===_0x2c98('0x54')){if(this['agents'][_0x193721[_0x2c98('0x3f')]]){logger[_0x2c98('0x25')](_0x2c98('0x55'),_0x193721[_0x2c98('0x2e')],_0x193721[_0x2c98('0x3f')],_0x193721[_0x2c98('0x1c')]);return RpcUser[_0x2c98('0x28')](this[_0x2c98('0x8')][_0x193721[_0x2c98('0x3f')]],_0x2c98('0x56'),_0x193721[_0x2c98('0x2e')]);}}}catch(_0x24a618){logger[_0x2c98('0x35')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x24a618[_0x2c98('0x3d')]);}};module[_0x2c98('0x57')]=Acw;
\ No newline at end of file
+var _0x9ee8=['stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','mandatoryDisposition','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','transfereeuniqueid','secondtransfereruniqueid','isNil','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','autopause','all','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','hanguprequest','syncHangupRequest','bind','hangup','syncHangup','agentringnoanswer','attendedtransfer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','prototype','interface','queue','mandatoryDispositionPause','name','Action','QueuePause','then','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','format','uniqueid','updateAcw','lastPauseAt','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]'];(function(_0x16fa2b,_0x3342f6){var _0x58c4ac=function(_0x1afc7f){while(--_0x1afc7f){_0x16fa2b['push'](_0x16fa2b['shift']());}};_0x58c4ac(++_0x3342f6);}(_0x9ee8,0x74));var _0x89ee=function(_0x2a7fcd,_0x55e489){_0x2a7fcd=_0x2a7fcd-0x0;var _0x2c3ef8=_0x9ee8[_0x2a7fcd];return _0x2c3ef8;};'use strict';var util=require(_0x89ee('0x0'));var _=require('lodash');var moment=require(_0x89ee('0x1'));var ami=require(_0x89ee('0x2'));var logger=require(_0x89ee('0x3'))(_0x89ee('0x4'));var RpcUser=require(_0x89ee('0x5'));var RpcVoiceAgentReport=require(_0x89ee('0x6'));function Acw(_0x430b7a){this[_0x89ee('0x7')]=_0x430b7a['voiceQueues'];this[_0x89ee('0x8')]=_0x430b7a[_0x89ee('0x8')];this[_0x89ee('0x9')]=_0x430b7a[_0x89ee('0x9')];this[_0x89ee('0xa')]={};ami['on']('agentconnect',this[_0x89ee('0xb')]['bind'](this));ami['on'](_0x89ee('0xc'),this[_0x89ee('0xd')][_0x89ee('0xe')](this));ami['on'](_0x89ee('0xf'),this[_0x89ee('0x10')][_0x89ee('0xe')](this));ami['on'](_0x89ee('0x11'),this['syncAgentRingNoAnswer'][_0x89ee('0xe')](this));ami['on'](_0x89ee('0x12'),this[_0x89ee('0x13')][_0x89ee('0xe')](this));ami['on'](_0x89ee('0x14'),this['syncBlindTransfer'][_0x89ee('0xe')](this));ami['on'](_0x89ee('0x15'),this[_0x89ee('0x16')]['bind'](this));}function getDiff(_0x50097d){var _0x479d79=moment()[_0x89ee('0x17')](0x0);var _0x2fde91=moment(_0x50097d)[_0x89ee('0x17')](0x0);return _0x479d79['diff'](_0x2fde91,'seconds');}Acw[_0x89ee('0x18')]['startAcw']=function(_0x3979b4){try{var _0x497058=this;var _0x13e9de=this['channels'][_0x3979b4][_0x89ee('0x19')];var _0x25540f=this[_0x89ee('0xa')][_0x3979b4][_0x89ee('0x1a')];var _0x5d7dfd=this['voiceQueues'][_0x25540f];var _0x149423=![];var _0x1bd8c9='ACW';if(_0x5d7dfd['mandatoryDisposition']){if(_0x5d7dfd[_0x89ee('0x1b')][_0x89ee('0x1c')]){_0x149423=!![];_0x1bd8c9=_0x5d7dfd[_0x89ee('0x1b')][_0x89ee('0x1c')];}}ami[_0x89ee('0x1d')]({'action':_0x89ee('0x1e'),'interface':_0x13e9de,'paused':!![],'reason':_0x1bd8c9})[_0x89ee('0x1f')](function(_0x2f8fd0){if(_0x497058[_0x89ee('0x8')][_0x13e9de]){return RpcUser['getAgent'](_0x497058['agents'][_0x13e9de]['id'])[_0x89ee('0x1f')](function(_0x5b9ba2){if(_0x5b9ba2&&!_0x5b9ba2['voicePause']){logger[_0x89ee('0x20')](_0x89ee('0x21'),_0x3979b4,_0x13e9de,_0x25540f);var _0x632f3d=_0x497058[_0x89ee('0xa')][_0x3979b4][_0x89ee('0x22')]&&_0x497058['channels'][_0x3979b4][_0x89ee('0x23')]?_0x497058['channels'][_0x3979b4][_0x89ee('0x23')]:_0x3979b4;return RpcUser[_0x89ee('0x24')](_0x497058['agents'][_0x13e9de],_0x1bd8c9,_0x632f3d)[_0x89ee('0x1f')](function(_0x58df3e){if(!_0x149423){_0x497058[_0x89ee('0x9')][_0x13e9de]={};logger[_0x89ee('0x20')](_0x89ee('0x25'),_0x3979b4,_0x497058[_0x89ee('0x7')][_0x25540f][_0x89ee('0x26')],_0x13e9de,_0x25540f);_0x497058[_0x89ee('0x9')][_0x13e9de][_0x89ee('0x27')]=setTimeout(_0x497058[_0x89ee('0x28')]['bind'](_0x497058,_0x13e9de),_0x497058[_0x89ee('0x7')][_0x25540f]['acwTimeout']*0x3e8);_0x497058[_0x89ee('0x9')][_0x13e9de]['lastPauseAt']=moment()[_0x89ee('0x29')]('YYYY-MM-DD\x20HH:mm:ss');_0x497058[_0x89ee('0x9')][_0x13e9de][_0x89ee('0x2a')]=_0x3979b4;_0x497058['timers'][_0x13e9de]['queue']=_0x25540f;_0x497058['timers'][_0x13e9de][_0x89ee('0x2b')]=function(){var _0x200b55=getDiff(_0x497058[_0x89ee('0x9')][_0x13e9de][_0x89ee('0x2c')]);clearTimeout(_0x497058['timers'][_0x13e9de][_0x89ee('0x27')]);_0x497058[_0x89ee('0x9')][_0x13e9de][_0x89ee('0x27')]=![];RpcVoiceAgentReport[_0x89ee('0x2d')]({'acwtime':_0x200b55},_0x497058['timers'][_0x13e9de][_0x89ee('0x2a')],_0x13e9de)['then'](function(_0x53980e){logger['info'](_0x89ee('0x2e'),_0x3979b4,_0x200b55,_0x53980e);})[_0x89ee('0x2f')](function(_0x2d004e){logger[_0x89ee('0x30')](_0x89ee('0x31'),_0x3979b4,_0x2d004e);});delete _0x497058[_0x89ee('0x9')][_0x13e9de];};}});}else{logger[_0x89ee('0x20')](_0x89ee('0x32'),_0x3979b4,_0x13e9de,_0x25540f);}});}})[_0x89ee('0x2f')](function(_0x135031){logger['error']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x3979b4,_0x497058[_0x89ee('0x7')][_0x25540f][_0x89ee('0x26')],_0x13e9de,_0x25540f);})['finally'](function(){delete _0x497058[_0x89ee('0xa')][_0x3979b4];});}catch(_0x78113e){logger[_0x89ee('0x30')]('[ACW][START]\x20%s',_0x78113e[_0x89ee('0x33')]);}};Acw[_0x89ee('0x18')][_0x89ee('0x28')]=function(_0x412adb){try{var _0x285c64=this;if(_0x285c64[_0x89ee('0x9')][_0x412adb]){_0x285c64[_0x89ee('0x9')][_0x412adb]['timer']=![];var _0x4abe62=_0x285c64[_0x89ee('0x9')][_0x412adb][_0x89ee('0x2a')];var _0xd1424b=_0x285c64['timers'][_0x412adb][_0x89ee('0x1a')];var _0xe76b00=_0x285c64['voiceQueues'][_0xd1424b][_0x89ee('0x26')];logger['info'](_0x89ee('0x34'),_0x4abe62,_0x412adb);RpcUser[_0x89ee('0x35')](this[_0x89ee('0x8')][_0x412adb]);RpcVoiceAgentReport[_0x89ee('0x2d')]({'acwtime':_0xe76b00,'agentacw':!![]},_0x4abe62,_0x412adb)[_0x89ee('0x1f')](function(_0x40d359){logger[_0x89ee('0x20')](_0x89ee('0x2e'),_0x4abe62,_0xe76b00,_0x40d359);})[_0x89ee('0x2f')](function(_0x5accac){logger[_0x89ee('0x30')](_0x89ee('0x31'),_0x4abe62,_0x5accac);});}else{logger[_0x89ee('0x30')](_0x89ee('0x36'),_0x412adb);if(_0x285c64[_0x89ee('0x9')]){logger[_0x89ee('0x20')](_0x89ee('0x37'),JSON[_0x89ee('0x38')](_0x285c64['timers']));}}}catch(_0x48eea8){logger[_0x89ee('0x30')](_0x89ee('0x39'),_0x48eea8[_0x89ee('0x33')]);}};Acw[_0x89ee('0x18')][_0x89ee('0xb')]=function(_0x35daf5){try{if(this[_0x89ee('0x7')][_0x35daf5['queue']]&&(this['voiceQueues'][_0x35daf5['queue']][_0x89ee('0x4')]||this[_0x89ee('0x7')][_0x35daf5[_0x89ee('0x1a')]]['mandatoryDisposition'])){if(this[_0x89ee('0x8')][_0x35daf5[_0x89ee('0x19')]]){this[_0x89ee('0xa')][_0x35daf5[_0x89ee('0x2a')]]={'queue':_0x35daf5[_0x89ee('0x1a')],'interface':_0x35daf5[_0x89ee('0x19')],'destlinkedid':_0x35daf5[_0x89ee('0x23')]};}}}catch(_0x44e7e4){logger[_0x89ee('0x30')](_0x89ee('0x3a'),_0x44e7e4[_0x89ee('0x33')]);}};Acw[_0x89ee('0x18')]['syncAgentConnectPreview']=function(_0x49d521){try{if(this['voiceQueues'][_0x49d521[_0x89ee('0x1a')]]&&(this[_0x89ee('0x7')][_0x49d521[_0x89ee('0x1a')]][_0x89ee('0x4')]||this[_0x89ee('0x7')][_0x49d521['queue']][_0x89ee('0x3b')])){if(this[_0x89ee('0x8')][_0x49d521[_0x89ee('0x19')]]){this['channels'][_0x49d521['uniqueid']]={'queue':_0x49d521[_0x89ee('0x1a')],'interface':_0x49d521[_0x89ee('0x19')]};}}}catch(_0x1a0950){logger[_0x89ee('0x30')](_0x89ee('0x3c'),_0x1a0950['message']);}};Acw[_0x89ee('0x18')]['syncHangupRequest']=function(_0x3f93be){try{if(this[_0x89ee('0xa')][_0x3f93be[_0x89ee('0x2a')]]&&_[_0x89ee('0x3d')](this['channels'][_0x3f93be[_0x89ee('0x2a')]][_0x89ee('0x22')])){logger[_0x89ee('0x20')](_0x89ee('0x3e'),_0x3f93be[_0x89ee('0x2a')]);this[_0x89ee('0x3f')](_0x3f93be[_0x89ee('0x2a')]);}else if(this[_0x89ee('0xa')][_0x3f93be[_0x89ee('0x40')]]&&_[_0x89ee('0x3d')](this[_0x89ee('0xa')][_0x3f93be[_0x89ee('0x40')]][_0x89ee('0x22')])){logger['info'](_0x89ee('0x41'),_0x3f93be[_0x89ee('0x40')]);this[_0x89ee('0x3f')](_0x3f93be[_0x89ee('0x40')]);}}catch(_0x3392e5){logger[_0x89ee('0x30')](_0x89ee('0x42'),_0x3392e5[_0x89ee('0x33')]);}};Acw[_0x89ee('0x18')]['syncHangup']=function(_0x105ecf){try{if(this[_0x89ee('0xa')][_0x105ecf[_0x89ee('0x2a')]]&&this[_0x89ee('0xa')][_0x105ecf[_0x89ee('0x2a')]][_0x89ee('0x22')]){logger[_0x89ee('0x20')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x105ecf['uniqueid']);this[_0x89ee('0x3f')](_0x105ecf['uniqueid']);}else if(this[_0x89ee('0xa')][_0x105ecf[_0x89ee('0x40')]]&&this[_0x89ee('0xa')][_0x105ecf[_0x89ee('0x40')]][_0x89ee('0x22')]){logger[_0x89ee('0x20')](_0x89ee('0x43'),_0x105ecf[_0x89ee('0x40')]);this[_0x89ee('0x3f')](_0x105ecf['linkedid']);}}catch(_0x431cd7){logger[_0x89ee('0x30')]('[ACW][syncHangup]\x20%s',_0x431cd7['message']);}};Acw[_0x89ee('0x18')][_0x89ee('0x13')]=function(_0x16b94b){try{if(!_['isNil'](this[_0x89ee('0xa')][_0x16b94b[_0x89ee('0x44')]])){this[_0x89ee('0x3f')](_0x16b94b[_0x89ee('0x44')]);if(this[_0x89ee('0xa')][_0x16b94b[_0x89ee('0x45')]]){this[_0x89ee('0xa')][_0x16b94b[_0x89ee('0x45')]]['attended']=!![];this[_0x89ee('0xa')][_0x16b94b['transfertargetuniqueid']]=this['channels'][_0x16b94b[_0x89ee('0x45')]];delete this[_0x89ee('0xa')][_0x16b94b[_0x89ee('0x45')]];}}else if(!_[_0x89ee('0x46')](this[_0x89ee('0xa')][_0x16b94b[_0x89ee('0x47')]])){this['startAcw'](_0x16b94b[_0x89ee('0x47')]);if(this[_0x89ee('0xa')][_0x16b94b[_0x89ee('0x48')]]){this[_0x89ee('0xa')][_0x16b94b[_0x89ee('0x48')]]['attended']=!![];this[_0x89ee('0xa')][_0x16b94b['transfereeuniqueid']]=this[_0x89ee('0xa')][_0x16b94b['origtransfereruniqueid']];delete this['channels'][_0x16b94b[_0x89ee('0x48')]];}}}catch(_0x55163e){logger[_0x89ee('0x30')](_0x89ee('0x49'),_0x55163e[_0x89ee('0x33')]);}};Acw[_0x89ee('0x18')][_0x89ee('0x4a')]=function(_0x4af45e){try{if(this[_0x89ee('0xa')][_0x4af45e[_0x89ee('0x4b')]]){logger[_0x89ee('0x20')](_0x89ee('0x4c'),JSON[_0x89ee('0x38')](_0x4af45e[_0x89ee('0x4b')]));this[_0x89ee('0x3f')](_0x4af45e['transfereruniqueid']);}else if(this[_0x89ee('0xa')][_0x4af45e[_0x89ee('0x4d')]]){logger[_0x89ee('0x20')](_0x89ee('0x4e'),JSON[_0x89ee('0x38')](_0x4af45e[_0x89ee('0x4d')]));this['startAcw'](_0x4af45e[_0x89ee('0x4d')]);}}catch(_0xa9b816){logger[_0x89ee('0x30')](_0x89ee('0x4f'),_0xa9b816[_0x89ee('0x33')]);}};Acw[_0x89ee('0x18')][_0x89ee('0x50')]=function(_0x593ce1){try{if(this['voiceQueues'][_0x593ce1[_0x89ee('0x1a')]]&&this['voiceQueues'][_0x593ce1[_0x89ee('0x1a')]][_0x89ee('0x51')]===_0x89ee('0x52')){if(this[_0x89ee('0x8')][_0x593ce1[_0x89ee('0x19')]]){logger[_0x89ee('0x20')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x593ce1[_0x89ee('0x2a')],_0x593ce1[_0x89ee('0x19')],_0x593ce1[_0x89ee('0x1a')]);return RpcUser[_0x89ee('0x24')](this[_0x89ee('0x8')][_0x593ce1[_0x89ee('0x19')]],_0x89ee('0x53'),_0x593ce1[_0x89ee('0x2a')]);}}}catch(_0x39aaf3){logger['error'](_0x89ee('0x54'),_0x39aaf3[_0x89ee('0x33')]);}};module[_0x89ee('0x55')]=Acw;
\ No newline at end of file
index f90c0b6..262a7cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae45=['coreshowchannels','info','format','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','then','actionSipShowRegistry','catch','log','exports','asterisk-manager','bluebird','moment','lodash','../../config/logger','../../config/environment','port','asterisk','username','password','keepConnected','Action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels'];(function(_0xa230f4,_0xaf03da){var _0x481ac1=function(_0x2a7127){while(--_0x2a7127){_0xa230f4['push'](_0xa230f4['shift']());}};_0x481ac1(++_0xaf03da);}(_0xae45,0xd2));var _0x5ae4=function(_0x36fad6,_0x5d35d3){_0x36fad6=_0x36fad6-0x0;var _0x3ae71e=_0xae45[_0x36fad6];return _0x3ae71e;};'use strict';var Manager=require(_0x5ae4('0x0'));var BPromise=require(_0x5ae4('0x1'));var moment=require(_0x5ae4('0x2'));var util=require('util');var _=require(_0x5ae4('0x3'));var logger=require(_0x5ae4('0x4'))('ami');var config=require(_0x5ae4('0x5'));var ami=new Manager(config['asterisk'][_0x5ae4('0x6')],config[_0x5ae4('0x7')]['ip'],config[_0x5ae4('0x7')][_0x5ae4('0x8')],config[_0x5ae4('0x7')][_0x5ae4('0x9')],!![]);ami[_0x5ae4('0xa')]();ami[_0x5ae4('0xb')]=BPromise['promisify'](ami['action']);function error(_0x55c032){logger[_0x5ae4('0xc')](util['format'](_0x5ae4('0xd'),config[_0x5ae4('0x7')]['username'],config[_0x5ae4('0x7')]['ip'],config['asterisk'][_0x5ae4('0x6')],util[_0x5ae4('0xe')](_0x55c032,![],null)));}function close(){logger[_0x5ae4('0xc')](util['format'](_0x5ae4('0xf'),config['asterisk'][_0x5ae4('0x8')],config[_0x5ae4('0x7')]['ip'],config['asterisk'][_0x5ae4('0x6')]));}ami['actionSipShowRegistry']=function(){return function(){return ami['Action']({'action':_0x5ae4('0x10')});};};ami[_0x5ae4('0x11')]=function(){return function(){return ami[_0x5ae4('0xb')]({'action':_0x5ae4('0x12')});};};ami[_0x5ae4('0x13')]=function(){return function(){return ami[_0x5ae4('0xb')]({'action':_0x5ae4('0x14')});};};ami[_0x5ae4('0x15')]=function(){return function(){return ami['Action']({'action':_0x5ae4('0x16')});};};ami[_0x5ae4('0x17')]=function(){return function(){return ami[_0x5ae4('0xb')]({'action':_0x5ae4('0x18')});};};function connect(_0x4e33d7){logger[_0x5ae4('0x19')](util[_0x5ae4('0x1a')](_0x5ae4('0x1b'),config['asterisk'][_0x5ae4('0x8')],config['asterisk']['ip'],config['asterisk'][_0x5ae4('0x6')]));ami[_0x5ae4('0x1c')](_0x5ae4('0xc'),error);ami[_0x5ae4('0x1c')](_0x5ae4('0x1d'),close);}ami['on']('connect',connect);ami['on'](_0x5ae4('0x1e'),function(_0x5ec248){logger[_0x5ae4('0x19')](util[_0x5ae4('0x1a')](_0x5ae4('0x1f'),config[_0x5ae4('0x7')][_0x5ae4('0x8')],config[_0x5ae4('0x7')]['ip'],config[_0x5ae4('0x7')]['port'],util[_0x5ae4('0xe')](_0x5ec248,![],null)));});ami['on'](_0x5ae4('0x20'),function(_0xd6bf8a){logger[_0x5ae4('0x19')](util[_0x5ae4('0x1a')](_0x5ae4('0x21'),config[_0x5ae4('0x7')]['username'],config[_0x5ae4('0x7')]['ip'],config[_0x5ae4('0x7')][_0x5ae4('0x6')]));return BPromise['resolve']()[_0x5ae4('0x22')](ami[_0x5ae4('0x23')]())[_0x5ae4('0x22')](ami['actionDeviceStateList']())['then'](ami['actionSipPeerStatus']())['then'](ami[_0x5ae4('0x15')]())[_0x5ae4('0x22')](ami[_0x5ae4('0x17')]())[_0x5ae4('0x24')](function(_0x329763){console[_0x5ae4('0x25')](_0x329763);});});ami['once'](_0x5ae4('0xc'),error);ami['once'](_0x5ae4('0x1d'),close);module[_0x5ae4('0x26')]=ami;
\ No newline at end of file
+var _0x54d2=['Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','port','actionSipShowRegistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','actionQueueSummary','queuesummary','actionCoreShowChannels','info','format','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','resolve','then','catch','log','exports','moment','util','lodash','../../config/logger','ami','../../config/environment','asterisk','username','password','Action','promisify','action','error'];(function(_0x5dd5d9,_0x1e4895){var _0xbbeaa7=function(_0x24f203){while(--_0x24f203){_0x5dd5d9['push'](_0x5dd5d9['shift']());}};_0xbbeaa7(++_0x1e4895);}(_0x54d2,0x1d4));var _0x254d=function(_0x543b53,_0x1f42fc){_0x543b53=_0x543b53-0x0;var _0x1ce4ee=_0x54d2[_0x543b53];return _0x1ce4ee;};'use strict';var Manager=require('asterisk-manager');var BPromise=require('bluebird');var moment=require(_0x254d('0x0'));var util=require(_0x254d('0x1'));var _=require(_0x254d('0x2'));var logger=require(_0x254d('0x3'))(_0x254d('0x4'));var config=require(_0x254d('0x5'));var ami=new Manager(config['asterisk']['port'],config[_0x254d('0x6')]['ip'],config['asterisk'][_0x254d('0x7')],config[_0x254d('0x6')][_0x254d('0x8')],!![]);ami['keepConnected']();ami[_0x254d('0x9')]=BPromise[_0x254d('0xa')](ami[_0x254d('0xb')]);function error(_0x3cb8e0){logger[_0x254d('0xc')](util['format'](_0x254d('0xd'),config['asterisk']['username'],config['asterisk']['ip'],config['asterisk']['port'],util[_0x254d('0xe')](_0x3cb8e0,![],null)));}function close(){logger[_0x254d('0xc')](util['format'](_0x254d('0xf'),config[_0x254d('0x6')][_0x254d('0x7')],config[_0x254d('0x6')]['ip'],config[_0x254d('0x6')][_0x254d('0x10')]));}ami[_0x254d('0x11')]=function(){return function(){return ami['Action']({'action':'sipshowregistry'});};};ami[_0x254d('0x12')]=function(){return function(){return ami[_0x254d('0x9')]({'action':_0x254d('0x13')});};};ami[_0x254d('0x14')]=function(){return function(){return ami[_0x254d('0x9')]({'action':'sippeerstatus'});};};ami[_0x254d('0x15')]=function(){return function(){return ami[_0x254d('0x9')]({'action':_0x254d('0x16')});};};ami[_0x254d('0x17')]=function(){return function(){return ami[_0x254d('0x9')]({'action':'coreshowchannels'});};};function connect(_0x5cd3df){logger[_0x254d('0x18')](util[_0x254d('0x19')](_0x254d('0x1a'),config[_0x254d('0x6')][_0x254d('0x7')],config[_0x254d('0x6')]['ip'],config[_0x254d('0x6')][_0x254d('0x10')]));ami[_0x254d('0x1b')](_0x254d('0xc'),error);ami[_0x254d('0x1b')](_0x254d('0x1c'),close);}ami['on'](_0x254d('0x1d'),connect);ami['on'](_0x254d('0x1e'),function(_0x26da98){logger[_0x254d('0x18')](util['format'](_0x254d('0x1f'),config[_0x254d('0x6')][_0x254d('0x7')],config['asterisk']['ip'],config[_0x254d('0x6')][_0x254d('0x10')],util[_0x254d('0xe')](_0x26da98,![],null)));});ami['on']('fullybooted',function(_0x55549f){logger['info'](util[_0x254d('0x19')]('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0x254d('0x6')]['username'],config['asterisk']['ip'],config[_0x254d('0x6')][_0x254d('0x10')]));return BPromise[_0x254d('0x20')]()['then'](ami[_0x254d('0x11')]())[_0x254d('0x21')](ami[_0x254d('0x12')]())['then'](ami['actionSipPeerStatus']())[_0x254d('0x21')](ami[_0x254d('0x15')]())[_0x254d('0x21')](ami[_0x254d('0x17')]())[_0x254d('0x22')](function(_0x4f3442){console[_0x254d('0x23')](_0x4f3442);});});ami['once']('error',error);ami[_0x254d('0x1b')](_0x254d('0x1c'),close);module[_0x254d('0x24')]=ami;
\ No newline at end of file
index 2fc213f..dadf43d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['message','result','catch','exports','bluebird','ami','http','Request','request','debug','rpc','memberReport','error'];(function(_0x28e71a,_0x4405bd){var _0x268fed=function(_0x404197){while(--_0x404197){_0x28e71a['push'](_0x28e71a['shift']());}};_0x268fed(++_0x4405bd);}(_0x9bde,0xe1));var _0xe9bd=function(_0x276feb,_0x1319aa){_0x276feb=_0x276feb-0x0;var _0x6b8f15=_0x9bde[_0x276feb];return _0x6b8f15;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xe9bd('0x0'));var logger=require('../../config/logger')(_0xe9bd('0x1'));var client=jayson['client'][_0xe9bd('0x2')]({'port':0x2329});client[_0xe9bd('0x3')]=function(_0x131f6a,_0x1c1b34){return new BPromise(function(_0x10822d,_0x1a4d14){return client[_0xe9bd('0x4')](_0x131f6a,_0x1c1b34)['then'](function(_0x4763e9){logger[_0xe9bd('0x5')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x1c1b34,_0x4763e9);if(_0x4763e9[_0xe9bd('0x8')]){logger[_0xe9bd('0x8')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x4763e9[_0xe9bd('0x8')][_0xe9bd('0x9')],_0x1c1b34);return _0x1a4d14(_0x4763e9['error']['message']);}else{return _0x10822d(_0x4763e9[_0xe9bd('0xa')]);}})[_0xe9bd('0xb')](function(_0x2601ac){logger['error'](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x2601ac,_0x1c1b34);return _0x1a4d14(_0x2601ac);});});};module[_0xe9bd('0xc')]=client;
\ No newline at end of file
+var _0x9bde=['message','result','catch','exports','bluebird','ami','http','Request','request','debug','rpc','memberReport','error'];(function(_0x332a78,_0x4d38b3){var _0x537ac5=function(_0x1a7526){while(--_0x1a7526){_0x332a78['push'](_0x332a78['shift']());}};_0x537ac5(++_0x4d38b3);}(_0x9bde,0xe1));var _0xe9bd=function(_0x1e38aa,_0x5caba1){_0x1e38aa=_0x1e38aa-0x0;var _0x5b9a0d=_0x9bde[_0x1e38aa];return _0x5b9a0d;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xe9bd('0x0'));var logger=require('../../config/logger')(_0xe9bd('0x1'));var client=jayson['client'][_0xe9bd('0x2')]({'port':0x2329});client[_0xe9bd('0x3')]=function(_0x131f6a,_0x1c1b34){return new BPromise(function(_0x10822d,_0x1a4d14){return client[_0xe9bd('0x4')](_0x131f6a,_0x1c1b34)['then'](function(_0x4763e9){logger[_0xe9bd('0x5')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x1c1b34,_0x4763e9);if(_0x4763e9[_0xe9bd('0x8')]){logger[_0xe9bd('0x8')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x4763e9[_0xe9bd('0x8')][_0xe9bd('0x9')],_0x1c1b34);return _0x1a4d14(_0x4763e9['error']['message']);}else{return _0x10822d(_0x4763e9[_0xe9bd('0xa')]);}})[_0xe9bd('0xb')](function(_0x2601ac){logger['error'](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x2601ac,_0x1c1b34);return _0x1a4d14(_0x2601ac);});});};module[_0xe9bd('0xc')]=client;
\ No newline at end of file
index 1d95697..105684c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x582d=['lodash','isNil','string','voiceQueue','uniqueid','name','Contact','phone','firstName','lastName','number','queue','active','type','scheduledat','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','VoiceQueueId','CampaignId','ContactFirstName','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','format','\x22%s\x22\x20<%s>','dialCutDigit','substring','exports','util'];(function(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0x582d,0xc7));var _0xd582=function(_0x57be43,_0x1d0a70){_0x57be43=_0x57be43-0x0;var _0x33fb63=_0x582d[_0x57be43];return _0x33fb63;};'use strict';var util=require(_0xd582('0x0'));var _=require(_0xd582('0x1'));var moment=require('moment');function checkNameSurname(_0x14f9f7,_0x51535b,_0x5817f4){var _0x230f43='';if(!_[_0xd582('0x2')](_0x51535b)&&_0xd582('0x3')===typeof _0x51535b){_0x230f43+=_0x51535b;}if(!_[_0xd582('0x2')](_0x5817f4)&&_0xd582('0x3')===typeof _0x5817f4){_0x230f43+='\x20'+_0x5817f4;}if(_0x230f43!==''){return _0x230f43;}return _0x14f9f7;}function Action(_0x2b1c8e,_0x5d8dbe,_0xcc92e){this[_0xd582('0x4')]=_0x2b1c8e;this[_0xd582('0x5')]=_0xcc92e||undefined;this[_0xd582('0x6')]=checkNameSurname(_0x5d8dbe[_0xd582('0x7')][_0xd582('0x8')],_0x5d8dbe[_0xd582('0x7')][_0xd582('0x9')],_0x5d8dbe[_0xd582('0x7')][_0xd582('0xa')]);this[_0xd582('0xb')]=_0x5d8dbe[_0xd582('0x7')][_0xd582('0x8')];this[_0xd582('0xc')]=_0x2b1c8e['name'];this[_0xd582('0xd')]=_0x5d8dbe['active']||![];this['type']=_0x2b1c8e[_0xd582('0xe')];this['dialQueueTimeout']=_0x2b1c8e['dialQueueTimeout']||0x3;this[_0xd582('0xf')]=_0x5d8dbe['scheduledat'];this['countbusyretry']=_0x5d8dbe[_0xd582('0x10')];this['countcongestionretry']=_0x5d8dbe['countcongestionretry'];this[_0xd582('0x11')]=_0x5d8dbe['countnoanswerretry'];this[_0xd582('0x12')]=_0x5d8dbe['countnosuchnumberretry'];this[_0xd582('0x13')]=_0x5d8dbe[_0xd582('0x13')];this[_0xd582('0x14')]=_0x5d8dbe[_0xd582('0x14')];this[_0xd582('0x15')]=_0x5d8dbe[_0xd582('0x15')];this[_0xd582('0x16')]=_0x5d8dbe['countagentrejectretry'];this[_0xd582('0x17')]=_0x5d8dbe[_0xd582('0x17')];this[_0xd582('0x18')]=_0x5d8dbe[_0xd582('0x18')];this['UserId']=_0x5d8dbe['UserId'];this[_0xd582('0x19')]=_0x5d8dbe[_0xd582('0x19')];this['CampaignId']=_0x5d8dbe[_0xd582('0x1a')];this['idHopper']=_0x5d8dbe['id'];this[_0xd582('0x1b')]=_0x5d8dbe['Contact']['firstName']||'';this['starttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['callback']=_0x5d8dbe[_0xd582('0x1c')];this[_0xd582('0x1d')]=_0x5d8dbe[_0xd582('0x1d')];this[_0xd582('0x1e')]=_0x5d8dbe['callbackat'];this[_0xd582('0x1f')]=_0x5d8dbe[_0xd582('0x1f')];this[_0xd582('0x20')]='';this[_0xd582('0x21')]='';}Action[_0xd582('0x22')]['getCaller']=function(){return util[_0xd582('0x23')](_0xd582('0x24'),this[_0xd582('0x6')],this[_0xd582('0x4')][_0xd582('0x25')]>0x0?this[_0xd582('0xb')][_0xd582('0x26')](this['voiceQueue'][_0xd582('0x25')]):this[_0xd582('0xb')]);};Action[_0xd582('0x22')]['getQueue']=function(){return this[_0xd582('0xc')];};module[_0xd582('0x27')]=Action;
\ No newline at end of file
+var _0xc65e=['countbusyretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','idHopper','ContactFirstName','firstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callbackuniqueid','callbackat','recallme','originatecalleridname','prototype','\x22%s\x22\x20<%s>','voiceQueue','dialCutDigit','substring','getQueue','exports','lodash','isNil','name','Contact','phone','lastName','number','queue','active','type','dialQueueTimeout','scheduledat'];(function(_0x3a4ac5,_0x551e0c){var _0x26da8d=function(_0x5a4f52){while(--_0x5a4f52){_0x3a4ac5['push'](_0x3a4ac5['shift']());}};_0x26da8d(++_0x551e0c);}(_0xc65e,0x1a1));var _0xec65=function(_0x486d19,_0x1851c9){_0x486d19=_0x486d19-0x0;var _0x18dd31=_0xc65e[_0x486d19];return _0x18dd31;};'use strict';var util=require('util');var _=require(_0xec65('0x0'));var moment=require('moment');function checkNameSurname(_0x122d7d,_0x537fdd,_0x1bb04e){var _0x54cf6f='';if(!_['isNil'](_0x537fdd)&&'string'===typeof _0x537fdd){_0x54cf6f+=_0x537fdd;}if(!_[_0xec65('0x1')](_0x1bb04e)&&'string'===typeof _0x1bb04e){_0x54cf6f+='\x20'+_0x1bb04e;}if(_0x54cf6f!==''){return _0x54cf6f;}return _0x122d7d;}function Action(_0x2b2f4c,_0x4c8dbc,_0x458766){this['voiceQueue']=_0x2b2f4c;this['uniqueid']=_0x458766||undefined;this[_0xec65('0x2')]=checkNameSurname(_0x4c8dbc[_0xec65('0x3')][_0xec65('0x4')],_0x4c8dbc[_0xec65('0x3')]['firstName'],_0x4c8dbc['Contact'][_0xec65('0x5')]);this[_0xec65('0x6')]=_0x4c8dbc['Contact'][_0xec65('0x4')];this[_0xec65('0x7')]=_0x2b2f4c['name'];this[_0xec65('0x8')]=_0x4c8dbc[_0xec65('0x8')]||![];this[_0xec65('0x9')]=_0x2b2f4c[_0xec65('0x9')];this['dialQueueTimeout']=_0x2b2f4c[_0xec65('0xa')]||0x3;this[_0xec65('0xb')]=_0x4c8dbc[_0xec65('0xb')];this[_0xec65('0xc')]=_0x4c8dbc['countbusyretry'];this['countcongestionretry']=_0x4c8dbc['countcongestionretry'];this['countnoanswerretry']=_0x4c8dbc[_0xec65('0xd')];this['countnosuchnumberretry']=_0x4c8dbc['countnosuchnumberretry'];this[_0xec65('0xe')]=_0x4c8dbc[_0xec65('0xe')];this[_0xec65('0xf')]=_0x4c8dbc[_0xec65('0xf')];this[_0xec65('0x10')]=_0x4c8dbc['countmachineretry'];this['countagentrejectretry']=_0x4c8dbc[_0xec65('0x11')];this[_0xec65('0x12')]=_0x4c8dbc[_0xec65('0x12')];this[_0xec65('0x13')]=_0x4c8dbc['ListId'];this[_0xec65('0x14')]=_0x4c8dbc[_0xec65('0x14')];this[_0xec65('0x15')]=_0x4c8dbc['VoiceQueueId'];this['CampaignId']=_0x4c8dbc['CampaignId'];this[_0xec65('0x16')]=_0x4c8dbc['id'];this[_0xec65('0x17')]=_0x4c8dbc['Contact'][_0xec65('0x18')]||'';this[_0xec65('0x19')]=moment()[_0xec65('0x1a')](_0xec65('0x1b'));this['callback']=_0x4c8dbc['callback'];this[_0xec65('0x1c')]=_0x4c8dbc[_0xec65('0x1c')];this['callbackat']=_0x4c8dbc[_0xec65('0x1d')];this['recallme']=_0x4c8dbc[_0xec65('0x1e')];this['originatecalleridnum']='';this[_0xec65('0x1f')]='';}Action[_0xec65('0x20')]['getCaller']=function(){return util[_0xec65('0x1a')](_0xec65('0x21'),this[_0xec65('0x2')],this[_0xec65('0x22')][_0xec65('0x23')]>0x0?this[_0xec65('0x6')][_0xec65('0x24')](this[_0xec65('0x22')][_0xec65('0x23')]):this[_0xec65('0x6')]);};Action[_0xec65('0x20')][_0xec65('0x25')]=function(){return this[_0xec65('0x7')];};module[_0xec65('0x26')]=Action;
\ No newline at end of file
index 5654f27..4edb3bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e26=['talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','moment','milliseconds','seconds','state','statedesc','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime'];(function(_0x5f2b6c,_0x4d0534){var _0x42437b=function(_0x3182c8){while(--_0x3182c8){_0x5f2b6c['push'](_0x5f2b6c['shift']());}};_0x42437b(++_0x4d0534);}(_0x4e26,0x149));var _0x64e2=function(_0xb0c53e,_0x41c2a3){_0xb0c53e=_0xb0c53e-0x0;var _0x121b26=_0x4e26[_0xb0c53e];return _0x121b26;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x64e2('0x0'));function getSeconds(_0x2c7d89,_0x4f1960){var _0x497c05=moment(_0x2c7d89)[_0x64e2('0x1')](0x0);var _0x4b3c49=moment(_0x4f1960)['milliseconds'](0x0);return _0x497c05['diff'](_0x4b3c49,_0x64e2('0x2'));}function AgentComplete(_0x188aa6,_0x47521b){this[_0x64e2('0x3')]=0x4;this[_0x64e2('0x4')]='Answer';this[_0x64e2('0x5')]=_0x188aa6[_0x64e2('0x5')];this[_0x64e2('0x6')]=_0x188aa6[_0x64e2('0x6')];this[_0x64e2('0x7')]=_0x188aa6[_0x64e2('0x6')]===_0x64e2('0x8')?_0x64e2('0x9'):_0x188aa6[_0x64e2('0x6')];this['countbusyretry']=_0x188aa6[_0x64e2('0xa')];this[_0x64e2('0xb')]=_0x188aa6[_0x64e2('0xb')];this[_0x64e2('0xc')]=_0x188aa6[_0x64e2('0xc')];this[_0x64e2('0xd')]=_0x188aa6['countbusyretry']+_0x188aa6[_0x64e2('0xb')]+_0x188aa6[_0x64e2('0xc')]+_0x188aa6[_0x64e2('0xe')]+_0x188aa6[_0x64e2('0xf')]+_0x188aa6[_0x64e2('0x10')]+_0x188aa6[_0x64e2('0x11')]+_0x188aa6[_0x64e2('0x12')];this[_0x64e2('0xe')]=_0x188aa6[_0x64e2('0xe')];this[_0x64e2('0xf')]=_0x188aa6['countdropretry'];this['countabandonedretry']=_0x188aa6['countabandonedretry'];this[_0x64e2('0x11')]=_0x188aa6[_0x64e2('0x11')];this[_0x64e2('0x12')]=_0x188aa6[_0x64e2('0x12')];this[_0x64e2('0x13')]=_0x47521b[_0x64e2('0x13')];this[_0x64e2('0x14')]=_0x188aa6[_0x64e2('0x15')];this['calleridnum']=_0x188aa6[_0x64e2('0x16')];this[_0x64e2('0x17')]=_0x188aa6[_0x64e2('0x17')];this[_0x64e2('0x18')]=_0x188aa6[_0x64e2('0x18')];this[_0x64e2('0x19')]=_0x188aa6[_0x64e2('0x19')];this[_0x64e2('0x1a')]=moment()[_0x64e2('0x1b')](_0x64e2('0x1c'));this[_0x64e2('0x1d')]=getSeconds(_0x188aa6[_0x64e2('0x18')],_0x188aa6['starttime']);this[_0x64e2('0x1e')]=getSeconds(_0x188aa6['answertime'],_0x188aa6[_0x64e2('0x18')]);this[_0x64e2('0x1f')]=getSeconds(this[_0x64e2('0x1a')],_0x188aa6['answertime']);this['queue']=_0x47521b[_0x64e2('0x9')];this[_0x64e2('0x20')]=_0x47521b[_0x64e2('0x20')];this[_0x64e2('0x21')]=_0x47521b['reason'];this[_0x64e2('0x22')]=_0x188aa6[_0x64e2('0x22')];this[_0x64e2('0x23')]=_0x188aa6[_0x64e2('0x23')];this[_0x64e2('0x24')]=_0x188aa6[_0x64e2('0x24')];this['recallme']=_0x188aa6[_0x64e2('0x25')];this[_0x64e2('0x26')]=_0x188aa6[_0x64e2('0x26')];this[_0x64e2('0x27')]=_0x188aa6[_0x64e2('0x27')];this[_0x64e2('0x28')]=_0x188aa6['UserId'];this[_0x64e2('0x29')]=_0x188aa6[_0x64e2('0x29')];this[_0x64e2('0x2a')]=_0x188aa6[_0x64e2('0x2a')];this[_0x64e2('0x2b')]=_0x188aa6[_0x64e2('0x2b')]||'';this[_0x64e2('0x2c')]=_0x188aa6[_0x64e2('0x2c')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0x2bda=['queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','state','statedesc','scheduledat','type','outbound'];(function(_0x38ed03,_0x553629){var _0x179627=function(_0xb4c466){while(--_0xb4c466){_0x38ed03['push'](_0x38ed03['shift']());}};_0x179627(++_0x553629);}(_0x2bda,0x1cb));var _0xa2bd=function(_0xd2d54,_0x5329f7){_0xd2d54=_0xd2d54-0x0;var _0x78b113=_0x2bda[_0xd2d54];return _0x78b113;};'use strict';var util=require(_0xa2bd('0x0'));var _=require(_0xa2bd('0x1'));var moment=require(_0xa2bd('0x2'));function getSeconds(_0x1da2f9,_0x5888bb){var _0x350c55=moment(_0x1da2f9)[_0xa2bd('0x3')](0x0);var _0x2ba32c=moment(_0x5888bb)[_0xa2bd('0x3')](0x0);return _0x350c55[_0xa2bd('0x4')](_0x2ba32c,_0xa2bd('0x5'));}function AgentComplete(_0x43f7b4,_0x4b8869){this[_0xa2bd('0x6')]=0x4;this[_0xa2bd('0x7')]='Answer';this[_0xa2bd('0x8')]=_0x43f7b4[_0xa2bd('0x8')];this[_0xa2bd('0x9')]=_0x43f7b4[_0xa2bd('0x9')];this['campaigntype']=_0x43f7b4[_0xa2bd('0x9')]===_0xa2bd('0xa')?_0xa2bd('0xb'):_0x43f7b4[_0xa2bd('0x9')];this[_0xa2bd('0xc')]=_0x43f7b4[_0xa2bd('0xc')];this[_0xa2bd('0xd')]=_0x43f7b4['countcongestionretry'];this[_0xa2bd('0xe')]=_0x43f7b4[_0xa2bd('0xe')];this[_0xa2bd('0xf')]=_0x43f7b4[_0xa2bd('0xc')]+_0x43f7b4[_0xa2bd('0xd')]+_0x43f7b4[_0xa2bd('0xe')]+_0x43f7b4[_0xa2bd('0x10')]+_0x43f7b4[_0xa2bd('0x11')]+_0x43f7b4[_0xa2bd('0x12')]+_0x43f7b4[_0xa2bd('0x13')]+_0x43f7b4[_0xa2bd('0x14')];this['countnosuchnumberretry']=_0x43f7b4[_0xa2bd('0x10')];this[_0xa2bd('0x11')]=_0x43f7b4[_0xa2bd('0x11')];this['countabandonedretry']=_0x43f7b4[_0xa2bd('0x12')];this[_0xa2bd('0x13')]=_0x43f7b4[_0xa2bd('0x13')];this[_0xa2bd('0x14')]=_0x43f7b4[_0xa2bd('0x14')];this[_0xa2bd('0x15')]=_0x4b8869[_0xa2bd('0x15')];this[_0xa2bd('0x16')]=_0x43f7b4[_0xa2bd('0x17')];this[_0xa2bd('0x18')]=_0x43f7b4['number'];this[_0xa2bd('0x19')]=_0x43f7b4[_0xa2bd('0x19')];this[_0xa2bd('0x1a')]=_0x43f7b4[_0xa2bd('0x1a')];this[_0xa2bd('0x1b')]=_0x43f7b4[_0xa2bd('0x1b')];this[_0xa2bd('0x1c')]=moment()[_0xa2bd('0x1d')](_0xa2bd('0x1e'));this[_0xa2bd('0x1f')]=getSeconds(_0x43f7b4['responsetime'],_0x43f7b4[_0xa2bd('0x19')]);this[_0xa2bd('0x20')]=getSeconds(_0x43f7b4[_0xa2bd('0x1b')],_0x43f7b4['responsetime']);this[_0xa2bd('0x21')]=getSeconds(this[_0xa2bd('0x1c')],_0x43f7b4[_0xa2bd('0x1b')]);this[_0xa2bd('0xb')]=_0x4b8869[_0xa2bd('0xb')];this['membername']=_0x4b8869['membername'];this[_0xa2bd('0x22')]=_0x4b8869[_0xa2bd('0x22')];this[_0xa2bd('0x23')]=_0x43f7b4[_0xa2bd('0x23')];this[_0xa2bd('0x24')]=_0x43f7b4['callbackuniqueid'];this[_0xa2bd('0x25')]=_0x43f7b4[_0xa2bd('0x25')];this[_0xa2bd('0x26')]=_0x43f7b4['recallme'];this[_0xa2bd('0x27')]=_0x43f7b4[_0xa2bd('0x27')];this[_0xa2bd('0x28')]=_0x43f7b4[_0xa2bd('0x28')];this['UserId']=_0x43f7b4[_0xa2bd('0x29')];this[_0xa2bd('0x2a')]=_0x43f7b4[_0xa2bd('0x2a')];this[_0xa2bd('0x2b')]=_0x43f7b4[_0xa2bd('0x2b')];this[_0xa2bd('0x2c')]=_0x43f7b4[_0xa2bd('0x2c')]||'';this[_0xa2bd('0x2d')]=_0x43f7b4[_0xa2bd('0x2d')]||'';}module[_0xa2bd('0x2e')]=AgentComplete;
\ No newline at end of file
index db25c7a..de3524a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x919e=['CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countagentrejectretry','countabandonedretry','countmachineretry','calleridname','calleridnum','responsetime','endtime','holdtime','talktime','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x10d456,_0x2b4359){var _0x3cf281=function(_0x13572f){while(--_0x13572f){_0x10d456['push'](_0x10d456['shift']());}};_0x3cf281(++_0x2b4359);}(_0x919e,0x1d7));var _0xe919=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x919e[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xe919('0x0'));var _=require(_0xe919('0x1'));var moment=require(_0xe919('0x2'));function getSeconds(_0x5d7d06,_0x115b01){var _0x55cc54=moment(_0x5d7d06)['milliseconds'](0x0);var _0x455cff=moment(_0x115b01)[_0xe919('0x3')](0x0);return _0x55cc54[_0xe919('0x4')](_0x455cff,_0xe919('0x5'));}function Final(_0x2171e9){this[_0xe919('0x6')]=_0x2171e9[_0xe919('0x6')];this['scheduledat']=_0x2171e9[_0xe919('0x7')];this[_0xe919('0x8')]=_0x2171e9['type'];this[_0xe919('0x9')]=_0x2171e9['type']===_0xe919('0xa')?_0xe919('0xb'):_0x2171e9[_0xe919('0x8')];this['countbusyretry']=_0x2171e9[_0xe919('0xc')];this[_0xe919('0xd')]=_0x2171e9[_0xe919('0xd')];this['countnoanswerretry']=_0x2171e9[_0xe919('0xe')];this['countglobal']=_0x2171e9['countbusyretry']+_0x2171e9['countcongestionretry']+_0x2171e9[_0xe919('0xe')]+_0x2171e9[_0xe919('0xf')]+_0x2171e9[_0xe919('0x10')]+_0x2171e9['countabandonedretry']+_0x2171e9['countmachineretry']+_0x2171e9[_0xe919('0x11')];this[_0xe919('0xf')]=_0x2171e9['countnosuchnumberretry'];this[_0xe919('0x10')]=_0x2171e9[_0xe919('0x10')];this[_0xe919('0x12')]=_0x2171e9[_0xe919('0x12')];this[_0xe919('0x13')]=_0x2171e9[_0xe919('0x13')];this[_0xe919('0x11')]=_0x2171e9['countagentrejectretry'];this[_0xe919('0xb')]=_0x2171e9['queue'];this['calleridname']=_0x2171e9[_0xe919('0x14')];this[_0xe919('0x15')]=_0x2171e9['calleridnum'];this['starttime']=_0x2171e9['starttime'];this[_0xe919('0x16')]=_0x2171e9[_0xe919('0x16')];this[_0xe919('0x17')]=_0x2171e9[_0xe919('0x16')];this['ringtime']=_0x2171e9['ringtime']||0x0;this[_0xe919('0x18')]=_0x2171e9[_0xe919('0x18')]||0x0;this[_0xe919('0x19')]=_0x2171e9[_0xe919('0x19')]||0x0;this['callback']=_0x2171e9[_0xe919('0x1a')];this[_0xe919('0x1b')]=_0x2171e9['callbackuniqueid'];this['callbackat']=_0x2171e9[_0xe919('0x1c')];this['recallme']=_0x2171e9['recallme'];this[_0xe919('0x1d')]=_0x2171e9[_0xe919('0x1d')];this['ListId']=_0x2171e9[_0xe919('0x1e')];this[_0xe919('0x1f')]=_0x2171e9[_0xe919('0x1f')];this[_0xe919('0x20')]=_0x2171e9['VoiceQueueId'];this[_0xe919('0x21')]=_0x2171e9[_0xe919('0x21')];this[_0xe919('0x22')]=_0x2171e9['originatecalleridnum']||'';this[_0xe919('0x23')]=_0x2171e9[_0xe919('0x23')]||'';}module['exports']=Final;
\ No newline at end of file
+var _0xf69d=['starttime','responsetime','endtime','ringtime','holdtime','talktime','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','calleridname','calleridnum'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0xf69d,0xd3));var _0xdf69=function(_0x394fda,_0x16af02){_0x394fda=_0x394fda-0x0;var _0x3f5b00=_0xf69d[_0x394fda];return _0x3f5b00;};'use strict';var util=require(_0xdf69('0x0'));var _=require(_0xdf69('0x1'));var moment=require(_0xdf69('0x2'));function getSeconds(_0xe063fc,_0xf89475){var _0x4e4bdd=moment(_0xe063fc)[_0xdf69('0x3')](0x0);var _0x342114=moment(_0xf89475)[_0xdf69('0x3')](0x0);return _0x4e4bdd[_0xdf69('0x4')](_0x342114,_0xdf69('0x5'));}function Final(_0x18ce2b){this[_0xdf69('0x6')]=_0x18ce2b[_0xdf69('0x6')];this[_0xdf69('0x7')]=_0x18ce2b[_0xdf69('0x7')];this[_0xdf69('0x8')]=_0x18ce2b[_0xdf69('0x8')];this[_0xdf69('0x9')]=_0x18ce2b[_0xdf69('0x8')]===_0xdf69('0xa')?_0xdf69('0xb'):_0x18ce2b[_0xdf69('0x8')];this['countbusyretry']=_0x18ce2b[_0xdf69('0xc')];this[_0xdf69('0xd')]=_0x18ce2b[_0xdf69('0xd')];this[_0xdf69('0xe')]=_0x18ce2b[_0xdf69('0xe')];this[_0xdf69('0xf')]=_0x18ce2b['countbusyretry']+_0x18ce2b['countcongestionretry']+_0x18ce2b['countnoanswerretry']+_0x18ce2b['countnosuchnumberretry']+_0x18ce2b[_0xdf69('0x10')]+_0x18ce2b[_0xdf69('0x11')]+_0x18ce2b[_0xdf69('0x12')]+_0x18ce2b[_0xdf69('0x13')];this[_0xdf69('0x14')]=_0x18ce2b[_0xdf69('0x14')];this['countdropretry']=_0x18ce2b[_0xdf69('0x10')];this[_0xdf69('0x11')]=_0x18ce2b[_0xdf69('0x11')];this[_0xdf69('0x12')]=_0x18ce2b['countmachineretry'];this[_0xdf69('0x13')]=_0x18ce2b['countagentrejectretry'];this[_0xdf69('0xb')]=_0x18ce2b[_0xdf69('0xb')];this['calleridname']=_0x18ce2b[_0xdf69('0x15')];this[_0xdf69('0x16')]=_0x18ce2b[_0xdf69('0x16')];this[_0xdf69('0x17')]=_0x18ce2b['starttime'];this['responsetime']=_0x18ce2b[_0xdf69('0x18')];this[_0xdf69('0x19')]=_0x18ce2b['responsetime'];this[_0xdf69('0x1a')]=_0x18ce2b[_0xdf69('0x1a')]||0x0;this[_0xdf69('0x1b')]=_0x18ce2b['holdtime']||0x0;this[_0xdf69('0x1c')]=_0x18ce2b[_0xdf69('0x1c')]||0x0;this['callback']=_0x18ce2b['callback'];this[_0xdf69('0x1d')]=_0x18ce2b[_0xdf69('0x1d')];this[_0xdf69('0x1e')]=_0x18ce2b['callbackat'];this['recallme']=_0x18ce2b['recallme'];this[_0xdf69('0x1f')]=_0x18ce2b['ContactId'];this[_0xdf69('0x20')]=_0x18ce2b[_0xdf69('0x20')];this[_0xdf69('0x21')]=_0x18ce2b['UserId'];this['VoiceQueueId']=_0x18ce2b[_0xdf69('0x22')];this[_0xdf69('0x23')]=_0x18ce2b[_0xdf69('0x23')];this[_0xdf69('0x24')]=_0x18ce2b['originatecalleridnum']||'';this[_0xdf69('0x25')]=_0x18ce2b[_0xdf69('0x25')]||'';}module[_0xdf69('0x26')]=Final;
\ No newline at end of file
index eac11df..3bd5e77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb069=['callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','milliseconds','diff','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countdropretry','countagentrejectretry','uniqueid','calleridname','number','starttime','responsetime','endtime','format','ringtime','holdtime','talktime','reason','cause-txt','callback','callbackuniqueid'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb069,0xdf));var _0x9b06=function(_0x1f3843,_0x523c5b){_0x1f3843=_0x1f3843-0x0;var _0x5a63ef=_0xb069[_0x1f3843];return _0x5a63ef;};'use strict';var util=require(_0x9b06('0x0'));var _=require(_0x9b06('0x1'));var moment=require('moment');function getSeconds(_0x17b56d,_0x3786d5){var _0x3f1d66=moment(_0x17b56d)[_0x9b06('0x2')](0x0);var _0x3707c4=moment(_0x3786d5)[_0x9b06('0x2')](0x0);return _0x3f1d66[_0x9b06('0x3')](_0x3707c4,'seconds');}function Hangup(_0x419b09,_0x4000c6){this[_0x9b06('0x4')]=0x4;this[_0x9b06('0x5')]=_0x9b06('0x6');this[_0x9b06('0x7')]=_0x419b09['scheduledat'];this[_0x9b06('0x8')]=_0x419b09[_0x9b06('0x8')];this[_0x9b06('0x9')]=_0x419b09[_0x9b06('0x8')]===_0x9b06('0xa')?_0x9b06('0xb'):_0x419b09[_0x9b06('0x8')];this[_0x9b06('0xc')]=_0x419b09[_0x9b06('0xc')];this['countcongestionretry']=_0x419b09[_0x9b06('0xd')];this[_0x9b06('0xe')]=_0x419b09[_0x9b06('0xe')];this[_0x9b06('0xf')]=_0x419b09['countbusyretry']+_0x419b09[_0x9b06('0xd')]+_0x419b09[_0x9b06('0xe')]+_0x419b09[_0x9b06('0x10')]+_0x419b09['countdropretry']+_0x419b09[_0x9b06('0x11')]+_0x419b09[_0x9b06('0x12')]+_0x419b09['countagentrejectretry'];this[_0x9b06('0x10')]=_0x419b09['countnosuchnumberretry'];this[_0x9b06('0x13')]=_0x419b09[_0x9b06('0x13')];this[_0x9b06('0x11')]=_0x419b09['countabandonedretry'];this['countmachineretry']=_0x419b09['countmachineretry'];this[_0x9b06('0x14')]=_0x419b09[_0x9b06('0x14')];this[_0x9b06('0x15')]=_0x4000c6[_0x9b06('0x15')];this[_0x9b06('0x16')]=_0x419b09['name'];this['calleridnum']=_0x419b09[_0x9b06('0x17')];this[_0x9b06('0x18')]=_0x419b09[_0x9b06('0x18')];this[_0x9b06('0x19')]=_0x419b09[_0x9b06('0x19')];this[_0x9b06('0x1a')]=moment()[_0x9b06('0x1b')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x9b06('0x1c')]=getSeconds(_0x419b09[_0x9b06('0x19')],_0x419b09[_0x9b06('0x18')]);this[_0x9b06('0x1d')]=0x0;this[_0x9b06('0x1e')]=getSeconds(this[_0x9b06('0x1a')],_0x419b09[_0x9b06('0x19')]);this['queue']=_0x419b09[_0x9b06('0xb')];this['membername']='IVR';this[_0x9b06('0x1f')]=_0x4000c6[_0x9b06('0x20')];this[_0x9b06('0x21')]=_0x419b09[_0x9b06('0x21')];this[_0x9b06('0x22')]=_0x419b09['callbackuniqueid'];this['callbackat']=_0x419b09[_0x9b06('0x23')];this[_0x9b06('0x24')]=_0x419b09[_0x9b06('0x24')];this[_0x9b06('0x25')]=_0x419b09[_0x9b06('0x25')];this[_0x9b06('0x26')]=_0x419b09[_0x9b06('0x26')];this[_0x9b06('0x27')]=_0x419b09['UserId'];this[_0x9b06('0x28')]=_0x419b09[_0x9b06('0x28')];this[_0x9b06('0x29')]=_0x419b09[_0x9b06('0x29')];}module[_0x9b06('0x2a')]=Hangup;
\ No newline at end of file
+var _0x7ac9=['campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countmachineretry','countagentrejectretry','countdropretry','countabandonedretry','uniqueid','calleridname','name','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','IVR','reason','cause-txt','callback','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','util','lodash','moment','milliseconds','diff','Answer','scheduledat','type'];(function(_0x1d55d7,_0x299c96){var _0x41b818=function(_0x6e456){while(--_0x6e456){_0x1d55d7['push'](_0x1d55d7['shift']());}};_0x41b818(++_0x299c96);}(_0x7ac9,0x17b));var _0x97ac=function(_0x33ce3d,_0x280da0){_0x33ce3d=_0x33ce3d-0x0;var _0x507f46=_0x7ac9[_0x33ce3d];return _0x507f46;};'use strict';var util=require(_0x97ac('0x0'));var _=require(_0x97ac('0x1'));var moment=require(_0x97ac('0x2'));function getSeconds(_0xc28d0,_0x21ddc4){var _0x30671c=moment(_0xc28d0)[_0x97ac('0x3')](0x0);var _0x1e70f6=moment(_0x21ddc4)[_0x97ac('0x3')](0x0);return _0x30671c[_0x97ac('0x4')](_0x1e70f6,'seconds');}function Hangup(_0x1537a9,_0x13b667){this['state']=0x4;this['statedesc']=_0x97ac('0x5');this[_0x97ac('0x6')]=_0x1537a9[_0x97ac('0x6')];this['type']=_0x1537a9[_0x97ac('0x7')];this[_0x97ac('0x8')]=_0x1537a9['type']==='outbound'?_0x97ac('0x9'):_0x1537a9[_0x97ac('0x7')];this[_0x97ac('0xa')]=_0x1537a9[_0x97ac('0xa')];this[_0x97ac('0xb')]=_0x1537a9[_0x97ac('0xb')];this[_0x97ac('0xc')]=_0x1537a9['countnoanswerretry'];this[_0x97ac('0xd')]=_0x1537a9[_0x97ac('0xa')]+_0x1537a9[_0x97ac('0xb')]+_0x1537a9[_0x97ac('0xc')]+_0x1537a9[_0x97ac('0xe')]+_0x1537a9['countdropretry']+_0x1537a9['countabandonedretry']+_0x1537a9[_0x97ac('0xf')]+_0x1537a9[_0x97ac('0x10')];this[_0x97ac('0xe')]=_0x1537a9[_0x97ac('0xe')];this[_0x97ac('0x11')]=_0x1537a9['countdropretry'];this[_0x97ac('0x12')]=_0x1537a9['countabandonedretry'];this[_0x97ac('0xf')]=_0x1537a9[_0x97ac('0xf')];this['countagentrejectretry']=_0x1537a9[_0x97ac('0x10')];this[_0x97ac('0x13')]=_0x13b667['uniqueid'];this[_0x97ac('0x14')]=_0x1537a9[_0x97ac('0x15')];this['calleridnum']=_0x1537a9[_0x97ac('0x16')];this[_0x97ac('0x17')]=_0x1537a9[_0x97ac('0x17')];this[_0x97ac('0x18')]=_0x1537a9['responsetime'];this[_0x97ac('0x19')]=moment()[_0x97ac('0x1a')](_0x97ac('0x1b'));this[_0x97ac('0x1c')]=getSeconds(_0x1537a9[_0x97ac('0x18')],_0x1537a9[_0x97ac('0x17')]);this[_0x97ac('0x1d')]=0x0;this[_0x97ac('0x1e')]=getSeconds(this[_0x97ac('0x19')],_0x1537a9[_0x97ac('0x18')]);this[_0x97ac('0x9')]=_0x1537a9[_0x97ac('0x9')];this[_0x97ac('0x1f')]=_0x97ac('0x20');this[_0x97ac('0x21')]=_0x13b667[_0x97ac('0x22')];this['callback']=_0x1537a9[_0x97ac('0x23')];this['callbackuniqueid']=_0x1537a9['callbackuniqueid'];this[_0x97ac('0x24')]=_0x1537a9[_0x97ac('0x24')];this[_0x97ac('0x25')]=_0x1537a9['recallme'];this['ContactId']=_0x1537a9[_0x97ac('0x26')];this[_0x97ac('0x27')]=_0x1537a9['ListId'];this['UserId']=_0x1537a9[_0x97ac('0x28')];this['VoiceQueueId']=_0x1537a9[_0x97ac('0x29')];this['CampaignId']=_0x1537a9[_0x97ac('0x2a')];}module['exports']=Hangup;
\ No newline at end of file
index 9d52ea5..5066535 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc80=['scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','name','calleridnum','number','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','uniqueid'];(function(_0x42f009,_0x5e27b1){var _0x22a1e0=function(_0x297993){while(--_0x297993){_0x42f009['push'](_0x42f009['shift']());}};_0x22a1e0(++_0x5e27b1);}(_0xdc80,0x10b));var _0x0dc8=function(_0x35f7f5,_0x4e2ee1){_0x35f7f5=_0x35f7f5-0x0;var _0x5567a4=_0xdc80[_0x35f7f5];return _0x5567a4;};'use strict';var util=require(_0x0dc8('0x0'));var _=require(_0x0dc8('0x1'));var moment=require(_0x0dc8('0x2'));function getSeconds(_0x55da78,_0x595d45){var _0x3cced9=moment(_0x55da78)[_0x0dc8('0x3')](0x0);var _0x349f48=moment(_0x595d45)[_0x0dc8('0x3')](0x0);return _0x3cced9[_0x0dc8('0x4')](_0x349f48,'seconds');}function History(_0x42030b){this['uniqueid']=_0x42030b[_0x0dc8('0x5')];this[_0x0dc8('0x6')]=_0x42030b[_0x0dc8('0x6')]||undefined;this[_0x0dc8('0x7')]=_0x42030b[_0x0dc8('0x7')];this[_0x0dc8('0x8')]=_0x42030b[_0x0dc8('0x7')]===_0x0dc8('0x9')?_0x0dc8('0xa'):_0x42030b['type'];this[_0x0dc8('0xb')]=_0x42030b[_0x0dc8('0xb')];this[_0x0dc8('0xc')]=_0x42030b['countcongestionretry'];this[_0x0dc8('0xd')]=_0x42030b[_0x0dc8('0xd')];this['countglobal']=_0x42030b[_0x0dc8('0xb')]+_0x42030b['countcongestionretry']+_0x42030b[_0x0dc8('0xd')]+_0x42030b[_0x0dc8('0xe')]+_0x42030b[_0x0dc8('0xf')]+_0x42030b[_0x0dc8('0x10')]+_0x42030b[_0x0dc8('0x11')]+_0x42030b[_0x0dc8('0x12')];this['countnosuchnumberretry']=_0x42030b['countnosuchnumberretry'];this[_0x0dc8('0xf')]=_0x42030b[_0x0dc8('0xf')];this['countabandonedretry']=_0x42030b['countabandonedretry'];this['countmachineretry']=_0x42030b[_0x0dc8('0x11')];this['countagentrejectretry']=_0x42030b[_0x0dc8('0x12')];this[_0x0dc8('0xa')]=_0x42030b[_0x0dc8('0xa')];this['calleridname']=_0x42030b[_0x0dc8('0x13')];this[_0x0dc8('0x14')]=_0x42030b[_0x0dc8('0x15')];this[_0x0dc8('0x16')]=_0x42030b[_0x0dc8('0x16')];this['responsetime']=_0x42030b[_0x0dc8('0x17')];this[_0x0dc8('0x18')]=_0x42030b[_0x0dc8('0x17')];this[_0x0dc8('0x19')]=getSeconds(_0x42030b[_0x0dc8('0x17')],_0x42030b[_0x0dc8('0x16')]);this[_0x0dc8('0x1a')]=0x0;this[_0x0dc8('0x1b')]=0x0;this[_0x0dc8('0x1c')]=_0x42030b['callback'];this['callbackuniqueid']=_0x42030b[_0x0dc8('0x1d')];this['callbackat']=_0x42030b[_0x0dc8('0x1e')];this[_0x0dc8('0x1f')]=_0x42030b[_0x0dc8('0x1f')];this[_0x0dc8('0x20')]=_0x42030b[_0x0dc8('0x20')];this[_0x0dc8('0x21')]=_0x42030b[_0x0dc8('0x21')];this[_0x0dc8('0x22')]=_0x42030b[_0x0dc8('0x22')];this['VoiceQueueId']=_0x42030b[_0x0dc8('0x23')];this[_0x0dc8('0x24')]=_0x42030b[_0x0dc8('0x24')];this['originatecalleridnum']=_0x42030b[_0x0dc8('0x25')]||'';this[_0x0dc8('0x26')]=_0x42030b[_0x0dc8('0x26')]||'';}module['exports']=History;
\ No newline at end of file
+var _0x45dd=['originatecalleridnum','originatecalleridname','exports','moment','milliseconds','diff','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId'];(function(_0x57d1e8,_0x504b56){var _0x24a689=function(_0x3e4f58){while(--_0x3e4f58){_0x57d1e8['push'](_0x57d1e8['shift']());}};_0x24a689(++_0x504b56);}(_0x45dd,0x162));var _0xd45d=function(_0x4bc72e,_0x36588c){_0x4bc72e=_0x4bc72e-0x0;var _0x197b99=_0x45dd[_0x4bc72e];return _0x197b99;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0xd45d('0x0'));function getSeconds(_0x478a98,_0x399314){var _0x52e952=moment(_0x478a98)[_0xd45d('0x1')](0x0);var _0x57982b=moment(_0x399314)[_0xd45d('0x1')](0x0);return _0x52e952[_0xd45d('0x2')](_0x57982b,'seconds');}function History(_0x3cfb6b){this[_0xd45d('0x3')]=_0x3cfb6b['uniqueid'];this[_0xd45d('0x4')]=_0x3cfb6b[_0xd45d('0x4')]||undefined;this[_0xd45d('0x5')]=_0x3cfb6b[_0xd45d('0x5')];this[_0xd45d('0x6')]=_0x3cfb6b[_0xd45d('0x5')]===_0xd45d('0x7')?_0xd45d('0x8'):_0x3cfb6b[_0xd45d('0x5')];this['countbusyretry']=_0x3cfb6b[_0xd45d('0x9')];this[_0xd45d('0xa')]=_0x3cfb6b[_0xd45d('0xa')];this[_0xd45d('0xb')]=_0x3cfb6b[_0xd45d('0xb')];this['countglobal']=_0x3cfb6b[_0xd45d('0x9')]+_0x3cfb6b[_0xd45d('0xa')]+_0x3cfb6b[_0xd45d('0xb')]+_0x3cfb6b[_0xd45d('0xc')]+_0x3cfb6b[_0xd45d('0xd')]+_0x3cfb6b[_0xd45d('0xe')]+_0x3cfb6b[_0xd45d('0xf')]+_0x3cfb6b[_0xd45d('0x10')];this['countnosuchnumberretry']=_0x3cfb6b[_0xd45d('0xc')];this[_0xd45d('0xd')]=_0x3cfb6b[_0xd45d('0xd')];this[_0xd45d('0xe')]=_0x3cfb6b['countabandonedretry'];this['countmachineretry']=_0x3cfb6b[_0xd45d('0xf')];this[_0xd45d('0x10')]=_0x3cfb6b['countagentrejectretry'];this['queue']=_0x3cfb6b[_0xd45d('0x8')];this[_0xd45d('0x11')]=_0x3cfb6b[_0xd45d('0x12')];this[_0xd45d('0x13')]=_0x3cfb6b[_0xd45d('0x14')];this[_0xd45d('0x15')]=_0x3cfb6b['starttime'];this[_0xd45d('0x16')]=_0x3cfb6b[_0xd45d('0x16')];this[_0xd45d('0x17')]=_0x3cfb6b[_0xd45d('0x16')];this[_0xd45d('0x18')]=getSeconds(_0x3cfb6b[_0xd45d('0x16')],_0x3cfb6b[_0xd45d('0x15')]);this[_0xd45d('0x19')]=0x0;this[_0xd45d('0x1a')]=0x0;this[_0xd45d('0x1b')]=_0x3cfb6b[_0xd45d('0x1b')];this[_0xd45d('0x1c')]=_0x3cfb6b[_0xd45d('0x1c')];this[_0xd45d('0x1d')]=_0x3cfb6b[_0xd45d('0x1d')];this[_0xd45d('0x1e')]=_0x3cfb6b[_0xd45d('0x1e')];this['ContactId']=_0x3cfb6b[_0xd45d('0x1f')];this[_0xd45d('0x20')]=_0x3cfb6b[_0xd45d('0x20')];this[_0xd45d('0x21')]=_0x3cfb6b[_0xd45d('0x21')];this[_0xd45d('0x22')]=_0x3cfb6b[_0xd45d('0x22')];this['CampaignId']=_0x3cfb6b[_0xd45d('0x23')];this['originatecalleridnum']=_0x3cfb6b[_0xd45d('0x24')]||'';this['originatecalleridname']=_0x3cfb6b[_0xd45d('0x25')]||'';}module[_0xd45d('0x26')]=History;
\ No newline at end of file
index 58d95e1..06488a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7fc=['message','AGENTS_NOT_LOGGED','name','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','Intervals','\x20INTERVAL_IS_NULL','[ifTime][Action]','Error','stringify','milliseconds','diff','emit','type','outbound','strategy','answered','available','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','abandoned','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','callerid','format','voice:queue:%s','voice_queue:save','campaign:ivr:%s','campaign:save','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAnsweredCalls','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','isUndefined','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','erlangCalls','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','clearing\x20variable\x20start\x20progressive','startPredictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','ivr','string','isEmpty','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','stack','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','sendMessageOneNotActive','waiting','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','starttime','clearZombieChannels','uniqueId','actions','[actions]','Action','status','channel','No\x20such\x20channel','[Dialer][checkChannel]','updateOriginated','queue','resolve','then','countReScheduled','catch','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','unlockContact','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','merge','pick','ContactId','UserId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','SIP/%s','reachable','isNil','variable','exten','xcally-motion-dialer','value','HANGUP','outboundAnswerAgiCallsDay','HangupInAMD','membername','AMD','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','dialAMDActive','MACHINE','uniqueid','Machine','countmachineretry','countglobal','custom:amd','buildObj','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','rescheduleContact','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ListId','VoiceQueueId','CampaignId','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','[syncAgentComplete][createHistory][0]','countdropretry','dialGlobalMaxRetry','ivrAnswerCallsDay','[syncHangupIvr]','AnswerAGI','AGI','[syncHangupIvr][createHistory]','cause-txt','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','dropreason','TIMEOUT','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','calleridname','calleridnum','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','actionid','locked','paused','stateinterface','queueBooked','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','syncQueueStatusComplete','run','_rr','unlockRR','[booked][RR]','Agent:\x20','[Catch][Preview][syncQueueStatusComplete]','[booked][RR][finaly]','contactAgent-idHopper:\x20','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','loopCampaigns','checkIsTrunkReachable','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ifTime','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','length','command','iftime\x20%s,%s','interval','indexOf','true','push','content','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','checkDialMethod','progressive','handlePower','predictive','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','loggedIn','checkIfTime','dialGlobalInterval','dialTimezone','[syncQueueSummary]','syncCampaigns','checkIfTimeIntervals','[syncCampaigns]','pow','replace','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','dialQueueProject','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','XMD-AMDINITIALSILENCE','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','dialAMDMinWordLength','XMD-AMDSILENCETHRESHOLD','dialAMDMaximumWordLength','XMD-CAMPAIGNID','tags','createdAt','updatedAt','toUpper','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','trim','substring','dialCutDigit','from-sip','dialOriginateTimeout','[originateError]:\x20%s','OriginateError','endtime','[originate][error]','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyRetryFrequency','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','entity\x20is\x20undefine','[callProgressDetecting]','evt\x20is\x20undefine','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','dialBusyMaxRetry','reason\x205\x20busy','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','outboundUnknownCallsDay','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','predictiveIntervalErlangCallsDroppedCalls','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','recalculate\x20predictive\x20at','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','dialPredictiveOptimizationPercentage','abandonmentRate','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','agentBusyFactor','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','Blacklist','[Originate][MoveBlacklist]','inBlackList','limitCalls','AVAILABLE_CONTACTS_FINISHED','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','dialOrderByScheduledAt','ACTIVE','[handlePredictive][limitChannel]','tryOriginatePredictive','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Umin\x20=\x20','exports','util','uuid','moment','md5','../../../config/environment/','../../../config/logger','dialer','booked','predictiveCalls','../ami','redis','localhost','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','contactsId','startProgressive','ivrOriginated','queueBookedRR','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','hangup','syncHangup','newexten','syncNewExten','syncVarSet','queuemember','queuestatuscomplete','loopClearZombieChannels'];(function(_0x2b577a,_0x27caa3){var _0x4fb56e=function(_0x2879ef){while(--_0x2879ef){_0x2b577a['push'](_0x2b577a['shift']());}};_0x4fb56e(++_0x27caa3);}(_0xb7fc,0x1e3));var _0xcb7f=function(_0x6aa32f,_0x3820f7){_0x6aa32f=_0x6aa32f-0x0;var _0x52bfee=_0xb7fc[_0x6aa32f];return _0x52bfee;};'use strict';var util=require(_0xcb7f('0x0'));var _=require('lodash');var BPromise=require('bluebird');var uuid=require(_0xcb7f('0x1'));var moment=require(_0xcb7f('0x2'));var rr=require('rr');var md5=require(_0xcb7f('0x3'));var Redis=require('ioredis');var ut=require('../preview/util/util');var config=require(_0xcb7f('0x4'));var logger=require(_0xcb7f('0x5'))(_0xcb7f('0x6'));var loggerBooked=require(_0xcb7f('0x5'))(_0xcb7f('0x7'));var loggerPredictive=require(_0xcb7f('0x5'))('predictive');var loggerPredictiveCalls=require(_0xcb7f('0x5'))(_0xcb7f('0x8'));var loggerSyncQueueSummary=require(_0xcb7f('0x5'))('syncQueueSummary');var ami=require(_0xcb7f('0x9'));config[_0xcb7f('0xa')]=_['defaults'](config[_0xcb7f('0xa')],{'host':_0xcb7f('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xcb7f('0xa')]));var cmHopper=require(_0xcb7f('0xc'));var cmHopperHistory=require(_0xcb7f('0xd'));var cmHopperBlack=require(_0xcb7f('0xe'));var voiceQueueRt=require(_0xcb7f('0xf'));var Action=require('./action');var History=require('./history');var Final=require(_0xcb7f('0x10'));var AgentComplete=require(_0xcb7f('0x11'));var QueueCallerAbandon=require(_0xcb7f('0x12'));var Hangup=require(_0xcb7f('0x13'));var ipAgi=process[_0xcb7f('0x14')][_0xcb7f('0x15')]||_0xcb7f('0x16');var strategy={'rrmemory':_0xcb7f('0x17'),'roundrobin':_0xcb7f('0x18')};var Sequence=function(){};Sequence[_0xcb7f('0x19')][_0xcb7f('0x1a')]=function(_0x35a3b7){this[_0xcb7f('0x1b')]=this[_0xcb7f('0x1b')]?this[_0xcb7f('0x1b')][_0xcb7f('0x1c')](_0x35a3b7):_0x35a3b7();};function Dialer(_0x17e54f,_0x3fb85d){this[_0xcb7f('0x1d')]=new Sequence();this[_0xcb7f('0x1e')]=_0x3fb85d;this[_0xcb7f('0x1f')]=_0x17e54f[_0xcb7f('0x1f')];this['campaigns']=_0x17e54f[_0xcb7f('0x20')];this[_0xcb7f('0x21')]=_0x17e54f['agents'];this['trunks']=_0x17e54f[_0xcb7f('0x22')];this[_0xcb7f('0x23')]=config[_0xcb7f('0x23')]||0x2;this['channels']={};this['actions']={};this[_0xcb7f('0x24')]={};this['uniqueId']={};this['optionPredictive']={};this['startPredictive']={};this[_0xcb7f('0x25')]={};this[_0xcb7f('0x26')]={};this['queueBooked']={};this[_0xcb7f('0x27')]={};ami['on'](_0xcb7f('0x28'),this[_0xcb7f('0x29')][_0xcb7f('0x2a')](this));ami['on'](_0xcb7f('0x2b'),this[_0xcb7f('0x2c')]['bind'](this));ami['on']('originateresponse',this[_0xcb7f('0x2d')][_0xcb7f('0x2a')](this));ami['on'](_0xcb7f('0x2e'),this[_0xcb7f('0x2f')][_0xcb7f('0x2a')](this));ami['on'](_0xcb7f('0x30'),this['syncQueueSummary'][_0xcb7f('0x2a')](this));ami['on'](_0xcb7f('0x31'),this[_0xcb7f('0x32')]['bind'](this));ami['on'](_0xcb7f('0x33'),this[_0xcb7f('0x34')][_0xcb7f('0x2a')](this));ami['on']('varset',this[_0xcb7f('0x35')]['bind'](this));ami['on'](_0xcb7f('0x36'),this['syncQueueMember'][_0xcb7f('0x2a')](this));ami['on'](_0xcb7f('0x37'),this['syncQueueStatusComplete'][_0xcb7f('0x2a')](this));this['loopCampaigns']();this[_0xcb7f('0x38')]();}function isNotNull(_0xff7b82){return _0xff7b82!==null&&!_['isUndefined'](_0xff7b82);}function checkIsLoggedIn(_0x193bcd,_0x3c1f97){return function(){if(_0x3c1f97<=0x0){_0x193bcd[_0xcb7f('0x39')]=_0xcb7f('0x3a');throw _0x193bcd[_0xcb7f('0x3b')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x8a149e){return _0x8a149e;}function checkIsActive(_0x534226,_0x3cec8f){return function(){if(!isActive(_0x3cec8f)){_0x534226[_0xcb7f('0x39')]=_0xcb7f('0x3c');throw _0x534226[_0xcb7f('0x3b')]+_0xcb7f('0x3d');}};}function checkInterval(_0x280571){return function(){if(!isNotNull(_0x280571[_0xcb7f('0x3e')])){_0x280571['message']=_0xcb7f('0x3f');throw _0x280571[_0xcb7f('0x3b')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x280571[_0xcb7f('0x3e')][_0xcb7f('0x40')])){_0x280571[_0xcb7f('0x39')]=_0xcb7f('0x3f');throw _0x280571['name']+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_['isEmpty'](_0x280571['Interval'][_0xcb7f('0x40')]))){_0x280571[_0xcb7f('0x39')]=_0xcb7f('0x3f');throw _0x280571[_0xcb7f('0x3b')]+_0xcb7f('0x41');}};}function msgResponse(_0x2c1771,_0x5f1037,_0x419f49){return{'action':_0x2c1771,'response':_0x5f1037,'message':_0x419f49,'stack':_0x419f49};}function myreject(_0x248293){return function(_0x15c528){return _0x248293(msgResponse(_0xcb7f('0x42'),_0xcb7f('0x43'),JSON[_0xcb7f('0x44')](_0x15c528)));};}function getSeconds(_0x3216f7,_0x2e1bd0){var _0x4b95c0=moment(_0x3216f7)[_0xcb7f('0x45')](0x0);var _0x153ca4=moment(_0x2e1bd0)['milliseconds'](0x0);return _0x4b95c0[_0xcb7f('0x46')](_0x153ca4,'seconds');}function emit(_0x1359ed,_0x20e8de,_0x275106){io['to'](_0x1359ed)[_0xcb7f('0x47')](_0x20e8de,_0x275106);}function emitVoiceQueueSummary(_0x3752d4){if(_0x3752d4[_0xcb7f('0x48')]===_0xcb7f('0x49')){var _0x2fd553={'id':_0x3752d4['id'],'name':_0x3752d4['name'],'strategy':_0x3752d4[_0xcb7f('0x4a')],'answered':_0x3752d4[_0xcb7f('0x4b')],'available':_0x3752d4[_0xcb7f('0x4c')],'loggedIn':_0x3752d4['loggedIn'],'pTalking':_0x3752d4[_0xcb7f('0x4d')],'sumBillable':_0x3752d4[_0xcb7f('0x4e')],'sumDuration':_0x3752d4[_0xcb7f('0x4f')],'sumHoldTime':_0x3752d4[_0xcb7f('0x50')]||0x0,'talking':_0x3752d4[_0xcb7f('0x51')],'total':_0x3752d4[_0xcb7f('0x52')],'type':_0x3752d4[_0xcb7f('0x48')],'unmanaged':_0x3752d4['unmanaged'],'abandoned':_0x3752d4[_0xcb7f('0x53')],'waiting':_0x3752d4['waiting'],'loggedInDb':_0x3752d4['loggedInDb'],'dialActive':_0x3752d4[_0xcb7f('0x54')],'dialMethod':_0x3752d4[_0xcb7f('0x55')],'dialOriginateCallerIdName':_0x3752d4[_0xcb7f('0x56')],'dialOriginateCallerIdNumber':_0x3752d4[_0xcb7f('0x57')],'dialOriginateTimeout':_0x3752d4['dialOriginateTimeout'],'dialPrefix':_0x3752d4[_0xcb7f('0x58')],'outboundAnswerAgiCallsDay':_0x3752d4['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x3752d4[_0xcb7f('0x59')],'outboundBlacklistCallsDay':_0x3752d4[_0xcb7f('0x5a')],'outboundBusyCallsDay':_0x3752d4[_0xcb7f('0x5b')],'outboundCongestionCallsDay':_0x3752d4[_0xcb7f('0x5c')],'outboundDropCallsDayACS':_0x3752d4[_0xcb7f('0x5d')],'outboundDropCallsDayCallersExit':_0x3752d4[_0xcb7f('0x5e')],'outboundDropCallsDayTimeout':_0x3752d4[_0xcb7f('0x5f')],'outboundNoAnswerCallsDay':_0x3752d4['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x3752d4[_0xcb7f('0x60')],'outboundOriginateFailureCallsDay':_0x3752d4[_0xcb7f('0x61')],'outboundReCallsDay':_0x3752d4[_0xcb7f('0x62')],'outboundRejectCallsDay':_0x3752d4['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x3752d4['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x3752d4['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x3752d4[_0xcb7f('0x63')],'predictiveIntervalAvgTalktime':_0x3752d4[_0xcb7f('0x64')],'predictiveIntervalDroppedCallsCallersExit':_0x3752d4[_0xcb7f('0x65')],'predictiveIntervalDroppedCallsTimeout':_0x3752d4[_0xcb7f('0x66')],'predictiveIntervalErlangCalls':_0x3752d4[_0xcb7f('0x67')],'predictiveIntervalErlangCallsDroppedCalls':_0x3752d4['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x3752d4[_0xcb7f('0x68')],'predictiveIntervalMultiplicativeFactor':_0x3752d4['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x3752d4[_0xcb7f('0x69')],'predictiveIntervalAvailable':_0x3752d4['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x3752d4[_0xcb7f('0x6a')],'message':_0x3752d4['message'],'originated':_0x3752d4[_0xcb7f('0x6b')],'erlangCalls':_0x3752d4['erlangCalls'],'erlangCallToSecond':_0x3752d4[_0xcb7f('0x6c')],'erlangAbandonmentRate':_0x3752d4[_0xcb7f('0x6d')],'erlangBusyFactor':_0x3752d4[_0xcb7f('0x6e')],'startPredictive':_0x3752d4['startPredictive'],'startProgressive':_0x3752d4['startProgressive']};if(_0x3752d4[_0xcb7f('0x6f')]){_0x2fd553[_0xcb7f('0x6f')]={'id':_0x3752d4[_0xcb7f('0x6f')]['id'],'name':_0x3752d4[_0xcb7f('0x6f')][_0xcb7f('0x3b')],'active':_0x3752d4[_0xcb7f('0x6f')][_0xcb7f('0x70')],'callerid':_0x3752d4[_0xcb7f('0x6f')][_0xcb7f('0x71')]};}if(_0x3752d4[_0xcb7f('0x3e')]){_0x2fd553[_0xcb7f('0x3e')]={'id':_0x3752d4[_0xcb7f('0x3e')]['id'],'name':_0x3752d4[_0xcb7f('0x3e')][_0xcb7f('0x3b')]};}var _0x5076df=md5(JSON['stringify'](_0x2fd553));if(_0x3752d4[_0xcb7f('0x3')]!==_0x5076df){_0x3752d4['md5']=_0x5076df;emit(util[_0xcb7f('0x72')](_0xcb7f('0x73'),_0x2fd553[_0xcb7f('0x3b')]),_0xcb7f('0x74'),_0x2fd553);}}}function emitCampaignSummary(_0x53ab05){if(_0x53ab05['type']==='ivr'){emit(util[_0xcb7f('0x72')](_0xcb7f('0x75'),_0x53ab05[_0xcb7f('0x3b')]),_0xcb7f('0x76'),_0x53ab05);}}function checkGetDataPredictive(_0x3cd8b2){if(isNotNull(_0x3cd8b2)&&!_['isEmpty'](_0x3cd8b2)){loggerPredictive[_0xcb7f('0x77')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x78'),_0x3cd8b2[_0xcb7f('0x6a')]);loggerPredictive['info'](_0xcb7f('0x79'),_0x3cd8b2[_0xcb7f('0x7a')]);loggerPredictive[_0xcb7f('0x77')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3cd8b2[_0xcb7f('0x66')]);loggerPredictive['info'](_0xcb7f('0x7b'),_0x3cd8b2[_0xcb7f('0x65')]);loggerPredictive['info'](_0xcb7f('0x7c'),_0x3cd8b2[_0xcb7f('0x63')]);loggerPredictive[_0xcb7f('0x77')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3cd8b2[_0xcb7f('0x64')]);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x7d'));if(_0x3cd8b2[_0xcb7f('0x6a')]>0x0){if(!_['isUndefined'](_0x3cd8b2[_0xcb7f('0x64')])&&_0x3cd8b2[_0xcb7f('0x64')]>0x0){return!![];}loggerPredictive['info'](_0xcb7f('0x7e'));if(!_[_0xcb7f('0x7f')](_0x3cd8b2['predictiveIntervalAvgHoldtime'])&&_0x3cd8b2[_0xcb7f('0x63')]>0x0){return!![];}loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x80'));}else{loggerPredictive[_0xcb7f('0x77')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive['info'](_0xcb7f('0x81'));}return![];}function mergeDataErlangB(_0x598d24){return function(_0x1e4b36){loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x82'));loggerPredictive['info']('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1e4b36[_0xcb7f('0x83')]);loggerPredictive[_0xcb7f('0x77')]('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1e4b36[_0xcb7f('0x6c')]);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x84'),_0x1e4b36[_0xcb7f('0x6d')]);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x85'),_0x1e4b36[_0xcb7f('0x6e')]);loggerPredictive[_0xcb7f('0x77')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1e4b36[_0xcb7f('0x6d')]);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x7d'));_['merge'](_0x598d24,_0x1e4b36);};}function getDiff(_0xef6df7){var _0x11242b=moment()[_0xcb7f('0x45')](0x0);var _0x57e088=moment(_0xef6df7)['milliseconds'](0x0);return _0x11242b[_0xcb7f('0x46')](_0x57e088,'seconds');}function ifInterval(_0x135b58,_0x10932f){if(_[_0xcb7f('0x7f')](_0x10932f)){return![];}return getDiff(_0x10932f)<_0x135b58*0x3c;}function freeVariablesPredictive(_0x5e8fa4){if(isNotNull(_0x5e8fa4)){if(!_['isUndefined'](_0x5e8fa4['startProgressive'])){_0x5e8fa4[_0xcb7f('0x25')]=undefined;loggerPredictive[_0xcb7f('0x77')](_0x5e8fa4[_0xcb7f('0x3b')],_0xcb7f('0x86'));}if(!_[_0xcb7f('0x7f')](_0x5e8fa4[_0xcb7f('0x87')])){_0x5e8fa4[_0xcb7f('0x87')]=undefined;loggerPredictive['info'](_0x5e8fa4['name'],'clearing\x20variable\x20start\x20predictive');}if(!_[_0xcb7f('0x7f')](_0x5e8fa4['handlePredictive'])){clearInterval(_0x5e8fa4[_0xcb7f('0x88')]);_0x5e8fa4[_0xcb7f('0x88')]=undefined;loggerPredictive[_0xcb7f('0x77')](_0x5e8fa4[_0xcb7f('0x3b')],_0xcb7f('0x89'));}}}function erlangb(_0x112cb6,_0x489fdc){if(_0x489fdc===0x0){return 0x0;}var _0xfd4133=0x1;for(var _0x476744=0x1;_0x476744<=_0x489fdc;_0x476744+=0x1){_0xfd4133=0x1+_0xfd4133*_0x476744/_0x112cb6;}return 0x1/_0xfd4133;}function isVoiceQueueOutbound(_0x41ab03){return _0x41ab03===_0xcb7f('0x49');}function isNotPreview(_0x5c4348){return _0x5c4348!==_0xcb7f('0x1e');}function isCampaignIvr(_0x2b7de9){return _0x2b7de9===_0xcb7f('0x8a');}function getCallerId(_0x13f865,_0x48ad26,_0x4bd028){if(!_['isUndefined'](_0x4bd028)&&typeof _0x4bd028===_0xcb7f('0x8b')&&!_[_0xcb7f('0x8c')](_0x4bd028)){if(!_[_0xcb7f('0x7f')](_0x48ad26)&&typeof _0x48ad26===_0xcb7f('0x8b')&&!_['isEmpty'](_0x48ad26)){return util['format'](_0xcb7f('0x8d'),_0x48ad26,_0x4bd028);}return util[_0xcb7f('0x72')](_0xcb7f('0x8d'),_0x4bd028,_0x4bd028);}if(!_['isUndefined'](_0x13f865)&&typeof _0x13f865==='string'&&!_[_0xcb7f('0x8c')](_0x13f865)){return _0x13f865;}return _0xcb7f('0x8e');}function loggerCatchQueueSummary(_0x4034ec,_0x12fd89){return function(_0x4b9572){freeVariablesPredictive(_0x12fd89);emitVoiceQueueSummary(_0x12fd89);emitCampaignSummary(_0x12fd89);loggerSyncQueueSummary[_0xcb7f('0x8f')](_0x4034ec,util[_0xcb7f('0x90')](_0x4b9572,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x18f014,_0x3e08bf){return function(_0x587fdd){loggerPredictive[_0xcb7f('0x8f')](_0x3e08bf['name'],_0x18f014);loggerPredictive[_0xcb7f('0x8f')](_0x587fdd[_0xcb7f('0x91')]);freeVariablesPredictive(_0x3e08bf);};}function loggerCatch(_0x2bcb12){return function(_0x52eb2e){logger['error'](_0x2bcb12,util[_0xcb7f('0x90')](_0x52eb2e,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x37018c){return _0x37018c&&!_[_0xcb7f('0x7f')](_0x37018c)&&_0x37018c['length']>0x0;}function decremetOriginate(_0x422f4a){if(!_[_0xcb7f('0x7f')](_0x422f4a)&&_0x422f4a!==null){if(typeof _0x422f4a[_0xcb7f('0x6b')]!==_0xcb7f('0x92')){if(_0x422f4a[_0xcb7f('0x6b')]>0x0){_0x422f4a['originated']-=0x1;}else{logger[_0xcb7f('0x8f')](_0xcb7f('0x93'));}}}else{logger['error'](_0xcb7f('0x94'));}}function checkContactLowerLimitOriginate(_0x2ea768,_0xe7b99d,_0x2ba827){if(_0xe7b99d>_0x2ba827){for(var _0x56832f=0x0;_0x56832f<_0xe7b99d-_0x2ba827;_0x56832f+=0x1){decremetOriginate(_0x2ea768);}}}function loggerGetContactDialer(_0x358d03,_0x2936cf,_0x4511ae){return function(_0x43bd79){checkContactLowerLimitOriginate(_0x2936cf,_0x4511ae,0x0);logger[_0xcb7f('0x8f')](_0x358d03,util[_0xcb7f('0x90')](_0x43bd79,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x8f0972){return function(_0xa13d39){if(isNotNull(_0xa13d39)&&isNotNull(_0xa13d39[0x0])){if(_0xa13d39[0x0][_0xcb7f('0x95')]>0x0){_0x8f0972[_0xcb7f('0x39')]=_0xcb7f('0x96');logger[_0xcb7f('0x77')](_0xcb7f('0x97')+_0x8f0972[_0xcb7f('0x3b')],_0xa13d39[0x0][_0xcb7f('0x95')],_0xcb7f('0x98'));}else{_0x8f0972[_0xcb7f('0x39')]='AVAILABLE_CONTACTS_FINISHED';logger[_0xcb7f('0x77')]('[getContactDialer2][Empty]'+_0x8f0972['name']);}}};}function notSendMessagesQueue(_0x11b86b){if(_0x11b86b[_0xcb7f('0x99')]){freeVariablesPredictive(_0x11b86b);if(_0x11b86b['originated']===0x0&&_0x11b86b[_0xcb7f('0x51')]===0x0&&_0x11b86b[_0xcb7f('0x9a')]===0x0&&(_0x11b86b[_0xcb7f('0x4d')]||0x0)===0x0){_0x11b86b['sendMessageOneNotActive']=![];_0x11b86b['available']=0x0;_0x11b86b[_0xcb7f('0x39')]=_0xcb7f('0x3c');loggerSyncQueueSummary['error'](_0xcb7f('0x9b'),_0x11b86b[_0xcb7f('0x3b')],_0xcb7f('0x9c'));}else{_0x11b86b[_0xcb7f('0x39')]=_0xcb7f('0x9d');loggerSyncQueueSummary['error']('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x11b86b[_0xcb7f('0x3b')],_0xcb7f('0x9e'));}emitVoiceQueueSummary(_0x11b86b);}}function notSendMessagesCampaign(_0x42fa16){if(_0x42fa16[_0xcb7f('0x99')]){if(_0x42fa16[_0xcb7f('0x6b')]===0x0){_0x42fa16[_0xcb7f('0x99')]=![];_0x42fa16[_0xcb7f('0x39')]=_0xcb7f('0x3c');loggerSyncQueueSummary['error']('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x42fa16[_0xcb7f('0x3b')],_0xcb7f('0x9c'));}else{_0x42fa16['message']=_0xcb7f('0x9d');loggerSyncQueueSummary[_0xcb7f('0x8f')](_0xcb7f('0x9f'),_0x42fa16[_0xcb7f('0x3b')],_0xcb7f('0x9e'));}emitCampaignSummary(_0x42fa16);}}function createObjHistory(_0x8d5d13,_0x12f6c9,_0x19d459,_0x76b9ed,_0x563129){_0x8d5d13[_0xcb7f('0x39')]=_0x19d459;var _0x568e49=new Action(_0x8d5d13,_0x12f6c9);var _0x437703=new History(_0x568e49);_0x437703[_0xcb7f('0xa0')]=_0x76b9ed;_0x437703[_0xcb7f('0xa1')]=_0x563129;_0x437703['endtime']=_0x568e49[_0xcb7f('0xa2')];return _0x437703;}Dialer['prototype']['loopClearZombieChannels']=function(){var _0x531ef3=this;setInterval(function(){_0x531ef3[_0xcb7f('0xa3')](_0x531ef3[_0xcb7f('0xa4')],'[uniqueid]');_0x531ef3[_0xcb7f('0xa3')](_0x531ef3[_0xcb7f('0xa5')],_0xcb7f('0xa6'));},0x32c8);};Dialer['prototype']['clearZombieChannels']=function(_0x43c4e6,_0xf4cf0e){var _0x46e002=this;for(var _0x10b25a in _0x43c4e6){if(typeof _0x43c4e6[_0x10b25a]!==_0xcb7f('0x92')){this[_0xcb7f('0x1d')][_0xcb7f('0x1a')](function(){if(!_['isNil'](_0x43c4e6[_0x10b25a])){return ami[_0xcb7f('0xa7')]({'action':_0xcb7f('0xa8'),'channel':_0x43c4e6[_0x10b25a][_0xcb7f('0xa9')]})['catch'](function(_0x17a07d){if(_0x17a07d[_0xcb7f('0x39')]===_0xcb7f('0xaa')){setTimeout(function(){if(_0x43c4e6[_0x10b25a]&&_0x43c4e6[_0x10b25a][_0xcb7f('0x48')]!==_0xcb7f('0x8a')){_0x46e002['updateOriginated'](_0x46e002[_0xcb7f('0x1f')][_0x43c4e6[_0x10b25a]['queue']]);logger[_0xcb7f('0x8f')](_0xcb7f('0xab'),_0xf4cf0e,_0x10b25a,_0x43c4e6[_0x10b25a]['queue']);delete _0x43c4e6[_0x10b25a];}if(_0x43c4e6[_0x10b25a]&&_0x43c4e6[_0x10b25a][_0xcb7f('0x48')]===_0xcb7f('0x8a')){_0x46e002[_0xcb7f('0xac')](_0x46e002['campaigns'][_0x43c4e6[_0x10b25a][_0xcb7f('0xad')]]);logger[_0xcb7f('0x8f')]('[Dialer][checkChannel][ivr]',_0xf4cf0e,_0x10b25a,_0x43c4e6[_0x10b25a][_0xcb7f('0xad')]);delete _0x43c4e6[_0x10b25a];}},0x2328);}});}});}}};Dialer['prototype']['countReScheduled']=function(_0xb396a4){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopper[_0xcb7f('0xb0')](_0xb396a4))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xb2')));};Dialer[_0xcb7f('0x19')][_0xcb7f('0xb3')]=function(_0x173c98){return BPromise['resolve']()[_0xcb7f('0xaf')](cmHopperBlack[_0xcb7f('0xb3')](_0x173c98))['catch'](loggerCatch(_0xcb7f('0xb4')));};Dialer[_0xcb7f('0x19')][_0xcb7f('0xb5')]=function(_0x43a40f){return BPromise['resolve']()['then'](cmHopperBlack[_0xcb7f('0xb5')](_0x43a40f))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xb6')));};Dialer[_0xcb7f('0x19')][_0xcb7f('0xb7')]=function(_0x319425){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopperHistory[_0xcb7f('0xb8')](_0x319425))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xb9')));};Dialer[_0xcb7f('0x19')]['rescheduleContact']=function(_0x5ae61b){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopper['rescheduleContact'](_0x5ae61b))['catch'](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0xcb7f('0x19')]['unlockContact']=function(_0x408924,_0x586064,_0xd2a0b6){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopper[_0xcb7f('0xba')](_0x408924,_0x586064,_0xd2a0b6))[_0xcb7f('0xb1')](loggerCatch('[unlockContact]\x20'));};Dialer['prototype']['getContactDialer']=function(_0x116a77,_0x326f80,_0x122ed7,_0x1c73fe,_0x38d0f8){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopper[_0xcb7f('0xbb')](_0x116a77,_0x326f80,_0x122ed7,_0x1c73fe))[_0xcb7f('0xb1')](function(_0x355de5){_0x38d0f8['temp']-=_0x122ed7;_0x38d0f8[_0xcb7f('0xbc')]=_0x38d0f8[_0xcb7f('0xbc')]>0x0?_0x38d0f8[_0xcb7f('0xbc')]:0x0;loggerCatch(_0xcb7f('0xbd'))(_0x355de5);});};Dialer['prototype'][_0xcb7f('0xbe')]=function(_0x42b13d,_0x1c89ca,_0x3aefa0,_0x2052bd){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopper[_0xcb7f('0xbe')](_0x42b13d,_0x1c89ca,_0x3aefa0))[_0xcb7f('0xb1')](function(_0x2d4647){_0x2052bd['temp']-=_0x1c89ca;_0x2052bd['temp']=_0x2052bd['temp']>0x0?_0x2052bd[_0xcb7f('0xbc')]:0x0;loggerCatch(_0xcb7f('0xbf'))(_0x2d4647);});};Dialer[_0xcb7f('0x19')]['getVoiceQueueRtPauses']=function(_0x28dca7){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](voiceQueueRt['getVoiceQueueRtPauses'](_0x28dca7))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xc0')));};Dialer[_0xcb7f('0x19')][_0xcb7f('0xc1')]=function(_0x7abd21){return BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](cmHopper[_0xcb7f('0xc1')](_0x7abd21))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xc2')));};Dialer['prototype'][_0xcb7f('0xc3')]=function(_0x2e6abe){return BPromise[_0xcb7f('0xae')]()['then'](cmHopperHistory[_0xcb7f('0xc3')](_0x2e6abe))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xc4')));};Dialer[_0xcb7f('0x19')][_0xcb7f('0xac')]=function(_0x43f3e9){if(!_[_0xcb7f('0x7f')](_0x43f3e9)&&_0x43f3e9!==null){if(typeof _0x43f3e9[_0xcb7f('0x6b')]!==_0xcb7f('0x92')){if(_0x43f3e9[_0xcb7f('0x6b')]>0x0){_0x43f3e9[_0xcb7f('0x6b')]-=0x1;}else{logger[_0xcb7f('0x8f')](_0xcb7f('0xc5'));}}}else{logger[_0xcb7f('0x8f')](_0xcb7f('0xc6'));}};Dialer[_0xcb7f('0x19')][_0xcb7f('0xc7')]=function(_0x423211,_0x54528a){var _0x2d1881=this;return function(_0x277ea8){_0x2d1881['updateOriginated'](_0x54528a);logger[_0xcb7f('0x8f')](_0x423211,util[_0xcb7f('0x90')](_0x277ea8,{'showHidden':![],'depth':null}));};};Dialer[_0xcb7f('0x19')][_0xcb7f('0xc8')]=function(_0x5e2ea2,_0x1e9d95,_0x3bbc8f){var _0x562f76={'state':0x19,'statedesc':_0xcb7f('0xc9')};this[_0xcb7f('0xac')](_0x1e9d95);this[_0xcb7f('0xca')](_[_0xcb7f('0xcb')](_0x562f76,_[_0xcb7f('0xcc')](_0x3bbc8f,[_0xcb7f('0xcd'),'ListId',_0xcb7f('0xce'),'VoiceQueueId','CampaignId'])),_0xcb7f('0xcf'),_0xcb7f('0xd0'));logger[_0xcb7f('0x8f')](_0x5e2ea2);};Dialer['prototype'][_0xcb7f('0xd1')]=function(_0x13d894){return _0x13d894===_0xcb7f('0xd2');};Dialer[_0xcb7f('0x19')]['isTrunkReachable']=function(_0x24ef04){return!_[_0xcb7f('0x7f')](_0x24ef04)&&_0x24ef04&&!_[_0xcb7f('0x7f')](_0x24ef04[_0xcb7f('0x3b')])&&!_[_0xcb7f('0x7f')](_0x24ef04[_0xcb7f('0x70')])&&_0x24ef04[_0xcb7f('0x70')]&&(this['trunks'][util[_0xcb7f('0x72')](_0xcb7f('0xd3'),_0x24ef04[_0xcb7f('0x3b')])][_0xcb7f('0xa8')]===_0xcb7f('0xd4')||this[_0xcb7f('0x22')][util[_0xcb7f('0x72')](_0xcb7f('0xd3'),_0x24ef04[_0xcb7f('0x3b')])]['status']==='unmonitored');};Dialer[_0xcb7f('0x19')][_0xcb7f('0xca')]=function(_0x469469,_0x951c9d,_0x4353aa){this[_0xcb7f('0xc3')](_0x469469)[_0xcb7f('0xb1')](loggerCatch(_0x951c9d));this[_0xcb7f('0xc1')](_0x469469)['catch'](loggerCatch(_0x4353aa));};Dialer[_0xcb7f('0x19')]['syncVarSet']=function(_0x1616b5){var _0x2ff001=this[_0xcb7f('0xa4')][_0x1616b5['uniqueid']];var _0x23e3d6;if(!_[_0xcb7f('0xd5')](_0x1616b5)&&!_[_0xcb7f('0xd5')](_0x1616b5[_0xcb7f('0xd6')])&&!_[_0xcb7f('0xd5')](_0x1616b5['variable']['amdstatus'])&&_0x1616b5[_0xcb7f('0xd7')]===_0xcb7f('0xd8')&&_0x2ff001){if(_0x2ff001[_0xcb7f('0x48')]!==_0xcb7f('0x8a')&&this[_0xcb7f('0x1f')][_0x2ff001['queue']]['dialAMDActive']&&_0x1616b5[_0xcb7f('0xd9')]===_0xcb7f('0xda')){delete this[_0xcb7f('0xa4')][_0x1616b5['uniqueid']];this[_0xcb7f('0xac')](this['voiceQueues'][_0x2ff001[_0xcb7f('0xad')]]);this['voiceQueues'][_0x2ff001[_0xcb7f('0xad')]]['outboundAnswerCallsDay']+=0x1;this['voiceQueues'][_0x2ff001[_0xcb7f('0xad')]][_0xcb7f('0xdb')]+=0x1;_0x23e3d6=new Hangup(_0x2ff001,_0x1616b5);_0x23e3d6[_0xcb7f('0xa0')]=0x12;_0x23e3d6[_0xcb7f('0xa1')]=_0xcb7f('0xdc');_0x23e3d6[_0xcb7f('0xdd')]=_0xcb7f('0xde');ami[_0xcb7f('0x47')]('custom:amd',ut['buildObj'](_0x23e3d6,_0xcb7f('0xdf')));this['saveInDb'](_0x23e3d6,_0xcb7f('0xe0'),_0xcb7f('0xe1'));}if(_0x2ff001[_0xcb7f('0x48')]!==_0xcb7f('0x8a')&&this[_0xcb7f('0x1f')][_0x2ff001['queue']][_0xcb7f('0xe2')]&&_0x1616b5[_0xcb7f('0xd9')]===_0xcb7f('0xe3')){var _0x42440b=this;return new BPromise(function(_0x2a6fb1,_0x2b5ce3){delete _0x42440b[_0xcb7f('0xa4')][_0x1616b5[_0xcb7f('0xe4')]];_0x42440b[_0xcb7f('0xac')](_0x42440b[_0xcb7f('0x1f')][_0x2ff001[_0xcb7f('0xad')]]);_0x42440b[_0xcb7f('0x1f')][_0x2ff001[_0xcb7f('0xad')]][_0xcb7f('0x59')]+=0x1;_0x42440b[_0xcb7f('0x1f')][_0x2ff001['queue']]['outboundAnswerAgiCallsDay']+=0x1;var _0x31c42d=_0x42440b[_0xcb7f('0x1f')][_0x2ff001['queue']];var _0xf73996=new Hangup(_0x2ff001,_0x1616b5);_0xf73996['state']=0x13;_0xf73996[_0xcb7f('0xa1')]=_0xcb7f('0xe5');_0xf73996['membername']=_0xcb7f('0xde');_0xf73996[_0xcb7f('0xe6')]+=0x1;_0xf73996[_0xcb7f('0xe7')]+=0x1;_0xf73996['amd']=!![];ami[_0xcb7f('0x47')](_0xcb7f('0xe8'),ut[_0xcb7f('0xe9')](_0xf73996,'amd'));_0x42440b[_0xcb7f('0xc3')](_0xf73996)['catch'](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0xf73996[_0xcb7f('0xea')]+_0xf73996[_0xcb7f('0xeb')]+_0xf73996[_0xcb7f('0xec')]+_0xf73996[_0xcb7f('0xed')]+_0xf73996['countdropretry']+_0xf73996[_0xcb7f('0xee')]+_0xf73996[_0xcb7f('0xe6')]+_0xf73996[_0xcb7f('0xef')]>=_0x31c42d['dialGlobalMaxRetry']){_0x42440b[_0xcb7f('0xf0')](_0xf73996,_0x2a6fb1,_0x2b5ce3,_0xcb7f('0xf1'));}else{if(_0xf73996[_0xcb7f('0xe6')]>=_0x31c42d[_0xcb7f('0xf2')]){_0x42440b[_0xcb7f('0xf3')](_0xf73996,_0x2a6fb1,_0x2b5ce3,_0xcb7f('0xf4'));}else{_0x42440b[_0xcb7f('0xf5')]({'active':![],'countmachineretry':_0xf73996['countmachineretry'],'scheduledat':moment()[_0xcb7f('0xf6')](_0x31c42d[_0xcb7f('0xf7')],_0xcb7f('0xf8'))[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0xf73996[_0xcb7f('0xcd')],'ListId':_0xf73996[_0xcb7f('0xfa')],'VoiceQueueId':_0xf73996[_0xcb7f('0xfb')]||undefined,'CampaignId':_0xf73996[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xfd')));_0x2a6fb1({'reschedule':0x1});}}});}if(_0x2ff001['type']===_0xcb7f('0x8a')&&this[_0xcb7f('0x20')][_0x2ff001[_0xcb7f('0xad')]][_0xcb7f('0xe2')]&&_0x1616b5[_0xcb7f('0xd9')]===_0xcb7f('0xda')){delete this['uniqueId'][_0x1616b5[_0xcb7f('0xe4')]];this[_0xcb7f('0xac')](this[_0xcb7f('0x20')][_0x2ff001[_0xcb7f('0xad')]]);_0x23e3d6=new Hangup(_0x2ff001,_0x1616b5);_0x23e3d6[_0xcb7f('0xa0')]=0x12;_0x23e3d6[_0xcb7f('0xa1')]='HangupInAMD';_0x23e3d6[_0xcb7f('0xdd')]='AMD';ami[_0xcb7f('0x47')](_0xcb7f('0xe8'),ut['buildObj'](_0x23e3d6,_0xcb7f('0xdf')));this['saveInDb'](_0x23e3d6,_0xcb7f('0xfe'),_0xcb7f('0xff'));}if(_0x2ff001[_0xcb7f('0x48')]===_0xcb7f('0x8a')&&this['campaigns'][_0x2ff001[_0xcb7f('0xad')]]['dialAMDActive']&&_0x1616b5['value']==='MACHINE'){var _0x42440b=this;return new BPromise(function(_0x684ec1,_0x3f4064){delete _0x42440b[_0xcb7f('0xa4')][_0x1616b5[_0xcb7f('0xe4')]];_0x42440b['updateOriginated'](_0x42440b['campaigns'][_0x2ff001[_0xcb7f('0xad')]]);_0x42440b['campaigns'][_0x2ff001['queue']][_0xcb7f('0x59')]+=0x1;_0x42440b[_0xcb7f('0x20')][_0x2ff001[_0xcb7f('0xad')]][_0xcb7f('0xdb')]+=0x1;var _0xcc7be7=_0x42440b['campaigns'][_0x2ff001['queue']];var _0x1cf0a3=new Hangup(_0x2ff001,_0x1616b5);_0x1cf0a3[_0xcb7f('0xa0')]=0x13;_0x1cf0a3[_0xcb7f('0xa1')]=_0xcb7f('0xe5');_0x1cf0a3['membername']=_0xcb7f('0xde');_0x1cf0a3[_0xcb7f('0xe6')]+=0x1;_0x1cf0a3[_0xcb7f('0xe7')]+=0x1;_0x1cf0a3[_0xcb7f('0xdf')]=!![];ami[_0xcb7f('0x47')](_0xcb7f('0xe8'),ut['buildObj'](_0x1cf0a3,_0xcb7f('0xdf')));_0x42440b[_0xcb7f('0xc3')](_0x1cf0a3)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x100')));if(_0x1cf0a3[_0xcb7f('0xea')]+_0x1cf0a3[_0xcb7f('0xeb')]+_0x1cf0a3['countnoanswerretry']+_0x1cf0a3[_0xcb7f('0xed')]+_0x1cf0a3[_0xcb7f('0x101')]+_0x1cf0a3[_0xcb7f('0xee')]+_0x1cf0a3['countmachineretry']+_0x1cf0a3[_0xcb7f('0xef')]>=_0xcc7be7[_0xcb7f('0x102')]){_0x42440b[_0xcb7f('0xf0')](_0x1cf0a3,_0x684ec1,_0x3f4064,_0xcb7f('0xf1'));}else{if(_0x1cf0a3[_0xcb7f('0xe6')]>=_0xcc7be7[_0xcb7f('0xf2')]){_0x42440b['createStateFinal'](_0x1cf0a3,_0x684ec1,_0x3f4064,_0xcb7f('0xf4'));}else{_0x42440b[_0xcb7f('0xf5')]({'active':![],'countmachineretry':_0x1cf0a3[_0xcb7f('0xe6')],'scheduledat':moment()['add'](_0xcc7be7[_0xcb7f('0xf7')],_0xcb7f('0xf8'))[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x1cf0a3[_0xcb7f('0xcd')],'ListId':_0x1cf0a3[_0xcb7f('0xfa')],'VoiceQueueId':_0x1cf0a3['VoiceQueueId']||undefined,'CampaignId':_0x1cf0a3[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xfd')));_0x684ec1({'reschedule':0x1});}}});}}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x32')]=function(_0x37bc10){var _0x199c4c=this[_0xcb7f('0xa4')][_0x37bc10[_0xcb7f('0xe4')]];var _0x29c2e0=this;var _0x266a4b;if(_0x199c4c&&_0x199c4c[_0xcb7f('0x48')]===_0xcb7f('0x8a')){delete this['uniqueId'][_0x37bc10['uniqueid']];this[_0xcb7f('0xac')](this[_0xcb7f('0x20')][_0x199c4c[_0xcb7f('0xad')]]);this[_0xcb7f('0x20')][_0x199c4c['queue']][_0xcb7f('0x103')]+=0x1;_0x266a4b=new Hangup(_0x199c4c,_0x37bc10);this[_0xcb7f('0xc3')](_0x266a4b)[_0xcb7f('0xb1')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xcb7f('0xc1')](_0x266a4b)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x104')));}if(_0x199c4c&&_0x199c4c[_0xcb7f('0x48')]!==_0xcb7f('0x8a')&&isNotNull(this[_0xcb7f('0x1f')][_0x199c4c['queue']]['dialQueueProject'])){delete this[_0xcb7f('0xa4')][_0x37bc10[_0xcb7f('0xe4')]];this[_0xcb7f('0xac')](this['voiceQueues'][_0x199c4c[_0xcb7f('0xad')]]);this[_0xcb7f('0x1f')][_0x199c4c[_0xcb7f('0xad')]][_0xcb7f('0x59')]+=0x1;this['voiceQueues'][_0x199c4c[_0xcb7f('0xad')]]['outboundAnswerAgiCallsDay']+=0x1;_0x266a4b=new Hangup(_0x199c4c,_0x37bc10);_0x266a4b[_0xcb7f('0xa0')]=0x10;_0x266a4b[_0xcb7f('0xa1')]=_0xcb7f('0x105');_0x266a4b['membername']=_0xcb7f('0x106');this[_0xcb7f('0xc3')](_0x266a4b)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x107')));this[_0xcb7f('0xc1')](_0x266a4b)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x104')));}if(_0x199c4c&&_0x199c4c[_0xcb7f('0x48')]!==_0xcb7f('0x8a')&&!isNotNull(this[_0xcb7f('0x1f')][_0x199c4c[_0xcb7f('0xad')]]['dialQueueProject'])){delete this[_0xcb7f('0xa4')][_0x37bc10['uniqueid']];this[_0xcb7f('0xac')](this[_0xcb7f('0x1f')][_0x199c4c['queue']]);this['voiceQueues'][_0x199c4c[_0xcb7f('0xad')]]['outboundUnknownCallsDay']+=0x1;_0x266a4b=new Hangup(_0x199c4c,_0x37bc10);_0x266a4b[_0xcb7f('0xa0')]=0xc;_0x266a4b[_0xcb7f('0xa1')]=_0x37bc10[_0xcb7f('0x108')];_0x266a4b[_0xcb7f('0xdd')]='Unknow';this[_0xcb7f('0xc3')](_0x266a4b)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x107')));this['moveContactManagedDialer'](_0x266a4b)['catch'](loggerCatch(_0xcb7f('0x104')));}};Dialer[_0xcb7f('0x19')]['syncAgentComplete']=function(_0x5bfd12){var _0x45ac3f=this[_0xcb7f('0xa4')][_0x5bfd12[_0xcb7f('0xe4')]];var _0x48bad2=this;if(this['voiceQueues'][_0x5bfd12['queue']]){if(_0x45ac3f&&_0x45ac3f['type']!==_0xcb7f('0x8a')){delete this[_0xcb7f('0xa4')][_0x5bfd12[_0xcb7f('0xe4')]];this['voiceQueues'][_0x5bfd12['queue']][_0xcb7f('0x59')]+=0x1;var _0x269862=new AgentComplete(_0x45ac3f,_0x5bfd12);if(_0x5bfd12[_0xcb7f('0x109')]===_0xcb7f('0x10a')){_0x269862[_0xcb7f('0x10b')]=this[_0xcb7f('0x1f')][_0x5bfd12[_0xcb7f('0xad')]][_0xcb7f('0x10c')]&&this[_0xcb7f('0x1f')][_0x5bfd12['queue']][_0xcb7f('0x10d')]?moment()['format'](_0xcb7f('0xf9')):undefined;}this['createHistory'](_0x269862)['catch'](loggerCatch(_0xcb7f('0x10e')));this[_0xcb7f('0xc1')](_0x269862)['catch'](loggerCatch(_0xcb7f('0x10f')));}}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x29')]=function(_0x3eab8f){if(this['voiceQueues'][_0x3eab8f[_0xcb7f('0xad')]]){if(this[_0xcb7f('0xa4')][_0x3eab8f[_0xcb7f('0xe4')]]&&this[_0xcb7f('0xa4')][_0x3eab8f[_0xcb7f('0xe4')]][_0xcb7f('0x48')]!==_0xcb7f('0x8a')){this['updateOriginated'](this[_0xcb7f('0x1f')][_0x3eab8f[_0xcb7f('0xad')]]);this[_0xcb7f('0xa4')][_0x3eab8f[_0xcb7f('0xe4')]]['answertime']=moment()['format'](_0xcb7f('0xf9'));}}};Dialer['prototype'][_0xcb7f('0x110')]=function(_0x351d95){this[_0xcb7f('0xc3')](_0x351d95)[_0xcb7f('0xb1')](loggerCatch('[syncAgentComplete][createHistory]'));this[_0xcb7f('0xc1')](_0x351d95)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x111')));};Dialer['prototype'][_0xcb7f('0x2c')]=function(_0x3e1105){var _0x5e12e2=this[_0xcb7f('0xa4')][_0x3e1105[_0xcb7f('0xe4')]];var _0x1e5ea0=this;if(this[_0xcb7f('0x1f')][_0x3e1105['queue']]){if(_0x5e12e2&&_0x5e12e2[_0xcb7f('0x48')]!==_0xcb7f('0x8a')){delete this[_0xcb7f('0xa4')][_0x3e1105[_0xcb7f('0xe4')]];this['updateOriginated'](this[_0xcb7f('0x1f')][_0x3e1105['queue']]);_0x5e12e2['droptime']=moment()[_0xcb7f('0x72')](_0xcb7f('0xf9'));var _0x447fad=new QueueCallerAbandon(_0x5e12e2,_0x3e1105);if(getSeconds(_0x5e12e2[_0xcb7f('0x112')],_0x5e12e2[_0xcb7f('0x113')])>=_0x5e12e2[_0xcb7f('0x114')]){this[_0xcb7f('0x1f')][_0x3e1105[_0xcb7f('0xad')]]['predictiveIntervalDroppedCallsTimeout']+=0x1;this['voiceQueues'][_0x3e1105[_0xcb7f('0xad')]][_0xcb7f('0x5f')]+=0x1;this[_0xcb7f('0x1f')][_0x3e1105[_0xcb7f('0xad')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x447fad[_0xcb7f('0xa0')]=0xa;_0x447fad[_0xcb7f('0xa1')]='Drop';_0x447fad[_0xcb7f('0x115')]=_0xcb7f('0x116');_0x447fad[_0xcb7f('0x10b')]=this[_0xcb7f('0x1f')][_0x3e1105['queue']][_0xcb7f('0x10c')]?moment()['format'](_0xcb7f('0xf9')):undefined;_0x447fad['countdropretry']+=0x1;_0x447fad[_0xcb7f('0xe7')]+=0x1;if(_0x447fad[_0xcb7f('0x101')]>=this[_0xcb7f('0x1f')][_0x3e1105['queue']][_0xcb7f('0x117')]){this[_0xcb7f('0x110')](_0x447fad);}else{this['rescheduleContact']({'active':![],'countdropretry':_0x447fad['countdropretry'],'scheduledat':moment()[_0xcb7f('0xf6')](this['voiceQueues'][_0x3e1105[_0xcb7f('0xad')]][_0xcb7f('0x118')],_0xcb7f('0xf8'))[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x5e12e2[_0xcb7f('0xcd')],'ListId':_0x5e12e2[_0xcb7f('0xfa')],'VoiceQueueId':_0x5e12e2[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x5e12e2[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x119')));var _0x1e659e=new History(_0x447fad);_0x1e659e[_0xcb7f('0xa0')]=0xa;_0x1e659e['statedesc']='Drop';_0x1e659e[_0xcb7f('0xa2')]=moment()[_0xcb7f('0x72')]('YYYY-MM-DD\x20HH:mm:ss');_0x1e659e['endtime']=_0x1e659e['starttime'];_0x1e659e[_0xcb7f('0x11a')]=_0x447fad['calleridname'];_0x1e659e['calleridnum']=_0x447fad[_0xcb7f('0x11b')];this[_0xcb7f('0xc3')](_0x1e659e)['catch'](loggerCatch('[syncAgentComplete][createHistory][10]'));}}else{this['voiceQueues'][_0x3e1105[_0xcb7f('0xad')]][_0xcb7f('0x65')]+=0x1;this[_0xcb7f('0x1f')][_0x3e1105[_0xcb7f('0xad')]][_0xcb7f('0x5e')]+=0x1;_0x447fad[_0xcb7f('0xa0')]=0xb;_0x447fad[_0xcb7f('0xa1')]=_0xcb7f('0x11c');_0x447fad[_0xcb7f('0x115')]=_0xcb7f('0x11d');_0x447fad[_0xcb7f('0xee')]+=0x1;_0x447fad['countglobal']+=0x1;if(_0x447fad[_0xcb7f('0xee')]>=this[_0xcb7f('0x1f')][_0x3e1105[_0xcb7f('0xad')]][_0xcb7f('0x11e')]){this['queueCallerAbandonCreateState'](_0x447fad);}else{this[_0xcb7f('0xf5')]({'active':![],'countabandonedretry':_0x447fad['countabandonedretry'],'scheduledat':moment()[_0xcb7f('0xf6')](this[_0xcb7f('0x1f')][_0x3e1105['queue']][_0xcb7f('0x11f')],'minutes')[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x5e12e2[_0xcb7f('0xcd')],'ListId':_0x5e12e2[_0xcb7f('0xfa')],'VoiceQueueId':_0x5e12e2[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x5e12e2[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x120')));var _0x1e659e=new History(_0x447fad);_0x1e659e['state']=0xb;_0x1e659e['statedesc']='Abandoned';_0x1e659e['starttime']=moment()[_0xcb7f('0x72')](_0xcb7f('0xf9'));_0x1e659e['endtime']=_0x1e659e[_0xcb7f('0xa2')];_0x1e659e[_0xcb7f('0x11a')]=_0x447fad['calleridname'];_0x1e659e['calleridnum']=_0x447fad[_0xcb7f('0x11b')];this[_0xcb7f('0xc3')](_0x1e659e)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x121')));}}}}};Dialer['prototype'][_0xcb7f('0x34')]=function(_0x5e73da){if(this[_0xcb7f('0xa5')][_0x5e73da[_0xcb7f('0xe4')]]){this['actions'][_0x5e73da[_0xcb7f('0xe4')]][_0xcb7f('0xa9')]=_0x5e73da[_0xcb7f('0xa9')];}if(this['uniqueId'][_0x5e73da[_0xcb7f('0xe4')]]){this[_0xcb7f('0xa4')][_0x5e73da[_0xcb7f('0xe4')]][_0xcb7f('0xa9')]=_0x5e73da[_0xcb7f('0xa9')];}};Dialer[_0xcb7f('0x19')]['syncQueueMember']=function(_0x4dd575){if(strategy[this[_0xcb7f('0x1f')][this[_0xcb7f('0xa5')][_0x4dd575['actionid']]['queue']][_0xcb7f('0x4a')]]===_0xcb7f('0x18')){if(this['actions'][_0x4dd575[_0xcb7f('0x122')]]&&_['isNil'](this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]][_0xcb7f('0x123')])&&_0x4dd575[_0xcb7f('0xa8')]==='1'&&_0x4dd575[_0xcb7f('0x124')]==='0'){if(this[_0xcb7f('0x21')][_0x4dd575['stateinterface']]){if(!this['agents'][_0x4dd575[_0xcb7f('0x125')]][_0xcb7f('0x123')]){this['agents'][_0x4dd575[_0xcb7f('0x125')]][_0xcb7f('0x123')]=!![];this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]][_0xcb7f('0x123')]=!![];this['actions'][_0x4dd575[_0xcb7f('0x122')]][_0xcb7f('0x125')]=_0x4dd575[_0xcb7f('0x125')];}}}}else if((strategy[this['voiceQueues'][this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]][_0xcb7f('0xad')]]['strategy']]||'rrmemory')===_0xcb7f('0x17')){if(this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]]){if(this[_0xcb7f('0x21')][_0x4dd575['stateinterface']]){this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]]['stateinterface']=_0x4dd575['stateinterface'];if(_[_0xcb7f('0xd5')](this['queueBooked'][this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]][_0xcb7f('0xad')]])){this[_0xcb7f('0x126')][this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]]['queue']]=[];}this['queueBooked'][this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]][_0xcb7f('0xad')]]['push'](_[_0xcb7f('0xcb')](_['pick'](this[_0xcb7f('0xa5')][_0x4dd575[_0xcb7f('0x122')]],[_0xcb7f('0x127'),_0xcb7f('0x125')]),{'status':_0x4dd575[_0xcb7f('0xa8')],'paused':_0x4dd575[_0xcb7f('0x124')]}));}}}};function unlockQueueStatus(_0x5a0dea,_0x1559a9){setTimeout(function(){if(_[_0xcb7f('0x7f')](_0x5a0dea[_0xcb7f('0x128')])){loggerBooked[_0xcb7f('0x8f')](_0xcb7f('0x129'),_0x1559a9);}_0x5a0dea[_0xcb7f('0x128')]=!![];loggerBooked[_0xcb7f('0x77')](_0xcb7f('0x12a'),_0x1559a9,JSON['stringify'](_[_0xcb7f('0xcc')](_0x5a0dea,[_0xcb7f('0x3b'),_0xcb7f('0x128')])));},0x1f3);}Dialer['prototype'][_0xcb7f('0x12b')]=function(_0x41f1e9){var _0x5ed196=this;var _0x3a28c5=_0x5ed196[_0xcb7f('0x1f')][_0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]];if(strategy[this[_0xcb7f('0x1f')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]][_0xcb7f('0x4a')]]===_0xcb7f('0x18')){if(this[_0xcb7f('0xa5')][_0x41f1e9['actionid']]&&this['actions'][_0x41f1e9[_0xcb7f('0x122')]]['stateinterface']){this['preview'][_0xcb7f('0x12c')](this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0x127')],this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]['stateinterface'])[_0xcb7f('0xb1')](function(_0x2eea49){logger[_0xcb7f('0x8f')]('[Catch][Preview][syncQueueStatusComplete]',util['inspect'](_0x2eea49,{'showHidden':![],'depth':null}));})[_0xcb7f('0x1c')](function(){_0x5ed196[_0xcb7f('0xac')](_0x5ed196[_0xcb7f('0x1f')][_0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]);_0x5ed196[_0xcb7f('0x21')][_0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0x125')]][_0xcb7f('0x123')]=![];delete _0x5ed196[_0xcb7f('0xa5')][_0x41f1e9['actionid']];unlockQueueStatus(_0x3a28c5);});}else{this[_0xcb7f('0xac')](this[_0xcb7f('0x1f')][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]);this[_0xcb7f('0xf5')]({'active':![],'ContactId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xcd')],'ListId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfa')],'VoiceQueueId':this[_0xcb7f('0xa5')][_0x41f1e9['actionid']]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0x41f1e9['actionid']];unlockQueueStatus(_0x3a28c5);}}else if((strategy[this['voiceQueues'][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]['strategy']]||_0xcb7f('0x17'))===_0xcb7f('0x17')){var _0x355e45;if(this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]&&!_[_0xcb7f('0x8c')](this[_0xcb7f('0x126')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]])){if(this[_0xcb7f('0x27')][_0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]['queue']]){this['queueBookedRR'][_0x5ed196['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]=this[_0xcb7f('0x27')][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]?this[_0xcb7f('0x27')][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]:this[_0xcb7f('0x126')][this[_0xcb7f('0xa5')][_0x41f1e9['actionid']][_0xcb7f('0xad')]]?this[_0xcb7f('0x126')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]][_0xcb7f('0x12d')]||0x0:0x0;}this[_0xcb7f('0x126')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]][_0xcb7f('0x12d')]=this[_0xcb7f('0x27')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]];for(var _0x567d0a=0x0;_0x567d0a<this[_0xcb7f('0x126')][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]['length'];_0x567d0a+=0x1){_0x355e45=rr(this['queueBooked'][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]);this[_0xcb7f('0x27')][_0x5ed196['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]=this[_0xcb7f('0x126')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]][_0xcb7f('0x12d')];if(_0x355e45[_0xcb7f('0xa8')]==='1'&&_0x355e45[_0xcb7f('0x124')]==='0'){break;}}if(!_[_0xcb7f('0xd5')](_0x355e45)){this[_0xcb7f('0x21')][_0x355e45[_0xcb7f('0x125')]][_0xcb7f('0x12e')]=_[_0xcb7f('0x7f')](this[_0xcb7f('0x21')][_0x355e45[_0xcb7f('0x125')]]['unlockRR'])?!![]:this[_0xcb7f('0x21')][_0x355e45[_0xcb7f('0x125')]][_0xcb7f('0x12e')];}loggerBooked[_0xcb7f('0x77')](_0xcb7f('0x12f'),_0x41f1e9[_0xcb7f('0x122')],_0xcb7f('0x130'),JSON['stringify'](_[_0xcb7f('0xcc')](this[_0xcb7f('0x21')][_0x355e45['stateinterface']],[_0xcb7f('0x3b'),_0xcb7f('0x12e')])),'contactAgent-idHopper:\x20',JSON['stringify'](_0x355e45[_0xcb7f('0x127')]));if(!_[_0xcb7f('0xd5')](_0x355e45)&&_0x355e45[_0xcb7f('0xa8')]==='1'&&_0x355e45['paused']==='0'&&this['agents'][_0x355e45['stateinterface']][_0xcb7f('0x12e')]){this[_0xcb7f('0x21')][_0x355e45['stateinterface']][_0xcb7f('0x12e')]=![];this[_0xcb7f('0x126')][_0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]=[];this[_0xcb7f('0x1e')][_0xcb7f('0x12c')](_0x355e45[_0xcb7f('0x127')],_0x355e45['stateinterface'])[_0xcb7f('0xb1')](function(_0x5b74c6){logger['error'](_0xcb7f('0x131'),util[_0xcb7f('0x90')](_0x5b74c6,{'showHidden':![],'depth':null}));})[_0xcb7f('0x1c')](function(){_0x5ed196['updateOriginated'](_0x5ed196[_0xcb7f('0x1f')][_0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]);setTimeout(function(){_0x5ed196[_0xcb7f('0x21')][_0x355e45[_0xcb7f('0x125')]]['unlockRR']=!![];loggerBooked[_0xcb7f('0x77')](_0xcb7f('0x132'),_0x41f1e9[_0xcb7f('0x122')],'Agent:\x20',JSON['stringify'](_[_0xcb7f('0xcc')](_0x5ed196[_0xcb7f('0x21')][_0x355e45[_0xcb7f('0x125')]],[_0xcb7f('0x3b'),'unlockRR'])),_0xcb7f('0x133'),JSON[_0xcb7f('0x44')](_0x355e45[_0xcb7f('0x127')]));},0xc7);delete _0x5ed196[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]];unlockQueueStatus(_0x3a28c5,_0x41f1e9[_0xcb7f('0x122')]);});}else{loggerBooked['info']('[booked][unlock]');this['updateOriginated'](this[_0xcb7f('0x1f')][this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]);this[_0xcb7f('0xf5')]({'active':![],'ContactId':this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xcd')],'ListId':this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfa')],'VoiceQueueId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfb')]||undefined,'CampaignId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0x41f1e9[_0xcb7f('0x122')]];unlockQueueStatus(_0x3a28c5);}}else{loggerBooked['info'](_0xcb7f('0x134'));this['updateOriginated'](this[_0xcb7f('0x1f')][this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xad')]]);this[_0xcb7f('0xf5')]({'active':![],'ContactId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xcd')],'ListId':this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfa')],'VoiceQueueId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]['CampaignId']||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x135')));delete this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]];unlockQueueStatus(_0x3a28c5);}}else{loggerBooked[_0xcb7f('0x77')](_0xcb7f('0x136'));this['updateOriginated'](this[_0xcb7f('0x1f')][this[_0xcb7f('0xa5')][_0x41f1e9['actionid']]['queue']]);this[_0xcb7f('0xf5')]({'active':![],'ContactId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]['ContactId'],'ListId':this['actions'][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfa')],'VoiceQueueId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]][_0xcb7f('0xfb')]||undefined,'CampaignId':this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]]['CampaignId']||undefined})[_0xcb7f('0xb1')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0xcb7f('0xa5')][_0x41f1e9[_0xcb7f('0x122')]];unlockQueueStatus(_0x3a28c5);}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x137')]=function(){var _0x388e94=this;setInterval(function(){_0x388e94['syncCampaigns']();},0x3e8);};Dialer[_0xcb7f('0x19')][_0xcb7f('0x138')]=function(_0x53561b){var _0x1967af=this;return function(){if(!_0x1967af[_0xcb7f('0x139')](_0x53561b[_0xcb7f('0x6f')])){if(!_0x1967af[_0xcb7f('0x139')](_0x53561b[_0xcb7f('0x13a')])){_0x53561b['message']=_0xcb7f('0x13b');throw _0x53561b[_0xcb7f('0x3b')]+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer[_0xcb7f('0x19')]['checkIfTime']=function(_0x213576,_0x294e1f,_0x2a7f25,_0x201295){var _0x5b6030=this;return function(){var _0x448ed5=!![];return _0x5b6030[_0xcb7f('0x13c')](_0x213576,_0x294e1f,_0x2a7f25,_0x201295,_0x448ed5);};};Dialer[_0xcb7f('0x19')]['checkIfTimeIntervals']=function(_0x42442b,_0x207f5d,_0x1b839b,_0x5ed440){var _0x25cad6=this;return function(){var _0x2823bf=![];return _0x25cad6[_0xcb7f('0x13c')](_0x42442b[_0xcb7f('0x40')],_0x207f5d,_0x1b839b,_0x5ed440,_0x2823bf);};};Dialer[_0xcb7f('0x19')][_0xcb7f('0x13c')]=function(_0x2735b1,_0x2b68aa,_0x284fd0,_0x3e9a25,_0x5bcaf7){var _0x1934ad=[];return new BPromise(function(_0x42da8f,_0x1dd563){if(!isNotNull(_0x2735b1)){_0x3e9a25[_0xcb7f('0x39')]=_0xcb7f('0x3f');return _0x1dd563(msgResponse(_0xcb7f('0x13c'),_0xcb7f('0x13d'),_0x284fd0+_0xcb7f('0x13e')));}if(_[_0xcb7f('0x8c')](_0x2735b1)){_0x3e9a25[_0xcb7f('0x39')]=_0xcb7f('0x13f');return _0x1dd563(msgResponse(_0xcb7f('0x13c'),_0xcb7f('0x13d'),_0x284fd0+_0xcb7f('0x140')));}if(_0x2b68aa&&_['isUndefined'](config[_0xcb7f('0x141')][_0x2b68aa])){_0x3e9a25[_0xcb7f('0x39')]=_0xcb7f('0x142');return _0x1dd563(msgResponse(_0xcb7f('0x13c'),_0xcb7f('0x13d'),_0x284fd0+_0xcb7f('0x143')+_0x2b68aa));}if(_[_0xcb7f('0x144')](_0x2735b1)){for(var _0xeb8536=0x0;_0xeb8536<_0x2735b1[_0xcb7f('0x145')];_0xeb8536+=0x1){_0x1934ad['push'](ami[_0xcb7f('0xa7')]({'action':_0xcb7f('0x146'),'command':util[_0xcb7f('0x72')](_0xcb7f('0x147'),_0x2735b1[_0xeb8536][_0xcb7f('0x148')],!_['isUndefined'](config[_0xcb7f('0x141')][_0x2b68aa])?_0x2b68aa:'')})[_0xcb7f('0xaf')](function(_0x5dad0f){return _0x5dad0f['content'][_0xcb7f('0x149')](_0xcb7f('0x14a'))>=0x0;})[_0xcb7f('0xb1')](myreject(_0x1dd563)));}}else{_0x1934ad[_0xcb7f('0x14b')](ami['Action']({'action':_0xcb7f('0x146'),'command':util[_0xcb7f('0x72')](_0xcb7f('0x147'),_0x2735b1,!_[_0xcb7f('0x7f')](config[_0xcb7f('0x141')][_0x2b68aa])?_0x2b68aa:'')})[_0xcb7f('0xaf')](function(_0x310dbe){return _0x310dbe[_0xcb7f('0x14c')]['indexOf']('true')>=0x0;})[_0xcb7f('0xb1')](myreject(_0x1dd563)));}BPromise[_0xcb7f('0x14d')](_0x1934ad)[_0xcb7f('0xaf')](function(_0xa298ba){var _0x5cbe15=_[_0xcb7f('0x14e')](_0xa298ba);if(_0x5cbe15){return _0x42da8f(_0x5cbe15);}else{_0x3e9a25[_0xcb7f('0x39')]=_0x5bcaf7?_0xcb7f('0x14f'):_0xcb7f('0x150');return _0x1dd563(msgResponse(_0xcb7f('0x151'),_0xcb7f('0x13d'),'Global:\x20'+_0x5bcaf7+'\x20'+_0x284fd0+_0xcb7f('0x152')+util['inspect'](_0x2735b1,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x2b68aa));}})['catch'](function(_0x38484f){return _0x1dd563(msgResponse(_0xcb7f('0x13c'),'Failure',JSON['stringify'](_0x38484f)));});});};Dialer['prototype'][_0xcb7f('0x153')]=function(_0x40cd3f){var _0x13a220=this;return function(){switch(_0x40cd3f[_0xcb7f('0x55')]){case _0xcb7f('0x154'):freeVariablesPredictive(_0x40cd3f);_0x13a220[_0xcb7f('0x155')](_0x40cd3f,0x1);break;case'power':freeVariablesPredictive(_0x40cd3f);_0x13a220[_0xcb7f('0x155')](_0x40cd3f,_0x40cd3f['dialPowerLevel']);break;case _0xcb7f('0x156'):_0x13a220['predictive'](_0x40cd3f);break;case _0xcb7f('0x7'):freeVariablesPredictive(_0x40cd3f);_0x13a220[_0xcb7f('0x155')](_0x40cd3f,0x1);break;default:freeVariablesPredictive(_0x40cd3f);logger[_0xcb7f('0x8f')](_0xcb7f('0x157'),_0x40cd3f[_0xcb7f('0x3b')],_0xcb7f('0x158'));}};};Dialer[_0xcb7f('0x19')][_0xcb7f('0x159')]=function(_0x77370f){var _0x331a0b=this;return function(){_0x331a0b[_0xcb7f('0x15a')](_0x77370f);};};Dialer['prototype']['syncQueueSummary']=function(_0x10dde0){var _0x3282a7=this;if(isNotPreview(_0x10dde0['dialMethod'])){if(isVoiceQueueOutbound(_0x10dde0[_0xcb7f('0x48')])&&isActive(_0x10dde0[_0xcb7f('0x54')])){_0x10dde0[_0xcb7f('0x99')]=!![];BPromise[_0xcb7f('0xae')]()[_0xcb7f('0xaf')](checkIsLoggedIn(_0x10dde0,_0x10dde0[_0xcb7f('0x15b')]))['then'](checkIsActive(_0x10dde0,_0x10dde0['dialActive']))[_0xcb7f('0xaf')](checkInterval(_0x10dde0))['then'](_0x3282a7[_0xcb7f('0x138')](_0x10dde0))[_0xcb7f('0xaf')](_0x3282a7[_0xcb7f('0x15c')](_0x10dde0[_0xcb7f('0x15d')],_0x10dde0[_0xcb7f('0x15e')],_0x10dde0[_0xcb7f('0x3b')],_0x10dde0))[_0xcb7f('0xaf')](_0x3282a7['checkIfTimeIntervals'](_0x10dde0[_0xcb7f('0x3e')],_0x10dde0[_0xcb7f('0x15e')],_0x10dde0[_0xcb7f('0x3b')],_0x10dde0))['then'](_0x3282a7['checkDialMethod'](_0x10dde0))['catch'](loggerCatchQueueSummary(_0xcb7f('0x15f'),_0x10dde0));}else{notSendMessagesQueue(_0x10dde0);}}else{freeVariablesPredictive(_0x10dde0);}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x160')]=function(){var _0x36521f=this;var _0x5b4f20;for(var _0x3c41f3 in this[_0xcb7f('0x20')]){if(typeof this[_0xcb7f('0x20')][_0x3c41f3]!==_0xcb7f('0x92')){_0x5b4f20=this[_0xcb7f('0x20')][_0x3c41f3];if(isCampaignIvr(_0x5b4f20[_0xcb7f('0x48')])&&isActive(_0x5b4f20[_0xcb7f('0x70')])){_0x5b4f20[_0xcb7f('0x99')]=!![];BPromise['resolve']()[_0xcb7f('0xaf')](checkIsActive(_0x5b4f20,_0x5b4f20[_0xcb7f('0x70')]))['then'](checkInterval(_0x5b4f20))[_0xcb7f('0xaf')](_0x36521f[_0xcb7f('0x138')](_0x5b4f20))[_0xcb7f('0xaf')](_0x36521f[_0xcb7f('0x15c')](_0x5b4f20['dialGlobalInterval'],_0x5b4f20[_0xcb7f('0x15e')],_0x5b4f20[_0xcb7f('0x3b')],_0x5b4f20))['then'](_0x36521f[_0xcb7f('0x161')](_0x5b4f20['Interval'],_0x5b4f20[_0xcb7f('0x15e')],_0x5b4f20['name'],_0x5b4f20))[_0xcb7f('0xaf')](_0x36521f[_0xcb7f('0x159')](_0x5b4f20))[_0xcb7f('0xb1')](loggerCatchQueueSummary(_0xcb7f('0x162'),_0x5b4f20));}else{notSendMessagesCampaign(_0x5b4f20);}}}};function getCallerIdRandom(_0x13faba,_0x191d32){var _0x5622b4;var _0x1d72ac;var _0x26db47;if(_0x191d32<=0x0){_0x191d32=0x1;}_0x5622b4=new RegExp('\x5cw{0,'+_0x191d32+'}$');_0x1d72ac=Math[_0xcb7f('0x163')](0xa,_0x191d32-0x1);_0x26db47=Math['pow'](0xa,_0x191d32)-0x1;return util[_0xcb7f('0x72')]('%s',_[_0xcb7f('0x164')](_0x13faba,_0x5622b4,_[_0xcb7f('0x165')](_0x1d72ac,_0x26db47)));}function extractCalleridName(_0x47bb9e){var _0xb0b76b=_0x47bb9e[_0xcb7f('0x166')](/"(.*?)"/);return _0xb0b76b?_0xb0b76b[0x1]:_0x47bb9e;}function extractCalleridNumber(_0x20820e){var _0x512a9a=_0x20820e[_0xcb7f('0x166')](/<(.*?)>/);return _0x512a9a?_0x512a9a[0x1]:_0x20820e;}Dialer['prototype'][_0xcb7f('0x167')]=function(_0x28e1ff,_0x47c4f4){var _0x27c464=this;var _0x2280b=uuid['v4']();this[_0xcb7f('0xa5')][_0x2280b]=new Action(_0x28e1ff,_0x47c4f4,_0x2280b);return new BPromise(function(_0x3fc57b,_0x52aa3a){if(_[_0xcb7f('0x7f')](_0x28e1ff)&&typeof _0x28e1ff!==_0xcb7f('0x168')){return _0x52aa3a(msgResponse(_0xcb7f('0x169'),_0xcb7f('0x13d'),_0xcb7f('0x16a')));}if(_[_0xcb7f('0x7f')](_0x47c4f4[_0xcb7f('0x16b')]['phone'])||_0x47c4f4[_0xcb7f('0x16b')][_0xcb7f('0x16c')]===null){return _0x52aa3a(msgResponse(_0xcb7f('0x169'),_0xcb7f('0x13d'),_0xcb7f('0x16d')));}var _0x445768={'XMD-CALLERID':_0x27c464[_0xcb7f('0xa5')][_0x2280b][_0xcb7f('0x16e')](),'XMD-AGI':_0x28e1ff['dialQueueProject']?util[_0xcb7f('0x72')](_0xcb7f('0x16f'),ipAgi,_0x28e1ff[_0xcb7f('0x170')]):_0xcb7f('0x171'),'XMD-AGIAFTER':_0x28e1ff[_0xcb7f('0x10c')]?util[_0xcb7f('0x72')]('\x22agi://%s/square,%s\x22',ipAgi,_0x28e1ff[_0xcb7f('0x10c')]):'NONE','XMD-QUEUE':_0x28e1ff[_0xcb7f('0x48')]===_0xcb7f('0x49')?util['format'](_0xcb7f('0x172'),_0x28e1ff[_0xcb7f('0x3b')],_0x28e1ff[_0xcb7f('0x173')]||'',_0x28e1ff[_0xcb7f('0x10d')]?'c':'',_0x28e1ff[_0xcb7f('0x114')]||0x3):_0xcb7f('0x171'),'XMD-CONTACTID':_0x47c4f4[_0xcb7f('0xcd')],'XMD-CDRTYPE':_0xcb7f('0x6'),'CALLERID(all)':_0x27c464[_0xcb7f('0xa5')][_0x2280b][_0xcb7f('0x16e')](),'XMD-AMD':_0x28e1ff['dialAMDActive']?'ACTIVE':_0xcb7f('0x171'),'XMD-DESTINATION':_0xcb7f('0xd8')};if(_0x28e1ff['dialAMDActive']){_0x445768[_0xcb7f('0x174')]=_0x28e1ff['dialAMDInitialSilence']||0x9c4;_0x445768[_0xcb7f('0x175')]=_0x28e1ff[_0xcb7f('0x176')]||0x5dc;_0x445768[_0xcb7f('0x177')]=_0x28e1ff[_0xcb7f('0x178')]||0x320;_0x445768[_0xcb7f('0x179')]=_0x28e1ff[_0xcb7f('0x17a')]||0x1388;_0x445768['XMD-AMDMINWORDLENGTH']=_0x28e1ff[_0xcb7f('0x17b')]||0x64;_0x445768['XMD-AMDBETWEENWORDSSILENCE']=_0x28e1ff['dialAMDBetweenWordsSilence']||0x32;_0x445768['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x28e1ff['dialAMDMaximumNumberOfWords']||0x3;_0x445768[_0xcb7f('0x17c')]=_0x28e1ff['dialAMDSilenceThreshold']||0x100;_0x445768['XMD-AMDMAXIMUMWORDLENGTH']=_0x28e1ff[_0xcb7f('0x17d')]||0x1388;}if(_0x28e1ff[_0xcb7f('0x48')]===_0xcb7f('0x49')){_0x445768['XMD-VOICEQUEUEID']=_0x47c4f4[_0xcb7f('0xfb')];}else{_0x445768[_0xcb7f('0x17e')]=_0x47c4f4[_0xcb7f('0xfc')];}for(var _0xf9e7f in _0x47c4f4[_0xcb7f('0x16b')]){if(typeof _0x47c4f4['Contact'][_0xf9e7f]!=='undefined'){if(isNotNull(_0x47c4f4[_0xcb7f('0x16b')][_0xf9e7f])&&_0xf9e7f!=='id'&&_0xf9e7f!==_0xcb7f('0x17f')&&_0xf9e7f!==_0xcb7f('0x180')&&_0xf9e7f!==_0xcb7f('0x181')){_0x445768[util[_0xcb7f('0x72')]('%s%s','XMD-',_[_0xcb7f('0x182')](_0xf9e7f))]=_0x47c4f4[_0xcb7f('0x16b')][_0xf9e7f];}}}var _0x48fb53=_0x27c464[_0xcb7f('0x139')](_0x28e1ff['Trunk'])?getCallerId(_0x28e1ff[_0xcb7f('0x6f')][_0xcb7f('0x71')],_0x28e1ff[_0xcb7f('0x56')],_0x28e1ff[_0xcb7f('0x183')]>0x0?getCallerIdRandom(_0x28e1ff[_0xcb7f('0x57')],_0x28e1ff[_0xcb7f('0x183')]):_0x28e1ff[_0xcb7f('0x57')]):getCallerId(_[_0xcb7f('0xd5')](_0x28e1ff[_0xcb7f('0x13a')])?_0x28e1ff[_0xcb7f('0x6f')][_0xcb7f('0x71')]:_0x28e1ff[_0xcb7f('0x13a')][_0xcb7f('0x71')],_0x28e1ff['dialOriginateCallerIdName'],_0x28e1ff['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x28e1ff[_0xcb7f('0x57')],_0x28e1ff[_0xcb7f('0x183')]):_0x28e1ff['dialOriginateCallerIdNumber']);if(_0x48fb53){_0x445768[_0xcb7f('0x184')]=_0x27c464[_0xcb7f('0xa5')][_0x2280b][_0xcb7f('0x185')]=extractCalleridName(_0x48fb53);_0x445768[_0xcb7f('0x186')]=_0x27c464['actions'][_0x2280b][_0xcb7f('0x187')]=extractCalleridNumber(_0x48fb53);}return ami[_0xcb7f('0xa7')]({'actionid':_0x2280b,'action':_0xcb7f('0x169'),'channel':_0x27c464['isTrunkReachable'](_0x28e1ff[_0xcb7f('0x6f')])?util[_0xcb7f('0x72')](_0xcb7f('0x188'),_0x28e1ff[_0xcb7f('0x6f')][_0xcb7f('0x3b')],isNotNull(_0x28e1ff[_0xcb7f('0x58')])?_0x28e1ff[_0xcb7f('0x58')][_0xcb7f('0x189')]()||'':'',_0x28e1ff['dialCutDigit']>0x0?_0x47c4f4['Contact'][_0xcb7f('0x16c')][_0xcb7f('0x18a')](_0x28e1ff[_0xcb7f('0x18b')]):_0x47c4f4[_0xcb7f('0x16b')]['phone']):util[_0xcb7f('0x72')](_0xcb7f('0x188'),_[_0xcb7f('0xd5')](_0x28e1ff[_0xcb7f('0x13a')])?_0x28e1ff[_0xcb7f('0x6f')][_0xcb7f('0x3b')]:_0x28e1ff[_0xcb7f('0x13a')][_0xcb7f('0x3b')],isNotNull(_0x28e1ff[_0xcb7f('0x58')])?_0x28e1ff['dialPrefix'][_0xcb7f('0x189')]()||'':'',_0x28e1ff['dialCutDigit']>0x0?_0x47c4f4[_0xcb7f('0x16b')]['phone']['substring'](_0x28e1ff[_0xcb7f('0x18b')]):_0x47c4f4[_0xcb7f('0x16b')]['phone']),'callerid':_0x48fb53,'Exten':_0xcb7f('0xd8'),'Context':_0xcb7f('0x18c'),'Priority':'1','variable':_0x445768,'timeout':(_0x28e1ff[_0xcb7f('0x18d')]||0x1e)*0x3e8,'async':!![],'channelid':_0x2280b})[_0xcb7f('0xaf')](function(_0x48490b){return _0x3fc57b(_0x48490b);})['catch'](function(_0x1df1fb){_0x28e1ff['outboundOriginateFailureCallsDay']+=0x1;var _0x1143f0=new History(_0x27c464[_0xcb7f('0xa5')][_0x2280b]);logger[_0xcb7f('0x8f')](util['format'](_0xcb7f('0x18e'),JSON['stringify'](_0x1df1fb)));_0x1143f0[_0xcb7f('0xa0')]=0xe;_0x1143f0['statedesc']=_0xcb7f('0x18f');_0x1143f0[_0xcb7f('0xa2')]=moment()['format'](_0xcb7f('0xf9'));_0x1143f0[_0xcb7f('0x190')]=_0x1143f0[_0xcb7f('0xa2')];_0x27c464['createHistory'](_0x1143f0)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x191')));_0x27c464[_0xcb7f('0xc1')](_0x1143f0)[_0xcb7f('0xb1')](loggerCatch('[originate][error]'))[_0xcb7f('0x1c')](function(){delete _0x27c464[_0xcb7f('0xa5')][_0x2280b];return _0x52aa3a(msgResponse(_0xcb7f('0x169'),_0xcb7f('0x43'),'originate\x20action\x20Error'));});});});};Dialer[_0xcb7f('0x19')]['syncOriginateResponse']=function(_0x29a078){var _0x105ff2=this[_0xcb7f('0xa5')][_0x29a078[_0xcb7f('0x122')]];if(_0x105ff2){delete this[_0xcb7f('0xa5')][_0x29a078[_0xcb7f('0x122')]];_0x105ff2['responsetime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x59cfe7=_0x105ff2[_0xcb7f('0x48')]===_0xcb7f('0x8a')?this[_0xcb7f('0x20')][_0x105ff2[_0xcb7f('0xad')]]:this[_0xcb7f('0x1f')][_0x105ff2['getQueue']()];if(!this[_0xcb7f('0xd1')](_0x29a078[_0xcb7f('0x192')])){this['updateOriginated'](_0x59cfe7);return this[_0xcb7f('0x193')](_0x105ff2,_0x59cfe7,_0x29a078)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x194')));}this[_0xcb7f('0xa4')][_0x29a078[_0xcb7f('0xe4')]]=_0x105ff2;}};Dialer['prototype'][_0xcb7f('0x195')]=function(_0x5e06ee,_0x5176a2,_0x446d3f){var _0x3150c8=new History(_0x5176a2);if(_0x3150c8[_0xcb7f('0xea')]+_0x3150c8[_0xcb7f('0xeb')]+_0x3150c8[_0xcb7f('0xec')]+_0x3150c8[_0xcb7f('0xed')]+_0x3150c8[_0xcb7f('0x101')]+_0x3150c8[_0xcb7f('0xee')]+_0x3150c8[_0xcb7f('0xe6')]+_0x3150c8[_0xcb7f('0xef')]>=_0x446d3f[_0xcb7f('0x102')]-0x1){return!![];}switch(_0x5e06ee){case 0x3:if(_0x3150c8['countnoanswerretry']>=_0x446d3f[_0xcb7f('0x196')]-0x1){return!![];}this[_0xcb7f('0xf5')]({'active':![],'countnoanswerretry':_0x3150c8[_0xcb7f('0xec')]+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f[_0xcb7f('0x197')],'minutes')['format'](_0xcb7f('0xf9')),'ContactId':_0x3150c8['ContactId'],'ListId':_0x3150c8['ListId'],'VoiceQueueId':_0x3150c8[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3150c8[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x198')));break;case 0x5:if(_0x3150c8[_0xcb7f('0xea')]>=_0x446d3f['dialBusyMaxRetry']-0x1){return!![];}this[_0xcb7f('0xf5')]({'active':![],'countbusyretry':_0x3150c8[_0xcb7f('0xea')]+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f[_0xcb7f('0x199')],'minutes')[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x3150c8[_0xcb7f('0xcd')],'ListId':_0x3150c8[_0xcb7f('0xfa')],'VoiceQueueId':_0x3150c8['VoiceQueueId']||undefined,'CampaignId':_0x3150c8[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x3150c8['countcongestionretry']>=_0x446d3f['dialCongestionMaxRetry']-0x1){return!![];}this[_0xcb7f('0xf5')]({'active':![],'countcongestionretry':_0x3150c8[_0xcb7f('0xeb')]+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f[_0xcb7f('0x19a')],_0xcb7f('0xf8'))[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x3150c8[_0xcb7f('0xcd')],'ListId':_0x3150c8[_0xcb7f('0xfa')],'VoiceQueueId':_0x3150c8[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3150c8['CampaignId']||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x19b')));break;case 0x0:if(_0x3150c8[_0xcb7f('0xed')]>=_0x446d3f[_0xcb7f('0x19c')]-0x1){return!![];}else{this[_0xcb7f('0xf5')]({'active':![],'countnosuchnumberretry':_0x3150c8['countnosuchnumberretry']+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f[_0xcb7f('0x19d')],_0xcb7f('0xf8'))[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x3150c8['ContactId'],'ListId':_0x3150c8[_0xcb7f('0xfa')],'VoiceQueueId':_0x3150c8[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3150c8[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x3150c8['countdropretry']>=_0x446d3f[_0xcb7f('0x117')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countdropretry':_0x3150c8[_0xcb7f('0x101')]+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f[_0xcb7f('0x118')],_0xcb7f('0xf8'))[_0xcb7f('0x72')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x3150c8[_0xcb7f('0xcd')],'ListId':_0x3150c8['ListId'],'VoiceQueueId':_0x3150c8[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3150c8['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x3150c8['countabandonedretry']>=_0x446d3f['dialAbandonedMaxRetry']-0x1){return!![];}this[_0xcb7f('0xf5')]({'active':![],'countabandonedretry':_0x3150c8[_0xcb7f('0xee')]+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f[_0xcb7f('0x11f')],'minutes')[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x3150c8[_0xcb7f('0xcd')],'ListId':_0x3150c8['ListId'],'VoiceQueueId':_0x3150c8['VoiceQueueId']||undefined,'CampaignId':_0x3150c8['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x3150c8['countmachineretry']>=_0x446d3f[_0xcb7f('0xf2')]-0x1){return!![];}this[_0xcb7f('0xf5')]({'active':![],'countmachineretry':_0x3150c8[_0xcb7f('0xe6')]+=0x1,'scheduledat':moment()['add'](_0x446d3f[_0xcb7f('0xf7')],_0xcb7f('0xf8'))[_0xcb7f('0x72')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x3150c8[_0xcb7f('0xcd')],'ListId':_0x3150c8['ListId'],'VoiceQueueId':_0x3150c8[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3150c8[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xfd')));break;case 0x14:if(_0x3150c8['countagentrejectretry']>=_0x446d3f[_0xcb7f('0x19e')]-0x1){return!![];}this[_0xcb7f('0xf5')]({'active':![],'countagentrejectretry':_0x3150c8[_0xcb7f('0xef')]+=0x1,'scheduledat':moment()[_0xcb7f('0xf6')](_0x446d3f['dialAgentRejectRetryFrequency'],'minutes')[_0xcb7f('0x72')](_0xcb7f('0xf9')),'ContactId':_0x3150c8['ContactId'],'ListId':_0x3150c8['ListId'],'VoiceQueueId':_0x3150c8['VoiceQueueId']||undefined,'CampaignId':_0x3150c8[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x19f')));break;default:return!![];}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x193')]=function(_0x88edda,_0x310c8f,_0x5c6802){var _0x176c20=this;var _0x4a6a70=new History(_0x88edda);return new BPromise(function(_0x31b11a,_0xdc89c1){if(_[_0xcb7f('0x7f')](_0x310c8f)&&typeof _0x310c8f!==_0xcb7f('0x168')){return _0xdc89c1(msgResponse('[callProgressDetecting]',_0xcb7f('0x13d'),_0xcb7f('0x1a0')));}if(_[_0xcb7f('0x7f')](_0x5c6802)&&typeof _0x5c6802!==_0xcb7f('0x168')){return _0xdc89c1(msgResponse(_0xcb7f('0x1a1'),_0xcb7f('0x13d'),_0xcb7f('0x1a2')));}switch(_0x5c6802[_0xcb7f('0x109')]){case'0':_0x310c8f[_0xcb7f('0x60')]+=0x1;_0x4a6a70['state']=0x0;_0x4a6a70['statedesc']='NoSuchNumber';_0x4a6a70[_0xcb7f('0xed')]+=0x1;_0x4a6a70[_0xcb7f('0xe7')]+=0x1;ami[_0xcb7f('0x47')](_0xcb7f('0x1a3'),ut[_0xcb7f('0xe9')](_0x88edda,_0xcb7f('0x1a4')));_0x176c20[_0xcb7f('0xc3')](_0x4a6a70)[_0xcb7f('0xb1')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x176c20[_0xcb7f('0x195')](0x0,_0x88edda,_0x310c8f)){if(_0x4a6a70[_0xcb7f('0xed')]>=_0x310c8f[_0xcb7f('0x19c')]){_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1a5'));}else{_0x176c20['stateGlobal'](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1a5'));}}break;case'3':_0x310c8f[_0xcb7f('0x1a6')]+=0x1;_0x4a6a70[_0xcb7f('0xa0')]=0x3;_0x4a6a70[_0xcb7f('0xa1')]='NoAnswer';_0x4a6a70[_0xcb7f('0xec')]+=0x1;_0x4a6a70[_0xcb7f('0xe7')]+=0x1;ami[_0xcb7f('0x47')](_0xcb7f('0x1a7'),ut[_0xcb7f('0xe9')](_0x88edda,_0xcb7f('0x1a8')));_0x176c20[_0xcb7f('0xc3')](_0x4a6a70)['catch'](loggerCatch(_0xcb7f('0x1a9')));if(_0x176c20['checkRetriveMax'](0x3,_0x88edda,_0x310c8f)){if(_0x4a6a70[_0xcb7f('0xec')]>=_0x310c8f['dialNoAnswerMaxRetry']){_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1aa'));}else{_0x176c20[_0xcb7f('0xf0')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1aa'));}}break;case'5':_0x310c8f[_0xcb7f('0x5b')]+=0x1;_0x4a6a70[_0xcb7f('0xa0')]=0x5;_0x4a6a70[_0xcb7f('0xa1')]=_0xcb7f('0x1ab');_0x4a6a70[_0xcb7f('0xea')]+=0x1;_0x4a6a70[_0xcb7f('0xe7')]+=0x1;ami[_0xcb7f('0x47')](_0xcb7f('0x1ac'),ut[_0xcb7f('0xe9')](_0x88edda,_0xcb7f('0x1ad')));_0x176c20[_0xcb7f('0xc3')](_0x4a6a70)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x1ae')));if(_0x176c20['checkRetriveMax'](0x5,_0x88edda,_0x310c8f)){if(_0x4a6a70[_0xcb7f('0xea')]>=_0x310c8f[_0xcb7f('0x1af')]){_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1b0'));}else{_0x176c20[_0xcb7f('0xf0')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1b0'));}}break;case'8':_0x310c8f['outboundCongestionCallsDay']+=0x1;_0x4a6a70[_0xcb7f('0xa0')]=0x8;_0x4a6a70[_0xcb7f('0xa1')]='Congestion';_0x4a6a70[_0xcb7f('0xeb')]+=0x1;_0x4a6a70[_0xcb7f('0xe7')]+=0x1;ami[_0xcb7f('0x47')](_0xcb7f('0x1b1'),ut[_0xcb7f('0xe9')](_0x88edda,_0xcb7f('0x1b2')));_0x176c20[_0xcb7f('0xc3')](_0x4a6a70)['catch'](loggerCatch(_0xcb7f('0x1b3')));if(_0x176c20[_0xcb7f('0x195')](0x8,_0x88edda,_0x310c8f)){if(_0x4a6a70[_0xcb7f('0xeb')]>=_0x310c8f[_0xcb7f('0x1b4')]){_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1b5'));}else{_0x176c20[_0xcb7f('0xf0')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1b5'));}}break;case'11':_0x310c8f[_0xcb7f('0x1b6')]+=0x1;_0x4a6a70[_0xcb7f('0xa0')]=0xb;_0x4a6a70[_0xcb7f('0xa1')]='Abandoned';_0x4a6a70['countabandonedretry']+=0x1;_0x4a6a70[_0xcb7f('0xe7')]+=0x1;_0x176c20['createHistory'](_0x4a6a70)[_0xcb7f('0xb1')](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x176c20['checkRetriveMax'](0xb,_0x88edda,_0x310c8f)){if(_0x4a6a70[_0xcb7f('0xee')]>=_0x310c8f[_0xcb7f('0x11e')]){_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,'reason\x2011\x20abandoned');}else{_0x176c20['stateGlobal'](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1b7'));}}break;case'20':_0x310c8f[_0xcb7f('0x1b8')]+=0x1;_0x4a6a70[_0xcb7f('0xa0')]=0x14;_0x4a6a70['statedesc']=_0xcb7f('0x1b9');_0x4a6a70[_0xcb7f('0xef')]+=0x1;_0x4a6a70[_0xcb7f('0xe7')]+=0x1;ami[_0xcb7f('0x47')]('custom:agentreject',ut['buildObj'](_0x88edda,_0xcb7f('0x1ba')));_0x176c20['createHistory'](_0x4a6a70)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x1bb')));if(_0x176c20[_0xcb7f('0x195')](0x14,_0x88edda,_0x310c8f)){if(_0x4a6a70[_0xcb7f('0xef')]>=_0x310c8f['dialAgentRejectMaxRetry']){_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,'reason\x2020\x20agentreject');}else{_0x176c20[_0xcb7f('0xf0')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0xcb7f('0x1bc'));}}break;default:_0x310c8f[_0xcb7f('0x1bd')]+=0x1;_0x4a6a70['state']=0xc;_0x4a6a70[_0xcb7f('0xa1')]=_0x5c6802[_0xcb7f('0x109')];_0x176c20['createHistory'](_0x4a6a70)[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x1be')));if(_0x176c20[_0xcb7f('0x195')](_0x5c6802[_0xcb7f('0x109')],_0x88edda,_0x310c8f)){if(_0x4a6a70['countbusyretry']+_0x4a6a70['countcongestionretry']+_0x4a6a70[_0xcb7f('0xec')]+_0x4a6a70[_0xcb7f('0xed')]+_0x4a6a70[_0xcb7f('0x101')]+_0x4a6a70['countabandonedretry']+_0x4a6a70[_0xcb7f('0xe6')]+_0x4a6a70['countagentrejectretry']>=_0x310c8f[_0xcb7f('0x102')]){_0x176c20[_0xcb7f('0xf0')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0x5c6802[_0xcb7f('0x109')]);}else{_0x176c20[_0xcb7f('0xf3')](_0x4a6a70,_0x31b11a,_0xdc89c1,_0x5c6802[_0xcb7f('0x109')]);}}}});};Dialer[_0xcb7f('0x19')]['stateGlobal']=function(_0x5ddf67,_0x277083,_0x53aaa9,_0x55a9bf){var _0x11f96d=new Final(_0x5ddf67);_0x11f96d[_0xcb7f('0xa0')]=0xf;_0x11f96d[_0xcb7f('0xa1')]=_0xcb7f('0x1bf');this[_0xcb7f('0xf3')](_0x11f96d,_0x277083,_0x53aaa9,_0x55a9bf);};Dialer[_0xcb7f('0x19')]['createStateFinal']=function(_0x1a7e7b,_0x321b93,_0x34d0b8,_0x3fd82e){this[_0xcb7f('0xc1')](_0x1a7e7b)[_0xcb7f('0xaf')](function(){return _0x321b93(msgResponse(_0xcb7f('0x1a1'),'Success',_0x3fd82e));})['catch'](function(){return _0x34d0b8(msgResponse(_0xcb7f('0x1c0'),_0xcb7f('0x13d'),_0xcb7f('0x1c1')));});};Dialer['prototype'][_0xcb7f('0x156')]=function(_0x281c4b){var _0x520b7f=_0x281c4b['dialPredictiveOptimizationPercentage']/0x64;var _0x58797f=_0x281c4b['outboundDropCallsDayTimeout']/(_0x281c4b[_0xcb7f('0x5f')]+_0x281c4b[_0xcb7f('0x59')]);var _0x25f70f=Math[_0xcb7f('0x1c2')](_0x281c4b[_0xcb7f('0x1c3')]*(_0x281c4b[_0xcb7f('0x1c4')]/0x64));var _0x2830d6=Math['round'](_0x281c4b['predictiveIntervalAvailable']*(_0x281c4b[_0xcb7f('0x1c5')]/0x64));var _0x270127=_0x281c4b[_0xcb7f('0x4c')]+_0x281c4b[_0xcb7f('0x51')];var _0x29bf42=Math[_0xcb7f('0x1c6')](_0x281c4b['erlangCalls']*_0x281c4b['erlangAbandonmentRate']*_0x281c4b[_0xcb7f('0x68')]*_0x281c4b[_0xcb7f('0x1c7')]);if(_[_0xcb7f('0x7f')](_0x281c4b[_0xcb7f('0x25')])){if(!_['isUndefined'](_0x281c4b[_0xcb7f('0x87')])){_0x281c4b[_0xcb7f('0x87')]=undefined;loggerPredictive[_0xcb7f('0x8f')](_0xcb7f('0x1c8'),_0xcb7f('0x1c9'));}if(!_['isUndefined'](_0x281c4b['handlePredictive'])){loggerPredictive[_0xcb7f('0x8f')](_0xcb7f('0x1c8'),_0xcb7f('0x1ca'));clearInterval(_0x281c4b[_0xcb7f('0x88')]);_0x281c4b[_0xcb7f('0x88')]=undefined;}_0x281c4b[_0xcb7f('0x25')]=moment()[_0xcb7f('0x72')](_0xcb7f('0xf9'));loggerPredictive['info'](_0x281c4b[_0xcb7f('0x3b')],'collection\x20data\x20in\x20progressive\x20at',_0x281c4b['startProgressive']);this[_0xcb7f('0x155')](_0x281c4b,0x1);}else if(ifInterval(_0x281c4b[_0xcb7f('0x1cb')],_0x281c4b['startProgressive'])){this[_0xcb7f('0x155')](_0x281c4b,0x1);loggerPredictiveCalls[_0xcb7f('0x77')](_0xcb7f('0x1cc'),_0x281c4b['startProgressive'],_0x281c4b['name']);_0x281c4b['erlangCalls']=0x0;_0x281c4b[_0xcb7f('0x1cd')]=0x0;}else if(_0x520b7f<_0x58797f&&_0x281c4b[_0xcb7f('0x1ce')]==='dropRate'){freeVariablesPredictive(_0x281c4b);loggerPredictive['info'](_0xcb7f('0x1cf'),_0xcb7f('0x1d0'),_0x58797f,_0xcb7f('0x25'),_0x281c4b['name']);}else if(_0x29bf42<_0x281c4b[_0xcb7f('0x1cd')]&&_0x281c4b[_0xcb7f('0x1ce')]===_0xcb7f('0x1d1')){freeVariablesPredictive(_0x281c4b);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x1d2'),_0xcb7f('0x1d3'),_0x29bf42,_0xcb7f('0x1d4'),_0x281c4b[_0xcb7f('0x1cd')],'startProgressive',_0x281c4b[_0xcb7f('0x3b')]);}else if(!ifInterval(_0x281c4b['dialPredictiveInterval'],_0x281c4b[_0xcb7f('0x25')])&&_[_0xcb7f('0x7f')](_0x281c4b['startPredictive'])&&!_[_0xcb7f('0x7f')](_0x281c4b[_0xcb7f('0x25')])){_0x281c4b[_0xcb7f('0x87')]=moment()['format'](_0xcb7f('0xf9'));loggerPredictive[_0xcb7f('0x77')](_0x281c4b[_0xcb7f('0x3b')],_0xcb7f('0x1d5'),_0x281c4b[_0xcb7f('0x87')]);this['averageHandleTime'](_0x281c4b[_0xcb7f('0x1cb')])['then'](this[_0xcb7f('0x1d6')](_0x281c4b))[_0xcb7f('0xaf')](mergeDataErlangB(_0x281c4b))[_0xcb7f('0xaf')](this[_0xcb7f('0x1d7')](_0x281c4b))[_0xcb7f('0xb1')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x281c4b));}else if(!ifInterval(_0x281c4b[_0xcb7f('0x1cb')],_0x281c4b['startPredictive'])){_0x281c4b[_0xcb7f('0x1cd')]=0x0;_0x281c4b[_0xcb7f('0x87')]=moment()[_0xcb7f('0x72')](_0xcb7f('0xf9'));loggerPredictive[_0xcb7f('0x77')](_0x281c4b[_0xcb7f('0x3b')],_0xcb7f('0x1d8'),_0x281c4b[_0xcb7f('0x87')]);clearInterval(_0x281c4b[_0xcb7f('0x88')]);_0x281c4b['handlePredictive']=undefined;this[_0xcb7f('0xb7')](_0x281c4b[_0xcb7f('0x1cb')])['then'](this['getDataPredictive'](_0x281c4b))[_0xcb7f('0xaf')](mergeDataErlangB(_0x281c4b))[_0xcb7f('0xaf')](this[_0xcb7f('0x1d7')](_0x281c4b))[_0xcb7f('0xb1')](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x281c4b));}else if(_0x281c4b[_0xcb7f('0x1c3')]&&_0x270127<_0x281c4b[_0xcb7f('0x1c3')]-_0x2830d6){freeVariablesPredictive(_0x281c4b);loggerPredictive['info'](_0x281c4b[_0xcb7f('0x3b')],_0xcb7f('0x1d9'),_0x270127,')\x20are\x20less\x20than\x20threshold\x20(',_0x281c4b[_0xcb7f('0x1c3')],'-',_0x2830d6,'=',_0x281c4b[_0xcb7f('0x1c3')]-_0x2830d6,')');}else if(_0x281c4b['predictiveIntervalAvailable']&&_0x270127>_0x281c4b[_0xcb7f('0x1c3')]+_0x25f70f){freeVariablesPredictive(_0x281c4b);loggerPredictive[_0xcb7f('0x77')](_0x281c4b['name'],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x270127,_0xcb7f('0x1da'),_0x281c4b[_0xcb7f('0x1c3')],'+',_0x25f70f,'=',_0x281c4b[_0xcb7f('0x1c3')]+_0x25f70f,')');}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x1d6')]=function(_0x4f90ba){var _0x4b0237=this;return function(_0x118215){return new BPromise(function(_0x3c716e,_0x19ec13){_[_0xcb7f('0xcb')](_0x4f90ba,_0x118215[0x0]);if(checkGetDataPredictive(_0x118215[0x0])){var _0x2ee680=_0x4f90ba['predictiveIntervalAvailable']=_0x4f90ba['talking']+_0x4f90ba['available'];var _0x103e55=_0x4f90ba[_0xcb7f('0x1cb')]*0x3c;var _0x34b056=_0x118215[0x0][_0xcb7f('0x64')]+_0x118215[0x0][_0xcb7f('0x63')];var _0x3b1b56=(_0x118215[0x0][_0xcb7f('0x7a')]+_0x118215[0x0][_0xcb7f('0x66')]+_0x118215[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x118215[0x0][_0xcb7f('0x6a')];_0x4f90ba[_0xcb7f('0x68')]=_0x3b1b56>0x0?_0x3b1b56:0x1;switch(_0x4f90ba[_0xcb7f('0x1ce')]){case _0xcb7f('0x1d1'):var _0x72eb26=_0x4f90ba[_0xcb7f('0x1db')]/0x64;return _0x4b0237[_0xcb7f('0x1dc')](_0x2ee680,_0x103e55,_0x34b056,_0x3b1b56,_0x72eb26)[_0xcb7f('0xaf')](function(_0x33197e){return _0x3c716e(_0x33197e);});case'agentBusyFactor':var _0x3524a3=_0x4f90ba[_0xcb7f('0x1db')]/0x64;return _0x4b0237[_0xcb7f('0x1dd')](_0x2ee680,_0x103e55,_0x34b056,_0x3b1b56,_0x3524a3)[_0xcb7f('0xaf')](function(_0x2f6ddf){return _0x3c716e(_0x2f6ddf);});default:return _0x19ec13(msgResponse(_0xcb7f('0x1de'),'Failure',_0xcb7f('0x1df')));}}else{return _0x19ec13(msgResponse(_0xcb7f('0x1de'),'Failure',_0xcb7f('0x1e0')));}});};};Dialer[_0xcb7f('0x19')][_0xcb7f('0x1e1')]=function(_0x5a983c){var _0x534f8e=this;return function(_0x34355f){return new BPromise(function(_0x5c7e4d,_0x223b06){_['merge'](_0x5a983c,_0x34355f[0x0]);if(checkGetDataPredictive(_0x34355f[0x0])){loggerPredictive[_0xcb7f('0x77')](JSON['stringify'](_0x34355f[0x0]));if(_0x5a983c[_0xcb7f('0x1ce')]===_0xcb7f('0x1d1')){return _0x534f8e['getVoiceQueueRtPauses'](_0x5a983c['id'])[_0xcb7f('0xaf')](function(_0x4a08f5){var _0x3b97a0=_0x5a983c[_0xcb7f('0x15b')]-_0x4a08f5[0x0][_0xcb7f('0x1e2')];var _0x20d22d=_0x5a983c[_0xcb7f('0x1cb')]*0x3c;var _0x226562=_0x34355f[0x0][_0xcb7f('0x64')]+_0x34355f[0x0][_0xcb7f('0x63')];var _0x5704ca=(_0x34355f[0x0][_0xcb7f('0x7a')]+_0x34355f[0x0][_0xcb7f('0x66')]+_0x34355f[0x0][_0xcb7f('0x65')])/_0x34355f[0x0][_0xcb7f('0x6a')];var _0x5293d0=_0x5a983c[_0xcb7f('0x1db')]/0x64;_0x5a983c[_0xcb7f('0x69')]=_0x4a08f5[0x0][_0xcb7f('0x1e2')]||0x0;_0x5a983c[_0xcb7f('0x68')]=_0x5704ca>0x0?_0x5704ca:0x1;return _0x534f8e[_0xcb7f('0x1dc')](_0x3b97a0,_0x20d22d,_0x226562,_0x5704ca,_0x5293d0);})[_0xcb7f('0xaf')](function(_0x34f056){return _0x5c7e4d(_0x34f056);})['catch'](function(_0x31b95a){return _0x223b06(msgResponse(_0xcb7f('0x1e3'),_0xcb7f('0x13d'),JSON[_0xcb7f('0x44')](_0x31b95a)));});}if(_0x5a983c[_0xcb7f('0x1ce')]===_0xcb7f('0x1e4')){return _0x534f8e['getVoiceQueueRtPauses'](_0x5a983c['id'])[_0xcb7f('0xaf')](function(_0x2d4414){var _0xc4a91e=_0x5a983c['loggedIn']-_0x2d4414[0x0][_0xcb7f('0x1e2')];var _0x407a7c=_0x5a983c['dialPredictiveInterval']*0x3c;var _0x1f5f89=_0x34355f[0x0][_0xcb7f('0x64')]+_0x34355f[0x0]['predictiveIntervalAvgHoldtime'];var _0x46f5ba=(_0x34355f[0x0][_0xcb7f('0x7a')]+_0x34355f[0x0][_0xcb7f('0x66')]+_0x34355f[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x34355f[0x0][_0xcb7f('0x6a')];var _0x4e72d2=_0x5a983c[_0xcb7f('0x1db')]/0x64;_0x5a983c[_0xcb7f('0x69')]=_0x2d4414[0x0][_0xcb7f('0x1e2')]||0x0;_0x5a983c[_0xcb7f('0x68')]=_0x46f5ba>0x0?_0x46f5ba:0x1;return _0x534f8e[_0xcb7f('0x1dd')](_0xc4a91e,_0x407a7c,_0x1f5f89,_0x46f5ba,_0x4e72d2);})['then'](function(_0x4db54f){return _0x5c7e4d(_0x4db54f);})['catch'](function(_0x2ccbfd){return _0x223b06(msgResponse(_0xcb7f('0x1e3'),_0xcb7f('0x13d'),JSON[_0xcb7f('0x44')](_0x2ccbfd)));});}}else{return _0x223b06(msgResponse(_0xcb7f('0x1de'),_0xcb7f('0x13d'),_0xcb7f('0x1e0')));}});};};Dialer['prototype'][_0xcb7f('0x1d7')]=function(_0x160918){var _0x3a5e85=this;return function(){var _0x195d39=0x0;var _0x464daa=Math[_0xcb7f('0x1c6')](_0x160918[_0xcb7f('0x6c')]*0x3e8);if(_0x464daa>0x0){_0x464daa=_0x464daa<0x64?0x64:_0x464daa;loggerPredictive[_0xcb7f('0x77')](_0x160918[_0xcb7f('0x3b')],_0xcb7f('0x1e5'),_0x464daa,_0xcb7f('0x45'));_0x160918[_0xcb7f('0x88')]=setInterval(function(){_0x3a5e85[_0xcb7f('0x88')](_0x160918);loggerPredictiveCalls[_0xcb7f('0x77')]('[handlePredictive]',_0x195d39+=0x1);},_0x464daa);}else{loggerPredictive[_0xcb7f('0x77')](_0x160918[_0xcb7f('0x3b')],_0xcb7f('0x1e6'));}};};Dialer['prototype'][_0xcb7f('0x1e7')]=function(_0x5c4430,_0x1900ad){var _0x3f2e35=this;return function(_0x5b0229){if(_[_0xcb7f('0x8c')](_0x5b0229)){if(_[_0xcb7f('0xd5')](_0x1900ad[_0xcb7f('0xce')])||!_0x1900ad[_0xcb7f('0x1e8')]){if(_0x5c4430['dialMethod']===_0xcb7f('0x7')){_0x5c4430[_0xcb7f('0x128')]=_[_0xcb7f('0x7f')](_0x5c4430[_0xcb7f('0x128')])?!![]:_0x5c4430[_0xcb7f('0x128')];var _0x80d124=uuid['v4']();_0x3f2e35[_0xcb7f('0xa5')][_0x80d124]=new Action(_0x5c4430,_0x1900ad,_0x80d124);loggerBooked[_0xcb7f('0x77')](_0xcb7f('0x1e9'),_0x80d124,_0xcb7f('0x1ea'),JSON['stringify'](_0x5c4430[_0xcb7f('0x128')]),_0xcb7f('0x1eb'),_0x5c4430[_0xcb7f('0x3b')]);if(_0x5c4430[_0xcb7f('0x128')]){_0x5c4430[_0xcb7f('0x128')]=![];_0x3f2e35[_0xcb7f('0x126')][_0x3f2e35['actions'][_0x80d124]['queue']]=[];ami[_0xcb7f('0xa7')]({'actionid':_0x80d124,'action':_0xcb7f('0x1ec'),'queue':_0x5c4430[_0xcb7f('0x3b')]})['catch'](function(){_0x3f2e35[_0xcb7f('0xac')](_0x5c4430);_0x3f2e35[_0xcb7f('0xf5')]({'active':![],'ContactId':_0x3f2e35['actions'][_0x80d124]['ContactId'],'ListId':_0x3f2e35[_0xcb7f('0xa5')][_0x80d124]['ListId'],'VoiceQueueId':_0x3f2e35[_0xcb7f('0xa5')][_0x80d124][_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3f2e35[_0xcb7f('0xa5')][_0x80d124][_0xcb7f('0xfc')]||undefined})['catch'](loggerCatch(_0xcb7f('0x1ed')));delete _0x3f2e35[_0xcb7f('0xa5')][_0x80d124];});}else{loggerBooked[_0xcb7f('0x77')](_0xcb7f('0x1ee'),JSON[_0xcb7f('0x44')](_0x5c4430['queueStatusComplete']),_0xcb7f('0x1eb'),_0x5c4430[_0xcb7f('0x3b')]);_0x3f2e35[_0xcb7f('0xac')](_0x5c4430);_0x3f2e35[_0xcb7f('0xf5')]({'active':![],'ContactId':_0x3f2e35[_0xcb7f('0xa5')][_0x80d124]['ContactId'],'ListId':_0x3f2e35[_0xcb7f('0xa5')][_0x80d124]['ListId'],'VoiceQueueId':_0x3f2e35[_0xcb7f('0xa5')][_0x80d124][_0xcb7f('0xfb')]||undefined,'CampaignId':_0x3f2e35['actions'][_0x80d124]['CampaignId']||undefined})['catch'](loggerCatch(_0xcb7f('0x1ed')));delete _0x3f2e35[_0xcb7f('0xa5')][_0x80d124];}}else{return _0x3f2e35[_0xcb7f('0x167')](_0x5c4430,_0x1900ad);}}else{if(getDiff(_0x1900ad['scheduledat'])<_0x5c4430['dialRecallMeTimeout']*0x3c){if(_0x1900ad['Agent']&&!_0x1900ad['Agent'][_0xcb7f('0x1ef')]){_0x3f2e35[_0xcb7f('0x1e')][_0xcb7f('0x12c')](_0x1900ad['id'])['finally'](function(){_0x3f2e35[_0xcb7f('0xac')](_0x5c4430);});}else{_0x3f2e35['unlockContact']({'active':![]},_0x1900ad['id'],0x1)[_0xcb7f('0x1c')](function(){_0x3f2e35[_0xcb7f('0xac')](_0x5c4430);});}}else{_0x5c4430[_0xcb7f('0x62')]+=0x1;_0x3f2e35[_0xcb7f('0xac')](_0x5c4430);if(_0x5c4430[_0xcb7f('0x1f0')]){_0x3f2e35[_0xcb7f('0xf5')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x1900ad[_0xcb7f('0xcd')],'ListId':_0x1900ad[_0xcb7f('0xfa')],'VoiceQueueId':_0x1900ad[_0xcb7f('0xfb')]||undefined,'CampaignId':_0x1900ad[_0xcb7f('0xfc')]||undefined})[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0x1f1')));_0x3f2e35['createHistory'](createObjHistory(_0x5c4430,_0x1900ad,_0xcb7f('0x1f2'),0x17,_0xcb7f('0x1f3')))['catch'](loggerCatch(_0xcb7f('0x1f4')));}else{_0x3f2e35[_0xcb7f('0xca')](createObjHistory(_0x5c4430,_0x1900ad,_0xcb7f('0x1f5'),0x16,'RecallFailedTimeout'),_0xcb7f('0x1f6'),_0xcb7f('0x1f7'));}}}}else{_0x5c4430['outboundBlacklistCallsDay']+=0x1;_0x3f2e35['saveInDb'](createObjHistory(_0x5c4430,_0x1900ad,'BLACKLIST',0xd,_0xcb7f('0x1f8')),'[Originate][historyBlacklist]',_0xcb7f('0x1f9'));throw _0xcb7f('0x1fa');}};};Dialer[_0xcb7f('0x19')][_0xcb7f('0x15a')]=function(_0x25f212){var _0xb484f4=this;var _0xc07301=_0x25f212[_0xcb7f('0x1fb')]-_0x25f212[_0xcb7f('0x6b')]-_0x25f212[_0xcb7f('0xbc')];emitCampaignSummary(_0x25f212);if(_0xc07301>0x0){if(_0xc07301>this['maxNumberOriginate']){_0xc07301=this[_0xcb7f('0x23')];}_0x25f212[_0xcb7f('0xbc')]+=_0xc07301;this['getContactDialerIvr'](_0x25f212['id'],_0xc07301,_0x25f212['dialOrderByScheduledAt'],_0x25f212)['then'](function(_0x30beeb){_0x25f212['temp']-=_0xc07301;_0x25f212[_0xcb7f('0xbc')]=_0x25f212[_0xcb7f('0xbc')]>0x0?_0x25f212[_0xcb7f('0xbc')]:0x0;if(!checkContactEmpty(_0x30beeb)){_0x25f212[_0xcb7f('0x39')]=_0xcb7f('0x1fc');logger[_0xcb7f('0x77')](_0xcb7f('0x1fd')+_0x25f212[_0xcb7f('0x3b')]);}else{_0x25f212['originated']+=_0x30beeb[_0xcb7f('0x145')];_0x25f212['message']=_0xcb7f('0x1fe');for(var _0x43294d=0x0;_0x43294d<_0x30beeb[_0xcb7f('0x145')];_0x43294d+=0x1){_0x25f212[_0xcb7f('0x1ff')]+=0x1;if(_['isNil'](_0x30beeb[_0x43294d])||_['isNil'](_0x30beeb[_0x43294d]['Contact'])||_['isNil'](_0x30beeb[_0x43294d][_0xcb7f('0x16b')][_0xcb7f('0x16c')])){_0xb484f4[_0xcb7f('0xc8')](_0xcb7f('0x200'),_0x25f212,_0x30beeb[_0x43294d]);}else{_0xb484f4[_0xcb7f('0xb5')](_[_0xcb7f('0xcc')](_0x30beeb[_0x43294d],[_0xcb7f('0xfc'),_0xcb7f('0x201')]))['then'](_0xb484f4[_0xcb7f('0x1e7')](_0x25f212,_0x30beeb[_0x43294d]))['catch'](_0xb484f4[_0xcb7f('0xc7')](_0xcb7f('0x202'),_0x25f212));}}}})[_0xcb7f('0xb1')](loggerGetContactDialer(_0xcb7f('0x203'),_0x25f212,_0xc07301));}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x155')]=function(_0x2a8b40,_0x312332){var _0x4f9514=this;var _0x57f1da=[];var _0x3566db=_0x312332>=0x1?_0x312332:0x1;if(_0x2a8b40['dialMethod']===_0xcb7f('0x7')){_0x3566db=0x1;}var _0xcf2cf=Math[_0xcb7f('0x1c6')](_0x2a8b40['available']*_0x3566db)-_0x2a8b40[_0xcb7f('0x6b')]-_0x2a8b40['temp'];emitVoiceQueueSummary(_0x2a8b40);if(_0x2a8b40['dialLimitQueue']>0x0){var _0x3d0312=_0x2a8b40[_0xcb7f('0x204')]-_0x2a8b40['originated']-_0x2a8b40[_0xcb7f('0x51')]-_0x2a8b40[_0xcb7f('0xbc')]-_0x2a8b40[_0xcb7f('0x4d')];if(_0xcf2cf>_0x3d0312){_0xcf2cf=_0x3d0312;}}if(_0xcf2cf>0x0){if(_0x2a8b40[_0xcb7f('0x55')]===_0xcb7f('0x7')){_0xcf2cf=0x1;}if(_0xcf2cf>this['maxNumberOriginate']){_0xcf2cf=this[_0xcb7f('0x23')];}_0x2a8b40[_0xcb7f('0xbc')]+=_0xcf2cf;for(var _0x1d8553 in this[_0xcb7f('0x21')]){if(typeof this[_0xcb7f('0x21')][_0x1d8553]!==_0xcb7f('0x92')){if(this[_0xcb7f('0x21')][_0x1d8553][_0xcb7f('0xa0')]===_0xcb7f('0x205')&&this[_0xcb7f('0x21')][_0x1d8553]['status']==='reachable'){_0x57f1da[_0xcb7f('0x14b')](this['agents'][_0x1d8553]['id']);}}}this['getContactDialer'](_0x2a8b40['id'],_0x57f1da,_0xcf2cf,_0x2a8b40[_0xcb7f('0x206')],_0x2a8b40)[_0xcb7f('0xaf')](function(_0x3cb92b){_0x2a8b40['temp']-=_0xcf2cf;_0x2a8b40['temp']=_0x2a8b40[_0xcb7f('0xbc')]>0x0?_0x2a8b40[_0xcb7f('0xbc')]:0x0;if(!checkContactEmpty(_0x3cb92b)){_0x4f9514['countReScheduled'](_0x2a8b40)[_0xcb7f('0xaf')](sendMessageReschedule(_0x2a8b40))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xb2')));}else{_0x2a8b40['originated']+=_0x3cb92b['length'];_0x2a8b40['message']=_0x2a8b40[_0xcb7f('0x55')]===_0xcb7f('0x7')?_0xcb7f('0x207'):_0xcb7f('0x1fe');for(var _0xcadf46=0x0;_0xcadf46<_0x3cb92b[_0xcb7f('0x145')];_0xcadf46+=0x1){if(_[_0xcb7f('0xd5')](_0x3cb92b[_0xcadf46])||_[_0xcb7f('0xd5')](_0x3cb92b[_0xcadf46][_0xcb7f('0x16b')])||_['isNil'](_0x3cb92b[_0xcadf46]['Contact'][_0xcb7f('0x16c')])){_0x4f9514['emptyContact'](_0xcb7f('0x200'),_0x2a8b40,_0x3cb92b[_0xcadf46]);}else{_0x4f9514[_0xcb7f('0xb3')](_[_0xcb7f('0xcc')](_0x3cb92b[_0xcadf46],[_0xcb7f('0xfb'),'Contact.phone']))[_0xcb7f('0xaf')](_0x4f9514[_0xcb7f('0x1e7')](_0x2a8b40,_0x3cb92b[_0xcadf46]))[_0xcb7f('0xb1')](_0x4f9514['loggerHandler'](_0xcb7f('0x200'),_0x2a8b40));}}}})[_0xcb7f('0xb1')](loggerGetContactDialer('[getContactDialer2]',_0x2a8b40,_0xcf2cf));}};Dialer[_0xcb7f('0x19')][_0xcb7f('0x88')]=function(_0x1a3b4f){if(_0x1a3b4f['dialLimitQueue']>0x0){var _0x57bf97=_0x1a3b4f[_0xcb7f('0x204')]-_0x1a3b4f[_0xcb7f('0x6b')]-_0x1a3b4f[_0xcb7f('0x51')];if(_0x57bf97>0x0){this['tryOriginatePredictive'](_0x1a3b4f);}else{loggerPredictiveCalls['info'](_0xcb7f('0x208'));}}else{this[_0xcb7f('0x209')](_0x1a3b4f);}};Dialer[_0xcb7f('0x19')]['tryOriginatePredictive']=function(_0x2d8a24){var _0x1b55df=this;var _0x28c1ea=[];_0x2d8a24[_0xcb7f('0x6b')]+=0x1;for(var _0x14b637 in this['agents']){if(typeof this[_0xcb7f('0x21')][_0x14b637]!==_0xcb7f('0x92')){if(this[_0xcb7f('0x21')][_0x14b637][_0xcb7f('0xa0')]==='not_inuse'&&this['agents'][_0x14b637][_0xcb7f('0xa8')]===_0xcb7f('0xd4')){_0x28c1ea[_0xcb7f('0x14b')](this[_0xcb7f('0x21')][_0x14b637]['id']);}}}this[_0xcb7f('0xbb')](_0x2d8a24['id'],_0x28c1ea,0x1,_0x2d8a24[_0xcb7f('0x206')],_0x2d8a24)['then'](function(_0x5f4de8){if(!checkContactEmpty(_0x5f4de8)){checkContactLowerLimitOriginate(_0x2d8a24,0x1,0x0);_0x1b55df[_0xcb7f('0xb0')](_0x2d8a24)[_0xcb7f('0xaf')](sendMessageReschedule(_0x2d8a24))[_0xcb7f('0xb1')](loggerCatch(_0xcb7f('0xb2')));}else{_0x2d8a24[_0xcb7f('0x39')]=_0xcb7f('0x1fe');if(_['isNil'](_0x5f4de8[0x0])||_['isNil'](_0x5f4de8[0x0][_0xcb7f('0x16b')])||_[_0xcb7f('0xd5')](_0x5f4de8[0x0][_0xcb7f('0x16b')]['phone'])){_0x1b55df['emptyContact'](_0xcb7f('0x200'),_0x2d8a24,_0x5f4de8[0x0]);}else{_0x1b55df[_0xcb7f('0xb3')](_[_0xcb7f('0xcc')](_0x5f4de8[0x0],[_0xcb7f('0xfb'),_0xcb7f('0x201')]))[_0xcb7f('0xaf')](_0x1b55df[_0xcb7f('0x1e7')](_0x2d8a24,_0x5f4de8[0x0]))[_0xcb7f('0xb1')](_0x1b55df[_0xcb7f('0xc7')](_0xcb7f('0x20a'),_0x2d8a24));}}})[_0xcb7f('0xb1')](loggerGetContactDialer(_0xcb7f('0x20b'),_0x2d8a24,0x1));emitVoiceQueueSummary(_0x2d8a24);};Dialer['prototype'][_0xcb7f('0x1dc')]=function(_0x4356a7,_0x5576de,_0x3cc4b5,_0x390c49,_0x3a5bb4,_0x570eec){loggerPredictive['info'](_0xcb7f('0x20c'));loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x20d'),_0x4356a7);loggerPredictive['info']('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5576de);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x20e'),_0x3cc4b5);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x20f'),_0x390c49);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x210'),_0x3a5bb4);loggerPredictive[_0xcb7f('0x77')]('---------------------------');return new BPromise(function(_0x472878,_0x42a99d){if(_0x4356a7<=0x0||isNaN(_0x4356a7)){return _0x42a99d(msgResponse(_0xcb7f('0x211'),_0xcb7f('0x43'),_0xcb7f('0x212')+_0x4356a7));}if(_0x3cc4b5<=0x0||isNaN(_0x3cc4b5)){return _0x42a99d(msgResponse('[abandonmentRate]',_0xcb7f('0x43'),_0xcb7f('0x213')+_0x3cc4b5));}if(_0x390c49<=0x0||isNaN(_0x390c49)){return _0x42a99d(msgResponse(_0xcb7f('0x211'),_0xcb7f('0x43'),_0xcb7f('0x214')+_0x390c49));}if(_0x5576de<=0x0||isNaN(_0x5576de)){return _0x42a99d(msgResponse(_0xcb7f('0x211'),_0xcb7f('0x43'),'interval\x20=\x20'+_0x5576de));}if(_0x3a5bb4<=0x0||isNaN(_0x3a5bb4)){return _0x42a99d(msgResponse('[abandonmentRate]',_0xcb7f('0x43'),_0xcb7f('0x215')+_0x3a5bb4));}_0x570eec=_0x570eec||0x0;var _0x27ef04=0x1/_0x3cc4b5;var _0x394d66=0x0;var _0x1ac9e6=0x0;var _0x5bdbed=0x0;var _0x2a9d40=0x0;for(var _0x2009a3=0x0;_0x5bdbed<_0x3a5bb4;_0x2009a3+=0x1){_0x1ac9e6=_0x2009a3/_0x5576de;_0x394d66=(_0x390c49*_0x1ac9e6+_0x570eec)/_0x27ef04;_0x5bdbed=erlangb(_0x394d66,_0x4356a7);_0x2a9d40=_0x394d66/_0x4356a7*(0x1-erlangb(_0x394d66,_0x4356a7));}return _0x472878({'erlangCalls':_0x2009a3,'erlangCallToSecond':_0x5576de/_0x2009a3,'erlangAbandonmentRate':_0x5bdbed,'erlangBusyFactor':_0x2a9d40});});};Dialer[_0xcb7f('0x19')][_0xcb7f('0x1dd')]=function(_0x1cae02,_0x5f0028,_0xa3e24c,_0x3e02a0,_0x2d3bb6,_0x3851ac){loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x216'));loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x20d'),_0x1cae02);loggerPredictive['info'](_0xcb7f('0x217'),_0x5f0028);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x20e'),_0xa3e24c);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x20f'),_0x3e02a0);loggerPredictive['info'](_0xcb7f('0x218'),_0x2d3bb6);loggerPredictive[_0xcb7f('0x77')](_0xcb7f('0x7d'));return new BPromise(function(_0x46834e,_0x199f67){if(_0x1cae02<=0x0||isNaN(_0x1cae02)){return _0x199f67(msgResponse(_0xcb7f('0x219'),_0xcb7f('0x43'),_0xcb7f('0x212')+_0x1cae02));}if(_0xa3e24c<=0x0||isNaN(_0xa3e24c)){return _0x199f67(msgResponse(_0xcb7f('0x219'),_0xcb7f('0x43'),_0xcb7f('0x213')+_0xa3e24c));}if(_0x3e02a0<=0x0||isNaN(_0x3e02a0)){return _0x199f67(msgResponse(_0xcb7f('0x219'),_0xcb7f('0x43'),_0xcb7f('0x214')+_0x3e02a0));}if(_0x5f0028<=0x0||isNaN(_0x5f0028)){return _0x199f67(msgResponse('[busyFactor]',_0xcb7f('0x43'),'interval\x20=\x20'+_0x5f0028));}if(_0x2d3bb6<=0x0||isNaN(_0x2d3bb6)){return _0x199f67(msgResponse(_0xcb7f('0x219'),_0xcb7f('0x43'),_0xcb7f('0x21a')+_0x2d3bb6));}_0x3851ac=_0x3851ac||0x0;var _0x46ab84=0x1/_0xa3e24c;var _0xa5ab5d=0x0;var _0x102b04=0x0;var _0x43e6cd=0x0;var _0x31a95f=0x0;for(var _0x92e5ed=0x0;_0x31a95f<_0x2d3bb6;_0x92e5ed+=0x1){_0x102b04=_0x92e5ed/_0x5f0028;_0xa5ab5d=(_0x3e02a0*_0x102b04+_0x3851ac)/_0x46ab84;_0x43e6cd=erlangb(_0xa5ab5d,_0x1cae02);_0x31a95f=_0xa5ab5d/_0x1cae02*(0x1-erlangb(_0xa5ab5d,_0x1cae02));}return _0x46834e({'erlangCalls':_0x92e5ed,'erlangCallToSecond':_0x5f0028/_0x92e5ed,'erlangAbandonmentRate':_0x43e6cd,'erlangBusyFactor':_0x31a95f});});};module[_0xcb7f('0x21b')]=Dialer;
\ No newline at end of file
+var _0x5668=['[originate][error]','originate\x20action\x20Error','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact][Machine]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','object','[callProgressDetecting]','evt\x20is\x20undefine','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','Abandoned','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','check\x20predictive\x20is\x20not\x20undefine','[startMethodPredictive][StartProgressive]','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','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','Unknown\x20Predictive','[getDataPredictive]','check\x20failure','getDataPredictiveOld','loggedIn','outboundQueuePauses','[CatchErlangB]','busyFactor','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','scheduledat','dialRecallMeTimeout','Agent','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','[Originate][historyBlacklist]','limitCalls','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','dialOrderByScheduledAt','loggerHandler','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','interval\x20=\x20','Umin\x20=\x20','exports','util','lodash','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','syncQueueSummary','defaults','localhost','socket.io-emitter','redis','../rpc/cmHopperHistory','../rpc/cmHopperBlack','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','tail','finally','sequence','preview','voiceQueues','campaigns','agents','maxNumberOriginate','channels','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','message','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','name','isEmpty','Error','stringify','milliseconds','seconds','outbound','strategy','available','sumDuration','talking','total','type','unmanaged','abandoned','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','format','voice:queue:%s','voice_queue:save','campaign:ivr:%s','campaign:save','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAnsweredCalls','Dropped\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','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','merge','diff','clearing\x20variable\x20start\x20progressive','handlePredictive','clearing\x20variable\x20handle\x20predictive','ivr','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','stack','length','originated','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','[getContactDialer2][ReScheduled]','contactsRescheduled','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','pTalking','[syncQueueSummary]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','is\x20disactive','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','statedesc','endtime','starttime','prototype','[uniqueid]','clearZombieChannels','actions','Action','status','channel','catch','No\x20such\x20channel','queue','updateOriginated','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','getVoiceQueueRtPauses','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','emptyContact','notFound','saveInDb','pick','ContactId','ListId','UserId','VoiceQueueId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','active','trunks','SIP/%s','reachable','unmonitored','uniqueid','isNil','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','HANGUP','outboundAnswerAgiCallsDay','state','HangupInAMD','membername','AMD','emit','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','value','MACHINE','countmachineretry','countglobal','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','CampaignId','[syncHangupInAMDIvr]','Machine','dialMachineMaxRetry','createStateFinal','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr]','cause-txt','Unknow','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','droptime','responsetime','outboundDropCallsDayTimeout','predictiveIntervalErlangCallsDroppedCalls','Drop','dropreason','TIMEOUT','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','calleridname','calleridnum','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','actionid','locked','paused','stateinterface','rrmemory','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','roundrobin','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','run','[booked][RR][finaly]','Agent:\x20','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncCampaigns','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','\x20Intervals\x20is\x20empty\x20','timezones','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','content','indexOf','true','some','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','Timezone:\x20','progressive','handlePower','power','dialPowerLevel','Queue','launchHandleIvr','handleIvr','checkIfTime','dialGlobalInterval','dialTimezone','[syncQueueSummary]','checkIsTrunkReachable','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','actionOriginate','originate','voiceQueue\x20is\x20undefine','Contact','phone','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialQueueTimeout','ACTIVE','XMD-AMDINITIALSILENCE','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','tags','createdAt','%s%s','XMD-','toUpper','callerid','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','trim','dialCutDigit','substring'];(function(_0x1ed8ae,_0x3f5fc0){var _0x3275b5=function(_0x253184){while(--_0x253184){_0x1ed8ae['push'](_0x1ed8ae['shift']());}};_0x3275b5(++_0x3f5fc0);}(_0x5668,0x8b));var _0x8566=function(_0x4117a0,_0x2cd822){_0x4117a0=_0x4117a0-0x0;var _0x3a891=_0x5668[_0x4117a0];return _0x3a891;};'use strict';var util=require(_0x8566('0x0'));var _=require(_0x8566('0x1'));var BPromise=require(_0x8566('0x2'));var uuid=require(_0x8566('0x3'));var moment=require(_0x8566('0x4'));var rr=require('rr');var md5=require(_0x8566('0x5'));var Redis=require(_0x8566('0x6'));var ut=require(_0x8566('0x7'));var config=require(_0x8566('0x8'));var logger=require(_0x8566('0x9'))(_0x8566('0xa'));var loggerBooked=require(_0x8566('0x9'))(_0x8566('0xb'));var loggerPredictive=require('../../../config/logger')(_0x8566('0xc'));var loggerPredictiveCalls=require(_0x8566('0x9'))('predictiveCalls');var loggerSyncQueueSummary=require('../../../config/logger')(_0x8566('0xd'));var ami=require('../ami');config['redis']=_[_0x8566('0xe')](config['redis'],{'host':_0x8566('0xf'),'port':0x18eb});var io=require(_0x8566('0x10'))(new Redis(config[_0x8566('0x11')]));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0x8566('0x12'));var cmHopperBlack=require(_0x8566('0x13'));var voiceQueueRt=require('../rpc/voiceQueueRt');var Action=require('./action');var History=require('./history');var Final=require('./final');var AgentComplete=require(_0x8566('0x14'));var QueueCallerAbandon=require(_0x8566('0x15'));var Hangup=require(_0x8566('0x16'));var ipAgi=process[_0x8566('0x17')][_0x8566('0x18')]||'127.0.0.1';var strategy={'rrmemory':'rrmemory','roundrobin':'roundrobin'};var Sequence=function(){};Sequence['prototype']['enqueue']=function(_0x17abd3){this[_0x8566('0x19')]=this[_0x8566('0x19')]?this[_0x8566('0x19')][_0x8566('0x1a')](_0x17abd3):_0x17abd3();};function Dialer(_0x4b777d,_0xc5b13f){this[_0x8566('0x1b')]=new Sequence();this[_0x8566('0x1c')]=_0xc5b13f;this['voiceQueues']=_0x4b777d[_0x8566('0x1d')];this[_0x8566('0x1e')]=_0x4b777d[_0x8566('0x1e')];this['agents']=_0x4b777d[_0x8566('0x1f')];this['trunks']=_0x4b777d['trunks'];this[_0x8566('0x20')]=config['maxNumberOriginate']||0x2;this[_0x8566('0x21')]={};this['actions']={};this[_0x8566('0x22')]={};this[_0x8566('0x23')]={};this[_0x8566('0x24')]={};this[_0x8566('0x25')]={};this[_0x8566('0x26')]={};this[_0x8566('0x27')]={};this[_0x8566('0x28')]={};this['queueBookedRR']={};ami['on']('agentconnect',this[_0x8566('0x29')][_0x8566('0x2a')](this));ami['on'](_0x8566('0x2b'),this[_0x8566('0x2c')]['bind'](this));ami['on'](_0x8566('0x2d'),this[_0x8566('0x2e')]['bind'](this));ami['on'](_0x8566('0x2f'),this[_0x8566('0x30')]['bind'](this));ami['on'](_0x8566('0x31'),this[_0x8566('0xd')][_0x8566('0x2a')](this));ami['on']('hangup',this[_0x8566('0x32')][_0x8566('0x2a')](this));ami['on'](_0x8566('0x33'),this[_0x8566('0x34')][_0x8566('0x2a')](this));ami['on'](_0x8566('0x35'),this[_0x8566('0x36')]['bind'](this));ami['on'](_0x8566('0x37'),this[_0x8566('0x38')][_0x8566('0x2a')](this));ami['on'](_0x8566('0x39'),this[_0x8566('0x3a')][_0x8566('0x2a')](this));this[_0x8566('0x3b')]();this[_0x8566('0x3c')]();}function isNotNull(_0x504722){return _0x504722!==null&&!_[_0x8566('0x3d')](_0x504722);}function checkIsLoggedIn(_0x5573c6,_0x5f05e8){return function(){if(_0x5f05e8<=0x0){_0x5573c6[_0x8566('0x3e')]=_0x8566('0x3f');throw _0x5573c6['name']+_0x8566('0x40');}};}function isActive(_0xca3ff9){return _0xca3ff9;}function checkIsActive(_0x26fcd2,_0xc8a9fb){return function(){if(!isActive(_0xc8a9fb)){_0x26fcd2[_0x8566('0x3e')]=_0x8566('0x41');throw _0x26fcd2['name']+'\x20NOT\x20Active';}};}function checkInterval(_0x4525a8){return function(){if(!isNotNull(_0x4525a8[_0x8566('0x42')])){_0x4525a8['message']=_0x8566('0x43');throw _0x4525a8['name']+_0x8566('0x44');}if(!isNotNull(_0x4525a8['Interval'][_0x8566('0x45')])){_0x4525a8[_0x8566('0x3e')]='INTERVAL_IS_NULL';throw _0x4525a8[_0x8566('0x46')]+_0x8566('0x44');}if(!isNotNull(_[_0x8566('0x47')](_0x4525a8[_0x8566('0x42')][_0x8566('0x45')]))){_0x4525a8[_0x8566('0x3e')]=_0x8566('0x43');throw _0x4525a8[_0x8566('0x46')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x1ca560,_0x3eb428,_0x426642){return{'action':_0x1ca560,'response':_0x3eb428,'message':_0x426642,'stack':_0x426642};}function myreject(_0x579c6a){return function(_0x1852f3){return _0x579c6a(msgResponse('[ifTime][Action]',_0x8566('0x48'),JSON[_0x8566('0x49')](_0x1852f3)));};}function getSeconds(_0x9147bb,_0xe413e3){var _0x2db339=moment(_0x9147bb)[_0x8566('0x4a')](0x0);var _0x2f9d23=moment(_0xe413e3)['milliseconds'](0x0);return _0x2db339['diff'](_0x2f9d23,_0x8566('0x4b'));}function emit(_0x55ff07,_0x337aea,_0x102994){io['to'](_0x55ff07)['emit'](_0x337aea,_0x102994);}function emitVoiceQueueSummary(_0x3cc4af){if(_0x3cc4af['type']===_0x8566('0x4c')){var _0x538cea={'id':_0x3cc4af['id'],'name':_0x3cc4af[_0x8566('0x46')],'strategy':_0x3cc4af[_0x8566('0x4d')],'answered':_0x3cc4af['answered'],'available':_0x3cc4af[_0x8566('0x4e')],'loggedIn':_0x3cc4af['loggedIn'],'pTalking':_0x3cc4af['pTalking'],'sumBillable':_0x3cc4af['sumBillable'],'sumDuration':_0x3cc4af[_0x8566('0x4f')],'sumHoldTime':_0x3cc4af['sumHoldTime']||0x0,'talking':_0x3cc4af[_0x8566('0x50')],'total':_0x3cc4af[_0x8566('0x51')],'type':_0x3cc4af[_0x8566('0x52')],'unmanaged':_0x3cc4af[_0x8566('0x53')],'abandoned':_0x3cc4af[_0x8566('0x54')],'waiting':_0x3cc4af['waiting'],'loggedInDb':_0x3cc4af[_0x8566('0x55')],'dialActive':_0x3cc4af[_0x8566('0x56')],'dialMethod':_0x3cc4af[_0x8566('0x57')],'dialOriginateCallerIdName':_0x3cc4af[_0x8566('0x58')],'dialOriginateCallerIdNumber':_0x3cc4af[_0x8566('0x59')],'dialOriginateTimeout':_0x3cc4af[_0x8566('0x5a')],'dialPrefix':_0x3cc4af[_0x8566('0x5b')],'outboundAnswerAgiCallsDay':_0x3cc4af['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x3cc4af[_0x8566('0x5c')],'outboundBlacklistCallsDay':_0x3cc4af[_0x8566('0x5d')],'outboundBusyCallsDay':_0x3cc4af[_0x8566('0x5e')],'outboundCongestionCallsDay':_0x3cc4af[_0x8566('0x5f')],'outboundDropCallsDayACS':_0x3cc4af['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x3cc4af[_0x8566('0x60')],'outboundDropCallsDayTimeout':_0x3cc4af['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x3cc4af[_0x8566('0x61')],'outboundNoSuchCallsDay':_0x3cc4af[_0x8566('0x62')],'outboundOriginateFailureCallsDay':_0x3cc4af['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x3cc4af[_0x8566('0x63')],'outboundRejectCallsDay':_0x3cc4af['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x3cc4af[_0x8566('0x64')],'predictiveIntervalAnsweredCalls':_0x3cc4af['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x3cc4af[_0x8566('0x65')],'predictiveIntervalAvgTalktime':_0x3cc4af[_0x8566('0x66')],'predictiveIntervalDroppedCallsCallersExit':_0x3cc4af[_0x8566('0x67')],'predictiveIntervalDroppedCallsTimeout':_0x3cc4af[_0x8566('0x68')],'predictiveIntervalErlangCalls':_0x3cc4af['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x3cc4af['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x3cc4af[_0x8566('0x69')],'predictiveIntervalMultiplicativeFactor':_0x3cc4af[_0x8566('0x6a')],'predictiveIntervalPauses':_0x3cc4af[_0x8566('0x6b')],'predictiveIntervalAvailable':_0x3cc4af['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x3cc4af[_0x8566('0x6c')],'message':_0x3cc4af[_0x8566('0x3e')],'originated':_0x3cc4af['originated'],'erlangCalls':_0x3cc4af[_0x8566('0x6d')],'erlangCallToSecond':_0x3cc4af[_0x8566('0x6e')],'erlangAbandonmentRate':_0x3cc4af[_0x8566('0x6f')],'erlangBusyFactor':_0x3cc4af[_0x8566('0x70')],'startPredictive':_0x3cc4af[_0x8566('0x25')],'startProgressive':_0x3cc4af[_0x8566('0x26')]};if(_0x3cc4af[_0x8566('0x71')]){_0x538cea['Trunk']={'id':_0x3cc4af[_0x8566('0x71')]['id'],'name':_0x3cc4af[_0x8566('0x71')][_0x8566('0x46')],'active':_0x3cc4af[_0x8566('0x71')]['active'],'callerid':_0x3cc4af[_0x8566('0x71')]['callerid']};}if(_0x3cc4af[_0x8566('0x42')]){_0x538cea[_0x8566('0x42')]={'id':_0x3cc4af[_0x8566('0x42')]['id'],'name':_0x3cc4af[_0x8566('0x42')][_0x8566('0x46')]};}var _0x58e580=md5(JSON[_0x8566('0x49')](_0x538cea));if(_0x3cc4af['md5']!==_0x58e580){_0x3cc4af['md5']=_0x58e580;emit(util[_0x8566('0x72')](_0x8566('0x73'),_0x538cea[_0x8566('0x46')]),_0x8566('0x74'),_0x538cea);}}}function emitCampaignSummary(_0x2da4ce){if(_0x2da4ce[_0x8566('0x52')]==='ivr'){emit(util[_0x8566('0x72')](_0x8566('0x75'),_0x2da4ce[_0x8566('0x46')]),_0x8566('0x76'),_0x2da4ce);}}function checkGetDataPredictive(_0x7cb44c){if(isNotNull(_0x7cb44c)&&!_[_0x8566('0x47')](_0x7cb44c)){loggerPredictive[_0x8566('0x77')](_0x8566('0x78'));loggerPredictive[_0x8566('0x77')](_0x8566('0x79'),_0x7cb44c[_0x8566('0x6c')]);loggerPredictive['info'](_0x8566('0x7a'),_0x7cb44c[_0x8566('0x7b')]);loggerPredictive[_0x8566('0x77')](_0x8566('0x7c'),_0x7cb44c[_0x8566('0x68')]);loggerPredictive['info'](_0x8566('0x7d'),_0x7cb44c[_0x8566('0x67')]);loggerPredictive['info'](_0x8566('0x7e'),_0x7cb44c[_0x8566('0x65')]);loggerPredictive[_0x8566('0x77')](_0x8566('0x7f'),_0x7cb44c[_0x8566('0x66')]);loggerPredictive[_0x8566('0x77')]('---------------------------');if(_0x7cb44c[_0x8566('0x6c')]>0x0){if(!_[_0x8566('0x3d')](_0x7cb44c[_0x8566('0x66')])&&_0x7cb44c['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive[_0x8566('0x77')](_0x8566('0x80'));if(!_[_0x8566('0x3d')](_0x7cb44c['predictiveIntervalAvgHoldtime'])&&_0x7cb44c['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0x8566('0x77')](_0x8566('0x81'));}else{loggerPredictive[_0x8566('0x77')](_0x8566('0x82'));}}else{loggerPredictive['info'](_0x8566('0x83'));}return![];}function mergeDataErlangB(_0x1ce401){return function(_0x547aac){loggerPredictive['info'](_0x8566('0x84'));loggerPredictive[_0x8566('0x77')](_0x8566('0x85'),_0x547aac[_0x8566('0x6d')]);loggerPredictive[_0x8566('0x77')](_0x8566('0x86'),_0x547aac[_0x8566('0x6e')]);loggerPredictive[_0x8566('0x77')](_0x8566('0x87'),_0x547aac[_0x8566('0x6f')]);loggerPredictive[_0x8566('0x77')](_0x8566('0x88'),_0x547aac['erlangBusyFactor']);loggerPredictive[_0x8566('0x77')](_0x8566('0x87'),_0x547aac['erlangAbandonmentRate']);loggerPredictive[_0x8566('0x77')](_0x8566('0x89'));_[_0x8566('0x8a')](_0x1ce401,_0x547aac);};}function getDiff(_0x2f108f){var _0x4b74c8=moment()[_0x8566('0x4a')](0x0);var _0x55fbe6=moment(_0x2f108f)['milliseconds'](0x0);return _0x4b74c8[_0x8566('0x8b')](_0x55fbe6,'seconds');}function ifInterval(_0x5c6d0e,_0x139068){if(_['isUndefined'](_0x139068)){return![];}return getDiff(_0x139068)<_0x5c6d0e*0x3c;}function freeVariablesPredictive(_0x428089){if(isNotNull(_0x428089)){if(!_[_0x8566('0x3d')](_0x428089[_0x8566('0x26')])){_0x428089['startProgressive']=undefined;loggerPredictive[_0x8566('0x77')](_0x428089[_0x8566('0x46')],_0x8566('0x8c'));}if(!_[_0x8566('0x3d')](_0x428089[_0x8566('0x25')])){_0x428089[_0x8566('0x25')]=undefined;loggerPredictive['info'](_0x428089[_0x8566('0x46')],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x8566('0x3d')](_0x428089['handlePredictive'])){clearInterval(_0x428089[_0x8566('0x8d')]);_0x428089[_0x8566('0x8d')]=undefined;loggerPredictive['info'](_0x428089[_0x8566('0x46')],_0x8566('0x8e'));}}}function erlangb(_0x1b4214,_0x24150e){if(_0x24150e===0x0){return 0x0;}var _0x19acbe=0x1;for(var _0x569af8=0x1;_0x569af8<=_0x24150e;_0x569af8+=0x1){_0x19acbe=0x1+_0x19acbe*_0x569af8/_0x1b4214;}return 0x1/_0x19acbe;}function isVoiceQueueOutbound(_0x1f373b){return _0x1f373b==='outbound';}function isNotPreview(_0x2da8b6){return _0x2da8b6!=='preview';}function isCampaignIvr(_0x3ec24e){return _0x3ec24e===_0x8566('0x8f');}function getCallerId(_0x210319,_0x1c0ebe,_0x3bfbf3){if(!_[_0x8566('0x3d')](_0x3bfbf3)&&typeof _0x3bfbf3===_0x8566('0x90')&&!_[_0x8566('0x47')](_0x3bfbf3)){if(!_[_0x8566('0x3d')](_0x1c0ebe)&&typeof _0x1c0ebe==='string'&&!_[_0x8566('0x47')](_0x1c0ebe)){return util[_0x8566('0x72')](_0x8566('0x91'),_0x1c0ebe,_0x3bfbf3);}return util[_0x8566('0x72')]('\x22%s\x22\x20<%s>',_0x3bfbf3,_0x3bfbf3);}if(!_[_0x8566('0x3d')](_0x210319)&&typeof _0x210319===_0x8566('0x90')&&!_[_0x8566('0x47')](_0x210319)){return _0x210319;}return _0x8566('0x92');}function loggerCatchQueueSummary(_0x572d66,_0xd46d84){return function(_0x28afe){freeVariablesPredictive(_0xd46d84);emitVoiceQueueSummary(_0xd46d84);emitCampaignSummary(_0xd46d84);loggerSyncQueueSummary[_0x8566('0x93')](_0x572d66,util[_0x8566('0x94')](_0x28afe,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x3a4821,_0x3775db){return function(_0x32c5b7){loggerPredictive[_0x8566('0x93')](_0x3775db[_0x8566('0x46')],_0x3a4821);loggerPredictive[_0x8566('0x93')](_0x32c5b7[_0x8566('0x95')]);freeVariablesPredictive(_0x3775db);};}function loggerCatch(_0x11884b){return function(_0x4dd774){logger[_0x8566('0x93')](_0x11884b,util['inspect'](_0x4dd774,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x21f400){return _0x21f400&&!_[_0x8566('0x3d')](_0x21f400)&&_0x21f400[_0x8566('0x96')]>0x0;}function decremetOriginate(_0xf49d96){if(!_[_0x8566('0x3d')](_0xf49d96)&&_0xf49d96!==null){if(typeof _0xf49d96[_0x8566('0x97')]!==_0x8566('0x98')){if(_0xf49d96[_0x8566('0x97')]>0x0){_0xf49d96[_0x8566('0x97')]-=0x1;}else{logger[_0x8566('0x93')](_0x8566('0x99'));}}}else{logger[_0x8566('0x93')](_0x8566('0x9a'));}}function checkContactLowerLimitOriginate(_0x135d94,_0x419c46,_0x58e772){if(_0x419c46>_0x58e772){for(var _0x50f870=0x0;_0x50f870<_0x419c46-_0x58e772;_0x50f870+=0x1){decremetOriginate(_0x135d94);}}}function loggerGetContactDialer(_0x1e8773,_0x1d4a3f,_0x2f9091){return function(_0x1349a1){checkContactLowerLimitOriginate(_0x1d4a3f,_0x2f9091,0x0);logger[_0x8566('0x93')](_0x1e8773,util['inspect'](_0x1349a1,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x3a1a43){return function(_0x1f5072){if(isNotNull(_0x1f5072)&&isNotNull(_0x1f5072[0x0])){if(_0x1f5072[0x0]['contactsRescheduled']>0x0){_0x3a1a43[_0x8566('0x3e')]='RESCHEDULED_CONTACTS';logger[_0x8566('0x77')](_0x8566('0x9b')+_0x3a1a43[_0x8566('0x46')],_0x1f5072[0x0][_0x8566('0x9c')],_0x8566('0x9d'));}else{_0x3a1a43['message']=_0x8566('0x9e');logger[_0x8566('0x77')](_0x8566('0x9f')+_0x3a1a43[_0x8566('0x46')]);}}};}function notSendMessagesQueue(_0x5f57ea){if(_0x5f57ea['sendMessageOneNotActive']){freeVariablesPredictive(_0x5f57ea);if(_0x5f57ea[_0x8566('0x97')]===0x0&&_0x5f57ea['talking']===0x0&&_0x5f57ea['waiting']===0x0&&(_0x5f57ea[_0x8566('0xa0')]||0x0)===0x0){_0x5f57ea['sendMessageOneNotActive']=![];_0x5f57ea[_0x8566('0x4e')]=0x0;_0x5f57ea[_0x8566('0x3e')]=_0x8566('0x41');loggerSyncQueueSummary['error'](_0x8566('0xa1'),_0x5f57ea['name'],'is\x20not\x20active');}else{_0x5f57ea['message']=_0x8566('0xa2');loggerSyncQueueSummary[_0x8566('0x93')](_0x8566('0xa1'),_0x5f57ea[_0x8566('0x46')],_0x8566('0xa3'));}emitVoiceQueueSummary(_0x5f57ea);}}function notSendMessagesCampaign(_0x4539c4){if(_0x4539c4[_0x8566('0xa4')]){if(_0x4539c4[_0x8566('0x97')]===0x0){_0x4539c4['sendMessageOneNotActive']=![];_0x4539c4[_0x8566('0x3e')]='NOT_ACTIVE';loggerSyncQueueSummary[_0x8566('0x93')](_0x8566('0xa5'),_0x4539c4['name'],_0x8566('0xa6'));}else{_0x4539c4['message']=_0x8566('0xa2');loggerSyncQueueSummary[_0x8566('0x93')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x4539c4[_0x8566('0x46')],_0x8566('0xa3'));}emitCampaignSummary(_0x4539c4);}}function createObjHistory(_0x4a127c,_0x2fbcb7,_0x24380c,_0x5ae5e8,_0xc937a6){_0x4a127c[_0x8566('0x3e')]=_0x24380c;var _0x5bf8ca=new Action(_0x4a127c,_0x2fbcb7);var _0x3a3de1=new History(_0x5bf8ca);_0x3a3de1['state']=_0x5ae5e8;_0x3a3de1[_0x8566('0xa7')]=_0xc937a6;_0x3a3de1[_0x8566('0xa8')]=_0x5bf8ca[_0x8566('0xa9')];return _0x3a3de1;}Dialer[_0x8566('0xaa')][_0x8566('0x3c')]=function(){var _0x308093=this;setInterval(function(){_0x308093['clearZombieChannels'](_0x308093[_0x8566('0x23')],_0x8566('0xab'));_0x308093[_0x8566('0xac')](_0x308093[_0x8566('0xad')],'[actions]');},0x32c8);};Dialer[_0x8566('0xaa')][_0x8566('0xac')]=function(_0x4c865d,_0xa50301){var _0x3f276d=this;for(var _0x21158f in _0x4c865d){if(typeof _0x4c865d[_0x21158f]!=='undefined'){this[_0x8566('0x1b')]['enqueue'](function(){if(!_['isNil'](_0x4c865d[_0x21158f])){return ami[_0x8566('0xae')]({'action':_0x8566('0xaf'),'channel':_0x4c865d[_0x21158f][_0x8566('0xb0')]})[_0x8566('0xb1')](function(_0x2a047a){if(_0x2a047a[_0x8566('0x3e')]===_0x8566('0xb2')){setTimeout(function(){if(_0x4c865d[_0x21158f]&&_0x4c865d[_0x21158f]['type']!==_0x8566('0x8f')){_0x3f276d['updateOriginated'](_0x3f276d['voiceQueues'][_0x4c865d[_0x21158f][_0x8566('0xb3')]]);logger['error']('[Dialer][checkChannel]',_0xa50301,_0x21158f,_0x4c865d[_0x21158f][_0x8566('0xb3')]);delete _0x4c865d[_0x21158f];}if(_0x4c865d[_0x21158f]&&_0x4c865d[_0x21158f]['type']===_0x8566('0x8f')){_0x3f276d[_0x8566('0xb4')](_0x3f276d[_0x8566('0x1e')][_0x4c865d[_0x21158f][_0x8566('0xb3')]]);logger[_0x8566('0x93')]('[Dialer][checkChannel][ivr]',_0xa50301,_0x21158f,_0x4c865d[_0x21158f][_0x8566('0xb3')]);delete _0x4c865d[_0x21158f];}},0x2328);}});}});}}};Dialer[_0x8566('0xaa')][_0x8566('0xb5')]=function(_0x181a5d){return BPromise[_0x8566('0xb6')]()[_0x8566('0xb7')](cmHopper[_0x8566('0xb5')](_0x181a5d))['catch'](loggerCatch(_0x8566('0xb8')));};Dialer[_0x8566('0xaa')]['checkIsBlackList']=function(_0xfab296){return BPromise['resolve']()[_0x8566('0xb7')](cmHopperBlack[_0x8566('0xb9')](_0xfab296))['catch'](loggerCatch(_0x8566('0xba')));};Dialer[_0x8566('0xaa')][_0x8566('0xbb')]=function(_0x356579){return BPromise[_0x8566('0xb6')]()[_0x8566('0xb7')](cmHopperBlack[_0x8566('0xbb')](_0x356579))[_0x8566('0xb1')](loggerCatch(_0x8566('0xbc')));};Dialer['prototype'][_0x8566('0xbd')]=function(_0xd92fb0){return BPromise['resolve']()[_0x8566('0xb7')](cmHopperHistory[_0x8566('0xbe')](_0xd92fb0))[_0x8566('0xb1')](loggerCatch(_0x8566('0xbf')));};Dialer[_0x8566('0xaa')][_0x8566('0xc0')]=function(_0x2face7){return BPromise[_0x8566('0xb6')]()[_0x8566('0xb7')](cmHopper[_0x8566('0xc0')](_0x2face7))[_0x8566('0xb1')](loggerCatch('[rescheduleContact]\x20'));};Dialer['prototype'][_0x8566('0xc1')]=function(_0x578870,_0x191036,_0x26f3b3){return BPromise[_0x8566('0xb6')]()[_0x8566('0xb7')](cmHopper[_0x8566('0xc1')](_0x578870,_0x191036,_0x26f3b3))[_0x8566('0xb1')](loggerCatch(_0x8566('0xc2')));};Dialer[_0x8566('0xaa')][_0x8566('0xc3')]=function(_0x1141bc,_0x40f2e4,_0x570c20,_0x67ac8d,_0x29956e){return BPromise['resolve']()[_0x8566('0xb7')](cmHopper[_0x8566('0xc3')](_0x1141bc,_0x40f2e4,_0x570c20,_0x67ac8d))[_0x8566('0xb1')](function(_0x34654c){_0x29956e[_0x8566('0xc4')]-=_0x570c20;_0x29956e[_0x8566('0xc4')]=_0x29956e[_0x8566('0xc4')]>0x0?_0x29956e[_0x8566('0xc4')]:0x0;loggerCatch(_0x8566('0xc5'))(_0x34654c);});};Dialer[_0x8566('0xaa')]['getContactDialerIvr']=function(_0x4ebf88,_0xc41986,_0x1b3215,_0x1b76f7){return BPromise[_0x8566('0xb6')]()[_0x8566('0xb7')](cmHopper[_0x8566('0xc6')](_0x4ebf88,_0xc41986,_0x1b3215))[_0x8566('0xb1')](function(_0x2199d5){_0x1b76f7['temp']-=_0xc41986;_0x1b76f7[_0x8566('0xc4')]=_0x1b76f7[_0x8566('0xc4')]>0x0?_0x1b76f7[_0x8566('0xc4')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0x2199d5);});};Dialer[_0x8566('0xaa')][_0x8566('0xc7')]=function(_0x3f07df){return BPromise[_0x8566('0xb6')]()[_0x8566('0xb7')](voiceQueueRt[_0x8566('0xc7')](_0x3f07df))['catch'](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer['prototype']['moveContactManagedDialer']=function(_0x1eaecd){return BPromise[_0x8566('0xb6')]()[_0x8566('0xb7')](cmHopper[_0x8566('0xc8')](_0x1eaecd))['catch'](loggerCatch(_0x8566('0xc9')));};Dialer['prototype']['createHistory']=function(_0x4b5e1c){return BPromise[_0x8566('0xb6')]()['then'](cmHopperHistory[_0x8566('0xca')](_0x4b5e1c))[_0x8566('0xb1')](loggerCatch(_0x8566('0xcb')));};Dialer['prototype'][_0x8566('0xb4')]=function(_0x3f08c9){if(!_[_0x8566('0x3d')](_0x3f08c9)&&_0x3f08c9!==null){if(typeof _0x3f08c9['originated']!=='undefined'){if(_0x3f08c9[_0x8566('0x97')]>0x0){_0x3f08c9[_0x8566('0x97')]-=0x1;}else{logger[_0x8566('0x93')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x8566('0x93')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer['prototype']['loggerHandler']=function(_0x45646e,_0x2906b9){var _0x38cd99=this;return function(_0x3f0172){_0x38cd99[_0x8566('0xb4')](_0x2906b9);logger['error'](_0x45646e,util[_0x8566('0x94')](_0x3f0172,{'showHidden':![],'depth':null}));};};Dialer[_0x8566('0xaa')][_0x8566('0xcc')]=function(_0x3d48aa,_0x3dfd06,_0x4e2b56){var _0x42750e={'state':0x19,'statedesc':_0x8566('0xcd')};this[_0x8566('0xb4')](_0x3dfd06);this[_0x8566('0xce')](_[_0x8566('0x8a')](_0x42750e,_[_0x8566('0xcf')](_0x4e2b56,[_0x8566('0xd0'),_0x8566('0xd1'),_0x8566('0xd2'),_0x8566('0xd3'),'CampaignId'])),_0x8566('0xd4'),_0x8566('0xd5'));logger[_0x8566('0x93')](_0x3d48aa);};Dialer[_0x8566('0xaa')][_0x8566('0xd6')]=function(_0x5b1bf6){return _0x5b1bf6===_0x8566('0xd7');};Dialer[_0x8566('0xaa')][_0x8566('0xd8')]=function(_0x134e11){return!_[_0x8566('0x3d')](_0x134e11)&&_0x134e11&&!_['isUndefined'](_0x134e11[_0x8566('0x46')])&&!_[_0x8566('0x3d')](_0x134e11[_0x8566('0xd9')])&&_0x134e11[_0x8566('0xd9')]&&(this[_0x8566('0xda')][util[_0x8566('0x72')](_0x8566('0xdb'),_0x134e11['name'])]['status']===_0x8566('0xdc')||this[_0x8566('0xda')][util[_0x8566('0x72')]('SIP/%s',_0x134e11[_0x8566('0x46')])][_0x8566('0xaf')]===_0x8566('0xdd'));};Dialer[_0x8566('0xaa')][_0x8566('0xce')]=function(_0x3a30f4,_0x1dd727,_0x2f8b5a){this[_0x8566('0xca')](_0x3a30f4)[_0x8566('0xb1')](loggerCatch(_0x1dd727));this['moveContactManagedDialer'](_0x3a30f4)[_0x8566('0xb1')](loggerCatch(_0x2f8b5a));};Dialer[_0x8566('0xaa')][_0x8566('0x36')]=function(_0x2263f2){var _0x5c7ee8=this['uniqueId'][_0x2263f2[_0x8566('0xde')]];var _0x1d1ea6;if(!_['isNil'](_0x2263f2)&&!_[_0x8566('0xdf')](_0x2263f2['variable'])&&!_[_0x8566('0xdf')](_0x2263f2[_0x8566('0xe0')][_0x8566('0xe1')])&&_0x2263f2[_0x8566('0xe2')]===_0x8566('0xe3')&&_0x5c7ee8){if(_0x5c7ee8[_0x8566('0x52')]!==_0x8566('0x8f')&&this[_0x8566('0x1d')][_0x5c7ee8['queue']][_0x8566('0xe4')]&&_0x2263f2['value']===_0x8566('0xe5')){delete this[_0x8566('0x23')][_0x2263f2[_0x8566('0xde')]];this[_0x8566('0xb4')](this[_0x8566('0x1d')][_0x5c7ee8[_0x8566('0xb3')]]);this['voiceQueues'][_0x5c7ee8[_0x8566('0xb3')]]['outboundAnswerCallsDay']+=0x1;this[_0x8566('0x1d')][_0x5c7ee8[_0x8566('0xb3')]][_0x8566('0xe6')]+=0x1;_0x1d1ea6=new Hangup(_0x5c7ee8,_0x2263f2);_0x1d1ea6[_0x8566('0xe7')]=0x12;_0x1d1ea6[_0x8566('0xa7')]=_0x8566('0xe8');_0x1d1ea6[_0x8566('0xe9')]=_0x8566('0xea');ami[_0x8566('0xeb')](_0x8566('0xec'),ut[_0x8566('0xed')](_0x1d1ea6,_0x8566('0xee')));this[_0x8566('0xce')](_0x1d1ea6,_0x8566('0xef'),_0x8566('0xf0'));}if(_0x5c7ee8[_0x8566('0x52')]!==_0x8566('0x8f')&&this[_0x8566('0x1d')][_0x5c7ee8[_0x8566('0xb3')]]['dialAMDActive']&&_0x2263f2[_0x8566('0xf1')]===_0x8566('0xf2')){var _0x592d07=this;return new BPromise(function(_0x2aaeab,_0x4e0cdb){delete _0x592d07[_0x8566('0x23')][_0x2263f2[_0x8566('0xde')]];_0x592d07[_0x8566('0xb4')](_0x592d07['voiceQueues'][_0x5c7ee8[_0x8566('0xb3')]]);_0x592d07[_0x8566('0x1d')][_0x5c7ee8[_0x8566('0xb3')]][_0x8566('0x5c')]+=0x1;_0x592d07['voiceQueues'][_0x5c7ee8[_0x8566('0xb3')]][_0x8566('0xe6')]+=0x1;var _0x526031=_0x592d07[_0x8566('0x1d')][_0x5c7ee8[_0x8566('0xb3')]];var _0x22a034=new Hangup(_0x5c7ee8,_0x2263f2);_0x22a034[_0x8566('0xe7')]=0x13;_0x22a034[_0x8566('0xa7')]='Machine';_0x22a034[_0x8566('0xe9')]=_0x8566('0xea');_0x22a034[_0x8566('0xf3')]+=0x1;_0x22a034[_0x8566('0xf4')]+=0x1;_0x22a034[_0x8566('0xee')]=!![];ami[_0x8566('0xeb')]('custom:amd',ut['buildObj'](_0x22a034,_0x8566('0xee')));_0x592d07[_0x8566('0xca')](_0x22a034)[_0x8566('0xb1')](loggerCatch(_0x8566('0xf5')));if(_0x22a034[_0x8566('0xf6')]+_0x22a034[_0x8566('0xf7')]+_0x22a034[_0x8566('0xf8')]+_0x22a034[_0x8566('0xf9')]+_0x22a034[_0x8566('0xfa')]+_0x22a034[_0x8566('0xfb')]+_0x22a034[_0x8566('0xf3')]+_0x22a034[_0x8566('0xfc')]>=_0x526031[_0x8566('0xfd')]){_0x592d07[_0x8566('0xfe')](_0x22a034,_0x2aaeab,_0x4e0cdb,_0x8566('0xff'));}else{if(_0x22a034[_0x8566('0xf3')]>=_0x526031['dialMachineMaxRetry']){_0x592d07['createStateFinal'](_0x22a034,_0x2aaeab,_0x4e0cdb,_0x8566('0x100'));}else{_0x592d07['rescheduleContact']({'active':![],'countmachineretry':_0x22a034['countmachineretry'],'scheduledat':moment()[_0x8566('0x101')](_0x526031[_0x8566('0x102')],_0x8566('0x103'))[_0x8566('0x72')](_0x8566('0x104')),'ContactId':_0x22a034[_0x8566('0xd0')],'ListId':_0x22a034['ListId'],'VoiceQueueId':_0x22a034[_0x8566('0xd3')]||undefined,'CampaignId':_0x22a034[_0x8566('0x105')]||undefined})[_0x8566('0xb1')](loggerCatch('[rescheduleContact][Machine]'));_0x2aaeab({'reschedule':0x1});}}});}if(_0x5c7ee8[_0x8566('0x52')]===_0x8566('0x8f')&&this[_0x8566('0x1e')][_0x5c7ee8[_0x8566('0xb3')]][_0x8566('0xe4')]&&_0x2263f2['value']===_0x8566('0xe5')){delete this[_0x8566('0x23')][_0x2263f2['uniqueid']];this[_0x8566('0xb4')](this['campaigns'][_0x5c7ee8['queue']]);_0x1d1ea6=new Hangup(_0x5c7ee8,_0x2263f2);_0x1d1ea6[_0x8566('0xe7')]=0x12;_0x1d1ea6['statedesc']='HangupInAMD';_0x1d1ea6[_0x8566('0xe9')]='AMD';ami[_0x8566('0xeb')](_0x8566('0xec'),ut[_0x8566('0xed')](_0x1d1ea6,_0x8566('0xee')));this[_0x8566('0xce')](_0x1d1ea6,'[syncHangupInAMDIvr][createHistory]',_0x8566('0x106'));}if(_0x5c7ee8[_0x8566('0x52')]===_0x8566('0x8f')&&this[_0x8566('0x1e')][_0x5c7ee8['queue']]['dialAMDActive']&&_0x2263f2[_0x8566('0xf1')]===_0x8566('0xf2')){var _0x592d07=this;return new BPromise(function(_0xbb649a,_0x3d4b1e){delete _0x592d07[_0x8566('0x23')][_0x2263f2[_0x8566('0xde')]];_0x592d07['updateOriginated'](_0x592d07[_0x8566('0x1e')][_0x5c7ee8[_0x8566('0xb3')]]);_0x592d07[_0x8566('0x1e')][_0x5c7ee8[_0x8566('0xb3')]][_0x8566('0x5c')]+=0x1;_0x592d07[_0x8566('0x1e')][_0x5c7ee8[_0x8566('0xb3')]]['outboundAnswerAgiCallsDay']+=0x1;var _0xe77275=_0x592d07['campaigns'][_0x5c7ee8['queue']];var _0x4a2a97=new Hangup(_0x5c7ee8,_0x2263f2);_0x4a2a97[_0x8566('0xe7')]=0x13;_0x4a2a97[_0x8566('0xa7')]=_0x8566('0x107');_0x4a2a97[_0x8566('0xe9')]='AMD';_0x4a2a97[_0x8566('0xf3')]+=0x1;_0x4a2a97[_0x8566('0xf4')]+=0x1;_0x4a2a97[_0x8566('0xee')]=!![];ami[_0x8566('0xeb')](_0x8566('0xec'),ut[_0x8566('0xed')](_0x4a2a97,_0x8566('0xee')));_0x592d07[_0x8566('0xca')](_0x4a2a97)[_0x8566('0xb1')](loggerCatch(_0x8566('0xf5')));if(_0x4a2a97[_0x8566('0xf6')]+_0x4a2a97[_0x8566('0xf7')]+_0x4a2a97['countnoanswerretry']+_0x4a2a97[_0x8566('0xf9')]+_0x4a2a97[_0x8566('0xfa')]+_0x4a2a97[_0x8566('0xfb')]+_0x4a2a97[_0x8566('0xf3')]+_0x4a2a97['countagentrejectretry']>=_0xe77275[_0x8566('0xfd')]){_0x592d07[_0x8566('0xfe')](_0x4a2a97,_0xbb649a,_0x3d4b1e,_0x8566('0xff'));}else{if(_0x4a2a97[_0x8566('0xf3')]>=_0xe77275[_0x8566('0x108')]){_0x592d07[_0x8566('0x109')](_0x4a2a97,_0xbb649a,_0x3d4b1e,_0x8566('0x100'));}else{_0x592d07[_0x8566('0xc0')]({'active':![],'countmachineretry':_0x4a2a97[_0x8566('0xf3')],'scheduledat':moment()[_0x8566('0x101')](_0xe77275['dialMachineRetryFrequency'],_0x8566('0x103'))[_0x8566('0x72')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4a2a97[_0x8566('0xd0')],'ListId':_0x4a2a97['ListId'],'VoiceQueueId':_0x4a2a97[_0x8566('0xd3')]||undefined,'CampaignId':_0x4a2a97[_0x8566('0x105')]||undefined})[_0x8566('0xb1')](loggerCatch('[rescheduleContact][Machine]'));_0xbb649a({'reschedule':0x1});}}});}}};Dialer['prototype']['syncHangup']=function(_0xf2cc0b){var _0xbc708=this[_0x8566('0x23')][_0xf2cc0b[_0x8566('0xde')]];var _0x5dc8b3=this;var _0xc97cf7;if(_0xbc708&&_0xbc708[_0x8566('0x52')]===_0x8566('0x8f')){delete this[_0x8566('0x23')][_0xf2cc0b[_0x8566('0xde')]];this[_0x8566('0xb4')](this[_0x8566('0x1e')][_0xbc708['queue']]);this[_0x8566('0x1e')][_0xbc708[_0x8566('0xb3')]][_0x8566('0x10a')]+=0x1;_0xc97cf7=new Hangup(_0xbc708,_0xf2cc0b);this[_0x8566('0xca')](_0xc97cf7)['catch'](loggerCatch(_0x8566('0x10b')));this[_0x8566('0xc8')](_0xc97cf7)[_0x8566('0xb1')](loggerCatch('[syncHangupIvr]'));}if(_0xbc708&&_0xbc708[_0x8566('0x52')]!==_0x8566('0x8f')&&isNotNull(this[_0x8566('0x1d')][_0xbc708[_0x8566('0xb3')]][_0x8566('0x10c')])){delete this[_0x8566('0x23')][_0xf2cc0b[_0x8566('0xde')]];this[_0x8566('0xb4')](this[_0x8566('0x1d')][_0xbc708[_0x8566('0xb3')]]);this[_0x8566('0x1d')][_0xbc708[_0x8566('0xb3')]][_0x8566('0x5c')]+=0x1;this[_0x8566('0x1d')][_0xbc708[_0x8566('0xb3')]][_0x8566('0xe6')]+=0x1;_0xc97cf7=new Hangup(_0xbc708,_0xf2cc0b);_0xc97cf7['state']=0x10;_0xc97cf7['statedesc']=_0x8566('0x10d');_0xc97cf7[_0x8566('0xe9')]=_0x8566('0x10e');this[_0x8566('0xca')](_0xc97cf7)[_0x8566('0xb1')](loggerCatch(_0x8566('0x10b')));this[_0x8566('0xc8')](_0xc97cf7)['catch'](loggerCatch(_0x8566('0x10f')));}if(_0xbc708&&_0xbc708[_0x8566('0x52')]!=='ivr'&&!isNotNull(this[_0x8566('0x1d')][_0xbc708['queue']]['dialQueueProject'])){delete this['uniqueId'][_0xf2cc0b['uniqueid']];this['updateOriginated'](this[_0x8566('0x1d')][_0xbc708[_0x8566('0xb3')]]);this[_0x8566('0x1d')][_0xbc708['queue']][_0x8566('0x64')]+=0x1;_0xc97cf7=new Hangup(_0xbc708,_0xf2cc0b);_0xc97cf7[_0x8566('0xe7')]=0xc;_0xc97cf7['statedesc']=_0xf2cc0b[_0x8566('0x110')];_0xc97cf7['membername']=_0x8566('0x111');this[_0x8566('0xca')](_0xc97cf7)['catch'](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x8566('0xc8')](_0xc97cf7)[_0x8566('0xb1')](loggerCatch('[syncHangupIvr]'));}};Dialer[_0x8566('0xaa')]['syncAgentComplete']=function(_0x3b36ac){var _0x3c9217=this['uniqueId'][_0x3b36ac[_0x8566('0xde')]];var _0x24bd1=this;if(this[_0x8566('0x1d')][_0x3b36ac['queue']]){if(_0x3c9217&&_0x3c9217[_0x8566('0x52')]!=='ivr'){delete this[_0x8566('0x23')][_0x3b36ac['uniqueid']];this['voiceQueues'][_0x3b36ac[_0x8566('0xb3')]][_0x8566('0x5c')]+=0x1;var _0x5cade7=new AgentComplete(_0x3c9217,_0x3b36ac);if(_0x3b36ac[_0x8566('0x112')]===_0x8566('0x113')){_0x5cade7[_0x8566('0x114')]=this[_0x8566('0x1d')][_0x3b36ac[_0x8566('0xb3')]][_0x8566('0x115')]&&this['voiceQueues'][_0x3b36ac[_0x8566('0xb3')]][_0x8566('0x116')]?moment()['format'](_0x8566('0x104')):undefined;}this[_0x8566('0xca')](_0x5cade7)['catch'](loggerCatch(_0x8566('0x117')));this[_0x8566('0xc8')](_0x5cade7)['catch'](loggerCatch(_0x8566('0x118')));}}};Dialer[_0x8566('0xaa')]['syncAgentConnect']=function(_0x3edb26){if(this[_0x8566('0x1d')][_0x3edb26[_0x8566('0xb3')]]){if(this['uniqueId'][_0x3edb26['uniqueid']]&&this[_0x8566('0x23')][_0x3edb26[_0x8566('0xde')]][_0x8566('0x52')]!==_0x8566('0x8f')){this[_0x8566('0xb4')](this[_0x8566('0x1d')][_0x3edb26[_0x8566('0xb3')]]);this[_0x8566('0x23')][_0x3edb26[_0x8566('0xde')]][_0x8566('0x119')]=moment()[_0x8566('0x72')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x8566('0xaa')][_0x8566('0x11a')]=function(_0x533833){this[_0x8566('0xca')](_0x533833)[_0x8566('0xb1')](loggerCatch('[syncAgentComplete][createHistory]'));this['moveContactManagedDialer'](_0x533833)['catch'](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));};Dialer[_0x8566('0xaa')][_0x8566('0x2c')]=function(_0x411a62){var _0x537aa6=this[_0x8566('0x23')][_0x411a62['uniqueid']];var _0x3b0e9f=this;if(this[_0x8566('0x1d')][_0x411a62['queue']]){if(_0x537aa6&&_0x537aa6['type']!==_0x8566('0x8f')){delete this['uniqueId'][_0x411a62['uniqueid']];this[_0x8566('0xb4')](this['voiceQueues'][_0x411a62[_0x8566('0xb3')]]);_0x537aa6[_0x8566('0x11b')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x444598=new QueueCallerAbandon(_0x537aa6,_0x411a62);if(getSeconds(_0x537aa6['droptime'],_0x537aa6[_0x8566('0x11c')])>=_0x537aa6['dialQueueTimeout']){this[_0x8566('0x1d')][_0x411a62[_0x8566('0xb3')]][_0x8566('0x68')]+=0x1;this['voiceQueues'][_0x411a62['queue']][_0x8566('0x11d')]+=0x1;this[_0x8566('0x1d')][_0x411a62[_0x8566('0xb3')]][_0x8566('0x11e')]+=0x1;_0x444598['state']=0xa;_0x444598[_0x8566('0xa7')]=_0x8566('0x11f');_0x444598[_0x8566('0x120')]=_0x8566('0x121');_0x444598[_0x8566('0x114')]=this[_0x8566('0x1d')][_0x411a62[_0x8566('0xb3')]][_0x8566('0x115')]?moment()[_0x8566('0x72')](_0x8566('0x104')):undefined;_0x444598[_0x8566('0xfa')]+=0x1;_0x444598[_0x8566('0xf4')]+=0x1;if(_0x444598[_0x8566('0xfa')]>=this[_0x8566('0x1d')][_0x411a62[_0x8566('0xb3')]][_0x8566('0x122')]){this[_0x8566('0x11a')](_0x444598);}else{this[_0x8566('0xc0')]({'active':![],'countdropretry':_0x444598[_0x8566('0xfa')],'scheduledat':moment()['add'](this[_0x8566('0x1d')][_0x411a62[_0x8566('0xb3')]][_0x8566('0x123')],_0x8566('0x103'))[_0x8566('0x72')](_0x8566('0x104')),'ContactId':_0x537aa6[_0x8566('0xd0')],'ListId':_0x537aa6[_0x8566('0xd1')],'VoiceQueueId':_0x537aa6[_0x8566('0xd3')]||undefined,'CampaignId':_0x537aa6[_0x8566('0x105')]||undefined})[_0x8566('0xb1')](loggerCatch(_0x8566('0x124')));var _0x546238=new History(_0x444598);_0x546238['state']=0xa;_0x546238[_0x8566('0xa7')]=_0x8566('0x11f');_0x546238[_0x8566('0xa9')]=moment()[_0x8566('0x72')]('YYYY-MM-DD\x20HH:mm:ss');_0x546238['endtime']=_0x546238[_0x8566('0xa9')];_0x546238[_0x8566('0x125')]=_0x444598['calleridname'];_0x546238[_0x8566('0x126')]=_0x444598[_0x8566('0x126')];this[_0x8566('0xca')](_0x546238)['catch'](loggerCatch('[syncAgentComplete][createHistory][10]'));}}else{this[_0x8566('0x1d')][_0x411a62['queue']][_0x8566('0x67')]+=0x1;this[_0x8566('0x1d')][_0x411a62[_0x8566('0xb3')]][_0x8566('0x60')]+=0x1;_0x444598[_0x8566('0xe7')]=0xb;_0x444598[_0x8566('0xa7')]='Abandoned';_0x444598[_0x8566('0x120')]=_0x8566('0x127');_0x444598[_0x8566('0xfb')]+=0x1;_0x444598[_0x8566('0xf4')]+=0x1;if(_0x444598[_0x8566('0xfb')]>=this['voiceQueues'][_0x411a62['queue']][_0x8566('0x128')]){this[_0x8566('0x11a')](_0x444598);}else{this['rescheduleContact']({'active':![],'countabandonedretry':_0x444598[_0x8566('0xfb')],'scheduledat':moment()[_0x8566('0x101')](this['voiceQueues'][_0x411a62['queue']][_0x8566('0x129')],_0x8566('0x103'))['format'](_0x8566('0x104')),'ContactId':_0x537aa6[_0x8566('0xd0')],'ListId':_0x537aa6[_0x8566('0xd1')],'VoiceQueueId':_0x537aa6[_0x8566('0xd3')]||undefined,'CampaignId':_0x537aa6[_0x8566('0x105')]||undefined})[_0x8566('0xb1')](loggerCatch(_0x8566('0x12a')));var _0x546238=new History(_0x444598);_0x546238[_0x8566('0xe7')]=0xb;_0x546238[_0x8566('0xa7')]='Abandoned';_0x546238[_0x8566('0xa9')]=moment()[_0x8566('0x72')](_0x8566('0x104'));_0x546238[_0x8566('0xa8')]=_0x546238[_0x8566('0xa9')];_0x546238['calleridname']=_0x444598['calleridname'];_0x546238[_0x8566('0x126')]=_0x444598[_0x8566('0x126')];this['createHistory'](_0x546238)[_0x8566('0xb1')](loggerCatch(_0x8566('0x12b')));}}}}};Dialer[_0x8566('0xaa')][_0x8566('0x34')]=function(_0x3106d6){if(this[_0x8566('0xad')][_0x3106d6['uniqueid']]){this['actions'][_0x3106d6[_0x8566('0xde')]]['channel']=_0x3106d6['channel'];}if(this[_0x8566('0x23')][_0x3106d6[_0x8566('0xde')]]){this[_0x8566('0x23')][_0x3106d6[_0x8566('0xde')]][_0x8566('0xb0')]=_0x3106d6['channel'];}};Dialer[_0x8566('0xaa')][_0x8566('0x38')]=function(_0x506b23){if(strategy[this[_0x8566('0x1d')][this[_0x8566('0xad')][_0x506b23['actionid']][_0x8566('0xb3')]][_0x8566('0x4d')]]==='roundrobin'){if(this['actions'][_0x506b23[_0x8566('0x12c')]]&&_[_0x8566('0xdf')](this[_0x8566('0xad')][_0x506b23[_0x8566('0x12c')]][_0x8566('0x12d')])&&_0x506b23[_0x8566('0xaf')]==='1'&&_0x506b23[_0x8566('0x12e')]==='0'){if(this[_0x8566('0x1f')][_0x506b23[_0x8566('0x12f')]]){if(!this[_0x8566('0x1f')][_0x506b23[_0x8566('0x12f')]][_0x8566('0x12d')]){this[_0x8566('0x1f')][_0x506b23[_0x8566('0x12f')]][_0x8566('0x12d')]=!![];this[_0x8566('0xad')][_0x506b23[_0x8566('0x12c')]]['locked']=!![];this['actions'][_0x506b23[_0x8566('0x12c')]][_0x8566('0x12f')]=_0x506b23['stateinterface'];}}}}else if((strategy[this['voiceQueues'][this[_0x8566('0xad')][_0x506b23[_0x8566('0x12c')]][_0x8566('0xb3')]][_0x8566('0x4d')]]||_0x8566('0x130'))===_0x8566('0x130')){if(this[_0x8566('0xad')][_0x506b23[_0x8566('0x12c')]]){if(this[_0x8566('0x1f')][_0x506b23['stateinterface']]){this[_0x8566('0xad')][_0x506b23['actionid']]['stateinterface']=_0x506b23[_0x8566('0x12f')];if(_['isNil'](this[_0x8566('0x28')][this[_0x8566('0xad')][_0x506b23[_0x8566('0x12c')]][_0x8566('0xb3')]])){this['queueBooked'][this[_0x8566('0xad')][_0x506b23['actionid']][_0x8566('0xb3')]]=[];}this[_0x8566('0x28')][this[_0x8566('0xad')][_0x506b23[_0x8566('0x12c')]][_0x8566('0xb3')]][_0x8566('0x131')](_[_0x8566('0x8a')](_[_0x8566('0xcf')](this[_0x8566('0xad')][_0x506b23[_0x8566('0x12c')]],[_0x8566('0x132'),_0x8566('0x12f')]),{'status':_0x506b23[_0x8566('0xaf')],'paused':_0x506b23[_0x8566('0x12e')]}));}}}};function unlockQueueStatus(_0x41b2c3,_0x303fd1){setTimeout(function(){if(_[_0x8566('0x3d')](_0x41b2c3[_0x8566('0x133')])){loggerBooked[_0x8566('0x93')](_0x8566('0x134'),_0x303fd1);}_0x41b2c3[_0x8566('0x133')]=!![];loggerBooked[_0x8566('0x77')](_0x8566('0x135'),_0x303fd1,JSON[_0x8566('0x49')](_['pick'](_0x41b2c3,[_0x8566('0x46'),'queueStatusComplete'])));},0x1f3);}Dialer[_0x8566('0xaa')]['syncQueueStatusComplete']=function(_0x4b1277){var _0xfc066=this;var _0x59d0fc=_0xfc066[_0x8566('0x1d')][_0xfc066[_0x8566('0xad')][_0x4b1277['actionid']][_0x8566('0xb3')]];if(strategy[this[_0x8566('0x1d')][this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]]['queue']][_0x8566('0x4d')]]===_0x8566('0x136')){if(this[_0x8566('0xad')][_0x4b1277['actionid']]&&this[_0x8566('0xad')][_0x4b1277['actionid']][_0x8566('0x12f')]){this[_0x8566('0x1c')]['run'](this['actions'][_0x4b1277[_0x8566('0x12c')]][_0x8566('0x132')],this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0x12f')])[_0x8566('0xb1')](function(_0x302d5a){logger[_0x8566('0x93')](_0x8566('0x137'),util['inspect'](_0x302d5a,{'showHidden':![],'depth':null}));})['finally'](function(){_0xfc066[_0x8566('0xb4')](_0xfc066[_0x8566('0x1d')][_0xfc066['actions'][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xb3')]]);_0xfc066[_0x8566('0x1f')][_0xfc066[_0x8566('0xad')][_0x4b1277['actionid']][_0x8566('0x12f')]][_0x8566('0x12d')]=![];delete _0xfc066[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]];unlockQueueStatus(_0x59d0fc);});}else{this['updateOriginated'](this[_0x8566('0x1d')][this['actions'][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xb3')]]);this[_0x8566('0xc0')]({'active':![],'ContactId':this[_0x8566('0xad')][_0x4b1277['actionid']]['ContactId'],'ListId':this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xd1')],'VoiceQueueId':this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xd3')]||undefined,'CampaignId':this[_0x8566('0xad')][_0x4b1277['actionid']][_0x8566('0x105')]||undefined})[_0x8566('0xb1')](loggerCatch(_0x8566('0x138')));delete this['actions'][_0x4b1277[_0x8566('0x12c')]];unlockQueueStatus(_0x59d0fc);}}else if((strategy[this[_0x8566('0x1d')][this['actions'][_0x4b1277[_0x8566('0x12c')]]['queue']]['strategy']]||_0x8566('0x130'))===_0x8566('0x130')){var _0x397267;if(this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]]&&!_['isEmpty'](this[_0x8566('0x28')][this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xb3')]])){if(this[_0x8566('0x139')][_0xfc066[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xb3')]]){this['queueBookedRR'][_0xfc066[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xb3')]]=this[_0x8566('0x139')][this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xb3')]]?this[_0x8566('0x139')][this['actions'][_0x4b1277[_0x8566('0x12c')]]['queue']]:this['queueBooked'][this['actions'][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xb3')]]?this[_0x8566('0x28')][this[_0x8566('0xad')][_0x4b1277['actionid']][_0x8566('0xb3')]]['_rr']||0x0:0x0;}this[_0x8566('0x28')][this['actions'][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xb3')]][_0x8566('0x13a')]=this[_0x8566('0x139')][this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xb3')]];for(var _0x5249f9=0x0;_0x5249f9<this[_0x8566('0x28')][this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xb3')]][_0x8566('0x96')];_0x5249f9+=0x1){_0x397267=rr(this['queueBooked'][this['actions'][_0x4b1277['actionid']]['queue']]);this[_0x8566('0x139')][_0xfc066['actions'][_0x4b1277['actionid']][_0x8566('0xb3')]]=this['queueBooked'][this[_0x8566('0xad')][_0x4b1277['actionid']][_0x8566('0xb3')]]['_rr'];if(_0x397267['status']==='1'&&_0x397267['paused']==='0'){break;}}if(!_[_0x8566('0xdf')](_0x397267)){this[_0x8566('0x1f')][_0x397267[_0x8566('0x12f')]][_0x8566('0x13b')]=_[_0x8566('0x3d')](this[_0x8566('0x1f')][_0x397267[_0x8566('0x12f')]][_0x8566('0x13b')])?!![]:this['agents'][_0x397267[_0x8566('0x12f')]]['unlockRR'];}loggerBooked[_0x8566('0x77')](_0x8566('0x13c'),_0x4b1277[_0x8566('0x12c')],'Agent:\x20',JSON[_0x8566('0x49')](_['pick'](this[_0x8566('0x1f')][_0x397267['stateinterface']],[_0x8566('0x46'),_0x8566('0x13b')])),_0x8566('0x13d'),JSON[_0x8566('0x49')](_0x397267[_0x8566('0x132')]));if(!_[_0x8566('0xdf')](_0x397267)&&_0x397267[_0x8566('0xaf')]==='1'&&_0x397267[_0x8566('0x12e')]==='0'&&this['agents'][_0x397267[_0x8566('0x12f')]]['unlockRR']){this[_0x8566('0x1f')][_0x397267[_0x8566('0x12f')]][_0x8566('0x13b')]=![];this[_0x8566('0x28')][_0xfc066['actions'][_0x4b1277['actionid']][_0x8566('0xb3')]]=[];this['preview'][_0x8566('0x13e')](_0x397267[_0x8566('0x132')],_0x397267[_0x8566('0x12f')])[_0x8566('0xb1')](function(_0x3751b4){logger[_0x8566('0x93')](_0x8566('0x137'),util[_0x8566('0x94')](_0x3751b4,{'showHidden':![],'depth':null}));})[_0x8566('0x1a')](function(){_0xfc066[_0x8566('0xb4')](_0xfc066[_0x8566('0x1d')][_0xfc066[_0x8566('0xad')][_0x4b1277['actionid']][_0x8566('0xb3')]]);setTimeout(function(){_0xfc066['agents'][_0x397267[_0x8566('0x12f')]][_0x8566('0x13b')]=!![];loggerBooked[_0x8566('0x77')](_0x8566('0x13f'),_0x4b1277[_0x8566('0x12c')],_0x8566('0x140'),JSON['stringify'](_[_0x8566('0xcf')](_0xfc066[_0x8566('0x1f')][_0x397267[_0x8566('0x12f')]],['name',_0x8566('0x13b')])),_0x8566('0x13d'),JSON['stringify'](_0x397267[_0x8566('0x132')]));},0xc7);delete _0xfc066[_0x8566('0xad')][_0x4b1277['actionid']];unlockQueueStatus(_0x59d0fc,_0x4b1277[_0x8566('0x12c')]);});}else{loggerBooked['info'](_0x8566('0x141'));this['updateOriginated'](this[_0x8566('0x1d')][this['actions'][_0x4b1277[_0x8566('0x12c')]]['queue']]);this[_0x8566('0xc0')]({'active':![],'ContactId':this[_0x8566('0xad')][_0x4b1277['actionid']][_0x8566('0xd0')],'ListId':this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xd1')],'VoiceQueueId':this[_0x8566('0xad')][_0x4b1277['actionid']][_0x8566('0xd3')]||undefined,'CampaignId':this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]]['CampaignId']||undefined})[_0x8566('0xb1')](loggerCatch(_0x8566('0x138')));delete this['actions'][_0x4b1277[_0x8566('0x12c')]];unlockQueueStatus(_0x59d0fc);}}else{loggerBooked[_0x8566('0x77')](_0x8566('0x142'));this[_0x8566('0xb4')](this[_0x8566('0x1d')][this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xb3')]]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xd0')],'ListId':this['actions'][_0x4b1277[_0x8566('0x12c')]]['ListId'],'VoiceQueueId':this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xd3')]||undefined,'CampaignId':this['actions'][_0x4b1277[_0x8566('0x12c')]][_0x8566('0x105')]||undefined})[_0x8566('0xb1')](loggerCatch(_0x8566('0x143')));delete this[_0x8566('0xad')][_0x4b1277['actionid']];unlockQueueStatus(_0x59d0fc);}}else{loggerBooked[_0x8566('0x77')](_0x8566('0x144'));this[_0x8566('0xb4')](this[_0x8566('0x1d')][this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xb3')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xd0')],'ListId':this[_0x8566('0xad')][_0x4b1277['actionid']]['ListId'],'VoiceQueueId':this[_0x8566('0xad')][_0x4b1277[_0x8566('0x12c')]][_0x8566('0xd3')]||undefined,'CampaignId':this[_0x8566('0xad')][_0x4b1277['actionid']]['CampaignId']||undefined})['catch'](loggerCatch(_0x8566('0x145')));delete this['actions'][_0x4b1277[_0x8566('0x12c')]];unlockQueueStatus(_0x59d0fc);}};Dialer[_0x8566('0xaa')][_0x8566('0x3b')]=function(){var _0x7eee43=this;setInterval(function(){_0x7eee43[_0x8566('0x146')]();},0x3e8);};Dialer[_0x8566('0xaa')]['checkIsTrunkReachable']=function(_0x3f082a){var _0x42053b=this;return function(){if(!_0x42053b[_0x8566('0xd8')](_0x3f082a[_0x8566('0x71')])){if(!_0x42053b[_0x8566('0xd8')](_0x3f082a[_0x8566('0x147')])){_0x3f082a[_0x8566('0x3e')]=_0x8566('0x148');throw _0x3f082a['name']+_0x8566('0x149');}}};};Dialer[_0x8566('0xaa')]['checkIfTime']=function(_0x2c68ba,_0x3c68e8,_0x18fe66,_0x29fda0){var _0x1119fd=this;return function(){var _0x45429f=!![];return _0x1119fd[_0x8566('0x14a')](_0x2c68ba,_0x3c68e8,_0x18fe66,_0x29fda0,_0x45429f);};};Dialer[_0x8566('0xaa')][_0x8566('0x14b')]=function(_0x172c1d,_0xc422ef,_0xffc7a9,_0x592b34){var _0x4bcee6=this;return function(){var _0x51ded2=![];return _0x4bcee6[_0x8566('0x14a')](_0x172c1d['Intervals'],_0xc422ef,_0xffc7a9,_0x592b34,_0x51ded2);};};Dialer['prototype'][_0x8566('0x14a')]=function(_0x50df5f,_0x5cd051,_0x5a776d,_0x969f25,_0x39705d){var _0x5a1b8f=[];return new BPromise(function(_0x55941a,_0xc7ba28){if(!isNotNull(_0x50df5f)){_0x969f25[_0x8566('0x3e')]=_0x8566('0x43');return _0xc7ba28(msgResponse(_0x8566('0x14a'),_0x8566('0x14c'),_0x5a776d+_0x8566('0x14d')));}if(_['isEmpty'](_0x50df5f)){_0x969f25[_0x8566('0x3e')]='INTERVAL_IS_EMPTY';return _0xc7ba28(msgResponse(_0x8566('0x14a'),_0x8566('0x14c'),_0x5a776d+_0x8566('0x14e')));}if(_0x5cd051&&_['isUndefined'](config[_0x8566('0x14f')][_0x5cd051])){_0x969f25[_0x8566('0x3e')]='TIMEZONE_UNKNOW';return _0xc7ba28(msgResponse(_0x8566('0x14a'),_0x8566('0x14c'),_0x5a776d+_0x8566('0x150')+_0x5cd051));}if(_[_0x8566('0x151')](_0x50df5f)){for(var _0x24788b=0x0;_0x24788b<_0x50df5f[_0x8566('0x96')];_0x24788b+=0x1){_0x5a1b8f[_0x8566('0x131')](ami[_0x8566('0xae')]({'action':_0x8566('0x152'),'command':util[_0x8566('0x72')](_0x8566('0x153'),_0x50df5f[_0x24788b][_0x8566('0x154')],!_[_0x8566('0x3d')](config[_0x8566('0x14f')][_0x5cd051])?_0x5cd051:'')})[_0x8566('0xb7')](function(_0x89b791){return _0x89b791[_0x8566('0x155')][_0x8566('0x156')](_0x8566('0x157'))>=0x0;})[_0x8566('0xb1')](myreject(_0xc7ba28)));}}else{_0x5a1b8f[_0x8566('0x131')](ami['Action']({'action':_0x8566('0x152'),'command':util['format'](_0x8566('0x153'),_0x50df5f,!_[_0x8566('0x3d')](config[_0x8566('0x14f')][_0x5cd051])?_0x5cd051:'')})[_0x8566('0xb7')](function(_0x17692a){return _0x17692a[_0x8566('0x155')]['indexOf'](_0x8566('0x157'))>=0x0;})['catch'](myreject(_0xc7ba28)));}BPromise['all'](_0x5a1b8f)[_0x8566('0xb7')](function(_0x46ed98){var _0x4872ea=_[_0x8566('0x158')](_0x46ed98);if(_0x4872ea){return _0x55941a(_0x4872ea);}else{_0x969f25[_0x8566('0x3e')]=_0x39705d?'GLOBAL_INTERVAL_IS_OVERTIME':_0x8566('0x159');return _0xc7ba28(msgResponse(_0x8566('0x15a'),_0x8566('0x14c'),_0x8566('0x15b')+_0x39705d+'\x20'+_0x5a776d+'\x20Interval\x20is\x20overtime:\x20'+util['inspect'](_0x50df5f,{'showHidden':![],'depth':null})+_0x8566('0x15c')+_0x5cd051));}})['catch'](function(_0x5c55f8){return _0xc7ba28(msgResponse(_0x8566('0x14a'),'Failure',JSON[_0x8566('0x49')](_0x5c55f8)));});});};Dialer[_0x8566('0xaa')]['checkDialMethod']=function(_0x1919a1){var _0x54969b=this;return function(){switch(_0x1919a1['dialMethod']){case _0x8566('0x15d'):freeVariablesPredictive(_0x1919a1);_0x54969b[_0x8566('0x15e')](_0x1919a1,0x1);break;case _0x8566('0x15f'):freeVariablesPredictive(_0x1919a1);_0x54969b[_0x8566('0x15e')](_0x1919a1,_0x1919a1[_0x8566('0x160')]);break;case _0x8566('0xc'):_0x54969b[_0x8566('0xc')](_0x1919a1);break;case _0x8566('0xb'):freeVariablesPredictive(_0x1919a1);_0x54969b[_0x8566('0x15e')](_0x1919a1,0x1);break;default:freeVariablesPredictive(_0x1919a1);logger['error'](_0x8566('0x161'),_0x1919a1[_0x8566('0x46')],'method\x20not\x20recognized');}};};Dialer[_0x8566('0xaa')][_0x8566('0x162')]=function(_0x42f98d){var _0x1c2a2d=this;return function(){_0x1c2a2d[_0x8566('0x163')](_0x42f98d);};};Dialer[_0x8566('0xaa')][_0x8566('0xd')]=function(_0x39ed59){var _0x33833f=this;if(isNotPreview(_0x39ed59[_0x8566('0x57')])){if(isVoiceQueueOutbound(_0x39ed59[_0x8566('0x52')])&&isActive(_0x39ed59['dialActive'])){_0x39ed59[_0x8566('0xa4')]=!![];BPromise[_0x8566('0xb6')]()['then'](checkIsLoggedIn(_0x39ed59,_0x39ed59['loggedIn']))[_0x8566('0xb7')](checkIsActive(_0x39ed59,_0x39ed59['dialActive']))[_0x8566('0xb7')](checkInterval(_0x39ed59))[_0x8566('0xb7')](_0x33833f['checkIsTrunkReachable'](_0x39ed59))[_0x8566('0xb7')](_0x33833f[_0x8566('0x164')](_0x39ed59[_0x8566('0x165')],_0x39ed59[_0x8566('0x166')],_0x39ed59[_0x8566('0x46')],_0x39ed59))[_0x8566('0xb7')](_0x33833f[_0x8566('0x14b')](_0x39ed59['Interval'],_0x39ed59[_0x8566('0x166')],_0x39ed59['name'],_0x39ed59))[_0x8566('0xb7')](_0x33833f['checkDialMethod'](_0x39ed59))[_0x8566('0xb1')](loggerCatchQueueSummary(_0x8566('0x167'),_0x39ed59));}else{notSendMessagesQueue(_0x39ed59);}}else{freeVariablesPredictive(_0x39ed59);}};Dialer['prototype'][_0x8566('0x146')]=function(){var _0x1d4a25=this;var _0x1393d4;for(var _0x5411f7 in this['campaigns']){if(typeof this['campaigns'][_0x5411f7]!==_0x8566('0x98')){_0x1393d4=this['campaigns'][_0x5411f7];if(isCampaignIvr(_0x1393d4[_0x8566('0x52')])&&isActive(_0x1393d4[_0x8566('0xd9')])){_0x1393d4[_0x8566('0xa4')]=!![];BPromise[_0x8566('0xb6')]()[_0x8566('0xb7')](checkIsActive(_0x1393d4,_0x1393d4[_0x8566('0xd9')]))[_0x8566('0xb7')](checkInterval(_0x1393d4))['then'](_0x1d4a25[_0x8566('0x168')](_0x1393d4))[_0x8566('0xb7')](_0x1d4a25[_0x8566('0x164')](_0x1393d4[_0x8566('0x165')],_0x1393d4[_0x8566('0x166')],_0x1393d4[_0x8566('0x46')],_0x1393d4))['then'](_0x1d4a25[_0x8566('0x14b')](_0x1393d4[_0x8566('0x42')],_0x1393d4[_0x8566('0x166')],_0x1393d4[_0x8566('0x46')],_0x1393d4))['then'](_0x1d4a25['launchHandleIvr'](_0x1393d4))[_0x8566('0xb1')](loggerCatchQueueSummary(_0x8566('0x169'),_0x1393d4));}else{notSendMessagesCampaign(_0x1393d4);}}}};function getCallerIdRandom(_0x7829c9,_0x19f1d9){var _0x34fd4;var _0x39b705;var _0x532678;if(_0x19f1d9<=0x0){_0x19f1d9=0x1;}_0x34fd4=new RegExp(_0x8566('0x16a')+_0x19f1d9+'}$');_0x39b705=Math['pow'](0xa,_0x19f1d9-0x1);_0x532678=Math[_0x8566('0x16b')](0xa,_0x19f1d9)-0x1;return util[_0x8566('0x72')]('%s',_[_0x8566('0x16c')](_0x7829c9,_0x34fd4,_[_0x8566('0x16d')](_0x39b705,_0x532678)));}function extractCalleridName(_0x482e21){var _0x2ee89a=_0x482e21[_0x8566('0x16e')](/"(.*?)"/);return _0x2ee89a?_0x2ee89a[0x1]:_0x482e21;}function extractCalleridNumber(_0x55dfd){var _0x46fe60=_0x55dfd[_0x8566('0x16e')](/<(.*?)>/);return _0x46fe60?_0x46fe60[0x1]:_0x55dfd;}Dialer['prototype'][_0x8566('0x16f')]=function(_0x4e912c,_0x89845){var _0x18260d=this;var _0x1a27b4=uuid['v4']();this[_0x8566('0xad')][_0x1a27b4]=new Action(_0x4e912c,_0x89845,_0x1a27b4);return new BPromise(function(_0x2d6b63,_0x3d2da1){if(_[_0x8566('0x3d')](_0x4e912c)&&typeof _0x4e912c!=='object'){return _0x3d2da1(msgResponse(_0x8566('0x170'),_0x8566('0x14c'),_0x8566('0x171')));}if(_['isUndefined'](_0x89845[_0x8566('0x172')][_0x8566('0x173')])||_0x89845[_0x8566('0x172')][_0x8566('0x173')]===null){return _0x3d2da1(msgResponse(_0x8566('0x170'),_0x8566('0x14c'),'contact\x20is\x20undefine'));}var _0x172d01={'XMD-CALLERID':_0x18260d[_0x8566('0xad')][_0x1a27b4][_0x8566('0x174')](),'XMD-AGI':_0x4e912c[_0x8566('0x10c')]?util[_0x8566('0x72')](_0x8566('0x175'),ipAgi,_0x4e912c[_0x8566('0x10c')]):_0x8566('0x176'),'XMD-AGIAFTER':_0x4e912c[_0x8566('0x115')]?util[_0x8566('0x72')](_0x8566('0x175'),ipAgi,_0x4e912c['dialQueueProject2']):_0x8566('0x176'),'XMD-QUEUE':_0x4e912c[_0x8566('0x52')]===_0x8566('0x4c')?util[_0x8566('0x72')](_0x8566('0x177'),_0x4e912c['name'],_0x4e912c[_0x8566('0x178')]||'',_0x4e912c[_0x8566('0x116')]?'c':'',_0x4e912c[_0x8566('0x179')]||0x3):_0x8566('0x176'),'XMD-CONTACTID':_0x89845[_0x8566('0xd0')],'XMD-CDRTYPE':_0x8566('0xa'),'CALLERID(all)':_0x18260d[_0x8566('0xad')][_0x1a27b4][_0x8566('0x174')](),'XMD-AMD':_0x4e912c[_0x8566('0xe4')]?_0x8566('0x17a'):_0x8566('0x176'),'XMD-DESTINATION':_0x8566('0xe3')};if(_0x4e912c['dialAMDActive']){_0x172d01[_0x8566('0x17b')]=_0x4e912c['dialAMDInitialSilence']||0x9c4;_0x172d01[_0x8566('0x17c')]=_0x4e912c[_0x8566('0x17d')]||0x5dc;_0x172d01[_0x8566('0x17e')]=_0x4e912c[_0x8566('0x17f')]||0x320;_0x172d01[_0x8566('0x180')]=_0x4e912c[_0x8566('0x181')]||0x1388;_0x172d01['XMD-AMDMINWORDLENGTH']=_0x4e912c['dialAMDMinWordLength']||0x64;_0x172d01[_0x8566('0x182')]=_0x4e912c[_0x8566('0x183')]||0x32;_0x172d01[_0x8566('0x184')]=_0x4e912c[_0x8566('0x185')]||0x3;_0x172d01[_0x8566('0x186')]=_0x4e912c['dialAMDSilenceThreshold']||0x100;_0x172d01[_0x8566('0x187')]=_0x4e912c[_0x8566('0x188')]||0x1388;}if(_0x4e912c['type']===_0x8566('0x4c')){_0x172d01['XMD-VOICEQUEUEID']=_0x89845['VoiceQueueId'];}else{_0x172d01['XMD-CAMPAIGNID']=_0x89845[_0x8566('0x105')];}for(var _0x84dd78 in _0x89845['Contact']){if(typeof _0x89845[_0x8566('0x172')][_0x84dd78]!==_0x8566('0x98')){if(isNotNull(_0x89845[_0x8566('0x172')][_0x84dd78])&&_0x84dd78!=='id'&&_0x84dd78!==_0x8566('0x189')&&_0x84dd78!==_0x8566('0x18a')&&_0x84dd78!=='updatedAt'){_0x172d01[util[_0x8566('0x72')](_0x8566('0x18b'),_0x8566('0x18c'),_[_0x8566('0x18d')](_0x84dd78))]=_0x89845[_0x8566('0x172')][_0x84dd78];}}}var _0x410b41=_0x18260d['isTrunkReachable'](_0x4e912c[_0x8566('0x71')])?getCallerId(_0x4e912c['Trunk'][_0x8566('0x18e')],_0x4e912c[_0x8566('0x58')],_0x4e912c[_0x8566('0x18f')]>0x0?getCallerIdRandom(_0x4e912c['dialOriginateCallerIdNumber'],_0x4e912c['dialRandomLastDigitCallerIdNumber']):_0x4e912c[_0x8566('0x59')]):getCallerId(_['isNil'](_0x4e912c[_0x8566('0x147')])?_0x4e912c[_0x8566('0x71')][_0x8566('0x18e')]:_0x4e912c[_0x8566('0x147')][_0x8566('0x18e')],_0x4e912c[_0x8566('0x58')],_0x4e912c[_0x8566('0x18f')]>0x0?getCallerIdRandom(_0x4e912c[_0x8566('0x59')],_0x4e912c['dialRandomLastDigitCallerIdNumber']):_0x4e912c[_0x8566('0x59')]);if(_0x410b41){_0x172d01[_0x8566('0x190')]=_0x18260d[_0x8566('0xad')][_0x1a27b4][_0x8566('0x191')]=extractCalleridName(_0x410b41);_0x172d01[_0x8566('0x192')]=_0x18260d[_0x8566('0xad')][_0x1a27b4][_0x8566('0x193')]=extractCalleridNumber(_0x410b41);}return ami['Action']({'actionid':_0x1a27b4,'action':_0x8566('0x170'),'channel':_0x18260d[_0x8566('0xd8')](_0x4e912c[_0x8566('0x71')])?util[_0x8566('0x72')](_0x8566('0x194'),_0x4e912c[_0x8566('0x71')][_0x8566('0x46')],isNotNull(_0x4e912c['dialPrefix'])?_0x4e912c[_0x8566('0x5b')][_0x8566('0x195')]()||'':'',_0x4e912c[_0x8566('0x196')]>0x0?_0x89845[_0x8566('0x172')][_0x8566('0x173')][_0x8566('0x197')](_0x4e912c[_0x8566('0x196')]):_0x89845[_0x8566('0x172')][_0x8566('0x173')]):util[_0x8566('0x72')](_0x8566('0x194'),_[_0x8566('0xdf')](_0x4e912c[_0x8566('0x147')])?_0x4e912c[_0x8566('0x71')][_0x8566('0x46')]:_0x4e912c[_0x8566('0x147')]['name'],isNotNull(_0x4e912c['dialPrefix'])?_0x4e912c[_0x8566('0x5b')][_0x8566('0x195')]()||'':'',_0x4e912c[_0x8566('0x196')]>0x0?_0x89845[_0x8566('0x172')][_0x8566('0x173')][_0x8566('0x197')](_0x4e912c[_0x8566('0x196')]):_0x89845['Contact']['phone']),'callerid':_0x410b41,'Exten':_0x8566('0xe3'),'Context':'from-sip','Priority':'1','variable':_0x172d01,'timeout':(_0x4e912c['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x1a27b4})['then'](function(_0x18aa44){return _0x2d6b63(_0x18aa44);})[_0x8566('0xb1')](function(_0x175aa2){_0x4e912c['outboundOriginateFailureCallsDay']+=0x1;var _0x16bb7e=new History(_0x18260d[_0x8566('0xad')][_0x1a27b4]);logger[_0x8566('0x93')](util['format']('[originateError]:\x20%s',JSON[_0x8566('0x49')](_0x175aa2)));_0x16bb7e[_0x8566('0xe7')]=0xe;_0x16bb7e['statedesc']='OriginateError';_0x16bb7e['starttime']=moment()[_0x8566('0x72')]('YYYY-MM-DD\x20HH:mm:ss');_0x16bb7e[_0x8566('0xa8')]=_0x16bb7e['starttime'];_0x18260d[_0x8566('0xca')](_0x16bb7e)[_0x8566('0xb1')](loggerCatch(_0x8566('0x198')));_0x18260d[_0x8566('0xc8')](_0x16bb7e)[_0x8566('0xb1')](loggerCatch(_0x8566('0x198')))[_0x8566('0x1a')](function(){delete _0x18260d[_0x8566('0xad')][_0x1a27b4];return _0x3d2da1(msgResponse(_0x8566('0x170'),_0x8566('0x48'),_0x8566('0x199')));});});});};Dialer['prototype'][_0x8566('0x2e')]=function(_0x25299e){var _0x554a3a=this[_0x8566('0xad')][_0x25299e[_0x8566('0x12c')]];if(_0x554a3a){delete this['actions'][_0x25299e[_0x8566('0x12c')]];_0x554a3a[_0x8566('0x11c')]=moment()[_0x8566('0x72')](_0x8566('0x104'));var _0x2ea659=_0x554a3a['type']==='ivr'?this[_0x8566('0x1e')][_0x554a3a[_0x8566('0xb3')]]:this['voiceQueues'][_0x554a3a[_0x8566('0x19a')]()];if(!this[_0x8566('0xd6')](_0x25299e[_0x8566('0x19b')])){this['updateOriginated'](_0x2ea659);return this[_0x8566('0x19c')](_0x554a3a,_0x2ea659,_0x25299e)['catch'](loggerCatch(_0x8566('0x19d')));}this['uniqueId'][_0x25299e['uniqueid']]=_0x554a3a;}};Dialer[_0x8566('0xaa')][_0x8566('0x19e')]=function(_0x291995,_0x1adbb2,_0x64db09){var _0x5ca47a=new History(_0x1adbb2);if(_0x5ca47a[_0x8566('0xf6')]+_0x5ca47a[_0x8566('0xf7')]+_0x5ca47a['countnoanswerretry']+_0x5ca47a[_0x8566('0xf9')]+_0x5ca47a[_0x8566('0xfa')]+_0x5ca47a[_0x8566('0xfb')]+_0x5ca47a[_0x8566('0xf3')]+_0x5ca47a[_0x8566('0xfc')]>=_0x64db09[_0x8566('0xfd')]-0x1){return!![];}switch(_0x291995){case 0x3:if(_0x5ca47a['countnoanswerretry']>=_0x64db09[_0x8566('0x19f')]-0x1){return!![];}this[_0x8566('0xc0')]({'active':![],'countnoanswerretry':_0x5ca47a[_0x8566('0xf8')]+=0x1,'scheduledat':moment()[_0x8566('0x101')](_0x64db09[_0x8566('0x1a0')],_0x8566('0x103'))[_0x8566('0x72')](_0x8566('0x104')),'ContactId':_0x5ca47a['ContactId'],'ListId':_0x5ca47a[_0x8566('0xd1')],'VoiceQueueId':_0x5ca47a['VoiceQueueId']||undefined,'CampaignId':_0x5ca47a[_0x8566('0x105')]||undefined})['catch'](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x5ca47a[_0x8566('0xf6')]>=_0x64db09[_0x8566('0x1a1')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countbusyretry':_0x5ca47a[_0x8566('0xf6')]+=0x1,'scheduledat':moment()[_0x8566('0x101')](_0x64db09[_0x8566('0x1a2')],'minutes')[_0x8566('0x72')](_0x8566('0x104')),'ContactId':_0x5ca47a[_0x8566('0xd0')],'ListId':_0x5ca47a['ListId'],'VoiceQueueId':_0x5ca47a['VoiceQueueId']||undefined,'CampaignId':_0x5ca47a[_0x8566('0x105')]||undefined})[_0x8566('0xb1')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x5ca47a[_0x8566('0xf7')]>=_0x64db09['dialCongestionMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countcongestionretry':_0x5ca47a[_0x8566('0xf7')]+=0x1,'scheduledat':moment()[_0x8566('0x101')](_0x64db09['dialCongestionRetryFrequency'],_0x8566('0x103'))[_0x8566('0x72')](_0x8566('0x104')),'ContactId':_0x5ca47a[_0x8566('0xd0')],'ListId':_0x5ca47a[_0x8566('0xd1')],'VoiceQueueId':_0x5ca47a[_0x8566('0xd3')]||undefined,'CampaignId':_0x5ca47a[_0x8566('0x105')]||undefined})[_0x8566('0xb1')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x5ca47a[_0x8566('0xf9')]>=_0x64db09['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this[_0x8566('0xc0')]({'active':![],'countnosuchnumberretry':_0x5ca47a[_0x8566('0xf9')]+=0x1,'scheduledat':moment()[_0x8566('0x101')](_0x64db09['dialNoSuchNumberRetryFrequency'],_0x8566('0x103'))[_0x8566('0x72')](_0x8566('0x104')),'ContactId':_0x5ca47a['ContactId'],'ListId':_0x5ca47a[_0x8566('0xd1')],'VoiceQueueId':_0x5ca47a[_0x8566('0xd3')]||undefined,'CampaignId':_0x5ca47a[_0x8566('0x105')]||undefined})[_0x8566('0xb1')](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x5ca47a[_0x8566('0xfa')]>=_0x64db09[_0x8566('0x122')]-0x1){return!![];}this[_0x8566('0xc0')]({'active':![],'countdropretry':_0x5ca47a[_0x8566('0xfa')]+=0x1,'scheduledat':moment()[_0x8566('0x101')](_0x64db09[_0x8566('0x123')],_0x8566('0x103'))['format'](_0x8566('0x104')),'ContactId':_0x5ca47a[_0x8566('0xd0')],'ListId':_0x5ca47a['ListId'],'VoiceQueueId':_0x5ca47a[_0x8566('0xd3')]||undefined,'CampaignId':_0x5ca47a[_0x8566('0x105')]||undefined})['catch'](loggerCatch(_0x8566('0x124')));break;case 0xb:if(_0x5ca47a[_0x8566('0xfb')]>=_0x64db09[_0x8566('0x128')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x5ca47a[_0x8566('0xfb')]+=0x1,'scheduledat':moment()[_0x8566('0x101')](_0x64db09[_0x8566('0x129')],'minutes')['format'](_0x8566('0x104')),'ContactId':_0x5ca47a[_0x8566('0xd0')],'ListId':_0x5ca47a[_0x8566('0xd1')],'VoiceQueueId':_0x5ca47a[_0x8566('0xd3')]||undefined,'CampaignId':_0x5ca47a[_0x8566('0x105')]||undefined})['catch'](loggerCatch(_0x8566('0x12a')));break;case 0x13:if(_0x5ca47a[_0x8566('0xf3')]>=_0x64db09['dialMachineMaxRetry']-0x1){return!![];}this[_0x8566('0xc0')]({'active':![],'countmachineretry':_0x5ca47a[_0x8566('0xf3')]+=0x1,'scheduledat':moment()[_0x8566('0x101')](_0x64db09[_0x8566('0x102')],_0x8566('0x103'))[_0x8566('0x72')](_0x8566('0x104')),'ContactId':_0x5ca47a[_0x8566('0xd0')],'ListId':_0x5ca47a[_0x8566('0xd1')],'VoiceQueueId':_0x5ca47a[_0x8566('0xd3')]||undefined,'CampaignId':_0x5ca47a[_0x8566('0x105')]||undefined})[_0x8566('0xb1')](loggerCatch(_0x8566('0x1a3')));break;case 0x14:if(_0x5ca47a[_0x8566('0xfc')]>=_0x64db09[_0x8566('0x1a4')]-0x1){return!![];}this[_0x8566('0xc0')]({'active':![],'countagentrejectretry':_0x5ca47a[_0x8566('0xfc')]+=0x1,'scheduledat':moment()['add'](_0x64db09[_0x8566('0x1a5')],_0x8566('0x103'))['format'](_0x8566('0x104')),'ContactId':_0x5ca47a[_0x8566('0xd0')],'ListId':_0x5ca47a[_0x8566('0xd1')],'VoiceQueueId':_0x5ca47a[_0x8566('0xd3')]||undefined,'CampaignId':_0x5ca47a[_0x8566('0x105')]||undefined})[_0x8566('0xb1')](loggerCatch(_0x8566('0x1a6')));break;default:return!![];}};Dialer['prototype'][_0x8566('0x19c')]=function(_0x5796c2,_0x2e7765,_0x33a8ff){var _0x37a751=this;var _0x39ad4e=new History(_0x5796c2);return new BPromise(function(_0x4d9d1b,_0x42a446){if(_[_0x8566('0x3d')](_0x2e7765)&&typeof _0x2e7765!==_0x8566('0x1a7')){return _0x42a446(msgResponse(_0x8566('0x1a8'),'Failure','entity\x20is\x20undefine'));}if(_[_0x8566('0x3d')](_0x33a8ff)&&typeof _0x33a8ff!==_0x8566('0x1a7')){return _0x42a446(msgResponse(_0x8566('0x1a8'),_0x8566('0x14c'),_0x8566('0x1a9')));}switch(_0x33a8ff['reason']){case'0':_0x2e7765[_0x8566('0x62')]+=0x1;_0x39ad4e[_0x8566('0xe7')]=0x0;_0x39ad4e['statedesc']='NoSuchNumber';_0x39ad4e[_0x8566('0xf9')]+=0x1;_0x39ad4e[_0x8566('0xf4')]+=0x1;ami[_0x8566('0xeb')](_0x8566('0x1aa'),ut[_0x8566('0xed')](_0x5796c2,_0x8566('0x1ab')));_0x37a751[_0x8566('0xca')](_0x39ad4e)['catch'](loggerCatch(_0x8566('0xf5')));if(_0x37a751[_0x8566('0x19e')](0x0,_0x5796c2,_0x2e7765)){if(_0x39ad4e[_0x8566('0xf9')]>=_0x2e7765['dialNoSuchNumberMaxRetry']){_0x37a751[_0x8566('0x109')](_0x39ad4e,_0x4d9d1b,_0x42a446,'reason\x200\x20no\x20such\x20number....');}else{_0x37a751['stateGlobal'](_0x39ad4e,_0x4d9d1b,_0x42a446,_0x8566('0x1ac'));}}break;case'3':_0x2e7765[_0x8566('0x61')]+=0x1;_0x39ad4e[_0x8566('0xe7')]=0x3;_0x39ad4e[_0x8566('0xa7')]=_0x8566('0x1ad');_0x39ad4e[_0x8566('0xf8')]+=0x1;_0x39ad4e[_0x8566('0xf4')]+=0x1;ami[_0x8566('0xeb')](_0x8566('0x1ae'),ut[_0x8566('0xed')](_0x5796c2,'noanswer'));_0x37a751[_0x8566('0xca')](_0x39ad4e)[_0x8566('0xb1')](loggerCatch(_0x8566('0x1af')));if(_0x37a751[_0x8566('0x19e')](0x3,_0x5796c2,_0x2e7765)){if(_0x39ad4e[_0x8566('0xf8')]>=_0x2e7765[_0x8566('0x19f')]){_0x37a751[_0x8566('0x109')](_0x39ad4e,_0x4d9d1b,_0x42a446,_0x8566('0x1b0'));}else{_0x37a751[_0x8566('0xfe')](_0x39ad4e,_0x4d9d1b,_0x42a446,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x2e7765[_0x8566('0x5e')]+=0x1;_0x39ad4e[_0x8566('0xe7')]=0x5;_0x39ad4e[_0x8566('0xa7')]=_0x8566('0x1b1');_0x39ad4e[_0x8566('0xf6')]+=0x1;_0x39ad4e['countglobal']+=0x1;ami[_0x8566('0xeb')](_0x8566('0x1b2'),ut[_0x8566('0xed')](_0x5796c2,_0x8566('0x1b3')));_0x37a751[_0x8566('0xca')](_0x39ad4e)['catch'](loggerCatch(_0x8566('0x1b4')));if(_0x37a751[_0x8566('0x19e')](0x5,_0x5796c2,_0x2e7765)){if(_0x39ad4e[_0x8566('0xf6')]>=_0x2e7765['dialBusyMaxRetry']){_0x37a751[_0x8566('0x109')](_0x39ad4e,_0x4d9d1b,_0x42a446,'reason\x205\x20busy');}else{_0x37a751[_0x8566('0xfe')](_0x39ad4e,_0x4d9d1b,_0x42a446,_0x8566('0x1b5'));}}break;case'8':_0x2e7765[_0x8566('0x5f')]+=0x1;_0x39ad4e['state']=0x8;_0x39ad4e[_0x8566('0xa7')]=_0x8566('0x1b6');_0x39ad4e['countcongestionretry']+=0x1;_0x39ad4e[_0x8566('0xf4')]+=0x1;ami[_0x8566('0xeb')](_0x8566('0x1b7'),ut[_0x8566('0xed')](_0x5796c2,_0x8566('0x1b8')));_0x37a751[_0x8566('0xca')](_0x39ad4e)['catch'](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x37a751[_0x8566('0x19e')](0x8,_0x5796c2,_0x2e7765)){if(_0x39ad4e[_0x8566('0xf7')]>=_0x2e7765[_0x8566('0x1b9')]){_0x37a751[_0x8566('0x109')](_0x39ad4e,_0x4d9d1b,_0x42a446,_0x8566('0x1ba'));}else{_0x37a751['stateGlobal'](_0x39ad4e,_0x4d9d1b,_0x42a446,'reason\x208\x20congestion');}}break;case'11':_0x2e7765[_0x8566('0x1bb')]+=0x1;_0x39ad4e['state']=0xb;_0x39ad4e[_0x8566('0xa7')]=_0x8566('0x1bc');_0x39ad4e[_0x8566('0xfb')]+=0x1;_0x39ad4e[_0x8566('0xf4')]+=0x1;_0x37a751[_0x8566('0xca')](_0x39ad4e)[_0x8566('0xb1')](loggerCatch(_0x8566('0x12b')));if(_0x37a751['checkRetriveMax'](0xb,_0x5796c2,_0x2e7765)){if(_0x39ad4e[_0x8566('0xfb')]>=_0x2e7765[_0x8566('0x128')]){_0x37a751[_0x8566('0x109')](_0x39ad4e,_0x4d9d1b,_0x42a446,_0x8566('0x1bd'));}else{_0x37a751[_0x8566('0xfe')](_0x39ad4e,_0x4d9d1b,_0x42a446,_0x8566('0x1bd'));}}break;case'20':_0x2e7765[_0x8566('0x1be')]+=0x1;_0x39ad4e[_0x8566('0xe7')]=0x14;_0x39ad4e[_0x8566('0xa7')]=_0x8566('0x1bf');_0x39ad4e[_0x8566('0xfc')]+=0x1;_0x39ad4e[_0x8566('0xf4')]+=0x1;ami[_0x8566('0xeb')](_0x8566('0x1c0'),ut[_0x8566('0xed')](_0x5796c2,_0x8566('0x1c1')));_0x37a751[_0x8566('0xca')](_0x39ad4e)[_0x8566('0xb1')](loggerCatch(_0x8566('0x1c2')));if(_0x37a751[_0x8566('0x19e')](0x14,_0x5796c2,_0x2e7765)){if(_0x39ad4e[_0x8566('0xfc')]>=_0x2e7765['dialAgentRejectMaxRetry']){_0x37a751[_0x8566('0x109')](_0x39ad4e,_0x4d9d1b,_0x42a446,'reason\x2020\x20agentreject');}else{_0x37a751[_0x8566('0xfe')](_0x39ad4e,_0x4d9d1b,_0x42a446,_0x8566('0x1c3'));}}break;default:_0x2e7765[_0x8566('0x64')]+=0x1;_0x39ad4e[_0x8566('0xe7')]=0xc;_0x39ad4e[_0x8566('0xa7')]=_0x33a8ff[_0x8566('0x112')];_0x37a751[_0x8566('0xca')](_0x39ad4e)[_0x8566('0xb1')](loggerCatch(_0x8566('0x1c4')));if(_0x37a751[_0x8566('0x19e')](_0x33a8ff[_0x8566('0x112')],_0x5796c2,_0x2e7765)){if(_0x39ad4e[_0x8566('0xf6')]+_0x39ad4e[_0x8566('0xf7')]+_0x39ad4e[_0x8566('0xf8')]+_0x39ad4e[_0x8566('0xf9')]+_0x39ad4e[_0x8566('0xfa')]+_0x39ad4e[_0x8566('0xfb')]+_0x39ad4e['countmachineretry']+_0x39ad4e[_0x8566('0xfc')]>=_0x2e7765[_0x8566('0xfd')]){_0x37a751[_0x8566('0xfe')](_0x39ad4e,_0x4d9d1b,_0x42a446,_0x33a8ff['reason']);}else{_0x37a751['createStateFinal'](_0x39ad4e,_0x4d9d1b,_0x42a446,_0x33a8ff[_0x8566('0x112')]);}}}});};Dialer[_0x8566('0xaa')][_0x8566('0xfe')]=function(_0x23ac71,_0xdd4dfd,_0x5884fa,_0x8b3df3){var _0x2d2b19=new Final(_0x23ac71);_0x2d2b19[_0x8566('0xe7')]=0xf;_0x2d2b19[_0x8566('0xa7')]=_0x8566('0x1c5');this[_0x8566('0x109')](_0x2d2b19,_0xdd4dfd,_0x5884fa,_0x8b3df3);};Dialer['prototype']['createStateFinal']=function(_0x2210b3,_0x4cbbb3,_0x54e308,_0x162a6b){this[_0x8566('0xc8')](_0x2210b3)[_0x8566('0xb7')](function(){return _0x4cbbb3(msgResponse(_0x8566('0x1a8'),_0x8566('0xd7'),_0x162a6b));})[_0x8566('0xb1')](function(){return _0x54e308(msgResponse('[moveContactManagedDialer][0]','Failure',_0x8566('0x1c6')));});};Dialer[_0x8566('0xaa')][_0x8566('0xc')]=function(_0x226237){var _0x200cf7=_0x226237[_0x8566('0x1c7')]/0x64;var _0x4f092e=_0x226237[_0x8566('0x11d')]/(_0x226237[_0x8566('0x11d')]+_0x226237[_0x8566('0x5c')]);var _0x38f37d=Math[_0x8566('0x1c8')](_0x226237[_0x8566('0x1c9')]*(_0x226237[_0x8566('0x1ca')]/0x64));var _0x222db0=Math['round'](_0x226237[_0x8566('0x1c9')]*(_0x226237[_0x8566('0x1cb')]/0x64));var _0x4de9f5=_0x226237[_0x8566('0x4e')]+_0x226237[_0x8566('0x50')];var _0x9ffe11=Math['floor'](_0x226237[_0x8566('0x6d')]*_0x226237['erlangAbandonmentRate']*_0x226237[_0x8566('0x69')]*_0x226237['predictiveIntervalMultiplicativeFactor']);if(_['isUndefined'](_0x226237[_0x8566('0x26')])){if(!_['isUndefined'](_0x226237['startPredictive'])){_0x226237[_0x8566('0x25')]=undefined;loggerPredictive[_0x8566('0x93')]('[startMethodPredictive][StartProgressive]',_0x8566('0x1cc'));}if(!_[_0x8566('0x3d')](_0x226237[_0x8566('0x8d')])){loggerPredictive[_0x8566('0x93')](_0x8566('0x1cd'),_0x8566('0x1ce'));clearInterval(_0x226237[_0x8566('0x8d')]);_0x226237[_0x8566('0x8d')]=undefined;}_0x226237[_0x8566('0x26')]=moment()[_0x8566('0x72')](_0x8566('0x104'));loggerPredictive[_0x8566('0x77')](_0x226237[_0x8566('0x46')],_0x8566('0x1cf'),_0x226237['startProgressive']);this['handlePower'](_0x226237,0x1);}else if(ifInterval(_0x226237[_0x8566('0x1d0')],_0x226237['startProgressive'])){this[_0x8566('0x15e')](_0x226237,0x1);loggerPredictiveCalls['info'](_0x8566('0x1d1'),_0x226237['startProgressive'],_0x226237[_0x8566('0x46')]);_0x226237[_0x8566('0x6d')]=0x0;_0x226237[_0x8566('0x11e')]=0x0;}else if(_0x200cf7<_0x4f092e&&_0x226237[_0x8566('0x1d2')]===_0x8566('0x1d3')){freeVariablesPredictive(_0x226237);loggerPredictive[_0x8566('0x77')](_0x8566('0x1d4'),_0x8566('0x1d5'),_0x4f092e,_0x8566('0x26'),_0x226237[_0x8566('0x46')]);}else if(_0x9ffe11<_0x226237[_0x8566('0x11e')]&&_0x226237['dialPredictiveOptimization']===_0x8566('0x1d3')){freeVariablesPredictive(_0x226237);loggerPredictive[_0x8566('0x77')](_0x8566('0x1d6'),_0x8566('0x1d7'),_0x9ffe11,_0x8566('0x1d8'),_0x226237['predictiveIntervalErlangCallsDroppedCalls'],_0x8566('0x26'),_0x226237[_0x8566('0x46')]);}else if(!ifInterval(_0x226237[_0x8566('0x1d0')],_0x226237[_0x8566('0x26')])&&_['isUndefined'](_0x226237[_0x8566('0x25')])&&!_[_0x8566('0x3d')](_0x226237[_0x8566('0x26')])){_0x226237[_0x8566('0x25')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x8566('0x77')](_0x226237[_0x8566('0x46')],_0x8566('0x1d9'),_0x226237[_0x8566('0x25')]);this['averageHandleTime'](_0x226237[_0x8566('0x1d0')])[_0x8566('0xb7')](this[_0x8566('0x1da')](_0x226237))[_0x8566('0xb7')](mergeDataErlangB(_0x226237))[_0x8566('0xb7')](this[_0x8566('0x1db')](_0x226237))['catch'](loggerCatchPredictive(_0x8566('0x1dc'),_0x226237));}else if(!ifInterval(_0x226237[_0x8566('0x1d0')],_0x226237[_0x8566('0x25')])){_0x226237[_0x8566('0x11e')]=0x0;_0x226237[_0x8566('0x25')]=moment()['format'](_0x8566('0x104'));loggerPredictive[_0x8566('0x77')](_0x226237[_0x8566('0x46')],_0x8566('0x1dd'),_0x226237['startPredictive']);clearInterval(_0x226237[_0x8566('0x8d')]);_0x226237[_0x8566('0x8d')]=undefined;this[_0x8566('0xbd')](_0x226237['dialPredictiveInterval'])[_0x8566('0xb7')](this[_0x8566('0x1da')](_0x226237))['then'](mergeDataErlangB(_0x226237))[_0x8566('0xb7')](this[_0x8566('0x1db')](_0x226237))[_0x8566('0xb1')](loggerCatchPredictive(_0x8566('0x1de'),_0x226237));}else if(_0x226237[_0x8566('0x1c9')]&&_0x4de9f5<_0x226237[_0x8566('0x1c9')]-_0x222db0){freeVariablesPredictive(_0x226237);loggerPredictive['info'](_0x226237[_0x8566('0x46')],_0x8566('0x1df'),_0x4de9f5,')\x20are\x20less\x20than\x20threshold\x20(',_0x226237[_0x8566('0x1c9')],'-',_0x222db0,'=',_0x226237[_0x8566('0x1c9')]-_0x222db0,')');}else if(_0x226237[_0x8566('0x1c9')]&&_0x4de9f5>_0x226237[_0x8566('0x1c9')]+_0x38f37d){freeVariablesPredictive(_0x226237);loggerPredictive['info'](_0x226237[_0x8566('0x46')],_0x8566('0x1df'),_0x4de9f5,_0x8566('0x1e0'),_0x226237['predictiveIntervalAvailable'],'+',_0x38f37d,'=',_0x226237[_0x8566('0x1c9')]+_0x38f37d,')');}};Dialer[_0x8566('0xaa')][_0x8566('0x1da')]=function(_0x63a779){var _0x4012cb=this;return function(_0x42a31c){return new BPromise(function(_0x4a1bf2,_0xadb00a){_[_0x8566('0x8a')](_0x63a779,_0x42a31c[0x0]);if(checkGetDataPredictive(_0x42a31c[0x0])){var _0x4e5861=_0x63a779[_0x8566('0x1c9')]=_0x63a779[_0x8566('0x50')]+_0x63a779[_0x8566('0x4e')];var _0x16e3f1=_0x63a779[_0x8566('0x1d0')]*0x3c;var _0x531aca=_0x42a31c[0x0]['predictiveIntervalAvgTalktime']+_0x42a31c[0x0]['predictiveIntervalAvgHoldtime'];var _0x3278c2=(_0x42a31c[0x0]['predictiveIntervalAnsweredCalls']+_0x42a31c[0x0][_0x8566('0x68')]+_0x42a31c[0x0][_0x8566('0x67')])/_0x42a31c[0x0][_0x8566('0x6c')];_0x63a779['predictiveIntervalHitRate']=_0x3278c2>0x0?_0x3278c2:0x1;switch(_0x63a779[_0x8566('0x1d2')]){case _0x8566('0x1d3'):var _0x2abbc4=_0x63a779['dialPredictiveOptimizationPercentage']/0x64;return _0x4012cb[_0x8566('0x1e1')](_0x4e5861,_0x16e3f1,_0x531aca,_0x3278c2,_0x2abbc4)['then'](function(_0x387ffe){return _0x4a1bf2(_0x387ffe);});case _0x8566('0x1e2'):var _0x4c6bf0=_0x63a779[_0x8566('0x1c7')]/0x64;return _0x4012cb['busyFactor'](_0x4e5861,_0x16e3f1,_0x531aca,_0x3278c2,_0x4c6bf0)[_0x8566('0xb7')](function(_0x1832d5){return _0x4a1bf2(_0x1832d5);});default:return _0xadb00a(msgResponse('[getDataPredictive]',_0x8566('0x14c'),_0x8566('0x1e3')));}}else{return _0xadb00a(msgResponse(_0x8566('0x1e4'),_0x8566('0x14c'),_0x8566('0x1e5')));}});};};Dialer[_0x8566('0xaa')][_0x8566('0x1e6')]=function(_0x488ab2){var _0x26c470=this;return function(_0x34ab25){return new BPromise(function(_0x45c263,_0x2ea456){_[_0x8566('0x8a')](_0x488ab2,_0x34ab25[0x0]);if(checkGetDataPredictive(_0x34ab25[0x0])){loggerPredictive[_0x8566('0x77')](JSON['stringify'](_0x34ab25[0x0]));if(_0x488ab2[_0x8566('0x1d2')]===_0x8566('0x1d3')){return _0x26c470['getVoiceQueueRtPauses'](_0x488ab2['id'])[_0x8566('0xb7')](function(_0x503361){var _0x3e44f3=_0x488ab2[_0x8566('0x1e7')]-_0x503361[0x0]['outboundQueuePauses'];var _0x1ad76f=_0x488ab2[_0x8566('0x1d0')]*0x3c;var _0x4c5fb6=_0x34ab25[0x0][_0x8566('0x66')]+_0x34ab25[0x0][_0x8566('0x65')];var _0x2ee71d=(_0x34ab25[0x0][_0x8566('0x7b')]+_0x34ab25[0x0][_0x8566('0x68')]+_0x34ab25[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x34ab25[0x0]['predictiveIntervalTotalCalls'];var _0x763c28=_0x488ab2[_0x8566('0x1c7')]/0x64;_0x488ab2[_0x8566('0x6b')]=_0x503361[0x0][_0x8566('0x1e8')]||0x0;_0x488ab2[_0x8566('0x69')]=_0x2ee71d>0x0?_0x2ee71d:0x1;return _0x26c470[_0x8566('0x1e1')](_0x3e44f3,_0x1ad76f,_0x4c5fb6,_0x2ee71d,_0x763c28);})[_0x8566('0xb7')](function(_0x2518d8){return _0x45c263(_0x2518d8);})['catch'](function(_0x13a591){return _0x2ea456(msgResponse(_0x8566('0x1e9'),_0x8566('0x14c'),JSON['stringify'](_0x13a591)));});}if(_0x488ab2['dialPredictiveOptimization']===_0x8566('0x1e2')){return _0x26c470['getVoiceQueueRtPauses'](_0x488ab2['id'])['then'](function(_0x544be0){var _0x2914d9=_0x488ab2[_0x8566('0x1e7')]-_0x544be0[0x0][_0x8566('0x1e8')];var _0x3da3e5=_0x488ab2[_0x8566('0x1d0')]*0x3c;var _0x3f9a66=_0x34ab25[0x0][_0x8566('0x66')]+_0x34ab25[0x0][_0x8566('0x65')];var _0x572aea=(_0x34ab25[0x0][_0x8566('0x7b')]+_0x34ab25[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x34ab25[0x0][_0x8566('0x67')])/_0x34ab25[0x0][_0x8566('0x6c')];var _0x22ff42=_0x488ab2[_0x8566('0x1c7')]/0x64;_0x488ab2[_0x8566('0x6b')]=_0x544be0[0x0][_0x8566('0x1e8')]||0x0;_0x488ab2[_0x8566('0x69')]=_0x572aea>0x0?_0x572aea:0x1;return _0x26c470[_0x8566('0x1ea')](_0x2914d9,_0x3da3e5,_0x3f9a66,_0x572aea,_0x22ff42);})[_0x8566('0xb7')](function(_0x18bcb1){return _0x45c263(_0x18bcb1);})[_0x8566('0xb1')](function(_0x57fedf){return _0x2ea456(msgResponse(_0x8566('0x1e9'),_0x8566('0x14c'),JSON['stringify'](_0x57fedf)));});}}else{return _0x2ea456(msgResponse(_0x8566('0x1e4'),_0x8566('0x14c'),'check\x20failure'));}});};};Dialer[_0x8566('0xaa')]['startMethodPredictive']=function(_0x15ac99){var _0x12c770=this;return function(){var _0x1b0f9b=0x0;var _0x36d8b7=Math['floor'](_0x15ac99[_0x8566('0x6e')]*0x3e8);if(_0x36d8b7>0x0){_0x36d8b7=_0x36d8b7<0x64?0x64:_0x36d8b7;loggerPredictive['info'](_0x15ac99[_0x8566('0x46')],_0x8566('0x1eb'),_0x36d8b7,_0x8566('0x4a'));_0x15ac99[_0x8566('0x8d')]=setInterval(function(){_0x12c770[_0x8566('0x8d')](_0x15ac99);loggerPredictiveCalls['info']('[handlePredictive]',_0x1b0f9b+=0x1);},_0x36d8b7);}else{loggerPredictive[_0x8566('0x77')](_0x15ac99[_0x8566('0x46')],_0x8566('0x1ec'));}};};Dialer['prototype'][_0x8566('0x1ed')]=function(_0x139033,_0x102eb0){var _0xef21c3=this;return function(_0x4df8d8){if(_[_0x8566('0x47')](_0x4df8d8)){if(_[_0x8566('0xdf')](_0x102eb0[_0x8566('0xd2')])||!_0x102eb0['recallme']){if(_0x139033[_0x8566('0x57')]===_0x8566('0xb')){_0x139033['queueStatusComplete']=_[_0x8566('0x3d')](_0x139033['queueStatusComplete'])?!![]:_0x139033[_0x8566('0x133')];var _0x307f1f=uuid['v4']();_0xef21c3['actions'][_0x307f1f]=new Action(_0x139033,_0x102eb0,_0x307f1f);loggerBooked[_0x8566('0x77')](_0x8566('0x1ee'),_0x307f1f,_0x8566('0x1ef'),JSON[_0x8566('0x49')](_0x139033[_0x8566('0x133')]),_0x8566('0x1f0'),_0x139033[_0x8566('0x46')]);if(_0x139033[_0x8566('0x133')]){_0x139033[_0x8566('0x133')]=![];_0xef21c3[_0x8566('0x28')][_0xef21c3[_0x8566('0xad')][_0x307f1f][_0x8566('0xb3')]]=[];ami['Action']({'actionid':_0x307f1f,'action':_0x8566('0x1f1'),'queue':_0x139033[_0x8566('0x46')]})[_0x8566('0xb1')](function(){_0xef21c3[_0x8566('0xb4')](_0x139033);_0xef21c3[_0x8566('0xc0')]({'active':![],'ContactId':_0xef21c3[_0x8566('0xad')][_0x307f1f]['ContactId'],'ListId':_0xef21c3[_0x8566('0xad')][_0x307f1f][_0x8566('0xd1')],'VoiceQueueId':_0xef21c3[_0x8566('0xad')][_0x307f1f]['VoiceQueueId']||undefined,'CampaignId':_0xef21c3[_0x8566('0xad')][_0x307f1f][_0x8566('0x105')]||undefined})['catch'](loggerCatch(_0x8566('0x1f2')));delete _0xef21c3[_0x8566('0xad')][_0x307f1f];});}else{loggerBooked[_0x8566('0x77')](_0x8566('0x1f3'),JSON[_0x8566('0x49')](_0x139033[_0x8566('0x133')]),_0x8566('0x1f0'),_0x139033[_0x8566('0x46')]);_0xef21c3[_0x8566('0xb4')](_0x139033);_0xef21c3[_0x8566('0xc0')]({'active':![],'ContactId':_0xef21c3['actions'][_0x307f1f][_0x8566('0xd0')],'ListId':_0xef21c3['actions'][_0x307f1f][_0x8566('0xd1')],'VoiceQueueId':_0xef21c3[_0x8566('0xad')][_0x307f1f][_0x8566('0xd3')]||undefined,'CampaignId':_0xef21c3[_0x8566('0xad')][_0x307f1f][_0x8566('0x105')]||undefined})[_0x8566('0xb1')](loggerCatch(_0x8566('0x1f2')));delete _0xef21c3[_0x8566('0xad')][_0x307f1f];}}else{return _0xef21c3['actionOriginate'](_0x139033,_0x102eb0);}}else{if(getDiff(_0x102eb0[_0x8566('0x1f4')])<_0x139033[_0x8566('0x1f5')]*0x3c){if(_0x102eb0[_0x8566('0x1f6')]&&!_0x102eb0[_0x8566('0x1f6')][_0x8566('0x1f7')]){_0xef21c3[_0x8566('0x1c')][_0x8566('0x13e')](_0x102eb0['id'])['finally'](function(){_0xef21c3['updateOriginated'](_0x139033);});}else{_0xef21c3[_0x8566('0xc1')]({'active':![]},_0x102eb0['id'],0x1)[_0x8566('0x1a')](function(){_0xef21c3['updateOriginated'](_0x139033);});}}else{_0x139033[_0x8566('0x63')]+=0x1;_0xef21c3[_0x8566('0xb4')](_0x139033);if(_0x139033[_0x8566('0x1f8')]){_0xef21c3[_0x8566('0xc0')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x102eb0[_0x8566('0xd0')],'ListId':_0x102eb0[_0x8566('0xd1')],'VoiceQueueId':_0x102eb0[_0x8566('0xd3')]||undefined,'CampaignId':_0x102eb0[_0x8566('0x105')]||undefined})[_0x8566('0xb1')](loggerCatch(_0x8566('0x1f9')));_0xef21c3['createHistory'](createObjHistory(_0x139033,_0x102eb0,_0x8566('0x1fa'),0x17,_0x8566('0x1fb')))[_0x8566('0xb1')](loggerCatch(_0x8566('0x1fc')));}else{_0xef21c3[_0x8566('0xce')](createObjHistory(_0x139033,_0x102eb0,'RECALLFAILEDTIMEOUT',0x16,_0x8566('0x1fd')),_0x8566('0x1fe'),_0x8566('0x1ff'));}}}}else{_0x139033[_0x8566('0x5d')]+=0x1;_0xef21c3['saveInDb'](createObjHistory(_0x139033,_0x102eb0,'BLACKLIST',0xd,'Blacklist'),_0x8566('0x200'),'[Originate][MoveBlacklist]');throw'inBlackList';}};};Dialer[_0x8566('0xaa')][_0x8566('0x163')]=function(_0x4e273b){var _0x4c722b=this;var _0x47a329=_0x4e273b[_0x8566('0x201')]-_0x4e273b['originated']-_0x4e273b[_0x8566('0xc4')];emitCampaignSummary(_0x4e273b);if(_0x47a329>0x0){if(_0x47a329>this[_0x8566('0x20')]){_0x47a329=this['maxNumberOriginate'];}_0x4e273b[_0x8566('0xc4')]+=_0x47a329;this['getContactDialerIvr'](_0x4e273b['id'],_0x47a329,_0x4e273b['dialOrderByScheduledAt'],_0x4e273b)['then'](function(_0x56dec1){_0x4e273b['temp']-=_0x47a329;_0x4e273b[_0x8566('0xc4')]=_0x4e273b[_0x8566('0xc4')]>0x0?_0x4e273b[_0x8566('0xc4')]:0x0;if(!checkContactEmpty(_0x56dec1)){_0x4e273b['message']=_0x8566('0x9e');logger[_0x8566('0x77')](_0x8566('0x202')+_0x4e273b[_0x8566('0x46')]);}else{_0x4e273b[_0x8566('0x97')]+=_0x56dec1['length'];_0x4e273b[_0x8566('0x3e')]=_0x8566('0x203');for(var _0x458c82=0x0;_0x458c82<_0x56dec1[_0x8566('0x96')];_0x458c82+=0x1){_0x4e273b[_0x8566('0x204')]+=0x1;if(_['isNil'](_0x56dec1[_0x458c82])||_['isNil'](_0x56dec1[_0x458c82]['Contact'])||_['isNil'](_0x56dec1[_0x458c82][_0x8566('0x172')][_0x8566('0x173')])){_0x4c722b[_0x8566('0xcc')](_0x8566('0x205'),_0x4e273b,_0x56dec1[_0x458c82]);}else{_0x4c722b['checkIsBlackListIvr'](_[_0x8566('0xcf')](_0x56dec1[_0x458c82],[_0x8566('0x105'),_0x8566('0x206')]))[_0x8566('0xb7')](_0x4c722b[_0x8566('0x1ed')](_0x4e273b,_0x56dec1[_0x458c82]))[_0x8566('0xb1')](_0x4c722b['loggerHandler'](_0x8566('0x207'),_0x4e273b));}}}})[_0x8566('0xb1')](loggerGetContactDialer(_0x8566('0x208'),_0x4e273b,_0x47a329));}};Dialer['prototype'][_0x8566('0x15e')]=function(_0x2ac9e6,_0x2af97a){var _0x265f06=this;var _0x3c7b02=[];var _0x55fcac=_0x2af97a>=0x1?_0x2af97a:0x1;if(_0x2ac9e6['dialMethod']===_0x8566('0xb')){_0x55fcac=0x1;}var _0x36ea7d=Math['floor'](_0x2ac9e6[_0x8566('0x4e')]*_0x55fcac)-_0x2ac9e6[_0x8566('0x97')]-_0x2ac9e6[_0x8566('0xc4')];emitVoiceQueueSummary(_0x2ac9e6);if(_0x2ac9e6[_0x8566('0x209')]>0x0){var _0x137715=_0x2ac9e6[_0x8566('0x209')]-_0x2ac9e6[_0x8566('0x97')]-_0x2ac9e6[_0x8566('0x50')]-_0x2ac9e6['temp']-_0x2ac9e6['pTalking'];if(_0x36ea7d>_0x137715){_0x36ea7d=_0x137715;}}if(_0x36ea7d>0x0){if(_0x2ac9e6[_0x8566('0x57')]===_0x8566('0xb')){_0x36ea7d=0x1;}if(_0x36ea7d>this[_0x8566('0x20')]){_0x36ea7d=this[_0x8566('0x20')];}_0x2ac9e6[_0x8566('0xc4')]+=_0x36ea7d;for(var _0x5d9c75 in this[_0x8566('0x1f')]){if(typeof this[_0x8566('0x1f')][_0x5d9c75]!=='undefined'){if(this['agents'][_0x5d9c75][_0x8566('0xe7')]===_0x8566('0x20a')&&this[_0x8566('0x1f')][_0x5d9c75]['status']===_0x8566('0xdc')){_0x3c7b02[_0x8566('0x131')](this[_0x8566('0x1f')][_0x5d9c75]['id']);}}}this[_0x8566('0xc3')](_0x2ac9e6['id'],_0x3c7b02,_0x36ea7d,_0x2ac9e6[_0x8566('0x20b')],_0x2ac9e6)[_0x8566('0xb7')](function(_0x45563d){_0x2ac9e6[_0x8566('0xc4')]-=_0x36ea7d;_0x2ac9e6[_0x8566('0xc4')]=_0x2ac9e6['temp']>0x0?_0x2ac9e6[_0x8566('0xc4')]:0x0;if(!checkContactEmpty(_0x45563d)){_0x265f06[_0x8566('0xb5')](_0x2ac9e6)[_0x8566('0xb7')](sendMessageReschedule(_0x2ac9e6))[_0x8566('0xb1')](loggerCatch(_0x8566('0xb8')));}else{_0x2ac9e6[_0x8566('0x97')]+=_0x45563d[_0x8566('0x96')];_0x2ac9e6[_0x8566('0x3e')]=_0x2ac9e6[_0x8566('0x57')]==='booked'?'ACTIVE':_0x8566('0x203');for(var _0x319817=0x0;_0x319817<_0x45563d[_0x8566('0x96')];_0x319817+=0x1){if(_['isNil'](_0x45563d[_0x319817])||_[_0x8566('0xdf')](_0x45563d[_0x319817][_0x8566('0x172')])||_['isNil'](_0x45563d[_0x319817][_0x8566('0x172')][_0x8566('0x173')])){_0x265f06[_0x8566('0xcc')](_0x8566('0x205'),_0x2ac9e6,_0x45563d[_0x319817]);}else{_0x265f06['checkIsBlackList'](_[_0x8566('0xcf')](_0x45563d[_0x319817],[_0x8566('0xd3'),_0x8566('0x206')]))[_0x8566('0xb7')](_0x265f06[_0x8566('0x1ed')](_0x2ac9e6,_0x45563d[_0x319817]))[_0x8566('0xb1')](_0x265f06[_0x8566('0x20c')](_0x8566('0x205'),_0x2ac9e6));}}}})[_0x8566('0xb1')](loggerGetContactDialer(_0x8566('0x20d'),_0x2ac9e6,_0x36ea7d));}};Dialer[_0x8566('0xaa')]['handlePredictive']=function(_0x5c724f){if(_0x5c724f[_0x8566('0x209')]>0x0){var _0x53be47=_0x5c724f[_0x8566('0x209')]-_0x5c724f[_0x8566('0x97')]-_0x5c724f[_0x8566('0x50')];if(_0x53be47>0x0){this[_0x8566('0x20e')](_0x5c724f);}else{loggerPredictiveCalls[_0x8566('0x77')](_0x8566('0x20f'));}}else{this['tryOriginatePredictive'](_0x5c724f);}};Dialer[_0x8566('0xaa')]['tryOriginatePredictive']=function(_0x4c96c9){var _0x567165=this;var _0x2536ff=[];_0x4c96c9[_0x8566('0x97')]+=0x1;for(var _0x555bfd in this[_0x8566('0x1f')]){if(typeof this[_0x8566('0x1f')][_0x555bfd]!==_0x8566('0x98')){if(this[_0x8566('0x1f')][_0x555bfd][_0x8566('0xe7')]===_0x8566('0x20a')&&this[_0x8566('0x1f')][_0x555bfd][_0x8566('0xaf')]===_0x8566('0xdc')){_0x2536ff['push'](this[_0x8566('0x1f')][_0x555bfd]['id']);}}}this[_0x8566('0xc3')](_0x4c96c9['id'],_0x2536ff,0x1,_0x4c96c9[_0x8566('0x20b')],_0x4c96c9)[_0x8566('0xb7')](function(_0x46c416){if(!checkContactEmpty(_0x46c416)){checkContactLowerLimitOriginate(_0x4c96c9,0x1,0x0);_0x567165[_0x8566('0xb5')](_0x4c96c9)[_0x8566('0xb7')](sendMessageReschedule(_0x4c96c9))[_0x8566('0xb1')](loggerCatch(_0x8566('0xb8')));}else{_0x4c96c9[_0x8566('0x3e')]=_0x8566('0x203');if(_[_0x8566('0xdf')](_0x46c416[0x0])||_[_0x8566('0xdf')](_0x46c416[0x0][_0x8566('0x172')])||_[_0x8566('0xdf')](_0x46c416[0x0][_0x8566('0x172')][_0x8566('0x173')])){_0x567165[_0x8566('0xcc')](_0x8566('0x205'),_0x4c96c9,_0x46c416[0x0]);}else{_0x567165['checkIsBlackList'](_[_0x8566('0xcf')](_0x46c416[0x0],['VoiceQueueId',_0x8566('0x206')]))[_0x8566('0xb7')](_0x567165[_0x8566('0x1ed')](_0x4c96c9,_0x46c416[0x0]))[_0x8566('0xb1')](_0x567165[_0x8566('0x20c')](_0x8566('0x210'),_0x4c96c9));}}})['catch'](loggerGetContactDialer(_0x8566('0x211'),_0x4c96c9,0x1));emitVoiceQueueSummary(_0x4c96c9);};Dialer[_0x8566('0xaa')][_0x8566('0x1e1')]=function(_0x38cbbe,_0x551a55,_0x4474a6,_0x592d44,_0x23d1fb,_0x218f7c){loggerPredictive[_0x8566('0x77')](_0x8566('0x212'));loggerPredictive[_0x8566('0x77')](_0x8566('0x213'),_0x38cbbe);loggerPredictive[_0x8566('0x77')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x551a55);loggerPredictive['info'](_0x8566('0x214'),_0x4474a6);loggerPredictive['info'](_0x8566('0x215'),_0x592d44);loggerPredictive[_0x8566('0x77')](_0x8566('0x216'),_0x23d1fb);loggerPredictive[_0x8566('0x77')]('---------------------------');return new BPromise(function(_0x11336a,_0x53742f){if(_0x38cbbe<=0x0||isNaN(_0x38cbbe)){return _0x53742f(msgResponse(_0x8566('0x217'),_0x8566('0x48'),_0x8566('0x218')+_0x38cbbe));}if(_0x4474a6<=0x0||isNaN(_0x4474a6)){return _0x53742f(msgResponse(_0x8566('0x217'),_0x8566('0x48'),_0x8566('0x219')+_0x4474a6));}if(_0x592d44<=0x0||isNaN(_0x592d44)){return _0x53742f(msgResponse(_0x8566('0x217'),_0x8566('0x48'),_0x8566('0x21a')+_0x592d44));}if(_0x551a55<=0x0||isNaN(_0x551a55)){return _0x53742f(msgResponse('[abandonmentRate]','Error','interval\x20=\x20'+_0x551a55));}if(_0x23d1fb<=0x0||isNaN(_0x23d1fb)){return _0x53742f(msgResponse('[abandonmentRate]',_0x8566('0x48'),_0x8566('0x21b')+_0x23d1fb));}_0x218f7c=_0x218f7c||0x0;var _0xf635f9=0x1/_0x4474a6;var _0x2c9322=0x0;var _0x3d9684=0x0;var _0x4972be=0x0;var _0x2f1455=0x0;for(var _0xf5cd8b=0x0;_0x4972be<_0x23d1fb;_0xf5cd8b+=0x1){_0x3d9684=_0xf5cd8b/_0x551a55;_0x2c9322=(_0x592d44*_0x3d9684+_0x218f7c)/_0xf635f9;_0x4972be=erlangb(_0x2c9322,_0x38cbbe);_0x2f1455=_0x2c9322/_0x38cbbe*(0x1-erlangb(_0x2c9322,_0x38cbbe));}return _0x11336a({'erlangCalls':_0xf5cd8b,'erlangCallToSecond':_0x551a55/_0xf5cd8b,'erlangAbandonmentRate':_0x4972be,'erlangBusyFactor':_0x2f1455});});};Dialer[_0x8566('0xaa')][_0x8566('0x1ea')]=function(_0x3433f7,_0x497d70,_0x44ce20,_0x2beeab,_0x44a279,_0xf22dcb){loggerPredictive[_0x8566('0x77')](_0x8566('0x21c'));loggerPredictive[_0x8566('0x77')](_0x8566('0x213'),_0x3433f7);loggerPredictive[_0x8566('0x77')](_0x8566('0x21d'),_0x497d70);loggerPredictive[_0x8566('0x77')]('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',_0x44ce20);loggerPredictive[_0x8566('0x77')](_0x8566('0x215'),_0x2beeab);loggerPredictive[_0x8566('0x77')](_0x8566('0x21e'),_0x44a279);loggerPredictive['info'](_0x8566('0x89'));return new BPromise(function(_0x5a5eaa,_0x22b262){if(_0x3433f7<=0x0||isNaN(_0x3433f7)){return _0x22b262(msgResponse(_0x8566('0x21f'),'Error',_0x8566('0x218')+_0x3433f7));}if(_0x44ce20<=0x0||isNaN(_0x44ce20)){return _0x22b262(msgResponse(_0x8566('0x21f'),_0x8566('0x48'),_0x8566('0x219')+_0x44ce20));}if(_0x2beeab<=0x0||isNaN(_0x2beeab)){return _0x22b262(msgResponse(_0x8566('0x21f'),_0x8566('0x48'),'p\x20=\x20'+_0x2beeab));}if(_0x497d70<=0x0||isNaN(_0x497d70)){return _0x22b262(msgResponse(_0x8566('0x21f'),_0x8566('0x48'),_0x8566('0x220')+_0x497d70));}if(_0x44a279<=0x0||isNaN(_0x44a279)){return _0x22b262(msgResponse(_0x8566('0x21f'),_0x8566('0x48'),_0x8566('0x221')+_0x44a279));}_0xf22dcb=_0xf22dcb||0x0;var _0x5da646=0x1/_0x44ce20;var _0xab866e=0x0;var _0x7927d=0x0;var _0x314721=0x0;var _0x301ac4=0x0;for(var _0x49f1b5=0x0;_0x301ac4<_0x44a279;_0x49f1b5+=0x1){_0x7927d=_0x49f1b5/_0x497d70;_0xab866e=(_0x2beeab*_0x7927d+_0xf22dcb)/_0x5da646;_0x314721=erlangb(_0xab866e,_0x3433f7);_0x301ac4=_0xab866e/_0x3433f7*(0x1-erlangb(_0xab866e,_0x3433f7));}return _0x5a5eaa({'erlangCalls':_0x49f1b5,'erlangCallToSecond':_0x497d70/_0x49f1b5,'erlangAbandonmentRate':_0x314721,'erlangBusyFactor':_0x301ac4});});};module[_0x8566('0x222')]=Dialer;
\ No newline at end of file
index dbdd8e5..b2dff32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x076d=['name','calleridnum','starttime','responsetime','endtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','util','moment','diff','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname'];(function(_0x46ba36,_0x3a8f01){var _0x3fc678=function(_0x322b07){while(--_0x322b07){_0x46ba36['push'](_0x46ba36['shift']());}};_0x3fc678(++_0x3a8f01);}(_0x076d,0x1a9));var _0xd076=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x076d[_0x13d07a];return _0x5ee0ee;};'use strict';var util=require(_0xd076('0x0'));var _=require('lodash');var moment=require(_0xd076('0x1'));function getSeconds(_0x12a151,_0x2de4a3){var _0x4f19cc=moment(_0x12a151)['milliseconds'](0x0);var _0x3fa508=moment(_0x2de4a3)['milliseconds'](0x0);return _0x4f19cc[_0xd076('0x2')](_0x3fa508,'seconds');}function QueueCallerAbandon(_0x8e6cbc,_0x162bef){this[_0xd076('0x3')]=_0x8e6cbc[_0xd076('0x3')];this[_0xd076('0x4')]=_0x8e6cbc[_0xd076('0x4')];this[_0xd076('0x5')]=_0x8e6cbc[_0xd076('0x4')]===_0xd076('0x6')?_0xd076('0x7'):_0x8e6cbc[_0xd076('0x4')];this[_0xd076('0x8')]=_0x8e6cbc[_0xd076('0x8')];this[_0xd076('0x9')]=_0x8e6cbc[_0xd076('0x9')];this[_0xd076('0xa')]=_0x8e6cbc[_0xd076('0xa')];this[_0xd076('0xb')]=_0x8e6cbc[_0xd076('0x8')]+_0x8e6cbc[_0xd076('0x9')]+_0x8e6cbc[_0xd076('0xa')]+_0x8e6cbc[_0xd076('0xc')]+_0x8e6cbc[_0xd076('0xd')]+_0x8e6cbc[_0xd076('0xe')]+_0x8e6cbc[_0xd076('0xf')]+_0x8e6cbc['countagentrejectretry'];this['countnosuchnumberretry']=_0x8e6cbc['countnosuchnumberretry'];this['countdropretry']=_0x8e6cbc[_0xd076('0xd')];this[_0xd076('0xe')]=_0x8e6cbc[_0xd076('0xe')];this[_0xd076('0xf')]=_0x8e6cbc['countmachineretry'];this[_0xd076('0x10')]=_0x8e6cbc[_0xd076('0x10')];this[_0xd076('0x11')]=_0x162bef[_0xd076('0x11')];this[_0xd076('0x12')]=_0x8e6cbc[_0xd076('0x13')];this[_0xd076('0x14')]=_0x8e6cbc['number'];this[_0xd076('0x15')]=_0x8e6cbc['starttime'];this['responsetime']=_0x8e6cbc[_0xd076('0x16')];this['droptime']=_0x8e6cbc['droptime'];this[_0xd076('0x17')]=this['droptime'];this['ringtime']=getSeconds(_0x8e6cbc[_0xd076('0x16')],_0x8e6cbc[_0xd076('0x15')]);this['holdtime']=getSeconds(this['droptime'],_0x8e6cbc[_0xd076('0x16')]);this[_0xd076('0x18')]=0x0;this['queue']=_0x162bef['queue'];this[_0xd076('0x19')]=_0x162bef['connectedlinename'];this[_0xd076('0x1a')]=_0x162bef[_0xd076('0x1a')];this[_0xd076('0x1b')]=_0x8e6cbc[_0xd076('0x1b')];this[_0xd076('0x1c')]=_0x8e6cbc['callbackuniqueid'];this[_0xd076('0x1d')]=_0x8e6cbc['callbackat'];this[_0xd076('0x1e')]=_0x8e6cbc[_0xd076('0x1e')];this[_0xd076('0x1f')]=_0x8e6cbc[_0xd076('0x1f')];this[_0xd076('0x20')]=_0x8e6cbc['ListId'];this[_0xd076('0x21')]=_0x8e6cbc['UserId'];this['VoiceQueueId']=_0x8e6cbc[_0xd076('0x22')];this['CampaignId']=_0x8e6cbc['CampaignId'];this[_0xd076('0x23')]=_0x8e6cbc[_0xd076('0x23')]||'';this[_0xd076('0x24')]=_0x8e6cbc['originatecalleridname']||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
+var _0xe447=['queue','countbusyretry','countcongestionretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','name','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','membername','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','scheduledat','type','campaigntype'];(function(_0xc17d60,_0x4d3616){var _0x462396=function(_0x23d12e){while(--_0x23d12e){_0xc17d60['push'](_0xc17d60['shift']());}};_0x462396(++_0x4d3616);}(_0xe447,0x6f));var _0x7e44=function(_0x1f76a4,_0x433129){_0x1f76a4=_0x1f76a4-0x0;var _0x1f515a=_0xe447[_0x1f76a4];return _0x1f515a;};'use strict';var util=require(_0x7e44('0x0'));var _=require(_0x7e44('0x1'));var moment=require(_0x7e44('0x2'));function getSeconds(_0x17f5ab,_0x3e717d){var _0x2813ad=moment(_0x17f5ab)[_0x7e44('0x3')](0x0);var _0x28c0dd=moment(_0x3e717d)[_0x7e44('0x3')](0x0);return _0x2813ad[_0x7e44('0x4')](_0x28c0dd,_0x7e44('0x5'));}function QueueCallerAbandon(_0x53c2eb,_0x19311d){this[_0x7e44('0x6')]=_0x53c2eb[_0x7e44('0x6')];this[_0x7e44('0x7')]=_0x53c2eb[_0x7e44('0x7')];this[_0x7e44('0x8')]=_0x53c2eb[_0x7e44('0x7')]==='outbound'?_0x7e44('0x9'):_0x53c2eb[_0x7e44('0x7')];this[_0x7e44('0xa')]=_0x53c2eb[_0x7e44('0xa')];this[_0x7e44('0xb')]=_0x53c2eb[_0x7e44('0xb')];this['countnoanswerretry']=_0x53c2eb['countnoanswerretry'];this[_0x7e44('0xc')]=_0x53c2eb[_0x7e44('0xa')]+_0x53c2eb[_0x7e44('0xb')]+_0x53c2eb['countnoanswerretry']+_0x53c2eb[_0x7e44('0xd')]+_0x53c2eb[_0x7e44('0xe')]+_0x53c2eb[_0x7e44('0xf')]+_0x53c2eb['countmachineretry']+_0x53c2eb['countagentrejectretry'];this[_0x7e44('0xd')]=_0x53c2eb[_0x7e44('0xd')];this[_0x7e44('0xe')]=_0x53c2eb['countdropretry'];this['countabandonedretry']=_0x53c2eb[_0x7e44('0xf')];this[_0x7e44('0x10')]=_0x53c2eb[_0x7e44('0x10')];this[_0x7e44('0x11')]=_0x53c2eb[_0x7e44('0x11')];this['uniqueid']=_0x19311d['uniqueid'];this[_0x7e44('0x12')]=_0x53c2eb[_0x7e44('0x13')];this[_0x7e44('0x14')]=_0x53c2eb[_0x7e44('0x15')];this['starttime']=_0x53c2eb[_0x7e44('0x16')];this['responsetime']=_0x53c2eb[_0x7e44('0x17')];this[_0x7e44('0x18')]=_0x53c2eb[_0x7e44('0x18')];this[_0x7e44('0x19')]=this[_0x7e44('0x18')];this[_0x7e44('0x1a')]=getSeconds(_0x53c2eb[_0x7e44('0x17')],_0x53c2eb[_0x7e44('0x16')]);this[_0x7e44('0x1b')]=getSeconds(this[_0x7e44('0x18')],_0x53c2eb['responsetime']);this[_0x7e44('0x1c')]=0x0;this[_0x7e44('0x9')]=_0x19311d[_0x7e44('0x9')];this[_0x7e44('0x1d')]=_0x19311d['connectedlinename'];this['reason']=_0x19311d['reason'];this[_0x7e44('0x1e')]=_0x53c2eb['callback'];this[_0x7e44('0x1f')]=_0x53c2eb[_0x7e44('0x1f')];this[_0x7e44('0x20')]=_0x53c2eb[_0x7e44('0x20')];this[_0x7e44('0x21')]=_0x53c2eb['recallme'];this[_0x7e44('0x22')]=_0x53c2eb[_0x7e44('0x22')];this[_0x7e44('0x23')]=_0x53c2eb[_0x7e44('0x23')];this[_0x7e44('0x24')]=_0x53c2eb[_0x7e44('0x24')];this[_0x7e44('0x25')]=_0x53c2eb[_0x7e44('0x25')];this['CampaignId']=_0x53c2eb['CampaignId'];this[_0x7e44('0x26')]=_0x53c2eb[_0x7e44('0x26')]||'';this[_0x7e44('0x27')]=_0x53c2eb['originatecalleridname']||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
index e5a775c..1c56136 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(_0x3eecfd,_0x3048ed){var _0x452838=function(_0x1a5dbf){while(--_0x1a5dbf){_0x3eecfd['push'](_0x3eecfd['shift']());}};_0x452838(++_0x3048ed);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
+var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x27ad33,_0x356cf3){var _0x57541b=function(_0x13e214){while(--_0x13e214){_0x27ad33['push'](_0x27ad33['shift']());}};_0x57541b(++_0x356cf3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'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 a7d793e..e25c6d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa94f=['trunks','actions','newchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','syncOriginateResponse','prototype','syncNewchannel','context','from-voip-provider','localstationid','uniqueid','channel','name','\x20syncNewchannel\x20','info','variable','hasOwnProperty','channelstate','channelstatedesc','operation','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','then','error','stringify','catch','\x20receiveFax\x20','merge','pick','response','reason','update','AttachmentId','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','faxpages','faxstatusstring','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','format','SIP/%s','status','reachable','\x20Trunk\x20is\x20not\x20active','[Fax][checkTrunk][Empty\x20Fax]','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','bluebird','moment','path','tiff2pdf','../../../config/logger','fax','../ami','./rpcDb','./util/util','./action','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts'];(function(_0x5495ec,_0x4202c5){var _0x30813e=function(_0x33466d){while(--_0x33466d){_0x5495ec['push'](_0x5495ec['shift']());}};_0x30813e(++_0x4202c5);}(_0xa94f,0x1c0));var _0xfa94=function(_0x4609c2,_0x1256c9){_0x4609c2=_0x4609c2-0x0;var _0x559388=_0xa94f[_0x4609c2];return _0x559388;};'use strict';var util=require(_0xfa94('0x0'));var _=require(_0xfa94('0x1'));var BPromise=require(_0xfa94('0x2'));var uuid=require('uuid');var moment=require(_0xfa94('0x3'));var path=require(_0xfa94('0x4'));var tiff2pdf=require(_0xfa94('0x5'));var gs=require('./util/gs');var logger=require(_0xfa94('0x6'))(_0xfa94('0x7'));var ami=require(_0xfa94('0x8'));var rpcDb=require(_0xfa94('0x9'));var Channel=require('./channel');var ut=require(_0xfa94('0xa'));var Action=require(_0xfa94('0xb'));var faxAccount=require(_0xfa94('0xc'));var attachment=require(_0xfa94('0xd'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x3ce23f){this[_0xfa94('0xe')]={};this[_0xfa94('0xf')]=_0x3ce23f['faxAccounts'];this[_0xfa94('0x10')]=_0x3ce23f[_0xfa94('0x10')];this[_0xfa94('0x11')]={};ami['on'](_0xfa94('0x12'),this['syncNewchannel'][_0xfa94('0x13')](this));ami['on'](_0xfa94('0x14'),this[_0xfa94('0x15')][_0xfa94('0x13')](this));ami['on'](_0xfa94('0x16'),this[_0xfa94('0x17')][_0xfa94('0x13')](this));ami['on'](_0xfa94('0x18'),this[_0xfa94('0x19')][_0xfa94('0x13')](this));ami['on'](_0xfa94('0x1a'),this[_0xfa94('0x1b')][_0xfa94('0x13')](this));ami['on'](_0xfa94('0x1c'),this[_0xfa94('0x1d')][_0xfa94('0x13')](this));ami['on'](_0xfa94('0x1e'),this[_0xfa94('0x1f')][_0xfa94('0x13')](this));ami['on']('originateresponse',this[_0xfa94('0x20')][_0xfa94('0x13')](this));}Fax[_0xfa94('0x21')][_0xfa94('0x22')]=function(_0x293a2c){if(_0x293a2c[_0xfa94('0x23')]===_0xfa94('0x24')){for(var _0x3be543 in this['faxAccounts']){if(this[_0xfa94('0xf')]['hasOwnProperty'](_0x3be543)){if(_0x293a2c['exten']===this[_0xfa94('0xf')][_0x3be543][_0xfa94('0x25')]){this[_0xfa94('0xe')][_0x293a2c[_0xfa94('0x26')]]={};this[_0xfa94('0xe')][_0x293a2c[_0xfa94('0x26')]][_0xfa94('0x27')]=_0x293a2c[_0xfa94('0x27')];this[_0xfa94('0xe')][_0x293a2c['uniqueid']]['id']=this['faxAccounts'][_0x3be543]['id'];this['channels'][_0x293a2c[_0xfa94('0x26')]][_0xfa94('0x28')]=this[_0xfa94('0xf')][_0x3be543]['name'];logger['info'](_0x293a2c[_0xfa94('0x26')],_0xfa94('0x29'));}}}}if(this[_0xfa94('0x11')][_0x293a2c[_0xfa94('0x26')]]){this[_0xfa94('0xe')][_0x293a2c[_0xfa94('0x26')]]={};this[_0xfa94('0xe')][_0x293a2c[_0xfa94('0x26')]][_0xfa94('0x27')]=_0x293a2c[_0xfa94('0x27')];logger[_0xfa94('0x2a')](_0x293a2c['uniqueid'],'\x20syncNewchannel\x20');}};Fax['prototype'][_0xfa94('0x15')]=function(_0x381e47){if(this['channels'][_0x381e47[_0xfa94('0x26')]]){for(var _0x20fa30 in _0x381e47[_0xfa94('0x2b')]){if(_0x381e47[_0xfa94('0x2b')][_0xfa94('0x2c')](_0x20fa30)){this[_0xfa94('0xe')][_0x381e47[_0xfa94('0x26')]][_0x20fa30]=_0x381e47['value'];}}}};Fax[_0xfa94('0x21')][_0xfa94('0x17')]=function(_0x308707){if(this['channels'][_0x308707[_0xfa94('0x26')]]){this[_0xfa94('0xe')][_0x308707[_0xfa94('0x26')]][_0xfa94('0x2d')]=_0x308707[_0xfa94('0x2d')];this['channels'][_0x308707[_0xfa94('0x26')]][_0xfa94('0x2e')]=_0x308707['channelstatedesc'];}};Fax['prototype'][_0xfa94('0x19')]=function(_0x39b40b){if(this['channels'][_0x39b40b[_0xfa94('0x26')]]){for(var _0x3d9265 in _0x39b40b['variable']){if(_0x39b40b[_0xfa94('0x2b')]['hasOwnProperty'](_0x3d9265)){this[_0xfa94('0xe')][_0x39b40b[_0xfa94('0x26')]][_0x3d9265]=_0x39b40b['value'];}}}};Fax['prototype'][_0xfa94('0x1b')]=function(_0x3c5cde){if(this[_0xfa94('0xe')][_0x3c5cde[_0xfa94('0x26')]]){this[_0xfa94('0xe')][_0x3c5cde[_0xfa94('0x26')]][_0xfa94('0x2f')]=_0x3c5cde['operation'];this[_0xfa94('0xe')][_0x3c5cde[_0xfa94('0x26')]]['status']=_0x3c5cde['status'];this['channels'][_0x3c5cde[_0xfa94('0x26')]]['localstationid']=_0x3c5cde[_0xfa94('0x25')];this['channels'][_0x3c5cde['uniqueid']][_0xfa94('0x30')]=_0x3c5cde[_0xfa94('0x30')];logger[_0xfa94('0x2a')](_0x3c5cde[_0xfa94('0x26')],_0xfa94('0x31'));}};Fax[_0xfa94('0x21')][_0xfa94('0x1d')]=function(_0x49c233){var _0x1b95e1=this;if(this[_0xfa94('0xe')][_0x49c233[_0xfa94('0x26')]]){var _0xbc953d=this[_0xfa94('0xe')][_0x49c233[_0xfa94('0x26')]]['id'];this[_0xfa94('0xe')][_0x49c233[_0xfa94('0x26')]][_0xfa94('0x32')]=_0x49c233[_0xfa94('0x32')];this[_0xfa94('0xe')][_0x49c233[_0xfa94('0x26')]][_0xfa94('0x33')]=_0x49c233[_0xfa94('0x33')];this['channels'][_0x49c233[_0xfa94('0x26')]][_0xfa94('0x25')]=_0x49c233[_0xfa94('0x25')];this['channels'][_0x49c233[_0xfa94('0x26')]][_0xfa94('0x34')]=_0x49c233[_0xfa94('0x34')];this['channels'][_0x49c233[_0xfa94('0x26')]][_0xfa94('0x35')]=_0x49c233['transferrate'];this[_0xfa94('0xe')][_0x49c233[_0xfa94('0x26')]][_0xfa94('0x30')]=_0x49c233[_0xfa94('0x30')];this[_0xfa94('0xe')][_0x49c233[_0xfa94('0x26')]]['calleridnum']=_0x49c233[_0xfa94('0x36')];if(this[_0xfa94('0xe')][_0x49c233['uniqueid']][_0xfa94('0x33')]>0x0){tiff2pdf(_0x49c233[_0xfa94('0x30')],_0xfa94('0x37'),function(_0x5e1cc7){logger['info'](_0x49c233[_0xfa94('0x26')],_0xfa94('0x38'),_0x5e1cc7[_0xfa94('0x39')]);attachment[_0xfa94('0x3a')]({'name':path[_0xfa94('0x3b')](_0x49c233[_0xfa94('0x30')])[_0xfa94('0x28')],'basename':path[_0xfa94('0x3b')](_0x49c233[_0xfa94('0x30')])[_0xfa94('0x28')]+_0xfa94('0x3c'),'type':'application/pdf'})[_0xfa94('0x3d')](function(_0x139acf){faxAccount['notify'](_0xbc953d,{'from':_0x49c233[_0xfa94('0x36')],'mapKey':_0xfa94('0x7'),'body':path[_0xfa94('0x3b')](_0x49c233[_0xfa94('0x30')])[_0xfa94('0x28')]+_0xfa94('0x3c'),'AttachmentId':_0x139acf['id']})['catch'](function(_0x2380bf){logger[_0xfa94('0x3e')](_0x49c233[_0xfa94('0x26')],'\x20notify\x20',JSON[_0xfa94('0x3f')](_0x2380bf));});})[_0xfa94('0x40')](function(_0x20495f){logger['error'](_0x49c233['uniqueid'],_0xfa94('0x41'),JSON[_0xfa94('0x3f')](_0x20495f));});});}logger[_0xfa94('0x2a')](_0x49c233['uniqueid'],_0xfa94('0x41'));}};Fax[_0xfa94('0x21')][_0xfa94('0x20')]=function(_0x8fbb87){if(this[_0xfa94('0x11')][_0x8fbb87[_0xfa94('0x26')]]){_[_0xfa94('0x42')](this[_0xfa94('0xe')][_0x8fbb87[_0xfa94('0x26')]],_[_0xfa94('0x43')](_0x8fbb87,[_0xfa94('0x44'),_0xfa94('0x45')]));}};function updateStatus(_0x3cc066){if(_0x3cc066['AttachmentId']){faxMessage[_0xfa94('0x46')](_0x3cc066[_0xfa94('0x47')],{'failMessage':_0xfa94('0x48')})['then'](function(_0x3faa88){ut[_0xfa94('0x49')](_0xfa94('0x4a'),_0x3faa88);})[_0xfa94('0x40')](function(_0x555497){ut['logger'](_0xfa94('0x4b'),_0x555497);});}else{ut[_0xfa94('0x49')](_0xfa94('0x4c'));}}Fax[_0xfa94('0x21')][_0xfa94('0x4d')]=function(_0x69a692,_0x33aef0,_0x3a79fd){var _0xeef1ac=this;var _0x11471f={};if(_0x33aef0){_0x11471f={'read':_0x33aef0};}else{_0x11471f={'failMessage':_0x3a79fd};}if(this[_0xfa94('0x11')][_0x69a692]['AttachmentId']){faxMessage[_0xfa94('0x46')](this[_0xfa94('0x11')][_0x69a692][_0xfa94('0x47')],_0x11471f)[_0xfa94('0x3d')](function(_0x26dc39){ut[_0xfa94('0x49')]('[Fax][Message][Updated]',_0x26dc39);})[_0xfa94('0x40')](function(_0x18b18a){ut['logger']('[Fax][Message][NoUpdate1]',_0x18b18a);})['finally'](function(){delete _0xeef1ac[_0xfa94('0xe')][_0x69a692];delete _0xeef1ac[_0xfa94('0x11')][_0x69a692];});}else{ut['logger'](_0xfa94('0x4e'));delete this[_0xfa94('0xe')][_0x69a692];delete this['actions'][_0x69a692];}};Fax[_0xfa94('0x21')][_0xfa94('0x1f')]=function(_0x3e5d2a){var _0x36470e=this;if(this[_0xfa94('0xe')][_0x3e5d2a[_0xfa94('0x26')]]){if(this[_0xfa94('0x11')][_0x3e5d2a[_0xfa94('0x26')]]){this[_0xfa94('0xe')][_0x3e5d2a[_0xfa94('0x26')]]['id']=this[_0xfa94('0x11')][_0x3e5d2a[_0xfa94('0x26')]]['id'];this[_0xfa94('0xe')][_0x3e5d2a[_0xfa94('0x26')]][_0xfa94('0x28')]=this[_0xfa94('0x11')][_0x3e5d2a[_0xfa94('0x26')]][_0xfa94('0x28')];}logger[_0xfa94('0x2a')](_0x3e5d2a[_0xfa94('0x26')],this[_0xfa94('0x11')][_0x3e5d2a['uniqueid']]?_0xfa94('0x4f'):'\x20hangup\x20faxRiceive\x20',JSON[_0xfa94('0x3f')](this[_0xfa94('0xe')][_0x3e5d2a[_0xfa94('0x26')]]));if(this[_0xfa94('0x11')][_0x3e5d2a[_0xfa94('0x26')]]){if(this['channels'][_0x3e5d2a[_0xfa94('0x26')]][_0xfa94('0x50')]>0x0&&this[_0xfa94('0xe')][_0x3e5d2a[_0xfa94('0x26')]]['faxstatus']==='SUCCESS'){this[_0xfa94('0x4d')](_0x3e5d2a['uniqueid'],!![]);}else{this['updateStatus'](_0x3e5d2a[_0xfa94('0x26')],![],this['channels'][_0x3e5d2a[_0xfa94('0x26')]][_0xfa94('0x51')]?'SENDING\x20FAILED:\x20'+this[_0xfa94('0xe')][_0x3e5d2a[_0xfa94('0x26')]][_0xfa94('0x51')]:_0xfa94('0x52'));}}}};Fax[_0xfa94('0x21')][_0xfa94('0x53')]=function(_0x19375a){var _0x52050f=this;return new BPromise(function(_0x5010a4,_0x3994b7){_0x52050f[_0xfa94('0x54')](_0x19375a,_0x52050f['faxAccounts'][_0x19375a[_0xfa94('0x55')]])[_0xfa94('0x3d')](function(_0x2df7c5){ut['logger'](_0xfa94('0x56'),_0x2df7c5);_0x5010a4(ut['message'](_0xfa94('0x57')));})[_0xfa94('0x40')](function(_0x17f9a3){ut[_0xfa94('0x49')](_0xfa94('0x58'),_0x17f9a3);updateStatus(_0x19375a);_0x3994b7(ut[_0xfa94('0x39')](_0xfa94('0x59')));});});};Fax[_0xfa94('0x21')][_0xfa94('0x5a')]=function(_0x4b589b){var _0x5ae47b=this;return new BPromise(function(_0x43b238,_0x27c094){var _0x533b5e=_0x5ae47b[_0xfa94('0x5b')](_0x5ae47b[_0xfa94('0xf')][_0x4b589b[_0xfa94('0x55')]][_0xfa94('0x5c')],_0x4b589b);if(_0x533b5e[_0xfa94('0x5d')]){_0x43b238(ut['message'](_0xfa94('0x5e')));}else{_0x27c094(ut[_0xfa94('0x39')](_0x533b5e[_0xfa94('0x39')]));}});};function originate(_0x1a79b0,_0x37e2cb,_0x5bc2e6){return new BPromise(function(_0x42cddc,_0x2a8908){if(_0x5bc2e6){var _0x53f4c1=util['format'](_0xfa94('0x5f'),path['parse'](_0x1a79b0['path'])[_0xfa94('0x28')],_0x1a79b0[_0xfa94('0x4')]);gs['execute'](_0x53f4c1)[_0xfa94('0x3d')](function(){_0x1a79b0[_0xfa94('0x4')]=util['format']('%s/%s.tif',path[_0xfa94('0x3b')](_0x1a79b0[_0xfa94('0x4')])[_0xfa94('0x60')],path[_0xfa94('0x3b')](_0x1a79b0['path'])[_0xfa94('0x28')]);_0x37e2cb[_0xfa94('0x61')]=_0x1a79b0[_0xfa94('0x4')];ut[_0xfa94('0x49')](_0xfa94('0x62'),'');ami[_0xfa94('0x63')](ut[_0xfa94('0x64')](_0x1a79b0,_0x37e2cb))[_0xfa94('0x3d')](function(_0xa05c91){_0x42cddc(_0xa05c91);})[_0xfa94('0x40')](function(_0x3f29bc){_0x2a8908(_0x3f29bc);});})[_0xfa94('0x40')](function(_0x467747){_0x2a8908(_0x467747);});}else{ami[_0xfa94('0x63')](ut[_0xfa94('0x64')](_0x1a79b0,_0x37e2cb))['then'](function(_0xa92245){_0x42cddc(_0xa92245);})[_0xfa94('0x40')](function(_0x489540){_0x2a8908(_0x489540);});}});}Fax[_0xfa94('0x21')][_0xfa94('0x54')]=function(_0x371459,_0x52e2c1){var _0x289ec8=this;return new BPromise(function(_0x423525,_0x436750){var _0xb25a26=uuid['v4']();var _0x3ad384=ut[_0xfa94('0x65')](_0x371459,_0x52e2c1);_0x289ec8[_0xfa94('0x11')][_0xb25a26]=new Action(_0xb25a26,_0x52e2c1,_0x371459);var _0x5a21d8=_0x289ec8[_0xfa94('0x11')][_0xb25a26];if(path[_0xfa94('0x3b')](_0x371459[_0xfa94('0x4')])[_0xfa94('0x66')]===_0xfa94('0x3c')){originate(_0x5a21d8,_0x3ad384,!![])[_0xfa94('0x3d')](function(_0x34999c){_0x423525(_0x34999c);})[_0xfa94('0x40')](function(_0x2624d5){_0x436750(_0x2624d5);});}else{originate(_0x5a21d8,_0x3ad384,![])['then'](function(_0x4bc441){_0x423525(_0x4bc441);})[_0xfa94('0x40')](function(_0x50907e){_0x436750(_0x50907e);});}});};Fax['prototype'][_0xfa94('0x67')]=function(_0x928e90){return!_[_0xfa94('0x68')](_0x928e90)&&!_[_0xfa94('0x68')](_0x928e90[_0xfa94('0x28')])&&!_[_0xfa94('0x68')](_0x928e90[_0xfa94('0x69')])&&_0x928e90[_0xfa94('0x69')]&&!_[_0xfa94('0x68')](this[_0xfa94('0x10')][util[_0xfa94('0x6a')](_0xfa94('0x6b'),_0x928e90[_0xfa94('0x28')])])&&!_['isNil'](this[_0xfa94('0x10')][util[_0xfa94('0x6a')](_0xfa94('0x6b'),_0x928e90[_0xfa94('0x28')])][_0xfa94('0x6c')])&&(this[_0xfa94('0x10')][util[_0xfa94('0x6a')](_0xfa94('0x6b'),_0x928e90[_0xfa94('0x28')])][_0xfa94('0x6c')]===_0xfa94('0x6d')||this[_0xfa94('0x10')][util[_0xfa94('0x6a')]('SIP/%s',_0x928e90[_0xfa94('0x28')])][_0xfa94('0x6c')]==='unmonitored');};Fax[_0xfa94('0x21')][_0xfa94('0x5b')]=function(_0x431304,_0x483788){if(!this['isTrunkReachable'](_0x431304)){ut[_0xfa94('0x49')]('[Fax][checkTrunk][Trunk\x20not\x20work]',_[_0xfa94('0x68')](_0x431304)?'':_0x431304[_0xfa94('0x28')]+_0xfa94('0x6e'));return{'isValid':![],'message':'Trunk\x20not\x20working'};}if(_[_0xfa94('0x68')](_0x483788[_0xfa94('0x7')])){ut[_0xfa94('0x49')](_0xfa94('0x6f'),JSON[_0xfa94('0x3f')](_0x483788));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0xfa94('0x68')](_0x483788['path'])){ut[_0xfa94('0x49')](_0xfa94('0x70'),JSON[_0xfa94('0x3f')](_0x483788));return{'isValid':![],'message':_0xfa94('0x71')};}return{'isValid':!![],'message':_0xfa94('0x72')};};module[_0xfa94('0x73')]=Fax;
\ No newline at end of file
+var _0x149e=['newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','syncNewExten','faxstatus','receivefax','syncReceiveFax','syncHangup','originateresponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','name','info','actions','variable','value','channelstate','channelstatedesc','syncFaxStatus','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','parse','.pdf','application/pdf','error','stringify','catch','\x20receiveFax\x20','syncOriginateResponse','merge','response','reason','AttachmentId','SENDING\x20FAILED\x20','then','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','updateStatus','update','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkTrunk','isValid','Trunk\x20Reachable','format','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','Empty\x20path','Is\x20Valid','exports','util','lodash','moment','path','tiff2pdf','./util/gs','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts','trunks'];(function(_0x4dcef2,_0x52845d){var _0xe80f33=function(_0x510b1c){while(--_0x510b1c){_0x4dcef2['push'](_0x4dcef2['shift']());}};_0xe80f33(++_0x52845d);}(_0x149e,0xd5));var _0xe149=function(_0x5e83fb,_0x3a1352){_0x5e83fb=_0x5e83fb-0x0;var _0xd5a002=_0x149e[_0x5e83fb];return _0xd5a002;};'use strict';var util=require(_0xe149('0x0'));var _=require(_0xe149('0x1'));var BPromise=require('bluebird');var uuid=require('uuid');var moment=require(_0xe149('0x2'));var path=require(_0xe149('0x3'));var tiff2pdf=require(_0xe149('0x4'));var gs=require(_0xe149('0x5'));var logger=require('../../../config/logger')(_0xe149('0x6'));var ami=require(_0xe149('0x7'));var rpcDb=require(_0xe149('0x8'));var Channel=require(_0xe149('0x9'));var ut=require(_0xe149('0xa'));var Action=require(_0xe149('0xb'));var faxAccount=require(_0xe149('0xc'));var attachment=require(_0xe149('0xd'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x52f9dd){this[_0xe149('0xe')]={};this[_0xe149('0xf')]=_0x52f9dd[_0xe149('0xf')];this[_0xe149('0x10')]=_0x52f9dd[_0xe149('0x10')];this['actions']={};ami['on'](_0xe149('0x11'),this[_0xe149('0x12')][_0xe149('0x13')](this));ami['on'](_0xe149('0x14'),this[_0xe149('0x15')]['bind'](this));ami['on'](_0xe149('0x16'),this[_0xe149('0x17')][_0xe149('0x13')](this));ami['on']('newexten',this[_0xe149('0x18')]['bind'](this));ami['on'](_0xe149('0x19'),this['syncFaxStatus'][_0xe149('0x13')](this));ami['on'](_0xe149('0x1a'),this[_0xe149('0x1b')][_0xe149('0x13')](this));ami['on']('hangup',this[_0xe149('0x1c')][_0xe149('0x13')](this));ami['on'](_0xe149('0x1d'),this['syncOriginateResponse']['bind'](this));}Fax[_0xe149('0x1e')][_0xe149('0x12')]=function(_0x4cd36e){if(_0x4cd36e[_0xe149('0x1f')]===_0xe149('0x20')){for(var _0x47b242 in this['faxAccounts']){if(this[_0xe149('0xf')][_0xe149('0x21')](_0x47b242)){if(_0x4cd36e[_0xe149('0x22')]===this[_0xe149('0xf')][_0x47b242][_0xe149('0x23')]){this[_0xe149('0xe')][_0x4cd36e[_0xe149('0x24')]]={};this['channels'][_0x4cd36e['uniqueid']][_0xe149('0x25')]=_0x4cd36e[_0xe149('0x25')];this['channels'][_0x4cd36e[_0xe149('0x24')]]['id']=this[_0xe149('0xf')][_0x47b242]['id'];this[_0xe149('0xe')][_0x4cd36e[_0xe149('0x24')]][_0xe149('0x26')]=this[_0xe149('0xf')][_0x47b242]['name'];logger[_0xe149('0x27')](_0x4cd36e[_0xe149('0x24')],'\x20syncNewchannel\x20');}}}}if(this[_0xe149('0x28')][_0x4cd36e[_0xe149('0x24')]]){this[_0xe149('0xe')][_0x4cd36e[_0xe149('0x24')]]={};this['channels'][_0x4cd36e[_0xe149('0x24')]][_0xe149('0x25')]=_0x4cd36e['channel'];logger[_0xe149('0x27')](_0x4cd36e['uniqueid'],'\x20syncNewchannel\x20');}};Fax['prototype']['syncVarSet']=function(_0x5a693b){if(this['channels'][_0x5a693b[_0xe149('0x24')]]){for(var _0x173fcf in _0x5a693b[_0xe149('0x29')]){if(_0x5a693b[_0xe149('0x29')][_0xe149('0x21')](_0x173fcf)){this[_0xe149('0xe')][_0x5a693b[_0xe149('0x24')]][_0x173fcf]=_0x5a693b[_0xe149('0x2a')];}}}};Fax[_0xe149('0x1e')][_0xe149('0x17')]=function(_0x30313e){if(this['channels'][_0x30313e['uniqueid']]){this[_0xe149('0xe')][_0x30313e[_0xe149('0x24')]][_0xe149('0x2b')]=_0x30313e[_0xe149('0x2b')];this['channels'][_0x30313e['uniqueid']]['channelstatedesc']=_0x30313e[_0xe149('0x2c')];}};Fax[_0xe149('0x1e')]['syncNewExten']=function(_0x59b225){if(this[_0xe149('0xe')][_0x59b225[_0xe149('0x24')]]){for(var _0x55ba12 in _0x59b225[_0xe149('0x29')]){if(_0x59b225['variable'][_0xe149('0x21')](_0x55ba12)){this[_0xe149('0xe')][_0x59b225[_0xe149('0x24')]][_0x55ba12]=_0x59b225[_0xe149('0x2a')];}}}};Fax['prototype'][_0xe149('0x2d')]=function(_0x873e78){if(this[_0xe149('0xe')][_0x873e78[_0xe149('0x24')]]){this['channels'][_0x873e78[_0xe149('0x24')]][_0xe149('0x2e')]=_0x873e78[_0xe149('0x2e')];this[_0xe149('0xe')][_0x873e78['uniqueid']][_0xe149('0x2f')]=_0x873e78[_0xe149('0x2f')];this[_0xe149('0xe')][_0x873e78[_0xe149('0x24')]][_0xe149('0x23')]=_0x873e78[_0xe149('0x23')];this[_0xe149('0xe')][_0x873e78[_0xe149('0x24')]][_0xe149('0x30')]=_0x873e78[_0xe149('0x30')];logger['info'](_0x873e78[_0xe149('0x24')],_0xe149('0x31'));}};Fax[_0xe149('0x1e')][_0xe149('0x1b')]=function(_0x155d47){var _0x22b233=this;if(this[_0xe149('0xe')][_0x155d47['uniqueid']]){var _0x1beae8=this['channels'][_0x155d47['uniqueid']]['id'];this['channels'][_0x155d47['uniqueid']][_0xe149('0x32')]=_0x155d47['remotestationid'];this['channels'][_0x155d47[_0xe149('0x24')]][_0xe149('0x33')]=_0x155d47[_0xe149('0x33')];this[_0xe149('0xe')][_0x155d47[_0xe149('0x24')]][_0xe149('0x23')]=_0x155d47[_0xe149('0x23')];this[_0xe149('0xe')][_0x155d47['uniqueid']][_0xe149('0x34')]=_0x155d47[_0xe149('0x34')];this['channels'][_0x155d47['uniqueid']][_0xe149('0x35')]=_0x155d47[_0xe149('0x35')];this['channels'][_0x155d47[_0xe149('0x24')]][_0xe149('0x30')]=_0x155d47[_0xe149('0x30')];this[_0xe149('0xe')][_0x155d47[_0xe149('0x24')]][_0xe149('0x36')]=_0x155d47['calleridnum'];if(this['channels'][_0x155d47[_0xe149('0x24')]][_0xe149('0x33')]>0x0){tiff2pdf(_0x155d47[_0xe149('0x30')],_0xe149('0x37'),function(_0x498bb9){logger['info'](_0x155d47[_0xe149('0x24')],_0xe149('0x38'),_0x498bb9[_0xe149('0x39')]);attachment['create']({'name':path[_0xe149('0x3a')](_0x155d47[_0xe149('0x30')])['name'],'basename':path[_0xe149('0x3a')](_0x155d47[_0xe149('0x30')])[_0xe149('0x26')]+_0xe149('0x3b'),'type':_0xe149('0x3c')})['then'](function(_0x4077d6){faxAccount['notify'](_0x1beae8,{'from':_0x155d47[_0xe149('0x36')],'mapKey':_0xe149('0x6'),'body':path[_0xe149('0x3a')](_0x155d47[_0xe149('0x30')])['name']+'.pdf','AttachmentId':_0x4077d6['id']})['catch'](function(_0x440a5e){logger[_0xe149('0x3d')](_0x155d47[_0xe149('0x24')],'\x20notify\x20',JSON[_0xe149('0x3e')](_0x440a5e));});})[_0xe149('0x3f')](function(_0x439708){logger[_0xe149('0x3d')](_0x155d47['uniqueid'],_0xe149('0x40'),JSON['stringify'](_0x439708));});});}logger[_0xe149('0x27')](_0x155d47[_0xe149('0x24')],_0xe149('0x40'));}};Fax[_0xe149('0x1e')][_0xe149('0x41')]=function(_0x53041c){if(this[_0xe149('0x28')][_0x53041c[_0xe149('0x24')]]){_[_0xe149('0x42')](this[_0xe149('0xe')][_0x53041c[_0xe149('0x24')]],_['pick'](_0x53041c,[_0xe149('0x43'),_0xe149('0x44')]));}};function updateStatus(_0x39facb){if(_0x39facb[_0xe149('0x45')]){faxMessage['update'](_0x39facb[_0xe149('0x45')],{'failMessage':_0xe149('0x46')})[_0xe149('0x47')](function(_0x3d62a0){ut[_0xe149('0x48')](_0xe149('0x49'),_0x3d62a0);})[_0xe149('0x3f')](function(_0x50c3cd){ut[_0xe149('0x48')](_0xe149('0x4a'),_0x50c3cd);});}else{ut[_0xe149('0x48')]('[Fax][Message][Error][NoUpdate2]');}}Fax[_0xe149('0x1e')][_0xe149('0x4b')]=function(_0x156fab,_0x41d05d,_0x4e12ba){var _0x412db2=this;var _0x2de83a={};if(_0x41d05d){_0x2de83a={'read':_0x41d05d};}else{_0x2de83a={'failMessage':_0x4e12ba};}if(this['actions'][_0x156fab][_0xe149('0x45')]){faxMessage[_0xe149('0x4c')](this['actions'][_0x156fab][_0xe149('0x45')],_0x2de83a)['then'](function(_0x29d686){ut[_0xe149('0x48')](_0xe149('0x4d'),_0x29d686);})['catch'](function(_0x11f1be){ut[_0xe149('0x48')](_0xe149('0x4e'),_0x11f1be);})[_0xe149('0x4f')](function(){delete _0x412db2[_0xe149('0xe')][_0x156fab];delete _0x412db2[_0xe149('0x28')][_0x156fab];});}else{ut['logger'](_0xe149('0x50'));delete this['channels'][_0x156fab];delete this[_0xe149('0x28')][_0x156fab];}};Fax['prototype'][_0xe149('0x1c')]=function(_0x1d5659){var _0x41c5de=this;if(this[_0xe149('0xe')][_0x1d5659['uniqueid']]){if(this[_0xe149('0x28')][_0x1d5659[_0xe149('0x24')]]){this[_0xe149('0xe')][_0x1d5659[_0xe149('0x24')]]['id']=this[_0xe149('0x28')][_0x1d5659[_0xe149('0x24')]]['id'];this['channels'][_0x1d5659[_0xe149('0x24')]][_0xe149('0x26')]=this['actions'][_0x1d5659[_0xe149('0x24')]][_0xe149('0x26')];}logger['info'](_0x1d5659[_0xe149('0x24')],this[_0xe149('0x28')][_0x1d5659[_0xe149('0x24')]]?_0xe149('0x51'):_0xe149('0x52'),JSON[_0xe149('0x3e')](this['channels'][_0x1d5659[_0xe149('0x24')]]));if(this[_0xe149('0x28')][_0x1d5659[_0xe149('0x24')]]){if(this[_0xe149('0xe')][_0x1d5659[_0xe149('0x24')]][_0xe149('0x53')]>0x0&&this[_0xe149('0xe')][_0x1d5659[_0xe149('0x24')]][_0xe149('0x19')]===_0xe149('0x54')){this[_0xe149('0x4b')](_0x1d5659['uniqueid'],!![]);}else{this[_0xe149('0x4b')](_0x1d5659[_0xe149('0x24')],![],this[_0xe149('0xe')][_0x1d5659[_0xe149('0x24')]][_0xe149('0x55')]?_0xe149('0x56')+this['channels'][_0x1d5659[_0xe149('0x24')]]['faxstatusstring']:_0xe149('0x57'));}}}};Fax['prototype'][_0xe149('0x58')]=function(_0x1ad9c0){var _0x270f8b=this;return new BPromise(function(_0x1eeeda,_0x57b0c7){_0x270f8b[_0xe149('0x59')](_0x1ad9c0,_0x270f8b[_0xe149('0xf')][_0x1ad9c0[_0xe149('0x5a')]])[_0xe149('0x47')](function(_0x3a5284){ut['logger'](_0xe149('0x5b'),_0x3a5284);_0x1eeeda(ut[_0xe149('0x39')](_0xe149('0x5c')));})[_0xe149('0x3f')](function(_0x227fdf){ut[_0xe149('0x48')](_0xe149('0x5d'),_0x227fdf);updateStatus(_0x1ad9c0);_0x57b0c7(ut[_0xe149('0x39')](_0xe149('0x5e')));});});};Fax['prototype']['checkAfterSend']=function(_0x2b7d65){var _0x5c431e=this;return new BPromise(function(_0x41c2e0,_0x481c28){var _0x4ae531=_0x5c431e[_0xe149('0x5f')](_0x5c431e[_0xe149('0xf')][_0x2b7d65[_0xe149('0x5a')]]['Trunk'],_0x2b7d65);if(_0x4ae531[_0xe149('0x60')]){_0x41c2e0(ut[_0xe149('0x39')](_0xe149('0x61')));}else{_0x481c28(ut[_0xe149('0x39')](_0x4ae531[_0xe149('0x39')]));}});};function originate(_0xbffa14,_0x47acdd,_0x233050){return new BPromise(function(_0x30a8ee,_0xf74f76){if(_0x233050){var _0x11cc75=util[_0xe149('0x62')]('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[_0xe149('0x3a')](_0xbffa14[_0xe149('0x3')])[_0xe149('0x26')],_0xbffa14[_0xe149('0x3')]);gs['execute'](_0x11cc75)[_0xe149('0x47')](function(){_0xbffa14[_0xe149('0x3')]=util[_0xe149('0x62')]('%s/%s.tif',path['parse'](_0xbffa14[_0xe149('0x3')])['dir'],path['parse'](_0xbffa14[_0xe149('0x3')])[_0xe149('0x26')]);_0x47acdd[_0xe149('0x63')]=_0xbffa14[_0xe149('0x3')];ut[_0xe149('0x48')](_0xe149('0x64'),'');ami[_0xe149('0x65')](ut[_0xe149('0x66')](_0xbffa14,_0x47acdd))[_0xe149('0x47')](function(_0x10dffe){_0x30a8ee(_0x10dffe);})[_0xe149('0x3f')](function(_0x46d739){_0xf74f76(_0x46d739);});})['catch'](function(_0x54f35c){_0xf74f76(_0x54f35c);});}else{ami[_0xe149('0x65')](ut[_0xe149('0x66')](_0xbffa14,_0x47acdd))[_0xe149('0x47')](function(_0x284793){_0x30a8ee(_0x284793);})['catch'](function(_0x24789e){_0xf74f76(_0x24789e);});}});}Fax[_0xe149('0x1e')][_0xe149('0x59')]=function(_0x4cd1f9,_0x5e26b5){var _0x57e88f=this;return new BPromise(function(_0x2e7089,_0x49e31c){var _0x3b4a3a=uuid['v4']();var _0x45d6be=ut[_0xe149('0x67')](_0x4cd1f9,_0x5e26b5);_0x57e88f['actions'][_0x3b4a3a]=new Action(_0x3b4a3a,_0x5e26b5,_0x4cd1f9);var _0x3861e0=_0x57e88f[_0xe149('0x28')][_0x3b4a3a];if(path['parse'](_0x4cd1f9[_0xe149('0x3')])[_0xe149('0x68')]==='.pdf'){originate(_0x3861e0,_0x45d6be,!![])['then'](function(_0x24da54){_0x2e7089(_0x24da54);})[_0xe149('0x3f')](function(_0x39be13){_0x49e31c(_0x39be13);});}else{originate(_0x3861e0,_0x45d6be,![])[_0xe149('0x47')](function(_0xe889ea){_0x2e7089(_0xe889ea);})[_0xe149('0x3f')](function(_0x4810a7){_0x49e31c(_0x4810a7);});}});};Fax[_0xe149('0x1e')][_0xe149('0x69')]=function(_0x1e22a6){return!_[_0xe149('0x6a')](_0x1e22a6)&&!_['isNil'](_0x1e22a6[_0xe149('0x26')])&&!_[_0xe149('0x6a')](_0x1e22a6[_0xe149('0x6b')])&&_0x1e22a6[_0xe149('0x6b')]&&!_[_0xe149('0x6a')](this[_0xe149('0x10')][util[_0xe149('0x62')]('SIP/%s',_0x1e22a6[_0xe149('0x26')])])&&!_['isNil'](this[_0xe149('0x10')][util[_0xe149('0x62')](_0xe149('0x6c'),_0x1e22a6[_0xe149('0x26')])][_0xe149('0x2f')])&&(this[_0xe149('0x10')][util[_0xe149('0x62')](_0xe149('0x6c'),_0x1e22a6[_0xe149('0x26')])]['status']===_0xe149('0x6d')||this[_0xe149('0x10')][util['format'](_0xe149('0x6c'),_0x1e22a6[_0xe149('0x26')])]['status']===_0xe149('0x6e'));};Fax[_0xe149('0x1e')][_0xe149('0x5f')]=function(_0x8c08d3,_0x1e29fb){if(!this['isTrunkReachable'](_0x8c08d3)){ut[_0xe149('0x48')](_0xe149('0x6f'),_[_0xe149('0x6a')](_0x8c08d3)?'':_0x8c08d3[_0xe149('0x26')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':'Trunk\x20not\x20working'};}if(_['isNil'](_0x1e29fb['fax'])){ut[_0xe149('0x48')]('[Fax][checkTrunk][Empty\x20Fax]',JSON['stringify'](_0x1e29fb));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0xe149('0x6a')](_0x1e29fb['path'])){ut['logger']('[Fax][checkTrunk][Empty\x20path]',JSON['stringify'](_0x1e29fb));return{'isValid':![],'message':_0xe149('0x70')};}return{'isValid':!![],'message':_0xe149('0x71')};};module[_0xe149('0x72')]=Fax;
\ No newline at end of file
index 1e3c506..17492f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34f2=['preview','../rpc/faxAccount','error','notify','then','[Notify]\x20','util','bluebird','../../../config/logger'];(function(_0x201e71,_0x29404b){var _0x4cf709=function(_0x2860da){while(--_0x2860da){_0x201e71['push'](_0x201e71['shift']());}};_0x4cf709(++_0x29404b);}(_0x34f2,0x138));var _0x234f=function(_0x55e06a,_0x54a122){_0x55e06a=_0x55e06a-0x0;var _0x1b4863=_0x34f2[_0x55e06a];return _0x1b4863;};'use strict';var util=require(_0x234f('0x0'));var BPromise=require(_0x234f('0x1'));var logger=require(_0x234f('0x2'))(_0x234f('0x3'));var _=require('lodash');var faxAccount=require(_0x234f('0x4'));function loggerCatch(_0x127a33){return function(_0x43e597){logger[_0x234f('0x5')](_0x127a33,util['inspect'](_0x43e597,{'showHidden':![],'depth':null}));};}exports[_0x234f('0x6')]=function(_0x196bc4,_0x26bcd2){return BPromise['resolve']()[_0x234f('0x7')](faxAccount[_0x234f('0x6')](_0x196bc4,_0x26bcd2))['catch'](loggerCatch(_0x234f('0x8')));};
\ No newline at end of file
+var _0x02c8=['then','catch','[Notify]\x20','bluebird','../../../config/logger','preview','error','inspect'];(function(_0x17aca8,_0x434fb0){var _0xd3de24=function(_0x47be24){while(--_0x47be24){_0x17aca8['push'](_0x17aca8['shift']());}};_0xd3de24(++_0x434fb0);}(_0x02c8,0x10b));var _0x802c=function(_0x24681b,_0x31424e){_0x24681b=_0x24681b-0x0;var _0x10d992=_0x02c8[_0x24681b];return _0x10d992;};'use strict';var util=require('util');var BPromise=require(_0x802c('0x0'));var logger=require(_0x802c('0x1'))(_0x802c('0x2'));var _=require('lodash');var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x1e0ba5){return function(_0x2e59bf){logger[_0x802c('0x3')](_0x1e0ba5,util[_0x802c('0x4')](_0x2e59bf,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x39ad38,_0x684d17){return BPromise['resolve']()[_0x802c('0x5')](faxAccount['notify'](_0x39ad38,_0x684d17))[_0x802c('0x6')](loggerCatch(_0x802c('0x7')));};
\ No newline at end of file
index 8547565..6c8581c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7a9=['\x20Error\x20:','util','../../../../config/logger','execute','info','Exec\x20gs'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xf7a9,0x151));var _0x9f7a=function(_0x2fcc6f,_0xb2ba92){_0x2fcc6f=_0x2fcc6f-0x0;var _0x4bc961=_0xf7a9[_0x2fcc6f];return _0x4bc961;};'use strict';var util=require(_0x9f7a('0x0'));var logger=require(_0x9f7a('0x1'))('fax');var BPromise=require('bluebird');var exec=require('child_process')['exec'];exports[_0x9f7a('0x2')]=function(_0x67b8d2){return new BPromise(function(_0x591452,_0x3fc967){exec(_0x67b8d2,function(_0x5193,_0x181517,_0x78e002){logger[_0x9f7a('0x3')]('Exec\x20gs',_0x181517);if(_0x5193){logger['info'](_0x9f7a('0x4'),_0x9f7a('0x5'),util['inspect'](_0x5193,{'showHidden':![],'depth':null}),_0x181517,_0x78e002);_0x3fc967(_0x5193);}_0x591452(_0x181517);});});};
\ No newline at end of file
+var _0x175e=['bluebird','child_process','exec','execute','info','Exec\x20gs','inspect','util','../../../../config/logger','fax'];(function(_0x3542af,_0xf469c6){var _0x29f947=function(_0x184cbb){while(--_0x184cbb){_0x3542af['push'](_0x3542af['shift']());}};_0x29f947(++_0xf469c6);}(_0x175e,0x101));var _0xe175=function(_0x55b94e,_0x5171eb){_0x55b94e=_0x55b94e-0x0;var _0x3e41f6=_0x175e[_0x55b94e];return _0x3e41f6;};'use strict';var util=require(_0xe175('0x0'));var logger=require(_0xe175('0x1'))(_0xe175('0x2'));var BPromise=require(_0xe175('0x3'));var exec=require(_0xe175('0x4'))[_0xe175('0x5')];exports[_0xe175('0x6')]=function(_0x56c022){return new BPromise(function(_0x4dee78,_0x5184c7){exec(_0x56c022,function(_0x21afed,_0x500169,_0x4d588f){logger[_0xe175('0x7')](_0xe175('0x8'),_0x500169);if(_0x21afed){logger[_0xe175('0x7')]('Exec\x20gs','\x20Error\x20:',util[_0xe175('0x9')](_0x21afed,{'showHidden':![],'depth':null}),_0x500169,_0x4d588f);_0x5184c7(_0x21afed);}_0x4dee78(_0x500169);});});};
\ No newline at end of file
index 18c4d0b..9ae31e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40b6=['originate','channel','xcally-motion-fax','from-sip','format','\x22%s\x22\x20<%s>','util','moment','fax','message','logger','info','ecm','headerinfo','minrate','maxrate','modem','gateway','faxdetect','t38timeout','localstationid','path','variablesAction','uniqueid'];(function(_0x500c02,_0x17afde){var _0x1a1efd=function(_0xa52f03){while(--_0xa52f03){_0x500c02['push'](_0x500c02['shift']());}};_0x1a1efd(++_0x17afde);}(_0x40b6,0x19e));var _0x640b=function(_0x305c31,_0x466b17){_0x305c31=_0x305c31-0x0;var _0x17f39f=_0x40b6[_0x305c31];return _0x17f39f;};'use strict';var util=require(_0x640b('0x0'));var _=require('lodash');var moment=require(_0x640b('0x1'));var logger=require('../../../../config/logger')(_0x640b('0x2'));exports[_0x640b('0x3')]=function(_0x3bbf94){return{'message':_0x3bbf94};};exports[_0x640b('0x4')]=function(_0x492282,_0x379be8){logger[_0x640b('0x5')](_0x492282,util['inspect'](_0x379be8,{'showHidden':![],'depth':null}));};exports['addVariables']=function(_0x157825,_0x2da542){var _0x995086={'XMF-ECM':_0x2da542[_0x640b('0x6')],'XMF-HEADERINFO':_0x2da542[_0x640b('0x7')],'XMF-MINRATE':_0x2da542[_0x640b('0x8')],'XMF-MAXRATE':_0x2da542[_0x640b('0x9')],'XMF-MODEM':util['format']('\x22%s\x22',_0x2da542[_0x640b('0xa')]),'XMF-GATEWAY':_0x2da542[_0x640b('0xb')],'XMF-FAXDETECT':_0x2da542[_0x640b('0xc')],'XMF-T38TIMEOUT':_0x2da542[_0x640b('0xd')],'XMF-LOCALSTATIONID':_0x2da542[_0x640b('0xe')],'XMF-PATH':_0x157825[_0x640b('0xf')]};return _0x995086;};exports[_0x640b('0x10')]=function(_0x53e659,_0x496571){return{'actionid':_0x53e659[_0x640b('0x11')],'action':_0x640b('0x12'),'channel':_0x53e659[_0x640b('0x13')],'Exten':_0x640b('0x14'),'Context':_0x640b('0x15'),'Priority':'1','callerid':util[_0x640b('0x16')](_0x640b('0x17'),_0x53e659[_0x640b('0x7')]?_0x53e659['headerinfo']:'',_0x53e659[_0x640b('0xe')]),'variable':_0x496571,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x53e659[_0x640b('0x11')]};};
\ No newline at end of file
+var _0x8e83=['message','logger','inspect','addVariables','minrate','maxrate','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','variablesAction','uniqueid','originate','from-sip','\x22%s\x22\x20<%s>','headerinfo','localstationid','lodash','moment','../../../../config/logger','fax'];(function(_0x304df9,_0x16b7f0){var _0xdbaa31=function(_0x43e603){while(--_0x43e603){_0x304df9['push'](_0x304df9['shift']());}};_0xdbaa31(++_0x16b7f0);}(_0x8e83,0x183));var _0x38e8=function(_0x5f308d,_0x18f4a8){_0x5f308d=_0x5f308d-0x0;var _0x530f65=_0x8e83[_0x5f308d];return _0x530f65;};'use strict';var util=require('util');var _=require(_0x38e8('0x0'));var moment=require(_0x38e8('0x1'));var logger=require(_0x38e8('0x2'))(_0x38e8('0x3'));exports[_0x38e8('0x4')]=function(_0x2f13fd){return{'message':_0x2f13fd};};exports[_0x38e8('0x5')]=function(_0x5df1c4,_0x27a8cc){logger['info'](_0x5df1c4,util[_0x38e8('0x6')](_0x27a8cc,{'showHidden':![],'depth':null}));};exports[_0x38e8('0x7')]=function(_0x4888ee,_0x4c5bdb){var _0x24b529={'XMF-ECM':_0x4c5bdb['ecm'],'XMF-HEADERINFO':_0x4c5bdb['headerinfo'],'XMF-MINRATE':_0x4c5bdb[_0x38e8('0x8')],'XMF-MAXRATE':_0x4c5bdb[_0x38e8('0x9')],'XMF-MODEM':util[_0x38e8('0xa')](_0x38e8('0xb'),_0x4c5bdb[_0x38e8('0xc')]),'XMF-GATEWAY':_0x4c5bdb[_0x38e8('0xd')],'XMF-FAXDETECT':_0x4c5bdb[_0x38e8('0xe')],'XMF-T38TIMEOUT':_0x4c5bdb[_0x38e8('0xf')],'XMF-LOCALSTATIONID':_0x4c5bdb['localstationid'],'XMF-PATH':_0x4888ee['path']};return _0x24b529;};exports[_0x38e8('0x10')]=function(_0x4b5639,_0x351815){return{'actionid':_0x4b5639[_0x38e8('0x11')],'action':_0x38e8('0x12'),'channel':_0x4b5639['channel'],'Exten':'xcally-motion-fax','Context':_0x38e8('0x13'),'Priority':'1','callerid':util[_0x38e8('0xa')](_0x38e8('0x14'),_0x4b5639['headerinfo']?_0x4b5639[_0x38e8('0x15')]:'',_0x4b5639[_0x38e8('0x16')]),'variable':_0x351815,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x4b5639[_0x38e8('0x11')]};};
\ No newline at end of file
index 0bca66b..793bd5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9586=['then','initAgents','getTelephones','initTelephones','getTrunks','initVoiceQueues','getTriggers','initTriggers','initTemplates','getZendeskAccounts','initZendeskAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','log','sync','bluebird','util','moment','./server','./realtime','./report','./trigger','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/zoho','./rpc/integrations/freshsales','./rpc/integrations/servicenow','get','hour','resolve','getAgents'];(function(_0x3d826e,_0x424f45){var _0x3971f6=function(_0x13c6b1){while(--_0x13c6b1){_0x3d826e['push'](_0x3d826e['shift']());}};_0x3971f6(++_0x424f45);}(_0x9586,0x137));var _0x6958=function(_0x215075,_0x5bd05f){_0x215075=_0x215075-0x0;var _0x5cba52=_0x9586[_0x215075];return _0x5cba52;};'use strict';var BPromise=require(_0x6958('0x0'));var util=require(_0x6958('0x1'));var moment=require(_0x6958('0x2'));var server=require(_0x6958('0x3'));var Realtime=require(_0x6958('0x4'));var Report=require(_0x6958('0x5'));var Acw=require('./acw');var Trigger=require(_0x6958('0x6'));var Dialer=require('./dialer');var Preview=require(_0x6958('0x7'));var Fax=require(_0x6958('0x8'));var user=require(_0x6958('0x9'));var voiceQueue=require(_0x6958('0xa'));var voiceQueueReport=require(_0x6958('0xb'));var voiceCallReport=require(_0x6958('0xc'));var trunk=require(_0x6958('0xd'));var trigger=require(_0x6958('0xe'));var template=require(_0x6958('0xf'));var cmHopperHistory=require(_0x6958('0x10'));var campaign=require(_0x6958('0x11'));var voiceExtension=require(_0x6958('0x12'));var faxAccount=require('./rpc/faxAccount');var zendesk=require('./rpc/integrations/zendesk');var salesforce=require(_0x6958('0x13'));var sugarcrm=require(_0x6958('0x14'));var freshdesk=require(_0x6958('0x15'));var desk=require('./rpc/integrations/desk');var zoho=require(_0x6958('0x16'));var vtiger=require('./rpc/integrations/vtiger');var freshsales=require(_0x6958('0x17'));var servicenow=require(_0x6958('0x18'));var dynamics365=require('./rpc/integrations/dynamics365');var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x6958('0x19')](_0x6958('0x1a'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x6958('0x19')](_0x6958('0x1a'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x6958('0x1b')]()['then'](user[_0x6958('0x1c')]())[_0x6958('0x1d')](realtime[_0x6958('0x1e')]())[_0x6958('0x1d')](user[_0x6958('0x1f')]())['then'](realtime[_0x6958('0x20')]())[_0x6958('0x1d')](trunk[_0x6958('0x21')]())['then'](realtime['initTrunks']())['then'](voiceQueue['getVoiceQueues']())[_0x6958('0x1d')](realtime[_0x6958('0x22')]())[_0x6958('0x1d')](trigger[_0x6958('0x23')]())[_0x6958('0x1d')](realtime[_0x6958('0x24')]())[_0x6958('0x1d')](template['getTemplates']())['then'](realtime[_0x6958('0x25')]())['then'](zendesk[_0x6958('0x26')]())[_0x6958('0x1d')](realtime[_0x6958('0x27')]())[_0x6958('0x1d')](salesforce['getSalesforceAccounts']())['then'](realtime[_0x6958('0x28')]())[_0x6958('0x1d')](sugarcrm[_0x6958('0x29')]())[_0x6958('0x1d')](realtime[_0x6958('0x2a')]())['then'](freshdesk['getFreshdeskAccounts']())[_0x6958('0x1d')](realtime[_0x6958('0x2b')]())['then'](desk[_0x6958('0x2c')]())[_0x6958('0x1d')](realtime[_0x6958('0x2d')]())[_0x6958('0x1d')](zoho['getZohoAccounts']())[_0x6958('0x1d')](realtime['initZohoAccounts']())['then'](vtiger[_0x6958('0x2e')]())[_0x6958('0x1d')](realtime[_0x6958('0x2f')]())[_0x6958('0x1d')](freshsales[_0x6958('0x30')]())[_0x6958('0x1d')](realtime[_0x6958('0x31')]())[_0x6958('0x1d')](servicenow[_0x6958('0x32')]())[_0x6958('0x1d')](realtime['initServicenowAccounts']())[_0x6958('0x1d')](dynamics365[_0x6958('0x33')]())[_0x6958('0x1d')](realtime[_0x6958('0x34')]())[_0x6958('0x1d')](campaign[_0x6958('0x35')]())['then'](realtime[_0x6958('0x36')]())['then'](voiceExtension[_0x6958('0x37')]())[_0x6958('0x1d')](realtime[_0x6958('0x38')]())[_0x6958('0x1d')](faxAccount[_0x6958('0x39')]())[_0x6958('0x1d')](realtime[_0x6958('0x3a')]())[_0x6958('0x1d')](function(){return realtime;});}function initParams(){return BPromise[_0x6958('0x1b')]()[_0x6958('0x1d')](voiceQueueReport[_0x6958('0x3b')]())['then'](realtime['initVoiceQueueReports']())['then'](cmHopperHistory[_0x6958('0x3c')]())[_0x6958('0x1d')](realtime[_0x6958('0x3d')]())[_0x6958('0x1d')](cmHopperHistory['getCampaignHopperHistory']())['then'](realtime[_0x6958('0x3e')]())[_0x6958('0x1d')](voiceCallReport[_0x6958('0x3f')]())[_0x6958('0x1d')](realtime[_0x6958('0x40')]())['then'](function(_0x1d60b5){})[_0x6958('0x41')](function(_0x5ebc0b){console[_0x6958('0x42')](_0x5ebc0b);});}function main(){return server['listen'](realtime,preview,fax)[_0x6958('0x1d')](function(_0xb53dd1){return initRealtime();})[_0x6958('0x1d')](function(){return initParams();})[_0x6958('0x1d')](function(){report[_0x6958('0x43')]();setInterval(initRealtime,0x1388);})[_0x6958('0x41')](function(_0x11eaed){console[_0x6958('0x42')](_0x11eaed);});}main();
\ No newline at end of file
+var _0x03a4=['initVoiceExtensions','initFaxAccounts','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','log','listen','moment','./realtime','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/voiceQueue','./rpc/voiceCallReport','./rpc/trunk','./rpc/template','./rpc/campaign','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','resolve','getAgents','then','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initVtigerAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x03a4,0x1bb));var _0x403a=function(_0x229b42,_0x323c51){_0x229b42=_0x229b42-0x0;var _0x51883c=_0x03a4[_0x229b42];return _0x51883c;};'use strict';var BPromise=require('bluebird');var util=require('util');var moment=require(_0x403a('0x0'));var server=require('./server');var Realtime=require(_0x403a('0x1'));var Report=require(_0x403a('0x2'));var Acw=require(_0x403a('0x3'));var Trigger=require(_0x403a('0x4'));var Dialer=require(_0x403a('0x5'));var Preview=require(_0x403a('0x6'));var Fax=require(_0x403a('0x7'));var user=require('./rpc/user');var voiceQueue=require(_0x403a('0x8'));var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0x403a('0x9'));var trunk=require(_0x403a('0xa'));var trigger=require('./rpc/trigger');var template=require(_0x403a('0xb'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0x403a('0xc'));var voiceExtension=require('./rpc/voiceExtension');var faxAccount=require(_0x403a('0xd'));var zendesk=require(_0x403a('0xe'));var salesforce=require(_0x403a('0xf'));var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0x403a('0x10'));var zoho=require(_0x403a('0x11'));var vtiger=require(_0x403a('0x12'));var freshsales=require(_0x403a('0x13'));var servicenow=require(_0x403a('0x14'));var dynamics365=require(_0x403a('0x15'));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()[_0x403a('0x16')]('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0x403a('0x17'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x403a('0x18')]()['then'](user[_0x403a('0x19')]())[_0x403a('0x1a')](realtime[_0x403a('0x1b')]())[_0x403a('0x1a')](user[_0x403a('0x1c')]())[_0x403a('0x1a')](realtime[_0x403a('0x1d')]())['then'](trunk[_0x403a('0x1e')]())['then'](realtime[_0x403a('0x1f')]())[_0x403a('0x1a')](voiceQueue[_0x403a('0x20')]())[_0x403a('0x1a')](realtime[_0x403a('0x21')]())[_0x403a('0x1a')](trigger['getTriggers']())[_0x403a('0x1a')](realtime[_0x403a('0x22')]())[_0x403a('0x1a')](template[_0x403a('0x23')]())[_0x403a('0x1a')](realtime[_0x403a('0x24')]())[_0x403a('0x1a')](zendesk[_0x403a('0x25')]())[_0x403a('0x1a')](realtime[_0x403a('0x26')]())[_0x403a('0x1a')](salesforce[_0x403a('0x27')]())['then'](realtime['initSalesforceAccounts']())[_0x403a('0x1a')](sugarcrm['getSugarcrmAccounts']())['then'](realtime['initSugarcrmAccounts']())[_0x403a('0x1a')](freshdesk[_0x403a('0x28')]())[_0x403a('0x1a')](realtime[_0x403a('0x29')]())[_0x403a('0x1a')](desk[_0x403a('0x2a')]())[_0x403a('0x1a')](realtime[_0x403a('0x2b')]())[_0x403a('0x1a')](zoho[_0x403a('0x2c')]())[_0x403a('0x1a')](realtime['initZohoAccounts']())[_0x403a('0x1a')](vtiger['getVtigerAccounts']())[_0x403a('0x1a')](realtime[_0x403a('0x2d')]())[_0x403a('0x1a')](freshsales['getFreshsalesAccounts']())[_0x403a('0x1a')](realtime['initFreshsalesAccounts']())[_0x403a('0x1a')](servicenow[_0x403a('0x2e')]())[_0x403a('0x1a')](realtime[_0x403a('0x2f')]())[_0x403a('0x1a')](dynamics365[_0x403a('0x30')]())['then'](realtime[_0x403a('0x31')]())['then'](campaign[_0x403a('0x32')]())[_0x403a('0x1a')](realtime[_0x403a('0x33')]())[_0x403a('0x1a')](voiceExtension[_0x403a('0x34')]())['then'](realtime[_0x403a('0x35')]())['then'](faxAccount['getFaxAccounts']())[_0x403a('0x1a')](realtime[_0x403a('0x36')]())[_0x403a('0x1a')](function(){return realtime;});}function initParams(){return BPromise['resolve']()['then'](voiceQueueReport['getVoiceQueueReports']())[_0x403a('0x1a')](realtime['initVoiceQueueReports']())[_0x403a('0x1a')](cmHopperHistory[_0x403a('0x37')]())['then'](realtime[_0x403a('0x38')]())[_0x403a('0x1a')](cmHopperHistory['getCampaignHopperHistory']())[_0x403a('0x1a')](realtime['initCampaignHopperHistory']())[_0x403a('0x1a')](voiceCallReport[_0x403a('0x39')]())[_0x403a('0x1a')](realtime[_0x403a('0x3a')]())[_0x403a('0x1a')](function(_0xcf02e){})[_0x403a('0x3b')](function(_0x556f40){console[_0x403a('0x3c')](_0x556f40);});}function main(){return server[_0x403a('0x3d')](realtime,preview,fax)['then'](function(_0x93a9de){return initRealtime();})[_0x403a('0x1a')](function(){return initParams();})[_0x403a('0x1a')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0x403a('0x3b')](function(_0x1e0b33){console[_0x403a('0x3c')](_0x1e0b33);});}main();
\ No newline at end of file
index 1a133c0..2917c17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['name','email','accountcode','fullname','unknown','stateTime','status','address','mobile','interface','online','voiceStatus','voiceStatusQueue','onhold','local','updateStatusRealtime','state','idle','inuse','talking','statePause','voiceStatusTime','toNumber','voiceStatusCallerIdNumber','stringify','format','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','defaults','redis','socket.io-emitter'];(function(_0x499b1e,_0xe7fbe3){var _0x4ab288=function(_0x112796){while(--_0x112796){_0x499b1e['push'](_0x499b1e['shift']());}};_0x4ab288(++_0xe7fbe3);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4d6ac0,_0x201628){_0x4d6ac0=_0x4d6ac0-0x0;var _0x5296c4=_0xcb91[_0x4d6ac0];return _0x5296c4;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var md5=require(_0x1cb9('0x1'));var Redis=require(_0x1cb9('0x2'));var config=require(_0x1cb9('0x3'));config['redis']=_[_0x1cb9('0x4')](config[_0x1cb9('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x1cb9('0x6'))(new Redis(config[_0x1cb9('0x5')]));function Agent(_0x53ffbd){this['id']=_0x53ffbd['id']||0x0;this[_0x1cb9('0x7')]=_0x53ffbd[_0x1cb9('0x7')]||'';this['email']=_0x53ffbd[_0x1cb9('0x8')]||'';this[_0x1cb9('0x9')]=_0x53ffbd['accountcode']||'';this[_0x1cb9('0xa')]=_0x53ffbd['fullname']||'';this['state']=_0x1cb9('0xb');this[_0x1cb9('0xc')]=0x0;this[_0x1cb9('0xd')]=_0x1cb9('0xb');this[_0x1cb9('0xe')]='';this['phone']='';this[_0x1cb9('0xf')]='';this[_0x1cb9('0x10')]='';this[_0x1cb9('0x11')]=_0x53ffbd[_0x1cb9('0x11')]||![];this[_0x1cb9('0x12')]='unknown';this['voiceStatusTime']=0x0;this['voiceStatusCallerIdNumber']='';this[_0x1cb9('0x13')]='';this[_0x1cb9('0x14')]=![];this[_0x1cb9('0x15')]=![];this[_0x1cb9('0x1')]='';}Agent['prototype'][_0x1cb9('0x16')]=function(_0x6ef389){var _0x1b3cd7;if(_0x6ef389&&_0x6ef389[_0x1cb9('0x17')]){_0x1b3cd7=_0x6ef389[_0x1cb9('0x17')]['toLowerCase']();switch(_0x1b3cd7){case'not_inuse':_0x1b3cd7=_0x1cb9('0x18');break;case _0x1cb9('0x19'):_0x1b3cd7=_0x1cb9('0x1a');break;}}if(_0x1b3cd7&&this[_0x1cb9('0x12')]!==_0x1b3cd7||_0x6ef389[_0x1cb9('0x1b')]){this[_0x1cb9('0x1c')]=_[_0x1cb9('0x1d')](moment()['format']('x'));}if(_0x1b3cd7){this['voiceStatus']=_0x1b3cd7;}var _0x1b2fa6={'id':this['id'],'name':this[_0x1cb9('0x7')],'email':this[_0x1cb9('0x8')],'accountcode':this[_0x1cb9('0x9')],'fullname':this[_0x1cb9('0xa')],'state':this[_0x1cb9('0x17')],'stateTime':this[_0x1cb9('0xc')],'status':this['status'],'address':this['address'],'online':this[_0x1cb9('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x1cb9('0x1c')],'voiceStatusCallerIdNumber':this[_0x1cb9('0x1e')],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this['interface'],'onhold':this[_0x1cb9('0x14')]};var _0x325637=md5(JSON[_0x1cb9('0x1f')](_0x1b2fa6));if(this[_0x1cb9('0x1')]!==_0x325637){this[_0x1cb9('0x1')]=_0x325637;io['to'](util[_0x1cb9('0x20')]('user:%s',_0x1b2fa6['name']))[_0x1cb9('0x21')]('user:save',_0x1b2fa6);io[_0x1cb9('0x21')](_0x1cb9('0x22'),_0x1b2fa6);}};module[_0x1cb9('0x23')]=Agent;
\ No newline at end of file
+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(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0xedd9,0xfc));var _0x9edd=function(_0x3f4e44,_0x1df8cb){_0x3f4e44=_0x3f4e44-0x0;var _0x2745d6=_0xedd9[_0x3f4e44];return _0x2745d6;};'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
index 18e9324..302f0de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe17=['Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','originated','ivrAnswerCallsDay','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialCutDigit','TrunkBackup'];(function(_0x4a30f1,_0x2e75a8){var _0x1e0a09=function(_0xfc5f54){while(--_0xfc5f54){_0x4a30f1['push'](_0x4a30f1['shift']());}};_0x1e0a09(++_0x2e75a8);}(_0xfe17,0x104));var _0x7fe1=function(_0x249adc,_0x4c4317){_0x249adc=_0x249adc-0x0;var _0x6971c4=_0xfe17[_0x249adc];return _0x6971c4;};'use strict';function Campaign(_0x5bd9a4){this['id']=_0x5bd9a4['id']||0x0;this[_0x7fe1('0x0')]=_0x5bd9a4[_0x7fe1('0x0')]||'';this[_0x7fe1('0x1')]=_0x5bd9a4[_0x7fe1('0x1')]||'campaign';this[_0x7fe1('0x2')]=0x0;this['temp']=0x0;this[_0x7fe1('0x3')]=0x0;this['ivrTotalCallsDays']=0x0;this[_0x7fe1('0x4')]='';this[_0x7fe1('0x5')]=!![];this[_0x7fe1('0x6')]=_0x5bd9a4[_0x7fe1('0x6')];this[_0x7fe1('0x7')]=_0x5bd9a4[_0x7fe1('0x7')];this['dialTimezone']=_0x5bd9a4[_0x7fe1('0x8')]||null;this[_0x7fe1('0x9')]=_0x5bd9a4[_0x7fe1('0x9')]?_0x5bd9a4[_0x7fe1('0x9')]:null;this['dialOriginateCallerIdName']=_0x5bd9a4[_0x7fe1('0xa')];this[_0x7fe1('0xb')]=_0x5bd9a4[_0x7fe1('0xb')];this[_0x7fe1('0xc')]=_0x5bd9a4[_0x7fe1('0xc')]||0x1e;this[_0x7fe1('0xd')]=_0x5bd9a4[_0x7fe1('0xd')];this[_0x7fe1('0xe')]=_0x5bd9a4[_0x7fe1('0xe')];this[_0x7fe1('0xf')]=_0x5bd9a4[_0x7fe1('0xf')];this['dialBusyRetryFrequency']=_0x5bd9a4[_0x7fe1('0x10')];this['dialNoAnswerMaxRetry']=_0x5bd9a4[_0x7fe1('0x11')];this[_0x7fe1('0x12')]=_0x5bd9a4[_0x7fe1('0x12')];this['dialGlobalMaxRetry']=_0x5bd9a4['dialGlobalMaxRetry'];this['dialNoSuchNumberMaxRetry']=_0x5bd9a4[_0x7fe1('0x13')]||0x3;this[_0x7fe1('0x14')]=_0x5bd9a4[_0x7fe1('0x14')]||0x96;this[_0x7fe1('0x15')]=_0x5bd9a4[_0x7fe1('0x15')]||0x3;this['dialDropRetryFrequency']=_0x5bd9a4[_0x7fe1('0x16')]||0x96;this[_0x7fe1('0x17')]=_0x5bd9a4['dialAbandonedMaxRetry']||0x3;this[_0x7fe1('0x18')]=_0x5bd9a4[_0x7fe1('0x18')]||0x96;this[_0x7fe1('0x19')]=_0x5bd9a4[_0x7fe1('0x19')]||0x3;this[_0x7fe1('0x1a')]=_0x5bd9a4[_0x7fe1('0x1a')]||0x96;this['dialAgentRejectMaxRetry']=_0x5bd9a4[_0x7fe1('0x1b')]||0x3;this[_0x7fe1('0x1c')]=_0x5bd9a4[_0x7fe1('0x1c')]||0x96;this[_0x7fe1('0x1d')]=_0x5bd9a4['dialOrderByScheduledAt']||_0x7fe1('0x1e');this[_0x7fe1('0x1f')]=_0x5bd9a4[_0x7fe1('0x1f')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x5bd9a4['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x7fe1('0x20')]=_0x5bd9a4[_0x7fe1('0x20')]||undefined;this[_0x7fe1('0x21')]=_0x5bd9a4[_0x7fe1('0x21')]?_0x5bd9a4['TrunkBackup']:undefined;this['Trunk']=_0x5bd9a4[_0x7fe1('0x22')]?_0x5bd9a4[_0x7fe1('0x22')]:undefined;this[_0x7fe1('0x23')]=_0x5bd9a4['Interval']?_0x5bd9a4['Interval']:undefined;this[_0x7fe1('0x24')]=_0x5bd9a4[_0x7fe1('0x24')]?_0x5bd9a4[_0x7fe1('0x24')]:undefined;this[_0x7fe1('0x25')]=_0x5bd9a4['SquareProject']?_0x5bd9a4['SquareProject'][_0x7fe1('0x0')]:undefined;this[_0x7fe1('0x26')]=_0x5bd9a4[_0x7fe1('0x26')]||![];this[_0x7fe1('0x27')]=_0x5bd9a4[_0x7fe1('0x27')];this['dialAMDGreeting']=_0x5bd9a4[_0x7fe1('0x28')];this[_0x7fe1('0x29')]=_0x5bd9a4[_0x7fe1('0x29')];this[_0x7fe1('0x2a')]=_0x5bd9a4[_0x7fe1('0x2a')];this[_0x7fe1('0x2b')]=_0x5bd9a4[_0x7fe1('0x2b')];this[_0x7fe1('0x2c')]=_0x5bd9a4[_0x7fe1('0x2c')];this['dialAMDMaximumNumberOfWords']=_0x5bd9a4[_0x7fe1('0x2d')];this[_0x7fe1('0x2e')]=_0x5bd9a4[_0x7fe1('0x2e')];this[_0x7fe1('0x2f')]=_0x5bd9a4[_0x7fe1('0x2f')];}module[_0x7fe1('0x30')]=Campaign;
\ No newline at end of file
+var _0x8029=['campaign','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type'];(function(_0x49c03e,_0x1d71c8){var _0x21079a=function(_0x568ce9){while(--_0x568ce9){_0x49c03e['push'](_0x49c03e['shift']());}};_0x21079a(++_0x1d71c8);}(_0x8029,0x94));var _0x9802=function(_0x3a97dd,_0x4cd032){_0x3a97dd=_0x3a97dd-0x0;var _0x1d2306=_0x8029[_0x3a97dd];return _0x1d2306;};'use strict';function Campaign(_0x4fb4d0){this['id']=_0x4fb4d0['id']||0x0;this[_0x9802('0x0')]=_0x4fb4d0[_0x9802('0x0')]||'';this[_0x9802('0x1')]=_0x4fb4d0[_0x9802('0x1')]||_0x9802('0x2');this['originated']=0x0;this['temp']=0x0;this[_0x9802('0x3')]=0x0;this[_0x9802('0x4')]=0x0;this[_0x9802('0x5')]='';this[_0x9802('0x6')]=!![];this['active']=_0x4fb4d0[_0x9802('0x7')];this[_0x9802('0x8')]=_0x4fb4d0[_0x9802('0x8')];this['dialTimezone']=_0x4fb4d0['dialTimezone']||null;this[_0x9802('0x9')]=_0x4fb4d0['dialGlobalInterval']?_0x4fb4d0[_0x9802('0x9')]:null;this[_0x9802('0xa')]=_0x4fb4d0[_0x9802('0xa')];this['dialOriginateCallerIdNumber']=_0x4fb4d0['dialOriginateCallerIdNumber'];this[_0x9802('0xb')]=_0x4fb4d0['dialOriginateTimeout']||0x1e;this[_0x9802('0xc')]=_0x4fb4d0[_0x9802('0xc')];this[_0x9802('0xd')]=_0x4fb4d0[_0x9802('0xd')];this[_0x9802('0xe')]=_0x4fb4d0[_0x9802('0xe')];this[_0x9802('0xf')]=_0x4fb4d0['dialBusyRetryFrequency'];this[_0x9802('0x10')]=_0x4fb4d0[_0x9802('0x10')];this[_0x9802('0x11')]=_0x4fb4d0[_0x9802('0x11')];this['dialGlobalMaxRetry']=_0x4fb4d0[_0x9802('0x12')];this['dialNoSuchNumberMaxRetry']=_0x4fb4d0[_0x9802('0x13')]||0x3;this[_0x9802('0x14')]=_0x4fb4d0[_0x9802('0x14')]||0x96;this[_0x9802('0x15')]=_0x4fb4d0[_0x9802('0x15')]||0x3;this['dialDropRetryFrequency']=_0x4fb4d0[_0x9802('0x16')]||0x96;this['dialAbandonedMaxRetry']=_0x4fb4d0[_0x9802('0x17')]||0x3;this[_0x9802('0x18')]=_0x4fb4d0[_0x9802('0x18')]||0x96;this[_0x9802('0x19')]=_0x4fb4d0[_0x9802('0x19')]||0x3;this[_0x9802('0x1a')]=_0x4fb4d0[_0x9802('0x1a')]||0x96;this[_0x9802('0x1b')]=_0x4fb4d0[_0x9802('0x1b')]||0x3;this[_0x9802('0x1c')]=_0x4fb4d0['dialAgentRejectRetryFrequency']||0x96;this['dialOrderByScheduledAt']=_0x4fb4d0[_0x9802('0x1d')]||_0x9802('0x1e');this[_0x9802('0x1f')]=_0x4fb4d0['dialPrefix']||undefined;this[_0x9802('0x20')]=_0x4fb4d0[_0x9802('0x20')]||undefined;this[_0x9802('0x21')]=_0x4fb4d0['dialCutDigit']||undefined;this['TrunkBackup']=_0x4fb4d0[_0x9802('0x22')]?_0x4fb4d0['TrunkBackup']:undefined;this[_0x9802('0x23')]=_0x4fb4d0[_0x9802('0x23')]?_0x4fb4d0[_0x9802('0x23')]:undefined;this[_0x9802('0x24')]=_0x4fb4d0['Interval']?_0x4fb4d0[_0x9802('0x24')]:undefined;this[_0x9802('0x25')]=_0x4fb4d0[_0x9802('0x25')]?_0x4fb4d0[_0x9802('0x25')]:undefined;this[_0x9802('0x26')]=_0x4fb4d0[_0x9802('0x25')]?_0x4fb4d0['SquareProject'][_0x9802('0x0')]:undefined;this[_0x9802('0x27')]=_0x4fb4d0['dialAMDActive']||![];this[_0x9802('0x28')]=_0x4fb4d0[_0x9802('0x28')];this[_0x9802('0x29')]=_0x4fb4d0[_0x9802('0x29')];this[_0x9802('0x2a')]=_0x4fb4d0[_0x9802('0x2a')];this['dialAMDTotalAnalysisTime']=_0x4fb4d0[_0x9802('0x2b')];this[_0x9802('0x2c')]=_0x4fb4d0['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x4fb4d0[_0x9802('0x2d')];this['dialAMDMaximumNumberOfWords']=_0x4fb4d0[_0x9802('0x2e')];this[_0x9802('0x2f')]=_0x4fb4d0[_0x9802('0x2f')];this[_0x9802('0x30')]=_0x4fb4d0[_0x9802('0x30')];}module[_0x9802('0x31')]=Campaign;
\ No newline at end of file
index 3fafd01..b06b529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe367=['mohtime','starttime','channel','destinationchannel','connectedlinenum','connectedlinename','context','uniqueid','linkedid','answered','answertime','endtime','unmanaged','abandoned','lastapplication','lastdata','duration','billableseconds','holdtime','type','tag','disposition','monitor','queue','monitors','transfercalleridnum','transferconnectedlinenum'];(function(_0x2bf1d6,_0x410efd){var _0x1be08a=function(_0x39c3a2){while(--_0x39c3a2){_0x2bf1d6['push'](_0x2bf1d6['shift']());}};_0x1be08a(++_0x410efd);}(_0xe367,0x10f));var _0x7e36=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xe367[_0x46698a];return _0x356db0;};'use strict';function Channel(){this[_0x7e36('0x0')]=null;this[_0x7e36('0x1')]='';this[_0x7e36('0x2')]='';this['calleridnum']=0x0;this['calleridname']='';this[_0x7e36('0x3')]=undefined;this[_0x7e36('0x4')]=undefined;this['accountcode']=0x0;this[_0x7e36('0x5')]='';this[_0x7e36('0x6')]=0x0;this[_0x7e36('0x7')]=0x0;this['exten']=0x0;this[_0x7e36('0x8')]=![];this[_0x7e36('0x9')]=null;this[_0x7e36('0xa')]=null;this[_0x7e36('0xb')]=![];this[_0x7e36('0xc')]=![];this[_0x7e36('0xd')]='';this[_0x7e36('0xe')]='';this[_0x7e36('0xf')]=0x0;this[_0x7e36('0x10')]=0x0;this[_0x7e36('0x11')]=0x0;this[_0x7e36('0x12')]=null;this[_0x7e36('0x13')]=null;this[_0x7e36('0x14')]=null;this[_0x7e36('0x15')]=![];this['monitorFilename']=null;this[_0x7e36('0x16')]=null;this[_0x7e36('0x17')]=[];this[_0x7e36('0x18')]=undefined;this[_0x7e36('0x19')]=undefined;this['transferType']=undefined;this[_0x7e36('0x1a')]=0x0;}module['exports']=Channel;
\ No newline at end of file
+var _0x0007=['answered','answertime','endtime','unmanaged','lastapplication','lastdata','duration','billableseconds','holdtime','type','disposition','monitor','monitorFilename','queue','monitors','transfercalleridnum','mohtime','exports','starttime','channel','destinationchannel','calleridname','connectedlinenum','connectedlinename','accountcode','uniqueid','linkedid','exten'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0007,0x1ee));var _0x7000=function(_0x49d7ca,_0x514fc4){_0x49d7ca=_0x49d7ca-0x0;var _0x12422f=_0x0007[_0x49d7ca];return _0x12422f;};'use strict';function Channel(){this[_0x7000('0x0')]=null;this[_0x7000('0x1')]='';this[_0x7000('0x2')]='';this['calleridnum']=0x0;this[_0x7000('0x3')]='';this[_0x7000('0x4')]=undefined;this[_0x7000('0x5')]=undefined;this[_0x7000('0x6')]=0x0;this['context']='';this[_0x7000('0x7')]=0x0;this[_0x7000('0x8')]=0x0;this[_0x7000('0x9')]=0x0;this[_0x7000('0xa')]=![];this[_0x7000('0xb')]=null;this[_0x7000('0xc')]=null;this[_0x7000('0xd')]=![];this['abandoned']=![];this[_0x7000('0xe')]='';this[_0x7000('0xf')]='';this[_0x7000('0x10')]=0x0;this[_0x7000('0x11')]=0x0;this[_0x7000('0x12')]=0x0;this[_0x7000('0x13')]=null;this['tag']=null;this[_0x7000('0x14')]=null;this[_0x7000('0x15')]=![];this[_0x7000('0x16')]=null;this[_0x7000('0x17')]=null;this[_0x7000('0x18')]=[];this[_0x7000('0x19')]=undefined;this['transferconnectedlinenum']=undefined;this['transferType']=undefined;this[_0x7000('0x1a')]=0x0;}module[_0x7000('0x1b')]=Channel;
\ No newline at end of file
index e8a9601..bfe0eac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3560=['name','remoteUri','authType','password','consumerKey','consumerSecret','tokenSecret','type','serverUrl','Configurations','exports'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x3560,0x16b));var _0x0356=function(_0x35181c,_0x82694a){_0x35181c=_0x35181c-0x0;var _0xe14bf9=_0x3560[_0x35181c];return _0xe14bf9;};'use strict';function DeskAccount(_0x26a0e8){this['id']=_0x26a0e8['id']||0x0;this[_0x0356('0x0')]=_0x26a0e8['name']||'';this['username']=_0x26a0e8['username']||'';this[_0x0356('0x1')]=_0x26a0e8[_0x0356('0x1')]||'';this[_0x0356('0x2')]=_0x26a0e8[_0x0356('0x2')]||'';this[_0x0356('0x3')]=_0x26a0e8[_0x0356('0x3')]||'';this[_0x0356('0x4')]=_0x26a0e8[_0x0356('0x4')]||'';this[_0x0356('0x5')]=_0x26a0e8[_0x0356('0x5')]||'';this['token']=_0x26a0e8['token']||'';this[_0x0356('0x6')]=_0x26a0e8[_0x0356('0x6')]||'';this[_0x0356('0x7')]=_0x26a0e8['type']||'';this['serverUrl']=_0x26a0e8[_0x0356('0x8')]||'';this[_0x0356('0x9')]=_0x26a0e8['Configurations']||{};}module[_0x0356('0xa')]=DeskAccount;
\ No newline at end of file
+var _0x7d98=['remoteUri','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports','name','username'];(function(_0x54110a,_0x528861){var _0x4b41a6=function(_0x1f5637){while(--_0x1f5637){_0x54110a['push'](_0x54110a['shift']());}};_0x4b41a6(++_0x528861);}(_0x7d98,0x196));var _0x87d9=function(_0x512c83,_0x42a67a){_0x512c83=_0x512c83-0x0;var _0x1f7f25=_0x7d98[_0x512c83];return _0x1f7f25;};'use strict';function DeskAccount(_0x5e30e0){this['id']=_0x5e30e0['id']||0x0;this[_0x87d9('0x0')]=_0x5e30e0['name']||'';this[_0x87d9('0x1')]=_0x5e30e0[_0x87d9('0x1')]||'';this[_0x87d9('0x2')]=_0x5e30e0['remoteUri']||'';this['authType']=_0x5e30e0['authType']||'';this[_0x87d9('0x3')]=_0x5e30e0[_0x87d9('0x3')]||'';this['consumerKey']=_0x5e30e0[_0x87d9('0x4')]||'';this[_0x87d9('0x5')]=_0x5e30e0[_0x87d9('0x5')]||'';this[_0x87d9('0x6')]=_0x5e30e0['token']||'';this['tokenSecret']=_0x5e30e0[_0x87d9('0x7')]||'';this[_0x87d9('0x8')]=_0x5e30e0[_0x87d9('0x8')]||'';this[_0x87d9('0x9')]=_0x5e30e0['serverUrl']||'';this[_0x87d9('0xa')]=_0x5e30e0[_0x87d9('0xa')]||{};}module[_0x87d9('0xb')]=DeskAccount;
\ No newline at end of file
index 1531e13..6e0fee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74f=['name','password','remoteUri','tenantId','clientSecret','serverUrl','Configurations'];(function(_0x119280,_0x439c3e){var _0x481797=function(_0x4265cb){while(--_0x4265cb){_0x119280['push'](_0x119280['shift']());}};_0x481797(++_0x439c3e);}(_0xa74f,0x9a));var _0xfa74=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0xa74f[_0x5a3cf0];return _0x5a64ee;};'use strict';function Dynamics365Account(_0x4607a1){this['id']=_0x4607a1['id']||0x0;this['name']=_0x4607a1[_0xfa74('0x0')]||'';this['username']=_0x4607a1['username']||'';this[_0xfa74('0x1')]=_0x4607a1[_0xfa74('0x1')]||'';this[_0xfa74('0x2')]=_0x4607a1[_0xfa74('0x2')]||'';this['tenantId']=_0x4607a1[_0xfa74('0x3')]||'';this['clientId']=_0x4607a1['clientId']||'';this[_0xfa74('0x4')]=_0x4607a1[_0xfa74('0x4')]||{};this[_0xfa74('0x5')]=_0x4607a1[_0xfa74('0x5')]||'';this[_0xfa74('0x6')]=_0x4607a1[_0xfa74('0x6')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
+var _0xbaf0=['Configurations','name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl'];(function(_0x3cdb93,_0xa86285){var _0x538c5b=function(_0x5233b5){while(--_0x5233b5){_0x3cdb93['push'](_0x3cdb93['shift']());}};_0x538c5b(++_0xa86285);}(_0xbaf0,0x12a));var _0x0baf=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xbaf0[_0x465028];return _0xb783d4;};'use strict';function Dynamics365Account(_0x61caa9){this['id']=_0x61caa9['id']||0x0;this[_0x0baf('0x0')]=_0x61caa9[_0x0baf('0x0')]||'';this[_0x0baf('0x1')]=_0x61caa9[_0x0baf('0x1')]||'';this[_0x0baf('0x2')]=_0x61caa9[_0x0baf('0x2')]||'';this['remoteUri']=_0x61caa9[_0x0baf('0x3')]||'';this[_0x0baf('0x4')]=_0x61caa9[_0x0baf('0x4')]||'';this[_0x0baf('0x5')]=_0x61caa9[_0x0baf('0x5')]||'';this[_0x0baf('0x6')]=_0x61caa9[_0x0baf('0x6')]||{};this[_0x0baf('0x7')]=_0x61caa9[_0x0baf('0x7')]||'';this['Configurations']=_0x61caa9[_0x0baf('0x8')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
index bb58a49..38df37f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbda7=['headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','SIP','Trunk','ListId','key','exports','name','description','ecm'];(function(_0x20510f,_0x5f1d61){var _0x421a5c=function(_0x5d088f){while(--_0x5d088f){_0x20510f['push'](_0x20510f['shift']());}};_0x421a5c(++_0x5f1d61);}(_0xbda7,0x1a6));var _0x7bda=function(_0x584c57,_0x5d5e1c){_0x584c57=_0x584c57-0x0;var _0x3083dc=_0xbda7[_0x584c57];return _0x3083dc;};'use strict';function FaxAccount(_0x556ffc){this['id']=_0x556ffc['id']||0x0;this[_0x7bda('0x0')]=_0x556ffc[_0x7bda('0x0')]||'';this['description']=_0x556ffc[_0x7bda('0x1')];this[_0x7bda('0x2')]=_0x556ffc[_0x7bda('0x2')];this[_0x7bda('0x3')]=_0x556ffc[_0x7bda('0x3')];this[_0x7bda('0x4')]=_0x556ffc[_0x7bda('0x4')];this[_0x7bda('0x5')]=_0x556ffc[_0x7bda('0x5')]||0x960;this[_0x7bda('0x6')]=_0x556ffc[_0x7bda('0x6')]||0x3840;this[_0x7bda('0x7')]=_0x556ffc[_0x7bda('0x7')]||_0x7bda('0x8');this[_0x7bda('0x9')]=_0x556ffc['gateway']||'no';this[_0x7bda('0xa')]=_0x556ffc[_0x7bda('0xa')]||'no';this[_0x7bda('0xb')]=_0x556ffc['t38timeout']||0x1388;this['tech']=_0x556ffc['tech']||_0x7bda('0xc');this[_0x7bda('0xd')]=_0x556ffc[_0x7bda('0xd')]?_0x556ffc[_0x7bda('0xd')]:undefined;this[_0x7bda('0xe')]=_0x556ffc[_0x7bda('0xe')];this[_0x7bda('0xf')]=_0x556ffc['key'];}module[_0x7bda('0x10')]=FaxAccount;
\ No newline at end of file
+var _0xc68b=['v17,v27,v29','gateway','faxdetect','t38timeout','tech','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem'];(function(_0x223c83,_0x45f165){var _0x268ac2=function(_0x5d1666){while(--_0x5d1666){_0x223c83['push'](_0x223c83['shift']());}};_0x268ac2(++_0x45f165);}(_0xc68b,0x108));var _0xbc68=function(_0x5dd331,_0xa6a1b3){_0x5dd331=_0x5dd331-0x0;var _0x1b74bc=_0xc68b[_0x5dd331];return _0x1b74bc;};'use strict';function FaxAccount(_0x5cbd58){this['id']=_0x5cbd58['id']||0x0;this['name']=_0x5cbd58[_0xbc68('0x0')]||'';this[_0xbc68('0x1')]=_0x5cbd58[_0xbc68('0x1')];this[_0xbc68('0x2')]=_0x5cbd58[_0xbc68('0x2')];this['headerinfo']=_0x5cbd58[_0xbc68('0x3')];this[_0xbc68('0x4')]=_0x5cbd58[_0xbc68('0x4')];this['minrate']=_0x5cbd58[_0xbc68('0x5')]||0x960;this[_0xbc68('0x6')]=_0x5cbd58[_0xbc68('0x6')]||0x3840;this[_0xbc68('0x7')]=_0x5cbd58['modem']||_0xbc68('0x8');this[_0xbc68('0x9')]=_0x5cbd58[_0xbc68('0x9')]||'no';this[_0xbc68('0xa')]=_0x5cbd58[_0xbc68('0xa')]||'no';this['t38timeout']=_0x5cbd58[_0xbc68('0xb')]||0x1388;this[_0xbc68('0xc')]=_0x5cbd58['tech']||'SIP';this[_0xbc68('0xd')]=_0x5cbd58[_0xbc68('0xd')]?_0x5cbd58['Trunk']:undefined;this['ListId']=_0x5cbd58[_0xbc68('0xe')];this[_0xbc68('0xf')]=_0x5cbd58[_0xbc68('0xf')];}module[_0xbc68('0x10')]=FaxAccount;
\ No newline at end of file
index d404c18..3051cc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc46c=['name','username','serverUrl','Configurations','exports'];(function(_0x54368a,_0x251b63){var _0x3a9bb3=function(_0x133e40){while(--_0x133e40){_0x54368a['push'](_0x54368a['shift']());}};_0x3a9bb3(++_0x251b63);}(_0xc46c,0x140));var _0xcc46=function(_0x3cba93,_0x5c2fd8){_0x3cba93=_0x3cba93-0x0;var _0x4a2991=_0xc46c[_0x3cba93];return _0x4a2991;};'use strict';function FreshdeskAccount(_0x446c66){this['id']=_0x446c66['id']||0x0;this[_0xcc46('0x0')]=_0x446c66[_0xcc46('0x0')]||'';this[_0xcc46('0x1')]=_0x446c66[_0xcc46('0x1')]||'';this['apiKey']=_0x446c66['token']||'';this['remoteUri']=_0x446c66['remoteUri']||'';this[_0xcc46('0x2')]=_0x446c66[_0xcc46('0x2')]||'';this[_0xcc46('0x3')]=_0x446c66['Configurations']||{};}module[_0xcc46('0x4')]=FreshdeskAccount;
\ No newline at end of file
+var _0x327e=['username','apiKey','token','remoteUri','serverUrl','Configurations','name'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x327e,0x16b));var _0xe327=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x327e[_0x321bb2];return _0x9c12ed;};'use strict';function FreshdeskAccount(_0x4f5437){this['id']=_0x4f5437['id']||0x0;this['name']=_0x4f5437[_0xe327('0x0')]||'';this['username']=_0x4f5437[_0xe327('0x1')]||'';this[_0xe327('0x2')]=_0x4f5437[_0xe327('0x3')]||'';this['remoteUri']=_0x4f5437[_0xe327('0x4')]||'';this[_0xe327('0x5')]=_0x4f5437[_0xe327('0x5')]||'';this[_0xe327('0x6')]=_0x4f5437[_0xe327('0x6')]||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
index 8cd779a..afcc6d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82f5=['exports','name','username','remoteUri','serverUrl','Configurations'];(function(_0x111557,_0x4671f4){var _0xc99165=function(_0x24fbac){while(--_0x24fbac){_0x111557['push'](_0x111557['shift']());}};_0xc99165(++_0x4671f4);}(_0x82f5,0x15d));var _0x582f=function(_0x494ba4,_0x489c85){_0x494ba4=_0x494ba4-0x0;var _0x3bc3be=_0x82f5[_0x494ba4];return _0x3bc3be;};'use strict';function FreshsalesAccount(_0x3da79e){this['id']=_0x3da79e['id']||0x0;this[_0x582f('0x0')]=_0x3da79e[_0x582f('0x0')]||'';this[_0x582f('0x1')]=_0x3da79e[_0x582f('0x1')]||'';this['apiKey']=_0x3da79e['token']||'';this[_0x582f('0x2')]=_0x3da79e[_0x582f('0x2')]||'';this[_0x582f('0x3')]=_0x3da79e[_0x582f('0x3')]||'';this[_0x582f('0x4')]=_0x3da79e[_0x582f('0x4')]||{};}module[_0x582f('0x5')]=FreshsalesAccount;
\ No newline at end of file
+var _0xbc8d=['remoteUri','serverUrl','Configurations','exports','name','username','apiKey'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xbc8d,0x15b));var _0xdbc8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbc8d[_0x3dd15e];return _0x231fd0;};'use strict';function FreshsalesAccount(_0x109b96){this['id']=_0x109b96['id']||0x0;this['name']=_0x109b96[_0xdbc8('0x0')]||'';this[_0xdbc8('0x1')]=_0x109b96[_0xdbc8('0x1')]||'';this[_0xdbc8('0x2')]=_0x109b96['token']||'';this[_0xdbc8('0x3')]=_0x109b96[_0xdbc8('0x3')]||'';this[_0xdbc8('0x4')]=_0x109b96['serverUrl']||'';this[_0xdbc8('0x5')]=_0x109b96[_0xdbc8('0x5')]||{};}module[_0xdbc8('0x6')]=FreshsalesAccount;
\ No newline at end of file
index b5e6250..bb7d538 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x896e=['queue','queuecallerjoinAt','queuecallerleaveAt','position','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinename','context','holdtime','lastAssignedTo','mohtime','variables','type','inbound','uniqueid','calleridnum','calleridname'];(function(_0x10df18,_0x13338c){var _0x1f9a1d=function(_0x3157f4){while(--_0x3157f4){_0x10df18['push'](_0x10df18['shift']());}};_0x1f9a1d(++_0x13338c);}(_0x896e,0x182));var _0xe896=function(_0xadb995,_0x335c7a){_0xadb995=_0xadb995-0x0;var _0x4f9d65=_0x896e[_0xadb995];return _0x4f9d65;};'use strict';function QueueReport(){this[_0xe896('0x0')]=_0xe896('0x1');this[_0xe896('0x2')]='';this[_0xe896('0x3')]='';this[_0xe896('0x4')]='';this[_0xe896('0x5')]='';this[_0xe896('0x6')]=null;this[_0xe896('0x7')]=null;this[_0xe896('0x8')]=0x1;this['count']=0x1;this[_0xe896('0x9')]=![];this[_0xe896('0xa')]=null;this[_0xe896('0xb')]=![];this[_0xe896('0xc')]=null;this[_0xe896('0xd')]=![];this[_0xe896('0xe')]=null;this[_0xe896('0xf')]=0x1;this[_0xe896('0x10')]='';this['connectedlinenum']='';this[_0xe896('0x11')]='';this['accountcode']='';this[_0xe896('0x12')]='';this['exten']='';this['priority']='';this[_0xe896('0x13')]=0x0;this['assigned']=![];this[_0xe896('0x14')]='';this[_0xe896('0x15')]=0x0;this[_0xe896('0x16')]={};}module['exports']=QueueReport;
\ No newline at end of file
+var _0x5569=['mohtime','variables','exports','type','inbound','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','holdtime','assigned','lastAssignedTo','motionChannel','voice'];(function(_0x16fb52,_0xd7d1bd){var _0x2bb121=function(_0x3d18ab){while(--_0x3d18ab){_0x16fb52['push'](_0x16fb52['shift']());}};_0x2bb121(++_0xd7d1bd);}(_0x5569,0xce));var _0x9556=function(_0x14d76a,_0x38c683){_0x14d76a=_0x14d76a-0x0;var _0x5baef8=_0x5569[_0x14d76a];return _0x5baef8;};'use strict';function QueueReport(){this[_0x9556('0x0')]=_0x9556('0x1');this['uniqueid']='';this[_0x9556('0x2')]='';this[_0x9556('0x3')]='';this[_0x9556('0x4')]='';this[_0x9556('0x5')]=null;this[_0x9556('0x6')]=null;this[_0x9556('0x7')]=0x1;this[_0x9556('0x8')]=0x1;this[_0x9556('0x9')]=![];this[_0x9556('0xa')]=null;this[_0x9556('0xb')]=![];this[_0x9556('0xc')]=null;this[_0x9556('0xd')]=![];this[_0x9556('0xe')]=null;this[_0x9556('0xf')]=0x1;this[_0x9556('0x10')]='';this[_0x9556('0x11')]='';this[_0x9556('0x12')]='';this[_0x9556('0x13')]='';this[_0x9556('0x14')]='';this['exten']='';this['priority']='';this[_0x9556('0x15')]=0x0;this[_0x9556('0x16')]=![];this[_0x9556('0x17')]='';this[_0x9556('0x18')]=_0x9556('0x19');this[_0x9556('0x1a')]=0x0;this[_0x9556('0x1b')]={};}module[_0x9556('0x1c')]=QueueReport;
\ No newline at end of file
index 4716712..02bd6e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf452=['name','username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports'];(function(_0x298f5e,_0x37899c){var _0x268a22=function(_0x54dec1){while(--_0x54dec1){_0x298f5e['push'](_0x298f5e['shift']());}};_0x268a22(++_0x37899c);}(_0xf452,0x144));var _0x2f45=function(_0x3114d1,_0x2654ab){_0x3114d1=_0x3114d1-0x0;var _0x2d9b52=_0xf452[_0x3114d1];return _0x2d9b52;};'use strict';function SalesforceAccount(_0x344b6a){this['id']=_0x344b6a['id']||0x0;this[_0x2f45('0x0')]=_0x344b6a[_0x2f45('0x0')]||'';this['username']=_0x344b6a[_0x2f45('0x1')]||'';this['remoteUri']=_0x344b6a[_0x2f45('0x2')]||'';this[_0x2f45('0x3')]=_0x344b6a[_0x2f45('0x3')]||'';this[_0x2f45('0x4')]=_0x344b6a['clientId']||'';this['clientSecret']=_0x344b6a[_0x2f45('0x5')]||'';this[_0x2f45('0x6')]=_0x344b6a[_0x2f45('0x6')]||'';this[_0x2f45('0x7')]=_0x344b6a[_0x2f45('0x7')]||_0x2f45('0x8');this[_0x2f45('0x9')]=_0x344b6a[_0x2f45('0x9')]||'';this[_0x2f45('0xa')]=_0x344b6a[_0x2f45('0xa')]||{};}module[_0x2f45('0xb')]=SalesforceAccount;
\ No newline at end of file
+var _0x228b=['securityToken','type','serverUrl','Configurations','name','username','remoteUri','password','clientId'];(function(_0x246115,_0x398123){var _0x385878=function(_0x534a9c){while(--_0x534a9c){_0x246115['push'](_0x246115['shift']());}};_0x385878(++_0x398123);}(_0x228b,0x1f3));var _0xb228=function(_0x41d6df,_0x489f45){_0x41d6df=_0x41d6df-0x0;var _0x1a24b4=_0x228b[_0x41d6df];return _0x1a24b4;};'use strict';function SalesforceAccount(_0x3778a9){this['id']=_0x3778a9['id']||0x0;this[_0xb228('0x0')]=_0x3778a9['name']||'';this[_0xb228('0x1')]=_0x3778a9[_0xb228('0x1')]||'';this[_0xb228('0x2')]=_0x3778a9['remoteUri']||'';this[_0xb228('0x3')]=_0x3778a9[_0xb228('0x3')]||'';this[_0xb228('0x4')]=_0x3778a9['clientId']||'';this['clientSecret']=_0x3778a9['clientSecret']||'';this[_0xb228('0x5')]=_0x3778a9['securityToken']||'';this[_0xb228('0x6')]=_0x3778a9[_0xb228('0x6')]||'integrationTab';this[_0xb228('0x7')]=_0x3778a9[_0xb228('0x7')]||'';this['Configurations']=_0x3778a9[_0xb228('0x8')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
index 8284cdb..54abe97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9020=['serverUrl','Configurations','exports','name','username'];(function(_0x2a54df,_0x5528d5){var _0x1ae08e=function(_0x4f3a65){while(--_0x4f3a65){_0x2a54df['push'](_0x2a54df['shift']());}};_0x1ae08e(++_0x5528d5);}(_0x9020,0x189));var _0x0902=function(_0x41fd33,_0x3d3796){_0x41fd33=_0x41fd33-0x0;var _0x2b0deb=_0x9020[_0x41fd33];return _0x2b0deb;};'use strict';function ServicenowAccount(_0x5092e8){this['id']=_0x5092e8['id']||0x0;this[_0x0902('0x0')]=_0x5092e8[_0x0902('0x0')]||'';this[_0x0902('0x1')]=_0x5092e8[_0x0902('0x1')]||'';this['password']=_0x5092e8['password']||'';this['remoteUri']=_0x5092e8['remoteUri']||'';this[_0x0902('0x2')]=_0x5092e8['serverUrl']||'';this['Configurations']=_0x5092e8[_0x0902('0x3')]||{};}module[_0x0902('0x4')]=ServicenowAccount;
\ No newline at end of file
+var _0x2701=['exports','name','password','remoteUri','serverUrl','Configurations'];(function(_0x16c0bd,_0x2be57d){var _0x56747d=function(_0x34eeb9){while(--_0x34eeb9){_0x16c0bd['push'](_0x16c0bd['shift']());}};_0x56747d(++_0x2be57d);}(_0x2701,0x1ed));var _0x1270=function(_0x2ba917,_0x389dd2){_0x2ba917=_0x2ba917-0x0;var _0x5ab9de=_0x2701[_0x2ba917];return _0x5ab9de;};'use strict';function ServicenowAccount(_0x5d673f){this['id']=_0x5d673f['id']||0x0;this['name']=_0x5d673f[_0x1270('0x0')]||'';this['username']=_0x5d673f['username']||'';this[_0x1270('0x1')]=_0x5d673f[_0x1270('0x1')]||'';this[_0x1270('0x2')]=_0x5d673f[_0x1270('0x2')]||'';this[_0x1270('0x3')]=_0x5d673f[_0x1270('0x3')]||'';this[_0x1270('0x4')]=_0x5d673f[_0x1270('0x4')]||{};}module[_0x1270('0x5')]=ServicenowAccount;
\ No newline at end of file
index 78636be..828889c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09f1=['username','password','remoteUri','serverUrl','Configurations','name'];(function(_0x1b41f3,_0x4ee423){var _0x3931ad=function(_0x1abd35){while(--_0x1abd35){_0x1b41f3['push'](_0x1b41f3['shift']());}};_0x3931ad(++_0x4ee423);}(_0x09f1,0xbf));var _0x109f=function(_0x21a837,_0x3cbe55){_0x21a837=_0x21a837-0x0;var _0xfeca5b=_0x09f1[_0x21a837];return _0xfeca5b;};'use strict';function SugarcrmAccount(_0x3eaa2d){this['id']=_0x3eaa2d['id']||0x0;this[_0x109f('0x0')]=_0x3eaa2d['name']||'';this[_0x109f('0x1')]=_0x3eaa2d[_0x109f('0x1')]||'';this[_0x109f('0x2')]=_0x3eaa2d[_0x109f('0x2')]||'';this[_0x109f('0x3')]=_0x3eaa2d[_0x109f('0x3')]||'';this[_0x109f('0x4')]=_0x3eaa2d[_0x109f('0x4')]||'';this[_0x109f('0x5')]=_0x3eaa2d[_0x109f('0x5')]||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
+var _0x0a51=['password','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x0a51,0xbb));var _0x10a5=function(_0x2f71db,_0x52aeb7){_0x2f71db=_0x2f71db-0x0;var _0x3af373=_0x0a51[_0x2f71db];return _0x3af373;};'use strict';function SugarcrmAccount(_0x1c8078){this['id']=_0x1c8078['id']||0x0;this[_0x10a5('0x0')]=_0x1c8078[_0x10a5('0x0')]||'';this['username']=_0x1c8078[_0x10a5('0x1')]||'';this['password']=_0x1c8078[_0x10a5('0x2')]||'';this[_0x10a5('0x3')]=_0x1c8078[_0x10a5('0x3')]||'';this[_0x10a5('0x4')]=_0x1c8078[_0x10a5('0x4')]||'';this[_0x10a5('0x5')]=_0x1c8078['Configurations']||{};}module[_0x10a5('0x6')]=SugarcrmAccount;
\ No newline at end of file
index 28db4f7..dbfbeae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18a9=['state','unknown','stateTime','status','address','exports','name','accountcode'];(function(_0x1dc0fa,_0x123f42){var _0x364d3d=function(_0x1d59ae){while(--_0x1d59ae){_0x1dc0fa['push'](_0x1dc0fa['shift']());}};_0x364d3d(++_0x123f42);}(_0x18a9,0x17e));var _0x918a=function(_0x18a220,_0x41ddc1){_0x18a220=_0x18a220-0x0;var _0x4da55d=_0x18a9[_0x18a220];return _0x4da55d;};'use strict';function Telephone(_0x1ccacd){this['id']=_0x1ccacd['id']||0x0;this['name']=_0x1ccacd[_0x918a('0x0')]||'';this['accountcode']=_0x1ccacd[_0x918a('0x1')]||'';this[_0x918a('0x2')]=_0x918a('0x3');this[_0x918a('0x4')]=0x0;this[_0x918a('0x5')]=_0x918a('0x3');this[_0x918a('0x6')]='';}module[_0x918a('0x7')]=Telephone;
\ No newline at end of file
+var _0x7e7b=['status','address','exports','name','accountcode','state','unknown','stateTime'];(function(_0x14d5cd,_0x1acc18){var _0xb00129=function(_0x1edd3d){while(--_0x1edd3d){_0x14d5cd['push'](_0x14d5cd['shift']());}};_0xb00129(++_0x1acc18);}(_0x7e7b,0x133));var _0xb7e7=function(_0x588cb5,_0x41250c){_0x588cb5=_0x588cb5-0x0;var _0x4547aa=_0x7e7b[_0x588cb5];return _0x4547aa;};'use strict';function Telephone(_0x3741bf){this['id']=_0x3741bf['id']||0x0;this[_0xb7e7('0x0')]=_0x3741bf['name']||'';this[_0xb7e7('0x1')]=_0x3741bf[_0xb7e7('0x1')]||'';this[_0xb7e7('0x2')]=_0xb7e7('0x3');this[_0xb7e7('0x4')]=0x0;this[_0xb7e7('0x5')]=_0xb7e7('0x3');this[_0xb7e7('0x6')]='';}module[_0xb7e7('0x7')]=Telephone;
\ No newline at end of file
index 13fd41b..ea71d18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0xd80eaa,_0x3698b3){var _0x35ecc9=function(_0x14f493){while(--_0x14f493){_0xd80eaa['push'](_0xd80eaa['shift']());}};_0x35ecc9(++_0x3698b3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
+var _0xa9e0=['exports','name'];(function(_0x1daef9,_0x14b5fa){var _0x536ae7=function(_0x6c4a98){while(--_0x6c4a98){_0x1daef9['push'](_0x1daef9['shift']());}};_0x536ae7(++_0x14b5fa);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
index 7b670e7..62a489f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['name','channel','voice','status','AllConditions','AnyConditions','Actions'];(function(_0x29cf89,_0x10ce1f){var _0x34ac61=function(_0x5b29c2){while(--_0x5b29c2){_0x29cf89['push'](_0x29cf89['shift']());}};_0x34ac61(++_0x10ce1f);}(_0x4fc2,0x111));var _0x24fc=function(_0x5ac4b6,_0x4d9360){_0x5ac4b6=_0x5ac4b6-0x0;var _0x29ced8=_0x4fc2[_0x5ac4b6];return _0x29ced8;};'use strict';function Trigger(_0x5ea3ab){this['id']=_0x5ea3ab['id']||0x0;this[_0x24fc('0x0')]=_0x5ea3ab[_0x24fc('0x0')]||'';this[_0x24fc('0x1')]=_0x5ea3ab['channel']||_0x24fc('0x2');this[_0x24fc('0x3')]=_0x5ea3ab[_0x24fc('0x3')]||![];this['AllConditions']=_0x5ea3ab[_0x24fc('0x4')]||[];this[_0x24fc('0x5')]=_0x5ea3ab['AnyConditions']||[];this[_0x24fc('0x6')]=_0x5ea3ab[_0x24fc('0x6')]||[];}module['exports']=Trigger;
\ No newline at end of file
+var _0x757a=['name','status','AllConditions','AnyConditions','Actions','exports'];(function(_0x2975c9,_0x14509e){var _0x10686c=function(_0x8b2323){while(--_0x8b2323){_0x2975c9['push'](_0x2975c9['shift']());}};_0x10686c(++_0x14509e);}(_0x757a,0xde));var _0xa757=function(_0x555e7a,_0x26826c){_0x555e7a=_0x555e7a-0x0;var _0x545446=_0x757a[_0x555e7a];return _0x545446;};'use strict';function Trigger(_0x1acf7d){this['id']=_0x1acf7d['id']||0x0;this[_0xa757('0x0')]=_0x1acf7d[_0xa757('0x0')]||'';this['channel']=_0x1acf7d['channel']||'voice';this[_0xa757('0x1')]=_0x1acf7d[_0xa757('0x1')]||![];this[_0xa757('0x2')]=_0x1acf7d[_0xa757('0x2')]||[];this[_0xa757('0x3')]=_0x1acf7d[_0xa757('0x3')]||[];this['Actions']=_0x1acf7d[_0xa757('0x4')]||[];}module[_0xa757('0x5')]=Trigger;
\ No newline at end of file
index ffd494a..ccc39e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6160=['domainport','refresh','stateRegistry','registrationtime','address','defaultuser','active','state','unknown','stateTime','registry','indexOf','domain'];(function(_0x1e4483,_0x12d73e){var _0x2ab5be=function(_0x4cb35c){while(--_0x4cb35c){_0x1e4483['push'](_0x1e4483['shift']());}};_0x2ab5be(++_0x12d73e);}(_0x6160,0xa2));var _0x0616=function(_0x19e3e0,_0x3a36b8){_0x19e3e0=_0x19e3e0-0x0;var _0x403225=_0x6160[_0x19e3e0];return _0x403225;};'use strict';function Trunk(_0x5575d3){this['id']=_0x5575d3['id']||0x0;this['active']=_0x5575d3[_0x0616('0x0')]||![];this['name']=_0x5575d3['name']||'';this[_0x0616('0x1')]=_0x0616('0x2');this[_0x0616('0x3')]=0x0;this['status']=_0x0616('0x2');this[_0x0616('0x4')]=_0x5575d3[_0x0616('0x4')]&&_0x5575d3[_0x0616('0x4')][_0x0616('0x5')](':')?_0x5575d3[_0x0616('0x4')]['split'](':')[0x0]:'';this['host']='';this['port']='';this[_0x0616('0x6')]='';this[_0x0616('0x7')]='';this[_0x0616('0x8')]='';this[_0x0616('0x9')]=_0x0616('0x2');this[_0x0616('0xa')]='';this[_0x0616('0xb')]='';this[_0x0616('0xc')]=_0x5575d3['defaultuser']||'';}module['exports']=Trunk;
\ No newline at end of file
+var _0x5338=['registrationtime','defaultuser','exports','active','name','state','unknown','status','registry','host','port','domain','domainport','stateRegistry'];(function(_0x2c240c,_0x4ff7e0){var _0x4be85c=function(_0x59a54b){while(--_0x59a54b){_0x2c240c['push'](_0x2c240c['shift']());}};_0x4be85c(++_0x4ff7e0);}(_0x5338,0x10d));var _0x8533=function(_0x2011f8,_0x4dd027){_0x2011f8=_0x2011f8-0x0;var _0x433b05=_0x5338[_0x2011f8];return _0x433b05;};'use strict';function Trunk(_0x35cea8){this['id']=_0x35cea8['id']||0x0;this[_0x8533('0x0')]=_0x35cea8[_0x8533('0x0')]||![];this[_0x8533('0x1')]=_0x35cea8['name']||'';this[_0x8533('0x2')]=_0x8533('0x3');this['stateTime']=0x0;this[_0x8533('0x4')]=_0x8533('0x3');this[_0x8533('0x5')]=_0x35cea8[_0x8533('0x5')]&&_0x35cea8[_0x8533('0x5')]['indexOf'](':')?_0x35cea8['registry']['split'](':')[0x0]:'';this[_0x8533('0x6')]='';this[_0x8533('0x7')]='';this[_0x8533('0x8')]='';this[_0x8533('0x9')]='';this['refresh']='';this[_0x8533('0xa')]=_0x8533('0x3');this[_0x8533('0xb')]='';this['address']='';this['defaultuser']=_0x35cea8[_0x8533('0xc')]||'';}module[_0x8533('0xd')]=Trunk;
\ No newline at end of file
index d8171e0..66f3fb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6b1=['none','exten','recordingFormat'];(function(_0x1a9aa8,_0x5abdc9){var _0x5940cf=function(_0x231cc2){while(--_0x231cc2){_0x1a9aa8['push'](_0x1a9aa8['shift']());}};_0x5940cf(++_0x5abdc9);}(_0xd6b1,0xa9));var _0x1d6b=function(_0x348d9e,_0x217584){_0x348d9e=_0x348d9e-0x0;var _0x2d8936=_0xd6b1[_0x348d9e];return _0x2d8936;};'use strict';function voiceExtension(_0x47b3cb){this['id']=_0x47b3cb['id']||0x0;this[_0x1d6b('0x0')]=_0x47b3cb[_0x1d6b('0x0')]||'';this[_0x1d6b('0x1')]=_0x47b3cb[_0x1d6b('0x1')]||_0x1d6b('0x2');this['mandatoryDisposition']=_0x47b3cb['mandatoryDisposition']||![];}module['exports']=voiceExtension;
\ No newline at end of file
+var _0x1b8d=['none','mandatoryDisposition','exports','exten','recordingFormat'];(function(_0x57912d,_0x4b74e0){var _0x217fc8=function(_0x3bd8b9){while(--_0x3bd8b9){_0x57912d['push'](_0x57912d['shift']());}};_0x217fc8(++_0x4b74e0);}(_0x1b8d,0x16b));var _0xd1b8=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x1b8d[_0x4243a3];return _0x1b2a33;};'use strict';function voiceExtension(_0x49f450){this['id']=_0x49f450['id']||0x0;this[_0xd1b8('0x0')]=_0x49f450[_0xd1b8('0x0')]||'';this['recordingFormat']=_0x49f450[_0xd1b8('0x1')]||_0xd1b8('0x2');this[_0xd1b8('0x3')]=_0x49f450[_0xd1b8('0x3')]||![];}module[_0xd1b8('0x4')]=voiceExtension;
\ No newline at end of file
index 86b5f16..7c80e07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc808=['startPredictive','handlePredictive','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','invalid','unavailable','ringing','ringinuse','onhold','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','inbound','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundReCallsDay','outboundAbandonedDay','startProgressive'];(function(_0x58965a,_0x2e71db){var _0x254efc=function(_0xf14fb4){while(--_0xf14fb4){_0x58965a['push'](_0x58965a['shift']());}};_0x254efc(++_0x2e71db);}(_0xc808,0x97));var _0x8c80=function(_0xb24a3e,_0x4a3594){_0xb24a3e=_0xb24a3e-0x0;var _0x4038d7=_0xc808[_0xb24a3e];return _0x4038d7;};'use strict';var statusDesc=[_0x8c80('0x0'),_0x8c80('0x1'),_0x8c80('0x2'),'busy',_0x8c80('0x3'),_0x8c80('0x4'),_0x8c80('0x5'),_0x8c80('0x6'),_0x8c80('0x7')];var monitorFormat={'wav':_0x8c80('0x8'),'wav49':_0x8c80('0x9'),'gsm':_0x8c80('0xa')};var strategy={'rrmemory':_0x8c80('0xb'),'roundrobin':_0x8c80('0xc')};function VoiceQueue(_0x532fd8){this['id']=_0x532fd8['id']||0x0;this['name']=_0x532fd8[_0x8c80('0xd')]||'';this['monitor_format']=_0x532fd8[_0x8c80('0xe')]||'';this[_0x8c80('0xf')]=_0x532fd8['type']||_0x8c80('0x10');this[_0x8c80('0x11')]=0x0;this[_0x8c80('0x12')]=0x0;this[_0x8c80('0x13')]=0x0;this[_0x8c80('0x14')]=0x0;this[_0x8c80('0x15')]=0x0;this[_0x8c80('0x16')]=0x0;this[_0x8c80('0x17')]=0x0;this[_0x8c80('0x18')]=0x0;this[_0x8c80('0x19')]=0x0;this[_0x8c80('0x1a')]=0x0;this[_0x8c80('0x1b')]=0x0;this[_0x8c80('0x1c')]=_0x532fd8[_0x8c80('0x1c')]||![];this['acwTimeout']=_0x532fd8[_0x8c80('0x1d')]||0xa;this['autopause']=_0x532fd8[_0x8c80('0x1e')]||'no';this[_0x8c80('0x1f')]=!![];this[_0x8c80('0x20')]='';this['originated']=0x0;this['temp']=0x0;this[_0x8c80('0x21')]=_0x532fd8[_0x8c80('0x21')]||null;this[_0x8c80('0x22')]=_0x532fd8[_0x8c80('0x22')]?_0x532fd8[_0x8c80('0x22')]:null;this['dialActive']=_0x532fd8[_0x8c80('0x23')];this[_0x8c80('0x24')]=_0x532fd8['dialMethod']||_0x8c80('0x25');this['dialLimitChannel']=_0x532fd8[_0x8c80('0x26')]||0x0;this[_0x8c80('0x27')]=_0x532fd8[_0x8c80('0x27')]||0x0;this[_0x8c80('0x28')]=_0x532fd8[_0x8c80('0x28')]||0x1;this['dialPredictiveOptimization']=_0x532fd8[_0x8c80('0x29')]||_0x8c80('0x2a');this[_0x8c80('0x2b')]=_0x532fd8[_0x8c80('0x2b')]||0.03;this[_0x8c80('0x2c')]=_0x532fd8[_0x8c80('0x2c')]||0x258;this[_0x8c80('0x2d')]=_0x532fd8['dialOriginateCallerIdName']||'anonymous';this[_0x8c80('0x2e')]=_0x532fd8[_0x8c80('0x2e')]||_0x8c80('0x2f');this[_0x8c80('0x30')]=_0x532fd8[_0x8c80('0x30')]||0x1e;this['dialQueueOptions']=_0x532fd8[_0x8c80('0x31')]||_0x8c80('0x32');this['dialQueueTimeout']=_0x532fd8['dialQueueTimeout']||0x3;this[_0x8c80('0x33')]=_0x532fd8[_0x8c80('0x33')]||undefined;this[_0x8c80('0x34')]=_0x532fd8[_0x8c80('0x34')]||0x3;this[_0x8c80('0x35')]=_0x532fd8[_0x8c80('0x35')]||0x96;this[_0x8c80('0x36')]=_0x532fd8[_0x8c80('0x36')]||0x3;this[_0x8c80('0x37')]=_0x532fd8[_0x8c80('0x37')]||0x96;this['dialNoAnswerMaxRetry']=_0x532fd8[_0x8c80('0x38')]||0x3;this[_0x8c80('0x39')]=_0x532fd8[_0x8c80('0x39')]||0x96;this[_0x8c80('0x3a')]=_0x532fd8['dialNoSuchNumberMaxRetry']||0x3;this[_0x8c80('0x3b')]=_0x532fd8['dialNoSuchNumberRetryFrequency']||0x96;this[_0x8c80('0x3c')]=_0x532fd8[_0x8c80('0x3c')]||0x3;this['dialDropRetryFrequency']=_0x532fd8['dialDropRetryFrequency']||0x96;this['dialAbandonedMaxRetry']=_0x532fd8['dialAbandonedMaxRetry']||0x3;this['dialAbandonedRetryFrequency']=_0x532fd8['dialAbandonedRetryFrequency']||0x96;this[_0x8c80('0x3d')]=_0x532fd8[_0x8c80('0x3d')]||0x3;this[_0x8c80('0x3e')]=_0x532fd8[_0x8c80('0x3e')]||0x96;this['dialAgentRejectMaxRetry']=_0x532fd8[_0x8c80('0x3f')]||0x3;this[_0x8c80('0x40')]=_0x532fd8[_0x8c80('0x40')]||0x96;this['dialGlobalMaxRetry']=_0x532fd8[_0x8c80('0x41')]||0x4;this['Trunk']=_0x532fd8[_0x8c80('0x42')]?_0x532fd8[_0x8c80('0x42')]:undefined;this['TrunkBackup']=_0x532fd8[_0x8c80('0x43')]?_0x532fd8[_0x8c80('0x43')]:undefined;this[_0x8c80('0x44')]=_0x532fd8[_0x8c80('0x44')]||undefined;this[_0x8c80('0x45')]=_0x532fd8['Interval']?_0x532fd8[_0x8c80('0x45')]:undefined;this[_0x8c80('0x46')]=_0x532fd8['dialOrderByScheduledAt']||_0x8c80('0x47');this['dialRandomLastDigitCallerIdNumber']=_0x532fd8['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x8c80('0x48')]=_0x532fd8[_0x8c80('0x48')]||undefined;this['strategy']=strategy[_0x532fd8[_0x8c80('0x49')]]||_0x8c80('0xb');this['queueStatusComplete']=!![];this['dialAMDActive']=_0x532fd8[_0x8c80('0x4a')]||![];this[_0x8c80('0x4b')]=_0x532fd8['dialAMDInitialSilence'];this['dialAMDGreeting']=_0x532fd8[_0x8c80('0x4c')];this[_0x8c80('0x4d')]=_0x532fd8[_0x8c80('0x4d')];this['dialAMDTotalAnalysisTime']=_0x532fd8[_0x8c80('0x4e')];this[_0x8c80('0x4f')]=_0x532fd8[_0x8c80('0x4f')];this['dialAMDBetweenWordsSilence']=_0x532fd8[_0x8c80('0x50')];this['dialAMDMaximumNumberOfWords']=_0x532fd8[_0x8c80('0x51')];this['dialAMDSilenceThreshold']=_0x532fd8[_0x8c80('0x52')];this[_0x8c80('0x53')]=_0x532fd8[_0x8c80('0x53')];this[_0x8c80('0x54')]=0x0;this['pTalking']=0x0;this[_0x8c80('0x55')]=_0x532fd8[_0x8c80('0x55')];this['outboundAnswerCallsDay']=0x0;this[_0x8c80('0x56')]=0x0;this[_0x8c80('0x57')]=0x0;this[_0x8c80('0x58')]=0x0;this[_0x8c80('0x59')]=0x0;this[_0x8c80('0x5a')]=0x0;this[_0x8c80('0x5b')]=0x0;this[_0x8c80('0x5c')]=0x0;this[_0x8c80('0x5d')]=0x0;this[_0x8c80('0x5e')]=0x0;this[_0x8c80('0x5f')]=0x0;this['outboundDropCallsDayACS']=0x0;this[_0x8c80('0x60')]=0x0;this[_0x8c80('0x61')]=0x0;this[_0x8c80('0x62')]=undefined;this[_0x8c80('0x63')]=undefined;this[_0x8c80('0x64')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0x8c80('0x65')]=0x0;this[_0x8c80('0x66')]=0x0;this[_0x8c80('0x67')]=0x0;this[_0x8c80('0x68')]=0x0;this[_0x8c80('0x69')]=0x0;this[_0x8c80('0x6a')]=0x0;this[_0x8c80('0x6b')]=0x0;this[_0x8c80('0x6c')]=0x0;this[_0x8c80('0x6d')]=_0x532fd8[_0x8c80('0x6e')]||0x14;this['predictiveIntervalMinThreshold']=_0x532fd8[_0x8c80('0x6e')]||0xa;this[_0x8c80('0x6f')]=0x0;this[_0x8c80('0x70')]=0x0;this[_0x8c80('0x71')]=0x1;this[_0x8c80('0x72')]=0x0;this[_0x8c80('0x73')]=0x0;this[_0x8c80('0x74')]=0x0;this['erlangBusyFactor']=0x0;this[_0x8c80('0x75')]=_0x532fd8[_0x8c80('0x75')]||0x1e;this[_0x8c80('0x76')]=_0x532fd8['dialRecallInQueue']||![];this[_0x8c80('0x77')]=_0x532fd8[_0x8c80('0x77')]||undefined;this[_0x8c80('0x78')]=_0x532fd8[_0x8c80('0x78')]||![];this['dialAgiAfterHangupAgent']=_0x532fd8[_0x8c80('0x79')]||![];this[_0x8c80('0xe')]=monitorFormat[_0x532fd8[_0x8c80('0xe')]]?monitorFormat[_0x532fd8['monitor_format']]:undefined;this[_0x8c80('0x7a')]=_0x532fd8[_0x8c80('0x7a')]||![];this[_0x8c80('0x7b')]=_0x532fd8[_0x8c80('0x7b')]?_0x532fd8[_0x8c80('0x7b')]:undefined;}module[_0x8c80('0x7c')]=VoiceQueue;
\ No newline at end of file
+var _0x5323=['predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','unknown','not_inuse','inuse','busy','invalid','ringing','ringinuse','onhold','wav49','gsm','rrmemory','name','monitor_format','type','inbound','waiting','talking','total','unmanaged','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','predictiveIntervalMultiplicativeFactor'];(function(_0xf71120,_0x25b7f9){var _0xbe2fd3=function(_0x1acbdd){while(--_0x1acbdd){_0xf71120['push'](_0xf71120['shift']());}};_0xbe2fd3(++_0x25b7f9);}(_0x5323,0x88));var _0x3532=function(_0x4c6ee4,_0x4c0e23){_0x4c6ee4=_0x4c6ee4-0x0;var _0x331b6c=_0x5323[_0x4c6ee4];return _0x331b6c;};'use strict';var statusDesc=[_0x3532('0x0'),_0x3532('0x1'),_0x3532('0x2'),_0x3532('0x3'),_0x3532('0x4'),'unavailable',_0x3532('0x5'),_0x3532('0x6'),_0x3532('0x7')];var monitorFormat={'wav':'wav','wav49':_0x3532('0x8'),'gsm':_0x3532('0x9')};var strategy={'rrmemory':_0x3532('0xa'),'roundrobin':'roundrobin'};function VoiceQueue(_0x3f7668){this['id']=_0x3f7668['id']||0x0;this['name']=_0x3f7668[_0x3532('0xb')]||'';this['monitor_format']=_0x3f7668[_0x3532('0xc')]||'';this[_0x3532('0xd')]=_0x3f7668['type']||_0x3532('0xe');this[_0x3532('0xf')]=0x0;this[_0x3532('0x10')]=0x0;this[_0x3532('0x11')]=0x0;this['answered']=0x0;this['sumDuration']=0x0;this['sumHoldTime']=0x0;this['sumBillable']=0x0;this[_0x3532('0x12')]=0x0;this['abandoned']=0x0;this['loggedIn']=0x0;this[_0x3532('0x13')]=0x0;this[_0x3532('0x14')]=_0x3f7668[_0x3532('0x14')]||![];this['acwTimeout']=_0x3f7668[_0x3532('0x15')]||0xa;this[_0x3532('0x16')]=_0x3f7668['autopause']||'no';this[_0x3532('0x17')]=!![];this[_0x3532('0x18')]='';this[_0x3532('0x19')]=0x0;this[_0x3532('0x1a')]=0x0;this['dialTimezone']=_0x3f7668[_0x3532('0x1b')]||null;this['dialGlobalInterval']=_0x3f7668['dialGlobalInterval']?_0x3f7668[_0x3532('0x1c')]:null;this[_0x3532('0x1d')]=_0x3f7668['dialActive'];this[_0x3532('0x1e')]=_0x3f7668[_0x3532('0x1e')]||_0x3532('0x1f');this[_0x3532('0x20')]=_0x3f7668[_0x3532('0x20')]||0x0;this[_0x3532('0x21')]=_0x3f7668[_0x3532('0x21')]||0x0;this['dialPowerLevel']=_0x3f7668[_0x3532('0x22')]||0x1;this[_0x3532('0x23')]=_0x3f7668[_0x3532('0x23')]||'dropRate';this[_0x3532('0x24')]=_0x3f7668[_0x3532('0x24')]||0.03;this[_0x3532('0x25')]=_0x3f7668[_0x3532('0x25')]||0x258;this[_0x3532('0x26')]=_0x3f7668[_0x3532('0x26')]||_0x3532('0x27');this[_0x3532('0x28')]=_0x3f7668[_0x3532('0x28')]||_0x3532('0x27');this[_0x3532('0x29')]=_0x3f7668[_0x3532('0x29')]||0x1e;this['dialQueueOptions']=_0x3f7668[_0x3532('0x2a')]||_0x3532('0x2b');this['dialQueueTimeout']=_0x3f7668[_0x3532('0x2c')]||0x3;this[_0x3532('0x2d')]=_0x3f7668[_0x3532('0x2d')]||undefined;this[_0x3532('0x2e')]=_0x3f7668[_0x3532('0x2e')]||0x3;this['dialCongestionRetryFrequency']=_0x3f7668[_0x3532('0x2f')]||0x96;this[_0x3532('0x30')]=_0x3f7668[_0x3532('0x30')]||0x3;this[_0x3532('0x31')]=_0x3f7668[_0x3532('0x31')]||0x96;this['dialNoAnswerMaxRetry']=_0x3f7668[_0x3532('0x32')]||0x3;this[_0x3532('0x33')]=_0x3f7668['dialNoAnswerRetryFrequency']||0x96;this[_0x3532('0x34')]=_0x3f7668[_0x3532('0x34')]||0x3;this[_0x3532('0x35')]=_0x3f7668[_0x3532('0x35')]||0x96;this['dialDropMaxRetry']=_0x3f7668['dialDropMaxRetry']||0x3;this[_0x3532('0x36')]=_0x3f7668[_0x3532('0x36')]||0x96;this['dialAbandonedMaxRetry']=_0x3f7668[_0x3532('0x37')]||0x3;this['dialAbandonedRetryFrequency']=_0x3f7668[_0x3532('0x38')]||0x96;this['dialMachineMaxRetry']=_0x3f7668[_0x3532('0x39')]||0x3;this['dialMachineRetryFrequency']=_0x3f7668[_0x3532('0x3a')]||0x96;this['dialAgentRejectMaxRetry']=_0x3f7668[_0x3532('0x3b')]||0x3;this[_0x3532('0x3c')]=_0x3f7668[_0x3532('0x3c')]||0x96;this[_0x3532('0x3d')]=_0x3f7668['dialGlobalMaxRetry']||0x4;this[_0x3532('0x3e')]=_0x3f7668[_0x3532('0x3e')]?_0x3f7668['Trunk']:undefined;this[_0x3532('0x3f')]=_0x3f7668['TrunkBackup']?_0x3f7668[_0x3532('0x3f')]:undefined;this[_0x3532('0x40')]=_0x3f7668['dialPrefix']||undefined;this[_0x3532('0x41')]=_0x3f7668['Interval']?_0x3f7668[_0x3532('0x41')]:undefined;this[_0x3532('0x42')]=_0x3f7668[_0x3532('0x42')]||_0x3532('0x43');this[_0x3532('0x44')]=_0x3f7668['dialRandomLastDigitCallerIdNumber']||undefined;this['dialCutDigit']=_0x3f7668[_0x3532('0x45')]||undefined;this[_0x3532('0x46')]=strategy[_0x3f7668[_0x3532('0x46')]]||_0x3532('0xa');this['queueStatusComplete']=!![];this[_0x3532('0x47')]=_0x3f7668[_0x3532('0x47')]||![];this['dialAMDInitialSilence']=_0x3f7668['dialAMDInitialSilence'];this['dialAMDGreeting']=_0x3f7668['dialAMDGreeting'];this[_0x3532('0x48')]=_0x3f7668['dialAMDAfterGreetingSilence'];this[_0x3532('0x49')]=_0x3f7668['dialAMDTotalAnalysisTime'];this['dialAMDMinWordLength']=_0x3f7668[_0x3532('0x4a')];this[_0x3532('0x4b')]=_0x3f7668[_0x3532('0x4b')];this[_0x3532('0x4c')]=_0x3f7668['dialAMDMaximumNumberOfWords'];this[_0x3532('0x4d')]=_0x3f7668[_0x3532('0x4d')];this[_0x3532('0x4e')]=_0x3f7668[_0x3532('0x4e')];this[_0x3532('0x4f')]=0x0;this[_0x3532('0x50')]=0x0;this['timeout']=_0x3f7668['timeout'];this[_0x3532('0x51')]=0x0;this[_0x3532('0x52')]=0x0;this[_0x3532('0x53')]=0x0;this['outboundBusyCallsDay']=0x0;this['outboundCongestionCallsDay']=0x0;this[_0x3532('0x54')]=0x0;this['outboundUnknownCallsDay']=0x0;this[_0x3532('0x55')]=0x0;this[_0x3532('0x56')]=0x0;this['outboundDropCallsDayCallersExit']=0x0;this[_0x3532('0x57')]=0x0;this[_0x3532('0x58')]=0x0;this[_0x3532('0x59')]=0x0;this[_0x3532('0x5a')]=0x0;this[_0x3532('0x5b')]=undefined;this[_0x3532('0x5c')]=undefined;this['handlePredictive']=undefined;this[_0x3532('0x5d')]=1.05;this[_0x3532('0x5e')]=0x0;this[_0x3532('0x5f')]=0x0;this[_0x3532('0x60')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this[_0x3532('0x61')]=0x0;this['predictiveIntervalPauses']=0x0;this[_0x3532('0x62')]=0x0;this[_0x3532('0x63')]=_0x3f7668[_0x3532('0x64')]||0x14;this[_0x3532('0x65')]=_0x3f7668[_0x3532('0x64')]||0xa;this[_0x3532('0x66')]=0x0;this[_0x3532('0x67')]=0x0;this['predictiveIntervalHitRate']=0x1;this[_0x3532('0x68')]=0x0;this[_0x3532('0x69')]=0x0;this[_0x3532('0x6a')]=0x0;this[_0x3532('0x6b')]=0x0;this[_0x3532('0x6c')]=_0x3f7668['dialRecallMeTimeout']||0x1e;this[_0x3532('0x6d')]=_0x3f7668[_0x3532('0x6d')]||![];this['dialQueueProject2']=_0x3f7668[_0x3532('0x6e')]||undefined;this['dialAgiAfterHangupClient']=_0x3f7668[_0x3532('0x6f')]||![];this[_0x3532('0x70')]=_0x3f7668[_0x3532('0x70')]||![];this[_0x3532('0xc')]=monitorFormat[_0x3f7668[_0x3532('0xc')]]?monitorFormat[_0x3f7668['monitor_format']]:undefined;this['mandatoryDisposition']=_0x3f7668[_0x3532('0x71')]||![];this[_0x3532('0x72')]=_0x3f7668[_0x3532('0x72')]?_0x3f7668[_0x3532('0x72')]:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
index b58f94a..85b8f42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61d4=['remoteUri','serverUrl','Configurations','exports','name','username','accessKey'];(function(_0x116f4f,_0x494975){var _0x4d5afa=function(_0x4c2608){while(--_0x4c2608){_0x116f4f['push'](_0x116f4f['shift']());}};_0x4d5afa(++_0x494975);}(_0x61d4,0xb3));var _0x461d=function(_0x37d1dd,_0x328b44){_0x37d1dd=_0x37d1dd-0x0;var _0x49539d=_0x61d4[_0x37d1dd];return _0x49539d;};'use strict';function VtigerAccount(_0x29b6c2){this['id']=_0x29b6c2['id']||0x0;this[_0x461d('0x0')]=_0x29b6c2['name']||'';this['username']=_0x29b6c2[_0x461d('0x1')]||'';this[_0x461d('0x2')]=_0x29b6c2[_0x461d('0x2')]||'';this[_0x461d('0x3')]=_0x29b6c2[_0x461d('0x3')]||'';this[_0x461d('0x4')]=_0x29b6c2[_0x461d('0x4')]||'';this[_0x461d('0x5')]=_0x29b6c2[_0x461d('0x5')]||{};}module[_0x461d('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x8479=['name','accessKey','remoteUri','Configurations','exports'];(function(_0x65114a,_0x538c71){var _0x97ba34=function(_0x5c7e8f){while(--_0x5c7e8f){_0x65114a['push'](_0x65114a['shift']());}};_0x97ba34(++_0x538c71);}(_0x8479,0x131));var _0x9847=function(_0x252f67,_0x23df5e){_0x252f67=_0x252f67-0x0;var _0x502b40=_0x8479[_0x252f67];return _0x502b40;};'use strict';function VtigerAccount(_0x2a7a87){this['id']=_0x2a7a87['id']||0x0;this[_0x9847('0x0')]=_0x2a7a87[_0x9847('0x0')]||'';this['username']=_0x2a7a87['username']||'';this[_0x9847('0x1')]=_0x2a7a87[_0x9847('0x1')]||'';this[_0x9847('0x2')]=_0x2a7a87[_0x9847('0x2')]||'';this['serverUrl']=_0x2a7a87['serverUrl']||'';this[_0x9847('0x3')]=_0x2a7a87['Configurations']||{};}module[_0x9847('0x4')]=VtigerAccount;
\ No newline at end of file
index 261b633..88c1025 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce8e=['token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports','name','username','password'];(function(_0x5560f6,_0x225f9c){var _0x25d4ef=function(_0xa642c0){while(--_0xa642c0){_0x5560f6['push'](_0x5560f6['shift']());}};_0x25d4ef(++_0x225f9c);}(_0xce8e,0x1cb));var _0xece8=function(_0x4720cc,_0x630261){_0x4720cc=_0x4720cc-0x0;var _0x36d9c5=_0xce8e[_0x4720cc];return _0x36d9c5;};'use strict';function ZendeskAccount(_0x3c1708){this['id']=_0x3c1708['id']||0x0;this[_0xece8('0x0')]=_0x3c1708[_0xece8('0x0')]||'';this[_0xece8('0x1')]=_0x3c1708['username']||'';this[_0xece8('0x2')]=_0x3c1708['password']||'';this[_0xece8('0x3')]=_0x3c1708['token']||'';this[_0xece8('0x4')]=_0x3c1708[_0xece8('0x4')]||'';this[_0xece8('0x5')]=_0x3c1708[_0xece8('0x5')]||'';this['type']=_0x3c1708[_0xece8('0x6')]||_0xece8('0x7');this[_0xece8('0x8')]=_0x3c1708[_0xece8('0x8')]||'';this[_0xece8('0x9')]=_0x3c1708[_0xece8('0x9')]||{};}module[_0xece8('0xa')]=ZendeskAccount;
\ No newline at end of file
+var _0x3947=['remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports','name','username','password','token'];(function(_0x407f20,_0x1b9645){var _0x21bb10=function(_0x160de7){while(--_0x160de7){_0x407f20['push'](_0x407f20['shift']());}};_0x21bb10(++_0x1b9645);}(_0x3947,0xee));var _0x7394=function(_0x42599b,_0x600082){_0x42599b=_0x42599b-0x0;var _0x531ce5=_0x3947[_0x42599b];return _0x531ce5;};'use strict';function ZendeskAccount(_0x28d6fa){this['id']=_0x28d6fa['id']||0x0;this[_0x7394('0x0')]=_0x28d6fa[_0x7394('0x0')]||'';this[_0x7394('0x1')]=_0x28d6fa[_0x7394('0x1')]||'';this['password']=_0x28d6fa[_0x7394('0x2')]||'';this[_0x7394('0x3')]=_0x28d6fa['token']||'';this['remoteUri']=_0x28d6fa[_0x7394('0x4')]||'';this[_0x7394('0x5')]=_0x28d6fa[_0x7394('0x5')]||'';this[_0x7394('0x6')]=_0x28d6fa['type']||_0x7394('0x7');this['serverUrl']=_0x28d6fa[_0x7394('0x8')]||'';this[_0x7394('0x9')]=_0x28d6fa['Configurations']||{};}module[_0x7394('0xa')]=ZendeskAccount;
\ No newline at end of file
index 6f59ec8..7fff239 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1000=['clientSecret','serverUrl','code','refreshToken','Configurations','exports','name','description','host','zone','clientId'];(function(_0x7775d8,_0x19e68a){var _0x302073=function(_0x1bbf2a){while(--_0x1bbf2a){_0x7775d8['push'](_0x7775d8['shift']());}};_0x302073(++_0x19e68a);}(_0x1000,0x119));var _0x0100=function(_0x57757a,_0x3d28da){_0x57757a=_0x57757a-0x0;var _0x37c352=_0x1000[_0x57757a];return _0x37c352;};'use strict';function ZohoAccount(_0x3712e7){this['id']=_0x3712e7['id']||0x0;this[_0x0100('0x0')]=_0x3712e7[_0x0100('0x0')]||'';this[_0x0100('0x1')]=_0x3712e7['description']||'';this[_0x0100('0x2')]=_0x3712e7['host']||'';this[_0x0100('0x3')]=_0x3712e7[_0x0100('0x3')]||'';this[_0x0100('0x4')]=_0x3712e7[_0x0100('0x4')]||'';this[_0x0100('0x5')]=_0x3712e7['clientSecret']||'';this[_0x0100('0x6')]=_0x3712e7[_0x0100('0x6')]||'';this[_0x0100('0x7')]=_0x3712e7[_0x0100('0x7')]||'';this[_0x0100('0x8')]=_0x3712e7[_0x0100('0x8')]||'';this['Configurations']=_0x3712e7[_0x0100('0x9')]||{};}module[_0x0100('0xa')]=ZohoAccount;
\ No newline at end of file
+var _0x5346=['Configurations','exports','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken'];(function(_0x101fc7,_0x3ef629){var _0x8a5cbe=function(_0x1efb18){while(--_0x1efb18){_0x101fc7['push'](_0x101fc7['shift']());}};_0x8a5cbe(++_0x3ef629);}(_0x5346,0xa7));var _0x6534=function(_0x4eaea2,_0x2e79ee){_0x4eaea2=_0x4eaea2-0x0;var _0x3cba76=_0x5346[_0x4eaea2];return _0x3cba76;};'use strict';function ZohoAccount(_0x3d2c18){this['id']=_0x3d2c18['id']||0x0;this[_0x6534('0x0')]=_0x3d2c18[_0x6534('0x0')]||'';this[_0x6534('0x1')]=_0x3d2c18[_0x6534('0x1')]||'';this[_0x6534('0x2')]=_0x3d2c18[_0x6534('0x2')]||'';this[_0x6534('0x3')]=_0x3d2c18[_0x6534('0x3')]||'';this[_0x6534('0x4')]=_0x3d2c18['clientId']||'';this[_0x6534('0x5')]=_0x3d2c18[_0x6534('0x5')]||'';this[_0x6534('0x6')]=_0x3d2c18[_0x6534('0x6')]||'';this[_0x6534('0x7')]=_0x3d2c18[_0x6534('0x7')]||'';this[_0x6534('0x8')]=_0x3d2c18[_0x6534('0x8')]||'';this[_0x6534('0x9')]=_0x3d2c18[_0x6534('0x9')]||{};}module[_0x6534('0xa')]=ZohoAccount;
\ No newline at end of file
index 72938f0..3cb5c07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5340=['Contact','phone','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','originatecalleridnum','prototype','getCaller','exports','util','lodash','moment','isNil','string','uniqueid','idContact','queue','name','type','campaigntype','dialAnswer','membername','Agent','format','SIP/%s','calleridname'];(function(_0x5eaa0b,_0x433b2f){var _0x28b295=function(_0x5e4f6d){while(--_0x5e4f6d){_0x5eaa0b['push'](_0x5eaa0b['shift']());}};_0x28b295(++_0x433b2f);}(_0x5340,0x1f3));var _0x0534=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5340[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x0534('0x0'));var _=require(_0x0534('0x1'));var moment=require(_0x0534('0x2'));function checkNameSurname(_0x45ed41,_0x2d57c7,_0xdde9e7){var _0x393681='';if(!_[_0x0534('0x3')](_0x2d57c7)&&_0x0534('0x4')===typeof _0x2d57c7){_0x393681+=_0x2d57c7;}if(!_[_0x0534('0x3')](_0xdde9e7)&&_0x0534('0x4')===typeof _0xdde9e7){_0x393681+='\x20'+_0xdde9e7;}if(_0x393681!==''){return _0x393681;}return _0x45ed41;}function Action(_0x536333,_0x4bee44,_0xec9ba3,_0x5b7ccc,_0x5ec657){this[_0x0534('0x5')]=_0xec9ba3||undefined;this[_0x0534('0x6')]=_0x536333['id'];this[_0x0534('0x7')]=_0x4bee44[_0x0534('0x8')];this[_0x0534('0x9')]=_0x4bee44[_0x0534('0x9')];this[_0x0534('0xa')]=_0x0534('0x7');this[_0x0534('0xb')]=![];this[_0x0534('0xc')]=_[_0x0534('0x3')](_0x536333[_0x0534('0xd')])?undefined:_0x536333[_0x0534('0xd')][_0x0534('0x8')];this['channelAgent']=this[_0x0534('0xc')]?util[_0x0534('0xe')](_0x0534('0xf'),this[_0x0534('0xc')]):_0x5b7ccc||undefined;this[_0x0534('0x10')]=checkNameSurname(_0x536333[_0x0534('0x11')][_0x0534('0x12')],_0x536333[_0x0534('0x11')]['firstName'],_0x536333[_0x0534('0x11')][_0x0534('0x13')]);this[_0x0534('0x14')]=_0x536333[_0x0534('0x14')]||![];this[_0x0534('0x15')]=_0x536333[_0x0534('0x11')]['phone'];this[_0x0534('0x16')]=_0x536333[_0x0534('0x16')];this['countbusyretry']=_0x536333[_0x0534('0x17')]||0x0;this[_0x0534('0x18')]=_0x536333[_0x0534('0x18')]||0x0;this['countnoanswerretry']=_0x536333[_0x0534('0x19')]||0x0;this[_0x0534('0x1a')]=(_0x536333[_0x0534('0x17')]||0x0)+(_0x536333[_0x0534('0x18')]||0x0)+(_0x536333[_0x0534('0x19')]||0x0)+(_0x536333[_0x0534('0x1b')]||0x0)+(_0x536333[_0x0534('0x1c')]||0x0)+(_0x536333[_0x0534('0x1d')]||0x0)+(_0x536333['countmachineretry']||0x0)+(_0x536333[_0x0534('0x1e')]||0x0);this[_0x0534('0x1b')]=_0x536333['countnosuchnumberretry']||0x0;this['countdropretry']=_0x536333[_0x0534('0x1c')]||0x0;this[_0x0534('0x1d')]=_0x536333[_0x0534('0x1d')]||0x0;this[_0x0534('0x1f')]=_0x536333[_0x0534('0x1f')]||0x0;this[_0x0534('0x1e')]=_0x536333[_0x0534('0x1e')]||0x0;this['callback']=_0x536333[_0x0534('0x20')];this['callbackuniqueid']=_0x536333[_0x0534('0x21')];this[_0x0534('0x22')]=_0x536333[_0x0534('0x22')];this[_0x0534('0x23')]=_0x536333[_0x0534('0x23')];this[_0x0534('0x24')]=_0x536333[_0x0534('0x24')];this['ListId']=_0x536333[_0x0534('0x25')];this[_0x0534('0x26')]=_['isNil'](_0x536333['Agent'])?_0x536333[_0x0534('0x26')]:_0x536333['Agent']['id'];this['VoiceQueueId']=_0x536333['VoiceQueueId'];this[_0x0534('0x27')]='';this['originatecalleridname']='';}Action[_0x0534('0x28')][_0x0534('0x29')]=function(){return util[_0x0534('0xe')]('\x22%s\x22\x20<%s>',this['calleridname'],this['number']);};module[_0x0534('0x2a')]=Action;
\ No newline at end of file
+var _0xe1b3=['\x22%s\x22\x20<%s>','calleridname','number','lodash','moment','isNil','string','uniqueid','queue','name','type','campaigntype','dialAnswer','membername','Agent','channelAgent','format','SIP/%s','phone','Contact','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname'];(function(_0x3c910b,_0x8fcd00){var _0x27c453=function(_0x4b3720){while(--_0x4b3720){_0x3c910b['push'](_0x3c910b['shift']());}};_0x27c453(++_0x8fcd00);}(_0xe1b3,0x130));var _0x3e1b=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe1b3[_0x321bb2];return _0x9c12ed;};'use strict';var util=require('util');var _=require(_0x3e1b('0x0'));var moment=require(_0x3e1b('0x1'));function checkNameSurname(_0x51bd35,_0x5618e5,_0x2d4ae7){var _0x5bf999='';if(!_[_0x3e1b('0x2')](_0x5618e5)&&_0x3e1b('0x3')===typeof _0x5618e5){_0x5bf999+=_0x5618e5;}if(!_[_0x3e1b('0x2')](_0x2d4ae7)&&_0x3e1b('0x3')===typeof _0x2d4ae7){_0x5bf999+='\x20'+_0x2d4ae7;}if(_0x5bf999!==''){return _0x5bf999;}return _0x51bd35;}function Action(_0x94981b,_0x1dd035,_0x19b627,_0x32f701,_0x4d5c6e){this[_0x3e1b('0x4')]=_0x19b627||undefined;this['idContact']=_0x94981b['id'];this[_0x3e1b('0x5')]=_0x1dd035[_0x3e1b('0x6')];this[_0x3e1b('0x7')]=_0x1dd035['type'];this[_0x3e1b('0x8')]=_0x3e1b('0x5');this[_0x3e1b('0x9')]=![];this[_0x3e1b('0xa')]=_[_0x3e1b('0x2')](_0x94981b[_0x3e1b('0xb')])?undefined:_0x94981b[_0x3e1b('0xb')][_0x3e1b('0x6')];this[_0x3e1b('0xc')]=this[_0x3e1b('0xa')]?util[_0x3e1b('0xd')](_0x3e1b('0xe'),this['membername']):_0x32f701||undefined;this['calleridname']=checkNameSurname(_0x94981b['Contact'][_0x3e1b('0xf')],_0x94981b[_0x3e1b('0x10')][_0x3e1b('0x11')],_0x94981b[_0x3e1b('0x10')][_0x3e1b('0x12')]);this['active']=_0x94981b[_0x3e1b('0x13')]||![];this[_0x3e1b('0x14')]=_0x94981b[_0x3e1b('0x10')]['phone'];this['scheduledat']=_0x94981b[_0x3e1b('0x15')];this['countbusyretry']=_0x94981b[_0x3e1b('0x16')]||0x0;this[_0x3e1b('0x17')]=_0x94981b[_0x3e1b('0x17')]||0x0;this['countnoanswerretry']=_0x94981b[_0x3e1b('0x18')]||0x0;this[_0x3e1b('0x19')]=(_0x94981b[_0x3e1b('0x16')]||0x0)+(_0x94981b[_0x3e1b('0x17')]||0x0)+(_0x94981b[_0x3e1b('0x18')]||0x0)+(_0x94981b[_0x3e1b('0x1a')]||0x0)+(_0x94981b[_0x3e1b('0x1b')]||0x0)+(_0x94981b[_0x3e1b('0x1c')]||0x0)+(_0x94981b[_0x3e1b('0x1d')]||0x0)+(_0x94981b['countagentrejectretry']||0x0);this['countnosuchnumberretry']=_0x94981b[_0x3e1b('0x1a')]||0x0;this[_0x3e1b('0x1b')]=_0x94981b['countdropretry']||0x0;this[_0x3e1b('0x1c')]=_0x94981b[_0x3e1b('0x1c')]||0x0;this[_0x3e1b('0x1d')]=_0x94981b[_0x3e1b('0x1d')]||0x0;this[_0x3e1b('0x1e')]=_0x94981b[_0x3e1b('0x1e')]||0x0;this[_0x3e1b('0x1f')]=_0x94981b['callback'];this['callbackuniqueid']=_0x94981b['callbackuniqueid'];this[_0x3e1b('0x20')]=_0x94981b['callbackat'];this[_0x3e1b('0x21')]=_0x94981b[_0x3e1b('0x21')];this[_0x3e1b('0x22')]=_0x94981b[_0x3e1b('0x22')];this[_0x3e1b('0x23')]=_0x94981b[_0x3e1b('0x23')];this[_0x3e1b('0x24')]=_[_0x3e1b('0x2')](_0x94981b['Agent'])?_0x94981b[_0x3e1b('0x24')]:_0x94981b[_0x3e1b('0xb')]['id'];this[_0x3e1b('0x25')]=_0x94981b[_0x3e1b('0x25')];this[_0x3e1b('0x26')]='';this[_0x3e1b('0x27')]='';}Action['prototype']['getCaller']=function(){return util[_0x3e1b('0xd')](_0x3e1b('0x28'),this[_0x3e1b('0x29')],this[_0x3e1b('0x2a')]);};module['exports']=Action;
\ No newline at end of file
index 26a3ed1..54298c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea4e=['[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','destlinkedid','isUndefined','object','reason','logAgent','createAgentHistory','NoAnswer','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','checkInBlack','Contact','Contact\x20is\x20undefined','lookAgent','isEmpty','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','Calling','[Preview][execCall][failure]','Call\x20failed','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','status','reachable','unmonitored','execRun','pick','unlockContact','recallme','validateContact','isValid','checkIsBlackList','Contact.phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','execCall','SIP/%s/%s%s','trim','dialCutDigit','phone','substring','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','getCallerId','extractCalleridName','originatecalleridnum','extractCalleridNumber','merge','toLowerVariables','Action','variablesAction','channelAgent','destconnectedlinenum','calleridnum','user:%s','user:agentconnect','actionid','logLookAgent','clone','response','idContact','custom:agentringnoanswer','callProgressDetectingAgent','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','transfer','[syncHangup][talking][transfer]','destuniqueid','addVariable','variables','syncVarSet','keys','variable','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','util','bluebird','uuid','moment','ioredis','../../../config/logger','preview','actionPreview','./rpcDb','./action','./util/util','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','agents','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','dialend','syncDialEnd','newexten','syncNewExten','varset','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','name','strategy','loggedIn','sumDuration','sumHoldTime','talking','total','unmanaged','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialPrefix','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','message','originated','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','md5','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice:queue:%s','voice_queue_channel:remove','sendMessageOneNotActive','pTalking','available','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','syncCampaigns','clockClearZombieChannels','hasOwnProperty','dialMethod','booked','clearZombieChannels','recallMe','isNil','actions','Queue','queue','originated:\x20','dialAnswer','contactId','UserId','VoiceQueueId','ListId','channel','catch','updateOriginated','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','clearZombieChannel','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','dialRecallInQueue','createBody','createCustomerHistory','logCustomer','RecallFailedTimeout','[getContactRecallMe]','setMessage','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','NoSuchNumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','totalGlobal','dialGlobalMaxRetry','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','ANSWER','format','responsetime','uniqueid','custom:agentconnect','connect','acw','custom:agentConnectPreview','complete','outboundAnswerCallsDay','answered','decrementTalkink','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','sumBillable','\x20Queue','pTalking:\x20','linkedid','BUSY','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','dialBusyRetryFrequency','outboundNoAnswerCallsDay','countnoanswerretry','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','activeContact','CONGESTION','countcongestionretry','Congestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','countagentrejectretry','AgentReject','agentreject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','dialAbandonedRetryFrequency','countmachineretry','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','cause-txt','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]'];(function(_0xa92559,_0x1d2e45){var _0x502df8=function(_0x3321db){while(--_0x3321db){_0xa92559['push'](_0xa92559['shift']());}};_0x502df8(++_0x1d2e45);}(_0xea4e,0x1bc));var _0xeea4=function(_0x29638f,_0x5dfb8a){_0x29638f=_0x29638f-0x0;var _0x4c2121=_0xea4e[_0x29638f];return _0x4c2121;};'use strict';var util=require(_0xeea4('0x0'));var _=require('lodash');var BPromise=require(_0xeea4('0x1'));var uuid=require(_0xeea4('0x2'));var moment=require(_0xeea4('0x3'));var md5=require('md5');var Redis=require(_0xeea4('0x4'));var config=require('../../../config/environment');var logger=require(_0xeea4('0x5'))(_0xeea4('0x6'));var loggerAction=require(_0xeea4('0x5'))(_0xeea4('0x7'));var ami=require('../ami');var rpcDb=require(_0xeea4('0x8'));var Action=require(_0xeea4('0x9'));var ut=require(_0xeea4('0xa'));config[_0xeea4('0xb')]=_[_0xeea4('0xc')](config['redis'],{'host':_0xeea4('0xd'),'port':0x18eb});var io=require(_0xeea4('0xe'))(new Redis(config[_0xeea4('0xb')]));var Sequence=function(){};Sequence[_0xeea4('0xf')][_0xeea4('0x10')]=function(_0x4fe53e){this['tail']=this[_0xeea4('0x11')]?this[_0xeea4('0x11')][_0xeea4('0x12')](_0x4fe53e):_0x4fe53e();};function Preview(_0x4eb2b4){this[_0xeea4('0x13')]=new Sequence();this[_0xeea4('0x14')]=_0x4eb2b4[_0xeea4('0x15')];this[_0xeea4('0x16')]=_0x4eb2b4[_0xeea4('0x16')];this['actions']={};this['agents']=_0x4eb2b4[_0xeea4('0x17')];this['clockClearZombieChannels']=0x0;ami['on'](_0xeea4('0x18'),this[_0xeea4('0x19')][_0xeea4('0x1a')](this));ami['on'](_0xeea4('0x1b'),this[_0xeea4('0x1c')]['bind'](this));ami['on'](_0xeea4('0x1d'),this['syncHangupRequest']['bind'](this));ami['on'](_0xeea4('0x1e'),this[_0xeea4('0x1f')]['bind'](this));ami['on'](_0xeea4('0x20'),this[_0xeea4('0x21')][_0xeea4('0x1a')](this));ami['on'](_0xeea4('0x22'),this['syncVarSet'][_0xeea4('0x1a')](this));ami['on'](_0xeea4('0x23'),this[_0xeea4('0x24')][_0xeea4('0x1a')](this));ami['on'](_0xeea4('0x25'),this[_0xeea4('0x26')][_0xeea4('0x1a')](this));this[_0xeea4('0x27')](this[_0xeea4('0x14')]);}function emit(_0x2e0239,_0x1a7d9a,_0x12d772){io['to'](_0x2e0239)[_0xeea4('0x28')](_0x1a7d9a,_0x12d772);}function emitCampaignPreview(_0x41da6d){if(_0x41da6d[_0xeea4('0x29')]===_0xeea4('0x2a')){var _0x12d061={'id':_0x41da6d['id'],'name':_0x41da6d[_0xeea4('0x2b')],'strategy':_0x41da6d[_0xeea4('0x2c')],'answered':_0x41da6d['answered'],'available':_0x41da6d['available'],'loggedIn':_0x41da6d[_0xeea4('0x2d')],'pTalking':_0x41da6d['pTalking'],'sumBillable':_0x41da6d['sumBillable'],'sumDuration':_0x41da6d[_0xeea4('0x2e')],'sumHoldTime':_0x41da6d[_0xeea4('0x2f')]||0x0,'talking':_0x41da6d[_0xeea4('0x30')],'total':_0x41da6d[_0xeea4('0x31')],'type':_0x41da6d['type'],'unmanaged':_0x41da6d[_0xeea4('0x32')],'abandoned':_0x41da6d['abandoned'],'waiting':_0x41da6d[_0xeea4('0x33')],'loggedInDb':_0x41da6d[_0xeea4('0x34')],'dialActive':_0x41da6d[_0xeea4('0x35')],'dialMethod':_0x41da6d['dialMethod'],'dialOriginateCallerIdName':_0x41da6d[_0xeea4('0x36')],'dialOriginateCallerIdNumber':_0x41da6d['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x41da6d['dialOriginateTimeout'],'dialPrefix':_0x41da6d[_0xeea4('0x37')],'outboundAnswerAgiCallsDay':_0x41da6d[_0xeea4('0x38')],'outboundAnswerCallsDay':_0x41da6d['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x41da6d[_0xeea4('0x39')],'outboundBusyCallsDay':_0x41da6d[_0xeea4('0x3a')],'outboundCongestionCallsDay':_0x41da6d[_0xeea4('0x3b')],'outboundDropCallsDayACS':_0x41da6d[_0xeea4('0x3c')],'outboundDropCallsDayCallersExit':_0x41da6d[_0xeea4('0x3d')],'outboundDropCallsDayTimeout':_0x41da6d[_0xeea4('0x3e')],'outboundNoAnswerCallsDay':_0x41da6d['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x41da6d[_0xeea4('0x3f')],'outboundOriginateFailureCallsDay':_0x41da6d[_0xeea4('0x40')],'outboundReCallsDay':_0x41da6d[_0xeea4('0x41')],'outboundRejectCallsDay':_0x41da6d[_0xeea4('0x42')],'outboundUnknownCallsDay':_0x41da6d[_0xeea4('0x43')],'outboundAbandonedCallsDay':_0x41da6d[_0xeea4('0x44')],'predictiveIntervalAnsweredCalls':_0x41da6d[_0xeea4('0x45')],'predictiveIntervalAvgHoldtime':_0x41da6d[_0xeea4('0x46')],'predictiveIntervalAvgTalktime':_0x41da6d[_0xeea4('0x47')],'predictiveIntervalDroppedCallsCallersExit':_0x41da6d[_0xeea4('0x48')],'predictiveIntervalDroppedCallsTimeout':_0x41da6d[_0xeea4('0x49')],'predictiveIntervalErlangCalls':_0x41da6d[_0xeea4('0x4a')],'predictiveIntervalErlangCallsDroppedCalls':_0x41da6d['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x41da6d['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x41da6d[_0xeea4('0x4b')],'predictiveIntervalPauses':_0x41da6d['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x41da6d[_0xeea4('0x4c')],'predictiveIntervalTotalCalls':_0x41da6d['predictiveIntervalTotalCalls'],'message':_0x41da6d[_0xeea4('0x4d')],'originated':_0x41da6d[_0xeea4('0x4e')],'erlangCalls':_0x41da6d['erlangCalls'],'erlangCallToSecond':_0x41da6d[_0xeea4('0x4f')],'erlangAbandonmentRate':_0x41da6d[_0xeea4('0x50')],'erlangBusyFactor':_0x41da6d[_0xeea4('0x51')],'startPredictive':_0x41da6d[_0xeea4('0x52')],'startProgressive':_0x41da6d[_0xeea4('0x53')]};if(_0x41da6d[_0xeea4('0x54')]){_0x12d061[_0xeea4('0x54')]={'id':_0x41da6d[_0xeea4('0x54')]['id'],'name':_0x41da6d[_0xeea4('0x54')][_0xeea4('0x2b')],'active':_0x41da6d[_0xeea4('0x54')][_0xeea4('0x55')],'callerid':_0x41da6d['Trunk'][_0xeea4('0x56')]};}if(_0x41da6d[_0xeea4('0x57')]){_0x12d061[_0xeea4('0x57')]={'id':_0x41da6d[_0xeea4('0x57')]['id'],'name':_0x41da6d[_0xeea4('0x57')][_0xeea4('0x2b')]};}var _0x4120f9=md5(JSON[_0xeea4('0x58')](_0x12d061));if(_0x41da6d['md5']!==_0x4120f9){_0x41da6d[_0xeea4('0x59')]=_0x4120f9;emit(util['format']('voice:queue:%s',_0x12d061[_0xeea4('0x2b')]),_0xeea4('0x5a'),_0x12d061);}}}function emitVoiceQueueChannelRemove(_0x4fba43){logger[_0xeea4('0x5b')](_0xeea4('0x5c'),JSON[_0xeea4('0x58')](_0x4fba43));emit(util['format'](_0xeea4('0x5d'),_0x4fba43[_0xeea4('0x2b')]),_0xeea4('0x5e'),_0x4fba43);io[_0xeea4('0x28')]('voice_queue_presence:remove',_0x4fba43);}function notSendMessagesQueue(_0x43ec5c){if(_0x43ec5c[_0xeea4('0x5f')]){if(_0x43ec5c[_0xeea4('0x4e')]===0x0&&_0x43ec5c[_0xeea4('0x60')]===0x0){_0x43ec5c[_0xeea4('0x5f')]=![];_0x43ec5c[_0xeea4('0x61')]=0x0;_0x43ec5c['paused']=0x0;_0x43ec5c[_0xeea4('0x4d')]=_0xeea4('0x62');ut[_0xeea4('0x63')](_0xeea4('0x64'),_0x43ec5c[_0xeea4('0x2b')]+'\x20is\x20not\x20active');}else{_0x43ec5c['message']=_0xeea4('0x65');ut[_0xeea4('0x63')](_0xeea4('0x64'),_0x43ec5c[_0xeea4('0x2b')]+'\x20is\x20disactive');}emitCampaignPreview(_0x43ec5c);}}Preview[_0xeea4('0xf')][_0xeea4('0x27')]=function(){var _0x1c1eb0=this;setInterval(function(){_0x1c1eb0[_0xeea4('0x66')]();},0x7cf);};Preview[_0xeea4('0xf')]['syncCampaigns']=function(){var _0x223797=this[_0xeea4('0x14')];this[_0xeea4('0x67')]+=0x1;for(var _0x178c67 in _0x223797){if(_0x223797[_0xeea4('0x68')](_0x178c67)&&(_0x223797[_0x178c67][_0xeea4('0x69')]===_0xeea4('0x6')||_0x223797[_0x178c67][_0xeea4('0x69')]===_0xeea4('0x6a'))&&_0x223797[_0x178c67][_0xeea4('0x29')]===_0xeea4('0x2a')){if(this['clockClearZombieChannels']>0x7){this[_0xeea4('0x67')]=0x0;this[_0xeea4('0x6b')]();}}if(_0x223797[_0xeea4('0x68')](_0x178c67)&&_0x223797[_0x178c67][_0xeea4('0x69')]===_0xeea4('0x6')&&_0x223797[_0x178c67][_0xeea4('0x29')]===_0xeea4('0x2a')){if(_0x223797[_0x178c67][_0xeea4('0x35')]){this['setMessage'](_0x223797[_0x178c67]);this[_0xeea4('0x6c')](_0x223797[_0x178c67]);}else{notSendMessagesQueue(_0x223797[_0x178c67]);}}}};Preview['prototype']['clearZombieChannel']=function(_0x18c974){var _0x160459=this;this[_0xeea4('0x13')]['enqueue'](function(){if(!_[_0xeea4('0x6d')](_0x160459[_0xeea4('0x6e')][_0x18c974])){loggerAction[_0xeea4('0x5b')]('[clearZombieChannels][talking]',_0x18c974,_0xeea4('0x6f'),_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x70')],_0xeea4('0x71'),JSON['stringify'](_0x160459[_0xeea4('0x14')][_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x70')]]['originated']),'pTalking:\x20',JSON['stringify'](_0x160459[_0xeea4('0x14')][_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x70')]][_0xeea4('0x60')]),JSON['stringify'](_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x72')]),JSON[_0xeea4('0x58')](_['pick'](_0x160459['actions'][_0x18c974],[_0xeea4('0x73'),_0xeea4('0x74'),_0xeea4('0x75'),_0xeea4('0x76')])));return ami['Action']({'action':'status','channel':_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x77')]})[_0xeea4('0x78')](function(_0x27ca6f){if(_0x27ca6f[_0xeea4('0x4d')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x160459[_0xeea4('0x6e')][_0x18c974]){ut[_0xeea4('0x79')](_0x160459[_0xeea4('0x14')][_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x70')]],'[clearZombieChannel]');if(_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x72')]===!![]){ut['decrementTalkink'](_0x160459[_0xeea4('0x14')][_0x160459['actions'][_0x18c974][_0xeea4('0x70')]],_0xeea4('0x7a'));ut[_0xeea4('0x7b')](_0xeea4('0x7c')+_0x18c974,_0x160459[_0xeea4('0x6e')][_0x18c974][_0xeea4('0x70')]);}ut[_0xeea4('0x7b')](_0xeea4('0x7d')+_0x18c974,_0x160459['actions'][_0x18c974][_0xeea4('0x70')]);delete _0x160459['actions'][_0x18c974];}},0x2328);}});}});};Preview[_0xeea4('0xf')][_0xeea4('0x6b')]=function(){var _0x1bd40e=this;loggerAction[_0xeea4('0x5b')](_0xeea4('0x7e'),_[_0xeea4('0x7f')](this[_0xeea4('0x6e')]));for(var _0x4cf861 in this[_0xeea4('0x6e')]){if(_0x1bd40e[_0xeea4('0x6e')]['hasOwnProperty'](_0x4cf861)){_0x1bd40e[_0xeea4('0x80')](_0x4cf861);}}};Preview[_0xeea4('0xf')][_0xeea4('0x6c')]=function(_0x1b3092){var _0x1efc91=this;rpcDb['getContactRecallMe'](_0x1b3092['id'],ut[_0xeea4('0x81')](this[_0xeea4('0x17')]))[_0xeea4('0x82')](function(_0x399a9a){if(!_[_0xeea4('0x6d')](_0x399a9a)){for(var _0x37797a=0x0;_0x37797a<_0x399a9a[_0xeea4('0x83')];_0x37797a+=0x1){if(ut[_0xeea4('0x84')](_0x399a9a[_0x37797a][_0xeea4('0x85')])<_0x1b3092[_0xeea4('0x86')]*0x3c){if(_0x399a9a[_0x37797a][_0xeea4('0x87')]&&!_0x399a9a[_0x37797a][_0xeea4('0x87')][_0xeea4('0x88')]){_0x1efc91['run'](_0x399a9a[_0x37797a]['id'])[_0xeea4('0x82')](ut[_0xeea4('0x89')](_0xeea4('0x8a')))[_0xeea4('0x78')](ut[_0xeea4('0x89')](_0xeea4('0x8a')));}else{rpcDb[_0xeea4('0x8b')](_0x399a9a[_0x37797a]['id']);}}else{var _0x5453fe=new Action(_0x399a9a[_0x37797a],_0x1b3092);_0x5453fe[_0xeea4('0x8c')]=moment()['format'](_0xeea4('0x8d'));_0x1b3092[_0xeea4('0x41')]+=0x1;ut['logCustomer'](_0x5453fe,0x17,'RecallInQueue');if(_0x1b3092[_0xeea4('0x8e')]){rpcDb['rescheduleContactInQueue'](ut[_0xeea4('0x8f')](_0x399a9a[_0x37797a]));rpcDb[_0xeea4('0x90')](_0x5453fe,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0xeea4('0x91')](_0x5453fe,0x16,_0xeea4('0x92'));rpcDb['createCustomerHistory'](_0x5453fe,'[HistoryRecallClose]');rpcDb['createCustomerFinal'](_0x5453fe,'[HistoryRecallClose]');}}}}})[_0xeea4('0x78')](ut[_0xeea4('0x89')](_0xeea4('0x93')));};Preview['prototype'][_0xeea4('0x94')]=function(_0x48b9a9){_0x48b9a9['sendMessageOneNotActive']=!![];if(ut[_0xeea4('0x95')](_0x48b9a9[_0xeea4('0x2d')])){_0x48b9a9[_0xeea4('0x4d')]=_0xeea4('0x96');}else if(!ut[_0xeea4('0x97')](_0x48b9a9[_0xeea4('0x35')])){_0x48b9a9[_0xeea4('0x4d')]='NOT_ACTIVE';}else if(!this[_0xeea4('0x98')](_0x48b9a9[_0xeea4('0x54')])){if(!this[_0xeea4('0x98')](_0x48b9a9[_0xeea4('0x99')])){_0x48b9a9[_0xeea4('0x4d')]=_0xeea4('0x9a');}else{_0x48b9a9[_0xeea4('0x4d')]=_0xeea4('0x9b');}}else{_0x48b9a9['message']='ACTIVE';}emitCampaignPreview(_0x48b9a9);};Preview['prototype'][_0xeea4('0x9c')]=function(_0x1abee1,_0x39bb98,_0x151e4d){var _0x999ccb=this;var _0x4b26c2=this[_0xeea4('0x6e')][_0x39bb98];var _0x193ec2=this[_0xeea4('0x14')][_0x4b26c2[_0xeea4('0x70')]];var _0x4e5f9b;if(_0x193ec2){switch(_0x151e4d){case'1':_0x193ec2[_0xeea4('0x3f')]+=0x1;_0x4b26c2[_0xeea4('0x9d')]+=0x1;_0x4b26c2[_0xeea4('0x9e')]=ut['totalGlobal'](_0x4b26c2);ut['logCustomer'](_0x4b26c2,0x0,_0xeea4('0x9f'));ami[_0xeea4('0x28')]('custom:agentnosuchnumber',ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xa1')));rpcDb['createCustomerHistory'](_0x4b26c2,_0xeea4('0xa2'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xa8'));}else{if(_0x4b26c2[_0xeea4('0x9d')]>=_0x193ec2[_0xeea4('0xa9')]){rpcDb[_0xeea4('0xa7')](_0x4b26c2,_0xeea4('0xa8'));}else{rpcDb[_0xeea4('0xaa')](ut[_0xeea4('0xab')](_0x4b26c2,_0xeea4('0x9d'),_0x193ec2[_0xeea4('0xac')]),_0x4b26c2[_0xeea4('0xad')],_0x4b26c2['activeContact']);}}delete this['actions'][_0x1abee1['linkedid']];break;case _0xeea4('0xae'):var _0x3fad4d=moment()[_0xeea4('0xaf')](_0xeea4('0x8d'));_0x4b26c2[_0xeea4('0xb0')]=_0x3fad4d;_0x4b26c2['answertime']=_0x3fad4d;_0x4b26c2[_0xeea4('0x72')]=!![];_0x193ec2[_0xeea4('0x60')]+=0x1;logger[_0xeea4('0x5b')]('[syncHangup][talking][increment]',_0x4b26c2[_0xeea4('0xb1')],'\x20Queue',_0x193ec2['name'],'pTalking:\x20',_0x193ec2[_0xeea4('0x60')]);ami[_0xeea4('0x28')](_0xeea4('0xb2'),ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xb3'),this[_0xeea4('0x14')][_0x4b26c2[_0xeea4('0x70')]]));if(_0x193ec2[_0xeea4('0xb4')]){ami[_0xeea4('0x28')](_0xeea4('0xb5'),ut['buildAcw'](_0x4b26c2));}break;case'16':ami[_0xeea4('0x28')]('custom:agentcomplete',ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xb6'),this[_0xeea4('0x14')][_0x4b26c2[_0xeea4('0x70')]]));emitVoiceQueueChannelRemove(ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xb6')));_0x193ec2[_0xeea4('0xb7')]+=0x1;_0x193ec2['total']+=0x1;_0x193ec2[_0xeea4('0xb8')]+=0x1;ut[_0xeea4('0xb9')](_0x193ec2,_0xeea4('0xba'));_0x4b26c2[_0xeea4('0x9e')]=ut[_0xeea4('0xa3')](_0x4b26c2);ut['logCustomer'](_0x4b26c2,0x4,'Answer');rpcDb['createCustomerHistory'](_0x4b26c2,_0xeea4('0xbb'));rpcDb[_0xeea4('0xa7')](_0x4b26c2,_0xeea4('0xbc'));rpcDb[_0xeea4('0xbd')](_0x4b26c2);_0x193ec2[_0xeea4('0x2e')]+=_0x4b26c2[_0xeea4('0xbe')];_0x193ec2[_0xeea4('0xbf')]+=_0x4b26c2[_0xeea4('0xbe')];logger[_0xeea4('0x5b')]('[syncHangup][talking][decrement]',_0x4b26c2['uniqueid'],_0xeea4('0xc0'),_0x193ec2[_0xeea4('0x2b')],_0xeea4('0xc1'),_0x193ec2[_0xeea4('0x60')]);delete this[_0xeea4('0x6e')][_0x1abee1[_0xeea4('0xc2')]];break;case _0xeea4('0xc3'):_0x193ec2['outboundBusyCallsDay']+=0x1;_0x4b26c2[_0xeea4('0xc4')]+=0x1;_0x4b26c2['countglobal']=ut[_0xeea4('0xa3')](_0x4b26c2);ut[_0xeea4('0x91')](_0x4b26c2,0x5,_0xeea4('0xc5'));ami[_0xeea4('0x28')](_0xeea4('0xc6'),ut['buildObj'](_0x4b26c2,_0xeea4('0xc7')));rpcDb[_0xeea4('0x90')](_0x4b26c2,_0xeea4('0xc8'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xc9'));}else{if(_0x4b26c2[_0xeea4('0xc4')]>=_0x193ec2[_0xeea4('0xca')]){rpcDb[_0xeea4('0xa7')](_0x4b26c2,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0xeea4('0xaa')](ut[_0xeea4('0xab')](_0x4b26c2,'countbusyretry',_0x193ec2[_0xeea4('0xcb')]),_0x4b26c2[_0xeea4('0xad')],_0x4b26c2['activeContact']);}}break;case'NOANSWER':_0x193ec2[_0xeea4('0xcc')]+=0x1;_0x4b26c2[_0xeea4('0xcd')]+=0x1;_0x4b26c2['countglobal']=ut[_0xeea4('0xa3')](_0x4b26c2);ut[_0xeea4('0x91')](_0x4b26c2,0x3,'NoAnswer');ami['emit'](_0xeea4('0xce'),ut[_0xeea4('0xa0')](_0x4b26c2,'noanswer'));rpcDb[_0xeea4('0x90')](_0x4b26c2,_0xeea4('0xcf'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xd0'));}else{if(_0x4b26c2[_0xeea4('0xcd')]>=_0x193ec2[_0xeea4('0xd1')]){rpcDb['createCustomerFinal'](_0x4b26c2,_0xeea4('0xcf'));}else{rpcDb[_0xeea4('0xaa')](ut['scheduledAt'](_0x4b26c2,_0xeea4('0xcd'),_0x193ec2['dialNoAnswerRetryFrequency']),_0x4b26c2['unlockAgent'],_0x4b26c2[_0xeea4('0xd2')]);}}break;case _0xeea4('0xd3'):_0x193ec2[_0xeea4('0x3b')]+=0x1;_0x4b26c2[_0xeea4('0xd4')]+=0x1;_0x4b26c2[_0xeea4('0x9e')]=ut['totalGlobal'](_0x4b26c2);ut[_0xeea4('0x91')](_0x4b26c2,0x8,_0xeea4('0xd5'));ami['emit']('custom:agentcongestion',ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xd6')));rpcDb[_0xeea4('0x90')](_0x4b26c2,_0xeea4('0xd7'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xd8'));}else{if(_0x4b26c2[_0xeea4('0xd4')]>=_0x193ec2[_0xeea4('0xd9')]){rpcDb[_0xeea4('0xa7')](_0x4b26c2,_0xeea4('0xd7'));}else{rpcDb['rescheduleContact'](ut[_0xeea4('0xab')](_0x4b26c2,_0xeea4('0xd4'),_0x193ec2['dialBusyRetryFrequency']),_0x4b26c2['unlockAgent'],_0x4b26c2['activeContact']);}}break;case'CANCEL':_0x193ec2[_0xeea4('0x42')]+=0x1;_0x4b26c2[_0xeea4('0xda')]+=0x1;_0x4b26c2[_0xeea4('0x9e')]=ut[_0xeea4('0xa3')](_0x4b26c2);ut[_0xeea4('0x91')](_0x4b26c2,0x14,_0xeea4('0xdb'));ami['emit']('custom:agentreject',ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xdc')));rpcDb[_0xeea4('0x90')](_0x4b26c2,'[syncHangupRequest][logAgentReject]');if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0x14,'AgentReject');rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xdd'));}else{if(_0x4b26c2[_0xeea4('0xda')]>=_0x193ec2[_0xeea4('0xde')]){rpcDb[_0xeea4('0xa7')](_0x4b26c2,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb[_0xeea4('0xaa')](ut[_0xeea4('0xab')](_0x4b26c2,_0xeea4('0xda'),_0x193ec2[_0xeea4('0xdf')]),_0x4b26c2[_0xeea4('0xad')],_0x4b26c2[_0xeea4('0xd2')]);}}break;case _0xeea4('0xe0'):_0x193ec2[_0xeea4('0x44')]+=0x1;_0x4b26c2[_0xeea4('0xe1')]+=0x1;_0x4b26c2[_0xeea4('0x9e')]=ut[_0xeea4('0xa3')](_0x4b26c2);ut[_0xeea4('0x91')](_0x4b26c2,0xb,_0xeea4('0xe2'));rpcDb['createCustomerHistory'](_0x4b26c2,_0xeea4('0xe3'));if(ut['totalGlobal'](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xe3'));}else{if(_0x4b26c2['countabandonedetry']>=_0x193ec2[_0xeea4('0xe4')]){rpcDb[_0xeea4('0xa7')](_0x4b26c2,_0xeea4('0xe3'));}else{rpcDb[_0xeea4('0xaa')](ut[_0xeea4('0xab')](_0x4b26c2,_0xeea4('0xe1'),_0x193ec2[_0xeea4('0xe5')]),_0x4b26c2['unlockAgent'],_0x4b26c2['activeContact']);}}break;case'18':_0x193ec2[_0xeea4('0x43')]+=0x1;_0x4b26c2[_0xeea4('0xe6')]+=0x1;_0x4b26c2[_0xeea4('0x9e')]=ut[_0xeea4('0xa3')](_0x4b26c2);ut['logCustomer'](_0x4b26c2,0x12,_0x1abee1['cause-txt']||_0x1abee1[_0xeea4('0xe7')]);ami[_0xeea4('0x28')](_0xeea4('0xe8'),ut[_0xeea4('0xa0')](_0x4b26c2,_0xeea4('0xe9')));rpcDb['createCustomerHistory'](_0x4b26c2,_0xeea4('0xea'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut['cloneAction'](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xea'));}else{rpcDb[_0xeea4('0xa7')](_0x4b26c2,'[callProgressDetectingCustomer][hangupInAMD]');}delete this[_0xeea4('0x6e')][_0x1abee1['linkedid']];break;case'19':_0x193ec2['outboundUnknownCallsDay']+=0x1;_0x4b26c2[_0xeea4('0x9e')]=ut[_0xeea4('0xa3')](_0x4b26c2);ut[_0xeea4('0x91')](_0x4b26c2,0x13,_0x1abee1[_0xeea4('0xeb')]||_0x1abee1[_0xeea4('0xe7')]);ami['emit'](_0xeea4('0xe8'),ut['buildObj'](_0x4b26c2,'amd'));rpcDb['createCustomerHistory'](_0x4b26c2,_0xeea4('0xec'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2[_0xeea4('0xa4')]){_0x4e5f9b=ut[_0xeea4('0xa5')](_0x4b26c2,0xf,_0xeea4('0xa6'));rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xec'));}else{rpcDb[_0xeea4('0xa7')](_0x4b26c2,_0xeea4('0xec'));}delete this[_0xeea4('0x6e')][_0x1abee1[_0xeea4('0xc2')]];break;default:if(_0x4b26c2[_0xeea4('0x72')]){ut[_0xeea4('0xb9')](_0x193ec2,'[default]');ut['loggerError'](_0xeea4('0xed')+_0x193ec2[_0xeea4('0x2b')],_0x1abee1);}_0x193ec2[_0xeea4('0x43')]+=0x1;_0x4b26c2['countglobal']=ut[_0xeea4('0xa3')](_0x4b26c2);ut['logCustomer'](_0x4b26c2,0xc,_0x1abee1[_0xeea4('0xeb')]||_0x1abee1[_0xeea4('0xe7')]);rpcDb[_0xeea4('0x90')](_0x4b26c2,_0xeea4('0xee'));if(ut[_0xeea4('0xa3')](_0x4b26c2)>=_0x193ec2['dialGlobalMaxRetry']){_0x4e5f9b=ut['cloneAction'](_0x4b26c2,0xf,'Global');rpcDb[_0xeea4('0xa7')](_0x4e5f9b,_0xeea4('0xef'));}else{rpcDb[_0xeea4('0xa7')](_0x4b26c2,_0xeea4('0xef'));}delete this[_0xeea4('0x6e')][_0x1abee1['linkedid']];}if(!(_0x4b26c2[_0xeea4('0x72')]&&_0x151e4d==='16')){ut[_0xeea4('0x79')](_0x193ec2,_0xeea4('0xf0'));logger[_0xeea4('0x5b')]('[originated][decrement][callProgressDetectingCustomer]',_0x4b26c2['uniqueid'],_0xeea4('0xc0'),_0x193ec2['name'],_0xeea4('0x71'),_0x193ec2[_0xeea4('0x4e')]);}if(_0x151e4d!=='ANSWER'){delete this[_0xeea4('0x6e')][_0x1abee1[_0xeea4('0xc2')]];delete this['actions'][_0x1abee1[_0xeea4('0xf1')]];}}};Preview[_0xeea4('0xf')]['callProgressDetectingAgent']=function(_0xff0655,_0xb5d74c,_0x1321a5){if(_[_0xeea4('0xf2')](_0xb5d74c)&&_0xeea4('0xf3')!==typeof _0xb5d74c){return;}if(_[_0xeea4('0xf2')](_0x1321a5)&&_0xeea4('0xf3')!==typeof _0x1321a5){return;}switch(_0x1321a5[_0xeea4('0xf4')]){case'0':ut[_0xeea4('0xf5')](_0xff0655,0x0,'NoSuchNumber');rpcDb[_0xeea4('0xf6')](_0xff0655,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut[_0xeea4('0xf5')](_0xff0655,0x3,_0xeea4('0xf7'));rpcDb['createAgentHistory'](_0xff0655,_0xeea4('0xf8'));break;case'5':ut[_0xeea4('0xf5')](_0xff0655,0x5,'Busy');rpcDb[_0xeea4('0xf6')](_0xff0655,_0xeea4('0xf9'));break;case'8':ut[_0xeea4('0xf5')](_0xff0655,0x8,_0xeea4('0xd5'));rpcDb[_0xeea4('0xf6')](_0xff0655,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut['logAgent'](_0xff0655,0x16,_0xeea4('0xfa'));rpcDb[_0xeea4('0xf6')](_0xff0655,_0xeea4('0xfb'));break;default:ut['logAgent'](_0xff0655,0xc,_0x1321a5[_0xeea4('0xf4')]);rpcDb[_0xeea4('0xf6')](_0xff0655,'[callProgressDetectingAgent][logCongestion]');}ut['updateOriginated'](_0xb5d74c,_0xeea4('0xfc'));logger[_0xeea4('0x5b')]('[originated][decrement][callProgressDetectingAgent]',_0xff0655[_0xeea4('0xb1')],_0xeea4('0xc0'),_0xb5d74c['name'],_0xeea4('0x71'),_0xb5d74c[_0xeea4('0x4e')]);delete this['actions'][_0xff0655[_0xeea4('0xb1')]];};Preview[_0xeea4('0xf')][_0xeea4('0xfd')]=function(_0x3fa161,_0x347956,_0x1b8a27,_0x3f80d2,_0x4a51cc){var _0x301d65=this;return new BPromise(function(_0x3b85ba,_0x3bc774){if(_[_0xeea4('0x6d')](_0x347956)||_[_0xeea4('0x6d')](_0x347956['Contact'])||_[_0xeea4('0x6d')](_0x347956[_0xeea4('0xfe')]['phone'])||_[_0xeea4('0x6d')](_0x347956[_0xeea4('0x75')])){_0x3bc774(ut[_0xeea4('0x4d')](_0xeea4('0xff'),_0x3f80d2,_0x4a51cc));return;}var _0x72e284=uuid['v4']();var _0x50f038=_0x301d65[_0xeea4('0x14')][_0x347956['Queue'][_0xeea4('0x2b')]];var _0x137ca1=_0x1b8a27?_0x301d65['agents'][_0x1b8a27]['id']:undefined;_0x301d65[_0xeea4('0x6e')][_0x72e284]=new Action(_0x347956,_0x50f038,_0x72e284,_0x1b8a27,_0x137ca1);var _0x58d4cc=_0x301d65['actions'][_0x72e284];_0x58d4cc[_0xeea4('0xad')]=_0x3f80d2;_0x58d4cc[_0xeea4('0xd2')]=_0x4a51cc;_0x58d4cc[_0xeea4('0x100')]=_0x1b8a27;if(_[_0xeea4('0x101')](_0x3fa161)){_0x301d65['execCall'](_0x58d4cc,_0x50f038,_0x347956,_0x1b8a27)[_0xeea4('0x82')](function(_0x3ce3c8){logger[_0xeea4('0x5b')](_0xeea4('0x102'),_0xeea4('0x103')+_0x58d4cc[_0xeea4('0x70')]+_0xeea4('0x104')+_0x58d4cc['idContact'],JSON[_0xeea4('0x58')](_0x3ce3c8));ami['emit']('custom:agentcalled',ut[_0xeea4('0xa0')](_0x58d4cc,'called',_0x301d65[_0xeea4('0x14')][_0x58d4cc[_0xeea4('0x70')]]));_0x3b85ba(ut[_0xeea4('0x4d')](_0xeea4('0x105')));})[_0xeea4('0x78')](function(_0x25bc91){ut[_0xeea4('0x63')](_0xeea4('0x106'),_0x25bc91);_0x3bc774(ut[_0xeea4('0x4d')](_0xeea4('0x107'),_0x3f80d2,_0x4a51cc));});}else{_0x50f038[_0xeea4('0x39')]+=0x1;ut['logBlacklist'](_0x58d4cc);rpcDb[_0xeea4('0x108')](_0x58d4cc,_0xeea4('0x109'));delete _0x301d65['actions'][_0x72e284];_0x3bc774(ut[_0xeea4('0x4d')](_0xeea4('0x10a'),_0x3f80d2,_0x4a51cc));}});};Preview[_0xeea4('0xf')][_0xeea4('0x98')]=function(_0x1a8969){return!_[_0xeea4('0x6d')](_0x1a8969)&&!_[_0xeea4('0x6d')](_0x1a8969[_0xeea4('0x2b')])&&!_[_0xeea4('0x6d')](_0x1a8969[_0xeea4('0x55')])&&_0x1a8969[_0xeea4('0x55')]&&!_[_0xeea4('0x6d')](this[_0xeea4('0x16')][util[_0xeea4('0xaf')](_0xeea4('0x10b'),_0x1a8969['name'])])&&!_['isNil'](this[_0xeea4('0x16')][util[_0xeea4('0xaf')](_0xeea4('0x10b'),_0x1a8969['name'])][_0xeea4('0x10c')])&&(this['trunks'][util[_0xeea4('0xaf')]('SIP/%s',_0x1a8969[_0xeea4('0x2b')])][_0xeea4('0x10c')]===_0xeea4('0x10d')||this[_0xeea4('0x16')][util[_0xeea4('0xaf')](_0xeea4('0x10b'),_0x1a8969[_0xeea4('0x2b')])]['status']===_0xeea4('0x10e'));};Preview[_0xeea4('0xf')]['run']=function(_0x13d4cf,_0x5b9c32){var _0x2068b6=this;return new BPromise(function(_0x17ea58,_0x20b037){_0x2068b6[_0xeea4('0x10f')](_0x13d4cf,_0x5b9c32)[_0xeea4('0x82')](function(_0x2a67c4){_0x17ea58(_[_0xeea4('0x110')](_0x2a67c4,[_0xeea4('0x4d')]));})[_0xeea4('0x78')](function(_0x4d79fe){if(_0x4d79fe['unlock']){rpcDb[_0xeea4('0x111')](_0x13d4cf);}if(_0x4d79fe[_0xeea4('0x55')]){rpcDb[_0xeea4('0x8b')](_0x13d4cf);}_0x20b037(_[_0xeea4('0x110')](_0x4d79fe,[_0xeea4('0x4d')]));});});};Preview[_0xeea4('0xf')]['execRun']=function(_0x53b22d,_0x4016f5){var _0x324510=this;return new BPromise(function(_0x38bff2,_0x4086f5){var _0x17e10a,_0x3648da;rpcDb['getContactPreview'](_0x53b22d)[_0xeea4('0x82')](function(_0x580c29){if(!_[_0xeea4('0x6d')](_0x580c29[0x0])){_0x3648da=_0x580c29[0x0][_0xeea4('0x112')]?![]:!![];_0x17e10a=_0x580c29[0x0]['recallme']?!![]:![];_0x17e10a=_0x4016f5?!![]:_0x17e10a;}var _0xf813c8=_0x324510[_0xeea4('0x113')](_0x580c29);if(_0xf813c8[_0xeea4('0x114')]){rpcDb[_0xeea4('0x115')](_[_0xeea4('0x110')](_0x580c29[0x0],[_0xeea4('0x75'),_0xeea4('0x116')]))[_0xeea4('0x82')](function(_0x2688f9){_0x324510[_0xeea4('0xfd')](_0x2688f9,_0x580c29[0x0],_0x4016f5,_0x3648da,_0x17e10a)['then'](function(_0x1526be){_0x38bff2(_0x1526be);})[_0xeea4('0x78')](function(_0x5af5a3){_0x4086f5(_0x5af5a3);});})[_0xeea4('0x78')](function(_0x12d42e){ut['logger'](_0xeea4('0x117'),_0x12d42e);_0x4086f5(ut['message'](_0xeea4('0x118'),_0x3648da,_0x17e10a));});}else{_0x4086f5(ut[_0xeea4('0x4d')](_0xf813c8[_0xeea4('0x4d')],_0x3648da,_0x17e10a));}})[_0xeea4('0x78')](function(_0x15fea9){ut[_0xeea4('0x63')](_0xeea4('0x119'),_0x15fea9);_0x4086f5(ut[_0xeea4('0x4d')](_0xeea4('0x118'),![],!![]));});});};Preview['prototype'][_0xeea4('0x113')]=function(_0x1c073b){if(_[_0xeea4('0x6d')](_0x1c073b)||_[_0xeea4('0x101')](_0x1c073b)||!_[_0xeea4('0x6d')](_0x1c073b[0x0][_0xeea4('0x87')])&&_[_0xeea4('0x6d')](_0x1c073b[0x0][_0xeea4('0x87')][_0xeea4('0x2b')])){ut[_0xeea4('0x63')](_0xeea4('0x11a'),_0x1c073b);return{'isValid':![],'message':_0xeea4('0x11b')};}var _0x3b5073=this[_0xeea4('0x14')][_0x1c073b[0x0]['Queue'][_0xeea4('0x2b')]];_0x3b5073[_0xeea4('0x4d')]=_0xeea4('0x9b');if(_[_0xeea4('0x6d')](_0x3b5073)){ut[_0xeea4('0x63')](_0xeea4('0x11c'),_0x3b5073);return{'isValid':![],'message':_0xeea4('0x11d')};}if(!this[_0xeea4('0x98')](_0x3b5073[_0xeea4('0x54')])){ut[_0xeea4('0x63')](_0xeea4('0x11e'),_0xeea4('0x11f')+_0x3b5073[_0xeea4('0x2b')]+'\x20Trunk\x20is\x20not\x20active');if(!this['isTrunkReachable'](_0x3b5073['TrunkBackup'])){ut['logger'](_0xeea4('0x11e'),_0x3b5073[_0xeea4('0x2b')]+_0xeea4('0x120'));return{'isValid':![],'message':_0xeea4('0x121')};}}if(!ut[_0xeea4('0x97')](_0x3b5073[_0xeea4('0x35')])){ut[_0xeea4('0x63')](_0xeea4('0x122'),_0x3b5073['name']+_0xeea4('0x123'));return{'isValid':![],'message':_0xeea4('0x11f')+_0x3b5073['name']+_0xeea4('0x123')};}return{'isValid':!![],'message':_0xeea4('0x124')};};Preview['prototype'][_0xeea4('0x125')]=function(_0x597146,_0x1d8a16,_0xcd9440,_0xcfae1e){var _0xc85717=this;return new BPromise(function(_0x46841a,_0x4405bf){var _0x35dd9b=_0x597146[_0xeea4('0xb1')];var _0x380c57=_0xc85717[_0xeea4('0x98')](_0x1d8a16[_0xeea4('0x54')])?util[_0xeea4('0xaf')](_0xeea4('0x126'),_0x1d8a16[_0xeea4('0x54')]['name'],_['isNil'](_0x1d8a16[_0xeea4('0x37')])?'':_0x1d8a16[_0xeea4('0x37')][_0xeea4('0x127')]()||'',_0x1d8a16[_0xeea4('0x128')]>0x0?_0xcd9440['Contact']['phone']['substring'](_0x1d8a16['dialCutDigit']):_0xcd9440[_0xeea4('0xfe')][_0xeea4('0x129')]):util['format'](_0xeea4('0x126'),_[_0xeea4('0x6d')](_0x1d8a16[_0xeea4('0x99')])?_0x1d8a16[_0xeea4('0x54')][_0xeea4('0x2b')]:_0x1d8a16[_0xeea4('0x99')]['name'],_['isNil'](_0x1d8a16[_0xeea4('0x37')])?'':_0x1d8a16[_0xeea4('0x37')][_0xeea4('0x127')]()||'',_0x1d8a16[_0xeea4('0x128')]>0x0?_0xcd9440['Contact'][_0xeea4('0x129')][_0xeea4('0x12a')](_0x1d8a16['dialCutDigit']):_0xcd9440[_0xeea4('0xfe')][_0xeea4('0x129')]);var _0x3026cd=_0xc85717['isTrunkReachable'](_0x1d8a16[_0xeea4('0x54')])?ut['getCallerId'](_0x1d8a16[_0xeea4('0x54')][_0xeea4('0x56')],_0x1d8a16[_0xeea4('0x36')],_0x1d8a16[_0xeea4('0x12b')]>0x0?ut[_0xeea4('0x12c')](_0x1d8a16[_0xeea4('0x12d')],_0x1d8a16[_0xeea4('0x12b')]):_0x1d8a16[_0xeea4('0x12d')]):ut[_0xeea4('0x12e')](_[_0xeea4('0x6d')](_0x1d8a16[_0xeea4('0x99')])?_0x1d8a16[_0xeea4('0x54')]['callerid']:_0x1d8a16[_0xeea4('0x99')]['callerid'],_0x1d8a16[_0xeea4('0x36')],_0x1d8a16[_0xeea4('0x12b')]>0x0?ut['getCallerIdRandom'](_0x1d8a16[_0xeea4('0x12d')],_0x1d8a16[_0xeea4('0x12b')]):_0x1d8a16[_0xeea4('0x12d')]);if(_0x3026cd){_0x597146['originatecalleridname']=ut[_0xeea4('0x12f')](_0x3026cd);_0x597146[_0xeea4('0x130')]=ut[_0xeea4('0x131')](_0x3026cd);}var _0xc9f0f5=ut['addVariables'](_0x1d8a16,_0xcd9440,_0x380c57,_0x3026cd,_0x35dd9b,_0x597146);_[_0xeea4('0x132')](_0x597146,ut[_0xeea4('0x133')](_0xc9f0f5));_0x597146[_0xeea4('0x8c')]=moment()[_0xeea4('0xaf')](_0xeea4('0x8d'));ami[_0xeea4('0x134')](ut[_0xeea4('0x135')](_0x597146,_0x1d8a16,_0xc9f0f5,_0x597146['activeContact'],_0xcfae1e))[_0xeea4('0x82')](function(_0x5a31e9){var _0x400d32=_0x597146[_0xeea4('0x136')];if(!_[_0xeea4('0x6d')](_0x400d32)){if(!_['isNil'](_0xc85717[_0xeea4('0x17')][_0x400d32])){_0xc85717[_0xeea4('0x17')][_0x400d32][_0xeea4('0x137')]=_0x597146[_0xeea4('0x138')];emit(util[_0xeea4('0xaf')](_0xeea4('0x139'),_0xc85717['agents'][_0x400d32][_0xeea4('0x2b')]),_0xeea4('0x13a'),{'destaccountcode':_0xc85717[_0xeea4('0x17')][_0x400d32]['accountcode'],'destconnectedlinenum':_0x597146[_0xeea4('0x138')]});}}_0x1d8a16[_0xeea4('0x4e')]+=0x1;logger[_0xeea4('0x5b')]('[originated][increment]',_0x35dd9b,_0xeea4('0xc0'),_0x1d8a16[_0xeea4('0x2b')],_0xeea4('0x71'),_0x1d8a16['originated']);_0x46841a(_0x5a31e9);})[_0xeea4('0x78')](function(_0x2753ee){ut['logAgent'](_0x597146,0xe,'OriginateError');rpcDb['createAgentHistory'](_0x597146,'[originateFailure][logOriginateFailure]');_0x4405bf(_0x2753ee);});});};Preview[_0xeea4('0xf')][_0xeea4('0x21')]=function(_0x1bcb4b){if(this[_0xeea4('0x6e')][_0x1bcb4b['linkedid']]){this[_0xeea4('0x6e')][_0x1bcb4b[_0xeea4('0xc2')]][_0xeea4('0x77')]=_0x1bcb4b['channel'];}};Preview[_0xeea4('0xf')][_0xeea4('0x19')]=function(_0x2f5fe1){var _0x27e1ef=this;var _0x46fac9=this['actions'][_0x2f5fe1[_0xeea4('0x13b')]];if(_0x46fac9){if(_0x46fac9['lookAgent']&&this[_0xeea4('0x17')][_0x46fac9[_0xeea4('0x100')]]){ut[_0xeea4('0x13c')](_0x46fac9,this['agents'][_0x46fac9[_0xeea4('0x100')]][_0xeea4('0x2b')],this[_0xeea4('0x17')][_0x46fac9['lookAgent']]['id']);}var _0x2bec21=_[_0xeea4('0x13d')](_0x46fac9);_0x2bec21[_0xeea4('0xb0')]=moment()[_0xeea4('0xaf')](_0xeea4('0x8d'));var _0x553f76=_0x27e1ef[_0xeea4('0x14')][_0x46fac9['queue']];if(ut['isFailure'](_0x2f5fe1[_0xeea4('0x13e')])){if(_0x46fac9[_0xeea4('0xad')]){rpcDb['unlockContact'](_0x46fac9['idContact']);}if(_0x46fac9[_0xeea4('0xd2')]){rpcDb[_0xeea4('0x8b')](_0x46fac9[_0xeea4('0x13f')]);}ami['emit'](_0xeea4('0x140'),ut[_0xeea4('0xa0')](_0x46fac9,'rejected',this[_0xeea4('0x14')][_0x46fac9[_0xeea4('0x70')]]));this[_0xeea4('0x141')](_0x2bec21,_0x553f76,_0x2f5fe1);}else{_0x46fac9[_0xeea4('0x8c')]=moment()[_0xeea4('0xaf')](_0xeea4('0x8d'));ut['logAgent'](_0x2bec21,0x4,_0xeea4('0x142'));rpcDb['createAgentHistory'](_0x2bec21,_0xeea4('0x143'));}}};Preview[_0xeea4('0xf')][_0xeea4('0x1c')]=function(_0x3a5d3b){var _0x3542bc=this;var _0x287b68=this[_0xeea4('0x6e')][_0x3a5d3b[_0xeea4('0xc2')]];var _0x229f70;if(_0x287b68){_0x229f70=this[_0xeea4('0x14')][_0x287b68[_0xeea4('0x70')]];logger[_0xeea4('0x5b')](_0xeea4('0x144'),_0x3a5d3b[_0xeea4('0xc2')],'\x20Queue',_0x229f70[_0xeea4('0x2b')],_0xeea4('0xc1'),_0x229f70[_0xeea4('0x60')]);}if(this[_0xeea4('0x6e')][_0x3a5d3b[_0xeea4('0xc2')]]&&_0x3a5d3b[_0xeea4('0xc2')]!==_0x3a5d3b[_0xeea4('0xb1')]){if(_0x3a5d3b[_0xeea4('0x145')]==='16'&&this[_0xeea4('0x6e')][_0x3a5d3b['linkedid']]['dialAnswer']){this[_0xeea4('0x9c')](_0x3a5d3b,_0x3a5d3b[_0xeea4('0xc2')],_0x3a5d3b[_0xeea4('0x145')]);}else if(this[_0xeea4('0x6e')][_0x3a5d3b[_0xeea4('0xc2')]]['dialAnswer']){logger[_0xeea4('0x5b')](_0xeea4('0x146'),_0x3a5d3b[_0xeea4('0xc2')],_0x3a5d3b[_0xeea4('0x145')],_0xeea4('0xc0'),_0x229f70['name'],'pTalking:\x20',_0x229f70[_0xeea4('0x60')]);this[_0xeea4('0x9c')](_0x3a5d3b,_0x3a5d3b[_0xeea4('0xc2')],_0x3a5d3b[_0xeea4('0x145')]);}}else if(_0x287b68&&_['isNil'](_0x287b68[_0xeea4('0x147')])&&_0x229f70['dialQueueProject']&&_0x3a5d3b[_0xeea4('0xc2')]===_0x3a5d3b[_0xeea4('0xb1')]&&_[_0xeea4('0x6d')](_0x3a5d3b[_0xeea4('0xf4')])&&_0x3a5d3b['cause']==='16'&&_0x3a5d3b['channelstate']==='6'&&_[_0xeea4('0xf2')](_0x287b68[_0xeea4('0x148')])){if(_0x287b68['unlockAgent']){rpcDb[_0xeea4('0x111')](_0x287b68[_0xeea4('0x13f')]);}if(_0x287b68[_0xeea4('0xd2')]){rpcDb['disableContact'](_0x287b68[_0xeea4('0x13f')]);}_0x3a5d3b['reason']='22';this[_0xeea4('0x141')](_0x287b68,_0x229f70,_0x3a5d3b);}else if(_0x287b68&&_0x287b68[_0xeea4('0x148')]){if(_0x3a5d3b['cause']==='16'&&this[_0xeea4('0x6e')][_0x3a5d3b[_0xeea4('0xc2')]][_0xeea4('0x72')]){logger[_0xeea4('0x5b')](_0xeea4('0x149'),_0x3a5d3b[_0xeea4('0xc2')],_0x3a5d3b[_0xeea4('0x145')],_0xeea4('0xc0'),_0x229f70[_0xeea4('0x2b')],_0xeea4('0xc1'),_0x229f70[_0xeea4('0x60')]);this[_0xeea4('0x9c')](_0x3a5d3b,_0x3a5d3b['linkedid'],_0x3a5d3b[_0xeea4('0x145')]);}else if(this['actions'][_0x3a5d3b[_0xeea4('0xc2')]][_0xeea4('0x72')]){logger[_0xeea4('0x5b')]('[syncHangup][talking][cause]',_0x3a5d3b['linkedid'],_0x3a5d3b[_0xeea4('0x145')],'\x20Queue',_0x229f70[_0xeea4('0x2b')],_0xeea4('0xc1'),_0x229f70[_0xeea4('0x60')]);this[_0xeea4('0x9c')](_0x3a5d3b,_0x3a5d3b[_0xeea4('0xc2')],_0x3a5d3b[_0xeea4('0x145')]);}}};Preview[_0xeea4('0xf')]['syncDialEnd']=function(_0xb845b7){if(this[_0xeea4('0x6e')][_0xb845b7[_0xeea4('0xf1')]]&&_0xb845b7[_0xeea4('0xf1')]!==_0xb845b7[_0xeea4('0x14a')]){this[_0xeea4('0x9c')](_0xb845b7,_0xb845b7[_0xeea4('0xf1')],_0xb845b7['dialstatus']);}};Preview[_0xeea4('0xf')]['syncHangupRequest']=function(_0xcac187){if(this[_0xeea4('0x6e')][_0xcac187['linkedid']]&&_0xcac187['linkedid']!==_0xcac187[_0xeea4('0xb1')]&&!this[_0xeea4('0x6e')][_0xcac187[_0xeea4('0xc2')]][_0xeea4('0x72')]){if(_0xcac187[_0xeea4('0x145')]==='1'){this[_0xeea4('0x9c')](_0xcac187,_0xcac187[_0xeea4('0xc2')],_0xcac187['cause']);}}};Preview['prototype'][_0xeea4('0x14b')]=function(_0x372e10,_0x68866b,_0x58dc54){if(this[_0xeea4('0x6e')][_0x372e10]){if(_['isNil'](this['actions'][_0x372e10][_0xeea4('0x14c')])){this[_0xeea4('0x6e')][_0x372e10][_0xeea4('0x14c')]={};}this['actions'][_0x372e10][_0xeea4('0x14c')][_0x68866b]=_0x58dc54;}};Preview[_0xeea4('0xf')][_0xeea4('0x14d')]=function(_0x3ed0f3){try{if(!_['isNil'](_0x3ed0f3)){if(ut['filterKey'](_[_0xeea4('0x14e')](_0x3ed0f3['variable'])[0x0])){this[_0xeea4('0x14b')](_0x3ed0f3['uniqueid'],_[_0xeea4('0x14e')](_0x3ed0f3[_0xeea4('0x14f')])[0x0],_0x3ed0f3['value']);}}}catch(_0x4c0271){logger[_0xeea4('0x150')](_0xeea4('0x151'),util[_0xeea4('0x152')](_0x4c0271,{'showHidden':![],'depth':null}));}};Preview[_0xeea4('0xf')][_0xeea4('0x24')]=function(_0x4a200a){if(_0x4a200a){if(this[_0xeea4('0x6e')][_0x4a200a[_0xeea4('0x153')]]){this[_0xeea4('0x6e')][_0x4a200a[_0xeea4('0x153')]][_0xeea4('0x148')]=!![];}}};Preview['prototype'][_0xeea4('0x26')]=function(_0x5e4c87){if(_0x5e4c87){if(this[_0xeea4('0x6e')][_0x5e4c87[_0xeea4('0x154')]]){this[_0xeea4('0x6e')][_0x5e4c87[_0xeea4('0x154')]][_0xeea4('0x148')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
+var _0x7b2d=['dialBusyMaxRetry','[callProgressDetectingCustomer][logBusy]','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','NoAnswer','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','rescheduleContact','scheduledAt','activeContact','CONGESTION','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','CANCEL','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','decrementTalkink','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','outboundUnknownCallsDay','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','AnswerAGI','[callProgressDetectingAgent][logCongestion]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','isNil','Contact','phone','VoiceQueueId','lookAgent','isEmpty','execCall','[Preview][execCall][success]','\x20IdHopper:\x20','idContact','custom:agentcalled','called','Calling','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','reachable','unmonitored','unlockContact','execRun','getContactPreview','recallme','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','validateContact','[Preview][validateContact][Empty\x20Contact]','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','getCallerId','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','extractCalleridNumber','merge','toLowerVariables','variablesAction','user:agentconnect','accountcode','calleridnum','OriginateError','[originateFailure][logOriginateFailure]','actionid','clone','isFailure','response','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','syncHangup','cause','[syncHangup][talking][cause]','statedesc','channelstate','[syncHangup][talking][transfer]','destuniqueid','addVariable','variables','syncVarSet','filterKey','variable','keys','[syncVarSet][Preview]','transfertargetlinkedid','transfer','transfererlinkedid','exports','lodash','bluebird','uuid','moment','md5','ioredis','../../../config/environment','../../../config/logger','preview','actionPreview','../ami','./rpcDb','./action','./util/util','redis','defaults','localhost','tail','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','varset','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','name','strategy','available','loggedIn','pTalking','sumBillable','sumDuration','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundAbandonedCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','Trunk','callerid','Interval','stringify','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','message','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','prototype','syncCampaigns','hasOwnProperty','clearZombieChannels','setMessage','recallMe','clearZombieChannel','enqueue','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','UserId','ListId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','loggerError','[Dialer][checkChannel][Preview]','size','getContactRecallMe','then','length','scheduledat','Agent','run','logger2','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','rescheduleContactInQueue','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','[getContactRecallMe]','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberRetryFrequency','unlockAgent','linkedid','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','acw','custom:agentConnectPreview','custom:agentcomplete','complete','answered','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','crateCustomerReportQueue','BUSY','Busy','busy','Global','[callProgressDetectingCustomer][logBusyGlobal]','countbusyretry'];(function(_0x53f730,_0x4016f9){var _0xa46e88=function(_0x57ae1a){while(--_0x57ae1a){_0x53f730['push'](_0x53f730['shift']());}};_0xa46e88(++_0x4016f9);}(_0x7b2d,0x97));var _0xd7b2=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x7b2d[_0x59ee6f];return _0x4c0979;};'use strict';var util=require('util');var _=require(_0xd7b2('0x0'));var BPromise=require(_0xd7b2('0x1'));var uuid=require(_0xd7b2('0x2'));var moment=require(_0xd7b2('0x3'));var md5=require(_0xd7b2('0x4'));var Redis=require(_0xd7b2('0x5'));var config=require(_0xd7b2('0x6'));var logger=require(_0xd7b2('0x7'))(_0xd7b2('0x8'));var loggerAction=require('../../../config/logger')(_0xd7b2('0x9'));var ami=require(_0xd7b2('0xa'));var rpcDb=require(_0xd7b2('0xb'));var Action=require(_0xd7b2('0xc'));var ut=require(_0xd7b2('0xd'));config[_0xd7b2('0xe')]=_[_0xd7b2('0xf')](config[_0xd7b2('0xe')],{'host':_0xd7b2('0x10'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd7b2('0xe')]));var Sequence=function(){};Sequence['prototype']['enqueue']=function(_0x4420e4){this[_0xd7b2('0x11')]=this[_0xd7b2('0x11')]?this[_0xd7b2('0x11')]['finally'](_0x4420e4):_0x4420e4();};function Preview(_0x57c1f1){this[_0xd7b2('0x12')]=new Sequence();this[_0xd7b2('0x13')]=_0x57c1f1[_0xd7b2('0x14')];this[_0xd7b2('0x15')]=_0x57c1f1[_0xd7b2('0x15')];this[_0xd7b2('0x16')]={};this[_0xd7b2('0x17')]=_0x57c1f1[_0xd7b2('0x17')];this[_0xd7b2('0x18')]=0x0;ami['on'](_0xd7b2('0x19'),this[_0xd7b2('0x1a')][_0xd7b2('0x1b')](this));ami['on'](_0xd7b2('0x1c'),this['syncHangup'][_0xd7b2('0x1b')](this));ami['on'](_0xd7b2('0x1d'),this[_0xd7b2('0x1e')][_0xd7b2('0x1b')](this));ami['on'](_0xd7b2('0x1f'),this[_0xd7b2('0x20')][_0xd7b2('0x1b')](this));ami['on'](_0xd7b2('0x21'),this[_0xd7b2('0x22')]['bind'](this));ami['on'](_0xd7b2('0x23'),this['syncVarSet'][_0xd7b2('0x1b')](this));ami['on'](_0xd7b2('0x24'),this[_0xd7b2('0x25')][_0xd7b2('0x1b')](this));ami['on'](_0xd7b2('0x26'),this[_0xd7b2('0x27')][_0xd7b2('0x1b')](this));this[_0xd7b2('0x28')](this[_0xd7b2('0x13')]);}function emit(_0x1dbaf0,_0x367c18,_0x21d1b5){io['to'](_0x1dbaf0)[_0xd7b2('0x29')](_0x367c18,_0x21d1b5);}function emitCampaignPreview(_0x3f2a40){if(_0x3f2a40[_0xd7b2('0x2a')]===_0xd7b2('0x2b')){var _0x315f6f={'id':_0x3f2a40['id'],'name':_0x3f2a40[_0xd7b2('0x2c')],'strategy':_0x3f2a40[_0xd7b2('0x2d')],'answered':_0x3f2a40['answered'],'available':_0x3f2a40[_0xd7b2('0x2e')],'loggedIn':_0x3f2a40[_0xd7b2('0x2f')],'pTalking':_0x3f2a40[_0xd7b2('0x30')],'sumBillable':_0x3f2a40[_0xd7b2('0x31')],'sumDuration':_0x3f2a40[_0xd7b2('0x32')],'sumHoldTime':_0x3f2a40['sumHoldTime']||0x0,'talking':_0x3f2a40[_0xd7b2('0x33')],'total':_0x3f2a40[_0xd7b2('0x34')],'type':_0x3f2a40['type'],'unmanaged':_0x3f2a40[_0xd7b2('0x35')],'abandoned':_0x3f2a40[_0xd7b2('0x36')],'waiting':_0x3f2a40[_0xd7b2('0x37')],'loggedInDb':_0x3f2a40[_0xd7b2('0x38')],'dialActive':_0x3f2a40[_0xd7b2('0x39')],'dialMethod':_0x3f2a40[_0xd7b2('0x3a')],'dialOriginateCallerIdName':_0x3f2a40['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x3f2a40[_0xd7b2('0x3b')],'dialOriginateTimeout':_0x3f2a40[_0xd7b2('0x3c')],'dialPrefix':_0x3f2a40['dialPrefix'],'outboundAnswerAgiCallsDay':_0x3f2a40[_0xd7b2('0x3d')],'outboundAnswerCallsDay':_0x3f2a40[_0xd7b2('0x3e')],'outboundBlacklistCallsDay':_0x3f2a40[_0xd7b2('0x3f')],'outboundBusyCallsDay':_0x3f2a40[_0xd7b2('0x40')],'outboundCongestionCallsDay':_0x3f2a40[_0xd7b2('0x41')],'outboundDropCallsDayACS':_0x3f2a40[_0xd7b2('0x42')],'outboundDropCallsDayCallersExit':_0x3f2a40[_0xd7b2('0x43')],'outboundDropCallsDayTimeout':_0x3f2a40[_0xd7b2('0x44')],'outboundNoAnswerCallsDay':_0x3f2a40['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x3f2a40[_0xd7b2('0x45')],'outboundOriginateFailureCallsDay':_0x3f2a40[_0xd7b2('0x46')],'outboundReCallsDay':_0x3f2a40[_0xd7b2('0x47')],'outboundRejectCallsDay':_0x3f2a40[_0xd7b2('0x48')],'outboundUnknownCallsDay':_0x3f2a40['outboundUnknownCallsDay'],'outboundAbandonedCallsDay':_0x3f2a40[_0xd7b2('0x49')],'predictiveIntervalAnsweredCalls':_0x3f2a40['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x3f2a40[_0xd7b2('0x4a')],'predictiveIntervalAvgTalktime':_0x3f2a40[_0xd7b2('0x4b')],'predictiveIntervalDroppedCallsCallersExit':_0x3f2a40['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x3f2a40[_0xd7b2('0x4c')],'predictiveIntervalErlangCalls':_0x3f2a40[_0xd7b2('0x4d')],'predictiveIntervalErlangCallsDroppedCalls':_0x3f2a40[_0xd7b2('0x4e')],'predictiveIntervalHitRate':_0x3f2a40[_0xd7b2('0x4f')],'predictiveIntervalMultiplicativeFactor':_0x3f2a40['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x3f2a40[_0xd7b2('0x50')],'predictiveIntervalAvailable':_0x3f2a40[_0xd7b2('0x51')],'predictiveIntervalTotalCalls':_0x3f2a40[_0xd7b2('0x52')],'message':_0x3f2a40['message'],'originated':_0x3f2a40[_0xd7b2('0x53')],'erlangCalls':_0x3f2a40[_0xd7b2('0x54')],'erlangCallToSecond':_0x3f2a40[_0xd7b2('0x55')],'erlangAbandonmentRate':_0x3f2a40['erlangAbandonmentRate'],'erlangBusyFactor':_0x3f2a40[_0xd7b2('0x56')],'startPredictive':_0x3f2a40['startPredictive'],'startProgressive':_0x3f2a40['startProgressive']};if(_0x3f2a40[_0xd7b2('0x57')]){_0x315f6f[_0xd7b2('0x57')]={'id':_0x3f2a40[_0xd7b2('0x57')]['id'],'name':_0x3f2a40[_0xd7b2('0x57')][_0xd7b2('0x2c')],'active':_0x3f2a40[_0xd7b2('0x57')]['active'],'callerid':_0x3f2a40[_0xd7b2('0x57')][_0xd7b2('0x58')]};}if(_0x3f2a40[_0xd7b2('0x59')]){_0x315f6f[_0xd7b2('0x59')]={'id':_0x3f2a40[_0xd7b2('0x59')]['id'],'name':_0x3f2a40['Interval'][_0xd7b2('0x2c')]};}var _0x1a7f57=md5(JSON[_0xd7b2('0x5a')](_0x315f6f));if(_0x3f2a40[_0xd7b2('0x4')]!==_0x1a7f57){_0x3f2a40[_0xd7b2('0x4')]=_0x1a7f57;emit(util[_0xd7b2('0x5b')](_0xd7b2('0x5c'),_0x315f6f['name']),_0xd7b2('0x5d'),_0x315f6f);}}}function emitVoiceQueueChannelRemove(_0x3797df){logger[_0xd7b2('0x5e')](_0xd7b2('0x5f'),JSON[_0xd7b2('0x5a')](_0x3797df));emit(util[_0xd7b2('0x5b')](_0xd7b2('0x5c'),_0x3797df[_0xd7b2('0x2c')]),_0xd7b2('0x60'),_0x3797df);io['emit'](_0xd7b2('0x61'),_0x3797df);}function notSendMessagesQueue(_0x3b2e08){if(_0x3b2e08[_0xd7b2('0x62')]){if(_0x3b2e08[_0xd7b2('0x53')]===0x0&&_0x3b2e08[_0xd7b2('0x30')]===0x0){_0x3b2e08[_0xd7b2('0x62')]=![];_0x3b2e08[_0xd7b2('0x2e')]=0x0;_0x3b2e08[_0xd7b2('0x63')]=0x0;_0x3b2e08[_0xd7b2('0x64')]=_0xd7b2('0x65');ut[_0xd7b2('0x66')](_0xd7b2('0x67'),_0x3b2e08[_0xd7b2('0x2c')]+_0xd7b2('0x68'));}else{_0x3b2e08['message']=_0xd7b2('0x69');ut[_0xd7b2('0x66')](_0xd7b2('0x67'),_0x3b2e08[_0xd7b2('0x2c')]+_0xd7b2('0x6a'));}emitCampaignPreview(_0x3b2e08);}}Preview[_0xd7b2('0x6b')][_0xd7b2('0x28')]=function(){var _0x196dff=this;setInterval(function(){_0x196dff[_0xd7b2('0x6c')]();},0x7cf);};Preview[_0xd7b2('0x6b')][_0xd7b2('0x6c')]=function(){var _0x15dd17=this['campaignsPreview'];this[_0xd7b2('0x18')]+=0x1;for(var _0x24257e in _0x15dd17){if(_0x15dd17[_0xd7b2('0x6d')](_0x24257e)&&(_0x15dd17[_0x24257e][_0xd7b2('0x3a')]===_0xd7b2('0x8')||_0x15dd17[_0x24257e][_0xd7b2('0x3a')]==='booked')&&_0x15dd17[_0x24257e][_0xd7b2('0x2a')]===_0xd7b2('0x2b')){if(this['clockClearZombieChannels']>0x7){this['clockClearZombieChannels']=0x0;this[_0xd7b2('0x6e')]();}}if(_0x15dd17['hasOwnProperty'](_0x24257e)&&_0x15dd17[_0x24257e][_0xd7b2('0x3a')]===_0xd7b2('0x8')&&_0x15dd17[_0x24257e]['type']===_0xd7b2('0x2b')){if(_0x15dd17[_0x24257e][_0xd7b2('0x39')]){this[_0xd7b2('0x6f')](_0x15dd17[_0x24257e]);this[_0xd7b2('0x70')](_0x15dd17[_0x24257e]);}else{notSendMessagesQueue(_0x15dd17[_0x24257e]);}}}};Preview['prototype'][_0xd7b2('0x71')]=function(_0x2ded5e){var _0x29f1c2=this;this[_0xd7b2('0x12')][_0xd7b2('0x72')](function(){if(!_['isNil'](_0x29f1c2['actions'][_0x2ded5e])){loggerAction['info']('[clearZombieChannels][talking]',_0x2ded5e,_0xd7b2('0x73'),_0x29f1c2[_0xd7b2('0x16')][_0x2ded5e][_0xd7b2('0x74')],_0xd7b2('0x75'),JSON[_0xd7b2('0x5a')](_0x29f1c2[_0xd7b2('0x13')][_0x29f1c2[_0xd7b2('0x16')][_0x2ded5e][_0xd7b2('0x74')]]['originated']),_0xd7b2('0x76'),JSON[_0xd7b2('0x5a')](_0x29f1c2[_0xd7b2('0x13')][_0x29f1c2['actions'][_0x2ded5e][_0xd7b2('0x74')]][_0xd7b2('0x30')]),JSON[_0xd7b2('0x5a')](_0x29f1c2[_0xd7b2('0x16')][_0x2ded5e][_0xd7b2('0x77')]),JSON[_0xd7b2('0x5a')](_[_0xd7b2('0x78')](_0x29f1c2[_0xd7b2('0x16')][_0x2ded5e],[_0xd7b2('0x79'),_0xd7b2('0x7a'),'VoiceQueueId',_0xd7b2('0x7b')])));return ami[_0xd7b2('0x7c')]({'action':_0xd7b2('0x7d'),'channel':_0x29f1c2['actions'][_0x2ded5e][_0xd7b2('0x7e')]})[_0xd7b2('0x7f')](function(_0x4794dc){if(_0x4794dc[_0xd7b2('0x64')]===_0xd7b2('0x80')){setTimeout(function(){if(_0x29f1c2[_0xd7b2('0x16')][_0x2ded5e]){ut[_0xd7b2('0x81')](_0x29f1c2[_0xd7b2('0x13')][_0x29f1c2[_0xd7b2('0x16')][_0x2ded5e][_0xd7b2('0x74')]],_0xd7b2('0x82'));if(_0x29f1c2['actions'][_0x2ded5e][_0xd7b2('0x77')]===!![]){ut['decrementTalkink'](_0x29f1c2['campaignsPreview'][_0x29f1c2[_0xd7b2('0x16')][_0x2ded5e][_0xd7b2('0x74')]],_0xd7b2('0x82'));ut[_0xd7b2('0x83')]('[Dialer][checkChannel][pTalking][Preview]'+_0x2ded5e,_0x29f1c2[_0xd7b2('0x16')][_0x2ded5e]['queue']);}ut[_0xd7b2('0x83')](_0xd7b2('0x84')+_0x2ded5e,_0x29f1c2['actions'][_0x2ded5e][_0xd7b2('0x74')]);delete _0x29f1c2[_0xd7b2('0x16')][_0x2ded5e];}},0x2328);}});}});};Preview[_0xd7b2('0x6b')][_0xd7b2('0x6e')]=function(){var _0x5e7963=this;loggerAction['info']('[action]',_[_0xd7b2('0x85')](this['actions']));for(var _0x3cc7f1 in this[_0xd7b2('0x16')]){if(_0x5e7963[_0xd7b2('0x16')][_0xd7b2('0x6d')](_0x3cc7f1)){_0x5e7963['clearZombieChannel'](_0x3cc7f1);}}};Preview[_0xd7b2('0x6b')]['recallMe']=function(_0x25ca5d){var _0x2ae9d2=this;rpcDb[_0xd7b2('0x86')](_0x25ca5d['id'],ut['agentReadyId'](this[_0xd7b2('0x17')]))[_0xd7b2('0x87')](function(_0x691d36){if(!_['isNil'](_0x691d36)){for(var _0x3ec6bd=0x0;_0x3ec6bd<_0x691d36[_0xd7b2('0x88')];_0x3ec6bd+=0x1){if(ut['getDiff'](_0x691d36[_0x3ec6bd][_0xd7b2('0x89')])<_0x25ca5d['dialRecallMeTimeout']*0x3c){if(_0x691d36[_0x3ec6bd]['Agent']&&!_0x691d36[_0x3ec6bd][_0xd7b2('0x8a')]['voicePause']){_0x2ae9d2[_0xd7b2('0x8b')](_0x691d36[_0x3ec6bd]['id'])['then'](ut[_0xd7b2('0x8c')]('[RecallMe]'))[_0xd7b2('0x7f')](ut[_0xd7b2('0x8c')]('[RecallMe]'));}else{rpcDb[_0xd7b2('0x8d')](_0x691d36[_0x3ec6bd]['id']);}}else{var _0x2a8be1=new Action(_0x691d36[_0x3ec6bd],_0x25ca5d);_0x2a8be1[_0xd7b2('0x8e')]=moment()[_0xd7b2('0x5b')](_0xd7b2('0x8f'));_0x25ca5d[_0xd7b2('0x47')]+=0x1;ut[_0xd7b2('0x90')](_0x2a8be1,0x17,_0xd7b2('0x91'));if(_0x25ca5d['dialRecallInQueue']){rpcDb[_0xd7b2('0x92')](ut['createBody'](_0x691d36[_0x3ec6bd]));rpcDb[_0xd7b2('0x93')](_0x2a8be1,_0xd7b2('0x94'));}else{ut[_0xd7b2('0x90')](_0x2a8be1,0x16,_0xd7b2('0x95'));rpcDb[_0xd7b2('0x93')](_0x2a8be1,_0xd7b2('0x96'));rpcDb['createCustomerFinal'](_0x2a8be1,_0xd7b2('0x96'));}}}}})[_0xd7b2('0x7f')](ut['logger2'](_0xd7b2('0x97')));};Preview['prototype'][_0xd7b2('0x6f')]=function(_0x334bf6){_0x334bf6['sendMessageOneNotActive']=!![];if(ut['IsNotLoggedIn'](_0x334bf6['loggedIn'])){_0x334bf6['message']='AGENTS_NOT_LOGGED';}else if(!ut[_0xd7b2('0x98')](_0x334bf6['dialActive'])){_0x334bf6[_0xd7b2('0x64')]=_0xd7b2('0x65');}else if(!this[_0xd7b2('0x99')](_0x334bf6[_0xd7b2('0x57')])){if(!this[_0xd7b2('0x99')](_0x334bf6[_0xd7b2('0x9a')])){_0x334bf6[_0xd7b2('0x64')]=_0xd7b2('0x9b');}else{_0x334bf6[_0xd7b2('0x64')]=_0xd7b2('0x9c');}}else{_0x334bf6[_0xd7b2('0x64')]='ACTIVE';}emitCampaignPreview(_0x334bf6);};Preview[_0xd7b2('0x6b')][_0xd7b2('0x9d')]=function(_0x43485a,_0x95a6d4,_0x458f76){var _0x111fe6=this;var _0xffe53d=this[_0xd7b2('0x16')][_0x95a6d4];var _0x30e153=this[_0xd7b2('0x13')][_0xffe53d[_0xd7b2('0x74')]];var _0x39eeb1;if(_0x30e153){switch(_0x458f76){case'1':_0x30e153[_0xd7b2('0x45')]+=0x1;_0xffe53d[_0xd7b2('0x9e')]+=0x1;_0xffe53d[_0xd7b2('0x9f')]=ut[_0xd7b2('0xa0')](_0xffe53d);ut[_0xd7b2('0x90')](_0xffe53d,0x0,'NoSuchNumber');ami['emit']('custom:agentnosuchnumber',ut[_0xd7b2('0xa1')](_0xffe53d,_0xd7b2('0xa2')));rpcDb[_0xd7b2('0x93')](_0xffe53d,_0xd7b2('0xa3'));if(ut['totalGlobal'](_0xffe53d)>=_0x30e153[_0xd7b2('0xa4')]){_0x39eeb1=ut[_0xd7b2('0xa5')](_0xffe53d,0xf,'Global');rpcDb[_0xd7b2('0xa6')](_0x39eeb1,_0xd7b2('0xa7'));}else{if(_0xffe53d[_0xd7b2('0x9e')]>=_0x30e153['dialNoSuchNumberMaxRetry']){rpcDb[_0xd7b2('0xa6')](_0xffe53d,_0xd7b2('0xa7'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0xffe53d,_0xd7b2('0x9e'),_0x30e153[_0xd7b2('0xa8')]),_0xffe53d[_0xd7b2('0xa9')],_0xffe53d['activeContact']);}}delete this['actions'][_0x43485a[_0xd7b2('0xaa')]];break;case _0xd7b2('0xab'):var _0xa77cb9=moment()[_0xd7b2('0x5b')](_0xd7b2('0x8f'));_0xffe53d[_0xd7b2('0xac')]=_0xa77cb9;_0xffe53d[_0xd7b2('0xad')]=_0xa77cb9;_0xffe53d['dialAnswer']=!![];_0x30e153[_0xd7b2('0x30')]+=0x1;logger[_0xd7b2('0x5e')](_0xd7b2('0xae'),_0xffe53d[_0xd7b2('0xaf')],_0xd7b2('0xb0'),_0x30e153[_0xd7b2('0x2c')],_0xd7b2('0x76'),_0x30e153[_0xd7b2('0x30')]);ami[_0xd7b2('0x29')]('custom:agentconnect',ut[_0xd7b2('0xa1')](_0xffe53d,'connect',this[_0xd7b2('0x13')][_0xffe53d[_0xd7b2('0x74')]]));if(_0x30e153[_0xd7b2('0xb1')]){ami['emit'](_0xd7b2('0xb2'),ut['buildAcw'](_0xffe53d));}break;case'16':ami[_0xd7b2('0x29')](_0xd7b2('0xb3'),ut[_0xd7b2('0xa1')](_0xffe53d,_0xd7b2('0xb4'),this[_0xd7b2('0x13')][_0xffe53d[_0xd7b2('0x74')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0xffe53d,_0xd7b2('0xb4')));_0x30e153[_0xd7b2('0x3e')]+=0x1;_0x30e153[_0xd7b2('0x34')]+=0x1;_0x30e153[_0xd7b2('0xb5')]+=0x1;ut['decrementTalkink'](_0x30e153,_0xd7b2('0xb6'));_0xffe53d['countglobal']=ut[_0xd7b2('0xa0')](_0xffe53d);ut['logCustomer'](_0xffe53d,0x4,_0xd7b2('0xb7'));rpcDb[_0xd7b2('0x93')](_0xffe53d,_0xd7b2('0xb8'));rpcDb[_0xd7b2('0xa6')](_0xffe53d,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0xd7b2('0xb9')](_0xffe53d);_0x30e153[_0xd7b2('0x32')]+=_0xffe53d['talktime'];_0x30e153[_0xd7b2('0x31')]+=_0xffe53d['talktime'];logger[_0xd7b2('0x5e')]('[syncHangup][talking][decrement]',_0xffe53d[_0xd7b2('0xaf')],_0xd7b2('0xb0'),_0x30e153['name'],_0xd7b2('0x76'),_0x30e153[_0xd7b2('0x30')]);delete this['actions'][_0x43485a[_0xd7b2('0xaa')]];break;case _0xd7b2('0xba'):_0x30e153['outboundBusyCallsDay']+=0x1;_0xffe53d['countbusyretry']+=0x1;_0xffe53d['countglobal']=ut[_0xd7b2('0xa0')](_0xffe53d);ut[_0xd7b2('0x90')](_0xffe53d,0x5,_0xd7b2('0xbb'));ami['emit']('custom:agentbusy',ut[_0xd7b2('0xa1')](_0xffe53d,_0xd7b2('0xbc')));rpcDb['createCustomerHistory'](_0xffe53d,'[callProgressDetectingCustomer][logBusy]');if(ut[_0xd7b2('0xa0')](_0xffe53d)>=_0x30e153[_0xd7b2('0xa4')]){_0x39eeb1=ut[_0xd7b2('0xa5')](_0xffe53d,0xf,_0xd7b2('0xbd'));rpcDb[_0xd7b2('0xa6')](_0x39eeb1,_0xd7b2('0xbe'));}else{if(_0xffe53d[_0xd7b2('0xbf')]>=_0x30e153[_0xd7b2('0xc0')]){rpcDb[_0xd7b2('0xa6')](_0xffe53d,_0xd7b2('0xc1'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0xffe53d,_0xd7b2('0xbf'),_0x30e153['dialBusyRetryFrequency']),_0xffe53d[_0xd7b2('0xa9')],_0xffe53d['activeContact']);}}break;case _0xd7b2('0xc2'):_0x30e153[_0xd7b2('0xc3')]+=0x1;_0xffe53d[_0xd7b2('0xc4')]+=0x1;_0xffe53d[_0xd7b2('0x9f')]=ut[_0xd7b2('0xa0')](_0xffe53d);ut[_0xd7b2('0x90')](_0xffe53d,0x3,_0xd7b2('0xc5'));ami[_0xd7b2('0x29')](_0xd7b2('0xc6'),ut['buildObj'](_0xffe53d,_0xd7b2('0xc7')));rpcDb[_0xd7b2('0x93')](_0xffe53d,_0xd7b2('0xc8'));if(ut[_0xd7b2('0xa0')](_0xffe53d)>=_0x30e153['dialGlobalMaxRetry']){_0x39eeb1=ut['cloneAction'](_0xffe53d,0xf,'Global');rpcDb['createCustomerFinal'](_0x39eeb1,_0xd7b2('0xc9'));}else{if(_0xffe53d[_0xd7b2('0xc4')]>=_0x30e153[_0xd7b2('0xca')]){rpcDb['createCustomerFinal'](_0xffe53d,_0xd7b2('0xc8'));}else{rpcDb[_0xd7b2('0xcb')](ut[_0xd7b2('0xcc')](_0xffe53d,_0xd7b2('0xc4'),_0x30e153['dialNoAnswerRetryFrequency']),_0xffe53d[_0xd7b2('0xa9')],_0xffe53d[_0xd7b2('0xcd')]);}}break;case _0xd7b2('0xce'):_0x30e153[_0xd7b2('0x41')]+=0x1;_0xffe53d[_0xd7b2('0xcf')]+=0x1;_0xffe53d[_0xd7b2('0x9f')]=ut['totalGlobal'](_0xffe53d);ut[_0xd7b2('0x90')](_0xffe53d,0x8,_0xd7b2('0xd0'));ami[_0xd7b2('0x29')](_0xd7b2('0xd1'),ut['buildObj'](_0xffe53d,_0xd7b2('0xd2')));rpcDb[_0xd7b2('0x93')](_0xffe53d,'[callProgressDetectingCustomer][logCongestion]');if(ut[_0xd7b2('0xa0')](_0xffe53d)>=_0x30e153['dialGlobalMaxRetry']){_0x39eeb1=ut[_0xd7b2('0xa5')](_0xffe53d,0xf,_0xd7b2('0xbd'));rpcDb[_0xd7b2('0xa6')](_0x39eeb1,_0xd7b2('0xd3'));}else{if(_0xffe53d[_0xd7b2('0xcf')]>=_0x30e153[_0xd7b2('0xd4')]){rpcDb[_0xd7b2('0xa6')](_0xffe53d,_0xd7b2('0xd5'));}else{rpcDb[_0xd7b2('0xcb')](ut[_0xd7b2('0xcc')](_0xffe53d,_0xd7b2('0xcf'),_0x30e153['dialBusyRetryFrequency']),_0xffe53d[_0xd7b2('0xa9')],_0xffe53d[_0xd7b2('0xcd')]);}}break;case _0xd7b2('0xd6'):_0x30e153['outboundRejectCallsDay']+=0x1;_0xffe53d[_0xd7b2('0xd7')]+=0x1;_0xffe53d[_0xd7b2('0x9f')]=ut[_0xd7b2('0xa0')](_0xffe53d);ut['logCustomer'](_0xffe53d,0x14,_0xd7b2('0xd8'));ami[_0xd7b2('0x29')](_0xd7b2('0xd9'),ut[_0xd7b2('0xa1')](_0xffe53d,_0xd7b2('0xda')));rpcDb['createCustomerHistory'](_0xffe53d,'[syncHangupRequest][logAgentReject]');if(ut[_0xd7b2('0xa0')](_0xffe53d)>=_0x30e153[_0xd7b2('0xa4')]){_0x39eeb1=ut['cloneAction'](_0xffe53d,0x14,'AgentReject');rpcDb[_0xd7b2('0xa6')](_0x39eeb1,_0xd7b2('0xdb'));}else{if(_0xffe53d[_0xd7b2('0xd7')]>=_0x30e153['dialAgentRejectMaxRetry']){rpcDb['createCustomerFinal'](_0xffe53d,_0xd7b2('0xdb'));}else{rpcDb[_0xd7b2('0xcb')](ut[_0xd7b2('0xcc')](_0xffe53d,_0xd7b2('0xd7'),_0x30e153[_0xd7b2('0xdc')]),_0xffe53d[_0xd7b2('0xa9')],_0xffe53d[_0xd7b2('0xcd')]);}}break;case _0xd7b2('0xdd'):_0x30e153[_0xd7b2('0x49')]+=0x1;_0xffe53d[_0xd7b2('0xde')]+=0x1;_0xffe53d[_0xd7b2('0x9f')]=ut[_0xd7b2('0xa0')](_0xffe53d);ut['logCustomer'](_0xffe53d,0xb,_0xd7b2('0xdf'));rpcDb[_0xd7b2('0x93')](_0xffe53d,_0xd7b2('0xe0'));if(ut[_0xd7b2('0xa0')](_0xffe53d)>=_0x30e153[_0xd7b2('0xa4')]){_0x39eeb1=ut['cloneAction'](_0xffe53d,0xf,'Global');rpcDb[_0xd7b2('0xa6')](_0x39eeb1,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0xffe53d[_0xd7b2('0xe1')]>=_0x30e153[_0xd7b2('0xe2')]){rpcDb[_0xd7b2('0xa6')](_0xffe53d,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0xd7b2('0xcb')](ut[_0xd7b2('0xcc')](_0xffe53d,_0xd7b2('0xde'),_0x30e153[_0xd7b2('0xe3')]),_0xffe53d[_0xd7b2('0xa9')],_0xffe53d[_0xd7b2('0xcd')]);}}break;case'18':_0x30e153['outboundUnknownCallsDay']+=0x1;_0xffe53d['countmachineretry']+=0x1;_0xffe53d[_0xd7b2('0x9f')]=ut['totalGlobal'](_0xffe53d);ut[_0xd7b2('0x90')](_0xffe53d,0x12,_0x43485a[_0xd7b2('0xe4')]||_0x43485a[_0xd7b2('0xe5')]);ami[_0xd7b2('0x29')](_0xd7b2('0xe6'),ut['buildObj'](_0xffe53d,_0xd7b2('0xe7')));rpcDb[_0xd7b2('0x93')](_0xffe53d,_0xd7b2('0xe8'));if(ut[_0xd7b2('0xa0')](_0xffe53d)>=_0x30e153[_0xd7b2('0xa4')]){_0x39eeb1=ut[_0xd7b2('0xa5')](_0xffe53d,0xf,_0xd7b2('0xbd'));rpcDb[_0xd7b2('0xa6')](_0x39eeb1,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb[_0xd7b2('0xa6')](_0xffe53d,'[callProgressDetectingCustomer][hangupInAMD]');}delete this[_0xd7b2('0x16')][_0x43485a['linkedid']];break;case'19':_0x30e153['outboundUnknownCallsDay']+=0x1;_0xffe53d['countglobal']=ut[_0xd7b2('0xa0')](_0xffe53d);ut[_0xd7b2('0x90')](_0xffe53d,0x13,_0x43485a[_0xd7b2('0xe4')]||_0x43485a[_0xd7b2('0xe5')]);ami['emit'](_0xd7b2('0xe6'),ut[_0xd7b2('0xa1')](_0xffe53d,'amd'));rpcDb[_0xd7b2('0x93')](_0xffe53d,_0xd7b2('0xe9'));if(ut[_0xd7b2('0xa0')](_0xffe53d)>=_0x30e153[_0xd7b2('0xa4')]){_0x39eeb1=ut['cloneAction'](_0xffe53d,0xf,_0xd7b2('0xbd'));rpcDb[_0xd7b2('0xa6')](_0x39eeb1,_0xd7b2('0xe9'));}else{rpcDb['createCustomerFinal'](_0xffe53d,_0xd7b2('0xe9'));}delete this[_0xd7b2('0x16')][_0x43485a[_0xd7b2('0xaa')]];break;default:if(_0xffe53d[_0xd7b2('0x77')]){ut[_0xd7b2('0xea')](_0x30e153,_0xd7b2('0xeb'));ut[_0xd7b2('0x83')](_0xd7b2('0xec')+_0x30e153[_0xd7b2('0x2c')],_0x43485a);}_0x30e153[_0xd7b2('0xed')]+=0x1;_0xffe53d[_0xd7b2('0x9f')]=ut[_0xd7b2('0xa0')](_0xffe53d);ut['logCustomer'](_0xffe53d,0xc,_0x43485a[_0xd7b2('0xe4')]||_0x43485a['dialstatus']);rpcDb[_0xd7b2('0x93')](_0xffe53d,'[callProgressDetectingCustomer][logUnknown]');if(ut[_0xd7b2('0xa0')](_0xffe53d)>=_0x30e153['dialGlobalMaxRetry']){_0x39eeb1=ut[_0xd7b2('0xa5')](_0xffe53d,0xf,_0xd7b2('0xbd'));rpcDb[_0xd7b2('0xa6')](_0x39eeb1,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0xd7b2('0xa6')](_0xffe53d,_0xd7b2('0xee'));}delete this[_0xd7b2('0x16')][_0x43485a[_0xd7b2('0xaa')]];}if(!(_0xffe53d[_0xd7b2('0x77')]&&_0x458f76==='16')){ut[_0xd7b2('0x81')](_0x30e153,_0xd7b2('0xef'));logger[_0xd7b2('0x5e')](_0xd7b2('0xf0'),_0xffe53d[_0xd7b2('0xaf')],_0xd7b2('0xb0'),_0x30e153[_0xd7b2('0x2c')],'originated:\x20',_0x30e153[_0xd7b2('0x53')]);}if(_0x458f76!==_0xd7b2('0xab')){delete this['actions'][_0x43485a[_0xd7b2('0xaa')]];delete this['actions'][_0x43485a[_0xd7b2('0xf1')]];}}};Preview[_0xd7b2('0x6b')][_0xd7b2('0xf2')]=function(_0x17a330,_0x44235f,_0x46b9f1){if(_[_0xd7b2('0xf3')](_0x44235f)&&'object'!==typeof _0x44235f){return;}if(_[_0xd7b2('0xf3')](_0x46b9f1)&&_0xd7b2('0xf4')!==typeof _0x46b9f1){return;}switch(_0x46b9f1[_0xd7b2('0xf5')]){case'0':ut[_0xd7b2('0xf6')](_0x17a330,0x0,'NoSuchNumber');rpcDb[_0xd7b2('0xf7')](_0x17a330,_0xd7b2('0xf8'));break;case'3':ut[_0xd7b2('0xf6')](_0x17a330,0x3,_0xd7b2('0xc5'));rpcDb[_0xd7b2('0xf7')](_0x17a330,_0xd7b2('0xf9'));break;case'5':ut[_0xd7b2('0xf6')](_0x17a330,0x5,_0xd7b2('0xbb'));rpcDb['createAgentHistory'](_0x17a330,_0xd7b2('0xfa'));break;case'8':ut[_0xd7b2('0xf6')](_0x17a330,0x8,_0xd7b2('0xd0'));rpcDb[_0xd7b2('0xf7')](_0x17a330,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut[_0xd7b2('0xf6')](_0x17a330,0x16,_0xd7b2('0xfb'));rpcDb[_0xd7b2('0xf7')](_0x17a330,'[callProgressDetectingAgent][logAnswerAGI]');break;default:ut[_0xd7b2('0xf6')](_0x17a330,0xc,_0x46b9f1[_0xd7b2('0xf5')]);rpcDb[_0xd7b2('0xf7')](_0x17a330,_0xd7b2('0xfc'));}ut['updateOriginated'](_0x44235f,'[callProgressDetectingAgent]');logger[_0xd7b2('0x5e')](_0xd7b2('0xfd'),_0x17a330[_0xd7b2('0xaf')],_0xd7b2('0xb0'),_0x44235f[_0xd7b2('0x2c')],_0xd7b2('0x75'),_0x44235f[_0xd7b2('0x53')]);delete this['actions'][_0x17a330[_0xd7b2('0xaf')]];};Preview['prototype'][_0xd7b2('0xfe')]=function(_0x64e4f0,_0x19f91a,_0x1ae6d4,_0x3a8678,_0x1207aa){var _0x327d23=this;return new BPromise(function(_0x865a9,_0x1a9d8e){if(_[_0xd7b2('0xff')](_0x19f91a)||_['isNil'](_0x19f91a[_0xd7b2('0x100')])||_[_0xd7b2('0xff')](_0x19f91a[_0xd7b2('0x100')][_0xd7b2('0x101')])||_['isNil'](_0x19f91a[_0xd7b2('0x102')])){_0x1a9d8e(ut[_0xd7b2('0x64')]('Contact\x20is\x20undefined',_0x3a8678,_0x1207aa));return;}var _0x1ff7c0=uuid['v4']();var _0x2bc3c4=_0x327d23[_0xd7b2('0x13')][_0x19f91a[_0xd7b2('0x73')][_0xd7b2('0x2c')]];var _0x2201ef=_0x1ae6d4?_0x327d23['agents'][_0x1ae6d4]['id']:undefined;_0x327d23[_0xd7b2('0x16')][_0x1ff7c0]=new Action(_0x19f91a,_0x2bc3c4,_0x1ff7c0,_0x1ae6d4,_0x2201ef);var _0x2a75bf=_0x327d23[_0xd7b2('0x16')][_0x1ff7c0];_0x2a75bf[_0xd7b2('0xa9')]=_0x3a8678;_0x2a75bf[_0xd7b2('0xcd')]=_0x1207aa;_0x2a75bf[_0xd7b2('0x103')]=_0x1ae6d4;if(_[_0xd7b2('0x104')](_0x64e4f0)){_0x327d23[_0xd7b2('0x105')](_0x2a75bf,_0x2bc3c4,_0x19f91a,_0x1ae6d4)[_0xd7b2('0x87')](function(_0x5a1329){logger[_0xd7b2('0x5e')](_0xd7b2('0x106'),'Queue:\x20'+_0x2a75bf[_0xd7b2('0x74')]+_0xd7b2('0x107')+_0x2a75bf[_0xd7b2('0x108')],JSON['stringify'](_0x5a1329));ami['emit'](_0xd7b2('0x109'),ut['buildObj'](_0x2a75bf,_0xd7b2('0x10a'),_0x327d23[_0xd7b2('0x13')][_0x2a75bf[_0xd7b2('0x74')]]));_0x865a9(ut[_0xd7b2('0x64')](_0xd7b2('0x10b')));})[_0xd7b2('0x7f')](function(_0x40bf12){ut['logger']('[Preview][execCall][failure]',_0x40bf12);_0x1a9d8e(ut[_0xd7b2('0x64')](_0xd7b2('0x10c'),_0x3a8678,_0x1207aa));});}else{_0x2bc3c4['outboundBlacklistCallsDay']+=0x1;ut[_0xd7b2('0x10d')](_0x2a75bf);rpcDb[_0xd7b2('0x10e')](_0x2a75bf,_0xd7b2('0x10f'));delete _0x327d23[_0xd7b2('0x16')][_0x1ff7c0];_0x1a9d8e(ut['message'](_0xd7b2('0x110'),_0x3a8678,_0x1207aa));}});};Preview['prototype'][_0xd7b2('0x99')]=function(_0x4ef270){return!_[_0xd7b2('0xff')](_0x4ef270)&&!_[_0xd7b2('0xff')](_0x4ef270[_0xd7b2('0x2c')])&&!_['isNil'](_0x4ef270[_0xd7b2('0x111')])&&_0x4ef270[_0xd7b2('0x111')]&&!_['isNil'](this[_0xd7b2('0x15')][util['format'](_0xd7b2('0x112'),_0x4ef270['name'])])&&!_[_0xd7b2('0xff')](this[_0xd7b2('0x15')][util[_0xd7b2('0x5b')]('SIP/%s',_0x4ef270['name'])][_0xd7b2('0x7d')])&&(this[_0xd7b2('0x15')][util[_0xd7b2('0x5b')](_0xd7b2('0x112'),_0x4ef270[_0xd7b2('0x2c')])]['status']===_0xd7b2('0x113')||this[_0xd7b2('0x15')][util[_0xd7b2('0x5b')](_0xd7b2('0x112'),_0x4ef270['name'])][_0xd7b2('0x7d')]===_0xd7b2('0x114'));};Preview['prototype'][_0xd7b2('0x8b')]=function(_0x367411,_0x1d1942){var _0x112ccc=this;return new BPromise(function(_0x2f1b91,_0x18d803){_0x112ccc['execRun'](_0x367411,_0x1d1942)[_0xd7b2('0x87')](function(_0x3ff215){_0x2f1b91(_['pick'](_0x3ff215,[_0xd7b2('0x64')]));})[_0xd7b2('0x7f')](function(_0x5ec13a){if(_0x5ec13a['unlock']){rpcDb[_0xd7b2('0x115')](_0x367411);}if(_0x5ec13a[_0xd7b2('0x111')]){rpcDb['disableContact'](_0x367411);}_0x18d803(_['pick'](_0x5ec13a,[_0xd7b2('0x64')]));});});};Preview[_0xd7b2('0x6b')][_0xd7b2('0x116')]=function(_0x476824,_0x1a9180){var _0xd51b9b=this;return new BPromise(function(_0x5880d4,_0x1dce45){var _0x12af68,_0x10f3bf;rpcDb[_0xd7b2('0x117')](_0x476824)[_0xd7b2('0x87')](function(_0xcce9db){if(!_[_0xd7b2('0xff')](_0xcce9db[0x0])){_0x10f3bf=_0xcce9db[0x0][_0xd7b2('0x118')]?![]:!![];_0x12af68=_0xcce9db[0x0][_0xd7b2('0x118')]?!![]:![];_0x12af68=_0x1a9180?!![]:_0x12af68;}var _0x2177af=_0xd51b9b['validateContact'](_0xcce9db);if(_0x2177af[_0xd7b2('0x119')]){rpcDb[_0xd7b2('0x11a')](_[_0xd7b2('0x78')](_0xcce9db[0x0],['VoiceQueueId','Contact.phone']))['then'](function(_0x5e18bc){_0xd51b9b['checkInBlack'](_0x5e18bc,_0xcce9db[0x0],_0x1a9180,_0x10f3bf,_0x12af68)[_0xd7b2('0x87')](function(_0x3e7895){_0x5880d4(_0x3e7895);})[_0xd7b2('0x7f')](function(_0x506154){_0x1dce45(_0x506154);});})['catch'](function(_0x4f7e2a){ut[_0xd7b2('0x66')](_0xd7b2('0x11b'),_0x4f7e2a);_0x1dce45(ut[_0xd7b2('0x64')](_0xd7b2('0x11c'),_0x10f3bf,_0x12af68));});}else{_0x1dce45(ut[_0xd7b2('0x64')](_0x2177af[_0xd7b2('0x64')],_0x10f3bf,_0x12af68));}})[_0xd7b2('0x7f')](function(_0x194657){ut[_0xd7b2('0x66')](_0xd7b2('0x11d'),_0x194657);_0x1dce45(ut['message'](_0xd7b2('0x11c'),![],!![]));});});};Preview[_0xd7b2('0x6b')][_0xd7b2('0x11e')]=function(_0x4ecc58){if(_[_0xd7b2('0xff')](_0x4ecc58)||_[_0xd7b2('0x104')](_0x4ecc58)||!_[_0xd7b2('0xff')](_0x4ecc58[0x0][_0xd7b2('0x8a')])&&_['isNil'](_0x4ecc58[0x0][_0xd7b2('0x8a')][_0xd7b2('0x2c')])){ut[_0xd7b2('0x66')](_0xd7b2('0x11f'),_0x4ecc58);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x2826c4=this[_0xd7b2('0x13')][_0x4ecc58[0x0]['Queue'][_0xd7b2('0x2c')]];_0x2826c4[_0xd7b2('0x64')]='ACTIVE';if(_[_0xd7b2('0xff')](_0x2826c4)){ut['logger'](_0xd7b2('0x120'),_0x2826c4);return{'isValid':![],'message':_0xd7b2('0x121')};}if(!this['isTrunkReachable'](_0x2826c4[_0xd7b2('0x57')])){ut[_0xd7b2('0x66')](_0xd7b2('0x122'),_0xd7b2('0x123')+_0x2826c4[_0xd7b2('0x2c')]+_0xd7b2('0x124'));if(!this[_0xd7b2('0x99')](_0x2826c4[_0xd7b2('0x9a')])){ut[_0xd7b2('0x66')](_0xd7b2('0x122'),_0x2826c4[_0xd7b2('0x2c')]+_0xd7b2('0x125'));return{'isValid':![],'message':_0xd7b2('0x126')};}}if(!ut['isActive'](_0x2826c4[_0xd7b2('0x39')])){ut[_0xd7b2('0x66')](_0xd7b2('0x127'),_0x2826c4['name']+_0xd7b2('0x128'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x2826c4[_0xd7b2('0x2c')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0xd7b2('0x129')};};Preview[_0xd7b2('0x6b')][_0xd7b2('0x105')]=function(_0x2fb892,_0x597cb6,_0x29b425,_0xb5953f){var _0x4cdd09=this;return new BPromise(function(_0x1999b4,_0x565090){var _0x5e248d=_0x2fb892[_0xd7b2('0xaf')];var _0x13b810=_0x4cdd09[_0xd7b2('0x99')](_0x597cb6[_0xd7b2('0x57')])?util[_0xd7b2('0x5b')](_0xd7b2('0x12a'),_0x597cb6[_0xd7b2('0x57')][_0xd7b2('0x2c')],_[_0xd7b2('0xff')](_0x597cb6['dialPrefix'])?'':_0x597cb6[_0xd7b2('0x12b')][_0xd7b2('0x12c')]()||'',_0x597cb6[_0xd7b2('0x12d')]>0x0?_0x29b425[_0xd7b2('0x100')][_0xd7b2('0x101')][_0xd7b2('0x12e')](_0x597cb6[_0xd7b2('0x12d')]):_0x29b425[_0xd7b2('0x100')][_0xd7b2('0x101')]):util[_0xd7b2('0x5b')]('SIP/%s/%s%s',_[_0xd7b2('0xff')](_0x597cb6['TrunkBackup'])?_0x597cb6['Trunk']['name']:_0x597cb6['TrunkBackup'][_0xd7b2('0x2c')],_['isNil'](_0x597cb6[_0xd7b2('0x12b')])?'':_0x597cb6[_0xd7b2('0x12b')][_0xd7b2('0x12c')]()||'',_0x597cb6[_0xd7b2('0x12d')]>0x0?_0x29b425[_0xd7b2('0x100')]['phone']['substring'](_0x597cb6[_0xd7b2('0x12d')]):_0x29b425[_0xd7b2('0x100')][_0xd7b2('0x101')]);var _0x53bc49=_0x4cdd09[_0xd7b2('0x99')](_0x597cb6[_0xd7b2('0x57')])?ut[_0xd7b2('0x12f')](_0x597cb6[_0xd7b2('0x57')][_0xd7b2('0x58')],_0x597cb6[_0xd7b2('0x130')],_0x597cb6[_0xd7b2('0x131')]>0x0?ut[_0xd7b2('0x132')](_0x597cb6[_0xd7b2('0x3b')],_0x597cb6[_0xd7b2('0x131')]):_0x597cb6[_0xd7b2('0x3b')]):ut[_0xd7b2('0x12f')](_['isNil'](_0x597cb6[_0xd7b2('0x9a')])?_0x597cb6[_0xd7b2('0x57')][_0xd7b2('0x58')]:_0x597cb6[_0xd7b2('0x9a')][_0xd7b2('0x58')],_0x597cb6['dialOriginateCallerIdName'],_0x597cb6[_0xd7b2('0x131')]>0x0?ut['getCallerIdRandom'](_0x597cb6[_0xd7b2('0x3b')],_0x597cb6[_0xd7b2('0x131')]):_0x597cb6[_0xd7b2('0x3b')]);if(_0x53bc49){_0x2fb892[_0xd7b2('0x133')]=ut[_0xd7b2('0x134')](_0x53bc49);_0x2fb892['originatecalleridnum']=ut[_0xd7b2('0x135')](_0x53bc49);}var _0x1655d4=ut['addVariables'](_0x597cb6,_0x29b425,_0x13b810,_0x53bc49,_0x5e248d,_0x2fb892);_[_0xd7b2('0x136')](_0x2fb892,ut[_0xd7b2('0x137')](_0x1655d4));_0x2fb892['starttime']=moment()[_0xd7b2('0x5b')](_0xd7b2('0x8f'));ami['Action'](ut[_0xd7b2('0x138')](_0x2fb892,_0x597cb6,_0x1655d4,_0x2fb892[_0xd7b2('0xcd')],_0xb5953f))[_0xd7b2('0x87')](function(_0x339316){var _0x123908=_0x2fb892['channelAgent'];if(!_[_0xd7b2('0xff')](_0x123908)){if(!_[_0xd7b2('0xff')](_0x4cdd09[_0xd7b2('0x17')][_0x123908])){_0x4cdd09['agents'][_0x123908]['destconnectedlinenum']=_0x2fb892['calleridnum'];emit(util[_0xd7b2('0x5b')]('user:%s',_0x4cdd09[_0xd7b2('0x17')][_0x123908][_0xd7b2('0x2c')]),_0xd7b2('0x139'),{'destaccountcode':_0x4cdd09[_0xd7b2('0x17')][_0x123908][_0xd7b2('0x13a')],'destconnectedlinenum':_0x2fb892[_0xd7b2('0x13b')]});}}_0x597cb6[_0xd7b2('0x53')]+=0x1;logger[_0xd7b2('0x5e')]('[originated][increment]',_0x5e248d,_0xd7b2('0xb0'),_0x597cb6[_0xd7b2('0x2c')],_0xd7b2('0x75'),_0x597cb6['originated']);_0x1999b4(_0x339316);})[_0xd7b2('0x7f')](function(_0x13e7ef){ut[_0xd7b2('0xf6')](_0x2fb892,0xe,_0xd7b2('0x13c'));rpcDb['createAgentHistory'](_0x2fb892,_0xd7b2('0x13d'));_0x565090(_0x13e7ef);});});};Preview[_0xd7b2('0x6b')][_0xd7b2('0x22')]=function(_0x6f8878){if(this[_0xd7b2('0x16')][_0x6f8878['linkedid']]){this[_0xd7b2('0x16')][_0x6f8878[_0xd7b2('0xaa')]][_0xd7b2('0x7e')]=_0x6f8878['channel'];}};Preview[_0xd7b2('0x6b')]['syncOriginateResponse']=function(_0x11558e){var _0x5829b5=this;var _0x3c8bbb=this[_0xd7b2('0x16')][_0x11558e[_0xd7b2('0x13e')]];if(_0x3c8bbb){if(_0x3c8bbb['lookAgent']&&this[_0xd7b2('0x17')][_0x3c8bbb[_0xd7b2('0x103')]]){ut['logLookAgent'](_0x3c8bbb,this[_0xd7b2('0x17')][_0x3c8bbb[_0xd7b2('0x103')]][_0xd7b2('0x2c')],this[_0xd7b2('0x17')][_0x3c8bbb['lookAgent']]['id']);}var _0x49c934=_[_0xd7b2('0x13f')](_0x3c8bbb);_0x49c934[_0xd7b2('0xac')]=moment()[_0xd7b2('0x5b')](_0xd7b2('0x8f'));var _0x398e1a=_0x5829b5[_0xd7b2('0x13')][_0x3c8bbb[_0xd7b2('0x74')]];if(ut[_0xd7b2('0x140')](_0x11558e[_0xd7b2('0x141')])){if(_0x3c8bbb[_0xd7b2('0xa9')]){rpcDb['unlockContact'](_0x3c8bbb[_0xd7b2('0x108')]);}if(_0x3c8bbb[_0xd7b2('0xcd')]){rpcDb[_0xd7b2('0x8d')](_0x3c8bbb['idContact']);}ami[_0xd7b2('0x29')](_0xd7b2('0x142'),ut[_0xd7b2('0xa1')](_0x3c8bbb,_0xd7b2('0x143'),this['campaignsPreview'][_0x3c8bbb[_0xd7b2('0x74')]]));this[_0xd7b2('0xf2')](_0x49c934,_0x398e1a,_0x11558e);}else{_0x3c8bbb['starttime']=moment()[_0xd7b2('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');ut[_0xd7b2('0xf6')](_0x49c934,0x4,_0xd7b2('0xb7'));rpcDb[_0xd7b2('0xf7')](_0x49c934,_0xd7b2('0x144'));}}};Preview[_0xd7b2('0x6b')][_0xd7b2('0x145')]=function(_0x45be82){var _0x3a710d=this;var _0x17fe2d=this[_0xd7b2('0x16')][_0x45be82[_0xd7b2('0xaa')]];var _0x4ec974;if(_0x17fe2d){_0x4ec974=this[_0xd7b2('0x13')][_0x17fe2d[_0xd7b2('0x74')]];logger[_0xd7b2('0x5e')]('[syncHangup][talking]',_0x45be82['linkedid'],'\x20Queue',_0x4ec974[_0xd7b2('0x2c')],'pTalking:\x20',_0x4ec974['pTalking']);}if(this[_0xd7b2('0x16')][_0x45be82[_0xd7b2('0xaa')]]&&_0x45be82[_0xd7b2('0xaa')]!==_0x45be82[_0xd7b2('0xaf')]){if(_0x45be82['cause']==='16'&&this[_0xd7b2('0x16')][_0x45be82['linkedid']][_0xd7b2('0x77')]){this[_0xd7b2('0x9d')](_0x45be82,_0x45be82[_0xd7b2('0xaa')],_0x45be82[_0xd7b2('0x146')]);}else if(this[_0xd7b2('0x16')][_0x45be82['linkedid']][_0xd7b2('0x77')]){logger[_0xd7b2('0x5e')](_0xd7b2('0x147'),_0x45be82['linkedid'],_0x45be82['cause'],_0xd7b2('0xb0'),_0x4ec974[_0xd7b2('0x2c')],_0xd7b2('0x76'),_0x4ec974[_0xd7b2('0x30')]);this['callProgressDetectingCustomer'](_0x45be82,_0x45be82[_0xd7b2('0xaa')],_0x45be82[_0xd7b2('0x146')]);}}else if(_0x17fe2d&&_[_0xd7b2('0xff')](_0x17fe2d[_0xd7b2('0x148')])&&_0x4ec974['dialQueueProject']&&_0x45be82[_0xd7b2('0xaa')]===_0x45be82['uniqueid']&&_['isNil'](_0x45be82['reason'])&&_0x45be82['cause']==='16'&&_0x45be82[_0xd7b2('0x149')]==='6'&&_[_0xd7b2('0xf3')](_0x17fe2d['transfer'])){if(_0x17fe2d[_0xd7b2('0xa9')]){rpcDb[_0xd7b2('0x115')](_0x17fe2d[_0xd7b2('0x108')]);}if(_0x17fe2d[_0xd7b2('0xcd')]){rpcDb[_0xd7b2('0x8d')](_0x17fe2d[_0xd7b2('0x108')]);}_0x45be82[_0xd7b2('0xf5')]='22';this[_0xd7b2('0xf2')](_0x17fe2d,_0x4ec974,_0x45be82);}else if(_0x17fe2d&&_0x17fe2d['transfer']){if(_0x45be82['cause']==='16'&&this[_0xd7b2('0x16')][_0x45be82[_0xd7b2('0xaa')]]['dialAnswer']){logger[_0xd7b2('0x5e')](_0xd7b2('0x14a'),_0x45be82[_0xd7b2('0xaa')],_0x45be82[_0xd7b2('0x146')],_0xd7b2('0xb0'),_0x4ec974[_0xd7b2('0x2c')],'pTalking:\x20',_0x4ec974[_0xd7b2('0x30')]);this['callProgressDetectingCustomer'](_0x45be82,_0x45be82[_0xd7b2('0xaa')],_0x45be82[_0xd7b2('0x146')]);}else if(this[_0xd7b2('0x16')][_0x45be82[_0xd7b2('0xaa')]][_0xd7b2('0x77')]){logger['info'](_0xd7b2('0x147'),_0x45be82[_0xd7b2('0xaa')],_0x45be82[_0xd7b2('0x146')],'\x20Queue',_0x4ec974['name'],'pTalking:\x20',_0x4ec974['pTalking']);this['callProgressDetectingCustomer'](_0x45be82,_0x45be82[_0xd7b2('0xaa')],_0x45be82[_0xd7b2('0x146')]);}}};Preview[_0xd7b2('0x6b')]['syncDialEnd']=function(_0x48062c){if(this[_0xd7b2('0x16')][_0x48062c[_0xd7b2('0xf1')]]&&_0x48062c[_0xd7b2('0xf1')]!==_0x48062c[_0xd7b2('0x14b')]){this['callProgressDetectingCustomer'](_0x48062c,_0x48062c['destlinkedid'],_0x48062c[_0xd7b2('0xe5')]);}};Preview[_0xd7b2('0x6b')][_0xd7b2('0x1e')]=function(_0x3f54b1){if(this[_0xd7b2('0x16')][_0x3f54b1[_0xd7b2('0xaa')]]&&_0x3f54b1[_0xd7b2('0xaa')]!==_0x3f54b1[_0xd7b2('0xaf')]&&!this[_0xd7b2('0x16')][_0x3f54b1[_0xd7b2('0xaa')]][_0xd7b2('0x77')]){if(_0x3f54b1['cause']==='1'){this[_0xd7b2('0x9d')](_0x3f54b1,_0x3f54b1[_0xd7b2('0xaa')],_0x3f54b1['cause']);}}};Preview['prototype'][_0xd7b2('0x14c')]=function(_0x35fdf9,_0x2be71e,_0x5b4d87){if(this['actions'][_0x35fdf9]){if(_['isNil'](this[_0xd7b2('0x16')][_0x35fdf9][_0xd7b2('0x14d')])){this['actions'][_0x35fdf9]['variables']={};}this[_0xd7b2('0x16')][_0x35fdf9][_0xd7b2('0x14d')][_0x2be71e]=_0x5b4d87;}};Preview[_0xd7b2('0x6b')][_0xd7b2('0x14e')]=function(_0x5d4ab5){try{if(!_[_0xd7b2('0xff')](_0x5d4ab5)){if(ut[_0xd7b2('0x14f')](_['keys'](_0x5d4ab5[_0xd7b2('0x150')])[0x0])){this[_0xd7b2('0x14c')](_0x5d4ab5[_0xd7b2('0xaf')],_[_0xd7b2('0x151')](_0x5d4ab5[_0xd7b2('0x150')])[0x0],_0x5d4ab5['value']);}}}catch(_0x5b0ebd){logger['error'](_0xd7b2('0x152'),util['inspect'](_0x5b0ebd,{'showHidden':![],'depth':null}));}};Preview[_0xd7b2('0x6b')][_0xd7b2('0x25')]=function(_0x1c4302){if(_0x1c4302){if(this['actions'][_0x1c4302[_0xd7b2('0x153')]]){this[_0xd7b2('0x16')][_0x1c4302['transfertargetlinkedid']][_0xd7b2('0x154')]=!![];}}};Preview[_0xd7b2('0x6b')][_0xd7b2('0x27')]=function(_0x5d9668){if(_0x5d9668){if(this['actions'][_0x5d9668[_0xd7b2('0x155')]]){this[_0xd7b2('0x16')][_0x5d9668[_0xd7b2('0x155')]][_0xd7b2('0x154')]=!![];}}};module[_0xd7b2('0x156')]=Preview;
\ No newline at end of file
index 114f16b..b887929 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eea=['queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','[GetContactRecallMe]\x20','util','bluebird','../../../config/logger','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','error','inspect','catch','[createHistory]\x20','resolve','createHistory','then','moveContactManagedDialer','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','countReScheduled','[countReScheduled]\x20','unlockContact','disableContact','[activeContact]\x20','type','uniqueid','calleridnum','calleridname','queuecallerjoinAt','queuecallerleaveAt'];(function(_0xf192ae,_0x8e001c){var _0x24d40a=function(_0xc7ed96){while(--_0xc7ed96){_0xf192ae['push'](_0xf192ae['shift']());}};_0x24d40a(++_0x8e001c);}(_0x1eea,0x1b8));var _0xa1ee=function(_0x495b5b,_0x3e70e0){_0x495b5b=_0x495b5b-0x0;var _0x157dd2=_0x1eea[_0x495b5b];return _0x157dd2;};'use strict';var util=require(_0xa1ee('0x0'));var BPromise=require(_0xa1ee('0x1'));var logger=require(_0xa1ee('0x2'))('preview');var _=require('lodash');var cmHopper=require(_0xa1ee('0x3'));var cmHopperFinal=require(_0xa1ee('0x4'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0xa1ee('0x5'));var voiceQueueRt=require(_0xa1ee('0x6'));var agentReportPreview=require(_0xa1ee('0x7'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x4d48cb){return function(_0x47f72d){logger[_0xa1ee('0x8')](_0x4d48cb,util[_0xa1ee('0x9')](_0x47f72d,{'showHidden':![],'depth':null}));};}function create(_0x2fc835){return BPromise['resolve']()['then'](cmHopperHistory['createHistory'](_0x2fc835))[_0xa1ee('0xa')](loggerCatch(_0xa1ee('0xb')));}function createAgent(_0x4adfe9){return BPromise[_0xa1ee('0xc')]()['then'](agentReportPreview[_0xa1ee('0xd')](_0x4adfe9))[_0xa1ee('0xa')](loggerCatch(_0xa1ee('0xb')));}function moveContact(_0x52ad65){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0xf')](_0x52ad65,!![]))['catch'](loggerCatch('[moveContactManagedDialer]\x20'));}exports[_0xa1ee('0x10')]=function(_0x3df4f6){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopperBlack['checkIsBlackList'](_0x3df4f6))['catch'](loggerCatch(_0xa1ee('0x11')));};exports[_0xa1ee('0x12')]=function(_0xc66492){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0x12')](_0xc66492))['catch'](loggerCatch(_0xa1ee('0x13')));};exports[_0xa1ee('0xd')]=function(_0x478bb4,_0x1d065c){create(_0x478bb4)[_0xa1ee('0xa')](loggerCatch(_0x1d065c));moveContact(_0x478bb4)[_0xa1ee('0xa')](loggerCatch(_0x1d065c));};exports[_0xa1ee('0x14')]=function(_0x54c459,_0x23a293){createAgent(_0x54c459)['catch'](loggerCatch(_0x23a293));};exports[_0xa1ee('0x15')]=function(_0x402ca5,_0x55901b){create(_0x402ca5)[_0xa1ee('0xa')](loggerCatch(_0x55901b));};exports[_0xa1ee('0x16')]=function(_0x5dc4ae,_0x2bd7bb){moveContact(_0x5dc4ae)[_0xa1ee('0xa')](loggerCatch(_0x2bd7bb));};exports[_0xa1ee('0x17')]=function(_0x30d538,_0x3ad7fc,_0x244e23){if(_0x3ad7fc){_0x30d538[_0xa1ee('0x18')]=null;}if(_0x244e23){_0x30d538[_0xa1ee('0x19')]=![];}return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0x17')](_0x30d538))['catch'](loggerCatch('[rescheduleContact]\x20'));};exports[_0xa1ee('0x1a')]=function(_0x3bf8e0){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0x1a')](_0x3bf8e0))[_0xa1ee('0xa')](loggerCatch(_0xa1ee('0x1b')));};exports[_0xa1ee('0x1c')]=function(_0x520545){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0x1c')]({'UserId':null},_0x520545,0x1))[_0xa1ee('0xa')](loggerCatch('[unlockContact]\x20'));};exports[_0xa1ee('0x1d')]=function(_0x49993b){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0x1c')]({'active':![]},_0x49993b,0x1))['catch'](loggerCatch(_0xa1ee('0x1e')));};exports['crateCustomerReportQueue']=function(_0x1e01d4){var _0x2f7a99={};_0x2f7a99[_0xa1ee('0x1f')]=_0x1e01d4[_0xa1ee('0x1f')];_0x2f7a99[_0xa1ee('0x20')]=_0x1e01d4[_0xa1ee('0x20')];_0x2f7a99['calleridnum']=_0x1e01d4[_0xa1ee('0x21')];_0x2f7a99[_0xa1ee('0x22')]=_0x1e01d4[_0xa1ee('0x22')];_0x2f7a99['queue']=_0x1e01d4['queue'];_0x2f7a99[_0xa1ee('0x23')]=_0x1e01d4['answertime'];_0x2f7a99[_0xa1ee('0x24')]=_0x1e01d4['answertime'];_0x2f7a99['queuecallercomplete']=0x1;_0x2f7a99[_0xa1ee('0x25')]=_0x1e01d4[_0xa1ee('0x26')];_0x2f7a99[_0xa1ee('0x27')]=_0x1e01d4[_0xa1ee('0x28')];_0x2f7a99[_0xa1ee('0x29')]=_0xa1ee('0x2a');_0x2f7a99[_0xa1ee('0x2b')]=_0xa1ee('0x2c');_0x2f7a99[_0xa1ee('0x2d')]=0x0;_0x2f7a99[_0xa1ee('0x2e')]=0x1;_0x2f7a99[_0xa1ee('0x2f')]=_0x1e01d4['membername'];_0x2f7a99[_0xa1ee('0x30')]=_0xa1ee('0x31');return BPromise[_0xa1ee('0xc')]()['then'](voiceQueueReport[_0xa1ee('0x32')](_0x2f7a99))[_0xa1ee('0xa')](loggerCatch(_0xa1ee('0x33')));};exports['getContactRecallMe']=function(_0x25c283,_0x50a5ac){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper['getContactRecallMe'](_0x25c283,_0x50a5ac))[_0xa1ee('0xa')](loggerCatch(_0xa1ee('0x34')));};exports['rescheduleContactInQueue']=function(_0x11233e){return BPromise[_0xa1ee('0xc')]()[_0xa1ee('0xe')](cmHopper[_0xa1ee('0x17')](_0x11233e,!![],!![]))[_0xa1ee('0xa')](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
+var _0x87ed=['UserId','active','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','lastAssignedTo','queuecallerexitreason','COMPLETED','create','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','util','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','catch','[createHistory]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createCustomerFinal','rescheduleContact'];(function(_0x53950d,_0x1bb3de){var _0x3f5d0a=function(_0x598727){while(--_0x598727){_0x53950d['push'](_0x53950d['shift']());}};_0x3f5d0a(++_0x1bb3de);}(_0x87ed,0x134));var _0xd87e=function(_0x3a6eba,_0x7db8ac){_0x3a6eba=_0x3a6eba-0x0;var _0x531c0a=_0x87ed[_0x3a6eba];return _0x531c0a;};'use strict';var util=require(_0xd87e('0x0'));var BPromise=require('bluebird');var logger=require(_0xd87e('0x1'))(_0xd87e('0x2'));var _=require(_0xd87e('0x3'));var cmHopper=require(_0xd87e('0x4'));var cmHopperFinal=require(_0xd87e('0x5'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0xd87e('0x6'));var agentReportPreview=require(_0xd87e('0x7'));var voiceQueueReport=require(_0xd87e('0x8'));function loggerCatch(_0x36259e){return function(_0xeb512f){logger[_0xd87e('0x9')](_0x36259e,util[_0xd87e('0xa')](_0xeb512f,{'showHidden':![],'depth':null}));};}function create(_0x1fdbed){return BPromise[_0xd87e('0xb')]()[_0xd87e('0xc')](cmHopperHistory[_0xd87e('0xd')](_0x1fdbed))[_0xd87e('0xe')](loggerCatch(_0xd87e('0xf')));}function createAgent(_0x39b9b6){return BPromise[_0xd87e('0xb')]()[_0xd87e('0xc')](agentReportPreview[_0xd87e('0xd')](_0x39b9b6))[_0xd87e('0xe')](loggerCatch(_0xd87e('0xf')));}function moveContact(_0x4b0144){return BPromise[_0xd87e('0xb')]()['then'](cmHopper['moveContactManagedDialer'](_0x4b0144,!![]))['catch'](loggerCatch('[moveContactManagedDialer]\x20'));}exports[_0xd87e('0x10')]=function(_0x490e6b){return BPromise[_0xd87e('0xb')]()[_0xd87e('0xc')](cmHopperBlack['checkIsBlackList'](_0x490e6b))['catch'](loggerCatch(_0xd87e('0x11')));};exports[_0xd87e('0x12')]=function(_0x340048){return BPromise[_0xd87e('0xb')]()[_0xd87e('0xc')](cmHopper[_0xd87e('0x12')](_0x340048))[_0xd87e('0xe')](loggerCatch(_0xd87e('0x13')));};exports[_0xd87e('0xd')]=function(_0x58536b,_0x15711e){create(_0x58536b)[_0xd87e('0xe')](loggerCatch(_0x15711e));moveContact(_0x58536b)[_0xd87e('0xe')](loggerCatch(_0x15711e));};exports['createAgentHistory']=function(_0x13879a,_0x200432){createAgent(_0x13879a)[_0xd87e('0xe')](loggerCatch(_0x200432));};exports['createCustomerHistory']=function(_0x176ab2,_0x389997){create(_0x176ab2)[_0xd87e('0xe')](loggerCatch(_0x389997));};exports[_0xd87e('0x14')]=function(_0x32dec6,_0x3e8261){moveContact(_0x32dec6)[_0xd87e('0xe')](loggerCatch(_0x3e8261));};exports[_0xd87e('0x15')]=function(_0x421fdf,_0x7ae315,_0x10cfed){if(_0x7ae315){_0x421fdf[_0xd87e('0x16')]=null;}if(_0x10cfed){_0x421fdf[_0xd87e('0x17')]=![];}return BPromise[_0xd87e('0xb')]()[_0xd87e('0xc')](cmHopper[_0xd87e('0x15')](_0x421fdf))['catch'](loggerCatch('[rescheduleContact]\x20'));};exports[_0xd87e('0x18')]=function(_0x52f508){return BPromise[_0xd87e('0xb')]()[_0xd87e('0xc')](cmHopper['countReScheduled'](_0x52f508))[_0xd87e('0xe')](loggerCatch(_0xd87e('0x19')));};exports[_0xd87e('0x1a')]=function(_0xc465ac){return BPromise[_0xd87e('0xb')]()[_0xd87e('0xc')](cmHopper['unlockContact']({'UserId':null},_0xc465ac,0x1))[_0xd87e('0xe')](loggerCatch(_0xd87e('0x1b')));};exports[_0xd87e('0x1c')]=function(_0x253fe2){return BPromise[_0xd87e('0xb')]()[_0xd87e('0xc')](cmHopper['unlockContact']({'active':![]},_0x253fe2,0x1))[_0xd87e('0xe')](loggerCatch(_0xd87e('0x1d')));};exports[_0xd87e('0x1e')]=function(_0x26ea19){var _0x4734ab={};_0x4734ab['type']=_0x26ea19[_0xd87e('0x1f')];_0x4734ab[_0xd87e('0x20')]=_0x26ea19[_0xd87e('0x20')];_0x4734ab[_0xd87e('0x21')]=_0x26ea19['calleridnum'];_0x4734ab[_0xd87e('0x22')]=_0x26ea19[_0xd87e('0x22')];_0x4734ab[_0xd87e('0x23')]=_0x26ea19['queue'];_0x4734ab[_0xd87e('0x24')]=_0x26ea19[_0xd87e('0x25')];_0x4734ab['queuecallerleaveAt']=_0x26ea19[_0xd87e('0x25')];_0x4734ab[_0xd87e('0x26')]=0x1;_0x4734ab[_0xd87e('0x27')]=_0x26ea19[_0xd87e('0x28')];_0x4734ab[_0xd87e('0x29')]=_0x26ea19[_0xd87e('0x2a')];_0x4734ab[_0xd87e('0x2b')]=_0xd87e('0x2c');_0x4734ab[_0xd87e('0x2d')]=_0xd87e('0x2e');_0x4734ab[_0xd87e('0x2f')]=0x0;_0x4734ab['assigned']=0x1;_0x4734ab[_0xd87e('0x30')]=_0x26ea19[_0xd87e('0x2a')];_0x4734ab[_0xd87e('0x31')]=_0xd87e('0x32');return BPromise['resolve']()['then'](voiceQueueReport[_0xd87e('0x33')](_0x4734ab))[_0xd87e('0xe')](loggerCatch('[voiceQueueReport]\x20'));};exports[_0xd87e('0x34')]=function(_0x5a184d,_0xbf9b31){return BPromise[_0xd87e('0xb')]()['then'](cmHopper[_0xd87e('0x34')](_0x5a184d,_0xbf9b31))[_0xd87e('0xe')](loggerCatch(_0xd87e('0x35')));};exports[_0xd87e('0x36')]=function(_0x3ed8b8){return BPromise[_0xd87e('0xb')]()[_0xd87e('0xc')](cmHopper[_0xd87e('0x15')](_0x3ed8b8,!![],!![]))[_0xd87e('0xe')](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
index d9cd63d..cfaa4b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96e9=['updatedAt','%s%s','XMD-','toUpper','toLowerVariables','hasOwnProperty','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','Blacklist','responsetime','logAgent','state','statedesc','ringtime','starttime','logLookAgent','membername','logCustomer','YYYY-MM-DD\x20HH:mm:ss','endtime','answertime','isFailure','Failure','variablesAction','RECALL','calleridname','uniqueid','originate','channelAgent','from-sip','timeout','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledat','add','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','name','queue','interface','mandatoryDisposition','status','push','getDiff','createBody','CampaignId','filterKey','idContact','campaigntype','callbackuniqueid','callbackat','UserId','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','replace','extractCalleridName','match','extractCalleridNumber','util','lodash','moment','../../../../config/logger','env','127.0.0.1','milliseconds','diff','seconds','error','logger','inspect','loggerError','logger2','message','getCallerId','isUndefined','string','isEmpty','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','dialQueueProject2','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','tags'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x96e9,0x17a));var _0x996e=function(_0x5ca9dd,_0x1666ad){_0x5ca9dd=_0x5ca9dd-0x0;var _0x5ce32b=_0x96e9[_0x5ca9dd];return _0x5ce32b;};'use strict';var util=require(_0x996e('0x0'));var _=require(_0x996e('0x1'));var moment=require(_0x996e('0x2'));var logger=require(_0x996e('0x3'))('preview');var ipAgi=process[_0x996e('0x4')]['XCALLY_IP_AGI']||_0x996e('0x5');function getSeconds(_0x1f9a4f,_0x58e662){var _0x5dc1b7=moment(_0x1f9a4f)[_0x996e('0x6')](0x0);var _0x376115=moment(_0x58e662)[_0x996e('0x6')](0x0);return _0x5dc1b7[_0x996e('0x7')](_0x376115,_0x996e('0x8'));}exports['loggerCatch']=function(_0x2e0ca5){return function(_0x99611d){logger[_0x996e('0x9')](_0x2e0ca5,util['inspect'](_0x99611d,{'showHidden':![],'depth':null}));};};exports[_0x996e('0xa')]=function(_0x550346,_0x2bffda){logger['info'](_0x550346,util[_0x996e('0xb')](_0x2bffda,{'showHidden':![],'depth':null}));};exports[_0x996e('0xc')]=function(_0x510243,_0x23572a){logger['error'](_0x510243,util[_0x996e('0xb')](_0x23572a,{'showHidden':![],'depth':null}));};exports[_0x996e('0xd')]=function(_0x41f02c){return function(_0x1f47f8){logger['info'](_0x41f02c,util[_0x996e('0xb')](_0x1f47f8,{'showHidden':![],'depth':null}));};};exports[_0x996e('0xe')]=function(_0x26d151,_0x30fb8e,_0x4441c6){return{'message':_0x26d151,'unlock':_0x30fb8e,'active':_0x4441c6};};exports[_0x996e('0xf')]=function(_0x2024c5,_0x4b9840,_0x4e9b63){if(!_[_0x996e('0x10')](_0x4e9b63)&&_0x996e('0x11')===typeof _0x4e9b63&&!_[_0x996e('0x12')](_0x4e9b63)){if(!_[_0x996e('0x10')](_0x4b9840)&&_0x996e('0x11')===typeof _0x4b9840&&!_['isEmpty'](_0x4b9840)){return util['format'](_0x996e('0x13'),_0x4b9840,_0x4e9b63);}return util[_0x996e('0x14')](_0x996e('0x13'),_0x4e9b63,_0x4e9b63);}if(!_['isUndefined'](_0x2024c5)&&_0x996e('0x11')===typeof _0x2024c5&&!_['isEmpty'](_0x2024c5)){return _0x2024c5;}return _0x996e('0x15');};exports[_0x996e('0x16')]=function(_0x44b7c4){if(_[_0x996e('0x17')](_0x44b7c4)){return![];}return _0x44b7c4;};exports[_0x996e('0x18')]=function(_0x457409,_0x1be6ec,_0x9a215d,_0x5a2ea7,_0x487526,_0x299d8c){var _0x456b7f={'XMD-QUEUE':_0x1be6ec[_0x996e('0x19')]?_0x1be6ec[_0x996e('0x19')]['name']:'','XMD-CALLERID':_0x5a2ea7,'XMD-CALLERID-PREVIEW':_0x299d8c?util[_0x996e('0x14')](_0x996e('0x13'),_0x299d8c['calleridname'],_0x299d8c[_0x996e('0x1a')]):_0x5a2ea7,'XMD-DIALID':_0x487526,'XMD-CONTACTID':_0x1be6ec[_0x996e('0x1b')],'XMD-CDRTYPE':_0x996e('0x1c'),'CALLERID(all)':_0x5a2ea7,'XMD-VOICEQUEUEID':_0x1be6ec[_0x996e('0x1d')],'XMD-DIALCHANNEL':_0x9a215d,'XMD-DIALTIMEOUT':_0x457409[_0x996e('0x1e')]||0x1e,'XMD-DIALOPTIONS':util[_0x996e('0x14')]('\x22rtTxX%s%s\x22',_0x457409['dialQueueProject2']?'g':'',_[_0x996e('0x12')](_0x457409[_0x996e('0x1f')])?'':_0x996e('0x20')),'XMD-DIALURL':_0x457409[_0x996e('0x21')]||'','XMD-AGI':_0x457409[_0x996e('0x22')]?util[_0x996e('0x14')](_0x996e('0x23'),ipAgi,_0x457409[_0x996e('0x22')]):_0x996e('0x24'),'XMD-AGIAFTER':_0x457409['dialQueueProject2']?util[_0x996e('0x14')]('\x22agi://%s/square,%s\x22',ipAgi,_0x457409[_0x996e('0x25')]):_0x996e('0x24'),'XMD-ORIGINATECALLERIDNUM':_0x299d8c?_0x299d8c[_0x996e('0x26')]:'','XMD-ORIGINATECALLERIDNAME':_0x299d8c?_0x299d8c[_0x996e('0x27')]:'','XMD-DESTINATION':_0x996e('0x28')};if(!_[_0x996e('0x12')](_0x457409[_0x996e('0x1f')])){_0x456b7f[util[_0x996e('0x14')]('%s',_0x996e('0x29'))]=_0x457409[_0x996e('0x1f')];_0x456b7f[util['format']('%s',_0x996e('0x2a'))]=_0x487526;}if(_0x1be6ec&&_0x1be6ec['Contact']){for(var _0xe23e8c in _0x1be6ec[_0x996e('0x2b')]){if(_0x1be6ec[_0x996e('0x2b')]['hasOwnProperty'](_0xe23e8c)){if(!_[_0x996e('0x17')](_0x1be6ec['Contact'][_0xe23e8c])&&_0xe23e8c!=='id'&&_0xe23e8c!==_0x996e('0x2c')&&_0xe23e8c!=='createdAt'&&_0xe23e8c!==_0x996e('0x2d')){_0x456b7f[util[_0x996e('0x14')](_0x996e('0x2e'),_0x996e('0x2f'),_[_0x996e('0x30')](_0xe23e8c))]=_0x1be6ec[_0x996e('0x2b')][_0xe23e8c];}}}}return _0x456b7f;};exports[_0x996e('0x31')]=function(_0x38aa42){var _0x1ba37f={};for(var _0x1ec9b9 in _0x38aa42){if(_0x38aa42[_0x996e('0x32')](_0x1ec9b9)){_0x1ba37f[util[_0x996e('0x14')]('%s',_['toLower'](_0x1ec9b9))]=_0x38aa42[_0x1ec9b9];}}return{'variables':_0x1ba37f};};exports['updateOriginated']=function(_0x3bd039,_0x4c8ac9){if(!_[_0x996e('0x17')](_0x3bd039)){if(_0x3bd039[_0x996e('0x32')]('originated')){if(_0x3bd039[_0x996e('0x33')]>0x0){_0x3bd039['originated']-=0x1;}else{logger['error'](_0x996e('0x34'),_0x4c8ac9);}}}else{logger[_0x996e('0x9')](_0x996e('0x35'),_0x4c8ac9);}};exports[_0x996e('0x36')]=function(_0x228a25){var _0x598207=moment()[_0x996e('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x228a25['state']=0xd;_0x228a25['statedesc']=_0x996e('0x37');_0x228a25['starttime']=_0x598207;_0x228a25[_0x996e('0x38')]=_0x598207;_0x228a25['endtime']=_0x598207;};exports[_0x996e('0x39')]=function(_0x5054c8,_0x2c420a,_0x1c44a8){var _0xc3943e=moment()[_0x996e('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x5054c8[_0x996e('0x3a')]=_0x2c420a;_0x5054c8[_0x996e('0x3b')]=_0x1c44a8;_0x5054c8['responsetime']=_0xc3943e;_0x5054c8[_0x996e('0x3c')]=getSeconds(_0x5054c8['responsetime'],_0x5054c8[_0x996e('0x3d')]);};exports[_0x996e('0x3e')]=function(_0x387671,_0x491b79,_0x343046){_0x387671[_0x996e('0x3f')]=_0x491b79;_0x387671['UserId']=_0x343046;};exports[_0x996e('0x40')]=function(_0x41a117,_0x520a3e,_0x4d4726){var _0x19ed93=moment()[_0x996e('0x14')](_0x996e('0x41'));_0x41a117[_0x996e('0x3a')]=_0x520a3e;_0x41a117['statedesc']=_0x4d4726;_0x41a117[_0x996e('0x38')]=_0x41a117[_0x996e('0x38')]?_0x41a117['responsetime']:_0x19ed93;_0x41a117[_0x996e('0x42')]=_0x41a117[_0x996e('0x42')]?_0x41a117[_0x996e('0x42')]:_0x19ed93;_0x41a117[_0x996e('0x3c')]=getSeconds(_0x41a117[_0x996e('0x38')]||0x0,_0x41a117[_0x996e('0x3d')]||0x0);_0x41a117['talktime']=_0x41a117[_0x996e('0x43')]?getSeconds(_0x41a117['endtime'],_0x41a117[_0x996e('0x43')]):0x0;};exports[_0x996e('0x44')]=function(_0x324dc9){return _0x324dc9===_0x996e('0x45');};exports[_0x996e('0x46')]=function(_0x58c672,_0x2952c9,_0x245165,_0x7f32fe,_0x516113){var _0xc9dfc3=_0x7f32fe?_0x996e('0x47'):_0x58c672[_0x996e('0x48')];_0xc9dfc3=_0x516113?'BOOKED':_0xc9dfc3;return{'actionid':_0x58c672[_0x996e('0x49')],'action':_0x996e('0x4a'),'channel':_0x58c672[_0x996e('0x4b')],'callerid':util['format'](_0x996e('0x13'),_0xc9dfc3,_0x58c672[_0x996e('0x1a')]),'Exten':_0x996e('0x28'),'Context':_0x996e('0x4c'),'Priority':'1','variable':_0x245165,'timeout':(_0x2952c9[_0x996e('0x4d')]||0x1e)*0x3e8,'async':!![],'channelid':_0x58c672[_0x996e('0x49')]};};exports['totalGlobal']=function(_0x259d4f){return _0x259d4f[_0x996e('0x4e')]+_0x259d4f[_0x996e('0x4f')]+_0x259d4f[_0x996e('0x50')]+_0x259d4f[_0x996e('0x51')]+_0x259d4f[_0x996e('0x52')];};exports[_0x996e('0x53')]=function(_0x5108c3){var _0x3f6b81=_[_0x996e('0x54')](_0x5108c3);_0x3f6b81[_0x996e('0x3a')]=0xf;_0x3f6b81[_0x996e('0x3b')]=_0x996e('0x55');return _0x3f6b81;};exports['scheduledAt']=function(_0x42904b,_0x51b675,_0x43e287){var _0x3b4186={};_0x3b4186[_0x51b675]=_0x42904b[_0x51b675];_0x3b4186['active']=![];_0x3b4186[_0x996e('0x56')]=moment()[_0x996e('0x57')](_0x43e287,_0x996e('0x58'))[_0x996e('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x3b4186['ContactId']=_0x42904b[_0x996e('0x1b')];_0x3b4186['ListId']=_0x42904b[_0x996e('0x59')];_0x3b4186['VoiceQueueId']=_0x42904b[_0x996e('0x1d')]||undefined;return _0x3b4186;};exports[_0x996e('0x5a')]=function(_0x14560d,_0x330fd6){if(!_[_0x996e('0x17')](_0x14560d)){if(_0x14560d[_0x996e('0x5b')]>0x0){_0x14560d['pTalking']-=0x1;}else{logger[_0x996e('0x9')](_0x330fd6,_0x996e('0x5c'));}}else{logger['error'](_0x330fd6,_0x996e('0x5d'));}};exports[_0x996e('0x5e')]=function(_0x3136da){if(_0x3136da<=0x0){return!![];}return![];};exports[_0x996e('0x5f')]=function(_0x279df0,_0x25711f,_0x2e0581){_0x279df0[_0x996e('0x60')]=_0x25711f;_0x279df0[_0x996e('0x61')]=_0x279df0[_0x996e('0x62')];_0x279df0[_0x996e('0x63')]=_0x279df0[_0x996e('0x4b')];if(_0x2e0581){_0x279df0[_0x996e('0x64')]=_0x2e0581[_0x996e('0x64')];}return _0x279df0;};exports['buildAcw']=function(_0x52b8e9){var _0x17a663={};_0x17a663['queue']=_0x52b8e9[_0x996e('0x62')];_0x17a663[_0x996e('0x63')]=_0x52b8e9[_0x996e('0x4b')];_0x17a663[_0x996e('0x49')]=_0x52b8e9[_0x996e('0x49')];return _0x17a663;};exports['agentReadyId']=function(_0x36a337){var _0x5b85ee=[];for(var _0xedabdc in _0x36a337){if(_0x36a337[_0x996e('0x32')](_0xedabdc)){if(!_[_0x996e('0x17')](_0x36a337[_0xedabdc])&&_0x36a337[_0xedabdc]['state']==='not_inuse'&&_0x36a337[_0xedabdc][_0x996e('0x65')]==='reachable'){_0x5b85ee[_0x996e('0x66')](_0x36a337[_0xedabdc]['id']);}}}return _0x5b85ee;};exports[_0x996e('0x67')]=function(_0x24fd43){var _0x15b75b=moment()['milliseconds'](0x0);var _0x4b6127=moment(_0x24fd43)[_0x996e('0x6')](0x0);return _0x15b75b[_0x996e('0x7')](_0x4b6127,_0x996e('0x8'));};exports[_0x996e('0x68')]=function(_0x2cef37){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x2cef37['ContactId'],'ListId':_0x2cef37[_0x996e('0x59')],'VoiceQueueId':_0x2cef37[_0x996e('0x1d')]||undefined,'CampaignId':_0x2cef37[_0x996e('0x69')]||undefined};};exports[_0x996e('0x6a')]=function(_0x4f8770){if(_0x4f8770===_0x996e('0x49')||_0x4f8770===_0x996e('0x6b')||_0x4f8770===_0x996e('0x62')||_0x4f8770==='type'||_0x4f8770===_0x996e('0x6c')||_0x4f8770==='dialAnswer'||_0x4f8770===_0x996e('0x3f')||_0x4f8770===_0x996e('0x4b')||_0x4f8770===_0x996e('0x48')||_0x4f8770==='active'||_0x4f8770==='calleridnum'||_0x4f8770===_0x996e('0x56')||_0x4f8770===_0x996e('0x4e')||_0x4f8770===_0x996e('0x4f')||_0x4f8770===_0x996e('0x50')||_0x4f8770==='countglobal'||_0x4f8770==='callback'||_0x4f8770===_0x996e('0x6d')||_0x4f8770===_0x996e('0x6e')||_0x4f8770==='recallme'||_0x4f8770===_0x996e('0x1b')||_0x4f8770===_0x996e('0x59')||_0x4f8770===_0x996e('0x6f')||_0x4f8770===_0x996e('0x1d')||_0x4f8770===_0x996e('0x70')||_0x4f8770===_0x996e('0x71')||_0x4f8770===_0x996e('0x72')||_0x4f8770===_0x996e('0x73')||_0x4f8770===_0x996e('0x74')||_0x4f8770===_0x996e('0x75')||_0x4f8770===_0x996e('0x76')||_0x4f8770===_0x996e('0x77')||_0x4f8770===_0x996e('0x78')||_0x4f8770==='xmd-dialchannel'||_0x4f8770===_0x996e('0x79')||_0x4f8770===_0x996e('0x7a')||_0x4f8770===_0x996e('0x7b')||_0x4f8770===_0x996e('0x7c')||_0x4f8770===_0x996e('0x7d')||_0x4f8770===_0x996e('0x7e')||_0x4f8770===_0x996e('0x7f')||_0x4f8770===_0x996e('0x80')||_0x4f8770===_0x996e('0x81')||_0x4f8770===_0x996e('0x82')||_0x4f8770===_0x996e('0x83')||_0x4f8770===_0x996e('0x84')||_0x4f8770==='rtpaudioqosrttbridged'||_0x4f8770==='rtpaudioqos'||_0x4f8770==='rtpaudioqosbridged'||_0x4f8770===_0x996e('0x80')||_0x4f8770===_0x996e('0x81')||_0x4f8770===_0x996e('0x82')||_0x4f8770===_0x996e('0x83')||_0x4f8770===_0x996e('0x84')||_0x4f8770==='rtpaudioqosrttbridged'||_0x4f8770===_0x996e('0x85')||_0x4f8770===_0x996e('0x86')||_0x4f8770===_0x996e('0x3a')||_0x4f8770===_0x996e('0x3b')){return![];}return!![];};exports[_0x996e('0x87')]=function(_0x43fd6f,_0xb2c3bf){var _0x130913,_0x5ec5ed,_0x431a9c;if(_0xb2c3bf<=0x0){_0xb2c3bf=0x1;}_0x130913=new RegExp(_0x996e('0x88')+_0xb2c3bf+'}$');_0x5ec5ed=Math['pow'](0xa,_0xb2c3bf-0x1);_0x431a9c=Math['pow'](0xa,_0xb2c3bf)-0x1;return util[_0x996e('0x14')]('%s',_[_0x996e('0x89')](_0x43fd6f,_0x130913,_['random'](_0x5ec5ed,_0x431a9c)));};exports[_0x996e('0x8a')]=function(_0x5079ad){var _0x262d42=_0x5079ad[_0x996e('0x8b')](/"(.*?)"/);return _0x262d42?_0x262d42[0x1]:_0x5079ad;};exports[_0x996e('0x8c')]=function(_0x1e09e5){var _0x5e44e2=_0x1e09e5[_0x996e('0x8b')](/<(.*?)>/);return _0x5e44e2?_0x5e44e2[0x1]:_0x1e09e5;};
\ No newline at end of file
+var _0xbca8=['callback','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','match','extractCalleridNumber','util','lodash','../../../../config/logger','preview','XCALLY_IP_AGI','127.0.0.1','milliseconds','seconds','loggerCatch','error','inspect','logger','info','loggerError','logger2','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','name','calleridnum','ContactId','VoiceQueueId','dialOriginateTimeout','monitor_format','U(xcally-mixmonitor-context)','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','dialQueueProject2','originatecalleridnum','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','createdAt','updatedAt','XMD-','toUpper','toLower','updateOriginated','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','statedesc','Blacklist','endtime','logAgent','state','ringtime','responsetime','starttime','logLookAgent','membername','logCustomer','talktime','answertime','variablesAction','calleridname','originate','channelAgent','from-sip','timeout','uniqueid','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','active','scheduledat','minutes','ListId','decrementTalkink','pTalking','IsNotLoggedIn','lastevent','queue','interface','voice','mandatoryDisposition','buildAcw','agentReadyId','not_inuse','status','reachable','push','getDiff','createBody','CampaignId','filterKey','idContact','type','countglobal'];(function(_0x2377f9,_0x15c4da){var _0x3c5c71=function(_0x55e745){while(--_0x55e745){_0x2377f9['push'](_0x2377f9['shift']());}};_0x3c5c71(++_0x15c4da);}(_0xbca8,0x140));var _0x8bca=function(_0xd9b952,_0x522e50){_0xd9b952=_0xd9b952-0x0;var _0x1b972c=_0xbca8[_0xd9b952];return _0x1b972c;};'use strict';var util=require(_0x8bca('0x0'));var _=require(_0x8bca('0x1'));var moment=require('moment');var logger=require(_0x8bca('0x2'))(_0x8bca('0x3'));var ipAgi=process['env'][_0x8bca('0x4')]||_0x8bca('0x5');function getSeconds(_0x1d8ff4,_0x765b83){var _0x3c2d36=moment(_0x1d8ff4)[_0x8bca('0x6')](0x0);var _0x2e2973=moment(_0x765b83)[_0x8bca('0x6')](0x0);return _0x3c2d36['diff'](_0x2e2973,_0x8bca('0x7'));}exports[_0x8bca('0x8')]=function(_0xc0432e){return function(_0x8d27ed){logger[_0x8bca('0x9')](_0xc0432e,util[_0x8bca('0xa')](_0x8d27ed,{'showHidden':![],'depth':null}));};};exports[_0x8bca('0xb')]=function(_0x170829,_0x1a8396){logger[_0x8bca('0xc')](_0x170829,util[_0x8bca('0xa')](_0x1a8396,{'showHidden':![],'depth':null}));};exports[_0x8bca('0xd')]=function(_0x21aca1,_0x23cc6d){logger['error'](_0x21aca1,util[_0x8bca('0xa')](_0x23cc6d,{'showHidden':![],'depth':null}));};exports[_0x8bca('0xe')]=function(_0x49bfaa){return function(_0x4ab0d8){logger[_0x8bca('0xc')](_0x49bfaa,util[_0x8bca('0xa')](_0x4ab0d8,{'showHidden':![],'depth':null}));};};exports[_0x8bca('0xf')]=function(_0x3bd843,_0x50525e,_0x1f4034){return{'message':_0x3bd843,'unlock':_0x50525e,'active':_0x1f4034};};exports[_0x8bca('0x10')]=function(_0x6eda22,_0x3f8c3c,_0x8e3eb9){if(!_[_0x8bca('0x11')](_0x8e3eb9)&&_0x8bca('0x12')===typeof _0x8e3eb9&&!_[_0x8bca('0x13')](_0x8e3eb9)){if(!_[_0x8bca('0x11')](_0x3f8c3c)&&'string'===typeof _0x3f8c3c&&!_[_0x8bca('0x13')](_0x3f8c3c)){return util[_0x8bca('0x14')](_0x8bca('0x15'),_0x3f8c3c,_0x8e3eb9);}return util[_0x8bca('0x14')]('\x22%s\x22\x20<%s>',_0x8e3eb9,_0x8e3eb9);}if(!_[_0x8bca('0x11')](_0x6eda22)&&_0x8bca('0x12')===typeof _0x6eda22&&!_[_0x8bca('0x13')](_0x6eda22)){return _0x6eda22;}return _0x8bca('0x16');};exports[_0x8bca('0x17')]=function(_0x512bd8){if(_[_0x8bca('0x18')](_0x512bd8)){return![];}return _0x512bd8;};exports[_0x8bca('0x19')]=function(_0x3f942d,_0x46bcf0,_0x24655d,_0x2aa259,_0x48760f,_0x2e53da){var _0x1bbec1={'XMD-QUEUE':_0x46bcf0[_0x8bca('0x1a')]?_0x46bcf0[_0x8bca('0x1a')][_0x8bca('0x1b')]:'','XMD-CALLERID':_0x2aa259,'XMD-CALLERID-PREVIEW':_0x2e53da?util['format'](_0x8bca('0x15'),_0x2e53da['calleridname'],_0x2e53da[_0x8bca('0x1c')]):_0x2aa259,'XMD-DIALID':_0x48760f,'XMD-CONTACTID':_0x46bcf0[_0x8bca('0x1d')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x2aa259,'XMD-VOICEQUEUEID':_0x46bcf0[_0x8bca('0x1e')],'XMD-DIALCHANNEL':_0x24655d,'XMD-DIALTIMEOUT':_0x3f942d[_0x8bca('0x1f')]||0x1e,'XMD-DIALOPTIONS':util[_0x8bca('0x14')]('\x22rtTxX%s%s\x22',_0x3f942d['dialQueueProject2']?'g':'',_[_0x8bca('0x13')](_0x3f942d[_0x8bca('0x20')])?'':_0x8bca('0x21')),'XMD-DIALURL':_0x3f942d['dialPreviewUrl']||'','XMD-AGI':_0x3f942d[_0x8bca('0x22')]?util['format'](_0x8bca('0x23'),ipAgi,_0x3f942d[_0x8bca('0x22')]):_0x8bca('0x24'),'XMD-AGIAFTER':_0x3f942d[_0x8bca('0x25')]?util[_0x8bca('0x14')](_0x8bca('0x23'),ipAgi,_0x3f942d['dialQueueProject2']):'NONE','XMD-ORIGINATECALLERIDNUM':_0x2e53da?_0x2e53da[_0x8bca('0x26')]:'','XMD-ORIGINATECALLERIDNAME':_0x2e53da?_0x2e53da['originatecalleridname']:'','XMD-DESTINATION':_0x8bca('0x27')};if(!_[_0x8bca('0x13')](_0x3f942d[_0x8bca('0x20')])){_0x1bbec1[util[_0x8bca('0x14')]('%s',_0x8bca('0x28'))]=_0x3f942d[_0x8bca('0x20')];_0x1bbec1[util['format']('%s',_0x8bca('0x29'))]=_0x48760f;}if(_0x46bcf0&&_0x46bcf0[_0x8bca('0x2a')]){for(var _0x1221be in _0x46bcf0[_0x8bca('0x2a')]){if(_0x46bcf0['Contact'][_0x8bca('0x2b')](_0x1221be)){if(!_[_0x8bca('0x18')](_0x46bcf0['Contact'][_0x1221be])&&_0x1221be!=='id'&&_0x1221be!=='tags'&&_0x1221be!==_0x8bca('0x2c')&&_0x1221be!==_0x8bca('0x2d')){_0x1bbec1[util['format']('%s%s',_0x8bca('0x2e'),_[_0x8bca('0x2f')](_0x1221be))]=_0x46bcf0[_0x8bca('0x2a')][_0x1221be];}}}}return _0x1bbec1;};exports['toLowerVariables']=function(_0x33e5b3){var _0x5a929b={};for(var _0x5d27f6 in _0x33e5b3){if(_0x33e5b3['hasOwnProperty'](_0x5d27f6)){_0x5a929b[util[_0x8bca('0x14')]('%s',_[_0x8bca('0x30')](_0x5d27f6))]=_0x33e5b3[_0x5d27f6];}}return{'variables':_0x5a929b};};exports[_0x8bca('0x31')]=function(_0x4588f2,_0x50e4ff){if(!_[_0x8bca('0x18')](_0x4588f2)){if(_0x4588f2[_0x8bca('0x2b')](_0x8bca('0x32'))){if(_0x4588f2[_0x8bca('0x32')]>0x0){_0x4588f2[_0x8bca('0x32')]-=0x1;}else{logger['error']('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x50e4ff);}}}else{logger[_0x8bca('0x9')](_0x8bca('0x33'),_0x50e4ff);}};exports[_0x8bca('0x34')]=function(_0x41b79e){var _0x4dde42=moment()[_0x8bca('0x14')](_0x8bca('0x35'));_0x41b79e['state']=0xd;_0x41b79e[_0x8bca('0x36')]=_0x8bca('0x37');_0x41b79e['starttime']=_0x4dde42;_0x41b79e['responsetime']=_0x4dde42;_0x41b79e[_0x8bca('0x38')]=_0x4dde42;};exports[_0x8bca('0x39')]=function(_0x4f9cc2,_0x176c5f,_0x640962){var _0x2f6feb=moment()[_0x8bca('0x14')](_0x8bca('0x35'));_0x4f9cc2[_0x8bca('0x3a')]=_0x176c5f;_0x4f9cc2[_0x8bca('0x36')]=_0x640962;_0x4f9cc2['responsetime']=_0x2f6feb;_0x4f9cc2[_0x8bca('0x3b')]=getSeconds(_0x4f9cc2[_0x8bca('0x3c')],_0x4f9cc2[_0x8bca('0x3d')]);};exports[_0x8bca('0x3e')]=function(_0x5e58c1,_0x40dc04,_0xaff537){_0x5e58c1[_0x8bca('0x3f')]=_0x40dc04;_0x5e58c1['UserId']=_0xaff537;};exports[_0x8bca('0x40')]=function(_0x1758dd,_0x47fd2f,_0x37bb22){var _0x46ed98=moment()[_0x8bca('0x14')](_0x8bca('0x35'));_0x1758dd[_0x8bca('0x3a')]=_0x47fd2f;_0x1758dd['statedesc']=_0x37bb22;_0x1758dd['responsetime']=_0x1758dd[_0x8bca('0x3c')]?_0x1758dd['responsetime']:_0x46ed98;_0x1758dd[_0x8bca('0x38')]=_0x1758dd[_0x8bca('0x38')]?_0x1758dd[_0x8bca('0x38')]:_0x46ed98;_0x1758dd['ringtime']=getSeconds(_0x1758dd[_0x8bca('0x3c')]||0x0,_0x1758dd[_0x8bca('0x3d')]||0x0);_0x1758dd[_0x8bca('0x41')]=_0x1758dd[_0x8bca('0x42')]?getSeconds(_0x1758dd[_0x8bca('0x38')],_0x1758dd[_0x8bca('0x42')]):0x0;};exports['isFailure']=function(_0xb37498){return _0xb37498==='Failure';};exports[_0x8bca('0x43')]=function(_0x21682a,_0x85659a,_0x1d38da,_0x45b151,_0x450148){var _0x88e392=_0x45b151?'RECALL':_0x21682a[_0x8bca('0x44')];_0x88e392=_0x450148?'BOOKED':_0x88e392;return{'actionid':_0x21682a['uniqueid'],'action':_0x8bca('0x45'),'channel':_0x21682a[_0x8bca('0x46')],'callerid':util[_0x8bca('0x14')]('\x22%s\x22\x20<%s>',_0x88e392,_0x21682a[_0x8bca('0x1c')]),'Exten':_0x8bca('0x27'),'Context':_0x8bca('0x47'),'Priority':'1','variable':_0x1d38da,'timeout':(_0x85659a[_0x8bca('0x48')]||0x1e)*0x3e8,'async':!![],'channelid':_0x21682a[_0x8bca('0x49')]};};exports[_0x8bca('0x4a')]=function(_0x3fbc17){return _0x3fbc17[_0x8bca('0x4b')]+_0x3fbc17[_0x8bca('0x4c')]+_0x3fbc17[_0x8bca('0x4d')]+_0x3fbc17[_0x8bca('0x4e')]+_0x3fbc17[_0x8bca('0x4f')];};exports[_0x8bca('0x50')]=function(_0x54d184){var _0x2b5305=_[_0x8bca('0x51')](_0x54d184);_0x2b5305[_0x8bca('0x3a')]=0xf;_0x2b5305[_0x8bca('0x36')]=_0x8bca('0x52');return _0x2b5305;};exports[_0x8bca('0x53')]=function(_0x3ff6d6,_0x146ec4,_0x428c79){var _0x7c2a7={};_0x7c2a7[_0x146ec4]=_0x3ff6d6[_0x146ec4];_0x7c2a7[_0x8bca('0x54')]=![];_0x7c2a7[_0x8bca('0x55')]=moment()['add'](_0x428c79,_0x8bca('0x56'))[_0x8bca('0x14')](_0x8bca('0x35'));_0x7c2a7[_0x8bca('0x1d')]=_0x3ff6d6[_0x8bca('0x1d')];_0x7c2a7[_0x8bca('0x57')]=_0x3ff6d6[_0x8bca('0x57')];_0x7c2a7['VoiceQueueId']=_0x3ff6d6['VoiceQueueId']||undefined;return _0x7c2a7;};exports[_0x8bca('0x58')]=function(_0x4d8e61,_0x475077){if(!_['isNil'](_0x4d8e61)){if(_0x4d8e61[_0x8bca('0x59')]>0x0){_0x4d8e61[_0x8bca('0x59')]-=0x1;}else{logger['error'](_0x475077,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger['error'](_0x475077,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0x8bca('0x5a')]=function(_0x1f82ac){if(_0x1f82ac<=0x0){return!![];}return![];};exports['buildObj']=function(_0x246bd1,_0x3bf58b,_0x20162b){_0x246bd1[_0x8bca('0x5b')]=_0x3bf58b;_0x246bd1[_0x8bca('0x1b')]=_0x246bd1[_0x8bca('0x5c')];_0x246bd1[_0x8bca('0x5d')]=_0x246bd1[_0x8bca('0x46')];_0x246bd1['motionChannel']=_0x8bca('0x5e');if(_0x20162b){_0x246bd1[_0x8bca('0x5f')]=_0x20162b[_0x8bca('0x5f')];}return _0x246bd1;};exports[_0x8bca('0x60')]=function(_0x1e1a69){var _0x3f37f7={};_0x3f37f7[_0x8bca('0x5c')]=_0x1e1a69[_0x8bca('0x5c')];_0x3f37f7[_0x8bca('0x5d')]=_0x1e1a69['channelAgent'];_0x3f37f7[_0x8bca('0x49')]=_0x1e1a69[_0x8bca('0x49')];return _0x3f37f7;};exports[_0x8bca('0x61')]=function(_0x56da4b){var _0x18a1c2=[];for(var _0x28685c in _0x56da4b){if(_0x56da4b[_0x8bca('0x2b')](_0x28685c)){if(!_[_0x8bca('0x18')](_0x56da4b[_0x28685c])&&_0x56da4b[_0x28685c]['state']===_0x8bca('0x62')&&_0x56da4b[_0x28685c][_0x8bca('0x63')]===_0x8bca('0x64')){_0x18a1c2[_0x8bca('0x65')](_0x56da4b[_0x28685c]['id']);}}}return _0x18a1c2;};exports[_0x8bca('0x66')]=function(_0x20946e){var _0x51ad88=moment()['milliseconds'](0x0);var _0x1ae5de=moment(_0x20946e)['milliseconds'](0x0);return _0x51ad88['diff'](_0x1ae5de,_0x8bca('0x7'));};exports[_0x8bca('0x67')]=function(_0x575f00){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x575f00['ContactId'],'ListId':_0x575f00['ListId'],'VoiceQueueId':_0x575f00[_0x8bca('0x1e')]||undefined,'CampaignId':_0x575f00[_0x8bca('0x68')]||undefined};};exports[_0x8bca('0x69')]=function(_0x4a3145){if(_0x4a3145==='uniqueid'||_0x4a3145===_0x8bca('0x6a')||_0x4a3145==='queue'||_0x4a3145===_0x8bca('0x6b')||_0x4a3145==='campaigntype'||_0x4a3145==='dialAnswer'||_0x4a3145===_0x8bca('0x3f')||_0x4a3145===_0x8bca('0x46')||_0x4a3145==='calleridname'||_0x4a3145===_0x8bca('0x54')||_0x4a3145===_0x8bca('0x1c')||_0x4a3145===_0x8bca('0x55')||_0x4a3145===_0x8bca('0x4b')||_0x4a3145===_0x8bca('0x4c')||_0x4a3145==='countnoanswerretry'||_0x4a3145===_0x8bca('0x6c')||_0x4a3145===_0x8bca('0x6d')||_0x4a3145==='callbackuniqueid'||_0x4a3145===_0x8bca('0x6e')||_0x4a3145===_0x8bca('0x6f')||_0x4a3145===_0x8bca('0x1d')||_0x4a3145===_0x8bca('0x57')||_0x4a3145==='UserId'||_0x4a3145===_0x8bca('0x1e')||_0x4a3145===_0x8bca('0x70')||_0x4a3145===_0x8bca('0x71')||_0x4a3145===_0x8bca('0x72')||_0x4a3145==='xmd-phone'||_0x4a3145===_0x8bca('0x73')||_0x4a3145===_0x8bca('0x74')||_0x4a3145===_0x8bca('0x75')||_0x4a3145===_0x8bca('0x76')||_0x4a3145===_0x8bca('0x77')||_0x4a3145===_0x8bca('0x78')||_0x4a3145===_0x8bca('0x79')||_0x4a3145===_0x8bca('0x7a')||_0x4a3145==='xmd-callerid'||_0x4a3145===_0x8bca('0x7b')||_0x4a3145===_0x8bca('0x7c')||_0x4a3145===_0x8bca('0x7d')||_0x4a3145===_0x8bca('0x7e')||_0x4a3145===_0x8bca('0x7f')||_0x4a3145===_0x8bca('0x80')||_0x4a3145===_0x8bca('0x81')||_0x4a3145===_0x8bca('0x82')||_0x4a3145===_0x8bca('0x83')||_0x4a3145===_0x8bca('0x84')||_0x4a3145==='rtpaudioqos'||_0x4a3145===_0x8bca('0x7e')||_0x4a3145===_0x8bca('0x7f')||_0x4a3145===_0x8bca('0x80')||_0x4a3145===_0x8bca('0x81')||_0x4a3145==='rtpaudioqoslossbridged'||_0x4a3145===_0x8bca('0x83')||_0x4a3145===_0x8bca('0x84')||_0x4a3145===_0x8bca('0x85')||_0x4a3145===_0x8bca('0x86')||_0x4a3145===_0x8bca('0x3a')||_0x4a3145===_0x8bca('0x36')){return![];}return!![];};exports[_0x8bca('0x87')]=function(_0x390bd0,_0x2c9a5e){var _0x1e912,_0x37a40f,_0x337a80;if(_0x2c9a5e<=0x0){_0x2c9a5e=0x1;}_0x1e912=new RegExp(_0x8bca('0x88')+_0x2c9a5e+'}$');_0x37a40f=Math['pow'](0xa,_0x2c9a5e-0x1);_0x337a80=Math[_0x8bca('0x89')](0xa,_0x2c9a5e)-0x1;return util['format']('%s',_[_0x8bca('0x8a')](_0x390bd0,_0x1e912,_[_0x8bca('0x8b')](_0x37a40f,_0x337a80)));};exports[_0x8bca('0x8c')]=function(_0xd1f862){var _0x3b969b=_0xd1f862[_0x8bca('0x8d')](/"(.*?)"/);return _0x3b969b?_0x3b969b[0x1]:_0xd1f862;};exports[_0x8bca('0x8e')]=function(_0x40ccad){var _0x5c4671=_0x40ccad[_0x8bca('0x8d')](/<(.*?)>/);return _0x5c4671?_0x5c4671[0x1]:_0x40ccad;};
\ No newline at end of file
index 3fb7d61..ea8f16c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb198=['string','boolean','queueremove','queuepause','voicequeuechannel','voicequeuechannelredirect','queueadd'];(function(_0x179d86,_0x139c2c){var _0x437ec7=function(_0x6fc453){while(--_0x6fc453){_0x179d86['push'](_0x179d86['shift']());}};_0x437ec7(++_0x139c2c);}(_0xb198,0x110));var _0x8b19=function(_0x59e27a,_0x5b404e){_0x59e27a=_0x59e27a-0x0;var _0x3b452f=_0xb198[_0x59e27a];return _0x3b452f;};'use strict';exports[_0x8b19('0x0')]={'queue':{'type':_0x8b19('0x1'),'required':!![]},'interface':{'type':_0x8b19('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0x8b19('0x2'),'required':![]}};exports[_0x8b19('0x3')]={'queue':{'type':_0x8b19('0x1'),'required':!![]},'interface':{'type':_0x8b19('0x1'),'required':!![]}};exports[_0x8b19('0x4')]={'interface':{'type':_0x8b19('0x1'),'required':!![]},'paused':{'type':_0x8b19('0x2')},'reason':{'type':_0x8b19('0x1'),'required':![]}};exports['reload']={'module':{'type':_0x8b19('0x1'),'required':![]}};exports[_0x8b19('0x5')]={'uniqueid':{'type':_0x8b19('0x1'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':_0x8b19('0x1'),'required':!![]},'filename':{'type':_0x8b19('0x1')},'format':{'type':_0x8b19('0x1')},'mixmonitorid':{'type':_0x8b19('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0x8b19('0x1'),'required':!![]}};exports[_0x8b19('0x6')]={'uniqueid':{'type':_0x8b19('0x1'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0x8b19('0x1')}};
\ No newline at end of file
+var _0x3b70=['string','number','boolean','queueremove','reload','voicechannel','voicequeuechannelredirect','queueadd'];(function(_0x330581,_0x3c0220){var _0x3b3d59=function(_0x39b6d9){while(--_0x39b6d9){_0x330581['push'](_0x330581['shift']());}};_0x3b3d59(++_0x3c0220);}(_0x3b70,0x1bf));var _0x03b7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x3b70[_0x2dafbe];return _0x58a45a;};'use strict';exports[_0x03b7('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0x03b7('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0x03b7('0x2'),'required':![]},'paused':{'type':_0x03b7('0x3'),'required':![]}};exports[_0x03b7('0x4')]={'queue':{'type':_0x03b7('0x1'),'required':!![]},'interface':{'type':_0x03b7('0x1'),'required':!![]}};exports['queuepause']={'interface':{'type':_0x03b7('0x1'),'required':!![]},'paused':{'type':_0x03b7('0x3')},'reason':{'type':_0x03b7('0x1'),'required':![]}};exports[_0x03b7('0x5')]={'module':{'type':_0x03b7('0x1'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0x03b7('0x1'),'required':!![]}};exports[_0x03b7('0x6')]={'uniqueid':{'type':_0x03b7('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0x03b7('0x1')},'mixmonitorid':{'type':_0x03b7('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0x03b7('0x1'),'required':!![]}};exports[_0x03b7('0x7')]={'uniqueid':{'type':_0x03b7('0x1'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':'string'}};
\ No newline at end of file
index d021214..19e10ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3843=['queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','total','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','dialQueueProject','SquareProject','initCampaignHopperHistory','merge','initFaxAccounts','exports','bluebird','lodash','moment','../model/telephone','../model/trunk','../model/voiceQueue','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/freshsalesAccount','telephones','trunks','voiceQueues','triggers','campaigns','templates','outbound','voiceExtensions','channels','queueChannels','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','deskAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','hasOwnProperty','mapKeys','format','SIP/%s','name','isNil','interface','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','unmanaged','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','prototype','length','isUndefined','agents','mergeFromDatabase','initVoiceQueues','initTriggers','initFreshdeskAccounts','initZohoAccounts','zohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','vtigerAccounts','initDynamics365Accounts','freshsalesAccounts','groupBy','uniqueid','queue','queuecallerexit'];(function(_0x261b8a,_0x553ec4){var _0x3455e8=function(_0xdf10d4){while(--_0xdf10d4){_0x261b8a['push'](_0x261b8a['shift']());}};_0x3455e8(++_0x553ec4);}(_0x3843,0x13b));var _0x3384=function(_0x8a4cc1,_0x44e867){_0x8a4cc1=_0x8a4cc1-0x0;var _0x45fab9=_0x3843[_0x8a4cc1];return _0x45fab9;};'use strict';var BPromise=require(_0x3384('0x0'));var util=require('util');var _=require(_0x3384('0x1'));var moment=require(_0x3384('0x2'));var Agent=require('../model/agent');var Telephone=require(_0x3384('0x3'));var Trunk=require(_0x3384('0x4'));var VoiceQueue=require(_0x3384('0x5'));var Trigger=require('../model/trigger');var Template=require(_0x3384('0x6'));var Campaign=require(_0x3384('0x7'));var VoiceExtension=require(_0x3384('0x8'));var ZendeskAccount=require(_0x3384('0x9'));var SalesforceAccount=require(_0x3384('0xa'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x3384('0xb'));var DeskAccount=require(_0x3384('0xc'));var VtigerAccount=require(_0x3384('0xd'));var ServicenowAccount=require(_0x3384('0xe'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0x3384('0xf'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this['agents']={};this[_0x3384('0x10')]={};this[_0x3384('0x11')]={};this[_0x3384('0x12')]={};this[_0x3384('0x13')]={};this[_0x3384('0x14')]={};this[_0x3384('0x15')]={};this[_0x3384('0x16')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x3384('0x17')]={};this[_0x3384('0x18')]={};this[_0x3384('0x19')]={};this['outboundChannels']={};this['timers']={};this[_0x3384('0x1a')]={};this[_0x3384('0x1b')]={};this[_0x3384('0x1c')]={};this[_0x3384('0x1d')]={};this[_0x3384('0x1e')]={};this['zohoAccounts']={};this[_0x3384('0x1f')]={};this['vtigerAccounts']={};this[_0x3384('0x20')]={};this[_0x3384('0x21')]={};this['freshsalesAccounts']={};this[_0x3384('0x22')]={};};function freeIsNotKey(_0x9d003c,_0x11e90d,_0x2c60a2){var _0x57443c=_['mapKeys'](_0x9d003c,function(_0xf82e3,_0x55478c){return _0xf82e3[_0x2c60a2];});for(var _0xf62915 in _0x11e90d){if(_0x11e90d[_0x3384('0x23')](_0xf62915)){if(!_0x57443c[_0xf62915]){delete _0x11e90d[_0xf62915];}}}}function freeIsNotKeySip(_0x5b0d89,_0x4bb20d){var _0x504daf=_[_0x3384('0x24')](_0x5b0d89,function(_0x3e6942,_0x1ac8e8){return util[_0x3384('0x25')](_0x3384('0x26'),_0x3e6942[_0x3384('0x27')]);});for(var _0x27c5b3 in _0x4bb20d){if(_0x4bb20d['hasOwnProperty'](_0x27c5b3)){if(!_0x504daf[_0x27c5b3]){delete _0x4bb20d[_0x27c5b3];}}}}function freeIsNotKeyAgent(_0x51e547,_0x36ded3){var _0xaca5b1=_['mapKeys'](_0x51e547,function(_0x4ce06c,_0x414ebf){var _0x308f2=_[_0x3384('0x28')](_0x4ce06c[_0x3384('0x29')])?util[_0x3384('0x25')](_0x3384('0x26'),_0x4ce06c[_0x3384('0x27')]):_0x4ce06c[_0x3384('0x29')];return _0x308f2;});for(var _0x82be20 in _0x36ded3){if(_0x36ded3[_0x3384('0x23')](_0x82be20)){if(!_0xaca5b1[_0x82be20]){delete _0x36ded3[_0x82be20];}}}}function clearVoiceCallReports(_0xd7ffa0){_0xd7ffa0['total']=0x0;_0xd7ffa0[_0x3384('0x2a')]=0x0;_0xd7ffa0[_0x3384('0x2b')]=0x0;_0xd7ffa0[_0x3384('0x2c')]=0x0;_0xd7ffa0[_0x3384('0x2d')]=0x0;}function clearCampaigns(_0x832910){if(!_[_0x3384('0x2e')](_0x832910)){for(var _0x2e5622 in _0x832910){if(_0x832910[_0x3384('0x23')](_0x2e5622)){_0x832910[_0x2e5622][_0x3384('0x2f')]=0x0;_0x832910[_0x2e5622]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x5a73c1){if(!_[_0x3384('0x2e')](_0x5a73c1)){for(var _0x3a4ec3 in _0x5a73c1){if(_0x5a73c1['hasOwnProperty'](_0x3a4ec3)){_0x5a73c1[_0x3a4ec3]['total']=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x2a')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x30')]=0x0;_0x5a73c1[_0x3a4ec3]['abandoned']=0x0;_0x5a73c1[_0x3a4ec3]['sumHoldTime']=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x2c')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x2d')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x31')]=0x0;_0x5a73c1[_0x3a4ec3]['outboundNoAnswerCallsDay']=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x32')]=0x0;_0x5a73c1[_0x3a4ec3]['outboundCongestionCallsDay']=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x33')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x34')]=0x0;_0x5a73c1[_0x3a4ec3]['outboundDropCallsDayTimeout']=0x0;_0x5a73c1[_0x3a4ec3]['outboundDropCallsDayCallersExit']=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x35')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x36')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x37')]=0x0;_0x5a73c1[_0x3a4ec3]['outboundReCallsDay']=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x31')]=0x0;_0x5a73c1[_0x3a4ec3][_0x3384('0x38')]=0x0;_0x5a73c1[_0x3a4ec3]['queueStatusComplete']=!![];}}}}Realtime[_0x3384('0x39')]['mergeFromDatabase']=function(_0x171dfe,_0x59cbcf){for(var _0x3c5ce9 in _0x59cbcf){if(_0x171dfe['hasOwnProperty'](_0x3c5ce9)){_0x171dfe[_0x3c5ce9]=_0x59cbcf[_0x3c5ce9];}}};Realtime['prototype']['initAgents']=function(){var _0x1bc546=this;return function(_0x186402){if(_0x186402){freeIsNotKeyAgent(_0x186402,_0x1bc546['agents']);for(var _0x58f2ba=0x0,_0xe7c0d9={},_0x822a87={};_0x58f2ba<_0x186402[_0x3384('0x3a')];_0x58f2ba+=0x1){_0xe7c0d9=_0x186402[_0x58f2ba];var _0x2e8324=_[_0x3384('0x28')](_0xe7c0d9[_0x3384('0x29')])?util[_0x3384('0x25')](_0x3384('0x26'),_0xe7c0d9[_0x3384('0x27')]):_0xe7c0d9['interface'];if(_[_0x3384('0x3b')](_0x1bc546[_0x3384('0x3c')][_0x2e8324])){_0x1bc546['agents'][_0x2e8324]=new Agent(_0xe7c0d9);}else{_0x1bc546[_0x3384('0x3d')](_0x1bc546['agents'][_0x2e8324],_0xe7c0d9);}}}return _0x1bc546[_0x3384('0x3c')];};};Realtime[_0x3384('0x39')]['initTelephones']=function(){var _0x241149=this;return function(_0x165b20){if(_0x165b20){freeIsNotKeySip(_0x165b20,_0x241149[_0x3384('0x10')]);for(var _0x2ac9a9=0x0,_0x29dd8b={},_0x38bccb={};_0x2ac9a9<_0x165b20[_0x3384('0x3a')];_0x2ac9a9+=0x1){_0x29dd8b=_0x165b20[_0x2ac9a9];if(_[_0x3384('0x3b')](_0x241149[_0x3384('0x10')][util[_0x3384('0x25')](_0x3384('0x26'),_0x29dd8b[_0x3384('0x27')])])){_0x241149[_0x3384('0x10')][util['format']('SIP/%s',_0x29dd8b[_0x3384('0x27')])]=new Telephone(_0x29dd8b);}else{_0x241149[_0x3384('0x3d')](_0x241149['telephones'][util[_0x3384('0x25')]('SIP/%s',_0x29dd8b[_0x3384('0x27')])],_0x29dd8b);}}}return _0x241149['telephones'];};};Realtime['prototype']['initTrunks']=function(){var _0x539763=this;return function(_0x5252bb){if(_0x5252bb){freeIsNotKeySip(_0x5252bb,_0x539763['trunks']);for(var _0x47c8e1=0x0,_0x1708dc={},_0x12c33e={};_0x47c8e1<_0x5252bb[_0x3384('0x3a')];_0x47c8e1+=0x1){_0x1708dc=_0x5252bb[_0x47c8e1];if(_[_0x3384('0x3b')](_0x539763['trunks'][util[_0x3384('0x25')]('SIP/%s',_0x1708dc[_0x3384('0x27')])])){_0x539763[_0x3384('0x11')][util['format'](_0x3384('0x26'),_0x1708dc[_0x3384('0x27')])]=new Trunk(_0x1708dc);}else{_0x539763[_0x3384('0x3d')](_0x539763[_0x3384('0x11')][util[_0x3384('0x25')](_0x3384('0x26'),_0x1708dc['name'])],_0x1708dc);}}}return _0x539763[_0x3384('0x11')];};};Realtime[_0x3384('0x39')][_0x3384('0x3e')]=function(){var _0x5c6a4b=this;return function(_0x3127c2){if(_0x3127c2){freeIsNotKey(_0x3127c2,_0x5c6a4b['voiceQueues'],'name');for(var _0x46fb33=0x0,_0xd82341={},_0x18a99e={};_0x46fb33<_0x3127c2[_0x3384('0x3a')];_0x46fb33+=0x1){_0xd82341=_0x3127c2[_0x46fb33];if(_[_0x3384('0x3b')](_0x5c6a4b['voiceQueues'][_0xd82341[_0x3384('0x27')]])){_0x5c6a4b[_0x3384('0x12')][_0xd82341[_0x3384('0x27')]]=new VoiceQueue(_0xd82341);}else{_0x5c6a4b[_0x3384('0x3d')](_0x5c6a4b[_0x3384('0x12')][_0xd82341[_0x3384('0x27')]],_0xd82341);}}}return _0x5c6a4b[_0x3384('0x12')];};};Realtime[_0x3384('0x39')][_0x3384('0x3f')]=function(){var _0x201704=this;return function(_0x298634){if(_0x298634){freeIsNotKey(_0x298634,_0x201704[_0x3384('0x13')],'id');for(var _0x3644a5=0x0,_0x43fc57={},_0x395b52={};_0x3644a5<_0x298634[_0x3384('0x3a')];_0x3644a5+=0x1){_0x43fc57=_0x298634[_0x3644a5];if(_[_0x3384('0x3b')](_0x201704['triggers'][_0x43fc57['id']])){_0x201704[_0x3384('0x13')][_0x43fc57['id']]=new Trigger(_0x43fc57);}else{_0x201704[_0x3384('0x3d')](_0x201704[_0x3384('0x13')][_0x43fc57['id']],_0x43fc57);}}}return _0x201704[_0x3384('0x13')];};};Realtime[_0x3384('0x39')]['initTemplates']=function(){var _0x1602c4=this;return function(_0x3213da){if(_0x3213da){freeIsNotKey(_0x3213da,_0x1602c4[_0x3384('0x15')],'id');for(var _0x2c7946=0x0,_0x76d89e={},_0x4e4989={};_0x2c7946<_0x3213da[_0x3384('0x3a')];_0x2c7946+=0x1){_0x76d89e=_0x3213da[_0x2c7946];if(_[_0x3384('0x3b')](_0x1602c4['templates'][_0x76d89e['id']])){_0x1602c4[_0x3384('0x15')][_0x76d89e['id']]=new Template(_0x76d89e);}else{_0x1602c4[_0x3384('0x3d')](_0x1602c4[_0x3384('0x15')][_0x76d89e['id']],_0x76d89e);}}}return _0x1602c4[_0x3384('0x15')];};};Realtime['prototype']['initZendeskAccounts']=function(){var _0x2a7696=this;return function(_0x288c9a){if(_0x288c9a){freeIsNotKey(_0x288c9a,_0x2a7696[_0x3384('0x1b')],'id');for(var _0x3da069=0x0,_0x22202d={},_0x454230={};_0x3da069<_0x288c9a[_0x3384('0x3a')];_0x3da069+=0x1){_0x22202d=_0x288c9a[_0x3da069];if(_[_0x3384('0x3b')](_0x2a7696[_0x3384('0x1b')][_0x22202d['id']])){_0x2a7696[_0x3384('0x1b')][_0x22202d['id']]=new ZendeskAccount(_0x22202d);}else{_0x2a7696['mergeFromDatabase'](_0x2a7696[_0x3384('0x1b')][_0x22202d['id']],_0x22202d);}}}return _0x2a7696[_0x3384('0x1b')];};};Realtime['prototype']['initSalesforceAccounts']=function(){var _0xcffe23=this;return function(_0x1c4803){if(_0x1c4803){freeIsNotKey(_0x1c4803,_0xcffe23[_0x3384('0x1c')],'id');for(var _0x4d9048=0x0,_0x4a49d8={},_0x4bfa74={};_0x4d9048<_0x1c4803[_0x3384('0x3a')];_0x4d9048+=0x1){_0x4a49d8=_0x1c4803[_0x4d9048];if(_[_0x3384('0x3b')](_0xcffe23['salesforceAccounts'][_0x4a49d8['id']])){_0xcffe23[_0x3384('0x1c')][_0x4a49d8['id']]=new SalesforceAccount(_0x4a49d8);}else{_0xcffe23[_0x3384('0x3d')](_0xcffe23[_0x3384('0x1c')][_0x4a49d8['id']],_0x4a49d8);}}}return _0xcffe23[_0x3384('0x1c')];};};Realtime[_0x3384('0x39')][_0x3384('0x40')]=function(){var _0x46b76b=this;return function(_0x5b93d6){if(_0x5b93d6){freeIsNotKey(_0x5b93d6,_0x46b76b[_0x3384('0x1e')],'id');for(var _0x25719a=0x0,_0x373183={},_0x558b0f={};_0x25719a<_0x5b93d6['length'];_0x25719a+=0x1){_0x373183=_0x5b93d6[_0x25719a];if(_[_0x3384('0x3b')](_0x46b76b[_0x3384('0x1e')][_0x373183['id']])){_0x46b76b[_0x3384('0x1e')][_0x373183['id']]=new FreshdeskAccount(_0x373183);}else{_0x46b76b[_0x3384('0x3d')](_0x46b76b['freshdeskAccounts'][_0x373183['id']],_0x373183);}}}return _0x46b76b[_0x3384('0x1e')];};};Realtime[_0x3384('0x39')][_0x3384('0x41')]=function(){var _0x1d9453=this;return function(_0x3138d3){if(_0x3138d3){freeIsNotKey(_0x3138d3,_0x1d9453[_0x3384('0x42')],'id');for(var _0x1c7e80=0x0,_0x8ffd9e={},_0x5d6e31={};_0x1c7e80<_0x3138d3[_0x3384('0x3a')];_0x1c7e80+=0x1){_0x8ffd9e=_0x3138d3[_0x1c7e80];if(_[_0x3384('0x3b')](_0x1d9453[_0x3384('0x42')][_0x8ffd9e['id']])){_0x1d9453[_0x3384('0x42')][_0x8ffd9e['id']]=new ZohoAccount(_0x8ffd9e);}else{_0x1d9453[_0x3384('0x3d')](_0x1d9453[_0x3384('0x42')][_0x8ffd9e['id']],_0x8ffd9e);}}}return _0x1d9453['zohoAccounts'];};};Realtime[_0x3384('0x39')][_0x3384('0x43')]=function(){var _0x4bb151=this;return function(_0x32a25a){if(_0x32a25a){freeIsNotKey(_0x32a25a,_0x4bb151['deskAccounts'],'id');for(var _0x4e7fd3=0x0,_0x345df0={},_0x4afc8a={};_0x4e7fd3<_0x32a25a[_0x3384('0x3a')];_0x4e7fd3+=0x1){_0x345df0=_0x32a25a[_0x4e7fd3];if(_[_0x3384('0x3b')](_0x4bb151['deskAccounts'][_0x345df0['id']])){_0x4bb151[_0x3384('0x1f')][_0x345df0['id']]=new DeskAccount(_0x345df0);}else{_0x4bb151[_0x3384('0x3d')](_0x4bb151[_0x3384('0x1f')][_0x345df0['id']],_0x345df0);}}}return _0x4bb151[_0x3384('0x1f')];};};Realtime[_0x3384('0x39')][_0x3384('0x44')]=function(){var _0xa4b8cb=this;return function(_0x91dd0f){if(_0x91dd0f){freeIsNotKey(_0x91dd0f,_0xa4b8cb['sugarcrmAccounts'],'id');for(var _0x49c398=0x0,_0x5c3e27={},_0x168346={};_0x49c398<_0x91dd0f['length'];_0x49c398+=0x1){_0x5c3e27=_0x91dd0f[_0x49c398];if(_[_0x3384('0x3b')](_0xa4b8cb['sugarcrmAccounts'][_0x5c3e27['id']])){_0xa4b8cb['sugarcrmAccounts'][_0x5c3e27['id']]=new SugarcrmAccount(_0x5c3e27);}else{_0xa4b8cb['mergeFromDatabase'](_0xa4b8cb[_0x3384('0x1d')][_0x5c3e27['id']],_0x5c3e27);}}}return _0xa4b8cb[_0x3384('0x1d')];};};Realtime[_0x3384('0x39')][_0x3384('0x45')]=function(){var _0x2ba339=this;return function(_0x23a042){if(_0x23a042){freeIsNotKey(_0x23a042,_0x2ba339[_0x3384('0x46')],'id');for(var _0x4acfe6=0x0,_0x144ce4={},_0x349c39={};_0x4acfe6<_0x23a042[_0x3384('0x3a')];_0x4acfe6+=0x1){_0x144ce4=_0x23a042[_0x4acfe6];if(_['isUndefined'](_0x2ba339['vtigerAccounts'][_0x144ce4['id']])){_0x2ba339[_0x3384('0x46')][_0x144ce4['id']]=new VtigerAccount(_0x144ce4);}else{_0x2ba339['mergeFromDatabase'](_0x2ba339[_0x3384('0x46')][_0x144ce4['id']],_0x144ce4);}}}return _0x2ba339['vtigerAccounts'];};};Realtime[_0x3384('0x39')]['initServicenowAccounts']=function(){var _0x3c6c6d=this;return function(_0x412ce3){if(_0x412ce3){freeIsNotKey(_0x412ce3,_0x3c6c6d[_0x3384('0x20')],'id');for(var _0x2b430e=0x0,_0x22bb4b={},_0x3ff12d={};_0x2b430e<_0x412ce3[_0x3384('0x3a')];_0x2b430e+=0x1){_0x22bb4b=_0x412ce3[_0x2b430e];if(_['isUndefined'](_0x3c6c6d[_0x3384('0x20')][_0x22bb4b['id']])){_0x3c6c6d['servicenowAccounts'][_0x22bb4b['id']]=new ServicenowAccount(_0x22bb4b);}else{_0x3c6c6d[_0x3384('0x3d')](_0x3c6c6d[_0x3384('0x20')][_0x22bb4b['id']],_0x22bb4b);}}}return _0x3c6c6d[_0x3384('0x20')];};};Realtime[_0x3384('0x39')][_0x3384('0x47')]=function(){var _0x5b12d4=this;return function(_0x35bb99){if(_0x35bb99){freeIsNotKey(_0x35bb99,_0x5b12d4[_0x3384('0x21')],'id');for(var _0x344c53=0x0,_0x23baa={},_0x1562bb={};_0x344c53<_0x35bb99[_0x3384('0x3a')];_0x344c53+=0x1){_0x23baa=_0x35bb99[_0x344c53];if(_[_0x3384('0x3b')](_0x5b12d4['dynamics365Accounts'][_0x23baa['id']])){_0x5b12d4['dynamics365Accounts'][_0x23baa['id']]=new Dynamics365Account(_0x23baa);}else{_0x5b12d4[_0x3384('0x3d')](_0x5b12d4[_0x3384('0x21')][_0x23baa['id']],_0x23baa);}}}return _0x5b12d4[_0x3384('0x21')];};};Realtime[_0x3384('0x39')]['initFreshsalesAccounts']=function(){var _0x366fb4=this;return function(_0x5f78ff){if(_0x5f78ff){freeIsNotKey(_0x5f78ff,_0x366fb4[_0x3384('0x48')],'id');for(var _0xc4fa75=0x0,_0x449863={},_0x340b54={};_0xc4fa75<_0x5f78ff[_0x3384('0x3a')];_0xc4fa75+=0x1){_0x449863=_0x5f78ff[_0xc4fa75];if(_[_0x3384('0x3b')](_0x366fb4[_0x3384('0x48')][_0x449863['id']])){_0x366fb4[_0x3384('0x48')][_0x449863['id']]=new FreshsalesAccount(_0x449863);}else{_0x366fb4[_0x3384('0x3d')](_0x366fb4[_0x3384('0x48')][_0x449863['id']],_0x449863);}}}return _0x366fb4[_0x3384('0x48')];};};Realtime[_0x3384('0x39')]['initVoiceQueueHopperHistory']=function(){var _0x5a4706=this;return function(_0x88edd9){for(var _0x1e834a=0x0;_0x1e834a<_0x88edd9[_0x3384('0x3a')];_0x1e834a+=0x1){_['merge'](_0x5a4706[_0x3384('0x12')][_0x88edd9[_0x1e834a]['name']],_0x88edd9[_0x1e834a]);}return _0x5a4706[_0x3384('0x12')];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0x427eaa=this;return function(_0xdc78d3){clearVoiceQueues(_0x427eaa[_0x3384('0x12')]);if(_0xdc78d3){_0xdc78d3=_[_0x3384('0x49')](_0xdc78d3,_0x3384('0x4a'));for(var _0x317656 in _0xdc78d3){if(_0xdc78d3[_0x3384('0x23')](_0x317656)){var _0x539a1f={};for(var _0xe0e16a=0x0;_0xe0e16a<_0xdc78d3[_0x317656][_0x3384('0x3a')];_0xe0e16a+=0x1){var _0x12a15b=_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x4b')];if(_0x427eaa[_0x3384('0x12')][_0x12a15b]){if(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x4c')]){_0x427eaa[_0x3384('0x12')][_0x12a15b][_0x3384('0x30')]+=0x1;}if(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x4d')]){_0x427eaa['voiceQueues'][_0x12a15b]['abandoned']+=0x1;}_0x427eaa[_0x3384('0x12')][_0x12a15b][_0x3384('0x2b')]+=moment(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x4e')])[_0x3384('0x4f')](moment(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x50')]),_0x3384('0x51'))||0x0;if(_0xe0e16a===_0xdc78d3[_0x317656][_0x3384('0x3a')]-0x1){_0x427eaa[_0x3384('0x12')][_0x12a15b]['sumDuration']+=moment(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x52')]||_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x53')]||_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x54')])['diff'](moment(_0xdc78d3[_0x317656][_0xe0e16a]['queuecallerjoinAt']),_0x3384('0x51'))||0x0;_0x427eaa['voiceQueues'][_0x12a15b][_0x3384('0x55')]+=0x1;if(_0xdc78d3[_0x317656][_0xe0e16a]['queuecallercomplete']){_0x427eaa['voiceQueues'][_0x12a15b]['answered']+=0x1;_0x427eaa[_0x3384('0x12')][_0x12a15b]['sumBillable']+=moment(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x52')])[_0x3384('0x4f')](moment(_0xdc78d3[_0x317656][_0xe0e16a][_0x3384('0x4e')]),_0x3384('0x51'))||0x0;}}else{_0x427eaa[_0x3384('0x12')][_0x12a15b]['sumDuration']+=_0x427eaa['voiceQueues'][_0x12a15b][_0x3384('0x2b')]||0x0;}}}}}}return _0x427eaa[_0x3384('0x12')];};};Realtime[_0x3384('0x39')][_0x3384('0x56')]=function(){var _0x101ce3=this;return function(_0x4d72f2){clearVoiceCallReports(_0x101ce3['outbound']);if(_0x4d72f2){for(var _0x3b1fd5=0x0;_0x3b1fd5<_0x4d72f2[_0x3384('0x3a')];_0x3b1fd5+=0x1){_0x101ce3[_0x3384('0x16')][_0x3384('0x55')]+=0x1;_0x101ce3[_0x3384('0x16')][_0x3384('0x2c')]+=_0x4d72f2[_0x3b1fd5][_0x3384('0x57')];if(_0x4d72f2[_0x3b1fd5][_0x3384('0x58')]===_0x3384('0x59')){_0x101ce3[_0x3384('0x16')][_0x3384('0x2a')]+=0x1;_0x101ce3['outbound'][_0x3384('0x2b')]+=_0x4d72f2[_0x3b1fd5]['duration']-_0x4d72f2[_0x3b1fd5][_0x3384('0x5a')]||0x0;_0x101ce3[_0x3384('0x16')][_0x3384('0x2d')]+=_0x4d72f2[_0x3b1fd5][_0x3384('0x5a')];}}}return _0x101ce3['outbound'];};};Realtime[_0x3384('0x39')][_0x3384('0x5b')]=function(){var _0x457280=this;return function(_0x4ffa3f){if(_0x4ffa3f){freeIsNotKey(_0x4ffa3f,_0x457280[_0x3384('0x14')],_0x3384('0x27'));for(var _0x437d57=0x0,_0x527bd3={};_0x437d57<_0x4ffa3f[_0x3384('0x3a')];_0x437d57+=0x1){_0x527bd3=_0x4ffa3f[_0x437d57];if(_['isUndefined'](_0x457280[_0x3384('0x14')][_0x527bd3[_0x3384('0x27')]])){_0x457280[_0x3384('0x14')][_0x527bd3['name']]=new Campaign(_0x527bd3);}else{_0x457280[_0x3384('0x3d')](_0x457280['campaigns'][_0x527bd3[_0x3384('0x27')]],_0x527bd3);_0x457280[_0x3384('0x14')][_0x527bd3[_0x3384('0x27')]][_0x3384('0x5c')]=_0x527bd3[_0x3384('0x5d')]?_0x527bd3[_0x3384('0x5d')][_0x3384('0x27')]:undefined;}}}return _0x457280[_0x3384('0x14')];};};Realtime[_0x3384('0x39')]['initVoiceExtensions']=function(){var _0x4abaf4=this;return function(_0x1d7f01){if(_0x1d7f01){freeIsNotKey(_0x1d7f01,_0x4abaf4[_0x3384('0x17')],'id');for(var _0x2b38ba=0x0,_0x4200a1={};_0x2b38ba<_0x1d7f01[_0x3384('0x3a')];_0x2b38ba+=0x1){_0x4200a1=_0x1d7f01[_0x2b38ba];if(_[_0x3384('0x3b')](_0x4abaf4[_0x3384('0x17')][_0x4200a1['id']])){_0x4abaf4[_0x3384('0x17')][_0x4200a1['id']]=new VoiceExtension(_0x4200a1);}else{_0x4abaf4[_0x3384('0x3d')](_0x4abaf4[_0x3384('0x17')][_0x4200a1['id']],_0x4200a1);}}}return _0x4abaf4[_0x3384('0x17')];};};Realtime[_0x3384('0x39')][_0x3384('0x5e')]=function(){var _0x400a7e=this;return function(_0x43f84d){clearCampaigns(_0x400a7e['campaigns']);for(var _0x4d139c=0x0;_0x4d139c<_0x43f84d[_0x3384('0x3a')];_0x4d139c+=0x1){_[_0x3384('0x5f')](_0x400a7e[_0x3384('0x14')][_0x43f84d[_0x4d139c]['name']],_0x43f84d[_0x4d139c]);}return _0x400a7e['campaigns'];};};Realtime[_0x3384('0x39')][_0x3384('0x60')]=function(){var _0x5c5387=this;return function(_0x1254e1){if(_0x1254e1){freeIsNotKey(_0x1254e1,_0x5c5387['faxAccounts'],'id');for(var _0x4baf7b=0x0,_0x176bb0={},_0x4aa0d4={};_0x4baf7b<_0x1254e1[_0x3384('0x3a')];_0x4baf7b+=0x1){_0x176bb0=_0x1254e1[_0x4baf7b];if(_[_0x3384('0x3b')](_0x5c5387[_0x3384('0x22')][_0x176bb0['id']])){_0x5c5387[_0x3384('0x22')][_0x176bb0['id']]=new FaxAccount(_0x176bb0);}else{_0x5c5387[_0x3384('0x3d')](_0x5c5387['faxAccounts'][_0x176bb0['id']],_0x176bb0);}}}return _0x5c5387['faxAccounts'];};};module[_0x3384('0x61')]=Realtime;
\ No newline at end of file
+var _0xbe7f=['sumBillable','isEmpty','hasOwnProperty','total','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','length','initTelephones','initTrunks','isUndefined','trunks','initVoiceQueues','initTriggers','triggers','initTemplates','initZendeskAccounts','zendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initVtigerAccounts','initServicenowAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','uniqueid','queue','queuecallerexit','queuecallerabandon','queuecallerleaveAt','diff','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','queuecallerjoinAt','queuecallercomplete','initVoiceCallReports','disposition','ANSWERED','duration','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','initFaxAccounts','faxAccounts','util','lodash','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/freshsalesAccount','agents','telephones','voiceQueues','campaigns','templates','outbound','voiceExtensions','channels','queueChannels','outboundChannels','timers','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','mapKeys','format','SIP/%s','name','isNil','interface','answered','sumHoldTime','sumDuration'];(function(_0x50d84b,_0x1d7ea7){var _0x6d4270=function(_0x883f21){while(--_0x883f21){_0x50d84b['push'](_0x50d84b['shift']());}};_0x6d4270(++_0x1d7ea7);}(_0xbe7f,0x17d));var _0xfbe7=function(_0x4e87d1,_0x418979){_0x4e87d1=_0x4e87d1-0x0;var _0x532e82=_0xbe7f[_0x4e87d1];return _0x532e82;};'use strict';var BPromise=require('bluebird');var util=require(_0xfbe7('0x0'));var _=require(_0xfbe7('0x1'));var moment=require(_0xfbe7('0x2'));var Agent=require(_0xfbe7('0x3'));var Telephone=require(_0xfbe7('0x4'));var Trunk=require(_0xfbe7('0x5'));var VoiceQueue=require(_0xfbe7('0x6'));var Trigger=require(_0xfbe7('0x7'));var Template=require(_0xfbe7('0x8'));var Campaign=require(_0xfbe7('0x9'));var VoiceExtension=require(_0xfbe7('0xa'));var ZendeskAccount=require('../model/zendeskAccount');var SalesforceAccount=require(_0xfbe7('0xb'));var FreshdeskAccount=require(_0xfbe7('0xc'));var SugarcrmAccount=require(_0xfbe7('0xd'));var ZohoAccount=require('../model/zohoAccount');var DeskAccount=require(_0xfbe7('0xe'));var VtigerAccount=require(_0xfbe7('0xf'));var ServicenowAccount=require(_0xfbe7('0x10'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0xfbe7('0x11'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0xfbe7('0x12')]={};this[_0xfbe7('0x13')]={};this['trunks']={};this[_0xfbe7('0x14')]={};this['triggers']={};this[_0xfbe7('0x15')]={};this[_0xfbe7('0x16')]={};this[_0xfbe7('0x17')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xfbe7('0x18')]={};this[_0xfbe7('0x19')]={};this[_0xfbe7('0x1a')]={};this[_0xfbe7('0x1b')]={};this[_0xfbe7('0x1c')]={};this['settings']={};this['zendeskAccounts']={};this[_0xfbe7('0x1d')]={};this[_0xfbe7('0x1e')]={};this[_0xfbe7('0x1f')]={};this[_0xfbe7('0x20')]={};this[_0xfbe7('0x21')]={};this[_0xfbe7('0x22')]={};this[_0xfbe7('0x23')]={};this[_0xfbe7('0x24')]={};this[_0xfbe7('0x25')]={};this['faxAccounts']={};};function freeIsNotKey(_0x3f3f92,_0xb6c3c5,_0x5888ef){var _0x1e9c54=_['mapKeys'](_0x3f3f92,function(_0x538f26,_0x1748db){return _0x538f26[_0x5888ef];});for(var _0x4beb89 in _0xb6c3c5){if(_0xb6c3c5['hasOwnProperty'](_0x4beb89)){if(!_0x1e9c54[_0x4beb89]){delete _0xb6c3c5[_0x4beb89];}}}}function freeIsNotKeySip(_0xdf2f1c,_0x16e2dc){var _0x356fa9=_[_0xfbe7('0x26')](_0xdf2f1c,function(_0x3da211,_0x1a2322){return util[_0xfbe7('0x27')](_0xfbe7('0x28'),_0x3da211[_0xfbe7('0x29')]);});for(var _0xf6d3ad in _0x16e2dc){if(_0x16e2dc['hasOwnProperty'](_0xf6d3ad)){if(!_0x356fa9[_0xf6d3ad]){delete _0x16e2dc[_0xf6d3ad];}}}}function freeIsNotKeyAgent(_0x3948f4,_0x3de5a8){var _0x431c28=_[_0xfbe7('0x26')](_0x3948f4,function(_0x2b601c,_0x55b30c){var _0x18f77d=_[_0xfbe7('0x2a')](_0x2b601c[_0xfbe7('0x2b')])?util[_0xfbe7('0x27')](_0xfbe7('0x28'),_0x2b601c[_0xfbe7('0x29')]):_0x2b601c['interface'];return _0x18f77d;});for(var _0x1d2edb in _0x3de5a8){if(_0x3de5a8['hasOwnProperty'](_0x1d2edb)){if(!_0x431c28[_0x1d2edb]){delete _0x3de5a8[_0x1d2edb];}}}}function clearVoiceCallReports(_0x4476bb){_0x4476bb['total']=0x0;_0x4476bb[_0xfbe7('0x2c')]=0x0;_0x4476bb[_0xfbe7('0x2d')]=0x0;_0x4476bb[_0xfbe7('0x2e')]=0x0;_0x4476bb[_0xfbe7('0x2f')]=0x0;}function clearCampaigns(_0xa6810c){if(!_[_0xfbe7('0x30')](_0xa6810c)){for(var _0x3317fa in _0xa6810c){if(_0xa6810c[_0xfbe7('0x31')](_0x3317fa)){_0xa6810c[_0x3317fa]['ivrTotalCallsDays']=0x0;_0xa6810c[_0x3317fa]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x3d7d0e){if(!_['isEmpty'](_0x3d7d0e)){for(var _0x35963f in _0x3d7d0e){if(_0x3d7d0e[_0xfbe7('0x31')](_0x35963f)){_0x3d7d0e[_0x35963f][_0xfbe7('0x32')]=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x2c')]=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x33')]=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x34')]=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x2d')]=0x0;_0x3d7d0e[_0x35963f]['sumDuration']=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x2f')]=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x35')]=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x36')]=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x37')]=0x0;_0x3d7d0e[_0x35963f]['outboundCongestionCallsDay']=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x38')]=0x0;_0x3d7d0e[_0x35963f]['outboundUnknownCallsDay']=0x0;_0x3d7d0e[_0x35963f]['outboundDropCallsDayTimeout']=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x39')]=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x3a')]=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x3b')]=0x0;_0x3d7d0e[_0x35963f]['outboundRejectCallsDay']=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x3c')]=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x35')]=0x0;_0x3d7d0e[_0x35963f]['outboundAnswerCallsDay']=0x0;_0x3d7d0e[_0x35963f][_0xfbe7('0x3d')]=!![];}}}}Realtime[_0xfbe7('0x3e')][_0xfbe7('0x3f')]=function(_0xa22bae,_0x594545){for(var _0x1e45a0 in _0x594545){if(_0xa22bae[_0xfbe7('0x31')](_0x1e45a0)){_0xa22bae[_0x1e45a0]=_0x594545[_0x1e45a0];}}};Realtime[_0xfbe7('0x3e')][_0xfbe7('0x40')]=function(){var _0x549ecb=this;return function(_0x58587a){if(_0x58587a){freeIsNotKeyAgent(_0x58587a,_0x549ecb['agents']);for(var _0x3b6c89=0x0,_0x42e425={},_0x75914={};_0x3b6c89<_0x58587a[_0xfbe7('0x41')];_0x3b6c89+=0x1){_0x42e425=_0x58587a[_0x3b6c89];var _0x5c80ec=_[_0xfbe7('0x2a')](_0x42e425[_0xfbe7('0x2b')])?util[_0xfbe7('0x27')]('SIP/%s',_0x42e425[_0xfbe7('0x29')]):_0x42e425[_0xfbe7('0x2b')];if(_['isUndefined'](_0x549ecb['agents'][_0x5c80ec])){_0x549ecb[_0xfbe7('0x12')][_0x5c80ec]=new Agent(_0x42e425);}else{_0x549ecb[_0xfbe7('0x3f')](_0x549ecb[_0xfbe7('0x12')][_0x5c80ec],_0x42e425);}}}return _0x549ecb[_0xfbe7('0x12')];};};Realtime['prototype'][_0xfbe7('0x42')]=function(){var _0x3a889f=this;return function(_0x4dbe0e){if(_0x4dbe0e){freeIsNotKeySip(_0x4dbe0e,_0x3a889f[_0xfbe7('0x13')]);for(var _0x128236=0x0,_0x47bf0f={},_0xda94e9={};_0x128236<_0x4dbe0e[_0xfbe7('0x41')];_0x128236+=0x1){_0x47bf0f=_0x4dbe0e[_0x128236];if(_['isUndefined'](_0x3a889f[_0xfbe7('0x13')][util[_0xfbe7('0x27')](_0xfbe7('0x28'),_0x47bf0f[_0xfbe7('0x29')])])){_0x3a889f['telephones'][util[_0xfbe7('0x27')](_0xfbe7('0x28'),_0x47bf0f[_0xfbe7('0x29')])]=new Telephone(_0x47bf0f);}else{_0x3a889f[_0xfbe7('0x3f')](_0x3a889f[_0xfbe7('0x13')][util[_0xfbe7('0x27')](_0xfbe7('0x28'),_0x47bf0f['name'])],_0x47bf0f);}}}return _0x3a889f[_0xfbe7('0x13')];};};Realtime[_0xfbe7('0x3e')][_0xfbe7('0x43')]=function(){var _0x15c04d=this;return function(_0x3fa1e8){if(_0x3fa1e8){freeIsNotKeySip(_0x3fa1e8,_0x15c04d['trunks']);for(var _0x45dbba=0x0,_0x2eb02f={},_0x39d056={};_0x45dbba<_0x3fa1e8[_0xfbe7('0x41')];_0x45dbba+=0x1){_0x2eb02f=_0x3fa1e8[_0x45dbba];if(_[_0xfbe7('0x44')](_0x15c04d[_0xfbe7('0x45')][util[_0xfbe7('0x27')](_0xfbe7('0x28'),_0x2eb02f[_0xfbe7('0x29')])])){_0x15c04d[_0xfbe7('0x45')][util['format']('SIP/%s',_0x2eb02f['name'])]=new Trunk(_0x2eb02f);}else{_0x15c04d[_0xfbe7('0x3f')](_0x15c04d[_0xfbe7('0x45')][util['format'](_0xfbe7('0x28'),_0x2eb02f[_0xfbe7('0x29')])],_0x2eb02f);}}}return _0x15c04d[_0xfbe7('0x45')];};};Realtime[_0xfbe7('0x3e')][_0xfbe7('0x46')]=function(){var _0x58702f=this;return function(_0x4f92b9){if(_0x4f92b9){freeIsNotKey(_0x4f92b9,_0x58702f['voiceQueues'],'name');for(var _0x57e027=0x0,_0x5dc4f6={},_0x3220cb={};_0x57e027<_0x4f92b9[_0xfbe7('0x41')];_0x57e027+=0x1){_0x5dc4f6=_0x4f92b9[_0x57e027];if(_[_0xfbe7('0x44')](_0x58702f[_0xfbe7('0x14')][_0x5dc4f6[_0xfbe7('0x29')]])){_0x58702f['voiceQueues'][_0x5dc4f6['name']]=new VoiceQueue(_0x5dc4f6);}else{_0x58702f[_0xfbe7('0x3f')](_0x58702f[_0xfbe7('0x14')][_0x5dc4f6[_0xfbe7('0x29')]],_0x5dc4f6);}}}return _0x58702f['voiceQueues'];};};Realtime['prototype'][_0xfbe7('0x47')]=function(){var _0x4e0346=this;return function(_0x6fc57d){if(_0x6fc57d){freeIsNotKey(_0x6fc57d,_0x4e0346['triggers'],'id');for(var _0x24616e=0x0,_0x51f8c8={},_0x4bb5bb={};_0x24616e<_0x6fc57d[_0xfbe7('0x41')];_0x24616e+=0x1){_0x51f8c8=_0x6fc57d[_0x24616e];if(_[_0xfbe7('0x44')](_0x4e0346[_0xfbe7('0x48')][_0x51f8c8['id']])){_0x4e0346[_0xfbe7('0x48')][_0x51f8c8['id']]=new Trigger(_0x51f8c8);}else{_0x4e0346[_0xfbe7('0x3f')](_0x4e0346[_0xfbe7('0x48')][_0x51f8c8['id']],_0x51f8c8);}}}return _0x4e0346['triggers'];};};Realtime['prototype'][_0xfbe7('0x49')]=function(){var _0x3c3fa8=this;return function(_0x2e7963){if(_0x2e7963){freeIsNotKey(_0x2e7963,_0x3c3fa8['templates'],'id');for(var _0x596d80=0x0,_0x124c32={},_0x53190d={};_0x596d80<_0x2e7963[_0xfbe7('0x41')];_0x596d80+=0x1){_0x124c32=_0x2e7963[_0x596d80];if(_['isUndefined'](_0x3c3fa8[_0xfbe7('0x16')][_0x124c32['id']])){_0x3c3fa8['templates'][_0x124c32['id']]=new Template(_0x124c32);}else{_0x3c3fa8['mergeFromDatabase'](_0x3c3fa8['templates'][_0x124c32['id']],_0x124c32);}}}return _0x3c3fa8[_0xfbe7('0x16')];};};Realtime['prototype'][_0xfbe7('0x4a')]=function(){var _0x223b0d=this;return function(_0xafa0a1){if(_0xafa0a1){freeIsNotKey(_0xafa0a1,_0x223b0d[_0xfbe7('0x4b')],'id');for(var _0x595d43=0x0,_0x40530c={},_0x12cb09={};_0x595d43<_0xafa0a1['length'];_0x595d43+=0x1){_0x40530c=_0xafa0a1[_0x595d43];if(_[_0xfbe7('0x44')](_0x223b0d[_0xfbe7('0x4b')][_0x40530c['id']])){_0x223b0d['zendeskAccounts'][_0x40530c['id']]=new ZendeskAccount(_0x40530c);}else{_0x223b0d[_0xfbe7('0x3f')](_0x223b0d[_0xfbe7('0x4b')][_0x40530c['id']],_0x40530c);}}}return _0x223b0d[_0xfbe7('0x4b')];};};Realtime[_0xfbe7('0x3e')][_0xfbe7('0x4c')]=function(){var _0x567558=this;return function(_0x30d494){if(_0x30d494){freeIsNotKey(_0x30d494,_0x567558[_0xfbe7('0x1d')],'id');for(var _0x2796b4=0x0,_0x545df1={},_0x286eb7={};_0x2796b4<_0x30d494[_0xfbe7('0x41')];_0x2796b4+=0x1){_0x545df1=_0x30d494[_0x2796b4];if(_[_0xfbe7('0x44')](_0x567558[_0xfbe7('0x1d')][_0x545df1['id']])){_0x567558[_0xfbe7('0x1d')][_0x545df1['id']]=new SalesforceAccount(_0x545df1);}else{_0x567558[_0xfbe7('0x3f')](_0x567558[_0xfbe7('0x1d')][_0x545df1['id']],_0x545df1);}}}return _0x567558[_0xfbe7('0x1d')];};};Realtime[_0xfbe7('0x3e')][_0xfbe7('0x4d')]=function(){var _0x635b39=this;return function(_0x7adaeb){if(_0x7adaeb){freeIsNotKey(_0x7adaeb,_0x635b39[_0xfbe7('0x1f')],'id');for(var _0x524670=0x0,_0x513b69={},_0xda062b={};_0x524670<_0x7adaeb[_0xfbe7('0x41')];_0x524670+=0x1){_0x513b69=_0x7adaeb[_0x524670];if(_[_0xfbe7('0x44')](_0x635b39[_0xfbe7('0x1f')][_0x513b69['id']])){_0x635b39[_0xfbe7('0x1f')][_0x513b69['id']]=new FreshdeskAccount(_0x513b69);}else{_0x635b39[_0xfbe7('0x3f')](_0x635b39[_0xfbe7('0x1f')][_0x513b69['id']],_0x513b69);}}}return _0x635b39[_0xfbe7('0x1f')];};};Realtime[_0xfbe7('0x3e')]['initZohoAccounts']=function(){var _0x497b69=this;return function(_0x8dbb6d){if(_0x8dbb6d){freeIsNotKey(_0x8dbb6d,_0x497b69[_0xfbe7('0x20')],'id');for(var _0x5703cc=0x0,_0x13e5ca={},_0x39b14d={};_0x5703cc<_0x8dbb6d[_0xfbe7('0x41')];_0x5703cc+=0x1){_0x13e5ca=_0x8dbb6d[_0x5703cc];if(_[_0xfbe7('0x44')](_0x497b69[_0xfbe7('0x20')][_0x13e5ca['id']])){_0x497b69[_0xfbe7('0x20')][_0x13e5ca['id']]=new ZohoAccount(_0x13e5ca);}else{_0x497b69['mergeFromDatabase'](_0x497b69[_0xfbe7('0x20')][_0x13e5ca['id']],_0x13e5ca);}}}return _0x497b69[_0xfbe7('0x20')];};};Realtime['prototype'][_0xfbe7('0x4e')]=function(){var _0x522695=this;return function(_0x5df93c){if(_0x5df93c){freeIsNotKey(_0x5df93c,_0x522695['deskAccounts'],'id');for(var _0x4bc43e=0x0,_0x56f447={},_0x194e31={};_0x4bc43e<_0x5df93c['length'];_0x4bc43e+=0x1){_0x56f447=_0x5df93c[_0x4bc43e];if(_['isUndefined'](_0x522695[_0xfbe7('0x21')][_0x56f447['id']])){_0x522695[_0xfbe7('0x21')][_0x56f447['id']]=new DeskAccount(_0x56f447);}else{_0x522695['mergeFromDatabase'](_0x522695['deskAccounts'][_0x56f447['id']],_0x56f447);}}}return _0x522695['deskAccounts'];};};Realtime[_0xfbe7('0x3e')]['initSugarcrmAccounts']=function(){var _0x15c3f5=this;return function(_0x87fe3a){if(_0x87fe3a){freeIsNotKey(_0x87fe3a,_0x15c3f5[_0xfbe7('0x1e')],'id');for(var _0x1e59d1=0x0,_0x395110={},_0x581fde={};_0x1e59d1<_0x87fe3a['length'];_0x1e59d1+=0x1){_0x395110=_0x87fe3a[_0x1e59d1];if(_['isUndefined'](_0x15c3f5[_0xfbe7('0x1e')][_0x395110['id']])){_0x15c3f5[_0xfbe7('0x1e')][_0x395110['id']]=new SugarcrmAccount(_0x395110);}else{_0x15c3f5['mergeFromDatabase'](_0x15c3f5['sugarcrmAccounts'][_0x395110['id']],_0x395110);}}}return _0x15c3f5[_0xfbe7('0x1e')];};};Realtime[_0xfbe7('0x3e')][_0xfbe7('0x4f')]=function(){var _0x137ae4=this;return function(_0x2e46d4){if(_0x2e46d4){freeIsNotKey(_0x2e46d4,_0x137ae4['vtigerAccounts'],'id');for(var _0x226c9f=0x0,_0x54a7ab={},_0x3955fa={};_0x226c9f<_0x2e46d4[_0xfbe7('0x41')];_0x226c9f+=0x1){_0x54a7ab=_0x2e46d4[_0x226c9f];if(_[_0xfbe7('0x44')](_0x137ae4[_0xfbe7('0x22')][_0x54a7ab['id']])){_0x137ae4[_0xfbe7('0x22')][_0x54a7ab['id']]=new VtigerAccount(_0x54a7ab);}else{_0x137ae4[_0xfbe7('0x3f')](_0x137ae4['vtigerAccounts'][_0x54a7ab['id']],_0x54a7ab);}}}return _0x137ae4['vtigerAccounts'];};};Realtime[_0xfbe7('0x3e')][_0xfbe7('0x50')]=function(){var _0x7ae2b2=this;return function(_0x5de844){if(_0x5de844){freeIsNotKey(_0x5de844,_0x7ae2b2[_0xfbe7('0x23')],'id');for(var _0x32a1a3=0x0,_0x3828fe={},_0x44181d={};_0x32a1a3<_0x5de844['length'];_0x32a1a3+=0x1){_0x3828fe=_0x5de844[_0x32a1a3];if(_[_0xfbe7('0x44')](_0x7ae2b2['servicenowAccounts'][_0x3828fe['id']])){_0x7ae2b2[_0xfbe7('0x23')][_0x3828fe['id']]=new ServicenowAccount(_0x3828fe);}else{_0x7ae2b2[_0xfbe7('0x3f')](_0x7ae2b2[_0xfbe7('0x23')][_0x3828fe['id']],_0x3828fe);}}}return _0x7ae2b2['servicenowAccounts'];};};Realtime['prototype']['initDynamics365Accounts']=function(){var _0x3ecef6=this;return function(_0x466f72){if(_0x466f72){freeIsNotKey(_0x466f72,_0x3ecef6[_0xfbe7('0x24')],'id');for(var _0x5825c6=0x0,_0x4dcfd3={},_0x3e2f1a={};_0x5825c6<_0x466f72[_0xfbe7('0x41')];_0x5825c6+=0x1){_0x4dcfd3=_0x466f72[_0x5825c6];if(_['isUndefined'](_0x3ecef6[_0xfbe7('0x24')][_0x4dcfd3['id']])){_0x3ecef6[_0xfbe7('0x24')][_0x4dcfd3['id']]=new Dynamics365Account(_0x4dcfd3);}else{_0x3ecef6[_0xfbe7('0x3f')](_0x3ecef6['dynamics365Accounts'][_0x4dcfd3['id']],_0x4dcfd3);}}}return _0x3ecef6['dynamics365Accounts'];};};Realtime[_0xfbe7('0x3e')]['initFreshsalesAccounts']=function(){var _0x888ef5=this;return function(_0x132f0b){if(_0x132f0b){freeIsNotKey(_0x132f0b,_0x888ef5[_0xfbe7('0x25')],'id');for(var _0x53f068=0x0,_0x5560fd={},_0xc824be={};_0x53f068<_0x132f0b[_0xfbe7('0x41')];_0x53f068+=0x1){_0x5560fd=_0x132f0b[_0x53f068];if(_[_0xfbe7('0x44')](_0x888ef5['freshsalesAccounts'][_0x5560fd['id']])){_0x888ef5['freshsalesAccounts'][_0x5560fd['id']]=new FreshsalesAccount(_0x5560fd);}else{_0x888ef5['mergeFromDatabase'](_0x888ef5['freshsalesAccounts'][_0x5560fd['id']],_0x5560fd);}}}return _0x888ef5[_0xfbe7('0x25')];};};Realtime[_0xfbe7('0x3e')][_0xfbe7('0x51')]=function(){var _0x5a306f=this;return function(_0x567c74){for(var _0x4b8dfb=0x0;_0x4b8dfb<_0x567c74[_0xfbe7('0x41')];_0x4b8dfb+=0x1){_[_0xfbe7('0x52')](_0x5a306f[_0xfbe7('0x14')][_0x567c74[_0x4b8dfb][_0xfbe7('0x29')]],_0x567c74[_0x4b8dfb]);}return _0x5a306f[_0xfbe7('0x14')];};};Realtime['prototype'][_0xfbe7('0x53')]=function(){var _0x5aaff2=this;return function(_0x1e74c9){clearVoiceQueues(_0x5aaff2['voiceQueues']);if(_0x1e74c9){_0x1e74c9=_['groupBy'](_0x1e74c9,_0xfbe7('0x54'));for(var _0x177d15 in _0x1e74c9){if(_0x1e74c9[_0xfbe7('0x31')](_0x177d15)){var _0x3f5f2b={};for(var _0x1fb45a=0x0;_0x1fb45a<_0x1e74c9[_0x177d15][_0xfbe7('0x41')];_0x1fb45a+=0x1){var _0x176db1=_0x1e74c9[_0x177d15][_0x1fb45a][_0xfbe7('0x55')];if(_0x5aaff2[_0xfbe7('0x14')][_0x176db1]){if(_0x1e74c9[_0x177d15][_0x1fb45a][_0xfbe7('0x56')]){_0x5aaff2['voiceQueues'][_0x176db1][_0xfbe7('0x33')]+=0x1;}if(_0x1e74c9[_0x177d15][_0x1fb45a][_0xfbe7('0x57')]){_0x5aaff2[_0xfbe7('0x14')][_0x176db1]['abandoned']+=0x1;}_0x5aaff2[_0xfbe7('0x14')][_0x176db1]['sumHoldTime']+=moment(_0x1e74c9[_0x177d15][_0x1fb45a][_0xfbe7('0x58')])[_0xfbe7('0x59')](moment(_0x1e74c9[_0x177d15][_0x1fb45a]['queuecallerjoinAt']),_0xfbe7('0x5a'))||0x0;if(_0x1fb45a===_0x1e74c9[_0x177d15]['length']-0x1){_0x5aaff2[_0xfbe7('0x14')][_0x176db1][_0xfbe7('0x2e')]+=moment(_0x1e74c9[_0x177d15][_0x1fb45a][_0xfbe7('0x5b')]||_0x1e74c9[_0x177d15][_0x1fb45a][_0xfbe7('0x5c')]||_0x1e74c9[_0x177d15][_0x1fb45a][_0xfbe7('0x5d')])['diff'](moment(_0x1e74c9[_0x177d15][_0x1fb45a][_0xfbe7('0x5e')]),_0xfbe7('0x5a'))||0x0;_0x5aaff2['voiceQueues'][_0x176db1][_0xfbe7('0x32')]+=0x1;if(_0x1e74c9[_0x177d15][_0x1fb45a][_0xfbe7('0x5f')]){_0x5aaff2[_0xfbe7('0x14')][_0x176db1][_0xfbe7('0x2c')]+=0x1;_0x5aaff2['voiceQueues'][_0x176db1][_0xfbe7('0x2f')]+=moment(_0x1e74c9[_0x177d15][_0x1fb45a][_0xfbe7('0x5b')])[_0xfbe7('0x59')](moment(_0x1e74c9[_0x177d15][_0x1fb45a]['queuecallerleaveAt']),'seconds')||0x0;}}else{_0x5aaff2['voiceQueues'][_0x176db1]['sumDuration']+=_0x5aaff2['voiceQueues'][_0x176db1]['sumHoldTime']||0x0;}}}}}}return _0x5aaff2['voiceQueues'];};};Realtime['prototype'][_0xfbe7('0x60')]=function(){var _0x38b659=this;return function(_0x42a54a){clearVoiceCallReports(_0x38b659[_0xfbe7('0x17')]);if(_0x42a54a){for(var _0x45a296=0x0;_0x45a296<_0x42a54a['length'];_0x45a296+=0x1){_0x38b659[_0xfbe7('0x17')][_0xfbe7('0x32')]+=0x1;_0x38b659[_0xfbe7('0x17')][_0xfbe7('0x2e')]+=_0x42a54a[_0x45a296]['duration'];if(_0x42a54a[_0x45a296][_0xfbe7('0x61')]===_0xfbe7('0x62')){_0x38b659[_0xfbe7('0x17')][_0xfbe7('0x2c')]+=0x1;_0x38b659[_0xfbe7('0x17')][_0xfbe7('0x2d')]+=_0x42a54a[_0x45a296][_0xfbe7('0x63')]-_0x42a54a[_0x45a296][_0xfbe7('0x64')]||0x0;_0x38b659[_0xfbe7('0x17')][_0xfbe7('0x2f')]+=_0x42a54a[_0x45a296][_0xfbe7('0x64')];}}}return _0x38b659[_0xfbe7('0x17')];};};Realtime[_0xfbe7('0x3e')][_0xfbe7('0x65')]=function(){var _0x6dad29=this;return function(_0x3e93b3){if(_0x3e93b3){freeIsNotKey(_0x3e93b3,_0x6dad29[_0xfbe7('0x15')],_0xfbe7('0x29'));for(var _0x2f644d=0x0,_0x254c47={};_0x2f644d<_0x3e93b3[_0xfbe7('0x41')];_0x2f644d+=0x1){_0x254c47=_0x3e93b3[_0x2f644d];if(_[_0xfbe7('0x44')](_0x6dad29[_0xfbe7('0x15')][_0x254c47[_0xfbe7('0x29')]])){_0x6dad29[_0xfbe7('0x15')][_0x254c47[_0xfbe7('0x29')]]=new Campaign(_0x254c47);}else{_0x6dad29[_0xfbe7('0x3f')](_0x6dad29[_0xfbe7('0x15')][_0x254c47[_0xfbe7('0x29')]],_0x254c47);_0x6dad29[_0xfbe7('0x15')][_0x254c47[_0xfbe7('0x29')]][_0xfbe7('0x66')]=_0x254c47[_0xfbe7('0x67')]?_0x254c47[_0xfbe7('0x67')][_0xfbe7('0x29')]:undefined;}}}return _0x6dad29['campaigns'];};};Realtime[_0xfbe7('0x3e')][_0xfbe7('0x68')]=function(){var _0x32f2f8=this;return function(_0x2a20e4){if(_0x2a20e4){freeIsNotKey(_0x2a20e4,_0x32f2f8[_0xfbe7('0x18')],'id');for(var _0x2725a9=0x0,_0x4adff8={};_0x2725a9<_0x2a20e4[_0xfbe7('0x41')];_0x2725a9+=0x1){_0x4adff8=_0x2a20e4[_0x2725a9];if(_[_0xfbe7('0x44')](_0x32f2f8[_0xfbe7('0x18')][_0x4adff8['id']])){_0x32f2f8['voiceExtensions'][_0x4adff8['id']]=new VoiceExtension(_0x4adff8);}else{_0x32f2f8[_0xfbe7('0x3f')](_0x32f2f8[_0xfbe7('0x18')][_0x4adff8['id']],_0x4adff8);}}}return _0x32f2f8[_0xfbe7('0x18')];};};Realtime[_0xfbe7('0x3e')]['initCampaignHopperHistory']=function(){var _0xfc2586=this;return function(_0x6810fb){clearCampaigns(_0xfc2586[_0xfbe7('0x15')]);for(var _0x337ea4=0x0;_0x337ea4<_0x6810fb['length'];_0x337ea4+=0x1){_[_0xfbe7('0x52')](_0xfc2586[_0xfbe7('0x15')][_0x6810fb[_0x337ea4]['name']],_0x6810fb[_0x337ea4]);}return _0xfc2586[_0xfbe7('0x15')];};};Realtime[_0xfbe7('0x3e')][_0xfbe7('0x69')]=function(){var _0x43b4ce=this;return function(_0x412476){if(_0x412476){freeIsNotKey(_0x412476,_0x43b4ce[_0xfbe7('0x6a')],'id');for(var _0x31295f=0x0,_0x4545fc={},_0x1d39e4={};_0x31295f<_0x412476[_0xfbe7('0x41')];_0x31295f+=0x1){_0x4545fc=_0x412476[_0x31295f];if(_['isUndefined'](_0x43b4ce[_0xfbe7('0x6a')][_0x4545fc['id']])){_0x43b4ce[_0xfbe7('0x6a')][_0x4545fc['id']]=new FaxAccount(_0x4545fc);}else{_0x43b4ce[_0xfbe7('0x3f')](_0x43b4ce[_0xfbe7('0x6a')][_0x4545fc['id']],_0x4545fc);}}}return _0x43b4ce[_0xfbe7('0x6a')];};};module['exports']=Realtime;
\ No newline at end of file
index cf5a7bc..580f1f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f76=['xcally-motion-preview','calleridpreview','originatecalleridnum','channel','destinationchannel','calleridnum','disposition','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','create','monitor','monitors','monitorFilename','filename','createdAt','connectedlinename','membername','xcally-motion-dialer','voiceAgentReport','voiceDialReport','Local','substring','mobile','phone','indexOf','lastIndexOf','transfererlinkedid','exports','lodash','moment','util','../../../config/environment','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceAgentReport','./voiceDialReport','./userReport','agents','telephones','prototype','sync','realtime','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','name','isNil','interface','SIP/%s','length','assigned','lastAssignedTo','format','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','match','destination','exten','dialer','queue','context','from-voip-provider','callerid'];(function(_0x4e8bf2,_0x2e6a5a){var _0x4df9a9=function(_0x272475){while(--_0x272475){_0x4e8bf2['push'](_0x4e8bf2['shift']());}};_0x4df9a9(++_0x2e6a5a);}(_0x8f76,0xcb));var _0x68f7=function(_0x3da832,_0x2133f1){_0x3da832=_0x3da832-0x0;var _0xe602f2=_0x8f76[_0x3da832];return _0xe602f2;};'use strict';var _=require(_0x68f7('0x0'));var moment=require(_0x68f7('0x1'));var util=require(_0x68f7('0x2'));var config=require(_0x68f7('0x3'));var ami=require('../ami');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x68f7('0x4'));var RpcVoiceDialReport=require(_0x68f7('0x5'));var RpcMemberReport=require(_0x68f7('0x6'));var RpcVoiceQueueReport=require(_0x68f7('0x7'));var RpcVoiceRecording=require(_0x68f7('0x8'));var RpcVoiceTransferReport=require(_0x68f7('0x9'));var VoiceQueueReport=require(_0x68f7('0xa'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require(_0x68f7('0xb'));var VoiceDialReport=require(_0x68f7('0xc'));var UserReport=require(_0x68f7('0xd'));function Report(_0x4059b9){this['realtime']=_0x4059b9;this[_0x68f7('0xe')]=_0x4059b9[_0x68f7('0xe')];this['telephones']=_0x4059b9[_0x68f7('0xf')];}Report[_0x68f7('0x10')][_0x68f7('0x11')]=function(_0x434218){var _0x31b8a0=new VoiceQueueReport(this[_0x68f7('0x12')]);var _0x373df3=new VoiceAgentReport(this['realtime']);var _0xe21e0e=new VoiceDialReport(this[_0x68f7('0x12')]);var _0x433ac9=new VoiceCallReport(this[_0x68f7('0x12')]);var _0xd3c3f6=new UserReport(this['realtime']);if(config[_0x68f7('0x13')]&&config[_0x68f7('0x13')][_0x68f7('0x14')]){ami['on'](_0x68f7('0x15'),this[_0x68f7('0x16')][_0x68f7('0x17')](this));ami['on']('custom:voiceCallReport',this[_0x68f7('0x18')][_0x68f7('0x17')](this));ami['on'](_0x68f7('0x19'),this['voiceAgentReport'][_0x68f7('0x17')](this));ami['on'](_0x68f7('0x1a'),this['voiceDialReport']['bind'](this));ami['on'](_0x68f7('0x1b'),this[_0x68f7('0x1c')]['bind'](this));ami['on'](_0x68f7('0x1d'),this[_0x68f7('0x1e')][_0x68f7('0x17')](this));}};Report[_0x68f7('0x10')][_0x68f7('0x1f')]=function(_0x33860f){var _0x318358;_0x318358=_[_0x68f7('0x20')](this[_0x68f7('0xe')],function(_0x3afdb3){return _0x3afdb3[_0x68f7('0x21')]==_0x33860f||_0x3afdb3[_0x68f7('0x22')]==_0x33860f;});if(_[_0x68f7('0x23')](_0x318358)){var _0x25f8f1=_[_0x68f7('0x20')](this['telephones'],function(_0x4ac462){return _0x4ac462[_0x68f7('0x21')]==_0x33860f||_0x4ac462[_0x68f7('0x22')]==_0x33860f;});if(_0x25f8f1){_0x318358=_[_0x68f7('0x20')](this[_0x68f7('0xe')],function(_0x4ccaff){return _0x4ccaff[_0x68f7('0x24')]==util['format'](_0x68f7('0x25'),_0x25f8f1[_0x68f7('0x22')]);});}}return _0x318358;};Report[_0x68f7('0x10')]['voiceQueueReport']=function(_0x4560b9){for(var _0x571295=0x0;_0x571295<_0x4560b9[_0x68f7('0x26')];_0x571295+=0x1){var _0x436091=this[_0x68f7('0x1f')](_0x4560b9[_0x571295]['connectedlinenum']);if(_0x436091){_0x4560b9[_0x571295][_0x68f7('0x21')]=_0x436091[_0x68f7('0x21')];_0x4560b9[_0x571295][_0x68f7('0x27')]=!![];_0x4560b9[_0x571295][_0x68f7('0x28')]=_0x436091[_0x68f7('0x22')];_0x4560b9[_0x571295][_0x68f7('0x24')]=_['isNil'](_0x436091['interface'])?util[_0x68f7('0x29')](_0x68f7('0x25'),_0x436091['name']):_0x436091[_0x68f7('0x24')];if(_0x4560b9[_0x571295]['queuecallercomplete']){_0x4560b9[_0x571295]['queuecallercompleteAt']=moment()['format'](_0x68f7('0x2a'));}if(_0x4560b9[_0x571295][_0x68f7('0x2b')]){_0x4560b9[_0x571295]['queuecallerexitAt']=moment()['format'](_0x68f7('0x2a'));}RpcMemberReport[_0x68f7('0x16')](_0x4560b9[_0x571295]);}RpcVoiceQueueReport['create'](_0x4560b9[_0x571295]);}};function extractCalleridNumber(_0x36dc87){var _0x43e1cb=_0x36dc87[_0x68f7('0x2c')](/<(.*?)>/);return _0x43e1cb?_0x43e1cb[0x1]:_0x36dc87;}Report[_0x68f7('0x10')]['voiceCallReport']=function(_0x2a00a5){_0x2a00a5[_0x68f7('0x2d')]=_0x2a00a5[_0x68f7('0x2d')]||_0x2a00a5[_0x68f7('0x2e')];if(_0x2a00a5['type']==_0x68f7('0x2f')){_0x2a00a5['lastapplication']=_0x68f7('0x30');_0x2a00a5['lastdata']=_0x2a00a5[_0x68f7('0x30')];if(_0x2a00a5[_0x68f7('0x31')]==_0x68f7('0x32')){_0x2a00a5[_0x68f7('0x21')]='';_0x2a00a5[_0x68f7('0x2d')]=extractCalleridNumber(_0x2a00a5[_0x68f7('0x33')]);}else if(_0x2a00a5[_0x68f7('0x31')]=='from-sip'){if(_0x2a00a5[_0x68f7('0x2d')]==_0x68f7('0x34')){_0x2a00a5[_0x68f7('0x2d')]=extractCalleridNumber(_0x2a00a5[_0x68f7('0x35')]);_0x2a00a5['calleridnum']=_0x2a00a5[_0x68f7('0x36')];_0x2a00a5['destinationchannel']=[_0x2a00a5[_0x68f7('0x37')],_0x2a00a5[_0x68f7('0x37')]=_0x2a00a5[_0x68f7('0x38')]][0x0];_0x2a00a5[_0x68f7('0x33')]=_0x2a00a5[_0x68f7('0x35')];}else{_0x2a00a5['destination']=_0x2a00a5[_0x68f7('0x39')];_0x2a00a5[_0x68f7('0x39')]=_0x2a00a5['originatecalleridnum'];if(_0x2a00a5[_0x68f7('0x3a')]=='ANSWERED'){_0x2a00a5[_0x68f7('0x21')]=_0x2a00a5[_0x68f7('0x3b')];}else{_0x2a00a5[_0x68f7('0x21')]='';}}}}else{_0x2a00a5[_0x68f7('0x33')]=util['format'](_0x68f7('0x3c'),_0x2a00a5[_0x68f7('0x3d')],_0x2a00a5['calleridnum']);}if(RpcVoiceTransferReport[_0x68f7('0x3e')][_0x2a00a5[_0x68f7('0x3f')]]){var _0x23b686=RpcVoiceTransferReport[_0x68f7('0x3e')][_0x2a00a5[_0x68f7('0x3f')]];_0x23b686[_0x68f7('0x40')]=_0x2a00a5[_0x68f7('0x41')];RpcVoiceTransferReport[_0x68f7('0x1c')](_0x23b686);delete RpcVoiceTransferReport[_0x68f7('0x3e')][_0x2a00a5['linkedid']];}RpcVoiceCallReport[_0x68f7('0x42')](_0x2a00a5);if(_0x2a00a5[_0x68f7('0x43')]){for(var _0x148bd7=0x0;_0x148bd7<_0x2a00a5[_0x68f7('0x44')][_0x68f7('0x26')];_0x148bd7+=0x1){_0x2a00a5[_0x68f7('0x45')]=_0x2a00a5[_0x68f7('0x44')][_0x148bd7][_0x68f7('0x46')];_0x2a00a5[_0x68f7('0x47')]=_0x2a00a5[_0x68f7('0x44')][_0x148bd7][_0x68f7('0x47')];if(_0x2a00a5['exten']==_0x68f7('0x34')){_0x2a00a5[_0x68f7('0x39')]=_0x2a00a5['connectedlinenum'];_0x2a00a5[_0x68f7('0x3d')]=_0x2a00a5[_0x68f7('0x48')];_0x2a00a5['connectedlinenum']=_0x2a00a5[_0x68f7('0x21')];_0x2a00a5[_0x68f7('0x48')]=_0x2a00a5[_0x68f7('0x49')];_0x2a00a5[_0x68f7('0x2e')]=_0x2a00a5[_0x68f7('0x36')];}else if(_0x2a00a5[_0x68f7('0x2e')]==_0x68f7('0x4a')){_0x2a00a5[_0x68f7('0x39')]=_0x2a00a5[_0x68f7('0x2d')];_0x2a00a5['exten']=_0x2a00a5[_0x68f7('0x36')];}RpcVoiceRecording[_0x68f7('0x42')](_0x2a00a5);}}};Report[_0x68f7('0x10')][_0x68f7('0x4b')]=function(_0x2e9bd4){if(_['isArray'](_0x2e9bd4)){_0x2e9bd4['forEach'](function(_0x43bdd1){RpcVoiceAgentReport[_0x68f7('0x42')](_0x43bdd1);});}else{RpcVoiceAgentReport[_0x68f7('0x42')](_0x2e9bd4);}};Report[_0x68f7('0x10')][_0x68f7('0x4c')]=function(_0x579b28){RpcVoiceDialReport[_0x68f7('0x42')](_0x579b28);var _0x39e136;var _0x59774c;var _0x11fab1=_0x579b28[_0x68f7('0x37')];if(_['startsWith'](_0x11fab1,_0x68f7('0x4d'))){_0x59774c=_0x11fab1[_0x68f7('0x4e')](_0x11fab1['indexOf']('/')+0x1,_0x11fab1['indexOf']('@'));_0x39e136=_[_0x68f7('0x20')](this[_0x68f7('0xe')],function(_0x123612){return _0x123612[_0x68f7('0x4f')]==_0x59774c||_0x123612[_0x68f7('0x50')]==_0x59774c||_0x123612[_0x68f7('0x21')]==_0x59774c;});}else{_0x59774c=_0x11fab1[_0x68f7('0x4e')](_0x11fab1[_0x68f7('0x51')]('/')+0x1,_0x11fab1[_0x68f7('0x52')]('-'));_0x39e136=this[_0x68f7('0x1f')](_0x59774c);}if(_0x39e136){_0x579b28[_0x68f7('0x24')]=_[_0x68f7('0x23')](_0x39e136[_0x68f7('0x24')])?util[_0x68f7('0x29')]('SIP/%s',_0x39e136['name']):_0x39e136[_0x68f7('0x24')];_0x579b28['membername']=_0x39e136[_0x68f7('0x22')];_0x579b28[_0x68f7('0x21')]=_0x39e136[_0x68f7('0x21')];RpcMemberReport[_0x68f7('0x4c')](_0x579b28);}};Report['prototype'][_0x68f7('0x1c')]=function(_0x27f323){RpcVoiceTransferReport[_0x68f7('0x3e')][_0x27f323[_0x68f7('0x53')]]=_0x27f323;};Report[_0x68f7('0x10')][_0x68f7('0x1e')]=function(_0xbe8e29){RpcVoiceTransferReport['attendedTransfer'](_0xbe8e29);};module[_0x68f7('0x54')]=Report;
\ No newline at end of file
+var _0x90bc=['type','dialer','queue','lastdata','context','from-voip-provider','destination','from-sip','xcally-motion-preview','calleridnum','originatecalleridnum','destinationchannel','channel','callerid','\x22%s\x22\x20<%s>','transfers','linkedid','uniqueid','monitor','monitors','filename','createdAt','calleridname','connectedlinename','membername','xcally-motion-dialer','isArray','forEach','startsWith','Local','substring','indexOf','mobile','phone','lastIndexOf','voiceDialReport','blindTransfer','transfererlinkedid','exports','lodash','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceDialReport','./userReport','realtime','agents','prototype','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','attendedtransfer','attendedTransfer','findAgent','find','accountcode','name','isNil','interface','format','SIP/%s','length','connectedlinenum','assigned','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','create','match','exten'];(function(_0x5f042b,_0x1cce9e){var _0x2fdb3c=function(_0x338992){while(--_0x338992){_0x5f042b['push'](_0x5f042b['shift']());}};_0x2fdb3c(++_0x1cce9e);}(_0x90bc,0x17f));var _0xc90b=function(_0xfc4a4e,_0x375de2){_0xfc4a4e=_0xfc4a4e-0x0;var _0x162e30=_0x90bc[_0xfc4a4e];return _0x162e30;};'use strict';var _=require(_0xc90b('0x0'));var moment=require('moment');var util=require(_0xc90b('0x1'));var config=require(_0xc90b('0x2'));var ami=require(_0xc90b('0x3'));var RpcVoiceAgentReport=require(_0xc90b('0x4'));var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0xc90b('0x5'));var RpcMemberReport=require(_0xc90b('0x6'));var RpcVoiceQueueReport=require(_0xc90b('0x7'));var RpcVoiceRecording=require(_0xc90b('0x8'));var RpcVoiceTransferReport=require(_0xc90b('0x9'));var VoiceQueueReport=require(_0xc90b('0xa'));var VoiceCallReport=require(_0xc90b('0xb'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require(_0xc90b('0xc'));var UserReport=require(_0xc90b('0xd'));function Report(_0x5e9c30){this[_0xc90b('0xe')]=_0x5e9c30;this['agents']=_0x5e9c30[_0xc90b('0xf')];this['telephones']=_0x5e9c30['telephones'];}Report[_0xc90b('0x10')]['sync']=function(_0x16d01b){var _0x1f4193=new VoiceQueueReport(this[_0xc90b('0xe')]);var _0x3bdf85=new VoiceAgentReport(this[_0xc90b('0xe')]);var _0xa75e9b=new VoiceDialReport(this['realtime']);var _0x21648e=new VoiceCallReport(this[_0xc90b('0xe')]);var _0x338ee9=new UserReport(this[_0xc90b('0xe')]);if(config['xdr']&&config[_0xc90b('0x11')][_0xc90b('0x12')]){ami['on'](_0xc90b('0x13'),this[_0xc90b('0x14')][_0xc90b('0x15')](this));ami['on']('custom:voiceCallReport',this[_0xc90b('0x16')]['bind'](this));ami['on'](_0xc90b('0x17'),this[_0xc90b('0x18')][_0xc90b('0x15')](this));ami['on'](_0xc90b('0x19'),this['voiceDialReport'][_0xc90b('0x15')](this));ami['on']('blindtransfer',this['blindTransfer'][_0xc90b('0x15')](this));ami['on'](_0xc90b('0x1a'),this[_0xc90b('0x1b')][_0xc90b('0x15')](this));}};Report[_0xc90b('0x10')][_0xc90b('0x1c')]=function(_0xe84f0f){var _0x8736f4;_0x8736f4=_[_0xc90b('0x1d')](this[_0xc90b('0xf')],function(_0x31b618){return _0x31b618[_0xc90b('0x1e')]==_0xe84f0f||_0x31b618[_0xc90b('0x1f')]==_0xe84f0f;});if(_[_0xc90b('0x20')](_0x8736f4)){var _0x1d6d86=_[_0xc90b('0x1d')](this['telephones'],function(_0x1d4ee3){return _0x1d4ee3['accountcode']==_0xe84f0f||_0x1d4ee3['name']==_0xe84f0f;});if(_0x1d6d86){_0x8736f4=_[_0xc90b('0x1d')](this[_0xc90b('0xf')],function(_0x2f7125){return _0x2f7125[_0xc90b('0x21')]==util[_0xc90b('0x22')](_0xc90b('0x23'),_0x1d6d86[_0xc90b('0x1f')]);});}}return _0x8736f4;};Report['prototype'][_0xc90b('0x14')]=function(_0x687b21){for(var _0x3c6565=0x0;_0x3c6565<_0x687b21[_0xc90b('0x24')];_0x3c6565+=0x1){var _0x9086eb=this[_0xc90b('0x1c')](_0x687b21[_0x3c6565][_0xc90b('0x25')]);if(_0x9086eb){_0x687b21[_0x3c6565][_0xc90b('0x1e')]=_0x9086eb['accountcode'];_0x687b21[_0x3c6565][_0xc90b('0x26')]=!![];_0x687b21[_0x3c6565][_0xc90b('0x27')]=_0x9086eb[_0xc90b('0x1f')];_0x687b21[_0x3c6565][_0xc90b('0x21')]=_[_0xc90b('0x20')](_0x9086eb[_0xc90b('0x21')])?util[_0xc90b('0x22')](_0xc90b('0x23'),_0x9086eb[_0xc90b('0x1f')]):_0x9086eb[_0xc90b('0x21')];if(_0x687b21[_0x3c6565][_0xc90b('0x28')]){_0x687b21[_0x3c6565][_0xc90b('0x29')]=moment()[_0xc90b('0x22')](_0xc90b('0x2a'));}if(_0x687b21[_0x3c6565][_0xc90b('0x2b')]){_0x687b21[_0x3c6565]['queuecallerexitAt']=moment()[_0xc90b('0x22')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport[_0xc90b('0x14')](_0x687b21[_0x3c6565]);}RpcVoiceQueueReport[_0xc90b('0x2c')](_0x687b21[_0x3c6565]);}};function extractCalleridNumber(_0x936cb3){var _0x5dd83f=_0x936cb3[_0xc90b('0x2d')](/<(.*?)>/);return _0x5dd83f?_0x5dd83f[0x1]:_0x936cb3;}Report['prototype'][_0xc90b('0x16')]=function(_0x37a164){_0x37a164['destination']=_0x37a164['destination']||_0x37a164[_0xc90b('0x2e')];if(_0x37a164[_0xc90b('0x2f')]==_0xc90b('0x30')){_0x37a164['lastapplication']=_0xc90b('0x31');_0x37a164[_0xc90b('0x32')]=_0x37a164[_0xc90b('0x31')];if(_0x37a164[_0xc90b('0x33')]==_0xc90b('0x34')){_0x37a164[_0xc90b('0x1e')]='';_0x37a164[_0xc90b('0x35')]=extractCalleridNumber(_0x37a164['callerid']);}else if(_0x37a164[_0xc90b('0x33')]==_0xc90b('0x36')){if(_0x37a164['destination']==_0xc90b('0x37')){_0x37a164['destination']=extractCalleridNumber(_0x37a164['calleridpreview']);_0x37a164[_0xc90b('0x38')]=_0x37a164[_0xc90b('0x39')];_0x37a164[_0xc90b('0x3a')]=[_0x37a164['channel'],_0x37a164[_0xc90b('0x3b')]=_0x37a164[_0xc90b('0x3a')]][0x0];_0x37a164['callerid']=_0x37a164['calleridpreview'];}else{_0x37a164[_0xc90b('0x35')]=_0x37a164[_0xc90b('0x38')];_0x37a164['calleridnum']=_0x37a164[_0xc90b('0x39')];if(_0x37a164['disposition']=='ANSWERED'){_0x37a164[_0xc90b('0x1e')]=_0x37a164[_0xc90b('0x25')];}else{_0x37a164[_0xc90b('0x1e')]='';}}}}else{_0x37a164[_0xc90b('0x3c')]=util[_0xc90b('0x22')](_0xc90b('0x3d'),_0x37a164['calleridname'],_0x37a164['calleridnum']);}if(RpcVoiceTransferReport[_0xc90b('0x3e')][_0x37a164[_0xc90b('0x3f')]]){var _0x4dac46=RpcVoiceTransferReport[_0xc90b('0x3e')][_0x37a164[_0xc90b('0x3f')]];_0x4dac46['transfereelinkedid']=_0x37a164[_0xc90b('0x40')];RpcVoiceTransferReport['blindTransfer'](_0x4dac46);delete RpcVoiceTransferReport[_0xc90b('0x3e')][_0x37a164[_0xc90b('0x3f')]];}RpcVoiceCallReport[_0xc90b('0x2c')](_0x37a164);if(_0x37a164[_0xc90b('0x41')]){for(var _0x3702fc=0x0;_0x3702fc<_0x37a164[_0xc90b('0x42')][_0xc90b('0x24')];_0x3702fc+=0x1){_0x37a164['monitorFilename']=_0x37a164[_0xc90b('0x42')][_0x3702fc][_0xc90b('0x43')];_0x37a164[_0xc90b('0x44')]=_0x37a164['monitors'][_0x3702fc]['createdAt'];if(_0x37a164[_0xc90b('0x2e')]=='xcally-motion-preview'){_0x37a164['calleridnum']=_0x37a164[_0xc90b('0x25')];_0x37a164[_0xc90b('0x45')]=_0x37a164[_0xc90b('0x46')];_0x37a164[_0xc90b('0x25')]=_0x37a164[_0xc90b('0x1e')];_0x37a164[_0xc90b('0x46')]=_0x37a164[_0xc90b('0x47')];_0x37a164[_0xc90b('0x2e')]=_0x37a164[_0xc90b('0x39')];}else if(_0x37a164[_0xc90b('0x2e')]==_0xc90b('0x48')){_0x37a164[_0xc90b('0x38')]=_0x37a164[_0xc90b('0x35')];_0x37a164[_0xc90b('0x2e')]=_0x37a164['originatecalleridnum'];}RpcVoiceRecording[_0xc90b('0x2c')](_0x37a164);}}};Report['prototype'][_0xc90b('0x18')]=function(_0x15f0f5){if(_[_0xc90b('0x49')](_0x15f0f5)){_0x15f0f5[_0xc90b('0x4a')](function(_0x27d7fa){RpcVoiceAgentReport[_0xc90b('0x2c')](_0x27d7fa);});}else{RpcVoiceAgentReport[_0xc90b('0x2c')](_0x15f0f5);}};Report[_0xc90b('0x10')]['voiceDialReport']=function(_0x9bc3e3){RpcVoiceDialReport[_0xc90b('0x2c')](_0x9bc3e3);var _0x115730;var _0xab34ca;var _0x30be0c=_0x9bc3e3['channel'];if(_[_0xc90b('0x4b')](_0x30be0c,_0xc90b('0x4c'))){_0xab34ca=_0x30be0c[_0xc90b('0x4d')](_0x30be0c[_0xc90b('0x4e')]('/')+0x1,_0x30be0c[_0xc90b('0x4e')]('@'));_0x115730=_[_0xc90b('0x1d')](this[_0xc90b('0xf')],function(_0x55b3ac){return _0x55b3ac[_0xc90b('0x4f')]==_0xab34ca||_0x55b3ac[_0xc90b('0x50')]==_0xab34ca||_0x55b3ac[_0xc90b('0x1e')]==_0xab34ca;});}else{_0xab34ca=_0x30be0c[_0xc90b('0x4d')](_0x30be0c[_0xc90b('0x4e')]('/')+0x1,_0x30be0c[_0xc90b('0x51')]('-'));_0x115730=this[_0xc90b('0x1c')](_0xab34ca);}if(_0x115730){_0x9bc3e3[_0xc90b('0x21')]=_[_0xc90b('0x20')](_0x115730['interface'])?util['format'](_0xc90b('0x23'),_0x115730[_0xc90b('0x1f')]):_0x115730[_0xc90b('0x21')];_0x9bc3e3[_0xc90b('0x47')]=_0x115730[_0xc90b('0x1f')];_0x9bc3e3[_0xc90b('0x1e')]=_0x115730['accountcode'];RpcMemberReport[_0xc90b('0x52')](_0x9bc3e3);}};Report['prototype'][_0xc90b('0x53')]=function(_0x2114d4){RpcVoiceTransferReport[_0xc90b('0x3e')][_0x2114d4[_0xc90b('0x54')]]=_0x2114d4;};Report['prototype'][_0xc90b('0x1b')]=function(_0x17fcd8){RpcVoiceTransferReport['attendedTransfer'](_0x17fcd8);};module[_0xc90b('0x55')]=Report;
\ No newline at end of file
index 535e3df..80e37da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc280=['socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','devicestatechange','syncDeviceState','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','inspect','syncRealtimeShow','prototype','isNotNull','isUndefined','emit','info','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','actionid','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','[userReport][devicestatechange]','device','toLowerCase','inuse','local','stateTime','toNumber','format','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','substring','indexOf','mobile','phone','syncPeerStatus','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost'];(function(_0x19d07e,_0x290d42){var _0x5492e7=function(_0x5a3a4f){while(--_0x5a3a4f){_0x19d07e['push'](_0x19d07e['shift']());}};_0x5492e7(++_0x290d42);}(_0xc280,0x1b9));var _0x0c28=function(_0x2538b5,_0x24b676){_0x2538b5=_0x2538b5-0x0;var _0x49cc47=_0xc280[_0x2538b5];return _0x49cc47;};'use strict';var _=require('lodash');var moment=require(_0x0c28('0x0'));var util=require('util');var Redis=require(_0x0c28('0x1'));var BPromise=require('bluebird');var config=require(_0x0c28('0x2'));var logger=require(_0x0c28('0x3'))(_0x0c28('0x4'));var ami=require(_0x0c28('0x5'));config[_0x0c28('0x6')]=_[_0x0c28('0x7')](config[_0x0c28('0x6')],{'host':_0x0c28('0x8'),'port':0x18eb});var io=require(_0x0c28('0x9'))(new Redis(config['redis']));function UserReport(_0x31f447){this[_0x0c28('0xa')]=_0x31f447[_0x0c28('0xa')];this[_0x0c28('0xb')]=_0x31f447['agents'];this['telephones']=_0x31f447[_0x0c28('0xc')];ami['on'](_0x0c28('0xd'),this[_0x0c28('0xe')][_0x0c28('0xf')](this));ami['on']('registry',this[_0x0c28('0xe')][_0x0c28('0xf')](this));ami['on'](_0x0c28('0x10'),this[_0x0c28('0x11')][_0x0c28('0xf')](this));ami['on']('peerstatus',this['syncPeerStatus']['bind'](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0x0c28('0x12')]()[_0x0c28('0x13')](ami[_0x0c28('0x14')]())[_0x0c28('0x15')](function(_0x555ce2){logger[_0x0c28('0x16')](_0x0c28('0x17'),util['inspect'](_0x555ce2,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x0c28('0x12')]()['then'](ami[_0x0c28('0x18')]())[_0x0c28('0x15')](function(_0x4dd8df){logger[_0x0c28('0x16')](_0x0c28('0x19'),util['inspect'](_0x4dd8df,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x0c28('0x12')]()[_0x0c28('0x13')](ami[_0x0c28('0x1a')]())[_0x0c28('0x15')](function(_0xea7d77){logger[_0x0c28('0x16')](_0x0c28('0x1b'),util[_0x0c28('0x1c')](_0xea7d77,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x0c28('0x1d')]=function(){setInterval(function(){BPromise[_0x0c28('0x12')]()[_0x0c28('0x13')](showSipRegistrations())[_0x0c28('0x13')](listDeviceStates())[_0x0c28('0x13')](showPeersStatus());},0x32c8);};UserReport[_0x0c28('0x1e')][_0x0c28('0x1f')]=function(_0x300b25){return _0x300b25!==null&&!_[_0x0c28('0x20')](_0x300b25);};UserReport['prototype'][_0x0c28('0x21')]=function(_0x3b3912,_0x3bccd4,_0x4a4a10){io['to'](_0x3b3912)[_0x0c28('0x21')](_0x3bccd4,_0x4a4a10);};UserReport[_0x0c28('0x1e')][_0x0c28('0xe')]=function(_0x322230){try{if(this[_0x0c28('0x1f')](_0x322230)){logger[_0x0c28('0x22')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x322230[_0x0c28('0x23')],_0x322230[_0x0c28('0x24')]);logger[_0x0c28('0x25')](_0x0c28('0x26'),util[_0x0c28('0x1c')](_0x322230,{'showHidden':![],'depth':null}));var _0x3cf46b=_[_0x0c28('0x27')](this[_0x0c28('0xa')],{'defaultuser':_0x322230['username']});if(_0x3cf46b){_0x322230[_0x0c28('0x28')]=_0x322230[_0x0c28('0x24')];_[_0x0c28('0x29')](_0x3cf46b,_[_0x0c28('0x2a')](_0x322230,['event',_0x0c28('0x2b'),_0x0c28('0x23'),_0x0c28('0x24')]));logger[_0x0c28('0x25')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util['inspect'](_0x3cf46b,{'showHidden':![],'depth':null}));this[_0x0c28('0x21')](util['format'](_0x0c28('0x2c'),_0x3cf46b[_0x0c28('0x2d')]),_0x0c28('0x2e'),_0x3cf46b);}}}catch(_0x4c08ab){logger[_0x0c28('0x16')](_0x0c28('0x26'),util[_0x0c28('0x1c')](_0x4c08ab,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x0c28('0x11')]=function(_0x2dc7c9){try{if(this[_0x0c28('0x1f')](_0x2dc7c9)){logger[_0x0c28('0x22')](_0x0c28('0x2f'),_0x2dc7c9['device'],_0x2dc7c9['state']);logger[_0x0c28('0x25')](_0x0c28('0x30'),util[_0x0c28('0x1c')](_0x2dc7c9,{'showHidden':![],'depth':null}));if(this[_0x0c28('0xb')][_0x2dc7c9[_0x0c28('0x31')]]){if(!this[_0x0c28('0xb')][_0x2dc7c9[_0x0c28('0x31')]]['local']||_0x2dc7c9[_0x0c28('0x24')][_0x0c28('0x32')]()==_0x0c28('0x33')){this[_0x0c28('0xb')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x34')]=![];if(this[_0x0c28('0xb')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x24')]!==_0x2dc7c9['state'][_0x0c28('0x32')]()){this[_0x0c28('0xb')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x35')]=_[_0x0c28('0x36')](moment()[_0x0c28('0x37')]('x'));}this['agents'][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x24')]=_0x2dc7c9[_0x0c28('0x24')]['toLowerCase']();this[_0x0c28('0xb')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x38')](_0x2dc7c9);}}else if(this[_0x0c28('0xc')][_0x2dc7c9[_0x0c28('0x31')]]){if(this['telephones'][_0x2dc7c9['device']][_0x0c28('0x24')]!==_0x2dc7c9[_0x0c28('0x24')][_0x0c28('0x32')]()){this['telephones'][_0x2dc7c9['device']]['stateTime']=_[_0x0c28('0x36')](moment()[_0x0c28('0x37')]('x'));}this[_0x0c28('0xc')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x24')]=_0x2dc7c9[_0x0c28('0x24')]['toLowerCase']();logger[_0x0c28('0x25')](_0x0c28('0x39'),util['inspect'](this[_0x0c28('0xc')][_0x2dc7c9[_0x0c28('0x31')]],{'showHidden':![],'depth':null}));this[_0x0c28('0x21')](util[_0x0c28('0x37')](_0x0c28('0x3a'),this[_0x0c28('0xc')][_0x2dc7c9[_0x0c28('0x31')]]['name']),_0x0c28('0x3b'),this[_0x0c28('0xc')][_0x2dc7c9[_0x0c28('0x31')]]);}else if(this[_0x0c28('0xa')][_0x2dc7c9[_0x0c28('0x31')]]){if(this['trunks'][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x24')]!==_0x2dc7c9[_0x0c28('0x24')]['toLowerCase']()){this[_0x0c28('0xa')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x35')]=_[_0x0c28('0x36')](moment()[_0x0c28('0x37')]('x'));}this[_0x0c28('0xa')][_0x2dc7c9[_0x0c28('0x31')]][_0x0c28('0x24')]=_0x2dc7c9['state'][_0x0c28('0x32')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x0c28('0xa')][_0x2dc7c9['device']],{'showHidden':![],'depth':null}));this[_0x0c28('0x21')](util[_0x0c28('0x37')]('trunk:%s',this['trunks'][_0x2dc7c9['device']][_0x0c28('0x2d')]),_0x0c28('0x2e'),this['trunks'][_0x2dc7c9[_0x0c28('0x31')]]);}else if(_['startsWith'](_0x2dc7c9[_0x0c28('0x31')],'Local')){var _0x34af22=_0x2dc7c9[_0x0c28('0x31')];var _0xf529e6=_0x34af22[_0x0c28('0x3c')](_0x34af22[_0x0c28('0x3d')]('/')+0x1,_0x34af22[_0x0c28('0x3d')]('@'));var _0x1f5d46=_['find'](this[_0x0c28('0xb')],function(_0x21c442){return _0x21c442[_0x0c28('0x3e')]==_0xf529e6||_0x21c442[_0x0c28('0x3f')]==_0xf529e6||_0x21c442['accountcode']==_0xf529e6;});if(_0x1f5d46){if(_0x1f5d46['state']!==_0x2dc7c9[_0x0c28('0x24')][_0x0c28('0x32')]()){_0x1f5d46[_0x0c28('0x35')]=_[_0x0c28('0x36')](moment()[_0x0c28('0x37')]('x'));}_0x1f5d46[_0x0c28('0x24')]=_0x2dc7c9[_0x0c28('0x24')]['toLowerCase']();_0x1f5d46[_0x0c28('0x34')]=!![];_0x1f5d46[_0x0c28('0x38')](_0x2dc7c9);}}}}catch(_0x3726d2){logger['error'](_0x0c28('0x30'),util[_0x0c28('0x1c')](_0x3726d2,{'showHidden':![],'depth':null}));}};UserReport[_0x0c28('0x1e')][_0x0c28('0x40')]=function(_0xfbfe6c){try{if(this[_0x0c28('0x1f')](_0xfbfe6c)&&this[_0x0c28('0x1f')](_0xfbfe6c[_0x0c28('0x41')])){logger[_0x0c28('0x22')](_0x0c28('0x42'),_0xfbfe6c[_0x0c28('0x43')],_0xfbfe6c['address'],_0xfbfe6c[_0x0c28('0x41')]);logger[_0x0c28('0x25')](_0x0c28('0x44'),util[_0x0c28('0x1c')](_0xfbfe6c,{'showHidden':![],'depth':null}));if(this[_0x0c28('0xb')][_0xfbfe6c[_0x0c28('0x43')]]){if(!this[_0x0c28('0xb')][_0xfbfe6c[_0x0c28('0x43')]][_0x0c28('0x34')]||_0xfbfe6c['peerstatus'][_0x0c28('0x32')]()==_0x0c28('0x45')){this['agents'][_0xfbfe6c['peer']]['local']=![];this[_0x0c28('0xb')][_0xfbfe6c['peer']][_0x0c28('0x46')]=_0xfbfe6c['peerstatus'][_0x0c28('0x32')]();this['agents'][_0xfbfe6c[_0x0c28('0x43')]][_0x0c28('0x47')]=_0xfbfe6c[_0x0c28('0x47')];this[_0x0c28('0xb')][_0xfbfe6c[_0x0c28('0x43')]]['updateStatusRealtime'](_0xfbfe6c);}}else if(this[_0x0c28('0xc')][_0xfbfe6c['peer']]){this[_0x0c28('0xc')][_0xfbfe6c[_0x0c28('0x43')]]['status']=_0xfbfe6c[_0x0c28('0x41')][_0x0c28('0x32')]();this['telephones'][_0xfbfe6c[_0x0c28('0x43')]][_0x0c28('0x47')]=_0xfbfe6c[_0x0c28('0x47')];logger[_0x0c28('0x25')](_0x0c28('0x48'),util[_0x0c28('0x1c')](this[_0x0c28('0xc')][_0xfbfe6c[_0x0c28('0x43')]],{'showHidden':![],'depth':null}));this[_0x0c28('0x21')](util['format']('telephone:%s',this[_0x0c28('0xc')][_0xfbfe6c[_0x0c28('0x43')]][_0x0c28('0x2d')]),_0x0c28('0x3b'),this['telephones'][_0xfbfe6c[_0x0c28('0x43')]]);}else if(this[_0x0c28('0xa')][_0xfbfe6c[_0x0c28('0x43')]]){this[_0x0c28('0xa')][_0xfbfe6c[_0x0c28('0x43')]][_0x0c28('0x46')]=_0xfbfe6c[_0x0c28('0x41')][_0x0c28('0x32')]();this[_0x0c28('0xa')][_0xfbfe6c[_0x0c28('0x43')]][_0x0c28('0x47')]=_0xfbfe6c[_0x0c28('0x47')];logger[_0x0c28('0x25')](_0x0c28('0x49'),util[_0x0c28('0x1c')](this[_0x0c28('0xa')][_0xfbfe6c[_0x0c28('0x43')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x0c28('0x37')](_0x0c28('0x2c'),this[_0x0c28('0xa')][_0xfbfe6c['peer']][_0x0c28('0x2d')]),_0x0c28('0x2e'),this['trunks'][_0xfbfe6c[_0x0c28('0x43')]]);}}}catch(_0x2457f9){logger[_0x0c28('0x16')](_0x0c28('0x44'),util[_0x0c28('0x1c')](_0x2457f9,{'showHidden':![],'depth':null}));}};module[_0x0c28('0x4a')]=UserReport;
\ No newline at end of file
+var _0x4fad=['device','local','toLowerCase','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','substring','indexOf','mobile','accountcode','[userReport][devicestatechange]','syncPeerStatus','peerstatus','info','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','lodash','ioredis','bluebird','../../../config/logger','../ami','redis','defaults','socket.io-emitter','trunks','agents','telephones','syncRegistry','bind','devicestatechange','syncRealtimeShow','then','actionSipShowRegistry','error','[userReport][sipshowregistry]','resolve','actionDeviceStateList','catch','[userReport][devicestatelist]','inspect','actionSipPeerStatus','[userReport][sippeerstatus]','isNotNull','isUndefined','emit','prototype','[userReport][registry]\x20registry:%s\x20state:%s','username','state','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','debug','format','trunk:%s','name','trunk:save','syncDeviceState','[userReport][devicestatechange]\x20device:%s\x20state:%s'];(function(_0x3c9e47,_0x5c1342){var _0x38f4df=function(_0x1bc10c){while(--_0x1bc10c){_0x3c9e47['push'](_0x3c9e47['shift']());}};_0x38f4df(++_0x5c1342);}(_0x4fad,0x1c9));var _0xd4fa=function(_0x53094f,_0x232acb){_0x53094f=_0x53094f-0x0;var _0x71624c=_0x4fad[_0x53094f];return _0x71624c;};'use strict';var _=require(_0xd4fa('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0xd4fa('0x1'));var BPromise=require(_0xd4fa('0x2'));var config=require('../../../config/environment');var logger=require(_0xd4fa('0x3'))('ami');var ami=require(_0xd4fa('0x4'));config[_0xd4fa('0x5')]=_[_0xd4fa('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xd4fa('0x7'))(new Redis(config[_0xd4fa('0x5')]));function UserReport(_0x114669){this[_0xd4fa('0x8')]=_0x114669[_0xd4fa('0x8')];this[_0xd4fa('0x9')]=_0x114669[_0xd4fa('0x9')];this[_0xd4fa('0xa')]=_0x114669[_0xd4fa('0xa')];ami['on']('registryentry',this[_0xd4fa('0xb')]['bind'](this));ami['on']('registry',this[_0xd4fa('0xb')][_0xd4fa('0xc')](this));ami['on'](_0xd4fa('0xd'),this['syncDeviceState'][_0xd4fa('0xc')](this));ami['on']('peerstatus',this['syncPeerStatus']['bind'](this));return this[_0xd4fa('0xe')]();}function showSipRegistrations(){Promise['resolve']()[_0xd4fa('0xf')](ami[_0xd4fa('0x10')]())['catch'](function(_0x433f21){logger[_0xd4fa('0x11')](_0xd4fa('0x12'),util['inspect'](_0x433f21,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xd4fa('0x13')]()[_0xd4fa('0xf')](ami[_0xd4fa('0x14')]())[_0xd4fa('0x15')](function(_0x401f9a){logger[_0xd4fa('0x11')](_0xd4fa('0x16'),util[_0xd4fa('0x17')](_0x401f9a,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xd4fa('0x13')]()['then'](ami[_0xd4fa('0x18')]())['catch'](function(_0x4ea178){logger[_0xd4fa('0x11')](_0xd4fa('0x19'),util[_0xd4fa('0x17')](_0x4ea178,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0xd4fa('0xe')]=function(){setInterval(function(){BPromise[_0xd4fa('0x13')]()[_0xd4fa('0xf')](showSipRegistrations())[_0xd4fa('0xf')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport['prototype'][_0xd4fa('0x1a')]=function(_0x440ae5){return _0x440ae5!==null&&!_[_0xd4fa('0x1b')](_0x440ae5);};UserReport['prototype'][_0xd4fa('0x1c')]=function(_0x1d154e,_0x5a1832,_0x533617){io['to'](_0x1d154e)[_0xd4fa('0x1c')](_0x5a1832,_0x533617);};UserReport[_0xd4fa('0x1d')][_0xd4fa('0xb')]=function(_0x290e63){try{if(this['isNotNull'](_0x290e63)){logger['info'](_0xd4fa('0x1e'),_0x290e63[_0xd4fa('0x1f')],_0x290e63[_0xd4fa('0x20')]);logger['debug'](_0xd4fa('0x21'),util[_0xd4fa('0x17')](_0x290e63,{'showHidden':![],'depth':null}));var _0x12c9a4=_[_0xd4fa('0x22')](this[_0xd4fa('0x8')],{'defaultuser':_0x290e63[_0xd4fa('0x1f')]});if(_0x12c9a4){_0x290e63[_0xd4fa('0x23')]=_0x290e63[_0xd4fa('0x20')];_[_0xd4fa('0x24')](_0x12c9a4,_[_0xd4fa('0x25')](_0x290e63,[_0xd4fa('0x26'),_0xd4fa('0x27'),_0xd4fa('0x1f'),_0xd4fa('0x20')]));logger[_0xd4fa('0x28')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0xd4fa('0x17')](_0x12c9a4,{'showHidden':![],'depth':null}));this[_0xd4fa('0x1c')](util[_0xd4fa('0x29')](_0xd4fa('0x2a'),_0x12c9a4[_0xd4fa('0x2b')]),_0xd4fa('0x2c'),_0x12c9a4);}}}catch(_0x3ea886){logger[_0xd4fa('0x11')](_0xd4fa('0x21'),util[_0xd4fa('0x17')](_0x3ea886,{'showHidden':![],'depth':null}));}};UserReport[_0xd4fa('0x1d')][_0xd4fa('0x2d')]=function(_0x45585f){try{if(this['isNotNull'](_0x45585f)){logger['info'](_0xd4fa('0x2e'),_0x45585f[_0xd4fa('0x2f')],_0x45585f[_0xd4fa('0x20')]);logger[_0xd4fa('0x28')]('[userReport][devicestatechange]',util[_0xd4fa('0x17')](_0x45585f,{'showHidden':![],'depth':null}));if(this[_0xd4fa('0x9')][_0x45585f[_0xd4fa('0x2f')]]){if(!this[_0xd4fa('0x9')][_0x45585f['device']][_0xd4fa('0x30')]||_0x45585f[_0xd4fa('0x20')][_0xd4fa('0x31')]()=='inuse'){this['agents'][_0x45585f[_0xd4fa('0x2f')]][_0xd4fa('0x30')]=![];if(this[_0xd4fa('0x9')][_0x45585f[_0xd4fa('0x2f')]][_0xd4fa('0x20')]!==_0x45585f[_0xd4fa('0x20')]['toLowerCase']()){this['agents'][_0x45585f[_0xd4fa('0x2f')]][_0xd4fa('0x32')]=_[_0xd4fa('0x33')](moment()['format']('x'));}this[_0xd4fa('0x9')][_0x45585f[_0xd4fa('0x2f')]][_0xd4fa('0x20')]=_0x45585f['state'][_0xd4fa('0x31')]();this[_0xd4fa('0x9')][_0x45585f['device']][_0xd4fa('0x34')](_0x45585f);}}else if(this[_0xd4fa('0xa')][_0x45585f[_0xd4fa('0x2f')]]){if(this['telephones'][_0x45585f[_0xd4fa('0x2f')]][_0xd4fa('0x20')]!==_0x45585f[_0xd4fa('0x20')][_0xd4fa('0x31')]()){this[_0xd4fa('0xa')][_0x45585f[_0xd4fa('0x2f')]][_0xd4fa('0x32')]=_[_0xd4fa('0x33')](moment()['format']('x'));}this['telephones'][_0x45585f[_0xd4fa('0x2f')]][_0xd4fa('0x20')]=_0x45585f[_0xd4fa('0x20')][_0xd4fa('0x31')]();logger['debug'](_0xd4fa('0x35'),util[_0xd4fa('0x17')](this['telephones'][_0x45585f[_0xd4fa('0x2f')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xd4fa('0x29')](_0xd4fa('0x36'),this[_0xd4fa('0xa')][_0x45585f[_0xd4fa('0x2f')]]['name']),_0xd4fa('0x37'),this['telephones'][_0x45585f[_0xd4fa('0x2f')]]);}else if(this['trunks'][_0x45585f[_0xd4fa('0x2f')]]){if(this[_0xd4fa('0x8')][_0x45585f[_0xd4fa('0x2f')]]['state']!==_0x45585f[_0xd4fa('0x20')][_0xd4fa('0x31')]()){this[_0xd4fa('0x8')][_0x45585f['device']][_0xd4fa('0x32')]=_[_0xd4fa('0x33')](moment()['format']('x'));}this[_0xd4fa('0x8')][_0x45585f[_0xd4fa('0x2f')]][_0xd4fa('0x20')]=_0x45585f[_0xd4fa('0x20')]['toLowerCase']();logger[_0xd4fa('0x28')](_0xd4fa('0x38'),util[_0xd4fa('0x17')](this[_0xd4fa('0x8')][_0x45585f['device']],{'showHidden':![],'depth':null}));this['emit'](util[_0xd4fa('0x29')](_0xd4fa('0x2a'),this[_0xd4fa('0x8')][_0x45585f['device']][_0xd4fa('0x2b')]),_0xd4fa('0x2c'),this['trunks'][_0x45585f['device']]);}else if(_['startsWith'](_0x45585f[_0xd4fa('0x2f')],'Local')){var _0x56d349=_0x45585f[_0xd4fa('0x2f')];var _0x506a2b=_0x56d349[_0xd4fa('0x39')](_0x56d349[_0xd4fa('0x3a')]('/')+0x1,_0x56d349[_0xd4fa('0x3a')]('@'));var _0x5e562b=_[_0xd4fa('0x22')](this['agents'],function(_0x327dbc){return _0x327dbc[_0xd4fa('0x3b')]==_0x506a2b||_0x327dbc['phone']==_0x506a2b||_0x327dbc[_0xd4fa('0x3c')]==_0x506a2b;});if(_0x5e562b){if(_0x5e562b[_0xd4fa('0x20')]!==_0x45585f[_0xd4fa('0x20')][_0xd4fa('0x31')]()){_0x5e562b['stateTime']=_['toNumber'](moment()[_0xd4fa('0x29')]('x'));}_0x5e562b[_0xd4fa('0x20')]=_0x45585f['state'][_0xd4fa('0x31')]();_0x5e562b['local']=!![];_0x5e562b['updateStatusRealtime'](_0x45585f);}}}}catch(_0x487258){logger[_0xd4fa('0x11')](_0xd4fa('0x3d'),util[_0xd4fa('0x17')](_0x487258,{'showHidden':![],'depth':null}));}};UserReport[_0xd4fa('0x1d')][_0xd4fa('0x3e')]=function(_0x5a7290){try{if(this[_0xd4fa('0x1a')](_0x5a7290)&&this[_0xd4fa('0x1a')](_0x5a7290[_0xd4fa('0x3f')])){logger[_0xd4fa('0x40')](_0xd4fa('0x41'),_0x5a7290[_0xd4fa('0x42')],_0x5a7290[_0xd4fa('0x43')],_0x5a7290['peerstatus']);logger[_0xd4fa('0x28')](_0xd4fa('0x44'),util[_0xd4fa('0x17')](_0x5a7290,{'showHidden':![],'depth':null}));if(this[_0xd4fa('0x9')][_0x5a7290['peer']]){if(!this[_0xd4fa('0x9')][_0x5a7290[_0xd4fa('0x42')]][_0xd4fa('0x30')]||_0x5a7290[_0xd4fa('0x3f')][_0xd4fa('0x31')]()=='registered'){this[_0xd4fa('0x9')][_0x5a7290[_0xd4fa('0x42')]][_0xd4fa('0x30')]=![];this['agents'][_0x5a7290[_0xd4fa('0x42')]][_0xd4fa('0x45')]=_0x5a7290[_0xd4fa('0x3f')]['toLowerCase']();this[_0xd4fa('0x9')][_0x5a7290[_0xd4fa('0x42')]]['address']=_0x5a7290[_0xd4fa('0x43')];this[_0xd4fa('0x9')][_0x5a7290[_0xd4fa('0x42')]][_0xd4fa('0x34')](_0x5a7290);}}else if(this[_0xd4fa('0xa')][_0x5a7290[_0xd4fa('0x42')]]){this[_0xd4fa('0xa')][_0x5a7290[_0xd4fa('0x42')]][_0xd4fa('0x45')]=_0x5a7290['peerstatus']['toLowerCase']();this[_0xd4fa('0xa')][_0x5a7290[_0xd4fa('0x42')]][_0xd4fa('0x43')]=_0x5a7290[_0xd4fa('0x43')];logger[_0xd4fa('0x28')](_0xd4fa('0x46'),util[_0xd4fa('0x17')](this[_0xd4fa('0xa')][_0x5a7290[_0xd4fa('0x42')]],{'showHidden':![],'depth':null}));this[_0xd4fa('0x1c')](util[_0xd4fa('0x29')](_0xd4fa('0x36'),this[_0xd4fa('0xa')][_0x5a7290['peer']][_0xd4fa('0x2b')]),'telephone:save',this[_0xd4fa('0xa')][_0x5a7290[_0xd4fa('0x42')]]);}else if(this[_0xd4fa('0x8')][_0x5a7290[_0xd4fa('0x42')]]){this[_0xd4fa('0x8')][_0x5a7290['peer']]['status']=_0x5a7290[_0xd4fa('0x3f')][_0xd4fa('0x31')]();this[_0xd4fa('0x8')][_0x5a7290['peer']][_0xd4fa('0x43')]=_0x5a7290['address'];logger['debug']('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0xd4fa('0x17')](this[_0xd4fa('0x8')][_0x5a7290[_0xd4fa('0x42')]],{'showHidden':![],'depth':null}));this[_0xd4fa('0x1c')](util[_0xd4fa('0x29')](_0xd4fa('0x2a'),this[_0xd4fa('0x8')][_0x5a7290['peer']][_0xd4fa('0x2b')]),_0xd4fa('0x2c'),this[_0xd4fa('0x8')][_0x5a7290[_0xd4fa('0x42')]]);}}}catch(_0x2c8ae0){logger[_0xd4fa('0x11')](_0xd4fa('0x44'),util[_0xd4fa('0x17')](_0x2c8ae0,{'showHidden':![],'depth':null}));}};module[_0xd4fa('0x47')]=UserReport;
\ No newline at end of file
index b7f6b9e..2628635 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(_0x5c63fd,_0x155693){var _0x26a248=function(_0x5e9964){while(--_0x5e9964){_0x5c63fd['push'](_0x5c63fd['shift']());}};_0x26a248(++_0x155693);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]]};}_[_0x0a9e('0x2c')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);logger['debug'](_0x0a9e('0x32'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')]('user:%s',_0x155cce[_0x0a9e('0x21')]),'user:called',this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);}}catch(_0x3f3d41){logger['error'](_0x0a9e('0x34'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3f3d41,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncAgentConnect']=function(_0x54135e){try{if(this[_0x0a9e('0x1e')](_0x54135e)){if(this['channels'][_0x54135e[_0x0a9e('0x26')]]){logger[_0x0a9e('0x23')](_0x0a9e('0x35'),_0x54135e[_0x0a9e('0x26')],util['inspect'](_0x54135e,{'showHidden':![],'depth':null}));for(var _0x31916f in this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]]){if(this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x31916f)){if(_0x54135e[_0x0a9e('0x22')]===_0x31916f){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x54135e[_0x0a9e('0x26')],_0x54135e[_0x0a9e('0x21')],_0x54135e['destuniqueid']);this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x37')]=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x38')]=_0x54135e['connectedlinename'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x39')]=_0x54135e['connectedlinenum'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3a')]=_0x54135e[_0x0a9e('0x3a')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3b')]=_0x54135e[_0x0a9e('0x3b')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3c')]=_0x54135e[_0x0a9e('0x3c')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3d')]='connect';if(this['voiceChannels'][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]]){var _0x315881=this[_0x0a9e('0x3e')][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]][_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3f')]=_0x315881;_0x54135e['routealias']=_0x315881;}_[_0x0a9e('0x2c')](this[_0x0a9e('0xa')][_0x54135e[_0x0a9e('0x40')]],_[_0x0a9e('0x41')](_0x54135e,[_0x0a9e('0x28'),_0x0a9e('0x42'),_0x0a9e('0x3f')]));logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x43'),this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')](_0x0a9e('0x44'),_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x54135e[_0x0a9e('0x21')]),_0x0a9e('0x46'),this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x54135e[_0x0a9e('0x22')]]);}else if(!this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']&&!this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x47'),_0x54135e[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x21')],_0x31916f);this['channels'][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x48')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['answeredelsewheredestinationuniqueid']=_0x54135e[_0x0a9e('0x22')];this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['answeredelsewheremembername']=_0x54135e[_0x0a9e('0x21')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['lastevent']=_0x0a9e('0x49');this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['reason']=_0x0a9e('0x49');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentansweredelsewhere',this['channels'][_0x54135e['uniqueid']][_0x31916f]);}}}}}}catch(_0x2da03c){logger['error'](_0x0a9e('0x4a'),_0x54135e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2da03c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x4b')]=function(_0x272738){try{if(this[_0x0a9e('0x1e')](_0x272738)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x272738[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x272738,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']]){logger[_0x0a9e('0x20')](_0x0a9e('0x4c'),_0x272738['uniqueid'],_0x272738[_0x0a9e('0x21')],_0x272738['destuniqueid']);this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738['destuniqueid']]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738[_0x0a9e('0x22')]][_0x0a9e('0x48')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']][_0x0a9e('0x3d')]='rejected';this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]['reason']=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4e'),_0x272738[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x4f'),this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]);}}}catch(_0x4d4a35){logger[_0x0a9e('0x50')](_0x0a9e('0x51'),_0x272738[_0x0a9e('0x26')],util['inspect'](_0x4d4a35,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncQueueCallerAbandon']=function(_0x5211e3){try{if(this[_0x0a9e('0x1e')](_0x5211e3)){logger[_0x0a9e('0x23')](_0x0a9e('0x52'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x5211e3,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){for(var _0x54a37d in this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x54a37d)&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x54'),_0x5211e3[_0x0a9e('0x26')],this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x21')],_0x54a37d);this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]=!![];this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x48')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x3d')]=_0x0a9e('0x55');this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x56')]=_0x0a9e('0x55');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x5211e3['uniqueid']][_0x54a37d],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentqueuecallerabandon',this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]);}}}}}catch(_0x4c46c1){logger[_0x0a9e('0x50')](_0x0a9e('0x57'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c46c1,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x13')]=function(_0x2e9552){try{if(this[_0x0a9e('0x1e')](_0x2e9552)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2e9552,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){for(var _0x4abc8f in this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x4abc8f)){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x37')]&&!this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x58'),_0x2e9552[_0x0a9e('0x26')],this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x21')],_0x4abc8f);this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x59')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]['lastevent']=_0x0a9e('0x5a');this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x56')]=_0x2e9552['reason']==_0x0a9e('0x5b')?_0x0a9e('0x5c'):_0x2e9552[_0x0a9e('0x56')];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5d')]=_0x2e9552[_0x0a9e('0x5d')];if(this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]&&this[_0x0a9e('0x9')][_0x2e9552[_0x0a9e('0x28')]][_0x0a9e('0x5e')]){this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5f')]=this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]['acwTimeout'];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x60')]=!![];}this[_0x0a9e('0xa')][_0x2e9552['interface']]=_['omit'](this[_0x0a9e('0xa')][_0x2e9552[_0x0a9e('0x40')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')](_0x0a9e('0x61'),_0x2e9552['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcomplete',this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);logger[_0x0a9e('0x23')](_0x0a9e('0x62'),_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f],{'showHidden':![],'depth':null}));this['emit'](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x2e9552[_0x0a9e('0x21')]),_0x0a9e('0x63'),this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);}}}}}}catch(_0x32f761){logger[_0x0a9e('0x50')]('[%s][voiceAgentReport][agentcomplete]',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x32f761,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x255e49){try{if(this[_0x0a9e('0x1e')](_0x255e49)){logger[_0x0a9e('0x23')](_0x0a9e('0x64'),_0x255e49['uniqueid'],util[_0x0a9e('0x25')](_0x255e49,{'showHidden':![],'depth':null}));this[_0x0a9e('0x65')](_0x255e49['uniqueid'],_[_0x0a9e('0x66')](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(this['channels'][_0x255e49[_0x0a9e('0x26')]]){for(var _0x52ec10 in this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x52ec10)){logger[_0x0a9e('0x20')](_0x0a9e('0x69'),_0x255e49[_0x0a9e('0x26')],_0x52ec10,_['keys'](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')])){this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]=this[_0x0a9e('0xb')][_0x255e49['uniqueid']];}}}}}catch(_0xc81b64){logger[_0x0a9e('0x50')](_0x0a9e('0x6a'),_0x255e49[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xc81b64,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x65')]=function(_0x1756c7,_0x5ce99d,_0x23b447){var _0x5e725e=[_0x0a9e('0x6b'),_0x0a9e('0x6c'),_0x0a9e('0x6d'),_0x0a9e('0x6e'),'rtpaudioqosloss',_0x0a9e('0x6f'),'rtpaudioqosrtt',_0x0a9e('0x70'),_0x0a9e('0x71'),'sipuri',_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),'memberdynamic','memberinterface',_0x0a9e('0x75'),_0x0a9e('0x21'),_0x0a9e('0x76'),_0x0a9e('0x77')];if(!_[_0x0a9e('0x78')](_0x5ce99d)&&!_[_0x0a9e('0x79')](_0x5e725e,_0x5ce99d)){if(_[_0x0a9e('0x1f')](this[_0x0a9e('0xb')][_0x1756c7])){this[_0x0a9e('0xb')][_0x1756c7]={};}this['variables'][_0x1756c7][_0x5ce99d]=_0x23b447;}};VoiceAgentReport[_0x0a9e('0x1c')]['syncHangup']=function(_0x287324){try{if(this[_0x0a9e('0x1e')](_0x287324)){logger[_0x0a9e('0x23')](_0x0a9e('0x7a'),_0x287324[_0x0a9e('0x26')],util['inspect'](_0x287324,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){for(var _0x2791c5 in this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){if(this['channels'][_0x287324['uniqueid']][_0x0a9e('0x36')](_0x2791c5)){if(this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x56')]==_0x0a9e('0x5b')&&this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x287324[_0x0a9e('0x26')],_0x2791c5);this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5]['agentcompleteAt']=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger['debug'](_0x0a9e('0x7b'),_0x287324[_0x0a9e('0x26')],util['inspect'](_[_0x0a9e('0x7c')](this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x7d'),_['values'](this['channels'][_0x287324[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]];}if(this[_0x0a9e('0xb')][_0x287324[_0x0a9e('0x26')]]){delete this['variables'][_0x287324[_0x0a9e('0x26')]];}}}catch(_0xadce3d){logger['error'](_0x0a9e('0x7e'),_0x287324[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xadce3d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x7f')]=function(_0x23b39e){try{if(this[_0x0a9e('0x1e')](_0x23b39e)){logger[_0x0a9e('0x23')](_0x0a9e('0x80'),_0x23b39e[_0x0a9e('0x26')],util['inspect'](_0x23b39e,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){for(var _0x2ada60 in this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){if(this['channels'][_0x23b39e['transfereeuniqueid']][_0x0a9e('0x36')](_0x2ada60)){if(_0x23b39e[_0x0a9e('0x82')]===_0x2ada60){logger[_0x0a9e('0x20')](_0x0a9e('0x83'),_0x23b39e[_0x0a9e('0x26')],this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x21')],_0x2ada60);var _0x3450ae=moment();this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x23b39e['transfereeuniqueid']][_0x2ada60][_0x0a9e('0x59')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['lastevent']=_0x0a9e('0x5a');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x5d')]=_0x3450ae[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x37')],_0x0a9e('0x85'));}}}}if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x86')]]){var _0x248368=this['channels'][_0x23b39e['secondtransfereruniqueid']];this[_0x0a9e('0x8')][_0x23b39e['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]];this['channels'][_0x23b39e[_0x0a9e('0x81')]]=_0x248368;}}}catch(_0xe2b083){logger[_0x0a9e('0x50')](_0x0a9e('0x87'),_0x23b39e['uniqueid'],util[_0x0a9e('0x25')](_0xe2b083,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1b')]=function(_0x34a791){try{if(this['isNotNull'](_0x34a791)){logger[_0x0a9e('0x23')](_0x0a9e('0x88'),_0x34a791[_0x0a9e('0x26')],util['inspect'](_0x34a791,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]]){for(var _0x17b29d in this['channels'][_0x34a791[_0x0a9e('0x81')]]){if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x0a9e('0x36')](_0x17b29d)){if(_0x34a791[_0x0a9e('0x89')]===_0x17b29d){logger['info'](_0x0a9e('0x8a'),_0x34a791[_0x0a9e('0x26')],this['channels'][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x21')],_0x17b29d);var _0x1f6f1c=moment();this['channels'][_0x34a791['transfereeuniqueid']][_0x17b29d]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d]['agentcompleteAt']=_0x1f6f1c;this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x3d')]='complete';this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x5d')]=_0x1f6f1c[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x34a791['transfereeuniqueid']][_0x17b29d][_0x0a9e('0x37')],'seconds');}}}}}}catch(_0x138cf5){logger[_0x0a9e('0x50')](_0x0a9e('0x8b'),_0x34a791[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x138cf5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStart']=function(_0x1a0314){var _0x33da81='';try{if(this[_0x0a9e('0x1e')](_0x1a0314)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1a0314,{'showHidden':![],'depth':null}));if(_0x1a0314[_0x0a9e('0x8c')]){_0x33da81=_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0x33da81]){logger[_0x0a9e('0x20')](_0x0a9e('0x8f'),_0x1a0314['uniqueid'],_0x33da81);this[_0x0a9e('0xa')][_0x33da81][_0x0a9e('0x90')]=!![];}}}}catch(_0x2ff265){logger[_0x0a9e('0x50')](_0x0a9e('0x91'),_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2ff265,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStop']=function(_0x3b581c){var _0xd2391='';try{if(this[_0x0a9e('0x1e')](_0x3b581c)){logger['debug'](_0x0a9e('0x92'),_0x3b581c[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3b581c,{'showHidden':![],'depth':null}));if(_0x3b581c[_0x0a9e('0x8c')]){_0xd2391=_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0xd2391]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x3b581c[_0x0a9e('0x26')],_0xd2391);this[_0x0a9e('0xa')][_0xd2391][_0x0a9e('0x90')]=![];}}}}catch(_0x3db98f){logger[_0x0a9e('0x50')](_0x0a9e('0x93'),_0x3b581c['uniqueid'],util[_0x0a9e('0x25')](_0x3db98f,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
+var _0xe74d=['YYYY-MM-DD\x20HH:mm:ss','called','voiceQueues','queue','mandatoryDisposition','type','inbound','voice','merge','omit','event','privilege','debug','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','user:%s','user:called','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','agentringnoanswer','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','agentringnoanswerAt','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','error','[%s][voiceAgentReport][agentringnoanswer]','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','talktime','acw','acwtime','interface','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','value','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','seconds','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','defaults','redis','localhost','socket.io-emitter','channels','voiceChannels','agents','variables','syncAgentCalled','syncAgentConnect','bind','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','hangup','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','prototype','emit','isNotNull','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','isUndefined','destuniqueid'];(function(_0x1ea056,_0x568b32){var _0x8cd8b4=function(_0xffaf11){while(--_0xffaf11){_0x1ea056['push'](_0x1ea056['shift']());}};_0x8cd8b4(++_0x568b32);}(_0xe74d,0x1a0));var _0xde74=function(_0x56ea12,_0x304238){_0x56ea12=_0x56ea12-0x0;var _0x4b9883=_0xe74d[_0x56ea12];return _0x4b9883;};'use strict';var _=require(_0xde74('0x0'));var moment=require(_0xde74('0x1'));var util=require(_0xde74('0x2'));var Redis=require(_0xde74('0x3'));var config=require(_0xde74('0x4'));var logger=require(_0xde74('0x5'))(_0xde74('0x6'));var ami=require(_0xde74('0x7'));config['redis']=_[_0xde74('0x8')](config[_0xde74('0x9')],{'host':_0xde74('0xa'),'port':0x18eb});var io=require(_0xde74('0xb'))(new Redis(config[_0xde74('0x9')]));function VoiceAgentReport(_0x5aa72e){this[_0xde74('0xc')]={};this[_0xde74('0xd')]=_0x5aa72e['channels'];this['voiceQueues']=_0x5aa72e['voiceQueues'];this['agents']=_0x5aa72e[_0xde74('0xe')];this[_0xde74('0xf')]={};ami['on']('agentcalled',this[_0xde74('0x10')]['bind'](this));ami['on']('agentconnect',this[_0xde74('0x11')][_0xde74('0x12')](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer']['bind'](this));ami['on']('queuecallerabandon',this[_0xde74('0x13')][_0xde74('0x12')](this));ami['on'](_0xde74('0x14'),this[_0xde74('0x15')][_0xde74('0x12')](this));ami['on']('varset',this['syncVarSet'][_0xde74('0x12')](this));ami['on'](_0xde74('0x16'),this['syncHangup'][_0xde74('0x12')](this));ami['on'](_0xde74('0x17'),this[_0xde74('0x18')][_0xde74('0x12')](this));ami['on']('musiconholdstop',this[_0xde74('0x19')][_0xde74('0x12')](this));ami['on'](_0xde74('0x1a'),this[_0xde74('0x1b')][_0xde74('0x12')](this));ami['on'](_0xde74('0x1c'),this['syncBlindTransfer']['bind'](this));}VoiceAgentReport[_0xde74('0x1d')][_0xde74('0x1e')]=function(_0x2109b7,_0x5d33a9,_0x45782d){io['to'](_0x2109b7)['emit'](_0x5d33a9,_0x45782d);};VoiceAgentReport['prototype'][_0xde74('0x1f')]=function(_0x3b9330){return _0x3b9330!==null&&!_['isUndefined'](_0x3b9330);};VoiceAgentReport['prototype'][_0xde74('0x10')]=function(_0x3f81a7){try{if(this[_0xde74('0x1f')](_0x3f81a7)){logger[_0xde74('0x20')](_0xde74('0x21'),_0x3f81a7[_0xde74('0x22')],_0x3f81a7[_0xde74('0x23')],_0x3f81a7['destuniqueid']);logger['debug'](_0xde74('0x24'),_0x3f81a7[_0xde74('0x22')],util[_0xde74('0x25')](_0x3f81a7,{'showHidden':![],'depth':null}));if(_[_0xde74('0x26')](this[_0xde74('0xc')][_0x3f81a7[_0xde74('0x22')]])){this[_0xde74('0xc')][_0x3f81a7[_0xde74('0x22')]]={};}if(_[_0xde74('0x26')](this[_0xde74('0xc')][_0x3f81a7['uniqueid']][_0x3f81a7['destuniqueid']])){this[_0xde74('0xc')][_0x3f81a7[_0xde74('0x22')]][_0x3f81a7[_0xde74('0x27')]]={'agentcalledAt':moment()['format'](_0xde74('0x28')),'lastevent':_0xde74('0x29'),'mandatoryDisposition':this[_0xde74('0x2a')][_0x3f81a7[_0xde74('0x2b')]]?this[_0xde74('0x2a')][_0x3f81a7[_0xde74('0x2b')]][_0xde74('0x2c')]||![]:![],'type':this[_0xde74('0x2a')][_0x3f81a7[_0xde74('0x2b')]]?this[_0xde74('0x2a')][_0x3f81a7[_0xde74('0x2b')]][_0xde74('0x2d')]||_0xde74('0x2e'):_0xde74('0x2e'),'variables':this[_0xde74('0xf')][_0x3f81a7[_0xde74('0x22')]],'motionChannel':_0xde74('0x2f')};}_[_0xde74('0x30')](this[_0xde74('0xc')][_0x3f81a7[_0xde74('0x22')]][_0x3f81a7[_0xde74('0x27')]],_[_0xde74('0x31')](_0x3f81a7,[_0xde74('0x32'),_0xde74('0x33')]));logger[_0xde74('0x34')](_0xde74('0x35'),_0x3f81a7[_0xde74('0x22')],util['inspect'](this[_0xde74('0xc')][_0x3f81a7['uniqueid']][_0x3f81a7['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0xde74('0x1e')](_0xde74('0x36'),this['channels'][_0x3f81a7[_0xde74('0x22')]][_0x3f81a7[_0xde74('0x27')]]);logger['debug'](_0xde74('0x37'),_0x3f81a7[_0xde74('0x22')],util['inspect'](this[_0xde74('0xc')][_0x3f81a7['uniqueid']][_0x3f81a7['destuniqueid']],{'showHidden':![],'depth':null}));this[_0xde74('0x1e')](util[_0xde74('0x38')](_0xde74('0x39'),_0x3f81a7['membername']),_0xde74('0x3a'),this['channels'][_0x3f81a7[_0xde74('0x22')]][_0x3f81a7[_0xde74('0x27')]]);}}catch(_0x1aac99){logger['error'](_0xde74('0x3b'),_0x3f81a7[_0xde74('0x22')],util[_0xde74('0x25')](_0x1aac99,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xde74('0x1d')][_0xde74('0x11')]=function(_0x182711){try{if(this[_0xde74('0x1f')](_0x182711)){if(this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]]){logger[_0xde74('0x34')](_0xde74('0x3c'),_0x182711[_0xde74('0x22')],util[_0xde74('0x25')](_0x182711,{'showHidden':![],'depth':null}));for(var _0x4172d8 in this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]]){if(this['channels'][_0x182711[_0xde74('0x22')]]['hasOwnProperty'](_0x4172d8)){if(_0x182711[_0xde74('0x27')]===_0x4172d8){logger[_0xde74('0x20')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x182711[_0xde74('0x22')],_0x182711['membername'],_0x182711[_0xde74('0x27')]);this[_0xde74('0xc')][_0x182711['uniqueid']][_0x4172d8][_0xde74('0x3d')]=moment()[_0xde74('0x38')](_0xde74('0x28'));this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x4172d8][_0xde74('0x3e')]=_0x182711[_0xde74('0x3e')];this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x4172d8][_0xde74('0x3f')]=_0x182711[_0xde74('0x3f')];this['channels'][_0x182711['uniqueid']][_0x4172d8][_0xde74('0x40')]=_0x182711['destchannelstate'];this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x4172d8][_0xde74('0x41')]=_0x182711[_0xde74('0x41')];this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x4172d8][_0xde74('0x42')]=_0x182711[_0xde74('0x42')];this[_0xde74('0xc')][_0x182711['uniqueid']][_0x4172d8][_0xde74('0x43')]=_0xde74('0x44');if(this[_0xde74('0xd')][this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x4172d8]['uniqueid']]){var _0x13361b=this[_0xde74('0xd')][this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x4172d8][_0xde74('0x22')]][_0xde74('0x45')];this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x4172d8]['routealias']=_0x13361b;_0x182711[_0xde74('0x45')]=_0x13361b;}_['merge'](this[_0xde74('0xe')][_0x182711['interface']],_[_0xde74('0x46')](_0x182711,[_0xde74('0x2b'),_0xde74('0x47'),_0xde74('0x45')]));logger[_0xde74('0x34')](_0xde74('0x48'),_0x182711[_0xde74('0x22')],util[_0xde74('0x25')](this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x182711['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0xde74('0x1e')]('custom:agentconnect',this[_0xde74('0xc')][_0x182711['uniqueid']][_0x182711[_0xde74('0x27')]]);logger[_0xde74('0x34')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x182711[_0xde74('0x22')],util[_0xde74('0x25')](this[_0xde74('0xc')][_0x182711['uniqueid']][_0x182711[_0xde74('0x27')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xde74('0x39'),_0x182711['membername']),'user:agentconnect',this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x182711['destuniqueid']]);}else if(!this['channels'][_0x182711[_0xde74('0x22')]][_0x4172d8][_0xde74('0x49')]&&!this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x4172d8][_0xde74('0x14')]){logger[_0xde74('0x20')](_0xde74('0x4a'),_0x182711[_0xde74('0x22')],this[_0xde74('0xc')][_0x182711['uniqueid']][_0x4172d8][_0xde74('0x23')],_0x4172d8);this['channels'][_0x182711[_0xde74('0x22')]][_0x4172d8]['agentringnoanswer']=!![];this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x4172d8]['agentringnoanswerAt']=moment()[_0xde74('0x38')](_0xde74('0x28'));this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x4172d8]['answeredelsewheredestinationuniqueid']=_0x182711['destuniqueid'];this[_0xde74('0xc')][_0x182711['uniqueid']][_0x4172d8][_0xde74('0x4b')]=_0x182711[_0xde74('0x23')];this['channels'][_0x182711['uniqueid']][_0x4172d8][_0xde74('0x43')]=_0xde74('0x4c');this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x4172d8][_0xde74('0x4d')]=_0xde74('0x4c');logger[_0xde74('0x34')](_0xde74('0x4e'),_0x182711[_0xde74('0x22')],util[_0xde74('0x25')](this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x4172d8],{'showHidden':![],'depth':null}));ami[_0xde74('0x1e')](_0xde74('0x4f'),this[_0xde74('0xc')][_0x182711[_0xde74('0x22')]][_0x4172d8]);}}}}}}catch(_0x4bd192){logger['error']('[%s][voiceAgentReport][agentconnect]',_0x182711[_0xde74('0x22')],util[_0xde74('0x25')](_0x4bd192,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xde74('0x1d')][_0xde74('0x50')]=function(_0x61c4d8){try{if(this[_0xde74('0x1f')](_0x61c4d8)){logger[_0xde74('0x34')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x61c4d8[_0xde74('0x22')],util[_0xde74('0x25')](_0x61c4d8,{'showHidden':![],'depth':null}));if(this['channels'][_0x61c4d8[_0xde74('0x22')]]&&this['channels'][_0x61c4d8[_0xde74('0x22')]][_0x61c4d8[_0xde74('0x27')]]){logger[_0xde74('0x20')](_0xde74('0x51'),_0x61c4d8[_0xde74('0x22')],_0x61c4d8['membername'],_0x61c4d8[_0xde74('0x27')]);this[_0xde74('0xc')][_0x61c4d8[_0xde74('0x22')]][_0x61c4d8['destuniqueid']][_0xde74('0x49')]=!![];this[_0xde74('0xc')][_0x61c4d8[_0xde74('0x22')]][_0x61c4d8['destuniqueid']][_0xde74('0x52')]=moment()['format'](_0xde74('0x28'));this[_0xde74('0xc')][_0x61c4d8[_0xde74('0x22')]][_0x61c4d8[_0xde74('0x27')]]['lastevent']=_0xde74('0x53');this[_0xde74('0xc')][_0x61c4d8['uniqueid']][_0x61c4d8[_0xde74('0x27')]][_0xde74('0x4d')]=_0xde74('0x53');logger['debug'](_0xde74('0x54'),_0x61c4d8[_0xde74('0x22')],util['inspect'](this[_0xde74('0xc')][_0x61c4d8['uniqueid']][_0x61c4d8[_0xde74('0x27')]],{'showHidden':![],'depth':null}));ami['emit']('custom:agentringnoanswer',this[_0xde74('0xc')][_0x61c4d8[_0xde74('0x22')]][_0x61c4d8[_0xde74('0x27')]]);}}}catch(_0x465997){logger[_0xde74('0x55')](_0xde74('0x56'),_0x61c4d8[_0xde74('0x22')],util[_0xde74('0x25')](_0x465997,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xde74('0x1d')]['syncQueueCallerAbandon']=function(_0x320711){try{if(this[_0xde74('0x1f')](_0x320711)){logger[_0xde74('0x34')]('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0x320711[_0xde74('0x22')],util['inspect'](_0x320711,{'showHidden':![],'depth':null}));if(this['channels'][_0x320711['uniqueid']]){for(var _0x4b612a in this[_0xde74('0xc')][_0x320711['uniqueid']]){if(this[_0xde74('0xc')][_0x320711[_0xde74('0x22')]][_0xde74('0x57')](_0x4b612a)&&!this[_0xde74('0xc')][_0x320711[_0xde74('0x22')]][_0x4b612a][_0xde74('0x49')]&&!this['channels'][_0x320711['uniqueid']][_0x4b612a][_0xde74('0x14')]){logger[_0xde74('0x20')](_0xde74('0x58'),_0x320711[_0xde74('0x22')],this[_0xde74('0xc')][_0x320711['uniqueid']][_0x4b612a][_0xde74('0x23')],_0x4b612a);this['channels'][_0x320711['uniqueid']][_0x4b612a][_0xde74('0x49')]=!![];this[_0xde74('0xc')][_0x320711['uniqueid']][_0x4b612a][_0xde74('0x52')]=moment()['format'](_0xde74('0x28'));this[_0xde74('0xc')][_0x320711[_0xde74('0x22')]][_0x4b612a]['lastevent']=_0xde74('0x59');this[_0xde74('0xc')][_0x320711[_0xde74('0x22')]][_0x4b612a][_0xde74('0x4d')]=_0xde74('0x59');logger[_0xde74('0x34')](_0xde74('0x5a'),_0x320711[_0xde74('0x22')],util[_0xde74('0x25')](this['channels'][_0x320711['uniqueid']][_0x4b612a],{'showHidden':![],'depth':null}));ami[_0xde74('0x1e')](_0xde74('0x5b'),this[_0xde74('0xc')][_0x320711['uniqueid']][_0x4b612a]);}}}}}catch(_0x2fcea0){logger[_0xde74('0x55')](_0xde74('0x5c'),_0x320711[_0xde74('0x22')],util[_0xde74('0x25')](_0x2fcea0,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xde74('0x1d')][_0xde74('0x15')]=function(_0x242684){try{if(this[_0xde74('0x1f')](_0x242684)){logger[_0xde74('0x34')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x242684[_0xde74('0x22')],util[_0xde74('0x25')](_0x242684,{'showHidden':![],'depth':null}));if(this['channels'][_0x242684[_0xde74('0x22')]]){for(var _0x1489a9 in this[_0xde74('0xc')][_0x242684['uniqueid']]){if(this[_0xde74('0xc')][_0x242684[_0xde74('0x22')]][_0xde74('0x57')](_0x1489a9)){if(this[_0xde74('0xc')][_0x242684[_0xde74('0x22')]][_0x1489a9][_0xde74('0x3d')]&&!this[_0xde74('0xc')][_0x242684[_0xde74('0x22')]][_0x1489a9][_0xde74('0x14')]){logger[_0xde74('0x20')](_0xde74('0x5d'),_0x242684[_0xde74('0x22')],this['channels'][_0x242684[_0xde74('0x22')]][_0x1489a9][_0xde74('0x23')],_0x1489a9);this['channels'][_0x242684[_0xde74('0x22')]][_0x1489a9]['agentcomplete']=!![];this[_0xde74('0xc')][_0x242684['uniqueid']][_0x1489a9][_0xde74('0x5e')]=moment()['format'](_0xde74('0x28'));this['channels'][_0x242684[_0xde74('0x22')]][_0x1489a9][_0xde74('0x43')]=_0xde74('0x5f');this[_0xde74('0xc')][_0x242684[_0xde74('0x22')]][_0x1489a9]['reason']=_0x242684[_0xde74('0x4d')]==_0xde74('0x60')?'agent':_0x242684[_0xde74('0x4d')];this[_0xde74('0xc')][_0x242684[_0xde74('0x22')]][_0x1489a9]['talktime']=_0x242684[_0xde74('0x61')];if(this[_0xde74('0x2a')][_0x242684[_0xde74('0x2b')]]&&this[_0xde74('0x2a')][_0x242684[_0xde74('0x2b')]][_0xde74('0x62')]){this[_0xde74('0xc')][_0x242684['uniqueid']][_0x1489a9][_0xde74('0x63')]=this['voiceQueues'][_0x242684[_0xde74('0x2b')]]['acwTimeout'];this[_0xde74('0xc')][_0x242684[_0xde74('0x22')]][_0x1489a9]['agentacw']=!![];}this[_0xde74('0xe')][_0x242684[_0xde74('0x64')]]=_['omit'](this[_0xde74('0xe')][_0x242684['interface']],[_0xde74('0x2b'),'destconnectedlinenum']);logger['debug'](_0xde74('0x65'),_0x242684[_0xde74('0x22')],util[_0xde74('0x25')](this[_0xde74('0xc')][_0x242684[_0xde74('0x22')]][_0x1489a9],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcomplete',this['channels'][_0x242684[_0xde74('0x22')]][_0x1489a9]);logger[_0xde74('0x34')](_0xde74('0x66'),_0x242684[_0xde74('0x22')],util['inspect'](this[_0xde74('0xc')][_0x242684[_0xde74('0x22')]][_0x1489a9],{'showHidden':![],'depth':null}));this['emit'](util[_0xde74('0x38')](_0xde74('0x39'),_0x242684[_0xde74('0x23')]),_0xde74('0x67'),this['channels'][_0x242684[_0xde74('0x22')]][_0x1489a9]);}}}}}}catch(_0x30f000){logger[_0xde74('0x55')](_0xde74('0x68'),_0x242684[_0xde74('0x22')],util[_0xde74('0x25')](_0x30f000,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xde74('0x1d')]['syncVarSet']=function(_0x3e8981){try{if(this[_0xde74('0x1f')](_0x3e8981)){logger['debug'](_0xde74('0x69'),_0x3e8981['uniqueid'],util['inspect'](_0x3e8981,{'showHidden':![],'depth':null}));this[_0xde74('0x6a')](_0x3e8981[_0xde74('0x22')],_[_0xde74('0x6b')](_0x3e8981['variable'])[0x0],_0x3e8981['value']);if(this[_0xde74('0xc')][_0x3e8981[_0xde74('0x22')]]){for(var _0x93c9e in this['channels'][_0x3e8981['uniqueid']]){if(this[_0xde74('0xc')][_0x3e8981['uniqueid']][_0xde74('0x57')](_0x93c9e)){logger[_0xde74('0x20')](_0xde74('0x6c'),_0x3e8981[_0xde74('0x22')],_0x93c9e,_[_0xde74('0x6b')](_0x3e8981['variable'])[0x0],_0x3e8981[_0xde74('0x6d')]);if(_['isUndefined'](this['channels'][_0x3e8981['uniqueid']][_0x93c9e][_0xde74('0xf')])){this[_0xde74('0xc')][_0x3e8981[_0xde74('0x22')]][_0x93c9e]['variables']={};}this['channels'][_0x3e8981[_0xde74('0x22')]][_0x93c9e][_0xde74('0xf')]=this[_0xde74('0xf')][_0x3e8981[_0xde74('0x22')]];}}}}}catch(_0xe11250){logger[_0xde74('0x55')](_0xde74('0x6e'),_0x3e8981[_0xde74('0x22')],util[_0xde74('0x25')](_0xe11250,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xde74('0x1d')][_0xde74('0x6a')]=function(_0x1c82d1,_0x3a961f,_0x52e3c2){var _0x461f8a=[_0xde74('0x6f'),_0xde74('0x70'),_0xde74('0x71'),'rtpaudioqosjitterbridged',_0xde74('0x72'),_0xde74('0x73'),'rtpaudioqosrtt',_0xde74('0x74'),'sipcallid','sipuri',_0xde74('0x75'),_0xde74('0x76'),_0xde74('0x77'),_0xde74('0x78'),_0xde74('0x79'),_0xde74('0x7a'),'membername',_0xde74('0x7b'),_0xde74('0x7c')];if(!_[_0xde74('0x7d')](_0x3a961f)&&!_[_0xde74('0x7e')](_0x461f8a,_0x3a961f)){if(_['isUndefined'](this[_0xde74('0xf')][_0x1c82d1])){this['variables'][_0x1c82d1]={};}this[_0xde74('0xf')][_0x1c82d1][_0x3a961f]=_0x52e3c2;}};VoiceAgentReport[_0xde74('0x1d')][_0xde74('0x7f')]=function(_0x37f304){try{if(this[_0xde74('0x1f')](_0x37f304)){logger['debug'](_0xde74('0x80'),_0x37f304[_0xde74('0x22')],util[_0xde74('0x25')](_0x37f304,{'showHidden':![],'depth':null}));if(this[_0xde74('0xc')][_0x37f304[_0xde74('0x22')]]){for(var _0x1affbc in this[_0xde74('0xc')][_0x37f304[_0xde74('0x22')]]){if(this[_0xde74('0xc')][_0x37f304[_0xde74('0x22')]][_0xde74('0x57')](_0x1affbc)){if(this[_0xde74('0xc')][_0x37f304[_0xde74('0x22')]][_0x1affbc]['reason']==_0xde74('0x60')&&this[_0xde74('0xc')][_0x37f304['uniqueid']][_0x1affbc][_0xde74('0x14')]){logger[_0xde74('0x20')](_0xde74('0x81'),_0x37f304[_0xde74('0x22')],_0x1affbc);this['channels'][_0x37f304['uniqueid']][_0x1affbc][_0xde74('0x5e')]=moment()[_0xde74('0x38')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger['debug'](_0xde74('0x82'),_0x37f304[_0xde74('0x22')],util['inspect'](_[_0xde74('0x83')](this[_0xde74('0xc')][_0x37f304['uniqueid']]),{'showHidden':![],'depth':null}));ami[_0xde74('0x1e')](_0xde74('0x84'),_[_0xde74('0x83')](this[_0xde74('0xc')][_0x37f304[_0xde74('0x22')]]));delete this[_0xde74('0xc')][_0x37f304[_0xde74('0x22')]];}if(this[_0xde74('0xf')][_0x37f304[_0xde74('0x22')]]){delete this['variables'][_0x37f304[_0xde74('0x22')]];}}}catch(_0x2a13fa){logger[_0xde74('0x55')](_0xde74('0x85'),_0x37f304['uniqueid'],util[_0xde74('0x25')](_0x2a13fa,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xde74('0x1b')]=function(_0x35cf4e){try{if(this['isNotNull'](_0x35cf4e)){logger[_0xde74('0x34')](_0xde74('0x86'),_0x35cf4e['uniqueid'],util['inspect'](_0x35cf4e,{'showHidden':![],'depth':null}));if(this[_0xde74('0xc')][_0x35cf4e['transfereeuniqueid']]){for(var _0x2012e8 in this['channels'][_0x35cf4e[_0xde74('0x87')]]){if(this[_0xde74('0xc')][_0x35cf4e['transfereeuniqueid']]['hasOwnProperty'](_0x2012e8)){if(_0x35cf4e['origtransfereruniqueid']===_0x2012e8){logger[_0xde74('0x20')](_0xde74('0x88'),_0x35cf4e[_0xde74('0x22')],this[_0xde74('0xc')][_0x35cf4e[_0xde74('0x87')]][_0x2012e8][_0xde74('0x23')],_0x2012e8);var _0xc6bf3b=moment();this[_0xde74('0xc')][_0x35cf4e['transfereeuniqueid']][_0x2012e8][_0xde74('0x14')]=!![];this[_0xde74('0xc')][_0x35cf4e[_0xde74('0x87')]][_0x2012e8][_0xde74('0x5e')]=moment()[_0xde74('0x38')](_0xde74('0x28'));this[_0xde74('0xc')][_0x35cf4e['transfereeuniqueid']][_0x2012e8][_0xde74('0x43')]=_0xde74('0x5f');this['channels'][_0x35cf4e[_0xde74('0x87')]][_0x2012e8]['reason']=_0xde74('0x60');this[_0xde74('0xc')][_0x35cf4e[_0xde74('0x87')]][_0x2012e8][_0xde74('0x61')]=_0xc6bf3b[_0xde74('0x89')](this[_0xde74('0xc')][_0x35cf4e[_0xde74('0x87')]][_0x2012e8][_0xde74('0x3d')],'seconds');}}}}if(this[_0xde74('0xc')][_0x35cf4e[_0xde74('0x8a')]]){var _0x24f616=this['channels'][_0x35cf4e[_0xde74('0x8a')]];this[_0xde74('0xc')][_0x35cf4e[_0xde74('0x8a')]]=this[_0xde74('0xc')][_0x35cf4e[_0xde74('0x87')]];this[_0xde74('0xc')][_0x35cf4e[_0xde74('0x87')]]=_0x24f616;}}}catch(_0x5685f6){logger['error'](_0xde74('0x8b'),_0x35cf4e[_0xde74('0x22')],util['inspect'](_0x5685f6,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xde74('0x1d')]['syncBlindTransfer']=function(_0xeb10a8){try{if(this[_0xde74('0x1f')](_0xeb10a8)){logger[_0xde74('0x34')]('[%s][voiceAgentReport][blindtransfer]\x20event:',_0xeb10a8[_0xde74('0x22')],util[_0xde74('0x25')](_0xeb10a8,{'showHidden':![],'depth':null}));if(this[_0xde74('0xc')][_0xeb10a8['transfereeuniqueid']]){for(var _0x125661 in this[_0xde74('0xc')][_0xeb10a8['transfereeuniqueid']]){if(this['channels'][_0xeb10a8[_0xde74('0x87')]][_0xde74('0x57')](_0x125661)){if(_0xeb10a8[_0xde74('0x8c')]===_0x125661){logger[_0xde74('0x20')](_0xde74('0x8d'),_0xeb10a8['uniqueid'],this[_0xde74('0xc')][_0xeb10a8['transfereeuniqueid']][_0x125661][_0xde74('0x23')],_0x125661);var _0x4579c5=moment();this[_0xde74('0xc')][_0xeb10a8[_0xde74('0x87')]][_0x125661][_0xde74('0x14')]=!![];this[_0xde74('0xc')][_0xeb10a8[_0xde74('0x87')]][_0x125661]['agentcompleteAt']=_0x4579c5;this[_0xde74('0xc')][_0xeb10a8[_0xde74('0x87')]][_0x125661]['lastevent']='complete';this[_0xde74('0xc')][_0xeb10a8['transfereeuniqueid']][_0x125661][_0xde74('0x4d')]=_0xde74('0x60');this['channels'][_0xeb10a8[_0xde74('0x87')]][_0x125661]['talktime']=_0x4579c5[_0xde74('0x89')](this[_0xde74('0xc')][_0xeb10a8[_0xde74('0x87')]][_0x125661]['agentconnectAt'],_0xde74('0x8e'));}}}}}}catch(_0x46dce6){logger['error']('[%s][voiceAgentReport][blindtransfer]',_0xeb10a8[_0xde74('0x22')],util[_0xde74('0x25')](_0x46dce6,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xde74('0x1d')][_0xde74('0x18')]=function(_0x4d0030){var _0x5c4423='';try{if(this[_0xde74('0x1f')](_0x4d0030)){logger[_0xde74('0x34')](_0xde74('0x8f'),_0x4d0030[_0xde74('0x22')],util['inspect'](_0x4d0030,{'showHidden':![],'depth':null}));if(_0x4d0030[_0xde74('0x90')]){_0x5c4423=_0x4d0030[_0xde74('0x90')][_0xde74('0x91')](0x0,_0x4d0030[_0xde74('0x90')][_0xde74('0x92')]('-'));if(this['agents'][_0x5c4423]){logger['info'](_0xde74('0x93'),_0x4d0030['uniqueid'],_0x5c4423);this[_0xde74('0xe')][_0x5c4423][_0xde74('0x94')]=!![];}}}}catch(_0x3e0509){logger[_0xde74('0x55')](_0xde74('0x95'),_0x4d0030[_0xde74('0x22')],util[_0xde74('0x25')](_0x3e0509,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xde74('0x1d')]['syncMusicOnHoldStop']=function(_0x235e3d){var _0x11d33d='';try{if(this['isNotNull'](_0x235e3d)){logger[_0xde74('0x34')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x235e3d['uniqueid'],util[_0xde74('0x25')](_0x235e3d,{'showHidden':![],'depth':null}));if(_0x235e3d[_0xde74('0x90')]){_0x11d33d=_0x235e3d[_0xde74('0x90')]['substring'](0x0,_0x235e3d[_0xde74('0x90')][_0xde74('0x92')]('-'));if(this['agents'][_0x11d33d]){logger[_0xde74('0x20')](_0xde74('0x96'),_0x235e3d['uniqueid'],_0x11d33d);this['agents'][_0x11d33d][_0xde74('0x94')]=![];}}}}catch(_0x1283ed){logger[_0xde74('0x55')](_0xde74('0x97'),_0x235e3d[_0xde74('0x22')],util['inspect'](_0x1283ed,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
index 7eac85f..e40222c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6bd=['user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','destconnectedlinenum','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newexten]\x20event:','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','application','subtract','duration','seconds','includes','lastapplication','lastdata','cdr(','match','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','connectedlinename','destinationchannel','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','syncMixMonitorFilename','monitor','endsWith','.wav49','monitorFilename','monitors','isNil','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','sipcallid','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','diff','billableseconds','holdtime','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','then','transferType','isEmpty','getSettings','resolve','Action','StopMixMonitor','catch','finally','event','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','syncAttendedTransfer','origtransferercalleridnum','transfertargetcalleridnum','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','syncBlindTransfer','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','BlindTransfer','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','mohtime','exports','bluebird','moment','util','path','ioredis','../../../config/environment','ami','../ami','../model/channel','../rpc/setting','unknown','not_inuse','busy','ringing','ringinuse','onhold','set','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','localhost','channels','agents','blindTransfers','syncNewExten','bind','newchannel','syncNewChannel','syncNewState','varset','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','info','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','isNotNull','isUndefined','prototype','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','linkedid','merge','pick','keys','context','from-sip','split','exten','xcally-motion-preview','channel','connectedlinenum','format','user:%s','name'];(function(_0x1987dd,_0x336072){var _0x147d83=function(_0x5c603c){while(--_0x5c603c){_0x1987dd['push'](_0x1987dd['shift']());}};_0x147d83(++_0x336072);}(_0xb6bd,0x80));var _0xdb6b=function(_0x541733,_0x3f23a5){_0x541733=_0x541733-0x0;var _0x572194=_0xb6bd[_0x541733];return _0x572194;};'use strict';var BPromise=require(_0xdb6b('0x0'));var _=require('lodash');var moment=require(_0xdb6b('0x1'));var util=require(_0xdb6b('0x2'));var path=require(_0xdb6b('0x3'));var Redis=require(_0xdb6b('0x4'));var config=require(_0xdb6b('0x5'));var logger=require('../../../config/logger')(_0xdb6b('0x6'));var ami=require(_0xdb6b('0x7'));var Channel=require(_0xdb6b('0x8'));var RpcSetting=require(_0xdb6b('0x9'));var statusDesc=[_0xdb6b('0xa'),_0xdb6b('0xb'),'inuse',_0xdb6b('0xc'),'invalid','unavailable',_0xdb6b('0xd'),_0xdb6b('0xe'),_0xdb6b('0xf')];var applications=[_0xdb6b('0x10'),_0xdb6b('0x11'),_0xdb6b('0x12'),_0xdb6b('0x13'),_0xdb6b('0x14'),_0xdb6b('0x15')];var dispositions=[_0xdb6b('0x16'),_0xdb6b('0x17'),'FAILED','NO\x20ANSWER','NO\x20ANSWER',_0xdb6b('0x16'),'ANSWERED',_0xdb6b('0x18'),_0xdb6b('0x17'),_0xdb6b('0x17'),_0xdb6b('0x17')];var actions={};config[_0xdb6b('0x19')]=_[_0xdb6b('0x1a')](config[_0xdb6b('0x19')],{'host':_0xdb6b('0x1b'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xdb6b('0x19')]));function VoiceCallReport(_0x25a226){this['channels']=_0x25a226[_0xdb6b('0x1c')];this[_0xdb6b('0x1d')]=_0x25a226['agents'];this[_0xdb6b('0x1e')]={};ami['on']('coreshowchannel',this[_0xdb6b('0x1f')][_0xdb6b('0x20')](this));ami['on']('newexten',this['syncNewExten'][_0xdb6b('0x20')](this));ami['on'](_0xdb6b('0x21'),this[_0xdb6b('0x22')]['bind'](this));ami['on']('newstate',this[_0xdb6b('0x23')][_0xdb6b('0x20')](this));ami['on'](_0xdb6b('0x24'),this[_0xdb6b('0x25')][_0xdb6b('0x20')](this));ami['on'](_0xdb6b('0x26'),this[_0xdb6b('0x27')]['bind'](this));ami['on'](_0xdb6b('0x28'),this[_0xdb6b('0x29')][_0xdb6b('0x20')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0xdb6b('0x20')](this));ami['on']('blindtransfer',this['syncBlindTransfer']['bind'](this));ami['on'](_0xdb6b('0x2a'),this[_0xdb6b('0x2b')][_0xdb6b('0x20')](this));ami['on']('musiconholdstop',this[_0xdb6b('0x2c')][_0xdb6b('0x20')](this));try{logger[_0xdb6b('0x2d')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0xdb6b('0x2e')]();}catch(_0x5d803f){logger[_0xdb6b('0x2f')](_0xdb6b('0x30'),util[_0xdb6b('0x31')](_0x5d803f,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0xdb6b('0x32')]=function(_0x354d24){return _0x354d24!==null&&!_[_0xdb6b('0x33')](_0x354d24);};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0x35')]=function(_0x5bb38c,_0x10d871,_0x1d1de6){io['to'](_0x5bb38c)[_0xdb6b('0x35')](_0x10d871,_0x1d1de6);};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0x29')]=function(_0x1d6546){try{if(this[_0xdb6b('0x32')](_0x1d6546)){logger[_0xdb6b('0x2d')](_0xdb6b('0x36'),_0x1d6546[_0xdb6b('0x37')],_0x1d6546[_0xdb6b('0x38')],_0x1d6546[_0xdb6b('0x39')]);logger[_0xdb6b('0x3a')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x1d6546['uniqueid'],util[_0xdb6b('0x31')](_0x1d6546,{'showHidden':![],'depth':null}));if(_0x1d6546[_0xdb6b('0x37')]===_0x1d6546[_0xdb6b('0x3b')]){if(!_[_0xdb6b('0x33')](this[_0xdb6b('0x1c')][_0x1d6546['uniqueid']])){_[_0xdb6b('0x3c')](this['channels'][_0x1d6546[_0xdb6b('0x37')]],_[_0xdb6b('0x3d')](_0x1d6546,_[_0xdb6b('0x3e')](this[_0xdb6b('0x1c')][_0x1d6546['uniqueid']])));}}if(_0x1d6546[_0xdb6b('0x3f')]===_0xdb6b('0x40')){if(this[_0xdb6b('0x1d')][_0x1d6546['channel'][_0xdb6b('0x41')]('-')[0x0]]){if(_0x1d6546[_0xdb6b('0x42')]==_0xdb6b('0x43')){this[_0xdb6b('0x1d')][_0x1d6546[_0xdb6b('0x44')]['split']('-')[0x0]]['destconnectedlinenum']=_0x1d6546[_0xdb6b('0x45')];this['emit'](util[_0xdb6b('0x46')](_0xdb6b('0x47'),this[_0xdb6b('0x1d')][_0x1d6546[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x48')]),_0xdb6b('0x49'),{'destaccountcode':this[_0xdb6b('0x1d')][_0x1d6546[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x4a')],'destconnectedlinenum':_0x1d6546[_0xdb6b('0x45')]});}}}}}catch(_0x827401){logger[_0xdb6b('0x2f')](_0xdb6b('0x4b'),_0x1d6546[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x827401,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0x22')]=function(_0x104c26){try{if(this[_0xdb6b('0x32')](_0x104c26)){logger[_0xdb6b('0x3a')](_0xdb6b('0x4c'),_0x104c26[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x104c26,{'showHidden':![],'depth':null}));if(_0x104c26['uniqueid']===_0x104c26[_0xdb6b('0x3b')]&&_0x104c26[_0xdb6b('0x44')]!=_0xdb6b('0x4d')){if(_['isUndefined'](this[_0xdb6b('0x1c')][_0x104c26[_0xdb6b('0x37')]])){logger[_0xdb6b('0x2d')](_0xdb6b('0x4e'),_0x104c26[_0xdb6b('0x37')],_0x104c26[_0xdb6b('0x3f')],_0x104c26[_0xdb6b('0x42')]);this[_0xdb6b('0x1c')][_0x104c26[_0xdb6b('0x37')]]=new Channel();this['channels'][_0x104c26[_0xdb6b('0x37')]][_0xdb6b('0x4f')]=moment()[_0xdb6b('0x46')](_0xdb6b('0x50'));this[_0xdb6b('0x1c')][_0x104c26[_0xdb6b('0x37')]][_0xdb6b('0x51')]=dispositions[_[_0xdb6b('0x52')](_0x104c26[_0xdb6b('0x53')])];_[_0xdb6b('0x3c')](this[_0xdb6b('0x1c')][_0x104c26[_0xdb6b('0x37')]],_[_0xdb6b('0x3d')](_0x104c26,_[_0xdb6b('0x3e')](this[_0xdb6b('0x1c')][_0x104c26['uniqueid']])));if(_0x104c26['context']==='from-sip'){if(this[_0xdb6b('0x1d')][_0x104c26[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]){if(_[_0xdb6b('0x33')](this[_0xdb6b('0x1d')][_0x104c26[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x54')])){this[_0xdb6b('0x1d')][_0x104c26[_0xdb6b('0x44')]['split']('-')[0x0]]['destconnectedlinenum']=_0x104c26['exten'];logger[_0xdb6b('0x3a')](_0xdb6b('0x55'),_0x104c26[_0xdb6b('0x37')],util[_0xdb6b('0x31')]({'destaccountcode':this[_0xdb6b('0x1d')][_0x104c26['channel'][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x4a')],'destconnectedlinenum':_0x104c26[_0xdb6b('0x42')]},{'showHidden':![],'depth':null}));this[_0xdb6b('0x35')](util[_0xdb6b('0x46')]('user:%s',this[_0xdb6b('0x1d')][_0x104c26[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x48')]),'user:agentconnect',{'destaccountcode':this[_0xdb6b('0x1d')][_0x104c26[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x4a')],'destconnectedlinenum':_0x104c26[_0xdb6b('0x42')]});}}}}}}}catch(_0x2f5780){logger['error']('[%s][voiceCallReport][newchannel]',_0x104c26[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x2f5780,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')]['syncNewExten']=function(_0x9c39ae){try{if(this[_0xdb6b('0x32')](_0x9c39ae)){logger[_0xdb6b('0x3a')](_0xdb6b('0x56'),_0x9c39ae[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x9c39ae,{'showHidden':![],'depth':null}));if(_0x9c39ae[_0xdb6b('0x37')]===_0x9c39ae['linkedid']&&_0x9c39ae['exten']!='h'&&_0x9c39ae[_0xdb6b('0x44')]!=_0xdb6b('0x4d')){_0x9c39ae['application']=_0x9c39ae['application'][_0xdb6b('0x57')]();_0x9c39ae[_0xdb6b('0x58')]=_0x9c39ae[_0xdb6b('0x59')]&&_0x9c39ae['appdata'][_0xdb6b('0x5a')](_0xdb6b('0x5b'))?_0x9c39ae['appdata']:(_0x9c39ae[_0xdb6b('0x59')]||_0x9c39ae[_0xdb6b('0x58')])['toLowerCase']();logger[_0xdb6b('0x2d')](_0xdb6b('0x5c'),_0x9c39ae['uniqueid'],_0x9c39ae[_0xdb6b('0x5d')],_0x9c39ae[_0xdb6b('0x58')]);if(_[_0xdb6b('0x33')](this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]])){this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]]=new Channel();this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]]['starttime']=_0x9c39ae['duration']?moment()[_0xdb6b('0x5e')](moment[_0xdb6b('0x5f')](_0x9c39ae[_0xdb6b('0x5f')])[_0xdb6b('0x60')](),_0xdb6b('0x60'))['format']('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0xdb6b('0x46')](_0xdb6b('0x50'));this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]]['disposition']=_0xdb6b('0x16');}_[_0xdb6b('0x3c')](this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]],_['pick'](_0x9c39ae,_[_0xdb6b('0x3e')](this['channels'][_0x9c39ae[_0xdb6b('0x37')]])));if(_[_0xdb6b('0x61')](applications,_0x9c39ae['application'])){this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]][_0xdb6b('0x62')]=_0x9c39ae['application'];this['channels'][_0x9c39ae[_0xdb6b('0x37')]][_0xdb6b('0x63')]=_0x9c39ae['applicationdata'];if(_0x9c39ae[_0xdb6b('0x5d')]==='set'&&_['startsWith'](_0x9c39ae['applicationdata'][_0xdb6b('0x57')](),_0xdb6b('0x64'))){var _0x238f10=_0x9c39ae[_0xdb6b('0x58')][_0xdb6b('0x41')]('=');var _0x547899=_0x238f10[0x0][_0xdb6b('0x57')]()[_0xdb6b('0x65')](/cdr\((.*)\)/);if(_0x547899){this[_0xdb6b('0x1c')][_0x9c39ae[_0xdb6b('0x37')]][_0x547899[0x1]]=_0x238f10[0x1];}}else if(_0x9c39ae[_0xdb6b('0x5d')]===_0xdb6b('0x11')){this['channels'][_0x9c39ae[_0xdb6b('0x37')]][_0xdb6b('0x11')]=_0x9c39ae[_0xdb6b('0x58')][_0xdb6b('0x41')](',')[0x0];}}}}}catch(_0x2c0e24){logger[_0xdb6b('0x2f')](_0xdb6b('0x66'),_0x9c39ae['uniqueid'],util[_0xdb6b('0x31')](_0x2c0e24,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0x23')]=function(_0x547674){try{if(this[_0xdb6b('0x32')](_0x547674)){logger[_0xdb6b('0x2d')](_0xdb6b('0x67'),_0x547674[_0xdb6b('0x37')],_0x547674[_0xdb6b('0x3b')],_0x547674[_0xdb6b('0x38')],_0x547674['calleridnum']);logger[_0xdb6b('0x3a')](_0xdb6b('0x68'),_0x547674[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x547674,{'showHidden':![],'depth':null}));if(_0x547674[_0xdb6b('0x37')]!==_0x547674[_0xdb6b('0x3b')]){if(this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]]){if(_0x547674['channelstate']==='6'){if(!this[_0xdb6b('0x1c')][_0x547674['linkedid']][_0xdb6b('0x69')]){var _0x61eeb8=moment();this['channels'][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x69')]=!![];this['channels'][_0x547674['linkedid']][_0xdb6b('0x6a')]=_0x61eeb8[_0xdb6b('0x46')](_0xdb6b('0x50'));if(this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x4f')]){this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]]['holdtime']=_0x61eeb8['diff'](this[_0xdb6b('0x1c')][_0x547674['linkedid']]['starttime'],_0xdb6b('0x60'));}}this[_0xdb6b('0x1c')][_0x547674['linkedid']][_0xdb6b('0x3b')]=_0x547674[_0xdb6b('0x37')];if(_0x547674[_0xdb6b('0x39')]!==_0xdb6b('0x43')){this['channels'][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x45')]=_0x547674['calleridnum'];}this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x6b')]=_0x547674[_0xdb6b('0x38')];this[_0xdb6b('0x1c')][_0x547674['linkedid']][_0xdb6b('0x6c')]=_0x547674[_0xdb6b('0x44')];this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x51')]=dispositions[_[_0xdb6b('0x52')](_0x547674[_0xdb6b('0x53')])];if(this[_0xdb6b('0x1d')][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]){this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x6d')]=this[_0xdb6b('0x1d')][_0x547674['channel'][_0xdb6b('0x41')]('-')[0x0]]['id'];this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]][_0xdb6b('0x6e')]=this[_0xdb6b('0x1d')][_0x547674['channel'][_0xdb6b('0x41')]('-')[0x0]]['name'];}}}}else{if(this[_0xdb6b('0x1c')][_0x547674['uniqueid']]){if(_0x547674[_0xdb6b('0x53')]==='6'){if(this[_0xdb6b('0x1d')][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]){this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x37')]][_0xdb6b('0x6d')]=this['agents'][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['id'];this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x37')]][_0xdb6b('0x6e')]=this[_0xdb6b('0x1d')][_0x547674[_0xdb6b('0x44')]['split']('-')[0x0]][_0xdb6b('0x48')];}}}}if(_0x547674[_0xdb6b('0x53')]==='6'&&_0x547674[_0xdb6b('0x3f')]==='from-sip'){if(this[_0xdb6b('0x1d')][_0x547674['channel'][_0xdb6b('0x41')]('-')[0x0]]){this['agents'][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['destconnectedlinenum']=_0x547674[_0xdb6b('0x42')];var _0x3aecca;if(this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x37')]])_0x3aecca=this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x37')]][_0xdb6b('0x6f')];else if(this[_0xdb6b('0x1c')][_0x547674[_0xdb6b('0x3b')]])_0x3aecca=this[_0xdb6b('0x1c')][_0x547674['linkedid']][_0xdb6b('0x6f')];logger[_0xdb6b('0x3a')](_0xdb6b('0x70'),_0x547674[_0xdb6b('0x37')],util[_0xdb6b('0x31')]({'destaccountcode':this[_0xdb6b('0x1d')][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x547674[_0xdb6b('0x42')],'routealias':_0x3aecca},{'showHidden':![],'depth':null}));this['emit'](util[_0xdb6b('0x46')]('user:%s',this[_0xdb6b('0x1d')][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['name']),_0xdb6b('0x49'),{'destaccountcode':this[_0xdb6b('0x1d')][_0x547674[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x4a')],'destconnectedlinenum':_0x547674[_0xdb6b('0x42')],'routealias':_0x3aecca});}}}}catch(_0x319142){logger[_0xdb6b('0x2f')]('[%s][voiceCallReport][newstate]',_0x547674[_0xdb6b('0x37')],util['inspect'](_0x319142,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0x71')]=function(_0x4e07e0,_0x5aba0f){try{if(this[_0xdb6b('0x1c')][_0x4e07e0]){logger[_0xdb6b('0x2d')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x4e07e0,_0x5aba0f);this[_0xdb6b('0x1c')][_0x4e07e0][_0xdb6b('0x72')]=!![];if(_[_0xdb6b('0x73')](_0x5aba0f,_0xdb6b('0x74'))){_0x5aba0f=_0x5aba0f['replace'](_0xdb6b('0x74'),'.WAV');}this[_0xdb6b('0x1c')][_0x4e07e0][_0xdb6b('0x75')]=_0x5aba0f;var _0x16798a=_['find'](this['channels'][_0x4e07e0][_0xdb6b('0x76')],{'filename':_0x5aba0f});if(_[_0xdb6b('0x77')](_0x16798a)){this[_0xdb6b('0x1c')][_0x4e07e0][_0xdb6b('0x76')]['push']({'filename':_0x5aba0f,'createdAt':moment()[_0xdb6b('0x46')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':_0xdb6b('0x78')});}}}catch(_0x30bbfa){logger[_0xdb6b('0x2f')](_0xdb6b('0x79'),_0x4e07e0,util[_0xdb6b('0x31')](_0x30bbfa,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0x25')]=function(_0xa23876){try{if(this['isNotNull'](_0xa23876)){logger[_0xdb6b('0x3a')](_0xdb6b('0x7a'),_0xa23876[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0xa23876,{'showHidden':![],'depth':null}));if(this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x37')]]&&_0xa23876[_0xdb6b('0x44')]!=_0xdb6b('0x4d')){if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')])){if(this['isNotNull'](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x7c')])){logger[_0xdb6b('0x2d')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0xa23876['uniqueid'],_0xa23876[_0xdb6b('0x7d')]);this['syncMixMonitorFilename'](_0xa23876['uniqueid'],_0xa23876[_0xdb6b('0x7d')]);}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x7e')])){logger[_0xdb6b('0x2d')](_0xdb6b('0x7f'),_0xa23876[_0xdb6b('0x37')],_0xa23876[_0xdb6b('0x7d')]);this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x39')]=_0xa23876['value'];}else if(this[_0xdb6b('0x32')](_0xa23876['variable']['xmd-callerid'])){logger['info'](_0xdb6b('0x80'),_0xa23876[_0xdb6b('0x37')],_0xa23876[_0xdb6b('0x7d')]);this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x81')]=_0xa23876[_0xdb6b('0x7d')];}else if(this['isNotNull'](_0xa23876['variable'][_0xdb6b('0x82')])){logger[_0xdb6b('0x2d')](_0xdb6b('0x83'),_0xa23876[_0xdb6b('0x37')],_0xa23876[_0xdb6b('0x7d')]);this['channels'][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x84')]=_0xa23876[_0xdb6b('0x7d')];}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x85')])){logger[_0xdb6b('0x2d')](_0xdb6b('0x86'),_0xa23876['uniqueid'],_0xa23876[_0xdb6b('0x7d')][_0xdb6b('0x41')](',')[0x0]);this['channels'][_0xa23876[_0xdb6b('0x37')]]['queue']=_0xa23876[_0xdb6b('0x7d')][_0xdb6b('0x41')](',')[0x0];}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x87')])){logger[_0xdb6b('0x2d')](_0xdb6b('0x88'),_0xa23876[_0xdb6b('0x37')],_0xa23876[_0xdb6b('0x7d')]);this[_0xdb6b('0x1c')][_0xa23876['uniqueid']][_0xdb6b('0x89')]=_0xa23876[_0xdb6b('0x7d')];}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x8a')])){logger['info'](_0xdb6b('0x8b'),_0xa23876[_0xdb6b('0x37')],_0xa23876[_0xdb6b('0x7d')]);this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x8c')]=_0xa23876[_0xdb6b('0x7d')];}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x8d')])){logger[_0xdb6b('0x2d')](_0xdb6b('0x8e'),_0xa23876[_0xdb6b('0x37')],_0xa23876[_0xdb6b('0x7d')]);this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x8f')]=_0xa23876[_0xdb6b('0x7d')];}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x90')])){logger[_0xdb6b('0x2d')]('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0xa23876[_0xdb6b('0x37')],_0xa23876['value']);this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x11')]=_0xa23876[_0xdb6b('0x7d')];}else if(this[_0xdb6b('0x32')](_0xa23876['variable']['sipcallid'])){logger[_0xdb6b('0x2d')](_0xdb6b('0x91'),_0xa23876[_0xdb6b('0x37')],_0xa23876['value']);this['channels'][_0xa23876[_0xdb6b('0x37')]][_0xdb6b('0x92')]=_0xa23876[_0xdb6b('0x7d')];}}}else if(this[_0xdb6b('0x32')](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x7c')])){if(_0xa23876[_0xdb6b('0x7d')]){var _0x568945=path[_0xdb6b('0x93')](_0xa23876[_0xdb6b('0x7d')])[_0xdb6b('0x48')];logger['info'](_0xdb6b('0x94'),_0x568945,_0xa23876[_0xdb6b('0x7d')]);this['syncMixMonitorFilename'](_0x568945,_0xa23876[_0xdb6b('0x7d')]);}}else if(this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x3b')]]){if(this['isNotNull'](_0xa23876['variable'])){if(this['isNotNull'](_0xa23876[_0xdb6b('0x7b')][_0xdb6b('0x95')])){logger[_0xdb6b('0x2d')](_0xdb6b('0x91'),_0xa23876['linkedid'],_0xa23876[_0xdb6b('0x7d')]);this[_0xdb6b('0x1c')][_0xa23876[_0xdb6b('0x3b')]]['sipcalllinkedid']=_0xa23876[_0xdb6b('0x7d')];}}}}}catch(_0x25ae29){logger[_0xdb6b('0x2f')]('[%s][voiceCallReport][varset]',_0xa23876[_0xdb6b('0x37')],util['inspect'](_0x25ae29,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')]['syncHangup']=function(_0x248c82){try{if(this[_0xdb6b('0x32')](_0x248c82)){logger[_0xdb6b('0x3a')](_0xdb6b('0x96'),_0x248c82[_0xdb6b('0x37')],util['inspect'](_0x248c82,{'showHidden':![],'depth':null}));if(this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]){logger[_0xdb6b('0x2d')](_0xdb6b('0x97'),_0x248c82[_0xdb6b('0x37')],_0x248c82[_0xdb6b('0x98')]);var _0x52d27e=moment();this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]['endtime']=_0x52d27e['format'](_0xdb6b('0x50'));this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]['duration']=_0x52d27e[_0xdb6b('0x99')](this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]][_0xdb6b('0x4f')],'seconds');if(this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]['answered']){this['channels'][_0x248c82[_0xdb6b('0x37')]][_0xdb6b('0x9a')]=_0x52d27e[_0xdb6b('0x99')](this[_0xdb6b('0x1c')][_0x248c82['uniqueid']][_0xdb6b('0x6a')],_0xdb6b('0x60'));this['channels'][_0x248c82[_0xdb6b('0x37')]][_0xdb6b('0x9b')]=this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]['duration']-this[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]['billableseconds'];}if(_0x248c82[_0xdb6b('0x3f')]==='from-sip'){if(this['agents'][_0x248c82[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]){this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]=_[_0xdb6b('0x9c')](this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')]['split']('-')[0x0]],[_0xdb6b('0x54')]);logger[_0xdb6b('0x3a')](_0xdb6b('0x9d'),_0x248c82[_0xdb6b('0x37')],util[_0xdb6b('0x31')]({'id':this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['id'],'destaccountcode':this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')]['split']('-')[0x0]][_0xdb6b('0x4a')]},{'showHidden':![],'depth':null}));this[_0xdb6b('0x35')](util[_0xdb6b('0x46')](_0xdb6b('0x47'),this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['name']),'user:agentcomplete',{'id':this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]]['id'],'destaccountcode':this[_0xdb6b('0x1d')][_0x248c82[_0xdb6b('0x44')][_0xdb6b('0x41')]('-')[0x0]][_0xdb6b('0x4a')]});}}var _0x9805fe=this;Promise['resolve']()[_0xdb6b('0x9e')](function(){var _0x5dc365=_0x9805fe['channels'][_0x248c82[_0xdb6b('0x37')]];if(typeof _0x5dc365[_0xdb6b('0x9f')]==='undefined')return;if(_[_0xdb6b('0xa0')](_0x5dc365['monitors']))return;return RpcSetting[_0xdb6b('0xa1')]()[_0xdb6b('0x9e')](function(_0x136c00){if(!_0x136c00['stopRecordingOnTransfer'])return;return Promise[_0xdb6b('0xa2')]()['then'](function(){return ami[_0xdb6b('0xa3')]({'action':_0xdb6b('0xa4'),'channel':_0x5dc365[_0xdb6b('0x44')]})[_0xdb6b('0xa5')](function(){});})[_0xdb6b('0x9e')](function(){return ami[_0xdb6b('0xa3')]({'action':'StopMixMonitor','channel':_0x5dc365[_0xdb6b('0x6c')]})['catch'](function(){})[_0xdb6b('0xa6')](function(){var _0x17fe8c=_0x9805fe[_0xdb6b('0x1d')][_0x5dc365['destinationchannel'][_0xdb6b('0x41')]('-')[0x0]];if(!_0x17fe8c)return;io[_0xdb6b('0x35')]('webbar:stopmonitors',{'agentId':_0x17fe8c['id'],'uniqueid':_0x5dc365['uniqueid']});});});});})['then'](function(){if(_0x248c82[_0xdb6b('0xa7')]==='BlindTransfer'){_0x9805fe['blindTransfers'][_0x248c82[_0xdb6b('0x37')]]=_0x9805fe[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]];}else{if(_0x9805fe['channels'][_0x248c82['uniqueid']][_0xdb6b('0x84')]===_0xdb6b('0xa8')&&_0x9805fe['blindTransfers'][_0x248c82[_0xdb6b('0x37')]]){_0x9805fe[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]][_0xdb6b('0x37')]=[_0x9805fe[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]][_0xdb6b('0x3b')],_0x9805fe[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]]['linkedid']=_0x9805fe[_0xdb6b('0x1c')][_0x248c82['uniqueid']][_0xdb6b('0x37')]][0x0];delete _0x9805fe[_0xdb6b('0x1e')][_0x248c82[_0xdb6b('0x37')]];}}logger[_0xdb6b('0x3a')](_0xdb6b('0xa9'),_0x248c82[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x9805fe[_0xdb6b('0x1c')][_0x248c82['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xdb6b('0x35')](_0xdb6b('0xaa'),_0x9805fe['channels'][_0x248c82[_0xdb6b('0x37')]]);delete _0x9805fe[_0xdb6b('0x1c')][_0x248c82[_0xdb6b('0x37')]];});}}}catch(_0x796634){logger['error'](_0xdb6b('0xab'),_0x248c82[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x796634,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0xac')]=function(_0x7c533f){try{if(this['isNotNull'](_0x7c533f)){logger[_0xdb6b('0x2d')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x7c533f['uniqueid'],_0x7c533f[_0xdb6b('0xad')],_0x7c533f[_0xdb6b('0xae')]);logger['debug']('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x7c533f[_0xdb6b('0x37')],util['inspect'](_0x7c533f,{'showHidden':![],'depth':null}));if(this['channels'][_0x7c533f[_0xdb6b('0xaf')]]){this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xaf')]][_0xdb6b('0xb0')]=_0x7c533f[_0xdb6b('0xad')];this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xaf')]][_0xdb6b('0xb1')]=_0x7c533f[_0xdb6b('0xae')];if(this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb2')]]){var _0x51fcd9=this['channels'][_0x7c533f[_0xdb6b('0xb2')]];this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb2')]]=this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xaf')]];this['channels'][_0x7c533f[_0xdb6b('0xaf')]]=_0x51fcd9;}}else if(this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb3')]]){this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb3')]][_0xdb6b('0xb0')]=_0x7c533f[_0xdb6b('0xad')];this[_0xdb6b('0x1c')][_0x7c533f['transfertargetuniqueid']][_0xdb6b('0xb1')]=_0x7c533f[_0xdb6b('0xae')];if(this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb4')]]){var _0x51fcd9=this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb4')]];this[_0xdb6b('0x1c')][_0x7c533f['origtransfereruniqueid']]=this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb3')]];this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb3')]]=_0x51fcd9;}}if((this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb4')]]||this['channels'][_0x7c533f[_0xdb6b('0xb5')]])&&this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb2')]]){var _0x53c571=_['some']([this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb4')]],this['channels'][_0x7c533f[_0xdb6b('0xb5')]],this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb2')]]],function(_0x5c14bd){return _0x5c14bd&&_0x5c14bd['type']===_0xdb6b('0xa8')&&_0x5c14bd['routeid'];});if(_0x53c571){if(this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb4')]])this[_0xdb6b('0x1c')][_0x7c533f['origtransfereruniqueid']][_0xdb6b('0x9f')]=_0xdb6b('0xb6');if(this[_0xdb6b('0x1c')][_0x7c533f['origtransfererlinkedid']])this[_0xdb6b('0x1c')][_0x7c533f[_0xdb6b('0xb5')]][_0xdb6b('0x9f')]=_0xdb6b('0xb6');this['channels'][_0x7c533f[_0xdb6b('0xb2')]][_0xdb6b('0x9f')]=_0xdb6b('0xb6');}}}}catch(_0x5ebfef){logger[_0xdb6b('0x2f')](_0xdb6b('0xb7'),_0x7c533f[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x5ebfef,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')][_0xdb6b('0xb8')]=function(_0x196cff){try{if(this[_0xdb6b('0x32')](_0x196cff)){logger[_0xdb6b('0x2d')](_0xdb6b('0xb9'),_0x196cff[_0xdb6b('0x37')],_0x196cff[_0xdb6b('0xba')],_0x196cff[_0xdb6b('0xbb')]);logger[_0xdb6b('0x3a')](_0xdb6b('0xbc'),_0x196cff[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x196cff,{'showHidden':![],'depth':null}));if(this[_0xdb6b('0x1c')][_0x196cff[_0xdb6b('0xaf')]]){this['channels'][_0x196cff[_0xdb6b('0xaf')]]['transfercalleridnum']=_0x196cff[_0xdb6b('0xba')];this['channels'][_0x196cff[_0xdb6b('0xaf')]][_0xdb6b('0xb1')]=_0x196cff[_0xdb6b('0xbb')];this[_0xdb6b('0x1c')][_0x196cff[_0xdb6b('0xaf')]][_0xdb6b('0x9f')]=_0xdb6b('0xbd');this['syncHangup']({'event':_0xdb6b('0xbe'),'uniqueid':_0x196cff[_0xdb6b('0xaf')],'context':_0x196cff[_0xdb6b('0x3f')],'channel':_0x196cff['transfererchannel']});}else{this[_0xdb6b('0x1c')][_0x196cff[_0xdb6b('0xbf')]][_0xdb6b('0x9f')]=_0xdb6b('0xbd');}}}catch(_0x1bed77){logger[_0xdb6b('0x2f')](_0xdb6b('0xc0'),_0x196cff[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x1bed77,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xdb6b('0x2b')]=function(_0x15e862){try{if(this['isNotNull'](_0x15e862)){logger[_0xdb6b('0x3a')](_0xdb6b('0xc1'),_0x15e862[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0x15e862,{'showHidden':![],'depth':null}));if(this[_0xdb6b('0x1c')][_0x15e862[_0xdb6b('0x37')]]){if(!_[_0xdb6b('0x77')](this['channels'][_0x15e862[_0xdb6b('0x37')]][_0xdb6b('0x6a')])){this[_0xdb6b('0x1c')][_0x15e862['uniqueid']][_0xdb6b('0xc2')]=moment()[_0xdb6b('0x46')](_0xdb6b('0x50'));logger['info']('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x15e862[_0xdb6b('0x37')],this[_0xdb6b('0x1c')][_0x15e862['uniqueid']]['mohstarttime']);}}}}catch(_0x3a31d6){logger[_0xdb6b('0x2f')](_0xdb6b('0xc3'),_0x15e862['uniqueid'],util[_0xdb6b('0x31')](_0x3a31d6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xdb6b('0x34')]['syncMusicOnHoldStop']=function(_0xc96dc5){try{if(this[_0xdb6b('0x32')](_0xc96dc5)){logger['debug'](_0xdb6b('0xc4'),_0xc96dc5[_0xdb6b('0x37')],util[_0xdb6b('0x31')](_0xc96dc5,{'showHidden':![],'depth':null}));if(this['channels'][_0xc96dc5[_0xdb6b('0x37')]]){if(!_[_0xdb6b('0x77')](this[_0xdb6b('0x1c')][_0xc96dc5[_0xdb6b('0x37')]][_0xdb6b('0xc2')])){this[_0xdb6b('0x1c')][_0xc96dc5['uniqueid']]['mohtime']+=moment()[_0xdb6b('0xc5')](0x0)[_0xdb6b('0x99')](this[_0xdb6b('0x1c')][_0xc96dc5[_0xdb6b('0x37')]][_0xdb6b('0xc2')],_0xdb6b('0x60'));logger[_0xdb6b('0x2d')](_0xdb6b('0xc6'),_0xc96dc5[_0xdb6b('0x37')],this[_0xdb6b('0x1c')][_0xc96dc5['uniqueid']][_0xdb6b('0xc7')]);delete this[_0xdb6b('0x1c')][_0xc96dc5[_0xdb6b('0x37')]][_0xdb6b('0xc2')];}}}}catch(_0x5e2ddd){logger[_0xdb6b('0x2f')]('[%s][voiceCallReport][musiconholdstop]',_0xc96dc5['uniqueid'],util[_0xdb6b('0x31')](_0x5e2ddd,{'showHidden':![],'depth':null}));}};module[_0xdb6b('0xc8')]=VoiceCallReport;
\ No newline at end of file
+var _0x9fa6=['prototype','isNotNull','isUndefined','emit','syncNewCallerId','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','inspect','linkedid','context','from-sip','agents','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','merge','pick','keys','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','name','user:agentconnect','error','[%s][voiceCallReport][newchannel]','OutgoingSpoolFailed','application','toLowerCase','applicationdata','appdata','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','subtract','duration','seconds','includes','lastapplication','lastdata','set','startsWith','match','queue','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','starttime','diff','connectedlinename','destinationchannel','membername','UserId','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','.wav49','replace','.WAV','monitorFilename','monitors','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-originatecalleridnum\x20value:%s','xmd-destination','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','sipcalluniqueid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','holdtime','omit','user:agentcomplete','then','transferType','undefined','isEmpty','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','syncAttendedTransfer','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','transfereeuniqueid','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','transfercalleridnum','origtransfereruniqueid','origtransfererlinkedid','some','routeid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','BLIND','transfererchannel','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','isNil','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','exports','bluebird','lodash','path','../../../config/environment','../../../config/logger','../ami','unknown','not_inuse','inuse','busy','invalid','unavailable','ringing','ringinuse','agi','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','localhost','socket.io-emitter','channels','blindTransfers','coreshowchannel','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','varset','syncHangup','newcallerid','attendedtransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','[voiceCallReport][coreshowchannels]'];(function(_0x4cde1f,_0x3c72bf){var _0x46afba=function(_0x5e0bf0){while(--_0x5e0bf0){_0x4cde1f['push'](_0x4cde1f['shift']());}};_0x46afba(++_0x3c72bf);}(_0x9fa6,0xa0));var _0x69fa=function(_0x46d0c9,_0x526bfa){_0x46d0c9=_0x46d0c9-0x0;var _0x174506=_0x9fa6[_0x46d0c9];return _0x174506;};'use strict';var BPromise=require(_0x69fa('0x0'));var _=require(_0x69fa('0x1'));var moment=require('moment');var util=require('util');var path=require(_0x69fa('0x2'));var Redis=require('ioredis');var config=require(_0x69fa('0x3'));var logger=require(_0x69fa('0x4'))('ami');var ami=require(_0x69fa('0x5'));var Channel=require('../model/channel');var RpcSetting=require('../rpc/setting');var statusDesc=[_0x69fa('0x6'),_0x69fa('0x7'),_0x69fa('0x8'),_0x69fa('0x9'),_0x69fa('0xa'),_0x69fa('0xb'),_0x69fa('0xc'),_0x69fa('0xd'),'onhold'];var applications=['set','queue',_0x69fa('0xe'),'dial',_0x69fa('0xf'),_0x69fa('0x10')];var dispositions=[_0x69fa('0x11'),'FAILED',_0x69fa('0x12'),_0x69fa('0x11'),'NO\x20ANSWER',_0x69fa('0x11'),'ANSWERED',_0x69fa('0x13'),'FAILED',_0x69fa('0x12'),'FAILED'];var actions={};config[_0x69fa('0x14')]=_[_0x69fa('0x15')](config['redis'],{'host':_0x69fa('0x16'),'port':0x18eb});var io=require(_0x69fa('0x17'))(new Redis(config['redis']));function VoiceCallReport(_0x3d2cad){this[_0x69fa('0x18')]=_0x3d2cad[_0x69fa('0x18')];this['agents']=_0x3d2cad['agents'];this[_0x69fa('0x19')]={};ami['on'](_0x69fa('0x1a'),this[_0x69fa('0x1b')][_0x69fa('0x1c')](this));ami['on'](_0x69fa('0x1d'),this[_0x69fa('0x1b')]['bind'](this));ami['on'](_0x69fa('0x1e'),this[_0x69fa('0x1f')][_0x69fa('0x1c')](this));ami['on'](_0x69fa('0x20'),this['syncNewState'][_0x69fa('0x1c')](this));ami['on'](_0x69fa('0x21'),this['syncVarSet'][_0x69fa('0x1c')](this));ami['on']('hangup',this[_0x69fa('0x22')]['bind'](this));ami['on'](_0x69fa('0x23'),this['syncNewCallerId'][_0x69fa('0x1c')](this));ami['on'](_0x69fa('0x24'),this['syncAttendedTransfer']['bind'](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0x69fa('0x1c')](this));ami['on'](_0x69fa('0x25'),this[_0x69fa('0x26')][_0x69fa('0x1c')](this));ami['on'](_0x69fa('0x27'),this['syncMusicOnHoldStop'][_0x69fa('0x1c')](this));try{logger[_0x69fa('0x28')](_0x69fa('0x29'));ami[_0x69fa('0x2a')]();}catch(_0x2c1ecd){logger['error'](_0x69fa('0x2b'),util['inspect'](_0x2c1ecd,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x69fa('0x2c')][_0x69fa('0x2d')]=function(_0x470980){return _0x470980!==null&&!_[_0x69fa('0x2e')](_0x470980);};VoiceCallReport['prototype'][_0x69fa('0x2f')]=function(_0x5ac851,_0x4686a4,_0x53441b){io['to'](_0x5ac851)[_0x69fa('0x2f')](_0x4686a4,_0x53441b);};VoiceCallReport['prototype'][_0x69fa('0x30')]=function(_0x125cdf){try{if(this[_0x69fa('0x2d')](_0x125cdf)){logger[_0x69fa('0x28')](_0x69fa('0x31'),_0x125cdf[_0x69fa('0x32')],_0x125cdf[_0x69fa('0x33')],_0x125cdf[_0x69fa('0x34')]);logger[_0x69fa('0x35')](_0x69fa('0x36'),_0x125cdf[_0x69fa('0x32')],util[_0x69fa('0x37')](_0x125cdf,{'showHidden':![],'depth':null}));if(_0x125cdf[_0x69fa('0x32')]===_0x125cdf[_0x69fa('0x38')]){if(!_[_0x69fa('0x2e')](this['channels'][_0x125cdf['uniqueid']])){_['merge'](this[_0x69fa('0x18')][_0x125cdf[_0x69fa('0x32')]],_['pick'](_0x125cdf,_['keys'](this[_0x69fa('0x18')][_0x125cdf[_0x69fa('0x32')]])));}}if(_0x125cdf[_0x69fa('0x39')]===_0x69fa('0x3a')){if(this[_0x69fa('0x3b')][_0x125cdf[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]]){if(_0x125cdf[_0x69fa('0x3e')]==_0x69fa('0x3f')){this[_0x69fa('0x3b')][_0x125cdf['channel'][_0x69fa('0x3d')]('-')[0x0]][_0x69fa('0x40')]=_0x125cdf[_0x69fa('0x41')];this[_0x69fa('0x2f')](util[_0x69fa('0x42')](_0x69fa('0x43'),this[_0x69fa('0x3b')][_0x125cdf[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]]['name']),'user:agentconnect',{'destaccountcode':this[_0x69fa('0x3b')][_0x125cdf[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]][_0x69fa('0x44')],'destconnectedlinenum':_0x125cdf[_0x69fa('0x41')]});}}}}}catch(_0x383514){logger['error'](_0x69fa('0x45'),_0x125cdf[_0x69fa('0x32')],util['inspect'](_0x383514,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x69fa('0x1f')]=function(_0x417dba){try{if(this['isNotNull'](_0x417dba)){logger[_0x69fa('0x35')]('[%s][voiceCallReport][newchannel]\x20event:',_0x417dba[_0x69fa('0x32')],util['inspect'](_0x417dba,{'showHidden':![],'depth':null}));if(_0x417dba[_0x69fa('0x32')]===_0x417dba[_0x69fa('0x38')]&&_0x417dba[_0x69fa('0x3c')]!='OutgoingSpoolFailed'){if(_['isUndefined'](this['channels'][_0x417dba[_0x69fa('0x32')]])){logger[_0x69fa('0x28')](_0x69fa('0x46'),_0x417dba[_0x69fa('0x32')],_0x417dba[_0x69fa('0x39')],_0x417dba['exten']);this['channels'][_0x417dba[_0x69fa('0x32')]]=new Channel();this[_0x69fa('0x18')][_0x417dba['uniqueid']]['starttime']=moment()['format'](_0x69fa('0x47'));this[_0x69fa('0x18')][_0x417dba[_0x69fa('0x32')]][_0x69fa('0x48')]=dispositions[_[_0x69fa('0x49')](_0x417dba[_0x69fa('0x4a')])];_[_0x69fa('0x4b')](this['channels'][_0x417dba[_0x69fa('0x32')]],_[_0x69fa('0x4c')](_0x417dba,_[_0x69fa('0x4d')](this['channels'][_0x417dba[_0x69fa('0x32')]])));if(_0x417dba['context']===_0x69fa('0x3a')){if(this[_0x69fa('0x3b')][_0x417dba['channel']['split']('-')[0x0]]){if(_[_0x69fa('0x2e')](this[_0x69fa('0x3b')][_0x417dba[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]][_0x69fa('0x40')])){this[_0x69fa('0x3b')][_0x417dba['channel']['split']('-')[0x0]][_0x69fa('0x40')]=_0x417dba['exten'];logger[_0x69fa('0x35')](_0x69fa('0x4e'),_0x417dba[_0x69fa('0x32')],util['inspect']({'destaccountcode':this[_0x69fa('0x3b')][_0x417dba[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]][_0x69fa('0x44')],'destconnectedlinenum':_0x417dba[_0x69fa('0x3e')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x69fa('0x42')](_0x69fa('0x43'),this[_0x69fa('0x3b')][_0x417dba[_0x69fa('0x3c')]['split']('-')[0x0]][_0x69fa('0x4f')]),_0x69fa('0x50'),{'destaccountcode':this[_0x69fa('0x3b')][_0x417dba[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x417dba[_0x69fa('0x3e')]});}}}}}}}catch(_0x32d349){logger[_0x69fa('0x51')](_0x69fa('0x52'),_0x417dba['uniqueid'],util[_0x69fa('0x37')](_0x32d349,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x69fa('0x1b')]=function(_0x2615a3){try{if(this[_0x69fa('0x2d')](_0x2615a3)){logger['debug']('[%s][voiceCallReport][newexten]\x20event:',_0x2615a3[_0x69fa('0x32')],util[_0x69fa('0x37')](_0x2615a3,{'showHidden':![],'depth':null}));if(_0x2615a3[_0x69fa('0x32')]===_0x2615a3[_0x69fa('0x38')]&&_0x2615a3['exten']!='h'&&_0x2615a3[_0x69fa('0x3c')]!=_0x69fa('0x53')){_0x2615a3[_0x69fa('0x54')]=_0x2615a3[_0x69fa('0x54')][_0x69fa('0x55')]();_0x2615a3[_0x69fa('0x56')]=_0x2615a3['appdata']&&_0x2615a3[_0x69fa('0x57')]['startsWith'](_0x69fa('0x58'))?_0x2615a3[_0x69fa('0x57')]:(_0x2615a3[_0x69fa('0x57')]||_0x2615a3[_0x69fa('0x56')])['toLowerCase']();logger[_0x69fa('0x28')](_0x69fa('0x59'),_0x2615a3[_0x69fa('0x32')],_0x2615a3[_0x69fa('0x54')],_0x2615a3[_0x69fa('0x56')]);if(_['isUndefined'](this[_0x69fa('0x18')][_0x2615a3['uniqueid']])){this[_0x69fa('0x18')][_0x2615a3[_0x69fa('0x32')]]=new Channel();this[_0x69fa('0x18')][_0x2615a3[_0x69fa('0x32')]]['starttime']=_0x2615a3['duration']?moment()[_0x69fa('0x5a')](moment['duration'](_0x2615a3[_0x69fa('0x5b')])[_0x69fa('0x5c')](),'seconds')[_0x69fa('0x42')](_0x69fa('0x47')):moment()[_0x69fa('0x42')](_0x69fa('0x47'));this[_0x69fa('0x18')][_0x2615a3[_0x69fa('0x32')]][_0x69fa('0x48')]=_0x69fa('0x11');}_['merge'](this[_0x69fa('0x18')][_0x2615a3[_0x69fa('0x32')]],_[_0x69fa('0x4c')](_0x2615a3,_['keys'](this[_0x69fa('0x18')][_0x2615a3['uniqueid']])));if(_[_0x69fa('0x5d')](applications,_0x2615a3['application'])){this[_0x69fa('0x18')][_0x2615a3[_0x69fa('0x32')]][_0x69fa('0x5e')]=_0x2615a3[_0x69fa('0x54')];this[_0x69fa('0x18')][_0x2615a3[_0x69fa('0x32')]][_0x69fa('0x5f')]=_0x2615a3['applicationdata'];if(_0x2615a3['application']===_0x69fa('0x60')&&_[_0x69fa('0x61')](_0x2615a3[_0x69fa('0x56')][_0x69fa('0x55')](),'cdr(')){var _0x26aa3e=_0x2615a3[_0x69fa('0x56')][_0x69fa('0x3d')]('=');var _0x2437c6=_0x26aa3e[0x0][_0x69fa('0x55')]()[_0x69fa('0x62')](/cdr\((.*)\)/);if(_0x2437c6){this['channels'][_0x2615a3[_0x69fa('0x32')]][_0x2437c6[0x1]]=_0x26aa3e[0x1];}}else if(_0x2615a3['application']===_0x69fa('0x63')){this[_0x69fa('0x18')][_0x2615a3[_0x69fa('0x32')]][_0x69fa('0x63')]=_0x2615a3['applicationdata'][_0x69fa('0x3d')](',')[0x0];}}}}}catch(_0x275bb6){logger[_0x69fa('0x51')](_0x69fa('0x64'),_0x2615a3['uniqueid'],util[_0x69fa('0x37')](_0x275bb6,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x69fa('0x2c')][_0x69fa('0x65')]=function(_0x41f349){try{if(this[_0x69fa('0x2d')](_0x41f349)){logger[_0x69fa('0x28')](_0x69fa('0x66'),_0x41f349[_0x69fa('0x32')],_0x41f349[_0x69fa('0x38')],_0x41f349[_0x69fa('0x33')],_0x41f349[_0x69fa('0x34')]);logger[_0x69fa('0x35')](_0x69fa('0x67'),_0x41f349['uniqueid'],util[_0x69fa('0x37')](_0x41f349,{'showHidden':![],'depth':null}));if(_0x41f349['uniqueid']!==_0x41f349[_0x69fa('0x38')]){if(this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x38')]]){if(_0x41f349[_0x69fa('0x4a')]==='6'){if(!this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x38')]][_0x69fa('0x68')]){var _0x284933=moment();this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x38')]][_0x69fa('0x68')]=!![];this['channels'][_0x41f349[_0x69fa('0x38')]][_0x69fa('0x69')]=_0x284933['format']('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x69fa('0x18')][_0x41f349['linkedid']][_0x69fa('0x6a')]){this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x38')]]['holdtime']=_0x284933[_0x69fa('0x6b')](this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x38')]][_0x69fa('0x6a')],_0x69fa('0x5c'));}}this['channels'][_0x41f349[_0x69fa('0x38')]][_0x69fa('0x38')]=_0x41f349['uniqueid'];if(_0x41f349[_0x69fa('0x34')]!==_0x69fa('0x3f')){this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x38')]]['connectedlinenum']=_0x41f349[_0x69fa('0x34')];}this['channels'][_0x41f349[_0x69fa('0x38')]][_0x69fa('0x6c')]=_0x41f349[_0x69fa('0x33')];this['channels'][_0x41f349[_0x69fa('0x38')]][_0x69fa('0x6d')]=_0x41f349[_0x69fa('0x3c')];this['channels'][_0x41f349[_0x69fa('0x38')]][_0x69fa('0x48')]=dispositions[_['toNumber'](_0x41f349[_0x69fa('0x4a')])];if(this[_0x69fa('0x3b')][_0x41f349['channel'][_0x69fa('0x3d')]('-')[0x0]]){this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x38')]]['UserId']=this[_0x69fa('0x3b')][_0x41f349[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]]['id'];this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x38')]][_0x69fa('0x6e')]=this[_0x69fa('0x3b')][_0x41f349[_0x69fa('0x3c')]['split']('-')[0x0]]['name'];}}}}else{if(this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x32')]]){if(_0x41f349[_0x69fa('0x4a')]==='6'){if(this['agents'][_0x41f349[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]]){this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x32')]][_0x69fa('0x6f')]=this[_0x69fa('0x3b')][_0x41f349['channel'][_0x69fa('0x3d')]('-')[0x0]]['id'];this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x32')]][_0x69fa('0x6e')]=this['agents'][_0x41f349['channel']['split']('-')[0x0]]['name'];}}}}if(_0x41f349[_0x69fa('0x4a')]==='6'&&_0x41f349[_0x69fa('0x39')]==='from-sip'){if(this[_0x69fa('0x3b')][_0x41f349[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]]){this['agents'][_0x41f349[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]][_0x69fa('0x40')]=_0x41f349[_0x69fa('0x3e')];var _0x1d476b;if(this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x32')]])_0x1d476b=this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x32')]][_0x69fa('0x70')];else if(this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x38')]])_0x1d476b=this[_0x69fa('0x18')][_0x41f349[_0x69fa('0x38')]][_0x69fa('0x70')];logger['debug'](_0x69fa('0x71'),_0x41f349[_0x69fa('0x32')],util[_0x69fa('0x37')]({'destaccountcode':this['agents'][_0x41f349['channel'][_0x69fa('0x3d')]('-')[0x0]][_0x69fa('0x44')],'destconnectedlinenum':_0x41f349[_0x69fa('0x3e')],'routealias':_0x1d476b},{'showHidden':![],'depth':null}));this['emit'](util[_0x69fa('0x42')](_0x69fa('0x43'),this[_0x69fa('0x3b')][_0x41f349['channel'][_0x69fa('0x3d')]('-')[0x0]][_0x69fa('0x4f')]),_0x69fa('0x50'),{'destaccountcode':this[_0x69fa('0x3b')][_0x41f349[_0x69fa('0x3c')]['split']('-')[0x0]][_0x69fa('0x44')],'destconnectedlinenum':_0x41f349[_0x69fa('0x3e')],'routealias':_0x1d476b});}}}}catch(_0x169a2e){logger[_0x69fa('0x51')]('[%s][voiceCallReport][newstate]',_0x41f349[_0x69fa('0x32')],util[_0x69fa('0x37')](_0x169a2e,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x69fa('0x72')]=function(_0x2dd405,_0x4d299e){try{if(this[_0x69fa('0x18')][_0x2dd405]){logger['info'](_0x69fa('0x73'),_0x2dd405,_0x4d299e);this[_0x69fa('0x18')][_0x2dd405]['monitor']=!![];if(_['endsWith'](_0x4d299e,_0x69fa('0x74'))){_0x4d299e=_0x4d299e[_0x69fa('0x75')]('.wav49',_0x69fa('0x76'));}this[_0x69fa('0x18')][_0x2dd405][_0x69fa('0x77')]=_0x4d299e;var _0x416232=_['find'](this[_0x69fa('0x18')][_0x2dd405][_0x69fa('0x78')],{'filename':_0x4d299e});if(_['isNil'](_0x416232)){this[_0x69fa('0x18')][_0x2dd405][_0x69fa('0x78')][_0x69fa('0x79')]({'filename':_0x4d299e,'createdAt':moment()[_0x69fa('0x42')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':'rec'});}}}catch(_0x1aed0d){logger[_0x69fa('0x51')](_0x69fa('0x7a'),_0x2dd405,util['inspect'](_0x1aed0d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x69fa('0x2c')]['syncVarSet']=function(_0x3a8b22){try{if(this[_0x69fa('0x2d')](_0x3a8b22)){logger[_0x69fa('0x35')](_0x69fa('0x7b'),_0x3a8b22[_0x69fa('0x32')],util[_0x69fa('0x37')](_0x3a8b22,{'showHidden':![],'depth':null}));if(this[_0x69fa('0x18')][_0x3a8b22['uniqueid']]&&_0x3a8b22[_0x69fa('0x3c')]!=_0x69fa('0x53')){if(this[_0x69fa('0x2d')](_0x3a8b22[_0x69fa('0x7c')])){if(this[_0x69fa('0x2d')](_0x3a8b22[_0x69fa('0x7c')][_0x69fa('0x7d')])){logger[_0x69fa('0x28')](_0x69fa('0x7e'),_0x3a8b22[_0x69fa('0x32')],_0x3a8b22[_0x69fa('0x7f')]);this['syncMixMonitorFilename'](_0x3a8b22[_0x69fa('0x32')],_0x3a8b22[_0x69fa('0x7f')]);}else if(this[_0x69fa('0x2d')](_0x3a8b22[_0x69fa('0x7c')][_0x69fa('0x80')])){logger[_0x69fa('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x3a8b22['uniqueid'],_0x3a8b22[_0x69fa('0x7f')]);this[_0x69fa('0x18')][_0x3a8b22['uniqueid']][_0x69fa('0x34')]=_0x3a8b22[_0x69fa('0x7f')];}else if(this[_0x69fa('0x2d')](_0x3a8b22[_0x69fa('0x7c')][_0x69fa('0x81')])){logger['info'](_0x69fa('0x82'),_0x3a8b22[_0x69fa('0x32')],_0x3a8b22[_0x69fa('0x7f')]);this[_0x69fa('0x18')][_0x3a8b22['uniqueid']][_0x69fa('0x83')]=_0x3a8b22[_0x69fa('0x7f')];}else if(this[_0x69fa('0x2d')](_0x3a8b22[_0x69fa('0x7c')][_0x69fa('0x84')])){logger[_0x69fa('0x28')](_0x69fa('0x85'),_0x3a8b22[_0x69fa('0x32')],_0x3a8b22[_0x69fa('0x7f')]);this[_0x69fa('0x18')][_0x3a8b22[_0x69fa('0x32')]][_0x69fa('0x86')]=_0x3a8b22[_0x69fa('0x7f')];}else if(this[_0x69fa('0x2d')](_0x3a8b22[_0x69fa('0x7c')][_0x69fa('0x87')])){logger[_0x69fa('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x3a8b22['uniqueid'],_0x3a8b22['value'][_0x69fa('0x3d')](',')[0x0]);this[_0x69fa('0x18')][_0x3a8b22[_0x69fa('0x32')]][_0x69fa('0x63')]=_0x3a8b22[_0x69fa('0x7f')][_0x69fa('0x3d')](',')[0x0];}else if(this['isNotNull'](_0x3a8b22['variable']['xmd-originatecalleridnum'])){logger[_0x69fa('0x28')](_0x69fa('0x88'),_0x3a8b22[_0x69fa('0x32')],_0x3a8b22['value']);this[_0x69fa('0x18')][_0x3a8b22[_0x69fa('0x32')]]['originatecalleridnum']=_0x3a8b22[_0x69fa('0x7f')];}else if(this[_0x69fa('0x2d')](_0x3a8b22[_0x69fa('0x7c')][_0x69fa('0x89')])){logger[_0x69fa('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s',_0x3a8b22[_0x69fa('0x32')],_0x3a8b22[_0x69fa('0x7f')]);this[_0x69fa('0x18')][_0x3a8b22['uniqueid']][_0x69fa('0x8a')]=_0x3a8b22[_0x69fa('0x7f')];}else if(this[_0x69fa('0x2d')](_0x3a8b22[_0x69fa('0x7c')][_0x69fa('0x8b')])){logger['info'](_0x69fa('0x8c'),_0x3a8b22[_0x69fa('0x32')],_0x3a8b22['value']);this[_0x69fa('0x18')][_0x3a8b22[_0x69fa('0x32')]][_0x69fa('0x8d')]=_0x3a8b22[_0x69fa('0x7f')];}else if(this['isNotNull'](_0x3a8b22['variable'][_0x69fa('0x8e')])){logger[_0x69fa('0x28')](_0x69fa('0x8f'),_0x3a8b22[_0x69fa('0x32')],_0x3a8b22[_0x69fa('0x7f')]);this[_0x69fa('0x18')][_0x3a8b22[_0x69fa('0x32')]]['queue']=_0x3a8b22[_0x69fa('0x7f')];}else if(this[_0x69fa('0x2d')](_0x3a8b22['variable'][_0x69fa('0x90')])){logger[_0x69fa('0x28')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x3a8b22[_0x69fa('0x32')],_0x3a8b22[_0x69fa('0x7f')]);this[_0x69fa('0x18')][_0x3a8b22[_0x69fa('0x32')]][_0x69fa('0x91')]=_0x3a8b22[_0x69fa('0x7f')];}}}else if(this[_0x69fa('0x2d')](_0x3a8b22[_0x69fa('0x7c')][_0x69fa('0x7d')])){if(_0x3a8b22[_0x69fa('0x7f')]){var _0xbc572f=path['parse'](_0x3a8b22[_0x69fa('0x7f')])['name'];logger['info'](_0x69fa('0x7e'),_0xbc572f,_0x3a8b22[_0x69fa('0x7f')]);this[_0x69fa('0x72')](_0xbc572f,_0x3a8b22['value']);}}else if(this[_0x69fa('0x18')][_0x3a8b22[_0x69fa('0x38')]]){if(this[_0x69fa('0x2d')](_0x3a8b22[_0x69fa('0x7c')])){if(this[_0x69fa('0x2d')](_0x3a8b22[_0x69fa('0x7c')][_0x69fa('0x90')])){logger['info'](_0x69fa('0x92'),_0x3a8b22[_0x69fa('0x38')],_0x3a8b22[_0x69fa('0x7f')]);this[_0x69fa('0x18')][_0x3a8b22['linkedid']][_0x69fa('0x93')]=_0x3a8b22[_0x69fa('0x7f')];}}}}}catch(_0x2f9083){logger[_0x69fa('0x51')]('[%s][voiceCallReport][varset]',_0x3a8b22[_0x69fa('0x32')],util[_0x69fa('0x37')](_0x2f9083,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x69fa('0x2c')][_0x69fa('0x22')]=function(_0x336b78){try{if(this[_0x69fa('0x2d')](_0x336b78)){logger[_0x69fa('0x35')](_0x69fa('0x94'),_0x336b78['uniqueid'],util[_0x69fa('0x37')](_0x336b78,{'showHidden':![],'depth':null}));if(this[_0x69fa('0x18')][_0x336b78['uniqueid']]){logger[_0x69fa('0x28')](_0x69fa('0x95'),_0x336b78['uniqueid'],_0x336b78[_0x69fa('0x96')]);var _0x189dbd=moment();this['channels'][_0x336b78[_0x69fa('0x32')]][_0x69fa('0x97')]=_0x189dbd[_0x69fa('0x42')](_0x69fa('0x47'));this['channels'][_0x336b78['uniqueid']][_0x69fa('0x5b')]=_0x189dbd[_0x69fa('0x6b')](this[_0x69fa('0x18')][_0x336b78[_0x69fa('0x32')]][_0x69fa('0x6a')],_0x69fa('0x5c'));if(this[_0x69fa('0x18')][_0x336b78['uniqueid']]['answered']){this[_0x69fa('0x18')][_0x336b78[_0x69fa('0x32')]][_0x69fa('0x98')]=_0x189dbd[_0x69fa('0x6b')](this[_0x69fa('0x18')][_0x336b78[_0x69fa('0x32')]][_0x69fa('0x69')],_0x69fa('0x5c'));this[_0x69fa('0x18')][_0x336b78[_0x69fa('0x32')]][_0x69fa('0x99')]=this[_0x69fa('0x18')][_0x336b78[_0x69fa('0x32')]]['duration']-this[_0x69fa('0x18')][_0x336b78[_0x69fa('0x32')]][_0x69fa('0x98')];}if(_0x336b78[_0x69fa('0x39')]==='from-sip'){if(this['agents'][_0x336b78[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]]){this[_0x69fa('0x3b')][_0x336b78[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]]=_[_0x69fa('0x9a')](this[_0x69fa('0x3b')][_0x336b78[_0x69fa('0x3c')]['split']('-')[0x0]],[_0x69fa('0x40')]);logger['debug']('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0x336b78[_0x69fa('0x32')],util[_0x69fa('0x37')]({'id':this['agents'][_0x336b78[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x336b78['channel'][_0x69fa('0x3d')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0x69fa('0x2f')](util[_0x69fa('0x42')](_0x69fa('0x43'),this[_0x69fa('0x3b')][_0x336b78[_0x69fa('0x3c')][_0x69fa('0x3d')]('-')[0x0]][_0x69fa('0x4f')]),_0x69fa('0x9b'),{'id':this[_0x69fa('0x3b')][_0x336b78['channel'][_0x69fa('0x3d')]('-')[0x0]]['id'],'destaccountcode':this[_0x69fa('0x3b')][_0x336b78[_0x69fa('0x3c')]['split']('-')[0x0]]['accountcode']});}}var _0x56dfd7=this;Promise['resolve']()[_0x69fa('0x9c')](function(){var _0x4bbc01=_0x56dfd7[_0x69fa('0x18')][_0x336b78[_0x69fa('0x32')]];if(typeof _0x4bbc01[_0x69fa('0x9d')]===_0x69fa('0x9e'))return;if(_[_0x69fa('0x9f')](_0x4bbc01[_0x69fa('0x78')]))return;return RpcSetting[_0x69fa('0xa0')]()[_0x69fa('0x9c')](function(_0x646e2b){if(!_0x646e2b[_0x69fa('0xa1')])return;return Promise['resolve']()['then'](function(){return ami[_0x69fa('0xa2')]({'action':_0x69fa('0xa3'),'channel':_0x4bbc01[_0x69fa('0x3c')]})[_0x69fa('0xa4')](function(){});})[_0x69fa('0x9c')](function(){return ami[_0x69fa('0xa2')]({'action':'StopMixMonitor','channel':_0x4bbc01['destinationchannel']})[_0x69fa('0xa4')](function(){})[_0x69fa('0xa5')](function(){var _0x3ac2cd=_0x56dfd7[_0x69fa('0x3b')][_0x4bbc01[_0x69fa('0x6d')][_0x69fa('0x3d')]('-')[0x0]];if(!_0x3ac2cd)return;io[_0x69fa('0x2f')](_0x69fa('0xa6'),{'agentId':_0x3ac2cd['id'],'uniqueid':_0x4bbc01[_0x69fa('0x32')]});});});});})[_0x69fa('0x9c')](function(){if(_0x336b78[_0x69fa('0xa7')]===_0x69fa('0xa8')){_0x56dfd7[_0x69fa('0x19')][_0x336b78[_0x69fa('0x32')]]=_0x56dfd7['channels'][_0x336b78['uniqueid']];}else{if(_0x56dfd7[_0x69fa('0x18')][_0x336b78[_0x69fa('0x32')]][_0x69fa('0x86')]===_0x69fa('0xa9')&&_0x56dfd7[_0x69fa('0x19')][_0x336b78[_0x69fa('0x32')]]){_0x56dfd7[_0x69fa('0x18')][_0x336b78[_0x69fa('0x32')]]['uniqueid']=[_0x56dfd7[_0x69fa('0x18')][_0x336b78[_0x69fa('0x32')]][_0x69fa('0x38')],_0x56dfd7[_0x69fa('0x18')][_0x336b78[_0x69fa('0x32')]][_0x69fa('0x38')]=_0x56dfd7['channels'][_0x336b78[_0x69fa('0x32')]]['uniqueid']][0x0];delete _0x56dfd7[_0x69fa('0x19')][_0x336b78[_0x69fa('0x32')]];}}logger[_0x69fa('0x35')](_0x69fa('0xaa'),_0x336b78['uniqueid'],util[_0x69fa('0x37')](_0x56dfd7[_0x69fa('0x18')][_0x336b78[_0x69fa('0x32')]],{'showHidden':![],'depth':null}));ami['emit'](_0x69fa('0xab'),_0x56dfd7[_0x69fa('0x18')][_0x336b78[_0x69fa('0x32')]]);delete _0x56dfd7[_0x69fa('0x18')][_0x336b78['uniqueid']];});}}}catch(_0x498b12){logger[_0x69fa('0x51')](_0x69fa('0xac'),_0x336b78['uniqueid'],util[_0x69fa('0x37')](_0x498b12,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x69fa('0xad')]=function(_0x57f98d){try{if(this[_0x69fa('0x2d')](_0x57f98d)){logger['info'](_0x69fa('0xae'),_0x57f98d[_0x69fa('0x32')],_0x57f98d[_0x69fa('0xaf')],_0x57f98d[_0x69fa('0xb0')]);logger[_0x69fa('0x35')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x57f98d[_0x69fa('0x32')],util[_0x69fa('0x37')](_0x57f98d,{'showHidden':![],'depth':null}));if(this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb1')]]){this[_0x69fa('0x18')][_0x57f98d['transfereeuniqueid']]['transfercalleridnum']=_0x57f98d[_0x69fa('0xaf')];this['channels'][_0x57f98d[_0x69fa('0xb1')]][_0x69fa('0xb2')]=_0x57f98d[_0x69fa('0xb0')];if(this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb3')]]){var _0x44e476=this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb3')]];this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb3')]]=this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb1')]];this['channels'][_0x57f98d['transfereeuniqueid']]=_0x44e476;}}else if(this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb4')]]){this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb4')]][_0x69fa('0xb5')]=_0x57f98d[_0x69fa('0xaf')];this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb4')]][_0x69fa('0xb2')]=_0x57f98d[_0x69fa('0xb0')];if(this[_0x69fa('0x18')][_0x57f98d['origtransfereruniqueid']]){var _0x44e476=this['channels'][_0x57f98d[_0x69fa('0xb6')]];this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb6')]]=this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb4')]];this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb4')]]=_0x44e476;}}if((this[_0x69fa('0x18')][_0x57f98d['origtransfereruniqueid']]||this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb7')]])&&this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb3')]]){var _0x3cddc9=_[_0x69fa('0xb8')]([this[_0x69fa('0x18')][_0x57f98d['origtransfereruniqueid']],this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb7')]],this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb3')]]],function(_0xd4380b){return _0xd4380b&&_0xd4380b[_0x69fa('0x86')]==='outbound'&&_0xd4380b[_0x69fa('0xb9')];});if(_0x3cddc9){if(this[_0x69fa('0x18')][_0x57f98d['origtransfereruniqueid']])this[_0x69fa('0x18')][_0x57f98d[_0x69fa('0xb6')]]['transferType']=_0x69fa('0xba');if(this[_0x69fa('0x18')][_0x57f98d['origtransfererlinkedid']])this['channels'][_0x57f98d['origtransfererlinkedid']]['transferType']=_0x69fa('0xba');this['channels'][_0x57f98d['secondtransfereruniqueid']][_0x69fa('0x9d')]=_0x69fa('0xba');}}}}catch(_0x2386f1){logger[_0x69fa('0x51')](_0x69fa('0xbb'),_0x57f98d[_0x69fa('0x32')],util[_0x69fa('0x37')](_0x2386f1,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x69fa('0x2c')]['syncBlindTransfer']=function(_0x53ef7a){try{if(this[_0x69fa('0x2d')](_0x53ef7a)){logger['info'](_0x69fa('0xbc'),_0x53ef7a[_0x69fa('0x32')],_0x53ef7a[_0x69fa('0xbd')],_0x53ef7a[_0x69fa('0xbe')]);logger[_0x69fa('0x35')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0x53ef7a[_0x69fa('0x32')],util['inspect'](_0x53ef7a,{'showHidden':![],'depth':null}));if(this['channels'][_0x53ef7a[_0x69fa('0xb1')]]){this[_0x69fa('0x18')][_0x53ef7a['transfereeuniqueid']][_0x69fa('0xb5')]=_0x53ef7a[_0x69fa('0xbd')];this[_0x69fa('0x18')][_0x53ef7a['transfereeuniqueid']]['transferconnectedlinenum']=_0x53ef7a['extension'];this[_0x69fa('0x18')][_0x53ef7a[_0x69fa('0xb1')]][_0x69fa('0x9d')]=_0x69fa('0xbf');this[_0x69fa('0x22')]({'event':'BlindTransfer','uniqueid':_0x53ef7a[_0x69fa('0xb1')],'context':_0x53ef7a[_0x69fa('0x39')],'channel':_0x53ef7a[_0x69fa('0xc0')]});}else{this[_0x69fa('0x18')][_0x53ef7a['transfereruniqueid']][_0x69fa('0x9d')]=_0x69fa('0xbf');}}}catch(_0x320783){logger[_0x69fa('0x51')](_0x69fa('0xc1'),_0x53ef7a[_0x69fa('0x32')],util[_0x69fa('0x37')](_0x320783,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x69fa('0x2c')][_0x69fa('0x26')]=function(_0x580c23){try{if(this[_0x69fa('0x2d')](_0x580c23)){logger[_0x69fa('0x35')](_0x69fa('0xc2'),_0x580c23['uniqueid'],util[_0x69fa('0x37')](_0x580c23,{'showHidden':![],'depth':null}));if(this[_0x69fa('0x18')][_0x580c23['uniqueid']]){if(!_[_0x69fa('0xc3')](this['channels'][_0x580c23[_0x69fa('0x32')]][_0x69fa('0x69')])){this['channels'][_0x580c23[_0x69fa('0x32')]][_0x69fa('0xc4')]=moment()[_0x69fa('0x42')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x69fa('0x28')](_0x69fa('0xc5'),_0x580c23[_0x69fa('0x32')],this['channels'][_0x580c23[_0x69fa('0x32')]]['mohstarttime']);}}}}catch(_0x2d7052){logger[_0x69fa('0x51')](_0x69fa('0xc6'),_0x580c23[_0x69fa('0x32')],util[_0x69fa('0x37')](_0x2d7052,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x69fa('0x2c')][_0x69fa('0xc7')]=function(_0x45fb3c){try{if(this[_0x69fa('0x2d')](_0x45fb3c)){logger[_0x69fa('0x35')](_0x69fa('0xc8'),_0x45fb3c[_0x69fa('0x32')],util['inspect'](_0x45fb3c,{'showHidden':![],'depth':null}));if(this[_0x69fa('0x18')][_0x45fb3c[_0x69fa('0x32')]]){if(!_[_0x69fa('0xc3')](this[_0x69fa('0x18')][_0x45fb3c[_0x69fa('0x32')]]['mohstarttime'])){this[_0x69fa('0x18')][_0x45fb3c[_0x69fa('0x32')]][_0x69fa('0xc9')]+=moment()[_0x69fa('0xca')](0x0)['diff'](this[_0x69fa('0x18')][_0x45fb3c[_0x69fa('0x32')]]['mohstarttime'],_0x69fa('0x5c'));logger[_0x69fa('0x28')]('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0x45fb3c[_0x69fa('0x32')],this['channels'][_0x45fb3c['uniqueid']]['mohtime']);delete this[_0x69fa('0x18')][_0x45fb3c[_0x69fa('0x32')]][_0x69fa('0xc4')];}}}}catch(_0x41e81d){logger[_0x69fa('0x51')]('[%s][voiceCallReport][musiconholdstop]',_0x45fb3c[_0x69fa('0x32')],util[_0x69fa('0x37')](_0x41e81d,{'showHidden':![],'depth':null}));}};module[_0x69fa('0xcb')]=VoiceCallReport;
\ No newline at end of file
index cf10b04..f8eb520 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a85=['memberdynamic','memberinterface','memberlastcall','memberpenalty','isNil','includes','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','endtime','format','duration','starttime','seconds','lastevent','complete','total','answered','holdtime','answertime','sumHoldTime','sumBillable','billableseconds','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','linkedid','[%s][voiceDialReport][newexten]\x20event:','application','applicationdata','appdata','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','varset','newexten','syncNewExten','syncHangup','prototype','isNotNull','isUndefined','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','privilege','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','emit','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','syncDialEnd','dialstatus','connectedlinename','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','syncVarSet','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','outboundrouteid','value','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls'];(function(_0x3878bd,_0x51e3e5){var _0x359e60=function(_0xe70276){while(--_0xe70276){_0x3878bd['push'](_0x3878bd['shift']());}};_0x359e60(++_0x51e3e5);}(_0x7a85,0x17b));var _0x57a8=function(_0x5ba04e,_0x4fddc1){_0x5ba04e=_0x5ba04e-0x0;var _0x471a10=_0x7a85[_0x5ba04e];return _0x471a10;};'use strict';var _=require('lodash');var moment=require(_0x57a8('0x0'));var util=require(_0x57a8('0x1'));var Redis=require(_0x57a8('0x2'));var config=require(_0x57a8('0x3'));var logger=require(_0x57a8('0x4'))(_0x57a8('0x5'));var ami=require(_0x57a8('0x6'));config[_0x57a8('0x7')]=_[_0x57a8('0x8')](config[_0x57a8('0x7')],{'host':_0x57a8('0x9'),'port':0x18eb});var io=require(_0x57a8('0xa'))(new Redis(config[_0x57a8('0x7')]));function VoiceDialReport(_0x2456ed){this[_0x57a8('0xb')]=_0x2456ed[_0x57a8('0xc')];this[_0x57a8('0xd')]=_0x2456ed[_0x57a8('0xd')];this[_0x57a8('0xe')]={};this[_0x57a8('0xf')]={};ami['on'](_0x57a8('0x10'),this[_0x57a8('0x11')][_0x57a8('0x12')](this));ami['on'](_0x57a8('0x13'),this['syncDialEnd'][_0x57a8('0x12')](this));ami['on'](_0x57a8('0x14'),this['syncVarSet']['bind'](this));ami['on'](_0x57a8('0x15'),this[_0x57a8('0x16')]['bind'](this));ami['on']('hangup',this[_0x57a8('0x17')][_0x57a8('0x12')](this));}VoiceDialReport[_0x57a8('0x18')][_0x57a8('0x19')]=function(_0x3dcd30){return _0x3dcd30!==null&&!_[_0x57a8('0x1a')](_0x3dcd30);};VoiceDialReport['prototype']['emit']=function(_0x3086c2,_0x15c56d,_0xb6021a){io['to'](_0x3086c2)['emit'](_0x15c56d,_0xb6021a);};VoiceDialReport['prototype'][_0x57a8('0x11')]=function(_0x410008){try{if(this[_0x57a8('0x19')](_0x410008)){logger['debug'](_0x57a8('0x1b'),_0x410008[_0x57a8('0x1c')],util[_0x57a8('0x1d')](_0x410008,{'showHidden':![],'depth':null}));if(this['channels'][_0x410008['uniqueid']]){_[_0x57a8('0x1e')](this[_0x57a8('0xb')][_0x410008[_0x57a8('0x1c')]],{'starttime':moment()['format'](_0x57a8('0x1f')),'lastevent':_0x57a8('0x20'),'interface':_0x410008[_0x57a8('0x21')][_0x57a8('0x22')](0x0,_0x410008['channel'][_0x57a8('0x23')]('-')),'membername':_0x410008[_0x57a8('0x21')][_0x57a8('0x22')](_0x410008[_0x57a8('0x21')][_0x57a8('0x23')]('/')+0x1,_0x410008[_0x57a8('0x21')][_0x57a8('0x23')]('-'))},_[_0x57a8('0x24')](_0x410008,['event',_0x57a8('0x25')]));logger['info'](_0x57a8('0x26'),_0x410008[_0x57a8('0x1c')],this[_0x57a8('0xb')][_0x410008['uniqueid']][_0x57a8('0x27')],this[_0x57a8('0xb')][_0x410008[_0x57a8('0x1c')]]['interface']);logger[_0x57a8('0x28')](_0x57a8('0x29'),_0x410008[_0x57a8('0x1c')],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0x410008[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));if(this['applications'][_0x410008[_0x57a8('0x1c')]])_[_0x57a8('0x1e')](this[_0x57a8('0xb')][_0x410008['uniqueid']],this['applications'][_0x410008[_0x57a8('0x1c')]]);this[_0x57a8('0x2a')]('voice:outbound',_0x57a8('0x2b'),this[_0x57a8('0xb')][_0x410008[_0x57a8('0x1c')]]);logger[_0x57a8('0x28')](_0x57a8('0x2c'),_0x410008['uniqueid'],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0x410008[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x57a8('0x2a')](_0x57a8('0x2d'),this[_0x57a8('0xb')][_0x410008['uniqueid']]);}}}catch(_0x376f86){logger[_0x57a8('0x2e')](_0x57a8('0x2f'),_0x410008['uniqueid'],util[_0x57a8('0x1d')](_0x376f86,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x57a8('0x18')][_0x57a8('0x30')]=function(_0x3bc795){try{if(this[_0x57a8('0x19')](_0x3bc795)){logger[_0x57a8('0x28')]('[%s][voiceDialReport][dialend]\x20event:',_0x3bc795[_0x57a8('0x1c')],util[_0x57a8('0x1d')](_0x3bc795,{'showHidden':![],'depth':null}));if(this[_0x57a8('0xb')][_0x3bc795[_0x57a8('0x1c')]]){this['channels'][_0x3bc795['uniqueid']]['dialstatus']=_0x3bc795['dialstatus'];if(_0x3bc795[_0x57a8('0x31')]==='ANSWER'){this['channels'][_0x3bc795[_0x57a8('0x1c')]]['connectedlinenum']=_0x3bc795['connectedlinenum'];this[_0x57a8('0xb')][_0x3bc795[_0x57a8('0x1c')]][_0x57a8('0x32')]=_0x3bc795[_0x57a8('0x32')];this[_0x57a8('0xb')][_0x3bc795[_0x57a8('0x1c')]]['answertime']=moment()['format'](_0x57a8('0x1f'));this['channels'][_0x3bc795['uniqueid']]['lastevent']='connect';logger[_0x57a8('0x33')](_0x57a8('0x34'),_0x3bc795[_0x57a8('0x1c')],_0x3bc795[_0x57a8('0x21')]['substring'](_0x3bc795[_0x57a8('0x21')][_0x57a8('0x23')]('/')+0x1,_0x3bc795[_0x57a8('0x21')][_0x57a8('0x23')]('-')));logger[_0x57a8('0x28')](_0x57a8('0x35'),_0x3bc795[_0x57a8('0x1c')],util['inspect'](this['channels'][_0x3bc795['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x57a8('0x2a')](_0x57a8('0x36'),this[_0x57a8('0xb')][_0x3bc795[_0x57a8('0x1c')]]);}logger[_0x57a8('0x28')](_0x57a8('0x37'),_0x3bc795[_0x57a8('0x1c')],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0x3bc795['uniqueid']],{'showHidden':![],'depth':null}));this[_0x57a8('0x2a')](_0x57a8('0x38'),_0x57a8('0x2b'),this[_0x57a8('0xb')][_0x3bc795[_0x57a8('0x1c')]]);}}}catch(_0x5a6489){logger['error']('[%s][voiceDialReport][dialend]',_0x3bc795[_0x57a8('0x1c')],util['inspect'](_0x5a6489,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x57a8('0x18')][_0x57a8('0x39')]=function(_0xf30967){try{if(this[_0x57a8('0x19')](_0xf30967)){logger[_0x57a8('0x28')](_0x57a8('0x3a'),_0xf30967[_0x57a8('0x1c')],util['inspect'](_0xf30967,{'showHidden':![],'depth':null}));this[_0x57a8('0x3b')](_0xf30967[_0x57a8('0x1c')],_['keys'](_0xf30967['variable'])[0x0],_0xf30967['value']);if(this[_0x57a8('0x19')](_0xf30967['variable'])&&this[_0x57a8('0x19')](_0xf30967[_0x57a8('0x3c')][_0x57a8('0x3d')])){if(_[_0x57a8('0x1a')](this['channels'][_0xf30967['uniqueid']])){this[_0x57a8('0xb')][_0xf30967[_0x57a8('0x1c')]]={'routeId':_0xf30967[_0x57a8('0x3e')],'variables':this[_0x57a8('0xf')][_0xf30967[_0x57a8('0x1c')]]};logger[_0x57a8('0x33')](_0x57a8('0x3f'),_0xf30967[_0x57a8('0x1c')],_0xf30967['variable'][_0x57a8('0x3d')],_[_0x57a8('0x40')](_0xf30967['variable'])[0x0],_0xf30967['value']);logger[_0x57a8('0x28')](_0x57a8('0x41'),_0xf30967['uniqueid'],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0xf30967[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));this[_0x57a8('0x2a')](_0x57a8('0x38'),_0x57a8('0x2b'),this[_0x57a8('0xb')][_0xf30967[_0x57a8('0x1c')]]);}}}}catch(_0x3cdf14){logger['error'](_0x57a8('0x42'),_0xf30967['uniqueid'],util[_0x57a8('0x1d')](_0x3cdf14,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x57a8('0x18')][_0x57a8('0x3b')]=function(_0x1d78df,_0x28e550,_0x4d073b){var _0x624ca1=[_0x57a8('0x43'),_0x57a8('0x44'),_0x57a8('0x45'),_0x57a8('0x46'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0x57a8('0x47'),_0x57a8('0x48'),_0x57a8('0x49'),'sipuri',_0x57a8('0x4a'),_0x57a8('0x4b'),_0x57a8('0x4c'),_0x57a8('0x4d'),_0x57a8('0x4e'),_0x57a8('0x4f'),_0x57a8('0x27'),_0x57a8('0x50'),'memberrealtime'];if(!_[_0x57a8('0x51')](_0x28e550)&&!_[_0x57a8('0x52')](_0x624ca1,_0x28e550)){if(_[_0x57a8('0x1a')](this[_0x57a8('0xf')][_0x1d78df])){this['variables'][_0x1d78df]={};}this[_0x57a8('0xf')][_0x1d78df][_0x28e550]=_0x4d073b;}};VoiceDialReport[_0x57a8('0x18')][_0x57a8('0x17')]=function(_0x4f6eb3){try{if(this['isNotNull'](_0x4f6eb3)){logger['debug']('[%s][voiceDialReport][hangup]\x20event:',_0x4f6eb3['uniqueid'],util[_0x57a8('0x1d')](_0x4f6eb3,{'showHidden':![],'depth':null}));if(this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]]){logger[_0x57a8('0x33')](_0x57a8('0x53'),_0x4f6eb3[_0x57a8('0x1c')],_0x4f6eb3['cause-txt']);this[_0x57a8('0xb')][_0x4f6eb3['uniqueid']][_0x57a8('0x54')]=moment()[_0x57a8('0x55')](_0x57a8('0x1f'));this['channels'][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x56')]=moment(this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x54')])['diff'](this['channels'][_0x4f6eb3['uniqueid']][_0x57a8('0x57')],_0x57a8('0x58'));this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x59')]=_0x57a8('0x5a');this[_0x57a8('0xd')][_0x57a8('0x5b')]+=0x1;if(this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]]['answertime']){this[_0x57a8('0xd')][_0x57a8('0x5c')]+=0x1;this[_0x57a8('0xb')][_0x4f6eb3['uniqueid']][_0x57a8('0x5d')]=moment(this[_0x57a8('0xb')][_0x4f6eb3['uniqueid']][_0x57a8('0x5e')])['diff'](this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x57')],'seconds');this['channels'][_0x4f6eb3[_0x57a8('0x1c')]]['billableseconds']=moment(this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x54')])['diff'](this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x5e')],_0x57a8('0x58'));this['outbound'][_0x57a8('0x5f')]+=this['channels'][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x5d')]||0x0;this['outbound'][_0x57a8('0x60')]+=this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]][_0x57a8('0x61')];}this[_0x57a8('0xd')]['sumDuration']+=this[_0x57a8('0xb')][_0x4f6eb3['uniqueid']][_0x57a8('0x56')];logger['debug'](_0x57a8('0x62'),_0x4f6eb3['uniqueid'],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));ami['emit'](_0x57a8('0x63'),this['channels'][_0x4f6eb3[_0x57a8('0x1c')]]);logger[_0x57a8('0x28')](_0x57a8('0x64'),_0x4f6eb3['uniqueid'],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x57a8('0x2a')](_0x57a8('0x65'),this['channels'][_0x4f6eb3[_0x57a8('0x1c')]]);logger[_0x57a8('0x28')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x4f6eb3[_0x57a8('0x1c')],util[_0x57a8('0x1d')](this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));this[_0x57a8('0x2a')](_0x57a8('0x38'),_0x57a8('0x66'),this[_0x57a8('0xd')]);logger[_0x57a8('0x33')](_0x57a8('0x67'),JSON[_0x57a8('0x68')](this[_0x57a8('0xb')][_0x4f6eb3['uniqueid']]));logger['debug'](_0x57a8('0x69'),_0x4f6eb3[_0x57a8('0x1c')],util['inspect'](this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]],{'showHidden':![],'depth':null}));this[_0x57a8('0x2a')](_0x57a8('0x38'),'voice_outbound_channel:remove',this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]]);delete this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x1c')]];}else if(this[_0x57a8('0xb')][_0x4f6eb3['linkedid']]){this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x6a')]][_0x57a8('0x1c')]=this[_0x57a8('0xb')][_0x4f6eb3[_0x57a8('0x6a')]]['destuniqueid'];}if(this[_0x57a8('0xf')][_0x4f6eb3[_0x57a8('0x1c')]]){delete this[_0x57a8('0xf')][_0x4f6eb3[_0x57a8('0x1c')]];}}}catch(_0x20b644){logger[_0x57a8('0x2e')]('[%s][voiceDialReport][hangup]',_0x4f6eb3[_0x57a8('0x1c')],util[_0x57a8('0x1d')](_0x20b644,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x57a8('0x18')][_0x57a8('0x16')]=function(_0x16390c){try{if(this[_0x57a8('0x19')](_0x16390c)){logger[_0x57a8('0x28')](_0x57a8('0x6b'),_0x16390c['uniqueid'],util[_0x57a8('0x1d')](_0x16390c,{'showHidden':![],'depth':null}));if(_0x16390c[_0x57a8('0x6c')]['toLowerCase']()==='set'){_0x16390c[_0x57a8('0x6d')]=(_0x16390c[_0x57a8('0x6e')]||_0x16390c['applicationdata'])['toLowerCase']();if(_[_0x57a8('0x6f')](_0x16390c[_0x57a8('0x6d')],'cdr(')){if(_[_0x57a8('0x1a')](this[_0x57a8('0xe')][_0x16390c['uniqueid']]))this['applications'][_0x16390c[_0x57a8('0x1c')]]={};logger[_0x57a8('0x33')](_0x57a8('0x70'),_0x16390c['uniqueid'],_0x16390c[_0x57a8('0x6c')],_0x16390c[_0x57a8('0x6d')]);var _0x2d3bc9=_0x16390c[_0x57a8('0x6d')]['split']('=');var _0x484271=_0x2d3bc9[0x0][_0x57a8('0x71')](/cdr\((.*)\)/);if(_0x484271)this[_0x57a8('0xe')][_0x16390c[_0x57a8('0x1c')]][_0x484271[0x1]]=_0x2d3bc9[0x1];}}}}catch(_0xc5c828){logger[_0x57a8('0x2e')]('[%s][voiceDialReport][newexten]',_0x16390c[_0x57a8('0x1c')],util[_0x57a8('0x1d')](_0xc5c828,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;
\ No newline at end of file
+var _0x1a1b=['ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','bind','dialend','syncDialEnd','varset','syncVarSet','newexten','syncNewExten','hangup','syncHangup','prototype','isNotNull','isUndefined','emit','syncDialBegin','debug','[%s][voiceDialReport][dialbegin]\x20event:','inspect','uniqueid','merge','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','event','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','dialstatus','connectedlinenum','connectedlinename','format','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','outboundrouteid','voice','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberinterface','memberlastcall','memberpenalty','isNil','includes','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','complete','total','answered','holdtime','answertime','starttime','seconds','billableseconds','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','set','applicationdata','toLowerCase','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','application','split','match','[%s][voiceDialReport][newexten]','exports','lodash','util'];(function(_0x5712bf,_0xa81c84){var _0x5704fa=function(_0x492f72){while(--_0x492f72){_0x5712bf['push'](_0x5712bf['shift']());}};_0x5704fa(++_0xa81c84);}(_0x1a1b,0x1e6));var _0xb1a1=function(_0xe0d427,_0x5027ca){_0xe0d427=_0xe0d427-0x0;var _0x46e3c6=_0x1a1b[_0xe0d427];return _0x46e3c6;};'use strict';var _=require(_0xb1a1('0x0'));var moment=require('moment');var util=require(_0xb1a1('0x1'));var Redis=require(_0xb1a1('0x2'));var config=require(_0xb1a1('0x3'));var logger=require(_0xb1a1('0x4'))(_0xb1a1('0x5'));var ami=require(_0xb1a1('0x6'));config[_0xb1a1('0x7')]=_[_0xb1a1('0x8')](config[_0xb1a1('0x7')],{'host':_0xb1a1('0x9'),'port':0x18eb});var io=require(_0xb1a1('0xa'))(new Redis(config[_0xb1a1('0x7')]));function VoiceDialReport(_0x1ef053){this[_0xb1a1('0xb')]=_0x1ef053[_0xb1a1('0xc')];this[_0xb1a1('0xd')]=_0x1ef053[_0xb1a1('0xd')];this[_0xb1a1('0xe')]={};this[_0xb1a1('0xf')]={};ami['on'](_0xb1a1('0x10'),this['syncDialBegin'][_0xb1a1('0x11')](this));ami['on'](_0xb1a1('0x12'),this[_0xb1a1('0x13')][_0xb1a1('0x11')](this));ami['on'](_0xb1a1('0x14'),this[_0xb1a1('0x15')][_0xb1a1('0x11')](this));ami['on'](_0xb1a1('0x16'),this[_0xb1a1('0x17')]['bind'](this));ami['on'](_0xb1a1('0x18'),this[_0xb1a1('0x19')][_0xb1a1('0x11')](this));}VoiceDialReport[_0xb1a1('0x1a')][_0xb1a1('0x1b')]=function(_0x3c3432){return _0x3c3432!==null&&!_[_0xb1a1('0x1c')](_0x3c3432);};VoiceDialReport[_0xb1a1('0x1a')][_0xb1a1('0x1d')]=function(_0x52a9c6,_0x2fce7a,_0x4b3d33){io['to'](_0x52a9c6)[_0xb1a1('0x1d')](_0x2fce7a,_0x4b3d33);};VoiceDialReport['prototype'][_0xb1a1('0x1e')]=function(_0x30237d){try{if(this[_0xb1a1('0x1b')](_0x30237d)){logger[_0xb1a1('0x1f')](_0xb1a1('0x20'),_0x30237d['uniqueid'],util[_0xb1a1('0x21')](_0x30237d,{'showHidden':![],'depth':null}));if(this[_0xb1a1('0xb')][_0x30237d[_0xb1a1('0x22')]]){_[_0xb1a1('0x23')](this[_0xb1a1('0xb')][_0x30237d[_0xb1a1('0x22')]],{'starttime':moment()['format'](_0xb1a1('0x24')),'lastevent':_0xb1a1('0x25'),'interface':_0x30237d[_0xb1a1('0x26')][_0xb1a1('0x27')](0x0,_0x30237d['channel'][_0xb1a1('0x28')]('-')),'membername':_0x30237d[_0xb1a1('0x26')]['substring'](_0x30237d[_0xb1a1('0x26')][_0xb1a1('0x28')]('/')+0x1,_0x30237d['channel'][_0xb1a1('0x28')]('-'))},_[_0xb1a1('0x29')](_0x30237d,[_0xb1a1('0x2a'),'privilege']));logger[_0xb1a1('0x2b')](_0xb1a1('0x2c'),_0x30237d[_0xb1a1('0x22')],this[_0xb1a1('0xb')][_0x30237d[_0xb1a1('0x22')]][_0xb1a1('0x2d')],this[_0xb1a1('0xb')][_0x30237d['uniqueid']][_0xb1a1('0x2e')]);logger[_0xb1a1('0x1f')](_0xb1a1('0x2f'),_0x30237d['uniqueid'],util['inspect'](this[_0xb1a1('0xb')][_0x30237d[_0xb1a1('0x22')]],{'showHidden':![],'depth':null}));if(this[_0xb1a1('0xe')][_0x30237d[_0xb1a1('0x22')]])_[_0xb1a1('0x23')](this[_0xb1a1('0xb')][_0x30237d['uniqueid']],this['applications'][_0x30237d[_0xb1a1('0x22')]]);this[_0xb1a1('0x1d')](_0xb1a1('0x30'),_0xb1a1('0x31'),this[_0xb1a1('0xb')][_0x30237d['uniqueid']]);logger['debug'](_0xb1a1('0x32'),_0x30237d[_0xb1a1('0x22')],util['inspect'](this[_0xb1a1('0xb')][_0x30237d['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xb1a1('0x1d')](_0xb1a1('0x33'),this[_0xb1a1('0xb')][_0x30237d['uniqueid']]);}}}catch(_0x590821){logger[_0xb1a1('0x34')](_0xb1a1('0x35'),_0x30237d[_0xb1a1('0x22')],util[_0xb1a1('0x21')](_0x590821,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xb1a1('0x13')]=function(_0x34b350){try{if(this['isNotNull'](_0x34b350)){logger[_0xb1a1('0x1f')]('[%s][voiceDialReport][dialend]\x20event:',_0x34b350[_0xb1a1('0x22')],util[_0xb1a1('0x21')](_0x34b350,{'showHidden':![],'depth':null}));if(this['channels'][_0x34b350[_0xb1a1('0x22')]]){this[_0xb1a1('0xb')][_0x34b350[_0xb1a1('0x22')]][_0xb1a1('0x36')]=_0x34b350[_0xb1a1('0x36')];if(_0x34b350['dialstatus']==='ANSWER'){this[_0xb1a1('0xb')][_0x34b350[_0xb1a1('0x22')]][_0xb1a1('0x37')]=_0x34b350[_0xb1a1('0x37')];this[_0xb1a1('0xb')][_0x34b350[_0xb1a1('0x22')]][_0xb1a1('0x38')]=_0x34b350[_0xb1a1('0x38')];this[_0xb1a1('0xb')][_0x34b350[_0xb1a1('0x22')]]['answertime']=moment()[_0xb1a1('0x39')](_0xb1a1('0x24'));this[_0xb1a1('0xb')][_0x34b350[_0xb1a1('0x22')]]['lastevent']='connect';logger[_0xb1a1('0x2b')](_0xb1a1('0x3a'),_0x34b350['uniqueid'],_0x34b350[_0xb1a1('0x26')][_0xb1a1('0x27')](_0x34b350[_0xb1a1('0x26')]['lastIndexOf']('/')+0x1,_0x34b350['channel'][_0xb1a1('0x28')]('-')));logger[_0xb1a1('0x1f')](_0xb1a1('0x3b'),_0x34b350[_0xb1a1('0x22')],util['inspect'](this[_0xb1a1('0xb')][_0x34b350[_0xb1a1('0x22')]],{'showHidden':![],'depth':null}));ami[_0xb1a1('0x1d')](_0xb1a1('0x3c'),this[_0xb1a1('0xb')][_0x34b350[_0xb1a1('0x22')]]);}logger['debug'](_0xb1a1('0x3d'),_0x34b350[_0xb1a1('0x22')],util['inspect'](this[_0xb1a1('0xb')][_0x34b350[_0xb1a1('0x22')]],{'showHidden':![],'depth':null}));this[_0xb1a1('0x1d')]('voice:outbound','voice_outbound_channel:save',this[_0xb1a1('0xb')][_0x34b350['uniqueid']]);}}}catch(_0x640b00){logger['error']('[%s][voiceDialReport][dialend]',_0x34b350[_0xb1a1('0x22')],util[_0xb1a1('0x21')](_0x640b00,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb1a1('0x1a')]['syncVarSet']=function(_0x2160f3){try{if(this[_0xb1a1('0x1b')](_0x2160f3)){logger[_0xb1a1('0x1f')](_0xb1a1('0x3e'),_0x2160f3[_0xb1a1('0x22')],util[_0xb1a1('0x21')](_0x2160f3,{'showHidden':![],'depth':null}));this[_0xb1a1('0x3f')](_0x2160f3['uniqueid'],_[_0xb1a1('0x40')](_0x2160f3[_0xb1a1('0x41')])[0x0],_0x2160f3['value']);if(this['isNotNull'](_0x2160f3[_0xb1a1('0x41')])&&this['isNotNull'](_0x2160f3[_0xb1a1('0x41')][_0xb1a1('0x42')])){if(_[_0xb1a1('0x1c')](this['channels'][_0x2160f3[_0xb1a1('0x22')]])){this[_0xb1a1('0xb')][_0x2160f3[_0xb1a1('0x22')]]={'routeId':_0x2160f3['value'],'variables':this[_0xb1a1('0xf')][_0x2160f3[_0xb1a1('0x22')]],'motionChannel':_0xb1a1('0x43')};logger[_0xb1a1('0x2b')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x2160f3['uniqueid'],_0x2160f3[_0xb1a1('0x41')][_0xb1a1('0x42')],_[_0xb1a1('0x40')](_0x2160f3[_0xb1a1('0x41')])[0x0],_0x2160f3['value']);logger['debug']('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x2160f3[_0xb1a1('0x22')],util[_0xb1a1('0x21')](this[_0xb1a1('0xb')][_0x2160f3[_0xb1a1('0x22')]],{'showHidden':![],'depth':null}));this[_0xb1a1('0x1d')](_0xb1a1('0x30'),_0xb1a1('0x31'),this[_0xb1a1('0xb')][_0x2160f3[_0xb1a1('0x22')]]);}}}}catch(_0x3a84e2){logger[_0xb1a1('0x34')](_0xb1a1('0x44'),_0x2160f3[_0xb1a1('0x22')],util[_0xb1a1('0x21')](_0x3a84e2,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb1a1('0x1a')][_0xb1a1('0x3f')]=function(_0x46ccce,_0x10fde3,_0x4ec1ce){var _0x32e002=[_0xb1a1('0x45'),'rtpaudioqosbridged',_0xb1a1('0x46'),_0xb1a1('0x47'),_0xb1a1('0x48'),_0xb1a1('0x49'),_0xb1a1('0x4a'),_0xb1a1('0x4b'),_0xb1a1('0x4c'),_0xb1a1('0x4d'),_0xb1a1('0x4e'),_0xb1a1('0x4f'),'membercalls','memberdynamic',_0xb1a1('0x50'),_0xb1a1('0x51'),_0xb1a1('0x2d'),_0xb1a1('0x52'),'memberrealtime'];if(!_[_0xb1a1('0x53')](_0x10fde3)&&!_[_0xb1a1('0x54')](_0x32e002,_0x10fde3)){if(_[_0xb1a1('0x1c')](this['variables'][_0x46ccce])){this[_0xb1a1('0xf')][_0x46ccce]={};}this[_0xb1a1('0xf')][_0x46ccce][_0x10fde3]=_0x4ec1ce;}};VoiceDialReport['prototype'][_0xb1a1('0x19')]=function(_0x51e92e){try{if(this['isNotNull'](_0x51e92e)){logger[_0xb1a1('0x1f')]('[%s][voiceDialReport][hangup]\x20event:',_0x51e92e[_0xb1a1('0x22')],util['inspect'](_0x51e92e,{'showHidden':![],'depth':null}));if(this[_0xb1a1('0xb')][_0x51e92e['uniqueid']]){logger[_0xb1a1('0x2b')](_0xb1a1('0x55'),_0x51e92e['uniqueid'],_0x51e92e[_0xb1a1('0x56')]);this[_0xb1a1('0xb')][_0x51e92e['uniqueid']][_0xb1a1('0x57')]=moment()[_0xb1a1('0x39')](_0xb1a1('0x24'));this[_0xb1a1('0xb')][_0x51e92e[_0xb1a1('0x22')]][_0xb1a1('0x58')]=moment(this[_0xb1a1('0xb')][_0x51e92e[_0xb1a1('0x22')]]['endtime'])[_0xb1a1('0x59')](this[_0xb1a1('0xb')][_0x51e92e['uniqueid']]['starttime'],'seconds');this[_0xb1a1('0xb')][_0x51e92e['uniqueid']]['lastevent']=_0xb1a1('0x5a');this[_0xb1a1('0xd')][_0xb1a1('0x5b')]+=0x1;if(this[_0xb1a1('0xb')][_0x51e92e[_0xb1a1('0x22')]]['answertime']){this[_0xb1a1('0xd')][_0xb1a1('0x5c')]+=0x1;this['channels'][_0x51e92e['uniqueid']][_0xb1a1('0x5d')]=moment(this[_0xb1a1('0xb')][_0x51e92e[_0xb1a1('0x22')]][_0xb1a1('0x5e')])[_0xb1a1('0x59')](this[_0xb1a1('0xb')][_0x51e92e[_0xb1a1('0x22')]][_0xb1a1('0x5f')],_0xb1a1('0x60'));this['channels'][_0x51e92e[_0xb1a1('0x22')]][_0xb1a1('0x61')]=moment(this[_0xb1a1('0xb')][_0x51e92e[_0xb1a1('0x22')]]['endtime'])[_0xb1a1('0x59')](this[_0xb1a1('0xb')][_0x51e92e[_0xb1a1('0x22')]][_0xb1a1('0x5e')],_0xb1a1('0x60'));this[_0xb1a1('0xd')]['sumHoldTime']+=this[_0xb1a1('0xb')][_0x51e92e['uniqueid']]['holdtime']||0x0;this['outbound'][_0xb1a1('0x62')]+=this['channels'][_0x51e92e['uniqueid']]['billableseconds'];}this[_0xb1a1('0xd')][_0xb1a1('0x63')]+=this[_0xb1a1('0xb')][_0x51e92e['uniqueid']]['duration'];logger['debug'](_0xb1a1('0x64'),_0x51e92e[_0xb1a1('0x22')],util[_0xb1a1('0x21')](this[_0xb1a1('0xb')][_0x51e92e[_0xb1a1('0x22')]],{'showHidden':![],'depth':null}));ami[_0xb1a1('0x1d')]('custom:voiceDialReport',this[_0xb1a1('0xb')][_0x51e92e['uniqueid']]);logger[_0xb1a1('0x1f')](_0xb1a1('0x65'),_0x51e92e[_0xb1a1('0x22')],util[_0xb1a1('0x21')](this[_0xb1a1('0xb')][_0x51e92e['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xb1a1('0x1d')](_0xb1a1('0x66'),this['channels'][_0x51e92e[_0xb1a1('0x22')]]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x51e92e[_0xb1a1('0x22')],util[_0xb1a1('0x21')](this[_0xb1a1('0xb')][_0x51e92e['uniqueid']],{'showHidden':![],'depth':null}));this[_0xb1a1('0x1d')](_0xb1a1('0x30'),_0xb1a1('0x67'),this[_0xb1a1('0xd')]);logger['info'](_0xb1a1('0x68'),JSON['stringify'](this['channels'][_0x51e92e[_0xb1a1('0x22')]]));logger['debug'](_0xb1a1('0x69'),_0x51e92e[_0xb1a1('0x22')],util[_0xb1a1('0x21')](this['channels'][_0x51e92e[_0xb1a1('0x22')]],{'showHidden':![],'depth':null}));this['emit'](_0xb1a1('0x30'),_0xb1a1('0x6a'),this[_0xb1a1('0xb')][_0x51e92e['uniqueid']]);delete this[_0xb1a1('0xb')][_0x51e92e[_0xb1a1('0x22')]];}else if(this[_0xb1a1('0xb')][_0x51e92e['linkedid']]){this[_0xb1a1('0xb')][_0x51e92e['linkedid']][_0xb1a1('0x22')]=this[_0xb1a1('0xb')][_0x51e92e[_0xb1a1('0x6b')]][_0xb1a1('0x6c')];}if(this['variables'][_0x51e92e[_0xb1a1('0x22')]]){delete this[_0xb1a1('0xf')][_0x51e92e[_0xb1a1('0x22')]];}}}catch(_0x57dccb){logger[_0xb1a1('0x34')](_0xb1a1('0x6d'),_0x51e92e[_0xb1a1('0x22')],util[_0xb1a1('0x21')](_0x57dccb,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb1a1('0x1a')]['syncNewExten']=function(_0x1ab582){try{if(this[_0xb1a1('0x1b')](_0x1ab582)){logger[_0xb1a1('0x1f')](_0xb1a1('0x6e'),_0x1ab582[_0xb1a1('0x22')],util['inspect'](_0x1ab582,{'showHidden':![],'depth':null}));if(_0x1ab582['application']['toLowerCase']()===_0xb1a1('0x6f')){_0x1ab582[_0xb1a1('0x70')]=(_0x1ab582['appdata']||_0x1ab582[_0xb1a1('0x70')])[_0xb1a1('0x71')]();if(_[_0xb1a1('0x72')](_0x1ab582['applicationdata'],_0xb1a1('0x73'))){if(_[_0xb1a1('0x1c')](this[_0xb1a1('0xe')][_0x1ab582[_0xb1a1('0x22')]]))this[_0xb1a1('0xe')][_0x1ab582[_0xb1a1('0x22')]]={};logger['info'](_0xb1a1('0x74'),_0x1ab582[_0xb1a1('0x22')],_0x1ab582[_0xb1a1('0x75')],_0x1ab582['applicationdata']);var _0x39e71e=_0x1ab582['applicationdata'][_0xb1a1('0x76')]('=');var _0x48e07c=_0x39e71e[0x0][_0xb1a1('0x77')](/cdr\((.*)\)/);if(_0x48e07c)this[_0xb1a1('0xe')][_0x1ab582[_0xb1a1('0x22')]][_0x48e07c[0x1]]=_0x39e71e[0x1];}}}}catch(_0x371072){logger[_0xb1a1('0x34')](_0xb1a1('0x78'),_0x1ab582[_0xb1a1('0x22')],util['inspect'](_0x371072,{'showHidden':![],'depth':null}));}};module[_0xb1a1('0x79')]=VoiceDialReport;
\ No newline at end of file
index 44098e5..75ce292 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4899=['queuecallercompleteAt','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','syncAgentComplete','[%s][voiceQueueReport][agentcomplete]','assigned','membername','holdtime','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','channel','local/','linkedid','queuecallerexit','queuecallerexitAt','seconds','FORWARDTRANSFER','transfertype','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','addVariable','keys','value','variable','queuestatus','CONTINUE','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','varset','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','[%s][voiceQueueReport][varset]','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','membercalls','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceQueueReport][hangup]','length','diff','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','hangup','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfereruniqueid','ATTENDEDTRANSFER','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohtime','milliseconds','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','util','ioredis','../../../config/logger','ami','../ami','../model/queueReport','redis','localhost','socket.io-emitter','tail','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','syncQueueSummary','bind','queuesummarycomplete','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','syncVarSet','fullybooted','syncFullyBooted','newexten','syncNewExten','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','pTalking','unlockRR','prototype','clearZombieChannels','switch','enqueue','Action','status','catch','message','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','error','variables','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','voice_queue_channel:save','voice_queue_presence:save','name','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','strategy','answered','available','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','Trunk','callerid','Interval','stringify','md5','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','queues','[voiceQueueReport][queues]','queuesummary','then','queue','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummary]\x20name:%s','callers','waiting','toNumber','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','[voiceQueueReport][queuesummary]','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','inbound','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','info','merge','pick','push','queuecallerjoin','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete'];(function(_0xc7e695,_0x5290fa){var _0x3a4ff0=function(_0xa21d6e){while(--_0xa21d6e){_0xc7e695['push'](_0xc7e695['shift']());}};_0x3a4ff0(++_0x5290fa);}(_0x4899,0x74));var _0x9489=function(_0x5ec43c,_0x343ebf){_0x5ec43c=_0x5ec43c-0x0;var _0x858b24=_0x4899[_0x5ec43c];return _0x858b24;};'use strict';var _=require(_0x9489('0x0'));var moment=require('moment');var util=require(_0x9489('0x1'));var md5=require('md5');var Redis=require(_0x9489('0x2'));var config=require('../../../config/environment');var logger=require(_0x9489('0x3'))(_0x9489('0x4'));var ami=require(_0x9489('0x5'));var QueueReport=require(_0x9489('0x6'));config[_0x9489('0x7')]=_['defaults'](config[_0x9489('0x7')],{'host':_0x9489('0x8'),'port':0x18eb});var io=require(_0x9489('0x9'))(new Redis(config[_0x9489('0x7')]));var Sequence=function(){};Sequence['prototype']['enqueue']=function(_0x1379eb){this['tail']=this[_0x9489('0xa')]?this[_0x9489('0xa')]['finally'](_0x1379eb):_0x1379eb();};function VoiceQueueReport(_0x1dac7c){this[_0x9489('0xb')]=new Sequence();this[_0x9489('0xc')]={};this[_0x9489('0xd')]=_0x1dac7c[_0x9489('0xd')];this[_0x9489('0xe')]=_0x1dac7c[_0x9489('0xf')];this[_0x9489('0x10')]=_0x1dac7c['voiceQueues'];this[_0x9489('0x11')]=!![];this[_0x9489('0x12')]=_0x1dac7c[_0x9489('0x12')];this['variables']={};ami['on']('queuesummary',this[_0x9489('0x13')][_0x9489('0x14')](this));ami['on'](_0x9489('0x15'),this['syncQueueSummaryComplete'][_0x9489('0x14')](this));ami['on']('queuecallerjoin',this[_0x9489('0x16')]['bind'](this));ami['on'](_0x9489('0x17'),this[_0x9489('0x18')][_0x9489('0x14')](this));ami['on'](_0x9489('0x19'),this[_0x9489('0x1a')]['bind'](this));ami['on'](_0x9489('0x1b'),this['syncAgentComplete']['bind'](this));ami['on'](_0x9489('0x1c'),this[_0x9489('0x1d')][_0x9489('0x14')](this));ami['on']('varset',this[_0x9489('0x1e')][_0x9489('0x14')](this));ami['on']('hangup',this['syncHangup'][_0x9489('0x14')](this));ami['on'](_0x9489('0x1f'),this[_0x9489('0x20')][_0x9489('0x14')](this));ami['on'](_0x9489('0x21'),this[_0x9489('0x22')][_0x9489('0x14')](this));ami['on']('musiconholdstart',this[_0x9489('0x23')][_0x9489('0x14')](this));ami['on'](_0x9489('0x24'),this['syncMusicOnHoldStop'][_0x9489('0x14')](this));ami['on'](_0x9489('0x25'),this[_0x9489('0x26')][_0x9489('0x14')](this));ami['on'](_0x9489('0x27'),this[_0x9489('0x28')]['bind'](this));this[_0x9489('0x29')]();this[_0x9489('0x2a')]();}function clearChannels(_0x4186dd){if(!_[_0x9489('0x2b')](_0x4186dd)){for(var _0x2daed4 in _0x4186dd){if(_0x4186dd[_0x9489('0x2c')](_0x2daed4)){delete _0x4186dd[_0x2daed4];}}}}function clearCampaigns(_0x21ea0a){if(!_[_0x9489('0x2b')](_0x21ea0a)){for(var _0xd92a57 in _0x21ea0a){if(_0x21ea0a[_0x9489('0x2c')](_0xd92a57)){_0x21ea0a[_0xd92a57][_0x9489('0x2d')]=0x0;}}}}function clearVoiceQueues(_0x2f54e7){if(!_[_0x9489('0x2b')](_0x2f54e7)){for(var _0x263b01 in _0x2f54e7){if(_0x2f54e7[_0x9489('0x2c')](_0x263b01)){_0x2f54e7[_0x263b01][_0x9489('0x2d')]=0x0;_0x2f54e7[_0x263b01]['talking']=0x0;_0x2f54e7[_0x263b01][_0x9489('0x2e')]=0x0;_0x2f54e7[_0x263b01]['waiting']=0x0;_0x2f54e7[_0x263b01]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x4bc3ce){if(!_[_0x9489('0x2b')](_0x4bc3ce)){for(var _0x13fc88 in _0x4bc3ce){if(_0x4bc3ce['hasOwnProperty'](_0x13fc88)){_0x4bc3ce[_0x13fc88][_0x9489('0x2f')]=!![];}}}}VoiceQueueReport[_0x9489('0x30')][_0x9489('0x31')]=function(){var _0x4f1bad=this;for(var _0x590f2b in this[_0x9489('0xe')]){if(this['channels'][_0x9489('0x2c')](_0x590f2b)&&!this[_0x9489('0xe')][_0x590f2b][_0x9489('0x32')]){this[_0x9489('0xb')][_0x9489('0x33')](function(){if(!_['isNil'](_0x4f1bad['channels'][_0x590f2b])){return ami[_0x9489('0x34')]({'action':_0x9489('0x35'),'channel':_0x4f1bad[_0x9489('0xe')][_0x590f2b]['channel']})[_0x9489('0x36')](function(_0x4fb9a8){if(_0x4fb9a8[_0x9489('0x37')]===_0x9489('0x38')){setTimeout(function(){if(_0x4f1bad[_0x9489('0xe')][_0x590f2b]){delete _0x4f1bad[_0x9489('0xe')][_0x590f2b];logger['error'](_0x9489('0x39'),_0x590f2b,util[_0x9489('0x3a')](_0x4fb9a8,{'showHidden':![],'depth':null}));}if(_0x4f1bad[_0x9489('0xc')][_0x590f2b]){delete _0x4f1bad['queueReports'][_0x590f2b];logger[_0x9489('0x3b')]('[%s][voiceQueueReport][checkQueueReport]',_0x590f2b,util[_0x9489('0x3a')](_0x4fb9a8,{'showHidden':![],'depth':null}));}if(_0x4f1bad[_0x9489('0x3c')][_0x590f2b]){delete _0x4f1bad['variables'][_0x590f2b];logger[_0x9489('0x3b')](_0x9489('0x3d'),_0x590f2b,util[_0x9489('0x3a')](_0x4fb9a8,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x9489('0x20')]=function(){logger[_0x9489('0x3b')](_0x9489('0x3e'));clearChannels(this[_0x9489('0xe')]);this[_0x9489('0x3f')](this[_0x9489('0xc')]);clearAgentBooked(this[_0x9489('0xd')]);clearVoiceQueues(this[_0x9489('0x10')]);clearCampaigns(this[_0x9489('0x12')]);};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x3f')]=function(_0x21cab9){var _0x3131fe=this;if(!_[_0x9489('0x2b')](_0x21cab9)){for(var _0xe8830e in _0x21cab9){if(_0x21cab9[_0x9489('0x2c')](_0xe8830e)){_0x3131fe[_0x9489('0x40')](_0x21cab9[_0xe8830e],_0x9489('0x41'));delete _0x21cab9[_0xe8830e];}}}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x42')]=function(_0x1bcdb8,_0x13a508,_0x536cfb){io['to'](_0x1bcdb8)['emit'](_0x13a508,_0x536cfb);};VoiceQueueReport['prototype'][_0x9489('0x43')]=function(_0x28d721,_0x18272e){logger[_0x9489('0x44')](_0x9489('0x45')+_0x18272e+_0x9489('0x46'),_0x28d721[_0x9489('0x47')],util[_0x9489('0x3a')](_0x28d721,{'showHidden':![],'depth':null}));this[_0x9489('0x42')](util[_0x9489('0x48')](_0x9489('0x49'),_0x28d721['name']),_0x9489('0x4a'),_0x28d721);io[_0x9489('0x42')](_0x9489('0x4b'),_0x28d721);};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x40')]=function(_0x3977ab,_0xe0714d){logger[_0x9489('0x44')](_0x9489('0x45')+_0xe0714d+']\x20sending\x20voice_queue_channel:remove\x20event:',_0x3977ab[_0x9489('0x47')],util[_0x9489('0x3a')](_0x3977ab,{'showHidden':![],'depth':null}));this[_0x9489('0x42')](util[_0x9489('0x48')](_0x9489('0x49'),_0x3977ab[_0x9489('0x4c')]),_0x9489('0x4d'),_0x3977ab);io['emit'](_0x9489('0x4e'),_0x3977ab);};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x4f')]=function(_0x400d04,_0x1cb015){if(_0x400d04[_0x9489('0x50')]==='inbound'){var _0x4f0235={'id':_0x400d04['id'],'name':_0x400d04['name'],'strategy':_0x400d04[_0x9489('0x51')],'answered':_0x400d04[_0x9489('0x52')],'available':_0x400d04[_0x9489('0x53')],'loggedIn':_0x400d04[_0x9489('0x54')],'pTalking':_0x400d04[_0x9489('0x2e')],'sumBillable':_0x400d04[_0x9489('0x55')],'sumDuration':_0x400d04[_0x9489('0x56')],'sumHoldTime':_0x400d04[_0x9489('0x57')]||0x0,'talking':_0x400d04[_0x9489('0x58')],'total':_0x400d04[_0x9489('0x59')],'type':_0x400d04[_0x9489('0x50')],'unmanaged':_0x400d04[_0x9489('0x5a')],'abandoned':_0x400d04[_0x9489('0x5b')],'waiting':_0x400d04['waiting']};if(_0x400d04[_0x9489('0x5c')]){_0x4f0235[_0x9489('0x5c')]={'id':_0x400d04[_0x9489('0x5c')]['id'],'name':_0x400d04[_0x9489('0x5c')][_0x9489('0x4c')],'active':_0x400d04['Trunk']['active'],'callerid':_0x400d04[_0x9489('0x5c')][_0x9489('0x5d')]};}if(_0x400d04[_0x9489('0x5e')]){_0x4f0235[_0x9489('0x5e')]={'id':_0x400d04[_0x9489('0x5e')]['id'],'name':_0x400d04[_0x9489('0x5e')][_0x9489('0x4c')]};}var _0x2ee0cd=md5(JSON[_0x9489('0x5f')](_0x4f0235));if(_0x400d04[_0x9489('0x60')]!==_0x2ee0cd){_0x400d04[_0x9489('0x60')]=_0x2ee0cd;logger[_0x9489('0x44')](_0x9489('0x61')+_0x1cb015+_0x9489('0x62'),util[_0x9489('0x3a')](_0x4f0235,{'showHidden':![],'depth':null}));this[_0x9489('0x42')](util[_0x9489('0x48')](_0x9489('0x49'),_0x4f0235[_0x9489('0x4c')]),_0x9489('0x63'),_0x4f0235);}}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x64')]=function(_0x1d7c21){return _0x1d7c21!==null&&!_[_0x9489('0x65')](_0x1d7c21);};VoiceQueueReport[_0x9489('0x30')]['loopQueueShow']=function(){var _0x24a965=this;setInterval(function(){_0x24a965[_0x9489('0x31')]();ami[_0x9489('0x34')]({'action':_0x9489('0x66')})[_0x9489('0x36')](function(_0x41331a){logger[_0x9489('0x3b')](_0x9489('0x67'),util['inspect'](_0x41331a,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x9489('0x29')]=function(){var _0x512b4c=this;setInterval(function(){if(_0x512b4c[_0x9489('0x11')]){return ami['Action']({'action':_0x9489('0x68')})[_0x9489('0x69')](function(_0x450f2e){_0x512b4c[_0x9489('0x11')]=![];})[_0x9489('0x36')](function(_0x4cf21a){logger['error']('[voiceQueueReport][queuesummary]',util['inspect'](_0x4cf21a,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x9489('0x13')]=function(_0x5d8390){try{if(this[_0x9489('0x64')](_0x5d8390)&&this[_0x9489('0x64')](_0x5d8390[_0x9489('0x6a')])){logger[_0x9489('0x44')](_0x9489('0x6b'),util[_0x9489('0x3a')](_0x5d8390,{'showHidden':![],'depth':null}));if(this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]]){logger['info'](_0x9489('0x6c'),_0x5d8390['queue']);var _0x111707=_['countBy'](this['channels'],_0x9489('0x6a'))[_0x5d8390[_0x9489('0x6a')]]||0x0;var _0x45b0b6=_0x111707-_0x5d8390[_0x9489('0x6d')];if(this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x6e')]!==_[_0x9489('0x6f')](_0x5d8390[_0x9489('0x6d')])||this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x54')]!==_[_0x9489('0x6f')](_0x5d8390['loggedin'])||this[_0x9489('0x10')][_0x5d8390['queue']]['available']!==_[_0x9489('0x6f')](_0x5d8390[_0x9489('0x53')])||this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x58')]!==_0x45b0b6){this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x6e')]=_[_0x9489('0x6f')](_0x5d8390[_0x9489('0x6d')]);this[_0x9489('0x10')][_0x5d8390['queue']][_0x9489('0x54')]=_[_0x9489('0x6f')](_0x5d8390[_0x9489('0x70')]);this['voiceQueues'][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x53')]=_[_0x9489('0x6f')](_0x5d8390[_0x9489('0x53')]);this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x58')]=_0x45b0b6>0x0?_0x45b0b6:0x0;this[_0x9489('0x10')][_0x5d8390['queue']]['talking']=this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x58')]>_[_0x9489('0x6f')](_0x5d8390['loggedin'])?_[_0x9489('0x6f')](_0x5d8390[_0x9489('0x70')]):this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]][_0x9489('0x58')];this[_0x9489('0x4f')](this['voiceQueues'][_0x5d8390[_0x9489('0x6a')]],_0x9489('0x68'));}logger[_0x9489('0x44')](_0x9489('0x71'),util[_0x9489('0x3a')](this[_0x9489('0x10')][_0x5d8390[_0x9489('0x6a')]],{'showHidden':![],'depth':null}));ami[_0x9489('0x42')]('custom:queuesummary',this['voiceQueues'][_0x5d8390[_0x9489('0x6a')]]);}}}catch(_0x7ca6aa){logger['error'](_0x9489('0x72'),util[_0x9489('0x3a')](_0x7ca6aa,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x73')]=function(_0xba33dd){logger[_0x9489('0x44')](_0x9489('0x74'),util[_0x9489('0x3a')](_0xba33dd,{'showHidden':![],'depth':null}));this[_0x9489('0x11')]=!![];};VoiceQueueReport[_0x9489('0x30')]['syncQueueCallerJoin']=function(_0x1f0aae){try{if(this[_0x9489('0x64')](_0x1f0aae)){logger[_0x9489('0x44')](_0x9489('0x75'),_0x1f0aae[_0x9489('0x47')],util['inspect'](_0x1f0aae,{'showHidden':![],'depth':null}));if(_[_0x9489('0x65')](this['queueReports'][_0x1f0aae[_0x9489('0x47')]]))this[_0x9489('0xc')][_0x1f0aae['uniqueid']]=[];if(_[_0x9489('0x65')](this['channels'][_0x1f0aae[_0x9489('0x47')]]))this[_0x9489('0xe')][_0x1f0aae['uniqueid']]={};var _0x432705=new QueueReport();_0x432705[_0x9489('0x4c')]=_0x1f0aae[_0x9489('0x6a')];_0x432705['type']=this[_0x9489('0x10')][_0x432705[_0x9489('0x4c')]]&&this[_0x9489('0x10')][_0x432705['name']][_0x9489('0x50')]?this['voiceQueues'][_0x432705[_0x9489('0x4c')]][_0x9489('0x50')]||_0x9489('0x76'):_0x9489('0x76');_0x432705['queue']=_0x1f0aae[_0x9489('0x6a')];_0x432705[_0x9489('0x77')]=moment()[_0x9489('0x48')](_0x9489('0x78'));_0x432705[_0x9489('0x79')]=_0x1f0aae[_0x9489('0x79')];_0x432705[_0x9489('0x7a')]=_0x1f0aae[_0x9489('0x7a')];_0x432705[_0x9489('0x47')]=_0x1f0aae['uniqueid'];_0x432705[_0x9489('0x7b')]=this[_0x9489('0xe')][_0x1f0aae[_0x9489('0x47')]]['routealias'];logger[_0x9489('0x7c')]('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x432705['name'],_0x432705[_0x9489('0x50')]);_[_0x9489('0x7d')](_0x432705,_[_0x9489('0x7e')](_0x1f0aae,_['keys'](_0x432705)));this[_0x9489('0xc')][_0x1f0aae['uniqueid']][_0x9489('0x7f')](_0x432705);this[_0x9489('0xe')][_0x1f0aae[_0x9489('0x47')]]=_0x432705;this[_0x9489('0x43')](_0x432705,_0x9489('0x80'));}}catch(_0x171515){logger[_0x9489('0x3b')]('[%s][voiceQueueReport][queuecallerjoin]',_0x1f0aae[_0x9489('0x47')],util[_0x9489('0x3a')](_0x171515,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x18')]=function(_0x3d8fec){try{if(this[_0x9489('0x64')](_0x3d8fec)){logger[_0x9489('0x44')](_0x9489('0x81'),_0x3d8fec['uniqueid'],util['inspect'](_0x3d8fec,{'showHidden':![],'depth':null}));if(this[_0x9489('0xc')][_0x3d8fec[_0x9489('0x47')]]){var _0x39a7b4=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x3d8fec[_0x9489('0x47')]]);_0x39a7b4[_0x9489('0x83')]=![];_0x39a7b4[_0x9489('0x84')]=null;_0x39a7b4['holdtime']=_0x3d8fec['holdtime'];_0x39a7b4['originalposition']=_0x3d8fec[_0x9489('0x85')];_0x39a7b4['queuecallerabandon']=!![];_0x39a7b4[_0x9489('0x86')]=moment()[_0x9489('0x48')](_0x9489('0x78'));_0x39a7b4[_0x9489('0x87')]=_0x9489('0x88');_0x39a7b4[_0x9489('0x89')]=null;logger['info'](_0x9489('0x8a'),_0x39a7b4['name'],_0x39a7b4[_0x9489('0x50')]);this[_0x9489('0xe')][_0x3d8fec[_0x9489('0x47')]]=_0x39a7b4;this['emitVoiceQueueChannelRemove'](_0x39a7b4,_0x9489('0x17'));}}}catch(_0x1cb55b){logger[_0x9489('0x3b')](_0x9489('0x81'),_0x3d8fec[_0x9489('0x47')],util[_0x9489('0x3a')](_0x1cb55b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x1a')]=function(_0x28b047){try{if(this[_0x9489('0x64')](_0x28b047)){logger[_0x9489('0x44')](_0x9489('0x8b'),_0x28b047[_0x9489('0x47')],util[_0x9489('0x3a')](_0x28b047,{'showHidden':![],'depth':null}));if(this[_0x9489('0xc')][_0x28b047[_0x9489('0x47')]]){var _0x37920e=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x28b047[_0x9489('0x47')]]);_0x37920e[_0x9489('0x8c')]=moment()['format'](_0x9489('0x78'));_0x37920e[_0x9489('0x8d')]=_0x28b047['connectedlinenum'];_0x37920e[_0x9489('0x8e')]=_0x28b047['connectedlinename'];logger[_0x9489('0x7c')](_0x9489('0x8f'),_0x37920e['name'],_0x37920e[_0x9489('0x50')],_0x28b047[_0x9489('0x8d')],_0x28b047[_0x9489('0x8e')]);this['channels'][_0x28b047[_0x9489('0x47')]]=_0x37920e;this[_0x9489('0x43')](_0x37920e,_0x9489('0x19'));}}}catch(_0x2d14fe){logger[_0x9489('0x3b')](_0x9489('0x8b'),_0x28b047[_0x9489('0x47')],util[_0x9489('0x3a')](_0x2d14fe,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x1d')]=function(_0x2dbf80){try{if(this[_0x9489('0x64')](_0x2dbf80)){logger[_0x9489('0x44')](_0x9489('0x90'),_0x2dbf80[_0x9489('0x47')],util[_0x9489('0x3a')](_0x2dbf80,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2dbf80['uniqueid']]){var _0x5293f8=_['last'](this[_0x9489('0xc')][_0x2dbf80[_0x9489('0x47')]]);_0x5293f8[_0x9489('0x83')]=!![];_0x5293f8[_0x9489('0x87')]=_0x9489('0x91');logger['info'](_0x9489('0x92'),_0x5293f8[_0x9489('0x4c')],_0x5293f8[_0x9489('0x50')]);}}}catch(_0x599998){logger['error'](_0x9489('0x90'),_0x2dbf80[_0x9489('0x47')],util[_0x9489('0x3a')](_0x599998,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x9489('0x93')]=function(_0x13039e){try{if(this[_0x9489('0x64')](_0x13039e)){logger[_0x9489('0x44')](_0x9489('0x94'),_0x13039e['uniqueid'],util[_0x9489('0x3a')](_0x13039e,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x13039e[_0x9489('0x47')]]){var _0x372766=_['last'](this[_0x9489('0xc')][_0x13039e['uniqueid']]);_0x372766[_0x9489('0x17')]=![];_0x372766[_0x9489('0x86')]=null;_0x372766[_0x9489('0x95')]=!![];_0x372766[_0x9489('0x89')]=_0x13039e[_0x9489('0x96')];_0x372766[_0x9489('0x97')]=_0x13039e[_0x9489('0x97')];_0x372766['queuecallercomplete']=!![];_0x372766['queuecallerexit']=![];_0x372766['queuecallerexitAt']=null;if(!_0x372766[_0x9489('0x98')]){if(_0x13039e[_0x9489('0x99')]==_0x9489('0x98')){_0x372766[_0x9489('0x87')]=_0x9489('0x9a');logger['info'](_0x9489('0x9b'),_0x372766[_0x9489('0x4c')],_0x372766[_0x9489('0x50')]);}else{if(_[_0x9489('0x9c')](_0x13039e[_0x9489('0x9d')]['toLowerCase'](),_0x9489('0x9e'))){if(this[_0x9489('0xc')][_0x13039e[_0x9489('0x9f')]]){var _0x2f504a=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x13039e[_0x9489('0x9f')]]);_0x2f504a[_0x9489('0x83')]=![];_0x2f504a[_0x9489('0xa0')]=!![];_0x2f504a[_0x9489('0xa1')]=moment(_0x372766[_0x9489('0x77')])['add'](_0x13039e[_0x9489('0x97')],_0x9489('0xa2'))[_0x9489('0x48')]('YYYY-MM-DD\x20HH:mm:ss');_0x2f504a['queuecallerexitreason']=_0x9489('0xa3');_0x2f504a[_0x9489('0x98')]=!![];_0x2f504a[_0x9489('0xa4')]='FORWARD';_0x2f504a[_0x9489('0xa5')]=_0x13039e[_0x9489('0xa6')];_0x2f504a[_0x9489('0xa7')]=_0x13039e[_0x9489('0x47')];logger[_0x9489('0x7c')](_0x9489('0xa8'),_0x2f504a[_0x9489('0x4c')],_0x2f504a[_0x9489('0x50')]);var _0x217033=this[_0x9489('0xc')][_0x13039e[_0x9489('0x9f')]];this[_0x9489('0xc')][_0x13039e[_0x9489('0x9f')]]=this[_0x9489('0xc')][_0x13039e[_0x9489('0x47')]];this[_0x9489('0xc')][_0x13039e['uniqueid']]=_0x217033;}}else{_0x372766[_0x9489('0x87')]=_0x9489('0xa9')+_0x13039e['reason'][_0x9489('0xaa')]();logger[_0x9489('0x7c')](_0x9489('0xab'),_0x372766[_0x9489('0x4c')],_0x372766['type'],_0x372766[_0x9489('0x87')]);}}}this[_0x9489('0xe')][_0x13039e[_0x9489('0x47')]]=_0x372766;this[_0x9489('0x40')](_0x372766,_0x9489('0x1b'));}}}catch(_0x3c73e6){logger[_0x9489('0x3b')](_0x9489('0x94'),_0x13039e[_0x9489('0x47')],util[_0x9489('0x3a')](_0x3c73e6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x1e')]=function(_0x35df2a){try{if(this[_0x9489('0x64')](_0x35df2a)){logger[_0x9489('0x44')]('[%s][voiceQueueReport][varset]',_0x35df2a[_0x9489('0x47')],util[_0x9489('0x3a')](_0x35df2a,{'showHidden':![],'depth':null}));this[_0x9489('0xac')](_0x35df2a['uniqueid'],_[_0x9489('0xad')](_0x35df2a['variable'])[0x0],_0x35df2a[_0x9489('0xae')]);if(this[_0x9489('0xc')][_0x35df2a['uniqueid']]){var _0x52fb68=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x35df2a[_0x9489('0x47')]]);if(_0x52fb68){if(this[_0x9489('0x64')](_0x35df2a[_0x9489('0xaf')])&&this[_0x9489('0x64')](_0x35df2a['variable'][_0x9489('0xb0')])){switch(_0x35df2a[_0x9489('0xae')]){case _0x9489('0xb1'):_0x52fb68[_0x9489('0xa0')]=![];_0x52fb68[_0x9489('0xa1')]=null;break;case _0x9489('0xb2'):_0x52fb68[_0x9489('0xb3')]=_0x9489('0xb4');_0x52fb68[_0x9489('0xa0')]=!![];_0x52fb68[_0x9489('0xa1')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x52fb68[_0x9489('0x8c')]=moment()[_0x9489('0x48')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x9489('0x44')](_0x9489('0xb5'),_0x35df2a['uniqueid'],util[_0x9489('0x3a')](_0x52fb68,{'showHidden':![],'depth':null}));ami[_0x9489('0x42')](_0x9489('0xb6'),_0x52fb68);break;default:_0x52fb68[_0x9489('0xa0')]=!![];_0x52fb68[_0x9489('0xa1')]=moment()['format'](_0x9489('0x78'));_0x52fb68[_0x9489('0x8c')]=moment()[_0x9489('0x48')](_0x9489('0x78'));}_0x52fb68[_0x9489('0x17')]=![];_0x52fb68['queuecallerabandonAt']=null;_0x52fb68[_0x9489('0x87')]=_0x35df2a[_0x9489('0xae')];this[_0x9489('0xe')][_0x35df2a[_0x9489('0x47')]]=_0x52fb68;this['emitVoiceQueueChannelRemove'](_0x52fb68,_0x9489('0xb7'));}else if(this[_0x9489('0x64')](_0x35df2a[_0x9489('0xaf')])&&this[_0x9489('0x64')](_0x35df2a[_0x9489('0xaf')][_0x9489('0xb8')])){if(!_0x52fb68[_0x9489('0x17')]){_0x52fb68['queuecallerexit']=!![];_0x52fb68[_0x9489('0xa1')]=moment()[_0x9489('0x48')](_0x9489('0x78'));_0x52fb68[_0x9489('0x87')]='EXITWITHKEY';_0x52fb68[_0x9489('0x8c')]=moment()['format'](_0x9489('0x78'));this[_0x9489('0xe')][_0x35df2a['uniqueid']]=_0x52fb68;}}logger[_0x9489('0x7c')](_0x9489('0xb9'),_0x35df2a[_0x9489('0x47')],_0x52fb68['name'],_0x52fb68[_0x9489('0x50')],_[_0x9489('0xad')](_0x35df2a[_0x9489('0xaf')])[0x0],_0x35df2a['value']);_0x52fb68[_0x9489('0x3c')]=this[_0x9489('0x3c')][_0x35df2a[_0x9489('0x47')]];}}}}catch(_0x1d9f23){logger[_0x9489('0x3b')](_0x9489('0xba'),_0x35df2a['uniqueid'],util[_0x9489('0x3a')](_0x1d9f23,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')]['addVariable']=function(_0x3f6e5a,_0x4bbe42,_0x2afdb7){var _0x438adc=['rtpaudioqos',_0x9489('0xbb'),_0x9489('0xbc'),_0x9489('0xbd'),_0x9489('0xbe'),_0x9489('0xbf'),_0x9489('0xc0'),_0x9489('0xc1'),_0x9489('0xc2'),'sipuri',_0x9489('0xc3'),'bridgepvtcallid',_0x9489('0xc4'),'memberdynamic',_0x9489('0xc5'),'memberlastcall','membername',_0x9489('0xc6'),_0x9489('0xc7')];if(!_[_0x9489('0xc8')](_0x4bbe42)&&!_[_0x9489('0xc9')](_0x438adc,_0x4bbe42)){if(_[_0x9489('0x65')](this[_0x9489('0x3c')][_0x3f6e5a])){this['variables'][_0x3f6e5a]={};}this[_0x9489('0x3c')][_0x3f6e5a][_0x4bbe42]=_0x2afdb7;}};VoiceQueueReport[_0x9489('0x30')]['syncHangup']=function(_0x11cd38){try{if(this['isNotNull'](_0x11cd38)){logger[_0x9489('0x44')](_0x9489('0xca'),_0x11cd38[_0x9489('0x47')],util['inspect'](_0x11cd38,{'showHidden':![],'depth':null}));if(this[_0x9489('0xc')][_0x11cd38[_0x9489('0x47')]]){for(var _0x3356f3=0x0,_0x11d19a={};_0x3356f3<this['queueReports'][_0x11cd38['uniqueid']][_0x9489('0xcb')];_0x3356f3+=0x1){_0x11d19a=this[_0x9489('0xc')][_0x11cd38[_0x9489('0x47')]][_0x3356f3];if(this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]]){if(_0x11d19a['queuecallerexit']&&_0x11d19a[_0x9489('0x98')]!=!![]){this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]]['unmanaged']+=0x1;}if(_0x11d19a[_0x9489('0x17')]){this[_0x9489('0x10')][_0x11d19a['queue']][_0x9489('0x5b')]+=0x1;}this[_0x9489('0x10')][_0x11d19a['queue']][_0x9489('0x57')]+=moment(_0x11d19a[_0x9489('0x8c')])[_0x9489('0xcc')](_0x11d19a[_0x9489('0x77')],_0x9489('0xa2'))||0x0;if(_0x3356f3===this['queueReports'][_0x11cd38[_0x9489('0x47')]][_0x9489('0xcb')]-0x1){this['voiceQueues'][_0x11d19a['queue']][_0x9489('0x56')]+=moment()['milliseconds'](0x0)[_0x9489('0xcc')](_0x11d19a['queuecallerjoinAt'],_0x9489('0xa2'));this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]]['total']+=0x1;if(_0x11d19a['queuecallercomplete']){this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]][_0x9489('0x52')]+=0x1;this['voiceQueues'][_0x11d19a['queue']]['sumBillable']+=moment()['milliseconds'](0x0)[_0x9489('0xcc')](_0x11d19a['queuecallerleaveAt'],'seconds');_0x11d19a[_0x9489('0x84')]=moment()[_0x9489('0x48')](_0x9489('0x78'));_0x11d19a[_0x9489('0xa0')]=![];_0x11d19a[_0x9489('0xa1')]=null;}if(_0x11d19a['queuecallerexit']&&_0x11d19a['transfer']!=!![]){_0x11d19a[_0x9489('0xb3')]=_0x9489('0x5a');logger[_0x9489('0x44')](_0x9489('0xcd'),_0x11cd38[_0x9489('0x47')],util[_0x9489('0x3a')](_0x11d19a,{'showHidden':![],'depth':null}));ami['emit'](_0x9489('0xce'),_0x11d19a);}if(_0x11d19a[_0x9489('0x17')]){_0x11d19a[_0x9489('0xb3')]=_0x9489('0x5b');logger[_0x9489('0x44')](_0x9489('0xcf'),_0x11cd38[_0x9489('0x47')],util[_0x9489('0x3a')](_0x11d19a,{'showHidden':![],'depth':null}));ami['emit'](_0x9489('0xd0'),_0x11d19a);}}else{this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]][_0x9489('0x56')]+=this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]][_0x9489('0x57')];}logger[_0x9489('0x7c')](_0x9489('0xd1'),_0x11cd38[_0x9489('0x47')],_0x11d19a[_0x9489('0x4c')],_0x11d19a[_0x9489('0x50')],_0x11cd38[_0x9489('0xd2')]);this[_0x9489('0xe')][_0x11cd38[_0x9489('0x47')]]=_0x11d19a;this[_0x9489('0x40')](_0x11d19a,_0x9489('0xd3'));this['emitVoiceQueueSummary'](this[_0x9489('0x10')][_0x11d19a[_0x9489('0x6a')]],_0x9489('0xd3'));}}logger[_0x9489('0x44')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x11cd38['uniqueid'],util['inspect'](this[_0x9489('0xc')][_0x11cd38['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x9489('0x42')]('custom:voiceQueueReport',this[_0x9489('0xc')][_0x11cd38[_0x9489('0x47')]]);delete this[_0x9489('0xc')][_0x11cd38[_0x9489('0x47')]];delete this[_0x9489('0xe')][_0x11cd38[_0x9489('0x47')]];}if(this['variables'][_0x11cd38[_0x9489('0x47')]]){delete this[_0x9489('0x3c')][_0x11cd38[_0x9489('0x47')]];}}}catch(_0xcdc71){logger[_0x9489('0x3b')]('[%s][voiceQueueReport][hangup]',_0x11cd38[_0x9489('0x47')],util[_0x9489('0x3a')](_0xcdc71,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x26')]=function(_0x8759a9){try{if(this['isNotNull'](_0x8759a9)){logger['debug'](_0x9489('0xd4'),_0x8759a9[_0x9489('0x47')],util[_0x9489('0x3a')](_0x8759a9,{'showHidden':![],'depth':null}));var _0x3cdb3b;if(this[_0x9489('0xc')][_0x8759a9[_0x9489('0xd5')]]){_0x3cdb3b=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x8759a9[_0x9489('0xd5')]]);_0x3cdb3b['transferexten']=_0x8759a9[_0x9489('0xd6')];_0x3cdb3b[_0x9489('0xa7')]=_0x8759a9[_0x9489('0xd7')];_0x3cdb3b['queuecallerexitreason']='ATTENDEDTRANSFER';_0x3cdb3b[_0x9489('0x98')]=!![];_0x3cdb3b['transfertype']=_0x9489('0xd8');if(this[_0x9489('0xc')][_0x8759a9[_0x9489('0xd7')]]){var _0x3307c9=this[_0x9489('0xc')][_0x8759a9['secondtransfereruniqueid']];this['queueReports'][_0x8759a9[_0x9489('0xd7')]]=this['queueReports'][_0x8759a9[_0x9489('0xd5')]];this[_0x9489('0xc')][_0x8759a9['transfereeuniqueid']]=_0x3307c9;var _0x395d91=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x8759a9[_0x9489('0xd5')]]);_0x395d91[_0x9489('0x32')]=!![];}logger[_0x9489('0x7c')](_0x9489('0xd9'),_0x8759a9[_0x9489('0x47')],_0x3cdb3b[_0x9489('0x4c')],_0x3cdb3b['type'],_0x3cdb3b[_0x9489('0xa5')],_0x3cdb3b[_0x9489('0xa7')]);}else if(this[_0x9489('0xc')][_0x8759a9[_0x9489('0xda')]]){_0x3cdb3b=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x8759a9['transfertargetuniqueid']]);_0x3cdb3b[_0x9489('0xa5')]=_0x8759a9['origtransfererexten'];_0x3cdb3b['transferuniqueid']=_0x8759a9[_0x9489('0xdb')];_0x3cdb3b[_0x9489('0x87')]=_0x9489('0xdc');_0x3cdb3b[_0x9489('0x98')]=!![];_0x3cdb3b[_0x9489('0xa4')]='ATTENDED';if(this[_0x9489('0xc')][_0x8759a9['origtransfereruniqueid']]){var _0x3307c9=this[_0x9489('0xc')][_0x8759a9[_0x9489('0xdb')]];this[_0x9489('0xc')][_0x8759a9[_0x9489('0xdb')]]=this[_0x9489('0xc')][_0x8759a9['transfertargetuniqueid']];this[_0x9489('0xc')][_0x8759a9[_0x9489('0xda')]]=_0x3307c9;var _0x395d91=_['last'](this[_0x9489('0xc')][_0x8759a9[_0x9489('0xda')]]);_0x395d91[_0x9489('0x32')]=!![];}logger[_0x9489('0x7c')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x8759a9[_0x9489('0x47')],_0x3cdb3b['name'],_0x3cdb3b['type'],_0x3cdb3b[_0x9489('0xa5')],_0x3cdb3b[_0x9489('0xa7')]);}}}catch(_0x2b7525){logger['error'](_0x9489('0xd4'),_0x8759a9['uniqueid'],util[_0x9489('0x3a')](_0x2b7525,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9489('0x30')][_0x9489('0x28')]=function(_0x1948ed){try{if(this[_0x9489('0x64')](_0x1948ed)){logger[_0x9489('0x44')](_0x9489('0xdd'),_0x1948ed[_0x9489('0x47')],util['inspect'](_0x1948ed,{'showHidden':![],'depth':null}));if(this[_0x9489('0xc')][_0x1948ed[_0x9489('0xd5')]]){var _0x13140c=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x1948ed[_0x9489('0xd5')]]);_0x13140c['queuecallerexitreason']=_0x9489('0xde');_0x13140c['transfer']=!![];_0x13140c[_0x9489('0xa4')]='BLIND';_0x13140c[_0x9489('0xa5')]=_0x1948ed[_0x9489('0xdf')];_0x13140c[_0x9489('0xa7')]=_0x1948ed[_0x9489('0xd5')];logger['info'](_0x9489('0xe0'),_0x1948ed[_0x9489('0x47')],_0x13140c['name'],_0x13140c['type'],_0x13140c[_0x9489('0xa5')],_0x13140c[_0x9489('0xa7')]);this['syncHangup']({'event':_0x9489('0xe1'),'uniqueid':_0x1948ed[_0x9489('0xd5')],'context':_0x1948ed[_0x9489('0xe2')],'channel':_0x1948ed[_0x9489('0xe3')]});}}}catch(_0x3322d2){logger[_0x9489('0x3b')](_0x9489('0xdd'),_0x1948ed[_0x9489('0x47')],util['inspect'](_0x3322d2,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x9489('0x23')]=function(_0x6d9316){try{if(this[_0x9489('0x64')](_0x6d9316)){logger['debug'](_0x9489('0xe4'),_0x6d9316[_0x9489('0x47')],util[_0x9489('0x3a')](_0x6d9316,{'showHidden':![],'depth':null}));if(this[_0x9489('0xc')][_0x6d9316[_0x9489('0x47')]]){var _0x3d63f4=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x6d9316[_0x9489('0x47')]]);if(!_[_0x9489('0xc8')](_0x3d63f4[_0x9489('0x8c')])){_0x3d63f4[_0x9489('0xe5')]=moment()[_0x9489('0x48')](_0x9489('0x78'));logger[_0x9489('0x7c')](_0x9489('0xe6'),_0x6d9316[_0x9489('0x47')],_0x3d63f4[_0x9489('0xe5')]);}}}}catch(_0x3f0abb){logger[_0x9489('0x3b')](_0x9489('0xe4'),_0x6d9316[_0x9489('0x47')],util['inspect'](_0x3f0abb,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStop']=function(_0x14b9ac){try{if(this[_0x9489('0x64')](_0x14b9ac)){logger[_0x9489('0x44')]('[%s][voiceQueueReport][musiconholdstop]',_0x14b9ac[_0x9489('0x47')],util[_0x9489('0x3a')](_0x14b9ac,{'showHidden':![],'depth':null}));if(this[_0x9489('0xc')][_0x14b9ac[_0x9489('0x47')]]){var _0x151724=_[_0x9489('0x82')](this[_0x9489('0xc')][_0x14b9ac[_0x9489('0x47')]]);if(!_['isNil'](_0x151724['mohstarttime'])){_0x151724[_0x9489('0xe7')]+=moment()[_0x9489('0xe8')](0x0)[_0x9489('0xcc')](_0x151724[_0x9489('0xe5')],_0x9489('0xa2'));logger[_0x9489('0x7c')](_0x9489('0xe9'),_0x14b9ac['uniqueid'],_0x151724['mohtime']);delete _0x151724[_0x9489('0xe5')];}}}}catch(_0x3734ef){logger[_0x9489('0x3b')](_0x9489('0xea'),_0x14b9ac[_0x9489('0x47')],util[_0x9489('0x3a')](_0x3734ef,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x9489('0x22')]=function(_0x1d7e38){try{if(this[_0x9489('0x64')](_0x1d7e38)){logger['debug'](_0x9489('0xeb'),_0x1d7e38[_0x9489('0x47')],util['inspect'](_0x1d7e38,{'showHidden':![],'depth':null}));if(_0x1d7e38[_0x9489('0xec')][_0x9489('0xed')]()===_0x9489('0xee')){_0x1d7e38[_0x9489('0xef')]=_0x1d7e38[_0x9489('0xf0')]&&_0x1d7e38['appdata'][_0x9489('0x9c')](_0x9489('0xf1'))?_0x1d7e38[_0x9489('0xf0')]:(_0x1d7e38[_0x9489('0xf0')]||_0x1d7e38[_0x9489('0xef')])['toLowerCase']();if(_[_0x9489('0x9c')](_0x1d7e38['applicationdata']['toLowerCase'](),_0x9489('0xf2'))){logger[_0x9489('0x7c')](_0x9489('0xf3'),_0x1d7e38[_0x9489('0x47')],_0x1d7e38[_0x9489('0xec')],_0x1d7e38['applicationdata']);if(_[_0x9489('0x65')](this['channels'][_0x1d7e38[_0x9489('0x47')]]))this[_0x9489('0xe')][_0x1d7e38[_0x9489('0x47')]]={};var _0x5512af=_0x1d7e38[_0x9489('0xef')][_0x9489('0xf4')]('=');var _0x55b5b8=_0x5512af[0x0][_0x9489('0xed')]()[_0x9489('0xf5')](/cdr\((.*)\)/);if(_0x55b5b8)this[_0x9489('0xe')][_0x1d7e38['uniqueid']][_0x55b5b8[0x1]]=_0x5512af[0x1];}}}}catch(_0x52d88f){logger[_0x9489('0x3b')](_0x9489('0xf6'),_0x1d7e38[_0x9489('0x47')],util[_0x9489('0x3a')](_0x52d88f,{'showHidden':![],'depth':null}));}};module[_0x9489('0xf7')]=VoiceQueueReport;
\ No newline at end of file
+var _0x9879=[']\x20sending\x20voice_queue_channel:remove\x20event:','name','voice_queue_channel:remove','emitVoiceQueueSummary','type','inbound','strategy','available','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','Trunk','active','Interval','stringify','[voiceQueueReport][','isNotNull','isUndefined','queues','[voiceQueueReport][queues]','loopQueueSummary','then','queue','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummary]\x20name:%s','callers','toNumber','loggedin','[voiceQueueReport][queuesummary]','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','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','assigned','membername','queuecallerexit','queuecallerexitAt','transfer','reason','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','local/','linkedid','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][agentcomplete]','addVariable','variable','value','queuestatus','CONTINUE','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberinterface','memberlastcall','memberpenalty','memberrealtime','[%s][voiceQueueReport][hangup]','abandoned','diff','length','answered','milliseconds','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','ATTENDEDTRANSFER','ATTENDED','secondtransfereruniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','transfererchannel','[%s][voiceQueueReport][blindtransfer]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','application','toLowerCase','set','appdata','CDR(routeAlias)','applicationdata','startsWith','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','[%s][voiceQueueReport][newexten]','moment','util','md5','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','syncQueueCallerLeave','agentcomplete','syncAgentComplete','syncAgentConnect','varset','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','syncNewExten','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','blindtransfer','syncBlindTransfer','loopQueueShow','hasOwnProperty','originated','isEmpty','waiting','queueStatusComplete','unlockRR','prototype','clearZombieChannels','switch','isNil','Action','status','channel','catch','message','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','voice_queue_channel:save'];(function(_0x3d158d,_0x576f6b){var _0x594429=function(_0x2bb91f){while(--_0x2bb91f){_0x3d158d['push'](_0x3d158d['shift']());}};_0x594429(++_0x576f6b);}(_0x9879,0x98));var _0x9987=function(_0x57fb28,_0x16c6a9){_0x57fb28=_0x57fb28-0x0;var _0x1134c9=_0x9879[_0x57fb28];return _0x1134c9;};'use strict';var _=require('lodash');var moment=require(_0x9987('0x0'));var util=require(_0x9987('0x1'));var md5=require(_0x9987('0x2'));var Redis=require(_0x9987('0x3'));var config=require(_0x9987('0x4'));var logger=require(_0x9987('0x5'))(_0x9987('0x6'));var ami=require(_0x9987('0x7'));var QueueReport=require(_0x9987('0x8'));config[_0x9987('0x9')]=_[_0x9987('0xa')](config[_0x9987('0x9')],{'host':_0x9987('0xb'),'port':0x18eb});var io=require(_0x9987('0xc'))(new Redis(config[_0x9987('0x9')]));var Sequence=function(){};Sequence['prototype'][_0x9987('0xd')]=function(_0x563978){this['tail']=this[_0x9987('0xe')]?this['tail'][_0x9987('0xf')](_0x563978):_0x563978();};function VoiceQueueReport(_0x15a223){this[_0x9987('0x10')]=new Sequence();this[_0x9987('0x11')]={};this[_0x9987('0x12')]=_0x15a223[_0x9987('0x12')];this[_0x9987('0x13')]=_0x15a223[_0x9987('0x14')];this[_0x9987('0x15')]=_0x15a223[_0x9987('0x15')];this[_0x9987('0x16')]=!![];this[_0x9987('0x17')]=_0x15a223['campaigns'];this[_0x9987('0x18')]={};ami['on'](_0x9987('0x19'),this[_0x9987('0x1a')][_0x9987('0x1b')](this));ami['on'](_0x9987('0x1c'),this[_0x9987('0x1d')][_0x9987('0x1b')](this));ami['on'](_0x9987('0x1e'),this[_0x9987('0x1f')][_0x9987('0x1b')](this));ami['on'](_0x9987('0x20'),this[_0x9987('0x21')]['bind'](this));ami['on']('queuecallerleave',this[_0x9987('0x22')][_0x9987('0x1b')](this));ami['on'](_0x9987('0x23'),this[_0x9987('0x24')][_0x9987('0x1b')](this));ami['on']('agentconnect',this[_0x9987('0x25')][_0x9987('0x1b')](this));ami['on'](_0x9987('0x26'),this[_0x9987('0x27')][_0x9987('0x1b')](this));ami['on'](_0x9987('0x28'),this[_0x9987('0x29')]['bind'](this));ami['on'](_0x9987('0x2a'),this[_0x9987('0x2b')]['bind'](this));ami['on']('newexten',this[_0x9987('0x2c')]['bind'](this));ami['on']('musiconholdstart',this[_0x9987('0x2d')][_0x9987('0x1b')](this));ami['on'](_0x9987('0x2e'),this[_0x9987('0x2f')][_0x9987('0x1b')](this));ami['on'](_0x9987('0x30'),this['syncAttendedTransfer'][_0x9987('0x1b')](this));ami['on'](_0x9987('0x31'),this[_0x9987('0x32')][_0x9987('0x1b')](this));this['loopQueueSummary']();this[_0x9987('0x33')]();}function clearChannels(_0xa49dd7){if(!_['isEmpty'](_0xa49dd7)){for(var _0x5ebf79 in _0xa49dd7){if(_0xa49dd7[_0x9987('0x34')](_0x5ebf79)){delete _0xa49dd7[_0x5ebf79];}}}}function clearCampaigns(_0x41b591){if(!_['isEmpty'](_0x41b591)){for(var _0xb0f9db in _0x41b591){if(_0x41b591[_0x9987('0x34')](_0xb0f9db)){_0x41b591[_0xb0f9db][_0x9987('0x35')]=0x0;}}}}function clearVoiceQueues(_0x776714){if(!_[_0x9987('0x36')](_0x776714)){for(var _0x77506b in _0x776714){if(_0x776714[_0x9987('0x34')](_0x77506b)){_0x776714[_0x77506b][_0x9987('0x35')]=0x0;_0x776714[_0x77506b]['talking']=0x0;_0x776714[_0x77506b]['pTalking']=0x0;_0x776714[_0x77506b][_0x9987('0x37')]=0x0;_0x776714[_0x77506b][_0x9987('0x38')]=!![];}}}}function clearAgentBooked(_0x26670f){if(!_['isEmpty'](_0x26670f)){for(var _0x482d99 in _0x26670f){if(_0x26670f[_0x9987('0x34')](_0x482d99)){_0x26670f[_0x482d99][_0x9987('0x39')]=!![];}}}}VoiceQueueReport[_0x9987('0x3a')][_0x9987('0x3b')]=function(){var _0xbc3df4=this;for(var _0x50790d in this[_0x9987('0x13')]){if(this['channels']['hasOwnProperty'](_0x50790d)&&!this['channels'][_0x50790d][_0x9987('0x3c')]){this[_0x9987('0x10')][_0x9987('0xd')](function(){if(!_[_0x9987('0x3d')](_0xbc3df4[_0x9987('0x13')][_0x50790d])){return ami[_0x9987('0x3e')]({'action':_0x9987('0x3f'),'channel':_0xbc3df4[_0x9987('0x13')][_0x50790d][_0x9987('0x40')]})[_0x9987('0x41')](function(_0x21d449){if(_0x21d449[_0x9987('0x42')]==='No\x20such\x20channel'){setTimeout(function(){if(_0xbc3df4[_0x9987('0x13')][_0x50790d]){delete _0xbc3df4[_0x9987('0x13')][_0x50790d];logger[_0x9987('0x43')](_0x9987('0x44'),_0x50790d,util[_0x9987('0x45')](_0x21d449,{'showHidden':![],'depth':null}));}if(_0xbc3df4[_0x9987('0x11')][_0x50790d]){delete _0xbc3df4[_0x9987('0x11')][_0x50790d];logger['error'](_0x9987('0x46'),_0x50790d,util[_0x9987('0x45')](_0x21d449,{'showHidden':![],'depth':null}));}if(_0xbc3df4[_0x9987('0x18')][_0x50790d]){delete _0xbc3df4[_0x9987('0x18')][_0x50790d];logger[_0x9987('0x43')](_0x9987('0x47'),_0x50790d,util[_0x9987('0x45')](_0x21d449,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype']['syncFullyBooted']=function(){logger['error'](_0x9987('0x48'));clearChannels(this[_0x9987('0x13')]);this[_0x9987('0x49')](this[_0x9987('0x11')]);clearAgentBooked(this[_0x9987('0x12')]);clearVoiceQueues(this[_0x9987('0x15')]);clearCampaigns(this[_0x9987('0x17')]);};VoiceQueueReport['prototype'][_0x9987('0x49')]=function(_0x45895d){var _0x48d6c2=this;if(!_[_0x9987('0x36')](_0x45895d)){for(var _0x437d91 in _0x45895d){if(_0x45895d['hasOwnProperty'](_0x437d91)){_0x48d6c2[_0x9987('0x4a')](_0x45895d[_0x437d91],_0x9987('0x4b'));delete _0x45895d[_0x437d91];}}}};VoiceQueueReport['prototype'][_0x9987('0x4c')]=function(_0x7929b,_0x1c26ba,_0x3fa69a){io['to'](_0x7929b)['emit'](_0x1c26ba,_0x3fa69a);};VoiceQueueReport['prototype'][_0x9987('0x4d')]=function(_0x1c7cd6,_0x574953){logger[_0x9987('0x4e')](_0x9987('0x4f')+_0x574953+_0x9987('0x50'),_0x1c7cd6[_0x9987('0x51')],util[_0x9987('0x45')](_0x1c7cd6,{'showHidden':![],'depth':null}));this[_0x9987('0x4c')](util[_0x9987('0x52')](_0x9987('0x53'),_0x1c7cd6['name']),_0x9987('0x54'),_0x1c7cd6);io[_0x9987('0x4c')]('voice_queue_presence:save',_0x1c7cd6);};VoiceQueueReport[_0x9987('0x3a')]['emitVoiceQueueChannelRemove']=function(_0x1bd44e,_0x3b3720){logger[_0x9987('0x4e')](_0x9987('0x4f')+_0x3b3720+_0x9987('0x55'),_0x1bd44e[_0x9987('0x51')],util['inspect'](_0x1bd44e,{'showHidden':![],'depth':null}));this[_0x9987('0x4c')](util['format'](_0x9987('0x53'),_0x1bd44e[_0x9987('0x56')]),_0x9987('0x57'),_0x1bd44e);io[_0x9987('0x4c')]('voice_queue_presence:remove',_0x1bd44e);};VoiceQueueReport['prototype'][_0x9987('0x58')]=function(_0x556ff4,_0x581836){if(_0x556ff4[_0x9987('0x59')]===_0x9987('0x5a')){var _0x234f2f={'id':_0x556ff4['id'],'name':_0x556ff4['name'],'strategy':_0x556ff4[_0x9987('0x5b')],'answered':_0x556ff4['answered'],'available':_0x556ff4[_0x9987('0x5c')],'loggedIn':_0x556ff4[_0x9987('0x5d')],'pTalking':_0x556ff4['pTalking'],'sumBillable':_0x556ff4[_0x9987('0x5e')],'sumDuration':_0x556ff4[_0x9987('0x5f')],'sumHoldTime':_0x556ff4[_0x9987('0x60')]||0x0,'talking':_0x556ff4[_0x9987('0x61')],'total':_0x556ff4[_0x9987('0x62')],'type':_0x556ff4['type'],'unmanaged':_0x556ff4[_0x9987('0x63')],'abandoned':_0x556ff4['abandoned'],'waiting':_0x556ff4[_0x9987('0x37')]};if(_0x556ff4['Trunk']){_0x234f2f[_0x9987('0x64')]={'id':_0x556ff4['Trunk']['id'],'name':_0x556ff4[_0x9987('0x64')]['name'],'active':_0x556ff4[_0x9987('0x64')][_0x9987('0x65')],'callerid':_0x556ff4[_0x9987('0x64')]['callerid']};}if(_0x556ff4[_0x9987('0x66')]){_0x234f2f['Interval']={'id':_0x556ff4[_0x9987('0x66')]['id'],'name':_0x556ff4[_0x9987('0x66')][_0x9987('0x56')]};}var _0x50134d=md5(JSON[_0x9987('0x67')](_0x234f2f));if(_0x556ff4[_0x9987('0x2')]!==_0x50134d){_0x556ff4[_0x9987('0x2')]=_0x50134d;logger[_0x9987('0x4e')](_0x9987('0x68')+_0x581836+']\x20sending\x20voice_queue:save\x20event:',util[_0x9987('0x45')](_0x234f2f,{'showHidden':![],'depth':null}));this[_0x9987('0x4c')](util[_0x9987('0x52')](_0x9987('0x53'),_0x234f2f[_0x9987('0x56')]),'voice_queue:save',_0x234f2f);}}};VoiceQueueReport[_0x9987('0x3a')][_0x9987('0x69')]=function(_0x51e7d3){return _0x51e7d3!==null&&!_[_0x9987('0x6a')](_0x51e7d3);};VoiceQueueReport[_0x9987('0x3a')][_0x9987('0x33')]=function(){var _0x23f759=this;setInterval(function(){_0x23f759[_0x9987('0x3b')]();ami['Action']({'action':_0x9987('0x6b')})[_0x9987('0x41')](function(_0x260102){logger[_0x9987('0x43')](_0x9987('0x6c'),util[_0x9987('0x45')](_0x260102,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x9987('0x3a')][_0x9987('0x6d')]=function(){var _0x410948=this;setInterval(function(){if(_0x410948[_0x9987('0x16')]){return ami[_0x9987('0x3e')]({'action':_0x9987('0x19')})[_0x9987('0x6e')](function(_0x129d88){_0x410948[_0x9987('0x16')]=![];})['catch'](function(_0xe61572){logger[_0x9987('0x43')]('[voiceQueueReport][queuesummary]',util[_0x9987('0x45')](_0xe61572,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x9987('0x1a')]=function(_0x20414a){try{if(this[_0x9987('0x69')](_0x20414a)&&this[_0x9987('0x69')](_0x20414a[_0x9987('0x6f')])){logger['debug'](_0x9987('0x70'),util[_0x9987('0x45')](_0x20414a,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0x20414a[_0x9987('0x6f')]]){logger['info'](_0x9987('0x71'),_0x20414a[_0x9987('0x6f')]);var _0x49702a=_['countBy'](this[_0x9987('0x13')],_0x9987('0x6f'))[_0x20414a[_0x9987('0x6f')]]||0x0;var _0x1f64e3=_0x49702a-_0x20414a[_0x9987('0x72')];if(this[_0x9987('0x15')][_0x20414a[_0x9987('0x6f')]][_0x9987('0x37')]!==_[_0x9987('0x73')](_0x20414a['callers'])||this[_0x9987('0x15')][_0x20414a[_0x9987('0x6f')]][_0x9987('0x5d')]!==_[_0x9987('0x73')](_0x20414a[_0x9987('0x74')])||this['voiceQueues'][_0x20414a['queue']][_0x9987('0x5c')]!==_[_0x9987('0x73')](_0x20414a[_0x9987('0x5c')])||this[_0x9987('0x15')][_0x20414a['queue']][_0x9987('0x61')]!==_0x1f64e3){this['voiceQueues'][_0x20414a[_0x9987('0x6f')]][_0x9987('0x37')]=_[_0x9987('0x73')](_0x20414a['callers']);this[_0x9987('0x15')][_0x20414a['queue']][_0x9987('0x5d')]=_[_0x9987('0x73')](_0x20414a[_0x9987('0x74')]);this[_0x9987('0x15')][_0x20414a[_0x9987('0x6f')]][_0x9987('0x5c')]=_['toNumber'](_0x20414a[_0x9987('0x5c')]);this['voiceQueues'][_0x20414a[_0x9987('0x6f')]][_0x9987('0x61')]=_0x1f64e3>0x0?_0x1f64e3:0x0;this[_0x9987('0x15')][_0x20414a[_0x9987('0x6f')]][_0x9987('0x61')]=this[_0x9987('0x15')][_0x20414a[_0x9987('0x6f')]][_0x9987('0x61')]>_[_0x9987('0x73')](_0x20414a[_0x9987('0x74')])?_[_0x9987('0x73')](_0x20414a['loggedin']):this[_0x9987('0x15')][_0x20414a[_0x9987('0x6f')]]['talking'];this[_0x9987('0x58')](this[_0x9987('0x15')][_0x20414a[_0x9987('0x6f')]],_0x9987('0x19'));}logger[_0x9987('0x4e')]('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util[_0x9987('0x45')](this['voiceQueues'][_0x20414a['queue']],{'showHidden':![],'depth':null}));ami[_0x9987('0x4c')]('custom:queuesummary',this['voiceQueues'][_0x20414a['queue']]);}}}catch(_0x2eff89){logger['error'](_0x9987('0x75'),util['inspect'](_0x2eff89,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9987('0x3a')][_0x9987('0x1d')]=function(_0x15f6d3){logger[_0x9987('0x4e')](_0x9987('0x76'),util[_0x9987('0x45')](_0x15f6d3,{'showHidden':![],'depth':null}));this[_0x9987('0x16')]=!![];};VoiceQueueReport[_0x9987('0x3a')][_0x9987('0x1f')]=function(_0x260154){try{if(this[_0x9987('0x69')](_0x260154)){logger[_0x9987('0x4e')](_0x9987('0x77'),_0x260154['uniqueid'],util['inspect'](_0x260154,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x9987('0x11')][_0x260154[_0x9987('0x51')]]))this[_0x9987('0x11')][_0x260154[_0x9987('0x51')]]=[];if(_['isUndefined'](this[_0x9987('0x13')][_0x260154[_0x9987('0x51')]]))this[_0x9987('0x13')][_0x260154[_0x9987('0x51')]]={};var _0x1eff84=new QueueReport();_0x1eff84[_0x9987('0x56')]=_0x260154[_0x9987('0x6f')];_0x1eff84[_0x9987('0x59')]=this['voiceQueues'][_0x1eff84[_0x9987('0x56')]]&&this['voiceQueues'][_0x1eff84['name']][_0x9987('0x59')]?this['voiceQueues'][_0x1eff84['name']][_0x9987('0x59')]||_0x9987('0x5a'):_0x9987('0x5a');_0x1eff84[_0x9987('0x6f')]=_0x260154['queue'];_0x1eff84[_0x9987('0x78')]=moment()[_0x9987('0x52')](_0x9987('0x79'));_0x1eff84[_0x9987('0x7a')]=_0x260154['position'];_0x1eff84[_0x9987('0x7b')]=_0x260154['count'];_0x1eff84[_0x9987('0x51')]=_0x260154['uniqueid'];_0x1eff84['routealias']=this[_0x9987('0x13')][_0x260154['uniqueid']]['routealias'];logger[_0x9987('0x7c')](_0x9987('0x7d'),_0x1eff84[_0x9987('0x56')],_0x1eff84['type']);_[_0x9987('0x7e')](_0x1eff84,_[_0x9987('0x7f')](_0x260154,_[_0x9987('0x80')](_0x1eff84)));this[_0x9987('0x11')][_0x260154[_0x9987('0x51')]][_0x9987('0x81')](_0x1eff84);this[_0x9987('0x13')][_0x260154['uniqueid']]=_0x1eff84;this[_0x9987('0x4d')](_0x1eff84,_0x9987('0x1e'));}}catch(_0xb38b3c){logger[_0x9987('0x43')](_0x9987('0x77'),_0x260154[_0x9987('0x51')],util[_0x9987('0x45')](_0xb38b3c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9987('0x3a')][_0x9987('0x21')]=function(_0x5465f9){try{if(this['isNotNull'](_0x5465f9)){logger[_0x9987('0x4e')](_0x9987('0x82'),_0x5465f9[_0x9987('0x51')],util[_0x9987('0x45')](_0x5465f9,{'showHidden':![],'depth':null}));if(this[_0x9987('0x11')][_0x5465f9[_0x9987('0x51')]]){var _0x43d857=_[_0x9987('0x83')](this['queueReports'][_0x5465f9[_0x9987('0x51')]]);_0x43d857['queuecallercomplete']=![];_0x43d857[_0x9987('0x84')]=null;_0x43d857['holdtime']=_0x5465f9[_0x9987('0x85')];_0x43d857[_0x9987('0x86')]=_0x5465f9[_0x9987('0x86')];_0x43d857['queuecallerabandon']=!![];_0x43d857[_0x9987('0x87')]=moment()['format'](_0x9987('0x79'));_0x43d857[_0x9987('0x88')]='ABANDONED';_0x43d857[_0x9987('0x89')]=null;logger[_0x9987('0x7c')](_0x9987('0x8a'),_0x43d857[_0x9987('0x56')],_0x43d857[_0x9987('0x59')]);this[_0x9987('0x13')][_0x5465f9[_0x9987('0x51')]]=_0x43d857;this[_0x9987('0x4a')](_0x43d857,_0x9987('0x20'));}}}catch(_0x1b4f95){logger['error'](_0x9987('0x82'),_0x5465f9[_0x9987('0x51')],util['inspect'](_0x1b4f95,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x9987('0x22')]=function(_0x33474f){try{if(this[_0x9987('0x69')](_0x33474f)){logger[_0x9987('0x4e')](_0x9987('0x8b'),_0x33474f[_0x9987('0x51')],util[_0x9987('0x45')](_0x33474f,{'showHidden':![],'depth':null}));if(this[_0x9987('0x11')][_0x33474f[_0x9987('0x51')]]){var _0x5560a0=_['last'](this[_0x9987('0x11')][_0x33474f[_0x9987('0x51')]]);_0x5560a0[_0x9987('0x8c')]=moment()[_0x9987('0x52')](_0x9987('0x79'));_0x5560a0[_0x9987('0x8d')]=_0x33474f['connectedlinenum'];_0x5560a0[_0x9987('0x8e')]=_0x33474f[_0x9987('0x8e')];logger[_0x9987('0x7c')](_0x9987('0x8f'),_0x5560a0['name'],_0x5560a0[_0x9987('0x59')],_0x33474f['connectedlinenum'],_0x33474f[_0x9987('0x8e')]);this[_0x9987('0x13')][_0x33474f[_0x9987('0x51')]]=_0x5560a0;this[_0x9987('0x4d')](_0x5560a0,_0x9987('0x90'));}}}catch(_0x76f53){logger['error'](_0x9987('0x8b'),_0x33474f[_0x9987('0x51')],util[_0x9987('0x45')](_0x76f53,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9987('0x3a')]['syncAgentConnect']=function(_0x47ccd6){try{if(this[_0x9987('0x69')](_0x47ccd6)){logger['debug'](_0x9987('0x91'),_0x47ccd6[_0x9987('0x51')],util[_0x9987('0x45')](_0x47ccd6,{'showHidden':![],'depth':null}));if(this[_0x9987('0x11')][_0x47ccd6['uniqueid']]){var _0x59fe0a=_[_0x9987('0x83')](this[_0x9987('0x11')][_0x47ccd6[_0x9987('0x51')]]);_0x59fe0a[_0x9987('0x92')]=!![];_0x59fe0a[_0x9987('0x88')]='COMPLETEDBYAGENT';logger[_0x9987('0x7c')]('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x59fe0a[_0x9987('0x56')],_0x59fe0a[_0x9987('0x59')]);}}}catch(_0x21ef1b){logger[_0x9987('0x43')]('[%s][voiceQueueReport][agentconnect]',_0x47ccd6[_0x9987('0x51')],util[_0x9987('0x45')](_0x21ef1b,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x9987('0x24')]=function(_0x513b3b){try{if(this[_0x9987('0x69')](_0x513b3b)){logger[_0x9987('0x4e')]('[%s][voiceQueueReport][agentcomplete]',_0x513b3b[_0x9987('0x51')],util[_0x9987('0x45')](_0x513b3b,{'showHidden':![],'depth':null}));if(this[_0x9987('0x11')][_0x513b3b[_0x9987('0x51')]]){var _0x105077=_['last'](this['queueReports'][_0x513b3b[_0x9987('0x51')]]);_0x105077['queuecallerabandon']=![];_0x105077[_0x9987('0x87')]=null;_0x105077[_0x9987('0x93')]=!![];_0x105077['lastAssignedTo']=_0x513b3b[_0x9987('0x94')];_0x105077[_0x9987('0x85')]=_0x513b3b['holdtime'];_0x105077[_0x9987('0x92')]=!![];_0x105077[_0x9987('0x95')]=![];_0x105077[_0x9987('0x96')]=null;if(!_0x105077[_0x9987('0x97')]){if(_0x513b3b[_0x9987('0x98')]=='transfer'){_0x105077[_0x9987('0x88')]='COMPLETED';logger[_0x9987('0x7c')](_0x9987('0x99'),_0x105077[_0x9987('0x56')],_0x105077[_0x9987('0x59')]);}else{if(_['startsWith'](_0x513b3b[_0x9987('0x40')]['toLowerCase'](),_0x9987('0x9a'))){if(this[_0x9987('0x11')][_0x513b3b[_0x9987('0x9b')]]){var _0x4522a3=_[_0x9987('0x83')](this['queueReports'][_0x513b3b[_0x9987('0x9b')]]);_0x4522a3['queuecallercomplete']=![];_0x4522a3[_0x9987('0x95')]=!![];_0x4522a3[_0x9987('0x96')]=moment(_0x105077['queuecallerjoinAt'])[_0x9987('0x9c')](_0x513b3b[_0x9987('0x85')],_0x9987('0x9d'))[_0x9987('0x52')](_0x9987('0x79'));_0x4522a3['queuecallerexitreason']=_0x9987('0x9e');_0x4522a3[_0x9987('0x97')]=!![];_0x4522a3[_0x9987('0x9f')]=_0x9987('0xa0');_0x4522a3[_0x9987('0xa1')]=_0x513b3b[_0x9987('0xa2')];_0x4522a3[_0x9987('0xa3')]=_0x513b3b[_0x9987('0x51')];logger['info'](_0x9987('0xa4'),_0x4522a3[_0x9987('0x56')],_0x4522a3[_0x9987('0x59')]);var _0x158024=this[_0x9987('0x11')][_0x513b3b[_0x9987('0x9b')]];this[_0x9987('0x11')][_0x513b3b[_0x9987('0x9b')]]=this[_0x9987('0x11')][_0x513b3b[_0x9987('0x51')]];this['queueReports'][_0x513b3b[_0x9987('0x51')]]=_0x158024;}}else{_0x105077[_0x9987('0x88')]=_0x9987('0xa5')+_0x513b3b[_0x9987('0x98')]['toUpperCase']();logger[_0x9987('0x7c')](_0x9987('0xa6'),_0x105077['name'],_0x105077[_0x9987('0x59')],_0x105077['queuecallerexitreason']);}}}this['channels'][_0x513b3b[_0x9987('0x51')]]=_0x105077;this['emitVoiceQueueChannelRemove'](_0x105077,_0x9987('0x23'));}}}catch(_0x200667){logger[_0x9987('0x43')](_0x9987('0xa7'),_0x513b3b['uniqueid'],util['inspect'](_0x200667,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x9987('0x27')]=function(_0x27f2c2){try{if(this['isNotNull'](_0x27f2c2)){logger[_0x9987('0x4e')]('[%s][voiceQueueReport][varset]',_0x27f2c2[_0x9987('0x51')],util[_0x9987('0x45')](_0x27f2c2,{'showHidden':![],'depth':null}));this[_0x9987('0xa8')](_0x27f2c2['uniqueid'],_[_0x9987('0x80')](_0x27f2c2[_0x9987('0xa9')])[0x0],_0x27f2c2[_0x9987('0xaa')]);if(this[_0x9987('0x11')][_0x27f2c2['uniqueid']]){var _0x44b725=_[_0x9987('0x83')](this[_0x9987('0x11')][_0x27f2c2[_0x9987('0x51')]]);if(_0x44b725){if(this[_0x9987('0x69')](_0x27f2c2[_0x9987('0xa9')])&&this[_0x9987('0x69')](_0x27f2c2['variable'][_0x9987('0xab')])){switch(_0x27f2c2['value']){case _0x9987('0xac'):_0x44b725[_0x9987('0x95')]=![];_0x44b725[_0x9987('0x96')]=null;break;case'TIMEOUT':_0x44b725[_0x9987('0xad')]=_0x9987('0xae');_0x44b725[_0x9987('0x95')]=!![];_0x44b725[_0x9987('0x96')]=moment()[_0x9987('0x52')](_0x9987('0x79'));_0x44b725['queuecallerleaveAt']=moment()[_0x9987('0x52')](_0x9987('0x79'));logger['debug'](_0x9987('0xaf'),_0x27f2c2[_0x9987('0x51')],util[_0x9987('0x45')](_0x44b725,{'showHidden':![],'depth':null}));ami[_0x9987('0x4c')]('custom:timeout',_0x44b725);break;default:_0x44b725[_0x9987('0x95')]=!![];_0x44b725[_0x9987('0x96')]=moment()['format'](_0x9987('0x79'));_0x44b725[_0x9987('0x8c')]=moment()[_0x9987('0x52')](_0x9987('0x79'));}_0x44b725['queuecallerabandon']=![];_0x44b725['queuecallerabandonAt']=null;_0x44b725['queuecallerexitreason']=_0x27f2c2[_0x9987('0xaa')];this[_0x9987('0x13')][_0x27f2c2['uniqueid']]=_0x44b725;this[_0x9987('0x4a')](_0x44b725,'varset');}else if(this['isNotNull'](_0x27f2c2[_0x9987('0xa9')])&&this['isNotNull'](_0x27f2c2['variable'][_0x9987('0xb0')])){if(!_0x44b725[_0x9987('0x20')]){_0x44b725['queuecallerexit']=!![];_0x44b725[_0x9987('0x96')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x44b725['queuecallerexitreason']='EXITWITHKEY';_0x44b725[_0x9987('0x8c')]=moment()['format'](_0x9987('0x79'));this[_0x9987('0x13')][_0x27f2c2[_0x9987('0x51')]]=_0x44b725;}}logger['info'](_0x9987('0xb1'),_0x27f2c2[_0x9987('0x51')],_0x44b725[_0x9987('0x56')],_0x44b725['type'],_[_0x9987('0x80')](_0x27f2c2[_0x9987('0xa9')])[0x0],_0x27f2c2['value']);_0x44b725[_0x9987('0x18')]=this[_0x9987('0x18')][_0x27f2c2[_0x9987('0x51')]];}}}}catch(_0x4de4d7){logger['error']('[%s][voiceQueueReport][varset]',_0x27f2c2['uniqueid'],util['inspect'](_0x4de4d7,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['addVariable']=function(_0x1bf056,_0x2f18c2,_0x2b841e){var _0xea264d=[_0x9987('0xb2'),'rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged',_0x9987('0xb3'),_0x9987('0xb4'),_0x9987('0xb5'),_0x9987('0xb6'),_0x9987('0xb7'),_0x9987('0xb8'),_0x9987('0xb9'),_0x9987('0xba'),_0x9987('0xbb'),'memberdynamic',_0x9987('0xbc'),_0x9987('0xbd'),_0x9987('0x94'),_0x9987('0xbe'),_0x9987('0xbf')];if(!_['isNil'](_0x2f18c2)&&!_['includes'](_0xea264d,_0x2f18c2)){if(_[_0x9987('0x6a')](this[_0x9987('0x18')][_0x1bf056])){this[_0x9987('0x18')][_0x1bf056]={};}this['variables'][_0x1bf056][_0x2f18c2]=_0x2b841e;}};VoiceQueueReport[_0x9987('0x3a')][_0x9987('0x29')]=function(_0x3da622){try{if(this['isNotNull'](_0x3da622)){logger[_0x9987('0x4e')](_0x9987('0xc0'),_0x3da622[_0x9987('0x51')],util[_0x9987('0x45')](_0x3da622,{'showHidden':![],'depth':null}));if(this[_0x9987('0x11')][_0x3da622[_0x9987('0x51')]]){for(var _0x349ba3=0x0,_0x9fb206={};_0x349ba3<this[_0x9987('0x11')][_0x3da622['uniqueid']]['length'];_0x349ba3+=0x1){_0x9fb206=this[_0x9987('0x11')][_0x3da622[_0x9987('0x51')]][_0x349ba3];if(this['voiceQueues'][_0x9fb206[_0x9987('0x6f')]]){if(_0x9fb206['queuecallerexit']&&_0x9fb206[_0x9987('0x97')]!=!![]){this[_0x9987('0x15')][_0x9fb206[_0x9987('0x6f')]][_0x9987('0x63')]+=0x1;}if(_0x9fb206[_0x9987('0x20')]){this['voiceQueues'][_0x9fb206[_0x9987('0x6f')]][_0x9987('0xc1')]+=0x1;}this['voiceQueues'][_0x9fb206[_0x9987('0x6f')]][_0x9987('0x60')]+=moment(_0x9fb206[_0x9987('0x8c')])[_0x9987('0xc2')](_0x9fb206['queuecallerjoinAt'],_0x9987('0x9d'))||0x0;if(_0x349ba3===this['queueReports'][_0x3da622[_0x9987('0x51')]][_0x9987('0xc3')]-0x1){this[_0x9987('0x15')][_0x9fb206[_0x9987('0x6f')]][_0x9987('0x5f')]+=moment()['milliseconds'](0x0)['diff'](_0x9fb206['queuecallerjoinAt'],_0x9987('0x9d'));this[_0x9987('0x15')][_0x9fb206[_0x9987('0x6f')]]['total']+=0x1;if(_0x9fb206[_0x9987('0x92')]){this[_0x9987('0x15')][_0x9fb206['queue']][_0x9987('0xc4')]+=0x1;this[_0x9987('0x15')][_0x9fb206['queue']][_0x9987('0x5e')]+=moment()[_0x9987('0xc5')](0x0)['diff'](_0x9fb206[_0x9987('0x8c')],_0x9987('0x9d'));_0x9fb206[_0x9987('0x84')]=moment()[_0x9987('0x52')](_0x9987('0x79'));_0x9fb206[_0x9987('0x95')]=![];_0x9fb206['queuecallerexitAt']=null;}if(_0x9fb206[_0x9987('0x95')]&&_0x9fb206['transfer']!=!![]){_0x9fb206[_0x9987('0xad')]=_0x9987('0x63');logger[_0x9987('0x4e')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x3da622[_0x9987('0x51')],util['inspect'](_0x9fb206,{'showHidden':![],'depth':null}));ami[_0x9987('0x4c')](_0x9987('0xc6'),_0x9fb206);}if(_0x9fb206[_0x9987('0x20')]){_0x9fb206[_0x9987('0xad')]='abandoned';logger[_0x9987('0x4e')](_0x9987('0xc7'),_0x3da622[_0x9987('0x51')],util[_0x9987('0x45')](_0x9fb206,{'showHidden':![],'depth':null}));ami[_0x9987('0x4c')](_0x9987('0xc8'),_0x9fb206);}}else{this[_0x9987('0x15')][_0x9fb206[_0x9987('0x6f')]][_0x9987('0x5f')]+=this[_0x9987('0x15')][_0x9fb206[_0x9987('0x6f')]][_0x9987('0x60')];}logger[_0x9987('0x7c')](_0x9987('0xc9'),_0x3da622[_0x9987('0x51')],_0x9fb206['name'],_0x9fb206['type'],_0x3da622['cause-txt']);this['channels'][_0x3da622['uniqueid']]=_0x9fb206;this['emitVoiceQueueChannelRemove'](_0x9fb206,'hangup');this['emitVoiceQueueSummary'](this[_0x9987('0x15')][_0x9fb206[_0x9987('0x6f')]],_0x9987('0x28'));}}logger[_0x9987('0x4e')](_0x9987('0xca'),_0x3da622[_0x9987('0x51')],util[_0x9987('0x45')](this['queueReports'][_0x3da622[_0x9987('0x51')]],{'showHidden':![],'depth':null}));ami[_0x9987('0x4c')](_0x9987('0xcb'),this[_0x9987('0x11')][_0x3da622[_0x9987('0x51')]]);delete this['queueReports'][_0x3da622[_0x9987('0x51')]];delete this['channels'][_0x3da622[_0x9987('0x51')]];}if(this[_0x9987('0x18')][_0x3da622[_0x9987('0x51')]]){delete this[_0x9987('0x18')][_0x3da622[_0x9987('0x51')]];}}}catch(_0x2b910f){logger['error'](_0x9987('0xc0'),_0x3da622[_0x9987('0x51')],util['inspect'](_0x2b910f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9987('0x3a')]['syncAttendedTransfer']=function(_0x407de8){try{if(this[_0x9987('0x69')](_0x407de8)){logger[_0x9987('0x4e')](_0x9987('0xcc'),_0x407de8[_0x9987('0x51')],util['inspect'](_0x407de8,{'showHidden':![],'depth':null}));var _0x21ec07;if(this[_0x9987('0x11')][_0x407de8[_0x9987('0xcd')]]){_0x21ec07=_[_0x9987('0x83')](this['queueReports'][_0x407de8[_0x9987('0xcd')]]);_0x21ec07[_0x9987('0xa1')]=_0x407de8[_0x9987('0xce')];_0x21ec07[_0x9987('0xa3')]=_0x407de8['secondtransfereruniqueid'];_0x21ec07[_0x9987('0x88')]=_0x9987('0xcf');_0x21ec07[_0x9987('0x97')]=!![];_0x21ec07[_0x9987('0x9f')]=_0x9987('0xd0');if(this['queueReports'][_0x407de8['secondtransfereruniqueid']]){var _0x4a0766=this['queueReports'][_0x407de8[_0x9987('0xd1')]];this[_0x9987('0x11')][_0x407de8[_0x9987('0xd1')]]=this[_0x9987('0x11')][_0x407de8[_0x9987('0xcd')]];this[_0x9987('0x11')][_0x407de8[_0x9987('0xcd')]]=_0x4a0766;var _0x242dc8=_[_0x9987('0x83')](this[_0x9987('0x11')][_0x407de8['transfereeuniqueid']]);_0x242dc8['switch']=!![];}logger[_0x9987('0x7c')](_0x9987('0xd2'),_0x407de8[_0x9987('0x51')],_0x21ec07['name'],_0x21ec07[_0x9987('0x59')],_0x21ec07[_0x9987('0xa1')],_0x21ec07[_0x9987('0xa3')]);}else if(this[_0x9987('0x11')][_0x407de8[_0x9987('0xd3')]]){_0x21ec07=_[_0x9987('0x83')](this['queueReports'][_0x407de8['transfertargetuniqueid']]);_0x21ec07[_0x9987('0xa1')]=_0x407de8[_0x9987('0xd4')];_0x21ec07[_0x9987('0xa3')]=_0x407de8[_0x9987('0xd5')];_0x21ec07[_0x9987('0x88')]=_0x9987('0xcf');_0x21ec07[_0x9987('0x97')]=!![];_0x21ec07[_0x9987('0x9f')]=_0x9987('0xd0');if(this['queueReports'][_0x407de8[_0x9987('0xd5')]]){var _0x4a0766=this[_0x9987('0x11')][_0x407de8['origtransfereruniqueid']];this[_0x9987('0x11')][_0x407de8[_0x9987('0xd5')]]=this[_0x9987('0x11')][_0x407de8[_0x9987('0xd3')]];this['queueReports'][_0x407de8[_0x9987('0xd3')]]=_0x4a0766;var _0x242dc8=_[_0x9987('0x83')](this[_0x9987('0x11')][_0x407de8[_0x9987('0xd3')]]);_0x242dc8[_0x9987('0x3c')]=!![];}logger['info'](_0x9987('0xd2'),_0x407de8['uniqueid'],_0x21ec07[_0x9987('0x56')],_0x21ec07[_0x9987('0x59')],_0x21ec07[_0x9987('0xa1')],_0x21ec07[_0x9987('0xa3')]);}}}catch(_0x266f79){logger[_0x9987('0x43')](_0x9987('0xcc'),_0x407de8[_0x9987('0x51')],util[_0x9987('0x45')](_0x266f79,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9987('0x3a')][_0x9987('0x32')]=function(_0x58190b){try{if(this[_0x9987('0x69')](_0x58190b)){logger[_0x9987('0x4e')]('[%s][voiceQueueReport][blindtransfer]',_0x58190b[_0x9987('0x51')],util[_0x9987('0x45')](_0x58190b,{'showHidden':![],'depth':null}));if(this[_0x9987('0x11')][_0x58190b[_0x9987('0xcd')]]){var _0x3b052a=_[_0x9987('0x83')](this[_0x9987('0x11')][_0x58190b[_0x9987('0xcd')]]);_0x3b052a['queuecallerexitreason']=_0x9987('0xd6');_0x3b052a[_0x9987('0x97')]=!![];_0x3b052a[_0x9987('0x9f')]=_0x9987('0xd7');_0x3b052a['transferexten']=_0x58190b[_0x9987('0xd8')];_0x3b052a[_0x9987('0xa3')]=_0x58190b[_0x9987('0xcd')];logger[_0x9987('0x7c')](_0x9987('0xd9'),_0x58190b[_0x9987('0x51')],_0x3b052a[_0x9987('0x56')],_0x3b052a[_0x9987('0x59')],_0x3b052a['transferexten'],_0x3b052a['transferuniqueid']);this[_0x9987('0x29')]({'event':_0x9987('0xda'),'uniqueid':_0x58190b[_0x9987('0xcd')],'context':_0x58190b['context'],'channel':_0x58190b[_0x9987('0xdb')]});}}}catch(_0x50b9f5){logger['error'](_0x9987('0xdc'),_0x58190b[_0x9987('0x51')],util[_0x9987('0x45')](_0x50b9f5,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x9987('0x2d')]=function(_0x2c6fd5){try{if(this['isNotNull'](_0x2c6fd5)){logger[_0x9987('0x4e')]('[%s][voiceQueueReport][musiconholdstart]',_0x2c6fd5[_0x9987('0x51')],util['inspect'](_0x2c6fd5,{'showHidden':![],'depth':null}));if(this[_0x9987('0x11')][_0x2c6fd5['uniqueid']]){var _0x382a7e=_[_0x9987('0x83')](this[_0x9987('0x11')][_0x2c6fd5['uniqueid']]);if(!_[_0x9987('0x3d')](_0x382a7e[_0x9987('0x8c')])){_0x382a7e[_0x9987('0xdd')]=moment()[_0x9987('0x52')](_0x9987('0x79'));logger[_0x9987('0x7c')](_0x9987('0xde'),_0x2c6fd5[_0x9987('0x51')],_0x382a7e[_0x9987('0xdd')]);}}}}catch(_0xd7ad96){logger[_0x9987('0x43')](_0x9987('0xdf'),_0x2c6fd5[_0x9987('0x51')],util['inspect'](_0xd7ad96,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9987('0x3a')][_0x9987('0x2f')]=function(_0x2f9b68){try{if(this[_0x9987('0x69')](_0x2f9b68)){logger[_0x9987('0x4e')](_0x9987('0xe0'),_0x2f9b68[_0x9987('0x51')],util[_0x9987('0x45')](_0x2f9b68,{'showHidden':![],'depth':null}));if(this[_0x9987('0x11')][_0x2f9b68[_0x9987('0x51')]]){var _0x352e5b=_[_0x9987('0x83')](this['queueReports'][_0x2f9b68[_0x9987('0x51')]]);if(!_[_0x9987('0x3d')](_0x352e5b[_0x9987('0xdd')])){_0x352e5b[_0x9987('0xe1')]+=moment()[_0x9987('0xc5')](0x0)[_0x9987('0xc2')](_0x352e5b[_0x9987('0xdd')],_0x9987('0x9d'));logger[_0x9987('0x7c')](_0x9987('0xe2'),_0x2f9b68[_0x9987('0x51')],_0x352e5b[_0x9987('0xe1')]);delete _0x352e5b[_0x9987('0xdd')];}}}}catch(_0x33ebc8){logger['error'](_0x9987('0xe0'),_0x2f9b68[_0x9987('0x51')],util[_0x9987('0x45')](_0x33ebc8,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9987('0x3a')]['syncNewExten']=function(_0x2f6637){try{if(this[_0x9987('0x69')](_0x2f6637)){logger[_0x9987('0x4e')]('[%s][voiceQueueReport][newexten]\x20event:',_0x2f6637[_0x9987('0x51')],util[_0x9987('0x45')](_0x2f6637,{'showHidden':![],'depth':null}));if(_0x2f6637[_0x9987('0xe3')][_0x9987('0xe4')]()===_0x9987('0xe5')){_0x2f6637['applicationdata']=_0x2f6637[_0x9987('0xe6')]&&_0x2f6637[_0x9987('0xe6')]['startsWith'](_0x9987('0xe7'))?_0x2f6637['appdata']:(_0x2f6637[_0x9987('0xe6')]||_0x2f6637[_0x9987('0xe8')])[_0x9987('0xe4')]();if(_[_0x9987('0xe9')](_0x2f6637['applicationdata']['toLowerCase'](),_0x9987('0xea'))){logger[_0x9987('0x7c')](_0x9987('0xeb'),_0x2f6637[_0x9987('0x51')],_0x2f6637['application'],_0x2f6637['applicationdata']);if(_[_0x9987('0x6a')](this['channels'][_0x2f6637[_0x9987('0x51')]]))this[_0x9987('0x13')][_0x2f6637['uniqueid']]={};var _0x3bcf4b=_0x2f6637['applicationdata']['split']('=');var _0x310116=_0x3bcf4b[0x0][_0x9987('0xe4')]()['match'](/cdr\((.*)\)/);if(_0x310116)this[_0x9987('0x13')][_0x2f6637['uniqueid']][_0x310116[0x1]]=_0x3bcf4b[0x1];}}}}catch(_0x745f68){logger['error'](_0x9987('0xec'),_0x2f6637[_0x9987('0x51')],util[_0x9987('0x45')](_0x745f68,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
index 314b4cf..e945cbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19bf=['createHistory','Request','../client'];(function(_0x19f584,_0x546719){var _0x2ab2ba=function(_0x285b63){while(--_0x285b63){_0x19f584['push'](_0x19f584['shift']());}};_0x2ab2ba(++_0x546719);}(_0x19bf,0x104));var _0xf19b=function(_0x248ef1,_0x191eaa){_0x248ef1=_0x248ef1-0x0;var _0x816a25=_0x19bf[_0x248ef1];return _0x816a25;};'use strict';var client=require(_0xf19b('0x0'));exports[_0xf19b('0x1')]=function(_0x26eab7){return function(){_0x26eab7['campaign']=_0x26eab7['queue'];return client[_0xf19b('0x2')]('CreateReportAgentPreview',{'body':_0x26eab7,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
+var _0x45e7=['createHistory','campaign','Request','CreateReportAgentPreview','../client'];(function(_0x13b34a,_0x59462a){var _0x24a64c=function(_0x131913){while(--_0x131913){_0x13b34a['push'](_0x13b34a['shift']());}};_0x24a64c(++_0x59462a);}(_0x45e7,0x18a));var _0x745e=function(_0x5dfc2a,_0x1a953f){_0x5dfc2a=_0x5dfc2a-0x0;var _0x3f1a71=_0x45e7[_0x5dfc2a];return _0x3f1a71;};'use strict';var client=require(_0x745e('0x0'));exports[_0x745e('0x1')]=function(_0x2cb1d5){return function(){_0x2cb1d5[_0x745e('0x2')]=_0x2cb1d5['queue'];return client[_0x745e('0x3')](_0x745e('0x4'),{'body':_0x2cb1d5,'log':_0x745e('0x4')});};};
\ No newline at end of file
index ea505f0..2449889 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0176=['CreateAttachment','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0176,0x14f));var _0x6017=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0176[_0x122ef9];return _0x42fba0;};'use strict';var client=require(_0x6017('0x0'));exports['create']=function(_0x518240){return client['Request'](_0x6017('0x1'),{'body':_0x518240,'log':'CreateAttachment'});};
\ No newline at end of file
+var _0xd1eb=['../client','create','CreateAttachment'];(function(_0x2e0e61,_0xe5c390){var _0x593be9=function(_0x4639c2){while(--_0x4639c2){_0x2e0e61['push'](_0x2e0e61['shift']());}};_0x593be9(++_0xe5c390);}(_0xd1eb,0xc3));var _0xbd1e=function(_0x53c29a,_0x5113c6){_0x53c29a=_0x53c29a-0x0;var _0x2f984c=_0xd1eb[_0x53c29a];return _0x2f984c;};'use strict';var client=require(_0xbd1e('0x0'));exports[_0xbd1e('0x1')]=function(_0x268a20){return client['Request'](_0xbd1e('0x2'),{'body':_0x268a20,'log':'CreateAttachment'});};
\ No newline at end of file
index 59d1aaa..adff89a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0xd136c7,_0x25a52d){var _0x14e1c9=function(_0x33370d){while(--_0x33370d){_0xd136c7['push'](_0xd136c7['shift']());}};_0x14e1c9(++_0x25a52d);}(_0x1261,0x144));var _0x1126=function(_0x22d667,_0x4ab6f6){_0x22d667=_0x22d667-0x0;var _0xc8eba0=_0x1261[_0x22d667];return _0xc8eba0;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
+var _0x7a54=['dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','callerid','active','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyMaxRetry'];(function(_0x505b09,_0x45ed57){var _0x1c24b0=function(_0x3f0d19){while(--_0x3f0d19){_0x505b09['push'](_0x505b09['shift']());}};_0x1c24b0(++_0x45ed57);}(_0x7a54,0x106));var _0x47a5=function(_0x3c8e36,_0x2a5f54){_0x3c8e36=_0x3c8e36-0x0;var _0x5cc83d=_0x7a54[_0x3c8e36];return _0x5cc83d;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(){return client[_0x47a5('0x2')]('GetCampaign',{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),_0x47a5('0x4'),'active',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'dialCongestionRetryFrequency',_0x47a5('0xa'),'dialBusyRetryFrequency',_0x47a5('0xb'),_0x47a5('0xc'),'dialGlobalMaxRetry',_0x47a5('0xd'),'dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency',_0x47a5('0xe'),_0x47a5('0xf'),'dialMachineMaxRetry',_0x47a5('0x10'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'dialAMDMinWordLength',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e'),_0x47a5('0x1f')],'include':[{'model':'Trunk','as':_0x47a5('0x20'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x21'),_0x47a5('0x22')]},{'model':_0x47a5('0x20'),'as':'TrunkBackup','attributes':['id','name',_0x47a5('0x21'),'active']},{'model':'Interval','as':_0x47a5('0x23'),'attributes':['id',_0x47a5('0x3')],'include':[{'model':_0x47a5('0x23'),'as':_0x47a5('0x24'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x25')]}]},{'model':_0x47a5('0x26'),'as':_0x47a5('0x26'),'attributes':['id',_0x47a5('0x3')]}]},'log':'getCampaign'});};};
\ No newline at end of file
index 74b886b..dfa3b48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb546=['GetCmContact','createContact','Request','getContacts'];(function(_0x1921cf,_0x1010ce){var _0x1d886b=function(_0x2e74fb){while(--_0x2e74fb){_0x1921cf['push'](_0x1921cf['shift']());}};_0x1d886b(++_0x1010ce);}(_0xb546,0x1ed));var _0x6b54=function(_0x395b58,_0x23518d){_0x395b58=_0x395b58-0x0;var _0x43c80a=_0xb546[_0x395b58];return _0x43c80a;};'use strict';var client=require('../client');exports[_0x6b54('0x0')]=function(_0x4ab6c7){return function(){return client[_0x6b54('0x1')]('CreateCmContact',{'body':_0x4ab6c7,'log':'CreateCmContact'});};};exports[_0x6b54('0x2')]=function(_0x3a265c){return function(){return client[_0x6b54('0x1')](_0x6b54('0x3'),{'options':_0x3a265c,'log':'GetCmContact'});};};
\ No newline at end of file
+var _0xb9f8=['Request','CreateCmContact','GetCmContact','createContact'];(function(_0x15e108,_0x4fc156){var _0x25f041=function(_0x1cb235){while(--_0x1cb235){_0x15e108['push'](_0x15e108['shift']());}};_0x25f041(++_0x4fc156);}(_0xb9f8,0x7b));var _0x8b9f=function(_0x4a0b62,_0x54f2d5){_0x4a0b62=_0x4a0b62-0x0;var _0x5747a5=_0xb9f8[_0x4a0b62];return _0x5747a5;};'use strict';var client=require('../client');exports[_0x8b9f('0x0')]=function(_0x4ab03b){return function(){return client[_0x8b9f('0x1')](_0x8b9f('0x2'),{'body':_0x4ab03b,'log':_0x8b9f('0x2')});};};exports['getContacts']=function(_0x21f754){return function(){return client[_0x8b9f('0x1')](_0x8b9f('0x3'),{'options':_0x21f754,'log':_0x8b9f('0x3')});};};
\ No newline at end of file
index b7730a4..b1e5183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x858c=['GetCmHopperPreview','User','Agent','name','VoiceQueue','Queue','unlockContact','getContactRecallMe','GetContactRecallMe','voicePause','db.CmHopper.UserId','../client','moment','lodash','getContacts','GetCmHopper','CmContact','Contact','getCmHopper','updateContacts','Request','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','priority','DESC','scheduledat','GetContactDialer','getContactDialerIvr','ASC','GetContactDialerIvr','moveContactManagedDialer','queue','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview'];(function(_0x3cb30b,_0x504b3e){var _0x2ca717=function(_0x32a3d9){while(--_0x32a3d9){_0x3cb30b['push'](_0x3cb30b['shift']());}};_0x2ca717(++_0x504b3e);}(_0x858c,0xe7));var _0xc858=function(_0x16a889,_0xed3b66){_0x16a889=_0x16a889-0x0;var _0x38c98b=_0x858c[_0x16a889];return _0x38c98b;};'use strict';var client=require(_0xc858('0x0'));var moment=require(_0xc858('0x1'));var _=require(_0xc858('0x2'));exports[_0xc858('0x3')]=function(_0x262b00,_0x10016b){return function(){return client['Request'](_0xc858('0x4'),{'options':{'where':{'VoiceQueueId':_0x262b00},'include':[{'model':_0xc858('0x5'),'as':_0xc858('0x6')}],'limit':_0x10016b,'raw':![]},'log':_0xc858('0x7')});};};exports[_0xc858('0x8')]=function(_0x10bd96,_0x37173e,_0x37f0e9){return function(){return client[_0xc858('0x9')](_0xc858('0xa'),{'body':_0x10bd96,'options':{'where':{'VoiceQueueId':_0x37173e,'scheduledat':{'$lte':moment()[_0xc858('0xb')](_0xc858('0xc'))}},'limit':_0x37f0e9},'log':'UpdateCmHopper'});};};exports[_0xc858('0xd')]=function(_0xc07a98){return function(){return client[_0xc858('0x9')](_0xc858('0xa'),{'body':_0xc07a98,'options':{'where':{'ContactId':_0xc07a98[_0xc858('0xe')],'ListId':_0xc07a98[_0xc858('0xf')],'VoiceQueueId':_0xc07a98[_0xc858('0x10')],'CampaignId':_0xc07a98[_0xc858('0x11')]}},'log':_0xc858('0xd')});};};exports[_0xc858('0x12')]=function(_0x2d0978,_0x3d4e28,_0xcb14f3){return function(){return client[_0xc858('0x9')](_0xc858('0x13'),{'options':{'where':{'VoiceQueueId':_0x2d0978,'ListId':_0x3d4e28,'ContactId':_0xcb14f3}},'log':_0xc858('0x13')});};};exports['getContactDialer']=function(_0x5e3eb8,_0x5ca6e5,_0x350fac,_0x335bfe){return function(){return client['Request']('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x5e3eb8,'active':![],'scheduledat':{'$lte':moment()[_0xc858('0xb')]('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x5ca6e5}}]},'order':[[_0xc858('0x14'),_0xc858('0x15')],[_0xc858('0x16'),_0x335bfe],['id','ASC']],'raw':!![],'limit':_0x350fac},'log':_0xc858('0x17')});};};exports[_0xc858('0x18')]=function(_0x5cb81b,_0x4a5475,_0x1609d){return function(){return client[_0xc858('0x9')](_0xc858('0x17'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x5cb81b,'active':![],'scheduledat':{'$lte':moment()[_0xc858('0xb')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0xc858('0x5'),'as':_0xc858('0x6')}],'order':[[_0xc858('0x14'),_0xc858('0x15')],['scheduledat',_0x1609d],['id',_0xc858('0x19')]],'raw':!![],'limit':_0x4a5475},'log':_0xc858('0x1a')});};};exports[_0xc858('0x1b')]=function(_0x5c363d,_0x37be8a){return function(){_0x5c363d['campaign']=_0x5c363d[_0xc858('0x1c')];return client[_0xc858('0x9')](_0xc858('0x1d'),{'body':_0x5c363d,'options':{'where':{'ContactId':_0x5c363d[_0xc858('0xe')],'ListId':_0x5c363d[_0xc858('0xf')],'VoiceQueueId':_0x5c363d[_0xc858('0x10')],'CampaignId':_0x5c363d['CampaignId'],'active':_0x37be8a?undefined:!![]}},'log':_0xc858('0x1d')});};};exports[_0xc858('0x1e')]=function(_0x4d7f46){return function(){return client[_0xc858('0x9')](_0xc858('0x1f'),{'options':{'where':{'VoiceQueueId':_0x4d7f46['id']?_0x4d7f46['id']||null:null}},'log':_0xc858('0x1e')});};};exports[_0xc858('0x20')]=function(_0x44d3ce){return function(){return client[_0xc858('0x9')](_0xc858('0x21'),{'options':{'where':{'id':_0x44d3ce},'include':[{'model':_0xc858('0x5'),'as':_0xc858('0x6')},{'model':_0xc858('0x22'),'as':_0xc858('0x23'),'attributes':['id',_0xc858('0x24')]},{'model':_0xc858('0x25'),'as':_0xc858('0x26'),'attributes':['id','name']}],'raw':!![]},'log':_0xc858('0x7')});};};exports[_0xc858('0x27')]=function(_0x152164,_0x1af73f,_0x694cba){return function(){return client[_0xc858('0x9')]('UpdateCmHopper',{'body':_0x152164,'options':{'where':{'id':_0x1af73f},'limit':_0x694cba},'log':'UpdateCmHopper'});};};exports[_0xc858('0x28')]=function(_0x36e8f9,_0xf13668){return function(){return client[_0xc858('0x9')](_0xc858('0x29'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x36e8f9,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xc858('0xb')](_0xc858('0xc'))},'UserId':{'$in':_0xf13668}},'order':[[_0xc858('0x14'),'DESC'],['scheduledat',_0xc858('0x15')],['id',_0xc858('0x19')]],'include':[{'model':_0xc858('0x5'),'as':_0xc858('0x6')},{'model':'User','as':_0xc858('0x23'),'attributes':['id',_0xc858('0x24'),_0xc858('0x2a')]}],'group':_0xc858('0x2b'),'raw':!![]},'log':_0xc858('0x17')});};};
\ No newline at end of file
+var _0x0dce=['updateContacts','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','UpdateCmHopper','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','priority','DESC','scheduledat','ASC','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','countReScheduled','User','Agent','Queue','name','unlockContact','getContactRecallMe','voicePause','db.CmHopper.UserId','../client','getContacts','Request','GetCmHopper','CmContact','Contact','getCmHopper'];(function(_0x34c027,_0x123688){var _0x47bff0=function(_0x19c4a9){while(--_0x19c4a9){_0x34c027['push'](_0x34c027['shift']());}};_0x47bff0(++_0x123688);}(_0x0dce,0x103));var _0xe0dc=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0x0dce[_0x263a74];return _0x2aa86c;};'use strict';var client=require(_0xe0dc('0x0'));var moment=require('moment');var _=require('lodash');exports[_0xe0dc('0x1')]=function(_0x26d82a,_0xe95075){return function(){return client[_0xe0dc('0x2')](_0xe0dc('0x3'),{'options':{'where':{'VoiceQueueId':_0x26d82a},'include':[{'model':_0xe0dc('0x4'),'as':_0xe0dc('0x5')}],'limit':_0xe95075,'raw':![]},'log':_0xe0dc('0x6')});};};exports[_0xe0dc('0x7')]=function(_0x559ddd,_0x290bb1,_0x14cd8c){return function(){return client[_0xe0dc('0x2')]('UpdateCmHopper',{'body':_0x559ddd,'options':{'where':{'VoiceQueueId':_0x290bb1,'scheduledat':{'$lte':moment()[_0xe0dc('0x8')](_0xe0dc('0x9'))}},'limit':_0x14cd8c},'log':'UpdateCmHopper'});};};exports[_0xe0dc('0xa')]=function(_0xdd3ac1){return function(){return client['Request'](_0xe0dc('0xb'),{'body':_0xdd3ac1,'options':{'where':{'ContactId':_0xdd3ac1[_0xe0dc('0xc')],'ListId':_0xdd3ac1[_0xe0dc('0xd')],'VoiceQueueId':_0xdd3ac1[_0xe0dc('0xe')],'CampaignId':_0xdd3ac1[_0xe0dc('0xf')]}},'log':'rescheduleContact'});};};exports[_0xe0dc('0x10')]=function(_0x4fd0ff,_0x497dcd,_0x107396){return function(){return client['Request'](_0xe0dc('0x11'),{'options':{'where':{'VoiceQueueId':_0x4fd0ff,'ListId':_0x497dcd,'ContactId':_0x107396}},'log':_0xe0dc('0x11')});};};exports[_0xe0dc('0x12')]=function(_0x39dc58,_0x1e8613,_0x18292e,_0x48cf24){return function(){return client[_0xe0dc('0x2')](_0xe0dc('0x13'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x39dc58,'active':![],'scheduledat':{'$lte':moment()[_0xe0dc('0x8')](_0xe0dc('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x1e8613}}]},'order':[[_0xe0dc('0x14'),_0xe0dc('0x15')],[_0xe0dc('0x16'),_0x48cf24],['id',_0xe0dc('0x17')]],'raw':!![],'limit':_0x18292e},'log':_0xe0dc('0x13')});};};exports['getContactDialerIvr']=function(_0x409688,_0x4e3c5f,_0x22b923){return function(){return client[_0xe0dc('0x2')](_0xe0dc('0x13'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x409688,'active':![],'scheduledat':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0xe0dc('0x4'),'as':'Contact'}],'order':[['priority',_0xe0dc('0x15')],['scheduledat',_0x22b923],['id',_0xe0dc('0x17')]],'raw':!![],'limit':_0x4e3c5f},'log':_0xe0dc('0x18')});};};exports[_0xe0dc('0x19')]=function(_0x5be0e2,_0x3bdd05){return function(){_0x5be0e2[_0xe0dc('0x1a')]=_0x5be0e2[_0xe0dc('0x1b')];return client['Request'](_0xe0dc('0x1c'),{'body':_0x5be0e2,'options':{'where':{'ContactId':_0x5be0e2[_0xe0dc('0xc')],'ListId':_0x5be0e2[_0xe0dc('0xd')],'VoiceQueueId':_0x5be0e2[_0xe0dc('0xe')],'CampaignId':_0x5be0e2[_0xe0dc('0xf')],'active':_0x3bdd05?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports[_0xe0dc('0x1d')]=function(_0x5718d9){return function(){return client[_0xe0dc('0x2')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x5718d9['id']?_0x5718d9['id']||null:null}},'log':'countReScheduled'});};};exports['getContactPreview']=function(_0x4e8782){return function(){return client[_0xe0dc('0x2')]('GetCmHopperPreview',{'options':{'where':{'id':_0x4e8782},'include':[{'model':_0xe0dc('0x4'),'as':'Contact'},{'model':_0xe0dc('0x1e'),'as':_0xe0dc('0x1f'),'attributes':['id','name']},{'model':'VoiceQueue','as':_0xe0dc('0x20'),'attributes':['id',_0xe0dc('0x21')]}],'raw':!![]},'log':'getCmHopper'});};};exports[_0xe0dc('0x22')]=function(_0x28eea4,_0x55f066,_0x435ca5){return function(){return client[_0xe0dc('0x2')](_0xe0dc('0xb'),{'body':_0x28eea4,'options':{'where':{'id':_0x55f066},'limit':_0x435ca5},'log':'UpdateCmHopper'});};};exports[_0xe0dc('0x23')]=function(_0x130c70,_0x394055){return function(){return client['Request']('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x130c70,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xe0dc('0x8')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x394055}},'order':[[_0xe0dc('0x14'),_0xe0dc('0x15')],[_0xe0dc('0x16'),_0xe0dc('0x15')],['id','ASC']],'include':[{'model':_0xe0dc('0x4'),'as':'Contact'},{'model':_0xe0dc('0x1e'),'as':_0xe0dc('0x1f'),'attributes':['id',_0xe0dc('0x21'),_0xe0dc('0x24')]}],'group':_0xe0dc('0x25'),'raw':!![]},'log':_0xe0dc('0x13')});};};
\ No newline at end of file
index 18c3721..2c51363 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0abf=['GetCmHopperBlackIvr','../client','Request','Contact','GetCmHopperBlack','checkIsBlackListIvr','CampaignId'];(function(_0x3c44c9,_0x5c2931){var _0x30eafe=function(_0x105fde){while(--_0x105fde){_0x3c44c9['push'](_0x3c44c9['shift']());}};_0x30eafe(++_0x5c2931);}(_0x0abf,0xe8));var _0xf0ab=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x0abf[_0x6c993a];return _0x27f547;};'use strict';var client=require(_0xf0ab('0x0'));exports['checkIsBlackList']=function(_0x4698fb){return function(){return client[_0xf0ab('0x1')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x4698fb['VoiceQueueId'],'phone':_0x4698fb[_0xf0ab('0x2')]['phone']},'raw':![]},'log':_0xf0ab('0x3')});};};exports[_0xf0ab('0x4')]=function(_0x2efe43){return function(){return client[_0xf0ab('0x1')](_0xf0ab('0x3'),{'options':{'where':{'CampaignId':_0x2efe43[_0xf0ab('0x5')],'phone':_0x2efe43[_0xf0ab('0x2')]['phone']},'raw':![]},'log':_0xf0ab('0x6')});};};
\ No newline at end of file
+var _0xf7b4=['Contact','GetCmHopperBlackIvr','../client','Request','GetCmHopperBlack','phone','checkIsBlackListIvr','CampaignId'];(function(_0x1b4a59,_0x41f248){var _0x332f2d=function(_0x36bca4){while(--_0x36bca4){_0x1b4a59['push'](_0x1b4a59['shift']());}};_0x332f2d(++_0x41f248);}(_0xf7b4,0x152));var _0x4f7b=function(_0x147656,_0x205a15){_0x147656=_0x147656-0x0;var _0x37e1e9=_0xf7b4[_0x147656];return _0x37e1e9;};'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 ee77596..1d13fdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc2c=['createContact','campaign','queue','CreateCmHopperFinal','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdc2c,0x95));var _0xcdc2=function(_0x4f034b,_0x4ae230){_0x4f034b=_0x4f034b-0x0;var _0xac374c=_0xdc2c[_0x4f034b];return _0xac374c;};'use strict';var client=require(_0xcdc2('0x0'));exports[_0xcdc2('0x1')]=function(_0x3b5852){return function(){_0x3b5852[_0xcdc2('0x2')]=_0x3b5852[_0xcdc2('0x3')];return client['Request']('CreateCmHopperFinal',{'body':_0x3b5852,'log':_0xcdc2('0x4')});};};
\ No newline at end of file
+var _0x764a=['CreateCmHopperFinal','../client','createContact','campaign','Request'];(function(_0x5ae43f,_0x5da6b8){var _0x2f37e4=function(_0x2dc777){while(--_0x2dc777){_0x5ae43f['push'](_0x5ae43f['shift']());}};_0x2f37e4(++_0x5da6b8);}(_0x764a,0x182));var _0xa764=function(_0x341856,_0x3611f4){_0x341856=_0x341856-0x0;var _0x1ee178=_0x764a[_0x341856];return _0x1ee178;};'use strict';var client=require(_0xa764('0x0'));exports[_0xa764('0x1')]=function(_0x3f7826){return function(){_0x3f7826[_0xa764('0x2')]=_0x3f7826['queue'];return client[_0xa764('0x3')](_0xa764('0x4'),{'body':_0x3f7826,'log':_0xa764('0x4')});};};
\ No newline at end of file
index 2222aa5..ad40a18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb82=['campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','format','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','YYYY-MM-DD\x20HH:mm:ss','getCampaignHopperHistory','GetCampaignHopperHistory','endOf','ivr','../client','createHistory'];(function(_0x17cc6c,_0x22514f){var _0x2e1672=function(_0x1c2011){while(--_0x1c2011){_0x17cc6c['push'](_0x17cc6c['shift']());}};_0x2e1672(++_0x22514f);}(_0xbb82,0x12a));var _0x2bb8=function(_0x2e6dbf,_0x57dd06){_0x2e6dbf=_0x2e6dbf-0x0;var _0x2680e5=_0xbb82[_0x2e6dbf];return _0x2680e5;};'use strict';var client=require(_0x2bb8('0x0'));var moment=require('moment');exports[_0x2bb8('0x1')]=function(_0x5ac77a){return function(){_0x5ac77a[_0x2bb8('0x2')]=_0x5ac77a[_0x2bb8('0x3')];return client[_0x2bb8('0x4')](_0x2bb8('0x5'),{'body':_0x5ac77a,'log':_0x2bb8('0x5')});};};exports[_0x2bb8('0x6')]=function(_0x46a684){return function(){return client[_0x2bb8('0x4')](_0x2bb8('0x7'),{'options':{'where':{'endtime':{'$between':[moment()[_0x2bb8('0x8')](_0x46a684,'minutes')[_0x2bb8('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x2bb8('0x9')]('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':_0x2bb8('0xa')});};};exports[_0x2bb8('0xb')]=function(_0x31ad6e){return function(){return client[_0x2bb8('0x4')](_0x2bb8('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x2bb8('0xd')](_0x2bb8('0xe'))[_0x2bb8('0x9')](_0x2bb8('0xf')),moment()['endOf'](_0x2bb8('0xe'))['format']('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x2bb8('0x3')},'raw':![]},'log':_0x2bb8('0xc')});};};exports[_0x2bb8('0x10')]=function(_0x16c10c){return function(){return client['Request'](_0x2bb8('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x2bb8('0xd')](_0x2bb8('0xe'))[_0x2bb8('0x9')](_0x2bb8('0xf')),moment()[_0x2bb8('0x12')](_0x2bb8('0xe'))[_0x2bb8('0x9')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x2bb8('0x13')},'raw':![]},'log':_0x2bb8('0x11')});};};
\ No newline at end of file
+var _0x8ae1=['../client','moment','createHistory','campaign','queue','CreateCmHopperHistory','avgHandleTime','Request','AvgHandleTime','subtract','YYYY-MM-DD\x20HH:mm:ss','format','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','GetCampaignHopperHistory','ivr'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x8ae1,0x104));var _0x18ae=function(_0x14f967,_0x228113){_0x14f967=_0x14f967-0x0;var _0x2118f4=_0x8ae1[_0x14f967];return _0x2118f4;};'use strict';var client=require(_0x18ae('0x0'));var moment=require(_0x18ae('0x1'));exports[_0x18ae('0x2')]=function(_0x3f8e9c){return function(){_0x3f8e9c[_0x18ae('0x3')]=_0x3f8e9c[_0x18ae('0x4')];return client['Request']('CreateCmHopperHistory',{'body':_0x3f8e9c,'log':_0x18ae('0x5')});};};exports[_0x18ae('0x6')]=function(_0x4ae27f){return function(){return client[_0x18ae('0x7')](_0x18ae('0x8'),{'options':{'where':{'endtime':{'$between':[moment()[_0x18ae('0x9')](_0x4ae27f,'minutes')['format'](_0x18ae('0xa')),moment()[_0x18ae('0xb')](_0x18ae('0xa'))]}},'raw':![]},'log':_0x18ae('0xc')});};};exports[_0x18ae('0xd')]=function(_0x259356){return function(){return client[_0x18ae('0x7')](_0x18ae('0xe'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x18ae('0xf')](_0x18ae('0x10'))['format'](_0x18ae('0xa')),moment()[_0x18ae('0x11')](_0x18ae('0x10'))['format'](_0x18ae('0xa'))]},'campaigntype':_0x18ae('0x4')},'raw':![]},'log':_0x18ae('0xe')});};};exports['getCampaignHopperHistory']=function(_0x17ce18){return function(){return client[_0x18ae('0x7')](_0x18ae('0x12'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x18ae('0xf')](_0x18ae('0x10'))[_0x18ae('0xb')](_0x18ae('0xa')),moment()['endOf'](_0x18ae('0x10'))[_0x18ae('0xb')](_0x18ae('0xa'))]},'campaigntype':_0x18ae('0x13')},'raw':![]},'log':_0x18ae('0x12')});};};
\ No newline at end of file
index 5be80e0..3f5b5a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16a2=['name','headerinfo','localstationid','minrate','maxrate','faxdetect','t38timeout','tech','ListId','key','Trunk','active','getFaxAccount','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount'];(function(_0x3e2f39,_0x52276d){var _0x1f915c=function(_0x2bbf27){while(--_0x2bbf27){_0x3e2f39['push'](_0x3e2f39['shift']());}};_0x1f915c(++_0x52276d);}(_0x16a2,0x1d0));var _0x216a=function(_0x870b62,_0x2143f9){_0x870b62=_0x870b62-0x0;var _0x2dcb39=_0x16a2[_0x870b62];return _0x2dcb39;};'use strict';var client=require(_0x216a('0x0'));exports[_0x216a('0x1')]=function(){return function(){return client[_0x216a('0x2')](_0x216a('0x3'),{'options':{'raw':![],'attributes':['id',_0x216a('0x4'),'description','ecm',_0x216a('0x5'),_0x216a('0x6'),_0x216a('0x7'),_0x216a('0x8'),'modem','gateway',_0x216a('0x9'),_0x216a('0xa'),_0x216a('0xb'),'TrunkId',_0x216a('0xc'),_0x216a('0xd')],'include':[{'model':_0x216a('0xe'),'as':_0x216a('0xe'),'attributes':['id','name','callerid',_0x216a('0xf')]}]},'log':_0x216a('0x10')});};};exports['notify']=function(_0x1af4e7,_0x329d32){return client[_0x216a('0x2')](_0x216a('0x11'),{'account':{'id':_0x1af4e7},'body':_0x329d32,'log':_0x216a('0x11')});};
\ No newline at end of file
+var _0x3d2f=['getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','GetFaxAccount','name','description','ecm','headerinfo','localstationid','minrate','modem','gateway','faxdetect','t38timeout','tech','ListId','key','Trunk','callerid','active'];(function(_0x14888d,_0x12b4d7){var _0x24046b=function(_0x46f1ab){while(--_0x46f1ab){_0x14888d['push'](_0x14888d['shift']());}};_0x24046b(++_0x12b4d7);}(_0x3d2f,0x18f));var _0xf3d2=function(_0x2f8a80,_0x1ea962){_0x2f8a80=_0x2f8a80-0x0;var _0x22400e=_0x3d2f[_0x2f8a80];return _0x22400e;};'use strict';var client=require(_0xf3d2('0x0'));exports[_0xf3d2('0x1')]=function(){return function(){return client['Request'](_0xf3d2('0x2'),{'options':{'raw':![],'attributes':['id',_0xf3d2('0x3'),_0xf3d2('0x4'),_0xf3d2('0x5'),_0xf3d2('0x6'),_0xf3d2('0x7'),_0xf3d2('0x8'),'maxrate',_0xf3d2('0x9'),_0xf3d2('0xa'),_0xf3d2('0xb'),_0xf3d2('0xc'),_0xf3d2('0xd'),'TrunkId',_0xf3d2('0xe'),_0xf3d2('0xf')],'include':[{'model':'Trunk','as':_0xf3d2('0x10'),'attributes':['id','name',_0xf3d2('0x11'),_0xf3d2('0x12')]}]},'log':_0xf3d2('0x13')});};};exports[_0xf3d2('0x14')]=function(_0x3169f5,_0x820c61){return client['Request'](_0xf3d2('0x15'),{'account':{'id':_0x3169f5},'body':_0x820c61,'log':_0xf3d2('0x15')});};
\ No newline at end of file
index 7dbac16..e69fa35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdfd=['UpdateFaxMessage','../client','update'];(function(_0x18252c,_0x98bf84){var _0x1369cb=function(_0x4b61f9){while(--_0x4b61f9){_0x18252c['push'](_0x18252c['shift']());}};_0x1369cb(++_0x98bf84);}(_0xbdfd,0x160));var _0xdbdf=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xbdfd[_0x321bb2];return _0x9c12ed;};'use strict';var client=require(_0xdbdf('0x0'));exports[_0xdbdf('0x1')]=function(_0x1fe4cb,_0x590e88){return client['Request']('UpdateFaxMessage',{'body':_0x590e88,'options':{'where':{'AttachmentId':_0x1fe4cb}},'log':_0xdbdf('0x2')});};
\ No newline at end of file
+var _0x289f=['UpdateFaxMessage','update'];(function(_0x4e1ff6,_0xf55791){var _0x4569a4=function(_0x3644e5){while(--_0x3644e5){_0x4e1ff6['push'](_0x4e1ff6['shift']());}};_0x4569a4(++_0xf55791);}(_0x289f,0x1e7));var _0xf289=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x289f[_0x40220a];return _0x3903cc;};'use strict';var client=require('../client');exports[_0xf289('0x0')]=function(_0x54e594,_0x517ac4){return client['Request'](_0xf289('0x1'),{'body':_0x517ac4,'options':{'where':{'AttachmentId':_0x54e594}},'log':_0xf289('0x1')});};
\ No newline at end of file
index cde32a2..1f5e3b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46d7=['Tags','../../client','getDeskAccounts','Request','GetDeskAccount','description','username','password','remoteUri','authType','type','serverUrl','DeskConfiguration','name','Subjects','content','variableName','Variable','DeskField','key','keyType','keyContent','idField','nameField','Tag'];(function(_0xbb4382,_0x11d0c9){var _0x49bee1=function(_0x22e00a){while(--_0x22e00a){_0xbb4382['push'](_0xbb4382['shift']());}};_0x49bee1(++_0x11d0c9);}(_0x46d7,0x97));var _0x746d=function(_0x28cb6e,_0x34d9f7){_0x28cb6e=_0x28cb6e-0x0;var _0x2b4119=_0x46d7[_0x28cb6e];return _0x2b4119;};'use strict';var client=require(_0x746d('0x0'));exports[_0x746d('0x1')]=function(){return function(_0x46ab35){return client[_0x746d('0x2')](_0x746d('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x746d('0x4'),_0x746d('0x5'),_0x746d('0x6'),_0x746d('0x7'),_0x746d('0x8'),_0x746d('0x9'),_0x746d('0xa')],'include':[{'model':_0x746d('0xb'),'as':'Configurations','attributes':['id',_0x746d('0xc')],'include':[{'model':'DeskField','as':_0x746d('0xd'),'attributes':['id',_0x746d('0x9'),_0x746d('0xe'),_0x746d('0xf')],'include':[{'model':_0x746d('0x10'),'as':_0x746d('0x10'),'attributes':['id',_0x746d('0xc')]}]},{'model':_0x746d('0x11'),'as':'Descriptions','attributes':['id',_0x746d('0x9'),_0x746d('0xe'),_0x746d('0x12'),_0x746d('0x13'),_0x746d('0x14'),_0x746d('0xf')],'include':[{'model':_0x746d('0x10'),'as':'Variable','attributes':['id','name']}]},{'model':_0x746d('0x11'),'as':'Fields','attributes':['id','type',_0x746d('0xe'),_0x746d('0x15'),_0x746d('0x16'),'customField',_0x746d('0xf')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0x746d('0x17'),'as':_0x746d('0x18'),'attributes':['id',_0x746d('0xc')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
+var _0x50d5=['Fields','nameField','customField','Tags','../../client','getDeskAccounts','Request','GetDeskAccount','name','description','username','password','remoteUri','authType','type','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions','key','keyContent'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x50d5,0x117));var _0x550d=function(_0x4d03b1,_0x3e0c66){_0x4d03b1=_0x4d03b1-0x0;var _0x1d5512=_0x50d5[_0x4d03b1];return _0x1d5512;};'use strict';var client=require(_0x550d('0x0'));exports[_0x550d('0x1')]=function(){return function(_0x1f6097){return client[_0x550d('0x2')](_0x550d('0x3'),{'options':{'raw':![],'attributes':['id',_0x550d('0x4'),_0x550d('0x5'),_0x550d('0x6'),_0x550d('0x7'),_0x550d('0x8'),_0x550d('0x9'),_0x550d('0xa'),'serverUrl'],'include':[{'model':_0x550d('0xb'),'as':_0x550d('0xc'),'attributes':['id',_0x550d('0x4')],'include':[{'model':_0x550d('0xd'),'as':_0x550d('0xe'),'attributes':['id',_0x550d('0xa'),_0x550d('0xf'),_0x550d('0x10')],'include':[{'model':_0x550d('0x11'),'as':_0x550d('0x11'),'attributes':['id','name']}]},{'model':_0x550d('0xd'),'as':_0x550d('0x12'),'attributes':['id','type',_0x550d('0xf'),_0x550d('0x13'),'keyType',_0x550d('0x14'),_0x550d('0x10')],'include':[{'model':_0x550d('0x11'),'as':_0x550d('0x11'),'attributes':['id',_0x550d('0x4')]}]},{'model':_0x550d('0xd'),'as':_0x550d('0x15'),'attributes':['id','type',_0x550d('0xf'),'idField',_0x550d('0x16'),_0x550d('0x17'),'variableName'],'include':[{'model':_0x550d('0x11'),'as':'Variable','attributes':['id',_0x550d('0x4')]}]},{'model':'Tag','as':_0x550d('0x18'),'attributes':['id','name']}]}]},'log':_0x550d('0x3')});};};
\ No newline at end of file
index 042b6a2..9bcdb05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c2=['name','Subjects','content','variableName','Variable','Descriptions','key','keyType','Dynamics365Field','Fields','type','idField','customField','Request','GetDynamics365Account','username','remoteUri','tenantId','serverUrl','description','Dynamics365Configuration','Configurations'];(function(_0x4af062,_0x56e9fb){var _0x5f570d=function(_0x4f1f2e){while(--_0x4f1f2e){_0x4af062['push'](_0x4af062['shift']());}};_0x5f570d(++_0x56e9fb);}(_0x47c2,0x65));var _0x247c=function(_0x5d9987,_0x3c9d0c){_0x5d9987=_0x5d9987-0x0;var _0x4eb5a4=_0x47c2[_0x5d9987];return _0x4eb5a4;};'use strict';var client=require('../../client');exports['getDynamics365Accounts']=function(){return function(_0xc3fef5){return client[_0x247c('0x0')](_0x247c('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x247c('0x2'),'password',_0x247c('0x3'),_0x247c('0x4'),'clientId','clientSecret',_0x247c('0x5'),_0x247c('0x6')],'include':[{'model':_0x247c('0x7'),'as':_0x247c('0x8'),'attributes':['id',_0x247c('0x9'),'ticketType'],'include':[{'model':'Dynamics365Field','as':_0x247c('0xa'),'attributes':['id','type',_0x247c('0xb'),_0x247c('0xc')],'include':[{'model':'Variable','as':_0x247c('0xd'),'attributes':['id','name']}]},{'model':'Dynamics365Field','as':_0x247c('0xe'),'attributes':['id','type','content',_0x247c('0xf'),_0x247c('0x10'),'keyContent',_0x247c('0xc')],'include':[{'model':_0x247c('0xd'),'as':_0x247c('0xd'),'attributes':['id',_0x247c('0x9')]}]},{'model':_0x247c('0x11'),'as':_0x247c('0x12'),'attributes':['id',_0x247c('0x13'),_0x247c('0xb'),_0x247c('0x14'),'nameField',_0x247c('0x15'),_0x247c('0xc')],'include':[{'model':_0x247c('0xd'),'as':_0x247c('0xd'),'attributes':['id',_0x247c('0x9')]}]}]}]},'log':_0x247c('0x1')});};};
\ No newline at end of file
+var _0x308c=['keyType','keyContent','variableName','Fields','idField','nameField','customField','../../client','getDynamics365Accounts','Request','GetDynamics365Account','username','password','remoteUri','clientSecret','serverUrl','description','Configurations','name','ticketType','Dynamics365Field','type','Variable','Descriptions','content','key'];(function(_0x5f234f,_0x51102c){var _0x33c2a4=function(_0x347323){while(--_0x347323){_0x5f234f['push'](_0x5f234f['shift']());}};_0x33c2a4(++_0x51102c);}(_0x308c,0xd7));var _0xc308=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0x308c[_0x2c7618];return _0x5ce3f0;};'use strict';var client=require(_0xc308('0x0'));exports[_0xc308('0x1')]=function(){return function(_0x537464){return client[_0xc308('0x2')](_0xc308('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xc308('0x4'),_0xc308('0x5'),_0xc308('0x6'),'tenantId','clientId',_0xc308('0x7'),_0xc308('0x8'),_0xc308('0x9')],'include':[{'model':'Dynamics365Configuration','as':_0xc308('0xa'),'attributes':['id',_0xc308('0xb'),_0xc308('0xc')],'include':[{'model':_0xc308('0xd'),'as':'Subjects','attributes':['id',_0xc308('0xe'),'content','variableName'],'include':[{'model':_0xc308('0xf'),'as':_0xc308('0xf'),'attributes':['id',_0xc308('0xb')]}]},{'model':'Dynamics365Field','as':_0xc308('0x10'),'attributes':['id','type',_0xc308('0x11'),_0xc308('0x12'),_0xc308('0x13'),_0xc308('0x14'),_0xc308('0x15')],'include':[{'model':_0xc308('0xf'),'as':_0xc308('0xf'),'attributes':['id','name']}]},{'model':'Dynamics365Field','as':_0xc308('0x16'),'attributes':['id','type',_0xc308('0x11'),_0xc308('0x17'),_0xc308('0x18'),_0xc308('0x19'),_0xc308('0x15')],'include':[{'model':_0xc308('0xf'),'as':_0xc308('0xf'),'attributes':['id',_0xc308('0xb')]}]}]}]},'log':_0xc308('0x3')});};};
\ No newline at end of file
index 5efcfd4..038c0e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x515d=['key','keyType','keyContent','Fields','idField','nameField','customField','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','FreshdeskConfiguration','Tag','FreshdeskField','Subjects','type','variableName','Variable','Descriptions','content'];(function(_0x586f08,_0x1bd1ef){var _0x5d9ddb=function(_0x59dc21){while(--_0x59dc21){_0x586f08['push'](_0x586f08['shift']());}};_0x5d9ddb(++_0x1bd1ef);}(_0x515d,0x104));var _0xd515=function(_0x4c4531,_0x3ea416){_0x4c4531=_0x4c4531-0x0;var _0x57fea7=_0x515d[_0x4c4531];return _0x57fea7;};'use strict';var client=require('../../client');exports[_0xd515('0x0')]=function(){return function(_0x28ae67){return client[_0xd515('0x1')](_0xd515('0x2'),{'options':{'raw':![],'attributes':['id',_0xd515('0x3'),_0xd515('0x4'),_0xd515('0x5'),_0xd515('0x6'),'serverUrl'],'include':[{'model':_0xd515('0x7'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0xd515('0x8'),'attributes':['id',_0xd515('0x3')]},{'model':_0xd515('0x9'),'as':_0xd515('0xa'),'attributes':['id',_0xd515('0xb'),'content',_0xd515('0xc')],'include':[{'model':_0xd515('0xd'),'as':_0xd515('0xd'),'attributes':['id',_0xd515('0x3')]}]},{'model':_0xd515('0x9'),'as':_0xd515('0xe'),'attributes':['id','type',_0xd515('0xf'),_0xd515('0x10'),_0xd515('0x11'),_0xd515('0x12'),'variableName'],'include':[{'model':_0xd515('0xd'),'as':_0xd515('0xd'),'attributes':['id',_0xd515('0x3')]}]},{'model':_0xd515('0x9'),'as':_0xd515('0x13'),'attributes':['id',_0xd515('0xb'),_0xd515('0xf'),_0xd515('0x14'),_0xd515('0x15'),_0xd515('0x16'),_0xd515('0xc')],'include':[{'model':_0xd515('0xd'),'as':_0xd515('0xd'),'attributes':['id','name']}]}]}]},'log':_0xd515('0x2')});};};
\ No newline at end of file
+var _0x9780=['keyType','keyContent','Fields','idField','nameField','customField','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','FreshdeskField','Subjects','type','content','variableName','Variable','Descriptions'];(function(_0x2e7653,_0x5ce5af){var _0x492ee8=function(_0x18b5ac){while(--_0x18b5ac){_0x2e7653['push'](_0x2e7653['shift']());}};_0x492ee8(++_0x5ce5af);}(_0x9780,0x1d4));var _0x0978=function(_0x331085,_0x46ef3b){_0x331085=_0x331085-0x0;var _0x1547f4=_0x9780[_0x331085];return _0x1547f4;};'use strict';var client=require('../../client');exports['getFreshdeskAccounts']=function(){return function(_0x1a129d){return client[_0x0978('0x0')](_0x0978('0x1'),{'options':{'raw':![],'attributes':['id',_0x0978('0x2'),_0x0978('0x3'),_0x0978('0x4'),_0x0978('0x5'),_0x0978('0x6')],'include':[{'model':_0x0978('0x7'),'as':_0x0978('0x8'),'attributes':['id',_0x0978('0x2')],'include':[{'model':'Tag','attributes':['id',_0x0978('0x2')]},{'model':_0x0978('0x9'),'as':_0x0978('0xa'),'attributes':['id',_0x0978('0xb'),_0x0978('0xc'),_0x0978('0xd')],'include':[{'model':_0x0978('0xe'),'as':_0x0978('0xe'),'attributes':['id',_0x0978('0x2')]}]},{'model':_0x0978('0x9'),'as':_0x0978('0xf'),'attributes':['id','type',_0x0978('0xc'),'key',_0x0978('0x10'),_0x0978('0x11'),_0x0978('0xd')],'include':[{'model':_0x0978('0xe'),'as':'Variable','attributes':['id',_0x0978('0x2')]}]},{'model':'FreshdeskField','as':_0x0978('0x12'),'attributes':['id',_0x0978('0xb'),_0x0978('0xc'),_0x0978('0x13'),_0x0978('0x14'),_0x0978('0x15'),_0x0978('0xd')],'include':[{'model':_0x0978('0xe'),'as':'Variable','attributes':['id',_0x0978('0x2')]}]}]}]},'log':_0x0978('0x1')});};};
\ No newline at end of file
index f2172e5..ecd90e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe714=['GetFreshsalesAccount','name','apiKey','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','content','variableName','Variable','Descriptions','type','key','keyType','keyContent','GetFreshsalesccount','../../client','Request'];(function(_0x45cb89,_0x99520e){var _0x5948c1=function(_0x4c81c3){while(--_0x4c81c3){_0x45cb89['push'](_0x45cb89['shift']());}};_0x5948c1(++_0x99520e);}(_0xe714,0xe2));var _0x4e71=function(_0x49b2c3,_0x1b3f10){_0x49b2c3=_0x49b2c3-0x0;var _0x219683=_0xe714[_0x49b2c3];return _0x219683;};'use strict';var client=require(_0x4e71('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x36da97){return client[_0x4e71('0x1')](_0x4e71('0x2'),{'options':{'raw':![],'attributes':['id',_0x4e71('0x3'),'username',_0x4e71('0x4'),'remoteUri',_0x4e71('0x5')],'include':[{'model':_0x4e71('0x6'),'as':_0x4e71('0x7'),'attributes':['id',_0x4e71('0x3')],'include':[{'model':_0x4e71('0x8'),'as':_0x4e71('0x9'),'attributes':['id','type',_0x4e71('0xa'),_0x4e71('0xb')],'include':[{'model':_0x4e71('0xc'),'as':'Variable','attributes':['id',_0x4e71('0x3')]}]},{'model':'FreshsalesField','as':_0x4e71('0xd'),'attributes':['id',_0x4e71('0xe'),_0x4e71('0xa'),_0x4e71('0xf'),_0x4e71('0x10'),_0x4e71('0x11'),_0x4e71('0xb')],'include':[{'model':_0x4e71('0xc'),'as':'Variable','attributes':['id',_0x4e71('0x3')]}]}]}]},'log':_0x4e71('0x12')});};};
\ No newline at end of file
+var _0xdf98=['type','content','variableName','Descriptions','key','keyType','keyContent','Variable','GetFreshsalesccount','../../client','name','username','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField'];(function(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0xdf98,0xcf));var _0x8df9=function(_0x53d3b0,_0x62aa42){_0x53d3b0=_0x53d3b0-0x0;var _0x44f608=_0xdf98[_0x53d3b0];return _0x44f608;};'use strict';var client=require(_0x8df9('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x1f9abd){return client['Request']('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0x8df9('0x1'),_0x8df9('0x2'),_0x8df9('0x3'),_0x8df9('0x4'),_0x8df9('0x5')],'include':[{'model':_0x8df9('0x6'),'as':_0x8df9('0x7'),'attributes':['id',_0x8df9('0x1')],'include':[{'model':_0x8df9('0x8'),'as':'Subjects','attributes':['id',_0x8df9('0x9'),_0x8df9('0xa'),_0x8df9('0xb')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x8df9('0x1')]}]},{'model':'FreshsalesField','as':_0x8df9('0xc'),'attributes':['id',_0x8df9('0x9'),_0x8df9('0xa'),_0x8df9('0xd'),_0x8df9('0xe'),_0x8df9('0xf'),_0x8df9('0xb')],'include':[{'model':_0x8df9('0x10'),'as':'Variable','attributes':['id',_0x8df9('0x1')]}]}]}]},'log':_0x8df9('0x11')});};};
\ No newline at end of file
index 18c708d..bd27d95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceed=['GetSalesforceAccount','name','username','password','remoteUri','clientId','clientSecret','securityToken','type','SalesforceConfiguration','Configurations','moduleSearch','ticketType','leadId','additionalSearchContact','additionalSearchLead','SalesforceField','Variable','../../client','Request'];(function(_0xcfb0a5,_0x488528){var _0x422714=function(_0x329fcc){while(--_0x329fcc){_0xcfb0a5['push'](_0xcfb0a5['shift']());}};_0x422714(++_0x488528);}(_0xceed,0x76));var _0xdcee=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0xceed[_0x164eca];return _0x2ce562;};'use strict';var client=require(_0xdcee('0x0'));exports['getSalesforceAccounts']=function(){return function(_0x3957d5){return client[_0xdcee('0x1')](_0xdcee('0x2'),{'options':{'raw':![],'attributes':['id',_0xdcee('0x3'),_0xdcee('0x4'),_0xdcee('0x5'),_0xdcee('0x6'),_0xdcee('0x7'),_0xdcee('0x8'),_0xdcee('0x9'),'serverUrl',_0xdcee('0xa')],'include':[{'model':_0xdcee('0xb'),'as':_0xdcee('0xc'),'attributes':['id','name',_0xdcee('0xd'),'moduleCreate',_0xdcee('0xe'),_0xdcee('0xf'),'additionalSearchAccount',_0xdcee('0x10'),_0xdcee('0x11')],'include':[{'model':_0xdcee('0x12'),'as':'Subjects','include':[{'model':'Variable','as':_0xdcee('0x13'),'attributes':['id',_0xdcee('0x3')]}]},{'model':_0xdcee('0x12'),'as':'Descriptions','include':[{'model':_0xdcee('0x13'),'as':_0xdcee('0x13'),'attributes':['id',_0xdcee('0x3')]}]},{'model':'SalesforceField','as':'Fields','include':[{'model':_0xdcee('0x13'),'as':'Variable','attributes':['id',_0xdcee('0x3')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0x7d37=['getSalesforceAccounts','GetSalesforceAccount','name','username','remoteUri','clientId','securityToken','type','Configurations','ticketType','leadId','additionalSearchContact','SalesforceField','Variable','Descriptions','Fields','../../client'];(function(_0x4c760f,_0x1454a8){var _0x41c06f=function(_0x23fcec){while(--_0x23fcec){_0x4c760f['push'](_0x4c760f['shift']());}};_0x41c06f(++_0x1454a8);}(_0x7d37,0x1db));var _0x77d3=function(_0xac0956,_0x2cd81a){_0xac0956=_0xac0956-0x0;var _0x377c49=_0x7d37[_0xac0956];return _0x377c49;};'use strict';var client=require(_0x77d3('0x0'));exports[_0x77d3('0x1')]=function(){return function(_0x2821e5){return client['Request'](_0x77d3('0x2'),{'options':{'raw':![],'attributes':['id',_0x77d3('0x3'),_0x77d3('0x4'),'password',_0x77d3('0x5'),_0x77d3('0x6'),'clientSecret',_0x77d3('0x7'),'serverUrl',_0x77d3('0x8')],'include':[{'model':'SalesforceConfiguration','as':_0x77d3('0x9'),'attributes':['id',_0x77d3('0x3'),'moduleSearch','moduleCreate',_0x77d3('0xa'),_0x77d3('0xb'),'additionalSearchAccount',_0x77d3('0xc'),'additionalSearchLead'],'include':[{'model':_0x77d3('0xd'),'as':'Subjects','include':[{'model':_0x77d3('0xe'),'as':'Variable','attributes':['id',_0x77d3('0x3')]}]},{'model':_0x77d3('0xd'),'as':_0x77d3('0xf'),'include':[{'model':_0x77d3('0xe'),'as':_0x77d3('0xe'),'attributes':['id',_0x77d3('0x3')]}]},{'model':_0x77d3('0xd'),'as':_0x77d3('0x10'),'include':[{'model':_0x77d3('0xe'),'as':'Variable','attributes':['id',_0x77d3('0x3')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
index 7ffaf0f..25b8a8f 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(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x524e,0x15e));var _0xe524=function(_0x34bd83,_0x25497e){_0x34bd83=_0x34bd83-0x0;var _0x54f2c3=_0x524e[_0x34bd83];return _0x54f2c3;};'use strict';var client=require('../../client');exports['getServicenowAccounts']=function(){return function(_0x353d8a){return client[_0xe524('0x0')](_0xe524('0x1'),{'options':{'raw':![],'attributes':['id',_0xe524('0x2'),_0xe524('0x3'),_0xe524('0x4'),_0xe524('0x5'),_0xe524('0x6'),_0xe524('0x7'),_0xe524('0x8')],'include':[{'model':'ServicenowConfiguration','as':_0xe524('0x9'),'attributes':['id',_0xe524('0x2')],'include':[{'model':_0xe524('0xa'),'as':'Subjects','attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]},{'model':_0xe524('0xa'),'as':_0xe524('0xf'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x10'),_0xe524('0x11'),_0xe524('0x12'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id','name']}]},{'model':'ServicenowField','as':_0xe524('0x13'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x14'),_0xe524('0x15'),'customField',_0xe524('0xd')],'include':[{'model':'Variable','as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
+var _0x4137=['Request','GetServicenowAccount','name','description','username','password','email','remoteUri','serverUrl','Configurations','ServicenowField','Subjects','content','variableName','Variable','Descriptions','type','key','keyType','Fields','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts'];(function(_0x4effcf,_0x27434b){var _0x55dd2f=function(_0x2516fd){while(--_0x2516fd){_0x4effcf['push'](_0x4effcf['shift']());}};_0x55dd2f(++_0x27434b);}(_0x4137,0xf8));var _0x7413=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x4137[_0x178e48];return _0x440d7e;};'use strict';var client=require(_0x7413('0x0'));exports[_0x7413('0x1')]=function(){return function(_0x370399){return client[_0x7413('0x2')](_0x7413('0x3'),{'options':{'raw':![],'attributes':['id',_0x7413('0x4'),_0x7413('0x5'),_0x7413('0x6'),_0x7413('0x7'),_0x7413('0x8'),_0x7413('0x9'),_0x7413('0xa')],'include':[{'model':'ServicenowConfiguration','as':_0x7413('0xb'),'attributes':['id',_0x7413('0x4')],'include':[{'model':_0x7413('0xc'),'as':_0x7413('0xd'),'attributes':['id','type',_0x7413('0xe'),_0x7413('0xf')],'include':[{'model':'Variable','as':_0x7413('0x10'),'attributes':['id',_0x7413('0x4')]}]},{'model':'ServicenowField','as':_0x7413('0x11'),'attributes':['id',_0x7413('0x12'),_0x7413('0xe'),_0x7413('0x13'),_0x7413('0x14'),'keyContent',_0x7413('0xf')],'include':[{'model':_0x7413('0x10'),'as':'Variable','attributes':['id',_0x7413('0x4')]}]},{'model':_0x7413('0xc'),'as':_0x7413('0x15'),'attributes':['id','type','content','idField',_0x7413('0x16'),_0x7413('0x17'),'variableName'],'include':[{'model':_0x7413('0x10'),'as':_0x7413('0x10'),'attributes':['id','name']}]}]}]},'log':_0x7413('0x18')});};};
\ No newline at end of file
index 08bc471..09823e3 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(_0x1d558c,_0x1e497c){var _0x15767d=function(_0x26326d){while(--_0x26326d){_0x1d558c['push'](_0x1d558c['shift']());}};_0x15767d(++_0x1e497c);}(_0x14a0,0x8e));var _0x014a=function(_0x11d161,_0x34e5b8){_0x11d161=_0x11d161-0x0;var _0x17eaec=_0x14a0[_0x11d161];return _0x17eaec;};'use strict';var client=require('../../client');exports[_0x014a('0x0')]=function(){return function(_0x451138){return client[_0x014a('0x1')](_0x014a('0x2'),{'options':{'raw':![],'attributes':['id',_0x014a('0x3'),_0x014a('0x4'),_0x014a('0x5'),'remoteUri','serverUrl'],'include':[{'model':_0x014a('0x6'),'as':_0x014a('0x7'),'attributes':['id',_0x014a('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x014a('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id','type','content',_0x014a('0xb'),'keyType',_0x014a('0xc'),_0x014a('0xa')],'include':[{'model':'Variable','as':_0x014a('0xd'),'attributes':['id',_0x014a('0x3')]}]},{'model':_0x014a('0xe'),'as':_0x014a('0xf'),'attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0x10'),_0x014a('0x11'),_0x014a('0x12'),_0x014a('0xa')],'include':[{'model':_0x014a('0xd'),'as':_0x014a('0xd'),'attributes':['id','name']}]}]}]},'log':_0x014a('0x2')});};};
\ No newline at end of file
+var _0xadb5=['idField','nameField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','password','remoteUri','serverUrl','Configurations','SugarcrmField','Subjects','type','content','variableName','Variable','Descriptions','keyContent','Fields'];(function(_0x5c7dfa,_0x47cad7){var _0x102bb8=function(_0x73f55f){while(--_0x73f55f){_0x5c7dfa['push'](_0x5c7dfa['shift']());}};_0x102bb8(++_0x47cad7);}(_0xadb5,0xad));var _0x5adb=function(_0x125903,_0x30879b){_0x125903=_0x125903-0x0;var _0x4f127e=_0xadb5[_0x125903];return _0x4f127e;};'use strict';var client=require('../../client');exports[_0x5adb('0x0')]=function(){return function(_0x49fc17){return client[_0x5adb('0x1')](_0x5adb('0x2'),{'options':{'raw':![],'attributes':['id',_0x5adb('0x3'),'username',_0x5adb('0x4'),_0x5adb('0x5'),_0x5adb('0x6')],'include':[{'model':'SugarcrmConfiguration','as':_0x5adb('0x7'),'attributes':['id',_0x5adb('0x3')],'include':[{'model':_0x5adb('0x8'),'as':_0x5adb('0x9'),'attributes':['id',_0x5adb('0xa'),_0x5adb('0xb'),_0x5adb('0xc')],'include':[{'model':_0x5adb('0xd'),'as':_0x5adb('0xd'),'attributes':['id',_0x5adb('0x3')]}]},{'model':_0x5adb('0x8'),'as':_0x5adb('0xe'),'attributes':['id',_0x5adb('0xa'),_0x5adb('0xb'),'key','keyType',_0x5adb('0xf'),_0x5adb('0xc')],'include':[{'model':_0x5adb('0xd'),'as':'Variable','attributes':['id',_0x5adb('0x3')]}]},{'model':'SugarcrmField','as':_0x5adb('0x10'),'attributes':['id','type',_0x5adb('0xb'),_0x5adb('0x11'),_0x5adb('0x12'),'customField',_0x5adb('0xc')],'include':[{'model':_0x5adb('0xd'),'as':_0x5adb('0xd'),'attributes':['id','name']}]}]}]},'log':_0x5adb('0x2')});};};
\ No newline at end of file
index 32c4813..08102f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3bf=['serverUrl','VtigerConfiguration','Configurations','name','Subjects','type','content','variableName','Variable','VtigerField','Descriptions','keyContent','Fields','idField','nameField','customField','../../client','getVtigerAccounts','Request','GetVtigerAccount','username','accessKey'];(function(_0x837dad,_0x1d9098){var _0x1d62d3=function(_0x40b7c1){while(--_0x40b7c1){_0x837dad['push'](_0x837dad['shift']());}};_0x1d62d3(++_0x1d9098);}(_0xf3bf,0x19c));var _0xff3b=function(_0x5ee4c8,_0x311023){_0x5ee4c8=_0x5ee4c8-0x0;var _0x4a8fa9=_0xf3bf[_0x5ee4c8];return _0x4a8fa9;};'use strict';var client=require(_0xff3b('0x0'));exports[_0xff3b('0x1')]=function(){return function(_0x4c93af){return client[_0xff3b('0x2')](_0xff3b('0x3'),{'options':{'raw':![],'attributes':['id','name','description',_0xff3b('0x4'),_0xff3b('0x5'),'remoteUri',_0xff3b('0x6')],'include':[{'model':_0xff3b('0x7'),'as':_0xff3b('0x8'),'attributes':['id',_0xff3b('0x9')],'include':[{'model':'VtigerField','as':_0xff3b('0xa'),'attributes':['id',_0xff3b('0xb'),_0xff3b('0xc'),_0xff3b('0xd')],'include':[{'model':_0xff3b('0xe'),'as':_0xff3b('0xe'),'attributes':['id',_0xff3b('0x9')]}]},{'model':_0xff3b('0xf'),'as':_0xff3b('0x10'),'attributes':['id',_0xff3b('0xb'),_0xff3b('0xc'),'key','keyType',_0xff3b('0x11'),_0xff3b('0xd')],'include':[{'model':_0xff3b('0xe'),'as':_0xff3b('0xe'),'attributes':['id',_0xff3b('0x9')]}]},{'model':_0xff3b('0xf'),'as':_0xff3b('0x12'),'attributes':['id','type',_0xff3b('0xc'),_0xff3b('0x13'),_0xff3b('0x14'),_0xff3b('0x15'),_0xff3b('0xd')],'include':[{'model':_0xff3b('0xe'),'as':_0xff3b('0xe'),'attributes':['id',_0xff3b('0x9')]}]}]}]},'log':_0xff3b('0x3')});};};
\ No newline at end of file
+var _0x738b=['Subjects','type','variableName','Variable','VtigerField','Descriptions','keyType','nameField','../../client','getVtigerAccounts','GetVtigerAccount','name','description','username','accessKey','serverUrl','Configurations'];(function(_0x28c76c,_0x73d02e){var _0x576c3d=function(_0x1a1b08){while(--_0x1a1b08){_0x28c76c['push'](_0x28c76c['shift']());}};_0x576c3d(++_0x73d02e);}(_0x738b,0xc3));var _0xb738=function(_0x4808b4,_0x2540a8){_0x4808b4=_0x4808b4-0x0;var _0x328547=_0x738b[_0x4808b4];return _0x328547;};'use strict';var client=require(_0xb738('0x0'));exports[_0xb738('0x1')]=function(){return function(_0x398988){return client['Request'](_0xb738('0x2'),{'options':{'raw':![],'attributes':['id',_0xb738('0x3'),_0xb738('0x4'),_0xb738('0x5'),_0xb738('0x6'),'remoteUri',_0xb738('0x7')],'include':[{'model':'VtigerConfiguration','as':_0xb738('0x8'),'attributes':['id',_0xb738('0x3')],'include':[{'model':'VtigerField','as':_0xb738('0x9'),'attributes':['id',_0xb738('0xa'),'content',_0xb738('0xb')],'include':[{'model':_0xb738('0xc'),'as':_0xb738('0xc'),'attributes':['id',_0xb738('0x3')]}]},{'model':_0xb738('0xd'),'as':_0xb738('0xe'),'attributes':['id',_0xb738('0xa'),'content','key',_0xb738('0xf'),'keyContent',_0xb738('0xb')],'include':[{'model':_0xb738('0xc'),'as':_0xb738('0xc'),'attributes':['id',_0xb738('0x3')]}]},{'model':_0xb738('0xd'),'as':'Fields','attributes':['id','type','content','idField',_0xb738('0x10'),'customField','variableName'],'include':[{'model':_0xb738('0xc'),'as':_0xb738('0xc'),'attributes':['id','name']}]}]}]},'log':_0xb738('0x2')});};};
\ No newline at end of file
index a518a6e..1d3c6e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb353=['nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','token','remoteUri','authType','serverUrl','Configurations','Tag','ZendeskField','Subjects','content','variableName','Variable','Descriptions','type','key','keyContent','Fields'];(function(_0x4f11cb,_0x14e174){var _0x491488=function(_0x2904a9){while(--_0x2904a9){_0x4f11cb['push'](_0x4f11cb['shift']());}};_0x491488(++_0x14e174);}(_0xb353,0x7a));var _0x3b35=function(_0x5582d4,_0x2ea415){_0x5582d4=_0x5582d4-0x0;var _0x2bf5b2=_0xb353[_0x5582d4];return _0x2bf5b2;};'use strict';var client=require(_0x3b35('0x0'));exports[_0x3b35('0x1')]=function(){return function(_0x50081f){return client[_0x3b35('0x2')](_0x3b35('0x3'),{'options':{'raw':![],'attributes':['id',_0x3b35('0x4'),_0x3b35('0x5'),'password',_0x3b35('0x6'),_0x3b35('0x7'),_0x3b35('0x8'),_0x3b35('0x9'),'type'],'include':[{'model':'ZendeskConfiguration','as':_0x3b35('0xa'),'attributes':['id','name'],'include':[{'model':_0x3b35('0xb'),'attributes':['id',_0x3b35('0x4')]},{'model':_0x3b35('0xc'),'as':_0x3b35('0xd'),'attributes':['id','type',_0x3b35('0xe'),_0x3b35('0xf')],'include':[{'model':_0x3b35('0x10'),'as':_0x3b35('0x10'),'attributes':['id','name']}]},{'model':_0x3b35('0xc'),'as':_0x3b35('0x11'),'attributes':['id',_0x3b35('0x12'),_0x3b35('0xe'),_0x3b35('0x13'),'keyType',_0x3b35('0x14'),_0x3b35('0xf')],'include':[{'model':_0x3b35('0x10'),'as':'Variable','attributes':['id',_0x3b35('0x4')]}]},{'model':_0x3b35('0xc'),'as':_0x3b35('0x15'),'attributes':['id',_0x3b35('0x12'),_0x3b35('0xe'),'idField',_0x3b35('0x16'),_0x3b35('0x17'),_0x3b35('0xf')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x3b35('0x4')]}]}]}]},'log':_0x3b35('0x3')});};};
\ No newline at end of file
+var _0x510b=['ZendeskField','Descriptions','key','keyType','keyContent','Fields','content','nameField','customField','../../client','Request','GetZendeskAccount','name','username','password','remoteUri','serverUrl','type','Configurations','Tag','Subjects','variableName','Variable'];(function(_0x38b2d9,_0x19fd42){var _0x23a3e1=function(_0xd8192f){while(--_0xd8192f){_0x38b2d9['push'](_0x38b2d9['shift']());}};_0x23a3e1(++_0x19fd42);}(_0x510b,0x65));var _0xb510=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x510b[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0xb510('0x0'));exports['getZendeskAccounts']=function(){return function(_0x2606ce){return client[_0xb510('0x1')](_0xb510('0x2'),{'options':{'raw':![],'attributes':['id',_0xb510('0x3'),_0xb510('0x4'),_0xb510('0x5'),'token',_0xb510('0x6'),'authType',_0xb510('0x7'),_0xb510('0x8')],'include':[{'model':'ZendeskConfiguration','as':_0xb510('0x9'),'attributes':['id',_0xb510('0x3')],'include':[{'model':_0xb510('0xa'),'attributes':['id',_0xb510('0x3')]},{'model':'ZendeskField','as':_0xb510('0xb'),'attributes':['id',_0xb510('0x8'),'content',_0xb510('0xc')],'include':[{'model':_0xb510('0xd'),'as':'Variable','attributes':['id',_0xb510('0x3')]}]},{'model':_0xb510('0xe'),'as':_0xb510('0xf'),'attributes':['id','type','content',_0xb510('0x10'),_0xb510('0x11'),_0xb510('0x12'),'variableName'],'include':[{'model':_0xb510('0xd'),'as':_0xb510('0xd'),'attributes':['id','name']}]},{'model':_0xb510('0xe'),'as':_0xb510('0x13'),'attributes':['id','type',_0xb510('0x14'),'idField',_0xb510('0x15'),_0xb510('0x16'),_0xb510('0xc')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xb510('0x3')]}]}]}]},'log':'GetZendeskAccount'});};};
\ No newline at end of file
index 01d0cc9..64c6197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aac=['getZohoAccounts','Request','GetZohoAccount','name','description','host','zone','clientId','serverUrl','code','refreshToken','ZohoConfiguration','moduleCreate','moduleSearch','ZohoField','type','content','variableName','Variable','Descriptions','key','keyContent','Fields','idField','nameField','customField','../../client'];(function(_0x1041dc,_0x5b7bbd){var _0x5eea8a=function(_0x5cf4df){while(--_0x5cf4df){_0x1041dc['push'](_0x1041dc['shift']());}};_0x5eea8a(++_0x5b7bbd);}(_0x8aac,0xd7));var _0xc8aa=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8aac[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xc8aa('0x0'));exports[_0xc8aa('0x1')]=function(){return function(_0x4bea00){return client[_0xc8aa('0x2')](_0xc8aa('0x3'),{'options':{'raw':![],'attributes':['id',_0xc8aa('0x4'),_0xc8aa('0x5'),_0xc8aa('0x6'),_0xc8aa('0x7'),_0xc8aa('0x8'),'clientSecret',_0xc8aa('0x9'),_0xc8aa('0xa'),_0xc8aa('0xb')],'include':[{'model':_0xc8aa('0xc'),'as':'Configurations','attributes':['id',_0xc8aa('0x4'),_0xc8aa('0xd'),_0xc8aa('0xe'),_0xc8aa('0x5')],'include':[{'model':_0xc8aa('0xf'),'as':'Subjects','attributes':['id',_0xc8aa('0x10'),_0xc8aa('0x11'),_0xc8aa('0x12')],'include':[{'model':_0xc8aa('0x13'),'as':_0xc8aa('0x13'),'attributes':['id','name']}]},{'model':'ZohoField','as':_0xc8aa('0x14'),'attributes':['id',_0xc8aa('0x10'),_0xc8aa('0x11'),_0xc8aa('0x15'),'keyType',_0xc8aa('0x16'),_0xc8aa('0x12')],'include':[{'model':_0xc8aa('0x13'),'as':_0xc8aa('0x13'),'attributes':['id',_0xc8aa('0x4')]}]},{'model':_0xc8aa('0xf'),'as':_0xc8aa('0x17'),'attributes':['id',_0xc8aa('0x10'),_0xc8aa('0x11'),_0xc8aa('0x18'),_0xc8aa('0x19'),_0xc8aa('0x1a'),'variableName'],'include':[{'model':'Variable','as':_0xc8aa('0x13'),'attributes':['id','name']}]}]}]},'log':_0xc8aa('0x3')});};};
\ No newline at end of file
+var _0x8349=['clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','name','moduleCreate','moduleSearch','ZohoField','Subjects','content','Variable','Descriptions','type','key','keyContent','variableName','Fields','nameField','../../client','getZohoAccounts','Request','GetZohoAccount','description','host','zone','clientId'];(function(_0x4b4f24,_0x5654a8){var _0x1c13d4=function(_0x4940bf){while(--_0x4940bf){_0x4b4f24['push'](_0x4b4f24['shift']());}};_0x1c13d4(++_0x5654a8);}(_0x8349,0x148));var _0x9834=function(_0x4d4696,_0x1ab3a2){_0x4d4696=_0x4d4696-0x0;var _0x455048=_0x8349[_0x4d4696];return _0x455048;};'use strict';var client=require(_0x9834('0x0'));exports[_0x9834('0x1')]=function(){return function(_0x4aa6f4){return client[_0x9834('0x2')](_0x9834('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x9834('0x4'),_0x9834('0x5'),_0x9834('0x6'),_0x9834('0x7'),_0x9834('0x8'),_0x9834('0x9'),_0x9834('0xa'),_0x9834('0xb')],'include':[{'model':_0x9834('0xc'),'as':_0x9834('0xd'),'attributes':['id',_0x9834('0xe'),_0x9834('0xf'),_0x9834('0x10'),_0x9834('0x4')],'include':[{'model':_0x9834('0x11'),'as':_0x9834('0x12'),'attributes':['id','type',_0x9834('0x13'),'variableName'],'include':[{'model':_0x9834('0x14'),'as':_0x9834('0x14'),'attributes':['id',_0x9834('0xe')]}]},{'model':_0x9834('0x11'),'as':_0x9834('0x15'),'attributes':['id',_0x9834('0x16'),_0x9834('0x13'),_0x9834('0x17'),'keyType',_0x9834('0x18'),_0x9834('0x19')],'include':[{'model':_0x9834('0x14'),'as':_0x9834('0x14'),'attributes':['id',_0x9834('0xe')]}]},{'model':_0x9834('0x11'),'as':_0x9834('0x1a'),'attributes':['id','type',_0x9834('0x13'),'idField',_0x9834('0x1b'),'customField',_0x9834('0x19')],'include':[{'model':_0x9834('0x14'),'as':'Variable','attributes':['id',_0x9834('0xe')]}]}]}]},'log':_0x9834('0x3')});};};
\ No newline at end of file
index 4af2ce7..0780b56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6bd=['diff','seconds','inbound','calleridnum','exten','queue','agent','accountcode','uniqueid','voice','membername','starttime','endtime','outbound','dialstring','lodash','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','lastAssignedTo','isNil','format','SIP/%s','interface','TALKING','queuecallerleaveAt'];(function(_0x1eff1a,_0x5d05a9){var _0x478b4b=function(_0x480e04){while(--_0x480e04){_0x1eff1a['push'](_0x1eff1a['shift']());}};_0x478b4b(++_0x5d05a9);}(_0xd6bd,0xda));var _0xdd6b=function(_0x3ab987,_0x3af3a4){_0x3ab987=_0x3ab987-0x0;var _0x32ca1a=_0xd6bd[_0x3ab987];return _0x32ca1a;};'use strict';var moment=require('moment');var _=require(_0xdd6b('0x0'));var util=require('util');var client=require(_0xdd6b('0x1'));exports[_0xdd6b('0x2')]=function(_0x4558bb){var _0xc4225f=_0x4558bb[_0xdd6b('0x3')]||_0x4558bb[_0xdd6b('0x4')];return client[_0xdd6b('0x5')](_0xdd6b('0x6'),{'body':{'channel':'voice','membername':_0x4558bb[_0xdd6b('0x7')],'interface':_[_0xdd6b('0x8')](_0x4558bb['interface'])?util[_0xdd6b('0x9')](_0xdd6b('0xa'),_0x4558bb['lastAssignedTo']):_0x4558bb[_0xdd6b('0xb')],'type':_0xdd6b('0xc'),'enterAt':_0x4558bb[_0xdd6b('0xd')],'exitAt':_0xc4225f,'duration':moment(_0xc4225f)[_0xdd6b('0xe')](_0x4558bb[_0xdd6b('0xd')],_0xdd6b('0xf')),'data1':_0xdd6b('0x10'),'data2':_0x4558bb[_0xdd6b('0x11')],'data3':_0x4558bb[_0xdd6b('0x12')],'data4':null,'data5':_0x4558bb[_0xdd6b('0x13')],'role':_0xdd6b('0x14'),'internal':_0x4558bb['accountcode']?_['toNumber'](_0x4558bb[_0xdd6b('0x15')]):undefined,'uniqueid':_0x4558bb[_0xdd6b('0x16')]},'log':_0xdd6b('0x6')});};exports['voiceDialReport']=function(_0x4d963c){return client[_0xdd6b('0x5')](_0xdd6b('0x6'),{'body':{'channel':_0xdd6b('0x17'),'membername':_0x4d963c[_0xdd6b('0x18')],'interface':_0x4d963c['interface'],'type':_0xdd6b('0xc'),'enterAt':_0x4d963c[_0xdd6b('0x19')],'exitAt':_0x4d963c[_0xdd6b('0x1a')],'duration':moment(_0x4d963c[_0xdd6b('0x1a')])[_0xdd6b('0xe')](_0x4d963c[_0xdd6b('0x19')],_0xdd6b('0xf'))>=0x0?moment(_0x4d963c[_0xdd6b('0x1a')])['diff'](_0x4d963c[_0xdd6b('0x19')],_0xdd6b('0xf')):null,'data1':_0xdd6b('0x1b'),'data2':_0x4d963c[_0xdd6b('0x15')],'data3':_0x4d963c[_0xdd6b('0x12')],'data4':_0x4d963c[_0xdd6b('0x1c')]||null,'role':'agent','internal':_0x4d963c['accountcode']?_['toNumber'](_0x4d963c[_0xdd6b('0x15')]):undefined,'uniqueid':_0x4d963c[_0xdd6b('0x16')]},'log':_0xdd6b('0x6')});};
\ No newline at end of file
+var _0x248d=['voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','diff','seconds','inbound','exten','queue','agent','accountcode','voiceDialReport','CreateMemberReport','membername','endtime','starttime','dialstring','toNumber','uniqueid','moment','lodash','util','voiceQueueReport','queuecallerexitAt','Request'];(function(_0x38f4ed,_0x503ad6){var _0x1b7fa0=function(_0x1977cb){while(--_0x1977cb){_0x38f4ed['push'](_0x38f4ed['shift']());}};_0x1b7fa0(++_0x503ad6);}(_0x248d,0x1ad));var _0xd248=function(_0x447cb3,_0x52026e){_0x447cb3=_0x447cb3-0x0;var _0x18fb7a=_0x248d[_0x447cb3];return _0x18fb7a;};'use strict';var moment=require(_0xd248('0x0'));var _=require(_0xd248('0x1'));var util=require(_0xd248('0x2'));var client=require('../client');exports[_0xd248('0x3')]=function(_0x3ee9b9){var _0x1d34e2=_0x3ee9b9['queuecallercompleteAt']||_0x3ee9b9[_0xd248('0x4')];return client[_0xd248('0x5')]('CreateMemberReport',{'body':{'channel':_0xd248('0x6'),'membername':_0x3ee9b9[_0xd248('0x7')],'interface':_[_0xd248('0x8')](_0x3ee9b9[_0xd248('0x9')])?util[_0xd248('0xa')](_0xd248('0xb'),_0x3ee9b9[_0xd248('0x7')]):_0x3ee9b9[_0xd248('0x9')],'type':_0xd248('0xc'),'enterAt':_0x3ee9b9[_0xd248('0xd')],'exitAt':_0x1d34e2,'duration':moment(_0x1d34e2)[_0xd248('0xe')](_0x3ee9b9[_0xd248('0xd')],_0xd248('0xf')),'data1':_0xd248('0x10'),'data2':_0x3ee9b9['calleridnum'],'data3':_0x3ee9b9[_0xd248('0x11')],'data4':null,'data5':_0x3ee9b9[_0xd248('0x12')],'role':_0xd248('0x13'),'internal':_0x3ee9b9[_0xd248('0x14')]?_['toNumber'](_0x3ee9b9[_0xd248('0x14')]):undefined,'uniqueid':_0x3ee9b9['uniqueid']},'log':'CreateMemberReport'});};exports[_0xd248('0x15')]=function(_0x559e51){return client[_0xd248('0x5')](_0xd248('0x16'),{'body':{'channel':_0xd248('0x6'),'membername':_0x559e51[_0xd248('0x17')],'interface':_0x559e51['interface'],'type':_0xd248('0xc'),'enterAt':_0x559e51['starttime'],'exitAt':_0x559e51[_0xd248('0x18')],'duration':moment(_0x559e51[_0xd248('0x18')])[_0xd248('0xe')](_0x559e51[_0xd248('0x19')],_0xd248('0xf'))>=0x0?moment(_0x559e51[_0xd248('0x18')])[_0xd248('0xe')](_0x559e51[_0xd248('0x19')],'seconds'):null,'data1':'outbound','data2':_0x559e51[_0xd248('0x14')],'data3':_0x559e51[_0xd248('0x11')],'data4':_0x559e51[_0xd248('0x1a')]||null,'role':_0xd248('0x13'),'internal':_0x559e51[_0xd248('0x14')]?_[_0xd248('0x1b')](_0x559e51['accountcode']):undefined,'uniqueid':_0x559e51[_0xd248('0x1c')]},'log':'CreateMemberReport'});};
\ No newline at end of file
index a6361b2..c492606 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f88=['getSettings','Request','ShowSetting','stopRecordingOnTransfer','GetSettings','../client'];(function(_0x35a99b,_0x119351){var _0x29f08d=function(_0x48777b){while(--_0x48777b){_0x35a99b['push'](_0x35a99b['shift']());}};_0x29f08d(++_0x119351);}(_0x0f88,0x1d9));var _0x80f8=function(_0x108de9,_0x59c896){_0x108de9=_0x108de9-0x0;var _0x3038af=_0x0f88[_0x108de9];return _0x3038af;};'use strict';var client=require(_0x80f8('0x0'));exports[_0x80f8('0x1')]=function(){return client[_0x80f8('0x2')](_0x80f8('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x80f8('0x4')]},'log':_0x80f8('0x5')});};
\ No newline at end of file
+var _0xc99a=['Request','ShowSetting','stopRecordingOnTransfer','GetSettings','../client','getSettings'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc99a,0x7c));var _0xac99=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc99a[_0x321bb2];return _0x9c12ed;};'use strict';var client=require(_0xac99('0x0'));exports[_0xac99('0x1')]=function(){return client[_0xac99('0x2')](_0xac99('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xac99('0x4')]},'log':_0xac99('0x5')});};
\ No newline at end of file
index 15d94e7..c133c45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9443=['GetTemplate','name','html','../client','getTemplates','Request'];(function(_0x338f73,_0x1945c8){var _0x163fdf=function(_0x4cd033){while(--_0x4cd033){_0x338f73['push'](_0x338f73['shift']());}};_0x163fdf(++_0x1945c8);}(_0x9443,0xc3));var _0x3944=function(_0xf44d98,_0x12a472){_0xf44d98=_0xf44d98-0x0;var _0x5ebb04=_0x9443[_0xf44d98];return _0x5ebb04;};'use strict';var client=require(_0x3944('0x0'));exports[_0x3944('0x1')]=function(_0x4926cb){return function(_0x5c74e0){return client[_0x3944('0x2')](_0x3944('0x3'),{'options':{'raw':!![],'attributes':['id',_0x3944('0x4'),_0x3944('0x5')]},'log':_0x3944('0x3')});};};
\ No newline at end of file
+var _0xd33a=['Request','name','GetTemplate'];(function(_0x5f1f12,_0x16fe4c){var _0x239dcb=function(_0x44e68e){while(--_0x44e68e){_0x5f1f12['push'](_0x5f1f12['shift']());}};_0x239dcb(++_0x16fe4c);}(_0xd33a,0x123));var _0xad33=function(_0xb0ef2b,_0x477bf9){_0xb0ef2b=_0xb0ef2b-0x0;var _0xc7b097=_0xd33a[_0xb0ef2b];return _0xc7b097;};'use strict';var client=require('../client');exports['getTemplates']=function(_0x5723a9){return function(_0x455135){return client[_0xad33('0x0')]('GetTemplate',{'options':{'raw':!![],'attributes':['id',_0xad33('0x1'),'html']},'log':_0xad33('0x2')});};};
\ No newline at end of file
index 56b6dee..6dbb136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03f=['action','data1','data2','data3','data5','data6','data7','../client','getTriggers','GetTrigger','channel','status','Condition','AllConditions','field','operator','value','Action','Actions'];(function(_0x51921f,_0x42bde0){var _0x41743a=function(_0x27105d){while(--_0x27105d){_0x51921f['push'](_0x51921f['shift']());}};_0x41743a(++_0x42bde0);}(_0xb03f,0x15d));var _0xfb03=function(_0x27e321,_0x222eb5){_0x27e321=_0x27e321-0x0;var _0x19ac6c=_0xb03f[_0x27e321];return _0x19ac6c;};'use strict';var client=require(_0xfb03('0x0'));exports[_0xfb03('0x1')]=function(_0x4ec8e6){return function(_0x2e711a){return client['Request'](_0xfb03('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xfb03('0x3'),_0xfb03('0x4')],'include':[{'model':_0xfb03('0x5'),'as':_0xfb03('0x6'),'attributes':['id',_0xfb03('0x7'),_0xfb03('0x8'),_0xfb03('0x9')]},{'model':'Condition','as':'AnyConditions','attributes':['id',_0xfb03('0x7'),'operator',_0xfb03('0x9')]},{'model':_0xfb03('0xa'),'as':_0xfb03('0xb'),'attributes':['id',_0xfb03('0xc'),_0xfb03('0xd'),_0xfb03('0xe'),_0xfb03('0xf'),'data4',_0xfb03('0x10'),_0xfb03('0x11'),_0xfb03('0x12')]}]},'log':_0xfb03('0x2')});};};
\ No newline at end of file
+var _0x4fdc=['status','Condition','value','AnyConditions','operator','Action','Actions','data1','data2','data3','data4','data5','../client','getTriggers','Request','GetTrigger','channel'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x4fdc,0x193));var _0xc4fd=function(_0x5d9030,_0x23aee5){_0x5d9030=_0x5d9030-0x0;var _0x122abf=_0x4fdc[_0x5d9030];return _0x122abf;};'use strict';var client=require(_0xc4fd('0x0'));exports[_0xc4fd('0x1')]=function(_0x2305c9){return function(_0x2719e4){return client[_0xc4fd('0x2')](_0xc4fd('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xc4fd('0x4'),_0xc4fd('0x5')],'include':[{'model':_0xc4fd('0x6'),'as':'AllConditions','attributes':['id','field','operator',_0xc4fd('0x7')]},{'model':_0xc4fd('0x6'),'as':_0xc4fd('0x8'),'attributes':['id','field',_0xc4fd('0x9'),_0xc4fd('0x7')]},{'model':_0xc4fd('0xa'),'as':_0xc4fd('0xb'),'attributes':['id','action',_0xc4fd('0xc'),_0xc4fd('0xd'),_0xc4fd('0xe'),_0xc4fd('0xf'),_0xc4fd('0x10'),'data6','data7']}]},'log':_0xc4fd('0x3')});};};
\ No newline at end of file
index 2ccb52e..03f57cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea63=['GetTrunk','defaultuser','getTrunks','Request'];(function(_0x1e09f8,_0x22ca66){var _0xb1724b=function(_0x2f4890){while(--_0x2f4890){_0x1e09f8['push'](_0x1e09f8['shift']());}};_0xb1724b(++_0x22ca66);}(_0xea63,0x1d6));var _0x3ea6=function(_0x41c9a0,_0x828703){_0x41c9a0=_0x41c9a0-0x0;var _0x3f39cd=_0xea63[_0x41c9a0];return _0x3f39cd;};'use strict';var client=require('../client');exports[_0x3ea6('0x0')]=function(_0x3ace54){return function(_0x2e97e6){return client[_0x3ea6('0x1')](_0x3ea6('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name','registry',_0x3ea6('0x3')]},'log':_0x3ea6('0x2')});};};
\ No newline at end of file
+var _0x9275=['GetTrunk','name','registry','defaultuser','getTrunks'];(function(_0x487383,_0x1fe080){var _0x28d3e0=function(_0x1d5d28){while(--_0x1d5d28){_0x487383['push'](_0x487383['shift']());}};_0x28d3e0(++_0x1fe080);}(_0x9275,0x130));var _0x5927=function(_0x120376,_0x571898){_0x120376=_0x120376-0x0;var _0x28c529=_0x9275[_0x120376];return _0x28c529;};'use strict';var client=require('../client');exports[_0x5927('0x0')]=function(_0xcde304){return function(_0x16b603){return client['Request'](_0x5927('0x1'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x5927('0x2'),_0x5927('0x3'),_0x5927('0x4')]},'log':_0x5927('0x1')});};};
\ No newline at end of file
index 5e01615..6e7e98b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['internal','savePause','PauseUser','saveUnpause','UnpauseUser','ShowUser','getAgent','../client','getAgents','Request','agent','name','email','accountcode','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','GetUser','telephone'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xe706,0xa3));var _0x6e70=function(_0x13f3af,_0x2ac326){_0x13f3af=_0x13f3af-0x0;var _0xda3c9f=_0xe706[_0x13f3af];return _0xda3c9f;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':_0x6e70('0x3')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6'),_0x6e70('0x7'),_0x6e70('0x8'),_0x6e70('0x9'),_0x6e70('0xa'),_0x6e70('0xb'),_0x6e70('0xc'),_0x6e70('0xd'),_0x6e70('0xe'),_0x6e70('0xf')]},'log':_0x6e70('0x1')});};};exports[_0x6e70('0x10')]=function(){return function(){return client[_0x6e70('0x2')](_0x6e70('0x11'),{'options':{'raw':!![],'where':{'role':_0x6e70('0x12')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x6'),_0x6e70('0x13')]},'log':_0x6e70('0x10')});};};exports[_0x6e70('0x14')]=function(_0x4600f9,_0x5b3d07,_0x47f6b2){return client[_0x6e70('0x2')](_0x6e70('0x15'),{'body':{'type':_0x5b3d07,'uniqueid':_0x47f6b2},'options':{'where':{'id':_0x4600f9['id']}},'log':_0x6e70('0x14')});};exports[_0x6e70('0x16')]=function(_0x3b38f3){return client[_0x6e70('0x2')](_0x6e70('0x17'),{'body':{},'options':{'where':{'id':_0x3b38f3['id']}},'log':_0x6e70('0x14')});};exports['getAgent']=function(_0x52737e){return client['Request'](_0x6e70('0x18'),{'options':{'raw':![],'where':{'role':'agent','id':_0x52737e},'attributes':['id','name',_0x6e70('0x5'),_0x6e70('0x6'),'fullname',_0x6e70('0x8'),'lastLoginAt',_0x6e70('0xa'),_0x6e70('0xb'),'voicePause','interface']},'log':_0x6e70('0x19')});};
\ No newline at end of file
+var _0xe706=['internal','savePause','PauseUser','saveUnpause','UnpauseUser','ShowUser','getAgent','../client','getAgents','Request','agent','name','email','accountcode','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','GetUser','telephone'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0xe706,0xa3));var _0x6e70=function(_0x5c18ef,_0xa2e81d){_0x5c18ef=_0x5c18ef-0x0;var _0x33789d=_0xe706[_0x5c18ef];return _0x33789d;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':_0x6e70('0x3')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6'),_0x6e70('0x7'),_0x6e70('0x8'),_0x6e70('0x9'),_0x6e70('0xa'),_0x6e70('0xb'),_0x6e70('0xc'),_0x6e70('0xd'),_0x6e70('0xe'),_0x6e70('0xf')]},'log':_0x6e70('0x1')});};};exports[_0x6e70('0x10')]=function(){return function(){return client[_0x6e70('0x2')](_0x6e70('0x11'),{'options':{'raw':!![],'where':{'role':_0x6e70('0x12')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x6'),_0x6e70('0x13')]},'log':_0x6e70('0x10')});};};exports[_0x6e70('0x14')]=function(_0x4600f9,_0x5b3d07,_0x47f6b2){return client[_0x6e70('0x2')](_0x6e70('0x15'),{'body':{'type':_0x5b3d07,'uniqueid':_0x47f6b2},'options':{'where':{'id':_0x4600f9['id']}},'log':_0x6e70('0x14')});};exports[_0x6e70('0x16')]=function(_0x3b38f3){return client[_0x6e70('0x2')](_0x6e70('0x17'),{'body':{},'options':{'where':{'id':_0x3b38f3['id']}},'log':_0x6e70('0x14')});};exports['getAgent']=function(_0x52737e){return client['Request'](_0x6e70('0x18'),{'options':{'raw':![],'where':{'role':'agent','id':_0x52737e},'attributes':['id','name',_0x6e70('0x5'),_0x6e70('0x6'),'fullname',_0x6e70('0x8'),'lastLoginAt',_0x6e70('0xa'),_0x6e70('0xb'),'voicePause','interface']},'log':_0x6e70('0x19')});};
\ No newline at end of file
index 0ab405b..2d97f9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf62f=['CreateVoiceAgentReport','update','UpdateVoiceAgentReport','create','Request'];(function(_0x59b24b,_0xbefa2a){var _0x57b354=function(_0x5bd561){while(--_0x5bd561){_0x59b24b['push'](_0x59b24b['shift']());}};_0x57b354(++_0xbefa2a);}(_0xf62f,0xee));var _0xff62=function(_0x46a36c,_0x1c5f41){_0x46a36c=_0x46a36c-0x0;var _0x1c6796=_0xf62f[_0x46a36c];return _0x1c6796;};'use strict';var client=require('../client');exports[_0xff62('0x0')]=function(_0x24a683){return client[_0xff62('0x1')](_0xff62('0x2'),{'body':_0x24a683,'log':'CreateVoiceAgentReport'});};exports[_0xff62('0x3')]=function(_0x43edda,_0x8fb264,_0x141117){return client['Request'](_0xff62('0x4'),{'body':_0x43edda,'options':{'where':{'uniqueid':_0x8fb264,'interface':_0x141117,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
+var _0x3ec0=['UpdateVoiceAgentReport','create','update','Request'];(function(_0x3d5f17,_0x579bff){var _0x2016ca=function(_0x2b18f9){while(--_0x2b18f9){_0x3d5f17['push'](_0x3d5f17['shift']());}};_0x2016ca(++_0x579bff);}(_0x3ec0,0x189));var _0x03ec=function(_0x6ff2f3,_0xa83995){_0x6ff2f3=_0x6ff2f3-0x0;var _0x12037e=_0x3ec0[_0x6ff2f3];return _0x12037e;};'use strict';var client=require('../client');exports[_0x03ec('0x0')]=function(_0x20b695){return client['Request']('CreateVoiceAgentReport',{'body':_0x20b695,'log':'CreateVoiceAgentReport'});};exports[_0x03ec('0x1')]=function(_0x338d50,_0x19bde2,_0x4986b4){return client[_0x03ec('0x2')](_0x03ec('0x3'),{'body':_0x338d50,'options':{'where':{'uniqueid':_0x19bde2,'interface':_0x4986b4,'agentcomplete':!![]}},'log':_0x03ec('0x3')});};
\ No newline at end of file
index 7f4d263..55c3fe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3351=['moment','../client','Request','CreateVoiceCallReport','callerid','DOCUMENTATION','GetVoiceCallReport','outbound','YYYY-MM-DD\x20HH:mm:ss','format','type','duration','GetVoiceCallReports'];(function(_0x2eb897,_0x5ac819){var _0x2b019f=function(_0x4588ee){while(--_0x4588ee){_0x2eb897['push'](_0x2eb897['shift']());}};_0x2b019f(++_0x5ac819);}(_0x3351,0x1ee));var _0x1335=function(_0xdc37a1,_0x53ebb9){_0xdc37a1=_0xdc37a1-0x0;var _0x99b4fe=_0x3351[_0xdc37a1];return _0x99b4fe;};'use strict';var moment=require(_0x1335('0x0'));var util=require('util');var _=require('lodash');var client=require(_0x1335('0x1'));exports['create']=function(_0x5ee8e2){return client[_0x1335('0x2')](_0x1335('0x3'),{'body':_['merge'](_0x5ee8e2,{'source':_0x5ee8e2['calleridnum'],'destinationcontext':_0x5ee8e2['context'],'callerid':_0x5ee8e2[_0x1335('0x4')],'amaflags':_0x1335('0x5')}),'log':_0x1335('0x3')});};exports['getVoiceCallReports']=function(){return function(){return client[_0x1335('0x2')](_0x1335('0x6'),{'options':{'where':{'type':[_0x1335('0x7')],'createdAt':{'$between':[moment()['startOf']('day')['format'](_0x1335('0x8')),moment()['endOf']('day')[_0x1335('0x9')](_0x1335('0x8'))]}},'attributes':[_0x1335('0xa'),'disposition',_0x1335('0xb'),'billableseconds']},'log':_0x1335('0xc')});};};
\ No newline at end of file
+var _0x36d9=['util','lodash','../client','create','Request','CreateVoiceCallReport','calleridnum','context','DOCUMENTATION','GetVoiceCallReport','outbound','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','duration','billableseconds','moment'];(function(_0x2c83c1,_0x823a8b){var _0x45a3a7=function(_0x1952f4){while(--_0x1952f4){_0x2c83c1['push'](_0x2c83c1['shift']());}};_0x45a3a7(++_0x823a8b);}(_0x36d9,0x1b4));var _0x936d=function(_0x517745,_0x35a2d6){_0x517745=_0x517745-0x0;var _0x8bcdbf=_0x36d9[_0x517745];return _0x8bcdbf;};'use strict';var moment=require(_0x936d('0x0'));var util=require(_0x936d('0x1'));var _=require(_0x936d('0x2'));var client=require(_0x936d('0x3'));exports[_0x936d('0x4')]=function(_0xaefb0f){return client[_0x936d('0x5')](_0x936d('0x6'),{'body':_['merge'](_0xaefb0f,{'source':_0xaefb0f[_0x936d('0x7')],'destinationcontext':_0xaefb0f[_0x936d('0x8')],'callerid':_0xaefb0f['callerid'],'amaflags':_0x936d('0x9')}),'log':_0x936d('0x6')});};exports['getVoiceCallReports']=function(){return function(){return client[_0x936d('0x5')](_0x936d('0xa'),{'options':{'where':{'type':[_0x936d('0xb')],'createdAt':{'$between':[moment()['startOf'](_0x936d('0xc'))[_0x936d('0xd')](_0x936d('0xe')),moment()[_0x936d('0xf')]('day')['format'](_0x936d('0xe'))]}},'attributes':[_0x936d('0x10'),'disposition',_0x936d('0x11'),_0x936d('0x12')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
index 96e03c3..479e86c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa083=['../client','create','Request','CreateVoiceDialReport'];(function(_0x1a5b29,_0x2362bb){var _0x56e90f=function(_0x325388){while(--_0x325388){_0x1a5b29['push'](_0x1a5b29['shift']());}};_0x56e90f(++_0x2362bb);}(_0xa083,0x118));var _0x3a08=function(_0x889fa4,_0x874af8){_0x889fa4=_0x889fa4-0x0;var _0x59d9d3=_0xa083[_0x889fa4];return _0x59d9d3;};'use strict';var client=require(_0x3a08('0x0'));exports[_0x3a08('0x1')]=function(_0x68ca47){return client[_0x3a08('0x2')]('CreateVoiceDialReport',{'body':_0x68ca47,'log':_0x3a08('0x3')});};
\ No newline at end of file
+var _0x71b8=['../client','CreateVoiceDialReport'];(function(_0x3c2863,_0x1b2cee){var _0x2c3d27=function(_0x4f831b){while(--_0x4f831b){_0x3c2863['push'](_0x3c2863['shift']());}};_0x2c3d27(++_0x1b2cee);}(_0x71b8,0x154));var _0x871b=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x71b8[_0x1928c9];return _0x51b5fb;};'use strict';var client=require(_0x871b('0x0'));exports['create']=function(_0x1a5ffc){return client['Request'](_0x871b('0x1'),{'body':_0x1a5ffc,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
index 22185a0..d6eb8b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f7a=['../client','getVoiceExtensions','Request','GetVoiceExtension','recordingFormat'];(function(_0x44a6b5,_0xd22640){var _0xe91626=function(_0xe29cb0){while(--_0xe29cb0){_0x44a6b5['push'](_0x44a6b5['shift']());}};_0xe91626(++_0xd22640);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0xbf797,_0x2f08b8){_0xbf797=_0xbf797-0x0;var _0x349812=_0x6f7a[_0xbf797];return _0x349812;};'use strict';var client=require(_0xa6f7('0x0'));exports[_0xa6f7('0x1')]=function(){return function(){return client[_0xa6f7('0x2')](_0xa6f7('0x3'),{'options':{'raw':!![],'attributes':['id','exten',_0xa6f7('0x4')],'where':{'VoiceExtensionId':null}},'log':_0xa6f7('0x1')});};};
\ No newline at end of file
+var _0xe3d4=['GetVoiceExtension','recordingFormat','getVoiceExtensions','Request'];(function(_0x22377a,_0x3397cb){var _0x36f105=function(_0x2174cc){while(--_0x2174cc){_0x22377a['push'](_0x22377a['shift']());}};_0x36f105(++_0x3397cb);}(_0xe3d4,0xc6));var _0x4e3d=function(_0x487d0a,_0x1b7cb4){_0x487d0a=_0x487d0a-0x0;var _0x3d740c=_0xe3d4[_0x487d0a];return _0x3d740c;};'use strict';var client=require('../client');exports[_0x4e3d('0x0')]=function(){return function(){return client[_0x4e3d('0x1')](_0x4e3d('0x2'),{'options':{'raw':!![],'attributes':['id','exten',_0x4e3d('0x3')],'where':{'VoiceExtensionId':null}},'log':_0x4e3d('0x0')});};};
\ No newline at end of file
index d807a33..b0007d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8709=['dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialQueueProject2','dialNoSuchNumberMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','Trunk','name','callerid','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','GetVoiceQueue','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','timeout','dialRecallMeTimeout'];(function(_0x554b7c,_0x4353fb){var _0x564008=function(_0x5782db){while(--_0x5782db){_0x554b7c['push'](_0x554b7c['shift']());}};_0x564008(++_0x4353fb);}(_0x8709,0xc4));var _0x9870=function(_0x3f47dc,_0x450bae){_0x3f47dc=_0x3f47dc-0x0;var _0x291362=_0x8709[_0x3f47dc];return _0x291362;};'use strict';var client=require(_0x9870('0x0'));exports[_0x9870('0x1')]=function(){return function(){return client['Request'](_0x9870('0x2'),{'options':{'raw':![],'attributes':['id','name','acw','acwTimeout','autopause',_0x9870('0x3'),_0x9870('0x4'),_0x9870('0x5'),_0x9870('0x6'),_0x9870('0x7'),'dialLimitQueue',_0x9870('0x8'),'dialPredictiveOptimization',_0x9870('0x9'),_0x9870('0xa'),'dialOriginateCallerIdName','dialOriginateCallerIdNumber',_0x9870('0xb'),_0x9870('0xc'),_0x9870('0xd'),_0x9870('0xe'),_0x9870('0xf'),_0x9870('0x10'),_0x9870('0x11'),_0x9870('0x12'),_0x9870('0x13'),_0x9870('0x14'),_0x9870('0x15'),_0x9870('0x16'),_0x9870('0x17'),_0x9870('0x18'),_0x9870('0x19'),_0x9870('0x1a'),_0x9870('0x1b'),_0x9870('0x1c'),_0x9870('0x1d'),_0x9870('0x1e'),_0x9870('0x1f'),'dialAMDBetweenWordsSilence',_0x9870('0x20'),_0x9870('0x21'),'dialAMDMaximumWordLength',_0x9870('0x22'),_0x9870('0x23'),_0x9870('0x24'),_0x9870('0x25'),_0x9870('0x26'),'dialAgiAfterHangupClient',_0x9870('0x27'),'monitor_format','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit',_0x9870('0x28'),'dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0x9870('0x29'),_0x9870('0x2a'),'dialAbandonedRetryFrequency',_0x9870('0x2b'),_0x9870('0x2c'),_0x9870('0x2d'),_0x9870('0x2e'),_0x9870('0x2f'),_0x9870('0x30'),'dialPredictiveIntervalMinThreshold'],'include':[{'model':_0x9870('0x31'),'as':_0x9870('0x31'),'attributes':['id',_0x9870('0x32'),_0x9870('0x33'),'active']},{'model':_0x9870('0x34'),'as':_0x9870('0x35'),'attributes':['id',_0x9870('0x32')]},{'model':_0x9870('0x31'),'as':_0x9870('0x36'),'attributes':['id',_0x9870('0x32'),_0x9870('0x33'),'active']},{'model':_0x9870('0x37'),'as':_0x9870('0x37'),'attributes':['id','name'],'include':[{'model':'Interval','as':_0x9870('0x38'),'attributes':['id',_0x9870('0x32'),_0x9870('0x39')]}]}]},'log':_0x9870('0x1')});};};
\ No newline at end of file
+var _0x3c19=['Request','GetVoiceQueue','acw','acwTimeout','autopause','monitor_format','type','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdNumber','dialQueueTimeout','dialQueueProject','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','name','active','Pause','mandatoryDispositionPause','Intervals','../client','getVoiceQueues'];(function(_0x4adfa2,_0x531195){var _0xf9b91d=function(_0x1192fe){while(--_0x1192fe){_0x4adfa2['push'](_0x4adfa2['shift']());}};_0xf9b91d(++_0x531195);}(_0x3c19,0x116));var _0x93c1=function(_0x46f137,_0x24a05c){_0x46f137=_0x46f137-0x0;var _0x160e3c=_0x3c19[_0x46f137];return _0x160e3c;};'use strict';var client=require(_0x93c1('0x0'));exports[_0x93c1('0x1')]=function(){return function(){return client[_0x93c1('0x2')](_0x93c1('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x93c1('0x4'),_0x93c1('0x5'),_0x93c1('0x6'),_0x93c1('0x7'),_0x93c1('0x8'),'dialActive',_0x93c1('0x9'),_0x93c1('0xa'),'dialLimitQueue',_0x93c1('0xb'),'dialPredictiveOptimization',_0x93c1('0xc'),_0x93c1('0xd'),'dialOriginateCallerIdName',_0x93c1('0xe'),'dialOriginateTimeout','dialQueueOptions',_0x93c1('0xf'),_0x93c1('0x10'),'dialCongestionMaxRetry',_0x93c1('0x11'),_0x93c1('0x12'),_0x93c1('0x13'),_0x93c1('0x14'),_0x93c1('0x15'),_0x93c1('0x16'),_0x93c1('0x17'),_0x93c1('0x18'),_0x93c1('0x19'),_0x93c1('0x1a'),'dialAMDActive',_0x93c1('0x1b'),_0x93c1('0x1c'),_0x93c1('0x1d'),'dialAMDTotalAnalysisTime','dialAMDMinWordLength',_0x93c1('0x1e'),_0x93c1('0x1f'),'dialAMDSilenceThreshold',_0x93c1('0x20'),_0x93c1('0x21'),_0x93c1('0x22'),'dialRecallInQueue',_0x93c1('0x23'),_0x93c1('0x24'),_0x93c1('0x25'),_0x93c1('0x26'),_0x93c1('0x7'),_0x93c1('0x27'),_0x93c1('0x28'),_0x93c1('0x29'),_0x93c1('0x2a'),_0x93c1('0x2b'),'dialDropMaxRetry',_0x93c1('0x2c'),'dialAbandonedMaxRetry',_0x93c1('0x2d'),'dialMachineMaxRetry',_0x93c1('0x2e'),_0x93c1('0x2f'),'dialAgentRejectRetryFrequency','mandatoryDisposition',_0x93c1('0x30'),_0x93c1('0x31')],'include':[{'model':_0x93c1('0x32'),'as':_0x93c1('0x32'),'attributes':['id',_0x93c1('0x33'),'callerid',_0x93c1('0x34')]},{'model':_0x93c1('0x35'),'as':_0x93c1('0x36'),'attributes':['id','name']},{'model':'Trunk','as':'TrunkBackup','attributes':['id',_0x93c1('0x33'),'callerid',_0x93c1('0x34')]},{'model':'Interval','as':'Interval','attributes':['id',_0x93c1('0x33')],'include':[{'model':'Interval','as':_0x93c1('0x37'),'attributes':['id',_0x93c1('0x33'),'interval']}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
index e6e1410..1f062c1 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(_0x3208ce,_0x458a95){var _0x27482a=function(_0x419eb2){while(--_0x419eb2){_0x3208ce['push'](_0x3208ce['shift']());}};_0x27482a(++_0x458a95);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
+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(_0x22a328,_0x1ecbdb){var _0x9c20d2=function(_0x1af2b9){while(--_0x1af2b9){_0x22a328['push'](_0x22a328['shift']());}};_0x9c20d2(++_0x1ecbdb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'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 e0c9ce0..bbd0576 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93c1=['../client','GetVoiceQueueRtPauses','getVoiceQueueRtPauses'];(function(_0x1a9e9e,_0x4e02c0){var _0x461061=function(_0x595613){while(--_0x595613){_0x1a9e9e['push'](_0x1a9e9e['shift']());}};_0x461061(++_0x4e02c0);}(_0x93c1,0x105));var _0x193c=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0x93c1[_0x68ee8b];return _0x5148f7;};'use strict';var client=require(_0x193c('0x0'));exports['getVoiceQueueRtPauses']=function(_0x5b31dc){return function(){return client['Request'](_0x193c('0x1'),{'options':{'where':{'VoiceQueueId':_0x5b31dc,'paused':!![]},'raw':!![]},'log':_0x193c('0x2')});};};
\ No newline at end of file
+var _0xebe9=['../client','Request','getVoiceQueueRtPauses'];(function(_0x1f88bb,_0x50ee1e){var _0x4c9b66=function(_0xa628ff){while(--_0xa628ff){_0x1f88bb['push'](_0x1f88bb['shift']());}};_0x4c9b66(++_0x50ee1e);}(_0xebe9,0x10b));var _0x9ebe=function(_0x5612c5,_0x389dbc){_0x5612c5=_0x5612c5-0x0;var _0xa17ebc=_0xebe9[_0x5612c5];return _0xa17ebc;};'use strict';var client=require(_0x9ebe('0x0'));exports['getVoiceQueueRtPauses']=function(_0x3c7d92){return function(){return client[_0x9ebe('0x1')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x3c7d92,'paused':!![]},'raw':!![]},'log':_0x9ebe('0x2')});};};
\ No newline at end of file
index 5db6851..2e61eb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x414d5a,_0x47a337){var _0x4d1164=function(_0x53e02c){while(--_0x53e02c){_0x414d5a['push'](_0x414d5a['shift']());}};_0x4d1164(++_0x47a337);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x3027de,_0x17c451){var _0x59f70c=function(_0x513038){while(--_0x513038){_0x3027de['push'](_0x3027de['shift']());}};_0x59f70c(++_0x17c451);}(_0x7a54,0x106));var _0x47a5=function(_0x5a50f4,_0x59c333){_0x5a50f4=_0x5a50f4-0x0;var _0x579dfa=_0x7a54[_0x5a50f4];return _0x579dfa;};'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
index 90f4da0..6f00748 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f14=['transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transferercalleridnum','transferercalleridname','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','extension','attendedTransfer','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x6f14,0xfa));var _0x46f1=function(_0x4470c0,_0x5b9cd1){_0x4470c0=_0x4470c0-0x0;var _0x2c079a=_0x6f14[_0x4470c0];return _0x2c079a;};'use strict';var client=require(_0x46f1('0x0'));exports[_0x46f1('0x1')]={};exports[_0x46f1('0x2')]=function(_0x920717){return client[_0x46f1('0x3')](_0x46f1('0x4'),{'body':{'result':_0x920717[_0x46f1('0x5')],'transfererchannel':_0x920717['transfererchannel'],'transferercalleridnum':_0x920717[_0x46f1('0x6')],'transferercalleridname':_0x920717[_0x46f1('0x7')],'transfererconnectedlinenum':_0x920717['transfererconnectedlinenum'],'transfererconnectedlinename':_0x920717[_0x46f1('0x8')],'transfereraccountcode':_0x920717[_0x46f1('0x9')],'transferercontext':_0x920717[_0x46f1('0xa')],'transfererexten':_0x920717['transfererexten'],'transfererlinkedid':_0x920717[_0x46f1('0xb')],'transfereechannel':_0x920717[_0x46f1('0xc')],'transfereecalleridnum':_0x920717[_0x46f1('0xd')],'transfereecalleridname':_0x920717['transfereecalleridname'],'transfereeconnectedlinenum':_0x920717[_0x46f1('0xe')],'transfereeconnectedlinename':_0x920717[_0x46f1('0xf')],'transfereeaccountcode':_0x920717[_0x46f1('0x10')],'transfereecontext':_0x920717[_0x46f1('0x11')],'transfereeexten':_0x920717[_0x46f1('0x12')],'transfereelinkedid':_0x920717[_0x46f1('0x13')],'isexternal':_0x920717[_0x46f1('0x14')],'context':_0x920717[_0x46f1('0x15')],'extension':_0x920717[_0x46f1('0x16')],'type':'blind'},'log':_0x46f1('0x4')});};exports[_0x46f1('0x17')]=function(_0x67b140){return client[_0x46f1('0x3')]('CreateVoiceTransferReport',{'body':{'result':_0x67b140[_0x46f1('0x5')],'transfererchannel':_0x67b140[_0x46f1('0x18')],'transferercalleridnum':_0x67b140['origtransferercalleridnum'],'transferercalleridname':_0x67b140[_0x46f1('0x19')],'transfererconnectedlinenum':_0x67b140[_0x46f1('0x1a')],'transfererconnectedlinename':_0x67b140[_0x46f1('0x1b')],'transfereraccountcode':_0x67b140['origtransfereraccountcode'],'transferercontext':_0x67b140[_0x46f1('0x1c')],'transfererexten':_0x67b140[_0x46f1('0x1d')],'transfererlinkedid':_0x67b140['origtransfererlinkedid'],'transfereechannel':_0x67b140[_0x46f1('0x1e')],'transfereecalleridnum':_0x67b140['transfertargetcalleridnum'],'transfereecalleridname':_0x67b140[_0x46f1('0x1f')],'transfereeconnectedlinenum':_0x67b140[_0x46f1('0x20')],'transfereeconnectedlinename':_0x67b140['transfertargetconnectedlinename'],'transfereeaccountcode':_0x67b140[_0x46f1('0x21')],'transfereecontext':_0x67b140[_0x46f1('0x22')],'transfereeexten':_0x67b140[_0x46f1('0x23')],'transfereelinkedid':_0x67b140[_0x46f1('0x24')],'isexternal':_0x67b140[_0x46f1('0x14')],'context':_0x67b140[_0x46f1('0x25')],'extension':_0x67b140[_0x46f1('0x26')],'type':_0x46f1('0x27')},'log':_0x46f1('0x4')});};
\ No newline at end of file
+var _0x668c=['secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetcontext','transfertargetexten','isexternal','origtransferercontext','origtransfererexten','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','context','extension','blind','attendedTransfer','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum'];(function(_0x220630,_0x6669ab){var _0x350a42=function(_0x42e3a4){while(--_0x42e3a4){_0x220630['push'](_0x220630['shift']());}};_0x350a42(++_0x6669ab);}(_0x668c,0x14c));var _0xc668=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x668c[_0x49ca18];return _0x145d54;};'use strict';var client=require(_0xc668('0x0'));exports[_0xc668('0x1')]={};exports[_0xc668('0x2')]=function(_0x335e72){return client[_0xc668('0x3')](_0xc668('0x4'),{'body':{'result':_0x335e72[_0xc668('0x5')],'transfererchannel':_0x335e72[_0xc668('0x6')],'transferercalleridnum':_0x335e72[_0xc668('0x7')],'transferercalleridname':_0x335e72[_0xc668('0x8')],'transfererconnectedlinenum':_0x335e72[_0xc668('0x9')],'transfererconnectedlinename':_0x335e72[_0xc668('0xa')],'transfereraccountcode':_0x335e72[_0xc668('0xb')],'transferercontext':_0x335e72[_0xc668('0xc')],'transfererexten':_0x335e72[_0xc668('0xd')],'transfererlinkedid':_0x335e72[_0xc668('0xe')],'transfereechannel':_0x335e72['transfereechannel'],'transfereecalleridnum':_0x335e72['transfereecalleridnum'],'transfereecalleridname':_0x335e72['transfereecalleridname'],'transfereeconnectedlinenum':_0x335e72[_0xc668('0xf')],'transfereeconnectedlinename':_0x335e72[_0xc668('0x10')],'transfereeaccountcode':_0x335e72[_0xc668('0x11')],'transfereecontext':_0x335e72[_0xc668('0x12')],'transfereeexten':_0x335e72[_0xc668('0x13')],'transfereelinkedid':_0x335e72[_0xc668('0x14')],'isexternal':_0x335e72['isexternal'],'context':_0x335e72[_0xc668('0x15')],'extension':_0x335e72[_0xc668('0x16')],'type':_0xc668('0x17')},'log':_0xc668('0x4')});};exports[_0xc668('0x18')]=function(_0x31acfe){return client[_0xc668('0x3')](_0xc668('0x4'),{'body':{'result':_0x31acfe[_0xc668('0x5')],'transfererchannel':_0x31acfe[_0xc668('0x19')],'transferercalleridnum':_0x31acfe['origtransferercalleridnum'],'transferercalleridname':_0x31acfe[_0xc668('0x1a')],'transfererconnectedlinenum':_0x31acfe[_0xc668('0x1b')],'transfererconnectedlinename':_0x31acfe[_0xc668('0x1c')],'transfereraccountcode':_0x31acfe[_0xc668('0x1d')],'transferercontext':_0x31acfe[_0xc668('0x1e')],'transfererexten':_0x31acfe['secondtransfererexten'],'transfererlinkedid':_0x31acfe['origtransfererlinkedid'],'transfereechannel':_0x31acfe[_0xc668('0x1f')],'transfereecalleridnum':_0x31acfe['transfertargetcalleridnum'],'transfereecalleridname':_0x31acfe[_0xc668('0x20')],'transfereeconnectedlinenum':_0x31acfe[_0xc668('0x21')],'transfereeconnectedlinename':_0x31acfe['transfertargetconnectedlinename'],'transfereeaccountcode':_0x31acfe[_0xc668('0x22')],'transfereecontext':_0x31acfe[_0xc668('0x23')],'transfereeexten':_0x31acfe[_0xc668('0x24')],'transfereelinkedid':_0x31acfe['transfertargetlinkedid'],'isexternal':_0x31acfe[_0xc668('0x25')],'context':_0x31acfe[_0xc668('0x26')],'extension':_0x31acfe[_0xc668('0x27')],'type':'attended'},'log':_0xc668('0x4')});};
\ No newline at end of file
index 881cd35..941f2cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13f5=['predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','push','length','find','undefined','channels','uniqueid','channel','format','%s.%s','filename','wav','MixMonitor','ai(mixmonitorid)','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','voicechannel','map','resolve','StopMixMonitor','catch','destinationchannel','monitors','stop','StopMixMonitor\x20Success','values','queueChannels','voicequeuechannel','exten','context','telephones','outbound','campaigns','run','emit','event','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','moment','../ami','listen','%s/%s','SIP','name','timers','timer','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','join','keys','module','action','Reload','Action','message','ami\x20disconnected','command','Command','then','voiceQueues','answered','available','pTalking','sumHoldTime','talking','total','type','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate'];(function(_0x35ebc0,_0x5f13bc){var _0x208196=function(_0x5cf3c2){while(--_0x5cf3c2){_0x35ebc0['push'](_0x35ebc0['shift']());}};_0x208196(++_0x5f13bc);}(_0x13f5,0xc3));var _0x513f=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x13f5[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x513f('0x0'));var util=require(_0x513f('0x1'));var jayson=require(_0x513f('0x2'));var schema=require(_0x513f('0x3'));var BPromise=require('bluebird');var moment=require(_0x513f('0x4'));var config=require('../../../config/environment');var properties=require('../properties');var ami=require(_0x513f('0x5'));exports[_0x513f('0x6')]=function(_0x3a9531,_0x3a6320,_0x8d019b){return new BPromise(function(_0x579681,_0x2be368){var _0x6e5b15={'QueuePause':function(_0x2c75a3){return new Promise(function(_0x42951f,_0x1975b5){var _0x4755cb=util['format'](_0x513f('0x7'),_0x513f('0x8'),_0x2c75a3[_0x513f('0x9')]);if(_0x3a9531[_0x513f('0xa')]&&_0x3a9531[_0x513f('0xa')][_0x4755cb]&&_0x3a9531['timers'][_0x4755cb][_0x513f('0xb')]){_0x3a9531[_0x513f('0xa')][_0x4755cb]['updateAcw']();}if(_0x3a9531[_0x513f('0xc')][_0x4755cb]){_0x3a9531[_0x513f('0xc')][_0x4755cb][_0x513f('0xd')]({'statePause':_0x2c75a3[_0x513f('0xe')]?!![]:![]});}_0x42951f({'code':0xc8,'message':_0x513f('0xf')});});},'Reload':function(_0xfb8469){var _0x2a0e99=this;return new Promise(function(_0x265cd7,_0x23153b){if(ami[_0x513f('0x10')]()==![]){return _0x23153b(_0x2a0e99[_0x513f('0x11')](0x1f4,[config[_0x513f('0x12')]['ip'],config[_0x513f('0x12')][_0x513f('0x13')],'ami\x20disconnected'][_0x513f('0x14')]('\x20')));}_0xfb8469=_['pick'](_0xfb8469,_[_0x513f('0x15')](properties[_0x513f('0x16')]));_0xfb8469[_0x513f('0x17')]=_0x513f('0x18');return ami[_0x513f('0x19')](_0xfb8469)['then'](function(_0x4e7dd3){_0x265cd7({'code':0xc8,'message':_0x4e7dd3[_0x513f('0x1a')]});})['catch'](function(_0x186121){_0x23153b(_0x2a0e99['error'](0x1f5,_0x186121[_0x513f('0x1a')]));});});},'Command':function(_0x1d4462){var _0x511ae0=this;return new Promise(function(_0x2a461f,_0x37ccea){if(ami[_0x513f('0x10')]()==![]){return _0x37ccea(_0x511ae0[_0x513f('0x11')](0x1f4,[config[_0x513f('0x12')]['ip'],config[_0x513f('0x12')]['username'],_0x513f('0x1b')][_0x513f('0x14')]('\x20')));}_0x1d4462=_['pick'](_0x1d4462,_0x513f('0x1c'));_0x1d4462[_0x513f('0x17')]=_0x513f('0x1d');return ami[_0x513f('0x19')](_0x1d4462)[_0x513f('0x1e')](function(_0x1eb0f4){_0x2a461f({'code':0xc8,'message':_0x1eb0f4['content']});})['catch'](function(_0x59de20){_0x37ccea(_0x511ae0[_0x513f('0x11')](0x1f5,_0x59de20[_0x513f('0x1a')]));});});},'VoiceQueues':function(_0xc3fa6f){return new Promise(function(_0x1069d4,_0x2191d4){var _0xabb40b=[];for(var _0x1624d2 in _0x3a9531[_0x513f('0x1f')]){if(_0x3a9531[_0x513f('0x1f')]['hasOwnProperty'](_0x1624d2)){var _0x509e63=_0x3a9531[_0x513f('0x1f')][_0x1624d2];var _0x27136f={'id':_0x509e63['id'],'name':_0x509e63[_0x513f('0x9')],'strategy':_0x509e63['strategy'],'answered':_0x509e63[_0x513f('0x20')],'available':_0x509e63[_0x513f('0x21')],'loggedIn':_0x509e63['loggedIn'],'pTalking':_0x509e63[_0x513f('0x22')],'sumBillable':_0x509e63['sumBillable'],'sumDuration':_0x509e63['sumDuration'],'sumHoldTime':_0x509e63[_0x513f('0x23')]||0x0,'talking':_0x509e63[_0x513f('0x24')],'total':_0x509e63[_0x513f('0x25')],'type':_0x509e63[_0x513f('0x26')],'unmanaged':_0x509e63['unmanaged'],'abandoned':_0x509e63[_0x513f('0x27')],'waiting':_0x509e63[_0x513f('0x28')],'loggedInDb':_0x509e63[_0x513f('0x29')]};if(_0x509e63[_0x513f('0x26')]==='outbound'){_0x27136f[_0x513f('0x2a')]=_0x509e63[_0x513f('0x2a')];_0x27136f[_0x513f('0x2b')]=_0x509e63[_0x513f('0x2b')];_0x27136f[_0x513f('0x2c')]=_0x509e63[_0x513f('0x2c')];_0x27136f['dialOriginateCallerIdNumber']=_0x509e63['dialOriginateCallerIdNumber'];_0x27136f[_0x513f('0x2d')]=_0x509e63[_0x513f('0x2d')];_0x27136f['dialPrefix']=_0x509e63['dialPrefix'];_0x27136f[_0x513f('0x2e')]=_0x509e63[_0x513f('0x2e')];_0x27136f[_0x513f('0x2f')]=_0x509e63['outboundAnswerAgiCallsDay'];_0x27136f[_0x513f('0x30')]=_0x509e63[_0x513f('0x30')];_0x27136f['outboundBlacklistCallsDay']=_0x509e63[_0x513f('0x31')];_0x27136f[_0x513f('0x32')]=_0x509e63[_0x513f('0x32')];_0x27136f[_0x513f('0x33')]=_0x509e63[_0x513f('0x33')];_0x27136f[_0x513f('0x34')]=_0x509e63[_0x513f('0x34')];_0x27136f[_0x513f('0x35')]=_0x509e63[_0x513f('0x35')];_0x27136f['outboundDropCallsDayTimeout']=_0x509e63[_0x513f('0x36')];_0x27136f['outboundNoAnswerCallsDay']=_0x509e63['outboundNoAnswerCallsDay'];_0x27136f[_0x513f('0x37')]=_0x509e63['outboundNoSuchCallsDay'];_0x27136f[_0x513f('0x38')]=_0x509e63[_0x513f('0x38')];_0x27136f['outboundReCallsDay']=_0x509e63[_0x513f('0x39')];_0x27136f['outboundRejectCallsDay']=_0x509e63['outboundRejectCallsDay'];_0x27136f[_0x513f('0x3a')]=_0x509e63[_0x513f('0x3a')];_0x27136f[_0x513f('0x3b')]=_0x509e63[_0x513f('0x3b')];_0x27136f[_0x513f('0x3c')]=_0x509e63['predictiveIntervalAvgHoldtime'];_0x27136f[_0x513f('0x3d')]=_0x509e63[_0x513f('0x3d')];_0x27136f['predictiveIntervalDroppedCallsCallersExit']=_0x509e63[_0x513f('0x3e')];_0x27136f[_0x513f('0x3f')]=_0x509e63[_0x513f('0x3f')];_0x27136f[_0x513f('0x40')]=_0x509e63[_0x513f('0x40')];_0x27136f['predictiveIntervalErlangCallsDroppedCalls']=_0x509e63[_0x513f('0x41')];_0x27136f[_0x513f('0x42')]=_0x509e63[_0x513f('0x42')];_0x27136f[_0x513f('0x43')]=_0x509e63['predictiveIntervalMultiplicativeFactor'];_0x27136f['predictiveIntervalPauses']=_0x509e63[_0x513f('0x44')];_0x27136f[_0x513f('0x45')]=_0x509e63[_0x513f('0x45')];_0x27136f[_0x513f('0x46')]=_0x509e63['predictiveIntervalTotalCalls'];_0x27136f['message']=_0x509e63[_0x513f('0x1a')];_0x27136f[_0x513f('0x47')]=_0x509e63[_0x513f('0x47')];_0x27136f[_0x513f('0x48')]=_0x509e63[_0x513f('0x48')];_0x27136f['erlangCallToSecond']=_0x509e63[_0x513f('0x49')];_0x27136f[_0x513f('0x4a')]=_0x509e63[_0x513f('0x4a')];_0x27136f['erlangBusyFactor']=_0x509e63[_0x513f('0x4b')];_0x27136f[_0x513f('0x4c')]=_0x509e63['startPredictive'];_0x27136f[_0x513f('0x4d')]=_0x509e63[_0x513f('0x4d')];}if(_0x509e63[_0x513f('0x4e')]){_0x27136f[_0x513f('0x4e')]={'id':_0x509e63[_0x513f('0x4e')]['id'],'name':_0x509e63['Trunk'][_0x513f('0x9')],'active':_0x509e63[_0x513f('0x4e')][_0x513f('0x4f')],'callerid':_0x509e63[_0x513f('0x4e')]['callerid']};}if(_0x509e63['Interval']){_0x27136f[_0x513f('0x50')]={'id':_0x509e63[_0x513f('0x50')]['id'],'name':_0x509e63[_0x513f('0x50')][_0x513f('0x9')]};}_0xabb40b[_0x513f('0x51')](_0x27136f);}}_0x1069d4({'count':_0xabb40b[_0x513f('0x52')],'rows':_0xabb40b});});},'UpdateVoiceQueue':function(_0x25b71b){return new Promise(function(_0x5a8988,_0x3dc022){var _0xa06dcb=_[_0x513f('0x53')](_0x3a9531['voiceQueues'],{'id':parseInt(_0x25b71b['id'])});var _0x1f21d2=_['omit'](_0x25b71b,['id']);if(_0xa06dcb){for(var _0x45263f in _0x1f21d2){if(typeof _0x1f21d2[_0x45263f]!=='undefined'&&typeof _0xa06dcb[_0x45263f]!==_0x513f('0x54')){_0xa06dcb[_0x45263f]=_0x1f21d2[_0x45263f];}}_0x5a8988(_0xa06dcb);}else{_0x3dc022();}});},'VoiceChannels':function(_0x4d2489){return new Promise(function(_0x202fa4,_0x43be3e){var _0x5e1076=_['values'](_0x3a9531[_0x513f('0x55')]);_0x202fa4({'count':_0x5e1076['length'],'rows':_0x5e1076});});},'VoiceChannelMixMonitor':function(_0x3495b2){var _0x216cb4=this;return new Promise(function(_0x52af64,_0x236ae6){if(ami[_0x513f('0x10')]()==![]){return _0x236ae6(_0x216cb4['error'](0x1f4,[config[_0x513f('0x12')]['ip'],config[_0x513f('0x12')]['username'],_0x513f('0x1b')]['join']('\x20')));}var _0x1a3d47=schema(properties['voicechannel'])[_0x513f('0x3')](_0x3495b2);if(_0x1a3d47['length']>0x0){return _0x236ae6(_0x216cb4[_0x513f('0x11')](0x1f4,_['map'](_0x1a3d47,_0x513f('0x1a'))['join'](',\x20')));}var _0xd7cf8=_['find'](_0x3a9531['channels'],{'uniqueid':_0x3495b2[_0x513f('0x56')]});if(_0xd7cf8&&_0xd7cf8[_0x513f('0x57')]){var _0x4a3b48=util[_0x513f('0x58')](_0x513f('0x59'),_0x3495b2[_0x513f('0x5a')]||_0x3495b2['uniqueid'],_0x3495b2[_0x513f('0x58')]||_0x513f('0x5b'));return ami[_0x513f('0x19')]({'action':_0x513f('0x5c'),'channel':_0xd7cf8['channel'],'file':_0x4a3b48,'options':_0x513f('0x5d')})[_0x513f('0x1e')](function(_0x4e8fe1){var _0x3d8649=_[_0x513f('0x53')](_0xd7cf8['monitors'],{'filename':_0x513f('0x5e')+_0x4a3b48[_0x513f('0x5f')]()});if(_['isNil'](_0x3d8649)){_0xd7cf8['monitors']['push']({'filename':_0x513f('0x5e')+_0x4a3b48['toLowerCase'](),'createdAt':moment()['format'](_0x513f('0x60')),'mixmonitorid':_0x4e8fe1[_0x513f('0x61')],'status':_0x513f('0x62')});}else{_0x3d8649[_0x513f('0x61')]=_0x4e8fe1[_0x513f('0x61')];_0x3d8649[_0x513f('0x63')]=_0x513f('0x62');}_0x52af64({'code':0xc8,'message':[_0x3495b2['uniqueid'],_0x513f('0x64'),_0x4e8fe1[_0x513f('0x61')]][_0x513f('0x14')]('\x20'),'mixmonitorid':_0x4e8fe1['mixmonitorid']});})['catch'](function(_0x1b273b){_0x236ae6(_0x216cb4[_0x513f('0x11')](0x1f5,[_0x3495b2[_0x513f('0x56')],_0x1b273b[_0x513f('0x1a')][_0x513f('0x5f')]()]['join']('\x20')));});}else{return _0x236ae6(_0x216cb4[_0x513f('0x11')](0x1f5,_0x513f('0x65')));}});},'VoiceChannelStopMixMonitor':function(_0x13b307){var _0xbbd05e=this;return new Promise(function(_0x17e9e1,_0x4dc7e8){if(ami['isConnected']()==![]){return _0x4dc7e8(_0xbbd05e[_0x513f('0x11')](0x1f4,[config[_0x513f('0x12')]['ip'],config[_0x513f('0x12')][_0x513f('0x13')],_0x513f('0x1b')]['join']('\x20')));}var _0x265cd9=schema(properties[_0x513f('0x66')])['validate'](_0x13b307);if(_0x265cd9[_0x513f('0x52')]>0x0){return _0x4dc7e8(_0xbbd05e[_0x513f('0x11')](0x1f4,_[_0x513f('0x67')](_0x265cd9,_0x513f('0x1a'))[_0x513f('0x14')](',\x20')));}var _0x5cedfb=_['find'](_0x3a9531[_0x513f('0x55')],{'uniqueid':_0x13b307[_0x513f('0x56')]});if(_0x5cedfb){return BPromise[_0x513f('0x68')]()[_0x513f('0x1e')](function(){if(_0x5cedfb[_0x513f('0x57')]){return ami[_0x513f('0x19')]({'action':_0x513f('0x69'),'channel':_0x5cedfb[_0x513f('0x57')],'mixmonitorid':_0x13b307[_0x513f('0x61')]})[_0x513f('0x6a')](function(_0x38b746){});}})[_0x513f('0x1e')](function(){if(_0x5cedfb[_0x513f('0x6b')]){return ami[_0x513f('0x19')]({'action':_0x513f('0x69'),'channel':_0x5cedfb[_0x513f('0x6b')],'mixmonitorid':_0x13b307[_0x513f('0x61')]})[_0x513f('0x6a')](function(_0x4a6122){});}})[_0x513f('0x1e')](function(_0xfaa42f){var _0x31ef24=_[_0x513f('0x53')](_0x5cedfb['monitors'],{'mixmonitorid':_0x13b307[_0x513f('0x61')]});if(_0x31ef24){_0x31ef24[_0x513f('0x63')]='stop';}})[_0x513f('0x1e')](function(){var _0x2c238b=util['format']('%s.%s',_0x13b307[_0x513f('0x5a')]||_0x13b307['uniqueid'],_0x13b307[_0x513f('0x58')]||'wav');var _0x20ee10=_[_0x513f('0x53')](_0x5cedfb[_0x513f('0x6c')],{'filename':_0x513f('0x5e')+_0x2c238b[_0x513f('0x5f')]()});if(_0x20ee10){_0x20ee10['status']=_0x513f('0x6d');}})['then'](function(){_0x17e9e1({'code':0xc8,'message':[_0x13b307[_0x513f('0x56')],_0x513f('0x6e')]['join']('\x20')});})[_0x513f('0x6a')](function(_0x13352b){_0x4dc7e8(_0xbbd05e[_0x513f('0x11')](0x1f5,[_0x13b307[_0x513f('0x56')],_0x13352b['message']['toLowerCase']()][_0x513f('0x14')]('\x20')));});}else{return _0x4dc7e8(_0xbbd05e['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x2f025b){return new Promise(function(_0x5c2352,_0x235daa){var _0x3d8012=_[_0x513f('0x6f')](_0x3a9531[_0x513f('0x70')]);_0x5c2352({'count':_0x3d8012[_0x513f('0x52')],'rows':_0x3d8012});});},'VoiceQueuesChannel':function(_0x1fdb84){var _0x1c56e4=this;return new Promise(function(_0x23cf6c,_0x4e6af3){var _0x135337=schema(properties[_0x513f('0x71')])[_0x513f('0x3')](_0x1fdb84);if(_0x135337[_0x513f('0x52')]>0x0){return _0x4e6af3(_0x1c56e4['error'](0x1f4,_[_0x513f('0x67')](_0x135337,_0x513f('0x1a'))[_0x513f('0x14')](',\x20')));}var _0x17de07=_[_0x513f('0x53')](_0x3a9531[_0x513f('0x70')],{'uniqueid':_0x1fdb84[_0x513f('0x56')]});if(_0x17de07){_0x23cf6c(_0x17de07);}else{return _0x4e6af3(_0x1c56e4[_0x513f('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x2be7cc){var _0x167620=this;return new Promise(function(_0x1eb9af,_0x33c93b){if(ami['isConnected']()==![]){return _0x33c93b(_0x167620[_0x513f('0x11')](0x1f4,[config[_0x513f('0x12')]['ip'],config[_0x513f('0x12')][_0x513f('0x13')],_0x513f('0x1b')][_0x513f('0x14')]('\x20')));}var _0x29e93e=schema(properties['voicequeuechannelhangup'])['validate'](_0x2be7cc);if(_0x29e93e[_0x513f('0x52')]>0x0){return _0x33c93b(_0x167620['error'](0x1f4,_[_0x513f('0x67')](_0x29e93e,_0x513f('0x1a'))[_0x513f('0x14')](',\x20')));}var _0xfdf4b2=_[_0x513f('0x53')](_0x3a9531[_0x513f('0x70')],{'uniqueid':_0x2be7cc[_0x513f('0x56')]});if(_0xfdf4b2&&_0xfdf4b2[_0x513f('0x57')]){return ami[_0x513f('0x19')]({'action':'Hangup','channel':_0xfdf4b2[_0x513f('0x57')]})[_0x513f('0x1e')](function(_0x2a30e7){_0x1eb9af({'code':0xc8,'message':[_0x2be7cc[_0x513f('0x56')],_0x2a30e7[_0x513f('0x1a')][_0x513f('0x5f')]()][_0x513f('0x14')]('\x20')});})['catch'](function(_0x183894){_0x33c93b(_0x167620[_0x513f('0x11')](0x1f5,[_0x2be7cc[_0x513f('0x56')],_0x183894[_0x513f('0x1a')][_0x513f('0x5f')]()][_0x513f('0x14')]('\x20')));});}else{return _0x33c93b(_0x167620[_0x513f('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x5d570e){var _0x218d01=this;return new Promise(function(_0x471969,_0x42f6f2){if(ami['isConnected']()==![]){return _0x42f6f2(_0x218d01['error'](0x1f4,[config[_0x513f('0x12')]['ip'],config[_0x513f('0x12')]['username'],_0x513f('0x1b')][_0x513f('0x14')]('\x20')));}var _0x4ca855=schema(properties['voicequeuechannelredirect'])[_0x513f('0x3')](_0x5d570e);if(_0x4ca855['length']>0x0){return _0x42f6f2(_0x218d01[_0x513f('0x11')](0x1f4,_[_0x513f('0x67')](_0x4ca855,_0x513f('0x1a'))[_0x513f('0x14')](',\x20')));}var _0x46e1ea=_[_0x513f('0x53')](_0x3a9531[_0x513f('0x70')],{'uniqueid':_0x5d570e[_0x513f('0x56')]});if(_0x46e1ea&&_0x46e1ea[_0x513f('0x57')]){return ami[_0x513f('0x19')]({'action':'Redirect','channel':_0x46e1ea['channel'],'exten':_0x5d570e[_0x513f('0x72')],'context':_0x5d570e[_0x513f('0x73')]||_0x46e1ea[_0x513f('0x73')],'priority':0x1})[_0x513f('0x1e')](function(_0x5f3307){_0x471969({'code':0xc8,'message':[_0x5d570e[_0x513f('0x56')],_0x5f3307['message']['toLowerCase']()][_0x513f('0x14')]('\x20')});})[_0x513f('0x6a')](function(_0x573dc8){_0x42f6f2(_0x218d01[_0x513f('0x11')](0x1f5,[_0x5d570e[_0x513f('0x56')],_0x573dc8[_0x513f('0x1a')][_0x513f('0x5f')]()][_0x513f('0x14')]('\x20')));});}else{return _0x42f6f2(_0x218d01[_0x513f('0x11')](0x1f5,_0x513f('0x65')));}});},'Agents':function(_0xf66559){return new Promise(function(_0x334569,_0x46bd24){var _0x1f5eab=_['values'](_0x3a9531[_0x513f('0xc')]);_0x334569({'count':_0x1f5eab[_0x513f('0x52')],'rows':_0x1f5eab});});},'Telephones':function(_0x2b8579){return new Promise(function(_0x5d9981,_0x4b420d){var _0xc6403a=_['values'](_0x3a9531[_0x513f('0x74')]);_0x5d9981({'count':_0xc6403a['length'],'rows':_0xc6403a});});},'Trunks':function(_0x285f0c){return new Promise(function(_0x57f9a9,_0x51c5b9){var _0x335d82=_['values'](_0x3a9531['trunks']);_0x57f9a9({'count':_0x335d82['length'],'rows':_0x335d82});});},'OutboundChannels':function(_0x58f4e7){return new Promise(function(_0x3c81c5,_0x1788cc){var _0x58f6fb=_[_0x513f('0x6f')](_0x3a9531['outboundChannels']);_0x3c81c5({'count':_0x58f6fb['length'],'rows':_0x58f6fb});});},'Outbound':function(_0x5f3368){return new Promise(function(_0x3aee80,_0x4b7351){_0x3aee80(_0x3a9531[_0x513f('0x75')]);});},'Campaigns':function(_0x22675c){return new Promise(function(_0x5289f8,_0xb7657f){var _0x2cfac4=_[_0x513f('0x6f')](_0x3a9531[_0x513f('0x76')]);_0x5289f8({'count':_0x2cfac4[_0x513f('0x52')],'rows':_0x2cfac4});});},'VoiceQueuesPreview':function(_0x491a06){var _0x3a8797=this;return new Promise(function(_0x58918c,_0x5bc9cf){_0x3a6320[_0x513f('0x77')](_0x491a06['id'])[_0x513f('0x1e')](function(_0xa08bac){_0x58918c({'code':0xc8,'message':_0xa08bac[_0x513f('0x1a')]});})['catch'](function(_0x11aafc){_0x5bc9cf(_0x3a8797[_0x513f('0x11')](0x1f4,_0x11aafc['message']));});});},'EventManager':function(_0x3075f2){var _0xa64988=this;return new Promise(function(_0x1b0f54,_0x251911){if(!_0x3075f2['event']){return _0x251911(_0xa64988[_0x513f('0x11')](0x1f4,'Event\x20name\x20mandatory'));}ami[_0x513f('0x78')]('custom:'+_0x3075f2[_0x513f('0x79')],_0x3075f2[_0x513f('0x1a')]);_0x1b0f54({'code':0xc8,'message':_0x3075f2});});},'FaxAccounts':function(_0x7b6de1){return new Promise(function(_0x40d7ba,_0x20b2f5){var _0x791c0a=_[_0x513f('0x6f')](_0x3a9531[_0x513f('0x7a')]);_0x40d7ba({'count':_0x791c0a[_0x513f('0x52')],'rows':_0x791c0a});});},'SendFax':function(_0x21bae1){var _0x4735e9=this;return new Promise(function(_0x3eae3d,_0x5dd87c){_0x8d019b[_0x513f('0x7b')](_0x21bae1)[_0x513f('0x1e')](function(_0x4efad6){_0x3eae3d({'code':0xc8,'message':_0x4efad6[_0x513f('0x1a')]});})[_0x513f('0x6a')](function(_0x10671f){_0x5dd87c(_0x4735e9[_0x513f('0x11')](0x1f4,_0x10671f[_0x513f('0x1a')]));});});},'CheckAfterSend':function(_0x1d91fc){var _0x5d558a=this;return new Promise(function(_0x162786,_0xd42fe0){_0x8d019b[_0x513f('0x7c')](_0x1d91fc)[_0x513f('0x1e')](function(_0x2834a2){_0x162786({'code':0xc8,'message':_0x2834a2[_0x513f('0x1a')]});})[_0x513f('0x6a')](function(_0x42267c){_0xd42fe0(_0x5d558a[_0x513f('0x11')](0x1f4,_0x42267c[_0x513f('0x1a')]));});});}};var _0x46b4b8=jayson[_0x513f('0x7d')](_0x6e5b15)[_0x513f('0x7e')]();_0x46b4b8['on'](_0x513f('0x11'),function(_0x220ff4){return _0x2be368(_0x220ff4);});_0x46b4b8[_0x513f('0x6')](0x232a,_0x513f('0x7f'),function(){console[_0x513f('0x80')](_0x513f('0x81'),0x232a);return _0x579681(_0x513f('0x82')+0x232a);});});};
\ No newline at end of file
+var _0x5e0e=['moment','../../../config/environment','../properties','listen','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','isConnected','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Action','catch','message','error','command','then','content','voiceQueues','hasOwnProperty','strategy','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','total','type','unmanaged','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','callerid','Interval','push','length','undefined','values','voicechannel','find','channels','uniqueid','channel','format','%s.%s','MixMonitor','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','map','resolve','StopMixMonitor','filename','wav','StopMixMonitor\x20Success','queueChannels','Hangup','Redirect','exten','context','telephones','outboundChannels','campaigns','run','event','Event\x20name\x20mandatory','emit','custom:','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','validate','bluebird'];(function(_0x2d6dda,_0x44acd5){var _0x3e43ef=function(_0x40fe8f){while(--_0x40fe8f){_0x2d6dda['push'](_0x2d6dda['shift']());}};_0x3e43ef(++_0x44acd5);}(_0x5e0e,0x89));var _0xe5e0=function(_0x2ff1f6,_0x1bc588){_0x2ff1f6=_0x2ff1f6-0x0;var _0xbae96d=_0x5e0e[_0x2ff1f6];return _0xbae96d;};'use strict';var _=require(_0xe5e0('0x0'));var util=require(_0xe5e0('0x1'));var jayson=require('jayson/promise');var schema=require(_0xe5e0('0x2'));var BPromise=require(_0xe5e0('0x3'));var moment=require(_0xe5e0('0x4'));var config=require(_0xe5e0('0x5'));var properties=require(_0xe5e0('0x6'));var ami=require('../ami');exports[_0xe5e0('0x7')]=function(_0x52407b,_0x239262,_0x3e564e){return new BPromise(function(_0x2ff9ac,_0x1a4c51){var _0xa91224={'QueuePause':function(_0x156c30){return new Promise(function(_0x59a81f,_0x4059cf){var _0x29199a=util['format'](_0xe5e0('0x8'),_0xe5e0('0x9'),_0x156c30[_0xe5e0('0xa')]);if(_0x52407b[_0xe5e0('0xb')]&&_0x52407b[_0xe5e0('0xb')][_0x29199a]&&_0x52407b[_0xe5e0('0xb')][_0x29199a][_0xe5e0('0xc')]){_0x52407b[_0xe5e0('0xb')][_0x29199a][_0xe5e0('0xd')]();}if(_0x52407b[_0xe5e0('0xe')][_0x29199a]){_0x52407b[_0xe5e0('0xe')][_0x29199a][_0xe5e0('0xf')]({'statePause':_0x156c30[_0xe5e0('0x10')]?!![]:![]});}_0x59a81f({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x5cabeb){var _0x43638e=this;return new Promise(function(_0x1100cc,_0x24f33d){if(ami[_0xe5e0('0x11')]()==![]){return _0x24f33d(_0x43638e['error'](0x1f4,[config[_0xe5e0('0x12')]['ip'],config[_0xe5e0('0x12')][_0xe5e0('0x13')],_0xe5e0('0x14')][_0xe5e0('0x15')]('\x20')));}_0x5cabeb=_[_0xe5e0('0x16')](_0x5cabeb,_[_0xe5e0('0x17')](properties[_0xe5e0('0x18')]));_0x5cabeb[_0xe5e0('0x19')]='Reload';return ami[_0xe5e0('0x1a')](_0x5cabeb)['then'](function(_0x417077){_0x1100cc({'code':0xc8,'message':_0x417077['message']});})[_0xe5e0('0x1b')](function(_0x150c3a){_0x24f33d(_0x43638e['error'](0x1f5,_0x150c3a[_0xe5e0('0x1c')]));});});},'Command':function(_0x4a7ea4){var _0xa81bd4=this;return new Promise(function(_0xce7366,_0x3a2480){if(ami[_0xe5e0('0x11')]()==![]){return _0x3a2480(_0xa81bd4[_0xe5e0('0x1d')](0x1f4,[config[_0xe5e0('0x12')]['ip'],config[_0xe5e0('0x12')][_0xe5e0('0x13')],_0xe5e0('0x14')][_0xe5e0('0x15')]('\x20')));}_0x4a7ea4=_[_0xe5e0('0x16')](_0x4a7ea4,_0xe5e0('0x1e'));_0x4a7ea4[_0xe5e0('0x19')]='Command';return ami['Action'](_0x4a7ea4)[_0xe5e0('0x1f')](function(_0x228368){_0xce7366({'code':0xc8,'message':_0x228368[_0xe5e0('0x20')]});})[_0xe5e0('0x1b')](function(_0x3596ca){_0x3a2480(_0xa81bd4[_0xe5e0('0x1d')](0x1f5,_0x3596ca[_0xe5e0('0x1c')]));});});},'VoiceQueues':function(_0x48071c){return new Promise(function(_0xf45724,_0x5df2be){var _0x332c4e=[];for(var _0x6f21de in _0x52407b[_0xe5e0('0x21')]){if(_0x52407b[_0xe5e0('0x21')][_0xe5e0('0x22')](_0x6f21de)){var _0x4867f2=_0x52407b['voiceQueues'][_0x6f21de];var _0x25fe90={'id':_0x4867f2['id'],'name':_0x4867f2['name'],'strategy':_0x4867f2[_0xe5e0('0x23')],'answered':_0x4867f2[_0xe5e0('0x24')],'available':_0x4867f2[_0xe5e0('0x25')],'loggedIn':_0x4867f2[_0xe5e0('0x26')],'pTalking':_0x4867f2[_0xe5e0('0x27')],'sumBillable':_0x4867f2[_0xe5e0('0x28')],'sumDuration':_0x4867f2['sumDuration'],'sumHoldTime':_0x4867f2[_0xe5e0('0x29')]||0x0,'talking':_0x4867f2['talking'],'total':_0x4867f2[_0xe5e0('0x2a')],'type':_0x4867f2[_0xe5e0('0x2b')],'unmanaged':_0x4867f2[_0xe5e0('0x2c')],'abandoned':_0x4867f2['abandoned'],'waiting':_0x4867f2[_0xe5e0('0x2d')],'loggedInDb':_0x4867f2[_0xe5e0('0x2e')]};if(_0x4867f2[_0xe5e0('0x2b')]===_0xe5e0('0x2f')){_0x25fe90[_0xe5e0('0x30')]=_0x4867f2['dialActive'];_0x25fe90[_0xe5e0('0x31')]=_0x4867f2[_0xe5e0('0x31')];_0x25fe90[_0xe5e0('0x32')]=_0x4867f2[_0xe5e0('0x32')];_0x25fe90['dialOriginateCallerIdNumber']=_0x4867f2[_0xe5e0('0x33')];_0x25fe90[_0xe5e0('0x34')]=_0x4867f2[_0xe5e0('0x34')];_0x25fe90[_0xe5e0('0x35')]=_0x4867f2[_0xe5e0('0x35')];_0x25fe90[_0xe5e0('0x36')]=_0x4867f2[_0xe5e0('0x36')];_0x25fe90[_0xe5e0('0x37')]=_0x4867f2[_0xe5e0('0x37')];_0x25fe90[_0xe5e0('0x38')]=_0x4867f2[_0xe5e0('0x38')];_0x25fe90[_0xe5e0('0x39')]=_0x4867f2[_0xe5e0('0x39')];_0x25fe90[_0xe5e0('0x3a')]=_0x4867f2[_0xe5e0('0x3a')];_0x25fe90[_0xe5e0('0x3b')]=_0x4867f2['outboundCongestionCallsDay'];_0x25fe90['outboundDropCallsDayACS']=_0x4867f2[_0xe5e0('0x3c')];_0x25fe90[_0xe5e0('0x3d')]=_0x4867f2[_0xe5e0('0x3d')];_0x25fe90['outboundDropCallsDayTimeout']=_0x4867f2[_0xe5e0('0x3e')];_0x25fe90[_0xe5e0('0x3f')]=_0x4867f2[_0xe5e0('0x3f')];_0x25fe90['outboundNoSuchCallsDay']=_0x4867f2[_0xe5e0('0x40')];_0x25fe90[_0xe5e0('0x41')]=_0x4867f2[_0xe5e0('0x41')];_0x25fe90[_0xe5e0('0x42')]=_0x4867f2['outboundReCallsDay'];_0x25fe90[_0xe5e0('0x43')]=_0x4867f2['outboundRejectCallsDay'];_0x25fe90[_0xe5e0('0x44')]=_0x4867f2['outboundUnknownCallsDay'];_0x25fe90[_0xe5e0('0x45')]=_0x4867f2['predictiveIntervalAnsweredCalls'];_0x25fe90[_0xe5e0('0x46')]=_0x4867f2[_0xe5e0('0x46')];_0x25fe90['predictiveIntervalAvgTalktime']=_0x4867f2[_0xe5e0('0x47')];_0x25fe90[_0xe5e0('0x48')]=_0x4867f2[_0xe5e0('0x48')];_0x25fe90[_0xe5e0('0x49')]=_0x4867f2[_0xe5e0('0x49')];_0x25fe90[_0xe5e0('0x4a')]=_0x4867f2[_0xe5e0('0x4a')];_0x25fe90[_0xe5e0('0x4b')]=_0x4867f2[_0xe5e0('0x4b')];_0x25fe90[_0xe5e0('0x4c')]=_0x4867f2[_0xe5e0('0x4c')];_0x25fe90['predictiveIntervalMultiplicativeFactor']=_0x4867f2[_0xe5e0('0x4d')];_0x25fe90[_0xe5e0('0x4e')]=_0x4867f2[_0xe5e0('0x4e')];_0x25fe90[_0xe5e0('0x4f')]=_0x4867f2[_0xe5e0('0x4f')];_0x25fe90['predictiveIntervalTotalCalls']=_0x4867f2[_0xe5e0('0x50')];_0x25fe90[_0xe5e0('0x1c')]=_0x4867f2[_0xe5e0('0x1c')];_0x25fe90[_0xe5e0('0x51')]=_0x4867f2['originated'];_0x25fe90[_0xe5e0('0x52')]=_0x4867f2[_0xe5e0('0x52')];_0x25fe90[_0xe5e0('0x53')]=_0x4867f2[_0xe5e0('0x53')];_0x25fe90[_0xe5e0('0x54')]=_0x4867f2['erlangAbandonmentRate'];_0x25fe90[_0xe5e0('0x55')]=_0x4867f2['erlangBusyFactor'];_0x25fe90['startPredictive']=_0x4867f2[_0xe5e0('0x56')];_0x25fe90[_0xe5e0('0x57')]=_0x4867f2[_0xe5e0('0x57')];}if(_0x4867f2[_0xe5e0('0x58')]){_0x25fe90[_0xe5e0('0x58')]={'id':_0x4867f2['Trunk']['id'],'name':_0x4867f2[_0xe5e0('0x58')][_0xe5e0('0xa')],'active':_0x4867f2['Trunk']['active'],'callerid':_0x4867f2[_0xe5e0('0x58')][_0xe5e0('0x59')]};}if(_0x4867f2[_0xe5e0('0x5a')]){_0x25fe90[_0xe5e0('0x5a')]={'id':_0x4867f2[_0xe5e0('0x5a')]['id'],'name':_0x4867f2['Interval'][_0xe5e0('0xa')]};}_0x332c4e[_0xe5e0('0x5b')](_0x25fe90);}}_0xf45724({'count':_0x332c4e[_0xe5e0('0x5c')],'rows':_0x332c4e});});},'UpdateVoiceQueue':function(_0x56994a){return new Promise(function(_0x3b86e1,_0x21b731){var _0x12ba02=_['find'](_0x52407b['voiceQueues'],{'id':parseInt(_0x56994a['id'])});var _0x43df1d=_['omit'](_0x56994a,['id']);if(_0x12ba02){for(var _0x3084ff in _0x43df1d){if(typeof _0x43df1d[_0x3084ff]!==_0xe5e0('0x5d')&&typeof _0x12ba02[_0x3084ff]!==_0xe5e0('0x5d')){_0x12ba02[_0x3084ff]=_0x43df1d[_0x3084ff];}}_0x3b86e1(_0x12ba02);}else{_0x21b731();}});},'VoiceChannels':function(_0x160803){return new Promise(function(_0x183e81,_0x2138ae){var _0x38fd91=_[_0xe5e0('0x5e')](_0x52407b['channels']);_0x183e81({'count':_0x38fd91['length'],'rows':_0x38fd91});});},'VoiceChannelMixMonitor':function(_0x552a9e){var _0x314ee7=this;return new Promise(function(_0x4fd77b,_0x494257){if(ami['isConnected']()==![]){return _0x494257(_0x314ee7['error'](0x1f4,[config['asterisk']['ip'],config[_0xe5e0('0x12')]['username'],_0xe5e0('0x14')]['join']('\x20')));}var _0x47974f=schema(properties[_0xe5e0('0x5f')])[_0xe5e0('0x2')](_0x552a9e);if(_0x47974f['length']>0x0){return _0x494257(_0x314ee7['error'](0x1f4,_['map'](_0x47974f,_0xe5e0('0x1c'))[_0xe5e0('0x15')](',\x20')));}var _0x3836cb=_[_0xe5e0('0x60')](_0x52407b[_0xe5e0('0x61')],{'uniqueid':_0x552a9e[_0xe5e0('0x62')]});if(_0x3836cb&&_0x3836cb[_0xe5e0('0x63')]){var _0x530d10=util[_0xe5e0('0x64')](_0xe5e0('0x65'),_0x552a9e['filename']||_0x552a9e[_0xe5e0('0x62')],_0x552a9e[_0xe5e0('0x64')]||'wav');return ami[_0xe5e0('0x1a')]({'action':_0xe5e0('0x66'),'channel':_0x3836cb[_0xe5e0('0x63')],'file':_0x530d10,'options':_0xe5e0('0x67')})[_0xe5e0('0x1f')](function(_0x38e40){var _0x4cfdd1=_[_0xe5e0('0x60')](_0x3836cb[_0xe5e0('0x68')],{'filename':_0xe5e0('0x69')+_0x530d10[_0xe5e0('0x6a')]()});if(_[_0xe5e0('0x6b')](_0x4cfdd1)){_0x3836cb['monitors'][_0xe5e0('0x5b')]({'filename':_0xe5e0('0x69')+_0x530d10['toLowerCase'](),'createdAt':moment()[_0xe5e0('0x64')](_0xe5e0('0x6c')),'mixmonitorid':_0x38e40[_0xe5e0('0x6d')],'status':_0xe5e0('0x6e')});}else{_0x4cfdd1[_0xe5e0('0x6d')]=_0x38e40[_0xe5e0('0x6d')];_0x4cfdd1[_0xe5e0('0x6f')]=_0xe5e0('0x6e');}_0x4fd77b({'code':0xc8,'message':[_0x552a9e[_0xe5e0('0x62')],_0xe5e0('0x70'),_0x38e40['mixmonitorid']][_0xe5e0('0x15')]('\x20'),'mixmonitorid':_0x38e40[_0xe5e0('0x6d')]});})['catch'](function(_0x44d6bd){_0x494257(_0x314ee7[_0xe5e0('0x1d')](0x1f5,[_0x552a9e[_0xe5e0('0x62')],_0x44d6bd[_0xe5e0('0x1c')][_0xe5e0('0x6a')]()][_0xe5e0('0x15')]('\x20')));});}else{return _0x494257(_0x314ee7[_0xe5e0('0x1d')](0x1f5,_0xe5e0('0x71')));}});},'VoiceChannelStopMixMonitor':function(_0x12e5a3){var _0x38c0e8=this;return new Promise(function(_0x21f7ed,_0x37c521){if(ami[_0xe5e0('0x11')]()==![]){return _0x37c521(_0x38c0e8[_0xe5e0('0x1d')](0x1f4,[config[_0xe5e0('0x12')]['ip'],config[_0xe5e0('0x12')][_0xe5e0('0x13')],'ami\x20disconnected'][_0xe5e0('0x15')]('\x20')));}var _0xe7caf6=schema(properties[_0xe5e0('0x5f')])['validate'](_0x12e5a3);if(_0xe7caf6[_0xe5e0('0x5c')]>0x0){return _0x37c521(_0x38c0e8[_0xe5e0('0x1d')](0x1f4,_[_0xe5e0('0x72')](_0xe7caf6,_0xe5e0('0x1c'))[_0xe5e0('0x15')](',\x20')));}var _0x13932c=_[_0xe5e0('0x60')](_0x52407b[_0xe5e0('0x61')],{'uniqueid':_0x12e5a3[_0xe5e0('0x62')]});if(_0x13932c){return BPromise[_0xe5e0('0x73')]()[_0xe5e0('0x1f')](function(){if(_0x13932c['channel']){return ami[_0xe5e0('0x1a')]({'action':_0xe5e0('0x74'),'channel':_0x13932c[_0xe5e0('0x63')],'mixmonitorid':_0x12e5a3[_0xe5e0('0x6d')]})[_0xe5e0('0x1b')](function(_0x5b15fc){});}})[_0xe5e0('0x1f')](function(){if(_0x13932c['destinationchannel']){return ami[_0xe5e0('0x1a')]({'action':_0xe5e0('0x74'),'channel':_0x13932c['destinationchannel'],'mixmonitorid':_0x12e5a3[_0xe5e0('0x6d')]})[_0xe5e0('0x1b')](function(_0x596990){});}})[_0xe5e0('0x1f')](function(_0x312293){var _0x24f370=_[_0xe5e0('0x60')](_0x13932c[_0xe5e0('0x68')],{'mixmonitorid':_0x12e5a3['mixmonitorid']});if(_0x24f370){_0x24f370[_0xe5e0('0x6f')]='stop';}})[_0xe5e0('0x1f')](function(){var _0x52106a=util[_0xe5e0('0x64')](_0xe5e0('0x65'),_0x12e5a3[_0xe5e0('0x75')]||_0x12e5a3[_0xe5e0('0x62')],_0x12e5a3[_0xe5e0('0x64')]||_0xe5e0('0x76'));var _0x17fb65=_[_0xe5e0('0x60')](_0x13932c['monitors'],{'filename':_0xe5e0('0x69')+_0x52106a[_0xe5e0('0x6a')]()});if(_0x17fb65){_0x17fb65[_0xe5e0('0x6f')]='stop';}})[_0xe5e0('0x1f')](function(){_0x21f7ed({'code':0xc8,'message':[_0x12e5a3[_0xe5e0('0x62')],_0xe5e0('0x77')]['join']('\x20')});})['catch'](function(_0x3803d8){_0x37c521(_0x38c0e8[_0xe5e0('0x1d')](0x1f5,[_0x12e5a3[_0xe5e0('0x62')],_0x3803d8[_0xe5e0('0x1c')]['toLowerCase']()][_0xe5e0('0x15')]('\x20')));});}else{return _0x37c521(_0x38c0e8['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x4d4908){return new Promise(function(_0xd0bb59,_0x41df32){var _0x49a874=_[_0xe5e0('0x5e')](_0x52407b[_0xe5e0('0x78')]);_0xd0bb59({'count':_0x49a874[_0xe5e0('0x5c')],'rows':_0x49a874});});},'VoiceQueuesChannel':function(_0x214df7){var _0x16cfe1=this;return new Promise(function(_0x16ac31,_0x1e3281){var _0x105b24=schema(properties['voicequeuechannel'])[_0xe5e0('0x2')](_0x214df7);if(_0x105b24[_0xe5e0('0x5c')]>0x0){return _0x1e3281(_0x16cfe1[_0xe5e0('0x1d')](0x1f4,_['map'](_0x105b24,_0xe5e0('0x1c'))[_0xe5e0('0x15')](',\x20')));}var _0x5cdbbf=_['find'](_0x52407b['queueChannels'],{'uniqueid':_0x214df7[_0xe5e0('0x62')]});if(_0x5cdbbf){_0x16ac31(_0x5cdbbf);}else{return _0x1e3281(_0x16cfe1[_0xe5e0('0x1d')](0x1f5,_0xe5e0('0x71')));}});},'VoiceQueuesChannelHangup':function(_0x296d5c){var _0x394a7f=this;return new Promise(function(_0x34caa4,_0xc140c9){if(ami[_0xe5e0('0x11')]()==![]){return _0xc140c9(_0x394a7f['error'](0x1f4,[config['asterisk']['ip'],config[_0xe5e0('0x12')]['username'],'ami\x20disconnected']['join']('\x20')));}var _0x58dcef=schema(properties['voicequeuechannelhangup'])[_0xe5e0('0x2')](_0x296d5c);if(_0x58dcef['length']>0x0){return _0xc140c9(_0x394a7f[_0xe5e0('0x1d')](0x1f4,_[_0xe5e0('0x72')](_0x58dcef,_0xe5e0('0x1c'))['join'](',\x20')));}var _0x261a5a=_[_0xe5e0('0x60')](_0x52407b[_0xe5e0('0x78')],{'uniqueid':_0x296d5c['uniqueid']});if(_0x261a5a&&_0x261a5a[_0xe5e0('0x63')]){return ami[_0xe5e0('0x1a')]({'action':_0xe5e0('0x79'),'channel':_0x261a5a[_0xe5e0('0x63')]})['then'](function(_0x12d9f5){_0x34caa4({'code':0xc8,'message':[_0x296d5c[_0xe5e0('0x62')],_0x12d9f5[_0xe5e0('0x1c')]['toLowerCase']()][_0xe5e0('0x15')]('\x20')});})[_0xe5e0('0x1b')](function(_0x135bad){_0xc140c9(_0x394a7f[_0xe5e0('0x1d')](0x1f5,[_0x296d5c[_0xe5e0('0x62')],_0x135bad['message'][_0xe5e0('0x6a')]()]['join']('\x20')));});}else{return _0xc140c9(_0x394a7f[_0xe5e0('0x1d')](0x1f5,_0xe5e0('0x71')));}});},'VoiceQueuesChannelRedirect':function(_0x44aa4f){var _0x5a9b7a=this;return new Promise(function(_0x5365d7,_0x3ddad0){if(ami['isConnected']()==![]){return _0x3ddad0(_0x5a9b7a[_0xe5e0('0x1d')](0x1f4,[config['asterisk']['ip'],config[_0xe5e0('0x12')][_0xe5e0('0x13')],_0xe5e0('0x14')][_0xe5e0('0x15')]('\x20')));}var _0xa5b53d=schema(properties['voicequeuechannelredirect'])[_0xe5e0('0x2')](_0x44aa4f);if(_0xa5b53d[_0xe5e0('0x5c')]>0x0){return _0x3ddad0(_0x5a9b7a['error'](0x1f4,_[_0xe5e0('0x72')](_0xa5b53d,_0xe5e0('0x1c'))[_0xe5e0('0x15')](',\x20')));}var _0x520691=_['find'](_0x52407b[_0xe5e0('0x78')],{'uniqueid':_0x44aa4f[_0xe5e0('0x62')]});if(_0x520691&&_0x520691[_0xe5e0('0x63')]){return ami[_0xe5e0('0x1a')]({'action':_0xe5e0('0x7a'),'channel':_0x520691[_0xe5e0('0x63')],'exten':_0x44aa4f[_0xe5e0('0x7b')],'context':_0x44aa4f[_0xe5e0('0x7c')]||_0x520691['context'],'priority':0x1})[_0xe5e0('0x1f')](function(_0x4b8620){_0x5365d7({'code':0xc8,'message':[_0x44aa4f[_0xe5e0('0x62')],_0x4b8620['message']['toLowerCase']()][_0xe5e0('0x15')]('\x20')});})[_0xe5e0('0x1b')](function(_0x3ab8ca){_0x3ddad0(_0x5a9b7a[_0xe5e0('0x1d')](0x1f5,[_0x44aa4f['uniqueid'],_0x3ab8ca[_0xe5e0('0x1c')][_0xe5e0('0x6a')]()]['join']('\x20')));});}else{return _0x3ddad0(_0x5a9b7a[_0xe5e0('0x1d')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x39f0fc){return new Promise(function(_0x309012,_0x59c32f){var _0x3fb1c3=_[_0xe5e0('0x5e')](_0x52407b[_0xe5e0('0xe')]);_0x309012({'count':_0x3fb1c3['length'],'rows':_0x3fb1c3});});},'Telephones':function(_0x47b2e7){return new Promise(function(_0x27ae6a,_0x56eac2){var _0x272856=_[_0xe5e0('0x5e')](_0x52407b[_0xe5e0('0x7d')]);_0x27ae6a({'count':_0x272856[_0xe5e0('0x5c')],'rows':_0x272856});});},'Trunks':function(_0x2233d6){return new Promise(function(_0x430b70,_0x26e9dc){var _0x3ecced=_['values'](_0x52407b['trunks']);_0x430b70({'count':_0x3ecced[_0xe5e0('0x5c')],'rows':_0x3ecced});});},'OutboundChannels':function(_0x57c295){return new Promise(function(_0x24cbd1,_0x3e719e){var _0x4c47e7=_[_0xe5e0('0x5e')](_0x52407b[_0xe5e0('0x7e')]);_0x24cbd1({'count':_0x4c47e7[_0xe5e0('0x5c')],'rows':_0x4c47e7});});},'Outbound':function(_0x42523b){return new Promise(function(_0x282fb6,_0x1c1318){_0x282fb6(_0x52407b[_0xe5e0('0x2f')]);});},'Campaigns':function(_0x25991a){return new Promise(function(_0x5b2c5d,_0x491dd3){var _0x5d5bd4=_[_0xe5e0('0x5e')](_0x52407b[_0xe5e0('0x7f')]);_0x5b2c5d({'count':_0x5d5bd4[_0xe5e0('0x5c')],'rows':_0x5d5bd4});});},'VoiceQueuesPreview':function(_0x4fcf7e){var _0x520e3c=this;return new Promise(function(_0x102ea7,_0x1d9a34){_0x239262[_0xe5e0('0x80')](_0x4fcf7e['id'])[_0xe5e0('0x1f')](function(_0x54b7c2){_0x102ea7({'code':0xc8,'message':_0x54b7c2[_0xe5e0('0x1c')]});})[_0xe5e0('0x1b')](function(_0x28da71){_0x1d9a34(_0x520e3c[_0xe5e0('0x1d')](0x1f4,_0x28da71[_0xe5e0('0x1c')]));});});},'EventManager':function(_0x1a558f){var _0x3280ed=this;return new Promise(function(_0x31023a,_0x2bf02c){if(!_0x1a558f[_0xe5e0('0x81')]){return _0x2bf02c(_0x3280ed[_0xe5e0('0x1d')](0x1f4,_0xe5e0('0x82')));}ami[_0xe5e0('0x83')](_0xe5e0('0x84')+_0x1a558f[_0xe5e0('0x81')],_0x1a558f['message']);_0x31023a({'code':0xc8,'message':_0x1a558f});});},'FaxAccounts':function(_0x2f7df8){return new Promise(function(_0x54922c,_0x35fbd6){var _0x568aca=_[_0xe5e0('0x5e')](_0x52407b[_0xe5e0('0x85')]);_0x54922c({'count':_0x568aca[_0xe5e0('0x5c')],'rows':_0x568aca});});},'SendFax':function(_0x36231d){var _0x6989a6=this;return new Promise(function(_0x524ab0,_0x411720){_0x3e564e[_0xe5e0('0x86')](_0x36231d)['then'](function(_0x3a20e4){_0x524ab0({'code':0xc8,'message':_0x3a20e4[_0xe5e0('0x1c')]});})['catch'](function(_0xb6b336){_0x411720(_0x6989a6['error'](0x1f4,_0xb6b336['message']));});});},'CheckAfterSend':function(_0x56f40a){var _0x58ca90=this;return new Promise(function(_0x2794b0,_0x371ef5){_0x3e564e[_0xe5e0('0x87')](_0x56f40a)[_0xe5e0('0x1f')](function(_0x597cdd){_0x2794b0({'code':0xc8,'message':_0x597cdd[_0xe5e0('0x1c')]});})['catch'](function(_0xc922ac){_0x371ef5(_0x58ca90['error'](0x1f4,_0xc922ac[_0xe5e0('0x1c')]));});});}};var _0x5bfaf0=jayson[_0xe5e0('0x88')](_0xa91224)[_0xe5e0('0x89')]();_0x5bfaf0['on'](_0xe5e0('0x1d'),function(_0xc804a2){return _0x1a4c51(_0xc804a2);});_0x5bfaf0['listen'](0x232a,_0xe5e0('0x8a'),function(){console[_0xe5e0('0x8b')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x2ff9ac(_0xe5e0('0x8c')+0x232a);});});};
\ No newline at end of file
index a9676dc..504bbb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x515e=['lastName','mobile','fax','createdAt','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','routeId','calleridname','<unknown>','Unknown','destcalleridname','createContact','[CM][%s][%s]\x20Contact\x20created:%s','format','user:%s','trigger:%s','toLowerCase','merge','lodash','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','[CM][%s][%s]','emit','exec','data1','data2','xmd-contactid','ListId','data3','split','phone','$or','map','destcalleridnum','calleridnum','firstName'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x515e,0x1d4));var _0xe515=function(_0x4b4638,_0xe99cda){_0x4b4638=_0x4b4638-0x0;var _0x59e92b=_0x515e[_0x4b4638];return _0x59e92b;};'use strict';var _=require(_0xe515('0x0'));var BPromise=require('bluebird');var Redis=require(_0xe515('0x1'));var util=require(_0xe515('0x2'));var config=require(_0xe515('0x3'));var logger=require(_0xe515('0x4'))(_0xe515('0x5'));var cmContactRpc=require(_0xe515('0x6'));config[_0xe515('0x7')]=_[_0xe515('0x8')](config['redis'],{'host':_0xe515('0x9'),'port':0x18eb});var io=require(_0xe515('0xa'))(new Redis(config[_0xe515('0x7')]));function emit(_0x4948fb,_0x3de219,_0x57b55d,_0x3e03e0,_0x4fbf51){logger[_0xe515('0xb')](_0xe515('0xc'),_0x4948fb,_0x3de219['id'],_0x57b55d,_0x3e03e0,JSON['stringify'](_0x4fbf51));io['to'](_0x57b55d)[_0xe515('0xd')](_0x3e03e0,_0x4fbf51);}exports[_0xe515('0xe')]=function(_0x218c91,_0x4ab8f3,_0x1c57a2,_0x2dc514){var _0x5a8f3,_0x989b83;var _0x250fbf={};var _0x4c400e=Number(_0x1c57a2[_0xe515('0xf')]);var _0x47c616=_0x1c57a2['data2']?Boolean(Number(_0x1c57a2[_0xe515('0x10')])):![];var _0x269899;if(_0x2dc514[_0xe515('0x11')]){_0x250fbf['id']=_0x2dc514[_0xe515('0x11')];}if(!_0x250fbf['id']){_0x250fbf[_0xe515('0x12')]=_0x4c400e;_0x269899=_0x1c57a2[_0xe515('0x13')]&&_0x1c57a2[_0xe515('0x13')]!=='0'?_0x1c57a2[_0xe515('0x13')][_0xe515('0x14')](','):[_0xe515('0x15')];_0x250fbf[_0xe515('0x16')]=_[_0xe515('0x17')](_0x269899,function(_0x2c522d){var _0x29ad93={};_0x29ad93[_0x2c522d]=_0x2dc514['routeId']?_0x2dc514[_0xe515('0x18')]:_0x2dc514[_0xe515('0x19')];return _0x29ad93;});}var _0x337608=['id',_0xe515('0x1a'),_0xe515('0x1b'),_0xe515('0x15'),_0xe515('0x1c'),_0xe515('0x1d'),_0xe515('0x12'),_0xe515('0x1e'),'scheduledAt','updatedAt'];var _0x3b31b1=_['union'](_0x337608,_0x269899);BPromise[_0xe515('0x1f')]()[_0xe515('0x20')](cmContactRpc[_0xe515('0x21')]({'attributes':_0x3b31b1,'where':_0x250fbf}))[_0xe515('0x20')](function(_0x3c937c){_0x989b83=_0x3c937c;if(!_[_0xe515('0x22')](_0x989b83)){if(_0x989b83[_0xe515('0x23')]===0x1){_0x5a8f3=_0x989b83[0x0];logger[_0xe515('0xb')](_0xe515('0x24'),_0x2dc514[_0xe515('0x25')],_0x4ab8f3['id'],_0x5a8f3['id']);}else{logger[_0xe515('0xb')](_0xe515('0x26'),_0x2dc514[_0xe515('0x25')],_0x4ab8f3['id'],_['map'](_0x989b83,'id')['join'](','));}return;}else{logger[_0xe515('0xb')](_0xe515('0x27'),_0x2dc514[_0xe515('0x25')],_0x4ab8f3['id']);var _0x3daeea={'ListId':_0x4c400e};var _0x1404e4=_0x1c57a2['data4']&&_0x1c57a2[_0xe515('0x28')]!=='0'?_0x1c57a2[_0xe515('0x28')]:_0xe515('0x15');if(_0x47c616){logger[_0xe515('0xb')](_0xe515('0x29'),_0x2dc514[_0xe515('0x25')],_0x4ab8f3['id']);_0x3daeea[_0x1404e4]=_[_0xe515('0x2a')](_0x2dc514[_0xe515('0x2b')])?_0x2dc514[_0xe515('0x19')]:_0x2dc514[_0xe515('0x18')];if(_[_0xe515('0x2a')](_0x2dc514[_0xe515('0x2b')])){_0x3daeea[_0xe515('0x1a')]=_0x2dc514[_0xe515('0x2c')]&&_0x2dc514[_0xe515('0x2c')]!==_0xe515('0x2d')?_0x2dc514[_0xe515('0x2c')]:_0xe515('0x2e');}else{_0x3daeea[_0xe515('0x1a')]=_0x2dc514[_0xe515('0x2f')]&&_0x2dc514[_0xe515('0x2f')]!==_0xe515('0x2d')?_0x2dc514[_0xe515('0x2f')]:_0xe515('0x2e');}return BPromise['resolve']()[_0xe515('0x20')](cmContactRpc[_0xe515('0x30')](_0x3daeea))['then'](function(_0x1dfb9e){_0x5a8f3=_0x1dfb9e;_0x989b83['push'](_0x1dfb9e);if(_0x5a8f3){logger[_0xe515('0xb')](_0xe515('0x31'),_0x2dc514[_0xe515('0x25')],_0x4ab8f3['id'],_0x5a8f3['id']);}return;});}else{logger[_0xe515('0xb')]('[CM][%s][%s]\x20Autocreate\x20disabled',_0x2dc514[_0xe515('0x25')],_0x4ab8f3['id']);_0x3daeea[_0x1404e4]=_['isNil'](_0x2dc514['routeId'])?_0x2dc514[_0xe515('0x19')]:_0x2dc514[_0xe515('0x18')];if(_[_0xe515('0x2a')](_0x2dc514[_0xe515('0x2b')])){_0x3daeea['firstName']=_0x2dc514['calleridname']&&_0x2dc514[_0xe515('0x2c')]!==_0xe515('0x2d')?_0x2dc514[_0xe515('0x2c')]:_0xe515('0x2e');}else{_0x3daeea['firstName']=_0x2dc514['destcalleridname']&&_0x2dc514[_0xe515('0x2f')]!==_0xe515('0x2d')?_0x2dc514[_0xe515('0x2f')]:_0xe515('0x2e');}_0x5a8f3=_0x3daeea;_0x989b83['push'](_0x3daeea);return;}}})['then'](function(){if(_0x218c91){emit(_0x2dc514[_0xe515('0x25')],_0x4ab8f3,util[_0xe515('0x32')](_0xe515('0x33'),_0x218c91['name']),util['format'](_0xe515('0x34'),_0x1c57a2['action'][_0xe515('0x35')]()),{'evt':_[_0xe515('0x36')](_0x2dc514,{'autoCreate':_0x47c616}),'contact':_0x5a8f3===undefined?{}:_0x5a8f3,'contacts':_0x989b83['length']===0x0?undefined:_0x989b83});}});};
\ No newline at end of file
+var _0xd6d6=['isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','phone','[CM][%s][%s]\x20Autocreate\x20enabled','routeId','calleridname','<unknown>','Unknown','destcalleridname','push','[CM][%s][%s]\x20Autocreate\x20disabled','user:%s','name','format','action','toLowerCase','merge','lodash','bluebird','ioredis','util','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','info','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','$or','map','destcalleridnum','calleridnum','firstName','mobile','createdAt','scheduledAt','updatedAt','union','resolve','then','getContacts'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x347e8b,_0x113292){_0x347e8b=_0x347e8b-0x0;var _0x465422=_0xd6d6[_0x347e8b];return _0x465422;};'use strict';var _=require(_0x6d6d('0x0'));var BPromise=require(_0x6d6d('0x1'));var Redis=require(_0x6d6d('0x2'));var util=require(_0x6d6d('0x3'));var config=require('../../../../config/environment');var logger=require(_0x6d6d('0x4'))(_0x6d6d('0x5'));var cmContactRpc=require(_0x6d6d('0x6'));config[_0x6d6d('0x7')]=_[_0x6d6d('0x8')](config[_0x6d6d('0x7')],{'host':_0x6d6d('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6d6d('0x7')]));function emit(_0x1bf731,_0x44f83d,_0x18f824,_0xd49f57,_0x408f88){logger[_0x6d6d('0xa')]('[CM][%s][%s]',_0x1bf731,_0x44f83d['id'],_0x18f824,_0xd49f57,JSON['stringify'](_0x408f88));io['to'](_0x18f824)[_0x6d6d('0xb')](_0xd49f57,_0x408f88);}exports[_0x6d6d('0xc')]=function(_0x23b18a,_0x290dfb,_0xf84314,_0x576c88){var _0x1f2b86,_0x158f82;var _0x49b59c={};var _0x4fbe9c=Number(_0xf84314[_0x6d6d('0xd')]);var _0x32146d=_0xf84314[_0x6d6d('0xe')]?Boolean(Number(_0xf84314[_0x6d6d('0xe')])):![];var _0x2b74ed;var _0x41fbdf=![];if(!_[_0x6d6d('0xf')](_0xf84314[_0x6d6d('0x10')])){if(_0xf84314['data5']=='1')_0x41fbdf=!![];}if(!_0x41fbdf){if(_0x576c88[_0x6d6d('0x11')]){_0x49b59c['id']=_0x576c88[_0x6d6d('0x11')];}}if(!_0x49b59c['id']){_0x49b59c[_0x6d6d('0x12')]=_0x4fbe9c;_0x2b74ed=_0xf84314[_0x6d6d('0x13')]&&_0xf84314[_0x6d6d('0x13')]!=='0'?_0xf84314['data3'][_0x6d6d('0x14')](','):['phone'];_0x49b59c[_0x6d6d('0x15')]=_[_0x6d6d('0x16')](_0x2b74ed,function(_0x1cc02b){var _0x4bb3d1={};_0x4bb3d1[_0x1cc02b]=_0x576c88['routeId']?_0x576c88[_0x6d6d('0x17')]:_0x576c88[_0x6d6d('0x18')];return _0x4bb3d1;});}var _0x2b59d4=['id',_0x6d6d('0x19'),'lastName','phone',_0x6d6d('0x1a'),'fax',_0x6d6d('0x12'),_0x6d6d('0x1b'),_0x6d6d('0x1c'),_0x6d6d('0x1d')];var _0x40d35b=_[_0x6d6d('0x1e')](_0x2b59d4,_0x2b74ed);BPromise[_0x6d6d('0x1f')]()[_0x6d6d('0x20')](cmContactRpc[_0x6d6d('0x21')]({'attributes':_0x40d35b,'where':_0x49b59c}))[_0x6d6d('0x20')](function(_0x24b10d){_0x158f82=_0x24b10d;if(!_[_0x6d6d('0x22')](_0x158f82)){if(_0x158f82[_0x6d6d('0x23')]===0x1){_0x1f2b86=_0x158f82[0x0];logger[_0x6d6d('0xa')](_0x6d6d('0x24'),_0x576c88[_0x6d6d('0x25')],_0x290dfb['id'],_0x1f2b86['id']);}else{logger[_0x6d6d('0xa')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x576c88[_0x6d6d('0x25')],_0x290dfb['id'],_[_0x6d6d('0x16')](_0x158f82,'id')[_0x6d6d('0x26')](','));}return;}else{logger[_0x6d6d('0xa')](_0x6d6d('0x27'),_0x576c88[_0x6d6d('0x25')],_0x290dfb['id']);var _0x554f8e={'ListId':_0x4fbe9c};var _0x2851dd=_0xf84314[_0x6d6d('0x28')]&&_0xf84314[_0x6d6d('0x28')]!=='0'?_0xf84314[_0x6d6d('0x28')]:_0x6d6d('0x29');if(_0x32146d){logger[_0x6d6d('0xa')](_0x6d6d('0x2a'),_0x576c88['uniqueid'],_0x290dfb['id']);_0x554f8e[_0x2851dd]=_[_0x6d6d('0xf')](_0x576c88[_0x6d6d('0x2b')])?_0x576c88['calleridnum']:_0x576c88['destcalleridnum'];if(_[_0x6d6d('0xf')](_0x576c88[_0x6d6d('0x2b')])){_0x554f8e[_0x6d6d('0x19')]=_0x576c88['calleridname']&&_0x576c88[_0x6d6d('0x2c')]!==_0x6d6d('0x2d')?_0x576c88[_0x6d6d('0x2c')]:_0x6d6d('0x2e');}else{_0x554f8e[_0x6d6d('0x19')]=_0x576c88[_0x6d6d('0x2f')]&&_0x576c88[_0x6d6d('0x2f')]!==_0x6d6d('0x2d')?_0x576c88[_0x6d6d('0x2f')]:_0x6d6d('0x2e');}return BPromise['resolve']()[_0x6d6d('0x20')](cmContactRpc['createContact'](_0x554f8e))[_0x6d6d('0x20')](function(_0x1ea9b2){_0x1f2b86=_0x1ea9b2;_0x158f82[_0x6d6d('0x30')](_0x1ea9b2);if(_0x1f2b86){logger[_0x6d6d('0xa')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x576c88[_0x6d6d('0x25')],_0x290dfb['id'],_0x1f2b86['id']);}return;});}else{logger['info'](_0x6d6d('0x31'),_0x576c88[_0x6d6d('0x25')],_0x290dfb['id']);_0x554f8e[_0x2851dd]=_['isNil'](_0x576c88[_0x6d6d('0x2b')])?_0x576c88[_0x6d6d('0x18')]:_0x576c88[_0x6d6d('0x17')];if(_[_0x6d6d('0xf')](_0x576c88[_0x6d6d('0x2b')])){_0x554f8e[_0x6d6d('0x19')]=_0x576c88[_0x6d6d('0x2c')]&&_0x576c88[_0x6d6d('0x2c')]!==_0x6d6d('0x2d')?_0x576c88[_0x6d6d('0x2c')]:_0x6d6d('0x2e');}else{_0x554f8e[_0x6d6d('0x19')]=_0x576c88[_0x6d6d('0x2f')]&&_0x576c88[_0x6d6d('0x2f')]!=='<unknown>'?_0x576c88[_0x6d6d('0x2f')]:_0x6d6d('0x2e');}_0x1f2b86=_0x554f8e;_0x158f82[_0x6d6d('0x30')](_0x554f8e);return;}}})[_0x6d6d('0x20')](function(){if(_0x23b18a){emit(_0x576c88['uniqueid'],_0x290dfb,util['format'](_0x6d6d('0x32'),_0x23b18a[_0x6d6d('0x33')]),util[_0x6d6d('0x34')]('trigger:%s',_0xf84314[_0x6d6d('0x35')][_0x6d6d('0x36')]()),{'evt':_[_0x6d6d('0x37')](_0x576c88,{'autoCreate':_0x32146d}),'contact':_0x1f2b86===undefined?{}:_0x1f2b86,'contacts':_0x158f82[_0x6d6d('0x23')]===0x0?undefined:_0x158f82});}});};
\ No newline at end of file
index b1c544d..a02fa36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2c9=['exports','lodash','url','mustache','./urlforward','./integration','./cmContact','../../../config/environment','trigger','../ami','localhost','socket.io-emitter','redis','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','syncCustomEvent','bind','custom:agentconnect','custom:agentcomplete','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:newinteraction','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','emit','info','stringify','clone','checkTriggers','prototype','interface','hasOwnProperty','status','checkTrigger','merge','variables','Actions','length','motionbar','data1','TemplateId','data2','html','render','template\x20not\x20found','uri','data3','isNil','data4','location','uriLocation','windowWidth','data5','600','data6','winApplication','winArguments','format','trigger:%s:%s','toLowerCase','jscripty','name','trigger:%s','action','user:%s','contactmanager','exec','integration','buildUri','parse','replace','AllConditions','every','checkConditions','AnyConditions','channel','field','operator','upperFirst','AccountId','interaction','message','value','event','queue','agent','membername','lastevent','routeId'];(function(_0x47b138,_0x4e555e){var _0x3056a6=function(_0x22f085){while(--_0x22f085){_0x47b138['push'](_0x47b138['shift']());}};_0x3056a6(++_0x4e555e);}(_0xa2c9,0x157));var _0x9a2c=function(_0x195d11,_0x48e825){_0x195d11=_0x195d11-0x0;var _0x68b13e=_0xa2c9[_0x195d11];return _0x68b13e;};'use strict';var util=require('util');var _=require(_0x9a2c('0x0'));var url=require(_0x9a2c('0x1'));var Mustache=require(_0x9a2c('0x2'));var Redis=require('ioredis');var urlforward=require(_0x9a2c('0x3'));var integration=require(_0x9a2c('0x4'));var cmContact=require(_0x9a2c('0x5'));var script=require('./script');var config=require(_0x9a2c('0x6'));var logger=require('../../../config/logger')(_0x9a2c('0x7'));var ami=require(_0x9a2c('0x8'));config['redis']=_['defaults'](config['redis'],{'host':_0x9a2c('0x9'),'port':0x18eb});var io=require(_0x9a2c('0xa'))(new Redis(config[_0x9a2c('0xb')]));var operators={'equals':function(_0x311f4f,_0x28d0f9){return _0x311f4f==_0x28d0f9;},'not_equals':function(_0x3faad0,_0x3ce41c){return _0x3faad0!=_0x3ce41c;}};var barAndWebActions=[_0x9a2c('0xc'),'url',_0x9a2c('0xd')];function Trigger(_0x1989ca){this[_0x9a2c('0xe')]=_0x1989ca[_0x9a2c('0xe')];this[_0x9a2c('0xf')]=_0x1989ca[_0x9a2c('0xf')];this[_0x9a2c('0x10')]=_0x1989ca['voiceQueues'];this[_0x9a2c('0x11')]=_0x1989ca[_0x9a2c('0x11')];this[_0x9a2c('0x12')]=_0x1989ca[_0x9a2c('0x12')];this[_0x9a2c('0x13')]=_0x1989ca['zendeskAccounts'];this['freshdeskAccounts']=_0x1989ca[_0x9a2c('0x14')];this[_0x9a2c('0x15')]=_0x1989ca[_0x9a2c('0x15')];this[_0x9a2c('0x16')]=_0x1989ca[_0x9a2c('0x16')];this[_0x9a2c('0x17')]=_0x1989ca['zohoAccounts'];this[_0x9a2c('0x18')]=_0x1989ca[_0x9a2c('0x18')];this[_0x9a2c('0x19')]=_0x1989ca['vtigerAccounts'];this[_0x9a2c('0x1a')]=_0x1989ca[_0x9a2c('0x1a')];this[_0x9a2c('0x1b')]=_0x1989ca[_0x9a2c('0x1b')];this[_0x9a2c('0x1c')]=_0x1989ca['freshsalesAccounts'];this[_0x9a2c('0x1d')]={'zendesk':this[_0x9a2c('0x13')],'salesforce':this[_0x9a2c('0x15')],'freshdesk':this[_0x9a2c('0x14')],'sugarcrm':this[_0x9a2c('0x16')],'zoho':this[_0x9a2c('0x17')],'desk':this['deskAccounts'],'vtiger':this[_0x9a2c('0x19')],'dynamics365':this[_0x9a2c('0x1b')],'freshsales':this[_0x9a2c('0x1c')],'servicenow':this[_0x9a2c('0x1a')]};ami['on']('custom:agentcalled',this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x20'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on']('custom:agentringnoanswer',this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x21'),this['syncCustomEvent']['bind'](this));ami['on']('custom:agentnosuchnumber',this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on']('custom:agentnoanswer',this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x22'),this[_0x9a2c('0x1e')]['bind'](this));ami['on'](_0x9a2c('0x23'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x24'),this['syncCustomEvent'][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x25'),this['syncCustomEvent'][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x26'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x27'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x28'),this[_0x9a2c('0x29')]['bind'](this));ami['on'](_0x9a2c('0x2a'),this['syncAgentDial'][_0x9a2c('0x1f')](this));ami['on']('custom:dialend',this[_0x9a2c('0x29')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x2b'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on']('custom:closedinteraction',this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x2c'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x2d'),this['syncCustomEvent'][_0x9a2c('0x1f')](this));ami['on'](_0x9a2c('0x2e'),this[_0x9a2c('0x1e')]['bind'](this));ami['on'](_0x9a2c('0x2f'),this[_0x9a2c('0x1e')][_0x9a2c('0x1f')](this));}Trigger['prototype'][_0x9a2c('0x30')]=function(_0x325560,_0x1f31dc,_0x1659c0){logger[_0x9a2c('0x31')](_0x325560,_0x1f31dc,JSON[_0x9a2c('0x32')](_0x1659c0));io['to'](_0x325560)['emit'](_0x1f31dc,_0x1659c0);};Trigger['prototype'][_0x9a2c('0x1e')]=function(_0x4eb4fa){var _0x3d9cb5=_[_0x9a2c('0x33')](_0x4eb4fa);this[_0x9a2c('0x34')](_0x3d9cb5);};Trigger[_0x9a2c('0x35')][_0x9a2c('0x29')]=function(_0xc6a4bc){if(this[_0x9a2c('0xf')][_0xc6a4bc[_0x9a2c('0x36')]]){this[_0x9a2c('0x1e')](_0xc6a4bc);}};Trigger[_0x9a2c('0x35')]['checkTriggers']=function(_0x476098){var _0x5275e4;for(var _0x211b4f in this['triggers']){if(this[_0x9a2c('0xe')][_0x9a2c('0x37')](_0x211b4f)){if(this[_0x9a2c('0xe')][_0x211b4f][_0x9a2c('0x38')]){_0x5275e4=this[_0x9a2c('0x39')](this['triggers'][_0x211b4f],_0x476098);if(_0x5275e4){_[_0x9a2c('0x3a')](_0x476098,_0x476098[_0x9a2c('0x3b')]);for(var _0x3f40e4=0x0,_0x4be620,_0x510167,_0x5025d4;_0x3f40e4<this[_0x9a2c('0xe')][_0x211b4f][_0x9a2c('0x3c')][_0x9a2c('0x3d')];_0x3f40e4+=0x1){_0x4be620=this['triggers'][_0x211b4f][_0x9a2c('0x3c')][_0x3f40e4];if(this['agents'][_0x476098[_0x9a2c('0x36')]]){switch(_0x4be620['action']['toLowerCase']()){case'contactmanager':break;case _0x9a2c('0x3e'):case'browser':var _0x5434c2={};switch(barAndWebActions[_0x4be620[_0x9a2c('0x3f')]]){case _0x9a2c('0xc'):_0x5434c2[_0x9a2c('0x40')]=_0x4be620[_0x9a2c('0x41')];_0x5434c2[_0x9a2c('0x42')]=this['templates'][_0x4be620[_0x9a2c('0x41')]]?Mustache[_0x9a2c('0x43')](this[_0x9a2c('0x11')][_0x4be620['data2']][_0x9a2c('0x42')],_0x476098):_0x9a2c('0x44');break;case _0x9a2c('0x1'):_0x5434c2[_0x9a2c('0x45')]=this['buildUri'](_0x4be620[_0x9a2c('0x41')],_0x476098,_['isNil'](_0x4be620[_0x9a2c('0x46')])?!![]:parseInt(_0x4be620['data3'],0xa));if(_[_0x9a2c('0x47')](_0x4be620[_0x9a2c('0x48')])){_0x5434c2[_0x9a2c('0x49')]='0';}else{_0x5434c2[_0x9a2c('0x4a')]=_0x4be620[_0x9a2c('0x48')];_0x5434c2[_0x9a2c('0x4b')]=_[_0x9a2c('0x47')](_0x4be620[_0x9a2c('0x4c')])?'800':_0x4be620[_0x9a2c('0x4c')];_0x5434c2['windowHeight']=_[_0x9a2c('0x47')](_0x4be620['data6'])?_0x9a2c('0x4d'):_0x4be620[_0x9a2c('0x4e')];}break;case _0x9a2c('0xd'):_0x5434c2[_0x9a2c('0x4f')]=_0x4be620['data2']?Mustache[_0x9a2c('0x43')](_0x4be620[_0x9a2c('0x41')],_0x476098):'';_0x5434c2[_0x9a2c('0x50')]=_0x4be620['data3']?Mustache[_0x9a2c('0x43')](_0x4be620['data3'],_0x476098):'';break;}this[_0x9a2c('0x30')](util[_0x9a2c('0x51')]('user:%s',this[_0x9a2c('0xf')][_0x476098[_0x9a2c('0x36')]]['name']),util[_0x9a2c('0x51')](_0x9a2c('0x52'),_0x4be620['action'][_0x9a2c('0x53')](),barAndWebActions[_0x4be620[_0x9a2c('0x3f')]]),_['merge'](_0x5434c2,_0x476098));break;case _0x9a2c('0x54'):this[_0x9a2c('0x30')](util[_0x9a2c('0x51')]('user:%s',this[_0x9a2c('0xf')][_0x476098[_0x9a2c('0x36')]][_0x9a2c('0x55')]),util[_0x9a2c('0x51')](_0x9a2c('0x56'),_0x4be620[_0x9a2c('0x57')][_0x9a2c('0x53')]()),_[_0x9a2c('0x3a')]({'ProjectId':parseInt(_0x4be620['data1'],0xa)},_0x476098));break;default:this['emit'](util[_0x9a2c('0x51')](_0x9a2c('0x58'),this[_0x9a2c('0xf')][_0x476098[_0x9a2c('0x36')]][_0x9a2c('0x55')]),util[_0x9a2c('0x51')]('trigger:%s',_0x4be620['action'][_0x9a2c('0x53')]()),_[_0x9a2c('0x3a')]({},_0x4be620,_0x476098));}}switch(_0x4be620['action'][_0x9a2c('0x53')]()){case _0x9a2c('0x59'):cmContact[_0x9a2c('0x5a')](this[_0x9a2c('0xf')][_0x476098[_0x9a2c('0x36')]],this[_0x9a2c('0xe')][_0x211b4f],_0x4be620,_0x476098);break;case _0x9a2c('0x5b'):integration['exec'](_0x4be620,_0x476098,this[_0x9a2c('0x1d')],this[_0x9a2c('0xf')][_0x476098['interface']],this[_0x9a2c('0x10')][_0x476098['queue']],this[_0x9a2c('0x12')][_0x476098['routeId']]);break;case'urlforward':urlforward[_0x9a2c('0x5a')](_0x4be620,_0x476098);break;case'script':script['exec'](_0x4be620,_0x476098);break;}}}}}}};Trigger['prototype'][_0x9a2c('0x5c')]=function(_0x593e20,_0x2e79bc,_0x5e78b1){var _0x1f6c5c=url[_0x9a2c('0x5d')](Mustache['render'](_0x593e20,_0x2e79bc),!![]);if(_0x5e78b1){_[_0x9a2c('0x3a')](_0x1f6c5c['query'],_0x2e79bc);}delete _0x1f6c5c['search'];var _0x2f0d0f=url['format'](_0x1f6c5c);_0x2f0d0f=_0x2f0d0f[_0x9a2c('0x5e')](/\/\?/g,'?');return _0x2f0d0f;};Trigger[_0x9a2c('0x35')][_0x9a2c('0x39')]=function(_0x2919d3,_0x1fa685){var _0x4e7984=!![],_0x53c30b=!![];if(_0x2919d3[_0x9a2c('0x5f')][_0x9a2c('0x3d')]){_0x4e7984=_[_0x9a2c('0x60')](_0x2919d3['AllConditions'],this[_0x9a2c('0x61')](_0x1fa685,_0x2919d3['channel']));}if(_0x2919d3[_0x9a2c('0x62')]['length']){_0x53c30b=_['some'](_0x2919d3[_0x9a2c('0x62')],this[_0x9a2c('0x61')](_0x1fa685,_0x2919d3[_0x9a2c('0x63')]));}return _0x4e7984&&_0x53c30b;};Trigger[_0x9a2c('0x35')][_0x9a2c('0x61')]=function(_0x386cd6,_0x5645d7){return function(_0x4e9742){switch(_0x4e9742[_0x9a2c('0x64')]){case'account':if(_0x386cd6[_0x9a2c('0x63')]===_0x5645d7){if(_0x5645d7==='chat'){return _0x386cd6['ChatWebsiteId']?operators[_0x4e9742[_0x9a2c('0x65')]](Number(_0x4e9742['value']),_0x386cd6['ChatWebsiteId']):![];}else{return _0x386cd6[_[_0x9a2c('0x66')](_0x5645d7)+_0x9a2c('0x67')]?operators[_0x4e9742['operator']](Number(_0x4e9742['value']),_0x386cd6[_[_0x9a2c('0x66')](_0x5645d7)+'AccountId']):![];}}break;case _0x9a2c('0x68'):case _0x9a2c('0x69'):if(_0x386cd6[_0x9a2c('0x63')]===_0x5645d7){return _0x386cd6['event']?operators[_0x4e9742[_0x9a2c('0x65')]](_0x4e9742[_0x9a2c('0x6a')],_0x386cd6[_0x9a2c('0x6b')]):![];}break;case'queue':return _0x386cd6['queue']?operators[_0x4e9742[_0x9a2c('0x65')]](_0x4e9742[_0x9a2c('0x6a')],_0x386cd6[_0x9a2c('0x6c')]):![];case _0x9a2c('0x6d'):return _0x386cd6[_0x9a2c('0x6e')]?operators[_0x4e9742[_0x9a2c('0x65')]](_0x4e9742[_0x9a2c('0x6a')],_0x386cd6[_0x9a2c('0x6e')]):![];case _0x9a2c('0x6f'):return _0x386cd6['lastevent']?operators[_0x4e9742['operator']](_0x4e9742[_0x9a2c('0x6a')],_0x386cd6['lastevent']):![];case _0x9a2c('0x70'):return _0x386cd6['routeId']?operators[_0x4e9742[_0x9a2c('0x65')]](_0x4e9742[_0x9a2c('0x6a')],_0x386cd6['routeId']):![];}return![];};};module[_0x9a2c('0x71')]=Trigger;
\ No newline at end of file
+var _0x1326=['query','search','replace','length','AllConditions','AnyConditions','some','checkConditions','channel','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','event','agent','membername','lastevent','exports','util','url','ioredis','./urlforward','./cmContact','../../../config/environment','../../../config/logger','trigger','../ami','redis','localhost','popup','triggers','agents','voiceQueues','voiceExtensions','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','custom:agentconnect','bind','custom:agentringnoanswer','syncCustomEvent','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','prototype','emit','info','stringify','clone','motionChannel','undefined','voice','interface','hasOwnProperty','status','checkTrigger','Actions','action','toLowerCase','TemplateId','data2','templates','render','html','template\x20not\x20found','uri','buildUri','data3','isNil','data4','location','windowWidth','data5','800','windowHeight','data6','600','winapp','winApplication','user:%s','name','format','data1','merge','jscripty','trigger:%s','contactmanager','exec','integration','queue','routeId','urlforward','script'];(function(_0x23fde1,_0x962b4c){var _0x32cdb2=function(_0x34e634){while(--_0x34e634){_0x23fde1['push'](_0x23fde1['shift']());}};_0x32cdb2(++_0x962b4c);}(_0x1326,0x101));var _0x6132=function(_0x1dad92,_0x2f948c){_0x1dad92=_0x1dad92-0x0;var _0x90a9f6=_0x1326[_0x1dad92];return _0x90a9f6;};'use strict';var util=require(_0x6132('0x0'));var _=require('lodash');var url=require(_0x6132('0x1'));var Mustache=require('mustache');var Redis=require(_0x6132('0x2'));var urlforward=require(_0x6132('0x3'));var integration=require('./integration');var cmContact=require(_0x6132('0x4'));var script=require('./script');var config=require(_0x6132('0x5'));var logger=require(_0x6132('0x6'))(_0x6132('0x7'));var ami=require(_0x6132('0x8'));config[_0x6132('0x9')]=_['defaults'](config[_0x6132('0x9')],{'host':_0x6132('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6132('0x9')]));var operators={'equals':function(_0x3915d2,_0x386a14){return _0x3915d2==_0x386a14;},'not_equals':function(_0x23b5a4,_0x5368bc){return _0x23b5a4!=_0x5368bc;}};var barAndWebActions=[_0x6132('0xb'),'url','winapp'];function Trigger(_0x28f045){this[_0x6132('0xc')]=_0x28f045[_0x6132('0xc')];this['agents']=_0x28f045[_0x6132('0xd')];this[_0x6132('0xe')]=_0x28f045[_0x6132('0xe')];this['templates']=_0x28f045['templates'];this[_0x6132('0xf')]=_0x28f045[_0x6132('0xf')];this[_0x6132('0x10')]=_0x28f045['zendeskAccounts'];this['freshdeskAccounts']=_0x28f045['freshdeskAccounts'];this[_0x6132('0x11')]=_0x28f045['salesforceAccounts'];this[_0x6132('0x12')]=_0x28f045[_0x6132('0x12')];this[_0x6132('0x13')]=_0x28f045[_0x6132('0x13')];this[_0x6132('0x14')]=_0x28f045[_0x6132('0x14')];this[_0x6132('0x15')]=_0x28f045[_0x6132('0x15')];this[_0x6132('0x16')]=_0x28f045[_0x6132('0x16')];this[_0x6132('0x17')]=_0x28f045[_0x6132('0x17')];this['freshsalesAccounts']=_0x28f045[_0x6132('0x18')];this[_0x6132('0x19')]={'zendesk':this[_0x6132('0x10')],'salesforce':this[_0x6132('0x11')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0x6132('0x12')],'zoho':this[_0x6132('0x13')],'desk':this[_0x6132('0x14')],'vtiger':this[_0x6132('0x15')],'dynamics365':this[_0x6132('0x17')],'freshsales':this[_0x6132('0x18')],'servicenow':this[_0x6132('0x16')]};ami['on'](_0x6132('0x1a'),this['syncCustomEvent']['bind'](this));ami['on'](_0x6132('0x1b'),this['syncCustomEvent'][_0x6132('0x1c')](this));ami['on'](_0x6132('0x1d'),this[_0x6132('0x1e')][_0x6132('0x1c')](this));ami['on'](_0x6132('0x1f'),this[_0x6132('0x1e')][_0x6132('0x1c')](this));ami['on'](_0x6132('0x20'),this[_0x6132('0x1e')][_0x6132('0x1c')](this));ami['on'](_0x6132('0x21'),this[_0x6132('0x1e')][_0x6132('0x1c')](this));ami['on'](_0x6132('0x22'),this[_0x6132('0x1e')][_0x6132('0x1c')](this));ami['on'](_0x6132('0x23'),this[_0x6132('0x1e')][_0x6132('0x1c')](this));ami['on'](_0x6132('0x24'),this[_0x6132('0x1e')][_0x6132('0x1c')](this));ami['on'](_0x6132('0x25'),this['syncCustomEvent'][_0x6132('0x1c')](this));ami['on']('custom:queuecallerabandon',this['syncCustomEvent'][_0x6132('0x1c')](this));ami['on'](_0x6132('0x26'),this[_0x6132('0x1e')][_0x6132('0x1c')](this));ami['on'](_0x6132('0x27'),this[_0x6132('0x28')][_0x6132('0x1c')](this));ami['on'](_0x6132('0x29'),this['syncAgentDial']['bind'](this));ami['on']('custom:dialend',this[_0x6132('0x28')]['bind'](this));ami['on']('custom:newinteraction',this['syncCustomEvent'][_0x6132('0x1c')](this));ami['on'](_0x6132('0x2a'),this['syncCustomEvent']['bind'](this));ami['on']('custom:substatus',this[_0x6132('0x1e')][_0x6132('0x1c')](this));ami['on'](_0x6132('0x2b'),this[_0x6132('0x1e')][_0x6132('0x1c')](this));ami['on'](_0x6132('0x2c'),this[_0x6132('0x1e')][_0x6132('0x1c')](this));ami['on']('custom:acceptmessage',this[_0x6132('0x1e')]['bind'](this));ami['on']('custom:rejectmessage',this[_0x6132('0x1e')][_0x6132('0x1c')](this));}Trigger[_0x6132('0x2d')][_0x6132('0x2e')]=function(_0x5aaf44,_0x399c6b,_0x479d7d){logger[_0x6132('0x2f')](_0x5aaf44,_0x399c6b,JSON[_0x6132('0x30')](_0x479d7d));io['to'](_0x5aaf44)[_0x6132('0x2e')](_0x399c6b,_0x479d7d);};Trigger[_0x6132('0x2d')][_0x6132('0x1e')]=function(_0x5d8f36){var _0x2f7518=_[_0x6132('0x31')](_0x5d8f36);if(typeof _0x2f7518[_0x6132('0x32')]===_0x6132('0x33')){_0x2f7518[_0x6132('0x32')]=_0x6132('0x34');}this['checkTriggers'](_0x2f7518);};Trigger[_0x6132('0x2d')]['syncAgentDial']=function(_0x454dd4){if(this[_0x6132('0xd')][_0x454dd4[_0x6132('0x35')]]){this[_0x6132('0x1e')](_0x454dd4);}};Trigger[_0x6132('0x2d')]['checkTriggers']=function(_0x252753){var _0x1037bc;for(var _0x5033b0 in this['triggers']){if(this[_0x6132('0xc')][_0x6132('0x36')](_0x5033b0)){if(this['triggers'][_0x5033b0][_0x6132('0x37')]){_0x1037bc=this[_0x6132('0x38')](this[_0x6132('0xc')][_0x5033b0],_0x252753);if(_0x1037bc){_['merge'](_0x252753,_0x252753['variables']);for(var _0x510896=0x0,_0x2535fa,_0x1c7939,_0x22ca64;_0x510896<this['triggers'][_0x5033b0][_0x6132('0x39')]['length'];_0x510896+=0x1){_0x2535fa=this['triggers'][_0x5033b0]['Actions'][_0x510896];if(this[_0x6132('0xd')][_0x252753[_0x6132('0x35')]]){switch(_0x2535fa[_0x6132('0x3a')][_0x6132('0x3b')]()){case'contactmanager':break;case'motionbar':case'browser':var _0x36cbb7={};switch(barAndWebActions[_0x2535fa['data1']]){case _0x6132('0xb'):_0x36cbb7[_0x6132('0x3c')]=_0x2535fa[_0x6132('0x3d')];_0x36cbb7['html']=this[_0x6132('0x3e')][_0x2535fa['data2']]?Mustache[_0x6132('0x3f')](this['templates'][_0x2535fa[_0x6132('0x3d')]][_0x6132('0x40')],_0x252753):_0x6132('0x41');break;case _0x6132('0x1'):_0x36cbb7[_0x6132('0x42')]=this[_0x6132('0x43')](_0x2535fa[_0x6132('0x3d')],_0x252753,_['isNil'](_0x2535fa[_0x6132('0x44')])?!![]:parseInt(_0x2535fa[_0x6132('0x44')],0xa));if(_[_0x6132('0x45')](_0x2535fa[_0x6132('0x46')])){_0x36cbb7[_0x6132('0x47')]='0';}else{_0x36cbb7['uriLocation']=_0x2535fa[_0x6132('0x46')];_0x36cbb7[_0x6132('0x48')]=_[_0x6132('0x45')](_0x2535fa[_0x6132('0x49')])?_0x6132('0x4a'):_0x2535fa[_0x6132('0x49')];_0x36cbb7[_0x6132('0x4b')]=_[_0x6132('0x45')](_0x2535fa[_0x6132('0x4c')])?_0x6132('0x4d'):_0x2535fa[_0x6132('0x4c')];}break;case _0x6132('0x4e'):_0x36cbb7[_0x6132('0x4f')]=_0x2535fa[_0x6132('0x3d')]?Mustache['render'](_0x2535fa['data2'],_0x252753):'';_0x36cbb7['winArguments']=_0x2535fa[_0x6132('0x44')]?Mustache[_0x6132('0x3f')](_0x2535fa[_0x6132('0x44')],_0x252753):'';break;}this[_0x6132('0x2e')](util['format'](_0x6132('0x50'),this[_0x6132('0xd')][_0x252753[_0x6132('0x35')]][_0x6132('0x51')]),util[_0x6132('0x52')]('trigger:%s:%s',_0x2535fa['action']['toLowerCase'](),barAndWebActions[_0x2535fa[_0x6132('0x53')]]),_[_0x6132('0x54')](_0x36cbb7,_0x252753));break;case _0x6132('0x55'):this[_0x6132('0x2e')](util[_0x6132('0x52')](_0x6132('0x50'),this[_0x6132('0xd')][_0x252753[_0x6132('0x35')]][_0x6132('0x51')]),util[_0x6132('0x52')]('trigger:%s',_0x2535fa['action'][_0x6132('0x3b')]()),_[_0x6132('0x54')]({'ProjectId':parseInt(_0x2535fa[_0x6132('0x53')],0xa)},_0x252753));break;default:this[_0x6132('0x2e')](util[_0x6132('0x52')](_0x6132('0x50'),this[_0x6132('0xd')][_0x252753[_0x6132('0x35')]][_0x6132('0x51')]),util[_0x6132('0x52')](_0x6132('0x56'),_0x2535fa[_0x6132('0x3a')][_0x6132('0x3b')]()),_[_0x6132('0x54')]({},_0x2535fa,_0x252753));}}switch(_0x2535fa[_0x6132('0x3a')]['toLowerCase']()){case _0x6132('0x57'):cmContact[_0x6132('0x58')](this[_0x6132('0xd')][_0x252753['interface']],this[_0x6132('0xc')][_0x5033b0],_0x2535fa,_0x252753);break;case _0x6132('0x59'):integration[_0x6132('0x58')](_0x2535fa,_0x252753,this[_0x6132('0x19')],this[_0x6132('0xd')][_0x252753[_0x6132('0x35')]],this[_0x6132('0xe')][_0x252753[_0x6132('0x5a')]],this[_0x6132('0xf')][_0x252753[_0x6132('0x5b')]]);break;case _0x6132('0x5c'):urlforward['exec'](_0x2535fa,_0x252753);break;case _0x6132('0x5d'):script[_0x6132('0x58')](_0x2535fa,_0x252753);break;}}}}}}};Trigger[_0x6132('0x2d')][_0x6132('0x43')]=function(_0x381725,_0x5b5b33,_0x3dabda){var _0x2a6584=url['parse'](Mustache['render'](_0x381725,_0x5b5b33),!![]);if(_0x3dabda){_[_0x6132('0x54')](_0x2a6584[_0x6132('0x5e')],_0x5b5b33);}delete _0x2a6584[_0x6132('0x5f')];var _0x21336b=url['format'](_0x2a6584);_0x21336b=_0x21336b[_0x6132('0x60')](/\/\?/g,'?');return _0x21336b;};Trigger[_0x6132('0x2d')][_0x6132('0x38')]=function(_0x322b8d,_0x545f46){var _0x16840b=!![];var _0x188563=!![];var _0x5a0c79=![];if(_0x322b8d['channel']===_0x545f46[_0x6132('0x32')]){_0x5a0c79=!![];}if(_0x322b8d['AllConditions'][_0x6132('0x61')]){_0x16840b=_['every'](_0x322b8d[_0x6132('0x62')],this['checkConditions'](_0x545f46,_0x322b8d['channel']));}if(_0x322b8d[_0x6132('0x63')][_0x6132('0x61')]){_0x188563=_[_0x6132('0x64')](_0x322b8d['AnyConditions'],this[_0x6132('0x65')](_0x545f46,_0x322b8d[_0x6132('0x66')]));}return _0x5a0c79&&_0x16840b&&_0x188563;};Trigger[_0x6132('0x2d')][_0x6132('0x65')]=function(_0x54b9d7,_0x388af3){return function(_0x87dc47){switch(_0x87dc47[_0x6132('0x67')]){case _0x6132('0x68'):if(_0x54b9d7['channel']===_0x388af3){if(_0x388af3===_0x6132('0x69')){return _0x54b9d7[_0x6132('0x6a')]?operators[_0x87dc47[_0x6132('0x6b')]](Number(_0x87dc47[_0x6132('0x6c')]),_0x54b9d7[_0x6132('0x6a')]):![];}else{return _0x54b9d7[_[_0x6132('0x6d')](_0x388af3)+_0x6132('0x6e')]?operators[_0x87dc47[_0x6132('0x6b')]](Number(_0x87dc47[_0x6132('0x6c')]),_0x54b9d7[_[_0x6132('0x6d')](_0x388af3)+_0x6132('0x6e')]):![];}}break;case _0x6132('0x6f'):case'message':if(_0x54b9d7[_0x6132('0x66')]===_0x388af3){return _0x54b9d7['event']?operators[_0x87dc47[_0x6132('0x6b')]](_0x87dc47[_0x6132('0x6c')],_0x54b9d7[_0x6132('0x70')]):![];}break;case _0x6132('0x5a'):return _0x54b9d7[_0x6132('0x5a')]?operators[_0x87dc47['operator']](_0x87dc47['value'],_0x54b9d7['queue']):![];case _0x6132('0x71'):return _0x54b9d7[_0x6132('0x72')]?operators[_0x87dc47[_0x6132('0x6b')]](_0x87dc47[_0x6132('0x6c')],_0x54b9d7[_0x6132('0x72')]):![];case _0x6132('0x73'):return _0x54b9d7[_0x6132('0x73')]?operators[_0x87dc47[_0x6132('0x6b')]](_0x87dc47[_0x6132('0x6c')],_0x54b9d7[_0x6132('0x73')]):![];case'routeId':return _0x54b9d7[_0x6132('0x5b')]?operators[_0x87dc47[_0x6132('0x6b')]](_0x87dc47['value'],_0x54b9d7[_0x6132('0x5b')]):![];}return![];};};module[_0x6132('0x74')]=Trigger;
\ No newline at end of file
index 8b07ed6..3c942f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['calleridname','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','desk','redis','defaults','localhost','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','%s:%s','authType','token','username','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','length','string','nameField','toLowerCase','content','picklist','idField','customField','custom_fields','type','variableName','customVariable','Variable','name','priority','merge','getString','Subjects','xCALLY','CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','catch','error','stringify','recordingFormat','none','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','unmanaged','lastevent'];(function(_0x557572,_0x3772f2){var _0x143817=function(_0x3d9d64){while(--_0x3d9d64){_0x557572['push'](_0x557572['shift']());}};_0x143817(++_0x3772f2);}(_0x814b,0x1a2));var _0xb814=function(_0x3a081b,_0x516437){_0x3a081b=_0x3a081b-0x0;var _0xb166c4=_0x814b[_0x3a081b];return _0xb166c4;};'use strict';var _=require(_0xb814('0x0'));var rp=require(_0xb814('0x1'));var md5=require(_0xb814('0x2'));var util=require(_0xb814('0x3'));var Redis=require(_0xb814('0x4'));var intUtil=require(_0xb814('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb814('0x6'))(_0xb814('0x7'));config[_0xb814('0x8')]=_[_0xb814('0x9')](config[_0xb814('0x8')],{'host':_0xb814('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb814('0x8')]));function emit(_0x2e6272,_0x5c8539,_0x271af9){io['to'](_0x2e6272)[_0xb814('0xb')](_0x5c8539,_0x271af9);}var headers={'Content-Type':_0xb814('0xc'),'Accept':_0xb814('0xc')};function getUser(_0x1fea33,_0x21d4a5){if(intUtil[_0xb814('0xd')](_0x21d4a5)===!![]){logger[_0xb814('0xe')](_0xb814('0xf'),_0x21d4a5);return request({'uri':util[_0xb814('0x10')](_0xb814('0x11'),_0x1fea33['remoteUri'])})[_0xb814('0x12')](function(_0x56278f){if(_0x56278f[_0xb814('0x13')]){return _[_0xb814('0x14')](_0x56278f[_0xb814('0x15')][_0xb814('0x16')],{'email':_0x21d4a5});}})[_0xb814('0x12')](function(_0x3bde14){if(_0x3bde14){logger[_0xb814('0xe')](_0xb814('0x17'));return _0x3bde14;}else{logger[_0xb814('0xe')](_0xb814('0x18'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}});}else{logger[_0xb814('0xe')](_0xb814('0x1b'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}}function request(_0x125ce2){logger[_0xb814('0x1c')](_0xb814('0x1d'),JSON['stringify'](_0x125ce2));return rp(_[_0xb814('0x9')](_0x125ce2,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x270598){var _0xfac75b;if(_0x270598['authType']==='basic'){_0xfac75b=util['format'](_0xb814('0x1e'),_0x270598['username'],_0x270598['password']);}else if(_0x270598[_0xb814('0x1f')]===_0xb814('0x20')){_0xfac75b=util[_0xb814('0x10')]('%s/token:%s',_0x270598[_0xb814('0x21')],_0x270598['token']);}return util[_0xb814('0x10')](_0xb814('0x22'),new Buffer(_0xfac75b)[_0xb814('0x23')](_0xb814('0x24')));}function getEndUser(_0x27352e,_0x2bd039,_0x1f5d40){logger['info'](_0xb814('0x25'),_0x1f5d40);return request({'uri':util['format'](_0xb814('0x26'),_0x27352e[_0xb814('0x1a')]),'qs':{'phone':_0x1f5d40}})[_0xb814('0x12')](function(_0x208927){if(_0x208927[_0xb814('0x13')]){logger[_0xb814('0xe')](_0xb814('0x27'));return _0x208927['_embedded'][_0xb814('0x16')][0x0];}else{logger[_0xb814('0xe')](_0xb814('0x28'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x29'),_0x27352e[_0xb814('0x1a')]),'method':_0xb814('0x2a'),'body':{'first_name':_0x2bd039,'title':_0x2bd039,'phone_numbers':[{'type':_0xb814('0x2b'),'value':_0x1f5d40}]}});}});}function getTags(_0x5a6291,_0x271aa8){var _0x328a08=[];if(_0x5a6291&&_0x5a6291['length']>0x0){_0x328a08=_[_0xb814('0x2c')](_0x5a6291,_0x271aa8);}return _0x328a08;}function getCustomFields(_0x37d24d,_0x530744){var _0x499f22=[];var _0x20577b={'custom_fields':{}};if(_0x37d24d[_0xb814('0x2d')]>0x0){_['forEach'](_0x37d24d,function(_0x338a28){if(_['includes']([_0xb814('0x2e'),'picklist'],_0x338a28['type'])&&_0x338a28[_0xb814('0x2f')]&&!_0x338a28['customField']){_0x20577b[_0x338a28[_0xb814('0x2f')][_0xb814('0x30')]()]=_0x338a28[_0xb814('0x31')]['toString']();}else if(_['includes']([_0xb814('0x2e'),_0xb814('0x32')],_0x338a28['type'])&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x338a28[_0xb814('0x31')][_0xb814('0x23')]();}else if(_0x338a28[_0xb814('0x36')]==='variable'&&_0x338a28[_0xb814('0x37')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x530744[_0x338a28[_0xb814('0x37')]]&&(_0x20577b[_0xb814('0x35')][_0x338a28['idField']]=_0x530744[_0x338a28[_0xb814('0x37')]]['toString']());}else if(_0x338a28[_0xb814('0x36')]===_0xb814('0x38')&&_0x338a28[_0xb814('0x39')]&&_0x338a28['Variable'][_0xb814('0x3a')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28['customField']){_0x530744[_0x338a28[_0xb814('0x39')][_0xb814('0x3a')][_0xb814('0x30')]()]&&(_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x530744[_0x338a28[_0xb814('0x39')]['name'][_0xb814('0x30')]()]['toString']());}});}if(_0x20577b[_0xb814('0x3b')]){_0x20577b['priority']=Number(_0x20577b[_0xb814('0x3b')]);}return _0x20577b;}function getTicket(_0x4b9233,_0x2f8a2e,_0x26675a,_0x54a7fb,_0x4d308a){logger['info']('Creating\x20new\x20ticket...');var _0x17549e=_[_0xb814('0x3c')]({'subject':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x3e')],_0x4d308a,'\x20'),'type':'phone','status':'new','labels':[_0xb814('0x3f'),'Motion',_0xb814('0x40')][_0xb814('0x41')](getTags(_0x54a7fb[_0xb814('0x42')],_0xb814('0x3a'))),'description':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x43')],_0x4d308a,'\x0a'),'_links':{'assigned_user':{'href':util[_0xb814('0x10')](_0xb814('0x44'),_0x2f8a2e['id']),'class':_0xb814('0x45')}},'message':{'direction':'in','body':intUtil['getString'](_0x54a7fb['Descriptions'],_0x4d308a,'\x0a')}},getCustomFields(_0x54a7fb['Fields'],_0x4d308a));return request({'uri':util[_0xb814('0x10')]('%s/customers/%d/cases',_0x4b9233[_0xb814('0x1a')],_0x26675a['id']),'method':'POST','body':_0x17549e});}exports[_0xb814('0x46')]=function(_0x44ff56,_0x9ef639,_0x2e97cc,_0x4fae23,_0x30fc57,_0x15f01a){var _0x2b23c7,_0x22cf27;_0x15f01a[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x15f01a['remoteUri']);_0x15f01a[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x15f01a[_0xb814('0x48')]);if(_0x30fc57&&_0x30fc57[_0xb814('0x49')]){logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x4b'));_0x9ef639['recordingURL']=util['format'](_0xb814('0x4c'),_0x15f01a[_0xb814('0x48')],_0x9ef639[_0xb814('0x4d')],md5(_0x9ef639[_0xb814('0x4d')]));}else{_0x9ef639[_0xb814('0x4e')]='';}headers[_0xb814('0x4f')]=getAuth(_0x15f01a);return getUser(_0x15f01a,_0x4fae23[_0xb814('0x50')])[_0xb814('0x12')](function(_0x2eb9b6){_0x2b23c7=_0x2eb9b6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x2b23c7['id']);return getEndUser(_0x15f01a,_0x9ef639['calleridname'],_0x9ef639[_0xb814('0x52')]);})[_0xb814('0x12')](function(_0x4a76bb){_0x22cf27=_0x4a76bb;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x22cf27['id']);return getTicket(_0x15f01a,_0x2b23c7,_0x22cf27,_0x2e97cc,_0x9ef639);})[_0xb814('0x12')](function(_0x37866f){if(_0x37866f){logger[_0xb814('0xe')](_0xb814('0x53'));logger[_0xb814('0xe')](_0xb814('0x54'),_0x37866f['id']);switch(_0x15f01a[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0x37866f['id']});break;case _0xb814('0x58'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x5a'),{'uri':util['format'](_0xb814('0x5b'),_0x37866f['id'])});break;default:logger['error'](_0xb814('0x4a'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x3cf8f8){console['error'](_0x3cf8f8);logger[_0xb814('0x5d')](_0xb814('0x4a'),JSON[_0xb814('0x5e')](_0x3cf8f8));});};exports['outbound']=function(_0x3da050,_0x5f0e58,_0x13bdcf,_0x158893,_0x4aed78,_0x39952d,_0x4a3f84){var _0x539be7,_0x3b9709;_0x39952d[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x39952d['remoteUri']);_0x39952d[_0xb814('0x48')]=intUtil['stripTrailingSlash'](_0x39952d[_0xb814('0x48')]);if(_0x4a3f84&&_0x4a3f84[_0xb814('0x5f')]&&_0x4a3f84['recordingFormat']!==_0xb814('0x60')){logger['info'](_0xb814('0x61'),_0xb814('0x4b'));_0x5f0e58[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x39952d[_0xb814('0x48')],_0x5f0e58[_0xb814('0x4d')],md5(_0x5f0e58[_0xb814('0x4d')]));}headers['Authorization']=getAuth(_0x39952d);return getUser(_0x39952d,_0x158893[_0xb814('0x50')])[_0xb814('0x12')](function(_0x5d71d5){_0x539be7=_0x5d71d5;logger[_0xb814('0xe')](_0xb814('0x51'),_0x539be7['id']);return getEndUser(_0x39952d,_0x5f0e58['destcalleridname'],_0x5f0e58[_0xb814('0x62')]);})['then'](function(_0x48362c){_0x3b9709=_0x48362c;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x3b9709['id']);return getTicket(_0x39952d,_0x539be7,_0x3b9709,_0x13bdcf,_0x5f0e58);})[_0xb814('0x12')](function(_0xd1cd8b){if(_0xd1cd8b){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')]('The\x20Ticket\x20ID\x20is:',_0xd1cd8b['id']);switch(_0x39952d[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x63'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0xd1cd8b['id']});break;case'newTab':logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),'trigger:browser:url',{'uri':util[_0xb814('0x10')]('%s/agent/tickets/%s',_0x39952d[_0xb814('0x1a')],_0xd1cd8b['id'])});break;default:logger[_0xb814('0x5d')](_0xb814('0x61'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x579351){logger[_0xb814('0x5d')]('[OUTBOUND]',JSON[_0xb814('0x5e')](_0x579351));});};exports[_0xb814('0x64')]=function(_0xa03cd2,_0x1b024f,_0x3377d4,_0x167d82,_0x143518,_0x4d44e3){var _0x44088d,_0x51ca51;_0x4d44e3[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x1a')]);_0x4d44e3[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x48')]);if(_0x143518&&_0x143518['monitor_format']){logger[_0xb814('0xe')]('['+_0x1b024f[_0xb814('0x65')]['toUpperCase']()+']',_0xb814('0x4b'));_0x1b024f[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x4d44e3[_0xb814('0x48')],_0x1b024f['uniqueid'],md5(_0x1b024f[_0xb814('0x4d')]));}else{_0x1b024f['recordingURL']='';}headers[_0xb814('0x4f')]=getAuth(_0x4d44e3);return getUser(_0x4d44e3)[_0xb814('0x12')](function(_0x2645f6){_0x44088d=_0x2645f6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x44088d['id']);return getEndUser(_0x4d44e3,_0x1b024f[_0xb814('0x66')],_0x1b024f['calleridnum']);})['then'](function(_0x5d064b){_0x51ca51=_0x5d064b;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x51ca51['id']);return getTicket(_0x4d44e3,_0x44088d,_0x51ca51,_0x3377d4,_0x1b024f);})[_0xb814('0x12')](function(_0x1d3954){if(_0x1d3954){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')](_0xb814('0x54'),_0x1d3954['id']);}})[_0xb814('0x5c')](function(_0x5aabbe){logger[_0xb814('0x5d')]('['+_0x1b024f[_0xb814('0x65')][_0xb814('0x67')]()+']',JSON[_0xb814('0x5e')](_0x5aabbe));});};
\ No newline at end of file
+var _0x3e74=['customField','content','idField','custom_fields','variable','variableName','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','stripTrailingSlash','serverUrl','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','newTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','The\x20Enduser\x20ID\x20is:','trigger:desk:display','trigger:browser:url','%s/agent/tickets/%s','stringify','unmanaged','monitor_format','lastevent','toUpperCase','calleridnum','lodash','md5','util','ioredis','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','then','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','debug','[HTTP]','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','total_entries','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length','forEach','includes','string','picklist','type','nameField'];(function(_0x49c248,_0x45e23c){var _0x26f2d0=function(_0x11786f){while(--_0x11786f){_0x49c248['push'](_0x49c248['shift']());}};_0x26f2d0(++_0x45e23c);}(_0x3e74,0x175));var _0x43e7=function(_0x466b31,_0x1a4e0c){_0x466b31=_0x466b31-0x0;var _0x558215=_0x3e74[_0x466b31];return _0x558215;};'use strict';var _=require(_0x43e7('0x0'));var rp=require('request-promise');var md5=require(_0x43e7('0x1'));var util=require(_0x43e7('0x2'));var Redis=require(_0x43e7('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x43e7('0x4'))('desk');config[_0x43e7('0x5')]=_[_0x43e7('0x6')](config[_0x43e7('0x5')],{'host':_0x43e7('0x7'),'port':0x18eb});var io=require(_0x43e7('0x8'))(new Redis(config['redis']));function emit(_0x45a0d1,_0x3491d6,_0x2ede2d){io['to'](_0x45a0d1)[_0x43e7('0x9')](_0x3491d6,_0x2ede2d);}var headers={'Content-Type':_0x43e7('0xa'),'Accept':'application/json'};function getUser(_0x212c6c,_0x554d44){if(intUtil['validateEmail'](_0x554d44)===!![]){logger[_0x43e7('0xb')](_0x43e7('0xc'),_0x554d44);return request({'uri':util['format'](_0x43e7('0xd'),_0x212c6c['remoteUri'])})[_0x43e7('0xe')](function(_0x37302c){if(_0x37302c['total_entries']){return _[_0x43e7('0xf')](_0x37302c[_0x43e7('0x10')][_0x43e7('0x11')],{'email':_0x554d44});}})[_0x43e7('0xe')](function(_0x4e008c){if(_0x4e008c){logger['info'](_0x43e7('0x12'));return _0x4e008c;}else{logger[_0x43e7('0xb')](_0x43e7('0x13'));return request({'uri':util['format']('%s/users/me',_0x212c6c[_0x43e7('0x14')])});}});}else{logger[_0x43e7('0xb')](_0x43e7('0x15'));return request({'uri':util[_0x43e7('0x16')]('%s/users/me',_0x212c6c['remoteUri'])});}}function request(_0xdf16c){logger[_0x43e7('0x17')](_0x43e7('0x18'),JSON['stringify'](_0xdf16c));return rp(_['defaults'](_0xdf16c,{'method':_0x43e7('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x1ca758){var _0x9037d3;if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1b')){_0x9037d3=util[_0x43e7('0x16')](_0x43e7('0x1c'),_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1e')]);}else if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1f')){_0x9037d3=util[_0x43e7('0x16')]('%s/token:%s',_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1f')]);}return util['format'](_0x43e7('0x20'),new Buffer(_0x9037d3)[_0x43e7('0x21')](_0x43e7('0x22')));}function getEndUser(_0x28aacc,_0x4077fb,_0x2f4cb4){logger['info'](_0x43e7('0x23'),_0x2f4cb4);return request({'uri':util['format']('%s/customers/search',_0x28aacc[_0x43e7('0x14')]),'qs':{'phone':_0x2f4cb4}})[_0x43e7('0xe')](function(_0x4b2b9f){if(_0x4b2b9f[_0x43e7('0x24')]){logger['info'](_0x43e7('0x25'));return _0x4b2b9f['_embedded'][_0x43e7('0x11')][0x0];}else{logger[_0x43e7('0xb')](_0x43e7('0x26'));return request({'uri':util[_0x43e7('0x16')]('%s/customers',_0x28aacc['remoteUri']),'method':_0x43e7('0x27'),'body':{'first_name':_0x4077fb,'title':_0x4077fb,'phone_numbers':[{'type':'work','value':_0x2f4cb4}]}});}});}function getTags(_0x2dd5f,_0x40dc8f){var _0x3565cf=[];if(_0x2dd5f&&_0x2dd5f[_0x43e7('0x28')]>0x0){_0x3565cf=_['map'](_0x2dd5f,_0x40dc8f);}return _0x3565cf;}function getCustomFields(_0x33a1a5,_0x4690a6){var _0x45b675=[];var _0x50f9f5={'custom_fields':{}};if(_0x33a1a5[_0x43e7('0x28')]>0x0){_[_0x43e7('0x29')](_0x33a1a5,function(_0x2b85a5){if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5[_0x43e7('0x2d')])&&_0x2b85a5[_0x43e7('0x2e')]&&!_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x2b85a5[_0x43e7('0x2e')]['toLowerCase']()]=_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x21')]();}else if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5['type'])&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x2b85a5['content']['toString']();}else if(_0x2b85a5['type']===_0x43e7('0x33')&&_0x2b85a5[_0x43e7('0x34')]&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x34')]]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5['idField']]=_0x4690a6[_0x2b85a5['variableName']]['toString']());}else if(_0x2b85a5['type']==='customVariable'&&_0x2b85a5['Variable']&&_0x2b85a5['Variable'][_0x43e7('0x35')]&&_0x2b85a5['idField']&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x36')][_0x43e7('0x35')][_0x43e7('0x37')]()]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x4690a6[_0x2b85a5[_0x43e7('0x36')]['name']['toLowerCase']()]['toString']());}});}if(_0x50f9f5[_0x43e7('0x38')]){_0x50f9f5[_0x43e7('0x38')]=Number(_0x50f9f5[_0x43e7('0x38')]);}return _0x50f9f5;}function getTicket(_0x16cdba,_0x1b1440,_0x1ed538,_0x1d4589,_0x2ffd43){logger['info'](_0x43e7('0x39'));var _0x2b0ffe=_['merge']({'subject':intUtil[_0x43e7('0x3a')](_0x1d4589['Subjects'],_0x2ffd43,'\x20'),'type':_0x43e7('0x3b'),'status':_0x43e7('0x3c'),'labels':[_0x43e7('0x3d'),_0x43e7('0x3e'),_0x43e7('0x3f')][_0x43e7('0x40')](getTags(_0x1d4589['Tags'],'name')),'description':intUtil[_0x43e7('0x3a')](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a'),'_links':{'assigned_user':{'href':util[_0x43e7('0x16')](_0x43e7('0x42'),_0x1b1440['id']),'class':_0x43e7('0x43')}},'message':{'direction':'in','body':intUtil['getString'](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a')}},getCustomFields(_0x1d4589[_0x43e7('0x44')],_0x2ffd43));return request({'uri':util['format'](_0x43e7('0x45'),_0x16cdba['remoteUri'],_0x1ed538['id']),'method':_0x43e7('0x27'),'body':_0x2b0ffe});}exports['queue']=function(_0x3d81ae,_0x3b4235,_0x3a5807,_0x1c2c6b,_0x49b866,_0x47d6a1){var _0x103393,_0x40c509;_0x47d6a1[_0x43e7('0x14')]=intUtil[_0x43e7('0x46')](_0x47d6a1['remoteUri']);_0x47d6a1['serverUrl']=intUtil['stripTrailingSlash'](_0x47d6a1[_0x43e7('0x47')]);if(_0x49b866&&_0x49b866['monitor_format']){logger[_0x43e7('0xb')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3b4235[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x47d6a1[_0x43e7('0x47')],_0x3b4235[_0x43e7('0x4a')],md5(_0x3b4235[_0x43e7('0x4a')]));}else{_0x3b4235['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x47d6a1);return getUser(_0x47d6a1,_0x1c2c6b[_0x43e7('0x4c')])[_0x43e7('0xe')](function(_0x1fd277){_0x103393=_0x1fd277;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x103393['id']);return getEndUser(_0x47d6a1,_0x3b4235['calleridname'],_0x3b4235['calleridnum']);})[_0x43e7('0xe')](function(_0x36a09e){_0x40c509=_0x36a09e;logger[_0x43e7('0xb')]('The\x20Enduser\x20ID\x20is:',_0x40c509['id']);return getTicket(_0x47d6a1,_0x103393,_0x40c509,_0x3a5807,_0x3b4235);})['then'](function(_0x56489b){if(_0x56489b){logger[_0x43e7('0xb')](_0x43e7('0x4e'));logger['info'](_0x43e7('0x4f'),_0x56489b['id']);switch(_0x47d6a1[_0x43e7('0x2d')]){case _0x43e7('0x50'):logger['info']('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0x43e7('0x51'),_0x1c2c6b[_0x43e7('0x35')]),'trigger:desk:display',{'recordId':_0x56489b['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')](_0x43e7('0x53'),_0x43e7('0x54'));emit(util['format'](_0x43e7('0x51'),_0x1c2c6b['name']),'trigger:browser:url',{'uri':util[_0x43e7('0x16')](_0x43e7('0x55'),_0x56489b['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x53'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x1cd87c){console[_0x43e7('0x56')](_0x1cd87c);logger[_0x43e7('0x56')](_0x43e7('0x53'),JSON['stringify'](_0x1cd87c));});};exports[_0x43e7('0x59')]=function(_0x46c910,_0x499c03,_0x39e3ca,_0x4e6f6d,_0x35b799,_0x520857,_0x34e2ec){var _0x1f561f,_0xfe13fa;_0x520857['remoteUri']=intUtil['stripTrailingSlash'](_0x520857[_0x43e7('0x14')]);_0x520857[_0x43e7('0x47')]=intUtil[_0x43e7('0x46')](_0x520857[_0x43e7('0x47')]);if(_0x34e2ec&&_0x34e2ec[_0x43e7('0x5a')]&&_0x34e2ec[_0x43e7('0x5a')]!==_0x43e7('0x5b')){logger[_0x43e7('0xb')](_0x43e7('0x5c'),_0x43e7('0x5d'));_0x499c03[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x520857[_0x43e7('0x47')],_0x499c03['uniqueid'],md5(_0x499c03[_0x43e7('0x4a')]));}headers[_0x43e7('0x4b')]=getAuth(_0x520857);return getUser(_0x520857,_0x4e6f6d[_0x43e7('0x4c')])['then'](function(_0x5d63c6){_0x1f561f=_0x5d63c6;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x1f561f['id']);return getEndUser(_0x520857,_0x499c03['destcalleridname'],_0x499c03[_0x43e7('0x5e')]);})['then'](function(_0x49a6ce){_0xfe13fa=_0x49a6ce;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xfe13fa['id']);return getTicket(_0x520857,_0x1f561f,_0xfe13fa,_0x39e3ca,_0x499c03);})[_0x43e7('0xe')](function(_0x40155c){if(_0x40155c){logger[_0x43e7('0xb')]('Ticket\x20created!');logger[_0x43e7('0xb')](_0x43e7('0x4f'),_0x40155c['id']);switch(_0x520857['type']){case _0x43e7('0x50'):logger[_0x43e7('0xb')](_0x43e7('0x53'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format']('user:%s',_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x60'),{'recordId':_0x40155c['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x43e7('0x16')](_0x43e7('0x51'),_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x61'),{'uri':util['format'](_0x43e7('0x62'),_0x520857[_0x43e7('0x14')],_0x40155c['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x5c'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x4665db){logger[_0x43e7('0x56')](_0x43e7('0x5c'),JSON[_0x43e7('0x63')](_0x4665db));});};exports[_0x43e7('0x64')]=function(_0x57fdfe,_0x5f3824,_0x2b0711,_0x58a3a8,_0x501616,_0x50edb2){var _0xb3e981,_0xe666b0;_0x50edb2['remoteUri']=intUtil[_0x43e7('0x46')](_0x50edb2[_0x43e7('0x14')]);_0x50edb2[_0x43e7('0x47')]=intUtil['stripTrailingSlash'](_0x50edb2[_0x43e7('0x47')]);if(_0x501616&&_0x501616[_0x43e7('0x65')]){logger[_0x43e7('0xb')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',_0x43e7('0x5d'));_0x5f3824[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x50edb2[_0x43e7('0x47')],_0x5f3824[_0x43e7('0x4a')],md5(_0x5f3824['uniqueid']));}else{_0x5f3824['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x50edb2);return getUser(_0x50edb2)['then'](function(_0x5cb26e){_0xb3e981=_0x5cb26e;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0xb3e981['id']);return getEndUser(_0x50edb2,_0x5f3824['calleridname'],_0x5f3824[_0x43e7('0x68')]);})[_0x43e7('0xe')](function(_0x1e2fed){_0xe666b0=_0x1e2fed;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xe666b0['id']);return getTicket(_0x50edb2,_0xb3e981,_0xe666b0,_0x2b0711,_0x5f3824);})[_0x43e7('0xe')](function(_0x398a78){if(_0x398a78){logger['info'](_0x43e7('0x4e'));logger[_0x43e7('0xb')]('The\x20Ticket\x20ID\x20is:',_0x398a78['id']);}})[_0x43e7('0x58')](function(_0x5c2c5f){logger[_0x43e7('0x56')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',JSON[_0x43e7('0x63')](_0x5c2c5f));});};
\ No newline at end of file
index 2c4c630..33d7e91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1db=['Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','request-promise','./util','dynamics365','../../../../config/environment','redis','defaults','localhost','POST','clientId','remoteUri','username','password','clientSecret','access_token','catch',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','then','value','isNil','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','toUpperCase','systemuserid','info','userId','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','headers','odata-entityid','substring','lastIndexOf','enduserId','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','includes','string','picklist','customField','idField','indexOf','content','ticketType','incident','incidents','assign','getString','Fields','phonecall','phonecalls','Subjects','Descriptions','/contacts(','/systemusers(','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','[QUEUE]'];(function(_0x263fe7,_0x268e6d){var _0x5837b1=function(_0x3c07e2){while(--_0x3c07e2){_0x263fe7['push'](_0x263fe7['shift']());}};_0x5837b1(++_0x268e6d);}(_0xf1db,0x191));var _0xbf1d=function(_0x332616,_0x5c8b9b){_0x332616=_0x332616-0x0;var _0x4f3037=_0xf1db[_0x332616];return _0x4f3037;};'use strict';var _=require(_0xbf1d('0x0'));var BPromise=require(_0xbf1d('0x1'));var rp=require(_0xbf1d('0x2'));var util=require('util');var intUtil=require(_0xbf1d('0x3'));var md5=require('md5');var Redis=require('ioredis');var logger=require('../../../../config/logger')(_0xbf1d('0x4'));var config=require(_0xbf1d('0x5'));config[_0xbf1d('0x6')]=_[_0xbf1d('0x7')](config[_0xbf1d('0x6')],{'host':_0xbf1d('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xbf1d('0x6')]));function getAuthToken(_0x21a3b0,_0xe21792,_0x4f3f7d){var _0x29e9ec={'method':_0xbf1d('0x9'),'uri':_0xe21792,'form':{'client_id':_0x21a3b0[_0xbf1d('0xa')],'resource':_0x21a3b0[_0xbf1d('0xb')],'username':_0x21a3b0[_0xbf1d('0xc')],'password':_0x21a3b0[_0xbf1d('0xd')],'grant_type':_0xbf1d('0xd'),'client_secret':_0x21a3b0[_0xbf1d('0xe')]},'json':!![]};return rp(_0x29e9ec)['then'](function(_0x11dca3){return _0x11dca3[_0xbf1d('0xf')];})[_0xbf1d('0x10')](function(_0x5356cf){logger['error']('['+[_0x4f3f7d['toUpperCase']()]+_0xbf1d('0x11'));return _0x5356cf[_0xbf1d('0x12')];});}function getUser(_0x3cc619,_0x29c406,_0x367588,_0x51a2f2,_0x378057,_0xf83201){return new BPromise(function(_0x5aefd9,_0x24033d){return getAuthToken(_0x29c406,_0x51a2f2,_0xf83201)['then'](function(_0x2daa9a){var _0x4c946c={'method':_0xbf1d('0x13'),'uri':_0x378057+_0xbf1d('0x14'),'headers':{'Authorization':_0xbf1d('0x15')+_0x2daa9a,'OData-Version':_0xbf1d('0x16')},'json':!![]};return rp(_0x4c946c);})[_0xbf1d('0x17')](function(_0x31c312){var _0x4c1e75=_0x31c312[_0xbf1d('0x18')];var _0x278670=![];var _0x1ef973=null;if(!_[_0xbf1d('0x19')](_0x367588)){if(intUtil[_0xbf1d('0x1a')](_0x367588[_0xbf1d('0x1b')])){_0x3cc619[_0xbf1d('0x1c')]=_0x367588[_0xbf1d('0x1b')];for(_0x1ef973=0x0;_0x1ef973<_0x4c1e75[_0xbf1d('0x1d')];_0x1ef973++){if(_0x4c1e75[_0x1ef973][_0xbf1d('0x1e')]===_0x367588[_0xbf1d('0x1b')]&&!_0x4c1e75[_0x1ef973][_0xbf1d('0x1f')]){_0x278670=!![];logger['info']('['+[_0xf83201[_0xbf1d('0x20')]()]+']\x20Agent\x20found\x20'+_0x4c1e75[_0x1ef973][_0xbf1d('0x21')]+'!');_0x3cc619['userId']=_0x4c1e75[_0x1ef973][_0xbf1d('0x21')];}}}}if(!_0x278670){logger[_0xbf1d('0x22')]('['+[_0xf83201['toUpperCase']()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x3cc619[_0xbf1d('0x1c')]=_0x29c406['username'];for(_0x1ef973=0x0;_0x1ef973<_0x4c1e75[_0xbf1d('0x1d')];_0x1ef973++){if(_0x4c1e75[_0x1ef973][_0xbf1d('0x1e')]===_0x29c406[_0xbf1d('0xc')]){_0x3cc619[_0xbf1d('0x23')]=_0x4c1e75[_0x1ef973][_0xbf1d('0x21')];}}}_0x5aefd9(_0x3cc619);})[_0xbf1d('0x10')](function(_0x4e8a80){_0x24033d(_0x4e8a80['message']);});});}function createEndUser(_0x21ae4e,_0x2e67b9,_0x4de06e,_0x41f511,_0x5adc6e,_0x2702aa){return new BPromise(function(_0x1eb1a5,_0x185957){return getAuthToken(_0x2e67b9,_0x4de06e,_0x2702aa)[_0xbf1d('0x17')](function(_0x1d0bc5){var _0x9ab988=_0x2702aa[_0xbf1d('0x24')]()===_0xbf1d('0x25')?_0x5adc6e[_0xbf1d('0x26')]:_0x5adc6e[_0xbf1d('0x27')];var _0x45e0e1={'method':_0xbf1d('0x9'),'uri':_0x41f511+_0xbf1d('0x28'),'body':{'telephone1':_0x9ab988,'fullname':_0x9ab988,'firstname':_0x9ab988,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x21ae4e[_0xbf1d('0x23')]+')'},'headers':{'Authorization':_0xbf1d('0x15')+_0x1d0bc5,'OData-Version':_0xbf1d('0x16')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x45e0e1);})['then'](function(_0x3e59e0){var _0x4927f5=_0x3e59e0[_0xbf1d('0x29')][_0xbf1d('0x2a')];var _0x5bd4c8=_0x4927f5[_0xbf1d('0x2b')](_0x4927f5[_0xbf1d('0x2c')]('(')+0x1,_0x4927f5[_0xbf1d('0x2c')](')'));_0x21ae4e[_0xbf1d('0x2d')]=_0x5bd4c8;_0x1eb1a5(_0x21ae4e);})['catch'](function(_0x418b6b){_0x185957(_0x418b6b[_0xbf1d('0x12')]);});});}function getEndUser(_0x1ff70f,_0x41e5b7,_0x131656,_0x3bda5a,_0x1b96c7,_0x41ec42){return new BPromise(function(_0x2dd923,_0x534644){var _0x413706=_0x41ec42[_0xbf1d('0x24')]()==='outbound'?_0x1b96c7[_0xbf1d('0x26')]:_0x1b96c7['calleridnum'];return getAuthToken(_0x41e5b7,_0x131656,_0x41ec42)[_0xbf1d('0x17')](function(_0x17d551){var _0x5e0966={'method':_0xbf1d('0x13'),'uri':_0x3bda5a+_0xbf1d('0x2e')+_0x413706[_0xbf1d('0x2f')]('+',_0xbf1d('0x30'))+'\x27','headers':{'Authorization':_0xbf1d('0x15')+_0x17d551,'If-None-Match':null,'OData-Version':_0xbf1d('0x16')},'json':!![]};return rp(_0x5e0966);})[_0xbf1d('0x17')](function(_0x4b0621){var _0x1b280a=null;if(_0x4b0621){var _0x5b4d98=_0x4b0621['value'];var _0x3f2319=![];for(_0x1b280a=0x0;_0x1b280a<_0x5b4d98[_0xbf1d('0x1d')];_0x1b280a++){if(_0x5b4d98[_0x1b280a][_0xbf1d('0x31')]===_0x413706){_0x3f2319=!![];_0x1ff70f[_0xbf1d('0x2d')]=_0x5b4d98[_0x1b280a][_0xbf1d('0x32')];}}if(_0x3f2319){_0x2dd923(_0x1ff70f);}else{return createEndUser(_0x1ff70f,_0x41e5b7,_0x131656,_0x3bda5a,_0x1b96c7,_0x41ec42)[_0xbf1d('0x17')](function(_0x5a8a48){logger['info']('['+[_0x41ec42['toUpperCase']()]+_0xbf1d('0x33'),_0x5a8a48['enduserId']);_0x2dd923(_0x5a8a48);});}}else{return createEndUser(_0x1ff70f,_0x41e5b7,_0x131656,_0x3bda5a,_0x1b96c7,_0x41ec42)[_0xbf1d('0x17')](function(_0x25b620){logger['info']('['+[_0x41ec42['toUpperCase']()]+_0xbf1d('0x34'),_0x25b620[_0xbf1d('0x2d')]);_0x2dd923(_0x25b620);});}});});}function getCustomFields(_0x5f13e9,_0x2e8657,_0xe213a6){var _0x524b48={};if(_0x5f13e9[_0xbf1d('0x1d')]>0x0){_['forEach'](_0x5f13e9,function(_0x2baaf0){if(_[_0xbf1d('0x35')]([_0xbf1d('0x36'),_0xbf1d('0x37')],_0x2baaf0['type'])&&_0x2baaf0['nameField']&&!_0x2baaf0[_0xbf1d('0x38')]){var _0x469287=_0x2baaf0[_0xbf1d('0x39')][_0xbf1d('0x24')]();var _0x31a8c3=_0x469287['substring'](0x0,_0x469287[_0xbf1d('0x3a')]('_'));var _0x1d58db=_0x469287[_0xbf1d('0x2b')](_0x469287['indexOf']('_')+0x1);if(_0x31a8c3===_0xe213a6){_0x524b48[_0x1d58db]=_0x2baaf0[_0xbf1d('0x3b')];}}});}return _0x524b48;}function getTicket(_0x57b43a,_0x22be30,_0xcb61fe,_0x5c5018,_0x2d1db7,_0x5d48f4,_0x4afde6){return new BPromise(function(_0x3bc604,_0x157460){var _0x3d83f5;return getAuthToken(_0x22be30,_0xcb61fe,_0x4afde6)[_0xbf1d('0x17')](function(_0x44179c){if(_0x5d48f4[_0xbf1d('0x3c')]===_0xbf1d('0x3d')){_0x3d83f5={'method':_0xbf1d('0x9'),'uri':_0x5c5018+_0xbf1d('0x3e'),'body':Object[_0xbf1d('0x3f')]({},{'title':intUtil[_0xbf1d('0x40')](_0x5d48f4['Subjects'],_0x2d1db7,'\x20'),'description':intUtil[_0xbf1d('0x40')](_0x5d48f4['Descriptions'],_0x2d1db7,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x57b43a[_0xbf1d('0x2d')]+')','ownerid@odata.bind':'/systemusers('+_0x57b43a[_0xbf1d('0x23')]+')','caseorigincode':'1'},getCustomFields(_0x5d48f4[_0xbf1d('0x41')],_0x2d1db7,_0x5d48f4[_0xbf1d('0x3c')])),'headers':{'Authorization':_0xbf1d('0x15')+_0x44179c,'OData-Version':_0xbf1d('0x16')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x5d48f4[_0xbf1d('0x3c')]===_0xbf1d('0x42')){_0x3d83f5={'method':_0xbf1d('0x9'),'uri':_0x5c5018+_0xbf1d('0x43'),'body':Object[_0xbf1d('0x3f')]({},{'subject':intUtil[_0xbf1d('0x40')](_0x5d48f4[_0xbf1d('0x44')],_0x2d1db7,'\x20'),'phonenumber':String(_0x2d1db7[_0xbf1d('0x27')]),'description':intUtil[_0xbf1d('0x40')](_0x5d48f4[_0xbf1d('0x45')],_0x2d1db7,'\x0a'),'regardingobjectid_contact@odata.bind':_0xbf1d('0x46')+_0x57b43a[_0xbf1d('0x2d')]+')','ownerid@odata.bind':_0xbf1d('0x47')+_0x57b43a['userId']+')','directioncode':_0x57b43a[_0xbf1d('0x48')]===_0xbf1d('0x49')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xbf1d('0x47')+_0x57b43a[_0xbf1d('0x23')]+')','participationtypemask':_0x57b43a[_0xbf1d('0x48')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0xbf1d('0x46')+_0x57b43a[_0xbf1d('0x2d')]+')','participationtypemask':_0x57b43a[_0xbf1d('0x48')]===_0xbf1d('0x49')?0x1:0x2}]},getCustomFields(_0x5d48f4['Fields'],_0x2d1db7,_0x5d48f4[_0xbf1d('0x3c')])),'headers':{'Authorization':_0xbf1d('0x15')+_0x44179c,'OData-Version':_0xbf1d('0x16')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x3d83f5);})[_0xbf1d('0x17')](function(_0x57b639){var _0x466f60=_0x57b639['headers'][_0xbf1d('0x2a')];var _0x4f3bdd=_0x466f60[_0xbf1d('0x2b')](_0x466f60[_0xbf1d('0x2c')]('(')+0x1,_0x466f60[_0xbf1d('0x2c')](')'));_0x57b43a[_0xbf1d('0x4a')]=_0x4f3bdd;_0x3bc604(_0x57b43a);})[_0xbf1d('0x10')](function(_0x164cb8){_0x157460(_0x164cb8['message']);});});}function emit(_0x218585,_0x46eb6e,_0x2fbe1e,_0x1de1ee){var _0x2e3039={'uri':util[_0xbf1d('0x4b')](_0xbf1d('0x4c'),_0x218585,_0x2fbe1e,_0x1de1ee)};io['to'](util[_0xbf1d('0x4b')]('user:%s',_0x46eb6e))[_0xbf1d('0x4d')](_0xbf1d('0x4e'),_0x2e3039);}exports['cs']=function(_0x575b30,_0xf0e398,_0x518859,_0x31b5de,_0x1bfe47,_0x5c1299,_0x729bc7,_0x34f14d){var _0x130f0e={};_0x5c1299[_0xbf1d('0xb')]=intUtil[_0xbf1d('0x4f')](_0x5c1299['remoteUri']);_0x5c1299[_0xbf1d('0x50')]=intUtil[_0xbf1d('0x4f')](_0x5c1299[_0xbf1d('0x50')]);_0x130f0e[_0xbf1d('0x48')]=_0x34f14d==='queue'||_0x34f14d==='unmanaged'?_0xbf1d('0x49'):'outbound';var _0x5eb7c1=util[_0xbf1d('0x4b')](_0xbf1d('0x51'),_0x5c1299[_0xbf1d('0xb')]);var _0x2e041f=util[_0xbf1d('0x4b')](_0xbf1d('0x52'),_0x5c1299['tenantId']);var _0x1f0e8c=util[_0xbf1d('0x4b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5c1299['serverUrl'],_0xf0e398['uniqueid'],md5(_0xf0e398['uniqueid']));if(_0x1bfe47&&_0x1bfe47['monitor_format']){logger[_0xbf1d('0x22')](_0xbf1d('0x53'),_0xbf1d('0x54'));_0xf0e398['recordingURL']=_0x1f0e8c;}else if(_0x729bc7&&_0x729bc7['recordingFormat']&&_0x729bc7[_0xbf1d('0x55')]!==_0xbf1d('0x56')){logger[_0xbf1d('0x22')](_0xbf1d('0x57'),_0xbf1d('0x54'));_0xf0e398[_0xbf1d('0x58')]=_0x1f0e8c;}else{_0xf0e398['recordingURL']='';}return getUser(_0x130f0e,_0x5c1299,_0x31b5de,_0x2e041f,_0x5eb7c1,_0x34f14d)[_0xbf1d('0x17')](function(_0x10f801){logger[_0xbf1d('0x22')]('['+_0x34f14d[_0xbf1d('0x20')]()+']\x20The\x20User\x20ID\x20is:',_0x10f801[_0xbf1d('0x23')]);logger[_0xbf1d('0x22')]('['+_0x34f14d[_0xbf1d('0x20')]()+']\x20The\x20User\x20email\x20is:',_0x10f801[_0xbf1d('0x1c')]);return getEndUser(_0x10f801,_0x5c1299,_0x2e041f,_0x5eb7c1,_0xf0e398,_0x34f14d);})[_0xbf1d('0x17')](function(_0x2abc5f){logger[_0xbf1d('0x22')]('['+_0x34f14d['toUpperCase']()+_0xbf1d('0x59'),_0x2abc5f[_0xbf1d('0x2d')]);logger[_0xbf1d('0x22')]('['+_0x34f14d['toUpperCase']()+']\x20The\x20Enduser\x20phone\x20is:',_0xf0e398['calleridnum']);return getTicket(_0x2abc5f,_0x5c1299,_0x2e041f,_0x5eb7c1,_0xf0e398,_0x518859,_0x34f14d);})[_0xbf1d('0x17')](function(_0x59042a){logger[_0xbf1d('0x22')](util['format']('['+_0x34f14d['toUpperCase']()+_0xbf1d('0x5a'),_0x518859[_0xbf1d('0x3c')],_0x59042a[_0xbf1d('0x4a')]));logger[_0xbf1d('0x22')](util['format']('['+_0x34f14d[_0xbf1d('0x20')]()+_0xbf1d('0x5b'),_0x34f14d));if(_0x34f14d!==_0xbf1d('0x5c')){logger[_0xbf1d('0x22')]('['+_0x34f14d[_0xbf1d('0x20')]()+']',_0xbf1d('0x5d'));emit(_0x5c1299['remoteUri'],_0x31b5de[_0xbf1d('0x5e')],_0x518859[_0xbf1d('0x3c')],_0x59042a['ticketId']);}})['catch'](function(_0x35c3d3){logger[_0xbf1d('0x5f')]('['+_0x34f14d[_0xbf1d('0x20')]()+_0xbf1d('0x60'),util['inspect'](_0x35c3d3,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x559f=['ticketType','assign','getString','Descriptions','/contacts(','Fields','phonecall','phonecalls','Subjects','callDirection','queue','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','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!','recordingURL','recordingFormat','none',']\x20The\x20User\x20ID\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','request-promise','./util','ioredis','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','POST','clientId','remoteUri','username','password','clientSecret','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','then','4.0','isNil','email','userEmail','length',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','internalemailaddress','toLowerCase','outbound','calleridnum','contacts','/systemusers(','Bearer\x20','headers','odata-entityid','substring','lastIndexOf','GET','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','%2b','value','telephone1','enduserId','contactid',']\x20Enduser\x20created!','info',']\x20Enduser\x20Created!','forEach','string','picklist','nameField','customField','idField','indexOf','content'];(function(_0x218b53,_0x7fc544){var _0x4ea4aa=function(_0x1b20eb){while(--_0x1b20eb){_0x218b53['push'](_0x218b53['shift']());}};_0x4ea4aa(++_0x7fc544);}(_0x559f,0x1ae));var _0xf559=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x559f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf559('0x0'));var BPromise=require('bluebird');var rp=require(_0xf559('0x1'));var util=require('util');var intUtil=require(_0xf559('0x2'));var md5=require('md5');var Redis=require(_0xf559('0x3'));var logger=require('../../../../config/logger')(_0xf559('0x4'));var config=require(_0xf559('0x5'));config[_0xf559('0x6')]=_['defaults'](config[_0xf559('0x6')],{'host':_0xf559('0x7'),'port':0x18eb});var io=require(_0xf559('0x8'))(new Redis(config[_0xf559('0x6')]));function getAuthToken(_0x1b96a2,_0xd93737,_0x4d6d5d){var _0x393361={'method':_0xf559('0x9'),'uri':_0xd93737,'form':{'client_id':_0x1b96a2[_0xf559('0xa')],'resource':_0x1b96a2[_0xf559('0xb')],'username':_0x1b96a2[_0xf559('0xc')],'password':_0x1b96a2[_0xf559('0xd')],'grant_type':'password','client_secret':_0x1b96a2[_0xf559('0xe')]},'json':!![]};return rp(_0x393361)['then'](function(_0x59a3cf){return _0x59a3cf[_0xf559('0xf')];})[_0xf559('0x10')](function(_0x15da5d){logger[_0xf559('0x11')]('['+[_0x4d6d5d[_0xf559('0x12')]()]+_0xf559('0x13'));return _0x15da5d[_0xf559('0x14')];});}function getUser(_0x56f9f3,_0x2a134b,_0x57b7a1,_0x3f030b,_0x87305f,_0x53ab40){return new BPromise(function(_0xbace21,_0x4ced5e){return getAuthToken(_0x2a134b,_0x3f030b,_0x53ab40)[_0xf559('0x15')](function(_0x19014a){var _0x38769d={'method':'GET','uri':_0x87305f+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':'Bearer\x20'+_0x19014a,'OData-Version':_0xf559('0x16')},'json':!![]};return rp(_0x38769d);})[_0xf559('0x15')](function(_0x4f02a4){var _0x43793c=_0x4f02a4['value'];var _0x58dc37=![];var _0xd019fa=null;if(!_[_0xf559('0x17')](_0x57b7a1)){if(intUtil['validateEmail'](_0x57b7a1[_0xf559('0x18')])){_0x56f9f3[_0xf559('0x19')]=_0x57b7a1[_0xf559('0x18')];for(_0xd019fa=0x0;_0xd019fa<_0x43793c[_0xf559('0x1a')];_0xd019fa++){if(_0x43793c[_0xd019fa]['internalemailaddress']===_0x57b7a1[_0xf559('0x18')]&&!_0x43793c[_0xd019fa]['isdisabled']){_0x58dc37=!![];logger['info']('['+[_0x53ab40['toUpperCase']()]+_0xf559('0x1b')+_0x43793c[_0xd019fa][_0xf559('0x1c')]+'!');_0x56f9f3[_0xf559('0x1d')]=_0x43793c[_0xd019fa][_0xf559('0x1c')];}}}}if(!_0x58dc37){logger['info']('['+[_0x53ab40[_0xf559('0x12')]()]+_0xf559('0x1e'));_0x56f9f3['userEmail']=_0x2a134b[_0xf559('0xc')];for(_0xd019fa=0x0;_0xd019fa<_0x43793c[_0xf559('0x1a')];_0xd019fa++){if(_0x43793c[_0xd019fa][_0xf559('0x1f')]===_0x2a134b[_0xf559('0xc')]){_0x56f9f3[_0xf559('0x1d')]=_0x43793c[_0xd019fa][_0xf559('0x1c')];}}}_0xbace21(_0x56f9f3);})[_0xf559('0x10')](function(_0x32b441){_0x4ced5e(_0x32b441['message']);});});}function createEndUser(_0x654148,_0x396bd1,_0x14f967,_0x406c56,_0x2a46a4,_0x342c70){return new BPromise(function(_0x12db18,_0x5acd6e){return getAuthToken(_0x396bd1,_0x14f967,_0x342c70)[_0xf559('0x15')](function(_0xce8606){var _0x316afe=_0x342c70[_0xf559('0x20')]()===_0xf559('0x21')?_0x2a46a4['destcalleridnum']:_0x2a46a4[_0xf559('0x22')];var _0x25bc11={'method':'POST','uri':_0x406c56+_0xf559('0x23'),'body':{'telephone1':_0x316afe,'fullname':_0x316afe,'firstname':_0x316afe,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xf559('0x24')+_0x654148[_0xf559('0x1d')]+')'},'headers':{'Authorization':_0xf559('0x25')+_0xce8606,'OData-Version':_0xf559('0x16')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x25bc11);})[_0xf559('0x15')](function(_0x567409){var _0x5a1c97=_0x567409[_0xf559('0x26')][_0xf559('0x27')];var _0x4f3f0e=_0x5a1c97[_0xf559('0x28')](_0x5a1c97[_0xf559('0x29')]('(')+0x1,_0x5a1c97['lastIndexOf'](')'));_0x654148['enduserId']=_0x4f3f0e;_0x12db18(_0x654148);})[_0xf559('0x10')](function(_0x2881ee){_0x5acd6e(_0x2881ee[_0xf559('0x14')]);});});}function getEndUser(_0x98d2c9,_0x4bda7b,_0x896279,_0xd55602,_0x3351cb,_0x57f5c7){return new BPromise(function(_0x5b7c8b,_0x2590cc){var _0x1d78f5=_0x57f5c7[_0xf559('0x20')]()==='outbound'?_0x3351cb['destcalleridnum']:_0x3351cb[_0xf559('0x22')];return getAuthToken(_0x4bda7b,_0x896279,_0x57f5c7)[_0xf559('0x15')](function(_0x22a5fb){var _0x414fd1={'method':_0xf559('0x2a'),'uri':_0xd55602+_0xf559('0x2b')+_0x1d78f5['replace']('+',_0xf559('0x2c'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x22a5fb,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x414fd1);})['then'](function(_0x44e1fa){var _0x17fe54=null;if(_0x44e1fa){var _0x104481=_0x44e1fa[_0xf559('0x2d')];var _0x59fa5b=![];for(_0x17fe54=0x0;_0x17fe54<_0x104481['length'];_0x17fe54++){if(_0x104481[_0x17fe54][_0xf559('0x2e')]===_0x1d78f5){_0x59fa5b=!![];_0x98d2c9[_0xf559('0x2f')]=_0x104481[_0x17fe54][_0xf559('0x30')];}}if(_0x59fa5b){_0x5b7c8b(_0x98d2c9);}else{return createEndUser(_0x98d2c9,_0x4bda7b,_0x896279,_0xd55602,_0x3351cb,_0x57f5c7)[_0xf559('0x15')](function(_0x5dd9a2){logger['info']('['+[_0x57f5c7[_0xf559('0x12')]()]+_0xf559('0x31'),_0x5dd9a2['enduserId']);_0x5b7c8b(_0x5dd9a2);});}}else{return createEndUser(_0x98d2c9,_0x4bda7b,_0x896279,_0xd55602,_0x3351cb,_0x57f5c7)[_0xf559('0x15')](function(_0x5f47d7){logger[_0xf559('0x32')]('['+[_0x57f5c7['toUpperCase']()]+_0xf559('0x33'),_0x5f47d7['enduserId']);_0x5b7c8b(_0x5f47d7);});}});});}function getCustomFields(_0x203cb8,_0x2095b0,_0x3fa634){var _0x1f2b6f={};if(_0x203cb8[_0xf559('0x1a')]>0x0){_[_0xf559('0x34')](_0x203cb8,function(_0x887c7d){if(_['includes']([_0xf559('0x35'),_0xf559('0x36')],_0x887c7d['type'])&&_0x887c7d[_0xf559('0x37')]&&!_0x887c7d[_0xf559('0x38')]){var _0x30508c=_0x887c7d[_0xf559('0x39')][_0xf559('0x20')]();var _0x43a6cb=_0x30508c[_0xf559('0x28')](0x0,_0x30508c[_0xf559('0x3a')]('_'));var _0x174298=_0x30508c[_0xf559('0x28')](_0x30508c['indexOf']('_')+0x1);if(_0x43a6cb===_0x3fa634){_0x1f2b6f[_0x174298]=_0x887c7d[_0xf559('0x3b')];}}});}return _0x1f2b6f;}function getTicket(_0x47aa24,_0x4b0a1b,_0x222f3c,_0x3fb64d,_0x2a8057,_0x2a572a,_0x2044dd){return new BPromise(function(_0xd47b5d,_0xde9cd1){var _0x18586e;return getAuthToken(_0x4b0a1b,_0x222f3c,_0x2044dd)[_0xf559('0x15')](function(_0x5b9c26){if(_0x2a572a[_0xf559('0x3c')]==='incident'){_0x18586e={'method':_0xf559('0x9'),'uri':_0x3fb64d+'incidents','body':Object[_0xf559('0x3d')]({},{'title':intUtil[_0xf559('0x3e')](_0x2a572a['Subjects'],_0x2a8057,'\x20'),'description':intUtil[_0xf559('0x3e')](_0x2a572a[_0xf559('0x3f')],_0x2a8057,'\x0a'),'customerid_contact@odata.bind':_0xf559('0x40')+_0x47aa24[_0xf559('0x2f')]+')','ownerid@odata.bind':'/systemusers('+_0x47aa24[_0xf559('0x1d')]+')','caseorigincode':'1'},getCustomFields(_0x2a572a[_0xf559('0x41')],_0x2a8057,_0x2a572a[_0xf559('0x3c')])),'headers':{'Authorization':'Bearer\x20'+_0x5b9c26,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x2a572a[_0xf559('0x3c')]===_0xf559('0x42')){_0x18586e={'method':'POST','uri':_0x3fb64d+_0xf559('0x43'),'body':Object['assign']({},{'subject':intUtil[_0xf559('0x3e')](_0x2a572a[_0xf559('0x44')],_0x2a8057,'\x20'),'phonenumber':String(_0x2a8057[_0xf559('0x22')]),'description':intUtil[_0xf559('0x3e')](_0x2a572a[_0xf559('0x3f')],_0x2a8057,'\x0a'),'regardingobjectid_contact@odata.bind':_0xf559('0x40')+_0x47aa24['enduserId']+')','ownerid@odata.bind':_0xf559('0x24')+_0x47aa24[_0xf559('0x1d')]+')','directioncode':_0x47aa24[_0xf559('0x45')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xf559('0x24')+_0x47aa24['userId']+')','participationtypemask':_0x47aa24[_0xf559('0x45')]===_0xf559('0x46')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x47aa24[_0xf559('0x2f')]+')','participationtypemask':_0x47aa24[_0xf559('0x45')]==='queue'?0x1:0x2}]},getCustomFields(_0x2a572a[_0xf559('0x41')],_0x2a8057,_0x2a572a[_0xf559('0x3c')])),'headers':{'Authorization':'Bearer\x20'+_0x5b9c26,'OData-Version':_0xf559('0x16')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x18586e);})[_0xf559('0x15')](function(_0x432882){var _0x1a72e4=_0x432882[_0xf559('0x26')]['odata-entityid'];var _0xfacbb4=_0x1a72e4['substring'](_0x1a72e4['lastIndexOf']('(')+0x1,_0x1a72e4[_0xf559('0x29')](')'));_0x47aa24[_0xf559('0x47')]=_0xfacbb4;_0xd47b5d(_0x47aa24);})[_0xf559('0x10')](function(_0x3271d1){_0xde9cd1(_0x3271d1[_0xf559('0x14')]);});});}function emit(_0x2890ad,_0x535c72,_0x3ebc19,_0x45a200){var _0x340d51={'uri':util['format'](_0xf559('0x48'),_0x2890ad,_0x3ebc19,_0x45a200)};io['to'](util[_0xf559('0x49')](_0xf559('0x4a'),_0x535c72))[_0xf559('0x4b')](_0xf559('0x4c'),_0x340d51);}exports['cs']=function(_0x312bc3,_0x29daee,_0x2e4b2f,_0x736245,_0x47dad5,_0xf6ff05,_0x567e3f,_0x25f802){var _0x237e00={};_0xf6ff05['remoteUri']=intUtil[_0xf559('0x4d')](_0xf6ff05['remoteUri']);_0xf6ff05[_0xf559('0x4e')]=intUtil[_0xf559('0x4d')](_0xf6ff05['serverUrl']);_0x237e00['callDirection']=_0x25f802===_0xf559('0x46')||_0x25f802===_0xf559('0x4f')?'queue':'outbound';var _0x1af9b3=util[_0xf559('0x49')](_0xf559('0x50'),_0xf6ff05[_0xf559('0xb')]);var _0x193cd9=util[_0xf559('0x49')](_0xf559('0x51'),_0xf6ff05[_0xf559('0x52')]);var _0x2f3f72=util[_0xf559('0x49')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xf6ff05[_0xf559('0x4e')],_0x29daee[_0xf559('0x53')],md5(_0x29daee[_0xf559('0x53')]));if(_0x47dad5&&_0x47dad5[_0xf559('0x54')]){logger[_0xf559('0x32')](_0xf559('0x55'),_0xf559('0x56'));_0x29daee[_0xf559('0x57')]=_0x2f3f72;}else if(_0x567e3f&&_0x567e3f[_0xf559('0x58')]&&_0x567e3f[_0xf559('0x58')]!==_0xf559('0x59')){logger[_0xf559('0x32')]('[OUTBOUND]',_0xf559('0x56'));_0x29daee[_0xf559('0x57')]=_0x2f3f72;}else{_0x29daee[_0xf559('0x57')]='';}return getUser(_0x237e00,_0xf6ff05,_0x736245,_0x193cd9,_0x1af9b3,_0x25f802)[_0xf559('0x15')](function(_0x3c8616){logger[_0xf559('0x32')]('['+_0x25f802[_0xf559('0x12')]()+_0xf559('0x5a'),_0x3c8616['userId']);logger[_0xf559('0x32')]('['+_0x25f802[_0xf559('0x12')]()+']\x20The\x20User\x20email\x20is:',_0x3c8616[_0xf559('0x19')]);return getEndUser(_0x3c8616,_0xf6ff05,_0x193cd9,_0x1af9b3,_0x29daee,_0x25f802);})['then'](function(_0x1afd23){logger[_0xf559('0x32')]('['+_0x25f802[_0xf559('0x12')]()+_0xf559('0x5b'),_0x1afd23[_0xf559('0x2f')]);logger['info']('['+_0x25f802[_0xf559('0x12')]()+_0xf559('0x5c'),_0x29daee[_0xf559('0x22')]);return getTicket(_0x1afd23,_0xf6ff05,_0x193cd9,_0x1af9b3,_0x29daee,_0x2e4b2f,_0x25f802);})[_0xf559('0x15')](function(_0x30dc03){logger[_0xf559('0x32')](util[_0xf559('0x49')]('['+_0x25f802[_0xf559('0x12')]()+_0xf559('0x5d'),_0x2e4b2f[_0xf559('0x3c')],_0x30dc03[_0xf559('0x47')]));logger[_0xf559('0x32')](util[_0xf559('0x49')]('['+_0x25f802[_0xf559('0x12')]()+']\x20Call\x20direction:\x20%s',_0x25f802));if(_0x25f802!==_0xf559('0x4f')){logger[_0xf559('0x32')]('['+_0x25f802[_0xf559('0x12')]()+']',_0xf559('0x5e'));emit(_0xf6ff05[_0xf559('0xb')],_0x736245[_0xf559('0x5f')],_0x2e4b2f[_0xf559('0x3c')],_0x30dc03[_0xf559('0x47')]);}})[_0xf559('0x10')](function(_0x50d39f){logger['error']('['+_0x25f802[_0xf559('0x12')]()+_0xf559('0x60'),util[_0xf559('0x61')](_0x50d39f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index e58940e..e7bee52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3830=['toUpperCase','Recording\x20is\x20enabled!','lodash','util','ioredis','./util','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Descriptions','name','Fields','custom_fields','value','remoteUri','Ticket\x20created!','validateEmail','length','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','then','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','Enduser\x20created.','apiKey','toString','base64','debug','[HTTP]','GET','map','includes','picklist','nameField','toLowerCase','content','string','type','idField','customField','push','variable','variableName','customVariable','Variable','queue','serverUrl','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','user:%s','%s/helpdesk/tickets/%d','catch','error','stringify','outbound','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','monitor_format','lastevent'];(function(_0x31486e,_0x352bf5){var _0x41d688=function(_0x59301a){while(--_0x59301a){_0x31486e['push'](_0x31486e['shift']());}};_0x41d688(++_0x352bf5);}(_0x3830,0x1c4));var _0x0383=function(_0x5dd52e,_0x98ee28){_0x5dd52e=_0x5dd52e-0x0;var _0x4d2f78=_0x3830[_0x5dd52e];return _0x4d2f78;};'use strict';var _=require(_0x0383('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0x0383('0x1'));var Redis=require(_0x0383('0x2'));var intUtil=require(_0x0383('0x3'));var config=require('../../../../config/environment');var logger=require(_0x0383('0x4'))(_0x0383('0x5'));config[_0x0383('0x6')]=_[_0x0383('0x7')](config['redis'],{'host':_0x0383('0x8'),'port':0x18eb});var io=require(_0x0383('0x9'))(new Redis(config['redis']));var headers={'Content-Type':'application/json','Accept':_0x0383('0xa')};function emit(_0x44c9c9,_0x41234b,_0x5a1df9){io['to'](_0x44c9c9)[_0x0383('0xb')](_0x41234b,_0x5a1df9);}function getTicket(_0xa886b9,_0xe4dd2f,_0x5474f7,_0x2f472f,_0x48296f){logger[_0x0383('0xc')](_0x0383('0xd'));var _0x233401=_[_0x0383('0xe')]({'responder_id':_0xe4dd2f['id'],'requester_id':_0x5474f7['id'],'name':util[_0x0383('0xf')](_0x0383('0x10'),_0x48296f['calleridname']),'phone':_0x48296f[_0x0383('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x2f472f['Subjects'],_0x48296f,'\x20'),'description':intUtil[_0x0383('0x12')](_0x2f472f[_0x0383('0x13')],_0x48296f,'<br>'),'tags':getTags(_0x2f472f['Tags'],_0x0383('0x14'))},getCustomFields(_0x2f472f[_0x0383('0x15')],_0x48296f));_0x233401[_0x0383('0x16')]=_['mapValues'](_['keyBy'](_0x233401[_0x0383('0x16')],'id'),_0x0383('0x17'));return request({'uri':util['format']('%s/api/v2/tickets',_0xa886b9[_0x0383('0x18')]),'method':'POST','body':_0x233401})['then'](function(_0x529d7c){logger[_0x0383('0xc')](_0x0383('0x19'));return _0x529d7c;});}function getUser(_0x425894,_0x48f0e){if(intUtil[_0x0383('0x1a')](_0x48f0e)){return request({'uri':util['format']('%s/api/v2/agents',_0x425894[_0x0383('0x18')]),'qs':{'email':_0x48f0e}})['then'](function(_0x2775c0){if(_0x2775c0[_0x0383('0x1b')]){logger[_0x0383('0xc')]('Agent\x20found!');return _['find'](_0x2775c0,function(_0x51552c){return _0x51552c[_0x0383('0x1c')]['email']===_0x48f0e;});}else{logger[_0x0383('0xc')](_0x0383('0x1d'));return request({'uri':util['format'](_0x0383('0x1e'),_0x425894[_0x0383('0x18')])})[_0x0383('0x1f')](function(_0x5c14e1){logger[_0x0383('0xc')](_0x0383('0x20'));return _0x5c14e1;});}});}else{logger['info'](_0x0383('0x21'));return request({'uri':util[_0x0383('0xf')](_0x0383('0x1e'),_0x425894[_0x0383('0x18')])})[_0x0383('0x1f')](function(_0x553fc2){logger['info']('Admin\x20account\x20selected.');return _0x553fc2;});}}function getEndUser(_0x438ed3,_0x3abec2,_0x2649dd){logger[_0x0383('0xc')](_0x0383('0x22'),_0x2649dd);return request({'uri':util['format'](_0x0383('0x23'),_0x438ed3[_0x0383('0x18')]),'qs':{'phone':_0x2649dd}})['then'](function(_0x5a8465){if(_0x5a8465[_0x0383('0x1b')]){logger[_0x0383('0xc')](_0x0383('0x24'));return _['find'](_0x5a8465,{'phone':_0x2649dd});}else{logger[_0x0383('0xc')](_0x0383('0x25'));return request({'uri':util[_0x0383('0xf')]('%s/api/v2/contacts',_0x438ed3[_0x0383('0x18')]),'method':_0x0383('0x26'),'body':{'name':_0x3abec2,'phone':_0x2649dd}})[_0x0383('0x1f')](function(_0xeef43f){logger['info'](_0x0383('0x27'));return _0xeef43f;});}});}function getAuth(_0x55ae0a){return util['format']('Basic\x20%s',new Buffer(_0x55ae0a[_0x0383('0x28')]+':X')[_0x0383('0x29')](_0x0383('0x2a')));}function request(_0x220a43){logger[_0x0383('0x2b')](_0x0383('0x2c'),JSON['stringify'](_0x220a43));return rp(_[_0x0383('0x7')](_0x220a43,{'method':_0x0383('0x2d'),'headers':headers,'json':!![]}));}function getTags(_0x4f7e22,_0x4cfedd){var _0xde04a1=[];if(_0x4f7e22&&_0x4f7e22['length']>0x0){_0xde04a1=_[_0x0383('0x2e')](_0x4f7e22,_0x4cfedd);}return _0xde04a1;}function getCustomFields(_0x55a396,_0x3119f7){var _0x820721=[];var _0x5f402c={'custom_fields':[]};if(_0x55a396[_0x0383('0x1b')]>0x0){_['forEach'](_0x55a396,function(_0x30c96b){if(_[_0x0383('0x2f')](['string',_0x0383('0x30')],_0x30c96b['type'])&&_0x30c96b['nameField']&&!_0x30c96b['customField']){_0x5f402c[_0x30c96b[_0x0383('0x31')][_0x0383('0x32')]()]=_0x30c96b[_0x0383('0x33')][_0x0383('0x29')]();}else if(_[_0x0383('0x2f')]([_0x0383('0x34'),_0x0383('0x30')],_0x30c96b[_0x0383('0x35')])&&_0x30c96b[_0x0383('0x36')]&&_0x30c96b[_0x0383('0x37')]){_0x5f402c['custom_fields'][_0x0383('0x38')]({'id':_0x30c96b[_0x0383('0x36')],'value':_0x30c96b[_0x0383('0x33')][_0x0383('0x29')]()});}else if(_0x30c96b[_0x0383('0x35')]===_0x0383('0x39')&&_0x30c96b[_0x0383('0x3a')]&&_0x30c96b[_0x0383('0x36')]&&_0x30c96b['customField']){_0x3119f7[_0x30c96b[_0x0383('0x3a')]]&&_0x5f402c[_0x0383('0x16')][_0x0383('0x38')]({'id':_0x30c96b['idField'],'value':_0x3119f7[_0x30c96b[_0x0383('0x3a')]][_0x0383('0x29')]()});}else if(_0x30c96b[_0x0383('0x35')]===_0x0383('0x3b')&&_0x30c96b[_0x0383('0x3c')]&&_0x30c96b[_0x0383('0x3c')]['name']&&_0x30c96b[_0x0383('0x36')]&&_0x30c96b[_0x0383('0x37')]){_0x3119f7[_0x30c96b[_0x0383('0x3c')]['name']['toLowerCase']()]&&_0x5f402c['custom_fields']['push']({'id':_0x30c96b['idField'],'value':_0x3119f7[_0x30c96b['Variable'][_0x0383('0x14')][_0x0383('0x32')]()]['toString']()});}});}return _0x5f402c;}exports[_0x0383('0x3d')]=function(_0x13db7d,_0x393781,_0xb99083,_0x224a97,_0x391751,_0x119523){var _0x733969,_0x4430dd;_0x119523[_0x0383('0x18')]=intUtil['stripTrailingSlash'](_0x119523[_0x0383('0x18')]);_0x119523[_0x0383('0x3e')]=intUtil[_0x0383('0x3f')](_0x119523[_0x0383('0x3e')]);if(_0x391751&&_0x391751['monitor_format']){logger[_0x0383('0xc')](_0x0383('0x40'),'Recording\x20is\x20enabled!');_0x393781[_0x0383('0x41')]=util[_0x0383('0xf')](_0x0383('0x42'),_0x119523[_0x0383('0x3e')],_0x393781[_0x0383('0x43')],md5(_0x393781['uniqueid']));}else{_0x393781[_0x0383('0x41')]='';}headers[_0x0383('0x44')]=getAuth(_0x119523);return getUser(_0x119523,_0x224a97[_0x0383('0x45')])[_0x0383('0x1f')](function(_0xd82f69){_0x733969=_0xd82f69;logger[_0x0383('0xc')](_0x0383('0x46'),_0x733969['id']);return getEndUser(_0x119523,_0x393781[_0x0383('0x47')],_0x393781[_0x0383('0x11')]);})[_0x0383('0x1f')](function(_0x4b0bed){_0x4430dd=_0x4b0bed;logger[_0x0383('0xc')](_0x0383('0x48'),_0x4430dd['id']);return getTicket(_0x119523,_0x733969,_0x4430dd,_0xb99083,_0x393781);})[_0x0383('0x1f')](function(_0x486502){if(_0x486502&&_0x486502['id']){logger[_0x0383('0xc')](_0x0383('0x19'));logger[_0x0383('0xc')]('The\x20Ticket\x20ID\x20is:',_0x486502['id']);logger[_0x0383('0xc')](_0x0383('0x40'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x0383('0xf')](_0x0383('0x49'),_0x224a97[_0x0383('0x14')]),'trigger:browser:url',{'uri':util[_0x0383('0xf')](_0x0383('0x4a'),_0x119523['remoteUri'],_0x486502['id'])});}})[_0x0383('0x4b')](function(_0x23dd55){logger[_0x0383('0x4c')](_0x0383('0x40'),JSON[_0x0383('0x4d')](_0x23dd55));});};exports[_0x0383('0x4e')]=function(_0xfd364b,_0x1a8b77,_0x353bfe,_0x56c666,_0xc41caf,_0x5a41b2,_0x341821){var _0x2c5cfd,_0x3b8fd7;_0x5a41b2[_0x0383('0x18')]=intUtil[_0x0383('0x3f')](_0x5a41b2[_0x0383('0x18')]);_0x5a41b2[_0x0383('0x3e')]=intUtil[_0x0383('0x3f')](_0x5a41b2['serverUrl']);if(_0x341821&&_0x341821[_0x0383('0x4f')]&&_0x341821[_0x0383('0x4f')]!=='none'){logger[_0x0383('0xc')](_0x0383('0x50'),'Recording\x20is\x20enabled!');_0x1a8b77[_0x0383('0x41')]=util[_0x0383('0xf')](_0x0383('0x42'),_0x5a41b2[_0x0383('0x3e')],_0x1a8b77['uniqueid'],md5(_0x1a8b77[_0x0383('0x43')]));}headers[_0x0383('0x44')]=getAuth(_0x5a41b2);return getUser(_0x5a41b2,_0x56c666['email'])[_0x0383('0x1f')](function(_0x2d18f8){_0x2c5cfd=_0x2d18f8;logger['info'](_0x0383('0x46'),_0x2c5cfd['id']);return getEndUser(_0x5a41b2,_0x1a8b77[_0x0383('0x51')],_0x1a8b77[_0x0383('0x52')]);})['then'](function(_0x48c1e8){_0x3b8fd7=_0x48c1e8;logger['info']('The\x20Enduser\x20ID\x20is:',_0x3b8fd7['id']);return getTicket(_0x5a41b2,_0x2c5cfd,_0x3b8fd7,_0x353bfe,_0x1a8b77);})[_0x0383('0x1f')](function(_0x14b638){if(_0x14b638&&_0x14b638['id']){logger[_0x0383('0xc')](_0x0383('0x19'));logger[_0x0383('0xc')](_0x0383('0x53'),_0x14b638['id']);logger[_0x0383('0xc')](_0x0383('0x50'),_0x0383('0x54'));emit(util['format']('user:%s',_0x56c666['name']),_0x0383('0x55'),{'uri':util[_0x0383('0xf')](_0x0383('0x4a'),_0x5a41b2['remoteUri'],_0x14b638['id'])});}})['catch'](function(_0x342953){logger[_0x0383('0x4c')](_0x0383('0x50'),JSON[_0x0383('0x4d')](_0x342953));});};exports['unmanaged']=function(_0x40a282,_0x5c252c,_0x184845,_0x151e72,_0xb61e73,_0x135e4b){var _0x409bd3,_0x48f89b;_0x135e4b['remoteUri']=intUtil['stripTrailingSlash'](_0x135e4b[_0x0383('0x18')]);_0x135e4b[_0x0383('0x3e')]=intUtil['stripTrailingSlash'](_0x135e4b[_0x0383('0x3e')]);if(_0xb61e73&&_0xb61e73[_0x0383('0x56')]){logger['info']('['+_0x5c252c[_0x0383('0x57')][_0x0383('0x58')]()+']',_0x0383('0x59'));_0x5c252c[_0x0383('0x41')]=util[_0x0383('0xf')](_0x0383('0x42'),_0x135e4b[_0x0383('0x3e')],_0x5c252c['uniqueid'],md5(_0x5c252c[_0x0383('0x43')]));}else{_0x5c252c[_0x0383('0x41')]='';}headers['Authorization']=getAuth(_0x135e4b);return getUser(_0x135e4b,'')[_0x0383('0x1f')](function(_0x3a95b2){_0x409bd3=_0x3a95b2;logger[_0x0383('0xc')](_0x0383('0x46'),_0x409bd3['id']);return getEndUser(_0x135e4b,_0x5c252c['calleridname'],_0x5c252c[_0x0383('0x11')]);})[_0x0383('0x1f')](function(_0x43c60d){_0x48f89b=_0x43c60d;logger[_0x0383('0xc')]('The\x20Enduser\x20ID\x20is:',_0x48f89b['id']);return getTicket(_0x135e4b,_0x409bd3,_0x48f89b,_0x184845,_0x5c252c);})[_0x0383('0x1f')](function(_0x343598){if(_0x343598){logger[_0x0383('0xc')]('Ticket\x20created!');logger[_0x0383('0xc')](_0x0383('0x53'),_0x343598['id']);}})[_0x0383('0x4b')](function(_0x3639e2){logger[_0x0383('0x4c')]('['+_0x5c252c['lastevent'][_0x0383('0x58')]()+']',JSON[_0x0383('0x4d')](_0x3639e2));});};
\ No newline at end of file
+var _0x51d2=['remoteUri','POST','then','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','base64','debug','[HTTP]','GET','map','forEach','includes','string','picklist','type','customField','nameField','toLowerCase','content','toString','idField','variableName','customVariable','Variable','push','queue','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','Authorization','destcalleridname','The\x20Enduser\x20ID\x20is:','trigger:browser:url','stringify','unmanaged','monitor_format','toUpperCase','The\x20User\x20ID\x20is:','lastevent','request-promise','md5','util','freshdesk','redis','defaults','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','mapValues','custom_fields','value','%s/api/v2/tickets'];(function(_0x10b48a,_0x1a0a3f){var _0x2c4533=function(_0x5e4be6){while(--_0x5e4be6){_0x10b48a['push'](_0x10b48a['shift']());}};_0x2c4533(++_0x1a0a3f);}(_0x51d2,0x15b));var _0x251d=function(_0x36de10,_0xfe25e8){_0x36de10=_0x36de10-0x0;var _0x58100f=_0x51d2[_0x36de10];return _0x58100f;};'use strict';var _=require('lodash');var rp=require(_0x251d('0x0'));var md5=require(_0x251d('0x1'));var util=require(_0x251d('0x2'));var Redis=require('ioredis');var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x251d('0x3'));config[_0x251d('0x4')]=_[_0x251d('0x5')](config[_0x251d('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x251d('0x6'))(new Redis(config[_0x251d('0x4')]));var headers={'Content-Type':_0x251d('0x7'),'Accept':_0x251d('0x7')};function emit(_0x1cb45a,_0x4e2025,_0x1e84c1){io['to'](_0x1cb45a)['emit'](_0x4e2025,_0x1e84c1);}function getTicket(_0x4ff3d2,_0x306fd4,_0x840694,_0x24826b,_0xf3a587){logger[_0x251d('0x8')](_0x251d('0x9'));var _0x1c6282=_[_0x251d('0xa')]({'responder_id':_0x306fd4['id'],'requester_id':_0x840694['id'],'name':util[_0x251d('0xb')](_0x251d('0xc'),_0xf3a587['calleridname']),'phone':_0xf3a587[_0x251d('0xd')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x251d('0xe')](_0x24826b[_0x251d('0xf')],_0xf3a587,'\x20'),'description':intUtil[_0x251d('0xe')](_0x24826b[_0x251d('0x10')],_0xf3a587,_0x251d('0x11')),'tags':getTags(_0x24826b[_0x251d('0x12')],_0x251d('0x13'))},getCustomFields(_0x24826b[_0x251d('0x14')],_0xf3a587));_0x1c6282['custom_fields']=_[_0x251d('0x15')](_['keyBy'](_0x1c6282[_0x251d('0x16')],'id'),_0x251d('0x17'));return request({'uri':util[_0x251d('0xb')](_0x251d('0x18'),_0x4ff3d2[_0x251d('0x19')]),'method':_0x251d('0x1a'),'body':_0x1c6282})[_0x251d('0x1b')](function(_0x2279e9){logger[_0x251d('0x8')]('Ticket\x20created!');return _0x2279e9;});}function getUser(_0x1ad9d2,_0x24f6dc){if(intUtil[_0x251d('0x1c')](_0x24f6dc)){return request({'uri':util[_0x251d('0xb')](_0x251d('0x1d'),_0x1ad9d2[_0x251d('0x19')]),'qs':{'email':_0x24f6dc}})[_0x251d('0x1b')](function(_0x60ed4c){if(_0x60ed4c[_0x251d('0x1e')]){logger[_0x251d('0x8')](_0x251d('0x1f'));return _[_0x251d('0x20')](_0x60ed4c,function(_0x505333){return _0x505333['contact'][_0x251d('0x21')]===_0x24f6dc;});}else{logger[_0x251d('0x8')](_0x251d('0x22'));return request({'uri':util[_0x251d('0xb')](_0x251d('0x23'),_0x1ad9d2['remoteUri'])})[_0x251d('0x1b')](function(_0x58617c){logger[_0x251d('0x8')](_0x251d('0x24'));return _0x58617c;});}});}else{logger[_0x251d('0x8')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x251d('0xb')](_0x251d('0x23'),_0x1ad9d2[_0x251d('0x19')])})[_0x251d('0x1b')](function(_0x3b911f){logger[_0x251d('0x8')](_0x251d('0x24'));return _0x3b911f;});}}function getEndUser(_0x5f145d,_0x2bc2bb,_0xe40909){logger[_0x251d('0x8')](_0x251d('0x25'),_0xe40909);return request({'uri':util[_0x251d('0xb')](_0x251d('0x26'),_0x5f145d['remoteUri']),'qs':{'phone':_0xe40909}})[_0x251d('0x1b')](function(_0x2d15c7){if(_0x2d15c7[_0x251d('0x1e')]){logger['info'](_0x251d('0x27'));return _[_0x251d('0x20')](_0x2d15c7,{'phone':_0xe40909});}else{logger[_0x251d('0x8')](_0x251d('0x28'));return request({'uri':util[_0x251d('0xb')](_0x251d('0x26'),_0x5f145d[_0x251d('0x19')]),'method':_0x251d('0x1a'),'body':{'name':_0x2bc2bb,'phone':_0xe40909}})[_0x251d('0x1b')](function(_0x9efbdb){logger[_0x251d('0x8')](_0x251d('0x29'));return _0x9efbdb;});}});}function getAuth(_0x547151){return util[_0x251d('0xb')](_0x251d('0x2a'),new Buffer(_0x547151[_0x251d('0x2b')]+':X')['toString'](_0x251d('0x2c')));}function request(_0x2b924e){logger[_0x251d('0x2d')](_0x251d('0x2e'),JSON['stringify'](_0x2b924e));return rp(_['defaults'](_0x2b924e,{'method':_0x251d('0x2f'),'headers':headers,'json':!![]}));}function getTags(_0x5bb0ca,_0xe21d46){var _0x5effcb=[];if(_0x5bb0ca&&_0x5bb0ca[_0x251d('0x1e')]>0x0){_0x5effcb=_[_0x251d('0x30')](_0x5bb0ca,_0xe21d46);}return _0x5effcb;}function getCustomFields(_0x25c49d,_0x283ade){var _0x3fc7eb=[];var _0x282596={'custom_fields':[]};if(_0x25c49d[_0x251d('0x1e')]>0x0){_[_0x251d('0x31')](_0x25c49d,function(_0xfec3d7){if(_[_0x251d('0x32')]([_0x251d('0x33'),_0x251d('0x34')],_0xfec3d7[_0x251d('0x35')])&&_0xfec3d7['nameField']&&!_0xfec3d7[_0x251d('0x36')]){_0x282596[_0xfec3d7[_0x251d('0x37')][_0x251d('0x38')]()]=_0xfec3d7[_0x251d('0x39')][_0x251d('0x3a')]();}else if(_[_0x251d('0x32')]([_0x251d('0x33'),'picklist'],_0xfec3d7[_0x251d('0x35')])&&_0xfec3d7[_0x251d('0x3b')]&&_0xfec3d7[_0x251d('0x36')]){_0x282596[_0x251d('0x16')]['push']({'id':_0xfec3d7[_0x251d('0x3b')],'value':_0xfec3d7[_0x251d('0x39')][_0x251d('0x3a')]()});}else if(_0xfec3d7[_0x251d('0x35')]==='variable'&&_0xfec3d7[_0x251d('0x3c')]&&_0xfec3d7[_0x251d('0x3b')]&&_0xfec3d7['customField']){_0x283ade[_0xfec3d7['variableName']]&&_0x282596[_0x251d('0x16')]['push']({'id':_0xfec3d7[_0x251d('0x3b')],'value':_0x283ade[_0xfec3d7[_0x251d('0x3c')]][_0x251d('0x3a')]()});}else if(_0xfec3d7['type']===_0x251d('0x3d')&&_0xfec3d7[_0x251d('0x3e')]&&_0xfec3d7[_0x251d('0x3e')][_0x251d('0x13')]&&_0xfec3d7[_0x251d('0x3b')]&&_0xfec3d7[_0x251d('0x36')]){_0x283ade[_0xfec3d7['Variable'][_0x251d('0x13')][_0x251d('0x38')]()]&&_0x282596[_0x251d('0x16')][_0x251d('0x3f')]({'id':_0xfec3d7[_0x251d('0x3b')],'value':_0x283ade[_0xfec3d7[_0x251d('0x3e')][_0x251d('0x13')][_0x251d('0x38')]()][_0x251d('0x3a')]()});}});}return _0x282596;}exports[_0x251d('0x40')]=function(_0x1e1864,_0x56d657,_0x41ac46,_0x32fbb6,_0x5e8ab8,_0x31bcb2){var _0x555288,_0x4e743e;_0x31bcb2[_0x251d('0x19')]=intUtil[_0x251d('0x41')](_0x31bcb2[_0x251d('0x19')]);_0x31bcb2[_0x251d('0x42')]=intUtil[_0x251d('0x41')](_0x31bcb2[_0x251d('0x42')]);if(_0x5e8ab8&&_0x5e8ab8['monitor_format']){logger['info'](_0x251d('0x43'),'Recording\x20is\x20enabled!');_0x56d657[_0x251d('0x44')]=util[_0x251d('0xb')](_0x251d('0x45'),_0x31bcb2[_0x251d('0x42')],_0x56d657[_0x251d('0x46')],md5(_0x56d657[_0x251d('0x46')]));}else{_0x56d657['recordingURL']='';}headers['Authorization']=getAuth(_0x31bcb2);return getUser(_0x31bcb2,_0x32fbb6[_0x251d('0x21')])[_0x251d('0x1b')](function(_0xe24eea){_0x555288=_0xe24eea;logger[_0x251d('0x8')]('The\x20User\x20ID\x20is:',_0x555288['id']);return getEndUser(_0x31bcb2,_0x56d657[_0x251d('0x47')],_0x56d657['calleridnum']);})[_0x251d('0x1b')](function(_0x1f5523){_0x4e743e=_0x1f5523;logger[_0x251d('0x8')]('The\x20Enduser\x20ID\x20is:',_0x4e743e['id']);return getTicket(_0x31bcb2,_0x555288,_0x4e743e,_0x41ac46,_0x56d657);})[_0x251d('0x1b')](function(_0x240568){if(_0x240568&&_0x240568['id']){logger[_0x251d('0x8')](_0x251d('0x48'));logger[_0x251d('0x8')](_0x251d('0x49'),_0x240568['id']);logger[_0x251d('0x8')](_0x251d('0x43'),_0x251d('0x4a'));emit(util[_0x251d('0xb')](_0x251d('0x4b'),_0x32fbb6[_0x251d('0x13')]),'trigger:browser:url',{'uri':util[_0x251d('0xb')](_0x251d('0x4c'),_0x31bcb2[_0x251d('0x19')],_0x240568['id'])});}})[_0x251d('0x4d')](function(_0x3dfc59){logger[_0x251d('0x4e')](_0x251d('0x43'),JSON['stringify'](_0x3dfc59));});};exports['outbound']=function(_0x2a7a99,_0x486ffe,_0x1a73bb,_0x2dce86,_0x1cc103,_0x3b1ddc,_0x5e9927){var _0xaf7bec,_0x101884;_0x3b1ddc[_0x251d('0x19')]=intUtil[_0x251d('0x41')](_0x3b1ddc[_0x251d('0x19')]);_0x3b1ddc[_0x251d('0x42')]=intUtil[_0x251d('0x41')](_0x3b1ddc[_0x251d('0x42')]);if(_0x5e9927&&_0x5e9927[_0x251d('0x4f')]&&_0x5e9927[_0x251d('0x4f')]!==_0x251d('0x50')){logger[_0x251d('0x8')](_0x251d('0x51'),_0x251d('0x52'));_0x486ffe[_0x251d('0x44')]=util[_0x251d('0xb')](_0x251d('0x45'),_0x3b1ddc['serverUrl'],_0x486ffe[_0x251d('0x46')],md5(_0x486ffe[_0x251d('0x46')]));}headers[_0x251d('0x53')]=getAuth(_0x3b1ddc);return getUser(_0x3b1ddc,_0x2dce86[_0x251d('0x21')])['then'](function(_0x828500){_0xaf7bec=_0x828500;logger[_0x251d('0x8')]('The\x20User\x20ID\x20is:',_0xaf7bec['id']);return getEndUser(_0x3b1ddc,_0x486ffe[_0x251d('0x54')],_0x486ffe['destcalleridnum']);})[_0x251d('0x1b')](function(_0x46ad57){_0x101884=_0x46ad57;logger[_0x251d('0x8')](_0x251d('0x55'),_0x101884['id']);return getTicket(_0x3b1ddc,_0xaf7bec,_0x101884,_0x1a73bb,_0x486ffe);})[_0x251d('0x1b')](function(_0x3357ac){if(_0x3357ac&&_0x3357ac['id']){logger[_0x251d('0x8')](_0x251d('0x48'));logger[_0x251d('0x8')](_0x251d('0x49'),_0x3357ac['id']);logger['info'](_0x251d('0x51'),_0x251d('0x4a'));emit(util[_0x251d('0xb')](_0x251d('0x4b'),_0x2dce86[_0x251d('0x13')]),_0x251d('0x56'),{'uri':util[_0x251d('0xb')](_0x251d('0x4c'),_0x3b1ddc[_0x251d('0x19')],_0x3357ac['id'])});}})[_0x251d('0x4d')](function(_0x3b8403){logger['error'](_0x251d('0x51'),JSON[_0x251d('0x57')](_0x3b8403));});};exports[_0x251d('0x58')]=function(_0x376f6d,_0x23292c,_0xd7d78e,_0x547234,_0x573a9a,_0x5d0468){var _0x3371c8,_0x314ba5;_0x5d0468[_0x251d('0x19')]=intUtil[_0x251d('0x41')](_0x5d0468['remoteUri']);_0x5d0468['serverUrl']=intUtil[_0x251d('0x41')](_0x5d0468[_0x251d('0x42')]);if(_0x573a9a&&_0x573a9a[_0x251d('0x59')]){logger['info']('['+_0x23292c['lastevent'][_0x251d('0x5a')]()+']',_0x251d('0x52'));_0x23292c[_0x251d('0x44')]=util[_0x251d('0xb')](_0x251d('0x45'),_0x5d0468[_0x251d('0x42')],_0x23292c['uniqueid'],md5(_0x23292c[_0x251d('0x46')]));}else{_0x23292c['recordingURL']='';}headers[_0x251d('0x53')]=getAuth(_0x5d0468);return getUser(_0x5d0468,'')[_0x251d('0x1b')](function(_0x54330e){_0x3371c8=_0x54330e;logger['info'](_0x251d('0x5b'),_0x3371c8['id']);return getEndUser(_0x5d0468,_0x23292c[_0x251d('0x47')],_0x23292c[_0x251d('0xd')]);})[_0x251d('0x1b')](function(_0x47b8e4){_0x314ba5=_0x47b8e4;logger[_0x251d('0x8')](_0x251d('0x55'),_0x314ba5['id']);return getTicket(_0x5d0468,_0x3371c8,_0x314ba5,_0xd7d78e,_0x23292c);})[_0x251d('0x1b')](function(_0x4aa8fd){if(_0x4aa8fd){logger[_0x251d('0x8')](_0x251d('0x48'));logger[_0x251d('0x8')](_0x251d('0x49'),_0x4aa8fd['id']);}})[_0x251d('0x4d')](function(_0x5087bf){logger['error']('['+_0x23292c[_0x251d('0x5c')]['toUpperCase']()+']',JSON['stringify'](_0x5087bf));});};
\ No newline at end of file
index 6553f52..08260ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7f5=['contacts','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','format','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Contact','YYYY-MM-DDTHH:mm:ss','ticketId','task','/contacts/','trigger:browser:url','Token\x20token=','apiKey','stripTrailingSlash','serverUrl','toLowerCase','outbound','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','moment','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','defaults','localhost','socket.io-emitter','redis','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','agentEmail','userEmail','userId','Admin\x20selected','/api/lookup?q=','&f=','&entities=contact','find'];(function(_0x1d7037,_0x57dd95){var _0x4d6568=function(_0x5c64c5){while(--_0x5c64c5){_0x1d7037['push'](_0x1d7037['shift']());}};_0x4d6568(++_0x57dd95);}(_0xa7f5,0x119));var _0x5a7f=function(_0x993d1b,_0x3e631d){_0x993d1b=_0x993d1b-0x0;var _0x51e51f=_0xa7f5[_0x993d1b];return _0x51e51f;};'use strict';var _=require(_0x5a7f('0x0'));var rp=require(_0x5a7f('0x1'));var md5=require(_0x5a7f('0x2'));var util=require('util');var moment=require(_0x5a7f('0x3'));var Promise=require('bluebird');var Redis=require(_0x5a7f('0x4'));var intUtil=require(_0x5a7f('0x5'));var config=require(_0x5a7f('0x6'));var logger=require(_0x5a7f('0x7'))(_0x5a7f('0x8'));config['redis']=_[_0x5a7f('0x9')](config['redis'],{'host':_0x5a7f('0xa'),'port':0x18eb});var io=require(_0x5a7f('0xb'))(new Redis(config[_0x5a7f('0xc')]));function getAdminId(_0x3d755e,_0x31378f,_0x21b5db,_0x46df76){return new Promise(function(_0x12ef25,_0x4141ba){var _0xa25cbc=![];var _0x5e3f8d={'method':_0x5a7f('0xd'),'uri':_0x46df76+_0x5a7f('0xe'),'json':!![]};_0x5e3f8d[_0x5a7f('0xf')]=_0x21b5db;logger[_0x5a7f('0x10')](_0x5a7f('0x11'));return rp(_0x5e3f8d)[_0x5a7f('0x12')](function(_0x6e8513){if(_0x6e8513){var _0x5f12f0=_0x6e8513[_0x5a7f('0x13')];var _0x233083=null;for(_0x233083=0x0;_0x233083<_0x5f12f0[_0x5a7f('0x14')];_0x233083++){if(_0x5f12f0[_0x233083][_0x5a7f('0x15')]===_0x3d755e[_0x5a7f('0x16')]){_0x3d755e[_0x5a7f('0x17')]=_0x5f12f0[_0x233083]['id'];_0xa25cbc=!![];}}if(_0xa25cbc){logger[_0x5a7f('0x10')](_0x5a7f('0x18'),_0x3d755e[_0x5a7f('0x17')]);_0x12ef25(_0x3d755e);}else{_0x4141ba({'statusCode':0x194,'message':_0x5a7f('0x19')});}}else{_0x4141ba({'statusCode':0x194,'message':_0x5a7f('0x19')});}})[_0x5a7f('0x1a')](function(_0x124ce4){logger[_0x5a7f('0x1b')]('['+[_0x31378f[_0x5a7f('0x1c')]()]+']',_0x124ce4[_0x5a7f('0x1d')]);_0x4141ba(_0x124ce4);});});}function getUser(_0x289e52,_0x13c8b9,_0x2b688e){return function(_0x22936d){return new Promise(function(_0x320e4f,_0x376bb3){var _0x2ad715={'method':'GET','uri':_0x2b688e+_0x5a7f('0xe'),'json':!![]};_0x2ad715[_0x5a7f('0xf')]=_0x13c8b9;logger[_0x5a7f('0x10')](_0x5a7f('0x1e'));return rp(_0x2ad715)[_0x5a7f('0x12')](function(_0x541729){if(_0x541729){var _0x2e56f5=_0x541729['users'];var _0x1963ff=![];var _0x4a08e3=null;if(_0x22936d[_0x5a7f('0x1f')]!==null){logger[_0x5a7f('0x10')]('Getting\x20user\x20with\x20email',_0x22936d['agentEmail']);_0x22936d[_0x5a7f('0x20')]=_0x22936d[_0x5a7f('0x1f')];for(_0x4a08e3=0x0;_0x4a08e3<_0x2e56f5[_0x5a7f('0x14')];_0x4a08e3++){if(_0x2e56f5[_0x4a08e3][_0x5a7f('0x15')]===_0x22936d[_0x5a7f('0x1f')]){_0x1963ff=!![];_0x22936d[_0x5a7f('0x21')]=_0x2e56f5[_0x4a08e3]['id'];logger[_0x5a7f('0x10')]('User\x20found:',_0x22936d[_0x5a7f('0x21')]);}}}if(!_0x1963ff){logger[_0x5a7f('0x10')](_0x5a7f('0x22'));_0x22936d[_0x5a7f('0x20')]=_0x22936d['adminEmail'];_0x22936d[_0x5a7f('0x21')]=_0x22936d[_0x5a7f('0x17')];_0x1963ff=!![];}if(_0x1963ff){_0x320e4f(_0x22936d);}else{_0x376bb3({'statusCode':0x194,'message':_0x5a7f('0x19')});}}else{_0x376bb3({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x25c962){logger[_0x5a7f('0x1b')]('['+[_0x289e52[_0x5a7f('0x1c')]()]+']',_0x25c962['message']);_0x376bb3(_0x25c962);});});};}function searchContact(_0x35085d,_0x50c2f,_0x59069c,_0x1ec76d){return new Promise(function(_0x1e95cb,_0x4b1c4e){var _0x841987={'method':_0x5a7f('0xd'),'headers':_0x50c2f,'uri':_0x35085d+_0x5a7f('0x23')+_0x1ec76d+_0x5a7f('0x24')+_0x59069c+_0x5a7f('0x25'),'json':!![]};rp(_0x841987)[_0x5a7f('0x12')](function(_0x415898){var _0x17c5f9=_[_0x5a7f('0x26')](_0x415898[_0x5a7f('0x27')][_0x5a7f('0x27')],[_0x59069c,_0x1ec76d]);_0x1e95cb(_0x17c5f9);})[_0x5a7f('0x1a')](function(_0x5bd6a3){_0x4b1c4e(_0x5bd6a3);});});}function getEndUser(_0x3cdf54,_0x22170b,_0xd60d68){return function(_0x23dbec){return new Promise(function(_0x1715be,_0x161b07){logger[_0x5a7f('0x10')](util['format'](_0x5a7f('0x28'),_0x23dbec['contactNumber']));searchContact(_0xd60d68,_0x22170b,'mobile_number',_0x23dbec[_0x5a7f('0x29')])[_0x5a7f('0x12')](function(_0x26e2da){if(_0x26e2da){_0x23dbec[_0x5a7f('0x2a')]=_0x26e2da['id'];logger[_0x5a7f('0x10')](_0x5a7f('0x2b'),_0x23dbec[_0x5a7f('0x2a')]);return _0x1715be(_0x23dbec);}searchContact(_0xd60d68,_0x22170b,_0x5a7f('0x2c'),_0x23dbec['contactNumber'])[_0x5a7f('0x12')](function(_0x4916b8){if(_0x4916b8){_0x23dbec['endUserId']=_0x4916b8['id'];logger['info'](_0x5a7f('0x2d'),_0x23dbec[_0x5a7f('0x2a')]);return _0x1715be(_0x23dbec);}createEndUser(_0x23dbec,_0x3cdf54,_0x22170b,_0xd60d68)[_0x5a7f('0x12')](function(_0x13d371){logger[_0x5a7f('0x10')](_0x5a7f('0x2e'),_0x13d371[_0x5a7f('0x2a')]);return _0x1715be(_0x13d371);});});})[_0x5a7f('0x1a')](function(_0x58d50d){_0x161b07(_0x58d50d);});});};}function createEndUser(_0x5253f5,_0x5db173,_0x2d3592,_0x35957d){return new Promise(function(_0x125b43,_0x5ed2de){var _0x312420=moment();var _0x522e1c={'method':_0x5a7f('0x2f'),'uri':_0x35957d+_0x5a7f('0x30'),'body':{'contact':{'last_name':_0x5253f5[_0x5a7f('0x29')],'work_number':_0x5253f5[_0x5a7f('0x29')],'mobile_number':_0x5253f5['contactNumber'],'owner_id':_0x5253f5[_0x5a7f('0x21')],'created_at':_0x312420[_0x5a7f('0x31')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x522e1c[_0x5a7f('0xf')]=_0x2d3592;logger[_0x5a7f('0x10')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x522e1c)['then'](function(_0x11c5e4){_0x5253f5[_0x5a7f('0x2a')]=_0x11c5e4[_0x5a7f('0x32')]['id'];_0x125b43(_0x5253f5);})['catch'](function(_0x5e990b){logger['error']('['+[_0x5db173[_0x5a7f('0x1c')]()]+']',_0x5e990b[_0x5a7f('0x1d')]);_0x5ed2de(_0x5e990b[_0x5a7f('0x1d')]);});});}function getTicket(_0x4cf8b0,_0x41fa22,_0xecbe06,_0x19878c,_0x1af7dd){return function(_0x144459){logger[_0x5a7f('0x10')](_0x5a7f('0x33'));return new Promise(function(_0x164aa9,_0x10afbc){var _0x48d02c=moment();var _0x41796f={'method':_0x5a7f('0x2f'),'uri':_0xecbe06+_0x5a7f('0x34'),'body':{'title':intUtil[_0x5a7f('0x35')](_0x19878c[_0x5a7f('0x36')],_0x1af7dd,'\x20'),'description':intUtil['getString'](_0x19878c['Descriptions'],_0x1af7dd,'\x0a'),'owner_id':_0x144459['userId'],'creater_id':_0x144459[_0x5a7f('0x17')],'targetable_id':_0x144459[_0x5a7f('0x2a')],'targetable_type':_0x5a7f('0x37'),'created_at':_0x48d02c[_0x5a7f('0x31')](_0x5a7f('0x38')),'due_date':_0x48d02c['add'](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x41796f[_0x5a7f('0xf')]=_0x41fa22;return rp(_0x41796f)[_0x5a7f('0x12')](function(_0x25530c){_0x144459[_0x5a7f('0x39')]=_0x25530c[_0x5a7f('0x3a')]['id'];logger['info']('Task\x20created:',_0x144459['ticketId']);_0x164aa9(_0x144459);})[_0x5a7f('0x1a')](function(_0x1202a5){logger[_0x5a7f('0x1b')]('['+[_0x4cf8b0['toUpperCase']()]+']',_0x1202a5['message']);_0x10afbc(_0x1202a5['message']);});});};}function emit(_0x3adebb,_0x38a04b,_0x4f7d91){var _0x336bec={'uri':_0x3adebb+_0x5a7f('0x3b')+_0x4f7d91};io['to'](util[_0x5a7f('0x31')]('user:%s',_0x38a04b))['emit'](_0x5a7f('0x3c'),_0x336bec);}exports['cs']=function(_0x481b43,_0x4944b3,_0x3218ab,_0x313b9b,_0x4f8b6e,_0x4ec805,_0x462df8,_0x1b6c87){var _0x4bc148={};var _0x13fb40={'Authorization':_0x5a7f('0x3d')+_0x4ec805[_0x5a7f('0x3e')]};_0x4ec805['remoteUri']=intUtil['stripTrailingSlash'](_0x4ec805['remoteUri']);_0x4ec805['serverUrl']=intUtil[_0x5a7f('0x3f')](_0x4ec805[_0x5a7f('0x40')]);var _0x2d1a9e=_0x4ec805['remoteUri'];_0x4bc148[_0x5a7f('0x16')]=_0x4ec805['username'];_0x4bc148[_0x5a7f('0x29')]=_0x1b6c87[_0x5a7f('0x41')]()===_0x5a7f('0x42')?_0x4944b3['destcalleridnum']:_0x4944b3[_0x5a7f('0x43')];_0x4bc148[_0x5a7f('0x44')]=_0x1b6c87===_0x5a7f('0x45')||_0x1b6c87===_0x5a7f('0x46')?'queue':_0x5a7f('0x42');if(_0x313b9b){_0x4bc148[_0x5a7f('0x1f')]=_0x313b9b[_0x5a7f('0x15')];}var _0x44d2f5=util[_0x5a7f('0x31')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4ec805[_0x5a7f('0x40')],_0x4944b3[_0x5a7f('0x47')],md5(_0x4944b3['uniqueid']));if(_0x4f8b6e&&_0x4f8b6e[_0x5a7f('0x48')]){logger[_0x5a7f('0x10')]('[QUEUE]',_0x5a7f('0x49'));_0x4944b3[_0x5a7f('0x4a')]=_0x44d2f5;}else if(_0x462df8&&_0x462df8[_0x5a7f('0x4b')]&&_0x462df8[_0x5a7f('0x4b')]!==_0x5a7f('0x4c')){logger['info']('[OUTBOUND]',_0x5a7f('0x49'));_0x4944b3[_0x5a7f('0x4a')]=_0x44d2f5;}else{_0x4944b3['recordingURL']='';}return getAdminId(_0x4bc148,_0x1b6c87,_0x13fb40,_0x2d1a9e)['then'](getUser(_0x1b6c87,_0x13fb40,_0x2d1a9e))[_0x5a7f('0x12')](getEndUser(_0x1b6c87,_0x13fb40,_0x2d1a9e))[_0x5a7f('0x12')](getTicket(_0x1b6c87,_0x13fb40,_0x2d1a9e,_0x3218ab,_0x4944b3))[_0x5a7f('0x12')](function(_0x42f965){logger[_0x5a7f('0x10')](util[_0x5a7f('0x31')](_0x5a7f('0x4d'),_0x42f965['ticketId']));if(_0x1b6c87!=='unmanaged'){logger['info']('['+[_0x1b6c87[_0x5a7f('0x1c')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x2d1a9e,_0x313b9b['name'],_0x42f965['endUserId']);}})['catch'](function(_0x48b254){logger[_0x5a7f('0x1b')]('['+[_0x1b6c87[_0x5a7f('0x1c')]()]+_0x5a7f('0x4e'),util[_0x5a7f('0x4f')](_0x48b254,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xe35a=['[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','request-promise','moment','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','adminEmail','adminId','catch','error','message','Getting\x20user\x20list','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','/api/lookup?q=','&entities=contact','find','contacts','format','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','toUpperCase','Creating\x20new\x20task','POST','/api/tasks','getString','Subjects','Descriptions','Contact','add','task','Task\x20created:','ticketId','user:%s','emit','trigger:browser:url','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl','username','outbound','destcalleridnum','unmanaged','queue','email','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe35a,0xab));var _0xae35=function(_0xc3f3bd,_0x20b7f5){_0xc3f3bd=_0xc3f3bd-0x0;var _0x27d0bd=_0xe35a[_0xc3f3bd];return _0x27d0bd;};'use strict';var _=require('lodash');var rp=require(_0xae35('0x0'));var md5=require('md5');var util=require('util');var moment=require(_0xae35('0x1'));var Promise=require('bluebird');var Redis=require(_0xae35('0x2'));var intUtil=require(_0xae35('0x3'));var config=require(_0xae35('0x4'));var logger=require(_0xae35('0x5'))(_0xae35('0x6'));config[_0xae35('0x7')]=_[_0xae35('0x8')](config[_0xae35('0x7')],{'host':_0xae35('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xae35('0x7')]));function getAdminId(_0x53bff2,_0x407703,_0x2a75ae,_0x43d332){return new Promise(function(_0xff14fa,_0x17b22d){var _0x4ac59b=![];var _0x2e1bd8={'method':_0xae35('0xa'),'uri':_0x43d332+_0xae35('0xb'),'json':!![]};_0x2e1bd8[_0xae35('0xc')]=_0x2a75ae;logger[_0xae35('0xd')](_0xae35('0xe'));return rp(_0x2e1bd8)[_0xae35('0xf')](function(_0x337406){if(_0x337406){var _0x8206ef=_0x337406[_0xae35('0x10')];var _0x4a4d92=null;for(_0x4a4d92=0x0;_0x4a4d92<_0x8206ef[_0xae35('0x11')];_0x4a4d92++){if(_0x8206ef[_0x4a4d92]['email']===_0x53bff2[_0xae35('0x12')]){_0x53bff2['adminId']=_0x8206ef[_0x4a4d92]['id'];_0x4ac59b=!![];}}if(_0x4ac59b){logger[_0xae35('0xd')]('Admin\x20found:',_0x53bff2[_0xae35('0x13')]);_0xff14fa(_0x53bff2);}else{_0x17b22d({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x17b22d({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xae35('0x14')](function(_0x23ed5c){logger[_0xae35('0x15')]('['+[_0x407703['toUpperCase']()]+']',_0x23ed5c[_0xae35('0x16')]);_0x17b22d(_0x23ed5c);});});}function getUser(_0x2b9f34,_0x2f82e5,_0x45f44c){return function(_0xeec40b){return new Promise(function(_0x126982,_0x2f3359){var _0x13d131={'method':_0xae35('0xa'),'uri':_0x45f44c+'/api/selector/owners','json':!![]};_0x13d131['headers']=_0x2f82e5;logger[_0xae35('0xd')](_0xae35('0x17'));return rp(_0x13d131)['then'](function(_0x338d54){if(_0x338d54){var _0x20a9e9=_0x338d54[_0xae35('0x10')];var _0x3834ea=![];var _0x336cc1=null;if(_0xeec40b['agentEmail']!==null){logger['info']('Getting\x20user\x20with\x20email',_0xeec40b[_0xae35('0x18')]);_0xeec40b[_0xae35('0x19')]=_0xeec40b[_0xae35('0x18')];for(_0x336cc1=0x0;_0x336cc1<_0x20a9e9[_0xae35('0x11')];_0x336cc1++){if(_0x20a9e9[_0x336cc1]['email']===_0xeec40b[_0xae35('0x18')]){_0x3834ea=!![];_0xeec40b[_0xae35('0x1a')]=_0x20a9e9[_0x336cc1]['id'];logger[_0xae35('0xd')](_0xae35('0x1b'),_0xeec40b[_0xae35('0x1a')]);}}}if(!_0x3834ea){logger[_0xae35('0xd')](_0xae35('0x1c'));_0xeec40b[_0xae35('0x19')]=_0xeec40b[_0xae35('0x12')];_0xeec40b[_0xae35('0x1a')]=_0xeec40b['adminId'];_0x3834ea=!![];}if(_0x3834ea){_0x126982(_0xeec40b);}else{_0x2f3359({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x2f3359({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x1d0d2c){logger[_0xae35('0x15')]('['+[_0x2b9f34['toUpperCase']()]+']',_0x1d0d2c['message']);_0x2f3359(_0x1d0d2c);});});};}function searchContact(_0x190f18,_0x2ef30b,_0x4d5b70,_0x23458a){return new Promise(function(_0x2261a8,_0x558cfa){var _0x9ef519={'method':'GET','headers':_0x2ef30b,'uri':_0x190f18+_0xae35('0x1d')+_0x23458a+'&f='+_0x4d5b70+_0xae35('0x1e'),'json':!![]};rp(_0x9ef519)['then'](function(_0x3cf260){var _0x2c739b=_[_0xae35('0x1f')](_0x3cf260[_0xae35('0x20')]['contacts'],[_0x4d5b70,_0x23458a]);_0x2261a8(_0x2c739b);})[_0xae35('0x14')](function(_0x5eacf3){_0x558cfa(_0x5eacf3);});});}function getEndUser(_0x46ac1d,_0x2ec75b,_0x520317){return function(_0x31c3b1){return new Promise(function(_0x560a8f,_0x4996e2){logger['info'](util[_0xae35('0x21')]('Searching\x20contact\x20with\x20phone\x20%s',_0x31c3b1[_0xae35('0x22')]));searchContact(_0x520317,_0x2ec75b,_0xae35('0x23'),_0x31c3b1[_0xae35('0x22')])[_0xae35('0xf')](function(_0x235809){if(_0x235809){_0x31c3b1[_0xae35('0x24')]=_0x235809['id'];logger[_0xae35('0xd')](_0xae35('0x25'),_0x31c3b1[_0xae35('0x24')]);return _0x560a8f(_0x31c3b1);}searchContact(_0x520317,_0x2ec75b,_0xae35('0x26'),_0x31c3b1['contactNumber'])[_0xae35('0xf')](function(_0x33a7ed){if(_0x33a7ed){_0x31c3b1[_0xae35('0x24')]=_0x33a7ed['id'];logger[_0xae35('0xd')](_0xae35('0x27'),_0x31c3b1[_0xae35('0x24')]);return _0x560a8f(_0x31c3b1);}createEndUser(_0x31c3b1,_0x46ac1d,_0x2ec75b,_0x520317)[_0xae35('0xf')](function(_0x2e0c48){logger[_0xae35('0xd')](_0xae35('0x28'),_0x2e0c48[_0xae35('0x24')]);return _0x560a8f(_0x2e0c48);});});})[_0xae35('0x14')](function(_0x4de569){_0x4996e2(_0x4de569);});});};}function createEndUser(_0x4503b0,_0x5e09be,_0x3f6592,_0x12b537){return new Promise(function(_0x46ec2a,_0x5cb66b){var _0x816fa8=moment();var _0xc2c3f2={'method':'POST','uri':_0x12b537+'/api/contacts','body':{'contact':{'last_name':_0x4503b0['contactNumber'],'work_number':_0x4503b0[_0xae35('0x22')],'mobile_number':_0x4503b0[_0xae35('0x22')],'owner_id':_0x4503b0[_0xae35('0x1a')],'created_at':_0x816fa8['format'](_0xae35('0x29'))}},'json':!![]};_0xc2c3f2[_0xae35('0xc')]=_0x3f6592;logger['info'](_0xae35('0x2a'));return rp(_0xc2c3f2)[_0xae35('0xf')](function(_0x4f50f2){_0x4503b0[_0xae35('0x24')]=_0x4f50f2[_0xae35('0x2b')]['id'];_0x46ec2a(_0x4503b0);})['catch'](function(_0x5d5e25){logger['error']('['+[_0x5e09be[_0xae35('0x2c')]()]+']',_0x5d5e25[_0xae35('0x16')]);_0x5cb66b(_0x5d5e25['message']);});});}function getTicket(_0x4a8f28,_0x450ea1,_0x1a4b03,_0x323929,_0x2c8a16){return function(_0x2e2f1a){logger[_0xae35('0xd')](_0xae35('0x2d'));return new Promise(function(_0x1a3a28,_0x37f962){var _0x2586f2=moment();var _0xce3833={'method':_0xae35('0x2e'),'uri':_0x1a4b03+_0xae35('0x2f'),'body':{'title':intUtil[_0xae35('0x30')](_0x323929[_0xae35('0x31')],_0x2c8a16,'\x20'),'description':intUtil['getString'](_0x323929[_0xae35('0x32')],_0x2c8a16,'\x0a'),'owner_id':_0x2e2f1a[_0xae35('0x1a')],'creater_id':_0x2e2f1a[_0xae35('0x13')],'targetable_id':_0x2e2f1a[_0xae35('0x24')],'targetable_type':_0xae35('0x33'),'created_at':_0x2586f2[_0xae35('0x21')](_0xae35('0x29')),'due_date':_0x2586f2[_0xae35('0x34')](0x1e,'m')[_0xae35('0x21')](_0xae35('0x29'))},'json':!![]};_0xce3833['headers']=_0x450ea1;return rp(_0xce3833)['then'](function(_0x6d8b90){_0x2e2f1a['ticketId']=_0x6d8b90[_0xae35('0x35')]['id'];logger[_0xae35('0xd')](_0xae35('0x36'),_0x2e2f1a[_0xae35('0x37')]);_0x1a3a28(_0x2e2f1a);})[_0xae35('0x14')](function(_0x17e610){logger[_0xae35('0x15')]('['+[_0x4a8f28['toUpperCase']()]+']',_0x17e610[_0xae35('0x16')]);_0x37f962(_0x17e610[_0xae35('0x16')]);});});};}function emit(_0x226c76,_0x3b2a95,_0x5d9c63){var _0x3c4c3a={'uri':_0x226c76+'/contacts/'+_0x5d9c63};io['to'](util['format'](_0xae35('0x38'),_0x3b2a95))[_0xae35('0x39')](_0xae35('0x3a'),_0x3c4c3a);}exports['cs']=function(_0x3992f2,_0x5890f2,_0x5be24c,_0x459884,_0x7947c7,_0x82644f,_0x401b86,_0xed5760){var _0x2fb338={};var _0x27d51a={'Authorization':_0xae35('0x3b')+_0x82644f['apiKey']};_0x82644f[_0xae35('0x3c')]=intUtil[_0xae35('0x3d')](_0x82644f[_0xae35('0x3c')]);_0x82644f['serverUrl']=intUtil['stripTrailingSlash'](_0x82644f[_0xae35('0x3e')]);var _0x466cb2=_0x82644f[_0xae35('0x3c')];_0x2fb338['adminEmail']=_0x82644f[_0xae35('0x3f')];_0x2fb338[_0xae35('0x22')]=_0xed5760['toLowerCase']()===_0xae35('0x40')?_0x5890f2[_0xae35('0x41')]:_0x5890f2['calleridnum'];_0x2fb338['callDirection']=_0xed5760==='queue'||_0xed5760===_0xae35('0x42')?_0xae35('0x43'):'outbound';if(_0x459884){_0x2fb338[_0xae35('0x18')]=_0x459884[_0xae35('0x44')];}var _0x26db0a=util['format'](_0xae35('0x45'),_0x82644f[_0xae35('0x3e')],_0x5890f2[_0xae35('0x46')],md5(_0x5890f2[_0xae35('0x46')]));if(_0x7947c7&&_0x7947c7[_0xae35('0x47')]){logger[_0xae35('0xd')](_0xae35('0x48'),_0xae35('0x49'));_0x5890f2['recordingURL']=_0x26db0a;}else if(_0x401b86&&_0x401b86[_0xae35('0x4a')]&&_0x401b86[_0xae35('0x4a')]!=='none'){logger[_0xae35('0xd')](_0xae35('0x4b'),_0xae35('0x49'));_0x5890f2['recordingURL']=_0x26db0a;}else{_0x5890f2[_0xae35('0x4c')]='';}return getAdminId(_0x2fb338,_0xed5760,_0x27d51a,_0x466cb2)[_0xae35('0xf')](getUser(_0xed5760,_0x27d51a,_0x466cb2))[_0xae35('0xf')](getEndUser(_0xed5760,_0x27d51a,_0x466cb2))[_0xae35('0xf')](getTicket(_0xed5760,_0x27d51a,_0x466cb2,_0x5be24c,_0x5890f2))['then'](function(_0x4a4b22){logger[_0xae35('0xd')](util['format'](_0xae35('0x4d'),_0x4a4b22[_0xae35('0x37')]));if(_0xed5760!==_0xae35('0x42')){logger['info']('['+[_0xed5760[_0xae35('0x2c')]()]+']',_0xae35('0x4e'));emit(_0x466cb2,_0x459884[_0xae35('0x4f')],_0x4a4b22[_0xae35('0x24')]);}})[_0xae35('0x14')](function(_0x3f47af){logger[_0xae35('0x15')]('['+[_0xed5760[_0xae35('0x2c')]()]+_0xae35('0x50'),util['inspect'](_0x3f47af,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 954d3f5..46d2e93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82f8=['./salesforce','./sugarcrm','./zoho','./desk','./vtiger','./servicenow','./freshsales','zendesk','salesforce','sugarcrm','zoho','desk','dynamics365','freshsales','exec','includes','data1','toLowerCase','data2','find','data3','queue','routeId','log','EVENT\x20UNKNOWN','unmanaged','freshdesk','servicenow','../../../../config/logger','error','[EXEC]','format','%s\x20account\x20#%s\x20not\x20found','util','./zendesk'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0x82f8,0x15c));var _0x882f=function(_0x3f9e4c,_0x18024c){_0x3f9e4c=_0x3f9e4c-0x0;var _0x221a1e=_0x82f8[_0x3f9e4c];return _0x221a1e;};'use strict';var _=require('lodash');var util=require(_0x882f('0x0'));var zendesk=require(_0x882f('0x1'));var salesforce=require(_0x882f('0x2'));var sugarcrm=require(_0x882f('0x3'));var freshdesk=require('./freshdesk');var zoho=require(_0x882f('0x4'));var desk=require(_0x882f('0x5'));var vtiger=require(_0x882f('0x6'));var servicenow=require(_0x882f('0x7'));var dynamics365=require('./dynamics365');var freshsales=require(_0x882f('0x8'));var integrations=[_0x882f('0x9'),_0x882f('0xa'),_0x882f('0xb'),'freshdesk',_0x882f('0xc'),_0x882f('0xd'),'vtiger',_0x882f('0xe'),_0x882f('0xf'),'servicenow'];exports[_0x882f('0x10')]=function(_0x5bf1b9,_0x5e16b5,_0x4138cd,_0x2fb24c,_0x288a70,_0x4fe855){if(_0x4138cd){if(_[_0x882f('0x11')](integrations,_0x5bf1b9[_0x882f('0x12')][_0x882f('0x13')]())){try{var _0x339a1e=null;var _0x4a81e7='';var _0x322337=_0x4138cd[_0x5bf1b9['data1']['toLowerCase']()];if(_0x322337){var _0x346010=_0x322337[_0x5bf1b9[_0x882f('0x14')]];if(_0x346010){var _0x2ef6e6=_[_0x882f('0x15')](_0x346010['Configurations'],{'id':parseInt(_0x5bf1b9[_0x882f('0x16')],0xa)});if(_0x2ef6e6){if(_0x2fb24c){if(_0x288a70&&_0x5e16b5[_0x882f('0x17')]){_0x4a81e7=_0x882f('0x17');}else if(_0x5e16b5[_0x882f('0x18')]){_0x4a81e7='outbound';}else{console[_0x882f('0x19')](_0x882f('0x1a'),_0x5e16b5);}}else{_0x4a81e7=_0x882f('0x1b');}switch(_0x5bf1b9[_0x882f('0x12')][_0x882f('0x13')]()){case _0x882f('0x9'):zendesk[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case _0x882f('0xa'):salesforce[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case _0x882f('0xb'):sugarcrm[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case _0x882f('0x1c'):freshdesk[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case _0x882f('0xc'):zoho[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case _0x882f('0xd'):desk[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case'vtiger':vtiger[_0x4a81e7](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855);break;case'freshsales':freshsales['cs'](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855,_0x4a81e7);break;case _0x882f('0x1d'):servicenow['cs'](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855,_0x4a81e7);break;case _0x882f('0xe'):dynamics365['cs'](_0x5bf1b9,_0x5e16b5,_0x2ef6e6,_0x2fb24c,_0x288a70,_0x346010,_0x4fe855,_0x4a81e7);break;default:console[_0x882f('0x19')]('unknown\x20integration');}}else{_0x339a1e=require(_0x882f('0x1e'))(_0x5bf1b9['data1'][_0x882f('0x13')]());_0x339a1e[_0x882f('0x1f')](_0x882f('0x20'),util[_0x882f('0x21')]('%s\x20configuration\x20#%s\x20not\x20found',_0x5bf1b9[_0x882f('0x12')][_0x882f('0x13')](),_0x5bf1b9[_0x882f('0x16')]));}}else{_0x339a1e=require(_0x882f('0x1e'))(_0x5bf1b9['data1'][_0x882f('0x13')]());_0x339a1e['error'](_0x882f('0x20'),util[_0x882f('0x21')](_0x882f('0x22'),_0x5bf1b9[_0x882f('0x12')]['toLowerCase'](),_0x5bf1b9[_0x882f('0x14')]));}}else{}}catch(_0x4d6215){console['error'](_0x4d6215);}}}};
\ No newline at end of file
+var _0x37e0=['./freshsales','zendesk','salesforce','freshdesk','desk','vtiger','freshsales','servicenow','exec','includes','data1','toLowerCase','data2','find','Configurations','data3','queue','outbound','log','EVENT\x20UNKNOWN','unmanaged','zoho','unknown\x20integration','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','../../../../config/logger','error','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./dynamics365'];(function(_0x1b6f21,_0x8e0ad0){var _0x4ac54e=function(_0x469e2d){while(--_0x469e2d){_0x1b6f21['push'](_0x1b6f21['shift']());}};_0x4ac54e(++_0x8e0ad0);}(_0x37e0,0x135));var _0x037e=function(_0x5df885,_0x336e62){_0x5df885=_0x5df885-0x0;var _0xb858a7=_0x37e0[_0x5df885];return _0xb858a7;};'use strict';var _=require(_0x037e('0x0'));var util=require(_0x037e('0x1'));var zendesk=require(_0x037e('0x2'));var salesforce=require(_0x037e('0x3'));var sugarcrm=require(_0x037e('0x4'));var freshdesk=require(_0x037e('0x5'));var zoho=require(_0x037e('0x6'));var desk=require(_0x037e('0x7'));var vtiger=require(_0x037e('0x8'));var servicenow=require(_0x037e('0x9'));var dynamics365=require(_0x037e('0xa'));var freshsales=require(_0x037e('0xb'));var integrations=[_0x037e('0xc'),_0x037e('0xd'),'sugarcrm',_0x037e('0xe'),'zoho',_0x037e('0xf'),_0x037e('0x10'),'dynamics365',_0x037e('0x11'),_0x037e('0x12')];exports[_0x037e('0x13')]=function(_0x818b00,_0x40c4a5,_0x5bb36e,_0x229d45,_0xf9907b,_0x5659b8){if(_0x5bb36e){if(_[_0x037e('0x14')](integrations,_0x818b00[_0x037e('0x15')][_0x037e('0x16')]())){try{var _0x380d33=null;var _0x3581ec='';var _0x578db8=_0x5bb36e[_0x818b00[_0x037e('0x15')][_0x037e('0x16')]()];if(_0x578db8){var _0x5009e2=_0x578db8[_0x818b00[_0x037e('0x17')]];if(_0x5009e2){var _0x26b7fb=_[_0x037e('0x18')](_0x5009e2[_0x037e('0x19')],{'id':parseInt(_0x818b00[_0x037e('0x1a')],0xa)});if(_0x26b7fb){if(_0x229d45){if(_0xf9907b&&_0x40c4a5[_0x037e('0x1b')]){_0x3581ec='queue';}else if(_0x40c4a5['routeId']){_0x3581ec=_0x037e('0x1c');}else{console[_0x037e('0x1d')](_0x037e('0x1e'),_0x40c4a5);}}else{_0x3581ec=_0x037e('0x1f');}switch(_0x818b00[_0x037e('0x15')][_0x037e('0x16')]()){case _0x037e('0xc'):zendesk[_0x3581ec](_0x818b00,_0x40c4a5,_0x26b7fb,_0x229d45,_0xf9907b,_0x5009e2,_0x5659b8);break;case _0x037e('0xd'):salesforce[_0x3581ec](_0x818b00,_0x40c4a5,_0x26b7fb,_0x229d45,_0xf9907b,_0x5009e2,_0x5659b8);break;case'sugarcrm':sugarcrm[_0x3581ec](_0x818b00,_0x40c4a5,_0x26b7fb,_0x229d45,_0xf9907b,_0x5009e2,_0x5659b8);break;case _0x037e('0xe'):freshdesk[_0x3581ec](_0x818b00,_0x40c4a5,_0x26b7fb,_0x229d45,_0xf9907b,_0x5009e2,_0x5659b8);break;case _0x037e('0x20'):zoho[_0x3581ec](_0x818b00,_0x40c4a5,_0x26b7fb,_0x229d45,_0xf9907b,_0x5009e2,_0x5659b8);break;case _0x037e('0xf'):desk[_0x3581ec](_0x818b00,_0x40c4a5,_0x26b7fb,_0x229d45,_0xf9907b,_0x5009e2,_0x5659b8);break;case _0x037e('0x10'):vtiger[_0x3581ec](_0x818b00,_0x40c4a5,_0x26b7fb,_0x229d45,_0xf9907b,_0x5009e2,_0x5659b8);break;case'freshsales':freshsales['cs'](_0x818b00,_0x40c4a5,_0x26b7fb,_0x229d45,_0xf9907b,_0x5009e2,_0x5659b8,_0x3581ec);break;case'servicenow':servicenow['cs'](_0x818b00,_0x40c4a5,_0x26b7fb,_0x229d45,_0xf9907b,_0x5009e2,_0x5659b8,_0x3581ec);break;case'dynamics365':dynamics365['cs'](_0x818b00,_0x40c4a5,_0x26b7fb,_0x229d45,_0xf9907b,_0x5009e2,_0x5659b8,_0x3581ec);break;default:console[_0x037e('0x1d')](_0x037e('0x21'));}}else{_0x380d33=require('../../../../config/logger')(_0x818b00['data1'][_0x037e('0x16')]());_0x380d33['error'](_0x037e('0x22'),util[_0x037e('0x23')](_0x037e('0x24'),_0x818b00[_0x037e('0x15')][_0x037e('0x16')](),_0x818b00['data3']));}}else{_0x380d33=require(_0x037e('0x25'))(_0x818b00['data1'][_0x037e('0x16')]());_0x380d33[_0x037e('0x26')]('[EXEC]',util[_0x037e('0x23')](_0x037e('0x27'),_0x818b00[_0x037e('0x15')][_0x037e('0x16')](),_0x818b00[_0x037e('0x17')]));}}else{}}catch(_0x416279){console[_0x037e('0x26')](_0x416279);}}}};
\ No newline at end of file
index 5c09536..bac1441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96c7=['clientSecret','login','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','integrationTab','user:%s','trigger:salesforce:display','trigger:browser:url','%s/%s/e','instanceUrl','error','none','[OUTBOUND]','outbound','[OUTBOUND]\x20Ticket\x20%s\x20created.','newTab','Salesforce\x20account\x20type\x20not\x20recognized','catch','unmanaged','lastevent','toUpperCase',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','emit','getString','Subjects','Descriptions','ticketType','Task','IsReminderSet','IsRecurrence','contact','endUserType','lead','WhoId','account','WhatId','ContactId','leadId','info','sobject','create','isNil','User','find','then','length','Agent\x20%s\x20found.','resolve','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','Contact','execute','additionalSearchLead','account_contact_lead','additionalSearchAccount','Account','Lead','Name','Phone','attributes','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','<unknown>','format','Caller\x20-\x20%s','LastName','Company','No\x20Company','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','upperFirst','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId'];(function(_0xda6ad1,_0x5f09e3){var _0xedc3a5=function(_0x5459d7){while(--_0x5459d7){_0xda6ad1['push'](_0xda6ad1['shift']());}};_0xedc3a5(++_0x5f09e3);}(_0x96c7,0x10e));var _0x796c=function(_0x15418e,_0x475184){_0x15418e=_0x15418e-0x0;var _0x1b1d42=_0x96c7[_0x15418e];return _0x1b1d42;};'use strict';var _=require(_0x796c('0x0'));var rp=require(_0x796c('0x1'));var moment=require('moment');var BPromise=require(_0x796c('0x2'));var md5=require('md5');var jsforce=require('jsforce');var util=require(_0x796c('0x3'));var Redis=require(_0x796c('0x4'));var intUtil=require(_0x796c('0x5'));var config=require(_0x796c('0x6'));var logger=require(_0x796c('0x7'))(_0x796c('0x8'));config[_0x796c('0x9')]=_[_0x796c('0xa')](config[_0x796c('0x9')],{'host':_0x796c('0xb'),'port':0x18eb});var io=require(_0x796c('0xc'))(new Redis(config[_0x796c('0x9')]));function emit(_0x4d3aad,_0x4966f1,_0x31238d){io['to'](_0x4d3aad)[_0x796c('0xd')](_0x4966f1,_0x31238d);}function getTicket(_0x48d0ad,_0x580310,_0xdacd9c,_0x42fe71,_0x225536,_0x25a6d0,_0x45ec23,_0x506670){var _0xd21233=Object['assign']({},{'OwnerId':_0x580310['id'],'Subject':intUtil[_0x796c('0xe')](_0x42fe71[_0x796c('0xf')],_0x225536,'\x20'),'Description':intUtil[_0x796c('0xe')](_0x42fe71[_0x796c('0x10')],_0x225536,'\x0a')},getCustomFields(_0x25a6d0,_0x225536));if(_0xdacd9c){if(_0x42fe71[_0x796c('0x11')]===_0x796c('0x12')){_0xd21233['ActivityDate']=moment['utc']();_0xd21233[_0x796c('0x13')]=![];_0xd21233[_0x796c('0x14')]=![];if(_0xdacd9c['endUserType']===_0x796c('0x15')||_0xdacd9c[_0x796c('0x16')]===_0x796c('0x17')){_0xd21233[_0x796c('0x18')]=_0xdacd9c['id'];}else if(_0xdacd9c[_0x796c('0x16')]===_0x796c('0x19')){_0xd21233[_0x796c('0x1a')]=_0xdacd9c['id'];}}else if(_0x42fe71[_0x796c('0x11')]==='Case'){if(_0xdacd9c[_0x796c('0x16')]===_0x796c('0x15')){_0xd21233[_0x796c('0x1b')]=_0xdacd9c['id'];}else if(_0xdacd9c[_0x796c('0x16')]===_0x796c('0x19')){_0xd21233['AccountId']=_0xdacd9c['id'];}else if(_0xdacd9c[_0x796c('0x16')]===_0x796c('0x17')&&_0x42fe71[_0x796c('0x1c')]){_0xd21233[_0x42fe71[_0x796c('0x1c')]]=_0xdacd9c['id'];}else{logger[_0x796c('0x1d')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x45ec23[_0x796c('0x1e')](_0x42fe71[_0x796c('0x11')])[_0x796c('0x1f')](_0xd21233);}function getUser(_0x159269,_0x98884,_0xaadd50){if(!_[_0x796c('0x20')](_0x98884)&&intUtil['validateEmail'](_0x98884)){var _0x95cff5={'Email':_0x98884};var _0x5fcd38={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0xaadd50[_0x796c('0x1e')](_0x796c('0x21'))[_0x796c('0x22')](_0x95cff5,_0x5fcd38)['execute']()[_0x796c('0x23')](function(_0x59704a){if(_0x59704a[_0x796c('0x24')]){var _0x5c0966=_['find'](_0x59704a,function(_0x5be2ef){return _0x5be2ef['Email']===_0x98884;});if(_0x5c0966){logger[_0x796c('0x1d')](_0x796c('0x25'),_0x98884);return BPromise[_0x796c('0x26')]({'id':_0x5c0966['Id'],'name':_0x5c0966['Name']});}}else{logger[_0x796c('0x1d')](_0x796c('0x27'),_0x98884);return _0xaadd50['identity']()[_0x796c('0x23')](function(_0x4a4eed){return BPromise[_0x796c('0x26')]({'id':_0x4a4eed[_0x796c('0x28')],'name':_0x4a4eed['display_name']});});}});}else{logger['info'](_0x796c('0x27'),_0x98884);return _0xaadd50['identity']()['then'](function(_0x22b055){return BPromise[_0x796c('0x26')]({'id':_0x22b055[_0x796c('0x28')],'name':_0x22b055['display_name']});});}}function getEndUser(_0x2a921d,_0x23f688,_0x21354b,_0x4b6e51,_0x495a79){var _0x2dee30={'$or':{'Phone':_0x4b6e51}};var _0x1e64df={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x796c('0x26')]()[_0x796c('0x23')](function(){logger[_0x796c('0x1d')](_0x796c('0x29'),_0x4b6e51,_0x23f688[_0x796c('0x2a')]);switch(_0x23f688[_0x796c('0x2a')]){case _0x796c('0x2b'):var _0x5ae105=_[_0x796c('0x2c')](_0x2dee30);if(_0x23f688[_0x796c('0x2d')]){var _0x5a5b39={};_0x5a5b39[_0x23f688['additionalSearchContact']]=_0x4b6e51;_[_0x796c('0x2e')](_0x5ae105[_0x796c('0x2f')],_0x5a5b39);}return _0x495a79[_0x796c('0x1e')](_0x796c('0x30'))[_0x796c('0x22')](_0x5ae105,_0x1e64df)[_0x796c('0x31')]()[_0x796c('0x23')](function(_0x45752e){if(_0x45752e&&_0x45752e[_0x796c('0x24')]){return _0x45752e;}else{var _0x263eba=_[_0x796c('0x2c')](_0x2dee30);if(_0x23f688[_0x796c('0x32')]){var _0x546e83={};_0x546e83[_0x23f688[_0x796c('0x32')]]=_0x4b6e51;_[_0x796c('0x2e')](_0x263eba[_0x796c('0x2f')],_0x546e83);}return _0x495a79[_0x796c('0x1e')]('Lead')[_0x796c('0x22')](_0x263eba,_0x1e64df);}});case _0x796c('0x33'):var _0x33644d=_[_0x796c('0x2c')](_0x2dee30);if(_0x23f688[_0x796c('0x34')]){var _0x5a5b39={};_0x5a5b39[_0x23f688[_0x796c('0x34')]]=_0x4b6e51;_[_0x796c('0x2e')](_0x33644d['$or'],_0x5a5b39);}return _0x495a79['sobject'](_0x796c('0x35'))[_0x796c('0x22')](_0x33644d,_0x1e64df)[_0x796c('0x31')]()[_0x796c('0x23')](function(_0x2a5326){if(_0x2a5326&&_0x2a5326[_0x796c('0x24')]){return _0x2a5326;}else{var _0x343be8=_['cloneDeep'](_0x2dee30);if(_0x23f688[_0x796c('0x2d')]){var _0x26b534={};_0x26b534[_0x23f688[_0x796c('0x2d')]]=_0x4b6e51;_['merge'](_0x343be8[_0x796c('0x2f')],_0x26b534);}return _0x495a79['sobject'](_0x796c('0x30'))[_0x796c('0x22')](_0x343be8,_0x1e64df)['then'](function(_0xdf6048){if(_0xdf6048&&_0xdf6048['length']){return _0xdf6048;}else{var _0x510c2a=_[_0x796c('0x2c')](_0x2dee30);if(_0x23f688['additionalSearchLead']){var _0x319d85={};_0x319d85[_0x23f688[_0x796c('0x32')]]=_0x4b6e51;_['merge'](_0x510c2a[_0x796c('0x2f')],_0x319d85);}return _0x495a79['sobject'](_0x796c('0x36'))['find'](_0x510c2a,_0x1e64df);}});}});case'contact':var _0x5ae105=_['cloneDeep'](_0x2dee30);if(_0x23f688[_0x796c('0x2d')]){var _0x5a5b39={};_0x5a5b39[_0x23f688['additionalSearchContact']]=_0x4b6e51;_[_0x796c('0x2e')](_0x5ae105[_0x796c('0x2f')],_0x5a5b39);}return _0x495a79[_0x796c('0x1e')](_0x796c('0x30'))[_0x796c('0x22')](_0x5ae105,_0x1e64df)[_0x796c('0x31')]();case'lead':var _0x10d071=_[_0x796c('0x2c')](_0x2dee30);if(_0x23f688[_0x796c('0x32')]){var _0x5a5b39={};_0x5a5b39[_0x23f688[_0x796c('0x32')]]=_0x4b6e51;_[_0x796c('0x2e')](_0x10d071[_0x796c('0x2f')],_0x5a5b39);}return _0x495a79[_0x796c('0x1e')](_0x796c('0x36'))[_0x796c('0x22')](_0x10d071,_0x1e64df);case _0x796c('0x19'):var _0x33644d=_[_0x796c('0x2c')](_0x2dee30);if(_0x23f688[_0x796c('0x34')]){var _0x5a5b39={};_0x5a5b39[_0x23f688['additionalSearchAccount']]=_0x4b6e51;_[_0x796c('0x2e')](_0x33644d[_0x796c('0x2f')],_0x5a5b39);}return _0x495a79[_0x796c('0x1e')]('Account')['find'](_0x33644d,_0x1e64df);default:return null;}})[_0x796c('0x23')](function(_0x5a8183){if(_0x5a8183&&_0x5a8183[_0x796c('0x24')]){var _0x220da8=_['first'](_0x5a8183);if(_0x220da8){return BPromise[_0x796c('0x26')]({'id':_0x220da8['Id'],'name':_0x220da8[_0x796c('0x37')],'phone':_0x220da8[_0x796c('0x38')],'endUserType':_0x220da8[_0x796c('0x39')]['type']['toLowerCase']()});}}})['then'](function(_0x373032){if(_0x373032){logger[_0x796c('0x1d')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x373032[_0x796c('0x16')],_0x4b6e51);return BPromise[_0x796c('0x26')](_0x373032);}else{logger['info'](_0x796c('0x3a'),_0x4b6e51);var _0x533ba6={'Phone':_0x4b6e51};if(_0x23f688[_0x796c('0x3b')]){if(_0x23f688[_0x796c('0x3b')]===_0x796c('0x15')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x4b6e51,_0x23f688[_0x796c('0x3b')]);_0x533ba6['LastName']=_0x21354b!==_0x796c('0x3c')?_0x21354b:util[_0x796c('0x3d')](_0x796c('0x3e'),_0x4b6e51);}else if(_0x23f688[_0x796c('0x3b')]===_0x796c('0x17')){logger[_0x796c('0x1d')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x4b6e51,_0x23f688[_0x796c('0x3b')]);_0x533ba6[_0x796c('0x3f')]=_0x21354b!==_0x796c('0x3c')?_0x21354b:util['format'](_0x796c('0x3e'),_0x4b6e51);_0x533ba6[_0x796c('0x40')]=_0x796c('0x41');}else if(_0x23f688[_0x796c('0x3b')]===_0x796c('0x19')){logger[_0x796c('0x1d')](_0x796c('0x42'),_0x4b6e51,_0x23f688[_0x796c('0x3b')]);_0x533ba6[_0x796c('0x37')]=_0x21354b!=='<unknown>'?_0x21354b:util[_0x796c('0x3d')](_0x796c('0x3e'),_0x4b6e51);}else{return null;}}return _0x495a79[_0x796c('0x1e')](_[_0x796c('0x43')](_0x23f688[_0x796c('0x3b')]))['create'](_0x533ba6)[_0x796c('0x23')](function(_0xa10756){return BPromise[_0x796c('0x26')]({'id':_0xa10756['id'],'endUserType':_0x23f688[_0x796c('0x3b')]});});}});}function getCustomFields(_0x458ea8,_0x835522){var _0x38b78b={};if(_0x458ea8[_0x796c('0x24')]>0x0){_['forEach'](_0x458ea8,function(_0xb2d024){if(_[_0x796c('0x44')]([_0x796c('0x45'),'picklist'],_0xb2d024['type'])&&_0xb2d024[_0x796c('0x46')]){_0x38b78b[_0xb2d024[_0x796c('0x46')]]=_0xb2d024[_0x796c('0x47')][_0x796c('0x48')]();}else if(_0xb2d024[_0x796c('0x49')]===_0x796c('0x4a')&&_0xb2d024[_0x796c('0x4b')]&&_0xb2d024[_0x796c('0x46')]){_0x835522[_0xb2d024[_0x796c('0x4b')]]&&(_0x38b78b[_0xb2d024['idField']]=_0x835522[_0xb2d024[_0x796c('0x4b')]][_0x796c('0x48')]());}else if(_0xb2d024[_0x796c('0x49')]==='customVariable'&&_0xb2d024[_0x796c('0x4c')]&&_0xb2d024[_0x796c('0x4c')][_0x796c('0x4d')]&&_0xb2d024['idField']){_0x835522[_0xb2d024['Variable'][_0x796c('0x4d')][_0x796c('0x4e')]()]&&(_0x38b78b[_0xb2d024[_0x796c('0x46')]]=_0x835522[_0xb2d024[_0x796c('0x4c')][_0x796c('0x4d')][_0x796c('0x4e')]()]['toString']());}});}return _0x38b78b;}function getConnection(_0x58c355){var _0x4bac3e=_0x58c355['password']['concat'](_0x58c355[_0x796c('0x4f')]);var _0x10b92e=new jsforce[(_0x796c('0x50'))]({'oauth2':{'loginUrl':_0x58c355[_0x796c('0x51')]||_0x796c('0x52'),'clientId':_0x58c355[_0x796c('0x53')],'clientSecret':_0x58c355[_0x796c('0x54')]}});return _0x10b92e[_0x796c('0x55')](_0x58c355['username'],_0x4bac3e)['then'](function(){logger[_0x796c('0x1d')]('Connection\x20established.');return _0x10b92e;});}exports[_0x796c('0x56')]=function(_0x48eacf,_0x5f4325,_0x462efc,_0x160bf9,_0x5071cf,_0x4dfd40){var _0x4abe1d,_0x2772ae,_0x4adce1,_0x304d34;_0x4dfd40[_0x796c('0x57')]=intUtil[_0x796c('0x58')](_0x4dfd40[_0x796c('0x57')]);_0x4dfd40[_0x796c('0x51')]=intUtil[_0x796c('0x58')](_0x4dfd40[_0x796c('0x51')]);if(_0x5071cf&&_0x5071cf[_0x796c('0x59')]){logger[_0x796c('0x1d')](_0x796c('0x5a'),_0x796c('0x5b'));_0x5f4325[_0x796c('0x5c')]=util['format'](_0x796c('0x5d'),_0x4dfd40[_0x796c('0x57')],_0x5f4325[_0x796c('0x5e')],md5(_0x5f4325[_0x796c('0x5e')]));}else{_0x5f4325[_0x796c('0x5c')]='';}return getConnection(_0x4dfd40)[_0x796c('0x23')](function(_0x3cb7a0){_0x304d34=_0x3cb7a0;return getUser(_0x4dfd40,_0x160bf9[_0x796c('0x5f')],_0x304d34);})[_0x796c('0x23')](function(_0x16b3db){_0x4abe1d=_0x16b3db;return getEndUser(_0x4dfd40,_0x462efc,_0x5f4325[_0x796c('0x60')],_0x5f4325[_0x796c('0x61')],_0x304d34);})[_0x796c('0x23')](function(_0x2f2200){_0x2772ae=_0x2f2200;return getTicket(_0x4dfd40,_0x4abe1d,_0x2772ae,_0x462efc,_0x5f4325,_0x462efc[_0x796c('0x62')],_0x304d34,_0x796c('0x56'));})[_0x796c('0x23')](function(_0x476cc1){_0x4adce1=_0x476cc1;logger['info'](_0x796c('0x63'),_0x4adce1['id']);logger['info']('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x4adce1['id'],_0x160bf9[_0x796c('0x4d')],_0x4dfd40[_0x796c('0x49')]);switch(_0x4dfd40[_0x796c('0x49')]){case _0x796c('0x64'):emit(util[_0x796c('0x3d')](_0x796c('0x65'),_0x160bf9['name']),_0x796c('0x66'),{'recordId':_0x4adce1['id']});break;case'newTab':emit(util[_0x796c('0x3d')](_0x796c('0x65'),_0x160bf9[_0x796c('0x4d')]),_0x796c('0x67'),{'uri':util[_0x796c('0x3d')](_0x796c('0x68'),_0x304d34[_0x796c('0x69')],_0x4adce1['id'])});break;default:logger[_0x796c('0x6a')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})['catch'](function(_0x334bc9){logger[_0x796c('0x6a')](_0x796c('0x5a'),_0x334bc9);});};exports['outbound']=function(_0x4cdc80,_0x4a846e,_0x75a362,_0x30f1c9,_0x36431a,_0x424d97,_0x36612b){var _0x5e1b07,_0x575dff,_0x60d621,_0x2d9f16;_0x424d97[_0x796c('0x57')]=intUtil[_0x796c('0x58')](_0x424d97[_0x796c('0x57')]);_0x424d97['remoteUri']=intUtil[_0x796c('0x58')](_0x424d97[_0x796c('0x51')]);if(_0x36612b&&_0x36612b['recordingFormat']&&_0x36612b['recordingFormat']!==_0x796c('0x6b')){logger[_0x796c('0x1d')](_0x796c('0x6c'),_0x796c('0x5b'));_0x4a846e['recordingURL']=util[_0x796c('0x3d')](_0x796c('0x5d'),_0x424d97[_0x796c('0x57')],_0x4a846e[_0x796c('0x5e')],md5(_0x4a846e[_0x796c('0x5e')]));}return getConnection(_0x424d97)['then'](function(_0x469751){_0x2d9f16=_0x469751;return getUser(_0x424d97,_0x30f1c9[_0x796c('0x5f')],_0x2d9f16);})[_0x796c('0x23')](function(_0x337797){_0x5e1b07=_0x337797;return getEndUser(_0x424d97,_0x75a362,_0x4a846e['destcalleridname'],_0x4a846e['destcalleridnum'],_0x2d9f16);})[_0x796c('0x23')](function(_0x18c97d){_0x575dff=_0x18c97d;return getTicket(_0x424d97,_0x5e1b07,_0x575dff,_0x75a362,_0x4a846e,_0x75a362[_0x796c('0x62')],_0x2d9f16,_0x796c('0x6d'));})['then'](function(_0x10d0aa){_0x60d621=_0x10d0aa;logger['info'](_0x796c('0x6e'),_0x60d621['id']);logger[_0x796c('0x1d')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x60d621['id'],_0x30f1c9[_0x796c('0x4d')],_0x424d97['type']);switch(_0x424d97[_0x796c('0x49')]){case _0x796c('0x64'):emit(util['format'](_0x796c('0x65'),_0x30f1c9[_0x796c('0x4d')]),_0x796c('0x66'),{'recordId':_0x60d621['id']});break;case _0x796c('0x6f'):emit(util[_0x796c('0x3d')](_0x796c('0x65'),_0x30f1c9[_0x796c('0x4d')]),'trigger:browser:url',{'uri':util[_0x796c('0x3d')](_0x796c('0x68'),_0x2d9f16[_0x796c('0x69')],_0x60d621['id'])});break;default:logger[_0x796c('0x6a')](_0x796c('0x6c'),_0x796c('0x70'));}})[_0x796c('0x71')](function(_0x5471e5){logger[_0x796c('0x6a')](_0x796c('0x6c'),_0x5471e5);});};exports[_0x796c('0x72')]=function(_0x43e562,_0xf8ee88,_0x3f5930,_0x2defb8,_0x59aaff,_0x51e16d){var _0x38ba3c,_0x12404c,_0x1c3069,_0x4d73a4;_0x51e16d['serverUrl']=intUtil[_0x796c('0x58')](_0x51e16d[_0x796c('0x57')]);_0x51e16d[_0x796c('0x51')]=intUtil['stripTrailingSlash'](_0x51e16d[_0x796c('0x51')]);if(_0x59aaff&&_0x59aaff['monitor_format']){logger['info']('['+_0xf8ee88[_0x796c('0x73')][_0x796c('0x74')]()+']','Recording\x20is\x20enabled!');_0xf8ee88[_0x796c('0x5c')]=util[_0x796c('0x3d')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x51e16d['serverUrl'],_0xf8ee88[_0x796c('0x5e')],md5(_0xf8ee88['uniqueid']));}else{_0xf8ee88[_0x796c('0x5c')]='';}return getConnection(_0x51e16d)['then'](function(_0x2db564){_0x4d73a4=_0x2db564;if(!_[_0x796c('0x20')](_0x2defb8)){return getUser(_0x51e16d,_0x2defb8['name'],_0x4d73a4);}else{return getUser(_0x51e16d,null,_0x4d73a4);}})[_0x796c('0x23')](function(_0x4e3a49){_0x38ba3c=_0x4e3a49;return getEndUser(_0x51e16d,_0x3f5930,_0xf8ee88[_0x796c('0x60')],_0xf8ee88[_0x796c('0x61')],_0x4d73a4);})[_0x796c('0x23')](function(_0x3b55db){_0x12404c=_0x3b55db;return getTicket(_0x51e16d,_0x38ba3c,_0x12404c,_0x3f5930,_0xf8ee88,_0x3f5930[_0x796c('0x62')],_0x4d73a4);})[_0x796c('0x23')](function(_0x23846f){_0x1c3069=_0x23846f;logger[_0x796c('0x1d')]('['+_0xf8ee88[_0x796c('0x73')]['toUpperCase']()+']\x20Ticket\x20%s\x20created.',_0x1c3069['id']);logger[_0x796c('0x1d')]('['+_0xf8ee88[_0x796c('0x73')]['toUpperCase']()+_0x796c('0x75'),_0x51e16d['type']);})[_0x796c('0x71')](function(_0x26ff6e){logger[_0x796c('0x6a')]('['+_0xf8ee88[_0x796c('0x73')]['toUpperCase']()+']',_0x26ff6e);});};
\ No newline at end of file
+var _0xb214=['first','attributes','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','format','Caller\x20-\x20%s','<unknown>','No\x20Company','upperFirst','create','forEach','includes','string','picklist','type','idField','content','toString','variable','variableName','name','Variable','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientSecret','login','username','Connection\x20established.','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','uniqueid','recordingURL','email','calleridname','calleridnum','Fields','queue','[QUEUE]\x20Ticket\x20%s\x20created','integrationTab','trigger:salesforce:display','user:%s','trigger:browser:url','%s/%s/e','instanceUrl','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','error','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','newTab','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase','Recording\x20is\x20enabled!',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','moment','bluebird','md5','jsforce','./util','../../../../config/environment','salesforce','redis','defaults','localhost','socket.io-emitter','emit','assign','getString','Descriptions','ticketType','Task','ActivityDate','IsReminderSet','endUserType','contact','lead','WhoId','account','WhatId','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','isNil','User','find','execute','then','length','Agent\x20%s\x20found.','Name','identity','resolve','display_name','user_id','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','$or','Contact','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','merge','Account'];(function(_0x411017,_0x4a8117){var _0x2adeea=function(_0x545222){while(--_0x545222){_0x411017['push'](_0x411017['shift']());}};_0x2adeea(++_0x4a8117);}(_0xb214,0x14d));var _0x4b21=function(_0x5efa49,_0x474f64){_0x5efa49=_0x5efa49-0x0;var _0x2ff7f0=_0xb214[_0x5efa49];return _0x2ff7f0;};'use strict';var _=require(_0x4b21('0x0'));var rp=require('request-promise');var moment=require(_0x4b21('0x1'));var BPromise=require(_0x4b21('0x2'));var md5=require(_0x4b21('0x3'));var jsforce=require(_0x4b21('0x4'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0x4b21('0x5'));var config=require(_0x4b21('0x6'));var logger=require('../../../../config/logger')(_0x4b21('0x7'));config[_0x4b21('0x8')]=_[_0x4b21('0x9')](config[_0x4b21('0x8')],{'host':_0x4b21('0xa'),'port':0x18eb});var io=require(_0x4b21('0xb'))(new Redis(config[_0x4b21('0x8')]));function emit(_0xb7608f,_0x20e743,_0x12b192){io['to'](_0xb7608f)[_0x4b21('0xc')](_0x20e743,_0x12b192);}function getTicket(_0x27af8c,_0x3f6e78,_0x2be0ff,_0x16b3ed,_0x126e8b,_0xed18f2,_0x1be78e,_0x87e30e){var _0x40604f=Object[_0x4b21('0xd')]({},{'OwnerId':_0x3f6e78['id'],'Subject':intUtil[_0x4b21('0xe')](_0x16b3ed['Subjects'],_0x126e8b,'\x20'),'Description':intUtil[_0x4b21('0xe')](_0x16b3ed[_0x4b21('0xf')],_0x126e8b,'\x0a')},getCustomFields(_0xed18f2,_0x126e8b));if(_0x2be0ff){if(_0x16b3ed[_0x4b21('0x10')]===_0x4b21('0x11')){_0x40604f[_0x4b21('0x12')]=moment['utc']();_0x40604f[_0x4b21('0x13')]=![];_0x40604f['IsRecurrence']=![];if(_0x2be0ff[_0x4b21('0x14')]===_0x4b21('0x15')||_0x2be0ff[_0x4b21('0x14')]===_0x4b21('0x16')){_0x40604f[_0x4b21('0x17')]=_0x2be0ff['id'];}else if(_0x2be0ff[_0x4b21('0x14')]===_0x4b21('0x18')){_0x40604f[_0x4b21('0x19')]=_0x2be0ff['id'];}}else if(_0x16b3ed[_0x4b21('0x10')]==='Case'){if(_0x2be0ff[_0x4b21('0x14')]===_0x4b21('0x15')){_0x40604f[_0x4b21('0x1a')]=_0x2be0ff['id'];}else if(_0x2be0ff[_0x4b21('0x14')]===_0x4b21('0x18')){_0x40604f[_0x4b21('0x1b')]=_0x2be0ff['id'];}else if(_0x2be0ff[_0x4b21('0x14')]===_0x4b21('0x16')&&_0x16b3ed['leadId']){_0x40604f[_0x16b3ed[_0x4b21('0x1c')]]=_0x2be0ff['id'];}else{logger[_0x4b21('0x1d')](_0x4b21('0x1e'));}}}return _0x1be78e[_0x4b21('0x1f')](_0x16b3ed[_0x4b21('0x10')])['create'](_0x40604f);}function getUser(_0x3bda51,_0x491941,_0x2e4887){if(!_[_0x4b21('0x20')](_0x491941)&&intUtil['validateEmail'](_0x491941)){var _0x504b80={'Email':_0x491941};var _0x332a68={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x2e4887[_0x4b21('0x1f')](_0x4b21('0x21'))[_0x4b21('0x22')](_0x504b80,_0x332a68)[_0x4b21('0x23')]()[_0x4b21('0x24')](function(_0x16ac2e){if(_0x16ac2e[_0x4b21('0x25')]){var _0x4afb3a=_['find'](_0x16ac2e,function(_0x3624f4){return _0x3624f4['Email']===_0x491941;});if(_0x4afb3a){logger[_0x4b21('0x1d')](_0x4b21('0x26'),_0x491941);return BPromise['resolve']({'id':_0x4afb3a['Id'],'name':_0x4afb3a[_0x4b21('0x27')]});}}else{logger[_0x4b21('0x1d')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x491941);return _0x2e4887[_0x4b21('0x28')]()[_0x4b21('0x24')](function(_0x4a4605){return BPromise[_0x4b21('0x29')]({'id':_0x4a4605['user_id'],'name':_0x4a4605[_0x4b21('0x2a')]});});}});}else{logger[_0x4b21('0x1d')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x491941);return _0x2e4887[_0x4b21('0x28')]()[_0x4b21('0x24')](function(_0x219780){return BPromise[_0x4b21('0x29')]({'id':_0x219780[_0x4b21('0x2b')],'name':_0x219780[_0x4b21('0x2a')]});});}}function getEndUser(_0x1e2786,_0x2540f0,_0x489faf,_0x3b0730,_0x3dada9){var _0x26e210={'$or':{'Phone':_0x3b0730}};var _0x366d59={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x4b21('0x29')]()[_0x4b21('0x24')](function(){logger[_0x4b21('0x1d')](_0x4b21('0x2c'),_0x3b0730,_0x2540f0['moduleSearch']);switch(_0x2540f0[_0x4b21('0x2d')]){case _0x4b21('0x2e'):var _0x156bdc=_[_0x4b21('0x2f')](_0x26e210);if(_0x2540f0[_0x4b21('0x30')]){var _0x44c1d7={};_0x44c1d7[_0x2540f0[_0x4b21('0x30')]]=_0x3b0730;_['merge'](_0x156bdc[_0x4b21('0x31')],_0x44c1d7);}return _0x3dada9[_0x4b21('0x1f')](_0x4b21('0x32'))['find'](_0x156bdc,_0x366d59)[_0x4b21('0x23')]()[_0x4b21('0x24')](function(_0x27b759){if(_0x27b759&&_0x27b759['length']){return _0x27b759;}else{var _0x5bbde2=_['cloneDeep'](_0x26e210);if(_0x2540f0[_0x4b21('0x33')]){var _0xe2e6d7={};_0xe2e6d7[_0x2540f0['additionalSearchLead']]=_0x3b0730;_['merge'](_0x5bbde2[_0x4b21('0x31')],_0xe2e6d7);}return _0x3dada9[_0x4b21('0x1f')](_0x4b21('0x34'))['find'](_0x5bbde2,_0x366d59);}});case _0x4b21('0x35'):var _0x2f6240=_[_0x4b21('0x2f')](_0x26e210);if(_0x2540f0['additionalSearchAccount']){var _0x44c1d7={};_0x44c1d7[_0x2540f0[_0x4b21('0x36')]]=_0x3b0730;_['merge'](_0x2f6240[_0x4b21('0x31')],_0x44c1d7);}return _0x3dada9[_0x4b21('0x1f')]('Account')['find'](_0x2f6240,_0x366d59)['execute']()['then'](function(_0x1cf2a1){if(_0x1cf2a1&&_0x1cf2a1[_0x4b21('0x25')]){return _0x1cf2a1;}else{var _0x27ea9c=_[_0x4b21('0x2f')](_0x26e210);if(_0x2540f0[_0x4b21('0x30')]){var _0x40dd33={};_0x40dd33[_0x2540f0[_0x4b21('0x30')]]=_0x3b0730;_[_0x4b21('0x37')](_0x27ea9c['$or'],_0x40dd33);}return _0x3dada9[_0x4b21('0x1f')]('Contact')[_0x4b21('0x22')](_0x27ea9c,_0x366d59)[_0x4b21('0x24')](function(_0x5d0e9c){if(_0x5d0e9c&&_0x5d0e9c[_0x4b21('0x25')]){return _0x5d0e9c;}else{var _0x606be2=_['cloneDeep'](_0x26e210);if(_0x2540f0[_0x4b21('0x33')]){var _0x28ed02={};_0x28ed02[_0x2540f0[_0x4b21('0x33')]]=_0x3b0730;_['merge'](_0x606be2[_0x4b21('0x31')],_0x28ed02);}return _0x3dada9[_0x4b21('0x1f')]('Lead')[_0x4b21('0x22')](_0x606be2,_0x366d59);}});}});case _0x4b21('0x15'):var _0x156bdc=_[_0x4b21('0x2f')](_0x26e210);if(_0x2540f0[_0x4b21('0x30')]){var _0x44c1d7={};_0x44c1d7[_0x2540f0[_0x4b21('0x30')]]=_0x3b0730;_[_0x4b21('0x37')](_0x156bdc[_0x4b21('0x31')],_0x44c1d7);}return _0x3dada9[_0x4b21('0x1f')]('Contact')['find'](_0x156bdc,_0x366d59)['execute']();case'lead':var _0x445ec0=_[_0x4b21('0x2f')](_0x26e210);if(_0x2540f0[_0x4b21('0x33')]){var _0x44c1d7={};_0x44c1d7[_0x2540f0['additionalSearchLead']]=_0x3b0730;_[_0x4b21('0x37')](_0x445ec0[_0x4b21('0x31')],_0x44c1d7);}return _0x3dada9[_0x4b21('0x1f')]('Lead')[_0x4b21('0x22')](_0x445ec0,_0x366d59);case _0x4b21('0x18'):var _0x2f6240=_[_0x4b21('0x2f')](_0x26e210);if(_0x2540f0[_0x4b21('0x36')]){var _0x44c1d7={};_0x44c1d7[_0x2540f0['additionalSearchAccount']]=_0x3b0730;_['merge'](_0x2f6240[_0x4b21('0x31')],_0x44c1d7);}return _0x3dada9[_0x4b21('0x1f')](_0x4b21('0x38'))['find'](_0x2f6240,_0x366d59);default:return null;}})[_0x4b21('0x24')](function(_0x218e10){if(_0x218e10&&_0x218e10[_0x4b21('0x25')]){var _0x56b86a=_[_0x4b21('0x39')](_0x218e10);if(_0x56b86a){return BPromise[_0x4b21('0x29')]({'id':_0x56b86a['Id'],'name':_0x56b86a['Name'],'phone':_0x56b86a['Phone'],'endUserType':_0x56b86a[_0x4b21('0x3a')]['type'][_0x4b21('0x3b')]()});}}})[_0x4b21('0x24')](function(_0x178ebd){if(_0x178ebd){logger[_0x4b21('0x1d')](_0x4b21('0x3c'),_0x178ebd['endUserType'],_0x3b0730);return BPromise[_0x4b21('0x29')](_0x178ebd);}else{logger[_0x4b21('0x1d')](_0x4b21('0x3d'),_0x3b0730);var _0xb4787e={'Phone':_0x3b0730};if(_0x2540f0[_0x4b21('0x3e')]){if(_0x2540f0[_0x4b21('0x3e')]===_0x4b21('0x15')){logger[_0x4b21('0x1d')](_0x4b21('0x3f'),_0x3b0730,_0x2540f0['moduleCreate']);_0xb4787e[_0x4b21('0x40')]=_0x489faf!=='<unknown>'?_0x489faf:util[_0x4b21('0x41')](_0x4b21('0x42'),_0x3b0730);}else if(_0x2540f0['moduleCreate']===_0x4b21('0x16')){logger['info'](_0x4b21('0x3f'),_0x3b0730,_0x2540f0[_0x4b21('0x3e')]);_0xb4787e[_0x4b21('0x40')]=_0x489faf!==_0x4b21('0x43')?_0x489faf:util['format'](_0x4b21('0x42'),_0x3b0730);_0xb4787e['Company']=_0x4b21('0x44');}else if(_0x2540f0['moduleCreate']===_0x4b21('0x18')){logger[_0x4b21('0x1d')](_0x4b21('0x3f'),_0x3b0730,_0x2540f0[_0x4b21('0x3e')]);_0xb4787e[_0x4b21('0x27')]=_0x489faf!==_0x4b21('0x43')?_0x489faf:util[_0x4b21('0x41')](_0x4b21('0x42'),_0x3b0730);}else{return null;}}return _0x3dada9[_0x4b21('0x1f')](_[_0x4b21('0x45')](_0x2540f0[_0x4b21('0x3e')]))[_0x4b21('0x46')](_0xb4787e)[_0x4b21('0x24')](function(_0x4189d5){return BPromise[_0x4b21('0x29')]({'id':_0x4189d5['id'],'endUserType':_0x2540f0[_0x4b21('0x3e')]});});}});}function getCustomFields(_0x145b59,_0x5621da){var _0x336c50={};if(_0x145b59['length']>0x0){_[_0x4b21('0x47')](_0x145b59,function(_0x4a389a){if(_[_0x4b21('0x48')]([_0x4b21('0x49'),_0x4b21('0x4a')],_0x4a389a[_0x4b21('0x4b')])&&_0x4a389a[_0x4b21('0x4c')]){_0x336c50[_0x4a389a[_0x4b21('0x4c')]]=_0x4a389a[_0x4b21('0x4d')][_0x4b21('0x4e')]();}else if(_0x4a389a[_0x4b21('0x4b')]===_0x4b21('0x4f')&&_0x4a389a['variableName']&&_0x4a389a['idField']){_0x5621da[_0x4a389a[_0x4b21('0x50')]]&&(_0x336c50[_0x4a389a[_0x4b21('0x4c')]]=_0x5621da[_0x4a389a[_0x4b21('0x50')]][_0x4b21('0x4e')]());}else if(_0x4a389a[_0x4b21('0x4b')]==='customVariable'&&_0x4a389a['Variable']&&_0x4a389a['Variable'][_0x4b21('0x51')]&&_0x4a389a[_0x4b21('0x4c')]){_0x5621da[_0x4a389a[_0x4b21('0x52')]['name'][_0x4b21('0x3b')]()]&&(_0x336c50[_0x4a389a[_0x4b21('0x4c')]]=_0x5621da[_0x4a389a[_0x4b21('0x52')][_0x4b21('0x51')][_0x4b21('0x3b')]()][_0x4b21('0x4e')]());}});}return _0x336c50;}function getConnection(_0x34b82d){var _0xfdd239=_0x34b82d[_0x4b21('0x53')][_0x4b21('0x54')](_0x34b82d[_0x4b21('0x55')]);var _0x2eca38=new jsforce[(_0x4b21('0x56'))]({'oauth2':{'loginUrl':_0x34b82d[_0x4b21('0x57')]||_0x4b21('0x58'),'clientId':_0x34b82d['clientId'],'clientSecret':_0x34b82d[_0x4b21('0x59')]}});return _0x2eca38[_0x4b21('0x5a')](_0x34b82d[_0x4b21('0x5b')],_0xfdd239)[_0x4b21('0x24')](function(){logger[_0x4b21('0x1d')](_0x4b21('0x5c'));return _0x2eca38;});}exports['queue']=function(_0x398be5,_0x421959,_0x4f1843,_0x491ac5,_0x3588a1,_0x32b41e){var _0xfd7ca,_0x4c2c0d,_0x4fc9ac,_0x94a3d;_0x32b41e[_0x4b21('0x5d')]=intUtil['stripTrailingSlash'](_0x32b41e[_0x4b21('0x5d')]);_0x32b41e[_0x4b21('0x57')]=intUtil[_0x4b21('0x5e')](_0x32b41e[_0x4b21('0x57')]);if(_0x3588a1&&_0x3588a1[_0x4b21('0x5f')]){logger['info'](_0x4b21('0x60'),'Recording\x20is\x20enabled!');_0x421959['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x32b41e[_0x4b21('0x5d')],_0x421959[_0x4b21('0x61')],md5(_0x421959[_0x4b21('0x61')]));}else{_0x421959[_0x4b21('0x62')]='';}return getConnection(_0x32b41e)[_0x4b21('0x24')](function(_0x37bc8c){_0x94a3d=_0x37bc8c;return getUser(_0x32b41e,_0x491ac5[_0x4b21('0x63')],_0x94a3d);})['then'](function(_0x5116e3){_0xfd7ca=_0x5116e3;return getEndUser(_0x32b41e,_0x4f1843,_0x421959[_0x4b21('0x64')],_0x421959[_0x4b21('0x65')],_0x94a3d);})[_0x4b21('0x24')](function(_0x537885){_0x4c2c0d=_0x537885;return getTicket(_0x32b41e,_0xfd7ca,_0x4c2c0d,_0x4f1843,_0x421959,_0x4f1843[_0x4b21('0x66')],_0x94a3d,_0x4b21('0x67'));})[_0x4b21('0x24')](function(_0x5bdd09){_0x4fc9ac=_0x5bdd09;logger[_0x4b21('0x1d')](_0x4b21('0x68'),_0x4fc9ac['id']);logger[_0x4b21('0x1d')]('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x4fc9ac['id'],_0x491ac5[_0x4b21('0x51')],_0x32b41e[_0x4b21('0x4b')]);switch(_0x32b41e[_0x4b21('0x4b')]){case _0x4b21('0x69'):emit(util[_0x4b21('0x41')]('user:%s',_0x491ac5['name']),_0x4b21('0x6a'),{'recordId':_0x4fc9ac['id']});break;case'newTab':emit(util[_0x4b21('0x41')](_0x4b21('0x6b'),_0x491ac5[_0x4b21('0x51')]),_0x4b21('0x6c'),{'uri':util[_0x4b21('0x41')](_0x4b21('0x6d'),_0x94a3d[_0x4b21('0x6e')],_0x4fc9ac['id'])});break;default:logger['error'](_0x4b21('0x6f'));}})[_0x4b21('0x70')](function(_0x44f7f1){logger[_0x4b21('0x71')]('[QUEUE]',_0x44f7f1);});};exports[_0x4b21('0x72')]=function(_0x37a80e,_0x565baa,_0x13ab43,_0x1bbea5,_0x435654,_0x403798,_0x221577){var _0xdc9964,_0x42350d,_0x375465,_0x5e3728;_0x403798['serverUrl']=intUtil['stripTrailingSlash'](_0x403798['serverUrl']);_0x403798[_0x4b21('0x57')]=intUtil[_0x4b21('0x5e')](_0x403798[_0x4b21('0x57')]);if(_0x221577&&_0x221577[_0x4b21('0x73')]&&_0x221577[_0x4b21('0x73')]!==_0x4b21('0x74')){logger[_0x4b21('0x1d')](_0x4b21('0x75'),'Recording\x20is\x20enabled!');_0x565baa['recordingURL']=util[_0x4b21('0x41')](_0x4b21('0x76'),_0x403798[_0x4b21('0x5d')],_0x565baa['uniqueid'],md5(_0x565baa['uniqueid']));}return getConnection(_0x403798)[_0x4b21('0x24')](function(_0x511500){_0x5e3728=_0x511500;return getUser(_0x403798,_0x1bbea5['email'],_0x5e3728);})[_0x4b21('0x24')](function(_0x1bd6f3){_0xdc9964=_0x1bd6f3;return getEndUser(_0x403798,_0x13ab43,_0x565baa['destcalleridname'],_0x565baa[_0x4b21('0x77')],_0x5e3728);})[_0x4b21('0x24')](function(_0x2f95e7){_0x42350d=_0x2f95e7;return getTicket(_0x403798,_0xdc9964,_0x42350d,_0x13ab43,_0x565baa,_0x13ab43[_0x4b21('0x66')],_0x5e3728,'outbound');})[_0x4b21('0x24')](function(_0x5d8235){_0x375465=_0x5d8235;logger[_0x4b21('0x1d')](_0x4b21('0x78'),_0x375465['id']);logger['info'](_0x4b21('0x79'),_0x375465['id'],_0x1bbea5['name'],_0x403798[_0x4b21('0x4b')]);switch(_0x403798['type']){case _0x4b21('0x69'):emit(util[_0x4b21('0x41')](_0x4b21('0x6b'),_0x1bbea5[_0x4b21('0x51')]),_0x4b21('0x6a'),{'recordId':_0x375465['id']});break;case _0x4b21('0x7a'):emit(util[_0x4b21('0x41')]('user:%s',_0x1bbea5[_0x4b21('0x51')]),_0x4b21('0x6c'),{'uri':util[_0x4b21('0x41')](_0x4b21('0x6d'),_0x5e3728[_0x4b21('0x6e')],_0x375465['id'])});break;default:logger['error'](_0x4b21('0x75'),_0x4b21('0x7b'));}})[_0x4b21('0x70')](function(_0x698919){logger['error'](_0x4b21('0x75'),_0x698919);});};exports[_0x4b21('0x7c')]=function(_0x3a54e3,_0xae56f3,_0xf8d852,_0x26080,_0x14a7af,_0x21a731){var _0xde8da,_0xb55fdd,_0x28846e,_0x5309e5;_0x21a731[_0x4b21('0x5d')]=intUtil[_0x4b21('0x5e')](_0x21a731[_0x4b21('0x5d')]);_0x21a731[_0x4b21('0x57')]=intUtil[_0x4b21('0x5e')](_0x21a731[_0x4b21('0x57')]);if(_0x14a7af&&_0x14a7af['monitor_format']){logger[_0x4b21('0x1d')]('['+_0xae56f3[_0x4b21('0x7d')][_0x4b21('0x7e')]()+']',_0x4b21('0x7f'));_0xae56f3[_0x4b21('0x62')]=util[_0x4b21('0x41')](_0x4b21('0x76'),_0x21a731[_0x4b21('0x5d')],_0xae56f3[_0x4b21('0x61')],md5(_0xae56f3['uniqueid']));}else{_0xae56f3[_0x4b21('0x62')]='';}return getConnection(_0x21a731)[_0x4b21('0x24')](function(_0x497aa6){_0x5309e5=_0x497aa6;if(!_['isNil'](_0x26080)){return getUser(_0x21a731,_0x26080['name'],_0x5309e5);}else{return getUser(_0x21a731,null,_0x5309e5);}})[_0x4b21('0x24')](function(_0x23aa57){_0xde8da=_0x23aa57;return getEndUser(_0x21a731,_0xf8d852,_0xae56f3['calleridname'],_0xae56f3[_0x4b21('0x65')],_0x5309e5);})[_0x4b21('0x24')](function(_0x3aaf5b){_0xb55fdd=_0x3aaf5b;return getTicket(_0x21a731,_0xde8da,_0xb55fdd,_0xf8d852,_0xae56f3,_0xf8d852[_0x4b21('0x66')],_0x5309e5);})[_0x4b21('0x24')](function(_0x5a84be){_0x28846e=_0x5a84be;logger[_0x4b21('0x1d')]('['+_0xae56f3[_0x4b21('0x7d')][_0x4b21('0x7e')]()+_0x4b21('0x80'),_0x28846e['id']);logger[_0x4b21('0x1d')]('['+_0xae56f3[_0x4b21('0x7d')][_0x4b21('0x7e')]()+_0x4b21('0x81'),_0x21a731[_0x4b21('0x4b')]);})[_0x4b21('0x70')](function(_0x23d6f8){logger[_0x4b21('0x71')]('['+_0xae56f3['lastevent'][_0x4b21('0x7e')]()+']',_0x23d6f8);});};
\ No newline at end of file
index 49ab982..9722b29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x486c=['%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','emit','trigger:browser:url','password','sysparm_limit=1','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','calleridnum','callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','then','result','length','adminId','sys_id','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','info','],\x20getUser\x20entity','true','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','sys_user?sysparm_query=phone%3D','],\x20createEndUser\x20crm','forEach','includes','string','picklist','nameField','customField','type','idField','toLowerCase','content','toString','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','POST','incident','getString','Subjects','Descriptions','Fields','ticketId','ticketNumber','number','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','push','all','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'];(function(_0x2f0f59,_0x5296c2){var _0x513e6c=function(_0xd473a7){while(--_0xd473a7){_0x2f0f59['push'](_0x2f0f59['shift']());}};_0x513e6c(++_0x5296c2);}(_0x486c,0xfb));var _0xc486=function(_0x2191d2,_0x30b11a){_0x2191d2=_0x2191d2-0x0;var _0x3ae8c9=_0x486c[_0x2191d2];return _0x3ae8c9;};'use strict';var _=require(_0xc486('0x0'));var Promise=require(_0xc486('0x1'));var rp=require(_0xc486('0x2'));var util=require(_0xc486('0x3'));var md5=require('md5');var Redis=require(_0xc486('0x4'));var intUtil=require(_0xc486('0x5'));var config=require(_0xc486('0x6'));var logger=require(_0xc486('0x7'))(_0xc486('0x8'));config[_0xc486('0x9')]=_[_0xc486('0xa')](config['redis'],{'host':_0xc486('0xb'),'port':0x18eb});var io=require(_0xc486('0xc'))(new Redis(config[_0xc486('0x9')]));function getAdminUser(_0x525bc9,_0x4fd5f7,_0x4facd1,_0x16ea68,_0x4ddfaf,_0x99f1bf){return new Promise(function(_0x5dd65c,_0x2467bc){var _0x40cf32={'method':_0xc486('0xd'),'uri':_0x16ea68+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x4ddfaf+'&'+_0x99f1bf,'auth':_0x4fd5f7,'json':!![]};return rp(_0x40cf32)[_0xc486('0xe')](function(_0x4c3de5){if(_0x4c3de5[_0xc486('0xf')][_0xc486('0x10')]>0x0){_0x4facd1[_0xc486('0x11')]=_0x4c3de5['result'][0x0][_0xc486('0x12')];}logger['info']('['+[_0x525bc9[_0xc486('0x13')]()]+_0xc486('0x14'),_0x4facd1);_0x5dd65c(_0x4facd1);})[_0xc486('0x15')](function(_0x2943a7){logger[_0xc486('0x16')]('['+[_0x525bc9[_0xc486('0x13')]()]+']',_0x2943a7[_0xc486('0x17')]);_0x2467bc(_0x2943a7[_0xc486('0x17')]);});});}function getUser(_0x3566ee,_0x4427ce,_0x3bfb9e,_0x1c99ef,_0xbb43bf){return function(_0x319451){logger['info']('['+[_0x3566ee['toUpperCase']()]+_0xc486('0x18'),_0x319451);return new Promise(function(_0x291f97,_0x558942){if(intUtil[_0xc486('0x19')](_0x319451[_0xc486('0x1a')])){var _0x446444={'method':'GET','uri':_0x3bfb9e+_0xc486('0x1b')+_0x319451[_0xc486('0x1a')]+'&'+_0x1c99ef+'&'+_0xbb43bf,'auth':_0x4427ce,'json':!![]};logger[_0xc486('0x1c')]('['+[_0x3566ee['toUpperCase']()]+'],\x20getUser\x20rp\x20obj',_0x446444);return rp(_0x446444)['then'](function(_0x17045d){logger['info']('['+[_0x3566ee[_0xc486('0x13')]()]+_0xc486('0x1d'),_0x17045d);if(_0x17045d[_0xc486('0xf')][_0xc486('0x10')]>0x0&&String(_0x17045d[_0xc486('0xf')][0x0]['active'])===_0xc486('0x1e')){_0x319451[_0xc486('0x1f')]=_0x17045d[_0xc486('0xf')][0x0][_0xc486('0x12')];}else{_0x319451[_0xc486('0x1f')]=_0x319451[_0xc486('0x11')];_0x319451['userEmail']=_0x319451[_0xc486('0x20')];}logger[_0xc486('0x1c')]('['+[_0x3566ee[_0xc486('0x13')]()]+_0xc486('0x21'),_0x319451);_0x291f97(_0x319451);})[_0xc486('0x15')](function(_0x34f0cc){logger['error']('['+[_0x3566ee[_0xc486('0x13')]()]+']',_0x34f0cc[_0xc486('0x17')]);_0x558942(_0x34f0cc[_0xc486('0x17')]);});}else{logger[_0xc486('0x1c')]('['+[_0x3566ee[_0xc486('0x13')]()]+_0xc486('0x22'));_0x319451[_0xc486('0x1f')]=_0x319451[_0xc486('0x11')];_0x319451[_0xc486('0x1a')]=_0x319451[_0xc486('0x20')];_0x291f97(_0x319451);}});};}function createEndUser(_0x3fcc49,_0x21262d,_0x3b8920,_0x3b56e0,_0x507e47){logger['info']('['+[_0x3fcc49[_0xc486('0x13')]()]+_0xc486('0x23'),_0x3b8920);return new Promise(function(_0x4fe6b0,_0x2187fb){var _0x417f85={'method':'POST','uri':_0x3b56e0+_0xc486('0x24')+_0x507e47,'body':{'user_name':_0x3b8920[_0xc486('0x25')],'roles':_0xc486('0x26'),'first_name':_0x3b8920[_0xc486('0x25')],'active':_0xc486('0x1e'),'date_format':_0xc486('0x27'),'phone':_0x3b8920[_0xc486('0x25')]},'auth':_0x21262d,'json':!![]};return rp(_0x417f85)[_0xc486('0xe')](function(_0x42258c){logger[_0xc486('0x1c')]('['+[_0x3fcc49[_0xc486('0x13')]()]+_0xc486('0x28'),_0x42258c[_0xc486('0xf')]);_0x3b8920[_0xc486('0x29')]=_0x42258c['result'][_0xc486('0x12')];_0x4fe6b0(_0x3b8920);})[_0xc486('0x15')](function(_0x145538){logger['error']('['+[_0x3fcc49[_0xc486('0x13')]()]+']',_0x145538[_0xc486('0x17')]);_0x2187fb(_0x145538[_0xc486('0x17')]);});});}function getEndUser(_0x56118f,_0x5ebb0f,_0x560a65,_0x2e00dc,_0x59c38e){return function(_0x4b0788){logger['info']('['+[_0x56118f[_0xc486('0x13')]()]+'],\x20getEndUser\x20input\x20crm',_0x4b0788);return new Promise(function(_0x15db28,_0x10baef){var _0x56726d={'method':_0xc486('0xd'),'uri':_0x560a65+_0xc486('0x2a')+_0x4b0788['endUserNumber']+'&'+_0x2e00dc+'&'+_0x59c38e,'auth':_0x5ebb0f,'json':!![]};return rp(_0x56726d)[_0xc486('0xe')](function(_0x38590d){if(_0x38590d['result'][_0xc486('0x10')]>0x0){_0x4b0788[_0xc486('0x29')]=_0x38590d[_0xc486('0xf')][0x0][_0xc486('0x12')];logger[_0xc486('0x1c')]('['+[_0x56118f[_0xc486('0x13')]()]+'],\x20getEndUser\x20crm',_0x4b0788);_0x15db28(_0x4b0788);}else{return createEndUser(_0x56118f,_0x5ebb0f,_0x4b0788,_0x560a65,_0x2e00dc)[_0xc486('0xe')](function(_0x16ede4){logger[_0xc486('0x1c')]('['+[_0x56118f[_0xc486('0x13')]()]+_0xc486('0x2b'),_0x16ede4);_0x15db28(_0x16ede4);});}})[_0xc486('0x15')](function(_0x33510e){logger[_0xc486('0x16')]('['+[_0x56118f[_0xc486('0x13')]()]+']',_0x33510e[_0xc486('0x17')]);_0x10baef(_0x33510e['message']);});});};}function getCustomFields(_0x39c0ad,_0x3f1afd){var _0x51c7ec={};if(_0x39c0ad[_0xc486('0x10')]>0x0){_[_0xc486('0x2c')](_0x39c0ad,function(_0x2abe50){if(_[_0xc486('0x2d')]([_0xc486('0x2e'),_0xc486('0x2f')],_0x2abe50['type'])&&_0x2abe50[_0xc486('0x30')]&&!_0x2abe50[_0xc486('0x31')]){_0x51c7ec[_0x2abe50[_0xc486('0x30')]['toLowerCase']()]=_0x2abe50['content']['toString']();}else if(_[_0xc486('0x2d')](['string',_0xc486('0x2f')],_0x2abe50[_0xc486('0x32')])&&_0x2abe50[_0xc486('0x33')]&&_0x2abe50[_0xc486('0x31')]){_0x51c7ec[_0x2abe50['idField'][_0xc486('0x34')]()]=_0x2abe50[_0xc486('0x35')][_0xc486('0x36')]();}else if(_0x2abe50['type']===_0xc486('0x37')&&_0x2abe50[_0xc486('0x38')]&&_0x2abe50[_0xc486('0x33')]&&_0x2abe50[_0xc486('0x31')]){_0x51c7ec[_0x2abe50[_0xc486('0x33')]['toLowerCase']()]=_0x3f1afd[_0x2abe50[_0xc486('0x38')]][_0xc486('0x36')]();}else if(_0x2abe50[_0xc486('0x32')]===_0xc486('0x39')&&_0x2abe50[_0xc486('0x3a')]&&_0x2abe50[_0xc486('0x3a')][_0xc486('0x3b')]&&_0x2abe50[_0xc486('0x33')]&&_0x2abe50[_0xc486('0x31')]){_0x51c7ec[_0x2abe50['idField'][_0xc486('0x34')]()]=_0x3f1afd[_0x2abe50[_0xc486('0x3a')][_0xc486('0x3b')][_0xc486('0x34')]()][_0xc486('0x36')]();}});}return _0x51c7ec;}function getTicket(_0x3fbf45,_0x12a0e8,_0x2522a3,_0x34e3be,_0x497f73,_0x15edeb){return function(_0x506626){logger[_0xc486('0x1c')]('['+[_0x3fbf45[_0xc486('0x13')]()]+_0xc486('0x3c'),_0x506626);return new Promise(function(_0x22803d,_0x2c64e0){var _0x37a94d=_0x3fbf45[_0xc486('0x34')]()===_0xc486('0x3d')?_0x506626[_0xc486('0x1f')]:_0x506626[_0xc486('0x29')];var _0x244b9f={'method':_0xc486('0x3e'),'uri':_0x2522a3+_0xc486('0x3f')+'?'+_0x15edeb,'body':Object['assign']({},{'active':_0xc486('0x1e'),'caller_id':_0x37a94d,'assigned_to':_0x506626['userId'],'short_description':intUtil[_0xc486('0x40')](_0x34e3be[_0xc486('0x41')],_0x497f73,'\x20'),'description':intUtil['getString'](_0x34e3be[_0xc486('0x42')],_0x497f73,'\x0a')},getCustomFields(_0x34e3be[_0xc486('0x43')],_0x497f73)),'auth':_0x12a0e8,'json':!![]};return rp(_0x244b9f)[_0xc486('0xe')](function(_0x23f114){logger[_0xc486('0x1c')]('['+[_0x3fbf45[_0xc486('0x13')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x23f114['result']);_0x506626[_0xc486('0x44')]=_0x23f114[_0xc486('0xf')]['sys_id'];_0x506626[_0xc486('0x45')]=_0x23f114[_0xc486('0xf')][_0xc486('0x46')];logger[_0xc486('0x1c')]('['+[_0x3fbf45[_0xc486('0x13')]()]+']\x20getTicket\x20crm',_0x506626);_0x22803d(_0x506626);})[_0xc486('0x15')](function(_0x5b7305){logger[_0xc486('0x16')]('['+[_0x3fbf45['toUpperCase']()]+']',_0x5b7305[_0xc486('0x17')]);_0x2c64e0(_0x5b7305[_0xc486('0x17')]);});});};}function createRemoteTag(_0x49b80a,_0x4d07c7,_0x32054d,_0x8da982){return new Promise(function(_0x3e0b41,_0x57bad5){var _0x317b8d={'method':_0xc486('0x3e'),'uri':_0x32054d+_0xc486('0x47')+'?'+_0x8da982,'body':{'short_description':_0x49b80a,'global':!![],'active':!![],'name':_0x49b80a},'auth':_0x4d07c7,'json':!![]};return rp(_0x317b8d)[_0xc486('0xe')](function(_0x465632){var _0x1dee0e=_0x465632[_0xc486('0xf')]['sys_id'];_0x3e0b41(_0x1dee0e);});});}function getRemoteTag(_0x29485e,_0x3114c2,_0x11588a,_0x1add7e,_0x3b17ec){return new Promise(function(_0x259114,_0x502a8f){var _0x12a986={'method':_0xc486('0xd'),'uri':_0x11588a+_0xc486('0x47')+_0xc486('0x48')+_0x29485e+'&'+_0x1add7e,'auth':_0x3114c2,'json':!![]};return rp(_0x12a986)[_0xc486('0xe')](function(_0x994cd3){if(_0x994cd3['result'][_0xc486('0x10')]>0x0){var _0x1dbe5a=_0x994cd3[_0xc486('0xf')][0x0][_0xc486('0x12')];_0x259114(_0x1dbe5a);}else{return createRemoteTag(_0x29485e,_0x3114c2,_0x11588a,_0x1add7e)[_0xc486('0xe')](function(_0x2233c5){_0x259114(_0x2233c5);});}});});}function assignTagToIncident(_0x544dad,_0x18de09,_0x2ee2f4,_0x539d51,_0x2f93e8){return new Promise(function(_0x41c192,_0x381d68){var _0x516bda={'method':_0xc486('0x3e'),'uri':_0x2ee2f4+_0xc486('0x49')+'?'+_0x2f93e8,'body':{'label':_0x544dad,'table':_0xc486('0x3f'),'id_type':_0xc486('0x4a'),'table_key':_0x539d51['ticketId'],'title':_0xc486('0x4b')+_0x539d51['ticketNumber'],'id_display':_0x539d51[_0xc486('0x45')]},'auth':_0x18de09,'json':!![]};return rp(_0x516bda)[_0xc486('0xe')](function(_0x31bb53){_0x41c192();})[_0xc486('0x15')](function(){_0x41c192();});});}function manageTags(_0xc23acf,_0x323d4c,_0x491cb0,_0x3692ca,_0x302305,_0x5d9a53,_0x301644){return new Promise(function(_0x1eb9a6,_0x173ad0){var _0x39cbfa=[];_0x323d4c['forEach'](function(_0xab7aee){_0x39cbfa[_0xc486('0x4c')](getRemoteTag(_0xab7aee,_0x491cb0,_0x3692ca,_0x5d9a53,_0x301644));});return Promise[_0xc486('0x4d')](_0x39cbfa)[_0xc486('0xe')](function(_0x2af650){if(_0x2af650['length']){logger['info']('['+[_0xc23acf[_0xc486('0x13')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x2af650);var _0x4f4994=[];_0x2af650[_0xc486('0x2c')](function(_0x2bec50){_0x4f4994[_0xc486('0x4c')](assignTagToIncident(_0x2bec50,_0x491cb0,_0x3692ca,_0x302305,_0x5d9a53));});return Promise[_0xc486('0x4d')](_0x4f4994)[_0xc486('0xe')](function(){_0x1eb9a6();})[_0xc486('0x15')](function(){_0x1eb9a6();});}else{_0x1eb9a6();}});});}function getTags(_0x5c3b14,_0x3d28d1,_0x30f857,_0xd76c9d,_0x191a58,_0x55c77d){return function(_0x276a1b){return new Promise(function(_0x457473,_0x57da20){var _0x35c8da=[];var _0xbc2d28=_0xd76c9d[_0xc486('0x4e')];if(_0xbc2d28&&_0xbc2d28['length']>0x0){_0x35c8da=_[_0xc486('0x4f')](_0xbc2d28,'name');}if(_0x35c8da[_0xc486('0x10')]>0x0){return manageTags(_0x5c3b14,_0x35c8da,_0x3d28d1,_0x30f857,_0x276a1b,_0x191a58,_0x55c77d)[_0xc486('0xe')](function(){_0x457473(_0x276a1b);});}else{_0x457473(_0x276a1b);}});};}function emit(_0x4ff373,_0x2d295e,_0x50041e){var _0x86a601=_0xc486('0x50')+_0xc486('0x51')+_0xc486('0x52')+_0xc486('0x53');var _0x9ee29d={'uri':_0x4ff373+_0xc486('0x54')+_0x50041e+_0x86a601};io['to'](util[_0xc486('0x55')]('user:%s',_0x2d295e))[_0xc486('0x56')](_0xc486('0x57'),_0x9ee29d);}exports['cs']=function(_0x5f25f8,_0x4c9b1e,_0x32fe19,_0xf9cc65,_0x2b9139,_0x2f1ff7,_0xd093,_0x4c018a){var _0x5f3008={};var _0x170391={'user':_0x2f1ff7['username'],'pass':_0x2f1ff7[_0xc486('0x58')]};var _0x38368c=_0xc486('0x59');var _0xa1d6bc='sysparm_display_value=true';_0x2f1ff7[_0xc486('0x5a')]=intUtil[_0xc486('0x5b')](_0x2f1ff7[_0xc486('0x5a')]);_0x2f1ff7[_0xc486('0x5c')]=intUtil[_0xc486('0x5b')](_0x2f1ff7[_0xc486('0x5c')]);var _0x18256e=util[_0xc486('0x55')](_0xc486('0x5d'),_0x2f1ff7[_0xc486('0x5a')]);_0x5f3008[_0xc486('0x1a')]=!_[_0xc486('0x5e')](_0xf9cc65)?_0xf9cc65['email']:null;_0x5f3008['adminEmail']=_0x2f1ff7[_0xc486('0x5f')];_0x5f3008[_0xc486('0x25')]=_0x4c018a['toLowerCase']()===_0xc486('0x3d')?_0x4c9b1e['destcalleridnum']:_0x4c9b1e[_0xc486('0x60')];_0x5f3008[_0xc486('0x61')]=_0x4c018a==='queue'||_0x4c018a===_0xc486('0x62')?_0xc486('0x63'):_0xc486('0x3d');var _0x11c0c2=util[_0xc486('0x55')](_0xc486('0x64'),_0x2f1ff7[_0xc486('0x5c')],_0x4c9b1e[_0xc486('0x65')],md5(_0x4c9b1e[_0xc486('0x65')]));if(_0x2b9139&&_0x2b9139[_0xc486('0x66')]){logger[_0xc486('0x1c')](_0xc486('0x67'),_0xc486('0x68'));_0x4c9b1e['recordingURL']=_0x11c0c2;}else if(_0xd093&&_0xd093['recordingFormat']&&_0xd093['recordingFormat']!==_0xc486('0x69')){logger[_0xc486('0x1c')]('[OUTBOUND]',_0xc486('0x68'));_0x4c9b1e[_0xc486('0x6a')]=_0x11c0c2;}else{_0x4c9b1e[_0xc486('0x6a')]='';}return getAdminUser(_0x4c018a,_0x170391,_0x5f3008,_0x18256e,_0xa1d6bc,_0x38368c)[_0xc486('0xe')](getUser(_0x4c018a,_0x170391,_0x18256e,_0xa1d6bc,_0x38368c))['then'](getEndUser(_0x4c018a,_0x170391,_0x18256e,_0xa1d6bc,_0x38368c))['then'](getTicket(_0x4c018a,_0x170391,_0x18256e,_0x32fe19,_0x4c9b1e,_0xa1d6bc))[_0xc486('0xe')](function(_0x8d8878){logger[_0xc486('0x1c')](util['format'](_0xc486('0x6b'),_0x8d8878[_0xc486('0x44')]));logger[_0xc486('0x1c')](util['format']('call\x20direction:\x20%s',_0x4c018a));if(_0x4c018a!==_0xc486('0x62')){logger[_0xc486('0x1c')]('['+[_0x4c018a[_0xc486('0x13')]()]+']',_0xc486('0x6c'));emit(_0x2f1ff7[_0xc486('0x5a')],_0xf9cc65['name'],_0x8d8878['ticketId']);}})[_0xc486('0x15')](function(_0x37fc34){logger[_0xc486('0x16')]('['+[_0x4c018a[_0xc486('0x13')]()]+_0xc486('0x6d'),util[_0xc486('0x6e')](_0x37fc34,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xb444=['message','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','string','nameField','toLowerCase','content','toString','includes','picklist','type','idField','customField','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','assign','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','label_entry','Incident','Incident\x20-\x20','all','push','map','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','%s/api/now/table/','isNil','email','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','inspect','lodash','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','defaults','redis','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','length','result','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','true','userId','adminId','adminEmail'];(function(_0x3dce56,_0x5e1f81){var _0x30a287=function(_0xbc21a9){while(--_0xbc21a9){_0x3dce56['push'](_0x3dce56['shift']());}};_0x30a287(++_0x5e1f81);}(_0xb444,0x18e));var _0x4b44=function(_0x350611,_0x37d124){_0x350611=_0x350611-0x0;var _0x51b949=_0xb444[_0x350611];return _0x51b949;};'use strict';var _=require(_0x4b44('0x0'));var Promise=require(_0x4b44('0x1'));var rp=require('request-promise');var util=require(_0x4b44('0x2'));var md5=require('md5');var Redis=require(_0x4b44('0x3'));var intUtil=require(_0x4b44('0x4'));var config=require(_0x4b44('0x5'));var logger=require(_0x4b44('0x6'))('servicenow');config['redis']=_[_0x4b44('0x7')](config[_0x4b44('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x4b44('0x9'))(new Redis(config[_0x4b44('0x8')]));function getAdminUser(_0x466dd8,_0x13ee09,_0x4a6333,_0x31a53b,_0x1d2126,_0x5dc095){return new Promise(function(_0x2e3085,_0x1034b7){var _0x301f6f={'method':_0x4b44('0xa'),'uri':_0x31a53b+_0x4b44('0xb')+'&'+_0x1d2126+'&'+_0x5dc095,'auth':_0x13ee09,'json':!![]};return rp(_0x301f6f)[_0x4b44('0xc')](function(_0x5abc8a){if(_0x5abc8a['result'][_0x4b44('0xd')]>0x0){_0x4a6333['adminId']=_0x5abc8a[_0x4b44('0xe')][0x0][_0x4b44('0xf')];}logger[_0x4b44('0x10')]('['+[_0x466dd8[_0x4b44('0x11')]()]+_0x4b44('0x12'),_0x4a6333);_0x2e3085(_0x4a6333);})[_0x4b44('0x13')](function(_0x18e4d7){logger[_0x4b44('0x14')]('['+[_0x466dd8['toUpperCase']()]+']',_0x18e4d7['message']);_0x1034b7(_0x18e4d7['message']);});});}function getUser(_0x568f51,_0x45f58d,_0x27658e,_0x2048ff,_0x1eb5d0){return function(_0x195113){logger['info']('['+[_0x568f51[_0x4b44('0x11')]()]+_0x4b44('0x15'),_0x195113);return new Promise(function(_0x2eafe7,_0x33ca37){if(intUtil[_0x4b44('0x16')](_0x195113[_0x4b44('0x17')])){var _0x481514={'method':'GET','uri':_0x27658e+_0x4b44('0x18')+_0x195113[_0x4b44('0x17')]+'&'+_0x2048ff+'&'+_0x1eb5d0,'auth':_0x45f58d,'json':!![]};logger['info']('['+[_0x568f51[_0x4b44('0x11')]()]+_0x4b44('0x19'),_0x481514);return rp(_0x481514)[_0x4b44('0xc')](function(_0x33ee78){logger[_0x4b44('0x10')]('['+[_0x568f51['toUpperCase']()]+'],\x20getUser\x20entity',_0x33ee78);if(_0x33ee78['result'][_0x4b44('0xd')]>0x0&&String(_0x33ee78[_0x4b44('0xe')][0x0]['active'])===_0x4b44('0x1a')){_0x195113[_0x4b44('0x1b')]=_0x33ee78[_0x4b44('0xe')][0x0][_0x4b44('0xf')];}else{_0x195113[_0x4b44('0x1b')]=_0x195113[_0x4b44('0x1c')];_0x195113[_0x4b44('0x17')]=_0x195113[_0x4b44('0x1d')];}logger['info']('['+[_0x568f51[_0x4b44('0x11')]()]+'],\x20getUser\x20crm',_0x195113);_0x2eafe7(_0x195113);})[_0x4b44('0x13')](function(_0x1c9668){logger[_0x4b44('0x14')]('['+[_0x568f51[_0x4b44('0x11')]()]+']',_0x1c9668[_0x4b44('0x1e')]);_0x33ca37(_0x1c9668[_0x4b44('0x1e')]);});}else{logger[_0x4b44('0x10')]('['+[_0x568f51[_0x4b44('0x11')]()]+']\x20using\x20admin\x20profile');_0x195113[_0x4b44('0x1b')]=_0x195113['adminId'];_0x195113[_0x4b44('0x17')]=_0x195113['adminEmail'];_0x2eafe7(_0x195113);}});};}function createEndUser(_0x1de8a1,_0x3b6ac4,_0x5d9ccf,_0x503b82,_0x5e8830){logger['info']('['+[_0x1de8a1[_0x4b44('0x11')]()]+_0x4b44('0x1f'),_0x5d9ccf);return new Promise(function(_0x539ca8,_0x20756f){var _0x172f34={'method':_0x4b44('0x20'),'uri':_0x503b82+_0x4b44('0x21')+_0x5e8830,'body':{'user_name':_0x5d9ccf[_0x4b44('0x22')],'roles':'user','first_name':_0x5d9ccf[_0x4b44('0x22')],'active':'true','date_format':'System','phone':_0x5d9ccf[_0x4b44('0x22')]},'auth':_0x3b6ac4,'json':!![]};return rp(_0x172f34)['then'](function(_0x380817){logger[_0x4b44('0x10')]('['+[_0x1de8a1[_0x4b44('0x11')]()]+_0x4b44('0x23'),_0x380817[_0x4b44('0xe')]);_0x5d9ccf[_0x4b44('0x24')]=_0x380817[_0x4b44('0xe')]['sys_id'];_0x539ca8(_0x5d9ccf);})[_0x4b44('0x13')](function(_0x54dce3){logger[_0x4b44('0x14')]('['+[_0x1de8a1[_0x4b44('0x11')]()]+']',_0x54dce3[_0x4b44('0x1e')]);_0x20756f(_0x54dce3['message']);});});}function getEndUser(_0x1a6123,_0x5bb2d3,_0x411037,_0xef7efb,_0x4d3f9c){return function(_0x4e289d){logger['info']('['+[_0x1a6123[_0x4b44('0x11')]()]+_0x4b44('0x25'),_0x4e289d);return new Promise(function(_0x1d6164,_0x369a9b){var _0xb0dbd4={'method':'GET','uri':_0x411037+'sys_user?sysparm_query=phone%3D'+_0x4e289d[_0x4b44('0x22')]+'&'+_0xef7efb+'&'+_0x4d3f9c,'auth':_0x5bb2d3,'json':!![]};return rp(_0xb0dbd4)[_0x4b44('0xc')](function(_0xf4b7c){if(_0xf4b7c['result'][_0x4b44('0xd')]>0x0){_0x4e289d[_0x4b44('0x24')]=_0xf4b7c[_0x4b44('0xe')][0x0][_0x4b44('0xf')];logger[_0x4b44('0x10')]('['+[_0x1a6123[_0x4b44('0x11')]()]+_0x4b44('0x26'),_0x4e289d);_0x1d6164(_0x4e289d);}else{return createEndUser(_0x1a6123,_0x5bb2d3,_0x4e289d,_0x411037,_0xef7efb)[_0x4b44('0xc')](function(_0x4d2c0f){logger['info']('['+[_0x1a6123['toUpperCase']()]+_0x4b44('0x27'),_0x4d2c0f);_0x1d6164(_0x4d2c0f);});}})[_0x4b44('0x13')](function(_0x44f871){logger[_0x4b44('0x14')]('['+[_0x1a6123[_0x4b44('0x11')]()]+']',_0x44f871[_0x4b44('0x1e')]);_0x369a9b(_0x44f871[_0x4b44('0x1e')]);});});};}function getCustomFields(_0x5dcdac,_0x510041){var _0x4e8f97={};if(_0x5dcdac[_0x4b44('0xd')]>0x0){_[_0x4b44('0x28')](_0x5dcdac,function(_0x58de68){if(_['includes']([_0x4b44('0x29'),'picklist'],_0x58de68['type'])&&_0x58de68[_0x4b44('0x2a')]&&!_0x58de68['customField']){_0x4e8f97[_0x58de68[_0x4b44('0x2a')][_0x4b44('0x2b')]()]=_0x58de68[_0x4b44('0x2c')][_0x4b44('0x2d')]();}else if(_[_0x4b44('0x2e')]([_0x4b44('0x29'),_0x4b44('0x2f')],_0x58de68[_0x4b44('0x30')])&&_0x58de68[_0x4b44('0x31')]&&_0x58de68[_0x4b44('0x32')]){_0x4e8f97[_0x58de68[_0x4b44('0x31')][_0x4b44('0x2b')]()]=_0x58de68[_0x4b44('0x2c')]['toString']();}else if(_0x58de68[_0x4b44('0x30')]===_0x4b44('0x33')&&_0x58de68[_0x4b44('0x34')]&&_0x58de68[_0x4b44('0x31')]&&_0x58de68[_0x4b44('0x32')]){_0x4e8f97[_0x58de68['idField'][_0x4b44('0x2b')]()]=_0x510041[_0x58de68[_0x4b44('0x34')]][_0x4b44('0x2d')]();}else if(_0x58de68[_0x4b44('0x30')]===_0x4b44('0x35')&&_0x58de68[_0x4b44('0x36')]&&_0x58de68[_0x4b44('0x36')][_0x4b44('0x37')]&&_0x58de68[_0x4b44('0x31')]&&_0x58de68[_0x4b44('0x32')]){_0x4e8f97[_0x58de68[_0x4b44('0x31')]['toLowerCase']()]=_0x510041[_0x58de68[_0x4b44('0x36')][_0x4b44('0x37')][_0x4b44('0x2b')]()][_0x4b44('0x2d')]();}});}return _0x4e8f97;}function getTicket(_0x2475d0,_0x2ed3ad,_0x45d77d,_0x3dec38,_0x1c807a,_0xcbd31e){return function(_0x5d012b){logger[_0x4b44('0x10')]('['+[_0x2475d0[_0x4b44('0x11')]()]+_0x4b44('0x38'),_0x5d012b);return new Promise(function(_0x553e04,_0x350c10){var _0x5c5d5a=_0x2475d0['toLowerCase']()==='outbound'?_0x5d012b['userId']:_0x5d012b[_0x4b44('0x24')];var _0x5df640={'method':_0x4b44('0x20'),'uri':_0x45d77d+'incident'+'?'+_0xcbd31e,'body':Object[_0x4b44('0x39')]({},{'active':_0x4b44('0x1a'),'caller_id':_0x5c5d5a,'assigned_to':_0x5d012b[_0x4b44('0x1b')],'short_description':intUtil[_0x4b44('0x3a')](_0x3dec38['Subjects'],_0x1c807a,'\x20'),'description':intUtil[_0x4b44('0x3a')](_0x3dec38[_0x4b44('0x3b')],_0x1c807a,'\x0a')},getCustomFields(_0x3dec38[_0x4b44('0x3c')],_0x1c807a)),'auth':_0x2ed3ad,'json':!![]};return rp(_0x5df640)['then'](function(_0x3a5ded){logger[_0x4b44('0x10')]('['+[_0x2475d0[_0x4b44('0x11')]()]+_0x4b44('0x3d'),_0x3a5ded['result']);_0x5d012b[_0x4b44('0x3e')]=_0x3a5ded['result'][_0x4b44('0xf')];_0x5d012b[_0x4b44('0x3f')]=_0x3a5ded[_0x4b44('0xe')][_0x4b44('0x40')];logger['info']('['+[_0x2475d0[_0x4b44('0x11')]()]+_0x4b44('0x41'),_0x5d012b);_0x553e04(_0x5d012b);})[_0x4b44('0x13')](function(_0x4a4e2d){logger[_0x4b44('0x14')]('['+[_0x2475d0['toUpperCase']()]+']',_0x4a4e2d[_0x4b44('0x1e')]);_0x350c10(_0x4a4e2d['message']);});});};}function createRemoteTag(_0x4a3a21,_0x5e620c,_0x11cb58,_0x1996db){return new Promise(function(_0x44be2c,_0x4a6231){var _0x4ceaaf={'method':_0x4b44('0x20'),'uri':_0x11cb58+_0x4b44('0x42')+'?'+_0x1996db,'body':{'short_description':_0x4a3a21,'global':!![],'active':!![],'name':_0x4a3a21},'auth':_0x5e620c,'json':!![]};return rp(_0x4ceaaf)['then'](function(_0x1bdaed){var _0x1430bc=_0x1bdaed[_0x4b44('0xe')][_0x4b44('0xf')];_0x44be2c(_0x1430bc);});});}function getRemoteTag(_0x56cc30,_0x4dc465,_0x314f36,_0x4eac77,_0x550962){return new Promise(function(_0x3078ec,_0x35adfa){var _0x279a7f={'method':_0x4b44('0xa'),'uri':_0x314f36+_0x4b44('0x42')+'?sysparm_query=name%3D'+_0x56cc30+'&'+_0x4eac77,'auth':_0x4dc465,'json':!![]};return rp(_0x279a7f)[_0x4b44('0xc')](function(_0x3dd3ce){if(_0x3dd3ce[_0x4b44('0xe')][_0x4b44('0xd')]>0x0){var _0x2b4e09=_0x3dd3ce['result'][0x0][_0x4b44('0xf')];_0x3078ec(_0x2b4e09);}else{return createRemoteTag(_0x56cc30,_0x4dc465,_0x314f36,_0x4eac77)['then'](function(_0x3fe7f0){_0x3078ec(_0x3fe7f0);});}});});}function assignTagToIncident(_0x358752,_0x19afae,_0x32ab52,_0x5770c3,_0x792e5d){return new Promise(function(_0x2f30e9,_0x46d6b7){var _0x371a28={'method':_0x4b44('0x20'),'uri':_0x32ab52+_0x4b44('0x43')+'?'+_0x792e5d,'body':{'label':_0x358752,'table':'incident','id_type':_0x4b44('0x44'),'table_key':_0x5770c3[_0x4b44('0x3e')],'title':_0x4b44('0x45')+_0x5770c3[_0x4b44('0x3f')],'id_display':_0x5770c3['ticketNumber']},'auth':_0x19afae,'json':!![]};return rp(_0x371a28)[_0x4b44('0xc')](function(_0x2df729){_0x2f30e9();})['catch'](function(){_0x2f30e9();});});}function manageTags(_0x5ea13b,_0x2fcad2,_0x4dcc88,_0xa69b54,_0x1b0c78,_0x572845,_0x4e157a){return new Promise(function(_0x3b2ab1,_0x1f34e2){var _0x20a83e=[];_0x2fcad2['forEach'](function(_0x5db8d0){_0x20a83e['push'](getRemoteTag(_0x5db8d0,_0x4dcc88,_0xa69b54,_0x572845,_0x4e157a));});return Promise[_0x4b44('0x46')](_0x20a83e)['then'](function(_0x312a65){if(_0x312a65[_0x4b44('0xd')]){logger['info']('['+[_0x5ea13b[_0x4b44('0x11')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x312a65);var _0x31e14a=[];_0x312a65[_0x4b44('0x28')](function(_0x490e0e){_0x31e14a[_0x4b44('0x47')](assignTagToIncident(_0x490e0e,_0x4dcc88,_0xa69b54,_0x1b0c78,_0x572845));});return Promise[_0x4b44('0x46')](_0x31e14a)[_0x4b44('0xc')](function(){_0x3b2ab1();})[_0x4b44('0x13')](function(){_0x3b2ab1();});}else{_0x3b2ab1();}});});}function getTags(_0x1a545b,_0x3971b6,_0x5898e8,_0x52dd9f,_0x41d0f0,_0x5ae581){return function(_0x26d2ac){return new Promise(function(_0x10fd85,_0xe33ae9){var _0x1342bf=[];var _0x4b0737=_0x52dd9f['Tags'];if(_0x4b0737&&_0x4b0737[_0x4b44('0xd')]>0x0){_0x1342bf=_[_0x4b44('0x48')](_0x4b0737,_0x4b44('0x37'));}if(_0x1342bf[_0x4b44('0xd')]>0x0){return manageTags(_0x1a545b,_0x1342bf,_0x3971b6,_0x5898e8,_0x26d2ac,_0x41d0f0,_0x5ae581)['then'](function(){_0x10fd85(_0x26d2ac);});}else{_0x10fd85(_0x26d2ac);}});};}function emit(_0x5e89a8,_0x148e4d,_0x4b8ccb){var _0xc0ed33='%26sysparm_record_target%3Dincident'+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0x4b44('0x49')+'%255EORDERBYDESCnumber';var _0x4a5431={'uri':_0x5e89a8+_0x4b44('0x4a')+_0x4b8ccb+_0xc0ed33};io['to'](util[_0x4b44('0x4b')](_0x4b44('0x4c'),_0x148e4d))['emit'](_0x4b44('0x4d'),_0x4a5431);}exports['cs']=function(_0x3226ca,_0x57685d,_0x5e34e7,_0x2d0f8e,_0x22d581,_0xa1c551,_0x47228a,_0x3b17f4){var _0x3ac795={};var _0x2b1846={'user':_0xa1c551[_0x4b44('0x4e')],'pass':_0xa1c551[_0x4b44('0x4f')]};var _0x485012=_0x4b44('0x50');var _0x24cc8d=_0x4b44('0x51');_0xa1c551[_0x4b44('0x52')]=intUtil['stripTrailingSlash'](_0xa1c551['remoteUri']);_0xa1c551[_0x4b44('0x53')]=intUtil[_0x4b44('0x54')](_0xa1c551[_0x4b44('0x53')]);var _0x250a78=util[_0x4b44('0x4b')](_0x4b44('0x55'),_0xa1c551[_0x4b44('0x52')]);_0x3ac795[_0x4b44('0x17')]=!_[_0x4b44('0x56')](_0x2d0f8e)?_0x2d0f8e['email']:null;_0x3ac795[_0x4b44('0x1d')]=_0xa1c551[_0x4b44('0x57')];_0x3ac795[_0x4b44('0x22')]=_0x3b17f4[_0x4b44('0x2b')]()===_0x4b44('0x58')?_0x57685d[_0x4b44('0x59')]:_0x57685d[_0x4b44('0x5a')];_0x3ac795[_0x4b44('0x5b')]=_0x3b17f4===_0x4b44('0x5c')||_0x3b17f4===_0x4b44('0x5d')?_0x4b44('0x5c'):'outbound';var _0x4e2c7e=util[_0x4b44('0x4b')](_0x4b44('0x5e'),_0xa1c551[_0x4b44('0x53')],_0x57685d[_0x4b44('0x5f')],md5(_0x57685d['uniqueid']));if(_0x22d581&&_0x22d581[_0x4b44('0x60')]){logger['info'](_0x4b44('0x61'),_0x4b44('0x62'));_0x57685d[_0x4b44('0x63')]=_0x4e2c7e;}else if(_0x47228a&&_0x47228a[_0x4b44('0x64')]&&_0x47228a[_0x4b44('0x64')]!==_0x4b44('0x65')){logger[_0x4b44('0x10')](_0x4b44('0x66'),_0x4b44('0x62'));_0x57685d[_0x4b44('0x63')]=_0x4e2c7e;}else{_0x57685d[_0x4b44('0x63')]='';}return getAdminUser(_0x3b17f4,_0x2b1846,_0x3ac795,_0x250a78,_0x24cc8d,_0x485012)[_0x4b44('0xc')](getUser(_0x3b17f4,_0x2b1846,_0x250a78,_0x24cc8d,_0x485012))[_0x4b44('0xc')](getEndUser(_0x3b17f4,_0x2b1846,_0x250a78,_0x24cc8d,_0x485012))[_0x4b44('0xc')](getTicket(_0x3b17f4,_0x2b1846,_0x250a78,_0x5e34e7,_0x57685d,_0x24cc8d))[_0x4b44('0xc')](function(_0x3ff15d){logger[_0x4b44('0x10')](util[_0x4b44('0x4b')](_0x4b44('0x67'),_0x3ff15d[_0x4b44('0x3e')]));logger[_0x4b44('0x10')](util[_0x4b44('0x4b')](_0x4b44('0x68'),_0x3b17f4));if(_0x3b17f4!=='unmanaged'){logger[_0x4b44('0x10')]('['+[_0x3b17f4['toUpperCase']()]+']',_0x4b44('0x69'));emit(_0xa1c551[_0x4b44('0x52')],_0x2d0f8e[_0x4b44('0x37')],_0x3ff15d[_0x4b44('0x3e')]);}})[_0x4b44('0x13')](function(_0x10292d){logger[_0x4b44('0x14')]('['+[_0x3b17f4[_0x4b44('0x11')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util[_0x4b44('0x6a')](_0x10292d,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 241cdbb..504f8d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f24=['outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','contacts','user:%s','error','lastevent','toUpperCase','calleridname','request-promise','bluebird','md5','util','ioredis','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','created_by','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','direction','length','variableName','push','set_entry','JSON','stringify','Calls','format','Basic\x20%s','toString','get_server_info','isNil','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','value','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','phone_home','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Enduser\x20created.','debug','[HTTP]','merge','map','forEach','type','string','nameField','customField','toLowerCase','content','idField','custom_fields','variable','customVariable','Variable','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch'];(function(_0x15af0f,_0x5454ce){var _0x2bd1cb=function(_0x593818){while(--_0x593818){_0x15af0f['push'](_0x15af0f['shift']());}};_0x2bd1cb(++_0x5454ce);}(_0x9f24,0x17b));var _0x49f2=function(_0xa6cc5c,_0x239c99){_0xa6cc5c=_0xa6cc5c-0x0;var _0x44803d=_0x9f24[_0xa6cc5c];return _0x44803d;};'use strict';var _=require('lodash');var rp=require(_0x49f2('0x0'));var BPromise=require(_0x49f2('0x1'));var md5=require(_0x49f2('0x2'));var util=require(_0x49f2('0x3'));var Redis=require(_0x49f2('0x4'));var intUtil=require('./util');var config=require(_0x49f2('0x5'));var logger=require(_0x49f2('0x6'))(_0x49f2('0x7'));config[_0x49f2('0x8')]=_[_0x49f2('0x9')](config[_0x49f2('0x8')],{'host':_0x49f2('0xa'),'port':0x18eb});var io=require(_0x49f2('0xb'))(new Redis(config[_0x49f2('0x8')]));var def={'method':_0x49f2('0xc'),'json':!![]};function emit(_0x5d786c,_0x340ee2,_0x3ad45c){io['to'](_0x5d786c)[_0x49f2('0xd')](_0x340ee2,_0x3ad45c);}function getTicket(_0x4ebb5e,_0x107235,_0x571263,_0x36f575,_0x122771,_0x1aaa48,_0x5098cb,_0x53989d){logger[_0x49f2('0xe')](_0x49f2('0xf'));var _0x44af91=new Date();var _0x52ecd6=[{'name':_0x49f2('0x10'),'value':intUtil[_0x49f2('0x11')](_0x36f575[_0x49f2('0x12')],_0x122771,'\x20')},{'name':'assigned_user_id','value':_0x107235['id']},{'name':_0x49f2('0x13'),'value':_0x107235['id']},{'name':'description','value':intUtil[_0x49f2('0x11')](_0x36f575['Descriptions'],_0x122771,'\x0a')},{'name':'date_start','value':_0x44af91[_0x49f2('0x14')]()[_0x49f2('0x15')](0x0,0x13)[_0x49f2('0x16')]('T','\x20')},{'name':_0x49f2('0x17'),'value':'0'},{'name':_0x49f2('0x18'),'value':'15'},{'name':_0x49f2('0x19'),'value':_0x571263['id']},{'name':_0x49f2('0x1a'),'value':_0x49f2('0x1b')},{'name':_0x49f2('0x1c'),'value':_0x571263[_0x49f2('0x10')]},{'name':_0x49f2('0x1d'),'value':_0x53989d}];if(_0x1aaa48[_0x49f2('0x1e')]){_['forEach'](_0x1aaa48,function(_0x20f899){if(_0x122771[_0x20f899[_0x49f2('0x1f')]]){_0x52ecd6[_0x49f2('0x20')]({'name':_0x20f899['idField'],'value':_0x122771[_0x20f899['variableName']]});}});}return request({'form':{'method':_0x49f2('0x21'),'input_type':_0x49f2('0x22'),'response_type':'JSON','rest_data':JSON[_0x49f2('0x23')]({'session':_0x5098cb['id'],'module_name':_0x49f2('0x24'),'name_value_list':_0x52ecd6})}});}function getAuth(_0x34f770){return util[_0x49f2('0x25')](_0x49f2('0x26'),new Buffer(_0x34f770['apiKey']+':X')[_0x49f2('0x27')]('base64'));}function getServerInfo(_0x400057){return request({'form':{'method':_0x49f2('0x28'),'input_type':_0x49f2('0x22'),'response_type':_0x49f2('0x22'),'rest_data':JSON[_0x49f2('0x23')]({'session':_0x400057['id']})}});}function getUser(_0x404c79,_0x57585f,_0x31d3c4){if(!_[_0x49f2('0x29')](_0x57585f)){logger[_0x49f2('0xe')]('Getting\x20agent\x20with\x20name',_0x57585f);return request({'form':{'method':_0x49f2('0x2a'),'input_type':'JSON','response_type':_0x49f2('0x22'),'rest_data':JSON[_0x49f2('0x23')]({'session':_0x31d3c4['id'],'module_name':_0x49f2('0x2b'),'query':util[_0x49f2('0x25')](_0x49f2('0x2c'),_0x57585f),'order_by':'','offset':'0','select_fields':['id','name',_0x49f2('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x49f2('0x2e')](function(_0x577e68){if(_0x577e68[_0x49f2('0x2f')][_0x49f2('0x1e')]){var _0xedea02=_[_0x49f2('0x30')](_0x577e68['entry_list'],function(_0x5da725){return _0x5da725['name_value_list'][_0x49f2('0x2d')][_0x49f2('0x31')]===_0x57585f;});if(_0xedea02){logger[_0x49f2('0xe')]('Agent\x20found!');return BPromise[_0x49f2('0x32')]({'id':_0xedea02[_0x49f2('0x33')]['id'][_0x49f2('0x31')],'name':_0xedea02[_0x49f2('0x33')][_0x49f2('0x10')][_0x49f2('0x31')]});}}logger[_0x49f2('0xe')](_0x49f2('0x34'));return BPromise['resolve']({'id':_0x31d3c4[_0x49f2('0x33')]['user_id'][_0x49f2('0x31')],'name':_0x31d3c4[_0x49f2('0x33')][_0x49f2('0x2d')]['value']});});}else{logger[_0x49f2('0xe')](_0x49f2('0x35'));return BPromise[_0x49f2('0x32')]({'id':_0x31d3c4['name_value_list'][_0x49f2('0x36')][_0x49f2('0x31')],'name':_0x31d3c4[_0x49f2('0x33')][_0x49f2('0x2d')][_0x49f2('0x31')]});}}function getEndUser(_0x1369b,_0x4166bc,_0x3d1536,_0xbf0b7a){logger[_0x49f2('0xe')](_0x49f2('0x37'),_0x3d1536);return request({'form':{'method':_0x49f2('0x2a'),'input_type':_0x49f2('0x22'),'response_type':_0x49f2('0x22'),'rest_data':JSON[_0x49f2('0x23')]({'session':_0xbf0b7a['id'],'module_name':_0x49f2('0x1b'),'query':util[_0x49f2('0x25')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x3d1536),'order_by':'','offset':'0','select_fields':['id',_0x49f2('0x10'),_0x49f2('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x5898f3){if(_0x5898f3['entry_list'][_0x49f2('0x1e')]){var _0x1fd806=_['find'](_0x5898f3[_0x49f2('0x2f')],function(_0x871757){return _0x871757[_0x49f2('0x33')][_0x49f2('0x38')][_0x49f2('0x31')]===_0x3d1536;});if(_0x1fd806){logger[_0x49f2('0xe')]('Enduser\x20found!');return BPromise[_0x49f2('0x32')]({'id':_0x1fd806['name_value_list']['id'][_0x49f2('0x31')],'name':_0x1fd806[_0x49f2('0x33')][_0x49f2('0x10')]['value'],'phone':_0x1fd806[_0x49f2('0x33')][_0x49f2('0x38')][_0x49f2('0x31')]});}}else{logger[_0x49f2('0xe')](_0x49f2('0x39'));return request({'form':{'method':_0x49f2('0x21'),'input_type':_0x49f2('0x22'),'response_type':'JSON','rest_data':JSON[_0x49f2('0x23')]({'session':_0xbf0b7a['id'],'module_name':_0x49f2('0x1b'),'name_value_list':[{'name':_0x49f2('0x3a'),'value':_0x4166bc!==_0x49f2('0x3b')?_0x4166bc:util[_0x49f2('0x25')]('Caller\x20-\x20%s',_0x3d1536)},{'name':_0x49f2('0x38'),'value':_0x3d1536}]})}})[_0x49f2('0x2e')](function(_0x4410e3){logger['info'](_0x49f2('0x3c'));return BPromise[_0x49f2('0x32')]({'id':_0x4410e3['id'],'name':_0x4410e3[_0x49f2('0x2f')][_0x49f2('0x3a')][_0x49f2('0x31')],'phone':_0x4410e3[_0x49f2('0x2f')]['phone_home'][_0x49f2('0x31')]});});}});}function request(_0x502622){logger[_0x49f2('0x3d')](_0x49f2('0x3e'),JSON[_0x49f2('0x23')](_0x502622));return rp(_[_0x49f2('0x3f')](def,_0x502622));}function getTags(_0x40d456,_0x576b2b){var _0x17cd3d=[];if(_0x40d456&&_0x40d456['length']>0x0){_0x17cd3d=_[_0x49f2('0x40')](_0x40d456,_0x576b2b);}return _0x17cd3d;}function getCustomFields(_0x1c64a6,_0x1167d3){var _0x28e6d4=[];var _0x5b3259={'custom_fields':[]};if(_0x1c64a6[_0x49f2('0x1e')]>0x0){_[_0x49f2('0x41')](_0x1c64a6,function(_0xff6266){if(_0xff6266[_0x49f2('0x42')]===_0x49f2('0x43')&&_0xff6266[_0x49f2('0x44')]&&!_0xff6266[_0x49f2('0x45')]){_0x5b3259[_0xff6266[_0x49f2('0x44')][_0x49f2('0x46')]()]=_0xff6266[_0x49f2('0x47')][_0x49f2('0x27')]();}else if(_0xff6266['type']==='string'&&_0xff6266[_0x49f2('0x48')]&&_0xff6266['customField']){_0x5b3259[_0x49f2('0x49')][_0x49f2('0x20')]({'id':_0xff6266[_0x49f2('0x48')],'value':_0xff6266['content'][_0x49f2('0x27')]()});}else if(_0xff6266[_0x49f2('0x42')]===_0x49f2('0x4a')&&_0xff6266[_0x49f2('0x1f')]&&_0xff6266[_0x49f2('0x48')]&&_0xff6266['customField']){_0x1167d3[_0xff6266[_0x49f2('0x1f')]]&&_0x5b3259[_0x49f2('0x49')]['push']({'id':_0xff6266['idField'],'value':_0x1167d3[_0xff6266[_0x49f2('0x1f')]][_0x49f2('0x27')]()});}else if(_0xff6266[_0x49f2('0x42')]===_0x49f2('0x4b')&&_0xff6266['Variable']&&_0xff6266[_0x49f2('0x4c')][_0x49f2('0x10')]&&_0xff6266['idField']&&_0xff6266[_0x49f2('0x45')]){_0x1167d3[_0xff6266[_0x49f2('0x4c')][_0x49f2('0x10')][_0x49f2('0x46')]()]&&_0x5b3259['custom_fields']['push']({'id':_0xff6266[_0x49f2('0x48')],'value':_0x1167d3[_0xff6266['Variable'][_0x49f2('0x10')][_0x49f2('0x46')]()]['toString']()});}});}return _0x5b3259;}function getConnection(_0x5af0ff){return request({'method':_0x49f2('0xc'),'form':{'method':'login','input_type':_0x49f2('0x22'),'response_type':_0x49f2('0x22'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x5af0ff[_0x49f2('0x4d')],'password':_0x5af0ff[_0x49f2('0x4e')],'encryption':_0x49f2('0x4f')},'application':_0x49f2('0x50')})}})['then'](function(_0x1ad2f4){var _0x24dab2=_0x1ad2f4;if(_0x24dab2['id']){def[_0x49f2('0x51')]=_0x24dab2['id'];return BPromise[_0x49f2('0x32')](_0x24dab2);}else{throw new Error(util[_0x49f2('0x25')](_0x49f2('0x52'),_0x5af0ff['id']));}});}function setRelationship(_0x327140,_0x4f84ba,_0x321221,_0x5a14bb){return request({'form':{'method':_0x49f2('0x53'),'input_type':_0x49f2('0x22'),'response_type':_0x49f2('0x22'),'rest_data':JSON['stringify']({'session':_0x327140['id'],'module_name':'Calls','module_id':_0x321221['id'],'link_field_name':_0x5a14bb,'related_ids':[_0x4f84ba['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x49f2('0x54')]=function(_0x5f0960,_0x324f10,_0x133e1d,_0xbfd532,_0x2ca221,_0x48a8c7){var _0x4fa425,_0x13b08c,_0x18f417,_0x401ee9;_0x48a8c7[_0x49f2('0x55')]=intUtil[_0x49f2('0x56')](_0x48a8c7[_0x49f2('0x55')]);_0x48a8c7[_0x49f2('0x57')]=intUtil['stripTrailingSlash'](_0x48a8c7['serverUrl']);def[_0x49f2('0x58')]=util[_0x49f2('0x25')](_0x49f2('0x59'),_0x48a8c7['remoteUri']);if(_0x2ca221&&_0x2ca221['monitor_format']){logger[_0x49f2('0xe')](_0x49f2('0x5a'),_0x49f2('0x5b'));_0x324f10['recordingURL']=util[_0x49f2('0x25')](_0x49f2('0x5c'),_0x48a8c7[_0x49f2('0x57')],_0x324f10[_0x49f2('0x5d')],md5(_0x324f10['uniqueid']));}else{_0x324f10[_0x49f2('0x5e')]='';}return getConnection(_0x48a8c7)['then'](function(_0x296d2d){_0x401ee9=_0x296d2d;return getUser(_0x48a8c7,_0xbfd532['name'],_0x401ee9);})[_0x49f2('0x2e')](function(_0x10683d){_0x4fa425=_0x10683d;logger[_0x49f2('0xe')](_0x49f2('0x5f'),_0x4fa425['id']);return getEndUser(_0x48a8c7,_0x324f10['calleridname'],_0x324f10[_0x49f2('0x60')],_0x401ee9);})[_0x49f2('0x2e')](function(_0x543623){_0x13b08c=_0x543623;logger[_0x49f2('0xe')]('The\x20Enduser\x20ID\x20is:',_0x13b08c['id']);return getTicket(_0x48a8c7,_0x4fa425,_0x13b08c,_0x133e1d,_0x324f10,_0x133e1d[_0x49f2('0x61')],_0x401ee9,_0x49f2('0x62'));})[_0x49f2('0x2e')](function(_0x56fdb1){_0x18f417=_0x56fdb1;logger[_0x49f2('0xe')](_0x49f2('0x63'));logger[_0x49f2('0xe')](_0x49f2('0x64'),_0x18f417['id']);return setRelationship(_0x401ee9,_0x4fa425,_0x18f417,_0x49f2('0x65'));})[_0x49f2('0x2e')](function(){return setRelationship(_0x401ee9,_0x13b08c,_0x18f417,'contacts');})[_0x49f2('0x2e')](function(){return getServerInfo(_0x401ee9);})[_0x49f2('0x2e')](function(_0x5847d9){var _0xee4077=parseInt(_0x5847d9[_0x49f2('0x66')][_0x49f2('0x67')](0x0));var _0x4147b2=util[_0x49f2('0x25')](_0x49f2('0x68'),_0x48a8c7[_0x49f2('0x55')],_0x18f417['id']);if(_0xee4077>0x6){_0x4147b2=util[_0x49f2('0x25')](_0x49f2('0x69'),_0x48a8c7[_0x49f2('0x55')],_0x18f417['id']);}logger[_0x49f2('0xe')](_0x49f2('0x5a'),_0x49f2('0x6a'));emit(util[_0x49f2('0x25')]('user:%s',_0xbfd532[_0x49f2('0x10')]),_0x49f2('0x6b'),{'uri':_0x4147b2});})[_0x49f2('0x6c')](function(_0x25d9fd){logger['error'](_0x49f2('0x5a'),JSON[_0x49f2('0x23')](_0x25d9fd));});};exports[_0x49f2('0x6d')]=function(_0x386fd9,_0x345354,_0x47c204,_0x7553c7,_0x51b57a,_0x26bb6c,_0x2c6997){var _0x4f1672,_0x1c9fbd,_0x1ad3d9,_0x1d178a;_0x26bb6c[_0x49f2('0x55')]=intUtil['stripTrailingSlash'](_0x26bb6c[_0x49f2('0x55')]);_0x26bb6c['serverUrl']=intUtil['stripTrailingSlash'](_0x26bb6c[_0x49f2('0x57')]);def[_0x49f2('0x58')]=util['format']('%s/service/v4_1/rest.php',_0x26bb6c[_0x49f2('0x55')]);if(_0x2c6997&&_0x2c6997[_0x49f2('0x6e')]&&_0x2c6997[_0x49f2('0x6e')]!==_0x49f2('0x6f')){logger['info'](_0x49f2('0x70'),_0x49f2('0x5b'));_0x345354[_0x49f2('0x5e')]=util[_0x49f2('0x25')](_0x49f2('0x5c'),_0x26bb6c[_0x49f2('0x57')],_0x345354[_0x49f2('0x5d')],md5(_0x345354[_0x49f2('0x5d')]));}return getConnection(_0x26bb6c)[_0x49f2('0x2e')](function(_0x21af26){_0x1d178a=_0x21af26;return getUser(_0x26bb6c,_0x7553c7[_0x49f2('0x10')],_0x1d178a);})[_0x49f2('0x2e')](function(_0x19f1f1){_0x4f1672=_0x19f1f1;logger[_0x49f2('0xe')](_0x49f2('0x5f'),_0x4f1672['id']);return getEndUser(_0x26bb6c,_0x345354[_0x49f2('0x71')],_0x345354[_0x49f2('0x72')],_0x1d178a);})[_0x49f2('0x2e')](function(_0x16a21a){_0x1c9fbd=_0x16a21a;logger['info'](_0x49f2('0x73'),_0x1c9fbd['id']);return getTicket(_0x26bb6c,_0x4f1672,_0x1c9fbd,_0x47c204,_0x345354,_0x47c204[_0x49f2('0x61')],_0x1d178a,'Outbound');})['then'](function(_0x3a990f){_0x1ad3d9=_0x3a990f;logger['info'](_0x49f2('0x63'));logger[_0x49f2('0xe')]('The\x20Ticket\x20ID\x20is:',_0x1ad3d9['id']);return setRelationship(_0x1d178a,_0x4f1672,_0x1ad3d9,_0x49f2('0x65'));})[_0x49f2('0x2e')](function(){return setRelationship(_0x1d178a,_0x1c9fbd,_0x1ad3d9,_0x49f2('0x74'));})[_0x49f2('0x2e')](function(){return getServerInfo(_0x1d178a);})['then'](function(_0x55c34f){var _0x1c14b0=parseInt(_0x55c34f[_0x49f2('0x66')][_0x49f2('0x67')](0x0));var _0x3cc1f7=util[_0x49f2('0x25')](_0x49f2('0x68'),_0x26bb6c['remoteUri'],_0x1ad3d9['id']);if(_0x1c14b0>0x6){_0x3cc1f7=util[_0x49f2('0x25')](_0x49f2('0x69'),_0x26bb6c['remoteUri'],_0x1ad3d9['id']);}logger[_0x49f2('0xe')](_0x49f2('0x70'),_0x49f2('0x6a'));emit(util[_0x49f2('0x25')](_0x49f2('0x75'),_0x7553c7[_0x49f2('0x10')]),_0x49f2('0x6b'),{'uri':_0x3cc1f7});})[_0x49f2('0x6c')](function(_0x491406){logger[_0x49f2('0x76')]('[OUTBOUND]',JSON[_0x49f2('0x23')](_0x491406));});};exports['unmanaged']=function(_0x399a68,_0x384fdb,_0x120c98,_0x1158f9,_0x58c5bd,_0x455ade){var _0x25e75e,_0x21c232,_0x52e274,_0x31fbae;_0x455ade[_0x49f2('0x55')]=intUtil[_0x49f2('0x56')](_0x455ade[_0x49f2('0x55')]);_0x455ade['serverUrl']=intUtil[_0x49f2('0x56')](_0x455ade[_0x49f2('0x57')]);def['uri']=util[_0x49f2('0x25')]('%s/service/v4_1/rest.php',_0x455ade[_0x49f2('0x55')]);if(_0x58c5bd&&_0x58c5bd['monitor_format']){logger['info']('['+_0x384fdb[_0x49f2('0x77')][_0x49f2('0x78')]()+']','Recording\x20is\x20enabled!');_0x384fdb[_0x49f2('0x5e')]=util[_0x49f2('0x25')](_0x49f2('0x5c'),_0x455ade[_0x49f2('0x57')],_0x384fdb[_0x49f2('0x5d')],md5(_0x384fdb[_0x49f2('0x5d')]));}else{_0x384fdb[_0x49f2('0x5e')]='';}return getConnection(_0x455ade)['then'](function(_0x5eccb8){_0x31fbae=_0x5eccb8;if(!_[_0x49f2('0x29')](_0x1158f9)){return getUser(_0x455ade,_0x1158f9[_0x49f2('0x10')],_0x31fbae);}else{return getUser(_0x455ade,null,_0x31fbae);}})['then'](function(_0x279880){_0x25e75e=_0x279880;logger[_0x49f2('0xe')](_0x49f2('0x5f'),_0x25e75e['id']);return getEndUser(_0x455ade,_0x384fdb[_0x49f2('0x79')],_0x384fdb[_0x49f2('0x60')],_0x31fbae);})[_0x49f2('0x2e')](function(_0x2666a6){_0x21c232=_0x2666a6;logger[_0x49f2('0xe')]('The\x20Enduser\x20ID\x20is:',_0x21c232['id']);return getTicket(_0x455ade,_0x25e75e,_0x21c232,_0x120c98,_0x384fdb,_0x120c98[_0x49f2('0x61')],_0x31fbae,_0x49f2('0x62'));})[_0x49f2('0x2e')](function(_0x298efa){_0x52e274=_0x298efa;logger[_0x49f2('0xe')]('Ticket\x20created!');logger[_0x49f2('0xe')](_0x49f2('0x64'),_0x52e274['id']);return setRelationship(_0x31fbae,_0x25e75e,_0x52e274,'users');})['then'](function(){return setRelationship(_0x31fbae,_0x21c232,_0x52e274,_0x49f2('0x74'));})['then'](function(){return getServerInfo(_0x31fbae);})[_0x49f2('0x6c')](function(_0x48865b){logger[_0x49f2('0x76')]('['+_0x384fdb[_0x49f2('0x77')][_0x49f2('0x78')]()+']',JSON[_0x49f2('0x23')](_0x48865b));});};
\ No newline at end of file
+var _0xd0f0=['../../../../config/environment','../../../../config/logger','sugarcrm','redis','socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','name','Subjects','assigned_user_id','created_by','getString','Descriptions','date_start','slice','replace','duration_hours','duration_minutes','Contacts','parent_name','variableName','push','idField','set_entry','JSON','stringify','Calls','format','Basic\x20%s','apiKey','toString','base64','get_server_info','Getting\x20agent\x20with\x20name','get_entry_list','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','then','entry_list','length','find','name_value_list','user_name','value','Agent\x20found!','user_id','resolve','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Enduser\x20created.','debug','[HTTP]','merge','forEach','type','string','customField','nameField','toLowerCase','content','custom_fields','customVariable','Variable','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','remoteUri','serverUrl','stripTrailingSlash','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','users','contacts','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch','error','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','Outbound','version','user:%s','unmanaged','lastevent','toUpperCase','isNil','calleridnum','lodash','request-promise','bluebird','md5','util','ioredis','./util'];(function(_0x57b412,_0xf8e764){var _0x196240=function(_0x20b6a1){while(--_0x20b6a1){_0x57b412['push'](_0x57b412['shift']());}};_0x196240(++_0xf8e764);}(_0xd0f0,0x1dd));var _0x0d0f=function(_0x2fdbf8,_0x461a51){_0x2fdbf8=_0x2fdbf8-0x0;var _0x5dc976=_0xd0f0[_0x2fdbf8];return _0x5dc976;};'use strict';var _=require(_0x0d0f('0x0'));var rp=require(_0x0d0f('0x1'));var BPromise=require(_0x0d0f('0x2'));var md5=require(_0x0d0f('0x3'));var util=require(_0x0d0f('0x4'));var Redis=require(_0x0d0f('0x5'));var intUtil=require(_0x0d0f('0x6'));var config=require(_0x0d0f('0x7'));var logger=require(_0x0d0f('0x8'))(_0x0d0f('0x9'));config[_0x0d0f('0xa')]=_['defaults'](config[_0x0d0f('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x0d0f('0xb'))(new Redis(config[_0x0d0f('0xa')]));var def={'method':_0x0d0f('0xc'),'json':!![]};function emit(_0x40e363,_0x12c934,_0x3b1de8){io['to'](_0x40e363)[_0x0d0f('0xd')](_0x12c934,_0x3b1de8);}function getTicket(_0x2743bc,_0x550659,_0x570e76,_0x457698,_0x232bd1,_0x53ebd3,_0x36eaa0,_0x34863f){logger[_0x0d0f('0xe')](_0x0d0f('0xf'));var _0x539c0c=new Date();var _0x37a983=[{'name':_0x0d0f('0x10'),'value':intUtil['getString'](_0x457698[_0x0d0f('0x11')],_0x232bd1,'\x20')},{'name':_0x0d0f('0x12'),'value':_0x550659['id']},{'name':_0x0d0f('0x13'),'value':_0x550659['id']},{'name':'description','value':intUtil[_0x0d0f('0x14')](_0x457698[_0x0d0f('0x15')],_0x232bd1,'\x0a')},{'name':_0x0d0f('0x16'),'value':_0x539c0c['toISOString']()[_0x0d0f('0x17')](0x0,0x13)[_0x0d0f('0x18')]('T','\x20')},{'name':_0x0d0f('0x19'),'value':'0'},{'name':_0x0d0f('0x1a'),'value':'15'},{'name':'parent_id','value':_0x570e76['id']},{'name':'parent_type','value':_0x0d0f('0x1b')},{'name':_0x0d0f('0x1c'),'value':_0x570e76['name']},{'name':'direction','value':_0x34863f}];if(_0x53ebd3['length']){_['forEach'](_0x53ebd3,function(_0x5616f4){if(_0x232bd1[_0x5616f4[_0x0d0f('0x1d')]]){_0x37a983[_0x0d0f('0x1e')]({'name':_0x5616f4[_0x0d0f('0x1f')],'value':_0x232bd1[_0x5616f4[_0x0d0f('0x1d')]]});}});}return request({'form':{'method':_0x0d0f('0x20'),'input_type':_0x0d0f('0x21'),'response_type':'JSON','rest_data':JSON[_0x0d0f('0x22')]({'session':_0x36eaa0['id'],'module_name':_0x0d0f('0x23'),'name_value_list':_0x37a983})}});}function getAuth(_0x428a9a){return util[_0x0d0f('0x24')](_0x0d0f('0x25'),new Buffer(_0x428a9a[_0x0d0f('0x26')]+':X')[_0x0d0f('0x27')](_0x0d0f('0x28')));}function getServerInfo(_0x127d93){return request({'form':{'method':_0x0d0f('0x29'),'input_type':_0x0d0f('0x21'),'response_type':_0x0d0f('0x21'),'rest_data':JSON['stringify']({'session':_0x127d93['id']})}});}function getUser(_0x4a370f,_0x211b7b,_0x3bbb58){if(!_['isNil'](_0x211b7b)){logger[_0x0d0f('0xe')](_0x0d0f('0x2a'),_0x211b7b);return request({'form':{'method':_0x0d0f('0x2b'),'input_type':_0x0d0f('0x21'),'response_type':_0x0d0f('0x21'),'rest_data':JSON[_0x0d0f('0x22')]({'session':_0x3bbb58['id'],'module_name':'Employees','query':util['format'](_0x0d0f('0x2c'),_0x211b7b),'order_by':'','offset':'0','select_fields':['id',_0x0d0f('0x10'),'user_name'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x0d0f('0x2d')](function(_0x59b1af){if(_0x59b1af[_0x0d0f('0x2e')][_0x0d0f('0x2f')]){var _0x30ca20=_[_0x0d0f('0x30')](_0x59b1af[_0x0d0f('0x2e')],function(_0x4998e9){return _0x4998e9[_0x0d0f('0x31')][_0x0d0f('0x32')][_0x0d0f('0x33')]===_0x211b7b;});if(_0x30ca20){logger[_0x0d0f('0xe')](_0x0d0f('0x34'));return BPromise['resolve']({'id':_0x30ca20[_0x0d0f('0x31')]['id'][_0x0d0f('0x33')],'name':_0x30ca20[_0x0d0f('0x31')][_0x0d0f('0x10')][_0x0d0f('0x33')]});}}logger[_0x0d0f('0xe')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise['resolve']({'id':_0x3bbb58[_0x0d0f('0x31')][_0x0d0f('0x35')]['value'],'name':_0x3bbb58[_0x0d0f('0x31')][_0x0d0f('0x32')][_0x0d0f('0x33')]});});}else{logger[_0x0d0f('0xe')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0x0d0f('0x36')]({'id':_0x3bbb58[_0x0d0f('0x31')]['user_id']['value'],'name':_0x3bbb58[_0x0d0f('0x31')]['user_name'][_0x0d0f('0x33')]});}}function getEndUser(_0x407edf,_0x4d4310,_0x4486c5,_0x31bac5){logger[_0x0d0f('0xe')](_0x0d0f('0x37'),_0x4486c5);return request({'form':{'method':_0x0d0f('0x2b'),'input_type':_0x0d0f('0x21'),'response_type':_0x0d0f('0x21'),'rest_data':JSON[_0x0d0f('0x22')]({'session':_0x31bac5['id'],'module_name':_0x0d0f('0x1b'),'query':util[_0x0d0f('0x24')](_0x0d0f('0x38'),_0x4486c5),'order_by':'','offset':'0','select_fields':['id',_0x0d0f('0x10'),_0x0d0f('0x39')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x0d0f('0x2d')](function(_0x3dee5a){if(_0x3dee5a['entry_list']['length']){var _0x229b13=_[_0x0d0f('0x30')](_0x3dee5a[_0x0d0f('0x2e')],function(_0x575cfa){return _0x575cfa[_0x0d0f('0x31')][_0x0d0f('0x39')]['value']===_0x4486c5;});if(_0x229b13){logger[_0x0d0f('0xe')]('Enduser\x20found!');return BPromise[_0x0d0f('0x36')]({'id':_0x229b13['name_value_list']['id'][_0x0d0f('0x33')],'name':_0x229b13['name_value_list'][_0x0d0f('0x10')][_0x0d0f('0x33')],'phone':_0x229b13['name_value_list'][_0x0d0f('0x39')][_0x0d0f('0x33')]});}}else{logger[_0x0d0f('0xe')](_0x0d0f('0x3a'));return request({'form':{'method':'set_entry','input_type':_0x0d0f('0x21'),'response_type':_0x0d0f('0x21'),'rest_data':JSON['stringify']({'session':_0x31bac5['id'],'module_name':'Contacts','name_value_list':[{'name':_0x0d0f('0x3b'),'value':_0x4d4310!==_0x0d0f('0x3c')?_0x4d4310:util[_0x0d0f('0x24')]('Caller\x20-\x20%s',_0x4486c5)},{'name':_0x0d0f('0x39'),'value':_0x4486c5}]})}})[_0x0d0f('0x2d')](function(_0x595e09){logger[_0x0d0f('0xe')](_0x0d0f('0x3d'));return BPromise['resolve']({'id':_0x595e09['id'],'name':_0x595e09['entry_list']['first_name'][_0x0d0f('0x33')],'phone':_0x595e09[_0x0d0f('0x2e')][_0x0d0f('0x39')][_0x0d0f('0x33')]});});}});}function request(_0x3b0282){logger[_0x0d0f('0x3e')](_0x0d0f('0x3f'),JSON[_0x0d0f('0x22')](_0x3b0282));return rp(_[_0x0d0f('0x40')](def,_0x3b0282));}function getTags(_0x4b32f5,_0x557e2d){var _0x1abcd5=[];if(_0x4b32f5&&_0x4b32f5[_0x0d0f('0x2f')]>0x0){_0x1abcd5=_['map'](_0x4b32f5,_0x557e2d);}return _0x1abcd5;}function getCustomFields(_0x41ec0a,_0x601314){var _0x555319=[];var _0x5729ab={'custom_fields':[]};if(_0x41ec0a['length']>0x0){_[_0x0d0f('0x41')](_0x41ec0a,function(_0x28231e){if(_0x28231e[_0x0d0f('0x42')]===_0x0d0f('0x43')&&_0x28231e['nameField']&&!_0x28231e[_0x0d0f('0x44')]){_0x5729ab[_0x28231e[_0x0d0f('0x45')][_0x0d0f('0x46')]()]=_0x28231e[_0x0d0f('0x47')][_0x0d0f('0x27')]();}else if(_0x28231e['type']===_0x0d0f('0x43')&&_0x28231e[_0x0d0f('0x1f')]&&_0x28231e[_0x0d0f('0x44')]){_0x5729ab['custom_fields'][_0x0d0f('0x1e')]({'id':_0x28231e[_0x0d0f('0x1f')],'value':_0x28231e[_0x0d0f('0x47')][_0x0d0f('0x27')]()});}else if(_0x28231e[_0x0d0f('0x42')]==='variable'&&_0x28231e[_0x0d0f('0x1d')]&&_0x28231e['idField']&&_0x28231e[_0x0d0f('0x44')]){_0x601314[_0x28231e['variableName']]&&_0x5729ab[_0x0d0f('0x48')]['push']({'id':_0x28231e[_0x0d0f('0x1f')],'value':_0x601314[_0x28231e[_0x0d0f('0x1d')]][_0x0d0f('0x27')]()});}else if(_0x28231e[_0x0d0f('0x42')]===_0x0d0f('0x49')&&_0x28231e[_0x0d0f('0x4a')]&&_0x28231e[_0x0d0f('0x4a')][_0x0d0f('0x10')]&&_0x28231e[_0x0d0f('0x1f')]&&_0x28231e['customField']){_0x601314[_0x28231e[_0x0d0f('0x4a')][_0x0d0f('0x10')][_0x0d0f('0x46')]()]&&_0x5729ab[_0x0d0f('0x48')][_0x0d0f('0x1e')]({'id':_0x28231e[_0x0d0f('0x1f')],'value':_0x601314[_0x28231e[_0x0d0f('0x4a')][_0x0d0f('0x10')]['toLowerCase']()][_0x0d0f('0x27')]()});}});}return _0x5729ab;}function getConnection(_0x4a6eb6){return request({'method':_0x0d0f('0xc'),'form':{'method':_0x0d0f('0x4b'),'input_type':_0x0d0f('0x21'),'response_type':'JSON','rest_data':JSON['stringify']({'user_auth':{'user_name':_0x4a6eb6[_0x0d0f('0x4c')],'password':_0x4a6eb6[_0x0d0f('0x4d')],'encryption':_0x0d0f('0x4e')},'application':_0x0d0f('0x4f')})}})[_0x0d0f('0x2d')](function(_0x66c4c2){var _0xf2cdfc=_0x66c4c2;if(_0xf2cdfc['id']){def[_0x0d0f('0x50')]=_0xf2cdfc['id'];return BPromise[_0x0d0f('0x36')](_0xf2cdfc);}else{throw new Error(util[_0x0d0f('0x24')](_0x0d0f('0x51'),_0x4a6eb6['id']));}});}function setRelationship(_0x425060,_0x58be77,_0x192a98,_0x18eabe){return request({'form':{'method':_0x0d0f('0x52'),'input_type':_0x0d0f('0x21'),'response_type':_0x0d0f('0x21'),'rest_data':JSON[_0x0d0f('0x22')]({'session':_0x425060['id'],'module_name':_0x0d0f('0x23'),'module_id':_0x192a98['id'],'link_field_name':_0x18eabe,'related_ids':[_0x58be77['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x1e107c,_0x38a397,_0x3481b8,_0x148ee9,_0x5394d1,_0x32e628){var _0x5a5f67,_0x471698,_0x5811b1,_0x2598c6;_0x32e628[_0x0d0f('0x53')]=intUtil['stripTrailingSlash'](_0x32e628[_0x0d0f('0x53')]);_0x32e628[_0x0d0f('0x54')]=intUtil[_0x0d0f('0x55')](_0x32e628[_0x0d0f('0x54')]);def[_0x0d0f('0x56')]=util[_0x0d0f('0x24')](_0x0d0f('0x57'),_0x32e628[_0x0d0f('0x53')]);if(_0x5394d1&&_0x5394d1[_0x0d0f('0x58')]){logger[_0x0d0f('0xe')](_0x0d0f('0x59'),_0x0d0f('0x5a'));_0x38a397[_0x0d0f('0x5b')]=util[_0x0d0f('0x24')](_0x0d0f('0x5c'),_0x32e628[_0x0d0f('0x54')],_0x38a397[_0x0d0f('0x5d')],md5(_0x38a397[_0x0d0f('0x5d')]));}else{_0x38a397[_0x0d0f('0x5b')]='';}return getConnection(_0x32e628)['then'](function(_0x5b69f5){_0x2598c6=_0x5b69f5;return getUser(_0x32e628,_0x148ee9[_0x0d0f('0x10')],_0x2598c6);})['then'](function(_0xde303a){_0x5a5f67=_0xde303a;logger[_0x0d0f('0xe')](_0x0d0f('0x5e'),_0x5a5f67['id']);return getEndUser(_0x32e628,_0x38a397[_0x0d0f('0x5f')],_0x38a397['calleridnum'],_0x2598c6);})[_0x0d0f('0x2d')](function(_0x15abf3){_0x471698=_0x15abf3;logger[_0x0d0f('0xe')](_0x0d0f('0x60'),_0x471698['id']);return getTicket(_0x32e628,_0x5a5f67,_0x471698,_0x3481b8,_0x38a397,_0x3481b8[_0x0d0f('0x61')],_0x2598c6,_0x0d0f('0x62'));})[_0x0d0f('0x2d')](function(_0x2111b0){_0x5811b1=_0x2111b0;logger['info'](_0x0d0f('0x63'));logger[_0x0d0f('0xe')]('The\x20Ticket\x20ID\x20is:',_0x5811b1['id']);return setRelationship(_0x2598c6,_0x5a5f67,_0x5811b1,_0x0d0f('0x64'));})['then'](function(){return setRelationship(_0x2598c6,_0x471698,_0x5811b1,_0x0d0f('0x65'));})[_0x0d0f('0x2d')](function(){return getServerInfo(_0x2598c6);})[_0x0d0f('0x2d')](function(_0x347f02){var _0x202e3c=parseInt(_0x347f02['version'][_0x0d0f('0x66')](0x0));var _0x14fdca=util[_0x0d0f('0x24')](_0x0d0f('0x67'),_0x32e628[_0x0d0f('0x53')],_0x5811b1['id']);if(_0x202e3c>0x6){_0x14fdca=util[_0x0d0f('0x24')](_0x0d0f('0x68'),_0x32e628[_0x0d0f('0x53')],_0x5811b1['id']);}logger[_0x0d0f('0xe')]('[QUEUE]',_0x0d0f('0x69'));emit(util[_0x0d0f('0x24')]('user:%s',_0x148ee9[_0x0d0f('0x10')]),_0x0d0f('0x6a'),{'uri':_0x14fdca});})[_0x0d0f('0x6b')](function(_0xdda3d1){logger[_0x0d0f('0x6c')](_0x0d0f('0x59'),JSON['stringify'](_0xdda3d1));});};exports['outbound']=function(_0x59d54f,_0x38a4c2,_0x5d1af6,_0x342464,_0xb64d9e,_0x252633,_0x22b8a6){var _0x1681a0,_0x3b4291,_0x2d2d7f,_0x5ad234;_0x252633['remoteUri']=intUtil[_0x0d0f('0x55')](_0x252633[_0x0d0f('0x53')]);_0x252633[_0x0d0f('0x54')]=intUtil[_0x0d0f('0x55')](_0x252633[_0x0d0f('0x54')]);def[_0x0d0f('0x56')]=util[_0x0d0f('0x24')]('%s/service/v4_1/rest.php',_0x252633['remoteUri']);if(_0x22b8a6&&_0x22b8a6['recordingFormat']&&_0x22b8a6[_0x0d0f('0x6d')]!=='none'){logger[_0x0d0f('0xe')](_0x0d0f('0x6e'),_0x0d0f('0x5a'));_0x38a4c2[_0x0d0f('0x5b')]=util[_0x0d0f('0x24')](_0x0d0f('0x5c'),_0x252633[_0x0d0f('0x54')],_0x38a4c2[_0x0d0f('0x5d')],md5(_0x38a4c2[_0x0d0f('0x5d')]));}return getConnection(_0x252633)['then'](function(_0x230b9d){_0x5ad234=_0x230b9d;return getUser(_0x252633,_0x342464['name'],_0x5ad234);})[_0x0d0f('0x2d')](function(_0x59cc0e){_0x1681a0=_0x59cc0e;logger[_0x0d0f('0xe')](_0x0d0f('0x5e'),_0x1681a0['id']);return getEndUser(_0x252633,_0x38a4c2[_0x0d0f('0x6f')],_0x38a4c2[_0x0d0f('0x70')],_0x5ad234);})[_0x0d0f('0x2d')](function(_0x2dadb6){_0x3b4291=_0x2dadb6;logger[_0x0d0f('0xe')](_0x0d0f('0x60'),_0x3b4291['id']);return getTicket(_0x252633,_0x1681a0,_0x3b4291,_0x5d1af6,_0x38a4c2,_0x5d1af6['Fields'],_0x5ad234,_0x0d0f('0x71'));})[_0x0d0f('0x2d')](function(_0x58ed45){_0x2d2d7f=_0x58ed45;logger[_0x0d0f('0xe')]('Ticket\x20created!');logger[_0x0d0f('0xe')]('The\x20Ticket\x20ID\x20is:',_0x2d2d7f['id']);return setRelationship(_0x5ad234,_0x1681a0,_0x2d2d7f,_0x0d0f('0x64'));})[_0x0d0f('0x2d')](function(){return setRelationship(_0x5ad234,_0x3b4291,_0x2d2d7f,_0x0d0f('0x65'));})[_0x0d0f('0x2d')](function(){return getServerInfo(_0x5ad234);})['then'](function(_0x15e288){var _0x5ed983=parseInt(_0x15e288[_0x0d0f('0x72')][_0x0d0f('0x66')](0x0));var _0x5e721b=util[_0x0d0f('0x24')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x252633[_0x0d0f('0x53')],_0x2d2d7f['id']);if(_0x5ed983>0x6){_0x5e721b=util[_0x0d0f('0x24')](_0x0d0f('0x68'),_0x252633[_0x0d0f('0x53')],_0x2d2d7f['id']);}logger[_0x0d0f('0xe')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x0d0f('0x24')](_0x0d0f('0x73'),_0x342464['name']),_0x0d0f('0x6a'),{'uri':_0x5e721b});})['catch'](function(_0x498cf3){logger['error'](_0x0d0f('0x6e'),JSON[_0x0d0f('0x22')](_0x498cf3));});};exports[_0x0d0f('0x74')]=function(_0x5495f6,_0x5457ba,_0x1b0d52,_0x2cbee6,_0x308596,_0x580679){var _0x554430,_0x133509,_0x544cad,_0x1e9491;_0x580679[_0x0d0f('0x53')]=intUtil[_0x0d0f('0x55')](_0x580679[_0x0d0f('0x53')]);_0x580679[_0x0d0f('0x54')]=intUtil[_0x0d0f('0x55')](_0x580679[_0x0d0f('0x54')]);def[_0x0d0f('0x56')]=util[_0x0d0f('0x24')](_0x0d0f('0x57'),_0x580679[_0x0d0f('0x53')]);if(_0x308596&&_0x308596[_0x0d0f('0x58')]){logger[_0x0d0f('0xe')]('['+_0x5457ba[_0x0d0f('0x75')][_0x0d0f('0x76')]()+']',_0x0d0f('0x5a'));_0x5457ba[_0x0d0f('0x5b')]=util[_0x0d0f('0x24')](_0x0d0f('0x5c'),_0x580679['serverUrl'],_0x5457ba[_0x0d0f('0x5d')],md5(_0x5457ba['uniqueid']));}else{_0x5457ba[_0x0d0f('0x5b')]='';}return getConnection(_0x580679)['then'](function(_0x3362fb){_0x1e9491=_0x3362fb;if(!_[_0x0d0f('0x77')](_0x2cbee6)){return getUser(_0x580679,_0x2cbee6['name'],_0x1e9491);}else{return getUser(_0x580679,null,_0x1e9491);}})['then'](function(_0x24803f){_0x554430=_0x24803f;logger['info'](_0x0d0f('0x5e'),_0x554430['id']);return getEndUser(_0x580679,_0x5457ba[_0x0d0f('0x5f')],_0x5457ba[_0x0d0f('0x78')],_0x1e9491);})[_0x0d0f('0x2d')](function(_0x38c5cb){_0x133509=_0x38c5cb;logger[_0x0d0f('0xe')](_0x0d0f('0x60'),_0x133509['id']);return getTicket(_0x580679,_0x554430,_0x133509,_0x1b0d52,_0x5457ba,_0x1b0d52['Fields'],_0x1e9491,_0x0d0f('0x62'));})[_0x0d0f('0x2d')](function(_0x3d6836){_0x544cad=_0x3d6836;logger[_0x0d0f('0xe')](_0x0d0f('0x63'));logger[_0x0d0f('0xe')]('The\x20Ticket\x20ID\x20is:',_0x544cad['id']);return setRelationship(_0x1e9491,_0x554430,_0x544cad,_0x0d0f('0x64'));})[_0x0d0f('0x2d')](function(){return setRelationship(_0x1e9491,_0x133509,_0x544cad,'contacts');})[_0x0d0f('0x2d')](function(){return getServerInfo(_0x1e9491);})[_0x0d0f('0x6b')](function(_0x306546){logger[_0x0d0f('0x6c')]('['+_0x5457ba[_0x0d0f('0x75')][_0x0d0f('0x76')]()+']',JSON[_0x0d0f('0x22')](_0x306546));});};
\ No newline at end of file
index 162b086..58118a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7099=['sortBy','type','string','push','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyType','format','keyContent','key','%s:\x20%s','stripTrailingSlash','substring','lastIndexOf','validateEmail','isNil','test','lodash','util','getString','length'];(function(_0x39b07c,_0x386292){var _0x33a9e9=function(_0x13216b){while(--_0x13216b){_0x39b07c['push'](_0x39b07c['shift']());}};_0x33a9e9(++_0x386292);}(_0x7099,0xb9));var _0x9709=function(_0x2c7997,_0x5842e2){_0x2c7997=_0x2c7997-0x0;var _0x1abcb8=_0x7099[_0x2c7997];return _0x1abcb8;};'use strict';var _=require(_0x9709('0x0'));var util=require(_0x9709('0x1'));exports[_0x9709('0x2')]=function(_0x52b392,_0x34852c,_0x5bfd1e){var _0xb0bd6b=[];if(_0x52b392[_0x9709('0x3')]>0x0){var _0x172176=_[_0x9709('0x4')](_0x52b392,['id']);for(var _0x582b5c=0x0;_0x582b5c<_0x172176['length'];_0x582b5c++){var _0x17979c=_0x172176[_0x582b5c];if(_0x17979c[_0x9709('0x5')]===_0x9709('0x6')){_0xb0bd6b[_0x9709('0x7')](_0x17979c[_0x9709('0x8')]);}else if(_0x17979c['type']===_0x9709('0x9')&&_0x17979c[_0x9709('0xa')]){_0x34852c[_0x17979c[_0x9709('0xa')]]&&_0xb0bd6b['push'](_0x34852c[_0x17979c['variableName']][_0x9709('0xb')]());}else if(_0x17979c[_0x9709('0x5')]===_0x9709('0xc')&&_0x17979c['Variable']&&_0x17979c[_0x9709('0xd')]['name']){_0x34852c[_0x17979c[_0x9709('0xd')][_0x9709('0xe')]['toLowerCase']()]&&_0xb0bd6b['push'](_0x34852c[_0x17979c[_0x9709('0xd')][_0x9709('0xe')][_0x9709('0xf')]()][_0x9709('0xb')]());}else if(_0x17979c['type']==='keyValue'){if(_0x17979c[_0x9709('0x10')]===_0x9709('0x6')&&_0x17979c['key']){_0xb0bd6b['push'](util[_0x9709('0x11')]('%s:\x20%s',_0x17979c['key'],_0x17979c[_0x9709('0x12')]));}else if(_0x17979c[_0x9709('0x10')]===_0x9709('0x9')&&_0x17979c[_0x9709('0xa')]&&_0x17979c[_0x9709('0x13')]){_0x34852c[_0x17979c[_0x9709('0xa')]]&&_0xb0bd6b[_0x9709('0x7')](util[_0x9709('0x11')](_0x9709('0x14'),_0x17979c[_0x9709('0x13')],_0x34852c[_0x17979c[_0x9709('0xa')]]));}else if(_0x17979c[_0x9709('0x10')]===_0x9709('0xc')&&_0x17979c['Variable']&&_0x17979c[_0x9709('0xd')][_0x9709('0xe')]&&_0x17979c['key']){_0x34852c[_0x17979c[_0x9709('0xd')][_0x9709('0xe')][_0x9709('0xf')]()]&&_0xb0bd6b['push'](util[_0x9709('0x11')]('%s:\x20%s',_0x17979c[_0x9709('0x13')],_0x34852c[_0x17979c['Variable'][_0x9709('0xe')][_0x9709('0xf')]()]));}}}}return _0xb0bd6b['join'](_0x5bfd1e);};exports[_0x9709('0x15')]=function(_0x5402df){var _0xfa902a=_0x5402df['slice'](-0x1);if(_0xfa902a==='/'){_0x5402df=_0x5402df[_0x9709('0x16')](0x0,_0x5402df[_0x9709('0x17')](_0xfa902a));}return _0x5402df;};exports[_0x9709('0x18')]=function(_0x54ec46){if(!_[_0x9709('0x19')](_0x54ec46)&&_0x54ec46!==''){var _0xb2947b=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return _0xb2947b[_0x9709('0x1a')](String(_0x54ec46)[_0x9709('0xf')]());}else{return![];}};
\ No newline at end of file
+var _0x82ad=['%s:\x20%s','keyType','join','stripTrailingSlash','slice','substring','lastIndexOf','isNil','test','util','getString','length','type','string','push','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','key','format','keyContent'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0x82ad,0xc6));var _0xd82a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x82ad[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xd82a('0x0'));exports[_0xd82a('0x1')]=function(_0x36b499,_0x30a4a9,_0x429101){var _0x58e6e4=[];if(_0x36b499[_0xd82a('0x2')]>0x0){var _0x4f51f2=_['sortBy'](_0x36b499,['id']);for(var _0x42b836=0x0;_0x42b836<_0x4f51f2[_0xd82a('0x2')];_0x42b836++){var _0x378957=_0x4f51f2[_0x42b836];if(_0x378957[_0xd82a('0x3')]===_0xd82a('0x4')){_0x58e6e4[_0xd82a('0x5')](_0x378957[_0xd82a('0x6')]);}else if(_0x378957[_0xd82a('0x3')]===_0xd82a('0x7')&&_0x378957['variableName']){_0x30a4a9[_0x378957[_0xd82a('0x8')]]&&_0x58e6e4[_0xd82a('0x5')](_0x30a4a9[_0x378957[_0xd82a('0x8')]][_0xd82a('0x9')]());}else if(_0x378957[_0xd82a('0x3')]===_0xd82a('0xa')&&_0x378957[_0xd82a('0xb')]&&_0x378957[_0xd82a('0xb')][_0xd82a('0xc')]){_0x30a4a9[_0x378957[_0xd82a('0xb')][_0xd82a('0xc')]['toLowerCase']()]&&_0x58e6e4[_0xd82a('0x5')](_0x30a4a9[_0x378957[_0xd82a('0xb')][_0xd82a('0xc')][_0xd82a('0xd')]()][_0xd82a('0x9')]());}else if(_0x378957[_0xd82a('0x3')]===_0xd82a('0xe')){if(_0x378957['keyType']===_0xd82a('0x4')&&_0x378957[_0xd82a('0xf')]){_0x58e6e4['push'](util[_0xd82a('0x10')]('%s:\x20%s',_0x378957[_0xd82a('0xf')],_0x378957[_0xd82a('0x11')]));}else if(_0x378957['keyType']==='variable'&&_0x378957[_0xd82a('0x8')]&&_0x378957['key']){_0x30a4a9[_0x378957[_0xd82a('0x8')]]&&_0x58e6e4[_0xd82a('0x5')](util['format'](_0xd82a('0x12'),_0x378957[_0xd82a('0xf')],_0x30a4a9[_0x378957[_0xd82a('0x8')]]));}else if(_0x378957[_0xd82a('0x13')]===_0xd82a('0xa')&&_0x378957[_0xd82a('0xb')]&&_0x378957[_0xd82a('0xb')][_0xd82a('0xc')]&&_0x378957['key']){_0x30a4a9[_0x378957[_0xd82a('0xb')][_0xd82a('0xc')]['toLowerCase']()]&&_0x58e6e4[_0xd82a('0x5')](util['format'](_0xd82a('0x12'),_0x378957['key'],_0x30a4a9[_0x378957[_0xd82a('0xb')]['name'][_0xd82a('0xd')]()]));}}}}return _0x58e6e4[_0xd82a('0x14')](_0x429101);};exports[_0xd82a('0x15')]=function(_0x1f1137){var _0x2ed5a4=_0x1f1137[_0xd82a('0x16')](-0x1);if(_0x2ed5a4==='/'){_0x1f1137=_0x1f1137[_0xd82a('0x17')](0x0,_0x1f1137[_0xd82a('0x18')](_0x2ed5a4));}return _0x1f1137;};exports['validateEmail']=function(_0x119618){if(!_[_0xd82a('0x19')](_0x119618)&&_0x119618!==''){var _0x786fa2=/^(([^<>()\[\]\\.,;:\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 _0x786fa2[_0xd82a('0x1a')](String(_0x119618)[_0xd82a('0xd')]());}else{return![];}};
\ No newline at end of file
index 48863db..b863910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
+var _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','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','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_0x466348,_0x4dd3d6){var _0x46a716=function(_0x21fd67){while(--_0x21fd67){_0x466348['push'](_0x466348['shift']());}};_0x46a716(++_0x4dd3d6);}(_0x9c44,0x178));var _0x49c4=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x9c44[_0x68c979];return _0x4f0001;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_['includes']([_0x49c4('0xb'),_0x49c4('0xc')],_0x313e73['type'])&&_0x313e73['idField']){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x313e73[_0x49c4('0xe')]['toString']();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x10')&&_0x313e73['variableName']&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x11')]]){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]][_0x49c4('0x12')]();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x13')&&_0x313e73[_0x49c4('0x14')]&&_0x313e73['Variable'][_0x49c4('0x15')]&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')][_0x49c4('0x16')]()]){_0x4c7d3a[_0x313e73['idField']]=_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')]['toLowerCase']()]['toString']();}});}return _0x4c7d3a;}function createTicket(_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d,_0x50b151,_0x2cbd50){logger[_0x49c4('0x17')](_0x49c4('0x18'));var _0x291526=_[_0x49c4('0x19')]({'parent_id':'','assigned_user_id':_0x2f82d5['id'],'ticketpriorities':_0x49c4('0x1a'),'ticketstatus':_0x49c4('0x1b'),'ticket_title':intUtil[_0x49c4('0x1c')](_0x59f29b[_0x49c4('0x1d')],_0x24856d,'\x20'),'description':intUtil['getString'](_0x59f29b['Descriptions'],_0x24856d,'\x0a'),'contact_id':_0x3addb2['id']},getCustomFields(_0x50b151,_0x24856d));var _0x57f502={'method':_0x49c4('0x1e'),'uri':util['format']('%s/webservice.php',_0x3c782d[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x20'),'username':_0x3c782d[_0x49c4('0x21')],'sessionName':_0x2cbd50[_0x49c4('0x22')],'elementType':'HelpDesk','element':JSON['stringify'](_0x291526)},'json':!![]};return request(_0x57f502)[_0x49c4('0x23')](function(_0x9cb797){if(_0x9cb797['success']){return BPromise[_0x49c4('0x24')]({'id':_0x9cb797[_0x49c4('0x25')]['id']});}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x27'),JSON['stringify'](_0x9cb797['error'])));}})[_0x49c4('0x28')](function(_0x53c199){var _0x3800b7=_0x53c199[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'createTicket',_0x3800b7,JSON[_0x49c4('0x2c')](_0x53c199));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){if(intUtil[_0x49c4('0x2d')](_0x46e04d)){logger[_0x49c4('0x17')](_0x49c4('0x2e'),_0x46e04d);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2b2793[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x2b2793['username'],'sessionName':_0x4f28a2['sessionName'],'query':util[_0x49c4('0x26')](_0x49c4('0x31'),_0x46e04d)},'json':!![]})[_0x49c4('0x23')](function(_0x27e467){if(_0x27e467[_0x49c4('0x32')]&&_0x27e467['result'][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x34'));return BPromise[_0x49c4('0x24')]({'id':_0x27e467['result'][0x0]['id'],'email':_0x27e467['result'][0x0][_0x49c4('0x35')],'name':_0x27e467[_0x49c4('0x25')][0x0][_0x49c4('0x36')]+'\x20'+_0x27e467[_0x49c4('0x25')][_0x49c4('0x37')]});}else{logger['info'](_0x49c4('0x38'));return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2[_0x49c4('0x39')],'email':_0x2b2793['username'],'name':'admin'});}})[_0x49c4('0x28')](function(_0x1991e9){var _0x3bec0a=_0x1991e9[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x3a'),_0x3bec0a,JSON[_0x49c4('0x2c')](_0x1991e9));});}else{logger[_0x49c4('0x17')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2['userId'],'email':_0x2b2793[_0x49c4('0x21')],'name':_0x49c4('0x3b')})[_0x49c4('0x28')](function(_0x1c2830){var _0x4ed4f8=_0x1c2830[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'getUser',_0x4ed4f8,JSON[_0x49c4('0x2c')](_0x1c2830));});}}function getEndUser(_0x21d8c7,_0x178987,_0x5e5366,_0x1ba7a0){logger[_0x49c4('0x17')](_0x49c4('0x3c'),_0x5e5366);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x21d8c7[_0x49c4('0x21')],'sessionName':_0x1ba7a0[_0x49c4('0x22')],'query':util[_0x49c4('0x26')](_0x49c4('0x3d'),_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366)},'json':!![]})[_0x49c4('0x23')](function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x32')]&&_0x29dd5d[_0x49c4('0x25')][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x3e'));return BPromise[_0x49c4('0x24')]({'id':_0x29dd5d[_0x49c4('0x25')][0x0]['id'],'name':_0x29dd5d['result'][0x0][_0x49c4('0x3f')]+'\x20'+_0x29dd5d['result'][0x0][_0x49c4('0x40')],'phone':_0x5e5366});}else{logger[_0x49c4('0x17')](_0x49c4('0x41'));return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7['remoteUri']),'form':{'operation':'create','sessionName':_0x1ba7a0[_0x49c4('0x22')],'elementType':_0x49c4('0x42'),'element':JSON[_0x49c4('0x2c')]({'lastname':_0x178987,'phone':_0x5e5366,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x23')](function(_0x490823){logger[_0x49c4('0x17')](_0x49c4('0x43'));return BPromise[_0x49c4('0x24')]({'id':_0x490823[_0x49c4('0x25')]['id'],'name':_0x490823[_0x49c4('0x25')][_0x49c4('0x40')],'phone':_0x490823[_0x49c4('0x25')][_0x49c4('0x44')]});})[_0x49c4('0x28')](function(_0x5640d3){var _0x2ad771=_0x5640d3['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x45'),_0x2ad771,JSON[_0x49c4('0x2c')](_0x5640d3));});}});}function getConnection(_0x2d93d8){var _0x5b296d=_0x2d93d8[_0x49c4('0x21')];var _0x15b674=_0x2d93d8[_0x49c4('0x46')];return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'qs':{'operation':'getchallenge','username':_0x5b296d},'json':!![]})[_0x49c4('0x23')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x32')]){return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x47'),'username':_0x5b296d,'accessKey':md5(_0x5cfff9[_0x49c4('0x25')]['token']+_0x15b674)},'json':!![]});}})[_0x49c4('0x23')](function(_0x3feaf0){if(_0x3feaf0['success']){return BPromise[_0x49c4('0x24')](_0x3feaf0[_0x49c4('0x25')]);}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x48'),_0x2d93d8['id']));}})['catch'](function(_0x5d8bf0){var _0x144fd2=_0x5d8bf0['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x49'),_0x144fd2,JSON[_0x49c4('0x2c')](_0x5d8bf0));});}function request(_0x240c20){logger[_0x49c4('0x17')](_0x49c4('0x4a'),JSON['stringify'](_0x240c20));return rp(_0x240c20);}exports[_0x49c4('0x4b')]=function(_0x1550ce,_0x3936d3,_0x3d944c,_0x17ef75,_0x2644c0,_0x156748){var _0x25d174,_0x1e0b4f,_0x1856be,_0x5b822f;_0x156748['remoteUri']=intUtil[_0x49c4('0x4c')](_0x156748[_0x49c4('0x1f')]);if(_0x2644c0&&_0x2644c0['monitor_format']){logger['info'](_0x49c4('0x4d'),'Recording\x20is\x20enabled!');_0x3936d3['recordingURL']=util[_0x49c4('0x26')](_0x49c4('0x4e'),_0x156748[_0x49c4('0x4f')],_0x3936d3[_0x49c4('0x50')],md5(_0x3936d3[_0x49c4('0x50')]));}else{_0x3936d3[_0x49c4('0x51')]='';}return getConnection(_0x156748)[_0x49c4('0x23')](function(_0x50798e){_0x5b822f=_0x50798e;return getUser(_0x156748,_0x17ef75[_0x49c4('0x52')],_0x5b822f);})[_0x49c4('0x23')](function(_0x207572){_0x25d174=_0x207572;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x25d174['id']);return getEndUser(_0x156748,_0x3936d3[_0x49c4('0x54')],_0x3936d3['calleridnum'],_0x5b822f);})['then'](function(_0x1ef0c1){_0x1e0b4f=_0x1ef0c1;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0x1e0b4f['id']);return createTicket(_0x156748,_0x25d174,_0x1e0b4f,_0x3d944c,_0x3936d3,_0x3d944c[_0x49c4('0x56')],_0x5b822f);})[_0x49c4('0x23')](function(_0x6b2592){_0x1856be=_0x6b2592;logger[_0x49c4('0x17')]('Ticket\x20created!');logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x1856be['id']);var _0x4ba4eb=util[_0x49c4('0x26')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x156748[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x1856be['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x4d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x17ef75[_0x49c4('0x15')]),'trigger:browser:url',{'uri':_0x4ba4eb});})[_0x49c4('0x28')](function(_0x27b9c2){logger['error'](_0x49c4('0x4d'),JSON[_0x49c4('0x2c')](_0x27b9c2));});};exports['outbound']=function(_0x39c455,_0x42e0e6,_0x4f50bf,_0x4dc54d,_0x589484,_0x513879,_0xc43386){var _0x54947d,_0xb20a5d,_0x32f344,_0x515240;_0x513879[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x513879['remoteUri']);_0x513879[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x513879[_0x49c4('0x4f')]);if(_0xc43386&&_0xc43386[_0x49c4('0x5b')]&&_0xc43386['recordingFormat']!==_0x49c4('0x5c')){logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x5e'));_0x42e0e6['recordingURL']=util[_0x49c4('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513879['serverUrl'],_0x42e0e6['uniqueid'],md5(_0x42e0e6['uniqueid']));}return getConnection(_0x513879)[_0x49c4('0x23')](function(_0x32eaef){_0x515240=_0x32eaef;return getUser(_0x513879,_0x4dc54d[_0x49c4('0x52')],_0x515240);})[_0x49c4('0x23')](function(_0x5b056e){_0x54947d=_0x5b056e;logger['info'](_0x49c4('0x53'),_0x54947d['id']);return getEndUser(_0x513879,_0x42e0e6[_0x49c4('0x5f')],_0x42e0e6[_0x49c4('0x60')],_0x515240);})[_0x49c4('0x23')](function(_0x102c15){_0xb20a5d=_0x102c15;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0xb20a5d['id']);return createTicket(_0x513879,_0x54947d,_0xb20a5d,_0x4f50bf,_0x42e0e6,_0x4f50bf[_0x49c4('0x56')],_0x515240);})['then'](function(_0x2276db){_0x32f344=_0x2276db;logger['info'](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x32f344['id']);var _0x1ea1b4=util[_0x49c4('0x26')](_0x49c4('0x62'),_0x513879[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x32f344['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x4dc54d[_0x49c4('0x15')]),_0x49c4('0x63'),{'uri':_0x1ea1b4});})[_0x49c4('0x28')](function(_0x371e49){logger[_0x49c4('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x371e49));});};exports[_0x49c4('0x64')]=function(_0x16b3e8,_0x4af680,_0x1a15f3,_0x38ad50,_0x2939fd,_0x16e7b1){var _0x4d6aaa,_0x5a14a5,_0x4a85d4,_0x2e90d8;_0x16e7b1[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x1f')]);_0x16e7b1[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x4f')]);if(_0x2939fd&&_0x2939fd[_0x49c4('0x65')]){logger[_0x49c4('0x17')]('['+_0x4af680['lastevent'][_0x49c4('0x66')]()+']',_0x49c4('0x5e'));_0x4af680[_0x49c4('0x51')]=util['format'](_0x49c4('0x4e'),_0x16e7b1[_0x49c4('0x4f')],_0x4af680[_0x49c4('0x50')],md5(_0x4af680[_0x49c4('0x50')]));}else{_0x4af680[_0x49c4('0x51')]='';}return getConnection(_0x16e7b1)[_0x49c4('0x23')](function(_0x35fa39){_0x2e90d8=_0x35fa39;return getUser(_0x16e7b1,'',_0x2e90d8);})[_0x49c4('0x23')](function(_0x4ba198){_0x4d6aaa=_0x4ba198;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x4d6aaa['id']);return getEndUser(_0x16e7b1,_0x4af680[_0x49c4('0x54')],_0x4af680[_0x49c4('0x67')],_0x2e90d8);})[_0x49c4('0x23')](function(_0x4a204d){_0x5a14a5=_0x4a204d;logger['info'](_0x49c4('0x55'),_0x5a14a5['id']);return createTicket(_0x16e7b1,_0x4d6aaa,_0x5a14a5,_0x1a15f3,_0x4af680,_0x1a15f3['Fields'],_0x2e90d8);})[_0x49c4('0x23')](function(_0x558880){_0x4a85d4=_0x558880;logger[_0x49c4('0x17')](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x4a85d4['id']);})['catch'](function(_0x123060){logger[_0x49c4('0x2a')]('['+_0x4af680[_0x49c4('0x68')][_0x49c4('0x66')]()+']',JSON[_0x49c4('0x2c')](_0x123060));});};
\ No newline at end of file
index 5966400..eb3fd26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x762b=['token','toString','base64','debug','stringify','GET','map','forEach','includes','string','picklist','type','customField','nameField','toLowerCase','content','idField','custom_fields','push','variable','variableName','customVariable','Variable','name','stripTrailingSlash','serverUrl','recordingURL','uniqueid','Authorization','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','%s/channels/voice/agents/%d/tickets/%d/display.json','user:%s','trigger:browser:url','%s/agent/tickets/%s','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','email','The\x20User\x20ID\x20is:','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','newTab','replace','unmanaged','monitor_format','lastevent','toUpperCase','calleridname','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','zendesk','defaults','localhost','socket.io-emitter','redis','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','getString','Subjects','Descriptions','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','filter','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username'];(function(_0x22cc16,_0x1f4fa2){var _0x399b70=function(_0x34d464){while(--_0x34d464){_0x22cc16['push'](_0x22cc16['shift']());}};_0x399b70(++_0x1f4fa2);}(_0x762b,0xac));var _0xb762=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x762b[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xb762('0x0'));var rp=require(_0xb762('0x1'));var md5=require(_0xb762('0x2'));var util=require(_0xb762('0x3'));var Redis=require(_0xb762('0x4'));var intUtil=require(_0xb762('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb762('0x6'))(_0xb762('0x7'));config['redis']=_[_0xb762('0x8')](config['redis'],{'host':_0xb762('0x9'),'port':0x18eb});var io=require(_0xb762('0xa'))(new Redis(config[_0xb762('0xb')]));function emit(_0x175646,_0x4c2eb9,_0x322d1d){io['to'](_0x175646)['emit'](_0x4c2eb9,_0x322d1d);}var headers={'Content-Type':_0xb762('0xc'),'Accept':_0xb762('0xc')};function getTicket(_0xf0dde,_0x73d70,_0x17e7ee,_0x26c18f,_0x131ddf){logger[_0xb762('0xd')](_0xb762('0xe'));return request({'uri':util[_0xb762('0xf')](_0xb762('0x10'),_0xf0dde[_0xb762('0x11')]),'method':_0xb762('0x12'),'body':{'ticket':_[_0xb762('0x13')]({'requester_id':_0x17e7ee['id'],'submitter_id':_0x73d70?_0x73d70['id']:undefined,'assignee_id':_0x73d70?_0x73d70['id']:undefined,'tags':getTags(_0x26c18f['Tags'],'name'),'subject':intUtil[_0xb762('0x14')](_0x26c18f[_0xb762('0x15')],_0x131ddf,'\x20'),'description':intUtil[_0xb762('0x14')](_0x26c18f[_0xb762('0x16')],_0x131ddf,'\x0a'),'comment':{'public':![],'body':intUtil[_0xb762('0x14')](_0x26c18f[_0xb762('0x16')],_0x131ddf,'\x0a')}},getCustomFields(_0x26c18f['Fields'],_0x131ddf))}})[_0xb762('0x17')](function(_0x141e58){logger[_0xb762('0xd')](_0xb762('0x18'));return _0x141e58[_0xb762('0x19')];});}function getUser(_0x1826a3,_0x2199a4){if(intUtil[_0xb762('0x1a')](_0x2199a4)){logger[_0xb762('0xd')](_0xb762('0x1b'),_0x2199a4);return request({'uri':util[_0xb762('0xf')](_0xb762('0x1c'),_0x1826a3['remoteUri']),'qs':{'query':util['format']('type:user\x20role:agent\x20email:%s',_0x2199a4)}})[_0xb762('0x17')](function(_0x8e268d){if(_0x8e268d['count']){logger[_0xb762('0xd')](_0xb762('0x1d'));return _[_0xb762('0x1e')](_0x8e268d[_0xb762('0x1f')],{'email':_0x2199a4,'role':_0xb762('0x20')});}else{logger['info'](_0xb762('0x21'));return request({'uri':util[_0xb762('0xf')](_0xb762('0x22'),_0x1826a3[_0xb762('0x11')])})[_0xb762('0x17')](function(_0x584239){logger[_0xb762('0xd')](_0xb762('0x23'));return _0x584239['user'];});}});}else{logger[_0xb762('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xb762('0xf')](_0xb762('0x22'),_0x1826a3[_0xb762('0x11')])})[_0xb762('0x17')](function(_0x23029e){logger[_0xb762('0xd')]('Admin\x20account\x20selected.');return _0x23029e[_0xb762('0x24')];});}}function getEndUser(_0x11ca3d,_0x2ddd28,_0x2980ad){logger[_0xb762('0xd')](_0xb762('0x25'),_0x2980ad);return request({'uri':util[_0xb762('0xf')](_0xb762('0x1c'),_0x11ca3d[_0xb762('0x11')]),'qs':{'query':util[_0xb762('0xf')](_0xb762('0x26'),_0x2980ad)}})[_0xb762('0x17')](function(_0x349534){var _0x2279d3;if(_0x349534[_0xb762('0x1f')]['length']){_0x349534[_0xb762('0x1f')]=_[_0xb762('0x27')](_0x349534[_0xb762('0x1f')],{'suspended':![],'role':'end-user'});if(_0x349534[_0xb762('0x1f')][_0xb762('0x28')]){_0x2279d3=_[_0xb762('0x29')](_0x349534[_0xb762('0x1f')]);}}if(_0x2279d3){logger['info'](_0xb762('0x2a'));return _0x2279d3;}else{logger[_0xb762('0xd')](_0xb762('0x2b'));return request({'uri':util['format']('%s/users.json',_0x11ca3d[_0xb762('0x11')]),'method':_0xb762('0x12'),'body':{'user':{'role':'end-user','name':util['format'](_0xb762('0x2c'),_0x2ddd28||_0x2980ad),'phone':_0x2980ad}}})[_0xb762('0x17')](function(_0x3b7935){logger[_0xb762('0xd')](_0xb762('0x2d'));return _0x3b7935[_0xb762('0x24')];});}});}function getAuth(_0x5f2dc0){var _0x2e9056;if(_0x5f2dc0[_0xb762('0x2e')]===_0xb762('0x2f')){_0x2e9056=util[_0xb762('0xf')](_0xb762('0x30'),_0x5f2dc0['username'],_0x5f2dc0[_0xb762('0x2f')]);}else if(_0x5f2dc0[_0xb762('0x2e')]==='token'){_0x2e9056=util['format']('%s/token:%s',_0x5f2dc0[_0xb762('0x31')],_0x5f2dc0[_0xb762('0x32')]);}return util[_0xb762('0xf')]('Basic\x20%s',new Buffer(_0x2e9056)[_0xb762('0x33')](_0xb762('0x34')));}function request(_0x5ef234){logger[_0xb762('0x35')]('[HTTP]',JSON[_0xb762('0x36')](_0x5ef234));return rp(_[_0xb762('0x8')](_0x5ef234,{'method':_0xb762('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x39d2da,_0x597453){var _0x538f2e=[];if(_0x39d2da&&_0x39d2da[_0xb762('0x28')]>0x0){_0x538f2e=_[_0xb762('0x38')](_0x39d2da,_0x597453);}return _0x538f2e;}function getCustomFields(_0x215a5c,_0x23f72c){var _0x360058=[];var _0xd1e3f5={'custom_fields':[]};if(_0x215a5c['length']>0x0){_[_0xb762('0x39')](_0x215a5c,function(_0x28e44f){if(_[_0xb762('0x3a')]([_0xb762('0x3b'),_0xb762('0x3c')],_0x28e44f[_0xb762('0x3d')])&&_0x28e44f['nameField']&&!_0x28e44f[_0xb762('0x3e')]){_0xd1e3f5[_0x28e44f[_0xb762('0x3f')][_0xb762('0x40')]()]=_0x28e44f[_0xb762('0x41')]['toString']();}else if(_['includes']([_0xb762('0x3b'),_0xb762('0x3c')],_0x28e44f['type'])&&_0x28e44f[_0xb762('0x42')]&&_0x28e44f[_0xb762('0x3e')]){_0xd1e3f5[_0xb762('0x43')][_0xb762('0x44')]({'id':_0x28e44f[_0xb762('0x42')],'value':_0x28e44f[_0xb762('0x41')][_0xb762('0x33')]()});}else if(_0x28e44f[_0xb762('0x3d')]===_0xb762('0x45')&&_0x28e44f[_0xb762('0x46')]&&_0x28e44f['idField']&&_0x28e44f[_0xb762('0x3e')]){_0x23f72c[_0x28e44f['variableName']]&&_0xd1e3f5[_0xb762('0x43')][_0xb762('0x44')]({'id':_0x28e44f[_0xb762('0x42')],'value':_0x23f72c[_0x28e44f['variableName']]['toString']()});}else if(_0x28e44f['type']===_0xb762('0x47')&&_0x28e44f[_0xb762('0x48')]&&_0x28e44f[_0xb762('0x48')][_0xb762('0x49')]&&_0x28e44f[_0xb762('0x42')]&&_0x28e44f[_0xb762('0x3e')]){_0x23f72c[_0x28e44f[_0xb762('0x48')]['name'][_0xb762('0x40')]()]&&_0xd1e3f5['custom_fields'][_0xb762('0x44')]({'id':_0x28e44f[_0xb762('0x42')],'value':_0x23f72c[_0x28e44f[_0xb762('0x48')][_0xb762('0x49')][_0xb762('0x40')]()][_0xb762('0x33')]()});}});}return _0xd1e3f5;}exports['queue']=function(_0x2e0b37,_0x30bc4b,_0x421939,_0xe961d0,_0x3d5c3b,_0x2503f4){var _0x54268e,_0x4901d8;_0x2503f4['remoteUri']=intUtil[_0xb762('0x4a')](_0x2503f4[_0xb762('0x11')]);_0x2503f4[_0xb762('0x4b')]=intUtil[_0xb762('0x4a')](_0x2503f4[_0xb762('0x4b')]);if(_0x3d5c3b&&_0x3d5c3b['monitor_format']){logger[_0xb762('0xd')]('[QUEUE]','Recording\x20is\x20enabled!');_0x30bc4b[_0xb762('0x4c')]=util[_0xb762('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2503f4[_0xb762('0x4b')],_0x30bc4b['uniqueid'],md5(_0x30bc4b[_0xb762('0x4d')]));}else{_0x30bc4b['recordingURL']='';}headers[_0xb762('0x4e')]=getAuth(_0x2503f4);return getUser(_0x2503f4,_0xe961d0['email'])['then'](function(_0x5dca24){_0x54268e=_0x5dca24;logger[_0xb762('0xd')]('The\x20User\x20ID\x20is:',_0x54268e['id']);return getEndUser(_0x2503f4,_0x30bc4b['calleridname'],_0x30bc4b[_0xb762('0x4f')]);})[_0xb762('0x17')](function(_0xf5f787){_0x4901d8=_0xf5f787;logger[_0xb762('0xd')](_0xb762('0x50'),_0x4901d8['id']);return getTicket(_0x2503f4,_0x54268e,_0x4901d8,_0x421939,_0x30bc4b);})['then'](function(_0x2fc9db){if(_0x2fc9db){logger[_0xb762('0xd')](_0xb762('0x51'),_0x2fc9db['id']);switch(_0x2503f4[_0xb762('0x3d')]){case _0xb762('0x52'):logger[_0xb762('0xd')](_0xb762('0x53'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xb762('0xf')](_0xb762('0x54'),_0x2503f4[_0xb762('0x11')],_0x54268e['id'],_0x2fc9db['id']),'method':_0xb762('0x12')});case'newTab':logger['info'](_0xb762('0x53'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb762('0xf')](_0xb762('0x55'),_0xe961d0[_0xb762('0x49')]),_0xb762('0x56'),{'uri':util[_0xb762('0xf')](_0xb762('0x57'),_0x2503f4[_0xb762('0x11')]['replace'](_0xb762('0x58'),''),_0x2fc9db['id'])});break;default:logger[_0xb762('0x59')]('[QUEUE]',_0xb762('0x5a'));}}})[_0xb762('0x5b')](function(_0x3fb674){logger[_0xb762('0x59')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0xb762('0x5c')](_0x3fb674,{'showHidden':!![],'depth':null}));});};exports[_0xb762('0x5d')]=function(_0x10f6f2,_0x377756,_0x3ba0dc,_0x160e16,_0x37e50c,_0xcc116e,_0x45292d){var _0x964796,_0x35036e;_0xcc116e[_0xb762('0x11')]=intUtil[_0xb762('0x4a')](_0xcc116e[_0xb762('0x11')]);_0xcc116e[_0xb762('0x4b')]=intUtil['stripTrailingSlash'](_0xcc116e[_0xb762('0x4b')]);if(_0x45292d&&_0x45292d[_0xb762('0x5e')]&&_0x45292d[_0xb762('0x5e')]!==_0xb762('0x5f')){logger[_0xb762('0xd')](_0xb762('0x60'),_0xb762('0x61'));_0x377756['recordingURL']=util['format'](_0xb762('0x62'),_0xcc116e['serverUrl'],_0x377756[_0xb762('0x4d')],md5(_0x377756['uniqueid']));}headers[_0xb762('0x4e')]=getAuth(_0xcc116e);return getUser(_0xcc116e,_0x160e16[_0xb762('0x63')])['then'](function(_0x41b885){_0x964796=_0x41b885;logger[_0xb762('0xd')](_0xb762('0x64'),_0x964796['id']);return getEndUser(_0xcc116e,_0x377756['destcalleridname'],_0x377756[_0xb762('0x65')]);})[_0xb762('0x17')](function(_0x509cb3){_0x35036e=_0x509cb3;logger['info'](_0xb762('0x50'),_0x35036e['id']);return getTicket(_0xcc116e,_0x964796,_0x35036e,_0x3ba0dc,_0x377756);})[_0xb762('0x17')](function(_0x52fd53){if(_0x52fd53){logger[_0xb762('0xd')](_0xb762('0x51'),_0x52fd53['id']);switch(_0xcc116e['type']){case'integrationTab':logger[_0xb762('0xd')](_0xb762('0x60'),_0xb762('0x66'));return request({'uri':util['format'](_0xb762('0x54'),_0xcc116e[_0xb762('0x11')],_0x964796['id'],_0x52fd53['id']),'method':_0xb762('0x12')});case _0xb762('0x67'):logger['info'](_0xb762('0x60'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xb762('0x55'),_0x160e16[_0xb762('0x49')]),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0xcc116e[_0xb762('0x11')][_0xb762('0x68')](_0xb762('0x58'),''),_0x52fd53['id'])});break;default:logger[_0xb762('0x59')](_0xb762('0x60'),_0xb762('0x5a'));}}})[_0xb762('0x5b')](function(_0x9f8af9){logger[_0xb762('0x59')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0xb762('0x5c')](_0x9f8af9,{'showHidden':!![],'depth':null}));});};exports[_0xb762('0x69')]=function(_0x5cddca,_0x243c41,_0x5e2480,_0x297a45,_0x51b48e,_0x48617e){var _0x352e97,_0x3fd4c7;_0x48617e[_0xb762('0x11')]=intUtil[_0xb762('0x4a')](_0x48617e['remoteUri']);_0x48617e['serverUrl']=intUtil[_0xb762('0x4a')](_0x48617e[_0xb762('0x4b')]);if(_0x51b48e&&_0x51b48e[_0xb762('0x6a')]){logger[_0xb762('0xd')]('['+_0x243c41[_0xb762('0x6b')][_0xb762('0x6c')]()+']',_0xb762('0x61'));_0x243c41[_0xb762('0x4c')]=util['format'](_0xb762('0x62'),_0x48617e[_0xb762('0x4b')],_0x243c41[_0xb762('0x4d')],md5(_0x243c41['uniqueid']));}else{_0x243c41[_0xb762('0x4c')]='';}headers[_0xb762('0x4e')]=getAuth(_0x48617e);return getUser(_0x48617e)[_0xb762('0x17')](function(_0x5b20cd){_0x352e97=_0x5b20cd;logger[_0xb762('0xd')](_0xb762('0x64'),_0x352e97['id']);return getEndUser(_0x48617e,_0x243c41[_0xb762('0x6d')],_0x243c41[_0xb762('0x4f')]);})[_0xb762('0x17')](function(_0x24d6da){_0x3fd4c7=_0x24d6da;logger[_0xb762('0xd')](_0xb762('0x50'),_0x3fd4c7['id']);return getTicket(_0x48617e,_0x352e97,_0x3fd4c7,_0x5e2480,_0x243c41);})[_0xb762('0x17')](function(_0x8687b1){if(_0x8687b1){logger[_0xb762('0xd')](_0xb762('0x51'),_0x8687b1['id']);}})[_0xb762('0x5b')](function(_0x4808f5){logger[_0xb762('0x59')]('['+_0x243c41[_0xb762('0x6b')][_0xb762('0x6c')]()+']'+_0xb762('0x6e'),util[_0xb762('0x5c')](_0x4808f5,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x028b=['destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','monitor_format','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','zendesk','redis','socket.io-emitter','emit','application/json','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','name','getString','Subjects','Descriptions','Fields','then','info','Ticket\x20created!','validateEmail','type:user\x20role:agent\x20email:%s','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','length','filter','first','Enduser\x20found!','%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','authType','%s:%s','username','password','token','toString','debug','[HTTP]','stringify','defaults','string','picklist','type','nameField','customField','toLowerCase','content','includes','idField','variableName','custom_fields','push','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:'];(function(_0x4ae1a7,_0x586b3d){var _0x2f04f0=function(_0xe352b9){while(--_0xe352b9){_0x4ae1a7['push'](_0x4ae1a7['shift']());}};_0x2f04f0(++_0x586b3d);}(_0x028b,0x1b5));var _0xb028=function(_0x41d746,_0x356002){_0x41d746=_0x41d746-0x0;var _0x4095ac=_0x028b[_0x41d746];return _0x4095ac;};'use strict';var _=require(_0xb028('0x0'));var rp=require(_0xb028('0x1'));var md5=require(_0xb028('0x2'));var util=require(_0xb028('0x3'));var Redis=require(_0xb028('0x4'));var intUtil=require(_0xb028('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb028('0x6'))(_0xb028('0x7'));config[_0xb028('0x8')]=_['defaults'](config[_0xb028('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xb028('0x9'))(new Redis(config[_0xb028('0x8')]));function emit(_0x2bcf44,_0x2d4eff,_0x7f1db0){io['to'](_0x2bcf44)[_0xb028('0xa')](_0x2d4eff,_0x7f1db0);}var headers={'Content-Type':_0xb028('0xb'),'Accept':_0xb028('0xb')};function getTicket(_0xa3ee62,_0x339248,_0x135e91,_0x1dbc00,_0xe7aa0c){logger['info'](_0xb028('0xc'));return request({'uri':util[_0xb028('0xd')](_0xb028('0xe'),_0xa3ee62[_0xb028('0xf')]),'method':_0xb028('0x10'),'body':{'ticket':_[_0xb028('0x11')]({'requester_id':_0x135e91['id'],'submitter_id':_0x339248?_0x339248['id']:undefined,'assignee_id':_0x339248?_0x339248['id']:undefined,'tags':getTags(_0x1dbc00['Tags'],_0xb028('0x12')),'subject':intUtil[_0xb028('0x13')](_0x1dbc00[_0xb028('0x14')],_0xe7aa0c,'\x20'),'description':intUtil[_0xb028('0x13')](_0x1dbc00['Descriptions'],_0xe7aa0c,'\x0a'),'comment':{'public':![],'body':intUtil[_0xb028('0x13')](_0x1dbc00[_0xb028('0x15')],_0xe7aa0c,'\x0a')}},getCustomFields(_0x1dbc00[_0xb028('0x16')],_0xe7aa0c))}})[_0xb028('0x17')](function(_0x17c691){logger[_0xb028('0x18')](_0xb028('0x19'));return _0x17c691['ticket'];});}function getUser(_0x66baa6,_0x247959){if(intUtil[_0xb028('0x1a')](_0x247959)){logger[_0xb028('0x18')]('Getting\x20agent\x20with\x20email',_0x247959);return request({'uri':util[_0xb028('0xd')]('%s/search.json',_0x66baa6['remoteUri']),'qs':{'query':util[_0xb028('0xd')](_0xb028('0x1b'),_0x247959)}})[_0xb028('0x17')](function(_0x589ab0){if(_0x589ab0['count']){logger['info'](_0xb028('0x1c'));return _[_0xb028('0x1d')](_0x589ab0[_0xb028('0x1e')],{'email':_0x247959,'role':_0xb028('0x1f')});}else{logger[_0xb028('0x18')](_0xb028('0x20'));return request({'uri':util[_0xb028('0xd')](_0xb028('0x21'),_0x66baa6[_0xb028('0xf')])})[_0xb028('0x17')](function(_0xb4065a){logger[_0xb028('0x18')](_0xb028('0x22'));return _0xb4065a[_0xb028('0x23')];});}});}else{logger[_0xb028('0x18')](_0xb028('0x20'));return request({'uri':util[_0xb028('0xd')](_0xb028('0x21'),_0x66baa6[_0xb028('0xf')])})[_0xb028('0x17')](function(_0x1fc824){logger[_0xb028('0x18')](_0xb028('0x22'));return _0x1fc824['user'];});}}function getEndUser(_0x1076ee,_0x326ad4,_0x451c15){logger[_0xb028('0x18')](_0xb028('0x24'),_0x451c15);return request({'uri':util[_0xb028('0xd')]('%s/search.json',_0x1076ee['remoteUri']),'qs':{'query':util['format']('type:user\x20role:end-user\x20phone:%s',_0x451c15)}})['then'](function(_0x2ccdc6){var _0x40a5b8;if(_0x2ccdc6[_0xb028('0x1e')][_0xb028('0x25')]){_0x2ccdc6[_0xb028('0x1e')]=_[_0xb028('0x26')](_0x2ccdc6[_0xb028('0x1e')],{'suspended':![],'role':'end-user'});if(_0x2ccdc6['results']['length']){_0x40a5b8=_[_0xb028('0x27')](_0x2ccdc6[_0xb028('0x1e')]);}}if(_0x40a5b8){logger[_0xb028('0x18')](_0xb028('0x28'));return _0x40a5b8;}else{logger[_0xb028('0x18')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xb028('0xd')](_0xb028('0x29'),_0x1076ee[_0xb028('0xf')]),'method':'POST','body':{'user':{'role':_0xb028('0x2a'),'name':util['format'](_0xb028('0x2b'),_0x326ad4||_0x451c15),'phone':_0x451c15}}})['then'](function(_0x4a049e){logger[_0xb028('0x18')](_0xb028('0x2c'));return _0x4a049e[_0xb028('0x23')];});}});}function getAuth(_0x61bea5){var _0x2da882;if(_0x61bea5[_0xb028('0x2d')]==='password'){_0x2da882=util[_0xb028('0xd')](_0xb028('0x2e'),_0x61bea5[_0xb028('0x2f')],_0x61bea5[_0xb028('0x30')]);}else if(_0x61bea5[_0xb028('0x2d')]===_0xb028('0x31')){_0x2da882=util[_0xb028('0xd')]('%s/token:%s',_0x61bea5['username'],_0x61bea5[_0xb028('0x31')]);}return util[_0xb028('0xd')]('Basic\x20%s',new Buffer(_0x2da882)[_0xb028('0x32')]('base64'));}function request(_0x44283b){logger[_0xb028('0x33')](_0xb028('0x34'),JSON[_0xb028('0x35')](_0x44283b));return rp(_[_0xb028('0x36')](_0x44283b,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x5ae882,_0x49e718){var _0x186985=[];if(_0x5ae882&&_0x5ae882[_0xb028('0x25')]>0x0){_0x186985=_['map'](_0x5ae882,_0x49e718);}return _0x186985;}function getCustomFields(_0x49982b,_0x5c4569){var _0x26932b=[];var _0x2d797c={'custom_fields':[]};if(_0x49982b['length']>0x0){_['forEach'](_0x49982b,function(_0x56e4fa){if(_['includes']([_0xb028('0x37'),_0xb028('0x38')],_0x56e4fa[_0xb028('0x39')])&&_0x56e4fa[_0xb028('0x3a')]&&!_0x56e4fa[_0xb028('0x3b')]){_0x2d797c[_0x56e4fa[_0xb028('0x3a')][_0xb028('0x3c')]()]=_0x56e4fa[_0xb028('0x3d')]['toString']();}else if(_[_0xb028('0x3e')](['string','picklist'],_0x56e4fa[_0xb028('0x39')])&&_0x56e4fa[_0xb028('0x3f')]&&_0x56e4fa[_0xb028('0x3b')]){_0x2d797c['custom_fields']['push']({'id':_0x56e4fa[_0xb028('0x3f')],'value':_0x56e4fa[_0xb028('0x3d')]['toString']()});}else if(_0x56e4fa[_0xb028('0x39')]==='variable'&&_0x56e4fa[_0xb028('0x40')]&&_0x56e4fa[_0xb028('0x3f')]&&_0x56e4fa[_0xb028('0x3b')]){_0x5c4569[_0x56e4fa[_0xb028('0x40')]]&&_0x2d797c[_0xb028('0x41')][_0xb028('0x42')]({'id':_0x56e4fa[_0xb028('0x3f')],'value':_0x5c4569[_0x56e4fa[_0xb028('0x40')]]['toString']()});}else if(_0x56e4fa['type']==='customVariable'&&_0x56e4fa[_0xb028('0x43')]&&_0x56e4fa['Variable'][_0xb028('0x12')]&&_0x56e4fa['idField']&&_0x56e4fa[_0xb028('0x3b')]){_0x5c4569[_0x56e4fa[_0xb028('0x43')][_0xb028('0x12')][_0xb028('0x3c')]()]&&_0x2d797c['custom_fields']['push']({'id':_0x56e4fa['idField'],'value':_0x5c4569[_0x56e4fa[_0xb028('0x43')][_0xb028('0x12')][_0xb028('0x3c')]()]['toString']()});}});}return _0x2d797c;}exports[_0xb028('0x44')]=function(_0x144cb2,_0x47675d,_0x28cf8b,_0x3f50b7,_0x14f77c,_0x535877){var _0x3cd939,_0x2c342a;_0x535877[_0xb028('0xf')]=intUtil[_0xb028('0x45')](_0x535877[_0xb028('0xf')]);_0x535877['serverUrl']=intUtil[_0xb028('0x45')](_0x535877[_0xb028('0x46')]);if(_0x14f77c&&_0x14f77c['monitor_format']){logger[_0xb028('0x18')](_0xb028('0x47'),_0xb028('0x48'));_0x47675d[_0xb028('0x49')]=util['format'](_0xb028('0x4a'),_0x535877['serverUrl'],_0x47675d[_0xb028('0x4b')],md5(_0x47675d[_0xb028('0x4b')]));}else{_0x47675d[_0xb028('0x49')]='';}headers[_0xb028('0x4c')]=getAuth(_0x535877);return getUser(_0x535877,_0x3f50b7['email'])[_0xb028('0x17')](function(_0x409f7f){_0x3cd939=_0x409f7f;logger[_0xb028('0x18')]('The\x20User\x20ID\x20is:',_0x3cd939['id']);return getEndUser(_0x535877,_0x47675d['calleridname'],_0x47675d[_0xb028('0x4d')]);})[_0xb028('0x17')](function(_0xc7e7e7){_0x2c342a=_0xc7e7e7;logger[_0xb028('0x18')](_0xb028('0x4e'),_0x2c342a['id']);return getTicket(_0x535877,_0x3cd939,_0x2c342a,_0x28cf8b,_0x47675d);})[_0xb028('0x17')](function(_0x1e4e70){if(_0x1e4e70){logger[_0xb028('0x18')](_0xb028('0x4f'),_0x1e4e70['id']);switch(_0x535877[_0xb028('0x39')]){case _0xb028('0x50'):logger['info'](_0xb028('0x47'),_0xb028('0x51'));return request({'uri':util[_0xb028('0xd')](_0xb028('0x52'),_0x535877[_0xb028('0xf')],_0x3cd939['id'],_0x1e4e70['id']),'method':_0xb028('0x10')});case _0xb028('0x53'):logger[_0xb028('0x18')](_0xb028('0x47'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb028('0xd')](_0xb028('0x54'),_0x3f50b7['name']),_0xb028('0x55'),{'uri':util[_0xb028('0xd')](_0xb028('0x56'),_0x535877[_0xb028('0xf')][_0xb028('0x57')](_0xb028('0x58'),''),_0x1e4e70['id'])});break;default:logger[_0xb028('0x59')](_0xb028('0x47'),_0xb028('0x5a'));}}})['catch'](function(_0x5f291e){logger[_0xb028('0x59')](_0xb028('0x5b'),util[_0xb028('0x5c')](_0x5f291e,{'showHidden':!![],'depth':null}));});};exports[_0xb028('0x5d')]=function(_0x5ec791,_0x46ae55,_0x4f4edb,_0x14fcf8,_0x213bd0,_0x28d89e,_0x1c1ee1){var _0x5e0db9,_0x4f09f2;_0x28d89e[_0xb028('0xf')]=intUtil['stripTrailingSlash'](_0x28d89e[_0xb028('0xf')]);_0x28d89e['serverUrl']=intUtil[_0xb028('0x45')](_0x28d89e[_0xb028('0x46')]);if(_0x1c1ee1&&_0x1c1ee1[_0xb028('0x5e')]&&_0x1c1ee1[_0xb028('0x5e')]!==_0xb028('0x5f')){logger[_0xb028('0x18')](_0xb028('0x60'),_0xb028('0x48'));_0x46ae55[_0xb028('0x49')]=util[_0xb028('0xd')](_0xb028('0x4a'),_0x28d89e[_0xb028('0x46')],_0x46ae55[_0xb028('0x4b')],md5(_0x46ae55[_0xb028('0x4b')]));}headers[_0xb028('0x4c')]=getAuth(_0x28d89e);return getUser(_0x28d89e,_0x14fcf8['email'])['then'](function(_0x488d6c){_0x5e0db9=_0x488d6c;logger[_0xb028('0x18')](_0xb028('0x61'),_0x5e0db9['id']);return getEndUser(_0x28d89e,_0x46ae55[_0xb028('0x62')],_0x46ae55[_0xb028('0x63')]);})[_0xb028('0x17')](function(_0x532c19){_0x4f09f2=_0x532c19;logger[_0xb028('0x18')]('The\x20Enduser\x20ID\x20is:',_0x4f09f2['id']);return getTicket(_0x28d89e,_0x5e0db9,_0x4f09f2,_0x4f4edb,_0x46ae55);})[_0xb028('0x17')](function(_0x4db5cc){if(_0x4db5cc){logger[_0xb028('0x18')](_0xb028('0x4f'),_0x4db5cc['id']);switch(_0x28d89e[_0xb028('0x39')]){case _0xb028('0x50'):logger[_0xb028('0x18')]('[OUTBOUND]',_0xb028('0x51'));return request({'uri':util[_0xb028('0xd')](_0xb028('0x52'),_0x28d89e['remoteUri'],_0x5e0db9['id'],_0x4db5cc['id']),'method':_0xb028('0x10')});case _0xb028('0x53'):logger[_0xb028('0x18')](_0xb028('0x60'),_0xb028('0x64'));emit(util[_0xb028('0xd')]('user:%s',_0x14fcf8[_0xb028('0x12')]),_0xb028('0x55'),{'uri':util[_0xb028('0xd')](_0xb028('0x56'),_0x28d89e[_0xb028('0xf')]['replace'](_0xb028('0x58'),''),_0x4db5cc['id'])});break;default:logger['error'](_0xb028('0x60'),_0xb028('0x5a'));}}})[_0xb028('0x65')](function(_0x18814e){logger[_0xb028('0x59')](_0xb028('0x66'),util[_0xb028('0x5c')](_0x18814e,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0xf9ac3,_0x47caa4,_0xdcf2f6,_0x572b8e,_0x505045,_0x180a03){var _0x272d3a,_0x428f9d;_0x180a03['remoteUri']=intUtil[_0xb028('0x45')](_0x180a03[_0xb028('0xf')]);_0x180a03[_0xb028('0x46')]=intUtil['stripTrailingSlash'](_0x180a03[_0xb028('0x46')]);if(_0x505045&&_0x505045[_0xb028('0x67')]){logger[_0xb028('0x18')]('['+_0x47caa4['lastevent']['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x47caa4['recordingURL']=util[_0xb028('0xd')](_0xb028('0x4a'),_0x180a03['serverUrl'],_0x47caa4[_0xb028('0x4b')],md5(_0x47caa4[_0xb028('0x4b')]));}else{_0x47caa4['recordingURL']='';}headers['Authorization']=getAuth(_0x180a03);return getUser(_0x180a03)['then'](function(_0x4f7b4b){_0x272d3a=_0x4f7b4b;logger['info']('The\x20User\x20ID\x20is:',_0x272d3a['id']);return getEndUser(_0x180a03,_0x47caa4['calleridname'],_0x47caa4['calleridnum']);})[_0xb028('0x17')](function(_0x2790c0){_0x428f9d=_0x2790c0;logger[_0xb028('0x18')]('The\x20Enduser\x20ID\x20is:',_0x428f9d['id']);return getTicket(_0x180a03,_0x272d3a,_0x428f9d,_0xdcf2f6,_0x47caa4);})['then'](function(_0x54c3cc){if(_0x54c3cc){logger[_0xb028('0x18')]('The\x20Ticket\x20ID\x20is:',_0x54c3cc['id']);}})['catch'](function(_0x571dd4){logger['error']('['+_0x47caa4[_0xb028('0x68')][_0xb028('0x69')]()+']'+_0xb028('0x6a'),util['inspect'](_0x571dd4,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 11632bb..5d6ccd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19cf=['Administrator','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','catch','data','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','SUCCESS','details','enduserType','Error:\x20','CREATE\x20ERROR','GET','moduleSearch','contact_lead','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','lead','Owner','Subject','Description','getString','Descriptions','Full_Name','First_Name','What_Id','Last_Name','Call_Duration','utc','talktime','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','format','lastevent','called','Call_Result','Called','Answered','rejected','Rejected','Abandoned','timeout','Timeout','outbound','agentcalledAt','Call_Type','Inbound','Fields','POST','/crm/v2/Calls','Call\x20created!','err','queue','host','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','com','The\x20User\x20ID\x20is:','calleridname','The\x20Call\x20ID\x20is:','user:%s','trigger:browser:url','https://crm.','stripTrailingSlash','recordingFormat','none','zoho.eu','destcalleridname','destcalleridnum','[OUTBOUND]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','monitor_format','toUpperCase','calleridnum','lodash','request-promise','util','./util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','socket.io-emitter','emit','debug','stringify','forEach','includes','picklist','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds','error','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','user'];(function(_0x500322,_0x18f735){var _0x489797=function(_0x4b09e2){while(--_0x4b09e2){_0x500322['push'](_0x500322['shift']());}};_0x489797(++_0x18f735);}(_0x19cf,0x197));var _0xf19c=function(_0x291832,_0x2e7b7b){_0x291832=_0x291832-0x0;var _0x5ad029=_0x19cf[_0x291832];return _0x5ad029;};'use strict';var _=require(_0xf19c('0x0'));var rp=require(_0xf19c('0x1'));var md5=require('md5');var util=require(_0xf19c('0x2'));var intUtil=require(_0xf19c('0x3'));var moment=require(_0xf19c('0x4'));var Redis=require(_0xf19c('0x5'));var BPromise=require(_0xf19c('0x6'));var config=require(_0xf19c('0x7'));var logger=require(_0xf19c('0x8'))(_0xf19c('0x9'));config[_0xf19c('0xa')]=_[_0xf19c('0xb')](config[_0xf19c('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0xf19c('0xc'))(new Redis(config[_0xf19c('0xa')]));function emit(_0x37fa8a,_0x53d9cb,_0x1eea59){io['to'](_0x37fa8a)[_0xf19c('0xd')](_0x53d9cb,_0x1eea59);}function request(_0x17e2c0){logger[_0xf19c('0xe')]('[HTTP]',JSON[_0xf19c('0xf')](_0x17e2c0));return rp(_0x17e2c0);}function getCustomFields(_0xd614af,_0x4f7eb8){var _0x44b794={};if(_0xd614af['length']>0x0){_[_0xf19c('0x10')](_0xd614af,function(_0x134de7){if(_[_0xf19c('0x11')](['string',_0xf19c('0x12')],_0x134de7['type'])&&_0x134de7[_0xf19c('0x13')]){_0x44b794[_0x134de7[_0xf19c('0x13')]]=_0x134de7[_0xf19c('0x14')][_0xf19c('0x15')]();}else if(_0x134de7[_0xf19c('0x16')]===_0xf19c('0x17')&&_0x134de7[_0xf19c('0x18')]&&_0x134de7['idField']&&_0x4f7eb8[_0x134de7[_0xf19c('0x18')]]){_0x44b794[_0x134de7[_0xf19c('0x13')]]=_0x4f7eb8[_0x134de7[_0xf19c('0x18')]][_0xf19c('0x15')]();}else if(_0x134de7[_0xf19c('0x16')]==='customVariable'&&_0x134de7[_0xf19c('0x19')]&&_0x134de7['Variable'][_0xf19c('0x1a')]&&_0x134de7[_0xf19c('0x13')]&&_0x4f7eb8[_0x134de7[_0xf19c('0x19')][_0xf19c('0x1a')][_0xf19c('0x1b')]()]){_0x44b794[_0x134de7[_0xf19c('0x13')]]=_0x4f7eb8[_0x134de7[_0xf19c('0x19')][_0xf19c('0x1a')][_0xf19c('0x1b')]()][_0xf19c('0x15')]();}});}return _0x44b794;}function getName(_0x16d55e){if(_0x16d55e[_0xf19c('0x1c')]('\x20')>0x0){var _0x134b7f=_0x16d55e[_0xf19c('0x1d')](/ (.+)/);if(_0x134b7f[0x1]){return _0x134b7f;}}return[_0x16d55e,_0x16d55e];}var accountsTokens={};function getAccessToken(_0x693d5d){return new Promise(function(_0x3aff90,_0x36ea6f){if(!_[_0xf19c('0x1e')](accountsTokens[_0x693d5d['id']])&&!_[_0xf19c('0x1e')](accountsTokens[_0x693d5d['id']][_0xf19c('0x1f')])){if(moment()[_0xf19c('0x20')](accountsTokens[_0x693d5d['id']][_0xf19c('0x21')])){_0x3aff90(accountsTokens[_0x693d5d['id']][_0xf19c('0x1f')]);}}var _0x1bc1fe;switch(_0x693d5d['zone']){case'US':_0x1bc1fe=_0xf19c('0x22');break;case'AU':_0x1bc1fe=_0xf19c('0x23');break;case'EU':_0x1bc1fe=_0xf19c('0x24');break;case'IN':_0x1bc1fe='https://accounts.zoho.in';break;case'CN':_0x1bc1fe=_0xf19c('0x25');break;default:_0x1bc1fe=_0xf19c('0x24');break;}var _0x320f58={'method':'POST','uri':_0x1bc1fe+_0xf19c('0x26'),'qs':{'refresh_token':_0x693d5d[_0xf19c('0x27')],'client_id':_0x693d5d[_0xf19c('0x28')],'client_secret':_0x693d5d[_0xf19c('0x29')],'grant_type':_0xf19c('0x2a')},'json':!![]};return rp(_0x320f58)[_0xf19c('0x2b')](function(_0x5e8f3e){accountsTokens[_0x693d5d['id']]={'access_token':_0x5e8f3e[_0xf19c('0x1f')],'expires_in':moment()[_0xf19c('0x2c')](_0x5e8f3e[_0xf19c('0x21')],_0xf19c('0x2d'))};_0x3aff90(_0x5e8f3e[_0xf19c('0x1f')]);})['catch'](function(_0x25daad){logger[_0xf19c('0x2e')](_0xf19c('0x2f'),_0x25daad[_0xf19c('0x30')]);_0x36ea6f(_0x25daad);});});}function getUser(_0x424d2b,_0x493326,_0x5c6260,_0x1bae2d){logger[_0xf19c('0x31')](_0xf19c('0x32'));return request({'method':'GET','uri':util['format'](_0xf19c('0x33'),_0x493326),'qs':{'type':_0xf19c('0x34')},'headers':{'Authorization':_0xf19c('0x35')+_0x424d2b},'json':!![]})['then'](function(_0x2694cc){if(_0x2694cc[_0xf19c('0x36')]){var _0x321a56=-0x1;if(_['isArrayLikeObject'](_0x2694cc[_0xf19c('0x36')])){if(!_['isNil'](_0x1bae2d)){_0x321a56=_[_0xf19c('0x37')](_0x2694cc[_0xf19c('0x36')],function(_0x43425e){return _0x43425e[_0xf19c('0x38')]===_0x1bae2d;});}if(_0x321a56>=0x0){logger['info'](_0xf19c('0x39'));}else{logger[_0xf19c('0x31')](_0xf19c('0x3a'));_0x321a56=_[_0xf19c('0x37')](_0x2694cc[_0xf19c('0x36')],function(_0x27d283){return _0x27d283[_0xf19c('0x3b')][_0xf19c('0x1a')]==='Administrator';});}return _0x2694cc[_0xf19c('0x36')][_0x321a56];}else{if(_0x2694cc[_0xf19c('0x3c')]['profile'][_0xf19c('0x1a')]===_0xf19c('0x3d')){logger[_0xf19c('0x31')](_0xf19c('0x3a'));user=_0x2694cc['user'];return user;}else{logger[_0xf19c('0x2e')](_0xf19c('0x3e'),JSON[_0xf19c('0xf')](_0x2694cc));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0xf19c('0xf')](_0x2694cc));}}}else{logger[_0xf19c('0x2e')](_0xf19c('0x3e'),JSON[_0xf19c('0xf')](_0x2694cc));throw new Error(_0xf19c('0x3f')+JSON[_0xf19c('0xf')](_0x2694cc));}})[_0xf19c('0x40')](function(_0x29aa1b){console['error'](_0x29aa1b);});}function getZohoUser(_0xd64684,_0x366fa1){return new BPromise(function(_0xf6056,_0x4b9e2c){request(_0xd64684)[_0xf19c('0x2b')](function(_0x25b2fd){var _0x92b511=null;if(_0x25b2fd){_0x92b511=_0x25b2fd[_0xf19c('0x41')][0x0];_0x92b511['enduserType']=_0x366fa1;}_0xf6056(_0x92b511);})[_0xf19c('0x40')](function(_0x3ce79e){_0x4b9e2c(_0x3ce79e);});});}function createEndUser(_0x14b18f,_0x32e7fa,_0x5503ad,_0x5ddfa5,_0x4c484d,_0x2dcc98){var _0x5503ad=getName(_0x5503ad);return request({'method':'POST','uri':_0xf19c('0x42')+_0x32e7fa+_0xf19c('0x43')+_[_0xf19c('0x44')](_0x2dcc98[_0xf19c('0x45')])+'s','body':{'data':[{'Last_Name':_0x5503ad[0x1],'First_Name':_0x5503ad[0x0],'Phone':_0x5ddfa5,'Owner':{'name':!_[_0xf19c('0x1e')](_0x4c484d[_0xf19c('0x46')][_0xf19c('0x1a')])?_0x4c484d['role'][_0xf19c('0x1a')]:!_[_0xf19c('0x1e')](_0x4c484d['first_name'])?_0x4c484d[_0xf19c('0x47')]+'\x20'+_0x4c484d[_0xf19c('0x48')]:_0x4c484d[_0xf19c('0x48')],'id':_0x4c484d['id']}}]},'headers':{'Authorization':_0xf19c('0x35')+_0x14b18f},'json':!![]})['then'](function(_0x1d578b){if(_0x1d578b&&_0x1d578b['data'][0x0][_0xf19c('0x49')]===_0xf19c('0x4a')){var _0x371f3c=_0x1d578b[_0xf19c('0x41')][0x0][_0xf19c('0x4b')];_0x371f3c[_0xf19c('0x4c')]=_[_0xf19c('0x44')](_0x2dcc98[_0xf19c('0x45')])+'s';return _0x371f3c;}logger[_0xf19c('0x2e')]('The\x20failing\x20result\x20is',JSON[_0xf19c('0xf')](data));throw new Error(_0xf19c('0x4d')+JSON['stringify'](data));})[_0xf19c('0x40')](function(_0x526fa5){console['log'](_0xf19c('0x4e'),_0x526fa5);});}function getEndUser(_0x491ed6,_0x337126,_0x17c1b0,_0x21badc,_0x3a2382,_0x1563be,_0x16511e){var _0x3a5c0e={'method':_0xf19c('0x4f'),'uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x491ed6},'json':!![]};switch(_0x16511e[_0xf19c('0x50')]){case _0xf19c('0x51'):_0x3a5c0e['uri']=_0xf19c('0x42')+_0x337126+_0xf19c('0x52')+_0x3a2382+'))';return getZohoUser(_0x3a5c0e,_0xf19c('0x53'))[_0xf19c('0x2b')](function(_0x156eb1){if(_0x156eb1)return _0x156eb1;_0x3a5c0e[_0xf19c('0x54')]=_0xf19c('0x42')+_0x337126+_0xf19c('0x55')+_0x3a2382+'))';return getZohoUser(_0x3a5c0e,_0xf19c('0x56'))[_0xf19c('0x2b')](function(_0x36b196){if(_0x36b196)return _0x36b196;if(_0x16511e[_0xf19c('0x45')]!=_0xf19c('0x57')){return createEndUser(_0x491ed6,_0x337126,_0x21badc,_0x3a2382,_0x1563be,_0x16511e);}else{return{};}});});break;case _0xf19c('0x58'):_0x3a5c0e[_0xf19c('0x54')]='https://www.zohoapis.'+_0x337126+_0xf19c('0x52')+_0x3a2382+'))';return getZohoUser(_0x3a5c0e,_0xf19c('0x53'))[_0xf19c('0x2b')](function(_0x9e2c1f){if(_0x9e2c1f)return _0x9e2c1f;if(_0x16511e[_0xf19c('0x45')]!=_0xf19c('0x57')){return createEndUser(_0x491ed6,_0x337126,_0x21badc,_0x3a2382,_0x1563be,_0x16511e);}else{return{};}});break;case _0xf19c('0x59'):_0x3a5c0e[_0xf19c('0x54')]='https://www.zohoapis.'+_0x337126+_0xf19c('0x55')+_0x3a2382+'))';return getZohoUser(_0x3a5c0e,_0xf19c('0x56'))[_0xf19c('0x2b')](function(_0x257bdd){if(_0x257bdd)return _0x257bdd;if(_0x16511e[_0xf19c('0x45')]!=_0xf19c('0x57')){return createEndUser(_0x491ed6,_0x337126,_0x21badc,_0x3a2382,_0x1563be,_0x16511e);}else{return{};}});break;}}function getCall(_0x48df70,_0x427f23,_0x2278fa,_0x48ab26,_0x14ec21,_0x1d26ec,_0x3e2dc4,_0x4e7cb1){logger[_0xf19c('0x31')]('Creating\x20new\x20call...');var _0x52ee1f={};_0x52ee1f[_0xf19c('0x5a')]={'name':!_['isNil'](_0x48ab26[_0xf19c('0x46')]['name'])&&!_[_0xf19c('0x1e')](_0x48ab26[_0xf19c('0x3b')][_0xf19c('0x1a')])&&_0x48ab26[_0xf19c('0x3b')][_0xf19c('0x1a')]==='administrator'?_0x48ab26[_0xf19c('0x46')][_0xf19c('0x1a')]:!_[_0xf19c('0x1e')](_0x48ab26[_0xf19c('0x47')])?_0x48ab26[_0xf19c('0x47')]+'\x20'+_0x48ab26[_0xf19c('0x48')]:_0x48ab26['last_name'],'id':_0x48ab26['id']};_0x52ee1f[_0xf19c('0x5b')]=intUtil['getString'](_0x1d26ec['Subjects'],_0x3e2dc4,'\x20');_0x52ee1f[_0xf19c('0x5c')]=intUtil[_0xf19c('0x5d')](_0x1d26ec[_0xf19c('0x5e')],_0x3e2dc4,'\x0a');if(_0x14ec21[_0xf19c('0x4c')]===_0xf19c('0x53')){_0x52ee1f['Who_Id']={'name':!_[_0xf19c('0x1e')](_0x14ec21[_0xf19c('0x5f')])?_0x14ec21[_0xf19c('0x5f')]:!_[_0xf19c('0x1e')](_0x14ec21[_0xf19c('0x60')])?_0x14ec21[_0xf19c('0x60')]+'\x20'+_0x14ec21['Last_Name']:_0x14ec21['Last_Name'],'id':_0x14ec21['id']};}if(_0x14ec21[_0xf19c('0x4c')]===_0xf19c('0x56')){_0x52ee1f[_0xf19c('0x61')]={'name':!_[_0xf19c('0x1e')](_0x14ec21['Full_Name'])?_0x14ec21[_0xf19c('0x5f')]:!_[_0xf19c('0x1e')](_0x14ec21[_0xf19c('0x60')])?_0x14ec21[_0xf19c('0x60')]+'\x20'+_0x14ec21[_0xf19c('0x62')]:_0x14ec21[_0xf19c('0x62')],'id':_0x14ec21['id']};_0x52ee1f['$se_module']=_['startCase'](_0x14ec21[_0xf19c('0x4c')]);}if(_0x3e2dc4['talktime']){_0x52ee1f[_0xf19c('0x63')]=moment[_0xf19c('0x64')](parseInt(_0x3e2dc4[_0xf19c('0x65')])*0x3e8)['format'](_0xf19c('0x66'));}else if(_0x3e2dc4[_0xf19c('0x67')]&&_0x3e2dc4[_0xf19c('0x68')]){_0x52ee1f[_0xf19c('0x63')]=moment[_0xf19c('0x64')](moment(_0x3e2dc4['endtime'],_0xf19c('0x69'))[_0xf19c('0x6a')](moment(_0x3e2dc4[_0xf19c('0x6b')],_0xf19c('0x69'))))[_0xf19c('0x6c')](_0xf19c('0x66'));}switch(_0x3e2dc4[_0xf19c('0x6d')]){case _0xf19c('0x6e'):_0x52ee1f[_0xf19c('0x6f')]=_0xf19c('0x70');break;case'complete':case'connect':_0x52ee1f['Call_Result']=_0xf19c('0x71');break;case _0xf19c('0x72'):_0x52ee1f[_0xf19c('0x6f')]=_0xf19c('0x73');break;case'abandoned':_0x52ee1f[_0xf19c('0x6f')]=_0xf19c('0x74');break;case _0xf19c('0x75'):_0x52ee1f[_0xf19c('0x6f')]=_0xf19c('0x76');default:}_0x52ee1f['Call_Start_Time']=(_0x4e7cb1===_0xf19c('0x77')?moment(_0x3e2dc4[_0xf19c('0x6b')])[_0xf19c('0x6c')](_0xf19c('0x69')):moment(_0x3e2dc4[_0xf19c('0x78')])[_0xf19c('0x6c')](_0xf19c('0x69')))||moment()[_0xf19c('0x6c')](_0xf19c('0x69'));_0x52ee1f[_0xf19c('0x79')]=_0x4e7cb1||_0xf19c('0x7a');_0x52ee1f=_['merge'](_0x52ee1f,getCustomFields(_0x1d26ec[_0xf19c('0x7b')],_0x3e2dc4));return request({'method':_0xf19c('0x7c'),'uri':_0xf19c('0x42')+_0x427f23+_0xf19c('0x7d'),'headers':{'Authorization':_0xf19c('0x35')+_0x48df70},'body':{'data':[_0x52ee1f]},'json':!![]})['then'](function(_0x1d9180){if(_0x1d9180&&_0x1d9180[_0xf19c('0x41')][0x0]['code']===_0xf19c('0x4a')){logger['info'](_0xf19c('0x7e'));return{'id':_0x1d9180[_0xf19c('0x41')][0x0]['details']['id']};}})[_0xf19c('0x40')](function(_0x200dfd){logger['info'](_0xf19c('0x7f'),_0x200dfd[_0xf19c('0x30')]);console['log'](_0xf19c('0x7f'),_0x200dfd);});}exports[_0xf19c('0x80')]=function(_0xb6154,_0x47ce32,_0x2a6eba,_0x35cfc4,_0x50b21c,_0x4984a7){var _0x47d868,_0x1dd969,_0x4b99c6;_0x4984a7[_0xf19c('0x81')]=intUtil['stripTrailingSlash'](_0x4984a7['host']);_0x4984a7[_0xf19c('0x82')]=intUtil['stripTrailingSlash'](_0x4984a7[_0xf19c('0x82')]);if(_0x50b21c&&_0x50b21c['monitor_format']){logger[_0xf19c('0x31')](_0xf19c('0x83'),_0xf19c('0x84'));_0x47ce32[_0xf19c('0x85')]=_0x4984a7[_0xf19c('0x82')]+_0xf19c('0x86')+_0x47ce32[_0xf19c('0x87')]+_0xf19c('0x88')+md5(_0x47ce32[_0xf19c('0x87')]);}else{_0x47ce32[_0xf19c('0x85')]='';}var _0x50bbba=_0x4984a7[_0xf19c('0x81')]==='zoho.eu'?'eu':_0xf19c('0x89');return getAccessToken(_0x4984a7)['then'](function(_0x216752){_0x4b99c6=_0x216752;return getUser(_0x4b99c6,_0x50bbba,_0x4984a7,_0x35cfc4[_0xf19c('0x38')]);})[_0xf19c('0x2b')](function(_0x4f3543){_0x47d868=_0x4f3543;logger[_0xf19c('0x31')](_0xf19c('0x8a'),_0x47d868['id']);return getEndUser(_0x4b99c6,_0x50bbba,_0x4984a7,_0x47ce32[_0xf19c('0x8b')],_0x47ce32['calleridnum'],_0x47d868,_0x2a6eba);})[_0xf19c('0x2b')](function(_0x190c44){_0x1dd969=_0x190c44;return getCall(_0x4b99c6,_0x50bbba,_0x4984a7,_0x47d868,_0x1dd969,_0x2a6eba,_0x47ce32,_0xf19c('0x7a'));})[_0xf19c('0x2b')](function(_0x5021f7){if(_0x5021f7){logger[_0xf19c('0x31')](_0xf19c('0x8c'),_0x5021f7['id']);logger[_0xf19c('0x31')](_0xf19c('0x83'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xf19c('0x6c')](_0xf19c('0x8d'),_0x35cfc4[_0xf19c('0x1a')]),_0xf19c('0x8e'),{'uri':_0xf19c('0x8f')+_0x4984a7['host']+'/crm/EntityInfo.do?module=Calls&id='+_0x5021f7['id']});}})[_0xf19c('0x40')](function(_0x4b2f8f){logger[_0xf19c('0x2e')](_0xf19c('0x83'),JSON[_0xf19c('0xf')](_0x4b2f8f));});};exports[_0xf19c('0x77')]=function(_0x49e3b2,_0xfed5d7,_0x2ca4f9,_0x5cf102,_0x450dc9,_0xc13669,_0x1a649a){var _0xa6102,_0x31b7e6,_0x4b9982;_0xc13669['host']=intUtil[_0xf19c('0x90')](_0xc13669[_0xf19c('0x81')]);_0xc13669['serverUrl']=intUtil[_0xf19c('0x90')](_0xc13669['serverUrl']);if(_0x1a649a&&_0x1a649a[_0xf19c('0x91')]&&_0x1a649a[_0xf19c('0x91')]!==_0xf19c('0x92')){logger['info']('[OUTBOUND]',_0xf19c('0x84'));_0xfed5d7[_0xf19c('0x85')]=_0xc13669[_0xf19c('0x82')]+_0xf19c('0x86')+_0xfed5d7[_0xf19c('0x87')]+'/downloads?type=uniqueid&token='+md5(_0xfed5d7[_0xf19c('0x87')]);}var _0x350f29=_0xc13669['host']===_0xf19c('0x93')?'eu':_0xf19c('0x89');return getAccessToken(_0xc13669)[_0xf19c('0x2b')](function(_0x2e0ad0){_0x4b9982=_0x2e0ad0;return getUser(_0x4b9982,_0x350f29,_0xc13669,_0x5cf102[_0xf19c('0x38')]);})[_0xf19c('0x2b')](function(_0x16cb3f){_0xa6102=_0x16cb3f;logger[_0xf19c('0x31')](_0xf19c('0x8a'),_0xa6102['id']);return getEndUser(_0x4b9982,_0x350f29,_0xc13669,_0xfed5d7[_0xf19c('0x94')],_0xfed5d7[_0xf19c('0x95')],_0xa6102,_0x2ca4f9);})[_0xf19c('0x2b')](function(_0x4d71aa){_0x31b7e6=_0x4d71aa;return getCall(_0x4b9982,_0x350f29,_0xc13669,_0xa6102,_0x31b7e6,_0x2ca4f9,_0xfed5d7,'Outbound');})[_0xf19c('0x2b')](function(_0x2ef9a2){if(_0x2ef9a2){logger[_0xf19c('0x31')](_0xf19c('0x8c'),_0x2ef9a2['id']);logger[_0xf19c('0x31')](_0xf19c('0x96'),_0xf19c('0x97'));emit(util[_0xf19c('0x6c')](_0xf19c('0x8d'),_0x5cf102['name']),_0xf19c('0x8e'),{'uri':_0xf19c('0x8f')+_0xc13669['host']+'/crm/EntityInfo.do?module=Calls&id='+_0x2ef9a2['id']});}})['catch'](function(_0x37ff72){logger[_0xf19c('0x2e')]('[OUTBOUND]',JSON['stringify'](_0x37ff72));});};exports[_0xf19c('0x98')]=function(_0x4b300c,_0x540570,_0x1159d8,_0x2c2f36,_0x2bc122,_0x1d822d){var _0x21008a,_0xb99240,_0x251c7d;_0x1d822d[_0xf19c('0x81')]=intUtil[_0xf19c('0x90')](_0x1d822d['host']);_0x1d822d[_0xf19c('0x82')]=intUtil[_0xf19c('0x90')](_0x1d822d['serverUrl']);if(_0x2bc122&&_0x2bc122[_0xf19c('0x99')]){logger[_0xf19c('0x31')]('['+_0x540570['lastevent'][_0xf19c('0x9a')]()+']',_0xf19c('0x84'));_0x540570[_0xf19c('0x85')]=_0x1d822d[_0xf19c('0x82')]+_0xf19c('0x86')+_0x540570[_0xf19c('0x87')]+_0xf19c('0x88')+md5(_0x540570[_0xf19c('0x87')]);}else{_0x540570[_0xf19c('0x85')]='';}var _0x2d11f8=_0x1d822d[_0xf19c('0x81')]===_0xf19c('0x93')?'eu':_0xf19c('0x89');return getAccessToken(_0x1d822d)[_0xf19c('0x2b')](function(_0x1853f4){_0x251c7d=_0x1853f4;return getUser(_0x251c7d,_0x2d11f8,_0x1d822d);})[_0xf19c('0x2b')](function(_0x4827d1){_0x21008a=_0x4827d1;logger[_0xf19c('0x31')](_0xf19c('0x8a'),_0x21008a['id']);return getEndUser(_0x251c7d,_0x2d11f8,_0x1d822d,_0x540570[_0xf19c('0x8b')],_0x540570[_0xf19c('0x9b')],_0x21008a,_0x1159d8);})[_0xf19c('0x2b')](function(_0x5f05a0){_0xb99240=_0x5f05a0;return getCall(_0x251c7d,_0x2d11f8,_0x1d822d,_0x21008a,_0xb99240,_0x1159d8,_0x540570,_0xf19c('0x7a'));})['then'](function(_0x216ee8){if(_0x216ee8){logger[_0xf19c('0x31')](_0xf19c('0x8c'),_0x216ee8['id']);}})[_0xf19c('0x40')](function(_0x899df9){logger[_0xf19c('0x2e')]('['+_0x540570[_0xf19c('0x6d')][_0xf19c('0x9a')]()+']',JSON['stringify'](_0x899df9));});};
\ No newline at end of file
+var _0x6566=['Error:\x20','log','CREATE\x20ERROR','moduleSearch','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','Contacts','Creating\x20new\x20call...','Owner','Subject','getString','Subjects','Description','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','talktime','utc','format','mm:ss','Call_Duration','endtime','diff','YYYY-MM-DDTHH:mm:ss','called','Call_Result','complete','Answered','rejected','abandoned','Abandoned','Timeout','Call_Start_Time','outbound','starttime','agentcalledAt','Inbound','merge','Fields','data','err','queue','stripTrailingSlash','host','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','zoho.eu','The\x20User\x20ID\x20is:','calleridname','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','/downloads?type=uniqueid&token=','com','destcalleridname','Outbound','unmanaged','monitor_format','lastevent','calleridnum','toUpperCase','lodash','request-promise','md5','./util','ioredis','bluebird','../../../../config/logger','zoho','redis','defaults','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','forEach','includes','string','idField','toString','variable','variableName','type','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','/oauth/v2/token','refreshToken','then','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','info','GET','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','POST','https://www.zohoapis.','/crm/v2/','startCase','role','first_name','last_name','code','SUCCESS','details','enduserType','moduleCreate','The\x20failing\x20result\x20is'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0x6566,0x17a));var _0x6656=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x6566[_0x1694f5];return _0x5b4321;};'use strict';var _=require(_0x6656('0x0'));var rp=require(_0x6656('0x1'));var md5=require(_0x6656('0x2'));var util=require('util');var intUtil=require(_0x6656('0x3'));var moment=require('moment');var Redis=require(_0x6656('0x4'));var BPromise=require(_0x6656('0x5'));var config=require('../../../../config/environment');var logger=require(_0x6656('0x6'))(_0x6656('0x7'));config[_0x6656('0x8')]=_[_0x6656('0x9')](config[_0x6656('0x8')],{'host':_0x6656('0xa'),'port':0x18eb});var io=require(_0x6656('0xb'))(new Redis(config['redis']));function emit(_0x1a4d85,_0x14a1f2,_0x168d5a){io['to'](_0x1a4d85)[_0x6656('0xc')](_0x14a1f2,_0x168d5a);}function request(_0x18af45){logger[_0x6656('0xd')](_0x6656('0xe'),JSON[_0x6656('0xf')](_0x18af45));return rp(_0x18af45);}function getCustomFields(_0xea07e6,_0x5c721a){var _0x4f25f9={};if(_0xea07e6['length']>0x0){_[_0x6656('0x10')](_0xea07e6,function(_0x18b921){if(_[_0x6656('0x11')]([_0x6656('0x12'),'picklist'],_0x18b921['type'])&&_0x18b921[_0x6656('0x13')]){_0x4f25f9[_0x18b921[_0x6656('0x13')]]=_0x18b921['content'][_0x6656('0x14')]();}else if(_0x18b921['type']===_0x6656('0x15')&&_0x18b921['variableName']&&_0x18b921[_0x6656('0x13')]&&_0x5c721a[_0x18b921[_0x6656('0x16')]]){_0x4f25f9[_0x18b921[_0x6656('0x13')]]=_0x5c721a[_0x18b921[_0x6656('0x16')]][_0x6656('0x14')]();}else if(_0x18b921[_0x6656('0x17')]===_0x6656('0x18')&&_0x18b921[_0x6656('0x19')]&&_0x18b921[_0x6656('0x19')]['name']&&_0x18b921['idField']&&_0x5c721a[_0x18b921['Variable'][_0x6656('0x1a')][_0x6656('0x1b')]()]){_0x4f25f9[_0x18b921[_0x6656('0x13')]]=_0x5c721a[_0x18b921[_0x6656('0x19')][_0x6656('0x1a')][_0x6656('0x1b')]()][_0x6656('0x14')]();}});}return _0x4f25f9;}function getName(_0x392597){if(_0x392597[_0x6656('0x1c')]('\x20')>0x0){var _0x281623=_0x392597[_0x6656('0x1d')](/ (.+)/);if(_0x281623[0x1]){return _0x281623;}}return[_0x392597,_0x392597];}var accountsTokens={};function getAccessToken(_0x564085){return new Promise(function(_0x5ef098,_0x2f0397){if(!_[_0x6656('0x1e')](accountsTokens[_0x564085['id']])&&!_[_0x6656('0x1e')](accountsTokens[_0x564085['id']][_0x6656('0x1f')])){if(moment()[_0x6656('0x20')](accountsTokens[_0x564085['id']][_0x6656('0x21')])){_0x5ef098(accountsTokens[_0x564085['id']][_0x6656('0x1f')]);}}var _0x12dd30;switch(_0x564085[_0x6656('0x22')]){case'US':_0x12dd30=_0x6656('0x23');break;case'AU':_0x12dd30='https://accounts.zoho.com.au';break;case'EU':_0x12dd30='https://accounts.zoho.eu';break;case'IN':_0x12dd30=_0x6656('0x24');break;case'CN':_0x12dd30=_0x6656('0x25');break;default:_0x12dd30=_0x6656('0x26');break;}var _0x2f86c7={'method':'POST','uri':_0x12dd30+_0x6656('0x27'),'qs':{'refresh_token':_0x564085[_0x6656('0x28')],'client_id':_0x564085['clientId'],'client_secret':_0x564085['clientSecret'],'grant_type':'refresh_token'},'json':!![]};return rp(_0x2f86c7)[_0x6656('0x29')](function(_0x291cac){accountsTokens[_0x564085['id']]={'access_token':_0x291cac[_0x6656('0x1f')],'expires_in':moment()[_0x6656('0x2a')](_0x291cac[_0x6656('0x21')],_0x6656('0x2b'))};_0x5ef098(_0x291cac[_0x6656('0x1f')]);})[_0x6656('0x2c')](function(_0x1fdd4e){logger[_0x6656('0x2d')](_0x6656('0x2e'),_0x1fdd4e[_0x6656('0x2f')]);_0x2f0397(_0x1fdd4e);});});}function getUser(_0x44b98d,_0x1cc142,_0x33e53d,_0x27a883){logger[_0x6656('0x30')]('Search\x20user');return request({'method':_0x6656('0x31'),'uri':util['format'](_0x6656('0x32'),_0x1cc142),'qs':{'type':_0x6656('0x33')},'headers':{'Authorization':_0x6656('0x34')+_0x44b98d},'json':!![]})['then'](function(_0x177a47){if(_0x177a47[_0x6656('0x35')]){var _0x1a03f7=-0x1;if(_['isArrayLikeObject'](_0x177a47[_0x6656('0x35')])){if(!_[_0x6656('0x1e')](_0x27a883)){_0x1a03f7=_[_0x6656('0x36')](_0x177a47['users'],function(_0x3f08b3){return _0x3f08b3[_0x6656('0x37')]===_0x27a883;});}if(_0x1a03f7>=0x0){logger[_0x6656('0x30')](_0x6656('0x38'));}else{logger['info'](_0x6656('0x39'));_0x1a03f7=_[_0x6656('0x36')](_0x177a47[_0x6656('0x35')],function(_0x2bb00b){return _0x2bb00b[_0x6656('0x3a')][_0x6656('0x1a')]===_0x6656('0x3b');});}return _0x177a47[_0x6656('0x35')][_0x1a03f7];}else{if(_0x177a47[_0x6656('0x3c')][_0x6656('0x3a')][_0x6656('0x1a')]==='Administrator'){logger[_0x6656('0x30')](_0x6656('0x39'));user=_0x177a47[_0x6656('0x3c')];return user;}else{logger[_0x6656('0x2d')]('The\x20failing\x20result\x20is',JSON[_0x6656('0xf')](_0x177a47));throw new Error(_0x6656('0x3d')+JSON[_0x6656('0xf')](_0x177a47));}}}else{logger['error']('The\x20failing\x20result\x20is',JSON[_0x6656('0xf')](_0x177a47));throw new Error(_0x6656('0x3d')+JSON[_0x6656('0xf')](_0x177a47));}})['catch'](function(_0x25cc08){console[_0x6656('0x2d')](_0x25cc08);});}function getZohoUser(_0x9c4a6d,_0x5a9119){return new BPromise(function(_0xab6de0,_0x2839c9){request(_0x9c4a6d)[_0x6656('0x29')](function(_0xf076b3){var _0x4cf691=null;if(_0xf076b3){_0x4cf691=_0xf076b3['data'][0x0];_0x4cf691['enduserType']=_0x5a9119;}_0xab6de0(_0x4cf691);})[_0x6656('0x2c')](function(_0x1a4554){_0x2839c9(_0x1a4554);});});}function createEndUser(_0x376aef,_0x26c8e2,_0x6b04b1,_0xe29805,_0x173d92,_0x1dd572){var _0x6b04b1=getName(_0x6b04b1);return request({'method':_0x6656('0x3e'),'uri':_0x6656('0x3f')+_0x26c8e2+_0x6656('0x40')+_[_0x6656('0x41')](_0x1dd572['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x6b04b1[0x1],'First_Name':_0x6b04b1[0x0],'Phone':_0xe29805,'Owner':{'name':!_[_0x6656('0x1e')](_0x173d92[_0x6656('0x42')][_0x6656('0x1a')])?_0x173d92[_0x6656('0x42')][_0x6656('0x1a')]:!_[_0x6656('0x1e')](_0x173d92[_0x6656('0x43')])?_0x173d92['first_name']+'\x20'+_0x173d92['last_name']:_0x173d92[_0x6656('0x44')],'id':_0x173d92['id']}}]},'headers':{'Authorization':_0x6656('0x34')+_0x376aef},'json':!![]})[_0x6656('0x29')](function(_0x18c04b){if(_0x18c04b&&_0x18c04b['data'][0x0][_0x6656('0x45')]===_0x6656('0x46')){var _0x176956=_0x18c04b['data'][0x0][_0x6656('0x47')];_0x176956[_0x6656('0x48')]=_['startCase'](_0x1dd572[_0x6656('0x49')])+'s';return _0x176956;}logger['error'](_0x6656('0x4a'),JSON[_0x6656('0xf')](data));throw new Error(_0x6656('0x4b')+JSON[_0x6656('0xf')](data));})['catch'](function(_0x4388f9){console[_0x6656('0x4c')](_0x6656('0x4d'),_0x4388f9);});}function getEndUser(_0x50803b,_0x2adee8,_0x43f041,_0x350cc7,_0x101100,_0x30bc11,_0xe36aeb){var _0x1d90a0={'method':'GET','uri':'','headers':{'Authorization':_0x6656('0x34')+_0x50803b},'json':!![]};switch(_0xe36aeb[_0x6656('0x4e')]){case'contact_lead':_0x1d90a0[_0x6656('0x4f')]='https://www.zohoapis.'+_0x2adee8+_0x6656('0x50')+_0x101100+'))';return getZohoUser(_0x1d90a0,'Contacts')[_0x6656('0x29')](function(_0x36897a){if(_0x36897a)return _0x36897a;_0x1d90a0['uri']=_0x6656('0x3f')+_0x2adee8+_0x6656('0x51')+_0x101100+'))';return getZohoUser(_0x1d90a0,_0x6656('0x52'))['then'](function(_0x438664){if(_0x438664)return _0x438664;if(_0xe36aeb[_0x6656('0x49')]!=_0x6656('0x53')){return createEndUser(_0x50803b,_0x2adee8,_0x350cc7,_0x101100,_0x30bc11,_0xe36aeb);}else{return{};}});});break;case'contact':_0x1d90a0['uri']=_0x6656('0x3f')+_0x2adee8+_0x6656('0x50')+_0x101100+'))';return getZohoUser(_0x1d90a0,_0x6656('0x54'))[_0x6656('0x29')](function(_0x41b2ee){if(_0x41b2ee)return _0x41b2ee;if(_0xe36aeb[_0x6656('0x49')]!=_0x6656('0x53')){return createEndUser(_0x50803b,_0x2adee8,_0x350cc7,_0x101100,_0x30bc11,_0xe36aeb);}else{return{};}});break;case'lead':_0x1d90a0[_0x6656('0x4f')]=_0x6656('0x3f')+_0x2adee8+_0x6656('0x51')+_0x101100+'))';return getZohoUser(_0x1d90a0,_0x6656('0x52'))[_0x6656('0x29')](function(_0x11afe6){if(_0x11afe6)return _0x11afe6;if(_0xe36aeb[_0x6656('0x49')]!=_0x6656('0x53')){return createEndUser(_0x50803b,_0x2adee8,_0x350cc7,_0x101100,_0x30bc11,_0xe36aeb);}else{return{};}});break;}}function getCall(_0x30fc3b,_0x2a925a,_0xe4be58,_0xe5af20,_0x2f39f5,_0x1c58ad,_0x8e5e07,_0x310cc8){logger['info'](_0x6656('0x55'));var _0xfab248={};_0xfab248[_0x6656('0x56')]={'name':!_[_0x6656('0x1e')](_0xe5af20[_0x6656('0x42')][_0x6656('0x1a')])&&!_[_0x6656('0x1e')](_0xe5af20[_0x6656('0x3a')]['name'])&&_0xe5af20['profile']['name']==='administrator'?_0xe5af20['role'][_0x6656('0x1a')]:!_[_0x6656('0x1e')](_0xe5af20[_0x6656('0x43')])?_0xe5af20['first_name']+'\x20'+_0xe5af20[_0x6656('0x44')]:_0xe5af20[_0x6656('0x44')],'id':_0xe5af20['id']};_0xfab248[_0x6656('0x57')]=intUtil[_0x6656('0x58')](_0x1c58ad[_0x6656('0x59')],_0x8e5e07,'\x20');_0xfab248[_0x6656('0x5a')]=intUtil['getString'](_0x1c58ad[_0x6656('0x5b')],_0x8e5e07,'\x0a');if(_0x2f39f5[_0x6656('0x48')]===_0x6656('0x54')){_0xfab248[_0x6656('0x5c')]={'name':!_[_0x6656('0x1e')](_0x2f39f5[_0x6656('0x5d')])?_0x2f39f5[_0x6656('0x5d')]:!_['isNil'](_0x2f39f5[_0x6656('0x5e')])?_0x2f39f5[_0x6656('0x5e')]+'\x20'+_0x2f39f5[_0x6656('0x5f')]:_0x2f39f5[_0x6656('0x5f')],'id':_0x2f39f5['id']};}if(_0x2f39f5[_0x6656('0x48')]===_0x6656('0x52')){_0xfab248['What_Id']={'name':!_[_0x6656('0x1e')](_0x2f39f5[_0x6656('0x5d')])?_0x2f39f5[_0x6656('0x5d')]:!_[_0x6656('0x1e')](_0x2f39f5['First_Name'])?_0x2f39f5['First_Name']+'\x20'+_0x2f39f5['Last_Name']:_0x2f39f5[_0x6656('0x5f')],'id':_0x2f39f5['id']};_0xfab248['$se_module']=_[_0x6656('0x41')](_0x2f39f5['enduserType']);}if(_0x8e5e07[_0x6656('0x60')]){_0xfab248['Call_Duration']=moment[_0x6656('0x61')](parseInt(_0x8e5e07[_0x6656('0x60')])*0x3e8)[_0x6656('0x62')](_0x6656('0x63'));}else if(_0x8e5e07['answertime']&&_0x8e5e07['endtime']){_0xfab248[_0x6656('0x64')]=moment[_0x6656('0x61')](moment(_0x8e5e07[_0x6656('0x65')],'YYYY-MM-DDTHH:mm:ss')[_0x6656('0x66')](moment(_0x8e5e07['starttime'],_0x6656('0x67'))))[_0x6656('0x62')](_0x6656('0x63'));}switch(_0x8e5e07['lastevent']){case _0x6656('0x68'):_0xfab248[_0x6656('0x69')]='Called';break;case _0x6656('0x6a'):case'connect':_0xfab248[_0x6656('0x69')]=_0x6656('0x6b');break;case _0x6656('0x6c'):_0xfab248[_0x6656('0x69')]='Rejected';break;case _0x6656('0x6d'):_0xfab248[_0x6656('0x69')]=_0x6656('0x6e');break;case'timeout':_0xfab248['Call_Result']=_0x6656('0x6f');default:}_0xfab248[_0x6656('0x70')]=(_0x310cc8===_0x6656('0x71')?moment(_0x8e5e07[_0x6656('0x72')])[_0x6656('0x62')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x8e5e07[_0x6656('0x73')])['format'](_0x6656('0x67')))||moment()[_0x6656('0x62')](_0x6656('0x67'));_0xfab248['Call_Type']=_0x310cc8||_0x6656('0x74');_0xfab248=_[_0x6656('0x75')](_0xfab248,getCustomFields(_0x1c58ad[_0x6656('0x76')],_0x8e5e07));return request({'method':_0x6656('0x3e'),'uri':_0x6656('0x3f')+_0x2a925a+'/crm/v2/Calls','headers':{'Authorization':_0x6656('0x34')+_0x30fc3b},'body':{'data':[_0xfab248]},'json':!![]})[_0x6656('0x29')](function(_0x247c39){if(_0x247c39&&_0x247c39['data'][0x0]['code']===_0x6656('0x46')){logger['info']('Call\x20created!');return{'id':_0x247c39[_0x6656('0x77')][0x0][_0x6656('0x47')]['id']};}})['catch'](function(_0xe2e065){logger[_0x6656('0x30')](_0x6656('0x78'),_0xe2e065[_0x6656('0x2f')]);console['log'](_0x6656('0x78'),_0xe2e065);});}exports[_0x6656('0x79')]=function(_0x17ef82,_0x1b98c7,_0x462e6c,_0x1a199b,_0x4dfef1,_0x185108){var _0x582dc8,_0x14a505,_0x329575;_0x185108['host']=intUtil[_0x6656('0x7a')](_0x185108[_0x6656('0x7b')]);_0x185108['serverUrl']=intUtil['stripTrailingSlash'](_0x185108[_0x6656('0x7c')]);if(_0x4dfef1&&_0x4dfef1['monitor_format']){logger[_0x6656('0x30')](_0x6656('0x7d'),_0x6656('0x7e'));_0x1b98c7[_0x6656('0x7f')]=_0x185108[_0x6656('0x7c')]+_0x6656('0x80')+_0x1b98c7[_0x6656('0x81')]+'/downloads?type=uniqueid&token='+md5(_0x1b98c7[_0x6656('0x81')]);}else{_0x1b98c7[_0x6656('0x7f')]='';}var _0x515698=_0x185108[_0x6656('0x7b')]===_0x6656('0x82')?'eu':'com';return getAccessToken(_0x185108)[_0x6656('0x29')](function(_0x1ba77c){_0x329575=_0x1ba77c;return getUser(_0x329575,_0x515698,_0x185108,_0x1a199b[_0x6656('0x37')]);})[_0x6656('0x29')](function(_0x489811){_0x582dc8=_0x489811;logger[_0x6656('0x30')](_0x6656('0x83'),_0x582dc8['id']);return getEndUser(_0x329575,_0x515698,_0x185108,_0x1b98c7[_0x6656('0x84')],_0x1b98c7['calleridnum'],_0x582dc8,_0x462e6c);})[_0x6656('0x29')](function(_0x381218){_0x14a505=_0x381218;return getCall(_0x329575,_0x515698,_0x185108,_0x582dc8,_0x14a505,_0x462e6c,_0x1b98c7,_0x6656('0x74'));})['then'](function(_0x1d0db5){if(_0x1d0db5){logger['info'](_0x6656('0x85'),_0x1d0db5['id']);logger['info'](_0x6656('0x7d'),_0x6656('0x86'));emit(util[_0x6656('0x62')](_0x6656('0x87'),_0x1a199b[_0x6656('0x1a')]),_0x6656('0x88'),{'uri':_0x6656('0x89')+_0x185108[_0x6656('0x7b')]+_0x6656('0x8a')+_0x1d0db5['id']});}})['catch'](function(_0x58a71e){logger['error'](_0x6656('0x7d'),JSON[_0x6656('0xf')](_0x58a71e));});};exports[_0x6656('0x71')]=function(_0x75ed5f,_0x2f0207,_0x5531ac,_0x334aec,_0x2e4e61,_0x5a5410,_0x5480b4){var _0x575529,_0x12193d,_0x38a466;_0x5a5410[_0x6656('0x7b')]=intUtil[_0x6656('0x7a')](_0x5a5410[_0x6656('0x7b')]);_0x5a5410['serverUrl']=intUtil[_0x6656('0x7a')](_0x5a5410[_0x6656('0x7c')]);if(_0x5480b4&&_0x5480b4[_0x6656('0x8b')]&&_0x5480b4[_0x6656('0x8b')]!==_0x6656('0x8c')){logger[_0x6656('0x30')](_0x6656('0x8d'),_0x6656('0x7e'));_0x2f0207[_0x6656('0x7f')]=_0x5a5410[_0x6656('0x7c')]+_0x6656('0x80')+_0x2f0207['uniqueid']+_0x6656('0x8e')+md5(_0x2f0207[_0x6656('0x81')]);}var _0x24943d=_0x5a5410[_0x6656('0x7b')]===_0x6656('0x82')?'eu':_0x6656('0x8f');return getAccessToken(_0x5a5410)['then'](function(_0x456c1c){_0x38a466=_0x456c1c;return getUser(_0x38a466,_0x24943d,_0x5a5410,_0x334aec[_0x6656('0x37')]);})[_0x6656('0x29')](function(_0x46e891){_0x575529=_0x46e891;logger[_0x6656('0x30')](_0x6656('0x83'),_0x575529['id']);return getEndUser(_0x38a466,_0x24943d,_0x5a5410,_0x2f0207[_0x6656('0x90')],_0x2f0207['destcalleridnum'],_0x575529,_0x5531ac);})[_0x6656('0x29')](function(_0x50801f){_0x12193d=_0x50801f;return getCall(_0x38a466,_0x24943d,_0x5a5410,_0x575529,_0x12193d,_0x5531ac,_0x2f0207,_0x6656('0x91'));})['then'](function(_0x49c055){if(_0x49c055){logger[_0x6656('0x30')](_0x6656('0x85'),_0x49c055['id']);logger['info'](_0x6656('0x8d'),_0x6656('0x86'));emit(util['format'](_0x6656('0x87'),_0x334aec[_0x6656('0x1a')]),'trigger:browser:url',{'uri':_0x6656('0x89')+_0x5a5410[_0x6656('0x7b')]+_0x6656('0x8a')+_0x49c055['id']});}})['catch'](function(_0x4502b4){logger['error'](_0x6656('0x8d'),JSON[_0x6656('0xf')](_0x4502b4));});};exports[_0x6656('0x92')]=function(_0x3822e4,_0x3e25a1,_0x2d5af6,_0x310e82,_0x3d59fd,_0x450816){var _0x5037c3,_0x625123,_0x22fa1c;_0x450816['host']=intUtil[_0x6656('0x7a')](_0x450816['host']);_0x450816[_0x6656('0x7c')]=intUtil[_0x6656('0x7a')](_0x450816[_0x6656('0x7c')]);if(_0x3d59fd&&_0x3d59fd[_0x6656('0x93')]){logger['info']('['+_0x3e25a1[_0x6656('0x94')]['toUpperCase']()+']',_0x6656('0x7e'));_0x3e25a1[_0x6656('0x7f')]=_0x450816[_0x6656('0x7c')]+_0x6656('0x80')+_0x3e25a1['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0x3e25a1[_0x6656('0x81')]);}else{_0x3e25a1[_0x6656('0x7f')]='';}var _0x2669dc=_0x450816[_0x6656('0x7b')]==='zoho.eu'?'eu':_0x6656('0x8f');return getAccessToken(_0x450816)[_0x6656('0x29')](function(_0x31180a){_0x22fa1c=_0x31180a;return getUser(_0x22fa1c,_0x2669dc,_0x450816);})['then'](function(_0x4eadb8){_0x5037c3=_0x4eadb8;logger[_0x6656('0x30')]('The\x20User\x20ID\x20is:',_0x5037c3['id']);return getEndUser(_0x22fa1c,_0x2669dc,_0x450816,_0x3e25a1[_0x6656('0x84')],_0x3e25a1[_0x6656('0x95')],_0x5037c3,_0x2d5af6);})['then'](function(_0xd1f136){_0x625123=_0xd1f136;return getCall(_0x22fa1c,_0x2669dc,_0x450816,_0x5037c3,_0x625123,_0x2d5af6,_0x3e25a1,'Inbound');})[_0x6656('0x29')](function(_0x556286){if(_0x556286){logger[_0x6656('0x30')]('The\x20Call\x20ID\x20is:',_0x556286['id']);}})[_0x6656('0x2c')](function(_0x710704){logger['error']('['+_0x3e25a1[_0x6656('0x94')][_0x6656('0x96')]()+']',JSON[_0x6656('0xf')](_0x710704));});};
\ No newline at end of file
index 3cc11c7..0c51482 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6501=['render','exec','format','info','util','../../../../config/logger','trigger','data2','Script','data3'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x6501,0xa4));var _0x1650=function(_0x324ee3,_0x2423a0){_0x324ee3=_0x324ee3-0x0;var _0x25ddf1=_0x6501[_0x324ee3];return _0x25ddf1;};'use strict';var util=require(_0x1650('0x0'));var sh=require('shelljs');var Mustache=require('mustache');var logger=require(_0x1650('0x1'))(_0x1650('0x2'));exports['exec']=function(_0x2468ab,_0x2b26bc){var _0x5cd0f6=_0x2468ab[_0x1650('0x3')]?_0x2468ab[_0x1650('0x3')]:_0x1650('0x4');var _0x547ff9=_0x2468ab[_0x1650('0x5')]?Mustache[_0x1650('0x6')](_0x2468ab[_0x1650('0x5')],_0x2b26bc):_0x2b26bc;sh[_0x1650('0x7')](_0x547ff9,function(_0x2f8f9c,_0x35a42c,_0x22f187){if(_0x2f8f9c!==0x0){logger['error'](util[_0x1650('0x8')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x5cd0f6,_0x547ff9,_0x2f8f9c,_0x22f187));}else{logger[_0x1650('0x9')](util[_0x1650('0x8')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x5cd0f6,_0x547ff9,_0x35a42c));}});};
\ No newline at end of file
+var _0x1376=['%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','util','mustache','../../../../config/logger','data2','Script','data3','render','exec','error','format'];(function(_0x30f474,_0x2f35a2){var _0x1aa635=function(_0x1b7ca2){while(--_0x1b7ca2){_0x30f474['push'](_0x30f474['shift']());}};_0x1aa635(++_0x2f35a2);}(_0x1376,0x12e));var _0x6137=function(_0xef72d6,_0x61a27c){_0xef72d6=_0xef72d6-0x0;var _0x20c2c2=_0x1376[_0xef72d6];return _0x20c2c2;};'use strict';var util=require(_0x6137('0x0'));var sh=require('shelljs');var Mustache=require(_0x6137('0x1'));var logger=require(_0x6137('0x2'))('trigger');exports['exec']=function(_0x23ff1f,_0x33d521){var _0x273d6d=_0x23ff1f[_0x6137('0x3')]?_0x23ff1f[_0x6137('0x3')]:_0x6137('0x4');var _0x375515=_0x23ff1f[_0x6137('0x5')]?Mustache[_0x6137('0x6')](_0x23ff1f['data3'],_0x33d521):_0x33d521;sh[_0x6137('0x7')](_0x375515,function(_0x32496b,_0x1c8cd1,_0x30eabb){if(_0x32496b!==0x0){logger[_0x6137('0x8')](util[_0x6137('0x9')](_0x6137('0xa'),_0x273d6d,_0x375515,_0x32496b,_0x30eabb));}else{logger[_0x6137('0xb')](util[_0x6137('0x9')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x273d6d,_0x375515,_0x1c8cd1));}});};
\ No newline at end of file
index 4391ee4..4e06c3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93eb=[',\x20request\x20body:\x20','object','stringify','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','lodash','mustache','../../../../config/logger','exec','data1','toUpperCase','render','data2','data5','number','headers','data6','parse','error','stack','GET','DELETE','POST','PUT','data7','body','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','then','isNil'];(function(_0x445ded,_0x235f04){var _0x4808e7=function(_0x3d1702){while(--_0x3d1702){_0x445ded['push'](_0x445ded['shift']());}};_0x4808e7(++_0x235f04);}(_0x93eb,0x8b));var _0xb93e=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x93eb[_0x178e48];return _0x440d7e;};'use strict';var rp=require('request-promise');var util=require('util');var _=require(_0xb93e('0x0'));var Mustache=require(_0xb93e('0x1'));var logger=require(_0xb93e('0x2'))('trigger');exports[_0xb93e('0x3')]=function(_0x457b90,_0x1aa855){var _0x527c39,_0x384b7d;var _0x14c137={'method':_0x457b90[_0xb93e('0x4')][_0xb93e('0x5')](),'uri':Mustache[_0xb93e('0x6')](_0x457b90[_0xb93e('0x7')],_0x1aa855),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x457b90[_0xb93e('0x8')])===_0xb93e('0x9')&&parseInt(_0x457b90['data5'])>=0x1&&parseInt(_0x457b90[_0xb93e('0x8')])<=0xa?parseInt(_0x457b90[_0xb93e('0x8')])*0x3e8:0x5*0x3e8};try{_0x14c137[_0xb93e('0xa')]=_0x457b90[_0xb93e('0xb')]?JSON[_0xb93e('0xc')](Mustache['render'](_0x457b90[_0xb93e('0xb')],_0x1aa855)):{};}catch(_0xb4e5f3){logger[_0xb93e('0xd')](_0xb4e5f3[_0xb93e('0xe')]);}switch(_0x457b90[_0xb93e('0x4')][_0xb93e('0x5')]()){case _0xb93e('0xf'):case _0xb93e('0x10'):_0x527c39=null;_0x14c137['qs']=_0x1aa855;break;case _0xb93e('0x11'):case _0xb93e('0x12'):if(_0x457b90[_0xb93e('0x13')]){try{_0x527c39=JSON['parse'](Mustache[_0xb93e('0x6')](_0x457b90[_0xb93e('0x13')],_0x1aa855));_0x14c137[_0xb93e('0x14')]=_0x527c39;}catch(_0x2a7d51){logger[_0xb93e('0xd')](_0x2a7d51[_0xb93e('0xe')]);logger[_0xb93e('0xd')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x527c39=_0x1aa855;_0x14c137['body']=_0x527c39;}break;}logger[_0xb93e('0x15')](util[_0xb93e('0x16')](_0xb93e('0x17'),_0x457b90['data1'],_0x457b90[_0xb93e('0x7')],JSON['stringify'](_0x14c137)));rp(_0x14c137)[_0xb93e('0x18')](function(_0x2848f4){_0x527c39=!_[_0xb93e('0x19')](_0x527c39)?_0xb93e('0x1a')+_0x527c39:'';_0x384b7d=typeof _0x2848f4[_0xb93e('0x14')]===_0xb93e('0x1b')?JSON[_0xb93e('0x1c')](_0x2848f4[_0xb93e('0x14')]):_0x2848f4[_0xb93e('0x14')];logger[_0xb93e('0x15')](util[_0xb93e('0x16')](_0xb93e('0x1d'),_0x457b90[_0xb93e('0x4')],_0x457b90[_0xb93e('0x7')],_0x2848f4[_0xb93e('0x1e')],_0x384b7d));})[_0xb93e('0x1f')](function(_0x533bbb){logger[_0xb93e('0xd')](util[_0xb93e('0x16')](_0xb93e('0x20'),_0x457b90['data1'],_0x457b90[_0xb93e('0x7')],_0x533bbb[_0xb93e('0x1e')],_0x533bbb['name'],_0x533bbb['message']));});};
\ No newline at end of file
+var _0x7131=['parse','error','stack','GET','DELETE','POST','data7','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','stringify','then',',\x20request\x20body:\x20','object','statusCode','catch','name','message','request-promise','util','mustache','trigger','exec','data1','toUpperCase','render','data2','data5','number','headers','data6'];(function(_0x5120ff,_0x243e50){var _0x5160cb=function(_0x59827f){while(--_0x59827f){_0x5120ff['push'](_0x5120ff['shift']());}};_0x5160cb(++_0x243e50);}(_0x7131,0x193));var _0x1713=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x7131[_0x46e363];return _0x3fb059;};'use strict';var rp=require(_0x1713('0x0'));var util=require(_0x1713('0x1'));var _=require('lodash');var Mustache=require(_0x1713('0x2'));var logger=require('../../../../config/logger')(_0x1713('0x3'));exports[_0x1713('0x4')]=function(_0x5a8cf7,_0x1e9ef1){var _0x9e727e,_0x10eac5;var _0x58e81d={'method':_0x5a8cf7[_0x1713('0x5')][_0x1713('0x6')](),'uri':Mustache[_0x1713('0x7')](_0x5a8cf7[_0x1713('0x8')],_0x1e9ef1),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x5a8cf7[_0x1713('0x9')])===_0x1713('0xa')&&parseInt(_0x5a8cf7[_0x1713('0x9')])>=0x1&&parseInt(_0x5a8cf7['data5'])<=0xa?parseInt(_0x5a8cf7['data5'])*0x3e8:0x5*0x3e8};try{_0x58e81d[_0x1713('0xb')]=_0x5a8cf7[_0x1713('0xc')]?JSON[_0x1713('0xd')](Mustache['render'](_0x5a8cf7[_0x1713('0xc')],_0x1e9ef1)):{};}catch(_0x139ea8){logger[_0x1713('0xe')](_0x139ea8[_0x1713('0xf')]);}switch(_0x5a8cf7['data1'][_0x1713('0x6')]()){case _0x1713('0x10'):case _0x1713('0x11'):_0x9e727e=null;_0x58e81d['qs']=_0x1e9ef1;break;case _0x1713('0x12'):case'PUT':if(_0x5a8cf7['data7']){try{_0x9e727e=JSON['parse'](Mustache[_0x1713('0x7')](_0x5a8cf7[_0x1713('0x13')],_0x1e9ef1));_0x58e81d[_0x1713('0x14')]=_0x9e727e;}catch(_0x3f0867){logger[_0x1713('0xe')](_0x3f0867[_0x1713('0xf')]);logger[_0x1713('0xe')](_0x1713('0x15'));}}else{_0x9e727e=_0x1e9ef1;_0x58e81d[_0x1713('0x14')]=_0x9e727e;}break;}logger[_0x1713('0x16')](util[_0x1713('0x17')]('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0x5a8cf7['data1'],_0x5a8cf7[_0x1713('0x8')],JSON[_0x1713('0x18')](_0x58e81d)));rp(_0x58e81d)[_0x1713('0x19')](function(_0x4b96eb){_0x9e727e=!_['isNil'](_0x9e727e)?_0x1713('0x1a')+_0x9e727e:'';_0x10eac5=typeof _0x4b96eb[_0x1713('0x14')]===_0x1713('0x1b')?JSON[_0x1713('0x18')](_0x4b96eb[_0x1713('0x14')]):_0x4b96eb[_0x1713('0x14')];logger['info'](util[_0x1713('0x17')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x5a8cf7[_0x1713('0x5')],_0x5a8cf7['data2'],_0x4b96eb[_0x1713('0x1c')],_0x10eac5));})[_0x1713('0x1d')](function(_0x1e98bd){logger[_0x1713('0xe')](util['format']('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x5a8cf7[_0x1713('0x5')],_0x5a8cf7[_0x1713('0x8')],_0x1e98bd[_0x1713('0x1c')],_0x1e98bd[_0x1713('0x1e')],_0x1e98bd[_0x1713('0x1f')]));});};
\ No newline at end of file
index aba9839..498a2ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4cf=['then','debug','rpc','error','message','result','catch','exports','jayson/promise','bluebird','routing','client','Request'];(function(_0x459316,_0x299840){var _0x35fc16=function(_0x51b399){while(--_0x51b399){_0x459316['push'](_0x459316['shift']());}};_0x35fc16(++_0x299840);}(_0xd4cf,0x70));var _0xfd4c=function(_0x582f72,_0x886d8){_0x582f72=_0x582f72-0x0;var _0x4cd5fe=_0xd4cf[_0x582f72];return _0x4cd5fe;};'use strict';var jayson=require(_0xfd4c('0x0'));var BPromise=require(_0xfd4c('0x1'));var logger=require('../../config/logger')(_0xfd4c('0x2'));var client=jayson[_0xfd4c('0x3')]['http']({'port':0x2329});client[_0xfd4c('0x4')]=function(_0x1a6bbe,_0x5e0582){return new BPromise(function(_0x6b8aad,_0x26956a){return client['request'](_0x1a6bbe,_0x5e0582)[_0xfd4c('0x5')](function(_0xb4e446){logger[_0xfd4c('0x6')](_0xfd4c('0x7'),_0xfd4c('0x2'),_0x1a6bbe,_0x5e0582,_0xb4e446);if(_0xb4e446[_0xfd4c('0x8')]){logger[_0xfd4c('0x8')]('rpc','routing',_0x1a6bbe,_0xb4e446[_0xfd4c('0x8')][_0xfd4c('0x9')],_0x5e0582);return _0x26956a(_0xb4e446['error'][_0xfd4c('0x9')]);}else{return _0x6b8aad(_0xb4e446[_0xfd4c('0xa')]);}})[_0xfd4c('0xb')](function(_0x5016f5){logger[_0xfd4c('0x8')](_0xfd4c('0x7'),_0xfd4c('0x2'),_0x1a6bbe,_0x5016f5,_0x5e0582);return _0x26956a(_0x5016f5);});});};module[_0xfd4c('0xc')]=client;
\ No newline at end of file
+var _0xc550=['error','message','catch','exports','jayson/promise','bluebird','../../config/logger','client','http','Request','request','then','rpc','routing'];(function(_0x3aec1f,_0x44716f){var _0x24f322=function(_0x5be3fe){while(--_0x5be3fe){_0x3aec1f['push'](_0x3aec1f['shift']());}};_0x24f322(++_0x44716f);}(_0xc550,0x18c));var _0x0c55=function(_0x651c32,_0x554df9){_0x651c32=_0x651c32-0x0;var _0x25c174=_0xc550[_0x651c32];return _0x25c174;};'use strict';var jayson=require(_0x0c55('0x0'));var BPromise=require(_0x0c55('0x1'));var logger=require(_0x0c55('0x2'))('routing');var client=jayson[_0x0c55('0x3')][_0x0c55('0x4')]({'port':0x2329});client[_0x0c55('0x5')]=function(_0x357ba5,_0x11597a){return new BPromise(function(_0x40dd7d,_0x154313){return client[_0x0c55('0x6')](_0x357ba5,_0x11597a)[_0x0c55('0x7')](function(_0xf6927c){logger['debug'](_0x0c55('0x8'),_0x0c55('0x9'),_0x357ba5,_0x11597a,_0xf6927c);if(_0xf6927c[_0x0c55('0xa')]){logger[_0x0c55('0xa')](_0x0c55('0x8'),_0x0c55('0x9'),_0x357ba5,_0xf6927c[_0x0c55('0xa')][_0x0c55('0xb')],_0x11597a);return _0x154313(_0xf6927c[_0x0c55('0xa')][_0x0c55('0xb')]);}else{return _0x40dd7d(_0xf6927c['result']);}})[_0x0c55('0xc')](function(_0x11bc01){logger['error'](_0x0c55('0x8'),_0x0c55('0x9'),_0x357ba5,_0x11bc01,_0x11597a);return _0x154313(_0x11bc01);});});};module[_0x0c55('0xd')]=client;
\ No newline at end of file
index 5928908..b2342b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4af=['initMailAccounts','refresh','mailAccounts','listen','getSettings','loginMailFrequency','catch','log','bluebird','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','resolve','getMailAccounts','then'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xc4af,0x88));var _0xfc4a=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xc4af[_0x501510];return _0x1e6ee5;};'use strict';var BPromise=require(_0xfc4a('0x0'));var server=require('./server');var Realtime=require(_0xfc4a('0x1'));var EmailChannel=require(_0xfc4a('0x2'));var mailAccount=require(_0xfc4a('0x3'));var setting=require(_0xfc4a('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xfc4a('0x5')]()['then'](mailAccount[_0xfc4a('0x6')]())[_0xfc4a('0x7')](realtime[_0xfc4a('0x8')]())[_0xfc4a('0x7')](function(){email[_0xfc4a('0x9')](realtime[_0xfc4a('0xa')]);return realtime;});}function main(){return server[_0xfc4a('0xb')](realtime,email)[_0xfc4a('0x7')](function(){return initRealtime();})[_0xfc4a('0x7')](function(){return setting[_0xfc4a('0xc')]();})[_0xfc4a('0x7')](function(_0x18f5f3){return setInterval(initRealtime,_0x18f5f3[_0xfc4a('0xd')]*0x3e8);})[_0xfc4a('0xe')](function(_0x330b6e){console[_0xfc4a('0xf')](_0x330b6e);});}main();
\ No newline at end of file
+var _0xdcde=['./rpc/setting','then','initMailAccounts','mailAccounts','listen','loginMailFrequency','catch','log','bluebird','./server','./lib/email','./rpc/mailAccount'];(function(_0x3b0333,_0x97089){var _0x14f4cf=function(_0x50b35e){while(--_0x50b35e){_0x3b0333['push'](_0x3b0333['shift']());}};_0x14f4cf(++_0x97089);}(_0xdcde,0x1d0));var _0xedcd=function(_0x574489,_0x410b9e){_0x574489=_0x574489-0x0;var _0x205ae2=_0xdcde[_0x574489];return _0x205ae2;};'use strict';var BPromise=require(_0xedcd('0x0'));var server=require(_0xedcd('0x1'));var Realtime=require('./realtime');var EmailChannel=require(_0xedcd('0x2'));var mailAccount=require(_0xedcd('0x3'));var setting=require(_0xedcd('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise['resolve']()['then'](mailAccount['getMailAccounts']())[_0xedcd('0x5')](realtime[_0xedcd('0x6')]())[_0xedcd('0x5')](function(){email['refresh'](realtime[_0xedcd('0x7')]);return realtime;});}function main(){return server[_0xedcd('0x8')](realtime,email)[_0xedcd('0x5')](function(){return initRealtime();})[_0xedcd('0x5')](function(){return setting['getSettings']();})[_0xedcd('0x5')](function(_0x2ce75a){return setInterval(initRealtime,_0x2ce75a[_0xedcd('0x9')]*0x3e8);})[_0xedcd('0xa')](function(_0x94fdc8){console[_0xedcd('0xb')](_0x94fdc8);});}main();
\ No newline at end of file
index 919baf9..7c9cceb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccb7=['Smtp','verify','verified','catch','exports','lodash','moment','md5','ioredis','email','redis','defaults','localhost','./imap','./smtp','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','prototype','emit','key','Imap','status','total','stringify','hasOwnProperty','handleImapBox','bind','handleImapEmail','end','imapAccounts','error','handleImapError','isNil','connected','messageStatus','name','messages','info','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','notify','Mail\x20accepted\x20from\x20routing','handleImapEnd','lastSync','sendMail','smtp','send','verifySmtp'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xccb7,0x19d));var _0x7ccb=function(_0x420071,_0x4db5ea){_0x420071=_0x420071-0x0;var _0x58a4d7=_0xccb7[_0x420071];return _0x58a4d7;};'use strict';var _=require(_0x7ccb('0x0'));var moment=require(_0x7ccb('0x1'));var BPromise=require('bluebird');var md5=require(_0x7ccb('0x2'));var Redis=require(_0x7ccb('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x7ccb('0x4'));config[_0x7ccb('0x5')]=_[_0x7ccb('0x6')](config[_0x7ccb('0x5')],{'host':_0x7ccb('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x7ccb('0x5')]));var EmailImap=require(_0x7ccb('0x8'));var EmailSmtp=require(_0x7ccb('0x9'));var mailAccount=require(_0x7ccb('0xa'));var md5Accounts={};function EmailChannel(_0x58ed1b){logger['info'](_0x7ccb('0xb'));this[_0x7ccb('0xc')]=_0x58ed1b[_0x7ccb('0xc')];this['imapAccounts']={};this['smtp']=new EmailSmtp();}EmailChannel[_0x7ccb('0xd')][_0x7ccb('0xe')]=function(_0x5b632f){var _0xa73650=this['mailAccounts'][_0x5b632f];var _0x20dd0f={'id':_0xa73650['id'],'name':_0xa73650['name'],'key':_0xa73650[_0x7ccb('0xf')],'active':_0xa73650['active'],'Imap':{'status':_0xa73650[_0x7ccb('0x10')][_0x7ccb('0x11')],'messageStatus':_0xa73650['Imap']['messageStatus'],'total':_0xa73650[_0x7ccb('0x10')][_0x7ccb('0x12')]}};if(_['isNil'](md5Accounts[_0x5b632f])){md5Accounts[_0x5b632f]={};}var _0x48dc65=md5(JSON[_0x7ccb('0x13')](_0x20dd0f));if(md5Accounts[_0x5b632f][_0x7ccb('0x2')]!==_0x48dc65){md5Accounts[_0x5b632f][_0x7ccb('0x2')]=_0x48dc65;io[_0x7ccb('0xe')]('mailAccount:update',_0x20dd0f);}};EmailChannel[_0x7ccb('0xd')]['refresh']=function(_0x59fb12){for(var _0x56716d in _0x59fb12){if(_0x59fb12[_0x7ccb('0x14')](_0x56716d)){if(_0x59fb12[_0x56716d]['Imap']&&_0x59fb12[_0x56716d]['active']){var _0x452e34=_0x59fb12[_0x56716d][_0x7ccb('0x10')];if(!this['imapAccounts'][_0x7ccb('0x14')](_0x452e34['id'])){this['imapAccounts'][_0x452e34['id']]=new EmailImap(_0x452e34,_0x59fb12[_0x56716d]['email']);this['imapAccounts'][_0x452e34['id']]['on']('box',this[_0x7ccb('0x15')][_0x7ccb('0x16')](this,_0x56716d));this['imapAccounts'][_0x452e34['id']]['on'](_0x7ccb('0x4'),this[_0x7ccb('0x17')][_0x7ccb('0x16')](this,_0x56716d));this['imapAccounts'][_0x452e34['id']]['on'](_0x7ccb('0x18'),this['handleImapEnd']['bind'](this,_0x56716d));this[_0x7ccb('0x19')][_0x452e34['id']]['on'](_0x7ccb('0x1a'),this[_0x7ccb('0x1b')][_0x7ccb('0x16')](this,_0x56716d));}}else{if(_[_0x7ccb('0x1c')](this[_0x7ccb('0xc')][_0x56716d][_0x7ccb('0x10')])){this[_0x7ccb('0xc')][_0x56716d][_0x7ccb('0x10')]={};}this[_0x7ccb('0xc')][_0x56716d][_0x7ccb('0x10')][_0x7ccb('0x11')]='disabled';this['mailAccounts'][_0x56716d][_0x7ccb('0x10')]['messageStatus']='';this[_0x7ccb('0xe')](_0x56716d);}}}};EmailChannel[_0x7ccb('0xd')][_0x7ccb('0x15')]=function(_0x3da82a,_0x5d14e6){if(this[_0x7ccb('0xc')][_0x3da82a]){this[_0x7ccb('0xc')][_0x3da82a]['Imap'][_0x7ccb('0x11')]=_0x7ccb('0x1d');this['mailAccounts'][_0x3da82a]['Imap'][_0x7ccb('0x1e')]=_0x5d14e6[_0x7ccb('0x1f')];if(_0x5d14e6['messages']){this[_0x7ccb('0xc')][_0x3da82a]['Imap']['total']=_0x5d14e6[_0x7ccb('0x20')][_0x7ccb('0x12')];}return this[_0x7ccb('0xe')](_0x3da82a);}};EmailChannel[_0x7ccb('0xd')][_0x7ccb('0x17')]=function(_0x584691,_0xde9d9f){logger[_0x7ccb('0x21')](_0x7ccb('0x22'),_0xde9d9f[_0x7ccb('0x23')],_0xde9d9f[_0x7ccb('0x24')],_0xde9d9f[_0x7ccb('0x25')],_0x584691);if(this[_0x7ccb('0xc')][_0x584691]){return mailAccount[_0x7ccb('0x26')](_0x584691,_0xde9d9f)['then'](function(_0x515e4a){if(_0x515e4a){logger[_0x7ccb('0x21')](_0x7ccb('0x27'));}})['catch'](function(_0x55c4e3){logger[_0x7ccb('0x1a')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x7ccb('0x13')](_0x55c4e3));});}};EmailChannel['prototype'][_0x7ccb('0x28')]=function(_0x451c39){if(this[_0x7ccb('0xc')][_0x451c39]&&this[_0x7ccb('0xc')][_0x451c39][_0x7ccb('0x10')]){if(this[_0x7ccb('0x19')][this['mailAccounts'][_0x451c39][_0x7ccb('0x10')]['id']]){delete this[_0x7ccb('0x19')][this[_0x7ccb('0xc')][_0x451c39]['Imap']['id']];}this[_0x7ccb('0xc')][_0x451c39][_0x7ccb('0x10')][_0x7ccb('0x29')]=moment();this['emit'](_0x451c39);}};EmailChannel[_0x7ccb('0xd')][_0x7ccb('0x1b')]=function(_0x32651c,_0x5e2783){if(this[_0x7ccb('0xc')][_0x32651c]){this['mailAccounts'][_0x32651c][_0x7ccb('0x10')][_0x7ccb('0x11')]=_0x7ccb('0x1a');this[_0x7ccb('0xc')][_0x32651c][_0x7ccb('0x10')][_0x7ccb('0x1e')]=_0x5e2783;return this[_0x7ccb('0xe')](_0x32651c);}};EmailChannel[_0x7ccb('0xd')][_0x7ccb('0x2a')]=function(_0x4e594a,_0x52b43f){return this[_0x7ccb('0x2b')][_0x7ccb('0x2c')](_0x4e594a,_0x52b43f);};EmailChannel['prototype'][_0x7ccb('0x2d')]=function(_0x37cc6d){var _0x35d9bd=this;if(this[_0x7ccb('0xc')][_0x37cc6d['id']]){if(_[_0x7ccb('0x1c')](this[_0x7ccb('0xc')][_0x37cc6d['id']][_0x7ccb('0x2e')])){this[_0x7ccb('0xc')][_0x37cc6d['id']][_0x7ccb('0x2e')]={};}this['mailAccounts'][_0x37cc6d['id']]['Smtp'][_0x7ccb('0x29')]=moment();return new BPromise(function(_0x49e16a,_0xf6a3f8){return _0x35d9bd[_0x7ccb('0x2b')][_0x7ccb('0x2f')](_0x37cc6d)['then'](function(_0x238a20){_0x35d9bd[_0x7ccb('0xc')][_0x37cc6d['id']][_0x7ccb('0x2e')][_0x7ccb('0x11')]=_0x7ccb('0x30');_0x35d9bd['mailAccounts'][_0x37cc6d['id']][_0x7ccb('0x2e')][_0x7ccb('0x1e')]='';_0x35d9bd[_0x7ccb('0xe')](_0x37cc6d['id']);_0x49e16a(_0x238a20);})[_0x7ccb('0x31')](function(_0x1e17a7){_0x35d9bd[_0x7ccb('0xc')][_0x37cc6d['id']][_0x7ccb('0x2e')][_0x7ccb('0x11')]=_0x7ccb('0x1a');_0x35d9bd['mailAccounts'][_0x37cc6d['id']][_0x7ccb('0x2e')][_0x7ccb('0x1e')]=_0x1e17a7;_0x35d9bd['emit'](_0x37cc6d['id']);_0xf6a3f8(_0x1e17a7);});});}return this[_0x7ccb('0x2b')][_0x7ccb('0x2f')](_0x37cc6d);};module[_0x7ccb('0x32')]=EmailChannel;
\ No newline at end of file
+var _0x0360=['lodash','moment','bluebird','md5','ioredis','../../../config/environment','email','redis','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','mailAccounts','imapAccounts','emit','name','active','Imap','status','messageStatus','total','stringify','prototype','refresh','hasOwnProperty','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','isNil','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','from','notify','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','handleImapError','sendMail','smtp','send','Smtp','verify','then','verified','exports'];(function(_0x403ccc,_0x19ab06){var _0x41fb18=function(_0x453484){while(--_0x453484){_0x403ccc['push'](_0x403ccc['shift']());}};_0x41fb18(++_0x19ab06);}(_0x0360,0x109));var _0x0036=function(_0x3f0b15,_0xb88473){_0x3f0b15=_0x3f0b15-0x0;var _0x38f95f=_0x0360[_0x3f0b15];return _0x38f95f;};'use strict';var _=require(_0x0036('0x0'));var moment=require(_0x0036('0x1'));var BPromise=require(_0x0036('0x2'));var md5=require(_0x0036('0x3'));var Redis=require(_0x0036('0x4'));var config=require(_0x0036('0x5'));var logger=require('../../../config/logger')(_0x0036('0x6'));config['redis']=_['defaults'](config[_0x0036('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x0036('0x8'))(new Redis(config[_0x0036('0x7')]));var EmailImap=require(_0x0036('0x9'));var EmailSmtp=require(_0x0036('0xa'));var mailAccount=require(_0x0036('0xb'));var md5Accounts={};function EmailChannel(_0x3ed3cd){logger[_0x0036('0xc')]('start\x20email\x20channel');this['mailAccounts']=_0x3ed3cd[_0x0036('0xd')];this[_0x0036('0xe')]={};this['smtp']=new EmailSmtp();}EmailChannel['prototype'][_0x0036('0xf')]=function(_0xcc78a7){var _0x30130e=this[_0x0036('0xd')][_0xcc78a7];var _0x3093f4={'id':_0x30130e['id'],'name':_0x30130e[_0x0036('0x10')],'key':_0x30130e['key'],'active':_0x30130e[_0x0036('0x11')],'Imap':{'status':_0x30130e[_0x0036('0x12')][_0x0036('0x13')],'messageStatus':_0x30130e[_0x0036('0x12')][_0x0036('0x14')],'total':_0x30130e[_0x0036('0x12')][_0x0036('0x15')]}};if(_['isNil'](md5Accounts[_0xcc78a7])){md5Accounts[_0xcc78a7]={};}var _0x379c72=md5(JSON[_0x0036('0x16')](_0x3093f4));if(md5Accounts[_0xcc78a7][_0x0036('0x3')]!==_0x379c72){md5Accounts[_0xcc78a7][_0x0036('0x3')]=_0x379c72;io[_0x0036('0xf')]('mailAccount:update',_0x3093f4);}};EmailChannel[_0x0036('0x17')][_0x0036('0x18')]=function(_0x36b97e){for(var _0x372ab1 in _0x36b97e){if(_0x36b97e[_0x0036('0x19')](_0x372ab1)){if(_0x36b97e[_0x372ab1][_0x0036('0x12')]&&_0x36b97e[_0x372ab1][_0x0036('0x11')]){var _0x5e40c7=_0x36b97e[_0x372ab1][_0x0036('0x12')];if(!this[_0x0036('0xe')]['hasOwnProperty'](_0x5e40c7['id'])){this[_0x0036('0xe')][_0x5e40c7['id']]=new EmailImap(_0x5e40c7,_0x36b97e[_0x372ab1][_0x0036('0x6')]);this[_0x0036('0xe')][_0x5e40c7['id']]['on'](_0x0036('0x1a'),this[_0x0036('0x1b')][_0x0036('0x1c')](this,_0x372ab1));this[_0x0036('0xe')][_0x5e40c7['id']]['on'](_0x0036('0x6'),this[_0x0036('0x1d')]['bind'](this,_0x372ab1));this[_0x0036('0xe')][_0x5e40c7['id']]['on'](_0x0036('0x1e'),this[_0x0036('0x1f')][_0x0036('0x1c')](this,_0x372ab1));this['imapAccounts'][_0x5e40c7['id']]['on'](_0x0036('0x20'),this['handleImapError']['bind'](this,_0x372ab1));}}else{if(_[_0x0036('0x21')](this[_0x0036('0xd')][_0x372ab1][_0x0036('0x12')])){this['mailAccounts'][_0x372ab1][_0x0036('0x12')]={};}this['mailAccounts'][_0x372ab1][_0x0036('0x12')][_0x0036('0x13')]='disabled';this['mailAccounts'][_0x372ab1]['Imap'][_0x0036('0x14')]='';this['emit'](_0x372ab1);}}}};EmailChannel[_0x0036('0x17')]['handleImapBox']=function(_0xdf0916,_0x502dbf){if(this[_0x0036('0xd')][_0xdf0916]){this[_0x0036('0xd')][_0xdf0916][_0x0036('0x12')]['status']=_0x0036('0x22');this['mailAccounts'][_0xdf0916]['Imap'][_0x0036('0x14')]=_0x502dbf[_0x0036('0x10')];if(_0x502dbf[_0x0036('0x23')]){this['mailAccounts'][_0xdf0916][_0x0036('0x12')]['total']=_0x502dbf['messages'][_0x0036('0x15')];}return this[_0x0036('0xf')](_0xdf0916);}};EmailChannel[_0x0036('0x17')][_0x0036('0x1d')]=function(_0x3de83e,_0xd18990){logger[_0x0036('0xc')](_0x0036('0x24'),_0xd18990[_0x0036('0x25')],_0xd18990['lastName'],_0xd18990[_0x0036('0x26')],_0x3de83e);if(this[_0x0036('0xd')][_0x3de83e]){return mailAccount[_0x0036('0x27')](_0x3de83e,_0xd18990)['then'](function(_0x4c78f1){if(_0x4c78f1){logger['info'](_0x0036('0x28'));}})[_0x0036('0x29')](function(_0x31d538){logger[_0x0036('0x20')](_0x0036('0x2a'),JSON[_0x0036('0x16')](_0x31d538));});}};EmailChannel[_0x0036('0x17')][_0x0036('0x1f')]=function(_0x3af333){if(this[_0x0036('0xd')][_0x3af333]&&this[_0x0036('0xd')][_0x3af333][_0x0036('0x12')]){if(this[_0x0036('0xe')][this['mailAccounts'][_0x3af333][_0x0036('0x12')]['id']]){delete this[_0x0036('0xe')][this[_0x0036('0xd')][_0x3af333][_0x0036('0x12')]['id']];}this['mailAccounts'][_0x3af333]['Imap'][_0x0036('0x2b')]=moment();this['emit'](_0x3af333);}};EmailChannel['prototype'][_0x0036('0x2c')]=function(_0x4f96ab,_0xfd0ae3){if(this[_0x0036('0xd')][_0x4f96ab]){this[_0x0036('0xd')][_0x4f96ab]['Imap'][_0x0036('0x13')]='error';this[_0x0036('0xd')][_0x4f96ab][_0x0036('0x12')][_0x0036('0x14')]=_0xfd0ae3;return this[_0x0036('0xf')](_0x4f96ab);}};EmailChannel[_0x0036('0x17')][_0x0036('0x2d')]=function(_0xfc56e,_0x2a7215){return this[_0x0036('0x2e')][_0x0036('0x2f')](_0xfc56e,_0x2a7215);};EmailChannel[_0x0036('0x17')]['verifySmtp']=function(_0x2af59a){var _0x4a1983=this;if(this[_0x0036('0xd')][_0x2af59a['id']]){if(_['isNil'](this[_0x0036('0xd')][_0x2af59a['id']][_0x0036('0x30')])){this[_0x0036('0xd')][_0x2af59a['id']][_0x0036('0x30')]={};}this[_0x0036('0xd')][_0x2af59a['id']][_0x0036('0x30')][_0x0036('0x2b')]=moment();return new BPromise(function(_0x52b764,_0x1fb9c3){return _0x4a1983[_0x0036('0x2e')][_0x0036('0x31')](_0x2af59a)[_0x0036('0x32')](function(_0x3fae15){_0x4a1983[_0x0036('0xd')][_0x2af59a['id']][_0x0036('0x30')][_0x0036('0x13')]=_0x0036('0x33');_0x4a1983[_0x0036('0xd')][_0x2af59a['id']][_0x0036('0x30')]['messageStatus']='';_0x4a1983['emit'](_0x2af59a['id']);_0x52b764(_0x3fae15);})['catch'](function(_0x14ffc1){_0x4a1983[_0x0036('0xd')][_0x2af59a['id']]['Smtp'][_0x0036('0x13')]='error';_0x4a1983[_0x0036('0xd')][_0x2af59a['id']]['Smtp'][_0x0036('0x14')]=_0x14ffc1;_0x4a1983[_0x0036('0xf')](_0x2af59a['id']);_0x1fb9c3(_0x14ffc1);});});}return this[_0x0036('0x2e')][_0x0036('0x31')](_0x2af59a);};module[_0x0036('0x34')]=EmailChannel;
\ No newline at end of file
index f8ff259..25785eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc855=['handleFetchMessage','handleFetchError','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','textCode','hasOwnProperty','exports','path','imap','iconv','EventEmitter','./utils','../../../config/logger','INBOX','account','getAccount','once','ready','handleReady','end','handleEnd','bind','error','handleError','inherits','prototype','connTimeout','authTimeout','service','password','host','port','tls','autotls','required','user','getHost','email','openBox','mailbox','handleOpenBox','emit','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','length','fetch','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc855,0xe8));var _0x5c85=function(_0x3c3fd3,_0x2d5161){_0x3c3fd3=_0x3c3fd3-0x0;var _0x42b020=_0xc855[_0x3c3fd3];return _0x42b020;};'use strict';var fs=require('fs');var path=require(_0x5c85('0x0'));var util=require('util');var Imap=require(_0x5c85('0x1'));var _=require('lodash');var rs=require('randomstring');var simpleParser=require('mailparser')['simpleParser'];var Iconv=require(_0x5c85('0x2'))['Iconv'];var EventEmitter=require('events')[_0x5c85('0x3')];var utils=require(_0x5c85('0x4'));var logger=require(_0x5c85('0x5'))('email');function EmailImap(_0x404dbb,_0x562e14){this['mailbox']=_0x5c85('0x6');this[_0x5c85('0x7')]=this[_0x5c85('0x8')](_0x404dbb,_0x562e14);this[_0x5c85('0x1')]=new Imap(this[_0x5c85('0x7')]);this[_0x5c85('0x1')][_0x5c85('0x9')](_0x5c85('0xa'),this[_0x5c85('0xb')]['bind'](this));this[_0x5c85('0x1')]['once'](_0x5c85('0xc'),this[_0x5c85('0xd')][_0x5c85('0xe')](this));this[_0x5c85('0x1')]['on'](_0x5c85('0xf'),this[_0x5c85('0x10')][_0x5c85('0xe')](this));this['imap']['connect']();}util[_0x5c85('0x11')](EmailImap,EventEmitter);EmailImap[_0x5c85('0x12')][_0x5c85('0x8')]=function(_0x5bbf0e,_0x526aa8){var _0x2e1065={'connTimeout':_0x5bbf0e[_0x5c85('0x13')]?_0x5bbf0e[_0x5c85('0x13')]*0x3e8:0x2710,'authTimeout':_0x5bbf0e[_0x5c85('0x14')]?_0x5bbf0e[_0x5c85('0x14')]*0x3e8:0x1388};if(_['isNil'](_0x5bbf0e[_0x5c85('0x15')])){if(_0x5bbf0e['authentication']){_0x2e1065['user']=_0x5bbf0e['user'];_0x2e1065[_0x5c85('0x16')]=_0x5bbf0e[_0x5c85('0x16')];}_0x2e1065['host']=_0x5bbf0e[_0x5c85('0x17')];_0x2e1065[_0x5c85('0x18')]=_0x5bbf0e[_0x5c85('0x18')]||0x3e1;if(_0x5bbf0e[_0x5c85('0x19')]){_0x2e1065['tls']=!![];}else{_0x2e1065[_0x5c85('0x19')]=![];_0x2e1065[_0x5c85('0x1a')]=_0x5c85('0x1b');}}else{_0x2e1065[_0x5c85('0x1c')]=_0x5bbf0e[_0x5c85('0x1c')];_0x2e1065[_0x5c85('0x16')]=_0x5bbf0e[_0x5c85('0x16')];_0x2e1065[_0x5c85('0x17')]=utils[_0x5c85('0x1d')](_0x5bbf0e[_0x5c85('0x15')]);_0x2e1065[_0x5c85('0x18')]=0x3e1;_0x2e1065[_0x5c85('0x19')]=!![];}_0x2e1065[_0x5c85('0x1e')]=_0x526aa8||_0x5bbf0e[_0x5c85('0x1c')]||'anonymous@xcally.com';return _0x2e1065;};EmailImap[_0x5c85('0x12')][_0x5c85('0xb')]=function(){this[_0x5c85('0x1')][_0x5c85('0x1f')](this[_0x5c85('0x20')],![],this[_0x5c85('0x21')][_0x5c85('0xe')](this));};EmailImap[_0x5c85('0x12')]['handleOpenBox']=function(_0x12c8e7,_0x5e4827){if(_0x12c8e7){this['handleError'](_0x12c8e7,!![]);}else{this[_0x5c85('0x22')]('box',_0x5e4827);this[_0x5c85('0x23')]();}};EmailImap[_0x5c85('0x12')][_0x5c85('0x24')]=function(_0x19f8a3){if(_0x19f8a3){this[_0x5c85('0x10')](_0x19f8a3,!![]);}else{this[_0x5c85('0x1')][_0x5c85('0xc')]();}};EmailImap[_0x5c85('0x12')][_0x5c85('0x23')]=function(){this[_0x5c85('0x1')][_0x5c85('0x25')]([_0x5c85('0x26')],this[_0x5c85('0x27')]['bind'](this));};EmailImap['prototype'][_0x5c85('0x27')]=function(_0x513014,_0x10c8d3){if(_0x513014){this[_0x5c85('0x10')](_0x513014,!![]);}else{if(_0x10c8d3[_0x5c85('0x28')]){try{var _0x570e9b=this[_0x5c85('0x1')][_0x5c85('0x29')](_0x10c8d3,{'bodies':'','markSeen':!![]});_0x570e9b['on'](_0x5c85('0x2a'),this[_0x5c85('0x2b')][_0x5c85('0xe')](this));_0x570e9b[_0x5c85('0x9')]('error',this[_0x5c85('0x2c')]['bind'](this));_0x570e9b['once'](_0x5c85('0xc'),this['handleFetchEnd'][_0x5c85('0xe')](this));}catch(_0x21ada8){logger[_0x5c85('0xf')](_0x21ada8);}}else{this[_0x5c85('0x1')][_0x5c85('0x2d')](!![],this[_0x5c85('0x24')]['bind'](this));}}};EmailImap['prototype'][_0x5c85('0x2b')]=function(_0x158e2e,_0x295a47){_0x158e2e['on'](_0x5c85('0x2e'),this[_0x5c85('0x2f')][_0x5c85('0xe')](this));_0x158e2e[_0x5c85('0x9')](_0x5c85('0x30'),this[_0x5c85('0x31')][_0x5c85('0xe')](this));_0x158e2e[_0x5c85('0x9')]('end',this[_0x5c85('0x32')]['bind'](this));};EmailImap[_0x5c85('0x12')][_0x5c85('0x2f')]=function(_0x2514bd,_0xc6a229){simpleParser(_0x2514bd,{'Iconv':Iconv},this[_0x5c85('0x33')][_0x5c85('0xe')](this));};EmailImap[_0x5c85('0x12')][_0x5c85('0x31')]=function(_0x1f6341){};EmailImap[_0x5c85('0x12')]['handleMessageEnd']=function(){};EmailImap[_0x5c85('0x12')][_0x5c85('0x33')]=function(_0x28e09f,_0x5c12d4){if(_0x28e09f){logger[_0x5c85('0xf')](_0x28e09f);}else{var _0x17a5ba=this;utils['parser'](this[_0x5c85('0x7')],_0x5c12d4,function(_0x35d5e8){_0x17a5ba['emit'](_0x5c85('0x1e'),_0x35d5e8);});}};EmailImap[_0x5c85('0x12')]['handleFetchEnd']=function(){this[_0x5c85('0x1')]['closeBox'](!![],this['handleCloseBox'][_0x5c85('0xe')](this));};EmailImap['prototype']['handleFetchError']=function(_0x2d2145){this[_0x5c85('0x10')](_0x2d2145);this[_0x5c85('0x1')][_0x5c85('0x2d')](!![],this[_0x5c85('0x24')][_0x5c85('0xe')](this));};EmailImap[_0x5c85('0x12')][_0x5c85('0xd')]=function(){this[_0x5c85('0x22')](_0x5c85('0xc'));};EmailImap[_0x5c85('0x12')][_0x5c85('0x10')]=function(_0x388066,_0x521b54){logger['error']('handleError',this[_0x5c85('0x7')][_0x5c85('0x1e')],JSON['stringify'](_0x388066));var _0x47eb3a='';if(_0x388066){if(_0x388066['textCode']){_0x47eb3a=_0x388066[_0x5c85('0x34')];}else{for(var _0xf32170 in _0x388066){if(_0x388066[_0x5c85('0x35')](_0xf32170)){_0x47eb3a+=_['upperFirst'](_0xf32170)+':\x20'+_0x388066[_0xf32170]+'\x0a';}}}}if(_0x521b54){this[_0x5c85('0x1')][_0x5c85('0xc')]();}else{this[_0x5c85('0x22')](_0x5c85('0xf'),_0x47eb3a);this[_0x5c85('0x22')](_0x5c85('0xc'));}};module[_0x5c85('0x36')]=EmailImap;
\ No newline at end of file
+var _0x9750=['account','getAccount','ready','handleReady','bind','once','end','handleEnd','error','handleError','connect','inherits','prototype','connTimeout','authTimeout','service','authentication','user','password','host','port','tls','required','getHost','anonymous@xcally.com','openBox','mailbox','handleOpenBox','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','length','message','handleFetchMessage','closeBox','body','handleMessageBody','attributes','handleMessageEnd','handleSimpleParser','handleMessageAttributes','parser','emit','handleFetchError','stringify','textCode','hasOwnProperty','util','imap','randomstring','iconv','Iconv','events','EventEmitter','./utils','../../../config/logger','email','INBOX'];(function(_0x4c25b7,_0x12f821){var _0x28a773=function(_0x41852c){while(--_0x41852c){_0x4c25b7['push'](_0x4c25b7['shift']());}};_0x28a773(++_0x12f821);}(_0x9750,0x199));var _0x0975=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x9750[_0x24237f];return _0x48298e;};'use strict';var fs=require('fs');var path=require('path');var util=require(_0x0975('0x0'));var Imap=require(_0x0975('0x1'));var _=require('lodash');var rs=require(_0x0975('0x2'));var simpleParser=require('mailparser')['simpleParser'];var Iconv=require(_0x0975('0x3'))[_0x0975('0x4')];var EventEmitter=require(_0x0975('0x5'))[_0x0975('0x6')];var utils=require(_0x0975('0x7'));var logger=require(_0x0975('0x8'))(_0x0975('0x9'));function EmailImap(_0xe68205,_0x27a194){this['mailbox']=_0x0975('0xa');this[_0x0975('0xb')]=this[_0x0975('0xc')](_0xe68205,_0x27a194);this[_0x0975('0x1')]=new Imap(this[_0x0975('0xb')]);this[_0x0975('0x1')]['once'](_0x0975('0xd'),this[_0x0975('0xe')][_0x0975('0xf')](this));this[_0x0975('0x1')][_0x0975('0x10')](_0x0975('0x11'),this[_0x0975('0x12')][_0x0975('0xf')](this));this[_0x0975('0x1')]['on'](_0x0975('0x13'),this[_0x0975('0x14')]['bind'](this));this[_0x0975('0x1')][_0x0975('0x15')]();}util[_0x0975('0x16')](EmailImap,EventEmitter);EmailImap[_0x0975('0x17')][_0x0975('0xc')]=function(_0x1d005f,_0x255193){var _0x245943={'connTimeout':_0x1d005f[_0x0975('0x18')]?_0x1d005f[_0x0975('0x18')]*0x3e8:0x2710,'authTimeout':_0x1d005f[_0x0975('0x19')]?_0x1d005f[_0x0975('0x19')]*0x3e8:0x1388};if(_['isNil'](_0x1d005f[_0x0975('0x1a')])){if(_0x1d005f[_0x0975('0x1b')]){_0x245943[_0x0975('0x1c')]=_0x1d005f[_0x0975('0x1c')];_0x245943[_0x0975('0x1d')]=_0x1d005f[_0x0975('0x1d')];}_0x245943[_0x0975('0x1e')]=_0x1d005f[_0x0975('0x1e')];_0x245943[_0x0975('0x1f')]=_0x1d005f[_0x0975('0x1f')]||0x3e1;if(_0x1d005f[_0x0975('0x20')]){_0x245943[_0x0975('0x20')]=!![];}else{_0x245943[_0x0975('0x20')]=![];_0x245943['autotls']=_0x0975('0x21');}}else{_0x245943['user']=_0x1d005f[_0x0975('0x1c')];_0x245943[_0x0975('0x1d')]=_0x1d005f[_0x0975('0x1d')];_0x245943[_0x0975('0x1e')]=utils[_0x0975('0x22')](_0x1d005f[_0x0975('0x1a')]);_0x245943[_0x0975('0x1f')]=0x3e1;_0x245943[_0x0975('0x20')]=!![];}_0x245943[_0x0975('0x9')]=_0x255193||_0x1d005f['user']||_0x0975('0x23');return _0x245943;};EmailImap['prototype']['handleReady']=function(){this[_0x0975('0x1')][_0x0975('0x24')](this[_0x0975('0x25')],![],this[_0x0975('0x26')][_0x0975('0xf')](this));};EmailImap[_0x0975('0x17')][_0x0975('0x26')]=function(_0x211276,_0x37b05c){if(_0x211276){this[_0x0975('0x14')](_0x211276,!![]);}else{this['emit']('box',_0x37b05c);this[_0x0975('0x27')]();}};EmailImap[_0x0975('0x17')][_0x0975('0x28')]=function(_0x38b50f){if(_0x38b50f){this[_0x0975('0x14')](_0x38b50f,!![]);}else{this[_0x0975('0x1')]['end']();}};EmailImap[_0x0975('0x17')][_0x0975('0x27')]=function(){this[_0x0975('0x1')][_0x0975('0x29')]([_0x0975('0x2a')],this[_0x0975('0x2b')][_0x0975('0xf')](this));};EmailImap[_0x0975('0x17')][_0x0975('0x2b')]=function(_0xdd24f6,_0x45282a){if(_0xdd24f6){this[_0x0975('0x14')](_0xdd24f6,!![]);}else{if(_0x45282a[_0x0975('0x2c')]){try{var _0x207e70=this[_0x0975('0x1')]['fetch'](_0x45282a,{'bodies':'','markSeen':!![]});_0x207e70['on'](_0x0975('0x2d'),this[_0x0975('0x2e')][_0x0975('0xf')](this));_0x207e70[_0x0975('0x10')]('error',this['handleFetchError'][_0x0975('0xf')](this));_0x207e70[_0x0975('0x10')]('end',this['handleFetchEnd']['bind'](this));}catch(_0x1338fe){logger['error'](_0x1338fe);}}else{this[_0x0975('0x1')][_0x0975('0x2f')](!![],this[_0x0975('0x28')][_0x0975('0xf')](this));}}};EmailImap['prototype']['handleFetchMessage']=function(_0x508f22,_0x3857ab){_0x508f22['on'](_0x0975('0x30'),this[_0x0975('0x31')][_0x0975('0xf')](this));_0x508f22[_0x0975('0x10')](_0x0975('0x32'),this['handleMessageAttributes'][_0x0975('0xf')](this));_0x508f22[_0x0975('0x10')](_0x0975('0x11'),this[_0x0975('0x33')][_0x0975('0xf')](this));};EmailImap[_0x0975('0x17')][_0x0975('0x31')]=function(_0xdfaaac,_0x59ff98){simpleParser(_0xdfaaac,{'Iconv':Iconv},this[_0x0975('0x34')]['bind'](this));};EmailImap[_0x0975('0x17')][_0x0975('0x35')]=function(_0x3f7a31){};EmailImap['prototype'][_0x0975('0x33')]=function(){};EmailImap[_0x0975('0x17')]['handleSimpleParser']=function(_0x491f36,_0x21959e){if(_0x491f36){logger[_0x0975('0x13')](_0x491f36);}else{var _0x4a831a=this;utils[_0x0975('0x36')](this[_0x0975('0xb')],_0x21959e,function(_0x5abc48){_0x4a831a[_0x0975('0x37')](_0x0975('0x9'),_0x5abc48);});}};EmailImap['prototype']['handleFetchEnd']=function(){this['imap'][_0x0975('0x2f')](!![],this[_0x0975('0x28')]['bind'](this));};EmailImap[_0x0975('0x17')][_0x0975('0x38')]=function(_0x156176){this[_0x0975('0x14')](_0x156176);this[_0x0975('0x1')][_0x0975('0x2f')](!![],this['handleCloseBox'][_0x0975('0xf')](this));};EmailImap[_0x0975('0x17')][_0x0975('0x12')]=function(){this['emit'](_0x0975('0x11'));};EmailImap[_0x0975('0x17')][_0x0975('0x14')]=function(_0x15c60a,_0x18675d){logger[_0x0975('0x13')](_0x0975('0x14'),this['account'][_0x0975('0x9')],JSON[_0x0975('0x39')](_0x15c60a));var _0x2f6a91='';if(_0x15c60a){if(_0x15c60a[_0x0975('0x3a')]){_0x2f6a91=_0x15c60a[_0x0975('0x3a')];}else{for(var _0x3e81cf in _0x15c60a){if(_0x15c60a[_0x0975('0x3b')](_0x3e81cf)){_0x2f6a91+=_['upperFirst'](_0x3e81cf)+':\x20'+_0x15c60a[_0x3e81cf]+'\x0a';}}}}if(_0x18675d){this[_0x0975('0x1')][_0x0975('0x11')]();}else{this[_0x0975('0x37')](_0x0975('0x13'),_0x2f6a91);this['emit'](_0x0975('0x11'));}};module['exports']=EmailImap;
\ No newline at end of file
index e652281..5c4ee58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x700f=['Not\x20verifired','exports','nodemailer','bluebird','prototype','send','createTransport','use','compile','sendMail','toString','verify'];(function(_0x1dfce3,_0x491d21){var _0x127504=function(_0x3028cb){while(--_0x3028cb){_0x1dfce3['push'](_0x1dfce3['shift']());}};_0x127504(++_0x491d21);}(_0x700f,0x19a));var _0xf700=function(_0x3956e9,_0x3fc10a){_0x3956e9=_0x3956e9-0x0;var _0x310aaf=_0x700f[_0x3956e9];return _0x310aaf;};'use strict';var nodemailer=require(_0xf700('0x0'));var BPromise=require(_0xf700('0x1'));var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0xf700('0x2')][_0xf700('0x3')]=function(_0x4c6fb6,_0x478195){return new BPromise(function(_0x182e58,_0x22e230){var _0x5a1c1c=nodemailer[_0xf700('0x4')](_0x4c6fb6);_0x5a1c1c[_0xf700('0x5')](_0xf700('0x6'),inlineBase64());_0x5a1c1c[_0xf700('0x7')](_0x478195,function(_0x3f0e8d,_0x3b14b4){if(_0x3f0e8d){_0x22e230(_0x3f0e8d[_0xf700('0x8')]());}else{_0x182e58(_0x3b14b4);}});});};EmailSmtp[_0xf700('0x2')][_0xf700('0x9')]=function(_0x2f3e6a){return new BPromise(function(_0x55c815,_0x239a2b){var _0x57f5db=nodemailer[_0xf700('0x4')](_0x2f3e6a);_0x57f5db[_0xf700('0x9')](function(_0x24c4fd,_0x5500d8){if(_0x24c4fd){_0x239a2b(_0x24c4fd[_0xf700('0x8')]());}else{if(_0x5500d8){_0x55c815(_0x5500d8);}else{_0x239a2b(_0xf700('0xa'));}}});});};module[_0xf700('0xb')]=EmailSmtp;
\ No newline at end of file
+var _0xbf4e=['createTransport','toString','Not\x20verifired','exports','bluebird','prototype','send','use','compile','sendMail','verify'];(function(_0x577872,_0x1e634b){var _0xb1d4eb=function(_0x563220){while(--_0x563220){_0x577872['push'](_0x577872['shift']());}};_0xb1d4eb(++_0x1e634b);}(_0xbf4e,0x67));var _0xebf4=function(_0x56e8ba,_0x237aab){_0x56e8ba=_0x56e8ba-0x0;var _0x246a23=_0xbf4e[_0x56e8ba];return _0x246a23;};'use strict';var nodemailer=require('nodemailer');var BPromise=require(_0xebf4('0x0'));var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0xebf4('0x1')][_0xebf4('0x2')]=function(_0x48385d,_0x37c469){return new BPromise(function(_0x35beb4,_0x223c2f){var _0x5bbd93=nodemailer['createTransport'](_0x48385d);_0x5bbd93[_0xebf4('0x3')](_0xebf4('0x4'),inlineBase64());_0x5bbd93[_0xebf4('0x5')](_0x37c469,function(_0x54e64d,_0x2a26a9){if(_0x54e64d){_0x223c2f(_0x54e64d['toString']());}else{_0x35beb4(_0x2a26a9);}});});};EmailSmtp[_0xebf4('0x1')][_0xebf4('0x6')]=function(_0x24c1b8){return new BPromise(function(_0x207b1c,_0x4b5e00){var _0xf9d8ff=nodemailer[_0xebf4('0x7')](_0x24c1b8);_0xf9d8ff[_0xebf4('0x6')](function(_0x118832,_0x1862af){if(_0x118832){_0x4b5e00(_0x118832[_0xebf4('0x8')]());}else{if(_0x1862af){_0x207b1c(_0x1862af);}else{_0x4b5e00(_0xebf4('0x9'));}}});});};module[_0xebf4('0xa')]=EmailSmtp;
\ No newline at end of file
index 35af2e8..d5e59c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf37=['imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','127.0.0.1','moment','randomstring','path','util','node-tnef','email','../../../config/environment','head','generate','@xcally.com','value','name','address','indexOf','split','slice','length','isEmpty','test','replace','includes','forEach','push','filename','html','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','originTo','message','originCc','bcc','attachments','attach','type','attachment','%s-%s','root','writeFileSync','headerLines','Auto-Submitted:\x20auto-replied','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId','inReplyTo','format','filter','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','first','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost'];(function(_0x2af302,_0xad11e3){var _0x3e6b58=function(_0x3c7861){while(--_0x3c7861){_0x2af302['push'](_0x2af302['shift']());}};_0x3e6b58(++_0xad11e3);}(_0xcf37,0xdc));var _0x7cf3=function(_0x2f9ced,_0x26b7c5){_0x2f9ced=_0x2f9ced-0x0;var _0x1531e5=_0xcf37[_0x2f9ced];return _0x1531e5;};'use strict';var _=require('lodash');var moment=require(_0x7cf3('0x0'));var random=require(_0x7cf3('0x1'));var fs=require('fs');var path=require(_0x7cf3('0x2'));var util=require(_0x7cf3('0x3'));var tnef=require(_0x7cf3('0x4'));var logger=require('../../../config/logger')(_0x7cf3('0x5'));var config=require(_0x7cf3('0x6'));function getAddress(_0x3a015f){var _0x265afb=_[_0x7cf3('0x7')](_0x3a015f['value']);return _0x265afb&&_0x265afb['address']?_0x265afb['address']:'anonymous'+random[_0x7cf3('0x8')](0x6)+_0x7cf3('0x9');}function getFirstName(_0x110c99){var _0x589786=_[_0x7cf3('0x7')](_0x110c99[_0x7cf3('0xa')]);if(_0x589786&&_0x589786[_0x7cf3('0xb')]){if(_0x589786[_0x7cf3('0xb')]==_0x589786[_0x7cf3('0xc')]){return _0x589786[_0x7cf3('0xb')]['substring'](0x0,_0x589786[_0x7cf3('0xb')][_0x7cf3('0xd')]('@'));}var _0x3e9ec1=_0x589786[_0x7cf3('0xb')][_0x7cf3('0xe')](/\s+/);return _0x3e9ec1['length']>0x1?_0x3e9ec1[_0x7cf3('0xf')](0x0,-0x1)['join']('\x20'):_0x589786[_0x7cf3('0xb')];}return'Anonymous';}function getLastName(_0x3280dd){var _0x3ac1e4=_['head'](_0x3280dd[_0x7cf3('0xa')]);if(_0x3ac1e4&&_0x3ac1e4[_0x7cf3('0xb')]){var _0x3f4338=_0x3ac1e4[_0x7cf3('0xb')]['split'](/\s+/);return _0x3f4338[_0x7cf3('0x10')]>0x1?_0x3f4338['pop']():'';}return'';}function getMails(_0x32c1d7,_0x247406){var _0x346dae='';for(var _0x14aef6=0x0;_0x14aef6<_0x247406[_0x7cf3('0xa')][_0x7cf3('0x10')];_0x14aef6+=0x1){if(_0x247406['value'][_0x14aef6]['address']!==_0x32c1d7){if(!_[_0x7cf3('0x11')](_0x346dae)){_0x346dae+=',';}_0x346dae+=_0x247406[_0x7cf3('0xa')][_0x14aef6][_0x7cf3('0xb')]||_0x247406['value'][_0x14aef6][_0x7cf3('0xc')]||'';_0x346dae+='\x20<';_0x346dae+=_0x247406[_0x7cf3('0xa')][_0x14aef6][_0x7cf3('0xc')]?_0x247406[_0x7cf3('0xa')][_0x14aef6][_0x7cf3('0xc')]:'anonymous'+random[_0x7cf3('0x8')](0x6)+_0x7cf3('0x9');_0x346dae+='>';}}return _0x346dae;}function parseEmail(_0x4344a1,_0x230a80,_0x1f4968){if(_0x230a80['html']){var _0x2ce687=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x2ce687[_0x7cf3('0x12')](_0x230a80['html'])){_0x230a80['html']=_0x230a80['html'][_0x7cf3('0x13')](_0x2ce687,'');}if(_0x230a80['html'][_0x7cf3('0x14')]('<img')){var _0x3ff261=[];_0x230a80['attachments'][_0x7cf3('0x15')](_0x5dcc22=>{_0x3ff261[_0x7cf3('0x16')](_0x5dcc22[_0x7cf3('0x17')]);});var _0x146664=/<img.*? _SRC(.*?)[^>]+>/g;var _0x30110e=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x96c3ce=_0x230a80[_0x7cf3('0x18')][_0x7cf3('0x13')](_0x30110e,_0x7cf3('0x19'));var _0x835dd=_0x96c3ce['replace'](_0x146664,'_IMG');for(let _0x2a618b=0x0;_0x2a618b<_0x3ff261[_0x7cf3('0x10')];_0x2a618b++){var _0x32e799=_0x835dd['replace'](_0x7cf3('0x1a'),_0x7cf3('0x1b')+_0x3ff261[_0x2a618b]+'\x20]</span>');_0x835dd=_0x32e799;}_0x230a80[_0x7cf3('0x18')]=_0x835dd;}_0x1f4968[_0x7cf3('0x1c')]=_0x230a80[_0x7cf3('0x18')];}else{_0x1f4968[_0x7cf3('0x1c')]=_0x230a80[_0x7cf3('0x1d')];}if(_0x1f4968[_0x7cf3('0x1c')]){_0x1f4968[_0x7cf3('0x1c')]=_0x1f4968[_0x7cf3('0x1c')][_0x7cf3('0x13')](/<a\s+/gi,_0x7cf3('0x1e'));}if(_0x230a80['to']){_0x1f4968['message'][_0x7cf3('0x1f')]=getMails(null,_0x230a80['to']);var _0x5d8922=getMails(_0x4344a1[_0x7cf3('0x5')],_0x230a80['to']);if(!_[_0x7cf3('0x11')](_0x5d8922)){_0x1f4968[_0x7cf3('0x20')]['cc']+=_0x5d8922;}}if(_0x230a80['cc']){_0x1f4968['message'][_0x7cf3('0x21')]=getMails(null,_0x230a80['cc']);var _0x1f8917=getMails(_0x4344a1['email'],_0x230a80['cc']);if(!_[_0x7cf3('0x11')](_0x1f8917)){if(!_[_0x7cf3('0x11')](_0x1f4968[_0x7cf3('0x20')]['cc'])){_0x1f4968[_0x7cf3('0x20')]['cc']+=',';}_0x1f4968[_0x7cf3('0x20')]['cc']+=_0x1f8917;}}if(!_[_0x7cf3('0x14')](_0x1f4968['message'][_0x7cf3('0x1f')],_0x4344a1[_0x7cf3('0x5')])&&!_[_0x7cf3('0x14')](_0x1f4968[_0x7cf3('0x20')]['originCc'],_0x4344a1[_0x7cf3('0x5')])){_0x1f4968[_0x7cf3('0x20')][_0x7cf3('0x22')]=_0x4344a1[_0x7cf3('0x5')];}if(_0x230a80[_0x7cf3('0x23')]&&_0x230a80[_0x7cf3('0x23')][_0x7cf3('0x10')]){_0x1f4968[_0x7cf3('0x20')][_0x7cf3('0x24')]=_0x230a80[_0x7cf3('0x23')]['length'];for(var _0x528e3c=0x0,_0x5cdf76,_0x2839e1,_0x144f09;_0x528e3c<_0x230a80[_0x7cf3('0x23')][_0x7cf3('0x10')];_0x528e3c+=0x1){if(_0x230a80[_0x7cf3('0x23')][_0x528e3c][_0x7cf3('0x25')]===_0x7cf3('0x26')){_0x144f09=_0x230a80[_0x7cf3('0x23')][_0x528e3c][_0x7cf3('0x17')]||'attachment-'+_0x528e3c;_0x5cdf76=util['format'](_0x7cf3('0x27'),Date['now'](),_0x144f09);_0x2839e1=path['join'](config[_0x7cf3('0x28')],'server/files/attachments/',_0x5cdf76);fs[_0x7cf3('0x29')](_0x2839e1,_0x230a80[_0x7cf3('0x23')][_0x528e3c]['content']);_0x1f4968[_0x7cf3('0x20')][_0x7cf3('0x23')][_0x7cf3('0x16')]({'name':_0x144f09,'basename':_0x5cdf76,'type':_0x230a80[_0x7cf3('0x23')][_0x528e3c]['contentType'],'filepath':_0x2839e1});}}}if(_0x230a80[_0x7cf3('0x2a')]&&_0x230a80[_0x7cf3('0x2a')][_0x7cf3('0x10')]>0x0){var _0x102bf9=[_0x7cf3('0x2b'),'X-Auto-Response-Suppress:\x20All',_0x7cf3('0x2c')];for(var _0xde727e=0x0;_0xde727e<_0x230a80['headerLines'][_0x7cf3('0x10')];_0xde727e++){var _0x1f457e=_[_0x7cf3('0xd')](_0x102bf9,_0x230a80[_0x7cf3('0x2a')][_0xde727e][_0x7cf3('0x2d')]);if(_0x1f457e>=0x0){_0x1f4968[_0x7cf3('0x2e')]=!![];}}}return _0x1f4968;}exports[_0x7cf3('0x2f')]=function(_0x54c963,_0x1153fe,_0x410754){var _0x50ae94={'from':getAddress(_0x1153fe[_0x7cf3('0x30')]),'firstName':getFirstName(_0x1153fe[_0x7cf3('0x30')]),'lastName':getLastName(_0x1153fe[_0x7cf3('0x30')]),'mapKey':_0x7cf3('0x5'),'message':{'from':getMails(_0x54c963[_0x7cf3('0x5')],_0x1153fe[_0x7cf3('0x30')]),'to':_0x54c963[_0x7cf3('0x5')],'cc':'','subject':_0x1153fe[_0x7cf3('0x31')]||'','messageId':_0x1153fe[_0x7cf3('0x32')],'inReplyTo':_0x1153fe[_0x7cf3('0x33')],'sentAt':moment(_0x1153fe['date'])[_0x7cf3('0x34')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x1153fe['html']&&!_0x1153fe[_0x7cf3('0x1d')]){var _0x59bced=_[_0x7cf3('0x35')](_0x1153fe[_0x7cf3('0x23')],{'contentType':'application/ms-tnef'});if(_0x59bced['length']){logger[_0x7cf3('0x36')](util[_0x7cf3('0x34')](_0x7cf3('0x37'),_0x1153fe[_0x7cf3('0x32')]));tnef['parseBuffer'](_[_0x7cf3('0x38')](_0x59bced)[_0x7cf3('0x39')],function(_0x2b3346,_0x3164ef){if(_0x3164ef){_0x1153fe['html']=_0x3164ef[_0x7cf3('0x3a')]||_0x7cf3('0x3b');if(_0x3164ef[_0x7cf3('0x3c')]){for(var _0x40097d=0x0;_0x40097d<_0x3164ef[_0x7cf3('0x3c')][_0x7cf3('0x10')];_0x40097d++){var _0x374f58=_0x3164ef[_0x7cf3('0x3c')][_0x40097d];_0x50ae94[_0x7cf3('0x20')]['attachments']['push']({'filename':_0x374f58[_0x7cf3('0x3d')],'content':Buffer[_0x7cf3('0x30')](_0x374f58[_0x7cf3('0x3e')])});}}}_0x410754(parseEmail(_0x54c963,_0x1153fe,_0x50ae94));});}else{_0x1153fe['html']='<p>Empty\x20message</p>';_0x410754(parseEmail(_0x54c963,_0x1153fe,_0x50ae94));}}else{_0x410754(parseEmail(_0x54c963,_0x1153fe,_0x50ae94));}};exports[_0x7cf3('0x3f')]=function(_0x1eea81){switch(_0x1eea81){case'gmail':return _0x7cf3('0x40');case _0x7cf3('0x41'):return _0x7cf3('0x42');case _0x7cf3('0x43'):return _0x7cf3('0x44');case'outlook365':return _0x7cf3('0x45');}return _0x7cf3('0x46');};
\ No newline at end of file
+var _0x5d59=['attach','attachment','filename','attachment-','format','%s-%s','now','root','server/files/attachments/','content','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','line','isAutoreply','parser','from','subject','messageId','date','YYYY-MM-DD\x20HH:mm:ss','filter','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','127.0.0.1','moment','randomstring','path','util','node-tnef','../../../config/logger','../../../config/environment','head','address','anonymous','generate','name','substring','indexOf','split','join','Anonymous','value','length','pop','isEmpty','html','test','attachments','forEach','push','replace','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','textAsHtml','body','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','email','includes','bcc'];(function(_0x2568c0,_0x24c173){var _0x56678c=function(_0x4bf8af){while(--_0x4bf8af){_0x2568c0['push'](_0x2568c0['shift']());}};_0x56678c(++_0x24c173);}(_0x5d59,0x15f));var _0x95d5=function(_0x173aca,_0x4cfe9f){_0x173aca=_0x173aca-0x0;var _0x5dbf81=_0x5d59[_0x173aca];return _0x5dbf81;};'use strict';var _=require('lodash');var moment=require(_0x95d5('0x0'));var random=require(_0x95d5('0x1'));var fs=require('fs');var path=require(_0x95d5('0x2'));var util=require(_0x95d5('0x3'));var tnef=require(_0x95d5('0x4'));var logger=require(_0x95d5('0x5'))('email');var config=require(_0x95d5('0x6'));function getAddress(_0x502a01){var _0x4d4652=_[_0x95d5('0x7')](_0x502a01['value']);return _0x4d4652&&_0x4d4652['address']?_0x4d4652[_0x95d5('0x8')]:_0x95d5('0x9')+random[_0x95d5('0xa')](0x6)+'@xcally.com';}function getFirstName(_0x179d43){var _0x47e9eb=_[_0x95d5('0x7')](_0x179d43['value']);if(_0x47e9eb&&_0x47e9eb[_0x95d5('0xb')]){if(_0x47e9eb[_0x95d5('0xb')]==_0x47e9eb[_0x95d5('0x8')]){return _0x47e9eb[_0x95d5('0xb')][_0x95d5('0xc')](0x0,_0x47e9eb[_0x95d5('0xb')][_0x95d5('0xd')]('@'));}var _0x1a9bba=_0x47e9eb['name'][_0x95d5('0xe')](/\s+/);return _0x1a9bba['length']>0x1?_0x1a9bba['slice'](0x0,-0x1)[_0x95d5('0xf')]('\x20'):_0x47e9eb[_0x95d5('0xb')];}return _0x95d5('0x10');}function getLastName(_0xf64b7e){var _0x5ceae1=_[_0x95d5('0x7')](_0xf64b7e[_0x95d5('0x11')]);if(_0x5ceae1&&_0x5ceae1[_0x95d5('0xb')]){var _0x515b33=_0x5ceae1[_0x95d5('0xb')][_0x95d5('0xe')](/\s+/);return _0x515b33[_0x95d5('0x12')]>0x1?_0x515b33[_0x95d5('0x13')]():'';}return'';}function getMails(_0x14d8a9,_0x53e0b3){var _0x501dcb='';for(var _0x1747f2=0x0;_0x1747f2<_0x53e0b3['value'][_0x95d5('0x12')];_0x1747f2+=0x1){if(_0x53e0b3[_0x95d5('0x11')][_0x1747f2]['address']!==_0x14d8a9){if(!_[_0x95d5('0x14')](_0x501dcb)){_0x501dcb+=',';}_0x501dcb+=_0x53e0b3[_0x95d5('0x11')][_0x1747f2][_0x95d5('0xb')]||_0x53e0b3[_0x95d5('0x11')][_0x1747f2][_0x95d5('0x8')]||'';_0x501dcb+='\x20<';_0x501dcb+=_0x53e0b3[_0x95d5('0x11')][_0x1747f2]['address']?_0x53e0b3[_0x95d5('0x11')][_0x1747f2][_0x95d5('0x8')]:_0x95d5('0x9')+random['generate'](0x6)+'@xcally.com';_0x501dcb+='>';}}return _0x501dcb;}function parseEmail(_0x3f7d56,_0x4023d3,_0x553561){if(_0x4023d3[_0x95d5('0x15')]){var _0x2557e7=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x2557e7[_0x95d5('0x16')](_0x4023d3['html'])){_0x4023d3[_0x95d5('0x15')]=_0x4023d3['html']['replace'](_0x2557e7,'');}if(_0x4023d3['html']['includes']('<img')){var _0x4cb5b8=[];_0x4023d3[_0x95d5('0x17')][_0x95d5('0x18')](_0x413f8e=>{_0x4cb5b8[_0x95d5('0x19')](_0x413f8e['filename']);});var _0x3fe6ef=/<img.*? _SRC(.*?)[^>]+>/g;var _0x126587=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x316d19=_0x4023d3[_0x95d5('0x15')][_0x95d5('0x1a')](_0x126587,_0x95d5('0x1b'));var _0x244e31=_0x316d19[_0x95d5('0x1a')](_0x3fe6ef,_0x95d5('0x1c'));for(let _0x20f0da=0x0;_0x20f0da<_0x4cb5b8['length'];_0x20f0da++){var _0x4d6a64=_0x244e31[_0x95d5('0x1a')](_0x95d5('0x1c'),_0x95d5('0x1d')+_0x4cb5b8[_0x20f0da]+'\x20]</span>');_0x244e31=_0x4d6a64;}_0x4023d3[_0x95d5('0x15')]=_0x244e31;}_0x553561['body']=_0x4023d3[_0x95d5('0x15')];}else{_0x553561['body']=_0x4023d3[_0x95d5('0x1e')];}if(_0x553561[_0x95d5('0x1f')]){_0x553561[_0x95d5('0x1f')]=_0x553561[_0x95d5('0x1f')][_0x95d5('0x1a')](/<a\s+/gi,_0x95d5('0x20'));}if(_0x4023d3['to']){_0x553561[_0x95d5('0x21')][_0x95d5('0x22')]=getMails(null,_0x4023d3['to']);var _0x561c75=getMails(_0x3f7d56['email'],_0x4023d3['to']);if(!_['isEmpty'](_0x561c75)){_0x553561[_0x95d5('0x21')]['cc']+=_0x561c75;}}if(_0x4023d3['cc']){_0x553561[_0x95d5('0x21')][_0x95d5('0x23')]=getMails(null,_0x4023d3['cc']);var _0x2e41f3=getMails(_0x3f7d56[_0x95d5('0x24')],_0x4023d3['cc']);if(!_[_0x95d5('0x14')](_0x2e41f3)){if(!_['isEmpty'](_0x553561[_0x95d5('0x21')]['cc'])){_0x553561[_0x95d5('0x21')]['cc']+=',';}_0x553561[_0x95d5('0x21')]['cc']+=_0x2e41f3;}}if(!_[_0x95d5('0x25')](_0x553561[_0x95d5('0x21')][_0x95d5('0x22')],_0x3f7d56[_0x95d5('0x24')])&&!_[_0x95d5('0x25')](_0x553561[_0x95d5('0x21')]['originCc'],_0x3f7d56['email'])){_0x553561[_0x95d5('0x21')][_0x95d5('0x26')]=_0x3f7d56[_0x95d5('0x24')];}if(_0x4023d3[_0x95d5('0x17')]&&_0x4023d3['attachments'][_0x95d5('0x12')]){_0x553561['message'][_0x95d5('0x27')]=_0x4023d3[_0x95d5('0x17')][_0x95d5('0x12')];for(var _0x56501c=0x0,_0x2b0891,_0x360edd,_0x3280c3;_0x56501c<_0x4023d3[_0x95d5('0x17')][_0x95d5('0x12')];_0x56501c+=0x1){if(_0x4023d3[_0x95d5('0x17')][_0x56501c]['type']===_0x95d5('0x28')){_0x3280c3=_0x4023d3[_0x95d5('0x17')][_0x56501c][_0x95d5('0x29')]||_0x95d5('0x2a')+_0x56501c;_0x2b0891=util[_0x95d5('0x2b')](_0x95d5('0x2c'),Date[_0x95d5('0x2d')](),_0x3280c3);_0x360edd=path[_0x95d5('0xf')](config[_0x95d5('0x2e')],_0x95d5('0x2f'),_0x2b0891);fs['writeFileSync'](_0x360edd,_0x4023d3['attachments'][_0x56501c][_0x95d5('0x30')]);_0x553561[_0x95d5('0x21')][_0x95d5('0x17')][_0x95d5('0x19')]({'name':_0x3280c3,'basename':_0x2b0891,'type':_0x4023d3[_0x95d5('0x17')][_0x56501c]['contentType'],'filepath':_0x360edd});}}}if(_0x4023d3[_0x95d5('0x31')]&&_0x4023d3[_0x95d5('0x31')][_0x95d5('0x12')]>0x0){var _0x3b610d=[_0x95d5('0x32'),_0x95d5('0x33'),'Precedence:\x20auto_reply'];for(var _0x619d72=0x0;_0x619d72<_0x4023d3[_0x95d5('0x31')][_0x95d5('0x12')];_0x619d72++){var _0x31dc31=_[_0x95d5('0xd')](_0x3b610d,_0x4023d3[_0x95d5('0x31')][_0x619d72][_0x95d5('0x34')]);if(_0x31dc31>=0x0){_0x553561[_0x95d5('0x35')]=!![];}}}return _0x553561;}exports[_0x95d5('0x36')]=function(_0x5bc9c8,_0x37238b,_0x23cb91){var _0x37e352={'from':getAddress(_0x37238b[_0x95d5('0x37')]),'firstName':getFirstName(_0x37238b['from']),'lastName':getLastName(_0x37238b[_0x95d5('0x37')]),'mapKey':'email','message':{'from':getMails(_0x5bc9c8[_0x95d5('0x24')],_0x37238b[_0x95d5('0x37')]),'to':_0x5bc9c8[_0x95d5('0x24')],'cc':'','subject':_0x37238b[_0x95d5('0x38')]||'','messageId':_0x37238b[_0x95d5('0x39')],'inReplyTo':_0x37238b['inReplyTo'],'sentAt':moment(_0x37238b[_0x95d5('0x3a')])[_0x95d5('0x2b')](_0x95d5('0x3b')),'attach':![],'attachments':[]}};if(!_0x37238b[_0x95d5('0x15')]&&!_0x37238b[_0x95d5('0x1e')]){var _0x1fa13f=_[_0x95d5('0x3c')](_0x37238b[_0x95d5('0x17')],{'contentType':'application/ms-tnef'});if(_0x1fa13f['length']){logger[_0x95d5('0x3d')](util[_0x95d5('0x2b')](_0x95d5('0x3e'),_0x37238b['messageId']));tnef[_0x95d5('0x3f')](_[_0x95d5('0x40')](_0x1fa13f)['content'],function(_0x63b1e1,_0x547dce){if(_0x547dce){_0x37238b[_0x95d5('0x15')]=_0x547dce[_0x95d5('0x41')]||_0x95d5('0x42');if(_0x547dce[_0x95d5('0x43')]){for(var _0x2ebc44=0x0;_0x2ebc44<_0x547dce[_0x95d5('0x43')][_0x95d5('0x12')];_0x2ebc44++){var _0x22d93b=_0x547dce['Attachments'][_0x2ebc44];_0x37e352['message'][_0x95d5('0x17')][_0x95d5('0x19')]({'filename':_0x22d93b[_0x95d5('0x44')],'content':Buffer[_0x95d5('0x37')](_0x22d93b[_0x95d5('0x45')])});}}}_0x23cb91(parseEmail(_0x5bc9c8,_0x37238b,_0x37e352));});}else{_0x37238b['html']=_0x95d5('0x42');_0x23cb91(parseEmail(_0x5bc9c8,_0x37238b,_0x37e352));}}else{_0x23cb91(parseEmail(_0x5bc9c8,_0x37238b,_0x37e352));}};exports[_0x95d5('0x46')]=function(_0x4922d6){switch(_0x4922d6){case _0x95d5('0x47'):return _0x95d5('0x48');case'yahoo':return _0x95d5('0x49');case _0x95d5('0x4a'):return _0x95d5('0x4b');case'outlook365':return _0x95d5('0x4c');}return _0x95d5('0x4d');};
\ No newline at end of file
index da463ae..41d8d86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f33=['key','SERV','active','Imap','exports','lodash','name','Service'];(function(_0x2ffb58,_0x587dec){var _0x539720=function(_0x2443a6){while(--_0x2443a6){_0x2ffb58['push'](_0x2ffb58['shift']());}};_0x539720(++_0x587dec);}(_0x0f33,0x135));var _0x30f3=function(_0x2002d1,_0x4622f1){_0x2002d1=_0x2002d1-0x0;var _0x1cd8bc=_0x0f33[_0x2002d1];return _0x1cd8bc;};'use strict';var _=require(_0x30f3('0x0'));function MailAccount(_0x12d767){this['id']=_0x12d767['id']||0x0;this['name']=_0x12d767[_0x30f3('0x1')]||_0x30f3('0x2');this[_0x30f3('0x3')]=_0x12d767[_0x30f3('0x3')]||_0x30f3('0x4');this['active']=_0x12d767[_0x30f3('0x5')]||![];this[_0x30f3('0x6')]=_0x12d767[_0x30f3('0x6')]||[];this['Smtp']=_0x12d767['Smtp']||[];}module[_0x30f3('0x7')]=MailAccount;
\ No newline at end of file
+var _0x5f39=['Imap','Smtp','lodash','name','key','SERV','active'];(function(_0x50ea2c,_0xcc2346){var _0x3fe5e2=function(_0x1aa598){while(--_0x1aa598){_0x50ea2c['push'](_0x50ea2c['shift']());}};_0x3fe5e2(++_0xcc2346);}(_0x5f39,0x1ec));var _0x95f3=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x5f39[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0x95f3('0x0'));function MailAccount(_0x14fb99){this['id']=_0x14fb99['id']||0x0;this[_0x95f3('0x1')]=_0x14fb99[_0x95f3('0x1')]||'Service';this[_0x95f3('0x2')]=_0x14fb99[_0x95f3('0x2')]||_0x95f3('0x3');this[_0x95f3('0x4')]=_0x14fb99[_0x95f3('0x4')]||![];this[_0x95f3('0x5')]=_0x14fb99['Imap']||[];this[_0x95f3('0x6')]=_0x14fb99[_0x95f3('0x6')]||[];}module['exports']=MailAccount;
\ No newline at end of file
index fa7948f..fe0c736 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x175e=['hasOwnProperty','mergeFromDatabase','initMailAccounts','length','isUndefined','exports','lodash','../model/mailAccount','mailAccounts','mapKeys'];(function(_0x485048,_0x9acc62){var _0x1405e2=function(_0x4868c7){while(--_0x4868c7){_0x485048['push'](_0x485048['shift']());}};_0x1405e2(++_0x9acc62);}(_0x175e,0xf6));var _0xe175=function(_0x330616,_0x446c69){_0x330616=_0x330616-0x0;var _0x50e722=_0x175e[_0x330616];return _0x50e722;};'use strict';var _=require(_0xe175('0x0'));var MailAccount=require(_0xe175('0x1'));var Realtime=function(){this[_0xe175('0x2')]={};};function freeIsNotKey(_0x24d720,_0x3569d9,_0x2d15b3){var _0x2bf031=_[_0xe175('0x3')](_0x24d720,function(_0x21968f,_0x2e7df3){return _0x21968f[_0x2d15b3];});for(var _0x3f1426 in _0x3569d9){if(_0x3569d9[_0xe175('0x4')](_0x3f1426)){if(!_0x2bf031[_0x3f1426]){delete _0x3569d9[_0x3f1426];}}}}Realtime['prototype'][_0xe175('0x5')]=function(_0xd26c46,_0x1224e8){for(var _0x2d50cf in _0x1224e8){if(_0xd26c46['hasOwnProperty'](_0x2d50cf)){_0xd26c46[_0x2d50cf]=_0x1224e8[_0x2d50cf];}}};Realtime['prototype'][_0xe175('0x6')]=function(){var _0x1d5914=this;return function(_0x422d31){if(_0x422d31){freeIsNotKey(_0x422d31,_0x1d5914[_0xe175('0x2')],'id');for(var _0x431795=0x0,_0x220eb2={},_0x439ae1={};_0x431795<_0x422d31[_0xe175('0x7')];_0x431795+=0x1){_0x220eb2=_0x422d31[_0x431795];if(_[_0xe175('0x8')](_0x1d5914['mailAccounts'][_0x220eb2['id']])){_0x1d5914['mailAccounts'][_0x220eb2['id']]=new MailAccount(_0x220eb2);}else{_['merge'](_0x1d5914[_0xe175('0x2')][_0x220eb2['id']],_0x220eb2);}}}return _0x1d5914[_0xe175('0x2')];};};module[_0xe175('0x9')]=Realtime;
\ No newline at end of file
+var _0x46b6=['hasOwnProperty','prototype','mergeFromDatabase','length','isUndefined','exports','lodash','../model/mailAccount','mailAccounts'];(function(_0x16ddad,_0x34ffc2){var _0x478a64=function(_0x20db0a){while(--_0x20db0a){_0x16ddad['push'](_0x16ddad['shift']());}};_0x478a64(++_0x34ffc2);}(_0x46b6,0xde));var _0x646b=function(_0x5043ac,_0x4d534b){_0x5043ac=_0x5043ac-0x0;var _0x2adf94=_0x46b6[_0x5043ac];return _0x2adf94;};'use strict';var _=require(_0x646b('0x0'));var MailAccount=require(_0x646b('0x1'));var Realtime=function(){this[_0x646b('0x2')]={};};function freeIsNotKey(_0x4448fa,_0x3f5544,_0x17a702){var _0x1f1728=_['mapKeys'](_0x4448fa,function(_0x372204,_0x105e43){return _0x372204[_0x17a702];});for(var _0x4b2b27 in _0x3f5544){if(_0x3f5544[_0x646b('0x3')](_0x4b2b27)){if(!_0x1f1728[_0x4b2b27]){delete _0x3f5544[_0x4b2b27];}}}}Realtime[_0x646b('0x4')][_0x646b('0x5')]=function(_0x577949,_0x35ca76){for(var _0x221d36 in _0x35ca76){if(_0x577949[_0x646b('0x3')](_0x221d36)){_0x577949[_0x221d36]=_0x35ca76[_0x221d36];}}};Realtime[_0x646b('0x4')]['initMailAccounts']=function(){var _0x20390f=this;return function(_0x5e07b9){if(_0x5e07b9){freeIsNotKey(_0x5e07b9,_0x20390f[_0x646b('0x2')],'id');for(var _0x331901=0x0,_0x2c27dc={},_0x138084={};_0x331901<_0x5e07b9[_0x646b('0x6')];_0x331901+=0x1){_0x2c27dc=_0x5e07b9[_0x331901];if(_[_0x646b('0x7')](_0x20390f[_0x646b('0x2')][_0x2c27dc['id']])){_0x20390f[_0x646b('0x2')][_0x2c27dc['id']]=new MailAccount(_0x2c27dc);}else{_['merge'](_0x20390f['mailAccounts'][_0x2c27dc['id']],_0x2c27dc);}}}return _0x20390f['mailAccounts'];};};module[_0x646b('0x8')]=Realtime;
\ No newline at end of file
index 42343bd..7324b97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf32f=['key','ListId','TemplateId','MailServerIn','MailServerOut','Smtp','notify','NotifyMailAccount','getMailAccounts','Request','GetMailAccount','active'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xf32f,0x140));var _0xff32=function(_0x5a0c2f,_0x566976){_0x5a0c2f=_0x5a0c2f-0x0;var _0x42789f=_0xf32f[_0x5a0c2f];return _0x42789f;};'use strict';var client=require('../client');exports[_0xff32('0x0')]=function(){return function(){return client[_0xff32('0x1')](_0xff32('0x2'),{'options':{'attributes':['id','name','service','email',_0xff32('0x3'),_0xff32('0x4'),_0xff32('0x5'),_0xff32('0x6')],'raw':![],'include':[{'model':_0xff32('0x7'),'as':'Imap'},{'model':_0xff32('0x8'),'as':_0xff32('0x9')}]},'log':'getMailAccount'});};};exports[_0xff32('0xa')]=function(_0x5444ed,_0x26f1a0){return client[_0xff32('0x1')]('NotifyMailAccount',{'account':{'id':_0x5444ed},'body':_0x26f1a0,'log':_0xff32('0xb')});};
\ No newline at end of file
+var _0xd0da=['Smtp','getMailAccount','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','email','active','key','MailServerIn'];(function(_0xd3da2a,_0x22241c){var _0x10ab61=function(_0x12b964){while(--_0x12b964){_0xd3da2a['push'](_0xd3da2a['shift']());}};_0x10ab61(++_0x22241c);}(_0xd0da,0x1b1));var _0xad0d=function(_0x1faaa1,_0x1568dd){_0x1faaa1=_0x1faaa1-0x0;var _0x994ec=_0xd0da[_0x1faaa1];return _0x994ec;};'use strict';var client=require(_0xad0d('0x0'));exports[_0xad0d('0x1')]=function(){return function(){return client[_0xad0d('0x2')](_0xad0d('0x3'),{'options':{'attributes':['id',_0xad0d('0x4'),'service',_0xad0d('0x5'),_0xad0d('0x6'),_0xad0d('0x7'),'ListId','TemplateId'],'raw':![],'include':[{'model':_0xad0d('0x8'),'as':'Imap'},{'model':'MailServerOut','as':_0xad0d('0x9')}]},'log':_0xad0d('0xa')});};};exports[_0xad0d('0xb')]=function(_0xc7e517,_0x5b99a9){return client[_0xad0d('0x2')](_0xad0d('0xc'),{'account':{'id':_0xc7e517},'body':_0x5b99a9,'log':_0xad0d('0xc')});};
\ No newline at end of file
index f565c60..dacf733 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67ee=['loginMailFrequency','GetSettings','getSettings','Request'];(function(_0x4c7464,_0x302fb4){var _0x406b64=function(_0x303154){while(--_0x303154){_0x4c7464['push'](_0x4c7464['shift']());}};_0x406b64(++_0x302fb4);}(_0x67ee,0x19e));var _0xe67e=function(_0x44bd25,_0x12966a){_0x44bd25=_0x44bd25-0x0;var _0x5242fc=_0x67ee[_0x44bd25];return _0x5242fc;};'use strict';var client=require('../client');exports[_0xe67e('0x0')]=function(){return client[_0xe67e('0x1')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xe67e('0x2')]},'log':_0xe67e('0x3')});};
\ No newline at end of file
+var _0xffa5=['ShowSetting','loginMailFrequency'];(function(_0x239489,_0x37ecd0){var _0x2503e8=function(_0x22123c){while(--_0x22123c){_0x239489['push'](_0x239489['shift']());}};_0x2503e8(++_0x37ecd0);}(_0xffa5,0x194));var _0x5ffa=function(_0x5817db,_0x3e3e9c){_0x5817db=_0x5817db-0x0;var _0x4a4245=_0xffa5[_0x5817db];return _0x4a4245;};'use strict';var client=require('../client');exports['getSettings']=function(){return client['Request'](_0x5ffa('0x0'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x5ffa('0x1')]},'log':'GetSettings'});};
\ No newline at end of file
index 3eb482e..82ae184 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(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'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 b8b2267..e22eed9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05bf=['express','sticky-session','ioredis','../../config/environment','createServer','timeout','listen','port','socket.io','websocket','redis','defaults','localhost','adapter','default','../../config/express','once','Express\x20server\x20listening\x20on\x20port\x20%d!','lodash','http'];(function(_0x562f71,_0x531267){var _0x4045da=function(_0x48bd77){while(--_0x48bd77){_0x562f71['push'](_0x562f71['shift']());}};_0x4045da(++_0x531267);}(_0x05bf,0x1b6));var _0xf05b=function(_0x111888,_0x3bb065){_0x111888=_0x111888-0x0;var _0x371451=_0x05bf[_0x111888];return _0x371451;};'use strict';var _=require(_0xf05b('0x0'));var http=require(_0xf05b('0x1'));var express=require(_0xf05b('0x2'));var sticky=require(_0xf05b('0x3'));var Redis=require(_0xf05b('0x4'));var config=require(_0xf05b('0x5'));var app=express();var server=http[_0xf05b('0x6')](app);server[_0xf05b('0x7')]=0xdbba0;if(sticky[_0xf05b('0x8')](server,config[_0xf05b('0x9')])){var socketio=require(_0xf05b('0xa'))(server,{'transports':[_0xf05b('0xb'),'polling']});config[_0xf05b('0xc')]=_[_0xf05b('0xd')](config[_0xf05b('0xc')],{'host':_0xf05b('0xe'),'port':0x18eb});socketio[_0xf05b('0xf')](require('socket.io-redis')({'pubClient':new Redis(config[_0xf05b('0xc')]),'subClient':new Redis(config['redis'])}));require('../../config/triggers')[_0xf05b('0x10')]();require('../../config/socketio')[_0xf05b('0x10')](socketio);require(_0xf05b('0x11'))[_0xf05b('0x10')](app);require('../../routes')[_0xf05b('0x10')](app);}else{server[_0xf05b('0x12')]('listening',function(){console['log'](_0xf05b('0x13'),config[_0xf05b('0x9')]);});}exports=module['exports']=app;
\ No newline at end of file
+var _0xddf6=['ioredis','../../config/environment','createServer','listen','port','socket.io','websocket','polling','redis','defaults','localhost','adapter','../../config/triggers','default','../../config/socketio','../../config/express','once','listening','Express\x20server\x20listening\x20on\x20port\x20%d!','lodash','http','express','sticky-session'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0xddf6,0x9d));var _0x6ddf=function(_0x3f28af,_0x3b189c){_0x3f28af=_0x3f28af-0x0;var _0x553ee9=_0xddf6[_0x3f28af];return _0x553ee9;};'use strict';var _=require(_0x6ddf('0x0'));var http=require(_0x6ddf('0x1'));var express=require(_0x6ddf('0x2'));var sticky=require(_0x6ddf('0x3'));var Redis=require(_0x6ddf('0x4'));var config=require(_0x6ddf('0x5'));var app=express();var server=http[_0x6ddf('0x6')](app);server['timeout']=0xdbba0;if(sticky[_0x6ddf('0x7')](server,config[_0x6ddf('0x8')])){var socketio=require(_0x6ddf('0x9'))(server,{'transports':[_0x6ddf('0xa'),_0x6ddf('0xb')]});config[_0x6ddf('0xc')]=_[_0x6ddf('0xd')](config[_0x6ddf('0xc')],{'host':_0x6ddf('0xe'),'port':0x18eb});socketio[_0x6ddf('0xf')](require('socket.io-redis')({'pubClient':new Redis(config[_0x6ddf('0xc')]),'subClient':new Redis(config[_0x6ddf('0xc')])}));require(_0x6ddf('0x10'))[_0x6ddf('0x11')]();require(_0x6ddf('0x12'))[_0x6ddf('0x11')](socketio);require(_0x6ddf('0x13'))['default'](app);require('../../routes')['default'](app);}else{server[_0x6ddf('0x14')](_0x6ddf('0x15'),function(){console['log'](_0x6ddf('0x16'),config['port']);});}exports=module['exports']=app;
\ No newline at end of file
index 4939582..fe2597b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a85=['result','exports','../../config/logger','routing','client','request','then','rpc','error','message'];(function(_0x4252bf,_0xc977d7){var _0x32a218=function(_0x5e278a){while(--_0x5e278a){_0x4252bf['push'](_0x4252bf['shift']());}};_0x32a218(++_0xc977d7);}(_0x3a85,0xfc));var _0x53a8=function(_0x1492a0,_0x8a5294){_0x1492a0=_0x1492a0-0x0;var _0x1bab9e=_0x3a85[_0x1492a0];return _0x1bab9e;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x53a8('0x0'))(_0x53a8('0x1'));var client=jayson[_0x53a8('0x2')]['http']({'port':0x2329});client['Request']=function(_0x48e68f,_0x4cac59){return new BPromise(function(_0x1d7a2c,_0x5af956){return client[_0x53a8('0x3')](_0x48e68f,_0x4cac59)[_0x53a8('0x4')](function(_0x22b1d8){logger['debug'](_0x53a8('0x5'),'routing',_0x48e68f,_0x4cac59,_0x22b1d8);if(_0x22b1d8['error']){logger[_0x53a8('0x6')](_0x53a8('0x5'),_0x53a8('0x1'),_0x48e68f,_0x22b1d8[_0x53a8('0x6')][_0x53a8('0x7')],_0x4cac59);return _0x5af956(_0x22b1d8[_0x53a8('0x6')][_0x53a8('0x7')]);}else{return _0x1d7a2c(_0x22b1d8[_0x53a8('0x8')]);}})['catch'](function(_0xd57c9e){logger['error']('rpc',_0x53a8('0x1'),_0x48e68f,_0xd57c9e,_0x4cac59);return _0x5af956(_0xd57c9e);});});};module[_0x53a8('0x9')]=client;
\ No newline at end of file
+var _0xa618=['catch','exports','../../config/logger','routing','client','http','Request','request','then','error','rpc','message','result'];(function(_0xe48ead,_0x2933d5){var _0x374ca8=function(_0x2c7950){while(--_0x2c7950){_0xe48ead['push'](_0xe48ead['shift']());}};_0x374ca8(++_0x2933d5);}(_0xa618,0x77));var _0x8a61=function(_0x49a265,_0x59de61){_0x49a265=_0x49a265-0x0;var _0x1b5d25=_0xa618[_0x49a265];return _0x1b5d25;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x8a61('0x0'))(_0x8a61('0x1'));var client=jayson[_0x8a61('0x2')][_0x8a61('0x3')]({'port':0x2329});client[_0x8a61('0x4')]=function(_0x794b97,_0xe943e7){return new BPromise(function(_0x264009,_0x3d6463){return client[_0x8a61('0x5')](_0x794b97,_0xe943e7)[_0x8a61('0x6')](function(_0x147bfa){logger['debug']('rpc',_0x8a61('0x1'),_0x794b97,_0xe943e7,_0x147bfa);if(_0x147bfa[_0x8a61('0x7')]){logger[_0x8a61('0x7')](_0x8a61('0x8'),'routing',_0x794b97,_0x147bfa[_0x8a61('0x7')]['message'],_0xe943e7);return _0x3d6463(_0x147bfa[_0x8a61('0x7')][_0x8a61('0x9')]);}else{return _0x264009(_0x147bfa[_0x8a61('0xa')]);}})[_0x8a61('0xb')](function(_0x148742){logger[_0x8a61('0x7')](_0x8a61('0x8'),_0x8a61('0x1'),_0x794b97,_0x148742,_0xe943e7);return _0x3d6463(_0x148742);});});};module[_0x8a61('0xc')]=client;
\ No newline at end of file
index 27b19c5..1569ab1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fc7=['initChatQueues','getSmsQueues','initSmsQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','./server','./realtime','./rpc/user','./rpc/interval','./rpc/chatQueue','./rpc/smsQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues'];(function(_0x1d6a82,_0x37c315){var _0x5834ac=function(_0x2402ba){while(--_0x2402ba){_0x1d6a82['push'](_0x1d6a82['shift']());}};_0x5834ac(++_0x37c315);}(_0x8fc7,0x1d6));var _0x78fc=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0x8fc7[_0x1969a7];return _0x3d665f;};'use strict';var BPromise=require('bluebird');var server=require(_0x78fc('0x0'));var Realtime=require(_0x78fc('0x1'));var user=require(_0x78fc('0x2'));var interval=require(_0x78fc('0x3'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0x78fc('0x4'));var smsQueue=require(_0x78fc('0x5'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0x78fc('0x6'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x78fc('0x7')]()[_0x78fc('0x8')](user[_0x78fc('0x9')]())[_0x78fc('0x8')](realtime[_0x78fc('0xa')]())[_0x78fc('0x8')](interval[_0x78fc('0xb')]())[_0x78fc('0x8')](realtime[_0x78fc('0xc')]())[_0x78fc('0x8')](openchannelQueue[_0x78fc('0xd')]())[_0x78fc('0x8')](realtime[_0x78fc('0xe')]())['then'](chatQueue[_0x78fc('0xf')]())[_0x78fc('0x8')](realtime[_0x78fc('0x10')]())[_0x78fc('0x8')](smsQueue[_0x78fc('0x11')]())[_0x78fc('0x8')](realtime[_0x78fc('0x12')]())[_0x78fc('0x8')](mailQueue['getMailQueues']())['then'](realtime[_0x78fc('0x13')]())['then'](faxQueue[_0x78fc('0x14')]())[_0x78fc('0x8')](realtime[_0x78fc('0x15')]())['then'](whatsappQueue[_0x78fc('0x16')]())[_0x78fc('0x8')](realtime[_0x78fc('0x17')]())['then'](function(){return realtime;});}function main(){return server[_0x78fc('0x18')](realtime)[_0x78fc('0x8')](function(_0x229655){return initRealtime();})[_0x78fc('0x8')](function(_0xc80dac){return setInterval(initRealtime,0x1388);})[_0x78fc('0x19')](function(_0x2b42d0){console[_0x78fc('0x1a')](_0x2b42d0);});}main();
\ No newline at end of file
+var _0x9cec=['./server','./rpc/user','./rpc/interval','./rpc/chatQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','then','getAgents','initAgents','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','bluebird'];(function(_0x12f0e5,_0x34fc25){var _0x2f60b0=function(_0x5cc213){while(--_0x5cc213){_0x12f0e5['push'](_0x12f0e5['shift']());}};_0x2f60b0(++_0x34fc25);}(_0x9cec,0x17f));var _0xc9ce=function(_0x2b9977,_0x5c7da3){_0x2b9977=_0x2b9977-0x0;var _0x27cd8b=_0x9cec[_0x2b9977];return _0x27cd8b;};'use strict';var BPromise=require(_0xc9ce('0x0'));var server=require(_0xc9ce('0x1'));var Realtime=require('./realtime');var user=require(_0xc9ce('0x2'));var interval=require(_0xc9ce('0x3'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0xc9ce('0x4'));var smsQueue=require('./rpc/smsQueue');var mailQueue=require(_0xc9ce('0x5'));var faxQueue=require(_0xc9ce('0x6'));var whatsappQueue=require(_0xc9ce('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()[_0xc9ce('0x8')](user[_0xc9ce('0x9')]())[_0xc9ce('0x8')](realtime[_0xc9ce('0xa')]())[_0xc9ce('0x8')](interval['getIntervals']())['then'](realtime[_0xc9ce('0xb')]())[_0xc9ce('0x8')](openchannelQueue[_0xc9ce('0xc')]())[_0xc9ce('0x8')](realtime[_0xc9ce('0xd')]())[_0xc9ce('0x8')](chatQueue[_0xc9ce('0xe')]())[_0xc9ce('0x8')](realtime['initChatQueues']())[_0xc9ce('0x8')](smsQueue[_0xc9ce('0xf')]())[_0xc9ce('0x8')](realtime[_0xc9ce('0x10')]())[_0xc9ce('0x8')](mailQueue[_0xc9ce('0x11')]())[_0xc9ce('0x8')](realtime[_0xc9ce('0x12')]())[_0xc9ce('0x8')](faxQueue['getFaxQueues']())[_0xc9ce('0x8')](realtime['initFaxQueues']())[_0xc9ce('0x8')](whatsappQueue[_0xc9ce('0x13')]())[_0xc9ce('0x8')](realtime[_0xc9ce('0x14')]())[_0xc9ce('0x8')](function(){return realtime;});}function main(){return server[_0xc9ce('0x15')](realtime)['then'](function(_0x2e4c81){return initRealtime();})['then'](function(_0x22ed4c){return setInterval(initRealtime,0x1388);})[_0xc9ce('0x16')](function(_0x13f3cb){console[_0xc9ce('0x17')](_0x13f3cb);});}main();
\ No newline at end of file
index 1939589..126654e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['turn','prioritize','priority','toJSON','map','toString','fromJSON','isString','object','exports','lodash','util','events','isNil','register','ignoreFactChanges','inherits','init','rules','activeRules','concat','prototype','sync','filter','orderBy','asc','execute','clone','consequence','ruleRef','name','index_','nextTick','push','call','isEqual','restart','length','condition','matchPath','noop','findRules'];(function(_0x361e32,_0x526f2b){var _0x6571bc=function(_0x2ac2ef){while(--_0x2ac2ef){_0x361e32['push'](_0x361e32['shift']());}};_0x6571bc(++_0x526f2b);}(_0x7a54,0x106));var _0x47a5=function(_0x5d810e,_0x2e0636){_0x5d810e=_0x5d810e-0x0;var _0x1fde73=_0x7a54[_0x5d810e];return _0x1fde73;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var EventEmitter=require(_0x47a5('0x2'))['EventEmitter'];function RuleEngine(_0x1d33e,_0x4086cd){this['init']();if(!_[_0x47a5('0x3')](_0x1d33e)){this[_0x47a5('0x4')](_0x1d33e);}if(_0x4086cd){this[_0x47a5('0x5')]=_0x4086cd[_0x47a5('0x5')];}return this;}util[_0x47a5('0x6')](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x47a5('0x7')]=function(_0x59199c){this[_0x47a5('0x8')]=[];this[_0x47a5('0x9')]=[];};RuleEngine['prototype'][_0x47a5('0x4')]=function(_0x5077f3){if(Array['isArray'](_0x5077f3)){this['rules']=this[_0x47a5('0x8')][_0x47a5('0xa')](_0x5077f3);}else if(_0x5077f3!==null&&_['isObject'](_0x5077f3)){this[_0x47a5('0x8')]['push'](_0x5077f3);}this['sync']();};RuleEngine[_0x47a5('0xb')][_0x47a5('0xc')]=function(){this[_0x47a5('0x9')]=this[_0x47a5('0x8')][_0x47a5('0xd')](function(_0xd308b8){if(_[_0x47a5('0x3')](_0xd308b8['on'])){_0xd308b8['on']=!![];}if(_0xd308b8['on']===!![]){return _0xd308b8;}});this['activeRules']=_[_0x47a5('0xe')](this[_0x47a5('0x9')],['p'],[_0x47a5('0xf')]);};RuleEngine[_0x47a5('0xb')][_0x47a5('0x10')]=function(_0x620ee9,_0x3c6c46){var _0x190faa=![];_0x620ee9['result']=!![];var _0x362359=_[_0x47a5('0x11')](_0x620ee9);var _0x3b001e=_[_0x47a5('0x11')](_0x620ee9);var _0x1ef44c=this['activeRules'];var _0x549de3=[];var _0x138bc0=this['ignoreFactChanges'];(function FnRuleLoop(_0x5247fd){var _0x423a81={'rules':function(){return _0x1ef44c;},'rule':function(){return _0x1ef44c[_0x5247fd];},'when':function(_0xaf70a6){if(_0xaf70a6){var _0x2ce454=_0x1ef44c[_0x5247fd][_0x47a5('0x12')];_0x2ce454[_0x47a5('0x13')]=_0x1ef44c[_0x5247fd]['id']||_0x1ef44c[_0x5247fd][_0x47a5('0x14')]||_0x47a5('0x15')+_0x5247fd;process[_0x47a5('0x16')](function(){_0x549de3[_0x47a5('0x17')](_0x2ce454['ruleRef']);_0x2ce454[_0x47a5('0x18')](_0x362359,_0x423a81);});}else{process[_0x47a5('0x16')](function(){_0x423a81['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x190faa=!![];return FnRuleLoop(0x0);},'next':function(_0x2b0360){if(!_0x138bc0&&!_[_0x47a5('0x19')](_0x3b001e,_0x362359)){_0x3b001e=_[_0x47a5('0x11')](_0x362359);process['nextTick'](function(){_0x423a81[_0x47a5('0x1a')]();});}else{process[_0x47a5('0x16')](function(){if(_[_0x47a5('0x3')](_0x2b0360)){return FnRuleLoop(_0x5247fd+0x1);}else{return FnRuleLoop(_0x2b0360);}});}}};if(_0x5247fd<_0x1ef44c[_0x47a5('0x1b')]&&_0x190faa===![]){var _0x5ef1b1=_0x1ef44c[_0x5247fd][_0x47a5('0x1c')];_0x5ef1b1[_0x47a5('0x18')](_0x362359,_0x423a81);}else{process['nextTick'](function(){_0x362359[_0x47a5('0x1d')]=_0x549de3;return _0x3c6c46?_0x3c6c46(_0x362359):_[_0x47a5('0x1e')]();});}}(0x0));};RuleEngine[_0x47a5('0xb')][_0x47a5('0x1f')]=function(_0x3abd6a){if(_['isNil'](_0x3abd6a)){return this['rules'];}else{var _0x136745=_['matches'](_0x3abd6a);return _[_0x47a5('0xd')](this['rules'],_0x136745);}};RuleEngine[_0x47a5('0xb')][_0x47a5('0x20')]=function(_0x36ad34,_0x1dac65){var _0x21f296=_0x36ad34==='on'||_0x36ad34==='ON'?!![]:![];var _0x3ba0b7=this[_0x47a5('0x1f')](_0x1dac65);for(var _0x136b14=0x0,_0x16631f=_0x3ba0b7[_0x47a5('0x1b')];_0x136b14<_0x16631f;_0x136b14+=0x1){_0x3ba0b7[_0x136b14]['on']=_0x21f296;}this[_0x47a5('0xc')]();};RuleEngine[_0x47a5('0xb')][_0x47a5('0x21')]=function(_0x528582,_0x243210){_0x528582=parseInt(_0x528582,0xa);var _0x51833b=this[_0x47a5('0x1f')](_0x243210);for(var _0x9ac908=0x0,_0x16901f=_0x51833b['length'];_0x9ac908<_0x16901f;_0x9ac908+=0x1){_0x51833b[_0x9ac908][_0x47a5('0x22')]=_0x528582;}this[_0x47a5('0xc')]();};RuleEngine[_0x47a5('0xb')][_0x47a5('0x23')]=function(){var _0x51cc81=this['rules'];if(_0x51cc81 instanceof Array){_0x51cc81=_0x51cc81[_0x47a5('0x24')](function(_0xfb5ddb){_0xfb5ddb['condition']=_0xfb5ddb['condition'][_0x47a5('0x25')]();_0xfb5ddb[_0x47a5('0x12')]=_0xfb5ddb['consequence'][_0x47a5('0x25')]();return _0xfb5ddb;});}else if(!_['isNil'](_0x51cc81)){_0x51cc81[_0x47a5('0x1c')]=_0x51cc81[_0x47a5('0x1c')]['toString']();_0x51cc81['consequence']=_0x51cc81[_0x47a5('0x12')]['toString']();}return _0x51cc81;};RuleEngine[_0x47a5('0xb')][_0x47a5('0x26')]=function(_0xf269a8){this['init']();if(_[_0x47a5('0x27')](_0xf269a8)){_0xf269a8=JSON['parse'](_0xf269a8);}if(_0xf269a8 instanceof Array){_0xf269a8=_0xf269a8['map'](function(_0x65542e){_0x65542e['condition']=eval('('+_0x65542e[_0x47a5('0x1c')]+')');_0x65542e['consequence']=eval('('+_0x65542e[_0x47a5('0x12')]+')');return _0x65542e;});}else if(_0xf269a8!==null&&typeof _0xf269a8==_0x47a5('0x28')){_0xf269a8[_0x47a5('0x1c')]=eval('('+_0xf269a8[_0x47a5('0x1c')]+')');_0xf269a8[_0x47a5('0x12')]=eval('('+_0xf269a8[_0x47a5('0x12')]+')');}this[_0x47a5('0x4')](_0xf269a8);};module[_0x47a5('0x29')]=RuleEngine;
\ No newline at end of file
+var _0xe14b=['next','restart','condition','noop','findRules','matches','turn','length','prioritize','priority','toJSON','map','toString','fromJSON','isString','object','register','exports','lodash','util','isNil','ignoreFactChanges','inherits','prototype','init','rules','activeRules','isArray','concat','push','sync','filter','orderBy','asc','execute','result','clone','consequence','ruleRef','name','index_','nextTick','call'];(function(_0x5a4903,_0xb0c618){var _0x18248d=function(_0x563d42){while(--_0x563d42){_0x5a4903['push'](_0x5a4903['shift']());}};_0x18248d(++_0xb0c618);}(_0xe14b,0x93));var _0xbe14=function(_0x1d199b,_0x493f86){_0x1d199b=_0x1d199b-0x0;var _0x22adaa=_0xe14b[_0x1d199b];return _0x22adaa;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var EventEmitter=require('events')['EventEmitter'];function RuleEngine(_0x11c3a0,_0x36393a){this['init']();if(!_[_0xbe14('0x2')](_0x11c3a0)){this['register'](_0x11c3a0);}if(_0x36393a){this['ignoreFactChanges']=_0x36393a[_0xbe14('0x3')];}return this;}util[_0xbe14('0x4')](RuleEngine,EventEmitter);RuleEngine[_0xbe14('0x5')][_0xbe14('0x6')]=function(_0x1d9ade){this[_0xbe14('0x7')]=[];this[_0xbe14('0x8')]=[];};RuleEngine['prototype']['register']=function(_0x496063){if(Array[_0xbe14('0x9')](_0x496063)){this[_0xbe14('0x7')]=this[_0xbe14('0x7')][_0xbe14('0xa')](_0x496063);}else if(_0x496063!==null&&_['isObject'](_0x496063)){this['rules'][_0xbe14('0xb')](_0x496063);}this[_0xbe14('0xc')]();};RuleEngine['prototype'][_0xbe14('0xc')]=function(){this[_0xbe14('0x8')]=this[_0xbe14('0x7')][_0xbe14('0xd')](function(_0x27792f){if(_[_0xbe14('0x2')](_0x27792f['on'])){_0x27792f['on']=!![];}if(_0x27792f['on']===!![]){return _0x27792f;}});this[_0xbe14('0x8')]=_[_0xbe14('0xe')](this[_0xbe14('0x8')],['p'],[_0xbe14('0xf')]);};RuleEngine[_0xbe14('0x5')][_0xbe14('0x10')]=function(_0x813399,_0x530538){var _0x55b3a7=![];_0x813399[_0xbe14('0x11')]=!![];var _0x3dc4a9=_[_0xbe14('0x12')](_0x813399);var _0x37ce4e=_['clone'](_0x813399);var _0x21c789=this[_0xbe14('0x8')];var _0xfd7b8f=[];var _0x123ede=this[_0xbe14('0x3')];(function FnRuleLoop(_0x29ab73){var _0x17ae86={'rules':function(){return _0x21c789;},'rule':function(){return _0x21c789[_0x29ab73];},'when':function(_0x5ea1f8){if(_0x5ea1f8){var _0x137ee5=_0x21c789[_0x29ab73][_0xbe14('0x13')];_0x137ee5[_0xbe14('0x14')]=_0x21c789[_0x29ab73]['id']||_0x21c789[_0x29ab73][_0xbe14('0x15')]||_0xbe14('0x16')+_0x29ab73;process[_0xbe14('0x17')](function(){_0xfd7b8f['push'](_0x137ee5[_0xbe14('0x14')]);_0x137ee5[_0xbe14('0x18')](_0x3dc4a9,_0x17ae86);});}else{process[_0xbe14('0x17')](function(){_0x17ae86[_0xbe14('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x55b3a7=!![];return FnRuleLoop(0x0);},'next':function(_0x188ec4){if(!_0x123ede&&!_['isEqual'](_0x37ce4e,_0x3dc4a9)){_0x37ce4e=_[_0xbe14('0x12')](_0x3dc4a9);process['nextTick'](function(){_0x17ae86[_0xbe14('0x1a')]();});}else{process['nextTick'](function(){if(_[_0xbe14('0x2')](_0x188ec4)){return FnRuleLoop(_0x29ab73+0x1);}else{return FnRuleLoop(_0x188ec4);}});}}};if(_0x29ab73<_0x21c789['length']&&_0x55b3a7===![]){var _0x274018=_0x21c789[_0x29ab73][_0xbe14('0x1b')];_0x274018['call'](_0x3dc4a9,_0x17ae86);}else{process[_0xbe14('0x17')](function(){_0x3dc4a9['matchPath']=_0xfd7b8f;return _0x530538?_0x530538(_0x3dc4a9):_[_0xbe14('0x1c')]();});}}(0x0));};RuleEngine['prototype'][_0xbe14('0x1d')]=function(_0x5fa043){if(_[_0xbe14('0x2')](_0x5fa043)){return this[_0xbe14('0x7')];}else{var _0x15ef02=_[_0xbe14('0x1e')](_0x5fa043);return _['filter'](this[_0xbe14('0x7')],_0x15ef02);}};RuleEngine[_0xbe14('0x5')][_0xbe14('0x1f')]=function(_0x169369,_0x5dd475){var _0x16f884=_0x169369==='on'||_0x169369==='ON'?!![]:![];var _0x29fc64=this['findRules'](_0x5dd475);for(var _0x3c3613=0x0,_0x3b3e84=_0x29fc64[_0xbe14('0x20')];_0x3c3613<_0x3b3e84;_0x3c3613+=0x1){_0x29fc64[_0x3c3613]['on']=_0x16f884;}this[_0xbe14('0xc')]();};RuleEngine[_0xbe14('0x5')][_0xbe14('0x21')]=function(_0x31a664,_0x2b05cb){_0x31a664=parseInt(_0x31a664,0xa);var _0x4168c8=this[_0xbe14('0x1d')](_0x2b05cb);for(var _0x40538f=0x0,_0x3bf43c=_0x4168c8[_0xbe14('0x20')];_0x40538f<_0x3bf43c;_0x40538f+=0x1){_0x4168c8[_0x40538f][_0xbe14('0x22')]=_0x31a664;}this[_0xbe14('0xc')]();};RuleEngine[_0xbe14('0x5')][_0xbe14('0x23')]=function(){var _0x2ff48e=this[_0xbe14('0x7')];if(_0x2ff48e instanceof Array){_0x2ff48e=_0x2ff48e[_0xbe14('0x24')](function(_0x581e86){_0x581e86[_0xbe14('0x1b')]=_0x581e86['condition']['toString']();_0x581e86[_0xbe14('0x13')]=_0x581e86['consequence'][_0xbe14('0x25')]();return _0x581e86;});}else if(!_[_0xbe14('0x2')](_0x2ff48e)){_0x2ff48e['condition']=_0x2ff48e['condition']['toString']();_0x2ff48e[_0xbe14('0x13')]=_0x2ff48e[_0xbe14('0x13')]['toString']();}return _0x2ff48e;};RuleEngine[_0xbe14('0x5')][_0xbe14('0x26')]=function(_0x452635){this[_0xbe14('0x6')]();if(_[_0xbe14('0x27')](_0x452635)){_0x452635=JSON['parse'](_0x452635);}if(_0x452635 instanceof Array){_0x452635=_0x452635['map'](function(_0x15a997){_0x15a997['condition']=eval('('+_0x15a997['condition']+')');_0x15a997['consequence']=eval('('+_0x15a997[_0xbe14('0x13')]+')');return _0x15a997;});}else if(_0x452635!==null&&typeof _0x452635==_0xbe14('0x28')){_0x452635[_0xbe14('0x1b')]=eval('('+_0x452635[_0xbe14('0x1b')]+')');_0x452635[_0xbe14('0x13')]=eval('('+_0x452635[_0xbe14('0x13')]+')');}this[_0xbe14('0x29')](_0x452635);};module[_0xbe14('0x2a')]=RuleEngine;
\ No newline at end of file
index d5f1251..db16051 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6da5=['error','message','result','sendMailMessage','SendMail','bluebird','client','request','then'];(function(_0x31f201,_0x41706f){var _0x3a5830=function(_0xf7010e){while(--_0xf7010e){_0x31f201['push'](_0x31f201['shift']());}};_0x3a5830(++_0x41706f);}(_0x6da5,0x1e2));var _0x56da=function(_0x5b3e26,_0x1f8977){_0x5b3e26=_0x5b3e26-0x0;var _0x4dabeb=_0x6da5[_0x5b3e26];return _0x4dabeb;};'use strict';var BPromise=require(_0x56da('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x56da('0x1')]['http']({'port':0x232b});function request(_0x46c817,_0x3c95f2){return new BPromise(function(_0x1ff372,_0x9e6dc8){return client[_0x56da('0x2')](_0x46c817,_0x3c95f2)[_0x56da('0x3')](function(_0x14772a){if(_0x14772a[_0x56da('0x4')]){return _0x9e6dc8(_0x14772a[_0x56da('0x4')][_0x56da('0x5')]);}else{return _0x1ff372(_0x14772a[_0x56da('0x6')]);}})['catch'](function(_0x4a44f0){return _0x9e6dc8(_0x4a44f0);});});}exports[_0x56da('0x7')]=function(_0x43c7c5,_0x26d346){return request(_0x56da('0x8'),{'account':_0x43c7c5,'message':_0x26d346});};
\ No newline at end of file
+var _0x0600=['client','http','request','error','message','sendMailMessage','bluebird'];(function(_0x1e1af6,_0x17929b){var _0x1fc705=function(_0x5571c5){while(--_0x5571c5){_0x1e1af6['push'](_0x1e1af6['shift']());}};_0x1fc705(++_0x17929b);}(_0x0600,0x16b));var _0x0060=function(_0x3c6dce,_0x5424dd){_0x3c6dce=_0x3c6dce-0x0;var _0x1450e9=_0x0600[_0x3c6dce];return _0x1450e9;};'use strict';var BPromise=require(_0x0060('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x0060('0x1')][_0x0060('0x2')]({'port':0x232b});function request(_0x4879b8,_0x283616){return new BPromise(function(_0x2b7515,_0xfeff14){return client[_0x0060('0x3')](_0x4879b8,_0x283616)['then'](function(_0x2b6525){if(_0x2b6525['error']){return _0xfeff14(_0x2b6525[_0x0060('0x4')][_0x0060('0x5')]);}else{return _0x2b7515(_0x2b6525['result']);}})['catch'](function(_0x37b814){return _0xfeff14(_0x37b814);});});}exports[_0x0060('0x6')]=function(_0x1f0e1f,_0x3aa6ec){return request('SendMail',{'account':_0x1f0e1f,'message':_0x3aa6ec});};
\ No newline at end of file
index 4af8e49..2a07129 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69af=['openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','idle','updateRealtime','mail','chat','openchannel','fax','whatsapp','length','Status','StatusTime','toNumber','format','smsPause','faxStatusTime','openchannelStatusTime','user:save','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','openchannelStatus'];(function(_0x48ce25,_0x44f5d0){var _0x5a5627=function(_0x4ad76c){while(--_0x4ad76c){_0x48ce25['push'](_0x48ce25['shift']());}};_0x5a5627(++_0x44f5d0);}(_0x69af,0x17b));var _0xf69a=function(_0x2deeb8,_0x423077){_0x2deeb8=_0x2deeb8-0x0;var _0x460c4d=_0x69af[_0x2deeb8];return _0x460c4d;};'use strict';var _=require('lodash');var moment=require(_0xf69a('0x0'));var md5=require(_0xf69a('0x1'));var Redis=require(_0xf69a('0x2'));var config=require(_0xf69a('0x3'));config[_0xf69a('0x4')]=_[_0xf69a('0x5')](config['redis'],{'host':_0xf69a('0x6'),'port':0x18eb});var io=require(_0xf69a('0x7'))(new Redis(config[_0xf69a('0x4')]));function Agent(_0x2820d8){this['id']=_0x2820d8['id']||0x0;this[_0xf69a('0x8')]=_0x2820d8['name']||'';this[_0xf69a('0x9')]=_0x2820d8[_0xf69a('0x9')]||!![];this[_0xf69a('0xa')]=_0x2820d8['voicePause']||![];this['chatPause']=_0x2820d8[_0xf69a('0xb')]||![];this[_0xf69a('0xc')]=_0x2820d8[_0xf69a('0xc')]||![];this[_0xf69a('0xd')]=_0x2820d8[_0xf69a('0xd')]||![];this['smsPause']=_0x2820d8['smsPause']||![];this['openchannelPause']=_0x2820d8[_0xf69a('0xe')]||![];this[_0xf69a('0xf')]=_0xf69a('0x10');this[_0xf69a('0x11')]=0x0;this['chatCapacity']=_0x2820d8[_0xf69a('0x12')]||0x0;this[_0xf69a('0x13')]=0x0;this[_0xf69a('0x14')]=_0xf69a('0x10');this[_0xf69a('0x15')]=0x0;this[_0xf69a('0x16')]=_0x2820d8[_0xf69a('0x16')]||0x0;this[_0xf69a('0x17')]=0x0;this[_0xf69a('0x18')]=_0xf69a('0x10');this['faxStatusTime']=0x0;this[_0xf69a('0x19')]=_0x2820d8[_0xf69a('0x19')]||0x0;this[_0xf69a('0x1a')]=0x0;this[_0xf69a('0x1b')]='unknown';this[_0xf69a('0x1c')]=0x0;this[_0xf69a('0x1d')]=_0x2820d8[_0xf69a('0x1d')]||0x0;this[_0xf69a('0x1e')]=0x0;this[_0xf69a('0x1f')]=_0xf69a('0x10');this[_0xf69a('0x20')]=0x0;this['whatsappCapacity']=_0x2820d8['whatsappCapacity']||0x0;this['whatsappCurrentCapacity']=0x0;this[_0xf69a('0x21')]='unknown';this['openchannelStatusTime']=0x0;this['openchannelCapacity']=_0x2820d8[_0xf69a('0x22')]||0x0;this[_0xf69a('0x23')]=0x0;this[_0xf69a('0x24')]=![];this[_0xf69a('0x25')]=undefined;this['md5']='';this['updateRealtime']();}Agent[_0xf69a('0x26')][_0xf69a('0x27')]=function(_0x2a3ad){if(this[_0x2a3ad+_0xf69a('0x28')]>0x0){if(this[_0x2a3ad+_0xf69a('0x29')]>0x0&&this[_0x2a3ad+_0xf69a('0x28')]>=this[_0x2a3ad+_0xf69a('0x29')]){return _0xf69a('0x2a');}else{return'working';}}else{return _0xf69a('0x2b');}};Agent[_0xf69a('0x26')][_0xf69a('0x2c')]=function(){var _0x39111e=[_0xf69a('0x2d'),_0xf69a('0x2e'),_0xf69a('0x2f'),_0xf69a('0x30'),'sms',_0xf69a('0x31')];for(var _0x5e8701=0x0;_0x5e8701<_0x39111e[_0xf69a('0x32')];_0x5e8701+=0x1){var _0x106ac9=this[_0xf69a('0x27')](_0x39111e[_0x5e8701]);if(this[_0x39111e[_0x5e8701]+_0xf69a('0x33')]!==_0x106ac9){this[_0x39111e[_0x5e8701]+_0xf69a('0x34')]=_[_0xf69a('0x35')](moment()[_0xf69a('0x36')]('x'));}this[_0x39111e[_0x5e8701]+_0xf69a('0x33')]=_0x106ac9;}var _0x1c05bc={'id':this['id'],'name':this['name'],'online':this['online'],'voicePause':this[_0xf69a('0xa')],'chatPause':this['chatPause'],'mailPause':this['mailPause'],'smsPause':this[_0xf69a('0x37')],'faxPause':this['faxPause'],'openchannelPause':this['openchannelPause'],'chatStatus':this[_0xf69a('0xf')],'chatStatusTime':this[_0xf69a('0x11')],'chatCapacity':this[_0xf69a('0x12')],'chatCurrentCapacity':this[_0xf69a('0x13')],'mailStatus':this[_0xf69a('0x14')],'mailStatusTime':this[_0xf69a('0x15')],'mailCapacity':this[_0xf69a('0x16')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0xf69a('0x18')],'faxStatusTime':this[_0xf69a('0x38')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0xf69a('0x1a')],'smsStatus':this['smsStatus'],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0xf69a('0x1e')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0xf69a('0x21')],'openchannelStatusTime':this[_0xf69a('0x39')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0xf69a('0x23')],'busy':this[_0xf69a('0x24')],'busyQueue':this[_0xf69a('0x25')]};var _0x548b2b=md5(JSON['stringify'](_0x1c05bc));if(this[_0xf69a('0x1')]!==_0x548b2b){this['md5']=_0x548b2b;io['emit'](_0xf69a('0x3a'),_0x1c05bc);}};module['exports']=Agent;
\ No newline at end of file
+var _0xd93a=['Capacity','CurrentCapacity','working','idle','mail','chat','openchannel','fax','sms','whatsapp','length','Status','StatusTime','toNumber','chatStatusTime','chatCurrentCapacity','mailStatusTime','mailCurrentCapacity','faxStatusTime','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','openchannelStatusTime','openchannelCurrentCapacity','busy','stringify','exports','lodash','moment','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatCapacity','mailStatus','mailCapacity','faxStatus','faxCapacity','faxCurrentCapacity','smsStatusTime','smsCapacity','whatsappCapacity','whatsappCurrentCapacity','openchannelCapacity','busyQueue','md5','updateRealtime'];(function(_0x1fa2b7,_0x1072a4){var _0x16fb89=function(_0x7ae739){while(--_0x7ae739){_0x1fa2b7['push'](_0x1fa2b7['shift']());}};_0x16fb89(++_0x1072a4);}(_0xd93a,0x91));var _0xad93=function(_0xd957f8,_0x30b6f9){_0xd957f8=_0xd957f8-0x0;var _0x250fac=_0xd93a[_0xd957f8];return _0x250fac;};'use strict';var _=require(_0xad93('0x0'));var moment=require(_0xad93('0x1'));var md5=require('md5');var Redis=require(_0xad93('0x2'));var config=require(_0xad93('0x3'));config[_0xad93('0x4')]=_[_0xad93('0x5')](config['redis'],{'host':_0xad93('0x6'),'port':0x18eb});var io=require(_0xad93('0x7'))(new Redis(config['redis']));function Agent(_0x3eb893){this['id']=_0x3eb893['id']||0x0;this[_0xad93('0x8')]=_0x3eb893[_0xad93('0x8')]||'';this[_0xad93('0x9')]=_0x3eb893[_0xad93('0x9')]||!![];this['voicePause']=_0x3eb893[_0xad93('0xa')]||![];this[_0xad93('0xb')]=_0x3eb893[_0xad93('0xb')]||![];this[_0xad93('0xc')]=_0x3eb893[_0xad93('0xc')]||![];this[_0xad93('0xd')]=_0x3eb893['faxPause']||![];this[_0xad93('0xe')]=_0x3eb893['smsPause']||![];this[_0xad93('0xf')]=_0x3eb893['openchannelPause']||![];this[_0xad93('0x10')]=_0xad93('0x11');this['chatStatusTime']=0x0;this[_0xad93('0x12')]=_0x3eb893[_0xad93('0x12')]||0x0;this['chatCurrentCapacity']=0x0;this[_0xad93('0x13')]=_0xad93('0x11');this['mailStatusTime']=0x0;this[_0xad93('0x14')]=_0x3eb893[_0xad93('0x14')]||0x0;this['mailCurrentCapacity']=0x0;this[_0xad93('0x15')]=_0xad93('0x11');this['faxStatusTime']=0x0;this['faxCapacity']=_0x3eb893[_0xad93('0x16')]||0x0;this[_0xad93('0x17')]=0x0;this['smsStatus']='unknown';this[_0xad93('0x18')]=0x0;this[_0xad93('0x19')]=_0x3eb893[_0xad93('0x19')]||0x0;this['smsCurrentCapacity']=0x0;this['whatsappStatus']=_0xad93('0x11');this['whatsappStatusTime']=0x0;this['whatsappCapacity']=_0x3eb893[_0xad93('0x1a')]||0x0;this[_0xad93('0x1b')]=0x0;this['openchannelStatus']=_0xad93('0x11');this['openchannelStatusTime']=0x0;this[_0xad93('0x1c')]=_0x3eb893['openchannelCapacity']||0x0;this['openchannelCurrentCapacity']=0x0;this['busy']=![];this[_0xad93('0x1d')]=undefined;this[_0xad93('0x1e')]='';this[_0xad93('0x1f')]();}Agent['prototype']['getChannelStatus']=function(_0x3be03b){if(this[_0x3be03b+'CurrentCapacity']>0x0){if(this[_0x3be03b+_0xad93('0x20')]>0x0&&this[_0x3be03b+_0xad93('0x21')]>=this[_0x3be03b+'Capacity']){return'maxcapacity';}else{return _0xad93('0x22');}}else{return _0xad93('0x23');}};Agent['prototype'][_0xad93('0x1f')]=function(){var _0x41aa10=[_0xad93('0x24'),_0xad93('0x25'),_0xad93('0x26'),_0xad93('0x27'),_0xad93('0x28'),_0xad93('0x29')];for(var _0x54f02a=0x0;_0x54f02a<_0x41aa10[_0xad93('0x2a')];_0x54f02a+=0x1){var _0x151b3e=this['getChannelStatus'](_0x41aa10[_0x54f02a]);if(this[_0x41aa10[_0x54f02a]+_0xad93('0x2b')]!==_0x151b3e){this[_0x41aa10[_0x54f02a]+_0xad93('0x2c')]=_[_0xad93('0x2d')](moment()['format']('x'));}this[_0x41aa10[_0x54f02a]+_0xad93('0x2b')]=_0x151b3e;}var _0x1f38f5={'id':this['id'],'name':this[_0xad93('0x8')],'online':this[_0xad93('0x9')],'voicePause':this[_0xad93('0xa')],'chatPause':this[_0xad93('0xb')],'mailPause':this[_0xad93('0xc')],'smsPause':this['smsPause'],'faxPause':this[_0xad93('0xd')],'openchannelPause':this[_0xad93('0xf')],'chatStatus':this[_0xad93('0x10')],'chatStatusTime':this[_0xad93('0x2e')],'chatCapacity':this[_0xad93('0x12')],'chatCurrentCapacity':this[_0xad93('0x2f')],'mailStatus':this[_0xad93('0x13')],'mailStatusTime':this[_0xad93('0x30')],'mailCapacity':this[_0xad93('0x14')],'mailCurrentCapacity':this[_0xad93('0x31')],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0xad93('0x32')],'faxCapacity':this[_0xad93('0x16')],'faxCurrentCapacity':this[_0xad93('0x17')],'smsStatus':this['smsStatus'],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this[_0xad93('0x19')],'smsCurrentCapacity':this[_0xad93('0x33')],'whatsappStatus':this[_0xad93('0x34')],'whatsappStatusTime':this[_0xad93('0x35')],'whatsappCapacity':this[_0xad93('0x1a')],'whatsappCurrentCapacity':this[_0xad93('0x1b')],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0xad93('0x36')],'openchannelCapacity':this[_0xad93('0x1c')],'openchannelCurrentCapacity':this[_0xad93('0x37')],'busy':this[_0xad93('0x38')],'busyQueue':this[_0xad93('0x1d')]};var _0x127aea=md5(JSON[_0xad93('0x39')](_0x1f38f5));if(this[_0xad93('0x1e')]!==_0x127aea){this[_0xad93('0x1e')]=_0x127aea;io['emit']('user:save',_0x1f38f5);}};module[_0xad93('0x3a')]=Agent;
\ No newline at end of file
index e3d2859..6f18277 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb31e=['chatPause','available','chat:queue:%s','chat_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','Agents','waiting','updateRealtime','updateRouting','mapAgentsId','_rr','map','prototype','loggedIn','paused','length','online'];(function(_0x374afc,_0x5660ab){var _0x4e0c31=function(_0x345110){while(--_0x345110){_0x374afc['push'](_0x374afc['shift']());}};_0x4e0c31(++_0x5660ab);}(_0xb31e,0xc2));var _0xeb31=function(_0x4075e7,_0xa1b61c){_0x4075e7=_0x4075e7-0x0;var _0x4c0fba=_0xb31e[_0x4075e7];return _0x4c0fba;};'use strict';var _=require('lodash');var md5=require(_0xeb31('0x0'));var util=require(_0xeb31('0x1'));var Redis=require(_0xeb31('0x2'));var config=require(_0xeb31('0x3'));config[_0xeb31('0x4')]=_[_0xeb31('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xeb31('0x6'))(new Redis(config[_0xeb31('0x4')]));function ChatQueue(_0x31cefe){this['id']=_0x31cefe['id']||0x0;this[_0xeb31('0x7')]=_0x31cefe[_0xeb31('0x7')]||'';this['timeout']=_0x31cefe[_0xeb31('0x8')]||0xa;this[_0xeb31('0x9')]=_0x31cefe['strategy']||'beepall';this[_0xeb31('0xa')]=_0x31cefe[_0xeb31('0xa')];this['mapAgentsId']={};this[_0xeb31('0xb')]=0x0;this[_0xeb31('0x0')]='';this['updateRouting']();this[_0xeb31('0xc')]();}ChatQueue['prototype'][_0xeb31('0xd')]=function(){var _0x6cf46d=this[_0xeb31('0xe')][_0xeb31('0xf')];this[_0xeb31('0xe')]=_[_0xeb31('0x10')](this['Agents'],'id');this['mapAgentsId']['_rr']=_0x6cf46d;};ChatQueue[_0xeb31('0x11')][_0xeb31('0xc')]=function(){this[_0xeb31('0x12')]=0x0;this[_0xeb31('0x13')]=0x0;for(var _0x42491f=0x0;_0x42491f<this['Agents'][_0xeb31('0x14')];_0x42491f+=0x1){if(this['Agents'][_0x42491f][_0xeb31('0x15')]){this[_0xeb31('0x12')]+=0x1;}if(this[_0xeb31('0xa')][_0x42491f][_0xeb31('0x16')]){this[_0xeb31('0x13')]+=0x1;}}this[_0xeb31('0x17')]=this[_0xeb31('0x12')]-this['paused'];this[_0xeb31('0x17')]=this[_0xeb31('0x17')]>=0x0?this[_0xeb31('0x17')]:0x0;var _0x143cd8={'id':this['id'],'available':this['available'],'loggedIn':this[_0xeb31('0x12')],'name':this['name'],'paused':this[_0xeb31('0x13')],'waiting':this[_0xeb31('0xb')]};var _0x209ba9=md5(JSON['stringify'](_0x143cd8));if(this[_0xeb31('0x0')]!==_0x209ba9){this[_0xeb31('0x0')]=_0x209ba9;io['to'](util['format'](_0xeb31('0x18'),_0x143cd8[_0xeb31('0x7')]))['emit'](_0xeb31('0x19'),_0x143cd8);}};module[_0xeb31('0x1a')]=ChatQueue;
\ No newline at end of file
+var _0xe570=['beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','chatPause','available','stringify','format','chat:queue:%s','emit','lodash','md5','util','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy'];(function(_0x18bc36,_0x26f693){var _0x263e16=function(_0x483749){while(--_0x483749){_0x18bc36['push'](_0x18bc36['shift']());}};_0x263e16(++_0x26f693);}(_0xe570,0x10e));var _0x0e57=function(_0x3eb834,_0x4a3ed4){_0x3eb834=_0x3eb834-0x0;var _0x446635=_0xe570[_0x3eb834];return _0x446635;};'use strict';var _=require(_0x0e57('0x0'));var md5=require(_0x0e57('0x1'));var util=require(_0x0e57('0x2'));var Redis=require('ioredis');var config=require(_0x0e57('0x3'));config[_0x0e57('0x4')]=_[_0x0e57('0x5')](config[_0x0e57('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x0e57('0x6'))(new Redis(config[_0x0e57('0x4')]));function ChatQueue(_0x3cb3c1){this['id']=_0x3cb3c1['id']||0x0;this[_0x0e57('0x7')]=_0x3cb3c1[_0x0e57('0x7')]||'';this[_0x0e57('0x8')]=_0x3cb3c1['timeout']||0xa;this['strategy']=_0x3cb3c1[_0x0e57('0x9')]||_0x0e57('0xa');this[_0x0e57('0xb')]=_0x3cb3c1[_0x0e57('0xb')];this[_0x0e57('0xc')]={};this['waiting']=0x0;this[_0x0e57('0x1')]='';this[_0x0e57('0xd')]();this[_0x0e57('0xe')]();}ChatQueue[_0x0e57('0xf')][_0x0e57('0xd')]=function(){var _0x14852c=this[_0x0e57('0xc')][_0x0e57('0x10')];this[_0x0e57('0xc')]=_[_0x0e57('0x11')](this[_0x0e57('0xb')],'id');this[_0x0e57('0xc')]['_rr']=_0x14852c;};ChatQueue[_0x0e57('0xf')][_0x0e57('0xe')]=function(){this[_0x0e57('0x12')]=0x0;this[_0x0e57('0x13')]=0x0;for(var _0x2d0b80=0x0;_0x2d0b80<this[_0x0e57('0xb')][_0x0e57('0x14')];_0x2d0b80+=0x1){if(this[_0x0e57('0xb')][_0x2d0b80][_0x0e57('0x15')]){this[_0x0e57('0x12')]+=0x1;}if(this[_0x0e57('0xb')][_0x2d0b80][_0x0e57('0x16')]){this[_0x0e57('0x13')]+=0x1;}}this[_0x0e57('0x17')]=this[_0x0e57('0x12')]-this['paused'];this[_0x0e57('0x17')]=this[_0x0e57('0x17')]>=0x0?this['available']:0x0;var _0x7ce7bd={'id':this['id'],'available':this[_0x0e57('0x17')],'loggedIn':this[_0x0e57('0x12')],'name':this[_0x0e57('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x2de3e6=md5(JSON[_0x0e57('0x18')](_0x7ce7bd));if(this[_0x0e57('0x1')]!==_0x2de3e6){this[_0x0e57('0x1')]=_0x2de3e6;io['to'](util[_0x0e57('0x19')](_0x0e57('0x1a'),_0x7ce7bd['name']))[_0x0e57('0x1b')]('chat_queue:save',_0x7ce7bd);}};module['exports']=ChatQueue;
\ No newline at end of file
index bc09214..8200a8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0978=['Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','faxPause','available','stringify','format','fax:queue:%s','emit','fax_queue:save','lodash','md5','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0x375e75,_0x417dc4){var _0x40a7b7=function(_0x2a45a1){while(--_0x2a45a1){_0x375e75['push'](_0x375e75['shift']());}};_0x40a7b7(++_0x417dc4);}(_0x0978,0xb3));var _0x8097=function(_0x35e467,_0xb723a1){_0x35e467=_0x35e467-0x0;var _0x49a49d=_0x0978[_0x35e467];return _0x49a49d;};'use strict';var _=require(_0x8097('0x0'));var md5=require(_0x8097('0x1'));var util=require('util');var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x8097('0x2')]=_[_0x8097('0x3')](config[_0x8097('0x2')],{'host':_0x8097('0x4'),'port':0x18eb});var io=require(_0x8097('0x5'))(new Redis(config[_0x8097('0x2')]));function FaxQueue(_0x5f32b1){this['id']=_0x5f32b1['id']||0x0;this[_0x8097('0x6')]=_0x5f32b1['name']||'';this[_0x8097('0x7')]=_0x5f32b1[_0x8097('0x7')]||0xa;this[_0x8097('0x8')]=_0x5f32b1[_0x8097('0x8')]||_0x8097('0x9');this[_0x8097('0xa')]=_0x5f32b1[_0x8097('0xa')];this[_0x8097('0xb')]={};this[_0x8097('0xc')]=0x0;this['md5']='';this[_0x8097('0xd')]();this[_0x8097('0xe')]();}FaxQueue[_0x8097('0xf')][_0x8097('0xd')]=function(){var _0x437b85=this['mapAgentsId'][_0x8097('0x10')];this[_0x8097('0xb')]=_[_0x8097('0x11')](this[_0x8097('0xa')],'id');this[_0x8097('0xb')]['_rr']=_0x437b85;};FaxQueue[_0x8097('0xf')][_0x8097('0xe')]=function(){this[_0x8097('0x12')]=0x0;this[_0x8097('0x13')]=0x0;for(var _0xa496d=0x0;_0xa496d<this[_0x8097('0xa')]['length'];_0xa496d+=0x1){if(this[_0x8097('0xa')][_0xa496d]['online']){this[_0x8097('0x12')]+=0x1;}if(this[_0x8097('0xa')][_0xa496d][_0x8097('0x14')]){this[_0x8097('0x13')]+=0x1;}}this[_0x8097('0x15')]=this[_0x8097('0x12')]-this[_0x8097('0x13')];this[_0x8097('0x15')]=this[_0x8097('0x15')]>=0x0?this[_0x8097('0x15')]:0x0;var _0x30cc3b={'id':this['id'],'available':this[_0x8097('0x15')],'loggedIn':this[_0x8097('0x12')],'name':this[_0x8097('0x6')],'paused':this[_0x8097('0x13')],'waiting':this[_0x8097('0xc')]};var _0x1fa30=md5(JSON[_0x8097('0x16')](_0x30cc3b));if(this[_0x8097('0x1')]!==_0x1fa30){this['md5']=_0x1fa30;io['to'](util[_0x8097('0x17')](_0x8097('0x18'),_0x30cc3b[_0x8097('0x6')]))[_0x8097('0x19')](_0x8097('0x1a'),_0x30cc3b);}};module['exports']=FaxQueue;
\ No newline at end of file
+var _0xa7db=['redis','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','faxPause','available','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','defaults','socket.io-emitter'];(function(_0x11a962,_0x3cc338){var _0x55d423=function(_0xf4b236){while(--_0xf4b236){_0x11a962['push'](_0x11a962['shift']());}};_0x55d423(++_0x3cc338);}(_0xa7db,0x1d9));var _0xba7d=function(_0x17f22f,_0x1549c5){_0x17f22f=_0x17f22f-0x0;var _0x57db81=_0xa7db[_0x17f22f];return _0x57db81;};'use strict';var _=require(_0xba7d('0x0'));var md5=require(_0xba7d('0x1'));var util=require(_0xba7d('0x2'));var Redis=require(_0xba7d('0x3'));var config=require(_0xba7d('0x4'));config['redis']=_[_0xba7d('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xba7d('0x6'))(new Redis(config[_0xba7d('0x7')]));function FaxQueue(_0x1bc83d){this['id']=_0x1bc83d['id']||0x0;this[_0xba7d('0x8')]=_0x1bc83d[_0xba7d('0x8')]||'';this[_0xba7d('0x9')]=_0x1bc83d[_0xba7d('0x9')]||0xa;this[_0xba7d('0xa')]=_0x1bc83d[_0xba7d('0xa')]||'beepall';this[_0xba7d('0xb')]=_0x1bc83d['Agents'];this[_0xba7d('0xc')]={};this[_0xba7d('0xd')]=0x0;this[_0xba7d('0x1')]='';this[_0xba7d('0xe')]();this[_0xba7d('0xf')]();}FaxQueue[_0xba7d('0x10')][_0xba7d('0xe')]=function(){var _0x1bdff4=this[_0xba7d('0xc')][_0xba7d('0x11')];this['mapAgentsId']=_[_0xba7d('0x12')](this[_0xba7d('0xb')],'id');this[_0xba7d('0xc')][_0xba7d('0x11')]=_0x1bdff4;};FaxQueue[_0xba7d('0x10')][_0xba7d('0xf')]=function(){this[_0xba7d('0x13')]=0x0;this[_0xba7d('0x14')]=0x0;for(var _0x2dc51d=0x0;_0x2dc51d<this[_0xba7d('0xb')][_0xba7d('0x15')];_0x2dc51d+=0x1){if(this['Agents'][_0x2dc51d][_0xba7d('0x16')]){this[_0xba7d('0x13')]+=0x1;}if(this['Agents'][_0x2dc51d][_0xba7d('0x17')]){this['paused']+=0x1;}}this[_0xba7d('0x18')]=this[_0xba7d('0x13')]-this[_0xba7d('0x14')];this[_0xba7d('0x18')]=this[_0xba7d('0x18')]>=0x0?this[_0xba7d('0x18')]:0x0;var _0x344c8a={'id':this['id'],'available':this[_0xba7d('0x18')],'loggedIn':this[_0xba7d('0x13')],'name':this[_0xba7d('0x8')],'paused':this[_0xba7d('0x14')],'waiting':this['waiting']};var _0x20ed77=md5(JSON['stringify'](_0x344c8a));if(this[_0xba7d('0x1')]!==_0x20ed77){this['md5']=_0x20ed77;io['to'](util[_0xba7d('0x19')](_0xba7d('0x1a'),_0x344c8a[_0xba7d('0x8')]))[_0xba7d('0x1b')](_0xba7d('0x1c'),_0x344c8a);}};module[_0xba7d('0x1d')]=FaxQueue;
\ No newline at end of file
index 7bb8ddf..97bec83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb418=['name','Intervals','exports'];(function(_0x238b4b,_0x2fe72d){var _0x4fe904=function(_0x434e9c){while(--_0x434e9c){_0x238b4b['push'](_0x238b4b['shift']());}};_0x4fe904(++_0x2fe72d);}(_0xb418,0xb7));var _0x8b41=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0xb418[_0x34843e];return _0x598f7f;};'use strict';function Interval(_0x20fc65){this['id']=_0x20fc65['id']||0x0;this[_0x8b41('0x0')]=_0x20fc65[_0x8b41('0x0')]||'';this[_0x8b41('0x1')]=_0x20fc65[_0x8b41('0x1')]||{};}module[_0x8b41('0x2')]=Interval;
\ No newline at end of file
+var _0xbb89=['exports','name','Intervals'];(function(_0xb833b1,_0x1c3d3f){var _0x1ab87a=function(_0x1c9f6c){while(--_0x1c9f6c){_0xb833b1['push'](_0xb833b1['shift']());}};_0x1ab87a(++_0x1c3d3f);}(_0xbb89,0x91));var _0x9bb8=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xbb89[_0x59ee6f];return _0x4c0979;};'use strict';function Interval(_0x22ac16){this['id']=_0x22ac16['id']||0x0;this[_0x9bb8('0x0')]=_0x22ac16[_0x9bb8('0x0')]||'';this[_0x9bb8('0x1')]=_0x22ac16[_0x9bb8('0x1')]||{};}module[_0x9bb8('0x2')]=Interval;
\ No newline at end of file
index 066a00a..43c49ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66e6=['mailPause','available','stringify','format','mail:queue:%s','mail_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','paused','length','online','loggedIn'];(function(_0x424662,_0x1a46b5){var _0x5ead9f=function(_0x44606a){while(--_0x44606a){_0x424662['push'](_0x424662['shift']());}};_0x5ead9f(++_0x1a46b5);}(_0x66e6,0xe7));var _0x666e=function(_0x1ef041,_0x42f690){_0x1ef041=_0x1ef041-0x0;var _0x56c276=_0x66e6[_0x1ef041];return _0x56c276;};'use strict';var _=require(_0x666e('0x0'));var md5=require(_0x666e('0x1'));var util=require(_0x666e('0x2'));var Redis=require(_0x666e('0x3'));var config=require(_0x666e('0x4'));config[_0x666e('0x5')]=_[_0x666e('0x6')](config['redis'],{'host':_0x666e('0x7'),'port':0x18eb});var io=require(_0x666e('0x8'))(new Redis(config[_0x666e('0x5')]));function MailQueue(_0x3e9a0a){this['id']=_0x3e9a0a['id']||0x0;this[_0x666e('0x9')]=_0x3e9a0a[_0x666e('0x9')]||'';this['timeout']=_0x3e9a0a[_0x666e('0xa')]||0xa;this[_0x666e('0xb')]=_0x3e9a0a['strategy']||_0x666e('0xc');this[_0x666e('0xd')]=_0x3e9a0a['Agents'];this[_0x666e('0xe')]={};this[_0x666e('0xf')]=0x0;this[_0x666e('0x1')]='';this[_0x666e('0x10')]();this[_0x666e('0x11')]();}MailQueue[_0x666e('0x12')][_0x666e('0x10')]=function(){var _0x2bd737=this[_0x666e('0xe')][_0x666e('0x13')];this[_0x666e('0xe')]=_[_0x666e('0x14')](this['Agents'],'id');this[_0x666e('0xe')]['_rr']=_0x2bd737;};MailQueue[_0x666e('0x12')][_0x666e('0x11')]=function(){this['loggedIn']=0x0;this[_0x666e('0x15')]=0x0;for(var _0x4817f2=0x0;_0x4817f2<this[_0x666e('0xd')][_0x666e('0x16')];_0x4817f2+=0x1){if(this[_0x666e('0xd')][_0x4817f2][_0x666e('0x17')]){this[_0x666e('0x18')]+=0x1;}if(this['Agents'][_0x4817f2][_0x666e('0x19')]){this['paused']+=0x1;}}this[_0x666e('0x1a')]=this[_0x666e('0x18')]-this['paused'];this[_0x666e('0x1a')]=this[_0x666e('0x1a')]>=0x0?this['available']:0x0;var _0x1523dc={'id':this['id'],'available':this[_0x666e('0x1a')],'loggedIn':this[_0x666e('0x18')],'name':this[_0x666e('0x9')],'paused':this[_0x666e('0x15')],'waiting':this[_0x666e('0xf')]};var _0x30045f=md5(JSON[_0x666e('0x1b')](_0x1523dc));if(this[_0x666e('0x1')]!==_0x30045f){this['md5']=_0x30045f;io['to'](util[_0x666e('0x1c')](_0x666e('0x1d'),_0x1523dc[_0x666e('0x9')]))['emit'](_0x666e('0x1e'),_0x1523dc);}};module[_0x666e('0x1f')]=MailQueue;
\ No newline at end of file
+var _0x4c42=['map','updateRealtime','loggedIn','length','online','mailPause','paused','available','waiting','stringify','mail:queue:%s','mail_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','prototype','_rr'];(function(_0x4bba60,_0x4d3fe0){var _0x227ba8=function(_0x27b353){while(--_0x27b353){_0x4bba60['push'](_0x4bba60['shift']());}};_0x227ba8(++_0x4d3fe0);}(_0x4c42,0x125));var _0x24c4=function(_0x4dc4e2,_0x4dac61){_0x4dc4e2=_0x4dc4e2-0x0;var _0x58d4a9=_0x4c42[_0x4dc4e2];return _0x58d4a9;};'use strict';var _=require('lodash');var md5=require(_0x24c4('0x0'));var util=require(_0x24c4('0x1'));var Redis=require(_0x24c4('0x2'));var config=require(_0x24c4('0x3'));config[_0x24c4('0x4')]=_['defaults'](config[_0x24c4('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x24c4('0x5'))(new Redis(config['redis']));function MailQueue(_0x2112ef){this['id']=_0x2112ef['id']||0x0;this[_0x24c4('0x6')]=_0x2112ef[_0x24c4('0x6')]||'';this[_0x24c4('0x7')]=_0x2112ef[_0x24c4('0x7')]||0xa;this['strategy']=_0x2112ef[_0x24c4('0x8')]||_0x24c4('0x9');this[_0x24c4('0xa')]=_0x2112ef[_0x24c4('0xa')];this[_0x24c4('0xb')]={};this['waiting']=0x0;this[_0x24c4('0x0')]='';this[_0x24c4('0xc')]();this['updateRealtime']();}MailQueue[_0x24c4('0xd')][_0x24c4('0xc')]=function(){var _0x117ed5=this[_0x24c4('0xb')][_0x24c4('0xe')];this[_0x24c4('0xb')]=_[_0x24c4('0xf')](this['Agents'],'id');this['mapAgentsId'][_0x24c4('0xe')]=_0x117ed5;};MailQueue[_0x24c4('0xd')][_0x24c4('0x10')]=function(){this[_0x24c4('0x11')]=0x0;this['paused']=0x0;for(var _0x10471c=0x0;_0x10471c<this[_0x24c4('0xa')][_0x24c4('0x12')];_0x10471c+=0x1){if(this[_0x24c4('0xa')][_0x10471c][_0x24c4('0x13')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x10471c][_0x24c4('0x14')]){this[_0x24c4('0x15')]+=0x1;}}this[_0x24c4('0x16')]=this['loggedIn']-this[_0x24c4('0x15')];this['available']=this['available']>=0x0?this[_0x24c4('0x16')]:0x0;var _0x33c6f8={'id':this['id'],'available':this['available'],'loggedIn':this[_0x24c4('0x11')],'name':this[_0x24c4('0x6')],'paused':this[_0x24c4('0x15')],'waiting':this[_0x24c4('0x17')]};var _0x3f19cd=md5(JSON[_0x24c4('0x18')](_0x33c6f8));if(this['md5']!==_0x3f19cd){this[_0x24c4('0x0')]=_0x3f19cd;io['to'](util['format'](_0x24c4('0x19'),_0x33c6f8[_0x24c4('0x6')]))['emit'](_0x24c4('0x1a'),_0x33c6f8);}};module[_0x24c4('0x1b')]=MailQueue;
\ No newline at end of file
index 3c1b916..cd14a79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['format','openchannel:queue:%s','name','emit','openchannel_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','prototype','loggedIn','paused','openchannelPause','available'];(function(_0x2dbe2e,_0x127139){var _0x2d6400=function(_0x344148){while(--_0x344148){_0x2dbe2e['push'](_0x2dbe2e['shift']());}};_0x2d6400(++_0x127139);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3438cf,_0x73b174){_0x3438cf=_0x3438cf-0x0;var _0x278698=_0x5fc3[_0x3438cf];return _0x278698;};'use strict';var _=require(_0x35fc('0x0'));var md5=require(_0x35fc('0x1'));var util=require('util');var Redis=require(_0x35fc('0x2'));var config=require(_0x35fc('0x3'));config[_0x35fc('0x4')]=_[_0x35fc('0x5')](config[_0x35fc('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x35fc('0x6'))(new Redis(config[_0x35fc('0x4')]));function OpenchannelQueue(_0x186a06){this['id']=_0x186a06['id']||0x0;this['name']=_0x186a06['name']||'';this[_0x35fc('0x7')]=_0x186a06['timeout']||0xa;this[_0x35fc('0x8')]=_0x186a06[_0x35fc('0x8')]||_0x35fc('0x9');this[_0x35fc('0xa')]=_0x186a06[_0x35fc('0xa')];this[_0x35fc('0xb')]={};this[_0x35fc('0xc')]=0x0;this['md5']='';this[_0x35fc('0xd')]();this[_0x35fc('0xe')]();}OpenchannelQueue['prototype'][_0x35fc('0xd')]=function(){var _0x33f491=this['mapAgentsId'][_0x35fc('0xf')];this[_0x35fc('0xb')]=_['map'](this['Agents'],'id');this[_0x35fc('0xb')]['_rr']=_0x33f491;};OpenchannelQueue[_0x35fc('0x10')][_0x35fc('0xe')]=function(){this[_0x35fc('0x11')]=0x0;this[_0x35fc('0x12')]=0x0;for(var _0x38d9f2=0x0;_0x38d9f2<this['Agents']['length'];_0x38d9f2+=0x1){if(this['Agents'][_0x38d9f2]['online']){this[_0x35fc('0x11')]+=0x1;}if(this[_0x35fc('0xa')][_0x38d9f2][_0x35fc('0x13')]){this[_0x35fc('0x12')]+=0x1;}}this[_0x35fc('0x14')]=this[_0x35fc('0x11')]-this['paused'];this[_0x35fc('0x14')]=this[_0x35fc('0x14')]>=0x0?this['available']:0x0;var _0x41e165={'id':this['id'],'available':this[_0x35fc('0x14')],'loggedIn':this[_0x35fc('0x11')],'name':this['name'],'paused':this[_0x35fc('0x12')],'waiting':this[_0x35fc('0xc')]};var _0x465eb3=md5(JSON['stringify'](_0x41e165));if(this[_0x35fc('0x1')]!==_0x465eb3){this[_0x35fc('0x1')]=_0x465eb3;io['to'](util[_0x35fc('0x15')](_0x35fc('0x16'),_0x41e165[_0x35fc('0x17')]))[_0x35fc('0x18')](_0x35fc('0x19'),_0x41e165);}};module[_0x35fc('0x1a')]=OpenchannelQueue;
\ No newline at end of file
+var _0x5fc3=['format','openchannel:queue:%s','name','emit','openchannel_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','prototype','loggedIn','paused','openchannelPause','available'];(function(_0x55c307,_0x22b2ce){var _0xcca0a9=function(_0x1a2fa9){while(--_0x1a2fa9){_0x55c307['push'](_0x55c307['shift']());}};_0xcca0a9(++_0x22b2ce);}(_0x5fc3,0xa8));var _0x35fc=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0x5fc3[_0x2b5eae];return _0x5f3ac9;};'use strict';var _=require(_0x35fc('0x0'));var md5=require(_0x35fc('0x1'));var util=require('util');var Redis=require(_0x35fc('0x2'));var config=require(_0x35fc('0x3'));config[_0x35fc('0x4')]=_[_0x35fc('0x5')](config[_0x35fc('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x35fc('0x6'))(new Redis(config[_0x35fc('0x4')]));function OpenchannelQueue(_0x186a06){this['id']=_0x186a06['id']||0x0;this['name']=_0x186a06['name']||'';this[_0x35fc('0x7')]=_0x186a06['timeout']||0xa;this[_0x35fc('0x8')]=_0x186a06[_0x35fc('0x8')]||_0x35fc('0x9');this[_0x35fc('0xa')]=_0x186a06[_0x35fc('0xa')];this[_0x35fc('0xb')]={};this[_0x35fc('0xc')]=0x0;this['md5']='';this[_0x35fc('0xd')]();this[_0x35fc('0xe')]();}OpenchannelQueue['prototype'][_0x35fc('0xd')]=function(){var _0x33f491=this['mapAgentsId'][_0x35fc('0xf')];this[_0x35fc('0xb')]=_['map'](this['Agents'],'id');this[_0x35fc('0xb')]['_rr']=_0x33f491;};OpenchannelQueue[_0x35fc('0x10')][_0x35fc('0xe')]=function(){this[_0x35fc('0x11')]=0x0;this[_0x35fc('0x12')]=0x0;for(var _0x38d9f2=0x0;_0x38d9f2<this['Agents']['length'];_0x38d9f2+=0x1){if(this['Agents'][_0x38d9f2]['online']){this[_0x35fc('0x11')]+=0x1;}if(this[_0x35fc('0xa')][_0x38d9f2][_0x35fc('0x13')]){this[_0x35fc('0x12')]+=0x1;}}this[_0x35fc('0x14')]=this[_0x35fc('0x11')]-this['paused'];this[_0x35fc('0x14')]=this[_0x35fc('0x14')]>=0x0?this['available']:0x0;var _0x41e165={'id':this['id'],'available':this[_0x35fc('0x14')],'loggedIn':this[_0x35fc('0x11')],'name':this['name'],'paused':this[_0x35fc('0x12')],'waiting':this[_0x35fc('0xc')]};var _0x465eb3=md5(JSON['stringify'](_0x41e165));if(this[_0x35fc('0x1')]!==_0x465eb3){this[_0x35fc('0x1')]=_0x465eb3;io['to'](util[_0x35fc('0x15')](_0x35fc('0x16'),_0x41e165[_0x35fc('0x17')]))[_0x35fc('0x18')](_0x35fc('0x19'),_0x41e165);}};module[_0x35fc('0x1a')]=OpenchannelQueue;
\ No newline at end of file
index 3e7e7e7..a12c3c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2333=['localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','online','available','format','sms:queue:%s','emit','exports','lodash','md5','../../../config/environment','redis'];(function(_0x1575cf,_0x1190d4){var _0x2b7a4e=function(_0x522762){while(--_0x522762){_0x1575cf['push'](_0x1575cf['shift']());}};_0x2b7a4e(++_0x1190d4);}(_0x2333,0x11a));var _0x3233=function(_0x497009,_0x34d1e9){_0x497009=_0x497009-0x0;var _0x48a0c4=_0x2333[_0x497009];return _0x48a0c4;};'use strict';var _=require(_0x3233('0x0'));var md5=require(_0x3233('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0x3233('0x2'));config[_0x3233('0x3')]=_['defaults'](config[_0x3233('0x3')],{'host':_0x3233('0x4'),'port':0x18eb});var io=require(_0x3233('0x5'))(new Redis(config[_0x3233('0x3')]));function SmsQueue(_0x40768d){this['id']=_0x40768d['id']||0x0;this[_0x3233('0x6')]=_0x40768d[_0x3233('0x6')]||'';this[_0x3233('0x7')]=_0x40768d[_0x3233('0x7')]||0xa;this[_0x3233('0x8')]=_0x40768d[_0x3233('0x8')]||_0x3233('0x9');this[_0x3233('0xa')]=_0x40768d[_0x3233('0xa')];this[_0x3233('0xb')]={};this[_0x3233('0xc')]=0x0;this[_0x3233('0x1')]='';this[_0x3233('0xd')]();this[_0x3233('0xe')]();}SmsQueue[_0x3233('0xf')][_0x3233('0xd')]=function(){var _0x5dc591=this[_0x3233('0xb')][_0x3233('0x10')];this[_0x3233('0xb')]=_[_0x3233('0x11')](this[_0x3233('0xa')],'id');this[_0x3233('0xb')][_0x3233('0x10')]=_0x5dc591;};SmsQueue[_0x3233('0xf')][_0x3233('0xe')]=function(){this[_0x3233('0x12')]=0x0;this[_0x3233('0x13')]=0x0;for(var _0x27e9fd=0x0;_0x27e9fd<this[_0x3233('0xa')]['length'];_0x27e9fd+=0x1){if(this['Agents'][_0x27e9fd][_0x3233('0x14')]){this[_0x3233('0x12')]+=0x1;}if(this[_0x3233('0xa')][_0x27e9fd]['smsPause']){this[_0x3233('0x13')]+=0x1;}}this[_0x3233('0x15')]=this[_0x3233('0x12')]-this['paused'];this[_0x3233('0x15')]=this[_0x3233('0x15')]>=0x0?this['available']:0x0;var _0x38a9c0={'id':this['id'],'available':this['available'],'loggedIn':this[_0x3233('0x12')],'name':this['name'],'paused':this['paused'],'waiting':this['waiting']};var _0x298f71=md5(JSON['stringify'](_0x38a9c0));if(this[_0x3233('0x1')]!==_0x298f71){this['md5']=_0x298f71;io['to'](util[_0x3233('0x16')](_0x3233('0x17'),_0x38a9c0[_0x3233('0x6')]))[_0x3233('0x18')]('sms_queue:save',_0x38a9c0);}};module[_0x3233('0x19')]=SmsQueue;
\ No newline at end of file
+var _0x98d3=['online','smsPause','available','stringify','format','sms:queue:%s','exports','lodash','md5','ioredis','redis','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused'];(function(_0x53f9fc,_0x240602){var _0x4f8ded=function(_0x5ac2aa){while(--_0x5ac2aa){_0x53f9fc['push'](_0x53f9fc['shift']());}};_0x4f8ded(++_0x240602);}(_0x98d3,0x173));var _0x398d=function(_0x4db3ca,_0xae5665){_0x4db3ca=_0x4db3ca-0x0;var _0x404a6c=_0x98d3[_0x4db3ca];return _0x404a6c;};'use strict';var _=require(_0x398d('0x0'));var md5=require(_0x398d('0x1'));var util=require('util');var Redis=require(_0x398d('0x2'));var config=require('../../../config/environment');config[_0x398d('0x3')]=_['defaults'](config[_0x398d('0x3')],{'host':_0x398d('0x4'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function SmsQueue(_0x2ef319){this['id']=_0x2ef319['id']||0x0;this[_0x398d('0x5')]=_0x2ef319[_0x398d('0x5')]||'';this['timeout']=_0x2ef319[_0x398d('0x6')]||0xa;this[_0x398d('0x7')]=_0x2ef319[_0x398d('0x7')]||_0x398d('0x8');this[_0x398d('0x9')]=_0x2ef319['Agents'];this[_0x398d('0xa')]={};this[_0x398d('0xb')]=0x0;this[_0x398d('0x1')]='';this[_0x398d('0xc')]();this[_0x398d('0xd')]();}SmsQueue[_0x398d('0xe')][_0x398d('0xc')]=function(){var _0x101bfc=this['mapAgentsId'][_0x398d('0xf')];this[_0x398d('0xa')]=_[_0x398d('0x10')](this[_0x398d('0x9')],'id');this[_0x398d('0xa')][_0x398d('0xf')]=_0x101bfc;};SmsQueue[_0x398d('0xe')][_0x398d('0xd')]=function(){this[_0x398d('0x11')]=0x0;this[_0x398d('0x12')]=0x0;for(var _0x1fc998=0x0;_0x1fc998<this['Agents']['length'];_0x1fc998+=0x1){if(this[_0x398d('0x9')][_0x1fc998][_0x398d('0x13')]){this[_0x398d('0x11')]+=0x1;}if(this[_0x398d('0x9')][_0x1fc998][_0x398d('0x14')]){this[_0x398d('0x12')]+=0x1;}}this[_0x398d('0x15')]=this[_0x398d('0x11')]-this['paused'];this[_0x398d('0x15')]=this['available']>=0x0?this[_0x398d('0x15')]:0x0;var _0x476c36={'id':this['id'],'available':this[_0x398d('0x15')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0x398d('0xb')]};var _0x42c5ed=md5(JSON[_0x398d('0x16')](_0x476c36));if(this[_0x398d('0x1')]!==_0x42c5ed){this[_0x398d('0x1')]=_0x42c5ed;io['to'](util[_0x398d('0x17')](_0x398d('0x18'),_0x476c36['name']))['emit']('sms_queue:save',_0x476c36);}};module[_0x398d('0x19')]=SmsQueue;
\ No newline at end of file
index 4e2436e..f60fbd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa81=['whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','util','ioredis','../../../config/environment','redis','name','timeout','strategy','beepall','Agents','waiting','md5','updateRealtime','prototype','updateRouting','mapAgentsId','_rr','map','loggedIn','paused','length','online','whatsappPause','available'];(function(_0x51740f,_0xd3c53a){var _0x452de2=function(_0x2716cb){while(--_0x2716cb){_0x51740f['push'](_0x51740f['shift']());}};_0x452de2(++_0xd3c53a);}(_0xaa81,0xac));var _0x1aa8=function(_0x38ca91,_0x30052c){_0x38ca91=_0x38ca91-0x0;var _0x28a826=_0xaa81[_0x38ca91];return _0x28a826;};'use strict';var _=require(_0x1aa8('0x0'));var md5=require('md5');var util=require(_0x1aa8('0x1'));var Redis=require(_0x1aa8('0x2'));var config=require(_0x1aa8('0x3'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1aa8('0x4')]));function WhatsappQueue(_0x1e5f47){this['id']=_0x1e5f47['id']||0x0;this[_0x1aa8('0x5')]=_0x1e5f47['name']||'';this[_0x1aa8('0x6')]=_0x1e5f47[_0x1aa8('0x6')]||0xa;this[_0x1aa8('0x7')]=_0x1e5f47[_0x1aa8('0x7')]||_0x1aa8('0x8');this[_0x1aa8('0x9')]=_0x1e5f47[_0x1aa8('0x9')];this['mapAgentsId']={};this[_0x1aa8('0xa')]=0x0;this[_0x1aa8('0xb')]='';this['updateRouting']();this[_0x1aa8('0xc')]();}WhatsappQueue[_0x1aa8('0xd')][_0x1aa8('0xe')]=function(){var _0x44e1e3=this[_0x1aa8('0xf')][_0x1aa8('0x10')];this[_0x1aa8('0xf')]=_[_0x1aa8('0x11')](this[_0x1aa8('0x9')],'id');this[_0x1aa8('0xf')][_0x1aa8('0x10')]=_0x44e1e3;};WhatsappQueue[_0x1aa8('0xd')][_0x1aa8('0xc')]=function(){this[_0x1aa8('0x12')]=0x0;this[_0x1aa8('0x13')]=0x0;for(var _0x239d0d=0x0;_0x239d0d<this[_0x1aa8('0x9')][_0x1aa8('0x14')];_0x239d0d+=0x1){if(this['Agents'][_0x239d0d][_0x1aa8('0x15')]){this[_0x1aa8('0x12')]+=0x1;}if(this['Agents'][_0x239d0d][_0x1aa8('0x16')]){this[_0x1aa8('0x13')]+=0x1;}}this[_0x1aa8('0x17')]=this[_0x1aa8('0x12')]-this[_0x1aa8('0x13')];this[_0x1aa8('0x17')]=this[_0x1aa8('0x17')]>=0x0?this[_0x1aa8('0x17')]:0x0;var _0x4d32e9={'id':this['id'],'available':this['available'],'loggedIn':this[_0x1aa8('0x12')],'name':this[_0x1aa8('0x5')],'paused':this[_0x1aa8('0x13')],'waiting':this[_0x1aa8('0xa')]};var _0x12ede5=md5(JSON['stringify'](_0x4d32e9));if(this[_0x1aa8('0xb')]!==_0x12ede5){this[_0x1aa8('0xb')]=_0x12ede5;io['to'](util['format'](_0x1aa8('0x18'),_0x4d32e9[_0x1aa8('0x5')]))[_0x1aa8('0x19')](_0x1aa8('0x1a'),_0x4d32e9);}};module[_0x1aa8('0x1b')]=WhatsappQueue;
\ No newline at end of file
+var _0x9a7f=['name','timeout','strategy','beepall','Agents','mapAgentsId','updateRealtime','prototype','map','_rr','loggedIn','paused','length','online','whatsappPause','available','waiting','stringify','format','whatsapp:queue:%s','emit','exports','lodash','md5','util','../../../config/environment','redis','localhost','socket.io-emitter'];(function(_0x29effa,_0x1dc915){var _0x2a8608=function(_0x5bb6f5){while(--_0x5bb6f5){_0x29effa['push'](_0x29effa['shift']());}};_0x2a8608(++_0x1dc915);}(_0x9a7f,0x6d));var _0xf9a7=function(_0x57bc6b,_0x251022){_0x57bc6b=_0x57bc6b-0x0;var _0x55a41f=_0x9a7f[_0x57bc6b];return _0x55a41f;};'use strict';var _=require(_0xf9a7('0x0'));var md5=require(_0xf9a7('0x1'));var util=require(_0xf9a7('0x2'));var Redis=require('ioredis');var config=require(_0xf9a7('0x3'));config[_0xf9a7('0x4')]=_['defaults'](config[_0xf9a7('0x4')],{'host':_0xf9a7('0x5'),'port':0x18eb});var io=require(_0xf9a7('0x6'))(new Redis(config[_0xf9a7('0x4')]));function WhatsappQueue(_0x23e346){this['id']=_0x23e346['id']||0x0;this['name']=_0x23e346[_0xf9a7('0x7')]||'';this[_0xf9a7('0x8')]=_0x23e346[_0xf9a7('0x8')]||0xa;this[_0xf9a7('0x9')]=_0x23e346[_0xf9a7('0x9')]||_0xf9a7('0xa');this[_0xf9a7('0xb')]=_0x23e346['Agents'];this[_0xf9a7('0xc')]={};this['waiting']=0x0;this['md5']='';this['updateRouting']();this[_0xf9a7('0xd')]();}WhatsappQueue[_0xf9a7('0xe')]['updateRouting']=function(){var _0x4f7862=this['mapAgentsId']['_rr'];this[_0xf9a7('0xc')]=_[_0xf9a7('0xf')](this[_0xf9a7('0xb')],'id');this[_0xf9a7('0xc')][_0xf9a7('0x10')]=_0x4f7862;};WhatsappQueue[_0xf9a7('0xe')][_0xf9a7('0xd')]=function(){this[_0xf9a7('0x11')]=0x0;this[_0xf9a7('0x12')]=0x0;for(var _0x10b0e7=0x0;_0x10b0e7<this['Agents'][_0xf9a7('0x13')];_0x10b0e7+=0x1){if(this[_0xf9a7('0xb')][_0x10b0e7][_0xf9a7('0x14')]){this[_0xf9a7('0x11')]+=0x1;}if(this['Agents'][_0x10b0e7][_0xf9a7('0x15')]){this['paused']+=0x1;}}this[_0xf9a7('0x16')]=this[_0xf9a7('0x11')]-this[_0xf9a7('0x12')];this[_0xf9a7('0x16')]=this['available']>=0x0?this['available']:0x0;var _0x54f53d={'id':this['id'],'available':this[_0xf9a7('0x16')],'loggedIn':this['loggedIn'],'name':this[_0xf9a7('0x7')],'paused':this[_0xf9a7('0x12')],'waiting':this[_0xf9a7('0x17')]};var _0x29b4a1=md5(JSON[_0xf9a7('0x18')](_0x54f53d));if(this[_0xf9a7('0x1')]!==_0x29b4a1){this[_0xf9a7('0x1')]=_0x29b4a1;io['to'](util[_0xf9a7('0x19')](_0xf9a7('0x1a'),_0x54f53d['name']))[_0xf9a7('0x1b')]('whatsapp_queue:save',_0x54f53d);}};module[_0xf9a7('0x1c')]=WhatsappQueue;
\ No newline at end of file
index 8f9d975..e2a2052 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+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(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
index f8e2b44..d3d1e48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4c8=['../client','Request','UpdateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction'];(function(_0x3d04a6,_0x408e1f){var _0x2aaef5=function(_0x29794b){while(--_0x29794b){_0x3d04a6['push'](_0x3d04a6['shift']());}};_0x2aaef5(++_0x408e1f);}(_0xc4c8,0x1ce));var _0x8c4c=function(_0x143313,_0x322556){_0x143313=_0x143313-0x0;var _0x20982a=_0xc4c8[_0x143313];return _0x20982a;};'use strict';var client=require(_0x8c4c('0x0'));exports['update']=function(_0x4be941,_0x174ac4){return client[_0x8c4c('0x1')](_0x8c4c('0x2'),{'body':_0x174ac4,'options':{'where':{'id':_0x4be941}},'log':'updateChatInteraction'});};exports[_0x8c4c('0x3')]=function(_0x44e08e,_0x48c7b6){return client[_0x8c4c('0x1')](_0x8c4c('0x4'),{'body':_0x48c7b6,'options':{'where':{'id':_0x44e08e}},'log':_0x8c4c('0x5')});};
\ No newline at end of file
+var _0x3431=['updateChatInteraction','AddTagsToChatInteraction','addTagsToChatInteraction','Request'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x3431,0x153));var _0x1343=function(_0x4b5813,_0x5769de){_0x4b5813=_0x4b5813-0x0;var _0x423465=_0x3431[_0x4b5813];return _0x423465;};'use strict';var client=require('../client');exports['update']=function(_0x1ee627,_0x1ac110){return client[_0x1343('0x0')]('UpdateChatInteraction',{'body':_0x1ac110,'options':{'where':{'id':_0x1ee627}},'log':_0x1343('0x1')});};exports['addTags']=function(_0x21cefc,_0x508d97){return client[_0x1343('0x0')](_0x1343('0x2'),{'body':_0x508d97,'options':{'where':{'id':_0x21cefc}},'log':_0x1343('0x3')});};
\ No newline at end of file
index f016d5f..7f5a4ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5df0=['CreateChatMessage','createChatMessage','create','Request'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x5df0,0xee));var _0x05df=function(_0x30eda9,_0x8daee1){_0x30eda9=_0x30eda9-0x0;var _0x28a151=_0x5df0[_0x30eda9];return _0x28a151;};'use strict';var client=require('../client');exports[_0x05df('0x0')]=function(_0x12f12d){return client[_0x05df('0x1')](_0x05df('0x2'),{'body':_0x12f12d,'log':_0x05df('0x3')});};
\ No newline at end of file
+var _0xd552=['createChatMessage','../client','create','CreateChatMessage'];(function(_0x308220,_0x222c5a){var _0x270ada=function(_0x1f8ef6){while(--_0x1f8ef6){_0x308220['push'](_0x308220['shift']());}};_0x270ada(++_0x222c5a);}(_0xd552,0x131));var _0x2d55=function(_0x36d4c1,_0x2bb1f7){_0x36d4c1=_0x36d4c1-0x0;var _0x3a90c0=_0xd552[_0x36d4c1];return _0x3a90c0;};'use strict';var client=require(_0x2d55('0x0'));exports[_0x2d55('0x1')]=function(_0x28f516){return client['Request'](_0x2d55('0x2'),{'body':_0x28f516,'log':_0x2d55('0x3')});};
\ No newline at end of file
index ef6418d..91e9678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37c5=['timeout','strategy','User','Agents','online','getChatQueues','Request','GetChatQueue','name'];(function(_0x3f0a4f,_0x506dfc){var _0x1d85ff=function(_0x49255a){while(--_0x49255a){_0x3f0a4f['push'](_0x3f0a4f['shift']());}};_0x1d85ff(++_0x506dfc);}(_0x37c5,0xa7));var _0x537c=function(_0x1b6656,_0x3ed2d3){_0x1b6656=_0x1b6656-0x0;var _0x5b9e1f=_0x37c5[_0x1b6656];return _0x5b9e1f;};'use strict';var client=require('../client');exports[_0x537c('0x0')]=function(){return function(){return client[_0x537c('0x1')](_0x537c('0x2'),{'options':{'raw':![],'attributes':['id',_0x537c('0x3'),_0x537c('0x4'),_0x537c('0x5')],'include':[{'model':_0x537c('0x6'),'as':_0x537c('0x7'),'attributes':['id',_0x537c('0x3'),_0x537c('0x8'),'chatPause']}]},'log':_0x537c('0x0')});};};
\ No newline at end of file
+var _0xed1f=['name','timeout','strategy','User','Agents','online','chatPause','../client','getChatQueues','Request','GetChatQueue'];(function(_0x2ea41,_0x4f807b){var _0x8ee23b=function(_0x2e5fd8){while(--_0x2e5fd8){_0x2ea41['push'](_0x2ea41['shift']());}};_0x8ee23b(++_0x4f807b);}(_0xed1f,0x6a));var _0xfed1=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0xed1f[_0x35885a];return _0xe86249;};'use strict';var client=require(_0xfed1('0x0'));exports[_0xfed1('0x1')]=function(){return function(){return client[_0xfed1('0x2')](_0xfed1('0x3'),{'options':{'raw':![],'attributes':['id',_0xfed1('0x4'),_0xfed1('0x5'),_0xfed1('0x6')],'include':[{'model':_0xfed1('0x7'),'as':_0xfed1('0x8'),'attributes':['id',_0xfed1('0x4'),_0xfed1('0x9'),_0xfed1('0xa')]}]},'log':_0xfed1('0x1')});};};
\ No newline at end of file
index 567a09d..723e3b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80ce=['update','UpdateChatQueueReport','Request','CreateChatQueueReport'];(function(_0x3a7f8b,_0x7fe06c){var _0x34f066=function(_0x38f2a7){while(--_0x38f2a7){_0x3a7f8b['push'](_0x3a7f8b['shift']());}};_0x34f066(++_0x7fe06c);}(_0x80ce,0xae));var _0xe80c=function(_0x2ddae0,_0x3eca53){_0x2ddae0=_0x2ddae0-0x0;var _0x37a343=_0x80ce[_0x2ddae0];return _0x37a343;};'use strict';var client=require('../client');exports['create']=function(_0x53cd80){return client[_0xe80c('0x0')](_0xe80c('0x1'),{'body':_0x53cd80,'log':'CreateChatQueueReport'});};exports[_0xe80c('0x2')]=function(_0x3efe49,_0x4372b2){return client['Request']('UpdateChatQueueReport',{'body':_0x4372b2,'options':{'where':{'uniqueid':_0x3efe49},'order':[['id','DESC']],'limit':0x1},'log':_0xe80c('0x3')});};
\ No newline at end of file
+var _0x644a=['DESC','../client','create','Request','CreateChatQueueReport','update','UpdateChatQueueReport'];(function(_0x244026,_0x5e8ee6){var _0x1f2e8b=function(_0x5f4828){while(--_0x5f4828){_0x244026['push'](_0x244026['shift']());}};_0x1f2e8b(++_0x5e8ee6);}(_0x644a,0xfd));var _0xa644=function(_0x84dbc9,_0x804160){_0x84dbc9=_0x84dbc9-0x0;var _0x365eea=_0x644a[_0x84dbc9];return _0x365eea;};'use strict';var client=require(_0xa644('0x0'));exports[_0xa644('0x1')]=function(_0x32ada1){return client[_0xa644('0x2')](_0xa644('0x3'),{'body':_0x32ada1,'log':'CreateChatQueueReport'});};exports[_0xa644('0x4')]=function(_0x704008,_0x526de6){return client['Request'](_0xa644('0x5'),{'body':_0x526de6,'options':{'where':{'uniqueid':_0x704008},'order':[['id',_0xa644('0x6')]],'limit':0x1},'log':_0xa644('0x5')});};
\ No newline at end of file
index 91dd434..0ca0857 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(_0x386ba7,_0x4e2f76){var _0x2bb844=function(_0x262ec5){while(--_0x262ec5){_0x386ba7['push'](_0x386ba7['shift']());}};_0x2bb844(++_0x4e2f76);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
+var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x4c321c,_0x3e9da0){var _0x25accb=function(_0x21bf7a){while(--_0x21bf7a){_0x4c321c['push'](_0x4c321c['shift']());}};_0x25accb(++_0x3e9da0);}(_0x7a54,0x106));var _0x47a5=function(_0x2f00ef,_0x4663e5){_0x2f00ef=_0x2f00ef-0x0;var _0x3e7355=_0x7a54[_0x2f00ef];return _0x3e7355;};'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 780a733..a914bde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe17=['createFaxMessage','../client','create','Request','CreateFaxMessage'];(function(_0x58c15e,_0x3a0e7a){var _0x24cf82=function(_0x34ed91){while(--_0x34ed91){_0x58c15e['push'](_0x58c15e['shift']());}};_0x24cf82(++_0x3a0e7a);}(_0xfe17,0xab));var _0x7fe1=function(_0x747151,_0x15f235){_0x747151=_0x747151-0x0;var _0x32ae25=_0xfe17[_0x747151];return _0x32ae25;};'use strict';var client=require(_0x7fe1('0x0'));exports[_0x7fe1('0x1')]=function(_0x34fa79){return client[_0x7fe1('0x2')](_0x7fe1('0x3'),{'body':_0x34fa79,'log':_0x7fe1('0x4')});};
\ No newline at end of file
+var _0xabbc=['CreateFaxMessage','createFaxMessage','../client','create','Request'];(function(_0x3472a8,_0x41e15a){var _0x43316f=function(_0x48ac98){while(--_0x48ac98){_0x3472a8['push'](_0x3472a8['shift']());}};_0x43316f(++_0x41e15a);}(_0xabbc,0x1c9));var _0xcabb=function(_0x270d0d,_0x3fe5af){_0x270d0d=_0x270d0d-0x0;var _0x1e000b=_0xabbc[_0x270d0d];return _0x1e000b;};'use strict';var client=require(_0xcabb('0x0'));exports[_0xcabb('0x1')]=function(_0x33dff5){return client[_0xcabb('0x2')](_0xcabb('0x3'),{'body':_0x33dff5,'log':_0xcabb('0x4')});};
\ No newline at end of file
index 6bf45d0..1b6f12f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16e7=['Agents','faxPause','../client','getFaxQueues','Request','GetFaxQueue','name','strategy','User'];(function(_0x521f56,_0x154a92){var _0x3704c8=function(_0x1e25fb){while(--_0x1e25fb){_0x521f56['push'](_0x521f56['shift']());}};_0x3704c8(++_0x154a92);}(_0x16e7,0xda));var _0x716e=function(_0xb6b026,_0x4d9cfb){_0xb6b026=_0xb6b026-0x0;var _0xb6c910=_0x16e7[_0xb6b026];return _0xb6c910;};'use strict';var client=require(_0x716e('0x0'));exports[_0x716e('0x1')]=function(){return function(){return client[_0x716e('0x2')](_0x716e('0x3'),{'options':{'raw':![],'attributes':['id',_0x716e('0x4'),'timeout',_0x716e('0x5')],'include':[{'model':_0x716e('0x6'),'as':_0x716e('0x7'),'attributes':['id',_0x716e('0x4'),'online',_0x716e('0x8')]}]},'log':'getFaxQueues'});};};
\ No newline at end of file
+var _0x3fc5=['../client','getFaxQueues','Request','GetFaxQueue','timeout','strategy','User','Agents','name','faxPause'];(function(_0x1168a1,_0xa0d8c9){var _0xcc5ad8=function(_0x217dc3){while(--_0x217dc3){_0x1168a1['push'](_0x1168a1['shift']());}};_0xcc5ad8(++_0xa0d8c9);}(_0x3fc5,0x118));var _0x53fc=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x3fc5[_0x4cf98e];return _0x1623ac;};'use strict';var client=require(_0x53fc('0x0'));exports[_0x53fc('0x1')]=function(){return function(){return client[_0x53fc('0x2')](_0x53fc('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x53fc('0x4'),_0x53fc('0x5')],'include':[{'model':_0x53fc('0x6'),'as':_0x53fc('0x7'),'attributes':['id',_0x53fc('0x8'),'online',_0x53fc('0x9')]}]},'log':_0x53fc('0x1')});};};
\ No newline at end of file
index db20a47..9628dbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0503=['Request','CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','create'];(function(_0xd5d77d,_0x63b5e2){var _0xdee6aa=function(_0x150e7f){while(--_0x150e7f){_0xd5d77d['push'](_0xd5d77d['shift']());}};_0xdee6aa(++_0x63b5e2);}(_0x0503,0xd7));var _0x3050=function(_0xb24a3e,_0x4a3594){_0xb24a3e=_0xb24a3e-0x0;var _0x4038d7=_0x0503[_0xb24a3e];return _0x4038d7;};'use strict';var client=require('../client');exports[_0x3050('0x0')]=function(_0x24cd91){return client[_0x3050('0x1')](_0x3050('0x2'),{'body':_0x24cd91,'log':_0x3050('0x2')});};exports[_0x3050('0x3')]=function(_0x433117,_0x2473b7){return client['Request'](_0x3050('0x4'),{'body':_0x2473b7,'options':{'where':{'uniqueid':_0x433117},'order':[['id',_0x3050('0x5')]],'limit':0x1},'log':_0x3050('0x4')});};
\ No newline at end of file
+var _0xcf66=['create','Request','CreateFaxQueueReport','update','UpdateFaxQueueReport','../client'];(function(_0x59c765,_0x1b14cb){var _0x731b6d=function(_0x358491){while(--_0x358491){_0x59c765['push'](_0x59c765['shift']());}};_0x731b6d(++_0x1b14cb);}(_0xcf66,0x185));var _0x6cf6=function(_0xf04d38,_0x4597a9){_0xf04d38=_0xf04d38-0x0;var _0x1c1910=_0xcf66[_0xf04d38];return _0x1c1910;};'use strict';var client=require(_0x6cf6('0x0'));exports[_0x6cf6('0x1')]=function(_0x277ad0){return client[_0x6cf6('0x2')](_0x6cf6('0x3'),{'body':_0x277ad0,'log':_0x6cf6('0x3')});};exports[_0x6cf6('0x4')]=function(_0x33e5e7,_0x139b7c){return client['Request'](_0x6cf6('0x5'),{'body':_0x139b7c,'options':{'where':{'uniqueid':_0x33e5e7},'order':[['id','DESC']],'limit':0x1},'log':_0x6cf6('0x5')});};
\ No newline at end of file
index 90c0b41..985523e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96a2=['GetInterval','name','../client','getIntervals','Request'];(function(_0x118864,_0x1d4bbd){var _0x4406d4=function(_0x1ef1fa){while(--_0x1ef1fa){_0x118864['push'](_0x118864['shift']());}};_0x4406d4(++_0x1d4bbd);}(_0x96a2,0x1d8));var _0x296a=function(_0x472ace,_0x5ec9c6){_0x472ace=_0x472ace-0x0;var _0x9c63f9=_0x96a2[_0x472ace];return _0x9c63f9;};'use strict';var client=require(_0x296a('0x0'));exports[_0x296a('0x1')]=function(){return function(){return client[_0x296a('0x2')](_0x296a('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x296a('0x4')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x296a('0x4'),'interval']}]},'log':'getIntervals'});};};
\ No newline at end of file
+var _0xa650=['getIntervals','../client','GetInterval','Intervals','name'];(function(_0x4207f4,_0x1f778b){var _0x29a621=function(_0xa6f5b7){while(--_0xa6f5b7){_0x4207f4['push'](_0x4207f4['shift']());}};_0x29a621(++_0x1f778b);}(_0xa650,0x100));var _0x0a65=function(_0x31685a,_0x43bb17){_0x31685a=_0x31685a-0x0;var _0x219883=_0xa650[_0x31685a];return _0x219883;};'use strict';var client=require(_0x0a65('0x0'));exports['getIntervals']=function(){return function(){return client['Request'](_0x0a65('0x1'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':'Interval','as':_0x0a65('0x2'),'attributes':['id',_0x0a65('0x3'),'interval']}]},'log':_0x0a65('0x4')});};};
\ No newline at end of file
index 69e58e1..fd3752c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77d4=['update','UpdateMailInteraction','updateMailInteraction','Request','AddTagsToMailInteraction','addTagsToChatInteraction'];(function(_0x56984d,_0x17643d){var _0x17909f=function(_0x2efac0){while(--_0x2efac0){_0x56984d['push'](_0x56984d['shift']());}};_0x17909f(++_0x17643d);}(_0x77d4,0x108));var _0x477d=function(_0x2f0553,_0x74517c){_0x2f0553=_0x2f0553-0x0;var _0x34c4a1=_0x77d4[_0x2f0553];return _0x34c4a1;};'use strict';var client=require('../client');exports[_0x477d('0x0')]=function(_0x49b615,_0x18c0fe){return client['Request'](_0x477d('0x1'),{'body':_0x18c0fe,'options':{'where':{'id':_0x49b615}},'log':_0x477d('0x2')});};exports['addTags']=function(_0x53e1b8,_0x16213f){return client[_0x477d('0x3')](_0x477d('0x4'),{'body':_0x16213f,'options':{'where':{'id':_0x53e1b8}},'log':_0x477d('0x5')});};
\ No newline at end of file
+var _0x3a6d=['addTags','AddTagsToMailInteraction','addTagsToChatInteraction','../client','update','Request','UpdateMailInteraction','updateMailInteraction'];(function(_0x31dde9,_0x12e816){var _0x1fbf2d=function(_0x1d1bf6){while(--_0x1d1bf6){_0x31dde9['push'](_0x31dde9['shift']());}};_0x1fbf2d(++_0x12e816);}(_0x3a6d,0x143));var _0xd3a6=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x3a6d[_0x4b369d];return _0x571a98;};'use strict';var client=require(_0xd3a6('0x0'));exports[_0xd3a6('0x1')]=function(_0x5cb93b,_0x389f73){return client[_0xd3a6('0x2')](_0xd3a6('0x3'),{'body':_0x389f73,'options':{'where':{'id':_0x5cb93b}},'log':_0xd3a6('0x4')});};exports[_0xd3a6('0x5')]=function(_0x585473,_0x1cb966){return client[_0xd3a6('0x2')](_0xd3a6('0x6'),{'body':_0x1cb966,'options':{'where':{'id':_0x585473}},'log':_0xd3a6('0x7')});};
\ No newline at end of file
index c781acd..9116bbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x261b=['../client','CreateMailMessage','createMailMessage'];(function(_0x8ca29c,_0x52b454){var _0x256f0b=function(_0x377c92){while(--_0x377c92){_0x8ca29c['push'](_0x8ca29c['shift']());}};_0x256f0b(++_0x52b454);}(_0x261b,0x7e));var _0xb261=function(_0x2e556b,_0x3ae877){_0x2e556b=_0x2e556b-0x0;var _0xdec28d=_0x261b[_0x2e556b];return _0xdec28d;};'use strict';var client=require(_0xb261('0x0'));exports['create']=function(_0x10aef6){return client['Request'](_0xb261('0x1'),{'body':_0x10aef6,'log':_0xb261('0x2')});};
\ No newline at end of file
+var _0x5216=['createMailMessage','../client','create','Request','CreateMailMessage'];(function(_0x2366b2,_0x1e73d7){var _0x60567a=function(_0x5c5a6e){while(--_0x5c5a6e){_0x2366b2['push'](_0x2366b2['shift']());}};_0x60567a(++_0x1e73d7);}(_0x5216,0xec));var _0x6521=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x5216[_0x3ab51d];return _0x29a04e;};'use strict';var client=require(_0x6521('0x0'));exports[_0x6521('0x1')]=function(_0x3fd26e){return client[_0x6521('0x2')](_0x6521('0x3'),{'body':_0x3fd26e,'log':_0x6521('0x4')});};
\ No newline at end of file
index f7bafd9..1d8f29f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1862=['../client','getMailQueues','Request','GetMailQueue','name','timeout','strategy','Agents','online','mailPause'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x1862,0x12c));var _0x2186=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1862[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x2186('0x0'));exports[_0x2186('0x1')]=function(){return function(){return client[_0x2186('0x2')](_0x2186('0x3'),{'options':{'raw':![],'attributes':['id',_0x2186('0x4'),_0x2186('0x5'),_0x2186('0x6')],'include':[{'model':'User','as':_0x2186('0x7'),'attributes':['id',_0x2186('0x4'),_0x2186('0x8'),_0x2186('0x9')]}]},'log':_0x2186('0x1')});};};
\ No newline at end of file
+var _0xc5c8=['../client','getMailQueues','Request','name','User','Agents','online','mailPause'];(function(_0x330830,_0x2053c4){var _0x9b83e7=function(_0x3de232){while(--_0x3de232){_0x330830['push'](_0x330830['shift']());}};_0x9b83e7(++_0x2053c4);}(_0xc5c8,0x118));var _0x8c5c=function(_0x36833c,_0x54e114){_0x36833c=_0x36833c-0x0;var _0xf90dbf=_0xc5c8[_0x36833c];return _0xf90dbf;};'use strict';var client=require(_0x8c5c('0x0'));exports[_0x8c5c('0x1')]=function(){return function(){return client[_0x8c5c('0x2')]('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0x8c5c('0x3'),'timeout','strategy'],'include':[{'model':_0x8c5c('0x4'),'as':_0x8c5c('0x5'),'attributes':['id','name',_0x8c5c('0x6'),_0x8c5c('0x7')]}]},'log':_0x8c5c('0x1')});};};
\ No newline at end of file
index 747c3cf..e389668 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e22=['update','Request','DESC','../client','CreateMailQueueReport'];(function(_0x26bbf6,_0x9557fa){var _0x422daa=function(_0x572010){while(--_0x572010){_0x26bbf6['push'](_0x26bbf6['shift']());}};_0x422daa(++_0x9557fa);}(_0x9e22,0x157));var _0x29e2=function(_0x215e65,_0x183f97){_0x215e65=_0x215e65-0x0;var _0xa85842=_0x9e22[_0x215e65];return _0xa85842;};'use strict';var client=require(_0x29e2('0x0'));exports['create']=function(_0x21f2b5){return client['Request'](_0x29e2('0x1'),{'body':_0x21f2b5,'log':_0x29e2('0x1')});};exports[_0x29e2('0x2')]=function(_0x3f5520,_0xe998dc){return client[_0x29e2('0x3')]('UpdateMailQueueReport',{'body':_0xe998dc,'options':{'where':{'uniqueid':_0x3f5520},'order':[['id',_0x29e2('0x4')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
+var _0xe3f1=['DESC','../client','Request','CreateMailQueueReport','update','UpdateMailQueueReport'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xe3f1,0xd3));var _0x1e3f=function(_0x34ac2a,_0xf1f31d){_0x34ac2a=_0x34ac2a-0x0;var _0x3d883c=_0xe3f1[_0x34ac2a];return _0x3d883c;};'use strict';var client=require(_0x1e3f('0x0'));exports['create']=function(_0x48aa63){return client[_0x1e3f('0x1')](_0x1e3f('0x2'),{'body':_0x48aa63,'log':_0x1e3f('0x2')});};exports[_0x1e3f('0x3')]=function(_0x160dda,_0x478f9f){return client[_0x1e3f('0x1')](_0x1e3f('0x4'),{'body':_0x478f9f,'options':{'where':{'uniqueid':_0x160dda},'order':[['id',_0x1e3f('0x5')]],'limit':0x1},'log':_0x1e3f('0x4')});};
\ No newline at end of file
index c502fa0..f248289 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55be=['UpdateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update','Request'];(function(_0x442472,_0x1815d0){var _0x399214=function(_0x3a53e3){while(--_0x3a53e3){_0x442472['push'](_0x442472['shift']());}};_0x399214(++_0x1815d0);}(_0x55be,0x1d9));var _0xe55b=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x55be[_0x4b055c];return _0x4b62bb;};'use strict';var client=require(_0xe55b('0x0'));exports[_0xe55b('0x1')]=function(_0x2a1829,_0x584688){return client[_0xe55b('0x2')](_0xe55b('0x3'),{'body':_0x584688,'options':{'where':{'id':_0x2a1829}},'log':'updateOpenchannelInteraction'});};exports[_0xe55b('0x4')]=function(_0xed8c71,_0x1cd983){return client['Request'](_0xe55b('0x5'),{'body':_0x1cd983,'options':{'where':{'id':_0xed8c71}},'log':_0xe55b('0x6')});};
\ No newline at end of file
+var _0x2f3d=['updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update','Request'];(function(_0x244fc3,_0x1619f4){var _0xfd831e=function(_0x323e09){while(--_0x323e09){_0x244fc3['push'](_0x244fc3['shift']());}};_0xfd831e(++_0x1619f4);}(_0x2f3d,0x154));var _0xd2f3=function(_0x1607bb,_0xcc095c){_0x1607bb=_0x1607bb-0x0;var _0x532df5=_0x2f3d[_0x1607bb];return _0x532df5;};'use strict';var client=require(_0xd2f3('0x0'));exports[_0xd2f3('0x1')]=function(_0x1ce2a8,_0x3856c0){return client[_0xd2f3('0x2')]('UpdateOpenchannelInteraction',{'body':_0x3856c0,'options':{'where':{'id':_0x1ce2a8}},'log':_0xd2f3('0x3')});};exports[_0xd2f3('0x4')]=function(_0x814d59,_0x4d46e5){return client[_0xd2f3('0x2')](_0xd2f3('0x5'),{'body':_0x4d46e5,'options':{'where':{'id':_0x814d59}},'log':_0xd2f3('0x6')});};
\ No newline at end of file
index b75fde9..57e7240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb507=['../client','Request','CreateOpenchannelMessage','createOpenchannelMessage'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0xb507,0x98));var _0x7b50=function(_0x561f76,_0x3c0bef){_0x561f76=_0x561f76-0x0;var _0x48b8e4=_0xb507[_0x561f76];return _0x48b8e4;};'use strict';var client=require(_0x7b50('0x0'));exports['create']=function(_0x3f0d0c){return client[_0x7b50('0x1')](_0x7b50('0x2'),{'body':_0x3f0d0c,'log':_0x7b50('0x3')});};
\ No newline at end of file
+var _0xb022=['Request','../client','create'];(function(_0x2c99c5,_0xf26058){var _0x5ea5ca=function(_0x3464e1){while(--_0x3464e1){_0x2c99c5['push'](_0x2c99c5['shift']());}};_0x5ea5ca(++_0xf26058);}(_0xb022,0xa9));var _0x2b02=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0xb022[_0x1d24eb];return _0x1dc576;};'use strict';var client=require(_0x2b02('0x0'));exports[_0x2b02('0x1')]=function(_0x1cb49a){return client[_0x2b02('0x2')]('CreateOpenchannelMessage',{'body':_0x1cb49a,'log':'createOpenchannelMessage'});};
\ No newline at end of file
index 4d80622..5cf1210 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32d0=['timeout','strategy','User','Agents','online','openchannelPause','../client','getOpenchannelQueues','Request','name'];(function(_0x45e98e,_0x169b60){var _0x374dba=function(_0x597612){while(--_0x597612){_0x45e98e['push'](_0x45e98e['shift']());}};_0x374dba(++_0x169b60);}(_0x32d0,0xa6));var _0x032d=function(_0x2cd169,_0x1cc288){_0x2cd169=_0x2cd169-0x0;var _0x121eb5=_0x32d0[_0x2cd169];return _0x121eb5;};'use strict';var client=require(_0x032d('0x0'));exports[_0x032d('0x1')]=function(){return function(){return client[_0x032d('0x2')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0x032d('0x3'),_0x032d('0x4'),_0x032d('0x5')],'include':[{'model':_0x032d('0x6'),'as':_0x032d('0x7'),'attributes':['id','name',_0x032d('0x8'),_0x032d('0x9')]}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
+var _0x01d3=['Agents','online','getOpenchannelQueues','Request','GetOpenchannelQueue','name','strategy','User'];(function(_0x3a73bc,_0x550aef){var _0x32891b=function(_0x20b4cb){while(--_0x20b4cb){_0x3a73bc['push'](_0x3a73bc['shift']());}};_0x32891b(++_0x550aef);}(_0x01d3,0xdb));var _0x301d=function(_0x61d891,_0x8478d6){_0x61d891=_0x61d891-0x0;var _0x1c3b3b=_0x01d3[_0x61d891];return _0x1c3b3b;};'use strict';var client=require('../client');exports['getOpenchannelQueues']=function(){return function(){return client[_0x301d('0x0')](_0x301d('0x1'),{'options':{'raw':![],'attributes':['id',_0x301d('0x2'),'timeout',_0x301d('0x3')],'include':[{'model':_0x301d('0x4'),'as':_0x301d('0x5'),'attributes':['id',_0x301d('0x2'),_0x301d('0x6'),'openchannelPause']}]},'log':_0x301d('0x7')});};};
\ No newline at end of file
index 2e7207c..b2d5b4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9822=['Request','UpdateOpenchannelQueueReport','../client','create','update'];(function(_0x1de846,_0x3ad6f6){var _0x3de06=function(_0x3298c3){while(--_0x3298c3){_0x1de846['push'](_0x1de846['shift']());}};_0x3de06(++_0x3ad6f6);}(_0x9822,0x93));var _0x2982=function(_0x1b4945,_0xa2f989){_0x1b4945=_0x1b4945-0x0;var _0x32a2c7=_0x9822[_0x1b4945];return _0x32a2c7;};'use strict';var client=require(_0x2982('0x0'));exports[_0x2982('0x1')]=function(_0x361caf){return client['Request']('CreateOpenchannelQueueReport',{'body':_0x361caf,'log':'CreateOpenchannelQueueReport'});};exports[_0x2982('0x2')]=function(_0x319fbd,_0x3c99ee){return client[_0x2982('0x3')](_0x2982('0x4'),{'body':_0x3c99ee,'options':{'where':{'uniqueid':_0x319fbd},'order':[['id','DESC']],'limit':0x1},'log':_0x2982('0x4')});};
\ No newline at end of file
+var _0xd61e=['create','Request','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport','DESC','../client'];(function(_0x26d717,_0x48ec81){var _0x4cac06=function(_0x25ceb6){while(--_0x25ceb6){_0x26d717['push'](_0x26d717['shift']());}};_0x4cac06(++_0x48ec81);}(_0xd61e,0x13d));var _0xed61=function(_0x239fc2,_0x1b6896){_0x239fc2=_0x239fc2-0x0;var _0xe9ee42=_0xd61e[_0x239fc2];return _0xe9ee42;};'use strict';var client=require(_0xed61('0x0'));exports[_0xed61('0x1')]=function(_0xf991b0){return client[_0xed61('0x2')](_0xed61('0x3'),{'body':_0xf991b0,'log':_0xed61('0x3')});};exports['update']=function(_0x123e01,_0x950da0){return client[_0xed61('0x2')](_0xed61('0x4'),{'body':_0x950da0,'options':{'where':{'uniqueid':_0x123e01},'order':[['id',_0xed61('0x5')]],'limit':0x1},'log':_0xed61('0x4')});};
\ No newline at end of file
index 6018888..eadcd4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['../client','Request','updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction'];(function(_0x2ab76b,_0x176579){var _0x201126=function(_0x11d8c8){while(--_0x11d8c8){_0x2ab76b['push'](_0x2ab76b['shift']());}};_0x201126(++_0x176579);}(_0x24ca,0x1bc));var _0xa24c=function(_0x151721,_0x20d5bc){_0x151721=_0x151721-0x0;var _0x2deaa7=_0x24ca[_0x151721];return _0x2deaa7;};'use strict';var client=require(_0xa24c('0x0'));exports['update']=function(_0x2cf7df,_0x4ebab4){return client[_0xa24c('0x1')]('UpdateSmsInteraction',{'body':_0x4ebab4,'options':{'where':{'id':_0x2cf7df}},'log':_0xa24c('0x2')});};exports[_0xa24c('0x3')]=function(_0x195e60,_0x28aa2f){return client[_0xa24c('0x1')](_0xa24c('0x4'),{'body':_0x28aa2f,'options':{'where':{'id':_0x195e60}},'log':_0xa24c('0x5')});};
\ No newline at end of file
+var _0xbeea=['AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','Request','updateSmsInteraction'];(function(_0x3b83f3,_0x51459c){var _0x2f8fed=function(_0x34443c){while(--_0x34443c){_0x3b83f3['push'](_0x3b83f3['shift']());}};_0x2f8fed(++_0x51459c);}(_0xbeea,0xb1));var _0xabee=function(_0x4a14a3,_0x44ee62){_0x4a14a3=_0x4a14a3-0x0;var _0x611b22=_0xbeea[_0x4a14a3];return _0x611b22;};'use strict';var client=require(_0xabee('0x0'));exports['update']=function(_0x144824,_0x3b377b){return client[_0xabee('0x1')]('UpdateSmsInteraction',{'body':_0x3b377b,'options':{'where':{'id':_0x144824}},'log':_0xabee('0x2')});};exports['addTags']=function(_0x58afa7,_0x33571e){return client[_0xabee('0x1')](_0xabee('0x3'),{'body':_0x33571e,'options':{'where':{'id':_0x58afa7}},'log':_0xabee('0x4')});};
\ No newline at end of file
index ca1e267..66af421 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4386=['create','Request','../client'];(function(_0x406362,_0x21fb1c){var _0x5b9c92=function(_0x1b2326){while(--_0x1b2326){_0x406362['push'](_0x406362['shift']());}};_0x5b9c92(++_0x21fb1c);}(_0x4386,0x176));var _0x6438=function(_0x5293a1,_0x351c64){_0x5293a1=_0x5293a1-0x0;var _0x5085aa=_0x4386[_0x5293a1];return _0x5085aa;};'use strict';var client=require(_0x6438('0x0'));exports[_0x6438('0x1')]=function(_0x5940fa){return client[_0x6438('0x2')]('CreateSmsMessage',{'body':_0x5940fa,'log':'createSmsMessage'});};
\ No newline at end of file
+var _0x3b82=['../client','CreateSmsMessage'];(function(_0x9c89a3,_0x4756db){var _0x53b890=function(_0x106bf7){while(--_0x106bf7){_0x9c89a3['push'](_0x9c89a3['shift']());}};_0x53b890(++_0x4756db);}(_0x3b82,0xa4));var _0x23b8=function(_0x128f18,_0xd7ba38){_0x128f18=_0x128f18-0x0;var _0x28d6fb=_0x3b82[_0x128f18];return _0x28d6fb;};'use strict';var client=require(_0x23b8('0x0'));exports['create']=function(_0x30ecce){return client['Request'](_0x23b8('0x1'),{'body':_0x30ecce,'log':'createSmsMessage'});};
\ No newline at end of file
index e8aa8fb..77162ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['User','Agents','online','../client','getSmsQueues','Request','timeout','strategy'];(function(_0x15602a,_0x913776){var _0x323b61=function(_0x2ff53a){while(--_0x2ff53a){_0x15602a['push'](_0x15602a['shift']());}};_0x323b61(++_0x913776);}(_0x70e0,0x17b));var _0x070e=function(_0x3582d1,_0x2bd3a8){_0x3582d1=_0x3582d1-0x0;var _0x5b7d07=_0x70e0[_0x3582d1];return _0x5b7d07;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(){return function(){return client[_0x070e('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x070e('0x3'),_0x070e('0x4')],'include':[{'model':_0x070e('0x5'),'as':_0x070e('0x6'),'attributes':['id','name',_0x070e('0x7'),'smsPause']}]},'log':_0x070e('0x1')});};};
\ No newline at end of file
+var _0x70e0=['User','Agents','online','../client','getSmsQueues','Request','timeout','strategy'];(function(_0x26cebc,_0x4fbbfa){var _0x18cf95=function(_0x30b48e){while(--_0x30b48e){_0x26cebc['push'](_0x26cebc['shift']());}};_0x18cf95(++_0x4fbbfa);}(_0x70e0,0x17b));var _0x070e=function(_0x221e17,_0x1c598e){_0x221e17=_0x221e17-0x0;var _0x4da551=_0x70e0[_0x221e17];return _0x4da551;};'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 9061875..054ef34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x5b93f8,_0xffefcd){var _0x1430ec=function(_0xee6cc1){while(--_0xee6cc1){_0x5b93f8['push'](_0x5b93f8['shift']());}};_0x1430ec(++_0xffefcd);}(_0x008c,0x188));var _0xc008=function(_0x15035b,_0x3eba0a){_0x15035b=_0x15035b-0x0;var _0x2cc7b1=_0x008c[_0x15035b];return _0x2cc7b1;};'use strict';var client=require(_0xc008('0x0'));exports[_0xc008('0x1')]=function(_0x15aadc){return client[_0xc008('0x2')](_0xc008('0x3'),{'body':_0x15aadc,'log':'CreateSmsQueueReport'});};exports[_0xc008('0x4')]=function(_0x47063f,_0x10b33c){return client[_0xc008('0x2')](_0xc008('0x5'),{'body':_0x10b33c,'options':{'where':{'uniqueid':_0x47063f},'order':[['id',_0xc008('0x6')]],'limit':0x1},'log':_0xc008('0x5')});};
\ No newline at end of file
+var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x3a7a9c,_0x24f7d6){var _0x59156e=function(_0x5bc930){while(--_0x5bc930){_0x3a7a9c['push'](_0x3a7a9c['shift']());}};_0x59156e(++_0x24f7d6);}(_0xedd9,0xfc));var _0x9edd=function(_0x1b9308,_0x4518be){_0x1b9308=_0x1b9308-0x0;var _0x4c2cf5=_0xedd9[_0x1b9308];return _0x4c2cf5;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(_0x2d7989){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'body':_0x2d7989,'log':_0x9edd('0x2')});};exports[_0x9edd('0x3')]=function(_0x3e6d3a,_0x36b53f){return client['Request'](_0x9edd('0x4'),{'body':_0x36b53f,'options':{'where':{'uniqueid':_0x3e6d3a},'order':[['id',_0x9edd('0x5')]],'limit':0x1},'log':_0x9edd('0x4')});};
\ No newline at end of file
index b4c2fe6..99f1cae 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(_0x56a536,_0x51385a){var _0x3bdb9e=function(_0x144677){while(--_0x144677){_0x56a536['push'](_0x56a536['shift']());}};_0x3bdb9e(++_0x51385a);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
+var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0x377344,_0x82cf1){var _0x3af324=function(_0x59ec64){while(--_0x59ec64){_0x377344['push'](_0x377344['shift']());}};_0x3af324(++_0x82cf1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'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 c819ddc..fcc04a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f47=['Request','updateWhatsappInteraction','AddTagsToWhatsappInteraction','update'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x6f47,0xc7));var _0x76f4=function(_0x47a349,_0x4699d9){_0x47a349=_0x47a349-0x0;var _0x18ab75=_0x6f47[_0x47a349];return _0x18ab75;};'use strict';var client=require('../client');exports[_0x76f4('0x0')]=function(_0x94765d,_0x5bc799){return client[_0x76f4('0x1')]('UpdateWhatsappInteraction',{'body':_0x5bc799,'options':{'where':{'id':_0x94765d}},'log':_0x76f4('0x2')});};exports['addTags']=function(_0xe214ad,_0xc5dddc){return client[_0x76f4('0x1')](_0x76f4('0x3'),{'body':_0xc5dddc,'options':{'where':{'id':_0xe214ad}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
+var _0x49c1=['Request','updateWhatsappInteraction','addTags','addTagsToWhatsappInteraction','../client'];(function(_0x3884d4,_0x333c15){var _0x4ec072=function(_0x123d16){while(--_0x123d16){_0x3884d4['push'](_0x3884d4['shift']());}};_0x4ec072(++_0x333c15);}(_0x49c1,0xef));var _0x149c=function(_0x18acf7,_0x30869f){_0x18acf7=_0x18acf7-0x0;var _0x18d617=_0x49c1[_0x18acf7];return _0x18d617;};'use strict';var client=require(_0x149c('0x0'));exports['update']=function(_0x466227,_0x2f0c65){return client[_0x149c('0x1')]('UpdateWhatsappInteraction',{'body':_0x2f0c65,'options':{'where':{'id':_0x466227}},'log':_0x149c('0x2')});};exports[_0x149c('0x3')]=function(_0x4c3294,_0xdb4fdf){return client[_0x149c('0x1')]('AddTagsToWhatsappInteraction',{'body':_0xdb4fdf,'options':{'where':{'id':_0x4c3294}},'log':_0x149c('0x4')});};
\ No newline at end of file
index 24b015e..41d658d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe211=['createWhatsappMessage','Request','CreateWhatsappMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe211,0xf7));var _0x1e21=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe211[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['create']=function(_0x2a70a9){return client[_0x1e21('0x0')](_0x1e21('0x1'),{'body':_0x2a70a9,'log':_0x1e21('0x2')});};
\ No newline at end of file
+var _0x4f71=['CreateWhatsappMessage','../client','create'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x4f71,0x19f));var _0x14f7=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x4f71[_0xc6be3a];return _0x56a310;};'use strict';var client=require(_0x14f7('0x0'));exports[_0x14f7('0x1')]=function(_0x3a595b){return client['Request'](_0x14f7('0x2'),{'body':_0x3a595b,'log':'createWhatsappMessage'});};
\ No newline at end of file
index 25b4126..7b01081 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9ea=['Request','GetWhatsappQueue','name','timeout','strategy','User','Agents','online','whatsappPause','../client','getWhatsappQueues'];(function(_0x59079a,_0x53c526){var _0x6857=function(_0x575e94){while(--_0x575e94){_0x59079a['push'](_0x59079a['shift']());}};_0x6857(++_0x53c526);}(_0xc9ea,0x15e));var _0xac9e=function(_0x25fd7b,_0x523cc3){_0x25fd7b=_0x25fd7b-0x0;var _0x1b624d=_0xc9ea[_0x25fd7b];return _0x1b624d;};'use strict';var client=require(_0xac9e('0x0'));exports[_0xac9e('0x1')]=function(){return function(){return client[_0xac9e('0x2')](_0xac9e('0x3'),{'options':{'raw':![],'attributes':['id',_0xac9e('0x4'),_0xac9e('0x5'),_0xac9e('0x6')],'include':[{'model':_0xac9e('0x7'),'as':_0xac9e('0x8'),'attributes':['id','name',_0xac9e('0x9'),_0xac9e('0xa')]}]},'log':_0xac9e('0x1')});};};
\ No newline at end of file
+var _0xa235=['whatsappPause','../client','getWhatsappQueues','Request','GetWhatsappQueue','name','strategy','Agents','online'];(function(_0x111bae,_0xd68095){var _0x37de99=function(_0x4cc3c2){while(--_0x4cc3c2){_0x111bae['push'](_0x111bae['shift']());}};_0x37de99(++_0xd68095);}(_0xa235,0x1c3));var _0x5a23=function(_0x569f3,_0x4d4e5b){_0x569f3=_0x569f3-0x0;var _0x85e1a0=_0xa235[_0x569f3];return _0x85e1a0;};'use strict';var client=require(_0x5a23('0x0'));exports[_0x5a23('0x1')]=function(){return function(){return client[_0x5a23('0x2')](_0x5a23('0x3'),{'options':{'raw':![],'attributes':['id',_0x5a23('0x4'),'timeout',_0x5a23('0x5')],'include':[{'model':'User','as':_0x5a23('0x6'),'attributes':['id',_0x5a23('0x4'),_0x5a23('0x7'),_0x5a23('0x8')]}]},'log':_0x5a23('0x1')});};};
\ No newline at end of file
index abcaed3..88776db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5f8=['CreateWhatsappQueueReport','DESC','UpdateWhatsappQueueReport','create','Request'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xa5f8,0x175));var _0x8a5f=function(_0x331c67,_0xe17e99){_0x331c67=_0x331c67-0x0;var _0x2f0944=_0xa5f8[_0x331c67];return _0x2f0944;};'use strict';var client=require('../client');exports[_0x8a5f('0x0')]=function(_0x4193f8){return client[_0x8a5f('0x1')](_0x8a5f('0x2'),{'body':_0x4193f8,'log':'CreateWhatsappQueueReport'});};exports['update']=function(_0x5578fc,_0x4d1b26){return client[_0x8a5f('0x1')]('UpdateWhatsappQueueReport',{'body':_0x4d1b26,'options':{'where':{'uniqueid':_0x5578fc},'order':[['id',_0x8a5f('0x3')]],'limit':0x1},'log':_0x8a5f('0x4')});};
\ No newline at end of file
+var _0xbfc8=['Request','CreateWhatsappQueueReport','update','DESC','UpdateWhatsappQueueReport','../client','create'];(function(_0x4dea87,_0x151a3d){var _0x3a59f6=function(_0x9e16cd){while(--_0x9e16cd){_0x4dea87['push'](_0x4dea87['shift']());}};_0x3a59f6(++_0x151a3d);}(_0xbfc8,0x12b));var _0x8bfc=function(_0x28ad2b,_0x2cebe7){_0x28ad2b=_0x28ad2b-0x0;var _0x93aa3d=_0xbfc8[_0x28ad2b];return _0x93aa3d;};'use strict';var client=require(_0x8bfc('0x0'));exports[_0x8bfc('0x1')]=function(_0x2e4f09){return client[_0x8bfc('0x2')](_0x8bfc('0x3'),{'body':_0x2e4f09,'log':_0x8bfc('0x3')});};exports[_0x8bfc('0x4')]=function(_0xad61bd,_0x211888){return client[_0x8bfc('0x2')]('UpdateWhatsappQueueReport',{'body':_0x211888,'options':{'where':{'uniqueid':_0xad61bd},'order':[['id',_0x8bfc('0x5')]],'limit':0x1},'log':_0x8bfc('0x6')});};
\ No newline at end of file
index 05b6909..aef1be2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60c8=['name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','length','error','[%s][AGENT]\x20%s','map','message','stop','find','timeout','createQueue','atimeout','channel','rules','end','info','complete','[%s][AGENT]\x20ROUTING\x20END','close','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','routing','./strategy','string'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x60c8,0x89));var _0x860c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x60c8[_0x20a584];return _0x4b41a8;};'use strict';var schema=require(_0x860c('0x0'));var _=require(_0x860c('0x1'));var util=require(_0x860c('0x2'));var seqqueue=require(_0x860c('0x3'));var logger=require('../../../../config/logger')(_0x860c('0x4'));var strategy=require(_0x860c('0x5'));var queue=schema({'name':{'type':_0x860c('0x6'),'required':!![],'message':_0x860c('0x7')},'timeout':{'type':_0x860c('0x8'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x2519c3,_0x59d742,_0x3b22e5){return logger['info'](util[_0x860c('0x9')](_0x860c('0xa'),_0x2519c3,_0x59d742[_0x860c('0xb')],_0x3b22e5));}function handleFindAgent(_0x5e2e92){return function(_0x4ebdc0){return _0x4ebdc0[_0x860c('0xb')][_0x860c('0xc')]()===_0x5e2e92[_0x860c('0xc')]();};}exports['consequence']=function(_0x1c3d06,_0x222a49,_0x1df048,_0x2809f4){return function(_0xcf10b7){try{var _0x304797={'name':_0x222a49[0x0],'timeout':_0x222a49[0x1]};var _0x463264=queue['validate'](_0x304797,{'typecast':!![]});if(_0x463264[_0x860c('0xd')]){logger[_0x860c('0xe')](_0x860c('0xf'),_0x1c3d06,_[_0x860c('0x10')](_0x463264,_0x860c('0x11'))['join'](',\x20'));_0xcf10b7[_0x860c('0x12')]();}else{var _0x5b3213=_[_0x860c('0x13')](_0x1df048['agents'],handleFindAgent(_0x304797[_0x860c('0xb')]));if(_0x5b3213){var _0x4a6a72=(_0x304797[_0x860c('0x14')]||0xa)*0x3e8;var _0x2edf4b,_0x5ed46b;var _0x4b7d3f=seqqueue[_0x860c('0x15')](_0x4a6a72);_0x4b7d3f['id']=_0x1c3d06;_0x4b7d3f[_0x860c('0x16')]=_0x4a6a72;_0x4b7d3f[_0x860c('0x17')]=_0x2809f4[_0x860c('0x17')];writeLog(_0x1c3d06,_0x5b3213,util['format']('START:%s',_0x4a6a72));_0x1df048[_0x860c('0x18')][_0x1c3d06]['on'](_0x860c('0x19'),function(){logger[_0x860c('0x1a')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x1c3d06);clearTimeout(_0x5ed46b);_0x5ed46b=undefined;_0x4b7d3f['close']();if(_0x1df048[_0x860c('0x18')][_0x1c3d06]){delete _0x1df048[_0x860c('0x18')][_0x1c3d06];}_0xcf10b7[_0x860c('0x12')]();});_0x1df048[_0x860c('0x18')][_0x1c3d06]['on'](_0x860c('0x1b'),function(){if(_0x1df048[_0x860c('0x18')][_0x1c3d06]){delete _0x1df048[_0x860c('0x18')][_0x1c3d06];}});_0x5ed46b=setTimeout(function(){logger[_0x860c('0x1a')](_0x860c('0x1c'),_0x1c3d06);clearTimeout(_0x5ed46b);_0x4b7d3f[_0x860c('0x1d')]();_0xcf10b7[_0x860c('0x1e')]();},_0x4a6a72);strategy[_0x860c('0x1f')](_0x4b7d3f,_0x5b3213,_0x1df048,_0x2809f4);}else{logger[_0x860c('0xe')](_0x860c('0x20'),_0x1c3d06,_0x304797[_0x860c('0xb')]);_0xcf10b7[_0x860c('0x12')]();}}}catch(_0x40d7b7){console[_0x860c('0x21')](_0x40d7b7);logger[_0x860c('0xe')](_0x860c('0x22'),_0x1c3d06,_0x40d7b7[_0x860c('0x23')]);_0xcf10b7[_0x860c('0x12')]();}};};
\ No newline at end of file
+var _0x2ca8=['[%s][AGENT]\x20agent\x20not\x20found\x20%s','[%s][QUEUE]\x20%s','stack','validate','lodash','util','../../../../config/logger','string','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','join','stop','find','timeout','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','next','agent'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2ca8,0x1df));var _0x82ca=function(_0x263078,_0xdb379){_0x263078=_0x263078-0x0;var _0x238a95=_0x2ca8[_0x263078];return _0x238a95;};'use strict';var schema=require(_0x82ca('0x0'));var _=require(_0x82ca('0x1'));var util=require(_0x82ca('0x2'));var seqqueue=require('seq-queue');var logger=require(_0x82ca('0x3'))('routing');var strategy=require('./strategy');var queue=schema({'name':{'type':_0x82ca('0x4'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x82ca('0x5'),'message':_0x82ca('0x6')}});function writeLog(_0x436a95,_0x4bdbd4,_0x1873ba){return logger[_0x82ca('0x7')](util[_0x82ca('0x8')](_0x82ca('0x9'),_0x436a95,_0x4bdbd4[_0x82ca('0xa')],_0x1873ba));}function handleFindAgent(_0x47efd7){return function(_0x4c9261){return _0x4c9261[_0x82ca('0xa')][_0x82ca('0xb')]()===_0x47efd7[_0x82ca('0xb')]();};}exports[_0x82ca('0xc')]=function(_0x1dc420,_0x92d389,_0x22f0b2,_0x39e91c){return function(_0x4fc48c){try{var _0x1b5313={'name':_0x92d389[0x0],'timeout':_0x92d389[0x1]};var _0x4d7b96=queue[_0x82ca('0x0')](_0x1b5313,{'typecast':!![]});if(_0x4d7b96[_0x82ca('0xd')]){logger[_0x82ca('0xe')](_0x82ca('0xf'),_0x1dc420,_['map'](_0x4d7b96,'message')[_0x82ca('0x10')](',\x20'));_0x4fc48c[_0x82ca('0x11')]();}else{var _0x42e4ef=_[_0x82ca('0x12')](_0x22f0b2['agents'],handleFindAgent(_0x1b5313[_0x82ca('0xa')]));if(_0x42e4ef){var _0x308328=(_0x1b5313[_0x82ca('0x13')]||0xa)*0x3e8;var _0x556ec4,_0x117309;var _0x1dfee4=seqqueue[_0x82ca('0x14')](_0x308328);_0x1dfee4['id']=_0x1dc420;_0x1dfee4[_0x82ca('0x15')]=_0x308328;_0x1dfee4[_0x82ca('0x16')]=_0x39e91c[_0x82ca('0x16')];writeLog(_0x1dc420,_0x42e4ef,util[_0x82ca('0x8')](_0x82ca('0x17'),_0x308328));_0x22f0b2[_0x82ca('0x18')][_0x1dc420]['on'](_0x82ca('0x19'),function(){logger[_0x82ca('0x7')](_0x82ca('0x1a'),_0x1dc420);clearTimeout(_0x117309);_0x117309=undefined;_0x1dfee4[_0x82ca('0x1b')]();if(_0x22f0b2[_0x82ca('0x18')][_0x1dc420]){delete _0x22f0b2[_0x82ca('0x18')][_0x1dc420];}_0x4fc48c['stop']();});_0x22f0b2[_0x82ca('0x18')][_0x1dc420]['on'](_0x82ca('0x1c'),function(){if(_0x22f0b2[_0x82ca('0x18')][_0x1dc420]){delete _0x22f0b2[_0x82ca('0x18')][_0x1dc420];}});_0x117309=setTimeout(function(){logger[_0x82ca('0x7')]('[%s][AGENT]\x20ROUTING\x20END',_0x1dc420);clearTimeout(_0x117309);_0x1dfee4[_0x82ca('0x1b')]();_0x4fc48c[_0x82ca('0x1d')]();},_0x308328);strategy[_0x82ca('0x1e')](_0x1dfee4,_0x42e4ef,_0x22f0b2,_0x39e91c);}else{logger[_0x82ca('0xe')](_0x82ca('0x1f'),_0x1dc420,_0x1b5313[_0x82ca('0xa')]);_0x4fc48c[_0x82ca('0x11')]();}}}catch(_0x43aed3){console['log'](_0x43aed3);logger[_0x82ca('0xe')](_0x82ca('0x20'),_0x1dc420,_0x43aed3[_0x82ca('0x21')]);_0x4fc48c['stop']();}};};
\ No newline at end of file
index c005e6e..7bae96d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb95f=['UserId','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','InteractionId','interaction','created','isEmpty','getMustacheRender','Message','create','then','info','body','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','LexRuntime','$LATEST','message','toString','postText','amazonlex','providerName','providerResponse','Failed','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','consequence','isNil'];(function(_0x52422a,_0x494395){var _0x322aaa=function(_0x2f37d2){while(--_0x2f37d2){_0x52422a['push'](_0x52422a['shift']());}};_0x322aaa(++_0x494395);}(_0xb95f,0x91));var _0xfb95=function(_0x4dcd8a,_0x126dd3){_0x4dcd8a=_0x4dcd8a-0x0;var _0x3eed92=_0xb95f[_0x4dcd8a];return _0x3eed92;};'use strict';var _=require(_0xfb95('0x0'));var moment=require(_0xfb95('0x1'));var AWS=require('aws-sdk');var utils=require(_0xfb95('0x2'));var logger=require(_0xfb95('0x3'))(_0xfb95('0x4'));var rpc={'chatMessage':require(_0xfb95('0x5')),'openchannelMessage':require(_0xfb95('0x6')),'mailMessage':require(_0xfb95('0x7')),'smsMessage':require(_0xfb95('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xfb95('0x9')]=function(_0x5051b4,_0x3739dc){return function(_0x2a9312){try{if(!_[_0xfb95('0xa')](this['interaction'][_0xfb95('0xb')])){logger['info'](_0xfb95('0xc'),_0x5051b4,_0xfb95('0xd'));return _0x2a9312[_0xfb95('0xe')]();}var _0x10c403={'ContactId':this[_0xfb95('0xf')]['id'],'sentAt':moment()['format'](_0xfb95('0x10')),'direction':_0xfb95('0x11')};if(this[_0xfb95('0x12')]===_0xfb95('0x13')||this[_0xfb95('0x12')]===_0xfb95('0x14')){_0x10c403[_0xfb95('0x15')]=this['interaction'][_0xfb95('0x15')];}var _0x444437=this[_0xfb95('0x12')];if(_0x444437===_0xfb95('0x16')){_0x10c403[_0xfb95('0x17')]=this[_0xfb95('0x18')]['id'];}else{_0x10c403[_[_0xfb95('0x19')](_0x444437)+'AccountId']=this['account']['id'];}_0x10c403[_[_0xfb95('0x19')](_0x444437)+_0xfb95('0x1a')]=this[_0xfb95('0x1b')]['id'];if(this['interaction'][_0xfb95('0x1c')]){var _0x223b91=_0x3739dc[0x4];if(!_[_0xfb95('0x1d')](_0x223b91)){_0x10c403['body']=utils[_0xfb95('0x1e')](_0x223b91,this);return rpc[_0x444437+_0xfb95('0x1f')][_0xfb95('0x20')](_0x10c403)[_0xfb95('0x21')](function(_0x15ab1a){logger[_0xfb95('0x22')]('[%s][AMAZONLEX]\x20%s',_0x5051b4,_0x10c403[_0xfb95('0x23')]);})[_0xfb95('0x24')](function(_0x2fbdb8){logger[_0xfb95('0x25')](_0xfb95('0xc'),_0x5051b4,JSON[_0xfb95('0x26')](_0x2fbdb8));})[_0xfb95('0x27')](function(){logger[_0xfb95('0x22')](_0xfb95('0x28'),_0x5051b4);_0x2a9312['stop']();});}else{logger[_0xfb95('0x22')](_0xfb95('0x29'),_0x5051b4);_0x2a9312[_0xfb95('0x2a')]();}}else{var _0x3dd5d9=this;var _0x5abfa7=new AWS[(_0xfb95('0x2b'))]({'accessKeyId':_0x3739dc[0x0],'secretAccessKey':_0x3739dc[0x1],'region':_0x3739dc[0x2]});var _0x1495af={'botAlias':_0xfb95('0x2c'),'botName':_0x3739dc[0x3],'inputText':this[_0xfb95('0x2d')][_0xfb95('0x23')],'userId':this[_0xfb95('0x12')]+':'+this[_0xfb95('0x1b')]['id'][_0xfb95('0x2e')]()};_0x5abfa7[_0xfb95('0x2f')](_0x1495af,function(_0x249a60,_0x520cf3){if(_0x249a60){logger[_0xfb95('0x25')](_0xfb95('0xc'),_0x5051b4,_0x249a60[_0xfb95('0x2d')]);_0x2a9312[_0xfb95('0xe')]();}else if(_0x520cf3&&_0x520cf3[_0xfb95('0x2d')]){_0x3dd5d9[_0xfb95('0x23')][_0xfb95('0x30')]=_0x520cf3;_0x10c403['body']=_0x520cf3[_0xfb95('0x2d')];_0x10c403[_0xfb95('0x31')]=_0xfb95('0x30');_0x10c403[_0xfb95('0x32')]=JSON[_0xfb95('0x26')](_0x520cf3);return rpc[_0x444437+_0xfb95('0x1f')][_0xfb95('0x20')](_0x10c403)[_0xfb95('0x21')](function(_0x19a7f8){logger[_0xfb95('0x22')]('[%s][AMAZONLEX]\x20%s',_0x5051b4,_0x10c403[_0xfb95('0x23')]);if(_0x520cf3['dialogState']==_0xfb95('0x33')){_0x2a9312[_0xfb95('0xe')]();}else{_0x2a9312[_0xfb95('0x2a')]();}})[_0xfb95('0x24')](function(_0xaf74c){logger['error']('[%s][AMAZONLEX]\x20%s',_0x5051b4,JSON[_0xfb95('0x26')](_0xaf74c));_0x2a9312[_0xfb95('0xe')]();});}else{_0x2a9312[_0xfb95('0xe')]();}});}}catch(_0x33488c){logger[_0xfb95('0x25')](_0xfb95('0xc'),_0x5051b4,JSON[_0xfb95('0x26')](_0x33488c));_0x2a9312[_0xfb95('0x2a')]();}};};
\ No newline at end of file
+var _0x8d94=['error','amazonlex','providerName','providerResponse','Failed','moment','aws-sdk','./utils','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','interaction','UserId','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','out','channel','sms','phone','chat','AccountId','account','upperFirst','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','then','info','catch','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','$LATEST','message','toString','postText'];(function(_0x8a969d,_0x339d9f){var _0x1d8dc7=function(_0x283ec0){while(--_0x283ec0){_0x8a969d['push'](_0x8a969d['shift']());}};_0x1d8dc7(++_0x339d9f);}(_0x8d94,0x1e5));var _0x48d9=function(_0xdde231,_0x2d20ed){_0xdde231=_0xdde231-0x0;var _0x5f34b3=_0x8d94[_0xdde231];return _0x5f34b3;};'use strict';var _=require('lodash');var moment=require(_0x48d9('0x0'));var AWS=require(_0x48d9('0x1'));var utils=require(_0x48d9('0x2'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x48d9('0x3')),'mailMessage':require(_0x48d9('0x4')),'smsMessage':require(_0x48d9('0x5')),'faxMessage':require(_0x48d9('0x6')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x48d9('0x7')]=function(_0x55ba76,_0x6e755a){return function(_0x378976){try{if(!_[_0x48d9('0x8')](this[_0x48d9('0x9')][_0x48d9('0xa')])){logger['info'](_0x48d9('0xb'),_0x55ba76,_0x48d9('0xc'));return _0x378976[_0x48d9('0xd')]();}var _0x4cf49a={'ContactId':this[_0x48d9('0xe')]['id'],'sentAt':moment()[_0x48d9('0xf')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x48d9('0x10')};if(this[_0x48d9('0x11')]===_0x48d9('0x12')||this[_0x48d9('0x11')]==='whatsapp'){_0x4cf49a[_0x48d9('0x13')]=this[_0x48d9('0x9')][_0x48d9('0x13')];}var _0x2dc4e8=this[_0x48d9('0x11')];if(_0x2dc4e8===_0x48d9('0x14')){_0x4cf49a['ChatWebsiteId']=this['account']['id'];}else{_0x4cf49a[_['upperFirst'](_0x2dc4e8)+_0x48d9('0x15')]=this[_0x48d9('0x16')]['id'];}_0x4cf49a[_[_0x48d9('0x17')](_0x2dc4e8)+_0x48d9('0x18')]=this['interaction']['id'];if(this[_0x48d9('0x9')][_0x48d9('0x19')]){var _0x3be01d=_0x6e755a[0x4];if(!_[_0x48d9('0x1a')](_0x3be01d)){_0x4cf49a[_0x48d9('0x1b')]=utils[_0x48d9('0x1c')](_0x3be01d,this);return rpc[_0x2dc4e8+_0x48d9('0x1d')][_0x48d9('0x1e')](_0x4cf49a)[_0x48d9('0x1f')](function(_0x2fb4ca){logger[_0x48d9('0x20')](_0x48d9('0xb'),_0x55ba76,_0x4cf49a[_0x48d9('0x1b')]);})[_0x48d9('0x21')](function(_0x227183){logger['error'](_0x48d9('0xb'),_0x55ba76,JSON[_0x48d9('0x22')](_0x227183));})[_0x48d9('0x23')](function(){logger[_0x48d9('0x20')](_0x48d9('0x24'),_0x55ba76);_0x378976['stop']();});}else{logger[_0x48d9('0x20')](_0x48d9('0x25'),_0x55ba76);_0x378976[_0x48d9('0x26')]();}}else{var _0x6bc5de=this;var _0x25c91e=new AWS['LexRuntime']({'accessKeyId':_0x6e755a[0x0],'secretAccessKey':_0x6e755a[0x1],'region':_0x6e755a[0x2]});var _0x5897ae={'botAlias':_0x48d9('0x27'),'botName':_0x6e755a[0x3],'inputText':this[_0x48d9('0x28')][_0x48d9('0x1b')],'userId':this[_0x48d9('0x11')]+':'+this[_0x48d9('0x9')]['id'][_0x48d9('0x29')]()};_0x25c91e[_0x48d9('0x2a')](_0x5897ae,function(_0x397c,_0x1cc6c6){if(_0x397c){logger[_0x48d9('0x2b')](_0x48d9('0xb'),_0x55ba76,_0x397c[_0x48d9('0x28')]);_0x378976[_0x48d9('0xd')]();}else if(_0x1cc6c6&&_0x1cc6c6[_0x48d9('0x28')]){_0x6bc5de[_0x48d9('0x1b')][_0x48d9('0x2c')]=_0x1cc6c6;_0x4cf49a[_0x48d9('0x1b')]=_0x1cc6c6[_0x48d9('0x28')];_0x4cf49a[_0x48d9('0x2d')]=_0x48d9('0x2c');_0x4cf49a[_0x48d9('0x2e')]=JSON[_0x48d9('0x22')](_0x1cc6c6);return rpc[_0x2dc4e8+'Message'][_0x48d9('0x1e')](_0x4cf49a)['then'](function(_0x18b376){logger[_0x48d9('0x20')]('[%s][AMAZONLEX]\x20%s',_0x55ba76,_0x4cf49a[_0x48d9('0x1b')]);if(_0x1cc6c6['dialogState']==_0x48d9('0x2f')){_0x378976[_0x48d9('0xd')]();}else{_0x378976[_0x48d9('0x26')]();}})[_0x48d9('0x21')](function(_0x3c390f){logger['error']('[%s][AMAZONLEX]\x20%s',_0x55ba76,JSON['stringify'](_0x3c390f));_0x378976[_0x48d9('0xd')]();});}else{_0x378976['next']();}});}}catch(_0x4f9263){logger[_0x48d9('0x2b')](_0x48d9('0xb'),_0x55ba76,JSON['stringify'](_0x4f9263));_0x378976[_0x48d9('0x26')]();}};};
\ No newline at end of file
index a17f42b..8ad3226 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62dd=['create','then','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','update','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','lodash','moment','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','body','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','created','interaction','Autoreply\x20already\x20sent','autoreplyExecuted','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','getMustacheRender','message','from','phone','read','subject','startsWith','Re:\x20','ChatWebsiteId','AccountId','account','upperFirst','InteractionId','Message','Smtp','service','port','secure','pass','inReplyTo','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div','headers','auto-replied','All','auto_reply','sendMailMessage','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId'];(function(_0x26b8b5,_0xf5c2c1){var _0x2150a9=function(_0x1ca1be){while(--_0x1ca1be){_0x26b8b5['push'](_0x26b8b5['shift']());}};_0x2150a9(++_0xf5c2c1);}(_0x62dd,0x130));var _0xd62d=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x62dd[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xd62d('0x0'));var moment=require(_0xd62d('0x1'));var utils=require(_0xd62d('0x2'));var logger=require(_0xd62d('0x3'))('routing');var rpc={'chatMessage':require(_0xd62d('0x4')),'openchannelMessage':require(_0xd62d('0x5')),'mailMessage':require(_0xd62d('0x6')),'smsMessage':require(_0xd62d('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xd62d('0x8')),'chatInteraction':require(_0xd62d('0x9')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0xd62d('0xa')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0xd62d('0xb')),'whatsappInteraction':require(_0xd62d('0xc'))};var mailRpc=require(_0xd62d('0xd'));exports[_0xd62d('0xe')]=function(_0x547173,_0x1b4450,_0x4fda70,_0x431720){return function(_0x3897f7){try{var _0x2d2ed2=this[_0xd62d('0xf')];if(_0x2d2ed2===_0xd62d('0x10')&&_0x431720[_0xd62d('0x11')]['isAutoreply']){logger[_0xd62d('0x12')](_0xd62d('0x13'),_0x547173,_0xd62d('0x14'));return _0x3897f7[_0xd62d('0x15')]();}if(_0x1b4450[0x0]==='1'&&(_['isNil'](this['interaction'][_0xd62d('0x16')])||!this[_0xd62d('0x17')]['created'])){logger['info'](_0xd62d('0x13'),_0x547173,_0xd62d('0x18'));return _0x3897f7[_0xd62d('0x15')]();}if(_0x1b4450[0x0]==='2'&&this['interaction'][_0xd62d('0x19')]){logger[_0xd62d('0x12')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x547173,_0xd62d('0x1a'));return _0x3897f7[_0xd62d('0x15')]();}var _0x39fbca={'ContactId':this[_0xd62d('0x1b')]['id'],'sentAt':moment()[_0xd62d('0x1c')](_0xd62d('0x1d')),'direction':'out'};if(this[_0xd62d('0xf')]===_0xd62d('0x10')){_0x39fbca[_0xd62d('0x11')]=utils[_0xd62d('0x1e')](_0x1b4450[0x2],this);}else{_0x39fbca[_0xd62d('0x11')]=utils[_0xd62d('0x1e')](_0x1b4450[0x1],this);}if(this[_0xd62d('0x1f')]){_0x39fbca['to']=this[_0xd62d('0x1f')][_0xd62d('0x20')]||'';if(this[_0xd62d('0xf')]==='mail'&&_0x1b4450[0x1]==='1'){_0x39fbca['cc']=this[_0xd62d('0x1f')]['cc']||'';}_0x39fbca['from']=this[_0xd62d('0x1f')]['to']||'';_0x39fbca['phone']=this[_0xd62d('0x1f')][_0xd62d('0x21')]||'';_0x39fbca[_0xd62d('0x22')]=!![];if(this['message']['subject']){_0x39fbca['subject']='';_0x39fbca[_0xd62d('0x23')]+=_[_0xd62d('0x24')](this[_0xd62d('0x1f')]['subject'],'Re:')?'':_0xd62d('0x25');_0x39fbca[_0xd62d('0x23')]+=this[_0xd62d('0x1f')][_0xd62d('0x23')];}}if(this[_0xd62d('0xf')]==='chat'){_0x39fbca[_0xd62d('0x26')]=this['account']['id'];}else{_0x39fbca[_['upperFirst'](this[_0xd62d('0xf')])+_0xd62d('0x27')]=this[_0xd62d('0x28')]['id'];}_0x39fbca[_[_0xd62d('0x29')](this['channel'])+_0xd62d('0x2a')]=this[_0xd62d('0x17')]['id'];var _0xf150a2=this[_0xd62d('0x17')];if(rpc[this[_0xd62d('0xf')]+_0xd62d('0x2b')]){if(this[_0xd62d('0xf')]==='mail'){var _0x5afe6d={'tls':{'rejectUnauthorized':![]}};if(this[_0xd62d('0x28')][_0xd62d('0x2c')][_0xd62d('0x2d')]){_0x5afe6d[_0xd62d('0x2d')]=this['account'][_0xd62d('0x2c')][_0xd62d('0x2d')];}else{_0x5afe6d['host']=this[_0xd62d('0x28')][_0xd62d('0x2c')]['host'];_0x5afe6d[_0xd62d('0x2e')]=this[_0xd62d('0x28')]['Smtp'][_0xd62d('0x2e')];_0x5afe6d[_0xd62d('0x2f')]=this[_0xd62d('0x28')][_0xd62d('0x2c')][_0xd62d('0x2f')];}if(this[_0xd62d('0x28')][_0xd62d('0x2c')]['authentication']){_0x5afe6d['auth']={'user':this[_0xd62d('0x28')][_0xd62d('0x2c')]['user'],'pass':this[_0xd62d('0x28')][_0xd62d('0x2c')][_0xd62d('0x30')]};}_0x39fbca[_0xd62d('0x31')]=this[_0xd62d('0x1f')]['messageId'];_0x39fbca[_0xd62d('0x32')]=_0xd62d('0x33')+_[_0xd62d('0x34')](_0x39fbca[_0xd62d('0x11')],'<div\x20id=\x22xm-mail-content\x22',_0xd62d('0x35'))+'</div>';_0x39fbca[_0xd62d('0x36')]={'Auto-Submitted':_0xd62d('0x37'),'X-Auto-Response-Suppress':_0xd62d('0x38'),'Precedence':_0xd62d('0x39')};return mailRpc[_0xd62d('0x3a')](_0x5afe6d,_0x39fbca)['then'](function(_0x1344a8){logger[_0xd62d('0x12')](_0xd62d('0x3b'),_0x547173);_0x39fbca[_0xd62d('0x3c')]=_0x1344a8[_0xd62d('0x1f')]['messageId'];return rpc[_0x2d2ed2+_0xd62d('0x2b')][_0xd62d('0x3d')](_0x39fbca);})[_0xd62d('0x3e')](function(_0xac15b4){logger[_0xd62d('0x12')](_0xd62d('0x13'),_0x547173,JSON[_0xd62d('0x3f')](_0xac15b4));})[_0xd62d('0x40')](function(_0x1e516a){logger['error'](_0xd62d('0x41'),_0x547173,JSON[_0xd62d('0x3f')](_0x1e516a));})[_0xd62d('0x42')](function(){Promise[_0xd62d('0x43')]()['then'](function(){if(_0x1b4450[0x0]!=='2'||_0xf150a2['autoreplyExecuted'])return;return rpc[_0x2d2ed2+_0xd62d('0x44')][_0xd62d('0x45')](_0xf150a2['id'],{'autoreplyExecuted':!![]})[_0xd62d('0x3e')](function(_0x17d372){logger[_0xd62d('0x12')](_0xd62d('0x46'),_0x547173,JSON[_0xd62d('0x3f')](_0x17d372));})[_0xd62d('0x40')](function(_0x1c1210){logger[_0xd62d('0x47')](_0xd62d('0x48'),_0x547173,JSON[_0xd62d('0x3f')](_0x1c1210));});})[_0xd62d('0x3e')](function(){_0x3897f7['next']();});});}else{return rpc[this['channel']+_0xd62d('0x2b')][_0xd62d('0x3d')](_0x39fbca)['then'](function(_0x514ebb){logger[_0xd62d('0x12')](_0xd62d('0x13'),_0x547173,_0x39fbca[_0xd62d('0x11')]);})[_0xd62d('0x40')](function(_0x3ceafd){logger[_0xd62d('0x47')](_0xd62d('0x13'),_0x547173,JSON[_0xd62d('0x3f')](_0x3ceafd));})[_0xd62d('0x42')](function(){Promise['resolve']()[_0xd62d('0x3e')](function(){if(_0x1b4450[0x0]!=='2'||_0xf150a2[_0xd62d('0x19')])return;return rpc[_0x2d2ed2+_0xd62d('0x44')][_0xd62d('0x45')](_0xf150a2['id'],{'autoreplyExecuted':!![]})[_0xd62d('0x3e')](function(_0x23de99){logger[_0xd62d('0x12')](_0xd62d('0x46'),_0x547173,JSON[_0xd62d('0x3f')](_0x23de99));})[_0xd62d('0x40')](function(_0x5baf74){logger[_0xd62d('0x47')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x547173,JSON['stringify'](_0x5baf74));});})[_0xd62d('0x3e')](function(){_0x3897f7[_0xd62d('0x15')]();});});}}}catch(_0x471428){logger[_0xd62d('0x47')]('[%s][AUTOREPLY]\x20%s',_0x547173,JSON[_0xd62d('0x3f')](_0x471428));_0x3897f7['stop']();}};};
\ No newline at end of file
+var _0x51a1=['Interaction','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','create','stop','lodash','moment','../../../../config/logger','routing','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','from','read','subject','startsWith','Re:','Re:\x20','chat','account','AccountId','upperFirst','Smtp','service','host','port','secure','auth','user','pass','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','<div','</div>','All','[%s][AUTOREPLY]\x20SMTP\x20SENT','Message','then','catch','error','[RPC][%s][AUTOREPLY]\x20%s','stringify','finally','resolve'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x51a1,0xe6));var _0x151a=function(_0x16a05b,_0x4bebbe){_0x16a05b=_0x16a05b-0x0;var _0x5be0e8=_0x51a1[_0x16a05b];return _0x5be0e8;};'use strict';var _=require(_0x151a('0x0'));var moment=require(_0x151a('0x1'));var utils=require('./utils');var logger=require(_0x151a('0x2'))(_0x151a('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x151a('0x4')),'faxMessage':require(_0x151a('0x5')),'whatsappMessage':require(_0x151a('0x6')),'chatInteraction':require(_0x151a('0x7')),'openchannelInteraction':require(_0x151a('0x8')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0x151a('0x9')),'faxInteraction':require(_0x151a('0xa')),'whatsappInteraction':require(_0x151a('0xb'))};var mailRpc=require(_0x151a('0xc'));exports[_0x151a('0xd')]=function(_0x35cffd,_0x5219b7,_0x5dccfd,_0x130f2f){return function(_0x4a5d0a){try{var _0x5ce4fc=this[_0x151a('0xe')];if(_0x5ce4fc===_0x151a('0xf')&&_0x130f2f[_0x151a('0x10')][_0x151a('0x11')]){logger[_0x151a('0x12')](_0x151a('0x13'),_0x35cffd,_0x151a('0x14'));return _0x4a5d0a[_0x151a('0x15')]();}if(_0x5219b7[0x0]==='1'&&(_[_0x151a('0x16')](this[_0x151a('0x17')][_0x151a('0x18')])||!this[_0x151a('0x17')][_0x151a('0x18')])){logger[_0x151a('0x12')](_0x151a('0x13'),_0x35cffd,_0x151a('0x19'));return _0x4a5d0a[_0x151a('0x15')]();}if(_0x5219b7[0x0]==='2'&&this[_0x151a('0x17')][_0x151a('0x1a')]){logger[_0x151a('0x12')](_0x151a('0x1b'),_0x35cffd,_0x151a('0x1c'));return _0x4a5d0a[_0x151a('0x15')]();}var _0x1efa39={'ContactId':this[_0x151a('0x1d')]['id'],'sentAt':moment()[_0x151a('0x1e')](_0x151a('0x1f')),'direction':_0x151a('0x20')};if(this[_0x151a('0xe')]===_0x151a('0xf')){_0x1efa39['body']=utils[_0x151a('0x21')](_0x5219b7[0x2],this);}else{_0x1efa39[_0x151a('0x10')]=utils['getMustacheRender'](_0x5219b7[0x1],this);}if(this[_0x151a('0x22')]){_0x1efa39['to']=this[_0x151a('0x22')][_0x151a('0x23')]||'';if(this['channel']===_0x151a('0xf')&&_0x5219b7[0x1]==='1'){_0x1efa39['cc']=this[_0x151a('0x22')]['cc']||'';}_0x1efa39[_0x151a('0x23')]=this[_0x151a('0x22')]['to']||'';_0x1efa39['phone']=this[_0x151a('0x22')]['phone']||'';_0x1efa39[_0x151a('0x24')]=!![];if(this[_0x151a('0x22')]['subject']){_0x1efa39[_0x151a('0x25')]='';_0x1efa39[_0x151a('0x25')]+=_[_0x151a('0x26')](this['message'][_0x151a('0x25')],_0x151a('0x27'))?'':_0x151a('0x28');_0x1efa39[_0x151a('0x25')]+=this[_0x151a('0x22')]['subject'];}}if(this['channel']===_0x151a('0x29')){_0x1efa39['ChatWebsiteId']=this[_0x151a('0x2a')]['id'];}else{_0x1efa39[_['upperFirst'](this[_0x151a('0xe')])+_0x151a('0x2b')]=this[_0x151a('0x2a')]['id'];}_0x1efa39[_[_0x151a('0x2c')](this[_0x151a('0xe')])+'InteractionId']=this['interaction']['id'];var _0x4fd8f7=this[_0x151a('0x17')];if(rpc[this['channel']+'Message']){if(this['channel']==='mail'){var _0x48e238={'tls':{'rejectUnauthorized':![]}};if(this[_0x151a('0x2a')]['Smtp']['service']){_0x48e238['service']=this['account'][_0x151a('0x2d')][_0x151a('0x2e')];}else{_0x48e238[_0x151a('0x2f')]=this[_0x151a('0x2a')]['Smtp']['host'];_0x48e238[_0x151a('0x30')]=this[_0x151a('0x2a')][_0x151a('0x2d')][_0x151a('0x30')];_0x48e238[_0x151a('0x31')]=this[_0x151a('0x2a')]['Smtp'][_0x151a('0x31')];}if(this['account']['Smtp']['authentication']){_0x48e238[_0x151a('0x32')]={'user':this[_0x151a('0x2a')][_0x151a('0x2d')][_0x151a('0x33')],'pass':this[_0x151a('0x2a')][_0x151a('0x2d')][_0x151a('0x34')]};}_0x1efa39[_0x151a('0x35')]=this[_0x151a('0x22')][_0x151a('0x36')];_0x1efa39[_0x151a('0x37')]=_0x151a('0x38')+_['replace'](_0x1efa39[_0x151a('0x10')],_0x151a('0x39'),_0x151a('0x3a'))+_0x151a('0x3b');_0x1efa39['headers']={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0x151a('0x3c'),'Precedence':'auto_reply'};return mailRpc['sendMailMessage'](_0x48e238,_0x1efa39)['then'](function(_0x23dfe6){logger[_0x151a('0x12')](_0x151a('0x3d'),_0x35cffd);_0x1efa39[_0x151a('0x36')]=_0x23dfe6[_0x151a('0x22')][_0x151a('0x36')];return rpc[_0x5ce4fc+_0x151a('0x3e')]['create'](_0x1efa39);})[_0x151a('0x3f')](function(_0x1a968f){logger['info']('[%s][AUTOREPLY]\x20%s',_0x35cffd,JSON['stringify'](_0x1a968f));})[_0x151a('0x40')](function(_0x5238af){logger[_0x151a('0x41')](_0x151a('0x42'),_0x35cffd,JSON[_0x151a('0x43')](_0x5238af));})[_0x151a('0x44')](function(){Promise[_0x151a('0x45')]()[_0x151a('0x3f')](function(){if(_0x5219b7[0x0]!=='2'||_0x4fd8f7['autoreplyExecuted'])return;return rpc[_0x5ce4fc+_0x151a('0x46')][_0x151a('0x47')](_0x4fd8f7['id'],{'autoreplyExecuted':!![]})['then'](function(_0x5c5088){logger[_0x151a('0x12')](_0x151a('0x1b'),_0x35cffd,JSON[_0x151a('0x43')](_0x5c5088));})['catch'](function(_0x3f15f9){logger[_0x151a('0x41')](_0x151a('0x48'),_0x35cffd,JSON[_0x151a('0x43')](_0x3f15f9));});})[_0x151a('0x3f')](function(){_0x4a5d0a[_0x151a('0x15')]();});});}else{return rpc[this[_0x151a('0xe')]+'Message'][_0x151a('0x49')](_0x1efa39)['then'](function(_0x2f1808){logger[_0x151a('0x12')]('[%s][AUTOREPLY]\x20%s',_0x35cffd,_0x1efa39[_0x151a('0x10')]);})[_0x151a('0x40')](function(_0x5a039c){logger[_0x151a('0x41')](_0x151a('0x13'),_0x35cffd,JSON[_0x151a('0x43')](_0x5a039c));})[_0x151a('0x44')](function(){Promise[_0x151a('0x45')]()[_0x151a('0x3f')](function(){if(_0x5219b7[0x0]!=='2'||_0x4fd8f7[_0x151a('0x1a')])return;return rpc[_0x5ce4fc+_0x151a('0x46')][_0x151a('0x47')](_0x4fd8f7['id'],{'autoreplyExecuted':!![]})[_0x151a('0x3f')](function(_0x560b44){logger[_0x151a('0x12')](_0x151a('0x1b'),_0x35cffd,JSON[_0x151a('0x43')](_0x560b44));})['catch'](function(_0x803352){logger['error'](_0x151a('0x48'),_0x35cffd,JSON[_0x151a('0x43')](_0x803352));});})[_0x151a('0x3f')](function(){_0x4a5d0a[_0x151a('0x15')]();});});}}}catch(_0x1f7440){logger[_0x151a('0x41')](_0x151a('0x13'),_0x35cffd,JSON[_0x151a('0x43')](_0x1f7440));_0x4a5d0a[_0x151a('0x4a')]();}};};
\ No newline at end of file
index 2c89c1b..af78927 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4360=['../../rpc/whatsappInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','stringify','stop','moment','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction'];(function(_0x5910f5,_0x53b4c2){var _0x401c3e=function(_0x1e190f){while(--_0x1e190f){_0x5910f5['push'](_0x5910f5['shift']());}};_0x401c3e(++_0x53b4c2);}(_0x4360,0x10e));var _0x0436=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x4360[_0xbca1b1];return _0x4e1686;};'use strict';var moment=require(_0x0436('0x0'));var logger=require('../../../../config/logger')(_0x0436('0x1'));var rpc={'chatInteraction':require(_0x0436('0x2')),'openchannelInteraction':require(_0x0436('0x3')),'smsInteraction':require(_0x0436('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x0436('0x5')),'whatsappInteraction':require(_0x0436('0x6'))};exports[_0x0436('0x7')]=function(_0x2818e9,_0x23ae6c,_0x2e499d,_0x22a033){return function(_0x18ccbe){try{logger[_0x0436('0x8')](_0x0436('0x9'),_0x2818e9,_0x23ae6c[0x0]);var _0x579a0c={'closed':0x1,'closedAt':moment()[_0x0436('0xa')](_0x0436('0xb')),'closeReason':_0x0436('0xc'),'disposition':_0x23ae6c[0x0]};if(rpc[_0x22a033[_0x0436('0xd')]+_0x0436('0xe')]){rpc[_0x22a033[_0x0436('0xd')]+'Interaction']['update'](_0x22a033[_0x0436('0xf')]['id'],_0x579a0c)[_0x0436('0x10')](function(_0x382f55){logger[_0x0436('0x8')](_0x0436('0x11'),_0x2818e9,_0x22a033[_0x0436('0xf')]['id']);})[_0x0436('0x12')](function(_0x2ce4b6){logger[_0x0436('0x13')](_0x0436('0x14'),_0x2818e9,JSON['stringify'](_0x2ce4b6));})['finally'](function(){_0x18ccbe['stop']();});}}catch(_0x4306ff){logger[_0x0436('0x13')](_0x0436('0x14'),_0x2818e9,JSON[_0x0436('0x15')](_0x4306ff));_0x18ccbe[_0x0436('0x16')]();}};};
\ No newline at end of file
+var _0x8f8b=['consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20%s','stringify','finally','error','stop','moment','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction'];(function(_0x5812ef,_0x591c9c){var _0x29e744=function(_0x18cd05){while(--_0x18cd05){_0x5812ef['push'](_0x5812ef['shift']());}};_0x29e744(++_0x591c9c);}(_0x8f8b,0x83));var _0xb8f8=function(_0x1cb2b7,_0x2a0da8){_0x1cb2b7=_0x1cb2b7-0x0;var _0x5a9c5d=_0x8f8b[_0x1cb2b7];return _0x5a9c5d;};'use strict';var moment=require(_0xb8f8('0x0'));var logger=require('../../../../config/logger')(_0xb8f8('0x1'));var rpc={'chatInteraction':require(_0xb8f8('0x2')),'openchannelInteraction':require(_0xb8f8('0x3')),'smsInteraction':require(_0xb8f8('0x4')),'mailInteraction':require(_0xb8f8('0x5')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xb8f8('0x6'))};exports[_0xb8f8('0x7')]=function(_0x52ea91,_0x3a05f1,_0x2a7c58,_0x37111c){return function(_0x5442d8){try{logger[_0xb8f8('0x8')](_0xb8f8('0x9'),_0x52ea91,_0x3a05f1[0x0]);var _0xdcefbf={'closed':0x1,'closedAt':moment()[_0xb8f8('0xa')](_0xb8f8('0xb')),'closeReason':_0xb8f8('0xc'),'disposition':_0x3a05f1[0x0]};if(rpc[_0x37111c[_0xb8f8('0xd')]+'Interaction']){rpc[_0x37111c[_0xb8f8('0xd')]+_0xb8f8('0xe')][_0xb8f8('0xf')](_0x37111c[_0xb8f8('0x10')]['id'],_0xdcefbf)[_0xb8f8('0x11')](function(_0x1230f0){logger[_0xb8f8('0x8')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x52ea91,_0x37111c[_0xb8f8('0x10')]['id']);})['catch'](function(_0x596351){logger['error'](_0xb8f8('0x12'),_0x52ea91,JSON[_0xb8f8('0x13')](_0x596351));})[_0xb8f8('0x14')](function(){_0x5442d8['stop']();});}}catch(_0x5bc314){logger[_0xb8f8('0x15')](_0xb8f8('0x12'),_0x52ea91,JSON[_0xb8f8('0x13')](_0x5bc314));_0x5442d8[_0xb8f8('0x16')]();}};};
\ No newline at end of file
index c8e82ca..a9b2b02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ec2=['[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','then','result','fulfillment','speech','providerName','dialogflow','providerResponse','metadata','error','message','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','interaction','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','created','isEmpty','body','Message','create','[%s][DIALOGFLOW]\x20%s','catch','stringify','finally'];(function(_0x15f724,_0x2794ef){var _0x49b152=function(_0x561b35){while(--_0x561b35){_0x15f724['push'](_0x15f724['shift']());}};_0x49b152(++_0x2794ef);}(_0x6ec2,0x78));var _0x26ec=function(_0x5c660a,_0x4b5262){_0x5c660a=_0x5c660a-0x0;var _0x3a77a4=_0x6ec2[_0x5c660a];return _0x3a77a4;};'use strict';var _=require(_0x26ec('0x0'));var moment=require(_0x26ec('0x1'));var apiai=require(_0x26ec('0x2'));var md5=require(_0x26ec('0x3'));var utils=require(_0x26ec('0x4'));var logger=require(_0x26ec('0x5'))('routing');var rpc={'chatMessage':require(_0x26ec('0x6')),'openchannelMessage':require(_0x26ec('0x7')),'mailMessage':require(_0x26ec('0x8')),'smsMessage':require(_0x26ec('0x9')),'faxMessage':require(_0x26ec('0xa')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x26ec('0xb')]=function(_0x4e8781,_0x4cadb0){return function(_0xf2cd1d){try{if(!_[_0x26ec('0xc')](this[_0x26ec('0xd')]['UserId'])){logger[_0x26ec('0xe')]('[%s][DIALOGFLOW]\x20%s',_0x4e8781,_0x26ec('0xf'));return _0xf2cd1d[_0x26ec('0x10')]();}var _0x26f0a6={'ContactId':this[_0x26ec('0x11')]['id'],'sentAt':moment()[_0x26ec('0x12')](_0x26ec('0x13')),'direction':_0x26ec('0x14')};if(this[_0x26ec('0x15')]===_0x26ec('0x16')||this[_0x26ec('0x15')]==='whatsapp'){_0x26f0a6['phone']=this[_0x26ec('0xd')][_0x26ec('0x17')];}var _0x1149fb=this[_0x26ec('0x15')];if(_0x1149fb===_0x26ec('0x18')){_0x26f0a6[_0x26ec('0x19')]=this[_0x26ec('0x1a')]['id'];}else{_0x26f0a6[_['upperFirst'](_0x1149fb)+_0x26ec('0x1b')]=this[_0x26ec('0x1a')]['id'];}_0x26f0a6[_[_0x26ec('0x1c')](_0x1149fb)+_0x26ec('0x1d')]=this['interaction']['id'];if(this['interaction'][_0x26ec('0x1e')]){var _0x127385=_0x4cadb0[0x2];if(!_[_0x26ec('0x1f')](_0x127385)){_0x26f0a6[_0x26ec('0x20')]=utils['getMustacheRender'](_0x127385,this);return rpc[_0x1149fb+_0x26ec('0x21')][_0x26ec('0x22')](_0x26f0a6)['then'](function(_0x5ef1e5){logger['info'](_0x26ec('0x23'),_0x4e8781,_0x26f0a6[_0x26ec('0x20')]);})[_0x26ec('0x24')](function(_0x4f6eb5){logger['error'](_0x26ec('0x23'),_0x4e8781,JSON[_0x26ec('0x25')](_0x4f6eb5));})[_0x26ec('0x26')](function(){logger[_0x26ec('0xe')](_0x26ec('0x27'),_0x4e8781);_0xf2cd1d[_0x26ec('0x28')]();});}else{logger['info'](_0x26ec('0x29'),_0x4e8781);_0xf2cd1d[_0x26ec('0x28')]();}}else{var _0x2a9e82=this;var _0x46f766=apiai(_0x4cadb0[0x0],{'language':_0x4cadb0[0x1]||'en'});return _0x46f766[_0x26ec('0x2a')](this['message']['body'],{'sessionId':md5(this[_0x26ec('0xd')]['id'])})[_0x26ec('0x2b')](function(_0x65aea3){_0x2a9e82['body']['dialogflow']=_0x65aea3;_0x26f0a6[_0x26ec('0x20')]=_0x65aea3[_0x26ec('0x2c')][_0x26ec('0x2d')][_0x26ec('0x2e')];_0x26f0a6[_0x26ec('0x2f')]=_0x26ec('0x30');_0x26f0a6[_0x26ec('0x31')]=JSON['stringify'](_0x65aea3);return rpc[_0x1149fb+'Message']['create'](_0x26f0a6)[_0x26ec('0x2b')](function(_0xddd5fc){logger[_0x26ec('0xe')](_0x26ec('0x23'),_0x4e8781,_0x26f0a6[_0x26ec('0x20')]);if(_0x65aea3[_0x26ec('0x2c')][_0x26ec('0x32')]['endConversation']){_0xf2cd1d[_0x26ec('0x10')]();}else{_0xf2cd1d['stop']();}})[_0x26ec('0x24')](function(_0x355c4e){logger['error'](_0x26ec('0x23'),_0x4e8781,JSON[_0x26ec('0x25')](_0x355c4e));_0xf2cd1d[_0x26ec('0x10')]();});})[_0x26ec('0x24')](function(_0x272c40){logger[_0x26ec('0x33')]('[%s][DIALOGFLOW]\x20%s',_0x4e8781,_0x272c40[_0x26ec('0x34')]);_0xf2cd1d['next']();});}}catch(_0x3d8b89){logger['error'](_0x26ec('0x23'),_0x4e8781,JSON[_0x26ec('0x25')](_0x3d8b89));_0xf2cd1d['stop']();}};};
\ No newline at end of file
+var _0x0619=['../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','info','[%s][DIALOGFLOW]\x20%s','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','interaction','ChatWebsiteId','account','upperFirst','AccountId','body','Message','then','catch','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','dialogflow','result','fulfillment','speech','providerName','providerResponse','create','metadata','endConversation','stop','next','lodash','moment','apiai-promise','md5','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x0619,0x90));var _0x9061=function(_0x1e16f7,_0x37a2ab){_0x1e16f7=_0x1e16f7-0x0;var _0x12298e=_0x0619[_0x1e16f7];return _0x12298e;};'use strict';var _=require(_0x9061('0x0'));var moment=require(_0x9061('0x1'));var apiai=require(_0x9061('0x2'));var md5=require(_0x9061('0x3'));var utils=require('./utils');var logger=require(_0x9061('0x4'))(_0x9061('0x5'));var rpc={'chatMessage':require(_0x9061('0x6')),'openchannelMessage':require(_0x9061('0x7')),'mailMessage':require(_0x9061('0x8')),'smsMessage':require(_0x9061('0x9')),'faxMessage':require(_0x9061('0xa')),'whatsappMessage':require(_0x9061('0xb'))};exports[_0x9061('0xc')]=function(_0x259fbd,_0x287026){return function(_0x5a950f){try{if(!_[_0x9061('0xd')](this['interaction']['UserId'])){logger[_0x9061('0xe')](_0x9061('0xf'),_0x259fbd,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x5a950f['next']();}var _0x3bc693={'ContactId':this[_0x9061('0x10')]['id'],'sentAt':moment()[_0x9061('0x11')](_0x9061('0x12')),'direction':_0x9061('0x13')};if(this[_0x9061('0x14')]===_0x9061('0x15')||this[_0x9061('0x14')]===_0x9061('0x16')){_0x3bc693[_0x9061('0x17')]=this[_0x9061('0x18')][_0x9061('0x17')];}var _0x11327=this['channel'];if(_0x11327==='chat'){_0x3bc693[_0x9061('0x19')]=this[_0x9061('0x1a')]['id'];}else{_0x3bc693[_[_0x9061('0x1b')](_0x11327)+_0x9061('0x1c')]=this[_0x9061('0x1a')]['id'];}_0x3bc693[_['upperFirst'](_0x11327)+'InteractionId']=this[_0x9061('0x18')]['id'];if(this[_0x9061('0x18')]['created']){var _0x278016=_0x287026[0x2];if(!_['isEmpty'](_0x278016)){_0x3bc693[_0x9061('0x1d')]=utils['getMustacheRender'](_0x278016,this);return rpc[_0x11327+_0x9061('0x1e')]['create'](_0x3bc693)[_0x9061('0x1f')](function(_0x358907){logger[_0x9061('0xe')](_0x9061('0xf'),_0x259fbd,_0x3bc693[_0x9061('0x1d')]);})[_0x9061('0x20')](function(_0x142c66){logger[_0x9061('0x21')]('[%s][DIALOGFLOW]\x20%s',_0x259fbd,JSON[_0x9061('0x22')](_0x142c66));})[_0x9061('0x23')](function(){logger[_0x9061('0xe')](_0x9061('0x24'),_0x259fbd);_0x5a950f['stop']();});}else{logger[_0x9061('0xe')](_0x9061('0x25'),_0x259fbd);_0x5a950f['stop']();}}else{var _0x557289=this;var _0x5ad4a0=apiai(_0x287026[0x0],{'language':_0x287026[0x1]||'en'});return _0x5ad4a0[_0x9061('0x26')](this[_0x9061('0x27')]['body'],{'sessionId':md5(this['interaction']['id'])})[_0x9061('0x1f')](function(_0x4f8ab9){_0x557289['body'][_0x9061('0x28')]=_0x4f8ab9;_0x3bc693[_0x9061('0x1d')]=_0x4f8ab9[_0x9061('0x29')][_0x9061('0x2a')][_0x9061('0x2b')];_0x3bc693[_0x9061('0x2c')]=_0x9061('0x28');_0x3bc693[_0x9061('0x2d')]=JSON[_0x9061('0x22')](_0x4f8ab9);return rpc[_0x11327+_0x9061('0x1e')][_0x9061('0x2e')](_0x3bc693)[_0x9061('0x1f')](function(_0x5aac14){logger['info'](_0x9061('0xf'),_0x259fbd,_0x3bc693[_0x9061('0x1d')]);if(_0x4f8ab9[_0x9061('0x29')][_0x9061('0x2f')][_0x9061('0x30')]){_0x5a950f['next']();}else{_0x5a950f[_0x9061('0x31')]();}})['catch'](function(_0x57edeb){logger[_0x9061('0x21')](_0x9061('0xf'),_0x259fbd,JSON[_0x9061('0x22')](_0x57edeb));_0x5a950f[_0x9061('0x32')]();});})[_0x9061('0x20')](function(_0x5a9ca4){logger[_0x9061('0x21')](_0x9061('0xf'),_0x259fbd,_0x5a9ca4[_0x9061('0x27')]);_0x5a950f[_0x9061('0x32')]();});}}catch(_0x29804f){logger['error'](_0x9061('0xf'),_0x259fbd,JSON[_0x9061('0x22')](_0x29804f));_0x5a950f['stop']();}};};
\ No newline at end of file
index 2c37571..f1fba25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89af=['stringify','interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','upperFirst','AccountId','account','created','isEmpty','getMustacheRender','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','SessionsClient','sessionPath','message','detectIntent','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ENDCONVERSATION','intent','name','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','languageCode','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','fulfillmentText','push','dialogflow','md5','moment','bluebird','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','clone','body','Message','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error'];(function(_0x4bed32,_0x55591c){var _0x246bbe=function(_0x32752f){while(--_0x32752f){_0x4bed32['push'](_0x4bed32['shift']());}};_0x246bbe(++_0x55591c);}(_0x89af,0xf9));var _0xf89a=function(_0x4d7205,_0x38976d){_0x4d7205=_0x4d7205-0x0;var _0x57eafa=_0x89af[_0x4d7205];return _0x57eafa;};'use strict';var _=require('lodash');var dialogflow=require(_0xf89a('0x0'));var md5=require(_0xf89a('0x1'));var moment=require(_0xf89a('0x2'));var Promise=require(_0xf89a('0x3'));var logger=require('../../../../config/logger')(_0xf89a('0x4'));var utils=require(_0xf89a('0x5'));var rpc={'chatMessage':require(_0xf89a('0x6')),'openchannelMessage':require(_0xf89a('0x7')),'mailMessage':require(_0xf89a('0x8')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xf89a('0x9')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x2928f8,_0x460eb5,_0x3640d8,_0x23b84e){return new Promise(function(_0x3686d6,_0x9b23e7){var _0x2da85e=_[_0xf89a('0xa')](_0x3640d8);_0x2da85e[_0xf89a('0xb')]=_0x23b84e;return rpc[_0x460eb5+_0xf89a('0xc')][_0xf89a('0xd')](_0x2da85e)[_0xf89a('0xe')](function(){logger[_0xf89a('0xf')](_0xf89a('0x10'),_0x2928f8,_0x2da85e[_0xf89a('0xb')]);_0x3686d6();})[_0xf89a('0x11')](function(_0x160f08){logger[_0xf89a('0x12')](_0xf89a('0x10'),_0x2928f8,JSON[_0xf89a('0x13')](_0x160f08));_0x9b23e7(_0x160f08);});});}exports['consequence']=function(_0x4959c9,_0x13591e){return function(_0x42bc99){try{if(!_['isNil'](this[_0xf89a('0x14')]['UserId'])){logger['info'](_0xf89a('0x10'),_0x4959c9,_0xf89a('0x15'));return _0x42bc99[_0xf89a('0x16')]();}var _0x51e3b8={'ContactId':this[_0xf89a('0x17')]['id'],'sentAt':moment()[_0xf89a('0x18')](_0xf89a('0x19')),'direction':_0xf89a('0x1a')};if(this[_0xf89a('0x1b')]===_0xf89a('0x1c')||this[_0xf89a('0x1b')]===_0xf89a('0x1d')){_0x51e3b8['phone']=this['interaction'][_0xf89a('0x1e')];}var _0x4ca767=this[_0xf89a('0x1b')];if(_0x4ca767===_0xf89a('0x1f')){_0x51e3b8[_0xf89a('0x20')]=this['account']['id'];}else{_0x51e3b8[_[_0xf89a('0x21')](_0x4ca767)+_0xf89a('0x22')]=this[_0xf89a('0x23')]['id'];}_0x51e3b8[_['upperFirst'](_0x4ca767)+'InteractionId']=this[_0xf89a('0x14')]['id'];if(this[_0xf89a('0x14')][_0xf89a('0x24')]){var _0x1f8cad=_0x13591e[0x4];if(!_[_0xf89a('0x25')](_0x1f8cad)){_0x51e3b8[_0xf89a('0xb')]=utils[_0xf89a('0x26')](_0x1f8cad,this);return rpc[_0x4ca767+_0xf89a('0xc')][_0xf89a('0xd')](_0x51e3b8)[_0xf89a('0xe')](function(_0x52b2e7){logger[_0xf89a('0xf')](_0xf89a('0x10'),_0x4959c9,_0x51e3b8[_0xf89a('0xb')]);})['catch'](function(_0x198ee6){logger[_0xf89a('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x4959c9,JSON['stringify'](_0x198ee6));})[_0xf89a('0x27')](function(){logger[_0xf89a('0xf')](_0xf89a('0x28'),_0x4959c9);_0x42bc99[_0xf89a('0x29')]();});}else{logger[_0xf89a('0xf')](_0xf89a('0x2a'),_0x4959c9);_0x42bc99[_0xf89a('0x29')]();}}else{var _0x5cfe5a=this;var _0x3958df=_0x13591e[0x2]['replace'](/\\n/g,'\x0a');var _0x777d1={'credentials':{'private_key':_0x3958df,'client_email':_0x13591e[0x1]}};var _0x4913fa=new dialogflow[(_0xf89a('0x2b'))](_0x777d1);var _0x156fb0=_0x4913fa[_0xf89a('0x2c')](_0x13591e[0x0],md5(_0x5cfe5a[_0xf89a('0x14')]['id']));var _0x538c3a={'session':_0x156fb0,'queryInput':{'text':{'text':_0x5cfe5a[_0xf89a('0x2d')]['body'],'languageCode':_0x13591e[0x3]||'en'}}};return _0x4913fa[_0xf89a('0x2e')](_0x538c3a)[_0xf89a('0xe')](function(_0x7bab62){if(_0x7bab62&&_0x7bab62['length']){_0x5cfe5a['body'][_0xf89a('0x2f')]=_0x7bab62;var _0x279676=_0x7bab62[0x0];var _0x1bccbd=_0x279676[_0xf89a('0x30')]['diagnosticInfo']&&_0x279676['queryResult'][_0xf89a('0x31')]['fields']?_0x279676[_0xf89a('0x30')][_0xf89a('0x31')][_0xf89a('0x32')][_0xf89a('0x33')][_0xf89a('0x34')]:![];_0x5cfe5a['body'][_0xf89a('0x35')]=_0x279676[_0xf89a('0x30')]['action'];_0x5cfe5a[_0xf89a('0xb')]['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x279676['queryResult']['allRequiredParamsPresent'];_0x5cfe5a[_0xf89a('0xb')][_0xf89a('0x36')]=_0x279676[_0xf89a('0x30')][_0xf89a('0x31')]&&_0x279676[_0xf89a('0x30')][_0xf89a('0x31')][_0xf89a('0x32')]?_0x279676['queryResult'][_0xf89a('0x31')]['fields']['end_conversation'][_0xf89a('0x34')]:![];_0x5cfe5a[_0xf89a('0xb')]['DIALOGFLOWV2_INTENTNAME']=_0x279676['queryResult'][_0xf89a('0x37')][_0xf89a('0x38')];_0x5cfe5a[_0xf89a('0xb')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x279676[_0xf89a('0x30')][_0xf89a('0x37')][_0xf89a('0x39')];_0x5cfe5a[_0xf89a('0xb')][_0xf89a('0x3a')]=_0x279676[_0xf89a('0x30')][_0xf89a('0x37')][_0xf89a('0x3b')];_0x5cfe5a['body']['DIALOGFLOWV2_LANGUAGECODE']=_0x279676[_0xf89a('0x30')][_0xf89a('0x3c')];_0x5cfe5a['body'][_0xf89a('0x3d')]=_0x279676[_0xf89a('0x30')]['queryText'];_0x5cfe5a[_0xf89a('0xb')][_0xf89a('0x3e')]=_0x279676['queryResult'][_0xf89a('0x3f')];_0x51e3b8[_0xf89a('0x40')]='dialogflowV2';_0x51e3b8['providerResponse']=JSON[_0xf89a('0x13')](_0x7bab62);var _0x788396=[];for(var _0x413cc7=0x0;_0x413cc7<_0x7bab62['length'];_0x413cc7++){var _0x5e9914=_0x7bab62[_0x413cc7];if(_0x5e9914&&_0x5e9914[_0xf89a('0x30')]&&_0x5e9914[_0xf89a('0x30')][_0xf89a('0x41')]){_0x788396[_0xf89a('0x42')](createMessage(_0x4959c9,_0x4ca767,_0x51e3b8,_0x5e9914[_0xf89a('0x30')][_0xf89a('0x41')]));}}return Promise['all'](_0x788396)[_0xf89a('0xe')](function(){if(_0x1bccbd){_0x42bc99['next']();}else{_0x42bc99[_0xf89a('0x29')]();}})[_0xf89a('0x11')](function(_0xc80882){logger[_0xf89a('0x12')](_0xf89a('0x10'),_0x4959c9,JSON[_0xf89a('0x13')](_0xc80882));_0x42bc99[_0xf89a('0x16')]();});}})[_0xf89a('0x11')](function(_0x4e3ea9){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x4959c9,_0x4e3ea9[_0xf89a('0x2d')]);_0x42bc99[_0xf89a('0x16')]();});}}catch(_0x430f6d){logger[_0xf89a('0x12')](_0xf89a('0x10'),_0x4959c9,JSON[_0xf89a('0x13')](_0x430f6d));_0x42bc99[_0xf89a('0x29')]();}};};
\ No newline at end of file
+var _0x4983=['contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','AccountId','InteractionId','created','isEmpty','getMustacheRender','then','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','boolValue','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','name','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','fulfillmentText','push','all','lodash','md5','moment','bluebird','../../../../config/logger','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','clone','Message','create','[%s][DIALOGFLOWV2]\x20%s','body','catch','error','stringify','consequence','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next'];(function(_0x451cc1,_0xba13e2){var _0x11745b=function(_0x50ce99){while(--_0x50ce99){_0x451cc1['push'](_0x451cc1['shift']());}};_0x11745b(++_0xba13e2);}(_0x4983,0x1a4));var _0x3498=function(_0x12db9e,_0x516d69){_0x12db9e=_0x12db9e-0x0;var _0x3910f9=_0x4983[_0x12db9e];return _0x3910f9;};'use strict';var _=require(_0x3498('0x0'));var dialogflow=require('dialogflow');var md5=require(_0x3498('0x1'));var moment=require(_0x3498('0x2'));var Promise=require(_0x3498('0x3'));var logger=require(_0x3498('0x4'))('routing');var utils=require('./utils');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x3498('0x5')),'mailMessage':require(_0x3498('0x6')),'smsMessage':require(_0x3498('0x7')),'faxMessage':require(_0x3498('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x38904b,_0x9c7174,_0x4cfa43,_0x35455a){return new Promise(function(_0x162d45,_0x1f9cff){var _0x3f9fa9=_[_0x3498('0x9')](_0x4cfa43);_0x3f9fa9['body']=_0x35455a;return rpc[_0x9c7174+_0x3498('0xa')][_0x3498('0xb')](_0x3f9fa9)['then'](function(){logger['info'](_0x3498('0xc'),_0x38904b,_0x3f9fa9[_0x3498('0xd')]);_0x162d45();})[_0x3498('0xe')](function(_0x1d2c98){logger[_0x3498('0xf')](_0x3498('0xc'),_0x38904b,JSON[_0x3498('0x10')](_0x1d2c98));_0x1f9cff(_0x1d2c98);});});}exports[_0x3498('0x11')]=function(_0x5e7c69,_0x5666be){return function(_0x4a8908){try{if(!_[_0x3498('0x12')](this[_0x3498('0x13')][_0x3498('0x14')])){logger[_0x3498('0x15')]('[%s][DIALOGFLOWV2]\x20%s',_0x5e7c69,_0x3498('0x16'));return _0x4a8908[_0x3498('0x17')]();}var _0x11f42d={'ContactId':this[_0x3498('0x18')]['id'],'sentAt':moment()[_0x3498('0x19')](_0x3498('0x1a')),'direction':_0x3498('0x1b')};if(this[_0x3498('0x1c')]===_0x3498('0x1d')||this[_0x3498('0x1c')]===_0x3498('0x1e')){_0x11f42d[_0x3498('0x1f')]=this[_0x3498('0x13')][_0x3498('0x1f')];}var _0x42a258=this[_0x3498('0x1c')];if(_0x42a258===_0x3498('0x20')){_0x11f42d[_0x3498('0x21')]=this[_0x3498('0x22')]['id'];}else{_0x11f42d[_['upperFirst'](_0x42a258)+_0x3498('0x23')]=this['account']['id'];}_0x11f42d[_['upperFirst'](_0x42a258)+_0x3498('0x24')]=this[_0x3498('0x13')]['id'];if(this[_0x3498('0x13')][_0x3498('0x25')]){var _0x698b0f=_0x5666be[0x4];if(!_[_0x3498('0x26')](_0x698b0f)){_0x11f42d[_0x3498('0xd')]=utils[_0x3498('0x27')](_0x698b0f,this);return rpc[_0x42a258+_0x3498('0xa')][_0x3498('0xb')](_0x11f42d)[_0x3498('0x28')](function(_0x205607){logger[_0x3498('0x15')](_0x3498('0xc'),_0x5e7c69,_0x11f42d[_0x3498('0xd')]);})[_0x3498('0xe')](function(_0x253359){logger['error'](_0x3498('0xc'),_0x5e7c69,JSON[_0x3498('0x10')](_0x253359));})['finally'](function(){logger[_0x3498('0x15')](_0x3498('0x29'),_0x5e7c69);_0x4a8908[_0x3498('0x2a')]();});}else{logger[_0x3498('0x15')](_0x3498('0x2b'),_0x5e7c69);_0x4a8908[_0x3498('0x2a')]();}}else{var _0x2d087c=this;var _0x3b0222=_0x5666be[0x2][_0x3498('0x2c')](/\\n/g,'\x0a');var _0x7b5fc6={'credentials':{'private_key':_0x3b0222,'client_email':_0x5666be[0x1]}};var _0x75c0d0=new dialogflow[(_0x3498('0x2d'))](_0x7b5fc6);var _0x43b001=_0x75c0d0[_0x3498('0x2e')](_0x5666be[0x0],md5(_0x2d087c[_0x3498('0x13')]['id']));var _0x2194ac={'session':_0x43b001,'queryInput':{'text':{'text':_0x2d087c[_0x3498('0x2f')][_0x3498('0xd')],'languageCode':_0x5666be[0x3]||'en'}}};return _0x75c0d0[_0x3498('0x30')](_0x2194ac)[_0x3498('0x28')](function(_0xf4ee49){if(_0xf4ee49&&_0xf4ee49[_0x3498('0x31')]){_0x2d087c[_0x3498('0xd')][_0x3498('0x32')]=_0xf4ee49;var _0x3c0dca=_0xf4ee49[0x0];var _0x376baf=_0x3c0dca[_0x3498('0x33')][_0x3498('0x34')]&&_0x3c0dca[_0x3498('0x33')]['diagnosticInfo'][_0x3498('0x35')]?_0x3c0dca[_0x3498('0x33')]['diagnosticInfo'][_0x3498('0x35')]['end_conversation'][_0x3498('0x36')]:![];_0x2d087c['body']['DIALOGFLOWV2_ACTION']=_0x3c0dca[_0x3498('0x33')]['action'];_0x2d087c[_0x3498('0xd')][_0x3498('0x37')]=_0x3c0dca[_0x3498('0x33')][_0x3498('0x38')];_0x2d087c['body'][_0x3498('0x39')]=_0x3c0dca['queryResult'][_0x3498('0x34')]&&_0x3c0dca[_0x3498('0x33')]['diagnosticInfo'][_0x3498('0x35')]?_0x3c0dca['queryResult'][_0x3498('0x34')][_0x3498('0x35')]['end_conversation'][_0x3498('0x36')]:![];_0x2d087c['body'][_0x3498('0x3a')]=_0x3c0dca[_0x3498('0x33')]['intent'][_0x3498('0x3b')];_0x2d087c[_0x3498('0xd')][_0x3498('0x3c')]=_0x3c0dca[_0x3498('0x33')][_0x3498('0x3d')]['displayName'];_0x2d087c['body'][_0x3498('0x3e')]=_0x3c0dca[_0x3498('0x33')][_0x3498('0x3d')][_0x3498('0x3f')];_0x2d087c[_0x3498('0xd')]['DIALOGFLOWV2_LANGUAGECODE']=_0x3c0dca['queryResult'][_0x3498('0x40')];_0x2d087c[_0x3498('0xd')][_0x3498('0x41')]=_0x3c0dca[_0x3498('0x33')][_0x3498('0x42')];_0x2d087c['body'][_0x3498('0x43')]=_0x3c0dca[_0x3498('0x33')][_0x3498('0x44')];_0x11f42d[_0x3498('0x45')]=_0x3498('0x32');_0x11f42d[_0x3498('0x46')]=JSON[_0x3498('0x10')](_0xf4ee49);var _0x3e5764=[];for(var _0x283fe3=0x0;_0x283fe3<_0xf4ee49[_0x3498('0x31')];_0x283fe3++){var _0x4e0df0=_0xf4ee49[_0x283fe3];if(_0x4e0df0&&_0x4e0df0['queryResult']&&_0x4e0df0[_0x3498('0x33')][_0x3498('0x47')]){_0x3e5764[_0x3498('0x48')](createMessage(_0x5e7c69,_0x42a258,_0x11f42d,_0x4e0df0[_0x3498('0x33')][_0x3498('0x47')]));}}return Promise[_0x3498('0x49')](_0x3e5764)[_0x3498('0x28')](function(){if(_0x376baf){_0x4a8908[_0x3498('0x17')]();}else{_0x4a8908[_0x3498('0x2a')]();}})[_0x3498('0xe')](function(_0x1204ad){logger['error'](_0x3498('0xc'),_0x5e7c69,JSON[_0x3498('0x10')](_0x1204ad));_0x4a8908['next']();});}})[_0x3498('0xe')](function(_0x5b719d){logger[_0x3498('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x5e7c69,_0x5b719d['message']);_0x4a8908[_0x3498('0x17')]();});}}catch(_0x4c26fc){logger[_0x3498('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x5e7c69,JSON[_0x3498('0x10')](_0x4c26fc));_0x4a8908[_0x3498('0x2a')]();}};};
\ No newline at end of file
index e8e55cd..26f8fca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc923=['priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stop','[%s][GOTOIF]\x20eval\x20error:\x20%s','message','[%s][GOTOIF]\x20%s','stringify','validate','lodash','html-to-text','../../../../config/logger','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','fromString','getMustacheRender','length','error','map','join','condition'];(function(_0x47dbd5,_0x5c3019){var _0x2ba9b6=function(_0x4245ce){while(--_0x4245ce){_0x47dbd5['push'](_0x47dbd5['shift']());}};_0x2ba9b6(++_0x5c3019);}(_0xc923,0x14c));var _0x3c92=function(_0x39e5da,_0x23da9a){_0x39e5da=_0x39e5da-0x0;var _0x4b060f=_0xc923[_0x39e5da];return _0x4b060f;};'use strict';var schema=require(_0x3c92('0x0'));var _=require(_0x3c92('0x1'));var htmlToText=require(_0x3c92('0x2'));var utils=require('./utils');var logger=require(_0x3c92('0x3'))(_0x3c92('0x4'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0x3c92('0x5')},'priorityTrue':{'type':_0x3c92('0x6'),'message':_0x3c92('0x7')},'priorityFalse':{'type':_0x3c92('0x6'),'message':_0x3c92('0x8')}});exports['consequence']=function(_0x1367dd,_0x4c5d17){return function(_0x245571){try{var _0x59ae60={'condition':htmlToText[_0x3c92('0x9')](utils[_0x3c92('0xa')](_0x4c5d17[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x4c5d17[0x1],'priorityFalse':_0x4c5d17[0x2]};var _0x4080bc=gotoif[_0x3c92('0x0')](_0x59ae60,{'typecast':!![]});if(_0x4080bc[_0x3c92('0xb')]){logger[_0x3c92('0xc')]('[%s][GOTOIF]\x20%s',_0x1367dd,_[_0x3c92('0xd')](_0x4080bc,'message')[_0x3c92('0xe')](',\x20'));_0x245571['stop']();}else{try{var _0x197754=eval('('+_0x59ae60[_0x3c92('0xf')]+')');var _0x1c9f76=_0x197754?_0x59ae60['priorityTrue']:_0x59ae60[_0x3c92('0x10')];logger[_0x3c92('0x11')](_0x3c92('0x12'),_0x1367dd,_0x59ae60[_0x3c92('0xf')],_0x197754,_0x1c9f76||_0x3c92('0x13'));if(_0x1c9f76){var _0x421cef=_[_0x3c92('0x14')](_0x245571[_0x3c92('0x15')](),{'p':_0x1c9f76});if(_0x421cef>=0x0){logger[_0x3c92('0x11')](_0x3c92('0x16'),_0x1367dd,_0x1c9f76||_0x3c92('0x13'),_0x421cef);_0x245571[_0x3c92('0x13')](_0x421cef);}else{logger[_0x3c92('0x11')](_0x3c92('0x17'),_0x1367dd,_0x1c9f76||_0x3c92('0x13'));_0x245571[_0x3c92('0x18')]();}}else{_0x245571['next']();}}catch(_0x10f5a1){logger[_0x3c92('0xc')](_0x3c92('0x19'),_0x1367dd,_0x10f5a1[_0x3c92('0x1a')]);_0x245571['stop']();}}}catch(_0xc33d9b){logger[_0x3c92('0xc')](_0x3c92('0x1b'),_0x1367dd,JSON[_0x3c92('0x1c')](_0xc33d9b));_0x245571['stop']();}};};
\ No newline at end of file
+var _0xda37=['[%s][GOTOIF]\x20%s','validate','lodash','html-to-text','./utils','routing','string','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','map','message','join','stop','condition','priorityTrue','priorityFalse','info','next','findIndex','rules'];(function(_0x532112,_0x37d94b){var _0x23e5fb=function(_0x690ac8){while(--_0x690ac8){_0x532112['push'](_0x532112['shift']());}};_0x23e5fb(++_0x37d94b);}(_0xda37,0xfd));var _0x7da3=function(_0x3920ad,_0x5ba46f){_0x3920ad=_0x3920ad-0x0;var _0x294225=_0xda37[_0x3920ad];return _0x294225;};'use strict';var schema=require(_0x7da3('0x0'));var _=require(_0x7da3('0x1'));var htmlToText=require(_0x7da3('0x2'));var utils=require(_0x7da3('0x3'));var logger=require('../../../../config/logger')(_0x7da3('0x4'));var gotoif=schema({'condition':{'type':_0x7da3('0x5'),'required':!![],'message':_0x7da3('0x6')},'priorityTrue':{'type':_0x7da3('0x7'),'message':_0x7da3('0x8')},'priorityFalse':{'type':_0x7da3('0x7'),'message':_0x7da3('0x9')}});exports[_0x7da3('0xa')]=function(_0x54bf2c,_0x4e50be){return function(_0x3192e0){try{var _0x59a58c={'condition':htmlToText[_0x7da3('0xb')](utils[_0x7da3('0xc')](_0x4e50be[0x0],this),{'wordwrap':![]})[_0x7da3('0xd')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x4e50be[0x1],'priorityFalse':_0x4e50be[0x2]};var _0x5e31ad=gotoif[_0x7da3('0x0')](_0x59a58c,{'typecast':!![]});if(_0x5e31ad[_0x7da3('0xe')]){logger[_0x7da3('0xf')]('[%s][GOTOIF]\x20%s',_0x54bf2c,_[_0x7da3('0x10')](_0x5e31ad,_0x7da3('0x11'))[_0x7da3('0x12')](',\x20'));_0x3192e0[_0x7da3('0x13')]();}else{try{var _0x2d7f57=eval('('+_0x59a58c[_0x7da3('0x14')]+')');var _0x172311=_0x2d7f57?_0x59a58c[_0x7da3('0x15')]:_0x59a58c[_0x7da3('0x16')];logger[_0x7da3('0x17')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x54bf2c,_0x59a58c[_0x7da3('0x14')],_0x2d7f57,_0x172311||_0x7da3('0x18'));if(_0x172311){var _0x543ccb=_[_0x7da3('0x19')](_0x3192e0[_0x7da3('0x1a')](),{'p':_0x172311});if(_0x543ccb>=0x0){logger[_0x7da3('0x17')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x54bf2c,_0x172311||'next',_0x543ccb);_0x3192e0[_0x7da3('0x18')](_0x543ccb);}else{logger['info']('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x54bf2c,_0x172311||'next');_0x3192e0[_0x7da3('0x13')]();}}else{_0x3192e0[_0x7da3('0x18')]();}}catch(_0x12f196){logger['error']('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x54bf2c,_0x12f196[_0x7da3('0x11')]);_0x3192e0['stop']();}}}catch(_0x5303d1){logger[_0x7da3('0xf')](_0x7da3('0x1b'),_0x54bf2c,JSON['stringify'](_0x5303d1));_0x3192e0['stop']();}};};
\ No newline at end of file
index e457ed1..e93703c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeb6=['stringify','validate','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','[%s][GOTOP]\x20%s','map','join','stop','[%s][GOTOP]\x20priority\x20%s','priority','rules','info','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','error'];(function(_0x1b52f2,_0x3fa780){var _0xe12880=function(_0x22f001){while(--_0x22f001){_0x1b52f2['push'](_0x1b52f2['shift']());}};_0xe12880(++_0x3fa780);}(_0xbeb6,0x1cf));var _0x6beb=function(_0x40643a,_0xd85b31){_0x40643a=_0x40643a-0x0;var _0x10f238=_0xbeb6[_0x40643a];return _0x10f238;};'use strict';var schema=require(_0x6beb('0x0'));var _=require(_0x6beb('0x1'));var logger=require(_0x6beb('0x2'))(_0x6beb('0x3'));var gotop=schema({'priority':{'type':_0x6beb('0x4'),'required':!![],'message':_0x6beb('0x5')}});exports[_0x6beb('0x6')]=function(_0x4ba6db,_0x4ce9e3){return function(_0x50c51c){try{var _0x94f9f5={'priority':_0x4ce9e3[0x0]};var _0x5b3419=gotop[_0x6beb('0x0')](_0x94f9f5,{'typecast':!![]});if(_0x5b3419[_0x6beb('0x7')]){logger['error'](_0x6beb('0x8'),_0x4ba6db,_[_0x6beb('0x9')](_0x5b3419,'message')[_0x6beb('0xa')](',\x20'));_0x50c51c[_0x6beb('0xb')]();}else{logger['info'](_0x6beb('0xc'),_0x4ba6db,_0x94f9f5[_0x6beb('0xd')]);if(_0x94f9f5['priority']){var _0x53cf76=_['findIndex'](_0x50c51c[_0x6beb('0xe')](),{'p':_0x94f9f5[_0x6beb('0xd')]});if(_0x53cf76>=0x0){logger[_0x6beb('0xf')](_0x6beb('0x10'),_0x4ba6db,_0x94f9f5['priority']||_0x6beb('0x11'),_0x53cf76);_0x50c51c[_0x6beb('0x11')](_0x53cf76);}else{logger[_0x6beb('0xf')](_0x6beb('0x12'),_0x4ba6db,_0x94f9f5[_0x6beb('0xd')]||_0x6beb('0x11'));_0x50c51c[_0x6beb('0xb')]();}}else{_0x50c51c[_0x6beb('0x11')]();}}}catch(_0x9bf6fa){logger[_0x6beb('0x13')](_0x6beb('0x8'),_0x4ba6db,JSON[_0x6beb('0x14')](_0x9bf6fa));_0x50c51c[_0x6beb('0xb')]();}};};
\ No newline at end of file
+var _0xddb3=['routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','validate','length','error','[%s][GOTOP]\x20%s','message','join','stop','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','info','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','lodash','../../../../config/logger'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0xddb3,0xbb));var _0x3ddb=function(_0x3d8678,_0x53fe23){_0x3d8678=_0x3d8678-0x0;var _0x51817d=_0xddb3[_0x3d8678];return _0x51817d;};'use strict';var schema=require('validate');var _=require(_0x3ddb('0x0'));var logger=require(_0x3ddb('0x1'))(_0x3ddb('0x2'));var gotop=schema({'priority':{'type':_0x3ddb('0x3'),'required':!![],'message':_0x3ddb('0x4')}});exports['consequence']=function(_0x47d598,_0x5a1122){return function(_0x1e70ee){try{var _0xdb7798={'priority':_0x5a1122[0x0]};var _0x4d5e25=gotop[_0x3ddb('0x5')](_0xdb7798,{'typecast':!![]});if(_0x4d5e25[_0x3ddb('0x6')]){logger[_0x3ddb('0x7')](_0x3ddb('0x8'),_0x47d598,_['map'](_0x4d5e25,_0x3ddb('0x9'))[_0x3ddb('0xa')](',\x20'));_0x1e70ee[_0x3ddb('0xb')]();}else{logger['info'](_0x3ddb('0xc'),_0x47d598,_0xdb7798[_0x3ddb('0xd')]);if(_0xdb7798['priority']){var _0x468f20=_[_0x3ddb('0xe')](_0x1e70ee[_0x3ddb('0xf')](),{'p':_0xdb7798[_0x3ddb('0xd')]});if(_0x468f20>=0x0){logger['info'](_0x3ddb('0x10'),_0x47d598,_0xdb7798[_0x3ddb('0xd')]||_0x3ddb('0x11'),_0x468f20);_0x1e70ee[_0x3ddb('0x11')](_0x468f20);}else{logger[_0x3ddb('0x12')](_0x3ddb('0x13'),_0x47d598,_0xdb7798[_0x3ddb('0xd')]||_0x3ddb('0x11'));_0x1e70ee[_0x3ddb('0xb')]();}}else{_0x1e70ee[_0x3ddb('0x11')]();}}}catch(_0x35847c){logger[_0x3ddb('0x7')](_0x3ddb('0x8'),_0x47d598,JSON[_0x3ddb('0x14')](_0x35847c));_0x1e70ee['stop']();}};};
\ No newline at end of file
index 928fa1d..90a4fce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x263f=['then','info','[%s][MESSAGE]\x20%s','body','next','stringify','stop','error','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','getMustacheRender','contact','channel','chat','account','upperFirst','AccountId','interaction','Message','create'];(function(_0x21e2b6,_0x35caf6){var _0x2f8e47=function(_0x5ab9f0){while(--_0x5ab9f0){_0x21e2b6['push'](_0x21e2b6['shift']());}};_0x2f8e47(++_0x35caf6);}(_0x263f,0x182));var _0xf263=function(_0x589326,_0x1e9170){_0x589326=_0x589326-0x0;var _0x47864e=_0x263f[_0x589326];return _0x47864e;};'use strict';var _=require(_0xf263('0x0'));var utils=require(_0xf263('0x1'));var logger=require(_0xf263('0x2'))(_0xf263('0x3'));var rpc={'chatMessage':require(_0xf263('0x4')),'openchannelMessage':require(_0xf263('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xf263('0x6')),'faxMessage':require(_0xf263('0x7')),'whatsappMessage':require(_0xf263('0x8'))};exports['consequence']=function(_0xbd1369,_0xdb2fc1){return function(_0x4c7ab2){try{var _0x4fded6={'body':utils[_0xf263('0x9')](_0xdb2fc1[0x0],this),'ContactId':this[_0xf263('0xa')]['id']};if(this[_0xf263('0xb')]===_0xf263('0xc')){_0x4fded6['ChatWebsiteId']=this[_0xf263('0xd')]['id'];}else{_0x4fded6[_[_0xf263('0xe')](this[_0xf263('0xb')])+_0xf263('0xf')]=this[_0xf263('0xd')]['id'];}_0x4fded6[_[_0xf263('0xe')](this[_0xf263('0xb')])+'InteractionId']=this[_0xf263('0x10')]['id'];if(rpc[this['channel']+_0xf263('0x11')]){return rpc[this['channel']+'Message'][_0xf263('0x12')](_0x4fded6)[_0xf263('0x13')](function(_0x17471d){logger[_0xf263('0x14')](_0xf263('0x15'),_0xbd1369,_0x4fded6[_0xf263('0x16')]);_0x4c7ab2[_0xf263('0x17')]();})['catch'](function(_0x2f40d8){logger['error'](_0xf263('0x15'),_0xbd1369,JSON[_0xf263('0x18')](_0x2f40d8));_0x4c7ab2[_0xf263('0x19')]();});}}catch(_0x402739){logger[_0xf263('0x1a')](_0xf263('0x15'),_0xbd1369,JSON[_0xf263('0x18')](_0x402739));_0x4c7ab2['stop']();}};};
\ No newline at end of file
+var _0x9652=['consequence','getMustacheRender','contact','channel','chat','account','upperFirst','AccountId','InteractionId','Message','create','then','[%s][MESSAGE]\x20%s','body','next','catch','error','stop','stringify','lodash','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9652,0xaf));var _0x2965=function(_0x2d31b8,_0x242597){_0x2d31b8=_0x2d31b8-0x0;var _0x547be0=_0x9652[_0x2d31b8];return _0x547be0;};'use strict';var _=require(_0x2965('0x0'));var utils=require(_0x2965('0x1'));var logger=require('../../../../config/logger')(_0x2965('0x2'));var rpc={'chatMessage':require(_0x2965('0x3')),'openchannelMessage':require(_0x2965('0x4')),'mailMessage':require(_0x2965('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x2965('0x6'))};exports[_0x2965('0x7')]=function(_0x4eb258,_0x5205c7){return function(_0x4c347e){try{var _0x694054={'body':utils[_0x2965('0x8')](_0x5205c7[0x0],this),'ContactId':this[_0x2965('0x9')]['id']};if(this[_0x2965('0xa')]===_0x2965('0xb')){_0x694054['ChatWebsiteId']=this[_0x2965('0xc')]['id'];}else{_0x694054[_[_0x2965('0xd')](this[_0x2965('0xa')])+_0x2965('0xe')]=this[_0x2965('0xc')]['id'];}_0x694054[_['upperFirst'](this[_0x2965('0xa')])+_0x2965('0xf')]=this['interaction']['id'];if(rpc[this[_0x2965('0xa')]+_0x2965('0x10')]){return rpc[this[_0x2965('0xa')]+_0x2965('0x10')][_0x2965('0x11')](_0x694054)[_0x2965('0x12')](function(_0x23164b){logger['info'](_0x2965('0x13'),_0x4eb258,_0x694054[_0x2965('0x14')]);_0x4c347e[_0x2965('0x15')]();})[_0x2965('0x16')](function(_0x1474bc){logger[_0x2965('0x17')](_0x2965('0x13'),_0x4eb258,JSON['stringify'](_0x1474bc));_0x4c347e[_0x2965('0x18')]();});}}catch(_0x36b49b){logger['error'](_0x2965('0x13'),_0x4eb258,JSON[_0x2965('0x19')](_0x36b49b));_0x4c347e[_0x2965('0x18')]();}};};
\ No newline at end of file
index cc55532..88bae0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65c6=['consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stop','../../../../config/logger'];(function(_0x377125,_0x34a148){var _0x5ad9ca=function(_0x445046){while(--_0x445046){_0x377125['push'](_0x377125['shift']());}};_0x5ad9ca(++_0x34a148);}(_0x65c6,0x157));var _0x665c=function(_0x38c4d8,_0x2470b8){_0x38c4d8=_0x38c4d8-0x0;var _0x5a7d91=_0x65c6[_0x38c4d8];return _0x5a7d91;};'use strict';var utils=require('./utils');var logger=require(_0x665c('0x0'))('routing');exports[_0x665c('0x1')]=function(_0x569183,_0x36f87a){return function(_0x149ecf){try{logger[_0x665c('0x2')](_0x665c('0x3'),_0x569183,utils[_0x665c('0x4')](_0x36f87a[0x0],this));_0x149ecf[_0x665c('0x5')]();}catch(_0xdf1b7f){logger[_0x665c('0x6')](_0x665c('0x3'),_0x569183,JSON['stringify'](_0xdf1b7f));_0x149ecf[_0x665c('0x7')]();}};};
\ No newline at end of file
+var _0x1f36=['[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','stop','./utils','../../../../config/logger','routing','consequence','info'];(function(_0x4433d2,_0x39dde0){var _0x4ce484=function(_0x16b485){while(--_0x16b485){_0x4433d2['push'](_0x4433d2['shift']());}};_0x4ce484(++_0x39dde0);}(_0x1f36,0x187));var _0x61f3=function(_0x11090e,_0x2f1226){_0x11090e=_0x11090e-0x0;var _0x103e19=_0x1f36[_0x11090e];return _0x103e19;};'use strict';var utils=require(_0x61f3('0x0'));var logger=require(_0x61f3('0x1'))(_0x61f3('0x2'));exports[_0x61f3('0x3')]=function(_0x46e9ea,_0x1ffeba){return function(_0x19754b){try{logger[_0x61f3('0x4')](_0x61f3('0x5'),_0x46e9ea,utils[_0x61f3('0x6')](_0x1ffeba[0x0],this));_0x19754b[_0x61f3('0x7')]();}catch(_0x2e3046){logger[_0x61f3('0x8')](_0x61f3('0x5'),_0x46e9ea,JSON[_0x61f3('0x9')](_0x2e3046));_0x19754b[_0x61f3('0xa')]();}};};
\ No newline at end of file
index 529db06..6151f81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe823=['contact','list','upperFirst','channel','interaction','MessageId','message','chat','WebsiteId','QueueReport','create','catch','create\x20queue\x20report','accepted','info','[%s][STOP:QUEUE][NAME:%s]','name','update','error','YYYY-MM-DD\x20HH:mm:ss','timeout','update\x20queue\x20report','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','join','stop','find','Queues','createQueue','atimeout','rules','[%s][QUEUE]\x20ROUTING\x20STOPPED','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','validate','lodash','seq-queue','moment','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','socket.io-emitter','queue_id','account','queue','from','joinAt','clone','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','../../rpc/openchannelQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body'];(function(_0x273381,_0x1d5e82){var _0x985755=function(_0x755e9d){while(--_0x755e9d){_0x273381['push'](_0x273381['shift']());}};_0x985755(++_0x1d5e82);}(_0xe823,0x1de));var _0x3e82=function(_0x31dc58,_0x3def7d){_0x31dc58=_0x31dc58-0x0;var _0x1eed58=_0xe823[_0x31dc58];return _0x1eed58;};'use strict';var schema=require(_0x3e82('0x0'));var _=require(_0x3e82('0x1'));var util=require('util');var seqqueue=require(_0x3e82('0x2'));var moment=require(_0x3e82('0x3'));var Redis=require('ioredis');var config=require(_0x3e82('0x4'));var logger=require(_0x3e82('0x5'))(_0x3e82('0x6'));var strategy=require(_0x3e82('0x7'));config[_0x3e82('0x8')]=_[_0x3e82('0x9')](config[_0x3e82('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x3e82('0xa'))(new Redis(config['redis']));var attributes=['id',_0x3e82('0xb'),_0x3e82('0xc'),_0x3e82('0xd'),_0x3e82('0xe'),_0x3e82('0xf')];function emit(_0x1874c3,_0x1ecc47,_0x37ca50){io['to'](_0x1874c3)['emit'](_0x1ecc47,_0x37ca50);}function emitChannelQueueInteraction(_0xf3b1f2,_0x13d0cf,_0x47e058,_0x1d85b4,_0x3c2d78,_0x5670d0,_0x4a9282,_0xa3f486){var _0x398ade=_[_0x3e82('0x10')](_0x47e058);_0x398ade[_0x3e82('0xb')]=_0xa3f486;_0x398ade[_0x3e82('0xd')]=_0x13d0cf;_0x398ade[_0x3e82('0xc')]=_0x1d85b4;_0x398ade['id']=_0x3c2d78;if(_0x5670d0){_0x4a9282[util[_0x3e82('0x11')](_0x3e82('0x12'),_0xf3b1f2)][_0x3c2d78]=_[_0x3e82('0x13')](_0x398ade,attributes);}else{delete _0x4a9282[util[_0x3e82('0x11')](_0x3e82('0x12'),_0xf3b1f2)][_0x3c2d78];}emit(util['format'](_0x3e82('0x14'),_0xf3b1f2,_0x13d0cf),util['format'](_0x3e82('0x15'),_0xf3b1f2,_0x5670d0?'save':'remove'),_['pick'](_0x398ade,attributes));}var rpc={'openchannelQueueReport':require(_0x3e82('0x16')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0x3e82('0x17')),'smsQueueReport':require(_0x3e82('0x18')),'faxQueueReport':require(_0x3e82('0x19')),'whatsappQueueReport':require(_0x3e82('0x1a'))};var queue=schema({'name':{'type':_0x3e82('0x1b'),'required':!![],'message':_0x3e82('0x1c')},'timeout':{'type':_0x3e82('0x1d'),'message':_0x3e82('0x1e')}});function startRouting(_0x521b6a,_0x20bb7a,_0xddb628,_0x5c4515){if(_0x521b6a&&_0x20bb7a&&_0xddb628){_0x20bb7a[_0x3e82('0x1f')]+=0x1;var _0x18e9bb={'uniqueid':_0x521b6a,'from':_0xddb628[_0x3e82('0x20')]?_0xddb628['body'][_0x3e82('0xe')]:'','joinAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xddb628['contact']?_0xddb628[_0x3e82('0x21')]['id']:null,'ListId':_0xddb628[_0x3e82('0x22')]?_0xddb628[_0x3e82('0x22')]['id']:null};_0x18e9bb[_[_0x3e82('0x23')](_0xddb628[_0x3e82('0x24')])+'QueueId']=_0x20bb7a['id']||null;_0x18e9bb[_[_0x3e82('0x23')](_0xddb628[_0x3e82('0x24')])+'InteractionId']=_0xddb628[_0x3e82('0x25')]?_0xddb628[_0x3e82('0x25')]['id']:null;_0x18e9bb[_[_0x3e82('0x23')](_0xddb628['channel'])+_0x3e82('0x26')]=_0xddb628[_0x3e82('0x27')]?_0xddb628[_0x3e82('0x27')]['id']:null;_0x18e9bb[_[_0x3e82('0x23')](_0xddb628[_0x3e82('0x24')])+(_0xddb628[_0x3e82('0x24')]!==_0x3e82('0x28')?'AccountId':_0x3e82('0x29'))]=_0xddb628['account']?_0xddb628[_0x3e82('0xc')]['id']:null;logger['info'](util['format']('[%s][START:QUEUE][NAME:%s]',_0x521b6a,_0x20bb7a['name']));emitChannelQueueInteraction(_0xddb628['channel'],_0x20bb7a['name'],_0x18e9bb,_0xddb628[_0x3e82('0xc')]['name'],_0xddb628[_0x3e82('0x27')]['id'],!![],_0x5c4515,_0x20bb7a['id']);if(rpc[_0xddb628[_0x3e82('0x24')]+_0x3e82('0x2a')]){return rpc[_0xddb628['channel']+_0x3e82('0x2a')][_0x3e82('0x2b')](_0x18e9bb)[_0x3e82('0x2c')](function(_0x2093be){logger['error'](_0x3e82('0x2d'));});}}}function stopRouting(_0xaf77,_0x51fe06,_0x4743b9,_0x5a205e){if(_0xaf77&&_0x51fe06){_0x51fe06[_0x3e82('0x1f')]-=0x1;var _0x4d84dc={'leaveAt':moment()[_0x3e82('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0x3e82('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x3e82('0x2e')};logger[_0x3e82('0x2f')](util['format'](_0x3e82('0x30'),_0xaf77,_0x51fe06[_0x3e82('0x31')]));emitChannelQueueInteraction(_0x4743b9['channel'],_0x51fe06['name'],_0x4743b9[_0x3e82('0x20')],_0x4743b9[_0x3e82('0xc')]['name'],_0x4743b9[_0x3e82('0x27')]['id'],![],_0x5a205e,_0x51fe06['id']);if(rpc[_0x4743b9[_0x3e82('0x24')]+_0x3e82('0x2a')]){return rpc[_0x4743b9[_0x3e82('0x24')]+_0x3e82('0x2a')][_0x3e82('0x32')](_0xaf77,_0x4d84dc)[_0x3e82('0x2c')](function(_0x530f1d){logger[_0x3e82('0x33')]('update\x20queue\x20report');});}}}function endRouting(_0x40da7e,_0x144ad4,_0x37a9b9,_0x23e5c5){if(_0x40da7e&&_0x144ad4){_0x144ad4[_0x3e82('0x1f')]-=0x1;var _0x277916={'leaveAt':moment()[_0x3e82('0x11')](_0x3e82('0x34')),'exitAt':moment()['format'](_0x3e82('0x34')),'reason':_0x3e82('0x35')};logger['info'](util[_0x3e82('0x11')]('[%s][END:QUEUE][NAME:%s]',_0x40da7e,_0x144ad4[_0x3e82('0x31')]));emitChannelQueueInteraction(_0x37a9b9['channel'],_0x144ad4[_0x3e82('0x31')],_0x37a9b9[_0x3e82('0x20')],_0x37a9b9[_0x3e82('0xc')][_0x3e82('0x31')],_0x37a9b9['message']['id'],![],_0x23e5c5);if(rpc[_0x37a9b9[_0x3e82('0x24')]+_0x3e82('0x2a')]){return rpc[_0x37a9b9[_0x3e82('0x24')]+_0x3e82('0x2a')]['update'](_0x40da7e,_0x277916)['catch'](function(_0x1b2a70){logger[_0x3e82('0x33')](_0x3e82('0x36'));});}}}function handleFindQueue(_0x3b48fc){return function(_0x21d139){return _0x21d139[_0x3e82('0x31')][_0x3e82('0x37')]()===_0x3b48fc[_0x3e82('0x37')]();};}exports[_0x3e82('0x38')]=function(_0x8c933c,_0xbea892,_0x584327,_0x424a40){return function(_0x36c685){try{var _0x226565={'name':_0xbea892[0x0],'timeout':_0xbea892[0x1]};var _0x341e39=queue[_0x3e82('0x0')](_0x226565,{'typecast':!![]});if(_0x341e39[_0x3e82('0x39')]){logger[_0x3e82('0x33')](_0x3e82('0x3a'),_0x8c933c,_['map'](_0x341e39,_0x3e82('0x27'))[_0x3e82('0x3b')](',\x20'));_0x36c685[_0x3e82('0x3c')]();}else{var _0x2cb534=_[_0x3e82('0x3d')](_0x584327[_0x424a40[_0x3e82('0x24')]+_0x3e82('0x3e')],handleFindQueue(_0x226565[_0x3e82('0x31')]));if(_0x2cb534){startRouting(_0x8c933c,_0x2cb534,_0x424a40,_0x584327);var _0x9ecce4=(_0x2cb534['timeout']||0xa)*0x3e8;var _0x4d12c3=(_0x226565['timeout']||0x14)*0x3e8;var _0x20216b,_0x2a8e8b;if(_0x9ecce4>_0x4d12c3){_0x4d12c3=_0x9ecce4;}var _0x2b5bf5=seqqueue[_0x3e82('0x3f')](_0x9ecce4);_0x2b5bf5['id']=_0x8c933c;_0x2b5bf5[_0x3e82('0x40')]=_0x9ecce4;_0x2b5bf5['qtimeout']=_0x4d12c3;_0x2b5bf5[_0x3e82('0x24')]=_0x424a40[_0x3e82('0x24')];_0x584327[_0x3e82('0x41')][_0x8c933c]['on']('end',function(){logger[_0x3e82('0x2f')](_0x3e82('0x42'),_0x8c933c);stopRouting(_0x8c933c,_0x2cb534,_0x424a40,_0x584327);clearTimeout(_0x20216b);_0x20216b=undefined;_0x2b5bf5['close'](!![]);if(_0x584327['rules'][_0x8c933c]){delete _0x584327[_0x3e82('0x41')][_0x8c933c];}_0x36c685[_0x3e82('0x3c')]();});_0x584327[_0x3e82('0x41')][_0x8c933c]['on'](_0x3e82('0x43'),function(){if(_0x584327[_0x3e82('0x41')][_0x8c933c]){delete _0x584327[_0x3e82('0x41')][_0x8c933c];}});_0x20216b=setTimeout(function(){logger[_0x3e82('0x2f')](_0x3e82('0x44'),_0x8c933c);endRouting(_0x8c933c,_0x2cb534,_0x424a40,_0x584327);clearTimeout(_0x20216b);_0x2b5bf5['close'](!![]);_0x36c685['next']();},_0x4d12c3);switch(_0x2cb534[_0x3e82('0x45')]){case _0x3e82('0x46'):strategy[_0x3e82('0x46')](_0x2b5bf5,_0x2cb534,_0x584327,_0x424a40);break;default:strategy[_0x3e82('0x47')](_0x2b5bf5,_0x2cb534,_0x584327,_0x424a40);}}else{logger[_0x3e82('0x33')](_0x3e82('0x48'),_0x8c933c,_0x226565[_0x3e82('0x31')]);_0x36c685[_0x3e82('0x3c')]();}}}catch(_0x295b8e){console['log'](_0x295b8e);logger[_0x3e82('0x33')](_0x3e82('0x3a'),_0x8c933c,_0x295b8e['stack']);_0x36c685[_0x3e82('0x3c')]();}};};
\ No newline at end of file
+var _0xe29a=['Queues','timeout','createQueue','atimeout','qtimeout','rules','end','stop','[%s][QUEUE]\x20APPLICATION\x20END','close','next','strategy','rrmemory','beepall','stack','validate','lodash','util','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','localhost','socket.io-emitter','queue_id','account','from','clone','queue','%sQueuesWaitingInteractions','pick','format','%s:queue:%s','%s_queue_waiting_interaction:%s','../../rpc/openchannelQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','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','MessageId','message','chat','AccountId','WebsiteId','info','name','QueueReport','create','error','accepted','[%s][STOP:QUEUE][NAME:%s]','update','catch','update\x20queue\x20report','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','join'];(function(_0x13e322,_0x21d0fe){var _0x2f50cd=function(_0x13ac05){while(--_0x13ac05){_0x13e322['push'](_0x13e322['shift']());}};_0x2f50cd(++_0x21d0fe);}(_0xe29a,0x190));var _0xae29=function(_0x38dc6b,_0xc8d300){_0x38dc6b=_0x38dc6b-0x0;var _0x2a04a2=_0xe29a[_0x38dc6b];return _0x2a04a2;};'use strict';var schema=require(_0xae29('0x0'));var _=require(_0xae29('0x1'));var util=require(_0xae29('0x2'));var seqqueue=require('seq-queue');var moment=require(_0xae29('0x3'));var Redis=require(_0xae29('0x4'));var config=require(_0xae29('0x5'));var logger=require(_0xae29('0x6'))(_0xae29('0x7'));var strategy=require(_0xae29('0x8'));config[_0xae29('0x9')]=_[_0xae29('0xa')](config['redis'],{'host':_0xae29('0xb'),'port':0x18eb});var io=require(_0xae29('0xc'))(new Redis(config[_0xae29('0x9')]));var attributes=['id',_0xae29('0xd'),_0xae29('0xe'),'queue',_0xae29('0xf'),'joinAt'];function emit(_0x2dd312,_0x315080,_0x1f5b3a){io['to'](_0x2dd312)['emit'](_0x315080,_0x1f5b3a);}function emitChannelQueueInteraction(_0xa4e538,_0x10a24f,_0xf15996,_0x163863,_0x1d3c85,_0x48aec9,_0x4429c2,_0x43cfb0){var _0x494296=_[_0xae29('0x10')](_0xf15996);_0x494296['queue_id']=_0x43cfb0;_0x494296[_0xae29('0x11')]=_0x10a24f;_0x494296[_0xae29('0xe')]=_0x163863;_0x494296['id']=_0x1d3c85;if(_0x48aec9){_0x4429c2[util['format'](_0xae29('0x12'),_0xa4e538)][_0x1d3c85]=_[_0xae29('0x13')](_0x494296,attributes);}else{delete _0x4429c2[util[_0xae29('0x14')](_0xae29('0x12'),_0xa4e538)][_0x1d3c85];}emit(util['format'](_0xae29('0x15'),_0xa4e538,_0x10a24f),util[_0xae29('0x14')](_0xae29('0x16'),_0xa4e538,_0x48aec9?'save':'remove'),_[_0xae29('0x13')](_0x494296,attributes));}var rpc={'openchannelQueueReport':require(_0xae29('0x17')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0xae29('0x18')),'smsQueueReport':require(_0xae29('0x19')),'faxQueueReport':require(_0xae29('0x1a')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0xae29('0x1b'),'required':!![],'message':_0xae29('0x1c')},'timeout':{'type':_0xae29('0x1d'),'message':_0xae29('0x1e')}});function startRouting(_0x990bb9,_0x44be11,_0x24f428,_0x2c6471){if(_0x990bb9&&_0x44be11&&_0x24f428){_0x44be11[_0xae29('0x1f')]+=0x1;var _0xf459b9={'uniqueid':_0x990bb9,'from':_0x24f428[_0xae29('0x20')]?_0x24f428[_0xae29('0x20')]['from']:'','joinAt':moment()[_0xae29('0x14')](_0xae29('0x21')),'ContactId':_0x24f428[_0xae29('0x22')]?_0x24f428[_0xae29('0x22')]['id']:null,'ListId':_0x24f428[_0xae29('0x23')]?_0x24f428[_0xae29('0x23')]['id']:null};_0xf459b9[_[_0xae29('0x24')](_0x24f428[_0xae29('0x25')])+_0xae29('0x26')]=_0x44be11['id']||null;_0xf459b9[_['upperFirst'](_0x24f428[_0xae29('0x25')])+_0xae29('0x27')]=_0x24f428['interaction']?_0x24f428['interaction']['id']:null;_0xf459b9[_[_0xae29('0x24')](_0x24f428[_0xae29('0x25')])+_0xae29('0x28')]=_0x24f428[_0xae29('0x29')]?_0x24f428[_0xae29('0x29')]['id']:null;_0xf459b9[_[_0xae29('0x24')](_0x24f428[_0xae29('0x25')])+(_0x24f428[_0xae29('0x25')]!==_0xae29('0x2a')?_0xae29('0x2b'):_0xae29('0x2c'))]=_0x24f428[_0xae29('0xe')]?_0x24f428['account']['id']:null;logger[_0xae29('0x2d')](util[_0xae29('0x14')]('[%s][START:QUEUE][NAME:%s]',_0x990bb9,_0x44be11[_0xae29('0x2e')]));emitChannelQueueInteraction(_0x24f428[_0xae29('0x25')],_0x44be11[_0xae29('0x2e')],_0xf459b9,_0x24f428['account']['name'],_0x24f428[_0xae29('0x29')]['id'],!![],_0x2c6471,_0x44be11['id']);if(rpc[_0x24f428[_0xae29('0x25')]+_0xae29('0x2f')]){return rpc[_0x24f428['channel']+_0xae29('0x2f')][_0xae29('0x30')](_0xf459b9)['catch'](function(_0x1b7baa){logger[_0xae29('0x31')]('create\x20queue\x20report');});}}}function stopRouting(_0x38968a,_0x4b6bf4,_0x249564,_0xd65e01){if(_0x38968a&&_0x4b6bf4){_0x4b6bf4[_0xae29('0x1f')]-=0x1;var _0x4b0b19={'leaveAt':moment()[_0xae29('0x14')](_0xae29('0x21')),'acceptAt':moment()[_0xae29('0x14')](_0xae29('0x21')),'reason':_0xae29('0x32')};logger[_0xae29('0x2d')](util[_0xae29('0x14')](_0xae29('0x33'),_0x38968a,_0x4b6bf4[_0xae29('0x2e')]));emitChannelQueueInteraction(_0x249564[_0xae29('0x25')],_0x4b6bf4[_0xae29('0x2e')],_0x249564['body'],_0x249564[_0xae29('0xe')][_0xae29('0x2e')],_0x249564[_0xae29('0x29')]['id'],![],_0xd65e01,_0x4b6bf4['id']);if(rpc[_0x249564[_0xae29('0x25')]+_0xae29('0x2f')]){return rpc[_0x249564[_0xae29('0x25')]+'QueueReport'][_0xae29('0x34')](_0x38968a,_0x4b0b19)[_0xae29('0x35')](function(_0x2971e5){logger[_0xae29('0x31')](_0xae29('0x36'));});}}}function endRouting(_0x5cec27,_0x1893af,_0x2c12ea,_0x32e927){if(_0x5cec27&&_0x1893af){_0x1893af[_0xae29('0x1f')]-=0x1;var _0x217f16={'leaveAt':moment()[_0xae29('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0xae29('0x14')](_0xae29('0x21')),'reason':'timeout'};logger[_0xae29('0x2d')](util[_0xae29('0x14')](_0xae29('0x37'),_0x5cec27,_0x1893af[_0xae29('0x2e')]));emitChannelQueueInteraction(_0x2c12ea['channel'],_0x1893af[_0xae29('0x2e')],_0x2c12ea[_0xae29('0x20')],_0x2c12ea[_0xae29('0xe')][_0xae29('0x2e')],_0x2c12ea['message']['id'],![],_0x32e927);if(rpc[_0x2c12ea['channel']+_0xae29('0x2f')]){return rpc[_0x2c12ea['channel']+_0xae29('0x2f')][_0xae29('0x34')](_0x5cec27,_0x217f16)[_0xae29('0x35')](function(_0xaa94ef){logger[_0xae29('0x31')](_0xae29('0x36'));});}}}function handleFindQueue(_0x29acbc){return function(_0x478914){return _0x478914[_0xae29('0x2e')]['toLowerCase']()===_0x29acbc[_0xae29('0x38')]();};}exports[_0xae29('0x39')]=function(_0x17f5dc,_0x1fe65d,_0x244cf4,_0x4c11f5){return function(_0x530f69){try{var _0x427a0d={'name':_0x1fe65d[0x0],'timeout':_0x1fe65d[0x1]};var _0x19dd5e=queue[_0xae29('0x0')](_0x427a0d,{'typecast':!![]});if(_0x19dd5e[_0xae29('0x3a')]){logger[_0xae29('0x31')](_0xae29('0x3b'),_0x17f5dc,_[_0xae29('0x3c')](_0x19dd5e,'message')[_0xae29('0x3d')](',\x20'));_0x530f69['stop']();}else{var _0x112287=_['find'](_0x244cf4[_0x4c11f5[_0xae29('0x25')]+_0xae29('0x3e')],handleFindQueue(_0x427a0d[_0xae29('0x2e')]));if(_0x112287){startRouting(_0x17f5dc,_0x112287,_0x4c11f5,_0x244cf4);var _0x1ffb6e=(_0x112287[_0xae29('0x3f')]||0xa)*0x3e8;var _0x2504b8=(_0x427a0d['timeout']||0x14)*0x3e8;var _0x6e0e6c,_0x4f43d4;if(_0x1ffb6e>_0x2504b8){_0x2504b8=_0x1ffb6e;}var _0x7c93e6=seqqueue[_0xae29('0x40')](_0x1ffb6e);_0x7c93e6['id']=_0x17f5dc;_0x7c93e6[_0xae29('0x41')]=_0x1ffb6e;_0x7c93e6[_0xae29('0x42')]=_0x2504b8;_0x7c93e6[_0xae29('0x25')]=_0x4c11f5[_0xae29('0x25')];_0x244cf4[_0xae29('0x43')][_0x17f5dc]['on'](_0xae29('0x44'),function(){logger[_0xae29('0x2d')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x17f5dc);stopRouting(_0x17f5dc,_0x112287,_0x4c11f5,_0x244cf4);clearTimeout(_0x6e0e6c);_0x6e0e6c=undefined;_0x7c93e6['close'](!![]);if(_0x244cf4[_0xae29('0x43')][_0x17f5dc]){delete _0x244cf4[_0xae29('0x43')][_0x17f5dc];}_0x530f69[_0xae29('0x45')]();});_0x244cf4[_0xae29('0x43')][_0x17f5dc]['on']('complete',function(){if(_0x244cf4[_0xae29('0x43')][_0x17f5dc]){delete _0x244cf4[_0xae29('0x43')][_0x17f5dc];}});_0x6e0e6c=setTimeout(function(){logger[_0xae29('0x2d')](_0xae29('0x46'),_0x17f5dc);endRouting(_0x17f5dc,_0x112287,_0x4c11f5,_0x244cf4);clearTimeout(_0x6e0e6c);_0x7c93e6[_0xae29('0x47')](!![]);_0x530f69[_0xae29('0x48')]();},_0x2504b8);switch(_0x112287[_0xae29('0x49')]){case _0xae29('0x4a'):strategy[_0xae29('0x4a')](_0x7c93e6,_0x112287,_0x244cf4,_0x4c11f5);break;default:strategy[_0xae29('0x4b')](_0x7c93e6,_0x112287,_0x244cf4,_0x4c11f5);}}else{logger[_0xae29('0x31')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x17f5dc,_0x427a0d[_0xae29('0x2e')]);_0x530f69[_0xae29('0x45')]();}}}catch(_0x381a5c){console['log'](_0x381a5c);logger['error'](_0xae29('0x3b'),_0x17f5dc,_0x381a5c[_0xae29('0x4c')]);_0x530f69['stop']();}};};
\ No newline at end of file
index c9c427f..9713e43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fdf=['TIMEOUT','lodash','uuid','./util','routing','notificationId','squeue','agent','realtime','push','handleRun','bind','handleTimeout','timeout','drained','prototype','handleDrained','info','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','busy','busyQueue','showNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','STOP'];(function(_0x46f047,_0x23a936){var _0x352bef=function(_0x99c3cb){while(--_0x99c3cb){_0x46f047['push'](_0x46f047['shift']());}};_0x352bef(++_0x23a936);}(_0x5fdf,0x1a1));var _0xf5fd=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0x5fdf[_0x481bf7];return _0x461787;};'use strict';var _=require(_0xf5fd('0x0'));var uuid=require(_0xf5fd('0x1'));var util=require(_0xf5fd('0x2'));var logger=require('../../../../../config/logger')(_0xf5fd('0x3'));var Agent=function(_0x387db2,_0x2adeaf,_0x38402c,_0x51924f){this[_0xf5fd('0x4')]=uuid['v4']();this[_0xf5fd('0x5')]=_0x387db2;this[_0xf5fd('0x6')]=_0x2adeaf;this[_0xf5fd('0x7')]=_0x38402c;this[_0xf5fd('0x3')]=_0x51924f;this['squeue'][_0xf5fd('0x8')](this[_0xf5fd('0x9')][_0xf5fd('0xa')](this),this[_0xf5fd('0xb')]['bind'](this));this[_0xf5fd('0x5')]['on'](_0xf5fd('0xc'),this['handleTimeout'][_0xf5fd('0xa')](this));this[_0xf5fd('0x5')]['on'](_0xf5fd('0xd'),this['handleDrained'][_0xf5fd('0xa')](this));};Agent[_0xf5fd('0xe')][_0xf5fd('0x8')]=function(){this[_0xf5fd('0x5')][_0xf5fd('0x8')](this[_0xf5fd('0x9')][_0xf5fd('0xa')](this),this['handleTimeout'][_0xf5fd('0xa')](this));};Agent['prototype'][_0xf5fd('0xf')]=function(){this[_0xf5fd('0xb')](!![]);};Agent[_0xf5fd('0xe')][_0xf5fd('0x9')]=function(_0x1f2eb8){logger[_0xf5fd('0x10')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0xf5fd('0x5')]['id'],this[_0xf5fd('0x6')]['id']);if(_[_0xf5fd('0x11')](this[_0xf5fd('0x7')][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']])){logger[_0xf5fd('0x10')](_0xf5fd('0x13'),this[_0xf5fd('0x5')]['id'],this[_0xf5fd('0x6')]['id']);setTimeout(this[_0xf5fd('0x8')][_0xf5fd('0xa')](this),0x3e8);}else{if(this[_0xf5fd('0x3')][_0xf5fd('0x14')]||util[_0xf5fd('0x15')](this['squeue']['id'],this[_0xf5fd('0x7')][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']],this[_0xf5fd('0x5')]['channel'],![])){this[_0xf5fd('0x7')][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']][_0xf5fd('0x16')]=!![];this[_0xf5fd('0x7')]['agents'][this[_0xf5fd('0x6')]['id']][_0xf5fd('0x17')]=undefined;util[_0xf5fd('0x18')](this[_0xf5fd('0x4')],this['squeue']['id'],this[_0xf5fd('0x7')]['agents'][this[_0xf5fd('0x6')]['id']],null,this['routing']);util[_0xf5fd('0x19')](this[_0xf5fd('0x5')]['id'],this['realtime'][_0xf5fd('0x12')][this['agent']['id']],_0xf5fd('0x1a')+(this[_0xf5fd('0x3')][_0xf5fd('0x14')]?_0xf5fd('0x1b'):''));}else{logger[_0xf5fd('0x10')](_0xf5fd('0x1c'),this[_0xf5fd('0x5')]['id'],this[_0xf5fd('0x6')]['id']);setTimeout(this[_0xf5fd('0x8')][_0xf5fd('0xa')](this),0x3e8);}}};Agent[_0xf5fd('0xe')][_0xf5fd('0xb')]=function(_0x31b397){if(_[_0xf5fd('0x11')](this['realtime'][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']])){return logger[_0xf5fd('0x10')](_0xf5fd('0x13'),this[_0xf5fd('0x5')]['id'],this[_0xf5fd('0x6')]['id']);}else{logger['info'](_0xf5fd('0x1d'),this[_0xf5fd('0x5')]['id'],this[_0xf5fd('0x6')]['id']);util['hideNotification'](this[_0xf5fd('0x4')],this[_0xf5fd('0x5')]['id'],this[_0xf5fd('0x7')][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']],null,this[_0xf5fd('0x3')]);this[_0xf5fd('0x7')][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']][_0xf5fd('0x16')]=![];this[_0xf5fd('0x7')][_0xf5fd('0x12')][this['agent']['id']]['busyQueue']=undefined;util[_0xf5fd('0x19')](this['squeue']['id'],this[_0xf5fd('0x7')][_0xf5fd('0x12')][this[_0xf5fd('0x6')]['id']],_0x31b397?_0xf5fd('0x1e'):_0xf5fd('0x1f'));}if(!_0x31b397){setTimeout(this[_0xf5fd('0x8')][_0xf5fd('0xa')](this),0x3e8);}};function agent(_0x2f7e8c,_0x1329be,_0x13247d,_0x2603bc){return new Agent(_0x2f7e8c,_0x1329be,_0x13247d,_0x2603bc);}module['exports']=agent;
\ No newline at end of file
+var _0x3088=['bind','drained','prototype','handleDrained','info','[%s][AGENT]\x20try\x20with\x20%s','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','channel','busy','busyQueue','showNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','squeue','agent','realtime','push','handleRun','handleTimeout'];(function(_0x6c8051,_0x3f612b){var _0x459102=function(_0x163eb2){while(--_0x163eb2){_0x6c8051['push'](_0x6c8051['shift']());}};_0x459102(++_0x3f612b);}(_0x3088,0x16b));var _0x8308=function(_0x2defb5,_0x1cda14){_0x2defb5=_0x2defb5-0x0;var _0x229c53=_0x3088[_0x2defb5];return _0x229c53;};'use strict';var _=require(_0x8308('0x0'));var uuid=require(_0x8308('0x1'));var util=require(_0x8308('0x2'));var logger=require(_0x8308('0x3'))(_0x8308('0x4'));var Agent=function(_0x55c55c,_0x296349,_0x5f3703,_0x224ede){this['notificationId']=uuid['v4']();this[_0x8308('0x5')]=_0x55c55c;this[_0x8308('0x6')]=_0x296349;this[_0x8308('0x7')]=_0x5f3703;this[_0x8308('0x4')]=_0x224ede;this[_0x8308('0x5')][_0x8308('0x8')](this[_0x8308('0x9')]['bind'](this),this[_0x8308('0xa')][_0x8308('0xb')](this));this[_0x8308('0x5')]['on']('timeout',this[_0x8308('0xa')][_0x8308('0xb')](this));this[_0x8308('0x5')]['on'](_0x8308('0xc'),this['handleDrained']['bind'](this));};Agent[_0x8308('0xd')]['push']=function(){this['squeue'][_0x8308('0x8')](this[_0x8308('0x9')][_0x8308('0xb')](this),this[_0x8308('0xa')][_0x8308('0xb')](this));};Agent[_0x8308('0xd')][_0x8308('0xe')]=function(){this['handleTimeout'](!![]);};Agent[_0x8308('0xd')][_0x8308('0x9')]=function(_0x49da10){logger[_0x8308('0xf')](_0x8308('0x10'),this[_0x8308('0x5')]['id'],this[_0x8308('0x6')]['id']);if(_['isNil'](this[_0x8308('0x7')][_0x8308('0x11')][this[_0x8308('0x6')]['id']])){logger[_0x8308('0xf')](_0x8308('0x12'),this['squeue']['id'],this[_0x8308('0x6')]['id']);setTimeout(this[_0x8308('0x8')][_0x8308('0xb')](this),0x3e8);}else{if(this[_0x8308('0x4')][_0x8308('0x13')]||util['isAgentAvailable'](this[_0x8308('0x5')]['id'],this[_0x8308('0x7')][_0x8308('0x11')][this[_0x8308('0x6')]['id']],this[_0x8308('0x5')][_0x8308('0x14')],![])){this[_0x8308('0x7')][_0x8308('0x11')][this[_0x8308('0x6')]['id']][_0x8308('0x15')]=!![];this[_0x8308('0x7')][_0x8308('0x11')][this['agent']['id']][_0x8308('0x16')]=undefined;util[_0x8308('0x17')](this['notificationId'],this[_0x8308('0x5')]['id'],this[_0x8308('0x7')][_0x8308('0x11')][this['agent']['id']],null,this[_0x8308('0x4')]);util[_0x8308('0x18')](this[_0x8308('0x5')]['id'],this[_0x8308('0x7')]['agents'][this['agent']['id']],_0x8308('0x19')+(this[_0x8308('0x4')][_0x8308('0x13')]?_0x8308('0x1a'):''));}else{logger[_0x8308('0xf')](_0x8308('0x1b'),this[_0x8308('0x5')]['id'],this['agent']['id']);setTimeout(this[_0x8308('0x8')][_0x8308('0xb')](this),0x3e8);}}};Agent[_0x8308('0xd')][_0x8308('0xa')]=function(_0x50b70a){if(_[_0x8308('0x1c')](this[_0x8308('0x7')][_0x8308('0x11')][this[_0x8308('0x6')]['id']])){return logger[_0x8308('0xf')](_0x8308('0x12'),this[_0x8308('0x5')]['id'],this[_0x8308('0x6')]['id']);}else{logger[_0x8308('0xf')](_0x8308('0x1d'),this[_0x8308('0x5')]['id'],this[_0x8308('0x6')]['id']);util[_0x8308('0x1e')](this['notificationId'],this[_0x8308('0x5')]['id'],this[_0x8308('0x7')][_0x8308('0x11')][this[_0x8308('0x6')]['id']],null,this[_0x8308('0x4')]);this[_0x8308('0x7')]['agents'][this[_0x8308('0x6')]['id']][_0x8308('0x15')]=![];this[_0x8308('0x7')][_0x8308('0x11')][this[_0x8308('0x6')]['id']]['busyQueue']=undefined;util['writeLog'](this['squeue']['id'],this[_0x8308('0x7')]['agents'][this[_0x8308('0x6')]['id']],_0x50b70a?_0x8308('0x1f'):_0x8308('0x20'));}if(!_0x50b70a){setTimeout(this[_0x8308('0x8')]['bind'](this),0x3e8);}};function agent(_0x50ea76,_0x3b508c,_0x5514fc,_0x47417d){return new Agent(_0x50ea76,_0x3b508c,_0x5514fc,_0x47417d);}module[_0x8308('0x21')]=agent;
\ No newline at end of file
index a3eb8db..66c1a81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd59=['info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','writeLog','busy','busyQueue','name','showNotification','[%s][QUEUE]\x20EMPTY','STOP','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push','handleRun','handleTimeout','bind','timeout','drained','prototype','handleDrained','isNil','Agents','length','agents'];(function(_0x1edce4,_0xc627c0){var _0x3b568b=function(_0x45a2d1){while(--_0x45a2d1){_0x1edce4['push'](_0x1edce4['shift']());}};_0x3b568b(++_0xc627c0);}(_0xcd59,0x14b));var _0x9cd5=function(_0x4afe3b,_0x255e0d){_0x4afe3b=_0x4afe3b-0x0;var _0x2c22d1=_0xcd59[_0x4afe3b];return _0x2c22d1;};'use strict';var _=require(_0x9cd5('0x0'));var uuid=require(_0x9cd5('0x1'));var util=require(_0x9cd5('0x2'));var logger=require(_0x9cd5('0x3'))(_0x9cd5('0x4'));var Beepall=function(_0x302b21,_0x4b93b9,_0x2d392c,_0x191236){this[_0x9cd5('0x5')]=uuid['v4']();this[_0x9cd5('0x6')]=_0x302b21;this[_0x9cd5('0x7')]=_0x4b93b9;this[_0x9cd5('0x8')]=_0x2d392c;this[_0x9cd5('0x4')]=_0x191236;this[_0x9cd5('0x6')][_0x9cd5('0x9')](this[_0x9cd5('0xa')]['bind'](this),this[_0x9cd5('0xb')][_0x9cd5('0xc')](this));this[_0x9cd5('0x6')]['on'](_0x9cd5('0xd'),this[_0x9cd5('0xb')][_0x9cd5('0xc')](this));this[_0x9cd5('0x6')]['on'](_0x9cd5('0xe'),this['handleDrained'][_0x9cd5('0xc')](this));};Beepall[_0x9cd5('0xf')][_0x9cd5('0x9')]=function(){this[_0x9cd5('0x6')]['push'](this['handleRun'][_0x9cd5('0xc')](this),this[_0x9cd5('0xb')][_0x9cd5('0xc')](this));};Beepall[_0x9cd5('0xf')][_0x9cd5('0x10')]=function(_0x2a1606){this['handleTimeout'](!![]);};Beepall[_0x9cd5('0xf')][_0x9cd5('0xa')]=function(_0x21d768){var _0x4b9ac8=!![];if(!_['isNil'](this['queue'])&&!_[_0x9cd5('0x11')](this[_0x9cd5('0x7')]['Agents'])&&this[_0x9cd5('0x7')][_0x9cd5('0x12')][_0x9cd5('0x13')]>0x0){for(var _0x57b986=0x0,_0x1e921c;_0x57b986<this[_0x9cd5('0x7')][_0x9cd5('0x12')][_0x9cd5('0x13')];_0x57b986+=0x1){_0x1e921c=this[_0x9cd5('0x7')][_0x9cd5('0x12')][_0x57b986]['id'];if(_['isNil'](this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1e921c])){logger[_0x9cd5('0x15')](_0x9cd5('0x16'),this[_0x9cd5('0x6')]['id'],_0x1e921c);}else{if(util['isAgentAvailable'](this[_0x9cd5('0x6')]['id'],this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1e921c],this[_0x9cd5('0x6')][_0x9cd5('0x17')],!![])){_0x4b9ac8=![];util[_0x9cd5('0x18')](this[_0x9cd5('0x6')]['id'],this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1e921c],'RINGING');this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1e921c][_0x9cd5('0x19')]=!![];this[_0x9cd5('0x8')]['agents'][_0x1e921c][_0x9cd5('0x1a')]=this[_0x9cd5('0x7')][_0x9cd5('0x1b')];util[_0x9cd5('0x1c')](this[_0x9cd5('0x5')],this[_0x9cd5('0x6')]['id'],this[_0x9cd5('0x8')]['agents'][_0x1e921c],this[_0x9cd5('0x7')],this[_0x9cd5('0x4')]);}}}if(_0x4b9ac8){logger[_0x9cd5('0x15')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this['squeue']['id']);setTimeout(this[_0x9cd5('0x9')]['bind'](this),0x3e8);}}else{logger['info'](_0x9cd5('0x1d'),this[_0x9cd5('0x6')]['id']);setTimeout(this[_0x9cd5('0x9')]['bind'](this),0x3e8);}};Beepall[_0x9cd5('0xf')][_0x9cd5('0xb')]=function(_0x27e1fd){if(!_[_0x9cd5('0x11')](this[_0x9cd5('0x7')])&&!_[_0x9cd5('0x11')](this[_0x9cd5('0x7')][_0x9cd5('0x12')])){for(var _0x36b0ad=0x0,_0x1c81fd;_0x36b0ad<this[_0x9cd5('0x7')][_0x9cd5('0x12')][_0x9cd5('0x13')];_0x36b0ad+=0x1){_0x1c81fd=this[_0x9cd5('0x7')]['Agents'][_0x36b0ad]['id'];if(_[_0x9cd5('0x11')](this[_0x9cd5('0x8')]['agents'][_0x1c81fd])){logger['info'](_0x9cd5('0x16'),this[_0x9cd5('0x6')]['id'],_0x1c81fd);}else{util['hideNotification'](this[_0x9cd5('0x5')],this['squeue']['id'],this['realtime'][_0x9cd5('0x14')][_0x1c81fd],this[_0x9cd5('0x7')],this[_0x9cd5('0x4')]);util[_0x9cd5('0x18')](this['squeue']['id'],this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1c81fd],_0x27e1fd?_0x9cd5('0x1e'):'TIMEOUT');this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1c81fd][_0x9cd5('0x19')]=![];this[_0x9cd5('0x8')][_0x9cd5('0x14')][_0x1c81fd][_0x9cd5('0x1a')]=undefined;}}}if(!_0x27e1fd){setTimeout(this[_0x9cd5('0x9')][_0x9cd5('0xc')](this),0x3e8);}};function beepall(_0x279ee6,_0x1ed01d,_0x3cbdba,_0x5cb5b3){return new Beepall(_0x279ee6,_0x1ed01d,_0x3cbdba,_0x5cb5b3);}module[_0x9cd5('0x1f')]=beepall;
\ No newline at end of file
+var _0x5db2=['handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','isNil','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','writeLog','RINGING','busy','busyQueue','name','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','routing','notificationId','squeue','queue','realtime','push'];(function(_0x4a25cf,_0x147ae8){var _0x248ac6=function(_0x333b73){while(--_0x333b73){_0x4a25cf['push'](_0x4a25cf['shift']());}};_0x248ac6(++_0x147ae8);}(_0x5db2,0xf3));var _0x25db=function(_0xed0461,_0xb6de12){_0xed0461=_0xed0461-0x0;var _0x2b0ac4=_0x5db2[_0xed0461];return _0x2b0ac4;};'use strict';var _=require(_0x25db('0x0'));var uuid=require(_0x25db('0x1'));var util=require(_0x25db('0x2'));var logger=require('../../../../../config/logger')(_0x25db('0x3'));var Beepall=function(_0x4381fc,_0x19707e,_0x10ff30,_0x201231){this[_0x25db('0x4')]=uuid['v4']();this[_0x25db('0x5')]=_0x4381fc;this[_0x25db('0x6')]=_0x19707e;this[_0x25db('0x7')]=_0x10ff30;this[_0x25db('0x3')]=_0x201231;this['squeue'][_0x25db('0x8')](this[_0x25db('0x9')][_0x25db('0xa')](this),this[_0x25db('0xb')]['bind'](this));this['squeue']['on'](_0x25db('0xc'),this[_0x25db('0xb')][_0x25db('0xa')](this));this[_0x25db('0x5')]['on'](_0x25db('0xd'),this[_0x25db('0xe')][_0x25db('0xa')](this));};Beepall[_0x25db('0xf')][_0x25db('0x8')]=function(){this[_0x25db('0x5')][_0x25db('0x8')](this[_0x25db('0x9')]['bind'](this),this[_0x25db('0xb')][_0x25db('0xa')](this));};Beepall[_0x25db('0xf')]['handleDrained']=function(_0x24193c){this[_0x25db('0xb')](!![]);};Beepall[_0x25db('0xf')][_0x25db('0x9')]=function(_0x296d33){var _0x23a955=!![];if(!_[_0x25db('0x10')](this[_0x25db('0x6')])&&!_[_0x25db('0x10')](this[_0x25db('0x6')]['Agents'])&&this[_0x25db('0x6')]['Agents']['length']>0x0){for(var _0x602b3a=0x0,_0xed68eb;_0x602b3a<this[_0x25db('0x6')][_0x25db('0x11')][_0x25db('0x12')];_0x602b3a+=0x1){_0xed68eb=this[_0x25db('0x6')][_0x25db('0x11')][_0x602b3a]['id'];if(_[_0x25db('0x10')](this[_0x25db('0x7')][_0x25db('0x13')][_0xed68eb])){logger[_0x25db('0x14')](_0x25db('0x15'),this[_0x25db('0x5')]['id'],_0xed68eb);}else{if(util[_0x25db('0x16')](this[_0x25db('0x5')]['id'],this['realtime']['agents'][_0xed68eb],this['squeue'][_0x25db('0x17')],!![])){_0x23a955=![];util[_0x25db('0x18')](this['squeue']['id'],this[_0x25db('0x7')][_0x25db('0x13')][_0xed68eb],_0x25db('0x19'));this[_0x25db('0x7')]['agents'][_0xed68eb][_0x25db('0x1a')]=!![];this[_0x25db('0x7')][_0x25db('0x13')][_0xed68eb][_0x25db('0x1b')]=this[_0x25db('0x6')][_0x25db('0x1c')];util[_0x25db('0x1d')](this['notificationId'],this[_0x25db('0x5')]['id'],this[_0x25db('0x7')]['agents'][_0xed68eb],this[_0x25db('0x6')],this[_0x25db('0x3')]);}}}if(_0x23a955){logger[_0x25db('0x14')](_0x25db('0x1e'),this[_0x25db('0x5')]['id']);setTimeout(this[_0x25db('0x8')][_0x25db('0xa')](this),0x3e8);}}else{logger[_0x25db('0x14')](_0x25db('0x1f'),this['squeue']['id']);setTimeout(this[_0x25db('0x8')]['bind'](this),0x3e8);}};Beepall[_0x25db('0xf')][_0x25db('0xb')]=function(_0x23fbad){if(!_[_0x25db('0x10')](this[_0x25db('0x6')])&&!_[_0x25db('0x10')](this[_0x25db('0x6')][_0x25db('0x11')])){for(var _0x510f03=0x0,_0x2e912a;_0x510f03<this[_0x25db('0x6')]['Agents'][_0x25db('0x12')];_0x510f03+=0x1){_0x2e912a=this['queue'][_0x25db('0x11')][_0x510f03]['id'];if(_[_0x25db('0x10')](this[_0x25db('0x7')][_0x25db('0x13')][_0x2e912a])){logger[_0x25db('0x14')](_0x25db('0x15'),this[_0x25db('0x5')]['id'],_0x2e912a);}else{util[_0x25db('0x20')](this[_0x25db('0x4')],this['squeue']['id'],this[_0x25db('0x7')][_0x25db('0x13')][_0x2e912a],this[_0x25db('0x6')],this[_0x25db('0x3')]);util['writeLog'](this['squeue']['id'],this[_0x25db('0x7')][_0x25db('0x13')][_0x2e912a],_0x23fbad?_0x25db('0x21'):_0x25db('0x22'));this[_0x25db('0x7')][_0x25db('0x13')][_0x2e912a][_0x25db('0x1a')]=![];this['realtime']['agents'][_0x2e912a][_0x25db('0x1b')]=undefined;}}}if(!_0x23fbad){setTimeout(this[_0x25db('0x8')]['bind'](this),0x3e8);}};function beepall(_0x470fbe,_0x396201,_0x4f3102,_0x36e8d8){return new Beepall(_0x470fbe,_0x396201,_0x4f3102,_0x36e8d8);}module[_0x25db('0x23')]=beepall;
\ No newline at end of file
index 4a8a537..f71e584 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb619=['./rrmemory','./agent'];(function(_0x2439b6,_0x385deb){var _0x257a69=function(_0xd1421e){while(--_0xd1421e){_0x2439b6['push'](_0x2439b6['shift']());}};_0x257a69(++_0x385deb);}(_0xb619,0x150));var _0x9b61=function(_0xc63a5e,_0x2e7e1e){_0xc63a5e=_0xc63a5e-0x0;var _0x18f7a7=_0xb619[_0xc63a5e];return _0x18f7a7;};'use strict';module['exports']={'rrmemory':require(_0x9b61('0x0')),'beepall':require('./beepall'),'agent':require(_0x9b61('0x1'))};
\ No newline at end of file
+var _0xad0b=['./beepall','./agent'];(function(_0x182f9,_0x28519f){var _0x1517f9=function(_0x1572cb){while(--_0x1572cb){_0x182f9['push'](_0x182f9['shift']());}};_0x1517f9(++_0x28519f);}(_0xad0b,0x9a));var _0xbad0=function(_0x5a2109,_0x2bf6f7){_0x5a2109=_0x5a2109-0x0;var _0x31961b=_0xad0b[_0x5a2109];return _0x31961b;};'use strict';module['exports']={'rrmemory':require('./rrmemory'),'beepall':require(_0xbad0('0x0')),'agent':require(_0xbad0('0x1'))};
\ No newline at end of file
index d8782e1..6b4baa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b6a=['agentId','queue','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','done','busy','name','showNotification','notificationId','writeLog','RINGING','intervals','hideNotification','TIMEOUT','busyQueue','exports','lodash','uuid','./util','../../../../../config/logger','routing','squeue','realtime','push','bind','timeout','handleTimeout','drained','prototype','handleRun','handleDrained','handleCheckReject','isAgentAvailable','agents','channel','info','[%s][QUEUE]\x20available\x20again\x20%s'];(function(_0x37ac33,_0x3bb1e2){var _0x24deea=function(_0xad4a45){while(--_0xad4a45){_0x37ac33['push'](_0x37ac33['shift']());}};_0x24deea(++_0x3bb1e2);}(_0x4b6a,0xee));var _0xa4b6=function(_0x25c5ec,_0x49d7c5){_0x25c5ec=_0x25c5ec-0x0;var _0x2cdb90=_0x4b6a[_0x25c5ec];return _0x2cdb90;};'use strict';var rr=require('rr');var _=require(_0xa4b6('0x0'));var uuid=require(_0xa4b6('0x1'));var util=require(_0xa4b6('0x2'));var logger=require(_0xa4b6('0x3'))(_0xa4b6('0x4'));var RRMemory=function(_0x1d4350,_0x23a446,_0xd2e9df,_0xd72b57){this['notificationId']=uuid['v4']();this[_0xa4b6('0x5')]=_0x1d4350;this['queue']=_0x23a446;this[_0xa4b6('0x6')]=_0xd2e9df;this[_0xa4b6('0x4')]=_0xd72b57;this['intervals']={};this['squeue'][_0xa4b6('0x7')](this['handleRun']['bind'](this),this['handleTimeout'][_0xa4b6('0x8')](this),this['module']);this[_0xa4b6('0x5')]['on'](_0xa4b6('0x9'),this[_0xa4b6('0xa')][_0xa4b6('0x8')](this));this[_0xa4b6('0x5')]['on'](_0xa4b6('0xb'),this['handleDrained']['bind'](this));};RRMemory[_0xa4b6('0xc')][_0xa4b6('0x7')]=function(){this[_0xa4b6('0x5')][_0xa4b6('0x7')](this[_0xa4b6('0xd')][_0xa4b6('0x8')](this),this['handleTimeout']['bind'](this));};RRMemory[_0xa4b6('0xc')][_0xa4b6('0xe')]=function(_0x325ac7){this['handleTimeout'](!![]);};RRMemory[_0xa4b6('0xc')][_0xa4b6('0xf')]=function(_0x141971){if(util[_0xa4b6('0x10')](this[_0xa4b6('0x5')]['id'],this['realtime'][_0xa4b6('0x11')][this['agentId']],this[_0xa4b6('0x5')][_0xa4b6('0x12')],!![])){logger[_0xa4b6('0x13')](_0xa4b6('0x14'),this[_0xa4b6('0x5')]['id'],this['agentId']);clearInterval(this['intervals'][this[_0xa4b6('0x15')]]);_0x141971['done']();setTimeout(this[_0xa4b6('0x7')][_0xa4b6('0x8')](this),0x3e8);}};RRMemory[_0xa4b6('0xc')]['handleRun']=function(_0x228db1){this[_0xa4b6('0x15')]=rr(this[_0xa4b6('0x16')]['mapAgentsId']);logger[_0xa4b6('0x13')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x15')]);if(_[_0xa4b6('0x17')](this[_0xa4b6('0x6')]['agents'][this[_0xa4b6('0x15')]])){logger[_0xa4b6('0x13')](_0xa4b6('0x18'),this['squeue']['id'],this[_0xa4b6('0x15')]);_0x228db1[_0xa4b6('0x19')]();setTimeout(this[_0xa4b6('0x7')][_0xa4b6('0x8')](this),0x3e8);}else{if(util[_0xa4b6('0x10')](this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x6')][_0xa4b6('0x11')][this[_0xa4b6('0x15')]],this['squeue'][_0xa4b6('0x12')],!![])){this[_0xa4b6('0x6')][_0xa4b6('0x11')][this[_0xa4b6('0x15')]][_0xa4b6('0x1a')]=!![];this['realtime'][_0xa4b6('0x11')][this[_0xa4b6('0x15')]]['busyQueue']=this[_0xa4b6('0x16')][_0xa4b6('0x1b')];util[_0xa4b6('0x1c')](this[_0xa4b6('0x1d')],this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x6')][_0xa4b6('0x11')][this[_0xa4b6('0x15')]],this[_0xa4b6('0x16')],this['routing']);util[_0xa4b6('0x1e')](this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x6')][_0xa4b6('0x11')][this[_0xa4b6('0x15')]],_0xa4b6('0x1f'));this[_0xa4b6('0x20')][this[_0xa4b6('0x15')]]=setInterval(this[_0xa4b6('0xf')][_0xa4b6('0x8')](this,_0x228db1),0x3e8);}else{logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x15')]);_0x228db1['done']();setTimeout(this[_0xa4b6('0x7')][_0xa4b6('0x8')](this),0x3e8);}}};RRMemory[_0xa4b6('0xc')]['handleTimeout']=function(_0x18350b){logger[_0xa4b6('0x13')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0xa4b6('0x5')]['id'],this['agentId']);if(_[_0xa4b6('0x17')](this['realtime'][_0xa4b6('0x11')][this['agentId']])){logger[_0xa4b6('0x13')](_0xa4b6('0x18'),this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x15')]);}else{clearInterval(this[_0xa4b6('0x20')][this[_0xa4b6('0x15')]]);util[_0xa4b6('0x21')](this[_0xa4b6('0x1d')],this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x6')][_0xa4b6('0x11')][this[_0xa4b6('0x15')]],this[_0xa4b6('0x16')],this[_0xa4b6('0x4')]);util[_0xa4b6('0x1e')](this[_0xa4b6('0x5')]['id'],this[_0xa4b6('0x6')][_0xa4b6('0x11')][this[_0xa4b6('0x15')]],_0xa4b6('0x22'));this[_0xa4b6('0x6')][_0xa4b6('0x11')][this['agentId']][_0xa4b6('0x1a')]=![];this[_0xa4b6('0x6')]['agents'][this['agentId']][_0xa4b6('0x23')]=undefined;}if(!_0x18350b){setTimeout(this[_0xa4b6('0x7')][_0xa4b6('0x8')](this),0x3e8);}};function rrmemory(_0x51639f,_0x39019e,_0x45e41a,_0x589800){return new RRMemory(_0x51639f,_0x39019e,_0x45e41a,_0x589800);}module[_0xa4b6('0x24')]=rrmemory;
\ No newline at end of file
+var _0xf5a3=['name','showNotification','writeLog','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','isNil','hideNotification','busyQueue','exports','lodash','./util','../../../../../config/logger','routing','notificationId','queue','realtime','intervals','squeue','handleRun','bind','handleTimeout','drained','handleDrained','push','prototype','handleCheckReject','isAgentAvailable','agents','agentId','channel','info','[%s][QUEUE]\x20available\x20again\x20%s','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','done'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xf5a3,0xbd));var _0x3f5a=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0xf5a3[_0x5f0089];return _0x193892;};'use strict';var rr=require('rr');var _=require(_0x3f5a('0x0'));var uuid=require('uuid');var util=require(_0x3f5a('0x1'));var logger=require(_0x3f5a('0x2'))(_0x3f5a('0x3'));var RRMemory=function(_0x47f610,_0x97c5be,_0x455928,_0x32f069){this[_0x3f5a('0x4')]=uuid['v4']();this['squeue']=_0x47f610;this[_0x3f5a('0x5')]=_0x97c5be;this[_0x3f5a('0x6')]=_0x455928;this[_0x3f5a('0x3')]=_0x32f069;this[_0x3f5a('0x7')]={};this[_0x3f5a('0x8')]['push'](this[_0x3f5a('0x9')][_0x3f5a('0xa')](this),this[_0x3f5a('0xb')][_0x3f5a('0xa')](this),this['module']);this[_0x3f5a('0x8')]['on']('timeout',this['handleTimeout']['bind'](this));this[_0x3f5a('0x8')]['on'](_0x3f5a('0xc'),this[_0x3f5a('0xd')]['bind'](this));};RRMemory['prototype'][_0x3f5a('0xe')]=function(){this['squeue'][_0x3f5a('0xe')](this['handleRun'][_0x3f5a('0xa')](this),this['handleTimeout']['bind'](this));};RRMemory[_0x3f5a('0xf')][_0x3f5a('0xd')]=function(_0x363c01){this[_0x3f5a('0xb')](!![]);};RRMemory[_0x3f5a('0xf')][_0x3f5a('0x10')]=function(_0x4c6fd1){if(util[_0x3f5a('0x11')](this[_0x3f5a('0x8')]['id'],this['realtime'][_0x3f5a('0x12')][this[_0x3f5a('0x13')]],this[_0x3f5a('0x8')][_0x3f5a('0x14')],!![])){logger[_0x3f5a('0x15')](_0x3f5a('0x16'),this[_0x3f5a('0x8')]['id'],this[_0x3f5a('0x13')]);clearInterval(this[_0x3f5a('0x7')][this[_0x3f5a('0x13')]]);_0x4c6fd1['done']();setTimeout(this[_0x3f5a('0xe')]['bind'](this),0x3e8);}};RRMemory[_0x3f5a('0xf')][_0x3f5a('0x9')]=function(_0x1bc6c5){this[_0x3f5a('0x13')]=rr(this[_0x3f5a('0x5')][_0x3f5a('0x17')]);logger[_0x3f5a('0x15')](_0x3f5a('0x18'),this[_0x3f5a('0x8')]['id'],this[_0x3f5a('0x13')]);if(_['isNil'](this[_0x3f5a('0x6')][_0x3f5a('0x12')][this[_0x3f5a('0x13')]])){logger[_0x3f5a('0x15')](_0x3f5a('0x19'),this[_0x3f5a('0x8')]['id'],this['agentId']);_0x1bc6c5[_0x3f5a('0x1a')]();setTimeout(this[_0x3f5a('0xe')][_0x3f5a('0xa')](this),0x3e8);}else{if(util[_0x3f5a('0x11')](this[_0x3f5a('0x8')]['id'],this[_0x3f5a('0x6')][_0x3f5a('0x12')][this[_0x3f5a('0x13')]],this['squeue'][_0x3f5a('0x14')],!![])){this[_0x3f5a('0x6')][_0x3f5a('0x12')][this[_0x3f5a('0x13')]]['busy']=!![];this['realtime'][_0x3f5a('0x12')][this[_0x3f5a('0x13')]]['busyQueue']=this['queue'][_0x3f5a('0x1b')];util[_0x3f5a('0x1c')](this[_0x3f5a('0x4')],this[_0x3f5a('0x8')]['id'],this['realtime'][_0x3f5a('0x12')][this['agentId']],this[_0x3f5a('0x5')],this['routing']);util[_0x3f5a('0x1d')](this['squeue']['id'],this[_0x3f5a('0x6')][_0x3f5a('0x12')][this[_0x3f5a('0x13')]],'RINGING');this[_0x3f5a('0x7')][this[_0x3f5a('0x13')]]=setInterval(this['handleCheckReject']['bind'](this,_0x1bc6c5),0x3e8);}else{logger[_0x3f5a('0x15')](_0x3f5a('0x1e'),this['squeue']['id'],this[_0x3f5a('0x13')]);_0x1bc6c5[_0x3f5a('0x1a')]();setTimeout(this[_0x3f5a('0xe')]['bind'](this),0x3e8);}}};RRMemory[_0x3f5a('0xf')]['handleTimeout']=function(_0x380384){logger[_0x3f5a('0x15')](_0x3f5a('0x1f'),this[_0x3f5a('0x8')]['id'],this[_0x3f5a('0x13')]);if(_[_0x3f5a('0x20')](this[_0x3f5a('0x6')]['agents'][this[_0x3f5a('0x13')]])){logger[_0x3f5a('0x15')](_0x3f5a('0x19'),this[_0x3f5a('0x8')]['id'],this[_0x3f5a('0x13')]);}else{clearInterval(this[_0x3f5a('0x7')][this[_0x3f5a('0x13')]]);util[_0x3f5a('0x21')](this[_0x3f5a('0x4')],this[_0x3f5a('0x8')]['id'],this[_0x3f5a('0x6')]['agents'][this[_0x3f5a('0x13')]],this[_0x3f5a('0x5')],this[_0x3f5a('0x3')]);util[_0x3f5a('0x1d')](this[_0x3f5a('0x8')]['id'],this['realtime'][_0x3f5a('0x12')][this[_0x3f5a('0x13')]],'TIMEOUT');this[_0x3f5a('0x6')][_0x3f5a('0x12')][this[_0x3f5a('0x13')]]['busy']=![];this['realtime'][_0x3f5a('0x12')][this[_0x3f5a('0x13')]][_0x3f5a('0x22')]=undefined;}if(!_0x380384){setTimeout(this[_0x3f5a('0xe')]['bind'](this),0x3e8);}};function rrmemory(_0x34b742,_0x1df1f6,_0x515e24,_0x127a92){return new RRMemory(_0x34b742,_0x1df1f6,_0x515e24,_0x127a92);}module[_0x3f5a('0x23')]=rrmemory;
\ No newline at end of file
index 849bf4c..5e12bff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b84=['split','\x20interaction','account','notificationSound','notificationShake','body','queue','msg','getMustacheRender','[%s][QUEUE]\x20%s','message','notification:%s','save','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','OFFLINE','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','hideNotification','lodash','util','../utils','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','format','user:%s','name','user:save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7b84,0x17c));var _0x47b8=function(_0x283d64,_0x29277e){_0x283d64=_0x283d64-0x0;var _0x265b41=_0x7b84[_0x283d64];return _0x265b41;};'use strict';var _=require(_0x47b8('0x0'));var util=require(_0x47b8('0x1'));var utils=require(_0x47b8('0x2'));var Mustache=require(_0x47b8('0x3'));var Redis=require(_0x47b8('0x4'));var config=require(_0x47b8('0x5'));var logger=require(_0x47b8('0x6'))('routing');config[_0x47b8('0x7')]=_[_0x47b8('0x8')](config[_0x47b8('0x7')],{'host':_0x47b8('0x9'),'port':0x18eb});var io=require(_0x47b8('0xa'))(new Redis(config[_0x47b8('0x7')]));function emit(_0x53e656,_0x3867ca,_0x3ce846){io['to'](_0x53e656)[_0x47b8('0xb')](_0x3867ca,_0x3ce846);}function sendNotification(_0xb845c9,_0x2289d5,_0x1af17f,_0x24d240,_0x4570d4,_0x9414c2){io['to'](util[_0x47b8('0xc')](_0x47b8('0xd'),_0x24d240[_0x47b8('0xe')]))[_0x47b8('0xb')](_0x47b8('0xf'),_0x24d240);var _0x3e255e=_0x9414c2||{};var _0x2a1af3=_0x1af17f[_0x47b8('0x10')]('.');var _0x2a10d2={'uniqueid':_0x2289d5,'channel':_0x2a1af3[0x0],'id':_0x2a1af3[0x1],'title':_0x2a1af3[0x0]+_0x47b8('0x11'),'interactionId':_0x2a1af3[0x2],'queue':_0x4570d4?_0x4570d4[_0x47b8('0xe')]:null,'sound':_0x3e255e[_0x47b8('0x12')][_0x47b8('0x13')],'shake':_0x3e255e[_0x47b8('0x12')][_0x47b8('0x14')]};try{if(!_0x3e255e[_0x47b8('0x15')]){_0x3e255e[_0x47b8('0x15')]={};}if(_0x4570d4){_0x3e255e[_0x47b8('0x15')]['queue']=_0x4570d4;}else if(_0x3e255e[_0x47b8('0x15')][_0x47b8('0x16')]){delete _0x3e255e[_0x47b8('0x15')][_0x47b8('0x16')];}_0x2a10d2[_0x47b8('0x17')]=utils[_0x47b8('0x18')](_0x3e255e[_0x47b8('0x12')]['notificationTemplate'],_0x3e255e);}catch(_0x3cc9d9){_0x2a10d2['msg']='I\x20can\x27t\x20render\x20your\x20template';logger['error'](util[_0x47b8('0xc')](_0x47b8('0x19'),_0x2289d5,_0x3cc9d9[_0x47b8('0x1a')]));}io['to'](util['format']('user:%s',_0x24d240['name']))[_0x47b8('0xb')](util['format'](_0x47b8('0x1b'),_0xb845c9?_0x47b8('0x1c'):_0x47b8('0x1d')),_0x2a10d2);}function writeLog(_0xfccf56,_0x4eba33,_0xc20df1){return logger[_0x47b8('0x1e')](util[_0x47b8('0xc')](_0x47b8('0x1f'),_0xfccf56,_0x4eba33[_0x47b8('0xe')],_0xc20df1));}exports[_0x47b8('0x20')]=function(_0x54f6bc,_0x31555d,_0x2a22e3,_0x5301f8){if(_0x31555d[_0x47b8('0x21')]){writeLog(_0x54f6bc,_0x31555d,_0x47b8('0x22'));return![];}if(!_0x31555d[_0x47b8('0x23')]){writeLog(_0x54f6bc,_0x31555d,_0x47b8('0x24'));return![];}if(_0x31555d[_0x2a22e3+'Pause']){writeLog(_0x54f6bc,_0x31555d,_0x47b8('0x25'));return![];}if(_0x5301f8&&_0x31555d[_0x47b8('0x26')](_0x2a22e3+_0x47b8('0x27'))&&_0x31555d[_0x47b8('0x26')](_0x2a22e3+_0x47b8('0x28'))){if(_0x31555d[_0x2a22e3+_0x47b8('0x27')]>0x0&&_0x31555d[_0x2a22e3+_0x47b8('0x28')]>=_0x31555d[_0x2a22e3+'Capacity']){writeLog(_0x54f6bc,_0x31555d,_0x2a22e3[_0x47b8('0x29')]()+_0x47b8('0x2a'));return![];}}return!![];};exports['showNotification']=function(_0x195a66,_0x6d517a,_0x147878,_0x3dcf1a,_0x4da0e0){return sendNotification(!![],_0x195a66,_0x6d517a,_0x147878,_0x3dcf1a,_0x4da0e0);};exports[_0x47b8('0x2b')]=function(_0x5c347f,_0x2c89fc,_0x2255ab,_0x33e653,_0x2e540d){return sendNotification(![],_0x5c347f,_0x2c89fc,_0x2255ab,_0x33e653,_0x2e540d);};exports['writeLog']=writeLog;
\ No newline at end of file
+var _0x7096=['notification:%s','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','showNotification','hideNotification','util','mustache','../../../../../config/environment','../../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','emit','format','user:%s','user:save','split','\x20interaction','name','account','notificationShake','body','queue','msg','getMustacheRender','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7096,0x10c));var _0x6709=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x7096[_0xbca1b1];return _0x4e1686;};'use strict';var _=require('lodash');var util=require(_0x6709('0x0'));var utils=require('../utils');var Mustache=require(_0x6709('0x1'));var Redis=require('ioredis');var config=require(_0x6709('0x2'));var logger=require(_0x6709('0x3'))(_0x6709('0x4'));config[_0x6709('0x5')]=_[_0x6709('0x6')](config[_0x6709('0x5')],{'host':_0x6709('0x7'),'port':0x18eb});var io=require(_0x6709('0x8'))(new Redis(config[_0x6709('0x5')]));function emit(_0x3e2223,_0x11ad23,_0x985814){io['to'](_0x3e2223)[_0x6709('0x9')](_0x11ad23,_0x985814);}function sendNotification(_0x513ab6,_0x5af380,_0x2c07b1,_0x2d8c0b,_0xbcb47,_0x1aa476){io['to'](util[_0x6709('0xa')](_0x6709('0xb'),_0x2d8c0b['name']))['emit'](_0x6709('0xc'),_0x2d8c0b);var _0x262261=_0x1aa476||{};var _0x275dd3=_0x2c07b1[_0x6709('0xd')]('.');var _0x31ac88={'uniqueid':_0x5af380,'channel':_0x275dd3[0x0],'id':_0x275dd3[0x1],'title':_0x275dd3[0x0]+_0x6709('0xe'),'interactionId':_0x275dd3[0x2],'queue':_0xbcb47?_0xbcb47[_0x6709('0xf')]:null,'sound':_0x262261[_0x6709('0x10')]['notificationSound'],'shake':_0x262261[_0x6709('0x10')][_0x6709('0x11')]};try{if(!_0x262261[_0x6709('0x12')]){_0x262261[_0x6709('0x12')]={};}if(_0xbcb47){_0x262261['body'][_0x6709('0x13')]=_0xbcb47;}else if(_0x262261['body'][_0x6709('0x13')]){delete _0x262261['body'][_0x6709('0x13')];}_0x31ac88[_0x6709('0x14')]=utils[_0x6709('0x15')](_0x262261[_0x6709('0x10')]['notificationTemplate'],_0x262261);}catch(_0x52e342){_0x31ac88['msg']=_0x6709('0x16');logger[_0x6709('0x17')](util['format'](_0x6709('0x18'),_0x5af380,_0x52e342[_0x6709('0x19')]));}io['to'](util[_0x6709('0xa')]('user:%s',_0x2d8c0b[_0x6709('0xf')]))[_0x6709('0x9')](util[_0x6709('0xa')](_0x6709('0x1a'),_0x513ab6?'save':_0x6709('0x1b')),_0x31ac88);}function writeLog(_0x1edac3,_0x373047,_0x3cf882){return logger[_0x6709('0x1c')](util[_0x6709('0xa')](_0x6709('0x1d'),_0x1edac3,_0x373047[_0x6709('0xf')],_0x3cf882));}exports[_0x6709('0x1e')]=function(_0x1c5153,_0x2f3415,_0xa36371,_0x5cf48b){if(_0x2f3415[_0x6709('0x1f')]){writeLog(_0x1c5153,_0x2f3415,_0x6709('0x20'));return![];}if(!_0x2f3415[_0x6709('0x21')]){writeLog(_0x1c5153,_0x2f3415,'OFFLINE');return![];}if(_0x2f3415[_0xa36371+_0x6709('0x22')]){writeLog(_0x1c5153,_0x2f3415,_0x6709('0x23'));return![];}if(_0x5cf48b&&_0x2f3415[_0x6709('0x24')](_0xa36371+_0x6709('0x25'))&&_0x2f3415['hasOwnProperty'](_0xa36371+_0x6709('0x26'))){if(_0x2f3415[_0xa36371+_0x6709('0x25')]>0x0&&_0x2f3415[_0xa36371+'CurrentCapacity']>=_0x2f3415[_0xa36371+_0x6709('0x25')]){writeLog(_0x1c5153,_0x2f3415,_0xa36371[_0x6709('0x27')]()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x6709('0x28')]=function(_0x2499a2,_0x50ada6,_0x271098,_0x5b5201,_0x46a325){return sendNotification(!![],_0x2499a2,_0x50ada6,_0x271098,_0x5b5201,_0x46a325);};exports[_0x6709('0x29')]=function(_0x5b6906,_0x137137,_0x4e6989,_0xe066d8,_0x388aee){return sendNotification(![],_0x5b6906,_0x137137,_0x4e6989,_0xe066d8,_0x388aee);};exports['writeLog']=writeLog;
\ No newline at end of file
index 6b1d42d..653719e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa62c=['[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','replace','isNil','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','error','isObject','validate','shelljs','lodash','./utils','../../../../config/logger','routing','string','consequence','length','[%s][SYSTEM]\x20%s','map','message','info'];(function(_0x400017,_0xb19777){var _0x45d824=function(_0x3f9912){while(--_0x3f9912){_0x400017['push'](_0x400017['shift']());}};_0x45d824(++_0xb19777);}(_0xa62c,0x70));var _0xca62=function(_0x4327fe,_0x4f8040){_0x4327fe=_0x4327fe-0x0;var _0x138651=_0xa62c[_0x4327fe];return _0x138651;};'use strict';var schema=require(_0xca62('0x0'));var sh=require(_0xca62('0x1'));var _=require(_0xca62('0x2'));var utils=require(_0xca62('0x3'));var logger=require(_0xca62('0x4'))(_0xca62('0x5'));var system=schema({'command':{'type':_0xca62('0x6'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xca62('0x7')]=function(_0x3da6b7,_0x2845a1){return function(_0x2b8280){try{var _0x1e51ba={'command':_0x2845a1[0x0]};var _0x31d267=system[_0xca62('0x0')](_0x1e51ba,{'typecast':!![]});if(_0x31d267[_0xca62('0x8')]){logger['error'](_0xca62('0x9'),_0x3da6b7,_[_0xca62('0xa')](_0x31d267,_0xca62('0xb'))['join'](',\x20'));logger[_0xca62('0xc')](_0xca62('0xd'),_0x3da6b7);_0x2b8280[_0xca62('0xe')]();}else{var _0x5bcb2d=this;var _0x2da5ad=utils[_0xca62('0xf')](_0x2845a1[0x0],this);logger[_0xca62('0xc')](_0xca62('0x10'),_0x3da6b7,_0x2da5ad);sh[_0xca62('0x11')](_[_0xca62('0x12')](_0x2da5ad),function(_0x1544b8,_0x3adb4a){logger[_0xca62('0xc')]('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x3da6b7,_0x1544b8);if(_0x1544b8==0x0){var _0x23a20b=_0x3adb4a[_0xca62('0x13')](/(\r\n|\n|\r)/gm,'');if(_[_0xca62('0x14')](_0x2845a1[0x1])||_['isEmpty'](_0x2845a1[0x1])){logger['info']('[%s][SYSTEM]\x20no\x20variable',_0x3da6b7);_0x5bcb2d[_0xca62('0x15')][_0x2845a1[0x1]]=_0x23a20b;}else{logger['info'](_0xca62('0x16'),_0x3da6b7,_0x2845a1[0x1],_0x23a20b);_0x5bcb2d[_0xca62('0x15')][_0x2845a1[0x1]]=_0x23a20b;}}_0x2b8280['next']();});}}catch(_0x4f93fc){logger[_0xca62('0x17')](_0xca62('0x9'),_0x3da6b7,_[_0xca62('0x18')](_0x4f93fc)?JSON['stringify'](_0x4f93fc):_0x4f93fc);logger[_0xca62('0xc')](_0xca62('0xd'),_0x3da6b7);_0x2b8280[_0xca62('0xe')]();}};};
\ No newline at end of file
+var _0x50a6=['[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','[%s][SYSTEM]\x20%s','isObject','validate','shelljs','../../../../config/logger','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','map','join','info','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isEmpty','[%s][SYSTEM]\x20no\x20variable','body'];(function(_0x343065,_0x169907){var _0x1d208b=function(_0x5fd86a){while(--_0x5fd86a){_0x343065['push'](_0x343065['shift']());}};_0x1d208b(++_0x169907);}(_0x50a6,0xa4));var _0x650a=function(_0xbb6da2,_0x24614b){_0xbb6da2=_0xbb6da2-0x0;var _0x2a84f5=_0x50a6[_0xbb6da2];return _0x2a84f5;};'use strict';var schema=require(_0x650a('0x0'));var sh=require(_0x650a('0x1'));var _=require('lodash');var utils=require('./utils');var logger=require(_0x650a('0x2'))('routing');var system=schema({'command':{'type':_0x650a('0x3'),'required':!![],'message':_0x650a('0x4')}});exports[_0x650a('0x5')]=function(_0x4a0147,_0xa3311){return function(_0x4c71f3){try{var _0x4eabde={'command':_0xa3311[0x0]};var _0x2d486d=system[_0x650a('0x0')](_0x4eabde,{'typecast':!![]});if(_0x2d486d[_0x650a('0x6')]){logger[_0x650a('0x7')]('[%s][SYSTEM]\x20%s',_0x4a0147,_[_0x650a('0x8')](_0x2d486d,'message')[_0x650a('0x9')](',\x20'));logger[_0x650a('0xa')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x4a0147);_0x4c71f3[_0x650a('0xb')]();}else{var _0x3bbdca=this;var _0x5295f4=utils[_0x650a('0xc')](_0xa3311[0x0],this);logger['info'](_0x650a('0xd'),_0x4a0147,_0x5295f4);sh['exec'](_[_0x650a('0xe')](_0x5295f4),function(_0x593cba,_0x2f8bf8){logger['info'](_0x650a('0xf'),_0x4a0147,_0x593cba);if(_0x593cba==0x0){var _0x163e5f=_0x2f8bf8[_0x650a('0x10')](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0xa3311[0x1])||_[_0x650a('0x11')](_0xa3311[0x1])){logger[_0x650a('0xa')](_0x650a('0x12'),_0x4a0147);_0x3bbdca[_0x650a('0x13')][_0xa3311[0x1]]=_0x163e5f;}else{logger[_0x650a('0xa')](_0x650a('0x14'),_0x4a0147,_0xa3311[0x1],_0x163e5f);_0x3bbdca['body'][_0xa3311[0x1]]=_0x163e5f;}}_0x4c71f3[_0x650a('0xb')]();});}}catch(_0x4fdd82){logger[_0x650a('0x7')](_0x650a('0x15'),_0x4a0147,_[_0x650a('0x16')](_0x4fdd82)?JSON['stringify'](_0x4fdd82):_0x4fdd82);logger['info']('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x4a0147);_0x4c71f3['next']();}};};
\ No newline at end of file
index f98349e..a7f6cf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c40=['Interaction','addTags','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','interaction','catch','next','stringify','lodash','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','map','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','channel'];(function(_0x2e3dfc,_0x454d6c){var _0x4b1245=function(_0x5e9faa){while(--_0x5e9faa){_0x2e3dfc['push'](_0x2e3dfc['shift']());}};_0x4b1245(++_0x454d6c);}(_0x9c40,0x10c));var _0x09c4=function(_0x360344,_0x20d0b7){_0x360344=_0x360344-0x0;var _0x1d207b=_0x9c40[_0x360344];return _0x1d207b;};'use strict';var schema=require('validate');var _=require(_0x09c4('0x0'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x09c4('0x1')),'smsInteraction':require(_0x09c4('0x2')),'mailInteraction':require(_0x09c4('0x3')),'faxInteraction':require(_0x09c4('0x4')),'whatsappInteraction':require(_0x09c4('0x5'))};var logger=require(_0x09c4('0x6'))(_0x09c4('0x7'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0x09c4('0x8')}});exports[_0x09c4('0x9')]=function(_0xa92ffe,_0x410176,_0x34106e,_0x2240a7){return function(_0x34c046){try{var _0x2aa90a={'tag':_0x410176[0x0]};var _0x19f6b6=tag['validate'](_0x2aa90a,{'typecast':!![]});if(_0x19f6b6[_0x09c4('0xa')]){logger[_0x09c4('0xb')](_0x09c4('0xc'),_0xa92ffe,_[_0x09c4('0xd')](_0x19f6b6,'message')[_0x09c4('0xe')](',\x20'));logger[_0x09c4('0xf')](_0x09c4('0x10'),_0xa92ffe);_0x34c046['next']();}else{var _0xefad41={'ids':[_0x410176[0x0]]};if(rpc[_0x2240a7[_0x09c4('0x11')]+_0x09c4('0x12')]){rpc[_0x2240a7[_0x09c4('0x11')]+_0x09c4('0x12')][_0x09c4('0x13')](_0x2240a7['interaction']['id'],_0xefad41)[_0x09c4('0x14')](function(_0x2ad3cd){logger[_0x09c4('0xf')](_0x09c4('0x15'),_0xa92ffe,_0x410176[0x1],_0x2240a7[_0x09c4('0x11')],_0x2240a7[_0x09c4('0x16')]['id']);})[_0x09c4('0x17')](function(_0x4a8a29){logger[_0x09c4('0xb')]('[%s][TAG]\x20%s',_0xa92ffe,JSON['stringify'](_0x4a8a29));logger['info'](_0x09c4('0x10'),_0xa92ffe);})['finally'](function(){_0x34c046[_0x09c4('0x18')]();});}}}catch(_0x3dd548){logger['error'](_0x09c4('0xc'),_0xa92ffe,_['isObject'](_0x3dd548)?JSON[_0x09c4('0x19')](_0x3dd548):_0x3dd548);logger[_0x09c4('0xf')](_0x09c4('0x10'),_0xa92ffe);_0x34c046[_0x09c4('0x18')]();}};};
\ No newline at end of file
+var _0x3a69=['next','channel','Interaction','addTags','info','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','interaction','[%s][TAG]\x20%s','isObject','lodash','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','validate','length','error','map','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next'];(function(_0x47fab5,_0x4a5427){var _0x1e86ec=function(_0x38d13d){while(--_0x38d13d){_0x47fab5['push'](_0x47fab5['shift']());}};_0x1e86ec(++_0x4a5427);}(_0x3a69,0x1d5));var _0x93a6=function(_0x12a429,_0x1df9cc){_0x12a429=_0x12a429-0x0;var _0x2f0688=_0x3a69[_0x12a429];return _0x2f0688;};'use strict';var schema=require('validate');var _=require(_0x93a6('0x0'));var rpc={'chatInteraction':require(_0x93a6('0x1')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x93a6('0x2')),'mailInteraction':require(_0x93a6('0x3')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x93a6('0x4'))};var logger=require('../../../../config/logger')(_0x93a6('0x5'));var tag=schema({'tag':{'type':_0x93a6('0x6'),'required':!![],'message':_0x93a6('0x7')}});exports[_0x93a6('0x8')]=function(_0x562b6b,_0x188534,_0x47ca71,_0x2b97a1){return function(_0x458826){try{var _0x4ddd70={'tag':_0x188534[0x0]};var _0x1c13be=tag[_0x93a6('0x9')](_0x4ddd70,{'typecast':!![]});if(_0x1c13be[_0x93a6('0xa')]){logger[_0x93a6('0xb')]('[%s][TAG]\x20%s',_0x562b6b,_[_0x93a6('0xc')](_0x1c13be,'message')['join'](',\x20'));logger['info'](_0x93a6('0xd'),_0x562b6b);_0x458826[_0x93a6('0xe')]();}else{var _0x4d54dd={'ids':[_0x188534[0x0]]};if(rpc[_0x2b97a1[_0x93a6('0xf')]+_0x93a6('0x10')]){rpc[_0x2b97a1[_0x93a6('0xf')]+_0x93a6('0x10')][_0x93a6('0x11')](_0x2b97a1['interaction']['id'],_0x4d54dd)['then'](function(_0x244c7f){logger[_0x93a6('0x12')](_0x93a6('0x13'),_0x562b6b,_0x188534[0x1],_0x2b97a1[_0x93a6('0xf')],_0x2b97a1[_0x93a6('0x14')]['id']);})['catch'](function(_0x552272){logger['error'](_0x93a6('0x15'),_0x562b6b,JSON['stringify'](_0x552272));logger[_0x93a6('0x12')](_0x93a6('0xd'),_0x562b6b);})['finally'](function(){_0x458826[_0x93a6('0xe')]();});}}}catch(_0x362a8b){logger[_0x93a6('0xb')](_0x93a6('0x15'),_0x562b6b,_[_0x93a6('0x16')](_0x362a8b)?JSON['stringify'](_0x362a8b):_0x362a8b);logger[_0x93a6('0x12')](_0x93a6('0xd'),_0x562b6b);_0x458826[_0x93a6('0xe')]();}};};
\ No newline at end of file
index 7825861..421ceba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x43af34,_0x542f03){var _0x57928e=function(_0x50e349){while(--_0x50e349){_0x43af34['push'](_0x43af34['shift']());}};_0x57928e(++_0x542f03);}(_0xe706,0xa3));var _0x6e70=function(_0xf90544,_0x211f7a){_0xf90544=_0xf90544-0x0;var _0x22b0ed=_0xe706[_0xf90544];return _0x22b0ed;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x511d81,_0x28b147){var _0x840d16=function(_0xd6a0af){while(--_0xd6a0af){_0x511d81['push'](_0x511d81['shift']());}};_0x840d16(++_0x28b147);}(_0xe706,0xa3));var _0x6e70=function(_0x27e2c8,_0x5f40a0){_0x27e2c8=_0x27e2c8-0x0;var _0x5454d4=_0xe706[_0x27e2c8];return _0x5454d4;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
index 9d1619b..1b55371 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6569=['hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','util','path','bluebird','../../../config/environment','../../../config/logger','routing','../rpc/mailQueueReport','../rpc/smsQueueReport','format','%s.%s.%s','isNil','IntervalId','Intervals','interval','listen','channel','message','interaction','applications','isArray','length','existsSync','app','.js','toLowerCase','autoreply','appdata','split','push','slice','join','amazonlex','tag','%s:%s:%s','./interval','condition','consequence','Push\x20new\x20rule','intervals','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','rules','execute','Applications\x20executed','stringify','matchPath','emit','complete','info','error','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty'];(function(_0x4d4ae4,_0x1a8702){var _0x23889c=function(_0x2b834e){while(--_0x2b834e){_0x4d4ae4['push'](_0x4d4ae4['shift']());}};_0x23889c(++_0x1a8702);}(_0x6569,0x129));var _0x9656=function(_0x368514,_0x3c57d8){_0x368514=_0x368514-0x0;var _0x1cdea2=_0x6569[_0x368514];return _0x1cdea2;};'use strict';var _=require('lodash');var util=require(_0x9656('0x0'));var path=require(_0x9656('0x1'));var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0x9656('0x2'));var uuid=require('uuid');var config=require(_0x9656('0x3'));var logger=require(_0x9656('0x4'))(_0x9656('0x5'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x9656('0x6')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require(_0x9656('0x7')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require('../lib/rule-engine');function getId(_0x3a08bf,_0x23de68,_0x8ae889){return util[_0x9656('0x8')](_0x9656('0x9'),_0x3a08bf,_0x23de68||0x0,_0x8ae889||0x0);}function getIntervals(_0x278cc5,_0x3a3405){var _0x48c927=[];if(!_[_0x9656('0xa')](_0x3a3405[_0x9656('0xb')])&&!_[_0x9656('0xa')](_0x278cc5[_0x3a3405[_0x9656('0xb')]])&&!_[_0x9656('0xa')](_0x278cc5[_0x3a3405[_0x9656('0xb')]][_0x9656('0xc')])){_0x48c927=_['map'](_0x278cc5[_0x3a3405['IntervalId']][_0x9656('0xc')],_0x9656('0xd'));}else if(!_[_0x9656('0xa')](_0x3a3405[_0x9656('0xd')])){_0x48c927=[_0x3a3405[_0x9656('0xd')]];}return _0x48c927;}exports[_0x9656('0xe')]=function(_0x5ad628){_0x5ad628['rules']={};return new BPromise(function(_0x2cd43c,_0xf9b2ab){var _0x16f936={'Start':function(_0x11eaea){var _0xba3327=this;return new Promise(function(_0x47063e,_0xe65744){if(_0x11eaea){try{var _0x239094=[];var _0x3a5675=getId(_0x11eaea[_0x9656('0xf')],_0x11eaea[_0x9656('0x10')]?_0x11eaea[_0x9656('0x10')]['id']:0x0,_0x11eaea[_0x9656('0x11')]?_0x11eaea[_0x9656('0x11')]['id']:0x0);if(_0x11eaea[_0x9656('0x12')]&&_[_0x9656('0x13')](_0x11eaea[_0x9656('0x12')])&&_0x11eaea[_0x9656('0x12')][_0x9656('0x14')]){for(var _0x1bdb95=0x0;_0x1bdb95<_0x11eaea['applications'][_0x9656('0x14')];_0x1bdb95+=0x1){var _0x88ad89=_0x11eaea[_0x9656('0x12')][_0x1bdb95];if(fs[_0x9656('0x15')](path['join'](__dirname,_0x9656('0x12'),_0x88ad89[_0x9656('0x16')]+_0x9656('0x17')))){var _0x5a4f8f=[];switch(_0x88ad89[_0x9656('0x16')][_0x9656('0x18')]()){case _0x9656('0x19'):var _0x1ea36c=_0x88ad89[_0x9656('0x1a')][_0x9656('0x1b')](',');if(_0x11eaea['channel']==='mail'){_0x5a4f8f[_0x9656('0x1c')](_0x1ea36c[0x0]);_0x5a4f8f['push'](_0x1ea36c[0x1]);_0x5a4f8f['push'](_0x1ea36c[_0x9656('0x1d')](0x2,_0x1ea36c[_0x9656('0x14')])['join'](','));}else{_0x5a4f8f[_0x9656('0x1c')](_0x1ea36c[0x0]);_0x5a4f8f[_0x9656('0x1c')](_0x1ea36c[_0x9656('0x1d')](0x1,_0x1ea36c['length'])[_0x9656('0x1e')](','));}break;case'dialogflow':var _0x3c226c=_0x88ad89['appdata'][_0x9656('0x1b')](',');_0x5a4f8f[_0x9656('0x1c')](_0x3c226c[0x0]);_0x5a4f8f['push'](_0x3c226c[0x1]);_0x5a4f8f['push'](_0x3c226c[_0x9656('0x1d')](0x2,_0x3c226c[_0x9656('0x14')])[_0x9656('0x1e')](','));break;case'dialogflowv2':var _0x110a13=_0x88ad89[_0x9656('0x1a')][_0x9656('0x1b')](',');_0x5a4f8f[_0x9656('0x1c')](_0x110a13[0x0]);_0x5a4f8f[_0x9656('0x1c')](_0x110a13[0x1]);_0x5a4f8f[_0x9656('0x1c')](_0x110a13[0x2]);_0x5a4f8f[_0x9656('0x1c')](_0x110a13[0x3]);_0x5a4f8f[_0x9656('0x1c')](_0x110a13[_0x9656('0x1d')](0x4,_0x110a13[_0x9656('0x14')])['join'](','));break;case _0x9656('0x1f'):var _0x507976=_0x88ad89['appdata']['split'](',');_0x5a4f8f[_0x9656('0x1c')](_0x507976[0x0]);_0x5a4f8f[_0x9656('0x1c')](_0x507976[0x1]);_0x5a4f8f[_0x9656('0x1c')](_0x507976[0x2]);_0x5a4f8f[_0x9656('0x1c')](_0x507976[0x3]);_0x5a4f8f[_0x9656('0x1c')](_0x507976['slice'](0x4,_0x507976[_0x9656('0x14')])[_0x9656('0x1e')](','));break;case _0x9656('0x10'):_0x5a4f8f[_0x9656('0x1c')](_0x88ad89[_0x9656('0x1a')]);break;case _0x9656('0x20'):_0x5a4f8f[_0x9656('0x1c')](_0x88ad89['TagId']);_0x5a4f8f['push'](_0x88ad89[_0x9656('0x1a')]);break;default:_0x5a4f8f=_[_0x9656('0xa')](_0x88ad89[_0x9656('0x1a')])?[]:_0x88ad89[_0x9656('0x1a')][_0x9656('0x1b')](',');}var _0x678a09={'id':util[_0x9656('0x8')](_0x9656('0x21'),_0x3a5675,_0x88ad89['id'],_0x88ad89[_0x9656('0x16')]),'condition':require(_0x9656('0x22'))[_0x9656('0x23')](_0x3a5675,getIntervals(_0x5ad628['intervals'],_0x88ad89),_0x5ad628),'consequence':require('./applications/'+_0x88ad89[_0x9656('0x16')])[_0x9656('0x24')](_0x3a5675,_0x5a4f8f,_0x5ad628,_0x11eaea),'p':_0x88ad89['priority']||0x0};logger['info'](_0x9656('0x25'),_0x678a09['id'],'on\x20interval',getIntervals(_0x5ad628[_0x9656('0x26')],_0x88ad89)[_0x9656('0x1e')](_0x9656('0x27')));_0x239094[_0x9656('0x1c')](_0x678a09);}else{logger['error'](_0x9656('0x28'),path['join'](__dirname,'applications',_0x88ad89[_0x9656('0x16')]+_0x9656('0x17')));}}_0x5ad628[_0x9656('0x29')][_0x3a5675]=new RuleEngine(_0x239094);_0x5ad628[_0x9656('0x29')][_0x3a5675][_0x9656('0x2a')](_0x11eaea,function(_0x4fc93b){logger['info'](_0x9656('0x2b'),JSON[_0x9656('0x2c')](_0x4fc93b[_0x9656('0x2d')]));if(_0x5ad628[_0x9656('0x29')][_0x3a5675]){_0x5ad628[_0x9656('0x29')][_0x3a5675][_0x9656('0x2e')](_0x9656('0x2f'));}});return _0x47063e({'code':0xc8,'message':_0x11eaea});}else{logger[_0x9656('0x30')]('No\x20applications\x20to\x20execute');return _0x47063e({'code':0xc8,'message':_0x11eaea});}}catch(_0x108b8a){logger[_0x9656('0x31')](_0x108b8a[_0x9656('0x32')]);return _0xe65744(_0xba3327[_0x9656('0x31')](0x1f4,_0x108b8a));}}return _0xe65744(_0x9656('0x33'));});},'AcceptMessage':function(_0x2c72ff){var _0x94c80d=this;return new Promise(function(_0x414886,_0x3b4fbd){if(_0x2c72ff[_0x9656('0x34')]&&_0x2c72ff['agent']['id']){if(_0x5ad628[_0x9656('0x35')][_0x2c72ff[_0x9656('0x34')]['id']]){_0x5ad628[_0x9656('0x35')][_0x2c72ff['agent']['id']][_0x9656('0x36')]=![];_0x5ad628['agents'][_0x2c72ff[_0x9656('0x34')]['id']][_0x9656('0x37')]=undefined;}}if(_0x2c72ff[_0x9656('0x10')]&&_0x2c72ff[_0x9656('0x10')]['id']){try{var _0x118868=getId(_0x2c72ff[_0x9656('0xf')],_0x2c72ff[_0x9656('0x10')]?_0x2c72ff['message']['id']:0x0,_0x2c72ff['interaction']?_0x2c72ff[_0x9656('0x11')]['id']:0x0);if(_0x5ad628[_0x9656('0x29')][_0x118868]){_0x5ad628[_0x9656('0x29')][_0x118868][_0x9656('0x2e')](_0x9656('0x38'));if(rpc[_0x2c72ff[_0x9656('0xf')]+_0x9656('0x39')]){rpc[_0x2c72ff[_0x9656('0xf')]+_0x9656('0x39')][_0x9656('0x3a')](_0x118868,{'UserId':_0x2c72ff[_0x9656('0x10')][_0x9656('0x3b')]})[_0x9656('0x3c')](function(_0x5ab36d){logger[_0x9656('0x31')](_0x9656('0x3d'));});}}return _0x414886({'code':0xc8,'message':_0x2c72ff});}catch(_0x2a5cdd){logger[_0x9656('0x31')](_0x2a5cdd[_0x9656('0x32')]);return _0x3b4fbd(_0x94c80d[_0x9656('0x31')](0x1f4,_0x2a5cdd));}}logger[_0x9656('0x31')](_0x9656('0x3e'));return _0x3b4fbd(_0x94c80d[_0x9656('0x31')](0x1f4,_0x9656('0x3e')));});},'RejectMessage':function(_0x25d900){var _0x359220=this;return new Promise(function(_0x47f75a,_0x5c98e7){if(_0x25d900[_0x9656('0x34')]&&_0x25d900[_0x9656('0x34')]['id']){try{if(_0x5ad628[_0x9656('0x35')][_0x25d900[_0x9656('0x34')]['id']]){_0x5ad628[_0x9656('0x35')][_0x25d900[_0x9656('0x34')]['id']][_0x9656('0x36')]=![];_0x5ad628[_0x9656('0x35')][_0x25d900[_0x9656('0x34')]['id']]['busyQueue']=undefined;}return _0x47f75a({'code':0xc8,'message':_0x25d900});}catch(_0x28f842){logger[_0x9656('0x31')](_0x28f842[_0x9656('0x32')]);return _0x5c98e7(_0x359220['error'](0x1f4,_0x28f842));}}logger[_0x9656('0x31')](_0x9656('0x3e'));return _0x5c98e7(_0x359220['error'](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x5295c7){var _0x30632c=this;return new Promise(function(_0x43415c,_0x34ddd6){if(_0x5295c7[_0x9656('0xf')]&&_0x5295c7[_0x9656('0x11')]&&_0x5295c7[_0x9656('0x11')]['id']){try{var _0x186636=getId(_0x5295c7[_0x9656('0xf')],_0x5295c7['message']?_0x5295c7[_0x9656('0x10')]['id']:0x0,_0x5295c7[_0x9656('0x11')]?_0x5295c7[_0x9656('0x11')]['id']:0x0);if(_0x5ad628[_0x9656('0x29')][_0x186636]){_0x5ad628[_0x9656('0x29')][_0x186636][_0x9656('0x2e')](_0x9656('0x38'));}return _0x43415c({'code':0xc8,'message':_0x5295c7});}catch(_0x3353b7){logger[_0x9656('0x31')](_0x3353b7[_0x9656('0x32')]);return _0x34ddd6(_0x30632c[_0x9656('0x31')](0x1f4,_0x3353b7));}}logger[_0x9656('0x31')](_0x9656('0x3e'));return _0x34ddd6(_0x30632c['error'](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x54788d){var _0x6ecd2d=this;return new Promise(function(_0x21d89f,_0x3bf2ee){if(_0x5ad628['agents'][_0x9656('0x3f')](_0x54788d['id'])){for(var _0x5c77bc in _0x54788d[_0x9656('0x40')]){if(_0x54788d['capacity'][_0x9656('0x3f')](_0x5c77bc)){if(_0x5ad628[_0x9656('0x35')][_0x54788d['id']][_0x9656('0x3f')](_0x5c77bc+_0x9656('0x41'))){_0x5ad628[_0x9656('0x35')][_0x54788d['id']][_0x5c77bc+_0x9656('0x41')]=parseInt(_0x54788d[_0x9656('0x40')][_0x5c77bc],0xa);}}}_0x5ad628[_0x9656('0x35')][_0x54788d['id']][_0x9656('0x42')]();return _0x21d89f({'code':0xc8,'message':_0x5ad628['agents'][_0x54788d['id']]});}else{return _0x3bf2ee(_0x6ecd2d[_0x9656('0x31')](0x1f4,_0x9656('0x43')));}});},'Agents':function(_0x3d95ba){return new Promise(function(_0x2018c2,_0x533114){var _0x232253=_[_0x9656('0x44')](_0x5ad628[_0x9656('0x35')]);_0x2018c2({'count':_0x232253[_0x9656('0x14')],'rows':_0x232253});});},'ChatQueues':function(_0x3b4cb7){return new Promise(function(_0x2984e2,_0x539ebd){var _0x57c6bd=[];for(var _0x3fb7b6 in _0x5ad628[_0x9656('0x45')]){if(_0x5ad628['chatQueues']['hasOwnProperty'](_0x3fb7b6)){var _0x4f4d8b=_0x5ad628[_0x9656('0x45')][_0x3fb7b6];var _0x24d141={'id':_0x4f4d8b['id'],'available':_0x4f4d8b[_0x9656('0x46')],'loggedIn':_0x4f4d8b[_0x9656('0x47')],'name':_0x4f4d8b[_0x9656('0x48')],'paused':_0x4f4d8b[_0x9656('0x49')],'waiting':_0x4f4d8b[_0x9656('0x4a')]};_0x57c6bd[_0x9656('0x1c')](_0x24d141);}}_0x2984e2({'count':_0x57c6bd[_0x9656('0x14')],'rows':_0x57c6bd});});},'MailQueues':function(_0x45bf73){return new Promise(function(_0x1141bb,_0x3ab6bd){var _0x36bbef=[];for(var _0x237fd7 in _0x5ad628[_0x9656('0x4b')]){if(_0x5ad628[_0x9656('0x4b')][_0x9656('0x3f')](_0x237fd7)){var _0x227264=_0x5ad628[_0x9656('0x4b')][_0x237fd7];var _0x29c685={'id':_0x227264['id'],'available':_0x227264[_0x9656('0x46')],'loggedIn':_0x227264[_0x9656('0x47')],'name':_0x227264[_0x9656('0x48')],'paused':_0x227264[_0x9656('0x49')],'waiting':_0x227264['waiting']};_0x36bbef[_0x9656('0x1c')](_0x29c685);}}_0x1141bb({'count':_0x36bbef[_0x9656('0x14')],'rows':_0x36bbef});});},'OpenchannelQueues':function(_0x16428c){return new Promise(function(_0x2ac948,_0xa1b0c0){var _0x265fa1=[];for(var _0x385fad in _0x5ad628[_0x9656('0x4c')]){if(_0x5ad628['openchannelQueues'][_0x9656('0x3f')](_0x385fad)){var _0x409ef5=_0x5ad628[_0x9656('0x4c')][_0x385fad];var _0x381e5e={'id':_0x409ef5['id'],'available':_0x409ef5['available'],'loggedIn':_0x409ef5[_0x9656('0x47')],'name':_0x409ef5[_0x9656('0x48')],'paused':_0x409ef5[_0x9656('0x49')],'waiting':_0x409ef5[_0x9656('0x4a')]};_0x265fa1[_0x9656('0x1c')](_0x381e5e);}}_0x2ac948({'count':_0x265fa1['length'],'rows':_0x265fa1});});},'SmsQueues':function(_0x1cb926){return new Promise(function(_0x2f5b77,_0x2e4611){var _0x265cab=[];for(var _0x380f48 in _0x5ad628[_0x9656('0x4d')]){if(_0x5ad628[_0x9656('0x4d')][_0x9656('0x3f')](_0x380f48)){var _0x192593=_0x5ad628['smsQueues'][_0x380f48];var _0x530bdf={'id':_0x192593['id'],'available':_0x192593[_0x9656('0x46')],'loggedIn':_0x192593[_0x9656('0x47')],'name':_0x192593['name'],'paused':_0x192593[_0x9656('0x49')],'waiting':_0x192593[_0x9656('0x4a')]};_0x265cab[_0x9656('0x1c')](_0x530bdf);}}_0x2f5b77({'count':_0x265cab[_0x9656('0x14')],'rows':_0x265cab});});},'FaxQueues':function(_0x3af660){return new Promise(function(_0x3cb0b4,_0x4d157b){var _0x225f79=[];for(var _0x50bdaa in _0x5ad628[_0x9656('0x4e')]){if(_0x5ad628[_0x9656('0x4e')]['hasOwnProperty'](_0x50bdaa)){var _0x125f11=_0x5ad628[_0x9656('0x4e')][_0x50bdaa];var _0x1a8427={'id':_0x125f11['id'],'available':_0x125f11['available'],'loggedIn':_0x125f11[_0x9656('0x47')],'name':_0x125f11[_0x9656('0x48')],'paused':_0x125f11[_0x9656('0x49')],'waiting':_0x125f11[_0x9656('0x4a')]};_0x225f79[_0x9656('0x1c')](_0x1a8427);}}_0x3cb0b4({'count':_0x225f79[_0x9656('0x14')],'rows':_0x225f79});});},'WhatsappQueues':function(_0x738b62){return new Promise(function(_0x1d1644,_0x12ecfc){var _0x1f2acc=[];for(var _0xe39cd8 in _0x5ad628[_0x9656('0x4f')]){if(_0x5ad628[_0x9656('0x4f')][_0x9656('0x3f')](_0xe39cd8)){var _0x1772c9=_0x5ad628[_0x9656('0x4f')][_0xe39cd8];var _0x3e9fcf={'id':_0x1772c9['id'],'available':_0x1772c9[_0x9656('0x46')],'loggedIn':_0x1772c9['loggedIn'],'name':_0x1772c9[_0x9656('0x48')],'paused':_0x1772c9[_0x9656('0x49')],'waiting':_0x1772c9['waiting']};_0x1f2acc[_0x9656('0x1c')](_0x3e9fcf);}}_0x1d1644({'count':_0x1f2acc[_0x9656('0x14')],'rows':_0x1f2acc});});},'ChatQueuesWaitingInteractions':function(_0x828efd){return new Promise(function(_0x5ceff3,_0x34b8b7){var _0x184279=_[_0x9656('0x44')](_0x5ad628[_0x9656('0x50')]);_0x5ceff3({'count':_0x184279[_0x9656('0x14')],'rows':_0x184279});});},'MailQueuesWaitingInteractions':function(_0x57c83c){return new Promise(function(_0xc0a528,_0x3ea514){var _0x527c44=_[_0x9656('0x44')](_0x5ad628[_0x9656('0x51')]);_0xc0a528({'count':_0x527c44[_0x9656('0x14')],'rows':_0x527c44});});},'OpenchannelQueuesWaitingInteractions':function(_0x109898){return new Promise(function(_0xb8755e,_0xb7f86b){var _0x34373c=_[_0x9656('0x44')](_0x5ad628[_0x9656('0x52')]);_0xb8755e({'count':_0x34373c[_0x9656('0x14')],'rows':_0x34373c});});},'SmsQueuesWaitingInteractions':function(_0x758118){return new Promise(function(_0x124961,_0xb1dad6){var _0x453852=_[_0x9656('0x44')](_0x5ad628['smsQueuesWaitingInteractions']);_0x124961({'count':_0x453852[_0x9656('0x14')],'rows':_0x453852});});},'FaxQueuesWaitingInteractions':function(_0x1817af){return new Promise(function(_0x543e57,_0x3f84c0){var _0x4ffc4c=_[_0x9656('0x44')](_0x5ad628[_0x9656('0x53')]);_0x543e57({'count':_0x4ffc4c[_0x9656('0x14')],'rows':_0x4ffc4c});});},'WhatsappQueuesWaitingInteractions':function(_0x493fe7){return new Promise(function(_0x5a8086,_0x4d9fc0){var _0x3a160e=_[_0x9656('0x44')](_0x5ad628[_0x9656('0x54')]);_0x5a8086({'count':_0x3a160e[_0x9656('0x14')],'rows':_0x3a160e});});}};var _0x1d4726=jayson[_0x9656('0x55')](_0x16f936)[_0x9656('0x56')]();_0x1d4726['on'](_0x9656('0x31'),function(_0x56897e){logger[_0x9656('0x31')](JSON[_0x9656('0x2c')](_0x56897e));return _0xf9b2ab(_0x56897e);});_0x1d4726[_0x9656('0xe')](0x232c,_0x9656('0x57'),function(){console[_0x9656('0x58')](_0x9656('0x59'),0x232c);return _0x2cd43c('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0xa08b=['whatsappQueuesWaitingInteractions','server','http','stringify','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','bluebird','../../../config/environment','../../../config/logger','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','rules','channel','message','interaction','isArray','applications','length','existsSync','join','app','toLowerCase','split','push','slice','dialogflow','appdata','dialogflowv2','amazonlex','tag','TagId','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','\x20|\x20','execute','Applications\x20executed','matchPath','emit','No\x20applications\x20to\x20execute','error','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','paused','waiting','mailQueues','name','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions'];(function(_0x4fc7b3,_0xe942ee){var _0x172e8c=function(_0x5b2469){while(--_0x5b2469){_0x4fc7b3['push'](_0x4fc7b3['shift']());}};_0x172e8c(++_0xe942ee);}(_0xa08b,0xce));var _0xba08=function(_0x98de20,_0x1de024){_0x98de20=_0x98de20-0x0;var _0x4dd274=_0xa08b[_0x98de20];return _0x4dd274;};'use strict';var _=require(_0xba08('0x0'));var util=require(_0xba08('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0xba08('0x2'));var BPromise=require(_0xba08('0x3'));var uuid=require('uuid');var config=require(_0xba08('0x4'));var logger=require(_0xba08('0x5'))('routing');var rpc={'openchannelQueueReport':require(_0xba08('0x6')),'mailQueueReport':require(_0xba08('0x7')),'chatQueueReport':require(_0xba08('0x8')),'smsQueueReport':require(_0xba08('0x9')),'faxQueueReport':require(_0xba08('0xa')),'whatsappQueueReport':require(_0xba08('0xb'))};var RuleEngine=require(_0xba08('0xc'));function getId(_0x4549de,_0x25fdf3,_0x2acd5b){return util[_0xba08('0xd')](_0xba08('0xe'),_0x4549de,_0x25fdf3||0x0,_0x2acd5b||0x0);}function getIntervals(_0x496417,_0x2c9064){var _0x5eb4d4=[];if(!_[_0xba08('0xf')](_0x2c9064[_0xba08('0x10')])&&!_[_0xba08('0xf')](_0x496417[_0x2c9064[_0xba08('0x10')]])&&!_[_0xba08('0xf')](_0x496417[_0x2c9064[_0xba08('0x10')]][_0xba08('0x11')])){_0x5eb4d4=_[_0xba08('0x12')](_0x496417[_0x2c9064[_0xba08('0x10')]]['Intervals'],'interval');}else if(!_[_0xba08('0xf')](_0x2c9064['interval'])){_0x5eb4d4=[_0x2c9064[_0xba08('0x13')]];}return _0x5eb4d4;}exports[_0xba08('0x14')]=function(_0x27d036){_0x27d036[_0xba08('0x15')]={};return new BPromise(function(_0x2c64e4,_0x1cc997){var _0x1f0070={'Start':function(_0x1d886f){var _0x2c7aa8=this;return new Promise(function(_0x28b5a0,_0x5c5822){if(_0x1d886f){try{var _0x13044f=[];var _0x5c72c8=getId(_0x1d886f[_0xba08('0x16')],_0x1d886f[_0xba08('0x17')]?_0x1d886f['message']['id']:0x0,_0x1d886f[_0xba08('0x18')]?_0x1d886f[_0xba08('0x18')]['id']:0x0);if(_0x1d886f['applications']&&_[_0xba08('0x19')](_0x1d886f['applications'])&&_0x1d886f[_0xba08('0x1a')][_0xba08('0x1b')]){for(var _0x3cc1aa=0x0;_0x3cc1aa<_0x1d886f[_0xba08('0x1a')][_0xba08('0x1b')];_0x3cc1aa+=0x1){var _0x21b26d=_0x1d886f[_0xba08('0x1a')][_0x3cc1aa];if(fs[_0xba08('0x1c')](path[_0xba08('0x1d')](__dirname,_0xba08('0x1a'),_0x21b26d[_0xba08('0x1e')]+'.js'))){var _0x296c33=[];switch(_0x21b26d[_0xba08('0x1e')][_0xba08('0x1f')]()){case'autoreply':var _0x14a612=_0x21b26d['appdata'][_0xba08('0x20')](',');if(_0x1d886f[_0xba08('0x16')]==='mail'){_0x296c33['push'](_0x14a612[0x0]);_0x296c33['push'](_0x14a612[0x1]);_0x296c33[_0xba08('0x21')](_0x14a612['slice'](0x2,_0x14a612[_0xba08('0x1b')])[_0xba08('0x1d')](','));}else{_0x296c33[_0xba08('0x21')](_0x14a612[0x0]);_0x296c33[_0xba08('0x21')](_0x14a612[_0xba08('0x22')](0x1,_0x14a612[_0xba08('0x1b')])[_0xba08('0x1d')](','));}break;case _0xba08('0x23'):var _0x1f028e=_0x21b26d[_0xba08('0x24')][_0xba08('0x20')](',');_0x296c33['push'](_0x1f028e[0x0]);_0x296c33[_0xba08('0x21')](_0x1f028e[0x1]);_0x296c33[_0xba08('0x21')](_0x1f028e[_0xba08('0x22')](0x2,_0x1f028e['length'])[_0xba08('0x1d')](','));break;case _0xba08('0x25'):var _0x413f2e=_0x21b26d['appdata'][_0xba08('0x20')](',');_0x296c33[_0xba08('0x21')](_0x413f2e[0x0]);_0x296c33['push'](_0x413f2e[0x1]);_0x296c33[_0xba08('0x21')](_0x413f2e[0x2]);_0x296c33[_0xba08('0x21')](_0x413f2e[0x3]);_0x296c33[_0xba08('0x21')](_0x413f2e[_0xba08('0x22')](0x4,_0x413f2e[_0xba08('0x1b')])[_0xba08('0x1d')](','));break;case _0xba08('0x26'):var _0x493331=_0x21b26d[_0xba08('0x24')][_0xba08('0x20')](',');_0x296c33[_0xba08('0x21')](_0x493331[0x0]);_0x296c33[_0xba08('0x21')](_0x493331[0x1]);_0x296c33[_0xba08('0x21')](_0x493331[0x2]);_0x296c33[_0xba08('0x21')](_0x493331[0x3]);_0x296c33[_0xba08('0x21')](_0x493331[_0xba08('0x22')](0x4,_0x493331[_0xba08('0x1b')])['join'](','));break;case'message':_0x296c33['push'](_0x21b26d[_0xba08('0x24')]);break;case _0xba08('0x27'):_0x296c33[_0xba08('0x21')](_0x21b26d[_0xba08('0x28')]);_0x296c33[_0xba08('0x21')](_0x21b26d['appdata']);break;default:_0x296c33=_[_0xba08('0xf')](_0x21b26d[_0xba08('0x24')])?[]:_0x21b26d['appdata'][_0xba08('0x20')](',');}var _0x2a6cac={'id':util[_0xba08('0xd')](_0xba08('0x29'),_0x5c72c8,_0x21b26d['id'],_0x21b26d['app']),'condition':require(_0xba08('0x2a'))[_0xba08('0x2b')](_0x5c72c8,getIntervals(_0x27d036[_0xba08('0x2c')],_0x21b26d),_0x27d036),'consequence':require(_0xba08('0x2d')+_0x21b26d['app'])[_0xba08('0x2e')](_0x5c72c8,_0x296c33,_0x27d036,_0x1d886f),'p':_0x21b26d[_0xba08('0x2f')]||0x0};logger[_0xba08('0x30')](_0xba08('0x31'),_0x2a6cac['id'],'on\x20interval',getIntervals(_0x27d036[_0xba08('0x2c')],_0x21b26d)[_0xba08('0x1d')](_0xba08('0x32')));_0x13044f['push'](_0x2a6cac);}else{logger['error']('Please\x20create\x20a\x20new\x20file\x20under',path[_0xba08('0x1d')](__dirname,_0xba08('0x1a'),_0x21b26d['app']+'.js'));}}_0x27d036[_0xba08('0x15')][_0x5c72c8]=new RuleEngine(_0x13044f);_0x27d036[_0xba08('0x15')][_0x5c72c8][_0xba08('0x33')](_0x1d886f,function(_0x13aa6f){logger[_0xba08('0x30')](_0xba08('0x34'),JSON['stringify'](_0x13aa6f[_0xba08('0x35')]));if(_0x27d036[_0xba08('0x15')][_0x5c72c8]){_0x27d036[_0xba08('0x15')][_0x5c72c8][_0xba08('0x36')]('complete');}});return _0x28b5a0({'code':0xc8,'message':_0x1d886f});}else{logger[_0xba08('0x30')](_0xba08('0x37'));return _0x28b5a0({'code':0xc8,'message':_0x1d886f});}}catch(_0x28e870){logger[_0xba08('0x38')](_0x28e870[_0xba08('0x39')]);return _0x5c5822(_0x2c7aa8[_0xba08('0x38')](0x1f4,_0x28e870));}}return _0x5c5822(_0xba08('0x3a'));});},'AcceptMessage':function(_0x2a81ed){var _0x4ec215=this;return new Promise(function(_0x4a90df,_0x298a35){if(_0x2a81ed[_0xba08('0x3b')]&&_0x2a81ed[_0xba08('0x3b')]['id']){if(_0x27d036[_0xba08('0x3c')][_0x2a81ed[_0xba08('0x3b')]['id']]){_0x27d036['agents'][_0x2a81ed[_0xba08('0x3b')]['id']][_0xba08('0x3d')]=![];_0x27d036['agents'][_0x2a81ed[_0xba08('0x3b')]['id']][_0xba08('0x3e')]=undefined;}}if(_0x2a81ed[_0xba08('0x17')]&&_0x2a81ed[_0xba08('0x17')]['id']){try{var _0x5a527a=getId(_0x2a81ed[_0xba08('0x16')],_0x2a81ed[_0xba08('0x17')]?_0x2a81ed[_0xba08('0x17')]['id']:0x0,_0x2a81ed[_0xba08('0x18')]?_0x2a81ed[_0xba08('0x18')]['id']:0x0);if(_0x27d036['rules'][_0x5a527a]){_0x27d036['rules'][_0x5a527a][_0xba08('0x36')](_0xba08('0x3f'));if(rpc[_0x2a81ed[_0xba08('0x16')]+_0xba08('0x40')]){rpc[_0x2a81ed[_0xba08('0x16')]+'QueueReport'][_0xba08('0x41')](_0x5a527a,{'UserId':_0x2a81ed[_0xba08('0x17')][_0xba08('0x42')]})[_0xba08('0x43')](function(_0x6525bb){logger[_0xba08('0x38')](_0xba08('0x44'));});}}return _0x4a90df({'code':0xc8,'message':_0x2a81ed});}catch(_0x4cf237){logger['error'](_0x4cf237[_0xba08('0x39')]);return _0x298a35(_0x4ec215['error'](0x1f4,_0x4cf237));}}logger[_0xba08('0x38')](_0xba08('0x45'));return _0x298a35(_0x4ec215[_0xba08('0x38')](0x1f4,_0xba08('0x45')));});},'RejectMessage':function(_0xc063bc){var _0x2f26fe=this;return new Promise(function(_0x10f464,_0x3dd371){if(_0xc063bc['agent']&&_0xc063bc[_0xba08('0x3b')]['id']){try{if(_0x27d036['agents'][_0xc063bc[_0xba08('0x3b')]['id']]){_0x27d036[_0xba08('0x3c')][_0xc063bc[_0xba08('0x3b')]['id']][_0xba08('0x3d')]=![];_0x27d036[_0xba08('0x3c')][_0xc063bc[_0xba08('0x3b')]['id']]['busyQueue']=undefined;}return _0x10f464({'code':0xc8,'message':_0xc063bc});}catch(_0x552977){logger[_0xba08('0x38')](_0x552977['stack']);return _0x3dd371(_0x2f26fe[_0xba08('0x38')](0x1f4,_0x552977));}}logger[_0xba08('0x38')](_0xba08('0x45'));return _0x3dd371(_0x2f26fe['error'](0x1f4,_0xba08('0x45')));});},'AbandonInteraction':function(_0x224368){var _0x11a74f=this;return new Promise(function(_0x39322a,_0xb48fb9){if(_0x224368['channel']&&_0x224368[_0xba08('0x18')]&&_0x224368[_0xba08('0x18')]['id']){try{var _0x3b0937=getId(_0x224368[_0xba08('0x16')],_0x224368[_0xba08('0x17')]?_0x224368[_0xba08('0x17')]['id']:0x0,_0x224368['interaction']?_0x224368[_0xba08('0x18')]['id']:0x0);if(_0x27d036[_0xba08('0x15')][_0x3b0937]){_0x27d036[_0xba08('0x15')][_0x3b0937][_0xba08('0x36')]('end');}return _0x39322a({'code':0xc8,'message':_0x224368});}catch(_0x3f0a14){logger[_0xba08('0x38')](_0x3f0a14[_0xba08('0x39')]);return _0xb48fb9(_0x11a74f[_0xba08('0x38')](0x1f4,_0x3f0a14));}}logger[_0xba08('0x38')](_0xba08('0x45'));return _0xb48fb9(_0x11a74f[_0xba08('0x38')](0x1f4,_0xba08('0x45')));});},'AgentCapacity':function(_0x12b25e){var _0x52368e=this;return new Promise(function(_0x1c5010,_0x22c7db){if(_0x27d036['agents']['hasOwnProperty'](_0x12b25e['id'])){for(var _0x34c007 in _0x12b25e['capacity']){if(_0x12b25e[_0xba08('0x46')][_0xba08('0x47')](_0x34c007)){if(_0x27d036[_0xba08('0x3c')][_0x12b25e['id']][_0xba08('0x47')](_0x34c007+_0xba08('0x48'))){_0x27d036[_0xba08('0x3c')][_0x12b25e['id']][_0x34c007+_0xba08('0x48')]=parseInt(_0x12b25e['capacity'][_0x34c007],0xa);}}}_0x27d036[_0xba08('0x3c')][_0x12b25e['id']][_0xba08('0x49')]();return _0x1c5010({'code':0xc8,'message':_0x27d036[_0xba08('0x3c')][_0x12b25e['id']]});}else{return _0x22c7db(_0x52368e[_0xba08('0x38')](0x1f4,_0xba08('0x4a')));}});},'Agents':function(_0xc8d1fd){return new Promise(function(_0xe1b7c2,_0x437b03){var _0x41236f=_[_0xba08('0x4b')](_0x27d036[_0xba08('0x3c')]);_0xe1b7c2({'count':_0x41236f[_0xba08('0x1b')],'rows':_0x41236f});});},'ChatQueues':function(_0x53ec01){return new Promise(function(_0x2a6a4a,_0x27d396){var _0x529c36=[];for(var _0x34cbf7 in _0x27d036[_0xba08('0x4c')]){if(_0x27d036[_0xba08('0x4c')][_0xba08('0x47')](_0x34cbf7)){var _0x134726=_0x27d036[_0xba08('0x4c')][_0x34cbf7];var _0x1d3e44={'id':_0x134726['id'],'available':_0x134726[_0xba08('0x4d')],'loggedIn':_0x134726[_0xba08('0x4e')],'name':_0x134726['name'],'paused':_0x134726[_0xba08('0x4f')],'waiting':_0x134726[_0xba08('0x50')]};_0x529c36[_0xba08('0x21')](_0x1d3e44);}}_0x2a6a4a({'count':_0x529c36[_0xba08('0x1b')],'rows':_0x529c36});});},'MailQueues':function(_0x45f415){return new Promise(function(_0x8f2e06,_0x138899){var _0x5d89a4=[];for(var _0x227932 in _0x27d036['mailQueues']){if(_0x27d036['mailQueues'][_0xba08('0x47')](_0x227932)){var _0xc3294f=_0x27d036[_0xba08('0x51')][_0x227932];var _0x5af7bf={'id':_0xc3294f['id'],'available':_0xc3294f['available'],'loggedIn':_0xc3294f[_0xba08('0x4e')],'name':_0xc3294f[_0xba08('0x52')],'paused':_0xc3294f['paused'],'waiting':_0xc3294f['waiting']};_0x5d89a4['push'](_0x5af7bf);}}_0x8f2e06({'count':_0x5d89a4[_0xba08('0x1b')],'rows':_0x5d89a4});});},'OpenchannelQueues':function(_0x2e2130){return new Promise(function(_0x3cab2d,_0xc1e626){var _0x34d0b9=[];for(var _0x33127a in _0x27d036[_0xba08('0x53')]){if(_0x27d036[_0xba08('0x53')][_0xba08('0x47')](_0x33127a)){var _0x4b1b68=_0x27d036[_0xba08('0x53')][_0x33127a];var _0x423ad9={'id':_0x4b1b68['id'],'available':_0x4b1b68[_0xba08('0x4d')],'loggedIn':_0x4b1b68[_0xba08('0x4e')],'name':_0x4b1b68[_0xba08('0x52')],'paused':_0x4b1b68[_0xba08('0x4f')],'waiting':_0x4b1b68['waiting']};_0x34d0b9[_0xba08('0x21')](_0x423ad9);}}_0x3cab2d({'count':_0x34d0b9[_0xba08('0x1b')],'rows':_0x34d0b9});});},'SmsQueues':function(_0x3e3d03){return new Promise(function(_0x2bb5b5,_0x567667){var _0x4a100c=[];for(var _0x1327b3 in _0x27d036[_0xba08('0x54')]){if(_0x27d036[_0xba08('0x54')]['hasOwnProperty'](_0x1327b3)){var _0xbe2ac0=_0x27d036[_0xba08('0x54')][_0x1327b3];var _0x1e0c05={'id':_0xbe2ac0['id'],'available':_0xbe2ac0[_0xba08('0x4d')],'loggedIn':_0xbe2ac0['loggedIn'],'name':_0xbe2ac0['name'],'paused':_0xbe2ac0['paused'],'waiting':_0xbe2ac0[_0xba08('0x50')]};_0x4a100c[_0xba08('0x21')](_0x1e0c05);}}_0x2bb5b5({'count':_0x4a100c[_0xba08('0x1b')],'rows':_0x4a100c});});},'FaxQueues':function(_0x5bd6ee){return new Promise(function(_0x49a0b6,_0x4e470d){var _0x407c6e=[];for(var _0xb67b93 in _0x27d036[_0xba08('0x55')]){if(_0x27d036[_0xba08('0x55')]['hasOwnProperty'](_0xb67b93)){var _0x3e4484=_0x27d036[_0xba08('0x55')][_0xb67b93];var _0x2c1670={'id':_0x3e4484['id'],'available':_0x3e4484['available'],'loggedIn':_0x3e4484['loggedIn'],'name':_0x3e4484['name'],'paused':_0x3e4484[_0xba08('0x4f')],'waiting':_0x3e4484[_0xba08('0x50')]};_0x407c6e[_0xba08('0x21')](_0x2c1670);}}_0x49a0b6({'count':_0x407c6e[_0xba08('0x1b')],'rows':_0x407c6e});});},'WhatsappQueues':function(_0xd4c0f3){return new Promise(function(_0x3b5420,_0x6d4b3e){var _0x1e6a6d=[];for(var _0x4e5e79 in _0x27d036[_0xba08('0x56')]){if(_0x27d036['whatsappQueues']['hasOwnProperty'](_0x4e5e79)){var _0x155166=_0x27d036[_0xba08('0x56')][_0x4e5e79];var _0x2b7a20={'id':_0x155166['id'],'available':_0x155166[_0xba08('0x4d')],'loggedIn':_0x155166[_0xba08('0x4e')],'name':_0x155166[_0xba08('0x52')],'paused':_0x155166[_0xba08('0x4f')],'waiting':_0x155166[_0xba08('0x50')]};_0x1e6a6d[_0xba08('0x21')](_0x2b7a20);}}_0x3b5420({'count':_0x1e6a6d[_0xba08('0x1b')],'rows':_0x1e6a6d});});},'ChatQueuesWaitingInteractions':function(_0x2c0718){return new Promise(function(_0x17c228,_0x3108a8){var _0x27794e=_['values'](_0x27d036[_0xba08('0x57')]);_0x17c228({'count':_0x27794e[_0xba08('0x1b')],'rows':_0x27794e});});},'MailQueuesWaitingInteractions':function(_0x1980d7){return new Promise(function(_0x37e6b7,_0x281d82){var _0x34b4e8=_[_0xba08('0x4b')](_0x27d036[_0xba08('0x58')]);_0x37e6b7({'count':_0x34b4e8[_0xba08('0x1b')],'rows':_0x34b4e8});});},'OpenchannelQueuesWaitingInteractions':function(_0x2f25ba){return new Promise(function(_0x2bc13d,_0x372d33){var _0x29af4c=_[_0xba08('0x4b')](_0x27d036[_0xba08('0x59')]);_0x2bc13d({'count':_0x29af4c[_0xba08('0x1b')],'rows':_0x29af4c});});},'SmsQueuesWaitingInteractions':function(_0x4a7c50){return new Promise(function(_0x4bb2cb,_0x404875){var _0x4b8491=_['values'](_0x27d036['smsQueuesWaitingInteractions']);_0x4bb2cb({'count':_0x4b8491[_0xba08('0x1b')],'rows':_0x4b8491});});},'FaxQueuesWaitingInteractions':function(_0x2161a0){return new Promise(function(_0x41a227,_0x4876f6){var _0x43c89b=_[_0xba08('0x4b')](_0x27d036[_0xba08('0x5a')]);_0x41a227({'count':_0x43c89b[_0xba08('0x1b')],'rows':_0x43c89b});});},'WhatsappQueuesWaitingInteractions':function(_0x471718){return new Promise(function(_0x250541,_0x3d3c55){var _0x2712fd=_[_0xba08('0x4b')](_0x27d036[_0xba08('0x5b')]);_0x250541({'count':_0x2712fd['length'],'rows':_0x2712fd});});}};var _0x4c0a69=jayson[_0xba08('0x5c')](_0x1f0070)[_0xba08('0x5d')]();_0x4c0a69['on'](_0xba08('0x38'),function(_0x2407b3){logger[_0xba08('0x38')](JSON[_0xba08('0x5e')](_0x2407b3));return _0x1cc997(_0x2407b3);});_0x4c0a69[_0xba08('0x14')](0x232c,_0xba08('0x5f'),function(){console[_0xba08('0x60')](_0xba08('0x61'),0x232c);return _0x2c64e4(_0xba08('0x62')+0x232c);});});};
\ No newline at end of file
index dcb1084..d7ea318 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6abf=['some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','log','stack','util','jayson/promise','lodash','../../../config/logger','routing','client','http','request','error','message','catch','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','push','Command','format','iftime\x20%s','then','true','[%s][INTERVAL]\x20%s'];(function(_0x144497,_0x1e2160){var _0x278ddb=function(_0x5ea137){while(--_0x5ea137){_0x144497['push'](_0x144497['shift']());}};_0x278ddb(++_0x1e2160);}(_0x6abf,0x133));var _0xf6ab=function(_0x2768d1,_0x432caf){_0x2768d1=_0x2768d1-0x0;var _0x3086a7=_0x6abf[_0x2768d1];return _0x3086a7;};'use strict';var util=require(_0xf6ab('0x0'));var BPromise=require('bluebird');var jayson=require(_0xf6ab('0x1'));var _=require(_0xf6ab('0x2'));var logger=require(_0xf6ab('0x3'))(_0xf6ab('0x4'));var client=jayson[_0xf6ab('0x5')][_0xf6ab('0x6')]({'port':0x232a});function request(_0xbc2a94,_0x5679f6){return new BPromise(function(_0x2e94d5,_0x596174){return client[_0xf6ab('0x7')](_0xbc2a94,_0x5679f6)['then'](function(_0x2f8092){if(_0x2f8092['error']){return _0x596174(_0x2f8092[_0xf6ab('0x8')][_0xf6ab('0x9')]);}else{return _0x2e94d5(_0x2f8092['result']);}})[_0xf6ab('0xa')](function(_0x1d2a08){return _0x596174(_0x1d2a08);});});}exports[_0xf6ab('0xb')]=function(_0x125f0d,_0xda9763,_0xbccabf){return function(_0x1cc073){if(_0xbccabf[_0xf6ab('0xc')]&&!_0xbccabf[_0xf6ab('0xc')][_0x125f0d]){logger[_0xf6ab('0xd')](_0xf6ab('0xe'),_0x125f0d);return _0x1cc073[_0xf6ab('0xf')]();}var _0x44cf2a=[];for(var _0x17da68=0x0;_0x17da68<_0xda9763['length'];_0x17da68+=0x1){_0x44cf2a[_0xf6ab('0x10')](request(_0xf6ab('0x11'),{'command':util[_0xf6ab('0x12')](_0xf6ab('0x13'),_0xda9763[_0x17da68])})[_0xf6ab('0x14')](function(_0x1d3744){return _0x1d3744&&_0x1d3744[_0xf6ab('0x9')]&&_0x1d3744[_0xf6ab('0x9')]['indexOf'](_0xf6ab('0x15'))>=0x0?!![]:![];})[_0xf6ab('0xa')](function(_0x44e8da){logger[_0xf6ab('0x8')](_0xf6ab('0x16'),_0x125f0d,_0xda9763[_0x17da68]);}));}BPromise['all'](_0x44cf2a)['then'](function(_0x30b11c){var _0x8faddb=_[_0xf6ab('0x17')](_0x30b11c);logger['info'](_0xf6ab('0x18'),_0x125f0d,_0xda9763[_0xf6ab('0x19')](_0xf6ab('0x1a')),_0x8faddb);_0x1cc073[_0xf6ab('0x1b')](_0x8faddb);})[_0xf6ab('0xa')](function(_0x4385f3){console[_0xf6ab('0x1c')](_0x4385f3);logger[_0xf6ab('0x8')](_0xf6ab('0x18'),_0x125f0d,_0xda9763[_0xf6ab('0x19')](_0xf6ab('0x1a')),_0x4385f3[_0xf6ab('0x1d')]);_0x1cc073['stop']();});};};
\ No newline at end of file
+var _0xc062=['format','iftime\x20%s','then','message','indexOf','true','[%s][INTERVAL]\x20%s','all','some','info','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','log','stack','util','bluebird','jayson/promise','../../../config/logger','routing','client','error','result','catch','rules','stop','length','push','Command'];(function(_0x4c2fdb,_0x2ed46b){var _0x2ceb81=function(_0x3127d0){while(--_0x3127d0){_0x4c2fdb['push'](_0x4c2fdb['shift']());}};_0x2ceb81(++_0x2ed46b);}(_0xc062,0x178));var _0x2c06=function(_0x305d9a,_0x53f871){_0x305d9a=_0x305d9a-0x0;var _0x346482=_0xc062[_0x305d9a];return _0x346482;};'use strict';var util=require(_0x2c06('0x0'));var BPromise=require(_0x2c06('0x1'));var jayson=require(_0x2c06('0x2'));var _=require('lodash');var logger=require(_0x2c06('0x3'))(_0x2c06('0x4'));var client=jayson[_0x2c06('0x5')]['http']({'port':0x232a});function request(_0x88bc41,_0x11b31c){return new BPromise(function(_0x1a1afa,_0x55ce7b){return client['request'](_0x88bc41,_0x11b31c)['then'](function(_0xc76f25){if(_0xc76f25[_0x2c06('0x6')]){return _0x55ce7b(_0xc76f25[_0x2c06('0x6')]['message']);}else{return _0x1a1afa(_0xc76f25[_0x2c06('0x7')]);}})[_0x2c06('0x8')](function(_0x358572){return _0x55ce7b(_0x358572);});});}exports['condition']=function(_0x30da3d,_0x40f5fe,_0x6060f9){return function(_0x3b7882){if(_0x6060f9[_0x2c06('0x9')]&&!_0x6060f9[_0x2c06('0x9')][_0x30da3d]){logger['info']('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x30da3d);return _0x3b7882[_0x2c06('0xa')]();}var _0x49031f=[];for(var _0x2d1380=0x0;_0x2d1380<_0x40f5fe[_0x2c06('0xb')];_0x2d1380+=0x1){_0x49031f[_0x2c06('0xc')](request(_0x2c06('0xd'),{'command':util[_0x2c06('0xe')](_0x2c06('0xf'),_0x40f5fe[_0x2d1380])})[_0x2c06('0x10')](function(_0x3847b2){return _0x3847b2&&_0x3847b2[_0x2c06('0x11')]&&_0x3847b2[_0x2c06('0x11')][_0x2c06('0x12')](_0x2c06('0x13'))>=0x0?!![]:![];})[_0x2c06('0x8')](function(_0x4bac8e){logger[_0x2c06('0x6')](_0x2c06('0x14'),_0x30da3d,_0x40f5fe[_0x2d1380]);}));}BPromise[_0x2c06('0x15')](_0x49031f)['then'](function(_0x1423c5){var _0x15a81d=_[_0x2c06('0x16')](_0x1423c5);logger[_0x2c06('0x17')](_0x2c06('0x18'),_0x30da3d,_0x40f5fe[_0x2c06('0x19')](_0x2c06('0x1a')),_0x15a81d);_0x3b7882[_0x2c06('0x1b')](_0x15a81d);})[_0x2c06('0x8')](function(_0x2a28dc){console[_0x2c06('0x1c')](_0x2a28dc);logger[_0x2c06('0x6')](_0x2c06('0x18'),_0x30da3d,_0x40f5fe[_0x2c06('0x19')]('\x20|\x20'),_0x2a28dc[_0x2c06('0x1d')]);_0x3b7882[_0x2c06('0xa')]();});};};
\ No newline at end of file
index 623cbf0..5f8e517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c00=['queuecallerabandon','forIn','includes','agentringnoanswer','now','abandoned','[%s][agents][queuecallerabandon]','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','agentringnoanswerAt','answered_elsewhere','answeredelsewheremembername','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diffTime','agentcompleteAt','complete','[%s][agents][agentcomplete]','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','blind','transferexten','extension','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','transfertype','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','agent','lodash','util','./utils','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','membername','interface','calleridnum','connectedlinenum','queue','getVoiceQueueByName','type','agentacw','agentcomplete','acw','acwTimeout','CreateVoiceAgentReport','request','destuniqueid','debug','[%s][agents][agentcalled]','agentcalledAt','lastevent','called','connectedlinename','info','error','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','timeout','reason','holdtime','ringtime','talktime','push'];(function(_0x224ad9,_0x5d97a7){var _0x532997=function(_0x323951){while(--_0x323951){_0x224ad9['push'](_0x224ad9['shift']());}};_0x532997(++_0x5d97a7);}(_0x5c00,0x17e));var _0x05c0=function(_0x25c326,_0x250137){_0x25c326=_0x25c326-0x0;var _0x762452=_0x5c00[_0x25c326];return _0x762452;};'use strict';var _=require(_0x05c0('0x0'));var util=require(_0x05c0('0x1'));var utils=require(_0x05c0('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x4e54ec,_0x1e76da){utils['info'](util[_0x05c0('0x3')](_0x05c0('0x4'),_0x4e54ec[_0x05c0('0x5')],_0x4e54ec[_0x05c0('0x6')],_0x4e54ec['queue'],_0x4e54ec[_0x05c0('0x7')],_0x4e54ec[_0x05c0('0x8')],_0x4e54ec[_0x05c0('0x9')],_0x4e54ec[_0x05c0('0xa')],_0x4e54ec['lastevent']));if(_0x4e54ec[_0x05c0('0xb')]){utils[_0x05c0('0xc')](_0x4e54ec[_0x05c0('0xb')])['then'](function(_0x32a795){if(_0x32a795){_0x4e54ec[_0x05c0('0xd')]=_0x32a795[_0x05c0('0xd')];_0x4e54ec[_0x05c0('0xe')]=_0x4e54ec[_0x05c0('0xf')]?_0x32a795[_0x05c0('0x10')]:![];_0x4e54ec['acwtime']=_0x4e54ec['agentacw']?_0x32a795[_0x05c0('0x11')]:0x0;}utils['request'](_0x05c0('0x12'),_0x4e54ec);});}else{utils[_0x05c0('0x13')](_0x05c0('0x12'),_0x4e54ec);}if(_0x1e76da){delete transfers[_0x4e54ec['uniqueid']];}else{delete agents[_0x4e54ec[_0x05c0('0x14')]];}}exports['agentcalled']=function(_0x16a290){try{utils[_0x05c0('0x15')](util[_0x05c0('0x3')](_0x05c0('0x16'),_0x16a290[_0x05c0('0x5')]),_0x16a290);agents[_0x16a290[_0x05c0('0x14')]]=_0x16a290;agents[_0x16a290[_0x05c0('0x14')]][_0x05c0('0x17')]=utils['now']();agents[_0x16a290[_0x05c0('0x14')]][_0x05c0('0x18')]=_0x05c0('0x19');agents[_0x16a290[_0x05c0('0x14')]][_0x05c0('0xa')]=null;agents[_0x16a290[_0x05c0('0x14')]][_0x05c0('0x1a')]=null;utils[_0x05c0('0x1b')](util[_0x05c0('0x3')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x16a290[_0x05c0('0x5')],agents[_0x16a290[_0x05c0('0x14')]][_0x05c0('0x7')],_0x16a290['destuniqueid']));}catch(_0x40d905){utils[_0x05c0('0x1c')](util[_0x05c0('0x3')](_0x05c0('0x16'),_0x16a290[_0x05c0('0x5')]),_0x40d905);}};exports['agentringnoanswer']=function(_0x407c1f){try{if(!_[_0x05c0('0x1d')](agents[_0x407c1f['destuniqueid']])){utils['debug'](util['format'](_0x05c0('0x1e'),_0x407c1f[_0x05c0('0x5')]),_0x407c1f);utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x1f'),_0x407c1f[_0x05c0('0x5')],agents[_0x407c1f[_0x05c0('0x14')]]['membername'],_0x407c1f[_0x05c0('0x14')]));agents[_0x407c1f[_0x05c0('0x14')]]['agentringnoanswer']=!![];agents[_0x407c1f['destuniqueid']]['agentringnoanswerAt']=utils['now']();agents[_0x407c1f['destuniqueid']][_0x05c0('0x18')]=_0x05c0('0x20');agents[_0x407c1f['destuniqueid']][_0x05c0('0x21')]=_0x05c0('0x20');agents[_0x407c1f[_0x05c0('0x14')]][_0x05c0('0x22')]=_0x407c1f['ringtime']?parseInt(_0x407c1f[_0x05c0('0x23')])/0x3e8:0x0;agents[_0x407c1f[_0x05c0('0x14')]][_0x05c0('0x24')]=0x0;unanswered[_0x05c0('0x25')](_0x407c1f[_0x05c0('0x14')]);}}catch(_0x5d12e0){utils['error'](util['format'](_0x05c0('0x1e'),_0x407c1f[_0x05c0('0x5')]),_0x5d12e0);}};exports[_0x05c0('0x26')]=function(_0xd6574e){try{_[_0x05c0('0x27')](agents,function(_0x1e00c5,_0x1c4c8f){if(_0x1e00c5[_0x05c0('0x5')]==_0xd6574e[_0x05c0('0x5')]&&!_[_0x05c0('0x28')](unanswered,_0x1e00c5[_0x05c0('0x14')])){utils[_0x05c0('0x15')](util['format']('[%s][agents][queuecallerabandon]',_0xd6574e[_0x05c0('0x5')]),_0xd6574e);utils[_0x05c0('0x1b')](util[_0x05c0('0x3')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0xd6574e[_0x05c0('0x5')],_0x1e00c5[_0x05c0('0x7')],_0x1e00c5['destuniqueid']));_0x1e00c5[_0x05c0('0x29')]=!![];_0x1e00c5['agentringnoanswerAt']=utils[_0x05c0('0x2a')]();_0x1e00c5[_0x05c0('0x18')]=_0x05c0('0x2b');_0x1e00c5[_0x05c0('0x21')]=_0x05c0('0x2b');_0x1e00c5[_0x05c0('0x22')]=_0xd6574e[_0x05c0('0x22')];_0x1e00c5[_0x05c0('0x24')]=0x0;writeDB(_0x1e00c5);}});}catch(_0x3d8d76){utils[_0x05c0('0x1c')](util[_0x05c0('0x3')](_0x05c0('0x2c'),_0xd6574e[_0x05c0('0x5')]),_0x3d8d76);}};exports[_0x05c0('0x2d')]=function(_0x185d05){try{if(agents[_0x185d05[_0x05c0('0x14')]]){utils[_0x05c0('0x15')](util[_0x05c0('0x3')](_0x05c0('0x2e'),_0x185d05[_0x05c0('0x5')]),_0x185d05);utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x2f'),_0x185d05[_0x05c0('0x5')],agents[_0x185d05[_0x05c0('0x14')]][_0x05c0('0x7')],_0x185d05[_0x05c0('0x14')]));agents[_0x185d05[_0x05c0('0x14')]][_0x05c0('0x30')]=utils[_0x05c0('0x2a')]();agents[_0x185d05[_0x05c0('0x14')]][_0x05c0('0xa')]=_0x185d05[_0x05c0('0xa')];agents[_0x185d05['destuniqueid']][_0x05c0('0x1a')]=_0x185d05[_0x05c0('0x1a')];agents[_0x185d05[_0x05c0('0x14')]][_0x05c0('0x22')]=_0x185d05['ringtime'];agents[_0x185d05['destuniqueid']][_0x05c0('0x18')]=_0x05c0('0x31');_[_0x05c0('0x27')](agents,function(_0x4ced8e,_0x29dc87){if(_0x4ced8e[_0x05c0('0x14')]!=_0x185d05[_0x05c0('0x14')]&&_0x4ced8e[_0x05c0('0x5')]==_0x185d05['uniqueid']){_0x4ced8e[_0x05c0('0x24')]=0x0;_0x4ced8e[_0x05c0('0x22')]=_0x185d05['ringtime'];_0x4ced8e[_0x05c0('0x29')]=!![];_0x4ced8e[_0x05c0('0x32')]=utils[_0x05c0('0x2a')]();_0x4ced8e[_0x05c0('0x18')]=_0x05c0('0x33');_0x4ced8e[_0x05c0('0x21')]=_0x05c0('0x33');_0x4ced8e['answeredelsewheredestinationuniqueid']=_0x185d05['destuniqueid'];_0x4ced8e[_0x05c0('0x34')]=_0x185d05[_0x05c0('0x7')];writeDB(_0x4ced8e);}});}}catch(_0xaa5d53){utils[_0x05c0('0x1c')](util[_0x05c0('0x3')]('[%s][agents][agentconnect]',_0x185d05[_0x05c0('0x5')]),_0xaa5d53);}};exports[_0x05c0('0xf')]=function(_0x2fdfe8){try{if(!_[_0x05c0('0x1d')](agents[_0x2fdfe8[_0x05c0('0x14')]])){utils[_0x05c0('0x15')](util[_0x05c0('0x3')]('[%s][agents][agentcomplete]',_0x2fdfe8[_0x05c0('0x5')]),_0x2fdfe8);utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x35'),_0x2fdfe8[_0x05c0('0x5')],agents[_0x2fdfe8[_0x05c0('0x14')]][_0x05c0('0x7')],_0x2fdfe8[_0x05c0('0x14')]));agents[_0x2fdfe8[_0x05c0('0x14')]][_0x05c0('0xf')]=!![];agents[_0x2fdfe8[_0x05c0('0x14')]]['agentcompleteAt']=utils['now']();agents[_0x2fdfe8[_0x05c0('0x14')]][_0x05c0('0x24')]=utils[_0x05c0('0x36')](agents[_0x2fdfe8[_0x05c0('0x14')]][_0x05c0('0x37')],agents[_0x2fdfe8[_0x05c0('0x14')]]['agentconnectAt']);agents[_0x2fdfe8[_0x05c0('0x14')]][_0x05c0('0x21')]=_0x2fdfe8[_0x05c0('0x21')];agents[_0x2fdfe8[_0x05c0('0x14')]]['lastevent']=_0x05c0('0x38');writeDB(agents[_0x2fdfe8[_0x05c0('0x14')]]);}}catch(_0x3ec0bf){utils[_0x05c0('0x1c')](util['format'](_0x05c0('0x39'),_0x2fdfe8[_0x05c0('0x5')]),_0x3ec0bf);}};exports[_0x05c0('0x3a')]=function(_0x9b521b){try{if(!_['isNil'](agents[_0x9b521b[_0x05c0('0x3b')]])){utils[_0x05c0('0x15')](util['format'](_0x05c0('0x3c'),_0x9b521b['uniqueid']),_0x9b521b);utils['info'](util[_0x05c0('0x3')]('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0x9b521b[_0x05c0('0x5')],agents[_0x9b521b[_0x05c0('0x3b')]][_0x05c0('0x7')],agents[_0x9b521b[_0x05c0('0x3b')]][_0x05c0('0x5')]));agents[_0x9b521b[_0x05c0('0x3b')]]['transfer']=!![];agents[_0x9b521b[_0x05c0('0x3b')]]['transfertype']=_0x05c0('0x3d');agents[_0x9b521b[_0x05c0('0x3b')]][_0x05c0('0x3e')]=_0x9b521b[_0x05c0('0x3f')];agents[_0x9b521b[_0x05c0('0x3b')]][_0x05c0('0x40')]=agents[_0x9b521b[_0x05c0('0x3b')]]['uniqueid'];}}catch(_0x5215b4){utils['error'](util[_0x05c0('0x3')](_0x05c0('0x3c'),_0x9b521b['uniqueid']),_0x5215b4);}};exports['attendedtransfer']=function(_0xbfb9cb){try{utils[_0x05c0('0x15')](util[_0x05c0('0x3')](_0x05c0('0x41'),_0xbfb9cb[_0x05c0('0x42')]),_0xbfb9cb);if(_0xbfb9cb[_0x05c0('0x42')]==_0xbfb9cb[_0x05c0('0x43')]){if(!_['isNil'](agents[_0xbfb9cb[_0x05c0('0x44')]])){utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x45'),_0xbfb9cb['origtransfereruniqueid'],agents[_0xbfb9cb[_0x05c0('0x44')]]['membername']));agents[_0xbfb9cb[_0x05c0('0x44')]][_0x05c0('0x46')]=!![];agents[_0xbfb9cb['secondtransfereruniqueid']][_0x05c0('0x47')]='ATTENDED';agents[_0xbfb9cb[_0x05c0('0x44')]][_0x05c0('0x3e')]=_0xbfb9cb[_0x05c0('0x48')];agents[_0xbfb9cb[_0x05c0('0x44')]][_0x05c0('0x40')]=_0xbfb9cb[_0x05c0('0x42')];}if(_0xbfb9cb['transfereeuniqueid']&&agents[_0xbfb9cb[_0x05c0('0x49')]]){agents[_0xbfb9cb[_0x05c0('0x49')]][_0x05c0('0x4a')]=0x1;transfers[_0xbfb9cb[_0x05c0('0x49')]]=_[_0x05c0('0x4b')](agents[_0xbfb9cb[_0x05c0('0x49')]]);transfers[_0xbfb9cb['transfereeuniqueid']][_0x05c0('0x9')]=agents[_0xbfb9cb[_0x05c0('0x44')]][_0x05c0('0x9')];transfers[_0xbfb9cb[_0x05c0('0x49')]][_0x05c0('0x4c')]=agents[_0xbfb9cb[_0x05c0('0x44')]][_0x05c0('0x4c')];transfers[_0xbfb9cb[_0x05c0('0x49')]][_0x05c0('0x17')]=utils[_0x05c0('0x2a')]();transfers[_0xbfb9cb[_0x05c0('0x49')]][_0x05c0('0x30')]=utils['now']();transfers[_0xbfb9cb['transfereeuniqueid']]['holdtime']=0x0;transfers[_0xbfb9cb[_0x05c0('0x49')]][_0x05c0('0x4a')]=0x2;}}else if(_0xbfb9cb[_0x05c0('0x44')]==_0xbfb9cb['secondtransfererlinkedid']){if(!_[_0x05c0('0x1d')](agents[_0xbfb9cb[_0x05c0('0x42')]])){utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x45'),_0xbfb9cb[_0x05c0('0x42')],agents[_0xbfb9cb[_0x05c0('0x42')]]['membername']));agents[_0xbfb9cb[_0x05c0('0x42')]][_0x05c0('0x46')]=!![];agents[_0xbfb9cb[_0x05c0('0x42')]][_0x05c0('0x47')]='ATTENDED';agents[_0xbfb9cb['origtransfereruniqueid']]['transferexten']=_0xbfb9cb[_0x05c0('0x4d')];agents[_0xbfb9cb[_0x05c0('0x42')]][_0x05c0('0x40')]=_0xbfb9cb[_0x05c0('0x44')];}if(_0xbfb9cb[_0x05c0('0x4e')]&&agents[_0xbfb9cb[_0x05c0('0x4e')]]){agents[_0xbfb9cb[_0x05c0('0x4e')]]['agententerreason']=0x1;transfers[_0xbfb9cb[_0x05c0('0x4e')]]=_[_0x05c0('0x4b')](agents[_0xbfb9cb[_0x05c0('0x4e')]]);transfers[_0xbfb9cb[_0x05c0('0x4e')]][_0x05c0('0x9')]=agents[_0xbfb9cb['origtransfereruniqueid']]['calleridnum'];transfers[_0xbfb9cb[_0x05c0('0x4e')]][_0x05c0('0x4c')]=agents[_0xbfb9cb['origtransfereruniqueid']][_0x05c0('0x4c')];transfers[_0xbfb9cb['transfertargetuniqueid']]['agentcalledAt']=utils[_0x05c0('0x2a')]();transfers[_0xbfb9cb[_0x05c0('0x4e')]][_0x05c0('0x30')]=utils['now']();transfers[_0xbfb9cb['transfertargetuniqueid']][_0x05c0('0x22')]=0x0;transfers[_0xbfb9cb[_0x05c0('0x4e')]][_0x05c0('0x4a')]=0x2;}}}catch(_0x5b39cb){utils['error'](util['format']('[%s][agents][attendedtransfer]',_0xbfb9cb['origtransfereruniqueid']),_0x5b39cb);}};exports[_0x05c0('0x4f')]=function(_0x4f43ae){try{utils['debug'](util['format'](_0x05c0('0x50'),_0x4f43ae[_0x05c0('0x5')]),_0x4f43ae);if(agents[_0x4f43ae[_0x05c0('0x5')]]&&agents[_0x4f43ae['uniqueid']][_0x05c0('0x21')]===_0x05c0('0x20')){if(_0x4f43ae['cause']==='21'){agents[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x21')]=_0x05c0('0x51');agents[_0x4f43ae[_0x05c0('0x5')]]['lastevent']=_0x05c0('0x51');}utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x52'),_0x4f43ae[_0x05c0('0x5')],agents[_0x4f43ae['uniqueid']]['membername'],agents[_0x4f43ae[_0x05c0('0x5')]]['reason'],agents[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x18')]));writeDB(agents[_0x4f43ae['uniqueid']]);var _0x3135bd=unanswered['indexOf'](_0x4f43ae['uniqueid']);if(_0x3135bd>-0x1){unanswered['splice'](_0x3135bd,0x1);}}if(transfers[_0x4f43ae['uniqueid']]){transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0xf')]=!![];transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x37')]=utils['now']();transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x24')]=utils[_0x05c0('0x36')](transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x37')],transfers[_0x4f43ae['uniqueid']][_0x05c0('0x30')]);transfers[_0x4f43ae['uniqueid']]['reason']=_0x05c0('0x53');transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x18')]=_0x05c0('0x38');utils[_0x05c0('0x1b')](util[_0x05c0('0x3')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x4f43ae['uniqueid'],transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x7')],transfers[_0x4f43ae[_0x05c0('0x5')]]['reason'],transfers[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x18')]));writeDB(transfers[_0x4f43ae[_0x05c0('0x5')]],!![]);}if(agents[_0x4f43ae[_0x05c0('0x5')]]&&agents[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x30')]){agents[_0x4f43ae['uniqueid']][_0x05c0('0xf')]=!![];agents[_0x4f43ae[_0x05c0('0x5')]]['agentcompleteAt']=utils[_0x05c0('0x2a')]();agents[_0x4f43ae[_0x05c0('0x5')]]['talktime']=utils[_0x05c0('0x36')](agents[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x37')],agents[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x30')]);agents[_0x4f43ae[_0x05c0('0x5')]]['reason']=agents[_0x4f43ae[_0x05c0('0x5')]]['transfer']?_0x05c0('0x46'):_0x05c0('0x53');agents[_0x4f43ae[_0x05c0('0x5')]][_0x05c0('0x18')]=_0x05c0('0x38');utils[_0x05c0('0x1b')](util[_0x05c0('0x3')](_0x05c0('0x52'),_0x4f43ae[_0x05c0('0x5')],agents[_0x4f43ae[_0x05c0('0x5')]]['membername'],agents[_0x4f43ae[_0x05c0('0x5')]]['reason'],agents[_0x4f43ae[_0x05c0('0x5')]]['lastevent']));writeDB(agents[_0x4f43ae[_0x05c0('0x5')]]);}}catch(_0x36f82a){utils[_0x05c0('0x1c')](util[_0x05c0('0x3')](_0x05c0('0x50'),_0x4f43ae[_0x05c0('0x5')]),_0x36f82a);}};
\ No newline at end of file
+var _0xe605=['agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','lastevent','timeout','holdtime','ringtime','talktime','queuecallerabandon','forIn','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connect','now','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','agentconnectAt','reason','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','transfer','transfertype','transferexten','extension','attendedtransfer','origtransfereruniqueid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','origtransfererexten','transferuniqueid','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','[%s][agents][attendedtransfer]','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','diffTime','agent','lodash','util','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','type','agentacw','agentcomplete','acw','request','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','agentcalledAt','called','connectedlinename','error','[%s][agents][agentcalled]'];(function(_0x2a89da,_0x4fe293){var _0x47c19b=function(_0x17791b){while(--_0x17791b){_0x2a89da['push'](_0x2a89da['shift']());}};_0x47c19b(++_0x4fe293);}(_0xe605,0x92));var _0x5e60=function(_0xc827e6,_0xa98e9e){_0xc827e6=_0xc827e6-0x0;var _0x44f87c=_0xe605[_0xc827e6];return _0x44f87c;};'use strict';var _=require(_0x5e60('0x0'));var util=require(_0x5e60('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x36add0,_0x455efd){utils[_0x5e60('0x2')](util[_0x5e60('0x3')](_0x5e60('0x4'),_0x36add0[_0x5e60('0x5')],_0x36add0[_0x5e60('0x6')],_0x36add0[_0x5e60('0x7')],_0x36add0[_0x5e60('0x8')],_0x36add0[_0x5e60('0x9')],_0x36add0[_0x5e60('0xa')],_0x36add0[_0x5e60('0xb')],_0x36add0['lastevent']));if(_0x36add0[_0x5e60('0x7')]){utils['getVoiceQueueByName'](_0x36add0['queue'])['then'](function(_0x43f7eb){if(_0x43f7eb){_0x36add0[_0x5e60('0xc')]=_0x43f7eb[_0x5e60('0xc')];_0x36add0[_0x5e60('0xd')]=_0x36add0[_0x5e60('0xe')]?_0x43f7eb[_0x5e60('0xf')]:![];_0x36add0['acwtime']=_0x36add0[_0x5e60('0xd')]?_0x43f7eb['acwTimeout']:0x0;}utils[_0x5e60('0x10')](_0x5e60('0x11'),_0x36add0);});}else{utils[_0x5e60('0x10')]('CreateVoiceAgentReport',_0x36add0);}if(_0x455efd){delete transfers[_0x36add0[_0x5e60('0x5')]];}else{delete agents[_0x36add0[_0x5e60('0x12')]];}}exports[_0x5e60('0x13')]=function(_0xe039de){try{utils[_0x5e60('0x14')](util[_0x5e60('0x3')]('[%s][agents][agentcalled]',_0xe039de[_0x5e60('0x5')]),_0xe039de);agents[_0xe039de[_0x5e60('0x12')]]=_0xe039de;agents[_0xe039de[_0x5e60('0x12')]][_0x5e60('0x15')]=utils['now']();agents[_0xe039de[_0x5e60('0x12')]]['lastevent']=_0x5e60('0x16');agents[_0xe039de[_0x5e60('0x12')]]['connectedlinenum']=null;agents[_0xe039de[_0x5e60('0x12')]][_0x5e60('0x17')]=null;utils[_0x5e60('0x2')](util[_0x5e60('0x3')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0xe039de[_0x5e60('0x5')],agents[_0xe039de[_0x5e60('0x12')]]['membername'],_0xe039de[_0x5e60('0x12')]));}catch(_0x3a9e6b){utils[_0x5e60('0x18')](util[_0x5e60('0x3')](_0x5e60('0x19'),_0xe039de[_0x5e60('0x5')]),_0x3a9e6b);}};exports[_0x5e60('0x1a')]=function(_0x524c93){try{if(!_[_0x5e60('0x1b')](agents[_0x524c93[_0x5e60('0x12')]])){utils[_0x5e60('0x14')](util['format'](_0x5e60('0x1c'),_0x524c93['uniqueid']),_0x524c93);utils[_0x5e60('0x2')](util[_0x5e60('0x3')](_0x5e60('0x1d'),_0x524c93[_0x5e60('0x5')],agents[_0x524c93[_0x5e60('0x12')]][_0x5e60('0x8')],_0x524c93[_0x5e60('0x12')]));agents[_0x524c93['destuniqueid']][_0x5e60('0x1a')]=!![];agents[_0x524c93[_0x5e60('0x12')]][_0x5e60('0x1e')]=utils['now']();agents[_0x524c93[_0x5e60('0x12')]][_0x5e60('0x1f')]=_0x5e60('0x20');agents[_0x524c93[_0x5e60('0x12')]]['reason']=_0x5e60('0x20');agents[_0x524c93['destuniqueid']][_0x5e60('0x21')]=_0x524c93[_0x5e60('0x22')]?parseInt(_0x524c93['ringtime'])/0x3e8:0x0;agents[_0x524c93[_0x5e60('0x12')]][_0x5e60('0x23')]=0x0;unanswered['push'](_0x524c93[_0x5e60('0x12')]);}}catch(_0xac9c7a){utils['error'](util['format']('[%s][agents][agentringnoanswer]',_0x524c93[_0x5e60('0x5')]),_0xac9c7a);}};exports[_0x5e60('0x24')]=function(_0x2e8e9e){try{_[_0x5e60('0x25')](agents,function(_0x3ccfee,_0x558197){if(_0x3ccfee[_0x5e60('0x5')]==_0x2e8e9e[_0x5e60('0x5')]&&!_['includes'](unanswered,_0x3ccfee[_0x5e60('0x12')])){utils['debug'](util['format'](_0x5e60('0x26'),_0x2e8e9e[_0x5e60('0x5')]),_0x2e8e9e);utils[_0x5e60('0x2')](util[_0x5e60('0x3')](_0x5e60('0x27'),_0x2e8e9e[_0x5e60('0x5')],_0x3ccfee[_0x5e60('0x8')],_0x3ccfee[_0x5e60('0x12')]));_0x3ccfee[_0x5e60('0x1a')]=!![];_0x3ccfee[_0x5e60('0x1e')]=utils['now']();_0x3ccfee[_0x5e60('0x1f')]='abandoned';_0x3ccfee['reason']=_0x5e60('0x28');_0x3ccfee[_0x5e60('0x21')]=_0x2e8e9e['holdtime'];_0x3ccfee[_0x5e60('0x23')]=0x0;writeDB(_0x3ccfee);}});}catch(_0x576c70){utils[_0x5e60('0x18')](util[_0x5e60('0x3')](_0x5e60('0x26'),_0x2e8e9e[_0x5e60('0x5')]),_0x576c70);}};exports[_0x5e60('0x29')]=function(_0x23498b){try{if(agents[_0x23498b[_0x5e60('0x12')]]){utils[_0x5e60('0x14')](util['format'](_0x5e60('0x2a'),_0x23498b[_0x5e60('0x5')]),_0x23498b);utils[_0x5e60('0x2')](util[_0x5e60('0x3')](_0x5e60('0x2b'),_0x23498b[_0x5e60('0x5')],agents[_0x23498b[_0x5e60('0x12')]]['membername'],_0x23498b[_0x5e60('0x12')]));agents[_0x23498b[_0x5e60('0x12')]]['agentconnectAt']=utils['now']();agents[_0x23498b[_0x5e60('0x12')]][_0x5e60('0xb')]=_0x23498b[_0x5e60('0xb')];agents[_0x23498b[_0x5e60('0x12')]][_0x5e60('0x17')]=_0x23498b['connectedlinename'];agents[_0x23498b[_0x5e60('0x12')]][_0x5e60('0x21')]=_0x23498b[_0x5e60('0x22')];agents[_0x23498b[_0x5e60('0x12')]][_0x5e60('0x1f')]=_0x5e60('0x2c');_[_0x5e60('0x25')](agents,function(_0x54022a,_0x401bf1){if(_0x54022a[_0x5e60('0x12')]!=_0x23498b['destuniqueid']&&_0x54022a['uniqueid']==_0x23498b['uniqueid']){_0x54022a[_0x5e60('0x23')]=0x0;_0x54022a[_0x5e60('0x21')]=_0x23498b[_0x5e60('0x22')];_0x54022a[_0x5e60('0x1a')]=!![];_0x54022a['agentringnoanswerAt']=utils[_0x5e60('0x2d')]();_0x54022a[_0x5e60('0x1f')]='answered_elsewhere';_0x54022a['reason']=_0x5e60('0x2e');_0x54022a[_0x5e60('0x2f')]=_0x23498b[_0x5e60('0x12')];_0x54022a[_0x5e60('0x30')]=_0x23498b[_0x5e60('0x8')];writeDB(_0x54022a);}});}}catch(_0x3899ae){utils[_0x5e60('0x18')](util[_0x5e60('0x3')](_0x5e60('0x2a'),_0x23498b['uniqueid']),_0x3899ae);}};exports[_0x5e60('0xe')]=function(_0x2bb154){try{if(!_['isNil'](agents[_0x2bb154[_0x5e60('0x12')]])){utils[_0x5e60('0x14')](util[_0x5e60('0x3')](_0x5e60('0x31'),_0x2bb154[_0x5e60('0x5')]),_0x2bb154);utils['info'](util[_0x5e60('0x3')](_0x5e60('0x32'),_0x2bb154[_0x5e60('0x5')],agents[_0x2bb154[_0x5e60('0x12')]]['membername'],_0x2bb154['destuniqueid']));agents[_0x2bb154['destuniqueid']][_0x5e60('0xe')]=!![];agents[_0x2bb154[_0x5e60('0x12')]][_0x5e60('0x33')]=utils[_0x5e60('0x2d')]();agents[_0x2bb154[_0x5e60('0x12')]][_0x5e60('0x23')]=utils['diffTime'](agents[_0x2bb154[_0x5e60('0x12')]][_0x5e60('0x33')],agents[_0x2bb154[_0x5e60('0x12')]][_0x5e60('0x34')]);agents[_0x2bb154[_0x5e60('0x12')]][_0x5e60('0x35')]=_0x2bb154[_0x5e60('0x35')];agents[_0x2bb154['destuniqueid']][_0x5e60('0x1f')]=_0x5e60('0x36');writeDB(agents[_0x2bb154[_0x5e60('0x12')]]);}}catch(_0x1b3add){utils[_0x5e60('0x18')](util[_0x5e60('0x3')](_0x5e60('0x31'),_0x2bb154[_0x5e60('0x5')]),_0x1b3add);}};exports[_0x5e60('0x37')]=function(_0x350d6d){try{if(!_[_0x5e60('0x1b')](agents[_0x350d6d[_0x5e60('0x38')]])){utils[_0x5e60('0x14')](util[_0x5e60('0x3')](_0x5e60('0x39'),_0x350d6d[_0x5e60('0x5')]),_0x350d6d);utils[_0x5e60('0x2')](util[_0x5e60('0x3')]('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0x350d6d['uniqueid'],agents[_0x350d6d[_0x5e60('0x38')]]['membername'],agents[_0x350d6d[_0x5e60('0x38')]][_0x5e60('0x5')]));agents[_0x350d6d[_0x5e60('0x38')]][_0x5e60('0x3a')]=!![];agents[_0x350d6d[_0x5e60('0x38')]][_0x5e60('0x3b')]='blind';agents[_0x350d6d['transfereruniqueid']][_0x5e60('0x3c')]=_0x350d6d[_0x5e60('0x3d')];agents[_0x350d6d[_0x5e60('0x38')]]['transferuniqueid']=agents[_0x350d6d['transfereruniqueid']][_0x5e60('0x5')];}}catch(_0x46f3ba){utils[_0x5e60('0x18')](util['format'](_0x5e60('0x39'),_0x350d6d[_0x5e60('0x5')]),_0x46f3ba);}};exports[_0x5e60('0x3e')]=function(_0xf18339){try{utils[_0x5e60('0x14')](util[_0x5e60('0x3')]('[%s][agents][attendedtransfer]',_0xf18339[_0x5e60('0x3f')]),_0xf18339);if(_0xf18339[_0x5e60('0x3f')]==_0xf18339['origtransfererlinkedid']){if(!_[_0x5e60('0x1b')](agents[_0xf18339[_0x5e60('0x40')]])){utils[_0x5e60('0x2')](util['format'](_0x5e60('0x41'),_0xf18339[_0x5e60('0x3f')],agents[_0xf18339['secondtransfereruniqueid']][_0x5e60('0x8')]));agents[_0xf18339[_0x5e60('0x40')]][_0x5e60('0x3a')]=!![];agents[_0xf18339[_0x5e60('0x40')]]['transfertype']=_0x5e60('0x42');agents[_0xf18339[_0x5e60('0x40')]]['transferexten']=_0xf18339[_0x5e60('0x43')];agents[_0xf18339['secondtransfereruniqueid']][_0x5e60('0x44')]=_0xf18339['origtransfereruniqueid'];}if(_0xf18339[_0x5e60('0x45')]&&agents[_0xf18339[_0x5e60('0x45')]]){agents[_0xf18339['transfereeuniqueid']][_0x5e60('0x46')]=0x1;transfers[_0xf18339['transfereeuniqueid']]=_[_0x5e60('0x47')](agents[_0xf18339['transfereeuniqueid']]);transfers[_0xf18339[_0x5e60('0x45')]]['calleridnum']=agents[_0xf18339[_0x5e60('0x40')]][_0x5e60('0xa')];transfers[_0xf18339[_0x5e60('0x45')]][_0x5e60('0x48')]=agents[_0xf18339[_0x5e60('0x40')]][_0x5e60('0x48')];transfers[_0xf18339[_0x5e60('0x45')]]['agentcalledAt']=utils[_0x5e60('0x2d')]();transfers[_0xf18339[_0x5e60('0x45')]][_0x5e60('0x34')]=utils[_0x5e60('0x2d')]();transfers[_0xf18339[_0x5e60('0x45')]][_0x5e60('0x21')]=0x0;transfers[_0xf18339['transfereeuniqueid']]['agententerreason']=0x2;}}else if(_0xf18339['secondtransfereruniqueid']==_0xf18339[_0x5e60('0x49')]){if(!_[_0x5e60('0x1b')](agents[_0xf18339['origtransfereruniqueid']])){utils[_0x5e60('0x2')](util[_0x5e60('0x3')]('[%s][agents][attendedtransfer]\x20agent:%s',_0xf18339[_0x5e60('0x3f')],agents[_0xf18339[_0x5e60('0x3f')]][_0x5e60('0x8')]));agents[_0xf18339[_0x5e60('0x3f')]][_0x5e60('0x3a')]=!![];agents[_0xf18339[_0x5e60('0x3f')]][_0x5e60('0x3b')]=_0x5e60('0x42');agents[_0xf18339[_0x5e60('0x3f')]][_0x5e60('0x3c')]=_0xf18339[_0x5e60('0x4a')];agents[_0xf18339[_0x5e60('0x3f')]][_0x5e60('0x44')]=_0xf18339[_0x5e60('0x40')];}if(_0xf18339[_0x5e60('0x4b')]&&agents[_0xf18339[_0x5e60('0x4b')]]){agents[_0xf18339[_0x5e60('0x4b')]]['agententerreason']=0x1;transfers[_0xf18339[_0x5e60('0x4b')]]=_[_0x5e60('0x47')](agents[_0xf18339[_0x5e60('0x4b')]]);transfers[_0xf18339['transfertargetuniqueid']][_0x5e60('0xa')]=agents[_0xf18339[_0x5e60('0x3f')]]['calleridnum'];transfers[_0xf18339[_0x5e60('0x4b')]][_0x5e60('0x48')]=agents[_0xf18339['origtransfereruniqueid']][_0x5e60('0x48')];transfers[_0xf18339[_0x5e60('0x4b')]][_0x5e60('0x15')]=utils[_0x5e60('0x2d')]();transfers[_0xf18339[_0x5e60('0x4b')]][_0x5e60('0x34')]=utils[_0x5e60('0x2d')]();transfers[_0xf18339[_0x5e60('0x4b')]][_0x5e60('0x21')]=0x0;transfers[_0xf18339['transfertargetuniqueid']][_0x5e60('0x46')]=0x2;}}}catch(_0x2615f8){utils[_0x5e60('0x18')](util['format'](_0x5e60('0x4c'),_0xf18339[_0x5e60('0x3f')]),_0x2615f8);}};exports[_0x5e60('0x4d')]=function(_0x15d975){try{utils[_0x5e60('0x14')](util['format'](_0x5e60('0x4e'),_0x15d975[_0x5e60('0x5')]),_0x15d975);if(agents[_0x15d975[_0x5e60('0x5')]]&&agents[_0x15d975['uniqueid']]['reason']===_0x5e60('0x20')){if(_0x15d975[_0x5e60('0x4f')]==='21'){agents[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x35')]=_0x5e60('0x50');agents[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x1f')]='rejected';}utils[_0x5e60('0x2')](util[_0x5e60('0x3')](_0x5e60('0x51'),_0x15d975['uniqueid'],agents[_0x15d975['uniqueid']][_0x5e60('0x8')],agents[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x35')],agents[_0x15d975['uniqueid']]['lastevent']));writeDB(agents[_0x15d975[_0x5e60('0x5')]]);var _0x45cc9c=unanswered[_0x5e60('0x52')](_0x15d975[_0x5e60('0x5')]);if(_0x45cc9c>-0x1){unanswered[_0x5e60('0x53')](_0x45cc9c,0x1);}}if(transfers[_0x15d975[_0x5e60('0x5')]]){transfers[_0x15d975['uniqueid']][_0x5e60('0xe')]=!![];transfers[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x33')]=utils[_0x5e60('0x2d')]();transfers[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x23')]=utils[_0x5e60('0x54')](transfers[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x33')],transfers[_0x15d975['uniqueid']][_0x5e60('0x34')]);transfers[_0x15d975[_0x5e60('0x5')]]['reason']=_0x5e60('0x55');transfers[_0x15d975[_0x5e60('0x5')]]['lastevent']=_0x5e60('0x36');utils[_0x5e60('0x2')](util[_0x5e60('0x3')](_0x5e60('0x51'),_0x15d975[_0x5e60('0x5')],transfers[_0x15d975[_0x5e60('0x5')]]['membername'],transfers[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x35')],transfers[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x1f')]));writeDB(transfers[_0x15d975[_0x5e60('0x5')]],!![]);}if(agents[_0x15d975[_0x5e60('0x5')]]&&agents[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x34')]){agents[_0x15d975[_0x5e60('0x5')]]['agentcomplete']=!![];agents[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x33')]=utils[_0x5e60('0x2d')]();agents[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x23')]=utils[_0x5e60('0x54')](agents[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x33')],agents[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x34')]);agents[_0x15d975['uniqueid']]['reason']=agents[_0x15d975['uniqueid']][_0x5e60('0x3a')]?_0x5e60('0x3a'):_0x5e60('0x55');agents[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x1f')]=_0x5e60('0x36');utils[_0x5e60('0x2')](util[_0x5e60('0x3')](_0x5e60('0x51'),_0x15d975['uniqueid'],agents[_0x15d975[_0x5e60('0x5')]][_0x5e60('0x8')],agents[_0x15d975[_0x5e60('0x5')]]['reason'],agents[_0x15d975[_0x5e60('0x5')]]['lastevent']));writeDB(agents[_0x15d975['uniqueid']]);}}catch(_0x5c1aa2){utils[_0x5e60('0x18')](util[_0x5e60('0x3')](_0x5e60('0x4e'),_0x15d975[_0x5e60('0x5')]),_0x5c1aa2);}};
\ No newline at end of file
index 28f8c4b..b284f3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfb7=['[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','startsWith','cdr','appdata','split','substring','lastIndexOf','noop','execif','set','lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','BUSY','uniqueid','blinds','membername','interface','calleridnum','lastevent','getUserByInternal','then','request','CreateVoiceCallReport','debug','[%s][calls][newchannel]','linkedid','channel','OutgoingSpoolFailed','info','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','accountcode','now','DOCUMENTATION','error','format','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','destinationchannel','answertime','disposition','toNumber','hangup','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','duration','diffTime','endtime','starttime','billableseconds','[%s][calls][hangup]','localtwolinkedid','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','_attended','origtransfererchannel','[%s][calls][attendedtransfer]','musiconholdstartAt','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','variable','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','[%s][calls][varset]\x20variable:%s\x20value:%s','xmcs-queue','xmd-queue','lastapplication','lastdata','queue','xmd-contactid','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbfb7,0x143));var _0x7bfb=function(_0x33bcdb,_0x11846b){_0x33bcdb=_0x33bcdb-0x0;var _0x18a9bf=_0xbfb7[_0x33bcdb];return _0x18a9bf;};'use strict';var _=require(_0x7bfb('0x0'));var util=require(_0x7bfb('0x1'));var utils=require(_0x7bfb('0x2'));var transfers=require('./transfers.controller');var dispositions=[_0x7bfb('0x3'),_0x7bfb('0x4'),'FAILED',_0x7bfb('0x3'),_0x7bfb('0x3'),'NO\x20ANSWER',_0x7bfb('0x5'),_0x7bfb('0x6'),_0x7bfb('0x4'),'FAILED',_0x7bfb('0x4')];var channels={};function writeDB(_0x507ef7){var _0x55fe13;if(transfers['blinds'][_0x507ef7['uniqueid']]){_0x55fe13=_0x507ef7[_0x7bfb('0x7')];_0x507ef7['uniqueid']=transfers[_0x7bfb('0x8')][_0x507ef7[_0x7bfb('0x7')]]['transfereeuniqueid'];}utils['info'](util['format']('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x507ef7['uniqueid'],_0x507ef7['channel'],_0x507ef7['queue'],_0x507ef7[_0x7bfb('0x9')],_0x507ef7[_0x7bfb('0xa')],_0x507ef7[_0x7bfb('0xb')],_0x507ef7['connectedlinenum'],_0x507ef7[_0x7bfb('0xc')]));if(_0x507ef7['accountcode']){utils[_0x7bfb('0xd')](_0x507ef7['accountcode'])[_0x7bfb('0xe')](function(_0x520e7d){if(_0x520e7d){_0x507ef7['UserId']=_0x520e7d['id'];}utils[_0x7bfb('0xf')](_0x7bfb('0x10'),_0x507ef7);});}else{utils[_0x7bfb('0xf')](_0x7bfb('0x10'),_0x507ef7);}if(channels[_0x507ef7[_0x7bfb('0x7')]]){delete channels[_0x507ef7[_0x7bfb('0x7')]];}else if(_0x55fe13&&channels[_0x55fe13]){delete transfers[_0x7bfb('0x8')][_0x55fe13];delete channels[_0x55fe13];}}exports['newchannel']=function(_0x33e83b){try{utils[_0x7bfb('0x11')](util['format'](_0x7bfb('0x12'),_0x33e83b[_0x7bfb('0x7')]),_0x33e83b);if(_0x33e83b[_0x7bfb('0x7')]==_0x33e83b[_0x7bfb('0x13')]&&_0x33e83b[_0x7bfb('0x14')]!=_0x7bfb('0x15')){utils[_0x7bfb('0x16')](util['format'](_0x7bfb('0x17'),_0x33e83b[_0x7bfb('0x7')],_0x33e83b[_0x7bfb('0x18')],_0x33e83b[_0x7bfb('0x19')]));channels[_0x33e83b[_0x7bfb('0x7')]]={'uniqueid':_0x33e83b[_0x7bfb('0x7')],'accountcode':_0x33e83b[_0x7bfb('0x1a')],'source':_0x33e83b[_0x7bfb('0xb')],'destination':_0x33e83b[_0x7bfb('0x19')],'destinationcontext':_0x33e83b[_0x7bfb('0x18')],'channel':_0x33e83b['channel'],'starttime':utils[_0x7bfb('0x1b')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x7bfb('0x3'),'amaflags':_0x7bfb('0x1c')};}}catch(_0x244b43){utils[_0x7bfb('0x1d')](util[_0x7bfb('0x1e')](_0x7bfb('0x12'),_0x33e83b['uniqueid']),_0x244b43);}};exports[_0x7bfb('0x1f')]=function(_0x3061d6){try{utils[_0x7bfb('0x11')](util[_0x7bfb('0x1e')](_0x7bfb('0x20'),_0x3061d6[_0x7bfb('0x7')]),_0x3061d6);if(!_[_0x7bfb('0x21')](channels[_0x3061d6[_0x7bfb('0x7')]])&&_0x3061d6[_0x7bfb('0x22')]==0x6){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x23'),_0x3061d6[_0x7bfb('0x7')],_0x3061d6[_0x7bfb('0x18')],_0x3061d6['channel']));if(_[_0x7bfb('0x21')](channels[_0x3061d6[_0x7bfb('0x7')]][_0x7bfb('0x24')])){channels[_0x3061d6[_0x7bfb('0x7')]]['systemanswertime']=utils[_0x7bfb('0x1b')]();}}else if(!_[_0x7bfb('0x21')](channels[_0x3061d6[_0x7bfb('0x13')]])&&_0x3061d6[_0x7bfb('0x22')]==0x6&&_0x3061d6[_0x7bfb('0x18')]!=_0x7bfb('0x25')){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x3061d6[_0x7bfb('0x7')],_0x3061d6[_0x7bfb('0x13')],_0x3061d6[_0x7bfb('0x18')],_0x3061d6[_0x7bfb('0x14')]));channels[_0x3061d6[_0x7bfb('0x13')]]['accountcode']=_0x3061d6[_0x7bfb('0x1a')];channels[_0x3061d6[_0x7bfb('0x13')]][_0x7bfb('0x26')]=_0x3061d6[_0x7bfb('0x14')];if(_['isNil'](channels[_0x3061d6['linkedid']][_0x7bfb('0x27')])){channels[_0x3061d6[_0x7bfb('0x13')]][_0x7bfb('0x27')]=utils[_0x7bfb('0x1b')]();}channels[_0x3061d6['linkedid']][_0x7bfb('0x28')]=dispositions[_[_0x7bfb('0x29')](_0x3061d6[_0x7bfb('0x22')])]||'ANSWERED';}}catch(_0xe9fef2){utils[_0x7bfb('0x1d')](util[_0x7bfb('0x1e')](_0x7bfb('0x20'),_0x3061d6[_0x7bfb('0x7')]),_0xe9fef2);}};exports[_0x7bfb('0x2a')]=function(_0x39dc0d){try{if(!_[_0x7bfb('0x21')](channels[_0x39dc0d[_0x7bfb('0x7')]])){utils[_0x7bfb('0x11')](util['format']('[%s][calls][hangup]',_0x39dc0d[_0x7bfb('0x7')]),_0x39dc0d);if(_[_0x7bfb('0x21')](channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x2b')])){channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x2b')]=_0x39dc0d[_0x7bfb('0x2c')]+'\x20<'+_0x39dc0d[_0x7bfb('0xb')]+'>';}utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x2d'),_0x39dc0d['uniqueid'],channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x2b')],_0x39dc0d[_0x7bfb('0x2e')]));channels[_0x39dc0d[_0x7bfb('0x7')]]['endtime']=utils[_0x7bfb('0x1b')]();channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x2f')]=utils[_0x7bfb('0x30')](channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x31')],channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x32')]);channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x33')]=channels[_0x39dc0d[_0x7bfb('0x7')]]['answertime']?utils['diffTime'](channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x31')],channels[_0x39dc0d[_0x7bfb('0x7')]][_0x7bfb('0x27')]):0x0;writeDB(channels[_0x39dc0d['uniqueid']]);}}catch(_0x4ba43e){utils[_0x7bfb('0x1d')](util[_0x7bfb('0x1e')](_0x7bfb('0x34'),_0x39dc0d[_0x7bfb('0x7')]),_0x4ba43e);}};exports['attendedtransfer']=function(_0x846a7b){try{if(!_[_0x7bfb('0x21')](channels[_0x846a7b[_0x7bfb('0x35')]])){utils['debug'](util['format']('[%s][calls][attendedtransfer]',_0x846a7b[_0x7bfb('0x36')]),_0x846a7b);if(channels[_0x846a7b[_0x7bfb('0x35')]]['channel']==_0x846a7b[_0x7bfb('0x37')]){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x38'),_0x846a7b[_0x7bfb('0x36')],_0x846a7b[_0x7bfb('0x35')],_0x846a7b[_0x7bfb('0x39')]));channels[_0x846a7b[_0x7bfb('0x35')]]['destinationchannel']=_0x846a7b[_0x7bfb('0x39')];channels[_0x846a7b[_0x7bfb('0x35')]]['userfield']=_0x7bfb('0x3a');}else if(channels[_0x846a7b[_0x7bfb('0x35')]][_0x7bfb('0x14')]=_0x846a7b['transfertargetchannel']){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x846a7b['origtransfereruniqueid'],_0x846a7b['localtwolinkedid'],_0x846a7b[_0x7bfb('0x3b')]));channels[_0x846a7b[_0x7bfb('0x35')]]['destinationchannel']=_0x846a7b[_0x7bfb('0x3b')];channels[_0x846a7b['localtwolinkedid']]['userfield']=_0x7bfb('0x3a');}}}catch(_0x5067c8){utils[_0x7bfb('0x1d')](util[_0x7bfb('0x1e')](_0x7bfb('0x3c'),_0x846a7b[_0x7bfb('0x36')]),_0x5067c8);}};exports['musiconholdstart']=function(_0x56c5a4){try{if(!_[_0x7bfb('0x21')](channels[_0x56c5a4[_0x7bfb('0x7')]])){utils[_0x7bfb('0x11')](util[_0x7bfb('0x1e')]('[%s][calls][musiconholdstart]',_0x56c5a4[_0x7bfb('0x7')]),_0x56c5a4);channels[_0x56c5a4['uniqueid']][_0x7bfb('0x3d')]=utils[_0x7bfb('0x1b')]();utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x56c5a4['uniqueid'],channels[_0x56c5a4[_0x7bfb('0x7')]][_0x7bfb('0x3d')]));}}catch(_0x502966){utils['error'](util['format']('[%s][calls][musiconholdstart]',_0x56c5a4[_0x7bfb('0x7')]),_0x502966);}};exports['musiconholdstop']=function(_0x4ccc9e){try{if(!_[_0x7bfb('0x21')](channels[_0x4ccc9e[_0x7bfb('0x7')]])){utils[_0x7bfb('0x11')](util[_0x7bfb('0x1e')](_0x7bfb('0x3e'),_0x4ccc9e[_0x7bfb('0x7')]),_0x4ccc9e);if(!_['isNil'](channels[_0x4ccc9e[_0x7bfb('0x7')]]['musiconholdstartAt'])){channels[_0x4ccc9e['uniqueid']][_0x7bfb('0x3f')]+=utils['diffTime'](utils[_0x7bfb('0x1b')](),channels[_0x4ccc9e[_0x7bfb('0x7')]][_0x7bfb('0x3d')]);utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x40'),_0x4ccc9e[_0x7bfb('0x7')],channels[_0x4ccc9e[_0x7bfb('0x7')]][_0x7bfb('0x3f')]));delete channels[_0x4ccc9e[_0x7bfb('0x7')]][_0x7bfb('0x3d')];}}}catch(_0x5e1e73){utils[_0x7bfb('0x1d')](util['format']('[%s][calls][musiconholdstop]',_0x4ccc9e['uniqueid']),_0x5e1e73);}};exports[_0x7bfb('0x41')]=function(_0x7059ac){try{if(!_[_0x7bfb('0x21')](channels[_0x7059ac[_0x7bfb('0x7')]])){utils[_0x7bfb('0x11')](util[_0x7bfb('0x1e')](_0x7bfb('0x42'),_0x7059ac[_0x7bfb('0x7')]),_0x7059ac);if(!_['isNil'](_0x7059ac[_0x7bfb('0x43')]['xmd-originatecalleridnum'])){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x44'),_0x7059ac[_0x7bfb('0x7')],_0x7059ac[_0x7bfb('0x45')]));channels[_0x7059ac['uniqueid']]['source']=_0x7059ac[_0x7bfb('0x45')];}if(!_['isNil'](_0x7059ac[_0x7bfb('0x43')]['xmd-phone'])){utils['info'](util[_0x7bfb('0x1e')](_0x7bfb('0x46'),_0x7059ac[_0x7bfb('0x7')],_0x7059ac[_0x7bfb('0x45')]));channels[_0x7059ac[_0x7bfb('0x7')]][_0x7bfb('0x47')]=_0x7059ac[_0x7bfb('0x45')];channels[_0x7059ac[_0x7bfb('0x7')]]['callerid']='\x22'+_0x7059ac[_0x7bfb('0x45')]+_0x7bfb('0x48')+_0x7059ac[_0x7bfb('0x45')]+'>';}if(!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x49')])||!_[_0x7bfb('0x21')](_0x7059ac['variable']['xmd-callerid'])){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x4a'),_0x7059ac['uniqueid'],!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x49')])?'xmd-callerid-preview':'xmd-callerid',_0x7059ac[_0x7bfb('0x45')]));channels[_0x7059ac['uniqueid']][_0x7bfb('0x2b')]=_0x7059ac[_0x7bfb('0x45')];}if(!_['isNil'](_0x7059ac['variable']['xmd-queue'])||!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x4b')])){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x4a'),_0x7059ac[_0x7bfb('0x7')],!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x4c')])?_0x7bfb('0x4c'):_0x7bfb('0x4b'),_0x7059ac['value']));channels[_0x7059ac['uniqueid']][_0x7bfb('0x4d')]='Queue';channels[_0x7059ac['uniqueid']][_0x7bfb('0x4e')]=_0x7059ac[_0x7bfb('0x45')];channels[_0x7059ac['uniqueid']][_0x7bfb('0x4f')]=!![];}if(!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x50')])){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x7059ac['uniqueid'],_0x7059ac[_0x7bfb('0x45')]));channels[_0x7059ac[_0x7bfb('0x7')]][_0x7bfb('0x51')]=_0x7059ac[_0x7bfb('0x45')];}if(!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x52')])){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x53'),_0x7059ac[_0x7bfb('0x7')],_0x7059ac['value']));channels[_0x7059ac['uniqueid']][_0x7bfb('0x54')]=_0x7059ac[_0x7bfb('0x45')];}if(!_[_0x7bfb('0x21')](_0x7059ac['variable'][_0x7bfb('0x55')])){utils[_0x7bfb('0x16')](util['format'](_0x7bfb('0x56'),_0x7059ac['uniqueid'],_0x7059ac[_0x7bfb('0x45')]));channels[_0x7059ac[_0x7bfb('0x7')]][_0x7bfb('0x57')]=_0x7059ac[_0x7bfb('0x45')];}if(!_[_0x7bfb('0x21')](_0x7059ac[_0x7bfb('0x43')][_0x7bfb('0x58')])){utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x59'),_0x7059ac[_0x7bfb('0x7')],_0x7059ac['value']));channels[_0x7059ac[_0x7bfb('0x7')]][_0x7bfb('0x58')]=_0x7059ac[_0x7bfb('0x45')];}}}catch(_0x45239e){utils[_0x7bfb('0x1d')](util['format']('[%s][calls][varset]',_0x7059ac[_0x7bfb('0x7')]),_0x45239e);}};exports['newexten']=function(_0x204871){try{if(!_[_0x7bfb('0x21')](channels[_0x204871[_0x7bfb('0x7')]])){utils['debug'](util[_0x7bfb('0x1e')](_0x7bfb('0x5a'),_0x204871[_0x7bfb('0x7')]),_0x204871);utils[_0x7bfb('0x16')](util[_0x7bfb('0x1e')](_0x7bfb('0x5b'),_0x204871[_0x7bfb('0x7')],_0x204871[_0x7bfb('0x5c')],_0x204871['appdata']));if(_0x204871[_0x7bfb('0x5c')][_0x7bfb('0x5d')]()=='set'&&_[_0x7bfb('0x5e')](_0x204871['appdata'][_0x7bfb('0x5d')](),_0x7bfb('0x5f'))){var _0x51021d=_0x204871[_0x7bfb('0x60')][_0x7bfb('0x61')]('=');var _0x334b69=_0x51021d[0x0][_0x7bfb('0x62')](_0x51021d[0x0][_0x7bfb('0x63')]('(')+0x1,_0x51021d[0x0][_0x7bfb('0x63')](')'));var _0x18a229=_0x51021d[0x1];channels[_0x204871[_0x7bfb('0x7')]][_0x334b69]=_0x18a229;}if(!_['includes']([_0x7bfb('0x2a'),_0x7bfb('0x64'),_0x7bfb('0x65'),_0x7bfb('0x66'),'gotoif'],_0x204871[_0x7bfb('0x5c')][_0x7bfb('0x5d')]())){channels[_0x204871['uniqueid']][_0x7bfb('0x4d')]=_0x204871[_0x7bfb('0x5c')];channels[_0x204871[_0x7bfb('0x7')]][_0x7bfb('0x4e')]=_0x204871[_0x7bfb('0x60')];}}}catch(_0xb79688){utils[_0x7bfb('0x1d')](util[_0x7bfb('0x1e')]('[%s][calls][newexten]',_0x204871[_0x7bfb('0x7')]),_0xb79688);}};
\ No newline at end of file
+var _0x668b=['cause-txt','endtime','diffTime','starttime','billableseconds','[%s][calls][hangup]','localtwolinkedid','origtransfereruniqueid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','[%s][calls][attendedtransfer]','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','musiconholdstartAt','[%s][calls][musiconholdstop]','varset','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','variable','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','xmd-callerid-preview','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-callerid','xmd-queue','xmcs-queue','lastapplication','Queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]','application','appdata','toLowerCase','set','startsWith','split','substring','lastIndexOf','includes','noop','execif','./utils','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','calleridnum','connectedlinenum','lastevent','accountcode','then','UserId','request','CreateVoiceCallReport','newchannel','linkedid','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','error','debug','channelstate','info','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','[%s][calls][newstate]','hangup','callerid'];(function(_0x1bd3ab,_0x352c42){var _0x37e394=function(_0x2f581d){while(--_0x2f581d){_0x1bd3ab['push'](_0x1bd3ab['shift']());}};_0x37e394(++_0x352c42);}(_0x668b,0x172));var _0xb668=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0x668b[_0xd1d19a];return _0x52a79d;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0xb668('0x0'));var transfers=require('./transfers.controller');var dispositions=[_0xb668('0x1'),_0xb668('0x2'),_0xb668('0x2'),'NO\x20ANSWER',_0xb668('0x1'),_0xb668('0x1'),'ANSWERED',_0xb668('0x3'),_0xb668('0x2'),_0xb668('0x2'),'FAILED'];var channels={};function writeDB(_0x2e9fdf){var _0x14d4a7;if(transfers[_0xb668('0x4')][_0x2e9fdf[_0xb668('0x5')]]){_0x14d4a7=_0x2e9fdf[_0xb668('0x5')];_0x2e9fdf[_0xb668('0x5')]=transfers[_0xb668('0x4')][_0x2e9fdf[_0xb668('0x5')]]['transfereeuniqueid'];}utils['info'](util[_0xb668('0x6')](_0xb668('0x7'),_0x2e9fdf[_0xb668('0x5')],_0x2e9fdf['channel'],_0x2e9fdf[_0xb668('0x8')],_0x2e9fdf['membername'],_0x2e9fdf['interface'],_0x2e9fdf[_0xb668('0x9')],_0x2e9fdf[_0xb668('0xa')],_0x2e9fdf[_0xb668('0xb')]));if(_0x2e9fdf[_0xb668('0xc')]){utils['getUserByInternal'](_0x2e9fdf[_0xb668('0xc')])[_0xb668('0xd')](function(_0x3df825){if(_0x3df825){_0x2e9fdf[_0xb668('0xe')]=_0x3df825['id'];}utils[_0xb668('0xf')](_0xb668('0x10'),_0x2e9fdf);});}else{utils[_0xb668('0xf')](_0xb668('0x10'),_0x2e9fdf);}if(channels[_0x2e9fdf[_0xb668('0x5')]]){delete channels[_0x2e9fdf['uniqueid']];}else if(_0x14d4a7&&channels[_0x14d4a7]){delete transfers[_0xb668('0x4')][_0x14d4a7];delete channels[_0x14d4a7];}}exports[_0xb668('0x11')]=function(_0x4efb81){try{utils['debug'](util[_0xb668('0x6')]('[%s][calls][newchannel]',_0x4efb81[_0xb668('0x5')]),_0x4efb81);if(_0x4efb81[_0xb668('0x5')]==_0x4efb81[_0xb668('0x12')]&&_0x4efb81[_0xb668('0x13')]!=_0xb668('0x14')){utils['info'](util[_0xb668('0x6')](_0xb668('0x15'),_0x4efb81[_0xb668('0x5')],_0x4efb81[_0xb668('0x16')],_0x4efb81[_0xb668('0x17')]));channels[_0x4efb81[_0xb668('0x5')]]={'uniqueid':_0x4efb81[_0xb668('0x5')],'accountcode':_0x4efb81[_0xb668('0xc')],'source':_0x4efb81[_0xb668('0x9')],'destination':_0x4efb81['exten'],'destinationcontext':_0x4efb81[_0xb668('0x16')],'channel':_0x4efb81[_0xb668('0x13')],'starttime':utils[_0xb668('0x18')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0xb668('0x19')};}}catch(_0x1b8918){utils[_0xb668('0x1a')](util['format']('[%s][calls][newchannel]',_0x4efb81[_0xb668('0x5')]),_0x1b8918);}};exports['newstate']=function(_0x5ebaa4){try{utils[_0xb668('0x1b')](util['format']('[%s][calls][newstate]',_0x5ebaa4['uniqueid']),_0x5ebaa4);if(!_['isNil'](channels[_0x5ebaa4[_0xb668('0x5')]])&&_0x5ebaa4[_0xb668('0x1c')]==0x6){utils[_0xb668('0x1d')](util[_0xb668('0x6')](_0xb668('0x1e'),_0x5ebaa4[_0xb668('0x5')],_0x5ebaa4[_0xb668('0x16')],_0x5ebaa4[_0xb668('0x13')]));if(_[_0xb668('0x1f')](channels[_0x5ebaa4['uniqueid']]['systemanswertime'])){channels[_0x5ebaa4[_0xb668('0x5')]][_0xb668('0x20')]=utils[_0xb668('0x18')]();}}else if(!_[_0xb668('0x1f')](channels[_0x5ebaa4[_0xb668('0x12')]])&&_0x5ebaa4['channelstate']==0x6&&_0x5ebaa4[_0xb668('0x16')]!=_0xb668('0x21')){utils[_0xb668('0x1d')](util[_0xb668('0x6')](_0xb668('0x22'),_0x5ebaa4[_0xb668('0x5')],_0x5ebaa4[_0xb668('0x12')],_0x5ebaa4['context'],_0x5ebaa4[_0xb668('0x13')]));channels[_0x5ebaa4[_0xb668('0x12')]][_0xb668('0xc')]=_0x5ebaa4[_0xb668('0xc')];channels[_0x5ebaa4['linkedid']][_0xb668('0x23')]=_0x5ebaa4[_0xb668('0x13')];if(_['isNil'](channels[_0x5ebaa4[_0xb668('0x12')]][_0xb668('0x24')])){channels[_0x5ebaa4[_0xb668('0x12')]][_0xb668('0x24')]=utils[_0xb668('0x18')]();}channels[_0x5ebaa4[_0xb668('0x12')]][_0xb668('0x25')]=dispositions[_[_0xb668('0x26')](_0x5ebaa4[_0xb668('0x1c')])]||'ANSWERED';}}catch(_0x568bf4){utils[_0xb668('0x1a')](util['format'](_0xb668('0x27'),_0x5ebaa4[_0xb668('0x5')]),_0x568bf4);}};exports[_0xb668('0x28')]=function(_0x4df267){try{if(!_[_0xb668('0x1f')](channels[_0x4df267[_0xb668('0x5')]])){utils['debug'](util['format']('[%s][calls][hangup]',_0x4df267[_0xb668('0x5')]),_0x4df267);if(_[_0xb668('0x1f')](channels[_0x4df267[_0xb668('0x5')]][_0xb668('0x29')])){channels[_0x4df267[_0xb668('0x5')]][_0xb668('0x29')]=_0x4df267['calleridname']+'\x20<'+_0x4df267['calleridnum']+'>';}utils[_0xb668('0x1d')](util['format']('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0x4df267[_0xb668('0x5')],channels[_0x4df267[_0xb668('0x5')]][_0xb668('0x29')],_0x4df267[_0xb668('0x2a')]));channels[_0x4df267[_0xb668('0x5')]][_0xb668('0x2b')]=utils[_0xb668('0x18')]();channels[_0x4df267['uniqueid']]['duration']=utils[_0xb668('0x2c')](channels[_0x4df267['uniqueid']]['endtime'],channels[_0x4df267[_0xb668('0x5')]][_0xb668('0x2d')]);channels[_0x4df267['uniqueid']][_0xb668('0x2e')]=channels[_0x4df267['uniqueid']][_0xb668('0x24')]?utils[_0xb668('0x2c')](channels[_0x4df267[_0xb668('0x5')]][_0xb668('0x2b')],channels[_0x4df267[_0xb668('0x5')]][_0xb668('0x24')]):0x0;writeDB(channels[_0x4df267[_0xb668('0x5')]]);}}catch(_0x246ac4){utils['error'](util[_0xb668('0x6')](_0xb668('0x2f'),_0x4df267[_0xb668('0x5')]),_0x246ac4);}};exports['attendedtransfer']=function(_0x4ca7b0){try{if(!_[_0xb668('0x1f')](channels[_0x4ca7b0[_0xb668('0x30')]])){utils[_0xb668('0x1b')](util[_0xb668('0x6')]('[%s][calls][attendedtransfer]',_0x4ca7b0[_0xb668('0x31')]),_0x4ca7b0);if(channels[_0x4ca7b0[_0xb668('0x30')]]['channel']==_0x4ca7b0['transfereechannel']){utils[_0xb668('0x1d')](util[_0xb668('0x6')](_0xb668('0x32'),_0x4ca7b0[_0xb668('0x31')],_0x4ca7b0[_0xb668('0x30')],_0x4ca7b0[_0xb668('0x33')]));channels[_0x4ca7b0[_0xb668('0x30')]][_0xb668('0x23')]=_0x4ca7b0[_0xb668('0x33')];channels[_0x4ca7b0['localtwolinkedid']][_0xb668('0x34')]=_0xb668('0x35');}else if(channels[_0x4ca7b0[_0xb668('0x30')]]['channel']=_0x4ca7b0['transfertargetchannel']){utils[_0xb668('0x1d')](util['format']('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x4ca7b0[_0xb668('0x31')],_0x4ca7b0[_0xb668('0x30')],_0x4ca7b0['origtransfererchannel']));channels[_0x4ca7b0['localtwolinkedid']][_0xb668('0x23')]=_0x4ca7b0['origtransfererchannel'];channels[_0x4ca7b0[_0xb668('0x30')]]['userfield']=_0xb668('0x35');}}}catch(_0x2a2241){utils['error'](util[_0xb668('0x6')](_0xb668('0x36'),_0x4ca7b0['origtransfereruniqueid']),_0x2a2241);}};exports[_0xb668('0x37')]=function(_0x2e5563){try{if(!_[_0xb668('0x1f')](channels[_0x2e5563['uniqueid']])){utils[_0xb668('0x1b')](util[_0xb668('0x6')](_0xb668('0x38'),_0x2e5563[_0xb668('0x5')]),_0x2e5563);channels[_0x2e5563[_0xb668('0x5')]]['musiconholdstartAt']=utils[_0xb668('0x18')]();utils[_0xb668('0x1d')](util[_0xb668('0x6')](_0xb668('0x39'),_0x2e5563['uniqueid'],channels[_0x2e5563[_0xb668('0x5')]]['musiconholdstartAt']));}}catch(_0x2b0a22){utils[_0xb668('0x1a')](util[_0xb668('0x6')]('[%s][calls][musiconholdstart]',_0x2e5563[_0xb668('0x5')]),_0x2b0a22);}};exports[_0xb668('0x3a')]=function(_0x507996){try{if(!_[_0xb668('0x1f')](channels[_0x507996['uniqueid']])){utils[_0xb668('0x1b')](util['format']('[%s][calls][musiconholdstop]',_0x507996[_0xb668('0x5')]),_0x507996);if(!_['isNil'](channels[_0x507996[_0xb668('0x5')]]['musiconholdstartAt'])){channels[_0x507996[_0xb668('0x5')]]['mohtime']+=utils['diffTime'](utils[_0xb668('0x18')](),channels[_0x507996[_0xb668('0x5')]]['musiconholdstartAt']);utils[_0xb668('0x1d')](util[_0xb668('0x6')](_0xb668('0x3b'),_0x507996['uniqueid'],channels[_0x507996[_0xb668('0x5')]][_0xb668('0x3c')]));delete channels[_0x507996[_0xb668('0x5')]][_0xb668('0x3d')];}}}catch(_0xa8b27f){utils[_0xb668('0x1a')](util[_0xb668('0x6')](_0xb668('0x3e'),_0x507996[_0xb668('0x5')]),_0xa8b27f);}};exports[_0xb668('0x3f')]=function(_0x38ab1d){try{if(!_['isNil'](channels[_0x38ab1d[_0xb668('0x5')]])){utils[_0xb668('0x1b')](util[_0xb668('0x6')](_0xb668('0x40'),_0x38ab1d[_0xb668('0x5')]),_0x38ab1d);if(!_['isNil'](_0x38ab1d['variable'][_0xb668('0x41')])){utils[_0xb668('0x1d')](util[_0xb668('0x6')](_0xb668('0x42'),_0x38ab1d['uniqueid'],_0x38ab1d[_0xb668('0x43')]));channels[_0x38ab1d[_0xb668('0x5')]][_0xb668('0x44')]=_0x38ab1d[_0xb668('0x43')];}if(!_['isNil'](_0x38ab1d[_0xb668('0x45')][_0xb668('0x46')])){utils['info'](util[_0xb668('0x6')](_0xb668('0x47'),_0x38ab1d[_0xb668('0x5')],_0x38ab1d[_0xb668('0x43')]));channels[_0x38ab1d[_0xb668('0x5')]][_0xb668('0x48')]=_0x38ab1d[_0xb668('0x43')];channels[_0x38ab1d['uniqueid']][_0xb668('0x29')]='\x22'+_0x38ab1d[_0xb668('0x43')]+'\x22\x20<'+_0x38ab1d[_0xb668('0x43')]+'>';}if(!_[_0xb668('0x1f')](_0x38ab1d[_0xb668('0x45')][_0xb668('0x49')])||!_[_0xb668('0x1f')](_0x38ab1d[_0xb668('0x45')]['xmd-callerid'])){utils[_0xb668('0x1d')](util['format'](_0xb668('0x4a'),_0x38ab1d['uniqueid'],!_[_0xb668('0x1f')](_0x38ab1d['variable'][_0xb668('0x49')])?_0xb668('0x49'):_0xb668('0x4b'),_0x38ab1d[_0xb668('0x43')]));channels[_0x38ab1d[_0xb668('0x5')]]['callerid']=_0x38ab1d[_0xb668('0x43')];}if(!_[_0xb668('0x1f')](_0x38ab1d[_0xb668('0x45')][_0xb668('0x4c')])||!_[_0xb668('0x1f')](_0x38ab1d[_0xb668('0x45')][_0xb668('0x4d')])){utils[_0xb668('0x1d')](util[_0xb668('0x6')](_0xb668('0x4a'),_0x38ab1d[_0xb668('0x5')],!_[_0xb668('0x1f')](_0x38ab1d[_0xb668('0x45')][_0xb668('0x4c')])?_0xb668('0x4c'):_0xb668('0x4d'),_0x38ab1d[_0xb668('0x43')]));channels[_0x38ab1d[_0xb668('0x5')]][_0xb668('0x4e')]=_0xb668('0x4f');channels[_0x38ab1d[_0xb668('0x5')]]['lastdata']=_0x38ab1d[_0xb668('0x43')];channels[_0x38ab1d['uniqueid']][_0xb668('0x8')]=!![];}if(!_[_0xb668('0x1f')](_0x38ab1d['variable'][_0xb668('0x50')])){utils[_0xb668('0x1d')](util[_0xb668('0x6')](_0xb668('0x51'),_0x38ab1d[_0xb668('0x5')],_0x38ab1d[_0xb668('0x43')]));channels[_0x38ab1d[_0xb668('0x5')]][_0xb668('0x52')]=_0x38ab1d['value'];}if(!_['isNil'](_0x38ab1d['variable'][_0xb668('0x53')])){utils[_0xb668('0x1d')](util['format'](_0xb668('0x54'),_0x38ab1d[_0xb668('0x5')],_0x38ab1d['value']));channels[_0x38ab1d['uniqueid']][_0xb668('0x55')]=_0x38ab1d['value'];}if(!_['isNil'](_0x38ab1d[_0xb668('0x45')]['outboundrouteid'])){utils[_0xb668('0x1d')](util[_0xb668('0x6')](_0xb668('0x56'),_0x38ab1d[_0xb668('0x5')],_0x38ab1d[_0xb668('0x43')]));channels[_0x38ab1d['uniqueid']][_0xb668('0x57')]=_0x38ab1d[_0xb668('0x43')];}if(!_[_0xb668('0x1f')](_0x38ab1d[_0xb668('0x45')][_0xb668('0x58')])){utils[_0xb668('0x1d')](util[_0xb668('0x6')](_0xb668('0x59'),_0x38ab1d[_0xb668('0x5')],_0x38ab1d['value']));channels[_0x38ab1d[_0xb668('0x5')]][_0xb668('0x58')]=_0x38ab1d[_0xb668('0x43')];}}}catch(_0x3c413e){utils['error'](util[_0xb668('0x6')](_0xb668('0x40'),_0x38ab1d['uniqueid']),_0x3c413e);}};exports[_0xb668('0x5a')]=function(_0x49f867){try{if(!_[_0xb668('0x1f')](channels[_0x49f867[_0xb668('0x5')]])){utils[_0xb668('0x1b')](util[_0xb668('0x6')](_0xb668('0x5b'),_0x49f867[_0xb668('0x5')]),_0x49f867);utils[_0xb668('0x1d')](util['format']('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x49f867[_0xb668('0x5')],_0x49f867[_0xb668('0x5c')],_0x49f867[_0xb668('0x5d')]));if(_0x49f867['application'][_0xb668('0x5e')]()==_0xb668('0x5f')&&_[_0xb668('0x60')](_0x49f867[_0xb668('0x5d')]['toLowerCase'](),'cdr')){var _0x3b0397=_0x49f867['appdata'][_0xb668('0x61')]('=');var _0x2797bb=_0x3b0397[0x0][_0xb668('0x62')](_0x3b0397[0x0][_0xb668('0x63')]('(')+0x1,_0x3b0397[0x0][_0xb668('0x63')](')'));var _0x339da0=_0x3b0397[0x1];channels[_0x49f867['uniqueid']][_0x2797bb]=_0x339da0;}if(!_[_0xb668('0x64')](['hangup',_0xb668('0x65'),_0xb668('0x66'),_0xb668('0x5f'),'gotoif'],_0x49f867[_0xb668('0x5c')]['toLowerCase']())){channels[_0x49f867['uniqueid']]['lastapplication']=_0x49f867[_0xb668('0x5c')];channels[_0x49f867[_0xb668('0x5')]]['lastdata']=_0x49f867[_0xb668('0x5d')];}}}catch(_0x4aae83){utils[_0xb668('0x1a')](util['format'](_0xb668('0x5b'),_0x49f867['uniqueid']),_0x4aae83);}};
\ No newline at end of file
index 8787f81..0d408d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5464=['[core]\x20close','connect','info','shutdown','[core]\x20shutdown','[core]\x20fullybooted','error','close'];(function(_0x513441,_0x20bfba){var _0x5a49c8=function(_0x2cc7d9){while(--_0x2cc7d9){_0x513441['push'](_0x513441['shift']());}};_0x5a49c8(++_0x20bfba);}(_0x5464,0x171));var _0x4546=function(_0x4b4b2a,_0x202fec){_0x4b4b2a=_0x4b4b2a-0x0;var _0x598849=_0x5464[_0x4b4b2a];return _0x598849;};'use strict';var utils=require('./utils');exports[_0x4546('0x0')]=function(){utils[_0x4546('0x1')]('[core]\x20connected');};exports[_0x4546('0x2')]=function(){utils['info'](_0x4546('0x3'));};exports['fullybooted']=function(){utils['info'](_0x4546('0x4'));};exports[_0x4546('0x5')]=function(_0x57f857){utils['error']('[core]\x20error',_0x57f857);};exports[_0x4546('0x6')]=function(){utils[_0x4546('0x1')](_0x4546('0x7'));};exports['managerevent']=function(_0x520076){};
\ No newline at end of file
+var _0xe3e3=['fullybooted','error','[core]\x20error','close','[core]\x20close','managerevent','info','[core]\x20connected','shutdown','[core]\x20shutdown'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0xe3e3,0x9c));var _0x3e3e=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xe3e3[_0x2d7f0e];return _0x110b07;};'use strict';var utils=require('./utils');exports['connect']=function(){utils[_0x3e3e('0x0')](_0x3e3e('0x1'));};exports[_0x3e3e('0x2')]=function(){utils['info'](_0x3e3e('0x3'));};exports[_0x3e3e('0x4')]=function(){utils['info']('[core]\x20fullybooted');};exports[_0x3e3e('0x5')]=function(_0x173664){utils[_0x3e3e('0x5')](_0x3e3e('0x6'),_0x173664);};exports[_0x3e3e('0x7')]=function(){utils[_0x3e3e('0x0')](_0x3e3e('0x8'));};exports[_0x3e3e('0x9')]=function(_0x25f82a){};
\ No newline at end of file
index 9674a49..4818592 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf00=['[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','duration','diffTime','holdtime','answertime','billableseconds','endtime','util','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','info','application','appdata','toLowerCase','set','startsWith','split','varset','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','error','[%s][dials][varset]','dialbegin','assign','now','lastevent','called','starttime','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','ANSWER','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup'];(function(_0x14b693,_0x34cf25){var _0x35477e=function(_0x3292c6){while(--_0x3292c6){_0x14b693['push'](_0x14b693['shift']());}};_0x35477e(++_0x34cf25);}(_0xbf00,0x185));var _0x0bf0=function(_0x5e9876,_0x16052d){_0x5e9876=_0x5e9876-0x0;var _0x576c48=_0xbf00[_0x5e9876];return _0x576c48;};'use strict';var _=require('lodash');var util=require(_0x0bf0('0x0'));var utils=require(_0x0bf0('0x1'));var dials={};function writeDB(_0x58a04f){utils['info'](util[_0x0bf0('0x2')](_0x0bf0('0x3'),_0x58a04f[_0x0bf0('0x4')],_0x58a04f[_0x0bf0('0x5')],_0x58a04f[_0x0bf0('0x6')],_0x58a04f[_0x0bf0('0x7')],_0x58a04f[_0x0bf0('0x8')],_0x58a04f[_0x0bf0('0x9')]));utils['request'](_0x0bf0('0xa'),_0x58a04f);delete dials[_0x58a04f[_0x0bf0('0x4')]];}exports[_0x0bf0('0xb')]=function(_0xad89fb){try{utils[_0x0bf0('0xc')](util[_0x0bf0('0x2')](_0x0bf0('0xd'),_0xad89fb[_0x0bf0('0x4')]),_0xad89fb);utils[_0x0bf0('0xe')](util[_0x0bf0('0x2')]('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0xad89fb[_0x0bf0('0x4')],_0xad89fb[_0x0bf0('0xf')],_0xad89fb[_0x0bf0('0x10')]));if(_0xad89fb[_0x0bf0('0xf')][_0x0bf0('0x11')]()==_0x0bf0('0x12')&&_[_0x0bf0('0x13')](_0xad89fb[_0x0bf0('0x10')][_0x0bf0('0x11')](),'cdr(routeid)')){var _0x2eda60=_0xad89fb['appdata'][_0x0bf0('0x14')]('=');dials[_0xad89fb['uniqueid']]={'routeId':_0x2eda60[0x1]};}}catch(_0x5ba153){utils['error'](util[_0x0bf0('0x2')](_0x0bf0('0xd'),_0xad89fb[_0x0bf0('0x4')]),_0x5ba153);}};exports[_0x0bf0('0x15')]=function(_0x38a958){try{utils[_0x0bf0('0xc')](util['format']('[%s][dials][varset]',_0x38a958[_0x0bf0('0x4')]),_0x38a958);if(!_[_0x0bf0('0x16')](_0x38a958[_0x0bf0('0x17')][_0x0bf0('0x18')])){utils[_0x0bf0('0xe')](util['format'](_0x0bf0('0x19'),_0x38a958[_0x0bf0('0x4')],_0x38a958['value']));dials[_0x38a958[_0x0bf0('0x4')]]={'routeId':_0x38a958[_0x0bf0('0x1a')]};}}catch(_0x19e535){utils[_0x0bf0('0x1b')](util[_0x0bf0('0x2')](_0x0bf0('0x1c'),_0x38a958[_0x0bf0('0x4')]),_0x19e535);}};exports[_0x0bf0('0x1d')]=function(_0x1a1558){try{if(!_[_0x0bf0('0x16')](dials[_0x1a1558['uniqueid']])){utils[_0x0bf0('0xc')](util[_0x0bf0('0x2')]('[%s][dials][dialbegin]',_0x1a1558['uniqueid']),_0x1a1558);dials[_0x1a1558[_0x0bf0('0x4')]]=_[_0x0bf0('0x1e')](dials[_0x1a1558[_0x0bf0('0x4')]],_0x1a1558);dials[_0x1a1558[_0x0bf0('0x4')]]['starttime']=utils[_0x0bf0('0x1f')]();dials[_0x1a1558['uniqueid']][_0x0bf0('0x20')]=_0x0bf0('0x21');utils['info'](util[_0x0bf0('0x2')]('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x1a1558[_0x0bf0('0x4')],dials[_0x1a1558[_0x0bf0('0x4')]][_0x0bf0('0x22')]));}}catch(_0x2a8844){utils['error'](util[_0x0bf0('0x2')](_0x0bf0('0x23'),_0x1a1558[_0x0bf0('0x4')]),_0x2a8844);}};exports[_0x0bf0('0x24')]=function(_0x588f8e){try{if(!_[_0x0bf0('0x16')](dials[_0x588f8e[_0x0bf0('0x4')]])){utils[_0x0bf0('0xc')](util[_0x0bf0('0x2')](_0x0bf0('0x25'),_0x588f8e[_0x0bf0('0x4')]),_0x588f8e);dials[_0x588f8e[_0x0bf0('0x4')]]['dialstatus']=_0x588f8e[_0x0bf0('0x9')];if(_0x588f8e[_0x0bf0('0x9')]==_0x0bf0('0x26')){dials[_0x588f8e[_0x0bf0('0x4')]]=_['assign'](dials[_0x588f8e[_0x0bf0('0x4')]],_0x588f8e);dials[_0x588f8e[_0x0bf0('0x4')]]['answertime']=utils['now']();dials[_0x588f8e[_0x0bf0('0x4')]][_0x0bf0('0x20')]=_0x0bf0('0x27');utils[_0x0bf0('0xe')](util[_0x0bf0('0x2')](_0x0bf0('0x28'),_0x588f8e[_0x0bf0('0x4')],_0x588f8e[_0x0bf0('0x9')],dials[_0x588f8e[_0x0bf0('0x4')]]['answertime']));}else{utils['info'](util[_0x0bf0('0x2')](_0x0bf0('0x29'),_0x588f8e[_0x0bf0('0x4')],_0x588f8e[_0x0bf0('0x9')]));}}}catch(_0x4f8210){utils['error'](util['format'](_0x0bf0('0x25'),_0x588f8e[_0x0bf0('0x4')]),_0x4f8210);}};exports[_0x0bf0('0x2a')]=function(_0x489c84){try{if(!_['isNil'](dials[_0x489c84[_0x0bf0('0x4')]])){utils[_0x0bf0('0xc')](util[_0x0bf0('0x2')](_0x0bf0('0x2b'),_0x489c84[_0x0bf0('0x4')]),_0x489c84);utils[_0x0bf0('0xe')](util[_0x0bf0('0x2')](_0x0bf0('0x2c'),_0x489c84[_0x0bf0('0x4')],_0x489c84[_0x0bf0('0x7')],_0x489c84[_0x0bf0('0x2d')],_0x489c84[_0x0bf0('0x2e')]));dials[_0x489c84[_0x0bf0('0x4')]]=_['assign'](dials[_0x489c84[_0x0bf0('0x4')]],{'endtime':utils['now'](),'lastevent':_0x0bf0('0x2f')});dials[_0x489c84[_0x0bf0('0x4')]][_0x0bf0('0x30')]=utils[_0x0bf0('0x31')](dials[_0x489c84[_0x0bf0('0x4')]]['endtime'],dials[_0x489c84[_0x0bf0('0x4')]]['starttime']);dials[_0x489c84[_0x0bf0('0x4')]][_0x0bf0('0x32')]=utils[_0x0bf0('0x31')](dials[_0x489c84[_0x0bf0('0x4')]][_0x0bf0('0x33')]||dials[_0x489c84[_0x0bf0('0x4')]]['endtime'],dials[_0x489c84[_0x0bf0('0x4')]]['starttime']);dials[_0x489c84['uniqueid']][_0x0bf0('0x34')]=dials[_0x489c84[_0x0bf0('0x4')]][_0x0bf0('0x33')]?utils[_0x0bf0('0x31')](dials[_0x489c84[_0x0bf0('0x4')]][_0x0bf0('0x35')],dials[_0x489c84[_0x0bf0('0x4')]][_0x0bf0('0x33')]):0x0;writeDB(dials[_0x489c84[_0x0bf0('0x4')]]);}}catch(_0x525e33){utils[_0x0bf0('0x1b')](util[_0x0bf0('0x2')](_0x0bf0('0x2b'),_0x489c84[_0x0bf0('0x4')]),_0x525e33);}};
\ No newline at end of file
+var _0x821a=['outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','[%s][dials][dialbegin]','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','answertime','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][dialend]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','diffTime','endtime','holdtime','lodash','./utils','info','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','CreateVoiceDialReport','newexten','debug','format','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','set','appdata','cdr(routeid)','split','error','varset','[%s][dials][varset]','isNil','variable'];(function(_0x397cfb,_0xb8f317){var _0x15fed9=function(_0x3eba43){while(--_0x3eba43){_0x397cfb['push'](_0x397cfb['shift']());}};_0x15fed9(++_0xb8f317);}(_0x821a,0x136));var _0xa821=function(_0xe95ae4,_0x146096){_0xe95ae4=_0xe95ae4-0x0;var _0x3fed9b=_0x821a[_0xe95ae4];return _0x3fed9b;};'use strict';var _=require(_0xa821('0x0'));var util=require('util');var utils=require(_0xa821('0x1'));var dials={};function writeDB(_0x334046){utils[_0xa821('0x2')](util['format'](_0xa821('0x3'),_0x334046[_0xa821('0x4')],_0x334046[_0xa821('0x5')],_0x334046[_0xa821('0x6')],_0x334046[_0xa821('0x7')],_0x334046[_0xa821('0x8')],_0x334046[_0xa821('0x9')]));utils['request'](_0xa821('0xa'),_0x334046);delete dials[_0x334046[_0xa821('0x4')]];}exports[_0xa821('0xb')]=function(_0x226a98){try{utils[_0xa821('0xc')](util[_0xa821('0xd')](_0xa821('0xe'),_0x226a98['uniqueid']),_0x226a98);utils[_0xa821('0x2')](util['format'](_0xa821('0xf'),_0x226a98['uniqueid'],_0x226a98[_0xa821('0x10')],_0x226a98['appdata']));if(_0x226a98[_0xa821('0x10')]['toLowerCase']()==_0xa821('0x11')&&_['startsWith'](_0x226a98[_0xa821('0x12')]['toLowerCase'](),_0xa821('0x13'))){var _0x239f53=_0x226a98['appdata'][_0xa821('0x14')]('=');dials[_0x226a98['uniqueid']]={'routeId':_0x239f53[0x1]};}}catch(_0x317f78){utils[_0xa821('0x15')](util[_0xa821('0xd')](_0xa821('0xe'),_0x226a98[_0xa821('0x4')]),_0x317f78);}};exports[_0xa821('0x16')]=function(_0x165de9){try{utils[_0xa821('0xc')](util[_0xa821('0xd')](_0xa821('0x17'),_0x165de9[_0xa821('0x4')]),_0x165de9);if(!_[_0xa821('0x18')](_0x165de9[_0xa821('0x19')][_0xa821('0x1a')])){utils[_0xa821('0x2')](util['format'](_0xa821('0x1b'),_0x165de9[_0xa821('0x4')],_0x165de9[_0xa821('0x1c')]));dials[_0x165de9[_0xa821('0x4')]]={'routeId':_0x165de9[_0xa821('0x1c')]};}}catch(_0x31d9a0){utils[_0xa821('0x15')](util[_0xa821('0xd')](_0xa821('0x17'),_0x165de9[_0xa821('0x4')]),_0x31d9a0);}};exports[_0xa821('0x1d')]=function(_0x193473){try{if(!_['isNil'](dials[_0x193473[_0xa821('0x4')]])){utils[_0xa821('0xc')](util[_0xa821('0xd')](_0xa821('0x1e'),_0x193473[_0xa821('0x4')]),_0x193473);dials[_0x193473[_0xa821('0x4')]]=_[_0xa821('0x1f')](dials[_0x193473['uniqueid']],_0x193473);dials[_0x193473[_0xa821('0x4')]][_0xa821('0x20')]=utils[_0xa821('0x21')]();dials[_0x193473[_0xa821('0x4')]][_0xa821('0x22')]=_0xa821('0x23');utils['info'](util[_0xa821('0xd')](_0xa821('0x24'),_0x193473[_0xa821('0x4')],dials[_0x193473[_0xa821('0x4')]]['starttime']));}}catch(_0x2e8e68){utils[_0xa821('0x15')](util[_0xa821('0xd')]('[%s][dials][dialbegin]',_0x193473[_0xa821('0x4')]),_0x2e8e68);}};exports[_0xa821('0x25')]=function(_0x27c504){try{if(!_[_0xa821('0x18')](dials[_0x27c504['uniqueid']])){utils['debug'](util[_0xa821('0xd')]('[%s][dials][dialend]',_0x27c504['uniqueid']),_0x27c504);dials[_0x27c504['uniqueid']]['dialstatus']=_0x27c504[_0xa821('0x9')];if(_0x27c504[_0xa821('0x9')]=='ANSWER'){dials[_0x27c504['uniqueid']]=_[_0xa821('0x1f')](dials[_0x27c504[_0xa821('0x4')]],_0x27c504);dials[_0x27c504['uniqueid']][_0xa821('0x26')]=utils[_0xa821('0x21')]();dials[_0x27c504[_0xa821('0x4')]][_0xa821('0x22')]='connect';utils[_0xa821('0x2')](util[_0xa821('0xd')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x27c504[_0xa821('0x4')],_0x27c504[_0xa821('0x9')],dials[_0x27c504['uniqueid']][_0xa821('0x26')]));}else{utils[_0xa821('0x2')](util['format'](_0xa821('0x27'),_0x27c504[_0xa821('0x4')],_0x27c504[_0xa821('0x9')]));}}}catch(_0x2fdd13){utils[_0xa821('0x15')](util[_0xa821('0xd')](_0xa821('0x28'),_0x27c504[_0xa821('0x4')]),_0x2fdd13);}};exports['hangup']=function(_0x53a368){try{if(!_['isNil'](dials[_0x53a368['uniqueid']])){utils['debug'](util[_0xa821('0xd')]('[%s][dials][hangup]',_0x53a368[_0xa821('0x4')]),_0x53a368);utils[_0xa821('0x2')](util['format'](_0xa821('0x29'),_0x53a368[_0xa821('0x4')],_0x53a368[_0xa821('0x7')],_0x53a368[_0xa821('0x2a')],_0x53a368[_0xa821('0x2b')]));dials[_0x53a368[_0xa821('0x4')]]=_['assign'](dials[_0x53a368[_0xa821('0x4')]],{'endtime':utils[_0xa821('0x21')](),'lastevent':_0xa821('0x2c')});dials[_0x53a368[_0xa821('0x4')]]['duration']=utils[_0xa821('0x2d')](dials[_0x53a368[_0xa821('0x4')]][_0xa821('0x2e')],dials[_0x53a368[_0xa821('0x4')]]['starttime']);dials[_0x53a368[_0xa821('0x4')]][_0xa821('0x2f')]=utils[_0xa821('0x2d')](dials[_0x53a368[_0xa821('0x4')]]['answertime']||dials[_0x53a368['uniqueid']][_0xa821('0x2e')],dials[_0x53a368[_0xa821('0x4')]][_0xa821('0x20')]);dials[_0x53a368[_0xa821('0x4')]]['billableseconds']=dials[_0x53a368[_0xa821('0x4')]]['answertime']?utils[_0xa821('0x2d')](dials[_0x53a368[_0xa821('0x4')]]['endtime'],dials[_0x53a368[_0xa821('0x4')]][_0xa821('0x26')]):0x0;writeDB(dials[_0x53a368[_0xa821('0x4')]]);}}catch(_0x1df24c){utils[_0xa821('0x15')](util['format']('[%s][dials][hangup]',_0x53a368[_0xa821('0x4')]),_0x1df24c);}};
\ No newline at end of file
index 5eec9a0..bf89fdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7f3=['dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','util','asterisk','username','password','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./calls.controller','./recordings.controller','./members.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','[%s][index][devicestatechange]','device','format','uniqueid','agentcalled','[%s][index][agentcalled]','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','[%s][index][attendedtransfer]','origtransfereruniqueid','attendedtransfer','[%s][index][varset]','varset','newexten','[%s][index][newexten]','[%s][index][newchannel]','newchannel','[%s][index][dialbegin]','[%s]dialbegin'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb7f3,0x18e));var _0x3b7f=function(_0x43cce5,_0x37d488){_0x43cce5=_0x43cce5-0x0;var _0x511636=_0xb7f3[_0x43cce5];return _0x511636;};var AsteriskManager=require(_0x3b7f('0x0'));var config=require(_0x3b7f('0x1'));var utils=require('./utils');var util=require(_0x3b7f('0x2'));var ami=new AsteriskManager(config['asterisk']['port'],config[_0x3b7f('0x3')]['ip'],config['asterisk'][_0x3b7f('0x4')],config[_0x3b7f('0x3')][_0x3b7f('0x5')],!![]);ami[_0x3b7f('0x6')]();if(config[_0x3b7f('0x7')]&&config[_0x3b7f('0x7')][_0x3b7f('0x8')]){utils[_0x3b7f('0x9')](_0x3b7f('0xa'));}else{var agents=require('./agents.controller');var calls=require(_0x3b7f('0xb'));var queues=require('./queues.controller');var recordings=require(_0x3b7f('0xc'));var members=require(_0x3b7f('0xd'));var dials=require('./dials.controller');var transfers=require(_0x3b7f('0xe'));var core=require(_0x3b7f('0xf'));ami['on'](_0x3b7f('0x10'),core[_0x3b7f('0x10')]);ami['on'](_0x3b7f('0x11'),core['shutdown']);ami['on']('fullybooted',core[_0x3b7f('0x12')]);ami['on'](_0x3b7f('0x13'),core[_0x3b7f('0x13')]);ami['on']('close',core[_0x3b7f('0x14')]);ami['on'](_0x3b7f('0x15'),core[_0x3b7f('0x15')]);ami['on'](_0x3b7f('0x16'),function(_0xa71bc1){try{utils[_0x3b7f('0x17')](util['format'](_0x3b7f('0x18'),_0xa71bc1['device']),_0xa71bc1);members[_0x3b7f('0x16')](_0xa71bc1);}catch(_0x2956a7){utils[_0x3b7f('0x13')](util['format'](_0x3b7f('0x18'),_0xa71bc1[_0x3b7f('0x19')]),_0x2956a7);}});ami['on']('agentcalled',function(_0x38ede5){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')]('[%s][index][agentcalled]',_0x38ede5[_0x3b7f('0x1b')]),_0x38ede5);agents[_0x3b7f('0x1c')](_0x38ede5);}catch(_0xe746e9){utils[_0x3b7f('0x13')](util['format'](_0x3b7f('0x1d'),_0x38ede5[_0x3b7f('0x1b')]),_0xe746e9);}});ami['on'](_0x3b7f('0x1e'),function(_0x29e157){try{utils[_0x3b7f('0x17')](util['format'](_0x3b7f('0x1f'),_0x29e157[_0x3b7f('0x1b')]),_0x29e157);agents[_0x3b7f('0x1e')](_0x29e157);}catch(_0x12a719){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x1f'),_0x29e157['uniqueid']),_0x12a719);}});ami['on'](_0x3b7f('0x20'),function(_0x1f5cdd){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x21'),_0x1f5cdd[_0x3b7f('0x1b')]),_0x1f5cdd);agents[_0x3b7f('0x20')](_0x1f5cdd);queues[_0x3b7f('0x20')](_0x1f5cdd);}catch(_0x197317){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x21'),_0x1f5cdd[_0x3b7f('0x1b')]),_0x197317);}});ami['on']('agentcomplete',function(_0x2c54bb){try{utils['debug'](util[_0x3b7f('0x1a')]('[%s][index][agentcomplete]',_0x2c54bb[_0x3b7f('0x1b')]),_0x2c54bb);agents['agentcomplete'](_0x2c54bb);queues[_0x3b7f('0x22')](_0x2c54bb);members[_0x3b7f('0x22')](_0x2c54bb);}catch(_0x251066){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')]('[%s][index][agentcomplete]',_0x2c54bb['uniqueid']),_0x251066);}});ami['on'](_0x3b7f('0x23'),function(_0x39bbdc){try{utils['debug'](util['format'](_0x3b7f('0x24'),_0x39bbdc['uniqueid']),_0x39bbdc);agents[_0x3b7f('0x23')](_0x39bbdc);queues[_0x3b7f('0x23')](_0x39bbdc);}catch(_0x13f377){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')]('[%s][index][queuecallerabandon]',_0x39bbdc[_0x3b7f('0x1b')]),_0x13f377);}});ami['on'](_0x3b7f('0x25'),function(_0x2a09df){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x26'),_0x2a09df[_0x3b7f('0x1b')]),_0x2a09df);queues[_0x3b7f('0x25')](_0x2a09df);recordings[_0x3b7f('0x25')](_0x2a09df);}catch(_0x5b2c9d){utils['error'](util['format'](_0x3b7f('0x26'),_0x2a09df['uniqueid']),_0x5b2c9d);}});ami['on'](_0x3b7f('0x27'),function(_0x2c21f1){try{utils[_0x3b7f('0x17')](util['format'](_0x3b7f('0x28'),_0x2c21f1[_0x3b7f('0x1b')]),_0x2c21f1);queues[_0x3b7f('0x27')](_0x2c21f1);}catch(_0x44daa4){utils['error'](util[_0x3b7f('0x1a')]('[%s][index][queuecallerleave]',_0x2c21f1[_0x3b7f('0x1b')]),_0x44daa4);}});ami['on'](_0x3b7f('0x29'),function(_0xf25208){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x2a'),_0xf25208[_0x3b7f('0x1b')]),_0xf25208);queues['musiconholdstart'](_0xf25208);calls[_0x3b7f('0x29')](_0xf25208);}catch(_0xeb1e2b){utils['error'](util[_0x3b7f('0x1a')](_0x3b7f('0x2a'),_0xf25208['uniqueid']),_0xeb1e2b);}});ami['on'](_0x3b7f('0x2b'),function(_0x532b10){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x2c'),_0x532b10[_0x3b7f('0x1b')]),_0x532b10);queues[_0x3b7f('0x2b')](_0x532b10);calls[_0x3b7f('0x2b')](_0x532b10);}catch(_0x1c4757){utils['error'](util[_0x3b7f('0x1a')](_0x3b7f('0x2c'),_0x532b10[_0x3b7f('0x1b')]),_0x1c4757);}});ami['on'](_0x3b7f('0x2d'),function(_0x393bec){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')]('[%s][index][newstate]',_0x393bec[_0x3b7f('0x1b')]),_0x393bec);calls[_0x3b7f('0x2d')](_0x393bec);recordings[_0x3b7f('0x2d')](_0x393bec);}catch(_0x1d3d56){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x2e'),_0x393bec[_0x3b7f('0x1b')]),_0x1d3d56);}});ami['on'](_0x3b7f('0x2f'),function(_0x190236){try{utils[_0x3b7f('0x17')](util['format']('[%s][index][hangup]',_0x190236['uniqueid']),_0x190236);calls[_0x3b7f('0x2f')](_0x190236);recordings[_0x3b7f('0x2f')](_0x190236);dials['hangup'](_0x190236);agents[_0x3b7f('0x2f')](_0x190236);queues['hangup'](_0x190236);}catch(_0x656f39){utils[_0x3b7f('0x13')](util['format'](_0x3b7f('0x30'),_0x190236[_0x3b7f('0x1b')]),_0x656f39);}});ami['on'](_0x3b7f('0x31'),function(_0x62ed04){try{utils['debug'](util[_0x3b7f('0x1a')](_0x3b7f('0x32'),_0x62ed04[_0x3b7f('0x1b')]),_0x62ed04);members[_0x3b7f('0x31')](_0x62ed04);}catch(_0x29a7bd){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x32'),_0x62ed04[_0x3b7f('0x1b')]),_0x29a7bd);}});ami['on'](_0x3b7f('0x33'),function(_0x7f73c4){try{utils['debug'](util['format']('[%s][index][blindtransfer]',_0x7f73c4[_0x3b7f('0x1b')]),_0x7f73c4);queues[_0x3b7f('0x33')](_0x7f73c4);agents['blindtransfer'](_0x7f73c4);transfers['blindtransfer'](_0x7f73c4);}catch(_0x104897){utils['error'](util[_0x3b7f('0x1a')](_0x3b7f('0x34'),_0x7f73c4[_0x3b7f('0x1b')]),_0x104897);}});ami['on']('attendedtransfer',function(_0x579781){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x35'),_0x579781[_0x3b7f('0x36')]),_0x579781);queues[_0x3b7f('0x37')](_0x579781);transfers[_0x3b7f('0x37')](_0x579781);agents[_0x3b7f('0x37')](_0x579781);calls[_0x3b7f('0x37')](_0x579781);}catch(_0x1a1045){utils[_0x3b7f('0x13')](util['format']('[%s][index][attendedtransfer]',_0x579781[_0x3b7f('0x36')]),_0x1a1045);}});ami['on']('varset',function(_0x111daa){try{utils['debug'](util[_0x3b7f('0x1a')](_0x3b7f('0x38'),_0x111daa[_0x3b7f('0x1b')]),_0x111daa);queues[_0x3b7f('0x39')](_0x111daa);recordings[_0x3b7f('0x39')](_0x111daa);calls['varset'](_0x111daa);dials[_0x3b7f('0x39')](_0x111daa);}catch(_0x58280f){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x38'),_0x111daa[_0x3b7f('0x1b')]),_0x58280f);}});ami['on'](_0x3b7f('0x3a'),function(_0x44d9ae){try{utils['debug'](util[_0x3b7f('0x1a')](_0x3b7f('0x3b'),_0x44d9ae[_0x3b7f('0x1b')]),_0x44d9ae);calls[_0x3b7f('0x3a')](_0x44d9ae);recordings[_0x3b7f('0x3a')](_0x44d9ae);dials[_0x3b7f('0x3a')](_0x44d9ae);}catch(_0x559a35){utils['error'](util[_0x3b7f('0x1a')](_0x3b7f('0x3b'),_0x44d9ae[_0x3b7f('0x1b')]),_0x559a35);}});ami['on']('newchannel',function(_0x2d25cd){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x3c'),_0x2d25cd[_0x3b7f('0x1b')]),_0x2d25cd);calls[_0x3b7f('0x3d')](_0x2d25cd);recordings[_0x3b7f('0x3d')](_0x2d25cd);}catch(_0x288170){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x3c'),_0x2d25cd['uniqueid']),_0x288170);}});ami['on']('dialbegin',function(_0x3e902a){try{utils['debug'](util['format'](_0x3b7f('0x3e'),_0x3e902a[_0x3b7f('0x1b')]),_0x3e902a);dials['dialbegin'](_0x3e902a);}catch(_0x3c8b43){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')](_0x3b7f('0x3f'),_0x3e902a[_0x3b7f('0x1b')]),_0x3c8b43);}});ami['on'](_0x3b7f('0x40'),function(_0x4ec15d){try{utils[_0x3b7f('0x17')](util[_0x3b7f('0x1a')](_0x3b7f('0x41'),_0x4ec15d[_0x3b7f('0x1b')]),_0x4ec15d);dials[_0x3b7f('0x40')](_0x4ec15d);}catch(_0xfe9b35){utils[_0x3b7f('0x13')](util[_0x3b7f('0x1a')]('[%s][index][dialend]',_0x4ec15d[_0x3b7f('0x1b')]),_0xfe9b35);}});}
\ No newline at end of file
+var _0x54bf=['[%s][index][agentringnoanswer]','uniqueid','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerjoin','[%s][index][queuecallerleave]','queuecallerleave','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s]dialbegin','[%s][index][dialend]','dialend','asterisk-manager','../../config/environment','./utils','util','asterisk','port','username','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','devicestatechange','[%s][index][devicestatechange]','device','format','debug','[%s][index][agentcalled]','agentcalled','agentringnoanswer'];(function(_0x28ab1a,_0x41638e){var _0x2db742=function(_0x5f5d8f){while(--_0x5f5d8f){_0x28ab1a['push'](_0x28ab1a['shift']());}};_0x2db742(++_0x41638e);}(_0x54bf,0x178));var _0xf54b=function(_0x521ed2,_0x5d3a20){_0x521ed2=_0x521ed2-0x0;var _0x5ccc4b=_0x54bf[_0x521ed2];return _0x5ccc4b;};var AsteriskManager=require(_0xf54b('0x0'));var config=require(_0xf54b('0x1'));var utils=require(_0xf54b('0x2'));var util=require(_0xf54b('0x3'));var ami=new AsteriskManager(config[_0xf54b('0x4')][_0xf54b('0x5')],config['asterisk']['ip'],config[_0xf54b('0x4')][_0xf54b('0x6')],config[_0xf54b('0x4')]['password'],!![]);ami[_0xf54b('0x7')]();if(config[_0xf54b('0x8')]&&config['xdr'][_0xf54b('0x9')]){utils[_0xf54b('0xa')](_0xf54b('0xb'));}else{var agents=require(_0xf54b('0xc'));var calls=require(_0xf54b('0xd'));var queues=require('./queues.controller');var recordings=require(_0xf54b('0xe'));var members=require(_0xf54b('0xf'));var dials=require(_0xf54b('0x10'));var transfers=require(_0xf54b('0x11'));var core=require(_0xf54b('0x12'));ami['on'](_0xf54b('0x13'),core[_0xf54b('0x13')]);ami['on'](_0xf54b('0x14'),core[_0xf54b('0x14')]);ami['on'](_0xf54b('0x15'),core[_0xf54b('0x15')]);ami['on'](_0xf54b('0x16'),core[_0xf54b('0x16')]);ami['on'](_0xf54b('0x17'),core[_0xf54b('0x17')]);ami['on']('managerevent',core['managerevent']);ami['on'](_0xf54b('0x18'),function(_0x366732){try{utils['debug'](util['format'](_0xf54b('0x19'),_0x366732[_0xf54b('0x1a')]),_0x366732);members[_0xf54b('0x18')](_0x366732);}catch(_0xd3b3aa){utils[_0xf54b('0x16')](util[_0xf54b('0x1b')](_0xf54b('0x19'),_0x366732[_0xf54b('0x1a')]),_0xd3b3aa);}});ami['on']('agentcalled',function(_0x4fefbb){try{utils[_0xf54b('0x1c')](util[_0xf54b('0x1b')](_0xf54b('0x1d'),_0x4fefbb['uniqueid']),_0x4fefbb);agents[_0xf54b('0x1e')](_0x4fefbb);}catch(_0x58b1ec){utils['error'](util[_0xf54b('0x1b')](_0xf54b('0x1d'),_0x4fefbb['uniqueid']),_0x58b1ec);}});ami['on'](_0xf54b('0x1f'),function(_0x408ac8){try{utils[_0xf54b('0x1c')](util['format'](_0xf54b('0x20'),_0x408ac8[_0xf54b('0x21')]),_0x408ac8);agents[_0xf54b('0x1f')](_0x408ac8);}catch(_0x18e135){utils['error'](util['format'](_0xf54b('0x20'),_0x408ac8[_0xf54b('0x21')]),_0x18e135);}});ami['on'](_0xf54b('0x22'),function(_0x4761be){try{utils[_0xf54b('0x1c')](util[_0xf54b('0x1b')](_0xf54b('0x23'),_0x4761be['uniqueid']),_0x4761be);agents[_0xf54b('0x22')](_0x4761be);queues['agentconnect'](_0x4761be);}catch(_0x298399){utils[_0xf54b('0x16')](util['format'](_0xf54b('0x23'),_0x4761be[_0xf54b('0x21')]),_0x298399);}});ami['on'](_0xf54b('0x24'),function(_0x6c663c){try{utils[_0xf54b('0x1c')](util[_0xf54b('0x1b')](_0xf54b('0x25'),_0x6c663c[_0xf54b('0x21')]),_0x6c663c);agents[_0xf54b('0x24')](_0x6c663c);queues['agentcomplete'](_0x6c663c);members['agentcomplete'](_0x6c663c);}catch(_0x21d5e9){utils[_0xf54b('0x16')](util[_0xf54b('0x1b')](_0xf54b('0x25'),_0x6c663c['uniqueid']),_0x21d5e9);}});ami['on'](_0xf54b('0x26'),function(_0x5c494d){try{utils[_0xf54b('0x1c')](util['format'](_0xf54b('0x27'),_0x5c494d[_0xf54b('0x21')]),_0x5c494d);agents['queuecallerabandon'](_0x5c494d);queues[_0xf54b('0x26')](_0x5c494d);}catch(_0x453b14){utils[_0xf54b('0x16')](util[_0xf54b('0x1b')](_0xf54b('0x27'),_0x5c494d[_0xf54b('0x21')]),_0x453b14);}});ami['on']('queuecallerjoin',function(_0xafe548){try{utils[_0xf54b('0x1c')](util[_0xf54b('0x1b')](_0xf54b('0x28'),_0xafe548[_0xf54b('0x21')]),_0xafe548);queues[_0xf54b('0x29')](_0xafe548);recordings['queuecallerjoin'](_0xafe548);}catch(_0x59d2a5){utils[_0xf54b('0x16')](util['format'](_0xf54b('0x28'),_0xafe548[_0xf54b('0x21')]),_0x59d2a5);}});ami['on']('queuecallerleave',function(_0x1b0af7){try{utils[_0xf54b('0x1c')](util['format'](_0xf54b('0x2a'),_0x1b0af7[_0xf54b('0x21')]),_0x1b0af7);queues[_0xf54b('0x2b')](_0x1b0af7);}catch(_0x95fada){utils['error'](util[_0xf54b('0x1b')](_0xf54b('0x2a'),_0x1b0af7[_0xf54b('0x21')]),_0x95fada);}});ami['on'](_0xf54b('0x2c'),function(_0x1784bc){try{utils[_0xf54b('0x1c')](util[_0xf54b('0x1b')](_0xf54b('0x2d'),_0x1784bc['uniqueid']),_0x1784bc);queues[_0xf54b('0x2c')](_0x1784bc);calls[_0xf54b('0x2c')](_0x1784bc);}catch(_0x863cb8){utils['error'](util[_0xf54b('0x1b')](_0xf54b('0x2d'),_0x1784bc[_0xf54b('0x21')]),_0x863cb8);}});ami['on'](_0xf54b('0x2e'),function(_0xce2f05){try{utils[_0xf54b('0x1c')](util[_0xf54b('0x1b')]('[%s][index][musiconholdstop]',_0xce2f05[_0xf54b('0x21')]),_0xce2f05);queues[_0xf54b('0x2e')](_0xce2f05);calls[_0xf54b('0x2e')](_0xce2f05);}catch(_0x4d79cb){utils[_0xf54b('0x16')](util[_0xf54b('0x1b')](_0xf54b('0x2f'),_0xce2f05[_0xf54b('0x21')]),_0x4d79cb);}});ami['on'](_0xf54b('0x30'),function(_0x5a2d16){try{utils[_0xf54b('0x1c')](util[_0xf54b('0x1b')](_0xf54b('0x31'),_0x5a2d16[_0xf54b('0x21')]),_0x5a2d16);calls[_0xf54b('0x30')](_0x5a2d16);recordings[_0xf54b('0x30')](_0x5a2d16);}catch(_0x151ef7){utils[_0xf54b('0x16')](util['format'](_0xf54b('0x31'),_0x5a2d16[_0xf54b('0x21')]),_0x151ef7);}});ami['on']('hangup',function(_0x4325df){try{utils[_0xf54b('0x1c')](util[_0xf54b('0x1b')]('[%s][index][hangup]',_0x4325df[_0xf54b('0x21')]),_0x4325df);calls['hangup'](_0x4325df);recordings[_0xf54b('0x32')](_0x4325df);dials[_0xf54b('0x32')](_0x4325df);agents[_0xf54b('0x32')](_0x4325df);queues[_0xf54b('0x32')](_0x4325df);}catch(_0x2daccc){utils[_0xf54b('0x16')](util[_0xf54b('0x1b')]('[%s][index][hangup]',_0x4325df['uniqueid']),_0x2daccc);}});ami['on'](_0xf54b('0x33'),function(_0x2fb528){try{utils[_0xf54b('0x1c')](util[_0xf54b('0x1b')](_0xf54b('0x34'),_0x2fb528[_0xf54b('0x21')]),_0x2fb528);members[_0xf54b('0x33')](_0x2fb528);}catch(_0x2ee38f){utils['error'](util[_0xf54b('0x1b')](_0xf54b('0x34'),_0x2fb528[_0xf54b('0x21')]),_0x2ee38f);}});ami['on'](_0xf54b('0x35'),function(_0x379719){try{utils[_0xf54b('0x1c')](util[_0xf54b('0x1b')](_0xf54b('0x36'),_0x379719[_0xf54b('0x21')]),_0x379719);queues[_0xf54b('0x35')](_0x379719);agents[_0xf54b('0x35')](_0x379719);transfers['blindtransfer'](_0x379719);}catch(_0x3f4432){utils[_0xf54b('0x16')](util[_0xf54b('0x1b')](_0xf54b('0x36'),_0x379719[_0xf54b('0x21')]),_0x3f4432);}});ami['on'](_0xf54b('0x37'),function(_0x3cf97e){try{utils[_0xf54b('0x1c')](util[_0xf54b('0x1b')](_0xf54b('0x38'),_0x3cf97e[_0xf54b('0x39')]),_0x3cf97e);queues[_0xf54b('0x37')](_0x3cf97e);transfers[_0xf54b('0x37')](_0x3cf97e);agents[_0xf54b('0x37')](_0x3cf97e);calls[_0xf54b('0x37')](_0x3cf97e);}catch(_0x1bea16){utils[_0xf54b('0x16')](util['format'](_0xf54b('0x38'),_0x3cf97e['origtransfereruniqueid']),_0x1bea16);}});ami['on'](_0xf54b('0x3a'),function(_0x307300){try{utils['debug'](util[_0xf54b('0x1b')](_0xf54b('0x3b'),_0x307300[_0xf54b('0x21')]),_0x307300);queues[_0xf54b('0x3a')](_0x307300);recordings[_0xf54b('0x3a')](_0x307300);calls[_0xf54b('0x3a')](_0x307300);dials['varset'](_0x307300);}catch(_0x5963a0){utils[_0xf54b('0x16')](util[_0xf54b('0x1b')](_0xf54b('0x3b'),_0x307300['uniqueid']),_0x5963a0);}});ami['on'](_0xf54b('0x3c'),function(_0x276e15){try{utils[_0xf54b('0x1c')](util[_0xf54b('0x1b')](_0xf54b('0x3d'),_0x276e15[_0xf54b('0x21')]),_0x276e15);calls[_0xf54b('0x3c')](_0x276e15);recordings[_0xf54b('0x3c')](_0x276e15);dials[_0xf54b('0x3c')](_0x276e15);}catch(_0xec7afd){utils[_0xf54b('0x16')](util[_0xf54b('0x1b')]('[%s][index][newexten]',_0x276e15['uniqueid']),_0xec7afd);}});ami['on'](_0xf54b('0x3e'),function(_0x2981a8){try{utils[_0xf54b('0x1c')](util['format'](_0xf54b('0x3f'),_0x2981a8[_0xf54b('0x21')]),_0x2981a8);calls[_0xf54b('0x3e')](_0x2981a8);recordings['newchannel'](_0x2981a8);}catch(_0x4da7a0){utils[_0xf54b('0x16')](util[_0xf54b('0x1b')](_0xf54b('0x3f'),_0x2981a8[_0xf54b('0x21')]),_0x4da7a0);}});ami['on'](_0xf54b('0x40'),function(_0x87bca5){try{utils[_0xf54b('0x1c')](util[_0xf54b('0x1b')]('[%s][index][dialbegin]',_0x87bca5[_0xf54b('0x21')]),_0x87bca5);dials['dialbegin'](_0x87bca5);}catch(_0x2ff5b6){utils[_0xf54b('0x16')](util[_0xf54b('0x1b')](_0xf54b('0x41'),_0x87bca5[_0xf54b('0x21')]),_0x2ff5b6);}});ami['on']('dialend',function(_0x6412c5){try{utils[_0xf54b('0x1c')](util['format'](_0xf54b('0x42'),_0x6412c5[_0xf54b('0x21')]),_0x6412c5);dials[_0xf54b('0x43')](_0x6412c5);}catch(_0x192400){utils[_0xf54b('0x16')](util[_0xf54b('0x1b')](_0xf54b('0x42'),_0x6412c5[_0xf54b('0x21')]),_0x192400);}});}
\ No newline at end of file
index 31359a5..696dff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cde=['type','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','assign','lodash','util','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','channel','data2','interface','getUserByInterface','then','membername','name','internal','request','CreateMemberReport','catch','[%s][members][writeDB]','some','debug','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','BUSY','voice','TALKING','agent','NOT_INUSE','isNil','exitAt','now','duration','diffTime','enterAt','[%s][members][devicestatechange]','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','error','cdr','[%s][members][cdr]','split','data1'];(function(_0x1c0e94,_0x523974){var _0x3abcaa=function(_0x4bce92){while(--_0x4bce92){_0x1c0e94['push'](_0x1c0e94['shift']());}};_0x3abcaa(++_0x523974);}(_0x2cde,0x1ed));var _0xe2cd=function(_0x5e8867,_0xcdfd8b){_0x5e8867=_0x5e8867-0x0;var _0x27e0ca=_0x2cde[_0x5e8867];return _0x27e0ca;};'use strict';var _=require(_0xe2cd('0x0'));var util=require(_0xe2cd('0x1'));var utils=require(_0xe2cd('0x2'));var members={};var exclude=[_0xe2cd('0x3'),_0xe2cd('0x4')];function writeDB(_0x238874){utils[_0xe2cd('0x5')](util[_0xe2cd('0x6')](_0xe2cd('0x7'),_0x238874[_0xe2cd('0x8')],_0x238874['interface'],_0x238874[_0xe2cd('0x9')],_0x238874[_0xe2cd('0xa')],_0x238874['membername'],_0x238874['type']));if(_0x238874[_0xe2cd('0xb')]){utils[_0xe2cd('0xc')](_0x238874['interface'])[_0xe2cd('0xd')](function(_0x1aa7a6){if(_0x1aa7a6){_0x238874[_0xe2cd('0xe')]=_0x1aa7a6[_0xe2cd('0xf')];_0x238874[_0xe2cd('0x10')]=_0x1aa7a6[_0xe2cd('0x10')];utils[_0xe2cd('0x11')](_0xe2cd('0x12'),_0x238874);}else{utils['getUserByName'](_0x238874['interface']['split']('/')[0x1])[_0xe2cd('0xd')](function(_0x202bce){if(_0x202bce){_0x238874[_0xe2cd('0xe')]=_0x202bce[_0xe2cd('0xf')];_0x238874[_0xe2cd('0x10')]=_0x202bce[_0xe2cd('0x10')];utils[_0xe2cd('0x11')](_0xe2cd('0x12'),_0x238874);}});}})[_0xe2cd('0x13')](function(_0x145ee9){utils['error'](util[_0xe2cd('0x6')](_0xe2cd('0x14'),_0x238874[_0xe2cd('0x8')]),_0x145ee9);});}delete members[_0x238874['interface']];}function startsWith(_0x3d1049,_0x1f0021){return _[_0xe2cd('0x15')](_0x3d1049,function(_0x34d606){return _['startsWith'](_0x1f0021,_0x34d606);});}exports['devicestatechange']=function(_0x110264){try{utils[_0xe2cd('0x16')](util[_0xe2cd('0x6')]('[%s][members][devicestatechange]',members[_0x110264[_0xe2cd('0x17')]]?members[_0x110264[_0xe2cd('0x17')]][_0xe2cd('0x8')]:_0x110264[_0xe2cd('0x17')]),_0x110264);utils[_0xe2cd('0x5')](util['format'](_0xe2cd('0x18'),members[_0x110264['device']]?members[_0x110264[_0xe2cd('0x17')]][_0xe2cd('0x8')]:_0x110264['device'],_0x110264['state'],_0x110264[_0xe2cd('0x17')]));switch(_0x110264[_0xe2cd('0x19')]){case'INUSE':case _0xe2cd('0x1a'):if(!startsWith(exclude,_0x110264['device'])){members[_0x110264['device']]={'channel':_0xe2cd('0x1b'),'interface':_0x110264['device'],'type':_0xe2cd('0x1c'),'enterAt':utils['now'](),'role':_0xe2cd('0x1d')};}break;case _0xe2cd('0x1e'):if(!_[_0xe2cd('0x1f')](members[_0x110264[_0xe2cd('0x17')]])){members[_0x110264['device']][_0xe2cd('0x20')]=utils[_0xe2cd('0x21')]();members[_0x110264['device']][_0xe2cd('0x22')]=utils[_0xe2cd('0x23')](members[_0x110264[_0xe2cd('0x17')]][_0xe2cd('0x20')],members[_0x110264[_0xe2cd('0x17')]][_0xe2cd('0x24')]);if(members[_0x110264[_0xe2cd('0x17')]][_0xe2cd('0x8')]){writeDB(members[_0x110264[_0xe2cd('0x17')]]);}}break;default:break;}}catch(_0x310c7a){utils['error'](util[_0xe2cd('0x6')](_0xe2cd('0x25'),members[_0x110264[_0xe2cd('0x17')]]?members[_0x110264[_0xe2cd('0x17')]][_0xe2cd('0x8')]:_0x110264['device']),_0x310c7a);}};exports[_0xe2cd('0x26')]=function(_0x3d0be1){try{if(!_[_0xe2cd('0x1f')](members[_0x3d0be1['interface']])){utils[_0xe2cd('0x16')](util['format'](_0xe2cd('0x27'),_0x3d0be1[_0xe2cd('0x8')]),_0x3d0be1);utils[_0xe2cd('0x5')](util[_0xe2cd('0x6')](_0xe2cd('0x28'),_0x3d0be1[_0xe2cd('0x8')],_0x3d0be1['interface'],_0x3d0be1[_0xe2cd('0x29')]));members[_0x3d0be1[_0xe2cd('0xb')]]=_['assign'](members[_0x3d0be1[_0xe2cd('0xb')]],{'data4':_0x3d0be1[_0xe2cd('0x29')],'uniqueid':_0x3d0be1[_0xe2cd('0x8')]});}}catch(_0x323179){utils[_0xe2cd('0x2a')](util[_0xe2cd('0x6')](_0xe2cd('0x27'),_0x3d0be1[_0xe2cd('0x8')]),_0x323179);}};exports[_0xe2cd('0x2b')]=function(_0x2a0f55){try{utils[_0xe2cd('0x16')](util[_0xe2cd('0x6')](_0xe2cd('0x2c'),_0x2a0f55[_0xe2cd('0x8')]),_0x2a0f55);if(_0x2a0f55['channel']){var _0x33cad0=_0x2a0f55[_0xe2cd('0x9')][_0xe2cd('0x2d')]('-')[0x0];if(!_[_0xe2cd('0x1f')](members[_0x33cad0])){members[_0x33cad0]=_['assign'](members[_0x33cad0],{'data1':members[_0x33cad0][_0xe2cd('0x2e')]||_0x2a0f55[_0xe2cd('0x2f')],'data2':members[_0x33cad0]['data2']||_0x2a0f55[_0xe2cd('0x30')],'data3':members[_0x33cad0][_0xe2cd('0x31')]||_0x2a0f55[_0xe2cd('0x32')],'uniqueid':members[_0x33cad0]['uniqueid']||_0x2a0f55['uniqueid']});utils['info'](util[_0xe2cd('0x6')](_0xe2cd('0x33'),_0x2a0f55['uniqueid'],members[_0x33cad0]['data1'],members[_0x33cad0][_0xe2cd('0xa')],members[_0x33cad0][_0xe2cd('0x31')]));if(members[_0x33cad0][_0xe2cd('0x20')]){writeDB(members[_0x33cad0]);}}}if(_0x2a0f55[_0xe2cd('0x34')]){var _0x156404=_0x2a0f55['destinationchannel'][_0xe2cd('0x2d')]('-')[0x0];if(!_[_0xe2cd('0x1f')](members[_0x156404])){members[_0x156404]=_[_0xe2cd('0x35')](members[_0x156404],{'data1':members[_0x156404][_0xe2cd('0x2e')]||_0x2a0f55[_0xe2cd('0x2f')],'data2':members[_0x156404][_0xe2cd('0xa')]||_0x2a0f55[_0xe2cd('0x30')],'data3':members[_0x156404][_0xe2cd('0x31')]||_0x2a0f55['destination'],'uniqueid':members[_0x156404][_0xe2cd('0x8')]||_0x2a0f55[_0xe2cd('0x8')]});utils['info'](util['format'](_0xe2cd('0x33'),_0x2a0f55[_0xe2cd('0x8')],members[_0x156404]['data1'],members[_0x156404][_0xe2cd('0xa')],members[_0x156404]['data3']));if(members[_0x156404]['exitAt']){writeDB(members[_0x156404]);}}}}catch(_0x34a416){utils[_0xe2cd('0x2a')](util['format'](_0xe2cd('0x2c'),_0x2a0f55['uniqueid']),_0x34a416);}};
\ No newline at end of file
+var _0x257e=['format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','channel','data2','type','interface','getUserByInterface','then','membername','name','internal','CreateMemberReport','getUserByName','split','request','catch','[%s][members][writeDB]','some','startsWith','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','voice','TALKING','now','isNil','duration','diffTime','exitAt','enterAt','error','[%s][members][devicestatechange]','agentcomplete','debug','queue','cdr','[%s][members][cdr]','assign','data1','source','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','data3','destinationchannel','util','./utils','Queue:','info'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0x257e,0x1dc));var _0xe257=function(_0x36d203,_0x3653f3){_0x36d203=_0x36d203-0x0;var _0x2f9e62=_0x257e[_0x36d203];return _0x2f9e62;};'use strict';var _=require('lodash');var util=require(_0xe257('0x0'));var utils=require(_0xe257('0x1'));var members={};var exclude=['Local/_attended@transfer',_0xe257('0x2')];function writeDB(_0x5cb120){utils[_0xe257('0x3')](util[_0xe257('0x4')](_0xe257('0x5'),_0x5cb120[_0xe257('0x6')],_0x5cb120['interface'],_0x5cb120[_0xe257('0x7')],_0x5cb120[_0xe257('0x8')],_0x5cb120['membername'],_0x5cb120[_0xe257('0x9')]));if(_0x5cb120[_0xe257('0xa')]){utils[_0xe257('0xb')](_0x5cb120['interface'])[_0xe257('0xc')](function(_0x34ed0b){if(_0x34ed0b){_0x5cb120[_0xe257('0xd')]=_0x34ed0b[_0xe257('0xe')];_0x5cb120[_0xe257('0xf')]=_0x34ed0b['internal'];utils['request'](_0xe257('0x10'),_0x5cb120);}else{utils[_0xe257('0x11')](_0x5cb120['interface'][_0xe257('0x12')]('/')[0x1])[_0xe257('0xc')](function(_0x5214c2){if(_0x5214c2){_0x5cb120[_0xe257('0xd')]=_0x5214c2[_0xe257('0xe')];_0x5cb120[_0xe257('0xf')]=_0x5214c2[_0xe257('0xf')];utils[_0xe257('0x13')]('CreateMemberReport',_0x5cb120);}});}})[_0xe257('0x14')](function(_0x268874){utils['error'](util[_0xe257('0x4')](_0xe257('0x15'),_0x5cb120[_0xe257('0x6')]),_0x268874);});}delete members[_0x5cb120[_0xe257('0xa')]];}function startsWith(_0x1e34db,_0x44f6d8){return _[_0xe257('0x16')](_0x1e34db,function(_0x396be4){return _[_0xe257('0x17')](_0x44f6d8,_0x396be4);});}exports['devicestatechange']=function(_0x9df9de){try{utils['debug'](util[_0xe257('0x4')]('[%s][members][devicestatechange]',members[_0x9df9de['device']]?members[_0x9df9de[_0xe257('0x18')]]['uniqueid']:_0x9df9de['device']),_0x9df9de);utils[_0xe257('0x3')](util['format'](_0xe257('0x19'),members[_0x9df9de[_0xe257('0x18')]]?members[_0x9df9de['device']]['uniqueid']:_0x9df9de['device'],_0x9df9de[_0xe257('0x1a')],_0x9df9de['device']));switch(_0x9df9de['state']){case'INUSE':case'BUSY':if(!startsWith(exclude,_0x9df9de[_0xe257('0x18')])){members[_0x9df9de['device']]={'channel':_0xe257('0x1b'),'interface':_0x9df9de[_0xe257('0x18')],'type':_0xe257('0x1c'),'enterAt':utils[_0xe257('0x1d')](),'role':'agent'};}break;case'NOT_INUSE':if(!_[_0xe257('0x1e')](members[_0x9df9de[_0xe257('0x18')]])){members[_0x9df9de['device']]['exitAt']=utils[_0xe257('0x1d')]();members[_0x9df9de[_0xe257('0x18')]][_0xe257('0x1f')]=utils[_0xe257('0x20')](members[_0x9df9de['device']][_0xe257('0x21')],members[_0x9df9de[_0xe257('0x18')]][_0xe257('0x22')]);if(members[_0x9df9de[_0xe257('0x18')]][_0xe257('0x6')]){writeDB(members[_0x9df9de['device']]);}}break;default:break;}}catch(_0x1c3c8c){utils[_0xe257('0x23')](util['format'](_0xe257('0x24'),members[_0x9df9de[_0xe257('0x18')]]?members[_0x9df9de[_0xe257('0x18')]]['uniqueid']:_0x9df9de[_0xe257('0x18')]),_0x1c3c8c);}};exports[_0xe257('0x25')]=function(_0x25d1bd){try{if(!_['isNil'](members[_0x25d1bd['interface']])){utils[_0xe257('0x26')](util['format']('[%s][members][agentcomplete]',_0x25d1bd[_0xe257('0x6')]),_0x25d1bd);utils['info'](util[_0xe257('0x4')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x25d1bd[_0xe257('0x6')],_0x25d1bd[_0xe257('0xa')],_0x25d1bd['queue']));members[_0x25d1bd[_0xe257('0xa')]]=_['assign'](members[_0x25d1bd[_0xe257('0xa')]],{'data4':_0x25d1bd[_0xe257('0x27')],'uniqueid':_0x25d1bd[_0xe257('0x6')]});}}catch(_0x1ab2bb){utils[_0xe257('0x23')](util['format']('[%s][members][agentcomplete]',_0x25d1bd['uniqueid']),_0x1ab2bb);}};exports[_0xe257('0x28')]=function(_0x1c42fe){try{utils['debug'](util[_0xe257('0x4')](_0xe257('0x29'),_0x1c42fe[_0xe257('0x6')]),_0x1c42fe);if(_0x1c42fe[_0xe257('0x7')]){var _0x32d444=_0x1c42fe[_0xe257('0x7')][_0xe257('0x12')]('-')[0x0];if(!_[_0xe257('0x1e')](members[_0x32d444])){members[_0x32d444]=_[_0xe257('0x2a')](members[_0x32d444],{'data1':members[_0x32d444][_0xe257('0x2b')]||_0x1c42fe[_0xe257('0x9')],'data2':members[_0x32d444][_0xe257('0x8')]||_0x1c42fe[_0xe257('0x2c')],'data3':members[_0x32d444]['data3']||_0x1c42fe['destination'],'uniqueid':members[_0x32d444][_0xe257('0x6')]||_0x1c42fe[_0xe257('0x6')]});utils['info'](util['format'](_0xe257('0x2d'),_0x1c42fe[_0xe257('0x6')],members[_0x32d444][_0xe257('0x2b')],members[_0x32d444][_0xe257('0x8')],members[_0x32d444][_0xe257('0x2e')]));if(members[_0x32d444][_0xe257('0x21')]){writeDB(members[_0x32d444]);}}}if(_0x1c42fe[_0xe257('0x2f')]){var _0x9e7e11=_0x1c42fe[_0xe257('0x2f')][_0xe257('0x12')]('-')[0x0];if(!_[_0xe257('0x1e')](members[_0x9e7e11])){members[_0x9e7e11]=_['assign'](members[_0x9e7e11],{'data1':members[_0x9e7e11][_0xe257('0x2b')]||_0x1c42fe[_0xe257('0x9')],'data2':members[_0x9e7e11]['data2']||_0x1c42fe[_0xe257('0x2c')],'data3':members[_0x9e7e11][_0xe257('0x2e')]||_0x1c42fe['destination'],'uniqueid':members[_0x9e7e11][_0xe257('0x6')]||_0x1c42fe[_0xe257('0x6')]});utils[_0xe257('0x3')](util[_0xe257('0x4')](_0xe257('0x2d'),_0x1c42fe[_0xe257('0x6')],members[_0x9e7e11][_0xe257('0x2b')],members[_0x9e7e11][_0xe257('0x8')],members[_0x9e7e11][_0xe257('0x2e')]));if(members[_0x9e7e11][_0xe257('0x21')]){writeDB(members[_0x9e7e11]);}}}}catch(_0x390bfe){utils[_0xe257('0x23')](util[_0xe257('0x4')](_0xe257('0x29'),_0x1c42fe[_0xe257('0x6')]),_0x390bfe);}};
\ No newline at end of file
index 206e36f..03fe86c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedb9=['agentconnect','[%s][queues][agentconnect]','membername','destaccountcode','assigned','agentcomplete','[%s][queues][agentcomplete]','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','transfereeuniqueid','[%s][queues][blindtransfer]','extension','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererlinkedid','origtransfererexten','transfertype','ATTENDED','transferexten','transferuniqueid','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstart]','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','queue','lastAssignedTo','calleridnum','accountcode','type','request','CreateVoiceQueueReport','transfereduniqueid','uniqueid','queuecallerjoin','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','assign','now','error','isNil','debug','[%s][queues][hangup]','queuecallerleaveAt','queuecallerexit','queuecallercomplete','queuecallercompleteAt','queuecallerexitreason','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','[%s][queues][varset]','variable','queuestatus','value','toUpperCase','queuecallerabandon','queuecallerabandonAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queuecallerexitAt','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','holdtime','diffTime','queuecallerjoinAt','position','count','connectedlinenum','[%s][queues][queuecallerleave]'];(function(_0x445ef7,_0x40fbf9){var _0x52bb69=function(_0x15a595){while(--_0x15a595){_0x445ef7['push'](_0x445ef7['shift']());}};_0x52bb69(++_0x40fbf9);}(_0xedb9,0x93));var _0x9edb=function(_0x48a02a,_0x2a75b6){_0x48a02a=_0x48a02a-0x0;var _0x366781=_0xedb9[_0x48a02a];return _0x366781;};'use strict';var _=require(_0x9edb('0x0'));var util=require(_0x9edb('0x1'));var utils=require(_0x9edb('0x2'));var queues={};function writeDB(_0x9ae215){utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x5'),_0x9ae215['uniqueid'],_0x9ae215['channel'],_0x9ae215[_0x9edb('0x6')],_0x9ae215[_0x9edb('0x7')],_0x9ae215[_0x9edb('0x8')],_0x9ae215[_0x9edb('0x9')],_0x9ae215['queuecallerexitreason']));if(_0x9ae215[_0x9edb('0x6')]){utils['getVoiceQueueByName'](_0x9ae215[_0x9edb('0x6')])['then'](function(_0x5d16ec){if(_0x5d16ec){_0x9ae215[_0x9edb('0xa')]=_0x5d16ec['type'];}utils[_0x9edb('0xb')](_0x9edb('0xc'),_0x9ae215);});}else{utils[_0x9edb('0xb')](_0x9edb('0xc'),_0x9ae215);}if(_0x9ae215[_0x9edb('0xd')]){delete queues[_0x9ae215['transfereduniqueid']];}else{delete queues[_0x9ae215[_0x9edb('0xe')]];}}exports[_0x9edb('0xf')]=function(_0x204331){try{utils['debug'](util[_0x9edb('0x4')]('[%s][queues][queuecallerjoin]',_0x204331[_0x9edb('0xe')]),_0x204331);utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x10'),_0x204331[_0x9edb('0xe')],_0x204331[_0x9edb('0x6')],_0x204331['position']));queues[_0x204331['uniqueid']]=_[_0x9edb('0x11')](_0x204331,{'originalposition':_0x204331['position'],'queuecallerjoinAt':utils[_0x9edb('0x12')](),'mohtime':0x0});}catch(_0x340026){utils[_0x9edb('0x13')](util['format']('[%s][queues][queuecallerjoin]',_0x204331[_0x9edb('0xe')]),_0x340026);}};exports['hangup']=function(_0x3e71cb){try{if(!_[_0x9edb('0x14')](queues[_0x3e71cb[_0x9edb('0xe')]])){utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x16'),_0x3e71cb['uniqueid']),_0x3e71cb);if(queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0x17')]){if(!queues[_0x3e71cb['uniqueid']]['queuecallerabandon']&&!queues[_0x3e71cb['uniqueid']][_0x9edb('0x18')]){queues[_0x3e71cb['uniqueid']][_0x9edb('0x19')]=!![];queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0x1a')]=utils['now']();queues[_0x3e71cb['uniqueid']][_0x9edb('0x1b')]=_0x9edb('0x1c');}utils[_0x9edb('0x3')](util['format'](_0x9edb('0x1d'),_0x3e71cb[_0x9edb('0xe')],queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0x1e')],queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0x1b')]));writeDB(queues[_0x3e71cb[_0x9edb('0xe')]]);}else if(queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0xd')]){utils['info'](util['format'](_0x9edb('0x1f'),_0x3e71cb[_0x9edb('0xe')],queues[_0x3e71cb[_0x9edb('0xe')]]['name'],queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0xd')]));queues[queues[_0x3e71cb['uniqueid']][_0x9edb('0xd')]]=queues[_0x3e71cb['uniqueid']];queues[queues[_0x3e71cb[_0x9edb('0xe')]][_0x9edb('0xd')]][_0x9edb('0x20')]=0x2;delete queues[_0x3e71cb[_0x9edb('0xe')]];}}}catch(_0x4e69f4){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x16'),_0x3e71cb[_0x9edb('0xe')]),_0x4e69f4);}};exports[_0x9edb('0x21')]=function(_0x4e95ef){try{utils['debug'](util[_0x9edb('0x4')](_0x9edb('0x22'),_0x4e95ef[_0x9edb('0xe')]),_0x4e95ef);if(!_[_0x9edb('0x14')](_0x4e95ef[_0x9edb('0x23')][_0x9edb('0x24')])&&_0x4e95ef[_0x9edb('0x25')][_0x9edb('0x26')]()!=='CONTINUE'){if(!_[_0x9edb('0x14')](queues[_0x4e95ef[_0x9edb('0xe')]])){queues[_0x4e95ef['uniqueid']][_0x9edb('0x27')]=![];queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x28')]=null;queues[_0x4e95ef[_0x9edb('0xe')]]['queuecallerexit']=!![];queues[_0x4e95ef['uniqueid']]['queuecallerexitAt']=utils[_0x9edb('0x12')]();queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x1b')]=_0x4e95ef[_0x9edb('0x25')][_0x9edb('0x26')]();utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x29'),_0x4e95ef[_0x9edb('0xe')],queues[_0x4e95ef[_0x9edb('0xe')]]['name'],_0x4e95ef[_0x9edb('0x25')],queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x1b')]));writeDB(queues[_0x4e95ef[_0x9edb('0xe')]]);}}else if(!_[_0x9edb('0x14')](_0x4e95ef[_0x9edb('0x23')]['queueposition'])){if(!_[_0x9edb('0x14')](queues[_0x4e95ef[_0x9edb('0xe')]])&&!queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x27')]){queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x27')]=![];queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x28')]=null;queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x18')]=!![];queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x2a')]=utils['now']();queues[_0x4e95ef['uniqueid']][_0x9edb('0x1b')]=_0x9edb('0x2b');utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x2c'),_0x4e95ef[_0x9edb('0xe')],queues[_0x4e95ef[_0x9edb('0xe')]][_0x9edb('0x1e')],_0x4e95ef[_0x9edb('0x25')],queues[_0x4e95ef[_0x9edb('0xe')]]['queuecallerexitreason']));}}}catch(_0x37e1e2){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x22'),_0x4e95ef[_0x9edb('0xe')]),_0x37e1e2);}};exports[_0x9edb('0x27')]=function(_0x531b71){try{if(!_[_0x9edb('0x14')](queues[_0x531b71['uniqueid']])){utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x2d'),_0x531b71['uniqueid']),_0x531b71);queues[_0x531b71[_0x9edb('0xe')]][_0x9edb('0x18')]=![];queues[_0x531b71[_0x9edb('0xe')]][_0x9edb('0x2a')]=null;queues[_0x531b71[_0x9edb('0xe')]][_0x9edb('0x27')]=!![];queues[_0x531b71[_0x9edb('0xe')]][_0x9edb('0x28')]=utils[_0x9edb('0x12')]();queues[_0x531b71['uniqueid']][_0x9edb('0x1b')]=_0x9edb('0x2e');utils['info'](util[_0x9edb('0x4')]('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x531b71['uniqueid'],queues[_0x531b71['uniqueid']][_0x9edb('0x1e')],queues[_0x531b71[_0x9edb('0xe')]][_0x9edb('0x1b')]));}}catch(_0x15eb93){utils['error'](util['format'](_0x9edb('0x2d'),_0x531b71[_0x9edb('0xe')]),_0x15eb93);}};exports[_0x9edb('0x2f')]=function(_0x4a669d){try{if(!_[_0x9edb('0x14')](queues[_0x4a669d['uniqueid']])){utils['debug'](util[_0x9edb('0x4')]('[%s][queues][queuecallerleave]',_0x4a669d[_0x9edb('0xe')]),_0x4a669d);utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x30'),_0x4a669d[_0x9edb('0xe')],queues[_0x4a669d['uniqueid']][_0x9edb('0x1e')],_0x4a669d['connectedlinenum'],_0x4a669d[_0x9edb('0x31')]));queues[_0x4a669d['uniqueid']]['queuecallerleave']=!![];queues[_0x4a669d[_0x9edb('0xe')]]['queuecallerleaveAt']=utils['now']();queues[_0x4a669d[_0x9edb('0xe')]][_0x9edb('0x32')]=utils[_0x9edb('0x33')](queues[_0x4a669d[_0x9edb('0xe')]]['queuecallerleaveAt'],queues[_0x4a669d['uniqueid']][_0x9edb('0x34')]);queues[_0x4a669d['uniqueid']][_0x9edb('0x35')]=_0x4a669d['position'];queues[_0x4a669d[_0x9edb('0xe')]][_0x9edb('0x36')]=_0x4a669d[_0x9edb('0x36')];queues[_0x4a669d['uniqueid']][_0x9edb('0x37')]=_0x4a669d[_0x9edb('0x37')];queues[_0x4a669d['uniqueid']][_0x9edb('0x31')]=_0x4a669d['connectedlinename'];}}catch(_0x5095e8){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x38'),_0x4a669d[_0x9edb('0xe')]),_0x5095e8);}};exports[_0x9edb('0x39')]=function(_0x27c901){try{if(!_['isNil'](queues[_0x27c901[_0x9edb('0xe')]])){utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x3a'),_0x27c901['uniqueid']),_0x27c901);utils[_0x9edb('0x3')](util[_0x9edb('0x4')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x27c901[_0x9edb('0xe')],queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x1e')],_0x27c901[_0x9edb('0x3b')],_0x27c901[_0x9edb('0x3c')]));queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x27')]=![];queues[_0x27c901['uniqueid']][_0x9edb('0x27')]=![];queues[_0x27c901['uniqueid']]['queuecallerabandonAt']=null;queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x18')]=![];queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x1b')]=null;queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x2a')]=null;queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x3d')]=!![];queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x9')]=_0x27c901['destaccountcode'];queues[_0x27c901[_0x9edb('0xe')]][_0x9edb('0x7')]=_0x27c901[_0x9edb('0x3b')];}}catch(_0x276fd4){utils[_0x9edb('0x13')](util[_0x9edb('0x4')]('[%s][queues][agentconnect]',_0x27c901[_0x9edb('0xe')]),_0x276fd4);}};exports[_0x9edb('0x3e')]=function(_0x41b74d){try{if(!_[_0x9edb('0x14')](queues[_0x41b74d[_0x9edb('0xe')]])){if(queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x17')]){utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x3f'),_0x41b74d['uniqueid']),_0x41b74d);queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x27')]=![];queues[_0x41b74d['uniqueid']][_0x9edb('0x27')]=![];queues[_0x41b74d[_0x9edb('0xe')]]['queuecallerabandonAt']=null;queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x18')]=![];queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x2a')]=null;queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x3d')]=!![];queues[_0x41b74d[_0x9edb('0xe')]]['lastAssignedTo']=_0x41b74d[_0x9edb('0x3b')];queues[_0x41b74d['uniqueid']]['queuecallercomplete']=!![];queues[_0x41b74d['uniqueid']]['queuecallercompleteAt']=utils[_0x9edb('0x12')]();if(_0x41b74d[_0x9edb('0x40')]==_0x9edb('0x41')){if(!queues[_0x41b74d[_0x9edb('0xe')]]['transfer']){queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x1b')]=_0x9edb('0x42');}}else{queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x1b')]=_0x9edb('0x43')+_0x41b74d[_0x9edb('0x40')]['toUpperCase']();}utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x44'),_0x41b74d[_0x9edb('0xe')],queues[_0x41b74d['uniqueid']][_0x9edb('0x1e')],_0x41b74d[_0x9edb('0x3b')],queues[_0x41b74d[_0x9edb('0xe')]][_0x9edb('0x1b')]));writeDB(queues[_0x41b74d[_0x9edb('0xe')]]);}}}catch(_0x1bd4dd){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x3f'),_0x41b74d[_0x9edb('0xe')]),_0x1bd4dd);}};exports['blindtransfer']=function(_0x1c8d35){try{if(!_[_0x9edb('0x14')](queues[_0x1c8d35[_0x9edb('0x45')]])){utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x46'),_0x1c8d35[_0x9edb('0xe')]),_0x1c8d35);queues[_0x1c8d35[_0x9edb('0x45')]][_0x9edb('0x41')]=!![];queues[_0x1c8d35[_0x9edb('0x45')]]['transfertype']='BLIND';queues[_0x1c8d35[_0x9edb('0x45')]]['transferexten']=_0x1c8d35[_0x9edb('0x47')];queues[_0x1c8d35[_0x9edb('0x45')]]['transferuniqueid']=_0x1c8d35[_0x9edb('0x45')];queues[_0x1c8d35[_0x9edb('0x45')]][_0x9edb('0x1b')]=_0x9edb('0x48');utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x49'),_0x1c8d35[_0x9edb('0xe')],queues[_0x1c8d35[_0x9edb('0x45')]]['name'],_0x1c8d35['transfereeuniqueid'],_0x1c8d35['extension']));}}catch(_0x17959b){utils[_0x9edb('0x13')](util[_0x9edb('0x4')]('[%s][queues][blindtransfer]',_0x1c8d35[_0x9edb('0xe')]),_0x17959b);}};exports['attendedtransfer']=function(_0x36fd71){try{utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x4a'),_0x36fd71[_0x9edb('0x4b')]),_0x36fd71);if(_0x36fd71[_0x9edb('0x4b')]==_0x36fd71[_0x9edb('0x4c')]){if(!_[_0x9edb('0x14')](queues[_0x36fd71['secondtransfererlinkedid']])){utils['info'](util[_0x9edb('0x4')](_0x9edb('0x4d'),_0x36fd71[_0x9edb('0x4b')],queues[_0x36fd71[_0x9edb('0x4e')]]['name'],_0x36fd71[_0x9edb('0x4f')]));queues[_0x36fd71[_0x9edb('0x4e')]][_0x9edb('0x41')]=!![];queues[_0x36fd71[_0x9edb('0x4e')]][_0x9edb('0x50')]=_0x9edb('0x51');queues[_0x36fd71[_0x9edb('0x4e')]][_0x9edb('0x52')]=_0x36fd71[_0x9edb('0x4f')];queues[_0x36fd71['secondtransfererlinkedid']][_0x9edb('0x53')]=_0x36fd71[_0x9edb('0x4b')];queues[_0x36fd71[_0x9edb('0x4e')]][_0x9edb('0x1b')]=_0x9edb('0x54');}if(!_[_0x9edb('0x14')](queues[_0x36fd71[_0x9edb('0x4c')]])){if(_0x36fd71[_0x9edb('0x55')]&&queues[_0x36fd71[_0x9edb('0x55')]]){queues[_0x36fd71[_0x9edb('0x55')]][_0x9edb('0x20')]=0x1;queues[_0x36fd71[_0x9edb('0x45')]]=_[_0x9edb('0x56')](queues[_0x36fd71[_0x9edb('0x55')]]);queues[_0x36fd71[_0x9edb('0x45')]][_0x9edb('0xd')]=_0x36fd71[_0x9edb('0x57')];queues[_0x36fd71[_0x9edb('0x45')]][_0x9edb('0x20')]=0x2;queues[_0x36fd71[_0x9edb('0x45')]][_0x9edb('0x8')]=queues[_0x36fd71[_0x9edb('0x4e')]][_0x9edb('0x8')];queues[_0x36fd71[_0x9edb('0x45')]][_0x9edb('0x58')]=queues[_0x36fd71[_0x9edb('0x4e')]]['calleridname'];queues[_0x36fd71[_0x9edb('0x45')]]['queuecallerjoinAt']=utils[_0x9edb('0x12')]();queues[_0x36fd71['transfereeuniqueid']][_0x9edb('0x17')]=utils['now']();queues[_0x36fd71[_0x9edb('0x45')]][_0x9edb('0x32')]=0x0;queues[_0x36fd71['transfereeuniqueid']][_0x9edb('0x59')]=0x0;utils['info'](util[_0x9edb('0x4')](_0x9edb('0x5a'),_0x36fd71[_0x9edb('0x4b')],queues[_0x36fd71['transfereeuniqueid']][_0x9edb('0x1e')],queues[_0x36fd71['transfereeuniqueid']]['calleridnum'],queues[_0x36fd71[_0x9edb('0x45')]][_0x9edb('0x58')]));}else{utils[_0x9edb('0x3')](util['format'](_0x9edb('0x5b'),_0x36fd71[_0x9edb('0x4b')],queues[_0x36fd71[_0x9edb('0x4c')]]['name'],_0x36fd71[_0x9edb('0x4e')]));queues[_0x36fd71['origtransfererlinkedid']]['transfereduniqueid']=_0x36fd71[_0x9edb('0x4e')];}}}else if(_0x36fd71[_0x9edb('0x5c')]==_0x36fd71[_0x9edb('0x4e')]){if(!_[_0x9edb('0x14')](queues[_0x36fd71[_0x9edb('0x4c')]])){utils[_0x9edb('0x3')](util['format'](_0x9edb('0x5d'),_0x36fd71['origtransfereruniqueid'],queues[_0x36fd71['origtransfererlinkedid']][_0x9edb('0x1e')],_0x36fd71[_0x9edb('0x5c')],_0x36fd71['secondtransfererexten']));queues[_0x36fd71[_0x9edb('0x4c')]][_0x9edb('0x41')]=!![];queues[_0x36fd71[_0x9edb('0x4c')]][_0x9edb('0x50')]='ATTENDED';queues[_0x36fd71['origtransfererlinkedid']][_0x9edb('0x52')]=_0x36fd71['secondtransfererexten'];queues[_0x36fd71[_0x9edb('0x4c')]][_0x9edb('0x53')]=_0x36fd71[_0x9edb('0x5c')];queues[_0x36fd71[_0x9edb('0x4c')]][_0x9edb('0x1b')]='ATTENDEDTRANSFER';}if(!_['isNil'](queues[_0x36fd71['secondtransfererlinkedid']])){if(_0x36fd71[_0x9edb('0x5e')]&&queues[_0x36fd71[_0x9edb('0x5e')]]){queues[_0x36fd71[_0x9edb('0x5e')]][_0x9edb('0x20')]=0x1;queues[_0x36fd71['transfertargetuniqueid']]=_[_0x9edb('0x56')](queues[_0x36fd71[_0x9edb('0x5e')]]);queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0xd')]=_0x36fd71[_0x9edb('0x57')];queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x20')]=0x2;queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x8')]=queues[_0x36fd71[_0x9edb('0x4c')]][_0x9edb('0x8')];queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x58')]=queues[_0x36fd71[_0x9edb('0x4c')]]['calleridname'];queues[_0x36fd71['transfertargetuniqueid']][_0x9edb('0x34')]=utils[_0x9edb('0x12')]();queues[_0x36fd71['transfertargetuniqueid']][_0x9edb('0x17')]=utils[_0x9edb('0x12')]();queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x32')]=0x0;queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x59')]=0x0;utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x5f'),_0x36fd71[_0x9edb('0x4b')],queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x1e')],queues[_0x36fd71['transfertargetuniqueid']]['transfereduniqueid'],queues[_0x36fd71[_0x9edb('0x57')]]['calleridnum'],queues[_0x36fd71[_0x9edb('0x57')]][_0x9edb('0x58')]));}else{utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x5b'),_0x36fd71[_0x9edb('0x4b')],queues[_0x36fd71[_0x9edb('0x4e')]]['name'],_0x36fd71['origtransfererlinkedid']));queues[_0x36fd71['secondtransfererlinkedid']][_0x9edb('0xd')]=_0x36fd71[_0x9edb('0x4c')];}}}}catch(_0x17a8f1){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x4a'),_0x36fd71[_0x9edb('0x4b')]),_0x17a8f1);}};exports[_0x9edb('0x60')]=function(_0x7b28aa){try{if(!_['isNil'](queues[_0x7b28aa[_0x9edb('0xe')]])){utils[_0x9edb('0x15')](util[_0x9edb('0x4')]('[%s][queues][musiconholdstart]',_0x7b28aa[_0x9edb('0xe')]),_0x7b28aa);queues[_0x7b28aa[_0x9edb('0xe')]][_0x9edb('0x61')]=utils['now']();utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x62'),_0x7b28aa[_0x9edb('0xe')],queues[_0x7b28aa[_0x9edb('0xe')]][_0x9edb('0x1e')],queues[_0x7b28aa[_0x9edb('0xe')]][_0x9edb('0x61')]));}}catch(_0x32a7af){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x63'),_0x7b28aa[_0x9edb('0xe')]),_0x32a7af);}};exports['musiconholdstop']=function(_0x7a8d68){try{if(!_[_0x9edb('0x14')](queues[_0x7a8d68[_0x9edb('0xe')]])){if(!_[_0x9edb('0x14')](queues[_0x7a8d68['uniqueid']]['musiconholdstartAt'])){utils[_0x9edb('0x15')](util[_0x9edb('0x4')](_0x9edb('0x64'),_0x7a8d68[_0x9edb('0xe')]),_0x7a8d68);queues[_0x7a8d68[_0x9edb('0xe')]]['mohtime']+=utils[_0x9edb('0x33')](utils[_0x9edb('0x12')](),queues[_0x7a8d68[_0x9edb('0xe')]][_0x9edb('0x61')]);utils[_0x9edb('0x3')](util[_0x9edb('0x4')](_0x9edb('0x65'),_0x7a8d68[_0x9edb('0xe')],queues[_0x7a8d68[_0x9edb('0xe')]][_0x9edb('0x1e')],queues[_0x7a8d68['uniqueid']][_0x9edb('0x59')]));delete queues[_0x7a8d68['uniqueid']][_0x9edb('0x61')];}}}catch(_0x1089ec){utils[_0x9edb('0x13')](util[_0x9edb('0x4')](_0x9edb('0x64'),_0x7a8d68[_0x9edb('0xe')]),_0x1089ec);}};
\ No newline at end of file
+var _0xd80f=['holdtime','queuecallerjoinAt','count','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','accountcode','destaccountcode','agentcomplete','[%s][queues][agentcomplete]','assigned','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','transferexten','extension','BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDED','transferuniqueid','transfereelinkedid','clone','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','transfertargetuniqueid','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','musiconholdstop','diffTime','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','[%s][queues][musiconholdstop]','lodash','./utils','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','lastAssignedTo','calleridnum','queuecallerexitreason','queue','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','now','error','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','info','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','queuecallerenterreason','[%s][queues][varset]','variable','queuestatus','value','toUpperCase','CONTINUE','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','EXITWITHKEY','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','queuecallerleave'];(function(_0x48f62f,_0x585cf7){var _0x158dfb=function(_0x2df350){while(--_0x2df350){_0x48f62f['push'](_0x48f62f['shift']());}};_0x158dfb(++_0x585cf7);}(_0xd80f,0x105));var _0xfd80=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd80f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xfd80('0x0'));var util=require('util');var utils=require(_0xfd80('0x1'));var queues={};function writeDB(_0x58644c){utils['info'](util[_0xfd80('0x2')](_0xfd80('0x3'),_0x58644c[_0xfd80('0x4')],_0x58644c[_0xfd80('0x5')],_0x58644c['queue'],_0x58644c[_0xfd80('0x6')],_0x58644c[_0xfd80('0x7')],_0x58644c['accountcode'],_0x58644c[_0xfd80('0x8')]));if(_0x58644c[_0xfd80('0x9')]){utils[_0xfd80('0xa')](_0x58644c['queue'])[_0xfd80('0xb')](function(_0x444d35){if(_0x444d35){_0x58644c['type']=_0x444d35[_0xfd80('0xc')];}utils[_0xfd80('0xd')](_0xfd80('0xe'),_0x58644c);});}else{utils[_0xfd80('0xd')](_0xfd80('0xe'),_0x58644c);}if(_0x58644c[_0xfd80('0xf')]){delete queues[_0x58644c['transfereduniqueid']];}else{delete queues[_0x58644c[_0xfd80('0x4')]];}}exports[_0xfd80('0x10')]=function(_0x58954c){try{utils[_0xfd80('0x11')](util['format'](_0xfd80('0x12'),_0x58954c['uniqueid']),_0x58954c);utils['info'](util['format'](_0xfd80('0x13'),_0x58954c['uniqueid'],_0x58954c['queue'],_0x58954c[_0xfd80('0x14')]));queues[_0x58954c['uniqueid']]=_['assign'](_0x58954c,{'originalposition':_0x58954c[_0xfd80('0x14')],'queuecallerjoinAt':utils[_0xfd80('0x15')](),'mohtime':0x0});}catch(_0x553216){utils[_0xfd80('0x16')](util[_0xfd80('0x2')](_0xfd80('0x12'),_0x58954c['uniqueid']),_0x553216);}};exports[_0xfd80('0x17')]=function(_0x566eb4){try{if(!_[_0xfd80('0x18')](queues[_0x566eb4[_0xfd80('0x4')]])){utils[_0xfd80('0x11')](util[_0xfd80('0x2')](_0xfd80('0x19'),_0x566eb4['uniqueid']),_0x566eb4);if(queues[_0x566eb4[_0xfd80('0x4')]][_0xfd80('0x1a')]){if(!queues[_0x566eb4[_0xfd80('0x4')]][_0xfd80('0x1b')]&&!queues[_0x566eb4[_0xfd80('0x4')]][_0xfd80('0x1c')]){queues[_0x566eb4[_0xfd80('0x4')]][_0xfd80('0x1d')]=!![];queues[_0x566eb4[_0xfd80('0x4')]][_0xfd80('0x1e')]=utils[_0xfd80('0x15')]();queues[_0x566eb4['uniqueid']][_0xfd80('0x8')]=_0xfd80('0x1f');}utils[_0xfd80('0x20')](util[_0xfd80('0x2')](_0xfd80('0x21'),_0x566eb4[_0xfd80('0x4')],queues[_0x566eb4['uniqueid']]['name'],queues[_0x566eb4[_0xfd80('0x4')]]['queuecallerexitreason']));writeDB(queues[_0x566eb4['uniqueid']]);}else if(queues[_0x566eb4[_0xfd80('0x4')]][_0xfd80('0xf')]){utils[_0xfd80('0x20')](util[_0xfd80('0x2')](_0xfd80('0x22'),_0x566eb4[_0xfd80('0x4')],queues[_0x566eb4[_0xfd80('0x4')]][_0xfd80('0x23')],queues[_0x566eb4[_0xfd80('0x4')]][_0xfd80('0xf')]));queues[queues[_0x566eb4[_0xfd80('0x4')]]['transfereduniqueid']]=queues[_0x566eb4[_0xfd80('0x4')]];queues[queues[_0x566eb4[_0xfd80('0x4')]][_0xfd80('0xf')]][_0xfd80('0x24')]=0x2;delete queues[_0x566eb4[_0xfd80('0x4')]];}}}catch(_0x531e94){utils[_0xfd80('0x16')](util['format']('[%s][queues][hangup]',_0x566eb4[_0xfd80('0x4')]),_0x531e94);}};exports['varset']=function(_0x503a3b){try{utils[_0xfd80('0x11')](util[_0xfd80('0x2')](_0xfd80('0x25'),_0x503a3b['uniqueid']),_0x503a3b);if(!_[_0xfd80('0x18')](_0x503a3b[_0xfd80('0x26')][_0xfd80('0x27')])&&_0x503a3b[_0xfd80('0x28')][_0xfd80('0x29')]()!==_0xfd80('0x2a')){if(!_['isNil'](queues[_0x503a3b[_0xfd80('0x4')]])){queues[_0x503a3b['uniqueid']][_0xfd80('0x1b')]=![];queues[_0x503a3b[_0xfd80('0x4')]][_0xfd80('0x2b')]=null;queues[_0x503a3b['uniqueid']][_0xfd80('0x1c')]=!![];queues[_0x503a3b['uniqueid']][_0xfd80('0x2c')]=utils[_0xfd80('0x15')]();queues[_0x503a3b[_0xfd80('0x4')]][_0xfd80('0x8')]=_0x503a3b[_0xfd80('0x28')][_0xfd80('0x29')]();utils[_0xfd80('0x20')](util[_0xfd80('0x2')](_0xfd80('0x2d'),_0x503a3b[_0xfd80('0x4')],queues[_0x503a3b[_0xfd80('0x4')]][_0xfd80('0x23')],_0x503a3b[_0xfd80('0x28')],queues[_0x503a3b['uniqueid']][_0xfd80('0x8')]));writeDB(queues[_0x503a3b['uniqueid']]);}}else if(!_['isNil'](_0x503a3b[_0xfd80('0x26')]['queueposition'])){if(!_[_0xfd80('0x18')](queues[_0x503a3b[_0xfd80('0x4')]])&&!queues[_0x503a3b[_0xfd80('0x4')]][_0xfd80('0x1b')]){queues[_0x503a3b[_0xfd80('0x4')]][_0xfd80('0x1b')]=![];queues[_0x503a3b[_0xfd80('0x4')]][_0xfd80('0x2b')]=null;queues[_0x503a3b[_0xfd80('0x4')]][_0xfd80('0x1c')]=!![];queues[_0x503a3b[_0xfd80('0x4')]][_0xfd80('0x2c')]=utils[_0xfd80('0x15')]();queues[_0x503a3b[_0xfd80('0x4')]]['queuecallerexitreason']=_0xfd80('0x2e');utils[_0xfd80('0x20')](util[_0xfd80('0x2')]('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x503a3b['uniqueid'],queues[_0x503a3b[_0xfd80('0x4')]][_0xfd80('0x23')],_0x503a3b['value'],queues[_0x503a3b[_0xfd80('0x4')]][_0xfd80('0x8')]));}}}catch(_0x461ef8){utils[_0xfd80('0x16')](util[_0xfd80('0x2')](_0xfd80('0x25'),_0x503a3b[_0xfd80('0x4')]),_0x461ef8);}};exports[_0xfd80('0x1b')]=function(_0x394e1b){try{if(!_[_0xfd80('0x18')](queues[_0x394e1b[_0xfd80('0x4')]])){utils[_0xfd80('0x11')](util[_0xfd80('0x2')](_0xfd80('0x2f'),_0x394e1b[_0xfd80('0x4')]),_0x394e1b);queues[_0x394e1b[_0xfd80('0x4')]][_0xfd80('0x1c')]=![];queues[_0x394e1b[_0xfd80('0x4')]][_0xfd80('0x2c')]=null;queues[_0x394e1b['uniqueid']]['queuecallerabandon']=!![];queues[_0x394e1b[_0xfd80('0x4')]][_0xfd80('0x2b')]=utils['now']();queues[_0x394e1b[_0xfd80('0x4')]][_0xfd80('0x8')]='ABANDONED';utils[_0xfd80('0x20')](util[_0xfd80('0x2')](_0xfd80('0x30'),_0x394e1b[_0xfd80('0x4')],queues[_0x394e1b['uniqueid']]['name'],queues[_0x394e1b[_0xfd80('0x4')]][_0xfd80('0x8')]));}}catch(_0x29d838){utils[_0xfd80('0x16')](util[_0xfd80('0x2')](_0xfd80('0x2f'),_0x394e1b[_0xfd80('0x4')]),_0x29d838);}};exports['queuecallerleave']=function(_0x4a9485){try{if(!_[_0xfd80('0x18')](queues[_0x4a9485[_0xfd80('0x4')]])){utils[_0xfd80('0x11')](util['format'](_0xfd80('0x31'),_0x4a9485['uniqueid']),_0x4a9485);utils[_0xfd80('0x20')](util[_0xfd80('0x2')](_0xfd80('0x32'),_0x4a9485[_0xfd80('0x4')],queues[_0x4a9485[_0xfd80('0x4')]][_0xfd80('0x23')],_0x4a9485[_0xfd80('0x33')],_0x4a9485[_0xfd80('0x34')]));queues[_0x4a9485[_0xfd80('0x4')]][_0xfd80('0x35')]=!![];queues[_0x4a9485['uniqueid']][_0xfd80('0x1a')]=utils[_0xfd80('0x15')]();queues[_0x4a9485[_0xfd80('0x4')]][_0xfd80('0x36')]=utils['diffTime'](queues[_0x4a9485['uniqueid']][_0xfd80('0x1a')],queues[_0x4a9485['uniqueid']][_0xfd80('0x37')]);queues[_0x4a9485['uniqueid']][_0xfd80('0x14')]=_0x4a9485['position'];queues[_0x4a9485[_0xfd80('0x4')]][_0xfd80('0x38')]=_0x4a9485[_0xfd80('0x38')];queues[_0x4a9485[_0xfd80('0x4')]]['connectedlinenum']=_0x4a9485[_0xfd80('0x33')];queues[_0x4a9485[_0xfd80('0x4')]]['connectedlinename']=_0x4a9485[_0xfd80('0x34')];}}catch(_0x1ba298){utils[_0xfd80('0x16')](util['format'](_0xfd80('0x31'),_0x4a9485['uniqueid']),_0x1ba298);}};exports[_0xfd80('0x39')]=function(_0x4e9c8d){try{if(!_[_0xfd80('0x18')](queues[_0x4e9c8d[_0xfd80('0x4')]])){utils[_0xfd80('0x11')](util[_0xfd80('0x2')](_0xfd80('0x3a'),_0x4e9c8d[_0xfd80('0x4')]),_0x4e9c8d);utils[_0xfd80('0x20')](util[_0xfd80('0x2')](_0xfd80('0x3b'),_0x4e9c8d[_0xfd80('0x4')],queues[_0x4e9c8d[_0xfd80('0x4')]][_0xfd80('0x23')],_0x4e9c8d[_0xfd80('0x3c')],_0x4e9c8d['destaccountcode']));queues[_0x4e9c8d[_0xfd80('0x4')]][_0xfd80('0x1b')]=![];queues[_0x4e9c8d[_0xfd80('0x4')]][_0xfd80('0x1b')]=![];queues[_0x4e9c8d[_0xfd80('0x4')]][_0xfd80('0x2b')]=null;queues[_0x4e9c8d[_0xfd80('0x4')]]['queuecallerexit']=![];queues[_0x4e9c8d[_0xfd80('0x4')]]['queuecallerexitreason']=null;queues[_0x4e9c8d[_0xfd80('0x4')]][_0xfd80('0x2c')]=null;queues[_0x4e9c8d[_0xfd80('0x4')]]['assigned']=!![];queues[_0x4e9c8d[_0xfd80('0x4')]][_0xfd80('0x3d')]=_0x4e9c8d[_0xfd80('0x3e')];queues[_0x4e9c8d[_0xfd80('0x4')]][_0xfd80('0x6')]=_0x4e9c8d[_0xfd80('0x3c')];}}catch(_0x1ac691){utils[_0xfd80('0x16')](util[_0xfd80('0x2')](_0xfd80('0x3a'),_0x4e9c8d[_0xfd80('0x4')]),_0x1ac691);}};exports[_0xfd80('0x3f')]=function(_0x4ecd93){try{if(!_[_0xfd80('0x18')](queues[_0x4ecd93[_0xfd80('0x4')]])){if(queues[_0x4ecd93[_0xfd80('0x4')]][_0xfd80('0x1a')]){utils['debug'](util['format'](_0xfd80('0x40'),_0x4ecd93[_0xfd80('0x4')]),_0x4ecd93);queues[_0x4ecd93[_0xfd80('0x4')]][_0xfd80('0x1b')]=![];queues[_0x4ecd93[_0xfd80('0x4')]]['queuecallerabandon']=![];queues[_0x4ecd93[_0xfd80('0x4')]][_0xfd80('0x2b')]=null;queues[_0x4ecd93[_0xfd80('0x4')]][_0xfd80('0x1c')]=![];queues[_0x4ecd93['uniqueid']][_0xfd80('0x2c')]=null;queues[_0x4ecd93[_0xfd80('0x4')]][_0xfd80('0x41')]=!![];queues[_0x4ecd93[_0xfd80('0x4')]][_0xfd80('0x6')]=_0x4ecd93['membername'];queues[_0x4ecd93['uniqueid']][_0xfd80('0x1d')]=!![];queues[_0x4ecd93[_0xfd80('0x4')]][_0xfd80('0x1e')]=utils[_0xfd80('0x15')]();if(_0x4ecd93[_0xfd80('0x42')]==_0xfd80('0x43')){if(!queues[_0x4ecd93[_0xfd80('0x4')]][_0xfd80('0x43')]){queues[_0x4ecd93['uniqueid']][_0xfd80('0x8')]=_0xfd80('0x44');}}else{queues[_0x4ecd93[_0xfd80('0x4')]][_0xfd80('0x8')]=_0xfd80('0x45')+_0x4ecd93['reason'][_0xfd80('0x29')]();}utils[_0xfd80('0x20')](util[_0xfd80('0x2')](_0xfd80('0x46'),_0x4ecd93[_0xfd80('0x4')],queues[_0x4ecd93[_0xfd80('0x4')]][_0xfd80('0x23')],_0x4ecd93[_0xfd80('0x3c')],queues[_0x4ecd93['uniqueid']][_0xfd80('0x8')]));writeDB(queues[_0x4ecd93[_0xfd80('0x4')]]);}}}catch(_0x272c59){utils['error'](util[_0xfd80('0x2')](_0xfd80('0x40'),_0x4ecd93['uniqueid']),_0x272c59);}};exports[_0xfd80('0x47')]=function(_0x368df0){try{if(!_[_0xfd80('0x18')](queues[_0x368df0['transfereeuniqueid']])){utils[_0xfd80('0x11')](util[_0xfd80('0x2')](_0xfd80('0x48'),_0x368df0[_0xfd80('0x4')]),_0x368df0);queues[_0x368df0[_0xfd80('0x49')]][_0xfd80('0x43')]=!![];queues[_0x368df0['transfereeuniqueid']][_0xfd80('0x4a')]=_0xfd80('0x4b');queues[_0x368df0[_0xfd80('0x49')]][_0xfd80('0x4c')]=_0x368df0[_0xfd80('0x4d')];queues[_0x368df0[_0xfd80('0x49')]]['transferuniqueid']=_0x368df0['transfereeuniqueid'];queues[_0x368df0['transfereeuniqueid']][_0xfd80('0x8')]=_0xfd80('0x4e');utils[_0xfd80('0x20')](util[_0xfd80('0x2')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x368df0[_0xfd80('0x4')],queues[_0x368df0[_0xfd80('0x49')]]['name'],_0x368df0['transfereeuniqueid'],_0x368df0['extension']));}}catch(_0x4a527d){utils[_0xfd80('0x16')](util['format'](_0xfd80('0x48'),_0x368df0[_0xfd80('0x4')]),_0x4a527d);}};exports[_0xfd80('0x4f')]=function(_0x385319){try{utils[_0xfd80('0x11')](util[_0xfd80('0x2')](_0xfd80('0x50'),_0x385319[_0xfd80('0x51')]),_0x385319);if(_0x385319[_0xfd80('0x51')]==_0x385319[_0xfd80('0x52')]){if(!_[_0xfd80('0x18')](queues[_0x385319[_0xfd80('0x53')]])){utils[_0xfd80('0x20')](util[_0xfd80('0x2')](_0xfd80('0x54'),_0x385319['origtransfereruniqueid'],queues[_0x385319['secondtransfererlinkedid']][_0xfd80('0x23')],_0x385319[_0xfd80('0x55')]));queues[_0x385319[_0xfd80('0x53')]][_0xfd80('0x43')]=!![];queues[_0x385319[_0xfd80('0x53')]][_0xfd80('0x4a')]=_0xfd80('0x56');queues[_0x385319['secondtransfererlinkedid']][_0xfd80('0x4c')]=_0x385319['origtransfererexten'];queues[_0x385319['secondtransfererlinkedid']][_0xfd80('0x57')]=_0x385319[_0xfd80('0x51')];queues[_0x385319[_0xfd80('0x53')]]['queuecallerexitreason']='ATTENDEDTRANSFER';}if(!_[_0xfd80('0x18')](queues[_0x385319['origtransfererlinkedid']])){if(_0x385319[_0xfd80('0x58')]&&queues[_0x385319[_0xfd80('0x58')]]){queues[_0x385319[_0xfd80('0x58')]][_0xfd80('0x24')]=0x1;queues[_0x385319[_0xfd80('0x49')]]=_[_0xfd80('0x59')](queues[_0x385319[_0xfd80('0x58')]]);queues[_0x385319[_0xfd80('0x49')]]['transfereduniqueid']=_0x385319['transfertargetuniqueid'];queues[_0x385319[_0xfd80('0x49')]][_0xfd80('0x24')]=0x2;queues[_0x385319['transfereeuniqueid']][_0xfd80('0x7')]=queues[_0x385319[_0xfd80('0x53')]][_0xfd80('0x7')];queues[_0x385319['transfereeuniqueid']][_0xfd80('0x5a')]=queues[_0x385319[_0xfd80('0x53')]][_0xfd80('0x5a')];queues[_0x385319[_0xfd80('0x49')]][_0xfd80('0x37')]=utils['now']();queues[_0x385319[_0xfd80('0x49')]][_0xfd80('0x1a')]=utils[_0xfd80('0x15')]();queues[_0x385319[_0xfd80('0x49')]][_0xfd80('0x36')]=0x0;queues[_0x385319[_0xfd80('0x49')]][_0xfd80('0x5b')]=0x0;utils[_0xfd80('0x20')](util[_0xfd80('0x2')](_0xfd80('0x5c'),_0x385319[_0xfd80('0x51')],queues[_0x385319[_0xfd80('0x49')]][_0xfd80('0x23')],queues[_0x385319[_0xfd80('0x49')]][_0xfd80('0x7')],queues[_0x385319[_0xfd80('0x49')]][_0xfd80('0x5a')]));}else{utils[_0xfd80('0x20')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x385319['origtransfereruniqueid'],queues[_0x385319['origtransfererlinkedid']]['name'],_0x385319[_0xfd80('0x53')]));queues[_0x385319['origtransfererlinkedid']][_0xfd80('0xf')]=_0x385319[_0xfd80('0x53')];}}}else if(_0x385319['secondtransfereruniqueid']==_0x385319['secondtransfererlinkedid']){if(!_[_0xfd80('0x18')](queues[_0x385319[_0xfd80('0x52')]])){utils[_0xfd80('0x20')](util['format'](_0xfd80('0x5d'),_0x385319['origtransfereruniqueid'],queues[_0x385319[_0xfd80('0x52')]]['name'],_0x385319[_0xfd80('0x5e')],_0x385319[_0xfd80('0x5f')]));queues[_0x385319['origtransfererlinkedid']][_0xfd80('0x43')]=!![];queues[_0x385319['origtransfererlinkedid']]['transfertype']=_0xfd80('0x56');queues[_0x385319['origtransfererlinkedid']]['transferexten']=_0x385319[_0xfd80('0x5f')];queues[_0x385319[_0xfd80('0x52')]]['transferuniqueid']=_0x385319[_0xfd80('0x5e')];queues[_0x385319[_0xfd80('0x52')]][_0xfd80('0x8')]='ATTENDEDTRANSFER';}if(!_[_0xfd80('0x18')](queues[_0x385319['secondtransfererlinkedid']])){if(_0x385319[_0xfd80('0x60')]&&queues[_0x385319[_0xfd80('0x60')]]){queues[_0x385319[_0xfd80('0x60')]][_0xfd80('0x24')]=0x1;queues[_0x385319['transfertargetuniqueid']]=_[_0xfd80('0x59')](queues[_0x385319[_0xfd80('0x60')]]);queues[_0x385319[_0xfd80('0x61')]]['transfereduniqueid']=_0x385319[_0xfd80('0x61')];queues[_0x385319[_0xfd80('0x61')]][_0xfd80('0x24')]=0x2;queues[_0x385319['transfertargetuniqueid']][_0xfd80('0x7')]=queues[_0x385319[_0xfd80('0x52')]][_0xfd80('0x7')];queues[_0x385319[_0xfd80('0x61')]][_0xfd80('0x5a')]=queues[_0x385319[_0xfd80('0x52')]]['calleridname'];queues[_0x385319[_0xfd80('0x61')]]['queuecallerjoinAt']=utils[_0xfd80('0x15')]();queues[_0x385319['transfertargetuniqueid']][_0xfd80('0x1a')]=utils['now']();queues[_0x385319[_0xfd80('0x61')]][_0xfd80('0x36')]=0x0;queues[_0x385319[_0xfd80('0x61')]][_0xfd80('0x5b')]=0x0;utils[_0xfd80('0x20')](util[_0xfd80('0x2')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x385319[_0xfd80('0x51')],queues[_0x385319['transfertargetuniqueid']][_0xfd80('0x23')],queues[_0x385319[_0xfd80('0x61')]][_0xfd80('0xf')],queues[_0x385319['transfertargetuniqueid']][_0xfd80('0x7')],queues[_0x385319[_0xfd80('0x61')]][_0xfd80('0x5a')]));}else{utils[_0xfd80('0x20')](util[_0xfd80('0x2')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x385319[_0xfd80('0x51')],queues[_0x385319['secondtransfererlinkedid']]['name'],_0x385319['origtransfererlinkedid']));queues[_0x385319[_0xfd80('0x53')]]['transfereduniqueid']=_0x385319[_0xfd80('0x52')];}}}}catch(_0x1debb0){utils[_0xfd80('0x16')](util['format'](_0xfd80('0x50'),_0x385319[_0xfd80('0x51')]),_0x1debb0);}};exports[_0xfd80('0x62')]=function(_0xeb4c10){try{if(!_['isNil'](queues[_0xeb4c10[_0xfd80('0x4')]])){utils[_0xfd80('0x11')](util['format'](_0xfd80('0x63'),_0xeb4c10[_0xfd80('0x4')]),_0xeb4c10);queues[_0xeb4c10['uniqueid']][_0xfd80('0x64')]=utils[_0xfd80('0x15')]();utils['info'](util[_0xfd80('0x2')]('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0xeb4c10[_0xfd80('0x4')],queues[_0xeb4c10[_0xfd80('0x4')]][_0xfd80('0x23')],queues[_0xeb4c10[_0xfd80('0x4')]]['musiconholdstartAt']));}}catch(_0x50ec1f){utils[_0xfd80('0x16')](util[_0xfd80('0x2')](_0xfd80('0x63'),_0xeb4c10[_0xfd80('0x4')]),_0x50ec1f);}};exports[_0xfd80('0x65')]=function(_0x3aaf81){try{if(!_[_0xfd80('0x18')](queues[_0x3aaf81['uniqueid']])){if(!_[_0xfd80('0x18')](queues[_0x3aaf81[_0xfd80('0x4')]][_0xfd80('0x64')])){utils[_0xfd80('0x11')](util['format']('[%s][queues][musiconholdstop]',_0x3aaf81['uniqueid']),_0x3aaf81);queues[_0x3aaf81['uniqueid']][_0xfd80('0x5b')]+=utils[_0xfd80('0x66')](utils[_0xfd80('0x15')](),queues[_0x3aaf81[_0xfd80('0x4')]][_0xfd80('0x64')]);utils['info'](util['format'](_0xfd80('0x67'),_0x3aaf81[_0xfd80('0x4')],queues[_0x3aaf81['uniqueid']][_0xfd80('0x23')],queues[_0x3aaf81[_0xfd80('0x4')]][_0xfd80('0x5b')]));delete queues[_0x3aaf81['uniqueid']][_0xfd80('0x64')];}}}catch(_0x452e84){utils[_0xfd80('0x16')](util[_0xfd80('0x2')](_0xfd80('0x68'),_0x3aaf81[_0xfd80('0x4')]),_0x452e84);}};
\ No newline at end of file
index 35508bd..fb8b386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8d0=['replace','find','monitors','push','[%s][recordings][hangup]','calleridname','cause-txt','calleridnum','connectedlinenum','connectedlinename','type','outbound','forEach','application','appdata','set','toLowerCase','cdr','lastIndexOf','[%s][recordings][newexten]','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','lodash','util','./utils','info','format','[%s][recordings][writeDB]','uniqueid','accountcode','then','membername','UserId','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','newstate','[%s][recordings][newstate]','isNil','channelstate','linkedid','transfer','error','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','endsWith','value','.wav49'];(function(_0x361800,_0x56ff01){var _0x54675a=function(_0x5b6cee){while(--_0x5b6cee){_0x361800['push'](_0x361800['shift']());}};_0x54675a(++_0x56ff01);}(_0xd8d0,0x12f));var _0x0d8d=function(_0x2aa0e7,_0x4e5145){_0x2aa0e7=_0x2aa0e7-0x0;var _0x1472c0=_0xd8d0[_0x2aa0e7];return _0x1472c0;};'use strict';var _=require(_0x0d8d('0x0'));var util=require(_0x0d8d('0x1'));var utils=require(_0x0d8d('0x2'));var recordings={};function writeDB(_0x20d487){utils[_0x0d8d('0x3')](util[_0x0d8d('0x4')](_0x0d8d('0x5'),_0x20d487[_0x0d8d('0x6')]));if(_0x20d487[_0x0d8d('0x7')]){utils['getUserByInternal'](_0x20d487[_0x0d8d('0x7')])[_0x0d8d('0x8')](function(_0x1e1210){if(_0x1e1210){_0x20d487[_0x0d8d('0x9')]=_0x1e1210['name'];_0x20d487[_0x0d8d('0xa')]=_0x1e1210['id'];}utils[_0x0d8d('0xb')](_0x0d8d('0xc'),_0x20d487);});}else{utils['request'](_0x0d8d('0xc'),_0x20d487);}}exports[_0x0d8d('0xd')]=function(_0x759d95){try{utils[_0x0d8d('0xe')](util['format']('[%s][recordings][newchannel]',_0x759d95[_0x0d8d('0x6')]),_0x759d95);if(_0x759d95[_0x0d8d('0x6')]==_0x759d95['linkedid']){utils[_0x0d8d('0x3')](util[_0x0d8d('0x4')](_0x0d8d('0xf'),_0x759d95[_0x0d8d('0x6')],_0x759d95[_0x0d8d('0x10')],_0x759d95[_0x0d8d('0x11')]));recordings[_0x759d95[_0x0d8d('0x6')]]={'uniqueid':_0x759d95[_0x0d8d('0x6')],'accountcode':_0x759d95[_0x0d8d('0x7')],'exten':_0x759d95[_0x0d8d('0x11')],'context':_0x759d95['context'],'channel':_0x759d95[_0x0d8d('0x12')],'monitors':[]};}}catch(_0x2bb763){utils['error'](util[_0x0d8d('0x4')]('[%s][recordings][newchannel]',_0x759d95[_0x0d8d('0x6')]),_0x2bb763);}};exports[_0x0d8d('0x13')]=function(_0x40c910){try{utils['debug'](util['format'](_0x0d8d('0x14'),_0x40c910[_0x0d8d('0x6')]),_0x40c910);if(!_[_0x0d8d('0x15')](recordings[_0x40c910[_0x0d8d('0x6')]])&&_0x40c910[_0x0d8d('0x16')]==0x6){utils[_0x0d8d('0x3')](util[_0x0d8d('0x4')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x40c910[_0x0d8d('0x6')],_0x40c910['context'],_0x40c910[_0x0d8d('0x12')]));}else if(!_[_0x0d8d('0x15')](recordings[_0x40c910[_0x0d8d('0x17')]])&&_0x40c910[_0x0d8d('0x16')]==0x6&&_0x40c910[_0x0d8d('0x10')]!=_0x0d8d('0x18')){utils['info'](util[_0x0d8d('0x4')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x40c910[_0x0d8d('0x6')],_0x40c910['linkedid'],_0x40c910['context'],_0x40c910['channel']));recordings[_0x40c910[_0x0d8d('0x17')]][_0x0d8d('0x7')]=_0x40c910['accountcode'];}}catch(_0x2c1e11){utils[_0x0d8d('0x19')](util[_0x0d8d('0x4')]('[%s][recordings][newstate]',_0x40c910[_0x0d8d('0x6')]),_0x2c1e11);}};exports['varset']=function(_0x30b814){try{if(!_[_0x0d8d('0x15')](_0x30b814[_0x0d8d('0x1a')])&&!_['isNil'](_0x30b814[_0x0d8d('0x1a')][_0x0d8d('0x1b')])){utils[_0x0d8d('0xe')](util[_0x0d8d('0x4')](_0x0d8d('0x1c'),_0x30b814[_0x0d8d('0x6')]),_0x30b814);utils[_0x0d8d('0x3')](util['format'](_0x0d8d('0x1d'),_0x30b814['uniqueid'],_0x30b814[_0x0d8d('0x1a')],_0x30b814['value']));if(_[_0x0d8d('0x1e')](_0x30b814[_0x0d8d('0x1f')],_0x0d8d('0x20'))){_0x30b814['value']=_0x30b814[_0x0d8d('0x1f')][_0x0d8d('0x21')](_0x0d8d('0x20'),'.WAV');}if(recordings[_0x30b814[_0x0d8d('0x17')]]){var _0x128e9b=_[_0x0d8d('0x22')](recordings[_0x30b814[_0x0d8d('0x17')]][_0x0d8d('0x23')],{'value':_0x30b814['value']});if(_['isNil'](_0x128e9b)){recordings[_0x30b814[_0x0d8d('0x17')]][_0x0d8d('0x23')][_0x0d8d('0x24')]({'value':_0x30b814[_0x0d8d('0x1f')]});}}}}catch(_0x30b409){utils['error'](util['format'](_0x0d8d('0x1c'),_0x30b814[_0x0d8d('0x6')]),_0x30b409);}};exports['hangup']=function(_0x2c67b0){try{if(!_['isNil'](recordings[_0x2c67b0[_0x0d8d('0x6')]])){utils[_0x0d8d('0xe')](util[_0x0d8d('0x4')](_0x0d8d('0x25'),_0x2c67b0['uniqueid']),_0x2c67b0);utils[_0x0d8d('0x3')](util['format']('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x2c67b0[_0x0d8d('0x6')],_0x2c67b0['calleridnum'],_0x2c67b0[_0x0d8d('0x26')],_0x2c67b0[_0x0d8d('0x27')]));recordings[_0x2c67b0['uniqueid']][_0x0d8d('0x28')]=_0x2c67b0['calleridnum'];recordings[_0x2c67b0[_0x0d8d('0x6')]][_0x0d8d('0x26')]=_0x2c67b0[_0x0d8d('0x26')];recordings[_0x2c67b0[_0x0d8d('0x6')]][_0x0d8d('0x29')]=_0x2c67b0[_0x0d8d('0x29')];recordings[_0x2c67b0[_0x0d8d('0x6')]][_0x0d8d('0x2a')]=_0x2c67b0[_0x0d8d('0x2a')];if(recordings[_0x2c67b0[_0x0d8d('0x6')]][_0x0d8d('0x2b')]==_0x0d8d('0x2c')&&recordings[_0x2c67b0[_0x0d8d('0x6')]][_0x0d8d('0x7')]){recordings[_0x2c67b0[_0x0d8d('0x6')]][_0x0d8d('0x29')]=recordings[_0x2c67b0['uniqueid']]['accountcode'];recordings[_0x2c67b0[_0x0d8d('0x6')]]['connectedlinename']='';}recordings[_0x2c67b0['uniqueid']]['monitors'][_0x0d8d('0x2d')](function(_0x535185){var _0x3ac38c=_['clone'](recordings[_0x2c67b0['uniqueid']]);_0x3ac38c['value']=_0x535185['value'];writeDB(_0x3ac38c);});delete recordings[_0x2c67b0['uniqueid']];}}catch(_0x2836b4){utils['error'](util['format'](_0x0d8d('0x25'),_0x2c67b0[_0x0d8d('0x6')]),_0x2836b4);}};exports['newexten']=function(_0x30e49c){try{if(!_[_0x0d8d('0x15')](recordings[_0x30e49c[_0x0d8d('0x6')]])){utils[_0x0d8d('0xe')](util[_0x0d8d('0x4')]('[%s][recordings][newexten]',_0x30e49c[_0x0d8d('0x6')]),_0x30e49c);utils[_0x0d8d('0x3')](util[_0x0d8d('0x4')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x30e49c[_0x0d8d('0x6')],_0x30e49c[_0x0d8d('0x2e')],_0x30e49c[_0x0d8d('0x2f')]));if(_0x30e49c[_0x0d8d('0x2e')]['toLowerCase']()==_0x0d8d('0x30')&&_['startsWith'](_0x30e49c['appdata'][_0x0d8d('0x31')](),_0x0d8d('0x32'))){var _0x2bd063=_0x30e49c[_0x0d8d('0x2f')]['split']('=');var _0x4e4ad4=_0x2bd063[0x0]['substring'](_0x2bd063[0x0][_0x0d8d('0x33')]('(')+0x1,_0x2bd063[0x0][_0x0d8d('0x33')](')'));var _0x1c4b8d=_0x2bd063[0x1];recordings[_0x30e49c[_0x0d8d('0x6')]][_0x4e4ad4]=_0x1c4b8d;}}}catch(_0x59826b){utils[_0x0d8d('0x19')](util[_0x0d8d('0x4')](_0x0d8d('0x34'),_0x30e49c[_0x0d8d('0x6')]),_0x59826b);}};exports[_0x0d8d('0x35')]=function(_0x2d1bf4){try{if(!_[_0x0d8d('0x15')](recordings[_0x2d1bf4['uniqueid']])){utils[_0x0d8d('0xe')](util[_0x0d8d('0x4')](_0x0d8d('0x36'),_0x2d1bf4['uniqueid']),_0x2d1bf4);utils['info'](util[_0x0d8d('0x4')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x2d1bf4[_0x0d8d('0x6')],_0x2d1bf4['queue']));recordings[_0x2d1bf4[_0x0d8d('0x6')]][_0x0d8d('0x37')]=_0x2d1bf4[_0x0d8d('0x37')];}}catch(_0x2f39c7){utils['error'](util[_0x0d8d('0x4')]('[%s][recordings][queuecallerjoin]',_0x2d1bf4['uniqueid']),_0x2f39c7);}};
\ No newline at end of file
+var _0xcbef=['appdata','application','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','lodash','util','./utils','[%s][recordings][writeDB]','uniqueid','accountcode','membername','name','UserId','request','CreateVoiceRecording','newchannel','debug','format','[%s][recordings][newchannel]','linkedid','info','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','newstate','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','variable','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','.wav49','replace','.WAV','find','push','[%s][recordings][varset]','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridname','cause-txt','calleridnum','connectedlinenum','connectedlinename','type','outbound','forEach','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xcbef,0xca));var _0xfcbe=function(_0xa3da82,_0x3be0c4){_0xa3da82=_0xa3da82-0x0;var _0x55a74=_0xcbef[_0xa3da82];return _0x55a74;};'use strict';var _=require(_0xfcbe('0x0'));var util=require(_0xfcbe('0x1'));var utils=require(_0xfcbe('0x2'));var recordings={};function writeDB(_0x26a095){utils['info'](util['format'](_0xfcbe('0x3'),_0x26a095[_0xfcbe('0x4')]));if(_0x26a095['accountcode']){utils['getUserByInternal'](_0x26a095[_0xfcbe('0x5')])['then'](function(_0x2a3fe1){if(_0x2a3fe1){_0x26a095[_0xfcbe('0x6')]=_0x2a3fe1[_0xfcbe('0x7')];_0x26a095[_0xfcbe('0x8')]=_0x2a3fe1['id'];}utils[_0xfcbe('0x9')]('CreateVoiceRecording',_0x26a095);});}else{utils[_0xfcbe('0x9')](_0xfcbe('0xa'),_0x26a095);}}exports[_0xfcbe('0xb')]=function(_0x3f5f13){try{utils[_0xfcbe('0xc')](util[_0xfcbe('0xd')](_0xfcbe('0xe'),_0x3f5f13[_0xfcbe('0x4')]),_0x3f5f13);if(_0x3f5f13[_0xfcbe('0x4')]==_0x3f5f13[_0xfcbe('0xf')]){utils[_0xfcbe('0x10')](util[_0xfcbe('0xd')](_0xfcbe('0x11'),_0x3f5f13[_0xfcbe('0x4')],_0x3f5f13[_0xfcbe('0x12')],_0x3f5f13[_0xfcbe('0x13')]));recordings[_0x3f5f13['uniqueid']]={'uniqueid':_0x3f5f13[_0xfcbe('0x4')],'accountcode':_0x3f5f13[_0xfcbe('0x5')],'exten':_0x3f5f13[_0xfcbe('0x13')],'context':_0x3f5f13[_0xfcbe('0x12')],'channel':_0x3f5f13[_0xfcbe('0x14')],'monitors':[]};}}catch(_0x547c21){utils[_0xfcbe('0x15')](util[_0xfcbe('0xd')]('[%s][recordings][newchannel]',_0x3f5f13['uniqueid']),_0x547c21);}};exports[_0xfcbe('0x16')]=function(_0x375d44){try{utils[_0xfcbe('0xc')](util[_0xfcbe('0xd')]('[%s][recordings][newstate]',_0x375d44[_0xfcbe('0x4')]),_0x375d44);if(!_[_0xfcbe('0x17')](recordings[_0x375d44[_0xfcbe('0x4')]])&&_0x375d44[_0xfcbe('0x18')]==0x6){utils[_0xfcbe('0x10')](util[_0xfcbe('0xd')](_0xfcbe('0x19'),_0x375d44[_0xfcbe('0x4')],_0x375d44['context'],_0x375d44[_0xfcbe('0x14')]));}else if(!_['isNil'](recordings[_0x375d44[_0xfcbe('0xf')]])&&_0x375d44[_0xfcbe('0x18')]==0x6&&_0x375d44[_0xfcbe('0x12')]!='transfer'){utils['info'](util['format'](_0xfcbe('0x1a'),_0x375d44['uniqueid'],_0x375d44[_0xfcbe('0xf')],_0x375d44[_0xfcbe('0x12')],_0x375d44[_0xfcbe('0x14')]));recordings[_0x375d44['linkedid']][_0xfcbe('0x5')]=_0x375d44[_0xfcbe('0x5')];}}catch(_0xd6ea21){utils[_0xfcbe('0x15')](util[_0xfcbe('0xd')]('[%s][recordings][newstate]',_0x375d44[_0xfcbe('0x4')]),_0xd6ea21);}};exports['varset']=function(_0xdafcda){try{if(!_[_0xfcbe('0x17')](_0xdafcda[_0xfcbe('0x1b')])&&!_[_0xfcbe('0x17')](_0xdafcda['variable']['mixmonitor_filename'])){utils[_0xfcbe('0xc')](util[_0xfcbe('0xd')]('[%s][recordings][varset]',_0xdafcda['uniqueid']),_0xdafcda);utils[_0xfcbe('0x10')](util[_0xfcbe('0xd')](_0xfcbe('0x1c'),_0xdafcda[_0xfcbe('0x4')],_0xdafcda[_0xfcbe('0x1b')],_0xdafcda[_0xfcbe('0x1d')]));if(_['endsWith'](_0xdafcda[_0xfcbe('0x1d')],_0xfcbe('0x1e'))){_0xdafcda[_0xfcbe('0x1d')]=_0xdafcda['value'][_0xfcbe('0x1f')](_0xfcbe('0x1e'),_0xfcbe('0x20'));}if(recordings[_0xdafcda['linkedid']]){var _0x46c7e2=_[_0xfcbe('0x21')](recordings[_0xdafcda[_0xfcbe('0xf')]]['monitors'],{'value':_0xdafcda['value']});if(_[_0xfcbe('0x17')](_0x46c7e2)){recordings[_0xdafcda[_0xfcbe('0xf')]]['monitors'][_0xfcbe('0x22')]({'value':_0xdafcda[_0xfcbe('0x1d')]});}}}}catch(_0x5918ac){utils[_0xfcbe('0x15')](util[_0xfcbe('0xd')](_0xfcbe('0x23'),_0xdafcda['uniqueid']),_0x5918ac);}};exports[_0xfcbe('0x24')]=function(_0x2525a8){try{if(!_[_0xfcbe('0x17')](recordings[_0x2525a8[_0xfcbe('0x4')]])){utils[_0xfcbe('0xc')](util[_0xfcbe('0xd')](_0xfcbe('0x25'),_0x2525a8[_0xfcbe('0x4')]),_0x2525a8);utils[_0xfcbe('0x10')](util[_0xfcbe('0xd')](_0xfcbe('0x26'),_0x2525a8['uniqueid'],_0x2525a8['calleridnum'],_0x2525a8[_0xfcbe('0x27')],_0x2525a8[_0xfcbe('0x28')]));recordings[_0x2525a8[_0xfcbe('0x4')]][_0xfcbe('0x29')]=_0x2525a8[_0xfcbe('0x29')];recordings[_0x2525a8[_0xfcbe('0x4')]][_0xfcbe('0x27')]=_0x2525a8[_0xfcbe('0x27')];recordings[_0x2525a8[_0xfcbe('0x4')]][_0xfcbe('0x2a')]=_0x2525a8[_0xfcbe('0x2a')];recordings[_0x2525a8[_0xfcbe('0x4')]][_0xfcbe('0x2b')]=_0x2525a8[_0xfcbe('0x2b')];if(recordings[_0x2525a8['uniqueid']][_0xfcbe('0x2c')]==_0xfcbe('0x2d')&&recordings[_0x2525a8[_0xfcbe('0x4')]]['accountcode']){recordings[_0x2525a8[_0xfcbe('0x4')]][_0xfcbe('0x2a')]=recordings[_0x2525a8[_0xfcbe('0x4')]]['accountcode'];recordings[_0x2525a8[_0xfcbe('0x4')]]['connectedlinename']='';}recordings[_0x2525a8['uniqueid']]['monitors'][_0xfcbe('0x2e')](function(_0x143e3c){var _0xb30db7=_['clone'](recordings[_0x2525a8[_0xfcbe('0x4')]]);_0xb30db7[_0xfcbe('0x1d')]=_0x143e3c[_0xfcbe('0x1d')];writeDB(_0xb30db7);});delete recordings[_0x2525a8[_0xfcbe('0x4')]];}}catch(_0x10d3bc){utils[_0xfcbe('0x15')](util['format']('[%s][recordings][hangup]',_0x2525a8['uniqueid']),_0x10d3bc);}};exports[_0xfcbe('0x2f')]=function(_0x3a1bde){try{if(!_['isNil'](recordings[_0x3a1bde[_0xfcbe('0x4')]])){utils[_0xfcbe('0xc')](util[_0xfcbe('0xd')](_0xfcbe('0x30'),_0x3a1bde[_0xfcbe('0x4')]),_0x3a1bde);utils['info'](util[_0xfcbe('0xd')](_0xfcbe('0x31'),_0x3a1bde['uniqueid'],_0x3a1bde['application'],_0x3a1bde[_0xfcbe('0x32')]));if(_0x3a1bde[_0xfcbe('0x33')][_0xfcbe('0x34')]()==_0xfcbe('0x35')&&_[_0xfcbe('0x36')](_0x3a1bde[_0xfcbe('0x32')][_0xfcbe('0x34')](),_0xfcbe('0x37'))){var _0x3e1442=_0x3a1bde[_0xfcbe('0x32')][_0xfcbe('0x38')]('=');var _0x641493=_0x3e1442[0x0][_0xfcbe('0x39')](_0x3e1442[0x0][_0xfcbe('0x3a')]('(')+0x1,_0x3e1442[0x0]['lastIndexOf'](')'));var _0x476df2=_0x3e1442[0x1];recordings[_0x3a1bde[_0xfcbe('0x4')]][_0x641493]=_0x476df2;}}}catch(_0x26f6f9){utils['error'](util[_0xfcbe('0xd')](_0xfcbe('0x30'),_0x3a1bde[_0xfcbe('0x4')]),_0x26f6f9);}};exports[_0xfcbe('0x3b')]=function(_0x7b6568){try{if(!_[_0xfcbe('0x17')](recordings[_0x7b6568[_0xfcbe('0x4')]])){utils[_0xfcbe('0xc')](util[_0xfcbe('0xd')](_0xfcbe('0x3c'),_0x7b6568[_0xfcbe('0x4')]),_0x7b6568);utils[_0xfcbe('0x10')](util[_0xfcbe('0xd')](_0xfcbe('0x3d'),_0x7b6568[_0xfcbe('0x4')],_0x7b6568[_0xfcbe('0x3e')]));recordings[_0x7b6568['uniqueid']]['queue']=_0x7b6568[_0xfcbe('0x3e')];}}catch(_0x25e44e){utils['error'](util[_0xfcbe('0xd')](_0xfcbe('0x3c'),_0x7b6568[_0xfcbe('0x4')]),_0x25e44e);}};
\ No newline at end of file
index ca37803..b66ba39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0d2=['debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransfereruniqueid','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransfererexten','assign','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','lodash','util','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','uniqueid','request','blinds','blindtransfer'];(function(_0x5afa03,_0x4e210f){var _0x49378e=function(_0x37bce6){while(--_0x37bce6){_0x5afa03['push'](_0x5afa03['shift']());}};_0x49378e(++_0x4e210f);}(_0xe0d2,0x1bc));var _0x2e0d=function(_0x489edc,_0x2bdb7a){_0x489edc=_0x489edc-0x0;var _0x4d2211=_0xe0d2[_0x489edc];return _0x4d2211;};'use strict';var _=require(_0x2e0d('0x0'));var util=require(_0x2e0d('0x1'));var utils=require('./utils');function writeDB(_0x5e14c5){utils[_0x2e0d('0x2')](util[_0x2e0d('0x3')](_0x2e0d('0x4'),_0x5e14c5[_0x2e0d('0x5')]===_0x2e0d('0x6')?_0x5e14c5['origtransfereruniqueid']:_0x5e14c5[_0x2e0d('0x7')],_0x5e14c5[_0x2e0d('0x5')]));utils[_0x2e0d('0x8')]('CreateVoiceTransferReport',_0x5e14c5);}exports[_0x2e0d('0x9')]={};exports[_0x2e0d('0xa')]=function(_0x3cdc06){try{utils[_0x2e0d('0xb')](util[_0x2e0d('0x3')](_0x2e0d('0xc'),_0x3cdc06[_0x2e0d('0x7')]),_0x3cdc06);utils[_0x2e0d('0x2')](util['format'](_0x2e0d('0xd'),_0x3cdc06[_0x2e0d('0x7')],_0x3cdc06[_0x2e0d('0xe')],_0x3cdc06['transferercalleridname'],_0x3cdc06['transfereecalleridnum'],_0x3cdc06['transfereecalleridname']));_0x3cdc06[_0x2e0d('0x5')]='blind';exports[_0x2e0d('0x9')][_0x3cdc06[_0x2e0d('0xf')]]=_0x3cdc06;writeDB(_0x3cdc06);}catch(_0x5cd004){utils[_0x2e0d('0x10')](util[_0x2e0d('0x3')](_0x2e0d('0xc'),_0x3cdc06['uniqueid']),_0x5cd004);}};exports[_0x2e0d('0x11')]=function(_0x142b03){try{utils['debug'](util[_0x2e0d('0x3')](_0x2e0d('0x12'),_0x142b03[_0x2e0d('0x13')]),_0x142b03);utils['info'](util[_0x2e0d('0x3')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x142b03['origtransfereruniqueid'],_0x142b03[_0x2e0d('0x14')],_0x142b03[_0x2e0d('0x15')],_0x142b03[_0x2e0d('0x16')],_0x142b03[_0x2e0d('0x17')]));_0x142b03=_['assign'](_0x142b03,{'transfererchannel':_0x142b03[_0x2e0d('0x18')],'transferercalleridnum':_0x142b03['origtransferercalleridnum'],'transferercalleridname':_0x142b03[_0x2e0d('0x15')],'transfererconnectedlinenum':_0x142b03['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x142b03[_0x2e0d('0x19')],'transfereraccountcode':_0x142b03['origtransfereraccountcode'],'transferercontext':_0x142b03[_0x2e0d('0x1a')],'transfererexten':_0x142b03[_0x2e0d('0x1b')],'transfererlinkedid':_0x142b03[_0x2e0d('0x1c')],'context':_0x142b03['origtransferercontext'],'extension':_0x142b03[_0x2e0d('0x1d')],'type':_0x2e0d('0x6')});if(_['isNil'](_0x142b03['transfereechannel'])){_0x142b03=_[_0x2e0d('0x1e')](_0x142b03,{'transfereechannel':_0x142b03[_0x2e0d('0x1f')],'transfereecalleridnum':_0x142b03[_0x2e0d('0x16')],'transfereecalleridname':_0x142b03[_0x2e0d('0x17')],'transfereeconnectedlinenum':_0x142b03[_0x2e0d('0x20')],'transfereeconnectedlinename':_0x142b03[_0x2e0d('0x21')],'transfereeaccountcode':_0x142b03[_0x2e0d('0x22')],'transfereecontext':_0x142b03['transfertargetcontext'],'transfereeexten':_0x142b03['transfertargetexten'],'transfereelinkedid':_0x142b03['transfertargetlinkedid']});}writeDB(_0x142b03);}catch(_0x2121f0){utils['error'](util[_0x2e0d('0x3')](_0x2e0d('0x12'),_0x142b03[_0x2e0d('0x13')]),_0x2121f0);}};
\ No newline at end of file
+var _0x56fb=['format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','uniqueid','info','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridname','blind','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','transfertargetcalleridnum','assign','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetcontext','transfertargetlinkedid','lodash','util','./utils'];(function(_0x5b8310,_0x77ea6f){var _0xd3ebc1=function(_0x9dfb29){while(--_0x9dfb29){_0x5b8310['push'](_0x5b8310['shift']());}};_0xd3ebc1(++_0x77ea6f);}(_0x56fb,0x155));var _0xb56f=function(_0x35e75a,_0x5ed225){_0x35e75a=_0x35e75a-0x0;var _0xb23c7f=_0x56fb[_0x35e75a];return _0xb23c7f;};'use strict';var _=require(_0xb56f('0x0'));var util=require(_0xb56f('0x1'));var utils=require(_0xb56f('0x2'));function writeDB(_0x46270f){utils['info'](util[_0xb56f('0x3')](_0xb56f('0x4'),_0x46270f[_0xb56f('0x5')]===_0xb56f('0x6')?_0x46270f[_0xb56f('0x7')]:_0x46270f['uniqueid'],_0x46270f[_0xb56f('0x5')]));utils[_0xb56f('0x8')](_0xb56f('0x9'),_0x46270f);}exports[_0xb56f('0xa')]={};exports[_0xb56f('0xb')]=function(_0x2a8e26){try{utils[_0xb56f('0xc')](util[_0xb56f('0x3')](_0xb56f('0xd'),_0x2a8e26[_0xb56f('0xe')]),_0x2a8e26);utils[_0xb56f('0xf')](util[_0xb56f('0x3')](_0xb56f('0x10'),_0x2a8e26['uniqueid'],_0x2a8e26[_0xb56f('0x11')],_0x2a8e26[_0xb56f('0x12')],_0x2a8e26['transfereecalleridnum'],_0x2a8e26[_0xb56f('0x13')]));_0x2a8e26['type']=_0xb56f('0x14');exports[_0xb56f('0xa')][_0x2a8e26[_0xb56f('0x15')]]=_0x2a8e26;writeDB(_0x2a8e26);}catch(_0x1ddbf8){utils[_0xb56f('0x16')](util[_0xb56f('0x3')](_0xb56f('0xd'),_0x2a8e26[_0xb56f('0xe')]),_0x1ddbf8);}};exports[_0xb56f('0x17')]=function(_0x1bcfe4){try{utils[_0xb56f('0xc')](util[_0xb56f('0x3')](_0xb56f('0x18'),_0x1bcfe4['origtransfereruniqueid']),_0x1bcfe4);utils[_0xb56f('0xf')](util[_0xb56f('0x3')](_0xb56f('0x19'),_0x1bcfe4[_0xb56f('0x7')],_0x1bcfe4[_0xb56f('0x1a')],_0x1bcfe4['origtransferercalleridname'],_0x1bcfe4[_0xb56f('0x1b')],_0x1bcfe4['transfertargetcalleridname']));_0x1bcfe4=_[_0xb56f('0x1c')](_0x1bcfe4,{'transfererchannel':_0x1bcfe4[_0xb56f('0x1d')],'transferercalleridnum':_0x1bcfe4['origtransferercalleridnum'],'transferercalleridname':_0x1bcfe4[_0xb56f('0x1e')],'transfererconnectedlinenum':_0x1bcfe4[_0xb56f('0x1f')],'transfererconnectedlinename':_0x1bcfe4[_0xb56f('0x20')],'transfereraccountcode':_0x1bcfe4[_0xb56f('0x21')],'transferercontext':_0x1bcfe4['secondtransferercontext'],'transfererexten':_0x1bcfe4['secondtransfererexten'],'transfererlinkedid':_0x1bcfe4[_0xb56f('0x22')],'context':_0x1bcfe4[_0xb56f('0x23')],'extension':_0x1bcfe4[_0xb56f('0x24')],'type':_0xb56f('0x6')});if(_[_0xb56f('0x25')](_0x1bcfe4[_0xb56f('0x26')])){_0x1bcfe4=_[_0xb56f('0x1c')](_0x1bcfe4,{'transfereechannel':_0x1bcfe4['transfertargetchannel'],'transfereecalleridnum':_0x1bcfe4['transfertargetcalleridnum'],'transfereecalleridname':_0x1bcfe4[_0xb56f('0x27')],'transfereeconnectedlinenum':_0x1bcfe4[_0xb56f('0x28')],'transfereeconnectedlinename':_0x1bcfe4['transfertargetconnectedlinename'],'transfereeaccountcode':_0x1bcfe4['transfertargetaccountcode'],'transfereecontext':_0x1bcfe4[_0xb56f('0x29')],'transfereeexten':_0x1bcfe4['transfertargetexten'],'transfereelinkedid':_0x1bcfe4[_0xb56f('0x2a')]});}writeDB(_0x1bcfe4);}catch(_0x23016c){utils[_0xb56f('0x16')](util[_0xb56f('0x3')](_0xb56f('0x18'),_0x1bcfe4[_0xb56f('0x7')]),_0x23016c);}};
\ No newline at end of file
index 8baeadf..0fe4c7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0c8=['acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s\x20%s','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','util','http','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInterface]\x20interface:%s\x20%s','getUserByName','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xd0c8,0x1f2));var _0x8d0c=function(_0x2b0416,_0x2a0513){_0x2b0416=_0x2b0416-0x0;var _0xce4b3b=_0xd0c8[_0x2b0416];return _0xce4b3b;};'use strict';var BPromise=require(_0x8d0c('0x0'));var jayson=require(_0x8d0c('0x1'));var moment=require('moment');var util=require(_0x8d0c('0x2'));var client=jayson['client'][_0x8d0c('0x3')]({'port':0x2329});var logger=require('../../config/logger')(_0x8d0c('0x4'));exports[_0x8d0c('0x5')]=function(_0x311239,_0x51992a){logger['info'](_0x311239,_0x51992a?util[_0x8d0c('0x6')](_0x51992a,{'showHidden':![],'depth':null}):'');};exports[_0x8d0c('0x7')]=function(_0x3f64cf,_0x20812f){logger[_0x8d0c('0x7')](_0x3f64cf,_0x20812f?util[_0x8d0c('0x6')](_0x20812f,{'showHidden':![],'depth':null}):'');};exports[_0x8d0c('0x8')]=function(_0x2c3df6,_0x387511){logger[_0x8d0c('0x8')](_0x2c3df6,_0x387511?util[_0x8d0c('0x6')](_0x387511,{'showHidden':![],'depth':null}):'');};exports[_0x8d0c('0x9')]=function(_0x56c107,_0xd16543){return client[_0x8d0c('0x9')](_0x56c107,{'body':_0xd16543})[_0x8d0c('0xa')](function(_0x3007fa){logger[_0x8d0c('0x7')](_0x8d0c('0xb'),_0x56c107,_0x3007fa?util['inspect'](_0x3007fa,{'showHidden':![],'depth':null}):'');})[_0x8d0c('0xc')](function(_0x2ec941){logger[_0x8d0c('0x8')](_0x8d0c('0xb'),_0x56c107,_0x2ec941?util['inspect'](_0x2ec941,{'showHidden':![],'depth':null}):'');});};function getUser(_0x5939b3){return client[_0x8d0c('0x9')](_0x8d0c('0xd'),{'options':{'raw':!![],'attributes':['id',_0x8d0c('0xe'),_0x8d0c('0xf'),_0x8d0c('0x10')],'where':_0x5939b3,'limit':0x1}})['then'](function(_0x5530b9){logger['debug'](_0x8d0c('0x11'),JSON['stringify'](_0x5939b3),_0x5530b9?util[_0x8d0c('0x6')](_0x5530b9,{'showHidden':![],'depth':null}):'');return _0x5530b9[_0x8d0c('0x12')][_0x8d0c('0x13')]?_0x5530b9[_0x8d0c('0x12')][0x0]:null;});}exports[_0x8d0c('0x14')]=function(_0x3583d9){return new BPromise(function(_0x247fe2,_0x158e21){if(_0x3583d9){return getUser({'internal':_0x3583d9})[_0x8d0c('0xa')](function(_0x246e44){logger[_0x8d0c('0x5')](_0x8d0c('0x15'),_0x3583d9,_0x246e44?_0x8d0c('0x16'):_0x8d0c('0x17'));return _0x247fe2(_0x246e44);})[_0x8d0c('0xc')](function(_0x336b00){logger['error']('[utils][getUserByInternal]',_0x336b00?util[_0x8d0c('0x6')](_0x336b00,{'showHidden':![],'depth':null}):'');return _0x247fe2(null);});}return _0x247fe2(null);});};exports['getUserByInterface']=function(_0x575ad8){return new BPromise(function(_0x2f6fbf,_0x5eddf4){if(_0x575ad8){return getUser({'interface':_0x575ad8})[_0x8d0c('0xa')](function(_0x387a9b){logger['info'](_0x8d0c('0x18'),_0x575ad8,_0x387a9b?_0x8d0c('0x16'):_0x8d0c('0x17'));return _0x2f6fbf(_0x387a9b);})[_0x8d0c('0xc')](function(_0x2a0baf){logger[_0x8d0c('0x8')]('[utils][getUserByInterface]',_0x2a0baf?util[_0x8d0c('0x6')](_0x2a0baf,{'showHidden':![],'depth':null}):'');return _0x2f6fbf(null);});}return _0x2f6fbf(null);});};exports[_0x8d0c('0x19')]=function(_0x45f09d){return new BPromise(function(_0x55e15f,_0x52ba0a){if(_0x45f09d){return getUser({'name':_0x45f09d})[_0x8d0c('0xa')](function(_0x292e44){logger[_0x8d0c('0x5')]('[utils][getUserByName]\x20name:%s\x20%s',_0x45f09d,_0x292e44?_0x8d0c('0x16'):'notfound');return _0x55e15f(_0x292e44);})['catch'](function(_0x3f15c9){logger[_0x8d0c('0x8')](_0x8d0c('0x1a'),_0x3f15c9?util[_0x8d0c('0x6')](_0x3f15c9,{'showHidden':![],'depth':null}):'');return _0x55e15f(null);});}return _0x55e15f(null);});};exports[_0x8d0c('0x1b')]=function(_0x9163ef){return new BPromise(function(_0x2b00cf,_0x37f017){if(_0x9163ef){return client[_0x8d0c('0x9')](_0x8d0c('0x1c'),{'options':{'raw':!![],'attributes':['id',_0x8d0c('0xf'),_0x8d0c('0x1d'),_0x8d0c('0x1e'),_0x8d0c('0x1f')],'where':{'name':_0x9163ef},'limit':0x1}})[_0x8d0c('0xa')](function(_0xe6f83e){logger[_0x8d0c('0x7')]('[utils][getVoiceQueueByName]\x20name:%s',_0x9163ef,_0xe6f83e?util[_0x8d0c('0x6')](_0xe6f83e,{'showHidden':![],'depth':null}):'');logger[_0x8d0c('0x5')](_0x8d0c('0x20'),_0x9163ef,_0xe6f83e?'found':_0x8d0c('0x17'));return _0x2b00cf(_0xe6f83e[_0x8d0c('0x12')][_0x8d0c('0x13')]?_0xe6f83e['result'][0x0]:null);})[_0x8d0c('0xc')](function(_0x501fcc){logger[_0x8d0c('0x8')]('[utils][getVoiceQueueByName]',_0x501fcc?util[_0x8d0c('0x6')](_0x501fcc,{'showHidden':![],'depth':null}):'');return _0x2b00cf(null);});}return _0x2b00cf(null);});};exports['addTime']=function(_0x298e93,_0x43a376){return moment(_0x298e93)['add'](_0x43a376,_0x8d0c('0x21'))[_0x8d0c('0x22')](_0x8d0c('0x23'));};exports[_0x8d0c('0x24')]=function(_0x33601a,_0x1759b0){return moment(_0x33601a)[_0x8d0c('0x25')](_0x1759b0,'seconds')[_0x8d0c('0x22')](_0x8d0c('0x23'));};exports[_0x8d0c('0x26')]=function(_0x2c0b79,_0x571cf8){return moment(_0x2c0b79)[_0x8d0c('0x27')](moment(_0x571cf8),_0x8d0c('0x21'));};exports[_0x8d0c('0x28')]=function(_0x2b5b6c,_0x24bc46){return parseInt(_0x2b5b6c,0xa)+parseInt(_0x24bc46,0xa);};exports[_0x8d0c('0x29')]=function(){return moment()[_0x8d0c('0x22')](_0x8d0c('0x23'));};exports[_0x8d0c('0x2a')]=function(_0x58bd37,_0x49bbf4){if(_0x49bbf4){return moment(_0x58bd37)[_0x8d0c('0x2a')](_0x49bbf4);}return!![];};exports[_0x8d0c('0x2b')]=function(_0x2d57c5,_0x26141c){if(_0x26141c){return moment(_0x2d57c5)[_0x8d0c('0x2b')](_0x26141c);}else if(_0x2d57c5){return!![];}return![];};
\ No newline at end of file
+var _0x2087=['now','isAfter','isBefore','bluebird','jayson/promise','moment','util','http','../../config/logger','xdr','info','debug','inspect','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','length','result','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','diffTime'];(function(_0x5d557e,_0x17b973){var _0x455495=function(_0x52962e){while(--_0x52962e){_0x5d557e['push'](_0x5d557e['shift']());}};_0x455495(++_0x17b973);}(_0x2087,0xf3));var _0x7208=function(_0x2bac06,_0xe7cc4c){_0x2bac06=_0x2bac06-0x0;var _0xde9d11=_0x2087[_0x2bac06];return _0xde9d11;};'use strict';var BPromise=require(_0x7208('0x0'));var jayson=require(_0x7208('0x1'));var moment=require(_0x7208('0x2'));var util=require(_0x7208('0x3'));var client=jayson['client'][_0x7208('0x4')]({'port':0x2329});var logger=require(_0x7208('0x5'))(_0x7208('0x6'));exports[_0x7208('0x7')]=function(_0x4d7cd4,_0x57509e){logger[_0x7208('0x7')](_0x4d7cd4,_0x57509e?util['inspect'](_0x57509e,{'showHidden':![],'depth':null}):'');};exports[_0x7208('0x8')]=function(_0x502ccb,_0x238b30){logger[_0x7208('0x8')](_0x502ccb,_0x238b30?util[_0x7208('0x9')](_0x238b30,{'showHidden':![],'depth':null}):'');};exports[_0x7208('0xa')]=function(_0xe29ffb,_0x25b01b){logger[_0x7208('0xa')](_0xe29ffb,_0x25b01b?util['inspect'](_0x25b01b,{'showHidden':![],'depth':null}):'');};exports[_0x7208('0xb')]=function(_0x17e320,_0x92a88e){return client[_0x7208('0xb')](_0x17e320,{'body':_0x92a88e})[_0x7208('0xc')](function(_0x76b2bb){logger['debug'](_0x7208('0xd'),_0x17e320,_0x76b2bb?util[_0x7208('0x9')](_0x76b2bb,{'showHidden':![],'depth':null}):'');})[_0x7208('0xe')](function(_0x86a763){logger[_0x7208('0xa')](_0x7208('0xd'),_0x17e320,_0x86a763?util['inspect'](_0x86a763,{'showHidden':![],'depth':null}):'');});};function getUser(_0xde3407){return client[_0x7208('0xb')](_0x7208('0xf'),{'options':{'raw':!![],'attributes':['id',_0x7208('0x10'),_0x7208('0x11'),_0x7208('0x12')],'where':_0xde3407,'limit':0x1}})[_0x7208('0xc')](function(_0x3254d1){logger[_0x7208('0x8')](_0x7208('0x13'),JSON[_0x7208('0x14')](_0xde3407),_0x3254d1?util['inspect'](_0x3254d1,{'showHidden':![],'depth':null}):'');return _0x3254d1['result'][_0x7208('0x15')]?_0x3254d1[_0x7208('0x16')][0x0]:null;});}exports['getUserByInternal']=function(_0x388e30){return new BPromise(function(_0x2d0b05,_0x5a2d47){if(_0x388e30){return getUser({'internal':_0x388e30})[_0x7208('0xc')](function(_0x43a60d){logger[_0x7208('0x7')](_0x7208('0x17'),_0x388e30,_0x43a60d?_0x7208('0x18'):_0x7208('0x19'));return _0x2d0b05(_0x43a60d);})[_0x7208('0xe')](function(_0x10f670){logger[_0x7208('0xa')](_0x7208('0x1a'),_0x10f670?util[_0x7208('0x9')](_0x10f670,{'showHidden':![],'depth':null}):'');return _0x2d0b05(null);});}return _0x2d0b05(null);});};exports[_0x7208('0x1b')]=function(_0x2c220f){return new BPromise(function(_0x93259,_0x2a7613){if(_0x2c220f){return getUser({'interface':_0x2c220f})['then'](function(_0x52bce8){logger[_0x7208('0x7')](_0x7208('0x1c'),_0x2c220f,_0x52bce8?_0x7208('0x18'):'notfound');return _0x93259(_0x52bce8);})[_0x7208('0xe')](function(_0x216167){logger[_0x7208('0xa')](_0x7208('0x1d'),_0x216167?util[_0x7208('0x9')](_0x216167,{'showHidden':![],'depth':null}):'');return _0x93259(null);});}return _0x93259(null);});};exports[_0x7208('0x1e')]=function(_0x35f60f){return new BPromise(function(_0x126dae,_0x26c2d7){if(_0x35f60f){return getUser({'name':_0x35f60f})[_0x7208('0xc')](function(_0x22b66f){logger[_0x7208('0x7')](_0x7208('0x1f'),_0x35f60f,_0x22b66f?_0x7208('0x18'):_0x7208('0x19'));return _0x126dae(_0x22b66f);})[_0x7208('0xe')](function(_0x304f5c){logger[_0x7208('0xa')](_0x7208('0x20'),_0x304f5c?util['inspect'](_0x304f5c,{'showHidden':![],'depth':null}):'');return _0x126dae(null);});}return _0x126dae(null);});};exports[_0x7208('0x21')]=function(_0x5c5394){return new BPromise(function(_0x495844,_0xdc6577){if(_0x5c5394){return client[_0x7208('0xb')]('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id',_0x7208('0x11'),_0x7208('0x22'),_0x7208('0x23'),_0x7208('0x24')],'where':{'name':_0x5c5394},'limit':0x1}})[_0x7208('0xc')](function(_0x24197a){logger[_0x7208('0x8')]('[utils][getVoiceQueueByName]\x20name:%s',_0x5c5394,_0x24197a?util[_0x7208('0x9')](_0x24197a,{'showHidden':![],'depth':null}):'');logger[_0x7208('0x7')](_0x7208('0x25'),_0x5c5394,_0x24197a?'found':'notfound');return _0x495844(_0x24197a[_0x7208('0x16')][_0x7208('0x15')]?_0x24197a[_0x7208('0x16')][0x0]:null);})[_0x7208('0xe')](function(_0x2961cf){logger[_0x7208('0xa')](_0x7208('0x26'),_0x2961cf?util['inspect'](_0x2961cf,{'showHidden':![],'depth':null}):'');return _0x495844(null);});}return _0x495844(null);});};exports['addTime']=function(_0x4e1bb0,_0x154e07){return moment(_0x4e1bb0)[_0x7208('0x27')](_0x154e07,_0x7208('0x28'))[_0x7208('0x29')](_0x7208('0x2a'));};exports[_0x7208('0x2b')]=function(_0x5df2a7,_0x21c415){return moment(_0x5df2a7)['subtract'](_0x21c415,'seconds')[_0x7208('0x29')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x7208('0x2c')]=function(_0x20813f,_0x33e4a9){return moment(_0x20813f)['diff'](moment(_0x33e4a9),_0x7208('0x28'));};exports['sumTime']=function(_0x19c9f4,_0x5c56d4){return parseInt(_0x19c9f4,0xa)+parseInt(_0x5c56d4,0xa);};exports[_0x7208('0x2d')]=function(){return moment()['format'](_0x7208('0x2a'));};exports[_0x7208('0x2e')]=function(_0x4045fe,_0x827e8){if(_0x827e8){return moment(_0x4045fe)[_0x7208('0x2e')](_0x827e8);}return!![];};exports[_0x7208('0x2f')]=function(_0x3fddc5,_0x5dc891){if(_0x5dc891){return moment(_0x3fddc5)[_0x7208('0x2f')](_0x5dc891);}else if(_0x3fddc5){return!![];}return![];};
\ No newline at end of file